JP4063182B2 - プロセッサおよびその割り込み制御方法 - Google Patents

プロセッサおよびその割り込み制御方法 Download PDF

Info

Publication number
JP4063182B2
JP4063182B2 JP2003323783A JP2003323783A JP4063182B2 JP 4063182 B2 JP4063182 B2 JP 4063182B2 JP 2003323783 A JP2003323783 A JP 2003323783A JP 2003323783 A JP2003323783 A JP 2003323783A JP 4063182 B2 JP4063182 B2 JP 4063182B2
Authority
JP
Japan
Prior art keywords
instruction
vector
processing
interrupt
cycle
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
JP2003323783A
Other languages
English (en)
Other versions
JP2005092467A (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.)
Seiko Epson Corp
Original Assignee
Seiko Epson 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 Seiko Epson Corp filed Critical Seiko Epson Corp
Priority to JP2003323783A priority Critical patent/JP4063182B2/ja
Publication of JP2005092467A publication Critical patent/JP2005092467A/ja
Application granted granted Critical
Publication of JP4063182B2 publication Critical patent/JP4063182B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Description

本発明は、割り込み処理を行うプロセッサおよびその割り込み制御方法に関する。
従来、ベクトル命令やマルチサイクル命令といった複数サイクルにわたる命令を実行可能なプロセッサにおいて、割り込み処理が行われている。
このような割り込み処理には、プロセッサ外部から入力される外部割込み処理と、プロセッサ内部において発生する例外処理とがある。
図12は、割り込み処理を実行可能な従来のプロセッサ200の構成を示す図である。
図12において、プロセッサ200は、フェッチ部201と、デコード部202と、ALU(Arithmetic and Logical Unit)部203と、乗算部204と、加減算部205と、ロード部206と、ストア部207と、レジスタファイル部208と、プログラム制御部209と、例外管理部210と、外部割り込み制御部211とを含んで構成される。
フェッチ部201は、不図示のメモリから命令コードをフェッチする。そして、フェッチ部201は、フェッチした命令コードを一時的に記憶した後、デコード部202に出力する。
デコード部202は、フェッチ部201から入力された命令コードをデコードし、デコード結果を、ALU部203、乗算部204、加減算部205、ロード部206およびストア部207に出力する。また、デコード部202は、同様に、デコード結果をプログラム制御部209に出力する。
ALU部203は、デコード部202から入力されたデコード結果が論理演算である場合に、デコード結果に基づいて、レジスタファイル部208から演算するデータを読み出す。そして、ALU部203は、読み出したデータの論理演算を実行し、演算結果をレジスタファイル部208に出力する。
乗算部204は、デコード部202から入力されたデコード結果が乗算である場合に、デコード結果に基づいて、レジスタファイル部208から乗算するデータを読み出す。そして、乗算部204は、読み出したデータの乗算を実行し、乗算結果をレジスタファイル部208に出力する。
加減算部205は、デコード部202から入力されたデコード結果が加算あるいは減算である場合に、デコード結果に基づいて、レジスタファイル部208から加算あるいは減算するデータを読み出す。そして、加減算部205は、読み出したデータの加算あるいは減算を実行し、加減算結果をレジスタファイル部208に出力する。
ロード部206は、デコード部202から入力されたデコード結果がロード命令である場合に、デコード結果に基づいて、ロード命令の対象となるアドレスをメモリに出力する。そして、ロード部206は、そのアドレスのデータがメモリから入力されると、入力されたデータをレジスタファイル部208に出力する。
ストア部207は、デコード部202から入力されたデコード結果がストア命令である場合に、デコード結果に基づいて、ストア命令の対象となるデータをレジスタファイル部208から読み出す。そして、ストア部207は、ストア命令の対象となるアドレスおよびレジスタファイル部208から読み出したデータをメモリに出力する。
レジスタファイル部208は、所定数のスカラレジスタおよびベクトルレジスタを備え、ALU部203、乗算部204、加減算部205、ロード部206およびストア部207の演算対象となるデータを記憶する。また、レジスタファイル部208には、プログラム制御部209から、データの読み出しあるいは書き込みを行うための制御信号が入力される。
プログラム制御部209は、プロセッサ200全体を制御するものであり、プログラムカウンタ209aと、ステータスレジスタ209bと、割り込み処理用プログラムカウンタ209cと、割り込みベクタ209dとを含んで構成される。
プログラムカウンタ(PC)209aは、次に実行するプログラムのアドレスを記憶するレジスタである。
ステータスレジスタ(ST)209bは、プロセッサ200の動作状態に関するデータを記憶している。例えば、ステータスレジスタ209bは、割り込み処理を許可する状態であるか否かを示す割り込み許可フラグ(MIE)や、割り込み処理の発生時に、割り込み処理発生前の割り込み許可フラグを記憶しておく退避用許可フラグ(PMIE)を記憶している。
割り込み処理用プログラムカウンタ(EPC)209cは、割り込み処理が発生した場合に、プログラムカウンタ209aに記憶されているアドレスを退避しておくためのレジスタである。
割り込みベクタ209dは、割り込み処理の種類に応じた分岐先のプログラムのアドレスをテーブル形式で記憶している。
このような構成によって、プログラム制御部209は、デコード部202から入力されるデコード結果に基づいて、レジスタファイル部208におけるデータの読み出しあるいは書き込みを制御したり、次に実行するプログラムが記憶されたアドレスをメモリに出力したりする。
また、プログラム制御部209は、プロセッサ200の演算内容を示す信号を例外管理部210に出力し、例外管理部210から例外処理であることを示す信号が入力された場合、割り込み処理を実行する。
さらに、プログラム制御部209は、プロセッサの動作状態を示す信号を外部割り込み制御部211に出力する。また、プログラム制御部209は、外部割り込み制御部211から割り込み処理の要因と、割り込みレベルとが入力された場合、外部割り込みの実行が可能な動作状態であれば、割り込み処理を実行する。
例外管理部210は、プログラム制御部209から入力される演算内容を示す信号に基づいて、その演算において、アドレス例外(アドレスの参照範囲の違反)、予約命令例外(定義されていない命令の入力)および零除算等の内部例外が発生しているか否かを検出する。そして、例外管理部210は、内部例外が発生している場合、発生している内部例外に対応する例外処理を示す信号をプログラム制御部209に出力する。
外部割り込み制御部211は、プロセッサ200に接続された各種デバイスから入力される外部割り込みの要求信号を受け取る。そして、外部割り込み制御部211は、受け取った外部割り込みの要求信号に基づいて、割り込み処理の要因と、割り込みレベルとをプログラム制御部209に出力する。
以上のような構成において、プロセッサ200は、例外処理あるいは外部割り込みのいずれかの割り込み処理が発生すると、図13に示すように、実行中の命令に関するデータを一旦退避させ、割り込み処理を実行する。具体的には、図13において、通常のプログラムの実行中に割り込み処理が発生すると、プロセッサ200は、退避用許可フラグ(PMIE)に割り込み許可フラグ(MIE)をセットし、割り込み許可フラグには、割り込みの禁止を示す“0”をセットする。また、プロセッサ200は、割り込み処理用プログラムカウンタ209cにプログラムカウンタ209aの値をセットし、プログラムカウンタ209aに割り込み処理の命令を示すアドレスをセットする。
そして、プロセッサ200は、割り込み処理を実行し、その後、退避させていたデータを復帰させ、割り込み処理の発生前に実行していた処理を継続する。即ち、退避用許可フラグの値を割り込み許可フラグに戻し、割り込み処理用プログラムカウンタ209cに退避していたアドレスをプログラムカウンタ209aに戻す。そして、割り込み処理前の動作を再開する。
ここで、ベクトル命令やマルチサイクル命令のように、実行結果が得られるまでに複数サイクルを要する処理を実行している状態で割り込み処理が発生すると、割り込み処理の実行後、割り込み処理の発生前に実行していた処理が適切に継続できない場合があった。
例えば、ベクトル命令の演算結果をスカラレジスタに書き込み、その演算結果を順にストアしていく処理の実行中に割り込み処理が発生したとする。
このとき、割り込み処理が発生しなければ、スカラレジスタに書き込まれた演算結果がサイクル毎にストアされ、適切なベクトルデータが得られることとなる。一方、割り込み処理が発生した場合には、割り込み処理の実行中に、スカラレジスタ内の演算結果が順次変化し、割り込み処理の実行後には、ベクトル命令の最後の演算結果がスカラレジスタに記憶されている状態となる。そして、その演算結果が、ベクトル命令の演算結果としてサイクル毎にストアされていくこととなる。そのため、割り込み処理が発生した場合、割り込み処理の発生後にストアされたデータは全て同一の値(最後の演算結果)となり、適切なベクトルデータが得られない事態が生じていた。
このような問題を解決するため、参考文献「構造化コンピュータ構成 第4版」(ピアソン・エデュケーション、アンドリュー・S・タネンバウム著)に記載された技術が知られている。
本文献においては、割り込み処理の実行をソフトウェアで禁止することにより、上述のような不正な結果が生ずることを防止する技術が開示されている。
アンドリュー・S・タネンバウム著「構造化コンピュータ構成 第4版」ピアソン・エデュケーション
しかしながら、上述の文献に記載された技術においては、割り込み処理において不正な結果が生ずることは防止できる(安全に割り込み処理を実行できる)ものの、割り込み処理の実行をソフトウェアで制御することから、割り込み処理の実行を制御する際の応答速度が低下するという問題が生ずる。
即ち、従来のプロセッサにおいては、高い応答性をもって、安全に割り込み処理を実行することが困難であった。
本発明の課題は、プロセッサにおける割り込み処理を、高い応答性をもって安全に実行することである。
以上の課題を解決するため、本発明は、
ベクトル命令あるいはマルチサイクル命令を処理可能であり、その処理中に割り込み処理を実行可能なプロセッサであって、前記ベクトル命令あるいはマルチサイクル命令の処理中であるか否かを検出する実行検出手段(例えば、図1,図8のベクトル命令実行検出部109あるいは図5,図11のマルチサイクル命令実行検出部113)と、前記実行検出手段によって、前記ベクトル命令あるいはマルチサイクル命令の処理中であることが検出された場合に、該ベクトル命令あるいはマルチサイクル命令の処理が終了するまで割り込み処理の実行を保留させることが可能な割り込み制御手段(例えば、図1,図5,図8あるいは図11のプログラム制御部110)とを含むことを特徴としている。
また、本発明は、
ベクトル命令あるいはマルチサイクル命令を処理可能であり、その処理中に割り込み処理を実行可能なプロセッサにおける割り込み制御方法であって、前記ベクトル命令あるいはマルチサイクル命令の処理中であるか否かを検出する実行検出ステップと、前記実行検出ステップにおいて、前記ベクトル命令あるいはマルチサイクル命令の処理中であることが検出された場合に、該ベクトル命令あるいはマルチサイクル命令の処理が終了するまで割り込み処理の実行を保留させる割り込み制御ステップとを含むことを特徴としている。
これにより、ベクトル命令あるいはマルチサイクル命令の処理中に割り込みが発生した場合、そのベクトル命令あるいはマルチサイクル命令の処理が終了するまで、割り込み処理が保留される。そして、処理中であるベクトル命令あるいはマルチサイクル命令の処理が終了すると、割り込み処理が実行される。
したがって、割り込み処理が行われることにより、ベクトル命令の演算結果が不正な値となる事態を防止することができ、安全に割り込み処理を実行することが可能となる。
また、これにより、プロセッサ内部に実装される実行検出手段(あるいは実行検出ステップ)によって、ベクトル命令あるいはマルチサイクル命令の処理が行われているか否かが検出され、その検出結果に基づいて割り込み処理の実行が制御される。
したがって、ソフトウェアによって割り込み処理の制御を行う場合に比べ、高い応答性をもって処理することが可能となる。
即ち、本発明によれば、プロセッサにおける割り込み処理を、高い応答性をもって安全に実行することが可能となる。
また、処理されている前記ベクトル命令あるいはマルチサイクル命令に引き続く命令が、ベクトル命令あるいはマルチサイクル命令であるか否かを検出する連続実行検出手段(例えば、図8のベクトル命令連続実行検出部109aあるいは図11のマルチサイクル命令連続実行検出部113a)をさらに含み、前記割り込み制御手段は、前記連続実行検出手段によって、処理されている前記ベクトル命令あるいはマルチサイクル命令に引き続く命令が、ベクトル命令あるいはマルチサイクル命令であることが検出された場合に、処理されている前記ベクトル命令あるいはマルチサイクル命令の処理と、それに引き続く命令の処理とが終了するまで割り込み処理の実行を保留させることが可能であることを特徴としている。
また、処理されている前記ベクトル命令あるいはマルチサイクル命令に引き続く命令が、ベクトル命令あるいはマルチサイクル命令であるか否かを検出する連続実行検出ステップをさらに含み、前記割り込み制御ステップにおいては、処理されている前記ベクトル命令あるいはマルチサイクル命令に引き続く命令が、ベクトル命令あるいはマルチサイクル命令であることが検出された場合に、処理されている前記ベクトル命令あるいはマルチサイクル命令の処理と、それに引き続く命令の処理とが終了するまで割り込み処理の実行を保留させることを特徴としている。
これにより、ベクトル命令あるいはマルチサイクル命令の処理中に割り込みが発生した場合、ベクトル命令あるいはマルチサイクル命令の連続実行中の状態でなくなるまで、割り込み処理が保留される。そして、ベクトル命令あるいはマルチサイクル命令の連続実行中の状態でなくなると、割り込み処理が実行される。
したがって、連続して行われるベクトル命令あるいはマルチサイクル命令それぞれが、レジスタを共用する場合にも、より確実に、ベクトル命令の演算結果が不正な値となる事態を防止することができ、安全に割り込み処理を実行することが可能となる。
また、処理されている前記ベクトル命令あるいはマルチサイクル命令に関与するデータと、それに引き続く命令に関与するデータとの依存関係を判定する判定手段(例えば、データの依存関係を確認する機能を有する場合の図1,図8のベクトル命令実行検出部109あるいは図5,図11のマルチサイクル命令実行検出部113)をさらに含み、前記割り込み制御手段は、前記判定手段によって、前記依存関係があると判定された場合、割り込み処理の実行を保留し、前記依存関係がないと判定された場合、割り込み処理を実行することを特徴としている。
また、処理されている前記ベクトル命令あるいはマルチサイクル命令に関与するデータと、それに引き続く命令に関与するデータとの依存関係を判定する判定ステップをさらに含み、前記割り込み制御ステップにおいては、前記依存関係があると判定された場合、割り込み処理の実行を保留し、前記依存関係がないと判定された場合、割り込み処理を実行することを特徴としている。
これにより、割り込み処理が実行されるまでの保留時間が長期化する事態を防止することが可能となる。
また、前記判定手段は、処理されているベクトル命令あるいはマルチサイクル命令のデスティネーションレジスタと、引き続く命令のソースレジスタとの関連性に基づいて、前記依存関係を判定することを特徴としている。
また、前記判定ステップにおいては、処理されているベクトル命令あるいはマルチサイクル命令のデスティネーションレジスタと、引き続く命令のソースレジスタとの関連性に基づいて、前記依存関係を判定することを特徴としている。
これにより、連続するベクトル命令あるいはマルチサイクル命令の具体的な処理内容に応じて、適切に割り込み処理を実行することが可能となる。
なお、例えば、ベクトル命令の実行結果を、スカラレジスタを介して、引き続く命令が使用している関係や、先行する命令のデスティネーションレジスタに対し、レジスタの多重割り当てが行われている関係である場合には、処理されているベクトル命令あるいはマルチサイクル命令のデスティネーションレジスタと、引き続く命令のソースレジスタとが関連性を有すると言える。
以下、図を参照して本発明に係るプロセッサの実施の形態を説明する。
(第1の実施の形態)
初めに、本発明の第1の実施の形態について説明する。
まず、構成を説明する。
図1は、本実施の形態に係るプロセッサ1の構成を示す図である。
図1において、プロセッサ1は、フェッチ部101と、デコード部102と、ALU部103と、乗算部104と、加減算部105と、ロード部106と、ストア部107と、レジスタファイル部108と、ベクトル命令実行検出部109と、プログラム制御部110と、例外管理部111と、外部割り込み制御部112とを含んで構成される。
図1において、プロセッサ1は、図12に示す従来のプロセッサ200に、ベクトル命令実行検出部109が付加された構成である。そのため、ベクトル命令実行検出部109に関連する構成についてのみ説明し、従来と同様の構成部分については、説明を省略する。
ALU部103、乗算部104、加減算部105、ロード部106およびストア部107は、それぞれにおいて実行している命令がベクトル命令であるか否かを示す実行ステータス信号をベクトル命令実行検出部109に出力する。
ベクトル命令実行検出部109は、プロセッサ1内部にハードウェアとして備えられており、ベクトル命令実行検出部109には、命令を実行しているALU部103、乗算部104、加減算部105、ロード部106およびストア部107から実行ステータス信号が入力される。
そして、ベクトル命令実行検出部109は、実行している命令がベクトル命令である旨を示す実行ステータス信号が入力された場合、外部割り込み処理を実行させない旨の指示信号(以下、「割り込み禁止信号」と言う。)をプログラム制御部110に出力する。
なお、デコード部102によってデコードされた命令コードの内容に基づいて、その命令がベクトル命令であるか否かを判定できることから、デコード部102からベクトル命令実行検出部109に実行ステータス信号を入力することも可能である。
プログラム制御部110は、ベクトル命令実行検出部109から割り込み禁止信号が入力されると、実行中のベクトル命令の処理が終了するまで、外部割り込み処理の実行を保留する。そして、プログラム制御部110は、実行中のベクトル命令の処理が終了すると、外部割り込み処理を実行する。
次に、動作を説明する。
プロセッサ1は、主としてプログラム制御部110の制御によって、割り込み処理の動作に対応する状態遷移を行う。
図2は、プロセッサ1の動作を示す状態遷移図である。
図2において、プロセッサ1は、状態S1〜S5を遷移する。
状態S1(Reset)は、割り込み処理としてプロセッサ1のリセットが行われた場合の第1サイクルを実行する状態であり、引き続き状態S2に遷移する。
状態S2(Normal)は、割り込みが発生していない、通常の動作状態である。状態S2において、外部割り込みが発生した場合(MI-Event)、ベクトル命令の実行中でなければ状態S3に遷移し、例外処理等、外部割り込み以外の割り込みが発生すると(NMI-Event)、状態S5に遷移する。また、状態S2において、リセットが行われた場合(IntReset)、状態S1に遷移する。ここで、状態S2において、外部割り込みが発生した場合に、ベクトル命令の処理中であるときには、ベクトル命令の処理が終了するまで状態S2を継続する。
状態S3(MI)は、外部割り込み処理を実行する状態である。状態S3において、外部割り込み処理が終了すると、状態S4に遷移し、リセットが行われた場合、状態S1に遷移する。
状態S4(MI-PostProc)は、外部割り込み処理の実行後、プロセッサ1の動作タイミングを調整する状態である。状態S4において、動作タイミングの調整後、状態S2に遷移し、外部割り込み以外の割り込みが発生すると、状態S5に遷移する。また、状態S4において、リセットが行われた場合、状態S1に遷移する。
状態S5(NMI)は、例外処理等、外部割り込み以外の割り込み処理を実行する状態である。状態S5において、外部割り込み以外の割り込み処理の実行後、状態S2に遷移し、リセットが行われた場合、状態S1に遷移する。
図2に示すように各状態を遷移する結果、プロセッサ1は、割り込み処理に関し、具体的に以下のような動作を行う。
図3は、ベクトル命令の処理中に外部割り込みが発生した場合の動作例を示すタイミングチャートである。
図3においては、クロック信号(CLK)によって規定されるサイクル毎に、命令コード(Inst1〜11)が順次入力される。各命令コードは、フェッチアドレスの演算(Fadr)、フェッチ(F)、デコード(D)および実行(E)の各ステージによって構成される。また、命令コードInst2は、4ワードのデータを読み込むベクトル命令であり、実行ステージは4サイクル(E1〜E4)にわたっている。
図3において、サイクル“1”〜“3”では、プロセッサ1に命令コードInst1〜3が順に入力され、通常の動作を行っている。
そして、サイクル“4”において、外部割り込みが発生すると(IRQ-EN=1)、ベクトル命令である命令コードInst2の処理中であることから、外部割り込み処理を保留し、命令コードInst2の最後の実行ステージが開始されるサイクル“8”まで通常の動作を継続する。
サイクル“8”において、プロセッサ1は、外部割り込み処理Inst8を開始し、外部割り込み処理のフェッチアドレスを演算する。また、サイクル“7”におけるプログラムカウンタ(PC)の値等を含む動作状態は、一旦退避される。
そして、プロセッサ1は、外部割り込み処理に関連する命令コードInst8〜10をサイクル“8”〜“10”で処理し、サイクル“11”から、通常の動作状態に戻る。
以上のように、本実施の形態に係るプロセッサ1は、ベクトル命令の処理中に外部割り込みが発生した場合、図4に示すように、そのベクトル命令の処理が終了するまで、外部割り込み処理を保留する。そして、処理中であるベクトル命令の処理が終了すると、外部割り込み処理を実行する。
したがって、割り込み処理が行われることにより、ベクトル命令の演算結果が不正な値となる事態を防止することができ、安全に割り込み処理を実行することが可能となる。
また、プロセッサ1は、プロセッサ1内部にハードウェアとして実装されるベクトル命令実行検出部109によって、ベクトル命令の処理が行われているか否かを検出し、その検出結果に基づいて割り込み処理の実行を制御する。
したがって、ソフトウェアによって割り込み処理の制御を行う場合に比べ、高い応答性をもって処理することが可能となる。また、プロセッサ1に実行させるプログラムを記述する際に、割り込み処理に関するプログラムの記述を容易なものとすることができると共に、割り込み処理に関するプログラムミスを防止することが可能となる。
なお、プロセッサ1においてマルチサイクル命令を処理する場合にも、上述のような、ベクトル命令における場合と同様の割り込み処理の制御を行うことが可能である。
即ち、図5に示すように、プロセッサ1において、図1のベクトル命令実行検出部109に対応するマルチサイクル命令実行検出部113を備え、ALU部103等、演算を行う各機能部から、マルチサイクル命令が実行されているか否かを示す実行ステータス信号を入力させる。
そして、ALU部103等の各機能部から、実行している命令がマルチサイクル命令である旨の実行ステータス信号が入力された場合、マルチサイクル命令実行検出部113が、割り込み禁止信号をプログラム制御部110に出力する。
このような構成とすることにより、プロセッサ2は、割り込み処理に関し、具体的には、以下のような動作を行う。
図6は、マルチサイクル命令の処理中に割り込み処理が発生した場合の動作例を示すタイミングチャートである。
図6においては、クロック信号(CLK)によって規定されるサイクル毎に、
MP %SR2,%SR0,%SR1;
ADD %SR4,%SR3,%SR2;
SUB %SR5,%SR3,%SR2;
ADD %SR7,%SR6,%SR2;
SUB %SR8,%SR6,%SR2;
の順で命令が入力されている。
(ただし、第1行は、スカラレジスタSR0およびスカラレジスタSR1の値を乗算し、スカラレジスタSR2に格納する命令であり、第2行は、スカラレジスタSR3の値にスカラレジスタSR2の値を加算し、スカラレジスタSR4に格納する命令である。また、第3行は、スカラレジスタSR3の値からスカラレジスタSR2の値を減算し、スカラレジスタSR5に格納する命令であり、第4行は、スカラレジスタSR6の値にスカラレジスタSR2の値を加算し、スカラレジスタSR7に格納する命令である。さらに、第5行は、スカラレジスタSR6の値からスカラレジスタSR2の値を減算し、スカラレジスタSR8に格納する命令である。)
そして、これらの命令において、第1行は、実行ステージが4サイクルわたるマルチサイクル命令であり、そのデスティネーションレジスタSR2が、第2行から第4行の命令において、ソースレジスタとして多重割り当てされている。
ここで、サイクル“4”において、外部割り込み処理が発生すると、マルチサイクル命令(第1行の命令)の処理中であることから、外部割り込み処理を保留し、マルチサイクル命令の最後の実行ステージが開始されるサイクル“7”まで通常の動作を継続する。
そして、サイクル“7”において、プロセッサ2は、外部割り込み処理を開始する。
そのため、第2行から第4行の命令において使用するスカラレジスタSR2の値は、第1行の命令の実行結果が反映されていない状態であり、第5行の命令において使用するスカラレジスタSR2の値は、第1行の命令の実行結果が反映されている状態である。即ち、スカラレジスタSR2に関する多重割り当てが適切に処理されている。
一方、従来のように、マルチサイクル命令の処理中であるか否かに関わらず、外部割り込み処理を実行する場合、図7に示すように、第2行から第4行の命令において使用するスカラレジスタSR2の値も、第1行の命令の実行結果が反映された状態となってしまい、スカラレジスタSR2に関する多重割り当てが適切に処理されないこととなる。
したがって、上述のベクトル命令の場合と同様に、本発明により、マルチサイクル命令の処理中に外部割り込み処理が行われることによって生ずる不具合を解消することができる。
(第2の実施の形態)
次に、本発明の第2の実施の形態について説明する。
図8は、本実施の形態に係るプロセッサ2の構成を示す図である。
図8において、プロセッサ2は、第1の実施の形態におけるプロセッサ1において、ベクトル命令実行検出部109にベクトル命令連続実行検出部109aが付加された構成である。そのため、ベクトル命令連続実行検出部109aに関連する構成についてのみ説明し、プロセッサ1と同様の構成部分については、説明を省略する。
デコード部102は、現在実行中である命令コードに引き続く命令コード(以下、「後続命令コード」と言う。)のデコード結果に基づいて、その命令コードがベクトル命令であるか否かを判定する。そして、デコード部102は、現在実行中である命令コードに引き続く命令(以下、「後続命令」と言う。)がベクトル命令であるか否かを示す連続実行ステータス信号をベクトル命令連続実行検出部109aに出力する。
ベクトル命令実行検出部109は、ベクトル命令連続実行検出部109aをさらに含んで構成される。
ベクトル命令連続実行検出部109aは、デコード部102から入力される連続実行ステータス信号に基づいて、後続命令がベクトル命令であるか否かを判定する。
そして、ベクトル命令連続実行検出部109aによって、後続命令がベクトル命令であると判定された場合、ベクトル命令実行検出部109は、現在実行中である命令コードがベクトル命令であるときには、後続命令の処理が終了するまで外部割り込み処理を実行させない旨の指示信号(以下、「連続割り込み禁止信号」と言う。)をプログラム制御部110に出力する。
プログラム制御部110は、ベクトル命令実行検出部109から連続割り込み禁止信号が入力されると、実行中のベクトル命令の処理および後続命令の処理が終了するまで、外部割り込み処理の実行を保留する。そして、プログラム制御部110は、後続命令に引き続く命令がベクトル命令である場合、上述の処理を同様に行うことにより、外部割り込み処理の実行をそのまま保留し続け、後続命令に引き続く命令がベクトル命令でない場合に、外部割り込み処理を実行する。
次に、動作を説明する。
プロセッサ2の動作を示す状態遷移図は、図2に示すプロセッサ1の状態遷移図において、状態S2の遷移条件が異なるものである。
即ち、図2において、状態S2(Normal)は、割り込みが発生していない、通常の動作状態である。状態S2において、外部割り込みが発生した場合、ベクトル命令の処理中であり、かつ、後続命令がベクトル命令であるとき(ベクトル命令の連続実行中)以外には状態S3に遷移し、例外処理等、外部割り込み以外の割り込みが発生すると、状態S5に遷移する。また、状態S2において、リセットが行われた場合、状態S1に遷移する。ここで、状態S2において、外部割り込みが発生した場合に、ベクトル命令の連続実行中であるときには、ベクトル命令の処理中であり、かつ、後続命令がベクトル命令である状態でなくなるまで状態S2を継続する。
そして、このような状態遷移を行う結果、プロセッサ2は、割り込み処理に関し、具体的には、以下のような動作を行う。
図9は、連続するベクトル命令の処理中に割り込み処理が発生した場合の動作例を示すタイミングチャートである。
図9においては、クロック信号(CLK)によって規定されるサイクル毎に、命令コード(Inst1〜12)が順次入力される。各命令コードは、フェッチアドレスの演算(Fadr)、フェッチ(F)、デコード(D)および実行(E)の各ステージによって構成される。また、命令コードInst2は、2ワードのデータを読み込むベクトル命令であり、実行ステージは2サイクル(E1〜E2)にわたっている。さらに、命令コードInst3は、4ワードのデータを加算するベクトル命令であり、実行ステージは4サイクル(E1〜E4)にわたっている。
図9において、サイクル“1”では、プロセッサ2に命令コードInst1が入力され、通常の動作を行っている。
そして、サイクル“2”において、ベクトル命令である命令コードInst2が入力され、続いて、サイクル“3”において、同様にベクトル命令である命令コードInst3が入力される。
すると、命令コードInst2については、サイクル“6”まで処理が継続し、命令コードInst3については、サイクル“9”まで処理が継続される。
ここで、サイクル“4”において、外部割り込み処理が発生すると、ベクトル命令である命令コードInst2の処理中であり、後続命令もベクトル命令である命令コードInst3であることから、外部割り込み処理を保留し、命令コードInst3の最後の実行ステージが開始されるサイクル“9”まで通常の動作を継続する。
サイクル“9”において、プロセッサ2は、外部割り込み処理Inst9を開始し、外部割り込み処理のフェッチアドレスを演算する。また、サイクル“8”におけるプログラムカウンタ(PC)の値等を含む動作状態は、一旦退避される。
そして、プロセッサ2は、外部割り込み処理に関連する命令コードInst9〜11をサイクル“9”〜“11”で処理し、サイクル“12”から、通常の動作状態に戻る。
以上のように、本実施の形態に係るプロセッサ2は、ベクトル命令の処理中に外部割り込みが発生した場合、図10に示すように、ベクトル命令の連続実行中の状態でなくなるまで、外部割り込み処理を保留する。そして、ベクトル命令の連続実行中の状態でなくなると、外部割り込み処理を実行する。
したがって、連続して行われるベクトル命令それぞれが、レジスタを共用する場合にも、より確実に、ベクトル命令の演算結果が不正な値となる事態を防止することができ、安全に割り込み処理を実行することが可能となる。
なお、プロセッサ2においてマルチサイクル命令を処理する場合にも、上述のような、ベクトル命令における場合と同様の割り込み処理の制御を行うことが可能である。
即ち、図11に示すように、プロセッサ2において、図8のベクトル命令実行検出部109およびベクトル命令連続実行検出部109aに対応するマルチサイクル命令実行検出部113およびマルチサイクル命令連続実行検出部113aを備え、デコード部102から、現在実行中である命令コードに引き続く命令コードがマルチサイクル命令であるか否かを示す連続実行ステータス信号を入力させる。
そして、デコード部102から、現在実行中である命令コードに引き続く命令コードがマルチサイクル命令である旨の実行ステータス信号が入力された場合、現在実行中である命令コードがマルチサイクル命令であるときには、マルチサイクル命令実行検出部113が、連続割り込み禁止信号をプログラム制御部110に出力する。
このような構成とすることにより、上述のベクトル命令の場合と同様に、マルチサイクル命令の連続実行中に外部割り込み処理が行われることによって生ずる不具合を解消することができる。
ここで、第1および第2の実施の形態においては、ベクトル命令またはマルチサイクル命令が実行されている場合もしくは連続して実行されている場合には、外部割り込み処理を常に保留することとして説明したが、この場合、外部割り込み処理が実行されるまでの保留時間が長期化する事態も想定される。
そこで、このような事態が発生することをより少なくするため、実行されているベクトル命令あるいはマルチサイクル命令と、引き続く命令とに関与するデータの依存関係を確認した上で、依存関係がなければ、ベクトル命令あるいはマルチサイクル命令の実行中に外部割り込み処理を開始することが可能である。このような依存関係の確認は、処理される各命令コードのデコード結果が入力されるベクトル命令実行検出部109あるいはマルチサイクル命令実行検出部113において行うことが可能である。
実行されているベクトル命令と、引き続く命令とに関与するデータについて、依存関係の有無を判定するための条件は、「先行する命令のデスティネーションレジスタがスカラレジスタであり、かつ、引き続く命令が、そのデスティネーションレジスタをソースレジスタとして使用しているか否か」である。例えば、
ADD[8] %SR0,%VR0,VR1;
ST[8] %SR0,{%SR6,%SR7};
(ただし、第1行は、ベクトルレジスタVR0の値にベクトルレジスタVR1の値を加算し、スカラレジスタSR0に順次格納する命令であり、第2行は、スカラレジスタSR0の値をスカラレジスタSR6,SR7によって示されるメモリアドレスにストアする命令である。)
という命令列の場合、第1行と第2行の間に割り込み処理が行われると、デスティネーションレジスタであるスカラレジスタSR0の値が割り込み処理中に順次変化してしまい、第2行の処理結果が不正なものとなる。
なお、第1行および第2行のスカラレジスタSR0に代えて、ベクトルレジスタVR2を使用した場合、第2行で用いるベクトルレジスタVR2の値が正しい値に保たれ、第2行の処理結果は不正なものとはならない。
また、実行されているマルチサイクル命令と、引き続く命令とに関与するデータについて、依存関係の有無を判定するための条件は、「先行するマルチサイクル命令のデスティネーションレジスタがスカラレジスタであり、かつ、先行するマルチサイクル命令の結果がデスティネーションレジスタに書き込まれる前に、引き続く命令が、そのデスティネーションレジスタをソースレジスタとして使用しているか否か」である。即ち、マルチサイクル命令においてスカラレジスタの多重割り当てを行っている場合等である。例えば、
LD %SR0,{%SR6,%SR7};
ADD %SR2,%SR0,SR1;
ADD %SR3,%SR0,SR1;
(ただし、第1行は、スカラレジスタSR0に外部メモリのアドレス{%SR0,%SR7}から読み込んだデータを格納する命令であり、第2行は、スカラレジスタSR0の値にスカラレジスタSR1の値を加算し、スカラレジスタSR2に格納する命令である。また、第3行は、スカラレジスタSR0の値にスカラレジスタSR1の値を加算し、スカラレジスタSR3に格納する命令である。)
という命令列の場合、第1行は外部メモリからデータを読み込むマルチサイクル命令であり、その結果は、第3行の処理サイクルで反映されることとなる。つまり、第2行におけるスカラレジスタSR0と第3行におけるスカラレジスタSR0とは、異なる“変数”として扱われている。そのため、第1行と第2行との間に割り込み処理が行われると、第2行におけるスカラレジスタSR0と第3行におけるスカラレジスタSR0とは同一の“変数”となってしまい、第2行の処理結果が不正なものとなる。
より具体的には、a,b,c,d,x,yを変数とすると、第1行は、c=d(スカラレジスタSR0に{%SR6,%SR7}のメモリアドレスの値を代入する)という処理であり、第2行は、x=a+b(第1行の処理結果が反映される前のスカラレジスタSR0の値とスカラレジスタSR1の値とを加算し、スカラレジスタSR2に代入する)という処理である。また、第3行は、y=c+b(第1行の処理結果が反映された後のスカラレジスタSR0の値とスカラレジスタSR1の値とを加算し、スカラレジスタSR2に代入する)という処理である。したがって、第1行と第2行との間に割り込み処理が行われると、本来異なるべき変数a,cが等しくなってしまい、SR2,3に格納される値(x,y)も、本来異なる値となるところが等しくなってしまう。
したがって、上述のような依存関係を確認した上で、命令に関与するデータに依存関係がなければ、ベクトル命令あるいはマルチサイクル命令の実行中であっても、外部割り込み処理を実行させることが可能である。
プロセッサ1の構成を示す図である。 プロセッサ1の動作を示す状態遷移図である。 ベクトル命令の処理中に外部割り込みが発生した場合の動作例を示すタイミングチャートである。 ベクトル命令の処理中に外部割り込みが発生した場合のプロセッサ1の動作を示す模式図である。 マルチサイクル命令に対応する場合のプロセッサ1の構成を示す図である。 マルチサイクル命令の処理中に割り込み処理が発生した場合の本発明の動作例を示すタイミングチャートである。 マルチサイクル命令の処理中に割り込み処理が発生した場合の従来の動作例を示すタイミングチャートである。 プロセッサ2の構成を示す図である。 連続するベクトル命令の処理中に割り込み処理が発生した場合の本発明の動作例を示すタイミングチャートである。 連続するベクトル命令の処理中に割り込み処理が発生した場合のプロセッサ2の動作を示す模式図である。 マルチサイクル命令に対応する場合のプロセッサ2の構成を示す図である。 割り込み処理を実行可能な従来のプロセッサ200の構成を示す図である。 ベクトル命令の処理中に割り込みが発生した場合のプロセッサ200の動作を示す模式図である。
符号の説明
1,2,200 プロセッサ、101,201 フェッチ部、102,202 デコード部、103,203 ALU部、104,204 乗算部、105,205 加減算部、106,206 ロード部、107,207 ストア部、108,208 レジスタファイル部、109 ベクトル命令実行検出部、109a ベクトル命令連続実行検出部、110,209 プログラム制御部、111,210 例外管理部、112,211 外部割り込み制御部、113 マルチサイクル命令実行検出部、113a マルチサイクル命令連続実行検出部、209a プログラムカウンタ、209b ステータスレジスタ、209c 割り込み処理用プログラムカウンタ、209d 割り込みベクタ

