IP Library Granted Patent US 11,144,240
Granted Patent B2
US 11,144,240 · App. 16/111,974 · Granted Oct 12, 2021

Memory sub-system for increasing bandwidth for command scheduling

Inventors: Patrick A. La Fratta (McKinney, TX); Robert Walker (Raleigh, NC)
Assignee: Micron Technology, Inc.
G06F3/0659G06F3/0611G06F3/0673
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 11,144,240
App. No.
16/111,974
Granted
Oct 12, 2021
Kind
B2
Abstract

Initialization is performed based on the commands received at the command queue. To perform initialization, a bank touch count list that includes a list of banks being accessed by the commands and a bank touch count for each of the banks in the list is updated. The bank touch count identifies the number of commands accessing each of the banks. The bank touch count list is updated by assigning a bank priority rank to each of the banks based on their bank touch count, respectively. Once initialized, the commands in the command queue are scheduled by inserting each of the commands into priority queues based on the bank touch count list.

Claims (143)

1. A system comprising:

a memory component and

a processing device, operatively coupled with the memory component, to perform operations comprising:

receiving a plurality of commands in a command queue;

performing initialization based on the commands, wherein performing initialization comprises:

updating a bank touch count list, wherein the bank touch count list comprises a list of plurality of banks being accessed by the commands and a plurality of bank touch counts associated with the banks in the list of banks, the plurality of bank touch counts each identify a number of commands accessing each of the banks,

wherein updating the bank touch count list comprises:

in response to determining that a target bank associated with one of the commands is not in the bank touch count list, inserting the target bank in the list of plurality of banks and increasing a target bank touch count associated with the target bank by one, the plurality of bank touch counts comprising the target bank touch count, and

assigning a bank priority rank to each of the banks based on the bank touch count for each of the banks; and

scheduling the commands in the command queue, wherein scheduling the commands comprises:

inserting each of the commands in the command queue into a plurality of priority queues based on the bank touch count list,

wherein the plurality of priority queues comprise:

a first highest priority queue and second highest priority queue for read commands and elevated commands,

a first plurality of bank priority queues being dedicated for read commands associated with read-modify-write (RMW) commands, and

a second plurality of bank priority queues for write commands and write commands associated with RMW commands,

wherein the first plurality of bank priority queues are higher priority than the second plurality of bank priority queues,

wherein the first highest priority queue and second highest priority queue being of a higher priority than the first plurality of bank priority queues.

2. The system of claim 1 , wherein to assign the hank priority rank to each of the banks, the processing device is further to perform operations comprising:

assigning a higher bank priority rank to banks having a higher hank touch count.

3. The system of claim 1 , wherein to schedule the commands in the command queue, the processing device is further to perform operations comprising:

for a first command in the commands,

when the first command is a read command or an elevated command,

determining an age of the first command based on an entrance time of the first command in the command queue,

when the age of the first command exceeds a first threshold,

selecting the first command and perform a command selection process;

when the age of the first command does not exceed the first threshold,

determining whether the age of the first command exceeds a second threshold,

when the age of the first command exceeds the second threshold,

inserting the first command in a first priority queue in response to the first command accessing an open row, wherein the first priority queue is a highest priority, and

inserting the first command in a second priority queue in response to the first command accessing a closed row, wherein the second priority queue is a second highest priority.

4. The system of claim 3 , wherein when the age of the first command does not exceed the second threshold, the processing device is further to perform operations comprising:

when the first command is the elevated command associated with a write command or a number of outstanding read commands is greater than a third threshold,

inserting the first command in the first priority queue in response to the first command accessing an open row, and

inserting the first command in the second priority queue in response to the first command accessing a closed row; and

when the first command is not the elevated command associated with a write command and the number of outstanding read commands is not greater than the third threshold,

marking the first, command as not issuable.

5. The system of claim 1 , wherein to schedule the commands in the command queue, the processing device is further to perform operations comprising:

for a first command in the commands,

when the first command is a read command associated with a read-modify-write command,

determining whether a sum of a buffer space required by the first command and a buffer space currently occupied by read-modify-write commands in the command queue is less than a fourth threshold,

when the sum is less than the fourth threshold,

obtaining the bank priority rank of the bank being accessed by the first command from the bank touch count list,

inserting the first, command in a third priority queue in response to the first command accessing an open row, wherein the third priority queue is associated with the bank priority rank, and

inserting the first command in a fourth priority queue in response to the first command accessing a closed row, wherein the fourth priority queue is associated with the bank priority rank and is one priority level lower than the third priority; and

when the sum is not less than the fourth threshold, marking the first command as not issuable.

6. The system of claim 1 , wherein to schedule the commands in the command queue, the processing device is further to perform operations comprising:

