IP Library › Granted Patent US 11,249,837
Granted Patent B2
US 11,249,837 · App. 16/575,739 · Granted Feb 15, 2022

Flit-based parallel-forward error correction and parity

Inventor: Debendra Das Sharma (Saratoga, CA)
Assignee: Intel Corporation
G06F11/1004G06F11/076G06F11/1402G06F13/4221H04L1/009H04L1/0041H04L1/0061H04L1/0083H04L1/1812
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 11,249,837
App. No.
16/575,739
Granted
Feb 15, 2022
Kind
B2
Abstract

A flit-based packetization approach is used for transmitting information between electronic components. A protocol stack can generate transaction layer packets from information received from a transmitting device, assemble the transaction layer packets into one or more flits, and protect the flits with a flit-level cyclic redundancy check (CRC) scheme and a flit-level forward error correction or parallel-forward error correction (FEC) scheme. Flit-level FEC schemes can provide improved latencies and efficiencies over per-lane FEC schemes. To improve retry probability, flits can contain information indicating whether immediately preceding flits are null flits. Receivers can avoid sending a retry request for a corrupted flit if a seceding flit indicates the corrupted flit is a null fit. Parity flits can be used to protect groups of flits and correct single-flit errors.

Claims (76)

1. A device, comprising:

a processor; and

a protocol stack to:

receive information from the processor;

generate one or more transaction layer packets based on the information;

generate one or more flits comprising the transaction layer packets (TLPs), individual of the flits protected by a flit-level cyclic redundancy check (CRC) scheme and a flit-level forward error correction (FEC) scheme, wherein individual of the flits comprise a plurality of FEC codes, each FEC code corresponding to a respective subset of TLPs of the flit, and wherein the TLPs of the respective subsets are interleaved in the flit; and

transmit the one or more flits across one or more lanes of a link to a receiving device.

2. The device of claim 1 , wherein the protocol stack is further to store transmitted flits that are not null flits in a replay buffer.

3. The device of claim 2 , wherein the protocol stack is further to:

receive a retry request from the receiving device to retransmit at least one retry flits of the one or more flits;

retrieve the at least one retry flits from the replay buffer, the retrieving comprising:

detecting the presence of a non-contiguous flit sequence stored in the replay buffer; and

reconstructing flits corresponding to gaps in the non-contiguous flit sequence as null flits to be transmitted to the receiving device as part of the retry flits; and

retransmit the at least one retry flits.

4. The device of claim 1 , wherein the device is a PCIe root complex.

5. The device of claim 1 , wherein the device is a graphics card.

6. The device of claim 1 , the processor further to:

generate a parity flit based on the one or more flits; and

transmit the parity flit across the one or more lanes of the link to the receiving device.

7. The device of claim 1 , the processor further to:

determine that a bit error rate for the link exceeds an enable parity flit generation threshold;

enable parity flit generation in response to determining that the bit error rate exceeds the enable parity flit generation threshold;

generate a parity flit based on the one or more flits; and

transmit the parity flit across the one or more lanes of the link to the receiving device.

8. The device of claim 1 , wherein at least one of the flits comprises information indicating whether one or more immediately preceding flits is a null flit.

9. A method, comprising:

receiving information from the processor;

generating one or more transaction layer packets based on the information;

generating one or more flits comprising the transaction layer packets, individual of the flits protected by a flit-level cyclic redundancy check (CRC) scheme and an interleaved flit-level forward error correction (FEC) scheme, wherein individual of the flits comprise a plurality of FEC codes, each FEC code corresponding to a respective subset of TLPs of the flit, and wherein the TLPs of the respective subsets are interleaved in the flit; and

transmitting the one or more flits across one or more lanes of a link to a receiving device.

10. The method of claim 9 , wherein the protocol stack is further to store transmitted flits that are not null flits in a replay buffer.

11. The method of claim 10 , further comprising:

receiving a retry request from the receiving device to retransmit at least one retry flits of the one or more flits;

retrieving the at least one retry flits from the replay buffer, the retrieving comprising:

detecting the presence of a non-contiguous flit sequence stored in the replay buffer; and

reconstructing flits corresponding to gaps in the non-contiguous flit sequence as null flits to be transmitted to the receiving device as part of the retry flits; and

retransmitting the at least one retry flits.

12. The method of claim 9 , further comprising:

generating a parity flit based on the one or more flits; and

transmitting the parity flit across the one or more lanes of the link to the receiving device.

13. The method of claim 9 , further comprising:

determining that a bit error rate for the link exceeds an enable parity flit generation threshold;

enabling parity flit generation in response to determining that the bit error rate exceeds the enable parity flit generation threshold;

generating a parity flit based on the one or more flits; and

