Организация вычислительных систем


         

приведены основные свойства процессоров


В табл. 2. 1 приведены основные свойства процессоров фирмы Intel, от процессора 8086 до первых представителей семейства Pentium.

Таблица 2.1. Основные свойства процессоров фирмы Intel
Тип ЦП Свойства80868088802868038680486PentiumP6
1. Год выпуска1978197919821985198919931995
2. Проектные нормы (мкм)331,511-0,80,8-0,60,6-0,35
3. Количество транзисторов29000290001300002750001млн 200т3млн 100т9млн 500т
4. Разрядность ШД/ША16/208/2016/2432/3232/3264/3264/32 (36)
5. Максимальный объем физ. памяти1 Мб1 Мб16 Мб4 Гб4 Гб4 Гб4 Гб (64 Гб)
6. Максимальный объем виртуальной памяти1 Мб1 Мб1 Гб64 Тб64 Тб64 Тб64 Тб
7. Максимальный размер сегмента64 Кб64 Кб64 Кб/4 Гб64 Кб/4 Гб64 Кб/4 Гб64 Кб/4 Гб64 Кб/4 Гб
8. Размер очереди предвыборки (байт)661632323232
9. Размер операндов (бит)8, 168, 168, 168, 16, 328, 16, 32, 648, 16, 32, 648, 16, 32, 64
10. Размер регистров (бит)8, 168, 168, 168, 16, 328, 16, 328, 6, 328, 16, 32
11. Разбиение на страницыНетНетНетЕстьЕстьЕстьЕсть
12. Рабочая частота (МГЦ)5, 8, 105, 8, 108, 10, 12, 1620, 25,33, 4025-13360-233166, 180, 200
13. Защита памятиНетНетЕстьЕстьЕстьЕстьЕсть
14. Сопроцессор808780878028780287, 80387FPUFPUFPU

Архитектура ЦП 8086: основные регистры, организация памяти


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

Центральный процессор 8086 имеет четыре 16-битных регистра общего назначения AX, BX, CX, DX, четыре регистра-указателя SI, DI, BP и SP, четыре регистра сегментов CS, DS, ES, SS, один 16-битовый регистр флагов FLAGS и указатель программ IP (см. рис.2.1)


Рис. 2.1.  Программная модель ЦП 8086

Регистр-аккумулятор AX используется для хранения промежуточных данных и результатов.

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

Регистр-счетчик CX предназначен для управления числом итераций в цикле или числом повторений в командах REP в строковых операциях.

Регистр данных DX используется как вторичный аккумулятор для хранения промежуточных данных и результатов.

Индексный регистр-источник SI применяется в качестве указателя адреса байта или слова в таких строковых командах, как LODS ("загрузить строку"), CMPS ("сравнить строку"), MOVS ("переслать строку"). При базово-индексной адресации содержимое регистра SI может суммироваться с содержимым регистра BX.

Индексный регистр-источник DI используется как указатель назначения для адреса байта или слова в строковых командах, таких как SCAS (сканировать строку), CMPS, MOVS, STOS (записать строку). При базово-индексной адресации для получения адреса операнда содержимое регистра DI может суммироваться с содержимым регистра BX.

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

Регистр-указатель базы BP используется как дополнительный указатель для работы с данными в стековых структурах.

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

Центральный процессор 8086 имеет четыре 16-битных регистра общего назначения AX, BX, CX, DX, четыре регистра-указателя SI, DI, BP и SP, четыре регистра сегментов CS, DS, ES, SS, один 16-битовый регистр флагов FLAGS и указатель программ IP (см. рис.2.1)


Рис. 2.1.  Программная модель ЦП 8086

Регистр-аккумулятор AX используется для хранения промежуточных данных и результатов.

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

Регистр-счетчик CX предназначен для управления числом итераций в цикле или числом повторений в командах REP в строковых операциях.

Регистр данных DX используется как вторичный аккумулятор для хранения промежуточных данных и результатов.

Индексный регистр-источник SI применяется в качестве указателя адреса байта или слова в таких строковых командах, как LODS ("загрузить строку"), CMPS ("сравнить строку"), MOVS ("переслать строку"). При базово-индексной адресации содержимое регистра SI может суммироваться с содержимым регистра BX.

Индексный регистр-источник DI используется как указатель назначения для адреса байта или слова в строковых командах, таких как SCAS (сканировать строку), CMPS, MOVS, STOS (записать строку). При базово-индексной адресации для получения адреса операнда содержимое регистра DI может суммироваться с содержимым регистра BX.

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

Регистр-указатель базы BP используется как дополнительный указатель для работы с данными в стековых структурах.


В режиме базово- индексной адресации содержимое регистра BP может суммироваться с содержимым регистров SI или DI.

Адресное пространство памяти процессора, откуда происходит выборка команд и данных, разделено на сегменты (области памяти) емкостью до 64 Кбайт каждый. Процессор 8086 имеет прямой доступ одновременно к четырем сегментам.

Начальный адрес сегмента может быть установлен прикладной программой и всегда должен начинаться с 16-байтовых границ. Базовый адрес сегмента получается делением действительного физического адреса начальной ячейки сегмента на 16. Базовые адреса содержатся в одном из четырех 16-битных сегментных регистров CS, DS, ES и SS. На расположение сегмента не накладывается никаких специальных ограничений, кроме одного: он должен быть на границе 16 байт (т.е. физический адрес начальной ячейки должен делиться на 16). Сегменты могут быть смежными, разделенными, перекрываться частично или полностью.

Регистры сегментов используются для идентификации текущего сегмента адресного пространства.

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

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

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

Регистр сегмента стека SS содержит начальный адрес стековой структуры в памяти ЭВМ.

Указатель команд IP содержит адрес следующей команды в сегменте памяти, определяемом содержимым регистра сегмента команд CS.

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



В режиме базово- индексной адресации содержимое регистра BP может суммироваться с содержимым регистров SI или DI.

Адресное пространство памяти процессора, откуда происходит выборка команд и данных, разделено на сегменты (области памяти) емкостью до 64 Кбайт каждый. Процессор 8086 имеет прямой доступ одновременно к четырем сегментам.

Начальный адрес сегмента может быть установлен прикладной программой и всегда должен начинаться с 16-байтовых границ. Базовый адрес сегмента получается делением действительного физического адреса начальной ячейки сегмента на 16. Базовые адреса содержатся в одном из четырех 16-битных сегментных регистров CS, DS, ES и SS. На расположение сегмента не накладывается никаких специальных ограничений, кроме одного: он должен быть на границе 16 байт (т.е. физический адрес начальной ячейки должен делиться на 16). Сегменты могут быть смежными, разделенными, перекрываться частично или полностью.

Регистры сегментов используются для идентификации текущего сегмента адресного пространства.

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

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

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

Регистр сегмента стека SS содержит начальный адрес стековой структуры в памяти ЭВМ.

Указатель команд IP содержит адрес следующей команды в сегменте памяти, определяемом содержимым регистра сегмента команд CS.

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


Архитектура ЦП 80286: основные регистры, режимы работы, адресация памяти


Программная модель процессора 80286 включает 14 регистров ЦП 8086, пять новых регистров:

GDTR - 40-разрядный регистр определяет размер и положение глобальной дескрипторной таблицы;LDTR - 16-разрядный регистр определяет базовый адрес локальной дескрипторной таблицы;IDTR - 40-разрядный регистр определяет начало и размер таблицы векторов прерываний;MSW - слово состояния программы (, если флаг PE = 1 в MSW, то процессор переключается в защищенный режим).;TR - 16-разрядный регистр содержит селектор сегмента состояния задачи, используется для многозадачности,

и шесть программно недоступных регистров, связанных с CS, DS, ES, SS, GDTR, IDTR.



Формирование линейного адреса без участия селекторов


В режиме реального адреса используется упрощенная схема формирования линейного адреса.

В этом случае базовый адрес сегмента берется из сегментного регистра. Значение в сегментном регистре представляет собой биты 4-19 базового адреса сегмента. Из этого следует, что сегменты в этих режимах выровнены по 16-байтной границе и все сегменты начинаются в пределах нижнего мегабайта линейного адресного пространства. Действительный физический адрес получается умножением на 16 базового адреса сегмента (рис. 2.2). Предел для всех сегментов одинаков. В режиме реального адреса предел сегмента - 64 Кбайт.


Рис. 2.2.  Формирование физического адреса в реальном режиме





Формирование линейного адреса в защищенном режиме


Значения, помещаемые в сегментные регистры, называются селекторами. Селектор содержит индекс дескриптора, определяющий номер записи в дескрипторной таблице, бит TI, указывающий, к какой дескрипторной таблице производится обращение LDT (TI = 1) или GDT (TI = 0), а также запрашиваемые права доступа к сегменту - RPL (рис. 2.3.).


