[HN Gopher] A one-bit processor explained: reverse-engineering t... ___________________________________________________________________ A one-bit processor explained: reverse-engineering the vintage MC14500B Author : parsecs Score : 89 points Date : 2021-02-06 17:20 UTC (5 hours ago) (HTM) web link (www.righto.com) (TXT) w3m dump (www.righto.com) | adrian_b wrote: | Thanks for another interesting reverse-engineering case. | | This made me remember the first project where I have worked after | graduating. It was in a metalworking plant, at a huge rolling | mill for aluminum sheet. | | The controller for that system could be implemented today in a | small micro-controller unit or in an FPGA, but in that old | installation the controller occupied 3 cabinets. Two cabinets | contained an analog computer made with operational amplifiers, | which controlled the speed and torque of all the very large DC | motors used in the rolling mills. | | The third cabinet contained a one-bit programmable logic | controller (PLC), which was very similar to Motorola 14500B. | | It was even older, so it was made with TTL gates. However, in the | next generation of that PLC, the large PCB with many TTL | integrated circuits that implemented it was replaced by a simpler | board with 14500B and other CMOS ICs. | | So I had to write a program for that 14500B-like programmable | logic controller. It read data from a large number of sensors and | then switched on or off almost a hundred of hydraulic valves that | caused the movements of various things and also the electrical | power supplies for various devices, e.g. pumps or fans. | | Writing programs for it was far less convenient than it would be | to do the same thing today with an ARM MCU, but nonetheless it | did the required job without problems. | kens wrote: | Author here, if anyone has questions or comments. | xkriva11 wrote: | Would it be possible to publish detailed photos of Xerox Alto | (populated) PCBs that would allow creation of replicas? | kens wrote: | The complete schematics of the Xerox Alto are on Bitsavers. I | don't think photos would help a lot with generating a PCB, | since the chips cover much of the wiring. | | A bigger problem with a Xerox Alto replica is the wire- | wrapped backplane. It would be a pain to redo that by hand. | | For most purposes, you'd be better off using the ContrAlto | emulator. | | Schematic link: | http://bitsavers.org/pdf/xerox/alto/schematics ContrAlto | link: https://github.com/livingcomputermuseum/ContrAlto | colejohnson66 wrote: | What was the _purpose_ of something like this? Like, why would | a designer have chosen this over a microprocessor like the | Intel 4004 from 5 years prior? | dboreham wrote: | I was early in my career at the time, and remember looking at | the datasheet and asking myself the same question. Reflecting | back, I think the sibling post that mentions an upgrade of an | older discrete TTL PLC system could be the bulk of the target | market. So while it was unlikely someone would begin a clean | new design with a 1-bit CPU, there were older systems that | already had the 1-bit architecture that suited this device | for a mid-life re-do. | | Besides that, semi vendors have on occasion been known to | manufacture a device that has no market success to due to | poor product/market fit, or technology bypassing it by the | time it was finished. Most devices were originally made as | custom designs for some specific customer or application so | perhaps there's a boatload of these in some 1970's car. | adrian_b wrote: | See my post from above. In industrial control there are a lot | of processes with a large number of on/off sensors and | actuators. | | One-bit programmable controllers like 14500B were good enough | to handle those. | | In such old installations, the sensors and actuators that | could not be handled by one-bit controllers were handled by | analog controllers, unlike in modern installations, where a | MCU handles digitally not only the Boolean variables but also | the analog values through ADCs and DACs, so arithmetic | computations are also required, besides the logic operations | that could already be performed by something like 14500B. | vlovich123 wrote: | It's implied in the article I think. | | > In 1977, the MC14500B cost $7.58 in quantities of 100 ($32 | in current dollars), which seems expensive. However, at the | time, an 8080A CPU cost $20 and a Z80 cost $50 ($85 and $215 | in current dollars) so there was a significant cost saving to | the MC14500B.5 However, the steady fall of processor prices | soon made the MC14500B less attractive. | | Perhaps in 1977 you couldn't source the 4004 in the | quantities you might need to make a product leaving you only | with more expensive contemporary processors? | kens wrote: | Yes, cost was an issue. Also complexity; the documentation | says: | | "Computers and microcomputers may also be used [for control | tasks], but they tend to overcomplicate the task and often | require highly trained personnel to develop and maintain | the system. A simpler device, designed to operate on inputs | and outputs one-at-a-time and configured to resemble a | relay system, was introduced. These devices became known to | the controls industry as Programmable Logic Controllers | (PLC). The Motorola MCI4500B Industrial Control Unit (ICU) | is the monolithic embodiment of the PLC's central | architecture." | | I couldn't find data on how popular the MC14500B was, but I | think microcontrollers such as the Texas Instruments | TMS1000 were much more popular. | bane wrote: | When I was in college we had lots of TTL breadboard labs to | make various types of digital circuits. I wonder if something | like this might be a good part of a curriculum that builds up | to making a full processor? | aj7 wrote: | https://mitpress.mit.edu/books/elements-computing-systems- | se... | kens wrote: | Possibly, but I suspect this chip would probably be more of a | tangent than something on the path to a full processor. Also, | a 1-bit processor isn't very exciting as far as applications, | compared to even a 4-bit processor. | bear8642 wrote: | >a 1-bit processor isn't very exciting | | Very different order of magnitude but wasn't the connection | machine single bit based? | kens wrote: | The Connection Machine had a very unusual architecture | that was sort of 1-bit, but sort of 32-bit. It was a | massively parallel computer of the 1980s with 16,384 | processing elements. Each processing element handled one | bit at at time. But usually each processing element | performed arithmetic on a 32-bit value, in a bit-serial | fashion. | | You can call this a 1-bit processing element, but I think | calling it a 32-bit serial processor is more descriptive. | Processing data serially using a 1-bit ALU was not | uncommon, from the early EDSAC computer to the PDP-8/S | minicomputer to the Datapoint 2200 desktop computer, but | these are not considered 1-bit computers. The Connection | Machine was more flexible with word size than these, so | calling it a 32-bit computer isn't quite accurate either. | | In any case, the MC14500B didn't have any support for | bit-serial operations. (For instance, you want the | processor to add the carry from one bit to the next bit | to do addition.) Arithmetic was possible on the MC14500B | (Turing machine and so forth), but it was very slow, | taking 12 instructions per bit to manipulate the sum and | carry. The documentation recommended using an external | chip if you needed to do arithmetic. | | More: http://bitsavers.org/pdf/thinkingMachines/CM2/Archi | tecture_a... | chris_st wrote: | You mention this briefly, but it's worth pointing out | that the CM-2 (and, I believe, the CM-1 as well) was | indeed a single-bit-at-a-time processor, but the word | length was arbitrary, not 32 bits. You could, in *Lisp | (and maybe the low-level calls that C* used, I didn't | work with that enough to know) define pretty much any bit | length you wanted, up to the number of bits on the | processor. | | They later implemented a floating-point accelerator that | worked with 32 of the 1-bit processors in "slice-wise" | mode to do 32 (and possibly 64) bit arithmetic, where the | word was spread across all 32 processors. | | The CM-5 used true 32-bit SPARC processors. | | Also, the CM-2 had up to 128k bits per processor, and you | could have 64k of them in one CM-2. | jacquesm wrote: | How feasible do you think it would be to recreate the | connection machine using modern day FPGA's? | | I still think it is one of the most interesting computer | architectures that ever made it into (low volume) | production. | kens wrote: | I'm no FPGA expert but I think two problems would be the | 4K per-processor memory and the inter-processor | communication. You might have routing problems with the | Connection Machine's hypercube routing. | | Random Connection Machine fact I found on Wikipedia: Maya | Lin, who designed the famous Vietnam War memorial in | Washington also designed the exterior of the Connection | Machine CM-5. | dboreham wrote: | There were single-bit versions of the PDP-8, iirc. PDP-8S | probably. For cost reduction reasons. | dboreham wrote: | Traditionally you'd start with 74181 or derivatives, or if | you wanted to go all out: Am2901. | bogomipz wrote: | This another great post! I had question about the following: | | >"Another key circuit in the processor is the transmission | gate. This acts as a switch, either passing a signal through or | blocking it." | | This is the first time I think I've come across a "transmission | gate" circuit in one of your posts. Is this uncommon then? What | is the actual input to the transmission gate? | kens wrote: | The transmission gate is pretty common in microprocessors. In | NMOS circuits, it's a single transistor called a "pass | transistor", but in CMOS it uses two transistors and is | usually called a transmission gate. | | It takes a logic signal as input, as well as a control | signal. If the control signal is 1, the logic signal goes | through to the output. If the control signal is 0, the | transmission gate is disconnected. You can think of it like a | relay-controlled switch, or a tri-state buffer. | | The nice thing about MOS circuits is the gate resistance is | almost infinite, so if you open a pass transistor, a gate on | the output side will keep the old value (for a few | milliseconds at least). So you can create latches almost for | free. This is used very often in microprocessors. The | disadvantage is the chip has a minimum clock speed, or else | the data will leak away. | | Pass transistors / transmission gates can also be used to | implement multiplexers, selecting one of the inputs. | | A disadvantage compared to regular logic gates is that a | logic gate amplifies the input signal, while a pass | transistor weakens the input signal. So you usually can't | connect two pass transistor circuits together directly. | | https://en.wikipedia.org/wiki/Pass_transistor_logic | jacquesm wrote: | Also not because of the bias voltages. | amelius wrote: | I guess it only has 2 instructions? Sounds like the ultimate RISC | processor. | Brian_K_White wrote: | Remind me again why we're not supposed to say "didn't read the | article"? | kens wrote: | The data path is 1 bit, but instructions are 4 bits, so it has | 16 different instructions. Many processors back then had | completely different widths for instructions vs data. | jlokier wrote: | It's still true today. | | The ubiquitous 64-bit ARM has 32-bit instructions and 64-bit | data registers. | colejohnson66 wrote: | Even today, Harvard architectures[a] like the PIC have | different instruction and data widths. For example, the PIC12 | has 12-bit code words with 8-bit data words IIRC. | | [a]: Are there von Neumann architectures with different width | code and data? | jecel wrote: | Essentially all von Neumann architectures have different | sizes for code and data. Von Neumann's own IAS, for | example, packed two instructions in each data word. | | Even many machines that started out with one instruction | per data word (ARM, MIPS, Nova...) eventually evolved to | larger data words while keeping the same instruction size. | An exception was the PDP-8, but there might have been | others. | | The IBM 360 had 32 bit data words but instructions were 16, | 32 and 48 bits long. | | A modern example is RISC-V. A RV64GC chip, for example, has | 64 bit data words but the instructions are 32 and 16 bits | wide. | kens wrote: | The Intel iAPX 432 used variable bit length instructions, | where instruction lengths could be pretty much anything, | completely unaligned with bytes. As you might expect, this | was kind of a mess. | | The iAPX 432 was designed to be Intel's revolutionary | follow-on processor to the 8080 with all sorts of bizarre | features such as objects implemented in hardware. However, | it fell behind schedule, so Intel created the 8086 as a | stopgap processor until the iAPX 432 was ready. Things | didn't turn out as expected; the 8086 took over the world | and the iAPX 432 was a failure. | jonsen wrote: | URISC: | | https://en.m.wikipedia.org/wiki/One-instruction_set_computer | jonsen wrote: | The MC14500B Industrial Control Unit Handbook is available here: | | https://en.wikichip.org/wiki/File:Motorola_MC14500B_Industia... | [deleted] | pantalaimon wrote: | Maybe related, there is also SERV, a bit-serial RISC-V CPU | | https://github.com/olofk/serv ___________________________________________________________________ (page generated 2021-02-06 23:00 UTC)