| OCR Text |
Show 84 mented and the SAR value stored in each table at the same location. so that the SAR value located at a particular table location accesses the same object for each process. The SAR value loaded into a SAR by Map _Obj has a subspace number of two if the object is local to the node which maps it, and a value of three otherwise. For a SAR value in a Boplog SAR to be used correctly by processes running on any processor node, its subspace number must likewise be set appropriately for the receiving process. Using this method, all physical memory on a Butterfly can be used. It can be integrated easily with the standard Butterfly memory management system, so that access to often-used memory is as fast as the Butterfly will allow, while access to less-used memory encounters the SAR-smashing overhead. Virtual addresses do not necessarily need to be calculated each time they are used; they can be maintained normally using address arithmetic. Note that the creation of virtual addresses does not involve an access to the indicated memory; it is calculated from the smash SAR number and the object offset only. Virtual addresses of objects which participate in SAR-smashing are valid across memory map changes. The memory map must, however, be correct when the virtual address is used. Using dynamic memory mapping, virtual addresses no longer have a one-toone correspondence with physical memory. Since virtual addresses cannot be used to refer to unique memory locations, Boplog uses references which are independent of both process and processor node. These 32-bit references are capable of locating any 32-bit item in a !-gigabyte physical memory. References can be used by any process on any node without change, and are used by extracting certain fields of the reference, using SAR-smashing to modify the memory map, and creating a virtual address to the indicated memory location. Figure 20 shows the format of a Boplog reference, and Table 2 summarizes some benchmark results of using these references. The first figure indicates the time taken to construct a virtual address from a given reference; the second figure gives the time taken to change the memory |