IP Library Granted Patent US 12664095
Granted Patent B2
US 12664095 · App. 18/670,523 · Granted Jun 23, 2026

Memory system with content-addressable entries supporting scalable, low overhead, in-flight establishment and retirement of resource-based linked lists, and related methods and computer-readable media

Inventors: Aaron Kirk (Raleigh, NC); Jason Panavich (Raleigh, NC); Vikram Arora (Morrisville, NC)
Assignee: Microsoft Technology Licensing, LLC
G06F12/0824G06F12/0891
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 12664095
App. No.
18/670,523
Granted
Jun 23, 2026
Kind
B2
Abstract

A memory system with content-addressable entries supporting scalable, low overhead, in-fight establishment and retirement of resource-based linked lists, and related methods of operation and computer-readable media. The memory system can be used to track and establish an ordering of in-flight instances of access to a resource through a linked-list of content-addressable entries established in the memory system corresponding to such resource. Entries in the memory system that represent instances of access to a given resource can each be established as part of a linked list associated for the given resource to track a priority order for multiple instances of access the resource and then retired when an instance of access has been completed as part of a tracking system, such as to avoid hazards. The memory system provides a way to establish entries in a linked list for in flight instances of access to a resource for ordering and tracking.

Claims (101)

1 . A system for tracking in-flight instances of access to a resource, the system comprising:

one or more processing units; and

a computer-readable storage medium having encoded thereon computer-executable instructions to cause the one or more processing units to:

for each content-addressable entry of the plurality of content-addressable entries;

search an input resource identifier (ID) associated with a resource in an input resource establishment indicator on a resource establishment input against a resource ID of the content-addressable entry;

generate an output tail entry indicator indicating an entry ID of the content-addressable entry in response to the resource ID of the content-addressable entry matching the input resource ID and the content-addressable entry being a tail entry in a linked list associated with the input resource ID;

generate a global output tail entry indicator on a tail entry indicator output coupled to each of the plurality of content-addressable entries indicating a valid tail entry ID of a first content-addressable entry of the plurality of content-addressable entries whose resource ID matched the input resource ID and being the tail entry in the linked list associated with the input resource ID; and

allocate a new content-addressable entry for the input resource ID in a free content-addressable entry among the plurality of content-addressable entries;

in response to the global output tail entry indicator indicating the valid tail entry ID of the first content-addressable entry:

associate the new content-addressable entry with the input resource ID;

associate the new content-addressable entry as the tail entry in the linked list associated with the input resource ID; and

associate the new content-addressable entry to be dependent on the first content-addressable entry; and

in response to the content-addressable entry being indicated as the first content-addressable entry in the global output tail entry indicator:

disassociate the first content-addressable entry as being the tail entry in the linked list associated with the input resource ID.

2 . The system of claim 1 , wherein the instructions further cause the one or more processing units to: in response to the global output tail entry indicator indicating the valid tail entry ID of the first content-addressable entry:

set the new content-addressable entry to have a valid dependency on the first content addressable entry.

3 . The system of claim 1 , wherein the instructions further cause the one or more processing units to:

generate the output tail entry indicator indicating an invalid entry ID of the content-addressable entry in response to the resource ID of the content-addressable entry not matching the input resource ID;

generate the global output tail entry indicator on the tail entry indicator output indicating no valid tail entry ID in response to each of the plurality of content-addressable entries generating the output tail entry indicator indicating the invalid entry ID; and

in response to the global output tail entry indicator indicating no valid tail entry ID:

associate the new content-addressable entry with the input resource ID;

associate the new content-addressable entry as the tail entry of the linked list associated with the input resource ID; and

associate the new content-addressable entry as a head entry associated with the input resource ID.

4 . The system of claim 3 , wherein the instructions further cause the one or more processing units to:-in response to the global output tail entry indicator indicating no valid tail entry ID:

set the new content-addressable entry to have an invalid dependency on a content-addressable entry of the plurality of content-addressable entries.

5 . The system of claim 3 , wherein the instructions further cause the one or more processing units to:

disassociate the content-addressable entry as a retired content-addressable entry as the head entry in the linked list identified by the input retirement ID, in response to the retired content-addressable entry being the head entry in the linked list identified by the input retirement ID; and

associate the content-addressable entry as the head entry in the linked list identified by the input retirement ID in response to the content-addressable entry being dependent on the retired content-addressable entry.

6 . The system of claim 5 , wherein the instructions further cause the one or more processing units to: set the content-addressable entry identified on the input retirement ID, to have an invalid dependency.

7 . The system of claim 5 , wherein the instructions further cause the one or more processing units to:

