I have some doubts all related to the same basic concept of how a computer works.

1) I always thought that the address bus width defines ultimately how many memory locations the CPU can access (point to), therefore the memory range (i.e. in a 32-bit wide address bus, the CPU can access up to 2^32 memory locations, which is 4GB of memory, given that each memory location is a memory block containing 1 byte).

Is this the right understanding?

2) At the same time, I had the impression that the data bus width is also called the word size, and both refer to the amount of data that the CPU can read from or write to memory at a given time.

Is this correct?

3) Lastly, when we say that a CPU is 32-bits, I always thought that this means that the internal CPU registers are 32-bits. Is this correct or do the address/data bus sizes have any direct effect on whether the CPU is 16, or 32 or 64 bits?

  • 3
    $\begingroup$ See cs.stackexchange.com/q/48425/755 and cs.stackexchange.com/q/63001/755 and cs.stackexchange.com/q/38138/755. Community votes, please -- is this a duplicate? $\endgroup$
    – D.W.
    Nov 20, 2016 at 18:36
  • $\begingroup$ The data bus width is not directly related to the register size (for example, the MC68008 is a 16/32bits CPU with a 8bits bus, PowerPCs G3,G4 are 32bits CPUs with 64bits busses, many, many examples...). The data bus width can affect the lower address bits, as most CPUs are able to individually select bytes (some DSPs cannot), with a 32bits bus, addresses 1 and 0 select bytes within the data bus, there is usually "size" signalss which indicates how many bytes are selected within the data bus, or individual "byte enable" signals : A[1:0] and SIZE[1:0] or, alternatively, BE[3:0] $\endgroup$
    – Grabul
    Nov 20, 2016 at 18:46


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Browse other questions tagged or ask your own question.