Сравнение векторных и скалярных инструкций

Векторные инструкции обладают рядом важных свойств по сравнению с обычной архитектурой набора инструкций, называемой в данном контексте скалярной архитектурой:

— Одной векторной инструкцией определяется большой объем работы, она эквивалентна выполнению целого цикла. Необходимый диапазон извлекаемых и декодируемых инструкций существенно сужается.

— За счет использования векторных инструкций компилятор или программист показывают, что вычисление каждого результата в векторе независимо от вычисления других результатов в этом же векторе, поэтому оборудованию не нужно вести проверку на наличие конфликтов данных внутри векторной инструкции.

— Векторные архитектуры и компиляторы прославились тем, что по сравнению с многопроцессорными MIMD-системами они позволяют существенно облегчить создание эффективных приложений при наличии параллелизма на уровне данных.

— Проверку на наличие конфликтов данных оборудованию нужно вести только лишь между двумя векторными инструкциями, и делать это для каждого векторного операнда, а не для каждого элемента внутри векторов. Сокращение проверок также ведет к экономии энергии.

— Векторные инструкции, обращающиеся к памяти, имеют известную схему обращения. Если все элементы векторов примыкают друг к другу, то извлечение вектора из набора банков памяти с развитым чередованием адресов работает очень эффективно. Поэтому потери на латентность при обращении к оперативной памяти возникают только один раз на вектор, а не на каждое слово в векторе.

— Поскольку весь цикл заменяется векторной инструкцией с предопределенным поведением, конфликты управления, которые, как правило, будут возникать из-за условных переходов в цикле, отсутствуют.

— Экономия на диапазоне инструкций и на проверке наличия конфликтов плюс эффективное использование диапазона памяти дают векторной архитектуре преимущества по сравнению со скалярной архитектурой в мощности и энергопотреблении.

По этим причинам векторные операции могут проводиться быстрее, чем последовательность скалярных операций с одинаковым количеством элементов данных, и разработчики имеют вполне серьезные основания для включения векторных блоков.





Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: