JPH07160501A - データ処理システム - Google Patents
データ処理システムInfo
- Publication number
- JPH07160501A JPH07160501A JP5269218A JP26921893A JPH07160501A JP H07160501 A JPH07160501 A JP H07160501A JP 5269218 A JP5269218 A JP 5269218A JP 26921893 A JP26921893 A JP 26921893A JP H07160501 A JPH07160501 A JP H07160501A
- Authority
- JP
- Japan
- Prior art keywords
- instruction
- instructions
- load
- store
- program number
- 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
Links
- 239000000872 buffer Substances 0.000 description 5
- 238000010586 diagram Methods 0.000 description 3
- 238000000034 method Methods 0.000 description 3
- 230000001934 delay Effects 0.000 description 2
- 230000009977 dual effect Effects 0.000 description 2
- 101100496158 Arabidopsis thaliana CLF gene Proteins 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 239000011159 matrix material Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
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 or look ahead
- G06F9/3824—Operand accessing
- G06F9/3834—Maintaining memory consistency
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)【要約】 (修正有)
【目的】 不正順序ロード命令およびストア命令を処理
するシステムにストア動作に関するロード動作の正しい
実行を検査する能力を与える。 【構成】 ストア命令実行中にこのアドレスはこのスト
ア命令の前に不正順序で実行されたロード待ち行列中の
以前に実行されたロード命令のアドレスと比較される。
プログラム・カウンタが、実行されようとするストア命
令のプログラム番号をロード待ち行列中のロード命令の
プログラム番号と比較し、ロード命令およびストア命令
のアドレス、とこれらの命令のプログラム番号が比較さ
れる。アドレスが同じでなければ問題なく、アドレスが
同じで、ストア命令のプログラム番号がロード命令のプ
ログラム番号より大なら、命令は正しい順序で実行され
たことになり問題ないが、アドレスが同じでロード命令
がストア命令に先行するような順序になっているなら、
命令をシステムに与える前に少なくとも命令の一部が順
序再配置されかつ再実行されなければならない。
するシステムにストア動作に関するロード動作の正しい
実行を検査する能力を与える。 【構成】 ストア命令実行中にこのアドレスはこのスト
ア命令の前に不正順序で実行されたロード待ち行列中の
以前に実行されたロード命令のアドレスと比較される。
プログラム・カウンタが、実行されようとするストア命
令のプログラム番号をロード待ち行列中のロード命令の
プログラム番号と比較し、ロード命令およびストア命令
のアドレス、とこれらの命令のプログラム番号が比較さ
れる。アドレスが同じでなければ問題なく、アドレスが
同じで、ストア命令のプログラム番号がロード命令のプ
ログラム番号より大なら、命令は正しい順序で実行され
たことになり問題ないが、アドレスが同じでロード命令
がストア命令に先行するような順序になっているなら、
命令をシステムに与える前に少なくとも命令の一部が順
序再配置されかつ再実行されなければならない。
Description
【0001】
【産業上の利用分野】一般的に言って、本発明はコンピ
ュータ・システムにおける命令処理に関するものであ
り、更に具体的にはストア動作に関するロード動作の正
しい実行を検査する能力が不正順序ロード命令およびス
トア命令を処理するシステムに備えられる。
ュータ・システムにおける命令処理に関するものであ
り、更に具体的にはストア動作に関するロード動作の正
しい実行を検査する能力が不正順序ロード命令およびス
トア命令を処理するシステムに備えられる。
【0002】
【従来の技術】現在において、ロード及びストア命令不
正順序実行の備えがあるコンピュータ・システムが一般
に入手可能である。この技術分野において、もしストア
命令がロード命令の後に実行されるならば、すなわちス
トア命令の実行を可能な限り遅らせるならば処理速度が
増加する事が知られている。しかしながら、特定のメモ
リ・アドレスからロードされようとするデータがそこに
正しい値を前もってストアしていなかったと言うことが
あり得るのである種の命令シーケンスについては問題が
ある。この場合、ストア命令はロード命令に先行する必
要がある。本発明はこの状況を検知して所要の命令を待
ち行列に再ロードする。
正順序実行の備えがあるコンピュータ・システムが一般
に入手可能である。この技術分野において、もしストア
命令がロード命令の後に実行されるならば、すなわちス
トア命令の実行を可能な限り遅らせるならば処理速度が
増加する事が知られている。しかしながら、特定のメモ
リ・アドレスからロードされようとするデータがそこに
正しい値を前もってストアしていなかったと言うことが
あり得るのである種の命令シーケンスについては問題が
ある。この場合、ストア命令はロード命令に先行する必
要がある。本発明はこの状況を検知して所要の命令を待
ち行列に再ロードする。
【0003】米国特許第4630195号明細書にはデ
ータ従属性を調べるためのシステムが記述されており、
そこではデータ転送コマンド発生されてローカル貯蔵装
置中のレジスタが転送されるデータに割り当てられる。
データが貯蔵されているレジスタおよびそれに引き続く
データ転送を指名するタグが貯蔵されたタグと比較され
て何らかの潜在的従属性があるか否かが調べられる。I
BMテクニカル・ディスクロージュア・ビュレティン、
第30巻第1号、1987年6月の第191ないし19
2頁には、ストア命令の実行の間、パイプラインにロー
ドされたメモリ場所にデータが既にストアされていた可
能性があるというパイプライン式アーキテクチュアを用
いた場合の問題が検討されている。プログラム・カウン
タとメモリ・アドレスとの差が1または2に等しい(こ
れはパイプラインに既にロードされたメモリ場所にデー
タがあるような場合であろう)か否かを調べる式が誘導
されている。
ータ従属性を調べるためのシステムが記述されており、
そこではデータ転送コマンド発生されてローカル貯蔵装
置中のレジスタが転送されるデータに割り当てられる。
データが貯蔵されているレジスタおよびそれに引き続く
データ転送を指名するタグが貯蔵されたタグと比較され
て何らかの潜在的従属性があるか否かが調べられる。I
BMテクニカル・ディスクロージュア・ビュレティン、
第30巻第1号、1987年6月の第191ないし19
2頁には、ストア命令の実行の間、パイプラインにロー
ドされたメモリ場所にデータが既にストアされていた可
能性があるというパイプライン式アーキテクチュアを用
いた場合の問題が検討されている。プログラム・カウン
タとメモリ・アドレスとの差が1または2に等しい(こ
れはパイプラインに既にロードされたメモリ場所にデー
タがあるような場合であろう)か否かを調べる式が誘導
されている。
【0004】米国特許第4965716号明細書には要
素が未分類スタック中に保持される如き優先順位行列に
ついて述べられている。このスタックは最高優先順位の
要素が保持レジスタから読み出された後に次の優先順位
の要素を求めて検索される。最高優先順位要素を決める
ための優先順位比較が具現化されている。米国特許第4
574349号明細書においては、プログラム命令が特
定の主記憶装置場所から汎用レジスタへのデータ転送を
要求する。このシステムは、以前のロード命令からのデ
ータがハードウエア・レジスタの1つに依然ストアされ
ている場合に、同じ特定主記憶装置場所に関するその後
のロード命令が中央処理装置に直ちに利用可能なハード
ウエア・レジスタにデータを貯蔵することを許容するた
めにポインタを使用している。
素が未分類スタック中に保持される如き優先順位行列に
ついて述べられている。このスタックは最高優先順位の
要素が保持レジスタから読み出された後に次の優先順位
の要素を求めて検索される。最高優先順位要素を決める
ための優先順位比較が具現化されている。米国特許第4
574349号明細書においては、プログラム命令が特
定の主記憶装置場所から汎用レジスタへのデータ転送を
要求する。このシステムは、以前のロード命令からのデ
ータがハードウエア・レジスタの1つに依然ストアされ
ている場合に、同じ特定主記憶装置場所に関するその後
のロード命令が中央処理装置に直ちに利用可能なハード
ウエア・レジスタにデータを貯蔵することを許容するた
めにポインタを使用している。
【0005】米国特許第4697233号明細書はパイ
プライン式アーキテクチュアを有するコンピュータ・シ
ステムに比較スタックを具備させることによってデータ
の一貫性を保っている。スタック構造は、各データ・ワ
ードの所定数のビットが比較スタックに貯蔵されるよう
に部分的に二重化されている。読み取りのときには、適
切なデコードが行われたことを調べるためにスタック・
レジスタに貯蔵されたビットと比較するためにこのビッ
トが用いられ、これによりパイプラインにおけるデータ
のデータ整合性を保っている。
プライン式アーキテクチュアを有するコンピュータ・シ
ステムに比較スタックを具備させることによってデータ
の一貫性を保っている。スタック構造は、各データ・ワ
ードの所定数のビットが比較スタックに貯蔵されるよう
に部分的に二重化されている。読み取りのときには、適
切なデコードが行われたことを調べるためにスタック・
レジスタに貯蔵されたビットと比較するためにこのビッ
トが用いられ、これによりパイプラインにおけるデータ
のデータ整合性を保っている。
【0006】米国特許第4638429号明細書では、
ストア動作がまだ完了していない先行命令によって修正
されるべきオペランドを後続命令が使用するか否かを検
知するためのオペランド・ストア・コンフリクト(OS
C)回路を有するパイプライン制御を用いたデータ処理
装置が検討されている。OSC回路はそのストア動作を
まだ完了していない正しい順序のストア命令の実行結果
を検知し、これがストア動作に先行するフェッチ命令の
オペランドとして利用される。コンフリクトが検知され
そしてストア動作が先行命令であるときには制御装置が
フェッチされたオペランドを後続命令のオペランド位置
に整列させこれらオペランドをマージする。
ストア動作がまだ完了していない先行命令によって修正
されるべきオペランドを後続命令が使用するか否かを検
知するためのオペランド・ストア・コンフリクト(OS
C)回路を有するパイプライン制御を用いたデータ処理
装置が検討されている。OSC回路はそのストア動作を
まだ完了していない正しい順序のストア命令の実行結果
を検知し、これがストア動作に先行するフェッチ命令の
オペランドとして利用される。コンフリクトが検知され
そしてストア動作が先行命令であるときには制御装置が
フェッチされたオペランドを後続命令のオペランド位置
に整列させこれらオペランドをマージする。
【0007】
【発明が解決しようとする課題】従来技術は命令の不正
順序実行を許容するためにロード動作とストア動作とを
比較するいかなる形式のシステムも提供していない。幾
つかの通常のシステムは命令実行の前に存在することあ
る何らかのデータ従属性コンフリクトを調べる能力を持
っているが、命令実行に続いてロード動作およびストア
動作の順序を比較していない。データのストアのための
メモリ・アドレスはストア命令が実行されるまで発生さ
れないので、ロードとストアのコンフリクトを実行の前
に検知することは事実可能でない。データのロード動作
とストア動作とのコンフリクトは可成り希にしか生じな
いが、この状態が検知されて是正されることが極めて重
要である。これらのコンフリクトを是正しないならば不
正データ等の処理誤りをもたらす結果となる。従って、
実行されたときにコンフリクトを生じる不正順序ロード
命令およびストア命令を検知することのできるシステム
に対する需要が存在することが判る。
順序実行を許容するためにロード動作とストア動作とを
比較するいかなる形式のシステムも提供していない。幾
つかの通常のシステムは命令実行の前に存在することあ
る何らかのデータ従属性コンフリクトを調べる能力を持
っているが、命令実行に続いてロード動作およびストア
動作の順序を比較していない。データのストアのための
メモリ・アドレスはストア命令が実行されるまで発生さ
れないので、ロードとストアのコンフリクトを実行の前
に検知することは事実可能でない。データのロード動作
とストア動作とのコンフリクトは可成り希にしか生じな
いが、この状態が検知されて是正されることが極めて重
要である。これらのコンフリクトを是正しないならば不
正データ等の処理誤りをもたらす結果となる。従って、
実行されたときにコンフリクトを生じる不正順序ロード
命令およびストア命令を検知することのできるシステム
に対する需要が存在することが判る。
【0008】
【課題を解決するための手段】従来技術とは対照的に、
本発明は命令をプロセッサ・バスに与えるために命令キ
ャッシュ装置(ICU)およびディスパッチ装置を含む
システムを提供する。このディスパッチ装置は処理の効
率を増大するため命令の順序を変更する能力を有するも
のである。完了装置もまた具備され、これは命令がIC
Uからディスパッチ装置に与えられるときに(順序再配
置の前に)命令の順序を保つものである。少なくとも1
つのロード/ストア装置が設けられ、これは固定小数点
装置、浮動小数点装置等の処理装置に命令をロードする
ためのものである。更に、命令のアドレスを含むロード
およびストア待ち行列が設けられる。ストア命令の実行
中にこのアドレスはこのストア命令の前に不正順序で実
行されたロード待ち行列中の以前に実行されたロード命
令のアドレスと比較される。プログラム・カウンタが、
実行されようとするストア命令のプログラム番号をロー
ド待ち行列中のロード命令のプログラム番号と比較す
る。本発明ではこの後、ロード命令およびストア命令の
アドレス、およびこれらの命令のプログラム番号が互い
に比較される。これらのアドレスが同じでないならば問
題は生じない。即ち、アドレスが同じでないならばデー
タがメモリ中の同じ場所にあるわけではないので、比較
される命令の間にコンフリクトは存在しない。また、ア
ドレスが同じであり、ストア命令のプログラム番号がロ
ード命令のプログラム番号より大であるならば、命令は
正しい順序で実行されたことになり(ロード命令はスト
ア命令に正しく先行した)問題はない。しかしながら、
アドレスが同じでありかつロード命令がストア命令に先
行するというような正しくない順序になっているならば
(ストア命令のプログラム番号がロード命令のプログラ
ム番号よりも小であるためこのことは検知される)、問
題があり、命令をシステムに与える前に少なくとも命令
の一部が順序再配置されかつ再実行されなければならな
い。
本発明は命令をプロセッサ・バスに与えるために命令キ
ャッシュ装置(ICU)およびディスパッチ装置を含む
システムを提供する。このディスパッチ装置は処理の効
率を増大するため命令の順序を変更する能力を有するも
のである。完了装置もまた具備され、これは命令がIC
Uからディスパッチ装置に与えられるときに(順序再配
置の前に)命令の順序を保つものである。少なくとも1
つのロード/ストア装置が設けられ、これは固定小数点
装置、浮動小数点装置等の処理装置に命令をロードする
ためのものである。更に、命令のアドレスを含むロード
およびストア待ち行列が設けられる。ストア命令の実行
中にこのアドレスはこのストア命令の前に不正順序で実
行されたロード待ち行列中の以前に実行されたロード命
令のアドレスと比較される。プログラム・カウンタが、
実行されようとするストア命令のプログラム番号をロー
ド待ち行列中のロード命令のプログラム番号と比較す
る。本発明ではこの後、ロード命令およびストア命令の
アドレス、およびこれらの命令のプログラム番号が互い
に比較される。これらのアドレスが同じでないならば問
題は生じない。即ち、アドレスが同じでないならばデー
タがメモリ中の同じ場所にあるわけではないので、比較
される命令の間にコンフリクトは存在しない。また、ア
ドレスが同じであり、ストア命令のプログラム番号がロ
ード命令のプログラム番号より大であるならば、命令は
正しい順序で実行されたことになり(ロード命令はスト
ア命令に正しく先行した)問題はない。しかしながら、
アドレスが同じでありかつロード命令がストア命令に先
行するというような正しくない順序になっているならば
(ストア命令のプログラム番号がロード命令のプログラ
ム番号よりも小であるためこのことは検知される)、問
題があり、命令をシステムに与える前に少なくとも命令
の一部が順序再配置されかつ再実行されなければならな
い。
【0009】本発明のその他の目的、特徴および利点は
添付図面を参照してなされる以下の説明から明らかとな
るであろう。
添付図面を参照してなされる以下の説明から明らかとな
るであろう。
【0010】
【実施例】図1にはプロセッサ・システムの種々の要素
が示されている。これらの要素は複数の集積回路装置
(チップ)に含まれても良く、また単一のデバイスに組
み込まれても良い。好適な実施例において本発明のプロ
セッサは単一のチップに組み込まれており、これはIB
M社によって設計され製造されたPowerPCプロセ
ッサの1つである(PowerPCはIBM社の商標で
ある)。しかしながら、命令の順序を変更する能力を有
する処理システムであるならば如何なるものでも本発明
の目的において使用できることは勿論である。例えば、
IBM RISC System/6000縮小命令セ
ット・コンピュータの種々のモデルは浮動小数点命令を
不正順序で実行する能力を持っており、従って本発明を
用いることができるものである。
が示されている。これらの要素は複数の集積回路装置
(チップ)に含まれても良く、また単一のデバイスに組
み込まれても良い。好適な実施例において本発明のプロ
セッサは単一のチップに組み込まれており、これはIB
M社によって設計され製造されたPowerPCプロセ
ッサの1つである(PowerPCはIBM社の商標で
ある)。しかしながら、命令の順序を変更する能力を有
する処理システムであるならば如何なるものでも本発明
の目的において使用できることは勿論である。例えば、
IBM RISC System/6000縮小命令セ
ット・コンピュータの種々のモデルは浮動小数点命令を
不正順序で実行する能力を持っており、従って本発明を
用いることができるものである。
【0011】ストア命令は処理装置による操作の結果で
あるデータを、キャッシュまたはバッファ等を介してメ
モリ場所に置くものであるから、ストア命令の実行の遅
延はプロセッサの性能を強化する。他方、ロード動作は
処理装置によって操作するためにデータをシステムのレ
ジスタ例えば浮動小数点レジスタに置くものであるか
ら、実際の計算動作を行うものである。従って、メモリ
にデータを貯蔵するためにマシン・サイクルを用いるこ
となく可能な限り多くのロード動作を実行することはシ
ステム性能の強化につながることになる。しかしなが
ら、ロード命令がメモリ場所からデータを取り出すこと
を必要とし、かつその場所に正しいデータが未だ貯蔵さ
れていない場合には問題がある。即ち、不正順序命令の
ためメモリ場所に正しいデータが未だに貯蔵されていな
いわけである。本発明は、許容できない不正順序状態が
何時存在するかを調べそして命令を順序再配列し再実行
することによりこの問題を検知しそして解決するもので
ある。
あるデータを、キャッシュまたはバッファ等を介してメ
モリ場所に置くものであるから、ストア命令の実行の遅
延はプロセッサの性能を強化する。他方、ロード動作は
処理装置によって操作するためにデータをシステムのレ
ジスタ例えば浮動小数点レジスタに置くものであるか
ら、実際の計算動作を行うものである。従って、メモリ
にデータを貯蔵するためにマシン・サイクルを用いるこ
となく可能な限り多くのロード動作を実行することはシ
ステム性能の強化につながることになる。しかしなが
ら、ロード命令がメモリ場所からデータを取り出すこと
を必要とし、かつその場所に正しいデータが未だ貯蔵さ
れていない場合には問題がある。即ち、不正順序命令の
ためメモリ場所に正しいデータが未だに貯蔵されていな
いわけである。本発明は、許容できない不正順序状態が
何時存在するかを調べそして命令を順序再配列し再実行
することによりこの問題を検知しそして解決するもので
ある。
【0012】図1には命令キャッシュ装置(ICU)1
が含まれており、これはオペレーティング・システム例
えばIBM AIXシステム(AIXはIBM社の商標
である)またはアプリケーション・プログラム等から受
け取った命令を内蔵するものである。これらの命令は本
発明の処理システムによって実行されるべきものであ
る。具体的には少なくとも1つの浮動小数点装置(FP
U)12及び少なくとも1つの固定小数点装置(FX
U)11が含まれ、図1に示されている。これらの処理
装置はこの技術分野でよく知られたものであり、IBM
RISC SysteM/6000に関する出版物に
詳しく記述されている。具体的に言うと、FPUは第3
4ないし42頁に、またFXUは第24ないし32頁に
記述されている。
が含まれており、これはオペレーティング・システム例
えばIBM AIXシステム(AIXはIBM社の商標
である)またはアプリケーション・プログラム等から受
け取った命令を内蔵するものである。これらの命令は本
発明の処理システムによって実行されるべきものであ
る。具体的には少なくとも1つの浮動小数点装置(FP
U)12及び少なくとも1つの固定小数点装置(FX
U)11が含まれ、図1に示されている。これらの処理
装置はこの技術分野でよく知られたものであり、IBM
RISC SysteM/6000に関する出版物に
詳しく記述されている。具体的に言うと、FPUは第3
4ないし42頁に、またFXUは第24ないし32頁に
記述されている。
【0013】ディスパッチ装置5およびブランチ処理装
置7もまた図1のシステムに含まれている。ディスパッ
チ装置はICU1から命令を受け取ってその実行の前に
これらの命令を組織する。ディスパッチ装置5は命令の
順序を変更することにより命令効率の改善が図られうる
か否かを調べるものである。
置7もまた図1のシステムに含まれている。ディスパッ
チ装置はICU1から命令を受け取ってその実行の前に
これらの命令を組織する。ディスパッチ装置5は命令の
順序を変更することにより命令効率の改善が図られうる
か否かを調べるものである。
【0014】ブランチ装置7はディスパッチ装置5と提
携して動作するものであり、ブランチ命令により生じる
如何なるパイプライン・ペナルティをも低減するために
用いられる。3形式のブランチ実行が可能である。これ
らは、無条件ブランチ、ブランチしない条件付きブラン
チ、およびブランチする条件付きブランチである。無条
件ブランチおよびブランチしない条件付きブランチは見
かけのマシン・サイクルを要しないが(ゼロ・サイクル
・ブランチ)、ブランチする条件付きブランチは3サイ
クルまでの遅延を生じることがある。ディスパッチ装置
およびブランチ装置によって得られる効率、即ち命令の
相互従属性の追求はブランチ装置をシステムに対して透
明にさせうる。言い換えると、効率の増大(省かれたサ
イクル)がディスパッチ装置およびブランチ装置により
用いられるサイクルを補う。ディスパッチ装置5および
ブランチ装置7はIBM RISC SysteM/6
000に関する出版物に詳しく記述されている。
携して動作するものであり、ブランチ命令により生じる
如何なるパイプライン・ペナルティをも低減するために
用いられる。3形式のブランチ実行が可能である。これ
らは、無条件ブランチ、ブランチしない条件付きブラン
チ、およびブランチする条件付きブランチである。無条
件ブランチおよびブランチしない条件付きブランチは見
かけのマシン・サイクルを要しないが(ゼロ・サイクル
・ブランチ)、ブランチする条件付きブランチは3サイ
クルまでの遅延を生じることがある。ディスパッチ装置
およびブランチ装置によって得られる効率、即ち命令の
相互従属性の追求はブランチ装置をシステムに対して透
明にさせうる。言い換えると、効率の増大(省かれたサ
イクル)がディスパッチ装置およびブランチ装置により
用いられるサイクルを補う。ディスパッチ装置5および
ブランチ装置7はIBM RISC SysteM/6
000に関する出版物に詳しく記述されている。
【0015】これに加えて、ディスパッチ装置5はブラ
ンチ装置7と協動して命令の実行の前に命令の順序再配
列を可能にする。更に具体的に言うと、条件付きブラン
チ命令はブランチ装置による実行のためにディスパッチ
装置5内の命令待ち行列(図示せず)にロードされう
る。本発明のスーパースカラー・プロセッサの如きパイ
プライン式プロセッサにおける実行時間遅延を最小化し
ようとする努力において条件付きブランチの存在が予測
される。条件付きブランチがブランチしないものと予測
されるならばディスパッチ装置5にある順次の命令がそ
のまま実行される。しかしこの予測が正しくないならば
ディスパッチ装置5にある命令待ち行列から条件付きブ
ランチ命令を従える順次の命令が追放されてICUから
目標の命令がフェッチされねばならない。この代わり
に、条件付きブランチがブランチするものと予測される
ならば目標の命令がフェッチされ、予測が正解として解
決されるならば条件付きブランチに後続するために用い
られる。ブランチするという予測が正しくないならば目
標の命令が追放されてプログラム順における条件付きブ
ランチ命令に続く順次の命令が取り出されなければなら
ないことは勿論である。一般的に言って、命令バッファ
(ディスパッチ装置はここから命令をディスパッチす
る)内の命令のディスパッチ状態は定期的に調べられ
る。命令バッファの始点にある命令の状態に応答して残
りの命令が命令バッファ内でシフトされ、そして命令の
部分的グループが選択的に制御される多重化回路を用い
て命令待ち行列から命令バッファにロードされる。この
ようにして命令の以前のグループが完全にディスパッチ
されることを必要とすることなく、追加の命令が利用可
能な処理装置にディスパッチされうる。従って、ディス
パッチ装置5は図1のFXU11およびFPU12等の
処理装置に不正順序命令を与えることができる。199
3年1月8日に米国において出願された「スーパースカ
ラー・プロセッサ・システムにおける命令のディスパッ
チ効率を増大する方法および装置」に関する発明(出願
人整理番号AT992166)にはディスパッチ装置5
の動作が詳細に述べられている。
ンチ装置7と協動して命令の実行の前に命令の順序再配
列を可能にする。更に具体的に言うと、条件付きブラン
チ命令はブランチ装置による実行のためにディスパッチ
装置5内の命令待ち行列(図示せず)にロードされう
る。本発明のスーパースカラー・プロセッサの如きパイ
プライン式プロセッサにおける実行時間遅延を最小化し
ようとする努力において条件付きブランチの存在が予測
される。条件付きブランチがブランチしないものと予測
されるならばディスパッチ装置5にある順次の命令がそ
のまま実行される。しかしこの予測が正しくないならば
ディスパッチ装置5にある命令待ち行列から条件付きブ
ランチ命令を従える順次の命令が追放されてICUから
目標の命令がフェッチされねばならない。この代わり
に、条件付きブランチがブランチするものと予測される
ならば目標の命令がフェッチされ、予測が正解として解
決されるならば条件付きブランチに後続するために用い
られる。ブランチするという予測が正しくないならば目
標の命令が追放されてプログラム順における条件付きブ
ランチ命令に続く順次の命令が取り出されなければなら
ないことは勿論である。一般的に言って、命令バッファ
(ディスパッチ装置はここから命令をディスパッチす
る)内の命令のディスパッチ状態は定期的に調べられ
る。命令バッファの始点にある命令の状態に応答して残
りの命令が命令バッファ内でシフトされ、そして命令の
部分的グループが選択的に制御される多重化回路を用い
て命令待ち行列から命令バッファにロードされる。この
ようにして命令の以前のグループが完全にディスパッチ
されることを必要とすることなく、追加の命令が利用可
能な処理装置にディスパッチされうる。従って、ディス
パッチ装置5は図1のFXU11およびFPU12等の
処理装置に不正順序命令を与えることができる。199
3年1月8日に米国において出願された「スーパースカ
ラー・プロセッサ・システムにおける命令のディスパッ
チ効率を増大する方法および装置」に関する発明(出願
人整理番号AT992166)にはディスパッチ装置5
の動作が詳細に述べられている。
【0016】順序待ち行列3が設けられ、これは命令シ
ーケンスがICU1からディスパッチ装置5に与えられ
るときに完了論理装置15が命令シーケンスを維持する
ことを許容する。順序待ち行列3にある命令は、必要に
応じ命令を最初の順序に再配列する事を可能にするため
完了論理装置15によって参照として用いられる。デー
タ・バス2は少なくとも1つのロード/ストア(L/
S)装置9に命令を与えるために利用される。このロー
ド/ストア(L/S)装置9は汎用レジスタ(GPR)
ファイルをロードおよびストアするために利用される。
L/S装置9はGPRからデータを取り出してFXU1
1およびFPU12等の処理装置で実行するためこの処
理装置にロードし、この処理装置で操作されたデータを
後でメモリ場所に置くためGPRに貯蔵する。もう1つ
のデータ・バス4が設けられ、これはL/S装置9がF
XUおよびFPUならびに二重ポート・キャッシュ13
と通信できるようにする。キャッシュ13はまたシステ
ム・メモリ21(図3)にも接続されて処理装置にロー
ドされまたメモリにストアされようとするデータを一時
的に貯蔵する。キャッシュ13はL/S装置9から2つ
のデータ・ワードをロードし、ストアすることができ
る。
ーケンスがICU1からディスパッチ装置5に与えられ
るときに完了論理装置15が命令シーケンスを維持する
ことを許容する。順序待ち行列3にある命令は、必要に
応じ命令を最初の順序に再配列する事を可能にするため
完了論理装置15によって参照として用いられる。デー
タ・バス2は少なくとも1つのロード/ストア(L/
S)装置9に命令を与えるために利用される。このロー
ド/ストア(L/S)装置9は汎用レジスタ(GPR)
ファイルをロードおよびストアするために利用される。
L/S装置9はGPRからデータを取り出してFXU1
1およびFPU12等の処理装置で実行するためこの処
理装置にロードし、この処理装置で操作されたデータを
後でメモリ場所に置くためGPRに貯蔵する。もう1つ
のデータ・バス4が設けられ、これはL/S装置9がF
XUおよびFPUならびに二重ポート・キャッシュ13
と通信できるようにする。キャッシュ13はまたシステ
ム・メモリ21(図3)にも接続されて処理装置にロー
ドされまたメモリにストアされようとするデータを一時
的に貯蔵する。キャッシュ13はL/S装置9から2つ
のデータ・ワードをロードし、ストアすることができ
る。
【0017】改名(リネーム)レジスタ17はデータが
システムのレジスタ19に置かれる前にデータ名の変更
(改名)を可能ならしめ、データをシステム・レジスタ
19に一層効率的に置数する能力を与える。これらのシ
ステム・レジスタはアーキテクチュア・レジスタの組で
あり、これらは番号により組織されてFPUおよびFX
U等の処理装置にデータを入力するのに用いられる。デ
ータが一旦システム・レジスタに置数されると、これら
のレジスタはアーキテクチュアに委託されたことにな
る。しかしながら、改名レジスタはシステム・レジスタ
の一時的溜まりであり、これはシステム・レジスタに入
力する前にデータを保持するものである。データが改名
レジスタに置数されるならば、このレジスタはアーキテ
クチュアに未だ委託されておらず、従って入力する前に
除去されうる。
システムのレジスタ19に置かれる前にデータ名の変更
(改名)を可能ならしめ、データをシステム・レジスタ
19に一層効率的に置数する能力を与える。これらのシ
ステム・レジスタはアーキテクチュア・レジスタの組で
あり、これらは番号により組織されてFPUおよびFX
U等の処理装置にデータを入力するのに用いられる。デ
ータが一旦システム・レジスタに置数されると、これら
のレジスタはアーキテクチュアに委託されたことにな
る。しかしながら、改名レジスタはシステム・レジスタ
の一時的溜まりであり、これはシステム・レジスタに入
力する前にデータを保持するものである。データが改名
レジスタに置数されるならば、このレジスタはアーキテ
クチュアに未だ委託されておらず、従って入力する前に
除去されうる。
【0018】表1は処理効率を改善するため不正順序で
実行されうる命令の代表的なものを示す。
実行されうる命令の代表的なものを示す。
【0019】 表1 プログラ 命令 プログラ 命令 ム番号 ム番号 0 ロード R1(A) 0 ロード R1(A) 1 ストア R2(A) 2 ロード R3(B) 2 ロード R3(B) 3 加算 R1、R3,R1 3 加算 R1、R3,R1 1 ストア R2(A) 命令0はデータをメモリ場所(アドレス)Aからレジス
タR1、例えば処理装置11、12に対応するレジスタ
にロードする。命令1はその後レジスタR2からの新し
いデータをメモリ場所Aにストアし、命令2はメモリ場
所BからのデータをレジスタR3にロードする。命令3
はレジスタR1の内容をレジスタR3の内容に加算して
結果をレジスタR4に置数する。命令のシーケンスがこ
のようにして実行されるとするならば、4つの機能ステ
ップが必要になることが判る。即ち、1つのステップは
データをメモリAからレジスタR1にロードするもので
あり、第2のステップはデータをレジスタR2からメモ
リAニストアするものであり、第3のステップはデータ
をメモリBからレジスタR3にロードするものであり、
第4のステップはレジスタR3の内容とレジスタR1の
内容とを加算して合計をレジスタR4に置数するもので
ある。しかしながら、命令シーケンスが変更されるなら
ば、同じ機能がより小さい番号のステップで行われう
る。例えば、命令1(ストア)がロード命令(0および
2)の後に置かれるならば、ロード命令は単一ステップ
の間に平行して実行される。更に具体的に言うと、二重
ポート・キャッシュ13はメモリから2つのデータ・ワ
ードを取り出すことができるので、命令0および2は同
時に実行されうる。この例においては、第1ステップの
間にメモリ場所Aの内容はレジスタR1にロードされ、
メモリ場所Bの内容はレジスタR3にロードされること
になる。次に、命令3が第2ステップの間にレジスタR
1およびR3の内容を加算して結果をレジスタR4に置
数する。最後に、第3ステップの間に、操作されたデー
タがレジスタR2からメモリ場所Aにストアされる。こ
のように命令シーケンスを変更することによって、同じ
動作がより少ない処理時間を用いて遂行される。この例
は極端に単純なものであるが、この形式の命令順序再配
列が処理資源の計り知れない節約をいかにして与えるこ
とができるものであるかということが当業者に理解でき
るであろう。
タR1、例えば処理装置11、12に対応するレジスタ
にロードする。命令1はその後レジスタR2からの新し
いデータをメモリ場所Aにストアし、命令2はメモリ場
所BからのデータをレジスタR3にロードする。命令3
はレジスタR1の内容をレジスタR3の内容に加算して
結果をレジスタR4に置数する。命令のシーケンスがこ
のようにして実行されるとするならば、4つの機能ステ
ップが必要になることが判る。即ち、1つのステップは
データをメモリAからレジスタR1にロードするもので
あり、第2のステップはデータをレジスタR2からメモ
リAニストアするものであり、第3のステップはデータ
をメモリBからレジスタR3にロードするものであり、
第4のステップはレジスタR3の内容とレジスタR1の
内容とを加算して合計をレジスタR4に置数するもので
ある。しかしながら、命令シーケンスが変更されるなら
ば、同じ機能がより小さい番号のステップで行われう
る。例えば、命令1(ストア)がロード命令(0および
2)の後に置かれるならば、ロード命令は単一ステップ
の間に平行して実行される。更に具体的に言うと、二重
ポート・キャッシュ13はメモリから2つのデータ・ワ
ードを取り出すことができるので、命令0および2は同
時に実行されうる。この例においては、第1ステップの
間にメモリ場所Aの内容はレジスタR1にロードされ、
メモリ場所Bの内容はレジスタR3にロードされること
になる。次に、命令3が第2ステップの間にレジスタR
1およびR3の内容を加算して結果をレジスタR4に置
数する。最後に、第3ステップの間に、操作されたデー
タがレジスタR2からメモリ場所Aにストアされる。こ
のように命令シーケンスを変更することによって、同じ
動作がより少ない処理時間を用いて遂行される。この例
は極端に単純なものであるが、この形式の命令順序再配
列が処理資源の計り知れない節約をいかにして与えるこ
とができるものであるかということが当業者に理解でき
るであろう。
【0020】図3には前述のキャッシュ13、L/S装
置9およびメモリ21に関連して本発明の特定の要素が
示されている。ロード待ち行列31は、ストア命令の前
に実行されたロード命令のアドレスを、プログラム・カ
ウンタによって追跡されるロード命令のプログラム番号
と共にストアするために設けられる。これらのロード・
アドレスおよびプログラム番号はL/S装置9から受け
取られ、これらがアーキテクチュアに委託されるとき、
例えば他の例外状態または割り込みの待ち等の状態が存
在しないときにロード待ち行列から取り除かれる。スト
ア完了待ち行列33もまたL/S装置9に相互接続さ
れ、これはアーキテクチュアに未だ委託されていない実
行済みストア命令のアドレスおよびプログラム番号を維
持する。これらの実行済みストア命令のアドレスおよび
プログラム番号は、本発明に従いロード待ち行列にある
ロード命令のアドレスおよびプログラム番号と比較され
る。ストア完了待ち行列にある、実行済みではあるがメ
モリにストアされるようには未だ委託されていないスト
ア命令のアドレスおよびプログラム番号はストア完了待
ち行列33に置かれる。次にストア動作の結果(データ
およびアドレス)は、それが未だアーキテクチュアに委
託されていないならばストア終了待ち行列35に置かれ
ることになる。ストア終了待ち行列35にあるストア動
作は完了論理装置15によりキャッシュ13を介してメ
モリ21に置かれることになる。ロード待ち行列31、
ストア完了待ち行列33、およびストア終了待ち行列3
5はすべて本発明の処理システムの待ち行列システムの
一部である。
置9およびメモリ21に関連して本発明の特定の要素が
示されている。ロード待ち行列31は、ストア命令の前
に実行されたロード命令のアドレスを、プログラム・カ
ウンタによって追跡されるロード命令のプログラム番号
と共にストアするために設けられる。これらのロード・
アドレスおよびプログラム番号はL/S装置9から受け
取られ、これらがアーキテクチュアに委託されるとき、
例えば他の例外状態または割り込みの待ち等の状態が存
在しないときにロード待ち行列から取り除かれる。スト
ア完了待ち行列33もまたL/S装置9に相互接続さ
れ、これはアーキテクチュアに未だ委託されていない実
行済みストア命令のアドレスおよびプログラム番号を維
持する。これらの実行済みストア命令のアドレスおよび
プログラム番号は、本発明に従いロード待ち行列にある
ロード命令のアドレスおよびプログラム番号と比較され
る。ストア完了待ち行列にある、実行済みではあるがメ
モリにストアされるようには未だ委託されていないスト
ア命令のアドレスおよびプログラム番号はストア完了待
ち行列33に置かれる。次にストア動作の結果(データ
およびアドレス)は、それが未だアーキテクチュアに委
託されていないならばストア終了待ち行列35に置かれ
ることになる。ストア終了待ち行列35にあるストア動
作は完了論理装置15によりキャッシュ13を介してメ
モリ21に置かれることになる。ロード待ち行列31、
ストア完了待ち行列33、およびストア終了待ち行列3
5はすべて本発明の処理システムの待ち行列システムの
一部である。
【0021】ロード待ち行列31、ストア完了待ち行列
33、およびストア終了待ち行列35は本発明の処理シ
ステムの個別の要素であり、これらはチップ上の種々の
場所に物理的に配置されうる。これらの待ち行列31、
33、35にストアされたアドレスは、データがメモリ
21から取り出しできるように、またそこにストアでき
るようにするため、キャッシュ13に与えられなければ
ならないので、これらの待ち行列にはキャッシュ13が
組み合わされる。本発明の好適な実施例においてこれら
の待ち行列31、33、35は64ビットのレジスタで
あり、これはおよそ34組のアドレスおよびプログラム
番号をストアする能力を有する。
33、およびストア終了待ち行列35は本発明の処理シ
ステムの個別の要素であり、これらはチップ上の種々の
場所に物理的に配置されうる。これらの待ち行列31、
33、35にストアされたアドレスは、データがメモリ
21から取り出しできるように、またそこにストアでき
るようにするため、キャッシュ13に与えられなければ
ならないので、これらの待ち行列にはキャッシュ13が
組み合わされる。本発明の好適な実施例においてこれら
の待ち行列31、33、35は64ビットのレジスタで
あり、これはおよそ34組のアドレスおよびプログラム
番号をストアする能力を有する。
【0022】ある命令が不正順序で実行されたときに遭
遇する問題と、この状態を検知することがなぜ必要なの
かを説明するために表2を用いて説明する。
遇する問題と、この状態を検知することがなぜ必要なの
かを説明するために表2を用いて説明する。
【0023】 表2 プログラ 命令 プログラ 命令 ム番号 ム番号 0 加算 R1、R3,R4 0 ストア R7(A) 1 ストア R1(A) 2 ロード R5(A) 2 ロード R5(A) 1 ストア R1(A) 3 加算 R7、R5,R6 1 加算 R7、R5,R6 4 ストア R7(A) 2 ストア R7(A) 命令0はあるハードウエア・レジスタR3およびR4の
内容を加算して結果をレジスタR1に置数する。次に命
令1はレジスタR1の内容をメモリ場所Aにストアす
る。次に命令2はメモリAからレジスタR5にデータを
ロードし、命令3はレジスタR5の内容をレジスタR6
の内容と加算して結果をレジスタR7に置数する。最後
に、命令4はレジスタR7の内容をメモリ場所Aにスト
アする。
内容を加算して結果をレジスタR1に置数する。次に命
令1はレジスタR1の内容をメモリ場所Aにストアす
る。次に命令2はメモリAからレジスタR5にデータを
ロードし、命令3はレジスタR5の内容をレジスタR6
の内容と加算して結果をレジスタR7に置数する。最後
に、命令4はレジスタR7の内容をメモリ場所Aにスト
アする。
【0024】しかしながら、命令のこの組については、
処理システムがディスパッチ装置を介して命令の順序を
再配列するときにはコンフリクトが生じる。例えば、命
令1および2が、ストア命令をロード命令の後に置くよ
うに逆順にされるならば、コンフリクトが生じることに
なる。命令0はレジスタR3とR4の内容を加算して結
果をレジスタR1に置数した。次に命令2はメモリAに
現在何があろうともそこにあるデータをレジスタR5に
ロードし、命令1がその後レジスタR1のデータをメモ
リ場所Aにストアする。命令3が再びレジスタR5およ
びR6の内容を加算して結果をレジスタR7に置数す
る。従って、正しくないデータがレジスタR5にロード
されている。メモリAに最初どのようなデータがあろう
とも、これは、所望のデータ(レジスタR3とR4の
和)がメモリ場所Aに置かれる前にレジスタR5にロー
ドされた。この結果、正しくないデータがそのときレジ
スタR6の内容に加算されて、正しくないデータをレジ
スタR7に置数させることになる。従って、ストア動作
をロード動作の後に実行することは常に可能なことでは
なく、この型の状態を検知することが命令を不正順序で
実行する能力を有するシステムに必要とされることが判
る。
処理システムがディスパッチ装置を介して命令の順序を
再配列するときにはコンフリクトが生じる。例えば、命
令1および2が、ストア命令をロード命令の後に置くよ
うに逆順にされるならば、コンフリクトが生じることに
なる。命令0はレジスタR3とR4の内容を加算して結
果をレジスタR1に置数した。次に命令2はメモリAに
現在何があろうともそこにあるデータをレジスタR5に
ロードし、命令1がその後レジスタR1のデータをメモ
リ場所Aにストアする。命令3が再びレジスタR5およ
びR6の内容を加算して結果をレジスタR7に置数す
る。従って、正しくないデータがレジスタR5にロード
されている。メモリAに最初どのようなデータがあろう
とも、これは、所望のデータ(レジスタR3とR4の
和)がメモリ場所Aに置かれる前にレジスタR5にロー
ドされた。この結果、正しくないデータがそのときレジ
スタR6の内容に加算されて、正しくないデータをレジ
スタR7に置数させることになる。従って、ストア動作
をロード動作の後に実行することは常に可能なことでは
なく、この型の状態を検知することが命令を不正順序で
実行する能力を有するシステムに必要とされることが判
る。
【0025】図5はロード待ち行列31の概念図を示す
ものである。前に述べたように、L/S装置9はすべて
のロード命令アドレスおよびプログラム番号をロード待
ち行列に置く。次にストア命令を実行したとき、ストア
命令の実行の間にL/S装置9によって発生されようと
するアドレスとロード待ち行列にあるアドレス(ロード
命令に対応する)とが比較される。これに加えて、実行
されようとするストア命令のプログラム番号がロード待
ち行列にあるロード命令のプログラム番号と比較され
る。
ものである。前に述べたように、L/S装置9はすべて
のロード命令アドレスおよびプログラム番号をロード待
ち行列に置く。次にストア命令を実行したとき、ストア
命令の実行の間にL/S装置9によって発生されようと
するアドレスとロード待ち行列にあるアドレス(ロード
命令に対応する)とが比較される。これに加えて、実行
されようとするストア命令のプログラム番号がロード待
ち行列にあるロード命令のプログラム番号と比較され
る。
【0026】続いて本発明はストア動作のアドレスがロ
ード待ち行列にあるロード命令のアドレス47の1つと
同じであるか否かを調べる。図5はロード命令アドレス
およびプログラム番号のための5つの位置を有するロー
ド待ち行列31を示す。5つの位置は解説の目的のため
に用いられただけであり、これより多くの位置を有する
ロード待ち行列も本発明によって意図されるものである
ことは勿論である。いずれにしてもL/S装置9からの
ストア命令アドレスは比較器45によりアドレス47と
比較され、L/S装置9にあるプログラム・カウンタか
らのプログラム番号は比較器41および43によってロ
ード待ち行列31にあるロード命令のプログラム番号と
比較される。比較器41はストア命令からのプログラム
番号がロード命令のプログラム番号よりも小であるか否
かを調べ、比較器43はストア命令からのプログラム番
号がロード命令のプログラム番号よりも大であるか否か
を調べる。この比較は別々の命令であるロード命令とス
トア命令との間の比較であるから、これらのプログラム
番号は等しくはなり得ない。比較器45はストア命令の
アドレスがロード待ち行列にあるロード命令のアドレス
と同じであるか否かを調べる。本発明の好適な実施例に
おいて比較器41、43、45は一連のAND,OR、
排他OR,NAND,NOR等のゲートを含むブール論
理アレイの形に具現化される。更に具体的に言うと、ア
ドレス比較器としては特化された回路を利用することが
でき、これは排他OR論理を用いてロード待ち行列にあ
るアドレスの2進値およびストア命令のために発生され
るアドレスの2進値を調べる。これらの値が同じである
ならばこの回路は2進の1を出力し、アドレス値が異な
るものであれば2進の0を出力する。ロード待ち行列に
あるすべてのアドレスは同一のアドレスが存在するか否
かを調べるために、発生されたストア命令のアドレスと
比較される。同様に、ストア命令のプログラム番号がロ
ード待ち行列にあるロード命令のプログラム番号よりも
小であるか否かを調べるために特化された回路が使用さ
れる。この場合には減算回路が使用されても良く、これ
は1プログラム番号から他のプログラム番号を引き、結
果の値が正であるか負であるかにもとづいて何れが他方
よりも小さいかを調べる。例えば、ストア命令のプログ
ラム番号がロード命令のプログラム番号から差し引かれ
て結果が正であるならば、ストア命令のプログラム番号
はロード命令のプログラム番号よりも小である。しかし
結果が負であるならばストア命令のプログラム番号はロ
ード命令のプログラム番号よりも大である。このように
して本発明はストアおよびロード命令が同じメモリを使
用しているか否か、およびこれらの命令の何れが最初に
実行されるべきかを調べることができる。この他の実施
形態はハードワイアによる実施およびソフトウエア比較
器、具体的にはマイクロコードによる実施を含み、これ
らはすべて本発明の範囲に含まれることが意図されてい
る。
ード待ち行列にあるロード命令のアドレス47の1つと
同じであるか否かを調べる。図5はロード命令アドレス
およびプログラム番号のための5つの位置を有するロー
ド待ち行列31を示す。5つの位置は解説の目的のため
に用いられただけであり、これより多くの位置を有する
ロード待ち行列も本発明によって意図されるものである
ことは勿論である。いずれにしてもL/S装置9からの
ストア命令アドレスは比較器45によりアドレス47と
比較され、L/S装置9にあるプログラム・カウンタか
らのプログラム番号は比較器41および43によってロ
ード待ち行列31にあるロード命令のプログラム番号と
比較される。比較器41はストア命令からのプログラム
番号がロード命令のプログラム番号よりも小であるか否
かを調べ、比較器43はストア命令からのプログラム番
号がロード命令のプログラム番号よりも大であるか否か
を調べる。この比較は別々の命令であるロード命令とス
トア命令との間の比較であるから、これらのプログラム
番号は等しくはなり得ない。比較器45はストア命令の
アドレスがロード待ち行列にあるロード命令のアドレス
と同じであるか否かを調べる。本発明の好適な実施例に
おいて比較器41、43、45は一連のAND,OR、
排他OR,NAND,NOR等のゲートを含むブール論
理アレイの形に具現化される。更に具体的に言うと、ア
ドレス比較器としては特化された回路を利用することが
でき、これは排他OR論理を用いてロード待ち行列にあ
るアドレスの2進値およびストア命令のために発生され
るアドレスの2進値を調べる。これらの値が同じである
ならばこの回路は2進の1を出力し、アドレス値が異な
るものであれば2進の0を出力する。ロード待ち行列に
あるすべてのアドレスは同一のアドレスが存在するか否
かを調べるために、発生されたストア命令のアドレスと
比較される。同様に、ストア命令のプログラム番号がロ
ード待ち行列にあるロード命令のプログラム番号よりも
小であるか否かを調べるために特化された回路が使用さ
れる。この場合には減算回路が使用されても良く、これ
は1プログラム番号から他のプログラム番号を引き、結
果の値が正であるか負であるかにもとづいて何れが他方
よりも小さいかを調べる。例えば、ストア命令のプログ
ラム番号がロード命令のプログラム番号から差し引かれ
て結果が正であるならば、ストア命令のプログラム番号
はロード命令のプログラム番号よりも小である。しかし
結果が負であるならばストア命令のプログラム番号はロ
ード命令のプログラム番号よりも大である。このように
して本発明はストアおよびロード命令が同じメモリを使
用しているか否か、およびこれらの命令の何れが最初に
実行されるべきかを調べることができる。この他の実施
形態はハードワイアによる実施およびソフトウエア比較
器、具体的にはマイクロコードによる実施を含み、これ
らはすべて本発明の範囲に含まれることが意図されてい
る。
【0027】図6のフローチャートに関して本発明の動
作を説明する。ステップ1において、命令キャッシュ装
置1から命令セットが取り出されてディスパッチ装置に
与えられる。ディスパッチ装置は、表1に関連して述べ
たように、少しでも効率を利用するために命令の順序を
再配列する事がある(ステップ2)。次に、ステップ3
においてロード命令が考察されているのかまたはストア
命令が考察されているのかが調べられる。ロード命令に
遭遇するならばシステムはステップ3aに進み、そこで
ロード命令が実行される。ロード/ストア装置9は次に
実行されたロード命令のプログラム番号およびアドレス
をステップ4においてロード待ち行列31に置く。しか
しストア命令がステップ3で遭遇されるならば、システ
ムはステップ5に飛んでストア命令が実行される。次に
ストア命令実行中に発生されるアドレスとロード待ち行
列中のロード命令アドレスとが比較される(ステップ
6)。ステップ6でストア命令実行中に発生されるアド
レスがロード待ち行列中のロード命令アドレスに等しく
ないことが判ると、システムはステップ7に進んで命令
の実行を続ける。他方、ステップ6の比較の結果、スト
ア命令実行中に発生されるアドレスがロード待ち行列中
のロード命令アドレスの1つに等しことが判ると、スト
ア命令に対するプログラム番号がロード命令のプログラ
ム番号よりも小さいか否かを調べるためのもう一つの比
較がステップ8で行われる。ストア命令に対するプログ
ラム番号がロード命令のプログラム番号よりも大である
ならば、そのメモリ・アドレスに対するストア動作の前
にロード動作が適正に行われたことになり、この場合コ
ンフリクトは存在しない。動作はこの後ステップ7に進
み命令の実行が続く。しかしながら、ストア命令に対す
るプログラム番号がロード命令のプログラム番号よりも
小であるならば、それはロード命令のプログラム番号よ
りも大でなければならないので(これらは等しくは成り
得ない)、コンフリクトが存在し、システムはステップ
9に進んでロード動作を不適正に実行されたものとマー
ク氏、ロード命令をもとの順序に戻して置く。このもと
の順序に戻す順序再配列は、命令がICU1から順序待
ち行列3を介してディスパッチ装置5に与えられるもと
の順序が完了論理装置に記録されているので可能とな
る。ステップ10は、ストア動作が対応するロード命令
に正しく先行するようにロード命令を再実行する(スト
ア命令は完了することを許容されているので)。
作を説明する。ステップ1において、命令キャッシュ装
置1から命令セットが取り出されてディスパッチ装置に
与えられる。ディスパッチ装置は、表1に関連して述べ
たように、少しでも効率を利用するために命令の順序を
再配列する事がある(ステップ2)。次に、ステップ3
においてロード命令が考察されているのかまたはストア
命令が考察されているのかが調べられる。ロード命令に
遭遇するならばシステムはステップ3aに進み、そこで
ロード命令が実行される。ロード/ストア装置9は次に
実行されたロード命令のプログラム番号およびアドレス
をステップ4においてロード待ち行列31に置く。しか
しストア命令がステップ3で遭遇されるならば、システ
ムはステップ5に飛んでストア命令が実行される。次に
ストア命令実行中に発生されるアドレスとロード待ち行
列中のロード命令アドレスとが比較される(ステップ
6)。ステップ6でストア命令実行中に発生されるアド
レスがロード待ち行列中のロード命令アドレスに等しく
ないことが判ると、システムはステップ7に進んで命令
の実行を続ける。他方、ステップ6の比較の結果、スト
ア命令実行中に発生されるアドレスがロード待ち行列中
のロード命令アドレスの1つに等しことが判ると、スト
ア命令に対するプログラム番号がロード命令のプログラ
ム番号よりも小さいか否かを調べるためのもう一つの比
較がステップ8で行われる。ストア命令に対するプログ
ラム番号がロード命令のプログラム番号よりも大である
ならば、そのメモリ・アドレスに対するストア動作の前
にロード動作が適正に行われたことになり、この場合コ
ンフリクトは存在しない。動作はこの後ステップ7に進
み命令の実行が続く。しかしながら、ストア命令に対す
るプログラム番号がロード命令のプログラム番号よりも
小であるならば、それはロード命令のプログラム番号よ
りも大でなければならないので(これらは等しくは成り
得ない)、コンフリクトが存在し、システムはステップ
9に進んでロード動作を不適正に実行されたものとマー
ク氏、ロード命令をもとの順序に戻して置く。このもと
の順序に戻す順序再配列は、命令がICU1から順序待
ち行列3を介してディスパッチ装置5に与えられるもと
の順序が完了論理装置に記録されているので可能とな
る。ステップ10は、ストア動作が対応するロード命令
に正しく先行するようにロード命令を再実行する(スト
ア命令は完了することを許容されているので)。
【0028】次に表2の命令に関して図5に示された本
発明の例を説明する。この例を説明する都合上、ディス
パッチ装置5は、表2の左欄に示された命令順序を再配
列して表2の右欄に示された順序で実行するものと仮定
される。加算命令が先ず実行され、これにもとのロード
命令が続き、これがメモリAにあるデータをレジスタR
5にロードする。ロード命令が実行されているのでその
アドレス( メモリA)が位置47aに置かれ、プログ
ラム番号(2)がロード待ち行列31の位置49aに置
かれる。次にストア命令1が実行され発生されたそのア
ドレス(A)がロード待ち行列31の位置47にあるア
ドレスと比較される。ストア・アドレスが位置47aに
あるアドレスと等しいことが判るであろう。本発明は次
に比較器41および43を用いてストア命令2のプログ
ラム番号がロード待ち行列31の位置49aにあるプロ
グラム番号よりも小であるか否かを調べる。この例にお
いてはストア命令のプログラム番号1がロード待ち行列
にあるプログラム番号2よりも小さいので、コンフリク
トが存在する。つまり、ストア命令はロード命令の前に
実行されているべきなのである。これらの命令はもとの
順序に効果的に再配列されて再実行されねばならない。
この再実行は種々の方法の1つ、例えば命令のすべてを
もとの順序に実際に戻して命令のすべてを再実行するこ
とにより具現化されうる。もう一つの方法は不適正な不
正順序のロード命令を早期に過ぎる時期に実行されたも
のとしてマークし、一方でストア命令を完了させて結果
をメモリに置くことを許容しつつ、不正であるとマーク
されたロード命令のみを再実行する方法である。ストア
命令は実行を許容されておりまた再実行されるロード命
令に先行することになるので、これは再実行される必要
はない。ロード命令のマーキングはフラグ・ビットを2
進の1または0にセットする事により実施されうる。こ
のようにしてロード命令のマーキングは処理システムに
より割り込みとして受け取られ、この割り込みが命令キ
ャッシュ装置から不正なロード命令を再フェッチさせこ
れを再実行させる。
発明の例を説明する。この例を説明する都合上、ディス
パッチ装置5は、表2の左欄に示された命令順序を再配
列して表2の右欄に示された順序で実行するものと仮定
される。加算命令が先ず実行され、これにもとのロード
命令が続き、これがメモリAにあるデータをレジスタR
5にロードする。ロード命令が実行されているのでその
アドレス( メモリA)が位置47aに置かれ、プログ
ラム番号(2)がロード待ち行列31の位置49aに置
かれる。次にストア命令1が実行され発生されたそのア
ドレス(A)がロード待ち行列31の位置47にあるア
ドレスと比較される。ストア・アドレスが位置47aに
あるアドレスと等しいことが判るであろう。本発明は次
に比較器41および43を用いてストア命令2のプログ
ラム番号がロード待ち行列31の位置49aにあるプロ
グラム番号よりも小であるか否かを調べる。この例にお
いてはストア命令のプログラム番号1がロード待ち行列
にあるプログラム番号2よりも小さいので、コンフリク
トが存在する。つまり、ストア命令はロード命令の前に
実行されているべきなのである。これらの命令はもとの
順序に効果的に再配列されて再実行されねばならない。
この再実行は種々の方法の1つ、例えば命令のすべてを
もとの順序に実際に戻して命令のすべてを再実行するこ
とにより具現化されうる。もう一つの方法は不適正な不
正順序のロード命令を早期に過ぎる時期に実行されたも
のとしてマークし、一方でストア命令を完了させて結果
をメモリに置くことを許容しつつ、不正であるとマーク
されたロード命令のみを再実行する方法である。ストア
命令は実行を許容されておりまた再実行されるロード命
令に先行することになるので、これは再実行される必要
はない。ロード命令のマーキングはフラグ・ビットを2
進の1または0にセットする事により実施されうる。こ
のようにしてロード命令のマーキングは処理システムに
より割り込みとして受け取られ、この割り込みが命令キ
ャッシュ装置から不正なロード命令を再フェッチさせこ
れを再実行させる。
【0029】上述の例を引き続き説明すると、レジスタ
R5およびR6からデータをレジスタR7に置く加算命
令3が次に実行されレジスタR7からメモリ・アドレス
Aにデータがストアされる。この点において本発明は再
びストア命令のアドレスをロード待ち行列31の位置4
7aにあるロード命令のアドレスと比較する。これらの
アドレスは互いに等しく(メモリ・アドレスA)、ここ
でストア命令4のプログラム番号がロード待ち行列31
の位置47aにあるロード命令2のプログラム番号と比
較される。この場合、ストア命令4のプログラム番号は
ロード待ち行列31の位置47aにあるロード命令2の
プログラム番号より大であるから、ストア命令はロード
命令の後に適正に実行されたことになる。処理システム
はその後通常の実行動作を続ける。
R5およびR6からデータをレジスタR7に置く加算命
令3が次に実行されレジスタR7からメモリ・アドレス
Aにデータがストアされる。この点において本発明は再
びストア命令のアドレスをロード待ち行列31の位置4
7aにあるロード命令のアドレスと比較する。これらの
アドレスは互いに等しく(メモリ・アドレスA)、ここ
でストア命令4のプログラム番号がロード待ち行列31
の位置47aにあるロード命令2のプログラム番号と比
較される。この場合、ストア命令4のプログラム番号は
ロード待ち行列31の位置47aにあるロード命令2の
プログラム番号より大であるから、ストア命令はロード
命令の後に適正に実行されたことになる。処理システム
はその後通常の実行動作を続ける。
【0030】通常のシステムの如何なるものも、実行の
後かつその結果がシステムに与えられなければならなく
なる時点の前に許容できない不正順序の命令を検知でき
るものはないことが判るであろう。命令の結果がアーキ
テクチュアに委託される前に(命令実行の後であって
も)不正順序状態を検知することはプロセッサの性能を
大いに強化するものであることが判る。
後かつその結果がシステムに与えられなければならなく
なる時点の前に許容できない不正順序の命令を検知でき
るものはないことが判るであろう。命令の結果がアーキ
テクチュアに委託される前に(命令実行の後であって
も)不正順序状態を検知することはプロセッサの性能を
大いに強化するものであることが判る。
【0031】本発明の特定の好適な実施例が図示され説
明されたが、本発明の精神を逸脱することなく種々の修
正または変更をこの実施例に加えることができることは
勿論である。
明されたが、本発明の精神を逸脱することなく種々の修
正または変更をこの実施例に加えることができることは
勿論である。
【0032】
【図1】本発明で使用されるロード命令及びストア命令
の不正順序実行可能なシステムの諸要素を示すブロック
図。
の不正順序実行可能なシステムの諸要素を示すブロック
図。
【図2】ロード/ストア装置により用いられるキャッシ
ュに接続された本発明のロード/ストア待ち行列を含む
ブロック図。
ュに接続された本発明のロード/ストア待ち行列を含む
ブロック図。
【図3】本発明のロード待ち行列及び許容できない不正
順序状態を調べるためどのようにしてストア命令がロー
ド命令と比較されるかを示す図。
順序状態を調べるためどのようにしてストア命令がロー
ド命令と比較されるかを示す図。
【図4】不正順序のロードとストアのコンフリクトを検
知するために本発明が利用する一連の事象を示すフロー
チャート。
知するために本発明が利用する一連の事象を示すフロー
チャート。
───────────────────────────────────────────────────── フロントページの続き (72)発明者 チンーチェン・カウ アメリカ合衆国テキサス州、オースチン、 ホイッスルストップ・コーブ 6000番地
Claims (8)
- 【請求項1】順序をなす命令シーケンスを実行するデー
タ処理システムにおいて、 第1の順序をなす命令シーケンスを第2の順序に再配列
するための手段と、 上記命令の実行の後、何らかのコンフリクトが存在する
か否かを調べるため上記第2の順序の命令を上記第1の
順序の命令と比較するための手段と、 より成るデータ処理システム。 - 【請求項2】上記比較するための手段は、 第1の形式の命令の実行後、該命令に関する情報をスト
アするための手段と、 上記第1の形式の命令の実行時に第2の形式の命令に関
する情報を与えるための手段と、 を含んで成る請求項1記載のデータ処理システム。 - 【請求項3】上記第1の命令および上記第2の命令は特
定の順序で実行されることを要するものであることを特
徴とする請求項1記載のデータ処理システム。 - 【請求項4】上記情報はメモリ・アドレスおよびプログ
ラム番号である請求項2記載のデータ処理システム。 - 【請求項5】上記比較するための手段は、 上記第1の形式の命令のアドレスおよび上記第2の形式
の命令のアドレスを比較するための手段と、 上記第1の形式の命令のプログラム番号および上記第2
の形式の命令のプログラム番号を比較するための手段
と、 を更に含んで成る請求項4記載のデータ処理システム。 - 【請求項6】上記比較するための手段は、 上記第1の形式の命令のアドレスおよび上記第2の形式
の命令のアドレスが互いに等しく、かつ 上記第2の形
式の命令のプログラム番号が上記第1の形式の命令のプ
ログラム番号よりも小さいとき上記第1の形式の命令の
1つが不正順序で実行されたものと決定するための手段
を、 更に含んで成る請求項5記載のデータ処理システム。 - 【請求項7】上記第1の形式の命令の1つが不正順序で
実行されたことを指示するための手段と、上記不正順序
で実行された上記第1の形式の命令を上記第2の形式の
命令に関し異なる順序で再実行するための手段と、 を更に含んで成る請求項6記載のデータ処理システム。 - 【請求項8】上記第1の形式の命令はロード命令であ
り、上記第2の形式の命令はストア命令である請求項7
記載のデータ処理システム。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US001976 | 1993-01-08 | ||
US08/001,976 US5467473A (en) | 1993-01-08 | 1993-01-08 | Out of order instruction load and store comparison |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH07160501A true JPH07160501A (ja) | 1995-06-23 |
JP2597811B2 JP2597811B2 (ja) | 1997-04-09 |
Family
ID=21698673
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP5269218A Expired - Lifetime JP2597811B2 (ja) | 1993-01-08 | 1993-10-27 | データ処理システム |
Country Status (3)
Country | Link |
---|---|
US (1) | US5467473A (ja) |
EP (1) | EP0605869A1 (ja) |
JP (1) | JP2597811B2 (ja) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH11512855A (ja) * | 1995-10-06 | 1999-11-02 | アドバンスト・マイクロ・デバイシズ・インコーポレイテッド | ロード/ストアオペレーションのout−of−order実行の制御 |
US7093074B2 (en) | 2000-01-19 | 2006-08-15 | Fujitsu Limited | Storage control device and storage control method |
JP2007509439A (ja) * | 2003-10-22 | 2007-04-12 | インテル コーポレイション | 相互接続ネットワークでの効率的な順序保存用の方法及び装置 |
Families Citing this family (107)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CA2045773A1 (en) * | 1990-06-29 | 1991-12-30 | Compaq Computer Corporation | Byte-compare operation for high-performance processor |
US5903772A (en) * | 1993-10-29 | 1999-05-11 | Advanced Micro Devices, Inc. | Plural operand buses of intermediate widths coupling to narrower width integer and wider width floating point superscalar processing core |
US5878245A (en) | 1993-10-29 | 1999-03-02 | Advanced Micro Devices, Inc. | High performance load/store functional unit and data cache |
DE69429061T2 (de) * | 1993-10-29 | 2002-07-18 | Advanced Micro Devices, Inc. | Superskalarmikroprozessoren |
US5574928A (en) * | 1993-10-29 | 1996-11-12 | Advanced Micro Devices, Inc. | Mixed integer/floating point processor core for a superscalar microprocessor with a plurality of operand buses for transferring operand segments |
EP0651332B1 (en) * | 1993-10-29 | 2001-07-18 | Advanced Micro Devices, Inc. | Linearly addressable microprocessor cache |
US5694553A (en) * | 1994-01-04 | 1997-12-02 | Intel Corporation | Method and apparatus for determining the dispatch readiness of buffered load operations in a processor |
US5724536A (en) * | 1994-01-04 | 1998-03-03 | Intel Corporation | Method and apparatus for blocking execution of and storing load operations during their execution |
US5751986A (en) * | 1994-03-01 | 1998-05-12 | Intel Corporation | Computer system with self-consistent ordering mechanism |
US5559975A (en) * | 1994-06-01 | 1996-09-24 | Advanced Micro Devices, Inc. | Program counter update mechanism |
US6216200B1 (en) * | 1994-10-14 | 2001-04-10 | Mips Technologies, Inc. | Address queue |
CN101211255B (zh) | 1994-12-02 | 2012-07-04 | 英特尔公司 | 对复合操作数进行压缩操作的处理器、设备和计算系统 |
US5699538A (en) * | 1994-12-09 | 1997-12-16 | International Business Machines Corporation | Efficient firm consistency support mechanisms in an out-of-order execution superscaler multiprocessor |
US5784586A (en) * | 1995-02-14 | 1998-07-21 | Fujitsu Limited | Addressing method for executing load instructions out of order with respect to store instructions |
US5745729A (en) * | 1995-02-16 | 1998-04-28 | Sun Microsystems, Inc. | Methods and apparatuses for servicing load instructions |
US5634026A (en) * | 1995-05-12 | 1997-05-27 | International Business Machines Corporation | Source identifier for result forwarding |
US5666550A (en) * | 1995-06-07 | 1997-09-09 | International Business Machines Corporation | Bus operation circuit using CMOS ratio logic circuits |
US5875294A (en) | 1995-06-30 | 1999-02-23 | International Business Machines Corporation | Method and system for halting processor execution in response to an enumerated occurrence of a selected combination of internal states |
US5802340A (en) * | 1995-08-22 | 1998-09-01 | International Business Machines Corporation | Method and system of executing speculative store instructions in a parallel processing computer system |
WO1997008623A1 (en) * | 1995-08-23 | 1997-03-06 | Symantec Corporation | Coherent file system access during defragmentation operations on a storage media |
US5850563A (en) * | 1995-09-11 | 1998-12-15 | International Business Machines Corporation | Processor and method for out-of-order completion of floating-point operations during load/store multiple operations |
US5949971A (en) * | 1995-10-02 | 1999-09-07 | International Business Machines Corporation | Method and system for performance monitoring through identification of frequency and length of time of execution of serialization instructions in a processing system |
US5751983A (en) * | 1995-10-03 | 1998-05-12 | Abramson; Jeffrey M. | Out-of-order processor with a memory subsystem which handles speculatively dispatched load operations |
US5835747A (en) * | 1996-01-26 | 1998-11-10 | Advanced Micro Devices, Inc. | Hierarchical scan logic for out-of-order load/store execution control |
US6038657A (en) * | 1995-10-06 | 2000-03-14 | Advanced Micro Devices, Inc. | Scan chains for out-of-order load/store execution control |
US5765035A (en) * | 1995-11-20 | 1998-06-09 | Advanced Micro Devices, Inc. | Recorder buffer capable of detecting dependencies between accesses to a pair of caches |
US5857096A (en) * | 1995-12-19 | 1999-01-05 | Intel Corporation | Microarchitecture for implementing an instruction to clear the tags of a stack reference register file |
US5940859A (en) * | 1995-12-19 | 1999-08-17 | Intel Corporation | Emptying packed data state during execution of packed data instructions |
US5701508A (en) | 1995-12-19 | 1997-12-23 | Intel Corporation | Executing different instructions that cause different data type operations to be performed on single logical register file |
US6792523B1 (en) | 1995-12-19 | 2004-09-14 | Intel Corporation | Processor with instructions that operate on different data types stored in the same single logical register file |
US5784639A (en) * | 1995-12-29 | 1998-07-21 | Intel Corporation | Load buffer integrated dynamic decoding logic |
US5781790A (en) * | 1995-12-29 | 1998-07-14 | Intel Corporation | Method and apparatus for performing floating point to integer transfers and vice versa |
US5751946A (en) * | 1996-01-18 | 1998-05-12 | International Business Machines Corporation | Method and system for detecting bypass error conditions in a load/store unit of a superscalar processor |
US5848287A (en) | 1996-02-20 | 1998-12-08 | Advanced Micro Devices, Inc. | Superscalar microprocessor including a reorder buffer which detects dependencies between accesses to a pair of caches |
US5761713A (en) * | 1996-03-01 | 1998-06-02 | Hewlett-Packard Co. | Address aggregation system and method for increasing throughput to a multi-banked data cache from a processor by concurrently forwarding an address to each bank |
US5809275A (en) * | 1996-03-01 | 1998-09-15 | Hewlett-Packard Company | Store-to-load hazard resolution system and method for a processor that executes instructions out of order |
US5838942A (en) * | 1996-03-01 | 1998-11-17 | Hewlett-Packard Company | Panic trap system and method |
US5838631A (en) | 1996-04-19 | 1998-11-17 | Integrated Device Technology, Inc. | Fully synchronous pipelined ram |
US5862398A (en) * | 1996-05-15 | 1999-01-19 | Philips Electronics North America Corporation | Compiler generating swizzled instructions usable in a simplified cache layout |
US5796975A (en) * | 1996-05-24 | 1998-08-18 | Hewlett-Packard Company | Operand dependency tracking system and method for a processor that executes instructions out of order |
US5758051A (en) * | 1996-07-30 | 1998-05-26 | International Business Machines Corporation | Method and apparatus for reordering memory operations in a processor |
US6199152B1 (en) | 1996-08-22 | 2001-03-06 | Transmeta Corporation | Translated memory protection apparatus for an advanced microprocessor |
US5848256A (en) * | 1996-09-30 | 1998-12-08 | Institute For The Development Of Emerging Architectures, L.L.C. | Method and apparatus for address disambiguation using address component identifiers |
US5872949A (en) * | 1996-11-13 | 1999-02-16 | International Business Machines Corp. | Apparatus and method for managing data flow dependencies arising from out-of-order execution, by an execution unit, of an instruction series input from an instruction source |
US5838941A (en) * | 1996-12-30 | 1998-11-17 | Intel Corporation | Out-of-order superscalar microprocessor with a renaming device that maps instructions from memory to registers |
US5870347A (en) * | 1997-03-11 | 1999-02-09 | Micron Technology, Inc. | Multi-bank memory input/output line selection |
US5931957A (en) * | 1997-03-31 | 1999-08-03 | International Business Machines Corporation | Support for out-of-order execution of loads and stores in a processor |
US6021485A (en) * | 1997-04-10 | 2000-02-01 | International Business Machines Corporation | Forwarding store instruction result to load instruction with reduced stall or flushing by effective/real data address bytes matching |
US5878242A (en) * | 1997-04-21 | 1999-03-02 | International Business Machines Corporation | Method and system for forwarding instructions in a processor with increased forwarding probability |
US6014759A (en) * | 1997-06-13 | 2000-01-11 | Micron Technology, Inc. | Method and apparatus for transferring test data from a memory array |
US6044429A (en) | 1997-07-10 | 2000-03-28 | Micron Technology, Inc. | Method and apparatus for collision-free data transfers in a memory device with selectable data or address paths |
US6070238A (en) * | 1997-09-11 | 2000-05-30 | International Business Machines Corporation | Method and apparatus for detecting overlap condition between a storage instruction and previously executed storage reference instruction |
EP0945799B1 (de) * | 1998-01-29 | 2002-07-03 | Siemens Aktiengesellschaft | Verfahren und Einrichtung zum Verhindern der Einlagerung nicht mehr aktueller Datentelegramme aus einer Datenvorverarbeitung in die Speicher eines Rechners |
US6065110A (en) * | 1998-02-09 | 2000-05-16 | International Business Machines Corporation | Method and apparatus for loading an instruction buffer of a processor capable of out-of-order instruction issue |
US6148394A (en) * | 1998-02-10 | 2000-11-14 | International Business Machines Corporation | Apparatus and method for tracking out of order load instructions to avoid data coherency violations in a processor |
US5923594A (en) * | 1998-02-17 | 1999-07-13 | Micron Technology, Inc. | Method and apparatus for coupling data from a memory device using a single ended read data path |
US6115320A (en) | 1998-02-23 | 2000-09-05 | Integrated Device Technology, Inc. | Separate byte control on fully synchronous pipelined SRAM |
US6405307B1 (en) * | 1998-06-02 | 2002-06-11 | Intel Corporation | Apparatus and method for detecting and handling self-modifying code conflicts in an instruction fetch pipeline |
US6405280B1 (en) | 1998-06-05 | 2002-06-11 | Micron Technology, Inc. | Packet-oriented synchronous DRAM interface supporting a plurality of orderings for data block transfers within a burst sequence |
US6212622B1 (en) | 1998-08-24 | 2001-04-03 | Advanced Micro Devices, Inc. | Mechanism for load block on store address generation |
US6212623B1 (en) | 1998-08-24 | 2001-04-03 | Advanced Micro Devices, Inc. | Universal dependency vector/queue entry |
US6336183B1 (en) * | 1999-02-26 | 2002-01-01 | International Business Machines Corporation | System and method for executing store instructions |
US6728867B1 (en) * | 1999-05-21 | 2004-04-27 | Intel Corporation | Method for comparing returned first load data at memory address regardless of conflicting with first load and any instruction executed between first load and check-point |
US6442677B1 (en) * | 1999-06-10 | 2002-08-27 | Advanced Micro Devices, Inc. | Apparatus and method for superforwarding load operands in a microprocessor |
US7634635B1 (en) | 1999-06-14 | 2009-12-15 | Brian Holscher | Systems and methods for reordering processor instructions |
US7089404B1 (en) * | 1999-06-14 | 2006-08-08 | Transmeta Corporation | Method and apparatus for enhancing scheduling in an advanced microprocessor |
US7069406B2 (en) | 1999-07-02 | 2006-06-27 | Integrated Device Technology, Inc. | Double data rate synchronous SRAM with 100% bus utilization |
US6134646A (en) * | 1999-07-29 | 2000-10-17 | International Business Machines Corp. | System and method for executing and completing store instructions |
US6581155B1 (en) * | 1999-08-25 | 2003-06-17 | National Semiconductor Corporation | Pipelined, superscalar floating point unit having out-of-order execution capability and processor employing the same |
US6748589B1 (en) | 1999-10-20 | 2004-06-08 | Transmeta Corporation | Method for increasing the speed of speculative execution |
US6622237B1 (en) | 2000-01-03 | 2003-09-16 | Advanced Micro Devices, Inc. | Store to load forward predictor training using delta tag |
US6622235B1 (en) | 2000-01-03 | 2003-09-16 | Advanced Micro Devices, Inc. | Scheduler which retries load/store hit situations |
US6564315B1 (en) | 2000-01-03 | 2003-05-13 | Advanced Micro Devices, Inc. | Scheduler which discovers non-speculative nature of an instruction after issuing and reissues the instruction |
US6542984B1 (en) | 2000-01-03 | 2003-04-01 | Advanced Micro Devices, Inc. | Scheduler capable of issuing and reissuing dependency chains |
US6694424B1 (en) | 2000-01-03 | 2004-02-17 | Advanced Micro Devices, Inc. | Store load forward predictor training |
US6651161B1 (en) | 2000-01-03 | 2003-11-18 | Advanced Micro Devices, Inc. | Store load forward predictor untraining |
US6968469B1 (en) | 2000-06-16 | 2005-11-22 | Transmeta Corporation | System and method for preserving internal processor context when the processor is powered down and restoring the internal processor context when processor is restored |
US7062638B2 (en) * | 2000-12-29 | 2006-06-13 | Intel Corporation | Prediction of issued silent store operations for allowing subsequently issued loads to bypass unexecuted silent stores and confirming the bypass upon execution of the stores |
JP3497832B2 (ja) * | 2001-03-28 | 2004-02-16 | 株式会社半導体理工学研究センター | ロード・ストアキュー |
JP2003029967A (ja) * | 2001-07-17 | 2003-01-31 | Fujitsu Ltd | マイクロプロセッサ |
US7321964B2 (en) | 2003-07-08 | 2008-01-22 | Advanced Micro Devices, Inc. | Store-to-load forwarding buffer using indexed lookup |
US8301844B2 (en) * | 2004-01-13 | 2012-10-30 | Hewlett-Packard Development Company, L.P. | Consistency evaluation of program execution across at least one memory barrier |
US20060179265A1 (en) * | 2005-02-08 | 2006-08-10 | Flood Rachel M | Systems and methods for executing x-form instructions |
US7467325B2 (en) * | 2005-02-10 | 2008-12-16 | International Business Machines Corporation | Processor instruction retry recovery |
US7478276B2 (en) * | 2005-02-10 | 2009-01-13 | International Business Machines Corporation | Method for checkpointing instruction groups with out-of-order floating point instructions in a multi-threaded processor |
US7409589B2 (en) * | 2005-05-27 | 2008-08-05 | International Business Machines Corporation | Method and apparatus for reducing number of cycles required to checkpoint instructions in a multi-threaded processor |
US7376817B2 (en) * | 2005-08-10 | 2008-05-20 | P.A. Semi, Inc. | Partial load/store forward prediction |
US7613906B2 (en) * | 2005-08-12 | 2009-11-03 | Qualcomm Incorporated | Advanced load value check enhancement |
US7516310B2 (en) * | 2006-06-08 | 2009-04-07 | International Business Machines Corporation | Method to reduce the number of times in-flight loads are searched by store instructions in a multi-threaded processor |
US8447911B2 (en) * | 2007-07-05 | 2013-05-21 | Board Of Regents, University Of Texas System | Unordered load/store queue |
US7975130B2 (en) * | 2008-02-20 | 2011-07-05 | International Business Machines Corporation | Method and system for early instruction text based operand store compare reject avoidance |
US8418156B2 (en) * | 2009-12-16 | 2013-04-09 | Intel Corporation | Two-stage commit (TSC) region for dynamic binary optimization in X86 |
US9135005B2 (en) * | 2010-01-28 | 2015-09-15 | International Business Machines Corporation | History and alignment based cracking for store multiple instructions for optimizing operand store compare penalties |
US8938605B2 (en) * | 2010-03-05 | 2015-01-20 | International Business Machines Corporation | Instruction cracking based on machine state |
US8645669B2 (en) * | 2010-05-05 | 2014-02-04 | International Business Machines Corporation | Cracking destructively overlapping operands in variable length instructions |
US20120117335A1 (en) * | 2010-11-10 | 2012-05-10 | Advanced Micro Devices, Inc. | Load ordering queue |
US20130061290A1 (en) * | 2011-09-06 | 2013-03-07 | Jacob Mendel | System for securely performing a transaction |
US9128725B2 (en) | 2012-05-04 | 2015-09-08 | Apple Inc. | Load-store dependency predictor content management |
US9600289B2 (en) | 2012-05-30 | 2017-03-21 | Apple Inc. | Load-store dependency predictor PC hashing |
US9626189B2 (en) | 2012-06-15 | 2017-04-18 | International Business Machines Corporation | Reducing operand store compare penalties |
US9535695B2 (en) * | 2013-01-25 | 2017-01-03 | Apple Inc. | Completing load and store instructions in a weakly-ordered memory model |
US9710268B2 (en) | 2014-04-29 | 2017-07-18 | Apple Inc. | Reducing latency for pointer chasing loads |
JP2016167187A (ja) * | 2015-03-10 | 2016-09-15 | 富士通株式会社 | 模擬デバイス試験装置、模擬デバイス試験方法および模擬デバイス試験プログラム |
US10191748B2 (en) * | 2015-11-30 | 2019-01-29 | Intel IP Corporation | Instruction and logic for in-order handling in an out-of-order processor |
US10514925B1 (en) | 2016-01-28 | 2019-12-24 | Apple Inc. | Load speculation recovery |
US10437595B1 (en) | 2016-03-15 | 2019-10-08 | Apple Inc. | Load/store dependency predictor optimization for replayed loads |
CN112445587A (zh) * | 2019-08-30 | 2021-03-05 | 上海华为技术有限公司 | 一种任务处理的方法以及任务处理装置 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS5731049A (en) * | 1980-07-31 | 1982-02-19 | Nec Corp | Information processing equipment |
Family Cites Families (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2059652B (en) * | 1979-09-29 | 1983-08-24 | Plessey Co Ltd | Memory protection system using capability registers |
US4574349A (en) * | 1981-03-30 | 1986-03-04 | International Business Machines Corp. | Apparatus for addressing a larger number of instruction addressable central processor registers than can be identified by a program instruction |
US4607332A (en) * | 1983-01-14 | 1986-08-19 | At&T Bell Laboratories | Dynamic alteration of firmware programs in Read-Only Memory based systems |
JPH063584B2 (ja) * | 1983-12-19 | 1994-01-12 | 株式会社日立製作所 | 情報処理装置 |
US4697233A (en) * | 1984-04-02 | 1987-09-29 | Unisys Corporation | Partial duplication of pipelined stack with data integrity checking |
US4757440A (en) * | 1984-04-02 | 1988-07-12 | Unisys Corporation | Pipelined data stack with access through-checking |
US4630195A (en) * | 1984-05-31 | 1986-12-16 | International Business Machines Corporation | Data processing system with CPU register to register data transfers overlapped with data transfer to and from main storage |
JPS62126440A (ja) * | 1985-11-27 | 1987-06-08 | Nec Corp | 情報処理装置 |
US5051940A (en) * | 1990-04-04 | 1991-09-24 | International Business Machines Corporation | Data dependency collapsing hardware apparatus |
US4831517A (en) * | 1986-10-10 | 1989-05-16 | International Business Machines Corporation | Branch and return on address instruction and methods and apparatus for implementing same in a digital data processing system |
US4991090A (en) * | 1987-05-18 | 1991-02-05 | International Business Machines Corporation | Posting out-of-sequence fetches |
EP0312764A3 (en) * | 1987-10-19 | 1991-04-10 | International Business Machines Corporation | A data processor having multiple execution units for processing plural classes of instructions in parallel |
US4965716A (en) * | 1988-03-11 | 1990-10-23 | International Business Machines Corporation | Fast access priority queue for managing multiple messages at a communications node or managing multiple programs in a multiprogrammed data processor |
DE68928113T2 (de) * | 1988-04-01 | 1997-10-09 | Nippon Electric Co | Reihenfolgesteuersystem zur Behandlung von Befehlen |
US5131086A (en) * | 1988-08-25 | 1992-07-14 | Edgcore Technology, Inc. | Method and system for executing pipelined three operand construct |
US5101341A (en) * | 1988-08-25 | 1992-03-31 | Edgcore Technology, Inc. | Pipelined system for reducing instruction access time by accumulating predecoded instruction bits a FIFO |
US4905200A (en) * | 1988-08-29 | 1990-02-27 | Ford Motor Company | Apparatus and method for correcting microcomputer software errors |
US5136697A (en) * | 1989-06-06 | 1992-08-04 | Advanced Micro Devices, Inc. | System for reducing delay for execution subsequent to correctly predicted branch instruction using fetch information stored with each block of instructions in cache |
US5185871A (en) * | 1989-12-26 | 1993-02-09 | International Business Machines Corporation | Coordination of out-of-sequence fetching between multiple processors using re-execution of instructions |
US5202975A (en) * | 1990-06-11 | 1993-04-13 | Supercomputer Systems Limited Partnership | Method for optimizing instruction scheduling for a processor having multiple functional resources |
US5253349A (en) * | 1991-01-30 | 1993-10-12 | International Business Machines Corporation | Decreasing processing time for type 1 dyadic instructions |
US5261071A (en) * | 1991-03-21 | 1993-11-09 | Control Data System, Inc. | Dual pipe cache memory with out-of-order issue capability |
US5408658A (en) * | 1991-07-15 | 1995-04-18 | International Business Machines Corporation | Self-scheduling parallel computer system and method |
-
1993
- 1993-01-08 US US08/001,976 patent/US5467473A/en not_active Expired - Fee Related
- 1993-10-27 JP JP5269218A patent/JP2597811B2/ja not_active Expired - Lifetime
- 1993-12-27 EP EP93120937A patent/EP0605869A1/en not_active Withdrawn
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS5731049A (en) * | 1980-07-31 | 1982-02-19 | Nec Corp | Information processing equipment |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH11512855A (ja) * | 1995-10-06 | 1999-11-02 | アドバンスト・マイクロ・デバイシズ・インコーポレイテッド | ロード/ストアオペレーションのout−of−order実行の制御 |
US7093074B2 (en) | 2000-01-19 | 2006-08-15 | Fujitsu Limited | Storage control device and storage control method |
JP2007509439A (ja) * | 2003-10-22 | 2007-04-12 | インテル コーポレイション | 相互接続ネットワークでの効率的な順序保存用の方法及び装置 |
Also Published As
Publication number | Publication date |
---|---|
JP2597811B2 (ja) | 1997-04-09 |
EP0605869A1 (en) | 1994-07-13 |
US5467473A (en) | 1995-11-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2597811B2 (ja) | データ処理システム | |
EP0638183B1 (en) | A system and method for retiring instructions in a superscalar microprocessor | |
US5826055A (en) | System and method for retiring instructions in a superscalar microprocessor | |
US6374347B1 (en) | Register file backup queue | |
US7526583B2 (en) | Method and apparatus to launch write queue read data in a microprocessor recovery unit | |
EP0762270A2 (en) | Microprocessor with load/store operation to/from multiple registers | |
JPH03116235A (ja) | 分岐処理方法及び分岐処理装置 | |
JPH07152559A (ja) | パイプ制御及びレジスタ変換機能を増強したスーパースカラーパイプライン式のプロセッサ | |
KR100472346B1 (ko) | 명령어 리플레이를 포함하는 프로세서 파이프라인 | |
US6192461B1 (en) | Method and apparatus for facilitating multiple storage instruction completions in a superscalar processor during a single clock cycle | |
JPH096611A (ja) | データ処理システムにおけるデータをバッファリングする方法およびシステム | |
JP2742375B2 (ja) | スーパースカラ・プロセッサにおける命令処理の選択的逐次化の方法およびシステム | |
US5850563A (en) | Processor and method for out-of-order completion of floating-point operations during load/store multiple operations | |
US20030061465A1 (en) | Issue and retirement mechanism in processor having different pipeline lenghths | |
JPH01140330A (ja) | 高性能cpu−fpuクラスタ用パイプライン型スレーブプロトコル |