US20120254584A1 - System and method for identifying tlb entries associated with a physical address of a specified range - Google Patents

System and method for identifying tlb entries associated with a physical address of a specified range Download PDF

Info

Publication number
US20120254584A1
US20120254584A1 US13/493,810 US201213493810A US2012254584A1 US 20120254584 A1 US20120254584 A1 US 20120254584A1 US 201213493810 A US201213493810 A US 201213493810A US 2012254584 A1 US2012254584 A1 US 2012254584A1
Authority
US
United States
Prior art keywords
tentative
physical address
address
entry
tlb
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Abandoned
Application number
US13/493,810
Inventor
Guillermo Rozas
Alexander Klaiber
H. Peter Anvin
David Dunn
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Individual
Original Assignee
Individual
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Individual filed Critical Individual
Priority to US13/493,810 priority Critical patent/US20120254584A1/en
Publication of US20120254584A1 publication Critical patent/US20120254584A1/en
Abandoned legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • G06F12/1045Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache
    • G06F12/1054Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache the data cache being concurrently physically addressed

Definitions

  • Embodiments relate to the field of memory management. Specifically, embodiments relate to a system and method for creating TLB entries.
  • Embodiments relate to the field of memory management. Specifically, embodiments relate to a system and method for creating TLB entries.
  • Embodiments may be used within circuitry that is responsible for TLB entry generation and storage. Specifically, there are a number of cases, wherein it is desirable to identify tentative TLB entries that have a physical address falling within a predetermined memory range and take some action in response thereto.
  • a system and method for identifying a TLB entry having a physical address that is within a specified range are disclosed.
  • the method includes obtaining a tentative TLB entry from a page table entry and accessing a physical address associated with the tentative TLB entry.
  • the method further includes comparing the physical address of the tentative TLB entry with a predetermined range of addresses. If the physical address is within the finite range of addresses, an exception is invoked. In response to the exception, the physical address and/or an attribute of the tentative TLB entry can be modified.
  • the tentative TLB entry can then be stored in a TLB.
  • FIG. 1 is a logical block diagram of an exemplary embedded computer system in accordance with embodiments.
  • FIG. 2 is a block diagram of an exemplary tentative TLB entry, a TLB and a plurality of range registers in accordance with an embodiment.
  • FIG. 3 is a block diagram of an exemplary circuit for creating a TLB entry in a TLB in accordance with an embodiment.
  • FIG. 4 is a block diagram of an exemplary tentative TLB entry and a modified TLB entry in accordance with an embodiment.
  • FIG. 5 is a flow diagram of an exemplary process for determining if a tentative TLB has a physical address that falls within an address range specified by a finite number of range registers in accordance with an embodiment.
  • such processes are carried out by processors and electrical/electronic components under the control of computer readable and computer executable instructions comprising code contained in a computer usable medium.
  • the computer readable and computer executable instructions reside, for example, in code within a computer usable medium and used in the processor, data storage features, memory, registers and other components of a computer system performing the method for maintaining sufficient bandwidth on a network link during failures.
  • the computer readable and computer executable instructions may reside in any type of computer readable medium.
  • a typical multiple storage level memory design is characterized by a hierarchy of three levels, including a cache level, a main memory, and a backing storage, such as a disc, flash drive, or other storage medium.
  • a table corresponds to the cache and is managed transparently by hardware for the operating system (OS).
  • the table contains a working set of recently program-referenced localities (e.g., lines) of the main memory.
  • Caching and paging mechanisms support efficient memory management.
  • the OS fetches fixed size (e.g., 4,096 bytes) blocks called pages from the backing storage into the main memory as required by the processor (e.g., on demand).
  • Physical memory is divided into page frames of a fixed size.
  • the real (e.g., physical) address is used to access cache and main memory. The least significant 12 bits of the real address apply to a particular location in a page.
  • the upper bits of a real address apply to the page table, which determines if the corresponding partial page resides within the memory and translates the upper bits if it is present.
  • the page table thus translates a page number into a frame number corresponding to the actual physical location of the associated information within the memory.
  • a page table entry associates a page number with a frame number.
  • the page table resides within the memory.
  • the memory system thus generates a virtual effective address for cached data, translates the virtual address into a “real” address corresponding to its physical address in the main memory, and uses the real address to access the memory system.
  • the page table which performs the virtual-to-real (and e.g., real-to-virtual) address translations typically reside in the memory, the time such translations require adds to memory latency.
  • a translation lookaside buffer can be used.
  • Typical TLBs comprise a register system with multiple entries (e.g., 64-256, etc.).
  • a TLB functions as a fast, small cache within the processor with pointers to memory pages.
  • Several bits comprising a virtual address become an address with the TLB.
  • An entry corresponding to this TLB address points to the memory location.
  • a TLB entry includes the real address, the real upper portion of the physical memory address, and residual bits of the virtual address that are mapped to the pointed-to memory location.
  • the residual bits are compared to the corresponding bits of the virtual reference so as to ensure selecting the correct entry.
  • the TLB provides real addresses used by the cache by translating virtual addresses provided by the processor into real addresses.
  • FIG. 1 a block diagram of exemplary computer system 12 is shown. It is appreciated that computer system 12 of FIG. 1 described herein illustrates an exemplary configuration of an operational platform upon which embodiments can be implemented. Nevertheless, other computer systems with differing configurations can also be used in place of computer system 12 within embodiments.
  • computer system 12 could be a server system, a personal computer or an embedded computer system.
  • Computer system 12 includes an address/data bus 10 for communicating information, a central processor 1 coupled with bus 10 for processing information and instructions, a cache 12 coupled to bus 10 for temporarily storing data, a volatile memory unit 2 (e.g., random access memory, static RAM, dynamic RAM, etc.) coupled with bus 10 for storing information and instructions for central processor 1 and a nonvolatile memory units (e.g., read only memory, programmable FROM, flash memory, EPROM, EEPROM, etc.) coupled with bus 10 for storing static information and instructions for processor 1 .
  • Computer system 12 may also contain an optional display device 5 coupled to bus 10 for displaying information to the computer user.
  • computer system 12 also includes a data storage device 4 (e.g., disk drive) for storing information and instructions.
  • a data storage device 4 e.g., disk drive
  • Computer system 12 of FIG. 1 Also included in computer system 12 of FIG. 1 is an optional alphanumeric input device 6 .
  • Device 6 can communicate information and command selections to central processor 1 .
  • Computer system 12 also includes an optional cursor control or directing device 7 coupled to bus 10 for communicating user input information and command selections to central processor 1 .
  • Computer system 12 also includes signal communication interface 8 , which is also coupled to bus 10 , and can be a serial port.
  • FIG. 2 is a block diagram 200 of an exemplary tentative TLB entry 201 , a TLB 206 and a plurality of range registers 210 , 211 , and 212 in accordance with embodiments.
  • the translation lookaside buffer (TLB) 206 comprises a plurality of TLB entries (e.g., TLB entry 220 ).
  • a “tentative” TLB entry is a TLB entry before it is entered into the TLB.
  • a tentative TLB entry can be created from contents of a page table entry (PTE) or can be supplied from other means. It is appreciated that a PTE can be accessed from many sources, one of which is a page table.
  • PTE page table entry
  • Embodiments provide a system and method for identifying tentative TLB entries that contain or have associated with them a physical page number (e.g., physical address) 202 that falls within in a range specified by range registers.
  • Each of the range registers specifies a unique range of memory addresses.
  • range register 210 specifies a range from x1 to y1. Identifying a tentative TLB entry and modifying the tentative TLB entry before it is entered into the translation lookaside buffer (TLB) can be used to handle special cases where conventional mechanisms for entering TLB entries do not work.
  • Embodiments comprise an architecture that includes a finite number of range registers (e.g., range registers 210 , 211 , and 212 ). The range registers specify the address ranges for which an exception can be invoked during the construction and insertion of a tentative TLB entry into a TLB.
  • the physical address of the tentative TLB entry is examined to see if it falls within the address range specified by range registers. If a tentative TLB entry has a physical page number (e.g., physical address) that falls within the ranges specified by the range registers, an exception is invoked and modification of the tentative TLB entry can be performed. If the physical address lies outside the predetermined ranges, then the tentative TLB entry can be stored into the TLB without modification.
  • a physical page number e.g., physical address
  • the physical page number 202 (e.g., physical address) associated with the tentative TLB entry 201 is compared to the address ranges specified by the range registers 210 , 211 , and 212 . If the physical address is within the address ranges specified by the range registers, an exception is invoked and the physical address and/or an attribute of the tentative TLB entry is modified. Once the tentative TLB entry is modified, the tentative TLB is entered into the translation lookaside buffer 206 . In one embodiment, the physical address of the tentative TLB entry is modified. In another embodiment, an attribute (e.g., cacheability) of the tentative TLB entry is modified. Out of range entries are stored in the TLB without modification.
  • FIG. 3 is a block diagram of an exemplary circuit 300 for creating and inserting a TLB entry in a translation lookaside buffer 350 .
  • System 300 includes a fill engine 320 for accessing a PTE 302 , constructing a tentative TLB entry 201 and invoking a comparison between the physical address of the tentative TLB entry and a predetermined range of physical memory addresses 335 .
  • System 300 also includes a comparator 333 coupled to the fill engine 320 for comparing the physical memory address of the tentative TLB entry 201 and range 335 .
  • comparator 333 may reside in fill engine 320 .
  • the comparator may reside in the range register 335 or may be coupled to fill engine 320 externally.
  • System 300 also includes a fix-up handler 340 coupled to the comparator 333 and to the fill engine 320 for handling an exception generated by the comparator 333 in response to the comparator 333 determining that the physical memory address associated with the tentative TLB entry 201 is within the predetermined range 335 .
  • the fix-up handler 340 modifies the physical address and/or an attribute of the tentative TLB entry 201 and creates a modified tentative TLB entry 310 .
  • the modified tentative TLB entry 310 is then inserted in the TLB 350 by the fill engine 320 .
  • Tentative TLB entries having a physical address outside the ranges are stored in the TLB by the fill engine 320 without modification. It is appreciated that the fix-up handler 340 can be implemented in hardware or software.
  • FIG. 4 is a block diagram of an exemplary tentative TLB entry and a new (e.g., modified) tentative TLB entry in accordance with embodiments.
  • Tentative TLB entry 201 comprises a physical address and attributes “A” 202 .
  • an exception is invoked by the comparator and the fix-up handler 340 of FIG. 3 modifies an attribute or physical address of the tentative TLB entry according to an implementation of the exception invoked.
  • the attribute modified by the fix-up handler can be a physical memory address or any other attribute associated with the TLB entry, such as cacheability permissions or read/write permissions.
  • a new page table entry 310 is created comprising modified physical address and attributes “B” 406 .
  • the modified TLB entry is then inserted in the TLB by the fill handler.
  • FIG. 5 is a flow diagram of an exemplary process 500 for determining if a tentative TLB entry has a physical address that falls within an address range specified by range registers in accordance with embodiments. It is appreciated that the steps performed in process 500 can be implemented in hardware or software.
  • Process 500 begins with step 502 , accessing a physical address associated with a tentative TLB entry.
  • the next step 504 is to invoke a comparison and compare the physical address retrieved in step 502 to a predetermined set of address ranges. A match is determined in step 506 .
  • the tentative TLB entry is entered into the TLB in step 510 . If the physical address is determined to be within the ranges of the range registers, in step 508 , the tentative TLB entry is modified in any way appropriate to that particular use of the range register. Any number of modifications can be performed in step 508 , depending on the convention of the range register. Any number of modifications can be performed in step 508 , depending on the specific needs of the embodiment.
  • Embodiments relate to the creation of a TLB entry. Specifically, there are a number of cases where it is desirable to identify and modify TLB entries that have a physical address that resides in a predetermined address range specified by a range register before the TLB entry is stored in the TLB.
  • An APIC Advanced Programmable Interrupt Controller
  • An APIC is a special-purpose integrated circuit that functions as an overall manager in an interrupt driven system. The circuit accepts requests from the peripheral equipment, determines which of the incoming requests is of the highest priority, ascertains whether the incoming request has a higher priority value than the level currently being serviced, and issues an interrupt to the CPU based on this determination.
  • the APIC is mapped in memory in a way that does not allow the use of conventional mechanisms for creating a TLB entry if that TLB entry has a physical page number within the range of the APIC.
  • a GART is a memory based table that specifies an address range in which physical addresses coming from the processor get remapped to a contiguous range of physical memory.
  • a GART is mapped in a way that does not allow the use of conventional mechanisms for creating a TLB entry if that TLB entry has a physical page number within the range of the GART.
  • identifying a TLB entry that resides in a finite memory range are specific to code morphing software (CMS).
  • code-morphing software is designed to translate x86 instructions into VLIW (very long instruction word) instructions for the underlying hardware engine.
  • VLIW very long instruction word
  • identifying tentative TLB entries comprising a physical memory address within a specified memory range improves performance of the code morphing software.

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

