Natural Opinions

An Archive Of My Thoughts


So in a perfect world we shouldn't even really be talking about/debating this.  But unfortunately we now have deal with this BS forever since it's become so ingrained into our society.  Bits are used to measure literally everything in digital electronics.  Asking how many bits a computer has is like asking how many digits your car has, it makes no god damn sense.  You need something specific to measure.  For example "memory addresses in this architecture are 24 bits" or to use our car analogy "speed is measured with up to 3 digits".  This whole "bit wars" thing started off with marketing BS used to convince a technicially illiterate consumer base that x product was better than y product because it had more bits.  The sega genesis was the first time the term was ever used for marketing a video game console.  But the term was used to market PCs a decade before that so we can't really blame sega for this.  This magic number does have some technical merit, to say that it's completely useless marketing BS would be wrong.  However it is stupid that we say a system is 32 bit without saying WHAT exactly is 32 bits.  Yet we all do it anyways.  And like any number if your product has a higher number than the competition the marketing team for your product is going to parade that number around like it's the most important thing in the world.  It happened with the N64, the genesis, the atari jaguar, etc.


It's falling out of popularity thankfully.  Core count has replaced clock rate and bit level as the new "magic marketing number" in modern computers/video game consoles.


But since we have to live with this now we might as well come up with an official measurement system.  Most companies measure the size of the integer GPRs in the cpu.  If a general purpose register can hold a 64 bit integer than the instruction set architecture is considered 64 bit.  You'll notice I said instruction set architecture.  That's right.  When we say a system is 64 bit we're talking about the ISA not the µarch (microarchitecture).  Although the cpu will need 64 bit dapaths internally in order to manage instructions operating on 64 bit registers so in reality the internals do matter, just not directly.

-Floating point registers are irrelevant since floating point can be managed at the software level and FPUs were optional for most cpus up until the 1990s.

-Vectors are irrelevant.  Vectors are essentially packages containing several data values.  The bit level should obviously be based on the size of the individual data values, not the entire package.

-Instruction size is irrelevant since it has absolutely nothing to do with the processing capabilites (at least not directly) of the cpu.

-Buswidth is irrelevant (data bus and address bus)  since it has absolutely nothing to do with the processing capabilites (at least not directly) of the cpu.  If this were not true the intel 8086 would be considered a 16 bit cpu, while its cousin the 8088 would be considered an 8 bit cpu.  Despite the fact that they are essentially the same chip and can process the same code just with a different bus.  Pentium (as in the original pentium cpus) would be considered a 64 bit cpu if buswidth was our measurement standard.

-Memory address size is partially irrelevant.  Very rarely do 64 bit cpus use 32 bit memory addresses since the memory addresses are usually designed to fit in the GPRs.  They are usually the same so a 64 bit cpu usually supports 64 bit memory addresses.  But not always, and if they are different than you go by the integer GPR size, not the memory address size.

-All processors except the cpu are irrelevant since not all applicatons directly use coprocessors like GPUs.

-If the system has multiple cpus with different bit levels you use the highest one.

-If the system has a cpu with multiple bit level operational modes (ISA extensions) you use the highest one.

-Some people don't consider a cpu with 32 bit and 64 bit operational modes to be a "true 64 bit processor".  They argue that the ISA must have been 64 bit from the start to be considered a true 64 bit ISA.  But most engineers/computer scientists think that's total is.  Example:  "pentium IV isn't a true 64 bit processor because x86-64 is just an extension".  Of course by that logic x86 should be considered 16 bit since 32 bit registers were added via an extension too.

So how many bits does my console have?

Some instruction set architectures start off as 8/16/32 bit then are extended later on to 16/32/64 bit by adding a new operational mode.
Some consoles have several different cpus with different bit levels.  These are marked as (multiprocessor).
In both of these circumstances I list multiple bit levels.

1st gen (1972-1976)
They don't use microprocessors.

2nd gen (1976-1983)
Too many to list
All 8 bit

3rd gen(1983-1987)
Nintendo NES
Sega SG-1000
Casio PV-1000
Sega Master System
Atari 7800
All 8 bit

4th gen (1987-1994)
SNES:  16 bit
Sega Genesis:  8/16/32 bit (multiprocessor)
Turbo-grafx-16:  8 bit
Neo Geo:  8/16/32 bit (multiprocessor)
Pretty much a 16 bit gen as far as programming was concerned.

5th gen (1994-1999)
N64:  32/64 bit (via operational mode)
PS:  32 bit
Saturn:  32 bit
Atari jaguar:  16/32 bit (multiprocessor), they marketed it as 64 bit because the GPU could operate on 64 bit values
Amiga CD32:  32 bit
3DO:  32 bit
Pretty much a 32 bit gen as far as programming was concerned.  Very few N64 games contained any 64 bit code at all (which N64 emulator developers are very thankful for) since it is usually far slower than 32 bit code.

6th gen (1999-2005)
gamecube:  32 bit
ps2:  32/64 bit (via operational mode)
xbox:  8/16/32 bit (via operational mode)
dreamcast:  32 bit
Pretty much a 32 bit gen as far as programming was concerned.

7th gen (2005-2012)
wii:  32 bit
ps3:  32/64 bit (via operational mode)
xbox360:  32/64 bit (via operational mode)
Pretty much a 32 bit gen as far as programming was concerned.  Most game devs still don't compile 64 bit code since it's usually slower.  This is likely to continue next gen.

8th gen (2012-????)
WiiU:  32/64 bit (via operational mode)