Abstract:
The page table walker is moved from its conventional location in the memory management unit associated with the data processor to a location in main memory i.e. the main memory controller. As a result, an implementation is provided wherein the processing of requests for data could selectively avoid or bypass cumbersome caches associated with the data processor.

Description:
TECHNICAL FIELD 
       [0001]    The present invention relates to computer memory management, particular to page tables in such memories and more particularly to page table walkers. 
       BACKGROUND OF RELATED ART 
       [0002]    Memory addressing in the computer&#39;s main memory, i.e. the fast semiconductor storage (RAM) directly connected to the computer processor, conventionally uses paging to implement virtual memory. During such paging, the virtual address space is divided into fixed size units or blocks called pages. Each page can be mapped to any physical address corresponding to a hardware location available in the system. Conventionally, a memory management unit (MMU) operates a selected paging algorithm to determine and maintain the current mappings from the virtual to physical addresses using one or more page tables. When an address is received from an execution unit in the processor, the MMU will translate virtual to physical address using the page tables. The page tables are conventionally stored in the main memory, and page table walker is invoked to access the page tables, and provide appropriate translation. The computer memory management art is always seeking implementations for improving speed and efficiency of page table walkers. The present invention provides an implementation for improving the speed and effectiveness of page table walkers. 
         [0003]    In order to better understand the prior art status of page table walkers, reference is made to  FIG. 1  which is a generalized representation of a conventional computer memory system using page tables  101  and a page table walker  102 . The memory includes several levels of cache  103 - 104 , a memory management unit  105  for address translation, system bus  106 , memory controller  107 , and main memory (DRAM)  108 . 
         [0004]    When the processor  110  executes memory access instructions (e.g. load, store), it presents an “Effective Address” to the data cache L1  103 . The Memory Management Unit (MMU)  105  converts the “Effective Address” into a “Physical Address” required for accessing the data (including in some systems, an intermediate “Virtual Address”). Within the MMU  105 , the SLB (Segment Look-aside Buffer)  111  supports translation from Effective to Virtual Addresses, and the TLB (Translation Look-aside Buffer)  112  supports translation from Virtual to Real Addresses. In some systems, ERATs (Effective-to-Real Translation) caches  113  and  114  cache a limited number of previous Effective-to-Real translations in anticipation of their reuse. If the required translation is found in an ERAT  113 - 114 , the process within the MMU  105  can be bypassed. A similar process occurs when the processor fetches new instructions for execution. Once the physical address is determined, it may be used to validate an entry found in the L1 instruction cache  115  or if no match is found in the L1 cache  115 , the physical address is presented to the L2 cache  104 . In cases where there is also no match found in the L2  104  cache, the physical address is propagated to the memory subsystem to access the required data. 
         [0005]    A unique address translation is required for each memory page; a page may contain 4 KBytes, 64 KBytes, or other larger amounts of DRAM  108  storage. The TLB  112  contains an entry for each of the most recently required translations, but occasionally an address will be presented to the MMU  105  that doesn&#39;t have a matching translation in the TLB  112 . When this happens, a TLB miss is declared, and the Page Table Walker  101  is activated to search the complete Page Table stored in DRAM  108 . The page table walker  101  typically includes a hash function, followed by one or more memory accesses, and the processing individual PTEs (page table entries) in the resulting data to locate the required PTE. Once the Page Table Walker  108  has retrieved the required Page Table Entry (PTE), this new PTE is used to complete the required address translation, and the pending memory access process continues as with normal accesses. The new PTE displaces another PTE within the TLB  112 , based on time since last use. An LRU (last recently used) mechanism similar to that used in caches determines which previous TLB  112  entry to displace. 
         [0006]    A limitation in many existing implementation of page table walkers  102  is that the page table walker typically retrieves a full cache line of data from the page table  101  in DRAM, even though the required PTE is a fraction of that size. For example in the Power PC™ architecture, as many as eight PTE&#39;s fit within a 128 byte cache line. Moving eight times the required data across system buses from memory  108  to the MMU  105  results in unproductive power dissipation. If the desired entry is not found in the first memory access, a second access may be required, adding additional delay and power dissipation Compounding this problem, each cache line fetched by the page table walker displaces some other cache line in the L2 cache  104 , even though it is highly unlikely that the page table data will be used again while it is still in the cache. 
         [0007]    It has been observed that page table data within the L2 cache  104  can adversely impact the L2 cache hit rate for normal user data. Therefore, it would be desirable to develop a way of updating the TLB  112  while avoiding the excess power dissipation as well as interference with user data in the L2 cache  104 , as described hereinabove. 
       SUMMARY OF THE INVENTION 
       [0008]    The present invention provides a solution which reduces the undesirable effects described above. In its broadest aspects, this invention involves the recognition that moving the page table walker from its conventional location in the memory management unit to a location in main memory i.e. the main memory controller, many of the above described effects could be minimized. As a result, an implementation is provided wherein the processing of requests for data could selectively avoid or bypass cumbersome caches associated with the data processor. 
         [0009]    The present invention provides a computer system comprising a data processor unit connected to a main memory in which the data processor unit includes a memory management unit for controlling the conversion of an address of requested data received from a processor into a physical address of said requested data; and in which, the main memory includes apparatus for storing the data being accessed in pages at the physical addresses, a page table accessed by the memory management unit for converting to said page addresses, and the page table walker for proceeding through the entries in said page table. 
         [0010]    The main memory includes a random access memory (RAM), preferably DRAM and a memory controller for controlling said random access memory; and the memory controller contains the page table walker. 
         [0011]    The data processor further includes at least one data cache for storing recently requested data, and apparatus in its associated memory management unit for checking received data requests against data stored in said cache. The present invention provides apparatus, the memory management unit for selectively bypassing the cache so that a data request is connected directly to said page table walker in the memory controller for address conversion. This selective bypassing involves deciding whether a data request checks for the requested data in the cache or if a data request bypasses said cache and is connected directly to page table walker for conversion. This decision may be based upon whether there is a flag in the address of the requested data. 
         [0012]    The present invention enables a plurality of said processor connected to one main memory, and use the same page table walker in the main memory. 
     
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
         [0013]    The present invention will be better understood and its numerous objects and advantages will become more apparent to those skilled in the art by reference to the following drawings, in conjunction with the accompanying specification, in which: 
           [0014]      FIG. 1  shows a generalized view of a conventional main memory and an associated processor unit in the prior art. 
           [0015]      FIG. 2  shows a generalized embodiment of the main memory and an associated processor unit in the present invention. 
       
    
    
     DETAILED DESCRIPTION OF PREFERRED EMBODIMENTS 
       [0016]      FIG. 1  showing the prior art has been described hereinabove in the background of the invention. 
         [0017]      FIG. 2  shows a generalized embodiment of the present invention. In general, the following elements perform the same functions in the embodiment of  FIG. 2  that their corresponding items marked Inn etc. perform in the prior art embodiment described hereinabove with respect to  FIG. 1 : Processor Core  210 , Data ERAT  213 , Instr ERAT  214 , L1 Data Cache  203 , L1 Instruction  215 , L2 Cache  204 , System Bus  206 , Memory Cntrlr  207 , DRAM  208 , and Page Table  201 . Comparing  FIG. 2  with  FIG. 1 , it can be seen that the Page Table Walker  202  has been removed from the MMU  205 , and placed within the Memory Controller  207 . A path has also been added from the MMU  205  through the NCU (Non Cache Unit) which is a cache bypass via request lines  220  and  223 , then via System Bus  206  and request line  224  to the Page Table Walker  202  now within the Memory Controller  207 . When a TLB (translation look aside buffer)  212  “miss” is detected, the MMU (memory management unit)  205  generates a non-cacheable read using the Virtual Address (or Effective Address if there is no SLB (segment look aside buffer)  211  of the pending memory access as the address of the non-cacheable read. This request may be flagged via a special command code, inserted into the data request, as a Page Table only search. This will result in the routing to the cache bypass via the NCU  217  and System Bus  206  to the Page Table Walker  202  within the Memory controller  207  subsystem. 
         [0018]    Once the request reaches the Page Table Walker  202 , any virtual address is hashed, a block of memory is accessed, and that data is scanned for a PTE (page table entry) that matches the virtual Address. Upon identification of the desired PTE, the entry is returned as the response to the request via data line  225 , bus  206 , data line  222 , NCU  217 , and data line  221 . 
         [0019]    The page table walker embodiment shown in  FIG. 2  may be adapted to a multi-processor system, wherein a single page table is shared among all processors in order to avoid conflicting uses of memory segments. Such an arrangement would enable multiple processors to share a single page table walker. Even in large systems with multiple memory controllers, a page table can be fit within a single DRAM, and thus the page table walker need only to be included within the one memory controller for the DRAM containing the Page Table. 
         [0020]    For circuit development purposes, the processor  210 , MMU  205 , NCU  217  and all of the caches may be integrated into a semiconductor chip separate from the semiconductor chip incorporating memory controller  207  and DRAM  208 . 
         [0021]    In some existing non-homogeneous systems, a full-function processor may control multiple special purpose processors. In some cases, the complexity of a full MMU (memory management unit) is removed from the special purpose processors, and the full-function processor takes on the responsibility of handling TLB updates on the special purpose devices via appropriate software. This adds significant latency and overhead. The present invention may enable these special purpose processors to update their TLBs by using the main processor&#39;s memory table walker. This enables the special purpose processors to remain simple, but at the same time avoids the latency of a software update. 
         [0022]    The page table walker may include an enhanced function to anticipate the need of the next sequential page, and complete the page table walk to access the corresponding PTE (page table entry). Such an anticipated PTE could be cached in a single entry cache within the page table walker. In the case of a page table walker supporting multiple processors, this PTE cache could include one entry for each processor. This pre-fetch action could be configured to always acquire the next sequential PTE (i.e. via setting a configuration bit), or it could be triggered by detecting two consecutive page table walks from the same core that has accessed PTE&#39;s for sequential pages. It should be noted that fast access should be possible most of the time to the PTEG (page table entry group) containing the PTE for the next sequential page since the hash used for the page table should place PTE&#39;s for sequential pages in sequential PTEG positions. 
         [0023]    Although certain preferred embodiments have been shown and described, it will be understood that many changes and modifications may be made therein without departing from the scope and intent of the appended claims.