CPU Visual Handbook reference model

The machine we did not invent

The generic microprocessor in this handbook is somebody else’s model, rebuilt in our engine with his permission. Here is exactly what came from him and what did not.

The reference model for this machine — its registers, its buses, its two instruction formats and its example program — comes from Princípio de Funcionamento de um Microprocessador, by Prof. Filippo Valiante Filho (prof.valiante.info), used with his permission. The text here is our own.

What we took

The shape of the machine, and the order in which it is worth meeting. An 8-bit accumulator processor with a program counter, an instruction register, an address latch and a data latch, an accumulator and a temporary, an H/L pair holding a 16-bit address in two 8-bit halves, a stack pointer that is declared and wired to nothing, and a status register. One memory, with the program at 0000 and the data at 2000. One 16-line address bus and one 8-line data bus.

The two instruction formats: opcode plus value in two bytes, opcode plus high byte plus low byte in three. The three instructions LOAD, ADD and STORE, with the opcodes 86, 8B and B7 — deliberately invented numbers, because the machine is generic in the literal sense. The example program that adds 0A, 05 and 12 and stores the result at 2000. The list of cycle phases, and the timing table that shows one program as one page of instants.

What we added

Three instructions the deck does not have — LOADM, JMP and JZ — because with three instructions you cannot write a loop, and a machine that cannot loop is a machine you can only watch. Their opcodes are as arbitrary as the originals, and picked only so as not to collide.

And depth. The deck draws the ALU as two boxes and stops, because a slide does not open; here the same ALU opens into an adder, into one bit of it, into the XOR, into the NAND, into the transistors and the supply rail — nine levels from the system down. That is the part of the model that only exists because it runs.

What is ours, and why it matters

Every word of prose on this site. Permission to use a model is not permission to reuse a lecturer’s sentences: transcribing his text would be plagiarism with a licence attached. So the articles were written from scratch, and every technical claim in them stands on its own — traced to a primary source, or to the model in the lab, which you can run and disagree with.

The one place where his document is quoted as a document is the timing table, which we hold as an oracle: our machine is run against his table cell by cell, eleven rows, in a test that fails if we drift. Using someone else’s table that way is the strongest form of credit we know — it means his page, and not our opinion, decides when we are wrong.

The lab · The instruction cycle · Back to the handbook