Добавил:
ivanov666
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Организация микропроцессоров и микропроцессорных систем. Учебное пособие
.pdf
61
-0-
Доступ
Селектор
Смещение
15 0
Рис. 4.17
Рис. 4.18
15 0
- 0 -
Доступ
Селектор
4.6. Прерывания и исключения в микропроцессоре
Механизм прерываний в МП предусматривает обработку запросов на
обслуживание как от внешних устройств МПС (обработка прерываний),
так и от внутренних блоков МП (обработка исключений). Реакция на любой запрос, разрешенный к облуживанию, заключается в передаче управления от текущей программы к специальной процедуре.
Прерывания бывают двух видов: маскируемые и немаскируемые.
Немаскируемые поступают на вход NMI микропроцессора и обрабатываются всегда. Маскируемые подаются на вход INTR и могут разрешаться
или запрещаться битом IF регистра флагов. Прерывания обрабатываются
после завершения выполнения текущей команды. По окончании процедуры обслуживания МП продолжает выполнение программы с команды, непосредственно следующей за прерванной. Маскируемые и немаскируемые
прерывания имеют определенные коды, и им соответствуют команды МП
типа INTn, где n – номер прерывания. Используя такие команды в программе, можно реализовать программные прерывания.
Исключения делятся на отказы (нарушения), ловушки и выходы из
процесса (аварии). Исключения различаются в зависимости от способа сообщения о них и возможности перезапуска МП с вызвавшей их команды.
Отказ – это исключение, которое выявляется и обслуживается перед
выполнением команды, например неразрешенный код команды, обращение к несуществующему сегменту, ошибка деления. После обработки такого исключения выполнение программы продолжается с рестарта команды, вызвавшей нарушение.
Ловушка – это исключение, которое возникает непосредственно после выполнения команды. Например, переполнение. После обработки исключения выполнение программы продолжается со следующей команды.
Выход из процесса (авария) используется для сообщения о крупных
ошибках (неисправность блоков, двойная ошибка). Причину аварии установить нельзя, поэтому программа снимается с обработки.
Особенности системы прерываний МП с архитектурой х86 связаны с
наличием виртуальных адресов и механизма защиты задач. В целом они
сводятся к передаче управления от текущей задачи к процессу обработки

62
через специальную таблицу прерываний. Она содержат список указателей
обработчиков прерываний и исключений (процедур обслуживания).
4.6.1. Организация таблиц прерываний
В реальном режиме таблица прерываний содержит четырехбайтные
элементы (векторы). Первые 16 разрядов вектора загружаются в регистр
CS и являются базой, а другие 16 разрядов загружаются в регистр IP и
представляют собой смещение. Логический адрес CS:IP определяет начало
соответствующей процедуры обслуживания прерывания или исключения.
Векторы прерываний объединяются в таблицу, которая называется табли-
цей векторов прерываний, размещаемой в ОП по адресам 000h…3FFh.
В защищенном режиме таблица прерываний содержит в качестве
указателей восьмибайтные дескрипторы шлюзов. Она называется деск-
рипторной таблицей прерываний (IDT). Обобщенный формат дескриптора
шлюза IDT показан на рис. 4.18, где поле Селектор указывает на дескриптор исполняемого сегмента в GDT или LDT, а поле Смещение задает начало программы обработки прерывания/исключения.
Размер и размещение таблицы в ОП определяются с помощью регистра IDTR. Организация таблиц прерываний показана на рис. 4.19.
Рис. 4.19
Обращение к элементам таблиц осуществляется по восьмиразрядному коду (номеру) прерывания. Различные источники прерыва-

63
ний/исключений задают его по-разному. Так, исключение вводит его изнутри. Команды вызова процедур обработки прерываний INTn, INT0, INT3
содержат или предполагают этот номер. Аппаратное маскируемое прерывание вводит его посредством цикла магистрали «подтверждение прерывания». Немаскируемому аппаратному прерыванию NMI назначен код 2.
4.6.2. Типы шлюзов дескрипторной таблицы прерываний
В таблицу IDT можно помещать дескрипторы шлюзов трех типов:
задачи, прерывания, ловушки. Шлюз задачи используется для переключения задач, а шлюзы прерывания и ловушки - для вызова соответствующих
процедур обслуживания. В последних случаях обработка происходит в
рамках текущей задачи.
Шлюзы прерывания и ловушки похожи на вызов процедуры прерывания через шлюз вызова. При обработке прерывания через эти шлюзы в
стеке сохраняются регистр флагов FLAGS и текущее значение адреса
CS:IP. Далее в МП вводится восьмиразрядный код с номером прерывания/исключения. По нему выбирается соответствующий шлюз IDT. Дескриптор шлюза указывает на соответствующую процедуру обслуживания. В
конце этой процедуры командой выхода из прерывания IRET старое состояние процесса восстанавливается и программа начинает работу с прерванной команды.
Разница в использовании этих шлюзов лишь в том, что в шлюзе прерывания сбрасывается флаг IF, а в шлюзе ловушек нет. В последнем случае
при выполнении исключения сохраняется способность МП реагировать на
прерывание от внешних устройств.
Дескрипторы шлюзов прерывания и ловушки отличаются кодом в
поле ТИП байта прав доступа. Для прерываний код этого поля равен 1110,
для ловушек - 1111.
При использовании шлюза задачи производится полное переключение задачи при возникновении прерывания. Этот процесс включает следующие действия: 1) сохраняется состояние прерванной задачи в TSS;
2) загружается состояние новой задачи из соответствующего TSS; 3) помещается в поле обратной связи этого TSS селектор прерванной задачи;
4) выполняется первая команда программы обработчика прерывания по
адресу CS:IP из TSS новой задачи.
Очевидно, что процесс переключения задач выполняется медленнее
вызова процедуры через шлюзы прерывания или ловушки, но он обеспечивает большее изолирование прерванной программы от программы обработчика. Используется для обработки прерываний от внешних устройств.
Это связано с тем, что такие запросы предназначаются ОС и не относятся к
текущей задаче.

64
5. ОРГАНИЗАЦИЯ МПС НА ОСНОВЕ МИКРОПРОЦЕССОРОВ
С АРХИТЕКТУРОЙ х86/32
32-разрядные МП с архитектурой х86/32 являются развитием архитектуры микропроцессоров х86/16, работающих в защищенном режиме.
Они имеют все достоинства своих предшественников и полностью совместимы с программным обеспечением 16-разрядных микропроцессоров.
Микропроцессоры с архитектурой х86/32 могут работать с 8-, 16или 32-битными операндами, строками байт, слов и двойных слов, а также
битами и строками бит. За счет 32-разрядной организации шины адреса в
них возможно обращение к физическому адресному пространству до 4 ГБ,
которое у МП старших поколений увеличено до 16 ГБ.
32-разрядные микропроцессоры обеспечивают поддержку виртуальной памяти, объемом до 24 ТБ. Адресное пространство ввода-вывода составляет 64 КБ. В 32-разрядном микропроцессоре с архитектурой х86 усовершенствована защита данных путем применения помимо сегментации
страничной организации памяти. Предусмотрены новые возможности тестирования и отладки с аппаратной поддержкой.
5.1. Развитие микропроцессоров с архитектурой x86/32
Рассмотрим, как изменялась организация МП с архитектурой х86.
Структурная схема первого поколения микропроцессоров с архитектурой
x86/32 (МП I80368 фирмы Intel) подобна представленной на рис. 4.1. Отличием являются 32-разрядные шины адресов и данных.
Такой МП состоит из пяти устройств, работающих параллельно.
Шинный интерфейс обеспечивает связь микропроцессора с внешними
устройствами микропроцессорной системы. Устройство предвыборки ко-
манд осуществляет опережающий просмотр команд программы. Используется для вызова этих команд из памяти и создания 16-байтной очереди команд. Устройство дешифрации команд предназначено для дешифрации
всех полей команды и организации очереди из 3 дешифрированных команд. Операционное устройство выполняет команды из очереди команд,
взаимодействуя со всеми другими блоками МП, требуемыми для завершения выполнения команд. Устройство управления памятью (УУП) предназначено для организации и управления логическим, линейным и физическим адресными пространствами, для защиты памяти и переключения задач.
УУП содержит блок сегментации и блок страничной адресации. Первый блок преобразует логические адреса в линейные по запросам ОУ. Для
ускорения этого преобразования текущие дескрипторы сегментов помещаются во встроенную кэш-память. Линейный адрес поступает в блок
страничной адресации. Если механизм трансляции адресов включен, то
линейные адреса преобразуются в физические. Если выключен, то это оз-

