R800 (CPU) - R800 (CPU)

R800

R800 je centrální procesorová jednotka používá při MSX Turbo-R domácího počítače . R800 byl navržen ASCII Corporation of Japan , a postavený Mitsui & Co., Ltd. . Cílem byl moderní a zřetězený binární procesor kompatibilní s Z80, a tedy se softwarem MSX, při zachování kompatibility se starším hardwarem založeným na MSX Z80 .

Kompatibilita

Během vývoje MSX Turbo R považovala společnost ASCII Corporation za kandidáty různé procesory, kompatibilní i nekompatibilní se Z80. V té době Kazuya Kishioka ( 岸 岡 和 也 ) , zaměstnanec společnosti, zkoumal a vyvíjel ASIC, což byla vysokorychlostní verze Z80 a do značné míry přizpůsobená architektuře MSX.

Pro softwarovou kompatibilitu se starším softwarem MSX používá R800 stejnou instrukční sadu jako Z80, pouze s malými, ale užitečnými doplňky, jako jsou 8x8-bitové a 16x16-bitové multiplikační instrukce zvané MULUB ( 8-bit ) a MULUW ( 16- bit ). Také mnoho z neregistrovaných instrukcí Z80 bylo oficiálních, včetně všech kódů pro instrukce týkající se IX a IY jako 8bitových registrů (IXH, IXL, IYH, IYL).

Jelikož R800 není založen přímo na Z80, ale pochází z rodiny Z800 , postrádají některé z dalších nedokumentovaných funkcí Z80. Například neregistrované příznaky zastoupené v bitech 3 a 5 registru F nepředpokládají stejné hodnoty jako v Z80 (což způsobí selhání testů ZEXALL ) a nezdokumentovaný operační kód často nazývaný SLL je jen alias instrukce SLA.

Změny hardwaru

Jelikož se jednalo o mnohem novější design, implementace R800 se samozřejmě zcela lišila od staré Z80. Změny byly podobné Z800 , Z280 , Z380 a eZ80 linie Z80 kompatibilních procesorů. Původní Z80 interně využívá neobvyklý 4bitový ALU hardware, řešení skutečně schopné konkurovat podobným CPU s využitím plně zapojené 8bitové ALU logiky (jako je jeho bezprostřední předchůdce Intel 8080 ). Designéři R800 však implementovali plnou 16bitovou ALU , aby udrželi krok s jejím propracovanějším provedením. Pokyny jako ADD HL, BC, které na Z80 trvají 11 hodinových cyklů, mohou být v některých situacích provedeny za pouhý jeden sběrnicový cyklus (1–2 hodiny) na R800, a to kvůli stupni pipelinování, který umožňuje tato ALU s plnou šířkou. Maximální rychlost procesoru použitá na tomto novém MSX byla 14,32 MHz - čtyřikrát rychlejší než původní rychlost 3,57 MHz použitá ve starším MSX, zatímco hodiny sběrnice byly zvýšeny na 7,16 MHz. Datová sběrnice zůstal 8-bit pro zachování kompatibility se starým hardwarem.

Načítání kódů

Byly provedeny další změny ve způsobu, jakým CPU načítá opcodes . Původní Z80 používá dva cykly k načtení jednoduché instrukce jako OR A, plus dva cykly k obnovení. Na architekturu MSX je vydán další čekající stát. Přehled mechanismu načítání v typickém prostředí MSX pomáhá vysvětlit R800:

  • Z80, cyklus 1: nastavte vyšších 8 bitů adresy
  • Z80, cyklus 2: nastavte spodních 8 bitů adresy
  • Z80, cyklus 3: waitstate
  • Z80, cyklus 4: obnovení, část 1
  • Z80, cyklus 5: obnovení, část 2

Vzhledem k tomu, že většina implementací MSX používá paměť RAM umístěnou v bloku 256 × 256 bajtů, jsou pro nastavení adresy pro načítání vyžadovány dva cykly. R800 se tomu vyhýbá tím, že si pamatuje poslední známý stav vyšších 8 bitů. Pokud je další instrukce na stejných 256bajtových hranicích, vyšších 8 bitů není nastaveno a cyklus se uloží. Na Z80 však obnovovací cykly ničí informace na vyšších bitech, takže bylo zapotřebí řešení.

Řešením použitým v R800 bylo obnovení celých bloků RAM, místo obnovování jednoho řádku RAM u každé vydané instrukce. Každých 30 μs se CPU zastaví na 4 μs, tentokrát se použije k obnovení bloku paměti RAM. Vzhledem k tomu, že mezi instrukcemi pro načtení není žádná aktualizace a čekající stát je odstraněn kvůli rychlejším čipům RAM, lze jednoduché pokyny vydávat pouze pomocí jednoho cyklu. Tento cyklus by byl cyklus 2 v příkladu Z80 výše; cyklus 1 se stává volitelným a je vydán pouze tehdy, když program překročí hranici 256 bajtů.

Externí hardware

To vše platí pouze pro rychlou RAM použitou na MSX Turbo-R. Externí hardware, připojený prostřednictvím slotů pro kazety, používá časování podobné Z80. Ani interní ROM Turbo-R není dostatečně rychlý pro toto schéma načítání, takže další čipy na Turbo-R mohou zrcadlit obsah ROM do RAM, aby byl rychlejší.

Reference

Další čtení