CSG 65CE02 - CSG 65CE02

CSG 65CE02
Общая информация
Запущен1988
Снято с производства1988
Общий производитель (ы)
Спектакль
Максимум. ЦПУ тактовая частотаОт 2 МГц до 10 МГц
Архитектура и классификация
Набор инструкций6502
Физические характеристики
Пакет (ы)

В CSG 65CE02 8/16-битный микропроцессор, разработанный Commodore Semiconductor Group в 1988 г.[1] Он является членом Технология MOS 6502 семья, выросшая из CMOS WDC 65C02 выпущен Центр западного дизайна в 1983 г.

65CE02 был построен по технологии CMOS 2 мкм вместо 8 мкм в оригинальном 6502. NMOS технология, что делает чип меньше (и, следовательно, дешевле), а также потребляет гораздо меньше энергии. В дополнение к изменениям, внесенным в 65C02, 65CE02 также включает улучшения конвейер процессора чтобы однобайтовые инструкции выполнялись за 1 цикл, а не как минимум в 2 цикла 6502 (и большинство вариантов). Также убраны задержки на 1 цикл при пересечении страница границы. Эти изменения улучшили производительность на 25% при той же тактовой частоте.

Другие изменения включали добавление третьего индексный регистр, Z, а также добавление и изменение ряда инструкций по использованию этого регистра. Нулевая страница, первые 256 байтов памяти, которые использовались как псевдорегистры, теперь могла быть перемещена на любую страницу в основная память используя регистр B (страница ase). В регистр стека был расширен с 8 до 16 бит с использованием аналогичного страничного регистра SPH (высокий указатель стека), что позволило переместить стек с первой страницы и увеличиться до большего размера.

65CE02 послужил основой для система на чипе CSG 4510 который был разработан для неизданных Коммодор 65. Позднее 65CE02 использовался для A2232. Серийный порт карта для Amiga компьютер. Похоже, он не нашел другого применения.

Описание

Регистры CSG 65CE02
15141312111009080706050403020100(битовая позиция)
Основные регистры
 ААнакопитель
Индексные регистры
 ИксИкс индекс
 YY индекс
 ZZ индекс
SPHSPLSзакрепка пласточка
B Base Page
Счетчик команд
ПКппрограмма Cвстречный
Регистр статуса
 NVEBDяZCп Флаги процессора
Распиновка CSG 65CE02

Фон

К концу 1970-х годов оригинал Технология MOS Команда, разработавшая 6502, распалась. Билл Менш переехал в Аризону и создал Центр западного дизайна (WDC) для предоставления проектных услуг на базе 6502. Примерно в 1981 г. основные лицензиаты конструкции 6502, Rockwell Semiconductor, GTE и Печатки, начал работу по редизайну с Mensch, которая привела к WDC 65C02. В основном это был CMOS реализация оригинального NMOS 6502, который потреблял от 10 до 20 раз меньше энергии, но также включал ряд новых инструкций, помогающих улучшить плотность кода в некоторых приложениях. Включены новые инструкции INA / DEA для увеличения и уменьшения аккумулятор, СТЗ записать ноль в ячейку памяти, и БЮСТГАЛЬТЕР который был прыжком с 1-байтовым относительный адрес. 65C02 также исправил ряд мелких ошибок в оригинальном дизайне 6502.

Оригинальный 6502 был разработан в эпоху до микрокомпьютеры существовало, когда микропроцессоры использовались в качестве основы для более простых систем, таких как умные терминалы, настольные калькуляторы и много разных промышленный контроллер системы. Это была также эпоха, когда устройства памяти в основном основывались на статическая RAM, который был очень дорогим и имел низкую плотность памяти. По обеим этим причинам способность обрабатывать «большие» объемы памяти не требовалась, и многие процессоры имели режимы работы, которые работали с небольшими частями более крупного адресное пространство чтобы предложить более высокую производительность. Так было в 6502, где использовались первые страница памяти, или «нулевая страница», чтобы обеспечить более быстрый доступ, а вторая страница, «страница один», для хранения 256-байтовой куча.

К 1980-м годам эти предположения уже не действовали, многие машины на базе этих процессоров теперь поставлялись с максимальной емкостью 64 КБ, которую мог адресовать 6502, используя гораздо менее дорогие и плотные. динамическое ОЗУ. Преимущества режима адресации нулевой страницы в скорости остались, но теперь они существуют в области памяти, которая была значительно больше. Точно так же одностраничный стек вызовов теперь были жалкие гроши в общей памяти, и языки высокого уровня , который чрезмерно использовал пространство стека, не мог легко работать на 6502.