65
Кэш-
память
Шинный
интер-
фейс
Устройство обработки данных
с плавающей
точкой
АЛУ
Устройство
дешифрации
команд
Блок
сегментации
Блок
страничной адресации
Буфер ассоциативной
трансляции
Устройство управления памятью
Блок
управления
МП
Устройство
предвыборки
команд
Буфер
команд
Внутренняя шина
Системная
шина
Операционное
устройство
АЛУ
РОН
РОН
.
.
.
начает, что линейный адрес совпадает с физическим. Для ускорения трансляции адресов используется кэш-память (буфер ассоциативной трансляции), где помещается каталог недавно использованных страниц.
Базовую архитектуру х86/32 представляют МП второго поколения.
Примером такого микропроцессора является МП i486, структура которого
приведена на рис. 5.1.
По сравнению с микропроцессорами первого поколения в его архитектуру введены следующие изменения: используется внутреннее устройство для операций с плавающей точкой (ПТ); на кристалле микропроцессора размещается кэш-память команд и данных первого уровня; поддерживается внешняя кэш-память второго уровня; используются методы с
RISC организацией вычислений, при которых большинство операций выполняются за один такт; усовершенствованы система синхронизации,
структура магистрали и протоколы обмена.
МП второго поколения включает следующие устройства: устройство
обработки данных с ПТ; устройство управления памятью; устройство кэшпамяти; шинный интерфейс; операционное устройство; устройство дешифрации команд; устройство предвыборки команд.
Устройство обработки данных с ПТ по своей структуре и с точки
зрения программного обеспечения во многом соответствует математическому сопроцессору, рассмотренному в разделе 2. Устройство кэш-памяти
имеет размер 8 КБ и позволяет существенно повысить производительность
микропроцессора за счет буферизации часто используемых команд и данных, что сокращает число обращений к ОП. Заполнение строк кэш-памяти
Рис. 5.1

66
выполняется быстрыми пакетными циклами. Остальные устройства аналогичны соответствующим устройствам МП I80386.
Структурная схема 3-го поколения 32-разрядных микропроцессоров
с архитектурой x86 (Pentium) представлена на рис. 5.2.
Рис. 5.2
По сравнению с предшественниками этот микропроцессор обладает
рядом следующих технических новшеств: наличием двух вычислительных
конвейеров V и U, осуществляющих параллельную обработку команд (в
результате реализуется суперскалярный режим работы, позволяющий за
один такт выполнять до двух команд); наличием блока прогнозирования
ветвлений, позволяющего предсказать адрес перехода и заблаговременно
загрузить команды с этого адреса в дополнительный буфер (очередь команд); наличием 8-ступенчатого конвейера для выполнения операции с
ПТ; наличием двух разновидностей кэш-памяти для команд и кэш-памяти
для данных; внешняя шина данных имеет ширину 64 бита; наличием конвейеризации адресов.
МП третьего поколения содержит следующие устройства. Шинный
интерфейс и устройство управления памятью, которые во многом анало-
гичны рассмотренным ранее, только шина данных 64-разрядная. Внутрен-
няя кэш-память, которая содержит две отдельные секции по 8 КБ (кэш
команд и кэш данных). Наличие раздельных кэшей дает возможность одновременного доступа к ним. За один такт могут быть произведены два

