АЛУ (ALU8)

Входы (Inputs)

ПинТипОписание
Abus8Первый операнд
Bbus8Второй операнд
Opcodebus8Код операции (0–7)

Выходы (Outputs)

ПинТипОписание
Resultbus8Результат
Zerobit1 если Result=0

Логика работы

АЛУ — это калькулятор с ручкой переключения режимов: подаёшь два байта A и B, выставляешь код операции на входе Opcode — и на выходе Result появляется ответ. Внутри спрятан красивый трюк: никакого «переключения режимов» на самом деле нет. Сумматор и все логические блоки считают свои результаты одновременно и постоянно, а каскад мультиплексоров по битам opcode просто выбирает, чей результат сейчас показать на выходе.

Главное свойство: восемь операций в одном чипе. Код 0–7 на входе Opcode — и АЛУ складывает, вычитает, делает И, ИЛИ, XOR, инвертирует или сдвигает. Возьмём A = 00001010 (10) и B = 00000110 (6): opcode 0 (ADD) даст 00010000 (16), opcode 2 (AND) — 00000010 (2), а opcode 7 (SHR) — 00000101 (5). Схема не перестраивается — меняется только выбранный провод.

Нюанс: операции NOT, SHL и SHR игнорируют вход B — им нужен только A. Сама схема полностью комбинационная, без тактов: изменились входы — результат обновляется сразу же. Рядом с Result живёт флаг Zero: он равен 1, когда результат равен нулю, и именно по нему процессор понимает, что вычитание дало ноль.

Примеры

A (dec)B (dec)OpcodeОперацияResultZero
1060ADD00010000 (16)0
1061SUB00000100 (4)0
661SUB00000000 (0)1
1062AND00000010 (2)0
1063OR00001110 (14)0
10—5NOT11110101 (245)0
10—7SHR00000101 (5)0

В третьей строке вычитание числа из самого себя дало ноль — и флаг Zero подскочил к 1. Так процессор сравнивает числа. Для NOT и SHR значение B не важно: эти операции берут только A.

Таблица операций

OpcodeМнемоникаОперация
0ADDResult = A + B
1SUBResult = A − B
2ANDResult = A & B
3ORResult = A | B
4XORResult = A ^ B
5NOTResult = ~A (B игнорируется)
6SHLResult = A << 1 (B игнорируется)
7SHRResult = A >> 1 (B игнорируется)

Применение

На уровне 13 ты собираешь селектор операций сам: каскад мультиплексоров, который по битам opcode выбирает между результатами сумматора и логических блоков. В готовом компьютере (уровни 13–18 и 25) АЛУ — сердце процесса: аккумулятор подаётся на вход A, RAM — на вход B, декодер команд выставляет Opcode, а результат возвращается в аккумулятор или в память.

Конкретные приёмы: сравнение двух чисел — это SUB плюс взгляд на флаг Zero (ноль — значит равны); инструкция JZ делает условный переход именно по этому флагу; умножение и деление на 2 заменяются сдвигами SHL и SHR; маскирование отдельных битов — через AND и OR. По сути любая «умная» команда процессора сводится к одной из восьми операций АЛУ.

Собери это сам →

Смежные компоненты

Статьи по теме

Частые вопросы

Что умеет ALU8?

Восемь операций: ADD, SUB, AND, OR, XOR, NOT, SHL и SHR — выбираются кодом операции на входе.

Как АЛУ выбирает операцию?

Все вычислительные блоки работают параллельно и одновременно, а каскад мультиплексоров по битам opcode подключает к выходу Result ровно один нужный провод — тот, где уже лежит готовый ответ.

Зачем нужен флаг Zero?

Он равен 1, когда результат равен нулю. По нему инструкция JZ делает условный переход: вычти одно из другого и проверь Zero — так процессор сравнивает числа и строит циклы.