Добавил:
ivanov666
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Организация вычислительных систем на базе микропроцессоров с архитектурой x86. Учебное пособие
.pdf
51
Для того чтобы две команды могли выполняться параллельно, они
должны удовлетворять следующим основным условиям совместного выполнения: обе команды должны быть простыми; между ними не должно
быть регистровых зависимостей типа “запись после чтения” или “чтение
после записи”; ни одна из команд не может содержать одновременно смещение и непосредственный операнд и т.д.
Опишем стадии конвейера МП Pentium более подробно.
1. Предвыборка команд. На первой стадии осуществляется предвыборка команд в один из буферов устройства предвыборки команд из кэша
команд или из ОП, если следующей команды в кэше нет. Предвыборка команд с заполнением буферов предвыборки производится с учетом прогнозирования ветвлений, что позволяет повысить производительность Pentium
на 25 %.
2. Декодирование команд. На второй стадии устройство декодирова-
ния декодирует две команды. Декодеры в соответствии с правилами спаривания команд определяют, сколько команд (одна или две) будут выполняться одновременно.
3. Генерация адреса. На третьей стадии с помощью схемы генерации
адреса определяются адреса операндов в памяти.
4. Выполнение. На четвертой стадии операционные устройства Pentium осуществляют операции в АЛУ конвейеров V и U. На данной стадии
все команды переходов конвейера V проверяются на правильность предсказания переходов. На первой стадии конвейера устройство опережающей
выборки загружает во второй буфер предвыборки последовательность команд как бы на всякий случай, если такой переход по условию состоится.
Но это условие станет известно только на четвертом этапе после формирования признаков перехода. В целом за счет применения специальных алгоритмов блок предсказания ветвлений указывает правильный путь с вероятностью около 75-80 %.
5. Запись результата. На последней стадии осуществляется запись
результата в регистры МП или память. Здесь перед записью производятся
также проверка правильности условных ветвлений команд, проходящих
через V-конвейер, и очистка буферов предвыборки, если ветвление было
предсказано неправильно.
Дальнейшее развитие архитектуры х86/32 в МП Pentium+ шло в сле-
дующих направлениях.
Динамическое исполнение. Сюда относятся комбинации следующих
методов: предсказание переходов; переупорядочение команд; исполнение
команд с опережением.
Организация двойной независимой шины (предусматривает исполь-
зование разных шин). Первая из шин работает на тактовой частоте МП,
вторая с частотой системной шины. В этом случае отпадает необходимость
в отдельном внешнем кэше. В таких МП используются различные кэш-

52
ОЗУ
Кэш L2
Буферы
записи
Системная шина
Шинный интерфейс
Блок
выбора
команд
Кэш
команд
L1
Блок вы-
бора ад-
реса
Кэш
данных
L1
Pentium+
Pentium
памяти первого уровня L1 для данных и команд, а также объединенный
кэш второго уровня L2. Структурная схема, отражающая организацию
кэш-памяти в Pentium+, изображена на рис. 4.3.
Рис. 4.3
Кэш-память первого уровня реализована на статическом ЗУ и разделена на две части. Доступ к памяти осуществляется за один-два такта. Размер составляет 16 КБ. Кэш L2 (общий для команд и данных) реализован на
динамическом ЗУ. Доступ осуществляется за пять-семь тактов, размер - от
256 КБ. Для временного хранения информации, которую необходимо записать в ОЗУ, кэш L2 использует буферы записи.
Поддержка выполнения мультимедийного набора команд. Добавлено 57 новых MMX-команд, направленных на обработку мультимедийных
данных. Выполнение этих команд обеспечивается введением дополнительного ММХ-устройства с ММХ-регистрами, которые физически совместимы с регистрами R0 - R7 математического сопроцессора.
4.2. Регистровая организация МП с архитектурой x86/32
В программной модели 32-разрядного микропроцессора выделяют:
основные функциональные регистры; регистры устройства обработки данных с ПТ (математического сопроцессора); системные регистры; регистры
отладки и тестирования.
Группа основных функциональных регистров включает следующие
элементы. Регистры общего назначения предназначены для хранения адресов и данных. Такие регистры являются расширением соответствующих
регистров 16-разрядных МП с архитектурой х86/16. Форматы РОН представлены на рис. 4.4.

