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

лекции АКС / лекции АКС / Лекция 10_ организация регистров

.doc
Скачиваний:
53
Добавлен:
26.02.2016
Размер:
60.42 Кб
Скачать

8

Тема №14. Процессор Pentium.

Рассмотрим укрупненную схему процессора Pentium.

Ядро процессора включает четыре основных узла:

  1. Узел извлечения/декодирования. Извлекает по порядку команды из кэша команд L1, декодирует их, формирует последовательность микроопераций и запоминает их в буфере микрокоманд

  2. Буфер микрокоманд. Хранит текущую последовательность микрокоманд, готовых к выполнению

  3. Узел распределения/выполнения. Планирует выполнение микроопераций, учитывая из зависимость от имеющихся данных и доступности необходимых ресурсов. Поэтому микрокоманды могут быть отправлены на выполнение совсем в другом порядке , чем тот, в котором они были сформированы при анализе исходной последовательности машинных команд. Если позволяет время, этот узел организует прогнозируемое выполнение микроопераций после команд условного перехода , что может пригодиться в дальнейшем. При выполнении микроопераций узел извлекает данные из кэша данных L1 и временно запоминает результаты в регистрах.

  4. Узел завершения. Определяет , когда можно будет считать окончательным результат микроопераций, выполненных с опережением , и зафиксировать его в кэше данных L1. Этот узел удаляет из буфера микрокоманд те из них, результаты выполнения которых признаны окончательными и зафиксированы в кэше.

Организация набора регистров

В состав набора регистров Pentium входят следующие группы:

  1. Регистры общего назначения. Эта группа включает восемь 32-битовых регистров. Их можно использовать в любых командах программы, в том числе и для хранения данных, необходимых для вычисления исполнительного адреса в сложных режимах адресации. Кроме того , некоторые из регистров этой группы имеют определенную специализацию. Например, команды работы с символьными строками используют содержимое регистров ECI, ESI и EDI в качестве операндов, хотя явно в коде команды это и не указывается. Такой подход позволяет несколько сократить размер кода команды.

  2. Регистры сегментов. Шесть 16- битовых регистров предназначенных для хранения информации о сегментах .Регистр сегмента программного кода, CS, хранит индекс сегмента, содержащего команды программы, выполняемой в текущий момент времени. Регистр стека , SS, указывает сегмент, в котором размещен программно доступный стек. Остальные регистры сегментов (DS, ES,FS,GS) позволяют обращаться в программе к четырем разным сегментам данных.

  3. Флаги. Регистр EFLAGS содержит коды условий и различные биты состояния. Содержит информацию о текущем состоянии процессора и помогает управлять его функционированием. Шесть битов регистра содержат коды условий, сформированные по результату выполнения последней арифметической или логической команды с целыми числами (перенос, четность, дополнительный перенос, нуль, знак, переполнение). Кроме того , в этом регистре имеются биты, которые можно рассматривать как управляющие.

  • Флаг следящего прерывания . (TF -trap flag). Если этот флаг установлен, процессор выполняет программу в режиме следящего прерывания, т.е. после завершения очередной команды формируется запрос прерывания. Этот режим используется при отладке программ.

  • Флаг разрешения внешнего прерывания. (IF - interrupt enable flag). Если этот флаг установлен, процессор реагирует на поступающие извне запросы прерываний.

  • Флаг направления (DF - direction flag) . Флаг определяет, происходит ли при обработке строк инкрементирование или декрементирование содержимого 16- битовых полурегистров SI и DI ( при обработке 16- битовых данных) или содержимого 32 - битовых регистров ESI и EDI при обработке 32 - битовых данных.

  • Флаг привилегированного ввода-вывода (IOPL- I/O privilege flag). Если этот флаг установлен , процессор формирует сообщение об исключительной ситуации при всех обращениях к устройствам ввода - вывода во время выполнения операций в защищенном режиме.

  • Флаг возобновления (RF- resume flag). Этот флаг позволяет программисту заблокировать формирование сообщений об исключительных ситуациях при отладке , и, таким образом, команда может быть вновь запущена на выполнение после обработки исключительной ситуации отладки , что не приведет к немедленному формированию еще одного сообщения.

  • Проверка выравнивания (AC- alignment check). При установленном флаге формируется прерывание , если при адресации слова или двойного слова не соблюдается кратность адреса длине слова или двойного слова.

  • Флаг идентификации (ID - identification flag). Этот бит можно изменять в процессорах, которые поддерживают выполнение команды CPUID. Команда дает возможность получить информацию об изготовителе, семействе, к которому принадлежит процессор , и его модели.