Рис. 2.3.  Структура селектора

По указанному в селекторе номеру записи в соответствующей (бит TI селектора) дескрипторной таблице определяется дескриптор сегмента.

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

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

Для определения физического адреса базовый адрес сегмента суммируется со смещением.

Существуют две обязательных дескрипторных таблицы - глобальная (GDT) и дескрипторная таблица прерывания (IDT), - а также множество (до 8192) локальных дескрипторных таблиц (LDT), из которых в одинединый момент времени процессору доступна только одна. Расположение дескрипторных таблиц определяется регистрами процессора GDTR, IDTR, LDTR.

Регистры GDTR и IDTR - содержат базовый адрес и предел дескрипторной таблицы.

Программно доступная часть регистра LDTR - 16 бит, которые являются селектором LDT. Дескрипторы LDT находятся в GDT. Однако, чтобы не обращаться каждый раз к GDT, в процессоре имеется теневая (программно недоступная) часть регистра LDTR, в которую процессор помещает дескриптор LDT при каждой перегрузке селектора в регистре LDTR.



Режимы работы


С появлением Inte-l286 впервые стали говорить о различных режимах работы IA-32. Это первый представитель данного семейства микропроцессоров, в котором были реализованы многозадачность и защищенная архитектура. Чтобы обеспечить совместимость с предыдущими представителями этого семейства (8086/88, 80186/188), в Inte-l286 было реализовано два режима функционирования: режим реального адреса (режим эмуляции 8086) и защищенный режим, в котором используются все возможности МП. В последующих поколениях МП этого семейства защищенный режим становится основным режимом работы.



Какие устройства составляют системное ядро


Какие устройства составляют системное ядро ПК?При инициализации ПК информация о проверке каких устройств выводится на эк-ран дисплея?С какого процессора семейства х86 количественные изменения в архитектуре кри-сталла перешли в качественные?Какими регистрами дополнилась программная модель ЦП 80286?Что такое селектор? С чем связано его появление? Какова структура селектора?Как формируется линейный адрес в режиме реальных адресов и в режиме системного управления?Что такое дескриптор? Какова структура дескриптора?Как формируется линейный адрес в защищенном режиме?Что находится в регистрах GDTR, IDTR и LDTR?Каково содержимое регистра TR? Для чего он нужен?

Инструкция микропроцессора может содержать следующие


Инструкция микропроцессора может содержать следующие поля:

префиксКОПMod R/MSIBсмещениенепосредственный операнд
0/1 байт1/2 байта0/1 байт0/1 байт0/1/2/4 байта0/1/2/4 байта
Префикс - необязательная часть инструкции, которая позволяет изменить некоторые особенности ее выполнения. В команде может быть использовано сразу несколько префиксов разного типа. Типы префиксов: командные префиксы (префиксы повторения) REP, REPE/REPZ, REPNE/REPNZ; префикс блокировки шины LOCK; префиксы размера; префиксы замены сегмента.

КОП - код операции.

Байт "Mod R/M" определяет режим адресации, а также иногда дополнительный код операции. Необходимость байта "Mod R/M" зависит от типа инструкции.

Байт SIB (Scale-Index-Base) определяет способ адресации при обращении к памяти в 32-битном режиме. Необходимость байта SIB зависит от режима адресации, задаваемого полем "Mod R/M".

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

На размер инструкции накладывается ограничение в 15 байт. Инструкция большего размера может получиться при некорректном использовании большого количества префиксов. В IA-32 в таком случае генерируют исключение #13.

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

Для совместимости с 16-битными процессорами архитектура IA-32 использует одинаковые коды для инструкций, оперирующих как с 16-битными, так и 32-битными операндами. Новая архитектура предусматривает также новые возможности при указании адреса для операнда в памяти. Как процессор будет считать операнд или его адрес, зависит от эффективного размера операнда и эффективного размера адреса для данной команды. Эти значения определяются на основе режима работы, бита D дескриптора используемого сегмента и наличия в инструкции определенных префиксов.

Непосредственный режим адресации подразумевает включение операнда-источника в код инструкции.
Операнд может быть 8-битовым или 16-битовым, если значение эффективного размера операнда - 16. Операнд может быть 8-битовым или 32-битовым, если значение эффективного размера операнда - 32. Обычно непосредственные операнды используются в арифметических инструкциях.

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

В некоторых случаях, (например, в инструкциях DIV и MUL) могут использоваться пары 32-битных регистров (например, EDX:EAX), образуя 64-битный операнд.

Адресация через порт ввода-вывода подразумевает получение операнда или сохранение операнда через пространство портов ввода-вывода. Адрес порта ввода-вывода либо непосредственно включается в код инструкции, либо берется из регистра DX.

Очень распространенный способ адресации операнда - адресация через память. Таким образом, может быть указан операнд-источник или операнд-приемник. Следует отметить, что процессор не позволяет одновременно задавать оба операнда через память (за исключением некоторых цепочечных команд).

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

Смещение в сегменте (эффективный или исполнительный адрес - EA) может быть вычислено на основе значений регистров общего назначения и/или указанного в коде инструкции относительного смещения, при этом любой или даже несколько из указанных компонентов могут отсутствовать:

EA = BASE + (INDEX*SCALE) + DISPLACEMENT

Такая схема позволяет в языках высокого уровня и на языке Ассемблера легко реализовать работу с массивами.


Регистры


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

Восемь регистров общего назначения имеют длину в 32 бит и содержат адреса или данные. Они поддерживают операнды-данные длиной 1, 8, 16, 32 и (при использовании двух регистров) 64 бит; битовые поля от 1 до 32 бит; операнды-адреса длиной 16 и 32 бит. Эти регистры называются EAX, EBX, ECX, EDX, ESI, EDI, EBP, ESP. Доступ к младшим 16 бит этих регистров выполняется независимо при использовании соответствующих имен 16-битных регистров: AX, BX, CX, DX, SI, DI, BP и SP. Также могут использоваться индивидуально младший (биты 0-7) и старший (биты 8-15) байты регистров AX, BX, CX, DX. Им соответствуют обозначения AH, DH, CH, BH и AL, DL, CL, BL.

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

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

EAX - аккумулятор, операнд-источник или приемник результата (некоторые инструкции могут быть короче на один байт при использовании EAX);EBX - указатель на данные в сегменте DS;ECX - счетчик для цепочечных (например, MOVS) и циклических (с префиксом REP) инструкций;EDX - адрес порта ввода-вывода для инструкций IN/INS, OUT/OUTS;ESI - указатель на операнд-источник в сегменте DS для цепочечных инструкций;EDI - указатель на операнд-приемник в сегменте ES для цепочечных инструкций;EBP - указатель на данные в сегменте SS.

МП включает шесть непосредственно доступных 16-битных регистров сегментов. С каждым сегментным регистром ассоциирован программно-недоступный кэш дескриптора соответствующего сегмента, содержащий базовый адрес сегмента в линейном адресном пространстве, предел сегмента и атрибуты сегмента. Этот кэш заполняется при загрузке значения в сегментный регистр.
В реальном режиме предел сегмента всегда 0FFFFh, атрибуты игнорируются, а базовый адрес вычисляется сдвигом значения селектора на 4 бита влево. В защищенном режиме кэш заполняется соответствующими значениями из дескрипторной таблицы.

Не все сегментные регистры равнозначны. Регистр CS хранит селектор сегмента кода. МП извлекает очередную инструкцию для исполнения, формируя логический адрес из селектора в CS и смещения в регистре EIP. Значение этого регистра нельзя изменить непосредственно, оно меняется в командах межсегментного перехода (FAR JMP), межсегментного вызова (FAR CALL), при вызове обработчика прерывания (INT) и при возврате из далекой процедуры (RETF) или обработчика прерывания (IRET).

Регистр SS хранит селектор сегмента стека. Стек используется для передачи параметров подпрограммам и для сохранения адреса возврата при вызове подпрограммы или обработчика прерывания. Вершиной стека считается байт, логический адрес которого образуется из селектора в регистре SS и смещения в регистре ESP. Программа может непосредственно изменить значение SS, что дает ей возможность переключаться между несколькими стеками. Причем на время выполнения команды MOV SS,xxxx и одной команды, следующей за ней (обычно это MOV ESP,xxxx), запрещаются маскируемые и блокируются немаскируемые прерывания.

