ASCII R800

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.

Poznámky

  1. Z-80 má 4bitovou ALU. Zde je návod, jak to funguje . Získáno 24. prosince 2018. Archivováno z originálu 9. září 2013.