logo

Главная Система команд x86 Набор команд 3DNow! PREFETCH

Система команд x86

Программирование - Архитектура и система команд микропроцессоров x86
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

PREFETCH

Выбрать из памяти в КЭШ строку данных

Влияние команды на флаги и форматы команды:

OF

DF

IF

TF

SF

ZF

AF

PF

CF

 

 

 

 

 

 

 

 

 

 

Код

Команда

Описание

Пример

0F OD

PREFETCH m8

Выбрать из m8 строку данных (не менее 32 байт) в КЭШ данных процессора

prefetch [ebx]

0F OD

PREFETCHW m8

Выбрать из m8 строку данных (не менее 32 байт) в КЭШ данных процессора, разрешить изменение данных в КЭШ

prefetchw [ebx]

Описание:

Команда PREFETCH/PREFETCHW осуществляет предварительную выборку строки данных в КЭШ данных процессора. Адрес выбираемой строки определяется значением m8.

Для процессора AMD-K6-2 размер выбираемой строки составляет 32 байта. Гарантируется, что во всех будущих модификациях процессоров, размер загружаемой командой PREFETCH/PREFETCHW строки будет по крайней мере 32-байтным.

Если заданная строка уже присутствует в КЭШ данных или обнаружена неисправность памяти, никакого цикла шины не инициализируется, и команда обрабатывается как NOP.

В приложениях, где должны обрабатываться большие наборы данных, команда PREFETCH/PREFETCHW может обеспечить предварительную загрузку очередного блока данных в КЭШ во время обработки процессором предшествующего блока. Эта команда позволяет обеспечить высокий параллелизм исполнения кода (когда обработка текущего блока данных завершается, очередной блок уже доступен в КЭШ данных процессора). Примером такого кода может служить обработка вершин при трехмерных преобразованиях, где набор данных об очередной вершине может быть предварительно загружен в КЭШ данных командой PREFETCH, в то время как обрабатывается информация о предыдущей вершине.

Формат команды PREFETCH/PREFETCHW для процессора AMD-K6-2 определен так, чтобы учесть возможность его расширения в будущем. Полный код команды включает ModR/M-байт. Однако допустимо использование только операндов в памяти (попытки использования регистров приводят к генерации особой ситуации #UD). Поле reg байта ModR/M используется для задания типа выборки, которая выполняется командой PREFETCH/PREFETCHW. Код 000b в этом поле идентифицирует команду PREFETCH, код 001b — команду PREFETCHW. Любые другие коды зарезервированы и не вызывают генерации особой ситуации #UD.

Отличие в дествии команд PREFETCH и PREFETCHW состоит в том, какое состояние будет задано заполненной строке КЭШ после помещения в нее данных. Команда PREFETCH определяет состояние линии КЭШ как "исключительное" (exclusive). Команда PREFETCHW определяет состояние линии КЭШ как "модифицируемое". Если данные, которые загружаются в КЭШ, должны изменяться, то используется PREFETCHW, в противном случае — PREFETCH. Использование PREFETCHW экономит цикл, который требуется для изменения состояния КЭШ данных перед модификацией строки.

Операция:

PRELOAD_L1_DATA_CACHE_LINE(mem);

SET_LINE_STATE_TO_EXCLUSIVE; (MESI)

Особые ситуации защищенного режима:

#UD, если CRO.EM=1.
#NM, если CRO.TS=1.
#MF, если есть отложенные необработанные незамаскированные исключения FPU.

Особые ситуации режима реальной адресации:

#UD, если CRO.EM=1.
#NM, если CRO.TS=1.
#MF, если есть отложенные необработанные незамаскированные исключения FPU.

Особые ситуации режима V86:

Такие же, как и в режиме реальной адресации.


Входит в группу команд: Набор команд 3DNow!




Все права защищены © Алексей Ровдо, 1994-2023. Перепечатка возможна только по согласованию с владельцем авторских прав. admin@club155.ru

Top.Mail.Ru       Сервер радиолюбителей России - схемы, документация,

 соревнования, дипломы, программы, форумы и многое другое!   схемы новости электроники