Motorola 6809


Motorola 6809 — 8-разрядный микропроцессор (иногда называемый 8/16-разрядным), выпущенный компанией Motorola в 1979 году. Имел значительное превосходство над своим предшественником, Motorola 6800, а также перед процессором MOS Technology 6502, созданным оригинальной командой разработчиков 6800, ушедших из компании Motorola.

Среди значительных усовершенствований, появившихся в процессоре 6809, были два 8-разрядных аккумулятора (A и B, которые могли объединяться в один 16-разрядный регистр D), два 16-разрядных индексных регистра (X и Y) и два 16-разрядных указателя стека (U и S). Индексные регистры и регистры указателя стека позволяли использовать разнообразные методы адресации.

Процессор 6809 сохранял обратную совместимость с 6800 на уровне исходного кода. Однако, число команд было снижено с 78 до 59. Некоторые команды были заменены более общими, для обеспечения совместимости ассемблер заменял старые команды их новыми аналогами во время трансляции. Наборы команд и регистров имели большую ортогональность, что делало написание программ для процессора более простым по сравнению с процессорами 6800 или 6502.

Среди прочих возможностей присутствовала одна из первых аппаратных реализаций инструкции умножения, полная 16-разрядная арифметика и быстрая система прерываний. Процессор был сильно оптимизирован и работал до пяти раз быстрее, чем процессоры серии 6800. В процессоре сохранилась недокументированная инструкция тестирования шины адреса, появившаяся в процессоре 6800. Она позволяла обойти ограничения некоторых контроллеров памяти и получила название Halt and Catch Fire (HCF).

В отличие от многих процессоров того времени, процессор не использовал микрокод. Его конечный автомат и управляющая логика были в основном реализованы в большой ПЛМ и асинхронной произвольной логике (общая черта ранних конструкций, а также RISC-процессоров). Поэтому один машинный цикл выполнялся всего за один такт, что являлось преимуществом перед, например, процессором Zilog Z80 (одним из главных конкурентов 6809). Например, команда ADDA 63 выполнялась за три такта на 6809, тогда как выполнение аналогичной команды ADD A,63 процессора Z80 требовало семи тактов. Теоретически для достижения одинаковой производительности при выполнении этой операции Z80 требовал минимум вдвое более высокой частоты. Однако, более синхронный дизайн Z80 позволял использовать более высокую (в 3-5 раз) тактовую частоту по сравнению с 6809, 6800 или 6502, без необходимости использования более быстродействующей памяти (что часто являлось главным ограничением).