Регистры DS, ES, FS и GS хранят селекторы сегментов данных. Если инструкция обращается к памяти, но содержит только смещение, то считается, что она обращается к данным в сегменте DS. Сегмент ES может использоваться без явного указания в цепочечных командах. Сегменты FS и GS используются при обращении к памяти только при явном использовании в инструкции префиксов этих сегментов.

Указатель команд (EIP) является 32-разрядным регистром. Он содержит смещение следующей команды, подлежащей выполнению. Относительный адрес отсчитывается от базового адреса сегмента исполняемой задачи. Указатель команд непосредственно недоступен программисту, но он изменяется явно командами управления потоком, прерываниями и исключениями (JMP, CALL, RET, IRET, команды условного перехода).


Получить текущее значение EIP можно, если выполнить команду CALL, а затем прочитать слово на вершине стека.

Регистр системных флагов EFLAGS содержит группу флагов состояния, управления и системных флагов. Младшие 16 бит регистра представляют собой 16-разрядный регистр флагов и состояния МП 8086, называемый FLAGS, который наиболее полезен при исполнении программ для МП 8086 и Intel-286. Некоторые из флагов могут быть изменены специально предназначенными для этой цели инструкциями. Для изменения или проверки группы флагов можно воспользоваться следующими командами:

LAHF/SAHF - загрузка/сохранение младших 8 битов регистра флагов в регистре AH;PUSHF/POPF - помещение/извлечение из стека младших 16 битов регистра флагов;PUSHFD/POPFD - помещение/извлечение из стека 32-битного регистра EFLAGS.

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

