Полная версия

Главная arrow Информатика arrow Архитектура ЭВМ и систем

  • Увеличить шрифт
  • Уменьшить шрифт


<<   СОДЕРЖАНИЕ   >>

Процессоры для обработки массивов (Array Processor)

Их также называют массивно-параллельными процессорами [16]. Процессоры состоят из большого числа элементарных процессоров, которые выполняют одну и ту же последовательность команд применительно к разным наборам данных. Блок управления процессора рассылает команды, которые выполняются всеми элементарными процессорами одновременно. При этом каждый элементарный процессор использует свои собственные данные из своей собственной памяти, загрузка которых осуществляется во время инициализации. Представителями массивно-параллельных процессоров являются ILLIACT IV, СМ-2 и Maspar МР-2. Несмотря на общую структуру, они отличаются друг от друга:

  • типом обрабатывающих (процессорных) элементов, в качестве которых применяются как простейшие 1-, 8- и 32-битные АЛУ, так и сложные устройства, способные выполнять операции с плавающей точкой. Например, в процессорах СМ-2 используются самые простые обрабатывающие элементы – 1-битные АЛ У. При выполнении операций каждое АЛУ получает 1-битные операнды из своей локальной памяти и биты из слова состояния программы. Результатом операции является 1 бит данных и несколько флаговых битов. В частности, для сложения двух целых 32-битных чисел блоку управления нужно транслировать команду 1-битного сложения 32 раза. Если на одну команду затрачивается 600 нс, то для сложения целых чисел потребуется 19,2 мкс. Благодаря наличию 65 536 обрабатывающих элементов процессор обеспечивает более 3 млрд сложений в секунду, затрачивая на одну операцию сложения 300 пикосекунд;
  • схемой соединения обрабатывающих элементов друг с другом. Практически применимы все топологии, приведенные на рис. 17.6 (§ 17.3), однако чаще всего используются прямоугольные решетки, поскольку они подходят для задач с матрицами и обеспечивают расширяемость системы;
  • способностью не выполнять или выполнять текущую команду. Блок управления сообщает, какую следующую команду должен выполнить обрабатывающий элемент. Однако во многих процессорах каждый обрабатывающий элемент может выбирать на основе некоторых локальных данных (например, на основе битов кода условия), выполнять ему эту команду или нет.

Массивно-параллельные процессоры выпускаются до сих пор, но занимают незначительную нишу компьютерного рынка, поскольку эффективны при решении только таких задач, которые требуют одновременного выполнения одних и тех же вычислений над разными наборами данных. Хотя массивно-параллельные процессоры могут выполнять некоторые операции гораздо быстрее, чем рассмотренные ниже векторные процессоры, однако они требуют большего количества аппаратного обеспечения и, кроме того, для них сложно писать программы [16].

Векторные процессоры (Vector Processor). Этот тип компьютеров предназначен для параллельного выполнения операций над векторными и скалярными величинами. Используется четыре формы операций:

  • – операция, выполняемая над каждым элементом B1 одного вектора; результатом является элементдругого вектора. Примером может служить извлечение квадратного корня или вычисление тригонометрической функции;
  • – операция над входным вектором А, представленным совокупностью элементов, в результате которой получается скаляр а, например суммирование всех элементов : ;
  • – операция над элементами двух векторов, например сложение или умножение элементов и ;
  • – операция скаляра а (операнда) с элементами вектора. Например, умножение каждого элемента вектора на константу а.

Все обычные операции с векторами могут производиться с использованием этих четырех форм. Например, для получения скалярного произведения двух векторов сначала перемножаются соответствующие элементы векторов (), а затем складываются полученные результаты ().

Векторные процессоры содержат векторный регистр, состоящий из набора стандартных регистров, которые последовательно загружаются из памяти при помощи одной команды. Команда сложения попарно складывает элементы двух векторов, загружая их из двух векторных регистров в суммирующее устройство с конвейерной структурой. В результате на выходе суммирующего устройства формируется другой вектор, который помещается в векторный регистр или сразу используется в качестве операнда при выполнении другой операции с векторами. Для программистов векторный процессор похож на массивно-параллельный процессор. Он также эффективен при выполнении последовательности операций над парами элементов данных. Однако, в отличие от массивно-параллельного процессора, все операции сложения выполняются в одном блоке суммирования, который имеет конвейерную структуру.

Конвейерная структура обусловлена операциями с плавающей точкой, которые требуют выполнения нескольких шагов. В качестве примера рассмотрим выполнение операции вычитания 9,212×1011 из 1,082×1012 [16]:

  • • шаг 1 – вызов операндов 9,212×1011 и 1,082×1012;
  • • шаг 2 – выравнивание порядков экспоненты. Для этого можно снизить порядок уменьшаемого (10,82×10й) или увеличить порядок вычитаемого (0,9212×1012). При этом уменьшение порядка может вызвать переполнение мантиссы (исчезновение старших разрядов мантиссы), а увеличение порядка может привести к антипереполнению (исчезновению младших разрядов мантиссы). Антипереполнение менее опасно, поскольку число антипереполнений можно округлить нулем. Поэтому целесообразно привести оба порядка к 12: 1,002×1012, 0,9212×1012;
  • • шаг 3 – вычитание: 1.002× 1012–0,9212×1012 = 0,0808×1012;
  • • шаг 4 – нормализация результата: 8,08×1010.

Для выполнения многошаговых простейших операций лучше всего использовать конвейер.

Для того чтобы получить более детальное представление о векторных процессорах, рассмотрим суперкомпьютер Сгау-1, который выбран из-за его простоты и наглядности в отношении особенностей организации комбинаций конвейерной и векторной обработок данных.

 
<<   СОДЕРЖАНИЕ   >>