This Application is related to U.S. patent application Ser. No. 11/102,289 by G. Rozas, filed on Apr. 7, 2005, entitled “Coherence Memory,” assigned to the assignee of the present invention, and hereby incorporated by reference in its entirety.
1. Field of the Invention
Embodiments of the present invention relate to computer system memory, in particular the management of memory.
2. Related Art
In a translation-based computer system architecture, instructions can be translated from their original form into a translated form. The translation may occur in either hardware or software.
Computer systems that utilize instruction translations need to maintain instruction coherence. That is, if an instruction is translated, and then the original instruction is later modified, then it is necessary to invalidate the translated instruction as it may no longer correspond to the modified instruction. However, there may not be any correlation between the address where the translated instruction resides and the address where the original instruction resides, and so an address-based scheme is not sufficient for reliably resolving this issue.
In one prior art solution, the instruction translator maintains a set of bits referred to as translation bits, or T-bits, that correspond to physical addresses. According to this solution, a translation lookaside buffer (TLB) is modified to accommodate the T-bits, and the TLB entry insertion process is modified to add the physical address-based T-bits to the linear address-based TLB.
A method or system that can maintain instruction coherence when instructions are translated, without modifications to the TLB and without modifications to the TLB entry insertion process, would be advantageous. Embodiments in accordance with the present invention provide this and other advantages.
According to one embodiment of the present invention, a translation coherence cache memory (or translation coherence memory) can be used to store a memory page reference that identifies a memory page. The cache memory also stores a permission bit corresponding to the memory page reference. The permission bit indicates whether the memory page comprises code that has been translated into another form.
The accompanying drawings, which are incorporated in and form a part of this specification, illustrate embodiments of the present invention and, together with the description, serve to explain the principles of the invention. The drawings referred to in this description should not be understood as being drawn to scale except if specifically noted.
Reference will now be made in detail to the various embodiments of the invention, examples of which are illustrated in the accompanying drawings. While the invention will be described in conjunction with these embodiments, it will be understood that they are not intended to limit the invention to these embodiments. On the contrary, the invention is intended to cover alternatives, modifications and equivalents, which may be included within the spirit and scope of the invention as defined by the appended claims. Furthermore, in the following detailed description of the present invention, numerous specific details are set forth in order to provide a thorough understanding of the present invention. However, it will be recognized by one of ordinary skill in the art that the present invention may be practiced without these specific details. In other instances, well-known methods, procedures, components, and circuits have not been described in detail as not to unnecessarily obscure aspects of the present invention.
Some portions of the detailed descriptions that follow are presented in terms of procedures, logic blocks, processing, and other symbolic representations of operations on data bits within a computer memory. These descriptions and representations are the means used by those skilled in the data processing arts to most effectively convey the substance of their work to others skilled in the art. A procedure, logic block, process, etc., is here, and generally, conceived to be a self-consistent sequence of steps or instructions leading to a desired result. The steps are those requiring physical manipulations of physical quantities. Usually, though not necessarily, these quantities take the form of electrical or magnetic signals capable of being stored, transferred, combined, compared, and otherwise manipulated in a computer system. It has proven convenient at times, principally for reasons of common usage, to refer to these signals as bits, bytes, values, elements, symbols, characters, terms, numbers, or the like.
It should be borne in mind, however, that all of these and similar terms are to be associated with the appropriate physical quantities and are merely convenient labels applied to these quantities. Unless specifically stated otherwise as apparent from the following discussions, it is appreciated that throughout the present invention, discussions utilizing terms such as “executing,” “accessing,” “locating,” “using,” “updating,” “identifying,” “querying,” “updating,” “determining” or the like, refer to the action and processes (e.g., flowcharts 70 and 80 of
In one embodiment, peripheral device 13 is capable of direct memory access (DMA). In general, DMA refers to a hardware circuit or software agent that can transfer data directly to or from main memory 18.
Associated with the processor 11 and optional processor 12 are first cache 15 and optional second cache 16, respectively. In one embodiment, each of the processors 11-12 has their own cache. The caches may be physically incorporated into the processors 11-12, or they may be physically external to the processors 11-12. In the present embodiment, each of the processors 11-12 can access each of the caches 15-16 via bus 19.
In the embodiment of
Cache 15 also includes status bits 22; one or more status bits are associated with each cache line in cache 15. In one embodiment, computer system 10 implements a cache coherency protocol such as, but not limited to, MESI (Modified, Exclusive, Shared, Invalid). According to the MESI protocol, a cache line is identified as being in one of the modified, exclusive, shared or invalid states. In the modified state, the cache line includes more recent information than main memory 18 (only the information in the cache line is valid because main memory 18 is not up-to-date), and no other cache holds the information in the cache line. In the exclusive state, the information in the cache line is not in any other cache and the information in the cache line is unmodified, and accordingly main memory 18 is up-to-date. In the shared state, the information in the cache line may be in one or more other caches, and main memory 18 is up-to-date. In the invalid state, the cache line does not contain valid information. In one embodiment, the status bits 22 are used to indicate the state of a respective cache line according to a cache coherency protocol such as MESI.
Page reference 32 is a reference (e.g., an address) for a memory page in main memory 18 (
The code on the memory page identified by page reference 32 of
The permission bit 33 of
Translation coherence cache 51 identifies cache lines that may be cached within other caches 15-16 of computer system 50. Consequently, if a cache line is not in translation coherence cache 51, then that cache line is not in another cache 15-16. Translation coherence cache 51 may contain information for cache lines that are no longer within another cache 15-16. For example, a cache line within another cache 15-16 may have been replaced, but the cache line's tags are still present in translation coherence cache 51.
Translation coherence cache 51 functions to reduce cache handling operations. If translation coherence cache 51 is examined and a cache line is found not to be present, it is then known that the cache line is not present in any cache within computer system 50. Conversely, if the cache line is found within translation coherence cache 51 and the cache line is in the shared state, it is then known that the cache line is not in an exclusive or modified condition in any cache within computer system 50.
In general, instruction coherency is maintained as follows. When a cache line (e.g., cache line 21 of
With reference to
In step 72, a cache (e.g., translation coherence cache 14 or 51 of
In step 73 of
In step 74, the permission bit corresponding to the memory page reference in the translation coherence cache is queried.
In step 75, if the permission bit is set, then the memory page to be modified includes code that has been translated. Accordingly, the translated code is invalidated. For example, the translated code can be marked as no longer being valid.
In one embodiment, the entirety of the memory page containing the translated code is invalidated. In another embodiment, only a portion of the memory page containing the translated code is invalidated. Specifically, in the latter situation, only the part of the memory page that contains the translated code that is no longer valid is invalidated. The former situation is sometimes referred to as coarse-grained translation protection, and the latter situation is sometimes referred to as fine-grained translation protection. Coarse-grained and fine-grained translation protection are known in the art (for example, see U.S. Pat. No. 6,363,336, assigned to the assignee of the present invention, and hereby incorporated by reference in its entirety).
In step 76, the write operation to the memory page is completed. The modified code in the memory page can then be retranslated.
In step 77, in case of a cache miss, the translation coherence cache is updated from main memory 18 (e.g.,
As mentioned in the discussion above, a query of the translation coherence cache (e.g., cache 14 or 51 of
A memory page that does not have a permission bit set in the cache is either not present in the TLBs or is not executable. In one embodiment, to prevent execution, a no-execution-allowed bit is set for the memory page. In response to a fault due to lack of execution rights, the code in the memory page is checked for integrity (to determine if it has been modified). For example, the code in the memory page can be checked against a copy of the original code to determine if it is the same (if it is the same, then the code in the memory page is valid). The memory page can then be added to the cache, and its no-execution-allowed bit can be cleared.
In the process of adding a new memory page to the cache, another memory page may need to be evicted. If so, the no-execution-allowed bit is set for any virtual-to-physical mapping of the evicted page that may be present in the TLB(s).
With reference now to
In step 82, a cache is queried in order to determine whether code in the memory page has been translated.
In step 83, if the cache includes a permission bit for the memory page that is set, then the translated code is invalidated. Otherwise, in step 84, execution of the translated code is prevented until the validity of the translated code is determined.
In summary, rather than modifying a TLB to add permission bits that identify whether or not a memory page includes code that has been translated, and instead of modifying the TLB entry insertion process to add physical address-based permission bits to the TLB, according to embodiments of the present invention the TLB is unmodified. According to embodiments of the present invention, a translation coherence cache is queried as part of a cache coherency protocol. That is, in response to a change in state of a cache line according to the cache coherency protocol, the translation coherence cache is queried. If a permission bit in the translation coherence cache is set for the memory page referenced in the cache line, then the memory page contains code that has been translated, and the translated version of the code is invalidated.
Embodiments in accordance with the present invention are thus described. While the present invention has been described in particular embodiments, it should be appreciated that the present invention should not be construed as limited by such embodiments, but rather construed according to the below claims.
Number | Name | Date | Kind |
---|---|---|---|
5345576 | Lee et al. | Sep 1994 | A |
5412787 | Forsyth et al. | May 1995 | A |
5623633 | Zeller et al. | Apr 1997 | A |
5644753 | Ebrahim et al. | Jul 1997 | A |
5704058 | Derrick et al. | Dec 1997 | A |
5761468 | Emberson | Jun 1998 | A |
5860111 | Martinez et al. | Jan 1999 | A |
5897656 | Vogt et al. | Apr 1999 | A |
5953538 | Duncan et al. | Sep 1999 | A |
5987571 | Shibata et al. | Nov 1999 | A |
6088769 | Luick et al. | Jul 2000 | A |
6122714 | VanDoren et al. | Sep 2000 | A |
6128701 | Malcolm et al. | Oct 2000 | A |
6128702 | Saulsbury et al. | Oct 2000 | A |
6164841 | Mattson et al. | Dec 2000 | A |
6199152 | Kelly et al. | Mar 2001 | B1 |
6205517 | Sugaya | Mar 2001 | B1 |
6219745 | Strongin et al. | Apr 2001 | B1 |
6345320 | Kawamata et al. | Feb 2002 | B1 |
6430657 | Mittal et al. | Aug 2002 | B1 |
6438653 | Akashi et al. | Aug 2002 | B1 |
6446187 | Riedlinger et al. | Sep 2002 | B1 |
6535960 | Nishida et al. | Mar 2003 | B1 |
6546464 | Fortuna et al. | Apr 2003 | B2 |
6594821 | Banning et al. | Jul 2003 | B1 |
6633958 | Passint et al. | Oct 2003 | B1 |
6638653 | Andou et al. | Oct 2003 | B2 |
6662277 | Gaither | Dec 2003 | B2 |
6668287 | Boyle et al. | Dec 2003 | B1 |
6691306 | Cohen et al. | Feb 2004 | B1 |
6751706 | Chauvel et al. | Jun 2004 | B2 |
6785780 | Klein et al. | Aug 2004 | B1 |
6868481 | Gaither et al. | Mar 2005 | B1 |
6925536 | Glasco et al. | Aug 2005 | B2 |
20030005234 | Sperber et al. | Jan 2003 | A1 |
20030005237 | Dhong et al. | Jan 2003 | A1 |
20030131202 | Khare et al. | Jul 2003 | A1 |
20030163745 | Kardach | Aug 2003 | A1 |
20060123172 | Herrell et al. | Jun 2006 | A1 |