При возникновении особого случая в процессе счета, процессор реагирует на него следующим образом:
Включает в стек содержимое регистра флагов. Включает в стек содержимое регистров кода и программного счетчика. Устанавливает флаг запрещения прерываний. По своему номеру обращается к соответствующему элементу таблицы векторов прерываний и загружает из него сегмент кода и программный счетчик. Начинает обслуживание прерывания с его точки входа.Обработчик особого случая игнорирует флажок запрещения прерываний, поскольку его "маскировка" не желательна.
Programmable interrupt controller Микропроцессоры IA-32, начиная с модели Pentium, содержат встроенный расширенный программируемый контроллер прерываний (APIC). Встроенный APIC предназначен для регистрирования прерываний от источников внутри процессора (например, блок температурного контроля у Pentium 4) или от внешнего контроллера прерываний и передачи их ядру процессора на обработку. Особо важная роль возлагается на встроенный APIC в многопроцессорных системах, где APIC принимает и генерирует сообщения о межпроцессорных прерываниях (IPI - InterProcessor Interrupt). Такие сообщения могут использоваться для распределения обработки прерываний между процессорами или для выполнения системных функций (первоначальная загрузка, диспетчеризация задач и т. п.).Встроенный APIC различает следующие источники прерываний.
От локальных устройств. Прерывания, генерируемые по фронту или уровню сигнала, который поступает от устройства, непосредственно подключенного к сигналам LINT0 и LINT1 (например, контроллер прерываний типа 8259A). От внешних устройств. Прерывания, генерируемые по фронту или уровню сигнала, который поступает от устройства, подключенного к внешнему контроллеру прерываний. Такое прерывание передается в виде сообщения по шине APIC (или системной шине в Pentium 4). Межпроцессорные (IPI). В многопроцессорных системах один из процессоров может прервать другой при помощи сообщения IPI на шине APIC (или системной шине в Pentium 4). От таймера APIC. Встроенный APIC содержит таймер, который можно запрограммировать на генерацию прерывания по достижении определенного отсчета. От таймера монитора производительности. Процессоры P6 и Pentium 4 содержат блок мониторинга производительности. Этот блок можно запрограммировать таким образом, чтобы связанный с ним таймер при достижении определенного отсчета генерировал прерывание. От термодатчика. Процессоры Pentium 4 содержат встроенный блок температурного контроля, который можно запрограммировать на генерацию прерываний. Внутренние ошибки APIC. Встроенный APIC может генерировать прерывания при возникновении внутренних ошибочных ситуаций (например, при попытке обратиться к несуществующему регистру APIC).Источники 1, 4, 5, 6, 7 считаются локальными источниками прерываний и обслуживаются специальным набором регистров APIC, называемым таблицей локальных векторов (LVT - local vector table). Два других источника обрабатываются APIC через механизм сообщений. Эти сообщения в Pentium и P6 передаются по выделенной трехпроводной шине APIC (рис. 13.2). В Pentium 4 для передачи APIC-сообщений используется системная шина, поэтому контроллер прерываний может быть подключен непосредственно к обычному системному интерфейсу (например, PCI).

