WDC 65C816 - WDC 65C816

WDC 65C816
W65C816S8PG-14 lg.jpg
W65C816S v balení PDIP40
Obecná informace
Spuštěno 1983 ; Před 38 lety ( 1983 )
Běžní výrobci
Výkon
Max. Taktovací frekvence CPU 1 MHz až 14 MHz
Šířka dat
Šířka adresy 24
Architektura a klasifikace
Instrukční sada 6502
Instrukce 92
Fyzické specifikace
Balíčky
Dějiny
Předchůdce

W65C816S (také 65C816 nebo 65816 ) je 8/16-bit mikroprocesor (MPU), vyvinutý a prodávaný Western Design Center (WDC). W65C816S, představený v roce 1983, je vylepšenou verzí 8bitového MPU WDC 65C02 , což je samo o sobě vylepšení CMOS ctihodné technologie MOS 6502 NMOS MPU. 65C816 byl CPU pro Apple IIGS a v upravené podobě Super Nintendo Entertainment System .

65 v označení té části pochází z jeho režimu kompatibility 65C02, a 816 znamená, že MPU má volitelných 8- a 16-bitových registrů velikosti. Kromě dostupnosti 16bitových registrů má W65C816S rozšířené adresování paměti na 24 bitů , podporuje až 16 megabajtů paměti s náhodným přístupem , vylepšenou sadu instrukcí a 16bitový ukazatel zásobníku , stejně jako několik nových elektrických signálů pro vylepšenou správu hardwaru systému.

Při resetování se W65C816S spustí v „režimu emulace“, což znamená, že se v podstatě chová jako 65C02. Poté může být W65C816S přepnut na „nativní režim“ se dvěma instrukčními sekvencemi, což způsobí, že umožní všechny vylepšené funkce, ale přesto si zachová značný stupeň zpětné kompatibility s většinou softwaru 65C02. Avšak na rozdíl od PDIP40 verze 65C02, který je pin-kompatibilní náhrada za jeho předchůdce NMOS je PDIP40 W65C816S není pin-kompatibilní s jakýmkoli jiným 6502 rodinného MPU.

S W65C816S souvisí W65C802 , který měl stejnou vnitřní strukturu a 16bitovou podporu, ale používal 40kolíkové rozložení kompatibilní s původním 6502. To umožnilo jeho použití jako náhrada v určitých rolích. 65C802 však nemohl vydat úplnou 24bitovou adresu, což ji omezilo na 64 kB paměti. 65C802 a jeho příbuzní se již nevyrábějí.

Dějiny

Verze PLCC-44 mikroprocesoru W65C816S , zobrazená na jednom palubním počítači .

V roce 1981 Bill Mensch , zakladatel a generální ředitel společnosti WDC, zahájil vývoj 65C02 se svými výrobními partnery, především Rockwell Semiconductor a Synertek . Primárním cílem snahy 65C02 bylo přejít z původního procesu 6502 NMOS na CMOS 65C02, což by mu umožnilo běžet na mnohem nižších úrovních výkonu, někde mezi 1 / 10 a 1 / 20 při běhu se stejnými hodinovými rychlostmi. Do návrhu byla také zapracována řada nových operačních kódů a oprav chyb.

Vývoj W65C816S byla zahájena v roce 1982 poté, co Mensch konzultovat s Apple Computer na novou verzi Apple II série osobních počítačů , které by mimo jiné, mají zlepšenou grafiku a zvuk. Apple chtěl MPU, který by byl softwarově kompatibilní s 6502, který se pak používá v Apple II, ale s možností adresovat více paměti a načítat a ukládat 16bitová slova. Výsledkem byl model 65C816, dokončený v březnu 1984, se vzorky poskytnutými společnosti Apple i Atari ve druhé polovině roku a úplným vydáním v roce 1985. Menschovi během procesu návrhu pomáhala jeho sestra Kathryn, která byla zodpovědná za část rozložení zařízení.

Stejný proces také vedl k 65C802, který byl uvnitř identický s 65C816. Oba byly vyrobeny na stejných výrobních linkách a rozcházely se pouze během posledních fází metalizace, kdy byl čip připojen k externím pinům. V 65C802 měly tyto kolíky stejné rozložení jako původní 6502, což umožňovalo jeho použití jako náhrada za výměnu, a přitom umožňovalo použití 16bitového zpracování CPU. Protože však používal původní pinout, měl pouze 16 adresovacích pinů, a proto mohl přistupovat pouze k 64 kB externí paměti. Typicky, když výrobci hardwaru navrhli projekt od základů, použili spíše 65C816 než 65C802, což mělo za následek stažení druhého z výroby.

