NonStop S-Series Server Description Manual (G06.24+)

Memory Addressing and Access
HP NonStop S-Series Server Description Manual520331-003
4-48
Defining Unallocated Space
Defining Unallocated Space
Whereas translation misses in the translation lookaside buffer (TLB) are quite
common, invalid addresses (those that point to nonexistent memory) are rare. It is
reasonable therefore to eliminate explicit validity checking of addresses, such as
checking against a limit, and instead handle invalid addresses as exceptional cases.
Thus the TLB-miss millicode can be very fast, whereas address errors can be allowed
to suffer the consequences of special handling.
In the NonStop S-series processor, the method for handling invalid addresses is to
have all table entries for invalid addresses point to a table entry that permanently
specifies that the page is not valid (absent). The page fault invokes a trap handler
because no memory exists. Figure 4-23 shows how this scheme is implemented for
addresses in the nonprivileged space or in the Kseg2 space.
Each processor contains two null page tables (PTs), one for nonglobal addressing and
one for global addressing. These tables are allocated during system initialization in
physical memory. These PTs have the Valid (V) bit permanently set to 0 in all 8 entries.
Thus any reference to a page in these PTs results in a page fault trap.
When Vseg tables (in the case of either nonprivileged space or Kseg2) are allocated,
all unassigned unitary segment entries are made to point to one of these two null PTs.
That action ensures that references to unassigned relative or absolute segments will
trap.
In many cases, an entire region is unassigned. To avoid the necessity of many entire
Vseg tables pointing to the null PT, pointers in the process data space table (PDST)
point to one of two null Vseg tables (one for nonglobal, one for global), which in turn
have all their 256 entries point to the corresponding null PT.