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?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.
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.
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.
What are you pointing to by referring to 'memory' virtual memory or physical? In case of virtual memory it is 4GB for 32 bit processors, although you might not get all of them to be used as the OS uses a portion of it. Also note the PAE (Physical Address Extension) for your CPU and if the OS is running a PAE kernel. This will give you more than 4GB of physical memory to be installed and used, but the virtual address space still remains 4GB. Please have a look :
http://en.wikipedia.org/wiki/Physical_Address_Extension
http://msdn.microsoft.com/en-us/library/aa366796(v=vs.85).aspx
http://msdn.microsoft.com/en-us/windows/hardware/gg487503
Well, it depends on certain variables.
For instance, an 8-bit processor has values of up to 255, which was figured out by taking 2 to the eighth power, and subtracting the value by one. This number, 255, is how many bytes the CPU can handle, and the RAM cannot exceed this amount.
Now, let's step it up a bit (no puns intended). A 16-it processor has values up to 65,535, and that was once again figured out by taking 2 to the sixteenth power, and then subtracted by one (I'm sure you get the big picture now). This means we can have 65,535 bytes of RAM, or 65.535 kilobytes. Hopefully, this is starting to make sense.
A 32-bit processor has values up to 4,294,967,295 (these numbers are getting pretty big). That's 4,294,967,295 bytes, or 4.294967295 gigabytes of RAM. This technology started being used a lot in the 90s, and it still remains semi-popular today.
But, of course, we all know how technology changes quickly and often, so yes, there is also 64-bit computers, as good as 32-bit technology is. This is actually the most common processor type today. So, they can support values of 18,446,744,073,709,551,615. Yeah, and that's also how many bytes it can hold, which is equal to 18.446744073709551615 exabytes.
And, even though currently there are no processors that can hold this amount, there is also 128-bit processors. They can hold up to 340,282,366,920,938,463,463,374,607,431,768,211,455 bytes of data, which is also equal to 340.282366920938463463374607431768211455 ...um... well, some measurement of bytes, that happens to be bigger than yottabytes, and as far as I know, there are not any units of byte measurement beyond that. But, hey, that just tells you a 128-bit processor can handle a lot, and we might be seeing them in the far future. The reason people say 128-bit, 64-bit, 32-bit, 16-bit, or 8-bit is because it's a lot easier than trying to remember all the those than those large numbers that each of them represent.
So, I hope this helps. I'm not sure the 8-bit one is correct, because I know the NES has 2 kilobytes of RAM, which exceeds 255 bytes, but, I know everything else is correct. If it isn't correct, you could do some research on your behalf as well ;).
精彩评论