53
База 31-24 G D Размер19-16 Доступ База 23-16
База 15-0 Размер 15-0
31 24 23 22 19 16 15 8 7 0
Рис. 4.4
Регистр указателя команд и регистр флагов имеют длину 32 разряда. Биты младшего слова каждого из этих регистров (разряды 0...15) функционально соответствуют аналогичным разрядам в 16-разрядном микропроцессоре. Форматы регистров представлены на рис. 4.5.
Рис. 4.5
Указатель команд в 32-разрядных МП является расширением регистра IP. Он называется EIP и отсчитывает относительный адрес от базы текущего сегмента кодов. Регистр флагов ЕFLAGS содержит флаги состояния 16-разрядного регистра FLAGS, отражающие результат выполнения
команды, а также флаги, которые управляют вводом/выводом, маскируемыми прерываниями, трассировкой. В защищенном 32-разрядном режиме
появились два новых бита: VM – включение режима виртуального МП
I8086 в защищенном режиме; RF – флаг возобновления, который используется в отладочном режиме с применением точек останова.
Количество сегментных регистров увеличено с четырех до шести:
CS - регистр сегмента кодов; SS - регистр сегмента стека; DS, ES, FS, GS регистры сегментов данных. Эти регистры содержат значения селекторов
сегментов. Их форматы аналогичны защищенному 16-разрядному режиму.
Однако связанные с ними дескрипторы отличаются от дескрипторов 16разрядного защищенного режима. Формат несистемных дескрипторов (дескрипторов кодов или данных) представлен на рис. 4.6.
Рис. 4.6

54
Поле База содержит 32-разрядный линейный базовый адрес сегмен-
та. Поле Размер определяет размер сегмента (20 разрядов). Бит G – дробность. Он определяет размерность единиц, в которых интерпретируется
поле Размер. Если G=0, то размерность определяется в байтах и размер
сегмента составляет до 1 МБ, если G=1, то размерность в страницах объемом 4 КБ. Тогда размер сегмента достигает 4 ГБ. Байт D – разрядность, по
умолчанию определяет разрядность формируемого адреса и выбираемого
операнда. При D=0 используются 16-разрядные адреса, а при D=1 – 32разрядные. Поле прав доступа определяется так же, как в защищенном 16разрядном режиме.
Замечание. Системные дескрипторы, предназначенные для хранения
LDT и TSS, имеют формат, аналогичный представленному на рис. 4.6.
Только в них отсутствует бит D, а у дескриптора TSS в поле Тип байта
прав доступа указывается режим: 16- или 32-разрядный.
Регистры математического сопроцессора остались теми же, что и в
реальном режиме МП х86/16. Но формат указателя исключительных ситуаций ЕР изменился и в нем находятся не физические, а логические адреса команды и операнда – селектор:смещение.
В системных регистрах GDTR, IDTR, LDTR, TR изменилась разрядность поля База. Оно стало 32-разрядным. Кроме того, в этом поле регистров GDTR, IDTR задаются не физические, а линейные адреса. В защищенном 32-разрядном режиме нет регистра MSW. Вместо него имеются три
регистра управления: CR0, CR2, CR3.
Регистр управления CR0 содержит поля регистра MSW и биты, определяющие режим работы микропроцессора: бит PG – включение страничной адресации памяти (при PG =1 страничный механизм включён); биты CD, NW – управление режимами работы внутренней кэш-памяти
(CD = 1 – запрещение заполнения кэш-памяти; NW = 1 – запрет сквозной
записи). Регистр CR2 содержит линейный адрес, который вызвал страничную ошибку, например отсутствие страницы в оперативной памяти или
недостаточный уровень привилегий при обращении к странице. В регистре
CR3 находится базовый адрес каталога таблицы страниц (старшие 20 разрядов), а также биты PCD и PWT, управляющие работой кэш-памяти при
страничной адресации (при PCD = 1 загрузка содержимого страницы в
кэш-память запрещена; при PWT = 1 реализуется режим сквозной записи, а
при PWT = 0 – обратной записи).
Регистры отладки (DR0...DR3, DR6, DR7) и тестирования (TR1...
TR12) имеют следующее назначение: 32-разрядные регистры DR0...DR3
содержат линейные адреса четырех контрольных точек останова при отладке; регистр состояния DR6 показывает текущее состояние МП при останове в этих точках; регистр управления DR7 задает условия останова в
контрольных точках; TR1...TR12 используются при тестировании кэш-