Регистр глобальной дескрипторной таблицы (GDTR). Содержит 32-битный линейный адрес и 16-битную границу глобальной дескрипторной таблицы. Значение этого регистра можно загрузить/сохранить при помощи привилегированных инструкций LGDT/SGDT. В реальном режиме этот регистр не используется. Перед переходом в защищенный режим в этот регистр следует загрузить корректные значения.Регистр локальной дескрипторной таблицы (LDTR). Содержит 16-битный селектор локальной дескрипторной таблицы. С регистром связан программно-недоступный кэш дескриптора для хранения базового адреса, предела и атрибутов соответствующей дескрипторной таблицы. Значение этого регистра можно загрузить/сохранить при помощи привилегированных инструкций LLDT/SLDT. В реальном режиме этот регистр не используется, и попытка обращения к нему генерирует особый случай "недействительный код операции" (исключение #6). С каждой задачей в защищенном режиме может быть связана своя локальная дескрипторная таблица, поэтому селектор LDT хранится в TSS и автоматически загружается при переключении задач.Регистр таблицы дескрипторов прерываний (IDTR).


Указывает на таблицу точек входа в программы обработки прерываний. Регистр содержит 32-битный линейный базовый адрес и 16-битный предел таблицы. Значение этого регистра можно загрузить/сохранить при помощи привилегированных инструкций LIDT/SIDT. При инициализации МП базовый адрес IDT устанавливается в 0, а предел - 0FFFFh. В реальном режиме эта таблица хранит 4-байтные векторы прерываний, а в защищенном - 8-байтные дескрипторы шлюзов обработчиков прерываний и исключений. Это единственный регистр среди перечисленных, который используется в реальном режиме.Регистр задачи (TR). Указывает на информацию, необходимую МП для определения текущей задачи. Регистр содержит 16-битный селектор дескриптора сегмента состояния задачи. С регистром связан программно-недоступный кэш дескриптора TSS для хранения базового адреса, предела и атрибутов соответствующего сегмента состояния задачи. Значение этого регистра можно загрузить/сохранить при помощи привилегированных инструкций LTR/STR. В реальном режиме этот регистр не используется, и попытка обращения к нему генерирует особый случай "недействительный код операции" (исключение #6).

МП имеет четыре 32-разрядных регистра управления CR0-CR4, в которых хранятся флаги состояния МП или глобальные флаги. Вместе с регистрами системных адресов эти регистры хранят информацию о состоянии МП, которая влияет на все задачи в системе. Системным программистам регистры управления доступны только через варианты команды MOV, которые позволяют их загружать или сохранять в регистрах общего назначения.

Шесть доступных регистров отладки (DR0-DR3, DR6, DR7, регистры DR4 и DR5 зарезервированы) расширяют возможности отладки. Они устанавливают точки останова по данным и позволяют устанавливатьзадавать точки останова по командам без модификации сегментов программ. Регистры DR0-DR3 предназначены для хранения четырех линейных адресов точек останова. Регистр DR6 отражает текущее состояние точек останова. Регистр DR7 задает условие для точек останова.

В МП Intel-386 и Intel-486 использовались также 2 регистра страничных проверок (TR6 и TR7), которые позднее были исключены из архитектуры IA-32.


можно рассмотреть на примере


Базовую структуру микропроцессоров (МП) IA- 32 можно рассмотреть на примере Intel-386 (рис. 3.1). В структуре Intel-386 можно выделить шесть основных блоков, работающих параллельно: блок интерфейса с магистралью, блок предварительной выборки команд, блок декодирования команд, исполнительный блок, блок управления сегментами и блок страничной трансляции.


увеличить изображение
Рис. 3.1.  Структура микропроцессора Intel-386

Блок интерфейса с магистралью содержит драйвер адреса, схемы управления размером адреса и конвейером, мультиплексор, приемопередатчики и др. Этот блок обеспечивает интерфейс между МП и его окружением. Он принимает внутренние запросы для выборки команд от блока предварительной выборки команд и для обмена данными с исполнительным блоком и устанавливает приоритет этих запросов. Одновременно он генерирует или обрабатывает сигналы для исполнения текущего цикла магистрали. К ним относятся сигналы адреса, данных и управления для обращения к внешней памяти и устройствам ввода-вывода. При помощи схемы арбитра запросов блок управляет интерфейсом с внешними задатчиками магистрали и сопроцессорами. В МП Intel-486 (рис. 3.2) этот блок был дополнен схемой управления паритетом (выравниванием) и схемой управления пакетами. На основе последней был реализован специальный режим работы магистрали - режим пакетирования. В этом режиме при передаче 4 слов на магистрали выставляется только адрес первого, что позволяет существенно сократить время обмена данными с оперативной памятью или внешним кэшем.


увеличить изображение
Рис. 3.2.  Структура микропроцессора Intel-486

Таблица 3.1. Порядок передачи 4 слов (64 бита) на системной магистралиТактКонвейеризация Intel-286Режим пакетирования Intel-486
1Адрес 1 словаАдрес 1 слова
2Передача 1 слова---
3Адрес 2 словаПередача 1 слова
4Передача 1 словаПередача 2 слова
5Адрес 3 словаПередача 3 слова
6Передача 1 словаПередача 4 слова
7Адрес 4 слова
8Передача 1 слова
Для того чтобы заранее получать команды или данные перед их фактическим использованием, существует функция опережающего просмотра программы, которую в Intel-386 выполняет блок предвыборки команд.
Когда блок интерфейса с магистралью не занимает цикла магистрали для исполнения команды, блок предвыборки команд использует его для последовательной выборки из памяти байтов команд. Эти команды хранятся в 16-байтовой очереди команд в ожидании обработки блоком декодирования команд.

Блок декодирования команд преобразует байты команды из этой очереди в микрокод. Декодированные команды в ожидании обработки исполнительным блоком хранятся в очереди команд, работающей по принципу FIFO (First In First Out). В Intel-386 эта очередь имеет размер 3 команды, а в Intel-486 - уже 5 команд, что позволяет этому МП при некоторых условиях выполнять по одной команде за цикл. Непосредственные данные и относительные адреса в коде операции также берутся из очереди команд.

Исполнительный блок выполняет команды из очереди команд и взаимодействует со всеми другими блоками, нужными для завершения выполнения команды. Для ускорения выполнения команд с обращением к памяти исполнительный блок приступает к их исполнению до завершения выполнения предыдущей команды. Так как команды с обращением к памяти встречаются очень часто, то благодаря такому перекрытию по времени производительность повышается. В МП Pentium исполнительный блок реализован в виде двух параллельных конвейеров (u и v), что позволяет ему выполнять до двух команд за такт. Это архитектурное решение названо суперскалярностью. Оно получило дальнейшее развитие в МП подсемейства P6 (Pentium Pro, Pentium II, Pentium III), где исполнительный блок представлен уже тремя конвейерами. Особенностью конвейеров P6 является динамическое выполнение (предсказание ветвлений, спекулятивное выполнение, изменение последовательности команд).

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



Интеграция в МП i486DX блока вычислений с плавающей точкой (Floating Point Unit) резко повысила производительность вещественной арифметики. В МП Pentium MMX был добавлен набор команд, позволяющий использовать регистры блока FPU для параллельной обработки пакета целочисленных данных: SIMD - "одна инструкция - несколько операндов". В МП Pentium III эта технология была расширена, за счет добавленияем блока XMM, позволяющего параллельно обрабатывать пакет вещественных данных: SSE - потоковое расширение SIMD.

Блоки сегментации и страничной трансляции образуют устройство управления памятью.

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

Если механизм страничного преобразования включен, то для получения физических адресов по линейным используется блок страничной трансляции. Если же этот механизм выключен, то это означитает, что, физический адрес совпадает с линейным, и трансляция не нужна. Для ускорения трансляции адресов в кэш-память дескрипторов страниц помещаются каталог недавно использованных страниц, а также информация о входах в таблицу страниц в буфере трансляции адресов. Затем блок страничной трансляции пересылает физические адреса в блок интерфейса с магистралью для выполнения цикла обращения к памяти или устройствам ввода-вывода. МП Intel-386 использует 32-разрядные регистры и шины данных для поддержки адресов и типов данных такой же разрядности.

Блок страничной трансляции позволяет прозрачно управлять пространством физических адресов независимо от управления сегментами. Каждый сегмент отображается в пространство линейных адресов, которое, в свою очередь, отображается в одну или несколько страниц объемом 4 Кб. Для реализации эффективной системы виртуальной памяти Intel-386 полностью поддерживает способность рестарта (повторного запуска) в случае отказа во всех страницах и сегментах.

В МП 80486 был интегрирован кэш первого уровня размером 8 Кб. В МП Pentium размер кэша первого уровня удвоен: 8 Кб - кэш команд и 8 Кб - кэш данных. В МП Pentium Pro, кроме того, на кристалле интегрирован кэш второго уровня.


Вопросы для самоконтроля


Назовите основные блоки и их функциональное назначение в структуре IA-32.Какие регистры составляют программную модель IA-32?Перечислите регистры управления сегментированной памятью.В каких режимах может работать IA-32?Какие поля составляют команду IA-32?Перечислите типы префиксов.



Реальный режим (Real Mode)


После инициализации (системного сброса) МП находится в реальном режиме. В реальном режиме МП работает как очень быстрый 8086 с возможностью использования 32-битных расширений. Механизм адресации, размеры памяти и обработка прерываний (с их последовательными ограничениями) МП 8086 полностью совпадают с аналогичными функциями других МП IA-32 в реальном режиме. В отличие от 8086, остальные члены семейства IA-32 в определенных ситуациях генерируют исключения, например, при превышении предела сегмента, который для всех сегментов в реальном режиме равен 0FFFFh.

Имеется две фиксированные области в памяти, которые резервируются в режиме реальной адресации: область инициализации системы и область таблицы прерываний.

Ячейки от 00000h до 003FFH резервируются для векторов прерываний. Каждое из 256 возможных прерываний имеет зарезервированный 4-байтовый адрес перехода. Ячейки от FFFFFFF0H до FFFFFFFFH резервируются для инициализации системы.



Режим системного управления (System Management Mode)


В новых поколениях МП Intel появился еще один режим работы - режим системного управления. Впервые он был реализован в МП 80386SL и i486SL. Начиная с расширенных моделей Intel-486, этот режим стал обязательным элементом архитектуры IA-32. С его помощью прозрачно даже для операционной системы на уровне BIOS реализуются функции энергосбережения.

Режим системного управления предназначен для выполнения некоторых действий с возможностью их полной изоляции от прикладного программного обеспечения и даже от операционной системы. МП переходит в этот режим только аппаратно: по низкому уровню на контакте SMI# или по команде с шины APIC (Pentium+). Никакой программный способ не предусмотрен для перехода в этот режим. МП возвращается из режима системного управления в тот режим, при работе в котором был получен сигнал SMI#. Возврат происходит по команде RSM. Эта команда работает только в режиме системного управления и в других режимах не распознается, генерируя исключение #6 (недействительный код операции).

Когда МП находится в режиме SMM, он выставляет сигнал SMIACT#. Этот сигнал может служить для включения выделенной области физической памяти (System Management RAM), так что память SMRAM можно сделать доступной только для этого режима. При входе в режим SMM МП сохраняет свой контекст в SMRAM (контекст сопроцессора не сохраняется) и передает управление процедуре, называемой обработчиком System Management Interrupt. Состояние МП в этот момент точно определено: регистр EFLAGS обнулен (кроме зарезервированных битов), сегментные регистры содержат селектор 0000, базы сегментов установлены в 00000000, пределы 0FFFFFFFFh.

Следует отметить, что в режиме SMM не предусмотрена работа с прерываниями и особыми случаями: прерывания по IRQ и SMI# замаскированы, пошаговые ловушки и точки останова отключены, обработка прерывания по NMI откладывается до выхода из режима SMM. Если необходимо обеспечить работу с прерываниями или особыми случаями, то надо инициализировать IDT и разрешить прерывания, выставив флаг IF в регистре EFLAGS. Прерывания по NMI будут разблокированы автоматически после первой же команды IRET.

При возврате из SMM (по инструкции RSM) МП восстанавливает свой контекст из SMRAM. Обработчик может программно внести изменения в образ контекста МП, тогда МП перейдет не в то состояние, в котором произошло SMI.

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



В каких режимах может работать


В каких режимах может работать IA-32?Как формируется физический адрес при сегментной адресации?Как формируется физический адрес при страничной адресации?Что такое многозадачность? Какими средствами она поддерживается?Какие правила на основе привилегий применяются для защиты сегментов кода, стека и данных?

Защищенный режим (Protected Mode)


Основным режимом работы МП является защищенный режим. Ключевые особенности защищенного режима: виртуальное адресное пространство, защита и многозадачность. МП может быть переведен в защищенный режим установкой бита 0 (Protect Enable) в регистре CR0. Вернуться в режим реального адреса МП может по сигналу RESET или сбросом бита PE (в Intel-286 недоступно).

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

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

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

С каждым сегментом связана особая структура, хранящая информацию о нем: дескриптор. Дескриптор - это 8-байтная единица описательной информации, распознаваемая устройством управления памятью в защищенном режиме, хранящаяся в дескрипторной таблице.
Дескриптор сегмента содержит базовый адрес описываемого сегмента, предел сегмента и права доступа к сегменту. В защищенном режиме сегменты могут начинаться с любого линейного адреса (который называется базовым адресом сегмента) и иметь любой предел вплоть до 4Гбайт.

Дескрипторные таблицы - это массивы памяти переменной длины, содержащие 8-байтные элементы: дескрипторы. Дескрипторная таблица может иметь длину от 8 байт до 64 Кбайт и в каждой таблице может быть до 8192 дескрипторов. Существуют две обязательных дескрипторных таблицы - глобальная дескрипторная таблица (Global Descriptor Table - GDT) и дескрипторная таблица прерывания (Interrupt Descriptor Table - IDT), а также множество (вплоть до 8191) необязательных локальных дескрипторных таблиц (Local Descriptor Table - LDT), из которых в каждый момент времени процессору доступна только одна. Расположение дескрипторных таблиц определяется регистрами процессора GDTR, IDTR, LDTR.

GDT содержит дескрипторы, доступные всем задачам в системе. GDT может содержать дескрипторы любых типов: и дескрипторы сегментов, и системные дескрипторы (кроме шлюзов прерываний и ловушек). Первый элемент GDT (с нулевым индексом) не используется. Ему соответствует нуль-селектор, обозначающий "пустой" указатель.

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

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

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

Для вычисления линейного адреса МП выполняет следующие действия (рис. 4.1):

МП использует селектор сегмента для нахождения дескриптора сегмента.


Селектор содержит индекс дескриптора в дескрипторной таблице (Index), бит TI, определяющий, к какой дескрипторной таблице производится обращение (LDT или GDT), а также запрашиваемые права доступа к сегменту (RPL). Если селектор хранится в сегментном регистре, то обращение к дескрипторным таблицам происходит только при загрузке селектора в сегментный регистр, т. к. каждый сегментный регистр хранит соответствующий дескриптор в программно-недоступном ("теневом") регистре-кэше.МП анализирует дескриптор сегмента, контролируя права доступа (сегмент доступен с текущего уровня привилегий) и предел сегмента (смещение не превышает предел);МП добавляет смещение к базовому адресу сегмента и получает линейный адрес.

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


Рис. 4.1.  Схема преобразования логического адреса в линейный

Механизм сегментации обеспечивает превосходную защиту, но он не очень удобен для реализации виртуальной памяти (подкачки). В дескрипторе сегмента есть бит присутствия, по нему процессор определяет, находится ли данный сегмент в физической памяти или на внешнем запоминающем устройстве (на винчестере). В последнем случае генерируется исключение #11, обработчик которого может подгрузить сегмент в память. Неудобство заключается в том, что различные сегменты могут иметь различную длину. Этого можно избежать, если механизм подкачки реализовывать на основе страничного преобразования. Особенностью этого преобразования является то, что процессор в этом случае оперирует с блоками физической памяти равной длины (4 Кбайт) - страницами. Страницы не имеют непосредственного отношения к логической структуре программы. Кроме того, в МП подсемейства P6 страничная трансляция обеспечивает 36-битную физическую адресацию памяти (64 Гбайт). Страничное преобразование действует только в защищенном режиме и включается установкой в 1 бита PG в регистре CR0.



В страничном преобразовании участвуют два типа структур: каталоги таблиц (Page Directory) и таблицы страниц (Page Table). Эти структуры состоят из 1024 32-битных элементов. Элементы содержат старшие 20 бит физического адреса адресуемых объектов. Элементы таблицы страниц (Page Table Entry - PTE) адресуют страницы, а элементы каталога таблиц (Page Directory Entry - PDE) адресуют таблицы страниц. Старшие 20 бит физического адреса каталога таблиц хранятся в регистре CR3 (Page Directory Base Register - PDBR) (это единственный регистр процессора, который содержит физический адрес памяти). Все структуры выровнены по границе страницы.


Рис. 4.2.  Стандартная 2-уровневая схема страничной трансляции

В процессе страничной трансляции адресов полученный линейный адрес разбивается на три части. Старшие десять бит (Directory) линейного адреса являются индексом элемента из каталога таблиц. По этому элементу определяется физический адрес таблицы страниц. Биты 21-12 (Table) линейного адреса выбирают элемент из этой таблицы страниц. Выбранный элемент определяет физический адрес страницы. Младшие 12 бит (Offset) линейного адреса определяют смещение от начала страницы.

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

В МП Pentium фирма Intel реализовала новую возможность - расширение размера страниц (Page Size Extension - PSE). PSE позволяет использовать страницы размером 4 Мбайт и одноуровневый механизм страничной трансляции.

В подсемействе P6 шина адреса была расширена до 36 бит. Соответственно, процессоры Pentium Pro, Pentium II, Pentium III и более поздние способны адресовать до 64 Гбайт физической памяти. Эта возможность называется расширением физического адреса (Physical Address Extension - PAE) и доступна только при использовании страничной трансляции.



Использование PSE и PAE следующим образом влияет на страничное преобразование:

Таблица 4.1. Особенности страничного преобразования в PSE и PAECR0.PGCR4.PAECR4.PSEPDE.PSРазмер страницыРазрядность физ. адреса
0Xxx-32 бит
100x4 Кб32 бит
10104 Кб32 бит
10114 Мб32 бит
11x04 Кб32 бит
11x12 Мб32 бит
Встроенные средства переключения задач обеспечивают многозадачность в защищенном режиме. Задача - это "единица измерения" заданий для процессора, которую процессор может выполнять, приостанавливать и осуществлять над ней диспетчеризацию. В качестве задачи может исполняться прикладная программа, сервис операционной системы, ядро операционной системы, обработчик прерывания или исключения и т.п. В защищенном режиме архитектура IA-32 предоставляет механизм для сохранения состояния задачи и переключения с одной задачи на другую. Все команды процессора выполняются в контексте той или иной задачи. Даже самые простые системы должны определить как минимум одну задачу. Более сложные системы могут использовать средства управления задачами для поддержки многозадачных приложений.

Среда задачи состоит из содержимого регистров МП и всего кода с данными в пространстве памяти. МП способен быстро переключаться из одной среды выполнения в другую, имитируя параллельную работу нескольких задач. Для некоторых задач может эмулироваться управление памятью, как у МП 8086. Такое состояние задачи называется режимом виртуального 8086 (Virtual 8086 Mode). О пребывании задачи в данном состоянии сигнализирует бит VM в регистре флагов. При этом задачи виртуального МП 8086 изолированы и защищены, как от друг друга, так и от обычных задач защищенного режима.

Задачу составляют два компонента: адресное пространство задачи и сегмент состояния задачи (Task State Segment - TSS).

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



Сегмент состояния задачи хранит состояние регистров (контекст) процессора:

состояние сегментных регистров (селекторы сегментов, формирующие адресное пространство задачи);состояние регистров общего назначения;состояние регистра флагов (EFLAGS);указатель очередной команды (EIP);значение регистра CR3 (PDBR);значение регистра LDTR.

В многозадачных системах TSS предоставляет механизм для связывания (вложения) задач.

Каждая задача идентифицируется селектором соответствующего ей TSS. Этот селектор загружается в регистр задачи (Task Register - TR) при переключении на задачу. В теневую часть регистра загружаются базовый адрес, предел и атрибуты TSS. Операционная система может предусматривать для каждой задачи свое линейное адресное пространство (свой набор страниц для страничного преобразования), тогда при переключении задачи загружается и регистр CR3 (PDBR), хранящий адрес каталога таблиц для страничного преобразования.

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

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

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



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

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

Архитектура защиты МП обеспечивает 4 иерархических уровня привилегий, что позволяет ограничить задаче доступ к отдельным сегментам в зависимости от ее текущих привилегий. Привилегии - это свойство (обычно устанавливаемое при проектировании системы), которое определяет, какие компьютерные операции разрешаются в любой момент времени и какие доступы к памяти законны. Привилегии используются для обеспечения безопасности в компьютерной системе. Привилегии реализуются путем присвоения значения от 0 до 3 ключевым объектам, которые опознаются процессором. Значение 0 соответствует наибольшим привилегиям, тогда как значение 3 - наименьшим.

Четыре уровня привилегий можно интерпретировать в виде колец защиты (рис. 4.3). Центр (уровень 0) предназначен для сегментов, содержащих наиболее критичные программы (обычно ядро операционной системы). Внешние кольца предназначены для сегментов с менее критичными программами или данными. Использование всех четырех уровней привилегий не является необходимым. Существующие системы, спроектированные с меньшим количеством уровней, могут просто игнорировать другие допустимые уровни. UNIX и Windows, например, используют только два уровня привилегий: 0 (для ядра системы) и 3 (для всего остального), а OS/2 использует уровни 0 (для ядра системы), 2 (для процедур ввода-вывода) и 3 (для прикладных программ).




Рис. 4.3.  Интерпретация уровней привилегий в виде колец защиты

Механизм контроля уровня привилегий микропроцессора оперирует следующими значениями:

CPL - текущий уровень привилегий (Current Privilege Level): уровень привилегий, на котором в данный момент исполняется задача. Значение CPL хранится в поле RPL селектора сегмента кода, который помещен в регистр CS. Обычно это значение соответствует уровню привилегий дескриптора исполняемого сегмента кода. Уровень привилегий меняется, когда управление передается сегменту кода с другим значением DPL (за исключением подчиняемых сегментов кода).

DPL - уровень привилегий дескриптора (Descriptor Privilege Level): наименее привилегированный уровень, на котором задача может получить доступ к сегменту или шлюзу, связанному с этим дескриптором. Уровень DPL определяется битами 46 и 45 дескриптора.

RPL - запрашиваемый уровень привилегий (Requested Privilege Level) используется для временного понижения своего уровня привилегий при обращении к памяти. RPL заносится в младшие биты селектора.

Механизм контроля уровня привилегий обычно сравнивает уровень привилегий дескриптора (DPL) с максимальным из двух чисел CPL и RPL. Наименее привилегированный из текущего уровня привилегий и запрашиваемого считается эффективным уровнем привилегий: EPL = max (CPL, RPL).

Контроль привилегий при доступе к данным осуществляется при загрузке селектора в сегментный регистр DS, ES, FS, GS (либо при обращении к памяти, если селектор содержится в коде инструкции). Программа может обратиться к сегменту данных, который находится на том же или более низком уровне привилегий (с учетом RPL), т.е. доступ к данным разрешен, если max(CPL, RPL)<= DPL; в противном случае генерируется нарушение общей защиты.

Контроль привилегий при доступе к стеку осуществляется при загрузке селектора в регистр SS. Программа должна использовать сегмент стека, находящийся на том же уровне привилегий, т.е. CPL = RPL = DPL.

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


Значение RPL должно быть не больше CPL, чтобы не вызывать исключения, но вне зависимости от значения RPL уровень привилегий не изменится: CPL = DPL. Текущий уровень привилегий может измениться при передаче управления через селектор шлюза. Шлюзы бывают четырех типов: шлюз вызова, шлюз задачи, шлюз ловушки и шлюз прерывания (последние два типа не используются в командах перехода и вызова). При передаче управления через селектор шлюза задачи или селектор TSS происходит переключение задач. Одна задача может передать управление другой задаче, при этом контролируется, чтобы объект, через который передается управление, был на том же или более низком уровне привилегий, чем CPL (правило контроля как для сегментов данных).

Кроме того, текущий уровень привилегий задачи влияет на возможность выполнения тех или иных специфических команд (привилегированных инструкций). Кроме привилегированных, существуют инструкции, результат выполнения которых зависит от поля IOPL в регистре флагов (I/O Privilege Level - уровень привилегий ввода-вывода): IN, INS, OUT, OUTS, CLI, STI. Механизм защиты процессора позволяет выполнять эти инструкции, только если задача обладает достаточными привилегиями, т.е. CPL <= IOPL.

Функции страничной трансляции, впервые появившиеся в Intel386, обеспечивают дополнительные механизмы защиты на уровне страниц. Особенно это удобно при использовании сплошной модели памяти, когда и операционная система, и прикладные программы работают в едином пространстве логических адресов, т.к. защита на уровне страниц может обеспечить разграничение привилегий для страниц операционной системы и прикладных программ. Защита на уровне страниц предоставляет два типа контроля: ограничение адресного пространства (страницы супервизора и страницы пользователя) и ограничение типа доступа (доступ только для чтения и доступ на чтение-запись). Если проверки не проходят, генерируется страничное нарушение (исключение #14).

Ограничение адресного пространства на уровне страниц обеспечивается двумя уровнями привилегий: режим супервизора (уровень 0) и режим пользователя (уровень 1).


Режим супервизора соответствует привилегиям на уровне сегментов CPL = 0, CPL = 1 и CPL = 2. В режиме супервизора доступны все страницы. Режим пользователя соответствует привилегиям на уровне сегментов CPL = 3. В режиме пользователя доступны только страницы пользователя. В адресное пространство супервизора попадают страницы, для которых соответствующий элемент таблицы страниц или каталога таблиц содержит бит US = 0. В адресное пространство пользователя попадают страницы, для которых и соответствующий элемент таблицы страниц, и соответствующий элемент каталога таблиц содержат бит US = 1.

В МП Intel-386 ограничение типа доступа применяется только в адресном пространстве пользователя. Программа в режиме пользователя имеет право изменять только те страницы, для которых и соответствующий элемент таблицы страниц, и соответствующий элемент каталога таблиц содержат бит RW = 1. Если для какой-либо страницы элемент таблицы страниц или элемент каталога таблиц содержит бит RW = 0, то страница доступна только для чтения. В режиме супервизора все страницы доступны и для чтения, и для записи.

Когда используются оба вида защиты и на уровне страниц, и на уровне сегментов, процессор сначала выполняет проверки защиты сегментов, и только в случае успеха - проверки защиты страниц. Т.е. если доступ к памяти отвергается защитой на уровне сегментов, то будет сгенерировано нарушение общей защиты, а проверки защиты страниц выполняться не будут и дополнительно страничное нарушение не возникнет. Если проверки защиты сегментов проходят успешно, но нарушаются правила защиты страниц, генерируется страничное нарушение. Доступ к памяти предоставляется, только когда выполнены все правила и для сегментов, и для страниц.

В табл. 4.2 представлены сводные характеристики режимов IA-32.

Таблица 4.2. Сравнение режимов микропроцессоров IA-32ХарактеристикаRMPM, VM = 0PM, VM = 1SMM
Формирование линейного адресабез дескрипторных таблицчерез дескрипторную таблицубез дескрипторных таблицбез дескрипторных таблиц
Предел сегментов64 Кбопределяется дескриптором64 Кб4 Гб
Размер адреса/данных по умолчанию16 битопределяется дескриптором16 бит16 бит
Максимальный объем доступной памяти (виртуальной)~1 Мб~64 Тб~1 Мб~4 Гб
Защитанет1)даданет
Страничная трансляциянетдаданет
Многозадачностьнетдаданет
Обработка прерыванийтаблица векторовдескрипторная таблицадескрипторная таблицанет2)

Динамическое (спекулятивное) исполнение


Одной из главных особенностей шестого поколения микропроцессоров архитектуры IA32 является динамическое (спекулятивное) исполнение. Под этим термином подразумевается следующая совокупность возможностей:

Глубокое предсказание ветвлений (с вероятностью >90% можно предсказать 1015 ближайших переходов).Анализ потока данных (на 20-30 шагов вперед просмотреть программу и определить зависимость команд по данным или ресурсам).Опережающее исполнение команд (МП P6 может выполнять команды в порядке, отличном от их следования в программе).

Внутренняя организация МП P6 соответствует архитектуре RISC, поэтому блок выборки команд, считав поток инструкций IA-32 из L1 кэша инструкций, декодирует их в серию микроопераций. Поток микроопераций попадает в буфер переупорядочивания (пул инструкций). В нем содержатся как не выполненные пока микрооперации, так и уже выполненные, но еще не повлиявшие на состояние процессора. Для декодирования инструкций предназначены три параллельных дешифратора: два для простых и один для сложных инструкций. Каждая инструкция IA-32 декодируется в 1-4 микрооперации. Микрооперации выполняются пятью параллельными исполнительными устройствами: два для целочисленной арифметики, два для вещественной арифметики и блок интерфейса с памятью. Таким образом, возможно выполнение до пяти микроопераций за такт.

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

Взаимная зависимость команд от значения регистров архитектуры IA-32 может требовать ожидания освобождения регистров. Для решения этой проблемы предназначены 40 внутренних регистров общего назначения, используемых в реальных вычислениях.

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

Описанная схема отображена на рис. 5.2.


Рис. 5.2.  Блок схема микропроцессора Pentium Pro



Конвейеризация команд


Существенное повышение производительности МП 80286 по сравнению с базовой моделью семейства стало возможным благодаря внедрению в архитектуру семейства IA32 конвейерной обработки. Конвейеризация позволяет нескольким внутренним блокам МП работать одновременно (табл. 5.1), совмещая дешифрование команды, операции АЛУ, вычисление эффективного адреса и циклы шины нескольких команд. В составе МП 80286 есть 4 конвейерных устройства:

BU (Bus Unit) - шинный блок (считывание из памяти и портов ввода/вывода);IU (Instruction Unit) - командный блок (дешифрация команд);EU (Executive Unit) - исполнительный блок (выполнение команд);AU (Address Unit) - адресный блок (вычисляет все адреса, формирует физический адрес).

Таблица 5.1. Конвейеризация команд в МП 80286

МикрооперацииЦиклы шины

Выборка B

команды U

N+1N+2
N-1

Дешифр. I

команды U

N+1N+2
N-2N-1

Форм. адр. A

операнда U

N+1N+2
N-2N-1

Выборка B

операнда U

N+1N+2
N-2N-1

Выполнение E

команды U

N+1
N-2N-1

Запись B

результата U

Идея конвейеризации была развита в следующих моделях этого семейства. В МП Intel-486 реализован пятиступенчатый конвейер для обработки команд:

PF (Prefetch) - предвыборка команд;D1 (Instruction Decode) - декодирование команды;D2 (Address Generate) - формирование адреса;EX (Execute) - выполнение команды в АЛУ и доступ к кэш-памяти;WB (Write Back) - обратная запись.


Рис. 5.1.  Блок-схема архитектуры МП Pentium

Новая микроархитектура процессоров Pentium (рис. 5.1) и более поздних базируется на идее суперскалярной обработки. Под суперскалярностью подразумевается наличие более одного конвейера для обработки команд (в отличие от скалярной - одноконвейерной архитектуры). В МП Pentium команды распределяются по двум независимым исполнительным конвейерам (U и V). Конвейер U может выполнять любые команды семейства IA-32, включая целочисленные команды и команды с плавающей точкой. Конвейер V предназначен для выполнения простых целочисленных команд и некоторых команд с плавающей точкой.
Команды могут направляться в каждое из этих устройств одновременно, причем при выдаче устройством управления в одном такте пары команд более сложная команда поступает в конвейер U, а менее сложная - в конвейер V (табл. 5.2). Однако, такая попарная обработка команд (спаривание) возможна только для ограниченного подмножества целочисленных команд. Команды вещественной арифметики не могут запускаться в паре с целочисленными командами. Одновременная выдача двух команд возможна только при отсутствии зависимостей по регистрам.

Таблица 5.2. Конвейеризация команд в МП PentiumЭтапы конвейеровЦиклы шиныPFD1D2EXWB
К1К3К5К7
К2К4К6К8
К1К3К5К7
К2К4К6К8
К1К3К5К7
К2К4К6К8
К1К3К5К7
К2К4К6К8
К1К3К5К7
К2К4К6К8

Какие блоки составляют конвейер МП


Какие блоки составляют конвейер МП 80286?Какой блок и почему был добавлен в конвейер МП Intel-486?Что понимают под суперскалярной архитектурой?Какие способы обработки данных объединяет термин "динамическое исполнение программы"?В чем состоит внутренняя RISC-архитектура ЦП Pentium Pro?В работе какого процессора наблюдается отклонение от принципов фон Неймана? В чем это проявляется?В чем состоит преимущество использования двойной независимой шины?Что нового появилось в архитектуре процессора Pentium III по сравнению с Pentium MMX?Какие особенности имеет Net Burst-архитектура?

Архитектурные особенности процессоров семейства Pentium


Процессоры семейства Pentium имеют ряд архитектурных и структурных особенностей по сравнению с предыдущими моделями микропроцессоров фирмы Intel. Наиболее характерными из них являются:

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

Основные характеристики процессоров семейства Pentium следующие:

32-разрядная внутренняя структура;использование системной шины с 36 разрядами адреса и 64 разрядами данных;раздельная внутренняя кэш-память первого уровня для команд и данных емкостью по 16 Кбайт;поддержка общей кэш-памяти команд и данных второго уровня емкостью до 2 Мбайт;конвейерное исполнение команд;предсказание направления программного ветвления с высокой точностью;ускоренное выполнение операций с плавающей точкой;приоритетный контроль при обращении к памяти;поддержка реализации мультипроцессорных систем;наличие внутренних средств, обеспечивающих самотестирование, отладку и мониторинг производительности.



Динамическое исполнение программ в процессоре Pentium Pro


Процессор Pentium Pro совместим со всеми приложениями, созданными для семейства IA-32. Архитектура Pentium Pro в основном оптимизирована для работы с интенсивным использованием 32-разрядных регистров (ШД - 64-разрядная).

Внутри корпуса микросхемы находятся два кристалла: процессор и кэш-память второго уровня емкостью 256 Кбайт.

В Pentium Pro применено динамическое исполнение программы. Этот термин определил 3 способа обработки данных:

глубокое предсказание ветвлений (с вероятностью > 90% можно предсказать 10 = 15 ближайших переходов);анализ потока данных (на 20-30 шагов вперед посмотреть программу и определить зависимость команд по данным или ресурсам);опережающее исполнение команд (ЦП P6 может выполнять команды в порядке, отличном от их следования в программе).



Инициализация ПЭВМ на базе i86-х


Архитектура вычислительной машины, прежде всего, определяет методы взаимодействия между составляющими ее элементами и построена на концепции ядра и расширяющих его возможности модулей. Ядро - это системные ресурсы, без которых ПК работать не может. Модули расширения представляют собой законченные подсистемы, взаимодействующие с ядром по заданному протоколу.

Системное ядро ПК включает в себя:

ЦП;2-3-канальных таймера;2 контроллера прерываний с 8 уровнями каждый;2-4-канальных контроллера ПДП;порты ввода/вывода;CMOS-память;часы реального времени;контроллер клавиатуры;минимум 64 Кб нижней памяти.

К модулям расширения относятся:

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

В соответствии с архитектурой ПК построен и механизм пробуждения. После включения питания выполняются следующие действия:

самодиагностика, идентификация, проверка процессора и сопроцессора;проверка и инициализация системного ядра;включение механизма "Plug&Play";проверка и инициализация видеоадаптера;проверка CMOS-памяти и часов реального времени;определение объема и проверка оперативной памяти;проверка клавиатуры и инициализация портов (LPT, COM);инициализация дисковых накопителей;проверка модулей расширения BIOS;включение механизма APR;вызов системного загрузчика;загрузка ОС.

Все перечисленные выше действия выполняет центральный процессор ПК под управлением BIOS (Basic Input Output System), записанного в микросхемах ПЗУ. BIOS представляет собой подпрограммы, предназначенные для изоляции операционной системы (ОС) и прикладных программ от конкретной аппаратной реализации того или иного узла персонального компьютера. Поэтому все обращения ОС или прикладных программ переадресуются подпрограммам BIOS. Исключения составляют программы, напрямую работающие с аппаратурой.

Встроенное программное обеспечение, кроме BIOS, содержит программы: POST (Power On Self Test - тест при включении питания), BIOS SETUP (программа установки параметров ПК и взаимодействия с CMOS-памятью, где эти данные хранятся). На этапе пробуждения ПК основное значение приобретает программа POST, обеспечивающая поиск, инициализацию и проверку компьютера.

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

В последнее время BIOS часто хранится во flash-памяти, что позволяет пользователю обновлять (дополнять) версию BIOS без привлечения специальной аппаратуры.



Микроархитектура NetBurst


Повышение производительности IA-32 достигалось не только путем оптимизации конвейера команд и добавления исполнительных блоков, но и, например, внедрением кэш-памяти в ядро процессора. В семействе IA-32 встроенный кэш L1 размером 8 Кбайт впервые был реализован в процессорах Intel-486. В процессорах Pentium размер кэша был удвоен. Первые представители P6 (Pentium Pro) содержали также кэш L2 размером 256 или 512 Кбайт. Однако такое решение в то время оказалось слишком дорогим и невыгодным, поэтому в Pentium II была представлена технология Dual Independent Bus (DIB) - двойная независимая шина. Процессор выполнялся в виде картриджа с печатным краевым разъемом, на который выведена системная шина. На картридже размером 14х6,2х1,6см устанавливались микросхема ядра процессора (CPU Core), несколько микросхем, реализующих вторичный кэш, и вспомогательные дискретные элементы (резисторы и конденсаторы). Удаление вторичного кэша из кристалла процессора позволило использовать для кэш-памяти и памяти тегов микросхемы сторонних производителей, специализирующихся на выпуске сверхбыстродействующей памяти. Объем вторичного кэша определялся емкостью и числом установленных микросхем памяти. Для доступа к кэшу и для доступа к внешней памяти использовались раздельные шины. Такое же архитектурное решение использовалось в первых моделях Pentium III. Начиная с 1999 года (Pentium III Coppermine), кэш L2 вновь был возвращен внутрь кристаллов процессоров.

Процессор Pentium 4 является 32-разрядным представителем семейства IA-32, по микроархитектуре принадлежащим к новому, седьмому (по классификации Intel) поколению. С программной точки зрения он представляет собой процессор IA-32 с очередным расширением системы команд - SSE2. По набору программно-доступных регистров Pentium 4 повторяет процессор Pentium III. С внешней, аппаратной точки зрения - это процессор с системной шиной нового типа, в которой кроме повышения тактовой частоты применены ставшие уже привычными принципы двойной (2х) и четырехкратной (4х) синхронизации, а также предпринят ряд мер по обеспечению работоспособности на ранее немыслимых частотах.
Микроархитектура процессора, получившая название NetBurst, разработана с учетом высоких частот как ядра (>1,4 ГГц), так и системной шины (400 МГц). Название микроархитектуры указывает на сетевую направленность процессора: его мощь необходима для ресурсоемких мультимедийных Интернет-приложений.

Процессор Pentium 4 является однокристальным. Кроме собственно вычислительного ядра, он содержит кэш-память двух уровней. Вторичный кэш, общий для инструкций и данных, имеет размер 256 Кбайт и разрядность шины 256 бита (32 байта), как и в последних процессорах Pentium III. Шина вторичного кэша работает на частоте ядра, что обеспечивает ее пропускную способность 32х1,4 = 44,8 Гбайт/с на частоте 1,4 ГГц. Вторичный кэш имеет ЕСС-контроль, позволяющий обнаруживать и исправлять ошибки. Первичный кэш данных имеет такую же высокую пропускную способность (44,8 Гбайт/с), но его объем сократился вдвое (8 Кбайт против 16 в Pentium III). Первичный кэш инструкций в привычном понимании отсутствует, его заменил кэш трассы (trace cache). В нем хранятся последовательности микроопераций, в которые декодированы инструкции. Здесь могут помещаться до 12К микроинструкций.

Интерфейс системной шины процессора рассчитан только на однопроцессорные конфигурации, отсутствует также возможность избыточного функционального контроля (FRC). Интерфейс во многом напоминает шину Р6, протокол также ориентирован на одновременное выполнение нескольких транзакций. Принят ряд мер по обеспечению высокой пропускной способности. В процессоре Pentium 4 частота шины 400 МГц с "четырехкратной накачкой" (quad pumped) - тактовая частота системной шины составляет 100 МГц, но частота передачи адресов и данных выше. Новая информация по линиям с общей синхронизацией может передаваться на каждом такте с частотой 100 МГц. Для 2 и 4-кратной передачи используется синхронизация от источника данных. По шине адреса информация передается в режиме 2-кратной передачи, стробами являются два сигнала ADSTB0# и ADSTB1#. По спаду этих стробов передается адрес, а по фронту - информация о типе транзакции.


Таким образом, в каждом такте шины (за 10 нс) передается и адрес, и тип транзакции ( у Р6 на это требовалось 2 такта, что занимало 15-30 нс). По шине данных информация передается с четырехкратной частотой, для чего используются пары стробирующих сигналов DSTBp[0:3]# и DSTBn[0:3]# с периодом 5 нс (частота 200 МГц). Стробы сдвинуты относительно друг друга на 2,5 нс (половину своего маленького такта), синхронизация по их спадам и дает учетверенную частоту передачи.

Разрядность шины данных, как и в предыдущих двух поколениях процессоров, составляет 64 бита (8 байт), что в режиме 4-кратной передачи дает максимальную пропускную способность 100х4х8=3,2 Гбайт/с. У процессоров Pentium III шина обеспечивала 133х8=1,06 Гбайт/с. Шина адреса имеет разрядность 36 бит, и это позволяет адресовать те же 64 Гбайт памяти, из которых кэшируются только первые 4 Гбайт.

Исполнительные устройства МП (АЛУ) работают на удвоенной частоте, что дает возможность выполнять большинство целочисленных инструкций за половину такта. По сравнению с предыдущими поколениями IA-32, Pentium 4 содержит самый длинный конвейер команд, состоящий из 20 этапов и названный гиперконвейером. В связи с этой особенностью многие специалисты отмечают, что микроархитектура NetBurst будет иметь максимальную производительность исполнения предсказуемых (линейных и циклических) участков программы, характерных для приложений, на которые ориентирован Pentium 4. На непредсказуемо ветвящихся программах, к которым относятся, например, офисные приложения, длинный гиперконвейер оказывается менее эффективным, чем конвейер Р6, если бы тот удалось разогнать до частот 1,4 ГГц и выше. Чтобы частично компенсировать этот недостаток, были существенно оптимизированы механизмы спекулятивного исполнения и предсказания ветвлений.


Рис. 6.2.  Микроархитектура NetBurst


Организация и режимы работы процессоров семейства Pentium


С именем Pentium и Intel ассоциируется ряд новых технологий и стандартов. Необходимость повышенной скорости передачи данных привела к созданию шины PCI. Новые мультимедийные приложения и обработка в реальном масштабе времени с телевизионным качеством заставили пересмотреть интерфейс видеоконтроллера - появились технологии быстрого графического интерфейса DCI и вывода трехмерной графики 3D Render.

Процессор Pentium включает все особенности процессора Intel-486 и имеет ряд новых существенных черт, таких как:

суперскалярная архитектура, включающая два конвейера и позволяющая за один такт процессора выполнить более одной команды;предсказание ветвлений в программе, что реализуется специальными логическими схемами, которые определяют точку передачи управления в программе и обеспечивают предварительную подготовку к выполнению определенных фрагментов программы;конвейерное устройство для обработки данных с плавающей точкой (FPU);раздельные кэш-памяти команд и данных емкостью 8 Кбайт каждая;поддержка протокола обратной записи MESI (Modified/Exclusive/Shared/Invalid) для кэш-памяти данных;64-разрядная ШД и 32-разрядная ША;конвейеризация машинного цикла;контроль на четность адреса и данных;внутренний контроль на четность;режим управления системой (System Management Mode).

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

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

Устройство управления памятью на кристалле процессора совместимо с процессорами Intel-386 и Intel-486. Два конвейера команд и устройство с плавающей точкой работают независимо. Имеется возможность выполнения двух команд в одном такте при обработке данных целого типа или одной, а иногда и двух простых команд с плавающей точкой.

Для предсказания ветвлений в программе процессор Pentium содержит два буфера предвыборки команд, один из которых обеспечивает предвыборку команд на линейном участке, а другой служит для предвыборки команд в соответствии с алгоритмом функционирования буфера целевого ветвления BTB (Branch Target Buffer). Это почти всегда позволяет осуществить предвыборку необходимой для выполнения команды.

Каждая кэш-память является двухканальной множественно-ассоциативной и имеет специальный буфер ассоциативной трансляции TLB (Translation Lookaside Buffer) для преобразования линейных адресов в физические. Кэш-память данных обеспечивает режим обратной (Writeback) или сквозной (Writethrough) записи строка за строкой и поддерживает протокол MESI.

Устройство управления памятью в процессоре Pentium поддерживает страницы до 4 Мбайт.



с мультимедийными данными допускают простейшие


Многие алгоритмы работы с мультимедийными данными допускают простейшие элементы распараллеливания, когда одна операция может выполняться параллельно над несколькими числами. Такой подход называется SIMD - single-instruction multiple-data (одна инструкция - множество данных). Впервые эта технология была реализована в поколении P55 (микропроцессор Pentium MMX).

MMX (Multi-Media eXtension) - это SIMD-расширение для потоковой обработки целочисленных данных, реализованное на основе блока FPU (с использованием регистров FPU). Набор инструкций MMX оперирует 64-битными регистрами MM0-MM7, являющимися псевдонимами для младшей 64-битной части регистров FPU R0-R7), так что одновременное выполнение команд MMX и вещественной арифметики невозможно. Инструкции MMX оперируют 64-битными типами данных:

