Az Alpha, eredeti elnevezésén Alpha AXP, egy 64 bites RISC utasításkészlet-architektúra (ISA) a Digital Equipment Corporation (DEC) fejlesztésében, amelyet arra terveztek, hogy felváltsa a 32 bites VAX CISC ISA-t és annak megvalósításait. Az Alpha architektúrájú mikroprocesszorokat eredetileg a DEC fejlesztette ki és gyártotta. Ezeket a processzorokat elsősorban a DEC munkaállomásaiban és szervereiben alkalmazták, amely történetesen a cég közép és felső kategóriájú termékvonalának alapját alkotta. Néhány másik cég is forgalmazott Alpha processzoros rendszereket, beleértve a PC alaktényezőjű alaplapokat is.

Alpha
Tervező Digital Equipment Corporation
Bitek száma 64 bites
Bevezetés 1992
Típus RISC
Utasításkészlet fix hosszú[1]
Bájtsorrend kettős[2]
Utasításkészlet kiterjesztések Byte/Word Extension (BWX), Square-root and Floating-point Convert Extension (FIX), Count Extension (CIX), Motion Video Instructions (MVI)
Nyílt igen[3]
Regiszterek
Általános célú 32
Lebegőpontos 32
A DEC Alpha AXP 21064 mikroprocesszor lapkájának mikrofotója
A DEC Alpha AXP 21064 tokozása
Alpha AXP 21064 mag egy névjegykártyán, néhány adattal
Compaq Alpha 21264C.
Részekre osztott korai Alpha prototípus többcsipes modulon

Az Alpha processzort támogató operációs rendszerek a következők: OpenVMS (korábban OpenVMS AXP néven volt ismert), Tru64 Unix (korábban: DEC OSF/1 AXP és Digital UNIX), Windows NT (32 bites emulációs réteget alkalmaz, megszűnt a 4.0 SP6 kiadás után, és a Windows 2000 RC1),[4] GNU/Linux (Debian GNU/Linux, SUSE Linux,[5] Gentoo Linux és Red Hat Linux), BSD UNIX (NetBSD, OpenBSD és FreeBSD egészen a 6.x-ig), valamint az L4Ka::Pistachio kernel.

Az Alpha architektúrát 1998-ban, a DEC legtöbb részével együtt, eladták a Compaq-nak. A Compaq, amely ekkor már az Intel ügyfele volt, elhatározta, hogy kivezeti a piacról az Alpha processzort és az új fejlesztésű Hewlett-Packard/Intel Itanium architektúrát vezeti be, ezért 2001-ben eladta a teljes Alpha szellemi tulajdont az Intelnek, amivel gyakorlatilag meg is szüntette a terméket. A Compaq még ugyanebben az évben a Hewlett-Packard tulajdonába került, amely 2004-ig folytatta a meglévő termékvonal fejlesztését, és ígéretet tett az Alpha-alapú termékek további forgalmazására és a támogatás fenntartására, nagyrészt a meglévő vevőkörnek, egészen 2006 októberéig. Ezt később meghosszabbította 2007 áprilisáig.[6]

Történet

szerkesztés

Az Alpha egy korábbi RISC projektből született, a PRISM nevű fejlesztésből, amely maga is több másik tervezet végeredménye. A PRISM-et egy rugalmas rendszernek tervezték, amely mind a Unix-szerű alkalmazásokat, mind a Digital meglévő VAX környezetből származó VMS programjait is támogatta, egy átalakítás után. A VAX architektúra megfelelő teljesítményű támogatása érdekében a PRISM felhasználó által programozható mikrokódot is tartalmazott, ez volt az Epicode. Az Epicode lehetővé tette a VAX utasításkészlet kulcsfontosságú részeinek közvetlenül a PRISM alá kódolását, ami nagymértékben megnövelte a teljesítményt. Egy új, Unix-szerű operációs rendszer, a Mica, natív módon futtatta a korábbi alkalmazásokat, a VMS emulációjával párhuzamosan (egyidőben).

A fejlesztés ideje alatt a Palo Alto tervezőcsapat egy kizárólag Unix rendszerű munkaállomáson dolgozott, amely a kezdeti elképzelések szerint a PRISM-en alapult volna. A munkaállomás fejlesztése azonban jelentősen lekörözte a PRISM fejlesztését, és a mérnökök azt javasolták, hogy a gépeket inkább MIPS R2000-es processzorral bocsássák ki, amivel jelentősen előrébb hozták volna a kibocsátási dátumot. A DEC vezetősége kételkedett abban, hogy egy újabb számítógépes architektúrát kéne bevezetniük, amivel talán a saját jól bevált VAX és DECstation termékeiket is veszélyeztetnék, így aztán leállították a PRISM projektet 1988-ban.

Mire idáig jutottak (a leállításhoz), a második generációs RISC csipek (mint pl. az újabb SPARC architektúra) már sokkal jobb ár-érték arányt nyújtottak, mint a VAX termékcsalád. Tisztán látszott, hogy ezek harmadik generációja már nem csak az árában, hanem minden egyéb területen is felülmúlja a VAX-okat a jövőben.

Egy újabb kutatást indítottak annak kiderítésére, hogy lehetséges-e egy olyan új RISC architektúra definiálása, amely közvetlenül képes támogatni a VMS operációs rendszert. Az új kialakításban felhasználták az alapvető PRISM koncepciókat, de azt újrahangolták, úgy építették fel, hogy lehetővé tegye a VMS és a VMS alá írt programok futását, elfogadható sebességen és mindenféle konverzió nélkül. Ezenkívül eldöntötték, hogy a kialakítás megvalósítása teljes mértékben 64 bites lesz, a PRISM 32 bites felépítésével szemben – ez egy olyan lépés, amelyet a főbb RISC gyártók mind megtettek. Az architektúra az Alpha nevet kapta. Az Alpha utasításkészlet fő tervezői Richard L. Sites és Richard T. Witek voltak. A PRISM Epicode megfelelője az Alpha architektúrában a PALcode (Privileged Architecture Library code) lett, amely olyan, speciális üzemmódban futó gépi kódú funkciókat tartalmaz, amikkel egyedi, alacsony szintű platform- és processzor-specifikus funkciókat lehet elérni, pl. a gyorsítótár-regiszterekhez való hozzáférés, TLB tévesztés kezelése, stb. A PALcode valahol a mikrokód és a hardveremulátor közötti szerepben áll.

