
- •3. Работа процессоров в защищенном и реальном режимах
- •3.1 Сегментация памяти в защищенном режиме
- •3.2. Страничная организация памяти
- •3.3. Защита памяти
- •3.4. Многозадачность
- •3.13. Структура сегмента tss
- •3.5. Реализация режима виртуального 8086 (v86)
- •3.6. Функционирование процессора в реальном режиме
- •4. Реализация прерываний и исключений. Обеспечение тестирования и
- •4.1. Виды прерываний и исключений, реализация их обслуживания
- •4.2. Обработка прерываний в реальном и защищенном режимах
- •4.3. Причины возникновения исключений [1,4]
- •4.4. Реализация и обслуживание виртуальных прерываний
- •4.5. Реализация прерываний в мультипроцессорных системах
- •4.6. Средства обеспечения отладки
- •4.7. Реализация тестирования и контроля функционирования
- •5. Режим системного управления работой процессора. Инициализация, мониторинг производительности и обмен по системной шине
- •5.1. Режим системного управления (smm)
- •5.2. Инициализация и реализация энергосберегающих режимов
- •5.3. Метки реального времени и мониторинг производительности
- •Оглавление
4.6. Средства обеспечения отладки
Процессоры семейства Р6 реализуют широкий набор вариантов отладки:
•программный останов,
•пошаговый режим,
•отладка с использованием регистров отладки,
•отладка с использованием специализированных MSR-регистров,
•режим зондовой отладки.
Программный останов. Этот способ отладки реализуется с помощью однобайтной команды INT3, которая вводится программистом в критические точки программы, где необходимо выполнить контроль текущего состояния. Команда INT3 устанавливает безусловную программную точку останова, при выполнении которой процессор реализует исключение #ВР. Команда INT3 выполняется при любых значениях уровня привилегий программы CPL и содержимого поля IOPL. Исключение #ВР всегда вызывается через таблицу IDT. При работе процессора в режиме виртуального 8086 на выполнение команды INT3 не оказывает влияние значение битов в карте перенаправления прерываний (при установленном значении бита VME=1 в регистре CR4). При вызове подпрограммы обслуживания через шлюз уровень приоритета этого шлюза gDPL должен быть больше или равен CPL
Пошаговый режим. Пошаговый режим имеет место, когда установлено значение признака TF=1 в регистре EFLAGS. В этом случае процессор после выполнения каждой команды (ловушка) реализует исключение типа #DB, вызывая соответствующую подпрограмму обслуживания. Перед вызовом этой подпрограммы процессор устанавливает значение признака TF=0, чтобы обеспечить выполнение обработки без пошаговых остановов.
Команда IRET, завершающая подпрограмму обработки, восстанавливает из стека содержимое регистра EFLAGS (где значение TF=1), передавая управление следующей команде программы, после которой снова реализуется прерывание #DB.
Отладка с помощью регистров отладки DRO-DR7. Регистры отладки имеют следующее назначение:
•DR3-0 - содержат линейные адреса четырех контрольных точек останова;
•DR6 - регистр состояния, указывающий причину останова в контрольной точке;
•DR7 - регистр управления, задающий условия останова в контрольных
точках.
Доступ к регистрам отладки разрешен только программам с уровнем привилегий CPL=0. Попытка обратиться к этим регистрам на другом уровне привилегий (CPL>0) приводит к исключению #GP.
Регистры DR4, DR5 в выпускаемых моделях процессоров не используются. Если в регистре управления CR4 установлено значение бита DE=1 (расширение отладки), то обращение к регистрам DR4, DR5 приводит к исключению #UD. Если бит DE=0, то при вызове DR4, DR5 производится обращение к регистрам DR6, DR7.
Формат содержимого регистров управления DR7 и состояния DR6 отладки [1,4].
4.7. Реализация тестирования и контроля функционирования
Характерной особенностью современных процессоров является размещение на кристалле специальных средств, облегчающих процедуру их тестирования и контроля. Для процессоров семейства Р6 реализуются следующие варианты тестирования и контроля:
•самотестирование в процессе начальной установки (RESET) состояния процессора,
•тестирование при работе в составе целевой системы в соответствии с международным стандартом JTAG (IEEE 1149.1),
•контроль функционирования с помощью исключения типа #МС («машинный контроль»).
Самотестирование при начальной установке процессора после поступления сигнала RESET реализуется, если в процессе выполнения этой процедуры на вход INIT# подается 0. В этом случае выполняется достаточно сложная программа проверки функционирования основных блоков процессоров Р6, которая занимает около 5,5 миллионов тактов. Если подтверждается правильность их функционирования, то в регистре ЕАХ устанавливается значение 00000000h. Любое другое содержимое регистра ЕАХ указывает на обнаружение ошибок в ходе самотестирования.
Согласно международному стандарту JTAG (IEEE 1149.1) для выполнения тестирования цифровое устройство должно иметь последовательный специальный порт ТАР (test access port), через который производится ввод тестовых комбинаций (входных сигналов) и вывод данных об ответной реакции (состоянии выходов) устройства. При тестировании используются следующие выводы ТАР:
•ТСК - вход синхросигналов, используемых в режиме тестирования;
•TMS - вход управляющего сигнала, определяющего режим работы ТАР;
•TDI - вход для последовательного ввода тестовых команд и сигналов;
•ТDО - выход для последовательного вывода данных о состоянии входов и выходов тестируемого устройства;
• TRST# - вход для подачи сигнала сброса (установки в начальное состояние) в процессе тестирования.
Тестирование выполняется методом сканирования границ (boundary scan), при котором все входы и выходы процессора подключаются к отдельным разрядам общего сдвигового регистра тестовых данных, вход которого соединен с выводом TDI, выход - с выводом ТDО. Таким образом обеспечивается возможность подачи на входы процессора необходимых тестовых сигналов, которые последовательно вводятся через вход TDI, и считывания получаемых при этом выходных сигналов, которые последовательно выводятся через выход ТDО. Различные процедуры тестирования осуществляются при поступлении определенных тестовых команд, которые предварительно последовательно вводятся через вывод TDI.
Такой способ тестирования позволяет проверять функционирование различных устройств, входящих в систему, путем соответствующего соединения их входов и выходов (рис. 4.6). При этом реализуется общий кольцевой регистр сдвига, объединяющий входы и выходы различных устройств системы. Путем последовательного ввода в этот регистр реализуется подача входных воздействий на все устройства системы, а путем последовательного вывода данных из регистра производится считывание состояния выходов этих устройств, которое определяет реакцию на поступившие воздействия.
Рис. 4.6. Использование портов TAP при тестировании цифровых систем
В состав порта ТАР входят два основных сдвиговых регистра: регистр команд IR и регистр тестовых данных BSR. В зависимости от значения сигнала TMS производится выбор одного из этих регистров, в результате чего обеспечивается последовательный ввод (через TDI) и вывод (через ТDО) тестовых команд или данных. Ввод и вывод выполняются при поступлении синхросигналов ТСК.
При вводе в регистр команд соответствующего кода процессор выполняет одну из тестовых команд. В их состав входят команды, определяемые стандартом JTAG, и дополнительные команды, введенные для тестирования определенных моделей процессоров.
Расширение возможностей порта ТАР обеспечивается в режиме «зондовой» отладки (Probe Mode). Для реализации этого режима в состав порта ТАР введены дополнительные регистры команд PIR (Probe Instruction Register) и данных PDR (Probe Data Register), с помощью которых последовательно вводятся команды и данные, выводятся полученные результаты и информация о текущем состоянии процессора. При этом для управления портом используются дополнительные выводы PREQ# и PRDY#. В зондовом режиме процессор выполняет команды, последовательно вводимые в регистр PIR: При этом не производится контроль привилегий, то есть выполняются все поступающие команды. Обслуживание прерываний и исключений не реализуется. Обеспечивается возможность записи и считывания содержимого всех регистров процессора, что позволяет контролировать и корректировать их текущее состояние.
Вход и выход в зондовый режим обеспечивается с помощью специальных команд, вводимых в регистр IP порта ТАР, или подачей сигнала запроса на вход RREQ#. При поступлении внешнего сигнала RREQ#=0 процессор входит в этот режим, устанавливая на выходе PRDY# сигнал готовности PRDY#=0. Выход из зондового режима происходит при подаче сигнала RREQ#=1. Возможен также вход в зондовый режим при реализации исключения отладки #ВР. В этом случае не производится вызов подпрограммы обслуживания, а выдается сигнал готовности PRDY#=0, который инициирует последовательный ввод команд обработки исключения в регистр PIR через порт ТАР. Такой способ входа в зондовый режим разрешается после подачи специальной команды ICEBP, вводимой в регистр IP порта ТАР.
Процессоры семейства Р6 обладают возможностями обнаружения ряда аппаратных ошибок, возникающих при функционировании систем. Эти возможности реализуются с помощью средств машинного контроля (machine-check architecture), которые выявляют следующие виды ошибок:
•ошибка обращения к системной шине, которая фиксируется внешней схемой контроля шины, подающей сигнал BINIT#=0 на соответствующий вход процессора,
•ошибка ЕСС (Error Checking and Correcting) при обращении к памяти, которая выявляется внешним устройством контроля памятью; код этой ошибки подается на входы DEP7-0# процессора,
•ошибка контроля четности при передаче адреса или данных,
•ошибка в кэш-памяти или буферах страничной трансляции TLB.
При выявлении этих ошибок реализуется исключение #МС «машинный контроль», если в регистре CR4 установлено значение бита МСЕ=1. Программа обработки данного исключения может получить информацию о происшедшей ошибке из специальных MSR-регистров, состав и содержимое которых зависят от модели процессора [1,4].
Следует отметить, что в процессорах семейства Р6 практически используется только небольшая часть этих регистров. Основная часть их содержимого зарезервирована для использования в последующих моделях процессоров, в кторых предполагается значительное расширение возможностей контроля функционирования различных устройств системы.