AMD Am29000
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.
AMD Am29000 | |
AMD 29000 mikroprocesszor | |
A Wikimédia Commons tartalmaz AMD Am29000 témájú médiaállományokat. |
Felépítés
szerkesztésA 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ó „fogás” ill. technika, 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 „mérsékelten 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 gyorsítótárban, cache-ben) 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.
Általában elmondható, hogy a 29000 regiszterhasználata lényegesen fejlettebb, mint a konkurens Berkeley-féle processzoroké.
További jellemzők
szerkesztésAz 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ú futószalaggal, 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 futószalagos. 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 GiB.
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ésAz 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 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
-
Am29000
-
Am29030
-
Am29040
-
Am29050
Jegyzetek
szerkesztés- ↑ cpushack.com, Am29k
- ↑ a b Am29000 and Am29005 datasheet, AMD, 1993.
- ↑ Detailed Architectural Survey, Chalmers University, 1990, [1], Chapter 2.3, p.33.
- ↑ Daniel, Mann. 1.3, Evaluating and Programming the 29K RISC Family. Advanced Micro Devices, 7. o. (1995. november 24.) „It was the first member of the family, introduced in 1987.”
- ↑ Mann, Chapter 1.5, p. 32
- ↑ Am2903x datasheet
- ↑ Microprocessor Report, AMD’s K5 Designed to Outrun Pentium, 1994-10-24, p.5, [2]
- ↑ Am29040 datasheet, http://datasheets.chipdb.org/AMD/29K/040_ds.pdf
Források
szerkesztés- Mann, Daniel: Evaluating and Programming the 29K RISC Family. Advanced Micro Devices, 1995. [2008. január 4-i dátummal az eredetiből archiválva]. A 29K™ RISC család felépítéséről és programozásáról.
- AMD 29k (Streamlined Instruction Processor) ID Guide