Az Alpha legnagyobb hozzájárulása a mikroprocesszorgyártó iparhoz, valamint a teljesítményének fő forrása nem is az architektúra, hanem inkább annak megvalósításában keresendő. A maga korában, és jelenleg is, a mikrocsipgyártást automatizált tervező- és szerkesztőeszközök uralják. A Digital csiptervezői továbbra is a kifinomult kézi áramkörtervezési módszertant követték, hogy úrrá legyenek a rendkívül bonyolult és összetett VAX architektúrán. Az Alpha csipek megmutatták, hogy a kézi tervezés egy egyszerűbb, tisztább architektúrában lehetővé teszi sokkal magasabb működési frekvenciák elérését, mint ami az automatizált tervezőrendszerekkel elérhető. Ezek a csipek az egyedi áramkörtervezés reneszánszát hozták vissza a mikroprocesszor-tervezők közösségébe.

Az Alpha processzorok kezdetben a DECchip 21x64 sorozat elemeit alkották. A „DECchip” elnevezés az 1990-es évek közepén „Alpha”-ra változott. A jelölés első két számjegye, a „21” a 21. századot jelenti, az utolsó két szám pedig a 64 bites konstrukciót. Az Alphákat kezdettől 64 bitesnek tervezték, nem volt 32 bites verzió. A középső számjegy az Alpha architektúra generációját mutatja. Cégen belül az Alpha processzorok saját, „EV” kezdetű jelölést kaptak; az „EV” hivatalosan az „Extended VAX” rövidítése, de később megjelent ennek humoros etimológiája is, az „Electric Vlasic” (elektromos ~), ami az amerikai Vlasic Pickles savanyúság nevéből származik és a Western Research Lab. Electric Pickle (kb. elektromos savanyúság) kísérletére utal.[7]

Továbbfejlesztett modellek

szerkesztés

Az Alpha csipek első néhány generációja a leginnovatívabb fejlesztések között volt a maga idejében – ebben a processzorsorozatban igen sok újítást vezettek be. Az első változat, az Alpha 21064 avagy EV4, volt az első CMOS mikroprocesszor, amelynek órajele vetekedett a nagyobb teljesítményű ECL mini- és nagygépekével. A második, a 21164 vagy EV5 modell volt az első mikroprocesszor, amelynél megjelent a csipbe integrált nagyméretű másodlagos gyorsítótár. A harmadik, a 21264 vagy EV6, volt az első olyan mikroprocesszor, amelyben a magas működési frekvenciát a bonyolultabb sorrenden kívüli végrehajtású mikroarchitektúrával párosították. A 21364 vagy EV7 volt az első nagy teljesítményű processzor, amelyik csipbe épített memóriavezérlővel rendelkezett. A gyártásba nem került 21464 vagy EV8 lett volna az első szimultán többszálas működésű mikroprocesszor, de ennek fejlesztését leállították a DEC Compaq általi felvásárlásakor.

A Tarantula kutatási projekt, amelyet feltehetőleg az EV9 jelölést kapta volna, lett volna az első vektoros számítóegységgel ellátott Alpha processzor.[8][9]

Egy DEC bennfenteseknek tulajdonított kitartó szóbeszéd szerint a processzort jelölő AXP címke a DEC jogi osztályának találmánya volt, amely még mindig a VAX védjegy kudarca miatt bűnhődött (a VAX egy porszívómárka is volt, amely ellen a DEC pert vesztett). Hosszas kutatás után úgy találták, hogy az „AXP” betűhármast nem használja senki és nem is tart rá igényt. A számítógép-ipar berkein belül ebből azt a tréfát faragták, hogy az AXP az „Almost eXactly PRISM”, tehát a „majdnem pontosan PRISM” rövidítése.

Tervezési elvek

szerkesztés

Az Alpha architektúrát eleve nagy teljesítményű konstrukciónak tervezték. A Digital úgy számított, hogy az architektúra ezerszeres teljesítménynövekedést fog támogatni az elkövetkező huszonöt évben. Ennek biztosítása céljából eltávolítottak minden olyan architekturális jellemzőt, amely akadályozta volna a többszörös utasításkibocsájtást, lassította volna az órajelet vagy a többprocesszoros végrehajtást. Ennek eredménye, hogy az Alphában nincsenek:

  • késleltetési rések (elágazási késleltetési rések),
  • elnyomott utasítások,
  • bájtos betöltő vagy tároló utasítások (bár ezeket később hozzáadták a Byte Word Extensions (BWX) bővítményben).

Állapotkódok

szerkesztés

Az Alphában nincsenek állapotkódok az integer utasításokhoz, amiatt, hogy elkerüljék az állapotregiszterrel együtt járó lehetséges szűk keresztmetszetet. A túlcsordulást okozó utasítások, például egy összeadás, amelynél az eredmény nem fér el 64 biten, beírják a 32 vagy 64 legkisebb helyiértékű bitet a célregiszterbe. Az átvitelbit számításához az előjel nélküli összehasonlítások használhatók. Két érték összeadása után, ha az (előjel nélkül vett) összeg kisebb mindkét operandusnál, akkor átvitel történt a legmagasabb helyiértékű bitről. Ekkor egy átmeneti regiszter értéke 1-re állítható, amely jelzi az állapotot, vagy hozzáadható a további magasabb helyiértéken álló eredményhez.[10]

Regiszterek

szerkesztés
A DEC Alpha regiszterei
63 . . . 47 . . . 31 . . . 15 . . . 01 00 (bitpozíció)
Általános célú regiszterek
R0 R0
R1 R1
R2 R2
 
 
 
R29 R29
R30 R30
 R31 (zérus) R31, mindig nulla
Lebegőpontos regiszterek[r 1]
F0 F0
F1 F1
F2 F2
 
 
 
F29 F29
F30 F30
 F31 (zérus) F31, mindig nulla
Programszámláló
 PC 0 0 Program Counter
Vezérlőregiszterek
LR0 Lock Register 0
LR1 Lock Register 1
FPCR FP Control Register
  1. Ezeket F-fel jelölik: floating-point registers

