R800 (CPU) - R800 (CPU)
![]() | tento článek potřebuje další citace pro ověření.Červenec 2009) (Zjistěte, jak a kdy odstranit tuto zprávu šablony) ( |

The R800 je centrální procesorová jednotka použitý v MSX Turbo-R domácí počítač. R800 navrhl ASCII Corporation z Japonsko a postavil Mitsui & Co., Ltd.. Cílem byl moderní a pipeline (tj. Efektivní) binární procesor kompatibilní s Z80, a tedy se softwarem MSX, při zachování kompatibilita se staršími MSX Z80 - hardware na bázi.
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 to byla vysokorychlostní verze Z80 a do značné míry přizpůsobená pro architekturu MSX.[1]
Pro kompatibilitu softwaru se starším softwarem MSX používá R800 to samé instrukční sada jako Z80, pouze s drobnými, ale užitečnými doplňky, jako jsou 8x8-bitové a 16x16-bitové instrukce pro násobení zvané MULUB (8-bit ) a MULUW (16-bit ). Také mnoho z nezdokumentovaných pokynů Z80 bylo oficiálních, včetně všech opcodes pro pokyny týkající se IX a IY jako 8bitových registrů (IXH, IXL, IYH, IYL).
Protože R800 není založen přímo na Z80, ale vychází z Z800 rodina, postrádá některé z dalších nezdokumentovaných funkcí Z80. Například nezdokumentované příznaky zastoupené v bitech 3 a 5 registru F nepředpokládají stejné hodnoty jako v Z80 (což způsobí jeho selhání ZEXALL testy) a nezdokumentovaný operační kód, který se často nazývá SLL, je pouze alias instrukce SLA.
Změny hardwaru
Jelikož se jednalo o mnohem novější design, implementace R800 se samozřejmě zcela odlišovala od staré Z80. Změny byly podobné Z800, Z280, Z380 a eZ80 řady procesorů kompatibilních se Z80. Původní Z80 interně využívá neobvyklý 4bitový ALU hardware,[2] řešení skutečně schopné konkurovat podobným procesorům pomocí plně zapojené 8bitové logiky ALU (jako je její bezprostřední předchůdce, Intel 8080[3]). Návrháři R800 však implementovali plně 16bitový ALU aby bylo možné držet krok s jeho 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 cyklus sběrnice (1–2 hodiny) na R800, a to kvůli stupni pipelinování, který umožňuje tato ALU s plnou šířkou. Maximální CPU rychlost hodin použitý na tomto novém MSX byl 14,32 MHz —Čtyřikrát rychlejší než původní rychlost 3,57 MHz použitá ve starší verzi MSX, zatímco hodiny sběrnice byly zvýšeny na 7,16 MHz. The datová sběrnice zůstal 8bitový, aby byla zachována kompatibilita se starým hardwarem.
Načítání kódů
Byly provedeny další změny ve způsobu načítání CPU 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
Protože většina implementací MSX používá RAM paměť umístěná v bloku 256 × 256 bajtů, k nastavení adresy pro vyzvednutí jsou nutné 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í.[4]
Ř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, CPU je zastaveno na 4 μs, tentokrát se používá k obnovení bloku 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 vnitřní ROM Turbo-R je 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
- ^ „MSXturboR 開 発 秘 話“ [příběh vývoje MSXturboR]. MSX マ ガ ジ ン (v japonštině). Listopadu 1990. str. 70.
- ^ http://www.righto.com/2013/09/the-z-80-has-4-bit-alu-heres-how-it.html
- ^ Model 8080 byl navržen stejnými designéry (Faggin a Shima, poté u společnosti Intel) a používal prostý 8bitový ALU. Pozdější 4-bitová implementace ALU v Z80 byla zamýšlena tak, aby se Z80 dostatečně odlišovala od designu 8080, čímž se vyhnula soudnímu řízení ze strany společnosti Intel. Výkon příliš neutrpěl: 16bitové instrukce trvaly 11 cyklů ve srovnání s 10 na 8080. 8bitové instrukce se ve skutečnosti staly rychlejšími: 4 cykly ve srovnání s 5 na 8080. (Spolu s hrubým zdvojnásobením hodinové frekvence který dal Z80 výrazný náskok před 8080.)
- ^ https://www.msx.org/wiki/R800