コマンド間従属情報を含む少なくとも1つのコマンドストリームを受信することと、ここにおいて前記少なくとも1つのコマンドストリームは第1、第2、および第3のコマンドを備え、前記第2および第3のコマンドは前記第2のコマンドが前記第3のコマンドよりも先行するような前記少なくとも1つのコマンドストリームにおける第1の順序を有する、前記コマンド間従属情報に基づいて、前記第2のコマンドが、前記第1のコマンドの先の実行に従属することを決定することと、複数の処理パイプランのうちの第1の1つに前記第1のコマンドが関連付けられ、前記複数の処理パイプラインのうちの別の第2の1つに前記第2のコマンドおよび前記第3のコマンドが関連付けられていることとを決定することと、プロセッサによって、前記複数の処理パイプラインのうちの第2の1つに前記第3のコマンドを割り当てることと、前記複数の処理パイプラインのうちの第2の1つに前記第3のコマンドを割り当てた後、前記プロセッサによって、前記第2のコマンドおよび前記第3のコマンドが前記第1の順序とは異なる第2の順序で実行するように、前記複数の処理パイプラインのうちの第2の1つに前記第2のコマンドを割り当てることとを備える方法。前記複数の処理パイプラインのうちの第1の1つに関連付けられたコマンドの完了状態を表すための第1のスライドウインドウを保持することと、前記複数の処理パイプラインのうちの前記第2の1つに関連付けられたコマンドの完了状態を表すための第2のスライドウインドウを保持することとをさらに備える、請求項1に記載の方法。前記少なくとも1つのコマンドストリームは、前記複数の処理パイプラインのうちの第1の1つに関連付けられた順序付きコマンドの第1のセットと、前記複数の処理パイプラインのうちの第2の1つに関連付けられた順序付きコマンドの第2のセットとを備え、前記第1のスライドウインドウは、前記第1のスライドウインドウの開始位置を表すコマンドカウンタを備え、前記開始位置は、前記複数の処理パイプラインのうちの第1の1つによってまだ実行されていない先行コマンドが残っていない、前記順序付きコマンドの第1のセット内の最後のコマンドに対応する、請求項2に記載の方法。前記第1のスライドウインドウは、前記第1のコマンドの完了状態を表す第1のビットを有するアクティブウインドウマスクを備える、請求項2に記載の方法。前記コマンド間従属情報に基づいて、前記第2のコマンドのための従属マスクを生成することをさらに備え、前記従属マスク内のビットは前記第1のスライドウインドウにおいて対応するコマンドのための前記完了状態を示す、請求項2に記載の方法。前記第2のコマンドのための従属マスクを生成することは、前記第1のコマンドの完了状態を決定することと、前記第1のコマンドが実行されていない場合に、前記第2のコマンドのための従属マスク内に前記第1のコマンドに対応するビットを設定することとを備える、請求項5に記載の方法。前記第1のスライドウインドウは前記第1のコマンドの完了状態を表す第1のビットを有するアクティブウインドウマスクを備え、前記第1のコマンドの完了状態を決定することは、前記アクティブウインドウマスクの前記第1のビットを評価することを備える、請求項6に記載の方法。前記複数の処理パイプラインのうちの第1の1つから、前記第1のコマンドが実行されたという通知を受信することと、前記通知に応答して、前記第2のコマンドのための従属マスク内の、前記第1のコマンドに対応するビットをクリアすることとをさらに備える、請求項5に記載の方法。前記複数の処理パイプラインのうちの第1の1つから、前記第2のコマンドが完了したという通知を受信することと、前記通知に応答して、前記第1のコマンドが前記従属マスク内の最下位ビットに対応する場合に、前記従属マスクを1ビット右シフトすることとをさらに備える、請求項5に記載の方法。前記複数の処理パイプラインのうちの第1の1つに前記第2のコマンドを割り当てることは、前記第1のコマンドに対応する、前記従属マスク内のビットが空であるかを判定することと、前記第1のコマンドに対応する、前記従属マスク内のビットが空である場合のみ、前記複数の処理パイプラインのうちの第1の1つに前記第2のコマンドを割り当てることとを備える、請求項5に記載の方法。前記複数の処理パイプラインのうちの第1の1つから、前記第1のコマンドが完了したという通知を受信することと、前記通知に応答して、前記第1のスライドウインドウを進めることとを備える、請求項2に記載の方法。前記少なくとも1つのコマンドストリームはさらに、第4のコマンドを備え、前記第2のコマンドは優先値を有し、前記第4のコマンドは優先値を有し、前記コマンド間従属情報に基づいて、前記第4のコマンドが、前記第1のコマンドの先の実行に従属することを決定することと、前記複数の処理パイプラインのうちの第2の1つに前記第4のコマンドが関連付けられていることを決定することと、前記第2のコマンドおよび前記第4のコマンドの前記優先値に基づいた順序で、前記複数の処理パイプラインのうちの前記第2の1つに前記第2のコマンドおよび前記第4のコマンドを割り当てることとをさらに備える、請求項1に記載の方法。コマンド間従属情報を含む少なくとも1つのコマンドストリームを受信し、ここにおいて前記少なくとも1つのコマンドストリームは第1、第2、および第3のコマンドを備え、前記第2および第3のコマンドは前記第2のコマンドが前記第3のコマンドに先行するような前記少なくとも1つのコマンドストリームにおける第1の順序を有し、前記コマンド間従属情報に基づいて、前記第2のコマンドが、前記第1のコマンドの先行実行に従属することを決定し、複数の処理パイプラインのうちの第1の1つに前記第1のコマンドが関連付けられ、前記複数の処理パイプラインのうちの別の第2の1つに前記第2のコマンドおよび前記第3のコマンドが関連付けられていることとを決定し、前記複数の処理パイプラインのうちの前記第2の1つに前記第3のコマンドを割り当て、前記複数の処理パイプラインのうちの第2の1つに前記第3のコマンドを割り当てた後、前記第2のコマンドおよび前記第3のコマンドが前記第1の順序とは異なる第2の順序で実行するように、前記複数の処理パイプラインのうちの第2の1つに前記第2のコマンドを割り当てるように構成されたコマンド割当および同期プロセッサを備える装置。前記コマンド割当および同期プロセッサはさらに、前記複数の処理パイプラインのうちの第1の1つに関連付けられたコマンドの完了状態を表すための第1のスライドウインドウを保持し、前記複数の処理パイプラインのうちの第2の1つに関連付けられたコマンドの完了状態を表すための第2のスライドウインドウを保持するように構成された、請求項13に記載の装置。前記少なくとも1つのコマンドストリームは、前記複数の処理パイプラインのうちの第1の1つに関連付けられた順序付きコマンドの第1のセットと、前記複数の処理パイプラインのうちの第2の1つに関連付けられた順序付きコマンドの第2のセットとを備え、前記第1のスライドウインドウは、前記第1のスライドウインドウの開始位置を表すコマンドカウンタを備え、前記開始位置は、前記複数の処理パイプラインのうちの第1の1つによってまだ実行されていない先行コマンドが残っていない、前記順序付きコマンドの第1のセット内の最後のコマンドに対応する、請求項14に記載の装置。前記第1のスライドウインドウは、前記第1のコマンドの完了状態を表す第1のビットを有するアクティブウインドウマスクを備える、請求項14に記載の装置。前記コマンド割当および同期プロセッサはさらに、前記コマンド間従属情報に基づいて、前記第2のコマンドのための従属マスクを生成するように構成され、前記従属マスク内のビットは前記第1のスライドウインドウにおいて対応するコマンドに関する完了状態を示す、請求項14に記載の装置。前記第2のコマンドのための従属マスクを生成するために、前記コマンド割当および同期プロセッサはさらに、前記第1のコマンドの完了状態を決定し、前記第1のコマンドが実行されると、前記第2のコマンドのための従属マスク内に、前記第1のコマンドに対応するビットを設定するように構成された、請求項17に記載の装置。前記第1のスライドウインドウは前記第1のコマンドの完了状態を表す第1のビットを有するアクティブウインドウマスクを備え、前記第1のコマンドの完了状態を決定するために、前記コマンド割当および同期プロセッサはさらに、前記アクティブウインドウマスクの前記第1のビットを評価するように構成された、請求項18に記載の装置。前記コマンド割当および同期プロセッサはさらに、前記複数の処理パイプラインのうちの第1の1つから、前記第1のコマンドが実行されたという通知を受信し、前記通知に応答して、前記第2のコマンドのための従属マスク内の、前記第1のコマンドに対応するビットをクリアするように構成された、請求項17に記載の装置。前記コマンド割当および同期プロセッサはさらに、前記複数の処理パイプラインのうちの第1の1つから、前記第1のコマンドが完了したという通知を受信し、前記通知に応答して、前記第1のコマンドが前記従属マスク内の最下位ビットに対応する場合、前記従属マスクを1ビット右シフトするように構成された、請求項17に記載の装置。前記複数の処理パイプラインのうちの第1の1つに前記第2のコマンドを割り当てるために、前記コマンド割当および同期プロセッサはさらに、前記第1のコマンドに対応する、前記従属マスク内のビットが空であるかを判定し、前記第1のコマンドに対応する、前記従属マスク内のビットが空である場合のみ、前記複数の処理パイプラインのうちの第1の1つに前記第2のコマンドを割り当てるように構成された、請求項17に記載の装置。前記コマンド割当および同期プロセッサはさらに、前記複数の処理パイプラインのうちの第1の1つから、前記第1のコマンドが完了したという通知を受信し、前記通知に応答して、前記第1のスライドウインドウを進めるように構成された、請求項14に記載の装置。前記少なくとも1つのコマンドストリームはさらに第4のコマンドを備え、前記第2のコマンドは優先値を有し、前記第4のコマンドは優先値を有し、前記コマンド割当および同期プロセッサはさらに、前記コマンド間従属情報に基づいて、前記第4のコマンドが前記第1のコマンドの先の実行に従属することを決定し、前記複数の処理パイプラインのうちの第2の1つに前記第4のコマンドが関連付けられていることを決定し、前記第2のコマンドおよび前記第4のコマンドの優先値に基づいた順序で、前記複数の処理パイプラインのうちの第2の1つに前記第2のコマンドおよび前記第4のコマンドを割り当てるように構成された、請求項13に記載の装置。前記装置は、無線通信デバイスハンドセットを備える、請求項13に記載の装置。前記装置は、1つまたは複数の集積回路デバイスを備える、請求項13に記載の装置。コマンド間従属情報を含む少なくとも1つのコマンドストリームを受信するための手段と、ここにおいて前記少なくとも1つのコマンドストリームは第1、第2、および第3のコマンドを備え、前記第2および第3のコマンドは前記第2のコマンドが前記第3のコマンドに先行するような、前記少なくとも1つのコマンドストリームにおける第1の順序を有する、前記コマンド間従属情報に基づいて、前記第2のコマンドが、前記第1のコマンドの先の実行に従属することを決定するための手段と、複数の処理パイプラインのうちの第1の1つに前記第1のコマンドが関連付けられ、前記複数の処理パイプラインのうちの別の第2の1つに前記第2のコマンドおよび前記第3のコマンドが関連付けられていることとを決定するための手段と、前記複数の処理パイプラインのうちの第2の1つに前記第3のコマンドを割り当てるための手段と、前記複数の処理パイプラインのうちの第2の1つに前記第3のコマンドを割り当てた後、前記第2のコマンドおよび前記第3のコマンドが、前記第1の順序とは異なる第2の順序で実行するように、前記複数の処理パイプラインのうちの第2の1つに前記第2のコマンドを割り当てるための手段とを備えるデバイス。前記複数の処理パイプラインのうちの第1の1つに関連付けられたコマンドの完了状態を表すための第1のスライドウインドウを保持するための手段と、前記複数の処理パイプラインのうちの第2の1つに関連付けられたコマンドの完了状態を表すための第2のスライドウインドウを保持するための手段とをさらに備える、請求項27に記載のデバイス。前記少なくとも1つのコマンドストリームは、前記複数の処理パイプラインのうちの第1の1つに関連付けられた順序付きコマンドの第1のセットと、前記複数の処理パイプラインのうちの第2の1つに関連付けられた順序付きコマンドの第2のセットとを備え、前記第1のスライドウインドウは、前記第1のスライドウインドウの開始位置を表すコマンドカウンタを備え、前記開始位置は、前記複数の処理パイプラインのうちの第1の1つによってまだ実行されていない先行コマンドが残っていない、前記順序付きコマンドの第1のセット内の最後のコマンドに対応する、請求項28に記載のデバイス。前記第1のスライドウインドウは、前記第1のコマンドの完了状態を表す第1のビットを有するアクティブウインドウマスクを備える、請求項28に記載のデバイス。前記コマンド間従属情報に基づいて、前記第2のコマンドのための従属マスクを生成するための手段をさらに備え、前記従属マスク内のビットは前記第1のスライドウインドウにおいて対応するコマンドに関する完了状態を示す、請求項28に記載のデバイス。前記第2のコマンドのための従属マスクを生成するための手段はさらに、前記第1のコマンドの完了状態を決定するための手段と、前記第1のコマンドが実行されていない場合に、前記第2のコマンドのための従属マスク内に前記第1のコマンドに対応するビットを設定するための手段とを備える、請求項31に記載のデバイス。前記第1のスライドウインドウは、前記第1のコマンドの完了状態を表す第1のビットを有するアクティブウインドウマスクを備え、前記第1のコマンドの完了状態を決定することは、前記アクティブウインドウマスクの前記第1のビットを評価することを備える、請求項32に記載のデバイス。前記複数の処理パイプラインのうちの第1の1つから、前記第1のコマンドが実行されたという通知を受信するための手段と、前記通知に応答して、前記第2のコマンドのための従属マスク内の、前記第1のコマンドに対応するビットをクリアするための手段とをさらに備える、請求項31に記載のデバイス。前記複数の処理パイプラインのうちの第1の1つから、前記第1のコマンドが完了したという通知を受信するための手段と、前記通知に応答して、前記第1のコマンドが前記従属マスク内の最下位ビットに対応する場合に、前記従属マスクを1ビット右シフトするための手段とをさらに備える、請求項31に記載のデバイス。前記複数の処理パイプラインのうちの第1の1つに前記第2のコマンドを割り当てるための手段はさらに、前記第1のコマンドに対応する、前記従属マスク内のビットが空であるかを判定するための手段と、前記第1のコマンドに対応する、前記従属マスク内のビットが空である場合のみ、前記複数の処理パイプラインのうちの第1の1つに前記第2のコマンドを割り当てるための手段とを備える、請求項31に記載のデバイス。前記複数の処理パイプラインのうちの第1の1つから、前記第1のコマンドが完了したという通知を受信するための手段と、前記通知に応答して、前記第1のスライドウインドウを進めるための手段とをさらに備える、請求項28に記載のデバイス。前記少なくとも1つのコマンドストリームはさらに、第4のコマンドを備え、前記第2のコマンドは優先値を有し、前記第4のコマンドは優先値を有し、前記コマンド間従属情報に基づいて、前記第4のコマンドが前記第1のコマンドの先の実行に従属することを決定するための手段と、前記複数の処理パイプラインのうちの第2の1つに前記第4のコマンドが関連付けられていることを決定するための手段と、前記第2のコマンドおよび前記第4のコマンドの優先値に基づいた順序で、前記複数の処理パイプラインのうちの第2の1つに前記第2のコマンドおよび前記第4のコマンドを割り当てるための手段とをさらに備える、請求項27に記載のデバイス。プログラム可能プロセッサに、コマンド間従属情報を含む少なくとも1つのコマンドストリームを受信させ、ここにおいて前記少なくとも1つのコマンドストリームは第1、第2、および第3のコマンドを備え、前記第2および第3のコマンドは前記第2のコマンドが前記第3のコマンドに先行するような、前記少なくとも1つのコマンドストリームにおける第1の順序を有し、前記コマンド間従属情報に基づいて、前記第2のコマンドが、前記第1のコマンドの先の実行に従属することを決定させ、前記第1のコマンドが、複数の処理パイプラインのうちの第1の1つに関連付けられ、前記第2のコマンドおよび前記第3のコマンドが前記複数の処理パイプラインのうちの別の第2の1つに関連付けられていることとを決定させ、前記複数の処理パイプラインのうちの第2の1つに前記第3のコマンドを割り当てさせ、前記複数の処理パイプラインのうちの第2の1つに前記第3のコマンドを割り当てた後、前記第2のコマンドおよび前記第3のコマンドが前記第1の順序とは異なる第2の順序で実行するように、前記複数の処理パイプラインのうちの第2の1つに前記第2のコマンドを割り当てさせるための命令を備えるコンピュータ読取可能記憶媒体。前記プログラム可能プロセッサに、前記複数の処理パイプラインのうちの第1の1つに関連付けられたコマンドの完了状態を表すための第1のスライドウインドウを保持させ、前記複数の処理パイプラインのうちの第2の1つに関連付けられたコマンドの完了状態を表すための第2のスライドウインドウを保持させるための命令をさらに備える、請求項39に記載のコンピュータ読取可能記憶媒体。前記少なくとも1つのコマンドストリームは、前記複数の処理パイプラインのうちの第1の1つに関連付けられた順序付きコマンドの第1のセットと、前記複数の処理パイプラインのうちの第2の1つに関連付けられた順序付きコマンドの第2のセットとを備え、前記第1のスライドウインドウは、前記第1のスライドウインドウの開始位置を表すコマンドカウンタを備え、前記開始位置は、前記複数の処理パイプラインのうちの第1の1つによってまだ実行されていない先行コマンドが残っていない、前記順序付きコマンドの第1のセット内の最後のコマンドに対応する、請求項40に記載のコンピュータ読取可能記憶媒体。前記第1のスライドウインドウは、前記第1のコマンドの完了状態を表す第1のビットを有するアクティブウインドウマスクを備える、請求項40に記載のコンピュータ読取可能記憶媒体。前記コマンド間従属情報に基づいて、前記プログラム可能プロセッサに、前記第2のコマンドのための従属マスクを生成させるための命令をさらに備え、前記従属マスク内のビットは前記第1のスライドウインドウにおいて対応するコマンドに関する完了状態を示す、請求項40に記載のコンピュータ読取可能記憶媒体。前記第2のコマンドのための従属マスクを生成するために、前記プログラム可能プロセッサに、前記第1のコマンドの完了状態を決定させ、前記第1のコマンドが実行されていない場合に、前記第2のコマンドのための従属マスク内に、前記第1のコマンドに対応するビットを設定させるための命令をさらに備える、請求項43に記載のコンピュータ読取可能記憶媒体。前記第1のスライドウインドウは前記第1のコマンドの完了状態を表す第1のビットを有するアクティブウインドウマスクを備え、前記第1のコマンドの完了状態を決定するために、前記プログラム可能プロセッサに、前記アクティブウインドウマスクの第1のビットを評価させるための命令をさらに備える、請求項44に記載のコンピュータ読取可能記憶媒体。前記プログラム可能プロセッサに、前記複数の処理パイプラインのうちの第1の1つから、前記第1のコマンドが実行されたという通知を受信させ、前記通知に応答して、前記第1のコマンドに対応する、前記第2のコマンドのための従属マスク内のビットをクリアさせるための命令をさらに備える、請求項43に記載のコンピュータ読取可能記憶媒体。前記プログラム可能プロセッサに、前記複数の処理パイプラインのうちの第1の1つから、前記第1のコマンドが完了したという通知を受信させ、前記通知に応答して、前記第1のコマンドが前記従属マスク内の最下位ビットに対応する場合に、前記従属マスクを1ビット右シフトさせるための命令をさらに備える、請求項43に記載のコンピュータ読取可能記憶媒体。前記複数の処理パイプラインのうちの第1の1つに前記第2のコマンドを割り当てるために、前記プログラム可能プロセッサに、前記第1のコマンドに対応する、前記従属マスク内のビットが空であるかを判定させ、前記第1のコマンドに対応する、前記従属マスク内のビットが空である場合のみ、前記複数の処理パイプラインのうちの第1の1つに前記第2のコマンドを割当てさせるための命令をさらに備える、請求項43に記載のコンピュータ読取可能記憶媒体。前記プログラム可能プロセッサに、前記複数の処理パイプラインのうちの第1の1つから、前記第1のコマンドが完了したという通知を受信させ、前記通知に応答して、前記第1のスライドウインドウを進めさせるための命令をさらに備える、請求項40に記載のコンピュータ読取可能記憶媒体。前記少なくとも1つのコマンドストリームは第4のコマンドをさらに備え、前記第2のコマンドは優先値を有し、前記第4のコマンドは優先値を有し、前記プログラム可能プロセッサに、前記コマンド間従属情報に基づいて、前記第4のコマンドが前記第1のコマンドの先の実行に従属することを決定させ、前記複数の処理パイプラインのうちの第2の1つに前記第4のコマンドが関連付けられていることを決定させ、前記第2のコマンドおよび前記第4のコマンドの優先値に基づいた順序で、前記複数の処理パイプラインのうちの第2の1つに前記第2のコマンドおよび前記第4のコマンドを割当てさせるための命令をさらに備える、請求項39に記載のコンピュータ読取可能記憶媒体。詳細な説明図1は、マルチメディアプロセッサ10と、コマンド割当および同期プロセッサ12とを含む典型的なマルチメディアデバイス2の構成要素を示すブロック図である。マルチメディアデバイス2は、独立型デバイスまたは大きなシステムの一部であることができる。例えばマルチメディアデバイス2は、例えば無線通信デバイスハンドセットのような無線メディア通信デバイス、デジタルテレビTV、ビデオ電話、デジタルマルチメディアプレーヤ、パーソナルデジタルアシスタントPDA、ビデオゲームコンソール、パーソナルコンピュータまたはラップトップデバイス、または他のビデオデバイスを備える、あるいはその一部であることができる。マルチメディアデバイス2はまた、上記デバイスの一部または全部において用いられうる1つまたは複数の集積回路またはチップに含まれることもできる。例示的なマルチメディアデバイス2は、デバイスメモリ8と、CPU6と図示されたメインプロセッサ6と、マルチメディアプロセッサ10とを結合するシステムバス7を含む。デバイスメモリ8は、マルチメディアデバイス2のためのアプリケーションの実行中、CPU6およびマルチメディアプロセッサ10によって用いるためのプログラム命令および/またはデータを格納できる。例えばデバイスメモリ8は、マルチメディアプロセッサ10が、ディスプレイ上のグラフィックシーンをレンダリングするためのコンパイルド命令を格納し、レンダリング計算において用いるためのバーテックスアレイ、テクスチャ、ディスプレイリスト等も格納できる。いくつかの場合において、デバイスメモリ8は、ディスプレイ15のためのフレームバッファを含むこともできる。デバイスメモリ8は、メモリコントローラを含むことができ、ランダムアクセスメモリRAM、読取専用メモリROM、不揮発性ランダムアクセスメモリNVRAM、電気的消去可能プログラム可能読取専用メモリEEPROM、フラッシュメモリ等のうちの1つまたは複数を備えることができる。メインプロセッサ6は、例えば、デバイスメモリ8に格納された1つまたは複数のアプリケーションおよびオペレーティングシステムを実行することによって、マルチメディアデバイス2の動作を制御する。メインプロセッサ6は、マルチタスクおよびマルチスレッド方法によって複数のプログラムまたはプログラムスレッドを実行することができ、それによってメインプロセッサ6はプログラムまたはスレッドコンテキスト間で迅速に切り替えることができる。ある例において、メインプロセッサ6において実行しているアプリケーションは、マルチメディアプロセッサ10によって実行されうる命令を備えたり参照したりできる。例えばそのような例において、メインプロセッサ6は、デバイスメモリ8に格納されたマルチプロセッサ10のためのデバイスドライバのルーチンを呼び出すことができ、その場合呼び出されたデバイスドライバルーチンは、マルチメディアプロセッサ10によって実行するための命令を含む。マルチメディアプロセッサ10は、例えばビデオおよびオーディオ符号化/復号、圧縮、グラフィックレンダリング、ビデオおよびオーディオ信号処理等のような、マルチメディアデバイス2のためのメディア関連作業負荷の性能を向上させる1つまたは複数の専用プロセッサを含む。一般に、マルチメディアプロセッサは、高レベルの並列処理、並びにリアルタイムでオーディオおよびビデオ信号を処理する能力により特徴付けられる。従ってマルチメディアプロセッサ10は、マルチメディアデバイス2の特定のメディア関連機能に関連付けられたコマンドの処理専用の複数のメディア関連処理エリアを有することができる。マルチメディアプロセッサ10は、マルチメディアデバイス2のためのカード例えば、ビデオカード上に存在しうるので、メインプロセッサ6とは隔離しているが、システムバス7を介して結合されている。マルチメディアデバイス2のいくつかの例において、マルチメディアプロセッサ10は、メインプロセッサ6に組み込まれうる。マルチメディアデバイス2はまた、ユーザ図示せずへ出力するための、マルチメディアプロセッサ10からオーディオ信号またはビデオ信号をそれぞれ受信する、複数のスピーカ17と図示されたスピーカ17およびディスプレイ15も含む。スピーカ17は、1つまたは複数のオーディオ出力デバイスであることができる。いくつかの態様において、スピーカ17は、マルチメディアプロセッサ10から受信された信号に基づいてオーディオ信号を生成するスピーカコントローラに結合されうる。ディスプレイ15は、標準的なモニタ、テレビ、モバイルデバイス液晶ディスプレイLCD、または他のディスプレイデバイスであることができる。いくつかの態様において、ディスプレイ15は、マルチメディアプロセッサ10から受信された信号に基づいてビデオ信号を生成するディスプレイコントローラに結合されうる。マルチメディアデバイス2はまた、マルチメディアプロセッサ10と通信モジュール19との間で交換するために画像、3Dグラフィック、およびオーディオ信号をそれぞれ変換するためのビデオコーデック14、3Dグラフィックプロセッサ16、およびオーディオコーデック18も含む。通信モジュール19は、マルチメディアデバイス2と他のデバイスとの間の通信例えば、無線通信を可能にするネットワークインタフェースまたは他の構成要素であることができる。マルチメディアプロセッサ10は、変換された信号をマルチメディアデバイス2によって通信モジュール19を介して別のデバイスへ送信する前に、圧縮および/または符号化するために、ビデオ、3Dグラフィック、および/またはオーディオ信号を、ビデオコーデック14、3Dグラフィックプロセッサ16、およびオーディオコーデック18へそれぞれ送信できる。いくつかの態様において、ビデオコーデック14、3Dグラフィックプロセッサ16、およびオーディオコーデック18は、圧縮および/または符号化された信号を格納するためにデバイスメモリ8または他の記憶媒体へ送信できる。マルチメディアプロセッサ10は、1つまたは複数の通信バスを介してビデオコーデック14、3Dグラフィックプロセッサ16、およびオーディオコーデック18と通信可能に結合されうる。いくつかの例において、マルチメディアプロセッサ10、ビデオコーデック14、3Dグラフィックプロセッサ16、およびオーディオコーデック18は、1つまたは複数の通信バスを介して通信するためのカスタムインタフェースを含む。マルチメディアデバイス2はまた、通信モジュール19を介して他のデバイスからビデオ信号、3Dグラフィック信号、および/またはオーディオ信号を受信することもできる。そのような例において、通信モジュール19は、解凍および/または復号のために、ビデオコーデック14、3Dグラフィックプロセッサ16、およびオーディオコーデック18のうちの適切な1つへ受信信号を送信できる。ビデオコーデック14、3Dグラフィックプロセッサ16、およびオーディオコーデック18はその後、変換された信号を、更なる処理のためにマルチメディアプロセッサ10へ、または格納するためにデバイスメモリ8へ送信できる。ビデオコーデック14、3Dグラフィックプロセッサ16、およびオーディオコーデック18はそれぞれ、1つまたは複数のマイクロプロセッサ、デジタル信号プロセッサDSP、特定用途向け集積回路ASIC、フィールドプログラマブルゲートアレイFPGA、ディスクリートロジック、ソフトウェア、ハードウェア、ファームウェア、またはそれらの任意の組み合わせとして実現されうる。ビデオコーデック14、3Dグラフィックプロセッサ16、およびオーディオコーデック18のうちの1つまたは複数が、マルチメディアプロセッサ10の一部として統合されることもできる。例えばマルチメディアプロセッサ10は、ビデオコーデック14、3Dグラフィックプロセッサ16、およびオーディオコーデック18を含む単一のプロセッサコアであることができる。いくつかの例において、3Dグラフィックプロセッサ16は、グラフィック処理ユニットGPUを備えることができる。マルチメディアプロセッサ10は、メインプロセッサ6によって生成されたコマンドストリームの形式でコマンドを受信する。デバイスメモリ8は、コマンドストリームを格納し、要求された場合、マルチメディアプロセッサ10へ提供できる。いくつかの例において、マルチメディアプロセッサ10は、システムバス7を介してメインプロセッサ6から直接コマンドストリームを受信できる。コマンドストリームは、マルチメディアプロセッサ10によって実行するためのコマンドすなわち、命令の順序付けられたリストを備える。メインプロセッサ6において実行中のオペレーティングシステムおよびプログラムによるマルチタスクおよび/またはマルチスレッド、および複数のメディア関連機能を立て続けに用いることができるプログラムにより、メインプロセッサ6は、インタリーブされたコマンドタイプの組み合わせとしてコマンドストリームを生成できる。この場合各コマンドタイプは、マルチメディアプロセッサ10の複数の異なるメディア関連処理エリアのうちの1つに関連付けられている。例えば、メインプロセッサ6は、ビデオ関連サブルーチンを呼び出し、続けてオーディオ関連サブルーチンを呼び出すことができる。両方のサブルーチンがマルチメディアプロセッサ10において実行される場合、コマンドストリームは、オーディオコマンドが後続するビデオコマンドを含むであろう。ビデオコマンドは、マルチメディアプロセッサ10のビデオ処理エリアに関連付けられており、オーディオコマンドは、マルチメディアプロセッサ10のオーディオ処理エリアに関連付けられている。コマンドストリーム内の1つまたは複数の特定のコマンドの実行はしばしば、コマンドストリームにおける後のコマンドの実行への必要条件となる。従って、後のコマンドが1つまたは複数の先行するコマンドに従属するという点において、コマンド間の従属関係が存在する。そのためコマンドストリームはコマンドに加え、コマンドの各々に関する従属情報を含む。従属情報は、あるコマンドが従属するコマンドストリーム内のコマンドが存在する場合それを示すことによって、そのコマンドに関する従属関係をマップする。混合媒体のシナリオにおいて、特定のメディア関連機能例えば、ビデオのためのコマンドが、別のメディア関連機能例えば、3Dグラフィックに従属することがある。そのような機能間のコマンド従属関係は、マルチメディアプロセッサ10の異なるメディア関連処理エリア間の従属関係をもたらす。本開示において説明された原理に従うと、マルチメディアプロセッサ10は、マルチメディアプロセッサ10の関連付けられたメディア関連処理エリアへコマンドストリーム内の各コマンドを効率的に割り当てるコマンド割当および同期プロセッサ12CDSプロセッサ12を含む。以下で詳しく説明するように、CDSプロセッサ12は、コマンドストリーム内のコマンドに関する従属情報を分析し、コマンドに関する従属関係が満たされているかすなわち、実行されたかを判定し、満足されていれば、従属関係が満たされているコマンドをただちに実行するためにコマンドストリームを並べ替えることによって、マルチメディアプロセッサ10の異なるメディア関連処理エリアへコマンドを割り当てる。その際、CDSプロセッサ12は、従属情報によって指定された同期要件を順守する。この方式でコマンドを割当ておよび同期することによって、CDSプロセッサ12は、マルチプロセッサ10が高いコマンド実行レートを達成することを可能にする。本明細書で説明された教示は、ある利点を有することができる。例えばリソース従属命令は、コマンドストリームの順序においてリソース従属命令に後続する命令全てに影響を及ぼす長いパイプラインブロックを生じさせる高いレイテンシを有しうる。上記方法でコマンドを割当ておよび同期することによって、CDSプロセッサ12は、リソース従属命令より前に、影響を受けた命令を実行することによって、影響を受けた命令をブロックすることを回避できる。このようにパイプラインスループットを増加することにより、コマンドストリーム全体の一般的な実行レートが高まる傾向にあるので、マルチメディアプロセッサ10が高いコマンド実行レートを達成することが可能となる。図2は、本開示の教示に従って構成された例示的なマルチメディアプロセッサ10を示すブロック図である。マルチメディアプロセッサ12のためのメディア関連処理エリアは、ビデオパイプライン20、3Dグラフィックパイプライン22、およびオーディオパイプライン24の形式で命令パイプラインを含む。コマンドパイプラインは、複数のステージにコマンド処理を分割することによってコマンドスループットを増加させる傾向があり、処理の1つの態様を実行する各ステージは、任意の特定のコマンドを実行することが必要である。いくつかの例において、マルチメディアプロセッサ10は、他の様々なメディア関連機能に関連付けられた、あるいは図示されたパイプラインのうちの1つまたは複数例えば、ビデオパイプライン20を複写する、追加のパイプラインを有することができる。いくつかの例において、マルチメディアプロセッサ12は、より少ない数のパイプラインを有することができる、あるいはコマンドを実行するために非パイプラインベースのロジックを用いることができる。コマンドストリーム26は、マルチメディアプロセッサ10によって実行するためのコマンドのリストまたはシーケンスである。コマンドストリーム内の各コマンドは、マルチメディアプロセッサ12の特定のパイプラインに関連付けられている。マルチメディアプロセッサ10の例において、ビデオタイプのコマンドは、ビデオパイプライン20に関連付けられている。同様に、3Dグラフィックコマンドは3Dグラフィックパイプライン22に関連付けられている。最後に、オーディオコマンドは、オーディオパイプライン24に関連付けられている。コマンドストリーム26は順序付けられている、すなわちコマンドストリーム26内の各コマンドは、そのコマンドが従属しているコマンド全てに先行される。上述したように、コマンドストリーム26は、様々なコマンドタイプ例えば、ビデオ、オーディオ、3Dグラフィックに関するコマンドのセットのインタリーブされた組み合わせであることができる。セットは、ゼロ以上のコマンドの集合である。例えばビデオコマンドのセット内のコマンドは、コマンドストリーム26においてオーディオコマンドのセット内のコマンドとインタリーブされうる。いくつかの例において、コマンドストリーム26は、各々が複数のコマンドタイプのうちの1つに対応する複数のコマンドサブストリームを表し、対応するコマンドタイプに関するコマンドのセットを備える。すなわち、これらの例において、コマンドストリーム26は、図示されたようにインタリーブされないであろう。これらの例において、マルチプロセッサ10は、サブストリームを同時に処理できる。サブストリームは、マルチプロセッサ10が相対優先値に従ってサブストリームを処理するように、様々な関連付けられた優先順位を有することができる。マルチプロセッサ10は、これらのサブストリームに関連付けられている優先順位に基づいて別のサブストリームよりも頻繁に1つのサブストリームを読み取ることもできる。サブストリームの各々におけるコマンドは、1つのサブストリーム内のコマンドが別のサブストリーム内のコマンドに従属できるように、ユニークな識別子を有することができる。一般にマルチプロセッサ10は、サブストリームを含む、コマンドの1つまたは複数のストリームを処理できる。任意の所与のストリームにおけるコマンドは、同一のまたは別のストリーム内のコマンドに従属できる。コマンドストリーム26はコマンドに加え、各コマンドについて、そのコマンドが従属するコマンドストリーム26内のコマンドがある場合それを示す任意の長さの従属リストを含むことができる。別のコマンドが従属するコマンドは、以下、従属先と称される。コマンドストリーム26における特定のコマンドに関する従属リストは、特定のコマンドのタイプとは異なるタイプを有する従属先を示すことができる。例えばビデオコマンドは、3Dグラフィックタイプである従属先を有することができる。パイプライン内のコマンドの実行の完了はしばしば、他のコマンドのみではなく、様々なデバイスリソース例えば、デバイスメモリの応答性にも従属するので、コマンドが実行されるレートは非決定的である。例えばビデオパイプライン20は、別のパイプライン、あるいは図1のデバイス2の別の構成要素例えば、メインプロセッサ6とのシステムリソースをめぐるコリジョンを経験しうる。そのような例において、ビデオパイプライン20は、システムリソースが再び利用可能になるまで待機状態になることを強いられうる。従って、マルチメディアプロセッサ10の観点から、コマンドストリーム26における各コマンドのための実行時間は非決定的であり、実行時まで決定されないことがある。あるコマンドの従属先が待機状態にある一方で、コマンドストリーム26内の他の後続コマンドが満足された従属先を有しており、マルチメディアプロセッサ10のパイプラインのうちの1つにおける実行の準備ができている場合、マルチメディアプロセッサ10に到達したとおりのコマンドストリーム26の順序は次善である。コマンドストリーム26のコマンドが実行されるレートを高めるために、例示的なマルチメディアプロセッサ10はさらに、マルチメディアプロセッサ10のためのコマンドストリーム26内のコマンドを受信し、ビデオパイプライン20、3Dグラフィックパイプライン22、およびオーディオパイプライン24にコマンドを効率的に割り当てる、コマンド割当および同期プロセッサ12CDSプロセッサ12を含む。CDSプロセッサ12は、いくつかの場合、1つまたは複数のマイクロプロセッサ、特定用途向け集積回路ASIC、フィールドプログラマブルゲートアレイFPGA、ディスクリートロジック、ソフトウェア、ハードウェア、ファームウェア、またはそれらの任意の組み合わせとして実現されうる。様々な態様において、CDSプロセッサ12は、マルチメディアプロセッサ10とは別の構成要素として、例えば別の中央処理ユニット、マイクロプロセッサ、またはDSPとして実現される。本開示の原理に従って、CDSプロセッサ12は、コマンドストリーム26のコマンドを、ビデオパイプライン20、3Dグラフィックパイプライン22、およびオーディオパイプライン24に割り当てる前に並べ替えることができる。CDSプロセッサ12は、すでにパイプラインに割り当てられたコマンドに関する実行状態を分析することによってコマンドを並べ替え、その状態と、実行のためにまだパイプラインに割り当てられていないコマンドに関する従属情報とを比較する。特定のコマンドタイプに関するコマンドが、パイプラインのうちの1つまたは複数において満たされていない従属関係を有する場合、CDSプロセッサ12は、コマンドストリーム26から、他の、そのコマンドタイプの後続コマンドを割当てのために優先できる。CDSプロセッサ12は実際にコマンドストリーム26を並べ替え、コマンドストリーム26の従属情報によって指定された同期要件を順守しながら、あるコマンドが順序に反して実行することを可能にする。図3は、図2のコマンドストリーム26の典型的なサブセットであるコマンド28を示す。コマンド28は、各々がビデオまたは3Dグラフィックの2タイプのうちの1つを有する6つのコマンドを用いて、左から右への意図された実行順にインタリーブされている。コマンドは、コマンドストリーム26内の自身に先行する任意の他のコマンドに従属しうる。コマンド28のうちのいくつかは、従属関係矢印29A-29Eによって示された従属関係集合的に、従属関係29を有する。例えば従属関係矢印29Dは、3Dグラフィックコマンド3が3Dグラフィックコマンド2に従属していることを示す。いくつかの例において、1つのタイプを有するコマンドが、別のタイプを有するコマンドに従属しうる。例えば従属関係矢印29Bは、ビデオコマンド1が3Dグラフィックコマンド1に従属していることを示す。コマンドストリーム26は順序付けられているので、コマンドが後続のコマンドに従属することはできない。図4は、図2の典型的なCDSプロセッサ12をより詳細に示すブロック図である。CDSプロセッサ12は、コマンドストリーム26を受信し、その中のコマンドを、コマンドタイプに基づいて同期モジュール34A-34C集合的に、同期モジュール34のうちの1つに割り当てる割当モジュール30を含む。例えば割当モジュール30は、オーディオコマンドタイプに関連付けられた同期モジュールのうちの1つにオーディオコマンドを割り当てる。同期モジュール34は、割当モジュール30および従属マスクモジュール44と連動して、関連付けられたコマンドタイプの各々について、本明細書で説明されたコマンド並べ替え機能を実行する。同期モジュール34の各々は、特定のコマンドタイプに関連付けられていることにより、マルチメディアプロセッサ10の特定のパイプラインに関連付けられている。例えば同期モジュール34Aは、ビデオコマンドに関連付けられることができるので、ビデオパイプライン20図4には示さずにも関連付けられうる。様々な態様において、パイプラインの数によって、CDSプロセッサ12は、より多いまたはより少ない数の同期モジュールを有することができる。図4の例において、同期モジュール34は実質的に同様であるが、簡略化のために同期モジュール34Aは同期モジュール30B-30Cよりも詳細に示される。割当モジュール30は、同期モジュール34にコマンドを割当て、割当モジュール30は、各々が同期モジュール34のうちの特定の1つに関連付けられた3つのコマンドタイプ特定ストリームに、インタリーブされたコマンドストリーム26を効率的に逆多重化する。従って、例えば割当モジュール30は、同期モジュール34Aすなわち、ビデオコマンドに関連付けられたタイプを有するコマンドを含むコマンドタイプ特定コマンドストリームを生成する。各コマンドタイプ特定コマンドストリームは、コマンドストリーム26内にコマンドが現れる順序を維持する。コマンドストリーム26が、各々が複数のコマンドタイプのうちの1つに対応する複数のコマンドサブストリームを表す実施形態において、割当モジュール30は、コマンドタイプに対応する各サブストリーム内のコマンドを、そのコマンドタイプに関連付けられた同期モジュール34のうちの1つに割り当てることができる。同期モジュール34Aは、同期モジュール34Aが、コマンド間の従属情報を分析し、分析の結果に基づいてコマンドを並べ替えるために用いる、ステージングエリア36A、コマンドカウンタ38A、およびアクティブウインドウマスク40Aを含む。ステージングエリア36Aは、割当モジュール30から受信された優先順位情報およびコマンドデータと従属マスクとを含むコマンド情報を格納するレジスタを含む。ステージングエリア36Aは、所定の数のスロット46A1-46A4集合的に、スロット46Aを含み、スロット46Aの各々は、特定のコマンドに関するコマンド情報を格納している。様々な態様において、同期モジュール34は、同期モジュール34Aのステージングエリア36Aよりも多いまたは少ない数のスロットを有するステージングエリア36を含むことができる。すなわち、ステージングエリア36は、4つのスロットに限定されない。いくつかの態様において、同期モジュール34のうちの異なる1つが様々な数のスロットを有することができる。例えば同期モジュール34Aが4つのスロットを有し、同期モジュール34Bが8つのスロットを有することができる。いくつかの態様において、CDSプロセッサ12のあるアプリケーションのための性能を最大限に利用するために、同期モジュール34のためのスロットの数は可変である。同期モジュール34Aは、割当モジュール30によって生成されたタイプ特定コマンドストリームの先頭にあるコマンドを、スロット46Aのうちの利用可能な1つへ転送する。スロット46Aのいずれも利用可能でない場合、同期モジュール34Aは、スロット46Aのうちの1つが利用可能になるまで、タイプ特定コマンドストリームをブロックできる。以下で詳しく説明するように、同期モジュール34Aはその後、従属関係分析に基づいて、ステージングエリア36のスロット46Aにおけるコマンドの実行順序を並べ替える。ステージングエリア36によって格納されたコマンドが満足された従属関係を有する場合、同期モジュール34Aは、それらのコマンドを実行するために関連付けられたパイプラインすなわち、ビデオパイプライン20へ送る。タイプ特定コマンドストリーム内の各コマンドは、理論上、コマンドストリーム26内のコマンドに先行した他の任意のコマンドに従属できるので、同期モジュール34Aは、同期モジュール34Aが受信し実行するためにオフロードするコマンドの全てについて完了情報を格納する。完了情報は、先に実行されたコマンドの全てについて完了情報を格納するという要件によって、膨大な量となる可能性があるが、コマンドカウンタ38Aおよびアクティブウインドウマスク40Aは、完了情報を2つの値に圧縮する。コマンドカウンタ38Aおよびアクティブウインドウマスク40Aの値は、同期モジュール34Aに関連付けられたコマンドすなわち、ビデオコマンドに関するコマンド完了情報を保持するスライドウインドウを定める。まず、コマンドカウンタ38Aは、スライドウインドウの開始位置を定める。開始位置は、まだ実行されていない先行コマンドが存在しないタイプ特定コマンドストリーム内のコマンドの数に対応する。すなわち、タイプ特定コマンドストリーム内の第1のコマンドから数え、まだ実行されていないコマンドに達する前まで数えたコマンドの数である。コマンドカウンタ38Aよりも小さいコマンドカウントを有するコマンドを参照する従属先全てが実行されているので、満たされている。さらに、ステージングエリア36A内のスロット46Aの数が、スライドウインドウの大きさを定める。図4の例において、ステージングエリア36Aには4つのスロット46Aがある。従ってこの例において同期モジュール34Aのためのスライドウインドウは4つのコマンドを包含し、それらはスロット46Aによって保持される4つのコマンドに対応する。コマンドカウンタ38Aは、実行されていない先行コマンドが存在しない、タイプ特定コマンドストリーム内の最後のコマンドのコマンドカウントにスライドウインドウの開始位置を定めるので、スライドウインドウは、その最後のコマンドの直後のそれらのコマンドを包含する。スロット46A1はスライドウインドウ内の第1のコマンドを保持し、スロット46A2は第2のコマンドを保持し、以下同様である。いくつかの態様において、スロット46Aは不連続な順序でコマンドを保持し、追加のロジックがコマンドを様々なスロットにマップする。同期モジュール34Aによるコマンド並べ替えの結果、スロット46Aによって保持された、いくつかのコマンドが順序に反して実行されうる。例えばスロット46A2によって保持されたコマンドが、コマンドストリーム26内のスロット46A1によって保持されたコマンドに後続しているにもかかわらず、先に実行しうる。そのコマンドに従属しているコマンドがスライドウインドウによって包含されたかを同期モジュール34Aが判定できるように、アクティブウインドウマスク40Aは、ステージングエリア36A内のコマンドに関する完了情報を追跡する。アクティブウインドウマスク40Aは、スライドウインドウのサイズと等しいビット長を有する。これは、ステージングエリア36A内のスロット46Aによって保持された各コマンドのための1ビットに等しい。アクティブウインドウマスク40Aの最下位ビットLSBは、スロット46A1によって保持されたコマンドに関する完了状態を示す。次の最下位ビットは、スロット46A2によって保持されたコマンドに関する完了状態を示し、以下同様である。ビット値1は、対応するコマンドが実行されていることを示す。例えば、スロット46A1-46A4がそれぞれビデオコマンド10、11、12、および13を保持すると想定する。上述したように、コマンドカウンタ38Aおよびアクティブウインドウマスク40Aによって定められたスライドウインドウは、同期モジュール34Aの範囲内にあるまたは以前あったコマンド全ての完了を追跡する。この例において、コマンドカウンタ38Aは、値10を有するであろう。10は、まだ実行されていない先行コマンドが存在しない、タイプ特定コマンドストリーム内のコマンドすなわち、ビデオコマンド0-9の数である。ビデオコマンド11およびビデオコマンド12が実行されたとさらに想定しても、ビデオコマンド10およびビデオコマンド13はまだ実行されていない。従って、アクティブウインドウマスク40Aは、0×6のマスク値、あるいは2進法では0110bのマスク値を有する。ビデオコマンド10は、スロット46A1を空にする。その結果、同期モジュール34Aは、ビデオコマンド11、12、および13をスロット46A1-463へ進め、現在、割当モジュール30によって生成されたタイプ特定コマンドストリームの先頭にあるビデオコマンド14を新たに空になったスロット46A4へ転送する。さらに、同期モジュール34Aは、コマンドカウンタ38Aおよびアクティブウインドウマスク40Aにおける値を変更することによって、スライドウインドウを進める。具体的には、コマンドカウンタ38Aは値11を受信し、アクティブウインドウマスクは、ビデオコマンド13および14はまだ実行されていないがビデオコマンド11および12は実行されたことを示すために0×32進法の0011bのマスク値を受信する。いくつかの態様において、スロット46Aは不連続な順序でコマンドを保持することができ、追加のロジックがコマンドを様々なスロットにマップする。そのような態様において、同期モジュール34Aは、スロット46A4を開くためにコマンドを進める必要がなく、アクティブウインドウマスク40Aのビット位置が、対応するコマンドと一致したままになることがマッピングによって確実になる。同期モジュール34Aについて上述した教示は、同期モジュール34B-34Cにも同様に適用できる。その結果同期モジュール34は、割当モジュール30によって生成された3つのタイプ特定コマンドストリームの各々についてのコマンド完了情報を保持する。この例において、同期モジュール34Aは、ビデオパイプライン20に関連付けられたビデオコマンドに関するコマンド完了情報を保持する。同期モジュール34Bは、3Dグラフィックパイプライン22に関連付けられた3Dグラフィックコマンドに関するコマンド完了情報を保持する。最後に同期モジュール34Cは、オーディオパイプライン24に関連付けられたオーディオコマンドに関するコマンド完了情報を保持する。CDSプロセッサ12はさらに、ステージングエリア36A内のスロット46Aによって保持されたコマンドに関する従属関係を表すために、従属マスクを生成および保持するための従属マスクモジュール44を含む。特定のコマンドタイプを有するコマンドストリーム26内のコマンドは、任意のコマンドタイプである1つまたは複数の他のコマンドに従属しうるので、各コマンドは、コマンドタイプの各々のための1つの従属マスクに関連付けられている。その結果スロット46Aは、同期モジュール34の各々のための従属マスクを保持する。図1の例において、スロット46Aのうちの1つにおける各コマンドは、それぞれが同期モジュール34の各々のためである3つの従属マスクに関連付けられている。従ってコマンドのための従属マスクの全てが同期モジュール34のうちの1つに対応する。従属マスクは、同期モジュール34のうちの対応する1つのアクティブウインドウマスクのビット長に等しいビット長を有することができる。これは、同期モジュール34のうちの対応する1つのステージングエリア36内のスロット46によって保持された各コマンドのための1ビットに等しい。従属マスクにおけるビット値1は、スロット46のうちの1つによって保持された対応するコマンドへの従属関係を示す。例えば同期モジュール34Aに対応する従属マスクに関連付けられたコマンドの場合、従属マスクは、アクティブウインドウマスク40Aのビット長およびステージングエリア36Aにおけるスロット46の数と等しい4のビット長を有する。従属マスクのLSBは、従属マスクに関連付けられたコマンドとスロット46A1によって保持されたコマンドとの従属関係を示す。従属マスクの次の最下位ビットは、従属マスクに関連付けられたコマンドとスロット46A2によって保持されたコマンドとの従属関係を示し、以下同様である。例えば、従属マスクが0×92進法の1001bの値を有する場合、従属マスクに関連付けられたコマンドは、スロット46A1および46A4によって保持されたコマンドに従属する。従属マスクモジュール44は、コマンドが同期モジュール34のうちの1つのためのステージングエリア36に入る度に、全てのコマンドのための従属マスクを生成する。いくつかの態様において、ソフトウェアドライバまたはCDSプロセッサ12外の他のロジックが従属マスクモジュール44の機能を実行する。同期モジュール34Aの場合、同期モジュール34Aのためのスライドウインドウが進んだ後、スロット46Aのうちの1つが利用可能になると、同期モジュール34Aは、タイプ特定コマンドストリームの先頭にあるコマンドを、ステージングエリア36A内のスロット46A例えば、スロット46A4のうちの利用可能な1つへ転送できる。上述したように、コマンドストリームはさらに、そのコマンドのための従属リストを提供する。従属リストは、そのコマンドが従属しているコマンドストリーム26内の他のコマンドがある場合、それを示す。従属リスト内のエントリは、コマンドの、タイプ特定コマンドストリームにおける先行コマンドの数を表すコマンドカウント値によって、タイプ特定コマンドストリーム内のコマンドを参照する。例えばビデオコマンド0はビデオコマンドストリーム内の第1のビデオコマンドであり、ビデオコマンド1はビデオコマンドストリーム内の第2のコマンドであり、以下同様である。従属マスクモジュール44は、同期モジュール34Aによってステージングエリア36Aに転送されるコマンドに関する、割当モジュール30から従属リストを受信する。各コマンドに付いて、従属マスクモジュール44は、関連付けられた従属リスト内の各エントリと、同期モジュール34の各々のためのアクティブウインドウマスク40およびコマンドカウンタ38によって定められたスライドウインドウとを比較する。従属関係エントリが、参照されたコマンドに関連付けられた同期モジュール34のうちの1つのコマンドカウンタ38の値よりも小さいコマンドカウンタ値を有するコマンドを参照する場合、参照されたコマンドはすでに実行されているので、従属関係は満足されている。一方、従属関係エントリが、同期モジュール34のうちの1つのためのステージングエリア36によって現在保持されているコマンドを参照する場合、参照されたコマンドは、同期モジュール34のうちの上記1つのためのスライドウインドウ内にある。従って、従属マスクモジュール44は、参照されたコマンドが実行したかを判定するために、同期モジュール34のうちの上記1つのためのアクティブウインドウマスク40を評価する。参照されたコマンドがまだ実行していない場合、適切な従属マスクについて、従属マスクモジュール44は、参照されたコマンドを保持するスロット46のうちの1つに対応するビット位置内に1のビットを置く。その結果、従属マスクは、従属関係がまだ満たされていないことを示す。例えば同期モジュール34Aを参照すると、従属関係エントリがスロット46A2によって保持されるコマンドを参照し、アクティブウインドウマスク40Aが、スロット46A2に対応するビット位置内に値1を有する場合、従属マスクモジュール44は、同期モジュール34Aに関連付けられた従属マスク内のスロット46A2に対応するビット位置に1を置く。非ゼロ値を有する1つまたは複数の従属マスクを有するスロット46Aのうちの1つによって保持されたコマンドは、そのコマンドに関する残りの1つまたは複数の従属先が実行されるまで実行されることができない。いくつかの例において、到来するコマンドのための従属関係エントリは、同期モジュール34のうちの適切な1つのためのスライドウインドウの範囲外の別のコマンドを参照する。すなわち、参照されたコマンドは、実行されておらず、スライドウインドウ内に存在するのでもない。そのような例において従属マスクモジュール44は、到来するコマンドに関連付けられた同期モジュール34をブロックする、すなわち、タイプ特定コマンドストリームの先頭の到来するコマンドをステージングエリア36へ転送することを延期するように指示する。同期モジュール34のうちの1つのブロックは、参照されるコマンドを包含するようにスライドウインドウを進めるために十分な数のコマンドが実行すると、解除するであろう。従属マスクモジュール44は、上述した方法で、到来するコマンドのための従属リスト内で参照されたコマンドの各々を評価し、それによって同期モジュール34の各々について到来するコマンドのための従属マスクを生成する。従属マスクを生成すると、従属マスクモジュール44は、ステージングエリア36において到来するコマンドを保持するであろう同期モジュール34のうちの関連付けられた1つへ従属マスクを送信する。同期モジュール34のうちの関連付けられた1つは、割当モジュール30におけるタイプ特定コマンドストリームの先頭から到来するコマンドを、ステージングエリア36内のスロット46のうちの1つへ転送することを確実にする。ビデオパイプライン20、3Dグラフィックパイプライン22、およびオーディオパイプライン24は、コマンドの完了を、それぞれの関連付けられた同期モジュール34へ報告する。同期モジュール34、例えば同期モジュール34Aは、関連付けられたパイプラインからコマンド完了インジケーションを受信すると、完了したコマンドを保持するスロット46Aのうちの1つおよびそのスロットに対応するビット位置を決定する。同期モジュール34Aはその後、完了したコマンドに対応するビット位置にビットを設定するすなわち、ビット値を1に変更するためにアクティブウインドウマスク40Aを変更することによってスライドウインドウを更新する。さらに同期モジュール34Aは、コマンド完了を従属マスクモジュール44に通知し、ビット位置値を提供する。この通知は、信号、データ構成、メッセージ、ビットマスク、値、または別のメカニズムを備える。同期モジュール34によって保持されたコマンドの全てが、同期モジュール34Aに対応する、関連付けられた従属マスクを有する。従って、従属マスクモジュール44は通知を受信すると、適切なビット位置内のビットをクリアすなわち、値0を設定するために、同期モジュール34Aに対応する、同期モジュール34A-34Cの各々における従属マスク全てを変更する。適切なビット位置内でのビットのクリアは、そのビット位置に対応するコマンドに関連する任意の従属関係が満足されたことを示す。完了したコマンドが、同期モジュール34のうちの関連付けられた1つのためのアクティブウインドウマスク40のLSBに対応する場合、関連付けられた同期モジュール34は、コマンドカウンタ38をインクリメントすることおよびアクティブウインドウマスク40を1ビット右シフトすること右シフトは、アクティブウインドウマスク40の最上位ビットをゼロに設定するによって、スライドウインドウを進める。アクティブウインドウマスク40が1ビット右シフトするので、従属マスクモジュール44も同様に、関連付けられた同期モジュール34に対応する従属マスク全てを1ビット右シフトする。この方法において、従属マスクのためのビット位置内のビット値は、関連付けられた同期モジュール34のためのスライドウインドウ内のコマンドの場所と一致したままである。上述した処理の結果、従属マスクは各コマンドについて、そのコマンドの従属先の完了状態を正確に表す。コマンドのための従属マスクの全てがクリアされたすなわち、ゼロのビット値を有する場合、コマンドはまだ満たされていない従属関係を有していない。従って、そのコマンドに関連付けられた同期モジュール34のうちの1つは、コマンドを実行するために適切なパイプラインへ転送する。コマンド完了の結果、特定のステージングエリア36における1つより多いコマンドのための従属マスクをクリアする従属マスクモジュール44がクリアされる。そのような例において、両方のコマンドが実行のための準備が整う。コマンドストリーム26内のコマンドは、割当モジュール30がコマンドデータとともに同期モジュール34へ転送する優先順位情報に関連付けられている。優先順位情報は、特定のコマンドの、他の任意のコマンドの優先順位と比較された相対優先順位を示す番号または他の識別子である。同期モジュール34のためのステージングエリア36が優先順位情報を保持する。例えば同期モジュール34Aを参照すると、ステージングエリア36Aが、スロット46A内のコマンドに関連付けられた優先順位情報を保持する。従ってスロット46Aの各々は、特定のコマンドについて、コマンドデータ、コマンドに関する優先順位情報、およびコマンドのための従属マスクを保持する。優先順位情報は、関連付けられたコマンド、コマンドのタイプ例えば、リソース従属、複合、または他のファクタを含む、マルチメディアデバイス2で実行中のアプリケーションに関連しうる。同期モジュール34Aにおける2つ以上のコマンドが実行のための準備ができた場合、コマンドの相対優先順位が実行の順序を決定する。高い優先順位のコマンドが実行の優先権を有する。コマンドに関する相対優先順位が等しい場合、同期モジュール34Aは、優先権を決定するために別の方法例えば、ラウンドロビン、ランダム選択、先入れ先出しFIFOを用いることができる。あるコマンドは、従属先を有さない、あるいはコマンドストリーム26において先行する他のコマンドに関する従属関係よりも先に満足された従属関係を有することがある。同期モジュール34を用いると、CDSプロセッサ12は、先行コマンド自体が実行するまでそのコマンドをブロックするのではなく、コマンド従属関係が満たされるとそのコマンドを実行できる。従って、コマンドストリーム26内のコマンドは順序に反して実行されることができ、その結果、コマンドストリーム26に関するより高い全体実行レートがもたらされる。図5は、図4の同期モジュール34Aの一例をさらに詳しく、特定の動作状態について示すブロック図である。図5は、スロット46Aの描写を拡大し、コマンドデータ列47、優先順位列48、およびスロット46A1-46A4のための従属マスク列50A-50Cを示し、かつスロット46A内のそれら様々な列のための可能な値の例を提供する。従属マスク列50A-50Cは、図4のCDSプロセッサ12の同期モジュール34A-34Cに対応する。従って、例えば従属列50Aにおける従属マスクは、同期モジュール34Aによって保持されたコマンドに対応する。図示された動作状態において、スロット46A1-46A4はそれぞれビデオコマンド3-6を保持する。ビデオコマンド3を保持しているスロット46A1のための従属マスクB従属マスク列50Bは、値0010bを有する。第2のビット位置が値1を有するので、これは、同期モジュール34Bのステージングエリア36Bの第2のスロット内の対応する第2のコマンドへの従属を示す。別の例として、ビデオコマンド6を保持しているスロット46A4のための従属マスクA従属マスク列50Aは、値0001bを有する。これは、同期モジュール34Aのスロット46A1内のコマンドすなわち、ビデオコマンド3への従属を示す。コマンドカウンタ38Aおよびアクティブウインドウマスク40Aは、同期モジュール34Aのためのスライドウインドウ状態を表す。コマンドカウンタ38Aの値は、ビデオパイプライン20が第1の3つのビデオコマンドを完了したことを示す。アクティブウインドウマスク40Aの値は、同期モジュール34Aに関連付けられたビデオパイプライン20が、スロット46A2および46A3内のコマンドすなわち、ビデオコマンド4およびビデオコマンド5をさらに完了したことを示す。優先順位列48は、スロット46A内のコマンドの優先順位を示す。上述したように、同期モジュール34内の2つ以上のコマンドが例えばそれらの従属関係がクリアされたことによって同時に実行する準備ができた場合、高い相対優先順位を有するコマンドが実行の優先権を有する。例えば1の優先値を有するビデオコマンド6は、3の優先値を有するビデオコマンド3よりも高い相対優先順位を有する。図6は、ビデオパイプライン20によるビデオコマンド3の実行後の、図5の同期モジュール34Aの未来の動作状態を示すブロック図である。ビデオコマンド3の実行に応答して、同期モジュール34Aは、スロット内の他のコマンドを進めた後、タイプ特定コマンドストリームの先頭のコマンドであるビデオコマンド3をスロット46A4に転送した。さらに、同期モジュール34Aは、コマンドカウンタ38Aをインクリメントすることおよびアクティブウインドウマスク40Aを1ビット右シフトすることによって、スライドウインドウを進めた。最後に、図5におけるビデオコマンド3は、アクティブウインドウマスク40AのLSBに対応したので、従属マスクモジュール44は、全ての従属マスクA従属マスク列50Aを1ビット右シフトした。その結果、ビデオコマンド6のための従属マスクがクリアされた。しかし、ビデオコマンド6のための同期モジュール34Bに対応する従属マスク従属マスク列50Bはまだ従属関係を示すので、ビデオコマンド6はまだ実行のためにビデオパイプライン20へ転送されることができない。図7は、コマンド70、タイプ特定コマンドストリームのサブセット、およびタイプ特定コマンドストリームのための典型的なスライドウインドウを示すブロック図である。コマンド70は3Dグラフィックコマンドである。従属関係72A-72Dは、様々なコマンド間の従属関係を示す。例えば従属関係72Aは、3Dグラフィックコマンド16の3Dグラフィックコマンド15への従属を示す。コマンドカウンタ80は、スライドウインドウ82の開始位置を示す。この例においてコマンドカウンタ80は値16を有する。これは、3Dグラフィックコマンドに関連付けられた3Dグラフィックパイプライン図7には示さずによる、3Dグラフィックコマンドストリーム内の最初の16の3Dグラフィックコマンドの完了を示す。コマンドカウンタ80の値は、3Dグラフィックコマンド15のためのコマンドカウントよりも大きいので、従属関係72Aは満足されている。スライドウインドウ82は、コマンドカウンタ80に後続する4つのコマンドを包含する。従って、関連付けられた同期モジュール内のスロットは、3Dグラフィックコマンド15-19を保持する図7には示さず。スライドウインドウ82は、グラフィックコマンド17が、スライドウインドウ内の完了している唯一のコマンドであることを示す。スライドウインドウによって包含された最も古いコマンドこの例では、3Dグラフィックコマンド15の実行状態が、アクティブウインドウマスク84のLSBによって表される。従って、3Dグラフィックコマンドに関連付けられた同期モジュール図7には示さずにおけるスライドウインドウ82を表すアクティブウインドウマスク84は、値0010bを有する。図8は、本開示において説明された順序に反した実行技術を実現する図4のCDSプロセッサ12のための例示的な動作モードを示すフローチャートである。CDSプロセッサ12は、コマンドストリームの一部として、従属リストを有するコマンドを受信する100。従属リストはエントリを含み、各エントリは、コマンドストリーム内の、受信されたコマンド自体が実行されうる前に実行されるべきコマンドを示す。CDSプロセッサ12は、従属リストにおける各エントリと、エントリによって示されたコマンドのタイプに関連付けられた適切な同期モジュールのスライドウインドウとを比較することによって個々にエントリを処理する102。まずCDSプロセッサ12は、適切な同期モジュールのためのパイプラインが、エントリによって示されたコマンドを既に実行したかを判定する。エントリコマンドのコマンドカウントが同期モジュールのコマンドカウントよりも小さい場合104のYES分岐、エントリコマンドは既に実行されており、CDSプロセッサは従属関係をドロップする116。そうでない場合104のNO分岐、CDSプロセッサ12は、エントリコマンドがスライドウインドウの範囲外であるかを判定するために、エントリコマンドのコマンドカウントと、同期モジュールのアクティブウインドウマスクの長さとを比較する106。範囲外である場合106のYES分岐、CDSプロセッサ12は、受信したコマンドをブロックする118。ブロック状態は、エントリコマンドのための適切な同期モジュールが、エントリコマンドまでスライドウインドウを進めるために十分な数のコマンドを実行するまで継続するであろう。エントリコマンドがスライドウインドウによって包含されている場合106のNO分岐、CDSプロセッサ12は、適切な同期モジュールのアクティブウインドウマスク内のエントリコマンドに対応するビット位置内のビットを読み取る。ビットが空であるすなわち、値0を有する場合、アクティブウインドウマスクは、エントリコマンドが実行されたことを示す108のYES分岐。従ってCDSプロセッサ12は、従属関係をドロップする120。しかしビットが設定されているすなわち、値1を有する場合、エントリコマンドは実行されておらず、従属関係が残っている108のNO分岐。CDSプロセッサ12は、受信したコマンドのための適切な従属マスク内のエントリコマンドに対応するビットを設定する110。CDSプロセッサ12は次に、従属リストに残っているエントリがあるかを判定し、ある場合、次のエントリのためのエントリ処理を適用する112のYES分岐。CDSプロセッサ12が全てのエントリを処理すると112のNO分岐、CDSプロセッサ12は、従属リストエントリを分析することによって生成された従属マスクおよび受信したコマンドを、受信したコマンドに関連付けられた同期モジュールのステージングエリア内のスロットへ転送する。図9は、本開示において説明された順序に反した実行技術を実現する図4のCDSプロセッサ12による典型的な順序に反した実行動作を示すフローチャートである。CDSプロセッサ12の同期モジュール34Aは、同期モジュール34Aのためのステージングエリアによって保持されたコマンドをパイプラインが完了したことを同期モジュール34Aに示す、関連付けられたパイプラインから通知を受信する200。完了したコマンドが、同期モジュール34Aのためのアクティブウインドウマスク40Aの最下位ビットLSBに対応する場合202のYES分岐、同期モジュール34Aは、コマンドカウンタ38Aをインクリメントすることおよびアクティブウインドウマスク40Aを1ビット右シフトすることによって、スライドウインドウを進める204。さらに、CDSプロセッサ12の従属マスクモジュール44は、同期モジュール34Aに対応する同期モジュール34の各々における従属マスク全てを1ビット右シフトする。完了したコマンドが、同期モジュール34Aのためのアクティブウインドウマスク40Aの最下位ビットLSBに対応していない場合202のNO分岐、従属マスクモジュール44は、適切な従属マスクのために、完了したコマンドに対応するビット位置内のビットをクリアする206。従属マスクモジュール44が従属マスクを管理すると、同期モジュール34は、ステージングエリア36によって保持される1つまたは複数のコマンドのための従属マスクが新たにクリアされたかを判定する208。クリアされていなければ、同期モジュールは、関連付けられたパイプラインからの追加のコマンド完了通知の受信を待機する208のNO分岐。しかし、1つまたは複数のコマンドのための従属マスクが新たにクリアされた場合、それらのコマンドの従属関係は満たされており、コマンドは実行されうる208のYES分岐。準備ができたコマンドのための同期モジュール34は、コマンドを実行するために適切なパイプラインへ転送する210。この方式において、コマンドストリーム内の、先行する別の1つまたは複数のコマンドに関する従属関係より前に満足された従属関係を有するコマンドは、順序に反して、すなわち先行コマンドよりも先に実行されうる。本開示において説明された技術は、汎用マイクロプロセッサ、デジタル信号プロセッサDSP。特定用途向け集積回路ASIC、フィールドプログラマブルゲートアレイFPGA、プログラマブル論理デバイスPLD、または他の同等の論理デバイスのうちの1つまたは複数において実現されうる。従って、プロセッサまたはコントローラという用語は本明細書で用いられる場合、上記構成のうちの任意の1つまたは複数、あるいは本明細書で説明された技術の実現に適切な他の任意の構成を称することができる。本明細書に示された様々な構成要素は、ハードウェア、ソフトウェア、ファームウェア、またはそれらの任意の組み合わせの任意の適切な組み合わせによって実現されうる。図面において、様々な構成要素が別々のユニットまたはモジュールとして図示されている。しかしそれらの図面を参照して説明された様々な構成要素のうちのいくつかまたは全ては、共通のハードウェア、ファームウェア、および/またはソフトウェア内の結合されたユニットまたはモジュールに統合されうる。さらに、本明細書で説明された個々のモジュール、ユニット、または構成要素は、上述した様々な特徴または機能を提供する1つまたは複数のサブモジュール、サブユニット、またはサブ構成要素として実現されうる。従って、構成要素、ユニット、またはモジュールとして特徴を表したのは、例示の簡略化のために特定の機能的特徴を強調することが意図されており、別々のハードウェア、ファームウェア、またはソフトウェアの構成要素によるそのような特徴の実現は必ずしも必要ではない。いくつかの場合、様々なユニットは、1つまたは複数のプロセッサによって実行されたプログラム可能処理として実現されうる。本明細書においてモジュール、デバイス、または構成要素として説明された特徴は、統合論理デバイスによって集合的に、あるいは個別の相互運用可能な論理デバイスによって別々に実現されうる。様々な態様において、そのような構成要素は少なくとも部分的に、例えば集積回路チップまたはチップセットのような、集合的に集積回路デバイスと称されうる1つまたは複数の集積回路デバイスとして形成されうる。そのような回路は、単一の集積回路チップデバイスにおいて、あるいは複数の相互運用可能な集積回路チップデバイスにおいて提供され、様々な画像、ディスプレイ、オーディオ、あるいは他の多くのマルチメディアアプリケーションおよびデバイスにおいて用いられうる。例えばいくつかの態様において、そのような構成要素は、例えば無線通信デバイスハンドセット例えば、モバイル電話ハンドセットのようなモバイルデバイスの一部を形成できる。ソフトウェアによって実現される場合、本技術は、1つまたは複数のプロセッサによって実行されると、上述された1つまたは複数の方法を実行する命令を有するコードを備えるコンピュータ読取可能媒体によって少なくとも部分的に実現されうる。コンピュータ読取可能媒体は、包装材料を含みうる、コンピュータプログラム製品の一部を形成できる。コンピュータ読取可能媒体は、例えば同期型ダイナミックランダムアクセスメモリSDRAMのようなランダムアクセスメモリRAM、読取専用メモリROM、不揮発性ランダムアクセスメモリNVRAM、電気的消去可能プログラム可能読取専用メモリEEPROM、埋め込み式ダイナミックランダムアクセスメモリeDRAM、スタティックランダムアクセスメモリSRAM、フラッシュメモリ、磁気データ記憶媒体、または光学データ記憶媒体を備えることができる。ソフトウェアは、例えば1つまたは複数のDSP、汎用マイクロプロセッサ、ASIC、FPGA、または他の同等の統合論理回路あるいはディスクリート論理回路のような1つまたは複数のプロセッサによって実行されうる。本開示において様々な態様が説明された。これらの態様および他の態様は、以下の特許請求の範囲の範囲内である。