8 ms·
“Special register groups” invaded computer dictionaries for decades
- CamperBob2 7y agoEh, 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'.
- grawprog 7y ago>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 7y agoIt 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 7y agoAs 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 7y agoCf. https://en.wikipedia.org/wiki/Lie-to-children https://en.wikipedia.org/wiki/Lie-to-children
- skissane 7y agoA "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 7y agoThat's an excellent point.
- mncharity 7y agoI once saw a science education state standard, that required teaching both 'atoms are conserved in chemical reactions', and 'atoms are electrically neutral; when changed, they're no longer atoms, but ions'. Two historical threads of definition, left for students to reconcile. Terminology in primary-school science education can have a twilight zone feel, kind-of sort-of resembling science terminology, but as seen from a skewed alternate reality, disconnected from actual science community and practice. So it's not just cs learning material.
- alricb 7y agoThat's why a proper terminological database should contain a source and its date, so you can evaluate its currency and relevance.
- campfireveteran 7y agoMost 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.
- jolmg 7y ago> 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/2013/10/Basic-parts-of-a-Computer.jpg?resize=1047%2C559 https://i2.wp.com/www.informationq.com/wp-content/uploads/20... [2] https://ecdn.teacherspayteachers.com/thumbitem/Parts-of-a-Computer-Worksheets-Including-Laptop-Diagram-1740668-1453433324/original-1740668-1.jpg https://ecdn.teacherspayteachers.com/thumbitem/Parts-of-a-Co... 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.
- psanford 7y agoIf you asked me what the "basic parts of a computer are" my first intuition is to answer with the von Neumann architecture. I would not expect the general public to have that answer, but I would expect people with CS backgrounds and the companies building the machines that ken referenced in the article to think in terms of von Neumann.
- jolmg 7y agoWell, when I was taught "the basic parts of a computer", it was in a class that was teaching how to use a computer (how to type, what files are, different storage mediums, the different plugs, how to use the GUI, etc.). I was like 8 years old or so. I learned about von Neumann many years later.
- testplzignore 7y agoThe 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.
- PhasmaFelis 7y ago> ...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 7y agoYes, 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 7y agoCool, I'll keep an eye out for that post!
- pwg 7y agoThis usage context from that era sounds like the term "frame" from then is what we today refer to as a "rack".
- kens 7y agoSome old computers were built on racks (relay racks). A frame is basically a cabinet, built around a metal framework, with side panels hanging off it. IBM was a big proponent of frames, I think starting with the IBM 701.
- deleted 7y ago[deleted]
- karmakaze 7y agoSpecial register groups sounds like Hyper-Threading Technology. Didn't realize that Honeywell had it in 1959.
- mlyle 7y agoHere it's just used for fine-grained multitasking-- you need a pipeline and excess resources for simultaneous multithreading. (So that when stuff stalls, on access to memory or data dependency... or e.g. when a program doesn't use the floating point unit... you can use the unused parts of the processor to run another thread).
- duxup 7y agoI'm not knowledgeable about CPUs but as someone who switched careers from one tech (networking) to the next (web development) it's amusing how many approaches to problems are found, resused, not used found again, redeveloped and etc. I'll find an excerpt from a book from the 1980s someone will post and while on its own I might not grock it I'll hit an issue in React a while later and ... oh I get it now even if the technology is different, the problems and strategies seem to be somewhat natural / recycle.
- avian 7y agoIt'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 7y agoNah, 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.
- kazinator 7y ago"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 7y agoSince 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).
- AnimalMuppet 7y agoIn the 68K, I definitely wouldn't describe the Dx registers as special. The Ax is kind of grey - they aren't quite "general" in the way the Dx registers are, but they are still also "standard". But the status register... yeah, it's special.
- specialgroup 7y agoThis 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.
- rolltiide 7y agoFortunately 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
- tzs 7y agoSpeaking 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 7y agoThat'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 7y agoMemory 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.ddi0460d/Cegejeeb.html http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.... 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.
- nimish 7y agoThis makes the register keyword in c make a lot more sense
- tantalor 7y ago"Such an instrument is the turbo encabulator." https://www.youtube.com/watch?v=Ac7G7xOG2Ag https://www.youtube.com/watch?v=Ac7G7xOG2Ag
- rdiddly 7y agoThis makes me want to shoot myself in the face, weep for humanity, and/or become a con man.
- petercooper 7y agoI 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 7y agoThat 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 7y agoSure, but it's just a single mark, which is a more than cheap enough price for the principle :-)
- sly010 7y agoExactly the same thing happened to me. In fact I came here to write down the same thing :) The test was standardized across the entire country. My IT teacher agreed with me, but was not willing to escalate.
- EamonnMR 7y agoI would have probably assumed that it referred to the L1 cache.
- aidenn0 7y agoIn 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.