4 ms·
"Special register groups" invaded computer dictionaries for decades (2019)
- deleted 1y ago[deleted]
- deleted 1y ago[deleted]
- kens 1y agoAuthor here if anyone has questions. This was discussed on HN a while ago: https://news.ycombinator.com/item?id=21333245 https://news.ycombinator.com/item?id=21333245
- vlovich123 1y agoDid register groups evolve into what would become register files, register windows, and register banks?
- kens 1y agoThe Honeywell's "special register groups" were rather unusual, since the processor switched tasks and registers after every instruction. (This is more commonly known as a barrel processor.) I don't see an evolutionary path to register files, windows, banks, etc, although the concept is a bit similar. Rather, I think the concept of having separate sets of registers developed independently several times.
- Animats 1y agoThat hardware multiprogramming concept showed up a few times. The CDC 6600 pretended to have 10 peripheral processors for I/O using that approach. National Semiconductor (I think) once made a part which had two BASIC interpreters on one CPU with two sets of registers. TI had some IC where the registers were in main memory, with a hardware register to point to them. Context switching didn't require a register save, just pointing the register pointer somewhere else. There were stack machines such as the B5500 where the top items on the stack were in hardware registers but the rest of the stack was in memory. Floating point in the early years of floating point co-processor chips had lots of rather special registers. Getting data in and out of them was sometimes quite slow, so it was desirable to get data into the math co-processor and work on it there without bringing it back into memory if at all possible. Lots of variations on this theme. There's a lot going on with special-purpose registers today inside superscalar processors, but the programmer can't see most of it.
- kens 1y agoAre you thinking of TI's TMS9900 processor, which had registers in main memory? This processor was used in TI's TI-99/4 home computer. (Both the processor and the home computer were big failures.) https://spectrum.ieee.org/the-inside-story-of-texas-instruments-biggest-blunder-the-tms9900-microprocessor https://spectrum.ieee.org/the-inside-story-of-texas-instrume...
- Animats 1y agoYes. I've used a Marinchip 9900, from John Walker's company before Autodesk.
- EvanAnderson 1y agoIn case anybody else was curious: https://www.fourmilab.ch/documents/marinchip/boards/ https://www.fourmilab.ch/documents/marinchip/boards/
- JdeBP 1y agoEven more variations encompass the alternate register file (A', F', BC', DE', HL') of the Zilog Z80 and the alternate supervisor-mode A7 register in the MC680xx processors.
- chihuahua 1y agoTera/Cray used to make the MTA (multi-threaded architecture) that had 128 register sets so it could run 128 threads in a round-robin fashion. The purpose was to cover the latency of main-memory access.
- jeffbee 1y agoI wonder if your article will revive the popularity of the phrase. https://books.google.com/ngrams/graph?content=special+register+groups&year_start=1800&year_end=2022&corpus=en&smoothing=3 https://books.google.com/ngrams/graph?content=special+regist...
- Liftyee 1y agoInteresting detail I didn't know about, and different to my initial interpretation too. It doesn't seem too unreasonable to call the program counter, memory registers, etc. "special registers" since they have specific functions beyond simply storing data. Therefore I could imagine calling the aggregate of such registers in a CPU a "special register group". Perhaps those still using the term are following this line of thought.
- tialaramex 1y agoIn that they're not the GPRs (General Purpose Registers) this kinda sorta makes sense. Mostly the problem is that this terminology isn't actually used this way. Notice how the CPU (which we're thinking of as one small component of e.g. a laptop or phone, but the originators were imagining a furniture sized piece of equipment which is responsible for the actual computing) is supposed to be comprised of these particular elements but not GPRs, not an FPU, or an MMU, or any other elements which are in fact typical today. So this sort of "quiz" is bogus because it's basically checking whether you've rote memorized some particular words. People who know how a CPU works are confused and likely don't pass, those who've memorized the words but lack all understanding pass. This is not a useful education.
- sidewndr46 1y agoThis was my thought as well. Any sufficiently complex modern CPU contains some register that it expects some bit to be set in to enable something like a powersaving mode with an interrupt mask in the lower bits to turn it off. Or something equally esoteric, but purposeful once you consider the application. My recollection is that even the Atmega 8-bit microcontrollers have tons of special register groups around timers and interrupts. Given the relative scarcity of "general purpose" registers on x86 32-bit CPUs, you could actually argue those are the special purpose registers.
- duskwuff 1y ago> My recollection is that even the Atmega 8-bit microcontrollers have tons of special register groups around timers and interrupts. Not precisely. AVR, like most embedded architectures, has a bunch of I/O registers which control CPU and peripheral behavior - but those are distinct from the CPU's general-purpose registers. The I/O registers exist in the same address space as main memory, and can only be accessed as memory. You can write an instruction like "increment general-purpose register R3", but you can't use that same syntax for e.g. "increment the UART baud rate register"; you have to load a value from that register to a GPR, increment it there, and store it back to the I/O register. AVR is a bit weird in that the CPU's general-purpose registers are also mapped to main memory and can be accessed as if they were memory - but that functionality is rarely used in practice. Getting back to your original point, x86 does have special-purpose registers - lots of them, in fact. They're accessed using the privileged rdmsr/wrmsr instructions.
- dlcarrier 1y agoI love weird jargon. There's plenty of it in the terms we normally use, like despite ROM being a type of RAM, everyone knows when you say RAM you are excluding ROM. One of my favorites is BLDC which stands for BrushLess Direct Current, which is used to describe motors which are driven by an alternating current at a variable frequency, not to be confused with VFD, which in this case stands for Variable Frequency Drive, and describes how BLDC actually functions, and is on rare occasions used interchangably, but is most often used with analog or open-loop controllers, while BLCD is used for VFDs that are digitally controlled. BLDCs are Brushless not Brush Less and, AC not DC. I like to think the acronym stands for Bitwise Logic Driven Current, which follows the acronym, correctly describes how it works, and differentiates it from non-BLDC VFDs. Also, while VFD can mean Variable Frequency Drive, it is also used to mean Vacuum Fluorescent Display, and for Lemony Snicket fans it can me a whole lot more. (https://snicket.fandom.com/wiki/V.F.D._%28disambiguation%29 https://snicket.fandom.com/wiki/V.F.D._%28disambiguation%29) Uncommon jargon is even better, especially when it comes out of marketing departments and describes something ordinary. I have a rice cooker that has terms like "micom" and "fuzzy logic" on the labels. They describe microcontrollers and variables, respectively, which are found in all but the simplest electromechanical appliances. It's normal for companies to trademark their names for common technology, like Nvidia and AMD trademarking their implementation of variable framerate as G-Sync and FreeSync, respectively, and some companies are more agressive with their trademarks than others, such as Intel trademarking their symetric multithreading as Hyper-Threading, but AMD just calling it symetric multithreading. Cessna used to have a bunch of random trademarked jargon in their ads in the 70's, from trademarking flaps to back seats.
- kens 1y agoYour comment reminds me of a couple things. On the topic of RAM, I was recently researching the vintage IBM 650 computer (1953). You could get it with Random Access Memory (RAM), but this RAM was actually a hard disk. I guess IBM considered the disk to be more random access than the rotating drum that provided the 650's main storage. One strange thing is that the disk had three independent read/write arms. Unlike modern disks, the arm could only access one platter at a time and had to physically retract to move to a different platter. Having three independent arms let you overlap reads and seeks. As far as "fuzzy logic", there's a whole lot of history behind how that ended up in your rice cooker. In the 1990s, fuzzy logic was a big academic research area that was supposed to revolutionize control systems. The basic idea was to extend Boolean logic to support in-between values, and there was a lot of mathematics behind this, with books, journals, conferences, and everything. Fuzzy logic didn't live up to the hype, and mostly disappeared. But fuzzy logic did end up being used in rice cookers, adjusting the temperature based on how cooked the rice was, instead of just being on or off. [1] https://bitsavers.org/pdf/ibm/650/22-6270-1_RAM.pdf https://bitsavers.org/pdf/ibm/650/22-6270-1_RAM.pdf [2] https://en.wikipedia.org/wiki/Fuzzy_logic https://en.wikipedia.org/wiki/Fuzzy_logic
- dang 1y agoDiscussed at the time (of the article): “Special register groups” invaded computer dictionaries for decades - https://news.ycombinator.com/item?id=21333245 https://news.ycombinator.com/item?id=21333245 - Oct 2019 (60 comments)
- deleted 1y ago[deleted]
- userbinator 1y agoThe Honeywell 800 allowed eight programs to run on a single processor, switching between programs after every instruction[...]its own separate group of 32 registers (program counter, general-purpose registers, index registers, etc.) I'm surprised that the analogy to hyperthreading wasn't made here.
- adrian_b 1y agoHyperthreading is a word used by Intel instead of the standard term SMT (Simultaneous Multithreading), in order to be able to register it as a trademark. The first CPUs with SMT have appeared only during the nineties. That Honeywell CPU is the first commercial CPU with FGMT (Fine-Grained Multithreading). SMT can exist only in a CPU able to decode and execute multiple instructions simultaneously, which is why it has appeared much later. While FGMT went out-of-fashion for CPUs, many GPUs have used and many still use FGMT, because it can provide better performance per die area than a more complex superscalar/SMT architecture.
- fuzzfactor 1y agoPerkin-Elmer turned out to offer the first "desktop" (benchtop) multi-user multi-tasking (threaded) data system, designed in the 1970's and finally released in 1979: https://www.bidspotter.com/en-gb/auction-catalogues/quaker-city-auction/catalogue-id-bscqu10131/lot-017d49fd-da19-494e-87c2-a9a6011f38bb https://www.bidspotter.com/en-gb/auction-catalogues/quaker-c... I would estimate it was fine-grained. No microprocessor in the CPU, just a PCB a foot square covered in discrete logic chips. Memory PCB the same size, connected by short ribbon cables to the CPU, this bypassed the backplane. Fully upgraded it was 16K of 32-bit memory. Each user could run more than one Basic program at a time, and also the same Basic code in memory could be run by more than one user, or even more than one time simultaneously by the same user. Simultaneous with the collection of live data from more than one chemical analyzer, which the firmware could handle most of the mainstream chemical needs without the Basic option. User-programming was for the exotic stuff that actually requires custom code. But that made it completely programmable using only the documentation supplied, it was straightforward to accomplish things which PC software that eventually came along never has been able to do without settling for additional commercial offerings which are much more user-friendly (mouse!) but not as appropriate as my own code was.
- bbanyc 1y agoFor all the complaints about our corpus being contaminated by AI slop, there's been plenty of human-generated slop being regurgitated over the years as well. Lazy textbook writers copy and paste from older books, lazy test makers quiz on arbitrary phrases from the textbooks, nobody ever does any fact checking to see if any of it makes sense. My favorite example is the "tongue map" - decades of schoolchildren have been taught that different parts of the tongue are responsible for tasting sweetness and saltiness and so on. This is contrary to everyone's experience, and it turns out to have been a mistranslation of some random foreign journal article on taste buds, but it's stuck around in the primary school curriculum because it's easy to make it into a "fill in the map" activity. As long as the kids can regurgitate what they're told, who cares if anything they're learning is true?
- eddieh 1y agoPercival Lowell misunderstanding the Italian word “canali”[1] should rank pretty high in terms of similar phenomena and is probably the most impactful example. 1. https://lowell.edu/percival-lowells-search-for-life-on-mars/ https://lowell.edu/percival-lowells-search-for-life-on-mars/
- unwind 1y agoIt looks like Wikipedia [1] has a better explanation of the actual misunderstanding, the page you linked wasn't very clear to me (Italian "canali" corresponds to English "channel", not English "canal"). [1]: https://en.wikipedia.org/wiki/Martian_canals#Supposed_%22discoveries%22 https://en.wikipedia.org/wiki/Martian_canals#Supposed_%22dis...
- adrian_b 1y agoAs noted by Ken, not only the "special registers" are weird in that dictionary definition, but also the mention about "main storage". The term CPU has been introduced by IBM in 1954, in the manual of operation of IBM 704, and it was defined thus: “The central processing unit accomplishes all arithmetic and control functions”. This definition was clearly meant to say that the CPU is the aggregate of 2 parts of the 5 computer parts listed by John von Neumann, i.e. the CPU is the "central arithmetical part" + "the central control part" from von Neumann's list. The other 3 parts were the main memory, the input peripherals and the output peripherals. The IBM definition has remained valid until today, even if the package that contains the CPU also contains cache memories and possibly even a part or all of the DRAM memory, like in Apple CPUs or Intel Lunar Lake. Because the CPU is the most important part of a CPU package, the whole package is referred as the CPU ("pars prō tōtō"), even when the package also contains some part of the memory. I assume that the same way of using the "CPU" term has caused the confusion from the dictionary entry. In IBM 704, the CPU filled an entire cabinet and the main memory was in a separate cabinet. In later computers, by the time of Honeywell 800, it became possible to locate both the CPU and the main memory in a single cabinet, which was referred to as the CPU cabinet, as the CPU was its most important part. Whoever has copied that CPU definition, presumably from a manual of Honeywell 800, has confused the description of the content of the "CPU cabinet" of that particular computer with the definition of the term "CPU" as the name of a block used in the description of computer architectures.