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

Memory Addressing and Access
HP NonStop S-Series Server Description Manual520331-003
4-38
The TLBPID Process Identifier
The TLBPID Process Identifier
One of the fields in a TLB entry is an 8-bit process identifier. This field makes it
possible to distinguish translations that belong to one process from those that belong
to another process. (Remember from the very first topic in this section that all
processes use the same numerical range of virtual addresses.)
This field is designated as the TLBPID (translation lookaside buffer’s process
identifier), or ASID in RISC terminology (address space identifier). This can be
considered a prefix to the address, as shown in Figure 4-18. (A nonprivileged address
is shown as an example format.) The instruction processor automatically supplies the
current process’s TLBPID on every memory reference.
However, because the operating system permits more than 256 processes, the 8-bit
field is insufficient for unique identification. Therefore, the processor uses the scheme
shown in Figure 4-18 to permit sharing of the 256 TLBPIDs among many processes.
The scheme used for the sharing of TLBPIDs is based on a data structure in physical
memory called the TLBPID owner array. The array consists of 256 slots
corresponding to the 256 possible TLBPIDs.
If a process does not currently have a valid TLBPID, the millicode assigns one from the
TLBPID owner array. Each entry is a pointer to a location in a table (the process data
space table, or PDST, described later) where the corresponding TLBPID number is
stored.
The figure shows a simplified example of this assignment method. In this example,
TLBPID number 251 is assigned to a process identified here as process number 180.
A pointer (represented here by the number 180) to the process data space table
(PDST) for that process is entered in the TLBPID owner array, and the number 251 is
stored in the process’s PDST. The process can then use the TLBPID number 251 in
its nonprivileged space references.
A process can have only one TLBPID at a time.
TLBPIDs are assigned on request from processes in descending sequential order, as
indicated by a TLBPID pointer. After the last TLBPID is used (0), the entire array is
cleared, the random entries of the TLB itself are flushed (marked invalid), and
assignments start all over at number 255.
A process keeps its most recent TLBPID assignment until the owner array is cleared
and TLB invalidated. The process is then reassigned a new (probably different)
TLBPID when it next resumes execution.