Patent ID: 7478390
Filing Date: 2009-01-13
Classification: G06F

Abstract:
1. A computer-implemented method for managing a plurality of processors as virtual devices, said method comprising: loading a plurality of device code modules into a common memory of a computer system, wherein each device code module performs a different virtual device task when executed; receiving a device request at a task queue manager running on a first processor in the computer system, wherein the computer system includes a plurality of heterogeneous processors that share the common memory and wherein the device request corresponds to a first virtual device task; storing data corresponding to the device request in the common memory; identifying a second processor from the plurality of processors to handle the device request, wherein the first processor and the second processor are dislike processors, wherein the first processor executes a first instruction set and wherein the second processor executes a second instruction set; creating, by the first processor, a task block in the common memory, the task block including a software code identifier that corresponds to a first device code module and an input buffer address; signaling, from the first processor, the identified second processor, wherein the signaling includes writing the address of the task block to a mailbox corresponding to the second processor; receiving, at the second processor, the address of the task block from the second processor's mailbox; retrieving, at the second processor, the software code identifier from the task block; reading data from an input buffer located in the common memory at a location corresponding to the input buffer address into a local memory accessible to the second processor, wherein the reading is performed using a direct memory access (DMA) operation; determining whether the first device code module corresponding to the software code identifier is loaded in the second processor's local memory, wherein the first device code module is capable of performing the first virtual device task; in response to determining that the first device code module corresponding to the software code identifier is not loaded in the second processor's local memory: processing the data by the second processor using the first device code module stored in the second processor's local memory, wherein the processing comprises executing the first device code module to perform the first virtual device task.