6
$\begingroup$

Word size of most modern cpu’s is 32 or 64 bits. Both are a power of 2.

This looks “intuitively reasonable”, because a bit has 2 states, but I don’t actually have a hard argument for why this is the case. Moreover, in the past, word sizes of processors have been multiples of other numbers, such as multiples of 6 (because characters were encoded in 6 bits).

What is the reason that chip designers have chosen to make word sizes a multiple of 2?

$\endgroup$
  • $\begingroup$ I don't think this is really a computer science question. Most likely, the answer is just that eight bits became popular for whatever reason, and that happens to be a power of two. Then, for backward compatibility, it made sense to just keep doubling the word size, since operating on two "old-size" words at once is more natural than operating on three, or one and a half. $\endgroup$ – David Richerby Nov 24 '18 at 21:08
  • $\begingroup$ Could you update your question so that you will be asking consistently "a power of 2" instead of "a multiple of 2"? These two phrases differs greatly. $\endgroup$ – Apass.Jack Nov 25 '18 at 4:33
  • $\begingroup$ "the answer is just that eight bits became popular for whatever reason". In fact, I am interested in that "whatever reason(s)" as well. $\endgroup$ – Apass.Jack Nov 25 '18 at 4:38
  • $\begingroup$ I would believe readily that there should be many many reasons why the word sizes ends up as a power of 2, either from hardware side or software side (although I will not be too surprised if there are many counter-reasons.) $\endgroup$ – Apass.Jack Nov 25 '18 at 4:40
5
$\begingroup$

There is no good reason really. Having 12/24/48/96 bit would have been much more useful.

Historically, if we had had 12 bit bytes, then color graphics storing 1 byte per pixel would have had 16 different values for red, green and blue components, and we would never have suffered the madness of color palettes in graphics hardware.

Nowadays, you could store Unicode codepoints usually in a 12 bit byte, and sometimes using two 12 bit bytes.

48 bit pointers would still be plenty (enough to address 256 Terabyte of RAM, but with 12 bits per byte, so this would actually equivalent to 384 Tera octets).

48 bit floating point is enough for most purposes (where 32 bit floating point isn't).

$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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