Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Энциклопедия PC

.pdf
Скачиваний:
30
Добавлен:
13.03.2015
Размер:
8.94 Mб
Скачать

206 Глава5. Процессоры

ти, машинным контролем, кэшированием областей физической памяти и другими функциями. Их назначение привязывается к архитектуре конкретного процессора, состав меняется от модели к модели, доступ привилегирован. Доступность регистров различных группзависитотрежима работы процессора иуровняпривилегий задачи. Регистры общего назначения, а также регистры сегментов доступны всегда; доступ к остальным регистрам может быть ограничен.

5.2.2.Организацияпамяти

Впроцессорах х86 предусматривается разделение пространств памяти и вводавывода. Пространство памяти (Memory Space) предназначено для хранения кодов инструкций и данных, для доступа к которым имеется богатый выбор способов адресации (24 режима). Память может логически организовываться в виде одного или множества сегментов переменной длины (в реальном режиме — фиксированной). Кроме сегментации в защищенном режиме возможно разбиение (Paging) логической памяти на страницы размером 4 Кбайт, каждая из которых может отображаться на любую область физической памяти. Начиная с 5-го поколения, появилась возможность увеличения размера страницы до 4 Мбайт. Сегментация и разбиение на страницы могут применяться в любых сочетаниях. Сегментация является средством организации логической памяти на прикладном уровне. Разбиение на страницы применяется на системном уровне для управления физической памятью. Сегменты и страницы могут выгружаться из физической оперативной памяти на диск и по мере необходимости подкачиваться с него обратно в физическую память. Таким образом реализуется виртуальная память.

Применительно к памяти различают три адресных пространства: логическое, линейное и физическое. Основным режимом работы 32-разрядных процессоров считается защищенный режим, в котором работают все механизмы преобразования адресных пространств (рис. 5.2).

Логический адрес, также называемый виртуальным, состоит из селектора сегмента Seg (в реальном режиме — просто адреса сегмента) и эффективного адреса, называемого также смещением (Offset). Логический адрес обозначается в форме Seg: Off set. Селектор сегмента хранится в старших 14 битах сегментного регистра (CS, DS, ES, SS, FS или GS), участвующего в адресации конкретного элемента памяти. По значению селектора из специальных таблиц, хранящихся в памяти, извлекается начальный адрес сегмента. Эффективный адрес формируется суммированием компонентов base, index, displacement с учетом масштаба scale. Поскольку каждая задача может иметь до 16 Кбайт селекторов (214), а смещение, ограниченное размером сегмента, может достигать 4 Гбайт, логическое адресное пространство для каждой задачи может достигать 64 Тбайт. Все это пространство виртуальной памяти в принципе доступно программисту (при условии поддержки со стороны операционной системы).

Блок сегментации транслирует логическое адресное пространство в 32-битное пространство линейных адресов. Линейный адрес образуется сложением базового адреса сегмента с эффективным адресом. Базовый адрес сегмента в реальном режиме образуется умножением содержимого используемого сегментного регистра на 16 (как и в 8086). В защищенном режиме базовый адрес загружа-

5.2. Программнаямодель32-разрядныхпроцессоров 207

етсяиздескриптора, хранящегосявтаблице, поселектору, загруженномувиспользуемыйсегментныйрегистр.

32

Вычислениеэффективногоадреса

Физическаяпамять '32 Физическийадрес

ВЕ[3-0]#, А31-А2,

15

 

i ——— _ ——————— » адрес

Блоксегментации

32

Блокстраничной

 

 

 

 

 

 

 

 

переадресации

 

 

2 1 0

/14

 

——— =/->

(необязательный)

 

 

 

 

 

 

 

Линейный

 

Селектор

 

R

 

 

 

 

 

 

 

 

 

 

 

 

Р

Индексдескрипторалогическогоиливиртуальногоадреса

 

 

 

 

 

L

 

 

 

 

 

 

 

 

 

 

 

Сегментный

 

 

 

 

 

 

регистр

 

 

 

 

 

