JP3793155B2 - データ処理装置におけるソースレジスタのロッキング - Google Patents
データ処理装置におけるソースレジスタのロッキング Download PDFInfo
- Publication number
- JP3793155B2 JP3793155B2 JP2002591974A JP2002591974A JP3793155B2 JP 3793155 B2 JP3793155 B2 JP 3793155B2 JP 2002591974 A JP2002591974 A JP 2002591974A JP 2002591974 A JP2002591974 A JP 2002591974A JP 3793155 B2 JP3793155 B2 JP 3793155B2
- Authority
- JP
- Japan
- Prior art keywords
- instruction
- mode
- pipeline
- register
- source
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Lifetime
Links
- 238000012545 processing Methods 0.000 title claims description 98
- 238000000034 method Methods 0.000 claims description 52
- 230000007246 mechanism Effects 0.000 claims description 34
- 230000008569 process Effects 0.000 claims description 33
- 230000008859 change Effects 0.000 claims description 6
- 230000001419 dependent effect Effects 0.000 claims description 3
- 230000006870 function Effects 0.000 description 26
- 238000010586 diagram Methods 0.000 description 9
- 238000001514 detection method Methods 0.000 description 8
- 238000013459 approach Methods 0.000 description 5
- 238000007781 pre-processing Methods 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 3
- 230000003993 interaction Effects 0.000 description 3
- 230000009471 action Effects 0.000 description 2
- 238000007792 addition Methods 0.000 description 2
- 239000013256 coordination polymer Substances 0.000 description 2
- 230000009849 deactivation Effects 0.000 description 2
- 238000007689 inspection Methods 0.000 description 2
- MJIHNNLFOKEZEW-UHFFFAOYSA-N lansoprazole Chemical compound CC1=C(OCC(F)(F)F)C=CN=C1CS(=O)C1=NC2=CC=CC=C2N1 MJIHNNLFOKEZEW-UHFFFAOYSA-N 0.000 description 2
- 230000003252 repetitive effect Effects 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 230000006399 behavior Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 230000002618 waking effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, look ahead
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3877—Concurrent instruction execution, e.g. pipeline, look ahead using a slave processor, e.g. coprocessor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3838—Dependency mechanisms, e.g. register scoreboarding
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3854—Instruction completion, e.g. retiring, committing or graduating
- G06F9/3858—Result writeback, i.e. updating the architectural state or memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3861—Recovery, e.g. branch miss-prediction, exception handling
Description
(発明の分野)
本発明は、データ処理装置におけるソースレジスタのロッキングに関する。
【0002】
(従来技術の説明)
命令を実行するための1つまたはそれ以上のパイプラインを組込んだプロセッサを備えることは公知である。そのようなプロセッサのパイプラインの性質により、どのような時点において実行されるプロセスにも複数の命令が存在することとなり、その結果、パイプラインプロセッサのために、適切なハザードおよびリソース検査機能を備えることが必要になった。従って、それぞれの命令は、一般にそれが実行パイプラインへ発せられる前に評価され、もしそれが、実行パイプラインへ発せられたならば、ハザード状態またはリソースコンフリクトを生じるかどうかが決定される。ハザード状態は、もしその命令が、(例えば、パイプラインにおいてすでに実行されつつある命令により)まだ計算されつつあるためにまだ利用できないデータアイテムを必要とするならば、または、もしその命令が、すでにパイプラインにある別の命令によりまだ必要とされているレジスタへのアクセスを必要とし、そのレジスタがすでにパイプラインにある別の命令により読取られるまで上書きされてはならないならば、検出される。リソースコンフリクトは、もし処理ユニットが必要とされ、それがすでに別の実行中の命令のために用いられつつあることにより利用しえなければ、検出される。
【0003】
ハザードまたはリソース検査を行わず、代わりに、ハザード状態およびリソースコンフリクトを回避するジョブを、コンパイラ/コードライタに残すことは可能である。しかし、これは、一般にコードをきわめて複雑にするので、そのようなハザードおよびリソースの検査プロシージャを実施するのが普通である。
【0004】
ハザードおよびリソースの検査機能は、関連プロセッサおよび全ての従属プロセッサの機能を停止させる能力を必要とする。例えば、ハザード状態を検出したコプロセッサは、そのハザード状態をメインプロセッサへ知らせなければならず、メインプロセッサは、多くの場合、コプロセッサとの命令フローの整合を維持するために機能を停止する。同様にして、ハザード状態またはリソースコンフリクトを検出したメインプロセッサは、それに応じて全てのコプロセッサに、それらのパイプラインの機能を停止するように勧告する必要がある。機能停止は、コードのセクションを実行する時刻の決定に、不確実性を導入することを認識すべきである。
【0005】
公知のプロセッサは、さまざまな複雑な方法を用いて、ハザード状態およびリソースコンフリクトを検出し、そのようなハザード状態およびリソースコンフリクトのパフォーマンスによるインパクトを軽減する。レジスタの名前の変更は、用いることができる1つのそのような技術であり、この技術は、すでに実行されつつある命令のためのソースレジスタとして含まれているレジスタの書込みに関係するハザード状態を除去するための、追加のレジスタの利用を含む。高性能プロセッサにおいては、命令は、ハザードまたはリソースコンフリクトのある命令よりも前に、ハザードまたはリソースコンフリクトのない命令を使用可能にする、プログラムの順序により発せられる。そのようなアプローチにおいて用いられる代表的な技術は、現在ある実行状態にある命令のテーブルを維持し、次に、特定の命令のために、命令を処理する機能ユニットの利用可能性、および命令が必要とするオペランドの利用可能性について決定を行う。これは、例えば、予約ステーションを用いる分散形の方法により、または、例えば、レコーダバッファ技術を用いる集中形の方法により、行われる。
上述の技術の双方は、本工業分野において公知である。当業者の認識するように、そのような技術のコストは、面積および電力の点から、また複雑性により、比較的に高価となる。
【0006】
上述の技術のコストおよび複雑性の多くを回避する別の公知の技術は、スコアボードを使用する。スコアボードは、ソースオペランドとしての、または記憶動作の宛先としてのレジスタの利用可能性を追跡する。スコアボードは、別個の部分に分離され、その1つがソースオペランド用、もう1つが宛先オペランド用とされるか、または、単一のスコアボードが、ソースオペランドおよび宛先オペランドの双方用として維持される。スコアボードにおけるエントリは、そのエントリに関連するレジスタが、次の命令による使用のために利用可能である時には、クリアされる。従って、スコアボードにロックされているように示されているレジスタを必要とする実行パイプラインへ出される命令は、そのレジスタが使用可能になるまで、強制的に待たされ、または機能停止される。スコアボードは、面積、電力、および開発コストに関し、前述の技術よりも一般に簡単かつ安価であるが、提供する性能は一般に低い。
【0007】
従って、データ処理装置のアプリケーション領域は、上述のアプローチのいずれを用いるかを指示する。デスクトップ計算、または科学またはビジネスの計算のような、高性能のアプリケーションにおいては、必要な性能を提供するために、もっと複雑な技術がしばしば必要となる。CDC6600(商標)、IBM360/91(商標)、および最近のIBM、インテル(Intel)(商標)x86およびSun SPARC(商標)プロセッサは、これらのもっと複雑な技術を用いる。しかし、組込み形アプリケーションにおいては、性能は一般に重要ではなく、代わりにプロセッサのチップ面積および消費電力の方がより重要であり、性能は、アプリケーションの目的を満たすのに十分でありさえすればよい。そのような場合には、プログラムの順序での命令発行および上述の技術の使用は、一般に1つか2つの制限された数のパイプラインを用いてリソース管理の複雑性を軽減しつつハザード状態を検査するのに、一般に最も適切な技術である。
【0008】
多くのアプリケーションにおいて、行われる演算は、オペランドおよび結果の範囲が既知であることを特徴とする。しかし、これが不可能である時には、演算は、矛盾のない合理的な仕方で、演算の結果が、サポートされるデータタイプの範囲の境界外となる状態、または、演算が結果の定義されないオペランドを含む(例えば、負の無限大に対する正の無限大の加算)状態、を処理できなくてはならない。
【0009】
浮動小数点演算の例を考えると、「2進浮動小数点演算のためのIEEE規格」、ANSI/IEEE Std754−1985、米国電気電子技術者協会(The Institute of Electrical and Electronic Engineers, Inc.)、ニューヨーク、10017(今後IEEE754規格と呼ぶ)は、結果がサポートされるデータタイプの範囲の境界外となる時、または、演算の結果が定義されない時の、命令の動態を指定している。IEEE754仕様を完全に実施するために、演算が必要とする全ての可能な場合を含めると、結果として、追加のハードウェア/面積および電力消費、および/またはクロック速度の低下を生じる。IEEE754仕様は、いくつかの例外を定めており、それらの例外は、もし演算が無限の正確さで行われたならば、または、もし結果が定義されなければ、結果が返されてくるものとならない場合である。IEEE754仕様には、例外の5つのタイプ、すなわち、無効、オーバフロー、アンダーフロー、ゼロによる除算、および不正確、が定められている。
【0010】
たいていの組込み形アプリケーションにおいては、演算は公知のような特徴をもち、IEEE754仕様の全ての機能は一般に必要とされない。例えば、サブノーマルサポート、およびNaN(非数)処理のためのサポートは、必要とされない。しかし、オーバフロー状態を処理する能力、および無限大を含む演算は、一般に利点となる。
【0011】
そのような例外が、パイプラインプロセッサ内における命令の実行中に検出された時は、それらの例外を処理するために、例外ハンドリング機構がしばしば呼出される。そのような例外ハンドリング機構は、呼出された時に、例外を処理するために、例外命令のためのソースオペランドへのアクセスを必要とする。従って、前述のスコアボード技術を用いる時に行われたように、ハザード状態を回避するためにレジスタをロックする時は、そのような場合、命令が、例外の検出されるであろう例外パイプライン内のポイントを通過し終わるまで、それらのレジスタをロックすることが必要である。
【0012】
GB−A−2,339,312に詳述されている、1つの従来技術のプロセッサにおいては、プロセッサは、ある例外的な場合を悲観的に検出し処理するように構成されており、それは、例外状態の存在の決定が、命令が完全に処理される前に得られる情報に基づくことを意味する。全ての可能な例外的場合を確実に処理するために、例外状態とならないかもしれないある場合は、演算が完全に処理されて最終決定が行われるまで、そのようなものとして扱われる。GB−A−2,339,312に説明されているプロセッサにおいては、検出は、プロセッサの現在の状態を保存するのに必要な情報の量を最小化するために、プロセッサパイプラインの最初の実行段において行われる。例外の検出は、命令が完了していないときに行われるので、ソースオペランドは、例外ハンドリング機構のために保存される必要があり、関連する命令が例外検出ポイント(ここでは、パイプラインの実行1の段)を通過するまでスコアボードにおいてアンロックされることはできない。そのとき、命令の正確な処置を決定し、IEEE754の例外の場合のための特殊な処理を含む正しい応答を発生し、プログラムに復帰するか、またはユーザ定義例外ハンドラを実行するために、ソフトウェアルーチンが用いられる。
【0013】
従って、要約すると、例外ハンドリングに用いられるソフトウェアルーチンは、命令のソースレジスタへのアクセスを必要とする。さらに、それは、例外命令の、あるサイクル数後まで実行されない。従って、例外命令のソースレジスタへのアクセスを必要とする命令は、その例外命令の実行と、識別された例外状態を処理するソフトウェアルーチンの実行と、の間で発せられる。
【0014】
このようにして、実行中の命令のソースレジスタをオペランドとして読取り、それらのオペランドをメモリに記憶し、またはそれらを新しい値と共にロードするために、実行中の命令のソースレジスタへのアクセスを必要とするどのような命令も、一般に、実行中の命令が例外決定ポイントを通過して、その後スコアボードにおいて、(例外が検出されなかったか、または関連のソフトウェアルーチンが必要な例外処理を行い終わったために)それらのソースレジスタがアンロックされるまで待たなくてはならない。
【0015】
従って、対応する命令における例外状態の存在について決定が行われている間レジスタをロックするこの要求は、後の命令を、もし該命令がそのようなロックされたレジスタへのアクセスを必要とするならば、機能停止させることにより、パイプライン処理回路の効率にかなりのインパクトを与えうる。
【0016】
(発明の要約)
第1の特徴から見ると、本発明が提供するデータ処理装置は、命令のシーケンスを実行するパイプラインを含む処理ユニットと、その処理ユニットが前記シーケンス内の命令を実行する時に必要とするソースデータを記憶するためのソースレジスタのセットと、構成可能な基準に依存してソースレジスタをロックするロッキング機構であって、パイプライン内の命令の実行を完了するためになお必要とされるソースレジスタが、次の命令による所定タイプのアクセスを防止するためにロックされ、前記次の命令が、該命令に関連するソースレジスタが前記命令の要求するようにアクセスできる場合に限りパイプラインに入れることを保証するように前記構成可能な基準は選択される、前記ロッキング機構と、を含み、前記処理ユニットは、第1の動作モードおよび第2の動作モードを有し、第1の動作モードにおいては、処理ユニットは、命令の実行中に1つまたはそれ以上の例外状態が決定された時に、前記パイプライン形実行ユニットの外部プロセスを呼出して、前記命令の実行を完了できるように構成され、第2の動作モードにおいては、処理ユニットは、たとえ前記1つまたはそれ以上の例外状態が決定されても、パイプライン内の命令の実行を完了するように構成され、前記ロッキング機構は、第2の動作モードにおいて、ロックされるソースレジスタの数の低減を行うことができるように、処理ユニットの動作モードに依存して前記構成可能基準を変更するよう構成される。
【0017】
本発明によれば、前記処理ユニットは、第1の動作モードおよび第2の動作モードを有し、第1の動作モードにおいては、1つまたはそれ以上の例外状態を決定した時に、前記パイプライン形実行ユニットの外部プロセスを呼出して、前記命令の実行を完了できるようにし、一方、第2の動作モードにおいては、処理ユニットは、たとえ前記1つまたはそれ以上の例外状態が存在しても、パイプライン内の前記命令の実行を完了するように構成されている。構成可能な基準に依存してソースレジスタをロックするためにロッキング機構が用いられ、そのロッキング機構は、第2の動作モードにおいて、ロックされるソースレジスタの数の低減を行うことができるように、処理ユニットの動作モードに依存して構成可能基準を変更するよう構成される。
【0018】
パイプライン形実行ユニットの外部プロセスは、例外状態が検出された命令のソースレジスタへのアクセスを必要としそうなので、第1の動作モードにおいては、それらのレジスタは、その命令のための例外状態が存在しないことが決定されるまで、または、それらの例外状態の1つの検出の後に、パイプライン形実行ユニットの外部プロセスによりそれらのソースレジスタが読取られるまで、ロッキング機構によりロックされなければならない。第2の動作モードにおいては、処理ユニットは、例外状態のいずれを処理するためにもパイプライン形実行ユニットの外部プロセスを呼出す必要がないように構成され、従って、これは、1つまたはそれ以上の例外状態の存在が検出されるまでソースレジスタをロックする必要をなくす。
【0019】
本発明の発明者は、ソースレジスタの値を上書きされないように保護するための2つの要件が存在することを理解した。第1に、これは、もしソースレジスタ内のデータが、まだレジスタを読取っていない命令により必要とされているならば、行われなければならない。第2に、これは、もしソースレジスタ内のデータが、まだ実行されていないルーチン、例えば、例外状態を処理するために用いられる外部プロセス、により必要とされているならば、行われなければならない。多くの場合に、第1の要件は、第2の要件よりもかなりわずらわしさが少ないことが観察された。検出された例外状態が後の命令を、ソースレジスタがまだ該レジスタを指定する命令により読取られていない限り、ソースレジスタを保護するのに必要であるよりも長く機能停止させた場合に、外部プロセッサにより用いるためにソースレジスタを保存する目的で、ソースレジスタはロックされる。
【0020】
本発明は、1つまたはそれ以上の例外状態を処理するためにパイプライン形実行ユニットの外部プロセスを呼出す必要をなくす第2の動作モードを提供することにより、また次に、単にソースレジスタがそのような外部プロセスにとって利用可能であるよう、ロッキング機構がもはやソースレジスタをロックしないように、該機構が構成可能な基準を変更するのを可能にすることにより、この問題をかなり軽減する。
【0021】
実施例においては、データ処理装置は、シーケンス内の命令の実行から生じる宛先データを記憶するための宛先レジスタのセットをさらに含み、ロッキング機構はさらに、所定の基準に依存して宛先レジスタをロックするように構成される。
【0022】
命令が宛先レジスタを指定した時に、その命令の実行により発生した結果が宛先レジスタにライトバック(write back)されるまで前記レジスタを確実にロックし、前記結果が宛先レジスタ内に記憶されるまで、宛先レジスタが読取り、または書込みを受けないことを保証することは明らかに重要である。そのような要件は、第1の動作モードおよび第2の動作モードの双方において明らかに必要であり、従って、実施例において、宛先レジスタのロッキングを決定するために用いられる所定の基準は、第1の動作モードおよび第2の動作モードの双方において同じである。
【0023】
実施例において、ロッキング機構は、ロックされたレジスタの記録と、ロックされたレジスタの記録に関連して、次の命令が前記パイプラインに入りうるかどうかを決定する検査ロジックと、次の命令のために、その命令のソースレジスタのいずれかが前記記録においてロックされるべきかどうかを決定する決定ロジックであって、該決定ロジックは構成可能な基準に応答する前記決定ロジックと、を含む。
【0024】
従って、検査ロジックは、次の命令により指定されたソースレジスタおよびオプションとしての宛先レジスタが、ロックされたレジスタの前記記録内にロックされているとしてすでに表示されているかどうかを決定し、一般に、次の命令は、もしそのソースレジスタおよび宛先レジスタのいずれかがすでにロックされているとして表示されていれば、パイプラインに入ることを許されない。前記決定ロジックは、次の命令により指定されたソースレジスタおよびオプションとしての宛先レジスタのいずれかが、前記記録においてロックされるべきかどうかを決定し、決定ロジックは、構成可能な基準に応答するので、処理回路が第2の動作モードで動作しつつある時には、それは一般に少ないソースレジスタのロッキングしか要求しない。
【0025】
前記構成可能な基準は、いくつかの方法で指定できることを認識すべきである。しかし、実施例において、構成可能な基準は、前記第1の動作モードにおいては、命令が前記パイプラインにより実行されるべき時に、前記ロッキング機構がその命令が必要とするソースレジスタを、それらのソースレジスタがパイプライン内のその命令により読取られる前の、それらのレジスタがまだ上書きされてもよい間、または、それらがパイプラインの外部プロセスによりなお必要とされる間、ロックするように構成され、一方、前記第2の動作モードにおいては、構成可能な基準は、前記ロッキング機構がその命令が必要とするソースレジスタを、それらのソースレジスタが前記パイプライン内のその命令により読取られる前の、それらのレジスタがまだ上書きされてもよい間のみロックするように構成される。
【0026】
従って、第2の動作モードにおいては、ソースレジスタは、読取り後書込み(write−after−read)ハザードの可能性を防止するようにロックされる。従って、所望される状況は、ソースレジスタへの書込みが、そのソースレジスタの読取りが行われた後にのみ行われる(「読取り後書込み」)状況であり、読取り後書込みハザードは、その状況が障害を起こした時に発生する。従って、第2の動作モードにおいては、ソースレジスタは、そのソースレジスタが、そのソースレジスタを指定した命令により読取られる前の、そのソースレジスタが上書きされることが可能である期間中ロックされる。第1の動作モードにおいては、ソースレジスタは、やはりそのような読取り後書込みハザードを防止するためにロックされるが、それらのソースレジスタは、パイプラインの外部プロセスによりなお必要とされる間さらにロックされる。
【0027】
上述の要件を考慮し、第2の動作モードにおいては、構成可能な基準は、本発明の実施例により、ロッキング機構が、スカラ命令のため、または所定値以下の反復数を有するベクトル命令のためのソースレジスタを、ロックしないように構成される。本発明の実施例による実施においては、スカラ命令、または比較的に短いベクトル命令(すなわち、所定値以下の反復数を有するベクトル命令)のソースレジスタに関し、読取り後書込みハザードの可能性はないことがわかった。
【0028】
実施例においては、前記所定値は、単精度ベクトル命令、または単サイクルスループットを有する倍精度ベクトル命令に対しては4であり、2サイクルスループットを有する倍精度ベクトル命令に対しては2である。
【0029】
簡単にするために、本発明の実施例においては、構成可能な基準は、第2の動作モードにおいて、ロッキング機構が倍精度ベクトル命令を、2サイクルスループットを有するとして処理するようなものとされる。
【0030】
第1の動作モードにおいて、1つまたはそれ以上の例外の検出時に呼出されるパイプラインの外部プロセスは、さまざまな形式をとることができる。しかし、好ましくは、パイプラインの外部プロセスは、サポートコードまたはユーザ使用可能化例外ハンドリングルーチンとする。
【0031】
サポートコードは、本発明の実施例において3つの基本機能を行う。第1に、サポートコードは、ハードウェアによりサポートされない命令およびデータのタイプを処理するために用いることができる。例えば、実施例においては、残余命令は、処理ユニットのアーキテクチャ仕様に具備されていないが、IEEE754規格はそれを必要とする。同様にして、10進データタイプも処理ユニットのためのアーキテクチャ仕様に含まれていないが、IEEE754規格はそれを必要とする。実施例においては、これら双方のために必要とされる処理が、処理ユニットにより実行されるアプリケーションにとって利用可能な、ライブラリ関数として存在する。
【0032】
実施例のサポートコードにより行われる第2の機能は、特定のデータにより命令を処理することであり、その特定のデータ、例えば、潜在的アンダーフロー状態またはデノーマル(denormal)オペランドを与えられても、ハードウェアはその命令を完全に処理することはできない。これらの場合のあるものは例外を生じるが、他のものは例外でない結果を生じる。もし命令が例外を生じれば、その命令のために、ユーザ使用可能化例外ハンドリングルーチンが使用可能化され、次にサポートコードが、サポートコードの第3の基本機能として、後述のある前処理を行う。もし命令が例外状態を発生しなければ、または、もし発生した例外状態の全てが対応する例外イネーブルビットセットを持たなければ、サポートコードは、計算結果を命令の宛先レジスタ内に書込み、次に処理ユニットにより実行されているアプリケーションコードへ復帰するように構成される。
【0033】
実施例のサポートコードの第3の基本機能は、例外イネーブルビットがセットされている例外を前処理するためのものである。このサポートコードは、バウンス(bounce)された命令のための第1のエントリポイントとなる。命令はバウンスされて、上述のサポートコードの第2の基本機能を使用可能にすることにより、その機能が行われるようにし、または、有効な例外が検出されたことにより、この例外のための例外イネーブルビットがセットされる。もしデータが、ユーザ使用可能化例外ハンドリングルーチンのための前処理を必要とするならば、サポートコードがこの前処理を行う。ユーザ使用可能化例外ハンドリングルーチンは、もしそれがアプリケーションコードへの復帰を選択すれば、サポートコードによりそれを行う。
【0034】
サポートコードの上述の3つの機能は、実施例の第1の動作モードに関連する。第2の動作モードにおいては、たとえ1つまたはそれ以上の例外状態の存在が決定されても、パイプライン内において完了されるべき命令の実行を可能にすることにより、サポートコードを用いる必要はなくされる。
【0035】
処理ユニットの第1および第2の動作モードが、実施に依存するさまざまな方法で構成されることは明らかである。しかし、実施例においては、第1の動作モードはIEEE754に従う動作モードであり、第2の動作モードは、前記1つまたはそれ以上の例外状態を処理するソフトウェアルーチンの必要のない、IEEE754に従わないモードである。実施例においては、処理ユニットの第1の動作モードは、サポートコードの具備によりIEEE754に従い、このサポートコードは、処理ユニットのハードウェアが、特定のオペランドを有する命令を処理できない時に呼出される。第2の動作モードにおいては、あるアプリケーションにおいて必要とされないIEEE754規格の機能のあるものは、IEEE754仕様により処理されず、代わりに、パイプライン形実行ユニットの外部プロセスの使用の必要をなくすためにノンコンプライアントな仕方で処理される。
【0036】
当業者は、ソースレジスタおよび宛先レジスタの双方の記録を保持する時に、さまざまな仕方でロッキング機構が構成されることを認識するであろう。実施例においては、簡単にするために、ロッキング機構は、ソースレジスタおよび宛先レジスタの双方のために単一の記録を保持し、従って、これら2つのタイプのレジスタを区別しない。しかし、別の実施例においては、前記ロッキング機構は、ロックされた宛先レジスタを記録する第1の記録と、ロックされたソースレジスタを記録する第2の記録と、を含む。
【0037】
この別のアプローチは複雑性をいくらか増大させるが、それは、レジスタが宛先レジスタであるかソースレジスタであるかに依存して、ロックされたそのレジスタに対し阻止されるアクセスの所定のタイプに、ある変化を与えることができる。詳述すると、この別の実施によれば、もし次の命令が、第1の記録内にロックされているとして表示されている宛先レジスタへ任意のタイプのアクセスを行う必要があれば、それは、第1の記録からそのロックがクリアされるまで、パイプラインに入らないように機能停止され、一方、もし次の命令が、第2の記録においてロックされている1つまたはそれ以上のソースレジスタの読取りアクセスを行う必要があるのみならば、それは、第2の記録から関連のロックがクリアされるのを待つ必要なしに、パイプラインに入ることを許される。もし特定のレジスタが宛先レジスタとして指定されていなければ、そのレジスタ内に記憶されているデータは、すでにパイプライン内にある命令のいずれによっても変化させられないことは明らかである。従って、次の命令にそのようなレジスタを読取らせても安全であり、レジスタを読取る作用はレジスタに記憶されている値を変化させないので、たとえソースレジスタがすでにパイプライン内にある命令によりロックされていても、そのソースレジスタを読取ることは容認できる。
【0038】
当業者は、たとえ1つまたはそれ以上の例外状態が存在していても、処理ユニットはさまざまな仕方で、パイプライン内の命令の実行を完了するために配置されることを認識するであろう。実施例においては、第2の動作モードにおいて、処理ユニットは、フラッシュトゥゼロ(flush−to−zero)モードを用いるように構成され、デノーマル範囲内のソースデータまたは結果データを、正のゼロにより置換する。この動作モードは、複雑さと、別の場合にはデノーマルデータ値を処理するのに必要とされるハードウェアと、を取り除き、公知のアルゴリズムに対し演算上のインパクトを与えないか、または極めて小さいインパクトしか与えないことがわかっている。
【0039】
さらに、実施例の第2の動作モードにおいて、処理ユニットは、デフォルトNaN(非数)モードを用い、もしソースデータのいずれかがNaNであれば、結果データとしてデフォルトNaNを生じるように構成される。このアプローチは、IEEE754仕様に従ってNaNを処理するが、これは一般のやり方とは異なる。それにもかかわらず、それはなお、定義されていない演算操作を示すものとして、NaNのためのハンドリングを提供する。
【0040】
さらに、実施例の第2の動作モードにおいて、処理ユニットは、処理ユニットのハードウェア内において、オーバフロー、不正確、ゼロによる除算または無効な例外状態、を処理するように構成される。詳述すると、実施例においては、オーバフロー、不正確およびゼロによる除算の例外のための完全なデフォルト処理はハードウェアにおいて行われ、また、無効の例外のための完全に近いデフォルト処理もハードウェアにおいて行われる。このアプローチは、IEEE754に近いコンプライアンスを提供し、飽和に対してはオーバフローを、また特殊な処理状況に対しては無限大を用いる、たいていの組込み形アプリケーションに適することがわかっている。
【0041】
第2の特徴から見ると、本発明は、データ処理装置の動作方法を提供し、前記データ処理装置は、命令のシーケンスを実行するパイプラインを含む処理ユニットと、その処理ユニットが前記シーケンス内の命令を実行する時に必要とするソースデータを記憶するソースレジスタのセットと、を有し、前記方法は、(i)構成可能な基準に依存してソースレジスタをロックするロッキング機構を用いるステップであって、前記パイプライン内の命令の実行を完了するためになお必要とされるソースレジスタが、次の命令による所定のタイプのアクセスを防止するためにロックされ、前記次の命令が、該命令に関連する前記ソースレジスタが前記命令の要求するようにアクセスできる場合に限りパイプラインに入れることを保証するように前記構成可能な基準は選択される、前記ロッキング機構を用いるステップと、(ii)前記処理ユニットにおける第1の動作モードまたは第2の動作モードを選択するステップであって、第1の動作モードにおいては、前記パイプライン形処理ユニットは、命令の実行中に1つまたはそれ以上の例外状態が決定された時に、前記パイプライン形実行ユニットの外部プロセスを呼出して、命令の実行を完了できるように構成され、第2の動作モードにおいては、パイプライン形処理ユニットは、たとえ1つまたはそれ以上の例外状態が決定されても、前記パイプライン内の命令の実行を完了するように構成される、前記選択するステップと、(iii)前記ロッキング機構により、前記第2の動作モードにおいて、ロックされるソースレジスタの数の低減を行うことができるように、前記処理ユニットの動作モードに依存して前記構成可能基準を変更するステップと、を含む。
本発明をさらに、添付図面に示されている実施例を参照しつつ、例によってのみ説明する。
【0042】
(実施例の説明)
図1に示されているデータ処理システム22は、メインプロセッサ24と、浮動小数点ユニット(FPU)コプロセッサ26と、キャッシュメモリ28と、メインメモリ30と、入出力システム32と、を含む。メインプロセッサ24と、キャッシュメモリ28と、メインメモリ30と、入出力システム32とは、メインバス34によりリンクされている。コプロセッサバス36は、メインプロセッサ24を浮動小数点ユニットコプロセッサ26にリンクする。
【0043】
動作においては、メインプロセッサ24(ARM(商標)コアとも呼ばれる)は、キャッシュメモリ28、メインメモリ30、および入出力システム32との対話を含む一般的なタイプのデータ処理動作を制御する、データ処理命令のストリームを実行する。このデータ処理命令のストリーム内には、コプロセッサ命令が組込まれている。メインプロセッサ24は、これらのコプロセッサ命令を、接続されたコプロセッサにより実行されるべきタイプのものであるとして認識する。従って、メインプロセッサ24は、これらのコプロセッサ命令をコプロセッサバス36上に出し、それらの命令はそのバスから、接続されているコプロセッサにより受取られる。この場合、FPUコプロセッサ26は、それが検出した、それへ向けられたものである受信コプロセッサ命令を、受入れて実行する。この検出は、コプロセッサ命令内のコプロセッサ番号フィールドにより行われる。
【0044】
図2Aは、本発明の実施例によるコプロセッサ26内に備えられている素子を詳細に示すブロック図である。コプロセッサ26は、算術演算を行う演算パイプラインユニット230を含む。レジスタファイル220が備えられており、これは、演算パイプラインユニット230により実行される命令のための、ソースレジスタまたは宛先レジスタとして指定されうる多くのレジスタから成る。ロード/記憶パイプラインユニット210も備えられ、これは、ロード命令および/または記憶命令を実行して、ロードデータバス212を経て受取ったロードデータ値をレジスタファイル220内へロードするか、またはレジスタファイル220から記憶データバス214上へデータ値を出力し、データ処理システム内のどこか他の場所、例えば、キャッシュ28またはメモリ30内に記憶させる。実施例においては、転送経路216も備えられ、これは、データ値が、ロード/記憶パイプラインユニット210から直接演算パイプラインユニット230へ、レジスタファイル220をバイパスして送られうるようにする。
【0045】
実施例においては、ロード/記憶パイプラインユニット210、レジスタファイル220および演算パイプラインユニット230は、全て制御ロジック200により制御され、制御ロジック200は、コア24から命令バス218を経て命令を受取り、それらの命令を適切にロード/記憶パイプラインユニット210または演算パイプラインユニット230へ出すように構成されている。制御ロジック200はまた、レジスタファイル220に、ロード命令の実行中にロード/記憶パイプラインユニット210から受取ったデータ値を、いずれのレジスタ内に配置すべきかを指示し、また、記憶命令が実行されつつある時は、ロード/記憶パイプラインユニット210へ出力されるべき内容を有するレジスタを識別する。後に詳述されるように、制御ロジック200はまた、要求されたように且つ要求された時に、バウンス信号および機能停止信号をコア24へ出すように、またさらに、コア24から受取ったコア機能停止信号に応答してコプロセッサ26の実行を停止させるように、構成されている。
【0046】
実施例の制御ロジック200のさらなる詳細は、図2Bに示されている。制御ロジック200は、コア24から信号を受取り、またコア24へ信号を発する、コプロセッサインタフェース275を含む。コプロセッサインタフェース275が新しい命令を受取った時、それは命令レジスタ250へ送られる。その命令は、そこから命令デコーダユニット260へ、またスコアボードロジック255へ供給される。命令デコーダ260は、その命令をデコードし、次にそれをパイプライン制御ユニット265へ送り、このユニットはパイプライン210、230とのインタフェースをなして、それらのパイプラインの実行を制御する。
【0047】
実施例のスコアボードロジック255を、図3を参照しつつ詳述するが、それは、基本的には受取った命令に基づいて、その命令により指定されたレジスタがすでにスコアボード内にロックされているかどうか、また、その命令がパイプラインへ出された時に、いずれのレジスタを、それらのレジスタがもしあるならば、次の命令により用いられないよう保証するために、スコアボード内にロックすべきであるか、を決定するように構成されている。もしその命令により指定されたレジスタが、すでにスコアボード内にロックされていることが決定されれば、スコアボードロジック255は、機能停止信号を機能停止ロジック270へ出すように構成されている。機能停止ロジック270は、その機能停止信号を、例えばリソースが機能停止しているとの、他の機能停止状態信号と共に受取り、もしそのような機能停止信号をその入力に受ければ、最終機能停止信号を発生する。実施例においては、最終機能停止信号は、コプロセッサインタフェース275を経てプロセッサコアへ出力され、プロセッサコアに、コプロセッサがその命令の実行を停止しなければならないことを知らせる。その命令が最後に実行パイプラインに入った時(すなわち、その命令を機能停止させていたロックされたレジスタのクリアの後)、スコアボードはスコアボードロジック255内において更新され、その命令が用いるためにロックする必要があるレジスタをロックする。
【0048】
図3は、本発明の実施例のスコアボードロジック255を詳細に示すブロック図である。実施例においては、スコアボードロジックはコプロセッサパイプラインの発行段において用いられ、コプロセッサパイプラインのさまざまな段は、図4を参照しつつ詳細に後述される。命令がコアからコプロセッサへ送られる時、それは、コプロセッサ命令バス218を経て、コプロセッサのフェッチ段に受取られ、レジスタ300内に配置される。コプロセッサは、発行段において命令を評価するように構成され、このプロセスは、命令の後の処理と共に、図4を参照しつつ詳細に後述される。しかし、特にスコアボード処理の発行を処理するとき、レジスタ300内に記憶されている命令は、経路305を経てロジック素子320および330へ送られる。ロジック330は、命令を実行のためにパイプライン内へ出せるかどうかを決定するために、スコアボード310内のロックされたレジスタに対し、検査を必要とするレジスタを決定する。例としては、S1およびS2をソースレジスタ、S0を宛先レジスタとして、もし命令がFADDS S0,S1,S2であれば、ロジック330は、レジスタ0、1および2が検査されるべきであると決定する。
【0049】
実施例においては、図2Aに示されているレジスタファイル220は32個のレジスタを含み、ロジック330は、今後「検査値」または略してCVと呼ぶ32ビット値を出力するように構成され、それぞれのビットは、対応するレジスタを、そのレジスタがスコアボード内にロックされているかどうかを決定するために、検査すべきかどうか識別するのに用いられる。レジスタS0、S1およびS2が指定されている前の例が与えられたものとすると、CVの最下位の3ビットがセットされ、残りのビットはセットされないままとなり、レジスタ0、1および2のみが検査を必要とすることを示す。
【0050】
ロジック330が発生するこの32ビットのCVは、経路335を経て出力され、ロジック340を機能対応停止させるが、このロジックもまた、スコアボード310から経路315を経て、スコアボード310内にロックされているレジスタを識別する同様の32ビット値を受取るように構成されている。もしロジック340による、これら2つの値の比較が、検査されたいずれかのレジスタがスコアボード内にロックされていることを示せば、ロジック340は、経路345を経て機能停止信号を発生し、この信号は前述のように機能停止ロジック270へ出力されて、コプロセッサインタフェース275に対する最終機能停止を発生するために用いられる。もしその機能停止信号がアサートされれば、現在の命令はパイプラインのデコード段へ進むことができず、その機能停止信号がデアサートされた時にのみデコード段へ進む。
【0051】
ロジック320は、レジスタ300内に記憶されている命令から、その命令がパイプラインのデコード段へ進んだ時に、スコアボード310内にロックされるべきレジスタを、もしあれば、決定するように構成されている。このロジック320は、構成可能な基準を用いて、いずれのレジスタがロックされるべきかを、もしあれば、決定するように構成され、この構成可能な基準は、処理ユニットの動作モードに依存して変えられる。実施例においては、処理ユニットは2つの動作モードを有し、第1の動作モードにおいては、処理ユニットは、1つまたはそれ以上の例外状態が決定された時に、パイプライン形実行ユニットの外部プロセスを呼出して、命令の実行を完了できるように構成され、一方、第2の動作モードにおいては、処理ユニットは、たとえ前記1つまたはそれ以上の例外状態が決定されても、パイプライン内のそのような命令の実行を完了するように構成される。
【0052】
2つの動作モードにおいて適用される基準は、詳細に後述される。しかし、さしあたって、第1の動作モードにおいては、ソースレジスタおよび宛先レジスタの全てがスコアボード内にロックされるべきであり、一方、第2の動作モードにおいては、ソースレジスタは、スカラ命令のため、または、ソースレジスタが命令により読取られる前に該ソースレジスタが上書きされる可能性がないことを保証するように十分に短いベクトル命令のためには、ロックされないことに注意すべきである。実施例においては、これは、4回以下の反復の単精度ベクトル命令のため、または2回以下の反復を有する倍精度ベクトル命令のために、ソースレジスタはロックされないことと同等である(実施例においては、全ての倍精度ベクトル命令は、2サイクルスループットを有すると考えられる)。
【0053】
従って、S0を宛先レジスタとして、S1およびS2をソースレジスタとして指定する追加命令の前例の場合は、第1の動作モードにおいては、レジスタ0、1および2は、全てロジック320により識別されて、スコアボード310内にロックされる。この第1の動作モードは、ここでは、非ランファスト(non−RunFast)動作モードとも呼ぶことにする。しかし、(ここでは、ランファスト動作モードとも呼ばれる)第2の動作モードにおいては、宛先レジスタS0のみがロジック320により識別されて、スコアボード310内にロックされる。ロジック330におけると同様に、ロジック320は、実施例においては、命令がデコード段へ進んだ時に、スコアボード310に追加されるべきレジスタを識別する、今後スコアボード値、または略してSVと呼ぶ32ビット値を出力するように構成され、この32ビットのSVは、経路325を経てレジスタ350へ出力される。命令がデコード段に入った時は、レジスタ350の内容が経路355を経て出力され、スコアボード310に追加される。
【0054】
もし前述のFADDS命令に、命令FADDS S5,S1,S6が続けば、処理ユニットが非ランファストモードで動作しているか、ランファストモードで動作しているかにより、動作に以下の差が生じる。非ランファストモードにおいては、ロジック320が出力するSV信号は、ビット1、5および6をセットされるが、一方、もしデータ処理ユニットがランファストモードで動作していれば、ビット5のみをセットされ、宛先レジスタS5を指定する。いずれの動作モードが用いられているかにかかわらず、ロジック330が経路335を経て出力するCV信号は、ビット1、5および6をセットされる。しかし、FADDS S0,S1,S2命令の動作の結果としてスコアボード310内にロックされるレジスタは、動作モードが非ランファストモードであるか、ランファストモードであるかによって異なり、従って、機能停止ロジック340が経路315を経て受取るスコアボード信号は、動作モードにより異なる。詳述すると、非ランファストモードレジスタS1は、スコアボード310内にロックされるので、ロジック340は、命令FADDS S5,S1,S6の発行段中において機能停止を発生する。しかし、もしデータ処理ユニットがランファストモードで動作していれば、宛先レジスタS0のみが、命令FADDS S0,S1,S2の実行の結果としてスコアボード310に追加されるので、他の命令の実行によりレジスタS5、S1またはS6のいずれもスコアボード310内にロックされていないと仮定すると、機能停止ロジック340により機能停止は発生されず、代わりに命令FADDS S5,S1,S6は直接デコード段内へ進むことができ、それにより命令を処理するのに要する時間は短縮される。
【0055】
図4は、本発明の実施例における、プロセスコアパイプライン、およびコプロセッサの2つのパイプラインの間の対話を示す。2つのみのコプロセッサパイプラインが要求されているわけではなく、別の実施例においては、異なる命令のセットを処理するため、または命令のセットの間に重なりを与えるために、もっと多くのパイプラインを追加することもできることに注意すべきである。
【0056】
コプロセッサ26は、コアパイプラインの後の1つの段を動作させる7段のパイプラインを有する。命令は、コアフェッチ段400から、コプロセッサ命令バス402を経てコプロセッサフェッチ段405へ送られる。コプロセッサは、発行段415における命令を評価する。もしコプロセッサ26が、非ランファスト動作モードにおいて例外命令を処理し終わったが、まだその事実をコア24に知らせていなければ、バウンス信号が、発行段415において経路419を経てコアに対しアサートされる。すると、コアは例外命令の例外処理を開始し、また例外処理からのリターン時にバウンスを生じた命令の再試行を行う。
【0057】
コアフェッチ段400においては、命令バッファから命令が読取られ、もしそれがコプロセッサ命令であるならば、それは、コプロセッサフェッチサイクル405へのコプロセッサ命令バス402上へ駆動される。
コア発行段410においては、コアはコプロセッサ命令に対しほとんどなにもしない。コアデコード段420においては、コアは、コア関連の機能停止状態のために、コプロセッサに対する機能停止を処理する。例えば、もしコアが前のコア命令による機能停止状態を検出したならば、コアは、それに応じてコプロセッサを機能停止させるよう命令する必要がある。コアデコードサイクル420からコアが出したそのような信号は、関連するコプロセッサパイプラインの、デコード段、発行段およびフェッチ段へ送られる。わかりやすくするために、この信号は図4には示されていない。
【0058】
コア実行段430においては、コアは、コプロセッサから経路419、417を経て、バウンス信号および機能停止信号をそれぞれ受取り、もしそのバウンス信号が有効なコプロセッサ命令のためにアサートされたものであるならば、例外処理を開始する。
【0059】
コアメモリサイクル440においては、コアは、コプロセッサ記憶データのロード/記憶パイプライン490のデコード段425から、コプロセッサ記憶データバス427を経てコプロセッサ記憶データを受取る。コアライトバック段450においては、コアは、ロードデータを、コプロセッサロードデータバス452を経て、コプロセッサのロード/記憶パイプライン490のコアライトバック段455へ駆動する。
【0060】
コプロセッサフェッチ段405においては、コプロセッサは、コプロセッサ命令バス402を経て命令を受取り、その命令のデコーディングを開始する。
コプロセッサ発行段415においては、コプロセッサは、その命令およびスコアボードの現在の状態を評価し、その命令を出すことができるかどうかを決定する。もしスコアボードが、レジスタを利用できないことを示せば、または、もしパイプラインが使用中で現在の命令がデコード段へ進めなければ、CP機能停止信号が経路417を経てアサートされ、その命令が進んでもよくなるまで、またはコアによりキャンセルされるまで、その信号は保持される。
【0061】
非ランファスト動作モードにおいては、もし前の命令が、演算パイプライン495のコプロセッサ実行1段465を完了し、かつ例外であることが決定されたとすれば、コプロセッサは「例外状態」にあると言われる。その決定が行われた時に機能停止された制御レジスタにアクセスしない、または、その決定が行われた後にコプロセッサへ出される、コプロセッサ命令は、「トリガ」命令となり、発行段415から経路419を経てCPバウンス信号をアサートさせる。このバウンス信号がアサートされた時には、コアは、例外処理を開始し、また例外処理後に処理が再開された時にはトリガ命令を再試行する。
【0062】
もし機能停止が存在せず、かつコプロセッサが例外状態になければ、スコアボードは、ロッキングを必要とする宛先レジスタおよびソースレジスタにより更新され、命令は、コプロセッサの関連するパイプライン490、495のコプロセッサデコード段へ進む。
【0063】
コプロセッサデコード段においては、コプロセッサは、演算命令をそのオペランドと共に、その命令を処理するパイプラインまたは機能ユニットへ送る。もしその命令がロード命令または記憶命令であれば、それはロード/記憶パイプライン490へ送られる。もし動作が、コプロセッサからコアへのデータの記憶であれば、コプロセッサは、デコード段425において、レジスタファイルから記憶データを読取り、cpデータバス427をそのデータにより駆動し、そのデータは次にコアのメモリ段440により受取られる。もしその命令がロード動作であれば、コプロセッサのデコード段425は、その命令をロード/記憶パイプライン490の実行段435およびメモリ段445を経て送る。
【0064】
コプロセッサメモリ段445においては、コプロセッサはロード動作をライトバック段455へ送る。コプロセッサライトバック段455においては、コアのライトバック段450から経路452を経て受取ったロードデータが、コプロセッサレジスタファイルに書込まれる。
【0065】
ここで、コプロセッサの演算パイプライン495を見ると、コプロセッサ実行1段465においては、演算命令が、該命令が潜在的な例外を有しているかどうかを決定するために、正負符号、指数、および小数部がゼロであるかどうか、の評価から処理を開始する。もし前記命令が潜在的な例外を有しており、かつコプロセッサがランファストモードになければ、例外検出信号が、経路467を経てコプロセッサ発行段415へ駆動される。もし例外が検出されなければ、命令は実行2段へ送られる。コプロセッサの実行1段および実行2段は、さらにその命令を処理する。コプロセッサ実行4段はその命令を完了し、状態コードまたは例外状態ビットをセットし、結果をレジスタファイルに書込み、または結果を別の機能ユニットへ送る。
【0066】
例外が決定されなかった時に、スコアボードから、非ランファストモードにおいてロックされたレジスタをクリアできるようにするために、ソースレジスタクリアバス469が備えられ、もはやロックされる必要のないレジスタについての情報が、E1段465から発行段415へ後送されうるようにする。
【0067】
本発明の実施例のさまざまなパイプラインの間の対話を説明してきたが、ここで、図5Aから図8Bまでを参照しつつ、非ランファスト動作モードおよびランファスト動作モードを比較する実行フローの例を説明する。
【0068】
図5Aおよび図5Bは、バックトゥバック(back−to−back)算術演算の実行を示し、そこでは、第2の命令は、第1の命令のソースレジスタを宛先として有し、図5Aは、非ランファストモードにおけるハザードの場合を示す。
【0069】
図5Aにおいては、浮動小数点コプロセッサデータ処理(FCDP)命令FCDP1が、サイクル1においてコプロセッサへ出され、S1およびS2をソースレジスタとして、またS0を宛先レジスタとして要求する。サイクル2において、コプロセッサはS0、S1、およびS2をロックし、コアはFCDP2をコプロセッサへ出す。FCDP2は、S3およびS4をソースレジスタとして、またS1を宛先レジスタとして要求する。サイクル3においては、発行段においてFCDP2のためにスコアボードが検査され、S1に対するロックが発見される。従って、FCDP2は、S1に対するロックが除去されるまで、発行段において機能停止する。
【0070】
このロックはS1上に残って、例外性のものであり且つその例外を処理するためにソフトウェアルーチンを必要とするFCDP1の場合に、内容が上書きされないように保護しなければならない。例外検査は、FCDP1のためにサイクル4(すなわち実行1段)において行われる。この例においては、FCDP1は例外性のものではなく、ロックは、サイクル4の終わりに、スコアボードにおいてS1およびS2に対し除去され、例外検出信号はアサートされない。従って、次のサイクル、すなわちサイクル5において、FCDP2はデコード段へ入ることを許され、一方、コプロセッサは、S1、S3およびS4をロックして、それらをFCDP2による使用のために保護する。S1が上書きから保護されることを保証するためには、1サイクルの機能停止が必要であることがわかる。
【0071】
FCDP1が例外性のものでない場合には、FCDP2は直ちにデコード段内へ進むことができる。FCDP2がレジスタにFCDP2の結果を上書きできる前に、FCDP1はS1を読取るので、ハザード状態は存在しない。従って、例外決定が行われるまでソースレジスタをロックする必要は、実際に例外が存在しない場合には、処理速度に悪影響を及ぼす。
【0072】
図5Bは、ソースレジスタの再使用のためのランファストモードにおけるハザードの場合を示す。図5Bおいては、図5Aの状況が繰返されているが、それはランファストモードにおいて繰返されている。もはやソースレジスタは、上書きされないようにソフトウェアによる使用のために保護される必要はなく、S1およびS2はFCDP1の発行段においてロックされない。FCDP2の発行段においてレジスタハザードが検出されなければ、FCDP2は機能停止せず、FCDP2を処理する時間から1サイクルの機能停止が除去される。
【0073】
図6Aおよび図6Bは、ロードが、第1の命令の1つまたはそれ以上のソースレジスタへの書込みであるロード命令が後続する、演算命令の実行を示し、図6Aは、前のソースレジスタのロードのための非ランファストモードにおけるハザードの場合を示す。
【0074】
図6Aにおいて、FCDP命令に続くロードは、新しいデータをS1内に書込む。S1内の現在のデータは、もしFCDP命令が例外性のものであれば、FCDP命令による、またソフトウェアルーチンによる使用のために保護されなければならない。そのFCDP命令は、サイクル2中にFCDP発行段において、S0、S1、およびS2に対しスコアボードロックをセットする。ロード命令は、FCDP命令の実行1サイクルの後にロックがクリアされるまで、1サイクルの間機能停止する。次にロード命令は、サイクル8におけるライトバック段の始めに、新しいデータをS1内に書込む。
【0075】
図6Bは、前のソースレジスタのロードのためのランファストモードにおけるハザードの場合を示す。図6Bにおいては、ソースレジスタはFCDP命令のためにロックされておらず、ロード命令はサイクル3中に発行段において機能停止せず、サイクル4においてデコード段へ進む。データは、サイクル7においてロード命令によりS1内へ書込まれ、4サイクル後にそれはデコード段においてFCDP命令により読取られる。
【0076】
図7Aから図7Cまでは、ロード命令が後続する、4の長さを有する単精度ベクトル命令の実行のフローを示す。図7Aにおいて、そのベクトル命令には、非ランファストモードにおけるソースレジスタロードが続く。
【0077】
図7Aにおいて、命令FCDPは、4回の反復を有するベクトル動作である。4回の反復は、直列に毎サイクル1つ発せられる、
FCDP S8,S16,S24
FCDP S9,S17,S25
FCDP S10,S18,S26
FCDP S11,S19,S27
である。
【0078】
FLDMS命令(単精度を表す最後のSと複合したロード)は、単サイクル中に64ビットバスを経てS24およびS25に、また次のサイクル中にS26およびS27にロードする。非ランファストモードにおいて実行されるFCDP命令は、サイクル2中に発行段内の以下のレジスタをロックする。
S8−S11
S16−S19
S24−S27
【0079】
FCDP命令は、サイクル4(第1の反復のための実行1段)においてS16およびS24のためにスコアボードをクリアし、サイクル5(第2の反復のための実行1段)においてS17およびS25のためにスコアボードをクリアし、サイクル6(第3の反復のための実行1段)においてS18およびS26のためにスコアボードをクリアし、またサイクル7(最後の反復のための実行1段)においてS19およびS27のためにスコアボードをクリアする。FLDMS命令は、スコアボードにおいてS24−S27がクリアされるまで機能停止し、それはサイクル7において行われ、全部で4つの機能停止サイクルを与える。
【0080】
図7Bは、全てのレジスタの同じソースレジスタロードが後続する、同じベクトル命令を示しているが、こんどはランファストモードにおけるものである。図7Bにおいては、FCDP命令のための発行段において、宛先レジスタのみがロックされる(S8−S11)。従って、FLDMS命令は機能停止することなく進むことを許され、サイクル7において第1の2つのレジスタ(S24およびS25)に、またサイクル8において第2の2つのレジスタ(S26およびS27)にロードする。FCDP命令は、デコード段においてサイクル3中にS24を、サイクル4中にS25を、サイクル5中にS26を、またサイクル6中にS27を読取る。従って、FLDMS命令が機能停止されなかったという事実にもかかわらずハザードは発生しない。
【0081】
図7Cは、ランファストモードにおける、最後のレジスタのソースレジスタロードが後続する、同じベクトル命令を示す。従って、図7Cにおいては、ロード命令は、最後のレジスタS27の単一値ロードにより置き換えられる。新しいロードデータの書込みはサイクル7において行われ、それは、(S27を読取る)反復4のためのデコードサイクルよりも1サイクル遅れており、従ってやはり、たとえFLDS命令が機能停止されなくてもハザードは発生しない。
【0082】
図8Aおよび図8Bは、たとえランファスト動作モードを用いている時でも、単精度(SP)命令および倍精度(DP)命令のためにソースレジスタのロッキングを必要とする状態を示している。
【0083】
ランファストモードにおいてソースレジスタをロックすることが必要な2つの場合は、以下の場合である。
・ 4回の反復よりも大きい長さの単精度ベクトル命令(または単サイクルスループットを有する倍精度ベクトル命令)、および、
・ 命令が2回の反復よりも大きい長さのものである時の、逓倍を含む(すなわち2サイクルスループットを有する)倍精度ベクトル命令。
【0084】
実施例においては、逓倍を含まない(すなわち単サイクルスループットを有する)倍精度ベクトル命令をロックする必要はない。そのわけは、実施例においては、そのようなベクトル命令は、とにかく4回の反復の最大長しか持てないからである。しかし、1つの実施例においては、全ての倍精度ベクトル命令は2サイクルスループットを有するとして処理され、従って、ソースレジスタは、2回の反復よりも大きい長さの倍精度ベクトル命令が観測された時にはロックされる。これは、処理を簡単化するために行われる。
【0085】
図8Aは、ロード命令が後続する、長さ7の単精度ベクトル命令を示す。このベクトル命令は、やはり直列に、以下の動作を行う。
反復 動作
1 FCDP S8,S16,S24
2 FCDP S9,S17,S25
3 FCDP S10,S18,S26
4 FCDP S11,S19,S27
5 FCDP S12,S20,S28
6 FCDP S13,S21,S29
7 FCDP S14,S22,S30
【0086】
図8Aにおいて、長さ7の単精度ベクトル命令は、第7の反復のためのソースオペランドレジスタとして、S30を要求する。S30に対するロックがクリアされるまで、S30の次のロードは機能停止することを要求される。ランファストモードにおいては、ロックは、単精度動作のための第4の反復の後、および倍精度動作のための第2の反復の後の、反復において用いられるソースレジスタのために、セットされる(実施例においては、全ての倍精度動作は、それらが逓倍を含むかどうかにかかわらず、2サイクルスループットを有するとして処理される)。
【0087】
図8Aは、単精度ベクトル命令を示し、そのような場合には、ロックは、現在の反復よりも大きい番号4を有する反復のための、実行1サイクルにおいてクリアされる。これは、以下のテーブルにより示されている(そこでは、「0」はロックがクリアされていることを示し、「1」はロックがセットされていることを示す)。
【0088】
【表1】
【0089】
このテーブルに示されているように、第5、第6、および第7の反復が要求するソースレジスタのみがロックされる。これにより、サイクル2においては、ロックは、レジスタS20、S21、S22、S28、S29、およびS30に対しセットされる。S20およびS28に対するロックはサイクル4(ソース反復1における実行1段)においてクリアされ、S21およびS29に対するロックはサイクル5(反復2における実行1段)においてクリアされ、またS22およびS30に対するロックはサイクル6(反復3における実行1段)においてクリアされる。従って、FLDS命令は、スコアボードがサイクル6においてS30のためにクリアされるまで、3サイクルの間機能停止される。次にそのFLDS命令は、サイクル7においてデコード段へ進むことを許され、サイクル10においてレジスタファイルに書込む。サイクル9においては、FCDP命令の第7の反復がS30を読取り、第7の反復のためにソースデータの破損は回避される。
【0090】
図8Bは、逓倍を含み、3回の反復を有する倍精度ベクトル命令を示す。
このベクトル命令は、以下の動作をやはり直列に行う。
反復 動作
1 FCDP D4,D8,D12
2 FCDP D5,D9,D13
3 FCDP D6,D10,D14
【0091】
図8Bにおいて、倍精度ベクトルは逓倍を含み、2サイクル毎に1つの動作のスループットを有する。従って、実行1段は、完了するのに2サイクルを要する。以下のテーブルは、ソースレジスタのロッキングを示す。
【0092】
【表2】
【0093】
このテーブルに示されているように、第3の反復において要求されるソースレジスタのみがロックされる。従って、ロックは、サイクル2においてD10およびD14に対してセットされ、サイクル4においてクリアされる(逓倍を含む動作に対する倍精度ロックは、実行1段において、現在の反復よりも大きい番号2を有する反復のためにクリアされる)。FLDD命令(ここで最後のDは倍精度を表す)は、サイクル5においてデコード段へ進み、またサイクル8においてD14に書込むことを許される。倍精度動作は、第2のデコード段においてソースデータを読取り、従ってサイクル7においてD14が読取られ、それにより第3の反復のためにソースデータの破損は回避される。
【0094】
非ランファストモードまたはランファストモードにおいて、どのようにレジスタがロックされ、またクリアされるかを例により説明したが、ここで、特定の動作モードにおいてロックされ、またクリアされるレジスタの細部を示す、図9Aから図9Fまでを参照する。
【0095】
図9Aは、非ランファスト動作モードにおける、単精度ソースレジスタのロッキングおよびクリアリングを示す。実施例においては、単精度ベクトル命令のための最大反復数は8であり、非ランファストモードにおいては、すべての反復におけるソースレジスタは、パイプラインの発行段においてロックされる。これは、図9Aの左側に文字「X」を用いて示されている。従って、図9Aの頂部に沿った行は、反復回数により、その反復に含まれるソースレジスタを識別する。例えば、もし反復数が5であれば、反復1から反復5までに関連するレジスタがロックされ、反復5として識別される行、および反復1から反復5までとして識別される図9Aの左側にある列内にある「X」により表される。
【0096】
図7Aから図7Cまでに関して前述したように、特定の反復のためのソースレジスタは、パイプラインの実行1段においてクリアされる。従って、第1の反復のためのソースレジスタはサイクル4においてクリアされ、第2の反復のためのソースレジスタはサイクル5においてクリアされ、などとなり、これは図9Aの右側に示されている。
【0097】
図9Bは、図9Aと同じ形式のテーブルであるが、ランファストモードにおける単精度ソースレジスタのロッキングおよびクリアリングを示している。前述のように、もしベクトル命令が4回以下の反復であれば、ソースレジスタはロックされる必要はない。これは図9Bの左側からわかり、そこではソースレジスタは、反復回数が5以上になった時にのみロックされ始めている。前と同様に、テーブルの右側は、特定の反復のためのソースレジスタがクリアされるサイクルを示している。従って、7回の反復を有するベクトル命令の例をとると、反復5におけるソースレジスタに対するロックはサイクル4(すなわち反復1のための実行1段)においてクリアされ、反復6のソースレジスタに対するロックはサイクル5においてクリアされ、また、反復7のソースレジスタに対するロックはサイクル6においてクリアされる。
【0098】
図9Cおよび図9Dは、非ランファストモードにおける倍精度ソースレジスタのロッキングおよびクリアリングを示すテーブルであり、図9Cは単サイクルスループットを有する倍精度ベクトル命令に関連し、一方、図9Dは2サイクルスループットを有する倍精度ベクトル命令(すなわち逓倍を含むベクトル命令)に関連する。これらの図に示されているように、全てのソースレジスタは、非ランファストモードにおいてはロックされる。単サイクルスループットの場合は、特定の反復のためのソースレジスタに対するロックは、その反復がパイプラインのE1段に到達した時にクリアされ、従って、反復1のためのソースレジスタに対するロックはサイクル4においてクリアされ、反復2のためのソースレジスタに対するロックはサイクル5においてクリアされ、などとなる。しかし、2サイクルスループットの場合は、それぞれの反復はE1段において2サイクルを費やし、従って、反復1のソースレジスタに対するロックは、単サイクルスループットの場合と同様にサイクル4においてクリアされ、反復2のソースレジスタに対するロックはサイクル6においてクリアされ、反復3のソースレジスタに対するロックはサイクル8においてクリアされ、などとなる。
【0099】
図9Eおよび図9Fは、図9Cおよび図9Dとそれぞれ同様のテーブルであるが、ランファストモードにおける倍精度ソースレジスタのロッキングおよびクリアリングを示している。前述のように、反復回数が2以下の時は、ソースレジスタはロックされない。従って、図9Eおよび図9Fからわかるように、ソースレジスタは、反復回数が3または4の時にのみロックされ、それらの場合には、第3および第4の反復におけるソースレジスタのみがロックされる。第3の反復におけるソースレジスタのロックは、第1の反復がE1段にある時にクリアされ、従って第3の反復におけるロックはサイクル4においてクリアされる。単サイクルスループットのベクトル命令の場合は、反復4におけるソースレジスタのロックは、第5のサイクルにおいてクリアされる。しかし、もしベクトル命令が2サイクルスループットを有し、従ってそれぞれの反復がE1段において2サイクルを費やせば、反復4のソースレジスタにおけるロックはサイクル6までクリアされず、これは図9Fのテーブルの右側部分により示されている。
【0100】
従って、本発明の実施例は、IEEE754規格の全ての特徴に完全に従う必要のない環境において、動作モードをそのような場合におけるランファストモードへスイッチしうるようにし、それによりロックされるソースレジスタの数を減ずることを可能にし、それによって、命令が実行パイプラインに入る前に機能停止されなければならない場合の数を減ずることにより、処理速度のかなりの改善を得られることがわかる。
【0101】
ここでは本発明の特定の実施例を説明したが、本発明はこれに制限されず、本発明の範囲内において多くの改変および追加を行えることは明らかである。例えば、実施例は、物理的に分離したコプロセッサを有するCPUに関して説明されたが、この状況である必要はない。例えば、浮動小数点ユニットをメインプロセッサ内に備えることもできる。さらに、前述のように、コプロセッサは、実施例においては2つのパイプラインを有するように示されたが、それぞれが異なる命令のセットに応答する、または命令のセットの間にオーバラップを与える、もっと多くのパイプラインを備えることもできる。さらに、本発明の範囲から逸脱することなく、独立請求項の特徴と従属請求項の特徴とのさまざまな組合せを行うこともできる。
【図面の簡単な説明】
【図1】 本発明の実施例によるデータ処理装置の素子を示すブロック図である。
【図2A】 本発明の実施例による図1のコプロセッサの素子を示すブロック図である。
【図2B】 本発明の実施例によるコプロセッサの、制御ロジック内に備えられている素子を詳細に示すブロック図である。
【図3】 本発明の実施例によるスコアボードロジックの動作を概略的に示す図である。
【図4】 本発明の実施例によるプロセッサコアおよびコプロセッサ内の、パイプラインの基本フローを示すブロック図である。
【図5】 AおよびBは、第1の動作モードおよび第2の動作モードのそれぞれにおけるバックトゥバック(back−to−back)算術演算の実行のシーケンスを示す図であり、そこでは、第2の命令は、第1の命令のソースレジスタを宛先として有する。
【図6】 AおよびBは、第1の動作モードおよび第2の動作モードのそれぞれにおける、ロード命令が後続する演算命令の実行のシーケンスを示す図であり、そこでは、ロード命令は、演算命令の1つまたはそれ以上の第1の命令のソースレジスタに書込みつつある。
【図7】 AからCは、ロード命令、Aに示されている第1の動作モード、およびBおよびCに示されている第2の動作モードが後続する、ベクトル命令の実行のシーケンスを示す図である。
【図8】 AおよびBは、単精度ベクトル命令および倍精度ベクトル命令のそれぞれの実行のシーケンスであって、双方の場合において前記命令にロード命令が後続している前記シーケンスを示し、また、ソースレジスタのロッキングを必要とする状態を示す図である。
【図9】 AからFは、第1および第2の動作モードの双方における、単精度命令および倍精度命令の双方のために、ソースレジスタがどのようにロックされ、またクリアされるかを示す図表である。
Claims (16)
- 命令のシーケンスを実行するパイプラインを含む処理ユニットと、
前記処理ユニットが前記シーケンス内の命令を実行する時に必要とするソースデータを記憶するためのソースレジスタのセットと、
構成可能な基準に依存してソースレジスタをロックするロッキング機構であって、前記パイプライン内の命令の実行を完了するためになお必要とされるソースレジスタが、次の命令による所定タイプのアクセスを防止するためにロックされ、前記次の命令が、該命令に関連するソースレジスタが前記命令の要求するようにアクセスできる場合に限り前記パイプラインに入れることを保証するように前記構成可能な基準は選択される、前記ロッキング機構と、を含むデータ処理装置において、
前記処理ユニットは、第1の動作モードおよび第2の動作モードを有し、
前記第1の動作モードにおいては、前記処理ユニットは、命令の実行中に1つまたはそれ以上の例外状態が決定された時に、前記パイプライン形実行ユニットの外部プロセスを呼出して、前記命令の実行を完了できるように構成され、
前記第2の動作モードにおいては、前記処理ユニットは、たとえ前記1つまたはそれ以上の例外状態が決定されても、前記パイプライン内の命令の実行を完了するように構成され、
前記ロッキング機構は、前記第2の動作モードにおいて、ロックされるソースレジスタの数の低減を行うことができるように、前記処理ユニットの前記動作モードに依存して前記構成可能基準を変更するよう構成されている、
前記データ処理装置。 - 前記シーケンス内の前記命令の実行から生じる宛先データを記憶するための宛先レジスタのセットをさらに含み、前記ロッキング機構はさらに、所定の基準に依存して宛先レジスタをロックするように構成されている、請求項1記載のデータ処理装置。
- 宛先レジスタのロッキングを決定するために用いられる前記所定の基準は、前記第1の動作モードおよび前記第2の動作モードの双方において同じである、請求項2記載のデータ処理装置。
- 前記ロッキング機構は、
ロックされたレジスタの記録と、
ロックされたレジスタの前記記録に関連して、前記次の命令が前記パイプラインに入りうるかどうかを決定する検査ロジックと、
前記次の命令のために、その命令の前記ソースレジスタのいずれかが前記記録においてロックされるべきかどうかを決定する決定ロジックであって、該決定ロジックは前記構成可能な基準に応答する前記決定ロジックと、
を含む、請求項1から請求項3までのいずれかに記載のデータ処理装置。 - 前記構成可能な基準は、前記第1の動作モードにおいては、命令が前記パイプラインにより実行されるべき時に、前記ロッキング機構がその命令が必要とするソースレジスタを、それらのソースレジスタが前記パイプライン内のその命令により読取られる前の、それらのレジスタがまだ上書きされてもよい間、または、それらが前記パイプラインの外部プロセスによりなお必要とされる間、ロックするように構成され、一方、前記第2の動作モードにおいては、前記構成可能な基準は、前記ロッキング機構がその命令が必要とするソースレジスタを、それらのソースレジスタが前記パイプライン内のその命令により読取られる前の、それらのレジスタがまだ上書きされてもよい間のみロックするように構成される、請求項1から請求項4までのいずれかに記載のデータ処理装置。
- 前記ロッキング機構が、スカラ命令のため、または所定値以下の反復数を有するベクトル命令のためのソースレジスタを、ロックしないように構成される、請求項5記載のデータ処理装置。
- 前記所定値は、単精度ベクトル命令、または単サイクルスループットを有する倍精度ベクトル命令に対しては4であり、また前記所定値は、2サイクルスループットを有する倍精度ベクトル命令に対しては2である、請求項6記載のデータ処理装置。
- 前記構成可能な基準は、前記第2の動作モードにおいて、前記ロッキング機構が倍精度ベクトル命令を、2サイクルスループットを有するとして処理するようなものとされる、請求項7記載のデータ処理装置。
- 前記パイプラインの前記外部プロセスは、サポートコードまたはユーザ使用可能化例外ハンドリングルーチンである、請求項1から請求項8までのいずれかに記載のデータ処理装置。
- 前記第1の動作モードはIEEE754に従う動作モードであり、前記第2の動作モードは、前記1つまたはそれ以上の例外状態を処理するソフトウェアルーチンの必要のない、IEEE754に従わないモードである、請求項1から請求項9までのいずれかに記載のデータ処理装置。
- 前記ロッキング機構は、ロックされた宛先レジスタを記録する第1の記録と、ロックされたソースレジスタを記録する第2の記録とを含む、請求項2に従属する請求項3から請求項10までのいずれかに記載のデータ処理装置。
- 前記第2のモードにおいて、もし前記次の命令が、前記第1の記録内にロックされているとして表示されている宛先レジスタへ任意のタイプのアクセスを行う必要があれば、それは、前記第1の記録から前記ロックがクリアされるまで、前記パイプラインに入らないように機能停止され、一方、もし前記次の命令が、前記第2の記録においてロックされている1つまたはそれ以上の前記ソースレジスタの読取りアクセスを行う必要があるのみならば、それは、前記第2の記録から関連のロックがクリアされるのを待つ必要なしに、前記パイプラインに入ることを許される、請求項11記載のデータ処理装置。
- 前記第2の動作モードにおいて、前記処理ユニットは、フラッシュトゥゼロ(flush−to−zero)モードを用いるように構成され、デノーマル(denormal)範囲内のソースデータまたは結果データを、正のゼロにより置換する、請求項1から請求項12までのいずれかに記載のデータ処理装置。
- 前記第2の動作モードにおいて、前記処理ユニットは、デフォルトNaN(非数)モードを用い、もしソースデータのいずれかがNaNであれば、結果データとしてデフォルトNaNを生じるように構成される、請求項1から請求項13までのいずれかに記載のデータ処理装置。
- 前記第2の動作モードにおいて、前記処理ユニットは、該処理ユニットのハードウェア内において、オーバフロー、不正確、ゼロによる除算または無効な例外状態、を処理するように構成される、請求項1から請求項14までのいずれかに記載のデータ処理装置。
- データ処理装置の動作方法において、前記データ処理装置は、命令のシーケンスを実行するパイプラインを含む処理ユニットと、前記処理ユニットが前記シーケンス内の命令を実行する時に必要とするソースデータを記憶するソースレジスタのセットと、を有し、前記方法は、
(i)構成可能な基準に依存してソースレジスタをロックするロッキング機構を用いるステップであって、前記パイプライン内の命令の実行を完了するためになお必要とされるソースレジスタが、次の命令による所定のタイプのアクセスを防止するためにロックされ、前記次の命令が、該命令に関連する前記ソースレジスタが前記命令の要求するようにアクセスできる場合に限り前記パイプラインに入れることを保証するように前記構成可能な基準は選択される、前記ロッキング機構を用いるステップと、
(ii)前記処理ユニットにおける第1の動作モードまたは第2の動作モードを選択するステップであって、前記第1の動作モードにおいては、前記パイプライン形処理ユニットは、命令の実行中に1つまたはそれ以上の例外状態が決定された時に、前記パイプライン形実行ユニットの外部プロセスを呼出して、前記命令の実行を完了できるように構成され、前記第2の動作モードにおいては、前記パイプライン形処理ユニットは、たとえ前記1つまたはそれ以上の例外状態が決定されても、前記パイプライン内の命令の実行を完了するように構成される、前記選択するステップと、
(iii)前記ロッキング機構により、前記第2の動作モードにおいて、ロックされるソースレジスタの数の低減を行うことができるように、前記処理ユニットの前記動作モードに依存して前記構成可能基準を変更するステップと、
を含む前記方法。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US09/860,777 US6842849B2 (en) | 2001-05-21 | 2001-05-21 | Locking source registers in a data processing apparatus |
PCT/GB2002/000593 WO2002095575A1 (en) | 2001-05-21 | 2002-02-11 | Locking source registers in a data processing apparatus |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2004520657A JP2004520657A (ja) | 2004-07-08 |
JP3793155B2 true JP3793155B2 (ja) | 2006-07-05 |
Family
ID=25333994
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2002591974A Expired - Lifetime JP3793155B2 (ja) | 2001-05-21 | 2002-02-11 | データ処理装置におけるソースレジスタのロッキング |
Country Status (12)
Country | Link |
---|---|
US (1) | US6842849B2 (ja) |
EP (1) | EP1389312B1 (ja) |
JP (1) | JP3793155B2 (ja) |
KR (1) | KR100864890B1 (ja) |
CN (1) | CN1260647C (ja) |
DE (1) | DE60222765D1 (ja) |
GB (1) | GB2375855B (ja) |
IL (2) | IL155298A0 (ja) |
MY (1) | MY126211A (ja) |
RU (1) | RU2282235C2 (ja) |
TW (1) | TWI220960B (ja) |
WO (1) | WO2002095575A1 (ja) |
Families Citing this family (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080184017A1 (en) * | 1999-04-09 | 2008-07-31 | Dave Stuttard | Parallel data processing apparatus |
WO2003103945A1 (en) * | 2002-06-07 | 2003-12-18 | Interface, Inc. | Asymmetrical carpet tile design, manufacture and installation |
US7430652B2 (en) * | 2003-03-28 | 2008-09-30 | Tarari, Inc. | Devices for performing multiple independent hardware acceleration operations and methods for performing same |
JP2005309229A (ja) * | 2004-04-23 | 2005-11-04 | Matsushita Electric Ind Co Ltd | 情報処理装置 |
DE102005037216A1 (de) * | 2005-08-08 | 2007-02-15 | Robert Bosch Gmbh | Verfahren und Vorrichtung zur Steuerung eines Rechnersystems |
US20080208863A1 (en) * | 2007-02-28 | 2008-08-28 | Microsoft Corporation | Compound Item Locking Technologies |
US8117578B2 (en) * | 2007-12-28 | 2012-02-14 | Nec Corporation | Static hazard detection device, static hazard detection method, and recording medium |
KR101015202B1 (ko) * | 2008-09-25 | 2011-02-18 | 퍼멘텍 주식회사 | 미생물배양기용 온도조절장치 |
US8255674B2 (en) * | 2009-01-28 | 2012-08-28 | International Business Machines Corporation | Implied storage operation decode using redundant target address detection |
US9529596B2 (en) * | 2011-07-01 | 2016-12-27 | Intel Corporation | Method and apparatus for scheduling instructions in a multi-strand out of order processor with instruction synchronization bits and scoreboard bits |
US9086873B2 (en) | 2013-03-15 | 2015-07-21 | Intel Corporation | Methods and apparatus to compile instructions for a vector of instruction pointers processor architecture |
US11132203B2 (en) * | 2014-08-14 | 2021-09-28 | Texas Instruments Incorporated | System and method for synchronizing instruction execution between a central processor and a coprocessor |
CN108509791B (zh) * | 2018-02-09 | 2021-06-04 | 清华大学 | 检测处理器的方法、检测装置以及检测系统 |
KR102225838B1 (ko) * | 2018-12-20 | 2021-03-09 | 한양대학교 에리카산학협력단 | 안드로이드 앱 보호를 위한 안티 에뮬레이션 방법 및 장치 |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5787465A (en) * | 1994-07-01 | 1998-07-28 | Digital Equipment Corporation | Destination indexed miss status holding registers |
US5749095A (en) * | 1996-07-01 | 1998-05-05 | Sun Microsystems, Inc. | Multiprocessing system configured to perform efficient write operations |
US6216222B1 (en) | 1998-05-14 | 2001-04-10 | Arm Limited | Handling exceptions in a pipelined data processing apparatus |
US6304963B1 (en) * | 1998-05-14 | 2001-10-16 | Arm Limited | Handling exceptions occuring during processing of vector instructions |
US6317821B1 (en) | 1998-05-18 | 2001-11-13 | Lucent Technologies Inc. | Virtual single-cycle execution in pipelined processors |
DE69901556T2 (de) | 1998-05-27 | 2002-11-21 | Advanced Risc Mach Ltd | Rückführender registerspeicher |
US6282634B1 (en) * | 1998-05-27 | 2001-08-28 | Arm Limited | Apparatus and method for processing data having a mixed vector/scalar register file |
US6282633B1 (en) * | 1998-11-13 | 2001-08-28 | Tensilica, Inc. | High data density RISC processor |
US6675292B2 (en) * | 1999-08-13 | 2004-01-06 | Sun Microsystems, Inc. | Exception handling for SIMD floating point-instructions using a floating point status register to report exceptions |
JP4160705B2 (ja) | 1999-10-15 | 2008-10-08 | 富士通株式会社 | プロセッサ及びプロセッサシステム |
-
2001
- 2001-05-21 US US09/860,777 patent/US6842849B2/en not_active Expired - Lifetime
-
2002
- 2002-02-05 GB GB0202642A patent/GB2375855B/en not_active Expired - Lifetime
- 2002-02-11 KR KR1020037013759A patent/KR100864890B1/ko active IP Right Grant
- 2002-02-11 IL IL15529802A patent/IL155298A0/xx active IP Right Grant
- 2002-02-11 CN CNB02810403XA patent/CN1260647C/zh not_active Expired - Lifetime
- 2002-02-11 DE DE60222765T patent/DE60222765D1/de not_active Expired - Lifetime
- 2002-02-11 WO PCT/GB2002/000593 patent/WO2002095575A1/en active IP Right Grant
- 2002-02-11 EP EP02711060A patent/EP1389312B1/en not_active Expired - Lifetime
- 2002-02-11 RU RU2003112627/09A patent/RU2282235C2/ru not_active IP Right Cessation
- 2002-02-11 JP JP2002591974A patent/JP3793155B2/ja not_active Expired - Lifetime
- 2002-03-05 MY MYPI20020766A patent/MY126211A/en unknown
- 2002-04-02 TW TW091106667A patent/TWI220960B/zh not_active IP Right Cessation
-
2003
- 2003-04-08 IL IL155298A patent/IL155298A/en unknown
Also Published As
Publication number | Publication date |
---|---|
DE60222765D1 (de) | 2007-11-15 |
CN1511281A (zh) | 2004-07-07 |
EP1389312A1 (en) | 2004-02-18 |
IL155298A0 (en) | 2003-11-23 |
US6842849B2 (en) | 2005-01-11 |
KR20040005927A (ko) | 2004-01-16 |
GB2375855B (en) | 2004-11-10 |
KR100864890B1 (ko) | 2008-10-22 |
WO2002095575A1 (en) | 2002-11-28 |
US20030033506A1 (en) | 2003-02-13 |
JP2004520657A (ja) | 2004-07-08 |
EP1389312B1 (en) | 2007-10-03 |
CN1260647C (zh) | 2006-06-21 |
MY126211A (en) | 2006-09-29 |
TWI220960B (en) | 2004-09-11 |
GB2375855A (en) | 2002-11-27 |
RU2282235C2 (ru) | 2006-08-20 |
GB0202642D0 (en) | 2002-03-20 |
IL155298A (en) | 2007-12-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2597811B2 (ja) | データ処理システム | |
JP2938426B2 (ja) | 順不同ロード命令とストア命令との干渉を検出回復するための方法及び装置 | |
JP3675466B2 (ja) | スーパースケーラマイクロプロセサ | |
JP3531166B2 (ja) | レジスタ・リネーミングのシステム及び方法 | |
US5694565A (en) | Method and device for early deallocation of resources during load/store multiple operations to allow simultaneous dispatch/execution of subsequent instructions | |
US6862677B1 (en) | System and method for eliminating write back to register using dead field indicator | |
US6085312A (en) | Method and apparatus for handling imprecise exceptions | |
US5913048A (en) | Dispatching instructions in a processor supporting out-of-order execution | |
US6098167A (en) | Apparatus and method for fast unified interrupt recovery and branch recovery in processors supporting out-of-order execution | |
JP3793155B2 (ja) | データ処理装置におけるソースレジスタのロッキング | |
EP1256053B1 (en) | Secondary reorder buffer microprocessor | |
EP0753172B1 (en) | Processing system and method of operation | |
US6216222B1 (en) | Handling exceptions in a pipelined data processing apparatus | |
US5805916A (en) | Method and apparatus for dynamic allocation of registers for intermediate floating-point results | |
US5850563A (en) | Processor and method for out-of-order completion of floating-point operations during load/store multiple operations | |
US6658555B1 (en) | Determining successful completion of an instruction by comparing the number of pending instruction cycles with a number based on the number of stages in the pipeline | |
EP1208424B1 (en) | Apparatus and method for reducing register write traffic in processors with exception routines | |
US5784606A (en) | Method and system in a superscalar data processing system for the efficient handling of exceptions | |
US20060179286A1 (en) | System and method for processing limited out-of-order execution of floating point loads | |
US6266761B1 (en) | Method and system in an information processing system for efficient maintenance of copies of values stored within registers | |
US6859871B1 (en) | Method and apparatus for reducing power consumption in a pipelined processor | |
JPH0756735A (ja) | 並列演算処理装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20040928 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20060320 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20060324 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20060406 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 3793155 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090414 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100414 Year of fee payment: 4 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110414 Year of fee payment: 5 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120414 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130414 Year of fee payment: 7 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130414 Year of fee payment: 7 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20140414 Year of fee payment: 8 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
EXPY | Cancellation because of completion of term |