transmitting the parity flit across the one or more lanes of the link to the receiving device.

14. The method of claim 9 , wherein at least one of the flits comprises information indicating whether one or more immediately preceding flits is a null flit.

15. One or more non-transitory computer-readable storage media storing computer-executable instructions for causing a device to perform a method, the method comprising:

receiving information from the processor;

generating one or more transaction layer packets based on the information;

generating one or more flits comprising the transaction layer packets, individual of the flits protected by a flit-level cyclic redundancy check (CRC) scheme and a flit-level forward error correction (FEC) scheme, wherein individual of the flits comprise a plurality of FEC codes, each FEC code corresponding to a respective subset of TLPs of the flit, and wherein the TLPs of the respective subsets are interleaved in the flit; and

transmitting the one or more flits across one or more lanes of a link to a receiving device.

16. The one or more computer-readable storage media of claim 15 , wherein the protocol stack is further to store transmitted flits that are not null flits in a replay buffer.

17. The one or more computer-readable storage media of claim 16 , further comprising:

receiving a retry request from the receiving device to retransmit at least one retry flits of the one or more flits;

retrieving the at least one retry flits from the replay buffer, the retrieving comprising:

detecting the presence of a non-contiguous flit sequence stored in the replay buffer; and

reconstructing flits corresponding to gaps in the non-contiguous flit sequence as null flits to be transmitted to the receiving device as part of the retry flits; and

retransmitting the at least one retry flits.

18. The one or more computer-readable storage media of claim 15 , further comprising:

generating a parity flit based on the one or more flits; and

transmitting the parity flit across the one or more lanes of the link to the receiving device.

19. The one or more computer-readable storage media of claim 15 , wherein at least one of the flits comprises information indicating whether one or more immediately preceding flits is a null flit.

20. A device, comprising:

a processor;

a protocol stack to receive information from the processor; and

a generating means to generate one or more flits comprising one or more transaction layer packets, each flit protected by an interleaved flit-level cyclic redundancy check (CRC) scheme and a flit-level forward error correction (FEC) scheme, wherein individual of the flits comprise a plurality of FEC codes, each FEC code corresponding to a respective subset of TLPs of the flit, and wherein the TLPs of the respective subsets are interleaved in the flit;

wherein the protocol stack is further to transmit the flits across one or more lanes across a link to a receiving device.

21. The device of claim 20 , the protocol stack further to receive a retry request from the receiving device to retransmit at least one retry flits of the one or more flits;

the device further comprising a retrieval means to retrieve the at least one retry flits from the replay buffer, the retrieval means to:

detect the presence of a non-contiguous flit sequence stored in the replay buffer; and

reconstruct flits corresponding to gaps in the non-contiguous flit sequence as null flits to be transmitted to the receiving device as part of the retry flits; and

the protocol stack further to retransmit the at least one retry flits.

22. The device of claim 20 , the generating means further to generate a parity flit based on the one or more flits; the protocol stack further to transmit the parity flit across the one or more lanes of the link to the receiving device.

23. The device of claim 1 , wherein the plurality of FEC codes comprises a first FEC code corresponding to first TLPs of the flit, a second FEC code corresponding to second TLPs of the flit, and a third FEC code corresponding to third TLPs of the flit, the first TLPs, second TLPs, and third TLPs being interleaved across symbols of the flit.

24. The method of claim 9 , wherein the plurality of FEC codes comprises a first FEC code corresponding to first TLPs of the flit, a second FEC code corresponding to second TLPs of the flit, and a third FEC code corresponding to third TLPs of the flit, the first TLPs, second TLPs, and third TLPs being interleaved across symbols of the flit.

25. The one or more computer-readable storage media of claim 15 , wherein the plurality of FEC codes comprises a first FEC code corresponding to first TLPs of the flit, a second FEC code corresponding to second TLPs of the flit, and a third FEC code corresponding to third TLPs of the flit, the first TLPs, second TLPs, and third TLPs being interleaved across symbols of the flit.

Assignments (2)
CORRECTIVE ASSIGNMENT TO CORRECT THE PROVIDE THE FILING DATE AND APPLICATION NUMBER IN THE ASSIGNMENT DOCUMENT PREVIOUSLY RECORDED AT REEL: 050433 FRAME: 0116. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT . Recorded Apr 25, 2022
From: DAS SHARMA, DEBENDRA
To: INTEL CORPORATION
Reel/Frame 059788/0922 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 19, 2019
From: DAS SHARMA, DEBENDRA
To: INTEL CORPORATION
Reel/Frame 050433/0116 →
Continuity (3)
Provisional Application 62837318 · Apr 23, 2019
Provisional Application 62812507 · Mar 1, 2019
Related Publication 20200012555A1 · Jan 9, 2020