Рис. 5.2. Формированиеадресапамяти32-разрядныхпроцессоровв защищенномрежиме

32-битный физический адрес памяти образуется после преобразования линейного адреса блоком страничной переадресации. Он выводится на внешнюю шину адреса процессора. В простейшем случае (при отключенном блоке страничной переадресации) физический адрес совпадает с линейным. Включенный блок страничной переадресации осуществляет трансляцию линейного адреса в физический страницами размером 4 Кбайт (для последних поколений процессоров также возможны страницы размером 2 или 4 Мбайт). Блок обеспечивает и расширение разрядности физического адреса процессоров шестого поколения до 36 бит. Блок переадресации можетвключатьсятольковзащищенномрежиме.

Для обращения к памяти процессор (совместно с внешними схемами) формирует шинные сигналы для операций записи и чтения. Шина адреса разрядностью 32/36 бит позволяет адресовать 4/64 Гбайт физической памяти, но в реальном режимедоступентолько1 Мбайт, начинающийсясмладшихадресов.

Стек

Стек представляет собой непрерывную область памяти, адресуемую регистрами ESP (указатель стека) и SS (селектор сегмента стека). Особенность стека заключается в том, что данные в него помещаются и извлекаются по принципу «першем вошел — последним вышел». Данные помещаются в стек с помощью инст-гукшги PUSH (заталкивание), аизвлекаютсяпоинструкцииPOP (вытаскивание).

208 Глава5. Процессоры

КромеявногодоступакстекуспомощьюинструкцийPUSH иPOP стекавтоматически используется процессором при выполнении инструкций вызова, возвратов, входа и выхода из процедур, а также при обработке прерываний. Стек используют дляразных целей:

шорганизации прерываний, вызовов и возвратов;

швременного хранения данных, когда подних нет смысла выделять фиксированные места впамяти; « передачи и возвращения параметров при вызовах процедур.

До использования стека он должен быть инициализирован так, чтобы регистры SS:ESP указывали на область реальной оперативной памяти (стек в ПЗУ, естественно, работать не может). Прикладные программы, как правило, от операционной системы получают готовый к употреблению стек. В защищенном режиме сегмент состояния задачи содержит четыре селектора сегментов стека (для разных уровней привилегий), но в каждый момент используется, естественно, только один стек

5.2.3. Прерыванияиисключения

Прерывания и исключения нарушают нормальный ход выполнения программы для обработки внешних событий или сигнализации о возникновении особых условий или ошибок. По прерыванию или исключению процессор сохраняет в стеке регистр (E)FLAGS и указатель CS:(E)IP на ту инструкцию, которую он должен будет выполнить после обработки прерывания. Этой инструкцией будет следующая за той, во время исполнения которой произошло прерывание, или та же самая (в защищенном режиме при возникновении ряда исключений в стеке сохраняется еще и код ошибки). После сохранения этих значений процессор переходит к исполнению кода обработчика данного прерывания (исключения), определяя точку входа в него через номер (0-255) по таблице прерываний. Номер элемента в таблице прерываний называется вектором прерывания, он определяется источником прерывания (исключения). Обработчик прерывания (исключения) должен заканчиваться специальной инструкцией возврата IRET, по которой из стека восстанавливается указатель CS:(E)IP и прежнее значение флагов. Для исключений, в которых сохраняется и код ошибки, обработчик до выполнения инструкции IRET должен извлечь из стека кодошибки. Различают четыреисточника прерываний.

жВнутренние прерывания (исключения) процессора и сопроцессора; вектор определяется типом произошедшего события.

*НемаскируемыевнешниепрерыванияповходуNMI; векторфиксирован(01). ж МаскируемыевнешниепрерыванияповходуINT (илипошинеAPIC); вектор передается контроллером прерываний.

*Программно-вызываемые прерывания; вектор определяется вкоманде.

Последние из этого списка в прямом смысле прерываниями не являются, поскольку представляют собой лишь специфический способ вызова процедур — не

5.2. Программнаямодель32-разрядныхпроцессоров 209