Apple následně integroval 65C816 do počítače Apple IIGS . Základní design 65C816 byl druhým zdrojem od GTE , Sanyo a dalších od poloviny do konce 80. let až do začátku 90. let minulého století.

V devadesátých letech byly 65C816 i 65C02 převedeny na plně statické jádro , což umožnilo úplné zastavení hodin procesoru Ø2 bez ztráty obsahu registru. Tato funkce spolu s využitím asynchronní statické paměti RAM umožnila vytvářet návrhy, které v pohotovostním stavu používaly minimální výkon.

Od roku 2021 je W65C816S je k dispozici od WDC v 40 pin PDIP , PLCC44 nebo 44-pin TQFP balení, stejně jako jádro pro ASIC integraci (např Winbond W55V9x sérii s televizních zábavně integrovaných obvodů ). WDC, sama bezvadná polovodičová společnost , spolupracuje s různými slévárnami na výrobě W65C816S a dalších kompatibilních produktů. Diskrétní procesory jsou k dispozici prostřednictvím řady distributorů elektroniky. Pro návrháře, kteří chtějí zahrnout W65C816S funkce do vlastní ASIC , WDC nabízí RTL ( zaregistrovat přestupu úroveň ) kód v Verilog .

W65C802P

Funkce

Registry WDC 65816
2 3 2 2 2 1 2 0 1 9 1 8 1 7 1 6 1 5 1 4 1 3 1 2 1 1 1 0 0 9 0 8 0 7 0 6 0 5 0 4 0 3 0 2 0 1 0 0 (bitová pozice)
Hlavní registry
B A Akumulátory
Rejstříkové registry
X X index
Y Y index
0 0 0 0 0 0 0 0 DP D Přímý P age registr
0 0 0 0 0 0 0 0 SP S tack P ointer
DB 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 D ata B ank register
Počitadlo programů
PB PC P rogram C ounter
Stavový registr
N. PROTI m X D Z C S tatus R egister

Funkce WDC 65816:

  • Plně statický design CMOS nabízí nízkou spotřebu energie (300  µ A při 1  MHz ) a zvýšenou odolnost proti rušení.
  • Široký rozsah provozního napětí : 1,8 V až 5,0 V ± 5%.
  • Široký rozsah provozních frekvencí , oficiálně maximálně 14 MHz při 5 voltech, s využitím zdroje jednofázových hodin (fandové úspěšně provozovali 65C816 nad 20 MHz).
  • Emulační režim umožňuje podstatnou kompatibilitu softwaru s NMOS 6502 a CMOS 65C02, s výjimkou nezdokumentovaných operačních kódů . Všech 256 operačních kódů v 65C816 je funkčních v obou provozních režimech.
  • 24bitové adresování paměti poskytuje přístup k 16 MB paměťového prostoru .
  • 16bitové ALU , akumulátor (A), ukazatel zásobníku (SP) a rejstříky indexů (X a Y).
  • 16bitový registr přímé stránky (neboli nulová stránka) (DP).
  • Registry 8bitové datové banky (DB) a programové banky (PB), generující bity 16–23 24bitového kódu a datové adresy. Oddělené registry programů a databází umožňují segmentaci programu a 16 MB lineární adresování dat.
  • Platná datová adresa (VDA) a platná adresa programu (VPA) řídí výstupy pro kvalifikaci paměti, duální mezipaměť a implementaci DMA cyklu krádeže .
  • Vektorový tahový (VPB) řídicí výstup pro indikaci, kdy je načítán vektor přerušení .
  • Vstup Abort (ABORTB) a související vektor podporuje opravy procesorů chybových stavů sběrnice, jako jsou chyby stránek a narušení přístupu do paměti.
  • Přímé registrování a relativní adresování zásobníku poskytuje schopnost reentrantního , rekurzivního a přemístitelného programování.
  • 24 režimů adresování - 13 původních 6502 režimů s 92 pokyny pomocí 256 operačních kódů , včetně většiny nových operačních kódů implementovaných v 65C02.
  • Pokyny pro blokové kopírování umožňující rychlé kopírování datových struktur z jedné oblasti RAM do druhé s minimálním kódem.
  • Instrukce Wait-for-Interrupt (WAI) a Stop-the-Clock (STP) dále snižují spotřebu energie , snižují latenci přerušení a umožňují synchronizaci s externími událostmi.
  • Instrukce Co-Processor (COP) s přidruženým vektorem podporuje konfigurace koprocesoru, např. Procesory s plovoucí desetinnou čárkou
  • Vyhrazená instrukce „uniknout“ (WDM) pro budoucí dvoubajtové operační kódy a odkaz na budoucí návrhy. (WDM jsou iniciály návrháře W65C816S Williama D. Mensche .)

Srovnání s předchozími modely

Dva režimy

