R8000

A Wikipédiából, a szabad enciklopédiából

Az R8000 („TFP”) egy 64 bites RISC mikroprocesszor-csipkészlet, illetve többcsipes mikroprocesszor, amit a MIPS Technologies, Inc. (MTI) a Toshiba és a Weitek cégekkel közösen fejlesztett ki, 1992 és 1994 között.[1] 1994 júliusában mutatták be. Ez volt a MIPS IV utasításkészlet-architektúra (ISA) első megvalósítása, valamint az első szuperskalár megvalósítás a MIPS architektúrákban. Az R8000-es nagy hangsúlyt helyezett a lebegőpontos teljesítményre, és kifejezetten szuperszámítógépes alkalmazásokhoz tervezték. A processzor többcsipes felépítésű, sínekkel összekötött alkatrészei egy processzorkártyára szerelve alkotják az eszközt. Architektúrája miatt erre a processzorra nehéz volt a programfejlesztés, ezért csak rövid ideig és korlátozott számú rendszerben használták. Az R8000 „TFP” kódnéven is ismert, ami a „Tremendous Floating-Point” (szörnyű nagy lebegőpont) rövidítése.

Történet[szerkesztés]

Az R8000 fejlesztése az 1990-es évek elején kezdődött a Silicon Graphics vállalatnál (SGI). Az R8000-et kifejezetten arra tervezték, hogy az 1990-es évek körüli szuperszámítógépek teljesítményét nyújtsa egyetlen mikroprocesszoron, a sok diszkrét komponensből, például kaputömbökből felépített központi feldolgozó egységek helyett. Akkoriban a hagyományos szuperszámítógépek teljesítménye nem fejlődött olyan gyorsan, mint a csökkentett utasításkészletű (RISC) mikroprocesszorok. A korabeli előrejelzések azt állították, hogy a RISC mikroprocesszorok idővel elérik a drágább és nagyobb szuperszámítógépek teljesítményét, azok árának és méretének töredékéért, így az ilyen teljesítményű számítógépek elérhetőbbé válnak, és az asztali munkaállomások és szerverek sok területen átvehetik a szuperszámítógépek szerepét.

Az első részletek az R8000-ről 1992 áprilisában jelentek meg, a MIPS Computer Systems bejelentésében, amelyben részletesen ismertette a jövőbeli MIPS mikroprocesszorokat. 1992 márciusában az SGI bejelentette, hogy felvásárolja a MIPS Computer Systems-t, amely 1992 közepén MIPS Technologies, Inc. (MTI) néven az SGI leányvállalatává vált. Az R8000 fejlesztése az MTI-hez került és ott folytatódott tovább. Az R8000 bevezetését 1993-ra várták, de ez 1994 közepére csúszott. Az első R8000, egy 75 MHz-es eszköz, 1994. június 7-én volt bemutatva. Az akkori ára 2500 USD volt. 1995 közepén egy 90 MHz-es változat jelent meg az SGI által szállított rendszerekben. Az R8000 magas ára és szűk piaca (műszaki és tudományos számítástechnika) korlátozta piaci részesedését, és bár népszerű volt a megcélzott piacon, nagyrészt felváltotta az 1996 januárjában bevezetett olcsóbb és általánosan jobb teljesítményű R10000.

Az R8000 felhasználója az SGI volt, amely a Power Indigo2 munkaállomásban, Power Challenge szerverében, a Power ChallengeArray fürtben és Power Onyx vizualizációs rendszerében használta. Az 1994. novemberi TOP500 listán 500 rendszerből 50 használta az R8000-et. A legmagasabb helyezést az R8000-alapú rendszerek közül négy Power Challenge érte el, ezek a 154–157. helyen álltak. Mindegyikben 18 db. R8000-es volt.[2]

Leírás[szerkesztés]

A csipkészlet az R8000 mikroprocesszorból, az R8010 lebegőpontos egységből, két címke-RAM-ból (Tag RAM) és az adatfolyam-átvitelű gyorsítótárból (streaming cache) áll. Az R8000 szuperskalár, ciklusonként max. négy utasítás kibocsátására képes, és sorrendi végrehajtású processzor (az utasításokat a program által definiált sorrendben hajtja végre). Ötfokozatú fixpontos futószalaggal rendelkezik.

R8000[szerkesztés]

R8000 lapka

Az R8000 vezérli a csipkészletet és hajtja végre a fixpontos utasításokat. Tartalmazza a fixpontos (integer) végrehajtó egységeket, a fixpontos regiszterfájlt, az elsődleges gyorsítótárakat és az utasítás-lehíváshoz szükséges hardvert, az elágazás-előrejelzést és a translation lookaside buffer (címfordító gyorsítótár) puffereket (TLB-ket).

