IP Library Granted Patent US 12,216,607
Granted Patent B2
US 12,216,607 · App. 17/238,156 · Granted Feb 4, 2025

Source ordering in device interconnects

Inventor: Debendra Das Sharma (Saratoga, CA)
Assignee: Intel Corporation
G06F13/4221G06F13/1626G06F13/1668G06F13/4022G06F2213/0026
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 12,216,607
App. No.
17/238,156
Granted
Feb 4, 2025
Kind
B2
Abstract

In one embodiment, an apparatus includes a port to transmit and receive data over a link; and protocol stack circuitry to implement one or more layers of a load-store input/output (I/O)-based protocol (e.g., PCIe or CXL) across the link. The protocol stack circuitry constructs memory write request transaction layer packets (TLPs) for memory write transactions, wherein fields of the memory write request TLPs indicate a virtual channel (VC) other than VC0, that a completion is required in response to the memory write transaction, and a stream identifier associated with the memory write transaction. The memory write request TLP is transmitted over the link and a completion TLP is received over the link in response, indicating a completion for the memory write request TLP.

Claims (39)

1. An apparatus comprising:

a port to transmit and receive data over a link; and

protocol stack circuitry to implement one or more layers of a Peripheral Component Interconnect Express (PCIe)-based or a Compute Express Link (CXL)-based protocol across the link, wherein protocol stack circuitry is to:

receive a request to initiate a memory write transaction on the link;

construct a memory write request transaction layer packet (TLP) for the memory write transaction, wherein fields of the memory write request TLP indicate a virtual channel (VC) other than VC0 for the TLP, that a completion is required in response to the memory write transaction, and a stream identifier associated with the memory write transaction;

cause the memory write request TLP to be transmitted over the link; and

process a completion TLP received over the link, the completion TLP indicating a completion for the memory write request TLP.

2. The apparatus of claim 1 , wherein the memory write request TLP is a Memory Write TLP, and the indication that a completion is required in response to the memory write transaction is included in two upper bits of a tag field of the Memory Write TLP, two reserved bits of the Memory Write TLP, or a combination of 1 tag field bit and 1 reserved bit of the Memory Write TLP.

3. The apparatus of claim 1 , wherein the memory write request TLP is a Streamed Write TLP, and the indication that a completion is required in response to the memory write transaction is included in one or more fields of the Streamed Write TLP.

4. The apparatus of claim 3 , wherein the Streamed Write TLP is indicated with a value other than 0100_0000b.

5. The apparatus of claim 4 , wherein the Streamed Write TLP is indicated with a value of 0101_1100b or 0101_1101b.

6. The apparatus of claim 3 , wherein the protocol stack circuitry is to construct a plurality of Streamed Write TLPs associated with a same stream identifier, the completion TLP is a Streamed Write Completion TLP that indicates a completion for each the plurality of Streamed Write TLPs.

7. The apparatus of claim 6 , wherein the Streamed Write Completion TLP is indicated with a value other than 0000_1010b or 0100_1010b.

8. The apparatus of claim 7 , wherein the Streamed Write Completion TLP is indicated with a value of 0000_1100b.

9. The apparatus of claim 6 , wherein a tag field of the completion TLP indicates the stream identifier associated with the plurality of Streamed Write TLPs.

10. The apparatus of claim 6 , wherein a byte count field of the completion TLP indicates a number of completions indicated by the completion TLP.

11. The apparatus of claim 1 , wherein the stream identifier is indicated in a tag field of the memory write request TLP.

12. The apparatus of claim 1 , wherein the memory write request TLP further includes a field indicating that completion coalescence is allowed.

13. The apparatus of claim 1 , wherein the memory write request TLP is tracked using a non-posted transaction type buffer.

14. A method comprising:

receiving a request to initiate a memory write transaction on a link implementing a Peripheral Component Interconnect Express (PCIe)-based or a Compute Express Link (CXL)-based protocol;

constructing a memory write request transaction layer packet (TLP) for the memory write transaction, wherein fields of the memory write request TLP indicate a virtual channel (VC) other than VC0 for the TLP, that a completion is required in response to the memory write transaction, and a stream identifier associated with the memory write transaction;

transmitting the memory write request TLP over the link; and

receiving a completion TLP over the link, the completion TLP indicating a completion for the memory write request TLP.

15. The method of claim 14 , wherein the memory write request TLP is a Memory Write TLP, and the indication that a completion is required in response to the memory write transaction is included in two upper bits of a tag field of the Memory Write TLP, two reserved bits of the Memory Write TLP, or a combination of 1 tag field bit and 1 reserved bit of the Memory Write TLP.

