Ancestors

Toot

Written by #?.info :commodore: on 2024-09-11 at 14:23

One showerthought I regularly have is how terms like "32 bit" had no meaning until 32 bit CPUs started to appear like the 68020, ARM, and 80386.

People who weren't from the era tend to not know this, but 16 bit and 8 bit were really fuzzily defined and there was no consensus. The 8088 was considered a "16 bit chip" because it had a 16 bit ALU, and the PC likewise a 16 bit computer because it had an 8088. But literally the ALU, comprising 1 square mm or less of the entire IBM PC, was the only part of the IBM PC that was 16 bit. It wasn't until the 80286 that the PC had 16 bit databuses throughout.

Nobody knew what to call the 68000. It generally was called 16 bit because of the ALU (there it is again!) and the external data bus, but had a 32 bit ISA.

Meanwhile the Z80 and 6502 were both "8 bit". But... the 6502 was somehow considerably faster, clock for clock, than the Z80. That's because the Z80 had a 4 bit ALU. So the Z80 was actually 4 bit? Or was it 16 bit? I mean, a major advantage it had over the 6502 was its support for 16 bit processing at the instruction level. The ample registers could be used as pairs (BC, DE, HL) and there were 16 bit ADD/etc instructions that used them, for example.

In the mean time, like the 8 bit 6502 and the 16 bit 8088, the Z80 had an 8 bit external address bus.

No consistency whatsoever. By ALU, the Z80 was 4 bit, 6502 8 bit, and 8088, 68000 and 80286 16 bit. By data bus, the Z80, 6502, 8088, and 68008 were all 8 bit, and 80286 and 68000 16 bit. By register size and type of operations single instructions could easily do (this is where it gets fuzzy) the 6502 was 8 bit, the Z80, 8088, and 80286 16 bit, and the 68000 and 68008 32 bit.

It gets worse. The real difference between what was considered 8 bit and what was 16 bit was... memory addressing. All the mainstream chips that were considered 8 bit could only address 64k of memory without resorting to external hardware hacks to provide paging etc. That is, the address bus was 16 bit. All the chips that everyone called 16 bit were able to directly address much more than 64k, a meg in the case of the 8088 and 68008, and 16Mb in the case of the 80286 and 68000. True, the Intel chips had an internal weird way to represent this with dedicated registers being used to offset a 16 bit base address, but if we're going to complain about that, we might as well complain that the 6502 didn't exactly make generic 16 bit addressing easy either.

In the end the terms were more about marketing than anything else. 16 bit actually meant "Second generation" (assuming the 8080 was first, and its predecessors like the 8008 and 4000 series were more prototypes) It wasn't until the 32 bit processors came along that were unambiguously 32 bit that these words meant something. 8 bit and 16 bit still seem to be used in their 1980s contexts today, largely because that hardware is considered obsolete so it doesn't matter.

[#]retrocomputing

=> More informations about this toot | More toots from poundquerydotinfo@virctuary.com

Descendants

Written by Sos Sosowski on 2024-09-11 at 15:04

@poundquerydotinfo I always thought about it this way:

The "bit number" is the size of the primary accumulator, be it A in 6502 and Z80, D0 in 68000 or AX/EAX in x86.

By this definition Z80 and 6502 are both 8bit, and 8086/286 is 16bit and 68000/386 is 23bit, which, I guess checks out.

=> More informations about this toot | More toots from sos@mastodon.gamedev.place

Written by #?.info :commodore: on 2024-09-11 at 15:07

@sos Oh people got mad at you if you said the 68000 was 32 bit for some reason!

(That said, I always felt it (and even its stripped down stablemate the 68008) was better described as 32 bit than 16 bit, but I was me.... I went by ISA, not marketing...)

=> More informations about this toot | More toots from poundquerydotinfo@virctuary.com

Written by Sos Sosowski on 2024-09-11 at 15:10

@poundquerydotinfo Let's just take the 68k out of equation and everything will be simpler :P

=> More informations about this toot | More toots from sos@mastodon.gamedev.place

Written by #?.info :commodore: on 2024-09-11 at 15:13

@sos And the Z80 too!

I think the real underlying reason for the problem was that every CPU was a mix of compromises because everyone had a tiny transistor budget and also had to be efficient with RAM. Once 100,000+ transistors per CPU became standard, and RAM was measured in megabytes, everything could be 32 bit and there was no need any more for something to have different ALU/database/instruction/register/etc sizes.

=> More informations about this toot | More toots from poundquerydotinfo@virctuary.com

Written by SuperIlu on 2024-09-11 at 15:50

@sos @poundquerydotinfo this „feels“ like the correct definition for me, too.

When doing assembly on the m68k I considered it 32bit because I could do 32bit ops w/o any special tricks or anything...

=> More informations about this toot | More toots from dec_hl@mastodon.social

Written by Your friendly 'net denizen on 2024-09-11 at 16:46

@poundquerydotinfo Huh. I did not know about the 4-bit ALU on the Z80. Faskinating.

https://www.righto.com/2013/09/the-z-80-has-4-bit-alu-heres-how-it.html

=> More informations about this toot | More toots from cstanhope@social.coop

Written by Vertigo #$FF on 2024-09-11 at 17:13

@cstanhope @poundquerydotinfo When you build your execution unit around the limitations of the external bus timing, you can make use of those extra cycles by sacrificing internal resources. Honestly, it is brilliant design choice by Zilog, as the smaller ALU size means they can pack more instruction decode logic.

=> More informations about this toot | More toots from vertigo@hackers.town

Written by Your friendly 'net denizen on 2024-09-11 at 17:36

@vertigo @poundquerydotinfo Yep, it's always fun to learn about these sorts of things. Especially when its an approach that seems like it would affect performance, but because of the larger context it's just a good use of available resources. Neat. :)

=> More informations about this toot | More toots from cstanhope@social.coop

Written by Vertigo #$FF on 2024-09-11 at 17:08

@poundquerydotinfo I would claim that the Z80 remains 8-bit even under the definition of "type of operations single instructions could easily do."

The Z80 only supported ADC on 16-bit register pairs (and SBC on an even smaller subset of registers); however, for all other operations, AND, OR, XOR, CP, etc., all you could do was 8-bit operations against the accumulator.

So, yeah, it had a few convenient 16-bit operations intended to easily index data through memory; but compared to the 8088, the Z80's 16-bit support was utterly anemic.

I suppose if you really wanted to have some fun in the "is it a 16-, 32-, or 64-bit processor", one need look no further than the Z8000 / Z80000 family. ;)

=> More informations about this toot | More toots from vertigo@hackers.town

Proxy Information
Original URL
gemini://mastogem.picasoft.net/thread/113119371650369662
Status Code
Success (20)
Meta
text/gemini
Capsule Response Time
305.354775 milliseconds
Gemini-to-HTML Time
2.680553 milliseconds

This content has been proxied by September (3851b).