по адресу, а по его номеру в таблице, причем независимо от состояния флага IF. Программные прерывания широко используются для вызовов сервисов BIOS и ОС

этокомпактноиудобно.

Вначале отработки любого (в том числе и программного) прерывания процессор сбрасывает флаг разрешения прерываний IF. Процедура обработки завершается инструкцией IRET, по которой из стека восстанавливаются автоматически сохраненные регистры (в восстановленном регистре флагов прерывания разрешены) и процессор начинает выполнение инструкции, следующей за той, после которой исполнялось прерывание. Конечно, программно во время обслуживания прерывания возможно умышленное или случайное изменение указателя или содержимого стека, и тогда инструкция IRET «отправит» процессор по другому адресу, в результате чего компьютер может и зависнуть. Если на время обработки требуется реакция и на другие прерывания, обработчик должен установить флаг IF. Прерывания, обслуживаемые до завершения обработки предыдущего, называются вложенными. Вложенные прерывания могут создавать опасность переполнения стека, поскольку каждое «вложение» будет использовать его для своих целей. Переполнение стека может также являться причиной зависаний. Длинные процедуры обработки со сброшенным флагом IF могут привести к потере системного времени, поскольку «часы» операционной системы используют аппаратные прерывания от таймера. Процедура обслуживания для каждого источника аппаратных прерываний должна быть написана весьма осмотрительно и учитыватьнюансыработыостальныхподсистем.

Маскируемые внешние прерывания обрабатываются процессором по сигналу на входеINT толькоприустановленномфлагеразрешенияпрерыванийIF.

Немаскируемые прерывания обрабатываются процессором независимо от состояния флага разрешения прерывания IF. К ним относятся прерывания, приходящие по линии NMI (Non-Maskable Interrupt), а для процессоров, поддерживающих режим системного управления, еще и по линии SMI# (System Management Interrupt).

Внутренние прерывания процессора (исключения) генерируются при возникновении особых условий выполнения текущей инструкции. В большинстве сво-гы они не столько асинхронны, сколько неожиданны для исполнения программ-.-його кода. Номер вектора определяется процессором в зависимости от проис-хаждения исключения.

Каждому номеру (0-255) прерывания или исключения соответствует элемент >

таблице дескрипторов прерываний IDT (Interrupt Descriptor Table). В реальном режиме таблица прерываний содержит дальние адреса (двойные слова) обслуживающих процедур и после сброса располагается, начиная с нулевых адресов. S защищенном режиме таблица IDT содержит 8-байтные дескрипторы прерывать, может хранить от 32 до 256 дескрипторов и располагаться в любом месте фвсшческойпамяти.

Под исключения (внутренние прерывания) в процессорах Intel резервируют- лекторы 0-31 в таблице прерываний, однако в PC часть из них перекрывает- гистемными прерываниями — сервисами BIOS и DOS, а также аппаратными

210 Глава5. Процессоры

прерываниями. Эти перекрытия особенно неприятны для защищенного режима; они усложняют процедуры обработчиков прерываний.

Для обработки аппаратных прерываний в многопроцессорных системах тра-

диционные аппаратные средства становятся непригодными, поскольку прежняя схема подачи запроса INTR и передачи вектора в цикле INTA# явно ориентирована на единственность процессора. Для решения этой задачи в процессоры, начиная со второго поколения Pentium, введен расширенный программируемый контроллер прерываний APIC (Advanced Programmable Interruption Controller). Этот контроллер имеет внешние сигналы локальных прерываний LINT[1:0] и трехпро-водную интерфейсную шину (PICD[1:0] и PICCLK), по которым процессоры связываются с контроллером APIC системной платы. Для локальных запросов прерываний процессоры имеют линии LINTO, LINT1. Локальные прерывания обслуживаются только тем процессором, на выводы которого поступают сигналы их запросов. Общие (разделяемые) прерывания (в том числе и SMI) приходят к процессорам в виде сообщений по интерфейсу APIC. При этом контроллеры предварительно программируются — тем самым определяются функции каждого из процессоров в случае возникновения того или иного аппаратного прерывания. Контроллеры APIC каждого из процессоров и контроллер системной платы, связанные интерфейсом APIC, выполняют маршрутизацию прерываний (Interrupt Routing), причем как статическую, так и динамическую. Внешне программный интерфейс обработки прерываний остается совместимым с управлением контроллером 8259А, что обеспечивает прозрачность присутствия APIC для прикладного программного обеспечения. Режим обработки прерываний посредством APIC разрешается сигналом APICEN поаппаратномусбросу, впоследствиионможетбытьзапрещен программно.