55
31 22
21 12
11 0
Каталог
Таблица
Относительный адрес
Линейный адрес
Каталог n
Таблица m
Относительный адрес r
Начало
каталога
Раздел 1023
Раздел n
Каталог
разделов
Раздел 0
…
…
Физический базовый адрес каталога
Рг CR0
Страница 1023
Страница m
Страница 0
…
…
Таблица страниц
для раздела n
Байт 4095
Байт r
Байт 0
…
…
Физический базовый
адрес таблицы
Физический базовый
адрес страницы m
ОП
4 КБ
памяти и буфера ассоциативной трансляции адресов страниц TLB (конкретное назначение каждого из этих регистров зависит от модели МП).
4.3. Страничная организация памяти
Страничная организация памяти применяется только в защищенном
режиме, если в регистре управления CR3 бит PG = 1. Такая организация
позволяет программисту использовать все виртуальное пространство памяти, определяемое архитектурой МП, которое гораздо больше, чем основная физическая память.
При такой организации сегмент памяти разбивается на разделы, а
каждый раздел - на страницы размером 4 КБ. Все разделы сегмента объединяются в каталог, а все страницы сегмента – в таблицу страниц. Для обращения к такому пространству памяти используются линейные адреса.
Такой адрес при страничной организации памяти рассматривается как совокупность трех полей, показанная на рис. 4.7.
Рис. 4.7
Устройство управления памятью транслирует виртуальный линейный адрес в физический по схеме, приведенной на рис. 4.8.
Содержимым каждой строки каталога является указатель входа в
раздел, а содержимым строки таблицы страниц является указатель входа в
Рис. 4.8

56
31 12
11 7
6
5
4
3
2 1 0
Физический базовый адрес
таблицы страниц
Резерв ОС
D
А
PCD
PWT
U/S
R/W
P
страницу. По структуре они аналогичны. Указатель включает в себя физический базовый адрес соответствующей таблицы страниц или страницы
(старшие 20 байт) и атрибуты этой страницы. Формат строки каталога
(таблицы) показан на рис 4.9.
Рис. 4.9
Бит D – модификация. Для элементов каталога разделов значение
бита D является неопределенным. Для таблицы страниц устанавливается
микропроцессором в 1 при записи на данную страницу. Бит А – доступ.
Является признаком доступа в раздел. Используется вместе с битом D для
определения разделов или страниц, содержимое которых подлежит замене
из внешней памяти. Биты PWT и PCD используются для управления работой кэш-памяти при страничной адресации. Бит PCD – запрещение кэширования страницы. При PCD = 1 кэширование запрещено. Бит PWT – бит
обратной записи страниц. Определяет метод обновления внешней кэшпамяти (кэш второго уровня). При PWT = 1 обновление проводится методом сквозной записи, при PWT = 0 – методом обратной записи. Биты U/S
(пользователь/супервизор) и R/W (чтение/запись) используются в механизме защиты страниц. Бит P –присутствие. Разрешает использование данной строки для трансляции адреса.
Буфер ассоциативной трансляции TLB. Страничная организация па-
мяти требует дополнительных затрат времени для преобразования линейного адреса в физический. Эти затраты бывают весьма значительны, если в
каждом цикле производить обращение к ОП для выбора указателя входа в
раздел или страницу. Существенное сокращение времени преобразования
адресов достигается за счёт специализированной внутренней кэш-памяти.
Она называется буфером ассоциации трансляции TLB.
Основой TLB является память с ассоциативной выборкой, которая
содержит 20-разрядные базовые адреса 32-х страниц (20 старших разрядов
физического адреса). Каждый из базовых адресов имеет свой признак (тэг).
В качестве тэга используются старшие 17 разрядов линейного адреса (31 –
15 биты). Буфер TLB состоит из двух модулей памяти (основные и дополнительные) и логики обслуживания. Схема представлена на рис. 4.10.
Основной модуль памяти содержит восемь блоков, каждый из которых обеспечивает входы для 4-х страниц. Вход в определённую страницу
реализуется с помощью размещенной в модуле строки битов. Она содержит информацию о выбираемой странице (базовый адрес, атрибуты) и информацию, необходимую для её выбора (тэг, биты доступа к странице).
Таким образом, основной модуль содержит 32 строки, позволяющие непосредственно, то есть без обращения к каталогу и таблице страниц (которая

57
Атриб.
стр.
находится в ОП), определить базовый физический адрес для одной из 32-х
страниц, параметры которой загружены в TLB.
Рис. 4.10
Работа TLB происходит следующим образом. После формирования
линейного адреса три младших разряда поля Таблицы (биты 14 - 12 линейного адреса) определяют номер одного из восьми блоков TLB. Старшие 17
разрядов линейного адреса (биты 31-15 линейного адреса) сравниваются с
17 битами тэгов, содержащихся в четырёх строках выбранного блока.
Если для какой-либо строки тэг и старшие разряды линейного адреса
совпадают, то указанный в этой строке базовый адрес выдается на адресной линии А31 – А12. Так обеспечивается выборка нужной страницы. В
этом случае реализуется кэш-попадание и не требуется обращение к ОП
для выбора указателей входа в раздел и страницу.
Если базовый адрес нужной страницы отсутствует в TLB, то такой
случай является кэш-промахом. При этом МП выполняет описанную выше
процедуру формирования физического адреса. Полученный при этом 20разрядный базовый адрес вместе с соответствующими семнадцатью разрядами линейного адреса (тэг) заносятся в строку одного из блоков TLB. Номер его задается битами с 14 по 12 линейного адреса (младшие разряды
поля Таблица). Выбор одной из четырех строк адресованного блока, в которую заносится новое содержимое, определяется принятым механизмом
замещения.
Для буфера ассоциативной трансляции принят механизм замещения
наиболее долго неиспользуемой строки (LRU). При этом выбор в блоке за-

