JP4423757B2 - 例外処理システム及び方法、並びに、プロセッサ - Google Patents

例外処理システム及び方法、並びに、プロセッサ Download PDF

Info

Publication number
JP4423757B2
JP4423757B2 JP2000192122A JP2000192122A JP4423757B2 JP 4423757 B2 JP4423757 B2 JP 4423757B2 JP 2000192122 A JP2000192122 A JP 2000192122A JP 2000192122 A JP2000192122 A JP 2000192122A JP 4423757 B2 JP4423757 B2 JP 4423757B2
Authority
JP
Japan
Prior art keywords
exception
instruction
execution
instruction sequence
interrupt
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
JP2000192122A
Other languages
English (en)
Other versions
JP2002007119A (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.)
Sony Corp
Original Assignee
Sony Corp
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 Sony Corp filed Critical Sony Corp
Priority to JP2000192122A priority Critical patent/JP4423757B2/ja
Publication of JP2002007119A publication Critical patent/JP2002007119A/ja
Application granted granted Critical
Publication of JP4423757B2 publication Critical patent/JP4423757B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Landscapes

  • Executing Machine-Instructions (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Advance Control (AREA)

Description

【0001】
【発明の属する技術分野】
本発明は、プロセッサが命令列の実行中に発生した例外的な事象をとらえて現在の命令列の実行を中断して、その事象を処理する別のルーチンを実行する例外処理システム及び方法に係り、特に、各ステージに分けられた複数の命令をオーバーラップして実行するパイプライン方式を採用したプロセッサのための例外処理システム及び方法に関する。
【0002】
更に詳しくは、本発明は、例外や割込みが発生した場合も元の命令列を効率的に実行する例外処理システム及び方法に係り、例外や割込みの発生に伴うパイプラインの停止(ストール)などによる無駄なサイクルを極力抑えた例外処理システム及び方法に関する。
【0003】
【従来の技術】
プロセッサ処理の高速化のために「パイプライン」という方式が広く採用されている。パイプライン方式によれば、命令フェッチ(IF)、命令デコード(ID)、演算実行(EX)、メモリ・アクセス(MEM)、ライトバック(WB)などの各ステージに分けられた複数の命令をオーバーラップして、全体として処理を高速化することができる。
【0004】
図1には、RISC(Reduced Instruction Set Computer:縮小命令セット・コンピュータ)プロセッサにおける典型的な5段パイプライン構成を模式的に図解している。また、パイプライン処理の詳細に関しては、例えば、" Computer Architecture: A Quantitative Approach (Second Edition)"(John L. Hennessy and David A. Patterson, Morgan Kaufmann Publishers, Inc., 1996.)や、" Computer Organization & Design (Second Edition)"(David A. Patterson and John L. Hennessy, Morgan Kaufmann Publishers, Inc., 1998)、『コンピュータの構成と設計 第2版 (上/下)』(パターソン&ヘネシー、日経BP、1999)などの文献にも記載されている。
【0005】
ところで、プロセッサの処理動作の1つとして、命令列の実行中に(同期的、あるいは、非同期的に)発生した例外的な事象をとらえて現在の命令列(ルーチン)の実行を中断し、その事象を処理する別のルーチンへ分岐して、その実行後、再びもとのルーチンへ戻って実行を継続するという機構、すなわち「割込み」がある。
【0006】
割込みを認識すると、命令列の実行が中断され、あらかじめ定められた特定の番地(割込み処理ルーチン)に制御が移る。割込み処理ルーチンの番地は、割込み要因に拘わらず一定である例もあり、また、割込み要因に応じて異なるような例もある。
【0007】
中断された命令の番地(プログラムカウンタ(PC)の値)が特別のレジスタ(EPC:"Exception PC"などと称する)に記録される。割込み処理が終了した際に、元の命令列に復帰するために、そのEPCレジスタの値が使用される。また、中断した原因(割込み要因)を原因レジスタに保存する。割込み処理ルーチンではこの原因レジスタを見て、各割込みに対応した処理を行う。
【0008】
図2には、パイプライン処理における割り込み制御ブロックを示している。命令キャッシュ、命令デコーダ、実行ユニット、データキャッシュ、レジスタファイルがそれぞれパイプラインのIF、ID、EX、MEM、WBの各ステージに対応する。プログラム・カウンタ(PC)及び例外発生フラグはパイプラインとともに流れ、MEMステージで例外発生フラグが立っていた場合はPCをEPCに設定する。EPCはシステム・コプロセッサ内部に存在する。
【0009】
また、図3には、システム・コプロセッサの内部構成を図解している。システム・コプロセッサは、例外処理システム、メモリ管理システム、及び、これらに利用される各種レジスタを持っており、プロセッサの補助を行う。例外処理システムは、例外の管理、原因分析、エラーからの復帰を行う。EPCはレジスタの1つとして存在する。
【0010】
ここで、システムにおいて発生する割込みは、「内部例外(同期割込み、内部割込み)」と、「外部割込み(非同期割込み)」に分類することができる。
【0011】
内部例外は、命令の実行に起因する(又は同期する)割込みであり、例えば、演算オーバーフローや不正なアドレスへのアクセス時などに発生する。プログラムの概念的な逐次実行性を保証するためには、命令列の実行は、内部例外の発生原因となった命令において中断されなければならない。
【0012】
他方、外部割込みは、実行中の命令とは無関係に発生する(すなわち非同期の)割込みであり、例えば、入出力機器の状態変化(キーボードやマウスに対するユーザ入力など)に起因して発生する。この結果、たまたま実行中であった命令が割り込まれて中断する。
【0013】
パイプライン処理において内部例外を検出した場合、プログラムの概念的な逐次実行性を保証するためには、命令列の実行は、内部例外の発生原因となった命令において中断されなければならない。例えば、パイプライン中の該当する命令並びに後続の命令をパイプライン中で廃棄することにより、逐次実行性を保証することができる。
【0014】
内部例外が発生した命令より前の命令を実行し終えるために、内部例外が発生した場合は、そのステージで内部例外発生フラグを設定し、MEMステージまでパイプラインを流した後に、そのフラグを見て内部例外を検出するという方法が多く取り入れられている。このような方法によれば、内部例外だけでなく外部割込みもMEMステージで検出される。その後は同様の処理が行われる。
【0015】
図4には、n番地の命令(すなわちプログラム・カウンタ(PC)の値がn)の命令実行のMEMステージにおいて外部割込みが検出された場合のパイプラインの動きを図解している。同図に示すように、検出信号によりMEM、EX、ID、IFの各ステージに存在する命令が廃棄(abort)される。また、EPCにはPCの値nがセットされる。さらに、PCに割り込み処理ルーチンの値がセットされ、新たにIFステージが開始される。
【0016】
ところで、内部例外や外部割込みなどの割込み処理ルーチンは命令キャッシュに存在しない可能性が高い。そうすると、割込み処理ルーチンの実行が始まった途端にパイプラインが停止(ストール)する。図5には、このような場合のパイプラインの動きを図解している。図示のように、内部例外や外部割込みが発生すると、処理が実行されない無駄なサイクルが多数生じるという問題がある。
【0017】
従来は、内部例外も外部割込みも同様の扱いが行われていたため、外部割込みに関しても同様の問題を被っていた。
【0018】
また、現在のプロセッサは、マルチタスク動作時には一定時間毎にタイマ割込みが発生するようになっているため、その度にストール・サイクルが発生している(タイマ割込みは、実行中の命令に同期しない外部割込みである)。また、プロセッサが多数の外部割込みを扱っている場合にも、同様に大量のストール・サイクルが発生していた。そのため、本来プロセッサが持っている理論上の処理能力に比し、実際の処理能力が大幅に下回るという結果に陥っている。
【0019】
なお、特開平8−221270号公報には、割込みが発生してプロセッサが内部状態の待避を行っている間に,並行してプリフェッチを行うことで、割込み処理ルーチンの読み出しを実効的に速めることができるデータ処理装置について開示されている。しかしながら、同公報に記載のデータ処理装置は、CISC(Complex Instruction Set Computer:複雑命令セット・コンピュータ)プロセッサ向けに提案されたものであり、RISCプロセッサのように割込み時の内部状態の待避(の大部分)を割込み処理ルーチンの命令列で実行するようなものに対しては、あまり効果は期待できない。
【0020】
【発明が解決しようとする課題】
本発明の目的は、プロセッサが命令列の実行中に発生した例外的な事象をとらえて現在の命令列の実行を中断して、その事象を処理する別のルーチンを実行する、優れた例外処理システム及び方法を提供することにある。
【0021】
本発明の更なる目的は、各ステージに分けられた複数の命令をオーバーラップして実行するパイプライン方式を採用したプロセッサ(とりわけRISC型プロセッサ)のための、優れた例外処理システム及び方法を提供することにある。
【0022】
本発明の更なる目的は、例外や割込みが発生した場合も元の命令列を効率的に実行することができる、優れた例外処理システム及び方法を提供することにある。
【0023】
本発明の更なる目的は、例外や割込みの発生に伴うパイプラインの停止(ストール)などによる無駄なサイクルを抑制することができる、優れた例外処理システムを提供することにある。
【0024】
【課題を解決するための手段】
本発明は、上記課題を参酌してなされたものであり、その第1の側面は、プロセッサが命令列の実行中に発生した例外的な事象をとらえて現在の命令列の実行を中断して、その事象を処理する別のルーチンを実行する例外処理システム又は方法であって、
実行中の命令に非同期な外部割込みを検出する手段又はステップと、
検出された外部割込みに対応する割込み処理ルーチンの命令フェッチが完了するまでの間、元の命令列の実行を継続させる手段又はステップと、
を具備することを特徴とする例外処理システム又は方法である。
【0025】
また、本発明の第2の側面は、プロセッサが命令列の実行中に発生した例外的な事象をとらえて現在の命令列の実行を中断して、その事象を処理する別のルーチンを実行する例外処理システム又は方法であって、
実行中の命令に非同期な外部割込みを検出する手段又はステップと、
検出された外部割込みに対応する割込み処理ルーチンの命令フェッチを行う手段又はステップと、
該割込み処理ルーチンの命令フェッチが完了したか否かの状態を保持する状態保持手段又はステップと、
該割込み処理ルーチンの命令フェッチが完了する前は該外部割込みを受理せず元の命令列の実行を継続し、該命令フェッチの完了に応答して該外部割込みを受理する手段又はステップと、
を具備することを特徴とする例外処理システム又は方法である。
【0026】
本発明の第2の側面に係る例外処理システム又は方法において、命令列を一時保持する命令キャッシュをプロセッサに付随して備えていてもよい。このような場合、該当する割込み処理ルーチンが前記命令キャッシュ中に存在するか否かを判定する判定手段又はステップと、前記判定手段又はステップによる判定結果に応じて元の命令列の実行継続範囲を調整する調整手段又はステップとをさらに備えていてもよい。
【0027】
また、該外部割込みを受理した後は元の命令列を破棄するようにしてもよい。あるいは、該外部割込みを受理した後も元の命令列の実行を継続するようにしてもよい。
【0028】
また、元の命令列の実行を継続している期間中に該命令に同期した例外事象が発生したことに応答して、該命令列の実行を中断するようにしてもよいし、該割込み処理ルーチンの命令フェッチを中断するようにしてもよい。
【0029】
また、元の命令列の実行を継続している期間中に該命令に同期した例外事象が発生したことに応答して、該例外事象の処理ルーチンに実行を移すようにしてもよいし、あるいは、要求が保留になっていた割込み処理ルーチンに実行を移すようにしてもよい。
【0030】
また、元の命令列の実行を継続している期間中に実行中の命令列のキャッシュ・ミスが発生したことに応答して、要求が保留になっていた割込み処理ルーチンに実行を移すようにしてもよい。
【0031】
また、本発明の第3の側面は、システム・インターフェース経由でメイン・メモリにアクセスするとともにキャッシュ・コントローラ経由でキャッシュ・メモリにアクセスするプロセッサであって、
実行中の命令に非同期な外部割込みを検出する手段と、
外部割込みの検出に応答して、前記キャッシュ・メモリに対して該当する割込み処理ルーチンのキャッシュ・ヒット判定を行う判定手段と、
キャッシュ・ヒット判定の結果キャッシュ・ミスしたことに応答して、前記メイン・メモリに対して該当する割込み処理ルーチンを要求するメモリ要求手段と、
該当する割込み処理ルーチンのキャッシュ・ミスに応答して不確定状態を保持する状態レジスタと、
を具備することを特徴とするプロセッサである。
【0032】
本発明の第3の側面に係るプロセッサにおいて、前記状態レジスタは、該当する割込みルーチンが前記メイン・メモリから到着したことに応答して通常状態に復帰するようにしてもよい。
【0033】
また、該プロセッサは、前記状態レジスタが不確定状態の期間中は外部割込みを受理しないようにしてもよい。
【0034】
また、該プロセッサは、該外部割込みを受理した後は元の命令列を破棄するようにしてもよいし、あるいは、該外部割込みを受理した後も元の命令列の実行を継続するようにしてもよい。
【0035】
また、該プロセッサは、前記状態レジスタが不確定状態のときに実行中の命令列に同期した例外事象が発生したことに応答して、該命令列の実行を中断するようにしてもよいし、該割込み処理ルーチンのメモリ要求を中断するようにしてもよい。
【0036】
また、該プロセッサは、前記状態レジスタが不確定状態のとき実行中の命令列に同期した例外事象が発生したことに応答して、前記状態レジスタを通常状態に戻して、該例外事象の処理ルーチンに実行を移すようにしてもよいし、あるいは、要求が保留になっていた割込み処理ルーチンに実行を移すようにしてもよい。
【0037】
また、該プロセッサは、前記状態レジスタが不確定状態のときに実行中の命令列のキャッシュ・ミスが発生したことに応答して、前記状態レジスタを通常状態に戻して、要求が保留になっていた割込み処理ルーチンに実行を移すようにしてもよい。
【0038】
【作用】
本発明に係るプロセッサの例外処理においては、システムに発生する割込みを、内部例外と外部割込みとを区別して処理するようにした。
【0039】
実行中の命令に同期する内部例外については、命令列の実行は、内部例外の発生原因となった命令において中断されなければならない。これに対し、実行中の命令とは非同期である外部割込みは、実行中の命令には無関係に発生するから、たまたま実行中の命令を直ちに中断する必要はなく、なるべく速く割込み処理ルーチンの実行を開始できればそれでよい。すなわち、割込み処理ルーチンの(先頭の)命令を読み終わる直前までは元の命令列を実行していて、その時点で中断したような扱いにすることができる。
【0040】
ここで、割込み処理ルーチンの(先頭の)命令を読み終わるまでの時間は、割込み処理ルーチンが命令キャッシュに存在するか否かによって大きく異なる。したがって、割込み処理ルーチンが命令キャッシュに存在するか否かを調べて、元の命令列の実行継続範囲を調節することが有効である。割込み処理ルーチンが命令キャッシュに存在しない場合は、直ちにメイン・メモリからの読み出しを起動する。しかし、読み終わって命令が得られるまでには相当の時間がかかるので、その間に、元の命令列を比較的多数実行することができる訳である。従来はストールしていたサイクルを、本発明では有効に利用することができるので、プロセッサの処理効率が向上する。
【0041】
したがって、本発明によれば、このような無駄なストール・サイクルを削除することにより、プロセッサの本来の処理能力を引き出すことができる。
【0042】
本発明のさらに他の目的、特徴や利点は、後述する本発明の実施例や添付する図面に基づくより詳細な説明によって明らかになるであろう。
【0043】
【発明の実施の形態】
以下、図面を参照しながら本発明の実施例を詳解する。
【0044】
図6には、本発明の実施に供される割込み処理システムの機能構成を模式的に示している。本発明に係る割込み処理はシステム・コプロセッサにおいて扱われる。システム・コプロセッサは、内部例外や外部割込みなどの例外処理を実行する例外処理システムと、割込みの原因を記憶する原因レジスタ、例外プログラム・カウンタ(EPC)などの各種レジスタ群、及び、メモリ空間へのアクセスを管理するメモリ管理システムで構成される。メモリ管理システムは、キャッシュ・コントローラ経由で命令キャッシュやデータ・キャッシュにアクセスするとともに、システム・インターフェース経由でメモリ・コントローラ及びメイン・メモリにアクセスすることができる。本発明は、例えば、例外処理システムにおける機能拡張という形態で実現される。
【0045】
本発明では、システムに発生する割込みを、内部例外と外部割込みとを区別して処理するようにした。
【0046】
実行中の命令に同期する内部例外については、命令列の実行は、内部例外の発生原因となった命令において中断されなければならない。これに対し、実行中の命令に非同期である外部割込みは、実行中の命令には無関係に発生するから、たまたま実行中の命令を直ちに中断する必要はなく、なるべく速く割込み処理ルーチンの実行を開始できればそれでよい。すなわち、割込み処理ルーチンの(先頭の)命令を読み終わる直前までは元の命令列を実行していて、その時点で中断したような扱いにすることができる。
【0047】
ここで、割込み処理ルーチンの(先頭の)命令を読み終わるまでの時間は、割込み処理ルーチンが命令キャッシュに存在するか否かによって大きく異なる。したがって、割込み処理ルーチンが命令キャッシュに存在するか否かを調べて、元の命令列の実行継続範囲を調節することが有効である。割込み処理ルーチンが命令キャッシュに存在しない場合は、直ちにメイン・メモリからの読み出しを起動する。しかし、読み終わって命令が得られるまでには相当の時間がかかるので、その間に、元の命令列を比較的多数実行することができる。
【0048】
本発明では、以下の機能拡張を施すことにより、割込みが検出されてから割込み処理ルーチンが得られるまでに要する時間を有効活用するようにした。
【0049】
(1)外部割込みを検出しても、割込み処理ルーチンの命令が実行できる状態になるまで、外部割込みを受理しない。
【0050】
(2)割込み処理ルーチンの命令が実行できる状態になった場合、EPCを確定して割込み処理ルーチンの実行に移る(プログラム・カウンタを割込み処理ルーチンの先頭にする)。この場合、外部割込みを受理した後は、従来のようにパイプライン中の命令を破棄(abort)してしまう方式と、パイプライン中の命令をそのまま実行し続ける方式とが考えられる。
【0051】
図7には、割込み処理ルーチンの命令が命令キャッシュ(若しくはプリフェッチ・バッファ)中に存在しないうちには外部割込み要求を受理しないように動作するパイプラインの動きを図解している。各パイプラインでは、命令フェッチ(IF)、命令デコード(ID)、演算実行(EX)、メモリ・アクセス(MEM)、ライトバック(WB)という各ステージに分けられて、複数の命令がオーバーラップして実行される。そして、n番地の命令(すなわちプログラム・カウンタ(PC)の値がn)の命令実行のMEMステージにおいて外部割込みが検出されたとする。
【0052】
従来は、図5(前述)に示したように、外部割込み要求を検出するとすぐに例外処理ルーチンへ実行を移していた。これに対し、本実施例では、例外処理システムが、キャッシュ・コントローラに対して割込みルーチンのキャッシュ・ビット判定の問合せを行う(図7中の10)。このとき、パイプライン側とシステム・コプロセッサ側でキャッシュタグを同時に参照することができない場合には、命令キャッシュ・ビジー(ICB)でパイプラインがストールする。
【0053】
割込み処理ルーチンのキャッシュ・ヒット判定でキャッシュ・ヒットした場合は従来通り割込み処理ルーチンへ実行を移す。他方、キャッシュ・ミスした場合は(図7中の11)、図示のように、例外処理システムの状態をEPC不確定状態にするとともに(図7中の12)、システム・インターフェースを介してメイン・メモリに対して命令列の要求すなわちメモリ・リクエストを行う(図7中の13)。
【0054】
割込み処理の命令列を要求するメモリ・リクエストを発行した後も、現在実行している命令列を引き続き実行し続ける。図5に示すチャートでは、外部割込みが検出されたPC=n番地の命令のMEMステージ以降に相当する各パイプラインのステージが破棄(abort)されているのに対して、図7では、PC=n番地のMEMステージ以降に相当する各パイプライン上のステージの実行が継続されている点に留意されたい。
【0055】
そして、割込み処理ルーチンの命令列がシステム・インターフェース経由でメイン・メモリから到着したら、この時点で外部割込みを受理する(図7中の14)。外部割込みを受理した時点が、例えば図7に示すようにPC=n+m+4番地の命令のMEMステージ以降に相当する各パイプラインのステージが破棄される。そして、MEMステージの命令のアドレス(PC=n+m+4)をEPCに記録して(図7中の15)、例外処理システムの状態を通常に戻して(図7中の16)、割込み処理を実行する。
【0056】
図8には、このときの例外処理システムが実行する処理手順をフローチャートの形式で図解している。以下、このフローチャートに従って説明する。
【0057】
例外処理システムが外部割込み要求を検出すると、まず、キャッシュ・コントローラの命令キャッシュ・タグにアクセスして(ステップ10)、キャッシュ・ヒット判定の問合せを行う(ステップ11)。
【0058】
割込み処理ルーチンのキャッシュ・ヒット判定でキャッシュ・ヒットした場合は従来通り割込み処理ルーチンへ実行を移す。
【0059】
他方、キャッシュ・ミスした場合は、例外処理システムの状態をEPC不確定状態にして(ステップ12)、システム・インターフェースを介してメイン・メモリに対して命令列の要求すなわちメモリ・リクエストを行う(ステップ13)。そして、割込み処理の命令列を要求するメモリ・リクエストを発行した後も、現在実行している命令列を引き続き実行し続ける(ステップ14)。
【0060】
割込み処理ルーチンの命令列がシステム・インターフェース経由でメイン・メモリから到着したら、この時点で外部割込みを受理して、EPCを確定し(ステップ15)、例外処理システムの状態を通常に戻して(ステップ16)、割込み処理を受け付けてこれを実行する(ステップ17)。
【0061】
図7及び図8に示す例では、外部割込みを受理した後は、従来のようにパイプライン中の命令を破棄するようになっている。これに対し、外部割込みを受理した後も、パイプライン中の命令をそのまま実行し続けるような機能拡張も考えられる。
【0062】
図9には、割込み処理ルーチンの命令が命令キャッシュ(若しくはプリフェッチ・バッファ)中に存在しないうちには外部割込み要求を受理しないように動作するとともに、外部割込みを受理した後もパイプライン中の命令をそのまま実行し続けるように動作する(すなわち従来の命令列と割込み処理ルーチンの命令列を重ねて実行する)パイプラインの動きを図解している。
【0063】
従来は、図5(前述)に示したように割込み処理を開始する場合は割込みを検出した時点でパイプライン中の命令をすべて破棄していたが、図9に示す本実施例ではできる限りの命令を破棄せずに実行する。
【0064】
各パイプラインでは、命令フェッチ(IF)、命令デコード(ID)、演算実行(EX)、メモリ・アクセス(MEM)、ライトバック(WB)という各ステージに分けられて、複数の命令がオーバーラップして実行される。そして、n番地の命令(すなわちプログラム・カウンタ(PC)の値がn)の命令実行のMEMステージにおいて外部割込みが受理されたとする。
【0065】
外部割込みが受理されたときに、各パイプラインの該当ステージでEPC不確定実行フラグ(以下、"EPCUE flag"とする)をセットする。
【0066】
また、この時点でIFステージにあったPC=n+12番地の命令に対して擬似内部例外発生フラグをセットすることにより、内部例外が発生した命令としてNOP化する。
【0067】
EPC不確定実行フラグは、内部例外発生フラグと同様に、命令とともにパイプライン中を流れる。
【0068】
そして、状態をEPC不確定にしてパイプラインを進行させ、NOP化された命令をMEMステージで検出して、そのアドレスすなわちPC=n+12をEPCに記録して状態を通常に戻す。
【0069】
また、図10には、図9と同様に従来の命令列と割込み処理ルーチンの命令列を重ねて実行している命令中に、内部例外が発生した場合のパイプラインの動きを図解している。
【0070】
各パイプラインでは、命令フェッチ(IF)、命令デコード(ID)、演算実行(EX)、メモリ・アクセス(MEM)、ライトバック(WB)という各ステージに分けられて、複数の命令がオーバーラップして実行される。そして、n番地の命令(すなわちプログラム・カウンタ(PC)の値がn)の命令実行のMEMステージにおいて外部割込みが受理されたとする。
【0071】
外部割込みが受理されたときに、各パイプラインの該当ステージでEPC不確定実行フラグをセットする。
【0072】
また、この時点でIDステージにあったPC=n+8番地の命令に対して内部例外が発生したとする。このような場合には、従来の場合と同様、その命令に内部例外発生フラグをセットすることにより、NOP化する。
【0073】
EPC不確定実行フラグは、内部例外発生フラグと同様に、命令とともにパイプライン中を流れる。
【0074】
そして、状態をEPC不確定にしてパイプラインを進行させ、NOP化された命令をMEMステージで検出して、そのアドレスすなわちPC=n+8をEPCに記録し、EPC不確定フラグがセットされている命令のみを破棄して、状態を通常に戻す。
【0075】
以上説明したように、(1)並びに(2)のような機能拡張を施すことにより、割込みが検出されてから割込み処理ルーチンが得られるまでに要する時間を有効活用することができる。但し、外部割込みを受理せず保留している状態で、現命令列で内部例外やキャッシュ・ミスが発生する可能性がある。このような場合を想定して、さらに以下に示す機能拡張を例外処理システムに行うようにすればよい。
【0076】
(3)割込み処理ルーチンの命令がメモリから届くまで待つ状態で内部例外が発生した場合にパイプラインの実行を中断して適切な処理ルーチンに実行を移す。例えば、内部例外処理ルーチンに実行を移したり、要求が保留になっていた外部割込み処理ルーチンへ実行を移す。
【0077】
(4)割込み処理ルーチンの命令がメモリから届くまで待つ状態でキャッシュ・ミスが発生したときには、要求が保留になっていた外部割込み処理ルーチンへ実行を移す。
【0078】
図11には、割込み処理ルーチンの命令がメモリから届くまで待つ状態、すなわちEPC不確定状態で内部例外が生じ、その内部例外処理を実行する場合のパイプラインの動きを図解している。
【0079】
各パイプラインでは、命令フェッチ(IF)、命令デコード(ID)、演算実行(EX)、メモリ・アクセス(MEM)、ライトバック(WB)という各ステージに分けられて、複数の命令がオーバーラップして実行される。
【0080】
そして、n番地の命令(すなわちプログラム・カウンタ(PC)の値がn)の命令実行のMEMステージにおいて外部割込みが検出されて、EPC不確定により元の命令列の実行を継続している最中に、さらにn+16番地の命令の実行のIFステージにおいて内部例外が発生したとする。このような場合、先に検出された外部割込み要求の処理よりも先に内部例外処理を行う必要がある。
【0081】
外部割込み要求があった場合、外部割込み処理ルーチンについて命令キャッシュ・タグをアクセスして(図11中の20)、キャッシュ・ヒット判定の問合せを行う(図11中の21)。
【0082】
割込み処理ルーチンのキャッシュ・ヒット判定でキャッシュ・ヒットした場合は従来通り割込み処理ルーチンへ実行を移す。他方、キャッシュ・ミスした場合は、図示のように、例外処理システムの状態をEPC不確定状態にするとともに(図11中の22)、システム・インターフェースを介してメイン・メモリに対して命令列の要求すなわちメモリ・リクエストを行う(図11中の23)。そして、要求した命令が到着するまで、割込み要求の受理を保留して、現命令列でパイプラインを実行し続ける。
【0083】
割込み処理ルーチンの命令を待っている状態、すなわちEPC不確定状態で内部例外が検出されたとする。図示の例では、内部例外が発生したPC=n+16番地の命令列がMEMステージまで進行したときに内部例外が検出される(図11中の28)。このような場合、メイン・メモリに対する命令要求を破棄する(図11中の29)。そして、従来と同様に、内部例外を発生した命令のアドレス(PC=n+16)をEPCに記録し(図11中の25)、例外処理システムの状態を通常に戻し(図11中の26)、PC=n+16番地の命令のMEMステージ以降に相当する残りのパイプラインを破棄して、例外処理ルーチンの実行を開始する。
【0084】
なお、メイン・メモリに要求した命令列が届いた場合は、破棄するかバッファ(図示しない)に格納しておけばよい。
【0085】
また、図12には、EPC不確定状態で内部例外が生じ、その内部例外処理を実行する場合の例外処理システムにおける処理手順をフローチャートの形式で示している。以下、このフローチャートに従って説明する。
【0086】
例外処理システムが外部割込み要求を検出すると、まず、キャッシュ・コントローラの命令キャッシュ・タグにアクセスして(ステップ20)、キャッシュ・ヒット判定の問合せを行う(ステップ21)。
【0087】
割込み処理ルーチンのキャッシュ・ヒット判定でキャッシュ・ヒットした場合は従来通り割込み処理ルーチンへ実行を移す。
【0088】
他方、キャッシュ・ミスした場合は、例外処理システムの状態をEPC不確定状態にして(ステップ22)、システム・インターフェースを介してメイン・メモリに対して命令列の要求すなわちメモリ・リクエストを行う(ステップ23)。そして、割込み処理の命令列を要求するメモリ・リクエストを発行した後も、現在実行している命令列を引き続き実行し続ける。
【0089】
割込み処理ルーチンの命令を待っている状態、すなわちEPC不確定状態の期間中、内部例外が発生したか否かを常時監視する(ステップ28及びステップ24)。
【0090】
EPC不確定期間中に内部例外が発生しなかった場合には、図8に示した場合と同様に、割込み処理ルーチンの命令列がシステム・インターフェース経由でメイン・メモリから到着した時点で外部割込みを受理して、EPCを確定し(ステップ25)、例外処理システムの状態を通常に戻して(ステップ26)、割込み処理を受け付けてこれを実行する(ステップ27)。
【0091】
他方、EPC不確定状態の期間中に内部例外が検出された場合には、メイン・メモリに対する命令要求を破棄する(ステップ29)。
【0092】
そして、従来と同様に、内部例外を発生した命令のアドレスをEPCに記録し(ステップ25)、例外処理システムの状態を通常に戻し(ステップ26)、残りのパイプラインを破棄して、例外処理ルーチンの実行を開始する(ステップ27)。
【0093】
図11及び図12を参照しながら説明したような、EPC不確定状態で内部例外が生じたときにはその内部例外を実行するという手法は、内部例外の処理手順が従来方式と略同一なので、実装が容易である。
【0094】
図13には、割込み処理ルーチンの命令がメモリから届くまで待つ状態、すなわちEPC不確定状態で内部例外が生じたときに、保留となっている割込み処理を実行する場合のパイプラインの動きを図解している。
【0095】
各パイプラインでは、命令フェッチ(IF)、命令デコード(ID)、演算実行(EX)、メモリ・アクセス(MEM)、ライトバック(WB)という各ステージに分けられて、複数の命令がオーバーラップして実行される。
【0096】
そして、n番地の命令(すなわちプログラム・カウンタ(PC)の値がn)の命令実行のMEMステージにおいて外部割込みが検出されて、EPC不確定により元の命令列の実行を継続している最中に、さらにn+16番地の命令の命令実行のIFステージにおいて内部例外が発生したとする。
【0097】
このような場合、内部例外を発生したn+16番地の命令の実行のMEMステージにおいて、内部例外が検出されるが、外部割込みが検出されたものとして、本実施例に係る例外処理システムは外部割込み処理を開始する。
【0098】
外部割込み要求があった場合、外部割込み処理ルーチンについて命令キャッシュ・タグをアクセスして(図13中の30)、キャッシュ・ヒット判定の問合せを行う(図13中の31)。
【0099】
割込み処理ルーチンのキャッシュ・ヒット判定でキャッシュ・ヒットした場合は従来通り割込み処理ルーチンへ実行を移す。他方、キャッシュ・ミスした場合は、図示のように、例外処理システムの状態をEPC不確定状態にするとともに(図13中の32)、システム・インターフェースを介してメイン・メモリに対して命令列の要求すなわちメモリ・リクエストを行う(図13中の33)。そして、要求した命令が到着するまで、割込み要求の受理を保留して、現命令列でパイプラインを実行し続ける。
【0100】
割込み処理ルーチンの命令を待っている状態、すなわちEPC不確定状態で内部例外が検出されたとする。図示の例では、内部例外が発生したPC=n+16番地の命令列がMEMステージまで進行したときに内部例外が検出される(図13中の38)。このような場合、内部例外を発生した命令のアドレス(PC=n+16)をEPCに記録するが(図13中の35)、原因レジスタには外部割込みを記録する(図13中の39)。
【0101】
そして、例外処理システムを通常の状態に戻して(図13中の36)、例外処理ルーチンの実行を開始する。
【0102】
EPC不確定状態であったので、大抵の場合、命令キャッシュ・ミスにより実行が停止(stall)する。
【0103】
また、図14には、EPC不確定状態で内部例外が生じたときに、保留となっている割込み処理を実行する場合の例外処理システムにおける処理手順をフローチャートの形式で示している。以下、このフローチャートに従って説明する。
【0104】
例外処理システムが外部割込み要求を検出すると、まず、キャッシュ・コントローラの命令キャッシュ・タグにアクセスして(ステップ30)、キャッシュ・ヒット判定の問合せを行う(ステップ31)。
【0105】
割込み処理ルーチンのキャッシュ・ヒット判定でキャッシュ・ヒットした場合は従来通り割込み処理ルーチンへ実行を移す。
【0106】
他方、キャッシュ・ミスした場合は、例外処理システムの状態をEPC不確定状態にして(ステップ32)、システム・インターフェースを介してメイン・メモリに対して命令列の要求すなわちメモリ・リクエストを行う(ステップ33)。そして、割込み処理の命令列を要求するメモリ・リクエストを発行した後も、現在実行している命令列を引き続き実行し続ける。
【0107】
割込み処理ルーチンの命令を待っている状態、すなわちEPC不確定状態の期間中、内部例外が発生したか否かを常時監視する(ステップ38及びステップ34)。
【0108】
EPC不確定期間中に内部例外が発生しなかった場合には、図8に示した場合と同様に、割込み処理ルーチンの命令列がシステム・インターフェース経由でメイン・メモリから到着した時点で外部割込みを受理して、EPCを確定し(ステップ35)、例外処理システムの状態を通常に戻して(ステップ36)、割込み処理を受け付けてこれを実行する(ステップ37)。
【0109】
他方、EPC不確定状態の期間中に内部例外が検出された場合には(ステップ38)、原因レジスタに内部例外ではなく外部割込みをセットして、割込みの原因を外部割込みとして扱う(ステップ39)。
【0110】
そして、従来と同様に、内部例外を発生した命令のアドレスをEPCに記録し(ステップ35)、例外処理システムの状態を通常に戻し(ステップ36)、残りのパイプラインを破棄して、例外処理ルーチンの実行を開始する(ステップ37)。
【0111】
図13及び図14を参照しながら説明した実施例は、図11及び図12に示した場合に比し、ハードウェアの実装が多少複雑化するが、イベントの発生順序が従来のものと同じに再現され、割込みのスタベーションも回避することができる。また、外部割込みの処理が終了した際に、中断した時点から命令列の実行を再開すると、改めて内部例外が認識されることになる。また、図11及び図12に示した例では内部例外処理で長時間割込み禁止状態が続く可能性があるが、この実施例によれば外部割込みに対する応答時間を従来と同じにできるという利点もある。
【0112】
図15には、割込み処理ルーチンの命令がメモリから届くまで待つ状態でキャッシュ・ミスが発生したときに、要求が保留になっていた外部割込み処理ルーチンへ実行を移す場合のパイプラインの動きを図解している。
【0113】
各パイプラインでは、命令フェッチ(IF)、命令デコード(ID)、演算実行(EX)、メモリ・アクセス(MEM)、ライトバック(WB)という各ステージに分けられて、複数の命令がオーバーラップして実行される。
【0114】
そして、n番地の命令(すなわちプログラム・カウンタ(PC)の値がn)の命令実行のMEMステージにおいて外部割込みが検出されて、EPC不確定により元の命令列の実行を継続している最中に、さらにn+16番地の命令の命令実行のIFステージにおいてキャッシュ・ミスが発生したとする。
【0115】
元の命令列の実行を継続している間にキャッシュ・ミスが生じた場合も、その時点で命令列の実行を中断する。これは、既に割込み処理ルーチンのメイン・メモリからの読み出し動作が起動されているので、これに続くメイン・メモリ要求を出したとしても、その応答を待っている間に、割込み処理ルーチンの読み出しが完了して割込み処理ルーチンの実行が開始できるようになる可能性が高いからである。
【0116】
外部割込み要求があった場合、外部割込み処理ルーチンについて命令キャッシュ・タグをアクセスして、キャッシュ・ヒット判定の問合せを行う。
【0117】
割込み処理ルーチンのキャッシュ・ヒット判定でキャッシュ・ヒットした場合は従来通り割込み処理ルーチンへ実行を移す。他方、キャッシュ・ミスした場合は、図示のように、例外処理システムの状態をEPC不確定状態にするとともに、システム・インターフェースを介してメイン・メモリに対して命令列の要求すなわちメモリ・リクエストを行う。そして、要求した命令が到着するまで、割込み要求の受理を保留して、現命令列でパイプラインを実行し続ける。
【0118】
割込み処理ルーチンの命令を待っている状態、すなわちEPC不確定状態でキャッシュ・ミスが検出されたとする。図示の例では、内部例外が発生したPC=n+16番地の命令列のIFステージにおいてキャッシュ・ミスが検出される(図15中の50)。
【0119】
このような場合、それ以前の命令を完了するために、内部例外発生フラグをセットして(図15中の51)、キャッシュ・ミスを発生した命令をNOP化し、そのままパイプラインの動作を続行する。
【0120】
キャッシュ・ミスを起こした命令はMEMステージで内部例外として検出されるが(図15中の48)、その原因フラグに外部割込みをセットし(図15中の49)、その命令のアドレス(PC=n+16)をEPCに記録し、状態を通常に戻して割込み受付処理を行う(図15中の46)。
【0121】
また、図16には、割込み処理ルーチンの命令がメモリから届くまで待つ状態でキャッシュ・ミスが発生したときに、要求が保留になっていた外部割込み処理ルーチンへ実行を移す場合の例外処理システムにおける処理手順をフローチャートの形式で示している。以下、このフローチャートに従って説明する。
【0122】
例外処理システムが外部割込み要求を検出すると、まず、キャッシュ・コントローラの命令キャッシュ・タグにアクセスして(ステップ40)、キャッシュ・ヒット判定の問合せを行う(ステップ41)。
【0123】
割込み処理ルーチンのキャッシュ・ヒット判定でキャッシュ・ヒットした場合は従来通り割込み処理ルーチンへ実行を移す。
【0124】
他方、キャッシュ・ミスした場合は、例外処理システムの状態をEPC不確定状態にして(ステップ42)、システム・インターフェースを介してメイン・メモリに対して命令列の要求すなわちメモリ・リクエストを行う(ステップ43)。そして、割込み処理の命令列を要求するメモリ・リクエストを発行した後も、現在実行している命令列を引き続き実行し続ける。
【0125】
割込み処理ルーチンの命令を待っている状態、すなわちEPC不確定状態の期間中、内部例外が発生したか否か、並びに、キャッシュ・ミスが発生したか否かを常時監視する(ステップ48、ステップ50、及びステップ44)。
【0126】
EPC不確定期間中に内部例外もキャッシュ・ミスも発生しなかった場合には、図8に示した場合と同様に、割込み処理ルーチンの命令列がシステム・インターフェース経由でメイン・メモリから到着した時点で外部割込みを受理して、EPCを確定し(ステップ45)、例外処理システムの状態を通常に戻して(ステップ46)、割込み処理を受け付けてこれを実行する(ステップ47)。
【0127】
他方、EPC不確定状態の期間中に内部例外が検出された場合には(ステップ48)、原因レジスタに内部例外ではなく外部割込みをセットして、割込みの原因を外部割込みとして扱う(ステップ49)。
【0128】
また、EPC不確定状態の期間中にキャッシュ・ミスが検出された場合には(ステップ50)、内部例外発生フラグを設定して(ステップ51)、前ステップS48に戻る。この結果、キャッシュ・ミスを発生した命令はNOP化され、そのままパイプラインの動作が続行し、それ以前の命令が完了する。
【0129】
キャッシュ・ミスを起こした命令はMEMステージで内部例外として検出されるが(ステップ48)、その原因フラグに外部割込みがセットされる(ステップ49)。
【0130】
そして、従来と同様に、内部例外を発生した命令のアドレスをEPCに記録し(ステップ45)、例外処理システムの状態を通常に戻し(ステップ46)、残りのパイプラインを破棄して、例外処理ルーチンの実行を開始する(ステップ47)。
【0131】
[追補]
以上、特定の実施例を参照しながら、本発明について詳解してきた。しかしながら、本発明の要旨を逸脱しない範囲で当業者が該実施例の修正や代用を成し得ることは自明である。すなわち、例示という形態で本発明を開示してきたのであり、限定的に解釈されるべきではない。本発明の要旨を判断するためには、冒頭に記載した特許請求の範囲の欄を参酌すべきである。
【0132】
【発明の効果】
以上詳記したように、本発明によれば、各ステージに分けられた複数の命令をオーバーラップして実行するパイプライン方式を採用したプロセッサ(とりわけRISC型プロセッサ)のための、優れた例外処理システム及び方法を提供することができる。
【0133】
また、本発明によれば、例外や割込みが発生した場合も元の命令列を効率的に実行することができる、優れた例外処理システム及び方法を提供することができる。
【0134】
また、本発明によれば、例外や割込みの発生に伴うパイプラインの停止(ストール)などによる無駄なサイクルを抑制することができる、優れた例外処理システム及び方法を提供することができる。
【0135】
本発明に係る例外処理によれば、従来は例外処理実行時にストールしていたサイクルを有効に利用することができ、処理効率が向上する。
【0136】
例えば、現在のプロセッサは、マルチタスク動作時には一定時間毎にタイマ割込みが発生するようになっているため、その度にストール・サイクルが発生していた。また、プロセッサが多数の外部割込みを扱っている場合にも、同様に大量のストール・サイクルが発生していた。そのため、本来プロセッサが持っている理論上の処理能力に比し、実際の処理能力が大幅に下回るという結果に陥っていた。これに対し、本発明によれば、このような無駄なストール・サイクルを削除することにより、プロセッサの本来の処理能力を引き出すことができる。
【図面の簡単な説明】
【図1】RISC(Reduced Instruction Set Computer:縮小命令セット・コンピュータ)プロセッサにおける典型的な5段パイプライン構成を模式的に示した図(従来例)である。
【図2】パイプライン処理における割り込み制御ブロックを示した図である。
【図3】システム・コプロセッサの内部構成を示した図である。
【図4】n番地の命令(すなわちプログラム・カウンタ(PC)の値がn)の命令実行のMEMステージにおいて外部割込みが検出されたときのパイプラインの動作を示したチャートである。
【図5】割込み処理ルーチンが命令キャッシュに存在しないために、割込み処理ルーチンの実行が始まった途端にパイプラインが停止(ストール)するときのパイプラインの動作を示したチャートである。
【図6】本発明の実施に供される割込み処理システムの機能構成を模式的に示した図である。
【図7】割込み処理ルーチンの命令が命令キャッシュ(若しくはプリフェッチ・バッファ)中に存在しないうちには外部割込み要求を受理しないように動作するパイプラインの動きを示したチャートである。
【図8】割込み処理ルーチンの命令が命令キャッシュ(若しくはプリフェッチ・バッファ)中に存在しないうちには外部割込み要求を受理しないようにパイプラインを動作せしめるための例外処理システムの処理手順を示したフローチャートである。
【図9】割込み処理ルーチンの命令が命令キャッシュ(若しくはプリフェッチ・バッファ)中に存在しないうちには外部割込み要求を受理しないように動作するとともに、外部より込みを受理した後もパイプライン中の命令をそのまま実行し続けるように動作するパイプラインの動きを示したチャートである。
【図10】割込み処理ルーチンの命令が命令キャッシュ(若しくはプリフェッチ・バッファ)中に存在しないうちには外部割込み要求を受理しないように動作するとともに、外部より込みを受理した後もパイプライン中の命令をそのまま実行し続けるように動作するパイプラインの動きを示したチャートであり、より具体的には、従来の命令列と割込み処理ルーチンの命令列を重ねて実行している命令中に内部例外が発生した場合のパイプラインの動きを示したチャートである。
【図11】EPC不確定状態で内部例外が生じ、その内部例外処理を実行する場合のパイプラインの動きを示したチャートである。
【図12】EPC不確定状態で内部例外が生じ、その内部例外処理を実行する場合の例外処理システムにおける処理手順を示したフローチャートである。
【図13】EPC不確定状態で内部例外が生じたときに、保留となっている割込み処理を実行する場合のパイプラインの動きを示したチャートである。
【図14】EPC不確定状態で内部例外が生じたときに、保留となっている割込み処理を実行する場合の例外処理システムにおける処理手順を示したフローチャートである。
【図15】割込み処理ルーチンの命令がメモリから届くまで待つ状態でキャッシュミスが発生したときに要求が保留になっていた外部割込み処理ルーチンへ実行を移す場合のパイプラインの動きを示したチャートである。
【図16】割込み処理ルーチンの命令がメモリから届くまで待つ状態でキャッシュミスが発生したときに要求が保留になっていた外部割込み処理ルーチンへ実行を移す場合の例外処理システムの処理手順を示したフローチャートである。

Claims (30)

  1. プロセッサが命令列の実行中に発生した例外的な事象をとらえて現在の命令列の実行を中断して、その事象を処理する別のルーチンを実行する例外処理システムであって、
    実行中の命令に非同期な外部割込みを検出する手段と、
    検出された外部割込みに対応する割込み処理ルーチンの命令フェッチが完了するまでの間、該外部割込みを受理せず前記現在の命令列の実行を継続させる手段と、
    を具備することを特徴とする例外処理システム。
  2. プロセッサが命令列の実行中に発生した例外的な事象をとらえて現在の命令列の実行を中断して、その事象を処理する別のルーチンを実行する例外処理システムであって、
    実行中の命令に非同期な外部割込みを検出する手段と、
    検出された外部割込みに対応する割込み処理ルーチンの命令フェッチを行う手段と、
    該割込み処理ルーチンの命令フェッチが完了したか否かの状態を保持する状態保持手段と、
    該割込み処理ルーチンの命令フェッチが完了する前は該外部割込みを受理せず前記現在の命令列の実行を継続し、該命令フェッチの完了に応答して該外部割込みを受理する手段と、
    を具備することを特徴とする例外処理システム。
  3. 命令列を一時保持する命令キャッシュと、
    該当する割込み処理ルーチンが前記命令キャッシュ中に存在するか否かを判定する判定手段と、
    前記判定手段による判定結果に応じて前記現在の命令列の実行継続範囲を調整する調整手段と、
    をさらに備えることを特徴とする請求項2に記載の例外処理システム。
  4. 該外部割込みを受理した後は前記現在の命令列を破棄することを特徴とする請求項2に記載の例外処理システム。
  5. 該外部割込みを受理した後も前記現在の命令列の実行を継続することを特徴とする請求項2に記載の例外処理システム。
  6. 前記現在の命令列の実行を継続している期間中に該命令に同期した例外事象が発生したことに応答して、該命令列の実行を中断することを特徴とする請求項2に記載の例外処理システム。
  7. 前記現在の命令列の実行を継続している期間中に該命令に同期した例外事象が発生したことに応答して、該割込み処理ルーチンの命令フェッチを中断することを特徴とする請求項2に記載の例外処理システム。
  8. 前記現在の命令列の実行を継続している期間中に該命令に同期した例外事象が発生したことに応答して、該例外事象の処理ルーチンに実行を移すことを特徴とする請求項2に記載の例外処理システム。
  9. 前記現在の命令列の実行を継続している期間中に該命令に同期した例外事象が発生したことに応答して、要求が保留になっていた割込み処理ルーチンに実行を移すことを特徴とする請求項2に記載の例外処理システム。
  10. 前記現在の命令列の実行を継続している期間中に実行中の命令列のキャッシュ・ミスが発生したことに応答して、要求が保留になっていた割込み処理ルーチンに実行を移すことを特徴とする請求項2に記載の例外処理システム。
  11. 例外処理手段を備えるプロセッサが命令列の実行中に発生した例外的な事象をとらえて現在の命令列の実行を中断して、その事象を処理する別のルーチンを実行する例外処理方法であって、
    前記例外処理手段が、実行中の命令に非同期な外部割込みを検出するステップと、
    前記例外処理手段が、検出された外部割込みに対応する割込み処理ルーチンの命令フェッチが完了するまでの間、該外部割込みを受理せず前記現在の命令列の実行を継続させるステップと、
    有することを特徴とする例外処理方法。
  12. 例外処理手段を備えるプロセッサが命令列の実行中に発生した例外的な事象をとらえて現在の命令列の実行を中断して、その事象を処理する別のルーチンを実行する例外処理方法であって、
    前記例外処理手段が、実行中の命令に非同期な外部割込みを検出するステップと、
    前記例外処理手段が、検出された外部割込みに対応する割込み処理ルーチンの命令フェッチを行うステップと、
    該割込み処理ルーチンの命令フェッチが完了したか否かの状態を保持する状態保持ステップと、
    前記例外処理手段が、該割込み処理ルーチンの命令フェッチが完了する前は該外部割込みを受理せず前記現在の命令列の実行を継続し、該命令フェッチの完了に応答して該外部割込みを受理するステップと、
    有することを特徴とする例外処理方法。
  13. 前記例外処理手段が、該当する割込み処理ルーチンが前記プロセッサに付随する命令キャッシュ中に存在するか否かを判定する判定ステップと、
    前記例外処理手段が、前記判定ステップによる判定結果に応じて前記現在の命令列の実行継続範囲を調整する調整ステップと、
    をさらに有することを特徴とする請求項12に記載の例外処理方法。
  14. 前記例外処理手段は、該外部割込みを受理した後は前記現在の命令列を破棄することを特徴とする請求項12に記載の例外処理方法。
  15. 前記例外処理手段が、該外部割込みを受理した後も前記現在の命令列の実行を継続することを特徴とする請求項12に記載の例外処理方法。
  16. 前記例外処理手段が、前記現在の命令列の実行を継続している期間中に該命令に同期した例外事象が発生したことに応答して、該命令列の実行を中断することを特徴とする請求項12に記載の例外処理方法。
  17. 前記例外処理手段が、前記現在の命令列の実行を継続している期間中に該命令に同期した例外事象が発生したことに応答して、該割込み処理ルーチンの命令フェッチを中断することを特徴とする請求項12に記載の例外処理方法。
  18. 前記例外処理手段が、前記現在の命令列の実行を継続している期間中に該命令に同期した例外事象が発生したことに応答して、該例外事象の処理ルーチンに実行を移すことを特徴とする請求項12に記載の例外処理方法。
  19. 前記例外処理手段が、前記現在の命令列の実行を継続している期間中に該命令に同期した例外事象が発生したことに応答して、要求が保留になっていた割込み処理ルーチンに実行を移すことを特徴とする請求項12に記載の例外処理方法。
  20. 前記例外処理手段が、前記現在の命令列の実行を継続している期間中に実行中の命令列のキャッシュ・ミスが発生したことに応答して、要求が保留になっていた割込み処理ルーチンに実行を移すことを特徴とする請求項12に記載の例外処理方法。
  21. システム・インターフェース経由でメイン・メモリにアクセスするとともにキャッシュ・コントローラ経由でキャッシュ・メモリにアクセスするプロセッサであって、
    実行中の命令に非同期な外部割込みを検出する手段と、
    外部割込みの検出に応答して、前記キャッシュ・メモリに対して該当する割込み処理ルーチンのキャッシュ・ヒット判定を行う判定手段と、
    キャッシュ・ヒット判定の結果キャッシュ・ミスしたことに応答して、前記メイン・メモリに対して該当する割込み処理ルーチンを要求するメモリ要求手段と、
    該当する割込み処理ルーチンのキャッシュ・ミスに応答して不確定状態を保持する状態レジスタと、
    を具備することを特徴とするプロセッサ。
  22. 前記状態レジスタは該当する割込みルーチンが前記メイン・メモリから到着したことに応答して通常状態に復帰することを特徴とする請求項21に記載のプロセッサ。
  23. 前記状態レジスタが不確定状態の期間中は外部割込みを受理しないことを特徴とする請求項21に記載のプロセッサ。
  24. 該外部割込みを受理した後は元の命令列を破棄することを特徴とする請求項21に記載のプロセッサ。
  25. 該外部割込みを受理した後も元の命令列の実行を継続することを特徴とする請求項21に記載のプロセッサ。
  26. 前記状態レジスタが不確定状態のときに実行中の命令列に同期した例外事象が発生したことに応答して、該命令列の実行を中断することを特徴とする請求項21に記載のプロセッサ。
  27. 前記状態レジスタが不確定状態のときに実行中の命令列に同期した例外事象が発生したことに応答して、該割込み処理ルーチンのメモリ要求を中断することを特徴とする請求項21に記載のプロセッサ。
  28. 前記状態レジスタが不確定状態のとき実行中の命令列に同期した例外事象が発生したことに応答して、前記状態レジスタを通常状態に戻して、該例外事象の処理ルーチンに実行を移すことを特徴とする請求項21に記載のプロセッサ。
  29. 前記状態レジスタが不確定状態のときに実行中の命令列に同期した例外事象が発生したことに応答して、前記状態レジスタを通常状態に戻して、要求が保留になっていた割込み処理ルーチンに実行を移すことを特徴とする請求項21に記載のプロセッサ。
  30. 前記状態レジスタが不確定状態のときに実行中の命令列のキャッシュ・ミスが発生したことに応答して、前記状態レジスタを通常状態に戻して、要求が保留になっていた割込み処理ルーチンに実行を移すことを特徴とする請求項21に記載のプロセッサ。
JP2000192122A 2000-06-27 2000-06-27 例外処理システム及び方法、並びに、プロセッサ Expired - Fee Related JP4423757B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2000192122A JP4423757B2 (ja) 2000-06-27 2000-06-27 例外処理システム及び方法、並びに、プロセッサ

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2000192122A JP4423757B2 (ja) 2000-06-27 2000-06-27 例外処理システム及び方法、並びに、プロセッサ

Publications (2)

Publication Number Publication Date
JP2002007119A JP2002007119A (ja) 2002-01-11
JP4423757B2 true JP4423757B2 (ja) 2010-03-03

Family

ID=18691296

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2000192122A Expired - Fee Related JP4423757B2 (ja) 2000-06-27 2000-06-27 例外処理システム及び方法、並びに、プロセッサ

Country Status (1)

Country Link
JP (1) JP4423757B2 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006127080A (ja) * 2004-10-28 2006-05-18 Seiko Epson Corp パイプラインプロセッサ
US8291202B2 (en) * 2008-08-08 2012-10-16 Qualcomm Incorporated Apparatus and methods for speculative interrupt vector prefetching

Also Published As

Publication number Publication date
JP2002007119A (ja) 2002-01-11

Similar Documents

Publication Publication Date Title
JP2858140B2 (ja) パイプラインプロセッサ装置および方法
JP3548132B2 (ja) マルチスレッド・プロセッサ内でのパイプライン・ステージのフラッシュ方法および装置
JP4642305B2 (ja) マルチスレッド・プロセッサ内の複数のスレッドに入り、出る方法と装置
US7260706B2 (en) Branch misprediction recovery using a side memory
JP3871336B2 (ja) 複数の未解決命令を追跡するための方法、完了テーブルおよびプロセッサ
US20070186081A1 (en) Supporting out-of-order issue in an execute-ahead processor
JPH0816395A (ja) 格納要求処理方法および取出し/格納バッファ
US7395418B1 (en) Using a transactional execution mechanism to free up processor resources used by a busy-waiting thread
KR100310900B1 (ko) 파이프라인동기를사용하여마이크로프로세서를개선시키는방법
US6760835B1 (en) Instruction branch mispredict streaming
KR19990066807A (ko) 개선된 무순서 지원을 갖는 마이크로프로세서
JP5837033B2 (ja) 効率的な割込み復帰アドレス保存メカニズム
US4763253A (en) Microcomputer with change of flow
US20220188121A1 (en) Pipeline Protection for CPUs With Save and Restore of Intermediate Results
KR100243461B1 (ko) 프로세스 전환 장치 및 프로세스 전환 방법
JP4423757B2 (ja) 例外処理システム及び方法、並びに、プロセッサ
JP3683439B2 (ja) 分岐予測を抑止する情報処理装置および方法
US6704863B1 (en) Low-latency DMA handling in pipelined processors
JP2618187B2 (ja) マルチスカラ・プロセッサ・システムにおいて高速浮動小数点例外処理をする方法及びシステム
US20060101239A1 (en) Program-controlled unit having a prefetch unit
JP2783285B2 (ja) 情報処理装置
JPH0646382B2 (ja) プリフェッチキュー制御方式
JP3547562B2 (ja) マイクロプロセッサ
JPH0769825B2 (ja) 並列処理装置
JPH10283178A (ja) 命令を発行するための方法及びシステム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20070119

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20090519

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20090929

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20091021

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

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20091130

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

Free format text: PAYMENT UNTIL: 20121218

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20121218

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20131218

Year of fee payment: 4

LAPS Cancellation because of no payment of annual fees