Method and computer program product for offloading processing tasks from software to hardware
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 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; and
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, the operating task being a task that peripheral hardware device is capable of performing.
2 Assignments
0 Petitions
Accused Products
Abstract
Offloading specific processing tasks that would otherwise be performed in a computer system'"'"'s processor and memory, to a peripheral device. The computing task is then performed by the peripheral, thereby saving computer system resources for other computing tasks. 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.
-
Citations
42 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 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; and
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, the operating task being a task that peripheral hardware device is capable of performing. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10)
-
-
11. 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:
-
the act of the software component communicating with the peripheral hardware device to enable task offload capabilities on the peripheral device needed for one or more packets; and
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, the operating task being a task that peripheral hardware device is capable of performing. - View Dependent Claims (12, 13, 14, 15, 16, 17, 18, 19)
-
-
20. A computer-program product for use in a computer system environment having at least one software component and at least one peripheral hardware device, the computer-program product for implementing 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 computer-program product including a computer-readable medium having stored thereon computer-executable instructions for performing the following:
-
an act of communicating with the peripheral hardware device to enable task offload capabilities on the peripheral device needed for one or more packets; and
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 causing a data packet to be sent to the peripheral hardware device indicating that the peripheral hardware device perform the specified operating task, the operating task being a task that peripheral hardware device is capable of performing. - View Dependent Claims (21)
-
-
22. A network interface card configured to perform the following:
-
provide task offload capabilities of the network interface card to an operating system;
enable selected task offload capabilities, from among the provided task offload capabilities, to an extent they are needed for one or more data packets; and
selectively and dynamically receive a data packet from the operating system that indicates that the network interface card, rather than the operating system, is to perform an operating task that would otherwise be the operating system. - View Dependent Claims (23, 24, 25, 26, 27, 28, 29, 30, 31)
-
-
32. A network interface card configured to perform the following:
-
provide task offload capabilities of the network interface card to a software component;
receive selection data from the software component;
based on the received selection data, enable selected task offload capabilities, from among the provided task offload capabilities, to extent they are needed for one or more data packets;
selectively and dynamically receive requests to perform operating tasks that are offloaded from an operating system, requests being received within data packets that indicate the network interface card is to perform the operating task; and
perform offloaded operating tasks at the network interface card.
-
-
33. A network interface card configured to perform the following:
-
provide task offload capabilities of the network interface card to a device driver associated with the network interface card;
receive data from the device driver that enables selected task offload capabilities to an extent they are needed for one or more data packets;
selectively and dynamically receive a data packet form the device driver that indicates that the network interface card, rather than the operating system, is to perform an operating task that would otherwise be performed by the operating system; and
perform the operating task at the network interface card.
-
-
34. In a network interface card, a method for dynamically performing, based on the current needs of a computer system, operating tasks that are offloaded from an operating system to the network interface card on a per-packet basis, thereby freeing up host processor resources and increasing the overall efficiency of the computer system, the method comprising the following:
-
an act of providing task offload capabilities of the network interface card to the operating system;
an act of selection data received from the operating system causing selected task offload capabilities, from among the provided task offload capabilities, to be enabled to an extent they are needed for one or more data packets; and
in the event that an operating task, to be otherwise performed for a data packet by the operating system, corresponds to an enabled task offload capability of the network interface card, and depending on the then current needs of the computer system, an act of a selectively and dynamically receiving a request from the operating system that the network interface card, rather than the operating system, perform the operating task, the request being received within a data packet from the operating system that indicates that the network interface card is to perform the operating task. - View Dependent Claims (35, 36, 37, 38, 39, 40, 41)
-
-
42. In a network interface card, a method for dynamically performing, based on the current needs of a computer system, operating task that are offloaded from an operating system to the network interface card on a per-packet basis, thereby freeing up host processor resources and increasing the overall efficiency of the computer system, the method comprising the following:
-
a stop for allocating operating tasks that may be performed on data packets at the network interface card;
in the event that an operating task, to be otherwise performed for a data packet by the operating system, corresponds to an enabled task offload capability of the network interface card, and depending on the then current needs of the computer a system, an act of a selectively and dynamically receiving a request from the operating system that the network interface card, rather than the operating system, perform the operating task, the request being received within a data packet from the operating system that indicates that the network interface card is to perform the operating task.
-
Specification