IP Library › Granted Patent US 10,127,074
Granted Patent B2
US 10,127,074 · App. 15/417,984 · Granted Nov 13, 2018

Transaction identification synchronization

Inventors: Xiaobing Lee (Santa Clara, CA); Feng Yang (Portland, OR); Shaojie Chen (Santa Clara, CA)
Assignee: Futurewei Technologies, Inc.
G06F9/467G06F11/1004G06F11/1076H03M13/09H03M13/2906H03M13/63
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 10,127,074
App. No.
15/417,984
Granted
Nov 13, 2018
Kind
B2
Abstract

Various embodiments include methods and apparatus structured to provide synchronization of a transaction identification between a host and a memory module using a parity check. A transaction identification can be generated at both the host and the memory module independently using incremental counters of these apparatus. Synchronization of the transaction identifications generated by the host and by a controller of the memory module can be implemented using a parity bit sequences pattern of a combination of the generated transaction identification plus the corresponding transaction command and data address. Use of transaction commands modified with respect to transaction identifications can be used in initialization of the synchronization, in message passing, and in error detection and response to errors. Additional apparatus, systems, and methods can be implemented in a variety of applications.

Claims (67)

1. A communication method for communication between a host and a memory controller, the communication method comprising:

generating, at the host, a transaction identification (TID) for a transaction using an incremental counter;

generating a parity bit from parity of the TID and parity of a transaction command and data address for the transaction;

comparing the parity bit to a parity bit sequences pattern and forcing the parity bit to match the parity bit sequences pattern;

setting the matching parity bit to a host parity bit;

transmitting the host parity bit along with the transaction command and data address from the host to the memory controller of a memory module;

embedding, by the host, bits to specify a write transaction identification (WID) of a write transaction into error correcting codes (ECCs) of write data and transmitting the write data with the ECCs to the memory controller for transmission through a noisy memory channel; and

reconstructing and/or retransmitting a generated transaction command by the host after detecting a received TID with error caused by noise of the noisy memory channel.

2. The communication method of claim 1 , wherein transmitting the host parity bit along with the transaction command and data address includes transmitting the host parity bit along with the transaction command and data address to the memory controller from the host over a single data rate (SDR) command/address bus.

3. The communication method of claim 1 , wherein the communication method includes:

generating, at the host, an initialization TID; and

sending, from the host, the initialization TID in a SEND command to the memory controller to setup an incremental counter of the memory controller synchronized to the initialization TID.

4. The communication method of claim 1 , wherein the communication method includes embedding the bits for the WID or bits for a write persistent memory transaction identification (PWID) of a persistent memory (PM) write transaction into the ECC codes of data corresponding to a XWRITE command of the write transaction or a XPWRITE command of the PM write transaction at the host by:

assigning a validated count number to be the WID or the PWID by the incremental counter at the host;

calculating 8 bytes ECC codes from combination of the data corresponding to the XWRITE command or the XPWRITE command, with two bits (op[1 :0]) of operational codes and the bits (TID[Δ4:Δ0]) for the WID or the PWID, beat-by-beat; and

transmitting the data including the 8 bytes ECC codes to the controller of the memory module without the WID or the PWID.

5. The communication method of claim 4 , wherein transmitting the data beat-by-beat includes transmitting 64 bits data, 8 bits Tag, and 8 bits ECC thru a fifth generation double data rate (DDR5) data channel, 6 bits command/address (C/A) thru a C/A control bus, with op[1:0] and TID[Δ4:Δ0] not being transferred.

6. The communication method of claim 1 , wherein the communication method includes, with respect to a SEND data and ECC carrying a read transaction identification (RID) of a read data burst of ready read data over a double data rate (DDR) bus of a read transaction, the host:

receiving the data burst and ECC codes;

running a cyclic redundancy check (CRC) code to detect errors;

issuing a new SEND command with the same RID to retry fetching the ready read data if the host detected CRC error; and

closing the read transaction with success status if the host detects no CRC error, and then delivering the data burst to an associated central processing unit (CPU) core.

7. A host apparatus comprising:

transaction identification (TID) generator having an incremental counter to generate a TID for a transaction in a communication between the host apparatus and a memory controller;

a parity bit generator to generate a parity bit from parity of the TID and parity of a transaction command and data address for the transaction;

a comparator to compare the parity bit to a parity bit sequences pattern and force the parity bit to match the parity bit sequences pattern;

logic to set the matching parity bit to a host parity bit;

a central processing unit (CPU) configured to:

transmit the host parity bit along with the transaction command and data address from the host apparatus to the memory controller of a memory module;

embed bits to specify a write transaction identification (WID) of a write transaction into error correcting codes (ECCs) of write data and to transmit the write data with the ECCs to the memory controller for transmission through a noisy memory channel; and

reconstruct and/or to retransmit a generated transaction command after detection of a received TID with error caused by noise of the noisy memory channel.

8. The host apparatus of claim 7 , wherein the CPU is configured to transmit the host parity bit along with the transaction command and data address to the memory controller over a single data rate (SDR) command/address bus.

9. The host apparatus of claim 7 , wherein:

the TID generator is configured to generate an initialization TID; and

the CPU is configured to send the initialization TID in a SEND command to the memory controller to setup an incremental counter of the memory controller synchronized to the initialization TID.

10. The host apparatus of claim 7 , wherein the CPU is configured to embed the bits for the WID or bits for a write persistent memory transaction identification (PWID) of a persistent memory (PM) write transaction into the ECC codes of data corresponding to a XWRITE command of the write transaction or a XPWRITE command of the PM write transaction by operations to:

assign a validated count number to be the WID or the PWID by the incremental counter at the host;

calculate 8 bytes ECC codes from combination of the data corresponding to the XWRITE command or the XPWRITE command, with two bits (op[1:0]) of operational codes and the bits (TID[Δ4:Δ0]) for the WID or the PWID, beat-by-beat; and

transmit the data including the 8 bytes ECC codes to the controller of the memory module without the WID or the PWID.

11. The host apparatus of claim 10 , wherein transmission of the data beat-by-beat includes transmission of 64 bits data, 8 bits Tag, and 8 bits ECC thru a fifth generation double data rate (DDR5) data channel, 6 bits command/address (C/A) thru a C/A control bus, with op[1:0] and TID[Δ4:Δ0] not being transferred.

12. The host apparatus of claim 7 , wherein, with respect to a SEND data and ECC carrying a read transaction identification (RID) of a read data burst of ready read data over a double data rate (DDR) bus of a read transaction, the host is configured to:

receive the data burst and ECC codes;

run a cyclic redundancy check (CRC) code to detect errors;

issue a new SEND command with the same RID to retry fetching the ready read data if the host detected CRC error; and

close the read transaction with success status if the host detects no CRC error, and then deliver the data burst to an associated CPU core.

13. A non-transitory computer-readable media storing computer instructions for communication between a host and a memory controller, that when executed by one or more processors, cause the one or more processors to perform the steps of:

generating, at the host, a transaction identification (TID) for a transaction using an incremental counter;

generating a parity bit from parity of the TID and parity of a transaction command and data address for the transaction;

comparing the parity bit to a parity bit sequences pattern and forcing the parity bit to match the parity bit sequences pattern;

setting the matching parity bit to a host parity bit;

transmitting the host parity bit along with the transaction command and data address from the host to the memory controller of a memory module;

embedding, by the host, bits to specify a write transaction identification (WID) of a write transaction into error correcting codes (ECCs) of write data and transmitting the write data with the ECCs to the memory controller for transmission through a noisy memory channel; and

reconstructing and/or retransmitting a generated transaction command by the host after detecting a received TID with error caused by noise of the noisy memory channel.

14. The non-transitory computer-readable media of claim 13 , wherein transmitting the host parity bit along with the transaction command and data address includes transmitting the host parity bit along with the transaction command and data address to the memory controller from the host over a single data rate (SDR) command/address bus.

15. The non-transitory computer-readable media of claim 13 , wherein the communication method includes:

generating, at the host, an initialization TID; and

sending, from the host, the initialization TID in a SEND command to the memory controller to setup an incremental counter of the memory controller synchronized to the initialization TID.

16. The non-transitory computer-readable media of claim 13 , wherein the communication method includes embedding the bits for the WID or bits for a write persistent memory transaction identification (PWID) of a persistent memory (PM) mite transaction into the ECC codes of data corresponding to a XWRITE command of the write transaction or a XPWRITE command of the PM write transaction at the host by:

assigning a validated count number to be the WID or the PWID by the incremental counter at the host;

calculating 8 bytes ECC codes from combination of the data corresponding to the XWRITE command or the XPWRITE command, with two bits (op[1:0]) of operational codes and the bits (TID[Δ4:Δ0]) for the WID or the PWID, beat-by-beat; and

transmitting the data including the 8 bytes ECC codes to the controller of the memory module without the WID) or the PWID.

17. The non-transitory computer-readable media of claim 16 , wherein transmitting the data beat-by-beat includes transmitting 64 bits data, 8 bits Tag, and 8 bits ECC that a fifth generation double data rate (DDR5) data channel, 6 bits command/address (C/A) thru a C/A control bus, with op[1:0] and TID[66 4:Δ0] not being transferred.

18. The non-transitory computer-readable media of claim 13 , wherein the communication method includes, with respect to a SEND data and ECC carrying a RID of a read data burst of ready read data over a double data rate (DDR) bus of a read transaction, the host:

receiving the data burst and ECC codes;

running a cyclic redundancy check (CRC) code to detect errors;

issuing a new SEND command with the same RID to retry fetching the ready read data if the host detected CRC error; and

closing the read transaction with success status if the host detects no CRC error, and then delivering the data burst to an associated central processing unit (CPU) core.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 18, 2017
From: LEE, XIAOBING; YANG, FENG; CHEN, SHAOJIE
To: FUTUREWEI TECHNOLOGIES, INC.
Reel/Frame 042431/0896 →
Continuity (1)
Related Publication 20180219562A1 · Aug 2, 2018