Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Архитектура 32-разрядных процессоров




Содержание

2.АРХИТЕКТУРА 32-РАЗРЯДНЫХ ПРОЦЕССОРОВ.............................14

2.1.1.Организация памяти............................................................................15

2.1.2. Прерывания и исключения..................................................................18

2.1.3. Начальный сброс и самотестирование................................................19

2.1.4. Ввод-вывод...........................................................................................19

2.1.5. Режим системного управления SMM..................................................19

2.1.6. Расширение ММХ................................................................................21

2.1.7. Внутренний кэш..................................................................................22

СПИСОК ЛИТЕРАТУРЫ................................................................................34


ВВЕДЕНИЕ

История процессоров началась в 1979 году, когда фирма Intel выпустила первый микропроцессор i4004. Он имел разрядность данных 4 бита, способность адресовать 640 байт памяти, тактовую частоту 108 кГц и производительность 0.06 MIPS. Такой процессор уже мог работать в качестве вычислительного ядра калькулятора. Он содержал 2300 транзисторов и выполнялся по технологии с разрешением 10 мкм. Через год появился его 8-битный “родственник” – i8008, адресующий уже 16 Кб памяти.

В 1974 году появился 8-разрядный процессор i8080, ставший весьма популярным устройством. Он уже имел частоту 2 Мгц и адресовал 64 Кб памяти. 6000 транзисторов позволила разместить 6-мкм технология изготовления. Процессор требовал трех источников питания (+5В, +12 В и –5В) и сложной двух контактной синхронизации. На этом процессоре строились разнообразные терминалы, контроллеры и даже первый ПК Altair. В нашей стране запоздалым эхом 8086 стали процессоры 580ИК80 и КР580ВМ80, на базе которых в начале и середине 80-ых годов строилось много “самодельный ” ПК.

Следующим этапом стал процессор i8085 (5 Мгц, 0.37 MIPS, 6500 транзисторов, 3-мкм технология). Он сохранил популярную регистровую архитектуру 8080 и программную совместимость, но в него добавился порт последовательного интерфейса, упразднили специальные ИС поддержки (тактового генератора и системного контроллера) и несколько изменили внешний интерфейс. Главным подарком разработчикам аппаратуры стало одно питающее напряжение +5В.

Вариацию на тему 8080 и 8085 представляет процессор Z80 фирмы Zilog. Сохранив программную совместимость с 8080, в него ввели дополнительные регистры, что позволило существенно повысить производительность. Результат оказался впечатляющим – еще недавно популярные компьютеры Sinclair, построенные на Z80, демонстрировали на играх графику, не уступающему PC на 16 –разрядном процессоре 286.

Первый 16–разрядный процессор 8086 фирма Intel выпустила в 1978 году. Частота 5 МГц, производительность 0.33 MIPS, но инструкции уже с 16-битными операндами (позже появились процессоры 8 и 10 МГц). Технология 3 мкм, 29 тыс. транзисторов. Адресуемая память 1 Мб. Регистровая архитектура и система команд существенно отличалась от 8080, но естественно прослеживаются общие идеи. Через год появился 8088 – тот же процессор, но с 8-битной шиной данных. С него началась история IBM PC, наложившая свой отпечаток на дальнейшее развитие этой линии процессоров Intel. Массовое распространение и открытость архитектуры PC привили к лавинообразному появлению программного обеспечения, разрабатываемого крупными, средними и мелкими фирмами и энтузиастами-одиночками. Технический требовал (и сейчас требует) развития процессоров, но груз программного обеспечения PC, которое должно работать и на более новых процессорах, в свою очередь требовал обратной программной совместимости. Таким образом, все нововведения в архитектуре последующих процессоров должны были пристраиваться к существующему ядру. А тут еще сама архитектура PC “подбросила”, например, сложности с использованием вектора прерываний. Фирма Intel зарезервировала первые 32 вектора “для служебного пользования”, однако на них “наехали” прерывания BIOS PC. Один из результатов – дополнительный способ обработки исключений сопроцессора, применяемы в старших моделях PC.

Процессор 80286, заменяющий следующий этап архитектуры, появился только в 1982 году. Он уже имел 134 тыс. транзисторов (технология 1.5 мкм) и адресовал до 16 Мб физической памяти. Его принципиальное новшество – защищенный режим и виртуальная память размером до 1 Гб – не нашли массового применения, процессор большей частью использовался как очень быстрый 8088.