67
обращения к данным и прочитаны 32 байта команд. Устройство предвыборки команд, состоящее из двух 32-байтовых буферов предвыборки и
блока прогнозирования ветвлений.
Эти буферы участвуют в предвыборке команд следующим образом.
В каждый момент времени предвыборка команд производится только в
один из буферов. Предвыборка производится последовательно до тех пор,
пока не будет выбрана команда перехода. За этим в ходе предвыборки следит блок прогнозирования ветвлений. Если он предсказывает, что будет
переход, то включается второй буфер и в него осуществляется предвыборка команд начиная с той, на которую должен произойти переход. Второй
буфер становится основным, и процесс продолжается аналогичным образом. Если определено, что перехода не будет, то основная последовательность упреждающей выборки не нарушается и продолжает работать первый буфер. Если переход предсказан ошибочно, то буферы предвыборки
очищаются и предвыборка начинается снова. В случае неверного предсказания перехода микропроцессор теряет от 3-х до 4-х тактов.
Устройство декодирования команд, которое служит для одновре-
менного декодирования двух команд для конвейеров V, U и запуска конвейеров для выполнения команд. Для повышения быстродействия введены
две ступени декодирования команды для каждого конвейера. На первом
этапе декодер принимает команду из устройства предвыборки и определяет, можно ли запустить две соседние команды как пару. На втором этапе
формирует управляющее слово, которое используется для координации
работы конвейера. Устройство управления, которое преобразует внутреннюю команду (микрокод) от устройства декодирования команд в набор
микрокоманд для управления всеми устройствами микропроцессора. Уст-
ройство генерации адресов служит для определения адресов операндов в
памяти для V- и U-конвейеров, что позволяет ему работать в суперскалярном режиме и выполнять за один такт более одной команды.
Рассмотрим, как выполняются стадии конвейера МП Pentium. В микропроцессоре при выполнении команд параллельно работают два пятиступенчатых конвейера U и V. Это позволяет за один такт выполнять две целочисленных команды. U-конвейер может выполнять любую команду, в
том числе и с ПТ, так как в него входит и сопроцессор, а V-конвейер может выполнять только простые команды. Порядок прохождения команд по
обоим конвейерам не отличается от порядка их следования в выполняемой
программе. При параллельном выполнении двух команд они проходят каждую ступень конвейеров V и U синхронно. Если команда одного конвейера будет на какой-то ступени обработана раньше, чем команда другого, то
первая будет ждать вторую, чтобы одновременно поступить на следующую ступень. Кроме того, если нельзя выполнить в исполняемом блоке
одновременно две команды, то работает один конвейер, а вторая команда
запускается на исполнение только после выполнения первой.

68
Для того чтобы две команды могли выполняться параллельно, они
должны удовлетворять следующим основным условиям совместного выполнения: обе команды должны быть простыми; между ними не должно
быть регистровых зависимостей типа “запись после чтения” или “чтение
после записи”; ни одна из команд не может содержать одновременно смещение и непосредственный операнд и т.д.
Опишем стадии конвейера МП Pentium более подробно.
1. Предвыборка команд. На первой стадии осуществляется предвыборка команд в один из буферов устройства предвыборки команд из кэша
команд или из ОП, если следующей команды в кэше нет. Предвыборка команд с заполнением буферов предвыборки производится с учетом прогнозирования ветвлений, что позволяет повысить производительность Pentium
на 25 %.
2. Декодирование команд. На второй стадии устройство декодирова-
ния декодирует две команды. Декодеры в соответствии с правилами спаривания команд определяют, сколько команд (одна или две) будут выполняться одновременно.
3. Генерация адреса. На третьей стадии с помощью схемы генерации
адреса определяются адреса операндов в памяти.
4. Выполнение. На четвертой стадии операционные устройства Pentium осуществляют операции в АЛУ конвейеров V и U. На данной стадии
все команды переходов конвейера V проверяются на правильность предсказания переходов. На первой стадии конвейера устройство опережающей
выборки загружает во второй буфер предвыборки последовательность команд как бы на всякий случай, если такой переход по условию состоится.
Но это условие станет известно только на четвертом этапе после формирования признаков перехода. В целом за счет применения специальных алгоритмов блок предсказания ветвлений указывает правильный путь с вероятностью около 75-80 %.
5. Запись результата. На последней стадии осуществляется запись
результата в регистры МП или память. Здесь перед записью производятся
также проверка правильности условных ветвлений команд, проходящих
через V-конвейер, и очистка буферов предвыборки, если ветвление было
предсказано неправильно.
Дальнейшее развитие архитектуры х86/32 в МП Pentium+ шло в
следующих направлениях.
Динамическое исполнение. Сюда относятся комбинации следующих
методов: предсказание переходов; переупорядочение команд; исполнение
команд с опережением.
Организация двойной независимой шины (предусматривает исполь-
зование разных шин). Первая из шин работает на тактовой частоте МП,
вторая с частотой системной шины. В этом случае отпадает необходимость
в отдельном внешнем кэше. В таких МП используются различные кэш-