Новые возможности

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

  • 65CE02 добавляет 8-битный регистр B для базовой страницы, который смещает нулевую страницу в любое место в памяти. B устанавливается в ноль при включении или сбросе, поэтому 65CE02 изначально работает точно так же, как 6502. Если значение помещается в регистр B с помощью TAB (Переместите A в B) нулевая страница затем переместится в новое место. Существенное использование этой функции заключается в том, чтобы позволить небольшим процедурам, которые могут уместиться в пределах 256 байтов страницы, использовать адресацию нулевой страницы (теперь известную как адресация базовой страницы), что делает код меньше, потому что адреса больше не имеют второго байта, который также ускоряет выполнение кода, поскольку второй байт не нужно извлекать из памяти.[1]
  • 65CE02 также расширяет стек из исходных 256 байтов первой страницы до, теоретически, всего адресного пространства. Для этого он добавляет еще один 8-битный регистр SPH для Stack Pointer High. Обычно это работает как B, смещая базовый адрес стека со страницы один на любую выбранную страницу. В остальном он продолжает работать, как и раньше, имея максимальный размер одной страницы 256 байт. Как и B, при запуске или сбросе SPH устанавливается на 01, поэтому он работает точно так же, как 65C02.[1]
Когда новый бит «расширения стека» в регистр статуса установлен, используя новый CLE / SEE инструкций, указатель стека становится истинным 16-битным значением. Значение в SPH добавляется к значению в исходном SP, теперь известном как SPL для Stack Pointer Low, чтобы создать 16-битный указатель на нижнюю часть стека. Это позволяет стеку расти намного больше, чем исходные 256 байтов, которые были слишком малы для языков высокого уровня.[1]
Это означает, что существует два типа стеков: 256-байтовый, который может быть где угодно, и 16-битный, охватывающий память. Хотя последний более гибкий, это означает, что доступ к стеку должен создавать 16-битный адрес из двух регистров, что требует дополнительного цикла и, таким образом, снижает общую производительность. Использование меньшего стека, где это возможно, обеспечивает лучшую производительность.[1]
  • 65CE02 также добавляет новый индексный регистр, Z. Он устанавливается в ноль при запуске или сбросе, что означает, что его инструкция сохранения Z-в-памяти, СТЗ, работает так же, как и в 65C02, где та же инструкция означает сохранение нуля в памяти. Это позволяет работать с неизмененным кодом 65C02 на 65CE02. Добавлен или изменен ряд других инструкций, чтобы разрешить доступ к регистру Z. Среди них LDZ загрузить значение из памяти, TZA / TAZ для передачи значения в аккумулятор или из аккумулятора, PHZ / PLZ толкать и тянуть Z в стек, INZ / DEZ для увеличения и уменьшения, и CPZ для сравнения значения в Z со значением в памяти.[1]
  • 65C02 добавил БЮСТГАЛЬТЕР, Branch Always, который по сути JMP который использовал 8-битный относительный адрес в стиле ветвления вместо абсолютного 16-битного адреса. Это можно смоделировать на оригинальном 6502, используя BVC (Переход, если oVerflow равен Clear), который по другим причинам почти всегда был сброшен в 6502. Это больше не было так в 65C02, где некоторые операции теперь правильно устанавливают этот флаг. По неизвестным причинам 65CE02 изменил мнемонику на BRU. Они также добавили BSR инструкция Branch to SubRoutine, которая использует тот же режим относительной адресации, что и JSR, Перейти к подпрограмме.[1]
  • Кроме того, CE добавил 16-битную адресацию, или «относительную слово», ко всем существующим командам ветвления. Раньше ветви могли перемещаться только назад на 128 позиций или вперед на 127, в зависимости от 8-битного значения со знаком, «относительного адреса». В 65CE02 это может быть -32768 или +32767 местоположений, если следовать ветви с 16-битным значением. Раньше для выполнения "длинного перехода" обычно приходилось использовать JMP к 16-битной цели, а затем переходите по этим трем байтам, когда вы не хотите этого делать. Например, если кто-то хочет перейти к адресу $ 1234, если аккумулятор равен нулю, нужно сделать CMP # $ 00 / BNE + 3 / JMP $ 1234, что означает, что вы хотите пропустить 3-байтовый JMP адрес если аккумулятор нет нуль. В 65CE02 это можно свести к чему-то вроде CMP # $ 00 / BEQ $ 0123, тем самым делая код более очевидным, удаляя два байта инструкций и устраняя необходимость в потерянных циклах выборки и запуска ветки. Однако, поскольку он по-прежнему использует относительную адресацию, относительный адрес должен быть вычислен по метке программистом или ассемблером при преобразовании в машинный код.[1]
  • Еще одним дополнением к системе был ряд «словарных» инструкций, которые выполняли операции с 16-битными данными. Это включало INW / DEW для увеличения и уменьшения значения в памяти, и ASW / ROW для выполнения арифметического сдвига (слева) слова или поворота (слева) слова.[1]
  • Более мелкие изменения включают добавление ASR для битового сдвига вправо (у 6502 был только сдвиг влево), NEG A инструкция, которая выполняет два дополнения отрицание на аккумуляторе, и РТН, вариация на РТС (ReTurn из подпрограммы), который возвращается к смещению адреса в стеке, а не наверху, избегая необходимости явно Поп выключить все, что подпрограмма добавила во время работы. В систему также добавлен новый режим адресации, в котором базовый адрес в стеке используется в качестве основы для косвенной адресации.[1]
  • Наконец, новый четырехбайтовый AUG инструкция была добавлена ​​для будущего расширения. Хотя в таблице данных неясно его конечное назначение, похоже, что это заполнитель, предназначенный для передачи инструкций на сопроцессорные устройства, например блок управления памятью.[1]

