Linked by Thom Holwerda on Sat 7th Sep 2013 09:54 UTC
Hardware, Embedded Systems

The 8-bit Z-80 processor is famed for use in many early personal computers such the Osborne 1, TRS-80, and Sinclair ZX Spectrum, and it is still used in embedded systems and TI graphing calculators. I had always assumed that the ALU (arithmetic-logic unit) in the Z-80 was 8 bits wide, like just about every other 8-bit processor. But while reverse-engineering the Z-80, I was shocked to discover the ALU is only 4 bits wide! The founders of Zilog mentioned the 4-bit ALU in a very interesting discussion at the Computer History Museum, so it's not exactly a secret, but it's not well-known either.

I have been reverse-engineering the Z-80 processor using images from the Visual 6502 team. The image below shows the overall structure of the Z-80 chip and the location of the ALU. The remainder of this article dives into the details of the ALU: its architecture, how it works, and exactly how it is implemented.

Ken Shirrif's blog is an absolute must for fans of ultra-low-level hardware stuff. This goes way over my head, but interesting nonetheless.

Permalink for comment 571689
To read all comments associated with this story, please click here.
DeepThought
Member since:
2010-07-17

IMHO neither the bus width nor the ALU was used to "define" the bitness of a CPU. It was the register width.

The 68k was seen as a 32bit CPU, but then people claim it a 32/16bit CPU because the data-bus with was only 16bit (or even 8 on a 68008 (Sinclair QL)).

But today this definition is also not that easy to use. For example, the e200 PowerPC cores have 64bit registers, but only for SIMD (SPE called by Freescale). So no real 64bit add possible. So it is a 32bit CPU.

So IHMO, today, the bitness is defined by the width of general purpose registers.

Reply Parent Score: 2