58
мещаемой строки определяется тремя битами L0, L1, L2 LRU, которые
хранятся в дополнительном модуле памяти TLB. Логика обслуживания
TLB устанавливает эти биты по мере обращения к соответствующим адресам (строкам). В каждый момент времени сочетание L0, L1, L2 указывает,
к какой из строк данного блока дольше всего не приводилось обращение.
Именно эта строка замещается при кэш–промахе, если все четыре строки
блока ранее заполнены.
МП может формировать физические адреса для 128 КБ оперативной
памяти. При этом доля кэш-попаданий составляет в среднем 98 %. Поля
Атрибуты страниц содержат разряды PCD (запрет кэширования) и PWT
(сквозная запись в странице). Поля доступа содержат следующие разряды:
V - бит достоверности (при V=0 – строка не заполнена); D - бит модифи-
кации; U - бит пользователь/супервизор; W - бит запись/чтение. Назначение последних трех разрядов аналогично битам D, R/W, U/S указателей
входа.
4.4. Организация кэш-памяти
Кэш-память – быстродействующая буферная память ограниченного
объема, которая располагается между МП и относительно медленной ОП.
В процессе работы отдельные блоки информации копируются из ОП в
кэш-память. Когда микропроцессор обращается за командой или данными,
проверяется их наличие в кэш-памяти. Если необходимая информация находится там, то она быстро извлекается. Такой случай обращения называют кэш-попаданием. Если необходимая информация в кэш-памяти отсутствует, то она выбирается из ОП и заносится в кэш-память. Такой случай
называют кэш-промахом.
Такая память может располагаться как внутри микропроцессора, так
и вне его. Соответствие содержимого оперативной памяти и кэш-памяти
обеспечивается определёнными механизмами записи и чтения. Так, при
записи используются механизмы сквозной записи или обратной. При
сквозной записи выполняется одновременное изменение кэш-памяти и ОП.
Такой механизм обычно используется для внутренней кэш-памяти МП.
Недостатками такой организации являются большие затраты времени и
возрастание интенсивности использования системных магистралей.
При обратной записи любое изменение содержимого кэш-памяти вызывает установку специального признака (бита модификации или мусора).
При обновлении содержимого кэш-памяти блок информации, содержащий
установленный бит мусора, переписывается обратно в ОП. Этот механизм
используется в кэш-памяти второго уровня. Его недостатками является
следующее: логика работы здесь сложнее, чем при сквозной записи, следовательно, более сложным является кэш-контроллер; в случае неисправимой ошибки содержимое кэш-памяти теряется и невозможно определить,
содержит ли ОП правильную информацию.

