特許第5774699号(P5774699)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ クゥアルコム・インコーポレイテッドの特許一覧

特許5774699マルチメディアプロセッサにおける順序通りでないコマンド実行
<>
  • 特許5774699-マルチメディアプロセッサにおける順序通りでないコマンド実行 図000002
  • 特許5774699-マルチメディアプロセッサにおける順序通りでないコマンド実行 図000003
  • 特許5774699-マルチメディアプロセッサにおける順序通りでないコマンド実行 図000004
  • 特許5774699-マルチメディアプロセッサにおける順序通りでないコマンド実行 図000005
  • 特許5774699-マルチメディアプロセッサにおける順序通りでないコマンド実行 図000006
  • 特許5774699-マルチメディアプロセッサにおける順序通りでないコマンド実行 図000007
  • 特許5774699-マルチメディアプロセッサにおける順序通りでないコマンド実行 図000008
  • 特許5774699-マルチメディアプロセッサにおける順序通りでないコマンド実行 図000009
  • 特許5774699-マルチメディアプロセッサにおける順序通りでないコマンド実行 図000010
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】5774699
(24)【登録日】2015年7月10日
(45)【発行日】2015年9月9日
(54)【発明の名称】マルチメディアプロセッサにおける順序通りでないコマンド実行
(51)【国際特許分類】
   G06F 9/38 20060101AFI20150820BHJP
【FI】
   G06F9/38 310F
   G06F9/38 370X
