Microprocessor and Memory Basics

The Address Capacity of Memory

Let a = number of address wires and d = number of data wires. a is the width of the address bus, while d is the width of the data bus.

In many older computers, the address bus was 16 bits wide (a = 16). This meant that there were 16 wires. Such microprocessors could address up to 216 = 65536 memory locations. By increasing the width of the address bus, more memory locations can be directly addressed. Each time the width is increased by one wire, the address capacity is doubled. ARM processors normally have 32-bit wide address buses. A 32-bit ARM processor could address up to 232 = 4,294,967,296 memory locations!

In older computers, the data bus was a mere 8 bits wide (d=8). Each location was an 8-bit byte. Each byte (8 bits) could store either an unsigned number in the range 0-255 or a 2's-complement signed number in the range -128 to 127. By increasing the number of data wires by one, the capacity goes up by 2a bits.

ARM processors have 32-bit wide data buses. Each location is a word which is 4 bytes or 32 bits long. Each word could store either an unsigned number in the range 0-4294967295 or a 2's-complement signed number in the range -2,147,483,648 (-231) to 2,147,483,647 (231-1).

The total addressed capacity in bytes is: 2a

For an ARM processor, the addressable capacity is 232 bytes (or 4 Gigabytes of memory!)