Параллелизм на уровне набора команд
XalionУ производителей компьютеров есть цель – заставить компьютер работать быстрее.
Первый способ – повышение тактовой частоты процессора. Проблема: он сильнее греется.
Второй способ – параллелизм.
Параллелизм – выполнение нескольких операций одновременно.
На уровне набора команд он реализуется за счёт запуска большого количества команд в секунду.
На уровне процессора – за счёт одновременной работы нескольких процессоров над одной задачей.
В 1959 году IBM в компьютер Stretch добавили дополнительный набор регистров. Они решали проблему медленного обращения к основной памяти: слово вызывалось из памяти, помещалось в этот набор регистров и хранилось там до тех пор, пока оно нужно.
Эти регистры назвали буфером выборки с упреждением. Со временем эта идея переросла в конвейер.
Команды на конвейере обрабатываются в несколько шагов, которые исполняются аппаратным обеспечением и работают параллельно.
C1 – находит команду в памяти и помещает её в буфер.
C2 – декодирует эту команду, определяя её тип и тип операндов.
C3 – блок выборки операндов находит их в памяти или регистрах и вызывает.
C4 – выполняет команду, используя тракт данных.
C5 – блок обратной записи возвращает результат обратно в регистр.
Пример:
Блок C1 получает команду A ---> пока C2 декодирует A, первый блок принимает команду B ---> C2 отдаёт A третьему блоку и принимает B ---> таким образом до выполнения всех команд.
Конвейеры позволяют добиться компромисса, между временем выполнения одной команды и количеством команд, выполняемых процессором в секунду.
Чтобы ускорить компьютеры еще сильнее, производители используют несколько конвейеров в одном процессоре – это суперскалярные архитектуры.
В этой архитектуре общий блок выборки команд обрабатывает сразу две команды. Он помещает каждую в отдельный конвейер, в каждом конвейере есть АЛУ.
Чтобы выполняться параллельно, команды не должны конфликтовать из-за ресурсов или зависеть от результата выполнения другой команды.
Это контролируется компилятором или дополнительным оборудованием в ходе выполнения команд.
Суперскалярной архитектурой можно назвать архитектуру с одним конвейером, но блок исполнения команд(C4) состоит из нескольких блоков.
C4 разбивается на несколько АЛУ и блоки. Блоки обрабатывают команды загрузки, сохранения и операций с плавающей точкой.
В таком конвейере команды на ступени C4 всегда обрабатываются медленнее, чем новые команды появляются на ступени C3.
Следующая статья: параллелизм на уровне процессоров.