• We’re currently investigating an issue related to the forum theme and styling that is impacting page layout and visual formatting. The problem has been identified, and we are actively working on a resolution. There is no impact to user data or functionality, this is strictly a front-end display issue. We’ll post an update once the fix has been deployed. Thanks for your patience while we get this sorted.

Why the memory limit?

Elledan

Banned
E.g., a 32-bit (x86) system can only use 4 GB.

What causes this limit? And what will be the effect of the transition to 64-bit CPU's? What's the memory limit with other systems, like those based on the PowerPC CPU?

Lots of questions of which I hope that you can answer them 🙂
 


<< 4GB is the limit of a 32 bit address bus. A 64bit adddress bus can use about 4 billion times that much. >>

Okay, I'm dumb, but can you explain what exactly an address bus is and what the math behind this limit is?
 
Will a 64 bit CPU truly have an external 64bit address bus? (Now at least rather than in 50 years when I'm sure it will.) Seems that a 40 bit address bus, giving you 1024GB (1TB) should be plenty for a couple of years, or even a 48 bit address bus giving you 256 TB should be fine.

For quite some time a 32bit address bus has been limiting. Not that people have that much memory, but some OS let you map a file to memory. Then you can read the file just as if it were a large allocated block in memory. You just can't do this with a file whose size is up in the GB range with only 32 bits.

Then there are people who truely want 8GB of physical memory 🙂
 
When a CPU wants to read data from the memory, it has to provide the adress to this memory. This adress is sent down through the adress bus. When the memory system has located the memory requested it is sent back to the CPU through the data bus.

A 32 bit CPU has a 32 bit adress bus. For each adress you can allocate 1 byte (8 bits). And each byte needs to have a unique adress.

Consider if you have a 3 bit adress bus. Then the unique adresses it will have are:

000
001
010
011
100
101
110
111

That's 8 different adresses which means you could store a maximum of 8 bytes from it. The formula is 2^3 = 8 where the 2 is the number of combinations each bit can have. And 3 is the total amount of bits on the adress bus.

Use that formula for a 32 bit bus instead. 2^32=4.294.947.296

Each adress line adresses one byte. So the maximum becomes about 4GB

A 64-bit CPU can in theory adress 2^64 Bytes. But actual implementations among 64 bit CPU's are around ~45-55bits or simular. You'll have to look that up for each architecture or if someone else here is kind enough to do it for you 🙂
 
An address bus is the bus used to tell the memory which part of it you want to read from/write to. The math behind it is pretty simple if you know some binary math, a 2 bit bus would give you 4 possible address positions: 00, 01, 10, 11 now just apply that to 32/40/48/64 bits or whatever you want and you can see how the possible addressable memory size increases dramatically 🙂 2^64 = 18,446,744,073,709,551,616 / 1024^6 (GigaGB or whatever you wanna call it) = 16 whereas 2^32 = 4,294,967,296 / 1024^3 (GB) = 4. So the difference between addressable memory sizes is 3 powers of 1024 and a power of 4 or 32bit * 4 * 1024^3 = 64bit 🙂

Dunno if that made it any clearer at all

TF
 
Okay, let's see:

2^32 = 4.29496730 * 10^9 / 1024 * 10^6 = 4.19430400 GB

2^64 = 1.84467441 * 10^19 / 1024 * 10^6 = 1.80143985 * 10^10 GB

Should be enough for a couple of years 🙂
 
Also, note that some of the early Alpha CPUs that claimed to be 64-bit actually didn't implement all 64 bits of address space... Unless I'm mistaken, for instance, the 21064 actually only implemented 34 bit addresses. The other bits were reserved for future use, but just weren't implemented yet.

IBM attempted to do this a couple decades ago, but forgot to tell their system programmers not to use the reserved portions of the instructions. As a result, that particular computer was never able to expand its address space (as it was originally capable) because those bits of the instructions were used by virtually all of the software available for the system for other purposes...
 
AMD's upcoming Hammer processor actually only has a 40 bit physical address bus (1 terabyte) and a 48 bit virtual address program counter (256 terabytes). That's still probably plenty for the foreseeable future...
 
assuming current systems have 1gig, and the "normal" amount doubles every year, 1TB will be good for 10 yrs. which is a LONG time in the consumer computer world 😉
 
Does that mean the PS2 can address 4.33x10^770 bytes?

Wow, that should keep it futureproof for a couple of generations... considering its a couple of hundred orers of magnitude larger than the No of atoms in the universe 🙂
 
The 128 bit part of the PS2 comes from the fact that it can do integer math in 128bit, as well as 128bit FP (+ cool vector units)
 


<< Does that mean the PS2 can address 4.33x10^770 bytes?

Wow, that should keep it futureproof for a couple of generations... considering its a couple of hundred orers of magnitude larger than the No of atoms in the universe 🙂
>>



lol. I don't mean to make fun of you, but its just funny how the Sony marketing actually works in this way. XBOX IS ONLY 32 BIT SO IT IS WEAK!!111

If I remember correctly the playstation 2 only has like 64megs of memory anyway, including frame buffers and the like. Plus, its not like you can drop a new stick of rambus into the thing... Like the post above me said, the 128 bits is just in terms of the size of a number you can shove into its computational registers. (Register = place where number sits for storage on the cpu. Storage goes from registers to cache to memory to disk, each being larger and slower than the last) The geforce uses 256 bit registers, but its not like it needs 256^2 memory addresses to reference. Bitage the way it is used now can mean anything from how much address space exists for the memory, to how large a number can be worked with at once (or how many smaller numbers can be worked on at once in parallel but shoved into one big register to start with....guh). Its all marketing now.
 


<< Bitage the way it is used now can mean anything from how much address space exists for the memory, to how large a number can be worked with at once (or how many smaller numbers can be worked on at once in parallel but shoved into one big register to start with....guh). >>

Which always makes me wonder... based on the older definitions, is the Xeon CPU a 32-bit CPU, a 36-bit CPU (max address space using Extended Server Memory), or a 64-bit CPU (largest integer register size that can be operated on using SSE2)? 😉
 
Which always makes me wonder... based on the older definitions, is the Xeon CPU a 32-bit CPU, a 36-bit CPU (max address space using Extended Server Memory), or a 64-bit CPU (largest integer register size that can be operated on using SSE2)? 😉

That's an Intel CPU for ya, so many hacks thrown together you can't tell what it's supposed to be =)
 
Back
Top