Микроархитектура RISC: следующий этап курса
В разработке — уровни 48–56 заявлены, сроки не объявлены.
После 47 уровней вы умеете собрать компьютер, который исполняет программу. Следующий шаг — научиться делать его быстрым: разобрать одну команду на пять стадий и понять, где и почему конвейер ошибается.
Что меняется после части 4
В частях 1–4 вы собирали процессор вокруг аккумулятора: почти любая команда читала его, что-то с ним делала и записывала обратно. Это удобно для первых шагов и неудобно для скорости: две команды не могут работать одновременно, потому что обе держат один и тот же регистр.
Часть 5 перестраивает машину под другую модель работы:
- Регистровый файл вместо аккумулятора. Восемь регистров
R0–R7;R0всегда читается как ноль, и запись в него игнорируется. Так исчезает отдельный «нулевой» источник сигнала. - Доступ к памяти только через load-store. Арифметика и логика работают с регистрами, а
LWиSWпереносят значения между регистрами и памятью. - 16-битные команды и данные. Архитектура этапа называется E-RISC-16: одна и та же разрядность у команды, адреса и данных.
- Пять стадий. Выборка, декодирование, исполнение, обращение к памяти, запись результата: IF — ID — EX — MEM — WB. Одна команда проходит все пять, а соседняя в это время стоит на следующей.
- Открытое управление. Control Unit, Forwarding Unit и Hazard Unit собираются из вентилей и мультиплексоров, как АЛУ в части 1. Это не готовые блоки, а схемы, которые вы проектируете сами.
Точный список инструкций и таблица опкодов ещё не зафиксированы: они уточняются вместе с уровнями.
Три принципа этапа
Уровни части 5 устроены иначе, чем уровни частей 1–2. Там проверка сравнивала схему с таблицей истинности. Здесь ошибка чаще не в отдельном вентиле, а в согласовании стадий — и её видно только по поведению во времени.
- Продуктивная неудача. Сначала вы собираете наивный конвейер и запускаете на нём настоящую программу. Результат оказывается неверным. Дальше вы ищете причину по временной диаграмме: какая стадия и на каком такте получила не то значение. Правило появляется как вывод из наблюдения, а не как готовый ответ в задании.
- Открытая логика управления. Control Unit, Forwarding Unit и Hazard Unit — это схемы, которые вы строите сами. Что значит «источник данных готов», «конфликт», «пузырь» — вы формулируете в терминах сигналов, а не принимаете на веру.
- Инженерный компромисс. Конвейер не бесплатен: он ускоряет одни программы и усложняет схему. На каждом шаге учитываются две метрики — число тактов на команду (CPI) и цена схемы: задержка распространения и количество вентилей.
Маршрут: девять уровней
Последовательность идёт от регистрового файла к сборке ядра: каждый уровень добавляет ровно одну причину, по которой конвейер может ошибиться.
Прощай, аккумулятор!
Регистровый файл на восемь регистров, load-store и R0, который всегда равен нулю.
Анатомия команды
Поля инструкции, расширение знака и декодер, превращающий биты в управляющие сигналы.
Однотактный RISC
Тракт R-команд: PC → память команд → регистры → АЛУ → запись результата.
Память и ветки
LW/SW, Control Unit и BEQ: первый цикл на собственной системе команд.
Конвейерная лента
Четыре межстадийных регистра, пять стадий и капсулы инструкций, движущиеся сквозь такт.
Короткий путь
RAW-конфликты и forwarding: результат едет к АЛУ напрямую, не дожидаясь записи в регистр.
Пузырь загрузки
Load-use конфликт и Hazard Unit: почему после LW иногда нужен ровно один пузырь.
Призраки неверного пути
Control hazard, flush и цена перехода: что происходит с уже выбранными инструкциями.
Кремниевый конвейер
Сборка ядра, метрика CPI и перенос проекта на Tang Nano 9K.
Образовательный эффект
После этапа ученик сможет:
- объяснить, что происходит на каждой из пяти стадий и что хранят межстадийные регистры;
- читать каскадную диаграмму: какая команда на каком такте находится в какой стадии;
- различать три вида конфликтов — RAW, load-use и control — и не путать их причины;
- вывести правила forwarding, stall и flush из наблюдаемого поведения, а не запомнить их списком;
- посчитать CPI и сравнить однотактный и конвейерный варианты одной и той же машины;
- перенести модель на любую RISC-подобную систему команд.
Для преподавателя
Часть 5 стоит после части 4 и опирается на неё: к этому моменту ученик уже собирал блок управления, собственную систему команд и тракт данных на Verilog. Конвейер не вводит новые вентили — он вводит новое требование к организации уже знакомых блоков.
Продуктивная неудача здесь работает как лабораторная работа: правильный ответ нельзя угадать, его можно только вывести из расхождения между ожидаемым и фактическим результатом. Поэтому оценивается не «соедини по шпаргалке», а диагностика: сумел ли ученик найти такт, стадию и сигнал, где возникла ошибка, и сформулировал ли правило, которое её снимает.
Открытая логика управления даёт вторую точку оценки: правило forwarding, условие stall и момент flush должны быть записаны в терминах сигналов схемы. Такое правило можно проверить на новых программах, а не только на той, где оно было придумано.
Сроки этапа и точная система команд не зафиксированы. Материалы появятся в программе курса и в карте уровней одновременно с готовыми уровнями.
Статус и границы
- Уровни 48–56 не играбельны: в карте уровней и в программе курса они помечены как «в разработке».
- Гайдов по этим уровням нет, ссылок на них из курса нет.
- Сроки не объявлены.
- Базовые параметры E-RISC-16 — 16-битные команды и данные, восемь регистров, пять стадий — зафиксированы; таблица опкодов и финальный список инструкций могут уточняться.
- Целевая плата уровня 56 — Tang Nano 9K; перенос проекта на неё — часть будущего уровня, а не доступная сейчас выгрузка.
- Текущий курс остаётся курсом из 47 уровней: прогресс, сертификаты и кабинеты считают только их.
Дальше
- Программа курса — таймлайн 47 уровней и анонс части 5.
- Карта уровней в игре — части курса и пятая вкладка с анонсом.
- Verilog и FPGA — как схема превращается в чип на плате.
- Уровень 47 «Материализация» — финал текущего курса.