Введение

CSG 65CE02 – 8/16-битный микропроцессор, разработанный компанией Commodore Semiconductor Group в 1988 году. Он принадлежит к семейству MOS Technology 6502 и был разработан на основе CMOS WDC 65C02, выпущенного Western Design Center в 1983 году. Как и 65C02, 65CE02 был изготовлен по 2 мкм CMOS-технологии, в отличие от 8 мкм NMOS-технологии оригинального 6502, что позволило уменьшить размеры чипа (и, следовательно, его стоимость), а также значительно снизить энергопотребление. Помимо изменений, внесенных в 65C02, в 65CE02 были реализованы улучшения конвейера процессора, позволяющие однобайтовым инструкциям выполняться за 1 цикл, в то время как для 6502 (и большинства его вариантов) требовалось минимум 2 цикла. Также были устранены задержки в 1 цикл при переходе через границы страниц памяти. Эти изменения повысили производительность до 25% при той же тактовой частоте. Другие изменения включали добавление третьего индексного регистра Z, а также добавление и модификацию ряда инструкций для работы с этим регистром. Нулевая страница – первые 256 байт памяти, использовавшиеся как псевдорегистры – теперь могла быть перемещена на любую страницу основной памяти с помощью регистров базовой страницы B. Регистр стека был расширен с 8 до 16 бит с использованием аналогичного регистр страницы SPH (stack pointer high), что позволило переместить стек с первой страницы и увеличить его размер. 65CE02 стал основой для системы на кристалле CSG 4510, разработанной для так и не вышедшего Commodore 65. Позже 65CE02 был использован в карте последовательного порта A2232 для компьютера Amiga. Судя по всему, больше он нигде не применялся.

Предыстория

К концу 1970-х годов первоначальная команда MOS Technology, разработавшая 6502, распалась. Билл Менш переехал в Аризону и основал Western Design Center (WDC) для предоставления услуг по проектированию на базе 6502. Около 1981 года основные лицензиаты дизайна 6502 – Rockwell Semiconductor, GTE и Signetics – начали работу по перепроектированию совместно с Меншем, что привело к созданию WDC 65C02. Это была, главным образом, КМОП-реализация оригинального НМОП 6502, потреблявшая в 10–20 раз меньше энергии, но также включавшая ряд новых инструкций для повышения плотности кода в определенных приложениях. Новые инструкции включали INA/DEA для инкремента и декремента аккумулятора, STZ для записи нуля в ячейку памяти и BRA – переход с однобайтовым относительным адресом, реализованным как ветвление. 65C02 также исправил ряд незначительных ошибок в оригинальной конструкции 6502. Оригинальный 6502 был разработан в эпоху, предшествующую появлению микрокомпьютеров, когда микропроцессоры использовались в качестве основы для более простых систем, таких как интеллектуальные терминалы, настольные калькуляторы и различные промышленные системы управления. Это также была эпоха, когда устройства памяти обычно основывались на статической оперативной памяти (RAM), которая была очень дорогой и имела низкую плотность. По этим двум причинам необходимость в обработке "больших" объемов памяти не была актуальной, и многие процессоры имели режимы работы, оперирующие небольшими участками большого адресного пространства для обеспечения более высокой производительности. Так было и с 6502, который использовал первую страницу памяти, или "нулевую страницу", для более быстрого доступа, а вторую страницу, "первую страницу", – для хранения стека размером 256 байт. К 1980-м годам эти предположения устарели: многие машины на базе этих процессоров теперь поставлялись с максимальными 64 КБ памяти, адресуемой 6502, используя гораздо более дешевую и плотную динамическую RAM. Преимущества скорости режима адресации нулевой страницы сохранились, но теперь они действовали в значительно большем адресном пространстве. Соответственно, стек вызовов, занимавший одну страницу, стал незначительным объемом по сравнению с общей памятью, и языки программирования высокого уровня, активно использующие пространство стека, не могли легко выполняться на 6502.

Новые функции

65CE02 – это дальнейшее улучшение процессора 65C02, расширяющее модель памяти для повышения его пригодности к использованию в системах с большим объемом оперативной памяти. Для этого в него добавлены следующие новые функции:

65CE02 включает 8-битный регистр B, предназначенный для базовой страницы, который позволяет смещать нулевую страницу в любую область памяти. При включении питания или сбросе регистр B устанавливается в ноль, поэтому 65CE02 изначально работает идентично 6502. При записи значения в регистр B с помощью инструкции TAB (Transfer A to B) нулевая страница перемещается в новое местоположение. Важным применением этой функции является возможность использования нулевой адресации (теперь известной как базовая адресация страницы) для небольших подпрограмм, умещающихся в пределах 256 байт страницы. Это позволяет уменьшить размер кода, поскольку адреса больше не требуют второго байта, а также повысить скорость выполнения кода, так как второй байт не нужно извлекать из памяти. Благодаря этим улучшениям 65CE02 способен выполнять код до 25% быстрее, чем предыдущие модели 65xx.

CSG 4510

4510 – это вариант 65CE02, выполненный в виде системы в корпусе (SiP), включающий два контроллера портов ввода-вывода 6526 CIA и специализированный MMU для расширения адресного пространства до 20 бит (1 мегабайт). Он заключен в корпус PLCC с 84 выводами. 4510 использовался в невыпущенном домашнем компьютере Commodore 65 и в удешевленной версии невыпущенной приставки Commodore CDTV.

Приложения

65CE02 использовался в карте последовательного порта Commodore A2232 для компьютера Amiga.