Кроме того , в регистре имеется еще 4 бит , которые имеют отношение к режиму функционирования процессора. Флаг вложенных задач (NT - nested task)- индикатор, показывающий , вложена ли текущая задача в другую задачу в защищенном режиме работы процессора. Бит виртуального режима (VM- virtual mode) позволяет программисту разрешить или запретить виртуальный режим процессора 8086, т.е. режим, в котором процессор Pentium эмулирует процессор 8086. Флаг виртуального прерывания (VIF virtual interrupt flag) и флаг отложенного виртуального прерывания (VIP - virtual interrupt pending flag) используют в многозадачной операционной системе.

  1. Указатель текущей команды. Этот регистр содержит адрес текущий команды. Блок обработки чисел в формате с плавающей точкой имеет собственные специализированные регистры.

  2. Числовые регистры. Каждый регистр этой группы способен хранить 80- битовое число в формате с плавающей точкой. Регистры работают как единый стек, и по отношению к ним можно использовать операции заталкивания в стек и выталкивания из стека, которые имеются в наборе команд процессора.

  3. Регистры управления. Четыре 32-битовых регистра управления ( регистр CR1 не используется) , с помощью которых контролируется различные аспекты функционирования процессора. Регистр CR0 содержит флаги управления, которые контролируют режим работы процессора и являются индикаторами не столько состояния выполняемой программы, сколько процессора в целом.

  • Разрешение защищенного режима (PE - protection enable). Разрешение/запрет защищенного режима функционирования процессора.

  • Мониторинг сопроцессора (MP - monitor coprocessor). Используется при выполнении на Pentium программ , разработанных для прежних моделей процессоров Intel 8086; бит имеет отношение к работе арифметического сопроцессора.

  • Эмуляция(EM- emulation). Устанавливается в тех процессорах, которые не имеют встроенного блока обработки чисел в формате с плавающей точкой. Если этот бит установлен, то при попытке выполнить команду обработки чисел в формате с плавающей точкой формируется прерывание.

  • Переключаемые задачи (TS - task switched). Индикатор выполнения переключаемых задач.

  • Расширенный тип (ET- extension type).Не используется в процессоре Pentium . В прежних моделях процессоров Intel 8086 использовался в качестве индикатора поддержки функционирования арифметического сопроцессора Intel 8087.

  • Числовая ошибка (NE-numeric error). Разрешает функционирование стандартного механизма формирования сообщений об ошибках выполнения арифметических команд на линиях внешней магистрали.

  • Защита записи (WP write protect) .Если этот бит не установлен , супервизорный процесс может записывать информацию в страницы памяти прикладных программ, имеющий статус "только для чтения". В некоторых операционных системах такая возможность используется для поддержки операций формирования программных процессоров.

  • Маска выравнивания (AM - alignment mask). Разрешает/запрещает проверку выравнивания адресов по границе слова или двойного слова.

  • Не выполнять сквозную запись (NM- not write through). Этот бит контролирует режим записи информации из кэша в оперативную память. Когда бит установлен, разрешается режим сквозной записи.

  • Блокировка кэша (CD- cache disable) . Разрешает/запрещает работу внутреннего механизма заполнения кэша.

  • Страничный обмен (PG- paging). Разрешает/запрещает работу механизма страничного обмена.

Регистры Cr2 и CR3 используются в режиме страничного обмена (т.е. при установленном бите PG). В регистре CR2 хранится 32- разрядный линейный адрес последней страницы, к которой произошло обращение перед прерыванием отсутствия страницы. Старшие 20 разрядов CR3 содержат значения 20 старших разрядов базового адреса каталога страниц, а оставшиеся разряды - коды 0. Два бита регистра CR2и CR3 используется для управления сигналами на выводах внешнего блока кэш-памяти. Бит блокировки кэша страничного уровня -PCD- разрешает или запрещает работу с внешним блоком кэша, а бит сквозной записи кэша страничного уровня - PWT- управляет сквозной во внешний кэш.

В регистре CR4 имеется девять управляющих битов:

  • Расширенный виртуальный режим 8086- разрешает поддержку флага виртуального прерывания в виртуальном режиме 8086

  • Виртуальные прерывания в защищенном режиме- разрешает поддержку флага виртуального прерывания в защищенном режиме.

  • Запрет отметок времени- запрещает чтение из счетчика отметок времени по команде RDSD, которая используется в режиме отладки.

  • Расширение отладочного режима- разрешает установку точек останова на операциях ввода-вывода. Если такая точка останова существует , процессор вырабатывает сигнал запроса прерывания при операциях чтения или записи на устройство ввода-вывода.

  • Расширение размера страницы - разрешает использование страниц размером 4 Мбайта в процессоре Pentium и страниц размером 2 Мбайта в процессорах Pentium Pro и Pentium2.

  • Расширение физического адреса -разрешает обработку сигналов на линиях адреса А35-А32, если задан новый режим адресации битом PSE.

  • Расширение контроля магистрали - разрешает формирование сигнала запроса прерывания при обнаружении ошибки четности данных во время цикла чтения магистрали, или когда цикл магистрали не завершился нормально.

  • Разрешение глобальных страниц - разрешает использование глобальных страниц . Если этот бит установлен и выполняется переключение задач, все элементы буфера быстрой переадресации -TLB- сбрасывается за исключением тех, которые помечены как глобальные.

  • Разрешение работы счетчиков сбора статистики- разрешает выполнение команды RDPMC (чтение счетчика сбора статистики) на любом привилегированном уровне. В процессоре имеются два счетчика сбора статистики, с помощью которых можно измерить длительность событий определенного типа и количество появлений событий определенного типа.

  1. Регистр статуса. Отдельные биты этого 16- битового регистра несут информацию о текущем состоянии блока обработки чисел в формате с плавающей точкой. В частности, в нем хранится 3- битовый указатель стека, флаги, характеризующие результат последней арифметической операции, флаги исключительных ситуаций.

  2. Слово тэга. Этот 16- битовый регистр содержит 2- битовые коды тэгов для каждого из числовых регистров, которые определяют характер содержимого регистра, связанного с тэгом. Четыре возможных кодовых комбинаций значения тэга имеют следующий смысл: значение достоверно , значение равно нулю, в регистре находится специальный код (NaN, бесконечность, ненормализованное число), регистр пуст ( его содержимое случайно и не несет никакой информации). Коды тэгов позволяют программно анализировать содержимое числовых регистров без выполнения сложных арифметических операций с данными в этих регистрах. Например, при выполнении операции сохранения текущего состояния процессора можно не записывать в память содержимое регистра, если соответствующий тэг указывает , что регистр пуст.

