Суперскалярный процессор
Эта статья включает список общих ссылок , но в ней отсутствуют достаточные соответствующие встроенные цитаты . ( Октябрь 2017 г. ) |
Суперскалярный процессор (или многозадачный процессор [1] ) — это ЦП , который реализует форму параллелизма, называемую параллелизмом на уровне команд, в пределах одного процессора. [2] В отличие от скалярного процессора , который может выполнять не более одной инструкции за такт, суперскалярный процессор может выполнять более одной инструкции за такт, одновременно отправляя несколько инструкций различным исполнительным блокам процессора. Таким образом, он обеспечивает большую пропускную способность (количество инструкций, которые могут быть выполнены в единицу времени), чем было бы возможно в противном случае при заданной тактовой частоте . Каждый исполнительный блок — это не отдельный процессор (или ядро, если процессор многоядерный ) , а исполнительный ресурс внутри одного ЦП, например арифметико-логический блок .
Хотя суперскалярный ЦП обычно также является конвейерным , суперскалярное и конвейерное выполнение считаются разными методами повышения производительности. Первый (суперскаляр) выполняет несколько инструкций параллельно, используя несколько исполнительных блоков, тогда как второй (конвейер) выполняет несколько инструкций в одном и том же исполнительном блоке параллельно, разделяя исполнительный блок на разные фазы. На рисунке «Простой суперскалярный конвейер» одновременная выборка двух инструкций является супермасштабированием, а выборка следующих двух до того, как первая пара будет записана обратно, — это конвейерная обработка.
Суперскалярный метод традиционно связан с несколькими идентифицирующими характеристиками (внутри данного ЦП):
- Инструкции выдаются из последовательного потока инструкций.
- ЦП динамически проверяет зависимости данных между инструкциями во время выполнения (в отличие от программной проверки во время компиляции ).
- ЦП может выполнять несколько инструкций за такт
История
[ редактировать ]Сеймура Крея 1964 CDC 6600 года часто упоминается как первая суперскалярная конструкция. 1967 года IBM System/360 Model 91 была еще одним суперскалярным мэйнфреймом. Intel i960 CA (1989 г.), [3] AMD 29000 -серия 29050 (1990 г.) и Motorola MC88110 (1991 г.), [4] микропроцессоры были первыми коммерческими однокристальными суперскалярными микропроцессорами. Подобные RISC- микропроцессоры были первыми, которые имели суперскалярное исполнение, поскольку в RISC-архитектуре отсутствуют транзисторы и площадь кристалла, которую можно использовать для включения нескольких исполнительных блоков, а традиционная однородность набора команд способствует суперскалярной диспетчеризации (именно поэтому конструкции RISC были быстрее, чем CISC). разрабатывались на протяжении 1980-х и 1990-х годов, и гораздо сложнее выполнять множественную отправку, когда инструкции имеют переменную битовую длину).
За исключением процессоров, используемых в приложениях с низким энергопотреблением , встроенных системах и устройствах с батарейным питанием, практически все процессоры общего назначения, разработанные примерно с 1998 года, являются суперскалярными.
P5 ; Pentium был первым суперскалярным процессором x86 Nx586 микрокоду , P6 Pentium Pro и AMD K5 были одними из первых разработок, которые декодировали x86 асинхронно -инструкции в динамические последовательности микроопераций , подобные , перед фактическим выполнением на суперскалярной микроархитектуре ; это открыло возможности для динамического планирования буферизованных частичных инструкций и позволило извлечь больше параллелизма по сравнению с более жесткими методами, используемыми в более простом P5 Pentium ; это также упростило спекулятивное выполнение и позволило повысить тактовую частоту по сравнению с такими конструкциями, как усовершенствованный 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 и т. д. Может существовать несколько версий каждого исполнительного блока, чтобы обеспечить параллельное выполнение множества инструкций. Это отличается от многоядерного процессора, который одновременно обрабатывает инструкции из нескольких потоков, по одному потоку на процессор (так называемый «ядро»). Он также отличается от конвейерного процессора , в котором несколько инструкций могут одновременно находиться на разных стадиях выполнения, как на конвейере .
Различные альтернативные методы не являются взаимоисключающими — их можно (и часто так и делают) комбинировать в одном процессоре. Таким образом, возможен многоядерный ЦП, в котором каждое ядро представляет собой независимый процессор, содержащий несколько параллельных конвейеров, причем каждый конвейер является суперскалярным. Некоторые процессоры также поддерживают векторную обработку.
См. также
[ редактировать ]- Стремительное исполнение
- Гиперпоточность
- Одновременная многопоточность
- Исполнение вне очереди
- Полочный буфер
- Спекулятивное исполнение
- Программная блокировка — многопроцессорная проблема, похожая на логические зависимости от суперскаляров.
- Суперпоточность
Ссылки
[ редактировать ]- ^ П. Пачеко, Введение в параллельное программирование , 2011, раздел 2.2.5, «Существует два основных подхода к ILP: конвейеризация... и множественная задача... Процессор, поддерживающий динамическую множественную задачу,иногда его называют суперскалярным». А. Чиен , «Компьютерная архитектура для ученых» , 2022, стр. 102, «многозадачный (он же суперскалярный)».
- ^ «Что такое суперскалярный процессор? — Определение из Techopedia» . Techopedia.com . Проверено 29 августа 2022 г.
- ^ Макгиди, Стивен (весна 1990 г.). «Реализация i960CA SuperScalar архитектуры 80960». Дайджест статей Compcon Spring '90. Тридцать пятая международная конференция IEEE Computer Society по интеллектуальному использованию . стр. 232–240. дои : 10.1109/CMPCON.1990.63681 . ISBN 0-8186-2028-5 . S2CID 13206773 .
{{cite book}}
:|journal=
игнорируется ( помогите ) - ^ Дифендорф, К.; Аллен, М. (весна 1992 г.). «Суперскалярный RISC-микропроцессор Motorola 88110». Дайджест докладов КОМПКОН, весна 1992 г. стр. 157–162. дои : 10.1109/CMPCON.1992.186702 . ISBN 0-8186-2655-0 . S2CID 34913907 .
{{cite book}}
:|journal=
игнорируется ( помогите )
- Майк Джонсон , Проектирование суперскалярных микропроцессоров , Прентис-Холл, 1991 г., ISBN 0-13-875634-1
- Сорин Котофана, Стаматис Василиадис, «О сложности проектирования логики суперскалярных машин», EUROMICRO 1998: 10277-10284
- Стивен Макгиди и др., «Повышение производительности встроенного микропроцессора Superscalar i960MM», Материалы конференции ACM 1991 года по компьютерной архитектуре (Compcon) , 1991, стр. 4–7.
Внешние ссылки
[ редактировать ]- Стремительное исполнение / Двойной путь / Множественный путь , Марк Смотерман