JP2001117772A - コンピュータ・プログラムのハザードを検出するシステム - Google Patents

コンピュータ・プログラムのハザードを検出するシステム

Info

Publication number
JP2001117772A
JP2001117772A JP2000310363A JP2000310363A JP2001117772A JP 2001117772 A JP2001117772 A JP 2001117772A JP 2000310363 A JP2000310363 A JP 2000310363A JP 2000310363 A JP2000310363 A JP 2000310363A JP 2001117772 A JP2001117772 A JP 2001117772A
Authority
JP
Japan
Prior art keywords
instruction
instructions
write
register
control mechanism
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.)
Granted
Application number
JP2000310363A
Other languages
English (en)
Other versions
JP2001117772A5 (ja
JP3776302B2 (ja
Inventor
Charles Soltis Donald Jr
ドナルド・チャールズ・ソルティス・ジュニア
Lee Arnold Ronney
ロニー・リー・アーノルド
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
HP Inc
Original Assignee
Hewlett Packard Co
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Hewlett Packard Co filed Critical Hewlett Packard Co
Publication of JP2001117772A publication Critical patent/JP2001117772A/ja
Publication of JP2001117772A5 publication Critical patent/JP2001117772A5/ja
Application granted granted Critical
Publication of JP3776302B2 publication Critical patent/JP3776302B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3853Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution of compound instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3838Dependency mechanisms, e.g. register scoreboarding

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Advance Control (AREA)

Abstract

(57)【要約】 【課題】コンピュータ・プログラム内のデータ・ハザー
ドを検出する。 【解決手段】処理システムに伝送される命令グループ内
のデータ・ハザードを検出するスーパースカラー処理シ
ステムは、メモリ、複数のパイプライン、IDUおよび
制御機構を備える。メモリは、複数のレジスタにそれぞ
れ対応する複数のエントリを有する。IDUは、複数の
命令を含む命令グループを受け取り、該命令グループの
命令を複数のパイプラインに伝送する。制御機構は、該
1つの命令に関連するレジスタに対応するメモリのエン
トリを識別し、該エントリを分析し、該命令グループ内
の他の命令が該レジスタに関連することを該エントリが
示すという判断に応答して、警告信号を送る。該警告信
号に応答して警告信号を生成し、ユーザに命令グループ
の2つの命令がリードアフターライト、ライトアフター
ライトまたはライトアフターリードのデータハザードを
規定するということを知らせることができる。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、一般的にはコンピ
ュータ処理技術に関し、より具体的には、コンピュータ
・プログラムの命令グループ内のデータ・ハザードを検
出するスーパースカラー処理システムおよびその方法に
関する。
【0002】
【従来の技術】スーパースカラー処理としても知られて
いる並列処理は、コンピュータ・プログラムの命令を処
理するのに必要な時間量を減少させるために開発されて
きた。並列処理においては、複数の命令を同時に実行す
る少なくとも2つのパイプラインが定義される。並列処
理の1つのタイプは、アウトオブオーダー(out-of-orde
r)処理である。アウトオブオーダー処理においては、プ
ロセッサのそれぞれのパイプラインは、他のパイプライ
ンからは独立して同時に異なる命令を実行する。
【0003】アウトオブオーダー処理においては、命令
は、プロセッサによって受け取られる順序と同じ順序で
パイプラインに入力されるとは限らない。更に、典型的
には、命令が異なればそれを実行する時間量が異なるの
で、たとえある1つの命令がそのそれぞれのパイプライ
ンに先に入力されていたとしても、他の命令が、当該1
つの命令よりも前に実行を完了するということがあり得
る。従って、命令は、プロセッサ内の複数パイプライン
によって受け取られる順序と同じ順序で実行されるとは
必ずしも限らない。その結果、アウトオブオーダー処理
の場合、リード・アフター・ライト(read-after-writ
e:書込み後の読み出し)のデータ・ハザードおよびライ
ト・アフター・ライト(write-after-write:書込み後の
書込み)のデータ・ハザードによって起こるエラーを防
止する複雑さ(詳細は後述)が比較的大きい。
【0004】プロセッサによって実行されるべき1つの
命令が、別の命令の実行によって抽出または生成された
データを実行中に利用する時、"リードアフターライト
のデータ依存性"が存在する。上記別の命令が実行する
前に上記1つの命令が実行すると、実行中に不正データ
を利用することがあるので、エラーが発生することがあ
る。結果として、エラーを防止するためには、上記別の
命令の実行から必要なデータが利用可能となるまで、上
記別の命令の実行によって抽出または生成されたデータ
を利用する上記1つの命令が実行しない、ということを
保証するステップをとらなければならない。リードアフ
ターライトのデータ依存性が存在し、かつそのようなス
テップがとられなければ、リードアフターライトのデー
タ依存性が不正データの利用となることがあり、よっ
て"リードアフターライトのデータ・ハザード(data ha
zard)"が存在する。
【0005】一方、実行中に、相対的に若い命令によっ
て書き込まれるレジスタまたはメモリ位置に、相対的に
古い命令がデータを書き込み、該古い命令が、若い命令
によって書き込まれた有効なデータを不正に上書きする
ことがある時、"ライトアフターライトのデータ・ハザ
ード"が存在する。ここで、ある命令が、別の命令の後
にプロセッサによって受け取られた時、その命令は、当
該別の命令より"若い"という。反対に、ある命令が、別
の命令より前にプロセッサによって受け取られた時、そ
の命令は、当該別の命令より"古い"という。
【0006】ライトアフターライトのデータ・ハザード
の1つの例として、第1の命令が、データを抽出して該
抽出したデータを特定のレジスタに書き込むロード命令
であると仮定する。抽出すべきデータがローカル的に利
用可能でない場合、データを抽出するのに要する時間は
比較的長い。従って、第1の命令より若い命令である第
2の命令が、第1の命令が実行した後ではあるが該第1
の命令によって抽出されたデータがレジスタに書き込ま
れるより前に、同じレジスタにデータを書き込む可能性
がある。そのようなケースでは、第2の命令によってレ
ジスタに書き込まれたデータが、第1の命令によって抽
出されたデータによって上書きされることがある。その
結果、レジスタは不正データを含み、後の命令がレジス
タのデータを使用する時エラーが発生する可能性があ
る。
【0007】リードアフターライトのデータ・ハザード
およびライトアフターライトのデータ・ハザードによる
エラーを防止するため、大部分のアウトオブオーダー並
列プロセッサは制御機構を使用する。すなわち、制御機
構は、それぞれの命令の実行中に、処理されつつある命
令(以下、"ペンディング(pending)命令"と呼ぶ)が、
より古い命令の実行によって生成されるデータを必要と
するか否かを判断する。必要としていると判断すれば、
制御機構は、次に、必要とされるデータが少なくとも利
用可能となる時点までに当該古い命令の処理が完了した
か否かを判断する。このデータがなお利用可能でなけれ
ば、制御機構は、必要なデータが利用可能となるまでペ
ンディング命令の処理をストール(stall、すなわち一
時的に機能停止)し、こうしてリードアフターライトの
データ・ハザードによるエラーを防止する。
【0008】さらに制御機構は、古い命令からのデータ
(すなわち古い命令によって抽出または生成されるデー
タ)が、ペンディング命令からのデータと同じレジスタ
または同じメモリ位置に書き込まれることになっている
か否かを判断する。もしも同じレジスタまたは同じメモ
リ位置に書き込まれるならば、制御機構は、古い命令か
らのデータがそのレジスタまたはメモリ・アドレスに書
き込まれるまでペンディング命令をストールし、それに
よって、ライトアフターライトのデータ・ハザードによ
るエラーを防止する。このようにして、制御機構は、リ
ードアフターライトのデータ・ハザードまたはライトア
フターライトのデータ・ハザードによるエラーを防止す
るため、ペンディング命令をストールさせることができ
る。
【0009】ペンディング命令のストールは、通常、ペ
ンディング命令を実行しているパイプラインに送られる
ストール信号をアサートすることによって達成される。
アサートされたストール信号に応答して、パイプライン
は、制御機構によってストール信号がデアサート(deas
sert)されるまでペンディング命令の実行を停止するよ
う設計される。リードアフターライトのデータ・ハザー
ドもライトアフターライトのデータ・ハザードももはや
存在しなくなれば、制御機構はストール信号をデアサー
トし、それに応じてパイプラインは、ペンディング命令
の処理を再開する。リードアフターライトのデータ・ハ
ザードおよびライトアフターライトのデータ・ハザード
による潜在的なエラーを検出して防止するのに必要とさ
れる制御機構は、アウトオブオーダー・プロセッサにお
いては比較的複雑であり、パイプラインの数が増加する
につれ、制御機構の複雑さは劇的に増加する。
【0010】この結果、多くの従来の並列プロセッサ、
特に多数のパイプラインを有するプロセッサは、上述の
アウトオブオーダーのタイプの処理方式の代わりにイン
オーダー(in-order)タイプの処理方式を使用する。イン
オーダー・タイプの処理方式においては、異なるパイプ
ラインによって処理される命令は、システムクロック信
号の所定のエッジに従ってパイプラインの複数の段階を
1つずつ実行される。すなわち、1つのパイプラインに
おける命令の処理は、通常複数の段階に分割され、パイ
プラインのそれぞれの段階は、異なる命令を同時に処理
する。
【0011】例えば、それぞれのパイプラインによって
実行される処理は、レジスタ段階、実行段階、例外検出
段階および書込み段階に分割される。レジスタ段階の
間、命令の実行に必要なオペランドが取得される。オペ
ランドが取得されると、命令の処理は、命令が実行され
る実行段階に入る。命令が実行された後、命令の処理は
例外検出段階に入り、そこで、例えばデータの信憑性が
無いことを示すことがある実行中のオーバーランという
ような条件が検査される。例外検出段階が完了すると書
込み段階に入り、そこで、実行段階の結果がレジスタに
書き込まれる。
【0012】インオーダー処理の重要な特徴は、"発行
グループ"のそれぞれの命令が、同時にそれぞれの段階
を1つずつ実行する、という点にある。ここで、"発行
グループ(issue group)"は、単一プロセッサ内で異なる
パイプラインの同じ段階によって同時に(すなわち同一
クロック・サイクルの間に)処理される命令セット、と
定義される。例えば、従来技術において典型的に実施さ
れているように、それぞれのパイプラインのそれぞれの
段階が一度に1つの命令を処理すると仮定する。(複数
の)パイプラインの例外検出段階における(複数の)命令
が第1の発行グループを形成し、(複数の)パイプライ
ンの実行段階における(複数の)命令が第2の発行グルー
プを形成する。更に、(複数の)パイプラインのレジス
タ段階における(複数の)命令が第3の発行グループを
形成する。ストールがないとすると、発行グループのそ
れぞれは、システム・クロック信号のアクティブ・エッ
ジに応答して次のそれぞれの段階に進む。言い換える
と、システム・クロック信号のアクティブ・エッジに応
答して、第1の発行グループは書込み段階に進み、第2
の発行グループは例外検出段階に進み、第3の発行グル
ープは実行段階に進む。
【0013】"アクティブ・エッジ(active edge)"
は、ここではシステムクロック信号の何らかのエッジを
示すものとして使用されており、このエッジの発生によ
り、パイプラインにおいてストールされていない命令の
それぞれは、そのパイプラインにおける次の処理段階に
前進するよう誘導される。例えば、プロセッサが、スト
ールされていない命令を、3クロック毎に次の処理段階
に進むよう設計されていると仮定する。この例では、ア
クティブ・エッジを、クロック信号の3番目毎の立ち上
がりエッジとして定義することができる。どのクロック
信号のエッジが"アクティブ・エッジ"として指定される
かは設計パラメータに基づいており、プロセッサごとに
変えることができる、という点に注意すべきである。
【0014】インオーダー処理の間は、1つの発行グル
ープにおけるいかなる命令も、別の発行グループの別の
命令を追い越さない。言い換えると、上記別の発行グル
ープの命令の後にパイプラインに入力された上記1つの
発行グループの命令は、当該別の発行グループの命令の
いずれかを処理する段階と同じ段階に入ることを禁止さ
れる。従って、いかなる時点においても、パイプライン
のそれぞれの段階は、ただ1つの発行グループからの命
令だけをそれぞれ処理している。異なる発行グループか
らの命令が相互に追い越すことが禁止されるので、パイ
プラインを制御して命令をストールし、リードアフター
ライトのデータ・ハザードおよびライトアフターライト
のデータ・ハザードによるエラーを防ぐ制御機構が大幅
に簡略化され、よってアウトオブオーダー処理に比べて
好ましいことが多い。
【0015】しかしながら、インオーダーのプロセッサ
のなかには、リードアフターライトのデータ・ハザード
およびライトアフターライトのデータ・ハザードによる
エラーが適切に防止されないものがある。この点に関し
て、プロセッサ・パイプラインによって処理される発行
グループを定義するのに命令分散ユニット(IDU:in
struction dispersal unit)がたびたび利用される。更
に、明示的並列命令今コンピューティング(EPIC:
explicitly parallel instruction computing)を利用
するプロセッサのようなインオーダー・プロセッサのな
かには、命令が、命令グループの形でIDUに送られるも
のがある。命令グループは命令のセットであり、該セッ
トの中の命令と命令の間にリードアフターライトのデー
タ・ハザードまたはライトアフターライトのデータ・ハ
ザードを持たないということを、プロセッサの外部のコ
ンパイラまたは他の何らかの装置によって保証された命
令セットである。
【0016】例えば、多くのコンパイラは、命令をIDU
に順次送る。命令をコンパイルする際、コンパイラは、
リードアフターライトのデータ・ハザードまたはライト
アフターライトのデータ・ハザードが存在するか否かを
を判断する。パフォーマンスを最適化するため、コンパ
イラは、IDUが一層効率的に命令を処理することができ
るように、ストップ・ビットを挿入することによって命
令グループを定義する。ここで使用される"ストップ・
ビット"は、処理システムに送られる命令と命令の間に
挿入されるビットであり、該ビットを適切にアサートま
たはデアサートして、命令グループの開始および終了を
示すことができる。
【0017】この点に関して、コンパイラは、連続的に
送られる複数の命令が1つの命令グループを定義する時
を判断し、グループの最初の命令の前およびグループの
最後の命令の後にストップ・ビットをアサートするよう
設計されることができる。その結果、アサートされたス
トップ・ビットとストップ・ビットの間の命令が1つの
命令グループを定義し、よってアサートされたストップ
・ビットとストップ・ビットの間のいかなる命令も、当
該ストップ・ビットとストップ・ビットの間の他の命令
とリードアフターライトのデータ・ハザードまたはライ
トアフターライトのデータ・ハザードを持つことがな
い、ということをIDUが認識することとなる。従って、I
DUは、発行グループを定義する際に、命令グループ内の
命令間におけるリードアフターライトのデータ・ハザー
ドおよびライトアフターライトのデータ・ハザードにつ
いて検査する必要がない。
【0018】
【発明が解決しようとする課題】しかしながら、コンパ
イラが命令グループの中にリードアフターライトのデー
タ・ハザードまたはライトアフターライトのデータ・ハ
ザードを持つ2つの命令を間違って含む場合に問題が発
生する。IDUは、同じ命令グループの中の命令間のリー
ドアフターライトのデータ・ハザードおよびライトアフ
ターライトのデータ・ハザードについて検査しないよう
に設計されることがあるので(検査する代わりに、スト
ップ・ビットのアサート/デアサートを当てにして、リ
ードアフターライトおよびライトアフターライトのデー
タ・ハザードを示すよう設計されることがある)、同じ
発行グループにおける2つの命令がそれらの間にリード
アフターライトのデータ・ハザードまたはライトアフタ
ーライトのデータ・ハザードを持つ、というような発行
グループを、IDUが不適切に定義することがある。同じ
発行グループの2つの命令の間にリードアフターライト
またはライトアフターライトのデータ・ハザードを持つ
ことは、インオーダー・プロセッサのアーキテクチャに
違反し、その結果、プロセッサ・パイプラインによる2
つの命令の処理中にエラーが発生する可能性が生じる。
【0019】このように、間にリードアフターライトの
データ・ハザードまたはライトアフターライトのデータ
・ハザードを持つ2つの命令を命令グループが含む場合
を判断するシステムおよび方法を提供するという産業上
の必要性が存在する。
【0020】
【課題を解決するための手段】本発明は、上述された従
来技術の不適切な点および欠点を克服する。本発明は、
一般的には、ある1つの命令グループが、同じ命令グル
ープの他の命令とデータ・ハザードを規定する命令を含
んでいるかどうかを判断するシステムおよび方法を提供
する。
【0021】アーキテクチャの観点から見れば、本発明
のシステムは、メモリ、複数のパイプライン、命令分散
ユニット(IDU)、および制御機構を使用する。メモリ
は、複数のレジスタにそれぞれ対応する複数のエントリ
を有する。IDUは、複数の命令を含む命令グループを受
け取り、該命令グループの命令を複数のパイプラインに
送る。制御機構は、前記命令のうちの1つを分析し、前
記1つの命令に関連するレジスタに対応するメモリのエ
ントリを識別する。その後、制御機構は、エントリを分
析して、前記命令グループ内の他の命令が前記レジスタ
に関連するということを前記エントリが示すという制御
機構の判断に応答して、警告信号を送る。警告信号に応
答して警告メッセージを生成し、ユーザに、命令グルー
プの2つの命令がリードアフターライトまたはライトア
フターライトのデータ・ハザードを規定するということ
を知らせることができ、および/または命令のさらなる
処理を終了させることができる。
【0022】本発明の他の特徴によると、制御機構は、
命令グループのそれぞれの命令が制御機構によって分析
されたと判断した時、メモリにおけるエントリをリセッ
トする。
【0023】本発明はまた、コンピュータ・プログラム
の命令を処理し、該コンピュータ・プログラム内のハザ
ードを検出するスーパースカラー処理方法を提供するも
のとみることができる。該方法は、複数の命令を含む命
令グループを定義するステップと、該命令のうちの1つ
を分析するステップと、該1つの命令に関連するレジス
タに対応するメモリ・エントリを識別するステップと、
前記識別するステップに応答して前記エントリを分析す
るステップと、前記分析するステップを介して、前記命
令グループ内の他の命令が前記レジスタに関連するとい
うことを前記エントリが示すかどうかを判断するステッ
プと、前記命令グループ内の前記他の命令が前記レジス
タに関連するという前記判断ステップの判断に応答し
て、警告信号を送るステップと、によって広く要約され
ることができる。
【0024】本発明の他の特徴および有利な点は、以下
の詳細な説明を図面と共に検証することにより、当業者
には明らかとなるであろう。このような特徴および有利
な点は、本発明の範囲内に含まれるものと意図され、ま
た特許請求の範囲によって保護されるよう意図されてい
る。
【0025】
【発明の実施の形態】本発明は、ある1つの命令グルー
プが、同じ命令グループにおける他の命令とデータ・ハ
ザードを持つ命令を含むかどうかを判断するスーパース
カラー処理システムおよびその方法に関する。図1は、
本発明の処理システム20を使用するコンピュータ・シス
テム15の好ましい実施形態を示す。好ましい実施形態の
処理システム20はハードウェアで実現されることが好ま
しいが、処理システム20の一部を必要に応じてソフトウ
ェアで実現することも可能である。
【0026】図1に示されているように、コンピュータ
・システム15は、1つまたは複数のバスを有することの
できるローカル・インタフェース22を備える。ローカル
・インタフェース22は、処理システム20がコンピュータ
・システム15の他の構成要素と通信することを可能にす
る。さらに、キーボードおよび/またはマウスなどのよ
うな入力装置25を使用してシステム15のユーザからデー
タを入力することができ、ディスプレイ27および/また
はプリンタ29を使用してユーザにデータを出力すること
ができる。システム・クロック31はクロック信号を生成
し、該クロック信号は、当該技術分野で既知の技術を介
して、システム15によって伝達されるデータのタイミン
グを制御するのに使用される。ディスク記憶機構32をロ
ーカル・インタフェース22に接続して、(たとえば磁気
または光学的な)不揮発性ディスクとの間でデータを転
送することができる。また必要に応じて、システムl5を
ネットワーク・インタフェース33に接続して、ネットワ
ーク35とデータを交換することを可能にすることができ
る。
【0027】さらに、システム15は、メモリ44に記憶さ
れるプログラム41、システム・マネージャ42およびコン
パイラ46を備える。プログラム41は、処理システム20に
よって処理および実行される命令を有する。システム・
マネージャ42は、入力装置25および/またはネットワー
ク・インタフェース33から入力を受け取り、必要に応じ
てプログラム41の命令を処理システム20に送るよう設計
される。プログラム41の命令は、処理システム20に送ら
れる前に、好ましくは先ず処理システム20と互換性のあ
る形式にコンパイラ46によって変換される。例えば、プ
ログラム41の命令が(CまたはFortranなどのような)高水
準コンピュータ言語で書かれている場合、コンパイラ46
は、処理システム20と互換性のあるマシン語にそれらの
命令を翻訳するよう設計される。
【0028】本発明の好ましい実施形態において、コン
パイラ46は、翻訳された命令を含み、かつ処理システム
20に直接送られることのできる命令バンドル(instruct
ionbundle)を定義する。図2は、本発明の原理に従う
命令バンドル52を示している。図2に示されているよう
に、それぞれのバンドル52は、1つまたは複数の命令を
定義するデータを含み、さらにヘッダ55を有する。ヘッ
ダ55は、バンドル52に含まれる命令の種類を特定する識
別子情報を有する。例えば、ヘッダ55は、バンドル52に
おける第1の命令がメモリ演算命令であり、バンドル52
における第2の命令が整数演算命令であり、バンドル52
における第3の命令が浮動小数点演算であることを示す
情報を有することができる。ヘッダ55はまた、ストップ
・ビット57を有する(これについては、詳細を後述す
る)。図2に示される命令バンドル52は3つの命令を含
むよう示されているが、任意の数の命令をバンドル52に
含めることができる。
【0029】命令バンドル52を定義する際、コンパイラ
46は、リードアフターライトのデータ・ハザードおよび
ライトアフターライトのデータ・ハザードについて検査
し、リードアフターライトのデータ・ハザードまたはラ
イトアフターライトのデータ・ハザードを規定する2つ
の命令が同じバンドル52内に置かれないということを確
実にするよう設計されるのが好ましい。加えて、コンパ
イラ46は、バンドル52をプログラムの順に(すなわち、
命令が実行される順に)処理システム20に順次送るよう
設計される。さらにコンパイラ46は、アサートされたス
トップ・ビット52によって区切られた複数のバンドル52
における命令と命令の間に、いかなるリードアフターラ
イトのデータ・ハザードおよびライトアフターライト・
データ・ハザードも存在しないことを確実にするよう設
計されるのが好ましい。従って、処理システム20は、デ
アサートされたストップ・ビット57を持つ一連の命令バ
ンドル52を受け取った場合には、該一連の命令バンドル
における命令のいずれもが、該一連の命令バンドルにお
ける他のいかなる命令にも依存しないこと、または、該
一連の命令バンドルにおける命令のいずれもが、該一連
の命令バンドルの他の命令と同じレジスタにデータを書
き込まないこと、に気づく。
【0030】例えば、図3を参照すると、図3によって
示される順序で処理システム20に順次送られるバンドル
52a〜52gというストリングが示されている。図3におい
て、"D"を有するそれぞれのバンドル52a、52c、52dおよ
び52eは、デアサートされたストップ・ビットを持ち、"
A"を有するそれぞれのバンドル52b、52fおよび52gは、
アサートされたストップ・ビットを持つ。ストップ・ビ
ット57を分析することにより、コンパイラ46によればバ
ンドル52f内の命令とバンドル52g内の命令との間にリー
ドアフターライトのデータ・ハザードまたはライトアフ
ターライトのデータ・ハザードが存在する可能性があ
る、ということを判断することができる。しかしなが
ら、バンドル52c、52dおよび52eはデアサートされたス
トップ・ビット57を持つので、コンパイラ46によれば、
バンドル52c、52d、52eおよび52fのいずれの命令の間に
おいてもリードアフターライトのデータ・ハザードまた
はライトアフターライトのデータ・ハザードが存在しな
い、ということを判断することができる。言い換える
と、バンドル52c、52d、52eおよび52fは1つの命令グル
ープを定義する。さらに、バンドル52bはアサートされ
たストップ・ビット57を持つので、バンドル52aおよび
/または52bは、バンドル52c、52d、52eおよび52fによ
って定義される命令グループ内の命令の1つとリードア
フターライトのデータ・ハザードまたはライトアフター
ライトのデータ・ハザードを持つ命令を含む可能性があ
る。
【0031】本発明の原理から逸脱することなく、処理
システム20に命令バンドル52を送る他の方法を使用する
ことができる、ということに留意すべきである。処理シ
ステム20にバンドル52を送り、かつ命令グループの存在
を示す方法ならば、どのような方法も本発明を実現する
のに適している。
【0032】図4に示されているように、処理システム
20は、処理システム20に送られた命令バンドル52を受け
取るよう設計される命令分散ユニット(IDU)72を含む。I
DU72は、IDU72によって受け取られた命令バンドル52の
命令を使用して発行グループを定義して、1つの発行グ
ループの命令をパイプライン75に送るよう構成されてお
り、発行グループのそれぞれの命令が、パイプライン75
のうちのただ1つによってのみ受け取られるようにす
る。パイプライン75は、受け取った命令を更に処理およ
び実行するよう設計される。並列インオーダープロセッ
サの従来のパイプラインと同様に、パイプライン75は、
受け取った命令を複数の段階で処理するのが好ましい。
【0033】図5は、パイプライン75についての典型的
な一組の段階を示す。すなわち、パイプライン75のそれ
ぞれは、レジスタ段階77、実行段階79、例外検出段階81
および最後に書込み段階83において、命令を受け取って
該命令を順次処理する。これらの段階についての詳細は
上記の従来技術の項に記述したが、命令を処理および実
行するために、他の段階および/またはいくつかの段階
の他の組み合わせを使用することができる、ということ
は注意すべきであろう。
【0034】発行グループを定義する際、IDU72は、そ
れぞれの命令が、その命令と互換性を持つパイプライン
75にのみ送られるということを保証するよう設計される
のが好ましい。すなわち、パイプライン75の中には、所
定の種類の命令だけを取り扱うように設計されている場
合がある。例えば、パイプライン75の1つまたは複数
を、メモリ演算命令、整数演算命令、浮動小数点命令ま
たは他の既知の種類の命令だけを取り扱うよう構成する
ことができる。従って、IDU72は、受け取った命令を分
析して、適切な種類の命令がそれぞれのパイプライン75
に送られるように発行グループを定義するよう設計され
る。好ましい実施形態において、IDU72は、それぞれの
命令バンドル52のヘッダ55を分析して、どの命令がどの
パイプライン75と互換性があるかを判断することができ
る。
【0035】IDU72はまた、リードアフターライトのデ
ータ・ハザードまたはライトアフターライトのデータ・
ハザードを規定する2つの命令が、同じ発行グループに
置かれない、ということを確実にするよう設計される。
従って、クロック31によって生成されるクロック信号の
アクティブ・エッジ上で処理の第1の段階(すなわち、
好ましい実施形態においてはレジスタ段階)に入るそれ
ぞれの命令は、同じクロックエッジ上で第1の段階に入
る他の命令のいずれに対してもデータ依存性を持っては
ならない。更に、クロック信号のエッジ上で処理の第1
の段階に入るそれぞれの命令は、同じクロックエッジ上
で第1の段階に入る他のどの命令とも同じレジスタにデ
ータを書き込んではならない。
【0036】上述のように、命令バンドル52のストップ
・ビット57は、リードアフターライトのデータ依存性ま
たはライトアフターライトの・データ・ハザードが、連
続する命令バンドル52の命令と命令の間に存在するかど
うかを示すので、IDU72は、ストップ・ビット57を利用
して、発行グループを定義するプロセスを単純化するの
が好ましい。すなわち、IDU72は、命令グループの中の
命令と命令の間のリードアフターライトのデータ・ハザ
ードまたはライトアフターライトのデータ・ハザードを
検査することなく、1つの命令グループを定義する一連
のバンドル52における命令のうち任意の命令を、同じ発
行グループに含めることができる。
【0037】IDU72はさらに、古い命令よりも先により
若い命令がパイプライン75の処理を完了しないことを保
証するよう設計される。この点に関して、周知のことで
はあるが、命令の処理は、元のプログラム41によって定
義されたものと同じ順序で(すなわち、"プログラム順
序"で)完了されなければならない。このプログラム順序
は、命令が処理システム20に送られる順番である。
【0038】それぞれの命令の新旧は、"プログラム順
序"におけるその位置に基づく。例えば、プログラム41
において実行されるべき第1の命令(すなわち、処理シ
ステム20によって受け取られるプログラムの第1の命
令)は最も古い命令であり、そのプログラムの他のすべ
ての命令はこの命令より若い。第1の命令の後に実行さ
れるべき次の命令(すなわち、第1の命令の後に処理シ
ステム20によって受け取られるプログラムの次の命令)
は、第1の命令より若いが、プログラム41の残りの命令
より古い。さらに、実行されるべき最後の命令は、最も
若い命令である。たとえスーパースカラー・プロセッサ
が一度に複数の命令を処理するとしても、それらの命令
は、非スーパースカラー・プロセッサがプログラム41を
1ステップずつ実行して一度に一つずつ命令を処理して
いる場合と同じ順序で処理を完了しなければならない
(すなわち、この例では書き込み段階83を完了しなけれ
ばならない)。より若い命令がより古い命令よりも先に
処理を完了しない、ということを確実にするため、IDU7
2は、より古い命令を、より若い命令を含む発行グルー
プの後にパイプライン75に送られる発行グループには割
り当てないのが好ましい。
【0039】IDU72は、発行グループが定義されると、
インオーダー方式でそれぞれの発行グループをパイプラ
イン75に順次送るよう設計される。従って、発行グルー
プ内のそれぞれの命令は、クロック信号の同じアクティ
ブ・エッジ上で、そのそれぞれのパイプライン75に送ら
れる。理想的には、それぞれの発行グループ内のそれぞ
れの命令は、クロック信号のアクティブ・エッジとアク
ティブ・エッジとの間のそのそれぞれの段階で完全に処
理され、発行グループ内のそれぞれの命令が同じクロッ
クエッジ上で次の段階に進むようにする。従って、スト
ールが無い場合、レジスタ段階77における発行グループ
の命令は、実行段階79および例外検出段階81における発
行グループの命令が例外検出段階81および書込み段階83
にそれぞれ入るのと同じクロックエッジ上で、実行段階
79に入る。さらに、レジスタ段階77、実行段階79および
例外検出段階81における発行グループの命令が次のそれ
ぞれの段階に進むとき、新しい発行グループの命令がレ
ジスタ段階77に入る。結果として、発行グループの処理
は、ある発行グループからのいかなる命令も、他の発行
グループ内の命令と同じ段階に入ることがないよう制御
される。
【0040】図4に示されているように、処理システム
20は、パイプライン75に接続された制御機構85を備える
のが好ましい。単純化のため、図4の制御機構85は、パ
イプライン75のうちの1つにだけに接続しているように
示されているが、好ましい実施形態においては、制御機
構85は、パイプライン75のそれぞれに同じように接続さ
れる。
【0041】制御機構85は、リードアフターライトのデ
ータ・ハザードまたはライトアフターライトのデータ・
ハザードによるエラーを防止するため、パイプライン75
によって処理されるデータを分析して必要に応じて命令
をストールするよう設計される。すなわち制御機構85
は、リードアフターライトのデータ・ハザードまたはラ
イトアフターライトのデータ・ハザードが、異なる発行
グループの命令と命令の間に存在するかどうかを判断す
るよう構成される。その後、制御機構85は、上記ハザー
ドのうちの1つに起因するエラーを引き起こす可能性を
持つ命令または該命令を含む発行グループを、少なくと
もエラーを起こす可能性がなくなるまで、ストールさせ
るよう構成される。係属中の米国特許出願"Superscalar
Processing System and Method for Efficiently Prev
enting Errors Caused by Write-After-Write Data Haz
ards"」(docket no. 10971195)、および米国特許出
願"Superscalar Processing System and Method for Ef
ficiently Performing In-Order Processing of Instru
ctions"(docket no. 0971338)は、両方ともこの発明
の発明者によって出願されたものであり、ここで参照に
より取り入れる。これらの出願は、パイプライン75によ
って処理されている命令をストールさせるシステムおよ
び方法を開示している。
【0042】しかしながら、従来の制御機構は、一般
に、ハザードを発生させる命令が同じ発行グループに置
かれている場合、リードアフターライトのデータ・ハザ
ードまたはライトアフターライトのデータ・ハザードに
よるエラーを防止するようには設計されていない。更
に、上述の従来技術の項で記述したように、コンパイラ
46がリードアフターライトのデータ・ハザードまたはラ
イトアフターライトのデータ・ハザードを規定する2つ
の命令が同じ命令グループにあるということを間違って
示した場合、IDU72は、該2つの命令を間違って該同じ
発行グループに割り当てる可能性がある。従って、コン
パイラ46がリードアフターライトのデータ・ハザードま
たはライトアフターライトのデータ・ハザードを規定す
る2つの命令を同じ命令グループ内に間違って含めてし
まった場合を知ることが望ましい。この情報は、この2
つの命令が同じ発行グループに割り当てられた場合にエ
ラーを検出するのに役立つものであり、また、たとえこ
の2つの命令が現在同じ発行グループに含まれていない
としても将来発生するかもしれない潜在的なエラーを検
出するのにも役立つ。
【0043】この点に関して、IDU72はこの2つの命令
を異なる発行グループに割り当てることができ、制御機
構85は、該2つの命令のうちの1つをストールさせるこ
とによっていかなるエラーをも防止することができる。
しかしながら、この2つの命令が、プログラム41の将来
の実行においても異なる発行グループに割り当てられる
という保証はない。従って、たとえ2つの命令がIDU72
によって同じ発行グループに現在は割り当てられていな
いとしても、該2つの命令が同じ命令グループに含めら
れる場合を知ることが望ましい。従って、パイプライン
75によって処理されているデータを分析する際、制御機
構85は、命令グループのいずれかの命令と同じ命令グル
ープの他のいずれかの命令との間にリードアフターライ
トのデータ依存性またはライトアフターライトのデータ
・ハザードが存在するかどうかを判断するのが好まし
い。
【0044】好ましい実施形態において、IDU72は、命
令グループの少なくとも1つの命令にデータを挿入し
(すなわち、少なくとも1つの命令にタグを付け)、制御
機構85が、プログラム順序で命令を分析する時にどの命
令が同じ命令グループに関連づけられているかを判断す
ることができるようにする。例えば、命令がプログラム
順序で分析されているときに、命令グループの最初また
は最後の命令にタグを付けて、命令グループの開始また
は終了をそれぞれ示すことができる。しかし、本発明の
原理から逸脱することなく、どの命令がどの命令グルー
プに関連しているかを制御機構85に示す他の方法を使用
することもできる。
【0045】図4に示されているように、制御機構85は
メモリ91を備える。メモリ91は、処理システム20の1つ
のレジスタにつき1つのエントリを含むのが好ましい。
この点について、処理システム20は、従来技術の処理シ
ステムと同様に、パイプライン75による命令処理の間に
データを読み出すまたはデータを書き込むことのできる
所定数のレジスタを有する。したがって、メモリ91はデ
ータ・ビット列を有し、ここでそれぞれのビットは、処
理システム20のレジスタのうちの1つを表す。言い換え
ると、それぞれのビットは、処理システム20の特定のレ
ジスタに対応する、メモリ91のエントリである。このビ
ット列を、メモリ91の単一アドレスに記憶することもで
き、またはメモリ91の複数アドレスに記憶することもで
きる。他の例では、それぞれのエントリは、メモリ91の
異なるアドレスに置かれる。すなわち、メモリ91の特定
のアドレスに記憶されたデータは、処理システム20の特
定のレジスタを表す。結果として、特定のレジスタに対
応するデータを、データのアドレスに基づいて識別する
ことができる。
【0046】例示の目的から、以降、メモリ91のエント
リは、メモリ内の特定のアドレスに置かれたビット列内
のビットに対応し、該ビット列のそれぞれのビットが、
エントリ、したがって処理システム20の特定のレジスタ
に対応すると仮定する。しかしながら、本発明の原理か
ら逸脱することなく、処理システム20のそれぞれのレジ
スタをメモリ91のエントリで表すのに様々な他の方法が
存在し、これらの方法を他の実施形態で使用することが
できる。さらに、図4に示されるように、この好ましい
実施形態ではメモリ91は制御機構85内に置かれているけ
れども、必要に応じて、メモリ91をコンピュータ・シス
テム15の外部または内部の他の位置に置くことができ
る。
【0047】従来のインオーダー処理システムと同様
に、制御機構85は、発行グループが段階77、79、81また
は83のうちの1つによって処理されている間に、該発行
グループのそれぞれの命令を分析して、これらの命令の
いずれかをストールすべきかどうかを判断するよう設計
される。制御機構85は、書込み命令を分析する時、該書
込み命令によって書き込まれるレジスタに対応するメモ
リ91のエントリを分析するよう設計される。書込み命令
は、処理システム20に関連するレジスタにデータを記憶
する任意の命令である。
【0048】上記のエントリは、該エントリに関連する
レジスタにデータを書き込む同じ命令グループ内の他の
書き込み命令が制御機構85によって前に検出されたかど
うかを示すのが好ましい。好ましい実施形態では、その
ような他の命令が検出されたならば、エントリを定義す
るビットがアサートされ、そのような他の命令が検出さ
れなかったならば、デアサートされる。したがって、ビ
ットがアサートされているならば、制御機構85は、同じ
命令グループ内の他の書き込み命令が、現在分析されて
いる命令によって使用されるレジスタと同じレジスタを
使用する、ということに気づく。言い換えると、制御機
構85は、ライトアフターライトのデータ・ハザードが存
在するということに気づく。
【0049】このような判断に応答して、制御機構85
は、現在分析されている命令が、同じ命令グループ内の
他の命令によって書き込まれるレジスタと同じレジスタ
を使用するということを示す警告信号を送るよう設計さ
れる。しかしながらビットがデアサートされている場合
には、制御機構85は該ビットをアサートし、書き込み命
令がエントリに対応するレジスタを使用するということ
を該エントリが示すようにする。ビット値を論理的に高
(high)または低(low)のいずれかで記憶することによ
り、アサートまたはデアサートすることができるという
ことは周知のことである。
【0050】さらに、制御機構85は、読み出し命令を分
析する時、読み出し命令によって読み出されるレジスタ
に対応するメモリ91のエントリを分析するよう設計され
る。読み出し命令は、処理システム20に関連するレジス
タからデータを読み出す任意の命令である。エントリの
ビットがアサートされていれば、制御機構85は、当該読
み出し命令によって使用されるレジスタと同じレジスタ
にデータを書き込む同じ命令グループ内の書き込み命令
を前に分析したということに気づく。言い換えると、制
御機構85は、リードアフターライトのデータ・ハザード
が存在するということに気づく。従って、ビットがアサ
ートされているという判断に応答して、制御機構85は、
該制御機構85によって分析されている命令が、同じ命令
グループ内の他の命令によって書き込まれるレジスタと
同じレジスタを使用する、ということを示す警告信号を
送るよう構成される。
【0051】さらに、制御機構85は、命令グループ内の
命令のそれぞれが分析されたと判断したとき、メモリ91
のエントリをリセットするよう設計される。エントリを
リセットした後、それぞれのエントリは、該エントリに
対応するレジスタを使用する前の命令が検出されていな
いことを示す。好ましい実施形態では、制御機構85は、
メモリ91のエントリを定義するそれぞれのビットをデア
サートすることによってエントリをリセットする。
【0052】制御機構85は、プログラム順序で命令を分
析するので、1つの命令グループのすべての命令を、他
の命令グループの命令のいずれかを分析する前に完全に
分析する。従って、制御機構85は、1つの命令グループ
の最後の命令を分析した後であって(さらに必要に応じ
て、該最後の命令によって使用されるレジスタに対応す
るエントリのビットをアサートした後)、次の命令グル
ープの最初の命令を分析する際にメモリ91を分析する前
に、メモリ91のエントリのビットをデアサート(すなわ
ち、リセット)することができる。この機能を達成する
種々の方法を使用することができるけれども、制御機構
85は、分析されている命令が命令グループの最初の命令
または最後の命令であるという判断に応答して、メモリ
91のビットをリセットすることができる。制御機構85
は、上述のようにIDU72によって命令グループの最初ま
たは最後の命令に挿入されるデータを分析することによ
って、この判断を行うことができる。
【0053】好ましい実施形態では、制御機構85によっ
て送られた警告信号はシステム・マネージャ42によって
受け取られ、システム・マネージャ42は、該警告信号に
応答してプログラム41の実行を終了させることができ
る。さらに、警告信号はディスプレイ27および/または
プリンタ29によって受け取られることができ、ディスプ
レイ27および/またはプリンタ29は、違反が発生したこ
とをユーザに示す警告メッセージを生成することができ
る。警告信号および警告メッセージは、制御機構85が違
反を発見した時どの命令が分析されていたかをユーザが
判断することができるよう十分な情報を含むのが好まし
い。
【0054】留意されるべき点であるが、読み出し命令
がパイプライン75に入力されると、大部分の読み出し命
令により、データがそのレジスタが比較的迅速に読み出
される。一方、大部分の書込み命令により、データは、
さらにパイプライン75の処理を進んだ後にそのレジスタ
に書き込まれる。例えば、読み出し命令によりデータは
典型的にはレジスタ段階77においてその関連するレジス
タから読み出され、書込み命令によりデータは典型的に
は書込み段階83においてその関連するレジスタに書き込
まれる。従って、若い書込み命令をもつ同じ命令グルー
プの読み出し命令は、その書込み命令がデータをレジス
タに書き込む前にそのレジスタからデータを読み出す可
能性が高い。従って、読み出し命令が書込み命令より古
い時、たとえ読み出し命令および書込み命令が同じ命令
グループにあるとしても、エラーが発生する可能性は少
ない。結果として、若い書込み命令と同じレジスタを利
用する古い読み出し命令が同じ命令グループにある時、
ユーザが警告されることはそう重要なことではない。言
い換えると、ライトアフターリードのデータ・ハザード
に関して警告信号を生成することは、そう重要なことで
はない。
【0055】したがって、好ましい実施形態では、制御
機構85は、読み出し命令を分析する時、該読み出し命令
によって使用されるレジスタに対応するエントリのビッ
トをアサートすることはしない。代わりに、書き込み命
令にのみ応答して、メモリ91のビットはアサートされ
る。結果として、読み出し命令が、同じグループのより
若い読み出し命令または書き込み命令と同じレジスタを
使用する場合には、警告信号は生成されず、よってユー
ザーは警告されない。
【0056】しかしながら、必要に応じて、ユーザー
は、読み出し命令がより若い読み出し命令と同じレジス
タを使用する場合に警告を受けることもできる。言い換
えると、同じグループ内の2つの命令がライトアフター
リードのデータ・ハザードを規定することを制御機構85
が検出した時はいつでも、警告信号を生成することがで
きる。この機能を達成するため、制御機構85は、メモリ
91内のエントリのデータを、該エントリに関連するレジ
スタを使用する読み出し命令を制御機構85が前に検出し
たかどうかを示すよう設定する。例えば、それぞれのエ
ントリがデータ・ビットである実施形態では、制御機構
85は、読み出し命令によって使用されるレジスタに対応
するエントリのビットをアサートするよう構成されるこ
とができる。従って、書き込み命令が制御機構85によっ
て前に検出されたかどうかを示す代わりに、エントリ
は、読み出し命令が前に検出されたかどうかを示す。
【0057】制御機構85が書き込み命令を分析すると
き、制御機構85は、該書き込み命令によって使用される
レジスタに対応するエントリを検査する。エントリが、
古い読み出し命令が検出されたことを示しているならば
(前述した例では、エントリのビットがアサートされて
いるならば)、制御機構85は、命令グループ内にライト
アフターリードのデータ・ハザードが存在するというこ
とに気づき、警告信号を送って、命令グループ内にライ
トアフターリードのデータ・ハザードが存在することを
示す。
【0058】それぞれのレジスタに対応するエントリを
2つ持つことにより、制御機構85は、リードアフターラ
イトおよびライトアフターライトのデータ・ハザードと
同様に、ライトアフターリードのデータ・ハザードを検
出することができる。この点について、一方のエントリ
を使用して、対応するレジスタを使用する古い書き込み
命令が検出されたかどうかを示すことができ、他方のエ
ントリを使用して、対応するレジスタを使用する古い読
み出し命令が検出されたかどうかを示すことができる。
また、前の命令がレジスタを使用したかどうかを示すだ
けでなく、何の種類の命令(すなわち、書き込みおよび
/または読み出し)が前にそのレジスタを使用したかを
示す単一のエントリを定義することも可能である。
【0059】更に留意されるべき点であるが、本発明は
インオーダー処理を背景として記述されている。しか
し、本発明の原理を、アウトオブオーダー処理に適用す
ることができる。すなわち、アウトオブオーダー・プロ
セッサも、上述したような命令グループを介して実行さ
れるべき命令を受け取ることができる。従って、アウト
オブオーダー・プロセッサが制御機構85と同様の機構で
あって、それぞれの命令グループの命令によってどのレ
ジスタが使用されるかを追跡する機構を含む限り、本発
明の原理をアウトオブオーダー・プロセッサについても
実現することができる。
【0060】動作 処理システム20および関連する方法の好ましい使用およ
び動作を以下に記述する。発行グループがパイプライン
75を順次進むにつれて、制御機構85は、段階77、79、81
および83を通過する命令を分析する。段階77、79、81ま
たは83のうちの1つにおいて命令を分析する時、制御機
構85は、図6に示される機能を実行する。以下の記述に
おいて、例示の目的から、制御機構85が実行段階79にお
いて命令を分析する際に図6の機能を実施すると仮定す
る。しかし当然のことながら、制御機構85がその他の段
階77、81または83のいずれかにおいて命令を分析する際
に図6の機能を実施することは可能である。
【0061】図6のブロック108に示されるように、最
初に制御機構85は、段階79の最初の命令を分析し、次に
ブロック112において、その命令が新しい命令グループ
に関連するかどうかを判断する。命令が新しい命令グル
ープに関連するならば、制御機構85は、ブロック114に
おいてメモリ91のエントリをリセットし、それぞれのエ
ントリが、該エントリに対応するレジスタが前の命令に
よって使用されていないことを示すようにする。好まし
い実施形態においてこの機能を達成するため、制御機構
85は、レジスタに関連するメモリ91のそれぞれのビット
をデアサートする。
【0062】ブロック112を実行した後、または該当す
る場合にはブロック114を実行した後、ブロック115にお
いて、制御機構85は、該制御機構85によって分析されて
いる命令(以下、「現命令」という)によって使用され
るレジスタに対応するメモリ91のエントリを分析する。
ブロック117および119に示されるように、命令グループ
内の前に分析された書き込み命令が現命令と同じレジス
タを使用することをエントリが示すならば、制御機構85
は警告信号を送る。
【0063】好ましい実施形態において、レジスタに対
応するエントリにビットがアサートされているとき、エ
ントリは、命令グループ内の前に分析された書き込み命
令が現命令と同じレジスタを使用するということを示
す。ビットがデアサートされていれば、制御機構85は、
現命令によって使用されるレジスタと同じレジスタに書
き込む同じグループ内のいかなる他の命令も存在せず、
よっていかなる警告信号も送られる必要がない、という
ことに気づく。結果として、制御機構85は、現命令によ
って使用されるレジスタに対応するビットがアサートさ
れているという判断に応答して、ブロック119において
警告信号を送る。
【0064】前に分析された書き込み命令が同じレジス
タを使用するということをエントリが示さなければ、制
御機構85は、ブロック123において、現命令が書き込み
命令であるかどうかを判断する。書き込み命令であれ
ば、制御機構85は、ブロック125において、現命令によ
って使用されるレジスタ(すなわち、現命令によって書
き込まれるレジスタ)に対応するエントリにデータを設
定することにより、命令グループの命令が、対応するレ
ジスタにデータを書き込むということをエントリが示す
ようにする。従って、好ましい実施形態では、制御機構
85は、現命令によって使用されるレジスタに対応するエ
ントリのビットをアサートする。
【0065】ブロック119またはブロック123を実行した
後、または該当する場合にはブロック125を実行した
後、制御機構85は、ブロック128において、まだ分析さ
れていない命令が段階79にあるかどうかを判断する。命
令が残っていれば、制御機構85は、ブロック131におい
て次の命令を分析し、該次の命令についてブロック112
から開始する前述のプロセスを繰り返す。段階79におけ
る命令のすべてが分析されたならば、制御機構85は、ブ
ロック135によって示されるように、上記のプロセス
(ステップ108から開始するプロセス)を繰り返す前
に、次の発行グループが段階79に到来するのを待つ。
【0066】前述のように、制御機構85を、ライトアフ
ターリードのデータ・ハザードを検出するよう構成する
ことができる。この機能を実行するため、制御機構85
は、図7の機能を実現するよう構成される。図6を図7
と比較することによってわかるように、図7によって示
される機能は、図6のブロック117、123および125がブ
ロック141、143および145によって置き換えられる点を
除き、図6によって示される機能と同様である。さら
に、ブロック149が追加される。
【0067】この点について、制御機構85は、図6のブ
ロック117において、同じ命令グループにあり、かつ現
命令と同じレジスタを使用する書き込み命令を前に検出
したかどうかをブロック115を介して判断したが、図7
のブロック141においては、制御機構85は、同じ命令グ
ループにあり、かつ現命令と同じレジスタを使用する読
み出し命令を前に検出したかどうかをブロック115を介
して判断する。さらに、制御機構85は、図6のブロック
123において現命令が書き込み命令かどうかを判断した
が、図7のブロック143では、現命令が読み出し命令か
どうかを判断する。さらに、制御機構85は、図6のブロ
ック125において、現命令によって使用されるレジスタ
に対応するエントリのデータを、該レジスタを使用する
書き込み命令が検出されたことを示すよう設定したが、
図7のブロック145においては、現命令によって使用さ
れるレジスタに対応するエントリのデータを、該レジス
タを使用する読み出し命令が検出されたことを示すよう
設定される。
【0068】図7のブロック149により、古い読み出し
命令が他の読み出し命令と同じレジスタを使用するとい
う判断に応答して、警告信号が送られないことが保証さ
れる。当該技術分野で知られているように、同じレジス
タを使用する2つの読み出し命令は、たとえ該2つの命
令が同じ命令グループにあるとしてもエラーを引き起こ
す可能性が少なく、通常ユーザーは、そのような事象を
警告される必要がない。上記の違い以外については、図
7の機能は図6の機能と同じである。結果として、警告
信号は、同じ命令グループ内に古い読み出し命令および
若い書き込み命令を制御機構85が検出した時に、制御機
構85によって生成される。
【0069】コンピュータ・プログラム41の命令を分析
するに際して、制御機構85を、図6および図7の両方の
機能を実現するよう構成することができる。しかしなが
ら、制御機構85は、ブロック117および141を実現するた
めにブロック115において2以上のエントリを分析する
必要がある場合がある。この点について、特定のレジス
タに対応する第1のエントリは、該特定のレジスタを使
用する古い書き込み命令が現命令と同じ命令グループに
存在するかどうかを示し、また第2のエントリは、上記
特定のレジスタを使用する古い読み出し命令が現命令と
同じ命令グループに存在するかどうかを示す。従って、
制御機構85は、ブロック125において第1のエントリの
データを操作し、ブロック145において第2のエントリ
を操作することとなる。代わりに、エントリが、該エン
トリに対応するレジスタが命令グループの他の命令によ
って前に使用されたかどうかを示し、さらに該命令グル
ープ内の何の種類(すなわち、読み出しおよび/または
書き込み)の命令が、該対応するレジスタを使用したか
をも示すことができる限り、それぞれのレジスタについ
て1つのエントリを使用することができる。
【0070】留意されるべき点であるが、制御機構85
は、図6および図7によって示されている機能に加えて
他の機能を実行することもできる。例えば、ブロック13
5において次の発行グループを待つ間、制御機構85は、
他の段階77、81および/または83の他の命令を分析し
て、いずれかの命令をストールする必要があるかどうか
を判断することができる。従って、当業者に明らかなよ
うに、制御機構85の機能は、図6および図7によって示
される機能に限定されるべきではない。
【0071】本発明の上記の実施形態、特に"好ましい"
実施形態は、実施形態の単なる可能な例に過ぎず、本発
明の原理の明確な理解のために提示されているに過ぎな
い点は特に強調されるべきであろう。本発明の原理およ
び理念を逸脱することなく上記実施形態に多くの変更お
よび修正を加えることが可能である。
【0072】本発明には、例として次のような実施様態
が含まれる。 (1)コンピュータ・プログラム(41)の命令を処理し、
該コンピュータ・プログラム内のハザードを検出するシ
ステム(20)であって、複数のレジスタにそれぞれ対応す
る複数のエントリを有するメモリ(91)と、複数のパイプ
ライン(75)と、複数の命令を含む命令グループを受け取
り、該複数の命令を前記複数のパイプラインに送るよう
構成された命令分散ユニット(IDU)と、前記複数の
命令のうち少なくとも1つの命令を分析し、該1つの命
令に関連するレジスタに対応する前記メモリのエントリ
を識別し、該エントリを分析し、前記命令グループ内の
他の命令が前記レジスタに関連することを前記エントリ
が示すという判断に応答して警告信号を送るよう構成さ
れた制御機構(85)と、を備えるコンピュータ・プログラ
ム内のハザードを検出するシステム。
【0073】(2)前記制御機構が、前記命令グループ
の前記命令のそれぞれが該制御機構によって分析された
という判断に応答して、前記エントリをリセットするよ
う構成された上記(1)に記載のコンピュータ・プログ
ラム内のハザードを検出するシステム。
【0074】(3)前記制御機構が、プログラム順に前
記命令を分析するよう構成された上記(2)に記載のコ
ンピュータ・プログラム内のハザードを検出するシステ
ム。
【0075】(4)前記制御機構が、前記他の命令を分
析し、該他の命令が前記レジスタに関連するという判断
に応答して前記エントリにデータ値を記憶するよう構成
された上記(1)に記載のコンピュータ・プログラム内
のハザードを検出するシステム。
【0076】(5)前記制御機構が、前記他の命令が書
き込み命令であるという判断に応答して、前記エントリ
に前記データ値を記憶するよう構成された上記(4)に
記載のコンピュータ・プログラム内のハザードを検出す
るシステム。
【0077】(6)コンピュータ・プログラム(41)の命
令を処理し、該コンピュータ・プログラム内のハザード
を検出するスーパースカラー処理方法であって、複数の
命令を含む命令グループを定義するステップと、前記命
令のうちの1つを分析するステップと、前記1つの命令
に関連するレジスタに対応するメモリ・エントリを識別
するステップと、前記エントリを識別するステップを介
して、前記命令グループ内の他の命令が前記レジスタに
関連することを前記エントリが示すかどうか判断するス
テップと、前記命令グループ内の他の命令が前記レジス
タに関連するという前記判断ステップの判断に応答し
て、警告信号を送るステップと、を含むコンピュータ・
プログラム内のハザードを検出するスーパースカラー処
理方法。
【0078】(7)前記命令のそれぞれが分析されたと
いう判断に応答して、前記エントリをリセットするステ
ップを含む上記(6)に記載のコンピュータ・プログラ
ム内のハザードを検出するスーパースカラー処理方法。
【0079】(8)他の命令を分析して、前記他の命令
が新しい命令グループに関連するかどうか判断するステ
ップと、前記他の命令が新しい命令グループに関連する
という前記判断ステップの判断に応答して、前記エント
リをリセットするステップと、を含む上記(6)に記載
のコンピュータ・プログラム内のハザードを検出するス
ーパースカラー処理方法。
【0080】(9)前記他の命令を分析するステップ
と、前記他の命令が前記レジスタに関連するという前記
判断ステップの判断に応答して、前記エントリにデータ
値を記憶するステップと、を含む上記(6)に記載のコ
ンピュータ・プログラム内のハザードを検出するスーパ
ースカラー処理方法。
【0081】(10)前記他の命令が書き込み命令であ
るという判断に応答して、前記記憶するステップを実行
する上記(9)に記載のコンピュータ・プログラム内の
ハザードを検出するスーパースカラー処理方法。
【0082】
【発明の効果】ある1つの命令グループが、同じ命令グ
ループの他の命令とデータ・ハザードを規定する命令を
含んでいるかどうかを判断することができる。
【図面の簡単な説明】
【図1】本発明に従う処理システムを使用するコンピュ
ータ・システムを示すブロック図。
【図2】図1の処理システムに送られる命令の典型的な
バンドルを示すブロック図。
【図3】少なくとも1つの命令グループを定義する命令
バンドルの典型的なセットを示すブロック図。
【図4】図1の処理システムの詳細を示すブロック図。
【図5】図1の処理システムの処理段階を示すフローチ
ャート。
【図6】図4の制御機構の好ましい実施形態のアーキテ
クチャおよび機能を示すフローチャート。
【図7】本発明の他の実施形態に従う、図4の制御機構
によって使用されることのできる付加的なアーキテクチ
ャおよび機能を示すフローチャート。
【符号の説明】
20 処理システム 41 コンピュータ・プログラム 72 IDU(命令分散ユニット) 75 パイプライン 85 制御機構 91 メモリ
───────────────────────────────────────────────────── フロントページの続き (72)発明者 ロニー・リー・アーノルド アメリカ合衆国80528コロラド州フォー ト・コリンズ、スティルウォーター・クリ ーク・ドライブ 2200

Claims (1)

    【特許請求の範囲】
  1. 【請求項1】コンピュータ・プログラムの命令を処理
    し、該コンピュータ・プログラム内のハザードを検出す
    るシステムであって、 複数のレジスタにそれぞれ対応する複数のエントリを有
    するメモリと、 複数のパイプラインと、 複数の命令を含む命令グループを受け取り、該複数の命
    令を前記複数のパイプラインに送るよう構成された命令
    分散ユニット(IDU)と、 前記複数の命令のうち少なくとも1つの命令を分析し、
    該1つの命令に関連するレジスタに対応する前記メモリ
    のエントリを識別し、該エントリを分析し、前記命令グ
    ループ内の他の命令が前記レジスタに関連することを前
    記エントリが示すという判断に応答して警告信号を送る
    よう構成された制御機構と、 を備えるコンピュータ・プログラム内のハザードを検出
    するシステム。
JP2000310363A 1999-10-14 2000-10-11 コンピュータ・プログラムのハザードを検出するシステム Expired - Fee Related JP3776302B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/417,582 US6711670B1 (en) 1999-10-14 1999-10-14 System and method for detecting data hazards within an instruction group of a compiled computer program
US09/417582 1999-10-14

Publications (3)

Publication Number Publication Date
JP2001117772A true JP2001117772A (ja) 2001-04-27
JP2001117772A5 JP2001117772A5 (ja) 2005-06-23
JP3776302B2 JP3776302B2 (ja) 2006-05-17

Family

ID=23654573

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2000310363A Expired - Fee Related JP3776302B2 (ja) 1999-10-14 2000-10-11 コンピュータ・プログラムのハザードを検出するシステム

Country Status (2)

Country Link
US (1) US6711670B1 (ja)
JP (1) JP3776302B2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7410126B2 (ja) 2018-08-16 2024-01-09 アーム・リミテッド 命令を実行するためのシステム、方法、および装置

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4368320B2 (ja) * 2005-03-16 2009-11-18 富士通株式会社 情報処理システム,パイプライン処理装置,ビジー判定プログラム及び同プログラムを記録したコンピュータ読取可能な記録媒体
GB2447907B (en) * 2007-03-26 2009-02-18 Imagination Tech Ltd Processing long-latency instructions in a pipelined processor
US20090150653A1 (en) * 2007-12-07 2009-06-11 Pedro Chaparro Monferrer Mechanism for soft error detection and recovery in issue queues
US8635501B2 (en) 2011-07-25 2014-01-21 Microsoft Corporation Detecting memory hazards in parallel computing
US8707107B1 (en) * 2011-12-09 2014-04-22 Symantec Corporation Systems and methods for proactively facilitating restoration of potential data failures
US9372695B2 (en) 2013-06-28 2016-06-21 Globalfoundries Inc. Optimization of instruction groups across group boundaries
US9348596B2 (en) 2013-06-28 2016-05-24 International Business Machines Corporation Forming instruction groups based on decode time instruction optimization
KR102179385B1 (ko) * 2013-11-29 2020-11-16 삼성전자주식회사 명령어를 실행하는 방법 및 프로세서, 명령어를 부호화하는 방법 및 장치 및 기록매체

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA2038264C (en) * 1990-06-26 1995-06-27 Richard James Eickemeyer In-memory preprocessor for a scalable compound instruction set machine processor
US5471591A (en) * 1990-06-29 1995-11-28 Digital Equipment Corporation Combined write-operand queue and read-after-write dependency scoreboard
KR100309566B1 (ko) * 1992-04-29 2001-12-15 리패치 파이프라인프로세서에서다중명령어를무리짓고,그룹화된명령어를동시에발행하고,그룹화된명령어를실행시키는방법및장치
US5481743A (en) * 1993-09-30 1996-01-02 Apple Computer, Inc. Minimal instruction set computer architecture and multiple instruction issue method
US5848288A (en) * 1995-09-20 1998-12-08 Intel Corporation Method and apparatus for accommodating different issue width implementations of VLIW architectures

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7410126B2 (ja) 2018-08-16 2024-01-09 アーム・リミテッド 命令を実行するためのシステム、方法、および装置

Also Published As

Publication number Publication date
JP3776302B2 (ja) 2006-05-17
US6711670B1 (en) 2004-03-23

Similar Documents

Publication Publication Date Title
US6079014A (en) Processor that redirects an instruction fetch pipeline immediately upon detection of a mispredicted branch while committing prior instructions to an architectural state
US6470445B1 (en) Preventing write-after-write data hazards by canceling earlier write when no intervening instruction uses value to be written by the earlier write
US20070118720A1 (en) Technique for setting a vector mask
JP2002508564A (ja) 実行パイプラインの外部に複数のプログラム・カウンタとトレース・バッファを有するプロセッサ
TWI411957B (zh) 亂序執行微處理器、微處理器及其相關之提升效能之方法及執行方法
US6301654B1 (en) System and method for permitting out-of-order execution of load and store instructions
JP3773769B2 (ja) 命令のインオーダ処理を効率的に実行するスーパースケーラ処理システム及び方法
US5727177A (en) Reorder buffer circuit accommodating special instructions operating on odd-width results
US10474469B2 (en) Apparatus and method for determining a recovery point from which to resume instruction execution following handling of an unexpected change in instruction flow
JP3808314B2 (ja) 長レイテンシ命令に対する命令属性およびステータス情報を示す処理システムおよび方法
JP3776302B2 (ja) コンピュータ・プログラムのハザードを検出するシステム
US20020112142A1 (en) Implementation of a conditional move instruction in an out-of-order processor
US7844799B2 (en) Method and system for pipeline reduction
Sawada et al. Verification of FM9801: An out-of-order microprocessor model with speculative execution, exceptions, and program-modifying capability
JP3756410B2 (ja) 述語データを提供するシステム
US7634641B2 (en) Method and apparatus for using multiple threads to spectulatively execute instructions
US7418581B2 (en) Method and apparatus for sampling instructions on a processor that supports speculative execution
US8037366B2 (en) Issuing instructions in-order in an out-of-order processor using false dependencies
JP3759398B2 (ja) コンピュータ・プログラムのハザードを検出するシステム
US6829699B2 (en) Rename finish conflict detection and recovery
JPH09330221A (ja) マイクロプロセッサにおける早期例外を追跡するシステム及び方法
KR100508320B1 (ko) 고속 및 저속 리플레이 경로를 갖는 리플레이 구조를구비한 프로세서
EP1050805B1 (en) Transfer of guard values in a computer system
US11663014B2 (en) Speculatively executing instructions that follow a status updating instruction
US10552156B2 (en) Processing operation issue control

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20041007

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20041007

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20060210

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: 20060215

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20060222

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100303

Year of fee payment: 4

LAPS Cancellation because of no payment of annual fees