Карточка 4. АЛУ и флаги
Паспорт концепта
- Уровни: 13 «Сердце математики» (30 мин), 14 «АЛУ» (40 мин). Часть 1.
- Суммарно: ~70 минут игры, два занятия.
- Результаты обучения: ученик объясняет, как каскад мультиплексоров маршрутизирует результат нужной операции; описывает архитектуру АЛУ (декодер → операции → MUX) и назначение флага Zero.
- Гайды: ур. 13, ур. 14.
План занятия на 45 минут
Занятие ставит идею «все операции считаются сразу, выбирает декодер»; полную сборку АЛУ (ур. 14, 40 минут) оставляйте на самостоятельную работу.
- 0–10 мин. Разминка: калькулятор с одной кнопкой. Как дать ему семь кнопок, не строя семь калькуляторов? Идея: считать всё, выбирать одно.
- 10–25 мин. Самостоятельная работа с уровнем 13 (малый АЛУ). Напомните про MUX из уровня 9: это тот же переключатель, только на шинах.
- 25–35 мин. Разбор концепт-чека уровня 14 (краш-тест «пустите сумматор в обход MUX»). Вопрос: почему без MUX декодер ничего не решает?
- 35–45 мин. Флаг Zero: как из восьмибитного результата получить один бит «получился ли ноль». Домой: уровень 14 целиком.
Вопросы для обсуждения
- Семь операций считаются одновременно, работает только одна. Не расточительно ли это? За что мы платим и что выигрываем?
- Почему Opcode сначала разбирается на биты? Что делает с этими битами декодер?
- Флаг Zero — один бит. Какие команды процессора без него не смогли бы работать? (Подсказка: вспомните условный переход из конца курса.)
- АЛУ сложило 100+100 и выдало 200 (11001000₂) при Carry=0. Для беззнаковых чисел всё верно. Почему программист, работающий со знаковыми числами, назовёт этот результат переполнением?
- Чем Carry отличается от переполнения знака? Подберите по одному примеру на каждое событие.
Ожидаемые ошибки
Краш-тесты уровней 14 и 45 дают наблюдения, а не варианты ответов, поэтому здесь список собирается из живых ошибок сборки. Он будет уточняться по телеметрии концепт-чеков.
- Ученик подключил Result только от одной операции (например, только сумматор). Реакция: прогоните тест с Opcode другой операции; подведите к мысли «считать все, выбрать одну».
- Ученик путает провода декодера — на эту ошибку наталкивает краш-тест уровня 45: переставленные s_add и s_or меняют смысл команды при той же схеме. Реакция: смысл операции живёт в декодере, а не в вентилях.
- Ученик говорит: «Zero — это выход, равный нулю». Реакция: Zero это флаг, то есть ответ на вопрос «результат нулевой?». Единица на этом выходе означает «да, нулевой».
- Ученик считает, что Carry=0 гарантирует правильный ответ. Реакция: вектор 127+1 даёт Carry=0, но для знаковых чисел результат −128. Перенос и переполнение знака — разные события.
Критерии оценки
- Собрал. Уровни 13–14 закрыты, краш-тест уровня 14 пройден.
- Собрал и объяснил. Рисует архитектуру «декодер → операции → MUX» по памяти, объясняет флаг Zero, отвечает на вопросы 1–3.
- Перенёс на новую задачу. Различает Carry и переполнение знака на новых примерах (вопросы 4–5) или выполнил задачу для сильных.
Задача для сильных
Добавьте в АЛУ (в песочнице, поверх уровня 14) пятую операцию: сравнение. Результат — 1, если A > B, иначе 0. Подсказь только словом: вычитание уже есть, нужен способ узнать знак результата.
Парная работа
Проектировщик собирает каскад MUX на уровне 14; проверяющий до каждой проверки называет ожидаемый Result и Zero для конкретного вектора (например, A=5, B=5, Opcode=0). Проверяющий следит, чтобы проверялись все семь операций, а не только сложение. Смена ролей — после каждой успешной проверки.