- •Архитектура простой микро – эвм, структура простейшей памяти, состав команд.
- •Структура элементарного микропроцессора.
- •Функционирование микро – эвм: выполнение операции сложения.
- •Функционирование микро – эвм: действия на требования прерывания внешнего устройства.
- •Функционирование микро – эвм: использование регистра адреса/данных.
- •Функционирование микро – эвм: использование указателя стека.
- •И нтерфейс с озу.
- •Основные элементы интерфейса портов ввода/вывода.
- •Синхронизация прерыванием передачи данных в устройства ввода/вывода.
- •Интерфейс с реальными портами ввода/вывода.
- •Шины. Основные понятия.
- •Синхронизация шины.
- •Арбитраж шины.
- •Разновидности шин.
- •Разновидности озу.
- •Типы динамической памяти (fpm, edo, bedo, sdram)
- •Разновидности пзу(Постоянная память—rom, from, eprom).
- •Принципы кэширования.
- •Кэширование в процессорах старших поколений.
- •Архитектура микропроцессора intel 8086.
- •Микропроцессор intel 8086: регистры общего назначения, указатель команд, регистр флагов.
- •Внутренние регистры Регистры данных
- •Регистры сегментов
- •Регистры указателей и индексов
- •Указатель команд
- •Сегментация памяти в процессорах intel 8086.
- •Адресация
- •Способы адресации.
- •Режимы для указания адресов переходов.
- •Адресация портов ввода-вывода.
- •Принципы ввода/вывода, ввод/вывод по прерываниям.
- •Блоковые передачи и прямой доступ к памяти.
- •Регистры сегментов. Шесть 16-разрядных регистров содержат значения селекторов сегментов, которые указывают на текущие адресуемые сегменты памяти. Ниже перечислены эти регистры.
- •Режимы работы 32-разрядных процессоров семейства intel.
- •Основные понятия защищенного режима работы.
- •Основные понятия защищенного режима
- •Селекторы и дескрипторы.
- •Многозадачность. Переключение задач.
- •Страничное управление памятью в процессорах Pentium.
- •Страничное управление памятью в процессорах p6.
- •Режим виртуального 8086 (v86 и ev86).
- •Распределение памяти пк.
- •Стандартная память. Верхняя память (uma). Дополнительная память. Стандартная память — Conventional Memory
- •Верхняя память - uma
- •Дополнительная память — Extended и Expanded Memory
- •Основные характеристики озу.
- •Достоверность хранения данных.
- •Процессоры intel 486: пакетный режим передачи данных.
- •Процессоры intel 486: буферы отложенной записи.
- •Процессоры пятого поколения фирмы intel. Основные отличия по сравнению с предыдущими поколениями.
- •Процессоры Pentium
- •Технология mmx. Технология 3dnow!
- •Процессоры 6-го поколения фирмы intel. Основные особенности. Двойная независимая шина.
- •Обзор процессоров шестого поколения
- •Двойная независимая шина
- •Архитектурные принципы построения процессоров.
- •1.Технология cisc
Страничное управление памятью в процессорах p6.
Страничное управление (Paging) является средством организации виртуальной памяти с подкачкой страниц по запросу (Demand-Paged Virtual Memory). В отличие от сегментации, которая организует программы и данные в модули различного размера, страничная организация оперирует с памятью, как с набором страниц одинакового размера. В момент обращения страница может присутствовать в физической оперативной памяти, а может быть выгруженной на внешнюю (дисковую) память. При обращении к выгруженной странице памяти процессор вырабатывает исключение #PF — отказ страницы, а программный обработчик исключения (часть ОС) получит необходимую информацию для свопинга — «подкачки» отсутствующей страницы с диска. Страницы не имеют прямой связи с логической структурой данных или программ. В то время как селекторы можно рассматривать как логические имена модулей кодов и данных, страницы представляют части этих модулей. Учитывая обычное свойство локальности (близкого расположения требуемых ячеек памяти) кода и ссылок на данные, в оперативной памяти в каждый момент времени следует хранить только небольшие области сегментов, необходимые активным задачам. Эту возможность (а следовательно, и увеличение допустимого числа одновременно выполняемых задач при ограниченном объеме оперативной памяти) как раз и обеспечивает страничное управление памятью. В первых 32-разрядных процессорах (начиная с 80386) размер страницы составлял 4 Кбайт. Начиная с Pentium, появилась возможность увеличения размера страницы до 4 Мбайт, одновременно с использованием страниц размером 4 Кбайт. В Р6 имеется возможность расширения физического адреса до 36 бит (64 Гбайт), при котором могут использоваться страницы размером 4 Кбайт и 2 Мбайт.
Базовый механизм страничного управления использует двухуровневую табличную трансляцию линейного адреса в физический (рис.1).
М
еханизм
имеет три части: каталог
страниц
(Page
Directory),
таблицы
страниц
(Page
Table)
и собственно
страницы
(Page
Frame).
Механизм включается установкой бита
PG=1
в регистре СR0.
Регистр CR2
хранит линейный
адрес отказа
(Page
Fault
Linear
Address)
— адрес памяти, по которому был обнаружен
последний отказ страницы. Регистр CR3
хранит физический
адрес каталога страниц
(Page
Directory
Physical
Base
Address).
Его младшие 12 бит всегда нулевые (каталог
выравнивается по границе страницы).
Каталог страниц размером 4 Кбайт содержит 1024 32-битных строки PDE (Page Directory Entry). Каждая строка (рис.2) содержит 20 старших бит адреса таблицы следующего уровня (младшие биты этого адреса всегда нулевые) и признаки (атрибуты) этой таблицы. Индексом поиска в каталоге страниц являются 10 старших бит линейного адреса (А22-А31).
Каждая таблица страниц также имеет 1024 строки РТЕ (Page Table Entry) аналогичного формата (рис.3), но эти строки содержат базовый физический адрес (Page Frame Address) и атрибуты самих страниц. Индексом поиска в таблице являются биты А12-А21 линейного адреса. Физический адрес получается из адреса страницы, взятого из таблицы, и младших 12 бит линейного адреса.
Строки каталога и таблиц имеют следующие биты атрибутов:
Р (Present) — бит присутствия. Р=1 означает возможность использования данной строки для трансляции адреса. Бит присутствия вхождений в таблицы, используемые текущим исполняемым кодом, должен быть установлен. Программный код не должен его изменять «на ходу». Если Р=0, то все остальные биты доступны операционной системе и могут использоваться для получения информации о местонахождении данной страницы.
A (Accessed) — признак доступа, который устанавливается перед любым чтением или записью по адресу, в преобразовании которого участвует данная строка.
D (Dirty) — признак, который устанавливается перед операцией записи по адресу, в преобразовании которого участвует данная строка. Таким образом помечается использованная — «грязная» страница, которую в случае замещения необходимо выгрузить на диск.
Биты Р, А, D модифицируются процессором аппаратно в заблокированных шинных циклах. При их программной модификации в многопроцессорных системах должен использоваться префикс LOCK, гарантирующий сохранение целостности данных.
Поле OS Reserved программно используется по усмотрению ОС и может хранить, например, информацию о «возрасте» страницы, необходимую для реализации замещения по алгоритму LRU (Least Recently Used — наиболее долго не использовавшаяся страница замещается первой).
Бит PWT (Page Write Through) определяет политику записи при кэшировании, а бит PCD (Page Cache Disable) запрещает кэширование памяти для обслуживаемых страниц или таблиц (используются на процессорах 486+).
Бит PS (Page Size) задает размер страницы (только в РDЕ). При РS=0 страница имеет размер 4 Кбайт, PS=1 используется в расширениях РАЕ и PSE.
Механизм защиты страниц различает два уровня привилегий: пользователь (User) и супервизор (Supervisor). Пользователю соответствует уровень привилегий 3, супервизору — уровни 0, 1 и 2. Строки таблиц имеют атрибуты защиты страниц — биты U (User) и W (Writable — возможна запись); в некоторых описаниях те же биты называются U/S (User/Supervisor) и R/W (Read/Write). Эти атрибуты в строке каталога страниц относятся ко всем страницам, на которые ссылается данная строка через таблицу второго уровня. Атрибуты защиты в строке таблицы страниц относятся к конкретной странице памяти, которую она обслуживает. Защита на уровне страниц включается установкой бита WP (Write Protect) в регистре СR0, по аппаратному сбросу он обнуляется.
Бит G (Global), появившийся в Р6, определяет глобальность страницы. Он анализируется только в строке, указывающей на страницу физической памяти (в РТЕ для страниц в 4 Кбайт, в РDЕ - для страниц 2 Мбайт или 4 Мбайт). Этот бит, управляемый только программно, позволяет пометить страницы глобального использования (например, ядра ОС). При установленном бите РGЕ в регистре CR4 строки с указателями на глобальные таблицы не будут аннулироваться в TLB при загрузке CR3 или переключении задач, что снижает издержки обслуживания виртуальной памяти.
Механизм страничного управления при обращении к памяти может порождать исключение #PF. Оно возникает при обращении к отсутствующей странице и при нарушении прав доступа, определяемых уровнем привилегий и битами U и W. Для идентификации причины отказа в стек помещается 16-битный код ошибки, формат которого приведен на рис.4. Хотя названия бит совпадают с атрибутами строк, их назначение отличается. Бит U/S указывает на уровень привилегий, при котором произошел отказ (1 пользователь, 0 — супервизор). Бит W/R указывает на операцию, при которой произошел отказ (0 — чтение, 1 — запись). Бит Р указывает на причину отказа (Р=1 — отсутствие страницы в памяти, Р—0 — нарушение защиты). Биты U не используются. Проверка защиты на уровне страниц выполняется после проверок защиты сегментов. Если при попытке доступа к памяти сработала защита сегментов, то проверка на уровне страниц уже не выполняется.
Обращение при каждой операции доступа к памяти к двум таблицам, расположенным в памяти, существенно снижает производительность. Для предотвращения этого замедления в процессор введен буфер ассоциативной трансляции TLB (Translation Look aside Buffer) для хранения интенсивно используемых строк таблиц. В процессорах 80386 и 486 буфер представляет собой четырехканальный наборно-ассоциативный кэш на 32 строки таблиц трансляции. Такой размер позволяет хранить информацию о трансляции 128 Кбайт памяти, что в большинстве случаев мультизадачного использования дает коэффициент кэш-попаданий 98%, то есть только 2% обращении к памяти требуют дополнительных обращений к таблицам. В процессоре Pentium имеются раздельные TLB для инструкций и данных, а в Р6 буферы разделены еще и по размеру обслуживаемых страниц (4 Кбайт и 2 Мбайт/4 Мбайт).
Когда страничное управление разрешено (бит PG=1 в CR0), блок страничной переадресации получает 32-битный линейный адрес от блока сегментации. Его старшие 20 бит сравниваются со значениями из TLB, и, в случае попадания, физический адрес вычисляется по начальному адресу страницы, полученному из TLB, а затем выводится на шину адреса. Если соответствующей строки в TLB нет, производится чтение строки из страничного каталога. Если строка имеет бит Р=1 (таблица присутствует в памяти), в ней устанавливается бит доступа А и производится чтение указанной ею строки из таблицы второго уровня. Если и в этой строке Р=1, процессор обновляет в ней биты А и D, вычисляет физический адрес и, наконец, производит обращение по этому адресу. Если на этих этапах встречается Р=0, вырабатывается исключение #PF, обработчик которого должен принять меры по загрузке затребованной страницы в оперативную память. Поскольку это исключение классифицируется как отказ, после его обработки (успешной) повторяется доступ к затребованной ячейке памяти. Во время его обработки может еще раз возникнуть исключение #PF, но это не приведет к двойному отказу.
Обработчик исключения #PF, поддерживающий подкачку страниц по запросу, должен скопировать страницу с внешней (дисковой) памяти в оперативную, загрузить адрес страницы в строку таблицы и установить бит присутствия Р. Поскольку в TLB могла оставаться старая некорректная копия строки, необходимо объявить содержимое TLB недействительным (произвести очистку). После этого процесс, породивший исключение, может быть продолжен.
Буферы TLB для прикладных задач (CPL>0) программно невидимы, с ними работает только ОС с CPL=0. Операционная система должна корректно сгенерировать начальные таблицы трансляции и обрабатывать исключения отказов. В случае изменения таблиц (и при изменении значений бита Р в любых таблицах) она должна очищать буферы TLB (целиком или конкретные вхождения). Очистка всех буферов (кроме глобальных вхождений при установленном бите PGE) происходит при загрузке регистра CR3, выполняемой явно или по переключении задач. При изменении отображения одиночной страницы очистка может выполняться по инструкции INVLPG, которая по возможности очистит только конкретное вхождение в TLB, но в ряде случаев может обновить и весь буфер.
Процессоры Pentium и старше кроме стандартных страниц 4 Кбайт могу оперировать и страницами размером 4 Мбайт, что позволяет уменьшить накладные расходы на обслуживание страничного режима при возросших потребностях программ в памяти. Расширение размера страницы (Page Size Extension) разрешается установкой бита PSE в регистре CR4. При CR4.PSE=0 страничное преобразование работает по базовой схеме (см. рис.1). При CR4.PSE=l процессор анализирует бит 7, определенный теперь как PS (Page Size — размер страницы) строки каталога страниц (РDЕ). Если PDE.PS=0, эта строка ссылается на таблицу 4-килобайтных страниц, и обработка идет по схеме рис.5. Если PDE.PS=1, то биты 31:12 этой строки являются базовым физическим адресом страницы размером 4 Мбайт — здесь ступень таблицы страниц исключена. Формат строки каталога (РDЕ) для страницы с расширенным размером приведен на рис.6.
Процессоры Р6 также поддерживают расширение физического адреса (Physical Address Extensions) до 64 Гбайт. Это расширение включается установкой бита РАЕ в регистре CR4, при этом расширение PSE становится недоступным (бит PSE игнорируется). У процессоров 6-го поколения разрядность внешней шины адреса составляет 36 бит. Расширенная разрядность адреса возможна лишь в режиме РАЕ, при РАЕ=0 биты внешней шины адреса А[35:32] принудительно обнуляются. Поскольку архитектура предполагает разрядность линейного адреса только 32 бит, старшие 4 бита могут появиться только в результате работы блока страничной переадресации. Здесь блок страничной переадресации оперирует уже 64-битными элементами. 32-битный регистр CR3 хранит указатель (Page Directory Base Pointer) на маленькую табличку 64-битных указателей, находящуюся в первых 4 Гбайт памяти. Два старших бита [31:30] линейного адреса выбирают из этой таблицы указатель на одну из 4 таблиц каталогов. Следующие 9 бит [29:21] линейного адреса выбирают элемент из этой таблицы, который, в зависимости от бита PS, может быть как ссылкой на таблицу страниц (PS=0), так и базовым адресом страницы памяти (PS=1). При РS=0 биты [20:12] линейного адреса выбирают страницу размером 4 Кбайт из таблицы, а биты [11:0] являются смещением в этой странице. При РS=1 биты [20:0] линейного адреса являются смешением внутри страницы размером 2 Мбайт. Схемы страничного преобразования для режима РАЕ приведены на рис.7 и 8, а структура элементов — на рис.9.
Наличие у процессора расширений размеров страниц и физического адреса можно обнаружить с помощью инструкции CPUID. Если процессор эту инструкцию не поддерживает, то у него нет и этих средств.
