An apparatus and method provide simultaneous local and global addressing
capabilities in a computer system. A global address space is defined that
may be accessed by all processes. In addition, each process has a local
address space that is local (and therefore available) only to that
process. An address space processor is implemented in software to perform
system functions that distinguish between local addresses and global
addresses. In the preferred embodiments, the local address space has a
size that is a multiple of the size of a segment of global address space.
When the hardware indicates a page fault, the address space processor
determines whether the address being translated is a local address or a
global address. If the address is a local address, the address space
processor uses a local directory to process the page fault. If the address
is a global address, the address space processor uses a global directory
to process the page fault. When the hardware indicates an addressing error
because a computed address crosses a global segment boundary, the address
space processor determines whether the address is a local address or a
global address. If the address is a global address, the address space
processor indicates an addressing error. If the address is a local
address, the address space processor determines whether the address is
within the process' local address space, and indicates an addressing error
if the address is outside the process' local address space. Instructions
are allowed to operate on both local and global addresses because the
address space processor handles either type of address whenever software
assistance is required, such as for servicing a page fault or checking a
segment boundary crossing. In addition, the address space processor
dynamically checks the addressing compatibility of called code before
passing control to the called code.
Een apparaat en een methode verstrekken gelijktijdige lokale en globale het richten mogelijkheden in een computersysteem. Een globale adresruimte wordt bepaald die door alle processen kan worden betreden. Bovendien heeft elk proces een lokale adresruimte die (en daarom beschikbaar) slechts aan dat proces lokaal is. Een bewerker van de adresruimte wordt uitgevoerd in software om systeemfuncties uit te oefenen die tussen lokale adressen en globale adressen onderscheid maken. In de aangewezen belichamingen, heeft de lokale adresruimte een grootte die een veelvoud van de grootte van een segment van globale adresruimte is. Wanneer de hardware op een paginafout wijst, bepaalt de bewerker van de adresruimte of het adres dat een lokaal adres of een globaal adres is wordt vertaald. Als het adres een lokaal adres is, gebruikt de bewerker van de adresruimte een lokale folder om de paginafout te verwerken. Als het adres een globaal adres is, gebruikt de bewerker van de adresruimte een globale folder om de paginafout te verwerken. Wanneer de hardware op een het richten fout wijst omdat een gegevens verwerkt adres een globale segmentgrens kruist, bepaalt de bewerker van de adresruimte of het adres een lokaal adres of een globaal adres is. Als het adres een globaal adres is, wijst de bewerker van de adresruimte op een het richten fout. Als het adres een lokaal adres is, bepaalt de bewerker van de adresruimte of het adres binnen de lokale het adresruimte van de processen is, en wijst op een het richten fout als het adres buiten de lokale het adresruimte van de processen is. De instructies worden toegestaan om op zowel lokale als globale adressen te werken omdat de bewerker van de adresruimte of type van adres wanneer softwarehulp wordt vereist, zoals voor het onderhouden van een paginafout of het controleren van een segmentgrens kruising behandelt. Bovendien de bewerker van de adresruimte dynamisch de het richten verenigbaarheid van geroepen code alvorens controle tot de geroepen code controleert over te gaan.