69
ОЗУ
Кэш L2
Буферы
записи
Системная шина
Шинный интерфейс
Блок
выбора
команд
Кэш
команд
L1
Блок вы-
бора ад-
реса
Кэш
данных
L1
Pentium+
Pentium
памяти первого уровня L1 для данных и команд, а также объединенный
кэш второго уровня L2. Структурная схема, отражающая организацию
кэш-памяти в Pentium+, изображена на рис. 5.3.
Рис. 5.3
Кэш-память первого уровня реализована на статическом ЗУ и разделена на две части. Доступ к памяти осуществляется за один-два такта. Размер составляет 16 КБ. Кэш L2 (общий для команд и данных) реализован на
динамическом ЗУ. Доступ осуществляется за пять-семь тактов, размер - от
256 КБ. Для временного хранения информации, которую необходимо записать в ОЗУ, кэш L2 использует буферы записи.
Поддержка выполнения мультимедийного набора команд. Добавлено 57 новых MMX-команд, направленных на обработку мультимедийных
данных. Выполнение этих команд обеспечивается введением дополнительного ММХ-устройства с ММХ-регистрами, которые физически совместимы с регистрами R0 - R7 математического сопроцессора.
5.2. Регистровая организация МП с архитектурой x86/32
В программной модели 32-разрядного микропроцессора выделяют:
основные функциональные регистры; регистры устройства обработки данных с плавающей точкой (математического сопроцессора); системные регистры; регистры отладки и тестирования.
Группа основных функциональных регистров включает следующие
элементы. Регистры общего назначения предназначены для хранения адресов и данных. Такие регистры являются расширением соответствующих
регистров 16-разрядных МП с архитектурой х86/16. Форматы РОН представлены на рис. 5.4.

70
База 31-24 G D Размер19-16 Доступ База 23-16
База 15-0 Размер 15-0
31 24 23 22 19 16 15 8 7 0
Рис. 5.4
Регистр указателя команд и регистр флагов имеют длину 32 разряда. Биты младшего слова каждого из этих регистров (разряды 0...15) функционально соответствуют аналогичным разрядам в 16-разрядном микропроцессоре. Форматы регистров представлены на рис. 5.5.
Рис. 5.5
Указатель команд в 32-разрядных МП является расширением регистра IP. Он называется EIP и отсчитывает относительный адрес от базы текущего сегмента кодов. Регистр флагов ЕFLAGS содержит флаги состояния 16-разрядного регистра FLAGS, отражающие результат выполнения
команды, а также флаги, которые управляют вводом/выводом, маскируемыми прерываниями, трассировкой. В защищенном 32-разрядном режиме
появились два новых бита: VM – включение режима виртуального МП
I8086 в защищенном режиме; RF – флаг возобновления, который используется в отладочном режиме с применением точек останова.
Количество сегментных регистров увеличено с четырех до шести:
CS - регистр сегмента кодов; SS - регистр сегмента стека; DS, ES, FS, GS регистры сегмента данных. Эти регистры содержат значения селекторов
сегментов. Их форматы аналогичны защищенному 16-разрядному режиму.
Однако связанные с ними дескрипторы отличаются от дескрипторов 16разрядного защищенного режима. Формат несистемных дескрипторов (дескрипторов кодов или данных) представлен на рис. 5.6.
Рис. 5.6
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]