Класс 32-разрядных процессоров был открыт в 1985 году моделью 80386 (275 тыс. транзисторов, 1,5 мкм). Разрядность шины данных (как и внутренних регистров) достигла 23 бит, адресуемая физическая память - 4 Гб. Появились новые регистры, новые 32-битные операции, существенно доработан защищенный режим, появился режим V86, страничное управление памятью. Процессор нашел широкое применение в PC, и на благодатной почве его свойств стал разрастаться “самый большой вирус” – MS Windows с приложениями. С этого времени стала заметна тенденция “положительной обратной связи”: на появление нового процессора производители ПО реагируют выпуском новых привлекательных продуктов, последующим версиям которых становится явно тесно в рамках этого процессора. Появляется более производительный процессор, но после непродолжительного восторга и его ресурсы быстро “съедают” и т. д. Это “вечное” движение, конечно, естественно, но есть обоснованное подозрение, что большие ресурсы развращают (или, по крайней мере, расслабляют) разработчика ПО, не принуждая его напрягаться в поисках более эффективных способов решения задачи. Примером эффективного программирования можно считать игрушки на Sinclair ZX-Spectrum, которые реализуются на игрушечных ресурсах – 8-битном процессоре и 64 (128) Кбайт ОЗУ. С противоположными примерами большинство пользователей PC сталкиваются регулярно, но с процессором Pentium 200 и 32 Мб ОЗУ на них не всегда обращают внимание.

История процессора 386 напоминает историю 8086: первую модель с 32 битной шиной данных (в последствии названной 386DX) сменил 386 SX с 16 битной шиной. Он довольно легко вписывался в архитектуру PC AT, ранее базировавшуюся на процессоре 286.

Процессор Intel486DX появился в 1989 году. Транзисторы –1,2 млн., технология 1мкм. От 386-го существенно отличается размещением на кристалле первичного кэша и встроенного математического сопроцессора (предыдущие процессоры имели возможность использования внешних x87 сопроцессоров). Кроме того, для повышения производительности в этом CISC-процессоре (как и в последующих) применено RISC-ядро. Далее появились его разновидности, отличающиеся наличием или отсутствием сопроцессор, применением внутреннего умножения частоты, политикой записи кэша и другими. Занялись энергосбережением (появился режим SMM), что отразилось и в продолжении линии процессоров 386 (появился процессор Intel386SL).

В 19993 году появились первые процессоры Pentium частотой 60 и 66 МГц – 32 разрядные процессоры с 64-битной шиной данных. Транзисторов 3,1 млн, технология 0,8 мкм, питание 5 В. От 486-го его принципиально отличается суперскалярной архитектурой – способностью за один такт выпускать с конвейеров до двух инструкций (что, конечно не означает возможность прохождение инструкций через процессор за полтакта, или один такт). Интерес к процессору со стороны производителей и покупателей PC сдерживался его очень высокой ценой. Кроме того, возник скандал с обнаружением ошибки сопроцессора. Хотя фирма Intel математически обосновала не высокую вероятность ее проявления (раз в несколько лет), она все-таки пошла на бесплатную замену уже проданных процессоров на исправленные.

Процессоры Pentium с частотой 75, 90 и 100МГц, появившиеся в 1994 году, представили уже второе поколение процессоров Pentium. При почти том же числе транзисторов они выполнялись по технологии 0,6 мкм, что позволило снизить потребляемую мощность. От первого поколения они отличались внутреннем умножением частоты, поддержкой мультипроцессорных конфигураций и имели другой тип корпуса. Появились версии (75 МГц в миниатюрном корпусе) для мобильных применений (блокнотные ПК). Процессоры Pentium второго поколения стали весьма популярны в PC. В 1995 году появились процессоры на 120 и 133 МГЦ, выполненные уже по технологии 0,35 мкм (первые процессоры на 120 МГЦ делались еще по технологии 0,6 мкм). 1996-й называют годом Pentium –появились процессоры на 150, 166 и 200 МГЦ, и Pentium стал рядовым процессором для PC широкого применения.