for a first command in the commands,

when the first command is a write command or a write command associated with a read-modify-write command,

obtaining the bank priority rank of the bank being accessed by the first command from the bank touch count list,

inserting the first command in a fifth priority queue in response to the first command accessing an open row, wherein the fifth priority queue is associated with the bank priority rank, and

inserting the first, command in a sixth priority queue in response to the first command accessing a closed row, wherein the sixth priority queue is associated with the bank priority rank and is one priority level lower than the fifth priority.

7. The system of claim 1 , wheat processing device is further to perform operations comprising:

performing a command selection process, wherein performing the command selection process comprises:

for a first command in the commands,

in response to the first command not being a column command, issuing the first command to the memory component,

in response to the first command being a column command,

decrementing the bank touch count associated with the bank accessed by the first command, and

issuing the first command to the memory component.

8. The system of claim 7 , wherein in response to the first command being a column command, the processing device is further to perform operations comprising:

decrementing a number of outstanding read commands in response to the first command being a read command, and

erasing an entrance time of the first command.

9. The system of claim 1 , wherein to perform initialization, the processing device is further to perform operations comprising:

recording an entrance time of each of the plurality of commands into the command queue, wherein the plurality of commands comprises a first command, and

incrementing a number of outstanding read commands for each of the plurality of commands that is determined to be a read command.

10. A method comprising:

receiving a plurality of commands in a command queue;

performing initialization based on the commands, wherein performing initialization comprises:

updating a bank touch count list, wherein the bank touch count list comprises a list of plurality of banks being accessed by the commands and a plurality of bank touch counts associated with the banks in the list of banks, the plurality of bank touch counts each identify a number of commands accessing each of the banks,

wherein updating the bank touch count list comprises:

in response to determining that a target bank associated with one of the commands is not in the bank touch count list, inserting the target bank in the list of plurality of banks and increasing a target bank touch count associated with the target bank by one, the plurality of bank touch counts comprising the target bank touch count, and

assigning a bank priority rank to each of the banks based on the bank touch count for each of the banks, wherein a higher bank priority rank is assigned to banks having a higher bank touch count; and

scheduling the commands in the command queue, wherein scheduling the commands comprises:

inserting each of the commands in the command queue into a plurality of priority queues based on the bank touch count list,

wherein the plurality of priority queues comprise:

a first highest priority queue and second highest priority queue for read commands and elevated commands,

a first plurality of bank priority queues being dedicated for read commands associated with read-modify-write (RMW) commands, and

a second plurality of bank priority queues for write commands and write commands associated with RMW commands,

wherein the first highest priority queue and second highest priority queue are higher priority than the first plurality of bank priority queues, and

wherein the first plurality of bank priority queues are higher priority than the second plurality of bank priority queues.

11. The method of claim 10 , wherein each bank in the list of banks is assigned a high priority queue and a low priority queue.

12. The method of claim 10 , wherein scheduling the commands in the command queue further comprises:

for a first command in the commands,

when the first command is a read command or an elevated command,

determining an age of the first command based on an entrance time of the first command in the command queue,

when the age of the first command exceeds a first threshold,

selecting the first command and performing a command selection process;

when the age of the first command does not exceed the first threshold,

determining whether the age of the first command exceeds a second threshold,

when the age of the first command exceeds the second threshold,

inserting the first command in a first priority queue in response to the first command accessing an open row, wherein the first priority queue is a highest priority, and

insert the first command in a second priority queue in response to the first command accessing a closed row, wherein the second priority queue is a second highest priority.

13. The method of claim 12 , further comprising:

when the age of the first command does not exceed the second threshold,

when the first command is the elevated command associated with a write command or a number of outstanding read commands is greater than a third threshold, inserting the first command in the first priority queue in response to the first command accessing an open row, and

inserting the first, command in the second priority queue in response to the first command accessing a closed row; and

when the first command is not the elevated command associated with a write command and when the number of outstanding read commands is not greater than the third threshold,

marking the first command as not issuable.

14. The method of claim 11 , wherein scheduling the commands in the command queue further comprising:

for a first command in the commands,

when the first command is the read command associated with the RMW command,

determining whether a sum of a buffer space required by the first command and a buffer space currently occupied by RMW commands in the command queue is less than a fourth threshold,

when the sum is less than the fourth threshold,

obtaining the bank priority rank of the bank being accessed by the first command from the bank touch count list,

inserting the first command in a third priority queue in response to the first command accessing an open row, wherein the third priority queue is associated with the bank priority rank and is the high priority queue assigned to the bank being accessed by the first command, and

inserting the first command in a fourth priority queue in response to the first command accessing a closed row, wherein the fourth priority queue is associated with the bank priority rank and is the low priority queue assigned to the bank being accessed by the first command; and

when the sum is not less than the fourth threshold, marking the first command as not issuable.

15. The method of claim 11 , wherein scheduling the commands in the command queue further comprising:

for a first command in the commands,

when the first command is the write command or the write command associated with the RMW command,

obtaining the bank priority rank of the bank being accessed by the first command from the bank touch count list,

inserting the first command in a fifth priority queue in response to the first command accessing an open row, wherein the fifth priority queue is associated with the bank priority rank and is the high priority queue assigned to the bank being accessed by the first command, and

inserting the first command in a sixth priority queue in response to the first command accessing a closed row, wherein the sixth priority queue is associated with the bank priority rank and is the low priority queue assigned to the bank being accessed by the first command.

16. The method of claim 11 , further comprising:

performing a command selection process, wherein performing the command selection process comprises:

for a first command in the commands,

in response to the first command not being a column command,

issuing the first command to a memory component,

in response to the first command being a column command,

decrementing the bank touch count associated with the bank accessed by the first command, and

issuing the first command to the memory component.

17. The method of claim 16 , further comprising:

in response to the first command being a column command,

decrementing a number of outstanding read commands in response to the first command being a read command, and

erasing an entrance time of the first command.

18. The method of claim 11 , wherein performing initialization further comprising:

recording an entrance time of each of the plurality of commands into the command queue, wherein the plurality of commands comprises a first command, and

incrementing a number of outstanding read commands for each of the plurality of commands that is determined to be a read command.

19. A non-transitory computer-readable storage medium comprising instructions that, when executed by a processing device, causes the processing device to perform operations comprising:

receiving a plurality of commands in a command queue;

performing initialization based on the commands, wherein performing initialization comprises:

updating a bank touch count list, wherein the bank touch count list comprises a list of plurality of banks being accessed by the commands and a plurality of bank touch counts associated with the banks in the list of banks, the plurality of bank touch counts each identify a number of commands accessing each of the banks,

wherein updating the bank touch count list comprises:

in response to determining that a target bank associated with one of the commands is not in the bank touch count list, inserting the target bank in the list of plurality of banks and increasing a target bank touch count associated with the target bank by one, the plurality of bank touch counts comprising the target bank touch count, and

assigning a bank priority rank to each of the banks based on the bank touch count for each of the banks; and

scheduling the commands in the command queue, wherein scheduling the commands comprises:

inserting each of the commands in the command queue into a plurality of priority queues based on the bank touch count list, wherein the plurality of priority queues comprise:

a first highest priority queue and second highest priority queue for read commands and elevated commands,

a first plurality of bank priority queues being dedicated for read commands associated with read-modify-write (RMW) commands, and

a second plurality of bank priority queues for write commands and write commands associated with RMW commands,

wherein the first highest priority queue and second highest priority queue are higher priority than the first plurality of bank priority queues, and

wherein the first plurality of bank priority queues are higher priority than the second plurality of bank priority queues.

20. The non-transitory computer-readable storage medium of claim 19 , wherein to assign the bank priority rank to each of the banks, the processing device is further to perform operations comprising:

assigning a higher bank priority rank to banks having a higher bank touch count.

Assignments (5)
RELEASE OF SECURITY INTEREST Recorded Nov 14, 2019
From: JPMORGAN CHASE BANK, N.A., AS COLLATERAL AGENT
To: MICRON TECHNOLOGY, INC.
Reel/Frame 051028/0835 →
RELEASE OF SECURITY INTEREST Recorded Oct 14, 2019
From: MORGAN STANLEY SENIOR FUNDING, INC., AS COLLATERAL AGENT
To: MICRON TECHNOLOGY, INC.
Reel/Frame 050719/0550 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 7, 2019
From: LA FRATTA, PATRICK A; WALKER, ROBERT
To: MICRON TECHNOLOGY, INC.
Reel/Frame 048532/0202 →
SUPPLEMENT NO. 1 TO PATENT SECURITY AGREEMENT Recorded Nov 13, 2018
From: MICRON TECHNOLOGY, INC.
To: JPMORGAN CHASE BANK, N.A.., AS COLLATERAL AGENT
Reel/Frame 047630/0756 →
SUPPLEMENT NO. 10 TO PATENT SECURITY AGREEMENT Recorded Nov 13, 2018
From: MICRON TECHNOLOGY, INC.
To: MORGAN STANLEY SENIOR FUNDING, INC., AS COLLATERAL AGENT
Reel/Frame 048102/0420 →
Continuity (1)
Related Publication 20200065027A1 · Feb 27, 2020