КСГ 65CE02
Общая информация | |
---|---|
Запущен | 1988 |
Снято с производства | 1988 |
Общий производитель | |
Производительность | |
Макс. процессора Тактовая частота | от 2 МГц до 10 МГц |
Архитектура и классификация | |
Набор инструкций | 6502 |
Физические характеристики | |
Упаковка |
|
CSG 65CE02 — 8/16-битный микропроцессор, разработанный Commodore Semiconductor Group в 1988 году. [1] Он принадлежит к семейству 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 (ase page). Регистр стека был расширен с 8 до 16 бит с использованием аналогичного страничного регистра SPH (высокий указатель стека), что позволило перемещать стек за пределы первой страницы и увеличивать его до больших размеров.
65CE02 послужил основой для системы на чипе CSG 4510 , разработанной для неизданного Commodore 65 . Позже 65CE02 использовался для карты последовательного порта A2232 для компьютера Amiga . Другого применения он, похоже, не нашел.
Описание
[ редактировать ]Регистры CSG 65CE02 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Фон
[ редактировать ]К концу 1970-х годов первоначальная команда MOS Technology, разрабатывавшая 6502, распалась. Билл Менш переехал в Аризону и основал Западный центр дизайна (WDC), чтобы предоставлять услуги проектирования на базе 6502. Примерно в 1981 году основные лицензиаты конструкции 6502, Rockwell Semiconductor , GTE и Signetics , вместе с Mensch начали работу по модернизации, которая привела к созданию WDC 65C02 . В основном это была CMOS -реализация исходного NMOS 6502, которая потребляла в 10–20 раз меньше энергии, но также включала ряд новых инструкций, помогающих улучшить плотность кода в некоторых приложениях. Включены новые инструкции INA/DEA
для увеличения и уменьшения аккумулятора , STZ
записать ноль в ячейку памяти и BRA
это был переход с 1-байтовым относительным адресом в стиле ветвления . В 65C02 также исправлен ряд мелких ошибок в исходной конструкции 6502.
Оригинальный 6502 был разработан в эпоху, когда еще не существовало микрокомпьютеров , когда микропроцессоры использовались в качестве основы для более простых систем, таких как интеллектуальные терминалы , настольные калькуляторы и множество различных промышленных контроллеров систем . Это была также эпоха, когда устройства памяти обычно основывались на статической оперативной памяти , которая была очень дорогой и имела низкую плотность памяти . По обеим этим причинам способность обрабатывать «большие» объемы памяти не требовалась, и многие процессоры имели режимы работы, которые работали с небольшими частями большего адресного пространства , чтобы обеспечить более высокую производительность. Так было в 6502, где первая страница памяти , или «нулевая страница», использовалась для обеспечения более быстрого доступа, а вторая страница, «первая страница», — для хранения 256-байтового стека .
К 1980-м годам эти предположения уже не были верны, многие машины на базе этих процессоров теперь поставлялись с максимальными 64 КБ, которые мог адресовать 6502, используя гораздо менее дорогую и более плотную динамическую память . Преимущества в скорости режима адресации с нулевой страницей остались, но теперь существовали в значительно большем пространстве памяти. Аналогичным образом, одностраничный стек вызовов теперь занимал ничтожную часть общего объема памяти, а языки высокого уровня , которые широко использовали пространство стека, не могли легко работать на 6502.
Новые возможности
[ редактировать ]65CE02 — это улучшенная версия 65C02, в которой модель памяти расширена, что делает ее более подходящей для систем с большим объемом основной памяти. Для этого в него добавлены следующие новые функции:
- В 65CE02 добавлен 8-битный регистр B для базовой страницы, который смещает нулевую страницу в любое место в памяти. B устанавливается в ноль при включении питания или сбросе, поэтому 65CE02 изначально работает точно так же, как 6502. Если значение помещается в регистр B с помощью
TAB
(Перенос A в B) затем нулевая страница перемещается в новое место. Важным применением этой функции является разрешение небольшим программам, которые могут уместиться в пределах 256 байт страницы, использовать адресацию нулевой страницы (теперь известную как адресация базовой страницы), что уменьшает размер кода, поскольку адреса больше не имеют второго байта, что также ускоряет выполнение кода, поскольку второй байт не нужно выбирать из памяти. [1]
- 65CE02 также расширяет стек от исходных 256 байт первой страницы до теоретически всего адресного пространства. Это делается путем добавления еще одного 8-битного регистра SPH для высокого уровня указателя стека. Обычно это работает как B, смещая базовый адрес стека с первой страницы на любую выбранную страницу. В остальном он продолжает работать по-прежнему, имея максимальный размер одной страницы — 256 байт. Как и B, при запуске или сбросе SPH устанавливается на 01, поэтому он работает точно так же, как 65C02. [1]
- новый бит расширения стека , используя новый Когда в регистре состояния установлен
CLE/SEE
инструкции, указатель стека становится настоящим 16-битным значением. Значение в SPH добавляется к значению в исходном SP, теперь известном как SPL (что означает низкий указатель стека), чтобы создать 16-битный указатель на нижнюю часть стека. Это позволяет стеку вырасти намного больше исходных 256 байт, которые были слишком малы для языков высокого уровня. [1]
- Это означает, что существует два типа стеков: 256-байтовый, который может находиться где угодно, или 16-битный, охватывающий всю память. Хотя последний вариант более гибок, он означает, что для доступа к стеку необходимо создать 16-битный адрес из двух регистров, что занимает дополнительный цикл и, таким образом, снижает общую производительность. Использование меньшего стека, где это возможно, обеспечивает лучшую производительность. [1]
- В 65CE02 также добавлен новый индексный регистр Z. Он устанавливается в ноль при запуске или сбросе, что означает, что его инструкция сохранения Z в память
STZ
, работает так же, как и в 65C02, где та же инструкция означает сохранение нуля в памяти. Это позволяет запускать немодифицированный код 65C02 на 65CE02. Ряд других инструкций добавлен или изменен для обеспечения доступа к регистру Z. Среди нихLDZ
загрузить значение из памяти,TZA/TAZ
для передачи значения в аккумулятор или из аккумулятора,PHZ/PLZ
помещать и тянуть Z в стек,INZ/DEZ
для увеличения и уменьшения, иCPZ
для сравнения значения в Z со значением в памяти. [1]
- Добавлен 65C02.
BRA
, Branch Always, который по сути былJMP
в котором использовался 8-битный относительный адрес в стиле ветвления вместо абсолютного 16-битного адреса. По неизвестным причинам 65CE02 изменил мнемонику наBRU
(Ответить безоговорочно). Они также добавилиBSR
инструкции перехода к подпрограмме, которая использует тот же режим относительной адресации, что и командаJSR
, Перейти к подпрограмме. [1]
- Кроме того, CE добавил 16-битную адресацию или «относительное слово» ко всем существующим инструкциям ветвления. Раньше ветки могли перемещаться только на 128 позиций назад или на 127 позиций вперед в зависимости от 8-битного значения со знаком, «относительного адреса». В 65CE02 это могут быть ячейки -32768 или +32767, если следовать за веткой с 16-битным значением. Раньше для выполнения «длинной ветки» обычно приходилось использовать
JMP
до 16-битной цели, а затем переходить по этим трем байтам, когда вы не хотите этого делать. Например, если бы кто-то захотел перейти к адресу $1234, если аккумулятор равен нулю, нужно было бы сделатьCMP #$00/BNE +3/JMP $1234
, то есть вы хотите пропустить 3-байтовыйJMP addr
если аккумулятор не равен нулю. В 65CE02 это можно свести к чему-то вродеCMP #$00/BEQ $0123
, тем самым делая код более очевидным, удаляя два байта инструкций и устраняя необходимость в потерянных циклах выборки и запуска ветки. Однако, поскольку он по-прежнему использует относительную адресацию, относительный адрес должен быть рассчитан по метке программистом или ассемблером при преобразовании в машинный код. [1]
- Еще одним дополнением к системе стал ряд «словных» инструкций, выполнявших операции с 16-битными данными. Это включало
INW/DEW
для увеличения и уменьшения значения в памяти иASW/ROW
для выполнения слова арифметического сдвига (влево) или слова ROtate (влево). [1]
- Более мелкие изменения включают добавление
ASR
для выполнения арифметического (знакового) сдвига вправо (у 6502 был только логический или беззнаковый сдвиг вправо),NEG A
инструкция, которая выполняет с дополнением до двух , и отрицание аккумулятораRTN
, вариация на темуRTS
(ReTurn from Subroutine), который возвращает адрес, смещенный в стек, а не наверх, что позволяет избежать необходимости явноPOP
отключить все, что добавила процедура во время ее работы. В систему также добавлен новый режим адресации, в котором базовый адрес в стеке используется в качестве основы для косвенной адресации. [1]
- Наконец, новый четырехбайтовый
AUG
инструкция была добавлена для будущего расширения. Хотя в технических характеристиках неясно его конечная цель, похоже, что это заполнитель, предназначенный для передачи инструкций в сопроцессорные блоки, такие как блок управления памятью . [1]
Улучшения конвейера
[ редактировать ]Главной странностью оригинального 6502 было то, что однобайтовые инструкции, такие как INX
все равно потребовалось два цикла. Это позволило упростить трубопроводную систему; следующий байт из памяти был извлечен во время декодирования операции, то есть следующий байт был извлечен несмотря ни на что. Для большинства инструкций этот байт будет частью (или целым) операнда, который затем можно будет немедленно ввести в декодированную инструкцию. [2]
Если инструкции требовался только один байт, процессор все равно считывал следующий байт, декодируя первый. В этом случае следующим байтом была следующая инструкция, но у него не было возможности передать ее обратно на первый этап конвейера для ее декодирования. Вместо этого полученная инструкция отбрасывалась и перечитывалась для подачи в декодер. Это приводит к потере цикла. Хотя это привело к тому, что ряд инструкций выполнялись медленнее, чем могли бы, эта «функция» была сохранена в 65C02, хотя в доступных источниках не объясняется, было ли это сделано для того, чтобы сохранить простоту конвейера или время цикла. [2]
Поддержание совместимости циклов не было требованием для 65CE02, а новые производственные процессы сделали дополнительные схемы в конвейере не проблемой, поэтому конвейер был переорганизован для правильной обработки однобайтовых инструкций за один цикл. [2] Эти улучшения позволяют 65CE02 выполнять код до 25% быстрее, чем предыдущие модели 65xx. [1]
Дальнейшее улучшение решает проблему, связанную с инструкциями адресации, которые добавляют значения для получения окончательного адреса. Примеры включают «индексированную косвенную обработку», когда значение в одном из индексных регистров добавляется к базовому адресу, а затем инструкция применяется к полученному адресу. В оригинальном 6502, если сложение двух значений пересекало границу страницы, каждые 256 позиций требовался дополнительный цикл для получения окончательного значения адреса. Модель 65CE02 устранила это ограничение, тем самым улучшив производительность этих часто используемых режимов. [1]
Физические детали
[ редактировать ]Он изготовлен с использованием CMOS- технологии 2 мкм, что позволяет снизить энергопотребление по сравнению с предыдущими версиями NMOS и HMOS семейства 65xx. Он размещен в 40-контактном DIP- разъёме , совместимом по выводам с 6502. [3]
КСГ 4510
[ редактировать ]4510 представляет собой системный вариант (SiP) 65CE02, который включает в себя два 6526 CIA контроллера портов ввода-вывода и специальный MMU для расширения адресного пространства до 20 бит (1 мегабайт). Он размещен в 84-контактном PLCC . [4]
4510 использовался в неизданном Commodore 65 . домашнем компьютере [5] и неизданная Commodore CDTV . недорогая версия [5] [6]
Приложения
[ редактировать ]65CE02 использовался в карте последовательного порта Commodore A2232 для компьютера Amiga . [7] [8]
См. также
[ редактировать ]Ссылки
[ редактировать ]- ^ Перейти обратно: а б с д и ж г час я дж к л м «Технические данные микропроцессора MOS 65CE02» (PDF) .
- ^ Перейти обратно: а б с «Патент США 5088035: Система ускорения выполнения программных инструкций микропроцессором» .
- ^ «Технический справочник Commodore Semiconductor Group CSG65CE02» . zimmers.net. 18 августа 2009 г. Проверено 21 июня 2013 г.
- ^ «Все для Amiga: информация об оборудовании 4510» .
- ^ Перейти обратно: а б «База знаний Commodore: Commodore 65» .
- ^ «База данных оборудования Amiga: CDTV II» .
- ^ «Все для Amiga: информация об оборудовании 65CE02» .
- ^ «Большая книга оборудования Amiga: Commodore A2232» .