Interested Article - Суперскалярность
- 2020-03-07
- 1
Суперскалярный процессор ( англ. superscalar processor ) — процессор , поддерживающий так называемый параллелизм на уровне инструкций (то есть, процессор, способный выполнять несколько инструкций одновременно) за счёт включения в состав его вычислительного ядра нескольких одинаковых (таких как АЛУ , FPU , умножитель ( integer multiplier ), сдвигающее устройство ( integer shifter ) и другие устройства). Планирование исполнения потока инструкций осуществляется динамически вычислительным ядром (не статически компилятором ).
Способы увеличения производительности, которые могут использоваться совместно:
- Использование конвейера ( англ. pipelining )
- увеличение количества функциональных узлов процессора (суперскалярность)
- увеличение количества ядер ( многоядерность )
- увеличение количества процессоров ( многопроцессорность )
При использовании конвейера количество узлов остаётся прежним; увеличение производительности достигается за счёт одновременной работы узлов, ответственных за разные стадии обработки инструкций одного потока . При использовании суперскалярности увеличение производительности достигается за счёт одновременной работы большего количества одинаковых узлов, независимо обрабатывающих инструкции одного потока (в том числе, и большего количества конвейеров). При использовании нескольких ядер каждое ядро выполняет инструкции отдельного потока, причем каждое из них может быть суперскалярным и/или конвейерным. При использовании нескольких процессоров каждый процессор может быть многоядерным.
В суперскалярном процессоре инструкция извлекается из потока инструкций (находящегося в памяти), определяется наличие или отсутствие зависимости инструкции по данным от других инструкций, затем инструкция выполняется. Одновременно, в течение одного такта, может выполняться несколько независимых инструкций.
По классификации Флинна одноядерные суперскалярные процессоры относят к группе процессоров SISD ( англ. s ingle i nstruction stream, s ingle d ata stream — один поток инструкций, один поток данных). Подобные процессоры, поддерживающие инструкции для работы с короткими векторами, могут быть отнесены к группе SIMD ( англ. s ingle i nstruction stream, m ultiple d ata streams — один поток инструкций, несколько потоков данных). Многоядерные суперскалярные процессоры относят к группе MIMD ( англ. m ultiple i nstruction streams, m ultiple d ata streams — несколько потоков инструкций, несколько потоков данных).
История
Первой в мире суперскалярной ЭВМ была CDC 6600 (1964 года), разработанная Сеймуром Крэем . В СССР первой суперскалярной ЭВМ считался компьютер « Эльбрус », разработка которого велась в 1973—1979 годах в ИТМиВТ . Основным структурным отличием Эльбруса от CDC 6600 (кроме совершенно другой видимой программисту системы команд — стекового типа) являлось то, что все узлы в нём были конвейеризованы, как в современных суперскалярных микропроцессорах . На основании этого факта Б. А. Бабаян заявлял о приоритете советских ЭВМ в вопросе построения суперскалярных вычислительных машин, однако уже следующая за CDC 6600 машина фирмы Control Data , ( ), созданная в 1969 году, за 4 года до начала разработки « Эльбруса », имела конвейеризацию исполнительных устройств. Кроме того, несколько ранее (в 1967 году) фирмой IBM была выпущена машина IBM 360/91 , использующая внеочередное исполнение , переименование регистров и конвейеризацию исполнительных устройств .
Первыми промышленными суперскалярными однокристальными ( англ. single-chip ) микропроцессорами стали микропроцессор MC88100 1988 года фирмы Motorola , микропроцессор Intel i960CA 1989 года и микропроцессор 29050 серии 1990 года. Первым же коммерчески широкодоступным суперскалярным микропроцессором стал i960 , вышедший в 1988 году. В 1990-е годы основным производителем суперскалярных микропроцессоров стала фирма Intel.
Все процессоры общего назначения, разработанные примерно с 1998 года, кроме процессоров, используемых в , во встраиваемых системах и в устройствах, питаемых от батареек , являются суперскалярными.
Процессоры Pentium с микроархитектурой P5 ( ) стали первыми суперскалярными процессорами архитектуры x86 . Микропроцессоры Nx586 , P6 Pentium Pro и AMD K5 стали первыми суперскалярными процессорами, преобразующими инструкции x86 во внутренний код, который затем исполняли.
Описание
Если в процессе работы процессора несколько инструкций, обрабатываемых конвейером , независимы , то ядро может выполнить их одновременно. В суперскалярных системах решение о запуске инструкции на исполнение принимает само ядро процессора, что требует много ресурсов. В более поздних системах, таких, как Эльбрус -3 и Itanium , используется статпланирование, то есть решение о том, какие инструкции выполнять одновременно, принимает компилятор ; компилятор находит независимые инструкции и объединяет их в одну длинную инструкцию (архитектура VLIW ).
Узел суперскалярного процессора, называемый диспетчером инструкций ( англ. instruction dispatcher , ID ), ответственен:
- за чтение инструкций из памяти;
- за принятие решений о том, какие инструкции могут быть выполнены одновременно;
- за распределение инструкций между несколькими функциональными узлами процессора.
Узел ID должен распределять инструкции между узлами так, чтобы узлы работали без простоев. Первые суперскалярные процессоры имели по два АЛУ и по одному FPU . Современные процессоры содержат больше узлов. Например, процессор PowerPC 970 содержит четыре АЛУ, два FPU и два узла SIMD . Если узел ID не справится со своей работой (не нагрузит работой все узлы), производительность суперскалярного процессора будет не лучше производительности скалярного процессора .
Суперскалярный процессор, обычно, способен выполнять больше одной ( ). При этом одна только способность обрабатывать несколько инструкций одновременно не делает архитектуру суперскалярной, так как одновременности можно добиться и другими методами: применением конвейера , применением нескольких ядер и/или применением нескольких процессоров .
Реализации
Процессоры , поддерживающие суперскалярность:
Архитектура | Первая реализация | Год | Разработчик | Другие разработчики суперскалярных ЭВМ на данной архитектуре | Примечание |
---|---|---|---|---|---|
CDC 6600 | CDC 6600 | 1964 | Control Data Corporation | Конвейер исполнения команд, несколько исполнительных устройств (но не конвейеризованных). | |
CDC 7600 | 1969 | Control Data Corporation | Полная конвейеризация — и исполнения команд, и самих исполнительных устройств. | ||
IBM 360/91 | 1967 | IBM | Полная конвейеризация с динамическим переименованием регистров, исполнением команд не в очередности их поступления и предсказанием переходов | ||
Эльбрус | Эльбрус -1 | 1979 | ИТМиВТ | ||
i960 | i960 | 1988 | Intel | ||
1990 | AMD | ||||
SPARC | SuperSPARC | 1992 | Sun Microsystems | Fujitsu , МЦСТ | |
,m68k | MC88110 ,MC68060 | 1992 | Motorola | ||
x86 | Pentium | 1993 | Intel | AMD , VIA | |
MIPS | R8000 | 1994 | MIPS Technologies | Toshiba | |
ARM | ARM |
Ускорение вычислений
В суперскалярных вычислительных машинах используется ряд методов для ускорения вычислений, характерных прежде всего для них, однако такие методики могут использоваться и в других типах архитектур:
- внеочередное исполнение ;
- переименование регистров ;
- объединение нескольких команд в одну.
Также используются общие методики увеличения производительности, применяемые и в других типах вычислительных машин:
- предсказатель переходов ;
- кэш ;
- конвейер (используется во всех современных суперскалярах);
- одновременая многопоточность (SMT) — одновременное исполнение инструкций нескольких независимых потоков в каждом такте на одновременно работающих конвейерах суперскалярного процессора.
Скалярные и суперскалярные процессоры
При выполнении одной инструкции скалярным процессором обрабатывается одно или два числа ( скаляра ). При выполнении одной инструкции векторным процессором обрабатывается несколько чисел ( вектор ). При единовременном выполнении нескольких инструкций суперскалярным процессором одновременно обрабатывается несколько чисел (несколько скаляров).
Ограничения
Увеличение производительности суперскалярных процессоров ограничивается следующими факторами:
- степенью внутреннего параллелизма инструкций;
- сложностью поиска зависимостей между инструкциями и затратами времени на этот поиск; сложностью схемы переименования регистров и затратами времени на переименование;
- обработкой инструкций ветвления.
Возможность одновременного выполнения инструкций зависит от степени внутреннего параллелизма инструкций — от того, насколько одни инструкции зависят от других. Одна инструкция зависит от другой инструкции, если использует ресурсы, также используемые другой инструкцией, или использует результат работы другой инструкции. Одновременное выполнение возможно в случаях, когда инструкции программы не зависят друг от друга. Например, инструкция «
a = b + c
» и инструкция «
d = e + f
» могут быть выполнены одновременно, так как результат вычисления ни одной из них не зависит от результата вычисления другой. Инструкция «
a = b + c
» и инструкция «
b = e + f
» взаимозависимы и не могут выполняться одновременно, так как результат их выполнения зависит от того, какая из них выполнится первой.
При увеличении количества одновременно выполняемых инструкций быстро увеличиваются затраты времени на проверку их взаимозависимостей, и эти затраты не должны превысить один такт. Время тратится на работу логических вентилей , реализующих схему проверки, и на передачу данных между вентилями. Уменьшить задержки не удаётся даже изменением технологического процесса . , сложность схем и задержки сигнала на вентилях не позволяют повысить количество одновременно переданных инструкций выше восьми.
См. также
- Скалярный процессор .
- Векторный процессор .
- Многоядерный процессор .
- Многопроцессорность .
- (англ.) .
Примечания
- . Parallel.ru - Информационно-аналитический центр по параллельным вычислениям:. Дата обращения: 16 августа 2009. 26 февраля 2012 года.
- См. от 4 января 2012 на Wayback Machine .
Литература
- Modern Processor Design: Fundamentals of Superscalar Processors. 2004. ISBN 0070570647 .
- Э.Таненбаум . = Structured Computer Organization. — 5-е изд. — СПб. : Питер, 2007. — С. 81—83. — 848 с. — (Классика Computer Science). — ISBN 5-469-01274-3 . от 11 января 2012 на Wayback Machine
- David A. Patterson , John L. Hennessy . . — Morgan Kaufmann, 2011. — 856 p. — ISBN 012383872X . (англ.) — Глава 3, стр. 148—247
- , Superscalar Microprocessor Design , Prentice-Hall, 1991, ISBN 0-13-875634-1 .
- Sorin Cotofana, Stamatis Vassiliadis, «On the Design Complexity of the Issue Logic of Superscalar Machines», 1998: 10277-10284.
- , «The i960CA SuperScalar Implementation of the 80960 Architecture», IEEE 1990, стр. 232—240.
- , et al., "Performance Enhancements in the Superscalar i960MM Embedded Microprocessor, " ACM Proceedings of the 1991 Conference on Computer Architecture (Compcon) , 1991, стр. 4-7.
- 2020-03-07
- 1