(57)【要約】本発明は、データ処理装置においてソースレジスタをロックするシステムおよび方法を提供する。このデータ処理装置は、命令のシーケンスを実行するパイプラインを有する処理ユニットと、その処理ユニットがシーケンス内の命令を実行する時に必要とするソースデータを記憶するためのソースレジスタのセットと、を含む。そのとき、構成可能な基準に依存してソースレジスタをロックするためにロッキング機構が用いられ、パイプライン内の命令の実行を完了するためになお必要とされるソースレジスタが、次の命令による所定タイプのアクセスを防止するためにロックされ、前記次の命令が、該命令に関連するソースレジスタが前記命令の要求するようにアクセスできる場合に限りパイプラインに入れることを保証するように前記構成可能な基準は選択される。本発明によれば、処理ユニットは、第１の動作モードおよび第２の動作モードを有する。第１の動作モードにおいては、処理ユニットは、命令の実行中に１つまたはそれ以上の例外状態が決定された時に、前記パイプライン形実行ユニットの外部プロセスを呼出して、命令の実行を完了できるように構成される。対照的に、第２の動作モードにおいては、処理ユニットは、たとえ１つまたはそれ以上の例外状態が決定されても、パイプライン内の命令の実行を完了するように構成される。そのときロッキング機構は、第２の動作モードにおいて、ロックされるソースレジスタの数の低減を行うことができるように、処理ユニットの動作モードに依存して前記構成可能基準を変更するよう構成される。これにより、第２の動作モードで実行している時の処理ユニットの処理速度はかなり改善できる。
2004520657.tif 000002
【特許請求の範囲】
【請求項１】
命令のシーケンスを実行するパイプラインを含む処理ユニットと、
前記処理ユニットが前記シーケンス内の命令を実行する時に必要とするソースデータを記憶するためのソースレジスタのセットと、
構成可能な基準に依存してソースレジスタをロックするロッキング機構であって、前記パイプライン内の命令の実行を完了するためになお必要とされるソースレジスタが、次の命令による所定タイプのアクセスを防止するためにロックされ、前記次の命令が、該命令に関連するソースレジスタが前記命令の要求するようにアクセスできる場合に限り前記パイプラインに入れることを保証するように前記構成可能な基準は選択される、前記ロッキング機構と、を含むデータ処理装置において、
前記処理ユニットは、第１の動作モードおよび第２の動作モードを有し、
前記第１の動作モードにおいては、前記処理ユニットは、命令の実行中に１つまたはそれ以上の例外状態が決定された時に、前記パイプライン形実行ユニットの外部プロセスを呼出して、前記命令の実行を完了できるように構成され、
前記第２の動作モードにおいては、前記処理ユニットは、たとえ前記１つまたはそれ以上の例外状態が決定されても、前記パイプライン内の命令の実行を完了するように構成され、
前記ロッキング機構は、前記第２の動作モードにおいて、ロックされるソースレジスタの数の低減を行うことができるように、前記処理ユニットの前記動作モードに依存して前記構成可能基準を変更するよう構成されている、
前記データ処理装置。
【請求項２】
前記シーケンス内の前記命令の実行から生じる宛先データを記憶するための宛先レジスタのセットをさらに含み、前記ロッキング機構はさらに、所定の基準に依存して宛先レジスタをロックするように構成されている、請求項１記載のデータ処理装置。
【請求項３】
宛先レジスタのロッキングを決定するために用いられる前記所定の基準は、前記第１の動作モードおよび前記第２の動作モードの双方において同じである、請求項２記載のデータ処理装置。
【請求項４】
前記ロッキング機構は、
ロックされたレジスタの記録と、
ロックされたレジスタの前記記録に関連して、前記次の命令が前記パイプラインに入りうるかどうかを決定する検査ロジックと、
前記次の命令のために、その命令の前記ソースレジスタのいずれかが前記記録においてロックされるべきかどうかを決定する決定ロジックであって、該決定ロジックは前記構成可能な基準に応答する前記決定ロジックと、
を含む、請求項１から請求項３までのいずれかに記載のデータ処理装置。
【請求項５】
前記構成可能な基準は、前記第１の動作モードにおいては、命令が前記パイプラインにより実行されるべき時に、前記ロッキング機構がその命令が必要とするソースレジスタを、それらのソースレジスタが前記パイプライン内のその命令により読取られる前の、それらのレジスタがまだ上書きされてもよい間、または、それらが前記パイプラインの外部プロセスによりなお必要とされる間、ロックするように構成され、一方、前記第２の動作モードにおいては、前記構成可能な基準は、前記ロッキング機構がその命令が必要とするソースレジスタを、それらのソースレジスタが前記パイプライン内のその命令により読取られる前の、それらのレジスタがまだ上書きされてもよい間のみロックするように構成される、請求項１から請求項４までのいずれかに記載のデータ処理装置。
【請求項６】
前記ロッキング機構が、スカラ命令のため、または所定値以下の反復数を有するベクトル命令のためのソースレジスタを、ロックしないように構成される、請求項５記載のデータ処理装置。
【請求項７】
前記所定値は、単精度ベクトル命令、または単サイクルスループットを有する倍精度ベクトル命令に対しては４であり、また前記所定値は、２サイクルスループットを有する倍精度ベクトル命令に対しては２である、請求項６記載のデータ処理装置。
【請求項８】
前記構成可能な基準は、前記第２の動作モードにおいて、前記ロッキング機構が倍精度ベクトル命令を、２サイクルスループットを有するとして処理するようなものとされる、請求項７記載のデータ処理装置。
【請求項９】
前記パイプラインの前記外部プロセスは、サポートコードまたはユーザ使用可能化例外ハンドリングルーチンである、請求項１から請求項８までのいずれかに記載のデータ処理装置。
【請求項１０】
前記第１の動作モードはＩＥＥＥ７５４に従う動作モードであり、前記第２の動作モードは、前記１つまたはそれ以上の例外状態を処理するソフトウェアルーチンの必要のない、ＩＥＥＥ７５４に従わないモードである、請求項１から請求項９までのいずれかに記載のデータ処理装置。
【請求項１１】
前記ロッキング機構は、ロックされた宛先レジスタを記録する第１の記録と、ロックされたソースレジスタを記録する第２の記録とを含む、請求項２に従属する請求項３から請求項１０までのいずれかに記載のデータ処理装置。
【請求項１２】
前記第２のモードにおいて、もし前記次の命令が、前記第１の記録内にロックされているとして表示されている宛先レジスタへ任意のタイプのアクセスを行う必要があれば、それは、前記第１の記録から前記ロックがクリアされるまで、前記パイプラインに入らないように機能停止され、一方、もし前記次の命令が、前記第２の記録においてロックされている１つまたはそれ以上の前記ソースレジスタの読取りアクセスを行う必要があるのみならば、それは、前記第２の記録から関連のロックがクリアされるのを待つ必要なしに、前記パイプラインに入ることを許される、請求項１１記載のデータ処理装置。
【請求項１３】
前記第２の動作モードにおいて、前記処理ユニットは、フラッシュトゥゼロ（ｆｌｕｓｈ−ｔｏ−ｚｅｒｏ）モードを用いるように構成され、デノーマル（ｄｅｎｏｒｍａｌ）範囲内のソースデータまたは結果データを、正のゼロにより置換する、請求項１から請求項１２までのいずれかに記載のデータ処理装置。
【請求項１４】
前記第２の動作モードにおいて、前記処理ユニットは、デフォルトＮａＮ（非数）モードを用い、もしソースデータのいずれかがＮａＮであれば、結果データとしてデフォルトＮａＮを生じるように構成される、請求項１から請求項１３までのいずれかに記載のデータ処理装置。
【請求項１５】
前記第２の動作モードにおいて、前記処理ユニットは、該処理ユニットのハードウェア内において、オーバフロー、不正確、ゼロによる除算または無効な例外状態、を処理するように構成される、請求項１から請求項１４までのいずれかに記載のデータ処理装置。
【請求項１６】
データ処理装置の動作方法において、前記データ処理装置は、命令のシーケンスを実行するパイプラインを含む処理ユニットと、前記処理ユニットが前記シーケンス内の命令を実行する時に必要とするソースデータを記憶するソースレジスタのセットと、を有し、前記方法は、
（ｉ）構成可能な基準に依存してソースレジスタをロックするロッキング機構を用いるステップであって、前記パイプライン内の命令の実行を完了するためになお必要とされるソースレジスタが、次の命令による所定のタイプのアクセスを防止するためにロックされ、前記次の命令が、該命令に関連する前記ソースレジスタが前記命令の要求するようにアクセスできる場合に限り前記パイプラインに入れることを保証するように前記構成可能な基準は選択される、前記ロッキング機構を用いるステップと、
（ｉｉ）前記処理ユニットにおける第１の動作モードまたは第２の動作モードを選択するステップであって、前記第１の動作モードにおいては、前記パイプライン形処理ユニットは、命令の実行中に１つまたはそれ以上の例外状態が決定された時に、前記パイプライン形実行ユニットの外部プロセスを呼出して、前記命令の実行を完了できるように構成され、前記第２の動作モードにおいては、前記パイプライン形処理ユニットは、たとえ前記１つまたはそれ以上の例外状態が決定されても、前記パイプライン内の命令の実行を完了するように構成される、前記選択するステップと、
（ｉｉｉ）前記ロッキング機構により、前記第２の動作モードにおいて、ロックされるソースレジスタの数の低減を行うことができるように、前記処理ユニットの前記動作モードに依存して前記構成可能基準を変更するステップと、
を含む前記方法。
【発明の詳細な説明】
【０００１】
（発明の分野）
本発明は、データ処理装置におけるソースレジスタのロッキングに関する。
【０００２】
（従来技術の説明）
命令を実行するための１つまたはそれ以上のパイプラインを組込んだプロセッサを備えることは公知である。そのようなプロセッサのパイプラインの性質により、どのような時点において実行されるプロセスにも複数の命令が存在することとなり、その結果、パイプラインプロセッサのために、適切なハザードおよびリソース検査機能を備えることが必要になった。従って、それぞれの命令は、一般にそれが実行パイプラインへ発せられる前に評価され、もしそれが、実行パイプラインへ発せられたならば、ハザード状態またはリソースコンフリクトを生じるかどうかが決定される。ハザード状態は、もしその命令が、（例えば、パイプラインにおいてすでに実行されつつある命令により）まだ計算されつつあるためにまだ利用できないデータアイテムを必要とするならば、または、もしその命令が、すでにパイプラインにある別の命令によりまだ必要とされているレジスタへのアクセスを必要とし、そのレジスタがすでにパイプラインにある別の命令により読取られるまで上書きされてはならないならば、検出される。リソースコンフリクトは、もし処理ユニットが必要とされ、それがすでに別の実行中の命令のために用いられつつあることにより利用しえなければ、検出される。
【０００３】
ハザードまたはリソース検査を行わず、代わりに、ハザード状態およびリソースコンフリクトを回避するジョブを、コンパイラ／コードライタに残すことは可能である。しかし、これは、一般にコードをきわめて複雑にするので、そのようなハザードおよびリソースの検査プロシージャを実施するのが普通である。
【０００４】
ハザードおよびリソースの検査機能は、関連プロセッサおよび全ての従属プロセッサの機能を停止させる能力を必要とする。例えば、ハザード状態を検出したコプロセッサは、そのハザード状態をメインプロセッサへ知らせなければならず、メインプロセッサは、多くの場合、コプロセッサとの命令フローの整合を維持するために機能を停止する。同様にして、ハザード状態またはリソースコンフリクトを検出したメインプロセッサは、それに応じて全てのコプロセッサに、それらのパイプラインの機能を停止するように勧告する必要がある。機能停止は、コードのセクションを実行する時刻の決定に、不確実性を導入することを認識すべきである。
【０００５】
公知のプロセッサは、さまざまな複雑な方法を用いて、ハザード状態およびリソースコンフリクトを検出し、そのようなハザード状態およびリソースコンフリクトのパフォーマンスによるインパクトを軽減する。レジスタの名前の変更は、用いることができる１つのそのような技術であり、この技術は、すでに実行されつつある命令のためのソースレジスタとして含まれているレジスタの書込みに関係するハザード状態を除去するための、追加のレジスタの利用を含む。高性能プロセッサにおいては、命令は、ハザードまたはリソースコンフリクトのある命令よりも前に、ハザードまたはリソースコンフリクトのない命令を使用可能にする、プログラムの順序により発せられる。そのようなアプローチにおいて用いられる代表的な技術は、現在ある実行状態にある命令のテーブルを維持し、次に、特定の命令のために、命令を処理する機能ユニットの利用可能性、および命令が必要とするオペランドの利用可能性について決定を行う。これは、例えば、予約ステーションを用いる分散形の方法により、または、例えば、レコーダバッファ技術を用いる集中形の方法により、行われる。
上述の技術の双方は、本工業分野において公知である。当業者の認識するように、そのような技術のコストは、面積および電力の点から、また複雑性により、比較的に高価となる。
【０００６】
上述の技術のコストおよび複雑性の多くを回避する別の公知の技術は、スコアボードを使用する。スコアボードは、ソースオペランドとしての、または記憶動作の宛先としてのレジスタの利用可能性を追跡する。スコアボードは、別個の部分に分離され、その１つがソースオペランド用、もう１つが宛先オペランド用とされるか、または、単一のスコアボードが、ソースオペランドおよび宛先オペランドの双方用として維持される。スコアボードにおけるエントリは、そのエントリに関連するレジスタが、次の命令による使用のために利用可能である時には、クリアされる。従って、スコアボードにロックされているように示されているレジスタを必要とする実行パイプラインへ出される命令は、そのレジスタが使用可能になるまで、強制的に待たされ、または機能停止される。スコアボードは、面積、電力、および開発コストに関し、前述の技術よりも一般に簡単かつ安価であるが、提供する性能は一般に低い。
【０００７】
従って、データ処理装置のアプリケーション領域は、上述のアプローチのいずれを用いるかを指示する。デスクトップ計算、または科学またはビジネスの計算のような、高性能のアプリケーションにおいては、必要な性能を提供するために、もっと複雑な技術がしばしば必要となる。ＣＤＣ６６００、ＩＢＭ３６０／９１、および最近のＩＢＭ、インテル（Ｉｎｔｅｌ）ｘ８６およびＳｕｎ  ＳＰＡＲＣプロセッサは、これらのもっと複雑な技術を用いる。しかし、組込み形アプリケーションにおいては、性能は一般に重要ではなく、代わりにプロセッサのチップ面積および消費電力の方がより重要であり、性能は、アプリケーションの目的を満たすのに十分でありさえすればよい。そのような場合には、プログラムの順序での命令発行および上述の技術の使用は、一般に１つか２つの制限された数のパイプラインを用いてリソース管理の複雑性を軽減しつつハザード状態を検査するのに、一般に最も適切な技術である。
【０００８】
多くのアプリケーションにおいて、行われる演算は、オペランドおよび結果の範囲が既知であることを特徴とする。しかし、これが不可能である時には、演算は、矛盾のない合理的な仕方で、演算の結果が、サポートされるデータタイプの範囲の境界外となる状態、または、演算が結果の定義されないオペランドを含む（例えば、負の無限大に対する正の無限大の加算）状態、を処理できなくてはならない。
【０００９】
浮動小数点演算の例を考えると、「２進浮動小数点演算のためのＩＥＥＥ規格」、ＡＮＳＩ／ＩＥＥＥ  Ｓｔｄ７５４−１９８５、米国電気電子技術者協会（Ｔｈｅ  Ｉｎｓｔｉｔｕｔｅ  ｏｆ  Ｅｌｅｃｔｒｉｃａｌ  ａｎｄ  Ｅｌｅｃｔｒｏｎｉｃ  Ｅｎｇｉｎｅｅｒｓ，  Ｉｎｃ．）、ニューヨーク、１００１７（今後ＩＥＥＥ７５４規格と呼ぶ）は、結果がサポートされるデータタイプの範囲の境界外となる時、または、演算の結果が定義されない時の、命令の動態を指定している。ＩＥＥＥ７５４仕様を完全に実施するために、演算が必要とする全ての可能な場合を含めると、結果として、追加のハードウェア／面積および電力消費、および／またはクロック速度の低下を生じる。ＩＥＥＥ７５４仕様は、いくつかの例外を定めており、それらの例外は、もし演算が無限の正確さで行われたならば、または、もし結果が定義されなければ、結果が返されてくるものとならない場合である。ＩＥＥＥ７５４仕様には、例外の５つのタイプ、すなわち、無効、オーバフロー、アンダーフロー、ゼロによる除算、および不正確、が定められている。
【００１０】
たいていの組込み形アプリケーションにおいては、演算は公知のような特徴をもち、ＩＥＥＥ７５４仕様の全ての機能は一般に必要とされない。例えば、サブノーマルサポート、およびＮａＮ（非数）処理のためのサポートは、必要とされない。しかし、オーバフロー状態を処理する能力、および無限大を含む演算は、一般に利点となる。
【００１１】
そのような例外が、パイプラインプロセッサ内における命令の実行中に検出された時は、それらの例外を処理するために、例外ハンドリング機構がしばしば呼出される。そのような例外ハンドリング機構は、呼出された時に、例外を処理するために、例外命令のためのソースオペランドへのアクセスを必要とする。従って、前述のスコアボード技術を用いる時に行われたように、ハザード状態を回避するためにレジスタをロックする時は、そのような場合、命令が、例外の検出されるであろう例外パイプライン内のポイントを通過し終わるまで、それらのレジスタをロックすることが必要である。
【００１２】
ＧＢ−Ａ−２，３３９，３１２に詳述されている、１つの従来技術のプロセッサにおいては、プロセッサは、ある例外的な場合を悲観的に検出し処理するように構成されており、それは、例外状態の存在の決定が、命令が完全に処理される前に得られる情報に基づくことを意味する。全ての可能な例外的場合を確実に処理するために、例外状態とならないかもしれないある場合は、演算が完全に処理されて最終決定が行われるまで、そのようなものとして扱われる。ＧＢ−Ａ−２，３３９，３１２に説明されているプロセッサにおいては、検出は、プロセッサの現在の状態を保存するのに必要な情報の量を最小化するために、プロセッサパイプラインの最初の実行段において行われる。例外の検出は、命令が完了していないときに行われるので、ソースオペランドは、例外ハンドリング機構のために保存される必要があり、関連する命令が例外検出ポイント（ここでは、パイプラインの実行１の段）を通過するまでスコアボードにおいてアンロックされることはできない。そのとき、命令の正確な処置を決定し、ＩＥＥＥ７５４の例外の場合のための特殊な処理を含む正しい応答を発生し、プログラムに復帰するか、またはユーザ定義例外ハンドラを実行するために、ソフトウェアルーチンが用いられる。
【００１３】
従って、要約すると、例外ハンドリングに用いられるソフトウェアルーチンは、命令のソースレジスタへのアクセスを必要とする。さらに、それは、例外命令の、あるサイクル数後まで実行されない。従って、例外命令のソースレジスタへのアクセスを必要とする命令は、その例外命令の実行と、識別された例外状態を処理するソフトウェアルーチンの実行と、の間で発せられる。
【００１４】
このようにして、実行中の命令のソースレジスタをオペランドとして読取り、それらのオペランドをメモリに記憶し、またはそれらを新しい値と共にロードするために、実行中の命令のソースレジスタへのアクセスを必要とするどのような命令も、一般に、実行中の命令が例外決定ポイントを通過して、その後スコアボードにおいて、（例外が検出されなかったか、または関連のソフトウェアルーチンが必要な例外処理を行い終わったために）それらのソースレジスタがアンロックされるまで待たなくてはならない。
【００１５】
従って、対応する命令における例外状態の存在について決定が行われている間レジスタをロックするこの要求は、後の命令を、もし該命令がそのようなロックされたレジスタへのアクセスを必要とするならば、機能停止させることにより、パイプライン処理回路の効率にかなりのインパクトを与えうる。
【００１６】
（発明の要約）
第１の特徴から見ると、本発明が提供するデータ処理装置は、命令のシーケンスを実行するパイプラインを含む処理ユニットと、その処理ユニットが前記シーケンス内の命令を実行する時に必要とするソースデータを記憶するためのソースレジスタのセットと、構成可能な基準に依存してソースレジスタをロックするロッキング機構であって、パイプライン内の命令の実行を完了するためになお必要とされるソースレジスタが、次の命令による所定タイプのアクセスを防止するためにロックされ、前記次の命令が、該命令に関連するソースレジスタが前記命令の要求するようにアクセスできる場合に限りパイプラインに入れることを保証するように前記構成可能な基準は選択される、前記ロッキング機構と、を含み、前記処理ユニットは、第１の動作モードおよび第２の動作モードを有し、第１の動作モードにおいては、処理ユニットは、命令の実行中に１つまたはそれ以上の例外状態が決定された時に、前記パイプライン形実行ユニットの外部プロセスを呼出して、前記命令の実行を完了できるように構成され、第２の動作モードにおいては、処理ユニットは、たとえ前記１つまたはそれ以上の例外状態が決定されても、パイプライン内の命令の実行を完了するように構成され、前記ロッキング機構は、第２の動作モードにおいて、ロックされるソースレジスタの数の低減を行うことができるように、処理ユニットの動作モードに依存して前記構成可能基準を変更するよう構成される。
【００１７】
本発明によれば、前記処理ユニットは、第１の動作モードおよび第２の動作モードを有し、第１の動作モードにおいては、１つまたはそれ以上の例外状態を決定した時に、前記パイプライン形実行ユニットの外部プロセスを呼出して、前記命令の実行を完了できるようにし、一方、第２の動作モードにおいては、処理ユニットは、たとえ前記１つまたはそれ以上の例外状態が存在しても、パイプライン内の前記命令の実行を完了するように構成されている。構成可能な基準に依存してソースレジスタをロックするためにロッキング機構が用いられ、そのロッキング機構は、第２の動作モードにおいて、ロックされるソースレジスタの数の低減を行うことができるように、処理ユニットの動作モードに依存して構成可能基準を変更するよう構成される。
【００１８】
パイプライン形実行ユニットの外部プロセスは、例外状態が検出された命令のソースレジスタへのアクセスを必要としそうなので、第１の動作モードにおいては、それらのレジスタは、その命令のための例外状態が存在しないことが決定されるまで、または、それらの例外状態の１つの検出の後に、パイプライン形実行ユニットの外部プロセスによりそれらのソースレジスタが読取られるまで、ロッキング機構によりロックされなければならない。第２の動作モードにおいては、処理ユニットは、例外状態のいずれを処理するためにもパイプライン形実行ユニットの外部プロセスを呼出す必要がないように構成され、従って、これは、１つまたはそれ以上の例外状態の存在が検出されるまでソースレジスタをロックする必要をなくす。
【００１９】
本発明の発明者は、ソースレジスタの値を上書きされないように保護するための２つの要件が存在することを理解した。第１に、これは、もしソースレジスタ内のデータが、まだレジスタを読取っていない命令により必要とされているならば、行われなければならない。第２に、これは、もしソースレジスタ内のデータが、まだ実行されていないルーチン、例えば、例外状態を処理するために用いられる外部プロセス、により必要とされているならば、行われなければならない。多くの場合に、第１の要件は、第２の要件よりもかなりわずらわしさが少ないことが観察された。検出された例外状態が後の命令を、ソースレジスタがまだ該レジスタを指定する命令により読取られていない限り、ソースレジスタを保護するのに必要であるよりも長く機能停止させた場合に、外部プロセッサにより用いるためにソースレジスタを保存する目的で、ソースレジスタはロックされる。
【００２０】
本発明は、１つまたはそれ以上の例外状態を処理するためにパイプライン形実行ユニットの外部プロセスを呼出す必要をなくす第２の動作モードを提供することにより、また次に、単にソースレジスタがそのような外部プロセスにとって利用可能であるよう、ロッキング機構がもはやソースレジスタをロックしないように、該機構が構成可能な基準を変更するのを可能にすることにより、この問題をかなり軽減する。
【００２１】
実施例においては、データ処理装置は、シーケンス内の命令の実行から生じる宛先データを記憶するための宛先レジスタのセットをさらに含み、ロッキング機構はさらに、所定の基準に依存して宛先レジスタをロックするように構成される。
【００２２】
命令が宛先レジスタを指定した時に、その命令の実行により発生した結果が宛先レジスタにライトバック（ｗｒｉｔｅ  ｂａｃｋ）されるまで前記レジスタを確実にロックし、前記結果が宛先レジスタ内に記憶されるまで、宛先レジスタが読取り、または書込みを受けないことを保証することは明らかに重要である。そのような要件は、第１の動作モードおよび第２の動作モードの双方において明らかに必要であり、従って、実施例において、宛先レジスタのロッキングを決定するために用いられる所定の基準は、第１の動作モードおよび第２の動作モードの双方において同じである。
【００２３】
実施例において、ロッキング機構は、ロックされたレジスタの記録と、ロックされたレジスタの記録に関連して、次の命令が前記パイプラインに入りうるかどうかを決定する検査ロジックと、次の命令のために、その命令のソースレジスタのいずれかが前記記録においてロックされるべきかどうかを決定する決定ロジックであって、該決定ロジックは構成可能な基準に応答する前記決定ロジックと、を含む。
【００２４】
従って、検査ロジックは、次の命令により指定されたソースレジスタおよびオプションとしての宛先レジスタが、ロックされたレジスタの前記記録内にロックされているとしてすでに表示されているかどうかを決定し、一般に、次の命令は、もしそのソースレジスタおよび宛先レジスタのいずれかがすでにロックされているとして表示されていれば、パイプラインに入ることを許されない。前記決定ロジックは、次の命令により指定されたソースレジスタおよびオプションとしての宛先レジスタのいずれかが、前記記録においてロックされるべきかどうかを決定し、決定ロジックは、構成可能な基準に応答するので、処理回路が第２の動作モードで動作しつつある時には、それは一般に少ないソースレジスタのロッキングしか要求しない。
【００２５】
前記構成可能な基準は、いくつかの方法で指定できることを認識すべきである。しかし、実施例において、構成可能な基準は、前記第１の動作モードにおいては、命令が前記パイプラインにより実行されるべき時に、前記ロッキング機構がその命令が必要とするソースレジスタを、それらのソースレジスタがパイプライン内のその命令により読取られる前の、それらのレジスタがまだ上書きされてもよい間、または、それらがパイプラインの外部プロセスによりなお必要とされる間、ロックするように構成され、一方、前記第２の動作モードにおいては、構成可能な基準は、前記ロッキング機構がその命令が必要とするソースレジスタを、それらのソースレジスタが前記パイプライン内のその命令により読取られる前の、それらのレジスタがまだ上書きされてもよい間のみロックするように構成される。
【００２６】
従って、第２の動作モードにおいては、ソースレジスタは、読取り後書込み（ｗｒｉｔｅ−ａｆｔｅｒ−ｒｅａｄ）ハザードの可能性を防止するようにロックされる。従って、所望される状況は、ソースレジスタへの書込みが、そのソースレジスタの読取りが行われた後にのみ行われる（「読取り後書込み」）状況であり、読取り後書込みハザードは、その状況が障害を起こした時に発生する。従って、第２の動作モードにおいては、ソースレジスタは、そのソースレジスタが、そのソースレジスタを指定した命令により読取られる前の、そのソースレジスタが上書きされることが可能である期間中ロックされる。第１の動作モードにおいては、ソースレジスタは、やはりそのような読取り後書込みハザードを防止するためにロックされるが、それらのソースレジスタは、パイプラインの外部プロセスによりなお必要とされる間さらにロックされる。
【００２７】
上述の要件を考慮し、第２の動作モードにおいては、構成可能な基準は、本発明の実施例により、ロッキング機構が、スカラ命令のため、または所定値以下の反復数を有するベクトル命令のためのソースレジスタを、ロックしないように構成される。本発明の実施例による実施においては、スカラ命令、または比較的に短いベクトル命令（すなわち、所定値以下の反復数を有するベクトル命令）のソースレジスタに関し、読取り後書込みハザードの可能性はないことがわかった。
【００２８】
実施例においては、前記所定値は、単精度ベクトル命令、または単サイクルスループットを有する倍精度ベクトル命令に対しては４であり、２サイクルスループットを有する倍精度ベクトル命令に対しては２である。
【００２９】
簡単にするために、本発明の実施例においては、構成可能な基準は、第２の動作モードにおいて、ロッキング機構が倍精度ベクトル命令を、２サイクルスループットを有するとして処理するようなものとされる。
【００３０】
第１の動作モードにおいて、１つまたはそれ以上の例外の検出時に呼出されるパイプラインの外部プロセスは、さまざまな形式をとることができる。しかし、好ましくは、パイプラインの外部プロセスは、サポートコードまたはユーザ使用可能化例外ハンドリングルーチンとする。
【００３１】
サポートコードは、本発明の実施例において３つの基本機能を行う。第１に、サポートコードは、ハードウェアによりサポートされない命令およびデータのタイプを処理するために用いることができる。例えば、実施例においては、残余命令は、処理ユニットのアーキテクチャ仕様に具備されていないが、ＩＥＥＥ７５４規格はそれを必要とする。同様にして、１０進データタイプも処理ユニットのためのアーキテクチャ仕様に含まれていないが、ＩＥＥＥ７５４規格はそれを必要とする。実施例においては、これら双方のために必要とされる処理が、処理ユニットにより実行されるアプリケーションにとって利用可能な、ライブラリ関数として存在する。
【００３２】
実施例のサポートコードにより行われる第２の機能は、特定のデータにより命令を処理することであり、その特定のデータ、例えば、潜在的アンダーフロー状態またはデノーマル（ｄｅｎｏｒｍａｌ）オペランドを与えられても、ハードウェアはその命令を完全に処理することはできない。これらの場合のあるものは例外を生じるが、他のものは例外でない結果を生じる。もし命令が例外を生じれば、その命令のために、ユーザ使用可能化例外ハンドリングルーチンが使用可能化され、次にサポートコードが、サポートコードの第３の基本機能として、後述のある前処理を行う。もし命令が例外状態を発生しなければ、または、もし発生した例外状態の全てが対応する例外イネーブルビットセットを持たなければ、サポートコードは、計算結果を命令の宛先レジスタ内に書込み、次に処理ユニットにより実行されているアプリケーションコードへ復帰するように構成される。
【００３３】
実施例のサポートコードの第３の基本機能は、例外イネーブルビットがセットされている例外を前処理するためのものである。このサポートコードは、バウンス（ｂｏｕｎｃｅ）された命令のための第１のエントリポイントとなる。命令はバウンスされて、上述のサポートコードの第２の基本機能を使用可能にすることにより、その機能が行われるようにし、または、有効な例外が検出されたことにより、この例外のための例外イネーブルビットがセットされる。もしデータが、ユーザ使用可能化例外ハンドリングルーチンのための前処理を必要とするならば、サポートコードがこの前処理を行う。ユーザ使用可能化例外ハンドリングルーチンは、もしそれがアプリケーションコードへの復帰を選択すれば、サポートコードによりそれを行う。
【００３４】
サポートコードの上述の３つの機能は、実施例の第１の動作モードに関連する。第２の動作モードにおいては、たとえ１つまたはそれ以上の例外状態の存在が決定されても、パイプライン内において完了されるべき命令の実行を可能にすることにより、サポートコードを用いる必要はなくされる。
【００３５】
処理ユニットの第１および第２の動作モードが、実施に依存するさまざまな方法で構成されることは明らかである。しかし、実施例においては、第１の動作モードはＩＥＥＥ７５４に従う動作モードであり、第２の動作モードは、前記１つまたはそれ以上の例外状態を処理するソフトウェアルーチンの必要のない、ＩＥＥＥ７５４に従わないモードである。実施例においては、処理ユニットの第１の動作モードは、サポートコードの具備によりＩＥＥＥ７５４に従い、このサポートコードは、処理ユニットのハードウェアが、特定のオペランドを有する命令を処理できない時に呼出される。第２の動作モードにおいては、あるアプリケーションにおいて必要とされないＩＥＥＥ７５４規格の機能のあるものは、ＩＥＥＥ７５４仕様により処理されず、代わりに、パイプライン形実行ユニットの外部プロセスの使用の必要をなくすためにノンコンプライアントな仕方で処理される。
【００３６】
当業者は、ソースレジスタおよび宛先レジスタの双方の記録を保持する時に、さまざまな仕方でロッキング機構が構成されることを認識するであろう。実施例においては、簡単にするために、ロッキング機構は、ソースレジスタおよび宛先レジスタの双方のために単一の記録を保持し、従って、これら２つのタイプのレジスタを区別しない。しかし、別の実施例においては、前記ロッキング機構は、ロックされた宛先レジスタを記録する第１の記録と、ロックされたソースレジスタを記録する第２の記録と、を含む。
【００３７】
この別のアプローチは複雑性をいくらか増大させるが、それは、レジスタが宛先レジスタであるかソースレジスタであるかに依存して、ロックされたそのレジスタに対し阻止されるアクセスの所定のタイプに、ある変化を与えることができる。詳述すると、この別の実施によれば、もし次の命令が、第１の記録内にロックされているとして表示されている宛先レジスタへ任意のタイプのアクセスを行う必要があれば、それは、第１の記録からそのロックがクリアされるまで、パイプラインに入らないように機能停止され、一方、もし次の命令が、第２の記録においてロックされている１つまたはそれ以上のソースレジスタの読取りアクセスを行う必要があるのみならば、それは、第２の記録から関連のロックがクリアされるのを待つ必要なしに、パイプラインに入ることを許される。もし特定のレジスタが宛先レジスタとして指定されていなければ、そのレジスタ内に記憶されているデータは、すでにパイプライン内にある命令のいずれによっても変化させられないことは明らかである。従って、次の命令にそのようなレジスタを読取らせても安全であり、レジスタを読取る作用はレジスタに記憶されている値を変化させないので、たとえソースレジスタがすでにパイプライン内にある命令によりロックされていても、そのソースレジスタを読取ることは容認できる。
【００３８】
当業者は、たとえ１つまたはそれ以上の例外状態が存在していても、処理ユニットはさまざまな仕方で、パイプライン内の命令の実行を完了するために配置されることを認識するであろう。実施例においては、第２の動作モードにおいて、処理ユニットは、フラッシュトゥゼロ（ｆｌｕｓｈ−ｔｏ−ｚｅｒｏ）モードを用いるように構成され、デノーマル範囲内のソースデータまたは結果データを、正のゼロにより置換する。この動作モードは、複雑さと、別の場合にはデノーマルデータ値を処理するのに必要とされるハードウェアと、を取り除き、公知のアルゴリズムに対し演算上のインパクトを与えないか、または極めて小さいインパクトしか与えないことがわかっている。
【００３９】
さらに、実施例の第２の動作モードにおいて、処理ユニットは、デフォルトＮａＮ（非数）モードを用い、もしソースデータのいずれかがＮａＮであれば、結果データとしてデフォルトＮａＮを生じるように構成される。このアプローチは、ＩＥＥＥ７５４仕様に従ってＮａＮを処理するが、これは一般のやり方とは異なる。それにもかかわらず、それはなお、定義されていない演算操作を示すものとして、ＮａＮのためのハンドリングを提供する。
【００４０】
さらに、実施例の第２の動作モードにおいて、処理ユニットは、処理ユニットのハードウェア内において、オーバフロー、不正確、ゼロによる除算または無効な例外状態、を処理するように構成される。詳述すると、実施例においては、オーバフロー、不正確およびゼロによる除算の例外のための完全なデフォルト処理はハードウェアにおいて行われ、また、無効の例外のための完全に近いデフォルト処理もハードウェアにおいて行われる。このアプローチは、ＩＥＥＥ７５４に近いコンプライアンスを提供し、飽和に対してはオーバフローを、また特殊な処理状況に対しては無限大を用いる、たいていの組込み形アプリケーションに適することがわかっている。
【００４１】
第２の特徴から見ると、本発明は、データ処理装置の動作方法を提供し、前記データ処理装置は、命令のシーケンスを実行するパイプラインを含む処理ユニットと、その処理ユニットが前記シーケンス内の命令を実行する時に必要とするソースデータを記憶するソースレジスタのセットと、を有し、前記方法は、（ｉ）構成可能な基準に依存してソースレジスタをロックするロッキング機構を用いるステップであって、前記パイプライン内の命令の実行を完了するためになお必要とされるソースレジスタが、次の命令による所定のタイプのアクセスを防止するためにロックされ、前記次の命令が、該命令に関連する前記ソースレジスタが前記命令の要求するようにアクセスできる場合に限りパイプラインに入れることを保証するように前記構成可能な基準は選択される、前記ロッキング機構を用いるステップと、（ｉｉ）前記処理ユニットにおける第１の動作モードまたは第２の動作モードを選択するステップであって、第１の動作モードにおいては、前記パイプライン形処理ユニットは、命令の実行中に１つまたはそれ以上の例外状態が決定された時に、前記パイプライン形実行ユニットの外部プロセスを呼出して、命令の実行を完了できるように構成され、第２の動作モードにおいては、パイプライン形処理ユニットは、たとえ１つまたはそれ以上の例外状態が決定されても、前記パイプライン内の命令の実行を完了するように構成される、前記選択するステップと、（ｉｉｉ）前記ロッキング機構により、前記第２の動作モードにおいて、ロックされるソースレジスタの数の低減を行うことができるように、前記処理ユニットの動作モードに依存して前記構成可能基準を変更するステップと、を含む。
本発明をさらに、添付図面に示されている実施例を参照しつつ、例によってのみ説明する。
【００４２】
（実施例の説明）
図１に示されているデータ処理システム２２は、メインプロセッサ２４と、浮動小数点ユニット（ＦＰＵ）コプロセッサ２６と、キャッシュメモリ２８と、メインメモリ３０と、入出力システム３２と、を含む。メインプロセッサ２４と、キャッシュメモリ２８と、メインメモリ３０と、入出力システム３２とは、メインバス３４によりリンクされている。コプロセッサバス３６は、メインプロセッサ２４を浮動小数点ユニットコプロセッサ２６にリンクする。
【００４３】
動作においては、メインプロセッサ２４（ＡＲＭコアとも呼ばれる）は、キャッシュメモリ２８、メインメモリ３０、および入出力システム３２との対話を含む一般的なタイプのデータ処理動作を制御する、データ処理命令のストリームを実行する。このデータ処理命令のストリーム内には、コプロセッサ命令が組込まれている。メインプロセッサ２４は、これらのコプロセッサ命令を、接続されたコプロセッサにより実行されるべきタイプのものであるとして認識する。従って、メインプロセッサ２４は、これらのコプロセッサ命令をコプロセッサバス３６上に出し、それらの命令はそのバスから、接続されているコプロセッサにより受取られる。この場合、ＦＰＵコプロセッサ２６は、それが検出した、それへ向けられたものである受信コプロセッサ命令を、受入れて実行する。この検出は、コプロセッサ命令内のコプロセッサ番号フィールドにより行われる。
【００４４】
図２Ａは、本発明の実施例によるコプロセッサ２６内に備えられている素子を詳細に示すブロック図である。コプロセッサ２６は、算術演算を行う演算パイプラインユニット２３０を含む。レジスタファイル２２０が備えられており、これは、演算パイプラインユニット２３０により実行される命令のための、ソースレジスタまたは宛先レジスタとして指定されうる多くのレジスタから成る。ロード／記憶パイプラインユニット２１０も備えられ、これは、ロード命令および／または記憶命令を実行して、ロードデータバス２１２を経て受取ったロードデータ値をレジスタファイル２２０内へロードするか、またはレジスタファイル２２０から記憶データバス２１４上へデータ値を出力し、データ処理システム内のどこか他の場所、例えば、キャッシュ２８またはメモリ３０内に記憶させる。実施例においては、転送経路２１６も備えられ、これは、データ値が、ロード／記憶パイプラインユニット２１０から直接演算パイプラインユニット２３０へ、レジスタファイル２２０をバイパスして送られうるようにする。
【００４５】
実施例においては、ロード／記憶パイプラインユニット２１０、レジスタファイル２２０および演算パイプラインユニット２３０は、全て制御ロジック２００により制御され、制御ロジック２００は、コア２４から命令バス２１８を経て命令を受取り、それらの命令を適切にロード／記憶パイプラインユニット２１０または演算パイプラインユニット２３０へ出すように構成されている。制御ロジック２００はまた、レジスタファイル２２０に、ロード命令の実行中にロード／記憶パイプラインユニット２１０から受取ったデータ値を、いずれのレジスタ内に配置すべきかを指示し、また、記憶命令が実行されつつある時は、ロード／記憶パイプラインユニット２１０へ出力されるべき内容を有するレジスタを識別する。後に詳述されるように、制御ロジック２００はまた、要求されたように且つ要求された時に、バウンス信号および機能停止信号をコア２４へ出すように、またさらに、コア２４から受取ったコア機能停止信号に応答してコプロセッサ２６の実行を停止させるように、構成されている。
【００４６】
実施例の制御ロジック２００のさらなる詳細は、図２Ｂに示されている。制御ロジック２００は、コア２４から信号を受取り、またコア２４へ信号を発する、コプロセッサインタフェース２７５を含む。コプロセッサインタフェース２７５が新しい命令を受取った時、それは命令レジスタ２５０へ送られる。その命令は、そこから命令デコーダユニット２６０へ、またスコアボードロジック２５５へ供給される。命令デコーダ２６０は、その命令をデコードし、次にそれをパイプライン制御ユニット２６５へ送り、このユニットはパイプライン２１０、２３０とのインタフェースをなして、それらのパイプラインの実行を制御する。
【００４７】
実施例のスコアボードロジック２５５を、図３を参照しつつ詳述するが、それは、基本的には受取った命令に基づいて、その命令により指定されたレジスタがすでにスコアボード内にロックされているかどうか、また、その命令がパイプラインへ出された時に、いずれのレジスタを、それらのレジスタがもしあるならば、次の命令により用いられないよう保証するために、スコアボード内にロックすべきであるか、を決定するように構成されている。もしその命令により指定されたレジスタが、すでにスコアボード内にロックされていることが決定されれば、スコアボードロジック２５５は、機能停止信号を機能停止ロジック２７０へ出すように構成されている。機能停止ロジック２７０は、その機能停止信号を、例えばリソースが機能停止しているとの、他の機能停止状態信号と共に受取り、もしそのような機能停止信号をその入力に受ければ、最終機能停止信号を発生する。実施例においては、最終機能停止信号は、コプロセッサインタフェース２７５を経てプロセッサコアへ出力され、プロセッサコアに、コプロセッサがその命令の実行を停止しなければならないことを知らせる。その命令が最後に実行パイプラインに入った時（すなわち、その命令を機能停止させていたロックされたレジスタのクリアの後）、スコアボードはスコアボードロジック２５５内において更新され、その命令が用いるためにロックする必要があるレジスタをロックする。
【００４８】
図３は、本発明の実施例のスコアボードロジック２５５を詳細に示すブロック図である。実施例においては、スコアボードロジックはコプロセッサパイプラインの発行段において用いられ、コプロセッサパイプラインのさまざまな段は、図４を参照しつつ詳細に後述される。命令がコアからコプロセッサへ送られる時、それは、コプロセッサ命令バス２１８を経て、コプロセッサのフェッチ段に受取られ、レジスタ３００内に配置される。コプロセッサは、発行段において命令を評価するように構成され、このプロセスは、命令の後の処理と共に、図４を参照しつつ詳細に後述される。しかし、特にスコアボード処理の発行を処理するとき、レジスタ３００内に記憶されている命令は、経路３０５を経てロジック素子３２０および３３０へ送られる。ロジック３３０は、命令を実行のためにパイプライン内へ出せるかどうかを決定するために、スコアボード３１０内のロックされたレジスタに対し、検査を必要とするレジスタを決定する。例としては、Ｓ１およびＳ２をソースレジスタ、Ｓ０を宛先レジスタとして、もし命令がＦＡＤＤＳ  Ｓ０，Ｓ１，Ｓ２であれば、ロジック３３０は、レジスタ０、１および２が検査されるべきであると決定する。
【００４９】
実施例においては、図２Ａに示されているレジスタファイル２２０は３２個のレジスタを含み、ロジック３３０は、今後「検査値」または略してＣＶと呼ぶ３２ビット値を出力するように構成され、それぞれのビットは、対応するレジスタを、そのレジスタがスコアボード内にロックされているかどうかを決定するために、検査すべきかどうか識別するのに用いられる。レジスタＳ０、Ｓ１およびＳ２が指定されている前の例が与えられたものとすると、ＣＶの最下位の３ビットがセットされ、残りのビットはセットされないままとなり、レジスタ０、１および２のみが検査を必要とすることを示す。
【００５０】
ロジック３３０が発生するこの３２ビットのＣＶは、経路３３５を経て出力され、ロジック３４０を機能対応停止させるが、このロジックもまた、スコアボード３１０から経路３１５を経て、スコアボード３１０内にロックされているレジスタを識別する同様の３２ビット値を受取るように構成されている。もしロジック３４０による、これら２つの値の比較が、検査されたいずれかのレジスタがスコアボード内にロックされていることを示せば、ロジック３４０は、経路３４５を経て機能停止信号を発生し、この信号は前述のように機能停止ロジック２７０へ出力されて、コプロセッサインタフェース２７５に対する最終機能停止を発生するために用いられる。もしその機能停止信号がアサートされれば、現在の命令はパイプラインのデコード段へ進むことができず、その機能停止信号がデアサートされた時にのみデコード段へ進む。
【００５１】
ロジック３２０は、レジスタ３００内に記憶されている命令から、その命令がパイプラインのデコード段へ進んだ時に、スコアボード３１０内にロックされるべきレジスタを、もしあれば、決定するように構成されている。このロジック３２０は、構成可能な基準を用いて、いずれのレジスタがロックされるべきかを、もしあれば、決定するように構成され、この構成可能な基準は、処理ユニットの動作モードに依存して変えられる。実施例においては、処理ユニットは２つの動作モードを有し、第１の動作モードにおいては、処理ユニットは、１つまたはそれ以上の例外状態が決定された時に、パイプライン形実行ユニットの外部プロセスを呼出して、命令の実行を完了できるように構成され、一方、第２の動作モードにおいては、処理ユニットは、たとえ前記１つまたはそれ以上の例外状態が決定されても、パイプライン内のそのような命令の実行を完了するように構成される。
【００５２】
２つの動作モードにおいて適用される基準は、詳細に後述される。しかし、さしあたって、第１の動作モードにおいては、ソースレジスタおよび宛先レジスタの全てがスコアボード内にロックされるべきであり、一方、第２の動作モードにおいては、ソースレジスタは、スカラ命令のため、または、ソースレジスタが命令により読取られる前に該ソースレジスタが上書きされる可能性がないことを保証するように十分に短いベクトル命令のためには、ロックされないことに注意すべきである。実施例においては、これは、４回以下の反復の単精度ベクトル命令のため、または２回以下の反復を有する倍精度ベクトル命令のために、ソースレジスタはロックされないことと同等である（実施例においては、全ての倍精度ベクトル命令は、２サイクルスループットを有すると考えられる）。
【００５３】
従って、Ｓ０を宛先レジスタとして、Ｓ１およびＳ２をソースレジスタとして指定する追加命令の前例の場合は、第１の動作モードにおいては、レジスタ０、１および２は、全てロジック３２０により識別されて、スコアボード３１０内にロックされる。この第１の動作モードは、ここでは、非ランファスト（ｎｏｎ−ＲｕｎＦａｓｔ）動作モードとも呼ぶことにする。しかし、（ここでは、ランファスト動作モードとも呼ばれる）第２の動作モードにおいては、宛先レジスタＳ０のみがロジック３２０により識別されて、スコアボード３１０内にロックされる。ロジック３３０におけると同様に、ロジック３２０は、実施例においては、命令がデコード段へ進んだ時に、スコアボード３１０に追加されるべきレジスタを識別する、今後スコアボード値、または略してＳＶと呼ぶ３２ビット値を出力するように構成され、この３２ビットのＳＶは、経路３２５を経てレジスタ３５０へ出力される。命令がデコード段に入った時は、レジスタ３５０の内容が経路３５５を経て出力され、スコアボード３１０に追加される。
【００５４】
もし前述のＦＡＤＤＳ命令に、命令ＦＡＤＤＳ  Ｓ５，Ｓ１，Ｓ６が続けば、処理ユニットが非ランファストモードで動作しているか、ランファストモードで動作しているかにより、動作に以下の差が生じる。非ランファストモードにおいては、ロジック３２０が出力するＳＶ信号は、ビット１、５および６をセットされるが、一方、もしデータ処理ユニットがランファストモードで動作していれば、ビット５のみをセットされ、宛先レジスタＳ５を指定する。いずれの動作モードが用いられているかにかかわらず、ロジック３３０が経路３３５を経て出力するＣＶ信号は、ビット１、５および６をセットされる。しかし、ＦＡＤＤＳ  Ｓ０，Ｓ１，Ｓ２命令の動作の結果としてスコアボード３１０内にロックされるレジスタは、動作モードが非ランファストモードであるか、ランファストモードであるかによって異なり、従って、機能停止ロジック３４０が経路３１５を経て受取るスコアボード信号は、動作モードにより異なる。詳述すると、非ランファストモードレジスタＳ１は、スコアボード３１０内にロックされるので、ロジック３４０は、命令ＦＡＤＤＳ  Ｓ５，Ｓ１，Ｓ６の発行段中において機能停止を発生する。しかし、もしデータ処理ユニットがランファストモードで動作していれば、宛先レジスタＳ０のみが、命令ＦＡＤＤＳ  Ｓ０，Ｓ１，Ｓ２の実行の結果としてスコアボード３１０に追加されるので、他の命令の実行によりレジスタＳ５、Ｓ１またはＳ６のいずれもスコアボード３１０内にロックされていないと仮定すると、機能停止ロジック３４０により機能停止は発生されず、代わりに命令ＦＡＤＤＳ  Ｓ５，Ｓ１，Ｓ６は直接デコード段内へ進むことができ、それにより命令を処理するのに要する時間は短縮される。
【００５５】
図４は、本発明の実施例における、プロセスコアパイプライン、およびコプロセッサの２つのパイプラインの間の対話を示す。２つのみのコプロセッサパイプラインが要求されているわけではなく、別の実施例においては、異なる命令のセットを処理するため、または命令のセットの間に重なりを与えるために、もっと多くのパイプラインを追加することもできることに注意すべきである。
【００５６】
コプロセッサ２６は、コアパイプラインの後の１つの段を動作させる７段のパイプラインを有する。命令は、コアフェッチ段４００から、コプロセッサ命令バス４０２を経てコプロセッサフェッチ段４０５へ送られる。コプロセッサは、発行段４１５における命令を評価する。もしコプロセッサ２６が、非ランファスト動作モードにおいて例外命令を処理し終わったが、まだその事実をコア２４に知らせていなければ、バウンス信号が、発行段４１５において経路４１９を経てコアに対しアサートされる。すると、コアは例外命令の例外処理を開始し、また例外処理からのリターン時にバウンスを生じた命令の再試行を行う。
【００５７】
コアフェッチ段４００においては、命令バッファから命令が読取られ、もしそれがコプロセッサ命令であるならば、それは、コプロセッサフェッチサイクル４０５へのコプロセッサ命令バス４０２上へ駆動される。
コア発行段４１０においては、コアはコプロセッサ命令に対しほとんどなにもしない。コアデコード段４２０においては、コアは、コア関連の機能停止状態のために、コプロセッサに対する機能停止を処理する。例えば、もしコアが前のコア命令による機能停止状態を検出したならば、コアは、それに応じてコプロセッサを機能停止させるよう命令する必要がある。コアデコードサイクル４２０からコアが出したそのような信号は、関連するコプロセッサパイプラインの、デコード段、発行段およびフェッチ段へ送られる。わかりやすくするために、この信号は図４には示されていない。
【００５８】
コア実行段４３０においては、コアは、コプロセッサから経路４１９、４１７を経て、バウンス信号および機能停止信号をそれぞれ受取り、もしそのバウンス信号が有効なコプロセッサ命令のためにアサートされたものであるならば、例外処理を開始する。
【００５９】
コアメモリサイクル４４０においては、コアは、コプロセッサ記憶データのロード／記憶パイプライン４９０のデコード段４２５から、コプロセッサ記憶データバス４２７を経てコプロセッサ記憶データを受取る。コアライトバック段４５０においては、コアは、ロードデータを、コプロセッサロードデータバス４５２を経て、コプロセッサのロード／記憶パイプライン４９０のコアライトバック段４５５へ駆動する。
【００６０】
コプロセッサフェッチ段４０５においては、コプロセッサは、コプロセッサ命令バス４０２を経て命令を受取り、その命令のデコーディングを開始する。
コプロセッサ発行段４１５においては、コプロセッサは、その命令およびスコアボードの現在の状態を評価し、その命令を出すことができるかどうかを決定する。もしスコアボードが、レジスタを利用できないことを示せば、または、もしパイプラインが使用中で現在の命令がデコード段へ進めなければ、ＣＰ機能停止信号が経路４１７を経てアサートされ、その命令が進んでもよくなるまで、またはコアによりキャンセルされるまで、その信号は保持される。
【００６１】
非ランファスト動作モードにおいては、もし前の命令が、演算パイプライン４９５のコプロセッサ実行１段４６５を完了し、かつ例外であることが決定されたとすれば、コプロセッサは「例外状態」にあると言われる。その決定が行われた時に機能停止された制御レジスタにアクセスしない、または、その決定が行われた後にコプロセッサへ出される、コプロセッサ命令は、「トリガ」命令となり、発行段４１５から経路４１９を経てＣＰバウンス信号をアサートさせる。このバウンス信号がアサートされた時には、コアは、例外処理を開始し、また例外処理後に処理が再開された時にはトリガ命令を再試行する。
【００６２】
もし機能停止が存在せず、かつコプロセッサが例外状態になければ、スコアボードは、ロッキングを必要とする宛先レジスタおよびソースレジスタにより更新され、命令は、コプロセッサの関連するパイプライン４９０、４９５のコプロセッサデコード段へ進む。
【００６３】
コプロセッサデコード段においては、コプロセッサは、演算命令をそのオペランドと共に、その命令を処理するパイプラインまたは機能ユニットへ送る。もしその命令がロード命令または記憶命令であれば、それはロード／記憶パイプライン４９０へ送られる。もし動作が、コプロセッサからコアへのデータの記憶であれば、コプロセッサは、デコード段４２５において、レジスタファイルから記憶データを読取り、ｃｐデータバス４２７をそのデータにより駆動し、そのデータは次にコアのメモリ段４４０により受取られる。もしその命令がロード動作であれば、コプロセッサのデコード段４２５は、その命令をロード／記憶パイプライン４９０の実行段４３５およびメモリ段４４５を経て送る。
【００６４】
コプロセッサメモリ段４４５においては、コプロセッサはロード動作をライトバック段４５５へ送る。コプロセッサライトバック段４５５においては、コアのライトバック段４５０から経路４５２を経て受取ったロードデータが、コプロセッサレジスタファイルに書込まれる。
【００６５】
ここで、コプロセッサの演算パイプライン４９５を見ると、コプロセッサ実行１段４６５においては、演算命令が、該命令が潜在的な例外を有しているかどうかを決定するために、正負符号、指数、および小数部がゼロであるかどうか、の評価から処理を開始する。もし前記命令が潜在的な例外を有しており、かつコプロセッサがランファストモードになければ、例外検出信号が、経路４６７を経てコプロセッサ発行段４１５へ駆動される。もし例外が検出されなければ、命令は実行２段へ送られる。コプロセッサの実行１段および実行２段は、さらにその命令を処理する。コプロセッサ実行４段はその命令を完了し、状態コードまたは例外状態ビットをセットし、結果をレジスタファイルに書込み、または結果を別の機能ユニットへ送る。
【００６６】
例外が決定されなかった時に、スコアボードから、非ランファストモードにおいてロックされたレジスタをクリアできるようにするために、ソースレジスタクリアバス４６９が備えられ、もはやロックされる必要のないレジスタについての情報が、Ｅ１段４６５から発行段４１５へ後送されうるようにする。
【００６７】
本発明の実施例のさまざまなパイプラインの間の対話を説明してきたが、ここで、図５Ａから図８Ｂまでを参照しつつ、非ランファスト動作モードおよびランファスト動作モードを比較する実行フローの例を説明する。
【００６８】
図５Ａおよび図５Ｂは、バックトゥバック（ｂａｃｋ−ｔｏ−ｂａｃｋ）算術演算の実行を示し、そこでは、第２の命令は、第１の命令のソースレジスタを宛先として有し、図５Ａは、非ランファストモードにおけるハザードの場合を示す。
【００６９】
図５Ａにおいては、浮動小数点コプロセッサデータ処理（ＦＣＤＰ）命令ＦＣＤＰ１が、サイクル１においてコプロセッサへ出され、Ｓ１およびＳ２をソースレジスタとして、またＳ０を宛先レジスタとして要求する。サイクル２において、コプロセッサはＳ０、Ｓ１、およびＳ２をロックし、コアはＦＣＤＰ２をコプロセッサへ出す。ＦＣＤＰ２は、Ｓ３およびＳ４をソースレジスタとして、またＳ１を宛先レジスタとして要求する。サイクル３においては、発行段においてＦＣＤＰ２のためにスコアボードが検査され、Ｓ１に対するロックが発見される。従って、ＦＣＤＰ２は、Ｓ１に対するロックが除去されるまで、発行段において機能停止する。
【００７０】
このロックはＳ１上に残って、例外性のものであり且つその例外を処理するためにソフトウェアルーチンを必要とするＦＣＤＰ１の場合に、内容が上書きされないように保護しなければならない。例外検査は、ＦＣＤＰ１のためにサイクル４（すなわち実行１段）において行われる。この例においては、ＦＣＤＰ１は例外性のものではなく、ロックは、サイクル４の終わりに、スコアボードにおいてＳ１およびＳ２に対し除去され、例外検出信号はアサートされない。従って、次のサイクル、すなわちサイクル５において、ＦＣＤＰ２はデコード段へ入ることを許され、一方、コプロセッサは、Ｓ１、Ｓ３およびＳ４をロックして、それらをＦＣＤＰ２による使用のために保護する。Ｓ１が上書きから保護されることを保証するためには、１サイクルの機能停止が必要であることがわかる。
【００７１】
ＦＣＤＰ１が例外性のものでない場合には、ＦＣＤＰ２は直ちにデコード段内へ進むことができる。ＦＣＤＰ２がレジスタにＦＣＤＰ２の結果を上書きできる前に、ＦＣＤＰ１はＳ１を読取るので、ハザード状態は存在しない。従って、例外決定が行われるまでソースレジスタをロックする必要は、実際に例外が存在しない場合には、処理速度に悪影響を及ぼす。
【００７２】
図５Ｂは、ソースレジスタの再使用のためのランファストモードにおけるハザードの場合を示す。図５Ｂおいては、図５Ａの状況が繰返されているが、それはランファストモードにおいて繰返されている。もはやソースレジスタは、上書きされないようにソフトウェアによる使用のために保護される必要はなく、Ｓ１およびＳ２はＦＣＤＰ１の発行段においてロックされない。ＦＣＤＰ２の発行段においてレジスタハザードが検出されなければ、ＦＣＤＰ２は機能停止せず、ＦＣＤＰ２を処理する時間から１サイクルの機能停止が除去される。
【００７３】
図６Ａおよび図６Ｂは、ロードが、第１の命令の１つまたはそれ以上のソースレジスタへの書込みであるロード命令が後続する、演算命令の実行を示し、図６Ａは、前のソースレジスタのロードのための非ランファストモードにおけるハザードの場合を示す。
【００７４】
図６Ａにおいて、ＦＣＤＰ命令に続くロードは、新しいデータをＳ１内に書込む。Ｓ１内の現在のデータは、もしＦＣＤＰ命令が例外性のものであれば、ＦＣＤＰ命令による、またソフトウェアルーチンによる使用のために保護されなければならない。そのＦＣＤＰ命令は、サイクル２中にＦＣＤＰ発行段において、Ｓ０、Ｓ１、およびＳ２に対しスコアボードロックをセットする。ロード命令は、ＦＣＤＰ命令の実行１サイクルの後にロックがクリアされるまで、１サイクルの間機能停止する。次にロード命令は、サイクル８におけるライトバック段の始めに、新しいデータをＳ１内に書込む。
【００７５】
図６Ｂは、前のソースレジスタのロードのためのランファストモードにおけるハザードの場合を示す。図６Ｂにおいては、ソースレジスタはＦＣＤＰ命令のためにロックされておらず、ロード命令はサイクル３中に発行段において機能停止せず、サイクル４においてデコード段へ進む。データは、サイクル７においてロード命令によりＳ１内へ書込まれ、４サイクル後にそれはデコード段においてＦＣＤＰ命令により読取られる。
【００７６】
図７Ａから図７Ｃまでは、ロード命令が後続する、４の長さを有する単精度ベクトル命令の実行のフローを示す。図７Ａにおいて、そのベクトル命令には、非ランファストモードにおけるソースレジスタロードが続く。
【００７７】
図７Ａにおいて、命令ＦＣＤＰは、４回の反復を有するベクトル動作である。４回の反復は、直列に毎サイクル１つ発せられる、
ＦＣＤＰ  Ｓ８，Ｓ１６，Ｓ２４
ＦＣＤＰ  Ｓ９，Ｓ１７，Ｓ２５
ＦＣＤＰ  Ｓ１０，Ｓ１８，Ｓ２６
ＦＣＤＰ  Ｓ１１，Ｓ１９，Ｓ２７
である。
【００７８】
ＦＬＤＭＳ命令（単精度を表す最後のＳと複合したロード）は、単サイクル中に６４ビットバスを経てＳ２４およびＳ２５に、また次のサイクル中にＳ２６およびＳ２７にロードする。非ランファストモードにおいて実行されるＦＣＤＰ命令は、サイクル２中に発行段内の以下のレジスタをロックする。
Ｓ８−Ｓ１１
Ｓ１６−Ｓ１９
Ｓ２４−Ｓ２７
【００７９】
ＦＣＤＰ命令は、サイクル４（第１の反復のための実行１段）においてＳ１６およびＳ２４のためにスコアボードをクリアし、サイクル５（第２の反復のための実行１段）においてＳ１７およびＳ２５のためにスコアボードをクリアし、サイクル６（第３の反復のための実行１段）においてＳ１８およびＳ２６のためにスコアボードをクリアし、またサイクル７（最後の反復のための実行１段）においてＳ１９およびＳ２７のためにスコアボードをクリアする。ＦＬＤＭＳ命令は、スコアボードにおいてＳ２４−Ｓ２７がクリアされるまで機能停止し、それはサイクル７において行われ、全部で４つの機能停止サイクルを与える。
【００８０】
図７Ｂは、全てのレジスタの同じソースレジスタロードが後続する、同じベクトル命令を示しているが、こんどはランファストモードにおけるものである。図７Ｂにおいては、ＦＣＤＰ命令のための発行段において、宛先レジスタのみがロックされる（Ｓ８−Ｓ１１）。従って、ＦＬＤＭＳ命令は機能停止することなく進むことを許され、サイクル７において第１の２つのレジスタ（Ｓ２４およびＳ２５）に、またサイクル８において第２の２つのレジスタ（Ｓ２６およびＳ２７）にロードする。ＦＣＤＰ命令は、デコード段においてサイクル３中にＳ２４を、サイクル４中にＳ２５を、サイクル５中にＳ２６を、またサイクル６中にＳ２７を読取る。従って、ＦＬＤＭＳ命令が機能停止されなかったという事実にもかかわらずハザードは発生しない。
【００８１】
図７Ｃは、ランファストモードにおける、最後のレジスタのソースレジスタロードが後続する、同じベクトル命令を示す。従って、図７Ｃにおいては、ロード命令は、最後のレジスタＳ２７の単一値ロードにより置き換えられる。新しいロードデータの書込みはサイクル７において行われ、それは、（Ｓ２７を読取る）反復４のためのデコードサイクルよりも１サイクル遅れており、従ってやはり、たとえＦＬＤＳ命令が機能停止されなくてもハザードは発生しない。
【００８２】
図８Ａおよび図８Ｂは、たとえランファスト動作モードを用いている時でも、単精度（ＳＰ）命令および倍精度（ＤＰ）命令のためにソースレジスタのロッキングを必要とする状態を示している。
【００８３】
ランファストモードにおいてソースレジスタをロックすることが必要な２つの場合は、以下の場合である。
・  ４回の反復よりも大きい長さの単精度ベクトル命令（または単サイクルスループットを有する倍精度ベクトル命令）、および、
・  命令が２回の反復よりも大きい長さのものである時の、逓倍を含む（すなわち２サイクルスループットを有する）倍精度ベクトル命令。
【００８４】
実施例においては、逓倍を含まない（すなわち単サイクルスループットを有する）倍精度ベクトル命令をロックする必要はない。そのわけは、実施例においては、そのようなベクトル命令は、とにかく４回の反復の最大長しか持てないからである。しかし、１つの実施例においては、全ての倍精度ベクトル命令は２サイクルスループットを有するとして処理され、従って、ソースレジスタは、２回の反復よりも大きい長さの倍精度ベクトル命令が観測された時にはロックされる。これは、処理を簡単化するために行われる。
【００８５】
図８Ａは、ロード命令が後続する、長さ７の単精度ベクトル命令を示す。このベクトル命令は、やはり直列に、以下の動作を行う。
反復          動作
１            ＦＣＤＰ  Ｓ８，Ｓ１６，Ｓ２４
２            ＦＣＤＰ  Ｓ９，Ｓ１７，Ｓ２５
３            ＦＣＤＰ  Ｓ１０，Ｓ１８，Ｓ２６
４            ＦＣＤＰ  Ｓ１１，Ｓ１９，Ｓ２７
５            ＦＣＤＰ  Ｓ１２，Ｓ２０，Ｓ２８
６            ＦＣＤＰ  Ｓ１３，Ｓ２１，Ｓ２９
７            ＦＣＤＰ  Ｓ１４，Ｓ２２，Ｓ３０
【００８６】
図８Ａにおいて、長さ７の単精度ベクトル命令は、第７の反復のためのソースオペランドレジスタとして、Ｓ３０を要求する。Ｓ３０に対するロックがクリアされるまで、Ｓ３０の次のロードは機能停止することを要求される。ランファストモードにおいては、ロックは、単精度動作のための第４の反復の後、および倍精度動作のための第２の反復の後の、反復において用いられるソースレジスタのために、セットされる（実施例においては、全ての倍精度動作は、それらが逓倍を含むかどうかにかかわらず、２サイクルスループットを有するとして処理される）。
【００８７】
図８Ａは、単精度ベクトル命令を示し、そのような場合には、ロックは、現在の反復よりも大きい番号４を有する反復のための、実行１サイクルにおいてクリアされる。これは、以下のテーブルにより示されている（そこでは、「０」はロックがクリアされていることを示し、「１」はロックがセットされていることを示す）。
【００８８】
【表１】
2004520657.tif 000003
【００８９】
このテーブルに示されているように、第５、第６、および第７の反復が要求するソースレジスタのみがロックされる。これにより、サイクル２においては、ロックは、レジスタＳ２０、Ｓ２１、Ｓ２２、Ｓ２８、Ｓ２９、およびＳ３０に対しセットされる。Ｓ２０およびＳ２８に対するロックはサイクル４（ソース反復１における実行１段）においてクリアされ、Ｓ２１およびＳ２９に対するロックはサイクル５（反復２における実行１段）においてクリアされ、またＳ２２およびＳ３０に対するロックはサイクル６（反復３における実行１段）においてクリアされる。従って、ＦＬＤＳ命令は、スコアボードがサイクル６においてＳ３０のためにクリアされるまで、３サイクルの間機能停止される。次にそのＦＬＤＳ命令は、サイクル７においてデコード段へ進むことを許され、サイクル１０においてレジスタファイルに書込む。サイクル９においては、ＦＣＤＰ命令の第７の反復がＳ３０を読取り、第７の反復のためにソースデータの破損は回避される。
【００９０】
図８Ｂは、逓倍を含み、３回の反復を有する倍精度ベクトル命令を示す。
このベクトル命令は、以下の動作をやはり直列に行う。
反復          動作
１            ＦＣＤＰ  Ｄ４，Ｄ８，Ｄ１２
２            ＦＣＤＰ  Ｄ５，Ｄ９，Ｄ１３
３            ＦＣＤＰ  Ｄ６，Ｄ１０，Ｄ１４
【００９１】
図８Ｂにおいて、倍精度ベクトルは逓倍を含み、２サイクル毎に１つの動作のスループットを有する。従って、実行１段は、完了するのに２サイクルを要する。以下のテーブルは、ソースレジスタのロッキングを示す。
【００９２】
【表２】
2004520657.tif 000004
【００９３】
このテーブルに示されているように、第３の反復において要求されるソースレジスタのみがロックされる。従って、ロックは、サイクル２においてＤ１０およびＤ１４に対してセットされ、サイクル４においてクリアされる（逓倍を含む動作に対する倍精度ロックは、実行１段において、現在の反復よりも大きい番号２を有する反復のためにクリアされる）。ＦＬＤＤ命令（ここで最後のＤは倍精度を表す）は、サイクル５においてデコード段へ進み、またサイクル８においてＤ１４に書込むことを許される。倍精度動作は、第２のデコード段においてソースデータを読取り、従ってサイクル７においてＤ１４が読取られ、それにより第３の反復のためにソースデータの破損は回避される。
【００９４】
非ランファストモードまたはランファストモードにおいて、どのようにレジスタがロックされ、またクリアされるかを例により説明したが、ここで、特定の動作モードにおいてロックされ、またクリアされるレジスタの細部を示す、図９Ａから図９Ｆまでを参照する。
【００９５】
図９Ａは、非ランファスト動作モードにおける、単精度ソースレジスタのロッキングおよびクリアリングを示す。実施例においては、単精度ベクトル命令のための最大反復数は８であり、非ランファストモードにおいては、すべての反復におけるソースレジスタは、パイプラインの発行段においてロックされる。これは、図９Ａの左側に文字「Ｘ」を用いて示されている。従って、図９Ａの頂部に沿った行は、反復回数により、その反復に含まれるソースレジスタを識別する。例えば、もし反復数が５であれば、反復１から反復５までに関連するレジスタがロックされ、反復５として識別される行、および反復１から反復５までとして識別される図９Ａの左側にある列内にある「Ｘ」により表される。
【００９６】
図７Ａから図７Ｃまでに関して前述したように、特定の反復のためのソースレジスタは、パイプラインの実行１段においてクリアされる。従って、第１の反復のためのソースレジスタはサイクル４においてクリアされ、第２の反復のためのソースレジスタはサイクル５においてクリアされ、などとなり、これは図９Ａの右側に示されている。
【００９７】
図９Ｂは、図９Ａと同じ形式のテーブルであるが、ランファストモードにおける単精度ソースレジスタのロッキングおよびクリアリングを示している。前述のように、もしベクトル命令が４回以下の反復であれば、ソースレジスタはロックされる必要はない。これは図９Ｂの左側からわかり、そこではソースレジスタは、反復回数が５以上になった時にのみロックされ始めている。前と同様に、テーブルの右側は、特定の反復のためのソースレジスタがクリアされるサイクルを示している。従って、７回の反復を有するベクトル命令の例をとると、反復５におけるソースレジスタに対するロックはサイクル４（すなわち反復１のための実行１段）においてクリアされ、反復６のソースレジスタに対するロックはサイクル５においてクリアされ、また、反復７のソースレジスタに対するロックはサイクル６においてクリアされる。
【００９８】
図９Ｃおよび図９Ｄは、非ランファストモードにおける倍精度ソースレジスタのロッキングおよびクリアリングを示すテーブルであり、図９Ｃは単サイクルスループットを有する倍精度ベクトル命令に関連し、一方、図９Ｄは２サイクルスループットを有する倍精度ベクトル命令（すなわち逓倍を含むベクトル命令）に関連する。これらの図に示されているように、全てのソースレジスタは、非ランファストモードにおいてはロックされる。単サイクルスループットの場合は、特定の反復のためのソースレジスタに対するロックは、その反復がパイプラインのＥ１段に到達した時にクリアされ、従って、反復１のためのソースレジスタに対するロックはサイクル４においてクリアされ、反復２のためのソースレジスタに対するロックはサイクル５においてクリアされ、などとなる。しかし、２サイクルスループットの場合は、それぞれの反復はＥ１段において２サイクルを費やし、従って、反復１のソースレジスタに対するロックは、単サイクルスループットの場合と同様にサイクル４においてクリアされ、反復２のソースレジスタに対するロックはサイクル６においてクリアされ、反復３のソースレジスタに対するロックはサイクル８においてクリアされ、などとなる。
【００９９】
図９Ｅおよび図９Ｆは、図９Ｃおよび図９Ｄとそれぞれ同様のテーブルであるが、ランファストモードにおける倍精度ソースレジスタのロッキングおよびクリアリングを示している。前述のように、反復回数が２以下の時は、ソースレジスタはロックされない。従って、図９Ｅおよび図９Ｆからわかるように、ソースレジスタは、反復回数が３または４の時にのみロックされ、それらの場合には、第３および第４の反復におけるソースレジスタのみがロックされる。第３の反復におけるソースレジスタのロックは、第１の反復がＥ１段にある時にクリアされ、従って第３の反復におけるロックはサイクル４においてクリアされる。単サイクルスループットのベクトル命令の場合は、反復４におけるソースレジスタのロックは、第５のサイクルにおいてクリアされる。しかし、もしベクトル命令が２サイクルスループットを有し、従ってそれぞれの反復がＥ１段において２サイクルを費やせば、反復４のソースレジスタにおけるロックはサイクル６までクリアされず、これは図９Ｆのテーブルの右側部分により示されている。
【０１００】
従って、本発明の実施例は、ＩＥＥＥ７５４規格の全ての特徴に完全に従う必要のない環境において、動作モードをそのような場合におけるランファストモードへスイッチしうるようにし、それによりロックされるソースレジスタの数を減ずることを可能にし、それによって、命令が実行パイプラインに入る前に機能停止されなければならない場合の数を減ずることにより、処理速度のかなりの改善を得られることがわかる。
【０１０１】
ここでは本発明の特定の実施例を説明したが、本発明はこれに制限されず、本発明の範囲内において多くの改変および追加を行えることは明らかである。例えば、実施例は、物理的に分離したコプロセッサを有するＣＰＵに関して説明されたが、この状況である必要はない。例えば、浮動小数点ユニットをメインプロセッサ内に備えることもできる。さらに、前述のように、コプロセッサは、実施例においては２つのパイプラインを有するように示されたが、それぞれが異なる命令のセットに応答する、または命令のセットの間にオーバラップを与える、もっと多くのパイプラインを備えることもできる。さらに、本発明の範囲から逸脱することなく、独立請求項の特徴と従属請求項の特徴とのさまざまな組合せを行うこともできる。
【図面の簡単な説明】
【図１】
本発明の実施例によるデータ処理装置の素子を示すブロック図である。
【図２Ａ】
本発明の実施例による図１のコプロセッサの素子を示すブロック図である。
【図２Ｂ】
本発明の実施例によるコプロセッサの、制御ロジック内に備えられている素子を詳細に示すブロック図である。
【図３】
本発明の実施例によるスコアボードロジックの動作を概略的に示す図である。
【図４】
本発明の実施例によるプロセッサコアおよびコプロセッサ内の、パイプラインの基本フローを示すブロック図である。
【図５】
ＡおよびＢは、第１の動作モードおよび第２の動作モードのそれぞれにおけるバックトゥバック（ｂａｃｋ−ｔｏ−ｂａｃｋ）算術演算の実行のシーケンスを示す図であり、そこでは、第２の命令は、第１の命令のソースレジスタを宛先として有する。
【図６】
ＡおよびＢは、第１の動作モードおよび第２の動作モードのそれぞれにおける、ロード命令が後続する演算命令の実行のシーケンスを示す図であり、そこでは、ロード命令は、演算命令の１つまたはそれ以上の第１の命令のソースレジスタに書込みつつある。
【図７】
ＡからＣは、ロード命令、Ａに示されている第１の動作モード、およびＢおよびＣに示されている第２の動作モードが後続する、ベクトル命令の実行のシーケンスを示す図である。
【図８】
ＡおよびＢは、単精度ベクトル命令および倍精度ベクトル命令のそれぞれの実行のシーケンスであって、双方の場合において前記命令にロード命令が後続している前記シーケンスを示し、また、ソースレジスタのロッキングを必要とする状態を示す図である。
【図９】
ＡからＦは、第１および第２の動作モードの双方における、単精度命令および倍精度命令の双方のために、ソースレジスタがどのようにロックされ、またクリアされるかを示す図表である。
【図１】
2004520657.tif 000005
【図２Ａ】
2004520657.tif 000006
【図２Ｂ】
2004520657.tif 000007
【図３】
2004520657.tif 000008
【図４】
2004520657.tif 000009
【図５Ａ】
2004520657.tif 000010
【図５Ｂ】
2004520657.tif 000011
【図６Ａ】
2004520657.tif 000012
【図６Ｂ】
2004520657.tif 000013
【図７Ａ】
2004520657.tif 000014
【図７Ｂ】
2004520657.tif 000015
【図７Ｃ】
2004520657.tif 000016
【図８Ａ】
2004520657.tif 000017
【図８Ｂ】
2004520657.tif 000018
【図９Ａ】
2004520657.tif 000019
【図９Ｂ】
2004520657.tif 000020
【図９Ｃ】
2004520657.tif 000021
【図９Ｄ】
2004520657.tif 000022
【図９Ｅ】
2004520657.tif 000023
【図９Ｆ】
2004520657.tif 000024
【国際公開パンフレット】
2004520657.tif 000025
2004520657.tif 000026
2004520657.tif 000027
2004520657.tif 000028
2004520657.tif 000029
2004520657.tif 000030
2004520657.tif 000031
2004520657.tif 000032
2004520657.tif 000033
2004520657.tif 000034
2004520657.tif 000035
2004520657.tif 000036
2004520657.tif 000037
2004520657.tif 000038
2004520657.tif 000039
2004520657.tif 000040
2004520657.tif 000041
2004520657.tif 000042
2004520657.tif 000043
2004520657.tif 000044
2004520657.tif 000045
2004520657.tif 000046
2004520657.tif 000047
2004520657.tif 000048
2004520657.tif 000049
2004520657.tif 000050
2004520657.tif 000051
2004520657.tif 000052
2004520657.tif 000053
2004520657.tif 000054
2004520657.tif 000055
2004520657.tif 000056
2004520657.tif 000057
2004520657.tif 000058
2004520657.tif 000059
2004520657.tif 000060
2004520657.tif 000061
2004520657.tif 000062
2004520657.tif 000063
2004520657.tif 000064
2004520657.tif 000065
2004520657.tif 000066
2004520657.tif 000067
2004520657.tif 000068
2004520657.tif 000069
2004520657.tif 000070
2004520657.tif 000071
2004520657.tif 000072
【国際調査報告】
2004520657.tif 000073
2004520657.tif 000074