IP Library Granted Patent US 12,379,850
Granted Patent B2
US 12,379,850 · App. 18/361,159 · Granted Aug 5, 2025

Memory controller with command reordering

Inventor: Timothy D. Anderson (University Park, TX)
Assignee: TEXAS INSTRUMENTS INCORPORATED
G06F3/0613G06F3/0659G06F3/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 12,379,850
App. No.
18/361,159
Granted
Aug 5, 2025
Kind
B2
Abstract

A system for handling requests that includes a set of memory banks coupled to a memory controller which comprises a set of read queues, including a read queue currently designated as the priority read queue. The memory controller loads read requests from an associated processor into the set of read queues. To process the read requests, the memory controller is configured to schedule the read requests of the priority read queue based on an availability of the associated memory bank, and if not in the priority read queue, also based on whether the read requests conflict with a recently scheduled read request from the priority read queue. Upon an execution of a read request from the priority read queue, the memory controller designates a different one of the set of read queues as the priority read queue, if the read request was at a front of the priority read queue.

Claims (42)

1. A method comprising:

storing a set of read requests into a set of read queues, wherein the set of read queues include a first read queue currently designated as a priority read queue;

for a first read request of the set of read requests: determining whether to schedule the first read request based on an availability of an associated memory bank and, if the first read request is in a queue of the set of read queues that is not the priority read queue, also based on whether the first read request conflicts with a second read request from the priority read queue; and

based on executing the second read request of the priority read queue, determining whether to designate a different read queue of the set of read queues as the priority read queue based on whether the second read request was at a front of the priority read queue.

2. The method of claim 1 further comprising, upon determining that the associated memory bank is available, and that the first read request is not in the priority read queue and does not conflict with the second read request, then scheduling the first read request to be executed.

3. The method of claim 1 further comprising, upon determining that the associated memory bank is available, and that the first read request is in the priority read queue, then scheduling the first read request to be executed.

4. The method of claim 1 wherein determining whether the associated memory bank is available is based on whether more than one cycle has occurred since a most recent access of the associated memory bank.

5. The method of claim 1 wherein the first read request conflicts with the second read request when the associated memory bank for the first read request is the same as a memory bank associated with the recently scheduled read request.

6. The method of claim 1 further comprising, if the associated memory bank is not available, refraining from scheduling the first read request and moving to a next read request in the queue, regardless of whether the queue is the priority read queue.

7. The method of claim 1 further comprising, upon scheduling the first read request to be executed, moving to a next read request in a different one of the set of read queues, regardless of whether the queue is the priority read queue.

8. The method of claim 1 further comprising:

loading write requests into multiple write queues; and

processing the write requests, including by: for each write request, dequeuing the write request to a write node coupled to an associated memory bank and scheduling the write request to be executed based on an availability of the associated memory bank.

9. The method of claim 8 wherein scheduling the write request to be executed based on the availability of the associated memory bank comprises:

upon determining that the associated memory bank is not available and the write node is not full, refraining from scheduling the write request and moving to a next write request in a different write node; and

upon determining that the associated memory bank is not available and the write node is full, prioritizing the write request over read requests directed to the associated memory bank; and

upon determining that the associated memory bank is available, scheduling the write request to be executed.

10. A memory controller comprising:

a set of read queues, wherein the set of read queues include a first read queue currently designated as a priority read queue; and

control circuitry coupled to the set of read queues configured to:

load read requests into the set of read queues;

for at least a read request of the read requests: schedule the read request to be executed based on an availability of an associated memory bank and, if the read request is in a queue that is not the priority read queue, also based on whether the read request conflicts with a recently scheduled read request from the priority read queue; and

upon an execution of the recently scheduled read request of the priority read queue, designate a different read queue of the set of read queues as the priority read queue if the recently scheduled read request was at a front of the priority read queue.

11. The memory controller of claim 10 wherein, upon a determination that the associated memory bank is available, and that the read request is not in the priority read queue and does not conflict with the recently scheduled read request, the control circuitry schedules the read request to be executed.

12. The memory controller of claim 10 wherein, upon a determination that the associated memory bank is available, and that the read request is in the priority read queue, then the control circuitry schedules the read request to be executed.

13. The memory controller of claim 10 wherein for the associated memory bank to be available, more than one cycle of requests must have occurred since a most recent access of the associated memory bank.

14. The memory controller of claim 10 wherein the read request conflicts with the recently scheduled read request when the associated memory bank for the read request is the same as a memory bank associated with the recently scheduled read request.

15. The memory controller of claim 10 further comprising, upon a determination that the associated memory bank is not available, the control circuitry refrains from scheduling the read request and moves to a next read request in the queue, regardless of whether the queue is the priority read queue.

16. The memory controller of claim 10 wherein, upon scheduling the read request to be executed, the control circuitry moves to a next read request in a different one of the set of read queues, regardless of whether the queue is the priority read queue.

17. A computing apparatus comprising:

a set of memory banks;

one or more processors coupled to the set of memory banks; and

a memory controller coupled to the set of memory banks and the one or more processors, wherein the memory controller comprises a set of read queues, and wherein the memory controller is configured to:

load read requests from the one or more processors into the set of read queues, wherein the set of read queues include a read queue currently designated as a priority read queue;

for at least a read request of the read requests: schedule the read request to be executed based on an availability of an associated memory bank and, if the read request is in a queue that is not the priority read queue, also based on whether the read request conflicts with a recently scheduled read request from the priority read queue; and

upon an execution of the recently scheduled read request of the priority read queue, designate a different read queue of the set of read queues as the priority read queue if the recently scheduled read request was at a front of the priority read queue.

18. The computing apparatus of claim 17 wherein the memory controller is configured to:

upon a determination that the associated memory bank is available, and that the read request is not in the priority read queue and does not conflict with the recently scheduled read request, then schedule the read request to be executed and move to a next request in the priority read queue;

upon a determination that the associated memory bank is available, and that the read request is in the priority read queue, then schedule the read request to be executed and move to a next request in a different one of the set of read queues; and

upon a determination that the associated memory bank is not available, refrain from scheduling the read request and move to a next read request in the queue, regardless of whether the queue is the priority read queue.

19. The computing apparatus of claim 17 wherein for the associated memory bank to be available, more than one cycle of requests must have occurred since a most recent access of the associated memory bank.

20. The computing apparatus of claim 17 wherein the read request conflicts with the recently scheduled read request when the associated memory bank for the read request is the same as a memory bank associated with the recently scheduled read request.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 28, 2023
From: ANDERSON, TIMOTHY D.
To: TEXAS INSTRUMENTS INCORPORATED
Reel/Frame 064419/0704 →
Continuity (2)
Provisional Application 63393280 · Jul 29, 2022
Related Publication 20240036736A1 · Feb 1, 2024
References Cited (10)
US 10241941B2 · Fader et al. · 2019 [cited by applicant]
US 20050021921A1 · Blackmon · 2005 [cited by examiner]
US 20180165229A1 · Chhabra · 2018 [cited by examiner]
US 20180329839A1 · Durbhakula · 2018 [cited by applicant]
US 20200065028A1 · Keil et al. · 2020 [cited by applicant]
KR 101154708B1 · 2012 [cited by applicant]
KR 101182018B1 · 2012 [cited by applicant]
International Search Report in corresponding PCT Patent Application No. PCT/2023/071305, mailed Nov. 13, 2023 (3 pages). [cited by applicant]
Machine Translation for 101154708KR. [cited by applicant]
Machine Translation for 101182018KR. [cited by applicant]