Az architektúra 32 egész (integer) regisztert és 32 lebegőpontos regisztert definiál, a programszámláló, két zárolási segédregiszter és egy lebegőpontos vezérlőregiszter (floating-point control register, FPCR) mellett. A specifikáció megenged opcionális regisztereket is, amelyeket csak akkor alakítanak ki, ha a megvalósításnak szüksége van azokra. Végül definiálja a PALcode regisztereit.

Az egészértékű regiszterek jelölése R0-tól R31-ig tart, a lebegőpontos regisztereket F0 – F31 jelöli. Az R31 és F31 regiszterek értéke a hardveresen megvalósított nulla, az ezekbe való írást a processzor figyelmen kívül hagyja. A Digital mérlegelte az egyesített regiszterfájl használatát, azonban a kettévágott regiszterfájl használatát jobbnak ítélték, mivel az a kétcsipes kialakításokban megengedte, hogy mindkét csipbe külön regiszterfájl kerüljön és lehetővé tette a csak egész típusú aritmetikát használó megvalósításokban a lebegőpontos regisztertár elhagyását. Úgy találták, hogy a kettéosztott regiszterfájl jobban alkalmazkodik a többszörös utasításkibocsájtáshoz, a korlátozott számú írási és olvasási portok miatt. A regiszterek száma esetén is megvizsgálták, hogy 32 vagy 64 regiszter kialakítása lenne előnyösebb a regiszterfájlokban, és 32 regiszter mellett döntöttek, mert ez kisebb lapkaterületet foglal el, és nagyobb órajellel használható. A regiszterek száma nem befolyásolta túlzottan a teljesítményt és a jövőbeli feltételezett növekedést illető döntéseket, mivel a 32 regiszter is képes legalább nyolcutas utasításkibocsájtás fenntartására.

A programszámláló (PC) egy olyan 64 bites regiszter, amely hosszúszó-határra igazított virtuális bájt címeket tartalmaz, ami azt jelenti, hogy a programszámláló legalsó két bitje mindig nulla, tehát csak néggyel osztható című bájtokat címezhet a memóriában. A PC értéke a betöltött utasítás dekódolása után néggyel növekszik, így ezután a következő utasítás címét tartalmazza. A zárolásjelző és a zárolt fizikai címregiszter a többprocesszoros működést támogatja, ezeket a load-locked és a store-conditional utasítások használják. A lebegőpontos vezérlőregiszter (floating-point control regiszter, FPCR) az architektúra által definiált 64 bites regiszter, amely az Alpha megvalósításoknak az IEEE 754-kompatibilis lebegőpontos hardverekkel való használatát célozza.

Adattípusok

szerkesztés

Az Alpha architektúrában a következő adategységeket definiálták: a bájt 8 bites, a szó 16 bites, a hosszúszó (longword) 32 bites, a négyszó (quadword) 64 bites és a nyolcszó (octaword) 128 bites adatot jelöl.

Az Alpha architektúra eredetileg hat adattípust határozott meg:

  • Négyszó (quadword) 64 bites egész (integer)
  • Hosszúszó (longword) 32 bites egész (integer)
  • IEEE T-lebegőpontos – duplapontos, 64 bites
  • IEEE S-lebegőpontos – egyszeres pontosságú, 32 bites

A 32 bites VAX architektúrával való kompatibilitás fenntartása érdekében két VAX által definiált adattípust is magában foglal:

  • VAX G-lebegőpontos – duplapontos, 64 bites
  • VAX F-lebegőpontos – egyszeres pontosságú, 32 bites

Az Alphának volt tartaléka az utasításkészlet jövőbeli, 128 bites adattípusokra való kiterjesztésére is.

A memória

szerkesztés

Az Alpha architektúra 64 bites lineáris virtuális címteret használ, memóriaszegmentáció nélkül. A megvalósításokban lehetséges kisebb virtuális címtér megvalósítása is, ám ennek legalább 43 bitesnek kell lennie. Bár a nem használt bitek nincsenek a hardverben, pl. a TLB-ben megvalósítva, az architektúra megköveteli az érintett címbitek nulla értékének ellenőrzését az implementációkban, a szoftverkompatibilitás fenntartása érdekében a nagyobb vagy teljes virtuális címteret megvalósító implementációkkal.

Utasításformátumok

szerkesztés
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 Típus
Opkód Ra Rb Nem használt 0 Funkció Rc Egész művelet (operate)
Opkód Ra Literál 1 Funkció Rc Egész literál
Opkód Ra Rb Funkció Rc Lebegőpontos művelet
Opkód Ra Rb Eltolás Memória formátum
Opkód Ra Eltolás Elágazás formátum
Opkód Funkció CALL_PAL formátum

Az Alpha ISA utasításai mind rögzített hosszúak, 32 bitesek. Hat utasításformátuma van.

Az egész művelet (integer operate) formátumot az egész / fixpontos utasítások használják. Ebben egy 6 bites opkódmező található, amelyet az Ra mező követ: ez az első operandus regiszterét tartalmazza, majd az Rb mező, amely a második operandus regiszterét határozza meg. Ez után egy 3 bites mező áll, amely nem használt és fenntartott. A következő 1 bites mezőben „0” áll, amely ennek a formátumnak az „egész literál” formátumtól való megkülönböztetésére szolgál. Ez után egy 7 bites funkciómező áll, amely az opkóddal együtt a művelet meghatározására szolgál. Az utolsó mező az Rc mező, amely azt a regisztert határozza meg, amelybe a művelet eredménye kerül. A regisztermezők 5 bitesek, amely 32 regiszter megkülönböztetését teszi lehetővé.

Az egész literál (integer literal) formátumot szintén az egész utasítások használják, csak az egyik operandus nem regiszter, hanem egy közvetlen érték (literál). A formátum hasonlít az előzőre, azzal a különbséggel, hogy az 50 bites Rb és a 3 bites fenntartott érték által elfoglalt mezőben egy 8 bites literális érték ill. konstans áll, amelyet a processzor 64 bites operandussá egészít ki a vezető nullák hozzáadásával.

A lebegőpontos művelet formátumot a lebegőpontos utasítások használják. Hasonlít az egész művelet formátumára, csak a funkciómező 11 bites, ami a literálbit és a fenntartott mezők helyére is kiterjed.

A memória formátumot a betöltő és kiíró utasítások használják leginkább. Az opkód mező itt is 6 bites, ezt követi két 5 bites mező, amely az utasításban felhasznált Ra és Rb regisztereket határozza meg, és végül egy 16 bites közvetlen érték, az eltolás.

