JP3439033B2 - 割り込み制御装置及びプロセッサ - Google Patents

割り込み制御装置及びプロセッサ

Info

Publication number
JP3439033B2
JP3439033B2 JP17777396A JP17777396A JP3439033B2 JP 3439033 B2 JP3439033 B2 JP 3439033B2 JP 17777396 A JP17777396 A JP 17777396A JP 17777396 A JP17777396 A JP 17777396A JP 3439033 B2 JP3439033 B2 JP 3439033B2
Authority
JP
Japan
Prior art keywords
instruction
address
interrupt
branch
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
JP17777396A
Other languages
English (en)
Other versions
JPH1021074A (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.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
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 Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP17777396A priority Critical patent/JP3439033B2/ja
Priority to TW086108589A priority patent/TW333628B/zh
Priority to KR1019970031357A priority patent/KR100291602B1/ko
Priority to US08/888,789 priority patent/US5815696A/en
Publication of JPH1021074A publication Critical patent/JPH1021074A/ja
Application granted granted Critical
Publication of JP3439033B2 publication Critical patent/JP3439033B2/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/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • G06F9/322Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
    • G06F9/327Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address for interrupts
    • 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/22Microcontrol or microprogram arrangements
    • G06F9/26Address formation of the next micro-instruction ; Microprogram storage or retrieval arrangements
    • G06F9/262Arrangements for next microinstruction selection
    • G06F9/268Microinstruction selection not based on processing results, e.g. interrupt, patch, first cycle store, diagnostic programs
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/3005Arrangements for executing specific machine instructions to perform operations for flow control
    • G06F9/30058Conditional branch instructions
    • 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/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/30149Instruction analysis, e.g. decoding, instruction word fields of variable length instructions
    • 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/3802Instruction prefetching
    • G06F9/3804Instruction prefetching for branches, e.g. hedging, branch folding

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、遅延スロットを有
する分岐命令を実行するパイプライン方式の演算処理装
置において、割り込みが発生した際の制御方式及び当該
方式を用いたプロセッサ、計算機システムに関する。
【0002】
【従来の技術】演算処理装置の処理速度を向上させる方
法として、処理のパイプライン化がある。以下に、演算
処理装置のパイプライン化について図面を参照して説明
する。
【0003】図28は演算処理装置が実行するプログラ
ムの一例を示す図、図29はパイプライン方式が採用さ
れていない演算処理装置が図28に示すプログラムを実
行した場合のパイプラインの流れを示す図、図30はパ
イプライン方式が採用されている演算処理装置が図28
に示すプログラムを実行した場合のパイプラインの流れ
を示す図である。
【0004】尚、通常、演算処理装置は、図29及び図
30に示すように、パイプライン方式が採用されている
か否かにかかわらず、各命令を、命令を読み出すFステ
ージ、読み出した命令をデコードしてオペランドを読み
出すRステージ、演算を実行するEステージ、そして、
演算結果を書き込むWステージの4ステージに分けて実
行する。そして、各ステージの実行に1クロック相当の
時間を要する。したがって、1つの命令を実行するには
4クロック相当の時間が必要となる。
【0005】パイプライン方式が採用されていない演算
処理装置では、図29に示すように、ある命令の全ステ
ージの実行が終了した後に、次の命令を実行する。した
がって、プログラムがn個の命令で構成されている場
合、当該プログラムの処理には、4nクロック相当の時
間が必要である。これに対し、パイプライン方式が採用
されている演算処理装置では、図30に示すように、あ
る命令のFステージの実行が終了した後に、当該命令の
Rステージの実行開始と同時に次の命令の実行を開始す
る。したがって、プログラムがn個の命令で構成されて
いる場合、当該プログラムの処理は、n+3クロック相
当の時間で済む。このように、パイプライン方式の演算
処理装置では、複数の命令をオーバーラップして実行す
るので、プログラムの処理速度を向上させることができ
る。
【0006】ところで、パイプライン方式の演算処理装
置では、プログラム中に分岐命令があると、プログラム
処理性能が低下するという問題がある。以下に、この問
題を図面を参照して説明する。図31は分岐命令を含ん
だプログラムの一例を示す図である。ここで、JMPは
分岐を示すコマンドである。命令Qは、命令X、Yから
なるルーチンL1に分岐すべき旨を命令している。
【0007】図32はパイプライン方式が採用されてい
る演算処理装置が図31に示すプログラムを実行した場
合のパイプラインの流れを示す図である。通常、演算処
理装置は、命令をデコードして、すなわちRステージを
実行して、初めて当該命令が分岐命令であるか否かを認
識することができる。云い換えれば、Rステージになら
ないと、当該命令が分岐命令かどうかを判断することが
できない。このため、パイプライン方式の演算処理装置
では、図32に示すように、命令Qの次には、命令Qが
指定する分岐先L1の命令Xが実行されるべきであるに
もかかわらず、命令Rが実行されてしまう。そして、命
令QのRステージが実行されて当該命令が分岐命令であ
ることが判明した時点で、命令Rの実行が中止される。
このように、パイプライン方式の演算処理装置では、分
岐命令の次の命令が誤って実行されてしまうために、無
駄なサイクルが発生してプログラム処理性能が低下す
る。
【0008】上記問題を解決する方法として遅延分岐が
ある。遅延分岐とは、分岐が発生したときに、分岐命令
の後続命令をいくつか実行してから、分岐先の命令を実
行する方法である。一般に、分岐命令の次に実行される
後続命令を遅延スロット中の命令と称する。以下に、遅
延分岐について図面を参照して説明する。図33は遅延
スロットを有する分岐命令を含んだプログラムの一例を
示す図、図34は遅延分岐に対応したパイプライン方式
の演算処理装置が図31に示すプログラムを実行した場
合のパイプラインの流れを示す図である。尚、ここで
は、遅延スロットに含まれる命令が1つの場合について
説明する。
【0009】遅延分岐に対応したパイプライン方式の演
算処理装置では、図34に示すように、命令QのRステ
ージが実行されて当該命令が分岐命令であることが判明
したにもかかわらず、分岐命令の後続命令である命令P
の実行を中止せずに行っている。そして、命令Pの次
に、命令Qが指定する分岐先であるルーチンL1の命令
Xを実行している。このように、遅延分岐に対応したパ
イプライン方式の演算処理装置では、分岐先の命令を実
行する際に、実行中である分岐命令の後続命令を中止し
ないので、無駄なサイクルが発生しない。
【0010】しかしながら、遅延分岐に対応したパイプ
ライン方式の演算処理装置では、遅延スロットに含まれ
る命令の実行中に割り込みが発生した場合、割り込み処
理プログラムからの戻り方に工夫が必要である。すなわ
ち、通常の演算処理装置で用いられているような、割り
込みが発生した命令のアドレス値のみを退避する方法で
は、図34において、遅延スロット中の命令Pで割り込
みが発生した場合、命令Pのアドレスのみが退避される
ことになる。この場合、命令Qで指定された分岐先L1
の命令Xのアドレスが退避されないので、割り込み処理
プログラムから戻ってきた後、命令P、命令X、命令Y
の順番で実行すべきところを、命令P、命令R、命令S
の順序で実行してしまう。
【0011】上記問題を解決する方式として、特開平5
−143363号記載の割り込み処理方式がある。当該
方式では、割り込み処理プログラムからの戻り先のアド
レス保持する第1のアドレス保持手段と、割り込み処理
プログラムからの戻り先アドレスの命令の次に実行する
命令のアドレスを保持する第2のアドレス保持手段とを
設け、割り込み処理プログラムから戻るときには第1の
アドレス保持手段に保持されているアドレスへ分岐し、
当該命令の実行後、第2のアドレス保持手段に保持され
ているアドレスへ分岐するようにしたものである。
【0012】このようにすることで、遅延スロット中の
命令が一つの場合、遅延スロット中の命令で割り込みが
発生したときでも、割り込み処理プログラムから復帰
後、適正な順番で命令を実行することができるようにし
ている。
【0013】
【発明が解決しようとする課題】ところで、特開平5−
143363号記載の方式では、演算処理装置として、
命令長が一定であるRISC(Reduced Instruction Se
t Computer)を用いることを前提としている。すなわ
ち、遅延スロット中の命令以外の命令で割り込みが発生
した場合、命令長が一定であるということを利用して、
第1のアドレス保持手段に退避させた、割り込みが発生
した命令のアドレスに、所定の命令長を加算することに
より、第2のアドレス保持手段に退避させるべきアドレ
スを算出している。
【0014】しかしながら、命令長が一定でないCIS
C(Complex Instruction Set Computer)では、命令を
読み出すFステージが実行されて初めて当該命令の命令
長が判別される。このため、遅延スロット中の命令以外
の命令で割り込みが発生した場合、割り込みが当該命令
のFステージ実行完了前に発生したときには、当該命令
の命令長が判別していないことがある。この場合、上記
特開平5−143363号記載の方式では、第2のアド
レス保持手段に退避させるべきアドレスを適正に算出で
きないという問題がある。
【0015】特に、複数の処理を同時に実行する次世代
の演算処理装置の方式として注目されているVLIW
(Very Long Instruction Word)では、命令長は一定で
あるが、同時に実行させたい複数の処理を1つの命令に
結合するため、命令の冗長性が悪い。このため、命令を
圧縮してメモリに格納するのが一般的である。しかしな
がら、命令を圧縮した場合、圧縮後の命令の命令長が一
定でなくなることがあるので、上記特開平5−1433
63号記載の方式では、VLIWに適用した場合にも、
第2のアドレス保持手段に退避させるべきアドレスを適
正に算出できないことがあるという問題がある。
【0016】本発明は、上記事情に基づいてなされたも
のであり、命令長が一定でない場合にも、割り込みを正
確に処理することができる割り込み処理方式及び当該方
式を用いたプロセッサ、計算機システムを提供すること
を目的とする。
【0017】
【課題を解決するための手段】上記課題を解決するため
に、本発明の割り込み制御方式は、少なくとも1つの命
令を遅延スロット中に含む分岐命令を実行するパイプラ
イン方式の演算処理装置において、記憶装置に可変長で
格納された当該分岐命令を含む複数の命令を順次読み出
して処理する際に用いる割り込み制御方式であって、割
り込みが発生した場合に、当該割り込みが発生した命令
から、当該命令の前記遅延スロットに含まれる命令の数
だけ後に実行すべき命令までの各アドレスを格納するア
ドレス格納手段と、前記割り込み処理が完了した後に、
前記アドレス格納手段に格納された各アドレスを、前記
割り込みが発生した命令のアドレスから順次読み出すア
ドレス読出し手段と、前記アドレス読み出し手段によっ
て最初に読み出したアドレスへ分岐して、命令を実行す
る第一の命令実行手段と、前記アドレス読み出し手段に
よって2番目以降に読み出した各アドレスについて、当
該アドレスが前記分岐命令によって指定された命令のア
ドレスであるときは、当該アドレスへ分岐して命令を実
行し、前記分岐命令によって指定された命令以外の命令
のアドレスであるときは、現在実行されている命令の後
続命令を実行する第二の命令実行手段と、を具備するこ
とを特徴とする。
【0018】ここで、実行している命令のアドレスに当
該命令の命令長を加算して、次に読み出して実行すべき
命令のアドレスを生成するアドレス生成手段を備えてい
る場合、前記第二の命令実行手段は、前記割り込みが発
生した時点で、当該割り込みが発生した命令の命令長が
判明している場合には、前記アドレス読み出し手段で2
番目に読み出したアドレスが前記分岐命令によって指定
された命令以外の命令のアドレスであっても、当該アド
レスへ分岐して命令を実行するようにしてもよい。
【0019】また、本発明のプロセッサは、命令格納用
メモリに可変長で格納された、分岐命令を含む複数の命
令を順次読み出して実行するパイプライン方式のプロセ
ッサであって、前記命令格納用メモリから命令を順次読
み出すと共に、前記読み出した命令が分岐命令である場
合、当該分岐命令の遅延スロットに含まれる後続命令を
読み出した後に、当該分岐命令によって指定される分岐
先アドレスの命令を読み出す命令供給ユニットと、前記
命令供給ユニットによって読み出された命令を実行する
と共に、前記読み出された命令が分岐命令である場合
に、当該分岐命令によって指定される分岐先アドレスを
前記命令供給ユニットに通知する命令実行ユニットと、
割り込みが発生した場合に、割り込み処理からの復帰後
に実行すべき命令を制御する割り込み制御ユニットと、
を備え、前記割り込み制御ユニットは、割り込みが発生
した場合に、当該割り込みが発生した命令から、当該命
令の前記遅延スロットに含まれる命令の数だけ後に実行
すべき命令までの各アドレスを格納するレジスタを有
し、前記割り込み処理が完了した後に、前記レジスタに
格納された各アドレスを、前記割り込みが発生した命令
のアドレスから順次読み出すものであり、前記命令供給
ユニットは、割り込み処理からの復帰に際して、前記割
り込み制御ユニットによって前記レジスタから最初に読
み出したアドレスの命令を読み出すと共に、前記割り込
み制御ユニットによって前記レジスタから2番目以降に
読み出したアドレスについては、当該アドレスが前記分
岐命令によって指定された命令のアドレスであるとき
は、当該アドレスへ分岐して命令を実行し、前記分岐命
令によって指定された命令以外の命令のアドレスである
ときは、最新に読み出した命令の後続命令を読み出すも
のであることを特徴とする。
【0020】また、本発明の計算機システムは、本発明
のプロセッサと、分岐命令を含む複数の命令が可変長で
格納された命令格納用メモリと、前記プロセッサを入出
力装置に接続するI/Oデバイスと、を備えたことを特
徴とする。
【0021】
【発明の実施の形態】以下に、本発明の第一実施形態に
ついて図面を参照して説明する。
【0022】図1は本発明の第一実施形態である割り込
み制御方式を用いたプロセッサとその周辺装置とを機能
的に表した図である。
【0023】本実施形態である割り込み制御方式を用い
たプロセッサは、分岐命令を含む複数の命令からなるプ
ログラムを処理する際に、1つの命令を遅延スロット中
に含む遅延分岐を実行するパイプライン方式のプロセッ
サである。
【0024】本実施形態方式を用いたプロセッサは、実
行すべき各命令を、命令を読み出すFステージ、読み出
した命令をデコードしてオペランドを読み出すRステー
ジ、演算を実行するEステージ、そして、演算結果を書
き込むWステージの4ステージに分けて実行している。
そして、各ステージの実行に1クロック相当の時間を要
している。したがって、1つの命令を実行するには4ク
ロック相当の時間が必要である。
【0025】本実施形態方式を用いたプロセッサとその
周辺装置は、図1に示すように、命令格納用メモリ10
と、命令供給ユニット20と、命令実行ユニット30
と、データ格納用メモリ40と、を備えている。ここ
で、命令供給ユニット20、命令実行ユニット30及び
割り込み制御ユニット50がプロセッサに相当する。命
令格納用メモリ10及びデータ格納用メモリ40は、周
辺装置である。
【0026】命令格納用メモリ10は、複数の命令で構
成された所定のプログラムや、割り込み処理を行うため
の割り込み処理プログラム等を格納している。命令格納
用メモリ10は、アドレス線800を介して通知された
物理アドレスに格納されている命令を読み出し、データ
線801を用いて命令供給ユニット20へ転送する。
【0027】データ格納用メモリ40は、命令供給ユニ
ット20でのアドレス変換(仮想アドレスを物理アドレ
スに変換)に使用するアドレス変換テーブル41の他、
命令実行ユニット30での演算処理に使用するデータ等
を格納している。データ格納用メモリ40は、制御線8
22を介して読み出しが通知された場合、アドレス線8
20を介して転送された物理アドレスに格納されている
データを読み出し、データ線821を用いて命令実行ユ
ニット30へ転送する。また、制御線822を介して書
き込みが通知された場合、データ線821を介して命令
実行ユニット30から転送されたデータを、アドレス線
820を介して転送された物理アドレスに書き込む。
【0028】命令供給ユニット20は、実行すべき命令
の仮想アドレスを生成した後、当該仮想アドレスを物理
アドレスにアドレス変換し、この物理アドレスをアドレ
ス線800を用いて命令格納用メモリ10に転送する。
これにより、命令格納用メモリ10から実行すべき命令
を読み出す。また、データ線801によってメモリ格納
用ユニット10から転送された命令の命令長を検出する
と共に、必要に応じて所定の処理を行い、その後、当該
命令をデータ線810を用いて命令実行ユニット30へ
転送する。尚、これ等の処理はFステージで行われる。
【0029】また、命令供給ユニット20は、アドレス
変換動作に支障が生じて割り込みが発生した場合、当該
ユニット20で割り込みが発生した旨を命令供給割り込
み信号線830を用いて割り込み制御ユニット50へ通
知する。尚、本実施形態では、命令供給ユニット20で
生じた割り込みは、全てFステージで発生するものとす
る。
【0030】さらに、命令供給ユニット20は、割り込
み信号線834を介して割り込み制御ユニット50から
割り込み要求を受け取とった場合、割り込み処理プログ
ラム実行後の戻り仮想アドレス、すなわち割り込み処理
が発生した命令の仮想アドレスと、当該命令の次に実行
すべき命令の仮想アドレスとを、それぞれアドレス線8
31、832を用いて割り込み制御ユニット50へ転送
する。また、信号線832を用いて転送した仮想アドレ
ス、すなわち割り込み処理が発生した命令の次に実行す
べき命令の仮想アドレスが分岐命令によって特定される
分岐先アドレスであるか否かを示す信号を、信号線83
3を用いて割り込み制御ユニット50へ転送する。
【0031】命令実行ユニット30は、データ線810
を介して命令供給ユニット20から転送された命令をデ
コードし、その結果に応じて演算処理、分岐処理、デー
タ格納用メモリ40へのアクセス、命令供給ユニット2
0及び割り込み制御ユニット50の内部レジスタへのア
クセス等を行う。演算処理は、Rステージにおいて演算
用レジスタ31から必要なデータを読み出し、Eステー
ジで演算を行い、Wステージで演算結果を演算用レジス
タ21へ書き込むことで行われる。分岐処理は、命令供
給ユニット20から転送された命令が分岐命令である場
合、Rステージにおいて、分岐先アドレス線811及び
分岐要求信号線812を用いて、当該分岐命令によって
特定される分岐先の仮想アドレス及び分岐要求を、命令
供給ユニット20に転送することで行われる。データ格
納用メモリ40へのアクセスは、データ格納先の物理ア
ドレスを転送するためのアドレス線820、データを転
送するためのデータ線821及びアクセスを制御するた
めの制御信号線822を用いて、データ格納用メモリ4
0にアクセスする。命令供給ユニット20又は割り込み
制御ユニット50の内部レジスタへのアクセスは、レジ
スタの識別信号を転送するための識別信号線813、デ
ータを転送するためのデータ信号線814及びアクセス
を制御するための制御信号線815を用いて、所望のレ
ジスタにアクセスする。
【0032】また、命令実行ユニット30は、例えばデ
コードした命令が正しい命令でない場合、当該ユニット
30で割り込みが発生した旨を、命令実行割り込み信号
線835を用いて割り込み制御ユニット50へ通知す
る。また、割り込み先レジスタ32に予め格納されてい
る分岐先の仮想アドレスへの分岐を実行することによ
り、命令格納用メモリ10に格納されている割り込み処
理プログラムの処理を開始する。尚、本実施形態では、
命令実行ユニット30における割り込みは、全てRステ
ージで発生するものとする。
【0033】割り込み制御ユニット50は、命令実行割
り込み信号線835又は命令供給割り込み信号線830
によって送られてきた割り込み通知を受け取って、優先
順位や割り込みマスク等のチェックを行い、その後、割
り込み信号線834を用いて、割り込み要求と、割り込
みがどのステージで発生したかを示す信号とを、命令供
給ユニット20及び命令実行ユニット30へ出力する。
【0034】次に、図1に示す命令供給ユニット20に
ついて具体的に説明する。
【0035】図2は図1に示す命令供給ユニット20の
概略構成図である。
【0036】命令供給ユニット20は、図2に示すよう
に、命令変換ユニット201と、レジスタ202〜20
4と、加算器205と、セレクタ206〜209と、ア
ドレス変換回路210と、を備えている。
【0037】命令変換ユニット201は、データ線80
1によって命令格納用メモリ10から転送された命令を
受け取って、当該命令に命令伸張等の変換処理を行う。
そして、当該変換処理が行われた命令をデータ線810
を介して命令実行ユニット30へ転送する。また、受け
取った命令の命令長を検出し、検出した命令長を信号線
710を介して加算器205へ転送する。
【0038】レジスタ202は、アドレス線700に出
力された仮想アドレスを保持すると同時に、今まで保持
していた仮想アドレスをアドレス線701に出力する。
これにより、Fステージ実行中の命令、すなわち命令供
給ユニット20によって読み出しアクセスされている命
令の仮想アドレスを保持する。レジスタ203は、アド
レス線701に出力された仮想アドレスを保持すると同
時に、今まで保持していた仮想アドレスをアドレス線7
02に出力する。これにより、Rステージ実行中の命
令、すなわち命令実行ユニット30でデコードしている
命令の仮想アドレスを保持する。レジスタ204は、分
岐要求信号線812上の信号を保持すると同時に、今ま
で保持していた信号を信号線721に出力する。これに
より、信号線812には、Fステージ実行中の命令の1
つ前に実行されている命令、すなわちRステージ実行中
の命令が分岐命令であるか否かを示す信号が出力され、
信号線721にはRステージ実行中の命令の1つ前に実
行されている命令、すなわちEステージ実行中の命令が
分岐命令であるか否かを示す信号が出力される。
【0039】加算器205は、信号線710によって命
令変換ユニット201から転送された命令長に、アドレ
ス線701に出力された仮想アドレス、すなわち、Fス
テージの実行が完了した命令の仮想アドレスを加算す
る。これにより、分岐が発生しない場合に次に実行すべ
き命令の仮想アドレスを算出して、アドレス線720に
出力する。
【0040】セレクタ206は、分岐要求信号線812
によって命令実行ユニット30から分岐要求が送られて
きた場合、分岐先アドレス線811によって命令実行ユ
ニット30から転送された分岐先の仮想アドレスを選択
する。一方、分岐要求が送られていない場合、アドレス
線720によって加算器205から転送された仮想アド
レスを選択する。そして、セレクタ206は、選択した
仮想アドレスを次に実行すべき命令の仮想アドレスとし
て、アドレス線700に出力する。
【0041】アドレス変換回路210は、セレクタ20
6によってアドレス線700上に出力された次に実行す
べき命令の仮想アドレスを受け取って、当該仮想アドレ
スを物理アドレスへ変換する。そして、変換した物理ア
ドレスをアドレス線800を介して命令格納用メモリ1
0に転送する。これにより、命令格納用メモリ10は、
当該物理アドレスに格納された命令をデータ線801を
介してメモリ供給ユニット20の命令変換ユニット20
1へ転送する。
【0042】尚、仮想アドレスから物理アドレスへのア
ドレス変換は、アドレス変換回路210が備えるアドレ
ス変換キャッシュ211を参照して行う。アドレス変換
キャッシュ211は、アドレス変換を高速に行うための
ものであり、データ格納用メモリ40に格納されたアド
レス変換テーブル41の一部分のコピーを格納してい
る。アドレス変換回路210は、アドレス変換に必要な
値がアドレス変換キャッシュ211に存在しない場合
(この場合、仮想アドレスは誤った物理アドレスに変換
される)、原因となる命令がFステージを完了したとき
に、命令供給割り込み信号線830を用いて、割り込み
が発生した旨を割り込み制御ユニット50へ通知する。
【0043】セレクタ207は、割り込みが発生した場
合に、割り込み処理プログラムから戻ったときに最初に
実行すべき命令の仮想アドレス、すなわち当該割り込み
が発生した命令の仮想アドレスを、アドレス線831を
介して割り込み制御ユニット50へ転送する。具体的に
は、割り込み信号線834を介して割り込み制御ユニッ
ト50からFステージで割り込みが発生した旨通知され
た場合、アドレス線701上の仮想アドレス、すなわち
Fステージを実行していた命令(当該割り込みが発生し
た命令)の仮想アドレスを選択して、アドレス線831
に出力する。一方、割り込み信号線834を介して割り
込み制御ユニット50からRステージで割り込みが発生
した旨通知された場合、アドレス線702上の仮想アド
レス、すなわちRステージを実行していた命令(当該割
り込みが発生した命令)の仮想アドレスを選択して、ア
ドレス線831に出力する。
【0044】セレクタ208は、割り込みが発生した場
合に、割り込み処理プログラムから戻ったときに最初に
実行すべき命令の次に実行すべき命令の仮想アドレス
を、アドレス線832を介して割り込み制御ユニット5
0へ転送する。具体的には、割り込み信号線834を介
して割り込み制御ユニット50からFステージで割り込
みが発生した旨通知された場合、アドレス線700上の
仮想アドレス、すなわちFステージを実行していた命令
(当該割り込みが発生した命令)の次に実行すべき命令
の仮想アドレスを選択して、アドレス線832に出力す
る。一方、割り込み信号線834を介して割り込み制御
ユニット50からRステージで割り込みが発生した旨通
知された場合、アドレス線701上の仮想アドレス、す
なわちRステージを実行していた命令(当該割り込みが
発生した命令)の次に実行すべき命令の仮想アドレスを
選択して、アドレス線832に出力する。
【0045】セレクタ209は、セレクタ208で選択
された仮想アドレスが分岐先の仮想アドレスであるか否
かを示す信号を出力する。具体的には、割り込み信号線
834を介して割り込み制御ユニット50からFステー
ジで割り込みが発生した旨通知された場合、分岐要求信
号線812上の信号を選択して信号線833に出力す
る。一方、割り込み信号線834を介して割り込み制御
ユニット50からRステージで割り込みが発生した旨通
知された場合、信号線721上の信号を選択して信号線
833に出力する。
【0046】図2に示す命令供給ユニット20では、セ
レクタ206が分岐先アドレス線811によって命令実
行ユニット30から転送された分岐先の仮想アドレスを
選択した場合、セレクタ208で選択される仮想アドレ
スは、当該分岐先の仮想アドレスとなる。分岐先の仮想
アドレスは分岐命令によって特定された仮想アドレスな
ので、この場合、アドレス線832に正確な仮想アドレ
スの値が出力されたことが保証される。
【0047】一方、セレクタ206がアドレス線720
によって加算器205から送られてきた仮想アドレスを
選択した場合、セレクタ208で選択される仮想アドレ
スは、当該加算機205で算出された仮想アドレスとな
る。アドレス変換キャッシュ211に必要な値が格納さ
れていないために割り込みが発生した場合、変換された
物理アドレスに誤りが生じるため、命令格納用メモリ1
0から本来実行すべき命令とは異なる命令が読み出され
てしまう。そして、命令変換ユニット201で、本来実
行すべき命令の命令長とは異なる命令長が検出されてし
まう。このような場合、加算器205で算出された仮想
アドレスに誤りが生ずるので、アドレス線832に不正
確な仮想アドレスの値が出力されたことになる。
【0048】このように、セレクタ208で選択した仮
想アドレスが分岐先の仮想アドレスの場合、当該選択し
た仮想アドレスは正確な値であることが保証されるが、
分岐先の仮想アドレスでない場合、当該選択した仮想ア
ドレスが正確な値でない可能性がある。このため、セレ
クタ209は、本実施形態方式が適用されたプロセッサ
で処理される遅延スロット中に含まれる命令が1つであ
ることを利用し、割り込みが発生した命令の一つ前の命
令が分岐命令であるか否かに応じて、セレクタ208で
選択した仮想アドレスが分岐先の仮想アドレスであるか
否かを示す情報を出力している。
【0049】尚、アドレス変換キャッシュ211に必要
な値が格納されていないために割り込みが発生した場
合、命令実行ユニット30は、割り込み先レジスタ32
に予め格納されている分岐先の仮想アドレスへの分岐を
行うことにより、命令格納用メモリ10に格納された割
り込み処理プログラムを実行する。これにより、命令実
行ユニット30は、アドレス変換テーブル41から必要
な部分を読み出し、アドレス信号線813、データ信号
線814、制御信号線815を用いてアドレス変換キャ
ッシュ211の内容を更新する。
【0050】次に、図1に示す割り込み制御ユニット5
0について具体的に説明する。
【0051】図3は図1に示す割り込み制御ユニット5
0の概略構成図である。
【0052】割り込み制御ユニット50は、図3に示す
ように、レジスタ501〜503と、割り込み調整回路
504と、セレクタ505と、双方向ドライバ506
と、を備えている。
【0053】割り込み調整回路504は、複数の割り込
みが同時に発生した場合に、優先順位に基づいて処理す
べき割り込みを決定したり、処理すべきでない割り込み
をマスクしたりする。上述したように、本実施形態で
は、命令供給ユニット20で発生する割り込み(Fステ
ージで発生する割り込み)及び命令実行ユニット30で
発生する割り込み(Rステージで発生する割り込み)の
二種類の割り込みを想定している。命令供給ユニット2
0で発生する割り込みの要因は、アドレス変換キャッシ
ュ121に必要な値が格納されていない場合等であり、
原因となる命令がFステージまで進んだときに、命令供
給割り込み信号線830を介して命令供給ユニット20
から割り込み制御ユニット50へ、割り込みが発生した
旨通知される。一方、命令実行ユニット30で発生する
割り込みの要因は、デコードされた命令が不正な命令だ
った場合等であり、原因となる命令がRステージまで進
んだときに、命令実行割り込み信号線835を介して命
令実行ユニット30から割り込み制御ユニット50へ、
割り込みが発生した旨通知される。割り込み調整回路5
04は、レジスタ504aに格納されたデータを基に、
命令供給割り込み信号線830及び/又は命令実行割り
込み信号線835を介して通知された割り込みについ
て、優先順位やマスクの有無等を判定し、処理すべき割
り込みを、割り込み信号線834を介して命令供給ユニ
ット20、命令実行ユニット30及びレジスタ501〜
503へ通知する。
【0054】また、割り込み調整回路504は、制御信
号815を介して命令実行ユニット30から転送された
制御信号が読み出しアクセスであり、且つアドレス線8
13を介して転送された識別信号がレジスタ504aを
示す場合、信号線733を介してセレクタ505に、レ
ジスタ504aに格納されたデータ(優先順位やマスク
の有無等を示すデータ)を転送する。
【0055】さらに、割り込み調整回路504は、制御
信号815を介して命令実行ユニット30から転送され
た制御信号が書き込みアクセスである場合、データ線8
14上のデータをレジスタ504aに格納する。尚、本
実施形態では、命令実行ユニット30からレジスタ50
1〜502への書き込みができないようにしてある。し
たがって、アドレス信号線813は、書き込みモードの
場合、レジスタ504aが複数のレジスタで構成されて
いる場合に、これ等を選択するためにのみ使用される。
【0056】レジスタ501は、割り込み調整回路50
4から割り込み信号線834に割り込み要求が出力され
たのを契機として、アドレス線831を介して命令供給
ユニット20のセレクタ207から転送された仮想アド
レス、すなわち割り込み処理プログラムから戻ったとき
に最初に実行すべき命令の仮想アドレスを格納する。レ
ジスタ502は、割り込み調整回路504から割り込み
信号線834に割り込み要求が出力されたのを契機とし
て、アドレス線832を介して命令供給ユニット20の
セレクタ208から転送された仮想アドレス、すなわち
割り込み処理プログラムから戻ったときに最初に実行す
べき命令の次に実行すべき命令の仮想アドレスを格納す
る。レジスタ503は、割り込み調整回路504から割
り込み信号線834に割り込み要求が出力されたのを契
機として、信号線833を介して命令供給ユニット20
のセレクタ209から転送された情報、すなわちレジス
タ502に格納されている仮想アドレスが分岐先の仮想
アドレスであるか否かを示す情報を格納する。
【0057】セレクタ505は、レジスタ501〜50
3に格納された値、および割り込み調節回路504のレ
ジスタ504aに格納された値の中から、アドレス線8
13を介して命令実行ユニット30から転送された識別
信号が示すレジスタを選択し、当該レジスタに格納され
ている値を信号線735上に出力する。
【0058】双方向ドライバ506は、制御信号線81
5を介して命令実行ユニット30から転送された制御信
号に基づいて、データ転送方向を決定する。制御信号が
読み出しアクセスである場合、アドレス線735を介し
てセレクタ505から転送された値を、データ線814
を介して命令実行ユニット30へ転送する。また、制御
信号が書き込みアクセスである場合、データ線814を
介して命令供給ユニット20から転送されたデータを、
データ線736を介して割り込み調整回路310へ転送
する。
【0059】次に、図1に示すプロセッサ及びその周辺
装置の動作について図面を参照して説明する。
【0060】先ず、割り込みが発生しない場合の動作に
ついて説明する。
【0061】図4は図1に示すプロセッサで処理され
る、遅延スロットを有する分岐命令を含んだプログラム
の一例を示す図である。ここで、LDはレジスタ間での
データ転送を示すコマンド、JMPは分岐を示すコマン
ドである。尚、このプログラムを構成する各命令は、命
令格納用メモリ10に格納された状態では、命令長が一
定でないものとする。
【0062】図5は図1に示すプロセッサが図4に示す
プログラムを実行した場合のパイプラインの流れを示す
図である。
【0063】図1に示すプロセッサでは、命令供給ユニ
ット20は、読み出すべき命令の仮想アドレスを物理ア
ドレスに変換して、当該物理アドレスに格納されている
命令を命令格納用メモリ10から読み出す。そして、読
み出した命令に伸張処理等の変換処理を施して命令実行
ユニット30へ転送すると共に、読み出した命令の次に
読み出すべき命令の仮想アドレスを生成する。メモリ供
給ユニット20は、上記一連の動作(Fステージ)を1
クロック相当の時間で繰り返し行う。
【0064】また、命令実行ユニット30は、命令供給
ユニット20から転送された命令をデコードしてオペラ
ンドを読み出し(Rステージ)、演算を実行し(Eステ
ージ)、そして、演算結果を書き込む(Wステージ)。
この動作を各ステージ毎に1クロック相当の時間をかけ
て、命令供給ユニット20から命令が転送されてくる毎
に行う。したがって、図1に示すプロセッサでは、図5
に示すように、最大で3つの命令を平行して実行するこ
とができる。これにより、プログラムの処理速度を向上
させることができる。
【0065】また、命令実行ユニット30は、命令供給
ユニット20から転送された命令が分岐命令である場
合、Rステージ完了後、分岐先アドレス線811及び分
岐要求信号線812を用いて、当該分岐命令によって特
定される分岐先の仮想アドレス及び分岐要求を命令供給
ユニット20に転送している。したがって、分岐先の仮
想アドレスは、当該分岐命令の実行開始後、2クロック
相当の時間経過後に、命令供給ユニット20に転送され
ることになる。このため、図5に示すように、分岐命令
である命令Qが実行開始された後、当該分岐命令の後続
命令である命令Pが実行開始された後に、命令Qの分岐
先ルーチンL1(命令X、命令Y)が実行開始される。
すなわち、1つの命令を含む遅延スロットを有する遅延
分岐が実行される。
【0066】次に、割り込みが発生した場合の動作につ
いて、遅延スロット中の命令以外で割り込みが発生した
場合と、遅延スロット中の命令で割り込みが発生した場
合とに分けて説明する。
【0067】図6は図1に示すプロセッサで処理される
割り込み処理プログラムの一例を示す図である。ここ
で、DIは割り込み禁止を示すコマンド、EIは割り込
み解除を示すコマンド、CMPは2つのデータを比較を
示すコマンド、JNEは条件つきの分岐を示すコマン
ド、NOP(ノンオペレーション)は何もしないことを
示すコマンドである。
【0068】遅延スロット中の命令以外で割り込みが発
生した場合について説明する。
【0069】先ず、Fステージで命令に割り込みが発生
した場合について図7を参照して説明する。
【0070】図7は図4に示すプログラムの命令Rで、
Fステージ実行中に割り込みが発生した場合におけるプ
ログラムのパイプラインの流れを示す図である。
【0071】命令RのFステージで割り込みが発生した
場合、すなわち命令Rが命令供給ユニット20で処理さ
れている最中に当該命令Rに割り込みが発生した場合、
命令供給ユニット20は、命令RのFステージ完了と同
時に、命令供給割り込み信号線830を用いて、割り込
みが発生した旨を割り込み制御ユニット50へ通知す
る。
【0072】割り込み制御ユニット50は、当該通知さ
れた割り込みの優先順位やマスクの有無等を判定し、当
該割り込みが処理すべきものである場合に、割り込み信
号線834を介して命令実行ユニット30へ通知する。
【0073】命令実行ユニット30は、割り込み制御ユ
ニット50から割り込みが発生した旨の通知を受ける
と、データ線810を介して命令供給ユニット20から
転送された命令Rを実行をすることなく終了し、図7に
示すように、命令RのRステージ以降をキャンセルす
る。また、分岐先アドレス線811を用いて、割り込み
先レジスタ32に予め格納されている分岐先の仮想アド
レスを命令供給ユニット20に転送する。
【0074】命令供給ユニット20は、命令実行ユニッ
ト30から転送された分岐先の仮想アドレスを物理アド
レスに変換して、命令格納用メモリ10の前記物理アド
レスに格納されている命令を読み出す。これにより、割
り込み処理プログラムの先頭アドレスの命令への分岐が
行われ、図6に示す割り込み処理プログラムが実行され
る。
【0075】図6に示す割り込み処理プログラムでは、
先ず、割り込み処理中に更に別の割り込みが発生しない
ように割り込み禁止を指令する(命令a)。この命令を
受けて、命令実行ユニット30は、割り込み制御ユニッ
ト50の割り込み調整回路504内蔵のレジスタ504
aを「マスク有り」に書き換える。割り込み制御ユニッ
ト50は、レジスタ504aの内容がマスク有りの場
合、その後、命令供給割り込み信号線830及び/又は
命令実行割り込み信号線835を介して割り込みが通知
されても、割り込み要求を割り込み信号線834を介し
て他のユニット等に通知することはない。
【0076】次に、割り込み制御ユニット50のレジス
タ501(E−IP0)に格納されている仮想アドレス
(割り込みが発生した命令、すなわち命令Rの仮想アド
レス)を、命令実行ユニット30の演算用レジスタ31
内に設けられているレジスタIAに格納する旨指令する
(命令b)。この命令を受けて、命令実行ユニット30
は、識別信号線813及び制御信号線815を用いてレ
ジスタ501にアクセスする。これにより、割り込み制
御ユニット50は、レジスタ501に格納されている仮
想アドレスをアドレス線813を介して命令実行ユニッ
ト30に転送する。命令実行ユニット30は、割り込み
制御ユニット50から転送された仮想アドレスを演算用
レジスタ31内のレジスタIAに格納する。
【0077】次に、割り込み制御ユニット50のレジス
タ502(E−IP1)に格納されている仮想アドレス
(割り込みが発生した命令の次に実行されるべき命令、
すなわち命令Sの仮想アドレス)を、命令実行ユニット
30の演算用レジスタ31内に設けられているレジスタ
IBに格納する旨指令する(命令c)。この命令を受け
て、命令実行ユニット30は、識別信号線813及び制
御信号線815を用いてレジスタ502にアクセスす
る。これにより、割り込み制御ユニット50は、レジス
タ502に格納されている仮想アドレスをアドレス線8
13を介して命令実行ユニット30に転送する。命令実
行ユニット30は、割り込み制御ユニット50から転送
された仮想アドレスを演算用レジスタ31内のレジスタ
IBに格納する。
【0078】次に、割り込み制御ユニット50のレジス
タ503(E−IP1V)に格納されている値(命令c
でレジスタIBに格納した仮想アドレスが分岐先の仮想
アドレスであるか否かを示す値)を、命令実行ユニット
30の演算用レジスタ31内に設けられているレジスタ
ICに格納する旨指令する(命令d)。この命令を受け
て、命令実行ユニット30は、識別信号線813及び制
御信号線815を用いてレジスタ503にアクセスす
る。これにより、割り込み制御ユニット50は、レジス
タ503に格納されている値をアドレス線813を介し
て命令実行ユニット30に転送する。命令実行ユニット
30は、割り込み制御ユニット50から転送された値を
演算用レジスタ31内のレジスタICに格納する。
【0079】尚、本実施形態では、レジスタ502に格
納されている仮想アドレスが分岐先の仮想アドレスであ
る場合、レジスタ503に格納される信号が「1」とな
るようにしている。一方、レジスタ502に格納されて
いる仮想アドレスが分岐先の仮想アドレスでない場合、
レジスタ503に格納される信号が「0」となるように
している。
【0080】命令eから命令oの1つ前の命令までの各
命令は、所定の割り込み処理を行うためのものである。
これ等の命令は割り込みの要因によって種々異なる。こ
れ等の命令は、通常の割り込み処理プログラムと基本的
に同じ考えで作られるものである。したがって、ここで
は、これ等の命令の説明を省略する。
【0081】命令oでは、レジスタICの内容と0との
比較を指令する(命令o)。この命令を受けて、命令実
行ユニット30は、演算用レジスタ31内のレジスタI
Cに格納した値、すなわちレジスタIBに格納した仮想
アドレスが分岐先の仮想アドレスであるか否かを示す値
が、0であるか否かを比較する。次に、命令oで比較し
た結果、両者が一致した場合は、ルーチンL2に分岐す
る旨指令する(命令p)。ここでは、図4に示す命令R
で割り込みが発生したことを想定しているので、割り込
みが発生した命令Rの次に実行されるべき命令Sの仮想
アドレスは、分岐命令によって特定されるものではな
い。したがって、レジスタICに格納した値は0とな
る。このため、命令実行ユニット30は、図7に示すよ
うに、ルーチンL2への分岐を実行せずに、後続命令q
を実行する。
【0082】命令qでは、命令aで指令した割り込み禁
止を解除するように指令する。この命令を受けて、命令
実行ユニット30は、割り込み制御ユニット50の割り
込み調整回路504内蔵のレジスタ504aを「マスク
無し」に書き換える。但し、レジスタ504aの書き換
えは、命令qの2つ命令の後に、有効となるようにして
ある。
【0083】次に、レジスタIAに格納された仮想アド
レスの命令への分岐を指令する(命令r)。この命令を
受けて、命令実行ユニット30は、レジスタIAに格納
された仮想アドレスの命令、すなわち割り込みが発生し
た命令Rを実行する。但し、本実施形態では、上述した
ように、1つの命令を含む遅延スロットを有する遅延分
岐を実行するので、命令Rの実行は、図7に示すよう
に、命令rの後続命令sの実行後に行われる。尚、命令
sには、ノーオペレーション(NOP)と呼ばれる何も
しない命令が入っているので、図7に示すように、割り
込み処理から復帰した後、実行順序を変更することなく
図4に示すプログラムを正確に処理することができる。
【0084】命令RのFステージで割り込みが発生した
場合、この段階では、命令Rの正しい命令長が判明しな
いので、命令Rの仮想アドレスに命令Rの命令長を加算
しても、命令Rの後続命令である命令Sの正確な仮想ア
ドレスを求めることはできない。そこで、本実施形態で
は、割り込み処理からの復帰後、最初に実行すべき命令
(ここでは、命令R)の次に実行すべき命令(ここで
は、命令S)が分岐命令の分岐先でない場合、命令rで
レジスタ501に格納された仮想アドレスへの分岐を実
行後、命令rの遅延スロットに含まれる命令sで、レジ
スタ502に格納された仮想アドレスへの分岐を行うこ
となく、NOP命令を実行しいる。これにより、割り込
み処理から復帰した後のプログラムの実行順序が変更さ
れるのを防止している。
【0085】次に、Rステージで命令に割り込みが発生
した場合について図8を参照して説明する。
【0086】図8は図4に示すプログラムの命令Rで、
Rステージ実行中に割り込みが発生した場合におけるプ
ログラムのパイプラインの流れを示す図である。
【0087】命令RのRステージで割り込みが発生した
場合、すなわち命令Rが命令実行ユニット30で処理さ
れている最中に当該命令Rに割り込みが発生した場合、
命令実行ユニット30は、命令RのRステージ完了と同
時に、命令実行割り込み信号線835を用いて、割り込
みが発生した旨を割り込み制御ユニット50へ通知す
る。
【0088】割り込み制御ユニット50は、当該通知さ
れた割り込みの優先順位やマスクの有無等を判定し、当
該割り込みが処理すべきものである場合に、割り込み信
号線834を介して命令実行ユニット30へ通知する。
【0089】命令実行ユニット30は、割り込み制御ユ
ニット50から割り込みが発生した旨の通知を受ける
と、命令Rの実行を中止すると共に、データ線830を
介して命令供給ユニット20から転送された命令Sを実
行を中止し、図8に示すように、命令RのEステージ以
降及び命令SのRステージ以降をキャンセルする。ま
た、内蔵の割り込み先レジスタ32に予め格納されてい
る分岐先の仮想アドレスを命令供給ユニット20に転送
する。
【0090】命令供給ユニット20は、命令実行ユニッ
ト30から転送された分岐先の仮想アドレスを物理アド
レスに変換して、命令格納用メモリ10の前記物理アド
レスに格納されている命令を読み出す。これにより、割
り込み処理プログラムの先頭アドレスの命令への分岐が
行われ、上述した、命令RのFステージで割り込みが発
生した場合と同様の要領で、図6に示す割り込み処理プ
ログラムが実行される。これにより、図8に示すよう
に、割り込み処理から復帰した後、実行順序を変更する
ことなく図4に示すプログラムを正確に処理することが
できる。
【0091】尚、命令RのRステージで割り込みが発生
した場合、命令供給ユニット20での命令Rについての
処理(Fステージ)は、既に完了しているので、命令供
給ユニット20の命令変換ユニット201は命令Rの正
しい命令長を命令供給ユニット20の加算器205に転
送している。このため、加算器205で算出された命令
Sの仮想アドレスが正しい値となるので、割り込み制御
ユニット50のレジスタ502には、命令Sの正しい仮
想アドレスが格納されることになる。したがって、レジ
スタ502に格納された仮想アドレスを分岐先とする命
令を実行することにより、命令Sを実行することも可能
である。しかしながら、ここでは、処理を簡略化するた
めに、命令RのFステージで割り込みが発生した場合と
同様の要領で、図6に示す割り込み処理プログラムを実
行している。
【0092】遅延スロット中の命令で割り込みが発生し
た場合について、割り込みがFステージで発生した場合
と、Rステージで発生した場合に分けて説明する。
【0093】先ず、Fステージで命令に割り込みが発生
した場合について図9を参照して説明する。
【0094】図9は図4に示すプログラムの命令Pで、
Fステージ実行中に割り込みが発生した場合におけるプ
ログラムのパイプラインの流れを示す図である。
【0095】分岐命令である命令Qの遅延スロットに含
まれる命令PのFステージで、割り込みが発生した場
合、すなわち命令Pが命令供給ユニット20で処理され
ている最中に当該命令Pに割り込みが発生した場合、命
令供給ユニット20は、命令PのFステージ完了と同時
に、命令供給割り込み信号線830を用いて、割り込み
が発生した旨を割り込み制御ユニット50へ通知する。
【0096】割り込み制御ユニット50は、当該通知さ
れた割り込みの優先順位やマスクの有無等を判定し、当
該割り込みが処理すべきものである場合に、割り込み信
号線834を介して命令実行ユニット30へ通知する。
【0097】命令実行ユニット30は、割り込み制御ユ
ニット50から割り込みが発生した旨の通知を受ける
と、データ線830を介して命令供給ユニット20から
転送された命令Pを実行をすることなく終了し、図9に
示すように、命令PのRステージ以降をキャンセルす
る。また、内蔵の割り込み先レジスタ32に予め格納さ
れている分岐先の仮想アドレスを命令供給ユニット20
に転送する。
【0098】命令供給ユニット20は、命令実行ユニッ
ト30から転送された分岐先の仮想アドレスを物理アド
レスに変換して、命令格納用メモリ10の前記物理アド
レスに格納されている命令を読み出す。これにより、割
り込み処理プログラムの先頭アドレスの命令への分岐が
行われ、図6に示す割り込み処理プログラムが実行され
る。
【0099】尚、遅延スロットに含まれる命令Pで割り
込みが発生した場合、割り込み処理から復帰した後、最
初に実行されるべき命令Pの次に実行されるべき命令X
は、分岐命令Qによって仮想アドレスが特定された分岐
先の命令である。このため、割り込み制御ユニット50
のレジスタ503に格納される信号は「1」となる。し
たがって、図6に示す命令dによって、命令実行ユニッ
ト30の演算用レジスタ312内のレジスタICに格納
される値は「1」となるので、命令pによってルーチン
L2への分岐が実行される。但し、本実施形態では、上
述したように、1つの命令を含む遅延スロットを有する
遅延分岐を実行するので、命令qを実行した後、命令t
を実行する。
【0100】命令tでは、レジスタIAに格納された仮
想アドレスの命令への分岐を指令する。この命令を受け
て、命令実行ユニット30は、レジスタIAに格納され
た仮想アドレスの命令、すなわち割り込みが発生した命
令Pを実行する。但し、本実施形態では、上述したよう
に、1つの命令を含む遅延スロットを有する遅延分岐を
実行するので、命令Pの実行は、図9に示すように、命
令tの後続命令uの実行後に行われる。
【0101】命令uでは、レジスタIBに格納された仮
想アドレスの命令への分岐を指令する。この命令を受け
て、命令実行ユニット30は、レジスタIBに格納され
た仮想アドレスの命令、すなわち分岐命令Qによって仮
想アドレスが特定された分岐先の命令Xを実行する。但
し、本実施形態では、上述したように、1つの命令を含
む遅延スロットを有する遅延分岐を実行するので、命令
Xの実行は、図9に示すように、命令uの次に実行され
る命令、すなわち、命令tで指定された分岐先の命令P
の実行後に行われる。したがって、本実施形態では、図
9に示すように、割り込み処理から復帰した後、実行順
序を変更することなく図4に示すプログラムを正確に処
理することができる。
【0102】命令Pで割り込みが発生した場合、命令P
の次に実行されるべき命令は、分岐命令Qによって仮想
アドレスが特定された分岐先の命令Xである。したがっ
て、当該割り込みが発生した段階で、命令Xの正確な仮
想アドレスが判明している。そこで、本実施形態では、
割り込み処理からの復帰後、最初に実行すべき命令(こ
こでは、命令P)の次に実行すべき命令(ここでは、命
令X)が分岐命令(ここでは、命令Q)の分岐先である
場合、命令tでレジスタ501に格納された仮想アドレ
スへの分岐を実行後、命令tの遅延スロットに含まれる
命令uで、レジスタ502に格納された仮想アドレスへ
の分岐を行っている。これにより、割り込み処理から復
帰後のプログラムの実行順序が変更されるのを防止して
いる。
【0103】次に、Rステージで命令に割り込みが発生
した場合について図10を参照して説明する。
【0104】図10は図4に示すプログラムの命令P
で、Rステージ実行中に割り込みが発生した場合におけ
るプログラムのパイプラインの流れを示す図である。
【0105】命令PのRステージで割り込みが発生した
場合、すなわち命令Pが命令実行ユニット30で処理さ
れている最中に当該命令Pに割り込みが発生した場合、
命令実行ユニット30は、命令PのRステージ完了と同
時に、命令実行割り込み信号線835を用いて、割り込
みが発生した旨を割り込み制御ユニット50へ通知す
る。
【0106】割り込み制御ユニット50は、当該通知さ
れた割り込みの優先順位やマスクの有無等を判定し、当
該割り込みが処理すべきものである場合に、割り込み信
号線834を介して命令実行ユニット30へ通知する。
【0107】命令実行ユニット30は、割り込み制御ユ
ニット50から割り込みが発生した旨の通知を受ける
と、命令Pの実行を中止すると共に、データ線830を
介して命令供給ユニット20から転送された命令Xを実
行を中止し、図10に示すように、命令PのEステージ
以降及び命令XのRステージ以降をキャンセルする。ま
た、内蔵の割り込み先レジスタ32に予め格納されてい
る分岐先の仮想アドレスを命令供給ユニット20に転送
する。
【0108】命令供給ユニット20は、命令実行ユニッ
ト30から転送された分岐先の仮想アドレスを物理アド
レスに変換して、命令格納用メモリ10の前記物理アド
レスに格納されている命令を読み出す。これにより、割
り込み処理プログラムの先頭アドレスの命令への分岐が
行われ、上述した、命令PのFステージで割り込みが発
生した場合と同様の要領で、図6に示す割り込み処理プ
ログラムが実行される。これにより、図10に示すよう
に、割り込み処理から復帰した後、実行順序を変更する
ことなく図4に示すプログラムを正確に処理することが
できる。
【0109】本実施形態では、割り込み処理からの復帰
後、最初に実行すべき命令の次に実行すべき命令が分岐
命令の分岐先である場合、命令tでレジスタ501に格
納された仮想アドレスへの分岐を実行後、命令tの遅延
スロットに含まれる命令uで、レジスタ502に格納さ
れた仮想アドレスへの分岐を行っている。一方、当該命
令が分岐命令の分岐先でない場合、命令rでレジスタ5
01に格納された仮想アドレスへの分岐を実行後、命令
rの遅延スロットに含まれる命令sで、レジスタ502
に格納された仮想アドレスへの分岐を行うことなく、N
OP命令を実行しいる。このようにすることで、命令格
納用メモリに格納されたプログラムの各命令の命令長が
一定でない場合でも、割り込みが発生した命令が遅延ス
ロット中のものであるか否かに係わらず、当該プログラ
ムを所定の順序で正確に処理することができる。
【0110】次に、本発明の第二実施形態について図面
を参照して説明する。
【0111】図11は本発明の第二実施形態である割り
込み制御方式を用いたプロセッサとその周辺装置とを機
能的に表した図、図12は図11に示す自動復帰ユニッ
トの概略構成図である。
【0112】本実施形態が第一実施形態のものと異なる
点は、割り込み処理から復帰する際に、プログラムを所
定の順序で実行するための処理(図6に示す割り込み処
理プログラムの命令b〜命令d、命令o、命令p、命令
r〜命令uに相当する処理)を、ソフトウエア的に実行
するのではなく、図11に示す自動復帰ユニット33に
より、ハードウェア的に実行する点である。尚、図11
に示すプロセッサ及びその周辺装置において、第一実施
形態が適用されたものと同一の機能を有するものには、
同一の符号又は対応する符号を付すことにより、その詳
細な説明を省略する。
【0113】自動復帰ユニット33は、図12に示すよ
うに、自動復帰用レジスタ34と、セレクタ331、3
32と、自動復帰用レジスタ読み込み回路333と、自
動復帰処理回路334と、を備えている。
【0114】自動復帰用レジスタ読み込み回路333
は、割り込み信号線834を介して割り込み制御ユニッ
ト50から割り込み要求を受け取ると、識別信号線87
0及び制御信号線872を各々信号線813、815と
接続するように、信号線874を介してセレクタ33
1、332を制御する。そして、割り込み制御ユニット
50のレジスタ501〜レジスタ503へ順次アクセス
し、レジスタ501〜レジスタ503に格納された値を
自動復帰用レジスタ34に格納する。尚、通常、セレク
タ331、332は、各々識別信号線813、制御信号
線815を信号線871、873に接続するように制御
されているものとする。
【0115】自動復帰用処理回路334は、信号線87
5に開始信号が入力されると、自動復帰用レジスタ34
にアクセスし、レジスタ503から転送された値を読み
出す。当該値が「0」である場合、レジスタ502から
転送された値は、分岐命令によって特定された分岐先の
命令の仮想アドレスではない。この場合、自動復帰用処
理回路334は、自動復帰用レジスタ34からレジスタ
501から転送された値(割り込みが発生した命令の仮
想アドレス)のみを読み出して、信号線876を介して
分岐先アドレス線811上に出力し、命令供給ユニット
20へ転送する。また、分岐要求を信号線877を介し
て分岐要求信号線812上に出力し、命令供給ユニット
20に転送する。一方、当該値が「1」である場合、レ
ジスタ502から転送された値は、分岐命令によって特
定された分岐先の命令の仮想アドレスである。この場
合、自動復帰用処理回路334は、自動復帰用レジスタ
34から、レジスタ501から転送された値(割り込み
が発生した命令の仮想アドレス)及びレジスタ502か
ら転送された値(分岐先の命令の仮想アドレス)を順次
読み出して、信号線876を介して分岐先アドレス線8
11上に出力し、命令供給ユニット20へ転送する。ま
た、分岐要求を信号線877を介して分岐要求信号線8
12上に出力し、命令供給ユニット20に転送する。
【0116】次に、図11に示すプロセッサ及びその周
辺装置において、割り込みが発生した場合の動作を、遅
延スロット中の命令以外で割り込みが発生した場合と、
遅延スロット中の命令で割り込みが発生した場合とに分
けて説明する。尚、割り込みが発生しない場合の動作
は、第一実施形態のものと同様であるので、その詳細な
説明を省略する。
【0117】図13は図11に示すプロセッサで処理さ
れる割り込み処理プログラムの一例を示す図である。こ
こで、IRETは自動復帰ユニット34を起動するため
のコマンドである。
【0118】先ず、遅延スロット中の命令以外の命令で
割り込みが発生した場合について説明する。
【0119】図14は図4に示すプログラムの命令R
で、Fステージ実行中に割り込みが発生した場合におけ
るプログラムのパイプラインの流れを示す図、図15は
図4に示すプログラムの命令Rで、Rステージ実行中に
割り込みが発生した場合におけるプログラムのパイプラ
インの流れを示す図である。
【0120】本実施形態では、割り込み制御ユニット5
0から割り込みが発生した旨の通知を受けると、自動復
帰ユニット33が、識別信号線813、データ信号線8
14及び制御信号線815を用いて、割り込み制御ユニ
ット50のレジスタ501〜レジスタ503へ順次アク
セスし、レジスタ501〜レジスタ503に格納された
値を自動復帰用レジスタ34に格納する。すなわち、図
6に示す命令b〜命令dの処理を自動的に実行する。ま
た、命令供給ユニット20及び命令実行ユニット30a
により、図13に示す割り込み処理プログラムが実行さ
れる。
【0121】図13に示す割り込み処理プログラムで
は、先ず、命令aを実行して割り込みを禁止し、次に、
命令e以降で所定の割り込み処理を行い、その後、命令
wを実行する。これにより、命令実行ユニット30a
は、信号線875を介して自動復帰ユニット33に開始
信号を出力する。これを受けて、自動復帰ユニット33
は、割り込み制御ユニット50のレジスタ503から自
動復帰用レジスタ34に転送された値を参照し、分岐を
行う。ここでは、割り込み制御ユニット50のレジスタ
503から自動復帰用レジスタ34に転送された値が
「0」となるので、割り込み制御ユニットのレジスタ5
02から自動復帰用レジスタ34に転送された仮想アド
レスを分岐先とする分岐は行わない。割り込み制御ユニ
ット50のレジスタ501から転送された自動復帰用レ
ジスタ34に転送された仮想アドレス(命令Rの仮想ア
ドレス)への分岐のみを実行する。尚、命令wは、割り
込み禁止解除命令qを含む遅延スロットを有する。この
ため、命令Rは、命令qの実行後に行われる。
【0122】次に、遅延スロット中の命令で割り込みが
発生した場合について説明する。
【0123】図16は図4に示すプログラムの命令P
で、Fステージ実行中に割り込みが発生した場合におけ
るプログラムのパイプラインの流れを示す図、図17は
図4に示すプログラムの命令Pで、Rステージ実行中に
割り込みが発生した場合におけるプログラムのパイプラ
インの流れを示す図である。
【0124】遅延スロット中の命令で割り込みが発生し
た場合も、遅延スロット中の命令以外の命令で割り込み
が発生した場合と同様に、自動復帰ユニット33が、識
別信号線813、データ信号線814及び制御信号線8
15を用いて、割り込み制御ユニット50のレジスタ5
01〜レジスタ503へ順次アクセスし、レジスタ50
1〜レジスタ503に格納された値を自動復帰用レジス
タ34に格納する。また、命令供給ユニット20及び命
令実行ユニット30aにより、図13に示す割り込み処
理プログラムが実行される。
【0125】尚、遅延スロット中に含まれる命令Pで割
り込みが発生した場合、割り込み処理から復帰した後、
最初に実行されるべき命令Pの次に実行されるべき命令
Xは、分岐命令Qによって仮想アドレスが特定された分
岐先の命令である。このため、割り込み制御ユニット5
0のレジスタ503から自動復帰用レジスタ34に転送
された値は「1」となる。したがって、自動復帰ユニッ
ト33は、命令wを受けて、割り込み制御ユニット50
のレジスタ501から自動復帰用レジスタ34に転送さ
れた仮想アドレス(命令Pの仮想アドレス)への分岐
と、割り込み制御ユニットのレジスタ502から自動復
帰用レジスタ34に転送された仮想アドレス(命令Xの
仮想アドレス)への分岐先と、を続けて実行する。
【0126】本実施形態では、割り込み処理から復帰す
る際に、プログラムを所定の順序で正確に実行するため
の処理(図6に示す割り込み処理プログラムの命令b〜
命令d、命令o、命令p、命令r〜命令uに相当する処
理)を、自動復帰ユニット33を用いて自動的に行って
いる。このようにすることで、割り込み処理プログラム
の処理時間を短縮することができ、また、割り込み処理
プログラムを小さくすることができる。
【0127】次に、本発明の第三実施形態について図面
を参照して説明する。
【0128】図18は本発明の第三実施形態に用いる命
令供給ユニットの概略構成図、図19は本発明の第三実
施形態に用いる割り込み制御ユニットの概略構成図であ
る。本実施形態が適用されたプロセッサ及びその周辺装
置は、第一実施形態が適用されたものと、命令供給ユニ
ット及び割り込み制御ユニットが異なる点を除いて、基
本的に同様である。そこで、ここでは、本実施形態を用
いたプロセッサ及びその周辺装置を機能的に表した図を
省略している。尚、本実施形態において、第一実施形態
のものと同一の機能を有するものには、同一の符号又は
対応する符号を付すことにより、その詳細な説明を省略
する。
【0129】本実施形態で用いる命令供給ユニット20
aが図2に示す第一実施形態で用いる命令供給ユニット
20と異なる点は、図18に示すように、比較器215
と、セレクタ216とを設けた点である。
【0130】比較器215は、分岐先アドレス線811
を介して送られてきた分岐先の仮想アドレスを、分岐先
として有り得ない所定の仮想アドレスと比較する。ここ
で、分岐先として有り得ない所定の仮想アドレスは、単
一の値である必要はなく、ある程度の範囲を持たせても
よい。比較器215は、分岐先アドレス線811を介し
て転送された分岐先の仮想アドレスと、分岐先として有
り得ない所定の仮想アドレスとが一致したときに、信号
を出力する。
【0131】セレクタ216は、比較器215から信号
が出力された場合、分岐要求信号線812を介して転送
された分岐要求の代わりに、分岐を実行しないことを示
す信号752を選択して、当該選択した信号を信号線7
53に出力する。
【0132】本実施形態で用いる命令供給ユニット20
aでは、分岐先アドレス線811を介して送られてきた
分岐先の仮想アドレスが所定の仮想アドレスと一致する
場合、当該仮想アドレスへの分岐を実行しないようにし
ている。
【0133】本実施形態で用いる割り込み制御ユニット
50aが図3に示す第一実施形態で用いる割り込み制御
ユニット50と異なる点は、図19に示すように、セレ
クタ507を設けた点である。
【0134】セレクタ507は、命令供給ユニット20
aのセレクタ216で選択された、分岐を実行しないこ
とを示す信号752が、レジスタ503に格納されてい
る場合、レジスタ502に格納された仮想アドレスに代
えて、分岐先としてあり得ない所定の仮想アドレス75
1を選択し、当該仮想アドレスをセレクタ505へ転送
する。したがって、レジスタ503に分岐を実行しない
ことを示す信号752が格納されている場合、命令実行
ユニット30は、識別信号線813、データ信号線81
4及び制御信号線815を用いて、レジスタ502にア
クセスすると、レジスタ502に格納された仮想アドレ
スではなく、分岐先としてあり得ない所定の仮想アドレ
ス751が読み出される。
【0135】図20に、本実施形態で用いるプロセッサ
で処理される割り込み処理プログラムの一例を示す。こ
のプログラムでは、命令aで割り込みを禁止した後、命
令b及び命令cにおいて、割り込み制御ユニット50a
のレジスタ501、502に格納された仮想アドレス
を、命令実行ユニット30の演算用レジスタ31にある
レジスタIA、IBにそれぞれ転送している。そして、
所定の割り込み処理を実行した後、命令qで割り込み禁
止状態を解除し、その後、命令t及び命令uで、それぞ
れレジスタIAに転送された仮想アドレス、レジスタI
Bに転送された仮想アドレスへの分岐を実行している。
【0136】上述したように、本実施形態では、割り込
み制御ユニット50aのレジスタ503に分岐を実行し
ないことを示す信号752が格納されている場合、命令
実行ユニット30が割り込み制御ユニット50aのレジ
スタ502にアクセスすると、分岐先としてあり得ない
仮想アドレス751が読み出される。したがって、本実
施形態では、割り込み処理から復帰した後、最初に実行
すべき命令の次に実行すべき命令が、分岐命令によって
分岐先の仮想アドレスが特定された命令であるか否かの
判断、すなわち第一実施形態で用いる図6に示す割り込
み処理プログラムの命令d、命令o、命令p、命令r、
命令sに相当する処理を、命令実行ユニット30でソフ
トウエア的に処理する必要がなくなる。
【0137】本発明は上記の各実施形態に限定されるも
のではなく、その要旨の範囲内で数々の変形が可能であ
る。
【0138】たとえば、上記の各実施形態では、説明を
簡略化するために、割り込みがFステージ及びRステー
ジのいずれかで発生するものとして説明した。しかしな
がら、実際にはこのような制限は不要である。一例とし
て、割り込みがEステージで発生した場合にも対応する
ことができる命令供給ユニットを図21に示す。
【0139】図21は第一実施形態で用いた命令供給ユ
ニットの変形例を示す図である。
【0140】図21に示す命令供給ユニット20bが、
図2に示す第一実施形態の命令供給ユニット20と異な
る点は、レジスタ220と、レジスタ221とを設けた
点である。
【0141】レジスタ220は、アドレス線702に出
力された仮想アドレスを保持すると同時に、今まで保持
していた仮想アドレスをアドレス線703に出力する。
上述したように、レジスタ203はRステージ実行中の
命令、すなわち命令実行ユニット30でデコードされて
いる命令の仮想アドレスを保持するので、レジスタ22
0は、Eステージ実行中の命令、すなわち命令実行ユニ
ット30で演算処理が行われている命令の仮想アドレス
を保持することになる。
【0142】レジスタ221は、信号線721に出力さ
れた信号を保持すると同時に、今まで保持していた信号
を信号線722に出力する。上述したように、レジスタ
204はRステージ実行中の命令の1つ前に実行されて
いる命令、すなわちEステージ実行中の命令が分岐命令
であるか否かを示す信号を保持するので、レジスタ22
1は、Eステージ実行中の命令の1つ前に実行されてい
る命令、すなわちWステージ実行中の命令が分岐命令で
あるか否かを示す信号を保持することになる。
【0143】上記構成の命令供給ユニット20bは、割
り込み信号線834を介して割り込み制御ユニット50
から通知された割り込み要求に基づいて、セレクタ20
7〜209を以下のように動作させる。
【0144】割り込み制御ユニット50から割り込み発
生がFステージで発生した旨通知された場合、セレクタ
207、208、209は、それぞれ信号線701上の
値、信号線700上の値、信号線720上の値を選択す
る。
【0145】また、割り込み制御ユニット50から割り
込み発生がRステージで発生した旨通知された場合、セ
レクタ207、208、209は、それぞれ信号線70
2上の値、信号線701上の値、信号線721上の値を
選択する。
【0146】そして、割り込み制御ユニット50から割
り込み発生がEステージで発生した旨通知された場合、
セレクタ207、208、209は、それぞれ信号線7
03上の値、信号線702上の値、信号線722上の値
を選択する。
【0147】したがって、上記構成の命令供給ユニット
20bによれば、割り込みがFステージ〜Eステージの
いずれのステージで発生した場合でも、アドレス線83
1上に割り込みが発生した命令の仮想アドレスを出力す
ることができ、アドレス線832上に割り込みが発生し
た命令の次に実行されるべき命令の仮想アドレスを出力
することができ、そして、信号線833上に、割り込み
が発生した命令の次に実行すべき命令の仮想アドレスが
分岐命令によって特定される分岐先の仮想アドレスであ
るか否かを示す信号を出力することができる。
【0148】また、上記の各実施形態では、説明を簡略
化するために、遅延スロットに含まれる命令が1つの場
合について説明した。しかしながら、実際にはこのよう
な制限は不要である。一例として、遅延スロットが2つ
の命令を含む場合にも対応することができるプロセッサ
及びその周辺装置について説明する。
【0149】図22は、2つの命令を遅延スロット中に
含む遅延分岐を実行するパイプライン方式のプロセッサ
とその周辺装置とを機能的に表した図である。
【0150】このプロセッサは、実行すべき各命令を、
命令読み出し前半のF0ステージ、命令読み出し後半の
F1ステージ、読み出した命令をデコードしてオペラン
ドを読み出すRステージ、演算を実行するEステージ、
そして、演算結果を書き込むWステージの5ステージに
分けて実行している。そして、各ステージの実行に1ク
ロック相当の時間を要している。したがって、1つの命
令を実行するには5クロック相当の時間が必要である。
【0151】また、図22に示すプロセッサ及びその周
辺装置が図1に示すものと異なる点は、命令供給ユニッ
ト20に代えて、命令供給ユニット20cを用いたこ
と、および割り込み制御ユニット50に代えて、割り込
み制御ユニット50bを用いたことである。その他の構
成は図1に示す第一実施形態のものと同様である。
【0152】図23は図22に示す命令供給ユニット2
0cの概略構成図である。ここで、図2又は図21に示
すものと同一の機能を有するものには、同一の符号を付
している。
【0153】図23に示す命令供給ユニット20cは、
割り込み信号線834を介して割り込み制御ユニット5
0bから通知された割り込み要求に基づいて、セレクタ
231〜235を以下のように動作させる。
【0154】割り込み制御ユニット50bから割り込み
がFステージで発生した旨通知された場合、セレクタ2
31、232、233、234、235は、それぞれ信
号線702上の値、信号線701上の値、信号線700
上の値、信号線721上の値、信号線720上の値を選
択する。
【0155】割り込み制御ユニット50bから割り込み
がRステージで発生した旨通知された場合、セレクタ2
31、232、233、234、235、それぞれ信号
線703上の値、信号線702上の値、信号線701上
の値、信号線722上の値、信号線721上の値を選択
する。
【0156】上記構成の命令供給ユニット20cでは、
割り込みが発生した場合に、アドレス線851上に、割
り込み処理終了後、最初に実行すべき命令の仮想アドレ
スが出力され、アドレス線852上に、割り込み処理終
了後、最初に実行すべき命令の次に実行すべき命令の仮
想アドレスが出力され、アドレス線853上に、割り込
み処理終了後、最初に実行すべき命令の次の次に実行す
べき命令の仮想アドレスが出力される。また、信号線8
55上に、アドレス線852上に出力された仮想アドレ
スが分岐命令によって特定される分岐先の命令の仮想ア
ドレスであるか否かを示す値が出力され、信号線856
上に、アドレス線853上に出力された仮想アドレスが
分岐命令によって特定される分岐先の命令の仮想アドレ
スであるか否かを示す値が出力される。
【0157】図24は図22に示す割り込み制御ユニッ
ト50bの概略構成図である。ここで、図3に示すもの
と同一の機能を有するものには、同一の符号を付してい
る。
【0158】図24に示す割込制御ユニット50bは、
命令供給ユニット20cのセレクタ231、232、2
33、234、235から転送された値を、それぞれレ
ジスタ551、552、553、554、555に格納
する。命令実行ユニット30は、識別信号線813、デ
ータ信号線814及び制御信号線815を用いて、セレ
クタ560、双方向ドライバ506を制御することによ
り、所望のレジスタに551〜555にアクセスするこ
とができる。
【0159】図25は図22に示すプロセッサが図4に
示すプログラムを実行した場合のパイプラインの流れを
示す図である。上記の各実施形態と同様に、実行中の命
令が分岐命令であることがわかるのがRステージである
とすると、分岐命令Qの後続命令である命令P、命令R
の2命令が分岐命令Qの遅延スロットの中の命令とな
る。
【0160】図26は図22に示すプロセッサで処理さ
れる割り込み処理プログラムの一例である。この割り込
み処理プログラムは、図6に示す第一実施形態の割り込
み処理プログラムと同様に、命令に割り込みが発生した
ときに実行される。尚、図6では、割り込み処理から復
帰する際に連続して発行される分岐命令が最大で2つで
あるが、ここでは最大で3つとなる(図26のL11参
照)。
【0161】最後に、本発明方式のプロセッサを用いた
システム構成例を図27に示す。図27は図1に示すプ
ロセッサ及びその周辺装置に、キーボードやディスプレ
イ等のI/Oデバイス60を接続している。命令実行ユ
ニット30は、アドレス線860、データ線861及び
制御信号線862を用いて、I/Oデバイス60へアク
セスし、その動作を制御する。
【0162】
【発明の効果】以上説明したように、本発明によれば、
CISCや圧縮後のVLIW等、命令長が一定でない命
令を実行する場合でも、割り込みが発生した命令が遅延
スロット中のものであるか否かにかかわらず、割り込み
を正確に処理することができるパイプライン方式のプロ
セッサ及び計算機システムを提供することができる。
【図面の簡単な説明】
【図1】本発明の一実施形態である割り込み制御方式を
用いたプロセッサとその周辺装置とを機能的に表した図
である。
【図2】図1に示す命令供給ユニットの概略構成図であ
る。
【図3】図1に示す割り込み制御ユニットの概略構成図
である。
【図4】図1に示すプロセッサで処理される遅延スロッ
トを有する分岐命令を含んだプログラムの一例を示す図
である。
【図5】図1に示すプロセッサが図4に示すプログラム
を実行した場合のパイプラインの流れを示す図である。
【図6】図1に示すプロセッサで処理される割り込み処
理プログラムの一例を示す図である。
【図7】図4に示すプログラムの命令Rで、Fステージ
実行中に割り込みが発生した場合におけるプログラムの
パイプラインの流れを示す図である。
【図8】図4に示すプログラムの命令Rで、Rステージ
実行中に割り込みが発生した場合におけるプログラムの
パイプラインの流れを示す図である。
【図9】図4に示すプログラムの命令Pで、Fステージ
実行中に割り込みが発生した場合におけるプログラムの
パイプラインの流れを示す図である。
【図10】図4に示すプログラムの命令Pで、Rステー
ジ実行中に割り込みが発生した場合におけるプログラム
のパイプラインの流れを示す図である。
【図11】本発明の二実施形態である割り込み制御方式
を用いたプロセッサとその周辺装置とを機能的に表した
図である。
【図12】図11に示す自動復帰ユニットの概略構成図
である。
【図13】図11に示すプロセッサで処理される割り込
み処理プログラムの一例を示す図である。
【図14】図4に示すプログラムの命令Rで、Fステー
ジ実行中に割り込みが発生した場合におけるプログラム
のパイプラインの流れを示す図である。
【図15】図4に示すプログラムの命令Rで、Rステー
ジ実行中に割り込みが発生した場合におけるプログラム
のパイプラインの流れを示す図である。
【図16】図4に示すプログラムの命令Pで、Fステー
ジ実行中に割り込みが発生した場合におけるプログラム
のパイプラインの流れを示す図である。
【図17】図4に示すプログラムの命令Pで、Rステー
ジ実行中に割り込みが発生した場合におけるプログラム
のパイプラインの流れを示す図である。
【図18】本発明の第三実施形態に用いる命令供給ユニ
ットの概略構成図である。
【図19】本発明の第三実施形態に用いる割り込み制御
ユニットの概略構成図である。
【図20】本発明の第三実施形態で用いるプロセッサで
処理される割り込み処理プログラムの一例を示す図であ
る。
【図21】本発明の第一実施形態で用いた命令供給ユニ
ットの変形例を示す図である。
【図22】2つの命令を遅延スロット中に含む遅延分岐
を実行するパイプライン方式のプロセッサとその周辺装
置とを機能的に表した図である。
【図23】図22に示す命令供給ユニット20cの概略
構成図である。
【図24】図22に示す割り込み制御ユニット50bの
概略構成図である。
【図25】図22に示すプロセッサが図4に示すプログ
ラムを実行した場合のパイプラインの流れを示す図であ
る。
【図26】図22に示すプロセッサで処理される割り込
み処理プログラムの一例である。
【図27】図1に示すプロセッサ及びその周辺装置を用
いたシステム構成例をに示す図である。
【図28】演算処理装置が実行するプログラムの一例を
示す図である。
【図29】パイプライン方式が採用されていない演算処
理装置が図28に示すプログラムを実行した場合のパイ
プラインの流れを示す図である。
【図30】パイプライン方式が採用されている演算処理
装置が図28に示すプログラムを実行した場合のパイプ
ラインの流れを示す図である。
【図31】分岐命令を含んだプログラムの一例を示す図
である。
【図32】パイプライン方式が採用されている演算処理
装置が図31に示すプログラムを実行した場合のパイプ
ラインの流れを示す図である。
【図33】遅延スロットを有する分岐命令を含んだプロ
グラムの一例を示す図である。
【図34】遅延分岐に対応したパイプライン方式の演算
処理装置が図31に示すプログラムを実行した場合のパ
イプラインの流れを示す図である。
【符号の説明】
10 命令格納用メモリ 20、20a、20b、20c 命令供給ユニット 30、30a 命令実行ユニット 31 演算用レジスタ 32 割り込み先レジスタ 33 自動復帰ユニット 34 自動復帰用レジスタ 40 データ格納用メモリ 41 アドレス変換テーブル 50、50a、50b 割り込み制御ユニット 60 I/Oデバイス 201 命令変換ユニット 202〜204、220、221、501〜503、5
04a、551〜555レジスタ 205 加算器 206〜209、216、231〜235、331、3
32、505、507、560 セレクタ 210 アドレス変換回路 211 アドレス変換キャッシュ 215 比較器 333 自動復帰用レジスタ読み込み回路 334 自動復帰処理回路 504 割り込み調整回路 506 双方向ドライバ
フロントページの続き (72)発明者 小島 啓二 神奈川県川崎市麻生区王禅寺1099番地 株式会社日立製作所 システム開発研究 所内 (72)発明者 西岡 清和 神奈川県川崎市麻生区王禅寺1099番地 株式会社日立製作所 システム開発研究 所内 (72)発明者 黒川 能毅 神奈川県川崎市麻生区王禅寺1099番地 株式会社日立製作所 システム開発研究 所内 (56)参考文献 特開 平5−143363(JP,A) 特開 昭62−3342(JP,A) 特開 平4−133132(JP,A) 特開 平1−123325(JP,A) 特開 昭62−54342(JP,A) 特開 平2−75023(JP,A) 特開 平5−12012(JP,A) 特開 平5−143362(JP,A) 特開 平7−152564(JP,A) (58)調査した分野(Int.Cl.7,DB名) G06F 9/38 G06F 9/46

Claims (5)

    (57)【特許請求の範囲】
  1. 【請求項1】少なくとも1つの命令を遅延スロット中に
    含む分岐命令を実行するパイプライン方式の演算処理装
    置において、記憶装置に可変長で格納された当該分岐命
    令を含む複数の命令を順次読み出して処理する際に用い
    る割り込み制御装置であって、 割り込みが発生した場合に、当該割り込みが発生した命
    令から、当該割り込みが発生した命令より前記遅延スロ
    ットに含まれる命令の数だけ後に実行すべき命令までの
    各アドレスを格納するアドレス格納手段と、 前記割り込み処理が完了した後に、前記アドレス格納手
    段に格納された各アドレスを、前記割り込みが発生した
    命令のアドレスから順次読み出すアドレス読出し手段
    と、 前記アドレス読み出し手段によって最初に読み出したア
    ドレスへ分岐して、命令を実行する第一の命令実行手段
    と、 前記アドレス読み出し手段によって2番目以降に読み出
    した各アドレスについて、当該アドレスが前記分岐命令
    によって指定された命令のアドレスであるときは、当該
    アドレスへ分岐して命令を実行し、前記分岐命令によっ
    て指定された命令以外の命令のアドレスであるときは、
    現在実行されている命令の後続命令を実行する第二の命
    令実行手段と、 を具備することを特徴とする割り込み制御装置。
  2. 【請求項2】請求項1において、 実行している命令のアドレスに当該命令の命令長を加算
    して、次に読み出して実行すべき命令のアドレスを生成
    するアドレス生成手段を備え、 前記第二の命令実行手段は、前記割り込みが発生した時
    点で、当該割り込みが発生した命令の命令長が判明して
    いる場合には、前記アドレス読み出し手段で2番目に読
    み出したアドレスが前記分岐命令によって指定された命
    令以外の命令のアドレスであっても、当該アドレスへ分
    岐して命令を実行することを特徴とする割り込み制御装
    置。
  3. 【請求項3】請求項1又は2において、 前記割り込みが発生した命令の次に実行すべき命令か
    ら、前記割り込みが発生した命令より前記遅延スロット
    に含まれる命令の数だけ後に実行すべき命令までの各命
    令について、前記割り込みが発生した命令より前記遅延
    スロットに含まれる命令の数だけ前に実行した命令が前
    記分岐命令であるか否かを示す情報を格納する分岐情報
    格納手段を備え、 前記第二の命令実行手段は、前記分岐情報格納手段に格
    納された情報を基に、前記アドレス読み出し手段によっ
    て2番目以降に読み出した各アドレスについて、当該ア
    ドレスが前記分岐命令によって指定された命令のアドレ
    スであるか否かを判断することを特徴とする割り込み制
    御装置。
  4. 【請求項4】請求項1又は2において、 前記割り込みが発生した命令の次に実行すべき命令か
    ら、前記割り込みが発生した命令より前記遅延スロット
    に含まれる命令の数だけ後に実行すべき命令までの各命
    令について、前記割り込みが発生した命令より前記遅延
    スロットに含まれる命令の数だけ前に実行した命令が前
    記分岐命令でない場合には、当該命令のアドレスとし
    、分岐先として有り得ない仮想アドレスを前記アドレ
    ス格納手段に格納させるアドレス格納制御手段を備え、 前記第二の命令実行手段は、前記アドレス読み出し手段
    によって2番目以降に読み出した各アドレスについて、
    当該アドレスが前記分岐先として有り得ない仮想アドレ
    のときには、当該アドレスへの分岐を実行しないこと
    を特徴とする割り込み制御装置。
  5. 【請求項5】命令格納用メモリに可変長で格納された、
    分岐命令を含む複数の命令を順次読み出して実行するパ
    イプライン方式のプロセッサであって、 前記命令格納用メモリから命令を順次読み出すと共に、
    前記読み出した命令が分岐命令である場合、当該分岐命
    令の遅延スロットに含まれる後続命令を読み出した後
    に、当該分岐命令によって指定される分岐先アドレスの
    命令を読み出す命令供給ユニットと、 前記命令供給ユニットによって読み出された命令を実行
    すると共に、前記読み出された命令が分岐命令である場
    合に、当該分岐命令によって指定される分岐先アドレス
    を前記命令供給ユニットに通知する命令実行ユニット
    と、 割り込みが発生した場合に、割り込み処理からの復帰後
    に実行すべき命令を制御する割り込み制御ユニットと、
    を備え、 前記割り込み制御ユニットは、割り込みが発生した場合
    に、当該割り込みが発生した命令から、当該割り込みが
    発生した命令より前記遅延スロットに含まれる命令の数
    だけ後に実行すべき命令までの各アドレスを格納するレ
    ジスタを有し、前記割り込み処理が完了した後に、前記
    レジスタに格納された各アドレスを、前記割り込みが発
    生した命令のアドレスから順次読み出すものであり、 前記命令供給ユニットは、割り込み処理からの復帰に際
    して、前記割り込み制御ユニットによって前記レジスタ
    から最初に読み出したアドレスの命令を読み出すと共
    に、前記割り込み制御ユニットによって前記レジスタか
    ら2番目以降に読み出したアドレスについては、当該ア
    ドレスが前記分岐命令によって指定された命令のアドレ
    スであるときは、当該アドレスへ分岐して命令を実行
    し、前記分岐命令によって指定された命令以外の命令の
    アドレスであるときは、最新に読み出した命令の後続命
    令を読み出すものであることを特徴とするプロセッサ。
JP17777396A 1996-07-08 1996-07-08 割り込み制御装置及びプロセッサ Expired - Fee Related JP3439033B2 (ja)

Priority Applications (4)

Application Number Priority Date Filing Date Title
JP17777396A JP3439033B2 (ja) 1996-07-08 1996-07-08 割り込み制御装置及びプロセッサ
TW086108589A TW333628B (en) 1996-07-08 1997-06-19 Method, processor and computer system for interrupt control used for different lengths of commands that the interrupt command can be correctly executed.
KR1019970031357A KR100291602B1 (ko) 1996-07-08 1997-07-07 인터럽트제어장치,프로세서및계산기시스템
US08/888,789 US5815696A (en) 1996-07-08 1997-07-07 Pipeline processor including interrupt control system for accurately perform interrupt processing even applied to VLIW and delay branch instruction in delay slot

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP17777396A JP3439033B2 (ja) 1996-07-08 1996-07-08 割り込み制御装置及びプロセッサ

Publications (2)

Publication Number Publication Date
JPH1021074A JPH1021074A (ja) 1998-01-23
JP3439033B2 true JP3439033B2 (ja) 2003-08-25

Family

ID=16036873

Family Applications (1)

Application Number Title Priority Date Filing Date
JP17777396A Expired - Fee Related JP3439033B2 (ja) 1996-07-08 1996-07-08 割り込み制御装置及びプロセッサ

Country Status (4)

Country Link
US (1) US5815696A (ja)
JP (1) JP3439033B2 (ja)
KR (1) KR100291602B1 (ja)
TW (1) TW333628B (ja)

Families Citing this family (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6016543A (en) * 1997-05-14 2000-01-18 Mitsubishi Denki Kabushiki Kaisha Microprocessor for controlling the conditional execution of instructions
US6546479B1 (en) * 1998-02-10 2003-04-08 Koninklijke Philips Electronics N.V. Reduced instruction fetch latency in a system including a pipelined processor
US6965991B1 (en) * 2000-05-12 2005-11-15 Pts Corporation Methods and apparatus for power control in a scalable array of processor elements
US6789184B1 (en) 2000-09-29 2004-09-07 Intel Corporation Instruction address generation and tracking in a pipelined processor
JP2002189603A (ja) * 2000-12-19 2002-07-05 Fujitsu Ltd 計算機とその制御方法
US6950150B2 (en) * 2001-06-11 2005-09-27 Analog Devices, Inc. Method and a processor for processing two digital video signals clocked by respective clock signals of identical frequency but with a constant phase shift therebetween
JP3738842B2 (ja) * 2002-06-04 2006-01-25 富士通株式会社 遅延分岐機能を備えた情報処理装置
JP4073721B2 (ja) 2002-06-28 2008-04-09 株式会社ルネサステクノロジ データ処理装置
US7831979B2 (en) * 2004-04-28 2010-11-09 Agere Systems Inc. Processor with instruction-based interrupt handling
US8037468B2 (en) * 2006-08-02 2011-10-11 Sandisk Il Ltd. Methods for synchronous code retrieval from an asynchronous source
US8230198B2 (en) * 2006-08-02 2012-07-24 Sandisk Il Ltd. System for synchronous code retrieval from an asynchronous source
US8019566B2 (en) * 2007-09-11 2011-09-13 International Business Machines Corporation System and method for efficiently testing cache congruence classes during processor design verification and validation
US8006221B2 (en) 2007-09-11 2011-08-23 International Business Machines Corporation System and method for testing multiple processor modes for processor design verification and validation
US7992059B2 (en) 2007-09-11 2011-08-02 International Business Machines Corporation System and method for testing a large memory area during processor design verification and validation
US20090070570A1 (en) * 2007-09-11 2009-03-12 Shubhodeep Roy Choudhury System and Method for Efficiently Handling Interrupts
US8099559B2 (en) * 2007-09-11 2012-01-17 International Business Machines Corporation System and method for generating fast instruction and data interrupts for processor design verification and validation
US8473725B2 (en) * 2009-12-21 2013-06-25 Ceva D.S.P., Ltd. System and method for processing interrupts in a computing system
US11768689B2 (en) 2013-08-08 2023-09-26 Movidius Limited Apparatus, systems, and methods for low power computational imaging
US10001993B2 (en) 2013-08-08 2018-06-19 Linear Algebra Technologies Limited Variable-length instruction buffer management
WO2016016726A2 (en) * 2014-07-30 2016-02-04 Linear Algebra Technologies Limited Vector processor
CN108710506B (zh) * 2018-05-31 2021-01-22 北京智行者科技有限公司 车辆的指令处理方法

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4881196A (en) * 1985-02-19 1989-11-14 Mitsubishi Denki Kabushiki Kaisha Data transmission line branching system
EP0402524B1 (en) * 1988-11-25 1996-10-02 Nec Corporation Microcomputer capable of quickly processing a branch instruction code
US5287522A (en) * 1990-06-29 1994-02-15 Bull Hn Information Systems, Inc. External procedure invocation apparatus utilizing internal branch vector interrupts and vector address generation, in a RISC chip
JPH05143363A (ja) * 1991-11-19 1993-06-11 Toshiba Corp 割込み処理方式
JPH0749790A (ja) * 1993-06-01 1995-02-21 Matsushita Electric Ind Co Ltd プロセッサにおける割り込み制御方法及び割り込み制御回路
JP3159345B2 (ja) * 1993-07-02 2001-04-23 日本電気株式会社 パイプライン演算処理装置

Also Published As

Publication number Publication date
US5815696A (en) 1998-09-29
TW333628B (en) 1998-06-11
KR100291602B1 (ko) 2001-09-17
JPH1021074A (ja) 1998-01-23
KR980010764A (ko) 1998-04-30

Similar Documents

Publication Publication Date Title
JP3439033B2 (ja) 割り込み制御装置及びプロセッサ
US4755966A (en) Bidirectional branch prediction and optimization
JP2786574B2 (ja) コンピュータ・システムにおける順不同ロード動作の性能を改善する方法と装置
US6230259B1 (en) Transparent extended state save
JPH0242569A (ja) ベクター処理システムに用いる文脈スイッチング方法及び装置
JPH0517588B2 (ja)
JP2000330789A (ja) コンピュータシステムおよびその命令実行方法
JPH0250260A (ja) ベクタープロセッサの例外報告機構
JPH0215369A (ja) ベクター処理システムの命令を実行する方法及び装置
EP1039376B1 (en) Sub-instruction emulation in a VLIW processor
JPH06266556A (ja) データ処理装置
JPH1196006A (ja) 情報処理装置
US11782871B2 (en) Method and apparatus for desynchronizing execution in a vector processor
JPH06324861A (ja) Cpu制御システム及び制御方法
JP2005275703A (ja) プロセッサ及びコンテキスト切り替え方法
JP3476314B2 (ja) マイクロプロセッサ
JPH0248733A (ja) 情報処理装置
JP3097602B2 (ja) データ処理装置
WO2022231733A1 (en) Method and apparatus for desynchronizing execution in a vector processor
JP2806690B2 (ja) マイクロプロセッサ
JPH06139071A (ja) 並列計算機
JP2622026B2 (ja) 中央処理装置におけるレジスタ書込制御方式
JPS6149695B2 (ja)
JPH02206836A (ja) データ処理装置
JPH01296345A (ja) 情報処理装置

Legal Events

Date Code Title Description
FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20080613

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20080613

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20090613

Year of fee payment: 6

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

Free format text: PAYMENT UNTIL: 20100613

Year of fee payment: 7

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

Free format text: PAYMENT UNTIL: 20100613

Year of fee payment: 7

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

Free format text: PAYMENT UNTIL: 20110613

Year of fee payment: 8

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

Free format text: PAYMENT UNTIL: 20110613

Year of fee payment: 8

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

Free format text: PAYMENT UNTIL: 20120613

Year of fee payment: 9

LAPS Cancellation because of no payment of annual fees