65C816 má dva provozní režimy: "emulační režim", ve kterém jsou 16bitové operace neviditelné-rejstříky indexů jsou vynuceny na osm bitů-a čip se zdá být velmi podobný 65C02, se stejným časováním cyklu pro operační kódy; a „nativní režim“, který odhaluje všechny nové funkce. CPU se automaticky přepne do režimu emulace, když je zapnut nebo resetován, což mu umožňuje vyměnit 65C02 za předpokladu, že jeden provede požadované změny obvodu tak, aby vyhovovaly odlišnému rozložení pinů.

16bitové registry

Nejviditelnější změnou 65C816 při spuštění v nativním režimu je rozšíření různých registrů z 8bitových na 16bitové velikosti. Toto vylepšení ovlivňuje akumulátor (A), rejstříky X a Y a ukazatel zásobníku (SP). Nemá vliv na programový čítač (PC), který byl vždy 16bitový.

Když běží v nativním režimu, dva bity ve stavovém registru mění svůj význam. V původním 6502 nebyly použity bity 4 a 5, přestože bit 4 je označován jako příznak B (reakce). V nativním režimu se bit 4 stane příznakem x a bit 5 se stane příznakem m. Tyto bity určují, zda mají rejstříky indexů (x) a/nebo akumulátor/paměť (m) velikost 8 bitů nebo 16 bitů. Nuly v těchto bitech nastavují 16bitové velikosti, jedničky nastavují 8bitové velikosti. Tyto bity jsou opraveny na ty, kdy je procesor zapnut nebo resetován, ale lze je změnit, když je procesor přepnut do nativního režimu.

Možná by nebylo hned zřejmé, proč by někdo chtěl používat nyní 16bitové registry v 8bitovém režimu. Přepnutí do 8bitového režimu pomocí nových instrukcí SEP(bit SEt ve stavu procesoru) a REP(REset) znamená, že všechny následující instrukce přistupující k těmto registrům budou místo dvou číst nebo zapisovat pouze jeden bajt. Pokud je například bit m nastaven na 1 při provádění LDA $1234instrukce, bude načten pouze jeden bajt na adrese $ 1234, čímž se sníží počet cyklů potřebných k provedení instrukce. To je zvláště užitečné například při práci s 8bitovými znakovými daty.

Když jsou velikosti registrů nastaveny na 16 bitů, přístup k paměti bude mít přístup ke dvěma souvislým bytům paměti za cenu jednoho dalšího hodinového cyklu. Kromě toho instrukce čtení-úprava-zápis, jako například ROR <addr>při použití, když je akumulátor nastaven na 16 bitů, ovlivní dva souvislé bajty paměti, ne jeden. Podobně všechny aritmetické a logické operace budou 16bitové operace.

24bitové adresování

Další zásadní změnou systému při běhu v nativním režimu je, že model paměti je rozšířen na 24bitový formát z původního 16bitového formátu 6502. 65C816 generuje 24bitové adresy a využívá dva registry, registr bankovní banky ( DB) a programový bankovní registr ( PB), pro nastavení bitů 16–23 efektivní adresy. V obou případech „banka“ označuje souvislý 64 kB segment paměti, který je ohraničen rozsahem adres $bb0000-$bbFFFF, kde bbje adresa banky, tj. Bity 16–23 efektivní adresy. Oba DBa PBjsou nastaveny na $00při zapnutí nebo resetu.

Během cyklu načítání operačního kódu nebo operanduPB je před čítač programu ( PC) předřazen pro vytvoření 24bitové efektivní adresy. Pokud by došlo k PC„zabalení“ (návrat na nulu), PBnebude se zvyšovat. Program je tedy ohraničen limity banky, ve které se provádí. Z tohoto paměťového modelu vyplývá, že cíle větví a podprogramů musí být ve stejné bance jako instrukce vytvářející větev nebo volání, pokud nejsou k provedení kódu v jiné bance použity „dlouhé“ skoky nebo volání podprogramů. Neexistuje žádný programový prostředek, který PBby bylo možné přímo změnit.

Během cyklu načítání nebo ukládání dat DBje předřazena na 16bitovou datovou adresu pro vytvoření 24bitové efektivní adresy, na které bude přistupováno k datům. Tato charakteristika procesoru umožňuje rozumně spustit kód 6502 nebo 65C02, který používá 16bitové adresy k odkazování na datové prvky. Na rozdíl od PBtoho DBlze změnit pod kontrolou programu, což je něco, co lze provést pro přístup k datům za hranicemi 16bitového adresování. Také DBbude dočasně zvýšit v případě, že adresa je indexována za hranicemi banky v současné době DB. DBje ignorováno, pokud je jako operand instrukce načítání/ukládání dat zadána 24bitová adresa, nebo pokud je účinná adresa na přímé (nulové) stránce nebo v zásobníku hardwaru . V druhém případě se pro vygenerování efektivní adresy použije implikovaná banka $ 00.