Рис. 13.2. Взаимодействие встроенного APIC и внешнего контроллера прерываний
Структура встроенного APIC является архитектурным подмножеством микросхемы контроллера прерываний Intel 82489DX. Регистры APIC отображаются на 4-Кбайтный блок оперативной памяти по адресу FEE00000h (может быть изменен через MSR регистры процессора).Наличие встроенного APIC в процессоре обнаруживается при помощи инструкции CPUID(1). После RESET встроенный APIC включен, однако впоследствии он может быть отключен, тогда процессор будет работать с прерываниями как Intel-386/486 (линии LINT0 и LINT1 будут использоваться как NMI# и INTR#, к которым может быть подключен контроллер прерываний типа 8259A).Таблица локальных векторов (LVT) состоит из шести 32-битных регистров (в P6 - 5, в Pentium - 4):
- регистр вектора прерывания от таймера; регистр вектора прерывания от термодатчика (только в Pentium 4); регистр вектора прерывания от монитора производительности (P6 и Pentium 4); регистр вектора прерывания LINT0; регистр вектора прерывания LINT1; регистр вектора прерывания ошибки.
Значения в этих регистрах определяют:
- номер вектора прерывания; тип прерывания (fixed - с указанным вектором, SMI - переход в режим системного управления, NMI - немаскируемое, INIT - сброс, ExtINT - внешнее: процессор генерирует цикл INTA и ожидает номер вектора прерывания от внешнего контроллера); активный уровень сигнала (низкий или высокий) или триггерный режим (прерывание по фронту или по уровню); маску прерывания (прерывание может быть замаскировано).
Эти регистры также отражают состояние прерывания (доставляется ли это прерывание ядру процессора в данный момент).Кроме того, APIC содержит регистры управления таймером APIC, регистр версии, регистр ошибки, регистры, связанные с обслуживанием прерываний (регистр приоритета, регистр запроса IRR, регистр обслуживания ISR), и регистры, связанные с передачей и приемом IPI.
Устройство управления
Структура УУ определяется важнейшей характеристикой процессора – адресностью машинных команд. Рассмотрим структуру УУ для двухадресных команд и взаимодействие его элементов в процессе функционирования:
Блок центрального управления генерирует сигнал о начале выполнения очередной команды (связь 1). Ее адрес А находится в счетчике адреса команд.
Блок выборки из памяти по сигналу считывает из ОЗУ по адресу А, который выбирается из счетчика адреса команд (связь 8), очередную команду (связь 2) и помещает ее на временное хранение в регистр команд (связь 3).
Дешифратор кода операции выбирает код (связь 4) и расшифровывает его. Затем передает информацию блоку формирования управляющих сигналов (связь 10):
- если операция арифметическая, от блока формирования управляющих сигналов поступает сигнал в блок выборки из памяти (связь 5) с командой считать из ОЗУ операнды, расположенные по адресам, указанным в регистрах первого и второго операндов (связь 6), и поместить их в соответствующие регистры АЛУ (о структуре АЛУ см. в п. 9.3). Затем формируется сигнал в АЛУ на выполнение нужной операции (связь 7). Счетчик адреса команд увеличивается на объем команды (связь 9); если операция ввода-вывода, блок формирования управляющих сигналов формирует сигнал УВв и УВыв (связь 7). Счетчик адреса увеличивается на объем команды (по связи 9); если операция условного перехода, блок центрального управления анализирует результат предыдущей операции, находящийся в АЛУ. Если знак результата отрицателен, в счетчик адреса команд записывается адрес из регистра первого операнда. Если знак положителен, в счетчик адреса команд записывается адрес из регистра второго операнда. Если результат равен 0, в счетчик адреса команд добавляется 1 (эти связи не показаны). Так реализуется принцип условного перехода. если операция безусловного перехода, в счетчик адреса команд пересылается содержимое регистра первого операнда (связь не показана).
Структура процессора
Счётчик команд
Kдsuloendur(PC – Program Counter, IP – Instruction Pointer)
Для выполнения программы процессор по одной выбирает команды из памяти и выполняет определяемые ими действия. Команды выбираются из последовательных адресов памяти, пока не встретится команда перехода или ветвления. Для этого в счетчике команд, РС, отслеживается адрес очередной подлежащей выполнению команды. После выборки этой команды содержимое регистра РС обновляется, чтобы он указывал на следующую команду в памяти в порядке расположения адресов. Команда ветвления может загрузить в РС другой адрес.
Регистр указателя команд (Instruction Pointer Register – IP), этот регистр содержит адрес следующей команды, которая будет выполнена и автоматически увеличивается на 1 после каждой выборки команды. Запись в этот регистр нового адреса приведет к переходу в следующем цикле программы по этому адресу. Считывание этого регистра не затронет ход выполнения прикладной программы.
Регистр команд
Kдsuregister(IR – Instruction Register)
Еще одним важнейшим регистром процессора, связанным с выполнением команд, является регистр команды, IR - регистр процессора, содержащий исполняемую в текущий момент команду.. Предположим, что каждая команда имеет длину 4 байта и хранится в одном слове памяти. Для ее выполнения процессор должен произвести следующие шаги.
1. Выбрать из памяти слово, на которое указывает РС. Содержимое этого слова интерпретируется как команда и загружается в регистр IR.
2. Если память адресуется побайтово, следует увеличить содержимое регистра РС на 4.
3. Выполнить действия, определяемые командой, которая находится в IR.
Если команда занимает более одного слова, шаги 1 и 2 повторяются столько раз, сколько нужно для выборки всей команды. Эти два шага обычно называют фазой выборки, а шаг 3 составляет фазу выполнения.
Дешифратор команд
Kдsudekooder(Instruction Decoder)
Дешифратор команд - блок центрального процессора, выделяющий код операции и операнды команды, а затем вызывающий микропрограмму, исполняющую данную команду.
Управляющее устройство
Juhtautomaat(CU – Control Unit)
Устройство управления служит для управления работой компьютерной системы в челом и работой центрального процессора (сопроцессора) в частности. Основная же его задача -- дешифрация поступающих в процессор команд и формирование сигнала на выполнение тех или иных операций в арифметико-логическом устройстве. Устройство управления также ответственно за передачу данных в центральном процессоре, между процессором и памятью, процессором и устройствами ввода-вывода, за извлечение или посылку данных по адресной шине и т. п.
|
Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |


