Method and apparatus that enforces a regional memory model in hierarchical memory systems
First Claim
1. A memory manager that dynamically enforces a memory model in non-cache memory, comprising:
- a plurality of memory-owning clients executing a computer program, said memory-owning clients issue memory instructions;
a page table that identifies an initial memory model to be enforced on each page of non-cache memory and an initial list of which of said memory-owning clients are authorized to access each page of non-cache memory;
a translation lookaside buffer (TLB) comprising a plurality of TLB entries, each said TLB entry includes a physical address, virtual address, and the memory model and client usage associated with said physical and virtual addresses, wherein said memory model and said client usage are initialized from said page table; and
a memory manager that intercepts said memory instructions, updates said memory model and said client usage in said TLB entry, and queues said memory instruction for execution according to said memory model, wherein said update is performed according to at least one of the following criteria;
memory type, client usage, and elapsed time between accesses.
9 Assignments
0 Petitions
Accused Products
Abstract
The present invention discloses a method and apparatus that uses extensions to the TLB entry to dynamically identify pages of memory that can be weakly ordered or must be strongly ordered and enforces the appropriate memory model on those pages of memory. Such identification and memory model enforcement allows for more efficient execution of memory instructions in a hierarchical memory design in cases where memory instructions can be executed out of order. From the page table, the memory manager constructs TLB entries that associate page frame numbers of memory operands with page-granular client usage data and a memory order tag. The memory order tag identifies the memory model that is currently being enforced for the associated page of memory. The memory manager updates the memory order tag of the TLB entry in accordance with changes in the client usage information. In the preferred embodiment, the TLB structure is a global TLB shared by all processors. In alternative embodiments, the TLB structure may comprise either multiple distributed TLBs with shared knowledge, each assigned to a different processor, or a combination of multiple local TLBs, each assigned to a different processor, that exchange information with a global TLB, which in turn provides data to the memory manager to access the hierarchical memory system.
-
Citations
9 Claims
-
1. A memory manager that dynamically enforces a memory model in non-cache memory, comprising:
-
a plurality of memory-owning clients executing a computer program, said memory-owning clients issue memory instructions;
a page table that identifies an initial memory model to be enforced on each page of non-cache memory and an initial list of which of said memory-owning clients are authorized to access each page of non-cache memory;
a translation lookaside buffer (TLB) comprising a plurality of TLB entries, each said TLB entry includes a physical address, virtual address, and the memory model and client usage associated with said physical and virtual addresses, wherein said memory model and said client usage are initialized from said page table; and
a memory manager that intercepts said memory instructions, updates said memory model and said client usage in said TLB entry, and queues said memory instruction for execution according to said memory model, wherein said update is performed according to at least one of the following criteria;
memory type, client usage, and elapsed time between accesses.- View Dependent Claims (5, 6, 7, 8, 9)
-
-
2. A memory management system that dynamically enforces a memory model in non-cache memory, comprising:
-
a plurality of memory-owning clients executing a computer program, said memory-owning clients issue memory instructions;
a page table that identifies an initial memory model to be enforced on each page of non-cache memory and an initial list of which of said memory-owning clients are authorized to access each page of non-cache memory;
a translation lookaside buffer (TLB) comprising a plurality of TLB entries, each said TLB entry includes a physical address, virtual address, and the memory model and client usage associated with said physical and virtual addresses, wherein said memory model and said client usage are initialized from said page table; and
a memory manager that intercepts said memory instructions, updates said memory model and said client usage in said TLB entry, and queues said memory instruction for execution according to said memory model, wherein said update is performed according to at least one of the following criteria;
memory type, client usage, and elapsed time between accesses.
-
-
3. A method that makes a memory manager that dynamically enforces a memory model in non-cache memory, comprising:
-
providing a plurality of memory-owning clients executing a computer program, said memory-owning clients issue memory instructions;
providing a page table that identifies an initial memory model to be enforced on each page of non-cache memory and an initial list of which of said memory-owning clients are authorized to access each page of non-cache memory;
providing a translation lookaside buffer (TLB) comprising a plurality of TLB entries, each said TLB entry includes a physical address, virtual address, and the memory model and client usage associated with said physical and virtual addresses, wherein said memory model and said client usage are initialized from said page table; and
providing a memory manager that intercepts said memory instructions, updates said memory model and said client usage in said TLB entry, and queues said memory instruction for execution according to said memory model, wherein said update is performed according to at least one of the following criteria;
memory type, client usage, and elapsed time between accesses.
-
-
4. A method that dynamically enforces a memory model in non-cache memory, comprising:
-
executing a computer program using a plurality of memory-owning clients that issue memory instructions;
identifying an initial memory model to be enforced on each page of non-cache memory and an initial list of which of said plurality of memory-owning clients are authorized to access each page of non-cache memory in a page table;
generating a plurality of TLB entries in a translation lookaside buffer, each said TLB entry includes a physical address, virtual address, and the memory model and client usage associated with said physical and virtual addresses, wherein said memory model and said client usage are initialized from said page table; and
intercepting said memory instructions using a memory manager, updating said memory model and said client usage in said TLB entry, and queuing said memory instruction for execution according to said memory model, wherein said update is performed according to at least one of the following criteria;
memory type, client usage, and elapsed time between accesses.
-
Specification