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

ЭВУ 2 семестр / Презентации ЭВУ в пдф / метода моховикова

.pdf
Скачиваний:
43
Добавлен:
31.05.2015
Размер:
4.4 Mб
Скачать

привести к нарушению целостности данных в иерархической памяти. Инст-

рукция WBINVD предварительно выгружает модифицированные строки в основную память (при сквозной записи ее действие совпадает с INVD).

Аппаратная очистка внутренней кэш-памяти при сквозной записи (об-

нуление битов достоверности всех строк) осуществляется внешним сигналом

FLUSH# за один такт системной шины (и, безусловно, по сигналу RESET).

При обратной записи очистка кэша подразумевает также выгрузку всех мо-

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

Аннулирование строк выполняется при записи в отображаемую ими об-

ласть памяти со стороны внешних контроллеров (например, других процес-

соров). Если внешний (по отношению к рассматриваемому процессору) кон-

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

Для процессоров семейства х86 этим сигналом является AHOLD. По этому сигналу процессор немедленно отдает управление только шиной адреса, на которую внешним контроллером устанавливается адрес памяти, сопровож-

даемый стробом EADS#. Если адресуемая память присутствует в первичном кэше, процессор сбрасывает бит достоверности этой строки (она освобожда-

ется).

Общее программное управление кэшированием осуществляется посред-

ством бита управляющего регистра CR0: CD (Cache Disable) и NW (No Write Through). Возможны следующие сочетания битов регистра:

CD = 0, NW = 0 – разрешен нормальный режим работы с максимально возможной эффективностью (политика WB, если поддерживается). Для отдельных областей или страниц памяти кэширование может ограничиваться (запрещаться или устанавли-

ваться политика WT).

251