Az elágazó utasítások 6 bites opkódot, az 5 bites Ra mezőt és 21 bites eltolás mezőt tartalmaznak. Az Ra mező a feltételes elágazás utasítások által tesztelt regisztert határozza meg, és a feltétel teljesülése esetén a programszámlálóhoz hozzáadódik az eltolásmező értéke. Az eltolásmező egy előjeles egész, pozitív érték esetén a programszámláló növekszik, negatív érték esetén pedig csökken, ha bekövetkezik az elágazás. Az elágazások tehát ±1 Mi utasítást érhetnek el, azaz ±4 MiB memórián belül lehetnek. A nagy elágazási tartomány az architektúra progresszív célkitűzéseinek egyik eleme.

A CALL_PAL formátumot a CALL_PAL utasítás használja, amely a PALcode szubrutinok hívására szolgál. Ez a formátum megtartotta az opkód mezőt, de a fennmaradó 26 biten csak egyetlen funkciókód áll, amely a PAL szubrutint meghatározó egész szám.

Utasításkészlet

szerkesztés

Vezérlőutasítások

szerkesztés

A programvezérlő utasítások csoportját a feltétel nélküli és feltételes elágazások, valamint az ugróutasítások alkotják. A feltétel nélküli és feltételes elágazási utasítások az elágazási utasítás formátumot, míg az ugróutasítások a memória formátumot használják.

A feltételes elágazások azt ellenőrzik, hogy egy regiszter legkisebb helyiértékű bitje be van-e állítva vagy sem, vagy egy regiszter tartalmát előjeles négyszóként nullával hasonlítják össze, és elágaztatják a programot, ha a vizsgált feltétel teljesül. A feltétel a regiszter nullával való összehasonlítása esetén lehet egyenlőség, nem egyenlőség, kisebb, kisebb és egyenlő, nagyobb és egyenlő vagy nagyobb (mint nulla). Az elágazási célcímet úgy számítja ki a processzor, hogy hosszúszóra igazítja és előjelkiterjesztést végez a 21 bites eltoláson, majd az értéket hozzáadja az elágazási utasítást követő utasítás címéhez.

A feltétel nélküli elágazások új értéket írnak a programszámlálóba, amely a feltételes elágazásoknál leírt módszerrel számított célcím. Ezek az utasítások a feltétlen elágazást követő utasítás címét egy regiszterbe írják. Két ilyen utasítás van, és csak annyiban különböznek egymástól, hogy az elágazásjósló hardvernek más tippet (hint) adnak .

A processzornak négy ugró utasítása van. Ezek mind ugyanazt a műveletet végzik: elmentik az ugrást követő utasítás címét és a programszámlálóba írják az új címet egy regiszterből. Ezek szintén csak az elágazásjósló hardvernek adott tippekben különböznek. A tippeket a fel nem használt eltolási részen tárolja az utasítás.

Egész aritmetika

szerkesztés

Az egész aritmetikai utasítások az összeadás, szorzás és kivonás műveleteket végzik hosszúszavakon és négyszavakon (32 és 64 bites értékeken), valamint a négyszavas értékek összehasonlítását. Hiányoznak az osztást megvalósító utasítások, mivel a tervezők úgy vélték, hogy az osztás hardveres megvalósítása ellentétben áll a kialakítás egyszerűségével. A megszokott összeadási és kivonási utasítások mellett az architektúrában ezeknek vannak úgynevezett „skálázott” változatai is Ezek a változatok a második operandus értékét balra tolják két vagy három bittel és az összeadást vagy kivonást az eltolt értékkel végzik el. A multiply longword és multiply quadword (szorzás hosszúszóval, négyszóval) utasítások a 64 vagy 128 bites eredmény alacsonyabb helyiértékű 32 vagy 64 itjét írják az eredményregiszterbe. A magasabb helyiértékű fél megszerzése is szükséges, erre szolgál az unsigned multiply quadword high (UMULH, előjel nélküli szorzás négyszó magas felével) utasítás. Az UMULH a többszörös pontosságú számolás és az osztó algoritmusok megvalósítására szolgál. Az utasítás ötlete (külön szorzóutasítás, amelyik az eredmény magasabb helyiértékű felét adja vissza) a PRISM-ből származik.

A hosszúszavakon operáló utasítások nem veszik figyelembe a regiszter magas helyiértékű felét és a 32 bites eredményt előjelkiterjesztéssel alakítják át a célregiszterbe való írás előtt. Alapértelmezésben az összeadás, szorzás, kivonás utasítások, az UMULH és az összeadás/kivonás skálázott változatainak kivételével, nem generálnak megszakítást túlcsordulás esetén (azt nem csapdázzák). Ezt a funkcionalitást az esetre külön túlcsordulás-detektáló és csapdázó utasítások szolgálnak.

Az összehasonlító utasítások két regiszter értékét vagy egy regisztert és egy közvetlen értéket hasonlítanak össze, és 1-et írnak a célregiszterbe, ha a vizsgált feltétel teljesül, 0-t ha nem. A feltétel lehet egyenlőség, nem egyenlőség, kisebb vagy egyenlő, és kisebb. Az utolsó két feltételt vizsgáló utasítások kivételével a vizsgálat lehet előjeles vagy előjel nélküli.

Az egész aritmetikai utasítások az „egész művelet” utasításformátumot használják.

Logikai és léptető műveletek

szerkesztés

A logikai utasítások közé tartoznak a bitenkénti logikai műveleteket végző utasítások és az egész regiszterek között feltételes mozgatását végző utasítások. A bitenkénti logikai utasításik AND, NAND, NOR, OR, XNOR és XOR műveleteket végeznek két regiszter között, vagy egy regiszter és egy közvetlen érték között. A feltételes mozgató utasítások vizsgálják egy regiszter értékét (előjeles négyszóként összehasonlítják nullával) és mozgatják az adatot, ha a megadott feltétel teljesül. A feltétel lehet egyenlőség, nem egyenlőség, kisebb vagy egyenlő, kisebb, nagyobb vagy egyenlő, és nagyobb. A léptetőutasítások (shift) aritmetikai jobbra léptetést, valamint logikai balra és jobbra léptetést végeznek. A léptetések számát egy regiszter vagy egy közvetlen érték adja meg. A logikai és léptető műveletek az „egész művelet” utasításformátumban állnak.

