Программирование и комп-ры

Процессоры. История развития. Структура. Архитектура


             МИНИСТЕРСТВО ОБЩЕГО И ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ

                            РОССИЙСКОЙ ФЕДЕРАЦИИ


                     ВОСТОЧНО-СИБИРСКИЙ ГОСУДАРСТВЕННЫЙ
                         ТЕХНОЛОГИЧЕСКИЙ УНИВЕРСИТЕТ



                         Кафедра Систем информатики


             Отчет по второй половине учебной практики на тему:
          “ПРОЦЕССОРЫ. ИСТРОИЯ РАЗВИТИЯ. СТРУКТУРА. АРХИТЕКТУРА. ”



                                           Выполнил студент группы : 637 – 1
                                                         637001  Cruel Angel



                  Оценка :              Дата защиты                        .



                                                              Руководитель :



                           г. Улан - Удэ, 1998 г.
            Оглавление:

       ВВЕДЕНИЕ
............................................................................
...................3
      1. 16-РАЗРЯДНЫЕ
         ПРОЦЕССОРЫ.........................................................
         7
       1.1. Процессоры
       i8086/88..............................................................
       .............8
        1.1.1. Организация памяти
      8086/88............................................................8
       1.1.2. Адресация ввода-
       вывода................................................................
       ...9
       1.1.3 Система
       команд................................................................
       ..................9
       1.2. Процессоры
       80186/80188...........................................................
       ..........10
       1.2.1. Математический сопроцессор
       8087.................................................10
       1.3. Процессор
       80286.................................................................
       .................10
       1.3.1. Организация памяти
       80286...............................................................11

       1.3.2.                                                          Ввод-
       вывод.................................................................
       .......................12
           1.3.3. Начальный сброс и переход в защищенный
режим.........................12
                                                                      1.3.4.
Защита......................................................................
...........................13
       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
                                  2.2.                             Процессор
80386.......................................................................
...............24
                                  2.3.                             Процессор
80486.......................................................................
...............25
                                  2.4.                             Процессор
Pentium.....................................................................
..............25
           2.5. Процессор
Celeron.....................................................................
...............29
       2.6.  Процессор PENTIUM® II
XEON®.........................................................30
       ПРИЛОЖЕНИЕ............................................................
....................................32
       СПИСОК
ЛИТЕРАТУРЫ..................................................................
..............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-разрядным  расширением  ММХ,  включают  в  себя
подмножество системы команд и архитектуры нижестоящих  моделей,  обеспечивая
совместимость с ранее написанным ПО.



                                   ГЛАВА 1


                           16-разрядные процессоры



16-разрядные процессоры сами  по  себе  уже  представляют  в  основном  лишь
исторический  интерес.   Но   именно   на   них   “выехали”   миллионы   РС,
обеспечивающих живучесть и подстегивающих развития всего семейства.

 1.1. Процессоры i8086/8088
Процессоры 8086, выпущенные фирмой Intel в 1978 году,  относятся  к  первому
поколению 16-битных  процессоров.  Годом  позже  появилась  его  модификация
1088. Оба эти процессора выполняют 8/86-битные логические  и  арифметические
операции, включая умножение и деление, операции с строками и операции ввода-
вывода.  Процессоры  имеют  20-разрядную  шину  адреса,  которая   позволяет
адресовать до  1  Мб  памяти.  Шина  данных  у  8086  16-разрядная,  у  8088
разрядность внешней  шины   данных  сокращена  до  8  бит.  Это  сокращение,
сделанное с целью  удешевления  системы  в  целом,  оборачивается  некоторым
снижением  производительности:  8086  за  счет  большей   разрядности   шины
работает примерно на 20-60% быстрее, чем 8088 с той  же  тактовой  частотой.
Функциональные различия этих процессоров,  обусловлены  разной  разрядностью
шины, появляются только в способе  подключения  8-  и  16-разрядных  внешних
устройств. С программной точки зрения эти процессоры идентичны,  их  система
команд и набор  процессоров  включены  во  все  процессоры  РС-  совместимых
компьютеров. От родоначальника - процессора 8086 – пошло  общее  обозначения
семейства: х86. Процессоры поддерживают аппаратные и программные  прерывания
и  допускают   разделяемое   использование   шины   совместно   с    другими
процессорами или контроллерами (например к, прямого доступа к памяти –  DMA)
.  Также  предусмотрено  использование  математического  сопроцессора  8087,
существенно повышающего производительность вычислений.
      В процессорах применима конвейерная архитектура, позволяющая выполнить
выборку кодов инструкций из памяти  их  декодирование  во  время  выполнения
внутренних операций.  Конвейер  повышает  производительность  процессора  за
счет  сокращения   времени  простоя   его   операционных   узлов.   Конвейер
процессора  8086  имеет  6-байтную  внутреннюю  очередь   инструкций.   Блок
предварительной выборки при наличии 2 свободных байт в очереди старается  ее
заполнить в то время, когда внешняя шина  процессора  не  занята  операциями
обмена. Очередь у процессора 8088 сокращена до  4  байт,  а  предварительная
выборка осуществляется уже при наличии одного свободного байта. Это  отличия
оптимизируют конвейер с учетом разрядности шины данных.  Очередь  обнуляется
при выполнении любой команды  передачи  управления,  даже  при  переходе  на
следующий  адрес.  Этим  свойством  часто  пользуются  при  программировании
управления устройствами ввода-вывода, требующими  задержки  между  соседними
операциями обмена.
      Процессор имеет 14 регистров разрядностью 16 бит, операнды могут иметь
8 или 16 бит и представлять  знаковые  и  беззнаковые  и  двоично-десятичные
числа. Система команд имеет 24 режима  адресации  операндов.  Среднее  время
выполнения команды занимает 12 тактов синхронизации,  один  цикл  обмена  на
внешней шине занимает  2  такта  (без  тактов  ожидания).  Тактовая  частота
процессора 8088, применяемого в превых РС,  была  4,77  МГц,  в  последствии
появились процессоры с частотой 8 и 10 МГц (применялись в Turbo XT).

1. 1. 1. Организация памяти 8086/88
Память  для   процессоров   8086/8088   представляется   в   виде   линейной
последовательности байт. Для  обращения  к  памяти  процессор  (совместно  с
внешней схемой) формирует шинные сигналы MEMWR#   (Memory  Write)  и  MEMRD#
(Memory  Read)  для  операции  записи  и  считывания  соответственно.  Охват
пространства  размером  1  Мб  обеспечивается  20-разрядной  шиной   адреса.
Логическая память разбивается на сегменты размером 65 Кб.  Физический  адрес
памяти (поступающий на шину адреса разрядностью 20 бит) состоит из двух  16-
битных частей – адрес сегмента Seg и исполнительного  адреса  ЕА  (executive
address), суммируемых со смещением на 4 бита (рис 2.1).



Рис. 2.1. Формирование физического адреса памяти процессором 8086/8088

      Процессор может обращаться к одному байту памяти,  так  и  слову,  или
двойному слову. При размещении слова в  памяти  с  адресом,  соответствующим
адресу слова, содержит его младшую  часть  (Low),  следующий  байт  содержит
старшую часть (High). Слово  может  размещаться  в  памяти  как  по  четному
(Even),  так  и  по  не  нечетному  (Odd)  адресу.  Двойное   слово   обычно
используется для хранения полного адреса,  и  в  нем  располагается  сначала
слово смещения (в порядке L, H),  а  затем  сегмента  (в  том  же  порядке).
Сегментация памяти в порядке L, H являются  характерной  чертой  процессоров
Intel.
      Все пространство памяти разбивается  на  параграфы  –  области  из  16
смежных байт, начиная с нулевого адреса. Вполне очевидно, что любой  сегмент
может начинаться только на границе параграфа (четыре младших бита  адреса  –
нулевые).


1.1.2. Адресация ввода-вывода
Для обращения к устройствам ввода-вывода процессор имеет  отдельные  команды
IN и  OUT,  результатом  выполнения  которых  является  формирование  шинных
сигналов IORD# (Input/ Output Write) для чтения или записи одного  или  двух
байт. Данные при чтении могут помещаться  только  в  регистр  AL  или  AX  и
выводятся из этих же регистров. В циклах  ввода-вывода  используется  только
16 младших бит шины адреса (старшие биты при этом  нулевые),  что  позволяет
адресовать до 64 Кб регистров ввода-вывода. Адрес устройства  задается  либо
в команде  (только  младший  байт,  старший  –  нулевой),  либо  берется  из
регистра DX (полный 16-битный адрес).

1.1.3. Система команд
Набор команд 8086/88 включает следующие основные группы:
     . инструкции пересылки данных
     . арифметические и логические инструкции;
     . инструкции со строками;
     . инструкции передачи управления;
     . инструкции управления процессором;
      Каждая команда имеет один или два байта инструкции, за которыми  может
следовать 1, 2  или  4  байты  операнда.  Перед  кодом  инструкции  возможно
применение префиксов  CS;,  DS;,  ES;,  SS;,  указывающих  на  использование
заданных сегментных регистров вместо обычного,  префикса  REP,  указывающего
на необходимость повтора инструкции указанное в регистре  СХ  число  раз,  и
префикса LOCK, блокирующего системную шину на время  выполнения  инструкции.
С позиции сегодняшнего  дня можно считать, что система команд  16-разрядного
процессора 8086/88 является подмножеством  команд  32-разрядных  процессоров
80х86.

2. . Процессоры 80186/80188
Процессоры i80186/80188  и  их  модификации  80С186/80С188  не  представляют
нового  представления   архитектуры:   как   и   8085/8088,   они   являются
процессорами   с   16-разрядной   внутренней   архитектурой   и   программно
совместимыми с 8086ю Разрядность шины адреса - 20 бит, шины данных  у  80186
– 16 бит, у 80188 – 8 бит.  Эти  процессоры  имеют  встроенные  периферийные
контроллеры прерывания, прямого доступа к  памяти,  трехканальный  таймер  и
генератор синхронизации. За счет архитектурных  улучшений  сокращенно  число
тактов, требуемых для выполнения некоторых команд. Процессоры  80С186/80С188
имеют  средства  управления  энергопотреблением,  есть  их  модификации   со
встроенными   последовательными   портами   и   контроллерами    регенерации
динамической   памяти.   Встроенная   периферия   этих   процессоров   имеет
программный  интерфейс,  не  совместимы  с  IBM  РС  -  спецификациями.  Эти
процессоры используются  во  встраиваемых  контроллерах  и  компьютерах,  не
требующих 100% IBM – совместимости  (возможно обеспечение  совместимости  на
уровне MS DOS).

1.2.1. Математический сопроцессор 8087
Сопроцессор  8087,  официально  (фирмой  Intel)  называемый   NPX   (Numeric
Processor   eXtension),   предназначен   для    расширения    вычислительных
возможностей  центрального  процессора  (CPU)  8086/8088,  80186/80188.  Его
применение  к  системе  команд  8086  добавляется  68  мнемоник,  включающих
арифметические, тригонометрические, экспоненциальные и логарифмические.

   3. Процессор 80286
Процессор 80286, выпущенный в 1982 году, представляет второе  поколение  16-
разрядных  процессоров.  Он  имеет  специальные  средства   для   работы   в
многопользовательских и многозадачных системах. Самым существенным  отличием
от  8086/88  является  механизм   управления   адресации   памяти,   который
обеспечивает  четырехуровневую  систему  защиты  и   поддержки   виртуальной
памяти.  Специальные  средства   предназначены   для   поддержки   механизма
переключения задач (Task switching).  Процессор  имеет  расширенную  систему
команд, которая кроме команд управления защитой включает все команды 8086  н
и несколько новых команд общего назначения. Процессор может работать в  двух
режимах:
    8086 Real Address Mode – режим реальной адресации (или просто  реальный
режим - Real Mode), полностью совместимый с 8086.  В  этом  режиме  возможна
адресация до 1 Мбайт физической памяти (на самом  деле,  за  счет  “удачной”
ошибки, почти на 64 Кб больше).
    Protect Virtual Address Mode – защищенный режим  виртуальной  адресации
(или просто защищенный режим  -  Protect  Mode).  В  этом  режиме  процессор
позволяет адресовать до  16  Мбайт  физической  памяти,  через  которые  при
использовании страничной адресации могут отображаться до  1  Гб  виртуальной
памяти каждой задачи. Система команд в  этом  режиме  также  включает  набор
команд 8086,  расширенный  для  обеспечения  аппаратной  реализации  функций
супервизора  многозадачной  ОС  и   виртуальной   памяти.   Переключение   в
защищенный   режим   осуществляется   одной   командой   (с   предварительно
подготовленными  таблицами   дескрипторов)   достаточно   быстро.   Обратное
переключение  в  реальный  режим  возможно  только  через  аппаратный  сброс
процессора.
    По составу и назначению в реальном режиме  регистры  80286  в  основном
совпадают с регистрами 8086/88. Изменения касаются назначения  бит  регистра
8086, процессор 80286 имеет 16-битную шину данных и очередь команд  6  байт.
За счет архитектуры сокращенно время выполнения операций: процессор 20286  с
тактовой частотой 12,5 МГц работает более чем в 6 раз  быстрее  чем  8086  с
тактовой   частотой   5   МГц.   Предусмотрена   возможность   использования
высокопроизводительного процессора 80287, программно совместимого с 8087.
    Под управлением MSDOS процессор  80286  обычно  используют  в  реальном
режиме работы. Защищенный  режим  используют  ОС  типа  XENIX,  UNIX,  OS/2,
NetWare286 и оболочка MS Windows. Хотя его  преимущества  в  РС  реализованы
лишь частично (он в основном  использовался  как  быстрый  процессор  8086),
именно с этим процессором связан настоящий “бум” на рынке РС.

1.3.1. Организация памяти 80286
Как и у процессоров 8086/8088, для обращения к памяти  процессор  (совместно
с внешней схемой) формирует шинные сигналы MEMWR# (Memory  Write)  и  MEMRD#
(Memory Read) для операции записи и считывания соответственно.  Шина  адреса
разрядностью 24 бита позволяет адресовать 16 Мб  физической  памяти,  но   в
реальном режиме доступен только 1 Мб,  начинающийся  с  младших  адресов.  С
программной точки зрения память также  организуется  в  виде  сегментов,  но
управление  сегментацией  имеет  существенные  различия  для   реального   и
защищенного режимов.
      В  реальном  режиме  по   адресации   памяти   декларируется   полная
совместимость с процессором 8086, который  своей  16-битной  адресной  шиной
охватывает пространство в 1 Мб.  На  самом  деле  на  радость  разработчиков
программного  обеспечения  РС,  80286  имеет  ошибку,  “узаконенною”   и   в
следующих поколения процессоров. При вычислении физического адреса  возможно
возникновение  переполнения,  которое  с  20-битной  шиной   адреса   просто
игнорируется. Например, Seg=FFFFh и EA=FFFF, физический  адрес,  вычисленный
по формуле PA=16*Seg+EA=10FFEF, процессором  8086  трактуется  как  0FFEF  –
адрес, принадлежащий первому мегабайту.  Однако  на  выходе  А20  процессора
80286 в этом случае устанавливается единичное  значение,  что  соответствует
адресу ячейки  из  второго  мегабайта  физической  памяти.  Для  обеспечения
полной программной совместимости с 8086 в схему РС  был  введен  специальный
вентиль Gate A20, принудительно обнуляющий бит А20  системной  шины  адреса.
Не  оценив  потенциальной  выгоды  от  этой  ошибки,   управление   вентилем
узаконили  через  программно-управляемы  бит  контроллера  клавиатуры  8042.
Когда оперативная память подешевела, а  “аппетит”  программного  обеспечения
вырос, в  эту  небольшую  область  (64К-16  бит)  стали  помещать  некоторые
резидентные программы или даже часть операционный системы, а  для  ускорения
управлением  вентилем  появились  более  быстрые  способы  (Gate  A20   Fast
Control).
    В отличии от 8086 процессор 80286 имеет средства контроля за  переходом
через границу сегмента, работающие в реальном режиме. При попытке  адресации
к слову, имеющему  смещение  FFFh  (его  старший  байт  выходит  за  границу
сегмента), или выполнения инструкции,  все  байты  которой  не  умещаются  в
одном сегменте, процессор вырабатывает прерывание – исключение  13  (0Dh)  –
Segment Overrun Exception.  При  попытке  выполнения  инструкции  ES-CAPE  с
операндом памяти, не умещаемся в сегменте,  вырабатывается  исключение  9  –
Processor Extension Segment Interrupt.
    В защищенном режиме работают не все режимы  адресации,  допустимые  для
8086 и реального режима 80286. Отличия касаются определения сегментов:
     . сегментные регистры CS, DS, SS и ES хранят не  сами  базовые  адреса
       сегментов, а селекторы, по которым из  таблицы,  хранящейся  в  ОЗУ,
       извлекаются дескрипторы сегментов;
     . дескриптор описывает базовый адрес, размер сегмента (1-64 Кб) и  его
       атрибуты;
     . базовый адрес сегмента имеет разрядность 24 бита, что и обеспечивает
       адресацию 16 Мб физической памяти.
    Селекторы, загружаемые в 16-битные сегментные регистры, имеют три поля:
RPL (биты 0, 1), TI (бит 2) и INDEX (биты 3-15):
RPL (Requested Privilege Level) – запрошенный уровень привилегий;
TI (Table Indicator) – индикатор использования GDT – глобальный  (TI=0)  или
LDT – локальной (TI=1) таблицы дескрипторов;
INDEX – номер дескриптора в таблице.
    Дескрипторы хранятся в слове и занимают  по  четыре  смежных  слова  (8
байт). При загрузке нового значения  селектора  дескрипторы  считываются  из
ОЗУ и кэшируются во  внутренних    программно  не  доступных  (и  невидимых)
регистрах процессора. До смены значения селектора  при  обращения  к  памяти
используются значения дескрипторов  только  из  кэш-регистров.  Обращение  к
дескрипторам выполняются как заблокированные шинные циклы, что  обеспечивает
целостность дескрипторов и при наличии других контроллеров шины.
    Для  функций  передачи  управления  и  переключения  задач  определенны
специальные типы дескрипторов


1.3.2. Ввод-вывод
Как и 8086, процессор 80286 позволяет адресовать до 64К однобайтных или  32К
двухбайтных регистров в пространстве, отдельном от  памяти  (команды  ввода-
вывода  вызывают  шинные  циклы  с  активными  сигналами  IORD#,  IOWR#).  В
адресном пространстве ввода-вывода  область  00F8-00FF  зарезервирована  для
использования  сопроцессором.  При  операциях  ввода-вывода   старшие   биты
адреса (линии А[16:20]) не используются. Адрес устройства  либо  задается  в
команде (только младший байт, старший – нулевой), либо берется  из  регистра
DX  (полный  16-битный  адрес).  Строковые  команды   REP   INSB/INSW,   REP
OUTSB/OUTSW  обеспечивают  блочный  ввод-вывод  со  скоростью,   превышающей
аналогичные операции со стандартным контроллером DMA.
    В    защищенном     режиме     инструкции     ввода-вывода     являются
привилегированными. Это означает, что они могут исполнятся  задачами  только
с определенным уровнем привилегий, определяемым полем IOPL регистра  флагов.
Несанкционированная попытка выполнения этих инструкций  вызывает  исключение
13 – нарушения защиты (знаменитое сообщение “General Protection Error”).

1.3.3. Начальный сброс и переход в защищенный режим
По высокому уровню сигнала на входе RESET  процессор  прекращает  выполнение
инструкций и перестает управлять локальной шиной. После  аппаратного  сброса
процессор переходит к выполнению команды, считанной  по  физическому  адресу
FFFF0h. Сброс (и только сброс!)  переводит  процессор  в  реальный  режим  и
устанавливает значения некоторых регистров.
    Только после сброса и до первой  команды  межсегментного  перехода  или
вызова на шине адреса в реальном  режиме  бита  А[20:23]  в  циклах  выборки
команд имеют единичное значения. Из этого следует, что по  крайней  мере  на
начальный период времени после сигнала RESET компьютер  должен  иметь  образ
BIOS в адресах FFFFF0-FFFFFFh, в  то  время  как  РС  на  8086/88  ROM  BIOS
располагалась под границей 0FFFFFh. Перемещение BIOS  из  первого  мегабайта
памяти  в  старшие   адреса   “навсегда”   невозможно,   поскольку   векторы
прерывания,  ссылающиеся   на   сервисы  BIOS,  в  реальном   режиме   могут
адресоваться только к памяти в  диапазоне  адресов  0-0FFFFh  (0-10FFEF  при
открытом вентиле Gate A20). Таким образом, у РС/AT на  процессоре  80286  (и
старше) ROM BIOS  отображается  по  крайней  мере  на  две  области  памяти,
расположенные  под  верхними  границами  первого  и  последнего   мегабайтов
физической памяти.
    Перевод процессора в защищенный режим осуществляется  загрузкой  в  MSW
слова с единичным значением бита РЕ (Protect Enable). Перед  этим  в  памяти
должны быть проинициализированы   необходимые  таблицы  дескрипторов  IDT  и
GDT, а в базовые регистры IDT и GDT  должны  быть  занесены   их  физические
адреса   (24-битные)   и   размер.   После   выполнения   инструкции   LMSW,
устанавливающий бит РЕ, сразу должна  выполнятся  команда  внутрисегментного
перехода JMP для  очистки  очереди  инструкций,  декодированных  в  реальном
режиме.
    Для установки регистров процессора в  начальное  состояние  защищенного
режима, предполагаемое системное ПО, выполняют инструкцию JMP с  ссылкой  на
селектора начального  TSS  системы.  При  этом  загрузится  регистр  задачи,
регистры LDT, регистры сегментов и общие регистры. Регистр задачи TR  должен
указывать на  действительный  TSS,  поскольку  операция  переключения  задач
повлечет сохранение текущего состояния задач.


1.3.4. Защита
Процессор 80286 имеет механизмы защиты  от  несанкционированного  выполнения
критических инструкций – команды HLT,  которая  останавливает  процессор,  и
команд, влияющих на сегменты кода и данных. Механизмы  сгруппированы  в  три
группы:

     . ограничения использования сегментов (например, запрет  на  записи  в
       только читаемые сегменты данных); доступность  использования  только
       сегментов, дескрипторы которых описаны в GDT и LDT;
     . ограничения доступа к сегментам через правила привилегий;
     . выделение привилегированных инструкций или операций,  которые  можно
       выполнять только при определенных уровнях CPL и IOPL (биты 13  и  14
       регистра флагов).



                                   ГЛАВА 2


                    Архитектура 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.

2.1.1. Организация памяти
Память для процессоров 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 |EA=Base+Scale* Index|
|Index Mode                                               |                    |
|Масштабированная базово-индексная адресация Based Index  |EA=Base+Index+Disp  |
|Mode with Displacement                                   |                    |
|Масштабированная базово-индексная адресации со смещение  |EA=Base+Scale*Index+|
|Based Scaled Index with Displacement                     |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               |Нет               |
|Любые ссылки к памяти, кроме     |DS               |CS,ES,SS          |
|использующих в качестве базового |                 |FS,GS             |
|регистры BP, EBP или ESP         |                 |                  |
|Ссылки к памяти, использующие в  |SS               |CS,DS,ES,         |
|качестве базового регистры BP,   |                 |FS,GS             |
|EBP или ESP                      |                 |                  |

2.1.2. Прерывания и исключения
Прерывания и исключения нарушают нормальный  ход  выполнения  программы  для
обработки внешних событий или сообщения о возникновении особых  условий  или
ошибок.
    Прерывания подразделяются на аппаратные (маскируемые и  немаскируемые),
вызываемые электрическими сигналами на выходах  процессора,  и  программные,
вызываемые  по  команде   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.

2.1.3. Начальный сброс и самотестирование
По высокому уровню сигнала на входе RESET  процессор  прекращает  выполнение
инструкции и перестает управлять локальной шиной. После  аппаратного  сброса
процессор переходит к выполнению команды, считанной  по  физическому  адресу
FFFFFFF0h. Сброс  переводит  процессор  в  реальный  режим  и  устанавливает
значения некоторых регистров:
      FLAGS = 0002h и биты VM и RF его расширения обнуляются;
      в регистре CR0 обнуляются биты PG, TS, EM, MP и РЕ;
      CS = F000h (база устанавливается FFFF0000h, лимит – 0FFFFh);
      DS = ES = SS = FS = GS = 0000h
      Регистр DH после сброса содержит идентификатора  процессора  Component
Id (03-386, 04-486, 05-Pentium, 06-Pentium Pro или Pentium II), DL  –  номер
модели (Revision Id).
      Только после сброса и до первой команды  межсегментного  перехода  или
вызова на шине адреса в реальном  режиме  биты  A[20:31]  в  циклах  выборки
команд имеют единичное значение. Из этого следует, что по  крайней  мере  на
начальный период времени после сигнала RESET компьютер  должен  иметь  образ
BIOS в адресах FFFFFFF0-FFFFFFFFh, в то время, как в РС 8086/88 имели  образ
под  границей  16-го  мегабайта  (FFFFFFh).  Перемещение  BIOS  из   первого
мегабайта памяти в режиме нормальной работы  невозможно,  поскольку  векторы
прерывания,  ссылающиеся  на  сервисы  BIOS,   в   реальном   режиме   могут
адресоваться только к памяти в диапазоне адресов  0-0FFFFFh  (0-10FFEF)  при
открытом вентиле Gate A20).
      Если во время спада сигнала RESET  на  определенном  входе  процессора
