ASCII R800 je částečně 16bitový mikroprocesor vyvinutý společností ASCII založený na Zilog Z800 a vyrobený speciálně pro spotřebitelské počítače MSX Turbo R. Hlavním cílem tvorby procesoru bylo získání maximálního výkonu při zachování zpětné kompatibility se starším softwarem a hardwarem počítačů MSX využívajících mikroprocesor Zilog Z80 .
Aby byla zachována kompatibilita softwaru se starším softwarem MSX, používá R800 rozšířenou sadu instrukcí procesoru Z80 . Operace hardwarového násobení - MULUB (8-bit) a MULUW (16-bit) byly přidány do obvyklé instrukční sady Z80. Také mnoho z nezdokumentovaných funkcí Z80 bylo oficiálně uvedeno, jako jsou operace s 8bitovými polovinami párů indexových registrů (IXh, IXl, IYh, IYl).
R800 je evolucí procesorů Z800 (16bitové mikroprocesory kompatibilní se Z80), ale postrádá některé nezdokumentované funkce Z80. Například stav bitů 3 a 4 příznakového registru F neodpovídá stavu těchto bitů pro procesor Z80 (způsobuje, že R800 selže v testu ZEXALL ). Také nezdokumentovaný příkaz, obvykle nazývaný SLL, byl nahrazen jiným příkazem, TST, rovněž nezdokumentovaným.
Výrazné změny se udály po hardwarové stránce. Interní 4bitová [1] ALU procesoru byla nahrazena novou 16bitovou. Operace jako ADD HL,BC (registrovat párování), které dříve vyžadovaly 11 cyklů, lze za určitých podmínek provést na R800 v jednom cyklu. Maximální taktovací frekvence byla zvýšena na 7,16 MHz , což je dvojnásobek standardních 3,57 MHz používaných procesorem Z80 v počítačích MSX. Datová sběrnice zůstala 8bitová, aby byla zachována kompatibilita se starším hardwarem.
V mechanismu načítání operačních kódů byly provedeny další změny. Původní Z80 používá 4 cykly k načtení kódu jednoduchých instrukcí jako OR A, počítače MSX také přidávají jeden cyklus čekání díky své architektuře. Mechanismus načítání pro Z80 v typickém prostředí MSX je následující:
Protože většina implementací RAM v počítačích MSX je organizována jako blok 256 x 256 bajtů , trvá nastavení adresy instrukce dva hodinové cykly. R800 si pamatuje stav horních 8 bitů adresy, čímž ušetří jeden takt v případě, že adresa další instrukce nepřekročí hranici 256bytového bloku. Na procesoru Z80 se však při regeneraci RAM ztrácejí hodnoty horních 8 bitů adresy, což je také potřeba řešit.
Řešením používaným na R800 je použití obnovy celých bloků paměti RAM namísto obnovování jednoho řádku na instrukci. Každých 30 mikrosekund se procesor na 4 mikrosekundy zastaví, během kterých se obnoví blok RAM. V tomto případě není nutné při zpracování každého příkazu provádět proces regenerace. Díky tomu a také díky použití rychlejší paměti RAM, která nevyžaduje zavedení čekacího cyklu, lze jednoduché instrukce provádět pouze v jednom cyklu. Této rychlosti však lze dosáhnout pouze spuštěním programu v paměti RAM počítačů MSX Turbo R. Všechny přístupy k externímu hardwaru, jako jsou zařízení připojená ke slotům pro kazety , vyžadují stejnou dobu jako procesor Z80. Paměť ROM použitá v Turbo R také nemá dostatečnou rychlost pro implementaci takového schématu načítání instrukcí, a proto se pro zvýšení rychlosti provádění kódu z ROM její obsah zkopíruje do RAM pomocí dalšího hardwaru Turbo R.
Mikroprocesory Zilog | |
---|---|
řada Z80 | |
Řada Z8000 |
|
Mikrokontroléry |
|
Kompatibilní se Z80 |
|