joefish wrote:The processor does 16-bit operations internally but exposes 32-bit data externally for the address bus (it does have some internal 32-bit operations, but no-one calls it a 32-bit processor).
A fine time to get teoLOGICAL(thank you, I'll be here all week long) on CPUs this:
(Everything to the best of my knowledge, correct me where I am wrong)
The logic address space is 24 bits. The top 8 are ignored internally by the 68000. Apple/M$ used to stuff things in there(i.e. when storing pointers in memory). Bites you HARD in the ass when you upgrade later.
The chip has 24 address pins. (Not really, but it is anyway.) Hence the above.
The chip has 16 data pins.
The registers are 32bit wide.
The instructions can work on 8, 16, or 32 bits at a time.
All instructions take a multiple of 2 cycles to execute.
The fastest instructions take 4 cycles. There are instructions that affect a full 32bit register in 4 cycles.
If an instruction needs to access memory it takes an extra 4 cycles for each byte/word, and 8 cycles for a longword (this because it needs to do two memory reads to get 32 bits over a 16bit bus).
BUT, to get back to the quote: The "wiring" model internally is AFAIK 16 bits that get chained together for 32bit results. Which might be why it takes so many cycles to do just about anything (IMO). Kind of like how the 6502 family can't help itself reading two bytes even for instructions that are only 1 byte long, it's just the internal operations of it.
The programming model is a 32bit processor. For performance optimizations you need to roll up your sleeves and weave in and out of a 16bit and 32bit perspective.
The 68010 adds a minimal cache/prefetch that boosts minimal loops. It's major selling point however, was to fix the fuckup that prohibited the 68000 to be virtualized properly. I wish Moto had refused to sell the 68000 after they finished the 68010.
68020 adds more addressing modes and instructions, has 32 address pins, 32 data pins, 256 byte instruction cache, higher clockrates, external FPU. (AmigaBASIC from M$ dies.)
68030 adds 256 byte data cache, higher clockrates.
68040 adds 4K instruction cache, 4K data cache, faster instructions, internal FPU.
68060 adds a few more caches for branch targets and some more I can't remember. Dual execution units and faster instructions. Higher clockrates.