A system and method for identifying a TLB entry having a physical address that is within a specified range are disclosed. The method includes obtaining a tentative TLB entry from a page table entry and accessing a physical address associated with the tentative TLB entry. The method further includes comparing the physical address of the tentative TLB entry with a predetermined range of addresses. If the physical address is within the finite range of addresses, an exception is invoked. In response to the exception, the physical address and/or an attribute of the tentative TLB entry can be modified. The tentative TLB entry can then be stored in a TLB.

Description

    CROSS-REFERENCE TO RELATED APPLICATIONS
  • This application is a Continuation of and claims priority to U.S. patent application Ser. No. 13/053,955, filed on Mar. 22, 2011, which is a Continuation of and claims priority to U.S. patent application Ser. No. 12/127,768, filed on May 27, 2008 and now issued as U.S. Pat. 7,913,058, which is a Continuation of and claims priority to U.S. patent application Ser. No. 11/449,950, filed on Jun. 8, 2006 and now issued as U.S. Pat. No. 7,380,096, which is a Continuation of and claims priority to U.S. patent application Ser. No. 10/629,031, filed on Jul. 28, 2003 and now issued as U.S. Pat. No. 7,149,872, which claims the benefit of and priority to U.S. Provisional Application No. 60/486,629, filed on Jul. 10, 2003, which are hereby incorporated by reference in their entirety.
  • FIELD
  • Embodiments relate to the field of memory management. Specifically, embodiments relate to a system and method for creating TLB entries.
  • BACKGROUND
  • Embodiments relate to the field of memory management. Specifically, embodiments relate to a system and method for creating TLB entries.
  • SUMMARY
  • What is needed is a system and method for identifying translation lookaside buffer (TLB) entries that contain a physical address that resides within a predetermined address range. What is also needed is a system and method for allowing the modification of a tentative TLB entry such that the physical address and/or TLB entry attributes (e.g., cacheability) may be altered before the entry is stored in the TLB.
  • Embodiments may be used within circuitry that is responsible for TLB entry generation and storage. Specifically, there are a number of cases, wherein it is desirable to identify tentative TLB entries that have a physical address falling within a predetermined memory range and take some action in response thereto.
  • A system and method for identifying a TLB entry having a physical address that is within a specified range are disclosed. The method includes obtaining a tentative TLB entry from a page table entry and accessing a physical address associated with the tentative TLB entry. The method further includes comparing the physical address of the tentative TLB entry with a predetermined range of addresses. If the physical address is within the finite range of addresses, an exception is invoked. In response to the exception, the physical address and/or an attribute of the tentative TLB entry can be modified. The tentative TLB entry can then be stored in a TLB. A computer system is also described in accordance with the above described method embodiments.
  • BRIEF DESCRIPTION OF THE DRAWINGS
  • The accompanying drawings, which are incorporated in and form a part of this specification, illustrate embodiments, together with the description, serve to explain the principles of the disclosure.
  • FIG. 1 is a logical block diagram of an exemplary embedded computer system in accordance with embodiments.
  • FIG. 2 is a block diagram of an exemplary tentative TLB entry, a TLB and a plurality of range registers in accordance with an embodiment.
  • FIG. 3 is a block diagram of an exemplary circuit for creating a TLB entry in a TLB in accordance with an embodiment.
  • FIG. 4 is a block diagram of an exemplary tentative TLB entry and a modified TLB entry in accordance with an embodiment.
  • FIG. 5 is a flow diagram of an exemplary process for determining if a tentative TLB has a physical address that falls within an address range specified by a finite number of range registers in accordance with an embodiment.
  • DETAILED DESCRIPTION
  • Reference will now be made in detail to embodiments, examples of which are illustrated in the accompanying drawings. While the disclosure will be described in conjunction with these embodiments, it will be understood that they are not intended to limit the disclosure to these embodiments. On the contrary, the disclosure is intended to cover alternatives, modifications and equivalents, which may be included within the spirit and scope of the disclosure as defined by the appended claims. Furthermore, in the following detailed description, numerous specific details are set forth in order to provide a thorough understanding. However, it will be recognized by one of ordinary skill in the art that embodiments may be practiced without these specific details.
  • A system and method for identifying tentative TLB entries comprising a physical address within a specified range is disclosed. Reference will now be made in detail to embodiments, examples of which are illustrated in the accompanying drawings. While the disclosure will be described in conjunction with these embodiments, it will be understood that they are not intended to limit the disclosure to these embodiments. On the contrary, the disclosure is intended to cover alternatives, modifications, and equivalents, which may be included within the spirit and scope of the disclosure as defined by the appended claims.
  • Furthermore in the following detailed description, numerous specific details are set forth in order to provide a thorough understanding of the disclosure. In other instances, well-known components, circuits, methods, materials, and procedures have not been described in detail so as not to unnecessarily obscure aspects of the disclosure. Embodiments are discussed primarily in the context of a method for identifying TLB entries that have a physical address within a specified address range.
  • Certain portions of the detailed descriptions of embodiments, which follow, are presented in terms of processes and methods (e.g., processes 500 of FIG. 5). Although specific steps are disclosed herein describing the operations of these processes and methods, such steps are exemplary. That is, embodiments are well suited to performing various other steps or variations of the steps and/or order of steps recited in the flowcharts of the figures herein.
  • In one embodiment, such processes are carried out by processors and electrical/electronic components under the control of computer readable and computer executable instructions comprising code contained in a computer usable medium. The computer readable and computer executable instructions reside, for example, in code within a computer usable medium and used in the processor, data storage features, memory, registers and other components of a computer system performing the method for maintaining sufficient bandwidth on a network link during failures. However, the computer readable and computer executable instructions may reside in any type of computer readable medium.
  • Exemplary Memory Design
  • A typical multiple storage level memory design is characterized by a hierarchy of three levels, including a cache level, a main memory, and a backing storage, such as a disc, flash drive, or other storage medium. A table corresponds to the cache and is managed transparently by hardware for the operating system (OS). The table contains a working set of recently program-referenced localities (e.g., lines) of the main memory.
  • Caching and paging mechanisms support efficient memory management. In paging, the OS fetches fixed size (e.g., 4,096 bytes) blocks called pages from the backing storage into the main memory as required by the processor (e.g., on demand). Physical memory is divided into page frames of a fixed size. The real (e.g., physical) address is used to access cache and main memory. The least significant 12 bits of the real address apply to a particular location in a page.
  • The upper bits of a real address apply to the page table, which determines if the corresponding partial page resides within the memory and translates the upper bits if it is present. The page table thus translates a page number into a frame number corresponding to the actual physical location of the associated information within the memory. A page table entry (PTE) associates a page number with a frame number. The page table resides within the memory.
  • The memory system thus generates a virtual effective address for cached data, translates the virtual address into a “real” address corresponding to its physical address in the main memory, and uses the real address to access the memory system. As the page table which performs the virtual-to-real (and e.g., real-to-virtual) address translations typically reside in the memory, the time such translations require adds to memory latency.
  • To make the translation process more efficient and thus reduce latency, a translation lookaside buffer (TLB) can be used. Typical TLBs comprise a register system with multiple entries (e.g., 64-256, etc.). Thus, a TLB functions as a fast, small cache within the processor with pointers to memory pages. Several bits comprising a virtual address become an address with the TLB. An entry corresponding to this TLB address points to the memory location.
  • A TLB entry includes the real address, the real upper portion of the physical memory address, and residual bits of the virtual address that are mapped to the pointed-to memory location. The residual bits are compared to the corresponding bits of the virtual reference so as to ensure selecting the correct entry. The TLB provides real addresses used by the cache by translating virtual addresses provided by the processor into real addresses.
  • Exemplary Computer System
  • Referring now to FIG. 1, a block diagram of exemplary computer system 12 is shown. It is appreciated that computer system 12 of FIG. 1 described herein illustrates an exemplary configuration of an operational platform upon which embodiments can be implemented. Nevertheless, other computer systems with differing configurations can also be used in place of computer system 12 within embodiments. For example, computer system 12 could be a server system, a personal computer or an embedded computer system.
  • Computer system 12 includes an address/data bus 10 for communicating information, a central processor 1 coupled with bus 10 for processing information and instructions, a cache 12 coupled to bus 10 for temporarily storing data, a volatile memory unit 2 (e.g., random access memory, static RAM, dynamic RAM, etc.) coupled with bus 10 for storing information and instructions for central processor 1 and a nonvolatile memory units (e.g., read only memory, programmable FROM, flash memory, EPROM, EEPROM, etc.) coupled with bus 10 for storing static information and instructions for processor 1. Computer system 12 may also contain an optional display device 5 coupled to bus 10 for displaying information to the computer user. Moreover, computer system 12 also includes a data storage device 4 (e.g., disk drive) for storing information and instructions.
  • Also included in computer system 12 of FIG. 1 is an optional alphanumeric input device 6. Device 6 can communicate information and command selections to central processor 1. Computer system 12 also includes an optional cursor control or directing device 7 coupled to bus 10 for communicating user input information and command selections to central processor 1. Computer system 12 also includes signal communication interface 8, which is also coupled to bus 10, and can be a serial port.
  • FIG. 2 is a block diagram 200 of an exemplary tentative TLB entry 201, a TLB 206 and a plurality of range registers 210, 211, and 212 in accordance with embodiments. The translation lookaside buffer (TLB) 206 comprises a plurality of TLB entries (e.g., TLB entry 220). In accordance with embodiments, a “tentative” TLB entry is a TLB entry before it is entered into the TLB. In accordance with embodiments, a tentative TLB entry can be created from contents of a page table entry (PTE) or can be supplied from other means. It is appreciated that a PTE can be accessed from many sources, one of which is a page table.
  • Embodiments provide a system and method for identifying tentative TLB entries that contain or have associated with them a physical page number (e.g., physical address) 202 that falls within in a range specified by range registers. Each of the range registers specifies a unique range of memory addresses. For example, range register 210 specifies a range from x1 to y1. Identifying a tentative TLB entry and modifying the tentative TLB entry before it is entered into the translation lookaside buffer (TLB) can be used to handle special cases where conventional mechanisms for entering TLB entries do not work. Embodiments comprise an architecture that includes a finite number of range registers (e.g., range registers 210, 211, and 212). The range registers specify the address ranges for which an exception can be invoked during the construction and insertion of a tentative TLB entry into a TLB.
  • In one embodiment, as the tentative TLB entry is constructed, the physical address of the tentative TLB entry is examined to see if it falls within the address range specified by range registers. If a tentative TLB entry has a physical page number (e.g., physical address) that falls within the ranges specified by the range registers, an exception is invoked and modification of the tentative TLB entry can be performed. If the physical address lies outside the predetermined ranges, then the tentative TLB entry can be stored into the TLB without modification.
  • In one embodiment, the physical page number 202 (e.g., physical address) associated with the tentative TLB entry 201 is compared to the address ranges specified by the range registers 210, 211, and 212. If the physical address is within the address ranges specified by the range registers, an exception is invoked and the physical address and/or an attribute of the tentative TLB entry is modified. Once the tentative TLB entry is modified, the tentative TLB is entered into the translation lookaside buffer 206. In one embodiment, the physical address of the tentative TLB entry is modified. In another embodiment, an attribute (e.g., cacheability) of the tentative TLB entry is modified. Out of range entries are stored in the TLB without modification.
  • FIG. 3 is a block diagram of an exemplary circuit 300 for creating and inserting a TLB entry in a translation lookaside buffer 350. System 300 includes a fill engine 320 for accessing a PTE 302, constructing a tentative TLB entry 201 and invoking a comparison between the physical address of the tentative TLB entry and a predetermined range of physical memory addresses 335. System 300 also includes a comparator 333 coupled to the fill engine 320 for comparing the physical memory address of the tentative TLB entry 201 and range 335. In one embodiment, comparator 333 may reside in fill engine 320. In another embodiment, the comparator may reside in the range register 335 or may be coupled to fill engine 320 externally.
  • The comparator 333 compares the physical address and the specified range and then determines a match. System 300 also includes a fix-up handler 340 coupled to the comparator 333 and to the fill engine 320 for handling an exception generated by the comparator 333 in response to the comparator 333 determining that the physical memory address associated with the tentative TLB entry 201 is within the predetermined range 335. In response to the exception, the fix-up handler 340 modifies the physical address and/or an attribute of the tentative TLB entry 201 and creates a modified tentative TLB entry 310. The modified tentative TLB entry 310 is then inserted in the TLB 350 by the fill engine 320. Tentative TLB entries having a physical address outside the ranges are stored in the TLB by the fill engine 320 without modification. It is appreciated that the fix-up handler 340 can be implemented in hardware or software.
  • FIG. 4 is a block diagram of an exemplary tentative TLB entry and a new (e.g., modified) tentative TLB entry in accordance with embodiments. Tentative TLB entry 201 comprises a physical address and attributes “A” 202. After a match, an exception is invoked by the comparator and the fix-up handler 340 of FIG. 3 modifies an attribute or physical address of the tentative TLB entry according to an implementation of the exception invoked. It is appreciated that the attribute modified by the fix-up handler can be a physical memory address or any other attribute associated with the TLB entry, such as cacheability permissions or read/write permissions. After the tentative TLB entry 201 is modified, a new page table entry 310 is created comprising modified physical address and attributes “B” 406. The modified TLB entry is then inserted in the TLB by the fill handler.
  • FIG. 5 is a flow diagram of an exemplary process 500 for determining if a tentative TLB entry has a physical address that falls within an address range specified by range registers in accordance with embodiments. It is appreciated that the steps performed in process 500 can be implemented in hardware or software. Process 500 begins with step 502, accessing a physical address associated with a tentative TLB entry. The next step 504 is to invoke a comparison and compare the physical address retrieved in step 502 to a predetermined set of address ranges. A match is determined in step 506.
  • If the physical address is not within the ranges specified by the range registers, the tentative TLB entry is entered into the TLB in step 510. If the physical address is determined to be within the ranges of the range registers, in step 508, the tentative TLB entry is modified in any way appropriate to that particular use of the range register. Any number of modifications can be performed in step 508, depending on the convention of the range register. Any number of modifications can be performed in step 508, depending on the specific needs of the embodiment.
  • For example, the physical page number can be modified to a remapped address. Or, in another case, the cacheability of the tentative TLB can be modified by altering an attribute of the tentative TLB entry. In one embodiment, any aspect of the tentative TLB can be modified before it is entered into the TLB. The modifications of the tentative TLB entry can be specific to any number of conditions. Once the tentative TLB is modified, the modified tentative TLB entry is entered into the TLB.
  • Exemplary Implementations
  • Embodiments relate to the creation of a TLB entry. Specifically, there are a number of cases where it is desirable to identify and modify TLB entries that have a physical address that resides in a predetermined address range specified by a range register before the TLB entry is stored in the TLB.
  • One exemplary case occurs when using part of an interrupt controller that is architecturally mapped into the memory address space (e.g., a memory map device) residing at a movable address. One such interrupt controller is an APIC (Advanced Programmable Interrupt Controller). An APIC is a special-purpose integrated circuit that functions as an overall manager in an interrupt driven system. The circuit accepts requests from the peripheral equipment, determines which of the incoming requests is of the highest priority, ascertains whether the incoming request has a higher priority value than the level currently being serviced, and issues an interrupt to the CPU based on this determination. The APIC is mapped in memory in a way that does not allow the use of conventional mechanisms for creating a TLB entry if that TLB entry has a physical page number within the range of the APIC.
  • Another exemplary case regarding an address space is graphics related, such as when using a GART (Graphics Address Remapping Table). A GART is a memory based table that specifies an address range in which physical addresses coming from the processor get remapped to a contiguous range of physical memory. A GART is mapped in a way that does not allow the use of conventional mechanisms for creating a TLB entry if that TLB entry has a physical page number within the range of the GART.
  • In one embodiment, specific implementations of identifying a TLB entry that resides in a finite memory range are specific to code morphing software (CMS). In one implementation, code-morphing software is designed to translate x86 instructions into VLIW (very long instruction word) instructions for the underlying hardware engine. In one embodiment, identifying tentative TLB entries comprising a physical memory address within a specified memory range improves performance of the code morphing software.
  • In embodiments, a system and method for identifying a TLB entry with a physical page number that is within a specified range has been described. While the disclosure has been described in particular embodiments, it should be appreciated that the disclosure should not be construed as limited by such embodiments, but rather construed according to the following Claims.
  • The foregoing descriptions of specific embodiments have been presented for purposes of illustration and description. They are not intended to be exhaustive or to limit the disclosure to the precise forms disclosed, and many modifications and variations are possible in light of the above teaching. The embodiments were chosen and described in order to best explain the principles of the disclosure and its practical application, to thereby enable others skilled in the art to best utilize the disclosure and various embodiments with various modifications as are suited to the particular use contemplated. It is intended that the scope of the disclosure be defined by the Claims appended hereto and their equivalents.

