Суперскалярная процессор способен выполнять несколько команд в рамках одной программы параллельно. Это делается путем анализа потока команд, чтобы определить, какие инструкции не зависят друг от друга, и наличия нескольких исполнительных блоков в процессоре для одновременной работы (например, нескольких ALU ). Как правило, поддержка компилятора не требуется для оптимизации кода для суперскалярных процессоров, поскольку функциональные возможности, как правило, полностью реализованы на аппаратном уровне. 1
Векторный процессор содержит инструкции, специально предназначенные для работы на целых группах нескольких значений данных одновременно (называемые массивы или векторах ). Большинство современных высокопроизводительных процессоров содержат некоторую форму векторной обработки; например; SSE ADDPS
инструкции доступны в большинстве процессоров x86 вычисляет сумму двух векторов каждая из которых содержит четыре с одинарной точностью значения. Компилятор, разработчик и операционная система обычно требуют использования векторных инструкций, и не каждый процессор, даже в нынешних поколениях, поддерживает самые передовые векторные инструкции (например, процессоры Intel Celeron и Pentium, даже в Kaby Lake, не поддерживают AVX). ).
В этом ответе содержится дополнительная техническая информация о том, как современные процессоры достигают высокой производительности .
1 Альтернативный и довольно необычный подход к проектированию состоит в том, чтобы иметь несколько исполнительных блоков, но позволить компилятору определять, какие инструкции выдавать каждому исполнительному блоку для каждого тактового цикла. Это называется очень длинным командным словом и обычно встречается только на специализированных процессорах.