Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
мпс с 1 по 294.doc
Скачиваний:
22
Добавлен:
16.04.2019
Размер:
6 Мб
Скачать
☆

2.6.7. Команды управления

Команды данной группы приведены в табл. 2.56.

Команды FXRSTOR и FXSAVE производят сохранение и восстановление содержимого ре­гистров FPU/MMX и SSE. При выполнении этих команд операндом является блок данных раз­мером 512 байт, начальный адрес его размещения в памяти m512byte задается в команде. В отличие от команды FSAVE команда FXSAVE не изменяет содержимое этих регистров после его сохранения. Для очистки регистров после команды FXSAVE необходимо выполнить коман­ду FINIT. Содержимое регистров, сохраненное в памяти с помощью команды FSAVE, не может быть восстановлено с помощью команды FXRSTOR, и наоборот, содержимое регистров, со­храненное с помощью команды FXSAVE, не может быть восстановлено с помощью команды FRSTOR. Размещение в памяти содержимого регистров, выполняемое по команде FXSAVE, показано на рис. 2.38. Если при восстановлении (загрузке из памяти) по команде FXRSTOR зарезервированные биты в регистре MXCSR примут значение «1», то это приведет к исключе­нию #GP (нарушение общей защиты).

Команда STMXCSR сохраняет содержимое регистра MXCSR в ячейке памяти с адресом т32. На месте зарезервированных бит в память записываются нули. Команда LDMXCSR загружает (восстанавливает) содержимое регистра MXCSR из адресуемой ячейки памяти.

2.6.8. Команды пересылки данных с управлением кэшированием

Эта группа команд приведена в табл. 2.57. На их выполнение не влияет значение бита ЕМ в регистре управления CRO и значение бита OSFXSR в регистре управления CR4.

Команда MASKMOVQ производит выборочную запись байтов из ММХ-регистра mm1 в память по адресу DS:[EDI], т. е. в ячейку памяти, адресуемую содержимым регистра EDI, в сегменте данных DS. Второй операнд команды, выбираемый из ММХ-регистра mm2, со­держит маску, которая определяет, какие байты из регистра mm1 будут записаны в память. Если старший бит какого-либо байта в регистре mm2 содержит «1», то соответствующий байт из регистра mm1 посылается в память. Если старший бит байта в регистре mm2 содержит «О», то запись в память соответствующего байта из mm1 не производится.

Команды MOVNTPS и MOVNTQ реализуют соответственно запись в адресуемую ячей­ку памяти т128 или т64 содержимого SSE-регистра ХММ или ММХ-регистра mm. При вы­полнении этих команд данные пересылаются непосредственно в основную (системную) память, их запись в кэш-память (кэширование) не производится.

Команды PREFETCHTO, PREFETCHT1, PREFETCHT2, PREFETCHNTA производят пред­варительную выборку строки данных из системной памяти в кэш-память. Выбирается строка (32 байта), содержащая байт с адресом т8, который указан в команде. Выбранная строка поступает в кэш-память определенного уровня в соответствии с мнемокодом команды. Данные команды рассчитаны на реализацию в процессорах, имеющих кэш-память различ­ного уровня, включая самый нижний - «нулевой» уровень (LO). Кэш-память этого уровня отсутствует в ныне выпускаемых моделях процессоров Pentium III, которые содержат только кэш-память 1-го и 2-го уровней (L1 и L2). Полностью возможности использования этих ко­манд будут реализованы в последующих моделях процессоров семейства Р6. Процессо­ры Pentium III при поступлении команд PREFETCHT1 и PREFETCHT2 выполняют одинако­вые действия, обеспечивая загрузку строки в кэш-память 2-го уровня (L2).

Команды PREFETCH дают возможность произвести предварительную загрузку данных в кэш-память до их непосредственного использования. Эффективное применение этих ко­манд позволяет избежать нежелательных остановок конвейера, связанных с ожиданием загрузки данных

Команда SFENCE упорядочивает обращения к памяти в процессе записи. Отметим что процессоры семейства Р6 производят изменение последовательности выполнения команд, заданной исходной программой, чтобы обеспечить повышение производительно­сти за счет сокращения числа тактов простоя и ожидания при работе конвейера. При этом запись в память результатов операций также может выполняться с нарушением заданной программой последовательности. Данное обстоятельство вызывает определенные труд­ности при работе систем, в которых допускается одновременное обращение к основной памяти нескольких устройств. Команда SFENCE позволяет избежать этих трудностей, обес­печивая выполнение записи результатов операций в память в соответствии с порядком следования команд в исходной программе.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]