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
IBM 801
(section)
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!
==History== ===Original concept=== In 1974, IBM began examining the possibility of constructing a [[telephone switch]] to handle one million calls an hour, or about 300 calls per second. They calculated that each call would require 20,000 instructions to complete, and when timing overhead and other considerations were added, such a machine required performance of about 12 MIPS.{{sfn|Cocke|Markstein|1990|p=4}} This would require a significant advance in performance; their current top-of-the-line machine, the [[IBM System/370 Model 168]] of late 1972, offered about 3 MIPS.<ref>{{cite web |url=https://alt.folklore.computers.narkive.com/9nl6cj2Q/on-the-370-165-and-the-360-85 |title= On the 370/165 and the 360/85 |first= John |last= Savard}}</ref> The group working on this project at the [[Thomas J. Watson Research Center]], including [[John Cocke (computer scientist)|John Cocke]], designed a processor for this purpose. To reach the required performance, they considered the sort of operations such a machine required and removed any that were not appropriate. This led to the removal of a [[floating-point unit]] for instance, which would not be needed in this application. More critically, they also removed many of the instructions that worked on data in [[main memory]] and left only those instructions that worked on the internal [[processor register]]s, as these were much faster to use and the simple code in a telephone switch could be written to use only these types of instructions. The result of this work was a conceptual design for a simplified processor with the required performance.{{sfn|Cocke|Markstein|1990|p=4}} The telephone switch project was canceled in 1975, but the team had made considerable progress on the concept and in October IBM decided to continue it as a general-purpose design. With no obvious project to attach it to, the team decided to call it the "801" after the building they worked in. For the general-purpose role, as opposed to the dedicated telephone system, the team began to consider real-world programs that would be run on a typical [[minicomputer]]. IBM had collected enormous amounts of statistical data on the performance of real-world workloads on their machines and this data demonstrated that over half the time in a typical program was spent performing only five instructions: load value from memory, store value to memory, adding fixed-point numbers, comparing fixed-point numbers, and branching based on the result of those comparisons. This suggested that the same simplified processor design would work just as well for a general-purpose minicomputer as a special-purpose switch.{{sfn|Cocke|Markstein|1990|p=5}} ===Rationale against use of microcode=== This conclusion flew in the face of contemporary processor design, which was based on the concept of using [[microcode]]. IBM had been among the first to make widespread use of this technique as part of their [[System/360]] series. The 360s, and later the 370s, came in a variety of performance levels that all ran the same [[machine language]] code. On the high-end machines, many of these instructions were implemented directly in hardware, like a [[floating point unit]], while low-end machines could instead simulate those instructions using a sequence of other instructions encoded in microcode. This allowed a single [[application binary interface]] to run across the entire lineup and allowed the customers to feel confident that if more performance was ever needed they could move up to a faster machine without any other changes.<ref>{{cite web <!--Deny Citation Bot--> | title=The IBM System/360 and the Use of Microcode |url=http://scihi.org/ibm-system360-microcode/ |website=SciHub |first=Harald |last=Sack |date= 7 April 2016}}</ref> Microcode allowed a simple processor to offer many instructions, which had been used by the designers to implement a wide variety of [[addressing mode]]s. For instance, an instruction like <code>ADD</code> might have a dozen variations, one that adds two numbers in internal registers, one that adds a register to a value in memory, one that adds two values from memory, etc. This allowed the programmer to select the exact version they needed for any particular task. The processor would read that instruction and use microcode to break it into a series of internal instructions. For instance, adding two numbers in memory might be implemented by loading those two numbers from memory into registers, adding them, and then storing the sum back to memory.{{sfn|Cocke|Markstein|1990|p=5}} The idea of offering all possible addressing modes for all instructions became a goal of processor designers, the concept becoming known as an [[orthogonal instruction set]]. The 801 team noticed a side-effect of this concept; when faced with the plethora of possible versions of a given instruction, [[compiler]] authors would usually pick a single version. This was typically the one that was implemented in hardware on the low-end machines. That ensured that the machine code generated by the compiler would run as fast as possible on the entire lineup. While using other versions of instructions might run even faster on a machine that implemented them in hardware, the complexity of knowing which one to pick on an ever-changing list of machines made this extremely unattractive, and compiler authors largely ignored these possibilities.{{sfn|Cocke|Markstein|1990|p=5}} As a result, the majority of the instructions available in the instruction set were never used in compiled programs. And it was here that the team made the key realization of the 801 project: <blockquote>Imposing microcode between a computer and its users imposes an expensive overhead in performing the most frequently executed instructions.{{sfn|Cocke|Markstein|1990|p=5}}</blockquote> Microcode takes a non-zero time to examine the instruction before it is performed. The same underlying processor with the microcode removed would eliminate this overhead and run those instructions faster. Since microcode essentially ran small [[subroutine]]s dedicated to a particular hardware implementation, it was ultimately performing the same basic task that the compiler was, implementing higher-level instructions as a sequence of machine-specific instructions. Simply removing the microcode and implementing that in the compiler could result in a faster machine.{{sfn|Cocke|Markstein|1990|p=5}} One concern was that programs written for such a machine would take up more memory; some tasks that could be accomplished with a single instruction on the 370 would have to be expressed as multiple instructions on the 801. For instance, adding two numbers from memory would require two load-to-register instructions, a register-to-register add, and then a store-to-memory. This could potentially slow the system overall if it had to spend more time reading instructions from memory than it formerly took to decode them. As they continued work on the design and improved their compilers, they found that overall program length continued to fall, eventually becoming roughly the same length as those written for the 370.{{sfn|Cocke|Markstein|1990|pp=6-7}} ===First implementations=== The initially proposed architecture was a machine with sixteen [[24-bit]] registers and without [[virtual memory]].<ref>{{cite web|url=http://www.bitsavers.org/pdf/ibm/system801/The_801_Minicomputer_an_Overview_Sep76.pdf|title=The 801 Minicomputer - An Overview|date=October 8, 1976|page=9}}</ref><ref>{{cite web|url=http://www.bitsavers.org/pdf/ibm/system801/System_801_Principles_of_Operation_Jan76.pdf|title=System 801 Principles of Operation|date=January 16, 1976}}</ref> It used a two-operand format in the instruction, so that instructions were generally of the form <code>A = A + B</code>, as opposed to the three-operand format, <code>A = B + C</code>. The resulting CPU was operational by the summer of 1980 and was implemented using Motorola MECL-10K discrete component technology{{sfn|Radin|1982}} on large wire-wrapped custom boards. The CPU was clocked at 66 ns cycles (approximately 15.15 MHz) and could compute at the fast speed of approximately 15 [[million instructions per second|MIPS]]. The 801 architecture was used in a variety of IBM devices, including [[channel controller]]s for their S/370 mainframes (such as the [[IBM 3090]]),<ref name="microprocessors-programmers-view">{{cite book |last1=Dewar |first1=Robert B.K. |last2=Smosna |first2=Matthew |title=Microprocessors: A Programmer's View |url=https://archive.org/details/microprocessorsp00robe |url-access=registration |date=1990 |publisher=McGraw-Hill}}</ref>{{rp|377}} various networking devices, and as a [[vertical microcode]] execution unit in the 9373 and 9375 processors of the [[IBM 9370]] mainframe family.{{sfn|Cocke|Markstein|1990|p=9}}<ref name="Mitchell1988">{{cite journal | last1 = Mitchell | first1 = James | title = Implementing a mainframe architecture in a 9370 processor | journal = ACM SIGMICRO Newsletter | date = September 1988 | volume = 19 | issue = 3 | pages = 3β10 | issn = 1050-916X | doi = 10.1145/62185.62186 | pmid = | s2cid = 14602753 | url = }}</ref> The original version of the 801 architecture was the basis for the architecture of the [[IBM ROMP]] [[microprocessor]]<ref name="microprocessors-programmers-view"/>{{rp|378}} used in the [[IBM RT PC]] [[workstation computer]] and several experimental computers from [[IBM Research]]. A derivative of the 801 architecture with [[32-bit]] addressing named ''Iliad'' was intended to serve as the primary processor of the unsuccessful [[IBM AS/400#Fort Knox|Fort Knox]] midrange system project.<ref name="inside-as400">{{cite book|title=Inside the AS/400, Second Edition|url=https://books.google.com/books?id=5DoPAAAACAAJ|isbn=978-1882419661|author=Frank G. Soltis|year=1997|publisher=Duke Press}}</ref>
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)