Claims (2)

  1. ベクトル命令あるいはマルチサイクル命令を処理可能であり、その処理中に割り込み処理を実行可能なプロセッサであって、
    前記ベクトル命令あるいはマルチサイクル命令の処理中であるか否かを検出する実行検出手段と、
    前記実行検出手段によって、前記ベクトル命令あるいはマルチサイクル命令の処理中であることが検出された場合に、該ベクトル命令あるいはマルチサイクル命令の処理が終了するまで割り込み処理の実行を保留させる割り込み制御手段と、
    処理されている前記ベクトル命令あるいはマルチサイクル命令に引き続く命令が、ベクトル命令あるいはマルチサイクル命令であるか否かを検出する連続実行検出手段とを備え、
    前記割り込み制御手段は、前記連続実行検出手段によって、処理されている前記ベクトル命令あるいはマルチサイクル命令に引き続く命令が、ベクトル命令あるいはマルチサイクル命令であることが検出された場合に、処理されている前記ベクトル命令あるいはマルチサイクル命令の処理と、それに引き続く命令の処理とが終了するまで割り込み処理の実行を保留させることを特徴とするプロセッサ。
  2. ベクトル命令あるいはマルチサイクル命令を処理可能であり、その処理中に割り込み処理を実行可能なプロセッサにおける割り込み制御方法であって、
    前記ベクトル命令あるいはマルチサイクル命令の処理中であるか否かを検出する実行検出ステップと、
    前記実行検出ステップにおいて、前記ベクトル命令あるいはマルチサイクル命令の処理中であることが検出された場合に、該ベクトル命令あるいはマルチサイクル命令の処理が終了するまで割り込み処理の実行を保留させる割り込み制御ステップと、
    処理されている前記ベクトル命令あるいはマルチサイクル命令に引き続く命令が、ベクトル命令あるいはマルチサイクル命令であるか否かを検出する連続実行検出ステップとを備え、
    前記割り込み制御ステップにおいては、処理されている前記ベクトル命令あるいはマルチサイクル命令に引き続く命令が、ベクトル命令あるいはマルチサイクル命令であることが検出された場合に、処理されている前記ベクトル命令あるいはマルチサイクル命令の処理と、それに引き続く命令の処理とが終了するまで割り込み処理の実行を保留させることを特徴とする割り込み制御方法。