Улучшения конвейера

Главная странность оригинального 6502 заключалась в том, что однобайтовые инструкции вроде INX по-прежнему потребовалось два цикла. Это позволило упростить трубопровод система; следующий байт из памяти был извлечен во время декодирования операции, что означает, что следующий байт был извлечен, несмотря ни на что. Для большинства инструкций этот байт будет частью (или целым) операнда, который затем может быть немедленно передан в теперь декодированную инструкцию.[2]

Если для инструкции требуется только один байт, процессор все равно будет читать следующий байт, как он декодировал первый. В этом случае следующий байт был следующей инструкцией, но у нее не было возможности передать ее обратно в первую стадию конвейера для ее декодирования. Вместо этого полученная инструкция была отброшена и перечитана, чтобы передать ее в декодер. Это тратит цикл. Хотя это привело к тому, что ряд инструкций стал медленнее, чем они могли бы быть, эта «особенность» была сохранена в 65C02, хотя было ли это сделано для сохранения простоты конвейера или времени его цикла, не объясняется в доступных источниках.[2]

Поддержание совместимости циклов не было требованием для 65CE02, и новые процессы производства сделали дополнительные схемы в конвейере не проблемой, поэтому конвейер был перестроен для правильной обработки однобайтовых инструкций в одном цикле.[2] Эти улучшения позволяют 65CE02 выполнять код на 25% быстрее, чем предыдущие модели 65xx.[1]

Дальнейшее улучшение касается проблемы, связанной с инструкциями адресации, которые добавляют значения для создания окончательного адреса. Примеры включают «проиндексированный косвенный», когда значение в одном из индексные регистры добавляется к базовому адресу, а затем применяет инструкцию к полученному адресу. В исходном 6502, если сложение двух значений пересекало границу страницы, каждые 256 ячеек, требовался дополнительный цикл для получения окончательного значения адреса. 65CE02 снял это ограничение, тем самым улучшив производительность этих часто используемых режимов.[1]

Физические детали

Изготовлен из 2 мкм. CMOS технология, позволяющая работать с меньшей мощностью по сравнению с предыдущими NMOS и HMOS версии семейства 65xx. Он размещен в 40-контактном ОКУНАТЬ это контактная совместимость с 6502.[3]

CSG 4510

CSG 4510

4510 - это система в пакете (SiP) вариант 65CE02, включающий два 6526 ЦРУ Порт ввода / вывода контроллеры и кастом MMU расширить адресное пространство до 20 бит (1 мегабайт). Он размещен в 84-контактном PLCC.[4]

4510 использовался в неизданных Коммодор 65 домашний компьютер [5] и неизданные Commodore CDTV доработка по сниженным ценам.[5][6]

Приложения

65CE02 использовался в Commodore A2232 Серийный порт карта для Amiga компьютер.[7][8]

Смотрите также

Рекомендации

  1. ^ а б c d е ж грамм час я j k л м "Спецификация микропроцессора MOS 65CE02" (PDF).
  2. ^ а б c «Патент США 5088035: Система для ускорения выполнения программных инструкций микропроцессором».
  3. ^ "Технический справочник Commodore Semiconductor Group CSG65CE02". zimmers.net. 2009-08-18. Получено 2013-06-21.
  4. ^ "Amiga Stuff: 4510 Информация об оборудовании".
  5. ^ а б "База знаний коммодора: Коммодор 65".
  6. ^ "База данных оборудования Amiga: CDTV II".
  7. ^ "Amiga Stuff: 65CE02 Информация об оборудовании".
  8. ^ "Большая книга оборудования Amiga: Commodore A2232".

дальнейшее чтение

внешняя ссылка