Так как никто не пришел с ответом, я думаю, что понял это в то же время.
скалярный процессор - это обычный процессор, выполняющий скалярные команды, которые работают над одним номером за раз. Ничего особенного.
векторный процессор С другой стороны использует векторные инструкции, которые должны работать на несколько номеров одновременно. Существуют специальные, более широкие регистры, предназначенные для этой цели (например, 128-битный xmm*, в который могут быть упакованы несколько значений, например, 4 32-битных целых числа; AVX-512 вводит 512-битные регистры, которые являются самыми широкими, которые я мог найти). Vector ops сделаны специальными блоками в обработчике которые сделаны для той цели. Типичный пример векторного процессора будет ГПУ - это не только векторных вычислений.
Superscalar - термин, используемый для обозначения конкретной оптимизации, позволяющей скалярным инструкциям выполняться параллельно, на различные" обычные " исполнительные единицы (например, несколько Alu). Она делится на несколько "потоков" (я только что сделал этот термин придумал), которые выполняются одновременно.
Так чем же они отличаются от своих векторных аналогов? скалярные инструкции не предназначены для выполнения таким образом. Существует множество возможных опасностей, которые могут возникнуть и предотвратить полностью параллельное выполнение, такие как данные или процедурные зависимости. В таком случае, исполнение этой инструкции придется ждать, пока ее зависимости будут удовлетворены, приостановив выполнение этого "потока". ЦП должен заботиться обо всех зависимостях, чтобы избежать повреждения данных, поэтому особое внимание должно быть уделено оптимизации выполнения таким образом.
Он также не вводит никаких новых инструкций-все выглядит просто нормальной работой скалярного процессора. С другой стороны, векторные процессоры имеют специальные инструкции для векторных операций. Главное отличие состоит в том, что для векторных ops программист (или, скорее, компилятор) должен позаботиться о данных, и поскольку нет никакого вмешательства в разные регистры одновременно (помните, что все значения упакованы в широкие регистры), различные опасности избегаются. С другой стороны, суперскалярных процессоров делают все возможное, чтобы выяснить, какие инструкции являются независимыми друг от друга и выполнять их одновременно.
обратите внимание, как я никогда не говорил, что любая из категорий взаимоисключающие? Это не так. Векторные единицы измерения будут выполнять векторные инструкции, а процессор попытается найти наилучший способ распараллеливания скалярных. Фактически, все современные процессоры поддерживают обе векторные инструкции (SSE*, 3DNow!, AVX,...) и скалярных (х86), которая будет выполнена в "суперскалярной" способом.