АРХИТЕКТУРА МИКРОПРОЦЕССОРОВ ИНТЕЛ 8086/8088, 80286, 80386 3.1. Микропроцессор 8086/8088 Микропроцессор (МП) 8086/8088 выпущен в 1978 году и был первым МП с 16разрядными данными. МП 8086/8088 имеет длину слова 16 бит, адресное пространство памяти 1 Мбайт, 16-разрядную шину данных (8-разрядную для МП 8088), 20-разрядную шину адреса, сегментную организацию памяти. Функционально микросхема разделена на два независимых блока. дин из них называется блоком сопряжения с магистралью (рис.1.3) (Bus interface unit BIU),другой блок называется исполнительным (Execution unit EU). Блок сопряжения с магистралью выполняет две функции: - выборка команд из памяти; - пересылка данных между исполнительной аппаратурой и внешним миром. Рис.3.1. Архитектура МП 8086/8088 В исполнительном блоке происходит выполнение команды. BIU содержит указатель команд (IP), в котором хранится адрес очередной выбираемой команды, байтовая очередь потока команд и регистры сегментов. Регистры сегментов МП 8086/8088 содержат 16 разрядов и носят название CS (code segment – сегмент программы), DS (date segment сегмент данных), SS (stack segment – сегмент стека) и ES (extra segment – дополнительный сегмент). Блоки BIU и EU работают независимо. Блок BIU осуществляет выборку команд и пересылку данных, а EU выполняет выбранные команды. Такое разделение функций стало возможным за счет использования конвейера (очереди) команд. Блок сопряжения с магистралью заполняет конвейер командами, ожидающими выполнения. В то время как исполнительный блок заканчивает выполнение текущей команды, следующая команда уже подготовлена для выполнения. В случае перехода конвейер сбрасывается. Конвейер BIU в МП 8086 хранит до 6 байт, а 8088- до 4 байт потока команд. Исполнительный блок не имеет связи с системной магистралью. ЕU получает команда из очереди. Если команда требует обращения к памяти или внешней магистрали, EU посылает запрос ВIU на выборку или запись данных. Адреса, с которыми оперирует EU имеет 16 разрядов, но BIU выполняет преобразование адресов так, чтобы EU мог обратиться ко всему возможному адресному пространству (1Мбайт) памяти. Исполнительный блок состоит из 16-разрядного арифметико-логического устройства (АЛУ), регистров, операндов и флагов, а также набора регистров общего назначения АН, АL, ВН, BL, СН, CL, DН, DL. Регистры АН и AL объединяются в регистраккумулятор АХ; ВН и BL образуют регистр базы ВХ; СН и CL образуют регистр-счетчик СХ. DН и DL образуют регистр данных DX. К регистрам общего назначения можно адресоваться как к 8- или 16-разрядным. Это позволяет программам для 8-разрядного МП 8080 выполняться на МП 8086/8088 после повторной трансляции. МП 8086/8088 может адресовать до 1 Мбайта памяти (1048576 байт). Каждому адресу назначен уникальный адрес (беззнаковое число от 0 до 2020- 1 (от 00 000 до FFFFF в шестнадцатеричной системе счисления). Два соседних байта в памяти образуют слово. За адрес слова принимается меньший из двух адресов байтов, слово состоит из 16 бит. Младшие биты слова содержатся в адресе байта с меньшим адресом, а старшие биты слова - в байте со старшим адресом. В МП-8086 обмен данными между процессором и памятью осуществляется словами, начинающимися с адресов, кратных двум. Кроме байт и слов МП 8086/8088 оперирует следующими дополнительными типами данных: 1. Неупакованный двоично-десятичный тип - байтовое представление .десятичной цифры от 0 до 9. В каждом байте хранится по одной цифре. Значение цифры определяется младшим полубайтом. Старший полубайт равен 0 при делении и умножении и принимает любое значение при вычитании и сложении. 2. Ближний указатель - 16-разрядный логический адрес, который представляет собой относительный адрес внутри сегмента. 3. Дальний указатель-- 32-разрядный логический адрес из двух компонентов 16-разрядного сегмента и 16-разрядного относительного адреса. 4. Целый тип - знаковое двоичное значение, содержащееся в 16-разрядном слове или 8-разрядном байте. Все операции выполняются в дополнительном коде. Бит знака расположен в бите 7 байта и в бите 15 слова. Знаковый бит равен 0 для положительного слова и в равен 1 - для отрицательного. Для 8-разрядных целых чисел диапазон изменения от 128 до +127,. а 16-разрядных в диапазоне от -32768 до +32767. Нулевое значение имеет положительный знак. 5. Обычный (беззнаковый) тип -беззнаковое двоичное значение содержащееся в 16-разрядном слове или 8-разрядном байте. Все биты определяют величину числа. Значение для байта составляет от 0 до 255, для слова - от 0 до 65535. 6. Строка - непрерывная последовательность байт или слов. Строка может содержать от 0 до 216 - 1 байт или 64 Кбайта. Память МП 8086/8088 состоит из произвольного числа сегментов, каждый из которых содержит. 64К последовательных байта. С помощью сегмента производится адресация памяти при преобразований 16- или 32-разрядного логического адреса в 20-разрядный физический адрес. Любой сегмент памяти начинается с адреса, кратного 16. Для доступа к требуемому сегменту используются сегментные регистры. МП 8086/8088 в каждый конкретный момент может непосредственно адресовать содержимое четырех сегментов: сегмента программы, сегмента данных, сегмента стека и дополнительного сегмента данных, которые могут перекрывать друг друга. Для адресации байта или слова в сегменте 16-разрядный относительный адрес, часто называемый исполнительным (эффективным) адресом (ЕА), используется вместе с содержимым регистра сегмента. Программист указывает в программе название сегментного регистра, и обозначение этого регистра включается в саму команду. Физический адрес МП 8086/8088 образуется из относительного адреса и содержимого указанного регистра сегмента. Для этого адрес сегмента сдвигается влево на четыре разряда, а в четыре младших разряда записываются нули.(рис.3.2). Рис. 3.2. Формирование адресов байта или слова К полученному таким образом 20-разрядному числу прибавляется относительный адрес, в результате чего формируется действительный физический адрес. При сложении содержимого сегментного регистра со смещением переполнение игнорируется. В результате сложения получается физический 20-битный адрес байта или- слова. На рис.3.3 представлено распределение памяти при инициализации. Шестнадцать старших байт памяти (начиная с FFFFOH) отводятся под команды начальной загрузки, которые используются процессором, в момент включения питания. Первые 1024 байта отведены под адреса программ обработки прерываний. В МП 8080 (аналог КР 580) используются первые 64 байта под адреса программ обработки прерываний. Под процессом инициализации МП 8086/8088 понимается состояние процессора после включения питания или сигнала "сброс". Адрес первой выполняемой команды после включения питания или сигнала "Сброс" определяется начальным значением регистров МП 8086/8088 (см.рис.3.3). Рис.3.3. Адресное пространство МП 8086/8080 при инициализации В качестве внешних регистров в МП 8086/8088 используются ячейки памяти объемом в 1 Мбайт и 216 (64 Кбайта, 65535) 8-битовых портов. Каждому порту, который предназначен для взаимодействия с внешним миром, присвоен уникальный адрес из диапазона от 0 до 216- 1. На рис.3.4 представлены регистры МП 8086/8088. Микропроцессор имеет 13 16битных регистров и 9 1-битных флагов. Биты флагов объединены в 1 регистр, называемый регистром флагов (регистр состояния). Условно регистры можно разделить на четыре группы. v К первой группе относятся четыре регистра общего назначения (РОН). Ко второй группе относятся четыре указательных и индексных регистра. К третьей относятся четыре сегментных регистра. К четвертой группе относятся не доступные для программиста указатель команды и регистр флагов. В МП 8080 (КР 580) программный счетчик (PC) соответствует указателю команды МП 8086/8088. Регистры общего назначения используются в арифметических и логических операциях для хранения промежуточных результатов. РОН можно использовать либо отдельно как два 8-битных регистра, либо совместно (как один 16-битный регистр). Каждой половинке РОН даны свои названия: младшие (LOW) AL, BL, CL и DL и старшие (High), которым в свою очередь даны названия АН, ВН, СH и DH. В некоторых командах функции РОНов специализированы. Регистр АХ . аккумулятор (accumulator) - используется при умножении и делении слов, в операциях ввода-вывода и в некоторых операциях над строками. Регистр AL используется в аналогичных операциях над байтами, при преобразовании десятичных чисел и при выполнении над ними арифметических операций. Регистр ВХ - базовый регистр (base register) -необходим при адресации данных в памяти. Регистр СХ - счетчик (count register) применяется для подсчета числа повторений цикла и в качестве номера позиции элемента данных при операциях над строками. Рис.3.4. Регистры и флаги МП 8086/8088 Регистр CL служит счетчиком при операциях сдвига и циклического сдвига на несколько бит. Регистр DX - регистр данных (data register) применяется при умножении и делении слов. Кроме того, в операциях ввода-вывода он используется как номер порта. Ко второй группе регистров МП 8086/8088 относятся указательные и индексные регистры (см.рис.3.4) К ним относятся 16-битные регистры SP, BP, SI, DI, которые обычно содержат внутрисегментные смещения. Содержимое этих сегментов может участвовать в арифметических и логических операциях на ряду с 16-битными регистрами. Указательные регистры SP и DP используются для записи адресного смещения по отношению к стековому сегменту, а индексные реестры SI и DI - для адресного смещения по отношению к сегменту данных.. Есть некоторая специфика использования указательных регистров SP и ВР в командах PUSH и POP. Так, смещение верхнего элемента стека берется из регистраSP (указателя стека). Использовать для этой цели указатель базы ВР нельзя. Функции регистров SI и DI в строковых командах изменить нельзя, SI - это регистр индекса источника, а DI - регистр индекса приемника. К третьей группе регистров МП 8086/8088 относятся сегментные регистры (см.рис.3.4). Они используются для задания текущих сегментов и обозначаются СS, DS, SS и ES. Каждый регистр обозначает конкретный текущий сегмент и функции их совершенно различны. , Регистр сегмента программы (CS) указывает на сегмент, который содержит текущую последовательность используемых команд. Процессор выбирает все команды из этого сегмента, используя содержимое указателя команд IP как относительный адрес. Содержимое регистра CS может быть изменено в результате выполнения команд переходов, прерывания и исключений, он не может быть загружен явным способом. Регистр сегмента стека (SS) предназначен для вызова подпрограммы, передачи параметров и активизации процедур, которые обычно требуют области памяти, резервируемые под стек. В отличие от CS регистр SS загружается явно с использованием команды программы. Регистр сегмента данных (DS) и регистр дополнительного сегмента (ES) используются для адресации данных текущей исполняемой программой. Содержимое этих регистров загружается явным способом. Сегмент, из которого извлекается операнд, может быть указан в форме команды специальным однобайтным префиксом. Он указывает, из какого текущего сегмента считывается операнд. При отсутствии префикса в формате команды операнд извлекается из текущего сегмента данных, но здесь возможны два случая: 1. Если в вычислении смещения участвует указательный регистр, то используется текущий сегмент стека. 2. В случае операнда-приемника строковой команды используется дополнительный сегмент. К четвертому набору регистров МП 8086/8088 относятся регистр указателя команды и регистр флагов. '1 Указатель команды (instruction pointer, IP) - 16-битовый регистр. Он содержит смещение следующей выполняемой команды в текущем сегменте кода CS, указатель команды непосредственно не доступен программисту, но он может явно управляться командами управления переходов, прерываниями и исключениями. Указатель флагов - 16-разрядный регистр FLAGS - содержит 9 флагов, которые применяются для регистрации состояния (6 флагов состояния) и управления действиями микропроцессора (3 флага управления) (рис.3.5): 1. Бит 0, флаг переноса CF (Carry flag) равен 1, если произошел перенос единицы при сложении или заем единицы при вычитании, в противном случае он сбрасывается. Кроме того, СF содержит значение бита, который при сдвиге или циклическом сдвиге регистра или ячейки памяти вышел за их границы. CF служит также индикатором результата умножения. 2. Бит 2, флаг четности PF (parity flag) paвен 1, если в результате операции получен байт в регистре АL с четным числом единиц в его битах. В противном случае он равен 0. Флаг PF в основном используется в операциях обмена. Рис.3.5. Регистр флагов МП 8086/8088 3. Бит 4. вспомогательный флаг переноса AF (auxiliary Carry flag) аналогичен флагу CF , только фиксирует перенос или заем для третьего бита данных. 4. Бит 6, .флаг нуля- ZF (zero flag) равен 1, если в результате операции получен нуль, ненулевой результата приводит к сбросу ZF. " ' I 5. Бит 7, флаг знака SF (sign flag), имеет значение только при операциях над числами со знаком. Флаг SF равен 1, если в результате арифметической или логической опeрации, сдвига или циклического сдвига получено отрицательное число. В противном случае он равен 0. Он дублирует старший (знаковый) разряд результата независимо от того, имеет результат длину 8 или 16 бит. 6. Бит 8, флаг трассировки TF (trap flag), разрешает микропроцессору исполнять программу, по шагам и используется при отладке программы. 7. Бит 9; флаг прерывания IF (interrupt enable flag), разрешает МП реагировать на прерывания от внешних устройств. Если IF в 0, то МП будет игнорировать прерывания. 8. Бит 10, флаг направления DF (direction flag), заставляет МП уменьшать на единицу (DF = 1) или увеличивать на единицу (DF= 0) регистры индекса после выполнения строковой команды. 9. Бит 11, флаг переполнения OF (overflow flag) служит индикатором ошибок при выполнении операции над числами со знаком. Флаг OF равен 1, если результат сложения двух чисел с одинаковыми знаками или результат двух чисел с противоположными знаками выйдет за пределы доступного диапазона значений операндов. В противном случае он равен 0. При арифметическом сдвиге OF=1, тогда старший (знаковый) бит изменяется совместно с CF. Флаг указывает длину результата умножения. Для установки и сброса флагов используются специальные команды МП. *-■ В МП 8086/8088 программа может быть прервана по трем причинам: - периферийное устройство посылает сигнал прерывания в МП; - команда процессора вызывает исключение (особый случай); - программа выполняет команду INT прерывания. Каждой перечисленной причине прерывания назначен номер от 0 до 255. 3.2. Микропроцессор 80286 16-разрядный МП 80286 был выпущен в 1983 году и является модернизацией МП 8086. Этот микропроцессор относится к более сложным микропроцессорам. Основными преимуществами МП 80286 являются: эффективная зашита памяти, контролируемый доступ к ресурсам операционной системы, изолирование прикладных программ и малое, время реакций на прерывание. В МП 80286 используется конвейерный принцип выполнения команд с четырьмя уровнями конвейеризации, которые peaлизованы на четырех раздельных устройствах (рис.3.6). К ним относятся: адресное устройство (AU), шинное устройство (BU), исполнительное устройство (EU), командное устройство (IU). На рис.3.7 представлен принцип конвейеризации команд МП 80286, из которого видно, что в отдельные машинные циклы этапы выполнения команд совмещаются. Шинное устройство соединено с системной шиной (шина адреса, шина управления, шина данных) и осуществляет считывание памяти и портов вводавывода, передает информацию 6-байтной очереди команд в преобразователь IU со скоростью 1 байт на цикл тактовой частоты. Командное устройство IU декодирует и преобразует формат полных команд и помещает их в очередь команд (глубина 3 команды). Исполнительное устройство EU состоит из рабочих региcтров, арифметикологического устройства (АЛУ), микропрограммного ПЗУ, которое задает последовательность внутренних микрокоманд. Из рисунка видно, что как только текущая команда близка к завершению, ПЗУ вырабатывает сигнал и посылает его в очередь команд IU. Тот, в свою очередь, посылает очередную команду в исполнительное устройство. Адресное устройство производит преобразование адресов и одновременно контролирует права доступа. В этом устройстве находятся КЭШ-память, в которой содержится базовый адрес, Рис.3.6. Архитектура микропроцессора 80286 Рис.3.7. Конвейеризация команд МП 80286 предельное граничное значение и права доступа для сегментов виртуальной памяти. КЭШ-память предназначена для исключения до минимума считывания информации из основной памяти и позволяет устройству адресов выполнять свою функцию за один цикл тактовой частота. Кроме отмеченного, в архитектуре МП 80286 имеются и другие преимущества. Самым существенным из них является внутреннее устройство управления памятью (MMU). Типичным является случай, когда функции управления памятью выполнялись вне микропроцессора (рис.3.8). Для этих целей обычно была приспособлена внешняя плата, которая использовалась для операционной системы xenix(семейство 86/380 фирмы INTEL. Рис.3.8. Внутреннее управление памятью Благодаря внутренней MMU МП 80286 обладает двумя достоинствами: - не требует внешней платы, что повышает производительность доступа к памяти; Рис.3.9. Четыре уровня привилегий для каждой задачи МП 80286 - возможность внутренней MMU немного шире, позволяет ввести многозадачный режим и обладает механизмом защиты. Это, в свою очередь, обеспечивает аппаратную поддержку мультизадачности. Программные уровни в МП 80286 можно разделить на четыре уровня привилегий (рис.3.9). Поэтому можно работать на. одном уровне привилегий, когда программы находятся на одном уровне, и составлять сложные программы, которые находятся на четырех уровнях привилегий. Кроме того, все программы по назначению можно разделить на прикладные пользовательские задачи, задачу планировщика, задачу ввода-вывода и т.д. Программа может состоять как из одной задачи, так и из тысячи отдельных задач. Уровни привилегий и задач - главные возможности МП 80286. В связи с этим МП 80286 иногда называют суперкомпьютером, реализующим систему, типа UNIX или многооконное программное обеспечение без дополнительных схем для защиты или управления памятью. В любой момент времена МП выполняет некоторый код, называемый текущей задачей. Задача - это среда, в которой выполняется программа. Текущее состояние выполнения программы представляет собой текущее содержимое регистров. Среда задачи состоит из содержимого регистров микропроцессора и всего кода с данными в пространстве памяти, доступном из задачи. Пространство памяти всех задач МП 80286 можно представить в виде большого круга (верхняя часть, рис.3.10). Тогда пространство памяти отдельной задачи напоминает сектор. Этот сектор и текущее состояние регистров МП образует среду текущей задачи. Расширенная до 24 разрядов адресная шина позволяет адресовать до 16.Мбайт физической памяти, а использование средств управления виртуальной памятью расширяет это пространство до 1 млрд. байт (1 Гбайт). В виртуальном адресном пространстве задачи имеются различные объекты. Такие объекты называются сегментами пространства памяти и обозначаются как сегменты кода и сегменты данных. В любой момент времени код выполняется на определенном "уровне привилегий". Текущий уровень привилегий (CPL) просто равен уровню привилегий выполняемого сегмента кода (см.рис.3.9). Коду с низким уровнем привилегий не разрешается доступ к сегментам данных с более высоким уровнем привилегий. Сегменты кода в данных всегда имеют один из четырех уровней-привилегий. Уровень три привилегий (см.рис.3.9) отводится обычно прикладному коду, а уровни один, два и нуль заняты системными программами, причем, уровень нуль отводится под ядро операционной системы. На рис.3.10 представлена взаимосвязь двух режимов работы МП 80286: режим реальных адресов, называемый реальным режимом, и защищенный режим виртуального адреса. Режим реального адреса используется для выполнения программ МП 8086/8088 и подготовки МП в защищенном режиме. Программа МП 8086 - на уровне двоичного объектного кода, МП 80286 выполняет без изменений. Такой режим имитации поведения МП 8086/8088 или режим двоичной совместимости называется режимом реального адреса. Все адреса в этом режиме являются физическими или реальными адресами. Реальный режим устанавливается при подаче сигнала сброса или при включении питания. В режиме реального адреса не действуют: виртуальная память, мультизаданность и защита. В реальном режиме МП 80286 имеет такую же базовую архитектуру, что в МП 8086/8088. Рис.3.10.Взаимосвязь реального и виртуального режимов МП 80286 Система команд МП 80296 является подмножеством системы команд (см.рис.3.10) МП 8086, включая в себя несколько новых команд. Для формирования физического адреса в реальном режиме используются два компонента. Для определения базового адреса сегмента используется 16рззрядкый селектор. В селекторе сегмента 16-разрядное значение сдвигается влево на четыре разряда (т.е. умножается на 16) для формирования 20разрядного базового адреса сегмента. Исполнительный адрес (смещение) расширяется четырьмя старшими нулями для получения 20-разрядного значения и прибавляется к базовому адресу. При сложении переполнение игнорируется. Допустимыми типами данных в реальном режиме являются только знаковые и беззнаковые байты, знаковые и беззнаковые слова, 32-битные указатели и 8/16-битные смещения. Сопроцессор 80287 работает с числами с плавающей запятой. Прерывания и исключения в реальном режиме нарушают обычный порядок работы системы или программы. В реальном режиме таблица дескрипторов прерываний (IDT) МП 80286 представляет собой таблицу векторов реального прерывания 8086/8088 и занимает пространство от нулевого реального адреса до реального адреса I024 (4 байта на вектор прерывания с 256 возможными входами).' Единственным способом выхода из реального режима является явное переключение в защищенный режим виртуального адреса. В защищенный режим МП 80266 входит при условии, что при установке бита включения разрешена защита (PE) в регистре словосостояния машины (MSW). Установка бита PE = 1 производится следующим образом: сначала считывается MSW, изменяется только бит РЕ (РЕ=1), а.затем загружается в MSW новое значение. После выполнения этих действий МП работает в естественном режиме защищенном режиме виртуального адреса. После разрешения защищенного режима МП 80286 необходимо задать такой же режим в сопроцессоре 80287. Для этого служит специальная команда FSETPM. Защищенный режим. В защищенном режиме видимый программе адрес называется виртуальным адресом. Виртуальный адрес может относиться к ячейке, отсутствующей в реальной памяти. Защищенный режим есть подмножество реального режиме с разрешенным устройством управления памятью. Производительность в этом режиме не уменьшается, но в нем имеются новые команды и большее адресное пространство (см.рис.3.10). Емкость виртуального адресного пространстве может превышать емкость реальной физической памяти. В защищенном режиме совместимость с МП 8086/8088 сохраняется на уровне и исходного кода, но не на бинарном уровне. Программы МП 8086/8088 для выполнения в защищенном режиме приходится рекомпилировать. В виртуальном режиме 32-битный указатель, состоящий из 16-разрядных селектора и смещения, называется виртуальным адресом. Селектор определяет базовый адрес сегмента, к которому для получения физического адреса прибавляется смешение. Но вместо образования базового адреса сегменте путем сдвига селектора на 4 разряда влево базовый адрес получается посредством обращения (индексирования) к таблице в памяти. В виртуальном режиме сегмент МП 80286 - это есть часть диапазона виртуальных адресов, длина которой может меняться от 1 байта до 64 Кбайт. При разработке программ для защищенного режима используются новые языки программирования (ASM-286, C-286, Паскаль-286) и утилиты (BND-286 – прикладной редактор связей, BLD-286 – утилита генерации системы и др.). Под утилитой понимается независимая сервисная программа для широкого спектра применений. При переводе МП 80286 в защищенный режим устройство управления памяти ожидает наличия в памяти нескольких таблиц преобразования адресов. МП автоматически обращается к таблицам преобразования виртуальных адресов программы в физические адреса. Виртуальная память в защищенном режиме, мультизадачность и зашита памяти опираются на 8-байтовые единицы дескриптивной информации, хранящейся в таблицах, и называемые дескрипторами. Дескриптор - это информация о параметрах (атрибутах) данных, играющая роль косвенного адреса ячейки памяти с данными [3]. Для МП 80286 дескрипторы - это, специальные сущности, распознаваемые устройством управления памятью в защищенном режиме. К дескрипторам производятся автоматическое обращение для достижения назначения в межсегментных командах JMP, CALL, INT и в процедурах обслуживания прерываний. Схема управления памятью МП 80286 распознает дескрипторы как новые типы данных, и в зависимости от информации в дескрипторах МП 80286 предпринимает специальные действия. Сложные действия могут заставить МП 80286 произвести переключение задачи. Шлюзы так же, как дескрипторы, имеют 8-байтный формат, находятся в дескрипторных таблицах и являются новым типом данных для зашиты режима. Регистры. Внутренние регистры МП 80286 представлены на рис.3.11 и 3.12. В МП имеется 17 регистров. Восемь регистров (АХ, ВХ, СХ, DX, SР, ВР, SI, DI) предназначены для арифметических вычислений, формирования адресов и смещений и обеспечивают программную совместимость МП 8086/8088. К сегментным регистрам относятся четыре регистра: регистр сегмента кода CS, данных DS, дополнительного сегмента ES и сегмента стека SS. Длина этих регистров увеличена с 16 разрядов до 64 разрядов по сравнению с МП 8086/8088. Каждый из регистров (см.рис.3.11) содержит 16-разрядный селектор и 48разрядный дескриптор. Задача может иметь доступ максимум к 16 Кбайтным сегментам памяти; когда значение селектора загружается в регистр сегмента, процессор автоматически обновляет связанный с ним дескриптор. В защищенном режиме базовый адрес, граница и атрибуты целиком обновляются содержимым дескриптора; а в реальном режиме обновляется только базовый адрес путем сдвига влево на четыре бита значения селектора, а граница и атрибуты фиксированы. ■ \ На рис.3.12 представлены четыре регистра управления сегментированной памятью. Эти регистры известны так же, как регистры системных адресов, загружаемых операционной системой. Эти четыре регистра указывают на структуры данных, которые управляют механизмом сегментированной памяти. Они определены для ссылок на таблицы или сегменты, поддергиваемые системой защиты МП 80286. Адреса этих таблиц и сегментов хранятся в специальных регистрах системных адресов и системного сегмента. В качестве этих таблиц используются таблицы глобальных дескрипторов, локальных дескрипторов и дескрипторов прерываний. Рис.3.11. Регистры МП 80286 Рис.3.12. Регистры МП 80286 Регистр таблицы глобальных дескрипторов (GDTR) содержит 24-разрядный базовый адрес и 16-разрядную границу таблицы глобальных дескрипторов. Регистр таблицы локальных дескрипторов (LDTR) содержит 16-разрядный селектор для таблицы локальных дескрипторов. Регистр задачи (ТR) указывает на информацию, необходимую процессору для определения текущей задачи. Он содержит 16-разрядный, селектор дескриптора сегмента состояния задачи. Регистр таблицы дескрипторов прерывания (IDTR) указывает на таблицу точек входа в программы обработки прерываний. Рис.3.13. Регистры флагов МП 80286 Регистр содержит базовый адрес и 16-разрядную границу таблицы дескриптов прерываний. Указатель команды (IP) является 16-разрядным регистром и выполняет такие же функции, как и в МП 8086/8088. Флаги. 16-разрядный регистр флагов (рис.3.13) содержит девять флагов состояния и управления. По сравнению с регистром флагов МП 8086/8088 регистр флагов МП 80286 содержит два специфических поля: - NT (вложенная задача), бит 14. Этот бит используется для управления последовательностью прерываемых и вызываемых задач. Бит NT влияет на выполнение команды IRET. - IOPL (уровень привилегий ввода-вывода), биты 12 - 13. Это двухбитовое поле используется в защищенном режиме. Биты IOPL показывают наивысшее значение текущего уровня привилегии (CPL), позволяющее восполнять команды ввода-вывода, не приводя к обработке исключения. Слово состояния машины (MSW) представляет собой 16-разрядный регистр (рис.3.14), содержащий флаги, которые управляют или показывают условия, относящиеся к системе в целом, а не к отдельной задаче. В этом регистре используются только четыре бита, а другие зарезервированы для будущего использования (например в МП 80386). Рис.-3.1.4, Регистр слова состояния машины Ш 80286 Бит 3 (TS) - переключение задачи. Процессор устанавливает этот бит при переключении задачи. Бит 2 (EM) - эмуляция. Показывает, нужно ли эмулировать (имитировать) функции сопроцессора. Бит 1 (MP) – арифметический сопроцессор, управляет функцией команды WAIT, которая используется для взаимодействия с сопроцессором. В реальном режиме переключения задач быть не может. TS, MP и EМ должны быть сброшены в нуль. Бит 0 (PE) - включение защиты, устанавливается в 1, если МП 80286 работает в защищенном режиме, и сброшен в 0 при работе в реальном режиме. Как ранее было отмечено, основной функцией управления памятью является преобразование адреса. В реальном режиме вычисление физического адреса получается сложением сдвинутого влево на 4 бита базового адреса сегмента, находящегося в селекторе, и исполнительного адреса (смещения), расширенного за счет старших нулевых бит. В защищенном режиме 32-битный указатель - виртуальный адрес - состоит из 16-разрядного селекторе, адресующего дескриптор к соответствующей таблице, и 16-битного смещения. Селектор - это 16-разрядный указатель, который будучи загружен в регистр или использован соответствующими командами, выбирает определенные дескрипторы (рис.3.15). Рис.3.15. Формат селектора Селектор имеет следующие поля. Индекс - биты 15 - 3. Индекс выбирает один из 8192 дескрипторов в таблице дескрипторов. Процессор умножает значение этого индекса на 8 (длина дескриптора в байтах) и добавляет результат к базовому адресу таблицы дескрипторов. Индикатор таблицы TI - бит 2. Определяет таблицу дескрипторов, на которую ссылается селектор, нуль означает таблицу глобальных дескрипторов (GDT), а единица - текущую таблицу локальных дескрипторов ( LDT). Запрашиваемый уровень привилегий RPL - биты 1 – 0. Используется механизмом зашиты систем. Это поле не участвует в преобразовании адреса. Защита требует наложения на обычные программы (не входящие в операционную систему) трех ограничений: обычным программам запрещается выполнять некоторые команды; обычным программам должны быть недоступны определенные сегменты, доступные операционной системе; не должно быть возможным получение привилегии операционной системы иным путем, кроме как вход в нее в разрешенной точке входа. Дескрипторы - это те объекты, на которые ссылаются селекторы. Они представляют собой 8-байтовые блоки, содержащие атрибуты области физических адресов, т.е. сегменты. Два старших байта каждого дескриптора не используются МП 80286 и должны всегда содержать нули, чтобы обеспечить совместимость с его будущими модификациями (например МП 80386). Формат дескрипторов различных типов показан на рис.3.16. Рис.3.I6. Формат поля типа сегментов прикладных программ и данных: а - для сегмента кода; б - для сегмента данных Дескрипторные таблицы могут содержать не только дескрипторы сегментов, но и дескрипторы вентилей (шлюзов). Вентиль обеспечивает контролируемый переход потоков управления между исполнительными сегментами с различными уровнями привилегий. Существует четыре типа вентилей: вентили вызова, задачи, прерывания и специального прерывания (ловушки). Следующие за двумя нулевыми старшими байтами (рис.3.17) поле содержит байт доступа, информация в котором зависит от типа дескрипторов. Байт доступа закодирован так, что путем его анализа всегда можно однозначно определить тип дескриптора. Байт доступа содержит следующие поля. Бит присутствия сегмента Р. Если бит сброшен, то данный дескриптор не может быть использован при трансляции адресов. Уровень привилегий дескриптора DPL. Используется механизмов защиты. Бит системного сегмента S определяет, является ли данный сегмент системным (S= 0), сегментом программы или данных. В поле используется следующий набор значении: 0 : запрещено, 1 : TSS доступен, 2 : таблица LDT, 3 : TSS занят, 4 : вентиль вызова, 5 : вентиль задачи, 6 : вентиль прерывания, 7 : вентиль ловушки (специального прерывания). Формат поля типа сегментов прикладных программ и данных приведен на рис.3.16. Поле типа содержит следующие биты: Бит 0 - бит обращения (А). Сброс бита А можно осуществить программно. Этот бит помогает операционной системе ассоциировать с каждым сегментом приблизительное время его последнего использования. Бит 1 - бит разрешения доступа по чтению (R) или записи (W). Если R=I для сегмента кода, то наряду с обращением к такому сегменту для выполнения разрешается и обращение для считывания. Если W=I для сегмента данных, то помимо считывания данных разрешается и запись в него. Рис.3.17. Общий формат дескрипторов МП 80286 Бит 2 - бит согласованного сегмента (С) для сегмента кода или бит расширения вниз (ED) для сегмента денных. Бит ED управляет интерпретацией поля предела дескрипторов, таким образом: при ЕD=1 размер сегмента определяется как FFFFH - предел. Следующее за байтом доступа поле (в сторону уменьшения адресов) дескриптора сегмента определяет 24-разрядный базовый адpec сегмента. Для получения физического адреса 24-битннй базовый адрес суммируется с 16битным смещением. Переполнение при сложении игнорируется. В защищенном режиме адресное пространство составляет 16 Мбайт вместо 1 Мбайта в реальном режиме (физический адрес равен 20 битам). Однако каждая задача может иметь полное адресное виртуальное пространство, равное 230=1 Гбайт. Это расширение адресного пространства обеспечивает защищенный режим. . \ Содержание поля предела дескриптора сегмента описано выше. Поля селектора и смещения дескрипторов вентилей вызова, прерывания и ловушки определяет полный логический адрес с точки входа в соответствующую процедуру. Таблицы дескрипторов определяют все сегмента, используемые МП 80286. Существуют три типа таблиц. Регистры, которые указывают на эти таблицы, представлены на рис.3.12 и имеют названия GDTR, LDTR и IDTR. Эти регистры были рассмотрены выше. Таблица дескрипторов - это массивы памяти переменной длины с 8-битовыми элементами, которые содержат дескрипторы. В МП 80286 они имеют длину от 8 байт до 64 Кбайт, и в каждой таблице может быть до 8192 дескрипторов. Для управления многозадачностью в МП 80286 не используются специальные команды, обычные команды управления с новой интерпретацией. Регистрами и структурами данных, которые поддерживают многозадачность, являются сегмент состояния задачи TSS, дескриптор TSS, регистр задачи TR и дескриптор вентиля задачи. Многозадачность моделирует многопроцессорность, обеспечивая каждую задачу виртуальным процессором. В каждом конкретном случае операционная система назначает реальный процессор одному из виртуальных процессоров, который затем выполняет задачу данного виртуального. Сегмент TSS (рис.3.18) - это структура данных, которая характеризует состояние виртуального процессора задачи. Сегмент TSS состоит из двух частей. Первой частью является набор данных, обновляемый процессором при каждом переключении задачи. Этот набор включает поля со следующим содержимым: регистры сегментов – DS, SS, CS, ЕS; регистры общего назначения - DI, SI, ВР, SР, ВХ, DХ, СХ, АХ; регистр флагов – FLAGS; указатель команд – IP; " селектор сегмента TSS предыдущей исполняемой задачи (обратная связь). Второй частью сегмента TSS является набор, который процессор считывает, но не изменяет, этот набор включает следующие поля: селектор таблицы LDТ задачи; * виртуальные адреса трех стеков по одному для каждого из трех уровней 0-2. Каждый адрес определяет дно (низ) стека. При создании новой задачи операционная система создает сегмент TSS. " Инициализация после подачи сигнала RESET (сброс) МП 80286 начинает работать в реальном режиме. Начальные значения регистров следующие: селектор CS - F000H; селектор DS - 0000Н; селектор ES - 0000Н; селектор SS – 0000H; регистр FLAGS-0002H; указатель команд IP-FFFFH; регистр таблицы прерываний IDTR - база равна 0, граница-3FFH; регистр слова состояния машины MSW – FFF0H. В начальном состоянии прерывания запрещены. Переход в защищенный режим осуществляется загрузкой в MSW Рис.3.18. Сегмент состояния задачи МП 80286 слова состояния машины с установленным битом защиты (РЕ=1) привилегированной командой LMSW, а затем должна следовать команда JМР (сброс всех очередей). 3.3. Микропроцессор 80386 Производство МП 80386 начато в 1985 году и представляет собой высокопроизводительный 32-разрядный микропроцессор. Он имеет полную 32разрядную архитектуру с физическим адресным пространством 232 = 4 Гбайта и встроенными средствами виртуальной памяти. МП 80386 в защищенном режиме может адресовать до 246 байт = 64 Гбайта виртуальной памяти. Микропроцессор может осуществлять переключение программ, выполненных под управлением табличных операционных систем (UNIX, MS DOS, iAPX-86). Микропроцессоры 8086/8088 и 80286 совместимы с МП 80386 на уровне двоичных кодов. Одной из отличительных черт МП 30386 является режим виртуального МП 8086. В этом режиме в рамках многозадачной среды МП 80386 устанавливается защищенная среда МП 8086. Функциональная схема МП 80386 представлена на рис.3.19. МП 80386 состоит из шести блоков, работающих параллельно: блок интерфейса с магистралью (BIU), блок предварительной выборки команд, блок декодирования команд, исполнительный блок (EU), блок управления сегментами и блок разбиения на страницы (см.рис.3.19). Блок BIU обеспечивает интерфейс между процессором и его внешней средой. BIU принимает внутренние запросы для выборки команд от блока предварительной выборки команд и для обмена данными от блока EU и устанавливает приоритет этих запросов. МП 80386 реализует функции опережающего просмотра программы, которую выполняет блок предвыборки команд. Команды хранятся в 16-байтовой очереди команд в ожидании обработки блоком декодирования. ■ ■ Блок декодирования команд преобразует байты команды из этой очереди в микрокод. Декодированные команды в ожидании обработки EU хранятся в очереди длиной 3 команды, организованной по принципу FIFO (первым вошел первым вышел), Рис.3.I9. Блок-схема МП 80386 Исполнительный блох (EU) выполняет команды из очереди команд и взаимодействует со всеми другими блоками. Выполнение команды в EU начинается до завершения выполнения предыдущей команды. Блок EU содержит восемь 32-разрядных регистров общего назначения, применяемых как для вычисления адресов, так и для операций с данными. Этот блок содержит также 64-разрядный регистр, применяемый для ускорения операций сдвига, циклического сдвига, умножения и деления. Блок управления сегментами преобразует логические адреса в линейные по запросу блока EU. ■ Оттранслированный линейный адрес направляется в блок разбиения на страница. В МП 8086/8088 и МП 80286 отсутствует блок разбиения на страницы, поэтому в них логический адрес сразу преобразуется в физический. Если механизм разбиения на страницы МП 80386 активизирован, то соответствующий блок транслирует линейные адреса в физические. Если же этот механизм выключен, то это означает, что линейный адрес совпадает с физическим. Блок разбиения на страницу пересылает физические адреса в блок BIU для выполнения цикла обращения к памяти или устройством вводавывода. В связи с рассмотренным выше можно видеть следующие отличия архитектуры МП 80386 от МП 80286: - З2-разрядная архитектура; - страничная организация памяти; - режим виртуального МП 8086; - расширение пространства физических и виртуальных адресов; - большее быстродействие. МП 80386 имеет два основных режима работы: режим реального адреса (реальный режим) и защищенный режим. Реальный режим. При подаче сигнала RESET (сброс) или при включении питания МП 80386 устанавливается в реальный режим и работает как очень быстрый МП 8086, но при необходимости с 32-разрядным расширением. В реальном режиме разбиение на страницы не производится, поэтому линейный адрес совпадает с физическим адресом. Линейный 20-разрядкый адрес по 16разрядному селектору сегмента (предварительно сдвинутого влево на четыре бита) и исполнительному адресу (смещения), расширенного слева четырьмя нулевыми битами, получается сложением. Прерывания и исключения в реальном режиме обрабатываются точно так же, как в МП 8086/8088. При этом таблица дескрипторов прерываний (IDT) МП 80386 представляет таблицу векторов прерываний МП 8086/8088. Для перехода в защищенный режим необходимо явное переключение. Защищенный режим. В этот режим МП 80386 входит при условии, что бит включения защиты (РЕ) установлен в нулевом регистре управления (CRO). С помощью команды пересылки (move to CRO) можно использовать также команду загрузки слова состояния машины (LMSW). В отличие от МП 80286 МП 80386 можно ввести в реальный режим с помощью сброса командой пересылки бита РЕ регистра СRО. В защищенном режиме используется 16-разрядный селектор для указания в определенной системной таблице индекса, который содержит 32-разрядный базовый адрес сегмента. Физический адрес формируется путем прибавления относительного адреса к базовому. Программы, написанные для МП 80286, выполняются на МП 80386 без изменений. Этот процессор поддерживает также дескрипторы, применяемые в МП 80286. 32-разрядная архитектура МП 80386 использует типы данных предыдущих поколений МП 8086/8088, МП 80286 и вызывает их модификацию. МП 80386 подразделяет память на 8-разрядные байты, 16-разрядные слова и 32- разрядные двойные слова. Биты нумеруются с 0 по 7. Бит 0 является самым младшим значащим битом. Младший байт в слове хранится по меньшему адресу, а старший - по большему. Адресом слова иди двойного слова является адрес соответствующего младшего байта. Помимо байт, слов, двоичных слов МП 80386 поддерживает следующие типы данных: 1. Распакованный и упакованный двоично-десятичный тип. 2. Битовое поле - непрерывную последовательность бит, в которой, каждый бит рассматривается независимо. Битовое поле может начинаться с любого бита, любого байта и иметь длину до 32 бит. 3. Битовая строка - непрерывная последовательность бит, начинающаяся с любого бита, любого байта и имеющая длину до 231-1 бит. 4. Ближний указатель (near pointer) - 32-разрядный логический адрес, представляющий собой относительный адрес внутри сегмента. 5. Дальний указатель (far pointer) - 48-разрядный логический адрес, состоящий из двух компонентов: 16-разрядного сегмента и 32-разрядного относительного адреса. 6. Целый тип - знаковое двоичное значение, содержащееся в 32-разрядном двойном слове, 16-разрядном слове или 8-разрядном байте. Все операции выполняются над числами, представленными в дополнительном коде. Знаковый бит расположен в бите 7 для байта, в бите 15 для слова и в бите 31 для двойного слова. 8-разрядное целое число изменяется в пределах от -128 до +127, 16-разрядное целое число в диапазоне от -32768 до +32767, а 32-разрядное целое число в диапазоне от -231 до +231-1. Нулевое значение имеет положительный знак (нуль в старшем бите). 7. Обычный (беззнаковый) тип - беззнаковое двоичное значение, содержащееся в 8-разрядном байте, 16-разрядном слове или 32-разрядном двойном слове. Все биты определяют величину числа. Значение числа для байта составляет от 0 до 255, для слова от 0 до 65535 и для двойного слова от 0 до 232-1. 8. Строка - непрерывная последовательность байт, слов или двойных слов. Строка может содержать от 0 до 232-1 байт или 4 Гбайта. Регистры МП 80386 являются расширением регистров МП 8086/8088, 80286. Все 16-разрядные регистры этих МП находятся внутри 32-разрядной архитектуры МП 80386. В табл.3.1 даны отличия в возможности доступа к регистрам МП 80386 в реальном а защищенном режимах. В этой таблице PL=0 означает, что регистр доступен только при нулевом текущем уровне привилегий; IOPL означает, что в режиме виртуального МП 8086 команды PUSHF и POPF сделаны чувствительными к уровню привилегий ввода-вывода. Таблица 3.1 Регистры Использование в реальном режиме Использование в защищенном режиме Использование в режиме виртуального. МП 8086 загрузка сохранение загрузка сохранение загрузка сохранение РОН да да да да да да Регистры да сегментов да да да да да Регистр флагов да да да да IOPL IOPL Регистры да управления да PL=0 PL=0 нет да Регистр GDТ да да PL=0 да нет да Регистр LDT нет нет PL=0 да нет да Регистр IDT да да PL=0 да нет нет Регистры отладки да да PL=0 PL=0 нет нет Регистры проверки да Да PL=0 PL=0 нет нет Рис.3.20. Общий формат регистров общего назначения МП 80386 Восемь регистров общего назначения (рис.3.20) имеют длину в 32 бита и содержит адреса или данные. Они поддерживают операнды-данные длиной 1,8,16,32,64 бита. При использовании двух регистров битовые поля от 2 до 32 бит, операнды - адреса длиной 16 и 32 бита. Эти регистры обозначаются как EАХ, EBX, ECX, EDX, ESI, EDI, EBP, ESP. Доступ к младшим разрядам этих регистров осуществляется независимо при использовании 16-разрядных имен регистров соответственно АХ, BX, CX, DX, SI, DI, BP, SP. На рис.3.21 представлен регистр флагов. Он состоит из 32 разрядов и содержит все флаги состояния и управления МП 8086/8088 и 80286, а также дополнительные биты для отладки, включения и исполнения в режиме виртуального процессора МП 8086 в защищенной многозадачной среде. _ Рассмотрим дополнительные биты (см.рис.3.21). - VM (режим виртуального МП 8086) бит 17. Бит обеспечивает режим виртуального МП 8086 в защищенном режиме, при работе процессора в защищенном режиме и если VM=1, то происходит переключение в режим виртуального МП 8086. Рис.3.21. Регистр флагов EFLAGS МП 80386 Бит VM может быть установлен двумя способами: в защищенном режиме командой IRET при условии, что текущий уровень привилегий равен 0; переключением задачи на любом уровне привилегий. RF (флаг возобновления), бит 16. Временно при останавливает обработку исключений для отладки, т.е. возвращает к обычному исполнению программы. Шесть регистров сегментов указывают на текущие адресные сегменты памяти. Регистры сегментов можно разделить на две части. К первой части относятся 16-разрядный программно-доступный сегментный регистр. Ко второй части относится программно-недоступный регистр КЭШ-памяти сегмента (регистр дескриптора), который содержит описание сегмента, указанного селектором. Каждый регистр дескриптора содержит 32-разрядный базовый адрес сегмента, 32-разрядную границу сегмента и другие атрибуты. Таким образом, отличие регистра дескрипторов .сегмента от МП 80286 состоит в разрядности и некоторых атрибутах. К сегментным регистрам МП 80386 относятся: регистр сегмента программ СS, регистр сегмента стека SS, регистры сегментов данных DS и ES. Указанные регистры выполняют те же функции, что и в МП 8086/8088, МП 80286. Для повышения эффективности работа программы в МП 80386 введены еще два регистра сегментов данных FS и GS. Содержимое регистров FS и GS так жe доступно для программ, как и регистров DS и ES. Регистры сегментов задают базовые адреса сегментов. Для адресации данных внутри сегмента к базовому адресу добавляется 32-разрядный относительный адрес. Регистры управления сегментированной памятью таблицы глобальных, локальных дескрипторов, дескрипторов прерываний и задачи имеют те же функции, что и аналогичные регистра МП 80286. Отличие заключается только в размерах линейного базового адреса. Для МП 80386 длина базового адреса составляет 32 бита. Расширенный указатель команд (EIP} является 32-разрядным регистром. Он содержит относительный адрес следующей команды. Относительный адрес отсчитывается от базового адреса сегмента текущей программы. Указатель команд является программно- недоступным регистром, но он управляется явно командами управления потоком прерывания и исключения. Младшие 16 бит ETP называются IP и могут использоваться независимо. Этот факт необходим для исполнения команд МП 8086/8088 и 80286. МП 80386 имеет три регистра управления: CRO, CR2 и СR3 (CR1 зарезервирован) (рис.3.22). В этих регистрах отражается глобальная информация о состоянии машины, которая влияет на все задачи системы. Эти регистры программно-доступные через варианты команды MOV. Формат регистров управления представлен на рис.3.22. Регистр СRО содержит флаги, которые управляют или показывают условия, относящиеся к системе в целом, а не к отдельной задаче. Младшие 16 бит этого регистра являются словом состояния машины (MSW) для совместимости с МП 80286. Регистр CRO содержит поля: Бит 31 — разбиения на страницы (PG) - показывает, использует ли МП 80386 таблицы страниц для трансляции линейных адресов в физические. Рис.3.22. Регистры управления МП 80386 Бит 4 - расширения (ЕТ) - показывает тип сопроцессора (80286 или 80386), используемого в системе. Бит 3 - переключения задачи (TS) - процессор устанавливает при включении каждой задачи. Бит TS может быть сброшен загрузкой в регистр CRO, а также специальной командой CLTS очистки этого бита. Бит 2 - эмуляции (EM) - показывает, нужно ли эмулировать функции сопроцессора. Бит1 - арифметического сопроцессора (MP) - управляет функцией команды WAIT, которая используется для взаимодействия с сопроцессором. Бит 0 - включения защиты (РЕ) - при установке бита в 1 процессор переходит в защищенный режим; а при очистке - в режим реальных адресов. Регистр CR2 используется для обработки отказа страницы в случае, когда установлен бит RG в регистре СRО. В регистре CR2 сохраняется Рис. 3.23. Регистры проверки МП 80386 тот линейный адрес, который вызвал отказ. Регистр CR3 используется тогда, когда установлен бит PG в CR0. Этот регистр содержит физический базовый адрес таблицs каталога страниц. В МП 80386 имеются шесть регистров отладки DR0 – DR3, DR6 и DR7, которые расширяют его возможности. На рис.3.23 представлены два 32-разрядных программно-доступных регистра проверки TR6 и ТR7, предназначенных для проверки механизма преобразования адресов в физические (трансляции адресов) МП 80386. Механизм трансляции адресов использует буфер ассоциативной трансляции (TLВ) особым образом организованную КЭШ-память для хранения информация из таблиц страниц. .' ■ Регистр ТR6 имеет следующие поля (рис.3.23): ■ ' % Линейный адрес - биты 12-31. При записи в буфер TLB для данного линейного адреса резервируется вход в буфер TLB. Остальные поля входа в этот буфер устанавливаются в зависимости от значения регистра TR7. Бит достоверности V - бит 11. Буфер TLB использует этот бит для определения входов, содержащих достоверные данные. Биты мусора D, D # - биты 10 - 9. Бит 10 является битом мусора, показывающим, был ли изменен вход в буфер TLB, a бит 9 является его инверсией. Биты доступности пользователю U, U# - биты 8 и 7. Бит 8 является битом доступности пользователю или системе, а бит 7 является его инверсией. Бит записи/чтения W, W# - биты 6 и 5. Бит б управляет доступом по записи/чтению, а бит 5 является его инверсией. Бит команды С - бит 0. Для немедленного просмотра буфера TLB в регистр TR 6 пересылается двойное слово, содержащее в этом бите 1 для немедленной записи в буфер TLB; в этот же регистр пересылается двойное слово, содержащее в этом бите 0. Регистр ТR7 имеет следующие поля (см.рис.3.23): Физический адрес - биты 31 - 12. Эти бита являются полем данных буфера TLB. Бит успеха просмотра НТ - бит 4. Для записи в буфер TLB бит НТ должен быть установлен. Если просмотр буфера TLB был успешным, то НТ=1, если нет НТ=0. Биты блока с тегом REP - биты 3 и 2. Принцип теговой памяти заключается в хранении информации в форме самоопределяемых данных. Классическая архитектура машины фон Неймана предполагает, что тип хранимых в памяти данных поступает в потоке обрабатывающих команд. Таким образом, имеются команды, которые определяют атрибуты операндов. Тег - это поле самоопределения данных, которое содержит информацию о типе данных рассматриваемой ячейки, т.е. биты тега указывают тип данных, находящихся в ячейке, например, двоичное целое число, десятичное целое число, число с плавающей запятой (точкой), строка символов, адрес и т.д. Биты 3 и 2 регистра ТR7 означают, в какой из четырех ассоциативных блоков осуществляется запись в буфер TLB . Если при чтении буфера TLB обнаруживается, что бит НТ равен 1, то эти биты показывают, в каком из четырех ассоциативных блоков был найден тег. Если при чтении бит НТ равен 0, его значение не определено. Селекторы е. дескрипторы МП 80386 так же, как и в МП 80286, снабжают аппаратные средства сведениями об ожидаемых программами местах расположения информации различного типа. Селекторы МП 80386 и МП 80286 совпадают. Дескрипторы МП 80386 - это те объекты, на которые показывают селекторы. Дескрипторы сегментов (рис.3.24) представляют собой 8-байтные блоки, содержащие атрибуты линейных адресов, то есть сегменты. Рис.3.24. Формат старшего слова дескрипторов МП 80386 К атрибутам относятся: 32-разрядный линейный базовой адрес сегмента (имеющий 20-разрядную длину), дробность сегмента, уровень защиты привилегии по чтению, записи и выполнению размера операндов по умолчанию (15- или 32-разрядный) и тип сегмента. Некоторые поля дескриптора МП 80386 отличаются от полей дескриптора МП 80286. База сегмента определяет место сегмента внутри линейного 4 Гбайтного адресного пространства. Процессор объединяет три фрагмента, вместо двух для МП 80286 базового адреса для формирования одного 32-разрядкого значения. Граница (предел) сегмента определяет размер сегмента: 1. G=0, граница оgределена до 1 Мбайте. 2. G=1, единица измерения до 4 Кбайт - размер страницы. Граница определена до 4 Гбайт. Бит дробности дескриптора сегмента G определяет размер единиц, в которых интерпретируется поле границы. Тип дескриптора расширен по сравнению с МП 80286 (см.рис.3.17): 0: запрещено А: зарезервировано 1: TSS 80286 доступен В: TSS МП 80386 занят 2: таблица LDT С: вентиль вызова МП 80386 3: TSS 80386 занят; Д: зарезервировано 4: вентиль вызова МП 80286 5: вентиль задачи (МП 80286/80386) 6: вентиль прерывания МП 80286 Е: вентиль прерывания МП 80386 F: вентиль ловушки МП 80386 7: вентиль ловушки МП 80286 8: запрещено 9: TSS МП 80386 доступен Поле размера операнда по умолчанию бит X дескриптора сегмента (для сегментов данных) - этот бит носит название бит В-бита большого сегмента). Для дескрипторов исполняемого сегмента это поле носит название D-бита. Для. дескрипторных таблиц МП 80386 действуют все соглашения, используемые для дескрипторных таблиц МП 80286. Сегментация - память МП 80386 организуется как один или более сегмент переменной длины. Длина сегмента от 1 до 4 Гбайт. Каждая задача МП 80386 может иметь до 16383 сегментов размером до 4 Гбайт каждый. Общий объем виртуальной памяти составляет 64 Гбайта (64 х 240 байт). На МП 80386 могут реализоваться программы, не имеющие сегментов. Но выключение сегментации не предусмотрено в МП 80386. Для обеспечения такого режима можно предварительно загрузить сегментные регистры селекторами дескрипторов, охватывающих все 32-разрядное линейное адресное пространство. Адресное пространство - это физическая память, организованная в виде последовательности 8-разрядных байт. Каждому байту присвоен уникальный адрес, который может измениться от 0 до 232-1, или 4 Гбайт. МП 80386 имеет три различных пространства: физическое, логическое и линейное. ' ' * Физические адреса - это реальные адреса, используемые для выбора ячейки физической памяти. Логический адрес состоит из селектора, сегмента и относительного адреса внутри сегмента. Линейный адрес - это адрес, сформированный добавлением относительного адреса к базовому адресу сегмента. Разбиение на страницы - это другой (по отношению к сегментации) способ управления виртуальной памятью. Разбиение на страницы возможно только в защищенном режиме и обеспечивает управление очень большими сегментами МП 80386. Этот способ позволяет разбивать программы, не одинаковые по размеру страницы в отличие от сегментации, которая представляет память в виде сегментов переменной длины. Разбиение на страницы - это более низкий уровень по сравнению с сегментацией. В результате разбиения получается физический адрес за счет трансляции линейного адреса (рис.3.25). Трансляция линейного адреса состоит из фаз и осуществляется только тогда, когда бит PG=1 в регистре CRO. Этот бит обычно устанавливается операционной системой во время инициализации. Линейный адрес состоит из трех полей (см.рис.3.25). DIR (каталог), PAGE (страница) и OFF SET (относительный адрес). Кадр страницы - это блок G 4 Кбайт физической памяти. Страницы начинаются на границах 4 Кбайтных областей памяти и фиксированы по размеру. Рис. 3.25. Механизм разбиения на страницы МП 80386 Таблица страниц - это массив 32-разрядных спецификаторов страниц. Таблица также является страницей и занимает 4 Кбайта памяти или до 1 К 32-разрядных входов (рис.3.26}. Этот формат имеет следующие поля: Бит мусора D (6) и бит доступа А (5). Эти биты содержат информацию об использовании страницы и устанавливаются аппаратно; проверка и сброс этих битов производятся операционной системой. Бит пользователя-супервизора U/S - бит 2 и бит чтения-записи R/W - бит 1. Используются для защиты на уровне страниц, которую МП 80386 выполняет в то же самое время, что и трансляция адреса. Рис. 3.26. Формат входа в таблицу страниц МП 80386. Бит присутствия Р - бит 0. Этот бит показывает, может ли вход в таблицу страниц использоваться при трансляции адреса. При Р=1 - может, при Р=0 вход нельзя использовать для трансляции адреса. Сегменты могут быть больше или меньше, чем страницы размером 4 Кбайта. Сегмент может содержать конец одной страницы и начало другой. . МП 80386 содержит 8- 16- и 32-разрядные устройства ввода-вывода. Вводвывод отображается в 64 Кбайтное пространство адресов ввода-вывода с использованием команд ввода-вывода. Адресное пространство ввода-вывода образует от 216 (64 К) индивидуально адресуемых 8-разрядных портов (0,1,2,3,...,65535) до 32К 16-разрядных портов (0,2,4, или 65534) или до 16К 32-разрядных портов (0,4,8,...,65532). Все соглашения о защите и привилегиях МП 80286 действительны и для МП 80386. Кроме этого, имеется возможность защиты и привилегий на уровне страниц и каталогов. Каждый вход в таблицу страниц (см.рис.3.26) имеет два бита, связанных с типом защиты: U/S и R/W. Бит присутствия Р может быть использован для ограничения адресуемой области. Уровень привилегий ввода-вывода (Вb) - IOPL в регистре EFLAGS обеспечивает защиту, разрешая задаче доступ ко всем устройствам ввода-вывода (JВB) или же запрещая задаче доступ к любому из этих, устройств. В МП 80386, так же, как и в МП 80286, имеются аппаратные средства для поддержания многозадачности. Однако отличие от МП 80286 заключается в том, что при переключении задачи может использоваться не только другая таблица LDT, но и другой каталог страниц. Ha рис.3.27 представлен сегмент состояния задачи МП 80386 (без битовой карты разрешения ввода-вывода). Динамическая часть сегмента TSS МП 80386 обновляется при каждом переключении задач и включает следующие поля: - регистры сегментов - ES, CS, SS, DS, FS, GS; - регистры общего назначения - ЕАХ, EСХ, EDX, ЕВХ, ЕSР, EBP, ESI, EDI; - регистр флагов - EFLAGS; - указатель команд - ЕIР; - селектор-сегмента - TSS предыдущей исполняемой задачи. Статическая часть сегмента TSS включает поля: - регистр управления CR3 (содержит базовый адрес каталога страниц PDBF); - определения cтека для программы обработки прерывания на уровнях привилегий 0, 1 или 2, которые используются в среде задачи; - селектор таблицы LDT задачи; - бит ловушки для отладки бит Т; - база карты разрешения ввода-вывода. Сегмент TSS может располагаться в любом пространстве линейных адресов. Сегмент TSS определяется дескриптором сегмента TSS (рис.3.28). Сегмент TSS требует 104 байта, отсюда в дескрипторе МП 80386 граница должна содержать значение 103 или больше. Дескрипторы вентилей задач МП 80386 и МП 80286 совпадают. Переключение задачи на тактовую часть 16 МГц занимает по времени 17 мкс. Мультиобработка - это параллельное выполнение нескольких программ или программных сегментов, так что процессор в каждый момент выполняет одну программу с помощью общих ресурсов (память, устройства ввода-вывода). Прикладные программы, написанные для МП 8086/8088, могут выполняться на МП 80386 в реальном режиме без всяких изменений. В неизменном виде выполнять программы также можно в подрежиме виртуального МП 8086 защищенного режима МП 80386 Вход и выход МП 80386 из виртуального режима МП 80386 представлен на рис.3.29. Рис.3.27. Сегмент состояния задачи МП 80386 (без битовой карты разрешения ввода-вывода) Рис.3.28. Дескриптор сегмента состояния задачи МП 80386 Рис.3.29. Вход и Выход из виртуального режима МП 8086 МП 80386 может войти в виртуальный режим двумя способами: 1) при возврате с помощью команды RET из процедуры задачи МП 80386, которая загружает регистр ЕFLAGS из стека. Если VM=1, МП 80386 возвращает управление процедуре. 2) в процессе переключения на задачу МП 80386, когда регистр EFLAGS загружается из нового TSS. Находясь в режиме V86, МП 80386 формирует линейный адрес так, как это делает МП 8086. Селектор сдвигается влево на 4 бита с образованием 20-разрядного базового адреса. Исполнительный адрес (смещение) дополняется слева четырьмя нулевыми битами и прибавляется к базовому адресу. Отличие от МП 8086 заключается в том, что есть возможность увеличения результирующего линейного адреса до 21 значащего бита. Таким образом, программа МП 8086, выполняемая в режиме V 86, может генерировать линейные адреса в диапазоне от 0 до 10 FFFFH, что соответствует 1 Мбайту плюс примерно 64 Кбайта. Монитор V 86 представляет собой программу МП 80386, выполненную на нулевом уровне привилегий в защищенном режиме, и состоит из процедур визуализации задачи и обработки исключений. Есть различия между режимами виртуального МП 8086 и МП 8086/8088. Аппаратное прерывание появляется в ответ на появление сигналов на одном из входов прерывания процессора: NM1 (вход для немаскируемых прерываний); INTR (вход для маскируемых прерываний). Программное прерывание - это отказ, ловушка или выход из процессора. Он является в ответ на команду INT или исключение (программное условие, требующее специальной обработки). Действия на прерывания МП 80386 и МП 80286 вреальном режиме идентичны. В защищенном режиме так же, как и МП 80286, МП 80386 для доступа к программам и процедурам прерываний использует 8-байтные дескрипторы. Формат допустимых в таблице IDT дескрипторов вентилей представлен на рис.3.30. Когда процессор обнаруживает исключение, связанное с конкретным сегментом, то он запоминает код ошибки в стеке программ обработки. Формат кода сшибки представлен на рис.3.31. Рис.3.30. Дескрипторы вентилей таблицы IDT или МП 80386 Рис.3.31. Формат кода ошибки МП 80386 МП 83386 запускается и перезагружается сигналом RESET (сброс). Начальные значения регистров следующие: селектор СS – FOOOH; селектор DS - OOOOH; селектор ES – ООООН; селектор FS - ООООН; селектор GS – ООООН; Рис.3.32. Содержание регистра CRO МП 80386 после сброса селектор SS - ООООН; регистр EFLAGS - ОООО ООО2Н; указатель команды - ОOOO FFFOH; регистр таблиц дескрипторов прерываний - IDTR. База равна 0, граница равна O3FFH. Содержимое регистра CRO МП 80386 после сброса представлено на рис.3.32. Другие регистры считаются не определенными. МП 80386 входит в защищенный режим тогда, когда команда MOV в регистре CRO устанавливает РЕ в 1. РЕ можно установить в 1 и командой LMSW. МП 80386 выполняет внутреннее тестирование двух видов: самотестирование и тестирование буфера ассоциативной трансакции (TLB). Самотестированием управляет процессор. Тест TLB разрабатывается и вводится извне. Литература 1. Криницкий Н.А. Алгоритмы вокруг нас. - М.: Наука. Гл.ред. физ.-мат. лит., 1984. - 224 с. 2. Пальченков Ю.Д. Архитектура высокопроизводительных вычислительных систем / Под ред. Н.П.Вашкевич: Учеб. пособие. -Пенза: Пенз. политехн. ин-т, 1988. - 80 с. 3. Maйеpc Г. Архитектура современных ЭВМ: Пер. с англ. В 2-х кн. М.: Мир, 1985. - 364 с., 312 с. 4. Прангишвили И.В. Микропроцессоры и локальные сети микро-ЭВМ в распределенных системах управления. - М.: Энергоатомиздат, 1985. - 272 с. 5. Вашкевич Н.П., Пучков В.Г. Средства разработки и отладки микропроцессорных систем: Учеб. пособие. - Пенза: Пенз. политехн. ин-т, 1982, 82 с. 6. Айлиф Дж. Принципы построения базовой машины: Пер. с англ. - М.; Мир, 1973. - 117 с. 7. Колин А. Введение в операционные системы: Пер. с англ.- М.: Мир,1975. – 115 с. 8. Фокс Дж. Программное обеспечение и его разработка: Пер. с англ. - М.: Мир, 1985. - 368 с. 9. Дал У., Дейкстра Э., Хoop К. Структурное программирование: Пер. с англ. - М.: Мир, 1975. - 247 с. 10. Глушков В.М., Цейтлин Г.Е., Ющенко Е.Л. Алгебра. Языки. Программирование. - Киев: Наук. Думка, 1974. - 328 с. 11. Органик Э. Организация системы ИНТЕЛ 432: Пер. с англ.М.: Мир, 1987. - 446 с. 12. Назаров С.В. Операционные системы специализированных вычислительных комплексов: Теория построения и системного проектирования. - М.: Машиностроение, 1989. - 400 с. 13. Брябрин В.М. Программное обеспечение персональных ЭВМ. - М.: Наука. Гл. ред. физ.-мат. лит. 1988. - 272 с. 14. Фигурнов В.Э. IBM PC для пользователя. - М: Финансы и статистика, 1990. - 240 с. 15. Воеводин В.В. Параллельные структуры алгоритмов и программ. - М.: Отдел вычислительной математики АН СССР, 1987. - 144 с. 16. Сенченко Н.И., Якушев Ю.Н. Программное обеспечение аналогоцифровых вычислительных систем. - М.: Машиностроение, 1985. – 184 с. 17. Казаринов Ю.М., Номоконов В.Н., Филиппов Ф.В. Применение микропроцессоров и микро-ЭВМ в радиотехнических системах: Учеб. пособие для радиотехн. спец. вузов. - М.: Высш. шк., 1988. 207 с. 18. Калиниченко Л.А., Рывкин В.М., Машины для баз данных и знаний. - М.: Наука. Гл. ред. физ.-мат. лит, 1990. - 296 с. 19. Хмелевской Б.Г. Проектирование автоматизированных информационных систем. - Саратов: Изд-во Сарат. гос. ун-та, I990. - 104 с. 20. Метлицкий Е.А., Каверзнев В.В. Системы параллельной памяти: Теория, проектирование, применение / Под ред. В.И. Тимохина - Л.: Изд-во Ленингр. ун-та, I989. - 240 с. 21. Деннис Дж.Б., Фоссин Дж.Б., Линдерман Дж.П. Схемы потока данных // Теория программирования: Тр. симпозиума. Ч. П.- Новосибирск: ВЦ СО АН СССР, 1972. - С. 7-43. 22. Библиотека информационной технологии: Cб. статей /Под ред. Г.Р.Громова. - М.: Наука. Гл. ред. физ.-мат. лит., 1990.- Вып. 1 - 208 с. 23. ЭВМ пятого поколения: Концепции, проблемы, перспективы/ Под ред. Т.Мота-Ока; Пер. с англ.; Предисл. Е.П. Велихова - М.: Финансы и статистика, 1984. - 110 с. 24. Брамм П., Брамм Д. Микропроцессор 80386 и его программирование: Пер. с англ. - М.: Мир, 1990. С. 3-100 . 25. Морс С.П., Алберг Д.Д. Архитектура микропроцессора 80286; Пер. с англ. - М.: .Радио и связь, 1990. - С. 3-86 СОДЕРЖАНИЕ Введение ……………………………………………………………….. 3 Глава 1. Вводные замечания по основным элементам теории ориентированных графов, алгоритмов и архитектуры …………….3 1. Основные определения понятий алгоритма и архитектуры …….3 2. Основные определения понятий элементов теории графов …....13 1. Три модели архитектуры вычислительной системы с различными формами представления информации ……………….15 3. Система управления современной вычислительной машины и концепция построения многоуровневой) машины ……………………..20 5. Архитектура машины базы данных и знаний ……………...........25 5. Архитектура машин, управляемых потоком данных …………...31 Глава 2. Новая информационная технология ..............................41 2.1. Традиционная и новая информационная технологии ………….41 2.2. Три события, обусловившие появление новой информационной технологии …………………...43 2.3. Архитектура ЭВМ 5-го поколения ………………………………47 Глава 3. Архитектура микропроцессоров ИНТЕЛ 8086/8088, 80286, 80386 ……………………………………………………………54 1. Микропроцессор 8086/8088 ………………………………………54 2. Микропроцессор 80286 …………………………………………...65 3. Микропроцессор 80386 ………………………………………..….85 Литература …………………………………………………………..106 Юрий Дмитриевич Пальченков ЦИФРОВЫЕ УСТРОЙСТВА И МИКРОПРОЦЕССОРЫ Конспект лекций Редактор Т. В. Веденеева Технический редактор В. Н. Спирочкина Корректор Ж. А. Лубенцова