← Back to context

Comment by silvestrov

13 days ago

No, this is very wrong. The 68000 is 32 bit internally and it has 32 bit registers: https://en.wikipedia.org/wiki/Motorola_68000

Externally it had 16 bits for databus and 24 bits for addresses. That is why we later got the 32 bit clean ROMs as Apple used the upper unused 8 address bits for flags.

It has 32-bit registers, but it has a 16-bit ALU, so it's a matter of opinion if that makes it a 16 or 32-bit processor. I'd go with 32-bit in that it's instruction set gives the impression to the programmer that they are working with a 32-bit system.

And for more evidence, the Z80 is referred to as an 8-bit processor but has a 4-bit ALU.

  • The 68000 actually had three 16 bit ALUs, so could munch a peak of 48 bits per clock cycle. Only one could do all operations while the other two were basically just add. These days we would say there were part of the AGU (address generator unit) but one of them was shared with the data register operations.

The cycle counts really don't back this theory up. And indeed, from that link:

> Internally, it uses a 16-bit data arithmetic logic unit (ALU) and two more 16-bit ALUs used mostly for addresses,[4] and has a 16-bit external data bus.

  • Like a lot of things, the taxonomy kind of breaks down at the edges and arguments can be made either way.

    I will throw out there though that ALU width and buses are generally seen as orthogonal to 'bitness' of a processor, and more an implementation detail. The Z80 had a 4bit ALU, but is considered an 8bit CPU. The PDP-8/s and SERV have single bit ALUs, but are considered 12 and 32 bits respectively. The 8088 is considered a 16bit CPU despite having both an 8bit ALU and bus.

    'Bitness' is generally defined more as 'what is the width of whatever is the closest thing to a GPR'.

    • Seconded. If you were an ASM programmer, you’d have no idea it had a 16 bit ALU. All the ops were 32 bit, regardless of what the underlying silicon looked like.