Claims (21)

1-20. (canceled)
21. An apparatus comprising:
means for determining whether a physical address of a tentative entry of a translation lookaside buffer is within an address range for identification of an exception; and
means for identifying the exception responsive to the means for determining indicating the physical address of the tentative entry of the translation lookaside buffer is included within the address range.
22. The apparatus of claim 21, further comprising:
means for storing the address range.
23. The apparatus of claim 21, wherein the means for determining comprises:
means for comparing the physical address with the address range to determine whether the physical address is included within the address range.
24. The apparatus of claim 21, further comprising:
means for modifying the tentative entry responsive to the exception identified by the means for identifying.
25. The apparatus of claim 24, wherein the means for modifying comprises:
means for altering the physical address of the tentative entry.
26. The apparatus of claim 24, wherein the means for modifying comprises:
means for altering an attribute of the tentative entry.
27. The apparatus of claim 24, further comprising:
means for storing the modified tentative entry in the translation lookaside buffer.
28. An apparatus comprising:
means for storing an address range; and
means for invoking an exception if a physical address of a tentative entry of a translation lookaside buffer is within the address range.
29. The apparatus of claim 28, further comprising:
means for storing the tentative entry in the translation lookaside buffer responsive to the physical address of the tentative entry being outside of the address range.
30. The apparatus of claim 28, wherein the means for invoking comprises:
means for comparing the physical address with the address range to determine whether the physical address is included within the address range.
31. The apparatus of claim 28, further comprising:
means for modifying the tentative entry responsive to the exception invoked by the means for invoking.
32. The apparatus of claim 31, wherein the means for modifying comprises:
means for altering the physical address of the tentative entry.
33. The apparatus of claim 31, wherein the means for modifying comprises:
means for altering an attribute of the tentative entry.
34. The apparatus of claim 31, further comprising:
means for storing the modified tentative entry in the translation lookaside buffer.
35. An apparatus comprising:
means for storing an address range; and
means for modifying a tentative entry of a translation lookaside buffer if a physical address of the tentative entry of the translation lookaside buffer is within the address range.
36. The apparatus of claim 35, further comprising:
means for storing the tentative entry in the translation lookaside buffer responsive to the physical address of the tentative entry being outside of the address range.
37. The apparatus of claim 35, wherein the means for modifying comprises:
means for altering the physical address of the tentative entry.
38. The apparatus of claim 35, wherein the means for modifying comprises:
means for altering an attribute of the tentative entry.
39. The apparatus of claim 35, further comprising:
means for storing the modified tentative entry in the translation lookaside buffer.
40. The apparatus of claim 35, wherein the address range is associated with at least one of an advanced programmable interrupt controller (APIC) and a graphics address remapping table (GART).
US13/493,810 2003-07-10 2012-06-11 System and method for identifying tlb entries associated with a physical address of a specified range Abandoned US20120254584A1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US13/493,810 US20120254584A1 (en) 2003-07-10 2012-06-11 System and method for identifying tlb entries associated with a physical address of a specified range