Az első fokozatban a végrehajtó logika négy utasítást hív le az utasítás-gyorsítótárból. Az utasítás-gyorsítótár 16 KiB méretű, közvetlen leképezésű, virtuálisan címkézett és virtuálisan indexelt, a sormérete 32 bájt. A második fokozatban történik az utasításdekódolás és a regiszterek olvasása, ekkor az elágazási utasítások is feloldódnak, ami egyciklusos elágazási hiba-előrejelzési büntetést eredményez. A betöltő és tároló utasítások végrehajtása a harmadik fokozatban kezdődik, a fixpontos utasításoké pedig a negyedik fokozatban. A fixpontos utasítások végrehajtása a negyedik fokozatig késleltetett, hogy a betöltés eredményét operandusként használó fixpontos utasítások kiadhatók legyenek a betöltés utáni ciklusban. Az ötödik fokozatban történik az eredmények beírása a fixpontos regiszterfájlba.

A fixpontos regiszterfájl kilenc olvasási és négy írási porttal rendelkezik. Négy olvasóport látja el operandusokkal a két fixpontos végrehajtó egységet (az elágazáskezelő egységet egy fixpontos egység részének tekintették). További négy olvasóport operandusokat szolgáltat a két címgenerátornak. A MIPS IV ISA-ban bevezetett „alap(regiszter) + index(regiszter)” címzési mód miatt kettő helyett négy portra van szükség. Az R8000 ciklusonként legfeljebb egy fixpontos tárolást ad ki, és egy végső olvasási port szállítja a fixpontos tárolás adatait.

Két regiszterfájl-író portot használnak a két fixpontos funkcionális egység eredményeinek írására. Az R8000 ciklusonként két fixpontos betöltést ad ki, a másik két írási port pedig a fixpontos számok betöltési eredményeinek regiszterfájlba írására szolgál.

Az 1. szintű adat-gyorsítótár két redundáns tömbbe volt szervezve, amelyek mindegyike egy-egy olvasó- és íróporttal rendelkezik. A fixpontos tároló műveletek mindkét tömbbe írnak. Két betöltés párhuzamosan dolgozható fel, mindegyik tömbön egy.

A fixpontos funkcionális egységek két fixpontos egységből, egy eltoló egységből, egy szorzó egységből és két címgenerátor egységből állnak. A szorzó és osztó utasítások a szorzó-osztó egységben kerülnek végrehajtásra, ami nem futószalagos. Ennek eredményeként egy szorzó utasítás késleltetése 32 bites operandusok esetén négy ciklus, 64 bites operandusok esetén pedig hat ciklus. Az osztási műveletek késleltetése az eredményben lévő értékes számjegyek számától függ, így 21 és 73 ciklus között változik.

Betöltés és tárolás[szerkesztés]

A betöltések és a tárolások végrehajtása a harmadik futószalagfokozatban kezdődik. Az R8000 két címgeneráló egységgel (AGU) rendelkezik, amelyek a virtuális címeket számítják ki a betöltésekhez és a tároláshoz. A negyedik fokozatban a virtuális címeket egy kétportos TLB fordítja le fizikai címekre, ami 384 bejegyzést tartalmaz és háromutas csoport-asszociatív. A 16 KiB-os adat-gyorsítótár hozzáférése ugyanabban a ciklusban történik. Ez kétportos, és két 64 bites sínen keresztül érhető el. Ciklusonként két betöltést vagy egy tárolást és egy betöltést tud kiszolgálni. A gyorsítótárat nem védi paritásellenőrzés vagy hibajavító kód (ECC). Gyorsítótár-tévesztés (cache miss) esetén az adatokat az adatfolyam-gyorsítótárból (streaming cache) kell betölteni nyolc ciklusos büntetéssel (ciklusveszteséggel). A gyorsítótár virtuálisan indexelt, fizikailag címkézett, közvetlen leképzésű, sormérete 32 bájt, és átírást használ allokációs protokollal. Ha a betöltés tárgya az adat-gyorsítótárban van, az eredményt az ötödik fokozatban a fixpontos regiszterfájlba írja.

R8010[szerkesztés]

R8010 lapka

Az R8010 azokat a lebegőpontos utasításokat hajtja végre, amelyeket az R8000 utasítássora biztosít. Az utasítássor leválasztotta a lebegőpontos folyamatot a fixpontos futószalagról, megvalósítva a sorrenden kívüli végrehajtás korlátozott formáját azáltal, hogy lehetővé tette a lebegőpontos utasítások végrehajtását, ha lehetséges, az ugyanabból a csoportból származó fixpontos utasítások kiadása után vagy előtt. A futószalagok szét voltak választva, hogy csökkentsék az adatfolyam-gyorsítótár késleltetésének egy részét.

Tartalmazza a lebegőpontos regiszterfájlt, egy betöltési sort, egy tárolási sort, és két azonos lebegőpontos egységet. Minden utasítás futószalagos, kivéve az osztást és a négyzetgyökvonást. Az R8010 egy iteratív osztás- és négyzetgyök-algoritmust alkalmaz, ami a szorzó egységet használja a számítás fő részéhez, és megköveteli a futószalag leállítását a művelet ideje alatt.

