 Если предварительное содержимое регистра ЕАХ = 2, то после выполнения команды CPUID в регистрах ЕАХ, ЕВХ, ЕСХ, EDX будет размещаться информация о характеристиках используемой процессором кэш-памяти 1-го и 2-го уровней, а также о характеристиках буферной памяти TLB, используемой для страничной трансляции адреса. Например, для процессора Pentium Pro содержимое этих регистров будет следующим: ЕАХ = 03020101 h, ЕВХ = 00h, ЕСХ = 00h, EDX = 06040A42h. Каждый байт содержимого регистров является дескриптором, указывающим характеристики определенного вида внутренней памяти. В регистре ЕАХ байт 0 указывает число команд CPUID, которое надо выполнить, чтобы получить полную информацию о внутренней памяти процессора (для семейства Р6 - одна команда, byte0 = 01h), байт 1 определяет характеристики TLB, транслирующего адреса команд при использовании страниц по 4 Кбайт (кэш-память, организованная в виде 8 наборов по 4 строки, дескриптор bytel = 01 h), байт 2 - характеристики TLB команд при использовании страниц по 4 Мбайт (кэш-память, организованная в виде 1 набора из 2 строк, дескриптор byte2 = 02h), байт 3 - характеристики TLB, транслирующего адреса данных при использовании страниц по 4 Кбайт (кэш-память, организованная в виде 16 наборов по 4 строки, дескриптор byte3 = 03h). Дескрипторы в регистре EDX имеют следующее назначение: байт 0 указывает характеристики общей кэш-памяти 2-го уровня (кэш-память команд и данных емкостью 256 Кбайт, наборы по 4 строки длиной 32 байт, дескриптор byte0=42h), байт 1 - характеристики кэш-памяти данных 1-го уровня (8 Кбайт, наборы по 2 строки длиной 32 байт, дескриптор bytel =0Ah), байт 2 - характеристики TLB данных при использовании страниц по 4 Мбайт (кэш-память, организованная в виде 2 наборов по 4 строки, дескриптор byte2 = 04h), байт 3 - характеристики кэш-памяти команд 1 -го уровня (8 Кбайт, наборы по 4 строки длиной 32 байт, дескриптор byte3 = 06h). Регистры ЕВХ, ЕСХ при идентификации семейства Р6 не используются (содержат нулевые дескрипторы).
Команды INVD, WBINVD, INVLPG служат для управления кэш-памятью. Они являются привилегированными, т. е. выполняются только программами с максимальным уровнем приоритета CPL = 0.
Команды INVD, WBINVD аннулируют содержимое всех ячеек (строк) внутренней кэшпамяти данных и кэш-памяти 2-го уровня, запрещая запись/считывание ее содержимого. При обращениях к памяти после этих команд осуществляется заполнение строк кэш-памяти новым содержимым из основной памяти. Отличие этих команд состоит в том, что при выполнении команды WBINVD производится обратная запись из внутренней кэш-памяти в основную память содержимого тех ячеек (строк), в которые производилась запись информации (модификация).
Команда INVLPG аннулирует (делает недействительным) содержимое строки в буфере трансляции страничных адресов TLB, где содержится базовый адрес страницы, на которой располагается адресуемая ячейка памяти (m16 или m32). В этом случае при последующем обращении к данной странице выполняется процедура трансляции адреса с помощью хранящихся в основной памяти таблиц, в которых записаны базовые адреса разделов и страниц.
Команда RSM возвращает процессор из режима системного управления SMM к выполнению программы, которая была прервана поступлением внешнего запроса SMI#. При этом восстанавливается содержимое регистра процессора, которое было сохранено в памяти при поступлении этого запроса.
|