US 9,811,472 B2
Radix table translation of memory
Anthony J. Bybell, Chapel Hill, NC (US); and Michael K. Gschwind, Chappaqua, NY (US)
Assigned to INTERNATIONAL BUSINESS MACHINES CORPORATION, Armonk, NY (US)
Filed by Anthony J. Bybell, Chapel Hill, NC (US); and Michael K. Gschwind, Chappaqua, NY (US)
Filed on Jun. 14, 2012, as Appl. No. 13/517,758.
Prior Publication US 2013/0339652 A1, Dec. 19, 2013
This patent is subject to a terminal disclaimer.
Int. Cl. G06F 12/00 (2006.01); G06F 12/1009 (2016.01); G06F 12/1036 (2016.01); G06F 12/1027 (2016.01); G06F 12/1018 (2016.01)
CPC G06F 12/1009 (2013.01) [G06F 12/1018 (2013.01); G06F 12/1027 (2013.01); G06F 12/1036 (2013.01)] 15 Claims
OG exemplary drawing
 
1. A computer program product for accessing a memory location in a processing system, the computer program product comprising:
a non-transitory computer readable storage medium readable by a processing circuit and storing instructions for execution by the processing circuit for performing a method comprising:
receiving a request to access a desired block of memory located in one of a plurality of non-contiguous virtual memory regions, the request comprising an effective address consisting of an effective segment identifier (ESID) and a linear address, the linear address consisting of a most significant portion and a byte index;
locating, by a processor, an entry corresponding to the effective address in a segment lookaside buffer (SLB) that includes multiple entries that include radix page table pointers (RPTPs) corresponding to the plurality of non-contiguous virtual memory regions; and
based on the located entry corresponding to the effective address in the SLB including an RPTP corresponding to the one of the plurality of non-contiguous virtual memory regions, performing:
using the RPTP from the located entry to locate a translation table of a hierarchy of translation tables;
using the located translation table to translate the entirety of the most significant portion of the linear address to obtain an address of a block of memory; and
based on the obtained address, performing the requested access to the desired block of memory.