(57)【特許請求の範囲】
【請求項１】
プロセッサの実行をシミュレーションする方法であって、
プロセッサ命令を当該プロセッサ命令が分岐命令であるかを判断するためにデコードすること、
分岐オーバーライドロジックからの分岐案内を要求することにより分岐命令をシミュレーションすること、
前記要求に応答して前記分岐オーバーライドロジックから分岐案内を受信すること、
前記分岐オーバーライドロジックからの前記分岐案内に従って前記分岐命令の実行をシミュレーションすること、を含み、
前記分岐オーバーライドロジックから受信される前記分岐案内は１ビットからなる、方法。
【請求項２】
分岐オーバーライドロジックからの分岐案内を要求することは、分岐命令アドレスを前記分岐オーバーライドロジックに提供することを含む、請求項１に記載の方法。
【請求項３】
分岐オーバーライドロジックからの分岐案内を要求することは、さらに、分岐ターゲットアドレスを前記分岐オーバーライドロジックに提供することを含む、請求項２に記載の方法。
【請求項４】
前記分岐オーバーライドロジックから受信される前記分岐案内は、オーバーライド分岐ターゲットアドレスを含む、請求項１に記載の方法。
【請求項５】
前記分岐オーバーライドロジックからの前記分岐案内に応じて前記プロセッサ命令の実行をシミュレーションすることは、前記オーバーライド分岐ターゲットアドレスを起点とする１または２以上の命令の実行をシミュレーションすることを含む、請求項４に記載の方法。
【請求項６】
ターゲットプロセッサの特性に従ってプロセッサ命令の実行をシミュレーションし、分岐命令のデコードが行われて分岐案内を要求し、前記要求に応答して分岐案内を受信し、前記分岐案内に従って前記分岐命令の実行をシミュレーションするプロセッサ実行部と、
分岐案内要求を前記プロセッサ実行部から受信し、前記要求に応答して分岐案内を供給する分岐オーバーライドロジックと、を有し、
前記分岐案内は１ビットからなる、プロセッサシミュレーションシステム。
【請求項７】
前記分岐オーバーライドロジックによりアクセス可能である命令実行トレースをさらに有し、前記命令実行トレースは、前記ターゲットプロセッサと互換性のあるプロセッサにより以前に実行された命令を含む、請求項６に記載のプロセッサシミュレーションシステム。
【請求項８】
前記プロセッサ実行部が命令を読み出す命令ストアをさらに有する、請求項６に記載のプロセッサシミュレーションシステム。
【請求項９】
前記命令ストアは命令キャッシュである、請求項８に記載のプロセッサシミュレーションシステム。
【請求項１０】
前記分岐案内要求はシミュレーションされている分岐命令のアドレスを含む、請求項６に記載のプロセッサシミュレーションシステム。
【請求項１１】
前記分岐案内要求は分岐ターゲットアドレスをさらに有する、請求項１０に記載のプロセッサシミュレーションシステム。
【請求項１２】
前記分岐案内はオーバーライド分岐ターゲットアドレスを有する、請求項６に記載のプロセッサシミュレーションシステム。
【請求項１３】
前記プロセッサ実行部は、前記分岐案内に従い、前記オーバーライド分岐ターゲットアドレスの起点から１または２以上の命令の実行のシミュレーションにより、前記分岐命令の実行をシミュレーションする、請求項１２に記載のプロセッサシミュレーションシステム。
【請求項１４】
共同してターゲットプロセッサの特性に従ってプロセッサ命令の実行をシミュレーションする複数の機能ユニットを備えるプロセッサ実行装置であって、
分岐命令のデコードが行われて分岐案内を要求し、
前記要求に応答して分岐案内を受信し、
前記分岐案内に従って分岐命令の実行をシミュレーションし、
前記分岐案内は１ビットからなる、プロセッサ実行装置。
【請求項１５】
前記分岐案内は、オーバーライド分岐ターゲットアドレスを含み、
前記複数の機能ユニットは、前記分岐案内に従い、前記オーバーライド分岐ターゲットアドレスの起点から１または２以上の命令の実行のシミュレーションにより、前記分岐命令の実行を共同してシミュレーションする、請求項１４に記載のプロセッサ実行装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、概してプロセッサのシミュレーションに関し、特に、分岐オーバーライドロジックにより分岐命令を解決するシミュレーション方法に関する。
に関する。
【背景技術】
【０００２】
プロセッサ設計のシミュレーションは当該技術分野で良く知られている。実際、新たなプロセッサの設計には大規模なシミュレーションが不可欠である。シミュレーションは、ターゲットプロセッサの構成機能ユニットの特性の定量化によりターゲットプロセッサをモデリングし、それらの特性を相互に関連付けることにより、具現されるモデル（すなわち、関連特性の和）が実際のプロセッサの挙動に忠実な表現（ｃｌｏｓｅ  ｒｅｐｒｅｓｅｎｔａｔｉｏｎ）を提供する。
【０００３】
ある既知のシミュレーション方法は、ＨＤＬ（Ｈａｒｄｗａｒｅ  Ｄｅｓｃｒｉｐｔｉｏｎ  Ｌａｎｇｕａｇｅ）構成または統合（ｓｙｎｔｈｅｓｉｓ）に続くそれらのゲートレベル実現（ｇａｔｅ−ｌｅｖｅｌ  ｒｅａｌｉｚａｔｉｏｎｓ）のような、システム要素のハードウェアアキュレートモデルを提供し、実際のデバイス状態および要素間を通る信号をシミュレーションする。これらのシミュレーションは、高精度である一方、比較的遅く、コンピュータ的な要求が厳しく、ハードウェアアキュレートモデルが開発される場合に設計プロセスにおいてのみ行われ得る。したがって、それらは、構造上のトレードオフやベンチマークパフォーマンスなどを明らかにするのに有用な早期シミュレーションには不向きである。
【０００４】
より効率的なシミュレーション方法は、上位レベル、ハードウェア機能ユニットのサイクルアキュレートモデル、およびトランザクション指向メッセージングシステムを介するそれらの相互作用モデルを提供する。メッセージングシステムは、各クロックサイクルを「ｕｐｄａｔｅ」フェーズと「ｃｏｍｍｕｎｉｃａｔｅ」フェーズに区分することにより、リアルタイム処理をシミュレーションする。サイクルアキュレート機能は、実際の機能ユニットの挙動をシミュレーションするために、適切なｕｐｄａｔｅフェーズにおいてシミュレーションされる。内部要素信号は、サイクルアキュレートシステム処理を達成するためにｃｏｍｍｕｎｉｃａｔｅフェーズに割り当てられる。シミュレーション精度は、機能ユニットモデルが正確に実際のユニットを機能的に反映させる程度、および内部要素を正確に段階分けする程度に依存する。高精度な機能ユニットモデルは、プロセッサのような複雑なシステムであっても、当該技術分野で既知であり、多くのアプリケーションにおける実世界のハードウェア成果に高精度に合致するシミュレーションを産出する。
【０００５】
しかし、機能ユニット精度は、プロセッサのような複雑なシステムの十分に忠実なシミュレーションを得るための試みの一部に過ぎない。有意義なシミュレーションは、さらに、命令実行オーダー（ｏｒｄｅｒ）のような、プロセッサ上の正確なアクティビティモデリングを必要とする。多くのアプリケーションにおいて、プロセッサアクティビティは、プロセッサモデル上の関連プログラムを単に実行することにより正確にモデル化される。しかし、通常、特にリアルタイムプロセッサシステムをモデル化する場合、これは不可能である。例えば、入出力（Ｉ／Ｏ）挙動は重要な調査領域であり得るが、実際のＩ／Ｏ環境は、実際のＩ／Ｏモデルの開発を不可能または非現実的と表現するに足りるほど複雑である。これは、移動通信装置のような多くの通信型システム（ｃｏｍｍｕｎｉｃａｔｉｏｎ−ｏｒｉｅｎｔｅｄ  ｓｙｓｔｅｍ）についての状況である。
【０００６】
プロセッサシミュレーション精度の重要な観点は、命令実行オーダーである。実世界の全てのプログラムは条件付き分岐命令を含み、その評価（ｅｖａｌｕａｔｉｏｎ）はランタイムまで分からない。実際、多くのケースにおいて、プロセッサパイプラインにおいて深い実行ステージで命令が評価されるまで、分岐評価は起こらない。パイプラインの行き詰まり（ｓｔａｌｌ）、すなわち、分岐条件が評価されるまでの実行停止を防ぐため、最近のプロセッサは高度な分岐予測技術を利用する。条件付き分岐命令の評価は、命令がデコードされたときに過去の分岐挙動および／または他の基準に基づいて予測され、予測に基づき命令読出しが続けられる。すなわち、分岐が実行と予測された場合、分岐ターゲットアドレス（事前にまたは動的に得られる）から命令が読みだされる。分岐が非実行と予測された場合、命令読出しは順番に（分岐命令アドレスに続くアドレスで）進められる。誤って予測されたブランチは、正しい命令が読み出された一方で、行き詰まりと同様に、パイプの誤って読み出された命令をクリアするためのパイプラインフラッシュを必要とし、実行速度および消費電力に双方に悪影響を与える。このため、正確な分岐予測はプロセッサパフォーマンスの重要な観点であり、それ故に、プロセッサシミュレーションにおける熱烈な関心領域である。しかし、多くの分岐条件の解を決定するＩ／Ｏ環境はシミュレーションにおいて正確にモデル化するには複雑すぎるであろう。
【発明の概要】
【０００７】
プロセッサシミュレーション環境は、ターゲットプロセッサの特性に従ってプロセッサ命令の実行をシミュレーションするプロセッサ実行モデルと、分岐オーバーライドロジックとを含む。プロセッサ実行モデルは、分岐命令をデコードすると、分岐オーバーライドロジックからの分岐案内を要求する。この要求に応答し、分岐オーバーライドロジックは分岐評価を解決する分岐案内を供給する。この要求および分岐案内は多様な形態をとることができる。ある実施形態では、シミュレーション中の分岐命令のアドレス、および、オプションで、予測された分岐ターゲットアドレスを含む。分岐オーバーライドロジックは、分岐命令アドレスを用い、ターゲットプロセッサと互換性のあるプロセッサにより実行された命令の実行トレースを索引してもよい。分岐案内は、命令トレースから得られる、または、分岐オーバーライドロジックにより判断されるオーバーライド分岐ターゲットアドレスを含んでもよい。この方法により、複雑なＩ／Ｏがモデル化されていないシミュレーション環境において正確なプログラム実行指令がシミュレーションされる。
【図面の簡単な説明】
【０００８】
【図１】プロセッサシミュレーション環境の機能ブロック図である。
【図２】プロセッサ実行のシミュレーション方法のフロー図である。
【発明を実施するための形態】
【０００９】
図１は、プロセッサ実行モデル１２を含むプロセッサシミュレーション環境１０を示す。プロセッサ実行モデル１２は、ターゲットプロセッサの特性に従い命令の実行をシミュレーションする。ターゲットプロセッサは、既存のプロセッサであってもよいし、開発中の新たなプロセッサであってもよい。プロセッサ実行モデル１２は、ＩＵ（Ｉｎｓｔｒｕｃｔｉｏｎ  Ｕｎｉｔ）、ＦＰＵ（Ｆｌｏａｔｉｎｇ  Ｐｏｉｎｔ  Ｕｎｉｔ）、ＭＭＵ（Ｍｅｍｏｒｙ  Ｍａｎａｇｅｍｅｎｔ  Ｕｎｉｔ）などのターゲットプロセッサ内の１または２以上の機能ユニットのハードウェアアキュレートモデルを有する。代わりに、または追加的に、サイクルアキュレートモデルにより、ゼロシミュレーションタイムデータおよび／または機能ユニットモデル間を通るパラメータと共に１または２以上の機能ユニットがモデル化されてもよい。通常、プロセッサ実行モデル１２は、当該技術分野で既知のどのようなプロセッサシミュレーションモデルを含み得る。
【００１０】
プロセッサ実行（ｅｘｅｃｕｔｉｏｎ）モデル１２は、命令ストア１４から読み出された命令の実行によりターゲットプロセッサの動作をシミュレーションする。命令ストア１４は、自身がＩ−ｃａｃｈｅ（Ｉｎｓｔｒｕｃｔｉｏｎ  ｃａｃｈｅ）のようなメモリ機能のシミュレーションモデルで構成されてもよい。または、命令ストア１４は、単純に、メモリに読み出され、ターゲットプロセッサにより実行され得る、コンパイラー／リンカー（ｃｏｍｐｉｌｅｒ／ｌｉｎｋｅｒ）により生成されたオブジェクトモデルにあるような命令のシーケンシャルリストからなってもよい。ある実施形態では、プロセッサ実行モデル１２は、命令アドレス（ＩＡ）１６の提供により、命令ストア１４から１または２以上の命令をフェッチ’ｆｅｔｃｈ）する。そして、命令ストア１４は、１または２以上の対応する命令１８をプロセッサ実行モデル１２に提供する。
【００１１】
多様な実施形態において、プロセッサシミュレーション環境１０はさらにメモリのシミュレーションモデル２０および入出力機能（Ｉ／Ｏ）２４などを要求または要望に応じて有してもよい。例えば、メモリモデル２０は１または２以上のキャッシュとして実装されてもよい。Ｉ／Ｏモデル２４は、ＵＡＲＴ、パラレルポート、ＵＳＢインタフェースまたは他のＩ／Ｏ機能をエミュレートしてもよい。プロセッサシミュレーション環境１０は、さらに、グラフィックプロセッサ、暗号化エンジン、データ圧縮エンジン、などの（図示せず）他のシミュレーションモデル、または他の回路へのインタフェースモデルを含んでもよい。
【００１２】
あるケースでは、プロセッサシミュレーション環境１０は、プロセッサ実行モデル１２の意義のあるシミュレーションを保証するために十分に高度なＩ／Ｏモデルを提供できない。例えば、ターゲットプロセッサは無線通システム移動端末に配置される。無線通信システムとの複雑で動的な移動端末（およびそのプロセッサ）の相互作用は正確にシミュレーションできない。しかし、移動端末に配置された場合のターゲットプロセッサのパフォーマンスは重要であるので、開発者は、その環境において多くの観点からのその動作をシミュレーションできるべきである。
【００１３】
特に、直接的かつ深刻にパフォーマンスに影響を与えるある観点によるターゲットプロセッサの動作は、プログラム実行パス、すなわち、分岐命令の動的な解決である。本発明の１または２以上の実施形態によれば、分岐オーバーライドロジック２６により既知または望まれる分岐命令の挙動がプロセッサ実行モデル１２に与えられる。分岐オーバーライドロジック２６は、条件付き分岐命令にプロセッサ実行モデル１２が直面したときにプロセッサ実行モデル１２から分岐案内の要求２８を受信する。これに応答して、分岐オーバーライドロジック２６は、プロセッサ実行モデル１２に分岐評価の解（すなわち、実行（ｔａｋｅｎ）、または非実行（ｎｏｔ  ｔａｋｅｎ））を示す分岐案内３０を提供する。
【００１４】
分岐オーバーライドロジック２６は、分岐案内３０をいくつかの方法により得ることができる。例えば、分岐オーバーライドロジック２６は、実行トレース（ｅｘｅｃｕｔｉｏｎ  ｔｒａｃｅ）に記憶されている、関心対象のＩ／Ｏ条件（無線通信に参加中のような）下にある異なるプロセッサ（ターゲットプロセッサの旧バージョンのような）により実際に実行された命令を分析してもよい。または、分岐オーバーライドロジック２６は、ランダム、その環境の情報およびコードの解析に基づく分岐評価を行うか否かの所定の確率分布のような、多様なアルゴリズムに従い、プログラムおよびＩ／Ｏ環境の動的な解析により、または他のアプローチにより、分岐案内３０を算出してもよい。この場合、ターゲットＩ／Ｏ環境を正確にシミュレーションできなくても、有意義なシミュレーションおよびプロセッサ実行モデル１２の解析が可能である。
【００１５】
プロセッサ実行モデル１２からの分岐案内要求２８、および分岐オーバーライドロジック２６からの分岐案内３０は、多様な形式を取ってもよい。例えば、確率テストに関して適切なある実施形態においては、プロセッサ実行モデル１２は、要求２８としてシンプルに信号をアサート（ａｓｓｅｒｔ）してもよいし、分岐案内３０として１ビットを受信してもよい（例えば、１＝ｔａｋｅｎ  ０＝ｎｏｔ  ｔａｋｅｎ）。この場合、分岐オーバーライドロジック２６は、各個別命令または実行中コードの機能を考慮せず、ある確率分布に従い分岐命令の分岐解決（ｂｒａｎｃｈ  ｒｅｓｏｌｕｔｉｏｎ）を制御する。
【００１６】
他の実施形態では、プロセッサ実行モデル１２からの分岐案内要求２８は、ＢＩＡ（Ｂｒａｎｃｈ  Ｉｎｓｔｒｕｃｔｉｏｎ  Ａｄｄｒｅｓｓ）、すなわち、シミュレーション実行中の分岐命令のアドレスの形式を取ってもよい。この実施形態では、分岐オーバーライドロジック２６は、対応する以前に実行された分岐命令の実際の分岐解を得るために、ＢＩＡ（およびオプションでオフセット）を用いて実行トレース３２を索引（ｉｎｄｅｘ）する。この実施形態では、分岐オーバーライドロジック２６からの分岐案内３０は、ＯＢＴＡ（Ｏｂｅｒｒｉｄｅ  Ｂｒａｎｃｈ  Ｔａｒｇｅｔ  Ａｄｄｒｅｓｓ）、すなわち、プロセッサ実行モデル１２が実行を開始すべき新たな命令のアドレスの形式を取ってもよい。
【００１７】
さらに他の実施形態は、プロセッサ実行モデル１２内の分岐予測ロジックのシミュレーションに特に適しており、プロセッサ実行モデル１２からの分岐案内要求２８は、ＢＩＡおよび予測ＢＴＡ（Ｂｒａｎｃｈ  Ｔａｒｇｅｔ  Ａｄｄｒｅｓｓ）の双方を含んでもよい。この実施形態では、分岐オーバーライドロジック２６からの分岐案内３０は、分岐予測精度を示す１ビットからなってもよい（例えば、１＝正確な予測  ０＝不正確な予測）。分岐オーバーライドロジック２６は、分岐予測精度を算出してもよいし、ＢＩＡを用い、実行トレース３２内の対応する分岐命令の実際の分岐解との比較によりそれを確かめてもよい。または、分岐オーバーライドロジック２６は、分岐案内３０をＯＢＴＡの形式で提供してもよい。ＯＢＴＡは、非実行分岐案内３０に関しては適切にインクリメントされたＢＩＡ、実行分岐案内３０に関してはＢＴＡであってもよい。なお、ＢＴＡは、プロセッサ実行モデル１２による算出通りの予測された実行ＢＴＡに合致する必要は無い。例えば、分岐オーバーライドロジック２６は、適切なＯＢＴＡを提供することにより割り込みまたはプログラム実行パスにおける他の変更を強制することができる。
【００１８】
図２は、プロセッサ実行のシミュレーション方法１００を示す。ブロック１０２でスタートし、この方法は、１または２以上の命令のフェッチにより始まる（ブロック１０４）。当該技術分野で知られているように、プロセッサ実行モデル１２は、命令を連続的にフェッチしてもよいし、Ｉキャッシュラインのようなグループにおいて命令をフェッチしてもよい。フェッチされた各命令に関し、プロセッサ実行モデル１２は命令をデコードする（ブロック１０５）。命令が分岐命令でない場合（ブロック１０６）、プロセッサ実行モデル１２は、実行パイプラインモデルへの命令のローディングなどにより、命令の実行をシミュレーションする（ブロック１０８）。プロセッサ実行モデル１２が分岐命令をデコードする場合（ブロック１０６）、プロセッサ実行モデル１２は分岐案内要求２８を分岐オーバーライドロジック２６に出す（ブロック１１０）。そして、プロセッサ実行モデル１２は分岐オーバーライドロジック２６から分岐案内３０を受信する（ブロック１１２）。続いて、プロセッサ実行モデル１２は、分岐案内３０により決定されるアドレスの命令をフェッチして実行することにより、分岐案内の実行をシミュレーションする（ブロック１１４）。
【００１９】
要求２８および分岐案内３０は、プロセッサ実行モデル１２（または少なくとも１のそれについてのインタフェースモデル）が、ＨＤＬ（Ｈａｒｄｗａｒｅ  Ｄｅｓｃｒｉｐｔｉｏｎ  Ｌａｎｇｕａｇｅ）モデル、ゲートレベルモデル機能モデルなどのようなハードウェアアキュレートシミュレーションモデルを備えるとき、シミュレーションされた電気信号であってもよい。または、プロセッサ実行モデル１２がサイクルアキュレート機能モデルを備えるとき、要求２８および分岐案内３０は、プロセッサシミュレーション環境１０に定義されたトランザクション指向メッセージングシステムに従い、プロセッサ実行モデル１２と分岐オーバーライドロジック２６の間を通るゼロシミュレーションタイムメッセージを含んでもよい。当業者であれば、あらゆる特定のシミュレーションに関して適切な要求２８および分岐案内３０を容易に実装し得る。
【００２０】
分岐オーバーライドロジック２６により分岐案内３０を提供することは、プロセッサシミュレーション環境１０が最小限のＩ／Ｏモデルまたはエミュレーションでプロセッサ実行モデル１２をシミュレーションすることを可能とする。プロセッサ実行モデル１２は、ターゲットプロセッサとして、分岐決定のポイントでのみの介入で命令をシミュレーションし得る。これは、高いシミュレーション精度が望まれる場合に特に重要である。さらに、分岐オーバーライドロジック２６をプロセッサ実行モデル１２から分離することにより、特定のシミュレーションに関する要望または要求に応じて多様な分岐オーバーライドスキームが実装され得る。
【００２１】
本発明は、当然に、本発明の不可欠な特徴から離れない範囲で、ここで詳細に説明した以外の方法でも実行される。本実施形態は、あらゆる面で説明のためおよび非限定的に考慮され、添付の請求項の意味および等価範囲内の変更がそれに含まれることが意図される。
【図１】
0005514211.tif 000002
【図２】
0005514211.tif 000003