Новосибирский государственный университетФакультет информационных технологий |
Векторные вычислительные системы - системы класса SIMD, в которых одна и та же заданная операция выполняется сразу над всеми компонентами векторов.
В задачах моделирования реальных процессов и объектов, для которых характерна обработка больших массивов чисел в форме с плавающей запятой, массивы представляются матрицами и векторами, а алгоритмы их обработки описываются в терминах матричных операций. Как известно, основные матричные операции сводятся к однотипным действиям над парами элементов исходных матриц, которые, чаще всего, можно производить параллельно. В универсальных вычислительных системах, ориентированных на скалярные операции, обработка матриц выполняется поэлементно и последовательно. При большой размерности массивов последовательная обработка элементов матриц занимает слишком много времени, что и приводит к неэффективности универсальных ВС для рассматриваемого класса задач. Для обработки массивов требуются вычислительные средства, позволяющие с помощью единой команды производить действие сразу над всеми элементами массивов - средства векторной обработки.
В средствах векторной обработки под вектором понимается одномерный массив данных (обычно в форме с плавающей запятой), размещенных в памяти ВС. Количество элементов массива называется длиной вектора. Многомерные массивы считаются наборами одномерных массивов-векторов.
Действия над многомерными массивами учитывают специфику их размещения. Способ размещения многомерного массива влияет на шаг изменения адреса элемента, выбираемого из памяти. Так, если матрица расположена в памяти построчно, адреса соседних элементов строки различаются на единицу, а для элементов столбца шаг равен четырем. При размещении матрицы по столбцам единице будет равен шаг по столбцу, а четырем - шаг по строке. В векторной концепции для обозначения шага, с которым элементы вектора извлекаются из памяти, применяют термин шаг по индексу (stride).
Понятие векторного процессора
Векторный процессор - это процессор, в котором операндами некоторых команд могут выступать массивы данных - векторы. Векторный процессор может быть реализован в двух вариантах. В первом он представляет собой дополнительный блок к универсальной вычислительной машине (системе). Во втором - векторный процессор является основой самостоятельной ВС.
В архитектуре средств векторной обработки используется один из двух подходов - векторно-параллельный или векторно-конвейерный.
В векторно-параллельном процессоре одновременные операции над элементами векторов проводятся с помощью нескольких функциональных блоков (ФБ) с плавающей запятой, каждый из которых отвечает за одну пару элементов.
В векторно-конвейерном варианте обработка элементов векторов производится одним конвейерным ФБ. Операции с числами в форме с ПЗ достаточно сложны, но поддаются разбиению на отдельные шаги. Каждый этап обработки может быть реализован с помощью отдельной ступени конвейерного ФБ. Очередная пара элементов векторов-операндов подается на вход конвейера как только освобождается его первая ступень.
Одновременные операции над элементами векторов можно проводить и с помощью нескольких конвейерных ФБ. Такого рода обработка совмещает векторно-параллельный и векторно-конвейерный подходы.
Архитектуры векторной обработки «память-память» и «регистр-регистр»
Принципиальным моментом в архитектуре векторных процессоров является способ доступа к операндам, поскольку векторы-операнды хранятся в памяти ВС и туда же помещается вектор-результат. Для известных векторных ВС можно выделить два варианта архитектуры векторной обработки, известные как «память-память» и «регистр-регистр».
В векторных процессорах с архитектурой «память-память» элементы векторов поочередно извлекаются из памяти и сразу же направляются в функциональный блок. По мере обработки элементы вектора результата, появляющиеся на выходе ФБ, сразу же заносятся в память.
В архитектуре «регистр-регистр» операнды сначала загружаются из памяти в векторные регистры. Векторный регистр представляет собой совокупность скалярных регистров, объединенных в очередь типа FIFO, способную хранить 50-100 чисел с плавающей запятой (чаще всего - 64). Операция выполняется над векторами, размещенными в векторных регистрах операндов, а ее результат сначала заносится в векторный регистр результата, а уже из него переписывается в память.
В обеих структурах необходимо обеспечить требуемую последовательность извлечения элементов векторов-операндов из памяти и занесения элементов вектора-результата в память. Эта задача в векторном процессоре реализуется с помощью генератора адресов, на выходе которого формируется адрес очередного элемента вектора в памяти. Изначально на вход генератора подается базовый адрес - начальный адрес области памяти, хранящей элементы вектора. Очередной адрес вычисляется путем увеличения предыдущего адреса на величину шага по индексу.
Для доступа к структурированным данным в памяти (массивам, векторам), в которых элементы с последовательно возрастающими индексами размещаются в ячейках с последовательно возрастающими адресами, память выгоднее строить как блочную с расслоением. В этом случае адреса ячеек чередуются по циклической схеме (следующий адрес - в следующем банке памяти). Такой прием позволяет почти параллельно читать (записывать) элементы векторов в обеих архитектурах.
Преимущество векторных процессоров «память-память» состоит в возможности обработки длинных векторов, в то время как в процессорах «регистр-регистр» приходится разбивать длинные векторы на сегменты фиксированной длины. К сожалению, за гибкость режима «память-память» приходится расплачиваться относительно большими издержками, известными как время запуска, представляющее собой временной интервал между инициализацией команды и моментом, когда первый результат появится на выходе конвейера. Большое время запуска в процессорах «память-память» обусловлено скоростью доступа к памяти, которая намного меньше скорости доступа к внутреннему регистру. Однако когда конвейер заполнен, результат формируется в каждом цикле. Модель времени работы векторного процессора (ВП) имеет вид:
Ключевые термины: архитектура вычислительной машины; классификация флинна; simd-архитектура; flops;
Федотова Ольга |
НГУ ФИТ НГУ ИВТ СО РАН |