Параллелизм на уровне набора команд

Параллелизм на уровне набора команд

Xalion

У производителей компьютеров есть цель – заставить компьютер работать быстрее.

Первый способ – повышение тактовой частоты процессора. Проблема: он сильнее греется.


Второй способ – параллелизм.

Параллелизм – выполнение нескольких операций одновременно.

На уровне набора команд он реализуется за счёт запуска большого количества команд в секунду.

На уровне процессора – за счёт одновременной работы нескольких процессоров над одной задачей.

В 1959 году IBM в компьютер Stretch добавили дополнительный набор регистров. Они решали проблему медленного обращения к основной памяти: слово вызывалось из памяти, помещалось в этот набор регистров и хранилось там до тех пор, пока оно нужно.

Эти регистры назвали буфером выборки с упреждением. Со временем эта идея переросла в конвейер.


Команды на конвейере обрабатываются в несколько шагов, которые исполняются аппаратным обеспечением и работают параллельно.


пятиступенчатый конвейер
C1 – находит команду в памяти и помещает её в буфер.
C2
– декодирует эту команду, определяя её тип и тип операндов.
C3
– блок выборки операндов находит их в памяти или регистрах и вызывает.
C4
– выполняет команду, используя тракт данных.
C5
– блок обратной записи возвращает результат обратно в регистр.

Пример:
Блок C1 получает команду A ---> пока C2 декодирует A, первый блок принимает команду B ---> C2 отдаёт A третьему блоку и принимает B ---> таким образом до выполнения всех команд.

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


Чтобы ускорить компьютеры еще сильнее, производители используют несколько конвейеров в одном процессоре – это суперскалярные архитектуры.


В этой архитектуре общий блок выборки команд обрабатывает сразу две команды. Он помещает каждую в отдельный конвейер, в каждом конвейере есть АЛУ.

Работа двух конвейеров одновременно


Чтобы выполняться параллельно, команды не должны конфликтовать из-за ресурсов или зависеть от результата выполнения другой команды.
Это контролируется компилятором или дополнительным оборудованием в ходе выполнения команд.


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

C4 разбивается на несколько АЛУ и блоки. Блоки обрабатывают команды загрузки, сохранения и операций с плавающей точкой.

Разбиение C4 на несколько блоков


В таком конвейере команды на ступени C4 всегда обрабатываются медленнее, чем новые команды появляются на ступени C3.


Следующая статья: параллелизм на уровне процессоров.

Report Page