Содержание
Процессор 6502 был разработан компанией MOS в 197-бородатом году. За основу была положена архитектура процессора Motorolla 6800:
(видно что в обоих случаях верхнюю часть занимает декодер и рандомная логика, а всю нижнюю часть процессора занимает контекст)
6502 использовался в неисчислимом множестве устройств, включая Терминатора.
Описание внутренней архитектуры процессора 6502
Процессор делится на 2 части : верхняя и нижняя.
В верхней части находится управляющая часть, которая выдает ряд контрольных линий ("команд") для управления нижней частью.
В нижней части находится контекст процессора : внутренние шины и регистры, с одним исключением - регистр флагов (P) находится в верхней части в "размазанном" виде.
Работа процессора тактируется тактовым импульсом PHI0, при этом используются оба полутакта.
Во время первого полутакта (PHI1) процессор находится в режиме "говорю". В это время процессор выдает наружу данные.
Во время второго полутакта (PHI2) процессор находится в режиме "слушаю", во время этого полутакта внешние устройства могут помещать данные на шину данных, чтобы процессор их "обработал".
Регистры
- PD : текущее значения кода операции для предекодирования
- IR : регистр инструкций (хранит код текущей операции)
- X, Y : индексные регистры
- S: указатель стека
- AI, BI : входные значения для АЛУ
- ADD : промежуточный результат операции на АЛУ
- AC : аккумулятор
- PCH/PCL : program counter, состоящий из 2-х половинок
- PCHS/PCLS : вспомогательные регистры program counter (S означает "select" (?))
- ABH/ABL : регистры для вывода на внешнюю шину адреса
- DL : data latch, хранит последнее прочитанное значение внешней шины данных
- DOR : data output register, содержит значение которое будет записано в шину данных
- P : регистр флагов, на самом деле состоит из множества разбросанных по схеме защелок
Непосредственно программисту доступны следующие регистры : A (аккумулятор), X, Y, S, P, PC.
Внешние шины
Внешних шин всего две : 16-разрядная адресная (ADDR) и 8-разрядная шина данных (DATA). Адресная шина односторонняя - писать в неё может только процессор. Шина данных двунаправленная.
Внутренние шины
- ADH/ADL : шина адреса
- SB : special bus, шина для обмена регистрами
- DB : внутренняя шина данных
Во время второго полутакта (PHI2) все внутренние шины подзаряжаются и имеют значение 0xff. Сделано это по причине того, что "разрядить" транзистор в нужный момент получается быстрее, чем "зарядить" (смена значения 1⇒0 происходит быстрее, чем смена 0⇒1).
Соединения регистров с шинами
Последовательно соединяя шины и регистры процессор выполняет разнообразные инструкции. Многообразие соединений обеспечивает разнообразие команд процессора, а разделение команд на такты позволяет выполнять сложные действия. Дополнительно производится управление АЛУ (сложение, логическое-И и пр.)