Is it the address bus size or the data bus size that determines “8-bit , 16-bit ,32-bit ,64-bit ” systems

memoryoperating systems

My simple understanding is as follows.

Memory (RAM) is composed of bits, groups of 8 which form bytes, each of which can be addressed ,and hence byte addressable memory.

Address Bus stores the location of a byte of memory.

If an address bus is of size 32 bits, that means it can hold upto 232 numbers and it hence can refer upto 232 bytes of memory = 4GB of memory and any memory greater than that is useless.

Data bus is used to send the value to be written to/read off the memory.
If I have a data bus of size 32 bits, it means a maximum of 4 bytes can be
written to/read off the memory at a time. I find no relation between this size and the maximum memory size possible.

But I read here that:

Even though most systems are byte-addressable, it makes sense for the processor to move as
much data around as possible. This is done by the data bus, and the size of the data bus is where the names 8-bit system, 16-bit system, 32-bit system, 64-bit system, etc.. come from. When the data bus is 8 bits wide, it can transfer 8 bits in a single memory operation. When the data bus is 32 bits wide (as is most common at the time of writing), at most, 32 bits can be moved in a single memory operation.

This says that the size of the data bus is what gives an OS the name, 8bit, 16bit and so on.
What is wrong with my understanding?

Best Answer

Generally the size of the databus is determined by the the size of the processor registers. Often it is the size of the processor registers that determine the OS type (64 vs 32). The physical bus sizes can technically differ from this (8088 as an example) but it's so rare that the author of your quote probably associates the two together.

Generally the pointer size also follows the register size but the physical address bus width can be bigger (as with the 8086 16-bit at 20) or smaller (as with the AMD 64 at 48)