stringtranslate.com

Суперскалярный процессор

Простой суперскалярный конвейер. При одновременной выборке и отправке двух инструкций можно выполнить максимум две инструкции за цикл. (IF = выборка инструкции, ID = декодирование инструкции, EX = выполнение, MEM = доступ к памяти, WB = обратная запись в регистр, i = номер инструкции, t = тактовый цикл [т. е. время])
Процессорная плата суперкомпьютера CRAY T3e с четырьмя суперскалярными процессорами Alpha 21164

Суперскалярный процессор — это ЦП , который реализует форму параллелизма , называемую параллелизмом на уровне команд, внутри одного процессора. [1] В отличие от скалярного процессора , который может выполнять не более одной инструкции за такт, суперскалярный процессор может выполнять более одной инструкции в течение такта, одновременно отправляя несколько инструкций различным исполнительным блокам процессора. Таким образом, он обеспечивает большую пропускную способность (количество инструкций, которые могут быть выполнены в единицу времени), чем было бы возможно в противном случае при заданной тактовой частоте . Каждый исполнительный блок — это не отдельный процессор (или ядро, если процессор многоядерный ) , а исполнительный ресурс внутри одного ЦП, например арифметико-логический блок .

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

Суперскалярный метод традиционно связан с несколькими идентифицирующими характеристиками (внутри данного ЦП):

История

CDC 6600 Сеймура Крея 1964 года часто упоминается как первая суперскалярная конструкция. IBM System/360 Model 91 1967 года была еще одним суперскалярным мэйнфреймом. Микропроцессоры Intel i960 CA (1989 г.), [2] AMD 29000 серии 29050 (1990 г.) и Motorola MC88110 (1991 г.), [3] были первыми коммерческими однокристальными суперскалярными микропроцессорами. Подобные RISC- микропроцессоры были первыми, которые имели суперскалярное исполнение, поскольку в RISC-архитектуре имеются свободные транзисторы и площадь кристалла, которую можно использовать для включения нескольких исполнительных блоков (именно поэтому конструкции RISC были быстрее, чем конструкции CISC , в 1980-х и в 1990-х годах).

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

P5 Pentium был первым суперскалярным процессором x86 ; Nx586 , P6 Pentium Pro и AMD K5 были одними из первых разработок, которые асинхронно декодировали x86 - инструкции в динамические последовательности микроопераций , подобные микрокоду, перед фактическим выполнением на суперскалярной микроархитектуре ; это открыло возможности динамического планирования буферизованных частичных инструкций и позволило извлечь больше параллелизма по сравнению с более жесткими методами, используемыми в более простом Pentium P5 ; это также упростило спекулятивное выполнение и позволило повысить тактовые частоты по сравнению с такими конструкциями, как усовершенствованный Cyrix 6x86 .

Скаляр в суперскаляр

Простейшими процессорами являются скалярные процессоры. Каждая инструкция, выполняемая скалярным процессором, обычно манипулирует одним или двумя элементами данных одновременно. Напротив, каждая инструкция, выполняемая векторным процессором, одновременно обрабатывает множество элементов данных. Аналогия - это разница между скалярной и векторной арифметикой. Суперскалярный процессор представляет собой смесь этих двух. Каждая инструкция обрабатывает один элемент данных, но в каждом ЦП имеется несколько исполнительных блоков, поэтому несколько инструкций могут обрабатывать отдельные элементы данных одновременно.

Суперскалярный дизайн ЦП направлен на повышение точности диспетчера инструкций и позволяет ему постоянно использовать несколько исполнительных блоков. Это становится все более важным по мере увеличения количества единиц. В то время как ранние суперскалярные процессоры имели два ALU и один FPU , более поздняя конструкция, такая как PowerPC 970, включала четыре ALU, два FPU и два блока SIMD. Если диспетчер не сможет обеспечить все эти подразделения инструкциями, производительность системы будет не лучше, чем у более простой и дешевой конструкции.

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

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

Ограничения

