Tracking memory accesses when invalidating effective address to real address translations
First Claim
1. A system, comprising:
- a memory;
a memory management unit (MMU) having a translation lookaside buffer (TLB) configured to issue effective address to real address translation invalidation requests;
a processor comprising;
a bus configured to facilitate the transfer of commands and data between multiple subsystems of the processor;
one or more coprocessors to issue memory loads and stores using effective addresses;
an effective to real address translation (ERAT) table, wherein the ERAT table has a plurality of entries, each entry having an indicator;
a plurality of memory access entities (MAEs) coupled to the bus, wherein the MAEs are separate from the one or more coprocessors and are configured to access effective to real address translations stored in the ERAT table to execute memory load and store operations issued by the one or more coprocessors;
a tracking array having tracking array entries to store indexes to ERAT table entries, wherein a first tracking array entry is indexed by a first memory access entity (MAE) identifier, the first MAE identifier identifying a first MAE that uses a first effective to real address translation stored in a first ERAT table entry having its index stored in the first tracking array entry; and
a hardware unit, separate from the one or more coprocessors and the MAEs, the hardware unit configured to;
receive a request to execute a memory operation,determine whether the request to execute a memory operation isan address translation request issued by a second MAE to use a second effective to real address translation stored in a second ERAT table entry to translate a first effective address to a first real address oran address invalidation request issued by the MMU to invalidate a third effective to real address translation stored in a third ERAT table entry, the third ERAT table entry having a third ERAT table index,wherein the request to execute a memory operation includes the first effective address and a first process identifier, the first process identifier identifying a process associated with the first effective address;
identify, based on the first effective address and the first process identifier, a second ERAT table index of the second ERAT entry when the request to execute a memory operation is an address translation request issued by an MAE;
store the second ERAT table index in a second tracking array entry, wherein the second tracking array entry is indexed by a second MAE identifier identifying the second MAE;
update a first indicator associated with the second ERAT table entry.
1 Assignment
0 Petitions
Accused Products
Abstract
According to embodiments of the present disclosure, a method for invalidating an address translation entry in an effective address to real address translation table (ERAT) for a computer memory can include receiving a first invalidation request. According to some embodiments, the method may also include determining that a first entry in the ERAT corresponds with the first invalidation request, wherein the ERAT has a plurality of entries, each entry in the plurality of entries having an indicator. In particular embodiments, the method may then determine that a first indicator associated with the first entry indicates that the first entry is not being used by any of a plurality of memory access entities (MAE), wherein a first MAE can concurrently use a same entry as a second MAE. The first entry may then be invalidated in response to determining that the first entry is not being used.
15 Citations
9 Claims
-
1. A system, comprising:
-
a memory; a memory management unit (MMU) having a translation lookaside buffer (TLB) configured to issue effective address to real address translation invalidation requests; a processor comprising; a bus configured to facilitate the transfer of commands and data between multiple subsystems of the processor; one or more coprocessors to issue memory loads and stores using effective addresses; an effective to real address translation (ERAT) table, wherein the ERAT table has a plurality of entries, each entry having an indicator; a plurality of memory access entities (MAEs) coupled to the bus, wherein the MAEs are separate from the one or more coprocessors and are configured to access effective to real address translations stored in the ERAT table to execute memory load and store operations issued by the one or more coprocessors; a tracking array having tracking array entries to store indexes to ERAT table entries, wherein a first tracking array entry is indexed by a first memory access entity (MAE) identifier, the first MAE identifier identifying a first MAE that uses a first effective to real address translation stored in a first ERAT table entry having its index stored in the first tracking array entry; and a hardware unit, separate from the one or more coprocessors and the MAEs, the hardware unit configured to; receive a request to execute a memory operation, determine whether the request to execute a memory operation is an address translation request issued by a second MAE to use a second effective to real address translation stored in a second ERAT table entry to translate a first effective address to a first real address or an address invalidation request issued by the MMU to invalidate a third effective to real address translation stored in a third ERAT table entry, the third ERAT table entry having a third ERAT table index, wherein the request to execute a memory operation includes the first effective address and a first process identifier, the first process identifier identifying a process associated with the first effective address; identify, based on the first effective address and the first process identifier, a second ERAT table index of the second ERAT entry when the request to execute a memory operation is an address translation request issued by an MAE; store the second ERAT table index in a second tracking array entry, wherein the second tracking array entry is indexed by a second MAE identifier identifying the second MAE; update a first indicator associated with the second ERAT table entry. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9)
-
Specification