views:

161

answers:

3

I have just started the Assembly language programming and in the first lecture our teacher told us about intel 8080 and intel 8085 and he said there was 64k memory with these processor.

Now i want to know that how we find this amount of memory with specific processor, for example i have a processor 1.8 Ghz , now how i can find out the amount of memory that can be used with this processor.

what i am trying to ask is tell me the method how we can find out this amount of memory?

+1  A: 

Usually processors are designed so that a single integer register can store the address of any memory location. Therefore the "maximum amount of memory" is determined by the amount of bits of a register (or the processor). 32 bits equals to 4 GB. 64 bits equals to 16 exabytes of RAM.

Joonas Pulakka
+5  A: 

It depends on how many bits of (physical) addressing the CPU supports, The number of address bits is typically <= the number of bits in an address register, e.g.

8085/Z80 - 16 bit address registers - 16 bit addressing - 64 kB address space
68008 - 32 bit address registers - 20 bit addressing - 1 MB address space
68000 - 32 bit address registers - 24 bit addressing - 16 MB address space
68020 - 32 bit address registers - 32 bit addressing - 4 GB address space

Note that many 64-bit CPUs typically only support something like a 40 bit address space, i.e. 1 TB.

Paul R
And of course, even if the CPU supports a given amount of memory it doesn't mean the other hardware or OS can support it. E.g. Intel i7 is a 64bit CPU, but motherboards are typically limited to 24GB.
Richard
A: 

Depends on the architecture but a CPU will be limited by how many address lines it has. With an old pentium pro 32-bit CPU there were 36 address lines supported and therefore the CPU could support up to 64GB. A more recent CPU such as the i7-860 which is a 64-bit CPU, also only has support for 36 physical addresses and therefore is limited to 64GB too. The amount of physical address space can be found by using the CPUID instruction code, other CPUs may use different techniques or require reading the datasheet. Seems like your studying x86 so in that case CPUID is what you want if your CPU supports it.