Карточка 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 целиком.

Вопросы для обсуждения

  1. Семь операций считаются одновременно, работает только одна. Не расточительно ли это? За что мы платим и что выигрываем?
  2. Почему Opcode сначала разбирается на биты? Что делает с этими битами декодер?
  3. Флаг Zero — один бит. Какие команды процессора без него не смогли бы работать? (Подсказка: вспомните условный переход из конца курса.)
  4. АЛУ сложило 100+100 и выдало 200 (11001000₂) при Carry=0. Для беззнаковых чисел всё верно. Почему программист, работающий со знаковыми числами, назовёт этот результат переполнением?
  5. Чем Carry отличается от переполнения знака? Подберите по одному примеру на каждое событие.

Ожидаемые ошибки

Краш-тесты уровней 14 и 45 дают наблюдения, а не варианты ответов, поэтому здесь список собирается из живых ошибок сборки. Он будет уточняться по телеметрии концепт-чеков.

  • Ученик подключил Result только от одной операции (например, только сумматор). Реакция: прогоните тест с Opcode другой операции; подведите к мысли «считать все, выбрать одну».
  • Ученик путает провода декодера — на эту ошибку наталкивает краш-тест уровня 45: переставленные s_add и s_or меняют смысл команды при той же схеме. Реакция: смысл операции живёт в декодере, а не в вентилях.
  • Ученик говорит: «Zero — это выход, равный нулю». Реакция: Zero это флаг, то есть ответ на вопрос «результат нулевой?». Единица на этом выходе означает «да, нулевой».
  • Ученик считает, что Carry=0 гарантирует правильный ответ. Реакция: вектор 127+1 даёт Carry=0, но для знаковых чисел результат −128. Перенос и переполнение знака — разные события.

Критерии оценки

  1. Собрал. Уровни 13–14 закрыты, краш-тест уровня 14 пройден.
  2. Собрал и объяснил. Рисует архитектуру «декодер → операции → MUX» по памяти, объясняет флаг Zero, отвечает на вопросы 1–3.
  3. Перенёс на новую задачу. Различает Carry и переполнение знака на новых примерах (вопросы 4–5) или выполнил задачу для сильных.

Задача для сильных

Добавьте в АЛУ (в песочнице, поверх уровня 14) пятую операцию: сравнение. Результат — 1, если A > B, иначе 0. Подсказь только словом: вычитание уже есть, нужен способ узнать знак результата.

Парная работа

Проектировщик собирает каскад MUX на уровне 14; проверяющий до каждой проверки называет ожидаемый Result и Zero для конкретного вектора (например, A=5, B=5, Opcode=0). Проверяющий следит, чтобы проверялись все семь операций, а не только сложение. Смена ролей — после каждой успешной проверки.