Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Организация микропроцессоров и микропроцессорных систем. Учебное пособие

.pdf
Скачиваний:
0
Добавлен:
07.09.2026
Размер:
2 Мб
Скачать
☆
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. Выполнение. На четвертой стадии операционные устройства Penti­um осуществляют операции в АЛУ конвейеров 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
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]