P
US12112786B2ActiveUtilityPatentIndex 50

Command scheduling component for memory

Assignee: MICRON TECHNOLOGY INCPriority: Sep 1, 2021Filed: Sep 1, 2021Granted: Oct 8, 2024
Est. expirySep 1, 2041(~15.2 yrs left)· nominal 20-yr term from priority
Inventors:LA FRATTA PATRICK ASCOTT JEFFREY LISENEGGER LAURENTWALKER ROBERT M
G06F 13/1673G11C 11/4076G11C 11/4096G11C 11/40603
50
PatentIndex Score
0
Cited by
15
References
18
Claims

Abstract

A system includes a processing device that determines whether a memory bank is active and adds an activate command for a row of the memory bank accessed by an oldest command for the memory bank to a command scheduler in response to determining the memory bank is not active. The processing device determines whether the row of the memory bank has a corresponding row command in response to determining the memory bank is active. The processing device determines whether a close page mode is enabled or an open row timer has expired on the row and adds a precharge command to the command scheduler in response to determining the close page mode is enabled or the open row timer has expired. The processing device executes a command in the command scheduler based on a priority of commands included in the command scheduler.

Claims

exact text as granted — not AI-modified
What is claimed is: 
     
       1. A system, comprising:
 a memory component having a plurality of memory banks; and 
 a processing device, operatively coupled with the memory component, to:
 make a first determination of whether at least one memory bank of the plurality of memory banks is active, wherein an activate command for a row of the at least one memory bank accessed by an oldest command for the at least one memory bank is added to a command scheduler in response to determining the at least one memory bank is not active; 
 in response to the activate command being added to the command scheduler, make a second determination of whether the at least one memory bank is active, wherein the second determination is made immediately after the activate command is added to the command scheduler with no scheduling actions occurring between the activate command being added to the command scheduler and the second determination being made; 
 in response to the second determination of whether the at least one memory bank is active coming to a determination that the at least one memory bank is active, determine whether the row of the at least one memory bank has a corresponding row command, wherein the oldest row command corresponding to the row of the at least one memory bank is added to the command scheduler in response to determining the at least one memory bank is active and determining there is a row command corresponding to the row of the at least one memory bank; 
 in response to the oldest row command corresponding to the row of the at least one memory bank being added to the command scheduler, make a third determination of whether the at least one memory bank is active, wherein:
 the third determination is made immediately after the oldest row command corresponding to the row of the at least one memory bank is added to the command scheduler with no scheduling actions occurring between the oldest row command corresponding to the row of the at least one memory bank being added to the command scheduler and the third determination being made; and 
 a precharge command is added to the command scheduler in response to determining the at least one memory bank is active, determining the at least one memory bank does not have a row command corresponding to the row of the at least one memory bank, and determining either a close page mode is enabled or an open row timer has expired on the row of the at least one memory bank; 
 
 in response to the precharge command being added to the command scheduler, determine whether any commands in the command scheduler are executable; and 
 execute a command in the command scheduler based on a priority of commands included in the command scheduler in response to determining the at least one memory bank is active, the row of the at least one memory bank does not have a corresponding row command, either the close page mode is enabled or the open row timer has expired, and the command is executable. 
 
 
     
     
       2. The system of  claim 1 , wherein the processing device is to add the activate command, the oldest row command, and the precharge command to a command list and a command queue after the commands are added to the command scheduler. 
     
     
       3. The system of  claim 2 , wherein the command queue is sorted by an age of row commands included in the command queue. 
     
     
       4. The system of  claim 2 , wherein the processing device is to dequeue the command from the command queue after the command has been executed. 
     
     
       5. The system of  claim 2 , wherein the processing device is to remove the command from the command list after the command has been executed. 
     
     
       6. The system of  claim 1 , wherein the processing device is to determine an age of the row command based on a column command that will execute after the row command is executed. 
     
     
       7. The system of  claim 1 , wherein the command scheduler is a first ready first come first serve (FR-FCFS) command scheduler. 
     
     
       8. A method, comprising:
 making a first determination of whether at least one memory bank of a plurality of memory banks is active, wherein an activate command for a row of the at least one memory bank accessed by an oldest command for the at least one memory bank is added to a command scheduler in response to determining the at least one memory bank is not active; 
 in response to the activate command being added to the command scheduler, making a second determination of whether the at least one memory bank is active; wherein the second determination is made immediately after the activate command is added to the command scheduler with no scheduling actions occurring between the activate command being added to the command scheduler and the second determination being made; 
 in response to the second determination of whether the at least one memory bank is active coming to a determination that the at least one memory bank is active, determining whether the row of the at least one memory bank has a corresponding row command, wherein an oldest row command corresponding to the row of the at least one memory bank is added to the command scheduler in response to determining the at least one memory bank is active and determining there is a row command corresponding to the row of the at least one memory bank; 
 in response to the oldest row command corresponding to the row of the at least one memory bank being added to the command scheduler, making a third determination of whether the at least one memory bank is active, wherein:
 the third determination is made immediately after the oldest row command corresponding to the row of the at least one memory bank is added to the command scheduler with no scheduling actions occurring between the oldest row command corresponding to the row of the at least one memory bank being added to the command scheduler and the third determination being made; and 
 a precharge command for the at least one memory bank is added to the command scheduler in response to determining the at least one memory bank is active, determining the at least one memory bank does not have a row command corresponding to the row of the at least one memory bank, and determining either a close page mode is enabled or an open row timer has expired on the row of the at least one memory bank; and 
 
 executing a command in the command scheduler based on a priority of commands included in the command scheduler in response to determining the at least one memory bank is active, the row of the at least one memory bank does not have a corresponding row command, either the close page mode is enabled or the open row timer has expired, and the command is executable. 
 
     
     
       9. The method of  claim 8 , further comprising forming a scheduling candidate list in the command scheduler, wherein the scheduling candidate list comprises commands added to the command scheduler. 
     
     
       10. The method of  claim 9 , further comprising:
 prioritizing execution of an oldest column command in the scheduling candidate list over execution of another column command in the scheduling candidate list; 
 prioritizing execution of a column command in the scheduling candidate list over execution of the activate command in the scheduling candidate list; and 
 prioritizing execution of the activate command in the scheduling candidate list over execution of the precharge command in the scheduling candidate list. 
 
     
     
       11. The method of  claim 8 , further comprising:
 adding a column command to a command list after the command scheduler receives the column command; and 
 adding the row command to a command queue after the command scheduler receives the row command. 
 
     
     
       12. The method of  claim 11 , wherein the oldest row command corresponding to the row of the at least one memory bank is determined by determining which row command is a first row command in the command list. 
     
     
       13. The method of  claim 11 , wherein the oldest command corresponding to the row in the at least one memory bank is determined based on a time stamp indicating which command entered the command queue first. 
     
     
       14. The method of  claim 8 , wherein the activate command for the row of the at least one memory bank that is added to the command scheduler is an activate command for the row of the at least one memory bank accessed by an oldest command for the at least one memory bank. 
     
     
       15. A non-transitory computer-readable storage medium comprising instructions that, when executed by a processing device, cause the processing device to:
 make a first determination of whether at least one memory bank of a plurality of memory banks is active; 
 in response to the first determination determining that the at least one memory of the plurality of memory banks is not active, determine whether the at least one memory bank has a corresponding read command, wherein:
 a first activate command for a row of the at least one memory bank that is accessed by an oldest write command is added to a command scheduler in response to determining that the at least one memory bank does not have the corresponding read command, as well as determining the at least one memory bank is not active; and 
 a second activate command for the row of the at least one memory bank that is accessed by an oldest read command is added to the command scheduler in response to determining that the at least one memory bank has the corresponding read command, as well as determining the at least one memory bank is not active; 
 
 in response to either the first activate command or the second activate command being added to the command scheduler, make a second determination of whether the at least one memory bank is active, wherein the second determination is made immediately after either the first activate command or the second activate command is added to the command scheduler with no scheduling actions occurring between either the first activate command or the second activate command being added to the command scheduler and the second determination being made; 
 in response to the second determination of whether the at least one memory bank is active making a determination that the at least one memory bank is active, determine whether a row of the at least one memory bank has a corresponding row command, wherein the corresponding row command is the first activate command, the second activate command, or a precharge command; 
 in response to determining the at least one active memory bank has the corresponding row command, determine whether the at least one active memory bank has a corresponding read command, wherein:
 the oldest row command for the row of the at least one active memory bank is added to the command scheduler in response to determining the at least one active memory bank does not have the corresponding read command; and 
 a determination is made whether the oldest read command for the row of the at least one active memory bank corresponds to an active row of the at least one active memory bank in response to determining the at least one active memory bank has the corresponding read command, wherein:
 the oldest row command for the row of the at least one active memory bank is added to the command scheduler in response to determining the oldest read command corresponds to the active row of the at least one active memory bank; and 
 a first precharge command is added to the command scheduler in response to determining the oldest read command does not correspond to the active row of the at least one active memory bank; 
 
 
 in response to either the oldest row command for the row of the at least one active memory bank being added to the command scheduler or the first precharge command being added to the command scheduler, make a third determination of whether the memory bank is active, wherein the third determination is made immediately after either the oldest row command for the row of the at least one active memory bank or the first precharge command is added to the command scheduler with no scheduling actions occurring between the oldest row command for the at least one memory bank or the first precharge command being added to the command scheduler and the third determination being made; 
 in response to the third determination of whether the at least one memory bank is active coming to the determination that the at least one memory bank is active and the row of the at least one active memory bank does not have a row command, determine whether either a close page mode is enabled on the row of the at least one active memory bank or an open row timer has expired on the row of the at least one active memory bank, wherein a second precharge command is added to the command scheduler in response to determining either the close page mode is enabled on the row of the at least one active memory bank or the open row timer has expired on the row of the at least one active memory bank; 
 in response to the second precharge command being added to the command scheduler, determine whether any commands in the command scheduler can be executed; and 
 in response to determining the command scheduler includes at least one executable row command, execute the row command based on a priority of commands. 
 
     
     
       16. The non-transitory computer-readable storage medium of  claim 15 , wherein a read command is prioritized for execution over a write command in the priority of commands. 
     
     
       17. The non-transitory computer-readable storage medium of  claim 15 , wherein:
 a high priority column command is prioritized for execution over a high priority activate command in the priority of commands; 
 a high priority activate command is prioritized for execution over a low priority write column command in the priority of commands; 
 a low priority write column command is prioritized for execution over a low priority write activate command in the priority of commands; and 
 a low priority write activate command is prioritized for execution over the precharge command in the priority of commands. 
 
     
     
       18. The non-transitory computer-readable storage medium of  claim 15 , wherein commands are prioritized in the priority of commands based on a quantity of accesses to corresponding memory banks.

Cited by (0)

No later patents cite this yet.

References (0)

No backward citations on record.