R800 (CPU)

R800
R800 CPU egy Panasonic FS-A1ST modellben
R800 CPU egy Panasonic FS-A1ST modellben

GyártóASCII Corporation

Az R800 az MSX Turbo-R otthoni számítógépekben használt fő CPU (másodlagos CPU-ként ugyanis ezekben a gépekben egy Zilog Z80A is van). Az R800-at a japán ASCII Corporation és a Mitsui & Co gyártotta 1990-től, az MSX számítógépsorozat 1993-as megszűnéséig. A cél a lehető leggyorsabb CPU megalkotása volt ezekhez a gépekhez, amely kód szinten kompatibilis a Zilog Z80-as processzorával, egyaránt fenntartva a meglévő MSX szoftverek és a régebbi MSX Z80-alapú hardverek kompatibilitását, és ezt az R800-ban egy új futószalagos megoldással érték el.

Kompatibilitás

A fejlesztés történetéről igen kevés információ látott napvilágot, mert a japán vállalati kultúrától idegen az információk széles körű megosztása. Az ASCII Corporation az MSX Turbo R fejlesztése során több különböző – a Z80-nal kompatibilis és nem kompatibilis – processzort vizsgált meg lehetséges jelöltként. Abban az időben Kisioka Kazuja (岸岡和也; Hepburn: Kishioka Kazuya?), a cég alkalmazottja egy alkalmazásspecifikus integrált áramkört (ASIC) kutatott és fejlesztett, amely a Z80 nagy sebességű változata volt, és nagyrészt az MSX architektúrára lett szabva.

A régebbi MSX szoftverekkel való szoftverkompatibilitás érdekében az R800 utasításkészlete tartalmazza a Z80-as processzor összes utasítását, ezen kívül a Z80 nem dokumentált / nem hivatalos utasításait hivatalossá tették, és a processzorban néhány új utasítást is megvalósítottak: 8×8 bites és 16×16 bites szorzóutasításokat, különböző címzésekkel, amelyek a MULUB (bájtos, 8 bites szorzás) és a MULUW (szavas, 16 bites szorzás) jelöléseket kapták. A megvalósított, korábban nem hivatalos opkódok között találhatók az eredetileg oszthatatlan 16 bites IX és IY regisztereket két 8 bites regiszterként (IXH, IXL, IYH, IYL) kezelő utasítások.

Mivel az R800 nem közvetlenül a Z80-on alapul, hanem a Z800 családra épül, hiányzik belőle számos más, nem dokumentált Z80 funkció. Például az F regiszter 3. és 5. bitje, melyek eredetileg nem dokumentált jelzőbitek, nem ugyanazokat az értékeket veszik fel, mint a Z80-ban (emiatt a ZEXALL kompatibilitási teszt sikertelen ennél a processzornál), és az SLL nevű dokumentálatlan műveleti kódot egy másik, TST nevű dokumentálatlan műveleti kód váltja fel, illetve ez az SLA utasítás szinonimája.

Hardverváltozások

Újabb kialakítás lévén, az R800 implementációja nagyon eltért a régi Z80-asétól. A változtatások hasonlóak voltak a Z800, Z280, Z380 és eZ80 sorozatú Z80-kompatibilis processzorokban történtekhez. Az eredeti Z80 egy szokatlan, belsőleg 4 bites ALU hardvert használ (bővebben ld.: Z80 ALU), és érdekes módon ez a megoldás valóban képes versenyezni a hasonló, de teljes 8 bites hardverfelépítésű ALU logikát alkalmazó CPU-kkal (ilyen például közvetlen elődje, az Intel 8080). Az R800 tervezői azonban egy valódi 16 bites ALU-t implementáltak, hogy az lépést tudjon tartani a processzor nagyobb mértékben futószalagos utasításvégrehajtásával. Az olyan utasítások, mint az ADD HL,BC, amelyek korábban 11 órajelciklust vettek igénybe a Z80-on, bizonyos feltételek mellett akár egy buszciklus (1-2 órajel) alatt is végrehajthatóak az R800-on, mivel ebben a teljes szélességű ALU lehetővé teszi a futószalagos működést. Az új MSX maximális CPU-órajele 14,32 MHz volt – négyszer olyan gyors, mint az eredeti MSX modellekben használt Z80 3,57 MHz-es órajele, míg a sín órajelét 7,16 MHz-re növelték. A adatsín továbbra is 8 bites maradt, a régi hardverrel való kompatibilitás fenntartása érdekében.

