Legal claims defining the scope of protection, as filed with the USPTO.
1. A system, comprising: a Peripheral Component Interconnect Express controller coupled to a device through a nontransparent bridge and operable to direct input/output operations to the device on behalf of a host system, wherein the device comprises a solid state drive or a hard disk drive; and a Peripheral Component Interconnect Express driver operable within the host system to generate an input/output descriptor to directly transfer data between a memory address of the device and a memory address of the host system, wherein the input/output descriptor includes routing information for the device, wherein the controller is further operable to process the input/output descriptor from the driver, to generate a input/output command for the memory address of the device that includes the routing information for the device, to process a Transaction Layer Packet processing hint from the device that includes a steering tag to route the data, and to route the data between the memory address of the host system and the memory address of the device through the nontransparent bridge based on the routing information and the steering tag of the processing hint while bypassing a memory of the controller.
2. The system of claim 1 , wherein: the processing hint includes a flag; and the steering tag is set to a value including or between 0×00 and 0×FE when the flag is set to route the data between the memory address of the host system and the memory address of the device bypassing the memory of the controller.
3. The system of claim 1 , wherein: the controller is a Single Root Input/Output Virtualization controller operable to virtualize hardware functionality of the controller; the driver is further operable to generate another input/output descriptor to directly transfer a virtual function identifier of the controller between another memory address of the device and another memory address of the host system; the input/output descriptor includes other routing information for the device; and the controller is further operable to process the other routing information, to generate a command for the virtual function identifier of the other memory address of the device that includes the other routing information for the device, and to route the virtual function identifier between the memory address of the host system and the memory address of the device through the nontransparent bridge based on the other routing information bypassing the memory of the controller.
4. The system of claim 3 , wherein: the controller is further operable to process a Transaction Layer Packet processing hint from the device, wherein the processing hint includes a steering tag to route the virtual function identifier based on the other routing information; the processing hint includes a flag; and the steering tag is set to a value including or between 0×00 and 0×FE when the flag is set to route the virtual function identifier between the memory address of the host system and the memory address of the device.
5. A method operable in a Peripheral Component Interconnect Express architecture, the method comprising: establishing a connection to a device through a nontransparent bridge of a Peripheral Component Interconnect Express controller, wherein the device comprises a solid state drive or a hard disk drive; generating an input/output descriptor with a Peripheral Component Interconnect Express driver in a host system to directly transfer data between a memory address of the device and a memory address of the host system through the nontransparent bridge, wherein the descriptor includes routing information for the device; processing the descriptor at the controller to retrieve the routing information; generating a input/output command for the data at the controller that transfers the data between the memory address of the device and the memory address of the host system through the nontransparent bridge based on the routing information; processing a Transaction Layer Packet processing hint from the device that includes a steering tag to route the data and routing the data between the memory address of the device and the memory address of the host system through the nontransparent bridge based on the routing information and the steering tag while bypassing a memory of the controller.
6. The method of claim 5 , further comprising: processing a Transaction Layer Packet processing hint from the device at the controller based on the routing information to route the data, wherein the processing hint includes a steering tag; setting a flag in the processing hint; and setting the steering tag to a value including or between 0×00 and 0×FE to route the data between the memory address of the host system and the memory address of the device through the nontransparent bridge bypassing the memory of the controller.
7. The method of claim 5 , further comprising: generating another input/output descriptor with the driver to directly transfer a virtual function identifier of the controller between another memory address of the device and another memory address of the host system, wherein the input/output descriptor includes other routing information for the device; processing the other input/output descriptor at the controller to retrieve the other routing information; generating a command for the virtual function identifier that transfers the virtual function identifier between the other memory address of the device and the other memory address of the host system through the nontransparent bridge based on the other routing information; and bypassing a memory of the controller to route the virtual function identifier between the other memory address of the device and the other memory address of the host system through the nontransparent bridge.
8. The method of claim 7 , further comprising: processing a Transaction Layer Packet processing hint from the device at the controller based on the other routing information to route the virtual function identifier, wherein the other processing hint includes a steering tag; setting a flag in the processing hint; and setting the steering tag in the other processing hint to a value including or between 0×00 and 0×FE to route the virtual function identifier between the other memory address of the host system and the other memory address of the device through the nontransparent bridge bypassing the memory of the controller.
9. A non-transitory computer readable medium comprising instructions that, when executed by one or more processors in a Peripheral Component Interconnect Express architecture, direct the one or more processors to: establish a connection to a device through a nontransparent bridge of a Peripheral Component Interconnect Express controller, wherein the device comprises a solid state drive or a hard disk drive; generate an input/output descriptor with a Peripheral Component Interconnect Express driver in a host system to directly transfer data between a memory address of the device and a memory address of the host system through the nontransparent bridge, wherein the descriptor includes routing information for the device; process the descriptor at the controller to retrieve the routing information; generate a input/output command for the data at the controller that transfers the data between the memory address of the device and the memory address of the host system through the nontransparent bridge based on the routing information; process a Transaction Layer Packet processing hint from the device that includes a steering tag to route the data; and route the data between the memory address of the device and the memory address of the host system through the nontransparent bridge based on the routing information and the steering tag while bypassing a memory of the controller.
10. The computer readable medium of claim 9 , wherein the instructions direct the one or more processors to: process a Transaction Layer Packet processing hint from the device at the controller based on the routing information to route the data, wherein the processing hint includes a steering tag; set a flag in the processing hint; and set the steering tag to a value including or between 0×00 and 0×FE to route the data between the memory address of the host system and the memory address of the device through the nontransparent bridge bypassing the memory of the controller.
11. The computer readable medium of claim 9 , wherein the instructions direct the one or more processors to: generate another input/output descriptor with the driver to directly transfer a virtual function identifier of the controller between another memory address of the device and another memory address of the host system, wherein the input/output descriptor includes other routing information for the device; process the other input/output descriptor at the controller to retrieve the other routing information; generate a command for the virtual function identifier that transfers the virtual function identifier between the other memory address of the device and the other memory address of the host system through the nontransparent bridge based on the other routing information; and bypass a memory of the controller to route the virtual function identifier between the other memory address of the device and the other memory address of the host system through the nontransparent bridge.
12. The computer readable medium of claim 11 , wherein the instructions direct the one or more processors to: process a Transaction Layer Packet processing hint from the device at the controller based on the other routing information to route the virtual function identifier, wherein the other processing hint includes a steering tag; set a flag in the processing hint; and set the steering tag in the other processing hint to a value including or between 0×00 and 0×FE to route the virtual function identifier between the other memory address of the host system and the other memory address of the device through the nontransparent bridge bypassing the memory of the controller.
Unknown
August 23, 2016
Browse 5M+ US patents with plain-English claim translations and AI-generated analysis.