Systems and methods for isolating input/output computing resources
AssigneeIntel Corporation
InventorsCunming Liang, Danny Y. Zhou, David E. Cohen, James R. Harris
Life of this patent
Estimating the term…
Abstract
Disclosed herein are systems and methods for isolating input/output computing resources. In some embodiments, a host device may include logic to identify a Process Address Space Identifier (PASID) for a process or container of the host device and logic to associate the PASID with an individual queue pair of a hardware device of the host device, wherein the queue pair includes two complementary queues and wherein the queue pair is owned by the process or container upon association with the PASID. Other embodiments may be disclosed and/or claimed.
Claims24
A host device for parallel computing, comprising:
- a plurality of processor cores to execute a plurality of processes or containers in parallel;
- first logic operated by the processor cores to identify a Process Address Space Identifier (PASID) for one of the processes or containers;
- and
- second logic operated by the processor cores to associate the PASID with a first individual queue pair of a first plurality of queue pairs of a first input/output (I/O) hardware device communicatively coupled with the host device, and associate the PASID with a second individual queue pair of a second plurality of queue pairs of a second I/O hardware device communicatively coupled with the host device, to isolate the first individual queue pair from other ones of the first plurality of queue pairs of the first I/O hardware device and the second individual queue pair from other ones of the second plurality of queue pairs of the second I/O hardware device to form an isolated I/O hardware device partition for the process or container, with other processes or containers having respective other isolated I/O hardware device partitions having other queue pairs of the first, the second or other I/O hardware devices;
- wherein each of the first and second plurality of queue pairs includes two complementary queues and wherein each of the first and second individual queue pairs is owned by the process or container upon association with the PASID of the process or container.
A first input/output (I/O) hardware device, comprising:
- one or more processors;
- a first collection of queue pairs, each queue pair having two complementary queues;
- first logic operated by the one or more processors to identify a Process Address Space Identifier (PASID) associated with a first of the first collection of queue pairs, wherein the PASID is a PASID of a process or container executed by a host device communicatively coupled with the first and a second I/O hardware device, the second I/O hardware device having a second of a second collection of queue pairs associated with the PASID to join the first queue pair as part of an I/O hardware device partition isolated for the execution of the process or container by the host device in parallel with other processes or containers having respective other isolated I/O hardware device partitions having other queue pairs of the first, the second or other I/O hardware devices;
- second logic operated by the one or more processors to generate a Transaction Layer Packet (TLP) including the PASID;
- and
- third logic operated by the one or more processors to provide the TLP to the host device as part of a Direct Memory Access (DMA) transaction for the process or container.
A method for utilizing resources of a first and a second input/output (I/O) hardware device communicatively coupled with a host device, comprising:
- receiving, by the first and second I/O hardware devices, from the host device, a Process Address Space Identifier (PASID) for a process or container being executed by the host device in parallel with other processes or containers being executed by the host device;
- and
- respectively associating, by the first and second I/O hardware device, the PASID with a first individual queue pair of a first plurality of queue pairs of the first I/O hardware device and a second individual queue pair of a second plurality of queue pairs of the second I/O hardware device, wherein each of the first and the second queue pair includes two complementary queues, and wherein the first and second queue pairs are owned by the process or container upon association with the PASID, and are part of an I/O partition associated with the process or container;
- wherein other individual queue pairs of the first and second plurality of queue pairs of the first and second I/O hardware devices are selectively associated with the other processes or containers executed in parallel via their respective PASIDs to form respective I/O partitions for the other processes or containers being executed in parallel.
A method for utilizing resources of a first and a second input/output (I/O) hardware device communicatively coupled with a host device, comprising:
- respectively receiving, by the first and second I/O hardware devices, from the host device, a Process Address Space Identifier (PASID) associated with a first of a first plurality of queue pairs of the first I/O hardware device and a second of a second plurality of queue pairs of the second I/O hardware device, wherein each of the first and second queue pairs includes two complementary queues, wherein the PASID is a PASID of a process or container being executed by the host device in parallel with other processes or containers being executed by the host device, wherein the first and second queue pairs are owned by the process or container upon association with the PASID, and are part of an isolated I/O hardware device partition associated with the process or container;
- and wherein other individual queue pairs of the first and second plurality of queue pairs of the first and second I/O hardware devices are selectively associated with the other processes or containers executed in parallel via their respective PASIDs to form respective isolated I/O hardware device partitions for the other processes or containers being executed in parallel;
- generating, by the first or second I/O hardware device, a Transaction Layer Packet (TLP) including the PASID;
- and
- providing, by the generating first or second I/O hardware device, the TLP to the host device as part of a Direct Memory Access (DMA) transaction for the process or container being executed in parallel with other processes or containers by the host device.
Dependencies are inferred from the claim text.