disassociate the content-addressable entry as a retired content-addressable entry as the head entry in the linked list identified by the input retirement ID by being configured to unset the head pointer indicator in the retired content-addressable entry, in response to the retired content-addressable entry having its head entry set as the head entry in the linked list associated with the input retirement ID; and

associate the content-addressable entry as the head entry in the linked list associated with the input retirement ID by being configured to set the head pointer indicator in the content-addressable entry, in response to the dependency identifier register having a dependency ID matching the retired content-addressable entry.

8 . The system of claim 1 , wherein the instructions further cause the one or more processing units to create a plurality of linked lists among the plurality of content-addressable entries, each linked list of the plurality of linked lists associated with a unique input resource ID of the plurality of input resource IDs.

9 . The system of claim 1 , wherein the instructions further cause the one or more processing units to:

generate the output tail entry indicator indicating the entry ID of the content-addressable entry based on the resource ID of the content-addressable entry matching the input resource ID and the content-addressable entry being the tail entry in the linked list associated with the input resource ID.

10 . The system of claim 1 , wherein the instructions further cause the one or more processing units to:

receive the output tail entry indicators from each of the plurality of content-addressable entries; and

generate the global output tail entry indicator on the tail entry indicator output indicating the valid tail entry ID by being further configured to combine each of the output tail entry indicators from each of the plurality of content-addressable entries to generate the global output tail entry indicator.

11 . The system of claim 10 , wherein the instructions further cause the one or more processing units to: encode the combined output tail entry indicators from each of the plurality of content-addressable entries into the global output tail entry indicator indicating the valid tail entry ID of the first content-addressable entry.

12 . The system of claim 1 , wherein the instructions further cause the one or more processing units to:

search the input resource ID of the input resource establishment indicator on the resource establishment input against the resource ID in the resource ID register of the content-addressable entry; and

generate the output tail entry indicator indicating the entry ID of the content-addressable entry in response to the resource ID in the resource ID register of the content-addressable entry matching the input resource ID and the tail pointer indicator of the content-addressable entry indicating the content-addressable entry is a tail entry; and

each content-addressable entry of the plurality of content-addressable entries configured to, in response to the global output tail entry indicator indicating the valid tail entry ID of the first content-addressable entry:

associate the new content-addressable entry with the input resource ID by being configured to store the input resource ID in the resource ID register of the new content-addressable entry;

associate the new content-addressable entry as the tail entry associated with the input resource ID by being configured to set the tail pointer indicator in the new content-addressable entry indicating the new content-addressable entry is the tail entry associated with the input resource ID in the input resource establishment indicator;

set the new content-addressable entry to be dependent on the first content-addressable entry by being configured to store a dependency ID in the dependency identifier register in the new content-addressable entry identifying the first content-addressable entry; and

disassociate the first content-addressable entry from being the tail entry associated with the input resource ID by being configured to unset the tail pointer indicator in the first content-addressable entry as not being the tail entry associated with the input resource ID in the input resource establishment indicator.

13 . The system of claim 1 , wherein the instructions further cause the one or more processing units to:

generate an output head entry indicator indicating the entry ID of the content-addressable entry in response to the resource ID of the content-addressable entry matching the input resource ID and the content-addressable entry being a head entry in a linked list associated with the input resource ID;

the memory system is further configured to:

generate a global output head entry indicator coupled to each of the plurality of content-addressable entries indicating a valid head entry ID of a second content-addressable entry of the plurality of content-addressable entries whose resource ID matched the input resource ID and the second content-addressable entry being the head entry in the linked list associated with the input resource ID; and

allocate a new head content-addressable entry for the input resource ID in a free content-addressable entry among the plurality of content-addressable entries; and

each content-addressable entry of the plurality of content-addressable entries is configured to, in response to the output head entry indicator indicating the valid head entry ID of the second content-addressable entry:

associate the new head content-addressable entry with the input resource ID of the input resource establishment indicator;

associate the new head content-addressable entry as the head entry in the linked list associated with the input resource ID; and

associate the new head content-addressable entry as not being dependent on any content-addressable entry of the plurality of content-addressable entries; and

each content-addressable entry of the plurality of content-addressable entries is configured to, in response to the content-addressable entry being indicated as the second content-addressable entry in the output head entry indicator:

disassociate the second content-addressable entry as being the head entry in the linked list associated with the input resource ID; and

associate the second content-addressable entry as being dependent on the new head content-addressable entry.

14 . The system of claim 13 , wherein the instructions further cause the one or more processing units to: in response to the global output head entry indicator indicating the valid head entry ID of the second content-addressable entry:

set the second content-addressable entry to have a valid dependency on the new head content-addressable entry.

15 . The system of claim 13 , wherein the instructions further cause the one or more processing units to:

generate the output head entry indicator indicating the entry ID of the content-addressable entry based on the resource ID of the content-addressable entry matching the input resource ID and the content-addressable entry being the head entry in the linked list associated with the input resource ID.

16 . The system of claim 13 , wherein the instructions further cause the one or more processing units to:

receive the output head entry indicators from each of the plurality of content-addressable entries; and

generate the global output head entry indicator indicating the valid head entry ID by being further configured to combine each of the output head entry indicators from each of the plurality of content-addressable entries to generate the global output head entry indicator.

17 . The system of claim 1 , wherein the instructions further cause the one or more processing units to:

generate the output head entry indicator indicating an invalid head entry ID of the content-addressable entry in response to the resource ID of the content-addressable entry not matching the input resource ID;

the memory system is further configured to:

generate the global output head entry indicator indicating no valid head entry ID in response each of the plurality of content-addressable entries generating the output head entry indicator indicating an invalid entry ID; and

each content-addressable entry of the plurality of content-addressable entries is further configured to, in response to the global output head entry indicator indicating no valid head entry ID:

associate the new content-addressable entry with the input resource ID;

associate the new content-addressable entry as the tail entry of the linked list associated with the input resource ID; and

associate the new content-addressable entry as the head entry associated with the input resource ID.

18 . The system of claim 1 , wherein the instructions further cause the one or more processing units to:

generate the global output tail entry indicator based on the tracked first content-addressable entry by the stage tracking circuit whose resource ID matched the input resource ID and being the tail entry in a linked list associated with the input resource ID.

19 . The system of claim 1 , not comprising a memory access control circuit configured to randomly address the plurality of content-addressable entries based on a memory address.

20 . A method of tracking in-flight instances of access to a resource in a memory system, comprising:

for each content-addressable entry of a plurality of content-addressable entries:

searching an input resource identifier (ID) in an input resource establishment indicator on a resource establishment input against a resource ID of the content-addressable entry; and

generating an output tail entry indicator indicating an entry ID of the content-addressable entry, in response to the resource ID of the content-addressable entry matching the input resource ID and the content-addressable entry being a tail entry in a linked list associated with the input resource ID;

generating a global output tail entry indicator on a tail entry indicator output coupled to each of the plurality of content-addressable entries indicating a valid tail entry ID of a first content-addressable entry of the plurality of content-addressable entries whose resource ID matched the input resource ID and being the tail entry in the linked list associated with the input resource ID; and

allocating a new content-addressable entry for the input resource ID in a free content-addressable entry among the plurality of content-addressable entries;

in response to the global output tail entry indicator indicating the valid tail entry ID of the first content-addressable entry:

associating the new content-addressable entry with the input resource ID;

associating the new content-addressable entry as the tail entry in the linked list associated with the input resource ID; and

associating the new content-addressable entry to be dependent on the first content-addressable entry; and

in response to the content-addressable entry being indicated as the first content-addressable entry in the global output tail entry indicator:

disassociating the first content-addressable entry as being the tail entry in the linked list associated with the input resource ID.

21 . A non-transitory computer-readable medium having stored thereon computer executable instructions which, when executed by a processor, cause the processor to:

for each content-addressable entry of a plurality of content-addressable entries:

search an input resource identifier (ID) associated with a resource in an input resource establishment indicator on a resource establishment input against a resource ID of the content-addressable entry; and

generate, by the content-addressable entry, an output tail entry indicator indicating an entry ID of the content-addressable entry, in response to the resource ID of the content-addressable entry matching the input resource ID and the content-addressable entry being a tail entry in a linked list associated with the input resource ID;

generate a global output tail entry indicator on a tail entry indicator output coupled to each of the plurality of content-addressable entries indicating a valid tail entry ID of a first content-addressable entry of the plurality of content-addressable entries whose resource ID matched the input resource ID and being the tail entry in the linked list associated with the input resource ID; and

allocate a new content-addressable entry for the input resource ID in a free content-addressable entry among the plurality of content-addressable entries;

in response to the global output tail entry indicator indicating the valid tail entry ID of the first content-addressable entry:

associate the new content-addressable entry with the input resource ID;

associate the new content-addressable entry as the tail entry in the linked list associated with the input resource ID; and

associate the new content-addressable entry to be dependent on the first content-addressable entry; and

the first content-addressable entry, in response to the content-addressable entry being indicated as the first content-addressable entry in the global output tail entry indicator:

disassociate the first content-addressable entry as being the tail entry in the linked list associated with the input resource ID.