5.2.4. Переключениемеждуреальными защищеннымрежимами

Переключение процессора в защищенный режим из реального осуществляется за-

грузкой в системный регистр CRO слова с единичным значением бита РЕ (Protect Enable). До переключения в памяти должны быть проинициализированы необ-

ходимыетаблицыдескрипторовIDT иGDT. Переключениепроцессораиззащищенного режима в реальный возможно не только через аппаратный сброс, как это было у 80286, но и с помощью сброса бита РЕ в CRO. До этого переключения также необходимо загрузить в сегментные регистры селекторы дескрипторов, описывающие свойства сегментов стандартного реального режима. Однако вместо этого можно создать и «нереальный» режим типа Big Real Mode, отличающийся от реального возможностью доступа к сегментам большого (до 4 Гбайт) размера. Правда, у процессоров 80286 и 80386 лимит кодового сегмента принудительно ограничивается размером 64 Кбайт, но у более новых процессоров большой размер допустим для всех сегментов. «Нереальный режим» часто используется менеджерами памяти для DOS и игровыми программами, требующими большого объема памяти.

5.3. Кэшированиепамяти 211

5.3. Кэшированиепамяти

Архитектура современных 32-разрядных процессоров включает ряд средств кэширования памяти: два уровня кэша инструкций и данных (LI Cache и L2 Cache), буферы ассоциативной трансляции (TLB) блока страничной переадресации и буферы записи. Эти средства в разных вариациях (на кристалле, картридже процессора или на системной плате) представлены в системах с процессорами 486, Pentium и Р6. В процессоре 80386 (Intel) имелся только TLB, а кэш-память, устанавливаемаянасистемнойплате, неимелаподдержкисостороныпроцессора.

Все механизмы кэширования в основном прозрачны для прикладных программ и после разрешения кэширования пропускают через себя потоки инструкций и данных без требования явного программного управления. Однако знание особенностей механизмов кэширования помогает в оптимизации кода. Так, например, можно определить оптимальные размеры одновременно обрабатываемых структур данных, при котором кэш не «буксует» (cache thrashing). Процессоры разных моделей имеют различные характеристики отдельных элементов кэша. Определить характеристики элементов кэша процессоров Р6 позволяет вызов инструкции CPUID(2). Заметим, что не все модели процессоров способны кэшировать весь объем физически адресуемой памяти (см. описания конкретных процессоров).

Кэш-память процессоров строится с учетом возможности обращений к памяти со стороны внешних абонентов — других процессоров или иных контроллеров шины. Процессоры имеют механизмы внешнего слежения за состоянием собственного кэша с соответствующими аппаратными интерфейсами. Для поддержания согласованности данных кэша и основной памяти процессор отрабатывает циклы слежения (Snoop Cycle или Inquire Cycle), инициированные внешней (для него) системой. В этих циклах, происходящих при обращении к памяти со стороны внешнего абонента, процессор определяет присутствие затребованной области в своем собственном кэше. Если область отображается в кэше, то действия процессора зависят от состояния соответствующей строки кэша и типа внешнего обращения. Обращение по записи вызовет аннулирование данной строки. Обращение по чтению к области, соответствующей модифицированной («грязной») строке, вызовет выгрузку ее содержимого в основную память, прежде чем внешний абонент выполнит реальное считывание. В процессорах Р6 обращение к «грязной» строке со стороны другого процессора может вызывать выгрузку ее содержимого непосредственно в обращающийся процессор, что экономит время. Выгрузка этой строки в основную память будет произведена позже, согласно алгоритмуобратнойзаписи.

