A plurality of asynchronous and isochronous transactions on a shared bus are
scheduled
such that asynchronous latency is minimized while providing a maximum latency for
isochronous transactions. This is accomplished by splitting an allocated shared
bus time into frames of equal length. When a bus request is received the technique
determines whether the bus request in a current frame is for an asynchronous transaction
or an isochronous transaction. If an asynchronous transaction bus request exists
it is processed, otherwise an isochronous transaction bus request is processed.
Bus requests for an isochronous transaction are queued if received while an asynchronous
transaction is currently being processed. Asynchronous transactions are given priority
until a current frame time has ended. In one embodiment, at the start of a new
frame (which becomes the current frame) any queued isochronous transactions are
processed before asynchronous transactions of the current frame are given priority.
In another embodiment, queued isochronous transactions are only processed at the
start of a new frame if they are from two frames prior to the new frame.