упакованные байты (8 х 8 бит);упакованные слова (4 х 16 бит);упакованные двойные слова (2 х 32 бит);четверное слово (1 х 64 бит).

Таким образом, одна инструкция MMX может выполнить арифметическую или логическую операцию над "пакетами" целых чисел, упакованных в регистрах MMX. Например, инструкция PADDSB складывает 8 байт одного "пакета" с соответствующими восьмью байтами другого пакета, фактически выполняя сложение восьми пар чисел одной инструкцией.

Первый процессор P6 (Pentium Pro) был разработан до выхода Pentium MMX, поэтому в нем отсутствует эта возможность, однако в последующих моделях P6 данная технология закрепилась.

В процессоре Pentium II соединены лучшие свойства процессоров Intel: производительность процессора Pentium Pro и возможности технологии MMX. Это сочетание обеспечивает существенное увеличение производительности процессоров Pentium II по сравнению с предыдущими процессорами IA-32-архитектуры.

Процессор содержит раздельные внутренние блоки кэш-памяти команд и данных по 16 Кбайт и 512 Кбайт общей неблокирующей кэш-памяти второго уровня.

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



Развитием идеи SIMD для вещественных чисел стала технология SSE (Streamed SIMD Extensions), впервые представленная в процессорах Pentium III. Блок SSE дополняет технологию MMX восемью 128-битными регистрами XMM0-XMM7 и 32-битным регистром управления и состояния MXCSR. Регистры XMM0-XMM7 независимы, т.е., в отличие от регистров MM0-MM7, не отображаются ни на какие другие регистры процессора. Инструкции SSE оперируют 128-битным типом данных - "упакованные одинарной точности" (4 х 32 бит), содержащим 4 вещественных числа в формате IEEE-754 single precision. Инструкции SSE могут выполнять операции над "пакетами" вещественных чисел, т. е. одна инструкция выполняет операцию над пакетом из четырех пар вещественных чисел (рис. 6.1).


