Более старая и элегантная интерпретация SIMD называется векторной архитектурой, она тесно связана с продукцией компании Cray Computers. Здесь опять наблюдается довольно сильная связь с проблемами широкого применения параллелизма на уровне данных. Вместо использования 64 АЛУ, выполняющих одновременно 64 сложения, подобно старым матричным процессорам, векторная архитектура конвейеризирует АЛУ, чтобы получить высокую производительность при меньших затратах. Основная философия векторной архитектуры заключается в сборе элементов данных из памяти, помещении их в определенном порядке в большой набор регистров, проведении их последовательной обработки в регистрах, а затем в записи результатов обратно в память. Основным свойством векторных архитектур является набор векторных регистров. Поэтому векторная архитектура может иметь 32 векторных регистра, в каждом из которых 64 64-разрядных элемента.
Наиболее ярким является то, что векторный процессор существенно сокращает диапазон инструкций, выполняя только шесть инструкций против почти 600 для MIPS. Это сокращение получается из-за того, что векторные операции работают с 64 элементами, а также из-за того, что верхние команды, которые составляют на MIPS почта половину цикла, в векторном коде отсутствуют. Не удивительно, что это уменьшает количество извлекаемых инструкций и время их выполнения, экономя энергию.
Еще одним важным различием является частота конфликтов конвейера (см. главу 4). В простом MIPS-коде каждая инструкция a add должна ждать выполнения инструкции mul .d, и каждая инструкция s d должна ждать выполнения инструкции add. d. В векторном процессоре каждая векторная инструкция будет приостанавливаться только для первого элемента каждого вектора, а затем последующие элементы будут ровно следовать вниз по конвейеру. Таким образом, задержки конвейера требуются только один раз для каждой векторной операции, а не один раз для каждого векторного элемента. В этом примере частота задержек конвейера в MIPS будет примерно в 64 раза выше, чем в VMIPS. Задержки конвейера могут быть сокращены в MIPS путем использования развертывания цикла (см. главу 4). Но большую разницу в диапазоне инструкций сократить не удастся.
Уточнение. В предыдущем примере цикл точно совпадает с длиной вектора. Когда циклы короче, векторная архитектура использует регистр для ограничения длины векторной операции. Когда циклы длиннее, мы добавляем отслеживающий код, чтобы итерационно обработать всю векторную графику. Этот последний процесс называют разрывом итерации (strip mining).
Источник: