В чем общая разница между суперскалярным и OoO исполнением?
Я читал некоторые материалы по суперскарлу и OoO, и я в замешательстве.
Я думаю, что их архитектурные графики выглядят очень похоже.
1 ответ
Суперскалярные микропроцессоры могут выполнять две или более инструкций одновременно. Например, обычно они имеют по крайней мере 2 ALU (хотя суперскалярный процессор может иметь 1 ALU и какой-либо другой исполнительный модуль, например модуль сдвига или перехода).
(Точнее, суперскалярные процессоры могут начать выполнение двух или более команд в одном и том же цикле. Конвейерные процессоры могут выполнять более одной инструкции за раз, но не суперскалярный конвейерный процессор будет запускать только одну инструкцию в любом данном цикле. Конвейерное выполнение Для выполнения последовательных блоков требуется несколько циклов. Другими словами, суперскалярные процессоры, как правило, способны выполнять две непотоковые инструкции с задержкой одного цикла за цикл, в то время как не суперскалярные конвейерные процессоры не могут иметь две инструкции одного цикла при выполнении в ALU. в то же время.)
Процессоры, вышедшие из строя, могут выполнять инструкции из исходного заказа. Например, в следующем случае, когда MULTIPLY занимает 5 циклов, инструкция 3 может выполняться перед инструкцией 2, потому что инструкция 2 ожидает 5-ти тактового результата MULTIPLY инструкции 1:
1: MULTIPLY reg1 := reg2 * reg3
2: ADD reg4 := reg1 + 5
3: ADD reg6 := reg2 + 1
Большинство процессоров, вышедших из строя, также являются суперскалярными. Однако вы можете представить себе построение процессора не по порядку, который не является суперскалярным, который может инициировать только одну операцию на конвейерном ALU за цикл. (Я предложил такие операции, когда Intel использует их, как микросхемы с низким энергопотреблением. Черт возьми, вы можете создавать процессоры не по порядку, которые являются только наполовину скалярными, например, которые имеют только 16-битный ALU, требующий 2 цикла для 32-битное добавление и т. д. Но это растяжение.)
Однако многие суперскалярные процессоры не вышли из строя. В приведенном выше примере суперскаляр по порядку будет сначала выполнять инструкцию [1]. Он НЕ будет запускать инструкцию 3, но будет ждать, пока инструкция 2 не может начаться - в это время он начнет инструкции 2 и 3 вместе.
Надеюсь это поможет.
Иногда вам нужно подумать о маловероятных предельных случаях, таких как машины с шириной 1 или половина ширины, чтобы понять концепции.