A computer built from NOR gates: inside the Apollo Guidance Computer
righto.com
righto.com
Ben explains and builds basic computers from components. It's more to see how things work like registers and memory addresses. It's a nice mix of electronics and computer science.
When I ended up taking a MIPS class not too long after, it felt more like a recap of Ben's material than anything new.
We'll probably get there soon again, this time for gaming PCs.
Was this at one of the mainframe manufacturers?
The Xerox Alto, which was used for the original Smalltalk in 1972, also worked much this way: It had 16 program counters, one of which pointed to a program for interpreting Alto instructions. Other program counters were for refreshing the screen, operating the disk, driving the laser printer, and moving network packets. An interrupt just changed which program counter instructions came from.
The Smalltalk runtime was another interpreter, interpreted by Alto (interpreted) instructions. People complained about how slow Altos were, no surprise.
I might have misremembered some of the details above. Corrections welcome.
By the way for CMOS, NOR is somewhat counter-intuitively still preferable as the two series connected PMOS pull-up transistors can be collapsed into one dual-gate PMOS, which leads to more desirable gate geometry.
This is the reason why CMOS CD4000 is NOR (and without looking it up I don't even know what is the P/N of 4000-series 2-input NAND), while TTL SN7400 is NAND.
On the other hand in modern CMOS processes and particularly in CMOS VLSI design this distinction is mostly moot.
[0] https://www.nand2tetris.org/
Edit: Just saw that it is even referenced[1] in the article itself.
[1] https://www.righto.com/2019/09/a-computer-built-from-nor-gat...
[1] https://medium.com/swlh/i-dont-know-how-cpus-work-so-i-simul...
Combinational logic examples:
- NOT gate -> N-input (N >= 1) NOR with all inputs tied together to the input
- N-input OR gate -> N-input NOR gate with a NOT gate at the output
- N-input AND gate -> N-input NOR gate with a NOT gate in front of each input
- Bonus - sequential logic: S-R latch -> 2x 2-input NOR gates with one each of their inputs tied to the other gate's output
A similar issues shows up in FPGA where four-input lookup tables (LUT4) were the sweet-spot for many generations but in the past few years LUT6 (and hybrids like the ALM ~ 2xLUT6) have taken over.