ASCII R800

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.

Noter

  1. Z-80 har en 4-bit ALU. Sådan fungerer det . Hentet 24. december 2018. Arkiveret fra originalen 9. september 2013.