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.