Applications Claiming Priority (6)

Application Number Priority Date Filing Date Title
US48662903P 2003-07-10 2003-07-10
US10/629,031 US7149872B2 (en) 2003-07-10 2003-07-28 System and method for identifying TLB entries associated with a physical address of a specified range
US11/449,950 US7380096B1 (en) 2003-07-10 2006-06-08 System and method for identifying TLB entries associated with a physical address of a specified range
US12/127,768 US7913058B2 (en) 2003-07-10 2008-05-27 System and method for identifying TLB entries associated with a physical address of a specified range
US13/053,955 US8239656B2 (en) 2003-07-10 2011-03-22 System and method for identifying TLB entries associated with a physical address of a specified range
US13/493,810 US20120254584A1 (en) 2003-07-10 2012-06-11 System and method for identifying tlb entries associated with a physical address of a specified range

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
US13/053,955 Continuation US8239656B2 (en) 2003-07-10 2011-03-22 System and method for identifying TLB entries associated with a physical address of a specified range

Publications (1)

Publication Number Publication Date
US20120254584A1 true US20120254584A1 (en) 2012-10-04

Family

ID=33567942

Family Applications (5)

Application Number Title Priority Date Filing Date
US10/629,031 Expired - Lifetime US7149872B2 (en) 2003-07-10 2003-07-28 System and method for identifying TLB entries associated with a physical address of a specified range
US11/449,950 Expired - Lifetime US7380096B1 (en) 2003-07-10 2006-06-08 System and method for identifying TLB entries associated with a physical address of a specified range
US12/127,768 Expired - Lifetime US7913058B2 (en) 2003-07-10 2008-05-27 System and method for identifying TLB entries associated with a physical address of a specified range
US13/053,955 Expired - Lifetime US8239656B2 (en) 2003-07-10 2011-03-22 System and method for identifying TLB entries associated with a physical address of a specified range
US13/493,810 Abandoned US20120254584A1 (en) 2003-07-10 2012-06-11 System and method for identifying tlb entries associated with a physical address of a specified range