Параллельно с Pentium развился и процессор Pentium Pro, который отличался новшествами “динамического исполнения инструкций”. Кроме того, в его корпусе разместили и вторичный кэш, для начала объемом 256 Кб. Однако на 16-битных приложениях, а также в среде Windows 95 его применение на дает преимуществ. Процессор содержит 5,5 млн транзисторов ядра, и 15,5 млн транзисторов для вторичного кэша объемом 256 Кб. Первый процессор с частотой 150 МГц появился в начале 1995 года (технология 0,6 мкм), а уже в конце года появились процессоры с частотой 166, 180, 200 МГц (технология 0,35 мкм), у которых кэш достигал 512 Кб.

После долгих обещаний в начале 1997 года появились процессоры Pentium MMX. Р асширение ММХ предполагает параллельную обработку группы операндов одной инструкцией. Технология ММХ призвана ускорять выполнение мультимедийных приложений, в частности операции с изображениями и обработку сигналов. Ее эффективность вызывает споры в среде разработчиков, поскольку выигрыш в самих операциях обработки компенсируется проигрышем на дополнительных операциях упаковки-распаковки. Кроме того ограниченная разрядность ставит под сомнение применение ММХ в декодерах MPEG-2, в которых требуется обработка 80-битных операндов. Кроме расширения ММХ эти процессоры, по сравнению с обычным Pentium, имеют удвоенный объем первичного кэша, и некоторые элементы архитектуры, позаимствованные у Pentium Pr, что повышает производительность процессора Pentium ММХ и на обычных приложениях. Процессоры Pentium ММХ имеют 4,5 млн транзисторов и выполнены по технологии -,35 мкм. По состоянию на июнь 1997 г. имеются процессоры с тактовыми частотами 166, 200 и 233 МГц.

Технология ММХ была соединена с архитектурой Pentium Pro – и в мае 1997 года появился процессор Pentium II. Он представляет собой слегка урезанный вариант ядра Pentium Pro с более высокой внутренней тактовой частотой, в которое внесли поддержку ММХ. Трудности размещения вторичного кэша в одном корпусе с процессором преодолели нехитрым способом – кристалл с ядром процессора и набор кристаллов статической памяти и дополнительных схем, реализующих вторичный кэш, разместили на небольшой печатной плате-картридже. Все кристаллы закрыты общей специальной крышкой и охлаждаются специальным вентилятором. Тактовые частоты ядра – 233, 266 и 300 МГц.

Конечно же, перечисленным моделями не исчерпывается весь мировой ассортимент микропроцессоров. Это только представители семейства процессоров, имеющих обобщенное название х86. Ряд фирм (DEC? Motorola, Texas Instruments и другие) имею разработки, существенно отличающиеся от данного семейства; есть другие классы процессоров и у Intel. Среди них есть гораздо более мощные процессоры относящиеся, к таким классам как RISC, так и CISC архитектуру. Однако процессоры Pentium особенно с поддержкой ММХ, имеют самую сложную в мире систему команд.

Процессоры, совместимые с семейством х86, выпускаются не только фирмой Intel. Традиционный конкурент – AMD – выпускает совместимые процессоры обычного несколько позже, но заметно дешевле, иногда по ряду технических свойств они даже опережают аналогичные процессоры Intel. Фирма Cyrix славится своими быстрыми сопроцессорами.

Как уже упоминалось выше, по системе команд и архитектуре различаются процессоры RISC и CISC.

RISC – Reduced (Restricted) Instruction Set Computer – процессоры (компьютеры) с сокращенной системой команд. Эти процессоры обычно имеют набор однородных регистров универсального назначения, и их система команд отличается относительной простотой. В результате аппаратная реализация такой архитектуры позволяет с небольшими затратами выполнить за минимальное (в пределе 1) число тактов синхронизации.

CISC – Complete Instruction Set Computer – процессоры (компьютеры) с полным набором инструкций, к которым и относится семейство х86. Состав и назначения их регистров существенно не однородны, широкий набор усложняет декодирование инструкций, на что расходуются аппаратные ресурсы. Возрастает и число тактов необходимое для выполнения инструкций.

В процессорах рассматриваемого семейства, начиная с 486-го, применяется комбинированная архитектура – CISC-процессор имеет RISC-ядро.

Семейство 80х86 фирмы Intel началось с 16-разрядного процессора 8086. Все старшие модели процессоров, в том числе 32-разрядные (386-й, 486-й, Pentium, Pentium Pro) и с 64-разрядным расширением ММХ, включают в себя подмножество системы команд и архитектуры нижестоящих моделей, обеспечивая совместимость с ранее написанным ПО.


 

