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

Понятие векторного процессора.

Векторный процессор – это процессор, в котором операндами некоторых команд могут выступать упорядоченные массивы данных – векторы. Векторный процес­сор может быть реализован в двух вариантах:

  1. дополнительный блок к универсальной ВС.

  2. основа самостоятельной ВС.

Возможные подходы к архитектуре средств векторной обработки. Наиболее распространенные из них сводятся к трем группам:

  • конвейерное АЛУ;

  • массив АЛУ;

  • массив процессорных элементов.

Последний вариант – один из случаев многопроцессорной системы, известной как матричная ВС. Понятие векторного процессора имеет отношение к двум первым группам, причем, как правило, к первой (рис. 3).

Рис. 3 Векторные процессоры первого и второго типов.

В варианте с конвейерным АЛУ (рис. 3, слева) обработка элементов векторов производится конвейерным АЛУ для чисел с плавающей запятой (ПЗ). Операции с числами в форме с ПЗ достаточно сложны, но поддаются разбиению на отдельные шаги. Так, сложение двух чисел может быть сведено к четырем этапам (рис. 4):

  1. сравнению порядков,

  2. сдвигу мантиссы меньшего из чисел,

  3. сложению мантисс

  4. нормализации результата.

Каждый этап может быть реализован с помощью отдельной ступени конвейерного АЛУ. Очередной элемент вектора подается на вход конвейера, как только освобождается первая ступень. Ясно, что такой вариант вполне годится для обработки векторов.

Одновременные операции над элементами векторов можно проводить и с по­мощью нескольких параллельно используемых АЛУ, каждое из которых отвечает за одну пару элементов.

Рис. 4 Структура арифметического конвейера для чисел с плавающей запятой.

Если параллельно используются конвейерные АЛУ, то возможен еще один уро­вень конвейеризации. Вычислительные системы, где реализована эта идея, называют векторно-конвейерными. Коммерческие векторно-конвейерные ВС, в состав которых для обеспечения универсальности включен также скалярный процессор, известны как суперЭВМ.

Структура векторного процессора

 

Обобщенная структура векторного процессора приведена на рис. 5 На схеме показаны основные узлы процессора, без детализации некоторых связей между  ними.

 

 

 

Рис. 5. Упрощенная  структура  векторного  процессора.

 

Обработка всех компонентов векторов-операндов задается одной век- торной командой. Элементы векторов представляются числами в форме с пла-вающей запятой (ПЗ). АЛУ векторного процессора может быть реализовано в виде единого конвейерного устройства, способного выполнять все предусмот-ренные операции над числами с ПЗ. Однако более распространена иная струк-тура, в которой АЛУ состоит из отдельных блоков сложения и умножения, а иногда и блока для вычисления обратной величины, когда операция деления      реализуется в виде. Каждый из таких блоков также конвейеризирован. Кроме того, в составвекторной вычислительной системы обычно включается     и скалярный процессор, что позволяет параллельно выполнять векторные и скалярные команды.

Для хранения векторов-операндов вместо множества скалярных регистров используются векторные регистры, представляющие собой совокупность скалярных регистров, объединенных в очередь типа FIFO, способную хранить  50–100 чисел с плавающей запятой. Набор векторных регистров (Va, Vb, Vc,…) имеется в любом векторном процессоре. Система команд векторного процессора поддерживает работу с векторными регистрами и обязательно включает в себя  команды:

  • загрузки векторного регистра содержимым последовательных ячеек памяти,  указанных  адресом  первой  ячейки  этой  последовательности;

  • выполнения операций над всеми элементами векторов, находящихся в векторных  регистрах;

  • сохранения значении векторного регистра в последовательности ячеек памяти,  указанных  адресом  первой  ячейки  этой  последовательности.

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

Рассмотрим  перемножение  двух  матриц  А  и  В  размерности  3×3.

                  

Элементы матрицы результата С связаны с соответствующими элементами  исходных  матриц  A  и  B  операцией  скалярного  произведения:

.

Так,  элемент  с11  вычисляется  как

                                           с11 = a11 × b11 a12 × b21 +a13 × b31.

 Это требует трех операций умножения и после инициализации с11 нулем      – трех операций сложения. Общее число умножений и сложений для рассматриваемого примера составляет 9×3=27. Если рассматривать связанные операции умножения и сложения как одну кумулятивную операцию с + a × b, то для умножения двух матриц n × необходимо nопераций типа «умножение-сложение». Вся процедура сводится к получению nскалярных произведений, каждое из которых является итогом n операций «умножение-сложение», учитывая, что перед вычислением каждого элемента сij его необходимо обнулить. Таким образом, скалярное  произведение  состоит  из  k  членов:

С = АВ1+ АВ2 + АВ3 + AB4 + … + ABk.

Векторный процессор с конвейеризированными блоками обработки для вычисления  скалярного  произведения  показан  на  рис. 7.7.

 

Рис. 6. Векторный  процессор  для  вычисления  скалярного  произведения.

 

Векторы А и В, хранящиеся в памяти начиная с адресов adrи adrB, за-гружаются в векторные регистры VA и Vсоответственно. Предполагается, что конвейерные умножитель и сумматор состоят из четырех сегментов, которые вначале инициализируются нулем, поэтому в течение первых восьми циклов,    пока оба конвейера не заполнятся, на выходе сумматора будет 0. Пары (Ai, Bi) подаются на вход умножителя и перемножаются в темпе одна пара за цикл.  После первых четырех циклов произведения начинают суммироваться с данными, поступающими с выхода сумматора. В течение следующих четырех циклов на вход сумматора поступают суммы произведений из умножителя с нулем.  К концу восьмого цикла в сегментах сумматора находятся четыре первых произведенияA1B1, …, A4B4, а в сегментах умножителя  следующие четыре произведения: A5B5, …, A8B8. К началу девятого цикла на выходе сумматора будет A1B1, а на выходе умножителя  А5В5. Таким образом, девятый цикл начнется      со сложения в сумматоре А1Ви А5В5. Десятый цикл начнется со сложения      A2B+A6B6  и  т.д.  Процесс  суммирования  в  четырех  секциях  выглядит  так:

C = A1B+ A5B+ A9B+ A13 B13 + 

    + A2B+ A6B+ A10 B10 + A14 B14 + 

    + A3B+ A7B+ A11 B11 + A15 B15 + 

    + A4B+ A8B+ A12 B12 + A16 B16 + 

Когда больше не остается членов для сложения, система заносит в умножитель четыре нуля. При этом в четырех сегментах конвейера сумматора содержатся четыре скалярных произведения, соответствующие четырем суммам, приведенным в четырех строках показанного выше уравнения.

Частичные   суммы  складываются  для  получения  окончательного  результата.

Программа для вычисления скалярного произведения векторов А и В, хранящихся  в  областях  памяти  с  начальными  адресами  adrA  и  adrB,  

имеет  вид: