ЭЛЕКТРОННАЯ БИБЛИОТЕКА КОАПП
Сборники Художественной, Технической, Справочной, Английской, Нормативной, Исторической, и др. литературы.



 

Часть 3

            МИКРОПРОЦЕССОР 80386. Техническое описание
            
            
                       Москва 1987 год
.                     
                                    -  2 -                      
                     
                     
                     
                     МИКРОПРОЦЕССОР 80386
     
     I.  Основные цели разработки - пропорциональное улучшение вс
ех
технических характеристик при сохранении программной  совместимос
ти
в объектных кодах с МП 8086/186/286.
     
                   Основные преимущества:
     
     1. возможность   параллельной   работы  нескольких   програм
м,
работающих под управлением  любой  комбинации  операционных  сист
ем
PC-DOS, MS-DOS, UNIX и XENIX;
     2. совместимость  снизу вверх  по  архитектуре с МП 8086, 18
6,
        286.
     
     
                   Основные области примеменения:
     
     1. АРМ;
     2. системы автоматизации конторских работ;
     3. САПР;
     4. робототехника;
     5. оборудование со встроенными МП.
     
                 Основные технические характеристики.
     
     Разрядность  обрабатываемых  данных  -             8;  16; 3
2.
                                                             32 
     Максимальный объем прямоадресуемой памяти -  4 Гбайт  (2  ).
                                                             64 
     Максимальный объем виртуальной памяти -      64 Тбайт (2  ).
     
     Производительность         -                 3...4  млн.кома
нд
                                                  в сек. (средняя
                                                  при 16 МГц.
     
     Количество уровней конвейера -               6.
     
     Тактовая частота -                           12,5 и 16 МГц.
     
     Максимальный размер сегмента -               4 Гбайт.
     
     Размер страницы  -                           4 Кбайт.
     
     Количество уровней привилегированности -     4.
     
     Количество выводов корпуса -                 132.
     
     Степень интеграции-                          275 тыс.транзис
т. 
     Технология -                                 CHMOS III(1,5мк
н). 
     Размер кристалла -                           9,75*10,4 мм.
     
                   Архитектура.
     
     МП состоит из 3 основных частей:
                   устройства обработки;
                   устройства управления ЗУ;
                   интерфейсного блока.
                                     -  4 -
           
           
     
     Устройство  обработки  состоит  из  исполнительного устройст
ва
                            (операционной  части)и   блока   кома
нд
                            (управляющей части).  Содержит  8  32
-х
                            разрядных РОН, 64-х битовый циклическ
ий
                            сдвигатель.  Умножение    и     делен
ие
                            осуществляется     на    1    бит    
за
                            цикл. Алгоритм  умножения   такой,  ч
то
                            процесс  прекращается,  когда  наибол
ее
                            значащий бит умножается  на  все  нул
и.
                            Типичное время умножения 32-х разрядн
ых
                            чисел около 1 мкс.
     
     Устройство управления ЗУ  состоит из сегментного и странично
го 
                            блоков.   Сегментный   блок   позволя
ет 
                            работать   с  логическими  адресами  
со 
                            всеми        вытекающими         отсю
да 
                            преимуществами.  Страничная организац
ия 
                            используется    внутри    сегмента   
 и 
                            управляет  физическими адресами. Кажд
ая 
                            задача может иметь до 16381 сегмента 
до 
                            4 Гбайт каждый, т.е. виртуальная памя
ть 
                            может быть размером 64 Тбайт. 
     
     Интерфейсный   блок  обеспечивает  взаимодействие  с  внешни
ми
                            устройствами,  включая   автоматическ
ое
                            управление    разрядностью    шины,  
 и
                            формирование сигналов активности байт
ов.
     
     МП может функционировать в двух основных режимах:
     
     режим  реальной  адресации-  характеризуется   тем,   что   
МП
                            работает   как  очень  быстрый  8086 
 с
                            32-битным расширением;
     
     режим  защищенной   виртуальной   адресации-   реализует   в
се
                            достоинства   МП  (режим  параллельно
го
                            выполнения нескольких задач нескольки
ми 
                            8086 - по одному на задачу).
     
                    Обзор регистрового файла.
     
     МП имеет 32 регистра, разбитые на следующие группы:
     
                 регистры общего назначения; 
                 сегментные регистры;
                 указатель команд и регистр признаков;
                 управляющие регистры;
                 регистры системных адресов;
                 отладочные регистры;
                 тестовые регистры.
.
                                     -  5 -
           
           
                    Регистры общего назначения.
     31                    16 15         8 7         0
     _________________________________________________
     |                       |            |           |
     |                       |AH        A | X      AL | EAX
     |_______________________|____________|___________|
     |                       |            |           |
     |                       |BH        B | X      BL | EBX
     |_______________________|____________|___________|
     |                       |            |           |
     |                       |CH        C | X      CL | ECX
     |_______________________|____________|___________|
     |                       |            |           |
     |                       |DH        D | X      DL | EDX
     |_______________________|____________|___________|
     |                       |                        |
     |                       |           SI           | ESI
     |_______________________|________________________|
     |                       |                        |
     |                       |           DI           | EDI
     |_______________________|________________________|
     |                       |                        |
     |                       |           BP           | EBP
     |_______________________|________________________|
     |                       |                        |
     |                       |           SP           | ESP
     |_______________________|________________________|
                                Сегментные регистры
                            15                       0
                             _________________________
                            |                         |
                            |            CS           |  Команды
                            |_________________________|
                            |                         |  
                            |            SS           |  Стек
                            |_________________________|  _
                            |                         |   |
                            |            DS           |   |
                            |_________________________|   |
                            |                         |   |
                            |            ES           |   |
                            |_________________________|   > Данны
                            |                         |   |
                            |            FS           |   |
                            |_________________________|   |
                            |                         |   |
                            |            GS           |   |
                            |_________________________|  _|
             Указатель команд и регистр признаков.
     31                   16 15                       0
     _________________________________________________
     |                      |                         |
     |                      |   Указатель             |   EIP
     |                      |   команд                |
     |______________________|_________________________|
     |                      |                         |
     |                      |   Признаки              |   EF реги
стр
     |______________________|_________________________|   признак
ов
     Рис.2-2. Регистры общего назначения, сегментные   
                      и указатель команд
.
                                     -  6 -
                
     Содержимое РОН, указателя команд и регистра признаков  завис
ит
от   выполняемой   задачи   и   автоматически   перегружается   п
ри
переключении задач.
     Архитектура  МП  позволяет  непосредственно  обращаться  к  
 6
сегментам  (размером  до  4  Гбайт  каждый)  при помощи специальн
ых
селекторов,    которые    перезагружаются    программно. Содержим
ое
селекторов  также зависит от задачи и автоматически перезагружает
ся
при переключении задач.
     Остальные  регистры  МП  используются,  главным  образом,  д
ля
упрощения проектирования и отладки операционной системы.
     
                 Описание регистров МП.
     
     РОН  -  используются  для  хранения операндов и адресов. Мог
ут
работать с операндами, имеющими длину 1, 8, 16, 32 и 64 бита или 
 с
битовыми  полями  длиной от  1 до 32 бит. Обозначения регистров п
ри
использовании соответствующей длины приведены на рис.2.2.
     
     Указатель   команд   -   хранит   смещение,   которое   всег
да
складывается   со   значением   кодового  сегментного  регистра  
 и
определяет   адрес   следующей   команды.   Младшие   16   разряд
ов
соответствуют IP предыдущих МП.
     
     Регистр  признаков  -  отражает состояние МП при использован
ии
только 16- ти младших разрядов; совместим с предыдущими моделями 
МП.
     31                                        3 2 1 0
     _________________________________________________
     |            | | | | |   | | | | | | | | | | | | | 
     |Зарезерви-  |V|R| |N|IOP|O|D|I|T|S|Z| |A| |P| |C|
     |рованы      |M|F|O|T| L |F|F|F|F|F|F|O|F|O|F|1|F|
     |____________|_|_|_|_|___|_|_|_|_|_|_|_|_|_|_|_|_|
                   | |   |  |  | | | | | |   |   |   |
     Виртуальный   | |   |  |  | | | | | |   |   |   | Перенос
     режим         | |   |  |  | | | | | |   |   |   |__________
     ______________| |   |  |  | | | | | |   |   |
                     |   |  |  | | | | | |   |   |Четность
     Проверка        |   |  |  | | | | | |   |   |____________
     ________________|   |  |  | | | | | |   |
                         |  |  | | | | | |   |Вспомогательный
     Вложенная           |  |  | | | | | |   |перенос
     задача              |  |  | | | | | |   |_______________
     ____________________|  |  | | | | | |
                            |  | | | | | |Признак нуля
     Уровень привилег.В-В   |  | | | | | |_________________
     _______________________|  | | | | |
                               | | | | |  Знак
     Переполнение              | | | | |__________________
     __________________________| | | |
                                 | | |Трассировка
     Признак направления         | | |____________________
     ____________________________| |
                                   |
     Разрешение прерывания         |
     ______________________________|
                    Рис.2-3. Регистр признаков
.
                                     -  7 -
           
           
                      Назначение признаков.
     
     VM  -  обеспечивает  режим  виртуального  8086  внутри  режи
ма
виртуальной  адресации.  При  VM  =  1  МП будет переключен в реж
им
виртуального 8086,  при  этом  управление  перезагрузкой  сегмент
ов
будет   осуществляться   подобно   8086,   но   с   исключением  
13
недействительных привилегированных команд. VM может быть установл
ен
в РВА  командой  IRET  (если  уровень  приоритета  =  0)  и  зада
ча
переключается  на  более  низший уровень. Команда POPF не влияет 
на
VM. Команда PUSHF всегда сбрасывает VM в 0, если она выполняется 
 в
режиме  виртуального  8086.  Содержимое  регистра  признаков  буд
ет
копироваться  при  прерываниях  или  сохраняться  при  переключен
ии
задачи,  если  прерывание  будет  выполняться в режиме виртуально
го
8086.     
     RF - признак используется совместно с  отладочными  регистра
ми 
контрольных точек (прерываний) или пошагового режима. С его помощ
ью 
проверяется ход выполнения  команд  в  отладочном  режиме  (проце
сс 
отладки).  Если  установлен  RF (=1), то это позволяет игнорирова
ть 
ошибки,  возникающие  при  отладке   до   следующей   команды.   
RF 
автоматически  сбрасывается  в  0  при  успешном выполнении коман
ды 
(ошибки не обнаружены), за исключением команд IRET и POPF, а  так
же 
JMP, CALL и INT при переключении задач.Эти команды устанавливают 
RF 
в состояние  определяемое  состоянием  памяти.  Например,  в  кон
це 
выполнения подпрограммы обслуживания контрольной точки команда IR
ET 
может установить RF в состояние, соответствующее значению  регист
ра 
признаков, хранимого в стеке без повторной установки RF в 1. 
     
     NT - признак гнездования задач используется только в РВА. NT
=1
указывает,  что  текущая  задача  является вложенной по отношению
 к 
другой задаче. Этот бит устанавливается и сбрасывается  при  вызо
ве 
других  задач.  NT проверяется командой IRET для определения внут
ри 
заданного или внешнего  по  отношению  к  данной  задаче  возврат
а. 
Команды  POPF  и  IRET будут устанавливать NT в соответствии с те
м, 
что хранится в стеке для любого уровня привилегированности. 
     
     IOPL  -  признак  используется  только  в  РВА. IOPL указыва
ет 
максимальную   величину    текущего     приоритета,  обеспечивающ
ую 
выполнение  команд В-В без реакции на 13 ошибку. Этот признак так
же 
обеспечивает выбор IF, когда новое значение выталкивается из  сте
ка 
в  регистр  признаков. POPF  и IRET могут изменять IOPL поле, ког
да 
IOPL = 0 (CPL=0). При  переключении  задач  IOPL  может  изменять
ся 
всегда при переписи TSS. 
     
     OF - признак переполнения.
     
     DF - указывает, как изменяются значения регистров  ESI  и  E
DI
при выполнении операций со строками. 0 - инкремент, 1 - декремент
     
     IF - разрешает обработку внешних прерываний (IF = 1).
                              _______
     
     TF  -  при  TF  =  1  генерируется прерывание после выполнен
ия
каждой команды. Если TF = 0 прерывание возможно только при работе
 с
отладочными регистрами DR3...DR0.
     
     SF  - отражает состояние наиболее значащего разряда при рабо
те
с соответствующим форматом данных.
     
     ZF - признак равенства результата операции нулю.
                                     -  8 -
           
           
     
     AF -  устанавливается  при  переносе  или  заеме  в  3  разр
яд
независимо от формата операнда.
     
     PF  - PF = 1, если количество единиц в младшем байте четно. 
Не 
зависит от формата команд. 
     
     CF  -  перенос  из  старшего   разряда. Соответствует  форма
ту
операнда.
     
     МП содержит 6  16-ти  битовых сегментных  регистров,  хранящ
их 
значение   селектора   и  определяющих  значения  текущих  адресн
ых 
сегментов. В РВА каждый сегмент может  изменяться  в  диапазоне  
от 
одного   байта  до  максимального  значения  физического  адресно
го 
пространства 4 Гбайта. В РРА размеры сегмента  ограничены  размер
ом 
64 Кбайт. 
           
 Сегментные                     Дескрипторные регистры
 регистры                    (загружаются автоматически)
                  База физического  Размеры     Другие атрибуты
 15      0           адреса         сегмента    дескриптора
 _________        _______________________________________________
  
 |        |       |                |           | | | | | | | | | 
 |Селектор| СS -  |                |           | | | | | | | |-| 
 |________|       |________________|___________|_|_|_|_|_|_|_|_|_
 |        |       |                |           | | | | | | | | | 
 |Селектор| SS -  |                |           | | | | | | |-| |-
 |________|       |________________|___________|_|_|_|_|_|_|_|_|_
 |        |       |                |           | | | | | | | | | 
 |Селектор| DS -  |                |           | | | | | | |-|-|-
 |________|       |________________|___________|_|_|_|_|_|_|_|_|_
 |        |       |                |           | | | | | | | | | 
 |Селектор| ES -  |                |           | | | | | | |-|-|-
 |________|       |________________|___________|_|_|_|_|_|_|_|_|_
 |        |       |                |           | | | | | | | | | 
 |Селектор| FS -  |                |           | | | | | | |-|-|-
 |________|       |________________|___________|_|_|_|_|_|_|_|_|_
 |        |       |                |           | | | | | | | | | 
 |Селектор| GS -  |                |           | | | | | | |-|-|-
 |________|       |________________|___________|_|_|_|_|_|_|_|_|_
            Рис.2-4. Сегментные регистры и соответствующие
                        дескрипторные регистры 80386
.                
                                     -  9 -
                                     
                
     Дескрипторные   регистры   сегментов   программно  не  видим
ы, 
благодоря этому они удобны для восприятия.  С  другой  стороны  э
ти 
регистры   неразрывно   связаны   с   соответствующими  сегментны
ми 
регистрами.  Каждый  дескрипторный  регистр  хранит  32-х   битов
ый 
базовый  адрес  сегмента,  32-х  битовый  размер  сегмента и друг
ие 
необходимые атрибуты сегмента. 
     Когда значение селектора  загружается  в  сегментный  регист
р,
соответствующий  дескрипторный  регистр  автоматически  загружает
ся
правильной информацией. В РРА  непосредственно используется  толь
ко
адрес базы  (со  сдвигом  на 4 разряда влево), а размеры сегмента
 и
атрибуты постоянны  (фиксированы для  РРА). В  РВА  база, размер 
 и
атрибуты   сегментного  дескриптора  определяется  селектором. 32
-х
битовый адрес базы  сегмента  становится  компонентом  формирован
ия
исполнительного    адреса, 32-х   битовый   размер   сегмента   д
ля
проверки  границ  рабочей   области, а  атрибуты   проверяются   
на
соответствие типу запрашиваемой памяти (типу обращения). 
               Управляющие регистры.
     
     МП содержит  3  управляющих  32-х битовых регистра: CRO, CR2
 и
CR3,  хранящие  состояние  машины  и  не   зависящие   от   текущ
ей
исполняемой  задачи. Доступ  к  регистрам обеспечивается  с помощ
ью
специальных команд.
     
     CRO   -   регистр   управления   машиной   (заменяет   регис
тр
словосостояния машины 80286).
     
 31             24 23           16 15            8 7             
 0
 ________________________________________________________________
 |  | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
 |
 | P|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|E|T|E|M|
P|
 | G| | | | | | | | | | | | | | | | | | | | | | | | | | |T|S|M|P|
E|
 |__|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|
_|
                                  `---------------\/-------------
-'
                                         Словосостояния машины
                                          80286 (MSW)
                                          
                Рис.2-5.CR0 регистр управления машиной
     
     Для  сохранения  совместимости  с 80286 в системе команд 803
86
оставлены инструкции LMSW и SMSW, работающие с младшими 16-ю бита
ми
CRO. Новые ОС 80386 будут использовать команду MOVCRO.
.     
                                     - 10 -
                
                
                     Назначение битов
     
     PG -       при PG = 1 включен режим страничной адресации.
 (PAGING ENABLE)
     
     ET   -   указывает    на     тип     сопроцессора      (ET=1
 -
 (PROCESSOR 80387,  ET = 0 - 80287). Устанавливается в соответств
ии
 EXTENSION    с   уровнем   сигнала   на   входе   ERROR  во  вре
мя
 TYPE)        начальной         установки.  Кроме      того,  мож
ет
              устанавливаться   и   сбрасываться   программно.  Д
ля
              обеспечения   совместимости    с    80286    ET    
не
              устанавливается командой LMSW.
    
     TS   -    автоматически   устанавливается   при   переключен
ии 
 (TASK         задач. Если TS=0 и MP=1, то  при  получении  коман
ды 
 SWITCHED)     для    сопроцессора    формируется    прерывание  
 7 
               (отсутствие сопроцессора). Подпрограмма обслуживан
ия 
               прерывания   обычно  сохраняет  содержимое  287/38
7, 
               принадлежащее    предыдущей    задаче,     загружа
ет 
               состояния,    принадлежащие    текущей   задаче,  
 и 
               сбрасывает  TS  бит  в  состояние,  в   котором   
он 
               находился до получения команды для сопроцессора. 
      EM  -    EM=1 тогда, когда  все  команды   для   сопроцесcо
ра
(EMULTE        должны    формировать   прерывание   7   (отсутств
ие
COPROCESSOR)   сопроцессора). EM=0   после   начальной   установк
и.
               Команда WAIT не влияет на состояние EM. 
     MP  -     MP используется совместно с TS. Если MP=1 и TS=1, 
то
(MONITOR       при получении команды WAIT генерируется прерывание
 7.
COPROCESSOR)
     PE -      указывает  (PE=1)  на  режим виртуальной  адресаци
и.
(PROTECTION    При  PE=0 работает в РРА. PE может быть   установл
ен
ENABLE)        командами LMSW и  LCRO. Заметим, что для обеспечен
ия
               совместимости с 80286 PE  не  сбрасывается  команд
ой
               LMSW.
     CR1 -     зарезервирован фирмой Intel для будущих процессоро
в.
     
     CR2 -      регистр   для   хранения   исполнительного   адре
са 
                отсутствующей страницы. Регистр хранит 32-х битов
ый 
                исполнительный     адрес     страницы,      котор
ая 
                отсутствовала  (последний  промах)  в  памяти.  Э
то 
                значение может быть сохранено в стеке подпрограмм
ой 
                обслуживания промаха для дополнительного анализа.
                     
                      
     CR3 -      регистр хранения базового адреса  таблицы  страни
ц. 
                Хранит  физический  адрес  базы определения табли
цы 
                страниц.  Так  как   размеры   страниц  фиксирова
ны  
                (4 Кбайт), то  двенадцать   младших   разрядов   
не 
                действительны. При  переключении  задач  содержим
ое 
                CR3 должно сохраняться в кэш - памяти страниц. 
     
.     
                                     - 11 -
                                     
                                     
 31            24|23           16|15          8|7         0
 ________________|_______________|_____________|___________
 |                                                         |
 |Регистр исполнительного адреса отсутствующей страницы    |  CR2
 |_________________________________________________________|
 |                                 | | | | | | | | | | | | |
 |Регистр базы определения таблицы | | | | | | | | | | | | |
 |страниц                          |0|0|0|0|0|0|0|0|0|0|0|0|  CR3
 |_________________________________|_|_|_|_|_|_|_|_|_|_|_|_|
          Рис.2-6. 2 и 3 регистры управления
                
              Системные регистры адреса
     
     Системные  регистры  поддерживают  РВА  процессоров  286/386
 и
включают:
     GDT - таблица глобальных дескрипторов;
     IDT - таблица дескрипторов прерываний;
     LDT - таблица локальных дескрипторов;
     TSS - сегмент состояния задачи.
     
              Системные регистры адреса
     
 47   32-х битовый исполнительный адрес базы  16 15  Граница   0
 ______________________________________________________________
 |                                              |              |
 |______________________________________________|______________|G
DTR
 |                                              |              |
 |______________________________________________|______________|I
DTR    
    
   Системные                Дескрипторные регистры
   сегментные             (загружаются автоматически)
   регистры
     
                        32-х битовый        Граница      Атрибуты
                        исполнительный                  
                        адрес базы                       
        15         0               
        ___________     _________________________________________
       |           |    |              |                | |    | 
 TR    | Селектор  |    |              |                | |    | 
       |___________|    |______________|________________|_|____|_
       |           |    |              |                | |    | 
 LDTR  | Селектор  |    |              |                | |    | 
       |___________|    |______________|________________|_|____|_
     
     Рис.2-7. Системные адресные и системные сегментные регистры
     
     Регистры GDTR и IDTR являются общими для всех задач системы.
     Регистры LDTR и TR являются специфичными для каждой задачи.
.
                                     - 12 -
           
           
    Отладочные регистры
  31                    0
  ______________________
  |                     |
  |Адрес трассировки  0 | DRO     Отладочные регистры имеют в сво
ем 
  |                     |         составе 6 регистров
  |_____________________|
  |                     |
  |Адрес трассировки  1 | DR1
  |_____________________|
  |                     |
  |Адрес трассировки  2 | DR2
  |_____________________|
  |                     |
  |Адрес трассировки  3 | DR3
  |_____________________|
  |                     |
  |Резерв Intel         | DR4
  |_____________________|
  |                     |
  |Резерв Intel         | DR5
  |_____________________|
  |                     |
  |Состояние трассировки| DR6
  |_____________________|
  |                     |
  |Управление трассиров.| DR7
  |_____________________|
     
    Тестовые регистры
   (для кэш-памяти страниц)
     
  31                    0
  ______________________
  |                     |
  |Управление           |
  |тестированием        | TR6     Тестовые регистры предназначены
  |_____________________|         для для проверки  ассоциативным
  |                     |          ЗУ буфера трансляции адресов М
П.
  |Состояние при        |
  |тестировании         | TR7
  |_____________________|
       Рис.2-8. Отладочные и тестовые регистры
     Существуют  различия  в  доступности  регистров  в   различн
ых
режимах работы МП.
.
                                     - 13 -
           
           
              Таблица 2-1. Использование регистров
  _______________________________________________________________
  |                    |             |              |            
 |
  |    Регистр         |Использование|Использование |Использовани
е|
  |                    |в РРА        |в РВА         |в вирт.8086 
 |
  |                    |_____________|______________|____________
_|
  |                    |      |      |      |       |      |     
 |
  |                    |загр. |разгр.|загр. |разгр. |загр. |разгр
.|
  |____________________|______|______|______|_______|______|_____
_|
  |                    |      |      |      |       |      |     
 |
  | РОН                |да    |да    |да    |да     |да    |да   
 |
  |____________________|______|______|______|_______|______|_____
_|
  |                    |      |      |      |       |      |     
 |
  | Сегментные         |      |      |      |       |      |     
 |
  | регистры           |да    |да    |да    |да     |да    |да   
 |
  |____________________|______|______|______|_______|______|_____
_|
  |                    |      |      |      |       |      |     
 |
  | Регистры           |      |      |      |       |      |     
 |
  | признаков          |да    |да    |да    |да     |IOPL  |IOPL 
 |
  |____________________|______|______|______|_______|______|_____
_|
  |                    |      |      |      |       |      |     
 |
  | Управляющие        |      |      |      |       |      |     
 |
  | регистры           |да    |да    |PL=0  |PL=0   |нет   |да   
 |
  |____________________|______|______|______|_______|______|_____
_|
  |                    |      |      |      |       |      |     
 |
  | GDTR               |да    |да    |PL=0  |да     |нет   |да   
 |
  |____________________|______|______|______|_______|______|_____
_|
  |                    |      |      |      |       |      |     
 |
  | IDTR               |да    |да    |PL=0  |да     |нет   |да   
 |
  |____________________|______|______|______|_______|______|_____
_|
  |                    |      |      |      |       |      |     
 |
  | LDTR               |нет   |нет   |PL=0  |да     |нет   |нет  
 |
  |____________________|______|______|______|_______|______|_____
_|
  |                    |      |      |      |       |      |     
 |
  | TR                 |нет   |нет   |PL=0  |да     |нет   |нет  
 |
  |____________________|______|______|______|_______|______|_____
_|
  |                    |      |      |      |       |      |     
 |
  | Управление         |      |      |      |       |      |     
 |
  | отладкой           |да    |да    |PL=0  |PL=0   |нет   |нет  
 |
  |____________________|______|______|______|_______|______|_____
_|
  |                    |      |      |      |       |      |     
 |
  | Тестовые           |      |      |      |       |      |     
 |
  | регистры           |да    |PL=0  |PL=0  |PL=0   |нет   |нет  
 |
  |____________________|______|______|______|_______|______|_____
_|
     
     PL=0     -     регистры    доступны    только    при    уров
не
привилегированности, равном 0.
     IOPL     -     команды PUSHF и POPF могут изменять IOPL.
     
     Замечания.
     
     Для  обеспечения    совместимости   с   будущими  процессора
ми
необходимо:
     1)     маскировать    (исключать    влияние)    неопределенн
ых 
(неиспользованных  битов  в  соответствующих   регистрах   при   
их 
проверке; 
     2) обеспечить отсутствие  влияния  этих битов  при записи их
 в
память и другие регистры;
     3) исключить запись информации в неопределенные биты;
     4)  обеспечивать  запись  0  в  неиспользованные  биты,  ког
да
загружаются соответствующие регистры.
     
                                     - 14 -
           
           
               Система команд процессора
     
     Система команд включает 9 групп команд:
     
     1) передачи данных;
     2) арифметические;
     3) сдвига;
     4) обработки строк;
     5) манипуляции битами;
     6) передачи управления;
     7) поддержки языков высокого уровня;
     8) поддержки операционной системы;
     9) управления процессором.
     
     Команды  могут  содержать  от  0 до 3 операндов, размещенных
 в
регистрах  памяти  или  непосредственно  в   команде.   Большинст
во
безоперандных  команд - однобайтовые. Однооперандные команды обыч
но
двухбайтовые. Средняя  длина  команды  -  3,2 байта. Это  позволя
ет
хранить  в  среднем  5 команд в 16-ти байтовой очереди команд бло
ка
опережающей  выборки. При  использовании  двух  операндов  возмож
ны
следующие типы взаимодействия: регистр-регистр;
                               память-регистр;
                               непосредственный операнд-регистр;
                               память-память;
                               регистр-память;
                               непосредственный операнд-память.
     Операнды   могут   быть   8,   16  или  32-х разрядными. Ког
да
выполняются команды, написанные для 80386, операнды имеют  длину 
 8
или  32 бита, когда для 80286 и 8086-операнды 8 или 16 бит. Ко вс
ем
инструкциям могут  добавляться  префиксы,  которые  изменяют  дли
ну
операндов  (т.к.  позволяют  использовать  32-х  битовые операнды
 в
16-ти битовых командах или 16-ти битовые операнды  в  32-х  битов
ых
командах).
     
                       Режимы адресации
     
     МП  обеспечивает  11  режимов адресации, которые рассчитаны 
на
эффективное  выполнение  программ,   написанных на  ЯВУ  типа   С
 и
Фортран.  Два режима адресации: режим регистровой адресации и реж
им
непосредственной   адресации - предназначены,  соответственно,  д
ля
адресации    одного    из    регистров   регистрового   блока   и
ли
непосредственного операнда с разрядностью 8, 16, 32 бита.
     Имеется  9  режимов  адресации  памяти.  Исполнительный  адр
ес
включает в себя два компонента адреса базы - сегмента и эффективн
ый
адрес. Эффективный адрес вычисляется  суммированием  следующих  4
-х
элементов:
     1)  смещение  -  8  или 32-х битовая величина, непосредствен
но
задаваемая в команде (16-ти битовые смещения  могут  использовать
ся
при помощи префикса);
     2)  база  -  содержимое любых РОНов.   Базовые регистры обыч
но
используются компиляторами     в качестве  точки  отсчета локальн
ой
области памяти;
     3)  индекс  - содержимое любых  РОНов, исключая ESP. Индексн
ые
регистры используются для доступа к элементам строк или массивов.
     4) величина   -   указывает   шаг   (1,  2,  4   или  8)   д
ля
(шаг   индексации)  индексного  регистра. Шаг индексации  позволя
ет
                     успешно адресовать массивы или структуры.
     
.                
                                     - 15 -
                
                
     Вычисление  эффективного  адреса   практически   не   ухудша
ет
производительность   процессора  из-за  использования  конвейерно
го
режима. Единственное исключение - одновременное использование баз
ы,
индекса и смещения, что ухудшает быстродействие на один такт.
     EA = база + индекс (с определенным шагом)+ смещение.
     
                      Режимы (см. рис.2-9).
     
     Прямой  адресации. Смещение адреса операнда содержится в 8, 
16
                        или 32 разрядах команды. 
     Регистровый косвенный.  Базовый или индексный регистр содерж
ат
                        адрес операнда. 
     Базовая адресация. Базовый регистр суммируется со смещением.
     Индексная   адресация.   Индексный   регистр   суммируется  
со
                        смещением. 
     Индексная адресация с шагом. Содержимое  индексного   регист
ра
                        умножается   на   шаг   и   суммируется  
со
                        смещением.  
     Базово-индексная адресация. ЕА = база + индекс.
     Базово-индексная адресация  с шагом. ЕА = база + индекс * ша
г.
     Базово-индексная адресация  со смещением. ЕА = база + индекс
 +
                        + смещение.
     Базово-индексная адресация со смещением и с шагом.
                        ЕА = база + индекс * шаг + смещение.
         Различия между 32-х и 16-ти разрядными адресами.
     
     Для   обеспечения   совместимости  ПО  процессоров  необходи
мо
программы (с 16-ти битовыми командами МП 86 и 286)   выполнять   
на 
МП  386  в  реальном  или  защищенном режимах. Процессор определя
ет
размерность адреса, анализируя D бит в дескрипторе сегмента. 
Если   D=0,   то   все   длины   операндов  и  эффективных  адрес
ов
составляют 16 бит. Если D=1 - 32 бита. В реальном режиме - 16 бит
     Изменение  бита  D  для  команд  обеспечивают  два   префикс
а,
выбираемые перед этими командами: 1) префикс размерности  операнд
а,
                                  2) префикс длины адреса.
     Префиксы автоматически добавляются ассемблером  фирмы   Inte
l.
     
    Таблица 2-3. Базовые и индексные регистры для 16-ти и 32-х 
                            байтовых адресов.
     ____________________________________________________________
     |                       |                |                  
     |                       |  16-ти битовый |   32-х битовый   
     |                       |     адрес      |       адрес      
     |_______________________|________________|__________________
     |                       |                |                  
     |Базовый регистр        |  BX, BP        | Любой 32-х битный
     |                       |                |     РОН          
     |_______________________|________________|__________________
     |                       |                |                  
     |Индексный регистр      |  SI, DI        | Любой 32-х битный
     |                       |                | РОН, исключая ESP
     |_______________________|________________|__________________
     |                       |                |                  
     |Шаг                    |  нет           | 1, 2, 4, 8       
     |_______________________|________________|__________________
     |                       |                |                  
     |Смещение               |  0, 8, 16 бит  | 0, 8, 32 бит     
     |_______________________|________________|__________________
         
     В этой таблице показана  разница  в  использовании  базовых 
 и
индексных регистров. 
                                     - 17 -
           
           
     Префиксы могут использоваться совместно или раздельно с  люб
ой
инструкцией.  Префикс  длины  адреса  не  обеспечивает  размернос
ть
                                      ----------------
адреса более 64 Кбайт  в  режиме  реальной  адресации. Адрес  свы
ше
FFFFH  будет   рассматриваться  как  ошибка. Префикс  длины  адре
са
используется только для дополнительных режимов адресации 80386.
                       Типы данных
     80386 поддерживает все типы данных, используемые ЯВУ.
     Бит -  одиночный двоичный разряд.
     Битовое поле - группа до 32-х битов.
     Цепочка  битов (строка) - набор последовательных битов, длин
ой
до 4 Гбит.
     Байт - 8-ми битовая (включая знак) величина.
     Беззнаковый байт - 8-ми битовая (без знака) величина.
     Целое (слово) - 16-ти битовая (включая знак) величина.
     Длинное целое (двойное слово) - 32-х  битовая  (включая  зна
к)
величина.
     Беззнаковое целое (слово) - 16-ти битовая (без знака) величи
на.
     Беззнаковое  длинное целое (двойное слово) - 32-х битовая (б
ез
знака) величина.
     Счетверенное слово со знаком - 64 бита, включая знак.
     Счетверенное слово без знака - 64 бита без знака.
     Короткий  указатель  -  16-ти  или  32-х  разрядное  смещени
е,
косвенно определяющее ячейку памяти.
     Указатель  -  16-ти битовый сегмент и 16-ти или 32-х разрядн
ое
смещение.
     Символ    -    байтовое    представление     управляющих    
 и
алфавитно-цифровых символов ASCII.
     Строка - последовательность из байтов.
     Двоично-десятичный     код    -    байтовое    (неупакованно
е)
представление десятичных цифр от 0 до 9.
     Упакованный двоично-десятичный код  -  байтовое  представлен
ие
двух десятичных цифр от 0 до 9.
     
     В тех  случаях, когда  80386  взаимодействует с арифметическ
им
сопроцессором  типа   80287  или  80387,  дополнительно  использу
ют
формат с:
     плавающей  запятой  -  знаковое  32-х,  64-х и 80-ти разрядн
ое
представление (порядка и мантиссы).
     
                     См. рис.2-10.
     
                   Организация памяти
Память  делится  на  байты,  слова  и  двойные  слова. Байты слов
 и 
двойных  слов  размещаются,   образуя   последовательную   цепочк
у. 
Байтовый  адрес  слова  и  двоичного  слова  соответствует младше
му 
байту.  В  дополнении  к  основным   типам   данных   80386   мож
ет 
поддерживать еще две большие единицы памяти: страницы и сегменты.
     Память  может  быть  поделена  на один или несколько сегмент
ов 
различной  длины,  которые  могут   подкачиваться   с   диска   и
ли 
использоваться  совместно  несколькими  программами.  Память  мож
ет 
также  делится  на  одну  или  несколько   4   Кбайтовых   страни
ц. 
Сегментация   и   страничная   организация   могут   использовать
ся 
совместно,  обеспечивая  преимущества  обоих  методов.  Эти  мето
ды 
являются  взаимодополняющими. Сегментирование удобно для прикладн
ых 
программистов,  работающих  с  логическими  адресами,   тогда   к
ак 
страничная  адресация  -  для  системных программистов, управляющ
их 
физической памятью. 
                                     - 19 -
           
           
     
                Пространство адресов
     80386 имеет три типа адресов:
     логический (виртуальный);
     исполнительный (линеаризованный);
     физический.
     
     Логический  адрес  включает  селектор  и  смещение. Селектор
 -
содержимое сегментного регистра. Смещение - сумма базы,  индекса 
 и
                                                              14
смещения.   Каждая   задача   может  оперировать  с  16 К   (2  -
1)
селекторами и смещениями, каждый из которых может    быть  размер
ом  
            32                                               46
4  Гбайт  (2  бит),  создавая тем  самым общее пространство  2  (
64
Тбайт) для задачи. Блок сегментации транслирует логические адреса
 в
исполнительные.     Блок     страничной    адресации    преобразу
ет
исполнительные адреса в физические. Если блок страничной  адресац
ии
не  используется,  то  исполнительный  адрес  является  физически
м.
Физическим  называется  адрес  на   контактах  процессора. Основн
ое
отличие  режима  РА  от  ВА заключается в том, как логический адр
ес
преобразуется в исполнительный. В  РРА  блок  сегментации  сдвига
ет
селектор на 4 бита влево и добавляет результирующее смещение. В Р
ВА
каждый селектор имеет  определенную  базу  исполнительного  адрес
а.
База  исполнительного  адреса  хранится  в одной из двух страниц 
ОС
(таблице   локальных   дескрипторов    или    таблице    глобальн
ых
дескрипторов).   База   исполнительного   адреса   соответствующе
го
селектора складывается с  результирующим  смещением  для  получен
ия
исполнительного адреса. 
                      См. рис.2-11.
     
             Использование сегментных регистров
     Основная структура в организации памяти - сегмент.
     Сегменты  -  блоки  памяти  переменной  длины   (от 1 байта 
до 
4  Гбайт),  имеющие  определенные  атрибуты.  Три   основных   ти
па
сегментов - стек, команды, данные.
     Для     компактного    кодирования    команд    и    повышен
ия
производительности  МП  команды  не  содержат  явного  указания  
на
используемый  сегментный  регистр. Определение сегментного регист
ра
производится автоматически в соответствии с табл.2-4.
                    
     Обычно   название   сегментного   регистра  указывает  на  т
ип
информации, для адресации которой  он  используется.  Использован
ие
префикса   переадресации  позволяет  явно  определять  используем
ый
регистр, в том числе FS и GS. Это позволяет  совмещать  сегменты 
 и
работать с 4 Гбайтовым пространством исполнительных адресов.  
                 Пространство ввода - вывода
     
     80386 имеет  два различных  адресных  пространства:  память 
 и
ввод/вывод. Обычно периферия размещается в адресах ввода/вывода, 
но
могут использоваться адреса памяти.
     Размеры    пространства   адресов   ввода/вывода   -   64   
К.
     Разрядность устройств ввода/вывода - 8, 16 или  32 бита. 
     Исполнительный  адрес  ввода/вывода  формируется  без  участ
ия
                                                       --
блоков  сегментации  и  страничной  адресации. Вывод M/IO указыва
ет
область, к которой  обращается  процессор.Взаимодействие  устройс
тв
ввода/вывода  с  МП обеспечивается командами IN и OUT через регис
тр
DL, DX или EDX.
                
.                
                                     - 21 -
                
     ____________________________________________________________
     |                                                           
     | Адреса    ввода/вывода     00F8H...00FFH  зарезервированы 
     | фирмой    Intel.   Арифметические   сопроцессоры    также 
     | размещаются  в  этом  пространстве как ячейки с  адресами 
     | 800000F8H...800000FCH.                                    
     |___________________________________________________________
     
                         Прерывания
     
     Прерывания  и  особые  ситуации  используются  как  реакция 
на
внешние события, ошибки или особые условия. Прерывания - реакция 
на
внешние  события,  но  могут вызываться программно (INT N).  Особ
ые
ситуации - реакция на ошибки, возникающие  при  выполнении  коман
д.
Прерывания  делятся на маскируемые и немаскируемые и принимаются 
на
обслуживание после завершения выполнения текущей команды. 
     Особые ситуации классифицируются как:
     промахи  -  обнаруживаются   перед   выполнением   команды  
 и
соответствуют  отсутствию  нужной  страницы  или  сегмента в памя
ти
(необходимо  подкачивать  с  диска   и   перезапускать   выполнен
ие
команды); 
     трассировки - немедленно  выполняются    после      выполнен
ия
команды; 
     ошибки - возникают  при  аппаратных  ошибках  или  запрещенн
ых
значениях в системных таблицах.
     Таким   образом,   после  завершения  выполнения  подпрограм
мы
обслуживания прерывания, программа немедленно переходит  к  коман
де
следующей за прерванной.  
     В  противоположность  этому,  адрес  возврата  из подпрограм
мы
будет соответствовать команде, вызвавшей особую ситуацию и включа
ть
некоторую предварительную префиксацию команды. 
     80386 может управлять до 256 различными прерываниями - особы
ми
ситуациями (таблица содержит 256 векторов). В РРА  вектор  включа
ет
4  байта  (значение  регистра кодового сегмента + смещение). В  Р
ВА
вектор  имеет  8   байт,   соответствующих   таблице   дескриптор
ов
прерываний.  Из  256  прерываний  32  зарезервировала  фирма Inte
l.
Остальные свободны для системных программистов. 
     
                     См. табл.2-5.
     
                 Обработка прерываний 
     
     Когда возникает прерывание, выполняются следующие действия:
     1) адрес текущей программы и флаги сохраняются в стеке;
     2) 8-ми битовый вектор поступает в 80386 и определяет  вход 
 в
таблицу  прерываний;  таблица содержит начальный адрес подпрограм
мы
обслуживания прерывания;
     3) затем выполняется подпрограмма обслуживания прерывания;
     4) по команде IRET  восстанавливает  старый  вектор  состоян
ия
процессора.
     8-ми битовый вектор может поступать в 80386 различными путям
и:
     а) извне,
     б) по команде INT - внутри команды,
     в) изнутри при особых ситуациях.
     
.                
                                     - 23 -
                
                
     Немаскируемый вектор соответствует вектору 2.
     Маскируемое  прерывание.  Наиболее   распространенный   спос
об
     -----------------------                              __
реакции на внешние события. Условие прерывания - INTR = __| ,
                                                   IF = 1.
     Реакция  на  прерывания  -  только  между выполнением соседн
их 
команд (при  выполнении  команд,  работающих  со  строками,  в  н
их 
предусмотрены  окна  между  обращениями  к  памяти  для  реакции 
на 
прерывание).  При  получении  запроса  процессор   считывает   8-
ми 
байтовый  вектор,  указывающий  на  наличие прерывания (один из 2
24 
пользовательских)   и   выполняет   последовательность    действи
й, 
описанных  в  главе  5. Разряд IF в регистре признаков сбрасывает
ся 
при переходе к обработке запроса. Подпрограмма обработки прерыван
ия 
может установить IF в 1 и разрешить чередование прерываний. Коман
да 
IRET устанавливает IF  в  состояние,  соответствующее  хранимому 
 в 
стеке. 
     Немаскируемое  прерывание.   Используется   для   обслуживан
ия
     -------------------------
запросов  с  очень  высоким  приоритетом.  Типичное использование
 -
                                                                 
__
прерывание  при  пропадании  напряжения  питания.  При   NMI =__|
возникает  прерывание  уровня  2  без  подачи  вектора  извне. Ес
ли
выполняется подпрограмма обслуживания NMI, то МП на другие  запро
сы
не  воспринимаются  до  тех  пор, пока не поступит команда IRET и
ли
сигнал начальной установки. Если во время обработки  NMI  поступа
ет
еще  один  NMI,  то  он  запоминается  и будет обрабатываться пос
ле
получения команды IRET. При обработке NMI IF сбрасывается в 0.
     
     Программные прерывания. Соответствуют получению команды INT 
n.
     ----------------------
Особым  случием  двухбайтных  команд  INT  n  является однобайтов
ая
команда INT 3 (прерывание по контрольной точке),  используемое  д
ля
отладки программ. 
               Таблица 2-6. Приоритеты прерываний
 ________________________________________________________________
 |                 |                                             
 |  
 | Приоритет       |           Прерывания/особые ситуации        
 | 
 |_________________|_____________________________________________
_|
 |                 |                                             
 |
 | 1  (наивысший)  |Ошибки                                       
 |
 | 2               |Команды трассировки                          
 |
 | 3               |Трассировка при отладке текущей команды      
 |
 | 4               |Трассировка при ошибках в последующих команда
х|
 | 5               |NMI                                          
 |
 | 6               |Аппаратурные прерывания по входу INTR        
 |
 |_________________|_____________________________________________
_|    
     
                          Перезапуск команд
     80386  поддерживает перезапуск любой команды при возникновен
ии
промаха. От ОС не  требуется  перезапуска  всего  процесса,  т.  
к.
некорректность  обращения будет устранена внутри выполнения текущ
ей
команды с  помощью  вызова  соответствующей  подпрограммы,  котор
ая
подключает  требуемую  страницу.  Перезапуск  команд  гарантирует
ся
всегда, за исключением двух случаев:
     1)  команда   вызывает   переключение   задач   в   TSS,   ч
то
соответствует отсутствию страницы;
                                     - 24 -
           
           
     2)   один   из  операндов  размещается  ниже  любого  текуще
го
указателя стека (т. е. адрес памяти ниже вершины стека) или опера
нд
с плавающей точкой размещается в любом месте памяти.
     
                         Двойные ошибки
     
     Двойными   ошибками  называются  случаи  возникновения  особ
ой
ситуации во время  выполнения  процессором  подпрограммы  обработ
ки
особой  ситуации,  возникшей  ранее.  Такие  ситуации соответству
ют
прерыванию уровня 8. Большинство прерываний не  может  приводить 
 к
двойным  ошибкам  (типы  1,  2,  3, 4, 5, 6, 7, 9, 14 и 16). Толь
ко
деление на нуль (тип 0) и сегментные ошибки  (10,11,12,13)    мог
ут
приводить к двойным ошибкам.
     Отсутствие страницы в памяти не приводит  к  двойным  ошибка
м.
Например,  отсутствие  сегмента  и страницы в ЗУ одновременно мож
ет
обслуживаться как последовательность из двух особых ситуаций  и  
не
является двойной ошибкой.
     
                     Сброс и инициализация
     
     При сбросе регистры МП устанавливаются в следующих состояния
х.
Выбор первой команды происходит  из  ячейки  с  физическим  адрес
ом
FFFFFFF0.  При первой же команде межсегментного перехода или вызо
ве
(CALL) адресные линии А20...А31 устанавливаются в  0,   тем   сам
ым
обеспечивая  работу  МП  в младшем мегабайте физической памяти. Э
то
позволяет  разработчику  памяти   использовать   ПЗУ   на   верши
не
физической памяти.
     Импульс  на входе СБРОС должен быть не менее 78 периодов сер
ии
CLK 2. Сигнал СБРОС прерывает все операции на локальной шине МП. 
 В
системе  команд  МП  отсутствуют  инструкции,  которые  выполняют
ся
дольше, чем действует сигнал СБРОС. Между 350 и 450 импульсами  C
LK
2 после окончания сигнала СБРОС начинается выполнение 1-ой команд
ы.
     
           Таблица 2-7. Состояния регистров после сброса
  _______________________________________________________________
 |                                          |                    
 |
 | Регистр признаков                        |  U U U U 0 0 0 2   
 |
 | Регистр ССП                              |  U U U U U U U 0   
 |
 | Указатель команд                         |  0 0 0 0 F F F 0   
 |
 | Командный сегмент                        |      F 0 0 0       
 |
 | Сегмент данных                           |      0 0 0 0       
 |
 | Сегмент стека                            |      0 0 0 0       
 |
 | Сегмент экстракодов                      |      0 0 0 0       
 |
 |       FS                                 |      0 0 0 0       
 |
 |       GS                                 |      0 0 0 0       
 |
 | Другие регистры                          |     не определ.    
 |
 |__________________________________________|____________________
_|    
                   Примечания
     
     1.  Бит  14  регистра  признаков  не  определен,  биты 16 и 
17
устанавливаются  в  0  как  и  все  остальные   признаки   (котор
ые
определяются).
     2.  В  регистре  ССП все определяемые поля устанавливаются в
 0
(биты 0, 1, 2, 3, 31). Бит  4  устанавливается  во  время  действ
ия
сигнала СБРОС в соответствии с типом сопроцессора. Если сопроцесс
ор
- 80386, бит 4 =1, в других случаях (80287  или  отсутствия)  -  
0.
Остальные биты не определены.
     3. Регистр кодового сегмента будет иметь адрес базы FFF00000
 и
размер  0FFFF. Все  неустанавливаемые  биты  зарезервированы фирм
ой
Intel и не должны использоваться.
     
.                
                                     - 25 -
                
                 Тест пригодность
     
     МП  имеет  возможность  самодиагностирования.  Самодиагности
ка
охватывает все управляющие  ПЗУ  и  большинство  регулярных  узло
в.
Приблизительно  половина  оборудования  охвачена  самодиагностико
й.
                                            __        ----
Самодиагностика  запускается  при  RESET  =   |__  и  BUSV   =   
0.
Самодиагностирование  занимает приблизительно 30 мСек (т. е. 5000
00 
периодов  CLK  2  16  МГц  МП).   После   самодиагностирования   
МП 
осуществляет  сброс  и  переходит  к  нормальной  работе.  Провер
ка 
считается успешной, если содержимое регистров EAX и EDX равно 0. 
 В 
противном случае МП не исправлен. 
     80386 также обеспечивает механизм для тестирования  устройст
ва
преобразования  (TLB)  адресов.  Это  свойство,  в  первую очеред
ь,
полезно для разработчика тестовых программ для 80386. Данный  мет
од
тестирования  уникален  для  80386 и в последующих моделях может 
не
использоваться.  Тестирование TLB требует подачи тестовых  наборо
в,
написанных  на  языке  ассемблера. Управление страницами   при эт
ом
должно быть отключено.
     Два  регистра  используются для подачи на TLB тестовых набор
ов
(TR6) и  считывания ответных реакций (TR7) 
    
    31                12  11                                0
    _____________________|___________________________________
    |                    |  |  |- |  |- |  |- | *| *| *|  |  |
    |Исполнительный адрес|V |D |D |U |U |W |W |0 |0 |0 |C |C | TR
    |____________________|__|__|__|__|__|__|__|__|__|__|__|__|
    |                    | *| *| *| *| *| *| *|P |     | *| *|
    |Физический адрес    |0 |0 |0 |0 |0 |0 |0 |L |REP  |0 |0 | TR
    |____________________|__|__|__|__|__|__|__|__|_____|__|__|
     * - зарезервмрованы фирмой Intel.
     
                Рис.2-12. Тестовые регистры
     
              Средства поддержки отладочных режимов
     
     80386    имеет     ряд     свойств,     упрощающих     проце
сс
отладки.   Большинство   этих  свойств  предназначены  для  отлад
ки
программного  обеспечения  (заметим,  что  Intel  будет   создава
ть
эффективный набор аппаратно - программных отладочных средств, так
их
как  ICE-386  -  внутрисхемный  эмулятор  и  PTM-386  -  отладочн
ый
монитор, дополняющие встроенные средства. 
     
     Для осуществления отладки необходимо реализовать 3 возможнос
ти:
     1)Введение в программу контрольных точек;
     2)пошаговый режим;
     3)наличие отладочных (вспомогательных) регистров.
     
     Однобайтовое  прерывание (INT 3) позволяет вводить контрольн
ые
точки. 
     Пошаговый  режим  обеспечивается  установкой  TF  в   регист
ре
признаков инструкциями POPF и IRET.
     После  установки  TF  после  каждой  команды будет выполнять
ся
прерывание.Подпрограмма  обработки  прерывания   убирает   в   ст
ек
содержимое регистра признаков (с установленным в 1 TF) и сбрасыва
ет
TF в 0, обеспечивая нормальный режим работы подпрограммы.
                
.                
                                     - 26 -
                
                
     Прерывание  при  пошаговом   режиме   использует   вектор   
1,
формируемый внутри процессора.
     После  выполнения  подпрограммы  по  команде  IRET  содержим
ое
регистра  признаков  восстанавливается  (из   стека)   и   начина
ет
выполняться следующая команда подпрограммы.
     
     Отладочные регистры - уникальная особенность 80386 !
     Имеется  6  программно  доступных регистров для обслуживания
 4
произвольных контрольных точек. В отличие от традиционного  подхо
да
содержимое  регистров  может  использоваться в качестве контрольн
ых
точек не только для команд, но и для операндов. 
     Детальное    содержимое    отладочных    регистров    привед
ен
на рис.2-13.
     
     Замечания.
     ----------
     Исполнительный адрес  может  не  соответствовать  физическом
у,
если включен блок страничной адресации.
     DR6 содержит статус регистров контрольных точек.
     Биты, хранимые в этом регистре, имеют следующие значения:
     BT  установлен  в  1,  если  при переключении задач происход
ит
переход на задачу, в которой TSS имеет бит DEBUG TRAP = 1.
     BS устанавливается отладочными подпрограммами для того,  что
бы
отличить режим пошаговой трассировки от других отладочных режимов
. 
     BD   устанавливается  аппаратурой,  если  последующая  коман
да
обращается к отладочному регистру.
     B0...B3  устанавливаются   при   активизации   соответствующ
их 
контрольных  точек.  B0  соответствует  нулевой контрольной точке
 и 
т.д. 
     DR7 - регистр управления отладкой; используется для выполнен
ия
и определения различных контрольных точек. Его биты имеют следующ
ее
значение.
     LENi-это двухбитовое поле определяет длину контрольной точки
 i.
     Все контрольные точки должны быть выровнены:
                     двухбайтовые - по границам слов,
                     четырехбайтовые - по границам двойных слов.
                     
                     00 - байт,
                     01 - два байта,
                     10 - не использ. (не определена),
                     11 - 4 байта.
     RWEi-это  двухбитовое поле определяет тип доступа к памяти, 
по
которому должна активизироваться контрольная точка.
     
                     00 - по выборке команды,
                     01 - по записи данных,
                     10 - не использ. (не определена),
                     11 - по записи или считывания данных.
     GE/LE   -   требование  глобальной  (GE)  или  локальной  (L
E) 
контрольной точки. Должны всегда устанавливаться в 1 при  работе 
 с 
соответствующими контрольными точками. 
     Gi/Li  -  включение глобальных или локальных контрольных точ
ек 
(Gi=1 или Li=1 для i-той точки). Li-соответствует i-той контрольн
ой 
точке для одной задачи, Gi-для всех задач. 
     При  загрузке  значений  контрольных  точек  процессор  долж
ен 
работать с нулевым уровнем привилегированности или в режиме  PA. 
 В 
этом  случае  загрузка  обеспечивается командами MOV DRi, REG/MEM
 с 
указанием адреса соответствующего регистра. Затем загружаются  би
ты 
LEN и RWE. Последними устанавливаются биты Gi и/или Li. 
     Bi  биты  в  DR6  всегда  будут  показывать   активизированн
ые
контпольные  точки,  но  до тех пор, пока Gi или Li не установлен
ы,
процессор  не  будет   выполнять   отладочную   подпрограмму   (к
ак
прерывание 1).
     
.
                                     - 28 -
           
           
                   3. РЕЖИМ РЕАЛЬНОЙ АДРЕСАЦИИ
     При   включении   питания  и/или  подаче  сигнала  "Сброс"  
МП 
переходит в режим РА, который соответствует архитектуре МП 8086, 
но 
работает   с   32-х   разрядными  регистрами.  Механизм  адресаци
и, 
пространство адресов памяти, управление прерываниями осуществляют
ся 
аналогично режиму РА МП 80286. 
     В  режиме РА используются все команды 80386. Длина операндов
 в 
этом режиме - 16 бит. Для обеспечения  возможности  работы  в  эт
ом 
режиме  с 32-х разрядными операндами и использования дополнительн
ых 
режимов  адресации  необходимо  использовать  специальный   префи
кс 
переадресации.  Кроме  того, в режиме РА размер сегмента может бы
ть 
не более 64 К байт, т.е. 32-х разрядный адрес не может быть больш
е, 
чем 0000FFFF. 
                   Адресация памяти
     В  режиме  РА  максимальное  адресное пространство - 1 М бай
т,
т.е. используются линии А2...А19,  BE0...BE3.  При  этом  А20...А
31
установлены в 1 до тех пор, пока не будет выполняться межсегментн
ый
переход или вызов подпрограммы. Т.к. в режиме  РА  не  использует
ся
страничная   адресация,   то   исполнительный  адрес  соответству
ет
физическому. Схема формирования адреса в  режиме  РА  приведена  
на
рис.3-1.
          15          0
          _____________
          | Смещение  |
          |___________|
                |
                |_____________
                              |
     19        4  3   0       |
     _________________        |      _____________  Граница
     |          |     |       |      |            | _____________
     |Сегментный|0000 |       |      |____________|/сегмента
     |cелектор  |     |       |      |            |\
     |__________|_____|       |      |____________| |
         |                   \|/     |            | |
         |                   ___     | Операнд    | |
         |_________________\|   |___\|            | | Выбранный
         |                 /| + |   /|____________| |
         |                  |___|    |            | | сегмент
         |                           |            | >
         |                           |            | | ( 64 К )
         |                           |            | |
         |                           |            | |
         |                           |            | |
         |_ _ _ _ _ _ _ _ _ _ _ _ _ _|____________|/
                                     |            | 
                                     | База       |
                                     | сегмента   |
                                     |____________|
           Рис.3-1. Схема формирования адреса в режиме РА
     Все  сегменты в режиме РА могут находиться в состоянии запис
и,
считывания  или  выполнения. 80386 формирует  прерывание  13,  ес
ли
операнд или команда располагаются за границами сегмента, т. е. ес
ли
операнд имеет смещение больше FFFF, например, при адресации слова
 с
младшим байтом по адресу FFFF и старшим по адресу 0000.
                
.
                                     - 29 -
           
                
                
     Сегменты  могут перекрываться в режиме РА. Если данный сегме
нт
не использует все 64  к  байт  адресов,  то  другой  сегмент  мож
ет
начинаться  с адреса 1-й ячейки неиспользуемой зоны адресов данно
го
сегмента.  Это   позволяет   программисту   минимизировать   разм
ер
физической памяти, требуемой для хранения программы.
     
     
                   Зарезервированные зоны адресов
     Имеются две зоны адресов,  зарезервированные в режиме РА: зо
на
системной инициализации и зона таблицы прерываний.
     Таблица  векторов  прерываний  размещается в адресах 003FF .
.. 
00000 (256 4-х байтовых векторов).  Адреса  FFFFFFFF  ...  FFFFFF
F0 
зарезервированы для системной инициализации. 
           
                     Прерывания
     Многие   из   особых   ситуаций,   приведенних   в    табл.2
-5 
 (обсуждавшиеся в 2.9) не используются в режиме РА. К ним относят
ся 
 особые ситуации 10, 11, 12, 14. Некоторые  особые  ситуации  име
ют
 несколько иной смысл (см. табл.3-1). 
     
                            Таблица 3-1
     ____________________________________________________________
__
    |                |          |                       |        
  |
    |Функция         |Номер     | Причина               |Адрес   
  |
    |                |          |                       |        
  |
    |                |прерывания|                       | возврат
а |
    |                |          |                       |        
  |
    |________________|__________|_______________________|________
__|
    |                |          |                       |        
  |
    |Малы  размеры   |    8     | Вектор INT не  соот-  |Предыдущ
ая| 
    |                |          |                       |        
  |
    |таблицы прерыва-|          | ветствует размерам    |команда 
  |
    |                |          |                       |        
  |
    |ния             |          | таблицы               |        
  |
    |________________|__________|_______________________|________
__|
    |                |          |                       |        
  |
    |Прерывание при  |    13    | Адресуемое слово      |Предыдущ
ая|
    |                |          |                       |        
  |
    |превышении      |          | имеет смещение FFFF   |команда 
  |
    |                |          |                       |        
  |
    |размера сегмента|          | или выполняемая ко-   |        
  |
    |                |          |                       |        
  |
    |                |          | манда находится за    |        
  |
    |                |          |                       |        
  |
    |                |          | границей сегмнета     |        
  |
    |________________|__________|_______________________|________
__|
.
                                     - 30 -
           
           
     
                  Зависания и остановы
     При получении  команды  HLT  процессор  прекращает  выполнен
ие
программы  и  освобождает  локальную  шину. Сигналы NMI, INTR  (п
ри
IF=1)  и RESET выводят процессор из состояния  останова.  При  эт
ом
сигналы  на  входах  прерываний  "толкают"  процессор на выполнен
ие
следующей команды.
     В режиме РА зависания возникают в двух случаях:
     1) прерывание (особые ситуации 8 и 13) имеет  вектор  больше
чем   размеры   таблицы  векторов  прерываний,  т.  е.  отсутству
ет
подпрограмма обработки данного прерывания;
     2) команды CALL,  INT  или  PUSH  пытаются  выйти  за  преде
лы
стекового  сегмента,  где указатель  стека не определен  (наприме
р,
имеется попытка записать в  стек,  если  SP=0001  и  результирующ
ее
значение стекового сегмента больше, чем FFFF).
     NMI  вход  позволяет  вывести  процессор  из  зависания,  ес
ли
таблица дескрипторов прерываний достаточно  велика,  чтобы  храни
ть
вектор  прерывания  NMI  (не  меньше 000F) и стек имеет достаточн
ые
размеры для хранения векторов и признаков (т.  е.  SP  больше,  ч
ем
0005).  В  противном  случае  из  зависания  можно выйти только с
помощью сигнала RESET.
     
.
                                     - 31 -
           
           
                                     
           
                 4.РЕЖИМ ВИРТУАЛЬНОЙ АДРЕСАЦИИ (РЕЖИМ РМ)
     
                 4.1.Введение
     
     Возможности 80386 используются полностью, если он  работает 
 в
режиме  РМ.  В  этом  режиме  пространство  исполнительных  адрес
ов
                           32
расширяется до  4  Гбайт (2  байт), а  область виртуальных  адрес
ов
                    46 
-  до  64  Тбайт  (2  байт), т.е. практически  не ограничена. Кро
ме
того,  в  режиме  РМ  имеется  возможность   выполнения   програм
м,
разработанных   для  8086  и  80286  с  использованием  специальн
ых
механизмов управления  памятью  и  аппаратно  поддержанных  средс
тв
защиты  памяти.  Режим  РМ  позволяет  использовать  дополнительн
ые
команды, специально  оптимизированные для  поддержки  многозадачн
ых
операционных систем. Основное  отличие  режима РМ от режима РА (R
M)
cостоит в расширении адресного пространства и использовании  друг
их
механизмов адресации.
     
                 4.2.Механизм (схема) адресации
     
     Подобно  режиму  RM в режиме РМ в формировании исполнительно
го
адреса участвуют два компонента:
     16-ти  битовый  селектор,  используемый для определения адре
са 
базы сегмента и 32-х битовый эффективный адрес. 
     Сформированный   исполнительный   адрес   является  физическ
им 
адресом, если не  используется  механизм  страничной  адресации. 
 В 
противном  случае,  он  преобразуется  в  физический. Разница меж
ду 
режимами РМ и RM заключается в вычислении  сегмента.  В  режиме  
РМ 
селектор используется, как индекс, указывающий операционной систе
ме 
на определенный элемент  специальной  таблицы,  в  которую  помещ
ен 
32-х битовый   адрес   базы   данного  сегмента.  Физический  адр
ес 
формируется сложением базового адреса с 32-х битовым смещением. 
                          Рис.4-1.
     Страничная адресация памяти является дополнительным механизм
ом
управления  памятью, используемым только в режиме РМ. Этот механи
зм
позволяет преобразовывать исполнительные адреса в физические.
                          Рис.4-2.
     
                 4.3.Сегментация
                 4.3.1.Введение
     Сегментация - это  один  из  методов  управления  памятью.  
Он 
является  основой защиты памяти. Сегменты - самостоятельные облас
ти 
памяти, имеющие собственные атрибуты. Например,  в  сегменте  мог
ут 
размещаться  коды  программ  или  таблицы операционной системы. В
ся 
информация о  сегменте  запоминается  в  8-ми  байтовой  структур
е, 
называемой  дескриптором.  Все  дескрипторы  храняться  в аппарат
но 
реализуемых таблицах.      --------------------------------------
--
--------------------
                 4.3.2.Термины,    используемые     при    описан
ии 
                       дескрипторов, уровней привилегированности 
 и 
                       защиты. 
     
     PL.  Уровень  привилегированности  -  один  из   4-х   уровн
ей 
привилегированности. Наиболее привилегированный уровень 0, наимен
ее 
- 3. 
     
     RPL. Запрашиваемый   уровень   привилегированности  -  урове
нь
привилегированности  конкретного   подключаемого   селектора.   R
PL
определяется двумя младшими битами селектора.
                                     - 34 -
           
          
                
     DPL. Уровень  привилегированности дескриптора  -  это  младш
ий
уровень  привилегированности, который  имеет  задача,  обращающая
ся
к  дескриптору  (и к связанному с ним сегменту).  DPL  определяет
ся
битами 6 и 5 байта. 
    
     CPL.    Текущий    уровень   привилегированности   -   урове
нь 
привилегированности, который имеет текущая выполняемая  задача.  
Он 
равен  уровню  привилегированности  выполняемого кодового сегмент
а. 
CPL может быть также определен  проверкой  двух  младших  битов  
CS 
регистра, получаемых для соответствующих кодовых сегментов. 
     
     EPL. Эффективный  привилегированный   уровень   -   наименьш
ий
уровень из RPL и DPL, т.е. цифровой максимум из RPL и DPL.
     
     Задача (процесс) - совокупность выполняемых программ.
     
     
                 4.3.3.Таблицы дескрипторов
     ВВедение.  Таблицы  дескрипторов  определяют   все   сегмент
ы,
которые используются в системе на базе 80386.
     Имеется три типа таблиц:
     1) таблица глобальных дескрипторов;
     2) таблица локальных дескрипторов;
     3) таблица дескрипторов прерываний.
     Каждая  из  таблиц  храниться  в  своей области памяти и име
ет
размер от 8 байт до 64 кбайт. Каждая таблица может содержать до  
8к
8-ми  байтных дескрипторов. Старшие 13 бит селектора используются
 в
качестве индекса дескрипторной таблицы. Для  обращения  к  таблиц
ам
имеются    специальные    регистры,    хранящие    32-х     битов
ый
исполнительный адрес и 16 битовую границу данной таблицы.
                        Рис.4-3.
     
     Эти регистры GDTR, LDTR и  IDTR  загружаются  командами  LGD
T,
LLDT,  LIDT и сохраняются. SGDT, SLDT и SIDT. Манипуляция таблица
ми
осуществляется операционной системой при  помощи  привилегированн
ых
команд.
                 4.3.3.2.Таблица глобальных дескрипторов
     Эта  таблица  (GDT)  содержит  дескрипторы, доступные для вс
ех
задач системы. GDT может содержать любые дескрипторы  сегментов  
за
исключением дескрипторов, используемых для обслуживания прерывани
й.
Обычно GDT содержит сегменты  команд и данных,  используемые  ОС 
 и
дескрипторы    таблиц   LDT. Первому  элементу  GDT   соответству
ет
несуществующий селектор, который не используется.
     
                 4.3.3.3.Таблица локальных дескрипторов
     Таблица  LDT   содержит  дескрипторы,  используемые  в  данн
ой
задаче.  Обычно  ОС  разрабатываются  таким  образом,  чтобы кажд
ая
задача имела отдельную LDT. LDT может содержать только  дескрипто
ры
команд,  данных,  стека, номера задачи и вызова номера. Таблицы L
DT
служат механизмом для изоляции сегментов команд и данных  отдельн
ых
задач  от  ОС,  в  то время, как  GDT хранит дескрипторы сегменто
в,
являющихся общими для всех задач. Сегмент не  может  быть  доступ
ен
задаче,  если  его  дескриптор отсутствует внутри текущей  LDT  и
ли
GTR. Это обеспечивает защиту сегментов  задач  и  в  то  же  врем
я,
                                     - 36 -
           
           
совместное  использование  глобальных данных различными задачами.
 В
отличие от 6-ти  байтовых  GDT  и  IDT  регистров,  которые  хран
ят
базовый  адрес  и  ограничитель,  видимая часть регистра LDT хран
ит
только 16 битовый селектор. Этот селектор определяет дескриптор L
DT
в GDT.
     
                 4.3.3.4.Таблица дескрипторов прерываний
     
     IDT    содержит   дескрипторы   указывают   расположение   2
56
подпрограмм  обслуживания  прерываний.  IDT  может  хранить  толь
ко
вектора задач, вектора прерываний и вектора трассировок. IDT долж
на
быть не менее, чем  256  байтовой,  чтобы  хранить  дескрипторы  
32
прерываний,   зарезервированных   ф.   Intel.   Каждое  прерывани
е,
используемое в системе, должно быть описано в IDT. IDT использует
ся
при  выполнении  команд  INT,  внешних запросов прерываний в особ
ых
ситуациях.
     
                     
     
                 4.3.4.Дескрипторы
                 
                 4.3.4.1. Биты атрибутов дескриптора
     Объект, на  который указывает  селектор  сегмента,  называет
ся
дескриптором. Дескриптором   называется  8-ми   байтная   величин
а,
определяющая атрибуты данной области исполнительных  адресов,  т.
е.
сегмента.  Эти  атрибуты включают 32-х битовую базу исполнительно
го
адреса сегмента, 20-ти  битовую длину, а также единицу,  в  котор
ых
задается  длина  сегмента  (страница  или  байт),  уровень  защит
ы,
уровни чтения, записи и выполнения, тип сегмента и длина  операнд
ов
(16  или  32). Вся  информация об атрибутах сегмента заключена в 
12
битах дескриптора сегмента.
                  
     
     Все сегменты 80386 имеют 3 единых поля:
     P, DPL, S (см. надписи под рис.4-5).
     
                 4.3.4.2.Дескрипторы команд и данных (S=1)
                ___________________________________________
     Формат  такого  дескриптора  и  байт прав доступа приведены 
на
рис.4-6 и табл.4-1 соответственно.
     
                     
     Дескрипторы сегментов команд и данных  имеют  несколько  общ
их
полей: A, G.
     А  - бит используется ОС для получения статистики по обращен
ию
к данному сегменту. 
     G - бит  указывает  величину,  в  которых  указывается  разм
ер
сегмента.  Длина  сегмента может  быть 1 Мбайт (G=0, т. е. задан 
 в
                                                      20
байтах) или 4 Гбайт (G=1, т.е. задан  в  страницах - 2  страниц  
по
4 Кбайт каждая).
     Система  на  базе  80386  может включать сегменты как байтов
ой
размерностью, так и со страничной размерностью, если  включен  бл
ок
страничной адресации. 
     Бит  Е  указывает, какой из сегментов  выполняется:  командн
ый 
(E=1, S=1) или данных (E=0, S=1).
     Кодовый  сегмент  может  находится в стадии только  выполнен
ия  
(бит  R=0) или  выполнения/чтения (R=1). Запись  в кодовый  сегме
нт
не возможна.
                                     - 40 -
           
           
     Замечания.
     Кодовые  сегменты  могут  изменяться,через  вымышленные  име
на 
(метки).   Метки   приписываются    сегментам    данных,    котор
ые 
располагаются  в некотором пространстве исполнительных адресов, к
ак 
сегменты команд. 
     Бит D указывает размерность операндов  и  эффективных  адрес
ов  
(32  бита  при  D=1,  16  бит  при D=0).  Это  позволяет   выполн
ять
команды для 80286.
     Другим атрибутом сегментов команд является бит согласования 
С.
При   С=1   согласованные   сегменты  могут  выполняться  в  режи
ме
разделения     программами,     имеющими      различные      уров
ни
привилегированности.
     Сегменты,   определяемые   как   сегменты   данных (E=0, S=1
),
могут быть двух  типов:  сегменты  стека  и  сегменты  данных.  Б
ит
направления расширения  (ED)  определяет тип сегмента. Если сегме
нт
стековый, то смещение должно быть больше, чем граница сегмента. Д
ля
сегмента  данных  смещение  должно  быть  меньше  или равно грани
це
сегмента.  Другими словами,  сегменты   стека  начинаются  от  ба
зы
исполнительного   адреса   +   максимального   размера  сегмента 
 и
размещаются в сторону уменьшения до базы исполнительного  адреса 
 +
граница.  Сегмент данных начинается с базы исполнительного адреса
 и
кончается границей сегмента. 
     Бит записи W управляет записью в сегменте.  При  W=0  сегмен
ты
данных  работают  только  на чтение. Стековые сегменты должны име
ть
W=1.
     Бит B указывает размерность регистра - указателя  стека.  Ес
ли
В=1,  то  ESP работает  как  32-х битовый регистр и верхняя грани
ца
стека FFFFFFFF. Если В=0 - все команды работы со стеком  использу
ют
SP (16 битовый) и верхняя граница стека FFFF.
     
                 
                 4.3.4.3.Форматы системных дескрипторов
     
     Эти  дескрипторы  содержат  информацию  о  системных таблица
х,
задачах и паролях. Системный дескриптор 80386  имеет  32  разрядн
ую
базу и 20 битовую границу, системный дескриптор 80286 соответству
ет
24 и 16 бит (старшие 16 бит равны 0).
                         Рис.4-7.
     
                 4.3.4.4.Дескрипторы LDT (S=0, TYPE=2) 
               _______________________________________
     
     Дескрипторы  LDT  содержат  информацию  о  таблицах  локальн
ых
дескрипторов.  Таблица  локальных дескрипторов содержит дескрипто
ры
сегментов,  используемых  конкретной  задачей.   Команда   загруз
ки
регистра  LDT  должна  иметь  нулевой  уровень  привилегированнос
ти 
(поле DPL игнорируется).
     
                 4.3.4.5.Дескрипторы TSS (S=0, TYPE = 1, 3, 9, B)
                _________________________________________________
     Дескриптор сегмента состояния  задачи  содержит  информацию 
 о
местонахождении,  размере  и  уровне  привилегированности  сегмен
та
состояния   задачи (TSS).  TSS  -  сегмент   специального  формат
а,
который  содержит  всю  необходимую  информацию  о  задаче и  пол
е,
обеспечивающее связь задач между  собой.  Поле  TYPE  указывает  
на
текущую   исполняемую   задачу  (из  цепочки  активных  задач)  и
ли
доступный TSS. Поле TYPE также указывает, используется ли  TSS  д
ля
МП  286  или  386.  Регистр  задач  (TR) хранит  селектор,  котор
ый
указывает текущий TSS.
                
                                     - 42 -
           
           
                 4.3.4.6.Дескрипторы шлюзов (S=0, TYPE=4-7, C, F)
                _________________________________________________
     
     Шлюзы используются  для  управления  доступом  к  определенн
ым
точкам внутри управляющего кодового сегмента.
     Различают:
     1) шлюзы вызовов;
     2) шлюзы задач;
     3) шлюзы прерываний;
     4) шлюзы трассировок.
     Шлюзы  реализуют дисциплину   взаимодействия  при   управлен
ии 
передачей   между   источником  и  приемником.  При  взаимодейств
ии 
процессор  автоматически  проверяет  защиту.  Это  также  позволя
ет 
проектировщикам  системы  управлять точками внутри ОС. Шлюзы вызо
ва 
используются для изменения уровней привилегированности. Шлюзы зад
ач 
используются   для   переключения   задач,  а  шлюзы  прерываний 
 и 
трассировок  используются  для  определения  специальных   програ
мм 
обслуживания   прерываний.  Рис.4-8  показывает  формат  4-х  тип
ов 
дескрипторов шлюзов. 
                     Рис.4-8.
Шлюз вызова, главным  образом, используются для передачи управлен
ия
программам с более высоким уровнем привилегированности.  Дескрипт
ор
шлюза вызова содержит 3 поля:
     1) байт доступа;
     2) указатель  длины (селектор  и  смещение), который указыва
ет
начало программы;
     3) счетчик   слов,   определяющий    количество    параметро
в,
передаваемых  из  стека  вызывающей  программы  в  стек  вызываем
ой
программы.
     Поле  счетчика  слов  используется  только  в  шлюзах  вызыв
а,
которые  изменяют  уровень  привилегированности, в остальных  тип
ах
это поле игнорируется.
     Шлюзы  прерываний  и  трассировок  используют  поля  селекто
ра
назначения  и  смещения  назначения дескриптора для указания нача
ла
программ управления прерыванием или  трассировкой.  Различия  меж
ду
шлюзами  прерываний  и  шлюзами трассировок  заключается в том, ч
то
шлюз прерывание выключает  прерывания  (сбрасывает  бит  IF)  в  
то
время, как шлюз трассировки нет.
     Шлюзы задач используются при переключении задач.  Шлюзы  зад
ач 
могут  обращаться  только к сегменту состояния задач (TSS), поэто
му 
используется только селекторная часть а смещение игнорируется. 
     Прерывание 13 формируется, когда селектор назначения указыва
ет
на некорректный тип дескриптора.
     Формат байта  прав  доступа  одинаков  для  дескрипторов  вс
ех 
шлюзов.  Р=1 - указывает на то, что шлюз открыт. Р=0 - шлюз закры
т, 
при этом, если необходимо, формируется прерывание 11. DPL указыва
ет 
уровень  привилегированности  и  указывает,  в каких случаях данн
ый 
дескриптор может использоваться задачей (см. 4.4).  Бит  4  поля 
 S 
должен  быть  равен  0  и  тем  самым указывать, что это дескрипт
ор 
управления системой. 
     
                 4.3.4.7.Р азличия между дескрипторами 386 и 286
     
     Для   обеспечения   совместимости   ОС  386  поддерживает  в
се
дескрипторы сегментов 286. Рис.4-9  показывает  формат  дескрипто
ра
системного сегмента 80286.
                                     - 44 -
           
           
     Различия заключаются только:
     1)в размерности поля TYPE,
     2)в  размерности базы и границы (80286 - 24 и 16; 80386 - 32
 и
20).
                         
     
     Благодаря установке в 0 разрядов  старшего  слова  дескрипто
ра
ОС  автоматически  определяет, что делать  с программами (различа
ет
тип процессора).
     Другое различие  между  286  и  386  заключается  в  различн
ой 
интерпретации  поля  счетчика слов в шлюзах вызова и бита B. В по
ле 
счетчика слов указывается количество 16-ти битовых слов для  286 
 и 
32-х  битовых  для  386.  Бит  B  указывает  аналогичным образом 
на 
размерность информации при выполнении команды PUSH. 
     
                 4.3.4.8.Поле селектора
     Селектор в режиме РМ имеет 3 поля:
     1)индикатор LDT или GDT (TI);
     2)смещение (индекс) внутри таблицы дескрипторов;
     3)уровень привилегированности (RPL).
                     Рис.4-10.
     
     Бит TI указывает на одну из двух таблиц. Поле индекса выбира
ет
один из 8к дескрипторов из таблицы дескрипторов.
     Биты  RPL  обеспечивают  высокоскоростную  проверку  атрибут
ов
привилегированности селектора.
     
     
                 4.3.4.9.КЭШ -  ЗУ дескрипторов сегментов
     В дополнение к величине селектора  каждый  сегментный  регис
тр 
имеет  связанный с ним регистр (КЭШ ЗУ) дескриптора сегмента. Ког
да 
происходит изменение содержимого сегментного регистра, 8-ми байтн
ый 
дескриптор,    связанный    с    этим   селектором,   автоматичес
ки 
переписывается в процессор. Эта информация используется до тех по
р, 
пока   не   потребуется   доступ  к  другому  сегменту.  Содержим
ое 
дескрипторных  регистров  программно   недоступно   (невидимо   д
ля 
программистов).  При  программном  изменении  дескрипторных табли
ц, 
хранящихся в ЗУ, необходимо осуществлять перезагрузку дескрипторн
ых 
регистров. 
     
                 4.3.4.10.Форматы регистров дескрипторов
     
     Содержимое  этих регистров зависит от режима работы МП. Форм
ат
регистров  для  режима  RM  приведен  на  рис.4-11.
     Для  обеспечения  совместимости  с  архитектурой   8086   ба
за 
устанавливается  в течение 16-ти тактов в соответствии со значени
ем 
селектора,  граница  фиксирована  и  равна  0000FFFF,  а   атрибу
ты 
соответствуют   наличию   и   полной  доступности  сегмента.  В  
РМ 
внутренний уровень привилегированности  всегда  максимальный  (=0
), 
поэтому  команды  ввода - вывода и другие привилегированные коман
ды 
могут выполняться. 
     Формат регистров в режиме РМ представлен на рис.4-12.
     В РМ значения   полей  определяется   содержимым   дескрипто
ра
сегмента индексированного селектором.
     Формат  регистра для режима    виртуального  8086 приведен  
на 
рис.4-13.
     В  отличие  от   режима   RM   виртуальная   программа   име
ет
минимальный    уровень    привилегированности   (=3),   обеспечив
ая
трассировку  всех  команд  IOPL  и   команд   с   нулевым   уровн
ем
привилегированности.
                                     - 49 -
           
           
                          4.4. ЗАЩИТА
     
                         Принципы защиты
     
     80386 имеет 4  уровня защиты, обеспечивая тем самым требован
ия
многозадачной ОС,  изолируя и  защищая  пользовательские  програм
мы
друг  от  друга  и  от  ОС. Управление уровнями привилегированнос
ти
осуществляется  привилегированными  командами,  командами  ввода 
 -
вывода и доступом к сегментам и сегментным дескрипторам. 
     В   отличие   от   традиционных   МП    систем,   где   защи
та
обеспечивается с помощью внешних аппаратных и программных  средст
в,
80386  обеспечивает  защиту  с помощью [внутреннего]  общего  бло
ка
управления памятью. 80386 обеспечивает дополнительный  тип  защит
ы,
если включен режим страничной адресации.       
                   4.4.3.Уровни привилегированности
     
                   4.4.3.1.Привилегированность задач
     
     В любой момент времени задача в 80386 выполняется на одном  
из 
4-х      уровней      привилегированности.      Текущий     урове
нь 
привилегированности (CPL) задачи  может  быть  изменен  только  п
ри 
управлении   передачей  кодовых  сегментов  с  различными  уровня
ми 
привилегированности  через   дескрипторы шлюзов.
     Таким образом, прикладная программа, выполняемая на уровне  
3,
может вызываться программой ОС с  уровнем  1 (через шлюз),  котор
ая
присвоит  задаче  уровень  CPL = 1 до тех пор, пока программа ОС 
не
кончит свою работу.
     
     
                 4.4.3.2.Привилегированность селектора (RPL)
     
      Уровень привилегированности селектора определяется полем RP
L. 
RPL - два младших значащих бита селектора. RPL используется  толь
ко 
для  задания  менее  доверительного уровня привилегированности, ч
ем 
CPL используемого сегмента.  Этот  уровень  называется  эффективн
ым 
(действующим)   уровнем   привилегированности   задачи  (EPL).  E
PL 
определяет,  каково  будет  наименьшее   значение   (арифметическ
ое 
увеличенное)  уровня  привилегированности  из  уровня  задачи и R
PL 
селектора. Таким образом, если RPL селектора =  0,  то  CPL  всег
да 
определяет  уровень  привилегированности для предоставления досту
па 
используемому селектору.  С  другой  стороны,  если  RPL  =  3,  
то 
селектор   может  получать  доступ  только  к  сегментам  уровня 
 3 
независимо от CPL задачи. 
     В  общем  случае  RPL  используется  в качестве указателей д
ля
процедур  ОС  о  недоступности  данных  с  более  высоким   уровн
ем
привилегированности, чем уровень процедуры.
     Таким образом, при формировании селектора можно задавать люб
ые
значения RPL с помощью команды Adjust RPL (ARPL).
     
                4.4.3.3.Привилегированность ввода - вывода
     
     Уровню привилегированности ввода - вывода (IOPL) соответству
ет 
CPL=0, задаваемый ОС. Прерывание 13 возникает в тех случаях,  ког
да 
CPL задачи менее привилегирован, чем IOPL. 
     IOPL  запоминается   (хранится)  в  битах  13  и  14  регист
ра
признаков.
     Команды, вызывающие прерывание 13 (если CPL больше, чем IOPL
): 
     IN, INS, OUT, OUTS, STI, CLI, префикс LOCK.
.
                                     - 50 -
           
     
                4.4.3.4.Достоверность привилегированности
     
     80386 имеет несколько команд для быстрого контроля  указател
ей
и  помощи  системным  средствам  в  определении значения селектор
а,
соответствующего требуемому сегменту.
     В табл.4-2 приведены процедуры, удостоверяющие селекторы.
     Команды проверки указателей                       Табл.4-2
     
_________________________________________________________________
         |         |                                             
 |
 Команда |Операнды |Выполняемое действие                         
 |
_________|_________|_____________________________________________
_|     
         |         |                                             
 |
 ARPL    |Селектор,|Установка требуемого уровня привилегирован-  
 |     
         |регистр  |ности: устанавливает RPL селектора в макси-  
 |
         |         |мальное значение из RPL текущего селектора и 
 |
         |         |RPL регистра. Устанавливает флаг нуля, если  
 |
         |         |RPL изменяется.                              
 |
_________|_________|_____________________________________________
_|
         |         |                                             
 |
 VERR    |Селектор |Проверка на чтение: устанавливает флаг нуля, 
 |
         |         |если сегмент, на который указывает селектор, 
 |
         |         |может быть прочитан.                         
 |
_________|_________|_____________________________________________
_|
         |         |                                             
 |
 VERW    |Селектор |То же самое по записи                        
 |
_________|_________|_____________________________________________
_|
         |         |                                             
 |
 LSL     |Регистр, |Загрузка границы сегмента: читает границу сег
-|
         |селектор |мента в регистр, если правила привилегирован-
 |
         |         |ности и типа дескриптора соблюдены. В этом   
 |
         |         |случае, устанавливает флаг нуля.             
 |
_________|_________|_____________________________________________
_|
         |         |                                             
 |
 LAR     |Регистр, |Загрузка прав доступа:читает байт прав доступ
а|
         |селектор |дескриптора в регистр, если правила привилеги
-|
         |         |рованности соблюдены. В этом случае устанавли
-|
         |         |вает флаг нуля.                              
 |
_________|_________|_____________________________________________
_|
     
     Такая  проверка  указателя  решает  общую   проблему   -   к
ак 
пользователю с PL = 3 вызвать программу операционной системы с PL
=0 
и  не  позволит  плохому  указателю  исказить   структуру   данны
х, 
принадлежащих  операционной  системе.  Если программа ОС использу
ет 
ARPL команду, то гарантируется, что RPL селектора имеет не  больш
ий 
уровень  привилегированности,  чем  то,  что  вызывается и пробле
ма 
преодолевается. 
     
                4.4.3.5.Доступ с помощью дескрипторов
     
     Существуют два основных вида доступа к  сегментам:  к  кодов
ым 
сегментам   (при   передаче   управления)  и  к  сегментам  данны
х. 
Доступность сегмента определяется его типом используемой  командо
й, 
типом дескриптора и CPL, RPL и DPL (см. выше). 
                                     - 52 -
           
     При  выполнении  команд  загрузки  регистров  сегментов данн
ых 
(DS,ES, FS, GS) 80386 проверяет достоверность  защиты  в  следующ
ей 
последовательности:  
     1)является ли вызываемый сегмент отсутствующим (в этом случа
е- 
прерывание 11); 
     2)правильно ли селектор указывает тип сегмента.
     
     Селекторы, загружаемые в DS,  ES,  FS  и  GS  регистры  долж
ны
ссылаться  только  на  сегменты  данных  или разрешенные для чтен
ия
сегменты кодов (команд). Правила доступа к данным приведены в 4.3
.2.
     Единственное  исключение  из  этих   правил   -   согласован
ие
разрешенные  для  чтения  кодовые  сегменты,  доступные  для любо
го
уровня привилегированности. 
     В    заключение   проводится      проверка       достовернос
ти
привилегированности. CPL сравнивается  с  EPL  и,  если  EPL  бол
ее
привилегирован, чем CPL, генерируется прерывание 13  (ошибка  общ
ей
зашиты).
     Правила,    касающиеся   стекового   сегмента,   незначитель
но 
отличаются  от  правил,  касающихся  сегментов   данных.   Команд
ы, 
загружающие  селекторы  в  SS,  должны соответствовать дескриптор
ам 
сегментов  данных,  разрешенных  для  записи.  DPL  и  RPL   долж
ны 
равняться  CPL.  Все  другие типы дескрипторов или нарушение уров
ня 
привилегированности вызывают прерывание 13. 
     Отсутствие стека (стекового сегмента) вызывает прерывание  1
2. 
Заметим,  что  прерывание  11  используется  при отсутствии кодов
ых 
сегментов и сегментов данных. 
     
                 4.4.4.Обмены с учетом уровня привилегированности
     
     Межсегментные  передачи  управления  происходят  тогда,  ког
да
селектор   загружается  в  CS  регистр.  В  обычной  системе  так
ие
переключения являются простым результатом  вызова  или  перехода 
 к
другой  программе.  Имеется  5  типов  передачи управления, котор
ые
приведены в табл.4-3.
     Многие из этих передач  осуществляются  внутри  одного  уров
ня 
привилегированности.  Изменение уровня привилегированности возмож
но 
только для  передач  управления,  использующих  шлюзы  переключен
ия 
задач,    прерываний    или    трассировки.   Передачи   управлен
ия 
осуществляются только  в  том  случае,  если  загружаемый  селект
ор 
ссылается (указывает) на правильный тип дескриптора. Любая ошибка
 в 
правилах использования дескриптора  будет  вызывать  прерывание  
13 
(например,  JMP  из  шлюза  вызова или IRET из обычной подпрограм
мы 
вызова). 
                                                      
     Для обеспечения полной  секретности  в  системе  все  переда
чи
управления должны выполняться по следующим правилам:
     передачи  (переходы)   между  уровнями   могут  осуществлять
ся
только через шлюзы;
     команды JMP должны выполняться в кодовом сегменте с  таким  
же
уровнем привилегированности;
     команды  CALL  должны выполняться в кодовый сегмент с таким 
же
уровнем   привилегированности    или    через    шлюз    к    бол
ее
привилегированному уровню;
     прерывания,     обрабатываемые     внутри    задачи,    долж
ны
соответствовать правилам привилегированности, аналагичным  команд
ам
CALL;
     вызываемые кодовые сегменты доступны привилегированным уровн
ям
с таким же или ниже уровнем, чем DPL вызываемого сегмента;
     RPL селектора входа в указывающего на шлюз и CPL задачи долж
ны
быть равны или более привилегированны, чем DPL шлюза;
                                     - 54 -
           
           
     кодовый  сегмент,  выбираемый  в шлюзе, должен быть с таким 
же
или более привилегированным, чем CPL задачи;
     команды возврата, не связанные с  переключением  задач,  мог
ут
только  управлять  возвратом  к  кодовому   сегменту с таким же и
ли
менее приоритетным  уровнем;
     переключение задач может реализоваться при помощи команд CAL
L,
JMP  или INT, которые указывают либо на шлюз задач, либо на сегме
нт
состояния задачи, DPL которых менее привилегирован или имеет тот 
же
уровень привилегированности, что и CPL старой задачи.
     Любая  передача  управления,  изменяющая  CPL  внутри  задач
и, 
вызывает    изменение   стеков   -   следствие   изменения   уров
ня 
привилегированности. Первоначальные значения SS:  ESP  для  уровн
ей 
привилегированности  0, 1 и 2 храняться в сегменте состояния зада
чи 
(см. 4.4.6). При передачах управления JMP или CALL новый  указате
ль 
стека загружается в SS и ESP регистры, а предыдущий указатель сте
ка 
убирается в новый стек. 
     При   возврате   к    первоначальному    (исходному)    уров
ню 
привилегированности   происходит  перезапоминание  стека  на  мен
ее 
привилегированном уровне, как часть выполнения команд RET или IRE
T. 
     При  вызовах  подпрограмм  между  предыдущим  и  новым  стек
ом
происходит  передача  параметров  фиксированным  количеством   сл
ов
(указываемых в поле счетчика слов шлюза). 
     Команды   межсегментного   возврата   (RET)   с  установленн
ой
(фиксированной)  величиной  стека  будут  правильно  перезапомина
ть 
предыдущий указатель стека до полного возврата.
     
                  4.4.5. Шлюзы вызовов
     
     Шлюзы  обеспечивают  защиту  при  помощи  косвенных   вызово
в. 
Основное   назначение   шлюзов  -  обеспечить  безопасный  механи
зм 
изменения  уровней  привилегированности  внутри  задачи.  Т.к.   
ОС 
определяет  все  шлюзы в системе, то это гарантирует, что все шлю
зы 
обеспечат вход только в количество определенных (заданных) процед
ур 
(таких как управление памятью или вводом/выводом). 
     Дескрипторы  следят  за  соблюдением правил привилегированно
го
доступа к данным; шлюзы могут быть доступны задаче, если EPL  рав
ен
или  более  привилегирован,  чем DPL дескриптора шлюза. Шлюзы так
же
следят   за   соблюдением   правил   привилегированности   переда
чи
управления  и  позволяют  передавать  управление  только  на  бол
ее
привилегированный уровень. 
     Шлюзы  вызова  вызываются  командами  CALL   и   синтаксичес
ки
аналогичны вызову обычной подпрограммы. 
     Когда активизируется  шлюз  вызова  для  межуровнего  перехо
да
в МП, выполняются следующие действия:
     1)загружаемые из шлюза CS: ESP проверяются на правильность;
     2)SS дополняется нулями до 32-х бит и убирается в стек;
     3)ESP убирается в стек;
     4)32-х битовые параметры ( WORD COUNT -  штук)  копируются  
из 
старого стека в новый; 
     5)убирается в стек адреса возврата.
     Процедура идентификации  (реализации)  шлюзов  вызова  для  
МП 
80286  отличается от описанной выше тем, что работа происходит с 
16 
битовыми параметрами. 
     Шлюзы прерываний и трассировки работают примерно также, но п
ри
этом  не  копируются  параметры. Разница между шлюзами прерываний
 и
трассировок заключается в том, что при  передаче  управления  чер
ез
шлюз  прерываний  происходит  сброс  в  0  триггера  IF  в регист
ре
признаков, а для шлюза трассировки - нет.
     
                                     - 55 -
           
                
                    4.4.6. Переключение задач
           
     Очень            важным            атрибутом             люб
ых 
многозадачных/многопользовательских    ОС    является   возможнос
ть 
быстрого  переключения  между  задачами   или   процессами.   803
86 
непосредственно  поддерживает  такую работу, обеспечивая аппаратн
ую 
реализацию  команд   переключения   задач.   Переключение   задач
и, 
включающее  запоминание  текущего  состояния  машины (все регистр
ы, 
адресное пространство  и  связи  с  предыдущей  задачей),  загруз
ку 
нового  состояния, проверку защиты и начало выполнения новой зада
чи 
осуществляется за 17 мкс. Подобно передаче управления через  шлюз
ы, 
операция   переключения   задач   вызывается   выполнением   кома
нд 
межсегментных переходов JMP и CALL, которые  указывают  на  сегме
нт 
состояния  задачи  (TSS) или дескриптор шлюза задачи в GDT или LD
T. 
Команды INT n, особые ситуации, трассировка или запросы  прерыван
ия 
могут  также  вызывать  переключение  задач,  если дескриптор шлю
за 
задачи соответствует IDT дескриптору. 
     
                                                      Рис.4-15
                                                      Рис.4-16
     TSS дескриптор указывает на сегмент (см. рис.4-15), содержащ
ий 
текущее состояние 80386, тогда как дескриптор шлюза задачи содерж
ит 
селектор TSS. 
     80386 поддерживает TSS как для 80386 так и 80286 (на  рис.4-
16 
приведен  TSS  286).  Граница TSS 386 должна быть больше, чем 006
4H 
(002BH для 286 TSS), но  в  пределах  4  Гбайт.  В  дополнении  T
SS 
пространству  ОС  освобождает  место  для  хранения  дополнительн
ой 
информации, такой как причина выключения задачи, время,  выделенн
ое 
задаче, и открытия файлов требуемых задаче. 
     Каждая  задача  должна  иметь  TSS.  Текущее  TSS   определя
ет 
специальный регистр, называемый "Регистр сегмента состояния задач
и" 
(TR).  Этот  регистр  хранит  селектор,   указывающий   дескрипто
р, 
соответствующий текущему TSS. 
     Скрытые база и граница, связанные с  TR,  перезагружаются  п
ри
перезагрузке TR.
     Возврат  из  задачи  осуществляется  командой  IRET,  при эт
ом 
передается управление ранее прерванной  задаче.  Состояние  текущ
ей 
выполняемой  задачи  заносится в TSS, а состояние предыдущей зада
чи 
восстанавливается из TSS. 
     Несколько бит регистра  признаков  и  слова  состояния  маши
ны 
(CRO)  используются  ОС  в  качестве  дополнительной  информации 
 о 
состоянии  задачи.  "Гнездование  задачи"  (бит   14   в   регист
ре 
признаков)  управляет  выполнением  команды IRET. Если NT = 0, IR
ET 
обеспечивает нормальный возврат к предыдущей задаче (переключение
 с 
задачи на задачу). 
     Бит NT устанавливается и сбрасывается следующим образом:
     Когда команда CALL или INT инициализирует переключение задач
и,
новый TSS будет заполняться и в поле возврата нового TSS  заносит
ся
селектор  старого  TSS.  NT  бит  новой  задачи устанавливается в
 1
командами CALL и INT, переключающими задачи.
     Прерывание,   не   осуществляющее  переключение  задач,  буд
ет 
сбрасывать NT в 0 (NT бит будет восстанавливаться после  выполнен
ия 
подпрограммы  обработки прерывания). NT может также быть установл
ен 
или сброшен командами POPF или IRET. 
     TSS в 386 запоминается при изменении поля типа дескриптора  
от 
9H  до  BH  (для  286  -  от  1  до  3).  Использование  селектор
а, 
ссылающегося на занятый TSS, вызывает прерывание 13. 
     Бит 17 (VM)  используется  для  указания  о  том,  что  зада
ча 
выполняется  в  режиме  виртуального  8086.  Если VM = 1, то зада
чи 
используют механизм адресации RM. Среда виртуального 8086 создает
ся 
     
 
                                     - 58 -
           
           
или  разрушается  только  при переключении задачи (см. раздел 4.6
). 
Состояние   сопроцессоров   автоматически   не   сохраняется    п
ри 
переключении задач, так как вызываемая задача может не использова
ть 
сопроцессор. 
     Бит переключения задачи TS (бит 3  в  регистре  CRO)  помога
ет 
решать  вопрос  с  состоянием  сопроцессора  в многозадачной сред
е. 
Переключая  задачу  386  устанавливает  TS  бит.  386   определяе
т 
вначале, используются ли во включенной задаче команды сопроцессор
ов 
и укажет на их недопустимость прерыванием 7. Подпрограмма обработ
ки 
прерывания  7  затем  решает,  каким  образом  сохранить  состоян
ие 
сопроцессора. 
     Прерывание 7 не  будет  формироваться  при  выполнении  кома
нд 
ESCAPE   или  WAIT,  если  биты  TS  и  MP  (наличия  сопроцессор
а) 
установлены в 1. 
     T  бит  в  TSS  указывает  на  то,  что 386 должен формирова
ть
прерывание в режиме отладки при переключении задач.
     При T = 1 при входе в новую задачу формируется прерывание 1.
     
     
               4.4.7.Инициализация и переход к режиму РМ
     Поскольку   386   начинает   функционировать   в   режиме   
RM 
непосредственно   после   сброса,  то  необходимо  инициализирова
ть 
(заполнить)   системные   таблицы   и   регистры   соответствующи
ми
величинами. 
     GDT и IDT регистры должны указывать правильные GDT и IDT.  I
DT 
должна  быть  длиной  не  менее  256 байтов, а GDT должна содержа
ть 
дескрипторы  для  начальных  сегментов  кодов  и  данных.  Рис.4-
17 
показывает  таблицы,  а  рис.4-18  -  дескрипторы,  необходимые д
ля 
типовой системы на 386 в режиме РМ. На рисунках показаны по  одно
му 
сегменту  кодов  и данных/стека с размером 4 Гбайт каждый и уровн
ем 
привилегированности PL = 0. 
     Основной метод включения РМ режима - загрузка CRO с установк
ой
бита PE при помощи команд MOV CRO, R/M.
     После   включения   режима   РМ   должна   следовать   коман
да 
межсегментного  перехода JMP, загружающая CS регистр и запоминающ
ая 
очередь дешифрируемых команд  (завершающий).  Окончательный  шаг 
 - 
загрузка  всех  сегментов  регистров  данных  величинами  начальн
ых 
селекторов. 
     Другой  подход включения режима РМ, специально предназначенн
ый 
для многозадачных ОС, заключается во введении в переключатель зад
ач 
загрузку всех регистров. 
     В этом случае  GDT  будет  содержать  два  TSS  дескриптора 
 в
дополнение  к  дескрипторам  кода  и  данных,  требуемых для перв
ой
задачи.
     Первая команда JMP в режиме РМ будет переходить к TSS, вызыв
ая 
переключение задачи и загружая все регистры величинами, хранимыми
 в 
TSS.  Регистр  TSS  должен  быть  установлен   в   соответствии  
 с 
дескриптором  действующего TSS, т.к. переключатель задачи сохраня
ет 
состояние текущей задачи в TSS. 
     
                                     - 60 -
           
           
              4.4.8.Средства  для  построения   защищенных  систе
м 
     
     Для    того,   чтобы   упростить   проектирование   защищенн
ых 
многозадачных систем, фирма Intel предоставляет  средство,  котор
ое 
обеспечивает  разработчику  системы простой метод создания структ
ур 
данных, необходимых для систем на основе 80386, работающих в режи
ме 
РМ.  Этот  -  BLD-386. BLD-386 позволяет разработчику ОС определи
ть 
все дескрипторы сегментов, обсуждавшиеся в  предыдущих  разделах 
 с 
помощью языков высокого уровня. 
     
     
                    4.5.СТРАНИЧНАЯ АДРЕСАЦИЯ
          4.5.1. Принципы страничной адресации
     
     Страничная адресация - альтернативный тип управления  память
ю,
полезный для виртуальной памяти многозадачных ОС.
     В отличие от сегментации, которая разделяет программы и данн
ые 
на  сегменты  произвольной  длины,   страничная   адресация   дел
ит 
программы на множество страниц одинакового размера. 
     Страницы   не  имеют  прямой  связи  с  логической  структур
ой 
программ.   В   то   время,   как   сегментные   селекторы    мог
ут 
рассматриваться   как   логические  "имена" программных  модулей 
 и 
стркутур  данных,  страница  указывает  только  часть  модуля   и
ли 
структуры  данных.  Преимуществом  страничной  организации являет
ся 
возможность хранения в основной памяти только небольшого количест
ва 
страниц, требуемых для каждой активизируемой задачи. 
     
          4.5.2.Страничная организация
     
          4.5.2.1.Страничный механизм
     
     80386    использует    два    уровня   таблиц,   преобразующ
их 
исполнительный адрес (с  выхода  блока  сегментации)  в  физическ
ий 
адрес. В 80386 используются три компонента страничного механизма:
     страничная директория;
     таблицы страниц;
     собственно страница (страничный кадр).
     
     Страницы  имеют  единый  размер  -  4  Кбайта.  Единый  разм
ер 
страницы  упрощает   управление   памятью   и   устраняет   явлен
ие 
фрагментации.
     На   рис.4-19   показано,  как  работает  механизм  страничн
ой
     адресации. 
     
                 4.5.2.2.Регистр базы дескриптора страниц
     
     CR2 -  регистр  ошибки  исполнительного  адреса  страницы.  
     CR3  -  регистр базы физического адреса директории страниц. 
Он 
хранит начальный физический адрес директории  страниц.  Младшие  
12 
бит  CR3  всегда  в 0, что для директории страниц всегда определя
ет 
размер страниц. 
     При помощи команды MOV CR3, reg можно заполнять КЭШ  входов 
 в 
таблицу  страниц при переключении задач через TSS, которая изменя
ет 
величину CRO (см. 4.5.4). 
     
                                     - 62 -
                
           
                 4.5.2.3.Страничная директория
     Страничная директория размером 4 Кбайта позволяет  иметь  10
24 
входа  в  директорию  страниц.  Каждый  вход  страничной директор
ии 
содержит  адрес  таблиц  следующего  уровня,  таблицы   страниц  
 и 
информацию   о   таблице   страниц.   Содержимое  входа  (элемент
а) 
директории показано на рис.4-20. 
     
     Старшие   10   бит   исполнительного   адреса   (А   22...А3
1) 
используются   как   индекс  для  определения  требуемого  элемен
та 
директории страниц. 
     
                    4.5.2.4.Таблицы страниц
     
     Каждая  таблица  страниц  объемом 4 Кбайт хранит 1024 элемен
та
таблицы.  Элементы  таблицы  страниц   содержат   начальный   адр
ес
страничного кадра  и  статистическую  информацию  о  странице  (с
м.
рис.4-21).
     
     Адресные биты А 12...А21 являются индексом,  указывающим  од
ин 
из  1024  элементов  таблицы  страниц.  Старшие  20 разрядов адре
са 
страничного   кадра   объединяются   с   младшими   12    разряда
ми 
исполнительного адреса и образуют физический адрес. Таблицы стран
иц 
могут быть  использованы  несколькими  задачами  и  обмениваться 
 с 
дисками. 
     
               4.5.2.5.Элементы страничных директорий/таблиц
     
     Младшие   12  бит  элементов  страничных  таблиц  и  элемент
ов
директорий  содержат  статистическую  информацию  о   страницах  
 и
страничных таблицах соответственно.
     Если бит представлен P=0, то элемент таблицы или директории 
не 
может быть  использован  для  преобразования  адреса  (если  P=1 
 - 
наоборот).  "Р"  и  все  другие  биты  доступны  для  использован
ия 
программным  обеспечением.  Например,  оставшиеся  31   бит   мог
ут 
использоваться для указания, где на диске храниться страница. 
     Бит доступа  (А)  устанавливается  80386  для  всех  типов
элементов  перед  доступом  по  записи  или  считыванию  по адрес
у,
сопряженному с этим элементом. Бит занятости (D)  устанавливается
в  1  перед  записью  по  адресу  соответствующему элементу табли
цы
страниц.                          -------------------------------
     D  бит не определяется для элементов директории страниц. Ког
да 
биты P, A, D модифицируются (изменяются) 80386, процессор формиру
ет 
цикл  "чтение  -  модификация  -  запись", который блокирует шину
 и 
устраняет конфликты с другими активными абонентами шины. 
     Программное обеспечение, которое модифицирует эти биты, долж
но 
использовать префикс LOCK для гарантирования целостности страничн
ых 
таблиц  в  многопользовательских  системах.  3  бита, помеченные 
OS 
RESERVED на рис.4-20 и  4-21  (биты  9...11)  определяются  ПО.  
ОС 
свободно   используют   для  различных  целей  по  своему  желани
ю. 
Например, использовать OS RES биты для  запоминания  информации  
об 
использовании  (устаревании)  страниц.  Имея  информацию о том, к
ак 
долго страница находится в памяти, ОС может  использовать  алгори
тм 
перемещения страниц подобно алгоритму " Замена наименее использ."
. 
                
                                     - 64 -
           
           
     Бит    2   U/S   (пользователь/супервизор)   и   бит   1   R
/W 
(чтение/запись)  используются  как   атрибуты   защиты   конкретн
ых 
страниц. 
     
             4.5.3.Защита на страничном уровне
                   (Биты R/W и U/S)
     80386  обеспечивает  атрибуты  защиты для систем со страничн
ой 
организацией. Механизм страничной адресации  различает  два  уров
ня 
защиты:   пользователь,  который  соответствует  уровню  3  защит
ы, 
основанной на сегментировании, и супервизор, который  включает  в
се 
остальные  уровни  защиты  (0,  1,  2).  Программы,  выполняемые 
на 
уровнях 0, 1. 2, обходят защиту страниц, хотя защита, основанная 
на 
сегментировании, все - таки поддерживается аппаратурно. 
     Биты   U/S   и   R/W   используется   для  обеспечения  защи
ты
пользователь/супервизор и чтение/запись для конкретных страниц  и
ли
всех страниц, указываемых элементом директории таблиц страниц.
     Биты  U/S  и  R/W на втором уровне элемента страничной табли
цы
используются для описания страниц, относящихся к данному элементу
     На первом уровне таблицы директорий страниц  биты  U/S  и  R
/W
описывают   все   страничные  таблицы,   соответствующие   элемен
ту
директории. 
     Биты  U/S  и  R/S  данной  страницы,  полученные  из элемент
ов 
директории страничных таблиц, используются в  качестве  ограничен
ий 
при адресации к странице. 
     Например, если U/S и R/W биты для элемента директории  стран
иц
-  10,  а  эти  же биты для элемента таблицы страниц - 01, то пра
ва
доступа к страницы будут 01, т. е. наименьшее из двух.
     Таблица.4-4  показывает  влияние битов U/S и R/W на адресуем
ую
память.
     Однако  данный  сегмент  может  быть  легко  переведен в реж
им 
только считывания (запрет записи) для уровней 0,  1,  2,  благода
ря 
использованию механизмов защиты сегментации (см. табл.4-4). 
     
           4.5.4.Буфер предварительного преобразования TLB
     
     Аппаратура  страничной адресации 80386 спроектирована с учет
ом 
требований систем  виртуальной  памяти  со  страничной  адресацие
й. 
Однако,  производительность будет сильно снижаться, если процессо
ру 
будет требоваться доступ к двум уровням таблиц при каждом обращен
ии 
к  памяти.  Решение этой проблемы заключается в ведении в процесс
ор 
КЭШ - ЗУ для наиболее часто используемых страниц (TLB). 
     TLB - это  4-х  входовой  набор  ассоциативных  регистров  д
ля 
хранения  32-х  элементных  страниц.  TLB автоматически подкачива
ет 
большинство требуемых элементов страничных таблиц в процессор. 
     32-х элементная TLB может одновременно  адресовать  128  Кба
йт 
памяти   (страница   размером  4  Кбайт  на  каждый  элемент).  Д
ля 
большинства  многозадачных  систем  коэффициент  попадания  98   
%. 
Рис.4-22   иллюстрирует,  как  TLB  реализует  механизм  страничн
ой 
адресации в 80386. 
                                     - 66 -
                
           
                4.5.5.Работа блока страничной адресации
           
     
     Работа   осуществляется  следующим  образом.  Блок  страничн
ой 
адресации принимает  32-х битовый  исполнительный  адрес  из  бло
ка 
сегментации.    Старшие    20   разрядов   исполнительного   адре
са 
сравнивается  со  всеми  32-мя  элементами  TLB.  Если  наблюдает
ся 
попадание   в   TLB  (имеется  соответствующий  элемент),  то  32
-х 
разрядный физический адрес формируется и выдается на адресную шин
у. 
     Если элемент таблицы  страниц  отсутствует  в  TLB,  то  803
86 
предварительно обращается к элементу директории страниц. Если Р=1
 в 
элементе страничной директории, что указывает  на  наличие  табли
цы 
страниц в памяти, то 80386 предварительно считывает элемент табли
цы 
страниц и устанавливает бит доступа (A). Если в элементе страничн
ой 
таблицы  Р=1,  что указывает на наличие страницы в памяти, то 803
86 
устанавливает биты A и D так, как требуется, и  производит  выбор
ку 
операнда. 
     Старшие  20  бит исполнительного адреса считываются из табли
цы 
страниц и запоминаются в TLB для  постоянного  использования.  Ес
ли 
для  элемента страничной директории или элемента страничной табли
цы 
Р=0,  то  процессор  формирует  ошибку  страницы  (Прерывание  14
). 
Процессор также будет формировать прерывание 14, если при обращен
ии 
к памяти нарушаются атрибуты защиты U/S и R/W (например,  запись 
 в 
страницу,   разрешенную   только   для   считывания).   CR2  хран
ит 
исполнительный адрес, который вызывает ошибку страничной адресаци
и. 
При  возникновении  прерывания  14 CS: EIP будет указывать команд
у,
вызвающую ошибку страничной адресации.
     16-ти   битовый   код   ошибки    сохраняется  в    стеке  д
ля
подпрограммы обслуживания ошибки и включает  биты,  указывающие  
на
причину, вызвавшую ошибку. 
     16-ти битовый код ошибки используется ОС для определения пут
ей 
исправления  ошибки.  Рис.4-23  А   показывает формат кода ошибки
 и 
интерпретацию его битов. 
                    Замечание
     Каждый   из   бит   кода  ошибки  U/S,  W/R,  P  имеют  имен
а, 
соответствующие   названиям    аналогичным    бит    в    элемент
ах 
директории/таблицы  страниц,  но  интерпретируются биты кода ошиб
ки 
по-разному. Рис.4-23 В показывает, какой  тип  доступа  [к  памят
и] 
вызывает ошибку страничной адресации. 
     U/S. Этот бит указывает, в каком режиме находился процессор:
 в 
пользовательском  (U/S=1)  или  в  режиме  супервизора  (U/S=0) п
ри 
возникновении ошибки. 
     W/R. Этот бит указывает, возникла ли ошибка при чтении (W/R=
0)
или записи (W/R=1).
     P. Этот  бит  указывает,  возникла  ли  ошибка  по  отсутств
ию
страницы  (Р=0)  или нарушены правила защиты (Р=1).U не определен
ы.
     
     4.5.6.Обязанности операционной системы
     
     80386  заботится  о   процессе   трансляции   адресов   блок
ом
страничной  адресации,  разгружая  ОС  от  этого. ОС вызывается п
ри
     
                                     - 68 -
           
           
начальной загрузке таблицы страниц и  управляет  обработкой  ошиб
ок 
страничной  адресации.  ОС  также  требуется при недействительнос
ти 
(очистке) TLB, когда делаются  любые  изменения  в  любом  элемен
те 
страничной таблицы. 
     ОС  должна  перезагружать CR3 при очистке TLB. Переопределен
ие 
таблиц  -  просто  процесс  перезагрузки  CR3  адресом   страничн
ой 
директории   и   перемещение   пространства   (области)  страничн
ой 
директории и страничных таблиц. 
     Основная ответственность ОС - реализация стратегии подкачки 
 и 
управление   обработкой   всех   сбойных  ситуаций  при  страничн
ой 
адресации. Главная забота ОС - гарантировать, что информация в КЭ
Ше 
TLB  соответствует  информации  в страничных таблицах. В частност
и, 
установка бита представления Р в ноль в любой момент времени долж
на 
указывать  ОС на необходимость обновления. ОС может использовать 
то 
преимущество,  что  CR3  запоминается  (хранится)  как  часть   T
SS 
конкретной  задачи  или  группы  задач,  имеющих  собственный наб
ор 
страничных таблиц. 
     
              4.6. ВИРТУАЛЬНАЯ СРЕДА 8086
     
            4.6.1.Выполнение программ 8086
     
     80386 обеспечивает выполнение прикладных программ 8086  как 
 в 
режиме  реальной  адресации  (RM),  так и в виртуальном режиме 80
86 
(VM). Из этих двух методов - VM - обеспечивает разработчику систе
мы 
большую гибкость. 
     В частности, 80386 обеспечивает непосредственное выполнение 
ОС 
и  пользовательских  программ  для  8086,  ОС  и   пользовательск
их 
программ для 80286 и 80386. 
     Таким  образом,  в  многопользовательском компьютере на осно
ве
80386, один  пользователь  может  работать  с  MS-DOS  spreadshee
t,
другой - с MS-DOS, а третий - с утилитами и прикладными программа
ми
UNIX.
     При   этом,   у   каждого   пользователя   создается   иллюз
ия
монопольного владения ЭВМ.
     Рис.4-24 иллюстрирует этот принцип.
     
            4.6.2 Механизм адресации режима VM 8086.
  
     Одно   из   главных  отличий  RM  и  PM  режимов  8086  -  к
ак
интерпретируются адресные селекторы.
     Когда процессор  работает  в  режиме  VM  8086, его сегментн
ые
регистры используются идентично режиму RM.
     Содержимое  сегментного  регистра  сдвигается  влево  на  4 
 и
складывается со смещением, образуя исполнительный адрес.
     80386 позволяет самой ОС определить какие программы использу
ют
механизм адресации как у 8086, а какие - адресацию режима PM.
     При  помощи  (благодаря)  страничной  адресации,  пространст
во
адресов в 1 Мбайт задачи,  исполняемой  в  VM  режиме,  может  бы
ть
размещено  в  любом месте 4-х Гбайтного пространства исполнительн
ых
адресов 80386.
     Подобно RM режиму, в VM  режиме  адреса  превышающие  1  Мба
йт
будут вызывать прерывание 13.
     Однако  эти  ограничения  не  должны  быть очень важными, т.
к.
большинство задач решаемых в VM 8086 режиме задач проще этого - о
ни
преемницы пользовательских программ 8086.
     
                                     - 70 -
           
           
     
             4.6.3 Страничная адресация в VM режиме.
     Аппаратура  страничной адресации разрешает параллельную рабо
ту
нескольких задач в VM режиме и обеспечивает защиту и  независимос
ть
их операционных систем.
     Хотя   нет   обязательной   необходимости   использовать   э
ту
аппаратуру  в   режиме   VM,   это   необходимо   для   обеспечен
ия
одновременного  выполнения  нескольких  задач  или  для перемещен
ия
пространства адресов задачи в физическом пространстве адресов свы
ше
1 Мбайта.
     Аппаратура   страничной   адресации  позволяет  20-ти  битов
ые
исполнительные адреса VM программ разделить на 256 страниц.  Кажд
ая
из  этих страниц может быть произвольно размещена в любом месте 4
-х
Гбайтного пространства физических адресов 80386.
     Кроме того, т.к.  CR3  (регистр  базы  страничной  директори
и)
загружается  при  переключении  задач, то каждая задача в VM режи
ме
может  использовать  свою  схему  размещения  страниц  в  различн
ых
пространствах физической памяти.
     В   довершение   ко  всему,  аппаратура  страничной  адресац
ии
позволяет  разделять  коды   (программы)   ОС   между   нескольки
ми
прикладными программами 8086.
     Рис.4-24  показывает как аппаратура страничной адресации 803
86
подключает  несколько  программ  8086   под   управлением   систе
мы
страничной адресации виртуальной памяти.
     
     
                           4.6.4 Защита
     Все  программы  в  режиме  VM выполняются на привилигированн
ом
уровне 3. Для VM режима выполняются все проверки,  характерные  д
ля
PM режима.
     В этом заключается отличие от RM режима, который безоговороч
но
выполняется на  привилегированном  уровне  0.  Поэтому,  стремлен
ие
выполнить  привилегированную  команду в VM режиме будем приводить
 к
возникновению ошибки защиты (прерывание 13).
     Несколько команд чувствительны к IOPL, поэтому ОС может реша
ть
выполнять  ли команды ввода-вывода (I/O), устанавливая IOPL=0, ли
бо
выполнять эти команды обычным образом при IOPL=3.
     Т.К.   в   RM   режиме   программы   всегда   выполняются   
на
привилегированном   уровне   0,   то   ошибок  при  получении  IO
PL
чувствительных команд не формируется.
     Некоторые команды  используемые  только  в  режиме  PM,  буд
ут
неопределенными (с точки зрения КОПа) в режимах RM и VM.
     В  режимах  RM  и  VM  прерывание  6  будет вызывать следующ
ие
команды:
     ARPL, LAR, LSL, VERR, VERW, STR, LTR, SLDT и LLDT.
     
     Ниже следуют привилегированные команды. Они могут  выполнять
ся
в  RM режиме, но будут вызывать прерывание 13 (ошибка общей защит
ы)
в VM режиме или, если CPL>0.
     LIDT, LGDT, LMSW, CTS, HLT, MOV, DRn, REG;
     MOV REG, DRn; MOV CRn, REG; MOV REG, CRn;
     MOV TRn, REG; MOV REG, TRn.
     
     Ниже приведенные команды формируют прерывание 13 (ошибка общ
ей
защиты), когда CPL>IOPL.
     INS, IN, OUTS, OUT, STI, CLI, LOCK.
     
                                     - 71 -
                
           
     Команды  INTn,  PUSH F, POP F, IRET становятся чувствительны
ми
IOPL только, когда процессор работает в  режиме  VM  (заметим,  ч
то
клманды INT3 и INT0 являются исключением из этого правила).
     
     
                  4.6.5 Управление прерываниями
     
     Для  обеспечения  полной  совместимости  с  машинами на осно
ве
8086, прерывания в VM режиме обслуживаются своеобразно. При  рабо
те
МП в режиме VM все прерывания и особые ситуации вызывают главную 
ОС
80386. ОС 80386 определяет поступило ли прерывание из PM режима и
ли
из VM режима, анализируя бит VM в копии регистра признаков (EFLAG
),
хранимой в стеке.
     Когда прерывается программа в режиме VM, происходит переход 
 к
программе обработки прерывания уровня 0 и VM бит сбрасывается. В 
то
же время, этот бит остается равным 1 в копии  содержимого  регист
ра
признаков, хранимой в стеке.
     ОС  80386  управляет обработкой прерываний и особых ситуаций
 и
возвращает управление программе 8086. 
     ОС  80386  может  выбрать:  передать  ли управление обработк
ой
прерывания ОС 8086 или эмулировать  эту  обработку  самостоятельн
о.
Например, многие ОС для 8086 вызывают командой PUSH ввод параметр
ов
в стек и затем выполняют команду INTn.
     Если IOPL=0, то команды INTn будут обращаться к ОС 80386.
     ОС 80386 может эмулировать системные вызрвы ОС 8086.  Рис.4-
25
показывает, как ОС 80386 может воспринимать вызов "открыть файл" 
ОС
8086.
     ОС  80386  может  обеспечивать  окружение  виртуального  808
6,
благодаря, восприятию и последующей интерпретации вызовов ОС 8086
 и
восприятия команд IN и OUT.
     
     
           4.6.6 Инициализация и прекращение режима VM 8086
     
     Задача  режима VM инициализируется формированием крманд CALL
 и 
JUMP к TSS, который  имеет  VM  бит  установленным  в  1  (в  коп
ии 
EFLAGS). 
     При выходе из  подпрограммы  обработки  прерывания  на  уров
не
[привилегированность]  0 установка VM бита также вызывает возврат
 к
VM режиму.
     Первый метод используется для начала выполнения  задачи  в  
VM
режиме,   тогда   как   второй   -  для  возврата  из  подпрограм
мы
обслуживания прерывания в режиме VM.
     Переходы в и из VM  режима  сопровождаются  изменением  уров
ня
[привилегированного]  и  переключением  стека. Кроме того, значен
ия
сегментных регистров убираются в стек и затем загружаются  нулевы
ми
селекторами.
     Это позволяет подпрограммам обработки прерываний обслуживать
 и
перезапоминать сегментные регистры,  как  селекторы  80286,  взам
ен
вида сегментных регистров 8086.
     Прерывающие  программы, которым необходимы значения сегментн
ых
регистров будут иметь доступ к значениям (для их  просмотра)  чер
ез
стек.
     Прекращение   (выход  из)  режима  VM  соответствует  просто
му
переходу JUMP к TSS (на уровне 0), который не имеет  VM=1.  В  эт
ом
случае происходит переключение задачи. 
     


Яндекс цитирования