【請求項の数】46
【全頁数】37
(21)【出願番号】特願2013-520769(P2013-520769)
(86)(22)【出願日】2011年7月15日
(65)【公表番号】特表2013-535728(P2013-535728A)
(43)【公表日】2013年9月12日
(86)【国際出願番号】US2011044285
(87)【国際公開番号】WO2012009701
(87)【国際公開日】20120119
【審査請求日】2013年3月18日
(31)【優先権主張番号】12/837,600
(32)【優先日】2010年7月16日
(33)【優先権主張国】US
(73)【特許権者】
【識別番号】595020643
【氏名又は名称】クゥアルコム・インコーポレイテッド
【氏名又は名称原語表記】QUALCOMM INCORPORATED
(74)【代理人】
【識別番号】100108855
【弁理士】
【氏名又は名称】蔵田 昌俊
(74)【代理人】
【識別番号】100109830
【弁理士】
【氏名又は名称】福原 淑弘
(74)【代理人】
【識別番号】100088683
【弁理士】
【氏名又は名称】中村 誠
(74)【代理人】
【識別番号】100103034
【弁理士】
【氏名又は名称】野河 信久
(74)【代理人】
【識別番号】100095441
【弁理士】
【氏名又は名称】白根 俊郎
(74)【代理人】
【識別番号】100075672
【弁理士】
【氏名又は名称】峰 隆司
(74)【代理人】
【識別番号】100119976
【弁理士】
【氏名又は名称】幸長 保次郎
(74)【代理人】
【識別番号】100153051
【弁理士】
【氏名又は名称】河野 直樹
(74)【代理人】
【識別番号】100140176
【弁理士】
【氏名又は名称】砂川 克
(74)【代理人】
【識別番号】100158805
【弁理士】
【氏名又は名称】井関 守三
(74)【代理人】
【識別番号】100172580
【弁理士】
【氏名又は名称】赤穂 隆雄
(74)【代理人】
【識別番号】100179062
【弁理士】
【氏名又は名称】井上 正
(74)【代理人】
【識別番号】100124394
【弁理士】
【氏名又は名称】佐藤 立志
(74)【代理人】
【識別番号】100112807
【弁理士】
【氏名又は名称】岡田 貴志
(74)【代理人】
【識別番号】100111073
【弁理士】
【氏名又は名称】堀内 美保子
(74)【代理人】
【識別番号】100134290
【弁理士】
【氏名又は名称】竹内 将訓
(72)【発明者】
【氏名】ジャオ、グオファン
(72)【発明者】
【氏名】ボード、アレクセイ・ブイ.
【審査官】 清木 泰
(56)【参考文献】
【文献】 米国特許第06950927(US,B1)
【文献】 欧州特許出願公開第02141586(EP,A1)
【文献】 米国特許出願公開第2003/0149862(US,A1)
【文献】 米国特許第06065105(US,A)
【文献】 米国特許第05710902(US,A)
【文献】 特開2001−337822(JP,A)
【文献】 David A. Patterson, John L. Hennessy著, 富田眞治, 外2名訳,コンピュータ・アーキテクチャ 設計・実現・評価の定量的アプローチ,日本,日経BP社,1993年 5月31日,第1版第2刷,Pages:284〜302
【文献】 Cheol-Ho Jeong, et al.,An effective out-of-order execution control scheme for an embedded floating point coprocessor,Microprocessors and Microsystems,Elsevier Science B.V.,2003年 5月20日,Volume:27, Issue:4,Pages:171-180
【文献】 John L. Hennessy, David A. Patterson,Computer Architecture A Quantitative Approach Third Edition,Morgan Kaufmann Publishers,2003年,Pages:181-189
【文献】 Guang Xu et al.,A Wire Delay Scalable Stream Processor Architecture,Proceedings of 13th Asia-Pacific Computer Systems Architecture Conference (ACSAC2008),IEEE,2008年 8月 4日,Pages:1-8
(58)【調査した分野】(Int.Cl.,DB名)
G06F9/38
(57)【特許請求の範囲】
【請求項1】
コマンド間従属情報を含む少なくとも1つのコマンドストリームであって、前記少なくとも1つのコマンドストリームは第1、第2、および第3のコマンドを備え、前記第2および第3のコマンドは前記第2のコマンドが前記第3のコマンドよりも先行するような前記少なくとも1つのコマンドストリームにおける第1の順序を有し、前記第1および第2のコマンドは前記第1のコマンドが前記第2のコマンドよりも先行するような前記少なくとも1つのコマンドストリームにおける順序を有し、前記第1のコマンドは、複数の処理パイプラインのうちの第1の1つに関連付けられ、前記第2のコマンドおよび前記第3のコマンドは前記複数の処理パイプラインのうちの別の第2の1つに関連付けられるものである、前記少なくとも1つのコマンドストリームを受信することと、
前記コマンド間従属情報に基づいて、前記第2のコマンドが、前記第1のコマンドの実行に従属するか否かと、前記第3のコマンドが前記第1のコマンドの実行と前記第2のコマンドの実行に従属するか否かを判断することと、
前記第2のコマンドが前記第1のコマンドの実行に従属し、かつ前記第3のコマンドが前記第1のコマンドの実行と前記第2のコマンドの実行のいずれにも従属しないのであれば、前記第2のコマンドおよび前記第3のコマンドを前記第1の順序とは異なる第2の順序で実行するように、プロセッサによって、先に、前記複数の処理パイプラインのうちの第2の1つに前記第3のコマンドを割り当て、前記複数の処理パイプラインのうちの第2の1つに前記第3のコマンドを割り当てた後で、前記複数の処理パイプラインのうちの第2の1つに前記第2のコマンドを割り当てることと、
前記複数の処理パイプラインのうちの第1の1つに関連付けられたコマンドの完了状態を表すための第1のスライドウインドウを保持することと、
前記複数の処理パイプラインのうちの前記第2の1つに関連付けられたコマンドの完了状態を表すための第2のスライドウインドウを保持することと
を備える方法。
【請求項2】
前記少なくとも1つのコマンドストリームは、前記複数の処理パイプラインのうちの第1の1つに関連付けられた順序付きコマンドの第1のセットと、前記複数の処理パイプラインのうちの第2の1つに関連付けられた順序付きコマンドの第2のセットとを備え、
前記第1のスライドウインドウは、前記第1のスライドウインドウの開始位置を表すコマンドカウンタを備え、前記開始位置は、前記複数の処理パイプラインのうちの第1の1つによってまだ実行されていない先行コマンドが残っていない、前記順序付きコマンドの第1のセット内の最後のコマンドに対応する、請求項1に記載の方法。
【請求項3】
前記第1のスライドウインドウは、前記第1のコマンドの完了状態を表す第1のビットを有するアクティブウインドウマスクを備える、請求項1に記載の方法。
【請求項4】
前記コマンド間従属情報に基づいて、前記第2のコマンドのための従属マスクを生成することをさらに備え、前記従属マスク内のビットは前記第2のコマンドが従属するコマンドの前記完了状態を示す、請求項1に記載の方法。
【請求項5】
前記第2のコマンドのための従属マスクを生成することは、
前記第1のコマンドの完了状態を決定することと、
前記第1のコマンドが実行されていない場合に、前記第2のコマンドのための従属マスク内に前記第1のコマンドに対応するビットを設定することと
を備える、請求項4に記載の方法。
【請求項6】
前記第1のスライドウインドウは前記第1のコマンドの完了状態を表す第1のビットを有するアクティブウインドウマスクを備え、
前記第1のコマンドの完了状態を決定することは、前記アクティブウインドウマスクの前記第1のビットを評価することを備える、請求項5に記載の方法。
【請求項7】
前記複数の処理パイプラインのうちの第1の1つから、前記第1のコマンドが実行されたという通知を受信することと、
前記通知に応答して、前記第2のコマンドのための従属マスク内の、前記第1のコマンドに対応するビットをクリアすることと
をさらに備える、請求項4に記載の方法。
【請求項8】
前記複数の処理パイプラインのうちの第1の1つから、前記第1のコマンドが完了したという通知を受信することと、
前記通知に応答して、前記第1のコマンドが前記従属マスク内の最下位ビットに対応する場合に、前記従属マスクを1ビット右シフトすることと
をさらに備える、請求項4に記載の方法。
【請求項9】
前記複数の処理パイプラインのうちの第2の1つに前記第2のコマンドを割り当てることは、
前記第2のコマンドのための前記従属マスク内のビットが空であるかを判定することと、
前記第2のコマンドのための前記従属マスク内のビットが空である場合のみ、前記複数の処理パイプラインのうちの第2の1つに前記第2のコマンドを割り当てることとを備える、請求項4に記載の方法。
【請求項10】
前記複数の処理パイプラインのうちの第1の1つから、前記第1のコマンドが完了したという通知を受信することと、
前記通知に応答して、前記第1のスライドウインドウを進めることと
をさらに備える、請求項1に記載の方法。
【請求項11】
前記少なくとも1つのコマンドストリームはさらに、第4のコマンドを備え、
前記第2のコマンドは優先値を有し、前記第4のコマンドは優先値を有し、
前記第1および第4のコマンドは前記第1のコマンドが前記第4のコマンドよりも先行するような前記少なくとも1つのコマンドストリームにおける順序を有し、
前記第4のコマンドは、複数の処理パイプラインのうちの前記第2の1つに関連付けられ、
前記コマンド間従属情報に基づいて、前記第4のコマンドが、前記第1のコマンドの実行に従属するか否かを判断することと、
前記第2のコマンドが前記第1のコマンドの実行に従属し、かつ前記第4のコマンドが前記第1のコマンドの実行に従属するのであれば、前記第2のコマンドおよび前記第4のコマンドの前記優先値に基づいた順序で、前記複数の処理パイプラインのうちの前記第2の1つに前記第2のコマンドおよび前記第4のコマンドを割り当てることと
をさらに備える、請求項1に記載の方法。
【請求項12】
コマンド間従属情報を含む少なくとも1つのコマンドストリームであって、前記少なくとも1つのコマンドストリームは第1、第2、および第3のコマンドを備え、前記第2および第3のコマンドは前記第2のコマンドが前記第3のコマンドに先行するような前記少なくとも1つのコマンドストリームにおける第1の順序を有し、前記第1および第2のコマンドは前記第1のコマンドが前記第2のコマンドよりも先行するような前記少なくとも1つのコマンドストリームにおける順序を有し、前記第1のコマンドは、複数の処理パイプラインのうちの第1の1つに関連付けられ、前記第2のコマンドおよび前記第3のコマンドは前記複数の処理パイプラインのうちの別の第2の1つに関連付けられるものである、前記少なくとも1つのコマンドストリームを受信
前記コマンド間従属情報に基づいて、前記第2のコマンドが、前記第1のコマンドの実行に従属するか否かと、前記第3のコマンドが前記第1のコマンドの実行と前記第2のコマンドの実行に従属するか否かを判断し、
前記第2のコマンドが前記第1のコマンドの実行に従属し、かつ前記第3のコマンドが前記第1のコマンドの実行と前記第2のコマンドの実行のいずれにも従属しないのであれば、前記第2のコマンドおよび前記第3のコマンドを前記第1の順序とは異なる第2の順序で実行するように、先に、前記複数の処理パイプラインのうちの前記第2の1つに前記第3のコマンドを割り当て、前記複数の処理パイプラインのうちの第2の1つに前記第3のコマンドを割り当てた後で、前記複数の処理パイプラインのうちの第2の1つに前記第2のコマンドを割り当てる
ように構成されたコマンド割当および同期プロセッサを備え、
前記コマンド割当および同期プロセッサはさらに、
前記複数の処理パイプラインのうちの第1の1つに関連付けられたコマンドの完了状態を表すための第1のスライドウインドウを保持し、
前記複数の処理パイプラインのうちの第2の1つに関連付けられたコマンドの完了状態を表すための第2のスライドウインドウを保持する
ように構成される、装置。
【請求項13】
前記少なくとも1つのコマンドストリームは、前記複数の処理パイプラインのうちの第1の1つに関連付けられた順序付きコマンドの第1のセットと、前記複数の処理パイプラインのうちの第2の1つに関連付けられた順序付きコマンドの第2のセットとを備え、
前記第1のスライドウインドウは、前記第1のスライドウインドウの開始位置を表すコマンドカウンタを備え、前記開始位置は、前記複数の処理パイプラインのうちの第1の1つによってまだ実行されていない先行コマンドが残っていない、前記順序付きコマンドの第1のセット内の最後のコマンドに対応する、請求項12に記載の装置。
【請求項14】
前記第1のスライドウインドウは、前記第1のコマンドの完了状態を表す第1のビットを有するアクティブウインドウマスクを備える、請求項12に記載の装置。
【請求項15】
前記コマンド割当および同期プロセッサはさらに、前記コマンド間従属情報に基づいて、前記第2のコマンドのための従属マスクを生成するように構成され、前記従属マスク内のビットは前記第2のコマンドが従属するコマンドの完了状態を示す、請求項12に記載の装置。
【請求項16】
前記第2のコマンドのための従属マスクを生成するために、前記コマンド割当および同期プロセッサはさらに、
前記第1のコマンドの完了状態を決定し、
前記第1のコマンドが実行されていない場合に、前記第2のコマンドのための従属マスク内に、前記第1のコマンドに対応するビットを設定する
ように構成された、請求項15に記載の装置。
【請求項17】
前記第1のスライドウインドウは前記第1のコマンドの完了状態を表す第1のビットを有するアクティブウインドウマスクを備え、
前記第1のコマンドの完了状態を決定するために、前記コマンド割当および同期プロセッサはさらに、前記アクティブウインドウマスクの前記第1のビットを評価するように構成された、請求項16に記載の装置。
【請求項18】
前記コマンド割当および同期プロセッサはさらに、
前記複数の処理パイプラインのうちの第1の1つから、前記第1のコマンドが実行されたという通知を受信し、
前記通知に応答して、前記第2のコマンドのための従属マスク内の、前記第1のコマンドに対応するビットをクリアする
ように構成された、請求項15に記載の装置。
【請求項19】
前記コマンド割当および同期プロセッサはさらに、
前記複数の処理パイプラインのうちの第1の1つから、前記第1のコマンドが完了したという通知を受信し、
前記通知に応答して、前記第1のコマンドが前記従属マスク内の最下位ビットに対応する場合、前記従属マスクを1ビット右シフトする
ように構成された、請求項15に記載の装置。
【請求項20】
前記複数の処理パイプラインのうちの第2の1つに前記第2のコマンドを割り当てるために、前記コマンド割当および同期プロセッサはさらに、
前記第2のコマンドのための前記従属マスク内のビットが空であるかを判定し、
前記第2のコマンドのための前記従属マスク内のビットが空である場合のみ、前記複数の処理パイプラインのうちの第2の1つに前記第2のコマンドを割り当てるように構成された、請求項15に記載の装置。
【請求項21】
前記コマンド割当および同期プロセッサはさらに、
前記複数の処理パイプラインのうちの第1の1つから、前記第1のコマンドが完了したという通知を受信し、
前記通知に応答して、前記第1のスライドウインドウを進める
ように構成された、請求項12に記載の装置。
【請求項22】
前記少なくとも1つのコマンドストリームはさらに第4のコマンドを備え、
前記第2のコマンドは優先値を有し、前記第4のコマンドは優先値を有し、
前記第1および第4のコマンドは前記第1のコマンドが前記第4のコマンドよりも先行するような前記少なくとも1つのコマンドストリームにおける順序を有し、
前記第4のコマンドは、複数の処理パイプラインのうちの前記第2の1つに関連付けられ、
前記コマンド割当および同期プロセッサはさらに、
前記コマンド間従属情報に基づいて、前記第4のコマンドが、前記第1のコマンドの実行に従属するか否かを判断し、
前記第2のコマンドが前記第1のコマンドの実行に従属し、かつ前記第4のコマンドが前記第1のコマンドの実行に従属するのであれば、前記第2のコマンドおよび前記第4のコマンドの優先値に基づいた順序で、前記複数の処理パイプラインのうちの第2の1つに前記第2のコマンドおよび前記第4のコマンドを割り当てる
ように構成された、請求項12に記載の装置。
【請求項23】
前記装置は、無線通信デバイスハンドセットを備える、請求項12に記載の装置。
【請求項24】
前記装置は、1つまたは複数の集積回路デバイスを備える、請求項12に記載の装置。
【請求項25】
コマンド間従属情報を含む少なくとも1つのコマンドストリームであって、前記少なくとも1つのコマンドストリームは第1、第2、および第3のコマンドを備え、前記第2および第3のコマンドは前記第2のコマンドが前記第3のコマンドに先行するような、前記少なくとも1つのコマンドストリームにおける第1の順序を有し、前記第1および第2のコマンドは前記第1のコマンドが前記第2のコマンドよりも先行するような前記少なくとも1つのコマンドストリームにおける順序を有し、前記第1のコマンドは、複数の処理パイプラインのうちの第1の1つに関連付けられ、前記第2のコマンドおよび前記第3のコマンドは前記複数の処理パイプラインのうちの別の第2の1つに関連付けられるものである、前記少なくとも1つのコマンドストリームを受信するための手段と、
前記コマンド間従属情報に基づいて、前記第2のコマンドが、前記第1のコマンドの実行に従属するか否かと、前記第3のコマンドが前記第1のコマンドの実行と前記第2のコマンドの実行に従属するか否かを判断するための手段と、
前記第2のコマンドが前記第1のコマンドの実行に従属し、かつ前記第3のコマンドが前記第1のコマンドの実行と前記第2のコマンドの実行のいずれにも従属しないのであれば、前記第2のコマンドおよび前記第3のコマンドを前記第1の順序とは異なる第2の順序で実行するように、先に、前記複数の処理パイプラインのうちの第2の1つに前記第3のコマンドを割り当て、前記複数の処理パイプラインのうちの第2の1つに前記第3のコマンドを割り当てた後で、前記複数の処理パイプラインのうちの第2の1つに前記第2のコマンドを割り当てるための手段と、
前記複数の処理パイプラインのうちの第1の1つに関連付けられたコマンドの完了状態を表すための第1のスライドウインドウを保持するための手段と、
前記複数の処理パイプラインのうちの第2の1つに関連付けられたコマンドの完了状態を表すための第2のスライドウインドウを保持するための手段と
を備えるデバイス。
【請求項26】
前記少なくとも1つのコマンドストリームは、前記複数の処理パイプラインのうちの第1の1つに関連付けられた順序付きコマンドの第1のセットと、前記複数の処理パイプラインのうちの第2の1つに関連付けられた順序付きコマンドの第2のセットとを備え、
前記第1のスライドウインドウは、前記第1のスライドウインドウの開始位置を表すコマンドカウンタを備え、前記開始位置は、前記複数の処理パイプラインのうちの第1の1つによってまだ実行されていない先行コマンドが残っていない、前記順序付きコマンドの第1のセット内の最後のコマンドに対応する、請求項25に記載のデバイス。
【請求項27】
前記第1のスライドウインドウは、前記第1のコマンドの完了状態を表す第1のビットを有するアクティブウインドウマスクを備える、請求項25に記載のデバイス。
【請求項28】
前記コマンド間従属情報に基づいて、前記第2のコマンドのための従属マスクを生成するための手段をさらに備え、前記従属マスク内のビットは前記第2のコマンドが従属するコマンドの完了状態を示す、請求項25に記載のデバイス。
【請求項29】
前記第2のコマンドのための従属マスクを生成するための手段はさらに、
前記第1のコマンドの完了状態を決定するための手段と、
前記第1のコマンドが実行されていない場合に、前記第2のコマンドのための従属マスク内に前記第1のコマンドに対応するビットを設定するための手段と
を備える、請求項28に記載のデバイス。
【請求項30】
前記第1のスライドウインドウは、前記第1のコマンドの完了状態を表す第1のビットを有するアクティブウインドウマスクを備え、
前記第1のコマンドの完了状態を決定することは、前記アクティブウインドウマスクの前記第1のビットを評価することを備える、請求項29に記載のデバイス。
【請求項31】
前記複数の処理パイプラインのうちの第1の1つから、前記第1のコマンドが実行されたという通知を受信するための手段と、
前記通知に応答して、前記第2のコマンドのための従属マスク内の、前記第1のコマンドに対応するビットをクリアするための手段と
をさらに備える、請求項28に記載のデバイス。
【請求項32】
前記複数の処理パイプラインのうちの第1の1つから、前記第1のコマンドが完了したという通知を受信するための手段と、
前記通知に応答して、前記第1のコマンドが前記従属マスク内の最下位ビットに対応する場合に、前記従属マスクを1ビット右シフトするための手段と
をさらに備える、請求項28に記載のデバイス。
【請求項33】
前記複数の処理パイプラインのうちの第2の1つに前記第2のコマンドを割り当てるための手段はさらに、
前記第2のコマンドのための前記従属マスク内のビットが空であるかを判定するための手段と、
前記第2のコマンドのための前記従属マスク内のビットが空である場合のみ、前記複数の処理パイプラインのうちの第2の1つに前記第2のコマンドを割り当てるための手段と
を備える、請求項28に記載のデバイス。
【請求項34】
前記複数の処理パイプラインのうちの第1の1つから、前記第1のコマンドが完了したという通知を受信するための手段と、
前記通知に応答して、前記第1のスライドウインドウを進めるための手段とをさらに備える、請求項25に記載のデバイス。
【請求項35】
前記少なくとも1つのコマンドストリームはさらに、第4のコマンドを備え、
前記第2のコマンドは優先値を有し、前記第4のコマンドは優先値を有し、
前記第1および第4のコマンドは前記第1のコマンドが前記第4のコマンドよりも先行するような前記少なくとも1つのコマンドストリームにおける順序を有し、
前記第4のコマンドは、複数の処理パイプラインのうちの前記第2の1つに関連付けられ、
前記コマンド間従属情報に基づいて、前記第4のコマンドが前記第1のコマンドの実行に従属するか否かを判断するための手段と、
前記第2のコマンドが前記第1のコマンドの実行に従属し、かつ前記第4のコマンドが前記第1のコマンドの実行に従属するのであれば、前記第2のコマンドおよび前記第4のコマンドの優先値に基づいた順序で、前記複数の処理パイプラインのうちの第2の1つに前記第2のコマンドおよび前記第4のコマンドを割当てるための手段と
をさらに備える、請求項25に記載のデバイス。
【請求項36】
プログラム可能プロセッサに、
コマンド間従属情報を含む少なくとも1つのコマンドストリームであって、前記少なくとも1つのコマンドストリームは第1、第2、および第3のコマンドを備え、前記第2および第3のコマンドは前記第2のコマンドが前記第3のコマンドに先行するような、前記少なくとも1つのコマンドストリームにおける第1の順序を有し、前記第1および第2のコマンドは前記第1のコマンドが前記第2のコマンドよりも先行するような前記少なくとも1つのコマンドストリームにおける順序を有し、前記第1のコマンドは、複数の処理パイプラインのうちの第1の1つに関連付けられ、前記第2のコマンドおよび前記第3のコマンドは前記複数の処理パイプラインのうちの別の第2の1つに関連付けられるものである、前記少なくとも1つのコマンドストリームを受信させ、
前記コマンド間従属情報に基づいて、前記第2のコマンドが、前記第1のコマンドの実行に従属するか否かと、前記第3のコマンドが前記第1のコマンドの実行と前記第2のコマンドの実行に従属するか否かを判断させ、
前記第2のコマンドが前記第1のコマンドの実行に従属し、かつ前記第3のコマンドが前記第1のコマンドの実行と前記第2のコマンドの実行のいずれにも従属しないのであれば、前記第2のコマンドおよび前記第3のコマンドを前記第1の順序とは異なる第2の順序で実行するように、先に、前記複数の処理パイプラインのうちの第2の1つに前記第3のコマンドを割り当てさせ、前記複数の処理パイプラインのうちの第2の1つに前記第3のコマンドを割り当てさせた後で、前記複数の処理パイプラインのうちの第2の1つに前記第2のコマンドを割り当てさせ、
前記複数の処理パイプラインのうちの第1の1つに関連付けられたコマンドの完了状態を表すための第1のスライドウインドウを保持させ、
前記複数の処理パイプラインのうちの第2の1つに関連付けられたコマンドの完了状態を表すための第2のスライドウインドウを保持させる
ための命令を備えるコンピュータ読取可能記憶媒体。
【請求項37】
前記少なくとも1つのコマンドストリームは、前記複数の処理パイプラインのうちの第1の1つに関連付けられた順序付きコマンドの第1のセットと、前記複数の処理パイプラインのうちの第2の1つに関連付けられた順序付きコマンドの第2のセットとを備え、
前記第1のスライドウインドウは、前記第1のスライドウインドウの開始位置を表すコマンドカウンタを備え、前記開始位置は、前記複数の処理パイプラインのうちの第1の1つによってまだ実行されていない先行コマンドが残っていない、前記順序付きコマンドの第1のセット内の最後のコマンドに対応する、請求項36に記載のコンピュータ読取可能記憶媒体。
【請求項38】
前記第1のスライドウインドウは、前記第1のコマンドの完了状態を表す第1のビットを有するアクティブウインドウマスクを備える、請求項36に記載のコンピュータ読取可能記憶媒体。
【請求項39】
前記コマンド間従属情報に基づいて、前記プログラム可能プロセッサに、前記第2のコマンドのための従属マスクを生成させるための命令をさらに備え、前記従属マスク内のビットは前記第2のコマンドが従属するコマンドの完了状態を示す、請求項36に記載のコンピュータ読取可能記憶媒体。
【請求項40】
前記第2のコマンドのための従属マスクを生成するために、前記プログラム可能プロセッサに、
前記第1のコマンドの完了状態を決定させ、
前記第1のコマンドが実行されていない場合に、前記第2のコマンドのための従属マスク内に、前記第1のコマンドに対応するビットを設定させる
ための命令をさらに備える、請求項39に記載のコンピュータ読取可能記憶媒体。
【請求項41】
前記第1のスライドウインドウは前記第1のコマンドの完了状態を表す第1のビットを有するアクティブウインドウマスクを備え、
前記第1のコマンドの完了状態を決定するために、
前記プログラム可能プロセッサに、前記アクティブウインドウマスクの第1のビットを評価させるための命令をさらに備える、
請求項40に記載のコンピュータ読取可能記憶媒体。
【請求項42】
前記プログラム可能プロセッサに、
前記複数の処理パイプラインのうちの第1の1つから、前記第1のコマンドが実行されたという通知を受信させ、
前記通知に応答して、前記第1のコマンドに対応する、前記第2のコマンドのための従属マスク内のビットをクリアさせる
ための命令をさらに備える、請求項39に記載のコンピュータ読取可能記憶媒体。
【請求項43】
前記プログラム可能プロセッサに、
前記複数の処理パイプラインのうちの第1の1つから、前記第1のコマンドが完了したという通知を受信させ、
前記通知に応答して、前記第1のコマンドが前記従属マスク内の最下位ビットに対応する場合に、前記従属マスクを1ビット右シフトさせる
ための命令をさらに備える、請求項39に記載のコンピュータ読取可能記憶媒体。
【請求項44】
前記複数の処理パイプラインのうちの第2の1つに前記第2のコマンドを割り当てるために、前記プログラム可能プロセッサに、
前記第2のコマンドのための前記従属マスク内のビットが空であるかを判定させ、
前記第2のコマンドのための前記従属マスク内のビットが空である場合のみ、前記複数の処理パイプラインのうちの第2の1つに前記第2のコマンドを割当てさせるための命令をさらに備える、請求項39に記載のコンピュータ読取可能記憶媒体。
【請求項45】
前記プログラム可能プロセッサに、
前記複数の処理パイプラインのうちの第1の1つから、前記第1のコマンドが完了したという通知を受信させ、
前記通知に応答して、前記第1のスライドウインドウを進めさせる
ための命令をさらに備える、請求項36に記載のコンピュータ読取可能記憶媒体。
【請求項46】
前記少なくとも1つのコマンドストリームは第4のコマンドをさらに備え、
前記第2のコマンドは優先値を有し、前記第4のコマンドは優先値を有し、
前記第1および第4のコマンドは前記第1のコマンドが前記第4のコマンドよりも先行するような前記少なくとも1つのコマンドストリームにおける順序を有し、
前記第4のコマンドは、複数の処理パイプラインのうちの前記第2の1つに関連付けられ、
前記プログラム可能プロセッサに、
前記コマンド間従属情報に基づいて、前記第4のコマンドが前記第1のコマンドの実行に従属するか否かを判断させ、
前記第2のコマンドが前記第1のコマンドの実行に従属し、かつ前記第4のコマンドが前記第1のコマンドの実行に従属するのであれば、前記第2のコマンドおよび前記第4のコマンドの優先値に基づいた順序で、前記複数の処理パイプラインのうちの第2の1つに前記第2のコマンドおよび前記第4のコマンドを割当てさせる
ための命令をさらに備える、請求項36に記載のコンピュータ読取可能記憶媒体。
【発明の詳細な説明】
【技術分野】
【0001】
本願は、コマンドストリームにおける複数のコマンドを処理することに関する。
【背景技術】
【0002】
先進的なマルチメディアプロセッサは、並行処理アーキテクチャを用い、それによって、複数の専用処理パイプラインがコマンドストリームの様々な命令を実行する。例えばマルチメディアプロセッサは、オーディオ処理、データ移動、ビデオ処理、および3Dグラフィック処理のための、それらメディア関連機能に対応するパイプラインを含むことができる。ソフトウェアによるマルチタスクおよび/またはマルチスレッド、および複数のメディア関連機能を立て続けに用いるプログラムによって、マルチメディアプロセッサのためのコマンドストリームは、1つまたは複数の処理パイプラインための、インタリーブされ順序付けられ組み合された複数の命令である。
【0003】
例えばビデオ上への3Dグラフィックオーバレイのような混合メディアアプリケーションは効率的な実行のための複数の処理パイプラインを要求することが多い。このような例では、要求された複数の処理パイプラインが、意図された混合メディア効果を達成するために、同時に実行している間同期されたままでなければならない。プロセッサドライバによって生成され、特定のコマンドの前に実行しなければならない任意のコマンドを特定するコマンド従属関係は、コマンドストリームにおける同期問題を示す。従属関係は、混合メディアアプリケーションにおいて複数のパイプラインを行き来するので、パイプラインの先頭にある従属命令が、別のパイプライン内の命令の完了を待機するためにブロックされるという非効率性がもたらされる。
【発明の概要】
【0004】
一般に、本開示は、少なくとも1つのコマンドストリームが実行しうる速度を改善するために複数のコマンドを並べ替えるための技術を説明する。これらコマンドをパイプラインに割り当てる前に、マルチメディアプロセッサは、複数のパイプライン間の従属関係(dependencies)を分析し、これらパイプラインの現在コマンド実行進捗を決定する。プロセッサは、その情報に基づいて、現在の従属関係が存在しないため適切なパイプラインによって即座に実行されうるコマンドを優先することによって、少なくとも1つのコマンドを並べ替える。少なくとも1つのコマンドストリームにおけるそのような順序に反したコマンドの実行により、少なくとも1つのコマンドストリームが実行されるレートを高め、マルチメディアプロセッサのスループットを増加できる。
【0005】
前処理ロジックは、コマンドストリームの並べ替えを達成するためにコマンド割当ておよび同期を実行できる。各パイプラインについて、プロセッサは、そのパイプラインのためのコマンドの数を待ち行列(queues)に入れるステージングエリアを保持できる。プリプロセッサはさらに、従属マスク(dependency mask)の形式で、各コマンドに関する従属情報(dependency information)をパイプラインの実行状態に関連付けることができる。従ってパイプラインのためのステージングエリア内の各コマンドは、パイプラインの各々のための別個の従属マスクに関連付けられうる。マルチプロセッサがコマンドを実行すると、プリプロセッサは、実行されたコマンドにおける任意の従属関係が満足されたことを反映するために従属マスクを修正する。コマンドのための従属マスク全てがクリアされると、プリプロセッサは、コマンドを適切なパイプラインに割り当てることができる。
【0006】
1つの例において、方法は、コマンド間従属情報を含む少なくとも1つのコマンドストリームを受信することであって、少なくとも1つのコマンドストリームは第1、第2、および第3のコマンドを備え、第2および第3のコマンドは、第2のコマンドが第3のコマンドに先行するような、少なくとも1つのコマンドストリームにおける第1の順序を有することを含む。方法はさらに、コマンド間従属情報に基づいて、第1のコマンドの先の実行に第2のコマンドが従属することを決定することと、複数の処理パイプラインのうちの第1の1つに第1のコマンドが関連付けられていることおよび複数の処理パイプラインの別の第2の1つに第2のコマンドおよび第3のコマンドが関連付けられていることを決定することとを備える。方法はさらに、複数の処理パイプラインのうちの第2の1つに第3のコマンドを割り当てることと、複数の処理パイプラインのうちの第2の1つに第3のコマンドを割り当てた後、第2のコマンドおよび第3のコマンドが第1の順序とは異なる第2の順序で実行するように、複数の処理パイプラインのうちの第2の1つに第2のコマンドを割り当てることとを備える。
【0007】
別の例において、装置は、コマンド間従属情報を含む少なくとも1つのコマンドストリームを受信するように構成されたコマンド割当および同期プロセッサを含み、少なくとも1つのコマンドストリームは第1、第2、および第3のコマンドを備え、第2および第3のコマンドは、第2のコマンドが第3のコマンドに先行するような、少なくとも1つのコマンドストリームにおける第1の順序を有する。コマンド割当および同期プロセッサはさらに、コマンド間従属情報に基づいて、第1のコマンドの先の実行に第2のコマンドが従属することを決定し、複数の処理パイプラインのうちの第1の1つに第1のコマンドが関連付けられていることおよび複数の処理パイプラインの別の第2の1つに第2のコマンドおよび第3のコマンドが関連付けられていることを決定するように構成される。コマンド割当および同期プロセッサはさらに、複数の処理パイプラインのうちの第2の1つに第3のコマンドを割り当て、複数の処理パイプラインのうちの第2の1つに第3のコマンドを割り当てた後、第2のコマンドおよび第3のコマンドが第1の順序とは異なる第2の順序で実行するように、複数の処理パイプラインのうちの第2の1つに第2のコマンドを割り当てるように構成される。
【0008】
別の例において、デバイスは、コマンド間従属情報を含む少なくとも1つのコマンドストリームを受信するための手段であって、少なくとも1つのコマンドストリームは第1、第2、および第3のコマンドを備え、第2および第3のコマンドは、第2のコマンドが第3のコマンドに先行するような、少なくとも1つのコマンドストリームにおける第1の順序を有する手段を含む。デバイスはさらに、コマンド間従属情報に基づいて、第1のコマンドの先の実行に第2のコマンドが従属することを決定するための手段と、複数の処理パイプラインのうちの第1の1つに第1のコマンドが関連付けられていることおよび複数の処理パイプラインの別の第2の1つに第2のコマンドおよび第3のコマンドが関連付けられていることを決定するための手段とを備える。デバイスはさらに、複数の処理パイプラインのうちの第2の1つに第3のコマンドを割り当てるための手段と、複数の処理パイプラインのうちの第2の1つに第3のコマンドを割り当てた後、第2のコマンドおよび第3のコマンドが第1の順序とは異なる第2の順序で実行するように、複数の処理パイプラインのうちの第2の1つに第2のコマンドを割り当てるための手段とを備える。
【0009】
別の例において、コンピュータ読取可能媒体は、プログラム可能プロセッサに、コマンド間従属情報を含む少なくとも1つのコマンドストリームを受信させるための命令を用いて符号化されており、少なくとも1つのコマンドストリームは第1、第2、および第3のコマンドを備え、第2および第3のコマンドは、第2のコマンドが第3のコマンドに先行するような、少なくとも1つのコマンドストリームにおける第1の順序を有する。命令はさらにプログラム可能プロセッサに、コマンド間従属情報に基づいて、第1のコマンドの先の実行に第2のコマンドが従属することを決定させ、複数の処理パイプラインのうちの第1の1つに第1のコマンドが関連付けられていることおよび複数の処理パイプラインの別の第2の1つに第2のコマンドおよび第3のコマンドが関連付けられていることを決定させる。命令はさらにプログラム可能プロセッサに、複数の処理パイプラインのうちの第2の1つに第3のコマンドを割り当てさせ、複数の処理パイプラインのうちの第2の1つに第3のコマンドを割り当てた後、第2のコマンドおよび第3のコマンドが第1の順序とは異なる第2の順序で実行するように、複数の処理パイプラインのうちの第2の1つに第2のコマンドを割り当てさせる。
【0010】
1つまたは複数の態様の詳細が、添付図面および下記説明において記載される。本発明の他の特徴、目的、および利点は、添付図面および特許請求の範囲から容易に分かるであろう。
【図面の簡単な説明】
【0011】
図1図1は、マルチメディアプロセッサとコマンド割当および同期プロセッサとを含むマルチメディアデバイスの例を示すブロック図である。
図2図2は、本明細書で説明された原理と一致した方式でコマンドストリームの並べ替えを実現するコマンド割当および同期プロセッサを有する典型的なマルチメディアプロセッサを示すブロック図である。
図3図3は、複数の処理パイプラインのためのインタリーブされた命令を有するコマンドストリームのサブセットの例を示すブロック図である。
図4図4は、本開示と一致する典型的なコマンド割当および同期プロセッサを示すブロック図である。
図5図5は、特定の動作状態における、本開示と一致する典型的な同期モジュールを示すブロック図である。
図6図6は、未来の動作状態における、図5の同期モジュールを示すブロック図である。
図7図7は、タイプ特定コマンドストリームの典型的なサブセットと、タイプ特定コマンドストリームのための典型的なスライドウインドウとを示すブロック図である。
図8図8は、順序に反したコマンド実行を実現するコマンド割当および同期プロセッサのための典型的な動作モードを示すフローチャートである。
図9図9は、本開示と一致した方式で、図4の典型的なコマンド割当および同期プロセッサによる典型的な順序に反した実行動作を示すフローチャートである。
【発明を実施するための形態】
【0012】
詳細な説明
図1は、マルチメディアプロセッサ10と、コマンド割当および同期プロセッサ12とを含む典型的なマルチメディアデバイス2の構成要素を示すブロック図である。マルチメディアデバイス2は、独立型デバイスまたは大きなシステムの一部であることができる。例えばマルチメディアデバイス2は、(例えば無線通信デバイスハンドセットのような)無線メディア通信デバイス、デジタルテレビ(TV)、ビデオ電話、デジタルマルチメディアプレーヤ、パーソナルデジタルアシスタント(PDA)、ビデオゲームコンソール、パーソナルコンピュータまたはラップトップデバイス、または他のビデオデバイスを備える、あるいはその一部であることができる。マルチメディアデバイス2はまた、上記デバイスの一部または全部において用いられうる1つまたは複数の集積回路またはチップに含まれることもできる。
【0013】
例示的なマルチメディアデバイス2は、デバイスメモリ8と、(「CPU6」と図示された)メインプロセッサ6と、マルチメディアプロセッサ10とを結合するシステムバス7を含む。デバイスメモリ8は、マルチメディアデバイス2のためのアプリケーションの実行中、CPU6およびマルチメディアプロセッサ10によって用いるためのプログラム命令および/またはデータを格納できる。例えばデバイスメモリ8は、マルチメディアプロセッサ10が、ディスプレイ上のグラフィックシーンをレンダリングするためのコンパイルド命令(compiled instructions)を格納し、レンダリング計算において用いるためのバーテックスアレイ(vertex arrays)、テクスチャ(textures)、ディスプレイリスト(display lists)等も格納できる。いくつかの場合において、デバイスメモリ8は、ディスプレイ15のためのフレームバッファを含むこともできる。デバイスメモリ8は、メモリコントローラを含むことができ、ランダムアクセスメモリ(RAM)、読取専用メモリ(ROM)、不揮発性ランダムアクセスメモリ(NVRAM)、電気的消去可能プログラム可能読取専用メモリ(EEPROM)、フラッシュメモリ等のうちの1つまたは複数を備えることができる。
【0014】
メインプロセッサ6は、例えば、デバイスメモリ8に格納された1つまたは複数のアプリケーションおよびオペレーティングシステムを実行することによって、マルチメディアデバイス2の動作を制御する。メインプロセッサ6は、マルチタスクおよびマルチスレッド方法によって複数のプログラムまたはプログラムスレッドを実行することができ、それによってメインプロセッサ6はプログラム(program)またはスレッドコンテキスト(thread contexts)間で迅速に切り替えることができる。ある例において、メインプロセッサ6において実行しているアプリケーションは、マルチメディアプロセッサ10によって実行されうる命令(instructions)を備えたり参照したりできる。例えばそのような例において、メインプロセッサ6は、デバイスメモリ8に格納されたマルチプロセッサ10のためのデバイスドライバのルーチン(routines of a device driver)を呼び出すことができ、その場合呼び出されたデバイスドライバルーチンは、マルチメディアプロセッサ10によって実行するための命令(instructions)を含む。
【0015】
マルチメディアプロセッサ10は、例えばビデオおよびオーディオ符号化/復号、圧縮、グラフィックレンダリング、ビデオおよびオーディオ信号処理等のような、マルチメディアデバイス2のためのメディア関連作業負荷の性能(performance of media related workloads)を向上させる1つまたは複数の専用プロセッサを含む。一般に、マルチメディアプロセッサは、高レベルの並列処理、並びにリアルタイムでオーディオおよびビデオ信号を処理する能力により特徴付けられる。従ってマルチメディアプロセッサ10は、マルチメディアデバイス2の特定のメディア関連機能に関連付けられたコマンドの処理専用の複数のメディア関連処理エリアを有することができる。マルチメディアプロセッサ10は、マルチメディアデバイス2のためのカード(例えば、ビデオカード)上に存在しうるので、メインプロセッサ6とは隔離しているが、システムバス7を介して結合されている。マルチメディアデバイス2のいくつかの例において、マルチメディアプロセッサ10は、メインプロセッサ6に組み込まれうる。
【0016】
マルチメディアデバイス2はまた、ユーザ(図示せず)へ出力するための、マルチメディアプロセッサ10からオーディオ信号またはビデオ信号をそれぞれ受信する、(「(複数の)スピーカ17」と図示された)スピーカ17およびディスプレイ15も含む。スピーカ17は、1つまたは複数のオーディオ出力デバイスであることができる。いくつかの態様において、スピーカ17は、マルチメディアプロセッサ10から受信された信号に基づいてオーディオ信号を生成するスピーカコントローラに結合されうる。ディスプレイ15は、標準的なモニタ、テレビ、モバイルデバイス液晶ディスプレイ(「LCD」)、または他のディスプレイデバイスであることができる。いくつかの態様において、ディスプレイ15は、マルチメディアプロセッサ10から受信された信号に基づいてビデオ信号を生成するディスプレイコントローラに結合されうる。
【0017】
マルチメディアデバイス2はまた、マルチメディアプロセッサ10と通信モジュール19との間で交換するために画像、3Dグラフィック、およびオーディオ信号をそれぞれ変換するためのビデオコーデック14、3Dグラフィックプロセッサ16、およびオーディオコーデック18も含む。通信モジュール19は、マルチメディアデバイス2と他のデバイスとの間の通信(例えば、無線通信)を可能にするネットワークインタフェースまたは他の構成要素であることができる。
【0018】
マルチメディアプロセッサ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つまたは複数の通信バスを介して通信するためのカスタムインタフェース(custom interfaces)を含む。
【0019】
マルチメディアデバイス2はまた、通信モジュール19を介して他のデバイスからビデオ信号、3Dグラフィック信号、および/またはオーディオ信号を受信することもできる。そのような例において、通信モジュール19は、解凍および/または復号(decompression and/or decoding)のために、ビデオコーデック14、3Dグラフィックプロセッサ16、およびオーディオコーデック18のうちの適切な1つへ受信信号を送信できる。ビデオコーデック14、3Dグラフィックプロセッサ16、およびオーディオコーデック18はその後、変換された信号を、更なる処理のためにマルチメディアプロセッサ10へ、または格納するためにデバイスメモリ8へ送信できる。
【0020】
ビデオコーデック14、3Dグラフィックプロセッサ16、およびオーディオコーデック18はそれぞれ、1つまたは複数のマイクロプロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、ディスクリートロジック、ソフトウェア、ハードウェア、ファームウェア、またはそれらの任意の組み合わせとして実現されうる。ビデオコーデック14、3Dグラフィックプロセッサ16、およびオーディオコーデック18のうちの1つまたは複数が、マルチメディアプロセッサ10の一部として統合されることもできる。例えばマルチメディアプロセッサ10は、ビデオコーデック14、3Dグラフィックプロセッサ16、およびオーディオコーデック18を含む単一のプロセッサコアであることができる。いくつかの例において、3Dグラフィックプロセッサ16は、グラフィック処理ユニット(「GPU」)を備えることができる。
【0021】
マルチメディアプロセッサ10は、メインプロセッサ6によって生成されたコマンドストリームの形式でコマンドを受信する。デバイスメモリ8は、コマンドストリームを格納し、要求された場合、マルチメディアプロセッサ10へ提供できる。いくつかの例において、マルチメディアプロセッサ10は、システムバス7を介してメインプロセッサ6から直接コマンドストリームを受信できる。コマンドストリームは、マルチメディアプロセッサ10によって実行するためのコマンド(すなわち、命令)の順序付けられたリストを備える。メインプロセッサ6において実行中のオペレーティングシステムおよびプログラムによるマルチタスクおよび/またはマルチスレッド、および複数のメディア関連機能を立て続けに用いることができるプログラムにより、メインプロセッサ6は、インタリーブされたコマンドタイプの組み合わせとしてコマンドストリームを生成できる。この場合各コマンドタイプは、マルチメディアプロセッサ10の複数の異なるメディア関連処理エリアのうちの1つに関連付けられている。
【0022】
例えば、メインプロセッサ6は、ビデオ関連サブルーチンを呼び出し、続けてオーディオ関連サブルーチンを呼び出すことができる。両方のサブルーチンがマルチメディアプロセッサ10において実行される場合、コマンドストリームは、オーディオコマンド(audio commands)が後続するビデオコマンド(video commands)を含むであろう。ビデオコマンドは、マルチメディアプロセッサ10のビデオ処理エリアに関連付けられており、オーディオコマンドは、マルチメディアプロセッサ10のオーディオ処理エリアに関連付けられている。
【0023】
コマンドストリーム内の1つまたは複数の特定のコマンドの実行はしばしば、コマンドストリームにおける後のコマンドの実行への必要条件となる。従って、後のコマンドが1つまたは複数の先行するコマンドに従属するという点において、コマンド間の従属関係が存在する。そのためコマンドストリームはコマンドに加え、コマンドの各々に関する従属情報を含む。従属情報は、あるコマンドが従属するコマンドストリーム内のコマンドが存在する場合それを示すことによって、そのコマンドに関する従属関係をマップする。
【0024】
混合媒体のシナリオにおいて、特定のメディア関連機能(例えば、ビデオ)のためのコマンドが、別のメディア関連機能(例えば、3Dグラフィック)に従属することがある。そのような機能間のコマンド従属関係は、マルチメディアプロセッサ10の異なるメディア関連処理エリア間の従属関係をもたらす。
【0025】
本開示において説明された原理に従うと、マルチメディアプロセッサ10は、マルチメディアプロセッサ10の関連付けられたメディア関連処理エリアへコマンドストリーム内の各コマンドを効率的に割り当てるコマンド割当および同期プロセッサ12(「CDSプロセッサ12」)を含む。
【0026】
以下で詳しく説明するように、CDSプロセッサ12は、コマンドストリーム内のコマンドに関する従属情報を分析し、コマンドに関する従属関係が満たされているか(すなわち、実行されたか)を判定し、満足されていれば、従属関係が満たされているコマンドをただちに実行するためにコマンドストリームを並べ替えることによって、マルチメディアプロセッサ10の異なるメディア関連処理エリアへコマンドを割り当てる。その際、CDSプロセッサ12は、従属情報によって指定された同期要件を順守する。この方式でコマンドを割当ておよび同期することによって、CDSプロセッサ12は、マルチプロセッサ10が高いコマンド実行レートを達成することを可能にする。
【0027】
本明細書で説明された教示は、ある利点を有することができる。例えばリソース従属命令は、コマンドストリームの順序においてリソース従属命令に後続する命令全てに影響を及ぼす長いパイプラインブロックを生じさせる高いレイテンシを有しうる。上記方法でコマンドを割当ておよび同期することによって、CDSプロセッサ12は、リソース従属命令より前に、影響を受けた命令を実行することによって、影響を受けた命令をブロックすることを回避できる。このようにパイプラインスループットを増加することにより、コマンドストリーム全体の一般的な実行レートが高まる傾向にあるので、マルチメディアプロセッサ10が高いコマンド実行レートを達成することが可能となる。
【0028】
図2は、本開示の教示に従って構成された例示的なマルチメディアプロセッサ10を示すブロック図である。マルチメディアプロセッサ12のためのメディア関連処理エリアは、ビデオパイプライン20、3Dグラフィックパイプライン22、およびオーディオパイプライン24の形式で命令パイプラインを含む。コマンドパイプラインは、複数のステージにコマンド処理を分割することによってコマンドスループットを増加させる傾向があり、処理の1つの態様を実行する各ステージは、任意の特定のコマンドを実行することが必要である。いくつかの例において、マルチメディアプロセッサ10は、他の様々なメディア関連機能に関連付けられた、あるいは図示されたパイプラインのうちの1つまたは複数(例えば、ビデオパイプライン20)を複写する、追加のパイプラインを有することができる。いくつかの例において、マルチメディアプロセッサ12は、より少ない数のパイプラインを有することができる、あるいはコマンドを実行するために非パイプラインベースのロジックを用いることができる。
【0029】
コマンドストリーム26は、マルチメディアプロセッサ10によって実行するためのコマンドのリストまたはシーケンスである。コマンドストリーム内の各コマンドは、マルチメディアプロセッサ12の特定のパイプラインに関連付けられている。マルチメディアプロセッサ10の例において、ビデオタイプのコマンドは、ビデオパイプライン20に関連付けられている。同様に、3Dグラフィックコマンドは3Dグラフィックパイプライン22に関連付けられている。最後に、オーディオコマンドは、オーディオパイプライン24に関連付けられている。
【0030】
コマンドストリーム26は順序付けられている、すなわちコマンドストリーム26内の各コマンドは、そのコマンドが従属しているコマンド全てに先行される。上述したように、コマンドストリーム26は、様々なコマンドタイプ(例えば、ビデオ、オーディオ、3Dグラフィック)に関するコマンドのセットのインタリーブされた組み合わせであることができる。セットは、ゼロ以上のコマンドの集合である。例えばビデオコマンドのセット内のコマンドは、コマンドストリーム26においてオーディオコマンドのセット内のコマンドとインタリーブされうる。いくつかの例において、コマンドストリーム26は、各々が複数のコマンドタイプのうちの1つに対応する複数のコマンドサブストリームを表し、対応するコマンドタイプに関するコマンドのセットを備える。すなわち、これらの例において、コマンドストリーム26は、図示されたようにインタリーブされないであろう。これらの例において、マルチプロセッサ10は、サブストリームを同時に処理できる。サブストリームは、マルチプロセッサ10が相対優先値に従ってサブストリームを処理するように、様々な関連付けられた優先順位を有することができる。マルチプロセッサ10は、これらのサブストリームに関連付けられている優先順位に基づいて別のサブストリームよりも頻繁に1つのサブストリームを読み取ることもできる。サブストリームの各々におけるコマンドは、1つのサブストリーム内のコマンドが別のサブストリーム内のコマンドに従属できるように、ユニークな識別子を有することができる。一般にマルチプロセッサ10は、サブストリームを含む、コマンドの1つまたは複数のストリームを処理できる。任意の所与のストリームにおけるコマンドは、同一のまたは別のストリーム内のコマンドに従属できる。
【0031】
コマンドストリーム26はコマンドに加え、各コマンドについて、そのコマンドが従属するコマンドストリーム26内のコマンドがある場合それを示す任意の長さの従属リストを含むことができる。別のコマンドが従属するコマンドは、以下、従属先と称される。コマンドストリーム26における特定のコマンドに関する従属リストは、特定のコマンドのタイプとは異なるタイプを有する従属先を示すことができる。例えばビデオコマンドは、3Dグラフィックタイプである従属先を有することができる。
【0032】
パイプライン内のコマンドの実行の完了はしばしば、他のコマンドのみではなく、様々なデバイスリソース(例えば、デバイスメモリ)の応答性にも従属するので、コマンドが実行されるレートは非決定的である。例えばビデオパイプライン20は、別のパイプライン、あるいは図1のデバイス2の別の構成要素(例えば、メインプロセッサ6)とのシステムリソースをめぐるコリジョンを経験しうる。そのような例において、ビデオパイプライン20は、システムリソースが再び利用可能になるまで待機状態になることを強いられうる。従って、マルチメディアプロセッサ10の観点から、コマンドストリーム26における各コマンドのための実行時間は非決定的であり、実行時まで決定されないことがある。あるコマンドの従属先が待機状態にある一方で、コマンドストリーム26内の他の後続コマンドが満足された従属先を有しており、マルチメディアプロセッサ10のパイプラインのうちの1つにおける実行の準備ができている場合、マルチメディアプロセッサ10に到達したとおりのコマンドストリーム26の順序は次善である。
【0033】
コマンドストリーム26のコマンドが実行されるレートを高めるために、例示的なマルチメディアプロセッサ10はさらに、マルチメディアプロセッサ10のためのコマンドストリーム26内のコマンドを受信し、ビデオパイプライン20、3Dグラフィックパイプライン22、およびオーディオパイプライン24にコマンドを効率的に割り当てる、コマンド割当および同期プロセッサ12(「CDSプロセッサ12」)を含む。CDSプロセッサ12は、いくつかの場合、1つまたは複数のマイクロプロセッサ、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、ディスクリートロジック、ソフトウェア、ハードウェア、ファームウェア、またはそれらの任意の組み合わせとして実現されうる。様々な態様において、CDSプロセッサ12は、マルチメディアプロセッサ10とは別の構成要素として、例えば別の中央処理ユニット、マイクロプロセッサ、またはDSPとして実現される。
【0034】
本開示の原理に従って、CDSプロセッサ12は、コマンドストリーム26のコマンドを、ビデオパイプライン20、3Dグラフィックパイプライン22、およびオーディオパイプライン24に割り当てる前に並べ替えることができる。CDSプロセッサ12は、すでにパイプラインに割り当てられたコマンドに関する実行状態を分析することによってコマンドを並べ替え、その状態と、実行のためにまだパイプラインに割り当てられていないコマンドに関する従属情報とを比較する。特定のコマンドタイプに関するコマンドが、パイプラインのうちの1つまたは複数において満たされていない従属関係を有する場合、CDSプロセッサ12は、コマンドストリーム26から、他の、そのコマンドタイプの後続コマンドを割当てのために優先できる。CDSプロセッサ12は実際にコマンドストリーム26を並べ替え、コマンドストリーム26の従属情報によって指定された同期要件を順守しながら、あるコマンドが順序に反して実行することを可能にする。
【0035】
図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は順序付けられているので、コマンドが後続のコマンドに従属することはできない。
【0036】
図4は、図2の典型的なCDSプロセッサ12をより詳細に示すブロック図である。CDSプロセッサ12は、コマンドストリーム26を受信し、その中のコマンドを、コマンドタイプに基づいて同期モジュール(synchronization modules)34A−34C(集合的に、「同期モジュール34」)のうちの1つに割り当てる割当モジュール(distribution module)30を含む。例えば割当モジュール30は、オーディオコマンドタイプに関連付けられた同期モジュールのうちの1つにオーディオコマンドを割り当てる。
【0037】
同期モジュール34は、割当モジュール30および従属マスクモジュール44と連動して、関連付けられたコマンドタイプの各々について、本明細書で説明されたコマンド並べ替え機能を実行する。同期モジュール34の各々は、特定のコマンドタイプに関連付けられていることにより、マルチメディアプロセッサ10の特定のパイプラインに関連付けられている。例えば同期モジュール34Aは、ビデオコマンドに関連付けられることができるので、ビデオパイプライン20(図4には示さず)にも関連付けられうる。様々な態様において、パイプラインの数によって、CDSプロセッサ12は、より多いまたはより少ない数の同期モジュールを有することができる。図4の例において、同期モジュール34は実質的に同様であるが、簡略化のために同期モジュール34Aは同期モジュール34B−34Cよりも詳細に示される。
【0038】
割当モジュール30は、同期モジュール34にコマンドを割当て、割当モジュール30は、各々が同期モジュール34のうちの特定の1つに関連付けられた3つのコマンドタイプ特定ストリームに、インタリーブされたコマンドストリーム26を効率的に逆多重化する。従って、例えば割当モジュール30は、同期モジュール34A(すなわち、ビデオコマンド)に関連付けられたタイプを有するコマンドを含むコマンドタイプ特定コマンドストリームを生成する。各コマンドタイプ特定コマンドストリームは、コマンドストリーム26内にコマンドが現れる順序を維持する。コマンドストリーム26が、各々が複数のコマンドタイプのうちの1つに対応する複数のコマンドサブストリームを表す実施形態において、割当モジュール30は、コマンドタイプに対応する各サブストリーム内のコマンドを、そのコマンドタイプに関連付けられた同期モジュール34のうちの1つに割り当てることができる。
【0039】
同期モジュール34Aは、同期モジュール34Aが、コマンド間の従属情報を分析し、分析の結果に基づいてコマンドを並べ替えるために用いる、ステージングエリア36A、コマンドカウンタ38A、およびアクティブウインドウマスク40Aを含む。ステージングエリア36Aは、割当モジュール30から受信された優先順位情報およびコマンドデータと従属マスクとを含むコマンド情報を格納するレジスタを含む。ステージングエリア36Aは、所定の数のスロット46A−46A(集合的に、「スロット46A」)を含み、スロット46Aの各々は、特定のコマンドに関するコマンド情報を格納している。
【0040】
様々な態様において、同期モジュール34は、同期モジュール34Aのステージングエリア36Aよりも多いまたは少ない数のスロットを有するステージングエリア36を含むことができる。すなわち、ステージングエリア36は、4つのスロットに限定されない。いくつかの態様において、同期モジュール34のうちの異なる1つが様々な数のスロットを有することができる。例えば同期モジュール34Aが4つのスロットを有し、同期モジュール34Bが8つのスロットを有することができる。いくつかの態様において、CDSプロセッサ12のあるアプリケーションのための性能を最大限に利用するために、同期モジュール34のためのスロットの数は可変である。
【0041】
同期モジュール34Aは、割当モジュール30によって生成されたタイプ特定コマンドストリームの先頭にあるコマンドを、スロット46Aのうちの利用可能な1つへ転送する。スロット46Aのいずれも利用可能でない場合、同期モジュール34Aは、スロット46Aのうちの1つが利用可能になるまで、タイプ特定コマンドストリームをブロックできる。以下で詳しく説明するように、同期モジュール34Aはその後、従属関係分析に基づいて、ステージングエリア36のスロット46Aにおけるコマンドの実行順序を並べ替える。ステージングエリア36によって格納されたコマンドが満足された従属関係を有する場合、同期モジュール34Aは、それらのコマンドを実行するために関連付けられたパイプライン(すなわち、ビデオパイプライン20)へ送る。タイプ特定コマンドストリーム内の各コマンドは、理論上、コマンドストリーム26内のコマンドに先行した他の任意のコマンドに従属できるので、同期モジュール34Aは、同期モジュール34Aが受信し実行するためにオフロードするコマンドの全てについて完了情報(completion information)を格納する。
【0042】
完了情報は、先に実行されたコマンドの全てについて完了情報を格納するという要件によって、膨大な量となる可能性があるが、コマンドカウンタ38Aおよびアクティブウインドウマスク40Aは、完了情報を2つの値に圧縮する。コマンドカウンタ38Aおよびアクティブウインドウマスク40Aの値は、同期モジュール34Aに関連付けられたコマンド(すなわち、ビデオコマンド)に関するコマンド完了情報を保持する「スライドウインドウ」を定める。まず、コマンドカウンタ38Aは、スライドウインドウの開始位置を定める。開始位置は、まだ実行されていない先行コマンドが存在しないタイプ特定コマンドストリーム内のコマンドの数に対応する。すなわち、タイプ特定コマンドストリーム内の第1のコマンドから数え、まだ実行されていないコマンドに達する前まで数えたコマンドの数である。コマンドカウンタ38Aよりも小さいコマンドカウントを有するコマンドを参照する従属先全てが実行されているので、満たされている。
【0043】
さらに、ステージングエリア36A内のスロット46Aの数が、スライドウインドウの大きさを定める。図4の例において、ステージングエリア36Aには4つのスロット46Aがある。従ってこの例において同期モジュール34Aのためのスライドウインドウは4つのコマンドを包含し、それらはスロット46Aによって保持される4つのコマンドに対応する。コマンドカウンタ38Aは、実行されていない先行コマンドが存在しない、タイプ特定コマンドストリーム内の最後のコマンドのコマンドカウントにスライドウインドウの開始位置を定めるので、スライドウインドウは、その最後のコマンドの直後のそれらのコマンドを包含する。スロット46Aはスライドウインドウ内の第1のコマンドを保持し、スロット46Aは第2のコマンドを保持し、以下同様である。いくつかの態様において、スロット46Aは不連続な順序でコマンドを保持し、追加のロジックがコマンドを様々なスロットにマップする。
【0044】
同期モジュール34Aによるコマンド並べ替えの結果、スロット46Aによって保持された、いくつかのコマンドが順序に反して実行されうる。例えばスロット46Aによって保持されたコマンドが、コマンドストリーム26内のスロット46Aによって保持されたコマンドに後続しているにもかかわらず、先に実行しうる。そのコマンドに従属しているコマンドがスライドウインドウによって包含されたかを同期モジュール34Aが判定できるように、アクティブウインドウマスク40Aは、ステージングエリア36A内のコマンドに関する完了情報を追跡する(tracks)。アクティブウインドウマスク40Aは、スライドウインドウのサイズと等しいビット長を有する。これは、ステージングエリア36A内のスロット46Aによって保持された各コマンドのための1ビットに等しい。アクティブウインドウマスク40Aの最下位ビット(「LSB」)は、スロット46Aによって保持されたコマンドに関する完了状態を示す。次の最下位ビットは、スロット46Aによって保持されたコマンドに関する完了状態を示し、以下同様である。ビット値「1」は、対応するコマンドが実行されていることを示す。
【0045】
例えば、スロット46A−46Aがそれぞれビデオコマンド#10、#11、#12、および#13を保持すると想定する。上述したように、コマンドカウンタ38Aおよびアクティブウインドウマスク40Aによって定められたスライドウインドウは、同期モジュール34Aの範囲内にあるまたは以前あったコマンド全ての完了を追跡する。この例において、コマンドカウンタ38Aは、値10を有するであろう。10は、まだ実行されていない先行コマンドが存在しない、タイプ特定コマンドストリーム内のコマンド(すなわち、ビデオコマンド#0−#9)の数である。ビデオコマンド#11およびビデオコマンド#12が実行されたとさらに想定しても、ビデオコマンド#10およびビデオコマンド#13はまだ実行されていない。従って、アクティブウインドウマスク40Aは、0×6のマスク値、あるいは2進法では0110bのマスク値を有する。
【0046】
ビデオコマンド#10は、スロット46Aを空にする。その結果、同期モジュール34Aは、ビデオコマンド#11、#12、および#13をスロット46A−46へ進め、(現在、割当モジュール30によって生成されたタイプ特定コマンドストリームの先頭にある)ビデオコマンド#14を新たに空になったスロット46Aへ転送する。さらに、同期モジュール34Aは、コマンドカウンタ38Aおよびアクティブウインドウマスク40Aにおける値を変更することによって、スライドウインドウを進める。具体的には、コマンドカウンタ38Aは値11を受信し、アクティブウインドウマスクは、ビデオコマンド#13および#14はまだ実行されていないがビデオコマンド#11および#12は実行されたことを示すために0×3(2進法の0011b)のマスク値を受信する。
【0047】
いくつかの態様において、スロット46Aは不連続な順序でコマンドを保持することができ、追加のロジックがコマンドを様々なスロットにマップする。そのような態様において、同期モジュール34Aは、スロット46Aを開くためにコマンドを進める必要がなく、アクティブウインドウマスク40Aのビット位置(bit places)が、対応するコマンドと一致したままになることがマッピングによって確実になる。
【0048】
同期モジュール34Aについて上述した教示は、同期モジュール34B−34Cにも同様に適用できる。その結果同期モジュール34は、割当モジュール30によって生成された3つのタイプ特定コマンドストリームの各々についてのコマンド完了情報を保持する。この例において、同期モジュール34Aは、ビデオパイプライン20に関連付けられたビデオコマンドに関するコマンド完了情報を保持する。同期モジュール34Bは、3Dグラフィックパイプライン22に関連付けられた3Dグラフィックコマンドに関するコマンド完了情報を保持する。最後に同期モジュール34Cは、オーディオパイプライン24に関連付けられたオーディオコマンドに関するコマンド完了情報を保持する。
【0049】
CDSプロセッサ12はさらに、ステージングエリア36A内のスロット46Aによって保持されたコマンドに関する従属関係を表すために、従属マスクを生成および保持するための従属マスクモジュール44を含む。特定のコマンドタイプを有するコマンドストリーム26内のコマンドは、任意のコマンドタイプである1つまたは複数の他のコマンドに従属しうるので、各コマンドは、コマンドタイプの各々のための1つの従属マスクに関連付けられている。その結果スロット46Aは、同期モジュール34の各々のための従属マスクを保持する。図1の例において、スロット46Aのうちの1つにおける各コマンドは、それぞれが同期モジュール34の各々のためである3つの従属マスクに関連付けられている。
【0050】
従ってコマンドのための従属マスクの全てが同期モジュール34のうちの1つに対応する。従属マスクは、同期モジュール34のうちの対応する1つのアクティブウインドウマスクのビット長に等しいビット長を有することができる。これは、同期モジュール34のうちの対応する1つのステージングエリア36内のスロット46によって保持された各コマンドのための1ビットに等しい。従属マスクにおけるビット値「1」は、スロット46のうちの1つによって保持された対応するコマンドへの従属関係を示す。
【0051】
例えば同期モジュール34Aに対応する従属マスクに関連付けられたコマンドの場合、従属マスクは、アクティブウインドウマスク40Aのビット長およびステージングエリア36Aにおけるスロット46の数と等しい4のビット長を有する。従属マスクのLSBは、従属マスクに関連付けられたコマンドとスロット46Aによって保持されたコマンドとの従属関係を示す。従属マスクの次の最下位ビットは、従属マスクに関連付けられたコマンドとスロット46Aによって保持されたコマンドとの従属関係を示し、以下同様である。例えば、従属マスクが0×9(2進法の1001b)の値を有する場合、従属マスクに関連付けられたコマンドは、スロット46Aおよび46Aによって保持されたコマンドに従属する。
【0052】
従属マスクモジュール44は、コマンドが同期モジュール34のうちの1つのためのステージングエリア36に入る度に、全てのコマンドのための従属マスクを生成する。いくつかの態様において、ソフトウェアドライバまたはCDSプロセッサ12外の他のロジックが従属マスクモジュール44の機能を実行する。同期モジュール34Aの場合、同期モジュール34Aのためのスライドウインドウが進んだ後、スロット46Aのうちの1つが利用可能になると、同期モジュール34Aは、タイプ特定コマンドストリームの先頭にあるコマンドを、ステージングエリア36A内のスロット46A(例えば、スロット46A)のうちの利用可能な1つへ転送できる。上述したように、コマンドストリームはさらに、そのコマンドのための従属リストを提供する。従属リストは、そのコマンドが従属しているコマンドストリーム26内の他のコマンドがある場合、それを示す。従属リスト内のエントリは、コマンドの、タイプ特定コマンドストリームにおける先行コマンドの数を表すコマンドカウント値によって、タイプ特定コマンドストリーム内のコマンドを参照する。例えばビデオコマンド#0はビデオコマンドストリーム内の第1のビデオコマンドであり、ビデオコマンド#1はビデオコマンドストリーム内の第2のコマンドであり、以下同様である。
【0053】
従属マスクモジュール44は、同期モジュール34Aによってステージングエリア36Aに転送されるコマンドに関する、割当モジュール30から従属リストを受信する。各コマンドに付いて、従属マスクモジュール44は、関連付けられた従属リスト内の各エントリと、同期モジュール34の各々のためのアクティブウインドウマスク40およびコマンドカウンタ38によって定められたスライドウインドウとを比較する。従属関係エントリが、参照されたコマンドに関連付けられた同期モジュール34のうちの1つのコマンドカウンタ38の値よりも小さいコマンドカウンタ値を有するコマンドを参照する場合、参照されたコマンドはすでに実行されているので、従属関係は満足されている。
【0054】
一方、従属関係エントリが、同期モジュール34のうちの1つのためのステージングエリア36によって現在保持されているコマンドを参照する場合、参照されたコマンドは、同期モジュール34のうちの上記1つのためのスライドウインドウ内にある。従って、従属マスクモジュール44は、参照されたコマンドが実行したかを判定するために、同期モジュール34のうちの上記1つのためのアクティブウインドウマスク40を評価する。参照されたコマンドがまだ実行していない場合、適切な従属マスクについて、従属マスクモジュール44は、参照されたコマンドを保持するスロット46のうちの1つに対応するビット位置内に「1」のビットを置く。その結果、従属マスクは、従属関係がまだ満たされていないことを示す。
【0055】
例えば同期モジュール34Aを参照すると、従属関係エントリがスロット46Aによって保持されるコマンドを参照し、アクティブウインドウマスク40Aが、スロット46Aに対応するビット位置内に値「1」を有する場合、従属マスクモジュール44は、同期モジュール34Aに関連付けられた従属マスク内のスロット46A2に対応するビット位置に「1」を置く。非ゼロ値を有する1つまたは複数の従属マスクを有するスロット46Aのうちの1つによって保持されたコマンドは、そのコマンドに関する残りの1つまたは複数の従属先が実行されるまで実行されることができない。
【0056】
いくつかの例において、到来するコマンドのための従属関係エントリは、同期モジュール34のうちの適切な1つのためのスライドウインドウの範囲外の別のコマンドを参照する。すなわち、参照されたコマンドは、実行されておらず、スライドウインドウ内に存在するのでもない。そのような例において従属マスクモジュール44は、到来するコマンドに関連付けられた同期モジュール34をブロックする、すなわち、タイプ特定コマンドストリームの先頭の到来するコマンドをステージングエリア36へ転送することを延期するように指示する。同期モジュール34のうちの1つのブロックは、参照されるコマンドを包含するようにスライドウインドウを進めるために十分な数のコマンドが実行すると、解除するであろう。
【0057】
従属マスクモジュール44は、上述した方法で、到来するコマンドのための従属リスト内で参照されたコマンドの各々を評価し、それによって同期モジュール34の各々について到来するコマンドのための従属マスクを生成する。従属マスクを生成すると、従属マスクモジュール44は、ステージングエリア36において到来するコマンドを保持するであろう同期モジュール34のうちの関連付けられた1つへ従属マスクを送信する。同期モジュール34のうちの関連付けられた1つは、割当モジュール30におけるタイプ特定コマンドストリームの先頭から到来するコマンドを、ステージングエリア36内のスロット46のうちの1つへ転送することを確実にする。
【0058】
ビデオパイプライン20、3Dグラフィックパイプライン22、およびオーディオパイプライン24は、コマンドの完了を、それぞれの関連付けられた同期モジュール34へ報告する。同期モジュール34、例えば同期モジュール34Aは、関連付けられたパイプラインからコマンド完了インジケーションを受信すると、完了したコマンドを保持するスロット46Aのうちの1つおよびそのスロットに対応するビット位置を決定する。同期モジュール34Aはその後、完了したコマンドに対応するビット位置にビットを設定する(すなわち、ビット値を「1」に変更する)ためにアクティブウインドウマスク40Aを変更することによってスライドウインドウを更新する。さらに同期モジュール34Aは、コマンド完了を従属マスクモジュール44に通知し、ビット位置値を提供する。この通知は、信号、データ構成、メッセージ、ビットマスク、値、または別のメカニズムを備える。同期モジュール34によって保持されたコマンドの全てが、同期モジュール34Aに対応する、関連付けられた従属マスクを有する。従って、従属マスクモジュール44は通知を受信すると、適切なビット位置内のビットをクリア(すなわち、値「0」を設定)するために、同期モジュール34Aに対応する、同期モジュール34A−34Cの各々における従属マスク全てを変更する。適切なビット位置内でのビットのクリアは、そのビット位置に対応するコマンドに関連する任意の従属関係が満足されたことを示す。
【0059】
完了したコマンドが、同期モジュール34のうちの関連付けられた1つのためのアクティブウインドウマスク40のLSBに対応する場合、関連付けられた同期モジュール34は、コマンドカウンタ38をインクリメントすることおよびアクティブウインドウマスク40を1ビット右シフトすること(右シフトは、アクティブウインドウマスク40の最上位ビットをゼロに設定する)によって、スライドウインドウを進める。アクティブウインドウマスク40が1ビット右シフトするので、従属マスクモジュール44も同様に、関連付けられた同期モジュール34に対応する従属マスク全てを1ビット右シフトする。この方法において、従属マスク(dependency masks)のためのビット位置(bit places)内のビット値は、関連付けられた同期モジュール34のためのスライドウインドウ内のコマンドの場所(locations of the commands)と一致したままである。
【0060】
上述した処理の結果、従属マスクは各コマンドについて、そのコマンドの従属先の完了状態を正確に表す。コマンドのための従属マスクの全てがクリアされた(すなわち、ゼロのビット値を有する)場合、コマンドはまだ満たされていない従属関係を有していない。従って、そのコマンドに関連付けられた同期モジュール34のうちの1つは、コマンドを実行するために適切なパイプラインへ転送する。
【0061】
コマンド完了の結果、特定のステージングエリア36における1つより多いコマンドのための従属マスクをクリアする従属マスクモジュール44がクリアされる。そのような例において、両方のコマンドが実行のための準備が整う。コマンドストリーム26内のコマンドは、割当モジュール30がコマンドデータとともに同期モジュール34へ転送する優先順位情報に関連付けられている。優先順位情報は、特定のコマンドの、他の任意のコマンドの優先順位と比較された相対優先順位を示す番号または他の識別子である。同期モジュール34のためのステージングエリア36が優先順位情報を保持する。例えば同期モジュール34Aを参照すると、ステージングエリア36Aが、スロット46A内のコマンドに関連付けられた優先順位情報を保持する。従ってスロット46Aの各々は、特定のコマンドについて、コマンドデータ、コマンドに関する優先順位情報、およびコマンドのための従属マスクを保持する。優先順位情報は、関連付けられたコマンド、コマンドのタイプ(例えば、リソース従属、複合)、または他のファクタを含む、マルチメディアデバイス2で実行中のアプリケーションに関連しうる。
【0062】
同期モジュール34Aにおける2つ以上のコマンドが実行のための準備ができた場合、コマンドの相対優先順位が実行の順序を決定する。高い優先順位のコマンドが実行の優先権を有する。コマンドに関する相対優先順位が等しい場合、同期モジュール34Aは、優先権を決定するために別の方法(例えば、ラウンドロビン、ランダム選択、先入れ先出し(FIFO))を用いることができる。
【0063】
あるコマンドは、従属先を有さない、あるいはコマンドストリーム26において先行する他のコマンドに関する従属関係よりも先に満足された従属関係を有することがある。同期モジュール34を用いると、CDSプロセッサ12は、先行コマンド自体が実行するまでそのコマンドをブロックするのではなく、コマンド従属関係が満たされるとそのコマンドを実行できる。従って、コマンドストリーム26内のコマンドは順序に反して実行されることができ、その結果、コマンドストリーム26に関するより高い全体実行レートがもたらされる。
【0064】
図5は、図4の同期モジュール34Aの一例をさらに詳しく、特定の動作状態について示すブロック図である。図5は、スロット46Aの描写を拡大し、コマンドデータ列47、優先順位列48、およびスロット46A−46Aのための従属マスク列50A−50Cを示し、かつスロット46A内のそれら様々な列のための可能な値の例を提供する。従属マスク列50A−50Cは、図4のCDSプロセッサ12の同期モジュール34A−34Cに対応する。従って、例えば従属マスク列50Aにおける従属マスクは、同期モジュール34Aによって保持されたコマンドに対応する。
【0065】
図示された動作状態において、スロット46A−46Aはそれぞれビデオコマンド#3−#6を保持する。ビデオコマンド#3を保持しているスロット46Aのための従属マスクB(従属マスク列50B)は、値0010bを有する。第2のビット位置が値「1」を有するので、これは、同期モジュール34Bのステージングエリア36Bの第2のスロット内の対応する第2のコマンドへの従属を示す。別の例として、ビデオコマンド#6を保持しているスロット46Aのための従属マスクA(従属マスク列50A)は、値0001bを有する。これは、同期モジュール34Aのスロット46A内のコマンド(すなわち、ビデオコマンド#3)への従属を示す。
【0066】
コマンドカウンタ38Aおよびアクティブウインドウマスク40Aは、同期モジュール34Aのためのスライドウインドウ状態を表す。コマンドカウンタ38Aの値は、ビデオパイプライン20が第1の3つのビデオコマンドを完了したことを示す。アクティブウインドウマスク40Aの値は、同期モジュール34Aに関連付けられたビデオパイプライン20が、スロット46Aおよび46A内のコマンド(すなわち、ビデオコマンド#4およびビデオコマンド#5)をさらに完了したことを示す。
【0067】
優先順位列48は、スロット46A内のコマンドの優先順位を示す。上述したように、同期モジュール34内の2つ以上のコマンドが(例えばそれらの従属関係がクリアされたことによって)同時に実行する準備ができた場合、高い相対優先順位を有するコマンドが実行の優先権を有する。例えば1の優先値を有するビデオコマンド#6は、3の優先値を有するビデオコマンド#3よりも高い相対優先順位を有する。
【0068】
図6は、ビデオパイプライン20によるビデオコマンド#3の実行後の、図5の同期モジュール34Aの未来の動作状態を示すブロック図である。ビデオコマンド#3の実行に応答して、同期モジュール34Aは、スロット内の他のコマンドを進めた後、タイプ特定コマンドストリームの先頭のコマンドであるビデオコマンド#3をスロット46Aに転送した。さらに、同期モジュール34Aは、コマンドカウンタ38Aをインクリメントすることおよびアクティブウインドウマスク40Aを1ビット右シフトすることによって、スライドウインドウを進めた。
【0069】
最後に、図5におけるビデオコマンド#3は、アクティブウインドウマスク40AのLSBに対応したので、従属マスクモジュール44は、全ての従属マスクA(従属マスク列50A)を1ビット右シフトした。その結果、ビデオコマンド#6のための従属マスクがクリアされた。しかし、ビデオコマンド#6のための同期モジュール34Bに対応する従属マスク(従属マスク列50B)はまだ従属関係を示すので、ビデオコマンド#6はまだ実行のためにビデオパイプライン20へ転送されることができない。
【0070】
図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は満足されている。
【0071】
スライドウインドウ82は、コマンドカウンタ80に後続する4つのコマンドを包含する。従って、関連付けられた同期モジュール内のスロットは、3Dグラフィックコマンド#15−#19を保持する(図7には示さず)。スライドウインドウ82は、グラフィックコマンド#17が、スライドウインドウ内の完了している唯一のコマンドであることを示す。スライドウインドウによって包含された最も古いコマンド(この例では、3Dグラフィックコマンド#15)の実行状態が、アクティブウインドウマスク84のLSBによって表される。従って、3Dグラフィックコマンドに関連付けられた同期モジュール(図7には示さず)におけるスライドウインドウ82を表すアクティブウインドウマスク84は、値0010bを有する。
【0072】
図8は、本開示において説明された順序に反した実行技術を実現する図4のCDSプロセッサ12のための例示的な動作モードを示すフローチャートである。
【0073】
CDSプロセッサ12は、コマンドストリームの一部として、従属リストを有するコマンドを受信する(100)。従属リストはエントリを含み、各エントリは、コマンドストリーム内の、受信されたコマンド自体が実行されうる前に実行されるべきコマンドを示す。CDSプロセッサ12は、従属リストにおける各エントリと、エントリによって示されたコマンドのタイプに関連付けられた適切な同期モジュールのスライドウインドウとを比較することによって個々にエントリを処理する(102)。
【0074】
まずCDSプロセッサ12は、適切な同期モジュールのためのパイプラインが、エントリによって示されたコマンドを既に実行したかを判定する。エントリコマンドのコマンドカウントが同期モジュールのコマンドカウントよりも小さい場合(104のYES分岐)、エントリコマンドは既に実行されており、CDSプロセッサは従属関係をドロップする(116)。そうでない場合(104のNO分岐)、CDSプロセッサ12は、エントリコマンドがスライドウインドウの範囲外であるかを判定するために、エントリコマンドのコマンドカウントと、同期モジュールのアクティブウインドウマスクの長さとを比較する(106)。範囲外である場合(106のYES分岐)、CDSプロセッサ12は、受信したコマンドをブロックする(118)。ブロック状態は、エントリコマンドのための適切な同期モジュールが、エントリコマンドまでスライドウインドウを進めるために十分な数のコマンドを実行するまで継続するであろう。
【0075】
エントリコマンドがスライドウインドウによって包含されている場合(106のNO分岐)、CDSプロセッサ12は、適切な同期モジュールのアクティブウインドウマスク内のエントリコマンドに対応するビット位置内のビットを読み取る。ビットが空である(すなわち、値「0」を有する)場合、アクティブウインドウマスクは、エントリコマンドが実行されたことを示す(108のYES分岐)。従ってCDSプロセッサ12は、従属関係をドロップする(120)。
【0076】
しかしビットが設定されている(すなわち、値「1」を有する)場合、エントリコマンドは実行されておらず、従属関係が残っている(108のNO分岐)。CDSプロセッサ12は、受信したコマンドのための適切な従属マスク内のエントリコマンドに対応するビットを設定する(110)。
【0077】
CDSプロセッサ12は次に、従属リストに残っているエントリがあるかを判定し、ある場合、次のエントリのためのエントリ処理を適用する(112のYES分岐)。CDSプロセッサ12が全てのエントリを処理すると(112のNO分岐)、CDSプロセッサ12は、従属リストエントリを分析することによって生成された従属マスクおよび受信したコマンドを、受信したコマンドに関連付けられた同期モジュールのステージングエリア内のスロットへ転送する。
【0078】
図9は、本開示において説明された順序に反した実行技術を実現する図4のCDSプロセッサ12による典型的な順序に反した実行動作を示すフローチャートである。
【0079】
CDSプロセッサ12の同期モジュール34Aは、同期モジュール34Aのためのステージングエリアによって保持されたコマンドをパイプラインが完了したことを同期モジュール34Aに示す、関連付けられたパイプラインから通知を受信する(200)。完了したコマンドが、同期モジュール34Aのためのアクティブウインドウマスク40Aの最下位ビット(LSB)に対応する場合(202のYES分岐)、同期モジュール34Aは、コマンドカウンタ38Aをインクリメントすることおよびアクティブウインドウマスク40Aを1ビット右シフトすることによって、スライドウインドウを進める(204)。さらに、CDSプロセッサ12の従属マスクモジュール44は、同期モジュール34Aに対応する同期モジュール34の各々における従属マスク全てを1ビット右シフトする。
【0080】
完了したコマンドが、同期モジュール34Aのためのアクティブウインドウマスク40Aの最下位ビット(LSB)に対応していない場合(202のNO分岐)、従属マスクモジュール44は、適切な従属マスクのために、完了したコマンドに対応するビット位置内のビットをクリアする(206)。
【0081】
従属マスクモジュール44が従属マスクを管理すると、同期モジュール34は、ステージングエリア36によって保持される1つまたは複数のコマンドのための従属マスクが新たにクリアされたかを判定する(208)。クリアされていなければ、同期モジュールは、関連付けられたパイプラインからの追加のコマンド完了通知の受信を待機する(208のNO分岐)。しかし、1つまたは複数のコマンドのための従属マスクが新たにクリアされた場合、それらのコマンドの従属関係は満たされており、コマンドは実行されうる(208のYES分岐)。準備ができたコマンドのための同期モジュール34は、コマンドを実行するために適切なパイプラインへ転送する(210)。この方式において、コマンドストリーム内の、先行する別の1つまたは複数のコマンドに関する従属関係より前に満足された従属関係を有するコマンドは、順序に反して、すなわち先行コマンドよりも先に実行されうる。
【0082】
本開示において説明された技術は、汎用マイクロプロセッサ、デジタル信号プロセッサ(DSP)。特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、プログラマブル論理デバイス(PLD)、または他の同等の論理デバイスのうちの1つまたは複数において実現されうる。従って、「プロセッサ」または「コントローラ」という用語は本明細書で用いられる場合、上記構成のうちの任意の1つまたは複数、あるいは本明細書で説明された技術の実現に適切な他の任意の構成を称することができる。
【0083】
本明細書に示された様々な構成要素は、ハードウェア、ソフトウェア、ファームウェア、またはそれらの任意の組み合わせの任意の適切な組み合わせによって実現されうる。図面において、様々な構成要素が別々のユニットまたはモジュールとして図示されている。しかしそれらの図面を参照して説明された様々な構成要素のうちのいくつかまたは全ては、共通のハードウェア、ファームウェア、および/またはソフトウェア内の結合されたユニットまたはモジュールに統合されうる。さらに、本明細書で説明された個々のモジュール、ユニット、または構成要素は、上述した様々な特徴または機能を提供する1つまたは複数のサブモジュール、サブユニット、またはサブ構成要素として実現されうる。従って、構成要素、ユニット、またはモジュールとして特徴を表したのは、例示の簡略化のために特定の機能的特徴を強調することが意図されており、別々のハードウェア、ファームウェア、またはソフトウェアの構成要素によるそのような特徴の実現は必ずしも必要ではない。いくつかの場合、様々なユニットは、1つまたは複数のプロセッサによって実行されたプログラム可能処理として実現されうる。
【0084】
本明細書においてモジュール、デバイス、または構成要素として説明された特徴は、統合論理デバイスによって集合的に、あるいは個別の相互運用可能な論理デバイスによって別々に実現されうる。様々な態様において、そのような構成要素は少なくとも部分的に、例えば集積回路チップまたはチップセットのような、集合的に集積回路デバイスと称されうる1つまたは複数の集積回路デバイスとして形成されうる。そのような回路は、単一の集積回路チップデバイスにおいて、あるいは複数の相互運用可能な集積回路チップデバイスにおいて提供され、様々な画像、ディスプレイ、オーディオ、あるいは他の多くのマルチメディアアプリケーションおよびデバイスにおいて用いられうる。例えばいくつかの態様において、そのような構成要素は、例えば無線通信デバイスハンドセット(例えば、モバイル電話ハンドセット)のようなモバイルデバイスの一部を形成できる。
【0085】
ソフトウェアによって実現される場合、本技術は、1つまたは複数のプロセッサによって実行されると、上述された1つまたは複数の方法を実行する命令を有するコードを備えるコンピュータ読取可能媒体によって少なくとも部分的に実現されうる。コンピュータ読取可能媒体は、包装材料を含みうる、コンピュータプログラム製品の一部を形成できる。コンピュータ読取可能媒体は、例えば同期型ダイナミックランダムアクセスメモリ(SDRAM)のようなランダムアクセスメモリ(RAM)、読取専用メモリ(ROM)、不揮発性ランダムアクセスメモリ(NVRAM)、電気的消去可能プログラム可能読取専用メモリ(EEPROM)、埋め込み式ダイナミックランダムアクセスメモリ(eDRAM)、スタティックランダムアクセスメモリ(SRAM)、フラッシュメモリ、磁気データ記憶媒体、または光学データ記憶媒体を備えることができる。ソフトウェアは、例えば1つまたは複数のDSP、汎用マイクロプロセッサ、ASIC、FPGA、または他の同等の統合論理回路あるいはディスクリート論理回路のような1つまたは複数のプロセッサによって実行されうる。
【0086】
本開示において様々な態様が説明された。これらの態様および他の態様は、以下の特許請求の範囲の範囲内である。
以下に、本願出願の当初の特許請求の範囲に記載された発明を付記する。
[C1] コマンド間従属情報を含む少なくとも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のコマンドを割り当てることとを備える方法。
[C2] 前記複数の処理パイプラインのうちの第1の1つに関連付けられたコマンドの完了状態を表すための第1のスライドウインドウを保持することと、
前記複数の処理パイプラインのうちの前記第2の1つに関連付けられたコマンドの完了状態を表すための第2のスライドウインドウを保持することとをさらに備える、C1に記載の方法。
[C3] 前記少なくとも1つのコマンドストリームは、前記複数の処理パイプラインのうちの第1の1つに関連付けられた順序付きコマンドの第1のセットと、前記複数の処理パイプラインのうちの第2の1つに関連付けられた順序付きコマンドの第2のセットとを備え、
前記第1のスライドウインドウは、前記第1のスライドウインドウの開始位置を表すコマンドカウンタを備え、前記開始位置は、前記複数の処理パイプラインのうちの第1の1つによってまだ実行されていない先行コマンドが残っていない、前記順序付きコマンドの第1のセット内の最後のコマンドに対応する、C2に記載の方法。
[C4] 前記第1のスライドウインドウは、前記第1のコマンドの完了状態を表す第1のビットを有するアクティブウインドウマスクを備える、C2に記載の方法。
[C5] 前記コマンド間従属情報に基づいて、前記第2のコマンドのための従属マスクを生成することをさらに備え、前記従属マスク内のビットは前記第1のスライドウインドウにおいて対応するコマンドのための前記完了状態を示す、C2に記載の方法。
[C6] 前記第2のコマンドのための従属マスクを生成することは、
前記第1のコマンドの完了状態を決定することと、
前記第1のコマンドが実行されていない場合に、前記第2のコマンドのための従属マスク内に前記第1のコマンドに対応するビットを設定することとを備える、C5に記載の方法。
[C7] 前記第1のスライドウインドウは前記第1のコマンドの完了状態を表す第1のビットを有するアクティブウインドウマスクを備え、
前記第1のコマンドの完了状態を決定することは、前記アクティブウインドウマスクの前記第1のビットを評価することを備える、C6に記載の方法。
[C8] 前記複数の処理パイプラインのうちの第1の1つから、前記第1のコマンドが実行されたという通知を受信することと、
前記通知に応答して、前記第2のコマンドのための従属マスク内の、前記第1のコマンドに対応するビットをクリアすることとをさらに備える、C5に記載の方法。
[C9] 前記複数の処理パイプラインのうちの第1の1つから、前記第2のコマンドが完了したという通知を受信することと、
前記通知に応答して、前記第1のコマンドが前記従属マスク内の最下位ビットに対応する場合に、前記従属マスクを1ビット右シフトすることとをさらに備える、C5に記載の方法。
[C10] 前記複数の処理パイプラインのうちの第1の1つに前記第2のコマンドを割り当てることは、
前記第1のコマンドに対応する、前記従属マスク内のビットが空であるかを判定することと、
前記第1のコマンドに対応する、前記従属マスク内のビットが空である場合のみ、前記複数の処理パイプラインのうちの第1の1つに前記第2のコマンドを割り当てることとを備える、C5に記載の方法。
[C11] 前記複数の処理パイプラインのうちの第1の1つから、前記第1のコマンドが完了したという通知を受信することと、
前記通知に応答して、前記第1のスライドウインドウを進めることと
を備える、C2に記載の方法。
[C12] 前記少なくとも1つのコマンドストリームはさらに、第4のコマンドを備え、
前記第2のコマンドは優先値を有し、前記第4のコマンドは優先値を有し、
前記コマンド間従属情報に基づいて、前記第4のコマンドが、前記第1のコマンドの先の実行に従属することを決定することと、
前記複数の処理パイプラインのうちの第2の1つに前記第4のコマンドが関連付けられていることを決定することと、
前記第2のコマンドおよび前記第4のコマンドの前記優先値に基づいた順序で、前記複数の処理パイプラインのうちの前記第2の1つに前記第2のコマンドおよび前記第4のコマンドを割り当てることとをさらに備える、C1に記載の方法。
[C13] コマンド間従属情報を含む少なくとも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のコマンドを割り当てるように構成されたコマンド割当および同期プロセッサを備える装置。
[C14] 前記コマンド割当および同期プロセッサはさらに、
前記複数の処理パイプラインのうちの第1の1つに関連付けられたコマンドの完了状態を表すための第1のスライドウインドウを保持し、
前記複数の処理パイプラインのうちの第2の1つに関連付けられたコマンドの完了状態を表すための第2のスライドウインドウを保持するように構成された、C13に記載の装置。
[C15] 前記少なくとも1つのコマンドストリームは、前記複数の処理パイプラインのうちの第1の1つに関連付けられた順序付きコマンドの第1のセットと、前記複数の処理パイプラインのうちの第2の1つに関連付けられた順序付きコマンドの第2のセットとを備え、
前記第1のスライドウインドウは、前記第1のスライドウインドウの開始位置を表すコマンドカウンタを備え、前記開始位置は、前記複数の処理パイプラインのうちの第1の1つによってまだ実行されていない先行コマンドが残っていない、前記順序付きコマンドの第1のセット内の最後のコマンドに対応する、C14に記載の装置。
[C16] 前記第1のスライドウインドウは、前記第1のコマンドの完了状態を表す第1のビットを有するアクティブウインドウマスクを備える、C14に記載の装置。
[C17] 前記コマンド割当および同期プロセッサはさらに、前記コマンド間従属情報に基づいて、前記第2のコマンドのための従属マスクを生成するように構成され、前記従属マスク内のビットは前記第1のスライドウインドウにおいて対応するコマンドに関する完了状態を示す、C14に記載の装置。
[C18] 前記第2のコマンドのための従属マスクを生成するために、前記コマンド割当および同期プロセッサはさらに、
前記第1のコマンドの完了状態を決定し、
前記第1のコマンドが実行されると、前記第2のコマンドのための従属マスク内に、前記第1のコマンドに対応するビットを設定するように構成された、C17に記載の装置。
[C19] 前記第1のスライドウインドウは前記第1のコマンドの完了状態を表す第1のビットを有するアクティブウインドウマスクを備え、
前記第1のコマンドの完了状態を決定するために、前記コマンド割当および同期プロセッサはさらに、前記アクティブウインドウマスクの前記第1のビットを評価するように構成された、C18に記載の装置。
[C20] 前記コマンド割当および同期プロセッサはさらに、
前記複数の処理パイプラインのうちの第1の1つから、前記第1のコマンドが実行されたという通知を受信し、
前記通知に応答して、前記第2のコマンドのための従属マスク内の、前記第1のコマンドに対応するビットをクリアするように構成された、C17に記載の装置。
[C21] 前記コマンド割当および同期プロセッサはさらに、
前記複数の処理パイプラインのうちの第1の1つから、前記第1のコマンドが完了したという通知を受信し、
前記通知に応答して、前記第1のコマンドが前記従属マスク内の最下位ビットに対応する場合、前記従属マスクを1ビット右シフトするように構成された、C17に記載の装置。
[C22] 前記複数の処理パイプラインのうちの第1の1つに前記第2のコマンドを割り当てるために、前記コマンド割当および同期プロセッサはさらに、
前記第1のコマンドに対応する、前記従属マスク内のビットが空であるかを判定し、
前記第1のコマンドに対応する、前記従属マスク内のビットが空である場合のみ、前記複数の処理パイプラインのうちの第1の1つに前記第2のコマンドを割り当てるように構成された、C17に記載の装置。
[C23] 前記コマンド割当および同期プロセッサはさらに、
前記複数の処理パイプラインのうちの第1の1つから、前記第1のコマンドが完了したという通知を受信し、
前記通知に応答して、前記第1のスライドウインドウを進める
ように構成された、C14に記載の装置。
[C24] 前記少なくとも1つのコマンドストリームはさらに第4のコマンドを備え、
前記第2のコマンドは優先値を有し、前記第4のコマンドは優先値を有し、
前記コマンド割当および同期プロセッサはさらに、
前記コマンド間従属情報に基づいて、前記第4のコマンドが前記第1のコマンドの先の実行に従属することを決定し、
前記複数の処理パイプラインのうちの第2の1つに前記第4のコマンドが関連付けられていることを決定し、
前記第2のコマンドおよび前記第4のコマンドの優先値に基づいた順序で、前記複数の処理パイプラインのうちの第2の1つに前記第2のコマンドおよび前記第4のコマンドを割り当てるように構成された、C13に記載の装置。
[C25] 前記装置は、無線通信デバイスハンドセットを備える、C13に記載の装置。
[C26] 前記装置は、1つまたは複数の集積回路デバイスを備える、C13に記載の装置。
[C27] コマンド間従属情報を含む少なくとも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のコマンドを割り当てるための手段とを備えるデバイス。
[C28] 前記複数の処理パイプラインのうちの第1の1つに関連付けられたコマンドの完了状態を表すための第1のスライドウインドウを保持するための手段と、
前記複数の処理パイプラインのうちの第2の1つに関連付けられたコマンドの完了状態を表すための第2のスライドウインドウを保持するための手段とをさらに備える、C27に記載のデバイス。
[C29] 前記少なくとも1つのコマンドストリームは、前記複数の処理パイプラインのうちの第1の1つに関連付けられた順序付きコマンドの第1のセットと、前記複数の処理パイプラインのうちの第2の1つに関連付けられた順序付きコマンドの第2のセットとを備え、
前記第1のスライドウインドウは、前記第1のスライドウインドウの開始位置を表すコマンドカウンタを備え、前記開始位置は、前記複数の処理パイプラインのうちの第1の1つによってまだ実行されていない先行コマンドが残っていない、前記順序付きコマンドの第1のセット内の最後のコマンドに対応する、C28に記載のデバイス。
[C30] 前記第1のスライドウインドウは、前記第1のコマンドの完了状態を表す第1のビットを有するアクティブウインドウマスクを備える、C28に記載のデバイス。
[C31] 前記コマンド間従属情報に基づいて、前記第2のコマンドのための従属マスクを生成するための手段をさらに備え、前記従属マスク内のビットは前記第1のスライドウインドウにおいて対応するコマンドに関する完了状態を示す、C28に記載のデバイス。
[C32] 前記第2のコマンドのための従属マスクを生成するための手段はさらに、
前記第1のコマンドの完了状態を決定するための手段と、
前記第1のコマンドが実行されていない場合に、前記第2のコマンドのための従属マスク内に前記第1のコマンドに対応するビットを設定するための手段とを備える、C31に記載のデバイス。
[C33] 前記第1のスライドウインドウは、前記第1のコマンドの完了状態を表す第1のビットを有するアクティブウインドウマスクを備え、
前記第1のコマンドの完了状態を決定することは、前記アクティブウインドウマスクの前記第1のビットを評価することを備える、C32に記載のデバイス。
[C34] 前記複数の処理パイプラインのうちの第1の1つから、前記第1のコマンドが実行されたという通知を受信するための手段と、
前記通知に応答して、前記第2のコマンドのための従属マスク内の、前記第1のコマンドに対応するビットをクリアするための手段とをさらに備える、C31に記載のデバイス。
[C35] 前記複数の処理パイプラインのうちの第1の1つから、前記第1のコマンドが完了したという通知を受信するための手段と、
前記通知に応答して、前記第1のコマンドが前記従属マスク内の最下位ビットに対応する場合に、前記従属マスクを1ビット右シフトするための手段とをさらに備える、C31に記載のデバイス。
[C36] 前記複数の処理パイプラインのうちの第1の1つに前記第2のコマンドを割り当てるための手段はさらに、
前記第1のコマンドに対応する、前記従属マスク内のビットが空であるかを判定するための手段と、
前記第1のコマンドに対応する、前記従属マスク内のビットが空である場合のみ、前記複数の処理パイプラインのうちの第1の1つに前記第2のコマンドを割り当てるための手段とを備える、C31に記載のデバイス。
[C37] 前記複数の処理パイプラインのうちの第1の1つから、前記第1のコマンドが完了したという通知を受信するための手段と、
前記通知に応答して、前記第1のスライドウインドウを進めるための手段とをさらに備える、C28に記載のデバイス。
[C38] 前記少なくとも1つのコマンドストリームはさらに、第4のコマンドを備え、
前記第2のコマンドは優先値を有し、前記第4のコマンドは優先値を有し、
前記コマンド間従属情報に基づいて、前記第4のコマンドが前記第1のコマンドの先の実行に従属することを決定するための手段と、
前記複数の処理パイプラインのうちの第2の1つに前記第4のコマンドが関連付けられていることを決定するための手段と、
前記第2のコマンドおよび前記第4のコマンドの優先値に基づいた順序で、前記複数の処理パイプラインのうちの第2の1つに前記第2のコマンドおよび前記第4のコマンドを割り当てるための手段とをさらに備える、C27に記載のデバイス。
[C39] プログラム可能プロセッサに、
コマンド間従属情報を含む少なくとも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のコマンドを割り当てさせるための命令を備えるコンピュータ読取可能記憶媒体。
[C40] 前記プログラム可能プロセッサに、
前記複数の処理パイプラインのうちの第1の1つに関連付けられたコマンドの完了状態を表すための第1のスライドウインドウを保持させ、
前記複数の処理パイプラインのうちの第2の1つに関連付けられたコマンドの完了状態を表すための第2のスライドウインドウを保持させるための命令をさらに備える、C39に記載のコンピュータ読取可能記憶媒体。
[C41] 前記少なくとも1つのコマンドストリームは、前記複数の処理パイプラインのうちの第1の1つに関連付けられた順序付きコマンドの第1のセットと、前記複数の処理パイプラインのうちの第2の1つに関連付けられた順序付きコマンドの第2のセットとを備え、
前記第1のスライドウインドウは、前記第1のスライドウインドウの開始位置を表すコマンドカウンタを備え、前記開始位置は、前記複数の処理パイプラインのうちの第1の1つによってまだ実行されていない先行コマンドが残っていない、前記順序付きコマンドの第1のセット内の最後のコマンドに対応する、C40に記載のコンピュータ読取可能記憶媒体。
[C42] 前記第1のスライドウインドウは、前記第1のコマンドの完了状態を表す第1のビットを有するアクティブウインドウマスクを備える、C40に記載のコンピュータ読取可能記憶媒体。
[C43] 前記コマンド間従属情報に基づいて、前記プログラム可能プロセッサに、前記第2のコマンドのための従属マスクを生成させるための命令をさらに備え、前記従属マスク内のビットは前記第1のスライドウインドウにおいて対応するコマンドに関する完了状態を示す、C40に記載のコンピュータ読取可能記憶媒体。
[C44] 前記第2のコマンドのための従属マスクを生成するために、前記プログラム可能プロセッサに、
前記第1のコマンドの完了状態を決定させ、
前記第1のコマンドが実行されていない場合に、前記第2のコマンドのための従属マスク内に、前記第1のコマンドに対応するビットを設定させるための命令をさらに備える、C43に記載のコンピュータ読取可能記憶媒体。
[C45] 前記第1のスライドウインドウは前記第1のコマンドの完了状態を表す第1のビットを有するアクティブウインドウマスクを備え、
前記第1のコマンドの完了状態を決定するために、
前記プログラム可能プロセッサに、前記アクティブウインドウマスクの第1のビットを評価させるための命令をさらに備える、C44に記載のコンピュータ読取可能記憶媒体。
[C46] 前記プログラム可能プロセッサに、
前記複数の処理パイプラインのうちの第1の1つから、前記第1のコマンドが実行されたという通知を受信させ、
前記通知に応答して、前記第1のコマンドに対応する、前記第2のコマンドのための従属マスク内のビットをクリアさせるための命令をさらに備える、C43に記載のコンピュータ読取可能記憶媒体。
[C47] 前記プログラム可能プロセッサに、
前記複数の処理パイプラインのうちの第1の1つから、前記第1のコマンドが完了したという通知を受信させ、
前記通知に応答して、前記第1のコマンドが前記従属マスク内の最下位ビットに対応する場合に、前記従属マスクを1ビット右シフトさせるための命令をさらに備える、C43に記載のコンピュータ読取可能記憶媒体。
[C48] 前記複数の処理パイプラインのうちの第1の1つに前記第2のコマンドを割り当てるために、前記プログラム可能プロセッサに、
前記第1のコマンドに対応する、前記従属マスク内のビットが空であるかを判定させ、
前記第1のコマンドに対応する、前記従属マスク内のビットが空である場合のみ、前記複数の処理パイプラインのうちの第1の1つに前記第2のコマンドを割当てさせるための命令をさらに備える、C43に記載のコンピュータ読取可能記憶媒体。
[C49] 前記プログラム可能プロセッサに、
前記複数の処理パイプラインのうちの第1の1つから、前記第1のコマンドが完了したという通知を受信させ、
前記通知に応答して、前記第1のスライドウインドウを進めさせる
ための命令をさらに備える、C40に記載のコンピュータ読取可能記憶媒体。
[C50] 前記少なくとも1つのコマンドストリームは第4のコマンドをさらに備え、
前記第2のコマンドは優先値を有し、前記第4のコマンドは優先値を有し、
前記プログラム可能プロセッサに、
前記コマンド間従属情報に基づいて、前記第4のコマンドが前記第1のコマンドの先の実行に従属することを決定させ、
前記複数の処理パイプラインのうちの第2の1つに前記第4のコマンドが関連付けられていることを決定させ、
前記第2のコマンドおよび前記第4のコマンドの優先値に基づいた順序で、前記複数の処理パイプラインのうちの第2の1つに前記第2のコマンドおよび前記第4のコマンドを割当てさせるための命令をさらに備える、C39に記載のコンピュータ読取可能記憶媒体。
図1
図2
図3
図4
図5
図6
図7
図8
図9