SIMD микроархитектура - PullRequest
       90

SIMD микроархитектура

0 голосов
/ 20 июня 2019

Я пытаюсь понять разницу между архитектурой Vector Processor и SIMD, такими как ARM NEON.Я знаю, что есть разница в конфигурируемости длины векторных регистров между этими двумя.Однако я не уверен, как их микроархитектура может отличаться?Это тот случай, когда для SIMD-машин нам нужно иметь столько процессорных блоков, сколько число элементов работает с каждой инструкцией?Или, точно так же, как векторные процессоры, мы можем иметь меньшее количество единиц обработки, чем количество элементов данных в векторном регистре, и нам просто нужно использовать секвенсор для выполнения команды за несколько циклов?

Спасибо

Ответы [ 2 ]

2 голосов
/ 21 июня 2019

Вы можете реализовать коротко-векторное SIMD (например, NEON или x86 SSE) с более узким оборудованием, которое должно декодировать каждую инструкцию, например, в 2 внутренние операции.

Intel сделала это с128-битные векторы SSE от Pentium 3 до Pentium M, причем Pentium 4 и Core 2 стали первыми микроархитектурами, имеющими полноразмерные исполнительные блоки SIMD.

Но декодирование не зависит от данных, поэтому вы не будетенужен полный секвенсор микрокода.

1 голос
/ 21 июня 2019

разница между векторным процессором и SIMD

Я не знаю вашего определения векторного процессора, но wikipedia говорит, что SIMD - один из них.

Является ли это случаем, что для машин SIMD нам нужно иметь столько блоков обработки, сколько число элементов, на которых работает каждая инструкция?

Некоторые ЦП разделяют регистр SIMD на части и обрабатываютих самостоятельно.Intel Pentium III разделяет 128-битные операции SSE на 64-битные фрагменты, AMD Zen делает то же самое с 256-битными инструкциями AVX, разбивает их на 128-битные фрагменты.

необходимо использовать секвенсор длявыполнить инструкцию за несколько циклов?

То, что они разделены, не означает, что они выполняются последовательно.Все современные процессоры, включая ARM, имеют несколько исполнительных блоков (EU) на ядро.Микрооперации могут выполняться параллельно в разных ЕС, но эти ЕС не равны.Поскольку я упоминал AMD Zen, вот ссылка .Ядро может начать выполнять до 10 различных микроопераций за цикл: 4 целых числа (все могут добавлять или побитовые, 2 из них могут умножаться / делиться, 2 из них могут ветвиться), 2 целочисленных загрузки / сохранения, 4 128-битныхоперации с плавающей запятой (две могут добавлять, две другие могут умножаться, две могут шифровать AES).Он может завершить до 16 инструкций / цикл, 8 целых чисел, 8 операций с плавающей запятой.Для разных микроопераций требуется разное количество циклов.

...