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

Плата CRAY T3E-136/ac

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

Исторически первыми суперскалярными процессорами были советские Эльбрусы[1]

Процессоры, поддерживающие суперскалярность:

§  Pentium, AMD Duron, AMD ATHLON и другие более поздние процессоры с архитектурой x86

§  Последние процессоры с архитектурами SPARC, ARM, MIPS

Появление в структуре процессора более одного конвейера делает этот процессор суперскалярным. Как правило, в суперскалярных процессорах в первую очередь увеличивают количество целочисленных конвейеров, так как статистика показывает, что в обычных пакетах прикладных программ для ПЭВМ около 80% команд - целочисленные, 15% - команды условных переходов, и только небольшой процент команд является командами с плавающей запятой.

НЕ нашли? Не то? Что вы ищете?

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

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

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

Процессоры, использующие первую технику, называются суперскалярными. К примеру, сугубо теоретически, по числу исполнительных устройств, Pentium 4 может выполнять семь инструкций за такт, а Athlon 64 - девять. 

Суперконвеерные процессоры

Процессоры в которых для повышения производительности повышается тактовая частота.

Гиперпотоковые и мультиядерные процессоры

В процессорах Pentium 4 (начиная с частоты 3,06 ГГц) и Хеоп применяется гиперпотоковая (hyperthreading) технология: один физический процессор одновременно может выполнять два потока инструкций х86. Для фон-неймановской машины это означает, что физический процессор (микросхема, устанавливаемая в сокет) имеет два комплекта архитектурных (прикладных и системных) регистров. В каждом комплекте имеется, естественно, свой указатель инструкций, «идущий» по своему потоку. Таким образом, речь идет о двух логических процессорах, физически расположенных на одном кристалле микросхемы. Эти логические процессоры совместно используют ряд общих микроархитектурных блоков физического процессора (вторичный кэш, исполнительные блоки арифметико-логического устройства). Такое разделение позволяет повысить эффективность функционирования исполнительных блоков: один даже «гиперконвейер» Pentium 4, исполняющий инструкции х86, плотно загрузить их работой не может. Конечно, логические процессоры не являются полностью независимыми — иногда приходится ожидать освобождения ресурса, занятого соседом.

Следующий шаг в этом направлении — мультиядерные процессоры, в которых на одном кристалле объединены общей шиной несколько функционально-законченных процессоров. В них каждое ядро обладает собственным кэшем L2 (и, естественно, кэшем данных L1 и кэшем трасс). Размер кэша L2 каждого ядра может достигать 1-2 Мбайт. Интерфейс системной шины у двух ядер может быть как общим, так и раздельным. Двухъядерный процессор, предназначенный для использования в относительно небольших системах (размером до четырех ядер), фактически, является двумя отдельными процессорами, каждый со своим интерфейсным блоком. Их интерфейсные сигналы объединяются в общую системную шину на системной плате. Процессоры для более крупных систем содержат общий блок интерфейса системной шины, поскольку объединение на одной шине интерфейсов более чем двух процессоров для высокоскоростных шин вызывает ряд трудностей.

Заметим, что мультипроцессорные кристаллы в RISC-архитектурах начали применять намного раньше, причем в более мощных вариантах (с интегрированным контроллером памяти).