Nova Patents
EP1540485A2

Out of order dram sequencer

Abstract

Memory access requests are successively received in a memory request queue of a memory controller. Any conflicts or potential delays between temporally proximate requests that would occur if the memory access requests were to be executed in the received order are detected, and the received order of the memory access requests is rearranged to avoid or minimize the conflicts or delays and to optimize the flow of data to and from the memory data bus. The memory access requests are executed in the reordered sequence, while the originally received order of the requests is tracked. After execution, data read from the memory device by the execution of the read-type memory access requests are transferred to the respective requestors in the order in which the read requests were originally received.

Term

Term ended

Projected expiry passed 14 May 2023, 3.4 years ago.

  1. Priority
  2. Filed
  3. Published
  4. Projected expiry
  5. Today

61 claims: 9 independent, 52 dependent

  1. 1
    Claims of equivalent WO 03098392 A2 CLAIMS What is claimed as new and desired to be protected by Letters Patent of the United States is:1. A memory controller comprising: an input queue for receiving a plurality of memory access requests in an originally received order from at least one requestor;a sequence matrix into which the plurality of memory access requests can be arranged, wherein the sequence matrix stores the plurality of memory access requests in a sequenced order;a sequencing unit for arranging a timing sequence of a plurality of memory access requests in the sequence matrix;a conflict detector for detecting whether a conflict or delay would occur among a sequence of memory access requests arranged in the sequence matrix by the sequencing unit;a execution queue in which the memory access requests are arranged for execution in an order which may differ from the sequenced order to avoid or mitigate conflicts or delays detected in the detector;a read return queue for keeping track of the original received order of the memory access requests after execution of the memory access requests from the execution queue, and for returning requested data to the at least one requestor in the originally received order of the memory access requests;and a returned data buffer for holding requested data read from a memory until the data is to be returned to the requestor of the associated access request.
  2. 8
    A memory controller comprising:a sequencing unit for receiving a plurality of memory access request signals from a plurality of requestors, the sequencing unit receiving the memory access request signals in a sequence corresponding to an order in which the requests were received from the requestors, wherein the memory access request signals comprise read requests and/or write requests;a rearranging unit for rearranging the sequence of the memory access request signals based on detected memory access conflicts or delays between temporally proximate requests in the sequence, whereby execution of the memory access requests is to be performed in the rearranged sequence;an execution unit for executing the memory access requests in the rearranged sequence;and a reordering unit for reordering executed read requests into the order in which the requests were originally received, whereby the data obtained by the executed read requests are to be returned to the requestors in the reordered sequence.
  3. 14
    A memory controller comprising:a sequencing unit for receiving a plurality of memory access request signals from a plurality of requestors, the sequencing unit receiving the memory access request signals in a sequence corresponding to an order in which the requests were received from the requestors, wherein the memory access request signals comprise read requests and/or write requests;a rearranging unit for rearranging the sequence of the memory access request signals to maximize utilization of a memory data bus used to transfer data to or from a memory structure by minimizing idle time of the memory data bus, whereby execution of the memory access requests is to be performed in the rearranged sequence;an execution unit for executing the memory access requests in the rearranged sequence;and a reordering unit for reordering executed read requests into the order in which the requests were originally received, whereby the data obtained by the executed read requests are to be returned to the requestors in the reordered sequence.
  4. 15
    A memory controller comprising:an input circuit for storing in arrival order a plurality of memory access requests;a memory access request rearranging circuit for rearranging the stored memory access requests into a memory access request execution order, said rearranging circuit rearranging the order of the stored memory access requests into the execution order based on detection of at least one of a memory access conflict and a memory access delay present in the order of the stored memory access requests;and a sending circuit for outputting memory access requests in the execution order.
  5. 27
    A method for controlling memory access operations, comprising:receiving a plurality of memory access requests in a received sequence;detecting at least one of memory access conflicts and delays among temporally proximate requests in the sequence;rearranging the sequence of requests based on the detection result;and executing the memory access requests in the rearranged order.
  6. 56
    A method for controlling memory access operations, comprising:receiving a plurality of memory access requests including read requests and write requests in a received order;rearranging the order of the memory access requests so as to maximize utilization of a memory data bus;executing the memory access requests in the rearranged order.
  7. 58
    A method for controlling memory access operations, comprising:receiving a plurality of memory access requests including read requests and write requests in a received order;rearranging the order of the memory access requests so as to minimize memory access conflicts and delays;performing the memory access requests in the rearranged order.
  8. 60
    A processor system comprising:a processor;at least one memory device for exchanging data with said processor;and a memory controller for managing memory access requests from the processor to the at least one memory device, the memory controller comprising: a sequencing unit for receiving a plurality of memory access request signals from a plurality of requestors, the sequencing unit receiving the memory access request signals in a sequence corresponding to an order in which the requests were received from the requestors, wherein the memory access request signals comprise read requests and/or write requests;a rearranging unit for rearranging the sequence of the memory access request signals based on detected memory access conflicts or delays between temporally proximate requests in the sequence, whereby execution of the memory access requests is to be performed in the rearranged sequence;an execution unit for executing the memory access requests in the rearranged sequence;and a reordering unit for reordering executed read requests into the order in which the requests were originally received, whereby the data obtained by the executed read requests are to be returned to the requestors in the reordered sequence.
  9. 61
    A processor system comprising:a processor;at least one memory device for exchanging data with said processor;and a memory controller for managing memory access requests from the processor to the at least one memory device, the memory controller comprising: a sequencing unit for receiving a plurality of memory access request signals from a plurality of requestors, the sequencing unit receiving the memory access request signals in a sequence corresponding to an order in which the requests were received from the requestors, wherein the memory access request signals comprise read requests and/or write requests;a rearranging unit for rearranging the sequence of the memory access request signals to maximize utilization of a memory data bus used to transfer data to or from a memory structure by minimizing idle time of the memory data bus, whereby execution of the memory access requests is to be performed in the rearranged sequence;an execution unit for executing the memory access requests in the rearranged sequence;and a reordering unit for reordering executed read requests into the order in which the requests were originally received, whereby the data obtained by the executed read requests are to be returned to the requestors in the reordered sequence.