A memory controller includes a command queue, a memory interface queue, at least one storage queue, and a replay control circuit. The command queue has a first input for receiving memory access commands. The memory interface queue receives commands selected from the command queue and couples to a heterogeneous memory channel which is coupled to at least one non-volatile storage class memory (SCM) module. The at least one storage queue stores memory access commands that are placed in the memory interface queue. The replay control circuit detects that an error has occurred requiring a recovery sequence, and in response to the error, initiates the recovery sequence. In the recovery sequence, the replay control circuit transmits selected memory access commands from the at least one storage queue by grouping non-volatile read commands together separately from all pending volatile reads, volatile writes, and non-volatile writes.
Legal claims defining the scope of protection, as filed with the USPTO.
2. The memory controller of claim 1, wherein the replay control circuit further transmits the selected memory access commands from the at least one storage queue by delaying transmission of all non-volatile reads until all pending volatile reads, volatile writes, and non-volatile writes have been transmitted.
3. The memory controller of claim 1, wherein the at least one storage queue includes a non-volatile command queue for storing non-volatile reads that are selected for transmission, and a replay queue for storing other selected memory access commands that are selected for transmission.
4. The memory controller of claim 3, wherein the recovery sequence includes skipping SEND commands stored in the replay queue that are associated with non-volatile reads, and generating new SEND commands in response to read ready (RD_RDY) responses received from the at least one SCM module during the recovery sequence.
5. The memory controller of claim 1, wherein the recovery sequence includes, before transmitting the selected memory access commands, resetting non-volatile reads for all read identifiers (RIDs) in a buffer for the heterogeneous memory channel.
6. The memory controller of claim 1, wherein the recovery sequence includes requesting and obtaining write credits for buffers on the at least one SCM module.
7. The memory controller of claim 1, wherein the error condition is one of a command parity error, a write command error correction code (ECC) error associated with the at least one SCM module, and a read command ECC error associated with the at least one SCM module.
9. The method of claim 8, further comprising transmitting the selected memory access commands from the at least one storage queue by delaying the transmission of all non-volatile reads until all pending volatile reads, volatile writes, and non-volatile writes have been transmitted.
10. The method of claim 8, wherein the at least one storage queue includes a non-volatile command queue for storing non-volatile reads that are selected for transmission, and a replay queue for storing selected memory access commands that are selected for transmission.
11. The method of claim 10, wherein the recovery sequence includes skipping SEND commands stored in the replay queue that are associated with non-volatile reads, and generating new SEND commands in response to read ready responses received from the at least one SCM module during the recovery sequence.
12. The method of claim 8, wherein the recovery sequence includes, before transmitting the selected memory access commands, resetting non-volatile reads for all read identifiers in a buffer for the heterogeneous memory channel.
13. The method of claim 8, wherein the recovery sequence includes requesting and obtaining write credits for buffers on the at least one SCM module.
14. The method of claim 8, wherein the error condition is one of a command parity error, a write command error correction code (ECC) error associated with the at least one SCM module, and a read command ECC error associated with the at least one SCM module.
16. The data processing system of claim 15, wherein the replay control circuit further transmits the selected memory access commands from the at least one storage queue by delaying transmission of all non-volatile reads until all pending volatile reads, volatile writes, and non-volatile writes have been transmitted.
17. The data processing system of claim 15, wherein the at least one storage queue includes a non-volatile command queue for storing non-volatile reads that are selected for transmission, and a replay queue for storing selected memory access commands that are selected for transmission.
18. The data processing system of claim 17, wherein the recovery sequence includes skipping SEND commands stored in the replay queue that are associated with non-volatile reads, and generating new SEND commands in response to read ready responses received from the at least one SCM module during the recovery sequence.
19. The memory controller of claim 15, wherein the recovery sequence includes, before transmitting the selected memory access commands, resetting non-volatile reads for all read identifiers in a buffer for the heterogeneous memory channel.
20. The data processing system of claim 15, wherein the error condition is one of a command parity error, a write command error correction code (ECC) error associated with the at least one SCM module, and a read command ECC error associated with the at least one SCM module.
Cooperative Patent Classification codes for this invention. Click any code to explore related patents in that topic.
December 19, 2022
November 12, 2024
Browse 5M+ US patents with plain-English claim translations and AI-generated analysis.