Архитектура 32-разрядных процессоров

История 32-разрядных процессоров началась с процессора Intel386. Эти процессора вобрали в себя все свойства своих 16-разрядных предшественников 8086/88 и 80286 для обеспечения программной совместимости с громадным объемом ранее написанного ПО. Однако в них по современным меркам преодолено очень жесткое ограничение на длину непрерывного сегмента памяти – 64 Кб. В защищенном режиме 32-битных процессоров оно отодвинулось до 4 Гб – предела физически адресуемой памяти, что как-то время можно считать “почти бесконечностью“. Все эти процессоры имеют поддержку виртуальной памяти объемом до 64 Тб, встроенный блок управления памятью поддерживает механизмы сегментации и страничной трансляции адресов (Paging). Процессоры обеспечивают четырехуровневую системы защиты памяти и ввода-вывода, переключения задач. Они имеют расширенную систему команд, включающую все команды 8086, 80286. Процессор может работать в двух режимах, между которыми обеспечивается достаточно быстрое переключение в обе стороны:

Real Address Mode – режим реальной адресации, полностью совместимый с 8086. В этом режиме возможна адресация до 1 Мб физической памяти (на самом деле почти на 64 Кб больше).

Protected Virtual Address Mode – защищенный режим виртуальной адресации. В этом режиме процессор позволяет адресовать до 4 Гб физической памяти, через которые при использовании механизма страничной адресации могут отображаться до 16 Тб виртуальной памяти каждой задачи. Существенным дополнением является Virtual 8086 Mode – режим виртуального процессора 8086. Это режим является особым состоянием задачи защищенного режима, в котором процессор функционирует как 8086. На одном процессоре в таком режиме могут одновременно исполняться несколько задач с изолированными друг от друга реальными ресурсами. При этом использование физического адресного пространства памяти управляется механизмами сегментации и трансляции страниц. Попытки выполнения команд, выхода за рамки отведенного пространства памяти и разрешенной области ввода-вывода контролируется системой защиты.

Процессоры могут оперировать с 8, 16 и 32-битными операндами байт, слов и двойных слов, а также с битам, битовыми полями и строками бит.

Рассмотрим базовую архитектуру, общую для всех существующих на данный момент 32-разрядных процессоров: 386, 486, Pentium, Pentium Pro и Pentium II.

Организация памяти

Память для процессоров 80х86 разделяются на байты (8 бит), слова (16 бит), двойные слова (32 бит). Слова записываются в двух смежных байтах, начиная с младшего. Адресом слова является адрес его младшего байта. Двойные слова записываются в четырех смежных байтах.

Более крупными единицами являются страницы и сегменты. Память может логически организовываться в виде одного или множества сегментов переменной длины (в реальном режиме – фиксированной). Сегменты могут выгружаться на диске и по мере необходимости с него подкачиваться в физическую память. Кроме сегментации, в защищенном режиме возможно разбиение логической памяти на страницы размером 4 Кб (Paging), каждая из которых может отображаться на любую область физической памяти. Сегментация и разбиение на страницы могут применяться в любых сочетаниях. Сегментация является средством организации логической памяти, используемым на прикладном уровне. Разбиение на страницы применяются на системном уровне для управлении физической памятью.

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

Логический адрес, также называется виртуальным, состоит из селектора (в реальном режиме – просто сегмента) и смещение. Смещение формируется суммированием компонентов (base, index, disp) в эффективный адрес. Поскольку каждая задача может иметь до 16К селекторов, а смещение, ограниченное размером сегмента, может достигать 4 Гб, логическое адресное пространство для каждой задачи может достигать 64 Тб. Все это пространство виртуальной памяти в принципе доступно программисту (этот ‘принцип” должна реализовывать операционная система).

Блок сегментации транслирует логическое адресное пространство в 32-битное пространство линейных адресов. Линейный адрес образуется сложением базового адресного сегмента с эффективным адресом. Базовый адрес сегмента в реальном режиме образуется умножением содержимого используемого сегментного регистра на 16 (как и в 8086). В защищенным режиме базовый адрес загружается из дескриптора, хранящегося в таблице, по селектору, загруженному в используемый сегментный регистр.

