Внутрипроцессорный параллелизм
В процессе совершенствования процессоров вычислительных машин было пройдено много этапов развития внутрипроцессорного параллелизма:
- организация параллельной работы основных устройств – арифметико-логического устройства (АЛУ), устройства управления (УУ), оперативной памяти (ОП) за счет введения устройств промежуточного хранения обрабатываемой информации – возникновение конвейера исполнения команд;
- разделение АЛУ на функциональные устройства (ФУ) выполнения отдельных операций (например, сложения, умножения, деления) и организация параллельной работы ФУ;
- организация конвейерного выполнения операций в ФУ;
- организация совмещенного выполнения нескольких потоков команд в обрабатывающем узле процессора за счет чередования выборки команд для выполнения из разных потоков для эффективной загрузки ФУ;
- организация параллельного выполнения нескольких потоков команд в обрабатывающем узле процессора за счет использования в нем нескольких комплектов оборудования (“многоядерность”)
В самых первых ЭВМ основные устройства – ОП, УУ, АЛУ работали последовательно.
Вначале осуществлялся выбор текущей команды программы из оперативной памяти. Устройства УУ и АЛУ простаивали.
Затем выполнялась дешифрация в УУ выбранной команды и определялись адреса нахождения в ОП операндов, необходимых для ее выполнения в АЛУ (или адрес в ОП команды, на которую следует передать управление). ОП и АЛУ простаивали.
На следующем этапе снова работала ОП – выполнялся выбор операндов или первой указанной команды из новой последовательности команд. УУ и АЛУ простаивали.
Затем с использованием выбранных операндов команда выполнялась в АЛУ (если она не являлась командой передачи управления). ОП и УУ простаивали.
Последним этапом было осуществление записи в ОП результата выполненной в АЛУ команды (если запись предусматривалась в команде). УУ и АЛУ простаивали.
После осуществления указанных этапов выполнения команды начинался аналогичный цикл действий для выполнения следующей команды. Простои в работе основных устройств ЭВМ были весьма значительными.
Введение двух новых структурных решений позволило ликвидировать простои в работе основных устройств ЭВМ и обеспечить их параллельную работу. Этими решениями были:
- организация параллельной работы нескольких блоков оперативной памяти (“расслоение” памяти);
- организация буферного хранения информации, передаваемой между основными устройствами ЭВМ.
Одновременно существенному уменьшению количества команд в программе и обращений к оперативной памяти послужило:
- введение в устройстве управления индексных регистров, используемых для автоматической модификации адресов операндов (например, для работы с массивами данных в программных циклах);
- организация автоматического повторного выбора из буферных устройств промежуточного хранения информации (без обращения к оперативной памяти) часто используемых команд и данных – организация “кэш-памяти”.
Уменьшению числа обращений к оперативной памяти способствовало также введение для часто используемых данных регистров, непосредственно указываемых в командах (регистров “общего назначения”).
Реализация параллелизма работы основных устройств ЭВМ удачно осуществлена в отечественной универсальной ЭВМ БЭСМ-6 (1967г.), созданной в Институте точной механики и вычислительной техники (ИТМ и ВТ) под руководством академика Сергея Алексеевича Лебедева.
Образовавшийся в БЭСМ-6 “конвейер команд” - параллельное выполнение команд на разных стадиях их исполнения (от выборки из ОП до выполнения в АЛУ и записи результата выполнения в ОП) позволил в 4 раза увеличить быстродействие машины по сравнению с использованием последовательной работы ее основных устройств при той же элементной базе и конструкции ЭВМ.
Использование в командах “прямо адресуемых” регистров было реализовано в ряде ЭВМ IBM-360 и затем в производимых в СССР и странах Совета экономической взаимопомощи (СЭВ) ЭВМ “единой серии” (ЕС ЭВМ).