ASCII R800 er en delvist 16-bit mikroprocessor udviklet af ASCII baseret på Zilog Z800 og fremstillet specifikt til MSX Turbo R forbrugercomputere . Hovedmålet med at skabe processoren var at opnå maksimal ydeevne og samtidig bibeholde bagudkompatibilitet med ældre software og hardware på MSX-computere , der bruger Zilog Z80 - mikroprocessoren .
For at opretholde softwarekompatibilitet med ældre MSX-software bruger R800 det udvidede Z80-processorinstruktionssæt . Hardwaremultiplikationsoperationer - MULUB (8-bit) og MULUW (16-bit) er blevet tilføjet til det sædvanlige Z80-instruktionssæt. Også mange af de udokumenterede funktioner i Z80 er blevet gjort officielle, såsom operationer på 8-bit halvdele af indeksregisterpar (IXh, IXl, IYh, IYl).
R800 er en videreudvikling af Z800 -processorerne (16-bit mikroprocessorer kompatible med Z80), men mangler nogle af de udokumenterede funktioner i Z80. For eksempel matcher tilstanden af bit 3 og 4 i flagregister F ikke tilstanden af disse bits for Z80-processoren (hvorved R800 mislykkes i ZEXALL-testen ). Også den udokumenterede kommando, normalt kaldet SLL, er blevet erstattet af en anden kommando, TST, også udokumenteret.
Der er sket væsentlige ændringer på hardwaresiden. Processorens interne 4-bit [1] ALU er blevet erstattet med en ny 16-bit. Operationer såsom ADD HL,BC (registerparaddition), som tidligere krævede 11 cyklusser, kan udføres på R800 i én cyklus under visse forhold. Den maksimale clockhastighed er blevet øget til 7,16 MHz , det dobbelte af standard 3,57 MHz, der bruges af Z80-processoren i MSX-computere. Databussen forblev 8-bit for at opretholde kompatibilitet med ældre hardware.
Yderligere ændringer er blevet foretaget i opcode-hentningsmekanismen. Den originale Z80 bruger 4 cyklusser til at hente koden for simple instruktioner som ELLER A, MSX-computere tilføjer også en ventecyklus på grund af deres arkitektur. Hentemekanismen til Z80 i et typisk MSX-miljø er som følger:
Da de fleste RAM -implementeringer i MSX-computere er organiseret som en 256 x 256 byte -blok , tager det to clock-cyklusser at indstille instruktionsadressen. R800 husker tilstanden for de øverste 8 bit af adressen, hvilket gemmer én clock-cyklus, hvis adressen på den næste instruktion ikke krydser 256-byte blokgrænsen. Men på Z80-processoren går værdierne af de øverste 8 bit af adressen tabt under regenereringen af RAM, som også skal adresseres.
Løsningen, der bruges på R800, er at bruge opdatering af hele blokke RAM i stedet for at opdatere en linje pr. instruktion. Hvert 30 mikrosekund stopper processoren i 4 mikrosekunder, hvor RAM-blokken opdateres. I dette tilfælde er det ikke nødvendigt at udføre en regenereringsproces, når du behandler hver kommando. På grund af dette, og også på grund af brugen af hurtigere RAM, der ikke kræver introduktion af en ventecyklus, kan enkle instruktioner udføres i blot én cyklus. Denne hastighed kan dog kun opnås ved at køre programmet i RAM'en på MSX Turbo R-computere. Al adgang til ekstern hardware, såsom enheder forbundet til patronslots , kræver samme tid som for Z80-processoren. Den ROM , der bruges i Turbo R, har heller ikke tilstrækkelig hastighed til at implementere et sådant instruktionshentningsskema, derfor kopieres indholdet til RAM ved hjælp af yderligere Turbo R-hardware for at øge hastigheden af kodeudførelse fra ROM.
Zilog mikroprocessorer | |
---|---|
Z80 serien | |
Z8000 serien |
|
Mikrocontrollere |
|
Kompatibel med Z80 |
|