Физический 32-битный адрес памяти образуется после преобразования линейного адреса блоком страничной переадресации. В простейшем случае (при отключенном блоке страничной переадресации) линейный адрес совпадает с физическим – присутствующим на внешней шине адреса процессора. Включенный блок страничной переадресации осуществляет трансляцию линейного адреса в физический блоками (страницами) размером 4 Гб. Этот блок может включаться только в защищенном режиме.

Как и у процессоров 8086/8088, для обращения к памяти процессор (совместно с внешней схемой) формирует шинные сигналы MEMWR# (Memory Write) и MEMRD (Memory Read) для операции записи и считывания соответственно. Шина адреса разрядностью 32 бита позволяет адресовать 4 Гб физической памяти, но в реальном режиме доступен только 1 Мб, начинающийся с младших адресов.

В реальном режиме по адресации памяти обеспечивается совместимость с процессором 8086, который своей 16-битной адресной шиной охватывает пространство физической памяти в 1Мб. Для обеспечения совместимости с 80286 32-разрядные процессоры реализуют его ошибку, связанную с переполнением, возникающим при сложении адресов сегмента с эффективным адресом. При вычисление физического адреса возможно возникновение переполнение, которое вызовет появление единицы на линии А20 шины адреса. Максимальное значение адреса в реальном режиме 10FFEF достигается при Seg=FFFFh и EA=FFFFh. Для обеспечения полной программной совместимости с 8086 в РС используется вентиль Gate A20, принудительно обнуляющий бит А20 системной шины адреса. Вентиль в РС управляется через программно-управляемый бит контроля клавиатуры 8042 или более быстрым способом (Gate A 20 Fast Control), определяемым чипсетом системной платы.

В реальном режиме размер сегмента фиксирован – как и 8086, он составляет 64 Кб (FFFFh). Попытка использования эффективного адреса, выходящего за границы сегмента, при 32-битной адресации вызывает исключение типа 13. При 16-битной адресации при вычисление эффективного адреса возможный перенос в разряд А16 игнорируется, и сегмент “сворачивается кольцом” (как и в 8086). Средства контроля следят и за переходом через границу сегмента во время обращения по “приграничному” адресу. При попытки адресации к слову, имеющему смещение FFFFh, или двойному слову со смещением FFFDh-FFFh (их старшие байты выходят за границу сегмента), или выполнения инструкции, все байты которой не умещаются в данном сегменте, процессор вырабатывает прерывание – исключение типа 13 (0Dh) – Segment Overrun Exception. При попытки выполнения инструкции ESCAPE с операндом памяти, не умещающимся в сегменте, вырабатывается исключение типа 9 – Processor Extension Segment Overrun Interrupt (только для 386).

8Система команд 32-разрядных процессоров предусматривает 11 режимов адресации операндов. Из них только два не имеют отношение к памяти:

· операнд-регистр, который может находится в любом 8, 16 или 32-битном регистре процессора.;

· непосредственный операнд (8, 16 или 32-бит), который может содержаться в самой команде.

Остальные девять режимов (табл. 3.1.) используются при формировании эффективного адреса операнда из памяти.

Эффективный адрес вычисляется с использованием комбинации следующих компонентов:

Смещение (Displacement или Disp) – 8-, 16- или 32-битное число, включенное в команду.

База (Base) – содержимое базового регистра. Обычно используется для указания на начало некоторого массива.

Индекс (Index) – содержимое индексного регистра. Обычно используется для выбора элемента массива.

Масштаб (Scale) – множитель (1, 2, 4 или 8), указанный в коде инструкции. Этот элемент используется для указания размера элемента массива. Доступен только в 32-битном режиме адресации.

Эффективный адрес вычисляется по формуле EA=Base+Index*Scale+Disp.

Отдельные слагаемые в этой формуле могут и отсутствовать. Возможные режимы адресации приведены в табл. 3.1.


 

Таблица 3.1.Режимы адресации памяти 32-битных процессоров

Прямая адресация EA=Disp
Косвенная регистровая адресная Register Index Mode EA=Base
Базовая адресации Based Mode EA=Base+Disp
Индексная адресация Index Mode EA=Index+Disp
Масштабированная индексная адресации Scaled Index Mode EA=Scalex*Index+Disp*
Базово-индексная адресация Based Index Mode EA=Base+Index*
Масштабированная базово-индексная адресация Based Scaled Index Mode EA=Base+Scale* Index
Масштабированная базово-индексная адресация Based Index Mode with Displacement EA=Base+Index+Disp
Масштабированная базово-индексная адресации со смещение Based Scaled Index with Displacement EA=Base+Scale*Index+Disp*

