
“Special register groups” invaded computer dictionaries for decades - eaguyhn
http://www.righto.com/2019/10/how-special-register-groups-invaded.html
======
tzs
Speaking of registers and CPUs, the PDP-10 was interesting (at least, the KA10
model...not sure if the KI10 or KL10 also did this).

The architecture included 16 general purpose registers, which were addressed
using the same address space used for main memory. Word addresses 0-15
referred to registers, and addresses 16+ referred to core.

The interesting part is that the registers were actually optional! If you
wanted to save a little money, at the cost of some execution time, you could
order your PDP-10 without registers. Because the registers and memory use the
same address space, everything still worked with the first 16 words of core
taking the place of the registers.

If you ordered your PDP-10 with the registers, they would in effect replace
the first 16 words of memory.

Main memory was magnetic core and the optional registers was semiconductor
memory, which were much faster than core.

Since the registers and memory shared address space, it turned out that you
could execute code from the registers. You could often gain quite a bit of
speed in a program by having it copy the code for its inner loops into the
registers and running from them.

~~~
andrewflnr
That's actually pretty cool. It seems like you could transparently change the
number of registers to whatever would fit in your particular model of chip, 0
to 16 to a kilobyte or more. Is there a reason you wouldn't use such a design
for a chip today?

~~~
muricula
Memory mapped registers are still a thing today. Here's arm documentation
describing memory mapped debug registers for Cortex-R chips:
[http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc....](http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.ddi0460d/Cegejeeb.html)
Even the intel XAPIC (interrupt controller) has a mode which basically uses
memory mapped registers for configuring interrupts. The trick with executing
hot loops in registers definitely wouldn't work today, and in some
microprocessors the merely reading registers can change the state of external
devices.

------
petercooper
I sacrificed a perfect score in an IT test at school in the 90s over this sort
of nonsense. Our IT teacher was adamant that a CPU was the base unit of a
computer (terminology from the mainframe era) rather than the processor within
it (as in the modern era). I refused to kowtow to the nonsense and took the
red mark :-D

~~~
AnimalMuppet
That seems like a rather meaningless choice of a hill to die on. Even in the
90s, many of us called the chips CPU chips.

~~~
petercooper
Sure, but it's just a single mark, which is a more than cheap enough price for
the principle :-)

------
karmakaze
Special register groups sounds like Hyper-Threading Technology. Didn't realize
that Honeywell had it in 1959.

~~~
avian
It's not really similar to hyper-threading. You still just had one thread of
execution, you just didn't have the overhead of pushing CPU state to working
memory (RAM) on context switch. Hence the CPU could switch contexts on every
instruction instead of much more rarely like modern multitasking OSes tend to
do.

Reading this I was reminded of the shadow register set on Z80. This CPU has
two "special register groups" that could be switched by a single 4-cycle
opcode. As far as I remember, the original idea was to have "main" and
"interrupt" CPU contexts without the overhead of pushing/poping the stack
(which could cost tens of cycles). From what I've seen however, people were
mostly ignoring that feature in practice, or using it for various nasty hacks
when they ran out of CPU registers.

