System and method for task queue management of virtual devices using a plurality of processors
First Claim
1. A computer-implemented method for managing a plurality of processors as a virtual devices, said method comprising:
- receiving a device request at a task queue manager running on a first processor in a computer system, wherein the computer system includes a plurality of heterogeneous processors that share a common memory and wherein the device request corresponds to a virtual device;
storing data corresponding to the request in the common memory;
identifying a second processor from the plurality of processors to handle the request;
signaling, from the first processor, the identified second processor;
receiving the data corresponding to the request at the second processor; and
processing the data by the second processor using software code stored in the second processor'"'"'s local memory.
1 Assignment
0 Petitions
Accused Products
Abstract
A task queue manager manages the task queues corresponding to virtual devices. When a virtual device function is requested, the task queue manager determines whether an SPU is currently assigned to the virtual device task. If an SPU is already assigned, the request is queued in a task queue being read by the SPU. If an SPU has not been assigned, the task queue manager assigns one of the SPUs to the task queue. The queue manager assigns the task based upon which SPU is least busy as well as whether one of the SPUs recently performed the virtual device function. If an SPU recently performed the virtual device function, it is more likely that the code used to perform the function is still in the SPU'"'"'s local memory and will not have to be retrieved from shared common memory using DMA operations.
152 Citations
60 Claims
-
1. A computer-implemented method for managing a plurality of processors as a virtual devices, said method comprising:
-
receiving a device request at a task queue manager running on a first processor in a computer system, wherein the computer system includes a plurality of heterogeneous processors that share a common memory and wherein the device request corresponds to a virtual device;
storing data corresponding to the request in the common memory;
identifying a second processor from the plurality of processors to handle the request;
signaling, from the first processor, the identified second processor;
receiving the data corresponding to the request at the second processor; and
processing the data by the second processor using software code stored in the second processor'"'"'s local memory. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10)
-
-
11. A computer-implemented method for using a processor as a virtual device, said method comprising:
-
initializing a task queue in a common memory, the task queue corresponding to a device;
receiving a device request from a first processor of a plurality processors in a computer system, wherein the plurality of processors share the common memory;
storing the request in the task queue and storing the input data corresponding to the request in the common memory;
assigning the task queue to a second processor selected from the plurality of processors;
signaling the second processor regarding the assignment;
loading the input data into a local memory corresponding to the second processor; and
processing the loaded input data using software code executing on the second processor. - View Dependent Claims (12, 13, 14, 15, 16, 17, 18, 19, 20)
-
-
21. An information handling system comprising:
-
a plurality of heterogeneous processors;
a common memory shared by the plurality of heterogeneous processors;
a first processor selected from the plurality of processors that sends a request to a second processor, the second processor also being selected from the plurality of processors;
a local memory corresponding to the second processor;
a DMA controller associated with the second processor, the DMA controller adapted to transfer data between the common memory and the second processor'"'"'s local memory; and
a virtual device tool for managing a plurality of processors as a virtual devices, the virtual device tool including software effective to;
receive a virtual device request at a task queue manager running on the first processor;
store data corresponding to the request in the common memory;
identify the second processor to handle the request from the plurality of processors;
signal, from the first processor, the identified second processor;
receive the data corresponding to the request at the second processor; and
process the data by the second processor using software code stored in the second processor'"'"'s local memory. - View Dependent Claims (22, 23, 24, 25, 26, 27, 28, 29, 30)
-
-
31. An information handling system comprising:
-
a plurality of heterogeneous processors;
a common memory shared by the plurality of heterogeneous processors;
a first processor selected from the plurality of processors that sends a request to a second processor, the second processor also being selected from the plurality of processors;
a local memory corresponding to the second processor;
a DMA controller associated with the second processor, the DMA controller adapted to transfer data between the common memory and the second processor'"'"'s local memory; and
a virtual device tool for managing a plurality of processors as a virtual devices, the virtual device tool including software effective to;
initialize a task queue in the common memory, the task queue corresponding to a virtual device;
receive a virtual device request from the first processor;
store the request in the task queue and store the input data corresponding to the request in the common memory;
assign the task queue to the second processor selected from the plurality of processors;
signal the second processor regarding the assignment;
load the input data into a local memory corresponding to the second processor; and
process the loaded input data using software code executing on the second processor. - View Dependent Claims (32, 33, 34, 35, 36, 37, 38, 39, 40)
-
-
41. A computer program product stored on a computer operable media for managing a plurality of processors as a virtual devices, said computer program product comprising:
-
means for receiving a device request at a task queue manager running on a first processor in a computer system, wherein the computer system includes a plurality of heterogeneous processors that share a common memory and wherein the device request corresponds to a virtual device;
means for storing data corresponding to the request in the common memory;
means for identifying a second processor from the plurality of processors to handle the request;
means for signaling, from the first processor, the identified second processor;
means for receiving the data corresponding to the request at the second processor; and
means for processing the data by the second processor using software code stored in the second processor'"'"'s local memory. - View Dependent Claims (42, 43, 44, 45, 46, 47, 48, 49, 50)
-
-
51. A computer program product stored on a computer operable media for managing a plurality of processors as a virtual devices, said computer program product comprising:
-
means for initializing a task queue in a common memory, the task queue corresponding to a device;
means for receiving a device request from a first processor of a plurality processors in a computer system, wherein the plurality of processors share the common memory;
means for storing the request in the task queue and storing the input data corresponding to the request in the common memory;
means for assigning the task queue to a second processor selected from the plurality of processors;
means for signaling the second processor regarding the assignment;
means for loading the input data into a local memory corresponding to the second processor; and
means for processing the loaded input data using software code executing on the second processor. - View Dependent Claims (52, 53, 54, 55, 56, 57, 58, 59, 60)
-
Specification