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]

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]

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]

Az első 29000-es processzor 1987-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.[5] Az Am29030-as modellben 8 kB, az Am29035-ösben 4 kB utasítás-cache volt.[6] Ó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.[7]

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[8]
  • 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

Jegyzetek[szerkesztés]

  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. Daniel, Mann. 1.3, Evaluating and Programming the 29K RISC Family. Advanced Micro Devices, 7. o (1995. augusztus 30.) „It was the first member of the family, introduced in 1987. 
  5. Mann, Chapter 1.5, p. 32
  6. Am2903x datasheet
  7. Microprocessor Report, AMD’s K5 Designed to Outrun Pentium, 1994-10-24, p.5, [2]
  8. Am29040 datasheet, http://datasheets.chipdb.org/AMD/29K/040_ds.pdf

Források[szerkesztés]

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

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