Кэш процессоров, начиная с Pentium, поддерживает протокол MESI, названный по определяемым им состояниям М (Modified), E (Exclusive), S (Shared) и / (Invalid). Первичный кэш инструкций реализует протокол лишь в части «5/», поскольку он не допускает записи. Состояния строк для каждого процессора определяютсяследующимобразом:

»М-состояние— строкаприсутствуетвкэшетолькоэтогопроцессораимодифицирована, тоестьотличается отсодержимого основной памяти; за-

212 Глава5. Процессоры

пись в эту строку не приведет к генерации внешнего (по отношению к локальнойшине) циклаобращения;

»^-состояние — строка присутствует в кэше только этого процессора, но не модифицирована (ее копия в основной памяти действительна); запись пе- реведетеевМ-состояние, невызываявнешнегоциклаобращения;

»5-состояние — строка присутствует в кэше этого процессора и потенциально может присутствовать в кэшах других процессоров, копия в памяти действительна; запись в нее должна сопровождаться сквозной записью в основную память, что повлечет аннулирование соответствующих строк в другихкэшах;

т/-состояние — строка отсутствует в кэше, ее чтение может привести к генерации цикла заполнения строки; запись в нее будет сквозной и выйдет на внешнююшину.

Процессор контролирует операции записи в память на попадание в область, представленную в кэше инструкций. Контроль выполняется на уровне физических адресов, вслучаепопаданиястрокааннулируется.

Впространстве памяти компьютера имеются области, для которых кэширование принципиально недопустимо (например, разделяемая память адаптеров) или для которых непригодна политика обратной записи. Кроме того, кэширование иногда полезно отключать при выполнении однократно исполняемых участков программы (например, инициализации) с тем, чтобы из кэша не вытеснялись болееполезныефрагменты.

Впроцессорах шестого поколения в связи с их «беспорядочностью» и «спекулятивностью» обращения к памяти могут производиться с различными методами повышения эффективности. По возможностям кэширования память можно классифицироватьследующимобразом.

» Некэшируемая память UC (Uncacheable). Все обращения процессора по чтениюизаписивыполняютсястроговпорядке, предписанномпрограммным кодом, и выходят на системную шину. Никакие спекулятивные чтения и предварительные выборки не используются. Такой тип требуется для ввода-вывода, отображенного на память. Работа процессора в этом режиме с обычнымОЗУприведеткзначительномуснижениюпроизводительности.

ж Память с комбинируемой записью WC (Write Combining). Некэшируемая память, когерентность памяти не поддерживается протоколом шины. Спекулятивное чтение допустимо, записи могут комбинироваться и откладываться до любого события, вызывающего сериализацию (инструкция CPUID, обращение к некэшируемой памяти, прерывание...). Такой тип применим, например, для видеопамяти графического адаптера (порядок записей не важен).

ш Память со сквозной записью WT (Write-through). Кэшируемая память, все операциизаписииотражаютсявкэше, ивыходятнасистемнуюшину. Чтения по возможности выполняются из кэша, кэш-промахи вызывают заполнение строк кэша. Спекулятивное чтение и комбинирование записей разрешено. Данныйтипприменим, например, длябуферовкадров, атак-

5.3. Кэшированиепамяти 213

же для памяти, к которой могут обращаться устройства, подключенные к шинеинеподдерживающиепротоколовобеспечениякогерентности.

« Память с обратной записью WB (Write-back). Кэшируемая память, все опе- рациичтенияизаписиповозможностивыполняютсятолькоскэш-памятью. Запись на системную шину выходит только при необходимости освобождения строк или по требованию от других абонентов шины, что уменьшает необязательный трафик шины. Спекулятивное чтение и комбинирование записи разрешено. Этот тип самый производительный, но требует поддержки протокола обеспечения когерентности от всех абонентов шины, обращающихсякданнойобластипамяти.

