System for querying a peripheral device to determine its processing capabilities and then offloading specific processing tasks from a host to the peripheral device when needed
First Claim
1. In a computer system environment having at least one software component and at least one peripheral hardware device, a method for dynamically offloading, on a per-packet basis and depending on the then current needs of the computer system, an operating task from the software component to the peripheral hardware device thereby freeing up host processor resources and increasing the overall efficiency of the computer system, the method comprising:
- a step for querying the peripheral hardware device to determine the task offload capabilities of the peripheral hardware device;
a step for enabling selected task offload capabilities of the peripheral hardware device to the extent such selected task offload capabilities are needed for one or more packets;
in the event that an operating task to be performed for a packet by the software component corresponds to an enabled task offload capability on the peripheral hardware device, and depending on the then current needs of the computer system, performing the act of selectively offloading the operating task from the software component to the peripheral hardware device by sending a data packet to the peripheral hardware device indicating that the peripheral hardware device perform the specified operating task; and
a step for performing at the peripheral hardware device the offloaded operating task.
3 Assignments
0 Petitions
Accused Products
Abstract
The present invention is directed to a method and computer program product for offloading specific processing tasks that would otherwise be performed in a computer system'"'"'s processor and memory, to a peripheral device, or devices, that are connected to the computer. The computing task is then performed by the peripheral, thereby saving computer system resources for other computing tasks and increasing the overall computing efficiency of the computer system. In one preferred embodiment, the disclosed method is utilized in a layered network model, wherein computing tasks that are typically performed in network applications are instead offloaded to the network interface card (NIC) peripheral. An application executing on the computer system first queries the processing, or task offload capabilities of the NIC, and then selectively enables those capabilities that may be subsequently needed by the application. The specific processing capabilities of a NIC are made available by creating a task offload buffer data structure, which contains data indicative of the processing capabilities of the corresponding NIC. Once an application has discerned the capabilities of a particular NIC, it will selectively utilize any of the enabled task offload capabilities of the NIC by appending packet extension data to the network data packet that is forwarded to the NIC. The device driver of the NIC will review the data contained in the packet extension, and then cause the NIC to perform the specified operating task(s). This offloading of computing tasks on a per-packet basis allows an application to selectively offload tasks on a dynamic, as-needed basis. As such, applications executing on the computer system processor are able to offload tasks in instances where it is busy processing other computing tasks and processor overhead is high. Multiple tasks can also be offloaded in batches to a particular peripheral.
-
Citations
28 Claims
-
1. In a computer system environment having at least one software component and at least one peripheral hardware device, a method for dynamically offloading, on a per-packet basis and depending on the then current needs of the computer system, an operating task from the software component to the peripheral hardware device thereby freeing up host processor resources and increasing the overall efficiency of the computer system, the method comprising:
-
a step for querying the peripheral hardware device to determine the task offload capabilities of the peripheral hardware device; a step for enabling selected task offload capabilities of the peripheral hardware device to the extent such selected task offload capabilities are needed for one or more packets; in the event that an operating task to be performed for a packet by the software component corresponds to an enabled task offload capability on the peripheral hardware device, and depending on the then current needs of the computer system, performing the act of selectively offloading the operating task from the software component to the peripheral hardware device by sending a data packet to the peripheral hardware device indicating that the peripheral hardware device perform the specified operating task; and a step for performing at the peripheral hardware device the offloaded operating task. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16)
-
-
17. A computer-readable medium having computer-executable instructions for dynamically offloading, on a per-packet basis and depending on the then current needs of the computer system, a computing task to be executed at a network interface card (NIC) that is connected to a computer system thereby freeing up host processor resources and increasing the overall efficiency of the computer system, the computer-readable medium further including computer-executable instructions comprising:
-
a step for notifying applications executing on the computer system of any task offload processing capabilities of the NIC; for every network data packet that is destined for the NIC from an application executing on the computer system, a step for reviewing a packet extension data structure appended to the data packet, the packet extension data structure containing information for identification of one or more particular operating tasks being offloaded to the NIC; and a step for causing the NIC to perform an operating task in accordance with data contained within the packet extension data structure appended to the network data packet. - View Dependent Claims (18, 19, 20, 21)
-
-
22. In a computer system environment having at least one software component and at least one peripheral hardware device, a method for dynamically offloading, on a per-packet basis and depending on the then current needs of the computer system, an operating task from the software component to the peripheral hardware device thereby freeing up host processor resources and increasing the overall efficiency of the computer system, the method comprising:
-
an act of reading task data stored in at least one task offload buffer associated with the peripheral hardware device, wherein the task data is indicative of the particular task offload capability of the peripheral hardware device an act of querying the task data contained within the at least one task offload buffer to identify the task offload capabilities of the peripheral hardware device; an act of setting at least one flag indicator in a task offload buffer associated with the peripheral hardware device, wherein the flag indicator represents the enabling of an associated task offload capability needed for one or more packet; in the event that an operating task to be performed for a packet by the software component corresponds to an enabled task offload capability on the peripheral hardware device, and depending on the then current needs of the computer system, performing the act of selectively offloading the operating task from the software component to the peripheral hardware device by appending task offload data to a data packet and sending the data packet to the peripheral hardware device; and an act of performing the at least one offloaded task at the peripheral hardware device in accordance with the appended task offload data. - View Dependent Claims (23, 24, 25, 26, 27, 28)
-
Specification