Super User is a question and answer site for computer enthusiasts and power users. It's 100% free, no registration required.

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I have seen that CPU's and operating systems have moved upwards in terms of bits from 8-bit to 16-bit, to 32-bit and currently to 64-bit. I understand that this change is to increase the maximum amount of memory that is addressable by the CPU.

What I don't understand is why there is always a doubling of the bus size. Is it just an arbitrary/business decision to double the bus size or is there another reason?

Why can't we have a 33-bit CPU? Or if that wasn't enough, a 34-bit CPU? 64-bit seems like such a massive and unnecessary (expensive?) jump in address space and presumably complexity of the underlying silicon.

share|improve this question

closed as not constructive by bwDraco, Canadian Luke, Renan, CharlieRB, Journeyman Geek Feb 18 '13 at 2:08

As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.If this question can be reworded to fit the rules in the help center, please edit the question.

@sawdust - Yet there's nothing that sacred about having a data path that is a multiple of 8 bits, and even less, having one that's some power of two multiple of 8 bits. – Daniel R Hicks Feb 18 '13 at 1:44
This question actually isn't that bad, and it isn't quite as simple as "oh well learn binary derp!", as Daniel (and my answer) points out. I'm gonna upvote it back to zero for that reason. – marshaul Feb 18 '13 at 2:06
Your question contains a false premise. The increase in bit width was primarily to increase the width of general purpose registers. The increase in the width of pointers was historically secondary. – David Schwartz Feb 18 '13 at 3:32
@sawdust I have a pretty good idea of how binary works, which is pretty obvious really from my question. No thanks for your unhelpful and rather rude response. – localhost Feb 18 '13 at 3:44
@marshaul: This question was actually downvoted below zero? Why?? It's a good question! I think the downvoters probably had even less understanding of binary numbers than the question author. – HelloGoodbye Jan 12 '14 at 0:44
up vote 7 down vote accepted

I've seen 12, 14, 15, 17, 18, 20, 24, and 48-bit CPUs. But with modern VLSI technology (or is it ULSI by now?), adding more bits to the data path is not that expensive. Chip developers cram as much width onto the chip as possible, as that increases throughput with relatively little additional cost and with only a slight cycle time penalty.

Achieving more speed/throughput with a narrow data path and faster cycle time is much harder.

share|improve this answer
(Forgot to mention 60-bit CPUs -- The old CDC 6600 series.) – Daniel R Hicks Feb 18 '13 at 11:45
Even though this is an interesting answer, it still doesn't explain why powers of two seem to be preferred in modern PCs, which I think is what the question really aims at, even though not fully realized at the time of its creation. – HelloGoodbye Jan 12 '14 at 1:17
@HelloGoodbye It is not so much powers of two as it is multiples of 8. A 32bit data bus can write exactly 4 bytes in one instruction. – jiggunjer Dec 7 '15 at 9:45

Unlike many circumstances in a computer, for instance addressing, where increasing the address length by one bit increases the amount of addressable memory by a power of 2 (and why powers of 2 are so common in memory), the actual word length of the CPU can be any convenient value.

The common word lengths for processors (16, 32, and 64 bits) came about actually as multiples of 8 (rather than powers of 2, although of course these particular multiples of 8 also happen to be powers of 2), 8 bits being the minimum size for a single char, itself the smallest commonly-used primitive data type.

Since 8 bits is itself too imprecise to be very useful for numeric values (or even for extended character sets such as UTF-16), words larger than 8 bits allow for much greater efficiency when working with values utilizing more than that many bits of precision, and multiples of 8 bits (the smallest commonly-used data type) are still the natural choice, allowing one to store an integer quantify of (e.g. 2, 4, or 8) chars in a word without leaving wasted, unused bits.

The wikipedia article on words has a section Word size choice with ever so slightly more detail.

share|improve this answer
Not all multiples of 8 are powers of 2. – cpast Feb 18 '13 at 2:08
Excellent point, I really meant to say "these powers of 2". I'll make the fix. – marshaul Feb 18 '13 at 2:12
There have been computers built with 6 and 10-bit "characters". – Daniel R Hicks Feb 18 '13 at 11:44
Sure, and again, the word length can be any convenient number, which needn't be based on character length or anything in particular. For instance, an ALU which rarely operated on "characters" would probably have a word length based on the least-precision integer commonly used. I didn't mean to suggest anything prescriptive, merely to explain the basic reason for the most common choices (and the ones he asked about). – marshaul Feb 18 '13 at 15:34

Not the answer you're looking for? Browse other questions tagged or ask your own question.