SIMD-команды
Название данного типа команд представляет собой аббревиатуру от Single Instruction Multiple Data — буквально «одна команда — много данных». В отличие от обычных команд, оперирующих двумя операндами, SIMD-команды обрабатывают сразу две группы операндов (в принципе их можно называть групповыми или векторными командами). Операнды таких команд обычно представлены в одном из упакованных форматов.
С 1992 года команды типа SIMD становятся неотъемлемым элементом архитектуры процессоров фирм Intel и AMD. Поводом послужило широкое распространение мультимедийных приложений. Видео, трехмерная графика и звук в компьютерах представляются большими массивами данных, элементы которых чаще всего обрабатываются идентично. Так, при сжатии видео и преобразовании его в формат MPEG один и тот же алгоритм применяется к тысячам разрядов данных. В трехмерной графике часто встречаются такие операции как: интерполирование и нормировка векторов, вычисление скалярного произведения векторов, интерполяция компонентов цвета и т. д. Включение SIMD-команд в архитектуру позволяет существенно ускорить подобные вычисления.
Первой SIMD-команды в архитектуру универсальных процессоров для персональных компьютеров ввела фирма Intel. Команды ММХ обеспечивали параллельную обработку 64-разрядных векторов, состоящих из упакованных целых чисел: 8 байтов; 4-х полуслов, 2-х слов; 1-го двойного слова. При выполнении арифметических операций каждое из чисел, входящих в группу, рассматривается как самостоятельное, без связи с соседними числами. Учитывая специфику обрабатываемой информации, команды ММХ реализовали так называемую арифметику с насыщением: если в результате сложения образуется число, выходящее за пределы отведенных под него позиций, оно заменяется наибольшим двоичным числом, которое в эти позиции помещается.
В дальнейшем были введены новые форматы векторных данных и, соответственно, расширены наборы команд для работы с этими векторными данными.
Первоначально были введены 128-разрядные векторные регистры XMM. В каждом таком регистре располагался вектор данных, состоящий: для целых чисел из: 16 байтов; 8-ми полуслов, 4-х слов; 2-х двойных слов; 1-го учетверенного слова; для чисел с плавающей точкой из: 4-х 32-разрядных чисел с плавающей точкой одинарной точности; 2-х 64-разрядных чисел с плавающей точкой удвоенной точности.
Следующим шагом стало введение 256-разрядных векторных регистров YMM (AVX). В каждом YMM-регистре располагался вектор данных, состоящий для чисел с плавающей точкой из 8-ми 32-разрядных чисел с плавающей точкой одинарной точности или 4-х 64-разрядных чисел с плавающей точкой удвоенной точности, или 2-х 128-разрядных данных целочисленного формата.
SIMD-команды имеются не только в архитектуре процессоров персональных компьютеров фирм Intel, AMD, но и в ряде других архитектур процессоров для высокопроизводительной обработки больших массивов данных.
Набор SIMD-команд очень обширный. Это:
обычные арифметические команды для обработки векторов (целых чисел разных форматов, чисел с плавающей точкой одинарной и удвоенной точности);
скалярное произведение векторов;
преобразования чисел из одних форматов в другие;
чтение векторов из оперативной памяти в векторный регистр;
запись содержимого векторного регистра в оперативную память;
обмен содержимым между векторными регистрами т.п.
Дата добавления: 2015-09-28; просмотров: 2472;