Общая информация | |
---|---|
Запущен | 1983 |
Общий производитель (и) |
|
Представление | |
Максимум. Тактовая частота процессора | От 1 МГц до 14 МГц |
Ширина данных |
|
Ширина адреса | 24 |
Архитектура и классификация | |
Набор инструкций | 6502 |
инструкции | 92 |
Физические характеристики | |
Пакет (ы) | |
История | |
Предшественник |
|
W65C816S (также 65C816 или 65816 ) является 8/16-разрядный микропроцессор (MPU) , разработанный и продаваемый Design Center Western (WDC). Представленный в 1983 году [1], W65C816S является усовершенствованной версией 8-битного MPU WDC 65C02 , который сам является расширением CMOS известного MOS Technology 6502 NMOS MPU. 65C816 был процессором для Apple IIGS и в модифицированной форме Super Nintendo Entertainment System .
Число 65 в обозначении детали связано с режимом совместимости с 65C02, а число 816 означает, что MPU имеет выбираемые 8- и 16-битные размеры регистров . В дополнение к доступности 16 - битных регистров, то W65C816S особенности расширенной адресации памяти до 24 бит , поддерживающий до 16 мегабайт в памяти с произвольным доступом , расширенным набором команд и 16 бит в указатель стека , а также несколько новых электрических сигналы для улучшенного управления аппаратным обеспечением системы.
При сбросе W65C816S запускается в «режиме эмуляции», что означает, что он в основном ведет себя как 65C02. После этого W65C816S может быть переключен в «собственный режим» с помощью двух последовательностей инструкций, в результате чего он активирует все расширенные функции, но при этом сохранит значительную степень обратной совместимости с большей частью программного обеспечения 65C02. Однако, в отличие от PDIP40 версии 65C02, которая является совместимой по выводам заменой своего предка NMOS, PDIP40 W65C816S не совместим по выводам с другими MPU семейства 6502.
К W65C816S относится W65C802 , который имел ту же внутреннюю структуру и поддержку 16 бит, но использовал 40-контактную схему, совместимую с оригинальным 6502. Это позволило использовать его в качестве замены в определенных ролях. Однако 65C802 не мог передать полный 24-битный адрес, что ограничивало его 64 КБ памяти. 65C802 и его родственники больше не производятся.
В 1981 году Билл Менш , основатель и генеральный директор WDC, вместе со своими производственными партнерами, в первую очередь Rockwell Semiconductor и Synertek , начал разработку 65C02 . Основная цель 65C02 усилий заключалась в переходе от процесса NMOS оригинального 6502 на этой 65C02 в CMOS, что позволит ему работать на гораздо более низких уровнях мощности, где - то между 1 / 10 и 1 / 20 при работе на тех же тактовых частотах. В дизайн также был включен ряд новых кодов операций и исправлений ошибок. [2]
Разработка W65C816S началась в 1982 году после того, как Менш проконсультировался с Apple Computer по поводу новой версии серии персональных компьютеров Apple II , которые, среди прочего, должны были улучшить графику и звук. Apple хотела MPU, который был бы программно совместим с 6502, который тогда использовался в Apple II, но с возможностью адресовать больший объем памяти, а также загружать и хранить 16-битные слова. Результатом стал 65C816, законченный в марте 1984 года, образцы которого были предоставлены Apple и Atari во второй половине года, а полный выпуск - в 1985 году. [3] Меншу в процессе разработки помогала его сестра Кэтрин, которая отвечала за это. для части макета устройства.
Тот же процесс привел к созданию 65C802, который внутри был идентичен 65C816. Оба были произведены на одних и тех же производственных линиях и расходились только на последних этапах металлизации, когда микросхема подключалась к внешним контактам. В 65C802 эти контакты имели ту же схему расположения, что и у оригинального 6502, что позволяло использовать его в качестве замены при одновременном использовании 16-битной обработки ЦП. Однако, поскольку он использовал исходную распиновку, он имел только 16 контактов для адресации и, следовательно, мог получить доступ только к 64 КБ внешней памяти. [4] Обычно, когда производители оборудования разрабатывали проект с нуля, они использовали 65C816, а не 65C802, в результате чего последний снимался с производства.
Впоследствии Apple интегрировала 65C816 в компьютер Apple IIGS . Базовый дизайн 65C816 был вторичным поставщиком GTE , Sanyo и других компаний с середины до конца 1980-х - начала 1990-х годов.
В 1990-х годах как 65C816, так и 65C02 были преобразованы в полностью статическое ядро , что позволило полностью остановить тактовую частоту процессора без потери данных в любом из регистров. Эта функция, наряду с использованием асинхронной статической ОЗУ , позволила создавать проекты, которые потребляли минимальную мощность в состоянии ожидания.
По состоянию на 2019 год [Обновить], то W65C816S доступен из МЦДА в 40 контактный PDIP или PLCC44 упаковки, а также в качестве ядра для СИС интеграции (например Winbond серии W55V9x «s телевизионных Edutainment ИС ). WDC, которая сама занимается производством полупроводников , работает с различными литейными заводами для производства W65C816S, а также других совместимых продуктов. Дискретные процессоры можно приобрести у ряда дистрибьюторов электроники. Для разработчиков, которые хотят включить функциональность W65C816S в настраиваемую ASIC , WDC предлагает код RTL ( уровень передачи регистров ) в Verilog .
Особенности WDC 65816:
|
У 65C816 есть два режима работы, «режим эмуляции», в котором 16-битные операции невидимы - индексные регистры устанавливаются на восемь битов - и чип выглядит очень похожим на 65C02, с теми же временами цикла для коды операций и «собственный режим», в котором доступны все новые функции. ЦП автоматически возвращается в режим эмуляции при включении или сбросе, что позволяет ему заменить 65C02, предполагая, что он вносит необходимые изменения в схему, чтобы приспособиться к другому расположению выводов. [2]
Наиболее очевидным изменением 65C816 при работе в собственном режиме является расширение различных регистров с 8-битного до 16-битного размера. Это улучшение влияет на аккумулятор (A), регистры индекса X и Y и указатель стека (SP). Это не влияет на счетчик программ (ПК), который всегда был 16-битным. [5]
При работе в основном режиме два бита в регистре состояния меняют свое значение. В исходном 6502 биты 4 и 5 не использовались, хотя бит 4 упоминается как флаг B (reak). В основном режиме бит 4 становится флагом x, а бит 5 становится флагом m. Эти биты определяют, являются ли индексные регистры (x) и / или аккумулятор / память (m) размером 8 или 16 бит. Нули в этих битах устанавливают 16-битные размеры, единицы устанавливают 8-битные размеры. Эти биты фиксируются в единицах, когда процессор включается или сбрасывается, но становятся изменяемыми, когда процессор переключается в основной режим. [5]
Может быть не сразу очевидно, почему нужно использовать теперь 16-битные регистры в 8-битном режиме. Переключение в 8-битный режим с использованием новых инструкций SEP
(бит SEt в состоянии процессора) и REP
(REset) означает, что все последующие инструкции, обращающиеся к этим регистрам, будут читать или записывать только один байт вместо двух. Например, если бит m установлен в 1, когда LDA $1234
инструкция выполняется, будет прочитан только один байт по адресу $ 1234, что уменьшит количество циклов, необходимых для выполнения инструкции. [6] Это особенно полезно, например, при работе с 8-битными символьными данными. [7]
Когда размер регистров установлен на 16 бит, доступ к памяти будет обращаться к двум смежным байтам памяти за счет одного дополнительного тактового цикла. Кроме того, команда чтения-изменения-записи, например ROR <addr>
, когда используется, когда аккумулятор установлен на 16 бит, будет влиять на два смежных байта памяти, а не на один. Точно так же все арифметические и логические операции будут 16-битными. [8]
Другое важное изменение в системе при работе в собственном режиме заключается в том, что модель памяти расширена до 24-битного формата из исходного 16-битного формата 6502. Это обрабатывается с помощью двух 8-битных регистров смещения, банка данных. Регистр (DB) и Регистр банков программ (PB). В большинстве случаев адреса в коде остаются в исходном 16-битном формате, но значения в DB и PB добавляются в начало, чтобы сформировать 24-битный адрес в основной памяти . Это означает, что инструкции могут обращаться к данным в банке размером 64 КБ , и если необходимо получить доступ к данным вне этого банка, необходимо изменить DB или использовать «длинную» адресацию, то есть указание 24-битного адреса в качестве операнда. к инструкции.
PB определяет, из какого банка размером 64 КБ процессор будет извлекать инструкции - не существует программных средств, с помощью которых можно было бы напрямую изменить PB. Переходы и 16-битные переходы или 16-битные вызовы подпрограмм обычно ограничиваются банком в PB ( JMP(<addr>)
всегда выбирает целевой адрес из банка $ 00). Возможен 24-битный «длинный» переход или вызов подпрограммы, что превышает нормальный предел размера программы в 64 КБ. [5]
Еще одним дополнением к набору регистров является 16-битный регистр прямой страницы (DP), который устанавливает базовый адрес для того, что раньше называлось нулевой страницей, но теперь называется прямой страницей. При прямой адресации страниц используется 8-битный адрес, что обеспечивает более быстрый доступ, чем при использовании 16- или 24-битного адреса. Кроме того, некоторые режимы адресации, которые предлагают косвенную адресацию, возможны только на прямой странице. В 65 (C) 02 прямой страницей всегда являются первые 256 байтов памяти, то есть «нулевая страница». В собственном режиме 65C816 может перемещать прямую (нулевую) страницу в любое место в первых 64 КБ памяти, записывая начальный адрес в DP. Если DP не установлен на четную границу страницы, существует штраф за доступ в один цикл. [9]
Текущий режим работы сохраняется в бите эмуляции (E). После того, как новые биты x и m уже добавлены к предыдущему набору из шести флагов в регистре состояния (SR), осталось недостаточно битов для хранения бита нового режима. Вместо этого было использовано уникальное решение, в котором бит режима был оставлен «невидимым», и к нему нельзя было получить прямой доступ. Новая XCE
инструкция (обмен переносом с эмуляцией) меняет значение бита эмуляции на бит C (arry), бит 0 в регистре состояния. Например, если кто-то хочет войти в собственный режим после запуска процессора, можно использовать CLC
для CLear бит переноса, а затем XCE
записать его в бит эмуляции. [10] Возврат в режим эмуляции 65C02 использует, SEC
за которым следует XCE
. [7]
Внутренне 65C816 представляет собой полностью 16-битный дизайн. Биты m и x в SR определяют, как регистры пользователя (накопитель и индекс) выглядят для остальной системы. После сброса 65C816 запускается в режиме эмуляции 65C02, в котором m и x установлены в 1 и не могут быть изменены. Следовательно, регистры выглядят для остальной системы как 8-битные. Самый старший байт (MSB) аккумулятора (B-аккумулятор) не доступен напрямую, но может быть заменен на младший значащий байт (LSB) аккумулятора (A-аккумулятор) с помощью XBA
инструкции. Для индексных регистров (.X и .Y) нет соответствующей операции.
При переключении в основной режим старший бит .X и .Y будет равен нулю, а B-аккумулятор не изменится. Если бит m в SR очищен, B-аккумулятор будет «объединен» с A-аккумулятором, чтобы сформировать 16-битный регистр. Загрузка / сохранение или арифметическая / логическая операция с использованием аккумулятора и / или памяти будет 16-битной операцией - для выборки / сохранения 16-битного значения требуется два цикла шины.
Если бит x в SR очищен, оба индексных регистра будут установлены в 16-битные. Если используется для индексации адреса, например, LDA SOMEWHERE,X
16-битное значение в индексном регистре будет добавлено к базовому адресу, чтобы сформировать эффективный адрес.
Если в SR установлен бит m, аккумулятор вернется к 8-битному регистру, и последующие операции с аккумулятором, за некоторыми исключениями, будут 8-битными. B-аккумулятор сохранит значение, которое было, когда аккумулятор работал в 16-битном режиме. Исключением являются инструкции, которые передают регистр прямой страницы (DP) и указатель стека (SP) в / из аккумулятора. В собственном режиме эти операции всегда имеют ширину 16 бит, независимо от состояния бита m в регистре состояния.
Если установлен бит x в SR, не только индексные регистры вернутся к 8-битным, все, что было в MSB в 16-битном режиме, будет потеряно, что программист на языке ассемблера не может позволить себе забыть. [11]
Системы на базе 65816 вариантов:
Он также используется в усовершенствованиях C-One и SuperCPU для Commodore 64 .
Эта статья основана на материалах, взятых из Free On-line Dictionary of Computing до 1 ноября 2008 г. и включенных в соответствии с условиями «перелицензирования» GFDL версии 1.3 или новее.