Методическое руководство для преподавателя: Занятие 17

Дисциплина «ОП.02 Архитектура аппаратных средств». Практическое занятие объединяет две смежные темы программы (§2.2, с. 8): «Практическое занятие №5 «Устройство управления и шины»» и «Практическое занятие №6 «Ввод-вывод»». Оценочный продукт — единый протокол диагностики пути данных.

1. Педагогический замысел и дидактическая специфика темы

Данное занятие является критической узловой точкой курса. Обучающиеся связывают микроархитектуру центрального процессора (устройство управления, регистры, конвейер) с внешними интерфейсами, системной шиной и периферийными контроллерами.

Ключевой смысловой переход: От абстрактного понимания «процессор считывает команду» к четкой аппаратной физике: выставление адреса $\to$ спад строба $\to$ ожидание сигнала READY $\to$ фиксация на шине данных $\to$ прерывание или прямой доступ к памяти DMA.

В практической части предусмотрена дифференциация по 4 вариантам целевых устройств:

  1. Вариант 1 (Клавиатура PS/2 / Super I/O): классический символьный ввод-вывод, изолированные порты PMIO (0x60, 0x64), прерывание IRQ1, отсутствие DMA.
  2. Вариант 2 (Сетевая карта Gigabit Ethernet): пакетный ввод-вывод, память MMIO BAR0, многовекторные прерывания MSI-X, аппаратные кольца дескрипторов Bus Master DMA, изоляция IOMMU.
  3. Вариант 3 (Накопитель NVMe SSD): блочный ввод-вывод, шина PCIe Gen4 x4, очереди Submit/Complete Queue через Doorbell-регистры MMIO, списки PRP/SGL DMA.
  4. Вариант 4 (Аудиокарта / DSP): потоковый изохронный ввод-вывод, MMIO BAR0, циклический циклический DMA (Cyclic Buffer Descriptor List) с прерываниями по заполнению половины/полного буфера.

2. Критерии оценивания (4-балльная открытая шкала)

Итоговая оценка за практическую работу выставляется по прозрачной 4-балльной матрице (срок сдачи — до следующей пары):

Критерий Баллы Требования для зачета
1. Корректность сопоставления методов и стробов шины 0–2 б. 2 балла: безошибочно заполнены таблицы методов обмена (PIO, IRQ, DMA) и стробов (RD#, WR#, IOR#, IOW#, DREQ, DACK#); точно указаны активные уровни и направления сигналов.
1 балл: допущена 1 негрубая неточность в стробах или классификации уровней.
0 баллов: грубая путаница стробов памяти и ввода-вывода или неверное определение роли сигналов DMA.
2. Объяснение принципов УУ и прерываний 0–1 б. 1 балл: аргументированно раскрыты различия схемного УУ (Hardwired RISC FSM) и микропрограммного УУ (ROM/CROM microcode), описана пошаговая цепочка конвейера прерывания (проверка IF, строб INTA#, сохранение контекста EFLAGS/CS/EIP в стек, переход по IDT, возврат по IRET).
0 баллов: поверхностные бытовые ответы без физико-логической конкретики.
3. Проверка диагностического кейса пути данных 0–1 б. 1 балл: по выбранному варианту составлена логически выверенная трассировка (пространство адресов, стробы/TLP, тип IRQ/MSI, режим DMA), корректно локализована смоделированная неисправность и предложен действенный способ устранения.
0 баллов: неверный выбор подсистемы обмена, абсурдный диагноз неисправности.

Перевод в академическую отметку: 4 балла — «5» (отлично); 3 балла — «4» (хорошо); 2 балла — «3» (удовлетворительно); 0–1 балл — «2» (незачет, отправка на резервное домашнее задание).

3. Типичные ошибки обучающихся и методы их упреждения

Ошибка 1: Отождествление стробов чтения памяти (MEMR#) и ввода-вывода (IOR#).
Суть ошибки: Студенты полагают, что при выполнении инструкции IN AL, 60h на шине активируется строб MEMR#.
Методический акцент: Напомните, что в архитектуре x86 шина имеет выделенный сигнал M/IO#. Команда IN переводит M/IO# в 0 и формирует отдельный строб IOR#. Команда MOV AL, [60h] обращается к первому килобайту ОЗУ (таблица векторов реального режима) со стробом MEMR# при M/IO# = 1!
Ошибка 2: Непонимание одновременной активности стробов при цикле DMA.
Суть ошибки: Студенты считают, что передача DMA происходит в два последовательных шага через регистр контроллера: сначала чтение, потом запись.
Методический акцент: Обратите внимание на «одноцикловый» (Fly-by) DMA: контроллер DMA выставляет адрес ячейки ОЗУ на шину адреса, после чего одновременно активируются строб чтения порта ввода-вывода IOR# = 0 и строб записи в память MEMW# = 0! Байт перетекает из периферийного контроллера прямо в ячейку ОЗУ за один такт шины.
Ошибка 3: Путаница в конвейере прерывания (стек vs ISR).
Суть ошибки: Обучающиеся пишут, что регистры EAX, EBX, ECX сохраняются в стек аппаратно самим процессором до вызова прерывания.
Методический акцент: Аппаратная логика процессора сохраняет в стек только минимальный контекст управления: EFLAGS, CS и EIP (а также код ошибки в исключениях). Сохранение регистров общего назначения (PUSHAD / PUSH RAX...) — это обязанность программиста в первых строках кода обработчика ISR!
Ошибка 4: Игнорирование многовекторности MSI-X в высокоскоростных сетях.
Суть ошибки: В варианте 2 студенты пытаются назначить сетевому адаптеру 100 GbE одну физическую линию IRQ.
Методический акцент: Разберите понятие «шторма прерываний» (Interrupt Storm): 148 млн пакетов в секунду полностью парализуют ядро процессора. Покажите необходимость технологии MSI-X, позволяющей аппаратно раскидывать пакеты по очередям RSS на все ядра CPU.

4. Рекомендации по ведению занятия (80 и 60 минут)