- •4. Модель прикладного программирования.
- •4.1. Стек регистров
- •4.1.1. Управление стеком регистров
- •4.1.2. Инструкции стека регистров
- •4.2. Инструкции целочисленного вычисления
- •4.2.1. Арифметические инструкции
- •4.2.2. Логические инструкции
- •4.2.3. 32-Битные адреса и целые
- •4.2.4. Инструкции битовых полей и сдвигов
- •4.2.5. Большие константы.
- •4.3. Инструкции сравнения и предикация
- •4.3.1. Предикация
- •4.3.2. Инструкции сравнения
- •4.3.3. Типы сравнения
- •4.3.4. Передачи предикатных регистров
- •4.4. Инструкции доступа к памяти
- •4.4.1. Инструкции загрузки
- •4.4.2. Инструкции сохранения
- •4.4.3. Семафорные инструкции
- •4.4.4. Спекуляция по управлению
- •4.4.4.1. Концепции спекуляции по управлению
- •4.4.4.2. Спекуляция по управлению и инструкции
- •4.4.4.3. Спекулятивность по управлению и сравнения
- •4.4.4.4. Спекуляция по управлению без восстановления
- •4.4.4.5. Контроль операционной системы над откладыванием исключений
- •4.4.4.6. Сливание и заливание регистров
- •4.15. Инструкции, связанные со спекуляцией по управлению
- •4.4.5. Спекуляция по данным
- •4.4.5.1. Концепция спекуляции по данным
- •4.4.5.2. Спекуляция по данным и инструкции
- •4.4.5.3. Детализирование функциональности структуры alat и инструкции связанные с этим.
- •4.4.5.3.1. Выделение и проверка элементов alat
- •4.4.5.3.2. Аннулирование элементов alat.
- •4.4.5.4. Комбинирование спекуляций по управлению и по данным
- •4.4.5.5. Окончания инструкций для управления alat
- •4.4.6. Управление иерархией памяти и непротиворечивость
- •4.4.6.1 Иерархия памяти и подсказки
- •4.4.6.2. Согласованность памяти
- •4.4.7. Упорядочивание доступа к памяти
- •4.5. Инструкции переходов
- •4.5.1. Поддержка модульно планируемых циклов.
- •4.5.2. Подсказки предсказаний переходов.
- •4.5.3. Инструкции предсказания переходов
- •4.6. Инструкции мультимедиа.
- •4.6.1. Параллельная арифметика
- •4.6.2. Параллельные сдвиги
- •4.6.3. Преобразование данных
- •4.7. Пересылки регистрового файла
- •4.8. Символьные строки и подсчет совокупности
- •4.8.1. Символьные строки
- •4.8.2. Подсчет совокупности
- •4.9. Передача уровня привилегий
4.6.2. Параллельные сдвиги
Инструкция параллельного сдвига влево (pshl) индивидуально сдвигает каждый элемент первого источника на величину, содержащуюся в общем регистре, либо заданную непосредственным значением. Инструкция параллельного сдвига вправо (pshr) выполняет индивидуальный арифметический сдвиг вправо каждого элемента первого источника на величину, содержащуюся в общем регистре, либо заданную непосредственным значением. Инструкция(pshr.u) выполняет сдвиг вправо без учета знака. В табл. 4.30 собраны типы инструкций сдвига.
Табл. 4.30. Инструкции параллельного сдвига
Мнемоника |
Действие |
1-байт |
2-байт |
4-байт |
pshl |
Параллельный сдвиг влево |
|
х |
х |
pshr |
Параллельный сдвиг вправо с учетом знака |
|
х |
х |
pshr.u |
Параллельный сдвиг вправо без учета знака |
|
х |
х |
4.6.3. Преобразование данных
Инструкция правого смешивания (mix.r) помещает в приемник чередующиеся четные элементы из обоих источников. Инструкция левого смешивания (mix.l) чередует нечетные элементы. Инструкция распаковки младших частей (unpack.l) чередует в приемном регистре младшие 4-байтовые части источников. Инструкция распаковки старших частей (unpack.h) чередует старшие 4-байтовые части источников. Инструкции упаковки (pack.sss, pack.uss) преобразует 32-битовые или 16-битовые элементы в 16-битовые или 8-битовые элементы соответственно. Младшие значащие части больших элементов обоих источников записываются в младшие элементы приемного регистра. Инструкцияpack.sssобрабатывает извлекаемые элементы как значения со знаком и применяет к ним знаковое насыщение. Инструкция pack.ussприменяет насыщение без знака. Инструкция мультиплексирования (mux) копирует индивидуальные 2-байтовые или 1-байтовые элементы источника в произвольные позиции приемника, согласно указанной функции. Для 2-байтных элементов все возможные перестановки задаются с помощью 8-битного непосредственного значения. Для 1-байтных элементов функция копирования выбирает один из пяти вариантов: перестановка в обратном порядке (reverse), перемешивание (mix), тасование (shuffle), чередование (alternate), ретрансляция (broadcast). Табл. 4.31 описывает различные типы инструкций преобразования данных.
Табл. 4.31. Инструкции преобразования данных
Мнемоника |
Действие |
1-байт |
2-байт |
4-байт |
mix.l |
Чередует нечетные элементы из обоих источников |
х |
х |
х |
mix.r |
Чередует четные элементы из обоих источников |
х |
х |
х |
Mux |
Произвольное копирование отдельных исходных элементов |
х |
х |
|
pack.sss |
Свернуть длинные элементы в короткие со знаковым насыщением |
|
х |
х |
pack.uss |
Свернуть длинные элементы в короткие с насыщением без знака |
|
х |
|
unpack.l |
Чередует младшие элементы из обоих источников |
х |
х |
х |
unpack.h |
Чередует старшие элементы из обоих источников |
х |
х |
х |