«Вектор» и «SIMD» означают одно и то же, но в обычном использовании термины обычно указывают на разные подходы к реализации. Это различие происходит от истории терминов в вычислительной технике. Наборы команд "vector" и "SIMD" основаны на концепции выполнения одной и той же операции над несколькими элементами данных в случаях, когда нет никаких зависимостей данных в пределах последовательности операций. Когда нет никаких зависимостей данных, операции могут выполняться в любом порядке, в том числе одновременно.
Исторически «вектор» является более старым термином, а «векторные» команды рассматриваются как отдельные инструкции, выполняющие некоторую операцию на последовательности элементов путем конвейерной передачи операций через один функциональный блок. «Единый функциональный блок» не имеет ничего общего с векторизацией как концепцией - именно так были реализованы векторные машины, когда транзисторы были очень дорогими (с середины 1960-х до середины 1990-х). Более поздние «векторные» архитектуры используют одну векторную инструкцию для конвейерной работы между несколькими функциональными блоками. Например, процессор NE C SX-Aurora TSUBASA имеет 256-элементные векторные регистры и 32 векторных функциональных блока, при этом каждый 256-элементный вектор отправляет 8 элементов в каждую векторную функциональную единицу.
Я не знаю когда впервые использовался термин «SIMD», но я не припоминаю, чтобы он использовался в обычном режиме до середины 1990-х годов, когда впервые были разработаны инструкции «SIMD» как средство для выполнения нескольких параллельных операций с меньшими размерами данных в пределах существующие ширины регистра. Например, набор команд Intel MMX (1997) позволяет процессору выполнять независимые 8/16/32-битные операции над содержимым 64-битного регистра. Более поздние наборы инструкций SIMD (SSE и т. Д. c) предоставляют новые регистры, которые шире любого поддерживаемого типа данных, что позволяет работать с независимыми полями шириной до 64 бит в регистре. Конструкция набора команд поддерживает одновременное выполнение операций по всей ширине регистра SIMD, но это не требуется. Например, AMD выпустила несколько поколений процессоров, которые поддерживают инструкции для более широких регистров SIMD, чем параллелизм функциональных блоков. Например, процессоры AMD первого поколения EPY C поддерживают 256-битные инструкции SIMD, но они распределяются по функциональным блокам шириной 128 бит в течение двух последовательных циклов. Масштабируемые векторные расширения ARM дополнительно развязывают понятия ширины вектора и числа параллельных функциональных блоков.
Инструкции «REP» в архитектуре x86 предоставляют ограниченную возможность обеспечения вектороподобных функций для «строковых инструкций» и "вход / выход" инструкции. Они не являются общим механизмом, и я уверен, что многие разработчики процессоров Intel могли бы исключить их из набора инструкций. Некоторые интересные исторические заметки в обсуждении на форуме https://software.intel.com/en-us/forums/intel-fortran-compiler/topic/275765