As mentioned here, can anyone explain what is meant by a 'flat' 32 bit space?
Text for the lazy:
Another interesting feature of the architecture is a virtual address system which maps all addresses into a 52-bit space. In this way applications can share memory in a "flat" 32-bit space, and all of the programs can have different blocks of 32 bits each.
A "flat" address space means that the virtualized 32-bit space used for each program is independently and directly accessible in consecutive offsets starting at byte 0 all the way through xFFFFFFFF.
Contrast this with what are typically termed "segmented" address spaces where an address is composed of a segment number or descriptor, and then a smaller number of bits as an offset into that segment/descriptor.
The memory management system performs the sleight of hand to translate a 32-bit address reference into a specific location within the actual 52-bit address space provided by the underlying architecture.