удерживать низкий уровень сигнала,  процессор  начнет  выполнять  внутренний
тест BIST  (Built-In  Self-Test).  Тест  для  386-го  и  486-го  процессоров
выполняется примерно за 2 в  20-ой  степени  тактов,  что  занимает  десятки
миллисекунд. По окончанию самотестирования процессор  начинает  работу,  как
после  обычного  сброса,  а  регистр  EAX  содержит   сигнатуру   результата
тестирования. Об успешном выполнении теста свидетельствует нулевое  значение
сигнатуры.

2.1.4. Ввод-вывод
Как и 8086, 32-разрядные процессоры позволяют адресовать до 64К  однобайтных
или  32К  двухбайтных  регистров  в  пространстве,  отдельном   от   памяти.
Дополнительно  имеется  возможность  обращения  к  32-битным   портам.   При
операциях ввода-вывода линии  A[16:31]  не  используются.  Адрес  устройства
задерживается либо в команде (только младший байт, старший – нулевой),  либо
берется из регистра DX  (полный  16-битытный  адрес).  Команды  ввода-вывода
вызывают шинные циклы с активными сигналами IORD#, IOWR#. Строковые  команды
обеспечивают  блочный  ввод-вывод  со  скоростью,  превышающей   аналогичные
операции со стандартным контроллером DMA.  В  адресном  пространстве  ввода-
вывода область 0F8-0FF зарезервирована для использования сопроцессором  (при
обращении к сопроцессору 386 выставляет единицу на линии  А31  шины  адреса,
что используется для упрощения дешифрации адресов).
    В    защищенном     режиме     инструкции     ввода-вывода     являются
привилегированными. Это означает, что они могут исполнятся  задачами  только
с определенным уровнем привилегий, определяемым полем IOPL  регистра  флагов
или  битовой  картой  разрешения  ввода-вывода   (I/O   Remission   Bitmap),
хранящийся  в  сегменте  состояния   задачи.   Несанкционированная   попытка
выполнения  этих  инструкций  вызовет  исключение  13  –  нарушение   защиты
(знаменитое сообщение “General Protection Error ”).

2.1.5. Режим системного управления SMM
Современные   модели   32-разрядных   процессоров   (начиная   с   некоторых
модификаций  386-го  и  486-го),  кроме   обычных   режимов   –   реального,
защищенного  и  режима  V86,  -  имеют   дополнительный   режим   системного
управления  SMM  (System  Management  Mode).  Этот  режим  предназначен  для
выполнения  некоторых  действий  с  возможностью  их  полной   изоляции   от
прикладного программного обеспечения и даже  операционный  системы.  Главным
образом,  этот  режим  предназначен  для   реализации   системы   управления
энергопотреблением.
    В режим SMM процессор может войти  только  по  сигналу  на  входе  SMI#
(System Management Interrupt), более совершенные процессоры  могут  войти  в
SMM и  по  приему  соответствующего  сообщения  по  шине  APIC.  Сигнал  для
процессора является запросом прерывания с наивысшим  приоритетом.  Обнаружив
активный сигнал  (низкий уровень)  SMI#,  процессор  по  завершении  текущей
инструкции и выгрузки буферов  записи  переключается  в  режим  SMM,  о  чем
свидетельствует  его  выходной  сигнал  SMIACT#.  Сразу  при  входе  в   SMM
процессор сохраняет свой контекст –  почти  все  регистры  –  в  специальной
памяти SMRAM. Эта память является  выделенной  областью  физической  памяти,
доступ  к  которой  обеспечивается  внешними  (по  отношению  к  процессору)
схемами в шинных циклах  обращения  к  памяти  только  при  наличии  сигнала
SMIAKT#.  После  сохранения  контекста  процессор  переходит  к   выполнению
обработчика SMI, который расположен  в  той  же  памяти  SMRAM.  Обработчика
представляет  собой  последовательность  обычных   инструкций,   исполняемых
процессором  в  режиме,  напоминающем  реальный.  При  входе  в  режим   SMM
автоматически запрещаются аппаратные прерывания (включая и немаскируемые)  и
не  генерируются  исключения,  так  что   действия   процессора   однозначно
определяются программой обработчика  SMI.  Процедура  обработки  завершается
инструкцией RSM, по  которой  процессор  восстанавливает  свой  контекст  из
образа, хранящегося в SMRAM, и возвращается в обычный режим работы.
    При  возврате  из   SMM   возможны   некоторые   варианты,   заказанные
обработчиком (в пределах возможности  SMM  данного  процессора).  Во-первых,
обработчик может программно внести изменения в образ  контекста  процессора,
и при его восстановлении процессор может вернуться  не  в  то  состояние,  в
котором произошло SMI. Во-вторых возможен выбор варианта для  случая,  когда
прерывание SMI возникло во время останова  процессора  по  инструкции  HALT:
можно вернуться снова на инструкцию останова, а можно перейти  к  выполнению
следующей за  ней  инструкции.  В-третьих,  процессоры,  начиная  с  Pentium
второго поколения (и  Enhanced  486  фирмы  AMD),  поддерживают  возможность
рестарта (повторного  выполнения)  инструкции  ввода-вывода,  предшествующей
появлению сигнала SMI#.
    Возможность  рестарта  инструкции  ввода-вывода  является   расширением
режима  SMM.  Ее  используют,  например,  когда  прикладная  программа  (или
системный   драйвер)   пытается   обратиться   операцией   ввода-вывода    к
периферийному устройству, находящемуся в “спящем” режиме.  Системная  логика
должна  в  этом  случае  выработать  сигнал  SMI#   раньше   сигнала   RDY#,
завершающего шинный цикл рестартуемой  инструкции  ввода-вывода.  Обработчик
SMI “разбудит” устройство, после чего операции  ввода-вывода  рестартует,  и
прикладное ПО (или  драйвер)   “не  заметит”,  что  устройство  пребывало  в
спячке. Таким образом, управление потреблением может быть  организованно  на
уровне BIOS способом, совершенно “прозрачным” для  программного  обеспечения
(в том числе и ОС). Прозрачность SMM  обеспечивается  следующими  свойствами
режима:
     . возможность только аппаратно входа в SMM,
     . исполнением кода SMM в отдельном адресном пространстве,
     . полным сохранением состояния прерванной программы в области SMRAM,
     . запретом обычных прерываний,
     . восстановлением состояния прерванной задачи по выходу из режима SMM.
    Память SMRAM должна быть физически или  логически  выделенной  областью
    размером от  32  Кб  (минимальные  потребности  SMM)  до  4  Гб.  SMRAM
    располагается, начиная  с  адреса  SMIBASE  (по  умолчанию  30000h),  и
    распределяется относительно адреса SMIBASE следующим образом:
     .  FE00h-FFFFh  (3FE00h-3FFFFh)   –   область   сохранения   контекста
       (распределяется,  начиная  со  старших  адресов  по  направлению   к
       младшим). По прерыванию SMI  сохраняются  практически  все  регистры
       процессора, включая программно невидимые регистры CR1, CR2 и CR4,  а
       также скрытые регистры дескрипторов для CS, DS, ES,  FS,  GS  и  SS.
       Автоматическое сохранение не производится для регистров DR5-DR0, TR7-
       TR3 и регистров FPU;
     . 8000h (38000h) – точка входа в обработчик (SMI Handler);
     . 0-7FFFh (30000h-37fffh) – свободная область.