т Память с защищенной записью WP (Write protected). Кэшируемая память, операции чтения по возможности выполняются из кэша, промахи вызывают заполнение строк. Записи выходят на системную шину и вызывают аннулирование строк в кэшах всех остальных абонентов шины (процессоров).

Доступные методы кэширования зависят от возможностей процессора. Базовые методы (сквозная и обратная запись или отмена кэширования) управляются атрибутами системы управления страничной переадресации, более совершенные методы программируются только через регистры MTRR или PAT (см. ниже), если таковыеимеютсявпроцессоре.

5.3.1. Управлениекэшированием

Механизм управления кэшированием включает в себя как программные флаги, так и аппаратные средства, позволяющие разрешать и ограничивать возможности кэширования. Программные средства управления включают флаги управляющих регистров и биты элементов каталога и таблиц страниц, а также специальные инструкции. Аппаратные средства включают входные сигналы разрешения кэширования и управления политикой записи и очистки кэша, а также выходные сигналы управления вторичным кэшем. В Р6+ имеются также регистры MTRR, определяющие возможности кэширования на уровне областей физической памяти. Эти механизмы имеют не одинаковые области воздействия. Если различные механизмы определяют возможности кэширования конкретной области памяти поразному, будет реализовано самое жесткое из ограничений: запрет кэширования имеет приоритет надразрешением, а политика WT отменяет политику WB.

Кэшированием управляют на этапе заполнения строк, последующие кэш-по- падания операций чтения памяти будут обслуживаться только из кэша. Кроме того, существует возможность аннулирования строк — объявление их недостоверными и очистка всей кэш-памяти. Очистка внутренней кэш-памяти при сквозной записи (обнуление бит достоверности всех строк) осуществляется внешним сигналом FLUSH* за один такт системной шины (и, конечно же, по сигналу RESET). При обратной записи очистка кэша подразумевает также выгрузку всех модифицированных строк в основную память. Для этого, естественно, может потребоваться значительное число тактов системной шины. Кроме того, имеются инструкции аннулирования (инвалидации).

214Глава5. Процессоры

Впроцессорах с расширением SSE и 3DNow! появились новые инструкции, связанные с кэшированием. Теперь можно выгружать данные из регистров ММХ и ХММ в оперативную память, минуя кэш, а также загружать группу байт памяти в строку кэша заданного уровня, минуя какие бы то ни было регистры процессора. В последующихрасширенияхпоявилисьидополнительныевозможностиуправления.

Аннулирование строк выполняется при записи в отображаемую ими область памяти со стороны внешних контроллеров (например, других процессоров). Если внешний (по отношению к рассматриваемому процессору) контроллер выполняет запись в память, процессору должен быть подан сигнал AHOLD. По этому сигналу процессор немедленно отдает управление только шиной адреса, на которую внешним контроллером устанавливается адрес памяти, сопровождаемый стробом EADS#. Если адресуемая память присутствует в первичном кэше, процессор сбрасывает бит достоверности этой строки (она освобождается).

Общее программное управление кэшированием осуществляется посредством бит управляющего регистра CRO: CD (Cache Disable) и NW (No Write Through). При использовании страничной переадресации в управлении кэшированием принимаютучастиебитырегистраCR3 иэлементовкаталогаитаблицстраниц.

Для управления кэшированием на аппаратном уровне процессоры 486 и Р5 имеют входы KEN# и WB/WT#. Внешние схемы (чипсет системной платы) могут запрещать процессору кэшировать определенные области памяти установкой высокого уровня сигнала KEN# во время циклов доступа процессора к этим областям памяти. Этот сигнал управляет только возможностью заполнения строк кэша из адресованной области памяти (с дискретностью, равной размеру строки). Для процессоров с WB-кэшем имеется входной сигнал WB/WT#, который может упростить политику записи для данного адреса до WT. Выходные сигналы PCD и PWT управляют работой вторичного (внешнего) кэша (они же управляют и внутренним кэшем). В циклах обращения к памяти, когда страничные преобразования не используются (например, при обращении к таблице каталогов страниц), источникомсигналовявляютсябитыPCD иPWT регистраCR3, дескриптора элемента каталога или страницы. Кроме того, оба этих сигнала могут принудительно устанавливаться общими битами управления кэшированием CD и WT регистраCRO.