Kiterjesztések

szerkesztés

Bájt és szó kiterjesztés (Byte-Word Extensions, BWX)

szerkesztés

Az Alpha későbbi verziói már tartalmazták a bájt és szó kiterjesztéseket, ami 8 bites és 16 bites adatokat manipuláló utasításcsoport. Ezeket az utasításokat a 21164A (EV56) processzorban vezették be és jelen vannak az összes rákövetkező modellben. Az utasítások olyan műveleteket végeznek, amelyeket korábban csak több utasítással lehetett megvalósítani; ez növelte a kódsűrűséget és a hatékonyságot bizonyos alkalmazásokban. A BWX segítette az x86-os gépi kód emulálását és megkönnyítette az eszközmeghajtók írását is.[11]

mnemonik utasítás
LDBU Load Zero-Extended Byte from Memory to Register
LDWU Load Zero-Extended Word from Memory to Register
SEXTB Sign Extend Byte
SEXTW Sign Extend Word
STB Store Byte from Register to Memory
STW Store Word from Register to Memory

Mozgókép-utasítások (Motion Video Instructions, MVI)

szerkesztés

A Motion Video Instructions (MVI) egy utasításkészlet-kiterjesztés az Alpha ISA-hoz, amely SIMD műveletek végzésére szolgáló utasításokat adott az utasításkészlethez.[12]

Az MVI-t megvalósító Alpha processzorok időrendi sorrendben: az Alpha 21164PC (PCA56 és PCA57), az Alpha 21264 (EV6) és az Alpha 21364 (EV7). A korabeli egyéb SIMD utasításkészletektől – ilyenek pl. a MIPS MDMX vagy a Sun Microsystems Visual Instruction Set kiterjesztései – eltérően az MVI egy egyszerű utasításkészlet, néhány utasításból áll, amik csak a meglévő regiszterekben tárolt egész típusú adatokon végeznek műveleteket.

Az MVI két okból volt egyszerű. Először, a Digital eldöntötte, hogy az Alpha 21164 már eleve képes lesz a DVD szoftveres dekódolására, ezért erre a feladatra nem kell hardveresen felkészíteni. A teljesítmény azonban már nem volt elég az MPEG-2 dekódolására. A második ok, hogy fenn akarták tartani a gyors ciklusidőket a megvalósításokban. Sok utasítás hozzáadása bonyolultabbá tette és megnövelte volna az utasításdekódoló logikát, ami csökkentette volna az implementáció órajelfrekvenciáját.

Az MVI 13 utasításból áll:

mnemonik utasítás
MAXSB8 Vector Signed Byte Maximum
MAXSW4 Vector Signed Word Maximum
MAXUB8 Vector Unsigned Byte Maximum
MAXUW4 Vector Unsigned Word Maximum
MINSB8 Vector Signed Byte Minimum
MINSW4 Vector Signed Word Minimum
MINUB8 Vector Unsigned Byte Minimum
MINUW4 Vector Unsigned Word Minimum
PERR Pixel Error
PKLB Pack Longwords to Bytes
PKWB Pack Words to Bytes
UNPKBL Unpack Bytes to Longwords
UNPKBW Unpack Bytes to Words


Lebegőpontos kiterjesztés (Floating-point Extensions, FIX)

szerkesztés

A lebegőpontos kiterjesztés (Floating-point extensions, FIX) kilenc új utasítást vezetett be az Alpha architektúrába. Ezek között adatkonverziós utasítások találhatók az egész és lebegőpontos regiszterek között, valamint a négyzetgyökvonás utasítás mind a négy lebegőpontos adatformátumhoz. A kiterjesztést elsőként az Alpha 21264 (EV6) processzorban vezették be.

mnemonik utasítás
FTOIS Floating-point to Integer Register Move, S_floating
FTOIT Floating-point to Integer Register Move, T_floating
ITOFF Integer to Floating-point Register Move, F_floating
ITOFS Integer to Floating-point Register Move, S_floating
ITOFT Integer to Floating-point Register Move, T_floating
SQRTF Square root F_floating
SQRTG Square root G_floating
SQRTS Square root S_floating
SQRTT Square root T_floating

Számláló kiterjesztés (Count Extensions, CIX)

szerkesztés

A számláló kiterjesztés (Count Extensions, CIX) bitszámláló utasításokkal bővítette az architektúra utasításkészletét. Ezek az utasítások egész aritmetikai utasításnak számítanak. Elsőként az Alpha 21264A (EV67) processzorban vezették be.

mnemonik utasítás
CTLZ Count Leading Zero (vezető nullák számlálása)
CTPOP Count Population (beállított bitek számlálása)
CTTZ Count Trailing Zero (záró nullák számlálása)

Megvalósítások

szerkesztés

Bejelentése idején az Alpha az elkövetkező 25 év architektúrájaként volt beharangozva. Bár nem így történt, az Alpha mégis viszonylag hosszú időt ért meg. Az első verzió, az Alpha 21064 (másik jelölése EV4) 1992 novemberében volt bevezetve, legnagyobb órajele 192 MHz lehetett; ezt követte néhány hónappal később a csökkentett lapkaméretű EV4S, (ebben a csíkszélességet 0,75 µm-ről 0,675 µm-re csökkentettek), melynek órajele már elérte a 200 MHz-et. A 64 bites processzor szuperfutószalagos és szuperskalár kialakítású volt, a többi RISC dizájnhoz hasonlóan, azonban mindegyiket maga mögött hagyta teljesítményben és a DEC rögtön kikiáltotta a világ leggyorsabb processzorának. A Hudson tervezőcsapatot mindig is a gondos, figyelmes áramköri tervezés fémjelezte; ennek egyik jele például a hatalmas központosított órajelvezérlő és -továbbító áramkör, ami lehetővé teszi, hogy a CPU magasabb órajelen fusson, még akkor is, ha a mikroarchitektúra meglehetősen hasonlít a többi RISC csipére. Összehasonlításul, az olcsóbb Intel Pentium megjelenésekor 66 MHz-en működött, 1993 tavaszán, egy évvel az Alpha megjelenése után.

