JP3857400B2 - 自己変更コードの競合を検出するマイクロプロセッサ及びこのマイクロプロセッサを動作させる方法 - Google Patents
自己変更コードの競合を検出するマイクロプロセッサ及びこのマイクロプロセッサを動作させる方法 Download PDFInfo
- Publication number
- JP3857400B2 JP3857400B2 JP32372397A JP32372397A JP3857400B2 JP 3857400 B2 JP3857400 B2 JP 3857400B2 JP 32372397 A JP32372397 A JP 32372397A JP 32372397 A JP32372397 A JP 32372397A JP 3857400 B2 JP3857400 B2 JP 3857400B2
- Authority
- JP
- Japan
- Prior art keywords
- address
- fetch
- write
- fetch address
- comparator
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
- 238000000034 method Methods 0.000 title claims description 33
- 230000004044 response Effects 0.000 claims description 59
- 230000000977 initiatory effect Effects 0.000 claims description 10
- 238000012545 processing Methods 0.000 claims description 10
- 238000001514 detection method Methods 0.000 claims description 9
- 238000011010 flushing procedure Methods 0.000 claims description 6
- 238000012423 maintenance Methods 0.000 description 29
- 230000008569 process Effects 0.000 description 15
- 230000008859 change Effects 0.000 description 13
- 230000006870 function Effects 0.000 description 11
- 238000010586 diagram Methods 0.000 description 5
- 238000012986 modification Methods 0.000 description 4
- 238000013459 approach Methods 0.000 description 3
- 230000008901 benefit Effects 0.000 description 3
- 230000007246 mechanism Effects 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 230000004075 alteration Effects 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 2
- 238000012360 testing method Methods 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- WTSKMKRYHATLLL-UHFFFAOYSA-N (6-benzoyloxy-3-cyanopyridin-2-yl) 3-[3-(ethoxymethyl)-5-fluoro-2,6-dioxopyrimidine-1-carbonyl]benzoate Chemical compound O=C1N(COCC)C=C(F)C(=O)N1C(=O)C1=CC=CC(C(=O)OC=2C(=CC=C(OC(=O)C=3C=CC=CC=3)N=2)C#N)=C1 WTSKMKRYHATLLL-UHFFFAOYSA-N 0.000 description 1
- JBRZTFJDHDCESZ-UHFFFAOYSA-N AsGa Chemical compound [As]#[Ga] JBRZTFJDHDCESZ-UHFFFAOYSA-N 0.000 description 1
- 229910001218 Gallium arsenide Inorganic materials 0.000 description 1
- XUIMIQQOPSSXEZ-UHFFFAOYSA-N Silicon Chemical compound [Si] XUIMIQQOPSSXEZ-UHFFFAOYSA-N 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 230000002730 additional effect Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 238000007796 conventional method Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000007667 floating Methods 0.000 description 1
- 239000012212 insulator Substances 0.000 description 1
- 229910052710 silicon Inorganic materials 0.000 description 1
- 239000010703 silicon Substances 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 239000000758 substrate Substances 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3802—Instruction prefetching
- G06F9/3812—Instruction prefetching with instruction modification, e.g. store into instruction stream
-
- 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/3861—Recovery, e.g. branch miss-prediction, exception handling
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)
Description
【発明の属する技術分野】
本発明は、マイクロプロセッサ集積回路自己変更プログラムを実行できるパイプライン型マイクロプロセッサの分野に係る。
【0002】
【従来の技術】
最近のマイクロプロセッサは、いわゆるパイプライン・アーキテクチャにより構築される。パイプライン・マイクロプロセッサでは、多重シーケンス・プログラム命令が実行及び書き込みにより命令フェッチによる種々の実行段階で同時に処理される。換言すれば、前の命令の実行を完了する前に、(プログラム順において)後の命令がフェッチされる。パイプラインのために、個々の命令のそれぞれが実行及び書き込みを介してのフェッチによる処理のために、多くのマシン・サイクルを必要とすることがあっても、命令をマイクロプロセッサが実行する実効速度は、単一パイプライン・マイクロプロセッサにおける1命令/マシン・サイクルに近付けることができる。いわゆるスーパスカラ・アーキテクチャは並行して動作する多重パイプラインを効果的に備え、理論的に高いパフォーマンス・レベルさえも提供する。
【0003】
普及している多くのプロセッサは、ユーザに「自己変更コード(self−modifying code)」の使用を許容することにより、高いレベルのプログラミング柔軟性を提供している。自己変更コードとは、プログラム命令がプログラムそれ自身により変更されるプログラミング技術を云う。換言すれば、プログラムの実行結果は、その結果の書き込みを介してプログラムにおいて後の命令の命令コードを変更することができる。従って、自己変更コードは、マイクロプロセッサに基づくコンピュータ・プログラムにおいてプログラマに高度の柔軟性を提供する。自己変更コード技術は、その使用により得られる高いプログラム効率のために、近年普及して来た。
【0004】
【発明が解決しようとする課題】
変更されようとしているプログラム命令がメモリに存在し、かつパイプラインに未だ入っていない限り、最近のプロセッサにとってプログラム命令の変更は困難なことではない。しかし、一般に、「x86−アーキテクチャ・マイクロプロセッサ」と呼ばれているマイクロプロセッサのように、ごく最近のマイクロプロセッサはパイプラインにおける命令の変更を避けるために、どのような種類であっても「直列化」又は「同期」命令なしに、何時、どのような命令の変更も可能にする。従って、これらのマイクロプロセッサは、変更が発生した時点で自己変更の目標である命令が既にパイプラインに入ったか否かを検出すると共に、命令を変更したもの(オリジナルのものではない)が実際に実行されたコードであることを保証するように操作を行う能力を有する必要がある。そうでなければ、誤った命令の実行によりプログラム・エラーが発生する結果となる。
【0005】
通常のマイクロプロセッサは、パイプラインにフェッチされた各命令に対する命令アドレスのコピーを記憶したテーブルを使用することにより、この機能を実現している。各書き込みの行き先アドレスはテーブルにおける各エントリと比較されて、書き込みはパイプラインにおける命令に対する変更であるか否かが判断される。イエスならば、パイプラインはフラッシュされ、前記命令コードが変更され、かつ変更命令を用いて実行が再開される。しかし、本発明に関連して、重要なチップ面積及び他のリソースは、このようなテーブルの実施により、特に4若しくはそれより多くのパイプラインが配置されたスーパスカラ・アーキテクチャにより、及び特に7若しくはそれより多くの段を有する深いパイプラインにより消費されることが観察されていた。
【0006】
【課題を解決するための手段】
本発明は、最小及び最大フェッチ・アドレス・レジスタを有する検出回路により、自己変更コード機能を有するマイクロプロセッサに実施されてもよい。最小及び最大フェッチ・アドレス・レジスタは、最後のパイプライン・フラッシュ以後にフェッチされた命令の最高及び最低線形アドレスを記憶し、かつ各フェッチにより適当に更新される。書き込み段階において、書き込み動作の行き先アドレスは、前記レジスタに記憶された最小及び最大フェッチ・アドレスと比較されて、パイプラインにおける命令が多分、書き込みの行き先であるか否かを判断し、もしイエスであれば、パイプラインがフラッシュされ、書き込みが実行され、かつプログラムの実行が再開される。
【0007】
本発明の他の特徴によれば、マイクロプロセッサは一連の書き込みを待ち行列にして動作することができので、実行が書き込みにおける待機のために停止することはない。全ての保留及び待ち行列にされた書き込みに関する行き先アドレスは、一連の書き込みアドレス・レジスタに記憶される。各命令のアドレスは、フェッチ時に書き込みアドレス・レジスタの内容と比較されて、実行した命令の結果による変更前に、メモリからの命令フェッチを検出する。コードの変更及び適正なプログラム・シーケンスの再開を可能にさせるために、このような検出があったときは、例外(exception)が発行される。
【0008】
本発明の目的は、最小のオーバヘッド・ハードウエアをもって、パイプラインにおける命令による自己変更コードの競合を検出する機能を備えたマイクロプロセッサを提供することにある。
【0009】
本発明の目的は、更に、完了したが、未だ書き込まれていない書き込みと、新しくフェッチされた命令との間の自己変更コードの競合を阻止するマイクロプロセッサを提供することにある。
【0010】
本発明の目的は、更に、競合検出処理において実行されるアドレス比較がプロセッサ・パフォーマンスに実質的に影響しないマイクロプロセッサを提供することにある。
【0011】
本発明の目的は、更に、比較のハードウエア・オーバヘッドを最小化するマイクロプロセッサを提供することにある。
【0012】
本発明の他の目的及び効果は、その図面と共に以下の詳細な説明を参照することにより、当該技術分野において通常に習熟する者にとって明らかとなる。
【0013】
【発明の実施の形態】
ここで、図1を参照し、スーパスカラ・パイプライン・マイクロプロセッサ(以下、単に「マイクロプロセッサ」という)10を含み、本発明の好ましい実施例により構築された例示的なデータ処理システム2を説明する。ここでは、種々のアーキテクチャのマイクロプロセッサ及びシステムにおいて本発明を用いることができることを意図しているので、単なる例としてデータ処理システム2及びマイクロプロセッサ10のアーキテクチャを説明していることを理解すべきである。従って、この明細書を参照すれば、当該技術分野において通常に習熟する者がこのような他のマイクロプロセッサ・アーキテクチャに本発明を容易に実施できることを意図している。更に、本発明は、シリコン基板、シリコン・オン・インシュレータ、ガリウムひ素、及び他の製造技術により達成され、かつMOS、CMOS、バイポーラ、BiMOS、他のデバイス実施を用いた集積回路の製造者により、シングル・チップ・マイクロプロセッサ及び複数のマイクロプロセッサにより、又はマルチ・チップ実施により実現できることを意図している。
【0014】
マイクロプロセッサ10は、図1に示すように、外部バスBUSにより他のシステム装置に接続される。この例では外部バスBUSがシングル・バスとして示されているはいえ、外部バスBUSは、勿論、例えばPCIローカル・バス・アーキテクチャを利用した通常コンピュータにおいて知られているように、異なる速度及びプロトコルを有する多重バスを表し得ることを意図している。データ処理システム2は、通信ポート3(複数のモデム・ポート及び複数のモデム、複数のネットワーク・インターフェイス等を含む)、グラフィック・ディスプレイ・システム4(ビデオ・メモリ、複数のビデオ・プロセッサ、グラフィック・モニタを含む。)、ダイナミック・ランダム・アクセス・メモリ(DRAM)により典型的に実施されるメイン・メモリ・システム5、入力装置6(キー・ボード、ポィンティング装置、及びそれに対するインターフェイス回路を含む。)、及びディスク・システム8(複数のハードディスク・ドライブ、複数のフロッピー・ディスク・ドライブ、及び複数のCD−ROMドライブを含み得る。)のような通常のサブシステムを含む。従って、図1のデータ処理システム2は、当該技術分野において現在は一般化している通常のデスクトップ・コンピュータ又はワークステーションに対応することを意図している。勿論、当該技術分野に習熟する者により認識されるように、マイクロプロセッサ10の他のシステム実施も本発明により利益を得ることができる。
【0015】
マイクロプロセッサ10は、外部バスBUSに接続されたバス・インターフェイス・ユニット(BIU)12を含み、マイクロプロセッサ10とデータ処理システム2における外部要素との間で制御をし、かつ通信を行う。BIU12は、このような機能を実行するために適当な制御及びクロック回路を含むと共に、動作の速度を増加させる書き込みバッファ、及び内部のマイクロプロセッサの動作の結果を外部バスBUSと同期させるタイミング回路を含む。マイクロプロセッサ10は、更に、システム・クロックSYSCLKに基づきクロック位相を発生するクロック発生及び制御回路20を含む。この例において、クロック発生及び制御回路20は、外部バスBUS上のバス動作用の制御クロック信号であるバス・クロックBCLKと、マイクロプロセッサ10の内部動作用の制御クロック信号であるコア・クロックPCLKとを発生する。
【0016】
図1から明らかなように、マイクロプロセッサ10は、3レベルの内部キャッシュ・メモリを有し、レベル2キャッシュ11としてそのうちの最高レベルのものは内部バスによりBIU12に接続されている。この例において、レベル2キャッシュ11は統合されたキャッシュであって、マイクロプロセッサ10により提供されるバス・トラフィックの大部分がレベル2キャッシュ11を介して行われるように、BIU12を介する外部バスBUSからの全てのキャッシュ可能データ及びキャッシュ可能命令を受け取る構成である。勿論、マイクロプロセッサ10は、更に、「キャッシュ不能」として一定のバス読み出し及び書き込みを処理することにより、キャッシュ11周辺のバス・トラフィックを実行することができる。レベル2キャッシュ11は、図1に示すように、2レベル1キャッシュ16に接続されている。即ち、レベル1キャッシュ16。はデータに割り付けられ、一方レベル1キャッシュ16iは命令に割り付けられている。マイクロキャッシュ18は、この例では、完全二重ポートのレベル0である。
【0017】
マイクロプロセッサ10は、図1に示すように、スーパスカラ形式のものであり、従って多数の実行ユニットを含む。これらの実行ユニットは条件分岐、整数及び論理操作を処理する2つのALU420、ALU421と、浮動少数点ユニット(FPU)31と、2つのロードーストア・ユニット400、401と、マイクロシーケンサ48とを含む。2つのロードーストア・ユニット40はこれに対する真の並列アクセスのためにマイクロキャッシュ18の2ポートを使用し、更にレジスタ・ファイル39におけるレジスタに対するロード及びストア操作を実行する。データ・マイクロ変換ルックアサイド・バッファ(μTLB:Data microtranslation lookaside buffer)38は、通常の方法により、論理データ・アドレスを物理アドレスに変換するために設けられている。
【0018】
これら多数の実行ユニットは、それぞれ書き込みを有する7段の多重パイプラインにより制御される。これらのパイプライン段は以下のようである。
F フェッチ:この段は命令アドレスを発生し、かつ命令キャッシュ又はメモリから命令を読み出す。
PD0 プリデコード段0:この段は、3フェッチx86形式の命令までの長さ及び開始位置を決定する。
PD1 プリデコード段1:この段は、x86命令バイトを取り出し、これらをデコードのために固定長フォーマットに記録する。
DC デコード:この段はx86命令を複数の原子的動作(atomic operations,AOp)に変換する。
SC 計画:適当な実行ユニット(FPU31を含む)に対して4AOpまで割り付ける。
OP オペランド:この段はAOpにより表されたレジスタ・オペレータを検索する。
EX 実行:この段はAOp及び検索したオペランドに従って実効ユニットを作動させる。
WB 書き戻し:この段はレジスタ又はメモリにおける実行結果を記憶する。
【0019】
図1を参照すると、前述した複数のパイプライン段はマイクロプロセッサ10内の種々の機能ブロックにより実行される。フェッチ・ユニット26は、レベル1命令キャッシュ16iに適用するために、命令マイクロ変換ルックアサイド・バッファ(μTLB)22により、命令ポインタから複数の命令アドレスを発生する。フェッチ・ユニット26は、当該技術分野において通常の方法により実施されてもよく、又は例えば本願と共通に譲受され、1995年10月31日に出願された米国仮出願第60/008,168号に説明されているように、分岐予測において付加的な機能の有用性を含むものでもよく、ここではこの引用により関連される。命令キャッシュ16iは命令データ・ストリームをフェッチ・ユニット26に対して発生し、フェッチ・ユニット26が続いて命令コードを所望のシーケンスによりプリデコード0段28及びプリデコード1段32に供給する。これらの2段は、独立したパイプライン段として動作し、かつ相互に3x86命令まで設けるように動作し、かつこれらをデコード・ユニット34に供給する。プリデコード0段28は3可変長x86命令と同程度の大きさ及び位置を判断し、一方プリデコード1段32はデコード処理を容易にするために多重バイト命令を固定長フォーマットに記録する。この例において、デコード・ユニット34は、4命令デコーダを含み、それぞれはプリデコード1段32から固定長のx86命令を受け取って、RISC命令にぼぼ等価な1〜3原子的操作(AOp)を発生することができる。スケジューラ36はデコード・ユニット34の出力におけるデコード・キューから4AOpまで読み出して、これらのAOpを適当な実行ユニットに割り付ける。オペランド・ユニット44はスケジューラ36から、更にマルチプレクサ45を介してマイクロコードROM46から入力を受け取り、かつレジスタ・オペランドをフェッチして命令の実行に用いる。加えて、この例によれば、オペランド・ユニット44は、更にオペランド転送を実行して受け入れ可能状態にあるレジスタに結果を送出して記憶させ、更にロード及び記憶形式のAOpのためにアドレス発生を実行する。
【0020】
マイクロシーケンサ48及びマイクロコードROM46は、マイクロコード・エントリAOpの実行においてALU42及びロードーストア・ユニット40を制御し、これらは1サイクルにおいて実行するように通常、最終AOpである。この例において、マイクロシーケンサ48は、マイクロコードROM46に記憶されるマイクロ命令をシーケンスに配列し、複雑な又はまれに用いるx86命令、セグメント又は制御レジスタを修飾するx86命令、例外の取り扱い、及び多重サイクル命令(例えば、REP命令、及び全てのレジスタをPUSH及びPOPする命令)のようなマイクロコード化されたマイクロ命令に応答して、制御を実行させる。
【0021】
マイクロプロセッサ10は、更に、JTAGスキャン・テスト及び一定のビルト・イン・セルフ・テスト(BIST)機能の動作を制御して、製造完了により及びリセット及び他の事象によりマイクロプロセッサ10の動作の有効性を確認する回路24を含む。
【0022】
本発明の実施例によれば、マイクロプロセッサ10は更に自己変更コード(SMC)ユニット50を含み、変更時に実行ユニットのうちの一つにより、パイプラインに存在し得る命令の命令コードを潜在的な変更例を検出し、かつ取り扱う制御回路である。本発明の実施例のために図1に示すように、SMCユニット50は、ラインFAを介してフェッチ・ユニット26からフェッチ・アドレスを受け取るように、更にロード/ストア・ユニット40から書き込みアドレスを受け取るように、接続されている。SMCユニット50は、例外を実行するためにスケジューラ36に制御ライン出力を供給している。本発明の好ましい実施例によれば、例外を用いて自己変更コード(SMC)の検出の際に、変更した命令をメモリから検索して実行すると共に、変更した命令の旧いものを実行しないことを保証する。例外取り扱い機構は、コード変更を開始させる動作に実行を完了できるようさせる、又はこれに代わって、コード変更を開始した命令が実行を既に完了した場合に、実行している命令又は複数の命令に実行を完了できるようにさせる。いずれの場合でも、例外は命令パイプラインをフラッシュさせることになり、また次の命令のアドレスで命令パイプラインがリスタートされて実行される。
【0023】
当該技術分野においていくつかのクラスの例外が知られている。例えば、フォールトは、現在の原子的操作(AOp)の完了により、直ちに実行を停止させる例外である。トラップは、トラップを知らせる命令がよりも(プログラム順序において)遅いパイプラインにおける全ての命令の完了を阻止させる要求である。割り込みは、発行されたときに、現在実行中でない全て命令の完了を阻止させる特殊型式のトラップである。従って、割り込みはパイプラインにおける特定命令に関連されない。本発明は、これら形式のうちの一任意形式の例外を用いることにより実施されてもよいことを意図しており、従って用語「例外」は、可能な自己変更コードの競合を検出することにより、命令パイプラインのフラッシングを開始させる事象及び要求を指すために、以下の説明において用いられる。しかし、以下の説明から明らかとなるように、マイクロプロセッサ10が順次実行マシン(in−order execution machine)であることを考慮すると、本発明の実施例においてこれらのタップを使用すること(両者は命令の開始に関連し、また関連もしない)は好ましいことであり、トラップよりもフォールトを用いることは、順序通りでない処理に係わるアーキテクチャにとって好ましいと思われる。
【0024】
ここで、図2を参照して、SMCユニット50の構造を以下説明する。本発明の実施例によるSMCユニット50は、フェッチ・アドレス窓保守ユニット52を含み、フェッチ・アドレス窓保守ユニット52は、フェッチ・アドレスが有効であるときにラインFAVを介して表すフェッチ・アドレス有効信号と共に、ラインFAを介してフェッチ・ユニット26(図1に示す)からフェッチ・アドレスを受け取っている。以下で更に詳細に説明するように、フェッチ・アドレス窓保守ユニット52は、最後のパイプライン・フラッシュ以後にフェッチされた命令に関する線形フェッチ・アドレスの範囲の表示を保持している。従って、このアドレス範囲はその時点でパイプラインに潜在的に存在するアドレスを識別することになり、逆にフェッチ・アドレス窓保守ユニット52に記憶されたアドレス範囲外であるアドレスは、現在、パイプラインにおける命令に対応し得ない。フェッチ・アドレス窓保守ユニット52は(ラインLASTFA上に)最終フェッチ・アドレス、(ラインMAXFA上に)最終フラッシュ以後にフェッチされた最高線形アドレス値、及び(ラインMINFA上に)最終フラッシュ以後にフェッチされた最低アドレス値を表す出力を発生する。更に、フェッチ・アドレス窓保守ユニット52は、フェッチ・アドレス窓保守ユニット52が記憶したアドレス範囲をリセットすることに応答して、ラインSMCFLUSHを介してSMC例外発生器56から信号を入力している。
【0025】
ここで図3を参照して、フェッチ・アドレス窓保守ユニット52の構造を以下詳細に説明する。フェッチ・アドレス窓保守ユニット52は、ライン(信号)FAからフェッチ・アドレスを受け取るように、かつ制御回路68により最新値を記憶するように接続されたラッチ58を含む。ラッチ60は最終パイプライン・フラッシュ以後にフェッチされた最低命令アドレスを記憶し、ラインMINFAを介して書き込み比較器54に供給する。同様に、ラッチ62は最終パイプライン・フラッシュ以後にフェッチされた最高命令アドレスを記憶し、ラインMAXFAを介して書き込み比較器54に供給する。各ラッチ58、60、62は制御回路68からのロード信号により制御される。マルチプレクサ61は、ラインLASTFAを介してラッチ58から最終フェッチ・アドレスと、好ましくは、マイクロプロセッサ10のメモリ空間において最高アドレスである上限値(例えば、0xFFFFFFFFh)とを受け取り、かっその一方又は他方を線SELMTを介する制御回路68の制御により選択してラッチ60に供給する。制御回路68は、マルチプレクサ61がパイプライン・フラッシュ又はマイクロプロセッサ10のリセットにより上限値を選択するように制御して、その後の最初のフェッチの前にラッチ60を初期化させる。同様に、マルチプレクサ63もその一方の入力にラインLASTFAを介してラッチ58から最終フェッチ・アドレスを受け取り、かつその他方の入力に好ましくはマイクロプロセッサ10のメモリ空間における最低アドレス(例えば、0h)を受け取っている。同様に、マルチプレクサ63は、ラインSELMTを介して制御回路68からの信号により下限値を選択するように制御されて、パイプライン・フラッシュ又はマシン・リセット後における最初の命令フェッチ前にラッチ62を初期化させる。
【0026】
フェッチ・アドレス窓保守ユニット52は、更に、比較器64、66を含み、それぞれはラインLASTFAを介してラッチ58から最終フェッチ・アドレスを受け取っている。より小さい比較器64は、更に、ラッチ60の内容をラインMINFAを介して受け取り、かつラインLASTFA上のアドレス値がラッチ60に記憶されている、前にフェッチされた最低アドレス値より小さいことに応答して、制御回路68に対して信号を発生する。同様に、より大きい比較器66は、ラッチ62の内容をラインMAXFAを介して受け取り、かつラインLASTFA上のアドレス値がラッチ62に記憶されている、前にフェッチされた最高アドレス値より大きいことに応答して、制御回路68に対して信号を発生する。
【0027】
制御回路68は、より小さい比較器64、66から受け取る信号と、ラインFA上に有効フェッチ・アドレスの存在を表すラインFAV上の信号と、ラインSMCFLUSHを介してSMC例外発生器56(図2)からの信号とに応答して、フェッチ・アドレス窓保守ユニット52の動作を制御する際に用いる組合わせ又は逐次的なロジックである。制御回路68は、更に、自己変更コード原因以外の理由(例えば、誤った予測分岐等を含む)のためにパイプライン・フラッシュを伝達し、かつフェッチ・アドレス窓保守ユニット52をリセットする必要があるマシン・リセットのように、他の条件を伝達する、マイクロプロセッサ10における他の所から制御信号(図示なし)を受け取る。ここでは、提供される機能的な説明により当該技術分野において通常に習熟する者が制御回路68を容易に実施できることを意図している。
【0028】
動作において、フェッチ・アドレス窓保守ユニット52は、ラインSMCFLUSHを介する有効信号によって伝達され得るパイプライン・フラッシュ、又はマイクロプロセッサのリセットにより、リセットされる。制御回路68は、この信号に応答して、ラインSELMT上に信号を発行してマルチプレクサ61、63にそれぞれ上限値及び下限値を選択させてラッチ60、62、及び制御ラッチ60、62に供給し、これら上下限値を記憶させる。この時点で、上限値(例えば、0xFFFFFFFFh)がラッチ60に記憶されて、ラインMINFA上に供給され、一方下限値(例えば、0h)はラッチ62に記憶されて、ラインMAXFA上に供給される。
【0029】
制御回路68は、次のフェッチにより、ラインFAVを介してフェッチ・ユニット26から、有効フェッチ・アドレスがラインFA上に存在していることを意味する有効信号を受け取る。そこで、制御回路68は、ラッチ58を制御してこの値を記憶させると共に、この値をラインLASTFAを介してマルチプレクサ61、63及び比較器64、66に供給させる。加えて、制御回路68はこの時点でマルチプレクサ61、63にラインLASTFA上の値を選択させてラッチ60、62の入力に供給する(しかし、未だこのアドレス値をラッチ60、62に記憶してはいない)。ラッチ58の内容は、ラインLASTFAを介して比較器64、66によりラッチ60、62の現在内容と比較される。上限値及び下限値をラッチ60、62にそれぞれ記憶した以後にこの最初のフェッチのために、比較器64、66の両者は、制御回路68がラッチ60、62に線LASTFA上の現在のフェッチ・アドレス(マルチプレクサ61、63を介して供給される)を記憶させることに応答して、制御回路68に信号を発行する。この処理は、それぞれ連続する有効フェッチ・アドレスについて反復されると共に、最終フェッチ・アドレスがラッチ58に記憶されてラッチ60、62の内容と比較される。最終フェッチ・アドレスが窓の外に(即ち現在の最小アドレスより小さく、又は現在の最大アドレスより大きく)なる度に、制御回路68はラッチ60、62のうちの適当な一つを制御して新しい最小又は最大アドレス値を記憶させる。
【0030】
図2を再び参照すると、ラインLASTFA、MAXFA、MINFAがフェッチ・アドレス窓保守ユニット52により書き込み比較器54に転送される。この例において、SMCユニット50は、マイクロプロセッサ10の2つのロード/ストア・ユニット400、401にそれぞれ関連された2つの比較器540、541を有する。本発明のこの実施例によれば、一方の比較器54はマイクロプロセッサ10内に存在する各ロード/ストア・ユニット40に関連される。従って、更に多くの又は少ないロード/ストア・ユニット(又は同様のメモリ書き戻しアドレスを発生する回路)を有する異なるアーキテクチャは、これに対応して更に多くの又は少ない書き込み比較器を有するものとなることを意図している。本発明のこの実施例によれば、各書き込み比較器54は、フェッチ・アドレス窓保守ユニット52からのアドレス値に加えて、それに対応するロード/ストア・ユニット40から新しい書き戻しアドレスを受け取る。この例において、書き込み比較器540はロード/ストア・ユニット400がラインLS0ADR上に発生した新しいそれぞれの書き込みアドレスを受け取り、また書き込み比較器541はロード/ストア・ユニット401がラインLS1ADR上に発生した新しいそれぞれの書き込みアドレスを受け取る。以下で更に詳細に説明するように、各書き込み比較器540、541は、それぞれラインLS0ADR、LS1ADを介して受け取る新しい書き込みアドレス値をラインMINFA、MAXFAを介してフェッチされた命令アドレスの窓と比較する。書き込み比較器540、541は、新しい書き込みアドレスが窓内に入る(従って、現在、パイプラインにおける命令に対応していてもよい。)と判断した場合に、それぞれラインLS0SMCXCP、LS1SMCXCP上に例外信号を発生する。ラインLS0SMCXCP、LS1SMCXCPはスケジューラ36に転送され、スケジューラ36は、当該技術分野において知られているように、他の目的のためにマイクロプロセッサ10に存在する命令例外機構を用いて、マイクロプロセッサ10の再直列化を実行し、次のx86命令において再スタートが続く。
【0031】
この例のマイクロプロセッサ10において、各ロード/ストア・ユニット40は待ち行列の書き戻しの機能を有するので、パイプラインは、バスが書き込み動作に利用できない場合に、又は各キャッシュ・ミスの場合に、停止する必要はない。マイクロプロセッサ10のキャッシュされるアーキテクチャによれば、書き込みは、典型的には、レベル0マイクロキャッシュ18に、かつマイクロキャッシュ18に対するキャッシュ・ミスの場合に、レベル1キャッシュ16dに適用される。このアーキテクチャでは、ロード/ストア・ユニット40によりレベル1キャッシュ16iを書き込むことはできないので、命令コードのものであってもレベル1キャッシュ16dを用いて書き戻しを受け入れる。続いて、レベル1キャッシュ16dに対してキャッシュ・ミスが発生すれば、書き込みがレベル2キャッシュ11に(必要ならば、最終的にメモリ・サブシステム5に)進む。この例によれば、レベル2キャッシュ11はマイクロプロセッサ10におけるキャッシュの統一性を制御している。その結果、ロード/ストア・ユニット40は、2つのロード/ストア・ユニット40間で保留レベル0書き込み、及び一つの保留レベル1をそれぞれ保持することができる(即ち、ロード/ストア・ユニット400、401のうちの一つのみが保留レベル1書き戻しを有することができる)。この機能は、キャッシュ・ミスにおいて早い書き込みに帰結しても、低キャッシュ・レベルに対する次の書き込みを発生するのを許容する。
【0032】
この手法はパフォーマンスを改善する一方で、自己変更コードの場合、特にレベル0のマイクロキャッシュ18又はレベル1キャッシュ16dに書き込みをするとき、従ってレベル2キャッシュ11に関連したシステム・キャッシュ統一性機構に対してトランスペアレントな手法により、複雑さが問題となり得る。例えば、書き込みが保留であって、まだ完了していないアドレスに対して、フェッチされた命令アドレスが対応するのであれば、フェッチされた命令コードは変更前にその状態になり、プログラム・エラーに帰結する。この状況は、本発明の好ましい実施例によれば、書き込み比較器54、55により処理され、これらはラインLASTFAを介してフェッチ・アドレス窓保守ユニット52により伝達された最終フェッチの命令アドレスを、保留のまま、従って処理されていなかった書き込みのアドレスと比較する付加的な機能を有する。各書き込み比較器540、541は、ラインLASTFA上の最終フェッチ・アドレスとレベル0マイクロキャッシュ18に対する保留書き込みとの間の競合を検出することに応答して、ラインLS0WBXCP、LS1WBXCP上に例外信号を発生するように実施される。同様に、共有書き込み比較器55は、ラインLASTFA上の最終フェッチ・アドレスとレベル1キャッシュ16dに対する保留書き込みとの間の競合を検出することにより、ラインL1WBXCP上に例外信号を発生する。この例外信号はSMC例外発生器56に転送され、SMC例外発生器56はラインSMCWBXCP上に例外信号を発生し、これがパイプラインのフラッシング、再直列化及び実行の再スタートを含む例外取り扱いのためにスケジューラ36に転送される。SMC例外発生器56は、更に、線SMCFLUSH上に信号も発生しており、この信号は、以下で更に詳細に説明するように、フェッチ・アドレス窓保守ユニット52をリセットさせる。SMC例外発生器56は、例外発生及び取り扱いのロジックに関して、当該技術分野において知られているように、通常技術により構築されてもよい。このような例外発生及び取り扱いのロジックは、典型的には、通常のマイクロプロセッサに設けられており、以下で説明するように、発生したSMC例外を受け付けるように容易に適応可能とされる。
【0033】
ここで図4を参照して、共有書き込み比較器55と組合わせられた書き込み比較器54の一例の構造について以下詳細に説明する。図4は書き込み比較器54。の構造を示している。勿論、これは、書き込み比較器541が同様に構築されることを意図している。書き込み比較器540はラインLS0ADRを介してロード/ストア・ユニット400から新しい書き込みを受け取り、この新しいアドレスをキュー・ラッチ71に供給して記憶させ、キュー・ラッチ71がラインLS0ADRを他の伝送のために開放する。ラインLS0ADRは、更に、キュー・ラッチ71の出力としてマルチプレクサ73の1入力に入力される。マルチプレクサ73は、制御回路78の制御により、キュー・ラッチ71のラッチ内容か、又はラインLS0ADRを介して新たに到達した書き込みアドレス(未だ有効ならば)かを選択してその出力及び保留アドレス・レジスタ75に供給する。このアドレスは、その書き込みがレベル0マイクロキャッシュ18に対する書き込みのためにロード/ストア・ユニット400により保留状態に処理される時点で、保留アドレス・レジスタ又はラッチ75に記憶される。
【0034】
マルチプレクサ73の出力及びラッチ75の出力は共にマルチプレクサ77に供給される。マルチプレクサ77の出力は、ラインLS0ADR1を介して共有書き込み比較器55に転送される。書き込み比較器540内のマルチプレクサ77は、制御回路78により制御されて、これに関連するロード/ストア・ユニット400により起動されるレベル1キャッシュ16dに対する書き込みのアドレスを供給する。この書き込みがレベル0マイクロキャッシュ18におけるキャッシュ・ミスによるものであれば、マルチプレクサ77により選択されたアドレスは、保留アドレス・レジスタ75の現在内容となる。マルチプレクサ77は、マルチプレクサ73の出力から共有書き込み比較器55へ直接、元はレベル1キャッシュ16dに向けられている書き込みのアドレスを転送する。
【0035】
制御回路78はラインWRDNEを介してマイクロキャッシュ18及びマイクロプロセッサ10のメモリ・システムの他の要素から、書き込み動作の完了を表す信号を受け取る。各書き込み動作が完了すると、制御回路78はレジスタ71、75のシーケンスに沿って書き込みアドレスを進める。この例では書き込み比較器54による取り扱いのために1保留書き込みを意図しているが、他のアーキテクチャでは、書き込み比較器54における保留アドレス・ラッチの数がそれに関連するロード/ストア・ユニット40によって取り扱われるキャッシュ・レベルの深さに従って、異なっていてもよい。
【0036】
フェッチ・アドレス窓に対する比較が有効であれば直ちに、現在の書き戻しアドレスがラインLS0ADRを介して比較器72、74の各1入力に供給される。比較器72はその他方の入力にフェッチ・アドレス窓保守ユニット52からのラインMINFAを受け取り、従って現在の書き込みアドレスをラインMINFA上のアドレスと比較する。同様に、比較器74はその他方の入力にフェッチ・アドレス窓保守ユニット52からのライン(信号)MAXFAを受け取って、現在の書き込みアドレスを線MAXFA上のアドレスと比較する。比較器72、74の出力はANDゲート76の入力に供給され、その出力はラインINWINを介して制御回路78に伝達される。以下で更に説明するように、比較器72、74とANDゲート76との組合わせは、現在の書き込みアドレスがパイプラインにおける命令のアドレスに潜在的に一致するか否かを判断する機能を実行するものとなる。
【0037】
制御回路78は、比較結果をラインINWINを介して受け取り、かつ現在の書き込みアドレスがフェッチした命令のアドレス(ラインLASTFA上に示す最終フェッチ・アドレスを含む)範囲内にある場合に、ラインLS0MCXCPを介してスケジューラ36に対して例外信号を発生する組合わせ又は逐次的なロジックである。制御回路78は、更に、その関連のロード/ストア・ユニット400からの制御信号を受け取り、保留書き込み動作のステータスに従って、レジスタ71、75に保留アドレス値を記憶すること、及びマルチプレクサ73、77により実行される選択を制御する。ここに説明したように実行される機能を参照することにより、特定の実施に適した制御回路78を構築することは、当該技術分野に習熟する者にとって容易に可能であると意図している。
【0038】
マルチプレクサ73により選択された書き込みアドレスは、更に、等価比較器80の1入力に供給され、等価比較器80はその他方の入力にフェッチ・アドレス窓保守ユニット52からラインLASTFAを受け取っている。ラインLASTFAは、更に、保留アドレス・レジスタ75の内容と共に、等価比較器82に供給されている。等価比較器80、82はラインFAX、PND0Xを介して例外ロジック86にこれらの比較結果をそれぞれ伝達している。以下で更に詳細に説明するように、等価比較器80、82は、最終フェッチ・アドレスが現在の保留書き込み動作のアドレスに一致するか否かを判断する機能を実行する。
【0039】
例外ロジック86は、ラインFAX、PND0Xを介して等価比較器80、82からの信号をそれぞれ受け取っている組合わせ及び逐次的なロジックであり、制御回路78からの信号を制御して、最終フェッチ・アドレスが、完了した命令に対応する、保留書き込みキューにおける書き込みアドレスと一致する場合に、ラインLS0WBXCPを介してSMC例外発生器56(図2)に対して例外信号を発生する。ここで提供した機能説明に基づく通常の設計技術を用いて例外ロジック86を実施することは、当該技術分野に習熟する者にとって容易に可能であることを意図している。
【0040】
動作において、書き込み比較器54は、ラインLS0ADRを介してロード/ストア・ユニット400から新しい書き込みアドレスを受け取ることにより、キュー・ラッチ71にアドレスを記憶し、かつこのアドレスを直接、比較器72、74に転送してラインMINFA、MAXFAを介して提供されるフェッチ・アドレス窓と比較する。比較器72は、マルチプレクサ73から現在の書き込みアドレスの値が最終パイプライン・フラッシュ以後にフェッチされた命令の最低線形アドレスより大きい又は等しいことに応答して、ANDゲート76のうちの一方の入力に対して信号を発生する。同様に、比較器74は、現在の書き込みアドレスの値が最終パイプライン・フラッシュ以後にフェッチされた命令の最高線形アドレスより小さい又は等しいことに応答して、ANDゲート76のうちの他方の入力に対して信号を発生する。ANDゲート76は、両比較器72、74が真の信号を戻して、現在の書き込みアドレスが最終パイプライン・フラッシュ以後にフェッチされた命令のアドレス範囲内にあることを表す場合に、ラインINWIN上に信号を発生し、従ってパイプラインに存在する命令コードに対する変更であってもよい。逆に、現在の書き込みアドレスが最終パイプライン・フラッシュ以後にフェッチされた命令のアドレス範囲内にない(即ち、ラインINWINがローである)ときは、書き込みがパイプラインにおける命令コードの変更である可能性はない。
【0041】
制御回路78は、ラインINWIN上の活性信号を受け取ることに応答して、ラインLS0SMCXCP上に例外信号を発生し、スケジューラ36(図1)に伝達されて例外シーケンスを開始させる。現在の書き込みアドレスは、現在、パイプラインにおいて命令のうちの一つ(多分現在、実行している命令を含む)と競合状態にあり得るので、この例において、ANDゲート76及び制御回路78により発生される例外は、トラップ形式のものである。従って、現在の書き込みに対応するものより後の命令が完了するように許可されることはない。
【0042】
更に、書き込み比較器54。は最終フェッチ・アドレスを保留書き込みと比較する。ラインLASTFA上のフェッチ・アドレスは、命令のフェッチにより、等価比較器80により現在の書き込みアドレスと、及び等価比較器82により保留アドレス・レジスタ75に記憶された保留書き込みのアドレスと比較される。最終フェッチ・アドレスが現在の書き込みアドレスと競合するのであれば、等価比較器80はラインFAX上に信号を生じせしめる。同様に、最終フェッチ・アドレスが保留書き込みアドレスと競合するのであれば、等価比較器82はライン(信号)PND0Xを生じさせる。例外ロジック86は、ラインFAX上に又はラインPND0X上に生じた信号に応答して、ラインLS0WBXCPを介してSMC例外発生器56(図2)に対して例外信号を発生し、SMC例外発生器56は続いてマイクロプロセッサ10に対して(即ち、スケジューラ36に対して)例外を発生する。本発明の好ましい実施例によれば、この例において例外ロジック86により発生した例外は、パイプラインを直列化し、かつ再スタートする前に、これらの命令が完了するように現在実行されるのを許容する割り込み形式のものである。この例において、競合が最終フェッチされた命令間であることが知られているので、この形式の例外は許容され(かつパイプラインにおいて後の命令によってではない。さもなければトラップが既に比較器72、74により発生されてしまっている。)。
【0043】
共有書き込み比較器55において、マルチプレクサ83は、一方の入力にラインLS0ADR1を介して書き込み比較器540のマルチプレクサ77の出力を受け取り、かつ他方の入力に書き込み比較器541からLS1ADR1を介して同様の保留アドレス値を受け取る。マルチプレクサ83は制御回路81により制御されてレジスタ85に記憶するために適当な保留書き込みのソースを選択する。以上で述べたように、ロード/ストア・ユニット40のいずれかによりレベル1キャッシュ16dに対する1回のみの書き込みは、任意の1時点で保留になるかも知れない。制御回路81はラインWRDを介してレベル1キャッシュ16dからの制御信号を受け取って書き込み受け取るためにレベル1キャッシュ16dの利用可能性と、アクセスを許可したロード/ストア・ユニット40のうちの一つの識別とを表示させる。レベル1キャッシュ16dに対する保留書き込みのアドレスに対応するレジスタ85の内容は、ラインLASTFAを介して現在のフェッチ・アドレスとして、等価比較器87に転送される。等価比較器87は、等価比較器80、82と同様に、レジスタ85の保留書き込みアドレスをラインLASTFA上のフェッチ・アドレスと比較し、ラインLIXを介して例外ロジック89に対し、信号を発生する。例外ロジック89は、例外ロジック86と同様に構築されており、競合を検出した場合に、ラインSHWBSCPを介してSMC例外発生器56に対し、例外信号を発生する。
【0044】
動作において、共有書き込み比較器55は、レベル1キャッシュ16dに対する書き込みが保留になる時点で、ラインLS0ADR1、LS1ADR1を介して新しい書き込みアドレスを受け取る。制御回路81はマルチプレクサ83を制御して適当なアドレス・ソースを選択し、かつ保留書き込みアドレスはレジスタ85に記憶されて等価比較器87に提供される。等価比較器87は、ラインLASTFAを介して新しいフェッチ・アドレスを受け取るのに応答して、競合がこのフェッチ・アドレスとレジスタ85に記憶された保留書き込みアドレスとの間に存在するか否かを判断する。等価比較器87は、競合を検出するのに応答して、ラインLIXを介して例外ロジック89に信号を主張する。例外ロジック89は、これに応答して、ラインL1WBXCPを介してSMC例外発生器56に対して例外信号を発生する。SMC例外発生器56は、書き込み比較器54により発生した例外の場合のように、ラインSMCWBXCP上に信号を発生して割り込み形式の例外を実行させる。そこで、現在、実行している命令は完了し、かつパイプラインは直列化され、かつ再スタートされる。
【0045】
ここで、図5を図2〜図4と組合わせて参照して、フェッチ・アドレス窓を保持する際に、及び保留書き込みによる競合に対する各フェッチ・アドレスを評価する際に、フェッチ・アドレス窓保守ユニット52及び書き込み比較器54を含め、SMCユニット50の総合動作を説明する。
【0046】
動作は処理88から始まり、処理88において、フェッチ・ユニット26は新しいフェッチ・アドレスを発生し、これはフェッチ・アドレス窓保守ユニット52がラインFAを介し、ラインFAVを介する有効信号と組合わせて受け取る。フェッチ・アドレス窓保守ユニット52はラインFAを介してフェッチ・アドレスをラッチ58にラッチさせて、ラインLASTFAを介してその内容を比較器61、63に提供し、これらは互いに並列に判断91、93を実行して現在のフェッチ・アドレス窓を更新すべきか否かを判断する。前述したように、各パイプライン・フラッシュ又はマシン・リセットにより、最小フェッチ・アドレスがメモリ空間のハイ・アドレス限界にセットされ、かつ最大フェッチ・アドレスがメモリ空間のロー・アドレス限界にセットされるので、リセット後の最初のフェッチは新しいフェッチ・アドレス窓の確立を開始する。判断91がラインLASTFAを介して最終フェッチ・アドレスがラインMINFAを介して前の最低フェッチ・アドレス未満であることを判断すると、処理92がフェッチ・アドレス窓保守ユニットにより実行されて、ラインLASTFA上の値をラッチ60にロードさせる。同様に、ラインLASTFA上の最終フェッチ・アドレスがラインMAXFA上の前の最高フェッチ・アドレスを超えるのであれば、処理94はフェッチ・アドレス窓保守ユニット52により実行されてラインLASTFA上の値をラッチ62にロードさせる。必要に従って処理92又は94(又はリセット後の最初のフェッチの場合には両方)を完了することにより、制御は判断95に渡される。
【0047】
判断95は書き込み比較器540、541により、及び共有書き込み比較器55により実行されて、完了した命令のために、ラインLASTFA上の最終フェッチ・アドレスを、保留及び待ち行列にした書き込みのアドレスと比較する。図4に示すように、かつ以上で説明したように、判断95は書き込み比較器540、541のそれぞれにおける等価比較器80、82により実行されて、ラインLASTFA上の値を(それぞれラインLS0ADR、LS1ADR上の、又はキュー・ラッチ71に待ち行列にされた)最終書き込みアドレスと、及び保留アドレス・レジスタ75と比較する。判断95は、更に、共有書き込み比較器55における等価比較器87により実行されて、ラインLASTFA上の最終フェッチ・アドレスをレジスタ85に記憶された保留レベル1書き込みアドレスと比較する。等価比較器80、82、87により競合が検出されないときは、命令のフェッチは通常の形式により進行する。しかし、一致が検出されれば(判断95がイエスであれば)、(ラインLASTFA上のアドレスにより)最終フェッチされた命令の命令コードは、保留のうちの一つにより未だ修飾されていない、又は未だ完了していない待ち行列の書き込みとして、旧いものになっている恐れがある。次いで、制御は処理96に渡されて、場合によって、書き込み比較器54のうちの一つにおける例外ロジック86、又は共有書き込み比較器55における例外ロジック89は、例外信号をSMC例外発生器56に対して発生する。SMC例外発生器56は、これに応答して、ラインSMCWBXCP(図2)を介し、スケジューラ36又はマイクロプロセッサ10におけるこのような他の適当な例外回路に例外を発行する。次いで、処理98はマイクロプロセッサ10における適当な回路により実行されてSMC例外を取り扱う。この例において、競合はフェッチ段と完了した命令との間にあり、従って結果の例外は割り込みとして実施されてもよい。処理98は、好ましくは、現在実行している命令の実行を完了するステップ、全ての保留及び完了した結果の書き込みを実行することによりパイプラインを直列化するステップ、及び通常の方法において、プログラムの実行を再スタートさせることにより、競合を発生させる命令のフェッチが修飾した命令コードを検索するパイプライン例外を取り扱うステップを含む。加えて、処理99により図5に示すように、フェッチ・アドレス窓保守ユニット52(図3)は上限値(例えば、0xFFFFFFFFh)をラッチ60に、また下限値(例えば、0h)をラッチ62に記憶することによりラッチ60、62をリセットさせ、これがフェッチ・アドレス窓をリセットさせる。
【0048】
従って、本発明の好ましい実施例によれば、各フェッチ・アドレスが解析されて、フェッチ・アドレス窓はこの最終フェッチ・アドレスを含むように最小及び最大フェッチ・アドレス値のいずれか(又は両方)を変更することにより、更新されるべきか否かを判断する。加えて、各フェッチ・アドレスは、各保留又は待ち行列の書き込みに対して解析されて、未完了の書き込みにより意図された命令コード変更が命令のフェッチ前に実行されることを保証する。
【0049】
ここで、図1〜図4と組合わせて図6を参照し、関連するロード/ストア・ユニット40から各新しい書き込みアドレスを受け取ることに応答するSMCユニット50の動作を説明する。この処理は、書き込みが典型的に命令のフェッチに結合されていない意味において、図5のフェッチ窓更新及び競合チェック処理とほぼ同期して動作する。換言すれば、各マシン・サイクルは、フェッチ及び書き込み動作のいずれか含む、いずれも含まない、又は両方を含むことができる。
【0050】
処理100において、ロード/ストア・ユニット400、401のうちの一つ(又は両方)は、命令の実行を完了すると、新しい書き戻しアドレスを発生する。この新しい命令は、その場合に従って、ラインLS0ADR、LS1ADR(図6において通常、LSxADRと呼ばれる)を介して書き込み比較器54のうちの対応する一つ(又は両方)により受け取られる。判断101において、各書き込み比較器54は、この書き込みアドレスLxADRをフラッシュ以後にフェッチされ、ラインMINFAを介して提供される最低命令アドレスと比較する。判断103において、各書き込み比較器54は、この書き込みアドレスLSxADRをフラッシュ以後にフェッチされ、ラインMAXFAを介して提供される最高命令アドレスと比較する。OR処理102(即ち、判断101、103のいずれかがノーである)により表されているように、最終書き込みアドレスLSxADRが最低窓アドレス(MINFA)より小さいか、又は最高窓アドレス(MAXFA)より大いのであれば、書き込みは現在、パイプラインにおける命令の変更であり得ない。次いで、制御は処理104に渡され、書き込み比較器54が保留書き込みキュー(即ちレジスタ75、85)における最新アドレスLSxADRを適当に進める。
【0051】
しかし、AND処理105(即ち、判断101、103の両方がイエスである)により表されているように、最終書き込みアドレスLSxADRがフラッシュ以後の最低フェッチ・アドレス(MINFA)より大きい、及びフラッシュ以後の最高フェッチ・アドレス(MAXFA)より小さいのであれば、この書き込みは現在、パイプラインにある命令の変更であり得る。この書き込みが窓内にあることの判断は、パイプライン命令が変更されていることを必ずしも意味せず、その代わりに、この書き込みによるパイプライン命令の変更は、書き込みが進行すべきであったときに、可能であることを判断するだけであることに注意すべきである。この場合に、制御は処理106に進行し、潜在的に競合している書き込みアドレスを受け取る書き込み比較器540、541のうちの一つにおける制御回路78は、ラインLS0SMCXCP、LS1SMCXCPを介してスケジューラ36に対してその各例外信号を発生して主張する。この場合に起動される例外は、トラップに対応する。次に処理108において、スケジューラ36は、競合する書き込みの完了を含むパイプラインの直列化、及び現在実行している命令を含むパイプラインのフラッシュを実行する。パイプラインのフラッシュは、変更され得る特定のパイプライン化された命令の識別が知られていないことを考慮して、この場合では必要とされ、かつ実行における命令のように遅い命令を含み得る。直列化及びフラッシュ動作には、命令の実行の再スタートが続き、競合している書き込みが続く次の命令のフェッチにより開始する。実行は以前と同じように継続する。
【0052】
本発明によれば、マイクロプロセッサの制御において多くの重要な効果が得られる。このような効果のうちの一つは、最小量のハードウエア及び集積回路チップ面積により自己変更コードの例外を検出し、かつ取り扱う能力である。以上の説明から明らかなように、本発明の好ましい実施例は、各書き込みアドレスを比較しようとしているパイプラインにおける各命令のアドレスを記憶することを必要としない。即ち、通常のマイクロプロセッサに含まれているようなメモリは、特に、更に進歩したマイクロプロセッサにおいてパイプラインが(スーパスケーラの意味において)より深く、かつより広くなるに従って、相当量のチップ面積を消費する。代わって、フェッチ・アドレス窓の限界のみが記憶される必要がある。更に、本発明の好ましい実施例によれば、書き込みアドレスを、現在、パイプラインにある各命令の記憶アドレスと比較するものと比べて、2回の比較を必要とするだけである。従って、オーバヘッド時間及びこの動作に必要とされる回路は、大きく減少される。
【0053】
本発明の好ましい実施例は、各書き込みアドレスが窓限界に対してのみ比較されることを考慮して、不必要なパイプライン・フラッシュに帰結し得ることを意図している。従って、書き込みアドレスが窓内にあっても、命令が既に完了した、又はフェッチされてはいないので、パイプラインにおける命令と対応しないことが考えられる。しかし、チップ面積の節約及びパフォーマンスを設定すると、本発明に関連して、他の理由(例えば、誤った予測の分岐)のためのパイプライン・フラッシュの頻度、及び更にプログラム命令の近接は、偽の自己変更コードの競合による不必要なフラッシュの可能性を、多くの通常のアーキテクチャにとって、許容し得るレベルへ減少させることが判った。
【0054】
本発明の好ましい実施例は、新しいそれぞれのフェッチ・アドレスを、待ち行列及び保留の書き込みアドレスと比較し、自己変更コード事象により誤りに対して更なる保証を提供し、かつ比較的に深い書き込みキューを有するように能力を可能にする付加的な効果を提供する。
【0055】
好ましい実施例により本発明を説明したが、これらの実施例に対する変更及び代替、本発明の効果及び利益を得る変更及び代替は、当該技術分野に習熟する者がこの明細書及びその図面を参照することにより、明らかとなることを勿論、意図している。このように変更及び代替は、ここでの特許請求の範囲内にあることを意図している。
【0056】
以上の説明に関して更に以下の項を開示する。
【0057】
(1) 命令アドレスに従って命令コードを記憶すると共に、オペランドを記憶するメモリと、
複数の命令をシーケンスにより処理する複数の段を有する命令実行パイプラインと
を備えたマイクロプロセッサにおいて、前記複数の段は、
フェッチ・アドレスにより前記メモリをアドレス指定して命令コードを読み出し、前記命令のパイプラインに供給するフェッチ・ユニットと、
複数の命令を実行する少なくとも一つの実行ユニットと、
前記実行ユニットからの結果を行き先書き込みアドレスにより前記メモリに書き込む第1のロード/記憶ユニットと、
前記フェッチ・ユニット及び前記第1のロード/記憶ユニットに接続された自己変更コード検出回路と
を備え、前記自己変更コード検出回路は、
最低フェッチ・アドレス値を記憶する最小ラッチと、
最高フェッチ・アドレス値を記憶する最大ラッチと
前記行き先書き込みアドレスを前記最小ラッチ及び前記最大ラッチの内容と比較し、かつ前記行き先書き込みアドレスが前記最低フェッチ・アドレス値より大きい又は等しい、及び前記最高フェッチ・アドレス値より小さい又は等しいことに応答して、フラッシュ信号を前記命令実行パイプラインに対して発生する第1の書き込み比較器とを備えたマイクロプロセッサ。
【0058】
(2) 前記自己変更コード検出回路は、更に、
前記フェッチ・アドレスを前記最小ラッチの内容と比較する第1の更新比較器と、
前記フェッチ・アドレスを前記最大ラッチの前記内容と比較する第2の更新比較器と
前記第1及び第2の比較器に接続され、前記フェッチ・アドレスは前記最小ラッチに記憶されている前記最低フェッチ・アドレス値より小さいことを前記第1の更新比較器が判断したことに応答して、前記フェッチ・アドレスを記憶するように前記最小ラッチを制御し、かつ前記フェッチ・アドレスは前記最大ラッチに記憶されている前記最高フェッチ・アドレス値より大きいことを前記第2の更新比較器が判断したことに応答して、前記フェッチ・アドレスを記憶するように前記最大ラッチを制御する制御回路と
を備えた第1項記載のマイクロプロセッサ。
【0059】
(3) 前記制御回路は、更に、パイプライン・フラッシュに応答して、ハイ・メモリ・アドレス限界を記憶するように前記最小ラッチと、ロー・メモリ・アドレス限界を記憶するように最大ラッチとの両方を制御するためのものである第2項記載のマイクロプロセッサ。
【0060】
(4) 前記第1の書き込み比較器は、前記行き先書き込みアドレスが前記最低フェッチ・アドレス値より大きい又は等しい、又は前記最高フェッチ・アドレス値より小さい又は等しいことに応答して、前記命令実行パイプラインに対して例外信号を発生し、
かつ、前記命令実行パイプラインは前記例外信号の受け取りに応答してパイプライン・フラッシュを実行する第1項記載のマイクロプロセッサ。
【0061】
(5) 前記命令実行パイプラインは、更に、
前記実行ユニットからの結果を行き先書き込みアドレスにより前記メモリに書き込む第2のロード/ストア・ユニット
を備え、
かつ、前記自己変更コード検出回路は、更に、
前記第2のロード/ストア・ユニットからの前記行き先書き込みアドレスを前記最小ラッチ及び前記最大ラッチの内容と比較し、かつ前記第2のロード/ストア・ユニットからの前記行き先書き込みアドレスが前記最低フェッチ・アドレス値より大きい又は等しいこと、及び前記最高フェッチ・アドレス値より小さい又は等しいことに応答して、前記命令実行パイプラインに対してフラッシュ信号を発生する第2の書き込み比較器を備えている第1項記載のマイクロプロセッサ。
【0062】
(6) 前記第1の書き込み比較器は、
前記行き先書き込みアドレスを前記最小ラッチの内容と比較する第1の窓比較器と、
前記行き先書き込みアドレスを前記最大ラッチの内容と比較する第2の窓比較器と、
前記第1の窓比較器が、前記行き先書き込みアドレスは前記最低フェッチ・アドレス値より大きい又は等しいと判断したことと、前記第2の窓比較器が、前記行き先書き込みアドレスは前記最高フェッチ・アドレス値より小さい又は等しいと判断したこととの組合わせに応答して、前記フラッシュ信号を発生する比較器制御回路とを備えた第1項記載のマイクロプロセッサ。
【0063】
(7) 前記第1の書き込み比較器は前記フェッチ・アドレスを受け取るように前記フェッチ・ユニットに接続され、
前記第1の書き込み比較器は、更に、
前記フェッチ・アドレスを前記行き先書き込みアドレスと比較し、かつ前記フェッチ・アドレスが前記行き先書き込みアドレスと一致することに応答して、前記比較器制御回路に信号を発生する第1の品質比較器を備えている第6項記載のマイクロプロセッサ。
【0064】
(8) 前記第1の書き込み比較器は、更に、
未だ完了していない前記第1のロード/記憶ユニットによる書き込み動作のために保留行き先書き込みアドレスを記憶する保留書き込みアドレス・ラッチと、フェッチ・アドレスを前記保留行き先書き込みアドレスと比較し、かつ前記フェッチ・アドレスが前記保留行き先書き込みアドレスと一致することに応答して、信号を前記比較器制御回路に発生する第2の等価比較器と第7項記載のマイクロプロセッサ。
【0065】
(9) 前記比較器制御回路は、
前記第2の等価比較器が前記フェッチ・アドレスが前記保留行き先書き込みアドレスと一致すると判断することに応答して、例外要求信号を発生する例外ロジックを備えた第8項記載のマイクロプロセッサ。
【0066】
(10) 前記メモリは、
前記フェッチ・ュニットからのフェッチ・アドレスに対応する位置に命令コードを記憶する命令メモリと、
オペランドを記憶するデータ・メモリとを備えた第1項記載のマイクロプロセッサ。
【0067】
(11) 更に、
前記命令実行パイプラインに対する、及び前記メモリに対する一方の側に接続され、かつ外部バスに対する他方の側に接続されたバス・インターフェイス・ユニットと、
前記外部バスに接続された外部サブシステムとを備えた第1項記載のマイクロプロセッサ。
【0068】
(12) 前記第1の窓比較器は前記フェッチ・ユニットと前記第1のロード/ストア・ユニットとに接続され、かつ、
前記行き先書き込みアドレスを前記最小ラッチの内容と比較する第1の窓比較器と、
前記行き先書き込みアドレスを前記最大ラッチの内容と比較する第2の窓比較器と、
前記第1の窓比較器が、前記行き先書き込みアドレスは前記最低フェッチ・アドレス値より大きい又は等しいと判断したことと、前記第2の窓比較器が、前記行き先書き込みアドレスは前記最高フェッチ・アドレス値より小さい又は等しいと判断したこととの組合わせに応答して、前記フラッシュ信号を発生する比較器制御回路と
前記フェッチ・アドレスを前記行き先書き込みアドレスと比較し、かつ前記フェッチ・アドレスが前記行き先書き込みアドレスと一致することに応答して、現在の競合信号を発生する第1の品質比較器と、
未だ完了していない前記第1のロード/ストア・ユニットによる書き込み動作のために第1の保留行き先アドレスを記憶する第1の保留書き込みアドレス・ラッチと、
前記フェッチ・アドレスを前記第1の保留行き先アドレスと比較し、かつ前記フェッチ・アドレスが前記保留行き先書き込みアドレスと一致することに応答して、第1の保留競合信号を発生する第2の等価比較器と、
前記第1及び第2の等価比較器に接続され、前記現在の競合信号か又は前記第1の保留競合信号に応答して、フラッシュ信号を発生する例外制御回路とを備えた第1項記載のマイクロプロセッサ。
【0069】
(13) 更に、
前記実行ユニットからの結果を行き先書き込みアドレスにおける前記メモリに書き込む第2のロード/ストア・ユニットと、
前記フェッチ・ユニットと前記第2のロード/ストア・ユニットとに接続された第2の窓比較器と
を備え、
前記行き先書き込みアドレスを前記最小ラッチの内容と比較する第1の窓比較器と、
前記行き先書き込みアドレスを前記最大ラッチの内容と比較する第2の窓比較器と、
前記第1の窓比較器が、前記行き先書き込みアドレスは前記最低フェッチ・アドレス値より大きい又は等しいと判断したことと、前記第2の窓比較器が、前記行き先書き込みアドレスは前記最高フェッチ・アドレス値より小さい又は等しいと判断したこととの組合わせに応答して、前記フラッシュ信号を発生する比較器制御回路と、
前記フェッチ・アドレスを前記行き先書き込みアドレスと比較し、かつ前記フェッチ・アドレスが前記行き先書き込みアドレスと一致することに応答して、前記現在競合信号を発生する第1の等価比較器と、
未だ完了していない前記第1のロード/ストア・ユニットによる書き込み動作のために第1の保留行き先書き込みアドレスを記憶する第1の保留書き込みアドレス・ラッチと、
前記フェッチ・アドレスを前記第1の保留行き先書き込みアドレスと比較し、かつ前記フェッチ・アドレスが前記保留行き先書き込みアドレスと一致することに応答して、第1の保留競合信号を発生する第2の等価比較器と、
前記第1及び第2の等価比較器に接続され、前記現在の競合信号か又は前記第1の保留競合信号に応答して、フラッシュ信号を発生する例外制御回路とを備えた第12項記載のマイクロプロセッサ。
【0070】
(14) 更に、
前記第1及び第2の書き込み比較器に接続された共有書き込み比較器と、
前記第1及び第2の書き込み比較器からの保留行き先書き込みアドレスを選択する選択回路と、
前記選択された保留行き先書き込みアドレスを記憶する第2の保留書き込みアドレス・ラッチと、
前記フェッチ・アドレスを前記記憶し、選択した保留行き先書き込みアドレスと比較し、かつ前記フェッチ・アドレスが前記記憶し、選択した保留行き先書き込みアドレスと一致することに応答して、第2の保留競合信号を発生する共有等価比較器と、
前記第3の等価比較器に接続され、前記第2の保留競合信号を受け取ることに応答して、フラッシュ信号を発生する共有制御回路とを備えた第13項記載のマイクロプロセッサ。
【0071】
(15) 一方側を前記命令実行パイプラインと前記メモリとに接続され、かつ前記他方側を外部バスに接続されたバス・インターフェイスと、
前記外部バスに接続された外部サブシステムとを備えた第12項記載のマイクロプロセッサ。
【0072】
(16) 自己変更コードの競合を検出するようにマイクロプロセッサを動作させる方法において、
命令を実行するステップと、
前記実行するステップの結果をメモリに書き込む書き込みアドレスを発生するステップと、
前記書き込みアドレスを最小フェッチ・アドレス及び最大フェッチ・アドレスと比較するステップであって、前記最小フェッチ・アドレスがパイプライン・フラッシュ以後に受け取った複数の命令のための最低フェッチ・アドレスに対応し、かつ前記最大フェッチ・アドレスが前記パイプライン・フラッシュ以後に受け取った複数の命令のための最高フェッチ・アドレスに対応しているステップと、前記比較するステップに応答して、前記書き込みアドレスが共に前記最小フェッチ・アドレスより大きく又は等しい、及び前記最高フェッチ・アドレスより小さい又は等しいことを判断するステップと
を備えた前記方法。
【0073】
(17) 現在のフェッチ・アドレスを発生して前記マイクロプロセッサが実行する命令コードをフェッチさせるステップと、
前記現在のフェッチ・アドレスを前記最小フェッチ・アドレスと比較するステップと、
前記フェッチ・アドレスが前記最小フェッチ・アドレスより小さいことに応答して、前記最小フェッチ・アドレスを前記現在のフェッチ・アドレスに等しく設定するステップと、
前記現在のフェッチ・アドレスを前記最大フェッチ・アドレスと比較するステップと、
前記フェッチ・アドレスが前記最大フェッチ・アドレスより大きいことに応答して、前記最大フェッチ・アドレスを前記現在のフェッチ・アドレスに等しく設定するステップと
を備えた第16項記載の方法。
【0074】
(18) 更に、
パイプライン・フラッシュに応答して、前記最小フェッチ・アドレスを上限界値に設定し、かつ前記最大フェッチ・アドレスを下限値に設定するステップ
を備えた第16項記載の方法。
【0075】
(19) 前記パイプライン・フラッシュを開始させるステップは、 例外信号を発生させるステップと、
前記例外信号に応答して、前記パイプラインをフラッシュさせるステップと
を含む第16項記載の方法。
【0076】
(20) 更に、
現在のフェッチ・アドレスを発生して前記マイクロプロセッサが実行する命令コードをフェッチさせるステップと、
前記現在のフェッチ・アドレスを前記書き込みアドレスと比較するステップと、
前記比較ステップに応答して、前記現在のフェッチ・アドレスが前記書き込みアドレスと一致することを判断し、パイプライン・フラッシュを開始させるステップと
を備えた第16項記載の方法。
【0077】
(21) 未だ完了してない書き込み動作の行き先メモリアドレスに対応する少なくとも一つの保留書き込みアドレスを記憶するステップと、
前記現在のフェッチ・アドレスを前記少なくとも一つの保留書き込みアドレスのそれぞれと比較するステップと、
前記比較するステップに応答して、前記現在のフェッチ・アドレスが少なくとも一つの保留書き込みアドレスと一致することを判断し、パイプライン・フラッシュを開始させるステップと
を備えた第20項記載のマイクロプロセッサ。
【0078】
(22) 前記パイプライン・フラッシュを開始させるステップは、前記保留書き込みアドレスに対応する前記書き込み動作を完了させるステップと、
次いで前記現在のフェッチ・アドレスに対応するメモリ位置から命令コードをフェッチし、前記マイクロプロセッサにより実行させるステップと
を備えた第21項記載の方法。
【0079】
(23) 更に、
前記比較するステップの前に第2の命令の実行を開始するステップを備え、かつ前記開始するステップは、更に、
前記フェッチ・ステップの前に、前記第2の命令の実行を完了させるステップを備えた第22項記載の方法。
【0080】
(24) パイプラインにおける潜在的な変更及び命令を検出し、かつ取り扱うための能力を実施するマイクロプロセッサ(10)及びシステム(2)を開示する。前記マイクロプロセッサ(10)は、フェッチ・アドレス窓保守ユニット(52)と、メモリ(16、11、5)に対して書き込みを実行させるマイクロプロセッサ(10)における各ロード/ストア・ユニット(40)に関連した書き込み比較器(54)と、共有書き込み比較器(55)とを含む自己変更コード(SMC)ユニット(50)を含む。前記フェッチ・アドレス窓保守ユニット(52)は、パイプライン・フラッシュ又はマシン・リセット以後の最低フェッチ・アドレスを記憶する最小ラッチ(60)と、フラッシュ又はリセット以後の最高フェッチ・アドレスを記憶する最大ラッチ(62)とを含み、かつ現在のフェッチ・アドレス(LASTF)が現在の窓の外側になるのを検出することにより、最小及び最大ラッチ(60、62)を更新する。書き込み比較器(54)は、各新しい書き込みアドレス(LSxADR)を、前記最小及び最大ラッチ(60、62)からの最小及び最大フェッチ・アドレス(MINFA、MAXFA)とそれぞれ比較する。書き込みアドレス(LSxADR)が前記窓内に含まれるのに応答して、例外シーケンスが前記パイプラインをフラッシュさせるために開始される。更に、書き込み比較器(54、55)は現在のフェッチ・アドレス(LASTFA)を現在書き込みアドレス、及び保留しているが、未完了の書き込みのアドレスと比較して、フェッチした命令と保留書き込みとの間に競合が存在するか否かを判断する。
【図面の簡単な説明】
【図1】本発明の好ましい実施例によるマイクロプロセッサ及びシステムのブロック形式による電気図。
【図2】本発明の好ましい実施例による自己変更コード制御回路の電気的ブロック図。
【図3】本発明の好ましい実施例による図2の自己修飾コード制御回路におけるフェッチ・アドレス窓保守ユニットの電気的ブロック図。
【図4】本発明の好ましい実施例による図2の自己変更コード制御回路における書き込み比較器のうちの一つのブロック及び概要形式による電気的ブロック図。
【図5】本発明の好ましい実施例による、フェッチ・アドレス窓を保守する際に、及びフェッチ・アドレスを保留書き込みアドレスと比較する際に図2の自己変更コード制御回路の動作を説明するフローチャート。
【図6】本発明の好ましい実施例による、書き込みアドレスをフェッチ・アドレス窓と比較する際に図2の自己変更コード制御回路の動作を説明するフローチャート。
【符号の説明】
2 データ処理システム
5 メモリ・サブシステム、
10 マイクロプロセッサ
11 レベル2キャッシュ
16 レベル1キャッシュ
26 フェッチ・ユニット
28 プリデコード0段
32 プリデコード1段
34 デコーダ
36 スケジューラ
40、400、401ロード/ストア・ユニット
42、420、421ALU
50 SMCユニット
52 フェッチ・アドレス窓保守ユニット
54、540、541書き込み比較器
55 共有書き込み比較器
58、60、62 ラッチ
61、63 マルチプレクサ
64、66 比較器
68 制御回路
Claims (13)
- 命令アドレスに従って命令コードを記憶すると共に、オペランドを記憶するメモリと、
複数の命令をシーケンスにより処理する複数の段を有する命令実行パイプラインと
を備えたマイクロプロセッサにおいて、前記複数の段は、
フェッチ・アドレスにより前記メモリをアドレス指定して命令コードを読み出し、前記命令のパイプラインに供給するフェッチ・ユニットと、
複数の命令を実行する少なくとも一つの実行ユニットと、
前記実行ユニットからの結果を行き先書き込みアドレスにより前記メモリに書き込む第1のロード/記憶ユニットと、
前記フェッチ・ユニット及び前記第1のロード/記憶ユニットに接続された自己変更コード検出回路と
を備え、前記自己変更コード検出回路は、
最低フェッチ・アドレス値を記憶する最小ラッチと、
最高フェッチ・アドレス値を記憶する最大ラッチと
前記行き先書き込みアドレスを前記最小ラッチ及び前記最大ラッチの内容と比較し、かつ前記行き先書き込みアドレスが前記最低フェッチ・アドレス値より大きい又は等しい、及び前記最高フェッチ・アドレス値より小さい又は等しいことに応答して、フラッシュ信号を前記命令実行パイプラインに対して発生する第1の書き込み比較器と、
前記フェッチ・アドレスを前記最小ラッチの内容と比較する第1の更新比較器と、
前記フェッチ・アドレスを前記最大ラッチの前記内容と比較する第2の更新比較器と、
前記第1及び第2の更新比較器に接続され、前記フェッチ・アドレスは前記最小ラッチに記憶されている前記最低フェッチ・アドレス値より小さいことを前記第1の更新比較器が判断したことに応答して、前記フェッチ・アドレスを記憶するように前記最小ラッチを制御し、かつ前記フェッチ・アドレスは前記最大ラッチに記憶されている前記最高フェッチ・アドレス値より大きいことを前記第2の更新比較器が判断したことに応答して、前記フェッチ・アドレスを記憶するように前記最大ラッチを制御する制御回路と
を備えたマイクロプロセッサ。 - 前記制御回路は、更に、パイプライン・フラッシュに応答して、ハイ・メモリ・アドレス限界を記憶するように前記最小ラッチと、ロー・メモリ・アドレス限界を記憶するように最大ラッチとの両方を制御するためのものである請求項1に記載のマイクロプロセッサ。
- 前記メモリは、
前記フェッチ・ユニットからのフェッチ・アドレスに対応する位置に命令コードを記憶する命令メモリと、
オペランドを記憶するデータ・メモリとを備えた請求項1に記載のマイクロプロセッサ。 - 前記第1の書き込み比較器は、前記フェッチ・ユニットと前記第1のロード/ストア・ユニットとに接続され、かつ、
前記行き先書き込みアドレスを前記最小ラッチの内容と比較する第1の窓比較器と、
前記行き先書き込みアドレスを前記最大ラッチの内容と比較する第2の窓比較器と、
前記第1の窓比較器が、前記行き先書き込みアドレスは前記最低フェッチ・アドレス値より大きい又は等しいと判断したことと、前記第2の窓比較器が、前記行き先書き込みアドレスは前記最高フェッチ・アドレス値より小さい又は等しいと判断したこととの組合わせに応答して、前記フラッシュ信号を発生する比較器制御回路と、
前記フェッチ・アドレスを前記行き先書き込みアドレスと比較し、かつ前記フェッチ・アドレスが前記行き先書き込みアドレスと一致することに応答して、現在の競合信号を発生する第1の等価比較器と、
未だ完了していない前記第1のロード/ストア・ユニットによる書き込み動作のために第1の保留行き先アドレスを記憶する第1の保留書き込みアドレス・ラッチと、
前記フェッチ・アドレスを前記第1の保留行き先アドレスと比較し、かつ前記フェッチ・アドレスが前記保留行き先書き込みアドレスと一致することに応答して、第1の保留競合信号を発生する第2の等価比較器と、
前記第1及び第2の等価比較器に接続され、前記現在の競合信号か又は前記第1の保留競合信号に応答して、フラッシュ信号を発生する例外制御回路とを備えた請求項1に記載のマイクロプロセッサ。 - 更に、
前記実行ユニットからの結果を行き先書き込みアドレスにおける前記メモリに書き込む第2のロード/ストア・ユニットと、
前記フェッチ・ユニットと前記第2のロード/ストア・ユニットとに接続された第2の書き込み比較器と
を備え、
前記行き先書き込みアドレスを前記最小ラッチの内容と比較する第1の窓比較器と、
前記行き先書き込みアドレスを前記最大ラッチの内容と比較する第2の窓比較器と、
前記第1の窓比較器が、前記行き先書き込みアドレスは前記最低フェッチ・アドレス値以上と判断したことと、前記第2の窓比較器が、前記行き先書き込みアドレスは前記最高フェッチ・アドレス値以下と判断したこととの組合わせに応答して、前記フラッシュ信号を発生する比較器制御回路と、
前記フェッチ・アドレスを前記行き先書き込みアドレスと比較し、かつ前記フェッチ・アドレスが前記行き先書き込みアドレスと一致することに応答して、前記現在競合信号を発生する第1の等価比較器と、
未だ完了していない前記第1のロード/ストア・ユニットによる書き込み動作のために第1の保留行き先書き込みアドレスを記憶する第1の保留書き込みアドレス・ラッチと、
前記フェッチ・アドレスを前記第1の保留行き先書き込みアドレスと比較し、かつ前記フェッチ・アドレスが前記保留行き先書き込みアドレスと一致することに応答して、第1の保留競合信号を発生する第2の等価比較器と、
前記第1及び第2の等価比較器に接続され、前記現在の競合信号か又は前記第1の保留競合信号に応答して、フラッシュ信号を発生する例外制御回路と
を備えた請求項4に記載のマイクロプロセッサ。 - 更に、
前記第1及び第2の書き込み比較器に接続された共有書き込み比較器と、
前記第1及び第2の書き込み比較器からの保留行き先書き込みアドレスを選択する選択回路と、
前記選択された保留行き先書き込みアドレスを記憶する第2の保留書き込みアドレス・ラッチと、
前記フェッチ・アドレスを前記記憶し選択した保留行き先書き込みアドレスと比較し、かつ前記フェッチ・アドレスが前記記憶し選択した保留行き先書き込みアドレスと一致することに応答して、第2の保留競合信号を発生する共有等価比較器と、
前記第3の等価比較器に接続され、前記第2の保留競合信号を受け取ることに応答して、フラッシュ信号を発生する共有制御回路と
を備えた請求項5に記載のマイクロプロセッサ。 - 更に、
一方側を前記命令実行パイプラインと前記メモリとに接続され、かつ前記他方側を外部バスに接続されたバス・インターフェイスと、
前記外部バスに接続された外部サブシステムと
を備えた請求項4に記載のマイクロプロセッサ。 - 自己変更コードの競合を検出するようにマイクロプロセッサを動作させる方法において、
命令を実行するステップと、
前記実行するステップの結果をメモリに書き込む書き込みアドレスを発生するステップと、
前記書き込みアドレスを最小フェッチ・アドレス及び最大フェッチ・アドレスと比較するステップであって、前記最小フェッチ・アドレスがパイプライン・フラッシュ以後に受け取った複数の命令のための最低フェッチ・アドレスに対応し、かつ前記最大フェッチ・アドレスが前記パイプライン・フラッシュ以後に受け取った複数の命令のための最高フェッチ・アドレスに対応している前記比較するステップと、
前記比較するステップに応答して、前記書き込みアドレスが共に前記最小フェッチ・アドレス以上、及び前記最高フェッチ・アドレス以下であることを判定するステップと、
現在のフェッチ・アドレスを発生して前記マイクロプロセッサが実行する命令コードをフェッチするステップと、
前記現在のフェッチ・アドレスを前記最小フェッチ・アドレスと比較するステップと、
前記フェッチ・アドレスが前記最小フェッチ・アドレスより小さいことに応答して、前記最小フェッチ・アドレスを前記現在のフェッチ・アドレスに等しく設定するステップと、
前記現在のフェッチ・アドレスを前記最大フェッチ・アドレスと比較するステップと、
前記フェッチ・アドレスが前記最大フェッチ・アドレスより大きいことに応答して、前記最大フェッチ・アドレスを前記現在のフェッチ・アドレスに等しく設定するステップと
を備えた前記方法。 - 前記パイプライン・フラッシュを開始させるステップは、
例外信号を発生させるステップと、
前記例外信号に応答して、前記パイプラインをフラッシュさせるステップと
を含む請求項8に記載の方法。 - 更に、
現在のフェッチ・アドレスを発生して前記マイクロプロセッサが実行する命令コードをフェッチさせるステップと、
前記現在のフェッチ・アドレスを前記書き込みアドレスと比較するステップと、
前記比較ステップに応答して、前記現在のフェッチ・アドレスが前記書き込みアドレスと一致するということを判定し、パイプライン・フラッシュを開始させるステップと
を備えた請求項8に記載の方法。 - 未だ完了してない書き込み動作の行き先メモリアドレスに対応する少なくとも一つの保留書き込みアドレスを記憶するステップと、
前記現在のフェッチ・アドレスを前記少なくとも一つの保留書き込みアドレスのそれぞれと比較するステップと、
前記比較するステップに応答して、前記現在のフェッチ・アドレスが少なくとも一つの保留書き込みアドレスと一致するということを判定し、パイプライン・フラッシュを開始させるステップと
を備えた請求項10に記載の方法。 - 前記パイプライン・フラッシュを開始させるステップは、
前記保留書き込みアドレスに対応する前記書き込み動作を完了させるステップと、
次いで前記現在のフェッチ・アドレスに対応するメモリ位置から命令コードをフェッチし、前記マイクロプロセッサにより実行させるステップと
を備えた請求項11に記載の方法。 - 更に、
前記比較するステップの前に第2の命令の実行を開始するステップを備え、かつ前記開始するステップは、更に、
前記フェッチ・ステップの前に、前記第2の命令の実行を完了させるステップを備えた請求項12に記載の方法。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US2929996P | 1996-10-21 | 1996-10-21 | |
US029299 | 1996-10-21 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH10187440A JPH10187440A (ja) | 1998-07-21 |
JP3857400B2 true JP3857400B2 (ja) | 2006-12-13 |
Family
ID=21848318
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP32372397A Expired - Fee Related JP3857400B2 (ja) | 1996-10-21 | 1997-10-20 | 自己変更コードの競合を検出するマイクロプロセッサ及びこのマイクロプロセッサを動作させる方法 |
Country Status (2)
Country | Link |
---|---|
US (1) | US6009516A (ja) |
JP (1) | JP3857400B2 (ja) |
Families Citing this family (31)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
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 |
JP3739607B2 (ja) * | 1999-08-24 | 2006-01-25 | 富士通株式会社 | 情報処理装置 |
US6363336B1 (en) * | 1999-10-13 | 2002-03-26 | Transmeta Corporation | Fine grain translation discrimination |
US20010052053A1 (en) * | 2000-02-08 | 2001-12-13 | Mario Nemirovsky | Stream processing unit for a multi-streaming processor |
US7502876B1 (en) | 2000-06-23 | 2009-03-10 | Mips Technologies, Inc. | Background memory manager that determines if data structures fits in memory with memory state transactions map |
US7058065B2 (en) * | 2000-02-08 | 2006-06-06 | Mips Tech Inc | Method and apparatus for preventing undesirable packet download with pending read/write operations in data packet processing |
US7155516B2 (en) | 2000-02-08 | 2006-12-26 | Mips Technologies, Inc. | Method and apparatus for overflowing data packets to a software-controlled memory when they do not fit into a hardware-controlled memory |
US7165257B2 (en) * | 2000-02-08 | 2007-01-16 | Mips Technologies, Inc. | Context selection and activation mechanism for activating one of a group of inactive contexts in a processor core for servicing interrupts |
US7032226B1 (en) | 2000-06-30 | 2006-04-18 | Mips Technologies, Inc. | Methods and apparatus for managing a buffer of events in the background |
US7058064B2 (en) * | 2000-02-08 | 2006-06-06 | Mips Technologies, Inc. | Queueing system for processors in packet routing operations |
US7082552B2 (en) * | 2000-02-08 | 2006-07-25 | Mips Tech Inc | Functional validation of a packet management unit |
US7139901B2 (en) * | 2000-02-08 | 2006-11-21 | Mips Technologies, Inc. | Extended instruction set for packet processing applications |
US7065096B2 (en) | 2000-06-23 | 2006-06-20 | Mips Technologies, Inc. | Method for allocating memory space for limited packet head and/or tail growth |
US7076630B2 (en) * | 2000-02-08 | 2006-07-11 | Mips Tech Inc | Method and apparatus for allocating and de-allocating consecutive blocks of memory in background memo management |
US7649901B2 (en) | 2000-02-08 | 2010-01-19 | Mips Technologies, Inc. | Method and apparatus for optimizing selection of available contexts for packet processing in multi-stream packet processing |
US7042887B2 (en) * | 2000-02-08 | 2006-05-09 | Mips Technologies, Inc. | Method and apparatus for non-speculative pre-fetch operation in data packet processing |
US6938148B2 (en) * | 2000-12-15 | 2005-08-30 | International Business Machines Corporation | Managing load and store operations using a storage management unit with data flow architecture |
US20030093775A1 (en) * | 2001-11-14 | 2003-05-15 | Ronald Hilton | Processing of self-modifying code under emulation |
US7868894B2 (en) * | 2006-11-28 | 2011-01-11 | International Business Machines Corporation | Operand multiplexor control modifier instruction in a fine grain multithreaded vector microprocessor |
US8250336B2 (en) * | 2008-02-25 | 2012-08-21 | International Business Machines Corporation | Method, system and computer program product for storing external device result data |
US8103850B2 (en) * | 2009-05-05 | 2012-01-24 | International Business Machines Corporation | Dynamic translation in the presence of intermixed code and data |
CN102141905B (zh) | 2010-01-29 | 2015-02-25 | 上海芯豪微电子有限公司 | 一种处理器体系结构 |
US20110320784A1 (en) * | 2010-06-24 | 2011-12-29 | International Business Machines Corporation | Verification of processor architectures allowing for self modifying code |
WO2014016651A1 (en) * | 2012-07-27 | 2014-01-30 | Freescale Semiconductor, Inc. | Circuitry for a computing system, LSU arrangement and memory arrangement as well as computing system |
US9229745B2 (en) | 2012-09-12 | 2016-01-05 | International Business Machines Corporation | Identifying load-hit-store conflicts |
US9436624B2 (en) * | 2013-07-26 | 2016-09-06 | Freescale Semiconductor, Inc. | Circuitry for a computing system, LSU arrangement and memory arrangement as well as computing system |
US9477516B1 (en) | 2015-03-19 | 2016-10-25 | Google Inc. | Concurrent in-memory data publication and storage system |
CN106919367B (zh) * | 2016-04-20 | 2019-05-07 | 上海兆芯集成电路有限公司 | 侦测自修正程序码的处理器与方法 |
CN106933537B (zh) * | 2016-04-20 | 2019-03-08 | 上海兆芯集成电路有限公司 | 侦测自修正程序码的处理器与方法 |
US9798675B1 (en) * | 2016-04-20 | 2017-10-24 | Via Alliance Semiconductor Co., Ltd. | System and method of determining memory ownership on cache line basis for detecting self-modifying code including code with looping instructions |
CN106933538B (zh) * | 2016-04-20 | 2019-03-01 | 上海兆芯集成电路有限公司 | 侦测自修正程序码的处理器与方法 |
Family Cites Families (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3728690A (en) * | 1971-08-26 | 1973-04-17 | Honeywell Inf Systems | Branch facility diagnostics |
JPS5245232A (en) * | 1975-10-08 | 1977-04-09 | Hitachi Ltd | Micro program modification circuit |
EP0150177A1 (en) * | 1983-07-11 | 1985-08-07 | Prime Computer, Inc. | Data processing system |
US4573119A (en) * | 1983-07-11 | 1986-02-25 | Westheimer Thomas O | Computer software protection system |
US5255369A (en) * | 1984-03-10 | 1993-10-19 | Encore Computer U.S., Inc. | Multiprocessor system with reflective memory data transfer device |
DE3802025C1 (ja) * | 1988-01-25 | 1989-07-20 | Otto 7750 Konstanz De Mueller | |
US5125083A (en) * | 1989-02-03 | 1992-06-23 | Digital Equipment Corporation | Method and apparatus for resolving a variable number of potential memory access conflicts in a pipelined computer system |
JP2682264B2 (ja) * | 1991-05-21 | 1997-11-26 | 日本電気株式会社 | プログラムカウンタ装置 |
GB2258069B (en) * | 1991-07-25 | 1995-03-29 | Intel Corp | High speed computer graphics bus |
JP2771374B2 (ja) * | 1991-12-27 | 1998-07-02 | 茨城日本電気株式会社 | プロセッサのページ越処理方式 |
US5692167A (en) * | 1992-07-31 | 1997-11-25 | Intel Corporation | Method for verifying the correct processing of pipelined instructions including branch instructions and self-modifying code in a microprocessor |
US5434987A (en) * | 1993-09-21 | 1995-07-18 | Intel Corporation | Method and apparatus for preventing incorrect fetching of an instruction of a self-modifying code sequence with dependency on a bufered store |
US5636374A (en) * | 1994-01-04 | 1997-06-03 | Intel Corporation | Method and apparatus for performing operations based upon the addresses of microinstructions |
US5564028A (en) * | 1994-01-11 | 1996-10-08 | Texas Instruments Incorporated | Pipelined data processing including instruction trace |
US5568631A (en) * | 1994-05-05 | 1996-10-22 | International Business Machines Corporation | Multiprocessor system with a shared control store accessed with predicted addresses |
US5640526A (en) * | 1994-12-21 | 1997-06-17 | International Business Machines Corporation | Superscaler instruction pipeline having boundary indentification logic for variable length instructions |
JPH08263424A (ja) * | 1995-03-20 | 1996-10-11 | Fujitsu Ltd | コンピュータ装置 |
US5826073A (en) * | 1995-10-06 | 1998-10-20 | Advanced Micro Devices, Inc. | Self-modifying code handling system |
US5742791A (en) * | 1996-02-14 | 1998-04-21 | Advanced Micro Devices, Inc. | Apparatus for detecting updates to instructions which are within an instruction processing pipeline of a microprocessor |
-
1997
- 1997-10-16 US US08/951,662 patent/US6009516A/en not_active Expired - Lifetime
- 1997-10-20 JP JP32372397A patent/JP3857400B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
US6009516A (en) | 1999-12-28 |
JPH10187440A (ja) | 1998-07-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3857400B2 (ja) | 自己変更コードの競合を検出するマイクロプロセッサ及びこのマイクロプロセッサを動作させる方法 | |
JP3907809B2 (ja) | 複合分岐予測およびキャッシュ先取りをするマイクロプロセッサ | |
US6021485A (en) | Forwarding store instruction result to load instruction with reduced stall or flushing by effective/real data address bytes matching | |
US6430674B1 (en) | Processor executing plural instruction sets (ISA's) with ability to have plural ISA's in different pipeline stages at same time | |
JP2846406B2 (ja) | 分岐処理方法及び分岐処理装置 | |
JP2846407B2 (ja) | 例外処理方法及び例外処理装置 | |
US7065632B1 (en) | Method and apparatus for speculatively forwarding storehit data in a hierarchical manner | |
US6321326B1 (en) | Prefetch instruction specifying destination functional unit and read/write access mode | |
US6481251B1 (en) | Store queue number assignment and tracking | |
JPH0526219B2 (ja) | ||
US10310859B2 (en) | System and method of speculative parallel execution of cache line unaligned load instructions | |
JP2008530714A5 (ja) | ||
EP1244962A1 (en) | Scheduler capable of issuing and reissuing dependency chains | |
JP3163045B2 (ja) | 分岐解決方法及びプロセッサ | |
KR100309309B1 (ko) | 단일클록사이클동안슈퍼스칼라프로세서에서복수의저장인스트럭션완료를용이하게하는방법및시스템 | |
US7571283B2 (en) | Mechanism in a multi-threaded microprocessor to maintain best case demand instruction redispatch | |
US8549235B2 (en) | Method for detecting address match in a deeply pipelined processor design | |
US6266767B1 (en) | Apparatus and method for facilitating out-of-order execution of load instructions | |
KR20010077997A (ko) | 단일 사이클 파이프라인 기능 정지를 발생하기 위한파이프라인 프로세서 시스템 및 방법 | |
US6289428B1 (en) | Superscaler processor and method for efficiently recovering from misaligned data addresses | |
US20100031011A1 (en) | Method and apparatus for optimized method of bht banking and multiple updates | |
US6675287B1 (en) | Method and apparatus for store forwarding using a response buffer data path in a write-allocate-configurable microprocessor | |
US5895497A (en) | Microprocessor with pipelining, memory size evaluation, micro-op code and tags | |
JPH0418648A (ja) | キャッシュを有するデータ処理装置及びそのデータアクセス方法 | |
US20200110613A1 (en) | Data processing |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20041020 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20041020 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20060210 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20060214 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20060515 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20060518 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20060814 |
|
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: 20060908 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20060914 |
|
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: 20100922 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110922 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120922 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130922 Year of fee payment: 7 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
LAPS | Cancellation because of no payment of annual fees |