Silicon observatory / No. 004

Inside the ARM1.

A 32-bit processor in 25,000 transistors. Look at everything they left out.

1985INTRODUCED
32 bitDATA WIDTH
≈6 MHzCLOCK
25,000TRANSISTORS
READY

02 / Framebuffer

This page's own invention
BASE&100000
SIZE320×200
PIXEL3:3:2 RGB
TIMERoff

The ARM1 had no display hardware at all — it was a prototype on a board that plugged into a BBC Micro. This framebuffer and the timer are invented here so the demos have somewhere to draw. One byte per pixel, three bits of red, three of green, two of blue, no palette and no interleaving.

03 / Processor die

Acorn ARM1
PROGRAM COUNTER R15&0000000 INSTRUCTION&00000000 DECODE + CONDITIONNOPalways 32-BIT DATA PATH BARREL SHIFTERno shift ABALU REGISTER BANKR0 ADDRESS + INCREMENT&0000000 MEMORY STATUS · R15 BITS 31:26nzcv IF MODE · R15 BITS 1:0SVC
INSTRUCTION&00000000
PC&0000000
EXECUTED0
SKIPPED0
Ready. Step to fetch and execute the first instruction.

04 / Registers

Banked registers in orange

R15 is the program counter and the status register in one word: flags at the top, mode at the bottom, and 24 bits of word address in between. Reading it gives this instruction's address plus 8, because two more are already in the pipeline.

05 / Memory

&008000

Thirty-two words at a time, little-endian, one row per eight. Green outline marks the program counter. Words changed by the last instruction flash.

Execution trace

Newest first · last 60
No instructions executed.

07 / The instruction set

08 / What it got right, and what it got wrong

Measured against the 68000 and the 80286

What it got right

What it got wrong