Устройство АЛУ микропроцессора 8085 изнутри

Арифметико-логическое устройство (АЛУ) является «сердцем» любого вычислителя, отвечая за выполнение базовых математических и логических операций. Тем не менее, его внутренняя архитектура для многих остается загадкой. В этой статье я представлю результаты реверс-инжиниринга схемы АЛУ микропроцессора 8085. На первый взгляд устройство кажется хаотичным нагромождением логических вентилей, однако при детальном погружении в булеву алгебру его структура становится вполне логичной и стройной.

На диаграмме ниже отмечено положение АЛУ в составе 8085. Мы имеем дело с 8-битной архитектурой, где старший разряд расположен слева. Непосредственно под АЛУ размещен блок регистров, состоящий из 16-битных пар 8-битных регистров. Примечательно, что порядок разрядов в регистровом файле инвертирован по отношению к АЛУ: старший разряд здесь находится справа.

Микропроцессор 8085, расположение 8-битного АЛУ.
Микропроцессор 8085, расположение 8-битного АЛУ. Полная версия доступна по ссылке.

АЛУ оперирует двумя 8-битными входами (A и X), поддерживая пять ключевых операций: ADD, OR, XOR, AND и SHIFT-RIGHT. Благодаря возможности инвертирования входа X, устройство также справляется с вычитанием и взятием дополнения. Отсутствие аппаратного сдвига влево (SHIFT-LEFT) компенсируется простым сложением числа с самим собой. Стоит отметить, что арифметический инструментарий 8085 весьма аскетичен: здесь нет встроенных команд умножения или деления — они появились лишь в архитектуре 8086.

Конструктивно АЛУ разбито на 8 идентичных секций, каждая из которых обслуживает один бит. В режиме сложения эти секции формируют Схема одного разряда АЛУ процессора 8085.

Принципиальная схема одного разряда АЛУ 8085.

Модуль инверсии

В нижней части секции расположен узел «Negation», управляющий инверсией второго аргумента. Он позволяет выбирать между прямой (XN) и инвертированной (/XN) версией входного сигнала.

Выполнение операций

Над блоком инверсии находится логический узел «Operation». Используя элементы NAND и OR, управляемые линиями select_op1 и select_op2, схема формирует комбинации, которые после дальнейшей обработки дают нужный результат:

select_op1

select_op2

Логический результат

0

0

A NOR X

0

1

0

1

0

A NXOR X

1

1

A AND X

Заметим, что некоторые операции на этом этапе выдаются в инвертированном виде, что корректируется на последующих стадиях.

Интеграция с переносом

Узел «Combine with carry» — это финальный этап формирования выходного сигнала, где результат операции объединяется с битом переноса через XOR. Этот блок фактически работает как XOR-гейт: если перенос равен 0, значение не меняется; если 1 — инвертируется.

Реализация XOR с помощью NOR и AND-NOR.
Реализация логического элемента XOR, применяемая в 8085.

Матрица состояний переноса обеспечивает правильность вычислений для всех режимов:

Операция

Выход блока Op

Перенос

Итог

OR

A NOR X

1

A OR X

ADD

A NXOR X

/перенос

A XOR X XOR CARRY

XOR

A NXOR X

1

A XOR X

AND

A AND X

0

A AND X

SHIFT RIGHT

0

0

A(N+1)

Формирование флагов и управление

Флаг чётности (Parity) рассчитывается последовательным применением XOR ко всем битам результата, в то время как флаг нуля (Zero) реализуется как 8-входовой элемент NOR, стягивающий линию к земле при наличии хотя бы одной «единицы» в выходном байте.

Управление АЛУ осуществляется программируемой логической матрицей (PLA), которая на основе декодированного опкода активирует нужные управляющие линии. Эта система делает АЛУ 8085 компактным, но гибким вычислительным узлом.

Итоги

Реверс-инжиниринг показал, что АЛУ 8085 обладает уникальной, высокоэффективной структурой, отличной от подхода, использованного в более поздних или параллельных архитектурах, таких как MOS 6502. Вместо использования универсальных мультиплексоров для выбора из набора готовых результатов, АЛУ 8085 динамически синтезирует именно то значение, которое необходимо для текущей инструкции.

Другие выпуски от Ken Shirrif

Если вас интересуют современные подходы к проектированию систем и архитектурный анализ, предлагаем ознакомиться с актуальными бесплатными занятиями:

Больше бесплатных уроков доступно в календаре событий.

 

Источник

Читайте также