I am a Machine Language programmer way back in the 286 and earlier.
Back then, the 16 bit 8086~80286, being a segmented memory architecture, can address 256MB of memory (theoretically if all pins were brought out). Each Segment is 4KB long and with 65536 (16bits) possible number of segments, we get 256MB for the lowly 8086~80286 CPU.
I thought 386 (32bits) onwards are Segmented CPU architecture also? So how was it that these 32 bits CPUs can only address 4GB of memory? ie, if its got a 32bit segment register and a segment is 4K bytes, the 386 and newer CPUs should be able to address 16TB.... (if all pins were brought out)...
please update me on what happened why 386 and newer generations could not address more than 4GB of memory without resorting to 64 bits addressign???
Someone explained to me that the 386 onwards uses a 32bit MMU mapping the 32bit segment address to a 32bit equivalent segment pointer in physical space..
so does this mean that we now have a MMU that maps 1 byte at a time? WOW! as if, we can have 1 byte long programs?
-
davepermen Notebook Nobel Laureate
because we have direct memory access, that means a single register is a direct address into memory. and a single register is 32bits. 2^32 = 4Giga => you can only address 4Gigabytes of memory
-
so segmentation was dropped altogether? -
Your data conflicts with mine. The 16-bit 8086 has 4 segments, each 64KB (2^16) long. Thus allowing for a total memory space of 256 KB.
Current processors (x86-32) don't use segment registers, so they use byte-addressing. So 2^32 = 4GB. -
davepermen Notebook Nobel Laureate
-
Since segmentation is dropped then, the argument is finished: 32bits = 4GB max addressible memory. No segmentation, no headache...
@Lithus
256KB? So how did my IBM PC of 1986 had 1MB or RAM?
Im sure a segment = 4KB; i spent contless sleepless nights programming assembly in those days.. Like i said, 4K segments of 65536 bytes (or 4Kbytes per segment x 65536segments) on 8086~80286 gives us a maximum theoretical addressible memory of 256MB! Not 256KB. But of course not all pins where available and only 20 was used thus a physical limit then of just 1MB.
From Wiki:
why 32bits intels can access 4GB only?
Discussion in 'Hardware Components and Aftermarket Upgrades' started by jsteng, Jan 26, 2010.