(57)【要約】  命令について複数のマイクロコードフローシノニム又はハードウェアフローシノニムを利用する方法及び装置が開示される。一実施例では、異なるタイプの２以上の実行ユニットでの実行のため、マイクロコードシノニムが生成される。実行ユニットの利用可能性ステータスに応じて、実行のための１つのマイクロコードシノニムが選択されてもよい。他の実施例では、実行のため、複数のマイクロコードシノニムが選択されてもよい。実行を終了した第１マイクロコードシノニムの結果はリタイアされてもよい。２つのマイクロコードシノニムの実行結果が一致しない場合、フォルト例外処理が行われてもよい。【特許請求の範囲】
【請求項１】
第１命令に対する第１及び第２フローシノニムを実現し、前記第１及び第２フローシノニムの１つを前記第１命令と関連付けるデコーダと、
実行のため、前記第１及び第２フローシノニムの１つをスケジューリングするスケジューラと、
から構成されることを特徴とするプロセッサ。
【請求項２】
請求項１記載のプロセッサであって、
前記第１フローシノニムは、第１実行ユニットで実行され、
前記第２フローシノニムは、第２実行ユニットで実行される、
ことを特徴とするプロセッサ。
【請求項３】
請求項２記載のプロセッサであって、
前記第１実行ユニットと前記第２実行ユニットとは、異なるタイプであることを特徴とするプロセッサ。
【請求項４】
請求項２記載のプロセッサであって、
前記第１実行ユニットと前記第２実行ユニットとは、異なる精度を有することを特徴とするプロセッサ。
【請求項５】
請求項１記載のプロセッサであって、
前記第１フローシノニムと前記第２フローシノニムとは、共通の実行ユニットで実行されることを特徴とするプロセッサ。
【請求項６】
請求項１記載のプロセッサであって、
前記デコーダは、プロセッサステータスに基づき前記関連付けを行うことを特徴とするプロセッサ。
【請求項７】
請求項１記載のプロセッサであって、
前記デコーダは、ルールに基づき前記関連付けを行うことを特徴とするプロセッサ。
【請求項８】
請求項７記載のプロセッサであって、
前記ルールは、当該プロセッサの電力設定を考慮することを特徴とするプロセッサ。
【請求項９】
請求項７記載のプロセッサであって、
前記ルールは、実行ユニットの故障ステータスを考慮することを特徴とするプロセッサ。
【請求項１０】
請求項１記載のプロセッサであって、
前記デコーダはさらに、前記第１及び第２フローシノニムの他の１つを前記第１命令と関連付けし、
前記スケジューラはさらに、実行のため、前記第１及び第２フローシノニムの他の１つをスケジューリングする、
ことを特徴とするプロセッサ。
【請求項１１】
請求項１０記載のプロセッサであって、さらに、
前記第１フローシノニム又は前記第２フローシノニムの何れか最初に実行を完了させたものをリタイアするリタイアメントモジュールを有することを特徴とするプロセッサ。
【請求項１２】
請求項１０記載のプロセッサであって、さらに、
前記第１及び第２フローシノニムの実行結果を比較し、不一致があると例外処理を実行するリタイアメントモジュールを実行するリタイアメントモジュールを有することを特徴とするプロセッサ。
【請求項１３】
複数の実行ユニットのそれぞれが利用可能であるか判断するステップと、
前記複数の実行ユニットの第１実行ユニットが利用可能である場合、前記利用可能な第１実行ユニットに対応する第１フローシノニムを選択し、さらに前記利用可能な第１実行ユニット上での実行のため、前記第１フローシノニムをスケジューリングするステップと、
から構成されることを特徴とする方法。
【請求項１４】
請求項１３記載の方法であって、さらに、
前記複数の実行ユニットの何れも利用可能でない場合、複数のフローシノニムから第２フローシノニムを選択するよう調停するステップを有することを特徴とする方法。
【請求項１５】
請求項１３記載の方法であって、さらに、
前記複数の実行ユニットの複数の実行ユニットが利用可能な場合、システムパフォーマンスルールに基づき、前記利用可能な実行ユニットの１つに対応して、複数のフローシノニムから前記第１フローシノニムを選択するステップを有することを特徴とする方法。
【請求項１６】
請求項１３記載の方法であって、
前記判断するステップは、プロセッサステータスレジスタを読み出すことを特徴とする方法。
【請求項１７】
請求項１６記載の方法であって、
前記プロセッサステータスレジスタは、前記複数の実行ユニットの第２実行ユニットが、該第２実行ユニットにおける故障により利用性が低いことを示すことを特徴とする方法。
【請求項１８】
請求項１６記載の方法であって、
前記プロセッサステータスレジスタは、前記複数の実行ユニットの第２実行ユニットが、プロセッサの低電力モードにより利用可能であることを示すことを特徴とする方法。
【請求項１９】
命令を第１フローシノニムと第２フローシノニムとに復号化するステップと、
第１実行ユニットと第２実行ユニット上での実行のため、前記第１フローシノニムと第２フローシノニムとをスケジューリングするステップと、
前記第１実行ユニット上で前記第１フローシノニムを実行するステップと、
前記第２実行ユニット上で前記第２フローシノニムを実行するステップと、
から構成されることを特徴とする方法。
【請求項２０】
請求項１９記載の方法であって、さらに、
前記第２フローシノニムが実行を終了する前、前記第１フローシノニムが実行を終了すると、前記第１フローシノニムをリタイアするステップを有することを特徴とする方法。
【請求項２１】
請求項１９記載の方法であって、さらに、
前記第１フローシノニムの第１実行結果が前記第２フローシノニムの第２実行結果と等しくないとき、例外処理を実行するステップを有することを特徴とする方法。
【請求項２２】
第１命令に対する第１及び第２フローシノニムを実現し、前記第１及び第２フローシノニムの１つを前記第１命令と関連付けるデコーダと、実行のため、前記第１及び第２フローシノニムの１つをスケジューリングするスケジューラとを有するプロセッサと、
前記プロセッサと入出力回路とを接続するインタフェースと、
前記インタフェースに接続される音声入出力回路と、
から構成されるシステム。
【請求項２３】
請求項２２記載のシステムであって、
前記第１フローシノニムは、第１実行ユニットで実行され、
前記第２フローシノニムは、第２実行ユニットで実行される、
ことを特徴とするシステム。
【請求項２４】
請求項２３記載のシステムであって、
前記第１実行ユニットと前記第２実行ユニットとは、異なるタイプであることを特徴とするシステム。
【請求項２５】
請求項２３記載のシステムであって、
前記第１実行ユニットと前記第２実行ユニットとは、異なる精度を有することを特徴とするシステム。
【請求項２６】
請求項２２記載のシステムであって、
前記第１フローシノニムと前記第２フローシノニムとは、共通の実行ユニットで実行されることを特徴とするシステム。
【請求項２７】
請求項２２記載のシステムであって、
前記デコーダは、プロセッサステータスに基づき前記関連付けを行うことを特徴とするシステム。
【請求項２８】
請求項２２記載のシステムであって、
前記デコーダは、ルールに基づき前記関連付けを行うことを特徴とするシステム。
【請求項２９】
請求項２８記載のシステムであって、
前記ルールは、当該プロセッサの電力設定を考慮することを特徴とするシステム。
【請求項３０】
請求項２８記載のシステムであって、
前記ルールは、実行ユニットの故障ステータスを考慮することを特徴とするシステム。
【請求項３１】
請求項２２記載のシステムであって、
前記デコーダはさらに、前記第１及び第２フローシノニムの他の１つを前記第１命令と関連付けし、
前記スケジューラはさらに、実行のため、前記第１及び第２フローシノニムの他の１つをスケジューリングする、
ことを特徴とするシステム。
【請求項３２】
請求項３１記載のシステムであって、さらに、
前記第１フローシノニム又は前記第２フローシノニムの何れか最初に実行を完了させたものをリタイアするリタイアメントモジュールを有することを特徴とするシステム。
【請求項３３】
請求項３１記載のシステムであって、さらに、
前記第１及び第２フローシノニムの実行結果を比較し、不一致があると例外処理を実行するリタイアメントモジュールを実行するリタイアメントモジュールを有することを特徴とするシステム。
【請求項３４】
複数の実行ユニットのそれぞれが利用可能であるか判断する手段と、
前記複数の実行ユニットの第１実行ユニットが利用可能であると前記判断するステップが判断する場合、前記利用可能な第１実行ユニットに対応する第１フローシノニムを選択する手段と、
前記利用可能な第１実行ユニット上での実行のため、前記第１フローシノニムをスケジューリングする手段と、
から構成されることを特徴とするプロセッサ。
【請求項３５】
請求項３４記載のプロセッサであって、
前記複数の実行ユニットの何れも利用可能でないと前記判断する手段が判断する場合、複数のフローシノニムから第２フローシノニムを選択するよう調停する手段を有することを特徴とするプロセッサ。
【請求項３６】
請求項３４記載のプロセッサであって、さらに、
前記複数の実行ユニットの複数の実行ユニットが利用可能であると前記判断する手段が判断する場合、システムパフォーマンスルールに基づき、前記利用可能な複数の実行ユニットの１つに対応して、複数のフローシノニムから前記第１フローシノニムを選択する手段を有することを特徴とするプロセッサ。
【請求項３７】
請求項３４記載のプロセッサであって、
前記判断する手段は、プロセッサステータスレジスタを読み出す手段を有することを特徴とするプロセッサ。
【請求項３８】
請求項３７記載のプロセッサであって、
前記プロセッサステータスレジスタは、前記複数の実行ユニットの第２実行ユニットが、該第２実行ユニットにおける故障により利用性が低いことを示すことを特徴とするプロセッサ。
【請求項３９】
請求項３７記載のプロセッサであって、
前記プロセッサステータスレジスタは、前記複数の実行ユニットの第２実行ユニットが、プロセッサの低電力モードにより利用可能であることを示すことを特徴とするプロセッサ。
【請求項４０】
命令を第１フローシノニムと第２フローシノニムとに復号化する手段と、
第１実行ユニットと第２実行ユニット上での実行のため、前記第１フローシノニムと第２フローシノニムとをスケジューリングする手段と、
前記第１実行ユニット上で前記第１フローシノニムを実行する手段と、
前記第２実行ユニット上で前記第２フローシノニムを実行する手段と、
から構成されることを特徴とするプロセッサ。
【請求項４１】
請求項４０記載のプロセッサであって、さらに、
前記第２フローシノニムが実行を終了する前、前記第１フローシノニムが実行を終了すると、前記第１フローシノニムをリタイアする手段を有することを特徴とするプロセッサ。
【請求項４２】
請求項４０記載のプロセッサであって、さらに、
前記第１フローシノニムの第１実行結果が前記第２フローシノニムの第２実行結果と等しくないとき、例外処理を実行する手段を有することを特徴とするプロセッサ。
【発明の詳細な説明】
【発明の詳細な説明】
【０００１】
［技術分野］
本開示は、一般にマイクロプロセッサに関し、より詳細には、異なるタイプの複数の実行ユニットを有するマイクロプロセッサに関する。
【０００２】
［背景］
現在のマイクロプロセッサは、複雑な命令をよりシンプルな命令グループに変換することによって複雑な命令の実行をサポートするかもしれない。結果として得られるよりシンプルな命令グループは、「フロー（ｆｌｏｗ）」と呼ばれるかもしれない。マイクロオペレーションから構成され、マイクロコードにより記述されるフローが存在するかもしれない。これらのフローは、マイクロコードフローと呼ばれるかもしれない。よりシンプルな命令グループへの変換がハードウェアロジックセットにより実行可能なフローが存在するかもしれない。これらのフローは、ハードウェアフロート呼ばれるかもしれない。プロセッサはまず、命令をマイクロコードフロー又はハードウェアフローに復号化し、その後、１以上の実行ユニット上での実行のため、結果として得られるマイクロコードフローをスケジューリングするかもしれない。
【０００３】
プロセッサの実行ユニットは、様々なタイプを有するかもしれない。例えば、１つのプロセッサは、それのアーキテクチャに以下のタイプの実行ユニット、すなわち、整数演算、浮動小数点演算、マルチメディア演算、ブランチ計算及び制御の１以上の実行ユニットと、メモリロード／ストアとを有するかもしれない。一般に、ある命令のマイクロコードフロー又はハードウェアフロー表現は、上記タイプの実行ユニットの１つにおいて実行するよう対象とされる。しかしながら、しばしば対象とされた実行ユニットは利用可能ではなく、又は少なくとも他のものより利用可能性が低い。それが利用可能でない、又は利用可能性が低い理由は、実行ユニットが他の命令に対応する他のフローを現在実行していることと同じくらいシンプルであるかもしれない。しかし、いくつかのケースでは、プロセッサが低電力モードに切り替えられた結果としてオフされるため、対象とされた実行ユニットは利用可能性が低くなるかもしれない。マイクロコードフロー又はハードウェアフローを実行するため、プロセッサはまず、このような低電力モードから立ち上げられねばならない。いくつかのケースでは、対象とされる実行ユニットは、ソフト又はハードの不具合により利用可能性が低くなるか、あるいは利用可能でないかもしれない。これらの状況のそれぞれは、命令のマイクロコードフロー又はハードウェアフロー表現の実行の問題を提起する。
【０００４】
［詳細な説明］
以下の説明は、プロセッサが単一の命令に対応する複数のマイクロコードフローシノニム（ｍｉｃｒｏｃｏｄｅ  ｆｌｏｗ  ｓｙｎｏｎｙｍ）及びハードウェアフローシノニム（ｈａｒｄｗａｒｅ  ｆｌｏｗ  ｓｙｎｏｎｙｍ）を利用し、異なるタイプの実行ユニット上での実行を可能にする技術を説明する。以下の説明では、ロジック実現形態、ソフトウェアモジュール配分、バス信号処理技術及び処理の詳細などの多数の具体的詳細が、本発明のより完全なる理解を提供するため与えられる。しかしながら、本発明はこのような具体的詳細なく実現可能であるということは、当業者には理解されるであろう。他の例では、制御構造、ゲートレベル回路及びフルソフトウェア命令シーケンスは、本発明を不明りょうとしないように詳細には図示されていない。含められた説明により当業者は、過度の実験なく適切な機能を実現することができるであろう。ある実施例では、本発明は、インテル（登録商標）コーポレイションにより製造されるようなＩｔａｎｉｕｍ（登録商標）プロセッサファミリ（ＩＰＦ）プロセッサ又はＰｅｎｔｉｕｍ（登録商標）ファミリプロセッサの形態により開示される。しかしながら、本発明は、複数のマイクロコードシノニム又はハードウェアシノニムを利用することを所望する他のタイプのプロセッサにより実現されてもよい。
【０００５】
図１を参照するに、一実施例によるプロセッサにおけるフローシノニムを利用するパイプライン１００の一部を示す図が示される。図１のパイプライン１００の各ステージは、プロセッサにおけるフローシノニムの利用を説明するため示されている。他の実施例では、パイプラインの各ステージは、異なる機能及び順序を有するかもしれない。図１は、マルチメディア実行ユニット１２０、ブランチ実行ユニット１２２、整数実行ユニット１２４、浮動小数点実行ユニット１２６及びメモリロード／ストア実行ユニット１２８を有するパイプライン１００の代表的な実行ユニットを示す。他の実施例では、上記実行ユニットのそれぞれが複数存在してもよいし、異なるタイプの実行ユニットが存在してもよい。
【０００６】
フェッチ段階１０４は、１以上のキャッシュからプログラム命令をフェッチ又はプリフェッチし、これらの命令を復号化段階１０６に供給する。復号化段階１０６は、これらの命令を実行ユニットでの以降の実行のため、フローと呼ばれるよりシンプルな命令グループに変換する必要がある。マイクロコードフローは、復号化段階１０６中にマイクロコードＲＯＭ（Ｒｅａｄ−Ｏｎｌｙ  Ｍｅｍｏｒｙ）に格納されてもよい。他の実施例では、マイクロコードフローは、フラッシュメモリなどの不揮発性または書き換え可能メモリに格納されてもよい。ハードウェアフローは、復号化段階１０６中のハードウェアロジック要素セットを用いて実現されてもよい。従来のプロセッサでは、命令とそれのフロー、すなわち、マイクロコードフローまたはハードウェアフローの間に一対一の対応関係が存在する。しかしながら、本開示の一実施例では、マイクロコードフロー又はハードウェアフローを含む複数の相異なるフローのコピーが、いくつかの命令について存在するかもしれない。与えられた命令についてのこれら複数の相異なるフローのコピーが同一の結果をもたらす場合、それらはフローシノニム（ｆｌｏｗ  ｓｙｎｏｎｙｍ）と呼ばれるかもしれない。フローシノニムは、各々が与えられたタイプの実行ユニット上での実行を可能にするマイクロコードフローシノニム又はハードウェアフローシノニムであるかもしれないが、多くの有用なケースでは、それらは、異なるタイプの実行ユニット上での実行が可能である。
【０００７】
一実施例では、フローシノニムのペアであるフローシノニム１（１１０）とフローシノニム２（１１２）は、復号化段階１０６に含まれるかもしれない。他の実施例では、ある命令について２以上のフローシノニムが存在するかもしれない。フローシノニム１（１１０）とフローシノニム２（１１２）のそれぞれは、特定の命令を表すことが可能なマイクロコードフローであってもよいし、又はハードウェアフロー若しくは上記２つの組み合わせであってもよい。復号化段階１０６は、プロセッサステータス又は他のルールに応じて以降の実行のための対応する命令を復号化するため、フローシノニム１（１１０）又はフローシノニム２（１１２）の何れかを選択するためのロジックを有するかもしれない。復号化段階１０６は、特定の実行ユニットが利用可能性が高いか又は低いか判断するため、ステータスレジスタ１１８を確認するようにしてもよい。一実施例では、ステータスレジスタ１１８は、スケジューラ段階１１６によって求められる既存のステータスレジスタであってもよい。ある実行ユニットが利用可能性が低いか否かの表示は、当該実行ユニットが実行のため現在占用されているか、又は当該実行ユニットがプロセッサの低電力モードの一部として電源オフされていることを示すものであってもよい。一部のケースでは、ステータスレジスタ１１８は、ソフト又はハードの不具合が実行ユニットに検出されたことを示すものであってもよい。何れのケースにおいても、復号化段階１０６は、マイクロコードシノニム又はハードウェアシノニムにより利用された実行ユニットがより利用性が高いとき、命令を復号化するためのマイクロコードシノニム又はハードウェアシノニムを選択するようにしてもよい。ステータスレジスタ１１８が、プロセッサ低電力モード又はソフト若しくはハードの不具合を示していないとき、復号化段階１０６は、各種選択ルールを利用することによって、これらの状況を考慮するかもしれない。
【０００８】
複数の実行ユニットが利用性が高い場合、復号化段階１０６は、これら複数の利用性が高い実行ユニットに対応する複数のものの中から１つのマイクロコードシノニム又はハードウェアシノニムを選択する必要がある。一実施例では、この選択は単にデフォルトの選択に基づくものであってもよい。対応する実行ユニットのすべてが利用性が低い他のケースでは、復号化段階１０６は、ルール又は履歴に基づき複数のマイクロコードシノニム又はハードシノニムから調停する必要があるかもしれない。一実施例では、復号化段階１０６は、ブランチ予測回路において実行されるものと同様の方法により、ローカル又はグローバル履歴を調べることにより各種アービトレーション選択のシステムパフォーマンスを判断してもよい。他の実施例では、アービトレーション（ａｒｂｉｔｒａｔｉｏｎ）はデフォルトの選択により実行されてもよい。
【０００９】
他の実施例では、復号化段階１０６は、与えられた命令について利用可能な複数のマイクロコードシノニム又はハードウェアシノニム、又はすべてのマイクロコードシノニム又はハードウェアシノニムを選択し、それらをスケジューラ１１６に送信するようにしてもよい。一実施例において、フローシノニムＳ１（１１０）を浮動小数点実行ユニット１２６のための浮動小数点加算とし、フローシノニムＳ２（１１２）を整数実行ユニット１２４のための浮動小数点加算とする。通常、フローシノニムＳ１（１１０）は、フローシノニムＳ２（１１２）より速く実行するであろう。しかしながら、浮動小数点実行ユニット１２６はある状況において大きく占用される可能性があるため、ときどきＳ２（１１２）が最初に実行を完了するかもしれない。従って、この実施例では、スケジューラ１１６は、対象とされる各実行ユニットにおける実行のため、フローシノニムＳ１（１１０）とＳ２（１１２）の両方をスケジューリングするようにしてもよい。１つのみの結果がリタイアされ、プロセッサの状態を変更すべきであるため、リタイアメント（ｒｅｔｉｒｅｍｅｎｔ）段階１３０は、フローシノニムＳ１（１１０）とＳ２（１１２）の何れが最初に実行を完了しようと、リタイアするようにしてもよい。予測をサポートするプロセッサでは、リタイアメント段階１３０は、その後、より遅く実行されるフローシノニムの予測をしなくてもよい。
【００１０】
他の実施例では、復号化段階１０６は、与えられた命令について利用可能な複数のフローシノニム又はすべてのフローシノニムを再び選択し、それらをスケジューラ１１６に送信するようにしてもよい。一実施例では、再びフローシノニムＳ１（１１０）を浮動小数点実行ユニット１２６のための浮動小数点加算とし、フローシノニムＳ２（１１２）を整数実行ユニット１２４のための浮動小数点加算とする。この場合、スケジューラ１１６は再び、各実行ユニットにおける実行のため、フローシノニムＳ１（１１０）とＳ２（１１２）の両方をスケジューリングしてもよい。それぞれ浮動小数点実行ユニット１２６と整数実行ユニット１２４で実行される２つのフローシノニムＳ１（１１０）とＳ２（１１２）の利用は、これら実行ユニットにおける故障によりもたらされるソフト又はハードエラーに関する情報を提供するものであってもよい。従って、本実施例では、リタイアメント段階１３０は、両方のフローシノニムが実行を終了し、これらの結果を比較するまで待機するようにしてもよい。結果が一致する場合には、問題はない。しかしながら、結果が一致しない場合、例外処理が発生され、ハードウェアステータスのさらなる調査が行われるかもしれない。
【００１１】
大部分ではないが、多くの命令は、マイクロコードシノニム又はハードウェアシノニムを有する候補であるかもしれない。整数演算や浮動小数点演算などの数値計算命令は、それらが異なるレベルのパフォーマンスにより異なるタイプの実行ユニット上で実行されるかもしれないため、当然候補となるかもしれない。制御命令でさえ異なるタイプの実行ユニット上で実行されるかもしれない。例えば、条件ブランチ命令は、ブランチ実行ユニット上で最も効率的に実行されるであろう。しかしながら、ブランチ命令が他のタイプの実行ユニットにより実行されるよう構成することは可能である。例えば、ブランチ命令は、整数実行ユニット上で実行可能であろう。整数実行ユニットは、条件判断をし、当該ブランチが「選択される」べきでない場合、マイクロコードの残りは処理しないようにすることができる。これは、次の命令がプログラムフローにおける次の命令となることを可能にするであろう。しかしながら、当該ブランチが「選択される」べきである場合、整数実行ユニットは、ゼロによる除算などの不適切な実行を実行せざるを得ない可能性がある。これは、「選択される」ブランチ命令アドレスを供給することが可能な例外処理ハンドラをの実行をもたらすであろう。
【００１２】
図２を参照するに、一実施例によるマイクロコードシノニムに復号化されたプログラムのプログラム実行を示す図が示される。復号化段階が命令シーケンスを復号化するとき、ソフトウェアリスト２１０がマイクロコードシノニムを含むマイクロコードフローの進捗を示すとする。このとき、マイクロコードフロー２１２は第１命令を表すとする。第２命令がマイクロコードＲＯＭ２５２に含まれるような２つのマイクロコードシノニムＳ１（２６０）とＳ２（２６２）により表されるとする。条件判断２１４は、マイクロコードシノニムＳ１（２６０）に対応するマイクロコードフロー２１６によって第２命令を表すべきか、又はその代わりに、マイクロコードＳ２（２６２）に対応するマイクロコードフロー２１８により第２命令を表すべきか選択するため、復号化段階により実行されてもよい。例えば、条件判断２１４は、プロセッサが浮動小数点実行ユニット２５５をオフにした低電力モードから抜け出したか判断するためのものであってもよい。そうである場合、浮動小数点実行ユニット上で浮動小数点命令を実行するマイクロコードシノニムが選択されるかもしれない。そうではなく、浮動小数点実行ユニット２５５が依然としてオフである場合、整数実行ユニット２５４上で浮動小数点命令を実行するマイクロコードシノニムが選択されてもよい。マイクロコードフロー２１６又は２１８ノアと、第３命令がマイクロコードフロー２２０に復号化されてもよい。
【００１３】
一実施例では、条件判断２１４は、復号化段階内のロジックによって実行されてもよい。他の実施例では、条件判断２１４は、２つのマイクロコードシノニムＳ１（２６０）とＳ２（２６２）を含むマイクロコードＲＯＭ２５２の一部であってもよい。本実施例では、条件判断２１４は、マイクロコードＲＯＭ２５２が書き換え可能な不揮発性メモリとして実現される場合、マイクロコードＲＯＭ２５２への更新により変更されてもよい。ここで、条件判断２１４は、復号化段階にロードされ、復号化段階の回路によって実行されるようにしてもよい。他の実施例では、マイクロコードＲＯＭ２５２は、マイクロコードシノニムＳ１（２６０）とＳ２（２６２）の代わりに、ハードウェアフローシノニムを実現可能な復号化段階内の追加的な回路によって置換することができる。
【００１４】
図３を参照するに、本開示の他の実施例によるプロセッサにおいてマイクロコードシノニムを利用するパイプライン３００の一部を示すブロック図が示される。図３に示される回路段階の多くは、図１に関して示された等価な段階と同様の機能を有するかもしれない。現在のプロセッサ設計では、１以上の倍精度（又は拡張精度）浮動小数点実行ユニット３２２を有することが望ましいとわかるかもしれない。しかしながら、電力と集積回路のダイサイズを考慮することがまた、１以上の単精度浮動小数点実行ユニット３２６を含めることが望ましいかもしれない。各タイプのタイプ数は、プロセッサ上で実行されることが予想されるタイプのソフトウェアにおける単精度対倍精度（又は拡張精度）浮動小数点命令の相対数の統計解析により影響を受けるかもしれない。しかしながら、これらは統計的な平均であるため、より多く又は少ない各タイプの命令が与えられたプログラムにおいて実行されることがしばしば生じるかもしれない。
【００１５】
従って一実施例では、マイクロコードＲＯＭ３０８は、倍精度浮動小数点命令について２つのマイクロコードシノニムを含むかもしれない。マイクロコードシノニムＳ１（３１０）は、倍精度浮動小数点実行ユニット３２２上で倍精度浮動小数点命令を実行するための対象とされてもよい。マイクロコードシノニムＳ２（３１２）は、単精度浮動小数点実行ユニット３２６上で倍精度浮動小数点命令を実行するための対象とされてもよい。復号化段階３０６は、これら２つのマイクロコードシノニムＳ１（３１０）とＳ２（３１２）の何れが、システムパフォーマンスを考慮してスケジューラ段階３１６に送信するか決定するようにしてもよい。一実施例では、この判断は、ステータスレジスタ３１８からシステムステータスを読み出すことによってサポートされるかもしれない。例えば、倍精度浮動小数点実行ユニットがより利用性が高いとき、一般にマイクロコードシノニムＳ１（３１０）が選択されるかもしれない。しかし、倍精度浮動小数点実行ユニットが利用性が低く、単精度浮動小数点実行ユニットが利用性が高いとき、マイクロコードシノニムＳ２（３１２）が選択されてもよい。
【００１６】
他の実施例では、マイクロコードシノニムＳ１（３１０）は、単精度浮動小数点実行ユニット３２６上で単精度浮動小数点命令を実行するための対象とされてもよい。マイクロコードシノニムＳ２（３１２）は、倍精度不動小数点実行ユニット３２２上で単精度浮動小数点命令を実行するための対象とされてもよい。復号化段階３０６は、再び２つのマイクロコードシノニムＳ１（３１０）とＳ２（３１２）の何れがシステムパフォーマンスを考慮して、スケジューラ段階３１６に送信すべきか判断するようにしてもよい。一実施例では、この判断は再び、ステータスレジスタ３１８からシステムステータスを読み出すことによってサポートされてもよい。例えば、単精度浮動小数点実行ユニット３２６がより利用性が高いとき、一般にマイクロコードシノニムＳ１（３１０）が選択されるかもしれない。しかし、単精度浮動小数点実行ユニット３２６がより利用性が低く、倍精度浮動小数点実行ユニット３２２がより利用性が高いとき、マイクロコードシノニムＳ２（３１２）が選択されるかもしれない。
【００１７】
他の実施例では、マイクロコードＲＯＭ３０８には第３マイクロコードシノニムが存在するかもしれない。例えば、単精度浮動小数点命令は、単精度浮動小数点実行ユニット３２６、倍精度浮動小数点実行ユニット３２２又は整数実行ユニット３２４上での実行のための対象とされるマイクロコードシノニムを有するかもしれない。与えられた命令についてマイクロコードシノニムの個数は限定されるものではない。他の実施例では、マイクロコードＲＯＭ３０８は、マイクロコードシノニムＳ１（３１０）とＳ２（３１２）の代わりに、ハードウェアフローシノニムを実現可能な復号化段階内の追加的な回路により置換することができる。
【００１８】
図４を参照するに、本開示の一実施例によるトレースキャッシュのトレースとして発生するマイクロコードシノニムを示す図が示される。図１の実施例では、復号化段階１０６からの発行後、マイクロコードシノニムを含むマイクロコードフローを一時的に保持するためのバッファ段階１１４が示される。各復号化命令は、スケジューリングされたときに一回だけ利用され、その後廃棄される。
【００１９】
復号化命令を再利用するため、トレースキャッシュが開発された。トレースキャッシュ４００は、マイクロ処理の共にリンクされた「トレース」として復号化されたマイクロコードフローを格納するかもしれない。トレースキャッシュ４００は、複数の方法（ここでは、カラム（ｃｏｌｕｍｎ）として示される）とセット（ここでは、ロー（ｒｏｗ）として示される）を有するかもしれない。方法及びセットの各交差において、マイクロコードフローのマイクロ処理が、マイクロコードフローの次のマイクロ処理の方法及びセットの位置標識と共に配置されてもよい。図４において、トレースの例がトレース４１０と４２０として示される。トレース内の内部リンクにより、マイクロコードフローは、利用のため容易に抽出されるかもしれない。命令のマイクロコードフローへの元の復号化及び対応するトレースの構成の後、対応する命令が実行のためスケジューリングされる毎に、当該トレースは何回も再利用されてもよい。
【００２０】
トレースキャッシュ内のトレースが再利用のため残されているため、復号化段階は、命令の各繰り返しについて異なるマイクロコードシノニムを発行することはできないかもしれない。トレースとして現在インスタンス化されているマイクロコードシノニムの何れもが、単に再利用される。このため、トレースキャッシュにおいて異なるマイクロコードシノニムを利用するため、復号化段階は、複数のマイクロコードシノニムをトレースキャッシュに発行し、それぞれをトレース内に組み込む必要があるかもしれない。ある命令インスタンスにおいて、何れかのマイクロコードシノニムの選択に対応して、何れのトレースが利用されるべきかの選択は、復号化段階よりトレースキャッシュの回路において実行される必要があるかもしれない。同様に、トレースキャッシュが与えられた命令に対応してフローを排除する必要があるとき、トレースキャッシュは、トレースキャッシュ内に存在するすべてのマイクロコードシノニムを排除することができる必要があるかもしれない。
【００２１】
図５を参照するに、本開示の一実施例によるフローシノニムを利用する方法５００を示すフローチャートが示される。図５のフローチャートにおいてマイクロコードフローシノニムが説明されるが、他の実施例では、ハードウェアフローシノニムが利用されてもよい。ある命令が判定ブロック５１０に入ると、当該命令についてマイクロコードフローシノニムが存在するか判断される。存在しない場合、方法５００は、ＮＯパスを介し判定ブロック５１０から抜けだし、１つのマイクロコードフローが復号化ブロック５２２において復号化される。しかしながら、当該命令について複数のマイクロコードフローシノニムが存在する場合、本方法は、ＹＥＳパスを介し判定ブロック５１０から抜けだし、実行ユニットのステータスが、ブロック５１２においてチェックされてもよい。
【００２２】
その後判定ブロック５１６において、マイクロコードフローシノニムにより対象とされる実行ユニットの１以上についてクリアステータスが存在するか判断されるかもしれない。一実施例では、「クリアステータス（ｃｌｅａｒ  ｓｔａｔｕｓ）」は、実行ユニットが利用性が高いことを示すものであってもよい。そうでない場合、本方法はＮＯパスを介し判定ブロック５１６を抜けだし、ブロック５２０において、マイクロコードフローシノニムを選択するため、アービトレーションが行われる。このマイクロコードフローシノニムは、その後、復号化ブロック５２２に送信される。そうである場合、本方法はＹＥＳパスを介し判定ブロック５１６から抜けだし、ブロック５１８において、マイクロコードフローシノニムが選択される。１つの実行ユニットしか利用性が高くない場合、当該実行ユニットについて対象とされるマイクロコードフローシノニムが選択されるかもしれない。複数の実行ユニットが利用性が高い場合、これら利用性が高い実行ユニットの１つを対象とするマイクロコードフローシノニムが、デフォルト選択などの他のルールにより選択されてもよい。何れの場合でも、復号化ブロック５２２は、マイクロコードフローシノニムを用いて命令を復号化する。
【００２３】
復号化ブロック５２２から離れると、本方法はその後、実行ブロック５２６の対象とされた実行ユニット上での実行前に、スケジュールブロック５２４においてマイクロコードフローシノニムをスケジューリングするかもしれない。実行結果は、リタイアメントブロック５２８においてリタイアされてもよい。
【００２４】
図６を参照するに、本開示の他の実施例によるフローシノニムを利用する方法６００を示すフローチャートが示される。図６のフローチャートにおいて、マイクロコードフローシノニムが説明されるが、他の実施例では、ハードウェアフローシノニムが利用されてもよい。ある命令が判定ブロック６１０に入ると、当該命令についてマイクロコードフローシノニムが存在するか判断されてもよい。存在しない場合、方法６００はＮＯパスを介し判定ブロック６１０から抜け出し、ブロック６２０〜６２６において単一のマイクロコードフローが従来通り処理される。しかしながら、２以上のマイクロコードフローシノニムが当該命令について存在する場合、本方法はＹＥＳパスを介し判定ブロック６１０から抜け出す。
【００２５】
ブロック６１２において、デコーダは、対象となる命令について２以上のマイクロコードフローシノニムを発行するようにしてもよい。その後ブロック６１４において、対象とされた実行ユニットがより利用性が高いとき、２以上のマイクロコードフローシノニムが実行のためスケジューリングされてもよい。その後ブロック６１６において、これらの実行ユニットは、対応するマイクロコードフローシノニムを実行する。ブロック６１８において、リタイアメント段階は、実行を終了し、これらの結果をリタイアするため、最初のマイクロコードフローシノニムの結果を採用してもよい。他の実施例では、リタイアメント段階は、リタイアメント前にすべてのマイクロコードフローシノニムが終了し、結果を比較することを可能にするかもしれない。結果の一部が一致しない場合、リタイアメント段階は、プロセッサのハード又はソフトエラーを示す例外処理を生じさせるようにしてもよい。
【００２６】
図７Ａ及び７Ｂを参照するに、本開示の２つの実施例によるフローシノニムの実行をサポートするプロセッサを含むシステムの概略図が示される。図７Ａのシステムは、一般にプロセッサ、メモリ及び入出力装置がシステムバスにより相互接続されるシステムを示し、図７Ｂのシステムは、一般にプロセッサ、メモリ及び入出力装置がいくつかのポイント・ツー・ポイントインタフェースにより相互接続されるシステムを示す。
【００２７】
図７Ａのシステムは、複数のプロセッサを有するが、そのうちの２つのプロセッサ４０と６０のみが簡単化のため示される。プロセッサ４０と６０は、レベル１キャッシュ４２と６２を有するかもしれない。図７Ａのシステムは、システムバス６とのバスインタフェース４４、６４、１２及び８を介し接続される複数の機能を有するかもしれない。一実施例では、システムバス６は、インテル（登録商標）コーポレイションにより製造されるＰｅｎｔｉｕｍ（登録商標）クラスマイクロプロセッサにより利用されるフロントサイドバス（ＦＳＢ）であってもよい。他の実施例では、他のバスが利用されてもよい。いくつかの実施例では、メモリコントローラ３４とバスブリッジ３２はまとめてチップセットと呼ばれるかもしれない。いくつかの実施例では、チップセットの各機能は、図７Ａの実施例に示されるものとは異なって、物理チップに分割されるかもしれない。
【００２８】
メモリコントローラ３４は、プロセッサ５０と６０がシステムメモリ１０及びＢＩＯＳ（Ｂａｓｉｃ  Ｉｎｐｕｔ／Ｏｕｔｐｕｔ  Ｓｙｓｔｅｍ）ＥＰＲＯＭ（Ｅｒａｓａｂｌｅ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｒｅａｄ−Ｏｎｌｙ  Ｍｅｍｏｒｙ）３６から読み書きすることを許可するかもしれない。いくつかの実施例では、ＢＩＯＳ  ＥＰＲＯＭ３６は、フラッシュメモリを利用するかもしれない。メモリコントローラ３４は、メモリリード及びライトデータがシステムバス６を介しバスエージェントに対して搬送されることを許可するためのバスインタフェース８を有するかもしれない。メモリコントローラ３４はまた、ハイパフォーマンスグラフィックインタフェース３９のハイパフォーマンスグラフィック回路３８と接続されてもよい。ある実施例では、ハイパフォーマンスグラフィックインタフェース３９は、アドバンストグラフィックポートＡＧＰインタフェースであってもよい。メモリコントローラ３４は、システムメモリ１０からハイパフォーマンスグラフィックインタフェース３９のハイパフォーマンスグラフィック回路３８にリードデータを移すかもしれない。
【００２９】
図７Ｂのシステムはまた、複数のプロセッサを有してもよいが、簡単化のため、２つのプロセッサ７０と８０のみが示される。プロセッサ７０と８０のそれぞれは、メモリ２と４に接続されるローカルメモリチャネルハブ（ＭＣＨ）７２と８２を有するようにしてもよい。プロセッサ７０と８０は、ポイント・ツー・ポイントインタフェース回路７８と８８を利用して、ポイント・ツー・ポイントインタフェース５０を介しデータをやりとりするかもしれない。プロセッサ７０と８０はそれぞれ、ポイント・ツー・ポイントインタフェース回路７６、９４、８６及び９８を利用して、各ポイント・ツー・ポイントインタフェース５２と５４を介しチップセット９０とデータをやりとりするかもしれない。チップセット９０はまた、ハイパフォーマンスグラフィックインタフェース９２を介しハイパフォーマンスグラフィック回路３８とデータをやりとりするようにしてもよい。
【００３０】
図７Ａのシステムでは、バスブリッジ３２は、いくつかの実施例では、ＩＳＡ（Ｉｎｄｕｓｔｒｙ  Ｓｔａｎｄａｒｄ  Ａｒｃｈｉｔｅｃｔｕｒｅ）バス又はＰＣＩ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ）バスであるかもしれないシステムバス６とバス１６との間のデータ交換を可能にするかもしれない。図７Ｂのシステムでは、チップセット９０は、バスインタフェース９６を介しバス１６とデータをやりとりするかもしれない。何れかのシステムでは、いくつかの実施例では、ローパフォーマンスグラフィックコントローラ、ビデオコントローラ及びネットワーキングコントローラを含むバス１６上の各種入出力（Ｉ／Ｏ）装置１４が存在するかもしれない。いくつかの実施例では、他のバスブリッジ１８が、バス１６と２０との間のデータ交換を可能にするため利用されてもよい。バス２０は、いくつかの実施例では、ＳＣＳＩ（Ｓｍａｌｌ  Ｃｏｍｐｕｔｅｒ  Ｓｙｓｔｅｍ  Ｉｎｔｅｒｆａｃｅ）バス、ＩＤＥ（Ｉｎｔｅｇｒａｔｅｄ  Ｄｒｉｖｅ  Ｅｌｅｃｔｒｏｎｉｃｓ）バス又はＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）バスであってもよい。これらは、キーボード、マウス、音声Ｉ／Ｏ２４を含むカーソル制御装置２２、モデム、ネットワークインタフェースを含む通信装置２６、及びデータ記憶装置２８を有するものであってもよい。ソフトウェアコード３０は、データ記憶装置２８に格納されてもよい。いくつかの実施例では、データ記憶装置２８は、固定された磁気ディスク、フロッピー（登録商標）ディスクドライブ、光ディスクドライブ、光磁気ディスクドライブ、磁気テープ又はフラッシュメモリを含む不揮発性メモリであってもよい。
【００３１】
本明細書において、本発明が特定の実施例を参照して説明された。しかしながら、添付された請求項に与えられる本発明のより広範な趣旨及び範囲から逸脱することなく、各種改良及び変更が可能であるということは明らかであろう。従って、明細書及び図面は、限定的ではなく例示的なものであるとみなされるべきである。
【図面の簡単な説明】
【００３２】
【図１】図１は、一実施例によるプロセッサにおけるフローシノニムを利用したパイプラインの一部を示すブロック図である。
【図２】図２は、一実施例によるマイクロコードシノニムに復号化されたプログラムのプログラム実行を示す図である。
【図３】図３は、本開示の他の実施例によるプロセッサにおけるマイクロコードシノニムを利用したパイプラインの一部を示すブロック図である。
【図４】図４は、本開示の一実施例によるトレースキャッシュのトレースとして行われるマイクロコードシノニムを示す図である。
【図５】図５は、本開示の一実施例によるマイクロコードシノニムを利用した方法を示すフローチャートである。
【図６】図６は、本開示の他の実施例によるマイクロコードシノニムを利用する方法を示すフローチャートである。
【図７Ａ】図７Ａは、本開示の実施例によるマイクロプロセッサシステムのブロック図である。
【図７Ｂ】図７Ｂは、本開示の実施例によるマイクロプロセッサシステムのブロック図である。
【図１】
2007515718.tif 000002
【図２】
2007515718.tif 000003
【図３】
2007515718.tif 000004
【図４】
2007515718.tif 000005
【図５】
2007515718.tif 000006
【図６】
2007515718.tif 000007
【図７Ａ】
2007515718.tif 000008
【図７Ｂ】
2007515718.tif 000009
【国際調査報告】
2007515718.tif 000010
2007515718.tif 000011
2007515718.tif 000012