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 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Фон
К концу 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
4510 - это система в пакете (SiP) вариант 65CE02, включающий два 6526 ЦРУ Порт ввода / вывода контроллеры и кастом MMU расширить адресное пространство до 20 бит (1 мегабайт). Он размещен в 84-контактном PLCC.[4]
4510 использовался в неизданных Коммодор 65 домашний компьютер [5] и неизданные Commodore CDTV доработка по сниженным ценам.[5][6]
Приложения
65CE02 использовался в Commodore A2232 Серийный порт карта для Amiga компьютер.[7][8]
Смотрите также
Рекомендации
- ^ а б c d е ж грамм час я j k л м "Спецификация микропроцессора MOS 65CE02" (PDF).
- ^ а б c «Патент США 5088035: Система для ускорения выполнения программных инструкций микропроцессором».
- ^ "Технический справочник Commodore Semiconductor Group CSG65CE02". zimmers.net. 2009-08-18. Получено 2013-06-21.
- ^ "Amiga Stuff: 4510 Информация об оборудовании".
- ^ а б "База знаний коммодора: Коммодор 65".
- ^ "База данных оборудования Amiga: CDTV II".
- ^ "Amiga Stuff: 65CE02 Информация об оборудовании".
- ^ "Большая книга оборудования Amiga: Commodore A2232".