{"id":280,"date":"2020-08-18T19:23:47","date_gmt":"2020-08-18T20:23:47","guid":{"rendered":"http:\/\/www.linux-tutorial.info\/?page_id=77"},"modified":"2020-08-22T19:25:16","modified_gmt":"2020-08-22T20:25:16","slug":"this-is-the-page-title-toplevel-115","status":"publish","type":"page","link":"http:\/\/www.linux-tutorial.info\/?page_id=280","title":{"rendered":"Alpha Processors"},"content":{"rendered":"\n<title>Alpha Processors<\/title>\n<p>\nThe Alpha processor from the Digital Equipment Corporation (DEC) is the first\nnon-Intel-based processor on which Linux was commercially available and is\nsubstantially different from its Intel cousins. The most significant difference\nis that the Alpha AXP is a <glossary>Reduced Instruction Set Computer<\/glossary>\n(RISC), as compared to\nthe Intel, which is a <glossary>Complex Instruction Set Computer<\/glossary> (CISC).\nWithout turning\nthis book into a textbook on microprocessor design, I can simply say that the\ndifference is that RISC has fewer instructions (the instruction set is reduced)\nand therefore takes more instructions to do a specific job. A CISC processor has\nmore instructions and takes fewer instructions to do the same job.\n<\/p>\n<p>\nImagine someone told you to stand up and open the door.\nThe <glossary>CISC<\/glossary> instruction\nmight simply say, &#8220;Go open the door.&#8221; Using what&#8217;s built into your\n<glossary>CPU<\/glossary> (your brain), you know to translate this to &#8220;stand up\nand open the door.&#8221; On the other hand, the <glossary>RISC<\/glossary> instructions\nmight be &#8220;Stand up. Turn left and take two paces forward. Turn right, and take\nthree paces forward.\nRaise right hand, etc.&#8221; There might then be a <glossary>CISC<\/glossary> instruction\nthat says, &#8220;Go open the window.&#8221; However, the <glossary>RISC<\/glossary> instructions\nmight be &#8220;Stand up. Turn left, and take two paces forward. Turn left, and take three\npaces forward, etc.&#8221;<\/p>\n<p>\nNot only does the <glossary>CISC<\/glossary> give fewer instructions, it also\nrequires less logic\ncircuitry. As a result, an Alpha AXP processor can run at higher speeds than an\nIntel. This does <i>not<\/i> make the Alpha AXP intrinsically faster! Take our\nexample. I simply tell you to open the window, and you do it. However, giving\nyou each instruction individually takes more time. One significant difference is\nthat when the PentiumPro just  broke the 200Mhz barrier, the Alphas\nwere more than twice that.\n<\/p>\n<p>\nEven if the increase in clock speed is not considered, the design of the\nAlpha AXP  enables it to do more work per cycle. Several issues were addressed to\nhelp eliminate any aspect of the processor that would hinder multiple\ninstruction issues. For example, there are no branch delay or skip instructions.\nAs a result of its design, the Alpha AXP (as of this writing) can get up to 10 new\ninstructions per cycle.\n<\/p>\n<p>\nIn addition, the Alpha AXP was designed to run with multiple processors, though\nthat&#8217;s not to say that it  can&#8217;t run as a single processor. The Alpha AXP was\ndesigned with several instructions that simplify adding multiple processors.\nUnlike other processors, this functionality was designed from the beginning and\ndidn&#8217;t have to be built onto an existing system.\n<\/p>\n<p>\nOne advantage of Alpha AXP is that it doesn&#8217;t have a lot of baggage to carry\naround.  The Intel 80&#215;86 family is based on the 8086 and is completely\nbackward-compatible. If you have an 8086 program, it will run on an PentiumPro.\nThe Alpha AXP was developed with a full 64-bit architecture, although it has a few\n32-bit operations for backward compatibility.\n<\/p>\n<p>\nPart of the 64-bit architecture is the Alphas 64-bit virtual\n<glossary>address<\/glossary> space. All values (registers, addresses, integers,\netc.) are operated on as full 64-bit quantities. Unlike with the Intel\nprocessors, there are no segmented addresses. In some cases, the\n<glossary>operating system<\/glossary> may restrict the number of bits that is\nused to translate the virtual address; however, at least 43 bits are used.\n<\/p>\n<p>\nLike the Intel, Alphas memory protection is done on a per-page basis. The\ndesign of  the <glossary>paging<\/glossary> mechanism in Intel specifies a 4KiB\npage, but the Alpha AXP can have 8KiB, 16KiB, 32KiB, or even 64KiB pages. In addition,\nthe Alpha AXP also uses many-to-one page mapping, as does the Intel, so that\nmultiple processors can have a <glossary>virtual memory<\/glossary>\n<glossary>address<\/glossary> that references the same page in <glossary>physical\nmemory<\/glossary>.\n<\/p>\n<p>\n<!-- START copyrightDavid Rusling:1996-1999:GNU General Public License -->\nThe Alpha AXP architecture is a 64-bit load\/store <glossary>RISC<\/glossary> architecture\ndesigned with speed in mind.\nAll registers are 64 bits in length; 32 integer <glossary term=\"register\">registers<\/glossary>\nand 32 floating point registers.\nInteger register 31 and floating point register 31 are\nused for null operations.  A read from them generates a zero value and\na write to them has no effect.\nAll instructions are 32 bits long and memory operations are either reads\nor writes.\nThe architecture allows different implementations so long as the\nimplementations follow the architecture.\n<p>\nThere are no instructions that operate directly on values stored in\nmemory; all data manipulation is done between registers.\nSo, if you want to increment a counter in memory, you first read it\ninto a register, then modify it and write it out.\nThe instructions only interact with each other by one instruction\nwriting to a register or memory location and another register reading\nthat register or memory location.\nOne interesting feature of Alpha AXP is that there are instructions\nthat can generate flags, such as testing if two registers are equal,\nthe result is not stored in a processor status register, but is instead\nstored in a third register. This may seem strange at first, but removing this\ndependency from a status register means that it is much easier to build a\n<glossary>CPU<\/glossary> which\ncan issue multiple instructions every cycle.\nInstructions on unrelated registers do not have to wait for each other\nto execute as they would if there were a single status register.\nThe lack of direct operations on memory and the large number of registers\nalso help issue multiple instructions.\n<p>\nThe Alpha AXP&nbsp;architecture uses a set of subroutines, called privileged\narchitecture library code (PALcode).\nPALcode is specific to the operating system, the <glossary>CPU<\/glossary> implementation\nof the Alpha AXP&nbsp;architecture and to the system hardware.\nThese subroutines provide operating system primitives  for context\nswitching, interrupts, exceptions and memory management.\nThese subroutines can be invoked by hardware or by CALL_PAL\ninstructions.\nPALcode is written in standard Alpha AXP assembler with some\nimplementation specific extensions to provide direct access to low\nlevel hardware functions, for example internal processor registers.\nPALcode is executed in PALmode, a privileged mode that stops some\nsystem events happening and allows the PALcode complete control of\nthe physical system hardware.\n<!-- END copyrightDavid Rusling:1996-1999:GNU General Public License -->\n","protected":false},"excerpt":{"rendered":"<p>Alpha Processors The Alpha processor from the Digital Equipment Corporation (DEC) is the first non-Intel-based processor on which Linux was commercially available and is substantially different from its Intel cousins. The most significant difference is that the Alpha AXP is &hellip; <a href=\"http:\/\/www.linux-tutorial.info\/?page_id=280\">Continue reading <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-280","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"http:\/\/www.linux-tutorial.info\/index.php?rest_route=\/wp\/v2\/pages\/280","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/www.linux-tutorial.info\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"http:\/\/www.linux-tutorial.info\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"http:\/\/www.linux-tutorial.info\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/www.linux-tutorial.info\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=280"}],"version-history":[{"count":1,"href":"http:\/\/www.linux-tutorial.info\/index.php?rest_route=\/wp\/v2\/pages\/280\/revisions"}],"predecessor-version":[{"id":499,"href":"http:\/\/www.linux-tutorial.info\/index.php?rest_route=\/wp\/v2\/pages\/280\/revisions\/499"}],"wp:attachment":[{"href":"http:\/\/www.linux-tutorial.info\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=280"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}