Доступное улучшение производительности с помощью суперскалярных методов ограничено тремя ключевыми областями:

Существующие двоичные исполняемые программы имеют разную степень внутреннего параллелизма. В некоторых случаях инструкции не зависят друг от друга и могут выполняться одновременно. В других случаях они взаимозависимы: одна инструкция влияет либо на ресурсы, либо на результаты другой. Инструкции a = b + c; d = e + fможно выполнять параллельно, поскольку ни один из результатов не зависит от других вычислений. Однако инструкции a = b + c; b = e + fмогут не выполняться параллельно, в зависимости от порядка выполнения инструкций при прохождении через модули.

Хотя поток команд может не содержать никаких зависимостей между командами, суперскалярный ЦП, тем не менее, должен проверить такую ​​возможность, поскольку в противном случае нет никакой гарантии, и неспособность обнаружить зависимость приведет к неверным результатам.

Независимо от того, насколько развит полупроводниковый процесс или насколько высока скорость переключения, это накладывает практический предел на количество инструкций, которые могут быть отправлены одновременно. Хотя развитие процессов позволит использовать все большее количество исполнительных устройств (например, ALU), бремя проверки зависимостей команд быстро растет, равно как и сложность схем переименования регистров для смягчения некоторых зависимостей. В совокупности потребляемая мощность , сложность и затраты на задержку вентиля ограничивают достижимое суперскалярное ускорение.

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

Альтернативы

В совокупности эти ограничения стимулируют исследование альтернативных архитектурных изменений, таких как очень длинное командное слово (VLIW), явно параллельные вычисления команд (EPIC), одновременная многопоточность (SMT) и многоядерные вычисления .

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

Одновременная многопоточность (SMT) — это метод повышения общей эффективности суперскалярных процессоров. SMT допускает несколько независимых потоков выполнения, чтобы лучше использовать ресурсы, предоставляемые современными процессорными архитектурами.

Суперскалярные процессоры отличаются от многоядерных процессоров тем, что несколько исполнительных блоков не являются целыми процессорами. Один процессор состоит из более детальных исполнительных блоков, таких как ALU , целочисленный умножитель , целочисленный сдвиг, FPU и т. д. Может существовать несколько версий каждого исполнительного блока, чтобы обеспечить параллельное выполнение множества инструкций. Это отличается от многоядерного процессора, который одновременно обрабатывает инструкции из нескольких потоков, по одному потоку на процессор (так называемый «ядро»). Он также отличается от конвейерного процессора , в котором несколько инструкций могут одновременно находиться на разных стадиях выполнения, как на конвейере .

Различные альтернативные методы не являются взаимоисключающими — их можно (и часто так и делают) комбинировать в одном процессоре. Таким образом, возможен многоядерный ЦП, в котором каждое ядро ​​представляет собой независимый процессор, содержащий несколько параллельных конвейеров, причем каждый конвейер является суперскалярным. Некоторые процессоры также поддерживают векторную обработку.

Смотрите также

Рекомендации

  1. ^ «Что такое суперскалярный процессор? - Определение из Techopedia». Techopedia.com . Проверено 29 августа 2022 г.
  2. ^ Макгиди, Стивен (весна 1990 г.). «Реализация i960CA SuperScalar архитектуры 80960». Дайджест статей Compcon Spring '90. Тридцать пятая международная конференция IEEE Computer Society по интеллектуальному использованию . стр. 232–240. doi : 10.1109/CMPCON.1990.63681. ISBN 0-8186-2028-5. S2CID  13206773. {{cite book}}: |journal=игнорируется ( помощь )
  3. ^ Дифендорф, К.; Аллен, М. (весна 1992 г.). «Суперскалярный RISC-микропроцессор Motorola 88110». Дайджест докладов КОМПКОН, весна 1992 г. стр. 157–162. doi : 10.1109/CMPCON.1992.186702. ISBN 0-8186-2655-0. S2CID  34913907. {{cite book}}: |journal=игнорируется ( помощь )

Внешние ссылки