2.1.6. Расширение ММХ
Расширение ММХ ориентированно  на  мультимедийное,  2D  и  3D-графическое  и
коммуникационное применение. Основная  идея  расширения  MMX  заключается  в
одновременной обработки нескольких элементов данных  за  одну  инструкцию  –
так называемая технология SIMD (single Instruction – Multiple Data).
Расширение ММХ  использует новые типы упакованных 64-битных данных:
     . упакованные байты (Packed byte) – восемь байт;
     . упакованные слова (Packed word) – четыре слова;
     . упакованные двойные слова (Packed doubleword) – два двойных слова;
     . учетверенное слово (Quadword) – одно слово.
    Эти типы данных могут специальным образом  обрабатываться  в  регистрах
ММХ0-ММХ7, представляющих собой младшие биты стека 80-битных регистров  FPU.
Как и регистры FPU, эти  регистры  не  могут  использоваться  для  адресации
памяти,  совпадение  регистров  FPU  и  ММХ   накладывает   ограничения   на
чередование  кодов  FPU  и  ММХ  –  забота  об  их  независимости  лежит  на
программисте приложений ММХ.
    Еще одна особенность технологии ММХ – поддержка арифметики с насыщением
(saturating arithmetic). Ее отличие  от  обычной  арифметики  с  циклическим
переполнением (wraparound mode) заключается в  том,  что  при  возникновении
переполнения в результате фиксируется максимальное  возможное  значение  для
используемого   типа   данных,   а   перенос    игнорируется.    В    случае
антипереполнения в результате  фиксируется  минимальное  возможно  значение.
Граничные  значения  определяются  типом  (знаковые   или   беззнаковые)   и
разрядностью переменных. Такой  режим  вычислений  актуален,  например,  для
вычисления цветов в графике.
    В систему команд введено 57 дополнительных инструкций для одновременной
обработки нескольких единиц данных.  Одновременно  обрабатываемое  64-битное
слово может содержать как одну единицу обработки, так  и  8  однобайтных,  4
двухбайтных  или  2  четырехбайтных  операнда.  Новые  инструкции   включают
следующие группы:
     . арифметические  (Arithmetic  Instructions),  включающие  сложение  и
       вычитание в разных  режимах,  умножение  и  комбинацию  умножения  и
       сложения;
     . сравнение (Comparison Instructions) элементов  данных  на  равенство
       или по величине;
     . преобразование форматов (Conversion Instructions);
     . логические (Logical Instructions) – И, И-НЕ, ИЛИ и Исключающее  ИЛИ,
       выполняемые над 64-битными операндами;
     . сдвиги (Shift Instructions) – логические и арифметические;
     . пересылки данных (Data Transfer Instructions) между регистрами ММХ и
       целочисленными регистрами или памятью;
     . очистка ММХ (Empty MMX State) – установка признаков пустых регистров
       в слове тегов.
    Инструкции ММХ не влияют на флаги условий.
    Регистры ММХ, в отличии от регистров FPU,  адресуются  физически  а  не
относительно значения TOS. Более того, любая инструкция  ММХ  обнуляет  поле
TOS регистра состояния FPU. В слове тегов свободному регистру  соответствует
комбинация  “11”,  остальные  комбинации  указывают  только   на   занятость
регистра. После  каждой  операции  ММХ  биты  тегов  используемого  регистра
назначения обнуляются. Неиспользуемые  в  ММХ  биты  [79:64]  регистров  FPU
заполняются  единицами,  так  что   ошибочное   использование   данных   ММХ
инструкций FPU приведет к исключению.
    Инструкции  ММХ  не  порождают  новых  исключений.  Исключения  при  их
выполнении могут возникать только при  нарушении  границ  при  обращениях  к
памяти (данные и инструкции).  Однако  если  предшествующая  инструкция  FPU
породила условие исключения, то оно  произойдет  при  выполнении  инструкции
ММХ. После его обработки инструкция ММХ может быть благополучна исполнена.
    Инструкции ММХ доступны из любого режима процессора.  При  переключении
задач необходимо следить за корректностью сохранения контекста,  как  и  при
работе с FPU.
    Часто чередование годов FPU и ММХ может снизить  производительность  за
счет необходимости сохранения и восстановления  весьма  объемного  контекста
FPU.

2.1.7.  Внутренний кэш
Внутренне кэширование обращений к памяти применяется в процессорах,  начиная
с 486-го. С кэшированием связаны новые функции процессоров,  биты  регистров
и внешние сигналы.
    Процессоры 486 и Pentium имеют внутренний кэш первого уровня, в Pentium
Pro и Pentium II имеется и вторичный кэш. Процессоры могут иметь как  единый
кэш инструкций и данных, так  и  общий.  Выделенный  кэш  инструкций  обычно
используется только для чтения. Для  внутреннего  кэша  обычно  используется
наборно-ассоциативная архитектура.
    Строки в кэш-памяти  выделяются  только  при  чтении,  политика  записи
первых процессоров 486 – только Write Through (сквозная запись) –  полностью
программно-прозрачная.  Более  поздние  модификации  486-го  и  все  старшие
процессоры  позволяют  переключаться  на  политику  Write   Back   (обратная
запись).
    Работу  кэша   рассмотрим   на   примере   четырехканального   наборно-
ассоциативного кэша процессора 486, его физическая  структура  приведена  на
рис. 3.1.7.  Кэш  является  несекторированным  –  каждый  бит  достоверности
(Valid bit) относится к целой  строке,  так  что  стока  не  может  являться
“частично достоверной”.
    Работу  внутренней   кэш-памяти   характеризуют   следующие   процессы:
обслуживание  запросов  процессора  на  обращение  к  памяти,  выделение   и
замещение строк для  кэширования  областей  физической  памяти,  обеспечение
согласованности данных внутреннего кэша  и  оперативной  памяти,  управление
кэшированием.
    Любой внутренний запрос процессора на обращение к  памяти  направляется
на внутренний кэш. Теги четырех строк  набора,  который  обслуживает  данный
адрес, сравниваются со  старшими  битами  запрошенного  физического  адреса.
Если адресуемая область представлена в строке кэш-памяти  (случая  попадания
–cache hit), запрос на чтение обслуживается только  кэш-памятью,  не  выходя
на  внешнюю  шину.  Запрос  на  запись  модифицирует  данную  строку,  и   в
зависимости от политики записи либо  сразу  выходит  на  внешнюю  шину  (при
сквозной  записи),  либо  несколько  позже  (при   использовании   алгоритма
обратной записи).



             Рис 3.1.7. Структура первичного кэша процессора 486

    В случае промаха (Cache Miss) запрос на запись направляется  только  на
внешнюю шину, а запрос на чтение  обслуживается  сложнее.  Если  этот  зарос
относится к кэшируемой области памяти,  выполняется  цикл  заполнения  целой
строки кэша – все 16 байт (32 для Pentium) читаются из оперативной памяти  и
помещаются  в  одну  из  строк  кэша,  обслуживающего  данный  адрес.   Если
затребованные  данные  не  укладываются  в  одной  строке,   заполняется   и
соседняя. Заполнение строки  процессор  старается  выполнить  самым  быстрым
способом – пакетным циклом с 32-битными передачами (64-битными  для  Pentium
и старше).
    Внутренний запрос  процессора  на  данные  удовлетворяется  сразу,  как
только затребованные данные считываются из ОЗУ – заполнение строки до  конца
может  происходить  параллельно  с  обработкой  полученных  данных.  Если  в
наборе, который обслуживает данный адрес памяти,  имеется  свободная  строка
(с нулевым битом достоверности), заполнена будет она и для  нее  установится
бит достоверности.  Если  свободных  строк  в  наборе  нет,  будет  замещена
строка, к которой дольше всех не было обращений. Выбор строки для  замещения
выполняется на основе анализа бит LRU (Least  Recently  Used)  по  алгоритму
“псевдо-LRU”. Эти биты (по три на  каждый  из  наборов)  модифицируются  при
каждом обращении к строке данного набора (кэш-попадании или замещении).
    Таким образом, выделение  и  замещение  строк  выполнятся  только  кэш-
