Специальные команды.
Включают три команды перемещения, четыре команды управления состоянием и три команды управления кэшированием.
Команды перемещения unpckhps (unpcklps)- выполняют параллельное перемещение старших (младших) двойных слов из операнда-источника и операнда-приемника в операнд-приемник. При этом два старших (младших) двойных слова операнда-источника становятся старшими (младшими) двойными словами в 64-разрядных элементах операнда-приемника, а два старших (младших) двойных слова операнда-приемника - младшими (старшими) двойными словами в 64-разрядных элементах операнда-приемника. Входным операндом (источником) могут выступать ХММ-регистр или 128-разрядная ячейка памяти, в качестве выходного операнда должен выступать ХММ-регистр.
Команда перемещения shufps – выполняет параллельное перемещение 32-разрядных упакованных операндов в соответствии с заданной маской. Команда имеет три операнда: входной, выходной и маску. Маска представляет собой непосредственное 8-разрядное значение, задающее порядок перемещения операндов. Младшие 4 бита маски указывают номера двух упакованных чисел приемника, которые становятся младшими упакованными значениями результата, а старшие 4 бита - номера упакованных чисел источника, которые становятся старшими упакованными значениями результата.
Рис. 3.10. Выполнение команды перемещения shufps XMM0,XMM1,27h
На рис. 3.10 представлена схема, поясняющая особенности выполнения команды shufps. Как видно из рис. 3.10, отсчет упакованных чисел начинается с нуля. Команду shufps можно использовать для произвольных манипуляций упакованными элементами.
Команда управления состояниемstmxcsr – сохраняет содержимое регистра управления-состояния в 32-разрядной ячейке памяти, которая является единственным операндом.
Команда управления состоянием ldmxcsr – загружает регистр управления-состояния содержимым 32-разрядной ячейки памяти, которая является единственным операндом.
Команда управления состоянием fxsave - сохраняет состояние ММХ- и SSE-расширения в область памяти размером в 512 байт. В качестве операнда выступает адрес области памяти.
Команда управления состоянием fxrstor - загружает сохраненное состояние ММХ- и SEE-расширения из области памяти размером 512 байт. В качестве операнда выступает адрес области памяти, который должен быть выровнен по 16-байтовой границе.
Команда управления кэшированием maskmovq – выполняет выборочное сохранение в памяти байтов упакованных данных ММХ-регистра. В качестве операнда-источника используется один из ММХ-регистров, а операндом-приемником служит область памяти, адрес которой задан в регистре EDI. Маска указывает, какие байты будут сохранены в памяти, и формируется из старших разрядов каждого байта, находящегося в ММХ-регистре.
Команда управления кэшированием movntq – записывает в память, минуя кэш, целочисленные упакованные данные в формате ММХ. Операндом-источником служит ММХ-регистр, а операндом-приемником - 64-разрядная ячейка памяти.
Команда управления кэшированием movnps - записывает в память, минуя кэш, упакованные числа с плавающей запятой в КВФ формате. Операндом-источником служит ХММ-регистр, а операндом-приемником - 128-разрядная ячейка памяти, адрес которой должен быть выровнен по 16-байтовой границе.
Дальнейшим прогрессом SSE-технологии явилось SSE2-расширение, добавившее 144 новых команды, которыепозволили оперировать с такими типами данных как:
• упакованные и скалярные числа с плавающей запятой в КВФ формате;
• упакованные и скалярные числа с плавающей запятой в ДВФ формате;
• упакованные и скалярные целые числа размером 128 бит.
Эта технология предназначена для разработки приложений трехмерной графики, обработки сигналов, кодирования и декодирования, распознавания речи и т. п. Кроме того, SSE2-команды позволяют:
• разрабатывать алгоритмы, в которых одновременно можно обрабатывать смешанные типы данных: упакованные числа с плавающей точкой в коротком формате и указанные с двойной точностью, а также целые 64- и 128-разрядные числа;
• работать с данными различной размерности: байтом, словом, двойным словом, учетверенным словом и двойным учетверенным словом.
Следующим шагом совершенствования SSE-технологи стало SSE3-расширение, которое добавило еще 13 новых команд. Все они, за исключением трех, используют ХММ-регистры и предназначены для повышения производительности при выполнении следующих операций:
• быстрое преобразование вещественного числа в целое (соответствующая
команда fisttp заменяет семь «обычных» команд);
• сложные арифметические вычисления (команды addsubps, addsubpd, movsldup, movshdup, movddup);
• кодирование видео (команда 1ddqu);
• обработка графики (команды haddps, hsubps, haddpd, hsubpd);
• синхронизация потоков (команды monitor, mwait).
Детальное описание новых команд можно найти в фирменных источниках Intel.
Контрольные вопросы
1. В какой модели процессора объединились ЦП и АП в одном кристалле?
2. Объясните главное назначение ММХ-расширения. Какие новые регистры данных добавились для его реализации?
3. Чем отличаются программные модели Pentium II и Pentium IV?
4. Какие форматы вещественных чисел доступны для параллельной обработки в SSE и SSE2 расширениях команд?
5. Что нового дало совершенствование технологии с введением SS3-расширения?
6. В чем сущность и каково назначение команд упаковки и распаковки?
7. Какие операции выполняются быстрее за счет удвоения внутренней тактовой частоты ЦП?
8. В чем отличие ситуации кэш-промаха и кэш-попадания?
9. Обратная или прямая запись в основную память используется в ЦП Pentium IV и почему?
10. Объясните особенности пакетно-сетевой архитектуры ЦП Pentium IV.
11. Сколько регистров данных образуют программную модель ЦП Pentium IV?
12. В чем заключается назначение регистра управления-состояния MXCSR?
13. Что происходит при «переполнении» по команде paddusw MM0,MM1?
14. Поясните назначение кэш-памяти микрокоманд ЦП.
15. Перечислите команды управления кэшированием и объясните их предназначение.
16. Сколько уровней внутренней кэш-памяти включает Pentium IV и как они распределяются между обрабатываемыми данными?
17. Почему увеличение числа стадий конвейера позволяет увеличить тактовую частоту работы ЦП?
18. Каков размер блока регистров расширения и для чего эти регистры служат?
19. Что является задачей блока трассировки и предсказания ветвлений и как он работает?
20. Объясните суть технологии удвоения внутренней тактовой частоты (Rapid Execution Engine).
21. Для чего служит кэш-память микрокоманд и что дает ее использование?
22. В чем заключаются основные отличия архитектуры Pentium MMX и Pentium III?
23. Дайте сравнительную характеристику ЦП Pentium III и Pentium IV.
24. Объясните назначение команд упаковки и распаковки и приведите примеры их использования.
25. Поясните как выполняется умножение по команде ppaddwd MM0,MM1?
26. На какие типы данных указывает каждый из суффиксов b, w, d, q в ММХ-командах?
27. Какие действия выполняются по команде pandn (логическое И-НЕ)?
28. К какому расширению относится команда punpckhbw?
29. Сколько данных одновременно могут обрабатывать параллельные арифметические операции?
30. Какие суффиксы имеют мнемокоды скалярных и параллельных операций?
Дата добавления: 2018-11-26; просмотров: 648;