(57)【要約】【課題】最適化されたプログラムを効率的に実行するためのシステムを提供する。【解決手段】システムはマイクロプロセッサ１５０を具備し、マイクロプロセッサ１５０は、モードビットの組み合わせと、指令の組み合わせ間の依存性を検出するように操作できる依存性検出ロジックを具備するハザード検出ロジック１３０と、を含む。モードビットの組み合わせが第１の状態にある時、マイクロプロセッサ１５０はハザード検出ロジック１３０と関連して機能する一方、モードビットの組み合わせが第２の状態にある時、マイクロプロセッサ１５０はハザード検出ロジック１３０と関連せずに機能する。【選択図】      図１
2007026452.tif 000002
【特許請求の範囲】
【請求項１】
最適化されたプログラムを効率的に実行するためのシステムであって、マイクロプロセッサを具備し、前記マイクロプロセッサは、
モードビットの組み合わせと、
指令の組み合わせ間の依存性を検出するように操作できる依存性検出ロジックを具備するハザード検出ロジックと、
を含み、前記モードビットの組み合わせが第１の状態にある時、前記マイクロプロセッサは前記ハザード検出ロジックと関連して機能する一方、前記モードビットの組み合わせが第２の状態にある時、前記マイクロプロセッサは前記ハザード検出ロジックと関連せずに機能する。
【請求項２】
請求項１に記載のシステムにおいて、前記依存性検出ロジックは、前記モードビットの組み合わせが前記第２の状態にある時、パワーオフされるように操作できる。
【請求項３】
請求項１に記載のシステムにおいて、前記マイクロプロセッサは、前記モードビットの組み合わせが前記第１の状態にある時、第１の実行周波数で作動する一方、前記モードビットの組み合わせが前記第２の状態にある時、第２の実行周波数で作動する。
【請求項４】
請求項１に記載のシステムにおいて、前記モードビットの組み合わせは、指令によって構成されるように操作できる。
【請求項５】
請求項４に記載のシステムにおいて、前記指令は同調機能性を有する。
【請求項６】
請求項１に記載のシステムにおいて、前記モードビットの組み合わせの状態は、前記マイクロプロセッサ指令がフェッチされるメモリページのロケーション、前記マイクロプロセッサ指令がロード／ストアのアクセスを行うメモリページのロケーション、または前記マイクロプロセッサ上で実行する指令のタイプによって決定される。
【請求項７】
請求項１に記載のシステムにおいて、前記モードビットの組み合わせは、プロセッサを通して、プロセッサ通信ポート、走査機構、またはＪＴＡＧコントローラに対して構成されるように操作できる。
【請求項８】
請求項１に記載のシステムにおいて、レジスタを更に具備し、前記レジスタは前記モードビットの組み合わせを具備する。
【請求項９】
請求項８に記載のシステムにおいて、前記レジスタは、メモリ割り当てレジスタに対して書き込むことにより構成されるように操作できる前記メモリ割り当てレジスタである。
【請求項１０】
請求項１に記載のシステムにおいて、前記システムは、スレッドの組み合わせを実行するように操作でき、前記モードビットの組み合わせは、前記スレッドの組み合わせの１つ以上によって構成されるように操作できる。
【請求項１１】
請求項１に記載のシステムにおいて、前記依存性検出ロジックは、前記指令の組み合わせにおいて指令によって参照されるアドレスの組み合わせを比較するように操作できるアドレス依存性ロジックを含む。
【請求項１２】
請求項１１に記載のシステムにおいて、前記アドレス依存性ロジックは、前記モードビットの組み合わせが前記第２の状態にある時、ゲートオフされるように操作できる。
【請求項１３】
請求項１に記載のシステムにおいて、前記ハザード検出ロジックはフォーワーディングロジックを更に具備し、前記モードビットの組み合わせが前記第１の状態にある時、前記マイクロプロセッサは前記フォーワーディングロジックと関連して機能する一方、前記モードビットの組み合わせが前記第２の状態にある時、前記マイクロプロセッサは前記フォーワーディングロジックと関連せずに機能する。
【請求項１４】
請求項１３に記載のシステムにおいて、前記フォーワーディングロジックは、前記モードビットの組み合わせが前記第２の状態にある時、パワーオフされるように操作できる。
【請求項１５】
請求項１に記載のシステムにおいて、前記ハザード検出ロジックはストールロジックを更に具備し、前記モードビットの組み合わせが前記第１の状態にある時、前記マイクロプロセッサは前記ストールロジックと関連して機能する一方、前記モードビットの組み合わせが前記第２の状態にある時、前記マイクロプロセッサは前記ストールロジックと関連せずに機能する。
【請求項１６】
請求項１５に記載のシステムにおいて、前記ストールロジックは、前記モードビットの組み合わせが前記第２の状態にある時、パワーオフされるように操作できる。
【請求項１７】
最適化されたプログラムを効率的に実行するための方法であって、
モードビットの組み合わせが第１の状態にある時、マイクロプロセッサをハザード検出ロジックと関連させて動作させる工程と、前記ハザード検出ロジックは依存性検出ロジックを含むことと、
前記モードビットの組み合わせが第２の状態にある時、前記マイクロプロセッサを前記ハザード検出ロジックと関連させず動作させる工程と、
を具備する。
【請求項１８】
請求項１７に記載の方法において、前記モードビットの組み合わせが前記第２の状態にある時、前記依存性検出ロジックをパワーオフする。
【請求項１９】
請求項１７に記載の方法において、前記マイクロプロセッサを、前記モードビットの組み合わせが前記第１の状態にある時、第１の実行周波数で動作させる一方、前記モードビットの組み合わせが前記第２の状態にある時、第２の実行周波数で動作させる工程を更に具備する。
【請求項２０】
請求項１７に記載の方法において、前記モードビットの組み合わせを、指令によって構成する。
【請求項２１】
請求項２０に記載の方法において、前記指令は同調機能性を有する。
【請求項２２】
請求項１７に記載の方法において、前記モードビットの組み合わせの状態は、前記マイクロプロセッサ指令がフェッチされるメモリページのロケーション、前記マイクロプロセッサ指令がロード／ストアのアクセスを行うメモリページのロケーション、または前記マイクロプロセッサ上で実行する指令のタイプによって決定される。
【請求項２３】
請求項１７に記載の方法において、前記モードビットの組み合わせを、プロセッサを通して、プロセッサ通信ポート、走査機構、またはＪＴＡＧコントローラに対して構成する。
【請求項２４】
請求項１７に記載の方法において、前記モードビットの組み合わせはレジスタ内にある。
【請求項２５】
請求項２４に記載の方法において、前記レジスタとしてメモリ割り当てレジスタに書き込む。
【請求項２６】
請求項１７に記載の方法において、前記マイクロプロセッサ上でスレッドの組み合わせを実行すると共に、前記スレッドの組み合わせの１つ以上によって前記モードビットの組み合わせを構成する。
【請求項２７】
請求項１７に記載の方法において、前記指令の組み合わせにおいて指令によって参照されるアドレスの組み合わせを比較する工程を更に具備し、前記依存性検出ロジックは、アドレスの組み合わせを比較する前記工程を行うアドレス依存性ロジックを含む。
【請求項２８】
請求項２７に記載の方法において、前記モードビットの組み合わせが前記第２の状態にある時、前記アドレス依存性ロジックをゲートオフする。
【請求項２９】
請求項１７に記載の方法において、前記ハザード検出ロジックはフォーワーディングロジックを更に具備する。
【請求項３０】
請求項２９に記載の方法において、前記モードビットの組み合わせが前記第２の状態にある時、前記フォーワーディングロジックをパワーオフする。
【請求項３１】
請求項１７に記載の方法において、前記ハザード検出ロジックはストールロジックを更に具備する。
【請求項３２】
請求項３１に記載の方法において、前記モードビットの組み合わせが前記第２の状態にある時、前記ストールロジックをパワーオフする。
【請求項３３】
最適化されたプログラムを効率的に実行するためのシステムであって、マイクロプロセッサを具備し、前記マイクロプロセッサは、
モードビットの組み合わせを具備するレジスタと、
指令の組み合わせ間の依存性を検出するように操作できる依存性検出ロジック及びフォーワーディングロジックを具備するハザード検出ロジックと、
を含み、前記モードビットの組み合わせが第１の状態にある時、前記マイクロプロセッサは前記ハザード検出ロジックと関連して機能する一方、前記モードビットの組み合わせが第２の状態にある時、前記マイクロプロセッサは前記ハザード検出ロジックと関連せずに機能し且つ前記ハザード検出ロジックはパワーオフされる。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般的には、マイクロプロセッサのための方法及びシステムに関し、特に、マイクロプロセッサのための動作の高性能モードに関する。
【背景技術】
【０００２】
近年、より高速なコンピュータ処理データスループットに対する飽くなき要求があり、これは、最前線のコンピュータアプリケーションが益々複雑になっていることによる。この複雑さはまた、同様に、マイクロ処理システムに対する需要の高まりをもたらしている。これらのシステムにおけるマイクロプロセッサは、従って、指令の実行を速めるように意図されたハードウエア機能性を考慮して設計される。
【０００３】
そのような機能性の一例は、パイプライン型のアーキテクチャである。パイプライン型のアーキテクチャにおいて、指令の実行が重複し、このため、各指令を実行するのに５つのクロックサイクルが必要とされるような場合でも、５つの指令が実行の種々のステージで同時に存在することができる。このような態様で、あたかも１つの指令が各クロックサイクルで完了するように見える。
【０００４】
更に、多くの現在のプロセッサは、スーパースカラアーキテクチャを有する。これらのスーパースカラアーキテクチャにおいて、指令パイプラインの１つ以上のステージが二重にされる可能性がある。例えば、マイクロプロセッサは、多重指令デコーダを有する可能性があり、ここで、デコーダが夫々にパイプラインを有して多重指令ストリームを可能とする。これは、各クロックサイクル中に２つ以上の指令を完了できることを意味する。
【０００５】
これらのタイプ技術は、しかし、実施することが非常に難しい可能性がある。特に、パイプラインハザードが起きる可能性がある。パイプラインハザードとは、指令ストリーム内の次の指令を、その指定クロックサイクル中に実行するのを妨害する状況である。この場合、この指令がストール（stall）状態（引き止められた状態）にあるといわれる。ある指令がストール状態にある時、典型的には、ストール状態にある指令に続く全ての指令もまたストール状態にある。ストール状態にある指令に先行する指令は実行を継続可能であるが、ストール状態中、新たな指令をフェッチできない可能性がある。
【０００６】
主に、パイプラインハザードは、３つの主タイプからなり、それらは、構造的ハザード、データハザード、及び制御ハザードである。構造的ハザードは、あるプロセッサリソース、例えばメモリの一部分または機能的ユニットが、パイプライン内の２つ以上の指令によって要求された場合に生じる。データハザードは、指令間におけるデータ依存性によってもたらされる。例えば、データハザードは、パイプライン内に２つの指令があり、一方の指令が他方の指令により生成される結果を必要とする場合に生じる可能性がある。この場合、第２の指令が完了するまで、第１の指令の実行がストール状態になければならない。制御ハザードは、分岐指令の発生の結果として生じる可能性がある。分岐指令に続く指令は、通常、何れの枝が採用されるかが決定されるまで、ストール状態になければならない。
【０００７】
これらのパイプラインハザード及びパイプラインの敷設に関連する他の問題を取り扱うため、現在のマイクロプロセッサ上では、多数のハードウエア技術が実施される。これらのハードウエア技術は、パイプライン内の種々の指令、指令間の依存性の原因、及び結果として生じるパイプラインハザードをチェックし、これらのパイプラインハザードを捉えることにより、マイクロプロセッサにおいてパイプラインの敷設を実施可能とする。
【０００８】
同一のメモリロケーションにアクセスする指令から引き起こされる構造的ハザードに対処するように、ロード／ストア依存性ロジックが、プロセッサ内に存在する可能性がある。例えば、あるデータロケーションにアクセスするロード指令が、実行パイプラインの第１のステージ内に存在する一方、同じデータロケーションへデータをストアするストア指令が、この実行パイプラインの下流ステージ内に存在する可能性がある。この場合、ロード指令の実行が延期されない限り、ストア指令の完了まで、ロード指令は正確なデータを得ることができない。ロード／ストア依存性ロジックは、このタイプの依存性及びこれらの依存性の原因に関して指令をチェックし、これは、例えば、そのアドレスへのストアが完了するまでロード指令をストール状態とすることにより行う。
【０００９】
フォーワーディング（これはまた、バイパスィング及びしばしばショートサーキッティングと呼ばれる）は、マイクロプロセッサパイプラインによって導入されるデータハザードに起因する、性能に不利な条件を減少させることを試みるハードウエア技術である。データハザードを回避するようにパイプラインをストール状態とする代わりに、データフォーワーディングアーキテクチャが使用される可能性がある。より具体的には、フォーワーディングハードウエアは、先の指令の結果を、実行パイプラインのあるステージから、その結果を要求する同パイプラインのより早いステージへ直接パスすることができる。
【００１０】
典型的には、しかし、パイプラインハザードを捉えるようにこれらの技術を利用するためには、マイクロプロセッサにこれらのタスクを達成するようにロジックが含まれる必要がある。例えば、フォーワーディングを実施するためには、必要なフォーワーディングパス及びこれに関連する制御ロジックがプロセッサの設計に含まれる必要がある。通常、この技術は、マイクロプロセッサの実行パイプラインにおいて、１つ以上の下流パイプラインステージの出力を、１つ以上の上流ステージの入力に接続するため、配線トポロジ及びマルチプレクサを必要とする。ロード／ストア依存性のチェックを実施するため、ある場合には、コンパレータがパイプラインの多くのステージに含まれ、これにより、パイプライン内の種々の指令によってアクセスされるロケーションのアドレスが比較される。
【００１１】
これらの技術は、しかし、費用無しでは実施できない。これらの技術を実施するために必要な追加のロジックは、これらの技術の使用を必要としない指令の実行と比較して、パイプラインを通した指令の実行を遅くする可能性がある。更に、このロジックは、存在しないハザードを時々検出する可能性がある。例えば、近年のプロセッサの処理速度に対する要求が益々高まることにより、アドレス依存性検出ロジックは、多くの場合、アドレスの下層ビットのみを比較する可能性がある。実際のロード／ストア動作は、しかし、アドレスビットの全セットによって行われる。もし、アドレスの比較がアドレスの下層ビットだけで行われると、２つの異なるアドレスが下層ビットの同じ組み合わせを有している場合、アドレス依存性検出ロジックは２つのアドレスが同じであると誤って報告する可能性がある。この検出された依存性に基づいて、ロード／ストア依存性ロジックは、パイプラインを不必要にストール状態とする可能性がある。
【００１２】
あるソフトウエアは、しかし、特別のハードウエアに対して最適化される可能性がある共に、このハザード検出ロジックを必要としない可能性がある。例えば、多くの場合に高速度の実行及び最大限の性能を保証するため、デジタル信号プロセッサ上で動作するように設計されたソフトウエアは、特定のデジタル信号プロセッサのハードウエアに対して高度に最適化されている可能性がある。典型的なデジタル信号プロセッサの実行周波数の劣化を回避するため、これらのデジタル信号プロセッサは、依存性チェックロジックを含まない。従って、これらのタイプのデジタル信号プロセッサに対して最適化されたソフトウエアは、指令の適切なスケジューリング或いは他の方法論のいずれかによって、パイプラインハザードを有しないように作成されるのが通常である。もし、この種のソフトウエアがこの態様で最適化されないと、このタイプのデジタル信号プロセッサ上で動作する際、エラーを生成する可能性がある。
【００１３】
マイクロプロセッサの速度が上昇するほど、マイクロ処理システムにおける主マイクロプロセッサ上でこのタイプのデジタル信号処理（ＤＳＰ）機能性を実行することが益々望ましくなり、別個のＤＳＰハードウエアの必要性がなくなる。ＤＳＰを実施するために典型的な高速度マイクロ処理システム内に既存のハードウエアを利用することにより、より高い性能でより低いパワーのシステムが達成可能となる。しかし、典型的なマイクロプロセッサ上でこのタイプの最適化されたソフトウエアを実行する時、マイクロプロセッサ内に存在するハザード検出ロジックが、これらのハザードをチェックしないＤＳＰ指令の実行と比較して、ＤＳＰ機能性の実行を遅くする可能性がある。ＤＳＰソフトウエアの殆どは、これらのタイプのパイプラインハザードを生成しないように具体的に設計され、作成され、または最適化されているため、このチェックは余計である可能性がある。
【００１４】
従って、異なるタイプのソフトウエア、例えばシステムコントローラ及びデータ処理の効率的な処理に適した動作モードを含む、データを処理するためのシステム及び方法が必要とされている。
【発明の開示】
【課題を解決するための手段】
【００１５】
ここでは、データを処理するための動作モードのためのシステム及び方法が開示される。プログラムをあるモードで実行する間、マイクロプロセッサシステム内に存在するハザードチェックロジックが、このプログラムの実行によって引き起こされるハザードをチェックまたは改善するために利用される可能性がある。しかし、プログラムがこのハザードチェックを必要としない時、マイクロプロセッサは、マイクロプロセッサのハザードチェックロジックのある部分がこのプログラムの実行と関連して利用されない可能性があるモードで、このプログラムを実行する可能性がある。これにより、これらのタイプのプログラムのより高い速度での実行が可能となり、これは、依存性のチェック、誤ったロード／ストア依存性の検出、マイクロプロセッサの実行パイプラインへの不必要なストール状態の挿入、或いは他のハードウエア動作を排除することによる。
【００１６】
ある実施形態において、マイクロプロセッサは、マイクロプロセッサのモードを表すモードビットの組み合わせを有する。マイクロプロセッサがある状態にあることをモードビットの組み合わせが表す時、マイクロプロセッサは、ハザード検出ロジックを使用して指令を実行する。しかし、マイクロプロセッサが他の状態にあることをモードビットの組み合わせが表す時、マイクロプロセッサは、ハザード検出ロジック無しで指令を実行する。
【００１７】
他の実施形態において、モードビットの組み合わせが上記第２の状態にある時、このハザード検出ロジックはパワーオフされる可能性がある。
【００１８】
ある実施形態において、ビットの組み合わせの状態は指令によって設定される。
【００１９】
他の実施形態において、状態変化の前後間でプログラムコンテキストが分離されるように、上記指令は「同調」効果をも有することができる。
【００２０】
本発明の実施形態は、最適化されたプログラムを実行する際、誤ったロード／ストア依存性の検出及び不必要なパイプラインのストール状態によって引き起こされる実行周波数の劣化が無いという技術的な利点を提供する可能性がある。更に、これらのプログラムを実行する際に、存性検出ロジックまたはフォーワーディングロジックが利用されない可能性があるため、これらのプログラムは少ないパワーで実行される可能性がある。
【発明を実施するための最良の形態】
【００２１】
本発明のこれら及びその他の特徴は、以下の説明及び添付図面と共に考察するとき、さらに良好に認識され、理解されるであろう。以下の説明は、本発明の種々の実施形態及びその多くの特別な詳細を示すが、例示として与えられているものであり、発明を限定するものではない。多くの置換、変更、付加または再構成が本発明の技術的範囲内で行われることが可能であり、本発明はこのような置換、変形、付加または再構成の全てを含む。
【００２２】
本明細書の一部を形成する添付の図面は、本発明のある特徴を示すために含まれる。本発明と、そのコンポーネントと、本発明により行われるシステムの動作との明瞭な内容は、この図面に示されている例示的で、それ故限定ではない実施形態を参照することによって、更に容易に明白になるであろう。図面において、同じ参照符号は同じコンポーネントを示す。図面に示されている図形は、必ずしも実寸大で描かれていないことに注意すべきである。
【００２３】
本発明及びその種々の特徴とその効果の詳細を、限定的ではない添付図面に示された実施形態を参照して更に十分に説明し、以下の記述で詳細に述べる。よく知られている出発材料、処理技術、コンポーネント及び装置の説明は、本発明の詳細を不必要に曖昧にしないために省略される。しかしながら、当業者であれば、本発明の好ましい実施形態が開示される一方で、詳細な説明及び特定の例が、本発明の技術的範囲を限定するためではなく、単なる例示として与えられることを理解するであろう。基礎的な本発明の概念の技術的範囲内にある種々の置換、変形、付加、再構成は、この説明を読んだ後、当業者に明白になるであろう。
【００２４】
本発明の典型的な実施形態を詳細に参照すると、幾つかの例が添付図面に示される。可能である限り、同一または類似の部品（素子）を示すために図面を通して同じ参照符号が使用される。
【００２５】
先ず、本明細書を通して使用される用語の理解を助けるため、幾つかの用語が定義または明確化される。「ハザード検出ロジック」及び「依存性検出ロジック」という用語は、マイクロプロセッサの１つ以上の指令パイプライン内の指令の相互関係を、チェックする、見出す、改善する、促進する、或いは伴う、任意のソフトウエア、ハードウエア、或いはそれらの組み合わせを意味することを意図する。
【００２６】
「ＤＳＰモード」という用語は、マイクロプロセッサのハザードチェック機構のどの部分も利用されない、任意の動作モードを意味することを意図する。従って、この用語は、マイクロプロセッサ上のＤＳＰに関する指令の実行に具体的に言及するものであると理解されるべきではない。
【００２７】
「ノーマルモード」という用語は、マイクロプロセッサのハザードチェックロジックが実質的に全て利用されるマイクロプロセッサの動作モードを意味することを意図する。
【００２８】
次に、データを処理するための動作モードためのシステム及び方法について説明する。これらのモードの１つ以上は、独立プロセッサ上でソフトウエアプログラム、例えばＤＳＰプログラムを処理する要望を緩和する可能性があり、これは、マイクロ処理システム上でこれらのソフトウエアプログラムが高性能に実行可能となることによる。典型的なマイクロプロセッサプログラムをあるモードで実行する間、マイクロプロセッサシステム内に存在するハザードチェックロジックが、このプログラムの実行によって引き起こされるハザードをチェックまたは改善するために利用される可能性がある。しかし、プログラムがこのハザードチェックを必要としない時、マイクロプロセッサは、このプログラムを次のようなモードで実行する可能性がある。即ち、このモードでは、マイクロプロセッサのハザードチェックロジックのある部分が、このプログラムの実行と関連して利用されない可能性がある。これにより、これらのタイプのプログラムのより高い速度での実行が可能となり、これは、依存性のチェック、誤ったロード／ストア依存性の検出、マイクロプロセッサの実行パイプラインへの不必要なストール状態の挿入、或いは他のハードウエア動作を排除することによる。更にまた、ハザード検出ロジックの使用の減少により、パワー消費量の減少も達成される可能性がある。
【００２９】
図１は、本発明の実施形態を例示するために使用される典型的なマイクロプロセッサパイプラインアーキテクチャを示す図である。当業者であれば、この図は、実施形態を例示するためだけを意図した単純なアーキテクチャであることを理解できるであろう。また、当業者であれば、ここに記載されるシステム及び方法は、ハザード検出がより多いまたはより少ないものも含めて、広範囲に亘る種々のマイクロ処理システムにおいて、より複雑なまたはより単純な種々の任意のアーキテクチャを以って採用される可能性があることを理解できるであろう。
【００３０】
また、ここで使用される技術用語は、特別のマイクロプロセッサアーキテクチャに特定される可能性があるが、この技術用語によって言及される機能性は、他のマイクロプロセッサアーキテクチャの機能性と実質的に類似する可能性がある。
【００３１】
マイクロプロセッサ１５０は、パイプライン１０を含む可能性があり、パイプライン１０は、フロントエンド１００、実行コア１１０、コミットユニット１２０を含む可能性がある。マイクロプロセッサ１５０はまた、パイプライン１０に結合されたハザード検出ロジック１３０を含む可能性がある。一方、フロントエンド１００は、フェッチユニット１０２、指令キュー１０４、デコード/発送ユニット１０６、及び分岐処理ユニット１０８を含む。フロントエンド１００は、分岐が予測されるまたは決定される時に分岐処理ユニット１０８によって供給されるアドレス、或いは次の指令のアドレスを使用して、指令キャッシュにアクセスすることにより、指令キュー１０４に対して指令を供給する可能性がある。フロントエンド１００は、指令キャッシュから４つの連続的な指令をフェッチし、これらの指令を８−エントリ指令キュー１０４に提供する可能性がある。
【００３２】
指令キュー１０４からの指令は、デコード/発送ユニット１０６によってデコードされると共に適切な実行ユニットに発送される。多くの場合、デコード/発送ユニット１０６は、指令をデコードすると共に適切な実行ユニットに発送するためのロジックを提供する。ある特別の実施形態において、８−エントリ指令キュー１０４は、２つの４−エントリキュー、デコードキュー、及び発送キューからなる。デコード/発送ユニット１０６のデコードロジックは、デコードキューにおいて４つの指令をデコードする一方、デコード/発送ユニット１０６の発送ロジックは、可能な発送のために発送キューにおいて指令を評価すると共に、指令を適切な実行ユニット１１２に割り当てる。
【００３３】
実行ユニット１１２は、デコード/発送ユニット１０６の発送ロジックから発行された異なるタイプの指令を実行する責任を負う。実行ユニット１１２は、スカラ演算ロジックユニット及びベクトル演算ロジックユニットを含む一連の演算実行ユニットを含む可能性がある。スカラ演算ユニットは、整数指令を実行する責任を負う複数の単一サイクル整数ユニットと、単精度及び２倍精度浮動小数点演算を実行する責任を負う複数の浮動小数点ユニットとを含む可能性がある。実行ユニット１１２はまた、キャッシュ及び結果バス間でデータを転送すること、他の実行ユニットにデータを送ること、及びシステムメモリへデータを転送することを行うように操作できるロード／ストア実行ユニットを含む可能性がある。ロード／ストアユニットはまた、キャッシュ制御指令及びロード／ストア指令をサポートする可能性がある。従って、各実行ユニット１１２は、マイクロプロセッサ１５０のパイプライン１０において、１つ以上の実行ステージを含む可能性がある。
【００３４】
コミットユニット１２０は、実行コア１１０内の実行ユニット１１２から指令を受信する可能性があり、また、受信指令をそれらが発行された順にアセンブルすると共に、必要に応じて指令の結果をあるロケーション書き戻す責任を負う。
【００３５】
マイクロプロセッサ１５０のノーマル動作モード中、発行された指令の夫々は、実行コア１１０内のある特別の実行ユニット１１２を通して流れる可能性がある。これは、フロントエンド１００によってフェッチされると共に指令キュー１０４内に配置された指令からなる可能性がある。この指令キュー１０４からの指令は、次に、デコードされて適切な実行ユニット１１２に発送される。この指令は、実行ユニット１１２のパイプライン型のステージを通して進む可能性がある。指令の結果は、最終的にコミットユニット１２０で書き戻される。
【００３６】
更に、マイクロプロセッサ１５０のノーマル動作モード中、ハザード検出ロジック１３０は、マイクロプロセッサ１５０のパイプライン１０の１つ以上の実行ユニット１１２内において指令を分析するように、指令の処理と関連して利用される可能性がある。これにより、これらの指令の処理からもたらされる可能性があるパイプラインハザードを決定し、これらの依存性を調整し、或いは、これらの依存性によって引き起こされる遅延を改善する。ある実施形態において、ハザード検出ロジック１３０は、発行ロジック１３８、ロード／ストア依存性ロジック１３２、フォーワーディングユニットロジック１３４、及び分岐ユニットロジック１３６を含む可能性がある。ここで、ハザード検出ロジック１３０に関係して示されたロジックのある１つまたは全ては、フロントエンド１１０、実行コア１２０、またはコミットユニット１３０のある部分、またはマイクロプロセッサ１５０の他の部分に含まれる可能性があることを理解できるであろう。また、ハザード検出ロジック１３０は、図１に示されたものと比較して、より少ない、異なる、或いはより多いタイプのロジックを含む可能性があり、図１に示された構成は、例示を目的とするだけのものであることを理解できるであろう。
【００３７】
ロード／ストア依存性ロジック１３２は、構造的または他のパイプラインハザードを生成する可能性がある指令のためのチェックと、例えば、この技術において知られているように、パイプライン１０に「ＯＰＳ禁止」を配置することにより、これらのハザードを取り扱うことと、を行うように操作できる。ロード／ストア依存性ロジック１３２は、パイプライン内の指令のオペレータまたはオペランドアドレスを比較することにより、パイプライン内の指令に含まれるアドレスで実質的に同一なものがあるかを知るように、パイプライン内の指令を分析する可能性がある。ロード／ストア依存性ロジック１３２は、従って、ロード指令及びストア指令が、少なくとも同一のアドレスの部分を有するデータロケーションを共に参照する場合、先行するストア指令に対して近接して発行されるロード指令のアドレス依存性を検出するように操作できる。ロード／ストア依存性ロジック１３２はまた、例えば２つのロード指令、キャッシュのリフィル、後続するロード等、パイプライン内の他のメモリアクセスコマンド間の依存性を検出するように操作できる可能性がある。
【００３８】
ある実施形態において、パイプライン１０のターゲットレジスタ情報、及び発行される指令のソースレジスタ情報が、ロード／ストア依存性ロジック１３２に与えられる。ロード／ストア依存性ロジック１３２は、発行ロジック１３８及びフォーワーディングユニット１３４の両者に対して、制御信号を生成する可能性がある。
【００３９】
フォーワーディングユニット１３４は、パイプライン１０内で生じるデータハザードを取り扱うように操作できる可能性がある。これは、この技術において知られているように、パイプライン１０の実行ユニット１１２のあるステージで生じる結果を、その結果をメモリに戻してストアする前に、パイプライン１０の実行ユニット１１２の他のステージに直接フォーワーディングすることにより行うことができる。フォーワーディングユニット１３４は、パイプライン１０の実行ユニット１１２のあるステージにおける動作の結果を、パイプライン１０の実行ユニット１１２の他のステージにフォーワードするように操作できるロジックを有する可能性がある。或いは、フォーワーディングユニット１３４は、パイプライン１０の実行ユニット１１２のあるステージで生じる結果を、パイプライン１０の実行ユニット１１２の他のステージにフォーワードするためのロジックを有する可能性がある。これらは、フォーワーディングユニット１３４またはパイプライン１０の特別の実施の態様に依存する。
【００４０】
分岐ユニットロジック１３６は、分岐指令の発生の結果として生じる可能性がある制御ハザードを取り扱う責任を負う可能性がある。分岐ユニットロジック１３６は、分岐指令に続くストール指令を取り扱う責任を負う可能性がある。ある実施形態において、分岐ユニットロジック１３６は、分岐ユニット１０８と関連して、この技術において知られているように、１つ以上の「ＯＰＳ禁止」をパイプライン１０に挿入するように働く。
【００４１】
発行ロジック１３８は、デコード/発送ブロック１０６関連して、実行ユニット１１２に対して発行される指令の順番、及びどの実行ユニット１１２に各指令が発行されるか、を決定するように使用される可能性がある。これは、部分的に、指令キュー１０４内の種々の指令によってアクセスされる単数または複数のレジスタ、及びパイプライン１０内の指令の単数または複数のターゲットレジスタに基づいてなされる可能性がある。更に、発行ロジック１３８は、どの指令を発行するかを決定するように、ロード／ストア依存性ロジック１３２からの制御信号を使用する可能性がある。
【００４２】
従って、マイクロプロセッサ１５０のノーマル動作モード中、ハザード検出ロジック１３０は、ソフトウエアプログラムの指令の処理の結果としてパイプライン１０内に生じるパイプラインハザードを取り扱うように機能する可能性がある。更に、ハザード検出ロジック１３０は、パイプライン１０の実行ユニット１１２のあるステージからパイプライン１０のパイプの他のステージにデータを直接フォーワードするように操作できる可能性がある。
【００４３】
図２は、このハザード検出ロジックによって負荷されるオーバーヘッドの例を示す。ここで、パイプライン１０は、パイプライン型の実行ユニット２０、２１、２２を含むと仮定する。各パイプライン型の実行ユニット２０、２１、２２は、実行ステージ２５及びステージングラッチ２８を含む。指令は、各パイプライン型の実行ユニット２０、２１、２２の実行ステージ２５を通して進行する。次に、指令の結果が、レジスタファイル２６０に対する最終的コミットのために、ステージングラッチ２８内に配置される。発行される指令とパイプライン型の実行ユニット２０、２１、２２内の指令との間の依存性をチェックするため、実行ステージ２５内のターゲットアドレスは、発行ロジック１３８によって発行される指令に対してチェックされる可能性がある。この場合、パイプライン型の実行ユニット２０、２１、２２の深さが大きいほど、マイクロプロセッサ１５０の１クロックサイクルにおける依存性を検出することがより難しくなる。更に、指令の結果をフォーワードするため、ステージングラッチ２８内の結果がフォーワーディングロジック１３４に対して付与される可能性があると共に、後続する指令が実際に必要とするデータがステージングラッチ２８内のターゲットアドレス情報に基づいて選択される可能性がある。他のパイプライン型の実行ユニット２１、２２よりも、ステージングラッチ２８を比較的多く有するパイプライン型の実行ユニット２０、２１、２２（この例では、パイプライン型の実行ユニット２０）が存在する場合、フォーワーディングのために必要なオーバーヘッドが指数関数的に大きくなり、１サイクルでこのフォーワーディングを取り扱うのが難しくなる可能性がある。
【００４４】
この問題を解消するための１つの解決策は、より多くの実行ステージ２５を有するパイプライン型の実行ユニット２０、２１、２２の第１の幾つかのステージ内に何らかの指令が存在する間、指令発行を抑制することである。例えば、パイプライン型の実行ユニット２２の第１の４つの実行ステージ２５内で指令が実行中である場合、発行コントロール１３８が新たな指令を発行することを停止する可能性がある。これにより、発行コントロール１３８が比較するターゲットアドレスの数が減少すると共に、フォーワーディングロジック１３４と連絡するステージングラッチ２８の数も減少する。ここで分かるように、この方法論は、深刻な性能劣化を引き起こす可能性がある。
【００４５】
しかし、上述のように、幾つかのソフトウエアプログラムは、パイプラインハザードを生成しないように具体的に設計される可能性がある。ハザード検出ロジック１３０は、このタイプのソフトウエアプログラムを実行する時は余計である可能性があるため、これらのソフトウエアプログラムの実行中、ハザード検出ロジック１３０の１つ以上の部分を無効にすることが望ましい可能性がある。これにより、これらのソフトウエアプログラムの実行速度を高めると共に、これらのソフトウエアプログラムを実行する間にマイクロプロセッサ１５０によって消費されるパワーを減少させることができる。
【００４６】
これを達成するため、プログラムの処理時にハザード検出ロジック１３０を利用せずにマイクロプロセッサ１５０を動作させることが望ましい可能性がある。これを達成するため、他の動作モード中、ハザード検出ロジック１３０の１つ以上の部分を、無効、ゲートオフ、休止、またはパワー低下とすることができることが有効となる可能性がある。図３は、あるモードでノーマルに機能するように操作できると共に、他のモードでハザード検出回路構成の１つ以上の部分なしで操作できる、一実施形態に係るマイクロプロセッサを示す。ある実施形態において、マイクロプロセッサ２５０は、１つ以上のモードビット２１０を含む。これらのモードビット２１０は、マイクロプロセッサ２５０のための動作モードを表す。モードビット２１０がある状態にある時、マイクロプロセッサ２５０は、図１を参照して説明したように、ハザード検出ロジック１３０を利用して機能する可能性がある。しかし、１つ以上のモードビット２１０を他の状態に設定することにより、ハザードロジック１３０の１つ以上の部分がパイプライン１０の１つ以上の部分からゲートオフすることができ、マイクロプロセッサ２５０は、ハザード検出ロジック１３０のそれらの部分なしで指令を実行するようになる。
【００４７】
モードビット２１０は、デコード/発送ユニット１０６の発送ロジックから発行される指令によって設定される可能性がある。この指令は、マイクロプロセッサ２５０の指令設定アーキテクチャの一部であると共に、モードビット２１０が設定される前及び後続の指令が実行される前に、以前に発行された指令が完了することを保障するという追加の効果を有する可能性がある（幾つかのアーキテクチャにおいて「同調」効果として知られている）。この機能性は、指令キュー１０４において、以前にフェッチされた指令のフラッシュを強要することなく達成される可能性がある。
【００４８】
ある実施形態において、モードビット２１０の組み合わせの状態は、マイクロプロセッサ指令がフェッチされるマイクロプロセッサ２５０のメモリページのロケーション、またはマイクロプロセッサ指令がロード／ストアのアクセスをするマイクロプロセッサ２５０のメモリページのロケーションによって決定される可能性がある。
【００４９】
マイクロプロセッサ２５０の指令は、２つ以上のタイプに分類される可能性があり、モードビット２１０の組み合わせの状態は、マイクロプロセッサ２５０上で実行する指令のタイプによって決定される可能性がある。マイクロプロセッサ２５０に「ＤＳＰモード」を実行させる指令のタイプは、ＤＳＰ指令と呼ばれるものとする。
【００５０】
更に、モードビット２１０は、メモリ割り当てレジスタ内に存在する可能性があると共に、このレジスタに書き込まれることにより設定される可能性がある。このレジスタは、例えば走査機構または境界走査（ＪＴＡＧ）コントローラを介して外部コントローラによってまたはマイクロプロセッサ２５０によって発行される指令によって書き込まれる可能性がある。
【００５１】
実質的に同時に走る多重プログラムストリームスレッドをサポートするシステムにおいて、モードビット２１０は、マイクロプロセッサ２５０上で実行する可能性がある各スレッドによって独立的に設定される可能性がある。或いは、モードビット２１０は、起動時間に、または、デコード/発送ユニット１０６の発送ロジックから発行される指令が、パイプラインハザードを緩和するように最適化されたプログラムをストアするのに利用される、マイクロプロセッサ２５０によってアクセス可能なメモリの特定領域またはページを参照する時、構成される可能性がある。
【００５２】
図４Ａ及び図４Ｂは、図３に示されるような動作モードのマイクロプロセッサにおいて利用される、一実施形態に係るロード／ストア依存性ロジックを示す図である。ロード／ストアロジック１３２は、マイクロプロセッサの動作モードを表すモードビット２１０に結合される。
【００５３】
ロード／ストアユニット４１０は、アドレス生成ロジック４２０を使用するメモリ中へのアクセスのためのアドレスを生成する可能性がある。このアドレスは、メモリトランザクションパイプライン内に配置されると共に、メモリへの最終的発送のためにロードミスキュー４３０またはストアキュー４４０内に最終的に配置される可能性がある。このメモリに対して、このアドレスによって参照されたデータがロードされる、またはこのアドレスによって参照されるロケーションが書き込まれる。コンパレータ４１２が、メモリトランザクションパイプライン、ロードミスキュー４３０、及びストアキュー４４０内の指令によって参照されるアドレスを比較する可能性がある。ロード／ストア依存性ロジック１３２もまた、コンパレータ４１２に結合される。
【００５４】
ある実施形態において、モードビット２１０がなにも設定されていない時、マイクロプロセッサがノーマルモードにあることを表し、ロード／ストア依存性ロジック１３２は、コンパレータ４１２の出力を受信すると共に、ロード／ストアパイプライン、ロードミスキュー４３０、またはストアキュー４４０内の１つ以上の指令間に依存性が存在するか否かを決定する可能性がある。ロード／ストア依存性ロジック１３２によって依存性が検出されると、この技術において知られているように、ロード／ストアパイプライン、ロードミスキュー４３０、またはストアキュー４４０中に「ＯＰＳ禁止」が挿入される可能性がある。
【００５５】
しかし、マイクロプロセッサが最適化されたプログラムを処理するためのモードにあることを表すように、１つ以上のモードビット２１０が設定されると、コンパレータ４１２は無効にされる可能性がある。ここで、ロード／ストア依存性ロジック１３２がロード／ストアユニット４１０からゲートオフされるまたはコンパレータ４１２から何の出力も受信しない、或いはコンパレータ４１２が不活性とされる。この態様において、ロード／ストア依存性ロジック１３２は、ロード／ストアユニット４１０における依存性をもはや検出せず、従って、メモリトランザクションパイプライン、ロード/ミスキュー４３０、またはストアキュー４４０中に「ＯＰＳ禁止」が全く挿入されない可能性がある。これは、マイクロプロセッサ２５０の動作周波数を増加させることなく、マイクロプロセッサ２５０の性能を改善する可能性がある。更に、一実施形態において、モードビット２１０が、マイクロプロセッサが最適化されたプログラムを処理するためのモードにあることを表す場合、ロード／ストア依存性ロジック１３２は、パワーダウンされる可能性があり、ここで、ロードストア依存性ロジック１３２の活動によって引き起こされるパワーの損失が減少される可能性がある。
【００５６】
図２は、モードビット２１０に関係してロードストア依存性ロジック１３２の動作を示すが、当業者によれば、マイクロプロセッサ２５０の他の部分が、類似する態様でモードビット２１０と関連して動作する可能性があることを理解できるであろう。例えば、モードビット２１０が、マイクロプロセッサ２５０がノーマルモードにあることを表す時、フォーワーディングロジック１３４及び分岐ロジック１３６は、この技術において知られているように、マイクロプロセッサ２５０と共に動作する可能性がある。しかし、モードビット２１０が、マイクロプロセッサ２５０が最適化されたプログラムを処理するためのモードにあることを表す場合、フォーワーディングロジック１３４及び分岐ユニット１３６は、マイクロプロセッサ２５０の部分から同様にゲートオフされる、及び／またはこれらが利用されないように無効にされる可能性があり、これにより、マイクロプロセッサ２５０の性能の向上と消費パワーの低下とを同時に達成することが可能となる。
【００５７】
図５Ａ、図５Ｂ、及び図５Ｃは、ハザード検出ロジックの部分とマイクロプロセッサのパイプラインとの、一実施形態に係る相互関係を示す図である。この図に示すように、マイクロプロセッサは、３つのパイプライン型の実行ユニット５０、５１、５２を含むと仮定する。各パイプライン型の実行ユニット５０、５１、５２は、実行ステージ５５及びステージングラッチ５８を含む。パイプライン型の実行ユニット５０、５１は、もっとも長いパイプライン型の実行ユニット５２よりも少ない実行ステージ５５を有する可能性があると共に、更にこれらはマルチプレクサ５９に結合される。一方、マルチプレクサ５９の出力は、モードビット２１０によって選択される可能性がある。発行ロジック１３２及びフォーワーディングロジック１３４もまた、モードビット２１０に結合される可能性がある。
【００５８】
モードビット２１０が、マイクロプロセッサ２５０がノーマルモードにあることを表す時、パイプライン型の実行ユニット５０、５１、及び５２を通して流れるデータは、図２を参照して記載したようなものとなる可能性がある。しかし、モードビット２１０が、マイクロプロセッサ２５０が最適化されたプログラムを処理するためのモードにあることを表す場合、フォーワーディングロジック１３４が遮断される可能性があると共に、発行ロジック１３２の依存性チェック部分も遮断される可能性がある。この場合、メモリからフェッチされるいかなる指令フェッチも発行ロジック１３２の依存性チェック部分によってストール状態とされることなく発行されると共に、フォーワーディングロジック１３４からの結果は使用されない。その結果、マルチプレクサ５９の出力は、マルチプレクサ５９に関連する夫々のパイプライン型の実行ユニット５０、５１の第１のステージングラッチ５８から取り込まれるモードビットに基づいて切り替えられる可能性がある。従って、夫々のパイプライン型の実行ユニット５０、５１の第１のステージングラッチ５８内のデータは、レジスタファイル５６０に書き込まれ、この際、データは、パイプライン型の実行ユニット５０、５１のステージングラッチ５８の残りの部分を通して進行する必要がない。
【００５９】
マイクロプロセッサ２５０の２つの動作モード間の差の実際の効果は、特定の例に関係してより明確に例示できる可能性がある。ここで、図５Ａ、図５Ｂ、及び図５Ｃに示すようなパイプライン型の実行ユニット５０、５１、５２を有するマイクロプロセッサにおいて、パイプライン型の実行ユニット５２で下記の指令の組み合わせが実行されるものと仮定する。
【００６０】
Ｉｎｓｔｐｉｐｅ５２  ＄２、＄１、＄０  （＄２はターゲット、＄１及び＄０はソース）  
Ｉｎｓｔｐｉｐｅ５２  ＄５、＄４、＄３  
Ｉｎｓｔｐｉｐｅ５２  ＄６、＄１、＄３  
Ｉｎｓｔｐｉｐｅ５２  ＄７、＄４、＄０  
ノーマルに実行するマイクロプロセッサにおいて、これらの指令の夫々は、下記のスケジュールに従って実行される可能性がある。この例において、データ依存性検出ロジックは、パイプラインの第１の４つのステージをチェックせず、従って、セーフマージンの４つのサイクルが各後続する指令を発行するために利用される。
【００６１】
Ｃｙｃ０  Ｉｎｓｔｐｉｐｅ５２  ＄２、＄１、＄０  
Ｃｙｃ１  
Ｃｙｃ２  
Ｃｙｃ３  
Ｃｙｃ４  
Ｃｙｃ５  Ｉｎｓｔｐｉｐｅ５２  ＄５、＄４、＄３  
Ｃｙｃ６  
Ｃｙｃ７  
Ｃｙｃ８  
Ｃｙｃ９  
Ｃｙｃ１０  Ｉｎｓｔｐｉｐｅ５２  ＄６、＄１、＄３  
Ｃｙｃ１１  
Ｃｙｃ１２  
Ｃｙｃ１３  
Ｃｙｃ１４  
Ｃｙｃ１５  Ｉｎｓｔｐｉｐｅ５２  ＄７、＄４、＄０
しかし、ＤＳＰモードのマイクロプロセッサにおいて、データ依存性検出が無効にされ、これらの指令が、遅延なしで発行され且つ実行される可能性がある。
【００６２】
Ｃｙｃ０  Ｉｎｓｔｐｉｐｅ５２  ＄２、＄１、＄０  
Ｃｙｃ１  Ｉｎｓｔｐｉｐｅ５２  ＄５、＄４、＄３  
Ｃｙｃ２  Ｉｎｓｔｐｉｐｅ５２  ＄６、＄１、＄３  
Ｃｙｃ３  Ｉｎｓｔｐｉｐｅ５２  ＄７、＄４、＄０
前述の説明では、本発明を特定の実施形態を参照して説明した。しかしながら、当業者は、種々の変形及び変更が、特許請求の範囲に記載される本発明の技術的範囲を逸脱することなく行えることを認識できるであろう。従って、明細書及び図面は、本発明を限定するためではなく、例示として考えられるべきものであり、全てのこのような変形は本発明の技術的範囲内に含まれることを意図する。
【００６３】
効果、その他の利点、及び問題に対する解決策について特定の実施形態に関して前述した。しかしながら、効果、利点、問題に対する解決策、及びこのような任意の利点、効果または解決策を生じ、或いはより決定的にする任意のコンポーネントは、一部または全ての特許請求の範囲の臨界的な、必要とされるまたは本質的な特徴或いはコンポーネントとして解釈されるべきではない。
【図面の簡単な説明】
【００６４】
【図１】一実施形態に係るマイクロプロセッサを示すブロック図である。
【図２】一実施形態に係るマイクロプロセッサのパイプラインを示すブロック図である。
【図３】一実施形態に係るマイクロプロセッサを示すブロック図である。
【図４Ａ】一実施形態に係るロード／ストアロジックを示すブロック図である。
【図４Ｂ】一実施形態に係るロード／ストアロジックを示すブロック図である。
【図５Ａ】一実施形態に係るマイクロプロセッサのパイプラインを示すブロック図である。
【図５Ｂ】一実施形態に係るマイクロプロセッサのパイプラインを示すブロック図である。
【図５Ｃ】一実施形態に係るマイクロプロセッサのパイプラインを示すブロック図である。
【図１】
2007026452.tif 000003
【図２】
2007026452.tif 000004
【図３】
2007026452.tif 000005
【図４Ａ】
2007026452.tif 000006
【図４Ｂ】
2007026452.tif 000007
【図５Ａ】
2007026452.tif 000008
【図５Ｂ】
2007026452.tif 000009
【図５Ｃ】
2007026452.tif 000010
【外国語明細書】
2007026452000001.pdf