Half a century ago, the puzzling phrase "special register groups" started showing up in definitions of "CPU", and it is still there. In this blog post, I uncover how special register groups went from an obscure feature in the Honeywell 800 mainframe to appearing in the Washington Post.
While researching old computers, I found a strange definition of "Central Processing Unit" that keeps appearing in different sources. From a book reprinted in 2017:1
At first glance, this definition seems okay, but a few moments thought reveals some problems. Storage is not part of the CPU. But more puzzling, what are special register groups? A CPU has registers, but "special register groups" is not a normal phrase.
It turns out that this definition has been used extensively for over half a century, even though it doesn't make sense, copied and modified from one source to another. Special register groups were a feature in the Honeywell 800 mainframe computer, introduced in 1959. Although this computer is long-forgotten2, its impact inexplicably remains in many glossaries. The Honeywell 800 allowed eight programs to run on a single processor, switching between programs after every instruction.3 To support this, each program had a "special register group" in hardware, its own separate group of 32 registers (program counter, general-purpose registers, index registers, etc.).
Another important thing to note about that era is the central processing unit was a large physical box, also known as the "main frame". (A mainframe was not a type of computer yet.) Thus, given the characteristics of the Honeywell 800, the definition of CPU in Honeywell's glossary4 made total sense.5 Unfortunately, this definition doesn't make sense when used for computers in general, since they lack special register groups.
This definition apparently started with the US Department of Agriculture's Glossary of ADP Terminology (1960): "MAIN FRAME - The central processor of the computer system. It contains the main memory, arithmetic unit and special register groups". The definition then spread through the government. The Bureau of the Budget published the Automatic Data Processing Glossary in 1962 "for use as an authoritative reference by all officials and employees of the executive branch of the Government" with the definition below. The Air Force's 1966 Guide for Auditing Automatic Data Processing Systems used a similar definition as did the 1966 Navy Training Course for Machine Accountant and 1968 Air Force manual Communications-Electronics Terminology.
From there, the definition spread to dozens of books and dictionaries. The "special register groups" appeared in numerous computer glossaries such as the Glossary of Computing Terminology (1972), Computer Glossary for Medical and Health Sciences (1973) Computer Glossary for Engineers and Scientists (1973), Radio Shack's Dictionary of Electronics (1968, 1974-1975), and Computer Graphics Glossary (1983)
Computer manufacturers should know their systems don't have special register groups, but they still used the definition. For example, Sphere microcomputer (1976), Texas Instruments (1978), Cray (1984), Convergent Technologies (1987), and Tektronix (1989).
This definition persisted into the microcomputer age, even though storage was now clearly not part of the CPU and "special register groups" were decades in the past. A 1983 Beginner's Computer Glossary in MICRO magazine defined "CPU — Central Processing Unit. The central processor of the computer system, which contains the main storage, arithmetic unit, and special register groups." "Special register groups" also showed up in Microcomputer Dictionary (1981), and Understanding Microprocessors (1984),
Definitions with "special register groups" appeared in a dizzying array of books, such as Computer Technology in the Health Sciences (1974), College Typewriting (1975), Research Methods for Recreation and Leisure (1979), EPA's Design Automation Handbook for Automation of Activated Sludge Treatment Plants (1980), Patrick-Turner's Industrial Automation Dictionary (1996), Video Scrambling & Descrambling (1998), US Department of Transportation's Computerized Signal Systems (1979). and Traffic Control System Operations (2000).
In 1981, special register groups reached national newspapers in a Washington Post glossary: "Main-frame—central processor of computer system, containing main storage, arithmetic unit and special register groups." By 2006, even the National Fire Code6 included special register groups: "Computer. A programmable electronic device that contains a central processing unit(s), main storage, an arithmetic unit, and special register groups."
Special register groups are still being taught to the next generation of students. The following quiz question is from a 2017 book that teaches computer organization and programming:7
CPU of a computer system does not contain: (a) Main storage (b) Arithmetic unit (c) Special register group (d) None of the above
Conclusion
For some reason, a 1960 definition of "central processing unit" included "special register groups", an obscure feature from the Honeywell 800 mainframe. This definition was copied and changed for decades, even though it doesn't make sense. It appears that once something appears in an authoritative glossary, people will reuse it for decades, and obsolete terms may never die out.
Researching this phrase also shows how the meanings of computer terms shift greatly over time. In 1960, "main frame" and "CPU" were synonyms, but since then they have moved in opposite directions: "mainframe" is now a large computer system, while the "CPU" is usually a processor chip. (I plan to write much more about this.)
I announce my latest blog posts on Twitter, so follow me @kenshirriff for future articles. I also have an RSS feed.
Notes and References
-
Reference: Reliability Engineering for Nuclear and Other High Technology Systems, CRC Press, 2017, reprint of a book originally published in 1985. ↩
-
I happen to be familiar with the Honeywell 800 and 1800 computers because I've been studying the Apollo Guidance Computer extensively. (The Honeywell 1800 was an improved version of the Honeywell 800.) The Honeywell 1800 was used to assemble programs for the Apollo Guidance Computer using an assembler called YUL. ↩
-
The Honeywell 800's technique of switching programs on every instruction is rather unusual. Typical multi-tasking systems let a program run for several milliseconds before switching to another program to reduce the overhead of switching between programs. The Honeywell 800 Programmers Reference Manual explains the use of special register groups for multiprogramming. ↩
-
Honeywell's Glossary of Data Processing and Communications Terms was published 1964-1966. Definitions in that book are largely based on the Bureau of the Budget's Automatic Data Processing Glossary. ↩
-
The Oxford English Dictionary (1989) quoted the 1964 Honeywell definition. ↩
-
Reference: NFPA's Illustrated Dictionary of Fire Service Terms, published by the National Fire Protection Association in 2006. The National Fire Codes (1995) had a somewhat similar definition, but for the CPU instead of computer: "CPU. Central processing unit of the computer system. The CPU contains the main storage, arithmetic unit, and special register groups." ↩
-
Reference: Computer Architecture, 2011, published by Biyani. Page 58 contains the quiz with the CPU question. The question also appears in MCS-012: Computer Organisation and Assembly Language Programming, 2017. ↩
19 comments:
Someone will find this post in a couple of decades wondering what "special register groups" are :)
I'd always assumed special register group was anything that wasn't a user register so status, program counter and so forth... just goes to show often the jargon isn't consistent !
The Zilog Z80 has special register groups, but it calls them the "main" and "alternate" "register sets". The registers AF, BC, DE, HL are all duplicated, and there is an instruction to switch between sets. This is intended to allow "faster response to interrupts and easy, efficient implementation of such versatile programming techniques as background-foreground data processing".
Great find. And it shows why the "appeal to authority" argument is fallacious. Of course, I'm sure we've all read articles about technical subjects in the mainstream media where it's painfully clear that the author doesn't really understand what they are writing about. Even some of the more, so-called, technical sites can show a surprising lack of understanding in their articles.
Given we still maintain VAX/Alpha software today for nuclear engineering...that definition isn't too out of date :)
Like Keith, I immediately thought of the Z80. But since the PC and other parts of the state aren't also duplicated it is more like the register switching on the ARM than the original idea. What is like the original idea is the multithreading that became popular starting with the Pentium 4.
My first experience programming a computer was a Honeywell in the mid-70s, using punch cards. If that wasn't bad enough, we used an IBM key punch machine, with a slightly different character set than Honeywell. I don't remember the details, but we had to substitute a few characters, for example we had to use a '&' character instead of '('. It was assumed we could write a correct program, including boundary checks like divide by zero, etc., so out grade was determined by how many times we ran the deck of cards, losing 5 points off the grade every time past the first. What fun!
I wish someone would make a VR simulation of working with these old mainframe computers. Would be cool to be in an old data center running jobs, loading tapes, programming, debugging.....
You can visit the Computer History Museum in Mountain View, California and see a demonstration every Wednesday at 3PM and Saturday at 11AM.
"Someone will find this post in a couple of decades wondering what "special register groups" are"
Has already happened. BTW: I still don't know what special register groups are - or ever were good for.
Ken, I think one needs to add air quotes around the word 'special', then the phrase "'special' register groups" makes sense in modern context.
Quick, cut the hard line to the main frame!
Blogger Unknown said...
I wish someone would make a VR simulation of working with these old mainframe computers. Would be cool to be in an old data center running jobs, loading tapes, programming, debugging.....
October 23, 2019 at 11:22 AM
Dear Unknown,
Having to meet batch scheduling windows to ensure availability of reports and any "online" services meant sometimes backbreaking work finding, hauling around, mounting, dismounting, filing and FIXING the data 'stores' of cards, tapes, disks and in banking, CHECKS to make it come together on a GOOD day! Have an error or 'out of balance' condition meant repeating yesterday's run to fix the input to today's run, which made that schedule immediately at least double (based on transaction volumes). While watching a 2400 foot tape rewind to be dismounted for another volume mount kept reminding me the great words of wisdom from seasoned "operators" that every unit "mount" request waits the computer at "wall clock time". THAT was my inspiration for devising ways of keeping the monster fed and constantly working, not waiting for carbon units.
CPU is now even much less than a chip. In typical SOC, the CPU's are only a small part of the chip.
There was a lot more weirdness in that machine than (to parse it correctly). There were two instruction registers in each group, so coroutines (as opposed to subroutines) could be implemented directly. There was a sign bit on each instruction register so you could run programs backward. It was a wonderful playground for gag and obfuscated code in assembly language. One gag program harassed operators by printing obscenities on the console typewriter and then moving to a different group. There was only one display and set of control switches which automatically connected to the active (running) group. So group 1 (say) would print "f you" at the console, the operator would hit "stop" but by then the machine would be running group 2.
The tape drives used vacuum hubs. You put a tape on the hub and the drive would suck the air out of the thin gap between the hub and the reel, sticking it hard without any mechanical lock. Release was problematic, and junior operators (known as "tape apes") would rock the drives back and forth trying to get the tape off.
The system did come with the best COBOL compiler of its era, which is why Honeywell won the USAF Major Air Command upgrade contract in 1964, which is where (Hq Air Training Command) I encountered the machine. In 1966 I joined Honeywell EDP Division and met Henry Schrempf [sp?] who designed the thing.
Thank you for doing this. What a hoot!
Some of the SPARC CPUs have per-process register groups like that, for fast context switching, along with registers that change function (output registers become input registers for the next instruction, etc.) but they call them "register windows".
"2017 book that teaches computer organization and programming"... I'm going to go on a limb and claim that the book "teaches" nothing... It's one of those books that regurgitate stuff that hundreds of thousands, if not millions, of students get to memorize, for absolutely no reason, as the information is not only useless for anything mainstream but maybe obscure historical research, but also devoid of context most of the time. It took someone like Ken to actually figure out where even that nonsense came from. Nobody who uses the "book" is encouraged to think about what most of it means. How could they? Memorize, sit an exam, move on. Horrible waste of life if you ask me.
That "book" is a scary example of blind leading the blind. People who were "taught" this way now "teach" the same way. A cargo cult horror show if you ask me.
Apparently the Honeywell 800 was not alone in its use of "special register groups" but these registers were not called that by other manufacturer. The class of machine that swapped its architectural state every cycle was called a "barrel processor."
https://en.wikipedia.org/wiki/Barrel_processor
Post a Comment