Alpha A Digital által használt „Alpha Generation” logó Tervező Digital Equipment Corporation Bitek száma 64 bites Bevezetés 1992 Típus RISC Utasításkészlet fix hosszúrögzítetten 32 bites utasításszavak Bájtsorrend kettőslittle-endian és big-endian 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 Előd DEC PRISM Regiszterek Általános célú 32 Lebegőpontos 32
thumb|220px|Részekre osztott korai Alpha prototípus többcsipes modulon
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.
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), GNU/Linux (Debian GNU/Linux, SUSE Linux, 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.
Története
A PRISM
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.
Az Alpha
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 mikroprocesszor-gyá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.
Továbbfejlesztett modellek
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.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.
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
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
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.
Regiszterek 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 regiszterekEzeket F-fel jelölik: floating-point registers 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
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.