Open main menu
Home
Random
Recent changes
Special pages
Community portal
Preferences
About Wikipedia
Disclaimers
Incubator escapee wiki
Search
User menu
Talk
Dark mode
Contributions
Create account
Log in
Editing
DEC Alpha
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
{{Short description|64-bit RISC instruction set architecture}} {{Infobox CPU architecture | name = Alpha | image = DEC Alpha Generation logo.svg | caption = "Alpha Generation" logo used by Digital | designer = [[Digital Equipment Corporation]] | bits = [[64-bit computing|64-bit]] | introduced = {{Start date and age|1992}} | design = [[Reduced instruction set computer|RISC]] | type = [[Loadβstore]] | encoding = Fixed | branching = | endianness = [[Endianness#Bi-endianness|Bi]] | extensions = Byte/Word Extension (BWX), Square-root and Floating-point Convert Extension (FIX), Count Extension (CIX), Motion Video Instructions (MVI) | open = Yes<ref name="facts and comments"/> | gpr = 31 plus always-zero R31 | fpr = 31 plus always-0.0 F31 }} {{Multiple image | align = right | direction = vertical | width = 240 | header = Alpha microprocessors | image1 = Alpha AXP 21064 diephoto1.jpg | caption1 = DEC AXP 21064 die photo | image2 = DEC Alpha 21-35023-13 J40793-28 top.jpg | caption2 = DEC AXP 21064 package | image3 = Alpha AXP 21064 card1.jpg | caption3 = DEC AXP 21064 bare die mounted on business card with some statistics | image4 = KL Compaq DEC ALPHA 21264C.jpg | caption4 = Compaq 21264C }} '''Alpha''' (original name '''Alpha AXP''') is a [[64-bit computing|64-bit]] [[reduced instruction set computer]] (RISC) [[instruction set architecture]] (ISA) developed by [[Digital Equipment Corporation]] (DEC). Alpha was designed to replace [[32-bit computing|32-bit]] [[VAX]] [[complex instruction set computer]]s (CISC) and to be a highly competitive RISC processor for [[Unix workstation]]s and similar markets. Alpha was implemented in a series of [[microprocessor]]s originally developed and [[Semiconductor device fabrication|fabricated]] by DEC. These microprocessors were most prominently used in a variety of DEC workstations and servers, which eventually formed the basis for almost all of their mid-to-upper-scale lineup. Several third-party vendors also produced Alpha systems, including [[PC motherboard form factor|PC form factor]] motherboards. [[Operating system]]s that support Alpha included [[OpenVMS]] (formerly named OpenVMS AXP), [[Tru64 UNIX]] (formerly named DEC OSF/1 AXP and Digital UNIX), [[Windows NT]] (discontinued after [[Windows NT 4.0|NT 4.0]]; and prerelease [[Windows 2000]] [[Software release life cycle|RC2]]),<ref name=alphant>{{cite web | author=Aaron Sakovich | publisher=The AlphaNT Source | year=2001 | url=http://www.alphant.com/articles/windows2000.html | title=Windows 2000? | access-date=2007-01-01 | archive-url=https://web.archive.org/web/20080708183609/http://www.alphant.com/articles/windows2000.html | archive-date=2008-07-08 }}</ref> [[Linux]] ([[Debian]], [[SUSE Linux|SUSE]],<ref name=alphaSUSE>{{cite web | publisher=SUSE | year=2000 | url=https://www.suse.com/company/press/2000/11/alpha70.html | title=SUSE Linux 7.0 Alpha Edition | access-date=2014-01-08 | archive-date=2014-01-08 | archive-url=https://web.archive.org/web/20140108124236/https://www.suse.com/company/press/2000/11/alpha70.html | url-status=live }}</ref> [[Gentoo Linux|Gentoo]] and [[Red Hat Linux|Red Hat]]), [[Berkeley Software Distribution|BSD]] UNIX ([[NetBSD]], [[OpenBSD]] and [[FreeBSD]] up to 6.x), [[Plan 9 from Bell Labs]], and the [[L4 microkernel family|L4Ka::Pistachio]] kernel. A port of [[Ultrix]] to Alpha was carried out during the initial development of the Alpha architecture, but was never released as a product.<ref>{{cite journal|url=http://www.dtjcd.vmsresource.org.uk/pdfs/dtj_v04-04_1992.pdf|title=Using Simulation to Develop and Port Software|author1=George A. Darcy III|author2=Ronald F. Brender|author3=Stephen J. Morris|author4=Michael V. Iles|journal=Digital Technical Journal|volume=4|issue=4|year=1992|pages=181β192}}</ref> The Alpha architecture was sold, along with most parts of DEC, to [[Compaq]] in 1998.<ref name=Reg.98>{{cite web |website=TheRegister.co.uk |date=November 2, 2016 |url=https://www.theregister.co.uk/2016/11/02/ghost_of_dec_alpha_sees_microsoft_dumb_down_windows_file_compression |title=Ghost of DEC Alpha is why Windows is rubbish at file compression |access-date=September 20, 2018 |archive-date=September 20, 2018 |archive-url=https://web.archive.org/web/20180920122703/https://www.theregister.co.uk/2016/11/02/ghost_of_dec_alpha_sees_microsoft_dumb_down_windows_file_compression |url-status=live}}</ref> Compaq, already an [[Intel]] x86 customer, announced that they would phase out Alpha in favor of the forthcoming [[Hewlett-Packard]]/Intel [[Itanium]] architecture, and sold all Alpha [[intellectual property]] to Intel, in 2001,<ref name="zdnet-compaq">{{cite web|url=https://www.zdnet.com/article/alpha-proved-costly-for-compaq-3002090197/|title=Alpha proved costly for Compaq|last=Popovich|first=Ken|date=2001-06-28|work=[[ZDNet]]|access-date=2016-03-02|archive-date=2016-03-03|archive-url=https://web.archive.org/web/20160303212700/http://www.zdnet.com/article/alpha-proved-costly-for-compaq-3002090197/|url-status=live}}</ref> effectively killing the product. Hewlett-Packard purchased Compaq in 2002, continuing development of the existing product line until 2004, and selling Alpha-based systems, largely to the existing customer base, until April 2007.<ref name=alphasupportend>{{cite web |publisher=HP |url=http://h18002.www1.hp.com/alphaserver/evolution.html |title=Transforming your AlphaServer environment |access-date=2007-01-11 |url-status=dead |archive-url=https://web.archive.org/web/20070208212316/http://h18002.www1.hp.com/alphaserver/evolution.html |archive-date=2007-02-08 }}</ref> ==History== ===PRISM=== {{main|DEC PRISM}} Alpha emerged from an earlier RISC project named Parallel Reduced Instruction Set Machine ([[DEC PRISM|PRISM]]), itself the product of several earlier projects. PRISM was intended to be a flexible design, supporting Unix-like applications, and Digital's existing VAX/VMS software, after minor conversion. A new [[operating system]] named [[DEC MICA|MICA]] would support both [[ULTRIX]] and VAX/VMS interfaces on a common [[Kernel (operating system)|kernel]], allowing software for both platforms to be easily ported to the PRISM architecture.<ref name="mica-business-plan">{{cite web|url=http://www.bitsavers.org/pdf/dec/prism/mica/Mica_Software_Business_Plan_Mar87.pdf|title=MICA Software Business Plan|author1=Catherine Richardson|author2=Terry Morris|author3=Rockie Morgan|author4=Reid Brown|author5=Donna Meikle|date=March 1987|access-date=2021-01-04|website=bitsavers.org|archive-date=2021-01-07|archive-url=https://web.archive.org/web/20210107155539/http://www.bitsavers.org/pdf/dec/prism/mica/Mica_Software_Business_Plan_Mar87.pdf|url-status=live}}</ref> Started in 1985, the PRISM design was continually changed during its development in response to changes in the computer market, leading to lengthy delays in its introduction. It was not until the summer of 1987 that it was decided that it would be a [[64-bit computing|64-bit]] design, among the earliest such designs in a [[microprocessor]] format. In October 1987, [[Sun Microsystems]] introduced the [[Sun-4]], their first [[workstation]] using their new [[SPARC]] processor. The Sun-4 runs about three to four times as fast as their latest [[Sun-3]] designs using the [[Motorola 68020]], and any Unix offering from DEC. The plans changed again; PRISM was realigned once again as a 32-bit part and aimed directly at the Unix market. This further delayed the design.<ref name="microprism">{{cite web |first= Bob |last= Supnik |url= http://simh.trailing-edge.com/semi/uprism.html |title= MicroPrism |date= 24 February 2008 |website= The Computer History Simulation Project |access-date= 26 April 2021 |archive-date= 3 April 2021 |archive-url= https://web.archive.org/web/20210403101425/http://simh.trailing-edge.com/semi/uprism.html |url-status= live}}</ref> Having watched the PRISM delivery date continue to slip, and facing the possibility of more delays, a team in the Palo Alto office decided to design their own workstation using another RISC processor. After [[due diligence]], they selected the [[R2000 (microprocessor)|MIPS R2000]] and built a working workstation running Ultrix in a period of 90 days.<ref>{{cite web |url=http://alasir.com/articles/alpha_history/prism_to_alpha.html |title=Alpha: The History in Facts and Comments |access-date=2019-09-09 |date=2007-04-22 |first=Paul V |last=Bolotoff |archive-date=2019-09-29 |archive-url=https://web.archive.org/web/20190929230557/http://alasir.com/articles/alpha_history/prism_to_alpha.html |url-status=live}}</ref> This sparked off an acrimonious debate within the company, which came to a head in a July 1988 management meeting. PRISM appeared to be faster than the R2000, but the R2000 machines could be in the market by January 1989, a year earlier than PRISM. When this proposal was accepted, one of the two original roles for PRISM disappeared. The decision to make a VMS PRISM had already ended by this point, so there was no remaining role. PRISM was cancelled at the meeting.<ref>{{cite web |title=Sketch of DEC PRISM |author=Mark Smotherman |url=https://people.cs.clemson.edu/~mark/prism.html |quote=PRISM (Parallel Reduced Instruction Set Machine) ... first draft of PRISM architecture in August 1985; DEC cancels the project in 1988 in favor of a MIPS-based ... |access-date=2018-09-20 |archive-date=2020-04-04 |archive-url=https://web.archive.org/web/20200404100105/https://people.cs.clemson.edu/~mark/prism.html |url-status=live}}</ref> ===RISCy VAX=== As the meeting broke up, Bob Supnik was approached by [[Ken Olsen]], who stated that the RISC chips appeared to be a future threat to their VAX line. He asked Supnik to consider what might be done with VAX to keep it competitive with future RISC systems.<ref name="microprism"/> This led to the formation of the "RISCy VAX" team. They initially considered three concepts. One was a cut-down version of the VAX [[instruction set architecture]] (ISA) that would run on a RISC-like system and leave more complex VAX instructions to system subroutines. Another concept was a pure RISC system that would translate existing VAX code into its own ISA on-the-fly and store it in a [[CPU cache]]. Finally, there was still the possibility of a much faster CISC processor running the complete VAX ISA. Unfortunately, all of these approaches introduced overhead and would not be competitive with a pure-RISC machine running native RISC code.<ref name="comerford">{{cite journal |first=Richard |last=Comerford |title=How DEC developed Alpha |journal=[[IEEE Spectrum]] |volume=29 |issue=7 |date=July 1992 |page=28 |doi=10.1109/6.144508 |url=https://ieeexplore.ieee.org/document/144508 |access-date=2021-10-23 |archive-date=2018-06-20 |archive-url=https://web.archive.org/web/20180620235313/https://ieeexplore.ieee.org/document/144508/ |url-status=live}}</ref> The group then considered hybrid systems that combined one of their existing VAX one-chip solution and a RISC chip as a coprocessor used for high-performance needs. These studies suggested that the system would inevitably be hamstrung by the lower-performance part and would offer no compelling advantage. It was at this point that Nancy Kronenberg pointed out that people ran VMS, not VAX, and that VMS only had a few hardware dependencies based on its modelling of [[interrupt]]s and memory paging. There appeared to be no compelling reason why VMS could not be ported to a RISC chip as long as these small bits of the model were preserved. Further work on this concept suggested this was a workable approach.<ref name="comerford"/> Supnik took the resulting report to the Strategy Task Force in February 1989. Two questions were raised: could the resulting RISC design also be a performance leader in the Unix market, and should the machine be an open standard? And with that, the decision was made to adopt the PRISM architecture with the appropriate modifications. This became the "EVAX" concept, a follow-on to the successful CMOS [[CVAX]] implementation. When management accepted the findings, they decided to give the project a more neutral name, removing "VAX", eventually settling on Alpha.<ref>{{cite journal |url=https://www.hpl.hp.com/hpjournal/dtj/vol4num4/foreword.htm |title=Foreword |first=Bob |last=Supnik |journal=Digital Technical Journal |volume=4 |issue=4 |date=1992 |access-date=2021-05-03 |archive-date=2021-05-03 |archive-url=https://web.archive.org/web/20210503222246/https://www.hpl.hp.com/hpjournal/dtj/vol4num4/foreword.htm |url-status=live}}</ref> The name was inspired by the use of "Omega" as the codename of an [[NVAX]]-based [[VAX 4000]] model; "Alpha" was intended to signify the beginning of a new line (with reference to [[Alpha and Omega]]).<ref>{{cite interview |last=Supnik|first=Robert|interviewer=Gardner Hendrie|title=Robert Supnik Oral History|url=https://archive.computerhistory.org/resources/access/text/2019/07/102738263-05-01-acc.pdf |publisher=Computer History Museum|date=2017-05-02|website=computerhistory.org|access-date=2024-04-06}}</ref> Soon after, work began on [[OpenVMS#Port to Alpha|a port of VMS to the new architecture]].<ref>{{cite web|url=https://dspace.mit.edu/bitstream/handle/1721.1/48380/managingtechnolo00katz.pdf|date=April 1993|title=Managing Technological Leaps: A study of DEC's Alpha Design Team|access-date=2021-04-26|archive-date=2021-02-07|archive-url=https://web.archive.org/web/20210207063545/https://dspace.mit.edu/bitstream/handle/1721.1/48380/managingtechnolo00katz.pdf|url-status=live}}</ref> ===Alpha=== The new design uses most of the basic PRISM concepts, but was re-tuned to allow VMS and VMS programs to run at reasonable speed with no conversion at all. The primary Alpha instruction set architects were Richard L. Sites and Richard T. Witek.<ref>{{cite book |url=https://www.elsevier.com/books/alpha-axp-architecture-reference-manual/sites/978-1-4831-8403-6 |isbn=978-1-4831-8403-6 |title=Alpha AXP Architecture Reference Manual β 2nd Edition |author1=Richard L. Sites |author2=Richard T. Witek |date=2014-05-16 |publisher=Digital Press |access-date=2018-09-20 |archive-date=2018-09-20 |archive-url=https://web.archive.org/web/20180920122621/https://www.elsevier.com/books/alpha-axp-architecture-reference-manual/sites/978-1-4831-8403-6 |url-status=live}}</ref> The PRISM's Epicode was developed into the Alpha's [[PALcode]], providing an abstracted interface to platform- and processor implementation-specific features. The main contribution of Alpha to the microprocessor industry, and the main reason for its performance, is not so much the architecture but rather its implementation.<ref>{{Cite web|url=https://www.ibm.com/developerworks/library/pa-microhist/|title=Great moments in microprocessor history|last=Warner|first=W.|date=December 22, 2004|website=IBM|access-date=January 18, 2018|archive-date=January 19, 2018|archive-url=https://web.archive.org/web/20180119120058/https://www.ibm.com/developerworks/library/pa-microhist/|url-status=live}}</ref> At that time (as it is now), the microchip industry was dominated by automated design and layout tools. The chip designers at Digital continued pursuing sophisticated manual circuit design in order to deal with the complex VAX architecture. The Alpha chips show that manual circuit design applied to a simpler, cleaner architecture allows for much higher operating frequencies than those that are possible with the more automated design systems. These chips caused a renaissance of custom circuit design within the microprocessor design community. Originally, the Alpha processors were designated the ''DECchip 21x64'' series,<ref name=X21>{{cite web |title=cpu-collection.de β DEC Alpha AXP |url=http://www.cpu-collection.de/?l0=co&l1=DEC&l2=Alpha+AXP |quote=The first processors of the Alpha family were designated the DECchip 21064 series (the "21" signifying 21st century) |access-date=2018-09-20 |archive-date=2018-09-20 |archive-url=https://web.archive.org/web/20180920160836/http://www.cpu-collection.de/?l0=co&l1=DEC&l2=Alpha+AXP |url-status=live }}</ref> with "DECchip" replaced in the mid-1990s with "Alpha". The first two digits, "21" signifies the 21st century, and the last two digits, "64" signifies 64 bits.<ref name=X21/> The Alpha was designed as 64-bit from the start and there is no 32-bit version. The middle digit corresponds to the generation of the Alpha architecture. Internally, Alpha processors were also identified by ''EV'' numbers, EV officially standing for "Extended VAX" but having an alternative humorous meaning of "Electric [[Vlasic Pickles|Vlasic]]", giving homage to the [[Glowing pickle demonstration|Electric Pickle]] experiment at Western Research Lab.<ref name=pickle>{{cite journal | title = WRL Technical Note TN-13: Characterization of Organic Illumination Systems | publisher = Digital Equipment Corporation | year = 1989 | url = https://www.hpl.hp.com/techreports/Compaq-DEC/WRL-TN-13.html | format = [[PDF]] | access-date = 2007-10-04 | author1 = Bill Hamburgen | author2 = Jeff Mogul | author3 = Brian Reid | author-link3 = Brian Reid (computer scientist) | author4 = Alan Eustace | author-link4 = Alan Eustace | author5 = Richard Swan | author6 = Mary Jo Doherty | author7 = Joel Bartlett | journal = | archive-date = 2008-05-12 | archive-url = https://web.archive.org/web/20080512033558/http://www.hpl.hp.com/techreports/Compaq-DEC/WRL-TN-13.html | url-status = dead }}</ref> The number in the EV designations indicated the semiconductor process which the chip was designed for. For example, the EV4 processor used DEC's CMOS-4 process.<ref name="comerford" /> In May 1997, DEC sued [[Intel]] for allegedly infringing on its Alpha patents in designing the [[Original Intel Pentium (P5 microarchitecture)|original Pentium]], [[Pentium Pro]], and [[Pentium II]] chips.<ref>{{cite magazine|title=DEC, Cyrix sue Intel|first1=Gale|last1=Bradley|first2=Jim|last2=DeTar|magazine=Electronic News|volume=43|issue=2168|pages=1, 60|date=May 19, 1997|issn=1061-6624|url=https://archive.org/details/sim_electronic-news_1997-05-19_43_2168/mode/1up}}</ref> As part of a settlement, much of DEC's chip design and fabrication business was sold to Intel. This included DEC's [[StrongARM]] implementation of the [[ARM architecture family|ARM computer architecture]], which Intel marketed as the [[Intel XScale|XScale]] processors commonly used in [[Pocket PC]]s. The core of Digital Semiconductor, the Alpha microprocessor group, remained with DEC, while the associated office buildings went to Intel as part of the Hudson fab.<ref>{{cite interview |first=Allan |last=Baum |interviewer= David Brock |title=Oral History of Allen Baum |date=July 18, 2018 |url=https://archive.computerhistory.org/resources/access/text/2018/06/102717165-05-01-acc.pdf |archive-url=https://web.archive.org/web/20210207063355/https://archive.computerhistory.org/resources/access/text/2018/06/102717165-05-01-acc.pdf |archive-date=2021-02-07 |url-status=live |page=60}}</ref> ===Improved models=== The first few generations of the Alpha chips were some of the most innovative of their time. * A pre-production model, designated ''EV3'', was used in a prototype system named the ''Alpha Demonstration Unit'' (ADU). ADUs were used to port operating systems to the Alpha architecture. One key difference between the EV3 and later models was the absence of a floating-point unit.<ref>{{cite journal|url=https://vmssoftware.com/docs/dtj-v04-04-1992.pdf|title=The Alpha Demonstration Unit: A High-performance Multiprocessor for Software and Chip Development|author1=Charles P. Thacker|author2=David G. Conroy|author3=Lawrence C. Stewart|journal=Digital Technical Journal|volume=4|issue=4|year=1992|access-date=2024-04-06|page=51}}</ref> * The first version, the ''[[Alpha 21064]]'' or ''EV4'', is the first [[CMOS]] microprocessor whose operating frequency rivalled higher-powered [[Emitter coupled logic|ECL]] minicomputers and mainframes. * The second, ''21164'' or ''EV5'', is the first microprocessor to place a large secondary cache on-chip.<ref>{{cite journal |title=Internal Organization of the Alpha 21164, a 300-MHz 64-bit Quad-issue CMOS RISC Microprocessor |author1=John H. Edmondson |author2=Paul I. Rubinfeld |author3=Peter J. Bannon |author4=Bradley J. Benschneider |author5=Debra Bernstein |author6=Ruben W. Castelino |author7=Elizabeth M. Cooper |author8=Daniel E. Dever |author9=Dale R. Donchin |author10=Timothy C. Fischer |author11=Anil K. Jain |author12=Shekhar Mehta |author13=Jeanne E. Meyer |author14=Ronald P. Preston |author15=Vidya Rajagopalan |author16=Chandrasekhara Somanathan |author17=Scott A. Taylor |author18=Gilbert M. Wolrich |journal=Digital Technical Journal |volume=7 |issue=1 |year=1995 |pages=119β135 |quote=large, on-chip, second-level, write-back cache |citeseerx=10.1.1.38.9551}}</ref> * The third, ''21264'' or ''EV6'', is the first microprocessor to combine both high operating frequency and the more complicated [[out-of-order execution]] microarchitecture. * The ''21364'' or ''EV7'' is the first high performance processor to have an on-chip [[memory controller]].<ref>{{cite book |quote=21364 ... first high performance processor to have an onchip memory controller. |title=Structured Computer Organization |url=https://books.google.com/books?isbn=147842673X |isbn=978-1478426738 |date=2016|last1=Reviews |first1=C.T.I }}</ref> * The unproduced ''[[Alpha 21464|21464]]'' or ''EV8'' would have been the first to include [[simultaneous multithreading]], but this version was canceled after the sale of DEC to [[Compaq]]. The ''[[Alpha 21464#Tarantula|Tarantula]]'' research project, which most likely would have been called ''EV9'', would have been the first Alpha processor to feature a [[vector processor]] unit.<ref name='Tarantula'>{{cite conference | author1 = Roger Espasa | author2 = Federico Ardanaz | author3 = Julio Gago | author4 = Roger Gramunt | author5 = Isaac Hernandez | author6 = Toni Juan | author7 = Joel Emer | author7-link = Joel Emer | author8 = Stephen Felix | author9 = Geoff Lowney | author10 = Matthew Mattina | author11 = Andre Seznec | year = 2002 | editor = Danielle C. Martin | others = Joe Daigle/Studio Productions | title = Tarantula: A Vector Extension to the Alpha Architecture | url = http://systems.cs.colorado.edu/ISCA2002/ | conference = 29th Annual International Symposium on Computer Architecture (ISCA '02) | conference-url = http://systems.cs.colorado.edu/ISCA2002 | book-title = Proceedings: 29th Annual International Symposium on Computer Architecture (ISCA '02) | pages = 281β292 | publisher = IEEE Computer Society | location = Los Alamitos, Calif | isbn = 0-7695-1605-X | doi = 10.1109/ISCA.2002.1003586 | url-status = live | archive-url = https://web.archive.org/web/20071004172421/http://systems.cs.colorado.edu/ISCA2002/ | archive-date = 2007-10-04 | access-date = 2007-10-04 }}</ref> A persistent report attributed to DEC insiders suggests the choice of the ''AXP'' tag for the processor was made by DEC's legal department, which was still smarting from the [[Vax (brand)#Trademark conflict|VAX trademark]] fiasco.<ref>{{cite web |title=The VAX Vacuum |url=https://groups.google.com/d/topic/comp.os.vms/8ptFdR3KYxg |quote=... legally, if DEC had used VAX in the U.S. before that ..... "reasonable person" has no difficulty distinguishing between the two uses}}</ref> After a lengthy search the tag "AXP" was found to be entirely unencumbered. Within the computer industry, a joke got started that the acronym ''AXP'' meant "Almost eXactly PRISM".<ref>{{Cite mailing list |mailing-list=Linux kernel mailing list |author=Chad Page |title=The meaning of AXP (was Re: ALPHA ambiguity) |date=30 April 1996 |url=https://lkml.org/lkml/1996/5/1/47 |access-date=2024-08-29}}</ref> ==Design principles== The Alpha architecture was intended to be a high-performance design. Digital intended the architecture to support a one-thousandfold increase in performance over twenty-five years. To ensure this, any architectural feature that impeded multiple instruction issue, clock rate or multiprocessing was removed. As a result, the Alpha does not have: * [[Branch delay slot]]s * Suppressed instructions{{Clarify|date=January 2023|reason=Is this referring to instructions in a conditionalbranch delay slot not being executed if the branch is not taken? This is often called nullification, not suppression.}} * Byte load or store instructions (later added with the Byte Word Extensions (BWX))<ref>{{cite web |title=The Alpha AXP, part 8: Memory access, storing bytes and words and unaligned data |url=https://devblogs.microsoft.com/oldnewthing/20170816-00/?p=96825 |date=August 16, 2017 |quote=Dealing with unaligned memory on the Alpha AXP is very annoying |access-date=July 18, 2022 }}</ref><ref>{{cite web |quote=The instructions that comprise the BWX extension are ... |title=Alpha 21264 Microprocessor Data Sheet |url=https://www.star.bnl.gov/public/daq/HARDWARE/21264_data_sheet.pdf |access-date=2018-09-20 |archive-date=2017-08-30 |archive-url=https://web.archive.org/web/20170830002919/http://www.star.bnl.gov/public/daq/HARDWARE/21264_data_sheet.pdf |url-status=live }}</ref> ===Condition codes=== The Alpha does not have [[Status register|condition code]]s for integer instructions<ref>{{cite web |title=MIPS Instructions |url=http://eas.uccs.edu/~cwang/ECE4480_sp_16/ch2(3rdEdition).PPT |quote=DEC Alpha ... , no integer condition code. }}{{Dead link|date=February 2022 |bot=InternetArchiveBot |fix-attempted=yes}}</ref> to remove a potential bottleneck at the condition status register. Instructions resulting in an overflow, such as adding two numbers whose result does not fit in 64 bits, write the 32 or 64 [[least significant bit]]s to the destination register. The carry is generated by performing an unsigned compare on the result with either operand to see if the result is smaller than either operand. If the test was true, the value one is written to the least significant bit of the destination register to indicate the condition. ==Registers== {| class="infobox" style="font-size:88%;width:34em;" |- |+ DEC Alpha registers |- | {| style="font-size:88%;" |- | style="width:10px; text-align:left;" | <sup>6</sup><sub>3</sub> | style="width:50px; text-align:center;"| . . . | style="width:10px; text-align:right;" | <sup>4</sup><sub>7</sub> | style="width:50px; text-align:center;"| . . . | style="width:10px; text-align:center;"| <sup>3</sup><sub>1</sub> | style="width:50px; text-align:center;"| . . . | style="width:10px; text-align:center;"| <sup>1</sup><sub>5</sub> | style="width:50px; text-align:center;"| . . . | style="width:10px; text-align:center;"| <sup>0</sup><sub>1</sub> | style="width:10px; text-align:center;"| <sup>0</sup><sub>0</sub> | style="width:auto; background:white; color:black" | ''(bit position)'' |- |colspan="11" | '''General-purpose registers'''<br/> |- style="background:silver;color:black" | style="text-align:center;" colspan="10"| R0 | style="background:white; color:black;"| R0 |- style="background:silver;color:black" | style="text-align:center;" colspan="10"| R1 | style="background:white; color:black;"| R1 |- style="background:silver;color:black" | style="text-align:center;" colspan="10"| R2 | style="background:white; color:black;"| R2 |- | style="text-align:center;" colspan="10"| β’ | style="background:white; color:black;"| |- | style="text-align:center;" colspan="10"| β’ | style="background:white; color:black;"| |- | style="text-align:center;" colspan="10"| β’ | style="background:white; color:black;"| |- style="background:silver;color:black" | style="text-align:center;" colspan="10"| R29 | style="background:white; color:black;"| R29 |- style="background:silver;color:black" | style="text-align:center;" colspan="10"| R30 | style="background:white; color:black;"| R30 |- style="background:silver;color:black" | style="text-align:center;" colspan="10"| {{0|''(zero)''}}R31 ''(zero)'' | style="background:white; color:black; white-space: nowrap"| R31, always zero |- |colspan="11" | '''Floating-point registers'''<br/> |- style="background:silver;color:black" | style="text-align:center;" colspan="10"| F0 | style="background:white; color:black;"| F0 |- style="background:silver;color:black" | style="text-align:center;" colspan="10"| F1 | style="background:white; color:black;"| F1 |- style="background:silver;color:black" | style="text-align:center;" colspan="10"| F2 | style="background:white; color:black;"| F2 |- | style="text-align:center;" colspan="10"| β’ | style="background:white; color:black;"| |- | style="text-align:center;" colspan="10"| β’ | style="background:white; color:black;"| |- | style="text-align:center;" colspan="10"| β’ | style="background:white; color:black;"| |- style="background:silver;color:black" | style="text-align:center;" colspan="10"| F29 | style="background:white; color:black;"| F29 |- style="background:silver;color:black" | style="text-align:center;" colspan="10"| F30 | style="background:white; color:black;"| F30 |- style="background:silver;color:black" | style="text-align:center;" colspan="10"| {{0|''(zero)''}}F31 ''(zero)'' | style="background:white; color:black"| F31, always zero |- |colspan="11" | '''Program counter''' |- style="background:silver;color:black" | style="text-align:center;padding-left:2.5em" colspan="8"| PC | style="text-align:center;" colspan="1"| 0 | style="text-align:center;" colspan="1"| 0 | style="background:white; color:black;"| '''P'''rogram '''C'''ounter |- |colspan="11" | '''Control registers'''<br/> |- style="background:silver;color:black" | style="text-align:center;" colspan="10"| LR0 | style="background:white; color:black;"| '''L'''ock '''R'''egister 0 <!--How many bits wide are these registers?--> |- style="background:silver;color:black" | style="text-align:center;" colspan="10"| LR1 | style="background:white; color:black;"| '''L'''ock '''R'''egister 1 |- style="background:silver;color:black" | style="text-align:center;" colspan="10"| FPCR | style="background:white; color:black;"| '''FP''' '''C'''ontrol '''R'''egister <!--How many bits wide is this register?--> |} |} The architecture defines a set of 32 integer [[Processor register|register]]s and a set of 32 floating-point registers in addition to a [[program counter]], two lock registers and a floating-point control register (FPCR). It also defines registers that were optional, implemented only if the implementation required them. Lastly, registers for [[PALcode]] are defined. The integer registers are denoted by R0 to R31 and floating-point registers are denoted by F0 to F31. The R31 and F31 registers are hardwired to zero and writes to those registers by instructions are ignored. Digital considered using a combined register file, but a split register file was determined to be better, as it enables two-chip implementations to have a register file located on each chip and integer-only implementations to omit the floating-point register file containing the floating-point registers. A split register file was also determined to be more suitable for multiple instruction issue due to the reduced number of read and write ports. The number of registers per register file was also considered, with 32 and 64 being contenders. Digital concluded that 32 registers was more suitable as it required less [[Die (integrated circuit)|die]] space, which improves clock frequencies. This number of registers was deemed not to be a major issue in respect to performance and future growth, as thirty-two registers could support at least eight-way instruction issue. The [[program counter]] is a 64-bit register which contains a longword-aligned virtual byte address, that is, the low two bits of the program counter are always zero. The PC is incremented by four to the address of the next instruction when an instruction is decoded. A lock flag and locked physical address register are used by the load-locked and store-conditional instructions for multiprocessor support. The floating-point control register (FPCR) is a 64-bit register defined by the architecture intended for use by Alpha implementations with [[IEEE 754]]-compliant floating-point hardware. ==Data types== In the Alpha architecture, a ''[[byte]]'' is defined as an [[8-bit computing|8-bit]] [[Data (computing)|datum]] (octet), a ''[[Word (data type)|word]]'' as a [[16-bit computing|16-bit]] datum, a ''[[longword]]'' as a [[32-bit computing|32-bit]] datum, a ''[[quadword]]'' as a [[64-bit computing|64-bit]] datum, and an ''[[octaword]]'' as a [[128-bit computing|128-bit]] datum. The Alpha architecture originally defined six data types: * Quadword (64-bit) integer * Longword (32-bit) integer * IEEE T-floating-point (double precision, 64-bit) * IEEE S-floating-point (single precision, 32-bit) To maintain a level of compatibility with the [[VAX]], the 32-bit architecture that preceded the Alpha, two other floating-point data types are included: * VAX G-floating point (double precision, 64-bit) * VAX F-floating point (single precision, 32-bit) VAX H-floating point (quad precision, 128-bit) was not supported,<ref>{{cite magazine |magazine=DEC Professional |page=62 |title=Alpha Bits β Migrating To The Future |quote=H floating datatypes are unavailable on Alpha |date=August 1992}}</ref> but another 128-bit floating-point option, X-floating point, is available on Alpha, but not VAX.<ref>{{cite web |url=https://www0.mi.infn.it/~calcolo/OpenVMS/ssb71/6459/6459p002.htm |title=Migrating an Application from OpenVMS VAX to OpenVMS Alpha |at=2.5.2 Data Types}}</ref><br>H and X have been described as similar, but not identical. Software emulation for H-floating is available from DEC, as is a source-code level converter named DECmigrate. ==Memory== The Alpha has a 64-bit linear [[virtual address]] space with no memory segmentation. Implementations can implement a smaller virtual address space with a minimum size of 43 bits. Although the unused bits were not implemented in hardware such as [[translation lookaside buffer|TLBs]], the architecture required implementations to check whether they are zero to ensure software compatibility with implementations with a larger (or full) virtual address space. ==Instruction formats== The Alpha ISA has a fixed instruction length of 32 bits. It has six instruction formats. {| class="wikitable" style="text-align:center;" |- | style="background-color:#DDDDFF"| '''Type''' | width="15px" | 31 | width="15px" | 30 | width="15px" | 29 | width="15px" | 28 | width="15px" | 27 | width="15px" | 26 | width="15px" | 25 | width="15px" | 24 | width="15px" | 23 | width="15px" | 22 | width="15px" | 21 | width="15px" | 20 | width="15px" | 19 | width="15px" | 18 | width="15px" | 17 | width="15px" | 16 | width="15px" | 15 | width="15px" | 14 | width="15px" | 13 | width="15px" | 12 | width="15px" | 11 | width="15px" | 10 | width="15px" | 9 | width="15px" | 8 | width="15px" | 7 | width="15px" | 6 | width="15px" | 5 | width="15px" | 4 | width="15px" | 3 | width="15px" | 2 | width="15px" | 1 | width="15px" | 0 |- | style="background-color:#EEEEFF"| Integer operate | colspan="6" | Opcode | colspan="5" | Ra | colspan="5" | Rb | colspan="3" | Unused | colspan="1" | 0 | colspan="7" | Function | colspan="5" | Rc |- | style="background-color:#EEEEFF"| Integer operate, literal | colspan="6" | Opcode | colspan="5" | Ra | colspan="8" | Literal | colspan="1" | 1 | colspan="7" | Function | colspan="5" | Rc |- | style="background-color:#EEEEFF"| Floating-point operate | colspan="6" | Opcode | colspan="5" | Ra | colspan="5" | Rb | colspan="11" | Function | colspan="5" | Rc |- | style="background-color:#EEEEFF"| Memory format | colspan="6" | Opcode | colspan="5" | Ra | colspan="5" | Rb | colspan="16" | Displacement |- | style="background-color:#EEEEFF"| Branch format | colspan="6" | Opcode | colspan="5" | Ra | colspan="21" | Displacement |- | style="background-color:#EEEEFF"| CALL_PAL format | colspan="6" | Opcode | colspan="26" | Function |- |} The integer operate format is used by integer instructions. It contains a 6-bit opcode field, followed by the Ra field, which specifies the register containing the first operand and the Rb field, specifies the register containing the second operand. Next is a 3-bit field which is unused and reserved. A 1-bit field contains a "0", which distinguished this format from the integer literal format. A 7-bit function field follows, which is used in conjunction with the opcode to specify an operation. The last field is the Rc field, which specifies the register which the result of a computation should be written to. The register fields are all 5 bits long, required to address 32 unique locations, the 32 integer registers. The integer literal format is used by integer instructions which use a literal as one of the operands. The format is the same as the integer operate format except for the replacement of the 5-bit Rb field and the 3 bits of unused space with an 8-bit literal field which is zero-extended to a 64-bit operand. The floating-point operate format is used by floating-point instructions. It is similar to the integer operate format, but has an 11-bit function field made possible by using the literal and unused bits which are reserved in integer operate format. The memory format is used mostly by load and store instructions. It has a 6-bit opcode field, a 5-bit Ra field, a 5-bit Rb field and a 16-bit displacement field. Branch instructions have a 6-bit opcode field, a 5-bit Ra field and a 21-bit displacement field. The Ra field specifies a register to be tested by a conditional branch instruction, and if the condition is met, the program counter is updated by adding the contents of the displacement field with the program counter. The displacement field contains a signed integer and if the value of the integer is positive, if the branch is taken then the program counter is incremented. If the value of the integer is negative, then program counter is decremented if the branch is taken. The range of a branch thus is Β±1 Mi instructions, or Β±4 MiB. The Alpha Architecture was designed with a large range as part of the architecture's forward-looking goal. The CALL_PAL format is used by the <code>CALL_PAL</code> instruction, which is used to call [[PALcode]] subroutines. The format retains the opcode field but replaces the others with a 26-bit function field, which contains an integer specifying a PAL subroutine. ==Instruction set== ===Control instructions=== The [[Control flow|control]] instructions consist of conditional and unconditional branches, and jumps. The conditional and unconditional branch instructions use the branch instruction format, while the jump instructions use the memory instruction format. Conditional branches test whether the least significant bit of a register is set or clear, or compare a register as a signed quadword to zero, and branch if the specified condition is true. The conditions available for comparing a register to zero are equality, inequality, less than, less than or equal to, greater than or equal to, and greater than. The new address is computed by longword aligning and sign extending the 21-bit displacement and adding it to the address of the instruction following the conditional branch. Unconditional branches update the program counter with a new address computed in the same way as conditional branches. They also save the address of the instruction following the unconditional branch to a register. There are two such instructions, and they differ only in the hints provided for the branch prediction hardware. There are four jump instructions. These all perform the same operation, saving the address of the instruction following the jump, and providing the program counter with a new address from a register. They differ in the hints provided to the branch prediction hardware. The unused displacement field is used for this purpose. ===Integer arithmetic=== The integer arithmetic instructions perform addition, multiplication, and subtraction on longwords and quadwords; and comparison on quadwords. There is no instruction(s) for division as the architects considered the implementation of division in hardware to be adverse to simplicity. In addition to the standard add and subtract instructions, there are ''scaled'' versions. These versions shift the second operand to the left by two or three bits before adding or subtracting. The ''Multiply Longword'' and ''Multiply Quadword'' instructions write the least significant 32 or 64 bits of a 64- or 128-bit result to the destination register, respectively. Since it is useful to obtain the most significant half, the ''Unsigned Multiply Quadword High'' (UMULH) instruction is provided. UMULH is used for implementing multi-precision arithmetic and division algorithms. The concept of a separate instruction for multiplication that returns the most significant half of a result was taken from [[DEC PRISM|PRISM]]. The instructions that operate on longwords ignore the most significant half of the register and the 32-bit result is sign-extended before it is written to the destination register. By default, the add, multiply, and subtract instructions, with the exception of UMULH and scaled versions of add and subtract, do not trap on overflow. When such functionality is required, versions of these instructions that perform overflow detection and trap on overflow are provided. The compare instructions compare two registers or a register and a literal and write '1' to the destination register if the specified condition is true or '0' if not. The conditions are equality, inequality, less than or equal to, and less than. With the exception of the instructions that specify the former two conditions, there are versions that perform signed and unsigned compares. The integer arithmetic instructions use the integer operate instruction formats. ===Logical and shift=== The logical instructions consist of those for performing [[Bitwise operation|bitwise]] logical operations and [[conditional move]]s on the integer registers. The bitwise logical instructions perform [[Logical conjunction|AND]], [[Sheffer stroke|NAND]], [[Logical NOR|NOR]], [[Logical disjunction|OR]], [[XNOR]], and [[XOR]] between two registers or a register and literal. The conditional move instructions test a register as a signed quadword to zero and move if the specified condition is true. The specified conditions are equality, inequality, less than or equal to, less than, greater than or equal to, and greater than. The shift instructions perform [[Arithmetic shift|arithmetic right shift]], and [[Logical shift|logical left and right shifts]]. The shift amount is given by a register or literal. Logical and shift instructions use the integer operate instruction formats. ==Extensions== ===Byte-Word Extensions (BWX)=== Later Alphas include byte-word extensions, a set of instructions to manipulate 8-bit and 16-bit data types. These instructions were first introduced in the [[Alpha 21164#Alpha 21164 (EV56)|21164A]] (EV56) microprocessor and are present in all subsequent implementations. These instructions perform operations that formerly required multiple instructions to implement, which improves code density and the performance of certain applications. BWX also makes the emulation of x86 machine code and the writing of [[device driver]]s easier.<ref>{{Cite journal |doi=10.1109/JSSC.1996.542313 |bibcode=1996IJSSC..31.1687G |title=A 433-MHz 64-b quad-issue RISC microprocessor |journal=IEEE Journal of Solid-State Circuits |volume=31 |issue=11 |pages=1687β1696 |year=1996 |last1=Gronowski |first1=P. E. |last2=Bowhill |first2=W. J. |last3=Donchin |first3=D. R. |last4=Blake-Campos |first4=R. P. |last5=Carlson |first5=D. A. |last6=Equi |first6=E. R. |last7=Loughlin |first7=B. J. |last8=Mehta |first8=S. |last9=Mueller |first9=R. O. |last10=Olesin |first10=A. |last11=Noorlag |first11=D. J. W. |last12=Preston |first12=R. P. |s2cid=39280205}}</ref> {| class="wikitable" |- ! width="120" | Mnemonic ! width="360" | Instruction |- | <code>LDBU</code> | Load Zero-Extended Byte from Memory to Register |- | <code>LDWU</code> | Load Zero-Extended Word from Memory to Register |- | <code>SEXTB</code> | Sign Extend Byte |- | <code>SEXTW</code> | Sign Extend Word |- | <code>STB</code> | Store Byte from Register to Memory |- | <code>STW</code> | Store Word from Register to Memory |- |} ===Motion Video Instructions (MVI)=== Motion Video Instructions (MVI) was an instruction set extension to the Alpha ISA that added instructions for [[single instruction, multiple data]] (SIMD) operations.<ref>Gwennap, Linley (18 November 1996). "Digital, MIPS Add Multimedia Extensions". ''[[Microprocessor Report]]''.</ref> Alpha implementations that implement MVI, in chronological order, are the [[Alpha 21164#Alpha 21164PC|Alpha 21164PC]] (PCA56 and PCA57), [[Alpha 21264]] (EV6) and [[Alpha 21364]] (EV7). Unlike most other SIMD instruction sets of the same period, such as [[MIPS architecture|MIPS]]' [[MDMX]] or [[SPARC]]'s [[Visual Instruction Set]], but like [[PA-RISC]]'s [[Multimedia Acceleration eXtensions]] (MAX-1, MAX-2), MVI was a simple instruction set composed of a few instructions that operate on integer data types stored in existing integer registers. MVI's simplicity is due to two reasons. Firstly, Digital had determined that the [[Alpha 21164]] was already capable of performing [[DVD]] decoding through software, therefore not requiring hardware provisions for the purpose, but was inefficient in [[MPEG-2]] encoding. The second reason is the requirement to retain the fast cycle times of implementations. Adding many instructions would have complicated and enlarged the instruction decode logic, reducing an implementation's clock frequency. MVI consists of 13 instructions: {| class="wikitable" |- ! width="120" | Mnemonic ! width="360" | Instruction |- | <code>MAXSB8</code> | Vector Signed Byte Maximum |- | <code>MAXSW4</code> | Vector Signed Word Maximum |- | <code>MAXUB8</code> | Vector Unsigned Byte Maximum |- | <code>MAXUW4</code> | Vector Unsigned Word Maximum |- | <code>MINSB8</code> | Vector Signed Byte Minimum |- | <code>MINSW4</code> | Vector Signed Word Minimum |- | <code>MINUB8</code> | Vector Unsigned Byte Minimum |- | <code>MINUW4</code> | Vector Unsigned Word Minimum |- | <code>PERR</code> | Pixel Error |- | <code>PKLB</code> | Pack Longwords to Bytes |- | <code>PKWB</code> | Pack Words to Bytes |- | <code>UNPKBL</code> | Unpack Bytes to Longwords |- | <code>UNPKBW</code> | Unpack Bytes to Words |- |} {{Multimedia extensions}} ===Floating-point Extensions (FIX)=== Floating-point extensions (FIX) are an extension to the Alpha Architecture. It introduces nine instructions for floating-point square-root and for transferring data to and from the integer registers and floating-point registers. The [[Alpha 21264]] (EV6) is the first microprocessor to implement these instructions. {| class="wikitable" |- ! width="120" | Mnemonic ! width="360" | Instruction |- | <code>FTOIS</code> | Floating-point to Integer Register Move, S_floating |- | <code>FTOIT</code> | Floating-point to Integer Register Move, T_floating |- | <code>ITOFF</code> | Integer to Floating-point Register Move, F_floating |- | <code>ITOFS</code> | Integer to Floating-point Register Move, S_floating |- | <code>ITOFT</code> | Integer to Floating-point Register Move, T_floating |- | <code>SQRTF</code> | Square root F_floating |- | <code>SQRTG</code> | Square root G_floating |- | <code>SQRTS</code> | Square root S_floating |- | <code>SQRTT</code> | Square root T_floating |- |} ===Count Extensions (CIX)=== Count Extensions (CIX) is an extension to the architecture which introduces three instructions for counting bits. These instructions are categorized as integer arithmetic instructions. They were first implemented on the [[Alpha 21264#Alpha 21264A|Alpha 21264A]] (EV67). {| class="wikitable" |- ! width="120" | Mnemonic ! width="360" | Instruction |- | <code>CTLZ</code> | Count Leading Zero |- | <code>CTPOP</code> | Count Population |- | <code>CTTZ</code> | Count Trailing Zero |- |} ==Implementations== At the time of its announcement, Alpha was heralded as an architecture for the next 25 years. While this was not to be, Alpha has nevertheless had a reasonably long life. The first version, the ''[[Alpha 21064]]'' (otherwise named the ''EV4'') was introduced in November 1992 running at up to 192 MHz; a slight shrink of the die (the ''EV4S'', shrunk from 0.75 ΞΌm to 0.675 ΞΌm) ran at 200 MHz a few months later. The 64-bit processor was a [[superpipelined]] and [[superscalar]] design, like other RISC designs, but nevertheless outperformed them all and DEC touted it as the world's fastest processor. Careful attention to circuit design, a hallmark of the Hudson design team, like a huge centralized clock circuitry, allowed them to run the CPU at higher speeds, even though the microarchitecture was fairly similar to other RISC chips. In comparison, the less expensive [[Original Intel Pentium (P5 microarchitecture)|Intel Pentium]] ran at 66 MHz when it was launched the following spring. The ''[[Alpha 21164]]'' or ''EV5'' became available in 1995 at processor frequencies of up to 333 MHz. In July 1996 the line was speed bumped to 500 MHz, in March 1998 to 666 MHz. Also in 1998 the ''[[Alpha 21264]]'' (''EV6'') was released at 450 MHz, eventually reaching (in 2001 with the ''21264C''/''EV68CB'') 1.25 GHz. In 2003, the ''[[Alpha 21364]]'' or ''EV7'' ''Marvel'' was launched, essentially an EV68 core with four 1.6 GB/s{{efn|In the context of data transfer, 1 GB is used to mean 1 billion bytes}} inter-processor communication links for improved [[multiprocessor]] system performance, running at 1 or 1.15 GHz. In 1996, the production of Alpha chips was licensed to [[Samsung Electronics|Samsung Electronics Company]]. Following the purchase of Digital by [[Compaq]] the majority of the Alpha products were placed with [[API NetWorks]], Inc. (formerly Alpha Processor Inc.), a private company funded by Samsung and Compaq. In October 2001, [[Microway]] became the exclusive sales and service provider of API NetWorks' Alpha-based product line. On June 25, 2001, Compaq announced that Alpha would be phased out by 2004 in favor of [[Intel]]'s [[Itanium]], canceled the planned ''[[Alpha 21464|EV8]]'' chip, and sold all Alpha intellectual property to [[Intel]].<ref name="zdnet-compaq"/> [[Hewlett-Packard]] merged with Compaq in 2002; HP announced that development of the Alpha series would continue for a few more years, including the release of a 1.3 GHz EV7 variant named the ''EV7z''. This would be the final iteration of Alpha, the 0.13 ΞΌm ''EV79'' also being canceled. Alpha is also implemented in the ''Piranha'', a research prototype developed by Compaq's Corporate Research and Nonstop Hardware Development groups at the Western Research Laboratory and Systems Research Center. ''Piranha'' is a [[Multi-core processor|multicore]] design for [[transaction processing]] workloads that contains eight simple cores. It was described at the 27th Annual International Symposium on Computer Architecture in June 2000.<ref>{{cite conference|author1=Luiz AndrΓ© Barroso |author2=Kourosh Gharachorloo |author3=Robert McNamara |author4=Andreas Nowatzyk |author5=Shaz Qadeer |author6=Barton Sano |author7=Scott Smith |author8=Robert Stets |author9=Ben Verghese|year=2000|title=Piranha: A Scalable Architecture Based on Single-Chip Multiprocessing|doi=10.1145/339647.339696|conference=27th Annual International Symposium on Computer Architecture|doi-access=free }}</ref> Early revisions of the [[Sunway (processor)|Sunway]] architecture are claimed to be based on Alpha, however since the [[SW26010]], Sunway uses a new instruction set architecture unrelated to Alpha.<ref>{{cite web|url=http://laotsao.wordpress.com/2011/10/29/sw1600-and-alpha-21164/ |title=SW1600 and Alpha 21164|access-date=2011-10-29 |author=Hung-Sheng Tsao |date=2011-10-29 |work=LaoTsao's Weblog}}</ref><ref name=dongarra2016>{{Cite web|url=http://www.netlib.org/utk/people/JackDongarra/PAPERS/sunway-report-2016.pdf|title=Report on the Sunway TaihuLight System|last=Dongarra|first=Jack|date=2016-06-20|website=www.netlib.org|access-date=2016-06-20}}</ref> ===Model history=== {| class="wikitable sortable" style="font-size:97%; text-align:center;" ! Model ! Model number ! Year ! Frequency [MHz] ! Process [ΞΌm] ! Transistors [millions] ! Die size [mm<sup>2</sup>] ! IO pins ! Power [W] ! Voltage ! Dcache [KB]<ref group=lower-alpha>In the context of cache memory, 1 KB = 1024 [[byte]]s; 1 MB = 1024 KB</ref> ! Icache [KB] ! Scache ! Bcache ! [[#ISA|ISA]] |- !EV4 |[[Alpha 21064|21064]]||1992||100–200||0.75||1.68||234||290||30||3.3||8||8||β||128 KB–16 MB|| |- !EV4S |21064||1993||100–200||0.675||1.68||186||290||27||3.3||8||8||β||128 KB–16 MB|| |- !EV45 |21064A||1994||200–300||0.5||2.85||164||||33||3.3||16||16||β||256 KB–16 MB|| |- !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 |[[Alpha 21164|21164]]||1995||266–500||0.5||9.3||299||296||56||3.3/2.5||8||8||96 KB||Up to 64 MB||R |- !EV56 |21164A||1996||366–666<ref name="facts and comments"/>||0.35||9.66<ref name="facts and comments"/>||209||||31–55<ref name="facts and comments"/>||3.3/2.5<ref name="facts and comments"/>||8||8||96 KB||Up to 64 MB||R,B |- !PCA56 |21164PC||1997||400–533||0.35||3.5||141||264||26–35||3.3/2.5||8||16||β||512 KB–4 MB||R,B,M |- !PCA57 |21164PC|| ||600–666||0.28||5.7||101||283||18–23||2.5/2.0||16||32<ref name="facts and comments">{{cite web |url = http://www.alasir.com/articles/alpha_history/ |title = Alpha: The History in Facts and Comments |access-date = Nov 22, 2008 |author = Paul V. Bolotoff |date = 21 April 2007 |archive-url = https://web.archive.org/web/20131203130550/http://alasir.com/articles/alpha_history/ |archive-date = 3 December 2013 |url-status = dead }}</ref> ||β||512 KB–4 MB||R,B,M |- !EV6 |[[Alpha 21264|21264]]||1998||450–600||0.35||15.2||314||389||73||2.0||64||64||β||2–8 MB||R,B,M,F |- !EV67 |21264A||1999||600–750||0.25||15.2||210||389|| ||2.0||64||64||β||2–8 MB||R,B,M,F,C |- !EV68AL |21264B||2001||800–833||0.18||15.2||125|| || ||1.7||64||64||β||2–8 MB||R,B,M,F,C,T |- !EV68CB |21264C||2001||1000–1250||0.18||15.2||125|| ||65–75||1.65||64||64||β||2–8 MB||R,B,M,F,C,T |- !EV68CX |21264D|| || || || || || || ||1.65||64||64||β||2–8 MB||R,B,M,F,C,T |- !EV7 |[[Alpha 21364|21364]]||2003||1000–1150||0.18||130||397||||125||1.5||64||64||1.75 MB||β||R,B,M,F,C,T |- !EV7z |21364||2004||1300||0.18||130||397||||125||1.5||64||64||1.75 MB||β||R,B,M,F,C,T |- !colspan=16| Cancelled |- !EV78/EV79 |21364A||Slated for 2004||1700||0.13||152||300||||120||1.2||64||64||1.75 MB||β||R,B,M,F,C,T |- !EV8 |[[Alpha 21464|21464]]||Slated for 2003||1200–2000||0.125||250||420||1800||??||1.2||64||64||3 MB||β||R,B,M,F,C,T |} ;ISA extensions: * '''R''' β Hardware support for rounding to infinity and negative infinity.<ref>{{cite web | url = http://www.mostang.com/~davidm/papers/expo97/paper/doc003.html | title = Overview of Alpha Family | access-date = Dec 9, 2009 | author = David Mosberger | archive-date = January 20, 2009 | archive-url = https://web.archive.org/web/20090120232139/http://mostang.com/~davidm/papers/expo97/paper/doc003.html | url-status = live }}</ref> * '''B''' β BWX, the "Byte/Word Extension", adding instructions to allow 8- and 16-bit operations from memory and I/O * '''M''' β MVI, "multimedia" instructions * '''F''' β FIX, instructions to move data between integer and floating-point registers and for square root * '''C''' β CIX, instructions for counting and finding bits * '''T''' β support for prefetch with modify intent to improve the performance of the first attempt to acquire a lock ==Performance== To illustrate the comparative performance of Alpha-based systems, some [[Standard Performance Evaluation Corporation]] (SPEC) performance numbers (SPECint95, SPECfp95) are listed below. Note that the SPEC results claim to report the measured performance of a whole computer system (CPU, bus, memory, compiler optimizer), not just the CPU. Also note that the benchmark and scale changed from 1992 to 1995. However, the figures give a rough impression of the performance of the Alpha architecture (64-bit), compared with the contemporary HP (64-bit) and Intel-based offerings (32-bit). Perhaps the most obvious trend is that while Intel could always get reasonably close to Alpha in integer performance, in floating-point performance the difference was considerable. On the other side, HP ([[PA-RISC]]) is also reasonably close to Alpha, but these CPUs are running at significantly lower clock rates (MHz). The tables lack two important values: the power consumption and the price of a CPU. {{Col-begin}} {{Col-2}} {| class="wikitable" style="text-align:center; font-size:98%" ! width="150"| System ! width="80"| CPU ! width="30"| MHz ! width="40"| integer ! width="50"| floating point |- |+SPEC benchmark 1995 performance comparison (using ''SPECint95'' and ''SPECfp95'' results [http://www.spec.org/cpu95/results/]) |- !AlphaServer 8400 5/350 |21164 (EV5)||350||10.1||14.2 |- !Intel Alder System (200 MHz, 256 KB L2) |[[Pentium Pro]]||200||8.9||6.75 |- ![[HP 9000]] C160 |[[PA-8000]]||160||10.4||16.3 |- |} {{Col-2}} {| class="wikitable" style="text-align:center; font-size:98%" ! width="150"| System ! width="80"| CPU ! width="30"| MHz ! width="40"| integer ! width="50"| floating point |- |+2000 performance comparison (using ''[[SPECint]]95'' and ''SPECfp95'' results) |- !AlphaServer ES40 6/833 |21264 (EV6)||833||50.0||100.0 |- !Intel VC820 motherboard |[[Pentium III]]||1000||46.8||31.9 |- !HP 9000 C3600 |[[PA-8600]]||552||42.1||64.0 |- |} {{Col-end}} ==Alpha-based systems== The first generation of DEC Alpha-based systems comprise the [[DEC 3000 AXP]] series workstations and low-end servers, [[DEC 4000 AXP]] series mid-range servers, and [[DEC 7000/10000 AXP|DEC 7000 AXP and 10000 AXP]] series high-end servers. The DEC 3000 AXP systems use the same [[TURBOchannel]] bus as the prior [[MIPS architecture|MIPS]]-based DECstation models, whereas the 4000 is based on [[Futurebus]]+ and the 7000/10000 share an architecture with corresponding [[VAX]] models. DEC also produced a [[personal computer]] (PC) configuration Alpha workstation with an [[Extended Industry Standard Architecture]] (EISA) bus, the [[DECpc AXP 150]] (codename ''Jensen'', also named the DEC 2000 AXP). This is the first Alpha system to support [[Windows NT]]. DEC later produced Alpha versions of their Celebris XL and [[Digital Personal Workstation]] PC lines, with 21164 processors. Digital also produced [[single-board computer]]s based on the [[VMEbus]] for embedded and industrial use. The first generation includes the 21068-based AXPvme 64 and AXPvme 64LC, and the 21066-based AXPvme 160. These were introduced on March 1, 1994. Later models such as the AXPvme 100, AXPvme 166 and AXPvme 230 are based on the 21066A processor, while the Alpha VME 4/224 and Alpha VME 4/288 are based on the 21064A processor. The last models, the Alpha VME 5/352 and Alpha VME 5/480, are based on the 21164 processor. The 21066 chip is used in the [[DEC Multia]] VX40/41/42 compact workstation and the ALPHAbook 1 laptop from Tadpole Technology. In 1994, DEC launched a new range of [[AlphaStation]] and [[AlphaServer]] systems. These use 21064 or 21164 processors and introduced the [[Peripheral Component Interconnect|PCI]] bus, [[VGA]]-compatible [[frame buffer]]s and [[PS/2 connector|PS/2]]-style keyboards and mice. The AlphaServer 8000 series supersedes the DEC 7000/10000 AXP and also employs XMI and FutureBus+ buses. The AlphaStation XP1000 is the first workstation based on the 21264 processor. Later AlphaServer/Station models based on the 21264 are categorised into ''DS'' (departmental server), ''ES'' (enterprise server) or ''GS'' (global server) families. The final 21364 chip is used in the AlphaServer ES47, ES80 and GS1280 models and the AlphaStation ES47. A number of [[Original equipment manufacturer|OEM]] [[motherboard]]s were produced by DEC, such as the 21066 and 21068-based AXPpci 33 "NoName", which was part of a major push into the OEM market by the company,<ref>Reinhardt Krause. "DEC launching Alpha board push". Electronic News, April 4, 1994.</ref> the 21164-based AlphaPC 164 and AlphaPC 164LX, the 21164PC-based AlphaPC 164SX and AlphaPC 164RX and the 21264-based AlphaPC 264DP. Several third parties such as Samsung and API also produced OEM motherboards such as the API UP1000 and UP2000. To assist third parties in developing hardware and software for the platform, DEC produced Evaluation Boards, such as the EB64+ and EB164 for the Alpha 21064A and 21164 microprocessors respectively. The 21164 and 21264 processors were used by [[NetApp]] in various [[network-attached storage]] systems, while the 21064 and 21164 processors were used by [[Cray]] in their [[Cray T3D|T3D]] and [[Cray T3E|T3E]] [[massively parallel]] supercomputers. ===Supercomputers=== The fastest supercomputer based on Alpha processors was the [[ASCI Q]] at Los Alamos National Laboratory. The machine was built as an HP AlphaServer SC45/GS Cluster. It had 4096 Alpha (21264 EV-68, 1.25 GHz) CPUs, and reached an R<sub>max</sub> of 7.727 [[TFLOPS]].<ref>{{cite web |url=http://www.sandia.gov/supercomp/sc2002/flyers/ASCI_Q_rev.pdf |title=The ASCI Q System: 30 TeraOPS Capability at Los Alamos National Laboratory |author=Los Alamos National Laboratories |year=2002 |access-date=2010-06-06 |url-status=dead |archive-url=https://web.archive.org/web/20110112020420/http://www.sandia.gov/supercomp/sc2002/flyers/ASCI_Q_rev.pdf |archive-date=2011-01-12 }}</ref> ==Notes== {{Notelist}} ==References== {{Reflist|30em}} ==External links== * [http://www.o3one.org/hwdocs/alpha/alphaahb.pdf The Alpha Architecture Handbook, Version 4] * [https://www.cs.cmu.edu/afs/cs/academic/class/15213-f98/doc/alpha-ref.pdf The Alpha Architecture Handbook, Version 3] * [https://www.hpl.hp.com/hpjournal/dtj/vol4num4/toc.htm Digital Technical Journal, Volume 4, Number 4, Special Issue 1992 Alpha AXP Architecture and Systems] {{Webarchive|url=https://web.archive.org/web/20230123052748/https://www.hpl.hp.com/hpjournal/dtj/vol4num4/toc.htm |date=2023-01-23 }} This issue contains several articles from Alpha's Architects * [https://web.archive.org/web/20080404230535/http://h18002.www1.hp.com/alphaserver/technology/chip-docs.html Archived technical documentation library] This link features the hardware reference manuals and datasheets for Alpha microprocessors, chipsets and OEM motherboards. Includes the Alpha Architecture Handbook and various programming manuals. * [http://queue.acm.org/detail.cfm?id=957732 A Conversation with Dan Dobberpuhl (October 1, 2003)] * [https://www.cs.auckland.ac.nz/courses/compsci210s2c/resources/AlphaArch.pdf Dr. Bruce Hutton's lecture notes on Computer Architecture] {{Digital Equipment Corporation}} {{DEC hardware}} {{Compaq}} {{RISC architectures}} {{Processor technologies}} {{Authority control}} [[Category:Alpha architecture| ]] [[Category:Digital Equipment Corporation]] [[Category:64-bit computers]]
Edit summary
(Briefly describe your changes)
By publishing changes, you agree to the
Terms of Use
, and you irrevocably agree to release your contribution under the
CC BY-SA 4.0 License
and the
GFDL
. You agree that a hyperlink or URL is sufficient attribution under the Creative Commons license.
Cancel
Editing help
(opens in new window)
Pages transcluded onto the current version of this page
(
help
)
:
Template:0
(
edit
)
Template:Authority control
(
edit
)
Template:Cite book
(
edit
)
Template:Cite conference
(
edit
)
Template:Cite interview
(
edit
)
Template:Cite journal
(
edit
)
Template:Cite magazine
(
edit
)
Template:Cite mailing list
(
edit
)
Template:Cite web
(
edit
)
Template:Clarify
(
edit
)
Template:Col-2
(
edit
)
Template:Col-begin
(
edit
)
Template:Col-end
(
edit
)
Template:Compaq
(
edit
)
Template:DEC hardware
(
edit
)
Template:Dead link
(
edit
)
Template:Digital Equipment Corporation
(
edit
)
Template:Efn
(
edit
)
Template:Infobox CPU architecture
(
edit
)
Template:Main
(
edit
)
Template:Multimedia extensions
(
edit
)
Template:Multiple image
(
edit
)
Template:Notelist
(
edit
)
Template:Processor technologies
(
edit
)
Template:RISC architectures
(
edit
)
Template:Reflist
(
edit
)
Template:Short description
(
edit
)
Template:Webarchive
(
edit
)