Суперскалярность

Конструкция суперскалярного процессора представляет собой форму параллельных вычислений, называемую "Параллелизм на уровне инструкций", внутри одного центрального процессора, что позволяет выполнять больше работы с той же тактовой частотой. Это означает, что центральный процессор выполняет более одной инструкции в течение тактового цикла, выполняя несколько инструкций одновременно (так называемая диспетчеризация инструкций) на дублирующих функциональных блоках. Каждый функциональный блок - это просто ресурс выполнения внутри ядра процессора, например, арифметический логический блок (АЛУ), блок с плавающей запятой (FPU), битовый сдвиг или множитель.

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

Техника суперскаляра поддерживается несколькими особенностями ядра процессора:

  1. Инструкции поступают из списка заказанных инструкций.
  2. Аппаратное обеспечение ЦПУ может определить, какие инструкции имеют зависимости от данных.
  3. Может прочитать несколько инструкций за один тактовый цикл

Каждая команда, выполняемая скалярным процессором, изменяет один или два элемента данных за раз, но каждая команда, выполняемая векторным процессором, обрабатывает множество элементов данных одновременно. Скалярный процессор - это смесь двух:

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

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

Дизайн процессора Superscalar заботится о повышении точности работы диспетчера инструкций и позволяет ему постоянно держать несколько функциональных блоков занятыми. По состоянию на 2008 год все ЦП общего назначения являются суперскалярными, типичный суперскалярный ЦП может включать до 4-х АЛУ, 2-х FPU и 2-х SIMD блоков. Если диспетчер не сможет удержать все блоки занятыми, производительность ЦП будет ниже.

Плата процессора параллельного компьютера CRAY T3e с четырьмя суперскалярными альфа-процессорамиZoom
Плата процессора параллельного компьютера CRAY T3e с четырьмя суперскалярными альфа-процессорами

Простой суперскалярный трубопровод. При получении и отправке двух инструкций за один цикл можно выполнить максимум две инструкции за один цикл.Zoom
Простой суперскалярный трубопровод. При получении и отправке двух инструкций за один цикл можно выполнить максимум две инструкции за один цикл.

Ограничения

Повышение производительности процессора Superscalar ограничивается двумя вещами:

  1. Уровень встроенного параллелизма в списке инструкций
  2. Сложность и временные затраты диспетчера и проверка зависимости данных.

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

Независимо от скорости движения отправителя, существует практическое ограничение на то, сколько инструкций может быть отправлено одновременно. В то время как аппаратные усовершенствования позволят использовать больше функциональных блоков (например, АЛУ) на ядро процессора, проблема проверки зависимостей инструкций увеличивается до такого предела, что достижимый предел суперскалярной диспетчеризации несколько мал. -- Вероятно, порядка пяти-шести одновременно отправляемых инструкций.

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

  • Одновременная многопоточность: часто сокращается как SMT, является методом повышения общей скорости суперскалярных процессоров. SMT позволяет нескольким независимым потокам выполнения лучше использовать ресурсы, имеющиеся в современном суперскалярном процессоре.
  • Многоядерные процессоры: суперскалярные процессоры отличаются от многоядерных тем, что несколько избыточных функциональных блоков - это не целые процессоры. Одиночный суперскалярный процессор состоит из сложных функциональных блоков, таких как АЛУ, целочисленный множитель, целочисленный сдвиг, единица с плавающей точкой (FPU) и т.д. Существует несколько версий каждой функциональной единицы, что позволяет параллельно выполнять множество инструкций. Это отличается от многоядерных процессоров, которые одновременно обрабатывают инструкции из нескольких потоков, по одному потоку на ядро.
  • Трубопроводные процессоры: суперскалярные процессоры также отличаются от трубопроводных процессоров, где несколько инструкций могут одновременно выполняться на разных стадиях.

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

Связанные страницы

Вопросы и ответы

В: Что такое суперскалярная технология?


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

В: Как работает суперскалярная технология?


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

В: В чем разница между скалярными и векторными процессорами?


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

В: Какую роль играет точный диспетчер инструкций в суперскалярном процессоре?


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

В: В каком году все обычные процессоры стали суперскалярными?


О: Все обычные CPU стали суперскалярными в 2008 году.

В: Сколько ALU, FPU и SIMD блоков может быть в обычном процессоре?


О: В обычном процессоре может быть до 4 ALU, 2 FPU и 2 SIMD.

AlegsaOnline.com - 2020 / 2023 - License CC3