Суперскалярный процессор - Википедия - Superscalar processor

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

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

В Таксономия Флинна, одноядерный суперскалярный процессор классифицируется как SISD процессор (поток одиночных инструкций, поток одиночных данных), хотя одноядерный суперскалярный процессор, поддерживающий операции с короткими векторами, можно классифицировать как SIMD (Один поток инструкций, несколько потоков данных). А многоядерный суперскалярный процессор классифицируется как MIMD процессор (несколько потоков инструкций, несколько потоков данных).

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

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

  • Инструкции выдаются из последовательного потока команд
  • ЦП динамически проверяет наличие зависимости данных между инструкциями во время выполнения (по сравнению с проверкой программного обеспечения в время компиляции )
  • ЦП может выполнять несколько инструкций за такт

История

Сеймур Крей с CDC 6600 с 1966 года часто упоминается как первая суперскалярная конструкция. 1967 год IBM System / 360 Модель 91 был еще одним суперскалярным мэйнфреймом. Motorola MC88100 (1988), Intel i960 CA (1989) и 29000 драм Микропроцессоры серии 29050 (1990) были первыми коммерческими однокристальными суперскалярными микропроцессорами. 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. Если диспетчер не может поддерживать все эти устройства с инструкциями, производительность системы будет не лучше, чем у более простой и дешевой конструкции.

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

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

Ограничения

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  • Майк Джонсон, Суперскалярная конструкция микропроцессора, Прентис-Холл, 1991, ISBN  0-13-875634-1
  • Сорин Котофана, Стаматис Вассилиадис, «О проектной сложности логики выдачи суперскалярных машин», EUROMICRO 1998: 10277-10284
  • Стивен МакГиди, «Реализация i960CA SuperScalar архитектуры 80960», IEEE 1990, стр. 232–240.
  • Стивен МакГиди и др., «Повышение производительности встроенного микропроцессора Superscalar i960MM», Материалы конференции ACM 1991 г. по компьютерной архитектуре (Compcon), 1991, стр. 4–7

внешняя ссылка