Take the 2-minute tour ×

Suppose that I have a computer with an address register of size 16 bits (MAR, for example). The smallest addressable unit in this computer is a word and each word is of size 2 bytes. What is the maximum memory size (in bytes) this system can support?

I thought it would be 2^16 = 65536 bytes, but the part about the smallest addressable unit implies that this is not the way to solve it.

Thanks in advance

share|improve this question
I'm not very experienced in this stuff, but build upon what you were saying. 2^16 would be the number of unique addresses the register could hold, but if each piece of memory held is 2 bytes (16 bits), would this not be 2^16 x 2 bytes? 65536 addresses x 2 bytes/address = 131,072 bytes of memory? –  ps2goat May 29 '13 at 2:14
Memory size depends on address bus size i.e. either 16 or 32 or 64 bits. So 2^16 or 2^32 or 2^64 is the maximum main memory supported. –  Gautham Kantharaju May 29 '13 at 6:54
@ps2goat: Tricky part is, a "byte" can be (and to some extent, has been) defined as the smallest addressable unit of memory in the system. It's perfectly logical to have 16-bit bytes; it's only the near ubiquity of 8-bit bytes that people think a byte must always be 8 bits. –  cHao May 29 '13 at 13:15
@GauthamKantharaju: Tell that to Intel. The (16-bit) 8086 had a limit of 1MB (2^20 bytes) –  cHao May 29 '13 at 13:17
Yeah, the 8088 had a 20 bit address bus. And the iapx286 had a 24 bit address bus (for a 16 MiB limit). The general principle holds true though. You can normally (without some sort of address extension or bank switching scheme) address as many machine words as your address bus can enumerate. –  Brian Knoblauch May 29 '13 at 14:19

2 Answers 2

There is no direct correlation to the maximum amount of memory a system can support, and the size of address registers.

16bit computers 30 years ago could very well support more than 64 kilobytes. On the other hand, modern 64bit processors typilcally only have lanes for 52 bits (or less), but even so a typical computer cannot nearly support 2^52 bytes of memory.

Typical 64bit computers today could in theory address 16 exibytes, but present-time CPUs only support 4 petabytes of phyisical and 256 terabytes of per-process virtual memory. Typical desktop mainboards support 128GiB maximum, if you buy extra expensive DIMMS. With affordable DIMMS, you're limited to about half as much (there are only so and so many slots).

Operating systems typically allow for main memory sizes in the hundreds of gigabytes only (e.g. 512 GiB for Windows 8 enterprise/professional, and 128GiB otherwise, or as little as 16GiB for Windows 7 Home Premium)

share|improve this answer

Generally the smallest addressable size is one byte, as you have calculated it, if it were one byte it would be 2^16*1 = 65536 bytes. However, because on this system there are two bytes per address, it is actually 2^16*2 = 131072 bytes.

share|improve this answer

Your Answer


