JP3762816B2 - マイクロプロセッサにおける早期例外を追跡するシステム及び方法 - Google Patents

マイクロプロセッサにおける早期例外を追跡するシステム及び方法 Download PDF

Info

Publication number
JP3762816B2
JP3762816B2 JP04540397A JP4540397A JP3762816B2 JP 3762816 B2 JP3762816 B2 JP 3762816B2 JP 04540397 A JP04540397 A JP 04540397A JP 4540397 A JP4540397 A JP 4540397A JP 3762816 B2 JP3762816 B2 JP 3762816B2
Authority
JP
Japan
Prior art keywords
instruction
exception
early
buffer
executed
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
Application number
JP04540397A
Other languages
English (en)
Other versions
JPH09330221A (ja
Inventor
ダグラス・ビー・ハント
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
HP Inc
Original Assignee
Hewlett Packard Co
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hewlett Packard Co filed Critical Hewlett Packard Co
Publication of JPH09330221A publication Critical patent/JPH09330221A/ja
Application granted granted Critical
Publication of JP3762816B2 publication Critical patent/JP3762816B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3861Recovery, e.g. branch miss-prediction, exception handling
    • G06F9/3865Recovery, e.g. branch miss-prediction, exception handling using deferred exception handling, e.g. exception flags
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3842Speculative instruction execution

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

【0001】
【発明の属する技術分野】
本発明は、一般には、マイクロプロセッサ・システムに関し、詳細には、特殊命令符号化の手段によって、早期例外を追跡するシステム及び方法に関する。
【0002】
【従来の技術】
当技術分野では汎用マイクロプロセッサ・システムが知られている。通常、マイクロプロセッサは、ノイマン型モデル上に構築され、その場合、データ及び命令は、位置によってアドレス指定可能であるシステム・メモリに記憶され、中央演算処理装置(CPU)が命令を順次インライン式に実行する。
【0003】
命令は通常、2進数の形で表される。単一の命令は一般に、少なくともopcode、すなわち特定の命令コードの2進表現を含む。opcodeは、特定の命令に応じて、1つ又は複数のオペランドを含むこともできる。最後に、大部分の命令は、処理に必要な追加情報の追跡を維持するために、1つ又は複数の制御ビットを含む。
【0004】
命令の実行は通常、下記の3つの段階からなる。
【0005】
1.命令フェッチ段階
2.演算段階
3.メモリ・アクセス段階
命令フェッチ段階中には、メモリから命令が取り出される。演算段階時には、命令が復号され、(アドレス計算を含む)算術演算が実行される。メモリ・アクセス段階中には、データがシステム・メモリから読み出され、あるいはシステム・メモリに書き込まれる。一般に、CPU中の異なる機能ハードウェア・ユニットが、別個に3つの段階の演算を実行する。多くの場合、これらの機能ユニットはそれぞれ、命令フェッチ・ユニット、実行ユニット、メモリ管理ユニットと呼ばれる。したがって、各命令の実行には、少なくとも3クロック・サイクルが必要である。各段階を完了するには、少なくとも1クロック・サイクル全体が必要なので、大部分の現代のマイクロプロセッサ・システムは、命令パイプラインを利用している。命令のパイプライン化は、命令の実行を重複できるようにする、当技術分野における既知の方法である。
【0006】
下記に示した表1は、命令パイプラインの典型的な従来技術の演算を示す。
【0007】
【表1】
Figure 0003762816
【0008】
表1に示すように、3つの命令実行段階は、それぞれ、各クロック・サイクル中に単一の演算を実行可能な、3つの別々の機能ユニットへと区画される。表1は、命令I0、I1、I2、I3及びI17が開始される、5つの実行サイクルを示す。図示のように、命令I0及びI1は、完了するために各段階を循環する。したがって、各命令を完了するのに、3クロック・サイクルが必要であるとしても、理想的には、クロック・サイクルごとに1つの命令が完了すべきである。したがって、ALU命令(たとえば、ADD、SUB、AND、OR等)及びメモリ・アクセス命令(たとえば、LOAD、STORE)を用いた場合、命令のパイプライン化は最大限に動作する。しかし、条件付きプログラム制御命令(たとえば、BRE(等しい場合に分岐)、BRG(大きい場合に分岐)、BRL(小さい場合に分岐)、等)によって、パイプライン・シーケンスは複雑になる。
【0009】
条件付きプログラム制御命令は、条件付き分岐命令とも呼ばれ、プログラム・データのリアルタイム条件に依存する、プログラム・フローの1つの代替例を与える。したがって、フローの方向は、条件が分かるリアルタイムでしか判定できない。その結果、命令フェッチ・ユニットは、条件付き分岐命令が完了し、それによって命令パイプラインで「バブル」を発生するまで待機し、あるいは誤って予想し、したがって命令パイプラインで「バブル」を発生させる危険を冒して、フローの方向を予想しなければならない。後者は、「投機的実行」として知られている方法の1つの形態であり、当技術分野でよく知られている。
【0010】
さらに一般的には、投機的実行は、命令が実際に完了するかどうかが分かる前に、命令の処理が開始するといつでも生じると言える。投機的実行は、命令の実行を最適化して性能を向上させるために使用される。いくつかのシステムでは、命令はプログラム順から外れて実行される。これらのシステムでは、投機的実行は、古い方の命令が首尾良く完了する(すなわち、例外条件を発生させる)かどうかをシステムが知る前に、新しい方の命令を実行するように動作することができる。実行に基づき、古い方の命令によって例外条件が発生した場合、すべての新しい方の命令は、命令バッファから破棄される。他の状況では、実行されていない古い方の記憶命令が、同じ位置にアクセスするかどうかが分かる前に、ロード命令を実行することによって、投機的実行が生じることもある。実行に基づき、新しい方の命令がロードされたのと同じ位置に、古い方の命令が記憶されていることが分かった場合、古い方の記憶命令よりも新しいすべての命令が、命令バッファから削除され、それらの命令が実行された結果が破棄される。
【0011】
投機的実行の他の使用の場合、命令フェッチ・ユニットが、条件付き分岐命令の結果を「推測」又は予想し、目標アドレスか、又は予想による次のインライン・プログラム・アドレスから条件が分かる前に、命令を取り出すべく進める。条件が分かったときに、予想が誤りであったと判定された場合、すでに取り出されている誤った命令が破棄され、命令の取り出しは、正しいアドレスから再開する。たとえば、表1を参照すると、命令I2は、条件付き分岐命令IBである。命令フェッチ・ユニットは、この分岐がとられないであろうと予想し、その代わり、サイクルT3中に次のインライン・プログラム命令I3を取り出す。リアルタイム演算時に、実際にはこの分岐がとられ、命令フェッチ・ユニットの予想は誤りになる。したがって、命令I3の取り出しは誤りであり(すなわち、IBは「誤って予想された分岐」である)、その結果、サイクルT3の実行段階に示したように、パイプライン・シーケンス中にバブルが発生する。命令I3は破棄され、命令の取り出しは、正しいアドレス(すなわち、分岐目標アドレス)において、命令I17のフェッチによって再開する。
【0012】
時には、命令フェッチ・ユニットは、実行することができ、あるいは実行できない命令を取り出す間に、実行されると、結果として例外条件となる命令に出会う。例外条件とは通常、パイプライン・シーケンス中で、機能停止又はバブルを引き起こし、CPUに強制的にプログラム実行フローを変更させる恐れのある条件である。この機能停止又はバブルは通常、例外条件を示す多数の信号によってCPU内で伝達される。一般に、例外条件により、割込みハンドラによって優先付けられ処理される割込みが発生する。割込みハンドラは、いくつかのパイプ段階の実行を中断し、システム位置で新しい命令の実行を開始し、しかるべく特権演算モードを変更することができる。第1段階(すなわち、命令フェッチ段階)中に発生する例外は、命令の実行の早期に検出されるので、早期例外と呼ばれる。通常の例外条件には、メモリ保護違反、キャッシュ・ミス、命令バッファ・ミス、ページ・フォルト、変換索引バッファ(TLB)ミスが含まれる。
【0013】
早期例外の1つの例として、マイクロプロセッサが保護メモリから命令を実行しようとした場合、この事実は、第1実行段階で命令フェッチ・ユニットによって検出することができる。メモリ保護違反の検出は、メモリ違反が早期に検出され、例外信号が返され、違反命令が、完了しないうちに中断されるように、命令処理の「早期」に生じる。
【0014】
早期例外の他の例は、変換索引バッファ・ミスである。仮想メモリを有するシステムではしばしば、「変換索引バッファ」(TLB)と呼ばれる高速連想メモリを使用して、仮想アドレスが、迅速に物理メモリ・アドレス相当物へと変換される。当技術分野で知られているように、変換バッファは、最後に使用された仮想/物理アドレス変換をキャッシュに格納する。所望の変換が変換バッファに存在しない場合(すなわち、TLB「ミス」)、変換プロセスは停止しなければならず、したがって、失敗したメモリ・アクセスを要求した命令も停止しなければならない。所望の変換は次いで、メモリ中のより低速の変換テーブルから読み取られ、TLBにロードされる。プロセス中の変換が命令フェッチのためのものである場合、命令フェッチ・ユニットは、ミスを検出して、早期例外を知らせることができる。
【0015】
【発明が解決しようとする課題】
上記のように、命令フェッチ・ユニットはしばしば、実行されると結果として例外条件となる命令に出会う。しかし、投機的実行のために、例外を発生させる可能性のある命令が実行されるかどうかは、命令フェッチ・ユニットには分からないので、命令が取り出されるときに例外を知らせるのは時期尚早である。したがって、どの命令が実行されたときに例外条件を発生させるかと、それがどのタイプの例外を生成するかを実行ユニットに知らせる手段が必要である。この問題に対する1つの解決策は、命令が実行される際にこの情報を追跡する、各命令に関連付けられた余分の記憶ビットを追加することであろう。しかし、この解決策は、プロセッサに余分の論理を追加し、面積及びコストを増大させる。
【0016】
したがって、例外を追跡するために必要な追加論理を最小限に抑え、例外の時期尚早な「間違った」合図をなくする、早期例外を追跡する方法を使用することが望ましい。
【0017】
【課題を解決するための手段】
本発明の好ましい実施例によれば、マイクロプロセッサ・システムにおける早期例外を追跡するシステム及び方法が提供される。このシステムは一般に、プログラム・メモリから命令を取り出し、取り出した命令が、実行されると結果として例外条件になると判定された場合には、例外メッセージを命令バッファに挿入し、取り出した命令が、実行されると結果として例外条件にはならないと判定された場合には、取り出した命令を命令バッファに挿入するための命令フェッチ・ユニットを含む。本発明のシステムは、命令バッファに含まれる命令を実行するための実行ユニットも含む。更に、本発明のシステムは、命令を、実行ユニットによって処理された後にプログラム順に命令バッファから削除し、その命令を復号し、命令が例外メッセージである場合に例外を知らせるための命令撤回ユニットを含む。
【0018】
本発明の好ましい実施例は、命令フェッチ・ユニット内の投機的実行手段と、実行ユニット内の命令バッファ管理ユニットも含む。投機的実行手段は、条件付き分岐命令を検出し、条件付き分岐命令の目標アドレスを予想し、予想した目標アドレスに従って次の命令を取り出す。命令バッファ管理ユニットは、条件付き分岐命令を検出し、実行に基づいて、条件付き分岐命令の計算された目標アドレスを検出し、計算された目標アドレスと、投機的実行手段からの予想された目標アドレスを比較する。計算された目標アドレスと予想された目標アドレスが合致しないとき、命令バッファ管理ユニットは、命令バッファに条件付き分岐命令が挿入された後に挿入されたすべての命令を命令バッファから削除する。
【0019】
本発明の好ましい実施例では、命令バッファは、独立のALU命令バッファと、独立のメモリ・アクセス命令バッファとを備え、例外メッセージが挿入されるのは、ALU命令バッファだけである。このため、ALU命令バッファから削除された場合に、命令撤回ユニットが例外メッセージであると認識するメモリ・アクセス命令コードを使用して、例外メッセージを符号化することが可能になる。
【0020】
本発明は、未使用命令コードを例外メッセージとして使用することも意図するものである。複数の例外メッセージを実施し、各例外メッセージが特定の例外タイプを示すことが好ましい。
【0021】
本発明の目的及び利点は、添付図面と関連してなされる、本発明の現在のところ好ましい例示的な実施例の下記の詳細な説明から、更に明らかになり、かつ更に容易に理解されよう。
【0022】
【発明の実施の形態】
図1は、本発明が動作する計算システム100の一部のブロック図である。計算システム100は、中央演算処理装置(CPU)110と、命令キャッシュ160と、データ・キャッシュ170とを含む。通常、命令キャッシュ160及びデータ・キャッシュ170は、CPU110とは別個の高速SRAMを使用して実施される。CPU110は、命令フェッチ・ユニット112と、命令バッファ116と、実行ユニット114とを含む。実行ユニット114は、算術演算論理ユニット118と、メモリ管理ユニット120と、撤回ユニット122とを含む。
【0023】
動作時には、命令フェッチ・ユニット112は、命令キャッシュ160から命令を取り出して復号する。命令フェッチ・ユニット112は次いで、復号済み命令を実行すると、結果として例外条件になるかどうかを判定する。取り出した命令が潜在的な例外生成命令である場合、命令フェッチ・ユニット112は、好ましくは特定のタイプの例外を示し、好ましくは未使用命令コードを使用する例外メッセージを、命令バッファ116に挿入する。そうでない場合、命令フェッチ・ユニット112は、取り出した命令自体を命令バッファ116に挿入する。実行ユニット114は、命令バッファ116に含まれる命令を実行する。算術演算命令は、算術演算論理ユニット118によって実行され、メモリ命令は、メモリ管理ユニット120によって実行される。メモリ管理ユニット120は、データ・キャッシュ170中のメモリとの間で読み書きを行う。撤回ユニット122は、実行した命令をプログラム順に命令バッファ116から削除し、その命令が、特殊符号化例外メッセージである場合に、例外信号124を生成する。
【0024】
図2は、本発明による方法200を示すフローチャートである。図2に示すように、方法200は3つの別々のプロセス210、220、230に区画される。第1のプロセス210は、命令フェッチ・ユニット112において実行され、命令キャッシュ160から命令を取り出して復号する、第1のステップ212を含む。第1のプロセス210は、取り出した命令を実行すると、結果として例外条件になるかどうかを判定する第2のステップ214を含む。この命令を実行すると例外が生成されると判定された場合、第1のプロセス210は、命令バッファ116に例外メッセージを挿入する第3のステップ216を実行する。一方、この命令を実行しても例外条件は発生しないと判定された場合、第4のステップ218で、命令バッファ116に命令自体が挿入される。命令を実行することによって生成される特定のタイプの例外を実行ユニットに示すために、命令メッセージを符号化することが好ましい。命令メッセージは、未使用命令コードを使用して実施される。このため、早期例外を追跡するための命令コード中の追加ビットは不要になる。
【0025】
本発明の方法200は、実行ユニット114で実行される第2のプロセス220を含む。第2のプロセス220は、誤って予想された分岐を追跡し、それに応じて命令バッファ116を管理する。第2のプロセス220は、現在実行中の命令が、条件付き分岐命令であるかどうかを判定する、第5のステップ222を含む。第2のプロセスは、現命令が条件付き分岐命令である場合、予想された分岐が、実際の分岐結果に合致するかどうかを判定する、第6のステップ224を含む。第2のプロセス220は、分岐が誤って予想された場合、誤って予想された分岐命令が、命令バッファ116に挿入された後に挿入された、命令バッファ116中のすべての命令を破棄する、第7のステップ226を含む。第7のステップ226間に、計算された正しいアドレス(分岐目標アドレスか、又はインライン・プログラム・アドレス)が、命令フェッチ・ユニット112へ送られ、そこで正しいアドレスから命令取り出しが再開する。
【0026】
本発明の方法200は、例外を検出し知らせるために、撤回ユニット122において実行される第3のプロセス230を含む。第3のプロセス230は、完了した命令を命令バッファ116から削除する、第8のステップ232を含む。第9のステップ234において、削除した命令が復号され、削除した命令が例外メッセージである場合は、例外が通知される。
【0027】
図2に示した方法200の上記の説明から、例外が通知されるのは、例外生成命令が実際に実行されるときだけなので、本発明が、時期尚早な例外通知の問題を解消することが理解されよう。実行されると例外を生成するであろう命令が、取り出されて命令バッファ116に挿入されるが、誤って予想された分岐のために、実際には実行されない場合、例外メッセージが撤回され、かつ撤回ユニット122によって例外が検出、及び通知される前に、特殊符号化例外メッセージが、実行ユニットによって命令バッファ116から削除されることになる。また、未使用命令コードを使用して命令メッセージが実施されるので、本発明の方法200には、時期尚早な例外通知の問題を解消するために、追加命令ビットも追加ハードウェアも必要とされないことが理解されよう。
【0028】
図3は、本発明によるシステム300の好ましい実施例を示す。図3に示すように、好ましい実施例のシステム300は、中央演算処理装置(CPU)310と、チップ未搭載命令キャッシュ360と、チップ未搭載データ・キャッシュ370とを含む。好ましい実施例のシステム300では、命令キャッシュ360及びデータ・キャッシュ370は、CPU310とは別個の高速スタティックRAMチップを使用して実施される。CPU310は、命令フェッチ・ユニット312と、命令仕分けユニット340と、命令順序変更バッファ(IRB)316と、実行ユニット314とを含む。命令フェッチ・ユニット312は、投機的実行ユニット352と、潜在的例外検出ユニット354とを含む。実行ユニット314は、算術演算論理ユニット(ALU)318と、メモリ管理ユニット(MMU)320と、命令順序変更バッファ(IRB)管理ユニット328と、撤回ユニット322とを含む。図3に又示されるように、命令順序変更バッファ316は、ALU命令バッファ342、及びメモリ・アクセス命令バッファ344を含む、2つの別々のバッファに分離される。
【0029】
動作時には、命令フェッチ・ユニット312が、命令キャッシュ360から命令を取り出す。投機的実行ユニット352は、この命令を復号して、それが条件付き分岐命令であるかどうかを判定する。この命令が条件付き分岐命令である場合、投機的実行ユニット352は、分岐がなされるかどうかを予想し、それに応じて、次に取り込むべき命令のアドレスを更新する。
【0030】
潜在的例外検出ユニット354は、取り出した命令が、実行されると例外条件を発生するかどうかを判定する。取り出した命令が潜在的な例外生成命令である場合、特殊符号化例外メッセージが、ALU命令バッファ342に挿入される。そうでない場合、すなわち取り出した命令が潜在的な例外生成命令ではない場合、取り出した命令自体が、仕分けユニット340へ送られる。
【0031】
仕分けユニット340は、命令フェッチ・ユニット312から命令を受け取り、ALU命令バッファ342とメモリ・アクセス命令バッファ344との間で命令を仕分けする。一般に、整数演算や浮動小数点演算などのALU演算を必要とする命令は、ALU命令バッファ342に挿入され、ロード動作及び記憶動作を必要とする命令は、メモリ・アクセス命令バッファ344に挿入される。撤回ユニット324は、各命令を、その実行後にプログラム順に、ALU命令バッファ342及びメモリ・アクセス命令バッファ344から削除する。
【0032】
図3の好ましい実施例のシステム300では、命令仕分けユニット340によってALU命令バッファ342に仕分けされることがないロード命令コード及び記憶命令コードを使用して、特殊符号化例外メッセージが実施される。更に、好ましい実施例のシステム300では、ALU命令バッファ342から削除されたロード/記憶命令は、撤回ユニット322によって例外コードとして認識され、適当な例外信号324を発信するように復号される。図3に示す好ましい実施例のシステム300のアーキテクチャを使用し、特に命令バッファ316を特殊化命令バッファ(すなわち、ALU命令バッファ342、及びメモリ・アクセス命令バッファ344)へと分離することにより、命令コードは、それぞれの異なる条件の下で2つの別々の意味を有することによって、重複機能を有することができる。この特徴によって、単一の命令コードによって与えられる情報量が最大になり、また、未使用命令コードを有さないシステムに本発明を使用することが可能になる。
【0033】
図3のシステム300は、命令バッファ管理ユニット328も含む。命令バッファ管理ユニット328は、条件付き分岐命令の実行時にその結果を監視し、予想と比較する。結果が予想に合致しない場合、命令バッファ管理ユニット328は、条件付き分岐命令が入力された後に入力されたすべての命令を命令バッファ316から削除し、条件付き分岐命令の実行に基づき計算された正しいアドレスを命令フェッチ・ユニット312へ送って、正しいアドレスからの取り出しを再開する。
【0034】
図4−図6は、実行されると例外条件を発生させたであろう、誤って予想された分岐命令に出会ったときの、図3の命令バッファ管理ユニット328の動作を示すために、サンプル命令を備えた命令バッファ400を示すものである。図3の好ましい実施例のシステム300において、命令バッファ316は、まず、前の命令の結果を待っていない命令が、実行へと放たれるように、パイプライン効率を最大にするようにハードウェアによって順序変更される。命令を実行へと放つ方法、及び命令を実行へと放つために調停する方法は、撤回ユニット322が、命令をプログラム順に命令バッファ316から削除するかぎり、実現可能な任意の方式を使用して実施することができる。言い換えると、命令順序変更を行うマイクロプロセッサ・システムにも、あるいはそれを行わないマイクロプロセッサ・システムにも本発明を使用できるが、撤回ユニット322は、命令をプログラム順に命令バッファ316から削除しなければならない。したがって、命令バッファ管理ユニット328の動作を容易に図示するために、図4の命令バッファ400は、命令順序変更が実行されない、先入れ先出し(FIFO)方式を仮定している。
【0035】
したがって、図4を参照すると、命令I0,I1,...,IN-1,INは、命令バッファ400に下付き数字順に挿入されている。言い換えると、I0は、命令バッファ400に最初に挿入された命令であり、命令バッファ400から最初に削除される命令である。I1は、命令バッファ400に2番目に挿入された命令であり、命令バッファから2番目に削除される命令である。以下同様である。図4に示すように、命令は、ALU命令バッファ410とメモリ・アクセス・バッファ420との間で仕分けされる。しかし、命令は、通常のプログラム・シーケンスの下で、I3がI2の後に撤回され、I8がI7の直ぐ後に撤回され、以下同様であるように依然としてFIFO式に撤回される。図4に又示されるように、命令バッファ400は、誤って予想された分岐命令IBRANCHを含み、その後に、命令IEXCEPTION を含む、誤った目標アドレスから得た命令が続き、その後に、予想されたプログラム順の命令IJ,...,IKが続く。命令IEXCEPTION は、実行されると例外を生成するものであり、図3の潜在的例外検出ユニット354によって挿入される、特殊符号化例外メッセージである。
【0036】
図4に示す時点では、命令I0 が、次に撤回すべき予定の命令であることが、撤回ポインタPTRRETIREによって示され、条件付き分岐命令IBRANCH が、次に実行すべきものであることが、実行ポインタPTREXECUTIONによって示される。次いで、条件付き分岐命令IBRANCHが実行されると、実行ユニットは、誤って予想された分岐命令IEXCEPTION とは異なる実際の目標アドレス結果を計算する。図3の命令バッファ管理ユニット328は次いで、図5に示すように、命令IBRANCHが挿入された後に挿入されたすべての命令を、命令バッファ400から削除する。次いで、図3の実行ユニット314によって計算された正しい分岐アドレスが、図3の命令フェッチ・ユニット312へ送られ、図6に示すように、命令ITARGETを含む正しい分岐アドレスにおいて、取り出しが再開する。やはり図6で分かるように、命令I0が撤回され(すなわち、命令バッファ400から削除され)ており、撤回ポインタPTRRETIREによって示されるように、命令I1が次に撤回される予定である。
【0037】
図4−図6は、本発明がどのように時期尚早な例外信号を防止するかを示す。図4において、誤って予想された分岐のために、潜在的な例外生成命令IEXCEPTION が命令バッファ400に挿入された。したがって、命令IEXCEPTIONは実行されなかったはずである。条件付き分岐命令IBRANCHの実行に基づいて、誤って予想された分岐が発見されたとき、図5に示すように、予想に従って取り出されたすべての命令(すなわち、IEXCE PTION,I,...,I)が、命令バッファ400から削除、及び破棄された。したがって、本発明が、時期尚早な例外通知を回避する効率的なシステム、及び方法を提供することが理解されよう。例外生成命令が実際に実行された場合、その特殊符号化例外メッセージは、正規の命令と同様にしてプログラム順に撤回され、したがって、プログラム順に検出、及び通知される。
【0038】
本発明に関し意図した用途は、命令のキャッシングを制御する機構を実施することである。具体的には、そのページ上のある命令が実際に実行されないかぎり、マイクロプロセッサが、命令をキャッシュ内へ移動できないようにすると有利である。その点からは、命令を、そのページからキャッシュ内へ移動することが認められる。本発明を用いると、これは次のように達成することができる。すなわち、図3の命令フェッチ・ユニット312が、ページ交差が必要になると「推測」したときに、ALU命令バッファ342に例外メッセージを挿入する。実行ユニット314が、プログラム・シーケンスが実際にページを交差すると判定した場合、例外が通知され、それによって、引き続き命令をそのページからキャッシュ内へ移動できることを、命令フェッチ・ユニットに示すべく信号がもたらされる。
【0039】
本明細書において、本発明の例示的で、且つ現在のところ好ましい実施例を詳しく説明したが、発明性のある概念を、別態様で各種具体化し使用することができ、且つ従来技術により限定される範囲を除いて、特許請求の範囲が、かかる変形を含むと見なすことを意図したものであることを理解されたい。
【0040】
以下に、本発明の実施態様を列挙する。
【0041】
1.マイクロプロセッサにおける早期例外を追跡するシステムにおいて、
プログラム・メモリから命令を取り出し、該取り出した命令が、実行されると結果として例外条件になると判定された場合には、例外メッセージを命令バッファに挿入し、上記取り出した命令が、実行されても結果として例外条件にならないと判定された場合には、上記取り出した命令を命令バッファに挿入するための命令フェッチ・ユニットと、
命令バッファに含まれる命令を実行するための実行ユニットと、
命令を、実行ユニットによって処理された後に、プログラム順に命令バッファから削除し、その命令を復号し、命令が例外メッセージである場合に、例外を知らせるための命令撤回ユニットと、
からなることを特徴とするシステム。
【0042】
2.将来の実行条件を予想し、該予想した条件に基づいて、命令を事前に取り出し、又は事前に実行することによって、命令実行を最適化するための投機的実行手段と、
上記事前に取り出され、又は事前に実行された命令を検出し、実行に基づき実際の条件を監視し、実際の条件と予想された条件を比較し、実際の条件と予想された将来の条件が合致しない場合、実行条件が予想された後に挿入されたすべての命令を、命令バッファから削除するための命令バッファ管理ユニットと、
から更になることを特徴とする、前項1に記載のシステム。
【0043】
3.前記例外メッセージは、特定の例外タイプを示すことを特徴とする、前項1又は2に記載のシステム。
【0044】
4.前記例外メッセージは、未使用の命令コードを使用して符号化されることを特徴とする、前項1から3のいずれか一項に記載のシステム。
【0045】
5.前記命令バッファは更に、多数の命令バッファからなることを特徴とする、前項1から4のいずれか一項に記載のシステム。
【0046】
6.前記命令フェッチ・ユニットは、例外メッセージを1つの命令バッファにしか挿入しないことを特徴とする、前項5に記載のシステム。
【0047】
7.前記例外メッセージは、誤り命令バッファから削除された場合に、前記命令撤回ユニットが、例外メッセージであると認識する命令コードを使用して、符号化されることを特徴とする、前項5又は6に記載のシステム。
【0048】
8.マイクロプロセッサ・システムにおける早期例外を追跡する方法であって、同時に実行する2つのプロセスを含み、
第1のプロセスが、
(a)命令キャッシュから命令を取り出すステップと、
(b)該取り出した命令が実行されると、結果として例外条件になるかどうかを判定するステップと、
(c)上記取り出した命令が実行されると、結果として例外条件になる場合に、例外メッセージを命令バッファに挿入するステップと、
(d)上記取り出した命令が実行されても、結果として例外条件にはならない場合に、上記取り出した命令を命令バッファに挿入するステップとを含み、
第2のプロセスが、
(e)実行された命令を、プログラム順に命令バッファから削除するステップと、
(f)例外メッセージを検出し、適切な例外信号を送出するステップとを含むことを特徴とする方法。
【0049】
9.前記第1のプロセスは更に、
(g)将来の実行条件を必要とする命令を検出するステップと、
(h)該将来の実行条件を予想するステップと、
(i)該予想した条件に基づいて、命令を事前に取り出す、又は事前に実行するステップとを含み、
前記方法は更に、同時に実行する第3のプロセスを含み、該第3のプロセスは、
(j)上記事前に取り出され、又は事前に実行された命令を検出するステップと、
(k)実行に基づき実際の条件を監視するステップと、
(l)実際の条件と予想された将来の条件を比較するステップと、
(m)実際の条件と予想された将来の条件が合致しない場合、実行条件が予想された後に挿入されたすべての命令を、命令バッファから削除するステップとを含むことを特徴とする、前項8に記載の方法。
【0050】
10.前記例外メッセージは、未使用命令コードを使用して符号化されることを特徴とする、前項8に記載の方法。
【0051】
【発明の効果】
本発明は上述のように、例外が通知されるのは、例外生成命令が実際に実行されるときだけなので、本発明の方法200によって、時期尚早な例外通知の問題が解消される。実行されると例外を生成するであろう命令が、取り出されて命令バッファ116に挿入されるが、誤って予想された分岐のために、実際には実行されない場合、例外メッセージが撤回され、かつ撤回ユニット122によって例外が検出、及び通知される前に、特殊符号化例外メッセージが、実行ユニットによって命令バッファ116から削除されることになる。
【0052】
また、未使用命令コードを使用して命令メッセージが実施されるので、本発明の方法200には、時期尚早な例外通知の問題を解消するために、追加命令ビットも追加ハードウェアも必要とされない
更に、システム300のアーキテクチャを使用し、特に命令バッファ316を特殊化命令バッファ(すなわち、ALU命令バッファ342、及びメモリ・アクセス命令バッファ344)へと分離することにより、命令コードは、それぞれの異なる条件の下で2つの別々の意味を有することによって、重複機能を有することができる。この特徴によって、単一の命令コードによって与えられる情報量が最大になり、また、未使用命令コードを有さないシステムにも本発明を使用することが可能になる。
【図面の簡単な説明】
【図1】本発明が動作するマイクロプロセッサ・システムのブロック図である。
【図2】本発明の方法を示すフローチャートである。
【図3】本発明が動作する好ましい実施例のマイクロプロセッサ・システムのブロック図である。
【図4】実行された場合に例外を生成したであろう、誤って予想された分岐命令に出会う命令バッファ管理ユニットの動作を示すための命令バッファの内部図である。
【図5】実行された場合に例外を生成したであろう、誤って予想された分岐命令に出会う命令バッファ管理ユニットの動作を示すための命令バッファの内部図である。
【図6】実行された場合に例外を生成したであろう、誤って予想された分岐命令に出会う命令バッファ管理ユニットの動作を示すための命令バッファの内部図である。
【符号の説明】
100、300 計算システム
112、312 命令フェッチ・ユニット
114、314 実行ユニット
116 命令バッファ
316 命令順序変更バッファ
120、320 メモリ管理ユニット
122、322 命令撤回ユニット
160、360 プログラム・メモリ(命令キャッシュ)
170、370 データ・キャッシュ

Claims (3)

  1. 時期尚早な早期例外の通知を防止する計算システムにおいて、
    命令キャッシュからの命令を取り込むための、命令フェッチ・ユニットであって、
    前記命令が実行された場合に、結果として早期例外条件になるかどうかを判定するための早期例外検出手段と、
    前記命令が実行された場合に、結果として早期例外条件になると前記早期例外検出手段が判定する場合には、早期例外メッセージとして符号化された命令コードを命令バッファの中に挿入するための及び、前記命令が実行された場合に、結果として早期例外条件にはならないと前記早期例外検出手段が判定する場合には、前記命令として符号化された命令コードを前記命令バッファの中に挿入するための挿入手段
    とを含む、命令フェッチ・ユニットと、
    前記命令コードが、前記命令として符号化された場合に、前記命令コードを実行するための実行ユニットと、
    命令撤回ユニットであって、
    前記命令バッファからプログラム順に前記命令コードを削除するための命令削除手段と、
    前記命令コードを復号するための復号手段と、
    前記命令コードが復号された早期例外メッセージの場合に、早期例外を通知するための早期例外通知手段
    とを含む、命令撤回ユニット
    とを備える、計算システム。
  2. 所与のページ上の少なくとも1つの命令が実行される場合にのみ、プログラム・メモリ内の前記所与のページから命令キャッシュへの命令の移動を許可する命令キャッシュ移動ルールに従う計算システムにおいて、
    命令を取り込むための、命令フェッチ・ユニットであって、前記命令は前記命令キャッシュか、前記プログラム・メモリかのどちらか一方から取り込まれるものであり、次の命令が前記命令キャッシュの中に存在しない場合に、前記プログラム・メモリから命令を取り込むためのプログラム・メモリ取り込み手段を含む、命令フェッチ・ユニットと、
    非常駐のページ上に前記命令が存在するかどうかを判定するための、早期ページ交差例外検出手段であって、前記非常駐のページは、命令がまだ実行されていないプログラム・メモリの中のページを含むことからなる、早期ページ交差例外検出手段と、
    前記早期ページ交差例外検出手段が、命令がまだ実行されていないページ上に前記命令が存在すると判定する場合に、移動例外メッセージとして符号化された命令コードを命令バッファに挿入するための挿入手段と、
    前記命令バッファに含まれる、実行可能な命令として符号化された命令コードを実行するための実行ユニットと、
    命令撤回ユニットであって、
    プログラム順に前記命令バッファから命令コードを削除するための命令削除手段と、
    前記命令コードが、前記移動例外メッセージとして符号化された場合に、前記所与のページから前記命令キャッシュへと、命令を移動させるよう、前記命令フェッチ・ユニットに通知するための 早期ページ交差例外通知手段
    とを含む、命令撤回ユニット
    とを備える、計算システム。
  3. マイクロプロセッサ・システムにおける時期尚早な早期例外の通知を防止する方法であって、2つの同時実行するプロセスを含み、
    第1のプロセスが、
    (a) 命令キャッシュから命令を取り込むステップと、
    (b) 取り込まれた命令を実行した場合に、結果として例外条件となるかどうかを判定するステップと、
    (c) 取り込まれた命令を実行した場合に、結果として例外条件となる場合には、符号化された例外メッセージからなる命令コードを命令バッファに挿入するステップと、
    (d) 取り込まれた命令を実行した場合に、結果として例外条件とならない場合には、取り込まれた命令からなる命令コードを命令バッファに挿入するステップ
    とを含み、
    第2のプロセスが、
    (e) 命令バッファから実行された命令コードをプログラム順に削除するステップと、
    (f) 符号化された例外メッセージからなる命令コードを検出し、符号化された例外メッセージからなる命令コードが検出されると、適切な例外信号を通知するステップ
    とを含む方法。
JP04540397A 1996-03-01 1997-02-28 マイクロプロセッサにおける早期例外を追跡するシステム及び方法 Expired - Fee Related JP3762816B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US08/609,207 US5740391A (en) 1996-03-01 1996-03-01 Preventing premature early exception signaling with special instruction encoding
US609207 1996-03-01

Publications (2)

Publication Number Publication Date
JPH09330221A JPH09330221A (ja) 1997-12-22
JP3762816B2 true JP3762816B2 (ja) 2006-04-05

Family

ID=24439794

Family Applications (1)

Application Number Title Priority Date Filing Date
JP04540397A Expired - Fee Related JP3762816B2 (ja) 1996-03-01 1997-02-28 マイクロプロセッサにおける早期例外を追跡するシステム及び方法

Country Status (3)

Country Link
US (1) US5740391A (ja)
JP (1) JP3762816B2 (ja)
GB (1) GB2310740B (ja)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6199152B1 (en) 1996-08-22 2001-03-06 Transmeta Corporation Translated memory protection apparatus for an advanced microprocessor
US6216222B1 (en) * 1998-05-14 2001-04-10 Arm Limited Handling exceptions in a pipelined data processing apparatus
US6457119B1 (en) * 1999-07-23 2002-09-24 Intel Corporation Processor instruction pipeline with error detection scheme
JP3558001B2 (ja) * 2000-05-24 2004-08-25 日本電気株式会社 命令バッファ及びバッファキュー制御
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
SE0003398D0 (sv) * 2000-09-22 2000-09-22 Ericsson Telefon Ab L M Optimization of a pipelined processor system
SE0003446L (sv) 2000-09-27 2002-03-28 Ericsson Telefon Ab L M En pipelinemikroprocessor och ett förfarnade relaterande därtill
US7240186B2 (en) * 2001-07-16 2007-07-03 Hewlett-Packard Development Company, L.P. System and method to avoid resource contention in the presence of exceptions
US7200738B2 (en) 2002-04-18 2007-04-03 Micron Technology, Inc. Reducing data hazards in pipelined processors to provide high processor utilization
JP2006277583A (ja) * 2005-03-30 2006-10-12 Hitachi Ltd データ処理システム、データ処理方法、及びプログラム
US7634639B2 (en) * 2005-08-23 2009-12-15 Sun Microsystems, Inc. Avoiding live-lock in a processor that supports speculative execution

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4405983A (en) * 1980-12-17 1983-09-20 Bell Telephone Laboratories, Incorporated Auxiliary memory for microprocessor stack overflow
US4875160A (en) * 1988-07-20 1989-10-17 Digital Equipment Corporation Method for implementing synchronous pipeline exception recovery
US5109514A (en) * 1988-07-28 1992-04-28 Sun Microsystems, Inc. Method and apparatus for executing concurrent CO processor operations and precisely handling related exceptions
US5150469A (en) * 1988-12-12 1992-09-22 Digital Equipment Corporation System and method for processor pipeline control by selective signal deassertion
US5155832A (en) * 1989-07-05 1992-10-13 Hewlett-Packard Company Method to increase performance in a multi-level cache system by the use of forced cache misses
US5056091A (en) * 1990-03-15 1991-10-08 Hewlett-Packard Company Method for handling errors detected in a computer system
US5692169A (en) * 1990-12-14 1997-11-25 Hewlett Packard Company Method and system for deferring exceptions generated during speculative execution
US5479616A (en) * 1992-04-03 1995-12-26 Cyrix Corporation Exception handling for prefetched instruction bytes using valid bits to identify instructions that will cause an exception
US5442756A (en) * 1992-07-31 1995-08-15 Intel Corporation Branch prediction and resolution apparatus for a superscalar computer processor

Also Published As

Publication number Publication date
GB9702518D0 (en) 1997-03-26
US5740391A (en) 1998-04-14
JPH09330221A (ja) 1997-12-22
GB2310740B (en) 2000-06-07
GB2310740A (en) 1997-09-03

Similar Documents

Publication Publication Date Title
US6907520B2 (en) Threshold-based load address prediction and new thread identification in a multithreaded microprocessor
US7203817B2 (en) Power consumption reduction in a pipeline by stalling instruction issue on a load miss
US5941981A (en) System for using a data history table to select among multiple data prefetch algorithms
US6976152B2 (en) Comparing operands of instructions against a replay scoreboard to detect an instruction replay and copying a replay scoreboard to an issue scoreboard
EP0380850B1 (en) Method and digital computer for preproccessing multiple instructions
US6157993A (en) Prefetching data using profile of cache misses from earlier code executions
US11175923B2 (en) Comparing load instruction address fields to store instruction address fields in a table to delay issuing dependent load instructions
US5471598A (en) Data dependency detection and handling in a microprocessor with write buffer
US5584009A (en) System and method of retiring store data from a write buffer
EP2204741B1 (en) Processor and method for using an instruction hint to prevent hardware prefetch from using certain memory accesses in prefetch calculations
US8627044B2 (en) Issuing instructions with unresolved data dependencies
CN102112966B (zh) 用于推测式中断向量预取的设备及方法
KR100407013B1 (ko) 1차 및 2차 송출큐를 갖는 마이크로프로세서
US5446850A (en) Cross-cache-line compounding algorithm for scism processors
US20020144101A1 (en) Caching DAG traces
US6052776A (en) Branch operation system where instructions are queued until preparations is ascertained to be completed and branch distance is considered as an execution condition
JPH07281895A (ja) 分岐キャッシュ
JPH0334024A (ja) 分岐予測の方法とそのための装置
US5935238A (en) Selection from multiple fetch addresses generated concurrently including predicted and actual target by control-flow instructions in current and previous instruction bundles
EP0651331B1 (en) A write buffer for a superpipelined, superscalar microprocessor
KR20020025687A (ko) 마이크로프로세서의 명령 처리 방법 및 마이크로프로세서
US5964869A (en) Instruction fetch mechanism with simultaneous prediction of control-flow instructions
KR19990072271A (ko) 고성능의추론적인오정렬로드연산
JP3762816B2 (ja) マイクロプロセッサにおける早期例外を追跡するシステム及び方法
JP2596712B2 (ja) 近接した分岐命令を含む命令の実行を管理するシステム及び方法

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20051227

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20060116

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees