How does using memory with more bits allow you to reduce the address bus

addressingbusmemory

If you are using a CPU to address one 2MB memory module, then since 1MB = 220 and 2·220 = 221 = 2MB, you need 21 address lines.

If you use a 2MB 16-bit memory module instead, you can remove address line 0. Why is that?

Best Answer

With 16-bit wide memory a read of address xxx0 gives you two bytes: the byte at address xxx0 and the byte at address xxx1. So the addresses ending in "1" are superfluous; you only read address xxx0, never xxx1. Now, since the last address bit will always be zero, we can drop it, ending up with an address 1 bit shorter.