Процессор может использовать режимы 32-битной или 16-битной адресации. Режим 16-битной адресации соответствует режимам процессоров 8086 и 80286, при этом в качестве компонентов адреса используются младшие 16 бит соответствующих регистров. Режим 32-битной адресации использует расширенные 32-разрядные регистры и имеет дополнительные режимы, использующие масштабирование индекса. Различия 16- и 32-битных режимов адресации приведены в табл. 3.2.

В реальном режиме по умолчанию используется 16-битная адресация, но с помощью префикса изменение разрядн6ости адреса (Address Length Prefix) для текущей инструкции можно переключится в 32-битный режим. При этом появляются дополнительные возможности адресации (масштабирования), но вычисленное значение эффективного адреса все равно не может преодолеть 64-килобайтный барьер – при такой попытке генерируется исключение 13 – General Protection Fault.

В защищенном режиме адресация по умолчанию определяется битом D дескриптора используемого кодового сегмента: при D=0 – 15 бит, при D=1 – 32 бита. Префикс разрядности адреса переключает разрядность для текущей инструкции на противоположную.


 

Таблица 3.2.Различия режимов адресации

Компоненты 16-битная адресации 32-битная адресации
Базовый регистр BX или BP Любой 32-битный общего назначения
Индексный регистр SI или DI Любой 32-битный общего назначение, кроме ESP
Масштаб Нет (всегда 1) 1, 2, 4 или 8
Смещение 0, 8 или 16 бит 0, 8 или 32 бит

При обращениях к памяти использование сегментных регистров по умолчанию определяется типом обращения (табл. 3.3.). На время текущей инструкции при необходимости для большинства типов обращения возможно использование альтернативного сегментного регистра, на что указывает префикс замены сегмента (CS:; DS:; ES:; SS:; FS: или GS) перед кодом инструкции.
Таблица 3.3.Использование сегментных регистров при адресации памяти

Тип обращения к памяти Сегментный регистр
по умолчанию альтернативный
Выборка команд CS Нет
Стековые операции SS Нет
Строка-приемник ES Нет
Любые ссылки к памяти, кроме использующих в качестве базового регистры BP, EBP или ESP DS CS,ES,SS FS,GS
Ссылки к памяти, использующие в качестве базового регистры BP, EBP или ESP SS CS,DS,ES, FS,GS

Прерывания и исключения

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

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

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

Маскируемые прерывания вызывают переход и высокий уровень сигнала на входе INTR (Interrupt Request) при установленном флаге разрешения (IF=1). В этом случае процессор сохраняет с стеке регистр флагов, сбрасывает флаг IF и вырабатывает два следующих друг за другом (back to back) цикла подтверждения прерывания, в которых генерируются управляющие сигналы INTA#( Interrupt Acknowledge). Высокий уровень сигнала INTR должен сохраняться по крайней мере до подтверждения прерывания. Первый цикл подтверждения холостой, по второму импульсу внешний контроллер прерываний передает по шине номер вектора, обслуживающего данный тип аппаратного прерывания. Прерывание с полеченным номером вектора выполняется процессором также, как и программное. Обработка текущего прерывания может быть в свою очередь прервана немаскируемым прерыванием, а если обработчик установит флаг IF, то и другим маскируемым аппаратным прерыванием.

Немаскируемые прерывания выполняются не зависимо от состояния флага IF по сигналу NMI (Non Mascable Interrupt). Высокий уровень на этом входе вызовет прерывание с типом (вектором) 2, которое выполняется также, как и маскируемое. Его обработка не может прерваться под действием сигнала на входе NMI до выполнения команды IRET.

Исключения (Exceptions) подразделяются на отказы, ловушки и аварийные завершения.

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

Ловушка (trap) – это исключение, которое обнаруживается и обслуживается после выполнения инструкции, его вызывающей. После обслуживания этого исключения управление возвращается на инструкцию, следующей за вызывающей ловушку. К классу ловушек относятся и программные прерывания.

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

Набор и обработка исключений реального и защищенного режимов различны. Под исключения Intel резервирует векторы 0-31 в таблице прерываний, однако в РС часть из них перекрывается системными прерываниями BIOS и DOS.

Поделиться:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...