What in a computer determines how much memory a memory address holds

memory

In my notes, I found the following quotes from unknown sources:

a byte-addressable 32-bit computer can address 2^32 = 4,294,967,296 bytes of memory, or 4 gibibytes (GiB).

a system with a 32-bit address bus can address 2^32 (4,294,967,296) memory locations. If each memory address holds one byte, the addressable memory space is 4 GB.

what is it in a computer to determine how much memory a memory address holds, i.e., whether the computer is byte-addressable, word-addressable, or xxxx-addressable? Is it the RAM itself, CPU, or something else?

Note: My question has nothing to do with programming. I think it is different from programming perspective, where the amount of memory that the address of an object hold depends on its data type (int, float, …).

Thanks!

Best Answer

Without going into the technical details (which I would get wrong anyway), the computer hardware itself is designed and built so that each address refers to a byte, or 2 bytes, or 4 bytes, or whatever. The operating system has no choice in the matter; it must be written to conform to the hardware design.

Most, probably all, computers running today are byte-addressable, and a byte is 8 bits. Past designs have been different.

The number of bits in an address determines the number of addresses. The number of bits stored at an address is specified by the design; there will be one pin and one line to carry the data. Multiply those numbers together to get the maximum number of bits that can be stored.

To answer your actual question: Is it the RAM itself - yes, CPU - yes, or something else - yes, the motherboard and chipset. All of these have to be designed to work together and they all have to agree on byte size and addressing.

Related Question