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; просмотров: 2293;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.005 сек.