промахов чтения, при промахах записи заполнение строк не производится.  Если
затребованная область памяти присутствует в строке внутреннего кэша,  то  он
обслужит  этот  запрос.  Управлять  кэшированием  можно  только   на   этапе
заполнения строк; кроме того,  существует  возможность  их  аннулирования  –
объявления недостоверными и очистка всей кэш-памяти.
    Очистка  внутренней  кэш-памяти  при  сквозной  записи  (обнуление  бит
достоверности всех строк) осуществляется внешним  сигналом  FLUSH#  за  один
такт системной шины (и, конечно же, по сигналу RESET). Кроме  того,  имеются
инструкции аннулирования INVD и WBINVD. Инструкция  INVD  аннулирует  строки
внутреннего  кэша  без   выгрузки   модифицированных   строк,   поэтому   ее
неосторожное использование при включенной  политике  обратной  записи  может
привести к нарушению целостности данных в иерархической  памяти.  Инструкция
WBINVD предварительно выгружает модифицированные строки  в  основную  память
(при сквозной записи ее действие совпадает  с  INVD).  При  обратной  записи
очистка  кэша  подразумевает  и  выгрузку  всех  модифицированных  строк   в
основную память. Для этого, естественно, может потребоваться и  значительное
число тактов  системной  шины,  необходимых  для  проведения  всех  операций
записи.
    Аннулирование строк выполняется внешними схемами  –  оно  необходимо  в
системах, у которых в оперативную память запись может производить не  только
один процессор, а и другие контроллеры шины  –  процессор  или  периферийные
контроллеры. В этом случае требуются специальные  средства  для  поддержания
согласованности данных во всех ступенях памяти –  в  первичной  и  вторичной
кэш-памяти   и   динамического   ОЗУ.   Если   внешний   (по   отношению   к
рассматриваемому  процессору)  контроллер   выполняет   запись   в   память,
процессору должен быть  подан  сигнал  AHOLD.  По  этому  сигналу  процессор
немедленно отдает  управление  шиной  адреса  A[31:4],  на  которой  внешним
контроллером устанавливается адрес  памяти,  сопровождаемый  стробом  EADS#.
Если  адресованная  память  присутствует   в   первичном   кэше,   процессор
аннулирует  строку  –  сбрасывает  бит  достоверности   этой   строки   (она
освобождается). Аннулирование строки процессор выполняет в любом  состоянии.

    Управление заполнением кэша возможно и на аппаратном и  на  программном
уровнях. Процессор позволяет кэшировать  любую  область  физической  памяти.
Внешние схемы могут запрещать  процессору  кэшировать  определенные  области
памяти установкой высокого уровня сигнала KEN# во  время  циклов  доступа  к
этим областям памяти. Этот сигнал управляет только  возможностью  заполнения
строк кэша  из  адресованной  области  памяти.  Программно  можно  управлять
кэшируемостью каждой страницы памяти – запрещать  единичным  значением  бита
PCD (Page Cache Disable) в таблице или каталоге страниц. Для  процессоров  с
WB-кэшем бит PWT (Page Write  Through)  позволяет  постранично  управлять  и
алгоритмом записи. Общее программное управление кэшированием  осуществляется
посредством бит управляющего регистра CR0:CD (Cache Disable) и NW (No  Write
Through). Возможны следующие сочетания бит регистра:
     . CD=1, NW=1 – если после установки такого значения выполнить  очистку
       кэша, кэш будет полностью отключен. Если же перед  установкой  этого
       сочетания бит кэша был заполнен, а  очистка  не  производилась,  кэш
       превращается в “замороженную” область статической памяти;
     .  CD=1,  CW=0  –  заполнение  кэша  запрещено,  но  сквозная   запись
       разрешена. Эффект аналогичен  временному  переводу  сигнала  KEN#  в
       высокое (пассивное) состояние. Этот режим может  использоваться  для
       временного отключения кэша, после которого  возможно  его  включение
       без очистки;
     . CD=0, NW=1 – запрещенная комбинация (вызывает отказ общей защиты);
     . CD=0, NW=0 – нормальный режим работы со сквозной записью.
    Для полного запрета кэша необходимо установить CD=1 и NW=1, после  чего
выполнить очистку (Flush). Без  очистки  кэш  будет  обслуживать  запросы  в
случае попаданий.
    Процессоры 486 и старше имеют выходные сигналы PCD и  PWT,  управляющие
работой вторичного (внешнего) кэша (они же управляют и внутренним кэшем).  В
циклах обращения к памяти, когда страничные преобразования  не  используются
(например, при обращении к таблице каталогов страниц),  источником  сигналов
являются биты PCD и PWT регистра CR3, при обращении  к  каталогу  страниц  –
биты PCD и PWT  из  дескриптора  соответствующего  вхождения  каталога,  при
обращении к самим данным – биты PCD и PWT  из  дескриптора  страницы.  Кроме
того, оба этих сигнала могут  принудительно  устанавливаться  общими  битами
управления кэшированием CD и NW регистра CRO.
    Режим обратной  записи  может  разрешаться  только  аппаратно  сигналом
WB/WT#, вырабатываемым внешними схемами.
    В пространстве памяти  РС  имеются  области,  для  которых  кэширование
принципиально  недопустимо  (например,  разделяемая  память  адаптеров)  или
непригодна политика обратной записи. Кроме того, кэширование иногда  полезно
отключать  при  выполнении   однократно   исполняемых   участков   программы
(например, инициализации) с тем,  чтобы из кэша не вытиснялись  более  часто
используемые фрагменты. Напомним,  что  запретить  можно  только  заполнение
строк, а обращение к памяти,  уже  представленной  действительными  строками
кэша, все равно будет обслуживаться из  кэша.  Для  полного  запрета  работы
кэша строки должны быть аннулированы.
    Программно   при   включенном   режиме    страничного    преобразования
