JP3756410B2 - 述語データを提供するシステム - Google Patents
述語データを提供するシステム Download PDFInfo
- Publication number
- JP3756410B2 JP3756410B2 JP2001002039A JP2001002039A JP3756410B2 JP 3756410 B2 JP3756410 B2 JP 3756410B2 JP 2001002039 A JP2001002039 A JP 2001002039A JP 2001002039 A JP2001002039 A JP 2001002039A JP 3756410 B2 JP3756410 B2 JP 3756410B2
- Authority
- JP
- Japan
- Prior art keywords
- predicate
- stage
- instruction
- value
- register
- 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 - Fee Related
Links
- 238000000034 method Methods 0.000 claims description 49
- 238000004590 computer program Methods 0.000 claims description 17
- 230000008569 process Effects 0.000 description 31
- 238000001514 detection method Methods 0.000 description 9
- 230000004044 response Effects 0.000 description 9
- 238000010586 diagram Methods 0.000 description 7
- 230000005540 biological transmission Effects 0.000 description 3
- 230000008859 change Effects 0.000 description 2
- 230000007812 deficiency Effects 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000002411 adverse Effects 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000000717 retained 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
- G06F9/3867—Concurrent instruction execution, e.g. pipeline, look ahead using instruction pipelines
-
- 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/30003—Arrangements for executing specific machine instructions
- G06F9/30072—Arrangements for executing specific machine instructions to perform conditional operations, e.g. using predicates or guards
Description
【発明の属する技術分野】
本発明は、一般にデータ処理に関し、特に、プロセッサパイプラインによって処理される命令をパイプラインで実行すべきか否かを定義する述語(predicate)データを効率的に提供するためのシステムおよび方法に関する。
【0002】
【従来の技術】
従来のコンピュータシステムの性能を改善するため、パイプライン処理が可能なスーパースカラプロセッサが開発されている。このようなプロセッサは、典型的に複数のパイプラインを使用してコンピュータプログラムの命令を処理し、実行する。各パイプラインは複数の命令を同時に処理することができる。従って、このようなスーパースカラプロセッサは、比較的多数の命令を高速で処理し、実行する能力を有する。
【0003】
コンピュータプログラムの各命令をコンピュータプログラムの実行毎に実行する必要がないことは、周知のとおりである。この点に関して、命令の多くはある一定の条件が真である場合にのみ実行される。しかし、プログラムを実行する際に、実行すべきではない多くの命令がパイプラインに入力され、そのパイプラインによって処理される。例えば、プログラムの実行を、比較命令の実行結果に基づいて、プログラムの2つの部分のうちの一方に分岐すべき状況を考えてみる。このような状況では、一般に、プログラムの両方の部分からの命令をパイプラインに入力し、パイプラインが命令の処理を開始することが望ましい。しかし、比較命令の実行結果に応じて、その部分のうちの一方に関連する命令のみをパイプラインは実行するべきであり、他方の部分における命令は、実行されることなくパイプラインを通過するべきである。
【0004】
このように命令を選択的に実行することを可能とするため、各命令は、命令をイネーブル(enable)するか否かを示す述語値を含む述語レジスタに関連付けられる。述語値は様々な長さを持つことができるが、通常は1ビットの情報である。述語値がアサート(assert)されている場合、述語レジスタに関連付けられた命令は現在イネーブルされており、従って、その命令を実行するべきであることを示す。述語値がデアサート(deassert)されている場合、述語レジスタに関連付けられた命令は現在ディスエーブル(disable)されており、従って、その命令を実行するべきではないことを示す。
【0005】
上述した例では、上記の比較命令が一旦実行されて、プログラムのいずれの部分を実行するべきかがわかった場合、実行するべきプログラムの部分における命令に関連付けられたレジスタに含まれる述語値がアサートされると共に、実行するべきではないプログラムの部分における命令に関連付けられたレジスタに含まれる述語値がデアサートされる。
【0006】
さらに、プログラムの両方の部分における命令の処理中に、命令に関連付けられたレジスタに含まれる述語値が分析されて、各命令がイネーブルされているか否かを判断する。述語データが、命令はイネーブルされていることを示す(すなわち、命令に関連付けられた述語レジスタの値がアサートされている)場合、命令を処理しているパイプラインは、その命令を実行する。しかし、述語データが、命令がディスエーブルされていることを示す(すなわち、命令に関連付けられた述語レジスタの値がデアサートされている)場合、命令を処理しているパイプラインはその命令を実行しない。従って、述語データを保持し分析することにより、プログラムの上記部分のうちの1つにおける命令が、パイプラインにより実行される一方、その他の部分における命令は、実行されることなく、パイプラインを通過することができる。
【0007】
命令がパイプラインによって処理されている間、述語データを用いてデータハザードを解決することもできる。例えば、命令がまだ使用可能ではないデータに従属する場合、データ従属性エラーを防止するため、実行前にその命令をストール(stall)するべきであることは周知のとおりである。必要なデータが使用可能になると、ストールは取り消され、命令の実行が可能になる。
【0008】
ストールはエラーを防止するが、命令をストールすると、命令の処理に必要な時間が増大してしまう。ストールによる悪影響を最小限に抑えるため、ストールするべき命令に関連付けられた述語レジスタに含まれる述語値を分析して、命令がイネーブルされているか否かを判断することができる。命令がディスエーブルされている場合には、その命令は実行されず、従ってエラーの原因とはならないので、ストールする必要はない。結果として、述語データを使用することで、不必要なストールを防止しまたは取り除いて、プロセッサの性能を増大させることができる。
【0009】
通常、述語レジスタは、適切な述語レジスタに対する述語データの書込みおよび読出しを可能にする書込みポートおよび読出しポートを備えるレジスタファイルに保持される。レジスタファイルは、処理システムが利用するすべての述語値を格納する中央ロケーションとしての役割を果たす。従って、任意の命令の述語ステータスが、任意のパイプラインの一部により必要とされる場合、命令に関連付けられた述語レジスタに含まれる述語値をレジスタファイルから読出すことができる。しかし、レジスタファイルの書込みポートおよび読出しポートは、面積、配線、および多くはプロセッサ速度の観点から比較的高価であるため、レジスタファイルに対する書込みおよび読出しに必要な書込みポートおよび読出しポートの数を最小にすることが望ましい。
【0010】
さらに、プログラムの命令に関連付けられた述語レジスタに含まれる述語値は、プログラムが実行されるにつれ、どの命令を実行すべきであり、どの命令を実行すべきではないかがわかってくるため、プログラムの実行中に変更することができる。パイプラインにおける遅延を最小にするため、パイプラインの回路は述語データに対するあらゆる更新を迅速に受信することが望ましい。しかし、レジスタファイルに対する述語値の書込みおよび読出しでは、比較的相当量の時間を(1またはそれ以上のクロックサイクルのオーダーで)利用することから、述語データの変更を回路に通知する際の遅延は増大してしまう。
【0011】
【発明が解決しようとする課題】
このように、プロセッサが処理している命令を実行すべきか否かを示す述語データを効率的に提供するシステムおよび方法に対する未解決の要望が本業界において存在する。
【0012】
【課題を解決するための手段】
本発明は、上述した従来技術の欠点および欠陥を克服する。本発明は、一般に、プロセッサパイプラインにより処理される命令をパイプラインによって実行するべきか否かを定義する述語データを効率的に提供するシステムおよび方法に関する。
【0013】
構造に関して、本発明のシステムは、レジスタと、パイプラインと、述語回路と、を利用する。パイプラインは、コンピュータプログラムの命令を処理する第1のステージおよび第2のステージを含む。述語回路は、レジスタから第1の述語値を読出し、第2の述語値を受信するよう構成される。述語回路は、レジスタから読出した第1の述語値を第1のステージに送信し、その後第1の述語値および第2の述語値の中から選択することができる。述語回路によって選択された述語値は、第2のステージに送信される。
【0014】
第2のステージにおける命令がストールされると、命令の述語ステータスを示す新しい述語値を受信するまで、第2のステージに送信された述語値が継続して選択され、ストールが続く間、第2のステージに送信される。新しい述語値を受信すると、新しい述語値が代わりに選択され、第2のステージに送信される。
【0015】
また、本発明を、コンピュータプログラムの命令を処理する方法を提供するものとして見ることもできる。本方法は、以下のステップによって広く概念化することが可能である。すなわち、第1のステージおよび第2のステージを有するパイプラインを提供するステップと、述語値を生成するステップと、該述語値をレジスタに書込むステップと、命令を受信するステップと、制御信号を受信するステップと、命令に含まれるレジスタ識別子に基づいて、レジスタから述語値を読出すステップと、読出しステップにおいて読出された述語値をパイプラインの第1のステージに送信するステップと、第1のステージに送信された述語値に基づいて、パイプラインの第1のステージを介して命令を処理するステップと、新しい述語値を受信するステップと、制御信号に基づいて、新しい述語値と読出しステップにおいて読出された述語値の中から選択するステップと、選択ステップにおいて選択された述語値を、パイプラインの第2のステージに送信するステップと、選択ステップにおいて選択された述語値に基づいて、第2のステージを介して命令を処理するステップと、である。
【0016】
本発明の他の特徴および利点は、当業者にとって以下の詳細な説明により明らかとなろう。かかるすべての特徴および利点は、本明細書において本発明の範囲内に含まれ、特許請求の範囲によって保護されるよう意図されている。
【0017】
【発明の実施の形態】
本発明は、一般に、コンピュータプログラムの命令を実行するべきか否かを示す述語データを効率的に提供するシステムおよび方法に関する。本発明の原理を説明するため、従来のスーパースカラ処理システム15を示す図1を参照する。処理システム15は、コンピュータプログラムの命令を受信し、各命令を複数のパイプライン21のうちの1つに割り当てる命令分配ユニット18を含む。各パイプライン21は、パイプライン21が受信した各命令を処理するよう構成されている。
【0018】
各パイプライン21は、通常、特定のタイプの命令(例えば、整数演算、浮動小数点演算、メモリ演算等)のみを処理するよう構成されている。従って、命令分配ユニット18は、各命令をその命令に適合するパイプライン21にのみ割り当てるよう構成されている。さらに、簡略化のため、図1では、述語制御回路22を1つのパイプライン21に結合するように図示しているが、各パイプライン21が同様に述語制御回路22に結合されていることに留意されたい。
【0019】
図1に示すように、パイプライン21は、典型的に命令をステージにおいて処理する。本明細書で用いられるように、「ステージ」とは、命令を処理すると共に、クロック信号のエッジに応答してステージへのデータ入力を制御できるように、その入力でラッチを含むパイプライン21の任意の部分である。図1に示すパイプライン21は、命令を4つのステージで処理する。すなわちレジスタステージ25、実行ステージ28、例外検出ステージ32、および書込みステージ35である。他の実施形態では、処理システム15は、他のタイプのステージおよびステージの組合せで命令を処理することが可能である。
【0020】
図1に示す処理システム15において、パイプライン21の1つによって受信される命令は、まずレジスタステージ25において処理される。レジスタステージ25では、命令の実行に必要なあらゆるオペランドが取得される。オペランドが取得されると、命令は、命令を実行する実行ステージ28に入る。実行ステージ28で命令が実行された後、その命令は、例外検出ステージ32に入る。例外検出ステージ32は、例えばデータの低信頼性を示す実行中のオーバラン等の状態をチェックする。例外検出ステージ32が完了した後、命令は書込みステージ35に入る。書込みステージ35は、レジスタまたはメモリのロケーションに実行ステージ28の結果を書込む。
【0021】
典型的に、パイプライン21の各ステージ25、28、32、35は、一度に1つの命令のみを処理し、ステージ25、28、32、35がそれぞれの命令を同時に処理することで各パイプライン21は複数の命令を処理することができる。例えば、図1に示す処理システム15において、パイプライン21の1つは4つの命令を同時に処理することができ、そのときパイプライン21の各ステージ25、28、32、35は4つの命令のうちの1つを処理している。さらに、各パイプライン21は、他のパイプライン21が他の命令を処理している時に命令を処理することができる。従って、図1に示す処理システム15により、相対的に大量の命令を同時に処理することが可能である。
【0022】
タイミングを制御するために、命令は典型的にクロック信号のエッジに応答してステージ25、28、32、35を通ってステップする。例えば、書込みステージ35における命令は、レジスタステージ25、実行ステージ28および例外検出ステージ32における命令がそれぞれ同じパイプライン21の実行ステージ28、例外検出ステージ32および書込みステージ35にステップインするのと同じクロックエッジで、パイプライン21からステップアウトする。しかし、パイプライン21における各命令が、クロック信号の同じエッジで次のステージにステップインする必要はない。実際、パイプライン21の命令のいくつかがパイプライン21を通ってステップされる間、あるエラーの発生を防止するために、パイプライン21の他の命令がストールされてもよい(すなわち、一時的にステージからステップアウトしないようにしてもよい)。1999年9月7日に出願された、「Superscalar Processing System and Method for Efficiently Performing In-order Processing of Instructions」と題する米国特許出願第09/390,199号には、データエラーを防止するために命令を選択的にストールさせるプロセスが記載されており、参照により本明細書に援用される。
【0023】
図2は、パイプライン21のうちの1つのより詳細な図であり、パイプライン21を通って命令をステップするために典型的に使用される回路を示す。ここで、命令はラッチされ、クロック信号のアクティブエッジに応答してラッチ54を介して処理回路52に提供される。処理回路52における処理が完了すると、命令はラッチされ、クロック信号のアクティブエッジに応答し、ラッチ58を介して処理回路56に提供される。処理回路56における処理が完了すると、命令はラッチされ、クロック信号のアクティブエッジに応答し、ラッチ64を介して処理回路62に提供される。処理回路62における処理が完了すると、命令はラッチされ、クロック信号のアクティブエッジに応答し、ラッチ68を介して処理回路66に提供される。処理回路66における処理が完了すると、命令はパイプライン21から出る。
【0024】
処理回路52、56、62、および66はそれぞれ、ステージ25、28、32、および35に関して上述した機能を実行する。つまり、処理回路52はオペランドを取得し、処理回路56は命令を実行し、処理回路64は例外についてチェックし、処理回路66は命令の実行を介して生成されたデータをレジスタまたはメモリ内のロケーションに書込む。データ従属性ハザードの解決を可能にするため、あるいは先行する命令の処理をまだ終えていないステージに後の命令がステップしてしまわないようにするため、ステージ25、28、32、および35のいずれか1つにおいて命令は一時的にストールされてもよい。
【0025】
図2に示すように、システム15は、システム15によって処理される命令についての述語データを格納する述語レジスタファイル71を備える。簡略化のため、レジスタファイル71は図2において単一のパイプライン21に結合されるように示されているが、好ましい実施形態におけるレジスタファイル71は、システム15の各パイプライン21に同様に結合される。
【0026】
図2および図3に示すように、レジスタファイル71は、複数のレジスタ73を含む。各レジスタ73は、レジスタ73に関連する命令を実行するべきか否かを示す述語ビットを含む。当技術分野で既知の方法により、任意のパイプライン21の実行ステージ28、例外検出ステージ32、および/または書込みステージ35で処理されている命令は、述語レジスタファイル71におけるビットを制御するために用いられる述語データを生成することがある。例えば、実行時に、パイプライン21のうちの1つである実行ステージ28における第1の命令は、レジスタファイル71における特定のレジスタ73に書込まれることになる述語値を生成することができる。命令を定義するデータは、特定のレジスタ73を識別するレジスタ識別子を含む。命令が実行されると、処理回路56(図2)がラッチ74、接続75および76を介して述語値をレジスタファイル71に送信すると共に、ラッチ74、接続79および81を介して上記レジスタ識別子をレジスタファイル71に送信する。ラッチ74に結合された書込みポート77は、述語値およびレジスタ識別子を受信し、その受信したレジスタ識別子で識別されるレジスタ73に述語値を送信する。述語値を受信する特定のレジスタ73は、受信した述語値に基づいて、レジスタ73に含まれる値を更新する。
【0027】
述語データを生成することができる任意の他のステージ25、32、および/または35は、同様にレジスタファイル71に結合されて、レジスタファイル71が述語データを受信して適切に処理できるようにする。例えば、図2における例外検出ステージ32は、処理回路62で生成された新しい述語データビットを処理回路62がラッチ83、接続85および86を介してレジスタファイル71に送信することができるように、レジスタファイル71に結合される。さらに、新しい述語ビットを書込むべきレジスタ73(図3)を識別するレジスタ識別子を、ラッチ83、接続87および88を介してレジスタファイル71に送信することができる。図2には図示しないが、レジスタファイル71が他のパイプライン21のステージ25、28、32、および/または35から述語データを受信できるように、任意の他のパイプライン21の任意のステージ25、28、32、および/または35を同様にレジスタファイル71に結合することもできる。
【0028】
システム15によって処理される各命令は、述語レジスタファイル71に配置されるレジスタ73の1つと関連付けられる。ここで、命令を定義するデータは、命令と関連するレジスタ73を識別する述語レジスタ識別子を含む。関連付けられたレジスタ73に含まれる述語値は、パイプライン21の1つが命令を処理している間、命令がイネーブルされているか否かを示す。命令がイネーブルされている場合は、命令を実行するべきである。命令がディスエーブルされている場合は、命令を実行せずにパイプライン21を通過させるべきである。
【0029】
任意のステージ25、28、32、および/または35における命令を処理するために、命令に関連付けられたレジスタ73に含まれる述語値を利用してもよい。例えば、命令が実行ステージ28に入るとき、その命令を実行すべきか否かを判断するために、関連付けられたレジスタ73における述語値を用いることができるだけでなく、その述語値をデータハザードの解決にも使用することができる。ここで、レジスタステージ25における命令は、現在は使用可能でないデータを、後に実行ステージ28における実行時に使用することができる。命令によって利用されるデータが使用可能となるまで、データエラーを防止するために命令を実行しないようにすべきである。従って、上述したデータが使用可能となるまで、命令がディスエーブルされていると判断できなければ、レジスタステージ25において命令をストールするべきである(すなわち、命令が実行ステージ28に入ったときに、実行しない)。
【0030】
ここで、処理回路52は、述語レジスタファイル71の関連するレジスタ73に含まれる述語値を利用して、命令がイネーブルされているか、またはディスエーブルされているかを判断することができる。このため、処理回路52は、接続82を介して命令の述語レジスタ識別子をレジスタファイル71に送信する。この識別子は、受信した述語レジスタ識別子によって識別されるレジスタ73における述語値を読出すように設計される読出しポート84(図3)によって受信される。次に、この述語値は処理回路52に戻され、処理回路52は、受信した述語値に基づいて、命令がイネーブルされているか、またはディスエーブルされているかを判断する。処理回路52が、レジスタファイル71から読出された述語値に基づいて、命令がディスエーブルされている(すなわち、実行ステージ28で実行されない)と判断すると、処理回路52は、レジスタステージ25における命令のストールを取りやめることができ、これによってシステム15の全体的な効率が上がる。
【0031】
各パイプライン21の各ステージ25、28、32、および/または35がレジスタファイル71に含まれる述語データを利用できるようにするため、レジスタファイル71は、各パイプライン21の各ステージ25、28、32、および/または35について別個の読出しポート84を備えることに留意すべきである。従って、スーパースカラプロセッサでは、読出しポート84の数がかなり多くなる可能性があり、そのため、システム15において比較的大きな面積を利用すると共に、システム15の配線および複雑さが増大してしまう。
【0032】
状況によっては、レジスタファイル71から処理回路52に送信される述語値を、処理回路52により受信される前に、更新する必要がある場合がある。ここで、通常、レジスタファイル71に対して書込みまたは読出しを行う際には有限量の遅延がある。従って、レジスタファイル71における特定のレジスタ73からの述語値が接続91を介して送信されるとき、新しい述語値がレジスタファイル71によって受信され処理されると、特定のレジスタ73に含まれる値を後で更新または変更する新しい述語値がすでに接続75または86上に存在することがある。その結果、接続91を介して現在送られた値は旧くなってしまう。従って、接続91は、必要であれば、接続91を介して送信された述語値を更新するよう構成される選択回路94に結合される。
【0033】
ここで、選択回路94は、接続91の他に接続75および86と結合されているため、レジスタファイル71から読出され接続91を介して送信された述語値と同様に、接続75および86を介して送信された新しい述語値も受信する。選択回路94は、現在接続75または86上にある新しい述語値がいずれも接続91から受信した値を生成したのと同じレジスタ73に向かっていない場合は、接続91から受信した値を選択して接続97を介して送信する。接続91からの値が、接続75または86上の新しい値が向かっているのと同じレジスタ73から読出されている場合は、選択回路94は、接続91から読出した値の代わりに新しい値を選択して接続97を介して送信する。その結果、接続97を介して送信される値は、使用可能な最新の述語データに基づいて、レジスタステージ25における命令の述語ステータスを反映する。
【0034】
選択回路94は、簡略化のため、1つのパイプライン21からの入力のみを受信するよう図2において示されていることに留意されたい。任意のパイプライン21における任意のステージ25、28、32、および/または35が述語データを生成することができるので、選択回路94は、同様に他のパイプライン21および/または述語データを生成可能な他のステージ25および/または35に結合されて、新しい述語値をそれぞれ受信してそれらの中からレジスタファイル71に現在送信されているものを選択することができる。従って、選択回路94によって選択された値は、図2に図示していないパイプライン21によって生成された新しい述語値であることもある。
【0035】
選択回路94が、接続97を介して送信するのに適したビット値を選択できるように、述語制御回路22は、選択回路94が受信した値のいずれを選択すべきかを示す制御信号を選択回路94に送信する。上述したように、述語制御回路22は、各パイプライン21の各ステージ25、28、32、および/または35に結合される。述語制御回路22は、命令によって生成された述語データを書込むべきレジスタ73を識別するレジスタ識別子を分析する。従って、述語制御回路22は、上記レジスタ識別子および接続82を介して送信されたレジスタ識別子を分析することにより、接続75または86上に現在ある新しい述語値が、接続91から選択回路94が現在受信した述語値を生成したのと同じレジスタ73に向かっているときを検出することができる。
【0036】
状況によっては、接続97を介して送信するために選択回路94が選択した述語値の信頼性が低い場合がある。例えば、パイプライン21における命令の述語レジスタ識別子を分析する際、パイプライン21の1つによって処理されている命令がレジスタステージ25における命令の述語ステータスに影響を及ぼしうる述語データを後に生成する可能性があるということを、述語制御回路22が検出することがある。その結果、レジスタステージ25における命令が、接続75、86、および91を介して現在送信される値に関係なく、結局実行されてしまう場合がある。、データエラーの発生を確実に防ぐため、命令が実行されるであろうと仮定すべきである。
【0037】
従って、述語制御回路22は、ある命令により生成された述語データが後にレジスタステージ25に現在ある命令の述語ステータスを変更する可能性があることを検出すると、「悲観的(pessimistic)信号」または「悲観的制御信号」と呼ばれるアサートされた制御信号をORゲート98に送信する。その他の場合には、制御回路22によってORゲート98に送信される悲観的制御信号は、デアサートされる。結果として、ORゲート98の出力は、選択回路94によって現在選択された値がアサートされている(すなわち、レジスタステージ25における命令がイネーブルされていることを示す)場合、または、制御回路22からORゲート98に送信される制御値がアサートされている場合には、レジスタステージ25における命令がイネーブルされていることを示す。その結果、レジスタステージ25における命令の述語ステータスに影響を及ぼしうる述語データを別の命令が後に生成する可能性のあることを制御回路22が検出した場合、選択回路94によって選択された値に関係なく、レジスタステージ25における命令をイネーブルされているものとして処理すべきであり、それによって、レジスタステージ25における命令がさらに処理されるとき、データエラーを引き起こさないことが確実になる。
【0038】
レジスタステージ25における命令がストールされる場合、述語値を処理回路52に提供する上記のプロセスが次のクロックサイクル中に繰り返される。つまり、レジスタステージ25における命令の述語レジスタ識別子は、レジスタファイル71に送信され、この識別子によって識別されるレジスタ73の値が読出され、接続91を介して選択回路94に送信される。そして選択回路94は、述語制御回路22からの制御信号に基づいて、接続75、86、または91から値を選択し、選択した値をORゲート98に送信する。上記の値および述語制御回路22からの悲観的制御信号の値に基づいて、ORゲート98は、レジスタステージ25における命令の現在の述語ステータスを示す値を処理回路52に送信する。
【0039】
レジスタステージ25における命令の処理が完了し、命令がラッチされて、実行ステージ28に提供されると、実行ステージ28における処理回路56が、命令を実行すべきか否かを判断する。ここで、述語値は、述語値が処理回路52に送信されるのと同様にして処理回路56に送信される。従って、命令の述語レジスタ識別子が、接続101を介して処理回路56からレジスタファイル71に送信される。読出しポート84(図3)のうちの1つが命令に関連付けられたレジスタ73の値(すなわち、接続101を介して送信された命令の述語レジスタ識別子によって識別されるレジスタ73の値)を読出し、この値を接続104を介して選択回路99に送信する。
【0040】
選択回路99は、選択回路94が接続75、86、または91から値を選択する上述の仕方と同様に、述語制御回路22からの制御信号に基づいて、接続75、86、または104から値を選択する。そして、選択された値はORゲート106に送信される。ORゲート106は、別の命令によって後に生成される述語データが図2に示すパイプライン21の実行ステージ28における命令の述語ステータスに影響を及ぼしうる場合にアサートされる述語制御回路22からの悲観的制御信号も受信する。その結果、ORゲート106の出力は、アサートされている場合、実行ステージ28における命令をイネーブルされているものとして処理するべきであることを示す。従って、ORゲート106から受信した信号がアサートされている場合、処理回路56は命令を実行する。その他の場合には、処理回路56は命令の実行を回避し、命令を実行せずに通過させる。
【0041】
上記の技法に従って、処理システム15の性能を増大させパイプライン21への命令入力を適切に実行するために、述語データを保持し利用することができる。しかし上述したように、レジスタファイル71の読出しポート84および書込みポート77(図3)は比較的高価であり、これらのポートを可能な限り最小に抑えることが望ましい。さらに、レジスタファイル71に対する書込みステップおよび読出しステップは、比較的長い時間がかかる。システム15の全体的な効率を強化するため、ステージ25、28、32、および/または35に更新された述語データを提供するのに要する時間量を最小に抑えることが望ましい。
【0042】
一般に、本発明は、述語データを保持し、提供するためのシステムおよび方法に関する。図4は、本発明の好ましい実施形態の原理による処理システム110を示したものである。図4に示すように、処理システム110は、メモリ109に格納されているコンピュータプログラム107からの命令を実行するため、コンピュータシステム105内に採用することができる。
【0043】
処理システム110は、1つまたは複数のバスを含みうるローカルインタフェース112を介して、システム105内のその他の要素と通信しかつそれらを駆動する。さらに、例えばキーボードまたはマウス等の入力装置114は、システム105のユーザからデータを入力するために使用でき、スクリーンディスプレイ116またはプリンタ118は、データをユーザに対して出力するために使用できる。ディスク記憶機構121は、不揮発性ディスク(例えば、磁気ディスク、光ディスク等)に対してまたはそこからデータを転送するために、ローカルインタフェース112に結合することができる。システム105は、システム105がネットワーク125とデータを交換できるようにするネットワークインタフェース123に結合することが可能である。
【0044】
述語データを処理する回路を除き、処理システム110の構成は従来の処理システム15の構成と同じであることが好ましい。従って図5に示すように、処理システム110は、従来のシステム15に関して上述したようにレジスタステージ25、実行ステージ28、例外検出ステージ32、および書込みステージ35において、パイプライン21を介して命令を処理する。なお、所望であれば、他のステージおよび他のステージの組合せを介して、パイプライン21によって実施される処理を分割することが可能であることに留意されたい。さらに、述語制御回路143は、簡略化のため図5では1つのパイプライン21に結合されて示されているが、好ましい実施形態においては、各パイプライン21が同様に述語制御回路143に結合されることに留意されたい。
【0045】
図6に示すように、従来のシステム15のレジスタファイル71と同様に、処理システム110はレジスタファイル144を備える。レジスタファイル114は、図6において、1つのパイプライン21に結合されて示されているが、好ましい実施形態において、各パイプライン21が同様にレジスタファイル144に結合されることに留意されたい。
【0046】
図7を参照して、レジスタファイル144は、述語値をレジスタ73に書込むための少なくとも1つの書込みポート77を備える。図7は、簡略化のために、2つの書込みポートしか図示していないが、レジスタファイル144は、述語値を生成しうる各パイプライン21の各ステージ25、28、32、および/または35毎に少なくとも1つの書込みポート77を備えることが好ましい。レジスタファイル144はまた、レジスタファイル73に含まれる述語値を読出すための、少なくとも1つの読出しポート84も備える。しかし、従来のレジスタファイル71とは異なり、好ましい実施形態のレジスタファイル144は、各パイプライン21毎に1つの読出しポート84しか備えない。従って、図6に示すパイプライン21は、好ましい実施形態において、1つの読出しポート84にしか結合されない。所望であれば、図6のパイプライン21は、複数の読出しポート84に結合してもよいが、読出しポート84が複数になると、システム110の実施に必要な回路の量および回路の複雑さが増大してしまい、これは望ましくない。
【0047】
さらに、図6に示すように、処理システム110は、システム110のタイミングを制御するために使用されるラッチ54、58、64、および68を備える。この点に関して、当技術分野で既知の技術を介して、ラッチ54、58、64、および68はそれぞれ命令をラッチし処理回路52、56、62、および66に提供する。従来のシステム15と同様に、ラッチ54、58、64、および68は、各ステージ25、28、32、および35における処理回路52、56、62、および66それぞれが、一度に1つの命令のみを処理するように、制御されることが好ましい。さらに、図6に示すパイプライン21は、各処理回路52、56、62、および66毎に1つの命令として、4つまでの命令を同時に処理することができる。しかし、他の実施形態において、任意の処理回路52、56、62、および/または68が、一度に複数の命令を同時に処理することも可能である。
【0048】
処理回路52は、レジスタステージ25において命令を処理しているとき、従来のシステム15に関して上述したように、命令に関連付けられたレジスタ73(図7)に含まれる述語値を利用するように構成することができる。この述語値は、図2の処理回路52への述語データの提供に関して上述したのと同じ技法を介して、処理回路52に提供される。つまり、命令の述語レジスタ識別子は、接続82を介してレジスタファイル144に送信される。読出しポート84(図7)は、レジスタ識別子を受信して、その受信した識別子によって識別されるレジスタ73に含まれる値を読出す。そして、この値は、接続91を介して選択回路94に送信される。
【0049】
述語制御回路143は、図2の述語制御回路22と同様に、システム110によって処理される命令の述語制御レジスタ識別子を分析し、選択回路94が受信したいずれの値を選択して送信するべきかを示す制御信号を、選択回路94に送信するよう設計される。つまり、述語制御回路143は、接続75、86、および/または他のステージおよび/またはパイプライン21からの他の接続を介してレジスタファイル144に送信されている新しい述語値がレジスタステージ25における命令の述語ステータスに影響を及ぼす可能性のない場合、少なくとも1つの制御信号を選択回路94に送信して、選択回路94に接続91から現在受信した値を選択させる。レジスタファイル144に現在送信された新しい述語値がレジスタステージ25における命令の述語ステータスに影響を及ぼしうる場合には、述語制御回路143からの上記制御信号は、選択回路94に代わりに新しい述語値を選択させる。
【0050】
選択回路94は、接続97を介して選択された値をORゲート98に送信すると共に、選択回路94が受信した他の値を無視する。本明細書の文脈において、値のさらなる処理をしない回路が値を受信したとき、値は無視される。選択回路94によって選択される値は、以下「適格(qualifying)レジスタステージ述語値(QPreg)」と呼ぶことに留意されたい。
【0051】
述語制御回路143からの悲観的制御信号は、QPregと共にORゲート98に送信される。悲観的制御信号は、レジスタステージ25における命令の述語ステータスに影響を及ぼしうる述語データを別の命令が後に生成する可能性があることを述語制御回路143が検出した場合に、アサートされる。従って、システム110におけるORゲート98は従来のシステム15と同様に動作し、ORゲート98の出力は、アサートされている場合、レジスタステージ25における命令をイネーブルされているものとして処理するべきであることを示す。デアサートされている場合、ORゲート98の出力は、レジスタステージ25における命令をディスエーブルされているものとして処理するべきであることを示す。
【0052】
図6に示すように、QPregは、接続97に結合された接続164を介して選択回路162に提供される。選択回路162はまた、接続76、85、および他のステージおよび/またはパイプライン21からの任意の他の同様な接続(図示せず)(すなわち、ラッチされて、レジスタファイル144に提供されることになる新しい述語値を送信する任意の他の接続)を介して送信される新しい述語値も受信する。
【0053】
図6に示すパイプライン21のレジスタステージ25における命令がストールされない場合、述語制御回路143は、選択回路162が受信した上記の値のいずれを選択してラッチ172に送信するべきかを示す制御信号を、選択回路162に送信する。ここで、述語制御回路143は、選択回路162の受信した新しい述語値(例えば、接続76および85から受信した値)のいずれがレジスタステージ25に現在ある命令の述語ステータスを示すかを検出する。命令の述語レジスタ識別子によって識別されるレジスタ73に向かっている場合には、新しい述語値は命令の述語ステータスを示す。例えば、接続75を介して送信される新しい述語値が、レジスタステージ25における命令の述語レジスタ識別子によって識別されたレジスタ73に向かっている場合、接続75から選択回路162が受信した値は、上記命令の述語ステータスを示す。
【0054】
選択回路162が受信した新しい述語値のうちのいずれか1つがレジスタステージ25における命令の述語ステータスを表す場合、述語制御回路143は、その1つの新しい述語値を選択すべきであることを示す制御信号を、選択回路162に送信する。それに応答して、選択回路162は上記新しい述語値を選択して、この新しい述語値をラッチ172に送信する。一方、選択回路162が受信した新しい述語値のいずれもレジスタステージ25における命令の述語ステータスを示さない場合、述語制御回路143は、接続164からのQPregを選択すべきであることを示す制御信号を選択回路162に送信し、それに応答して、選択回路162はQPregをラッチ172に送信する。選択回路162が、ラッチ172に送信するために選択した値は、本明細書において「適格実行ステージ述語値(QPexe)」と呼ばれる。
【0055】
ラッチ172は、クロック信号の次のアクティブエッジにおいて、QPexeをORゲート106に送信する。これは、レジスタステージ25における命令が実行ステージ28に入るのと同じアクティブエッジであるべきである。ORゲート106はまた、述語制御回路143から悲観的制御信号も受信する。悲観的制御信号は、任意のパイプライン21における命令が実行ステージ28に現在ある命令の述語ステータスに後に影響を及ぼしうる述語データを生成する可能性があることを述語制御回路143が検出した場合、アサートされる。従って、ORゲート98の出力と同様に、ORゲート106の出力は、ラッチ172からの述語値が実行ステージ28における命令がイネーブルされていることを示す(すなわち、好ましい実施形態において、ラッチ172からの述語値がアサートされている)場合、または述語制御回路143からの悲観的制御信号がアサートされている場合に、アサートされる。ORゲート106の出力がアサートされている場合、処理回路56は、処理回路56における命令をイネーブルされているものとして処理するよう設計される。反対に、ORゲート106の出力がデアサートされている場合、処理回路56は、処理回路56における命令をディスエーブルされているものとして処理するよう設計される。
【0056】
しかし、選択回路162がQPregを受信したとき、実行ステージ28における命令がストールされている場合、レジスタステージ25における命令は、クロック信号の次のエッジにおいて実行ステージ28に入るべきではなく、システム110の動作は、上述したものとはわずかに異なる。つまり、実行ステージ28における命令がストールされている場合、選択回路162は、実行ステージ28における命令がストールされていない場合に可能なように、QPreg(すなわち、接続164上の信号)を選択しない。選択回路162は、代わりに、述語制御回路143からの制御信号に基づいて、フィードバック接続177を介して現在送信されたフィードバック値を選択するか、または、接続85またはレジスタファイル144に提供されかつ実行ステージ28よりも後のステージ32または35からラッチされることになる新しい述語値を送信する任意の他の同様な接続(図示せず)から、選択回路162に現在送信された新しい述語値の1つを選択する。
【0057】
ここで、上記新しい述語値の1つが実行ステージ28における命令の述語ステータスを表す場合、述語制御回路143から選択回路162に送信された制御信号は、その1つの新しい述語値を選択するべきであることを示す。このような新しい述語値が選択回路162に送信されていない場合は、述語制御回路143から選択回路162に送信される制御信号は、フィードバック接続177におけるフィードバック値を代わりに選択するべきであることを示す。
【0058】
選択回路162は、述語制御回路143からの制御信号によって示される値を選択し、この選択した値をラッチ172に送信する。次に、述語制御回路143から送信された悲観的制御信号がORゲート106の出力に影響を及ぼさない場合、クロック信号の次のアクティブエッジにおいて、この値が処理回路56に提供される。上述したように、実行ステージ28における命令の述語ステータスに後に影響を及ぼしうる述語データを命令が生成する可能性のあることを述語制御回路162が検出する場合に、悲観的制御信号はアサートされる。
【0059】
その結果、命令が最初に実行ステージ28にステップインすると、接続回路162が命令の述語ステータスを示すより新しい述語値を接続76、85、または他の同様な接続から受信していない場合、QPreg(すなわち、接続164を介して送信される値)が選択されて、ORゲート106に送信される。選択回路162が命令の述語ステータスを示す新しい述語値を受信すると、QPregの代わりに、上記新しい述語値がORゲート106に送信される。
【0060】
命令が実行ステージ28にある間にストールされると、選択回路162が命令の述語ステータスを示すより新しい述語値を接続85または実行ステージ28の後の(任意のパイプライン21の)ステージ32または35に結合された他の同様な接続から受信していない場合、命令が処理回路56にステップインしたときに選択された上記の値が継続して選択され、選択回路162、ラッチ172、およびフィードバック接続177を介してORゲート106に送信される。選択回路162がこのような新しい述語値を受信する場合、この新しい述語値が代わりにORゲート106に送信される。選択回路162が命令の述語ステータスを示す別の新しい述語値を接続85または実行ステージ28の後の(任意のパイプライン21の)ステージ32または35に結合された他の同様な接続から受信していない場合、上記新しい述語値が継続して選択されて、選択回路162、ラッチ172、およびフィードバック接続177を介してORゲート106に送信される。
【0061】
命令の述語ステータスを示すより新しい述語値が受信されない限りフィードバック接続177からの値を継続して選択し送信するというこのプロセスは、実行ステージ28における命令に対するストールが解除されるまで繰り返される。これが生じると、別の命令が実行ステージ28にステップインし、上記プロセス全体がその他の命令について繰り返される。従って、ORゲート106は、実行ステージ28における命令の述語ステータスを示す最新の使用可能な述語値を常に受信するはずである。
【0062】
本発明の処理回路56は、実行ステージ28における命令の述語ステータスを表すデータを、従来のシステム15の処理回路56よりも速くORゲート106から受信することに留意されたい。これは、命令が実行ステージ28にステップする際に、レジスタファイル144のデータが実際に選択回路162によって読出されないためである。
【0063】
さらに、実行ステージ28における命令の述語ステータスを判断するために実行ステージ28がQPregを用いる仕方と同様に、後の各段階32および/または35はステージの命令の述語ステータスを判断するために、先行ステージについて選択された最新の適格述語値(QPxxx)を使用することが可能である。用語QPxxxは、任意のステージ25、28、32、または35によって選択された適格述語値を表し、従ってQPreg、QPexe、QPdet、またはQPwrtを表しうる。ステージ28、32、および35は、各先行ステージ25、28、および32について選択された適格述語値を利用することができるので、パイプライン21の1つのステージ25、28、32、または35だけが実際にレジスタファイル144を読出す必要がある。残りの後のステージ(もしあれば)は、1つのステージ25、28、32、または35によって読出された結果から導き出されたデータを利用することができる。従って、レジスタファイル144の読出しポート84に結合する必要のあるものは、1つのゲート25、28、32、または35のみであるため、レジスタファイル144における読出しポート84の数は低減される。これによって、システム110の実施のコストおよび複雑さは相当に低減される。
【0064】
本発明の精神および原理から実質的に逸脱せずに、本発明の上記実施形態に、多くの変形および変更を行いうる。かかるすべての変更および変形は、本開示および本発明の範囲内に含まれる。
【0065】
本発明は例として以下の実施形態を含む。
【0066】
(1) コンピュータプログラムの命令を処理するシステム(110)であって、
レジスタ(73)と、
コンピュータプログラム(107)の命令を実行するよう構成され、第1のステージ(25、28、32、35)および第2のステージ(25、28、32、35)を有するパイプライン(21)と、
前記レジスタ(73)から第1の述語値を読出すと共に、第2の述語値を受信するよう構成され、前記第1の述語値を前記第1のステージ(25、28、32、35)に送信すると共に、前記述語値のうちの1つを選択するように構成され、さらに前記選択された述語値を前記第2のステージ(25、28、32、35)に送信すると共に、その他の前記述語値を無視するよう構成される、回路(94、162)と、
を含むシステム。
【0067】
(2) 前記回路(94、162)によって選択された前記1つの述語値は前記第1の述語値である前記(1)に記載のシステム。
【0068】
(3) 前記回路(94、162)によって選択された前記1つの述語値は前記第2の述語値である前記(1)に記載のシステム。
【0069】
(4) 前記回路(94、162)は、前記第2のステージ(25、28、32、35)における命令がストールしているか否かを検出し、前記第2のステージ(25、28、32、35)における前記命令がストールされているか否かに基づいて、前記述語値の前記選択された1つを選択するようさらに構成される、前記(1)に記載のシステム。
【0070】
(5) レジスタ(73)と、
コンピュータプログラム(107)の命令を実行するよう構成され、第1のステージ(25、28、32、35)および第2のステージ(25、28、32、35)を有するパイプライン(21)と、
前記レジスタ(73)および前記第1のステージ(25、28、32、35)に結合され、少なくとも1つは前記レジスタ(73)から受信したものである第1の複数の述語値を同時に受信するよう構成され、前記第1の複数の述語値のうち1つを選択するよう構成され、さらに前記第1の複数の述語値のうち前記選択されたものを前記第1のステージ(25、28、32、35)に送信し、前記第1の複数の述語値の前記選択されたものを接続(164)を介して送信するよう構成される第1の回路(94)と、
前記接続(164)および前記第2のステージ(25、28、32、35)に結合され、前記接続(164)を介して送信された前記1つの述語値を含む第2の複数の述語値を同時に受信するよう構成され、前記第2の複数の述語値のうち1つを選択し、前記第2の複数の述語値のうち前記選択されたものを前記第2のステージ(25、28、32、35)に送信するよう構成される第2の回路(162)と、
を含むシステム(110)。
【0071】
(6) 前記第2の回路(162)は前記第2の複数の述語値の前記選択されたものを含む第3の複数の述語値を同時に受信するようさらに構成され、さらに前記第3の複数の述語値のうち一つを選択し、前記第3の複数の述語値のうち前記選択されたものを前記第2のステージ(25、28、32、35)に送信するよう構成される、前記(5)に記載のシステム。
【0072】
(7) コンピュータプログラムの命令を処理する方法であって、
第1のステージ(25、28、32、35)および第2のステージ(25、28、32、35)を有するパイプライン(21)を提供するステップと、
述語値を生成するステップと、
該述語値をレジスタ(73)に書込むステップと、
命令を受信するステップと、
制御信号を受信するステップと、
前記命令に含まれるレジスタ識別子に基づいて、前記レジスタ(73)から前記述語値を読出すステップと、
該読出しステップにおいて読出された前記述語値を前記パイプライン(21)の前記第1のステージ(25、28、32、35)に送信するステップと、
前記第1のステージ(25、28、32、35)に送信された前記述語値に基づいて、前記パイプライン(21)の前記第1のステージ(25、28、32、35)を介して前記命令を処理するステップと、
新しい述語値を受信するステップと、
前記制御信号に基づいて、前記新しい述語値と前記読出しステップにおいて読出された前記述語値の中から選択するステップと、
該選択ステップにおいて選択された前記述語値を前記パイプライン(21)の前記第2のステージ(25、28、32、35)に送信するステップと、
前記選択ステップにおいて選択された前記述語値に基づいて、前記第2のステージ(25、28、32、35)を介して前記命令を処理するステップと、
を含む方法。
【0073】
(8) 前記選択ステップにおいて選択される前記述語値は前記新しい述語値であり、前記選択するステップは前記読出しステップにおいて読出された前記述語値を無視するステップをさらに含む、前記(7)に記載の方法。
【0074】
(9) 前記新しい述語値が前記命令の述語ステータスを示すか否かを検出するステップと、
該検出するステップに基づいて、前記選択するステップを実施するステップと、
をさらに含む前記(7)に記載の方法。
【0075】
(10) 第2の新しい述語値を受信するステップと、
該第2の新しい述語値と前記第2の回路(162)に送信される前記述語値の中から選択するステップと、
前記命令がストールされていることを検出するステップと、
前記検出するステップに応答して、前記第2の新しい述語値と前記第2の回路(162)に送信される前記述語値の中から選択するステップを実施するステップと、
をさらに含む前記(7)に記載の方法。
【0076】
【発明の効果】
本発明によると、レジスタファイルに対する読出しに必要な読出しポートの数を最小にすることができ、また、各ステージに更新された述語データを提供するのに要する時間量を最小に抑えることができる。
【図面の簡単な説明】
【図1】従来の処理システムを示すブロック図である。
【図2】図1に示す処理パイプラインのより詳細な図を示すブロック図である。
【図3】図2に示すレジスタファイルのより詳細な図を示すブロック図である。
【図4】本発明による処理システムを採用したコンピュータシステムを示すブロック図である。
【図5】図4の処理システムを示すブロック図である。
【図6】図5に示す処理パイプラインのより詳細な図を示すブロック図である。
【図7】図6に示すレジスタファイルのより詳細な図を示すブロック図である。
【符号の説明】
21 パイプライン
25、28、32、35 第1のステージ、第2のステージ
73 レジスタ
94 第1の回路
107 コンピュータプログラム
162 第2の回路
164 接続
Claims (3)
- コンピュータプログラムの命令を処理するシステムであって、
レジスタと、
コンピュータプログラムの命令を実行するよう構成され、第1のステージおよび第2のステージを有するパイプラインと、
前記レジスタから第1の述語値を読出すと共に、第2の述語値を受信するよう構成され、前記第2のステージにおける命令がストールしているか否かを検出するよう構成され、前記レジスタから読み出された前記第1の述語値を前記第1のステージに送信すると共に、前記第2のステージにおける前記命令がストールされているか否かに基づいて、前記第2の述語値および前記レジスタから読み出された前記第1の述語値の中から選択するように構成され、さらに前記選択された述語値を前記第2のステージに送信するよう構成される、回路と、
を含むシステム。 - レジスタと、
コンピュータプログラムの命令を実行するよう構成され、第1のステージおよび第2のステージを有するパイプラインと、
前記レジスタおよび前記第1のステージに結合され、少なくとも1つは前記レジスタから受信したものである第1の複数の述語値を同時に受信するよう構成され、前記第1の複数の述語値のうち1つを選択するよう構成され、さらに前記第1の複数の述語値のうち前記選択されたものを前記第1のステージに送信し、前記第1の複数の述語値の前記選択されたものを接続を介して送信するよう構成される第1の回路と、
前記接続および前記第2のステージに結合され、前記接続を介して送信された前記1つの述語値を含む第2の複数の述語値を同時に受信するよう構成され、前記第2の複数の述語値のうち1つを選択し、前記第2の複数の述語値のうち前記選択されたものを前記第2のステージに送信するよう構成され、前記第2のステージにおける命令がストールしているか否かを検出し、前記第2のステージにおける前記命令がストールされているか否かに基づいて、前記第2の複数の述語値のうち前記1つを選択するようさらに構成される第2の回路と、
を含むシステム。 - コンピュータプログラムの命令を処理する方法であって、
第1のステージおよび第2のステージを有するパイプラインを提供するステップと、
述語値を生成するステップと、
該述語値をレジスタに書込むステップと、
命令を受信するステップと、
制御信号を受信するステップと、
前記命令に含まれるレジスタ識別子に基づいて、前記レジスタから前記述語値を読出すステップと、
該読出しステップにおいて前記レジスタから読出された前記述語値を前記パイプラインの前記第1のステージに送信するステップと、
前記第1のステージに送信された前記述語値に基づいて、前記パイプラインの前記第1のステージを介して前記命令を処理するステップと、
新しい述語値を受信するステップと、
前記命令がストールされているか否かを検出するステップと、
前記制御信号に基づいて、前記新しい述語値と前記読出しステップにおいて前記レジスタから読出された前記述語値との中から選択するステップであって、該検出ステップに基づくステップと、
該選択ステップにおいて選択された前記述語値を前記パイプラインの前記第2のステージに送信するステップと、
該選択ステップにおいて選択された前記述語値に基づいて、前記第2のステージを介して前記命令を処理するステップと、
を含む方法。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US09/490395 | 2000-01-24 | ||
US09/490,395 US6622238B1 (en) | 2000-01-24 | 2000-01-24 | System and method for providing predicate data |
Publications (3)
Publication Number | Publication Date |
---|---|
JP2001209534A JP2001209534A (ja) | 2001-08-03 |
JP2001209534A5 JP2001209534A5 (ja) | 2005-06-02 |
JP3756410B2 true JP3756410B2 (ja) | 2006-03-15 |
Family
ID=23947860
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2001002039A Expired - Fee Related JP3756410B2 (ja) | 2000-01-24 | 2001-01-10 | 述語データを提供するシステム |
Country Status (2)
Country | Link |
---|---|
US (2) | US6622238B1 (ja) |
JP (1) | JP3756410B2 (ja) |
Families Citing this family (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6622238B1 (en) * | 2000-01-24 | 2003-09-16 | Hewlett-Packard Development Company, L.P. | System and method for providing predicate data |
US6799262B1 (en) | 2000-09-28 | 2004-09-28 | International Business Machines Corporation | Apparatus and method for creating instruction groups for explicity parallel architectures |
US6912647B1 (en) | 2000-09-28 | 2005-06-28 | International Business Machines Corportion | Apparatus and method for creating instruction bundles in an explicitly parallel architecture |
US6883165B1 (en) | 2000-09-28 | 2005-04-19 | International Business Machines Corporation | Apparatus and method for avoiding deadlocks in a multithreaded environment |
US6886094B1 (en) * | 2000-09-28 | 2005-04-26 | International Business Machines Corporation | Apparatus and method for detecting and handling exceptions |
US7861071B2 (en) * | 2001-06-11 | 2010-12-28 | Broadcom Corporation | Conditional branch instruction capable of testing a plurality of indicators in a predicate register |
US7143270B1 (en) | 2004-01-30 | 2006-11-28 | Hewlett-Packard Development Company, L.P. | System and method for adding an instruction to an instruction set architecture |
US20060200654A1 (en) * | 2005-03-04 | 2006-09-07 | Dieffenderfer James N | Stop waiting for source operand when conditional instruction will not execute |
US9600280B2 (en) * | 2013-09-24 | 2017-03-21 | Apple Inc. | Hazard check instructions for enhanced predicate vector operations |
US9928069B2 (en) | 2013-12-20 | 2018-03-27 | Apple Inc. | Predicated vector hazard check instruction |
US10133300B2 (en) | 2014-01-08 | 2018-11-20 | Microsoft Technology Licensing, Llc | Control of predication across clock domains |
TWI586107B (zh) * | 2016-05-09 | 2017-06-01 | Timing Error Detection and Correction Device and Its Normal Timing Design Method |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5860017A (en) | 1996-06-28 | 1999-01-12 | Intel Corporation | Processor and method for speculatively executing instructions from multiple instruction streams indicated by a branch instruction |
US5859999A (en) | 1996-10-03 | 1999-01-12 | Idea Corporation | System for restoring predicate registers via a mask having at least a single bit corresponding to a plurality of registers |
US6353883B1 (en) * | 1998-08-04 | 2002-03-05 | Intel Corporation | Method and apparatus for performing predicate prediction |
US6442678B1 (en) * | 1998-12-31 | 2002-08-27 | Intel Corporation | Method and apparatus for providing data to a processor pipeline |
US6622238B1 (en) * | 2000-01-24 | 2003-09-16 | Hewlett-Packard Development Company, L.P. | System and method for providing predicate data |
-
2000
- 2000-01-24 US US09/490,395 patent/US6622238B1/en not_active Expired - Lifetime
-
2001
- 2001-01-10 JP JP2001002039A patent/JP3756410B2/ja not_active Expired - Fee Related
-
2003
- 2003-08-27 US US10/648,960 patent/US7213132B2/en not_active Expired - Lifetime
Also Published As
Publication number | Publication date |
---|---|
US20040123082A1 (en) | 2004-06-24 |
US7213132B2 (en) | 2007-05-01 |
US6622238B1 (en) | 2003-09-16 |
JP2001209534A (ja) | 2001-08-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6115808A (en) | Method and apparatus for performing predicate hazard detection | |
JP3659877B2 (ja) | ライトアフターライトデータハザードにより生じるエラーを効率的に防止するためのスーパースケーラ処理システム及び方法 | |
KR960001274B1 (ko) | 트랩 및 스톨 제어기능을 갖는 병렬처리형 프로세서 시스템 | |
US5799163A (en) | Opportunistic operand forwarding to minimize register file read ports | |
JP2006012163A (ja) | マルチレベル・レジスタ・ファイルを有するディジタル・データ処理装置 | |
US6223278B1 (en) | Method and apparatus for floating point (FP) status word handling in an out-of-order (000) Processor Pipeline | |
JP3756410B2 (ja) | 述語データを提供するシステム | |
JP3773769B2 (ja) | 命令のインオーダ処理を効率的に実行するスーパースケーラ処理システム及び方法 | |
US6539471B2 (en) | Method and apparatus for pre-processing instructions for a processor | |
JP3756409B2 (ja) | データハザード検出システム | |
US20070260857A1 (en) | Electronic Circuit | |
JP3808314B2 (ja) | 長レイテンシ命令に対する命令属性およびステータス情報を示す処理システムおよび方法 | |
US6711670B1 (en) | System and method for detecting data hazards within an instruction group of a compiled computer program | |
JPH1185513A (ja) | プロセッサ | |
JP4465081B2 (ja) | Vliwプロセッサにおける効率的なサブ命令エミュレーション | |
US6651164B1 (en) | System and method for detecting an erroneous data hazard between instructions of an instruction group and resulting from a compiler grouping error | |
US8051275B2 (en) | Result path sharing between a plurality of execution units within a processor | |
JP2001209538A (ja) | データハザードを検出するシステム | |
US6769057B2 (en) | System and method for determining operand access to data | |
EP1050805B1 (en) | Transfer of guard values in a computer system | |
US6032249A (en) | Method and system for executing a serializing instruction while bypassing a floating point unit pipeline | |
US9135006B1 (en) | Early execution of conditional branch instruction with pc operand at which point target is fetched | |
US11036510B2 (en) | Processing merging predicated instruction with timing permitting previous value of destination register to be unavailable when the merging predicated instruction is at a given pipeline stage at which a processing result is determined | |
US20040153631A1 (en) | Method to handle instructions that use non-windowed registers in a windowed microprocessor capable of out-of-order execution | |
WO2000065452A1 (en) | Pipelined access to single ported cache |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20040810 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20040810 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20051209 |
|
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: 20051220 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20051221 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
LAPS | Cancellation because of no payment of annual fees |