JP2003323783A 2003-09-16 2003-09-16 プロセッサおよびその割り込み制御方法 Expired - Fee Related JP4063182B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2003323783A JP4063182B2 (ja) 2003-09-16 2003-09-16 プロセッサおよびその割り込み制御方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2003323783A JP4063182B2 (ja) 2003-09-16 2003-09-16 プロセッサおよびその割り込み制御方法

Publications (2)

Publication Number Publication Date
JP2005092467A JP2005092467A (ja) 2005-04-07
JP4063182B2 true JP4063182B2 (ja) 2008-03-19

Family

ID=34454723

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2003323783A Expired - Fee Related JP4063182B2 (ja) 2003-09-16 2003-09-16 プロセッサおよびその割り込み制御方法

Country Status (1)

Country Link
JP (1) JP4063182B2 (ja)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009205473A (ja) 2008-02-28 2009-09-10 Nec Corp 処理状態管理装置、処理状態管理方法およびプログラム
WO2012120573A1 (ja) 2011-03-04 2012-09-13 日本電気株式会社 デッドロック回避方法、デッドロック回避機構
CN114968365B (zh) * 2022-07-27 2022-10-28 广州智慧城市发展研究院 适配器寄存器单元及包含其的主机适配器电路

Also Published As

Publication number Publication date
JP2005092467A (ja) 2005-04-07

