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

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

.pdf
Скачиваний:
0
Добавлен:
07.09.2026
Размер:
1 Мб
Скачать
41
Дескриптор шлюза
вызова (LDT)
- 0 -
Доступ
Счетчик
Селектор
Смещение
CALL Progr_A
Регистр CS
Дескриптор сегмента
кода (LDT)
ОП
Конец сегмента
Начальный адрес
Progr_A
Регистр IP
- 0 -
Доступ
Базовый
адрес сегмента
Размер
Начало сегмента
Рис. 3.15
5. Ограничение набора команд. Определенные команды могут влиять
на механизм защиты и вмешиваться в обычный порядок работы системы. Поэтому такие команды могут исполняться только процедурами с доста­точно высоким уровнем привилегий. МП с архитектурой х86 имеют два класса команд ограниченного применения: привилегированные команды и чувствительные команды. Первые могут выполняться, только когда уро­вень CPL=0, иначе возникает прерывание. Такими командами являются за­грузка регистров дескрипторных таблиц LDTR, GDTR, IDTR, загрузка ре­гистра задач TR, слова состояния машины MSW и другие.
Ко второму классу относятся команды ввода/вывода IN, OUT, INS,
OUTS. Они работают с периферийными устройствами, которые должны координироваться ОС. Сюда же относятся команды разреше­ния/запрещения прерывания, определяющие восприятие микропроцессо­ром маскируемых аппаратных запросов на обслуживание. Уровень, на ко­тором программы могут выполнять чувствительные команды, задается по­лем IOPL регистра флагов. Изменение значения поля IOPL возможно толь­ко на уровне CPL=0 привилегированной командой.
3.5. Мультизадачность и переключение задач
Процесс выполнения нескольких задач называется мультизадачно­стью. МП с архитектурой х86 в любой момент времени выполняет только одну задачу, которая является активной, остальные пассивные.
42
Переход от одной задачи к другой называется переключением задач.
Он включает в себя смену контекста или состояния задачи, куда относятся все элементы, которые изменяются при переходе к другой задаче (в основ­ном - содержимое регистров). При переключении задач всегда сохраняется состояние уходящей задачи, затем загружается состояние приходящей за­дачи и начинается ее выполнение.
Имеются аппаратные и программные причины переключения задач.
Задача, которая начинает выполняться в результате прерывания, называет­ся планируемой аппаратно. Задача, которая начинает выполняться по тре­бованию ОС, - планируемой программно. Пользовательские задачи плани­руются программно, обслуживание периферийных устройств в реальном времени – аппаратно.
Известно, что в МП каждая задача имеет сегменты кода и данных, расположение которых в памяти определяется LDT. Кроме того, каждая задача имеет свой специальный сегмент состояния задачи TSS, который хранит состояние регистров, когда задача пассивна.
Микропроцессор распознает TSS как особый системный сегмент. Он имеет в GDT специальный дескриптор. Формат его похож на дескриптор сегментов кода и данных (рис. 3.8), но бит S=0, а поле ТИП содержит код 00B1, где B - бит занятости. Он устанавливается в 1 при переключении на заданную задачу и используется для обнаружения попытки переключения на задачу, выполнение которой прервано. Переключение задач произво­дится только при В=0.
Обращение к TSS производится с помощью 16-битных селекторов. Селектор TSS текущей задачи хранится в регистре задачи TR. Он состоит из двух частей: «видимой», которая доступна программно, и «невидимой», т.е. программно недоступной. Задача может обращаться к «видимой» час­ти, т.е. к селектору дескриптора для последнего TSS. Невидимая часть со­держит дескрипторный кэш, к которому задача не имеет доступа.
При переключении задач изменяется селектор TSS. После этого МП автоматически загружает информацию о сегменте состояния задачи из де­скриптора TSS таблицы GDT в «невидимую» часть дескриптора TR. После этого можно адресоваться к TSS новой задачи для восстановления состоя­ния регистров. Схематично это показано на рис. 3.16. Если селектор ТSS указывает на несистемные дескрипторы кодов или данных, то возникает прерывание.
Рассмотрим более подробно содержимое сегмента TSS. Его наи­большая часть занята данными из регистров, описывающих состояние за­дачи: восемь общих регистров (AX, BX, CX, DX, SI, DI, BP, SP); указатель команды IP; регистр флагов FLAGS; четыре сегментных регистра (DS, ES, SS, CS); регистр задачи TR; регистр LDТR. Последние два регистра нужны для того, чтобы знать, где сохранить состояние задачи при выходе из нее и где располагаются сегменты данных и кодов для этой задачи. Состояние
43
Селектор
- 0 -
Доступ
адрес сегмента
Размер
Базовый
Базовый адрес сегмента
Доступ
Размер
«видимая» часть
15 0
«Невидимая» часть (дескрипторный кэш)
Конец TSS
: :
Начало TSS
ОП
Дескриптор TSS
Сегмент TSS
других системных регистров не зависит от задачи и поэтому в TSS не включается.
Рис. 3.16
Помимо этой информации TSS содержит поле обратной связи с пре­дыдущей задачей (селектор TSS обратной связи). Кроме того, защита тре­бует, чтобы каждый уровень привилегий в каждой задаче имел отдельный стек. Поэтому в TSS имеется место для 3-х указателей SS:SP.
Обычно в ОС принято расширять понятие TSS и объявлять альтерна­тивный сегмент данных. Он включает в себя память для TSS и дополни­тельную память для другой информации о задаче, где обычно сохраняется состояние регистров математического сопроцессора.
Переключение задач производится командами JМР и CALL. При этом должно выполняться правило привилегий, установленное для доступа к данным, вида DPL
max (CPL, RPL). Но также имеется возможность
TSS
коду с низкой привилегией выполнить переключение задач. Это произво­дится с помощью шлюза задачи, применение которого аналогично исполь­зованию шлюза вызова. Дескрипторы шлюза задачи помещаются в LDТ и имеют формат, приведенный на рис. 3.17, где поле ТИП байта прав досту­па содержит код 0101.
Каждое переключение задачи устанавливает бит TS в регистре MSW, который показывает, что контекст сопроцессора может не соответ­ствовать текущей задаче.
44
-0-
Доступ
Селектор
Смещение
15 0
Рис. 3.17
Рис. 3.18
15 0
- 0 -
Доступ
Селектор
3.6. Прерывания и исключения в микропроцессоре
Механизм прерываний в МП предусматривает обработку запросов на
обслуживание как от внешних устройств МПС (обработка прерываний), так и от внутренних блоков МП (обработка исключений). Реакция на лю­бой запрос, разрешенный к облуживанию, заключается в передаче управ­ления от текущей программы к специальной процедуре. Прерывания бывают двух видов: маскируемые и немаскируемые. Немаскируемые поступают на вход NMI микропроцессора и обрабатыва­ются всегда. Маскируемые подаются на вход INTR и могут разрешаться или запрещаться битом IF регистра флагов. Прерывания обрабатываются после завершения выполнения текущей команды. По окончании процеду­ры обслуживания МП продолжает выполнение программы с команды, не­посредственно следующей за прерванной. Маскируемые и немаскируемые прерывания имеют определенные коды, и им соответствуют команды МП типа INTn, где n – номер прерывания. Используя такие команды в про­грамме, можно реализовать программные прерывания. Исключения делятся на отказы (нарушения), ловушки и выходы из процесса (аварии). Исключения различаются в зависимости от способа со­общения о них и возможности перезапуска МП с вызвавшей их команды.
Отказ – это исключение, которое выявляется и обслуживается перед
выполнением команды, например неразрешенный код команды, обраще­ние к несуществующему сегменту, ошибка деления. После обработки та­кого исключения выполнение программы продолжается с рестарта коман­ды, вызвавшей нарушение.
Ловушка – это исключение, которое возникает непосредственно по­сле выполнения команды. Например, переполнение. После обработки ис­ключения выполнение программы продолжается со следующей команды.
Выход из процесса (авария) используется для сообщения о крупных ошибках (неисправность блоков, двойная ошибка). Причину аварии уста­новить нельзя, поэтому программа снимается с обработки. Особенности системы прерываний МП с архитектурой х86 связаны с наличием виртуальных адресов и механизма защиты задач. В целом они сводятся к передаче управления от текущей задачи к процессу обработки
45
через специальную таблицу прерываний. Она содержит список указателей обработчиков прерываний и исключений (процедур обслуживания).
3.6.1. Организация таблиц прерываний
В реальном режиме таблица прерываний содержит четырехбайтные
элементы (векторы). Первые 16 разрядов вектора загружаются в регистр CS и являются базой, а другие 16 разрядов загружаются в регистр IP и представляют собой смещение. Логический адрес CS:IP определяет начало соответствующей процедуры обслуживания прерывания или исключения. Векторы прерываний объединяются в таблицу, которая называется табли- цей векторов прерываний, размещаемой в ОП по адресам 000h3FFh.
В защищенном режиме таблица прерываний содержит в качестве
указателей восьмибайтные дескрипторы шлюзов. Она называется деск- рипторной таблицей прерываний (IDT). Обобщенный формат дескриптора шлюза IDT показан на рис. 3.18, где поле Селектор указывает на дескрип­тор исполняемого сегмента в GDT или LDT, а поле Смещение задает нача­ло программы обработки прерывания/исключения.
Размер и размещение таблицы в ОП определяются с помощью реги-
стра IDTR. Организация таблиц прерываний показана на рис. 3.19.
Рис. 3.19
Обращение к элементам таблиц осуществляется по восьмиразрядно­му коду (номеру) прерывания. Различные источники прерываний / исклю-
46
чений задают его по-разному. Так, исключение вводит его изнутри. Ко­манды вызова процедур обработки прерываний INTn, INT0, INT3 содержат или предполагают этот номер. Аппаратное маскируемое прерывание вво­дит его посредством цикла магистрали «подтверждение прерывания». Не­маскируемому аппаратному прерыванию NMI назначен код 2.
3.6.2. Типы шлюзов дескрипторной таблицы прерываний
В таблицу IDT можно помещать дескрипторы шлюзов трех типов: задачи, прерывания, ловушки. Шлюз задачи используется для переключе­ния задач, а шлюзы прерывания и ловушки - для вызова соответствующих процедур обслуживания. В последних случаях обработка происходит в рамках текущей задачи. Шлюзы прерывания и ловушки похожи на вызов процедуры преры­вания через шлюз вызова. При обработке прерывания через эти шлюзы в стеке сохраняются регистр флагов FLAGS и текущее значение адреса CS:IP. Далее в МП вводится восьмиразрядный код с номером прерыва­ния/исключения. По нему выбирается соответствующий шлюз IDT. Деск­риптор шлюза указывает на соответствующую процедуру обслуживания. В конце этой процедуры командой выхода из прерывания IRET старое со­стояние процесса восстанавливается и программа начинает работу с пре­рванной команды.
Разница в использовании этих шлюзов лишь в том, что в шлюзе пре­рывания сбрасывается флаг IF, а в шлюзе ловушек нет. В последнем случае при выполнении исключения сохраняется способность МП реагировать на прерывание от внешних устройств.
Дескрипторы шлюзов прерывания и ловушки отличаются кодом в поле ТИП байта прав доступа. Для прерываний код этого поля равен 1110, для ловушек - 1111. При использовании шлюза задачи производится полное переключе­ние задачи при возникновении прерывания. Этот процесс включает сле­дующие действия: 1) сохраняется состояние прерванной задачи в TSS;
2) загружается состояние новой задачи из соответствующего TSS; 3) по­мещается в поле обратной связи этого TSS селектор прерванной задачи;
4) выполняется первая команда программы обработчика прерывания по адресу CS:IP из TSS новой задачи.
Очевидно, что процесс переключения задач выполняется медленнее вызова процедуры через шлюзы прерывания или ловушки, но он обеспе­чивает большее изолирование прерванной программы от программы обра­ботчика. Используется для обработки прерываний от внешних устройств. Это связано с тем, что такие запросы предназначаются ОС и не относятся к текущей задаче.
47
4. ОРГАНИЗАЦИЯ МПС НА ОСНОВЕ МИКРОПРОЦЕССОРОВ
С АРХИТЕКТУРОЙ х86/32
32-разрядные МП с архитектурой х86/32 являются развитием архи­тектуры микропроцессоров х86/16, работающих в защищенном режиме. Они имеют все достоинства своих предшественников и полностью совмес­тимы с программным обеспечением 16-разрядных микропроцессоров.
Микропроцессоры с архитектурой х86/32 могут работать с 8-, 16­или 32-битными операндами, строками байт, слов и двойных слов, а также битами и строками бит. За счет 32-разрядной организации шины адреса в них возможно обращение к физическому адресному пространству до 4 ГБ, которое у МП старших поколений увеличено до 16 ГБ.
32-разрядные микропроцессоры обеспечивают поддержку виртуаль­ной памяти, объемом до 24 ТБ. Адресное пространство ввода-вывода со­ставляет 64 КБ. В 32-разрядном микропроцессоре с архитектурой х86 усо­вершенствована защита данных путем применения помимо сегментации страничной организации памяти. Предусмотрены новые возможности тес­тирования и отладки с аппаратной поддержкой.
4.1. Развитие микропроцессоров с архитектурой x86/32
Рассмотрим, как изменялась организация МП с архитектурой х86. Структурная схема первого поколения микропроцессоров с архитектурой x86/32 (МП I80368 фирмы Intel) подобна представленной на рис. 3.1. От­личием являются 32-разрядные шины адресов и данных.
Такой МП состоит из пяти устройств, работающих параллельно. Шинный интерфейс обеспечивает связь микропроцессора с внешними устройствами микропроцессорной системы. Устройство предвыборки ко- манд осуществляет опережающий просмотр команд программы. Использу­ется для вызова этих команд из памяти и создания 16-байтной очереди ко­манд. Устройство дешифрации команд предназначено для дешифрации всех полей команды и организации очереди из 3 дешифрированных ко­манд. Операционное устройство выполняет команды из очереди команд, взаимодействуя со всеми другими блоками МП, требуемыми для заверше­ния выполнения команд. Устройство управления памятью (УУП) предна­значено для организации и управления логическим, линейным и физиче­ским адресными пространствами, для защиты памяти и переключения за­дач.
УУП содержит блок сегментации и блок страничной адресации. Пер­вый блок преобразует логические адреса в линейные по запросам ОУ. Для ускорения этого преобразования текущие дескрипторы сегментов поме­щаются во встроенную кэш-память. Линейный адрес поступает в блок страничной адресации. Если механизм трансляции адресов включен, то линейные адреса преобразуются в физические. Если выключен, то это оз-
48
Кэш-
память
Шинный
интер-
фейс
Устройство об-
работки данных
с плавающей
точкой
АЛУ
Устройство
дешифра-
ции команд
Блок
сегментации
Блок
страничной адресации
Буфер ассоциативной
трансляции
Устройство управления памятью
Блок управле-
ния МП
Устройство предвыбор-
ки команд
Буфер
команд
Внутрен­няя шина
Системная
шина
Операционное
устройство
АЛУ
РОН
РОН
. . .
начает, что линейный адрес совпадает с физическим. Для ускорения транс­ляции адресов используется кэш-память (буфер ассоциативной трансля­ции), где помещается каталог недавно использованных страниц.
Базовую архитектуру х86/32 представляют МП второго поколения. Примером такого микропроцессора является МП i486, структура которого приведена на рис. 4.1.
По сравнению с микропроцессорами первого поколения в его архи­тектуру введены следующие изменения: используется внутреннее устрой­ство для операций с плавающей точкой (ПТ); на кристалле микропроцес­сора размещается кэш-память команд и данных первого уровня; поддер­живается внешняя кэш-память второго уровня; используются методы с RISC организацией вычислений, при которых большинство операций вы­полняются за один такт; усовершенствованы система синхронизации, структура магистрали и протоколы обмена.
МП второго поколения включает следующие устройства: устройство обработки данных с ПТ; устройство управления памятью; устройство кэш­памяти; шинный интерфейс; операционное устройство; устройство де­шифрации команд; устройство предвыборки команд.
Устройство обработки данных с ПТ по своей структуре и с точки зрения программного обеспечения во многом соответствует математиче­скому сопроцессору, рассмотренному в разделе 2. Устройство кэш-памяти имеет размер 8 КБ и позволяет существенно повысить производительность микропроцессора за счет буферизации часто используемых команд и дан­ных, что сокращает число обращений к ОП. Заполнение строк кэш-памяти
Рис. 4.1
49
выполняется быстрыми пакетными циклами. Остальные устройства анало­гичны соответствующим устройствам МП I80386.
Структурная схема 3-го поколения 32-разрядных микропроцессоров
с архитектурой x86 (Pentium) представлена на рис. 4.2.
Рис. 4.2
По сравнению с предшественниками этот микропроцессор обладает
рядом следующих технических новшеств: наличие двух вычислительных конвейеров V и U, осуществляющих параллельную обработку команд (в результате реализуется суперскалярный режим работы, позволяющий за один такт выполнять до двух команд); наличие блока прогнозирования ветвлений, позволяющего предсказать адрес перехода и заблаговременно загрузить команды с этого адреса в дополнительный буфер (очередь ко­манд); наличие 8-ступенчатого конвейера для выполнения операции с ПТ; наличие двух разновидностей кэш-памяти для команд и кэш-памяти для данных; внешняя шина данных имеет ширину 64 бита; наличие конвейери­зации адресов.
МП третьего поколения содержит следующие устройства. Шинный интерфейс и устройство управления памятью, которые во многом анало- гичны рассмотренным ранее, только шина данных 64-разрядная. Внутрен- няя кэш-память, которая содержит две отдельные секции по 8 КБ (кэш команд и кэш данных). Наличие раздельных кэшей дает возможность од­новременного доступа к ним. За один такт могут быть произведены два
50
обращения к данным и прочитаны 32 байта команд. Устройство предвы­борки команд, состоящее из двух 32-байтовых буферов предвыборки и
блока прогнозирования ветвлений.
Эти буферы участвуют в предвыборке команд следующим образом. В каждый момент времени предвыборка команд производится только в один из буферов. Предвыборка производится последовательно до тех пор, пока не будет выбрана команда перехода. За этим в ходе предвыборки сле­дит блок прогнозирования ветвлений. Если он предсказывает, что будет переход, то включается второй буфер и в него осуществляется предвыбор­ка команд начиная с той, на которую должен произойти переход. Второй буфер становится основным, и процесс продолжается аналогичным обра­зом. Если определено, что перехода не будет, то основная последователь­ность упреждающей выборки не нарушается и продолжает работать пер­вый буфер. Если переход предсказан ошибочно, то буферы предвыборки очищаются и предвыборка начинается снова. В случае неверного предска­зания перехода микропроцессор теряет от 3-х до 4-х тактов.
Устройство декодирования команд, которое служит для одновре- менного декодирования двух команд для конвейеров V, U и запуска кон­вейеров для выполнения команд. Для повышения быстродействия введены две ступени декодирования команды для каждого конвейера. На первом этапе декодер принимает команду из устройства предвыборки и определя­ет, можно ли запустить две соседние команды как пару. На втором этапе формирует управляющее слово, которое используется для координации работы конвейера. Устройство управления, которое преобразует внутрен­нюю команду (микрокод) от устройства декодирования команд в набор микрокоманд для управления всеми устройствами микропроцессора. Уст- ройство генерации адресов служит для определения адресов операндов в памяти для V- и U-конвейеров, что позволяет ему работать в суперскаляр­ном режиме и выполнять за один такт более одной команды.
Рассмотрим, как выполняются стадии конвейера МП Pentium. В мик­ропроцессоре при выполнении команд параллельно работают два пятисту­пенчатых конвейера U и V. Это позволяет за один такт выполнять две це­лочисленных команды. U-конвейер может выполнять любую команду, в том числе и с ПТ, так как в него входит и сопроцессор, а V-конвейер мо­жет выполнять только простые команды. Порядок прохождения команд по обоим конвейерам не отличается от порядка их следования в выполняемой программе. При параллельном выполнении двух команд они проходят ка­ждую ступень конвейеров V и U синхронно. Если команда одного конвей­ера будет на какой-то ступени обработана раньше, чем команда другого, то первая будет ждать вторую, чтобы одновременно поступить на следую­щую ступень. Кроме того, если нельзя выполнить в исполняемом блоке одновременно две команды, то работает один конвейер, а вторая команда запускается на исполнение только после выполнения первой.
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]