(57)【要約】  本明細書で開示される実施形態は、命令処理回路内の実行パイプラインからの冗長同期バリアの削除を含む。関連プロセッサシステム、方法、およびコンピュータ可読媒体もまた、開示される。同期イベントの発生を追跡することによって、不必要なソフトウェア同期動作を識別および削除することができ、それによって、中央処理装置(CPU)の性能を高める。一実施形態で、命令ストリームにおいて冗長同期バリアを削除するための方法が、提供される。本方法は、次の命令が第1の同期イベントに対応するタイプの同期バリアを備えるかどうかを判定するステップを含む。本方法はまた、次の命令が第1の同期イベントに対応するタイプの同期バリアを備えるという判定に応答して、命令ストリームから次の命令を削除するステップを含む。この方式で、各CPUクロック周期中に実行される命令の平均数は、不必要な同期動作を回避することによって、増やすことができる。
2016515262.tif 000002
【特許請求の範囲】
【請求項１】
命令ストリームにおいて冗長同期バリアを削除するための方法であって、
第1の同期イベントを検出するステップと、
命令ストリーム内の次の命令を検出するステップと、
前記次の命令が前記第1の同期イベントに対応するタイプの同期バリアを備えるかどうかを判定するステップと、
前記次の命令が前記第1の同期イベントに対応するタイプの同期バリアを備えるという判定に応答して、前記次の命令を前記命令ストリームから削除するステップと
を含む、方法。
【請求項２】
前記第1の同期イベントを検出するステップが、命令同期イベントを検出するステップを含み、
前記次の命令が前記第1の同期イベントに対応するタイプの同期バリアを備えるかどうかを判定するステップが、前記次の命令が命令同期バリアであるかどうかを検出するステップを含む、請求項1に記載の方法。
【請求項３】
前記第1の同期イベントを検出するステップが、データ同期イベントを検出するステップを含み、
前記次の命令が前記第1の同期イベントに対応するタイプの同期バリアを備えるかどうかを判定するステップが、前記次の命令がデータ同期バリアであるかどうかを検出するステップを含む、請求項1に記載の方法。
【請求項４】
前記第1の同期イベントを検出するステップが、同期フラグをセットするステップを含む、請求項1に記載の方法。
【請求項５】
前記次の命令が前記第1の同期イベントに対応するタイプの同期バリアを備えないという判定に応答して前記同期フラグを消去するステップをさらに含む、請求項4に記載の方法。
【請求項６】
前記次の命令が前記第1の同期イベントに対応するタイプの同期バリアを備えるかどうかを判定するステップが、前記同期フラグがセットされているかどうかを判定するステップを含む、請求項4に記載の方法。
【請求項７】
前記命令ストリームから前記次の命令を削除するステップが、前記命令ストリーム内の前記次の命令をノーオペレーションを指示する命令で置き換えるステップを含む、請求項1に記載の方法。
【請求項８】
前記命令ストリームから前記次の命令を削除するステップが、前記命令ストリームから前記次の命令を取り除くステップを含む、請求項1に記載の方法。
【請求項９】
第1の同期イベントを検出するように構成された、同期イベント検出回路と、
最適化回路であって、
命令ストリーム内の次の命令を検出すること、
前記次の命令が前記第1の同期イベントに対応するタイプの同期バリアを備えるかどうかを判定すること、および、
前記次の命令が前記第1の同期イベントに対応するタイプの同期バリアを備えるという判定に応答して、前記命令ストリームから前記次の命令を削除すること
を行うように構成された、最適化回路と
を備える、命令処理回路。
【請求項１０】
前記同期イベント検出回路が、前記第1の同期イベントの検出に応答して同期フラグをセットするようにさらに構成された、請求項9に記載の命令処理回路。
【請求項１１】
前記最適化回路が、前記命令ストリーム内の前記次の命令をノーオペレーションを指示する命令で置き換えることによって、前記命令ストリームから前記次の命令を削除するように構成された、請求項9に記載の命令処理回路。
【請求項１２】
前記最適化回路が、前記命令ストリームから前記次の命令を取り除くことによって、前記命令ストリームから前記次の命令を削除するように構成された、請求項9に記載の命令処理回路。
【請求項１３】
前記最適化回路が、前記次の命令が前記第1の同期イベントに対応するタイプの同期バリアを備えないという判定に応答して前記同期フラグを消去するようにさらに構成された、請求項9に記載の命令処理回路。
【請求項１４】
前記最適化回路が、前記同期フラグがセットされているかどうかを判定するように構成されることによって、前記次の命令が前記第1の同期イベントに対応するタイプの同期バリアを備えるかどうかを判定するように構成された、請求項9に記載の命令処理回路。
【請求項１５】
前記次の命令が、ISB(命令同期バリア)命令、DSB(データ同期バリア)命令、およびDMB(データメモリバリア)命令から成るグループから選択されたARM命令である、請求項9に記載の命令処理回路。
【請求項１６】
集積回路ダイに統合された、請求項9に記載の命令処理回路。
【請求項１７】
セットトップボックス、エンターテイメントユニット、ナビゲーションデバイス、通信デバイス、固定ロケーションデータユニット、モバイルロケーションデータユニット、携帯電話、セルラー電話、コンピュータ、ポータブルコンピュータ、デスクトップコンピュータ、パーソナルデジタルアシスタント(PDA)、モニタ、コンピュータモニタ、テレビジョン、チューナ、ラジオ、衛星ラジオ、音楽プレーヤ、デジタル音楽プレーヤ、ポータブル音楽プレーヤ、デジタルビデオプレーヤ、ビデオプレーヤ、デジタルビデオディスク(DVD)プレーヤ、およびポータブルデジタルビデオプレーヤから成るグループから選択されたデバイスに統合された、請求項9に記載の命令処理回路。
【請求項１８】
第1の同期イベントを検出するための手段と、
命令ストリーム内の次の命令を検出するための手段と、
前記次の命令が前記第1の同期イベントに対応するタイプの同期バリアを備えるかどうかを判定するための手段と、
前記次の命令が前記第1の同期イベントに対応するタイプの同期バリアを備えるという判定に応答して、前記命令ストリームから前記次の命令を削除するための手段と
を備える、命令処理回路。
【請求項１９】
方法をプロセッサに実施させるコンピュータ実行可能命令が記憶された、非一時的コンピュータ可読媒体であって、前記方法が、
第1の同期イベントを検出するステップと、
命令ストリーム内の次の命令を検出するステップと、
前記次の命令が前記第1の同期イベントに対応するタイプの同期バリアを備えるかどうかを判定するステップと、
前記次の命令が前記第1の同期イベントに対応するタイプの同期バリアを備えるという判定に応答して、前記命令ストリームから前記次の命令を削除するステップと
を含む、非一時的コンピュータ可読媒体。
【請求項２０】
前記命令ストリームから前記次の命令を削除するステップが、前記命令ストリーム内の前記次の命令をノーオペレーションを指示する命令で置き換えるステップを含む、前記方法を前記プロセッサに実施させるための前記コンピュータ実行可能命令が記憶された、請求項19に記載の非一時的コンピュータ可読媒体。
【請求項２１】
前記命令ストリームから前記次の命令を削除するステップが、前記命令ストリームから前記次の命令を取り除くステップを含む、前記方法を前記プロセッサに実施させるための前記コンピュータ実行可能命令が記憶された、請求項19に記載の非一時的コンピュータ可読媒体。
【請求項２２】
前記次の命令が前記第1の同期イベントに対応するタイプの同期バリアを備えると判定するステップが、同期フラグがセットされていると判定するステップを含む、前記方法を前記プロセッサに実施させるための前記コンピュータ実行可能命令が記憶された、請求項19に記載の非一時的コンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
優先出願
本出願は、参照によりその全部が本明細書に組み込まれている、2013年3月14日に出願した米国特許出願第13/829,315号、表題「ELIMINATING REDUNDANT SYNCHRONIZATION BARRIERS IN INSTRUCTION PROCESSING CIRCUITS, AND RELATED PROCESSOR SYSTEMS, METHODS, AND COMPUTER-READABLE MEDIA」の優先権を主張するものである。
【０００２】
本開示の技術は、中央処理装置(CPU)ベースのシステムにおけるパイプライン型コンピュータ命令の処理に関する。
【背景技術】
【０００３】
現在のコンピュータアーキテクチャにおける「命令パイプライン方式」の出現は、中央処理装置(CPU)資源の利用の改善とコンピュータアプリケーションのより高速な実行時間とをもたらした。命令パイプライン方式は、CPUによって処理されるコンピュータ命令のスループットが、各命令の処理を一連のステップに分割することによって増やされ得る、処理技法である。命令は、各ステージが各々の一連の命令のステップのうちの1つを実行する、複数のステージで構成される「実行パイプライン」で実行される。結果として、各CPUクロック周期に、複数の命令のステップが、並行して評価され得る。CPUは、複数の実行パイプラインを使用して、さらに性能を高めることができる。
【０００４】
命令パイプライン方式を実装するいくつかのコンピュータアーキテクチャは、投機的データ読取りおよびプログラム命令の順不同実行などのプロセッサ最適化を可能にすることができる。CPU性能のさらなる改善を実現しつつ、これらの最適化は、たとえば、実行プログラムが、指定された順序でデータがアクセスされることまたは命令が実行されることに依存する場合、意図されていないおよび/または好ましくないプログラムビヘイビアをもたらすことがある。加えて、実行命令は、その後の命令が実行を許可される前に無事に完了される必要があるCPUの状態の変化に影響を及ぼし得る。たとえば、CPUの状態の変化は、プロセッサモードの変更またはページテーブルの修正など、その後の命令がどのように資源にアクセスするかに影響を及ぼす変化を含み得る。
【０００５】
適切なプログラム実行を保証するために、「同期バリア」が、ソフトウェアで使用されて、前の動作(すなわち、データアクセスまたは命令実行)が、コード実行が継続を許可される前に完了することを保証することができる。同期バリアは、ARMアーキテクチャISB(instruction synchronization barrier:命令同期バリア)命令などの命令によって明示的に提供することができ、または、別の命令もしくは動作の部分として実装することができる。コンピュータのアーキテクチャは、他の動作ではソフトウェアが同期バリアを明示的に含むことを必要とする一方で、同期バリアを必要とする特定の動作がその同期をコンピュータのハードウェアによって自動的に処理され得ることを実現し得る。しかし、ソフトウェア同期バリアが存在するシナリオでは、別の同期動作がソフトウェア同期バリアの実行の直前に生じる場合に、そのソフトウェア同期バリアは冗長であると判明し得ることに、留意されたい。
【発明の概要】
【課題を解決するための手段】
【０００６】
本開示の実施形態は、命令処理回路内の実行パイプラインからの冗長同期バリアの削除と、関連プロセッサシステム、方法、およびコンピュータ可読媒体を含む。いくつかの動作で、コンピュータのアーキテクチャは、同期動作もまたソフトウェア同期バリアの実行の直前に生じ得るとしても、ソフトウェア同期バリアが使用されることを必要とし得る。同期イベントの発生を追跡することによって、不必要なソフトウェア同期バリアは、識別および削除することができ、それによって中央処理装置(CPU)の性能を高める。
【０００７】
これに関連して、一実施形態で、命令ストリームにおいて冗長同期バリアを削除するための方法が、提供される。本方法は、第1の同期イベントを検出するステップを含む。本方法はさらに、命令ストリーム内の次の命令を検出するステップを含む。本方法は、加えて、次の命令が第1の同期イベントに対応するタイプの同期バリアを備えるかどうかを判定するステップを含む。本方法はまた、次の命令が第1の同期イベントに対応するタイプの同期バリアを備えるという判定に応答して、命令ストリームから次の命令を削除するステップを含む。この方式で、CPUによって各クロック周期中に実行される命令の平均数は、不必要な同期動作を回避することによって、増やすことができる。
【０００８】
別の実施形態で、命令処理回路が提供される。命令処理回路は、同期イベント検出回路および最適化回路を備える。同期イベント検出回路は、第1の同期イベントを検出するように構成される。最適化回路は、命令ストリーム内の次の命令を検出し、次の命令が第1の同期イベントに対応するタイプの同期バリアを備えるかどうかを判定するように構成される。最適化回路はさらに、次の命令が第1の同期イベントに対応するタイプの同期バリアを備えるという判定に応答して命令ストリームから次の命令を削除するように構成される。
【０００９】
別の実施形態で、命令処理回路が提供される。命令処理回路は、第1の同期イベントを検出するための手段を備える。命令処理回路はさらに、命令ストリーム内の次の命令を検出するための手段を備える。命令処理回路は、加えて、次の命令が第1の同期イベントに対応するタイプの同期バリアを備えるかどうかを判定するための手段を備える。命令処理回路はまた、次の命令が第1の同期イベントに対応するタイプの同期バリアを備えるという判定に応答してその命令ストリームから次の命令を削除するための手段を備える。
【００１０】
別の実施形態で、本方法をプロセッサに実施させるためのコンピュータ実行可能命令が記憶された非一時的コンピュータ可読媒体が、提供される。そのコンピュータ実行可能命令によって実施される方法は、第1の同期イベントを検出するステップを含む。そのコンピュータ実行可能命令によって実施される方法はさらに、命令ストリーム内の次の命令を検出するステップを含む。そのコンピュータ実行可能命令によって実施される方法は、加えて、次の命令が第1の同期イベントに対応するタイプの同期バリアを備えるかどうかを判定するステップを含む。そのコンピュータ実行可能命令によって実施される方法はまた、次の命令が第1の同期イベントに対応するタイプの同期バリアを備えるという判定に応答して、その命令ストリームから次の命令を削除するステップを含む。
【図面の簡単な説明】
【００１１】
【図１】命令ストリーム内の冗長同期バリアを検出および削除するように構成された例示的命令処理回路を含む、プロセッサベースのシステムで提供される例示的構成要素のブロック図である。
【図２】冗長同期バリアの検出および削除に基づく例示的な最適化された命令ストリームを示す図である。
【図３】冗長同期バリアを検出および削除するための命令処理回路の例示的プロセスを示す流れ図である。
【図４】冗長同期バリアを削除するための命令処理回路のより詳細な例示的プロセスを示す流れ図である。
【図５】同期イベントをトリガする命令および冗長同期バリアを含む例示的な命令ストリームの最適化を示す図である。
【図６】冗長同期バリアの削除の結果として生じ得る例示的な最適化された命令ストリームを示す図である。
【図７】冗長同期バリアを含む例示的な命令ストリームの最適化を示す図である。
【図８】冗長同期バリアを検出および削除するように構成された、図1の命令処理回路を含む、命令処理回路を含み得る例示的プロセッサベースのシステムのブロック図である。
【発明を実施するための形態】
【００１２】
ここで図面を参照して、本開示のいくつかの例示的実施形態が説明される。本明細書で、「例示的」という言葉は、「例、事例、または説明の役割を果たすこと」を意味するように使用される。「例示的」として本明細書に記載されるいずれの実施形態も、好ましいまたは他の実施形態より有利なものとして必ずしも解釈されるべきではない。「第1の」、「第2の」などの用語が様々な要素を説明するために本明細書で使用されることがあるが、これらの用語は、ある要素を別の要素と区別するためにのみ使用され、そのようにして区別された要素はこれらの用語によって限定されるものではないこともまた、理解されたい。たとえば、本開示の教示から逸脱することなしに、第1の命令は第2の命令と呼ぶことが可能であり、同様に、第2の命令は第1の命令と呼ぶことが可能である。
【００１３】
本開示の実施形態は、命令処理回路内の実行パイプラインからの冗長同期バリアの削除と、関連プロセッサシステム、方法、およびコンピュータ可読媒体を含む。いくつかの動作では、同期動作もまたソフトウェア同期バリアの実行の直前に生じ得るとしても、コンピュータのアーキテクチャは、ソフトウェア同期バリアが使用されることを必要とし得る。同期イベントの発生を追跡することによって、不必要なソフトウェア同期バリアを、識別および削除することができ、それによって中央処理装置(CPU)の性能を改善する。
【００１４】
これに関連して、一実施形態で、命令ストリームにおいて冗長同期バリアを削除するための方法が、提供される。本方法は、第1の同期イベントを検出するステップを含む。本方法はさらに、命令ストリーム内の次の命令を検出するステップを含む。本方法は、加えて、次の命令が第1の同期イベントに対応するタイプの同期バリアを備えるかどうかを判定するステップを含む。本方法はまた、次の命令が第1の同期イベントに対応するタイプの同期バリアを備えるという判定に応答して、命令ストリームから次の命令を削除するステップを含む。この方式で、CPUによって各クロック周期中に実行される命令の平均数は、不必要な同期動作を回避することによって、増やすことができる。
【００１５】
これに関連して、図1は、1つまたは複数の実行パイプライン12(0)〜12(Q)内に置かれることになるコンピュータ命令を検索および処理するための例示的プロセッサベースのシステム10のブロック図である。プロセッサベースのシステム10は、冗長同期バリアを検出および削除するように構成された命令処理回路14を提供する。本明細書で、「命令」は、1つまたは複数の指定されたタスクを実行するようにコンピュータプロセッサに指示する命令セットアーキテクチャによって定義されたビットの組合せを指し得る。たとえば、命令は、プロセッサベースのシステム10によってアクセス可能なローカル記憶域を提供するレジスタ16(0)〜16(M)からのデータの読取りおよび/またはそこへのデータの書込みのための動作を指示し得る。例示的命令セットアーキテクチャは、ARM、Thumb、およびA64アーキテクチャを含むが、これらに限定されない。
【００１６】
続けて図1を参照すると、命令が、命令ストリーム18によって表される連続フローにおいてプロセッサベースのシステム10で処理される。命令ストリーム18は、プロセッサベースのシステム10が動作し、命令を実行しているときに、連続的に処理され得る。この図示された例では、命令ストリーム18は、コンピュータ実行可能プログラム内の命令の永続的記憶を実現する命令メモリ20で開始する。命令フェッチ回路22は、命令メモリ20からのおよび/または任意で命令キャッシュ26からの矢印24によって表される命令(以下「命令24」という)を読み取る。命令フェッチ回路22は、レジスタ16(0)〜16(M)のうちの1つで記憶することができるプログラムカウンタ(図示せず)の値を増やすことができる。命令24が命令フェッチ回路22によって取り出された後は、命令24は、命令をプロセッサ特有のマイクロ命令に変換する命令デコード回路28に進む。本実施形態で、命令デコード回路28は、復号のための一群の複数の命令30(0)〜30(N)を同時に記憶する。
【００１７】
命令30(0)〜30(N)が取り出され、復号された後、それらは、命令30(0)〜30(N)を記憶するためのバッファとしての命令キュー32に任意で発行される。命令30(0)〜30(N)は、次いで、実行のために実行パイプライン12(0)〜12(Q)のうちの1つに発行される。いくつかの実施形態で、実行パイプライン12(0)〜12(Q)は、実行パイプライン12(0)〜12(Q)内で実行する命令によって実行され得る動作のタイプを限定することができる。たとえば、パイプラインP0は、レジスタ16(0)〜16(M)への読取りアクセスを許可しないことが可能であり、結果的に、レジスタR0を読み取るための動作を指示する命令は、実行パイプラインP1からPQのうちの1つにのみ発行され得る。
【００１８】
命令処理回路14は、任意のタイプのデバイスまたは回路でもよく、プロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)もしくは他のプログラマブルロジックデバイス、離散的ゲートもしくはトランジスタロジック、離散的ハードウェア構成要素、または、本明細書に記載の機能を実行するように設計されたそれらの任意の組合せで実装または実行され得る。いくつかの実施形態で、命令処理回路14は、命令デコード回路28に組み込まれる。
【００１９】
続けて図1を参照すると、本例での命令処理回路14は、命令ストリーム18において冗長同期バリアを検出および削除するように構成される。命令処理回路14は、同期イベントを検出するように構成された同期イベント検出回路34を使用することができる。命令処理回路14はまた、その同期イベントに対応するタイプの冗長同期バリアを示す次の命令を検出するように構成された最適化回路36を使用することができる。最適化回路36はさらに、命令ストリーム18から次の命令を削除するように構成され得る。いくつかの実施形態で、命令処理回路14は、同期フラグ38を使用して、同期イベントの発生を指示し、冗長同期バリアが検出されたかどうかを判定することができる。
【００２０】
図1のプロセッサベースのシステム10での冗長同期バリアの検出および削除の説明を行うために、図2を提供する。図2は、同期イベントを検出し、その次に冗長同期バリアを検出する図1の命令処理回路14を示す。本例で、検出された命令ストリーム40は、命令ストリーム18で取り出され、命令処理回路14によって検出された、一連の命令を表す。検出された命令ストリーム40内の最初は、INST_REQ_SYNC命令42である。INST_REQ_SYNC命令42は、コンピュータアーキテクチャが、ソフトウェアがその後の同期バリアを明示的に含むことを必要とし、コンピュータハードウェアもまた同期動作を実行することを許可される、動作を指示する任意の命令でもよい。本例では、コンピュータハードウェアが、INST_REQ_SYNC命令42に応答して同期動作を実行し、同期イベント44が命令処理回路14によって検出される結果をもたらす。いくつかの実施形態で、同期イベント44はデータ同期動作でもよいが、いくつかの実施形態は、同期イベント44が命令同期動作であることを実現し得る。
【００２１】
前述のように、コンピュータアーキテクチャは、INST_REQ_SYNC命令42の後にソフトウェア同期バリアが続くことを必要とする。その結果、SYNC_BARRIER_INST命令46が、命令処理回路14によって、検出された命令ストリーム40内で次に検出される。SYNC_BARRIER_INST命令46は、同期イベント48を生じさせる同期バリア命令である。SYNC_BARRIER_INST命令46によってトリガされる同期イベント48は、同期イベント44と同タイプである。本明細書では、同期イベントの「タイプ」は、たとえば、データ同期動作または命令同期動作のような、同期イベントの一般的分類を示す。同期イベントは、それが読取りおよび書込みの両方の動作のバリア動作を保証し、内部および外部の両方のキャッシュ可能なメモリシステムと、共用可能なメモリおよび共用不可能なメモリの両方に適用する場合に、「完全な」同期イベントと考えることができる。別法として、同期イベントは、それが、完全な同期イベントよりも狭い状況でのみバリア動作を保証するという点で、範囲がより限定され得る。同期イベントが同じ一般的分類に属し、前の同期イベントと同じまたはより狭い範囲にある場合、その同期イベントは、前の同期イベントと同タイプと考えることができることを、理解されたい。本例では、他の命令は同期イベント44の後および同期イベント48の前に実行しないので、同期イベント48およびそれをトリガしたSYNC_BARRIER_INST命令46は、冗長であり、命令処理回路14によって削除することができることに留意されたい。結果として生じる最適化された命令ストリーム50は、前述のプロセスの1つの例示的結果を示す。結果として生じる最適化された命令ストリーム50は、INSTR_REQ_SYNC命令42に対応するINSTR_REQ_SYNC命令52を含む。INST_REQ_SYNC命令42のように、INST_REQ_SYNC命令52は、ソフトウェア同期バリアがその後に続くことになる動作を指示し、コンピュータハードウェアもまた同期動作を実行することを許可される、命令である。したがって、本例で、コンピュータハードウェアは、INST_REQ_SYNC命令52に応答して同期動作を実行し、結果として同期イベント54をもたらす。いくつかの実施形態で、同期イベント54はデータ同期動作でもよいが、いくつかの実施形態は、同期イベント54が命令同期動作であることを実現し得る。図2にあるように、SYNC_BARRIER_INST命令46は、結果として生じる最適化された命令ストリーム50ではNOP(ノーオペレーション)命令56で置き換えられている。その結果として、同期イベント54の直後に冗長同期イベントは存在せず、CPU性能および命令スループットの改善をもたらす。
【００２２】
図3は、図1および図2に加えて参照して、冗長同期バリアを検出および削除するための例示的プロセスを説明するために提供される。図3で、例示的プロセスは、図2の同期イベント44など、命令処理回路14が第1の同期イベントを検出するステップ(ブロック58)で開始する。いくつかの実施形態で、第1の同期イベントはデータ同期動作でもよく、一方、いくつかの実施形態は、第1の同期イベントが命令同期動作であることを実現し得る。第1の同期イベントは、命令の実行によって生じることがあり、または、中断または例外リターンなどの無関係な動作によってもたらされ得る。
【００２３】
命令処理回路14は、次いで、命令ストリーム内の次の命令を検出する(ブロック60)。命令処理回路14が、次の命令が第1の同期イベントに対応するタイプの同期バリアを備えるかどうかを判定する(ブロック62)。たとえば、命令処理回路14は、第1の同期イベントおよび次の命令の両方がデータ同期動作であると考えられるかどうか、または両方が命令同期動作であるかどうかを判定する。次の命令が第1の同期イベントに対応するタイプの同期バリアを備えない場合、命令ストリームの処理は、図3のブロック64で続く。次の命令が、第1の同期イベントに対応する同期バリアを備える場合、命令処理回路14は、命令ストリームから次の命令を削除する(ブロック66)。いくつかの実施形態で、次の命令の削除は、次の命令をNOP命令で置き換えるステップを含むことができるが、いくつかの実施形態は、次の命令を削除するステップが命令ストリームから次の命令を取り除くステップを含むことを実現し得る。命令ストリーム18の処理は、次いで、ブロック64で続く。
【００２４】
図4は、冗長同期バリアを削除するための、図1の命令処理回路14などの命令処理回路のより詳細な例示的プロセスを示す流れ図である。図4に示す例示的プロセスは、命令処理回路が、同期イベントが検出されたかどうかを判定するステップ(ブロック68)で開始する。いくつかの実施形態で、同期イベントはデータ同期動作でもよく、一方、いくつかの実施形態は、同期イベントが命令同期動作であることを実現し得る。前述のように、同期イベントは、命令の実行から生じることがあり、または、中断もしくは例外リターンなどの無関係な動作から生じることがある。したがって、同期イベントの検出は、パイプラインフラッシュなどの同期イベントの効果を検出することによって、および/または、同期イベントをトリガすることが知られている命令のリストと検出された命令を比較することによって、行われ得る。
【００２５】
同期イベントがブロック68で検出された場合、同期イベントのタイプ(たとえば、データ同期または命令同期)に対応する同期フラグがセットされる(ブロック70)。その同期フラグは、同期イベントが次の命令の実行の直前に生じたかどうかを指示する。いくつかの実施形態は、同期フラグがデータ同期イベントの発生を指示することを実現し得るが、いくつかの実施形態で、同期フラグは、命令同期イベントの発生に対応する。処理は、次いで、図4のブロック72で再開する。同期イベントがブロック68で検出されない場合、処理は、ブロック72に戻る。
【００２６】
命令処理回路が、次いで、命令ストリーム18などの命令ストリーム内の次の命令を検出する(ブロック72)。命令処理回路が、同期イベント、たとえば図2の同期イベント44、が、検出された命令によって引き起こされるかどうかを判定する(ブロック74)。いくつかの実施形態で、同期イベントはデータ同期動作でもよく、一方、いくつかの実施形態は、同期イベントが命令同期動作であることを実現し得る。
【００２７】
命令処理回路が、検出された命令が同期イベントを引き起こさないと図4のブロック74で判定した場合、命令処理回路は、同期イベントのタイプ(たとえば、データ同期または命令同期)に対応する同期フラグがあらかじめセットされている場合(たとえば、ブロック70で)、それを消去し(ブロック75)、検出された命令の処理を継続する(ブロック76)。命令処理回路は、次いで、ブロック68に戻る。命令処理回路が、同期イベントが検出された命令によって引き起こされたとブロック74で判定した場合、命令処理回路は、次に、検出された命令が冗長同期バリアであるかどうかを評価する。それを行うために、命令処理回路は、同期イベントのタイプ(たとえば、データ同期または命令同期)に対応する同期フラグがセットされているかどうかを調べる(ブロック78)。同期フラグがセットされていない場合、適切なタイプおよび範囲の同期イベントは、検出された命令の直前に生じておらず、したがって、検出された命令は、冗長同期バリアではない。したがって、同期フラグが、同期イベントがその検出された命令によって引き起こされたことを示すためにセットされ(ブロック80)、検出された命令の処理はブロック76で続く。その後、命令処理回路は、ブロック68に戻る。
【００２８】
図4の決定ブロック78で、命令処理回路が、同期イベントに対応する同期フラグがセットされていると判定した場合、検出された命令は、冗長同期バリアとして識別されている。したがって、命令処理回路は、命令ストリームから検出された命令を削除する(ブロック82)。いくつかの実施形態で、命令処理回路は、命令ストリームにおいて、図2のNOP命令56などのNOP命令で、検出された命令を置き換えることによって、検出された命令を削除することができ、一方、いくつかの実施形態は、検出された命令が命令ストリームから完全に取り除かれることを実現することができる。いくつかの実施形態で、同タイプの同期イベントをもたらす3つ以上の連続する命令の発生は起こりにくいことを理解されたい。したがって、そのような実施形態で、命令処理回路は、命令ストリームから検出された命令を削除したときに同期イベントに対応する同期フラグを消去することができる(ブロック83)。同タイプの同期イベントをトリガする3つ以上の連続する命令の発生が起こり得る実施形態では、ブロック83の動作は省略することができる。
【００２９】
検出された命令および同期イベントを検出するための動作は、たとえば、図1の命令処理回路14の同期イベント検出回路34によって実行され得ることを、理解されたい。冗長同期バリアを検出および削除するための動作は、たとえば、図1の命令処理回路14の最適化回路36によって実行され得ることを、さらに理解されたい。
【００３０】
同期イベントをトリガする命令および冗長同期バリアを含む例示的な命令ストリームの最適化を説明するために、図5を提供する。本例で、検出された命令ストリーム84は、命令ストリーム18で取り出され、命令処理回路14によって検出された一連の命令を表す。検出された命令ストリーム84の最初は、ARMアーキテクチャMCR(「Move to coprocessor from ARM register: ARMレジスタからコプロセッサに移動」)命令86である。MCR命令86は、ARMアーキテクチャを使用するコンピュータ内で変換テーブルの物理アドレスを記憶する変換テーブルベースレジスタ0(TTBR0)に値を書き込むための動作を指示する命令である。MCR命令86に続く、後の命令はTTBR0に依存して仮想アドレスを物理メモリアドレスに正確にマップするので、MCR命令86の実行は、その後の命令が実行される前に無事に完了しなければならない。したがって、ARMアーキテクチャは、ソフトウェア命令同期動作がMCR命令86に続くことを必要とする。しかし、いくつかの実施形態で、コンピュータハードウェアはまた、MCR命令86の実行の後で命令同期動作を実行することを許可されることがある。したがって、本例で、コンピュータハードウェアは、MCR命令86の実行に応答して同期動作を自動的に起動し、同期イベント88をもたらす。
【００３１】
前述のように、ARMアーキテクチャは、ソフトウェア命令同期動作がMCR命令86に続くことを必要とする。したがって、ARMアーキテクチャISB(「命令同期バリア」)命令90が、検出された命令ストリーム84で次に検出される。ISB命令90は、同期イベント92を生じさせる同期バリア命令である。ISB命令90によってトリガされる同期イベント92は、同期イベント88と同タイプ(すなわち、同じまたはより狭い範囲を有する命令同期動作)である。他の命令は同期イベント88の後および同期イベント92の前に実行しないので、同期イベント92およびそれをトリガしたISB命令90は、冗長であり、命令処理回路14から削除され得ることに、留意されたい。
【００３２】
結果として生じる最適化された命令ストリーム94は、1つの例示的結果を示す。結果として生じる最適化された命令ストリーム94は、MCR命令86に対応するMCR命令96を含む。MCR命令96の実行に応答して、コンピュータハードウェアは、命令同期動作を実行し、同期イベント98をもたらす。しかし、ISB命令90は、この場合、結果として生じた最適化された命令ストリーム94においてNOP命令100によって置き換えられている。したがって、同期イベント98の直後に冗長同期イベントは存在せず、CPU性能および命令スループットの改善をもたらす。
【００３３】
図4に関して前述したように、冗長同期バリアは、図1の命令処理回路14によって命令ストリーム18から削除され得る。命令処理回路14は、ノーオペレーションを指示するNOP命令で冗長同期バリアを置き換えることによって、または命令ストリーム18から冗長同期バリアを完全に取り除くことによって、冗長同期バリアを削除することができる。したがって、命令処理回路14は、所与の検出された命令ストリームを結果として生じる異なる命令ストリームに処理することができる。これに関連して、図6は、冗長同期バリアを含む例示的な検出された命令ストリーム102と、命令処理回路14によって生成され得る、対応する、結果として生じる最適化された命令ストリーム例104(1)および104(2)を示す。本例では、検出された命令ストリーム102は、2つのARMアーキテクチャ命令、すなわち、TTBR0に値を書き込むための動作を指示するMCR命令、それに続く、命令同期イベントをトリガするISB同期バリア命令を含む。
【００３４】
結果として生じる最適化された命令ストリーム例104は、検出された命令ストリーム102内の命令が図1の命令処理回路14によって処理され得る命令の例示的順序を示す。いくつかの実施形態で、検出された命令ストリーム102内のISB命令は、ノーオペレーションを指示する命令(すなわち、NOP)で置き換えることができる。したがって、例示的命令ストリーム104(1)は、NOP命令が後に続くMCR命令を備える。一方、本明細書に記載のいくつかの実施形態は、検出された命令ストリーム102内のISB命令が命令ストリーム18から完全に取り除かれることを実現する。したがって、命令ストリーム104(2)は、MCR命令のみを備える。
【００３５】
前述のように、ソフトウェア同期バリアより前の同期イベントは、中断または例外リターンなど、命令実行に無関係な動作から生じ得る。これに関連して、図7は、冗長同期バリアを含む例示的な命令ストリームの最適化を示す。本例で、検出された命令ストリーム106は、図1の命令ストリーム18で取り出され、命令処理回路14によって検出された一連の命令を表す。検出された命令ストリーム106内の命令が処理されるとき、同期イベント108が、中断または例外リターンなどの動作に応答して生じる。同期イベント108の直後に、ARMアーキテクチャISB命令110が、検出された命令ストリーム106で検出される。ISB命令110は、同期イベント112を生じさせる同期バリア命令である。ISB命令110によってトリガされた同期イベント112は、同期イベント108と同タイプ(すなわち、同じまたはより狭い範囲を有する命令同期動作)である。他の命令は同期イベント108の後および同期イベント112の前に実行しないので、同期イベント112、およびそれをトリガしたISB命令110は、冗長であり、命令処理回路14によって削除され得ることに、留意されたい。
【００３６】
結果として生じる最適化された命令ストリーム114は、1つの例示的結果を示す。結果として生じる最適化された命令ストリーム114が処理されるとき、同期イベント116が、中断または例外リターンなどの動作に応答して生じる。しかし、ISB命令110は、この場合、結果として生じる最適化された命令ストリーム114においてNOP命令118によって置き換えられている。したがって、同期イベント116の直後に冗長同期イベントは存在せず、CPU性能および命令スループットの改善をもたらす。
【００３７】
命令処理回路内の実行パイプラインからの冗長同期バリアの削除と、関連プロセッサシステム、方法、および本明細書で開示される実施形態によるコンピュータ可読媒体は、任意のプロセッサベースのデバイス内で提供され得る、またはそれと統合され得る。例は、非限定的に、セットトップボックス、エンターテイメントユニット、ナビゲーションデバイス、通信デバイス、固定ロケーションデータユニット、モバイルロケーションデータユニット、携帯電話、セルラー電話、コンピュータ、ポータブルコンピュータ、デスクトップコンピュータ、パーソナルデジタルアシスタント(PDA)、モニタ、コンピュータモニタ、テレビジョン、チューナ、ラジオ、衛星ラジオ、音楽プレーヤ、デジタル音楽プレーヤ、ポータブル音楽プレーヤ、デジタルビデオプレーヤ、ビデオプレーヤ、デジタルビデオディスク(DVD)プレーヤ、およびポータブルデジタルビデオプレーヤを含む。
【００３８】
これに関連して、図8は、図1の命令処理回路14を使用することができるプロセッサベースのシステム120の例を示す。本例で、プロセッサベースのシステム120は、各々が1つまたは複数のプロセッサ124を含む、1つまたは複数のCPU122を含む。1つまたは複数のプロセッサ124は、命令処理回路(IPC)14を備え得る。CPU122は、一時的に記憶されたデータへの高速アクセスのためにプロセッサ124に結合されたキャッシュメモリ126を有し得る。CPU122は、システムバス128に結合され、プロセッサベースのシステム120に含まれるマスタおよびスレーブデバイスを相互連結させることができる。よく知られているように、CPU122は、システムバス128を介してアドレス、制御、およびデータ情報を交換することによって、これらの他のデバイスと通信する。たとえば、CPU122は、スレーブデバイスの一例としてのメモリコントローラ130にバストランザクション要求を通信することができる。図8には示されないが、複数のシステムバス128が、提供され得る。
【００３９】
他のマスタおよびスレーブデバイスが、システムバス128に接続され得る。図8に示すように、これらのデバイスは、例のように、複数のDDRデバイス144(0)〜144(N)に結合されたメモリコントローラ130を備えるメモリシステム132、1つまたは複数の入力デバイス134、1つまたは複数の出力デバイス136、1つまたは複数のネットワークインターフェースデバイス138、および、1つまたは複数のディスプレイコントローラ140を含み得る。入力デバイス134は、入力キー、スイッチ、音声プロセッサなどを含むがこれらに限定されない、任意のタイプの入力デバイスを含み得る。出力デバイス136は、オーディオ、ビデオ、他のビジュアル表示器などを含むがこれらに限定されない、任意のタイプの出力デバイスを含み得る。ネットワークインターフェースデバイス138は、ネットワーク142へのデータおよびネットワーク142からのデータの交換を可能にするように構成された任意のデバイスでもよい。ネットワーク142は、ワイヤードまたはワイヤレスネットワーク、プライベートまたはパブリックネットワーク、ローカルエリアネットワーク(LAN)、ワイドローカルエリアネットワーク(WLAN)、およびインターネットを含むがこれらに限定されない、任意のタイプのネットワークでもよい。ネットワークインターフェースデバイス138は、所望の任意のタイプの通信プロトコルをサポートするように構成することができる。メモリシステム132は、1つまたは複数のメモリユニット144(0〜N)を含み得る。
【００４０】
CPU122はまた、1つまたは複数のディスプレイ146に送信される情報を制御するために、システムバス128を介してディスプレイコントローラ140にアクセスするように構成することができる。ディスプレイコントローラ140は、ディスプレイ146に適したフォーマットに表示されるように情報を処理する1つまたは複数のビデオプロセッサ148を介して表示されるディスプレイ146への情報を送信する。ディスプレイ146は、ブラウン管(CRT)、液晶ディスプレイ(LCD)、プラズマディスプレイなどを含むがこれらに限定されない、任意のタイプのディスプレイを含み得る。
【００４１】
本明細書で開示される実施形態に関連して記載される様々な例示的論理ブロック、モジュール、回路、およびアルゴリズムは、電子ハードウェア、メモリまたは別のコンピュータ可読媒体に記憶され、プロセッサまたは他の処理デバイスによって実行される命令、あるいはその両方の組合せとして、実装され得ることが、当業者にはさらに理解されよう。本明細書に記載のアービタ、マスタデバイス、およびスレーブデバイスは、例として、任意の回路、ハードウェア構成要素、集積回路(IC)、またはICチップで使用され得る。本明細書で開示されるメモリは、任意のタイプおよびサイズのメモリでもよく、所望の任意のタイプの情報を記憶するように構成され得る。この互換性を明確に説明するために、様々な例示的構成要素、ブロック、モジュール、回路、およびステップが、概してそれらの機能に関して前述された。そのような機能がどのように実装されるかは、具体的な適用例、設計上の選択、および/またはシステム全体に課される設計制約に依存する。技能工は、各具体的な適用例について変化する方法で、記載された機能を実装することができるが、そのような実装の決定は、本開示の範囲からの逸脱をもたらすものとして解釈されるべきではない。
【００４２】
本明細書で開示される実施形態に関連して記載された様々な例示的論理ブロック、モジュール、および回路は、プロセッサ、DSP、特定用途向け集積回路(ASIC)、FPGAまたは他のプログラマブルロジックデバイス、離散的ゲートまたはトランジスタロジック、離散的ハードウェア構成要素、あるいは、本明細書に記載の機能を実行するように設計されたそれらの任意の組合せで、実装または実行され得る。プロセッサは、マイクロプロセッサでもよいが、代替で、任意の従来のプロセッサ、コントローラ、マイクロコントローラ、または状態機械でもよい。プロセッサはまた、コンピューティングデバイスの組合せ、たとえば、DSPとマイクロプロセッサの組合せ、複数のマイクロプロセッサ、DSPコアと連動する1つまたは複数のマイクロプロセッサ、あるいは、任意の他のそのような構成、として実装され得る。
【００４３】
本明細書で開示される実施形態は、ハードウェアにおいて、およびハードウェアで記憶された命令において、具現することができ、たとえば、ランダムアクセスメモリ(RAM)、フラッシュメモリ、読取り専用メモリ(ROM)、電気的プログラマブルROM(EPROM)、電気的消去可能プログラマブルROM(EEPROM)、レジスタ、ハードディスク、除去可能ディスク、CD-ROM、または、当技術分野で知られる任意の他の形のコンピュータ可読媒体内に存在し得る。例示的記憶媒体は、プロセッサがその記憶媒体から情報を読み取ることおよびそこに情報を書き込むことができるように、プロセッサに結合される。代替で、その記憶媒体は、プロセッサに不可欠でもよい。そのプロセッサおよびその記憶媒体は、ASIC内にあってもよい。そのASICは、遠隔局内にあってもよい。代替で、そのプロセッサおよびその記憶媒体は、遠隔局、基地局またはサーバ内の離散的構成要素として存在してもよい。
【００４４】
本明細書の例示的実施形態のいずれかで説明される動作ステップは、例および論考を提供するために記載されることにも、留意されたい。記載された動作は、示された順序以外の多数の異なる順序で実行することができる。さらに、単一の動作ステップで説明された動作は、実際には、いくつかの異なるステップで実行することができる。加えて、例示的実施形態で論じられた1つまたは複数の動作ステップは、結合させることができる。流れ図に示された動作ステップは、当業者には容易に明らかになるように、多数の異なる修正を受け得ることを、理解されたい。情報および信号は、様々な異なる技術および技法のいずれかを使用して表され得ることもまた、当業者には理解されよう。たとえば、前述をとおして参照され得るデータ、命令、コマンド、情報、信号、ビット、記号、およびチップは、電圧、電流、電磁波、磁場または磁気粒子、光場または光学粒子、あるいは、それらの任意の組合せによって表すことができる。
【００４５】
本開示の前述の説明は、当業者が本開示を行うまたは使用することを可能にするために提供される。本開示への様々な修正が、当業者には容易に明らかになり、本明細書で定義された一般的原理は、本開示の趣旨および範囲から逸脱することなしに、他の変形形態に適用され得る。したがって、本開示は、本明細書に記載された例および設計に限定されるものではなく、本明細書で開示される原理および新しい特徴と一致する最も広い範囲を与えられるものである。
【符号の説明】
【００４６】
12  実行パイプライン
14  命令処理回路
16  レジスタ
18  命令ストリーム
20  命令メモリ
22  命令フェッチ回路
24  命令
26  命令キャッシュ
28  命令デコード回路
30  命令
32  命令キュー
34  同期イベント検出回路
36  最適化回路
38  同期フラグ
40  命令ストリーム
42  INST_REQ_SYNC命令
44  同期イベント
46  SYNC_BARRIER_INST命令
48  同期イベント
50  命令ストリーム
52  INST_REQ_SYNC命令
54  同期イベント
56  ノーオペレーション命令
84  命令ストリーム
86  MCR命令
88  同期イベント
90  ISB命令
92  同期イベント
94  命令ストリーム
96  MCR命令
98  同期イベント
100  ノーオペレーション命令
102  命令ストリーム
104  結果として生じた最適化された命令ストリーム
106  検出された命令ストリーム
108  同期イベント
110  ISB命令
112  同期イベント
114  結果として生じた最適化された命令ストリーム
116  同期イベント
118  ノーオペレーション命令
120  プロセッサベースのシステム
122  CPU
124  プロセッサ
126  キャッシュメモリ
128  システムバス
130  メモリコントローラ
132  メモリシステム
134  入力デバイス
136  出力デバイス
138  ネットワークインターフェースデバイス
140  ディスプレイコントローラ
142  ネットワーク
144  メモリユニット
146  ディスプレイ
148  ビデオプロセッサ
【図１】
2016515262.tif 000003
【図２】
2016515262.tif 000004
【図３】
2016515262.tif 000005
【図４】
2016515262.tif 000006
【図５】
2016515262.tif 000007
【図６】
2016515262.tif 000008
【図７】
2016515262.tif 000009
【図８】
2016515262.tif 000010
【手続補正書】
【提出日】平成27年5月20日(2015.5.20)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
命令ストリームにおいて冗長同期バリアを削除するための方法であって、
非同期バリア命令に応答してコンピュータプロセッサによって自動的に起動される第1の同期イベントを検出するステップと、
命令ストリーム内の次の命令を検出するステップと、
前記次の命令が前記第1の同期イベントに対応するタイプの同期バリアを備えるかどうかを判定するステップと、
前記次の命令が前記第1の同期イベントに対応するタイプの同期バリアを備えるという判定に応答して、前記次の命令を前記命令ストリームから削除するステップと
を含む、方法。
【請求項２】
前記第1の同期イベントを検出するステップが、命令同期イベントを検出するステップを含み、
前記次の命令が前記第1の同期イベントに対応するタイプの同期バリアを備えるかどうかを判定するステップが、前記次の命令が命令同期バリアであるかどうかを検出するステップを含む、請求項1に記載の方法。
【請求項３】
前記第1の同期イベントを検出するステップが、データ同期イベントを検出するステップを含み、
前記次の命令が前記第1の同期イベントに対応するタイプの同期バリアを備えるかどうかを判定するステップが、前記次の命令がデータ同期バリアであるかどうかを検出するステップを含む、請求項1に記載の方法。
【請求項４】
前記第1の同期イベントを検出するステップが、同期フラグをセットするステップを含む、請求項1に記載の方法。
【請求項５】
前記次の命令が前記第1の同期イベントに対応するタイプの同期バリアを備えないという判定に応答して前記同期フラグを消去するステップをさらに含む、請求項4に記載の方法。
【請求項６】
前記次の命令が前記第1の同期イベントに対応するタイプの同期バリアを備えるかどうかを判定するステップが、前記同期フラグがセットされているかどうかを判定するステップを含む、請求項4に記載の方法。
【請求項７】
前記命令ストリームから前記次の命令を削除するステップが、前記命令ストリーム内の前記次の命令をノーオペレーションを指示する命令で置き換えるステップを含む、請求項1に記載の方法。
【請求項８】
前記命令ストリームから前記次の命令を削除するステップが、前記命令ストリームから前記次の命令を取り除くステップを含む、請求項1に記載の方法。
【請求項９】
非同期バリア命令に応答してコンピュータプロセッサによって自動的に起動される第1の同期イベントを検出するように構成された、同期イベント検出回路と、
最適化回路であって、
命令ストリーム内の次の命令を検出すること、
前記次の命令が前記第1の同期イベントに対応するタイプの同期バリアを備えるかどうかを判定すること、および、
前記次の命令が前記第1の同期イベントに対応するタイプの同期バリアを備えるという判定に応答して、前記命令ストリームから前記次の命令を削除すること
を行うように構成された、最適化回路と
を備える、命令処理回路。
【請求項１０】
前記同期イベント検出回路が、前記第1の同期イベントの検出に応答して同期フラグをセットするようにさらに構成された、請求項9に記載の命令処理回路。
【請求項１１】
前記最適化回路が、前記命令ストリーム内の前記次の命令をノーオペレーションを指示する命令で置き換えることによって、前記命令ストリームから前記次の命令を削除するように構成された、請求項9に記載の命令処理回路。
【請求項１２】
前記最適化回路が、前記命令ストリームから前記次の命令を取り除くことによって、前記命令ストリームから前記次の命令を削除するように構成された、請求項9に記載の命令処理回路。
【請求項１３】
前記最適化回路が、前記次の命令が前記第1の同期イベントに対応するタイプの同期バリアを備えないという判定に応答して前記同期フラグを消去するようにさらに構成された、請求項10に記載の命令処理回路。
【請求項１４】
前記最適化回路が、前記同期フラグがセットされているかどうかを判定するように構成されることによって、前記次の命令が前記第1の同期イベントに対応するタイプの同期バリアを備えるかどうかを判定するように構成された、請求項10に記載の命令処理回路。
【請求項１５】
前記次の命令が、ISB(命令同期バリア)命令、DSB(データ同期バリア)命令、およびDMB(データメモリバリア)命令から成るグループから選択されたARM命令である、請求項9に記載の命令処理回路。
【請求項１６】
集積回路ダイに統合された、請求項9に記載の命令処理回路。
【請求項１７】
セットトップボックス、エンターテイメントユニット、ナビゲーションデバイス、通信デバイス、固定ロケーションデータユニット、モバイルロケーションデータユニット、携帯電話、セルラー電話、コンピュータ、ポータブルコンピュータ、デスクトップコンピュータ、パーソナルデジタルアシスタント(PDA)、モニタ、コンピュータモニタ、テレビジョン、チューナ、ラジオ、衛星ラジオ、音楽プレーヤ、デジタル音楽プレーヤ、ポータブル音楽プレーヤ、デジタルビデオプレーヤ、ビデオプレーヤ、デジタルビデオディスク(DVD)プレーヤ、およびポータブルデジタルビデオプレーヤから成るグループから選択されたデバイスに統合された、請求項9に記載の命令処理回路。
【請求項１８】
非同期バリア命令に応答してコンピュータプロセッサによって自動的に起動される第1の同期イベントを検出するための手段と、
命令ストリーム内の次の命令を検出するための手段と、
前記次の命令が前記第1の同期イベントに対応するタイプの同期バリアを備えるかどうかを判定するための手段と、
前記次の命令が前記第1の同期イベントに対応するタイプの同期バリアを備えるという判定に応答して、前記命令ストリームから前記次の命令を削除するための手段と
を備える、命令処理回路。
【請求項１９】
方法をプロセッサに実施させるコンピュータ実行可能命令が記憶された、非一時的コンピュータ可読媒体であって、前記方法が、
非同期バリア命令に応答してコンピュータプロセッサによって自動的に起動される第1の同期イベントを検出するステップと、
命令ストリーム内の次の命令を検出するステップと、
前記次の命令が前記第1の同期イベントに対応するタイプの同期バリアを備えるかどうかを判定するステップと、
前記次の命令が前記第1の同期イベントに対応するタイプの同期バリアを備えるという判定に応答して、前記命令ストリームから前記次の命令を削除するステップと
を含む、非一時的コンピュータ可読媒体。
【請求項２０】
前記命令ストリームから前記次の命令を削除するステップが、前記命令ストリーム内の前記次の命令をノーオペレーションを指示する命令で置き換えるステップを含む、前記方法を前記プロセッサに実施させるための前記コンピュータ実行可能命令が記憶された、請求項19に記載の非一時的コンピュータ可読媒体。
【請求項２１】
前記命令ストリームから前記次の命令を削除するステップが、前記命令ストリームから前記次の命令を取り除くステップを含む、前記方法を前記プロセッサに実施させるための前記コンピュータ実行可能命令が記憶された、請求項19に記載の非一時的コンピュータ可読媒体。
【請求項２２】
前記次の命令が前記第1の同期イベントに対応するタイプの同期バリアを備えると判定するステップが、同期フラグがセットされていると判定するステップを含む、前記方法を前記プロセッサに実施させるための前記コンピュータ実行可能命令が記憶された、請求項19に記載の非一時的コンピュータ可読媒体。
【国際調査報告】
2016515262.tif 000011
2016515262.tif 000012