кэшированием управляют биты атрибутов страниц (на уровне таблицы  страниц  и
их  каталога),  биты  PCD  и  PWT  регистра  CR3,  и,   наконец,   глобально
кэшированием управляют биты CD и NW регистра CR0.
    Аппаратно (сигналом KEN#) внешние схемы  могут  управлять  кэшированием
(разрешать заполнение строк) для  каждого  конкретного  адреса  обращения  к
физической памяти.


2.2. Процессор 80386
     Микропроцессор 80386 имеет два режима работы: режим реальных  адресов,
называемый реальным режимом, и защищенный режим. При подаче  сигнала  сброса
или при включении  питания  устанавливается  реальный  режим,  причем  80386
работает как очень быстрый  8086,   но,   по  желанию  программиста,  с  32-
разрядным расширением. В реальном режиме МП 80386  имеет  такую  же  базовую
архитектуру,  что  и  МП  8086,   но  обеспечивает  доступ  к   32-разрядным
регистрам.  Механизм адресации,  размеры памяти и  обработка  прерываний  МП
8086 полностью  совпадают  с  аналогичными функциями  МП  80386  в  реальном
режиме.           Единственным способом выхода из реального режима  является
явное переключение  в защищенный режим.  В защищенный  режим  микропроцессор
80386 входит при установке бита включения защиты (РЕ)  в   нулевом  регистре
управления (CR) с помощью команды пересылки (MOV to CR).  Для  совместимости
с МП 80286 с целью установки  бита РЕ может быть также использована  команда
загрузки слова состояния машины LMSW. Процессор повторно входит  в  реальный
режим в том случае,  если  программа командой пересылки сбрасывает  бит   РЕ
регистра CR.
        Полные  возможности  МП  80386  раскрываются  в  защищенном  режиме.
Программы могут исполнять переключение между  процессами  с  целью  входа  в
задачи,  предназначенные для режима виртуального     МП 8086.  Каждая  такая
задача проявляет себя  в  семантике  МП 8086   (т.е.   в   отношениях  между
символами и приписываемыми им  значениями  независимо  от  интерпретирующего
их  оборудования).    Это  позволяет  выполнять   на  МП  80386  программное
обеспечение для  микропроцессора  8086  -  прикладную  программу  или  целую
операционную систему.  В  то  же  время  задачи  для  виртуального  МП  8086
изолированы и защищены как друг от друга,  так  и  от  главной  операционной
системы МП 80386.

2.3. Процессор 80486
    В  1989  г.  фирма  Intel  выпустила  микропроцессор  Intel-80486.  Все
процессоры семейства 486 имеют  32-разрядную  архитектуру,  внутреннюю  кэш-
память 8 КВ со сквозной записью  (у   DX4  -16  КВ).   Модели  SX  не  имеют
встроенного  сопроцессора.   Модели  DX2  реализуют   механизм   внутреннего
удвоения  частоты  (например, процессор  486DX2-66  устанавливается  на  33-
мегагерцовую  системную  плату),   что  позволяет   поднять   быстродействие
практически в  два раза,  так как эффективность кэширования внутренней  кэш-
памяти составляет почти 90  процентов.  Процессоры семейства DX4  -  486DX4-
75 и 486DX4-100 предназначены  для  установки  на  25-ти  и  33-мегагерцовые
платы.  По производительности они занимают  нишу  между  DX2-66  и  Pentium-
60/66,    причем   быстродействие   компьютеров   на   486DX4-100   вплотную
приближается к  показателям  Pentium 60.  Напряжение питания составляет  3,3
вольта,  то есть  их  нельзя  устанавливать  на  обычные   системные  платы.
Процессор   486DX4-75  предназначен,  прежде  всего,   для  использования  к
компьютерам типа Notebook, а 486DX4-100 - в настольных системах.

2.4. Процессор Pentium
    В 1993 г. Intel анонсировала  о  новом  детище  –  процессоре  Pentium.
Процессор Pentium  является одним из самых мощных  в  настоящее  время.   Он
относится  к процессорам с полным набором команд, хотя его ядро имеет  риск-
архитектуру.   Это  64-разрядный   суперскалярный   процессор    (то    есть
выполняет более одной команды за цикл),  имеет 16 КВ  внутренней  кэш-памяти
-  по  8   КВ   отдельно  для  данных  и  команд,   встроенный  сопроцессор.
Несколько слов о процессорах семейства OverDrive. В основном это  процессоры
с внутренним удвоением частоты, предназначенные для замены  процессоров  SX.
Что  касается  широко  разрекламированного  в    свое    время    процессора
OverDrive на основе Pentium  (так  называемый  P24T  или  Pentium  SX),   то
сроки  его выпуска неоднократно срывались. Сейчас начало выпуска  перенесено
на последнюю  четверть  текущего  года.  Хотя  на  рынке представлено  очень
много системных плат,  предназначенных для установки кроме  486  процессоров
и процессора Р24Т,  использовать его  на  этих платах, скорее  всего,  будет
нельзя,  так как никакого тестирования плат с этим процессором  изготовители
не проводят ввиду его отсутствия, а ориентируются  при  изготовлении  только
на   опубликованную   фирмой   Intel    спецификацию.  Представители   фирмы
Intel    заявили    недавно,    что   существуют   серьезные   сомнения    в
работоспособности  большинства  этих    плат   в   связи   с   недостаточной
проработкой вопросов, связанных  с  перегревом  процессоров.  Поскольку  при
работе  с  существующим  программным  обеспечением  процессоры  Pentium   не
достигают   максимального   быстродействия,  фирма    Intel    для    оценки
производительности своих процессоров предложила специальный индекс  -  iCOMP
(Intel COmparative Microprocessor  Performance),   который,  по  ее  мнению,
более точно отражает возрастание производительности при переходе  к   новому
поколению процессоров (некоторые из выпущенных уже  моделей  компьютеров  на
основе Pentium при выполнении  определенных  программ   демонстрируют   даже
меньшее быстродействие, чем компьютеры на  основе  486DX2-66,   это  связано
как    с   недостатками   конкретных   системных   плат,   так   и   с    не
оптимизированностью программных кодов).

|Модель                 |Индекс iCOMP           |
|486SX2-50              |180                    |
|486DX2-50              |231                    |
|486DX2-66              |297                    |
|486DX4-75              |319                    |
|486DX4-100             |435                    |
|Pentium 60             |510                    |
|Pentium 66             |567                    |
|Pentium 90             |735                    |
|Pentium 100            |815                    |


    Более того, именно величина производительности с использованием индекса
iCOMP используется фирмой  Intel  в  новой  системе  маркировки  процессоров
Pentium. например, 735\90 и 815\100 для  тактовой  частоты  90  и  100  МГц.
Кроме  фирмы  Intel,   на  рынке   широко    представлены    другие   фирмы,
выпускающие  клоны  семейств  486  и  Pentium.  Фирма  AMD  (Advanced  Micro
Devices) производит 486DX-40, 486DX2-50, 486DX2-66. Процессоры  486DX2-80  и
486DX4-120 обеспечивают полную совместимость со всеми  ориентированными   на
платформу  Intel программными  продуктами  и  такую  же  производительность,
как и аналогичные изделия фирмы Intel  (при  одинаковой  тактовой  частоте).
Кроме того,  они предлагаются по более низким ценам, а процессор на 40  МГц,
отсутствующий в  производственной  программе Intel, конкурирует с  486DX-33,
превосходя его по производительности на 20 процентов при меньшей  стоимости.
Фирма Cyrix разработала процессоры М6 и  М7   (аналоги 486SX2  и  486 0DX 2)
на тактовые частоты 33 м 40 МГц, а также с удвоением частоты DX2-50  и  DX2-
66. Они имеют более быстродействующую внутреннюю кэш-память 8 КВ с  обратной
записью и более  быстрый  встроенный  сопроцессор.  По  некоторым  операциям
производительность выше, чем у  процессоров  фирмы  Intel,  по  некоторым  -
несколько ниже. Соответственно,  существенно  различаются  и  результаты  на
разных тестирующих программах.  Цены на 486   процессоры  Cyrix  значительно
ниже, чем на Intel и AMD.  По  оценкам  Intel,   эффективность  Pentium  при
работе с таким  программным  обеспечением  составляет  около  70  процентов,
Cyrix же обещает 90, так как архитектура М1 более "рисковая":  он  имеет  32
регистра вместо 8 и систему их динамической  переадресации  для  обеспечения
совместимости.  В  то  же  время  М1  по     операциям  с  плавающей  точкой
уступает процессору фирмы Intel. Собственные варианты процессоров  семейства
486 - 486SX-33,486SX-40,  486SX-80,   486DX-40  предлагает  фирма  UMC.  Они
полностью совместимы с процессорами Intel. Из-за патентных  ограничений  они
не поставляются  в  США.  Первый  клон  процессора  Pentium  -  изделие  под
названием  586  -  выпустила  фирма  NexGen.  Этот  64-разрядный   процессор
рассчитан на работу на тактовых частотах 60 и 66 МГц,  построен  на   основе
запатентованной  суперскалярной  архитектуры  RISC86 и  полностью  совместим
с  семейством  80х86.   Напряжение  питания  -  3,3  вольта.  Стоимость  его
существенно ниже, чем у Pentium.  Для  самых  простых  систем  фирмой  Texas
Instruments  выпускала дешевые, но эффективные процессоры  486DLC,  которые,
занимая промежуточное положение  между  80386   и   80486   семейством  (они
выполнены в конструктиве 386 процессора, обеспечивают производительность  на
уровне  80486  процессора  при  цене  80386.  Новая   версия   -  486SXL   с
увеличенной  до  8  КВ  внутренней  кэш-памятью  еще  ближе  приближается  к
характеристикам 486 семейства. Все большую популярность  завоевывали   риск-
процессоры  семейства Power  PC  601  (IBM,   Apple,   Motorola) ,   которые
имеют  отличную  от  Intel  архитектуру  (в  основе  -   архитектура   Power
фирмы IBM   с   внутренней   кэш-памятью  32  КВ).   Полагают,   что  именно
конкуренция  между  Power  PC  и   Pentium   является   самым   существенным
фактором для развития рынка процессоров и персональных  компьютеров.   Power
PC 601 примерно в два раза дешевле, чем  Pentium,  потребляет  в   два  раза
меньшую мощность и превосходит Pentium по  производительности,  особенно  по
операциям с плавающей точкой.  Сначала на процессоре  601  была  реализована
только система 6000 фирмы IBM и PowerMac фирмы  Apple.  В   настоящее  время
большинство производителей компьютеров имеют свои варианты  систем  на  базе
Power PC,  однако,  решение об их производстве  будет  определяться,  прежде
всего, складывающейся конъюнктурой.
     Объем и сложность данных,  обрабатываемых  современными  компьютерами,
стремительно увеличивается. Новые средства связи, видео - и  аудиоприложения
выдвигают повышенные требования к производительности микропроцессора. ММХ  -
технология  разработана  для  ускорения   мультимедиа   и   коммуникационных
программ. Она включает в себя новые команды и  типы  данных,  что  позволяет
создавать приложения нового  уровня.  Технология  основана  на  параллельной
обработке данных. При этом сохраняется полная совместимость с  существующими
операционными системами и программным обеспечением. ММХ – технология  –  это
самое значительное усовершенствование со времени создания процессора  Intel-
80386, т.е. создания 32 – разрядной архитектуры.
    В процессоры семейства  Р5  (Pentium  и  Pentium  MMX)  были  добавлены
следующие команды:
     . CMPXCHG8B  (compare and exchange 8 bytes)
     . CPUID  (CPU identification)
     . RDTSC  (read time-stamp counter)
     . RDMSR  ( read model-specific register)
     . WRMSR  (write model-specific register)
     . RSM  (resume from SSM)
    Форма команды MOV, которая обращалась к регистрам тестирования, удалена
из процессоров Р5 и всех последующих. Функция регистров тестирования  теперь
выполняют  регистры  MSR  (Model  Specific  Register).  Задействован   новый
регистр управления CR4. В регистр EFLAGS добавлены следующие флажки:
 . VIF (virtual interrupt flag)
 . VIP (virtual interrupt pending)
 . ID (identification flag)



Рисунок 1. Формат  регистра EFLAGS в процессорах Р5



                                                Табл1. Процессоры 70-х годов
|           |4004         |8008     |8080        |8086            |8088      |
|Объявлено о|15/11/71     |1/4/72   |1/4/74      |8/6/78          |1/6/79    |
|выпуске    |             |         |            |                |          |
|Тактовая   |108 КГц      |108 КГц  |2 МГц       |5 МГц, 8 МГц, 10|5 МГц, 8  |
|частота    |             |         |            |МГц             |МГц       |
|Разрядность|4 бит        |8 бит    |8 бит       |16 бит          |8 бит     |
|шины       |             |         |            |                |          |
|Количество |2 300        |3 500    |6 000       |29 000          |29 000    |
|транзисторо|(10 микрон)  |         |(6 микрон)  |(3 микрона)     |(3        |
|в          |             |         |            |                |микрона)  |
|Адресуемая |640 байт     |16 Кбайт |64 Кбайт    |1 Мб            |1 Мб      |
|память     |             |         |            |                |          |
|Виртуальная|--           |--       |--          |--              |--        |
|память     |             |         |            |                |          |
|Краткая    |Первая       |Обработка|10-кратный  |10-кратный рост |Аналог    |
|характерист|микросхема,  |цифровых |рост        |производительнос|процессора|
|ика        |выполняющая  |и        |производител|ти по сравнению |8086, но с|
|           |арифметически|текстовых|ьности по   |с процессором   |8-разрядно|
|           |е вычисления |данных   |сравнению с |8080            |й внешней |
|           |             |         |процессором |                |шиной     |
|           |             |         |8008        |                |          |

                                               Табл.2. Процессоры 80-х годов
|             |80286       |Микропроцессор |Микропроцессо|Центральный процессор|
|             |            |Intel386TM DX  |р            |                     |
|             |            |               |Intel386TM SX|Intel486TM DX        |
|Объявлено о  |1/2/82      |17/10/85       |16/6/88      |10/4/89              |
|выпуске      |            |               |             |                     |
|Тактовая     |6 МГц, 8    |16 МГц, 20 МГц,|16 МГц, 20   |25 МГц, 33 МГц, 50   |
|частота      |МГц, 10 МГц,|25 МГц, 33 МГц |МГц, 25 МГц, |МГц                  |
|             |12.5 МГц    |               |33 МГц       |                     |
|Разрядность  |16 бит      |32 бит         |16 бит       |32 бит               |
|шины         |            |               |             |                     |
|Количество   |134 000     |275 000        |275 000      |1,2 миллиона         |
|транзисторов |(1,5 микрон)|(1 микрон)     |(1 микрон)   |(1 микрон)           |
|             |            |               |             |(0,8 микрона на      |
|             |            |               |             |частоте 50 МГц)      |
|Адресуемая   |16 мегабайт |4 гигабайт     |4 гигабайт   |4 гигабайт           |
|память       |            |               |             |                     |
|Виртуальная  |1 гигабайт  |64 терабайт    |64 терабайт  |64 терабайт          |
|память       |            |               |             |                     |
|Краткая      |Рост        |Первая         |Недорогое    |Встроенная кэш-память|
|характеристик|производител|микросхема     |устройство с |1-го уровня          |
|а            |ьности в 3-6|архитектуры    |возможностью |                     |
|             |раз по      |X86, способная |32-разрядной |                     |
|             |сравнению с |обрабатывать   |обработки    |                     |
|             |процессором |32-разрядные   |данных       |                     |
|             |8086        |наборы данных  |благодаря    |                     |
|             |            |               |16-битной    |                     |
|             |            |               |адресной шине|                     |

                                               Табл.3. Процессоры 90-х годов
|              |Микропроцессор |Процессор Pentium®  |Процессор   |Процессор    |
|              |Intel486TM SX  |                    |Pentium® Pro|Pentium® II  |
|Объявлено о   |22/4/91        |22/3/93             |01/11/95    |07/5/97      |
|выпуске       |               |                    |            |             |
|Тактовая      |16 МГц, 20 МГц,|60 МГц, 66 МГц,     |150 МГц, 166|200 МГц, 233 |
|частота       |               |                    |МГц, 180    |МГц, 266 МГц,|
|              |25 МГц, 33 МГц |                    |МГц, 200 МГц|300 МГц      |
|              |               |75 МГц, 90 МГц,     |            |             |
|              |               |100 МГц, 120 МГц,   |            |             |
|              |               |133 МГц, 150 МГц,   |            |             |
|              |               |166 МГц             |            |             |
|Разрядность   |32 бит         |32 бит              |64 бит      |64 бит       |
|шины          |               |                    |            |             |
|Количество    |1,185 миллиона |3,1 миллиона        |5,5         |7,5 миллионов|
|транзисторов  |               |(0,8 микрон)        |миллионов   |             |
|              |(1 микрон)     |                    |(0,6 микрон)|             |
|Адресуемая    |4 гигабайт     |4 гигабайт          |64 гигабайт |64 гигабайт  |
|память        |               |                    |            |             |
|Виртуальная   |64 терабайт    |64 терабайт         |64 терабайт |64 терабайт  |
|память        |               |                    |            |             |
|Краткая       |Конструктивный |Пятикратный рост    |Высокопроизв|Двойная      |
|характеристика|аналог         |производительности  |одительный  |независимая  |
|              |Intel486TM DX, |по сравнению с      |процессор с |шина,        |
|              |но без         |процессором         |применением |динамическое |
|              |математического|Intel486TM DX 33-МГц|архитектуры |исполнение,  |
|              |сопроцессора   |благодаря применению|динамическог|технология   |
|              |               |суперскалярной      |о исполнения|Intel MMXTM  |
|              |               |архитектуры         |            |             |



    Список литературы

1. Гук. М.  Процессоры  intel  от  8086  до  Pentium;  С-Питербург   -“Питер
   Паблишинг” – 1997.
2. Е.М. Бердышев; Технология MMX; Москва – «Диалог – МИФИ» - 1998.
3. В.Э. Фигурнов IBM PC для пользователя;  5 издание; Москва - «Финансы и
4. Еженедельник Computer World Россия;N 46(111);  9 декабря 1997
5. Еженедельник Computer World Россия; N 47(112); 16 декабря 1997
6. статистика» – 1994.
7. Обзор процессоров и шин ПВМ; Москва – 1995.
8.  Еженедельник Компьютерра; N 23 (251); 16 июня 1998



* Масштабирование индекса возможно только в 32-битном режиме адресации

-----------------------
0000          СМЕЩЕНИЕ



    СЕГМЕНТ            0000

Канал 1


Канал 4



Диспетчер


Теги действительности

. . .

. . .

. . .

. . .

. . .

Теги

Строки

127


0

16 байт

21 бит

Теги

Строки

127


0

16 байт

21 бит

127


0

4 бита

3 бита

4 Ru

Продолжение Табл.2.

Стр.





смотреть на рефераты похожие на "Процессоры. История развития. Структура. Архитектура"