The present invention generally relates to memory controllers operating in a system containing a variable system clock. The memory controller may exchange data with a processor operating at a variable processor clock frequency. However the memory controller may perform memory accesses at a constant memory clock frequency. Asynchronous buffers may be provided to transfer data across the variable and constant clock domains. To prevent read buffer overflow while switching to a lower processor clock frequency, the memory controller may quiesce the memory sequencers and pace read data from the sequencers at a slower rate. To prevent write data under runs, the memory controller's data flow logic may perform handshaking to ensure that write data is completely received in the buffer before performing a write access.
Legal claims defining the scope of protection, as filed with the USPTO.
1. A memory controller, comprising: (i) an asynchronous read buffer configured to receive read data from a memory sequencer driven by a constant memory clock and send the read data to a processor driven by a variable processor clock; (ii) an asynchronous write buffer configured to receive write data from the processor driven by the processor clock and send the write data to the memory sequencer driven by the memory clock; and (iii) data flow logic configured to, in response to receiving a slow mode request from a clock controller, stall processing of read and write commands until all pending read and write commands are completed, determine a rate for issuing read commands, process read commands at the rate after the pending read and write commands are completed, and transfer write data from the asynchronous write buffer to the memory sequencers only if the write data is available in the asynchronous write buffer.
2. The memory controller of claim 1 , wherein the data flow logic is further configured to send an acknowledge signal to the clock controller after the pending read and write commands are completed to change the frequency of the processor clock.
3. The memory controller of claim 1 , wherein the data flow logic is configured to process read commands at the determined rate by waiting for a predetermined number of clock cycles before issuing a read command for processing.
4. The memory controller of claim 1 , wherein the data flow logic is configured to determine whether write data is available in the asynchronous write buffer by determining whether a moved signal is asserted, wherein the moved signal indicates that the write data is being transferred to the asynchronous write buffer driven by the processor clock.
5. The memory controller of claim 4 , wherein the data flow logic is configured to transfer write data from the write buffer to memory driven by the memory clock by asserting a launch signal, wherein the launch signal is asserted if the moved signal is asserted.
6. A system, comprising: memory driven by a constant memory clock; a processor driven by a variable processor clock, configured to issue read and write commands to the memory; a clock controller configured to issue a request for changing the frequency of the processor clock, and change the frequency of the processor clock; and a memory controller comprising: (i) an asynchronous read buffer configured to receive read data from a memory sequencer driven by the memory clock and send the read data to the processor driven by the processor clock; (ii) an asynchronous write buffer configured to receive write data from the processor driven by the processor clock and send the write data to the memory sequencer driven by the memory clock; and (iii) data flow logic configured to, in response to receiving a slow mode request from a clock controller, stall processing of read and write commands until all pending read and write commands are completed, determine a rate for issuing read commands, process read commands at the rate after the pending read commands are completed, and transfer write data from the asynchronous write buffer to the memory sequencers only if the write data is available in the asynchronous write buffer.
7. The system of claim 6 wherein the data flow logic is further configured to send an acknowledge signal to the clock controller after the pending read and write commands are completed to change the frequency of the processor clock.
8. The system of claim 6 , wherein the data flow logic is configured to process read commands at the determined rate by waiting for a predetermined number of clock cycles before issuing the read command for processing.
9. The system of claim 6 , wherein the data flow logic is configured to determine whether write data is available in the asynchronous write buffer by determining whether a moved signal is asserted, wherein the moved signal indicates that the write data has been transferred to the asynchronous write buffer driven by the processor clock.
10. The system of claim 9 , wherein the data flow logic is configured to transfer write data from the write buffer to memory driven by the memory clock by asserting a launch signal, wherein the launch signal is asserted if the moved signal has been asserted.
Cooperative Patent Classification codes for this invention. Click any code to explore related patents in that topic.
August 13, 2008
July 20, 2010
Browse 5M+ US patents with plain-English claim translations and AI-generated analysis.