Family Applications Before (4)

Application Number Title Priority Date Filing Date
US10/629,031 Expired - Lifetime US7149872B2 (en) 2003-07-10 2003-07-28 System and method for identifying TLB entries associated with a physical address of a specified range
US11/449,950 Expired - Lifetime US7380096B1 (en) 2003-07-10 2006-06-08 System and method for identifying TLB entries associated with a physical address of a specified range
US12/127,768 Expired - Lifetime US7913058B2 (en) 2003-07-10 2008-05-27 System and method for identifying TLB entries associated with a physical address of a specified range
US13/053,955 Expired - Lifetime US8239656B2 (en) 2003-07-10 2011-03-22 System and method for identifying TLB entries associated with a physical address of a specified range

Country Status (1)

Country Link
US (5) US7149872B2 (en)

Families Citing this family (46)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7149872B2 (en) * 2003-07-10 2006-12-12 Transmeta Corporation System and method for identifying TLB entries associated with a physical address of a specified range
US7149851B1 (en) 2003-08-21 2006-12-12 Transmeta Corporation Method and system for conservatively managing store capacity available to a processor issuing stores
US7516291B2 (en) * 2005-11-21 2009-04-07 Red Hat, Inc. Cooperative mechanism for efficient application memory allocation
US7644251B2 (en) * 2005-12-19 2010-01-05 Sigmatel, Inc. Non-volatile solid-state memory controller
CN103646009B (en) 2006-04-12 2016-08-17 索夫特机械公司 The apparatus and method that the instruction matrix of specifying parallel and dependent operations is processed
US7478226B1 (en) 2006-09-29 2009-01-13 Transmeta Corporation Processing bypass directory tracking system and method
US7774583B1 (en) 2006-09-29 2010-08-10 Parag Gupta Processing bypass register file system and method
CN101627365B (en) 2006-11-14 2017-03-29 索夫特机械公司 Multi-threaded architecture
TWI361354B (en) * 2007-09-11 2012-04-01 Realtek Semiconductor Corp Memory access controlling apparatus and related method
EP3156896B1 (en) 2010-09-17 2020-04-08 Soft Machines, Inc. Single cycle multi-branch prediction including shadow cache for early far branch prediction
WO2012135041A2 (en) 2011-03-25 2012-10-04 Soft Machines, Inc. Register file segments for supporting code block execution by using virtual cores instantiated by partitionable engines
EP2689327B1 (en) 2011-03-25 2021-07-28 Intel Corporation Executing instruction sequence code blocks by using virtual cores instantiated by partitionable engines
CN103635875B (en) 2011-03-25 2018-02-16 英特尔公司 For by using by can subregion engine instance the memory segment that is performed come support code block of virtual core
TWI603198B (en) 2011-05-20 2017-10-21 英特爾股份有限公司 Decentralized allocation of resources and interconnect structures to support the execution of instruction sequences by a plurality of engines
KR101639854B1 (en) 2011-05-20 2016-07-14 소프트 머신즈, 인크. An interconnect structure to support the execution of instruction sequences by a plurality of engines
KR101703401B1 (en) 2011-11-22 2017-02-06 소프트 머신즈, 인크. An accelerated code optimizer for a multiengine microprocessor
US20150039859A1 (en) 2011-11-22 2015-02-05 Soft Machines, Inc. Microprocessor accelerated code optimizer
US8930674B2 (en) 2012-03-07 2015-01-06 Soft Machines, Inc. Systems and methods for accessing a unified translation lookaside buffer
US9753860B2 (en) 2012-06-14 2017-09-05 International Business Machines Corporation Page table entry consolidation
US9811472B2 (en) 2012-06-14 2017-11-07 International Business Machines Corporation Radix table translation of memory
US9092359B2 (en) 2012-06-14 2015-07-28 International Business Machines Corporation Identification and consolidation of page table entries
US9710399B2 (en) 2012-07-30 2017-07-18 Intel Corporation Systems and methods for flushing a cache with modified data
US9740612B2 (en) 2012-07-30 2017-08-22 Intel Corporation Systems and methods for maintaining the coherency of a store coalescing cache and a load cache
US9430410B2 (en) 2012-07-30 2016-08-30 Soft Machines, Inc. Systems and methods for supporting a plurality of load accesses of a cache in a single cycle
US9229873B2 (en) 2012-07-30 2016-01-05 Soft Machines, Inc. Systems and methods for supporting a plurality of load and store accesses of a cache
US9916253B2 (en) 2012-07-30 2018-03-13 Intel Corporation Method and apparatus for supporting a plurality of load accesses of a cache in a single cycle to maintain throughput
US9678882B2 (en) 2012-10-11 2017-06-13 Intel Corporation Systems and methods for non-blocking implementation of cache flush instructions
US9619402B1 (en) * 2012-11-28 2017-04-11 Marvell International Ltd. Method and apparatus for optimizing translation of a virtual memory address into a physical memory address in a processor having virtual memory
WO2014150991A1 (en) 2013-03-15 2014-09-25 Soft Machines, Inc. A method for implementing a reduced size register view data structure in a microprocessor
WO2014150971A1 (en) 2013-03-15 2014-09-25 Soft Machines, Inc. A method for dependency broadcasting through a block organized source view data structure
US9811342B2 (en) 2013-03-15 2017-11-07 Intel Corporation Method for performing dual dispatch of blocks and half blocks
KR101708591B1 (en) 2013-03-15 2017-02-20 소프트 머신즈, 인크. A method for executing multithreaded instructions grouped onto blocks
KR102083390B1 (en) 2013-03-15 2020-03-02 인텔 코포레이션 A method for emulating a guest centralized flag architecture by using a native distributed flag architecture
US9886279B2 (en) 2013-03-15 2018-02-06 Intel Corporation Method for populating and instruction view data structure by using register template snapshots
US10140138B2 (en) 2013-03-15 2018-11-27 Intel Corporation Methods, systems and apparatus for supporting wide and efficient front-end operation with guest-architecture emulation
US9904625B2 (en) 2013-03-15 2018-02-27 Intel Corporation Methods, systems and apparatus for predicting the way of a set associative cache
US9891924B2 (en) 2013-03-15 2018-02-13 Intel Corporation Method for implementing a reduced size register view data structure in a microprocessor
US10275255B2 (en) 2013-03-15 2019-04-30 Intel Corporation Method for dependency broadcasting through a source organized source view data structure
US9569216B2 (en) 2013-03-15 2017-02-14 Soft Machines, Inc. Method for populating a source view data structure by using register template snapshots
WO2014150806A1 (en) 2013-03-15 2014-09-25 Soft Machines, Inc. A method for populating register view data structure by using register template snapshots
US11126559B2 (en) 2013-12-30 2021-09-21 Michael Henry Kass Translation look-aside buffer and prefetch indicator
US10002080B2 (en) 2013-12-30 2018-06-19 Michael Henry Kass Memory system address modification policies
US20150186287A1 (en) * 2013-12-30 2015-07-02 Michael Henry Kass Using Memory System Programming Interfacing
US10216632B2 (en) 2013-12-30 2019-02-26 Michael Henry Kass Memory system cache eviction policies
US9514053B2 (en) 2013-12-30 2016-12-06 Michael Henry Kass Providing memory system programming interfacing
US10725930B2 (en) * 2018-08-27 2020-07-28 Micron Technology, Inc. Logical to physical memory address mapping tree

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6301648B1 (en) * 1999-08-18 2001-10-09 Ati International Srl Method and apparatus for processing memory accesses utilizing a TLB
US20030018860A1 (en) * 2001-06-29 2003-01-23 Krueger Steven D. System protection map

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5493660A (en) * 1992-10-06 1996-02-20 Hewlett-Packard Company Software assisted hardware TLB miss handler
US5956753A (en) * 1993-12-30 1999-09-21 Intel Corporation Method and apparatus for handling speculative memory access operations
US6341324B1 (en) * 1995-10-06 2002-01-22 Lsi Logic Corporation Exception processing in superscalar microprocessor
US5860146A (en) * 1996-06-25 1999-01-12 Sun Microsystems, Inc. Auxiliary translation lookaside buffer for assisting in accessing data in remote address spaces
US6226732B1 (en) * 1997-10-02 2001-05-01 Hitachi Micro Systems, Inc. Memory system architecture
JP3657424B2 (en) * 1998-03-20 2005-06-08 松下電器産業株式会社 Center device and terminal device for broadcasting program information
US6212613B1 (en) * 1999-03-22 2001-04-03 Cisco Technology, Inc. Methods and apparatus for reusing addresses in a computer
US6658549B2 (en) * 2001-05-22 2003-12-02 Hewlett-Packard Development Company, Lp. Method and system allowing a single entity to manage memory comprising compressed and uncompressed data
US6912644B1 (en) * 2003-03-06 2005-06-28 Intel Corporation Method and apparatus to steer memory access operations in a virtual memory system
US7149872B2 (en) * 2003-07-10 2006-12-12 Transmeta Corporation System and method for identifying TLB entries associated with a physical address of a specified range

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6301648B1 (en) * 1999-08-18 2001-10-09 Ati International Srl Method and apparatus for processing memory accesses utilizing a TLB
US20030018860A1 (en) * 2001-06-29 2003-01-23 Krueger Steven D. System protection map