Utasításlehívás

További változtatásokat hajtottak végre a CPU műveleti kódok kezelésének módjában is. Az eredeti Z80 két ciklust használ az olyan egyszerű utasítások lekéréséhez, mint az OR A, és két ciklust a frissítéshez. Az MSX architektúrában egy további várakozási állapot kerül kiadásra. A Z80-as feldolgozás MSX környezetben történő áttekintése mutatja az R800-as működését:

Mivel az MSX legtöbb megvalósítása 256×256 bájtos blokkokba szervezett RAM-ot használ, az olvasandó cím összeállításához két ciklusra van szükség. Az R800 ezt úgy kerüli el, hogy megjegyzi a címek felső 8 bites részének utolsó ismert állapotát. Ha a következő utasítás ugyanabban a 256 bájtos blokkban van, akkor a felső 8 bitet nem kell címezni, így egy ciklus megtakarítható. Azonban a Z80-on a frissítési ciklusok megsemmisítik a felső bitekben lévő információt, ezért kerülő megoldásra volt szükség.

Az R800-ban alkalmazott megoldás a RAM teljes blokkjainak frissítése volt, ahelyett, hogy minden egyes utasításnál egy sornyi RAM-ot frissítene a processzor. 30 μs-onként a CPU 4 μs-os szünetet tart, és ezt az időt a RAM egy blokkjának frissítésére használja fel. Mivel nincs frissítés két utasítás címzése között, és a várakozási állapot a gyorsabb RAM csipek miatt megszűnik, az egyszerű utasítások kezelése csak egy órajelciklust vesz igénybe. Ez a ciklus a fenti Z80 példában a 2. ciklus lenne; az 1. ciklus opcionálissá válik, és csak akkor kerül kiadásra, ha a program átlép egy 256 bájtos határt.

Külső hardver

Mindez csak az MSX Turbo-R-ben használt gyors RAM-ra vonatkozik. A bővítőkazetta-foglalatokon keresztül csatlakoztatható külső hardver a Z80-hoz hasonló időzítéseket használ. Még a Turbo-R belső ROM-ja sem elég gyors ehhez a rendszerhez, ezért a Turbo-R további csipjei képesek a ROM tartalmát a RAM-ba tükrözni (másolni), a gyorsabb működés érdekében.

Jegyzetek

  1. ↑ "MSXturboR開発秘話" [MSXturboR development story]. MSXマガジン (japán nyelven). 1990. november. 70. o.
  2. ↑ "R800 Programming" (wiki). MSX Components / Programming (angol nyelven). MSX Resource Center. 2022. szeptember 11. a MULUW utasítások az eredményt mindig a DE:HL regiszterekbe írják
  3. ↑ R800 made by Ascii Japan, used for MSX Turbo R (made by Panasonic) – www.z80.info, szoftverdokumentáció, zip archívum
  4. ↑ "The Z-80 has a 4-bit ALU. Here's how it works".
  5. ↑ A 8080-at ugyanazok a tervezők tervezték (Faggin és Shima, akkoriban az Intelnél), és egy egyszerű 8 bites ALU-t használt. A Z80 későbbi 4 bites ALU implementációja azt a célt szolgálta, hogy a Z80 kellőképpen különbözzön a 8080-as konstrukciótól, és így elkerüljék a pereskedést az Intellel. A teljesítmény nem sokat romlott: a 16 bites utasítások 11 ciklust igényeltek, szemben a 8080-as 10 ciklusával. A 8 bites utasítások valójában gyorsabbak lettek: 4 ciklus, szemben a 8080-as 5 ciklusával. (Az órajelfrekvencia durván megduplázódásával együtt ez jelentős előnyhöz juttatta a Z80-at a 8080-ashoz képest.)
  6. ↑ "R800 - MSX Wiki".

Fordítás

Források

További információk

Kapcsolódó szócikkek