Completion combining to improve effective link bandwidth by disposing at end of two-end link a matching engine for outstanding non-posted transactions
AssigneeIntel Corporation
InventorDas Sharma Debendra
Life of this patent
Estimating the term…
Abstract
An apparatus and method are disclosed in which unrelated completion operations intended for a single destination (requestor) are coalesced to improve achievable data bandwidth. During transmission, the completion operations are collected and compressed into a single packet and transmitted along the link. At a receiving end of the link, the single packet is decompressed and the previously unrelated packets are returned to their initial state before receipt by the requestor. The method can be implemented in the root complex, end points, and/or switches, in the case of a PCIe implementation, but can also be applied to other protocols besides PCIe.
Claims20
A system, comprising:
- a root complex to couple to a central processing unit and a memory;
- a switch to couple the root complex to a plurality of endpoints, wherein a transmission link is to be formed between the root complex and an endpoint of the plurality of endpoints;
- compression means to be disposed in the root complex, the compression means to:
- intercept a plurality of completion transaction packets intended for the endpoint, the completion transactions to be provided in response to non-posted transactions previously transmitted across the transmission link, wherein a non-posted transaction comprises a transaction under a peripheral component interconnect express (PCIe) high-speed serial bus standard which, when successful, is followed by a completion transaction;
- combine the plurality of completion transaction packets into a new completion transaction packet, the new completion packet to include a size not exceeding a maximum payload size of the transmission link;
- generate a header to be coupled to the new completion packet, the header comprising a predetermined request identifier and a completion status indicator, wherein the header and the new completion packet do not exceed a predetermined maximum payload size;
- and
- transmit the new completion packet across the transmission link to the endpoint.
A method comprising:
- collecting a completion packet before transmission across a two-end link of a processor-based system, the completion packet comprising a successful response to a non-posted transaction transmitted by a requestor;
- combining, at a first end of the two-end link, the collected completion packet with a second completion packet to form a combined completion packet, the second completion packet also comprising a successful response to a second non-posted transaction transmitted by the requestor, wherein the combined completion packet does not exceed a maximum payload size of either the first end or the second end of the two-end link;
- adding a header to the combined completion packet to produce a new completion packet;
- and
- transmitting the new completion packet across the two-end link;
- wherein the new completion packet is to be disassembled at a second end of the two-end link into the completion packet and the second completion packet before being received by the requestor.
An article comprising a medium storing instructions which, when executed by a processor, cause a system to:
- intercept a first completion transaction packet and a second completion transaction packet, the first and second completion transaction packets to be intended for a single endpoint, the first and second completion transactions comprising successful responses to two different non-posted transactions to have been previously transmitted across a transmission link;
- combine the first and second completion transaction packets into a combined completion transaction packet, the combined completion packet to include a size not exceeding a maximum payload size of the transmission link;
- add a header to the combined completion packet, to result in a new completion packet;
- and
- transmit the new completion packet from a first point in the transmission link to a second point in the transmission link.
A method comprising:
- collecting, by a completor, a completion packet before transmission across a two-end link of a processor-based system, the completion packet comprising a successful response to a non-posted transaction transmitted by a requestor to be received by the completor;
- combining, by the completor, the collected completion packet with a second completion packet to form a combined completion packet, the second completion packet also comprising a successful response to a non-posted transaction transmitted by the requestor;
- adding, by the completor, a header to the combined completion packet to produce a new completion packet;
- and
- transmitting, by the completor, the new completion packet across the two-end link;
- wherein the new completion packet is to be disassembled at a second end of the two-end link into the completion packet and the second completion packet by the requestor.
Dependencies are inferred from the claim text.