Would it be possible for PowerPC to evolve out of using
segmentation? For 32-bit PPC implementations, providing 16
segment registers allows for simple, fast translation of
effective addresses to virtual addresses; but for 64-bit
implementations segmentation forces the use of a segment cache
with a required tag check delaying access (assuming it is not
direct-mapped) to a TLB. The use of Effective-to-Real Address
Translation (ERAT) caches helps (especially with Process IDs in
the tags), but extending 64-bit effective addresses to 80-bit
virtual addresses does not seem worth an additional layer of
translation when accessing TLBs.
(Even for IPF, it is not clear to me that the region registers'
extension of the virtual address is particularly useful. For a
single-address-space OS, such does not provide convenient
portable pointers which are the main advantage of a SASOS. For a
conventional OS, region registers' VA extension might provide a
convenient means of allocating thread-local storage that is
protected from other threads [on a thread switch only the TLS
region register would be changed] and for providing a common OS
data region [i.e., one region register would be shared by all
contexts]. Can someone cure my ignorance by explaining the
reasons behind providing eight region registers? I suppose such
might also be used to provide regions with different default page
sizes, which is the only way that linear page tables can be used
with multiple page sizes.)
Paul A. Clayton
just a technophile
