Method and apparatus for shared I/O in a load/store fabric
First Claim
1. A shared input/output (I/O) fabric within a load/store domain, comprising:
- a plurality of PCI Express root complexes, wherein at least two of said root complexes do not include a dedicated network interface controller;
a shared I/O switch coupled to said plurality of root complexes; and
a shared PCI Express endpoint coupled to said shared switch, the endpoint comprising an I/O controller configured to be shared by the at least two of said root complexes;
wherein said shared I/O switchreceives packets from each of said plurality of root complexes,places root complex identification within said packets for use by said shared I/O controller, andtransmits said packets with said root complex identification to said shared I/O controller for processing.
6 Assignments
0 Petitions
Accused Products
Abstract
An apparatus and method is provided for allowing I/O devices to be shared and/or partitioned among a plurality of processing complexes within the load/store fabric of each of the processing complexes without requiring modification to the operating system or driver software of the processing complexes. The apparatus and method includes a switch for selectively coupling each of the processing complexes to one or more shared I/O devices. The apparatus and method further includes placing information within packets transmitted between the switch and the I/O devices to identify which of the processing complexes the packets are associated with. The invention further includes an apparatus and method within the shared I/O devices to allow the shared I/O devices to service each of the processing complexes independently.
-
Citations
77 Claims
-
1. A shared input/output (I/O) fabric within a load/store domain, comprising:
-
a plurality of PCI Express root complexes, wherein at least two of said root complexes do not include a dedicated network interface controller; a shared I/O switch coupled to said plurality of root complexes; and a shared PCI Express endpoint coupled to said shared switch, the endpoint comprising an I/O controller configured to be shared by the at least two of said root complexes; wherein said shared I/O switch receives packets from each of said plurality of root complexes, places root complex identification within said packets for use by said shared I/O controller, and transmits said packets with said root complex identification to said shared I/O controller for processing. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25)
-
-
26. A serial communication architecture between a plurality of operating system domains (OSD'"'"'s) and a plurality of PCI Express endpoints to allow each of the plurality of OSD'"'"'s to share each of the plurality of endpoints, the architecture comprising:
-
a first link, between each of the plurality of OSD'"'"'s and a shared I/O switch; a second link, between said shared I/O switch and each of the plurality of endpoints, said shared I/O switch associating packets from the plurality of OSD'"'"'s with the OSD'"'"'s by embedding a header within said packets before transmitting said packets to the plurality of endpoints; wherein at least two of said plurality of operating system domains do not include a dedicated network interface controller and are configured to share said plurality of endpoints. - View Dependent Claims (27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42)
-
-
43. An apparatus for associating packets in a load/store serial communication fabric with PCI Express root complexes to allow the root complexes to share a PCI Express endpoint comprising an input/output (I/O) endpoint, the apparatus comprising:
-
a shared I/O switch, coupled to each of the root complexes, said shared I/O switch having routing control to associate the packets from each of the root complexes with the root complex they originate from by incorporating a field within the packets; and a link between said shared I/O switch and the input/output (I/O) endpoint, wherein said link allows the packets to be transferred from said shared I/O switch to the input/output (I/O) endpoint with said field; wherein the input/output (I/O) endpoint associates the packets with their associated root complexes by examining said field; and wherein at least two of said plurality of root complexes do not include a dedicated network interface controller and are configured to share said endpoint. - View Dependent Claims (44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56)
-
-
57. A method for associating packets, within a serial load/store fabric, from a plurality of PCI Express root complexes with their originating root complex, to allow the plurality of root complexes to share a PCI Express endpoint comprising an I/O endpoint, the method comprising:
-
providing a first link between the plurality of root complexes and a switch, the packets in the first link unaware that the root complexes are sharing the I/O endpoint; within the switch, embedding a header in the packets to associate the packets with their originating root complex;
providing a second link between the switch and the I/O endpoint, the second link capable of communicating the packets with the embedded header between the switch and the I/O endpoint; andat the I/O endpoint, examining the packets with the embedded header to allow the I/O endpoint to associate each of the packets with their originating root complex; wherein at least two of said plurality of root complexes do not include a dedicated network interface controller and are configured to share the I/O endpoint. - View Dependent Claims (58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72)
-
-
73. A method for partitioning PCI Express I/O endpoint devices among a plurality of processing complexes of a PCI Express root complex, the partitioning performed within the load/store domain of each of the processing complexes, the method comprising:
-
providing a switch between the I/O devices and the plurality of processing complexes, the switch utilizing a first load/store fabric between the plurality of processing complexes and the switch, and a second load/store fabric between the switch and the I/O devices; mapping each of the plurality of processing complexes to one or more of the I/O devices; and transferring packets between the plurality of processing complexes to the I/O devices based upon said mapping; wherein at least one of the I/O devices is mapped to only one of the plurality of processing complexes; and wherein at least one of the I/O devices is mapped to two or more of the plurality of processing complexes; wherein at least two of said plurality of processing complexes do not include a dedicated network interface controller and are configured to share the I/O devices. - View Dependent Claims (74, 75, 76, 77)
-
Specification