Карточка 10. Своя система команд и FPGA
Паспорт концепта
- Уровни: 44 «Мозг процессора» (25 мин), 45 «Своя инструкция» (35 мин), 46 «Окно в реальный мир» (30 мин), 47 «Материализация» (45 мин). Часть 4.
- Суммарно: ~135 минут игры, обычно три занятия. Финальный блок: ученик достраивает процессор и выводит его на настоящую плату Tang Nano 9K.
- Результаты обучения: ученик объясняет устройство управления как большой дешифратор опкода; добавляет свою инструкцию в систему команд; настраивает memory-mapped I/O — доступ к светодиодам и переключателям через адресное пространство; понимает, что Verilog синтезируется в ресурсы ПЛИС, и получает работающий компьютер на плате.
- Гайды: ур. 44, ур. 45, ур. 46, ур. 47.
План занятия на 45 минут
Первое занятие: уровень 44. Второе: 45–46. Третье: 47 и демонстрация платы.
- 0–10 мин. Разминка: кто в процессоре «читает» опкод? Пусть ученики вспомнят дешифратор из части 2 (ур. 17) и предположат, что устройство управления — тот же принцип, но больше входов.
- 10–25 мин. Уровень 44 самостоятельно. После проверки обсудите краш-тест: там перекоммутируют декодер так, что OR становится ADD. Вывод: смысл команды задаёт декодер, а не вентили.
- 25–35 мин. Разбор memory-mapped I/O (ур. 46): адрес 0xFF перехватывается дешифратором, и запись уходит в светодиоды. Для процессора это обычная запись по адресу — «обман» происходит в шине.
- 35–45 мин. Уровень 45 в парах. Домашний кусок: уровень 46; на третьем занятии — уровень 47 с экспортом ZIP и прошивкой платы (или демонстрацией готовой, если плата одна на класс).
Вопросы для обсуждения
- Устройство управления — это «мини-процессор внутри процессора» или что-то проще? Обоснуйте устройством схемы: есть ли в нём память?
- Что меняется в системе команд при добавлении новой инструкции: АЛУ, ROM, декодер — или всё сразу?
- Как процессор отличит запись в RAM от записи в светодиоды, если «тип устройства» по шине не передаётся?
- Почему нельзя «прошить ZIP как есть» во флеш платы? Что должно произойти с Verilog-кодом, чтобы он стал конфигурацией ПЛИС?
- Ваша инструкция занимает один опкод из 16 возможных. Сколько инструкций влезет в систему команд с 4-битным опкодом — и что ограничивает это число в реальном железе?
- Если два устройства ответят на один адрес, что произойдёт на шине? Как это проверить в схеме уровня 46?
Ожидаемые ошибки
Список собран из неверных вариантов концепт-чеков всех четырёх уровней блока; по мере накопления телеметрии он будет уточняться по реальной доле верных ответов с первой попытки.
- Ученик говорит: «устройство управления — мини-процессор со своей памятью и микроинструкциями». Реакция: в этой архитектуре CU — комбинационная схема, большого дешифратора. Никакой памяти и программы внутри нет: биты опкода напрямую включают нужные управляющие сигналы.
- Ученик говорит: «инструкции хранит устройство управления». Реакция: инструкции лежат в ROM; CU их только расшифровывает. Проверьте: при смене программы в ROM схема CU не меняется.
- Ученик говорит: «LED и RAM различаются по типу данных на шине». Реакция: для процессора адрес — просто число; тип по шине не ходит. Различение происходит по адресу: детектор 0xFF перехватывает запись.
- Ученик говорит: «ZIP копируется во флеш, и плата исполняет архив». Реакция: Verilog нельзя исполнить напрямую. Синтез превращает код в конфигурацию ячеек ПЛИС — таблицы LUT и соединения триггеров, — и прошивается уже эта конфигурация.
- Ученик говорит: «Verilog компилируется в машинный код процессора платы». Реакция: ПЛИС — не процессор. Внутри нет системы команд; синтезатор размещает вашу схему по ячейкам и прокладывает маршруты между ними.
Критерии оценки
- Собрал. Уровни 44–47 закрыты; на 47 — экспортированный ZIP и (при наличии платы) работающие светодиоды.
- Собрал и объяснил. Формулирует CU как дешифратор, объясняет memory-mapped I/O через адрес, а не «тип данных»; описывает путь «Verilog → синтез → конфигурация ПЛИС».
- Перенёс на новую задачу. Добавил в проект собственную инструкцию с новым опкодом и проверил её программой из ROM; или придумал, как разделить адреса RAM и портов иначе, чем в уровне 46.
Задача для сильных
Добавьте к процессору инструкцию SUB с собственным опкодом: декодер, путь через АЛУ и проверку программой из ROM. Затем посчитайте, сколько опкодов осталось свободными, и объясните, почему в реальных архитектурах (x86) система команд разрослась далеко за границы «один опкод — одна операция».
Парная работа
Инженер правит Verilog и проговаривает, какой сигнал куда идёт; верификатор проверяет список опкодов против таблицы декодера до синтеза и после теста называет, что увидят светодиоды при записи в 0xFF. Верификатор не трогает мышь, но обязан спросить «какой сигнал включит новая инструкция?» до запуска. Смена ролей — на уровне 46.