Обработка прерываний

Два типа событий могут заставить Pentium прервать выполнение текущей команды это запрос прерывания и сигнал о возникновении исключительной ситуации. В обоих случаях процессор сохраняет информацию о состоянии текущего процесса и передает управление предопределенной программе обработки прерываний. Прерывание формируются сигналом, поступающим от аппаратных средств , таким образом, может возникнуть в любой момент. Сообщение об исключительной ситуации формируется программно как реакция на определенный характер результата выполнения очередной команды . Существуют два источника возникновения прерываний и два источника возникновения исключительных ситуаций.

  1. Прерывания.

  • Маскируемые прерывания. Запросом прерывания служит сигнал на контакте INTR модуля процессора. Процессор не реагирует на подобие сигналы до тех пор , пока не будет установлен флаг IF.

  • Немаскируемые прерывания. Запросом прерывания служит сигнал на контакте NMI модуля процессора. Процессор всегда реагирует на эти сигналы.

  1. Исключительные ситуации.

  • Исключительные ситуации, обнаруживаемые процессором. Сообщение о возникновении исключительной ситуации формируется, когда процессор обнаруживает ошибку при попытке выполнить машинную команду.

  • Программируемые исключительные ситуации. Существуют специальные машинные команды, которые формируют сообщение о возникновении исключительной ситуации.

При обработке прерываний в Pentium используется таблица векторов прерываний. Прерыванию каждого типа присваивается свой номер, который служит индексом в таблице. В таблице начитывается 256 элементов, каждый из которых представляет собой 32- битовое слово, содержащее адрес ( сегмент и смещение) подпрограммы обслуживания прерываний определенного типа. При поступлении одновременно нескольких запросов прерываний или сообщений об исключительных ситуациях процессоров реагирует на них в соответствии с приоритетом. Приоритетом не зависит от вектора, т.е. положения соответствующей программы в таблице векторов прерываний. Вместо того используется разделение прерываний и исключительных ситуаций ев пять классов.

Класс 1 - прерывание отслеживания предыдущей команды (значение вектора 1).

Класс 2 - внешние прерывания (значения векторов 2 и от 32 до 255).

Класс 3 - ошибка при извлечении следующей команды (значения векторов 3 и 140.

Класс 4 - ошибка при расшифровке следующей команды (значения векторов 6 и 70

Класс 5 - ошибка при выполнении команды (значения векторов 0,4,5,8,от 10 для 14, 16 и 17).

При вызове подпрограммы обработки прерывания выполняются практически те же операции, что и при вызове подпрограммы командой CALL, для сохранения состояния текущей программы ( или процесса) используется системный стек. Когда возникает прерывание и оно распознается процессором, происходят следующие события.

  1. Если при переходе к подпрограмме обработки нужно изменить уровень привилегий процессора, текущее содержимое регистров сегмента стека и расширенного указателя стека (ESP) заталкивается в стек.

  2. Текущее содержимое регистра флагов (EFLAGS) также заталкивается в стек.

  3. Сбрасывается флаги следящего прерывания (TF) и разрешения внешнего прерывания(IF). Тем самым запрещаются маскированные прерывания по сигналу на выводе INTR и прерывания отслеживания команд при отладке.

  4. В стек помещается текущее содержимое указателя кодового сегмента (CS) и указателя команды (IP или EIP).

  5. Если прерывание сопровождается кодом ошибки , этот код также заталкивается в стек.

  6. Извлекается содержимое вектора прерывания и загружается в регистры CS и IP (или EIP). В следующем цикле обработки будет выполняться команда подпрограммы обработки прерывания, размещенная по этому адресу.

Последней командой подпрограммы обработки прерывания является IRET, которая инициирует возврат в прерванную программу (процесс). При ее выполнении информация, ранее помещенная в стек, возвращается а место , и выполнение прерванного процесса продолжается с той же точки.