Инструментальная поддержка преподавания дисциплины «Архитектура ЭВМ и язык ассемблера» на ВМК МГУ

Аннотация: преподавание базовой (второй семестр обучения) дисциплины «Архитектура ЭВМ и язык ассемблера» требует совмещать в семестровом курсе (52 часа теории + 52 часа практики) широкую фактологическую часть с практическим изучением одного конкретного языка ассемблера. Продуктивная по сути идея (автокод как практическая иллюстрация архитектуры) встречает всё больше трудностей: изучение современного ассемблера (nasm для x86_64) усложнено незначимыми практическими реалиями, изучение устаревшего (MASM для DOS) или модельного — страдает вопиющим расхождением с современностью. Так или иначе, большая часть теоретического материала не имеет практической поддержки. Авторами разработан, предложен и дважды проведён курс, основанный на архитектуре MIPS32 (эмулятор MARS) и классических модельных машинах, в котором сделана попытка поддержать практикой максимально возможный спектр изучаемых тем с автоматической проверкой программной части домашних заданий. В конце доклада обсуждаются возможности дальнейшего развития программной части курса.

О курсе «Архитектура ЭВМ и язык ассемблера»

Это базовая дисциплина, которую читают на первом курсе во втором семестра на факультете ВМК МГУ. Плотность достаточная (4 часа теории + 4 часа практики в неделю), но объём сведений, которые хочется (следует!) туда втиснуть, год от году растёт.

Цель
сформировать понимание, что такое «архитектуры ЭВМ» и почему они такие
Задачи
теория + фактология + практика
  • Изучить основы логической организации ЭВМ; смоделировать и сравнить несколько различных архитектур
  • Рассмотреть современное состояние ЭВМ и принципы, по которым развивается их архитектура, например:
    • конвенции и ABI;
    • базис: система команд, виды адресации, регистры, подпрограммы, флаги и т. д.
    • системные вызовы, прерывания, ловушки; внешние устройства, порты, MMIO, DMA и прочее; сопроцессоры;
    • аппаратная оптимизация — кеш, конвейер, упреждающие вычисления и зависимости вычислительных потоков;
    • аппаратная изоляция: режимы процессора, виртуальная память, виртуализация;
  • Освоить язык ассемблера, в котором по возможности эти принципы применяются на практике

К сожалению, два варианта этого базового курса, на наш взгляд, упираются в две крайности: один воспроизводит курс прошлого тысячелетия по 16-битной архитектуре (MASM6 + DOS), другой основан на nasm и x86_64. Сейчас готовится новый курс на базе Masm32 и Windows XP, сочетающий, на наш взгляд, худшие качества первых двух вариантов — моральную и актуальную устарелость и усложнённость изучаемого материала.

Выбор архитектуры

Мы провели много времени в спорах, что же взять за основу — идеальный учебный процессор в вакууме или настоящее живое железо, в котором пропустить всё лишнее. В итоге разработку идеального процессора мы оставили команде RiscV, а сами пришли к такому компромиссу:


TODO

Инструменты

MM

MARS

Moodle

EJudge

Выводы и задачи

Хотелось бы поменять ММ на MIPS-подобное что-то

До Си не дошли, зато я почти написал учебник)

См. также