Фундаментальный конспект лекционного материала по дисциплине «ОП.02 Архитектура аппаратных средств» (раздел 1.6 программы). Рассматриваются принципы построения устройства управления (Hardwired vs Microprogrammed), протоколы шин, синхронный и асинхронный обмен, аппаратные прерывания (IRQ, APIC, MSI-X), прямой доступ к памяти DMA и сопоставление адресных пространств PMIO и MMIO.
Устройство управления (УУ, Control Unit) — центральный логический координатор процессора, преобразующий машинный код программы в согласованную во времени последовательность микроопераций и управляющих сигналов для арифметико-логического устройства (АЛУ), регистрового файла, подсистемы памяти и внешних интерфейсов.
В классической RISC-архитектуре (ARM, MIPS, RISC-V) устройство управления строится как аппаратный конечный автомат (Finite State Machine, FSM). Управляющие сигналы формируются комбинационными логическими матрицами (дешифраторы кодов операций, матрицы AND-OR) и синхронными счетчиками тактов.
Предложено Морисом Уилксом (Maurice Wilkes) в 1951 году и лежит в основе сложных CISC-процессоров (включая семейство x86/x86-64). Каждая машинная команда представляет собой вызов микропрограммы — последовательности микрокоманд (micro-operations, micro-ops), считываемых из специальной управляющей памяти (Control Read-Only Memory, CROM).
Системная шина представляет собой комплекс электрических линий, функционально объединяющих функциональные блоки ЭВМ. Традиционная системная магистраль делится на три подшины:
| Тип обмена | Механизм координации | Преимущества и физические ограничения |
|---|---|---|
| Синхронный обмен | Все фазы привязаны к фронтам единого тактового генератора шины (CLK). Передача происходит за фиксированное количество тактов ($T_1, T_2, \dots$). | Простота управляющей логики. Ограничение: длительность такта рассчитывается по самому медленному узлу магистрали; на высоких частотах возникает перекос фаз (Clock Skew). |
| Асинхронный обмен | Передача управляется протоколом квитирования («рукопожатия», Handshaking) по линиям запроса (REQ# / STROBE#) и подтверждения (ACK# / DTACK#). |
Независимость от быстродействия периферии: быстрые устройства завершают цикл мгновенно, медленные удерживают шину до готовности. Сложнее схемотехника. |
Если быстродействие адресуемого устройства ниже частоты шины CPU, ведомый контроллер переводит линию READY в пассивное состояние. Устройство управления процессора продлевает шинный цикл, вставляя такты ожидания Tw (Wait States). Стробы чтения/записи удерживаются активными, пока READY не станет равным 1.
При наличии нескольких активных задатчиков шины (CPU, контроллер DMA, видеоадаптер) аппаратный арбитр шины разрешает коллизии с помощью сигналов запроса (HOLD / REQ#) и подтверждения передачи управления (HLDA / GNT#).
Прерывание (Interrupt) — аппаратный сигнал от периферийного контроллера или внутренней логики, приостанавливающий нормальное последовательное выполнение инструкций процессором и переключающий управление на специализированную подпрограмму обработки прерывания (Interrupt Service Routine, ISR).
[Периферийный контроллер] ---> Выставляет IRQ / посылает пакет MSI-X
|
v
[Контроллер APIC / УУ CPU] -> Проверка флага IF (Interrupt Flag) в конце текущей команды
|
v
[Аппаратное подтверждение] -> Выдача строба INTA# и получение номера вектора N (0..255)
|
v
[Сохранение контекста] -> Автоматическая запись EFLAGS, CS, EIP в системный стек; IF = 0
|
v
[Выборка из таблицы IDT] -> Чтение шлюза прерывания IDT[N] -> Загрузка нового CS:EIP
|
v
[Выполнение ISR] -> Сохранение регистров, обслуживание устройства, посылка EOI
|
v
[Команда IRET] -> Аппаратное восстановление EIP, CS, EFLAGS из стека -> Возврат в поток
Прямой доступ к памяти (Direct Memory Access, DMA) — аппаратный способ пересылки блоков данных между периферийным устройством и оперативной памятью напрямую без участия центрального процессора в пересылке каждого отдельного машинного слова.
DREQ активной.| Параметр | Системный контроллер Intel 8237A (Legacy) | Bus Master DMA (Современный PCIe / NVMe) |
|---|---|---|
| Топология | Централизованный чипсетный контроллер; периферия является ведомой (Slave). | Периферийный адаптер сам является задатчиком шины (Master) со встроенным DMA-движком. |
| Адресация | 16-битный счетчик адреса + 8-битный регистр страниц (лимит 16 МБ ОЗУ, блоки до 64 КБ). | Полная 64-битная адресация без ограничений по размеру блока памяти. |
| Управление списками | Только непрерывные физические страницы памяти. | Списки разрозненных страниц (Scatter-Gather List, SGL) и кольцевые очереди (Descriptor Rings). |
| Аппаратная защита | Отсутствует; сбойный контроллер может затереть ядро ОС. | Аппаратная изоляция и виртуализация через IOMMU (Intel VT-d / AMD-Vi). |
Для взаимодействия центрального процессора с внутренними регистрами периферийных контроллеров исторически сложились две базовые концепции:
Архитектура x86 реализует отдельное независимое адресное пространство портов ввода-вывода размером 64 КБ (адреса 0x0000–0xFFFF).
IN AL, port и OUT port, AL.IOR# (I/O Read) и IOW# (I/O Write), при этом линия типа цикла M/IO# переводится в низкий уровень (0).Регистры управления, статуса и буферы данных контроллеров отображаются в общее физическое адресное пространство оперативной памяти.
MOV, TEST, AND, OR, CMP.MEMR# и MEMW# при высоком уровне M/IO# = 1.IN AX, 60h отличается от выполнения инструкции MOV AX, [0060h]?