ASCII R800 är en delvis 16-bitars mikroprocessor utvecklad av ASCII baserad på Zilog Z800 och tillverkad specifikt för MSX Turbo R konsumentdatorer . Huvudmålet med att skapa processorn var att få maximal prestanda samtidigt som bakåtkompatibiliteten bibehölls med äldre mjukvara och hårdvara på MSX-datorer som använder Zilog Z80 - mikroprocessorn .
För att bibehålla mjukvarukompatibilitet med äldre MSX-programvara använder R800 den utökade Z80 -processorinstruktionsuppsättningen . MULUB (8-bitars) och MULUW (16-bitars) har lagts till i den vanliga Z80-instruktionsuppsättningen. Dessutom har många av de odokumenterade funktionerna i Z80 gjorts officiella, såsom operationer på 8-bitarshalvorna av indexregisterpar (IXh, IXl, IYh, IYl).
R800 är en vidareutveckling av Z800 -processorerna (16-bitars mikroprocessorer kompatibla med Z80), men saknar några av de odokumenterade funktionerna i Z80. Till exempel, tillståndet för bitarna 3 och 4 i flaggregistret F matchar inte tillståndet för dessa bitar för Z80-processorn (vilket gör att R800 misslyckas i ZEXALL-testet ). Dessutom har det odokumenterade kommandot, vanligtvis kallat SLL, ersatts av ett annat kommando, TST, också odokumenterat.
Betydande förändringar har skett på hårdvarusidan. Processorns interna 4-bitars [1] ALU har ersatts med en ny 16-bitars. Operationer som ADD HL,BC (registerparaddition), som tidigare krävde 11 cykler, kan utföras på R800 i en cykel under vissa förhållanden. Den maximala klockhastigheten har höjts till 7,16 MHz , dubbla standarden på 3,57 MHz som används av Z80-processorn i MSX-datorer. Databussen förblev 8-bitars för att bibehålla kompatibilitet med äldre hårdvara.
Ytterligare ändringar har gjorts i opcode-hämtningsmekanismen. Den ursprungliga Z80 använder 4 cykler för att hämta koden för enkla instruktioner som OR A, MSX-datorer lägger också till en cykel av väntan på grund av sin arkitektur. Hämtningsmekanismen för Z80 i en typisk MSX-miljö är som följer:
Eftersom de flesta RAM -implementeringar i MSX-datorer är organiserade som ett block på 256 x 256 byte tar det två klockcykler att ställa in instruktionsadressen. R800 kommer ihåg tillståndet för de översta 8 bitarna i adressen, vilket sparar en klockcykel om adressen för nästa instruktion inte passerar blockgränsen på 256 byte. På Z80-processorn går dock värdena för de övre 8 bitarna av adressen förlorade under regenereringen av RAM-minnet, vilket också måste åtgärdas.
Lösningen som används på R800 är att använda uppdateringen av hela block av RAM, istället för att uppdatera en rad per instruktion. Var 30 : e mikrosekund stannar processorn i 4 mikrosekunder, under vilken RAM-blocket uppdateras. I det här fallet är det inte nödvändigt att utföra en regenereringsprocess vid bearbetning av varje kommando. På grund av detta, och även på grund av användningen av snabbare RAM som inte kräver införandet av en väntecykel, kan enkla instruktioner exekveras på bara en cykel. Denna hastighet kan dock endast erhållas genom att köra programmet i RAM-minnet på datorer MSX Turbo R. All åtkomst till extern hårdvara, såsom enheter anslutna till patronplatser , kräver samma tid som för Z80-processorn. Det ROM som används i Turbo R har inte heller tillräcklig hastighet för att implementera ett sådant instruktionshämtningsschema, därför, för att öka hastigheten för kodexekvering från ROM, kopieras dess innehåll till RAM med hjälp av ytterligare Turbo R-hårdvara.
Zilog mikroprocessorer | |
---|---|
Z80-serien | |
Z8000-serien |
|
Mikrokontroller |
|
Kompatibel med Z80 |
|