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

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

Info

Publication number
JPH09330221A
JPH09330221A JP9045403A JP4540397A JPH09330221A JP H09330221 A JPH09330221 A JP H09330221A JP 9045403 A JP9045403 A JP 9045403A JP 4540397 A JP4540397 A JP 4540397A JP H09330221 A JPH09330221 A JP H09330221A
Authority
JP
Japan
Prior art keywords
instruction
exception
buffer
unit
execution
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP9045403A
Other languages
English (en)
Other versions
JP3762816B2 (ja
Inventor
Douglas B Hunt
ダグラス・ビー・ハント
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

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/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, look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3842Speculative instruction execution

Abstract

(57)【要約】 【課題】例外を追跡するのに必要な追加論理を最小限に
抑え、例外の時期尚早な間違った通知をなくする、マイ
クロプロセッサにおける早期例外を追跡するシステム及
び方法を提供すること。 【解決手段】本システムは、プログラム・メモリから命
令を取り出し、取り出した命令が実行されると、結果と
して例外条件になると判定された場合、例外メッセージ
を命令バッファに挿入し、取り出した命令が実行されて
も、結果として例外条件にはならないと判定された場
合、取り出した命令を命令バッファに挿入する命令フェ
ッチ・ユニットと、命令バッファに含まれる命令を実行
する実行ユニットと、命令を、実行ユニットによって処
理された後にプログラム順に命令バッファから削除し、
その命令を復号し、命令が例外メッセージである場合に
例外を知らせる命令撤回ユニットを含む。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、一般には、マイク
ロプロセッサ・システムに関し、詳細には、特殊命令符
号化の手段によって、早期例外を追跡するシステム及び
方法に関する。
【0002】
【従来の技術】当技術分野では汎用マイクロプロセッサ
・システムが知られている。通常、マイクロプロセッサ
は、ノイマン型モデル上に構築され、その場合、データ
及び命令は、位置によってアドレス指定可能であるシス
テム・メモリに記憶され、中央演算処理装置(CPU)
が命令を順次インライン式に実行する。
【0003】命令は通常、2進数の形で表される。単一
の命令は一般に、少なくともopcode、すなわち特
定の命令コードの2進表現を含む。opcodeは、特
定の命令に応じて、1つ又は複数のオペランドを含むこ
ともできる。最後に、大部分の命令は、処理に必要な追
加情報の追跡を維持するために、1つ又は複数の制御ビ
ットを含む。
【0004】命令の実行は通常、下記の3つの段階から
なる。
【0005】1.命令フェッチ段階 2.演算段階 3.メモリ・アクセス段階 命令フェッチ段階中には、メモリから命令が取り出され
る。演算段階時には、命令が復号され、(アドレス計算
を含む)算術演算が実行される。メモリ・アクセス段階
中には、データがシステム・メモリから読み出され、あ
るいはシステム・メモリに書き込まれる。一般に、CP
U中の異なる機能ハードウェア・ユニットが、別個に3
つの段階の演算を実行する。多くの場合、これらの機能
ユニットはそれぞれ、命令フェッチ・ユニット、実行ユ
ニット、メモリ管理ユニットと呼ばれる。したがって、
各命令の実行には、少なくとも3クロック・サイクルが
必要である。各段階を完了するには、少なくとも1クロ
ック・サイクル全体が必要なので、大部分の現代のマイ
クロプロセッサ・システムは、命令パイプラインを利用
している。命令のパイプライン化は、命令の実行を重複
できるようにする、当技術分野における既知の方法であ
る。
【0006】下記に示した表1は、命令パイプラインの
典型的な従来技術の演算を示す。
【0007】
【表1】
【0008】表1に示すように、3つの命令実行段階
は、それぞれ、各クロック・サイクル中に単一の演算を
実行可能な、3つの別々の機能ユニットへと区画され
る。表1は、命令I0、I1、I2、I3及びI17が開始さ
れる、5つの実行サイクルを示す。図示のように、命令
0及び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段階(すなわち、命令フェッ
チ段階)中に発生する例外は、命令の実行の早期に検出
されるので、早期例外と呼ばれる。通常の例外条件に
は、メモリ保護違反、キャッシュ・ミス、命令バッファ
・ミス、ページ・フォルト、変換索引バッファ(TL
B)ミスが含まれる。
【0013】早期例外の1つの例として、マイクロプロ
セッサが保護メモリから命令を実行しようとした場合、
この事実は、第1実行段階で命令フェッチ・ユニットに
よって検出することができる。メモリ保護違反の検出
は、メモリ違反が早期に検出され、例外信号が返され、
違反命令が、完了しないうちに中断されるように、命令
処理の「早期」に生じる。
【0014】早期命令の他の例は、変換索引バッファ・
ミスである。仮想メモリを有するシステムではしばし
ば、「変換索引バッファ」(TLB)と呼ばれる高速連
想メモリを使用して、仮想アドレスが、迅速に物理メモ
リ・アドレス相当物へと変換される。当技術分野で知ら
れているように、変換バッファは、最後に使用された仮
想/物理アドレス変換をキャッシュに格納する。所望の
変換が変換バッファに存在しない場合(すなわち、TL
B「ミス」)、変換プロセスは停止しなければならず、
したがって、失敗したメモリ・アクセスを要求した命令
も停止しなければならない。所望の変換は次いで、メモ
リ中のより低速の変換テーブルから読み取られ、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】動作時には、命令フェッチ・ユニット11
2は、命令キャッシュ160から命令を取り出して復号
する。命令フェッチ・ユニット112は次いで、復号済
み命令を実行すると、結果として例外条件になるかどう
かを判定する。取り出した命令が潜在的な例外生成命令
である場合、命令フェッチ・ユニット112は、好まし
くは特定のタイプの例外を示し、好ましくは未使用命令
コードを使用する例外メッセージを、命令バッファ11
6に挿入する。そうでない場合、命令フェッチ・ユニッ
ト112は、取り出した命令自体を命令バッファ116
に挿入する。実行ユニット114は、命令バッファ11
6に含まれる命令を実行する。算術演算命令は、算術演
算論理ユニット118によって実行され、メモリ命令
は、メモリ管理ユニット120によって実行される。メ
モリ管理ユニット120は、データ・キャッシュ170
中のメモリとの間で読み書きを行う。撤回ユニット12
2は、実行した命令をプログラム順に命令バッファ11
6から削除し、その命令が、特殊符号化例外メッセージ
である場合に、例外信号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は、実行ユニット11
4で実行される第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)3
10と、チップ未搭載命令キャッシュ360と、チップ
未搭載データ・キャッシュ370とを含む。好ましい実
施例のシステム300では、命令キャッシュ360及び
データ・キャッシュ370は、CPU310とは別個の
高速スタティックRAMチップを使用して実施される。
CPU310は、命令フェッチ・ユニット312と、命
令仕分けユニット340と、命令順序変更バッファ(I
RB)316と、実行ユニット314とを含む。命令フ
ェッチ・ユニット312は、投機的実行ユニット352
と、潜在的例外検出ユニット354とを含む。実行ユニ
ット314は、算術演算論理ユニット(ALU)318
と、メモリ管理ユニット(MMU)320と、命令順序
変更バッファ(IRB)管理ユニット328と、撤回ユ
ニット322とを含む。図3に又示されるように、命令
順序変更バッファ316は、ALU命令バッファ34
2、及びメモリ・アクセス命令バッファ344を含む、
2つの別々のバッファに分離される。
【0029】動作時には、命令フェッチ・ユニット32
2が、命令キャッシュ360から命令を取り出す。投機
的実行ユニット352は、この命令を復号して、それが
条件付き分岐命令であるかどうかを判定する。この命令
が条件付き分岐命令である場合、投機的実行ユニット3
52は、分岐がなされるかどうかを予想し、それに応じ
て、次に取り込むべき命令のアドレスを更新する。
【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に仕分けされることがないロード命令コード
及び記憶命令コードを使用して、特殊符号化例外メッセ
ージが実施される。更に、好ましい実施例のシステム3
00では、ALU命令バッファ342から削除されたロ
ード/記憶命令は、撤回ユニット322によって例外コ
ードとして認識され、適当な例外信号324を発信する
ように復号される。図3に示す好ましい実施例のシステ
ム300のアーキテクチャを使用し、特に命令バッファ
316を特殊化命令バッファ(すなわち、ALU命令バ
ッファ342、及びメモリ・アクセス命令バッファ34
4)へと分離することにより、命令コードは、それぞれ
の異なる条件の下で2つの別々の意味を有することによ
って、重複機能を有することができる。この特徴によっ
て、単一の命令コードによって与えられる情報量が最大
になり、また、未使用命令コードを有さないシステムに
本発明を使用することが可能になる。
【0033】図3のシステム300は、命令バッファ管
理ユニット328も含む。命令バッファ管理ユニット3
28は、条件付き分岐命令の実行時にその結果を監視
し、予想と比較する。結果が予想に合致しない場合、命
令バッファ管理ユニット328は、条件付き分岐命令が
入力された後に入力されたすべての命令を命令バッファ
316から削除し、条件付き分岐命令の実行に基づき計
算された正しいアドレスを命令フェッチ・ユニット31
2へ送って、正しいアドレスからの取り出しを再開す
る。
【0034】図4−図6は、実行されると例外条件を発
生させたであろう、誤って予想された分岐命令に出会っ
たときの、図3の命令バッファ管理ユニット328の動
作を示すために、サンプル命令を備えた命令バッファ4
00を示すものである。図3の好ましい実施例のシステ
ム300において、命令バッファ316は、まず、前の
命令の結果を待っていない命令が、実行へと放たれるよ
うに、パイプライン効率を最大にするようにハードウェ
アによって順序変更される。命令を実行へと放つ方法、
及び命令を実行へと放つために調停する方法は、撤回ユ
ニット322が、命令をプログラム順に命令バッファ3
16から削除するかぎり、実現可能な任意の方式を使用
して実施することができる。言い換えると、命令順序変
更を行うマイクロプロセッサ・システムにも、あるいは
それを行わないマイクロプロセッサ・システムにも本発
明を使用できるが、撤回ユニット322は、命令をプロ
グラム順に命令バッファ316から削除しなければなら
ない。したがって、命令バッファ管理ユニット328の
動作を容易に図示するために、図4の命令バッファ40
0は、命令順序変更が実行されない、先入れ先出し(F
IFO)方式を仮定している。
【0035】したがって、図4を参照すると、命令
0,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 が、次に撤
回すべき予定の命令であることが、撤回ポインタPTR
RETIREによって示され、条件付き分岐命令I
BRANCH が、次に実行すべきものであることが、実行ポ
インタPTREXECUTIONによって示される。次いで、条
件付き分岐命令IBRANCHが実行されると、実行ユニット
は、誤って予想された分岐命令IEXCEPTION とは異なる
実際の目標アドレス結果を計算する。図3の命令バッフ
ァ管理ユニット328は次いで、図5に示すように、命
令IBRANCHが挿入された後に挿入されたすべての命令
を、命令バッファ400から削除する。次いで、図3の
実行ユニット314によって計算された正しい分岐アド
レスが、図3の命令フェッチ・ユニット312へ送ら
れ、図6に示すように、命令ITARGETを含む正しい分岐
アドレスにおいて、取り出しが再開する。やはり図6で
分かるように、命令I0が撤回され(すなわち、命令バ
ッファ400から削除され)ており、撤回ポインタPT
RETIREによって示されるように、命令I1が次に撤回
される予定である。
【0037】図4−図6は、本発明がどのように時期尚
早な例外信号を防止するかを示す。図4において、誤っ
て予想された分岐のために、潜在的な例外生成命令I
EXCEPT ION が命令バッファ400に挿入された。したが
って、命令IEXCEPTIONは実行されなかったはずであ
る。条件付き分岐命令IBRANCHの実行に基づいて、誤っ
て予想された分岐が発見されたとき、図5に示すよう
に、予想に従って取り出されたすべての命令(すなわ
ち、IEXECPTION,IJ,...,IK)が、命令バッフ
ァ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、及びメモリ・アクセス命令バッファ3
44)へと分離することにより、命令コードは、それぞ
れの異なる条件の下で2つの別々の意味を有することに
よって、重複機能を有することができる。この特徴によ
って、単一の命令コードによって与えられる情報量が最
大になり、また、未使用命令コードを有さないシステム
にも本発明を使用することが可能になる。
【図面の簡単な説明】
【図1】本発明が動作するマイクロプロセッサ・システ
ムのブロック図である。
【図2】本発明の方法を示すフローチャートである。
【図3】本発明が動作する好ましい実施例のマイクロプ
ロセッサ・システムのブロック図である。
【図4】実行された場合に例外を生成したであろう、誤
って予想された分岐命令に出会う命令バッファ管理ユニ
ットの動作を示すための命令バッファの内部図である。
【図5】実行された場合に例外を生成したであろう、誤
って予想された分岐命令に出会う命令バッファ管理ユニ
ットの動作を示すための命令バッファの内部図である。
【図6】実行された場合に例外を生成したであろう、誤
って予想された分岐命令に出会う命令バッファ管理ユニ
ットの動作を示すための命令バッファの内部図である。
【符号の説明】
100、300 マイクロプロセッサ 112、312 命令フェッチ・ユニット 114、314 実行ユニット 116、316 命令バッファ 120、320 メモリ管理ユニット 122、322 命令撤回ユニット 160、360 プログラム・メモリ(命令キャッシ
ュ) 170、370 データ・キャッシュ