Dalším přírůstkem do sady registrů je 16bitový registr přímé stránky ( DP), který nastavuje základní adresu pro to, co se dříve nazývalo nulová stránka , ale nyní se označuje jako přímá stránka . Přímé adresování stránek používá 8bitovou adresu, což má za následek rychlejší přístup, než když se používá 16bitová nebo 24bitová adresa. Některé režimy adresování, které nabízejí směr, jsou také možné pouze na přímé stránce. V 65 (C) 02 je přímá stránka vždy prvních 256 bajtů paměti, tedy „nulová stránka“. V nativním režimu může 65C816 přemístit přímou (nulovou) stránku kamkoli do banky $00(prvních 64 kB paměti) zapsáním 16bitové počáteční adresy do DP. Pokud DPnení nastaveno rovnoměrné ohraničení stránky, existuje sankce za přístup k jednomu cyklu .

Přepínání mezi režimy

Aktuální režim provozu je uložen v emulačním (E) bitu. Když jsme již přidali nové bity x a m k předchozí sadě šesti příznaků ve stavovém registru (SR), nezbylo dost bitů, které by udržely nový bit režimu. Místo toho bylo použito jedinečné řešení, ve kterém bit režimu zůstal „neviditelný“ a nelze k němu přímo přistupovat. Nová XCEinstrukce (eXchange Carry with Emulation) vyměňuje hodnotu emulačního bitu za bit C (arry), bit 0 ve stavovém registru. Pokud například někdo chce vstoupit do nativního režimu po spuštění procesoru, použije se CLCk vyčištění bitů Carry a poté XCEk zápisu do emulačního bitu. Návrat k použití režimu emulace 65C02 SECnásledovaný XCE.

Interně je 65C816 plně 16bitový design. Bity m a x v SR určují, jak se uživatelské registry (akumulátor a index) zobrazují zbytku systému. Po resetu se 65C816 spustí v režimu emulace 65C02, ve kterém jsou m a x nastaveny na 1 a nelze je změnit. Z tohoto důvodu se registry zobrazují zbytku systému jako 8 bitů. Nejvýznamnější bajt (MSB) akumulátoru (B-akumulátor) není přímo přístupný, ale lze jej pomocí XBAinstrukce zaměnit za nejméně významný bajt (LSB) akumulátoru (A-akumulátor) . Pro rejstříky indexů (.X a .Y) neexistuje žádná odpovídající operace.

Po přepnutí do nativního režimu bude MSB .X a .Y nulové a B-akumulátor se nezmění. Pokud je bit m v SR vymazán, B-akumulátor se „spojí“ s A-akumulátorem a vytvoří 16bitový registr. Operace načítání/ukládání nebo aritmetická/logická operace zahrnující akumulátor a/nebo paměť bude 16bitová operace-k načtení/uložení 16bitové hodnoty jsou zapotřebí dva cykly sběrnice.

Pokud je bit x v SR vymazán, oba indexové registry budou nastaveny na 16 bitů. Pokud se používá k indexování adresy, např. LDA SOMEWHERE,X16bitová hodnota v indexovém registru bude přidána k základní adrese, aby vytvořila efektivní adresu.

Pokud je nastaven bit m v SR, akumulátor se vrátí na 8bitový registr a následné operace na akumulátoru, až na několik výjimek, budou 8bitové operace. B-akumulátor si zachová hodnotu, kterou měl, když akumulátor pracoval v 16bitovém režimu. Výjimkou jsou instrukce, které přenášejí přímý registr stránek (DP) a ukazatel zásobníku (SP) do/z akumulátoru. Tyto operace jsou v nativním režimu široké vždy 16 bitů, bez ohledu na stav m bitu ve stavovém registru.

Pokud je nastaven bit x v SR, nejenže se rejstříky indexů vrátí na 8 bitů, cokoli, co bylo v MSB, zatímco v 16bitovém režimu bude ztraceno, něco, co si programátor jazyka sestavení nemůže dovolit zapomenout.

Aplikace

Systémy založené na 65816 variantách:

Používá se také v vylepšeních C-One a SuperCPU pro Commodore 64 .

Viz také

Reference

Citace

Bibliografie

  • Oči, Davide; Lichty, Ron (1986). Programování 65816 - včetně 6502, 65C02, 65802 . Sál Prentice. ISBN 978-0893037895.

Další čtení

externí odkazy

Tento článek vychází z materiálu převzatého z Free On-line Dictionary of Computing před 1. listopadem 2008 a začleněn pod podmínky „relicencování“ GFDL , verze 1.3 nebo novější.