Similar Documents

Publication Publication Date Title
EP0111776B1 (en) Interrupt processor
US5596733A (en) System for exception recovery using a conditional substitution instruction which inserts a replacement result in the destination of the excepting instruction
EP0269980B1 (en) Data processor for parallelly executing conflicting instructions
JP3881763B2 (ja) データ処理装置
JP5611756B2 (ja) プログラム・フロー制御
JPH04275628A (ja) 演算処理装置
JPH06242948A (ja) パイプライン処理計算機
JP4063182B2 (ja) プロセッサおよびその割り込み制御方法
US5634136A (en) Data processor and method of controlling the same
US6990569B2 (en) Handling problematic events in a data processing apparatus
US6851044B1 (en) System and method for eliminating write backs with buffer for exception processing
TWI756212B (zh) 處理向量指令
EP0573071A2 (en) A microprocessor
JP2721610B2 (ja) プログラマブルコントローラ
JP2503223B2 (ja) 先行制御方式
JP2021144426A (ja) プロセッサ及びエラー検出方法
JP2721611B2 (ja) プログラマブルコントローラ
JP3748191B2 (ja) 計算機とその制御方法
JP4702004B2 (ja) マイクロコンピュータ
JP2005135089A (ja) プロセッサ
JP2000305782A (ja) 演算装置
JPH0269825A (ja) パイプライン制御方式
JPH04247523A (ja) 例外処理装置および例外処理方法
JPS63214856A (ja) デ−タ処理装置のデ−タ保護制御方式
JPH02206836A (ja) データ処理装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20060327

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20070403

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20070803

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20070911

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20071108

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20071224

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

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20110111

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20120111

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20120111

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20130111

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20130111

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20140111

Year of fee payment: 6

LAPS Cancellation because of no payment of annual fees