~~~
monocasa
Nah, this is for sure a form symmetric multithreading (or hyper-threading,
Intel's trademark on the technique). Unlike the Z80's shadow register set and
like hyper-threading this scheme keeps an independent program counter around
for each of the register groups. Doing a thread switch each cycle is pretty
common in simpler SMT designs like the UltraSPARC T series, the PPE on the
Cell, and the shader cores on PowerVR GPUs.

------
campfireveteran
Most computer dictionaries are mostly just obsolete jargon shovelware... they
just copy&paste and don't really understand what they're printing over and
over again.

~~~
dmitrygr
Maps do this too, on purpose.

[https://en.wikipedia.org/wiki/Trap_street](https://en.wikipedia.org/wiki/Trap_street)

------
kazinator
"Special register groups" is vague enough that it can stretch fit any number
of situations:

\- Ax versus Dx registers in a MC68K.

\- Floating-point versus integer registers.

\- Supervisor versus unprivileged registers.

\- Machine state registers (interrupt masks, etc) versus computational
registers, versus I/O registers.

\- Hardware machine contexts similar to those of that Honeywell in numerous
other machines.

I don't see the problem with it, except that it's not suitable for a very high
level description of a generic CPU.

~~~
HelloNurse
Since any register group is somehow special, "special register groups" are
just an ambiguous concept that can be _passively_ misunderstood to "obviously"
mean whatever register classification one finds important, not _actively_
"stretched" to take on new meanings.

Other commonplace "special" register groups include special purpose vs general
purpose (SP, BP etc. vs AX to DX on early X86), different sizes, mutually
exclusive overlays (e.g. FPU and MMX registers on X86).

------
tantalor
"Such an instrument is the turbo encabulator."

[https://www.youtube.com/watch?v=Ac7G7xOG2Ag](https://www.youtube.com/watch?v=Ac7G7xOG2Ag)

------
alricb
That's why a proper terminological database should contain a source and its
date, so you can evaluate its currency and relevance.

------
grawprog
>CPU of a computer system does not contain: (a) Main storage (b) Arithmetic
unit (c) Special register group (d) None of the above

Well I would have gotten this question wrong if I hadn't read this article.

~~~
oakwhiz
It has been my experience that outdated, overly specific, or incorrect
terminology tends to make its way into computer science and IT-related
learning material and its corresponding test question banks.

This learning material often happens to be drafted and paid for by technology
companies but it seems as though little effort is spent in revising,
verifying, and properly typesetting the material in question, to the chagrin
of the students.

~~~
skissane
As a high school student (in the 1990s), I found our computing textbook
contained lots of mistakes. I tried to point out the errors to the teachers. I
soon realised they knew absolutely nothing about the topic, they were just
reading the textbook, so trying to convince them the textbook was wrong wasn't
going to get anywhere. But, I think "outdated, overly specific, or incorrect
terminology" is due to a lot of people teaching it (at high schools, etc), or
even writing the textbooks, don't know what they are talking about.

Specific examples:

Our textbook claimed that TCP/IP used parity bits. If you actually read the
relevant RFCs, you will find out that's wrong, it doesn't use parity bits, it
uses a one's complement checksum. But, the teacher had never heard of an
"RFC", and didn't know why she should care what one said. Obviously, whatever
the textbook says must be right, and anything else must be wrong.

The explanation of CRCs in the textbook made absolutely no sense. It said to
treat the message as one long number, and then take the last part of the
number. That would make the CRC just the last few bytes of the message, making
it rather useless. What I eventually worked out – you really can't explain
CRCs without polynomials, but the textbook author didn't want to include any
mention of polynomials (and multiplication and division operations on them),
since possibly not all students would have done that in high school
mathematics yet. (The more advanced students may have, but the students doing
the most basic levels of maths would not have.) The part about "take the last
part of the number" was actually meant as a reference to the remainder of
polynomial division. Once you understand the topic independently of the
textbook, you can see how the textbook is a horribly garbled and mangled
attempt to simplify the truth. The problem was, the teacher (same high school,
different computing teacher) had no idea how CRCs are actually defined, all he
knew was what the textbook said. If he actually knew what he was talking about
he could have explained to me what I eventually worked out for myself.

~~~
schoen
Cf. [https://en.wikipedia.org/wiki/Lie-to-
children](https://en.wikipedia.org/wiki/Lie-to-children)

~~~
skissane
A "lie" presumes you know the truth. These teachers weren't consciously
simplifying things for the students. If that was what they were doing, they
could have explained the missing details if challenged on them. A good teacher
really knows their subject, as opposed to just mindlessly repeating whatever
the textbook says.

~~~
schoen
That's an excellent point.

------
jolmg
> Storage is not part of the CPU.

It kind of is. People often call the box with the motherboard, etc. the
CPU.[1][2] That's how the basic parts of a computer were taught to me too when
I was a kid. The basic parts of a computer are a "CPU", a "Monitor", a
"Keyboard", and a "Mouse". Some time later, when I was taught the parts of a
"CPU", it was a "Processor", a "Hard Drive", a "Case", etc. I suppose not
everyone used the same nomenclature everywhere.

It still seems like a standard hasn't been reached. Around where I'm at,
people call that thinking box the "CPU", and right now, when looking for
diagrams, I see some call it the "Tower", the "Case", the "System Unit", the
"Computer", etc.

[1] [https://i2.wp.com/www.informationq.com/wp-
content/uploads/20...](https://i2.wp.com/www.informationq.com/wp-
content/uploads/2013/10/Basic-parts-of-a-Computer.jpg?resize=1047%2C559)

[2] [https://ecdn.teacherspayteachers.com/thumbitem/Parts-of-a-
Co...](https://ecdn.teacherspayteachers.com/thumbitem/Parts-of-a-Computer-
Worksheets-Including-Laptop-Diagram-1740668-1453433324/original-1740668-1.jpg)

EDIT: Are the downvotes because people don't believe this is how parts of the
computer were taught in some places before the internet became more popular?
It makes sense to me that this is the reason why main storage being inside the
CPU made it into dictionaries.

To me, "CPU" is an ambiguous term. It could either mean the whole case with
the electronics inside, or it could be the main Processor in the motherboard.

~~~
skissane
Back in the 1950s and 1960s, where a single computer was often composed of
multiple big cabinets, the word "CPU" was used to refer to the CPU cabinet.
(Often, you'd have the CPU in one cabinet, core memory in another, one or more
IO controllers in additional cabinets, yet further cabinets for tape drives
and hard disks, etc.) So this usage of calling the main chassis the "CPU" is
actually very old. On the one hand, people who use it tend not to be very
computer literate (since everyone nowadays who knows anything about computers
reserves the term "CPU" for a specific integrated circuit inside that case,
not the case itself.) But, their usage I'd argue derives from what used to be
the usage of the computer literate, decades ago. It was only in the 1970s that
a CPU started being implemented by a single integrated circuit, as opposed to
a group of them; back when the CPU was multiple integrated circuits, calling
the box that contained them all the "CPU" made more sense, especially when the
computer itself was spread across multiple boxes. The computer industry moved
on, the terminology of the computer illiterate didn't.

~~~
perl4ever
I don't see it as about computer literacy, but rather a cultural/technological
change over time.

Up until some point probably post-2000, desktop computers were the norm, which
had main chassis connected to peripherals such as keyboards, mice, and
monitors.

At some point, certainly by 2010, laptops became the majority, which have both
input and display integrated. So the referent of CPU, other than the actual
chip, no longer existed for most users.

~~~
skissane
I remember in the early-to-mid 1990s, my parents calling the main chassis the
"CPU", and I would respond saying "that box isn't the CPU, the CPU is just one
of many chips inside that box".

I doubt the desktop-to-laptop transition was a big factor, simply because
among more technical people, calling the main chassis a "CPU" was already
considered improper back in the 1990s (and probably even much of the 1980s),
when laptops were a clear minority.

~~~
perl4ever
It seems to me that a lot of people of a certain generation have issues with
the idea that different meanings of a word can co-exist.

Many words have dictionary entries with multiple definitions. And if you
Google a word you are curious about, you will probably find an online page
with one or more definition.

But nobody has any motivation to make such an entry complete or accurate - it
only exists like everything else to get clicks.

So for some reason people have become very dogmatic that any definition
missing from the current top hit for a word doesn't exist, because the
internet is their reality. They don't seem to have any idea how thoroughly
their reality is being distorted.

As far as my personal experience goes, in the 80s and 90s, CPU was used to
mean the box containing the processor, where the computer was not an "all-in-
one" like the original Macintosh, and it was also used to mean the chip. I
don't remember using the former meaning, but neither was I ever confused.

I don't think it's reasonable to argue that one or the other definition is
illegitimate, because I think they share a common thread. The modern CPU has
multiple processors and other things on-die, so it is "processor plus stuff"
just like the CPU-as-main-chassis. I think they are both examples of one basic
concept.

~~~
skissane
I'm perfectly familiar with the idea that one word can have multiple meanings.
I don't see any evidence that "people of a certain generation" have issues
with that idea.

One can also talk about the idea of different registers – informal, formal,
technical, etc. Meanings which are acceptable in an informal or colloquial
register can be viewed as less acceptable in a formal or technical one.

------
aidenn0
In a related topic, Berkely RISC decendents (including SPARC) have the concept
of "Register windows"

Basically there are many more registers than can be addressed by the program,
instructions are instead addressing a "window" into this much larger register
file. A function call shifts the window by some amount, typically with
overlap, so parameters and return results go in the overlapped area, and
whenever you are about to "wrap around" to the front of the file, the hardware
will push to the stack as needed.

Obviously multithreading on such targets becomes complicated because the
normal strategy of "Save all registers to the TCB" starts to become
inefficient with very large register files.

------
rolltiide
Fortunately nobody that learns about computers gets it from a dictionary.

I think "special register groups" has zero impact on literacy and
understanding

fascinating investigation though

People born in the 1950s till now have plenty of other excuses to be
technophobic so this definition has no effect

~~~
dchest
Except in this article it's mentioned that a quiz from a 2017 book includes
them.

~~~
rolltiide
Thats not the point I was making and wasnt refuting its prevalence

------
PhasmaFelis
> ...the central processing unit was a large physical box, also known as the
> "main frame". (A mainframe was not a type of computer yet.)

Does that imply that there were other "frames"? Maybe storage frames, I/O
frames...

~~~
kens
Yes, there were storage frames, power frames, CPU frame, drum frame,
electrostatic storage frames, and so forth. (I'm working on a blog post about
this, but got sidetracked by the appearance of "special register groups".)

~~~
PhasmaFelis
Cool, I'll keep an eye out for that post!

------
specialgroup
This is interesting. While I agree that CPUs no longer have the set of
registers used the way they were on the Honeywell, they certainly do have
special groups of registers that can only be used for some operations and not
others. For example, FPU registers don't generally do logical operations. SIMD
registers either don't work as general purpose registers, or have to be
switched from being general purpose to being SIMD depending on the
architecture. So there are still "special register groups" on modern CPUs. It
just doesn't mean the same thing as it meant back then. Kind of funny.

------
testplzignore
The textbook with the garbage definition costs $2. I guess you get what you
pay for. Hopefully the colleges using that book charge a similar amount.

------
EamonnMR
I would have probably assumed that it referred to the L1 cache.

------
rdiddly
This makes me want to shoot myself in the face, weep for humanity, and/or
become a con man.

------
CamperBob2
Eh, I don't see the problem with this definition. Registers are "special"
storage locations by their very nature, as opposed to memory external to the
CPU.

The term "special register group(s)" is a bit offbeat, but it's perfectly
accurate and perfectly descriptive of almost any real-world CPU architecture.
The only problematic bit is the plural 's'.