Az aritmetikai utasítások az összehasonlítás kivételével négy ciklusos késleltetéssel rendelkeznek. Az egyszeres és kétszeres pontosságú osztások késleltetése 14, illetve 20 ciklus;[1] az egyszeres és kétszeres pontosságú négyzetgyökök késleltetése 14, illetve 23 ciklus.[3]

Az adatfolyam-gyorsítótár és a címke-RAM-ok[szerkesztés]

(Streaming cache és Tag RAMs)

Az adatfolyam-gyorsítótár egy külső 1–16 MiB méretű gyorsítótár, ami az R8000 L2 egyesített gyorsítótáraként és az R8010 L1 adat-gyorsítótáraként szolgál. Az R8000-ével megegyező órajelfrekvencián működik és a kereskedelemben kapható szinkron statikus RAM-okból épül fel.[1] Ezt a sémát a tartós lebegőpontos teljesítmény elérésére használták, amihez gyakori adathozzáférés szükséges. Egy kis, alacsony késleltetésű elsődleges gyorsítótár nem tartalmazna elég adatot, gyakoriak lennének a találati hibák, ami hosszú késleltetésű újratöltéseket tesz szükségessé, ami csökkenti a teljesítményt.

Az adatfolyam-gyorsítótár kétutas, átlapolt felépítésű. Két független (memória)bankja van, amelyek mindegyike páros vagy páratlan címekről származó adatokat tartalmaz. Ezért minden ciklusban két olvasást, két írást vagy egy olvasást és egy írást tud végrehajtani, feltéve, hogy a két hozzáférés külön bankhoz tartozik.[1][4] Mindegyik bank két 64 bites egyirányú sínen keresztül érhető el, az egyik az olvasáshoz, a másik pedig az íráshoz. Ezt a sémát a kétirányú sínek által megkövetelt átkapcsolási várakozás (bus turnover) elkerülésére használták. A sín átkapcsolás elkerülésével a gyorsítótár egy ciklusban kiolvasható, majd a következő ciklusban írható anélkül, az irány fordítására várakozó ciklust kellene beiktatni, így jobb teljesítményt eredményez.[4]

Az adatfolyam-gyorsítótár címkék két címke-RAM csipen találhatók, minden bank számára egy. Mindkét csip azonos adatokat tartalmaz. Mindegyik csip tartalmaz 1,189 Mbit gyorsítótár-címkét, a csipek négy tranzisztoros SRAM cellákkal vannak felépítve. A csipek 0,7 μm-es BiCMOS folyamattal készültek, két réteg poliszilíciummal és két szintű alumínium fémezéssel. A ciklusidő csökkentése érdekében BiCMOS áramköröket használtak a dekóderekben és a csip kombinált érzékelő erősítő és komparátor részeiben. Mindegyik címke-RAM 14,8 × 14,8 mm méretű, tokozása 155 tűs CPGA, disszipációja 3 W 75 MHz-en.[5] A gyorsítótár-címkék biztosítása mellett a címke-RAM-ok felelősek az adatfolyam-gyorsítótár négyutas csoport-asszociativitásáért is. A magas tűszám elkerülése érdekében, a gyorsítótár-címkék négyutas csoport-asszociatívak, és külön logika választja ki, hogy a keresés után melyik készlethez történjen hozzáférés, a csoport-asszociatív gyorsítótárak szokásos implementációja helyett.[1]

Az adatfolyam-gyorsítótárhoz való hozzáférés futószalagos, a késleltetés egy részének csökkentése érdekében. A futószalagnak öt fokozata van: az első fokozatban címek vannak kiküldve a címke-RAM-oknak, amelyek a második fokozatban érhetők el. A harmadik fokozatban a címke-RAM-ok jelei az SSRAM-okba terjednek. A negyedik fokozatban történik az SSRAM-ok elérése, és az ötödik fokozatban az adatok visszakerülnek az R8000 vagy R8010-be.

Fizikai jellemzők[szerkesztés]

Az R8000 csip 2,6 millió tranzisztort tartalmaz, mérete 17,34 × 17,30 mm (299,98 mm²). Az R8010 830 000 tranzisztort tartalmaz. A két csip összesen 3,43 millió tranzisztort tartalmaz. Mindkettőt a Toshiba gyártotta saját VHMOSIII folyamatával, ami egy 0,7 μm-es, három rétegű fém CMOS folyamat. Mindkettő 591 tűs CPGA tokozásba került. Mindkét csip 3,3 V-os tápellátást igényel. Az R8000 disszipációja 13 W 75 MHz-en.

Jegyzetek[szerkesztés]

  1. a b c d e Hsu 1994
  2. Dongarra 1994
  3. MIPS Technologies, Inc., 1994
  4. a b MIPS 1994
  5. Unekawa 1993

Fordítás[szerkesztés]

Ez a szócikk részben vagy egészben a R8000 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]

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

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