Инструкции SIMD и VLIW - это одно и то же?

В чем именно разница между SIMD (одна инструкция, несколько данных) и VLIW (очень длинное слово инструкции)? Одно является подмножеством другого? Или это две совершенно разные вещи?

1 ответ

Совершенно несвязанные и ортогональные. Машина может иметь один или оба, или ни один из них. Инструкции SIMD могут быть добавлены к VLIW ISA в качестве расширения. (Но VLIW встроен в формат машинного кода и ISA.)

VLIW — это несколько инструкций в одном блоке, которые должны декодироваться вместе и выполняться без проверки опасностей/зависимостей между ними : для этого требуется компилятор, поэтому идея VLIW состоит в том, чтобы разгрузить часть этой работы по поиску параллелизма на уровне инструкций (ILP). ) компилятору.
Одним из самых известных примеров является Itanium ISA от Intel/HP. https://www.realworldtech.com/mckinley/ содержит некоторые подробности об этом и о микроархитектуре Merced первого поколения (которая была не очень хорошей). https://www.realworldtech.com/ev8-mckinley/5/ содержит более подробную информацию о микроархитектуре 2-го поколения McKinley.

VLIW — это один из способов предоставить некоторые возможности MIMD (множество инструкций для нескольких данных, выполнение разных действий с разными данными).

SIMD — это одна инструкция, выполняющая одно и то же действие с несколькими элементами данных , поэтому увеличение объема работы за такт через конвейер ЦП требует расширения только исполнительных блоков, а не всего конвейера. (Одна инструкция, несколько данных.) Проблема с большим количеством параллелизма данных может раскрыть это ЦП в форме SIMD, ILP и параллелизма на уровне потоков одновременно.

(например, матричное умножение или скалярное произведение, которое использует несколько аккумуляторов для создания отдельных цепочек зависимостей (ILP), где каждый аккумулятор представляет собой вектор из 4, 8 или 16 чисел с плавающей запятой (SIMD). И вы можете разделить эту работу между ядрами, поэтому вы можете получить, например, 2x 8 FMA за такт на ядро ​​на Skylake или Zen2.)

Другие вопросы по тегам