Скачиваний:
53
Добавлен:
03.06.2014
Размер:
328.27 Кб
Скачать

Обработка длинных векторов и матриц.

 

Аппаратура векторных процессоров типа “регистр-регистр» ориентирована на обработку векторов, длина которых совпадает с длиной векторных регистров (ВР), поэтому обработка коротких векторов не вызывает проблем.

Если размер векторов превышает емкость ВР, используется техника разбиения исходного вектора на сегменты одинаковой длины, совпадающей с емкостью векторных регистров (последний сегмент может быть короче), и последовательной обработки полученных сегментов. В английском языке этот прием называется strip-mining. Процесс разбиения обычно происходит на стадии компиляции, но в ряде ВП данная процедура производится по ходу вычислений с помощью аппаратных средств на основе информации, хранящейся в регистре максимальной  длины  вектора.

 

Ускорение вычислений.

 

Для повышения скорости обработки векторов все функциональные блоки векторных процессоров строятся по конвейерной схеме, причем так, чтобы каждая ступень любого из конвейеров справлялась со своей операцией за один такт (число ступеней в разных функциональных блоках может быть различным). С этой целью в некоторых векторных ВС (например, Cray C90) конвейеры во  всех  функциональных  блоках  продублированы  (рис. 7).

 

 

 

 

 

 

Рис. 7. Выполнение  векторных  операций  при  двух  конвейерах.

 

На конвейер 0 всегда подаются элементы векторов с четными номерами,     а на конвейер 1 – с нечетными. В начальный момент на первую ступень конвейера 0 из ВР V1 и V2 поступают нулевые элементы векторов. Одновременно первые элементы векторов из этих регистров подаются на первую ступень конвейера 1. На следующем такте на конвейер 0 подаются вторые элементы из V1 и V2, а на конвейер 1 – третьи элементы и т.д. Аналогично происходит распределение результатов в выходном векторном регистре V3.

В итоге функциональный блок при максимальной загрузке в каждом такте выдает два результата, а не один.

В скалярных  операциях  работает  только  конвейер  0.

Интересной особенностью некоторых ВП типа «регистр-регистр» (например, ВС фирмы Cray Research Inc.) является сцепление векторов (vector chaining или vector linking), когда ВР результата одной векторной операции используется в качестве входного регистра для последующей векторной операции. Для примера рассмотрим последовательность из двух векторных команд,предполагая,  что  длина  векторов  равна  64:  V2 = V0×V1,  V4 = V2 + V3.

Результат первой команды служит операндом для второй. Первая векторная команда должна послать в конвейерный умножитель до 64 пар чисел. Примерно в середине выполнения команды складывается ситуация, когда несколько начальных элементов вектора V будут уже содержать недавно вычисленные произведения; часть элементов Vвсе еще будет находиться в конвейере, а оставшиеся элементы операндов V0 и Vеще остаются во входных векторных регистрах, ожидая загрузки в конвейер. Такая ситуация показана на рис. 8, где элементы векторов V0 и V1, находящиеся в конвейерном умножителе, имеют  темную  закраску. 

  Рис. 8. Сцепление  векторов.

 

 В  этот  момент  система  извлекает  элементы V0[k] и V1[k] с тем, чтобы направить их на первую ступень конвейера, в то     время как V2[j] покидает конвейер. Сцепление векторов иллюстрирует линия, обозначенная звездочкой. Одновременно с занесением V2[j] в ВР этот элемент направляется и в конвейерный сумматор, куда также подается и элемент V3[j].  Как видно из рисунка, выполнение второй команды может начаться до завершения первой, и поскольку одновременно выполняются две команды, процессор формирует два результата за цикл (V4[i] и V2[j]) вместо одного. Без сцепления векторов пиковая производительность Cray-1 была бы 80 MFLOPS (один полный конвейер производит результат каждые 12,5 нс). При сцеплении трех конвейеров теоретический пик производительности – 240 MFLOPS. В принципе сцепление векторов можно реализовать и в векторных процессорах типа «память-память», но для этого необходимо повысить пропускную способность памяти. Без сцепления необходимы три «канала»: два для входных потоков операндов и один – для потока результата. При использовании сцепления требуется  обеспечить пять  каналов: три  входных  и  два  выходных.

С середины 90-х годов прошлого века векторно-конвейерные ВС стали уступать свои позиции другим более технологичным видам систем. Тем не менее одна из последних разработок корпорации NEC (2002 год)  вычислительная система «Модель Земли» (The Earth Simulator),  являющаяся на сегодняшний момент самой производительной вычислительной системой в классе, по   сути представляет собой векторно-конвейерную ВС. Система включает в себя   640 вычислительных узлов по восемь векторных процессоров в каждом. Пиковая производительность  суперкомпьютера  превышает  40 TFLOPS.