[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)