AMD Am29000

A Wikipédiából, a szabad enciklopédiából
AMD 29000 mikroprocesszor
AMD 29030.

Az AMD 29000, ill. gyakran egyszerűen csak 29k, egy az Advanced Micro Devices (AMD) által kifejlesztett és gyártott népszerű 32 bites RISC mikroprocesszor- és mikrokontroller-család volt az 1990-es évek elején. Egy ideig ez volt a legnépszerűbb RISC chip a piacon; széles körben használták különböző gyártók lézernyomtatókban. 1995 végén az AMD beszüntette a 29k fejlesztését, mivel ettől kezdve inkább a PC-s fejlesztésekre összpontosított. Ami megmaradt az AMD beágyazott eszközfejlesztő tevékenységéből, azt a beágyazott 186-os család, egy Intel 80186-os származék fejlesztésére alakították át. Ezután az AMD a forrásait majdnem teljes egészében a saját nagyteljesítményű asztali PC-kbe szánt x86 klónjainak fejlesztésére koncentrálta, amiben a legutolsó 29k-ban megvalósult ötletek és egyedi megoldások nagy részét az AMD K5-ös processzorban hasznosították.

Felépítés[szerkesztés | forrásszöveg szerkesztése]

A 29000 alapját ugyanaz a Berkeley RISC architektúra képezte, amiből a Sun SPARC és az Intel i960 is kifejlődött. Az összes Berkeley-architektúrából származó kialakításban megtalálható egy, az eljáráshívások kezelésének felgyorsítására szolgáló „trükk”, a regiszterablakok használata. Az alapelv az, hogy a nagyszámú regisztert veremként lehet használni; a lokális adatokat regiszterekbe töltik a hívásnál, és egyszerűen elhagyják vagy üresnek jelölik azokat a visszatérésnél. Az eljárások a visszatérő adatokat a „globális lapon” található regiszterekbe írják, ami a SPARC architektúra esetén a legelső 8 regiszter. Érdekes, hogy a konkurens, a Stanford Egyetem korai RISC megoldásának (MIPS) tervezői is megvizsgálták ezt a koncepciót, de úgy döntöttek, hogy a fejlett fordítóprogramok hatékonyabban ki tudják használni az általános célú regisztereket, mint a „bedrótozott” regiszterablakok, és az eltelt idő során a döntésük helyesnek bizonyult.

Az eredeti Berkeley design, a SPARC és az i960 processzoroknál is az ablakok kötött méretűek, ami azt jelenti, hogy a regiszterablak nagysága állandó, általában 8 regiszter méretű – pont ez a helyzet pl. a SPARC architektúránál. Ekkor egy szubrutin, ami csak egyetlen lokális változót használ, egy SPARC processzorban meghívásakor (mikor is az ablakváltást a hardver intézi, kikerülhetetlenül) továbbra is 8 regisztert foglal le, fölöslegesen pazarolva ezzel az erőforrásokat. A 29000 ebben jelentősen különbözik az elődeitől, mivel változó méretű ablakokat használ. Az előző példa egy 29000-es processzoron csak 2 regisztert használ, egyet a lokális változónak és egyet a visszatérési címnek. Az architektúrában emellett megnövelték a regiszterek számát is, ezáltal a procedurális verem számára 128, globális hozzáférésre további 64 regiszter áll rendelkezésre, szemben pl. a SPARC összesen 128 regiszterével, amelyből a globális regiszterek száma csak 8. Ezek az adottságok egy "félig okos" fordítóval kombinálva mindkét területen a legjobb eredményt hozták: gyors eljáráshívások és sok globális regiszter az általános feladatokra. A 29000 ráadásul a regiszterablakot kiterjeszti egy memóriában (azaz a cache-ban) helyet foglaló veremterülettel is. Mikor egy ablak betelik, a hívások által felhasznált regisztereket ki lehet írni a memóriába, és a szubrutin végetérésekor szükség szerint visszatölteni.

AMD 29040

Általában elmondható, hogy a 29000 regiszterhasználata lényegesen fejlettebb, mint a konkurens Berkeley-féle processzoroké.

További jellemzők[szerkesztés | forrásszöveg szerkesztése]

Az Am29000 processzornak 16,20,25,33 és később 40 MHz órajelekkel működő változatai jelentek meg. A processzor három busszal rendelkezik: külön buszok szolgálnak az utasítások, címek és adatok számára.[1] Az Am29050 típus rendelkezett integrált FPU-val is és egészértékű hardveres szorzóutasítással is, míg a 29000 és 29005 modellekben az integer szorzást és osztást szoftveresen lehetett elvégezni.

Az AMD állítása szerint egy 25 MHz-es órajelű processzor 25 MIPS csúcsteljesítményre és 17 MIPS tartós, 33 MHz-en 23 MIPS tartós teljesítményre volt képes, az Am29005 16 MHz-en 9 MIPS tartós teljesítmény.[2]

Az Am29000 egy javított RISC kialakítás, amiben a RISC elveket más architektúrákra jellemző elemekkel kombinálták az elérhető legnagyobb teljesítmény érdekében. A kezdetben 3-, később 2-buszos felépítés a Harvard-architektúra jellemzőit mutatja.