СD = 0, NW = 1 – запрещенная комбинация (вызывает от-

каз #GP).

СD = 1, NW = 0 – заполнение кэша запрещено, когерент-

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

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

ся. Эффект от такой установки бита аналогичен временному пере-

воду сигнала KEN# в высокое (пассивное) состояние. Этот режим может использоваться для временного отключения кэша, после ко-

торого возможно его включение без очистки.

СD = 1, NW = 1 – заполнение кэша запрещено, когерент-

ность памяти не поддерживается. Попадания чтения обслуживают-

ся из кэша, попадания записи модифицируют кэш, но не основную память. Аннулирование строк заблокировано, очистку вызывают только инструкции INVD и WBINVD, внешнее слежение выполня-

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

лась, кэш превращается в «замороженную» область статической памяти.

При использовании страничной переадресации в управлении кэширова-

нием принимают участие биты PCD и PWT управляющего регистра CR3 и

элементов каталога и таблицы каталогов. В элементах каталога таблиц (PDE)

эти биты управляют кэшированием таблиц страниц, на которые они ссыла-

ются. В элементах таблиц страниц (PTE) эти биты управляют кэшированием обслуживаемых страниц. Бит PGE регистра CR4 разрешает использование бита глобальности страницы G для управления аннулированием вхождений в

TLB.

252

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

нала KEN# во время циклов доступа процессора к этим областям памяти.

Этот сигнал управляет только возможностью заполнения строк кэша из адре-

сованной области памяти (с дискретностью, равной размеру строки). Для процессоров с WB-кэшем имеется входной сигнал WB/WT#, который может упростить политику записи для данного адреса до WT. Выходные сигналы

PCD и PWT управляют работой вторичного кэша. В циклах обращения к па-

мяти, когда страничные преобразования не используются (например, при об-

ращении к таблице каталогов страниц), источником сигналов являются биты

PCD и PWT регистра CR3, при обращении к таблице страниц – биты PCD и PWT из дескриптора соответствующего элемента каталога, при обращении к самим данным страницы – биты PCD и PWT из дескриптора страницы. Кро-

ме того, оба этих сигнала могут принудительно устанавливаться общими би-

тами управления кэширования CD и WT регистра CR0.

Регистры MTTR (Memory Type Range Registers), которые реализуют функции аппаратного управления кэшированием, также имеют возможность изменения порядка записи для определенных областей памяти. С помощью этих регистров в физической памяти может быть определено до 96 областей адресов с одинаковым типом кэширования. Такое распределение позволяет оптимизировать операции с ОЗУ, ПЗУ, видеобуферами и адаптерами ввода-

вывода, отображенными на пространство памяти. По аппаратному сбросу ре-

гистры MTRR устанавливаются в такое состояние, которое ведет к объявле-

нию некэшируемой всей физической памяти. Дальнейшая инициализация,

выполняемая обычно во время процедуры POST (Power-on Self Test) BIOS,

программирует регистры в соответствии с реальным распределением памяти.

Типы памяти и их характеристики приведены в табл. 7.

Регистры MTRR входят в число модельно-специфических регистров

(MSR). Они определяют наборы фиксированных зон для первого мегабайта

253

физической памяти и зоны произвольного размера для памяти в любом диа-

пазоне адресов.

Таблица 7

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

Наличие MTRR определяется инструкцией CPUID по флагу MTRR (бит

13 в EDX). 64-битный регистр MTRRcap определяет возможности MTRR.

Количество произвольных зон определяется полем VCNT (биты 7:0), флаг

FIX (бит 8) определяет наличие фиксированных зон; а флаг WC (бит 10) ука-

зывает на поддержку памяти типа WC.

Общее управление MTRR осуществляется записью в 64-битный регистр

MTRRdefType. Флаг Е (бит 11) разрешает использование MTRR; если он сброшен, вся память определяется как UC. Флаг FE (бит 10) разрешает ис-

пользование фиксированных зон. Поле Type (биты 7:0) задают тип памяти по умолчанию (памяти, не попавшей ни в одну из зон). Для физически отсутст-

вующей памяти рекомендуется тип UC.

254

Для управления фиксированными зонами используются следующие ре-

гистры:

MTRRfix64K_0000 – для отображения восьми зон по 64

Кбайт в диапазоне адресов 0–7FFFFh;

 

MTRRfix16K_80000 и MTRRfix16K_A0000 – для отобра-

жения 16 зон по 16 Кбайт в диапазоне адресов 80000h–BFFFFh;

 

 

MTRRfix4K_C0000,

MTRRfix64K_C80000

...

MTRRfix4K_F80000 (8 регистров) – для отображения 64 зон по 4

Кбайт в диапазоне адресов C0000h–FFFFFh.

Каждый байт этих 64-битных регистров несет информацию о типе памя-

ти (см. табл. 7) для отображаемой им зоны (младшему байту соответствует область с меньшими адресами).

Для управления каждой из зон произвольного размера используются па-

ры регистров (суффикс n определяет номер регистра):

MTRRphysBasen – регистр базового физического адреса зоны. Поле Type (биты 7:0) определяет тип памяти для зоны, поле

PhysBase (биты 35:12) – ее базовый адрес (старшие 24 бита, млад-

шие 12 – нулевые). Зоны определяются по границам страниц раз-

мером 4 Кбайт.

MTRRphysMaskn – регистр маски физического адреса.

Поле PhysMask (биты 35:12) задает маску зоны, флаг V (бит 11)

определяет действительность данных данной регистровой пары.

Маска определяется так, чтобы результат операции «И» над ней и адресом, принадлежащим зоне, совпадал с результатом той же операции над ней и базовым адресом.

Перекрытие произвольных зон допускается лишь для типов UC или UC

и WB (в области перекрытия тип будет UC), для перекрытий зон иных типов

255

поведение процессора непредсказуемо. При определенных значениях масок задаваемые ими зоны перестают быть непрерывными. На области разрывов будет распространяться тип памяти по умолчанию. Использование таких ма-

сок не приветствуется, поскольку оно может потребовать присутствия реаль-

ной памяти во всем диапазоне физических адресов (4 или 64 Гбайт). Если произвольная зона перекрывает фиксированную, то на перекрытую область распространяется определение фиксированной зоны (при установленном флаге FE).

Если используются большие страницы (размером 2 или 4 Мбайт), каж-

дая страница может накрывать несколько зон, определенных в MTRR. Если эти зоны имеют разные свойства, поведение процессора будет непредсказуе-

мо (тип страниц памяти кэшируется в TLB). Чтобы избежать этой неопреде-

ленности, используя большие страницы, следует заботиться об однотипности зон памяти, на которые отображается данная область (корректно программи-

ровать MTRR).

Запись в регистр MTRRcap, как и в неопределенные поля других регист-

ров MTRR, или попытка использования типов памяти, отличных от приве-

денных в табл. 7, вызывает исключение #GP. Регистры MTRR позволяют управлять статически определенными зонами физической памяти. Эта задача ложится, как правило, на BIOS компьютера. Начиная от суперскалярных ар-

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

чески выбирать оптимальные свойства каждой страницы памяти с точки зре-

ния повышения производительности. Этот способ основан на таблице атри-

бутов страниц PAT (Page Attribute Table). Прежде на уровне страниц свойства памяти задавались битами PCD и PWT. Теперь в элементах, описывающих страницы, определен бит PATi (PAT index), ранее зарезервированный (бит 12

в PDE 2/4 Мбайт и бит 7 в PTE 4 Кбайт). В процессор введен новый регистр

MSR с элементом PAT (адрес 277h), представляющий собой таблицу атрибу-

256

тов страниц. В этой таблице имеется восемь элементов (3-битных полей

PA0–7, см. рис. 102).

Рис. 102. Формат регистра PAT

Путем комбинации трех битов PATi, PCD, PWT для конкретной стра-

ницы выбирается соответствующий элемент таблицы. В этом элементе хра-

нится код типа памяти (0–7), назначенный этой комбинации данных битов.

Код типа соответствует определениям для MTRR (см. табл. 7), но дополни-

тельно для PATi возможно использование только первых четырех элементов

PAT. После аппаратного сброса в PAT устанавливаются определения типов памяти, как показано в последней графе табл. 8.

Таблица 8

Индексирование в PAT и тип памяти, определяемый по аппаратному сбросу

Операционная система (только при CPL = 0) может изменить эти опре-

деления по своему усмотрению, выбирая наиболее приемлемый метод кэши-

рования для каждой комбинации битов PATi, PCD и PWT.

257

Тип памяти, заданный через MTRR, может отличаться от типа, заданно-

го в PAT. Результат взаимодействия определений типов памяти через MTRR,

биты PWT, PCD и PATi можно выяснить по специальным таблицам. Если

MTRR запрещен битом 11(Е) регистра MTRRDefType, то вся память стано-

вится некэшируемой (UC). Определение UC в PAT всегда обеспечивает не-

кэшируемость области памяти (перекрывает назначение WC в MTRR), UC

перекрывается назначением WC в MTRR на ту же область. Таким образом,

надежно запретить кэширование для страницы можно только при PCD = 1 и PWT = 1.

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

INVLPG. Аннулирование всех вхождений в TLB, за исключением отдельных

(с глобальным флагом G), происходит при изменении состояния (в обе сто-

роны) входа FLUSH#, записи в регистр MTRR, модификации флагов PG или

PE в регистре CR0 или флагов PSE, PGE или PAE в регистре CR4.

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

граммному коду. Выгрузка буферов в память может откладываться процес-

сором с целью оптимизации, но ряд условий вызывает немедленную выгруз-

ку буферов:

возникновение исключения или прерывания;

выполнение инструкций ввода-вывода;

выполнение инструкций сериализации;

выполнение операции LOCK;

выполнение инициализации шины по сигналу BINIT#.

258

Заключение

На основе вышеописанного можно сказать, что в данном учебном посо-

бии дано представление о принципах функционирования современных элек-

тронных вычислительных устройств и систем. В частности, рассмотрены ие-

рархии памяти, организации страничного управления и кэширования, смены контекста и работа с дескрипторами разных типов, режимы работы процес-

сора и некоторые вопросы, связанные с прерываниями. Однако хочется отме-

тить, что здесь не рассмотрены аспекты, касающиеся математического со-

процессора, его архитектуры и микроархитектуры; осталась не раскрыта тема о системе ввода-вывода и детализации алгоритмов вычислительного процес-

са. Изложение этой информации выходит за формат данного пособия. Вместе с тем представляется важным отметить, что изложенный здесь материал яв-

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

Информация, содержащаяся в данном учебном пособии, получена из ис-

точников, рассматриваемых автором как надежные. Тем не менее, имея в ви-

ду возможные человеческие или технические ошибки, автор не может гаран-

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

бия.

259

Приложения

Приложение 1

Регистр флагов – регистр процессора, отражающий текущее состояние про-

цессора.

Регистр флагов Intel x86

Бит,

Обозна-

Назва-

Описание

Тип фла-

чение

ние

 

 

 

га

FLAGS

 

 

 

 

 

 

0

CF

Carry

Флаг перено-

Состоя-

 

 

Flag

са

 

 

ние

1

1

 

Зарезервиро-

 

 

 

 

ван

 

 

 

2

PF

Parity

Флаг

четно-

Состоя-

 

 

Flag

сти

 

 

ние

3

0

 

Зарезервиро-

 

 

 

 

ван

 

 

 

4

AF

Auxilia

Вспомога-

Состоя-

 

 

ry Carry Flag

тельный флаг

пе-

ние

 

 

 

реноса

 

 

 

5

0

 

Зарезервиро-

 

 

 

 

ван

 

 

 

6

ZF

Zero

Флаг нуля

Состоя-

 

 

Flag

 

 

 

ние

7

SF

Sign

Флаг знака

Состоя-

 

 

Flag

 

 

 

ние

8

TF

Trap

Флаг

трасси-

Систем-

 

 

Flag

ровки (пошаговое

ный

 

 

 

выполнение)

 

 

9

IF

Interrup

Флаг

разре-

Систем-

 

 

t Enable Flag

шения прерываний

ный

10

DF

Directio

Флаг направ-

Управ-

 

 

n Flag

ления

 

 

ляющий

11

OF

Overflo

Флаг

пере-

Состоя-

 

 

w Flag

полнения

 

 

ние

12

IOPL

I/O

Уровень

 

Систем-

13

 

Privilege

приоритета

ввода-

ный

 

 

Level

вывода

 

 

 

14

NT

Nested

Флаг

 

вло-

Систем-

 

 

Task

женности задач

ный

15

0

 

Зарезервиро-

 

 

 

 

ван

 

 

 

16

RF

Resume

Флаг

возоб-

Систем-

 

 

Flag

новления

 

 

ный

17

VM

Virtual-

Режим

вир-

Систем-

 

 

8086 Mode

туального

процес-

ный

 

 

 

сора 8086

 

 

 

18

AC

Alignm

Проверка

Систем-

260