US 12,073,114 B2
Stacked command queue
Hideki Kanayama, San Jose, CA (US); and Eric M. Scott, San Francisco, CA (US)
Assigned to Advanced Micro Devices, Inc., Santa Clara, CA (US)
Filed by Advanced Micro Devices, Inc., Santa Clara, CA (US)
Filed on Sep. 30, 2021, as Appl. No. 17/491,058.
Prior Publication US 2023/0102680 A1, Mar. 30, 2023
Int. Cl. G06F 3/06 (2006.01)
CPC G06F 3/0659 (2013.01) [G06F 3/0604 (2013.01); G06F 3/0622 (2013.01); G06F 3/0635 (2013.01); G06F 3/0679 (2013.01)] 21 Claims
OG exemplary drawing
 
1. A memory controller, comprising:
a command queue loader circuit for receiving incoming memory access commands and loading entries of a plurality of entry stacks;
a command queue including said plurality of entry stacks, each entry stack including: a plurality of entries each for holding memory access commands, one or more parameter indicators each a variable and holding a respective characteristic common to the plurality of entries, and a head indicator designating a current entry for arbitration, wherein the command queue loader circuit is operative to load a selected new incoming command into a selected empty entry stack and updates the one or more parameter indicators of the selected empty entry stack to match the at least one common characteristic of the selected new incoming command;
a first arbiter for selecting memory access commands from the command queue for transmission to a memory coupled to a memory channel, the first arbiter including a single command input for each entry stack; and
a credit control circuit for handling flow control credits for a data fabric from which memory access commands are received as memory access requests and decoded before being loaded into the command queue, the credit control circuit operable to retain a credit responsive to a respective memory access command being loaded into a previously empty entry stack, and return a credit to the data fabric responsive to the respective memory access command being loaded into an entry stack already holding at least one memory access command.