Architectures with multiple paged address spaces.
Posted: Sun Nov 27, 2011 4:35 am
The addressing scheme of the 32/64-bit x86 architecture defines segmentation on top of paging: There exist different segments for code and data, but they all share one paged mapping of linear to physical addresses (defined by CR3), with each segment being defined by an offset and a limit within the linear address space.
How many architectures exist, however, that define segmentation in terms of paging? In other words:
1) The architecture is physically a von-Neumann architecture. Code or data can reside in any portion of physical memory. Processors with separate physical address spaces don't count.
2) The architecture is virtually a Harvard architecture like the x86, with separate segments for code and data, or has some other way in which the interpretation of addresses is context dependent (such as separate segments for user and kernel modes).
3) *Unlike* the x86, each segment is defined in terms of its own paged address space (rather than being mapped into a global paged address space, roughly equivalent to if the x86 had a copy of CR3 for each of CS, DS, ES, etc.).
I'm aware of basically only two architectures that are like this: The PDP-11 variants that had memory management (Which started out with separate page mappings for user and kernel address spaces, and in later models ended up with separate instruction and data spaces as well), and the Magic architecture (a homebrew TTL architecture with separate code and data page mappings).
Is anybody aware of any other such architectures?
How many architectures exist, however, that define segmentation in terms of paging? In other words:
1) The architecture is physically a von-Neumann architecture. Code or data can reside in any portion of physical memory. Processors with separate physical address spaces don't count.
2) The architecture is virtually a Harvard architecture like the x86, with separate segments for code and data, or has some other way in which the interpretation of addresses is context dependent (such as separate segments for user and kernel modes).
3) *Unlike* the x86, each segment is defined in terms of its own paged address space (rather than being mapped into a global paged address space, roughly equivalent to if the x86 had a copy of CR3 for each of CS, DS, ES, etc.).
I'm aware of basically only two architectures that are like this: The PDP-11 variants that had memory management (Which started out with separate page mappings for user and kernel address spaces, and in later models ended up with separate instruction and data spaces as well), and the Magic architecture (a homebrew TTL architecture with separate code and data page mappings).
Is anybody aware of any other such architectures?