Az Alpha 21164 avagy EV5 1995-ben került forgalomba, órajele elérhette a 333 MHz-et. 1996 júliusában az órajelet 500 MHz-re növelték, 1998 márciusában pedig tovább 666 MHz-re. 1998-ban színre lépett az Alpha 21264 (EV6), kezdetben 450 MHz-es órajellel, amely néhány év alatt (2001-ben a 21264C/EV68CB modellben) elérte az 1,25 GHz-et. 2003-ban jelent meg az Alpha 21364 vagy EV7 Marvel processzor, amely alapvetően egy EV68 mag, négy 1,6 GB/s[13] átviteli sebességű processzorok közötti kommunikációs vonallal, ami a multiprocesszoros teljesítményt volt hivatott javítani; maga a processzor 1,15 GHz-es órajelen futott.

1996-ban az Alpha csipek gyártásának jogát a Samsung Electronics Company kapta meg. A Digital Compaq általi felvásárlását követően a legtöbb Alpha termék az API NetWorks, Inc. (korábban: Alpha Processor Inc.) kezelésébe került – ez egy a Samsung és a Compaq által alapított magáncég volt. 2001 októberében a Microway cég lett az API NetWorks Alpha-alapú termékvonalának kizárólagos forgalmazója és szervizellátója.

2001. június 25-én a Compaq bejelentette, hogy 2004-ig fokozatosan megszünteti az Alpha termékvonalat, az Intel Itanium érdekében, megszüntette a tervezés alatt álló EV8 processzort és az egész Alpha szellemi tulajdont eladta az Intelnek.[14]

Még ugyanebben az évben (2001 szeptemberében) a Compaq a még ma is létező HP tulajdonába került; az új tulajdonos kijelentette, hogy még néhány évig tovább folytatja az Alpha sorozat fejlesztését, beleértve egy 1,3 GHz-es EV7 változatot, az EV7z jelű modellt. Ez lett volna az Alpha végső iterációja, a szintén megszüntetett 0,13 µm-es EV79 változattal együtt.

Az Alpha megjelent még a Piranha elnevezésű kísérleti termékben, ez a Compaq Corporate Research és Nonstop Hardware Development csoportjai által fejlesztett kutatási prototípus volt a Western Research Laboratory and Systems Research Center kutatóközpontban. A Piranha egy sokmagos kialakítás volt, nagy terhelésű tranzakciófeldolgozási feladatokra szánták, nyolc egyszerű magot tartalmazott. 2000 júniusában a Számítógép-architektúrák 27-ik Éves Nemzetközi Szimpóziumán tartottak róla egy előadást.[15]

A modellek adatai

szerkesztés
modell szám év órajel
[MHz][i 1]
folyamat
[µm][i 2]
tr.sz.
[millió][i 3]
M[i 4]
[mm2]
IO sz.
[i 5]
fogy.
[W][i 6]
fesz.
[V][i 7]
Dcache
[KiB][i 8]
Icache
[KiB][i 9]
Scache Bcache ISA
EV4 21064 1992 100–200 0,75 1,68 234 290 30 3,3 8 8 128 KB–16 MiB  
EV4S 21064 1993 100–200 0,675 1,68 186 290 27 3,3 8 8 128 KiB–16 MiB  
EV45 21064A 1994 200–300 0,5 2,85 164 33 3,3 16 16 256 KiB–16 MiB  
LCA4 21066 1993 100–166 0,675 1,75 209 21 3,3 8 8    
LCA4 21068 1994 66 0,675 1,75 209 9 3,3 8 8    
LCA45 21066A 1994 100–266 0,5 1,8 161 23 3,3 8 8    
LCA45 21068A 1994 100 0,5 1,8 161 3,3 8 8    
EV5 21164 1995 266–500 0,5 9,3 299 296 56 3,3/2,5 8 8 96 KiB max. 64 MiB R
EV56 21164A 1996 366–666[16] 0,35 9,66[16] 209 31–55[16] 3,3/2,5[16] 8 8 96 KiB max. 64 MiB R,B
PCA56 21164PC 1997 400–533 0,35 3,5 141 264 26–35 3,3/2,5 8 16 512 KiB–4 MiB R,B,M
PCA57 21164PC   600–666 0,28 5,7 101 283 18–23 2,5/2,0 16 32[16] 512 KiB–4 MiB R,B,M
EV6 21264 1998 450–600 0,35 15,2 314 389 73 2,0 64 64 2–8 MiB R,B,M,F
EV67 21264A 1999 600–750 0,25 15,2 210 389   2,0 64 64 2–8 MiB R,B,M,F,C
EV68AL 21264B 2001 800–833 0,18 15,2 125     1,7 64 64 2–8 MiB R,B,M,F,C,T
EV68CB 21264C 2001 1000–1250 0,18 15,2 125   65–75 1,65 64 64 2–8 MiB R,B,M,F,C,T
EV68CX 21264D               1,65 64 64 2–8 MiB R,B,M,F,C,T
EV7 21364 2003 1000–1150 0,18 130 397 125 1,5 64 64 1,75 MiB R,B,M,F,C,T
EV7z 21364 2004 1300 0,18 130 397 125 1,5 64 64 1,75 MiB R,B,M,F,C,T
Törölt modellek
EV78/EV79 21364A 2004[i 10] 1700 0,13 152 300 120 1,2 64 64 1,75 MiB R,B,M,F,C,T
EV8 21464 2003[i 10] 1200–2000 0,125 250 420 1800 ?? 1,2 64 64 3 MiB R,B,M,F,C,T
modell szám év frek.
[MHz][i 1]
foly.
[µm][i 2]
tr.sz.
[millió][i 3]
M[i 4]
[mm2]
IO sz.
[i 5]
fogy.
[W][i 6]
fesz.
[V][i 7]
Dcache
[KiB][i 11]
Icache
[KiB][i 9]
Scache Bcache ISA
  1. a b órajelfrekvencia
  2. a b gyártási folyamat, csíkszélesség
  3. a b tranzisztorok száma
  4. a b M: lapkaméret
  5. a b be/kimeneti érintkezők száma
  6. a b fogyasztás
  7. a b üzemi feszültség
  8. a gyorsítótárak esetében a bináris prefixumot használjuk, 1 KiB = 1024 bájt; 1 MiB = 1024 KiB
  9. a b utasítás-gyorsítótár
  10. a b tervezett megjelenés
  11. adat-gyorsítótár