Рис. 6.1.  Схема работы инструкции ADDPS (сложение "пакетов")

В МП Pentium 4 была представлена технология SSE2, дополняющая SSE новыми типами данных и новыми инструкциями. Инструкции SSE2 также оперируют 128-битными регистрами XMM0-XMM7, но при этом добавлены пять новых типов данных:

упакованные двойной точности (2 х 64 бит IEEE-754 double precision);упакованные байты (16 x 8 бит);упакованные слова (8 х 16 бит);упакованные двойные слова (4 х 32 бит);упакованные четверные слова (2 х 64 бит).

Все команды MMX, SSE и SSE2 доступны в любом режиме работы процессора: реальном, защищенном, виртуальном.


Вопросы для самоконтоля


Что понимают под суперскалярной архитектурой?Какие команды могут быть спаренными?Какие способы обработки данных объединяет термин "динамическое исполнение программы"?В чем состоит внутренняя RISC-архитектура ЦП Pentium Pro?В работе какого процессора наблюдается отклонение от принципов фон Неймана? В чем это проявляется?В чем состоит преимущество использования двойной независимой шины?Что нового появилось в архитектуре процессора Pentium III по сравнению с Pentium MMX?Какие особенности имеет Net Burst-архитектура? В чем состоит отличие кэш-команд ЦП Pentium IV от всех предыдущих?