A processzor 4-fokozatú csővezetékkel, 512 bájtos ugrási cím cache-el (branch target cache, BTC) és a chipbe integrált memóriakezelő egységgel rendelkezett.[2][3] Támogatja a little-endian és big-endian bájtsorrendet is, erre egy processzor-jelzőbit értéke szolgál. Adattípusok: 64 bites (duplaszó), 32-, 16- és 8 bites előjeles és előjel nélküli értékek, logikai értékek (TRUE, FALSE) valamint az IEEE P754 szerinti lebegőpontos formátumokat támogat. Minden utasítás 32 bites, az utasítások 3 címűek, a végrehajtás csővezetékes. 192 általános célú regisztere van, amelyekből 64 globális, 128 lokális regiszter; a regiszterek címzése így megoldható 8 biten, és a 32 bites utasítások így 3 regisztert is képesek megcímezni. A lokális regisztertömböt hívási veremként lehet használni. Az általános regiszterek mellett a 29K processzoroknak nagyszámú speciális regisztere is van. A címezhető virtuális tárterület 4 GB.

A 29K processzorok 112 utasítással rendelkeznek, ezek 9 csoportra oszthatók: egész aritmetikai, összehasonlító, logikai, eltolási, adatmozgató, konstans, lebegőpontos, ugró és kisegítő utasításokra. Minden utasítás 32 bites, négy 8 bites mezőt tartalmaz, amiből az első az utasításkód, a többi három regiszter- vagy konstans operandus lehet. A teljes utasításkészlet megtalálható a leírásokban, pl. [3].

A processzorcsalád tagjai[szerkesztés | forrásszöveg szerkesztése]

Az első 29000-es processzor 1997-ben készült el.[4] Ebben volt memóriakezelő egység (MMU), de a lebegőpontos számításokat egy külső lebegőpontos koprocesszor végezte, az Am29027.

Az Am29005 egy csökkentett teljesítményű és olcsóbb modell volt, 16 MHz-es órajellel; nem volt benne pl. utasítás-cache és csipre integrált MMU.

Az 1991-ben megjelent Am29030-as volt az első tagja a 2-buszos felépítésű sorozatnak. A 2-buszos architektúrában az adat- és utasításbuszok feladatát egy busz vette át, a BTC helyét átvette az utasítás cache.[4] Az Am29030-as modellben 8 kB, az Am29035-ösben 4 kB utasítás-cache volt.[5] Órajeleik: Am29030: 20, 25 és 33 Mhz, Am29035: 16 MHz.

Az Am29040-es szilíciumlapka csodálatos fényképe

Az Am29040 modell 33, 40 és 50 MHz-es órajelekkel jelent meg, tartós teljesítménye 66.8 MIPS 50 MHz-es órajelnél. Ebben a modellben a 8 kB-os utasítás-cache mellett megjelent egy 4 kB-os adat-cache; tartalmazott egy 3-ciklusos 32 bites szorzó-összeadó (multiply accumulate, MAC) egységet, valamint egy 32 bejegyzéses csipre integrált TLB-t (translation lookaside buffer).

Az általános célú végleges változat az Am29050 volt. A 29050 már sokkal jobb lebegőpontos teljesítményt nyújtott, mint a korábbi 29k mikroprocesszorok, a csipbe integrált lebegőpontos egységnek köszönhetően.

A 29050 terveiből igen sokat felhasználtak az AMD K5-ös sorozatában, amelyek már x86-kompatibilis processzorok. Az FPU változatlanul került felhasználásra, a mag további részei is bekerültek a kialakításba valamint egy összetett mikrokód, amely az x86-os utasításokat menet közben 29k-típusú utasításokra fordítja.[6]

A 29K család tagjai:

  • Am29000 – "Streamlined Instruction Microprocessor", alapmodell, 3 buszos
  • Am29005 – kisebb teljesítményű, olcsóbb modell, 16 MHz-es órajellel, 3 buszos
  • Am29027 – aritmetikai koprocesszor
  • Am29030 – RISC mikroprocesszor, 8 kB utasítás-cache, 2 buszos
  • Am29035 – RISC mikroprocesszor, 4 kB utasítás-cache, 2 buszos
  • Am29040 – RISC mikroprocesszor, 8 kB utasítás- és 4 kB adat-cache, 2 buszos[7]
  • Am29050 – "Streamlined Instruction Microprocessor", csipre integrált aritmetikai egységgel, 3 buszos
  • Am29200 – egycsipes 32 bites RISC mikrokontroller
  • Am29205 – RISC mikrokontroller 16 bites külső interfésszel

Hivatkozások[szerkesztés | forrásszöveg szerkesztése]

  1. cpushack.com, Am29k
  2. ^ a b Am29000 and Am29005 datasheet, AMD, 1993.
  3. Detailed Architectural Survey, Chalmers University, 1990, [1], Chapter 2.3, p.33.
  4. ^ a b Daniel, Mann. Evaluating and Programming the 29K RISC Family. Advanced Micro Devices, 7. o (1995. október 12.)  Chapter 1.3, page 7.: It was the first member of the family, introduced in 1987.
  5. Am2903x datasheet
  6. Microprocessor Report, AMD’s K5 Designed to Outrun Pentium, 1994-10-24, p.5, [2]
  7. Am29040 datasheet, http://datasheets.chipdb.org/AMD/29K/040_ds.pdf

Lásd még[szerkesztés | forrásszöveg szerkesztése]

Külső hivatkozások[szerkesztés | forrásszöveg szerkesztése]

Commons
A Wikimédia Commons tartalmaz AMD Am29000 témájú médiaállományokat.