Claims (1)

    【特許請求の範囲】
  1. 【請求項1】 マイクロプロセッサにおける早期例外を
    追跡するシステムにおいて、 プログラム・メモリから命令を取り出し、該取り出した
    命令が、実行されると結果として例外条件になると判定
    された場合には、例外メッセージを命令バッファに挿入
    し、上記取り出した命令が、実行されても結果として例
    外条件にならないと判定された場合には、上記取り出し
    た命令を命令バッファに挿入するための命令フェッチ・
    ユニットと、 命令バッファに含まれる命令を実行するための実行ユニ
    ットと、 命令を、実行ユニットによって処理された後に、プログ
    ラム順に命令バッファから削除し、その命令を復号し、
    命令が例外メッセージである場合に、例外を知らせるた
    めの命令撤回ユニットと、からなることを特徴とするシ
    ステム。
JP04540397A 1996-03-01 1997-02-28 マイクロプロセッサにおける早期例外を追跡するシステム及び方法 Expired - Fee Related JP3762816B2 (ja)

Applications Claiming Priority (2)

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

Publications (2)

Publication Number Publication Date
JPH09330221A true JPH09330221A (ja) 1997-12-22
JP3762816B2 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
JP3762816B2 (ja) 2006-04-05
US5740391A (en) 1998-04-14
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
US5941981A (en) System for using a data history table to select among multiple data prefetch algorithms
US6279106B1 (en) Method for reducing branch target storage by calculating direct branch targets on the fly
EP1442364B1 (en) System and method to reduce execution of instructions involving unreliable data in a speculative processor
US8627044B2 (en) Issuing instructions with unresolved data dependencies
EP0380850B1 (en) Method and digital computer for preproccessing multiple instructions
US7721076B2 (en) Tracking an oldest processor event using information stored in a register and queue entry
JP5410281B2 (ja) 非シーケンシャル命令アドレスをプリフェッチするための方法および装置
JP3549595B2 (ja) 分岐キャッシュ
EP1296229B1 (en) Scoreboarding mechanism in a pipeline that includes replays and redirects
US20080091928A1 (en) Branch lookahead prefetch for microprocessors
EP0380859A2 (en) Source list, pointer queues and result queues
US20060149935A1 (en) Load lookahead prefetch for microprocessors
US20030061470A1 (en) Power consumption reduction mechanism for pipeline stalls
JPH0334024A (ja) 分岐予測の方法とそのための装置
US5930832A (en) Apparatus to guarantee TLB inclusion for store operations
US6301654B1 (en) System and method for permitting out-of-order execution of load and store instructions
EP0651331A1 (en) A write buffer for a superpipelined, superscalar microprocessor
US8943301B2 (en) Storing branch information in an address table of a processor
US20100287358A1 (en) Branch Prediction Path Instruction
JP3762816B2 (ja) マイクロプロセッサにおける早期例外を追跡するシステム及び方法
JP2596712B2 (ja) 近接した分岐命令を含む命令の実行を管理するシステム及び方法
JPH0816394A (ja) システムメモリから命令コードを先取りするための先取り装置および方法
US20050216713A1 (en) Instruction text controlled selectively stated branches for prediction via a branch target buffer
JP3683439B2 (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