ISA kiterjesztések
  • R – pozitív vagy negatív végtelen felé történő kerekítés hardveres támogatása[17]
  • B – BWX, „Byte/Word Extension”, bájt és szó kiterjesztés, amely 8 és 16 bites adatokkal végzett memória- és I/O műveleteket ad az utasításlészlethez
  • M – MVI, „multimédiás” utasítások
  • F – FIX, egész és lebegőpontos regiszterek közötti adatmozgató és négyzetgyökvonás utasítások
  • C – CIX, bitszámláló és bitkereső utasítások
  • T – előbeolvasás változtatással támogatása; a teljesítmény növelését célozza úgy, hogy a zárolások igénylése elsőre sikerüljön

Teljesítmény

szerkesztés

Az Alpha-alapú rendszerek teljesítményének felbecsléséhez az alábbi táblázatokban néhány, a teljesítményre jellemző SPEC adatot (SPECint95, SPECfp95) soroltunk fel. Megjegyzendő, hogy a SPEC tesztek igyekeznek a teljes számítógépes rendszer teljesítményét figyelembe venni, tehát az eredményben benne van a CPU, rendszersín, memória, és az optimalizáló fordítóprogram egyesített teljesítménye, nem kizárólag a processzoré. Azt is meg kell jegyezni, hogy maga a teszt és a skála is változott 1992-től 1995-ig. A számok mégis alkalmasak a 64 bites Alpha architektúra teljesítményének közelítő szemléltetésére, összehasonlítva azt a korabeli 64 bites HP és 32 bites Intel-alapú kínálattal. Talán a legszembeötlőbb tendencia az, hogy míg az egészértékű / fixpontos számítások terén az Intel meglehetősen közel kerül az Alphához, addig a lebegőpontos számítások terén a lemaradása igen nagy. Másrészt a HP (PA-RISC) teljesítménye szintén közel áll az Alpháéhoz, de ezek a processzorok sokkal kisebb órajelfrekvenciákon működnek (ld. a MHz oszlopot). A táblázatokból persze fontos adatok hiányoznak: a teljesítményfelvétel és a processzorok ára.

Rendszer CPU MHz integer lebegőpontos
SPEC Benchmark teljesítményösszehasonlítás, 1995-ben (SPECint95 és SPECfp95 eredmények alapján [1])
AlphaServer 8400 5/350 21164 (EV5) 350 10,1 14,2
Intel Alder System (200 MHz, 256 KiB L2) Pentium Pro 200 8,9 6,75
HP 9000 C160 PA 8000 160 10.4 16.3

Rendszer CPU MHz integer lebegőpontos
Teljesítmény-összehasonlítás, 2000-ben (SPECint95 és SPECfp95 eredmények alapján)
AlphaServer ES40 6/833 21264 (EV6) 833 50,0 100,0
Intel VC820 alaplap Pentium III 1000 46,8 31,9
HP 9000 C3600 PA-8600 552 42,1 64,0

Alpha-alapú rendszerek

szerkesztés

A DEC Alpha-alapú rendszerek első generációját a következők alkotják: DEC 3000 AXP sorozatú munkaállomások és kisteljesítményű szerverek, a DEC 4000 AXP sorozat középszintű szerverei, és a DEC 7000 AXP és 10000 AXP sorozatok nagyteljesítményű szerverei. A DEC 3000 AXP rendszerek ugyanazt a TURBOchannel sínt használják, mint a MIPS-alapú DECstation modellek, míg a 4000 már a FutureBus+ sínt alkalmazza és a 7000/10000 architektúrája osztozik a megfelelő VAX modellekkel.

A DEC ezek mellett gyártott PC-szerű Alpha munkaállomásokat is, EISA sínnel, DECpc AXP 150 („Jensen” kódnév alatt, vagy DEC 2000 AXP néven). Ez volt az első Alpha rendszer, amelyik támogatta a Windows NT-t. A DEC később megjelentette az Alpha processzorokkal szerelt Celebris XL és Digital Personal Workstation PC termékvonalát, ezekbe 21164 processzorok kerültek.

A Digital gyártott még VMEbus-alapú egykártyás számítógépeket is, beágyazott és ipari rendszerekben történő felhasználásra. Az első generációba a 21068-alapú AXPvme 64 és AXPvme 64LC tartozik, valamint a 21066-alapú AXPvme 160. Bevezetésük 1994. március 1-én történt. A későbbi modellek, mint az AXPvme 100, AXPvme 166 és AXPvme 230 21066A processzorral voltak szerelve, míg az Alpha VME 4/224 és az Alpha VME 4/288 21064A processzort tartalmaztak. Az utolsó modellek, az Alpha VME 5/352 és Alpha VME 5/480, 21164 processzoron alapultak.

21066-os csip működött a DEC Multia VX40/41/42 kompakt munkaállomásokban és a Tadpole Technology ALPHAbook 1 laptopjában.

1994-ben a DEC új AlphaStation és AlphaServer terméksorozatot indított. Ezek 21064 vagy 21164 processzorokat használtak, itt vezették be a PCI sínt, a VGA-kompatibilis framebuffereket és a PS/2-stílusú billentyűzetet és egeret. Az AlphaServer 8000 sorozat váltotta fel a DEC 7000/10000 AXP sorozatokat és szintén XMI és FutureBus+ síneket használt.

Az AlphaStation XP1000 volt az első 21264 processzorral szerelt munkaállomás. A későbbi 21264-alapú AlphaServer/Station modellek a DS (departmental server), ES (enterprise server) vagy GS (global server) kategóriákba voltak osztályozva.

A végső 21364 csip az AlphaServer ES47, ES80 és GS1280 modellekbe került és az AlphaStation ES47-be.

A DEC számos OEM alaplapot is gyártott, ilyen volt pl. a 21066 és 21068-alapú AXPpci 33 „NoName”, amellyel az OEM piacra akart betörni a cég,[18] a 21164-alapú AlphaPC 164 és AlphaPC 164LX, a 21164PC-alapú AlphaPC 164SX és AlphaPC 164RX és a 21264-alapú AlphaPC 264DP. Számos másodlagos szállító is gyártott OEM alaplapokat (pl. Samsung, API), ilyenek voltak az API UP1000 és UP2000.

