R800 (CPU)

A Wikipédiából, a szabad enciklopédiából
R800
GyártóASCII Corporation
R800 CPU egy Panasonic FS-A1ST modellben

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[szerkeszté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.[1]

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.[2] 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.[3]

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[szerkesztés]

Ú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),[4] é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[5]). 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[szerkeszté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:

  • Z80, 1. ciklus: beállítja a cím felső 8 bitjét
  • Z80, 2. ciklus: beállítja a cím alsó 8 bitjét
  • Z80, 3. ciklus: várakozási állapot (waitstate)
  • Z80, 4. ciklus: frissítés, 1. rész
  • Z80, 5. ciklus: frissítés, 2. rész

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.[6]

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[szerkesztés]

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[szerkesztés]

  1. MSXturboR開発秘話 (japán nyelven), 70. o. (1990. november 1.) 
  2. R800 Programming (angol nyelven) (wiki). MSX Components / Programming. 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[szerkesztés]

  • Ez a szócikk részben vagy egészben a R800 (CPU) című angol Wikipédia-szócikk ezen változatának fordításán alapul. Az eredeti cikk szerkesztőit annak laptörténete sorolja fel. Ez a jelzés csupán a megfogalmazás eredetét és a szerzői jogokat jelzi, nem szolgál a cikkben szereplő információk forrásmegjelöléseként.

Források[szerkesztés]

  • R800 User’s Manual (angol nyelven). MSX Assembly Page, 1991. január 24. (Hozzáférés: 2022. szeptember 20.) – vázlatos leírás az R800 tulajdonságairól és működéséről
  • R800 Programming (angol nyelven). Wiki. MSX Resource Center, 2022. szeptember 11. (Hozzáférés: 2022. szeptember 11.)

További információk[szerkesztés]

  • 堀内 かほり (Kaori Horiuchi): MSX --- 乱立する独自規格に一石を投じた (japán nyelven). 技術再発見. Nikkei, 2006. július 19. (Hozzáférés: 2022. szeptember 18.)
  • 堀内 かほり (Kaori Horiuchi): MSX --- 乱立する独自規格に一石を投じた (magyar nyelven). Technológia újrafelfedezése. Nikkei, 2006. július 19. (Hozzáférés: 2022. szeptember 18.) „a japán nyelvű cikk gépi fordítása” – Az „MSX” személyi számítógép-szabvány kialakulásáról, Kazuhiko Nishi, az MSX tervezője

Kapcsolódó szócikkek[szerkesztés]

  • Hitachi HD64180, egy korábbi Z80-bővítés (1985), melyet hasonló módon egy MSX2 számítógépben is alkalmaztak