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

Организация вычислительных систем на базе микропроцессоров с архитектурой x86. Учебное пособие

.pdf
Скачиваний:
0
Добавлен:
07.09.2026
Размер:
1 Мб
Скачать
51
Для того чтобы две команды могли выполняться параллельно, они должны удовлетворять следующим основным условиям совместного вы­полнения: обе команды должны быть простыми; между ними не должно быть регистровых зависимостей типа “запись после чтения” или “чтение после записи”; ни одна из команд не может содержать одновременно сме­щение и непосредственный операнд и т.д.
Опишем стадии конвейера МП Pentium более подробно.
1. Предвыборка команд. На первой стадии осуществляется предвы­борка команд в один из буферов устройства предвыборки команд из кэша команд или из ОП, если следующей команды в кэше нет. Предвыборка ко­манд с заполнением буферов предвыборки производится с учетом прогно­зирования ветвлений, что позволяет повысить производительность Pentium на 25 %.
2. Декодирование команд. На второй стадии устройство декодирова- ния декодирует две команды. Декодеры в соответствии с правилами спа­ривания команд определяют, сколько команд (одна или две) будут выпол­няться одновременно.
3. Генерация адреса. На третьей стадии с помощью схемы генерации адреса определяются адреса операндов в памяти.
4. Выполнение. На четвертой стадии операционные устройства Penti­um осуществляют операции в АЛУ конвейеров 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 (на-
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]