16. The method of claim 14 , wherein the memory write request TLP is a Streamed Write TLP, and the indication that a completion is required in response to the memory write transaction is included in one or more fields of the Streamed Write TLP.

17. The method of claim 16 , further comprising constructing a plurality of Streamed Write TLPs associated with a same stream identifier, the completion TLP is a Streamed Write Completion TLP that indicates a completion for each the plurality of Streamed Write TLPs.

18. The method of claim 17 , wherein a tag field of the completion TLP indicates the stream identifier associated with the plurality of Streamed Write TLPs.

19. The method of claim 17 , wherein a byte count field of the completion TLP indicates a number of completions indicated by the completion TLP.

20. The method of claim 14 , wherein the stream identifier is indicated in a tag field of the memory write request TLP.

21. A system comprising:

a processor;

a first device; and

a second device;

wherein the processor, first device, and second device are coupled to one another via a Peripheral Component Interconnect Express (PCIe)-based or Compute Express Link (CXL)-based interconnect, and each includes protocol circuitry to:

construct memory write request transaction layer packets (TLPs) for memory write transactions to be performed on the interconnect, wherein fields of the memory write request TLPs indicate a virtual channel (VC) other than VC0 for the TLPs, that a completion is required in response to the memory write transaction, and a stream identifier associated with the memory write transaction; and

process completion TLPs received over the interconnect indicating completions for the memory write request TLPs.

22. The system of claim 21 , wherein the processor is a root port of the PCIe-based or CXL-based interconnect, and the system further comprises a switch positioned in the interconnect between the processor, the first device, and the second device, wherein the switch is to transmit memory write request TLPs from the first device to the second device without involving the processor.

23. The system of claim 21 , further comprising a CXL-based switch positioned in the interconnect between the processor, the first device, and the second device, wherein the switch is to transmit memory write request TLPs from the first device to the second device using a CXL.io protocol.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 21, 2021
From: DAS SHARMA, DEBENDRA
To: INTEL CORPORATION
Reel/Frame 056315/0129 →
Continuity (2)
Provisional Application 63114440 · Nov 16, 2020
Related Publication 20210240655A1 · Aug 5, 2021
References Cited (25)
US 10452593B1 · Jalal · 2019 [cited by examiner]
US 10664184B1 · Mitra · 2020 [cited by examiner]
US 20060106982A1 · Ashmore et al. · 2006 [cited by applicant]
US 20060161709A1 · Davies · 2006 [cited by examiner]
US 20060277347A1 · Ashmore · 2006 [cited by examiner]
US 20120284446A1 · Biran · 2012 [cited by examiner]
US 20140269471A1 · Wagh · 2014 [cited by examiner]
US 20150007189A1 · De Gruijl · 2015 [cited by examiner]
US 20150269116A1 · Raikin · 2015 [cited by examiner]
US 20160179427A1 · Jen · 2016 [cited by examiner]
US 20180095925A1 · Iyer · 2018 [cited by examiner]
US 20180191374A1 · Wu et al. · 2018 [cited by applicant]
US 20190238179A1 · Iyer · 2019 [cited by examiner]
US 20190281025A1 · Harriman et al. · 2019 [cited by applicant]
US 20190347125A1 · Sankaran et al. · 2019 [cited by applicant]
US 20200004703A1 · Sankaran et al. · 2020 [cited by applicant]
US 20200151362A1 · Harriman et al. · 2020 [cited by applicant]
US 20200226091A1 · Harriman · 2020 [cited by examiner]
US 20200257629A1 · Pinto · 2020 [cited by applicant]
US 20210240655A1 · Sharma · 2021 [cited by applicant]
US 20220060382A1 · McGraw · 2022 [cited by examiner]
US 20220078043A1 · Marcovitch · 2022 [cited by examiner]
Ajanovic, Jasminl, “PCI Express 3.0 Overview,” Intel Corporation, 2009 IEEE HotChips 21 Symposium (HCS) Aug. 23, 2009 (61 pages). [cited by applicant]
Netherlands Patent Office Search Report in NL Patent Application Serial No. 2029511 dated Feb. 16, 2023 (11 pages). [cited by applicant]
PCT International Search Report and Written Opinion in PCT International Application Serial No. PCT/US2021/050987 mailed on Jan. 5, 2022 (8 pages). [cited by applicant]