Also Published As

Publication number Publication date
US8239656B2 (en) 2012-08-07
US20080294868A1 (en) 2008-11-27
US7913058B2 (en) 2011-03-22
US20050010739A1 (en) 2005-01-13
US7149872B2 (en) 2006-12-12
US7380096B1 (en) 2008-05-27
US20120072697A1 (en) 2012-03-22

Similar Documents

Publication Publication Date Title
US8239656B2 (en) System and method for identifying TLB entries associated with a physical address of a specified range
US5918250A (en) Method and apparatus for preloading default address translation attributes
EP0851357B1 (en) Method and apparatus for preloading different default address translation attributes
US5852738A (en) Method and apparatus for dynamically controlling address space allocation
US7539843B2 (en) Virtual memory fragment aware cache
US5752275A (en) Translation look-aside buffer including a single page size translation unit
US5724538A (en) Computer memory address control apparatus utilizing hashed address tags in page tables which are compared to a combined address tag and index which are longer than the basic data width of the associated computer
US6393544B1 (en) Method and apparatus for calculating a page table index from a virtual address
EP0595880B1 (en) Memory management method
US9934155B2 (en) Method, system, and apparatus for page sizing extension
US5617554A (en) Physical address size selection and page size selection in an address translator
US11853226B2 (en) Address translation cache with use of page size information to select an invalidation lookup mode, or use of leaf-and-intermediate exclusive range-specifying invalidation request, or use of invalidation request specifying single address and page size information
US6249853B1 (en) GART and PTES defined by configuration registers
US8601223B1 (en) Techniques for servicing fetch requests utilizing coalesing page table entries
US10191853B2 (en) Apparatus and method for maintaining address translation data within an address translation cache
US20040117587A1 (en) Hardware managed virtual-to-physical address translation mechanism
US20040117588A1 (en) Access request for a data processing system having no system memory
US9996474B2 (en) Multiple stage memory management
US20090254728A1 (en) Memory allocation to minimize translation lookaside buffer faults
US8650012B1 (en) Caching information to map simulation addresses to host addresses in computer system simulations
US20020169936A1 (en) Optimized page tables for address translation
US8347064B1 (en) Memory access techniques in an aperture mapped memory space
US7017024B2 (en) Data processing system having no system memory
US20210311997A1 (en) Binary search procedure for control table stored in memory system
US20040117590A1 (en) Aliasing support for a data processing system having no system memory

Legal Events

Date Code Title Description
STCB Information on status: application discontinuation

Free format text: ABANDONED -- FAILURE TO RESPOND TO AN OFFICE ACTION