Вархитектуру Р6 введены регистры MTRR (Memory Type Range Registers), ко-

торые реализуют вышеописанные функции аппаратного управления кэшированием, а также изменение порядка записи для определенных областей памяти. С помощью этих регистров в физической памяти может быть определено до 96 областей адресов с одинаковым типом кэширования. Такое распределение позволяет оптимизировать операции с ОЗУ, ПЗУ, видеобуферами и адаптерами ввода-вывода, отображенными на пространство памяти. По аппаратному сбросу регистры MTRR устанавливаются в такое состояние, которое ведет к объявлению некэшируемой всей физической памяти. Дальнейшая инициализация, выполняемая обычно во время теста POST системы BIOS, программирует регистры в соответствии с реальным распределением памяти. Типы памяти и их характеристикиприведенывтабл. 5.1.

 

 

 

5.4. Особыережимыработыпроцессора 215

Таблица5.1. Типыпамяти, определяемыерегистрамиMTRR

 

 

 

 

 

 

 

 

 

 

Мнемоника

Код в

Кэширование

Политика

Спекуля-

Порядок

 

MTRR1

 

WB

тивное2

операций

 

 

 

 

чтение

 

 

 

 

 

 

 

 

 

UC (UnCacheable)

0

Нет

Нет

Да

Строгий

 

 

 

 

 

 

 

WC (Write

1

Нет

Нет

Да

Слабоупоря-

Combining)

 

 

 

 

доченный(Weak

 

 

 

 

 

Ordering)

 

 

 

 

 

 

 

WT (Write-Through)

4

Да

Нет

Да

Спекулятивный

 

 

 

 

 

(Speculative

 

 

 

 

 

Processor

 

 

 

 

 

Ordering)

 

 

 

 

 

 

 

WP (Write-Protected)

5

Чтение— да

Нет

Да

Спекулятивный

 

 

Запись— нет

 

 

 

 

WB (Write-Back)

6

Да

Да

Да

Спекулятивный

 

 

 

 

 

 

 

 

UC- (UnCacheable)

7

Нет

Нет

Да

Строгий

 

1Коды2, 3, 8-255 зарезервированы, их применение вР6 вызывает исключение защиты. Код7 применим только для задания свойств через PAT.

2 Чтение, результат которого может нетребоваться программе.

Регистры MTRR входят в число модельно-специфических регистров (MSR). Ониопределяютнаборыфиксированныхзондля1-гомегабайтафизическойпамяти и зоны (в Р6 — 8 зон) произвольного размера для памяти в любом диапазоне адресов.

Регистры MTRR позволяют управлять статически определенными зонами физической памяти. Эта задача ложится, как правило, на BIOS компьютера. В процессорах Pentium III введен новый способ управления свойствами памяти на уровне страниц, который позволяет операционной системе и приложениям динамически выбирать оптимальные (с точки зрения повышения производительности) свойства каждой страницы памяти. Этот способ основан на таблице атри-

бутовстраницPAT (Page Attribute Table).

Буферы трансляции адресов (TLB) обновляются процессором прозрачно для программ. Программно можно вызвать аннулирование всех или отдельных вхожденийвбуферы.

Буферызаписипрозрачныдляпрограммдажевмультипроцессорныхсистемах. Порядок внешних операций записи всегда соответствует программному коду. Выгрузка буферов в память может откладываться процессором с целью оптимизации, норядусловийвызываетнемедленнуювыгрузкубуферов.

5.4. Особыережимыработы процессора

Здесьрассмотримначальныйзапускпроцессора, загрузку«заплаток» егомикропрограмм, работуврежимеSMM, снижениепроизводительностирадиэкономии