59
Если при чтении произошел кэш-промах и кэширование данной области разрешено, то производится обновление строки кэш-памяти, т.е. новая информация вводится в кэш из ОП. При этом удаляется информация,
отмеченная как недостоверная. Если таковой нет, то используется правило
удаления из кэш-памяти информации, которая дольше всего оказывалась
невостребованной. Логическая организация внутренней кэш-памяти показана на рис. 4.11. Это память ассоциативного типа, состоящая из строк
длиной 16 байт. Строки объединены в 128 наборов по четыре строки в каждом (L0, L1, L2, L3).
Рис. 4.11
Заполнение кэш-памяти осуществляется построчно, т.е. в случае
промаха из ОП в нее копируется целая строка, включающая затребованный
байт. Адресация кэша осуществляется с помощью 28 разрядов адреса, которые делятся на два поля: тэг (21 разряд) и индекс набора (семь разрядов).
В дополнительном массиве кэш-памяти хранятся: признаки наборов биты достоверности строк (свободна-занята) V0, V1, V2, V3, которые устанавливаются при заполнении соответствующих строк и указывают на
возможность их использования; биты B0, B1, B2, которые используются
при обновлении строк в соответствии со стратегией LRU.
В цикле чтения информации семи разрядов сформированного адреса
(А4-А0) выбирают один из наборов, а 21 разряд (А11-А31) сравнивается с
тэгами четырех строк выбранного набора. При совпадении с одним из тэгов имеет место кэш-попадание и в цикле записи производится запись по
заданному адресу как в соответствующую ячейку кэш-памяти, так и в адресуемую ячейку ОП. При кэш-промахе запись производится только в ОП,
а обновление строки кэш-памяти не происходит.

60
Управление функционированием внутренней кэш-памяти первого
уровня осуществляется битами CD и NW регистра управления CR0. Они
определяют четыре режима работы: 1) CD=1, NW=1. Если очистка кэшпамяти произведена, то кэширование запрещено. Если не произведена, то
данные из кэша могут быть прочитаны; 2) CD=1, NW=0. Заполнение кэшпамяти запрещено, но сквозная запись и аннулирование строк разрешены;
3) CD=0, NW=1. Запрещенная комбинация, генерируется исключение;
4) CD=0, NW=0. Кэширование разрешено, нормальный режим работы.
4.5. Режимы работы 32-разрядного микропроцессора
Микропроцессор с архитектурой х86/32 может работать в двух режимах - реальном и защищенном. Во втором случае МП может функционировать еще в трех режимах: в режиме виртуального МП I8086; в защищенном 16-разрядном режиме; в защищенном 32-разрядном режиме.
Реальный режим. Здесь МП выполняет программы, написанные
для МП I8086 и для реального режима МП I80286 и I80386. С точки зрения
программиста, МП в реальном режиме представляет собой более быстрый
МП I8086 с расширенным набором команд и числом регистров. Все программы выполняются с наиболее высоким уровнем приоритета CPL=0.
Физические адреса здесь образуются так же, как и в МП I8086 (сдвиг влево
на 4 разряда содержимого сегментного регистра + смещение). Объем физической памяти составляет 1 МБ, а размеры сегментов фиксированы - 64
КБ. Причем сегменты могут перекрываться. По умолчанию в реальном режиме используются 16-разрядные операнды и адреса. При использовании
префиксов можно обрабатывать 32-разрядные адреса. Однако если эти адреса выходят за пределы сегмента (64 КБ) или адресуемой памяти (1 МБ),
то реализуется прерывание.
Режим виртуального МП I8086 (V86). Этот режим реализуется при
установке в регистре EFLAGS значения признака VM=1. Таким образом, в
режиме V86 МП работает как виртуальный процессор, состоящий из аппаратных средств и программного обеспечения МП I8086 и системного ПО
(монитор V86). Особенности функционирования МП в режиме V86:
а) все программы, выполненные в режиме V86, имеют низкий уровень привилегий: CPL=3. Однако выполнение команд ввода-вывода IN,
OUT, INS, OUTS не зависит от значения поля IOPL;
б) в режиме V86 не осуществляется защита сегментов. Однако может
использоваться страничная организация памяти и соответственно защита
страниц;
в) использование команд, исполняемых только в защищенном режиме, вызывает прерывание;
г) возможность выполнения нескольких задач МП I8086.
Защищенный 16-разрядный режим. Программы, предназначенные
для выполнения в защищенном режиме на МП с архитектурой х86/16 (на-
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]
