Процессор 6502 был разработан компанией MOS в 197-бородатом году. За основу была положена архитектура процессора Motorolla 6800:

6502_die_shot.jpg 6800.jpg
(видно что в обоих случаях верхнюю часть занимает декодер и рандомная логика, а всю нижнюю часть процессора занимает контекст)

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).

Соединения регистров с шинами

6502_context.jpg

Последовательно соединяя шины и регистры процессор выполняет разнообразные инструкции. Многообразие соединений обеспечивает разнообразие команд процессора, а разделение команд на такты позволяет выполнять сложные действия. Дополнительно производится управление АЛУ (сложение, логическое-И и пр.)

  • Показать исходный текст