Hogy elősegítse a külső gyártók hardverfejlesztéseit a platformra, a DEC ún. kiértékelő kártyákat is gyártott, ilyenek voltak az EB64+ és EB164 az Alpha 21064A és 21164 mikroprocesszorokhoz.

A 21164 és 21264 processzorokat a NetApp is használta különféle NAS (hálózati háttértár) rendszereiben, míg a 21064 és 21164 processzorokat a Cray alkalmazta a T3D és T3E nagy párhuzamosságú szuperszámítógépeiben.

Szuperszámítógépek

szerkesztés

A leggyorsabb, Alpha processzorokon alapuló szuperszámítógépek:

  • Sunway Blue Light a Kínai Nemzeti Szuperszámítógépes Központban, Csinan városában. Gép: Sunway BlueLight MPP. CPU: 8575 SW1600 (16 mag/CPU, 21164A EV-56, 975 MHz). Rmax=795,9 TFlops, Rpeak=1070,2 TFlops.[19] Ennek érdekessége, hogy kínai fejlesztésű ShenWei SW1600 processzorokat tartalmaz, ami nagy hasonlóságot mutat az Alpha 21164 processzorral.
  • ASCI Q a Los Alamos National Laboratory-ban. Gép: HP AlphaServer SC45/GS Cluster. CPU: 4096 Alpha (21264 EV-68, 1,25 GHz). Rmax: 7,727 teraflops.[20]
  1. rögzítetten 32 bites utasításszavak
  2. little-endian és big-endian
  3. Bolotoff, Paul V.: Alpha: The History in Facts and Comments. Alasir, 2005. április 14. [2012. június 29-i dátummal az eredetiből archiválva]. (Hozzáférés: 2014. január 25.)
  4. Aaron Sakovich: Windows 2000?. The AlphaNT Source, 2001. (Hozzáférés: 2007. január 1.)
  5. SUSE Linux 7.0 Alpha Edition. SUSE, 2000. (Hozzáférés: 2014. január 8.)
  6. Transforming your AlphaServer environment. HP. [2007. február 8-i dátummal az eredetiből archiválva]. (Hozzáférés: 2007. január 11.)
  7. Bill Hamburgen, Jeff Mogul, Brian Reid, Alan Eustace, Richard Swan, Mary Jo Doherty, Joel Bartlett (1989). „WRL Technical Note TN-13: Characterization of Organic Illumination Systems” (PDF), Kiadó: Digital Equipment Corporation. [2021. január 27-i dátummal az eredetiből archiválva]. (Hozzáférés: 2007. október 4.) 
  8. Espasa, Roger; Federico Ardanaz, Julio Gago, Roger Gramunt, Isaac Hernandez, Toni Juan, Joel Emer, Stephen Felix, Geoff Lowney, Matthew Mattina, Andre Seznec (2002). „Tarantula: A Vector Extension to the Alpha Architecture” (PDF). 29th Annual International Symposium on Computer Architecture (ISCA '02) Danielle C. Martin, Joe Daigle/Studio Productions Proceedings: 29th Annual International Symposium on Computer Architecture (ISCA '02): Page(s): 281–292, Los Alamitos, Calif: IEEE Computer Society. doi:10.1109/ISCA.2002.1003586. Hozzáférés: 2007. október 4. 
  9. A vektorprocesszor egy olyan CPU, amely egydimenziós tömbökön, azaz vektorokon képes műveleteket végezni, és utasításkészletében a vektorműveletekhez szükséges utasításokat tartalmaz. Ezek általában a SIMD, ritkábban a MIMD technikát alkalmazzák, és több ALU-val rendelkeznek.
  10. Alpha Architecture Reference Manual, Fourth Edition (angol nyelven) (pdf) pp. 4.4.3 ADDQ, 4.4.6 CMPULE. Compaq, 2002. január 1. (Hozzáférés: 2013)
  11. (1996) „A 433-MHz 64-b quad-issue RISC mikroprocesszor”. IEEE Journal of Solid-State Circuits 31 (11), 1687–1696. o. DOI:10.1109/JSSC.1996.542313. 
  12. Gwennap, Linley (18 November 1996). "Digital, MIPS Add Multimedia Extensions". Microprocessor Report.
  13. Az adatátvitellel való összefüggésben az 1 GB szokás szerint egymilliárd bájtot jelent
  14. Popovich, Ken: Alpha proved costly for Compaq. www.zdnet.co.uk. ZDNet, 2001. június 28. [2008. július 25-i dátummal az eredetiből archiválva]. (Hozzáférés: 2009. május 1.)
  15. Luiz André Barroso, Kourosh Gharachorloo, Robert McNamara, Andreas Nowatzyk, Shaz Qadeer, Barton Sano, Scott Smith, Robert Stets, and Ben Verghese (2000). "Piranha: A Scalable Architecture Based on Single-Chip Multiprocessing". Proceedings of the 27th Annual International Symposium on Computer Architecture.
  16. a b c d e Paul V. Bolotoff: Alpha: The History in Facts and Comments, 2007. április 21. [2013. december 3-i dátummal az eredetiből archiválva]. (Hozzáférés: 2008. november 22.)
  17. David Mosberger: Overview of Alpha Family. (Hozzáférés: 2009. december 9.)
  18. Reinhardt Krause. "DEC launching Alpha board push". Electronic News, April 4, 1994.
  19. TOP500: Sunway Blue Light - Sunway BlueLight MPP, ShenWei processor SW1600 975,00 MHz, Infiniband QDR, 2011. [2012. augusztus 18-i dátummal az eredetiből archiválva]. (Hozzáférés: 2012. szeptember 15.)
  20. Los Alamos National Laboratories: The ASCI Q System: 30 TeraOPS Capability at Los Alamos National Laboratory, 2002. [2011. január 12-i dátummal az eredetiből archiválva]. (Hozzáférés: 2010. június 6.)

Fordítás

szerkesztés

Ez a szócikk részben vagy egészben a DEC Alpha 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.

További információk

szerkesztés

Magyarul

Kapcsolódó szócikkek

szerkesztés
  • AlphaVM: Egy Windows vagy Linux alatt futó teljes DEC Alpha rendszeremulátor.
  • ShenWei: Kínai fejlesztésű mikroprocesszor-család, feltételezések szerint az Alpha 21164 inspirálta.