Скалярный параллелизм

Термин скалярный параллелизм соответствует параллелизму операций внутри тела цикла или отдельного выражения. Вместо термина "скалярный" часто используется термин "локальный параллелизм", чтобы отличить его от "глобального параллелизма", соответствующего параллелизму итераций цикла или независимых ветвей программы.

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

Из закона Амдала:

следует, что значение ускорения r весьма чувствительно к удельной величине скалярной части вычислений a, поэтому в быстродействующих ЭВМ прикладывают значительные усилия для распараллеливания скалярных участков.

Результаты анализа программ показывают, что в одном такте можно выполнить 1,5...2 операции или команды. Комплексную команду, содержащую больше одной параллельной команды, называют длинной командой (ДК). Для увеличения скалярного параллелизма используется ряд методов, например, развертка циклов. Если при этом число параллельных операций превышает 2, то такой параллелизм называется суперскалярным, а команда - сверхдлинной (СДК).

Величина скалярного параллелизма зависит от уровня представления программы. Параллелизм на уровне ЯВУ будем называть математическим, на уровне системы команд - аппаратным. Существует несколько уровней систем команд, и каждому уровню соответствует своя величина скалярного параллелизма. Рассмотрим основные уровни систем команд.

  1. Исторически в больших ЭВМ и ПЭВМ наибольшее распространение получила система команд типа CISC (Complex Instruction Set Computer), содержавшая большое количество команд. Основой этой системы команд являлся формат
  2. КОП R1, D2 (В2) (4.1)

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

  3. Сокращенная система команд типа RISC (Redused Instruction Set Computer) более перспективна для параллельных процессоров, поскольку число команд в ней меньше и вследствие их простоты большинство команд можно реализовать аппаратно и выполнить за один такт.
  4. Сокращение числа команд в RISC-системе достигается за счет разбиения формата (4.1) на два более простых формата:

    Чт, Зп, Ri, D2 [B2] (4.2)
    КОП Ri, Rj

    Первый формат предназначен только для работы с памятью, второй - только для работы с АЛУ.

    Если предположить, что имеется k кодов операций для работы с памятью и l кодов - для работы с АЛУ, то система команд типа CISC должна содержать k*l команд формата (4.1), а система RISC - только k+l команд. Следовательно, отказ от формата (4.1) значительно сокращает список системы команд.

  5. Последующее упрощение системы команд достигается при переходе к типу MISC (Minimum Instruction Set Computer), в кото-ром команда формата (4.2) разбивается на две команды:

Rk = В2 + D2 (4.3)
Чт, Зп, Ri, [Rk]
(4.4)

где команда (4.3) выполняет индексную операцию, а команда (4.4) - упрощенное обращение в память.

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

Скалярный параллелизм длительное время использовался для ускорения процессоров в ЭВМ типа ОКОД, затем в конвейерных ЭВМ типа CRAY. Скалярный параллелизм имеет особое значение для микропроцессорной техники по следующим причинам:

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

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


Составлено по материалам книги Г.И. Шпаковский. Организация параллельных ЭВМ и суперскалярных процессоров