JPH1021074A - 割り込み制御方式、プロセッサ及び計算機システム - Google Patents
割り込み制御方式、プロセッサ及び計算機システムInfo
- Publication number
- JPH1021074A JPH1021074A JP8177773A JP17777396A JPH1021074A JP H1021074 A JPH1021074 A JP H1021074A JP 8177773 A JP8177773 A JP 8177773A JP 17777396 A JP17777396 A JP 17777396A JP H1021074 A JPH1021074 A JP H1021074A
- 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.)
- Granted
Links
- 238000012545 processing Methods 0.000 claims abstract description 94
- 238000000034 method Methods 0.000 claims abstract description 38
- 230000009191 jumping Effects 0.000 claims 1
- 238000010586 diagram Methods 0.000 description 61
- 238000006243 chemical reaction Methods 0.000 description 22
- 230000002093 peripheral effect Effects 0.000 description 17
- 238000012546 transfer Methods 0.000 description 13
- 238000013519 translation Methods 0.000 description 10
- 238000013500 data storage Methods 0.000 description 9
- 230000003111 delayed effect Effects 0.000 description 9
- 230000004044 response Effects 0.000 description 6
- 230000002457 bidirectional effect Effects 0.000 description 4
- 230000006870 function Effects 0.000 description 4
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000004364 calculation method Methods 0.000 description 2
- 230000001364 causal effect Effects 0.000 description 2
- 238000003672 processing method Methods 0.000 description 2
- 230000003213 activating effect Effects 0.000 description 1
- 230000006835 compression Effects 0.000 description 1
- 238000007906 compression Methods 0.000 description 1
- 230000010485 coping Effects 0.000 description 1
- 230000006837 decompression Effects 0.000 description 1
- 230000005764 inhibitory process Effects 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 238000012163 sequencing technique Methods 0.000 description 1
- 230000033772 system development Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/32—Address formation of the next instruction, e.g. by incrementing the instruction counter
- G06F9/322—Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
- G06F9/327—Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address for interrupts
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/22—Microcontrol or microprogram arrangements
- G06F9/26—Address formation of the next micro-instruction ; Microprogram storage or retrieval arrangements
- G06F9/262—Arrangements for next microinstruction selection
- G06F9/268—Microinstruction selection not based on processing results, e.g. interrupt, patch, first cycle store, diagnostic programs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3005—Arrangements for executing specific machine instructions to perform operations for flow control
- G06F9/30058—Conditional branch instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30145—Instruction analysis, e.g. decoding, instruction word fields
- G06F9/30149—Instruction analysis, e.g. decoding, instruction word fields of variable length instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3802—Instruction prefetching
- G06F9/3804—Instruction prefetching for branches, e.g. hedging, branch folding
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Advance Control (AREA)
- Bus Control (AREA)
Abstract
に処理する。 【解決手段】割り込みが発生した場合に、当該割り込み
が発生した命令から、当該命令の遅延スロット中の命令
数だけ後に実行すべき命令までの各アドレスを生成する
命令供給ユニット20と、生成した各アドレスを格納す
る割り込み制御ユニット50と、割り込み処理終了後、
格納された各アドレスを割り込みが発生した命令のアド
レスから順番に読み出す命令実行ユニット30と、を備
える。命令実行ユニット30は、最初に読み出したアド
レスへの分岐命令を実行し、その後、2番目以降に読み
出したアドレスについて、当該アドレスが分岐命令の分
岐先アドレスであるときは、当該アドレスへの分岐命令
を実行し、分岐先アドレスでないときは、NOP命令を
実行する。
Description
する分岐命令を実行するパイプライン方式の演算処理装
置において、割り込みが発生した際の制御方式及び当該
方式を用いたプロセッサ、計算機システムに関する。
法として、処理のパイプライン化がある。以下に、演算
処理装置のパイプライン化について図面を参照して説明
する。
ムの一例を示す図、図29はパイプライン方式が採用さ
れていない演算処理装置が図28に示すプログラムを実
行した場合のパイプラインの流れを示す図、図30はパ
イプライン方式が採用されている演算処理装置が図28
に示すプログラムを実行した場合のパイプラインの流れ
を示す図である。
30に示すように、パイプライン方式が採用されている
か否かにかかわらず、各命令を、命令を読み出すFステ
ージ、読み出した命令をデコードしてオペランドを読み
出すRステージ、演算を実行するEステージ、そして、
演算結果を書き込むWステージの4ステージに分けて実
行する。そして、各ステージの実行に1クロック相当の
時間を要する。したがって、1つの命令を実行するには
4クロック相当の時間が必要となる。
処理装置では、図29に示すように、ある命令の全ステ
ージの実行が終了した後に、次の命令を実行する。した
がって、プログラムがn個の命令で構成されている場
合、当該プログラムの処理には、4nクロック相当の時
間が必要である。これに対し、パイプライン方式が採用
されている演算処理装置では、図30に示すように、あ
る命令のFステージの実行が終了した後に、当該命令の
Rステージの実行開始と同時に次の命令の実行を開始す
る。したがって、プログラムがn個の命令で構成されて
いる場合、当該プログラムの処理は、n+3クロック相
当の時間で済む。このように、パイプライン方式の演算
処理装置では、複数の命令をオーバーラップして実行す
るので、プログラムの処理速度を向上させることができ
る。
置では、プログラム中に分岐命令があると、プログラム
処理性能が低下するという問題がある。以下に、この問
題を図面を参照して説明する。図31は分岐命令を含ん
だプログラムの一例を示す図である。ここで、JMPは
分岐を示すコマンドである。命令Qは、命令X、Yから
なるルーチンL1に分岐すべき旨を命令している。
る演算処理装置が図31に示すプログラムを実行した場
合のパイプラインの流れを示す図である。通常、演算処
理装置は、命令をデコードして、すなわちRステージを
実行して、初めて当該命令が分岐命令であるか否かを認
識することができる。云い換えれば、Rステージになら
ないと、当該命令が分岐命令かどうかを判断することが
できない。このため、パイプライン方式の演算処理装置
では、図32に示すように、命令Qの次には、命令Qが
指定する分岐先L1の命令Xが実行されるべきであるに
もかかわらず、命令Rが実行されてしまう。そして、命
令QのRステージが実行されて当該命令が分岐命令であ
ることが判明した時点で、命令Rの実行が中止される。
このように、パイプライン方式の演算処理装置では、分
岐命令の次の命令が誤って実行されてしまうために、無
駄なサイクルが発生してプログラム処理性能が低下す
る。
ある。遅延分岐とは、分岐が発生したときに、分岐命令
の後続命令をいくつか実行してから、分岐先の命令を実
行する方法である。一般に、分岐命令の次に実行される
後続命令を遅延スロット中の命令と称する。以下に、遅
延分岐について図面を参照して説明する。図33は遅延
スロットを有する分岐命令を含んだプログラムの一例を
示す図、図34は遅延分岐に対応したパイプライン方式
の演算処理装置が図31に示すプログラムを実行した場
合のパイプラインの流れを示す図である。尚、ここで
は、遅延スロットに含まれる命令が1つの場合について
説明する。
算処理装置では、図34に示すように、命令QのRステ
ージが実行されて当該命令が分岐命令であることが判明
したにもかかわらず、分岐命令の後続命令である命令P
の実行を中止せずに行っている。そして、命令Pの次
に、命令Qが指定する分岐先であるルーチンL1の命令
Xを実行している。このように、遅延分岐に対応したパ
イプライン方式の演算処理装置では、分岐先の命令を実
行する際に、実行中である分岐命令の後続命令を中止し
ないので、無駄なサイクルが発生しない。
ライン方式の演算処理装置では、遅延スロットに含まれ
る命令の実行中に割り込みが発生した場合、割り込み処
理プログラムからの戻り方に工夫が必要である。すなわ
ち、通常の演算処理装置で用いられているような、割り
込みが発生した命令のアドレス値のみを退避する方法で
は、図34において、遅延スロット中の命令Pで割り込
みが発生した場合、命令Pのアドレスのみが退避される
ことになる。この場合、命令Qで指定された分岐先L1
の命令Xのアドレスが退避されないので、割り込み処理
プログラムから戻ってきた後、命令P、命令X、命令Y
の順番で実行すべきところを、命令P、命令R、命令S
の順序で実行してしまう。
−143363号記載の割り込み処理方式がある。当該
方式では、割り込み処理プログラムからの戻り先のアド
レス保持する第1のアドレス保持手段と、割り込み処理
プログラムからの戻り先アドレスの命令の次に実行する
命令のアドレスを保持する第2のアドレス保持手段とを
設け、割り込み処理プログラムから戻るときには第1の
アドレス保持手段に保持されているアドレスへ分岐し、
当該命令の実行後、第2のアドレス保持手段に保持され
ているアドレスへ分岐するようにしたものである。
命令が一つの場合、遅延スロット中の命令で割り込みが
発生したときでも、割り込み処理プログラムから復帰
後、適正な順番で命令を実行することができるようにし
ている。
143363号記載の方式では、演算処理装置として、
命令長が一定であるRISC(Reduced Instruction Se
t Computer)を用いることを前提としている。すなわ
ち、遅延スロット中の命令以外の命令で割り込みが発生
した場合、命令長が一定であるということを利用して、
第1のアドレス保持手段に退避させた、割り込みが発生
した命令のアドレスに、所定の命令長を加算することに
より、第2のアドレス保持手段に退避させるべきアドレ
スを算出している。
C(Complex Instruction Set Computer)では、命令を
読み出すFステージが実行されて初めて当該命令の命令
長が判別される。このため、遅延スロット中の命令以外
の命令で割り込みが発生した場合、割り込みが当該命令
のFステージ実行完了前に発生したときには、当該命令
の命令長が判別していないことがある。この場合、上記
特開平5−143363号記載の方式では、第2のアド
レス保持手段に退避させるべきアドレスを適正に算出で
きないという問題がある。
の演算処理装置の方式として注目されているVLIW
(Very Long Instruction Word)では、命令長は一定で
あるが、同時に実行させたい複数の処理を1つの命令に
結合するため、命令の冗長性が悪い。このため、命令を
圧縮してメモリに格納するのが一般的である。しかしな
がら、命令を圧縮した場合、圧縮後の命令の命令長が一
定でなくなることがあるので、上記特開平5−1433
63号記載の方式では、VLIWに適用した場合にも、
第2のアドレス保持手段に退避させるべきアドレスを適
正に算出できないことがあるという問題がある。
のであり、命令長が一定でない場合にも、割り込みを正
確に処理することができる割り込み処理方式及び当該方
式を用いたプロセッサ、計算機システムを提供すること
を目的とする。
に、本発明の割り込み制御方式は、少なくとも1つの命
令を遅延スロット中に含む分岐命令を実行するパイプラ
イン方式の演算処理装置において、記憶装置に可変長で
格納された当該分岐命令を含む複数の命令を順次読み出
して処理する際に用いる割り込み制御方式であって、割
り込みが発生した場合に、当該割り込みが発生した命令
から、当該命令の前記遅延スロットに含まれる命令の数
だけ後に実行すべき命令までの各アドレスを格納するア
ドレス格納手段と、前記割り込み処理が完了した後に、
前記アドレス格納手段に格納された各アドレスを、前記
割り込みが発生した命令のアドレスから順次読み出すア
ドレス読出し手段と、前記アドレス読み出し手段によっ
て最初に読み出したアドレスへ分岐して、命令を実行す
る第一の命令実行手段と、前記アドレス読み出し手段に
よって2番目以降に読み出した各アドレスについて、当
該アドレスが前記分岐命令によって指定された命令のア
ドレスであるときは、当該アドレスへ分岐して命令を実
行し、前記分岐命令によって指定された命令以外の命令
のアドレスであるときは、現在実行されている命令の後
続命令を実行する第二の命令実行手段と、を具備するこ
とを特徴とする。
該命令の命令長を加算して、次に読み出して実行すべき
命令のアドレスを生成するアドレス生成手段を備えてい
る場合、前記第二の命令実行手段は、前記割り込みが発
生した時点で、当該割り込みが発生した命令の命令長が
判明している場合には、前記アドレス読み出し手段で2
番目に読み出したアドレスが前記分岐命令によって指定
された命令以外の命令のアドレスであっても、当該アド
レスへ分岐して命令を実行するようにしてもよい。
メモリに可変長で格納された、分岐命令を含む複数の命
令を順次読み出して実行するパイプライン方式のプロセ
ッサであって、前記命令格納用メモリから命令を順次読
み出すと共に、前記読み出した命令が分岐命令である場
合、当該分岐命令の遅延スロットに含まれる後続命令を
読み出した後に、当該分岐命令によって指定される分岐
先アドレスの命令を読み出す命令供給ユニットと、前記
命令供給ユニットによって読み出された命令を実行する
と共に、前記読み出された命令が分岐命令である場合
に、当該分岐命令によって指定される分岐先アドレスを
前記命令供給ユニットに通知する命令実行ユニットと、
割り込みが発生した場合に、割り込み処理からの復帰後
に実行すべき命令を制御する割り込み制御ユニットと、
を備え、前記割り込み制御ユニットは、割り込みが発生
した場合に、当該割り込みが発生した命令から、当該命
令の前記遅延スロットに含まれる命令の数だけ後に実行
すべき命令までの各アドレスを格納するレジスタを有
し、前記割り込み処理が完了した後に、前記レジスタに
格納された各アドレスを、前記割り込みが発生した命令
のアドレスから順次読み出すものであり、前記命令供給
ユニットは、割り込み処理からの復帰に際して、前記割
り込み制御ユニットによって前記レジスタから最初に読
み出したアドレスの命令を読み出すと共に、前記割り込
み制御ユニットによって前記レジスタから2番目以降に
読み出したアドレスについては、当該アドレスが前記分
岐命令によって指定された命令のアドレスであるとき
は、当該アドレスへ分岐して命令を実行し、前記分岐命
令によって指定された命令以外の命令のアドレスである
ときは、最新に読み出した命令の後続命令を読み出すも
のであることを特徴とする。
のプロセッサと、分岐命令を含む複数の命令が可変長で
格納された命令格納用メモリと、前記プロセッサを入出
力装置に接続するI/Oデバイスと、を備えたことを特
徴とする。
ついて図面を参照して説明する。
み制御方式を用いたプロセッサとその周辺装置とを機能
的に表した図である。
たプロセッサは、分岐命令を含む複数の命令からなるプ
ログラムを処理する際に、1つの命令を遅延スロット中
に含む遅延分岐を実行するパイプライン方式のプロセッ
サである。
行すべき各命令を、命令を読み出すFステージ、読み出
した命令をデコードしてオペランドを読み出すRステー
ジ、演算を実行するEステージ、そして、演算結果を書
き込むWステージの4ステージに分けて実行している。
そして、各ステージの実行に1クロック相当の時間を要
している。したがって、1つの命令を実行するには4ク
ロック相当の時間が必要である。
周辺装置は、図1に示すように、命令格納用メモリ10
と、命令供給ユニット20と、命令実行ユニット30
と、データ格納用メモリ40と、を備えている。ここ
で、命令供給ユニット20、命令実行ユニット30及び
割り込み制御ユニット50がプロセッサに相当する。命
令格納用メモリ10及びデータ格納用メモリ40は、周
辺装置である。
成された所定のプログラムや、割り込み処理を行うため
の割り込み処理プログラム等を格納している。命令格納
用メモリ10は、アドレス線800を介して通知された
物理アドレスに格納されている命令を読み出し、データ
線801を用いて命令供給ユニット20へ転送する。
ット20でのアドレス変換(仮想アドレスを物理アドレ
スに変換)に使用するアドレス変換テーブル41の他、
命令実行ユニット30での演算処理に使用するデータ等
を格納している。データ格納用メモリ40は、制御線8
22を介して読み出しが通知された場合、アドレス線8
20を介して転送された物理アドレスに格納されている
データを読み出し、データ線821を用いて命令実行ユ
ニット30へ転送する。また、制御線822を介して書
き込みが通知された場合、データ線821を介して命令
実行ユニット30から転送されたデータを、アドレス線
820を介して転送された物理アドレスに書き込む。
の仮想アドレスを生成した後、当該仮想アドレスを物理
アドレスにアドレス変換し、この物理アドレスをアドレ
ス線800を用いて命令格納用メモリ10に転送する。
これにより、命令格納用メモリ10から実行すべき命令
を読み出す。また、データ線801によってメモリ格納
用ユニット10から転送された命令の命令長を検出する
と共に、必要に応じて所定の処理を行い、その後、当該
命令をデータ線810を用いて命令実行ユニット30へ
転送する。尚、これ等の処理はFステージで行われる。
変換動作に支障が生じて割り込みが発生した場合、当該
ユニット20で割り込みが発生した旨を命令供給割り込
み信号線830を用いて割り込み制御ユニット50へ通
知する。尚、本実施形態では、命令供給ユニット20で
生じた割り込みは、全てFステージで発生するものとす
る。
み信号線834を介して割り込み制御ユニット50から
割り込み要求を受け取とった場合、割り込み処理プログ
ラム実行後の戻り仮想アドレス、すなわち割り込み処理
が発生した命令の仮想アドレスと、当該命令の次に実行
すべき命令の仮想アドレスとを、それぞれアドレス線8
31、832を用いて割り込み制御ユニット50へ転送
する。また、信号線832を用いて転送した仮想アドレ
ス、すなわち割り込み処理が発生した命令の次に実行す
べき命令の仮想アドレスが分岐命令によって特定される
分岐先アドレスであるか否かを示す信号を、信号線83
3を用いて割り込み制御ユニット50へ転送する。
を介して命令供給ユニット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を用いて、所望のレ
ジスタにアクセスする。
コードした命令が正しい命令でない場合、当該ユニット
30で割り込みが発生した旨を、命令実行割り込み信号
線835を用いて割り込み制御ユニット50へ通知す
る。また、割り込み先レジスタ32に予め格納されてい
る分岐先の仮想アドレスへの分岐を実行することによ
り、命令格納用メモリ10に格納されている割り込み処
理プログラムの処理を開始する。尚、本実施形態では、
命令実行ユニット30における割り込みは、全てRステ
ージで発生するものとする。
り込み信号線835又は命令供給割り込み信号線830
によって送られてきた割り込み通知を受け取って、優先
順位や割り込みマスク等のチェックを行い、その後、割
り込み信号線834を用いて、割り込み要求と、割り込
みがどのステージで発生したかを示す信号とを、命令供
給ユニット20及び命令実行ユニット30へ出力する。
ついて具体的に説明する。
概略構成図である。
に、命令変換ユニット201と、レジスタ202〜20
4と、加算器205と、セレクタ206〜209と、ア
ドレス変換回路210と、を備えている。
1によって命令格納用メモリ10から転送された命令を
受け取って、当該命令に命令伸張等の変換処理を行う。
そして、当該変換処理が行われた命令をデータ線810
を介して命令実行ユニット30へ転送する。また、受け
取った命令の命令長を検出し、検出した命令長を信号線
710を介して加算器205へ転送する。
力された仮想アドレスを保持すると同時に、今まで保持
していた仮想アドレスをアドレス線701に出力する。
これにより、Fステージ実行中の命令、すなわち命令供
給ユニット20によって読み出しアクセスされている命
令の仮想アドレスを保持する。レジスタ203は、アド
レス線701に出力された仮想アドレスを保持すると同
時に、今まで保持していた仮想アドレスをアドレス線7
02に出力する。これにより、Rステージ実行中の命
令、すなわち命令実行ユニット30でデコードしている
命令の仮想アドレスを保持する。レジスタ204は、分
岐要求信号線812上の信号を保持すると同時に、今ま
で保持していた信号を信号線721に出力する。これに
より、信号線812には、Fステージ実行中の命令の1
つ前に実行されている命令、すなわちRステージ実行中
の命令が分岐命令であるか否かを示す信号が出力され、
信号線721にはRステージ実行中の命令の1つ前に実
行されている命令、すなわちEステージ実行中の命令が
分岐命令であるか否かを示す信号が出力される。
令変換ユニット201から転送された命令長に、アドレ
ス線701に出力された仮想アドレス、すなわち、Fス
テージの実行が完了した命令の仮想アドレスを加算す
る。これにより、分岐が発生しない場合に次に実行すべ
き命令の仮想アドレスを算出して、アドレス線720に
出力する。
によって命令実行ユニット30から分岐要求が送られて
きた場合、分岐先アドレス線811によって命令実行ユ
ニット30から転送された分岐先の仮想アドレスを選択
する。一方、分岐要求が送られていない場合、アドレス
線720によって加算器205から転送された仮想アド
レスを選択する。そして、セレクタ206は、選択した
仮想アドレスを次に実行すべき命令の仮想アドレスとし
て、アドレス線700に出力する。
6によってアドレス線700上に出力された次に実行す
べき命令の仮想アドレスを受け取って、当該仮想アドレ
スを物理アドレスへ変換する。そして、変換した物理ア
ドレスをアドレス線800を介して命令格納用メモリ1
0に転送する。これにより、命令格納用メモリ10は、
当該物理アドレスに格納された命令をデータ線801を
介してメモリ供給ユニット20の命令変換ユニット20
1へ転送する。
ドレス変換は、アドレス変換回路210が備えるアドレ
ス変換キャッシュ211を参照して行う。アドレス変換
キャッシュ211は、アドレス変換を高速に行うための
ものであり、データ格納用メモリ40に格納されたアド
レス変換テーブル41の一部分のコピーを格納してい
る。アドレス変換回路210は、アドレス変換に必要な
値がアドレス変換キャッシュ211に存在しない場合
(この場合、仮想アドレスは誤った物理アドレスに変換
される)、原因となる命令がFステージを完了したとき
に、命令供給割り込み信号線830を用いて、割り込み
が発生した旨を割り込み制御ユニット50へ通知する。
合に、割り込み処理プログラムから戻ったときに最初に
実行すべき命令の仮想アドレス、すなわち当該割り込み
が発生した命令の仮想アドレスを、アドレス線831を
介して割り込み制御ユニット50へ転送する。具体的に
は、割り込み信号線834を介して割り込み制御ユニッ
ト50からFステージで割り込みが発生した旨通知され
た場合、アドレス線701上の仮想アドレス、すなわち
Fステージを実行していた命令(当該割り込みが発生し
た命令)の仮想アドレスを選択して、アドレス線831
に出力する。一方、割り込み信号線834を介して割り
込み制御ユニット50からRステージで割り込みが発生
した旨通知された場合、アドレス線702上の仮想アド
レス、すなわちRステージを実行していた命令(当該割
り込みが発生した命令)の仮想アドレスを選択して、ア
ドレス線831に出力する。
合に、割り込み処理プログラムから戻ったときに最初に
実行すべき命令の次に実行すべき命令の仮想アドレス
を、アドレス線832を介して割り込み制御ユニット5
0へ転送する。具体的には、割り込み信号線834を介
して割り込み制御ユニット50からFステージで割り込
みが発生した旨通知された場合、アドレス線700上の
仮想アドレス、すなわちFステージを実行していた命令
(当該割り込みが発生した命令)の次に実行すべき命令
の仮想アドレスを選択して、アドレス線832に出力す
る。一方、割り込み信号線834を介して割り込み制御
ユニット50からRステージで割り込みが発生した旨通
知された場合、アドレス線701上の仮想アドレス、す
なわちRステージを実行していた命令(当該割り込みが
発生した命令)の次に実行すべき命令の仮想アドレスを
選択して、アドレス線832に出力する。
された仮想アドレスが分岐先の仮想アドレスであるか否
かを示す信号を出力する。具体的には、割り込み信号線
834を介して割り込み制御ユニット50からFステー
ジで割り込みが発生した旨通知された場合、分岐要求信
号線812上の信号を選択して信号線833に出力す
る。一方、割り込み信号線834を介して割り込み制御
ユニット50からRステージで割り込みが発生した旨通
知された場合、信号線721上の信号を選択して信号線
833に出力する。
レクタ206が分岐先アドレス線811によって命令実
行ユニット30から転送された分岐先の仮想アドレスを
選択した場合、セレクタ208で選択される仮想アドレ
スは、当該分岐先の仮想アドレスとなる。分岐先の仮想
アドレスは分岐命令によって特定された仮想アドレスな
ので、この場合、アドレス線832に正確な仮想アドレ
スの値が出力されたことが保証される。
によって加算器205から送られてきた仮想アドレスを
選択した場合、セレクタ208で選択される仮想アドレ
スは、当該加算機205で算出された仮想アドレスとな
る。アドレス変換キャッシュ211に必要な値が格納さ
れていないために割り込みが発生した場合、変換された
物理アドレスに誤りが生じるため、命令格納用メモリ1
0から本来実行すべき命令とは異なる命令が読み出され
てしまう。そして、命令変換ユニット201で、本来実
行すべき命令の命令長とは異なる命令長が検出されてし
まう。このような場合、加算器205で算出された仮想
アドレスに誤りが生ずるので、アドレス線832に不正
確な仮想アドレスの値が出力されたことになる。
想アドレスが分岐先の仮想アドレスの場合、当該選択し
た仮想アドレスは正確な値であることが保証されるが、
分岐先の仮想アドレスでない場合、当該選択した仮想ア
ドレスが正確な値でない可能性がある。このため、セレ
クタ209は、本実施形態方式が適用されたプロセッサ
で処理される遅延スロット中に含まれる命令が1つであ
ることを利用し、割り込みが発生した命令の一つ前の命
令が分岐命令であるか否かに応じて、セレクタ208で
選択した仮想アドレスが分岐先の仮想アドレスであるか
否かを示す情報を出力している。
な値が格納されていないために割り込みが発生した場
合、命令実行ユニット30は、割り込み先レジスタ32
に予め格納されている分岐先の仮想アドレスへの分岐を
行うことにより、命令格納用メモリ10に格納された割
り込み処理プログラムを実行する。これにより、命令実
行ユニット30は、アドレス変換テーブル41から必要
な部分を読み出し、アドレス信号線813、データ信号
線814、制御信号線815を用いてアドレス変換キャ
ッシュ211の内容を更新する。
0について具体的に説明する。
0の概略構成図である。
ように、レジスタ501〜503と、割り込み調整回路
504と、セレクタ505と、双方向ドライバ506
と、を備えている。
みが同時に発生した場合に、優先順位に基づいて処理す
べき割り込みを決定したり、処理すべきでない割り込み
をマスクしたりする。上述したように、本実施形態で
は、命令供給ユニット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へ通知する。
号815を介して命令実行ユニット30から転送された
制御信号が読み出しアクセスであり、且つアドレス線8
13を介して転送された識別信号がレジスタ504aを
示す場合、信号線733を介してセレクタ505に、レ
ジスタ504aに格納されたデータ(優先順位やマスク
の有無等を示すデータ)を転送する。
信号815を介して命令実行ユニット30から転送され
た制御信号が書き込みアクセスである場合、データ線8
14上のデータをレジスタ504aに格納する。尚、本
実施形態では、命令実行ユニット30からレジスタ50
1〜502への書き込みができないようにしてある。し
たがって、アドレス信号線813は、書き込みモードの
場合、レジスタ504aが複数のレジスタで構成されて
いる場合に、これ等を選択するためにのみ使用される。
4から割り込み信号線834に割り込み要求が出力され
たのを契機として、アドレス線831を介して命令供給
ユニット20のセレクタ207から転送された仮想アド
レス、すなわち割り込み処理プログラムから戻ったとき
に最初に実行すべき命令の仮想アドレスを格納する。レ
ジスタ502は、割り込み調整回路504から割り込み
信号線834に割り込み要求が出力されたのを契機とし
て、アドレス線832を介して命令供給ユニット20の
セレクタ208から転送された仮想アドレス、すなわち
割り込み処理プログラムから戻ったときに最初に実行す
べき命令の次に実行すべき命令の仮想アドレスを格納す
る。レジスタ503は、割り込み調整回路504から割
り込み信号線834に割り込み要求が出力されたのを契
機として、信号線833を介して命令供給ユニット20
のセレクタ209から転送された情報、すなわちレジス
タ502に格納されている仮想アドレスが分岐先の仮想
アドレスであるか否かを示す情報を格納する。
3に格納された値、および割り込み調節回路504のレ
ジスタ504aに格納された値の中から、アドレス線8
13を介して命令実行ユニット30から転送された識別
信号が示すレジスタを選択し、当該レジスタに格納され
ている値を信号線735上に出力する。
5を介して命令実行ユニット30から転送された制御信
号に基づいて、データ転送方向を決定する。制御信号が
読み出しアクセスである場合、アドレス線735を介し
てセレクタ505から転送された値を、データ線814
を介して命令実行ユニット30へ転送する。また、制御
信号が書き込みアクセスである場合、データ線814を
介して命令供給ユニット20から転送されたデータを、
データ線736を介して割り込み調整回路310へ転送
する。
装置の動作について図面を参照して説明する。
ついて説明する。
る、遅延スロットを有する分岐命令を含んだプログラム
の一例を示す図である。ここで、LDはレジスタ間での
データ転送を示すコマンド、JMPは分岐を示すコマン
ドである。尚、このプログラムを構成する各命令は、命
令格納用メモリ10に格納された状態では、命令長が一
定でないものとする。
プログラムを実行した場合のパイプラインの流れを示す
図である。
ット20は、読み出すべき命令の仮想アドレスを物理ア
ドレスに変換して、当該物理アドレスに格納されている
命令を命令格納用メモリ10から読み出す。そして、読
み出した命令に伸張処理等の変換処理を施して命令実行
ユニット30へ転送すると共に、読み出した命令の次に
読み出すべき命令の仮想アドレスを生成する。メモリ供
給ユニット20は、上記一連の動作(Fステージ)を1
クロック相当の時間で繰り返し行う。
ユニット20から転送された命令をデコードしてオペラ
ンドを読み出し(Rステージ)、演算を実行し(Eステ
ージ)、そして、演算結果を書き込む(Wステージ)。
この動作を各ステージ毎に1クロック相当の時間をかけ
て、命令供給ユニット20から命令が転送されてくる毎
に行う。したがって、図1に示すプロセッサでは、図5
に示すように、最大で3つの命令を平行して実行するこ
とができる。これにより、プログラムの処理速度を向上
させることができる。
ユニット20から転送された命令が分岐命令である場
合、Rステージ完了後、分岐先アドレス線811及び分
岐要求信号線812を用いて、当該分岐命令によって特
定される分岐先の仮想アドレス及び分岐要求を命令供給
ユニット20に転送している。したがって、分岐先の仮
想アドレスは、当該分岐命令の実行開始後、2クロック
相当の時間経過後に、命令供給ユニット20に転送され
ることになる。このため、図5に示すように、分岐命令
である命令Qが実行開始された後、当該分岐命令の後続
命令である命令Pが実行開始された後に、命令Qの分岐
先ルーチンL1(命令X、命令Y)が実行開始される。
すなわち、1つの命令を含む遅延スロットを有する遅延
分岐が実行される。
いて、遅延スロット中の命令以外で割り込みが発生した
場合と、遅延スロット中の命令で割り込みが発生した場
合とに分けて説明する。
割り込み処理プログラムの一例を示す図である。ここ
で、DIは割り込み禁止を示すコマンド、EIは割り込
み解除を示すコマンド、CMPは2つのデータを比較を
示すコマンド、JNEは条件つきの分岐を示すコマン
ド、NOP(ノンオペレーション)は何もしないことを
示すコマンドである。
生した場合について説明する。
した場合について図7を参照して説明する。
Fステージ実行中に割り込みが発生した場合におけるプ
ログラムのパイプラインの流れを示す図である。
場合、すなわち命令Rが命令供給ユニット20で処理さ
れている最中に当該命令Rに割り込みが発生した場合、
命令供給ユニット20は、命令RのFステージ完了と同
時に、命令供給割り込み信号線830を用いて、割り込
みが発生した旨を割り込み制御ユニット50へ通知す
る。
れた割り込みの優先順位やマスクの有無等を判定し、当
該割り込みが処理すべきものである場合に、割り込み信
号線834を介して命令実行ユニット30へ通知する。
ニット50から割り込みが発生した旨の通知を受ける
と、データ線810を介して命令供給ユニット20から
転送された命令Rを実行をすることなく終了し、図7に
示すように、命令RのRステージ以降をキャンセルす
る。また、分岐先アドレス線811を用いて、割り込み
先レジスタ32に予め格納されている分岐先の仮想アド
レスを命令供給ユニット20に転送する。
ト30から転送された分岐先の仮想アドレスを物理アド
レスに変換して、命令格納用メモリ10の前記物理アド
レスに格納されている命令を読み出す。これにより、割
り込み処理プログラムの先頭アドレスの命令への分岐が
行われ、図6に示す割り込み処理プログラムが実行され
る。
先ず、割り込み処理中に更に別の割り込みが発生しない
ように割り込み禁止を指令する(命令a)。この命令を
受けて、命令実行ユニット30は、割り込み制御ユニッ
ト50の割り込み調整回路504内蔵のレジスタ504
aを「マスク有り」に書き換える。割り込み制御ユニッ
ト50は、レジスタ504aの内容がマスク有りの場
合、その後、命令供給割り込み信号線830及び/又は
命令実行割り込み信号線835を介して割り込みが通知
されても、割り込み要求を割り込み信号線834を介し
て他のユニット等に通知することはない。
タ501(E−IP0)に格納されている仮想アドレス
(割り込みが発生した命令、すなわち命令Rの仮想アド
レス)を、命令実行ユニット30の演算用レジスタ31
内に設けられているレジスタIAに格納する旨指令する
(命令b)。この命令を受けて、命令実行ユニット30
は、識別信号線813及び制御信号線815を用いてレ
ジスタ501にアクセスする。これにより、割り込み制
御ユニット50は、レジスタ501に格納されている仮
想アドレスをアドレス線813を介して命令実行ユニッ
ト30に転送する。命令実行ユニット30は、割り込み
制御ユニット50から転送された仮想アドレスを演算用
レジスタ31内のレジスタIAに格納する。
タ502(E−IP1)に格納されている仮想アドレス
(割り込みが発生した命令の次に実行されるべき命令、
すなわち命令Sの仮想アドレス)を、命令実行ユニット
30の演算用レジスタ31内に設けられているレジスタ
IBに格納する旨指令する(命令c)。この命令を受け
て、命令実行ユニット30は、識別信号線813及び制
御信号線815を用いてレジスタ502にアクセスす
る。これにより、割り込み制御ユニット50は、レジス
タ502に格納されている仮想アドレスをアドレス線8
13を介して命令実行ユニット30に転送する。命令実
行ユニット30は、割り込み制御ユニット50から転送
された仮想アドレスを演算用レジスタ31内のレジスタ
IBに格納する。
タ503(E−IP1V)に格納されている値(命令c
でレジスタIBに格納した仮想アドレスが分岐先の仮想
アドレスであるか否かを示す値)を、命令実行ユニット
30の演算用レジスタ31内に設けられているレジスタ
ICに格納する旨指令する(命令d)。この命令を受け
て、命令実行ユニット30は、識別信号線813及び制
御信号線815を用いてレジスタ503にアクセスす
る。これにより、割り込み制御ユニット50は、レジス
タ503に格納されている値をアドレス線813を介し
て命令実行ユニット30に転送する。命令実行ユニット
30は、割り込み制御ユニット50から転送された値を
演算用レジスタ31内のレジスタICに格納する。
納されている仮想アドレスが分岐先の仮想アドレスであ
る場合、レジスタ503に格納される信号が「1」とな
るようにしている。一方、レジスタ502に格納されて
いる仮想アドレスが分岐先の仮想アドレスでない場合、
レジスタ503に格納される信号が「0」となるように
している。
命令は、所定の割り込み処理を行うためのものである。
これ等の命令は割り込みの要因によって種々異なる。こ
れ等の命令は、通常の割り込み処理プログラムと基本的
に同じ考えで作られるものである。したがって、ここで
は、これ等の命令の説明を省略する。
比較を指令する(命令o)。この命令を受けて、命令実
行ユニット30は、演算用レジスタ31内のレジスタI
Cに格納した値、すなわちレジスタIBに格納した仮想
アドレスが分岐先の仮想アドレスであるか否かを示す値
が、0であるか否かを比較する。次に、命令oで比較し
た結果、両者が一致した場合は、ルーチンL2に分岐す
る旨指令する(命令p)。ここでは、図4に示す命令R
で割り込みが発生したことを想定しているので、割り込
みが発生した命令Rの次に実行されるべき命令Sの仮想
アドレスは、分岐命令によって特定されるものではな
い。したがって、レジスタICに格納した値は0とな
る。このため、命令実行ユニット30は、図7に示すよ
うに、ルーチンL2への分岐を実行せずに、後続命令q
を実行する。
止を解除するように指令する。この命令を受けて、命令
実行ユニット30は、割り込み制御ユニット50の割り
込み調整回路504内蔵のレジスタ504aを「マスク
無し」に書き換える。但し、レジスタ504aの書き換
えは、命令qの2つ命令の後に、有効となるようにして
ある。
レスの命令への分岐を指令する(命令r)。この命令を
受けて、命令実行ユニット30は、レジスタIAに格納
された仮想アドレスの命令、すなわち割り込みが発生し
た命令Rを実行する。但し、本実施形態では、上述した
ように、1つの命令を含む遅延スロットを有する遅延分
岐を実行するので、命令Rの実行は、図7に示すよう
に、命令rの後続命令sの実行後に行われる。尚、命令
sには、ノーオペレーション(NOP)と呼ばれる何も
しない命令が入っているので、図7に示すように、割り
込み処理から復帰した後、実行順序を変更することなく
図4に示すプログラムを正確に処理することができる。
場合、この段階では、命令Rの正しい命令長が判明しな
いので、命令Rの仮想アドレスに命令Rの命令長を加算
しても、命令Rの後続命令である命令Sの正確な仮想ア
ドレスを求めることはできない。そこで、本実施形態で
は、割り込み処理からの復帰後、最初に実行すべき命令
(ここでは、命令R)の次に実行すべき命令(ここで
は、命令S)が分岐命令の分岐先でない場合、命令rで
レジスタ501に格納された仮想アドレスへの分岐を実
行後、命令rの遅延スロットに含まれる命令sで、レジ
スタ502に格納された仮想アドレスへの分岐を行うこ
となく、NOP命令を実行しいる。これにより、割り込
み処理から復帰した後のプログラムの実行順序が変更さ
れるのを防止している。
した場合について図8を参照して説明する。
Rステージ実行中に割り込みが発生した場合におけるプ
ログラムのパイプラインの流れを示す図である。
場合、すなわち命令Rが命令実行ユニット30で処理さ
れている最中に当該命令Rに割り込みが発生した場合、
命令実行ユニット30は、命令RのRステージ完了と同
時に、命令実行割り込み信号線835を用いて、割り込
みが発生した旨を割り込み制御ユニット50へ通知す
る。
れた割り込みの優先順位やマスクの有無等を判定し、当
該割り込みが処理すべきものである場合に、割り込み信
号線834を介して命令実行ユニット30へ通知する。
ニット50から割り込みが発生した旨の通知を受ける
と、命令Rの実行を中止すると共に、データ線830を
介して命令供給ユニット20から転送された命令Sを実
行を中止し、図8に示すように、命令RのEステージ以
降及び命令SのRステージ以降をキャンセルする。ま
た、内蔵の割り込み先レジスタ32に予め格納されてい
る分岐先の仮想アドレスを命令供給ユニット20に転送
する。
ト30から転送された分岐先の仮想アドレスを物理アド
レスに変換して、命令格納用メモリ10の前記物理アド
レスに格納されている命令を読み出す。これにより、割
り込み処理プログラムの先頭アドレスの命令への分岐が
行われ、上述した、命令RのFステージで割り込みが発
生した場合と同様の要領で、図6に示す割り込み処理プ
ログラムが実行される。これにより、図8に示すよう
に、割り込み処理から復帰した後、実行順序を変更する
ことなく図4に示すプログラムを正確に処理することが
できる。
した場合、命令供給ユニット20での命令Rについての
処理(Fステージ)は、既に完了しているので、命令供
給ユニット20の命令変換ユニット201は命令Rの正
しい命令長を命令供給ユニット20の加算器205に転
送している。このため、加算器205で算出された命令
Sの仮想アドレスが正しい値となるので、割り込み制御
ユニット50のレジスタ502には、命令Sの正しい仮
想アドレスが格納されることになる。したがって、レジ
スタ502に格納された仮想アドレスを分岐先とする命
令を実行することにより、命令Sを実行することも可能
である。しかしながら、ここでは、処理を簡略化するた
めに、命令RのFステージで割り込みが発生した場合と
同様の要領で、図6に示す割り込み処理プログラムを実
行している。
た場合について、割り込みがFステージで発生した場合
と、Rステージで発生した場合に分けて説明する。
した場合について図9を参照して説明する。
Fステージ実行中に割り込みが発生した場合におけるプ
ログラムのパイプラインの流れを示す図である。
まれる命令PのFステージで、割り込みが発生した場
合、すなわち命令Pが命令供給ユニット20で処理され
ている最中に当該命令Pに割り込みが発生した場合、命
令供給ユニット20は、命令PのFステージ完了と同時
に、命令供給割り込み信号線830を用いて、割り込み
が発生した旨を割り込み制御ユニット50へ通知する。
れた割り込みの優先順位やマスクの有無等を判定し、当
該割り込みが処理すべきものである場合に、割り込み信
号線834を介して命令実行ユニット30へ通知する。
ニット50から割り込みが発生した旨の通知を受ける
と、データ線830を介して命令供給ユニット20から
転送された命令Pを実行をすることなく終了し、図9に
示すように、命令PのRステージ以降をキャンセルす
る。また、内蔵の割り込み先レジスタ32に予め格納さ
れている分岐先の仮想アドレスを命令供給ユニット20
に転送する。
ト30から転送された分岐先の仮想アドレスを物理アド
レスに変換して、命令格納用メモリ10の前記物理アド
レスに格納されている命令を読み出す。これにより、割
り込み処理プログラムの先頭アドレスの命令への分岐が
行われ、図6に示す割り込み処理プログラムが実行され
る。
込みが発生した場合、割り込み処理から復帰した後、最
初に実行されるべき命令Pの次に実行されるべき命令X
は、分岐命令Qによって仮想アドレスが特定された分岐
先の命令である。このため、割り込み制御ユニット50
のレジスタ503に格納される信号は「1」となる。し
たがって、図6に示す命令dによって、命令実行ユニッ
ト30の演算用レジスタ312内のレジスタICに格納
される値は「1」となるので、命令pによってルーチン
L2への分岐が実行される。但し、本実施形態では、上
述したように、1つの命令を含む遅延スロットを有する
遅延分岐を実行するので、命令qを実行した後、命令t
を実行する。
想アドレスの命令への分岐を指令する。この命令を受け
て、命令実行ユニット30は、レジスタIAに格納され
た仮想アドレスの命令、すなわち割り込みが発生した命
令Pを実行する。但し、本実施形態では、上述したよう
に、1つの命令を含む遅延スロットを有する遅延分岐を
実行するので、命令Pの実行は、図9に示すように、命
令tの後続命令uの実行後に行われる。
想アドレスの命令への分岐を指令する。この命令を受け
て、命令実行ユニット30は、レジスタIBに格納され
た仮想アドレスの命令、すなわち分岐命令Qによって仮
想アドレスが特定された分岐先の命令Xを実行する。但
し、本実施形態では、上述したように、1つの命令を含
む遅延スロットを有する遅延分岐を実行するので、命令
Xの実行は、図9に示すように、命令uの次に実行され
る命令、すなわち、命令tで指定された分岐先の命令P
の実行後に行われる。したがって、本実施形態では、図
9に示すように、割り込み処理から復帰した後、実行順
序を変更することなく図4に示すプログラムを正確に処
理することができる。
の次に実行されるべき命令は、分岐命令Qによって仮想
アドレスが特定された分岐先の命令Xである。したがっ
て、当該割り込みが発生した段階で、命令Xの正確な仮
想アドレスが判明している。そこで、本実施形態では、
割り込み処理からの復帰後、最初に実行すべき命令(こ
こでは、命令P)の次に実行すべき命令(ここでは、命
令X)が分岐命令(ここでは、命令Q)の分岐先である
場合、命令tでレジスタ501に格納された仮想アドレ
スへの分岐を実行後、命令tの遅延スロットに含まれる
命令uで、レジスタ502に格納された仮想アドレスへ
の分岐を行っている。これにより、割り込み処理から復
帰後のプログラムの実行順序が変更されるのを防止して
いる。
した場合について図10を参照して説明する。
で、Rステージ実行中に割り込みが発生した場合におけ
るプログラムのパイプラインの流れを示す図である。
場合、すなわち命令Pが命令実行ユニット30で処理さ
れている最中に当該命令Pに割り込みが発生した場合、
命令実行ユニット30は、命令PのRステージ完了と同
時に、命令実行割り込み信号線835を用いて、割り込
みが発生した旨を割り込み制御ユニット50へ通知す
る。
れた割り込みの優先順位やマスクの有無等を判定し、当
該割り込みが処理すべきものである場合に、割り込み信
号線834を介して命令実行ユニット30へ通知する。
ニット50から割り込みが発生した旨の通知を受ける
と、命令Pの実行を中止すると共に、データ線830を
介して命令供給ユニット20から転送された命令Xを実
行を中止し、図10に示すように、命令PのEステージ
以降及び命令XのRステージ以降をキャンセルする。ま
た、内蔵の割り込み先レジスタ32に予め格納されてい
る分岐先の仮想アドレスを命令供給ユニット20に転送
する。
ト30から転送された分岐先の仮想アドレスを物理アド
レスに変換して、命令格納用メモリ10の前記物理アド
レスに格納されている命令を読み出す。これにより、割
り込み処理プログラムの先頭アドレスの命令への分岐が
行われ、上述した、命令PのFステージで割り込みが発
生した場合と同様の要領で、図6に示す割り込み処理プ
ログラムが実行される。これにより、図10に示すよう
に、割り込み処理から復帰した後、実行順序を変更する
ことなく図4に示すプログラムを正確に処理することが
できる。
後、最初に実行すべき命令の次に実行すべき命令が分岐
命令の分岐先である場合、命令tでレジスタ501に格
納された仮想アドレスへの分岐を実行後、命令tの遅延
スロットに含まれる命令uで、レジスタ502に格納さ
れた仮想アドレスへの分岐を行っている。一方、当該命
令が分岐命令の分岐先でない場合、命令rでレジスタ5
01に格納された仮想アドレスへの分岐を実行後、命令
rの遅延スロットに含まれる命令sで、レジスタ502
に格納された仮想アドレスへの分岐を行うことなく、N
OP命令を実行しいる。このようにすることで、命令格
納用メモリに格納されたプログラムの各命令の命令長が
一定でない場合でも、割り込みが発生した命令が遅延ス
ロット中のものであるか否かに係わらず、当該プログラ
ムを所定の順序で正確に処理することができる。
を参照して説明する。
込み制御方式を用いたプロセッサとその周辺装置とを機
能的に表した図、図12は図11に示す自動復帰ユニッ
トの概略構成図である。
点は、割り込み処理から復帰する際に、プログラムを所
定の順序で実行するための処理(図6に示す割り込み処
理プログラムの命令b〜命令d、命令o、命令p、命令
r〜命令uに相当する処理)を、ソフトウエア的に実行
するのではなく、図11に示す自動復帰ユニット33に
より、ハードウェア的に実行する点である。尚、図11
に示すプロセッサ及びその周辺装置において、第一実施
形態が適用されたものと同一の機能を有するものには、
同一の符号又は対応する符号を付すことにより、その詳
細な説明を省略する。
うに、自動復帰用レジスタ34と、セレクタ331、3
32と、自動復帰用レジスタ読み込み回路333と、自
動復帰処理回路334と、を備えている。
は、割り込み信号線834を介して割り込み制御ユニッ
ト50から割り込み要求を受け取ると、識別信号線87
0及び制御信号線872を各々信号線813、815と
接続するように、信号線874を介してセレクタ33
1、332を制御する。そして、割り込み制御ユニット
50のレジスタ501〜レジスタ503へ順次アクセス
し、レジスタ501〜レジスタ503に格納された値を
自動復帰用レジスタ34に格納する。尚、通常、セレク
タ331、332は、各々識別信号線813、制御信号
線815を信号線871、873に接続するように制御
されているものとする。
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に転送する。
辺装置において、割り込みが発生した場合の動作を、遅
延スロット中の命令以外で割り込みが発生した場合と、
遅延スロット中の命令で割り込みが発生した場合とに分
けて説明する。尚、割り込みが発生しない場合の動作
は、第一実施形態のものと同様であるので、その詳細な
説明を省略する。
れる割り込み処理プログラムの一例を示す図である。こ
こで、IRETは自動復帰ユニット34を起動するため
のコマンドである。
割り込みが発生した場合について説明する。
で、Fステージ実行中に割り込みが発生した場合におけ
るプログラムのパイプラインの流れを示す図、図15は
図4に示すプログラムの命令Rで、Rステージ実行中に
割り込みが発生した場合におけるプログラムのパイプラ
インの流れを示す図である。
0から割り込みが発生した旨の通知を受けると、自動復
帰ユニット33が、識別信号線813、データ信号線8
14及び制御信号線815を用いて、割り込み制御ユニ
ット50のレジスタ501〜レジスタ503へ順次アク
セスし、レジスタ501〜レジスタ503に格納された
値を自動復帰用レジスタ34に格納する。すなわち、図
6に示す命令b〜命令dの処理を自動的に実行する。ま
た、命令供給ユニット20及び命令実行ユニット30a
により、図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の実行後に行われる。
発生した場合について説明する。
で、Fステージ実行中に割り込みが発生した場合におけ
るプログラムのパイプラインの流れを示す図、図17は
図4に示すプログラムの命令Pで、Rステージ実行中に
割り込みが発生した場合におけるプログラムのパイプラ
インの流れを示す図である。
た場合も、遅延スロット中の命令以外の命令で割り込み
が発生した場合と同様に、自動復帰ユニット33が、識
別信号線813、データ信号線814及び制御信号線8
15を用いて、割り込み制御ユニット50のレジスタ5
01〜レジスタ503へ順次アクセスし、レジスタ50
1〜レジスタ503に格納された値を自動復帰用レジス
タ34に格納する。また、命令供給ユニット20及び命
令実行ユニット30aにより、図13に示す割り込み処
理プログラムが実行される。
り込みが発生した場合、割り込み処理から復帰した後、
最初に実行されるべき命令Pの次に実行されるべき命令
Xは、分岐命令Qによって仮想アドレスが特定された分
岐先の命令である。このため、割り込み制御ユニット5
0のレジスタ503から自動復帰用レジスタ34に転送
された値は「1」となる。したがって、自動復帰ユニッ
ト33は、命令wを受けて、割り込み制御ユニット50
のレジスタ501から自動復帰用レジスタ34に転送さ
れた仮想アドレス(命令Pの仮想アドレス)への分岐
と、割り込み制御ユニットのレジスタ502から自動復
帰用レジスタ34に転送された仮想アドレス(命令Xの
仮想アドレス)への分岐先と、を続けて実行する。
る際に、プログラムを所定の順序で正確に実行するため
の処理(図6に示す割り込み処理プログラムの命令b〜
命令d、命令o、命令p、命令r〜命令uに相当する処
理)を、自動復帰ユニット33を用いて自動的に行って
いる。このようにすることで、割り込み処理プログラム
の処理時間を短縮することができ、また、割り込み処理
プログラムを小さくすることができる。
を参照して説明する。
令供給ユニットの概略構成図、図19は本発明の第三実
施形態に用いる割り込み制御ユニットの概略構成図であ
る。本実施形態が適用されたプロセッサ及びその周辺装
置は、第一実施形態が適用されたものと、命令供給ユニ
ット及び割り込み制御ユニットが異なる点を除いて、基
本的に同様である。そこで、ここでは、本実施形態を用
いたプロセッサ及びその周辺装置を機能的に表した図を
省略している。尚、本実施形態において、第一実施形態
のものと同一の機能を有するものには、同一の符号又は
対応する符号を付すことにより、その詳細な説明を省略
する。
aが図2に示す第一実施形態で用いる命令供給ユニット
20と異なる点は、図18に示すように、比較器215
と、セレクタ216とを設けた点である。
を介して送られてきた分岐先の仮想アドレスを、所定の
仮想アドレスと比較する。ここで、所定の仮想アドレス
は、単一の値である必要はなく、ある程度の範囲を持た
せてもよい。比較器215は、分岐先アドレス線811
を介して転送された分岐先の仮想アドレスと、所定の仮
想アドレスとが一致したときに、信号を出力する。
が出力された場合、分岐要求信号線812を介して転送
された分岐要求の代わりに、分岐を実行しないことを示
す信号752を選択して、当該選択した信号を信号線7
53に出力する。
aでは、分岐先アドレス線811を介して送られてきた
分岐先の仮想アドレスが所定の仮想アドレスと一致する
場合、当該仮想アドレスへの分岐を実行しないようにし
ている。
50aが図3に示す第一実施形態で用いる割り込み制御
ユニット50と異なる点は、図19に示すように、セレ
クタ507を設けた点である。
aのセレクタ216で選択された、分岐を実行しないこ
とを示す信号752が、レジスタ503に格納されてい
る場合、レジスタ502に格納された仮想アドレスに代
えて、分岐先としてあり得ない仮想アドレス751を選
択し、当該仮想アドレスをセレクタ505へ転送する。
したがって、レジスタ503に分岐を実行しないことを
示す信号752が格納されている場合、命令実行ユニッ
ト30は、識別信号線813、データ信号線814及び
制御信号線815を用いて、レジスタ502にアクセス
すると、レジスタ502に格納された仮想アドレスでは
なく、分岐先としてあり得ない仮想アドレス751が読
み出される。
で処理される割り込み処理プログラムの一例を示す。こ
のプログラムでは、命令aで割り込みを禁止した後、命
令b及び命令cにおいて、割り込み制御ユニット50a
のレジスタ501、502に格納された仮想アドレス
を、命令実行ユニット30の演算用レジスタ31にある
レジスタIA、IBにそれぞれ転送している。そして、
所定の割り込み処理を実行した後、命令qで割り込み禁
止状態を解除し、その後、命令t及び命令uで、それぞ
れレジスタIAに転送された仮想アドレス、レジスタI
Bに転送された仮想アドレスへの分岐を実行している。
み制御ユニット50aのレジスタ503に分岐を実行し
ないことを示す信号752が格納されている場合、命令
実行ユニット30が割り込み制御ユニット50aのレジ
スタ502にアクセスすると、分岐先としてあり得ない
仮想アドレス751が読み出される。したがって、本実
施形態では、割り込み処理から復帰した後、最初に実行
すべき命令の次に実行すべき命令が、分岐命令によって
分岐先の仮想アドレスが特定された命令であるか否かの
判断、すなわち第一実施形態で用いる図6に示す割り込
み処理プログラムの命令d、命令o、命令p、命令r、
命令sに相当する処理を、命令実行ユニット30でソフ
トウエア的に処理する必要がなくなる。
のではなく、その要旨の範囲内で数々の変形が可能であ
る。
簡略化するために、割り込みがFステージ及びRステー
ジのいずれかで発生するものとして説明した。しかしな
がら、実際にはこのような制限は不要である。一例とし
て、割り込みがEステージで発生した場合にも対応する
ことができる命令供給ユニットを図21に示す。
ニットの変形例を示す図である。
図2に示す第一実施形態の命令供給ユニット20と異な
る点は、レジスタ220と、レジスタ221とを設けた
点である。
力された仮想アドレスを保持すると同時に、今まで保持
していた仮想アドレスをアドレス線703に出力する。
上述したように、レジスタ203はRステージ実行中の
命令、すなわち命令実行ユニット30でデコードされて
いる命令の仮想アドレスを保持するので、レジスタ22
0は、Eステージ実行中の命令、すなわち命令実行ユニ
ット30で演算処理が行われている命令の仮想アドレス
を保持することになる。
れた信号を保持すると同時に、今まで保持していた信号
を信号線722に出力する。上述したように、レジスタ
204はRステージ実行中の命令の1つ前に実行されて
いる命令、すなわちEステージ実行中の命令が分岐命令
であるか否かを示す信号を保持するので、レジスタ22
1は、Eステージ実行中の命令の1つ前に実行されてい
る命令、すなわちWステージ実行中の命令が分岐命令で
あるか否かを示す信号を保持することになる。
り込み信号線834を介して割り込み制御ユニット50
から通知された割り込み要求に基づいて、セレクタ20
7〜209を以下のように動作させる。
生がFステージで発生した旨通知された場合、セレクタ
207、208、209は、それぞれ信号線701上の
値、信号線700上の値、信号線720上の値を選択す
る。
込み発生がRステージで発生した旨通知された場合、セ
レクタ207、208、209は、それぞれ信号線70
2上の値、信号線701上の値、信号線721上の値を
選択する。
り込み発生がEステージで発生した旨通知された場合、
セレクタ207、208、209は、それぞれ信号線7
03上の値、信号線702上の値、信号線722上の値
を選択する。
20bによれば、割り込みがFステージ〜Eステージの
いずれのステージで発生した場合でも、アドレス線83
1上に割り込みが発生した命令の仮想アドレスを出力す
ることができ、アドレス線832上に割り込みが発生し
た命令の次に実行されるべき命令の仮想アドレスを出力
することができ、そして、信号線833上に、割り込み
が発生した命令の次に実行すべき命令の仮想アドレスが
分岐命令によって特定される分岐先の仮想アドレスであ
るか否かを示す信号を出力することができる。
化するために、遅延スロットに含まれる命令が1つの場
合について説明した。しかしながら、実際にはこのよう
な制限は不要である。一例として、遅延スロットが2つ
の命令を含む場合にも対応することができるプロセッサ
及びその周辺装置について説明する。
含む遅延分岐を実行するパイプライン方式のプロセッサ
とその周辺装置とを機能的に表した図である。
命令読み出し前半のF0ステージ、命令読み出し後半の
F1ステージ、読み出した命令をデコードしてオペラン
ドを読み出すRステージ、演算を実行するEステージ、
そして、演算結果を書き込むWステージの5ステージに
分けて実行している。そして、各ステージの実行に1ク
ロック相当の時間を要している。したがって、1つの命
令を実行するには5クロック相当の時間が必要である。
辺装置が図1に示すものと異なる点は、命令供給ユニッ
ト20に代えて、命令供給ユニット20cを用いたこ
と、および割り込み制御ユニット50に代えて、割り込
み制御ユニット50bを用いたことである。その他の構
成は図1に示す第一実施形態のものと同様である。
0cの概略構成図である。ここで、図2又は図21に示
すものと同一の機能を有するものには、同一の符号を付
している。
割り込み信号線834を介して割り込み制御ユニット5
0bから通知された割り込み要求に基づいて、セレクタ
231〜235を以下のように動作させる。
がFステージで発生した旨通知された場合、セレクタ2
31、232、233、234、235は、それぞれ信
号線702上の値、信号線701上の値、信号線700
上の値、信号線721上の値、信号線720上の値を選
択する。
がRステージで発生した旨通知された場合、セレクタ2
31、232、233、234、235、それぞれ信号
線703上の値、信号線702上の値、信号線701上
の値、信号線722上の値、信号線721上の値を選択
する。
割り込みが発生した場合に、アドレス線851上に、割
り込み処理終了後、最初に実行すべき命令の仮想アドレ
スが出力され、アドレス線852上に、割り込み処理終
了後、最初に実行すべき命令の次に実行すべき命令の仮
想アドレスが出力され、アドレス線853上に、割り込
み処理終了後、最初に実行すべき命令の次の次に実行す
べき命令の仮想アドレスが出力される。また、信号線8
55上に、アドレス線852上に出力された仮想アドレ
スが分岐命令によって特定される分岐先の命令の仮想ア
ドレスであるか否かを示す値が出力され、信号線856
上に、アドレス線853上に出力された仮想アドレスが
分岐命令によって特定される分岐先の命令の仮想アドレ
スであるか否かを示す値が出力される。
ト50bの概略構成図である。ここで、図3に示すもの
と同一の機能を有するものには、同一の符号を付してい
る。
命令供給ユニット20cのセレクタ231、232、2
33、234、235から転送された値を、それぞれレ
ジスタ551、552、553、554、555に格納
する。命令実行ユニット30は、識別信号線813、デ
ータ信号線814及び制御信号線815を用いて、セレ
クタ560、双方向ドライバ506を制御することによ
り、所望のレジスタに551〜555にアクセスするこ
とができる。
示すプログラムを実行した場合のパイプラインの流れを
示す図である。上記の各実施形態と同様に、実行中の命
令が分岐命令であることがわかるのがRステージである
とすると、分岐命令Qの後続命令である命令P、命令R
の2命令が分岐命令Qの遅延スロットの中の命令とな
る。
れる割り込み処理プログラムの一例である。この割り込
み処理プログラムは、図6に示す第一実施形態の割り込
み処理プログラムと同様に、命令に割り込みが発生した
ときに実行される。尚、図6では、割り込み処理から復
帰する際に連続して発行される分岐命令が最大で2つで
あるが、ここでは最大で3つとなる(図26のL11参
照)。
システム構成例を図27に示す。図27は図1に示すプ
ロセッサ及びその周辺装置に、キーボードやディスプレ
イ等のI/Oデバイス60を接続している。命令実行ユ
ニット30は、アドレス線860、データ線861及び
制御信号線862を用いて、I/Oデバイス60へアク
セスし、その動作を制御する。
CISCや圧縮後のVLIW等、命令長が一定でない命
令を実行する場合でも、割り込みが発生した命令が遅延
スロット中のものであるか否かにかかわらず、割り込み
を正確に処理することができるパイプライン方式のプロ
セッサ及び計算機システムを提供することができる。
用いたプロセッサとその周辺装置とを機能的に表した図
である。
る。
である。
トを有する分岐命令を含んだプログラムの一例を示す図
である。
を実行した場合のパイプラインの流れを示す図である。
理プログラムの一例を示す図である。
実行中に割り込みが発生した場合におけるプログラムの
パイプラインの流れを示す図である。
実行中に割り込みが発生した場合におけるプログラムの
パイプラインの流れを示す図である。
実行中に割り込みが発生した場合におけるプログラムの
パイプラインの流れを示す図である。
ジ実行中に割り込みが発生した場合におけるプログラム
のパイプラインの流れを示す図である。
を用いたプロセッサとその周辺装置とを機能的に表した
図である。
である。
み処理プログラムの一例を示す図である。
ジ実行中に割り込みが発生した場合におけるプログラム
のパイプラインの流れを示す図である。
ジ実行中に割り込みが発生した場合におけるプログラム
のパイプラインの流れを示す図である。
ジ実行中に割り込みが発生した場合におけるプログラム
のパイプラインの流れを示す図である。
ジ実行中に割り込みが発生した場合におけるプログラム
のパイプラインの流れを示す図である。
ットの概略構成図である。
ユニットの概略構成図である。
処理される割り込み処理プログラムの一例を示す図であ
る。
ットの変形例を示す図である。
を実行するパイプライン方式のプロセッサとその周辺装
置とを機能的に表した図である。
構成図である。
概略構成図である。
ラムを実行した場合のパイプラインの流れを示す図であ
る。
み処理プログラムの一例である。
いたシステム構成例をに示す図である。
示す図である。
理装置が図28に示すプログラムを実行した場合のパイ
プラインの流れを示す図である。
装置が図28に示すプログラムを実行した場合のパイプ
ラインの流れを示す図である。
である。
装置が図31に示すプログラムを実行した場合のパイプ
ラインの流れを示す図である。
グラムの一例を示す図である。
処理装置が図31に示すプログラムを実行した場合のパ
イプラインの流れを示す図である。
04a、551〜555レジスタ 205 加算器 206〜209、216、231〜235、331、3
32、505、507、560 セレクタ 210 アドレス変換回路 211 アドレス変換キャッシュ 215 比較器 333 自動復帰用レジスタ読み込み回路 334 自動復帰処理回路 504 割り込み調整回路 506 双方向ドライバ
Claims (7)
- 【請求項1】少なくとも1つの命令を遅延スロット中に
含む分岐命令を実行するパイプライン方式の演算処理装
置において、記憶装置に可変長で格納された当該分岐命
令を含む複数の命令を順次読み出して処理する際に用い
る割り込み制御方式であって、 割り込みが発生した場合に、当該割り込みが発生した命
令から、当該命令の前記遅延スロットに含まれる命令の
数だけ後に実行すべき命令までの各アドレスを格納する
アドレス格納手段と、 前記割り込み処理が完了した後に、前記アドレス格納手
段に格納された各アドレスを、前記割り込みが発生した
命令のアドレスから順次読み出すアドレス読出し手段
と、 前記アドレス読み出し手段によって最初に読み出したア
ドレスへ分岐して、命令を実行する第一の命令実行手段
と、 前記アドレス読み出し手段によって2番目以降に読み出
した各アドレスについて、当該アドレスが前記分岐命令
によって指定された命令のアドレスであるときは、当該
アドレスへ分岐して命令を実行し、前記分岐命令によっ
て指定された命令以外の命令のアドレスであるときは、
現在実行されている命令の後続命令を実行する第二の命
令実行手段と、 を具備することを特徴とする割り込み制御方式。 - 【請求項2】請求項1において、 実行している命令のアドレスに当該命令の命令長を加算
して、次に読み出して実行すべき命令のアドレスを生成
するアドレス生成手段を備え、 前記第二の命令実行手段は、前記割り込みが発生した時
点で、当該割り込みが発生した命令の命令長が判明して
いる場合には、前記アドレス読み出し手段で2番目に読
み出したアドレスが前記分岐命令によって指定された命
令以外の命令のアドレスであっても、当該アドレスへ分
岐して命令を実行することを特徴とする割り込み制御方
式。 - 【請求項3】請求項1又は2において、 前記割り込みが発生した命令の次に実行すべき命令か
ら、前記割り込みが発生した命令の前記遅延スロットに
含まれる命令の数だけ後に実行すべき命令までの各命令
について、当該命令の前記遅延スロットに含まれる命令
の数だけ前に実行した命令が前記分岐命令であるか否か
を示す情報を格納する分岐情報格納手段を備え、 前記第二の命令実行手段は、前記分岐情報格納手段に格
納された情報を基に、前記アドレス読み出し手段によっ
て2番目以降に読み出した各アドレスについて、当該ア
ドレスが前記分岐命令によって指定された命令のアドレ
スであるか否かを判断することを特徴とする割り込み制
御方式。 - 【請求項4】請求項1又は2において、 前記割り込みが発生した命令の次に実行すべき命令か
ら、前記割り込みが発生した命令の前記遅延スロットに
含まれる命令の数だけ後に実行すべき命令までの各命令
について、当該命令の前記遅延スロットに含まれる命令
の数だけ前に実行した命令が前記分岐命令でない場合に
は、当該命令のアドレスとして特殊な値のアドレスを前
記アドレス格納手段に格納させるアドレス格納制御手段
を備え、 前記第二の命令実行手段は、前記アドレス読み出し手段
によって2番目以降に読み出した各アドレスについて、
当該アドレスが前記特殊な値のときには、当該アドレス
への分岐を実行しないことを特徴とする割り込み制御方
式。 - 【請求項5】請求項 1、2、3又は4において、 前記第一の命令実行手段は、前記アドレス読み出し手段
によって最初に読み出したアドレスを飛び先とする分岐
命令を実行するものであり、 前記第二の命令実行手段は、前記アドレス読み出し手段
によって2番目以降に読み出した各アドレスについて、
当該アドレスが前記分岐命令によって指定された命令の
アドレスであるときは、当該アドレスを飛び先とする分
岐命令を実行し、前記分岐命令によって指定された命令
以外の命令のアドレスであるときは、何もしないことを
示すコマンドであるノンオペレーション命令を実行する
ものであることを特徴とする割り込み制御方式。 - 【請求項6】命令格納用メモリに可変長で格納された、
分岐命令を含む複数の命令を順次読み出して実行するパ
イプライン方式のプロセッサであって、 前記命令格納用メモリから命令を順次読み出すと共に、
前記読み出した命令が分岐命令である場合、当該分岐命
令の遅延スロットに含まれる後続命令を読み出した後
に、当該分岐命令によって指定される分岐先アドレスの
命令を読み出す命令供給ユニットと、 前記命令供給ユニットによって読み出された命令を実行
すると共に、前記読み出された命令が分岐命令である場
合に、当該分岐命令によって指定される分岐先アドレス
を前記命令供給ユニットに通知する命令実行ユニット
と、 割り込みが発生した場合に、割り込み処理からの復帰後
に実行すべき命令を制御する割り込み制御ユニットと、
を備え、 前記割り込み制御ユニットは、割り込みが発生した場合
に、当該割り込みが発生した命令から、当該命令の前記
遅延スロットに含まれる命令の数だけ後に実行すべき命
令までの各アドレスを格納するレジスタを有し、前記割
り込み処理が完了した後に、前記レジスタに格納された
各アドレスを、前記割り込みが発生した命令のアドレス
から順次読み出すものであり、 前記命令供給ユニットは、割り込み処理からの復帰に際
して、前記割り込み制御ユニットによって前記レジスタ
から最初に読み出したアドレスの命令を読み出すと共
に、前記割り込み制御ユニットによって前記レジスタか
ら2番目以降に読み出したアドレスについては、当該ア
ドレスが前記分岐命令によって指定された命令のアドレ
スであるときは、当該アドレスへ分岐して命令を実行
し、前記分岐命令によって指定された命令以外の命令の
アドレスであるときは、最新に読み出した命令の後続命
令を読み出すものであることを特徴とするプロセッサ。 - 【請求項7】請求項6記載のプロセッサと、分岐命令を
含む複数の命令が可変長で格納された命令格納用メモリ
と、前記プロセッサを入出力装置に接続するI/Oデバ
イスと、を備えたことを特徴とする計算機システム。
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. |
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 |
KR1019970031357A KR100291602B1 (ko) | 1996-07-08 | 1997-07-07 | 인터럽트제어장치,프로세서및계산기시스템 |
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 true JPH1021074A (ja) | 1998-01-23 |
JP3439033B2 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) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7376819B2 (en) | 2002-06-28 | 2008-05-20 | Renesas Technology Corp. | Data processor with selectable word length |
JP2017525046A (ja) * | 2014-07-30 | 2017-08-31 | リニア アルジェブラ テクノロジーズ リミテッド | ベクトルプロセッサ |
US10572252B2 (en) | 2013-08-08 | 2020-02-25 | Movidius Limited | Variable-length instruction buffer management |
US11768689B2 (en) | 2013-08-08 | 2023-09-26 | Movidius Limited | Apparatus, systems, and methods for low power computational imaging |
Families Citing this family (17)
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 | 富士通株式会社 | 遅延分岐機能を備えた情報処理装置 |
US7831979B2 (en) * | 2004-04-28 | 2010-11-09 | Agere Systems Inc. | Processor with instruction-based interrupt handling |
US8230198B2 (en) * | 2006-08-02 | 2012-07-24 | Sandisk Il Ltd. | System for synchronous code retrieval from an asynchronous source |
US8037468B2 (en) * | 2006-08-02 | 2011-10-11 | Sandisk Il Ltd. | Methods for synchronous code retrieval from an asynchronous source |
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 |
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 |
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 |
US8473725B2 (en) * | 2009-12-21 | 2013-06-25 | Ceva D.S.P., Ltd. | System and method for processing interrupts in a computing system |
CN108710506B (zh) * | 2018-05-31 | 2021-01-22 | 北京智行者科技有限公司 | 车辆的指令处理方法 |
Family Cites Families (6)
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 | 日本電気株式会社 | パイプライン演算処理装置 |
-
1996
- 1996-07-08 JP JP17777396A patent/JP3439033B2/ja not_active Expired - Fee Related
-
1997
- 1997-06-19 TW TW086108589A patent/TW333628B/zh active
- 1997-07-07 US US08/888,789 patent/US5815696A/en not_active Expired - Lifetime
- 1997-07-07 KR KR1019970031357A patent/KR100291602B1/ko not_active IP Right Cessation
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7376819B2 (en) | 2002-06-28 | 2008-05-20 | Renesas Technology Corp. | Data processor with selectable word length |
US10572252B2 (en) | 2013-08-08 | 2020-02-25 | Movidius Limited | Variable-length instruction buffer management |
US11579872B2 (en) | 2013-08-08 | 2023-02-14 | Movidius Limited | Variable-length instruction buffer management |
US11768689B2 (en) | 2013-08-08 | 2023-09-26 | Movidius Limited | Apparatus, systems, and methods for low power computational imaging |
JP2017525046A (ja) * | 2014-07-30 | 2017-08-31 | リニア アルジェブラ テクノロジーズ リミテッド | ベクトルプロセッサ |
Also Published As
Publication number | Publication date |
---|---|
TW333628B (en) | 1998-06-11 |
JP3439033B2 (ja) | 2003-08-25 |
US5815696A (en) | 1998-09-29 |
KR980010764A (ko) | 1998-04-30 |
KR100291602B1 (ko) | 2001-09-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3439033B2 (ja) | 割り込み制御装置及びプロセッサ | |
EP0423906B1 (en) | Method of and apparatus for nullifying an instruction | |
JP2858140B2 (ja) | パイプラインプロセッサ装置および方法 | |
JP2786574B2 (ja) | コンピュータ・システムにおける順不同ロード動作の性能を改善する方法と装置 | |
CN108139908B (zh) | 移动前缀指令 | |
US6289445B2 (en) | Circuit and method for initiating exception routines using implicit exception checking | |
US6230259B1 (en) | Transparent extended state save | |
EP0612012B1 (en) | A pipeline computer with scoreboard | |
JPH0242569A (ja) | ベクター処理システムに用いる文脈スイッチング方法及び装置 | |
US5812809A (en) | Data processing system capable of execution of plural instructions in parallel | |
US4562538A (en) | Microprocessor having decision pointer to process restore position | |
JPH0215369A (ja) | ベクター処理システムの命令を実行する方法及び装置 | |
JPH0250260A (ja) | ベクタープロセッサの例外報告機構 | |
US5313644A (en) | System having status update controller for determining which one of parallel operation results of execution units is allowed to set conditions of shared processor status word | |
US6189093B1 (en) | System for initiating exception routine in response to memory access exception by storing exception information and exception bit within architectured register | |
US11789742B2 (en) | Pipeline protection for CPUs with save and restore of intermediate results | |
JPH1083305A (ja) | 自己整合スタック・ポインタを有するデータ処理システムおよびその方法 | |
JPH06266556A (ja) | データ処理装置 | |
JPH1196006A (ja) | 情報処理装置 | |
KR970011209B1 (ko) | 실행된 명령 스트림을 추적하기 위해 사용되는 신호를 발생하기 위한 회로를 포함하는 마이크로프로세서 | |
JP2532560B2 (ja) | 高機能な例外処理を行うデ―タ処理装置 | |
JP3476314B2 (ja) | マイクロプロセッサ | |
JPS6149695B2 (ja) | ||
JPH02206836A (ja) | データ処理装置 | |
JPH086790A (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 |