Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Глава 16. Типы и форматы команд.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
95.74 Кб
Скачать

Глава 16. Типы и форматы команд

Несмотря на различие в системах команд разных компьютеров, основные типы команд в них аналогичны. Это:

команды пересылки данных;

команды арифметической и логической обработки;

команды работы со строками;

команды SIMD (векторные команды);

команды преобразования данных;

команды ввода-вывода;

команды управления потоком команд.

16.1. Команды пересылки данных

Это наиболее распространенный тип машинных команд. В таких командах долж­на содержаться следующая информация:

адреса источника и получателя операндов — адреса ячеек оперативной памяти, номера реги­стров ядра процессора или информация о том, что операнды расположены в стеке;

длина подлежащих пересылке данных (обычно в байтах или словах), заданная явно или косвенно;

способ адресации каждого из операндов, с помощью которого в соответствии с содержимым ад­ресной части команды может быть сформирован адрес операнда.

Рассматриваемая группа команд обеспечивает передачу информации между ядром процессора и оперативной памятью, внутри ядра процессора и между ячейками оперативной памяти. Пересылочные операции внутри ядра процессора имеют тип «регистр-регистр». Передачи между ядром про­цессора и оперативной памятью относятся к типу «регистр - оперативная память», а пересылки в оперативной памяти — к типу «оперативная память - оперативная память».

16.2. Команды арифметической и логической обработки

В данную группу входят команды, обеспечивающие арифметическую и логическую обработку данных в различных формах их представления. Для каждой формы представления чисел в архитектуре обычно предусматривается некий стандарт­ный набор операций. Как правило, это: сложение; вычитание; умножение; деление; конъюнкция; дизъюнкция; неэквивалентность и некоторые другие в зависимости от области применения компьютера.

Помимо вычисления результата выполнение арифметических и логических операций сопровождается формированием в АЛУ признаков (флагов), характе­ризующих этот результат. Наиболее часто фиксируются такие признаки, как:

Z (Zero) — нулевой результат;

N (Negative) — отрицательный результат;

V (over-flow) — переполнение разрядной сетки;

С (Carry) — наличие переноса.

16.3. Команды для работы со строками

Для работы со строками в архитектуре обычно предусматриваются команды, обеспечива­ющие перемещение, сравнение и поиск строк. Во многих компьютерах перечислен­ные операции выполняются программно с использованием процедур.

16.4. 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-команд очень обширный. Это:

обычные арифметические команды для обработки векторов (целых чисел разных форматов, чисел с плавающей точкой одинарной и удвоенной точности);

скалярное произведение векторов;

преобразования чисел из одних форматов в другие;

чтение векторов из оперативной памяти в векторный регистр;

запись содержимого векторного регистра в оперативную память;

обмен содержимым между векторными регистрами т.п.