# Connection between CPU address bus and max amount of RAM

So, i'm stack on the following question > "A system has a 12 bit address bus. What is the maximum amount of RAM that can be installed on the system?"

First of all, is this question correct? If so, can you explain to me way and how to determine the answer?

A 12 bit address bus means the computer can access $$2^{12}$$ unique blocks of memory. Unstated in the problem is the size of each block, and without that information you cannot determine the maximum amount of ram.

Bulat also points out that there are other tricks that could be played, such as multiplexing the address bus. If the address was sent in 2 cycles rather than 1, then $$2^{24}$$ blocks could be addressed.

Lacking any other information, and recognizing that this is a homework/test question we can make a few assumptions. The first is that we're not doing anything exotic like multiplexing the address bus. In a test-question setting, it is highly likely that they would call a multiplexed 12 bit bus a "24 bit bus" instead unless you were on a chapter specifically dedicated to clever address bus tricks.

The second assumption we have to make is the size of the block. Since it isn't specified, there are two common assumptions we could make. The first is that it is byte addressable, meaning each byte can be addressed individually as its own block. In that case, there's a maximum of $$2^{12}$$ bytes of memory addressable. The other common assumption is that they are addressable by machine word. If you are working in a chapter on 16-bit machines, it might be 16-bit blocks (2 byte), so there'd be a maximum of $$2^{12}\cdot 2 = 2^{13}$$ bytes.

Given it is a test question, and your teacher is not evil, I would assume the simplest answer is likely correct. I'd assume 1 byte blocks, and no exotic trickery, yielding a best answer of $$2^{12}$$ bytes. If I was facing this in an industry setting, I'd find the datasheets on the processor to determine the exact answer.

It depends. The system could be set up to always transfer memory in multiple of 16 bytes. So the 28 bit address bus allows you to access $$2^{28}$$ sets of 16 bytes, for a total of $$2^{32}$$ bytes. Another system could be set up in a different way.

Since

1. memory can be accessed in large blocks, f.e. 48-bit words
2. address bus can be multiplexed, i.e. address sent in two or more parts
3. MMU hardware can map multiple pages to the same memory address