Программируемый контроллер прерываний (PIC): его назначение и основные функции. Принципы взаимодействия центрального процессора и контроллера прерываний
Программируемый контроллер прерываний (Programmable Interrupt Controller, PIC) отвечает за приём запросов прерываний от различных устройств, их хранение в ожидании обработки, выделение наболее приоритетного из одновременно присутствующих запросов и выдачу его вектора в процессор, когда последний пожелает обработать прерывание. Слово «программируемый» в названии контроллера означает, что режимы его работы устанавливаются программно, а не являются жёстко «зашитыми».
Функции:
1. Фиксация запросов прерываний, поступающих в PIC от ВУ, в специальном регистре запросов (IRR).
2. Осуществление внутреннего маскирования запросов, с помощью специального регистра маски IMR.
3. Выделение наиболее приоритетного запроса из всех поступивших и не замаскированного.
4. Выдача сигнала о наличии хотя бы одного не замаскированного запроса прерывания. Поступает на вход INTR.
5. Выдача в ЦП номера запроса в цикле подтверждения прерывания(этот номер модифицируется в ЦП в начальный адрес обработчика прерывания для выделенного ВУ).
6. Возможность изменения приоритетов запросов прерываний.
Принципы взаимодействия CPU и PIC:
1. При наличии хотя бы одного незамаскированного запроса прерываний PIC выставляет активный уровень выходного сигнала INT, который поступает на вход INTR в CPU.
2. CPU завершает текущую команду программы и проверяет состояние внешних входов в том числе и INTR.
3. Если флаг IF установлен (внешние прерывания от PIC разрешены), процессор генерирует активный уровень выходного сигнала INTA (Interrupt Answer). При сброшенном флаге IF обработка внешнего запроса прерывания временно откладывается, в частности до выполнения процессором специальной команды STI (Set Interrupt) – разрешение прерываний, действие которой сводится к установке флага IF.
4. При получении сигнала INTA, PIC выполняет следующие действия:
- Сравнивает бит запроса принятого к обслуживанию в IRR.
- Устанавливает бит обрабатываемого запроса ISR.
- Выставляет на внешнюю шину данных (точнее в ее младший байт) номер (тип) обрабатываемого запроса.
5. CPU принимает номер запроса от PIC по шине данных и модифицирует этот номер в адрес соответствующего вектора прерываний (модификация номера в адрес осуществляется путем умножения номера на 4).
6. Текущее значение регистра флагов, сегмента кода (CS) и счетчика команд помещается в стек и тем самым сохраняется минимальный контекст прерываемой программы.
7. Два последовательных слова из таблицы векторов прерываний загружаются в регистр IP (слово по меньшему адресу) и CS (слово по большему адресу), тем самым, настраивая CPU на выполнение первой команды программы-обработчика прерываний.
8. На аппаратном уровне производиться сброс флага IF в целях временного запрещения поступления других запросов от PIC.
9. Процессор переходит к выполнению программы-обработчика соответствующего прерывания.
Описанная выше последовательность является типичной для базовой модели процессора Intel 8086, либо для старших моделей функционирующих в R-режиме (реальном режиме).
38. Особенности организации прерываний. Таблица векторов прерываний. Вызов обработчика прерывания. Дескрипторная таблица прерываний (IDT) и ее элементы.
Потоковая модель однотактового процессора: порядок выборки команд, исполнения арифметических и логических команд, исполнения команд условных и безусловных переходов.Организация управления работой однотактового процессора, алгоритм синтеза устройства управления однотактового процессора.
Особенности реализации однотактового процессора:
1) Выполнение всех машинных операций за один такт. Это означает, что в процессе выполнения операции не выделяется нескольких последовательных шагов – микроопераций.
2) В рамках одной машинной операции один (каждый) блок имеет только одну функцию: нельзя, например, АЛУ использовать в одной операции и для сложения операндов и для расчета физического адреса в памяти.
3) Один и тот же блок может иметь различное назначение при выполнении различных операций. Например, при операции сложения АЛУ используется для сложения операндов, а при доступе к основной памяти данных - для расчета физического адреса в памяти.
4) При реализации различных операций функциональные блоки могут быть по разному соединены друг с другом. Для перекоммутации путей передачи данных к/от блоков используются блоки коммутации цифровых данных – мультипрексоры.
5) Память команд и память данных раздельные.
Достоинства:
1) характеризуются простой комбинационной организацией - без последовательностных схем управления
Недостатки:
1) Невозможность использования блоков процессора (АЛУ, регистровой памяти, основной памяти) более чем в одной микрооперации в рамках выполнения команды. Например, нельзя использовать память и для хранения исполняемых команд (как память команд) и для хранения данных (как основную память данных) (как это установлено принципами фон-Неймана)
2) Использование нетиповых блоков многопортовой регистровой памяти, с достаточно сложной организацией (основная сложность – выполняемые одновременно чтение. Для этого требуется, на выбор: - применение специальных ячеек памяти с многотактовым доступом, обеспечивающих стабильность считываемых данных на выходе ячейки памяти при одновременной записи в данную ячейку памяти; - применение схем арбитража, предотвращающих запись пока не завершена операция чтения.
3) Большая средняя длительность исполнения команды, по сравнению с многотактовыми процессорами, и, соответственно, более низкая производительность.
Оценка производительности:
В случае однотактового процессора инкремент счетчика команд PC и соответственно начало исполнения очередной команды должны происходить не чаще, чем через время исполнения максимально длительной команды. В случае остальных – менее длительных – команд, процессор будет простаивать остаток времени от окончания исполнения команды до окончания периода выполнения самой длительной команды. P=1\Tmax, где Tmax – время выполнения самой длительной команды
Потоковая модель (datapath) процессора
это структурно-функциональная схема, на которой показаны:
• Функциональные блоки, последовательно обрабатывающие коды команд, адреса и данные в процессоре.
• Каналы, по которым данные и команды передаются от одного блока процессора к другому. Указываются направления передачи (стрелками).
• Коммутационные блоки, управляющие направлением и порядком передачи данных между блоками процессора.
PC – регистр счетчика команд;
Instruction memory– память команд;
Registers – блок регистров общего назначения (РОН);
Data Memory– основная память данных;
ALU – арифметико-логическое устройство;
ALU control– блок управления АЛУ;
Add – сумматоры;
Mux – мультиплексоры (информационных трактов) ;
SignExtend– знаковый расширитель;
Shift – сдвигатель;
Тракт инкремента счетчика команд и выборки команды
PC – регистр, хранящий адрес текущей выбираемой (считываемой из памяти) команды. Тот поступает на Read address. Далее по этому адресу выбирается команда из InstructionMemory и поступает на выход Instruction. В сумматоре Add к адресу текущей команды добавляется 4(длина команды в MIPS) и на выходе адрес следующей команды.
Тракт реализации безусловных и условных переходов
Условный: beq $t1, $t2, offset
Три стадии 1) Код команды считывается из памяти команд, сумматор прибавляет к значению из счетчика команд PC размер следующей команды = 4. 2) Сравниваемые операнды считываются из регистров $t1 и $t2. Устройство управления декодирует код операции op и формирует все управляющие сигналы. 3) АЛУ выполняет операцию вычитания операндов из $t1 и $t2. Значение offset умножается на размер команды (на 4) путем сдвига влево на 2 разряда и складывается со значением из PC (=PC+4), получается адрес перехода. Если операнды равны и флаг Zero = 1, то в PC записывается адрес перехода. Если Zero = 0 - в PC записывается адрес следующей команды (PC+4)
Безусловный: j target_address
одна стадия 1) Код команды считывается из памяти команд, счетчик команд увеличивается на размер следующей команды PC=PC+4. Адрес памяти перехода (26 бит) из команды умножается на 4 (сдвиг на 2), сцепляется со старшими 4 битами значения (PC+4) и записывается в PC.
тракт доступа к памяти данных(LW)
Data memory – основная память для хранения данных (память данных) Address – (вход)подается адрес слова в основной памяти Write Data – (вход) подается записываемое слово данных Read Data – (выход) считывается слово данных (операция чтения) MemWrite – (вход) подается управляющий сигнал «начать запись» MemRead - (вход) подается управляющий сигнал «начать чтение».Управляющие сигналы: ALUSrc – выбор на входе АЛУ: операнд №2 или смещение адреса для слова в памяти MemtoReg – выбор для записи результата в РОН: результат операции или слово памяти RegWrite – команда «начать запись» результата в РОН
Организация управления АЛУ
Формирование сигналов управления
Тракт выполнения регистровых команд(ADD, SUB)
add $t1, $t2, $t3 четыре стадии. 1) Код команды считывается из памяти команд, счетчик команд увеличивается на размер следующей команды PC=PC+4. 2) Значения операндов считываются из регистров $t1 и $t2 регистрового файла. Устройство управления декодирует код операции op и формирует все управляющие сигналы.3) АЛУ выполняет операцию сложения, настроенное на нее управляющим сигналом ALU Operation от блока ФДГ Control. 4) Результат сложения записывается в регистровый файл по адресу $t1.