Queue based memory controller
First Claim
1. An apparatus to execute memory requests to a computer memory, said apparatus comprising:
- a request decoder operative to receive a memory request and decode said memory request into at least one primitive memory operation, wherein the at least one primitive memory operation comprises one or more of a pre-charge operation and an activation operation;
at least one operation queue coupled to said request decoder operative to store said at least one primitive memory operation for transmission to said computer memory;
a multiplexor coupled to said at least one operation queue and said computer memory and operative to dequeue said at least one primitive memory operation from said at least one operation queue and transmit said at least one primitive memory operation to said computer memory to initiate said memory request; and
at least one control queue coupled to said at least one operation queue and said computer memory and operative to complete said memory request.
0 Assignments
0 Petitions
Accused Products
Abstract
A memory controller for a computer memory which decodes memory requests into individual primitive memory operations which are then queued into separate operation queues. The operation queues independently issue their queued primitive memory operations to the memory in order to initiate the memory request. The operation queues monitor and adhere to timing and ordering dependencies between the primitive memory operations that are queued and those that have already been transmitted to the memory. Once a primitive memory operation is transmitted to the memory, it is dequeued from its respective operation queue. A control queue monitors the progress of the primitive memory operations transmitted to the memory, completes the initiated memory request and provides timing and ordering dependency data to the operation queues.
31 Citations
29 Claims
-
1. An apparatus to execute memory requests to a computer memory, said apparatus comprising:
-
a request decoder operative to receive a memory request and decode said memory request into at least one primitive memory operation, wherein the at least one primitive memory operation comprises one or more of a pre-charge operation and an activation operation;
at least one operation queue coupled to said request decoder operative to store said at least one primitive memory operation for transmission to said computer memory;
a multiplexor coupled to said at least one operation queue and said computer memory and operative to dequeue said at least one primitive memory operation from said at least one operation queue and transmit said at least one primitive memory operation to said computer memory to initiate said memory request; and
at least one control queue coupled to said at least one operation queue and said computer memory and operative to complete said memory request. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12)
-
-
13. An apparatus to execute memory requests to a computer memory, said apparatus comprising:
-
a request decoder operative to receive a memory request and decode said memory request into at least one primitive memory operation, wherein the at least one primitive memory operation comprises one or more of a pre-charge operation, an activation operation and a read/write operation;
at least one operation queue coupled to said request decoder operative to store said at least one primitive memory operation for transmission to said computer memory;
a multiplexor coupled to said at least one operation queue and said computer memory and operative to dequeue said at least one primitive memory operation from said at least one operation queue and transmit said at least one primitive memory operation to said computer memory to initiate said memory request; and
at least one control queue coupled to said at least one operation queue and said computer memory and operative to complete said memory request;
wherein said at least one primitive memory operation comprises activate, read/write and pre-charge;
wherein said at least one operation queue comprises an activate queue, a read/write queue and a pre-charge queue;
wherein said at least one control queue comprises a read control queue and a write control queue; and
wherein said activate queue has a queue depth of 1, said read/write queue has a queue depth of 3 and said pre-charge queue has a queue depth of 1.
-
-
14. An apparatus to execute memory requests to a computer memory, said apparatus comprising:
-
a request decoder operative to receive a memory request and decode said memory request into at least one primitive memory operation, wherein the at least one primitive memory operation comprises one or more of a pre-charge operation, an activation operation and a read/write operation;
at least one operation queue coupled to said request decoder operative to store said at least one primitive memory operation for transmission to said computer memory;
a multiplexor coupled to said at least one operation queue and said computer memory and operative to dequeue said at least one primitive memory operation from said at least one operation queue and transmit said at least one primitive memory operation to said computer memory to initiate said memory request; and
at least one control queue coupled to said at least one operation queue and said computer memory and operative to complete said memory request;
wherein said at least one primitive memory operation comprises activate, read/write and pre-charge;
wherein said at least one operation queue comprises an activate queue, a read/write queue and a pre-charge queue;
wherein said at least one control queue comprises a read control queue and a write control queue; and
wherein said read control queue has a queue depth of twelve and said write control queue has a queue depth of eight.
-
-
15. A method for executing memory requests to a computer memory comprising the steps of:
-
accepting a memory request;
decoding said memory request into at least one primitive memory operation, wherein the at least one primitive memory operation comprises one or more of a pre-charge operation and an activation operation;
queuing said at least one primitive memory operation into at least one operation queue;
selecting said at least one primitive memory operation from said at least one operation queue for transmission to said computer memory;
dequeuing said at least one primitive memory operation from said at least one operation queue;
transmitting said at least one primitive memory operation to said computer memory to initiate said memory request;
queuing control data into at least one control queue;
completing said memory request to said computer memory; and
dequeuing said control data as said memory request completes. - View Dependent Claims (16, 17, 18)
-
-
19. A method for executing memory requests to a computer memory comprising the steps of:
-
accepting a memory request;
decoding said memory request into at least one primitive memory operation, wherein the at least one primitive memory operation comprises one or more of a pre-charge operation, an activation operation and a read/write operation;
queuing said at least one primitive memory operation into at least one operation queue;
selecting said at least one primitive memory operation from said at least one operation queue for transmission to said computer memory;
dequeuing said at least one primitive memory operation from said at least one operation queue;
transmitting said at least one primitive memory operation to said computer memory to initiate said memory request;
queuing control data into at least one control queue;
completing said memory request to said computer memory; and
dequeuing said control data as said memory request completes;
wherein said at least one primitive memory operation comprises pre-charge, activate and read/write, and further wherein said at least one operation queue comprises a pre-charge queue, an activate queue and a read/write queue; and
wherein said pre-charge queue comprises one queue entry, said activate queue comprises one queue entry and said read/write queue comprises three queue entries. - View Dependent Claims (20)
detecting that at least one queue entry of said at least one operation queue is available;
wherein said step of queuing said at least one primitive memory operation further comprises the step of checking for an available queue entry.
-
-
21. A queue based memory controller for receiving a memory request and completing said memory request to a computer memory, said controller comprising:
-
at least one operation queue comprising at least one queue entry to hold at least one primitive memory operation;
a request decoder operative to receive said memory request and decode said memory request into said at least one primitive memory operation, wherein the at least one primitive memory operation comprises one or more of a pre-charge operation and an activation operation, and further operative to store said at least one primitive memory operation into said at least one operation queue;
a multiplexor coupled to said at least one operation queue and said computer memory and operative to select said at least one primitive memory operation from said at least one operation queue for transmission to said computer memory to initiate said memory request and further operative to dequeue said selected at least one primitive memory operation; and
at least one control queue coupled to said at least one operation queue and said computer memory and operative to store control data, said control data operative to control completion of said memory request in said memory. - View Dependent Claims (22, 23, 24, 25, 26, 27, 28)
-
-
29. A queue based memory controller for receiving a memory request and completing said memory request to a computer memory, said controller comprising:
-
at least one operation queue comprising at least one queue entry to hold at least one primitive memory operation;
a request decoder operative to receive said memory request and decode said memory request into said at least one primitive memory operation, wherein the at least one primitive memory operation comprises one or more of a pre-charge operation, an activation operation and a read/write operation, and further operative to store said at least one primitive memory operation into said at least one operation queue;
a multiplexor coupled to said at least one operation queue and said computer memory and operative to select said at least one primitive memory operation from said at least one operation queue for transmission to said computer memory to initiate said memory request and further operative to dequeue said selected at least one primitive memory operation; and
at least one control queue coupled to said at least one operation queue and said computer memory and operative to store control data, said control data operative to control completion of said memory request in said memory;
wherein said at least one primitive memory operation comprises pre-charge, activate and read/write;
wherein said at least one queue comprises a pre-charge queue, and activate queue and a read/write queue; and
wherein said pre-charge queue has a queue depth of 1, said activate queue has a queue depth of 1 and said read/write queue has a queue depth of 3.
-
Specification