JPH0877021A - 割込処理装置および方法 - Google Patents

割込処理装置および方法

Info

Publication number
JPH0877021A
JPH0877021A JP6208305A JP20830594A JPH0877021A JP H0877021 A JPH0877021 A JP H0877021A JP 6208305 A JP6208305 A JP 6208305A JP 20830594 A JP20830594 A JP 20830594A JP H0877021 A JPH0877021 A JP H0877021A
Authority
JP
Japan
Prior art keywords
instruction
interrupt
moved
interrupt signal
address
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.)
Withdrawn
Application number
JP6208305A
Other languages
English (en)
Inventor
Toshihiro Ozawa
年弘 小沢
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.)
Fujitsu Ltd
Original Assignee
Fujitsu 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 Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP6208305A priority Critical patent/JPH0877021A/ja
Priority to US08/510,120 priority patent/US5812837A/en
Publication of JPH0877021A publication Critical patent/JPH0877021A/ja
Withdrawn legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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 or look ahead
    • G06F9/3861Recovery, e.g. branch miss-prediction, exception handling
    • G06F9/3865Recovery, e.g. branch miss-prediction, exception handling using deferred exception handling, e.g. exception flags
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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 or look ahead
    • G06F9/3824Operand accessing
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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 or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3842Speculative instruction execution

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Bus Control (AREA)
  • Advance Control (AREA)

Abstract

(57)【要約】 【目的】 データ処理装置において割込みを処理する割
込処理装置に関し、分岐命令を越えて前に移動させられ
た命令の実行時に発生した割込要因に対応する割込実行
の有無を正しく制御することを目的とする。 【構成】 前記移動させられた命令の実行時に割込要因
が発生した時にセットされ、分岐命令実行後の処理が移
動させられた命令の元の位置の方向に進む時に割込信号
を発生する手段1と、分岐命令実行後の処理が元の位置
の方向と異なる方向に進む時に手段1をリセットする手
段2とを備えるように構成する。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明はデータ処理装置に係り、
更に詳しくは例えばキャッシュミスによる処理遅れを防
止させるために分岐命令を越えてロード命令を前に移動
した場合に、そのロード命令実行時に発生した割込要因
による実際の割込みの発生を、分岐命令の実行後の処理
がそのロード命令が元々あった位置の方向に進むか否か
によって制御するための割込処理装置に関する。
【0002】
【従来の技術】最近のコンピュータシステムにおいて
は、プロセッサの速度がメモリ系の速度に比べて相対的
に大きくなっているために、プロセッサにデータを滞り
なく供給することがコンピュータシステムの効率を向上
させる上で重要となっている。普通のロード命令では、
データのロード処理が完了するまでは次の命令を実行す
ることができず、キャッシュミスが起きた場合などには
データをメモリからキャッシュに読出すまでの間、次の
命令実行に進むことができず、コンピュータシステムの
性能は低下する。このようにデータがメモリからキャッ
シュに読出されるまでの間、命令実行を進めることがで
きないことによる性能の低下はキャッシュミスによるペ
ナルティと呼ばれている。
【0003】図13はキャッシュミスによるペナルティ
を説明するためのプログラムの例である。このプログラ
ムにおいて、例えば(4)の命令においてキャッシュミ
スが起こると、キャッシュにデータが読込まれるまで
(5)の命令を実行することができない。なお(4)の
命令は、レジスタR3の格納内容と‘0’とを加算し、
その加算結果をアクセスアドレスとして、そのアドレス
のデータをレジスタR1に格納すると言うロード命令で
ある。
【0004】キャッシュミスによるペナルティを小さく
してコンピュータシステムの性能低下を防ぐ1つの方法
として、ノンブロッキングロード命令を使用する方法が
提案されている。このノンブロッキングロード命令を使
用する場合には、キャッシュミスが起こってもキャッシ
ュへのデータ読出しの完了を待つことなく次の命令を実
行することができ、キャッシュミスによるペナルティを
低減することができる。
【0005】しかしながら、ノンブロッキングロード命
令を使用しても、その後にある命令がノンブロッキング
ロード命令によって読出されるデータを使用する場合に
は、そのデータが読込まれてくるまでその命令を実行す
ることができず、キャッシュミスによるペナルティを低
減することができない。従って、キャッシュミスによる
ペナルティを低減するためにはノンブロッキングロード
命令をそのデータを実際に使用する命令よりも十分に早
く実行する必要がある。
【0006】図13の例では、例えば(4)の命令がノ
ンブロッキングロード命令であっても、次の(5)の命
令はレジスタR1とR4との内容を加算してレジスタR
3に格納すると言う加算命令であるため、キャッシュへ
のデータ読出しの完了を待つ必要があり、ノンブロッキ
ングロード命令を使用しない場合とその効率は全く同じ
である。
【0007】また、ノンブロッキングロード命令を使用
する場合には、できるだけその命令を早く実行するよう
に命令のスケジューリングが行われる。図13の例で
は、図14に示すように(4)のロード命令を前に移動
させることにより、仮にキャッシュミスが起きても、そ
の間に(2)および(3)の命令を実行することがで
き、実行効率を上げることができる。
【0008】しかしながら、図14では、(3)の分岐
命令を越えて(4)のロード命令を前に移動させている
ために、分岐が成立するときには図13の場合には
(4)のロード命令が実行されないのに対して、図14
の例ではロード命令が常に実行されるようになる。
【0009】すなわち、(2)の命令でレジスタR3の
内容と‘0’とを比較し、(3)の命令でその比較結果
が‘0’である時、図13において(4)および(5)
の命令は実行されず、LABELで示される領域のプロ
グラムへの分岐が行われる。R3の内容が‘0’である
時にはアクセスアドレスは‘0’となり、一般にアクセ
スアドレスが‘0’である時にはイリーガルアドレスア
クセスとして割込処理が行われる。そこで、図13では
(3)の命令において、LABELへの分岐が起こり割
込処理は行われないが、図14では(4)のロード命令
が分岐命令の前に移動させられたために、常に割込みが
発生することになってしまう。
【0010】図15は、LABELで示される領域のプ
ログラム内のロード命令を、図の左側ら右側に示すよう
に、分岐命令を越えて移動させた場合のプログラムの例
である。この場合には(3)の分岐命令において、分岐
が起こる場合には元々のロード命令による割込処理が発
生しても、その割込処理自体は不当とは言えないことに
なる。
【0011】このように、分岐命令よりも前にロード命
令を移動させることによって、不当な割込みの発生が起
きてしまうようなことを防ぐために、従来はイリーガル
アドレスにアクセスしても割込みが起こらないロード命
令と、割込みを起こすロード命令の2つを用意し、ロー
ド命令を分岐命令よりも前に移動させる場合には割込み
を発生させないロード命令を使用し、それ以外の場合に
は割込みを発生させるロード命令を用いる方法も提案さ
れていた。
【0012】更に割込処理をロード命令が元々あった位
置で始めるために、ロード命令が元々あった位置に割込
処理を開始させるかどうかを判断するための命令として
センチネル命令を挿入する方法も考案されている。図1
6はそのようなプログラムの例である。このプログラム
において、(4)のロード命令で割込要因が発生した場
合には、レジスタR1に割込要因発生を知らせる特別な
値と必要なアドレスなどが格納され、(6)の命令で割
込要因発生を知らせると特別な値がレジスタR1に格納
されているかどうかが調べられ、格納されていれば割込
処理が行われ、格納されていなければ何の処理も行われ
ない。
【0013】また、ブースティングと呼ばれる方法も提
案されている。この方法では命令に新たなフィールドが
付け加えられ、分岐を越えて移動した命令の識別が可能
とされる。更に分岐を越えて移動した命令の実行結果は
専用のレジスタ、例えばシャドーレジスタに格納され、
割込発生要因が生じたか否かもシャドーステートに記憶
される。そして、分岐命令の実行結果に応じて、移動し
た命令があった位置の方向に処理が進行する場合にはシ
ャドーレジスタとシャドーステートの内容が検索され、
割込発生要因が生じたことが記録されていれば割込処理
が行われる。分岐命令後の処理が異なる方向に進む場合
には、シャドーレジスタとシャドーステートの内容は廃
棄される。
【0014】
【発明が解決しようとする課題】以上のように、例えば
ロード命令を分岐命令を越えて前に移動させる場合に
は、ロード命令実行時の割込要因の発生に対して、分岐
命令後の処理がロード命令が元々あった位置の方向に進
むか否かに応じて正しく処理することが必要となる。こ
のための従来の方法では、例えばセンチネル命令のよう
な命令を増やしたり、ロード命令として2つの種類を用
意したり、命令に新たなフィールドを付け加えたりする
ことが必要であり、命令セットに変更を加えなければな
らないと言う問題点があった。
【0015】本発明は、新たな命令を使用したりするこ
となく、分岐命令を越えて前に移動させられた命令の実
行時に発生した割込要因に対する割込処理の実行を、分
岐命令後の処理がどちらの方向に進むかに応じて正しく
処理することを可能とすることを目的とする。
【0016】
【課題を解決するための手段】図1は本発明の原理構成
ブロック図である。同図は分岐命令を越えて前に移動さ
せられた命令の実行時に発生する割込要因に対応する割
込みの実行、または中止を、この分岐命令の実行結果に
従って制御可能とする割込処理装置の原理構成ブロック
図である。
【0017】図1において、割込信号発生手段1は、分
岐命令を越えて前に移動させられた命令の実行時に割込
要因が発生した時にセットされ、その移動させられた命
令の元の位置の方向に分岐命令実行後の処理が行われる
時、割込要因に対する割込信号を発生するものである。
【0018】また、割込信号発生手段リセット手段2
は、その分岐命令実行後の処理が移動させられた命令の
元の位置の方向と異なる方向に進む時、割込信号発生手
段1をリセットするものである。
【0019】ここで、割込信号発生手段1は、例えばア
ドレスレジスタと比較器と論理ゲートとによって構成さ
れる。アドレスレジスタは前述の分岐命令のアドレスを
記憶するものであり、比較器はアドレスレジスタに記憶
されたアドレスと現在のプログラムカウンタの値を比較
し、その比較結果が両者の一致を検出し、かつ割込信号
発生手段リセット手段2がリセット信号を出力していな
い時に、論理ゲートが割込信号を出力する。
【0020】また、割込信号発生手段リセット手段2
は、例えばカウンタと比較器とによって構成され、カウ
ンタのカウント値として移動させられた命令の移動後の
位置から元の位置までの命令列のうち最長の命令列に対
応する命令移動数としての最大パス長Lが設定され、1
つの命令が実行されるたびにカウント値はデクリメント
される。そして、カウンタのカウント値が‘0’となっ
た時、比較器から割込信号発生手段1をリセットするリ
セット信号が出力される。
【0021】
【作用】本発明においては、ある命令の実行時に割込要
因が発生するとその割込要因の発生理由が判定される。
そして、その割込要因が分岐命令を越えて前に移動させ
られた命令の実行時に発生したものである時には、一般
に割込信号発生装置のセットが行われる。すなわち、前
述のアドレスレジスタに分岐命令のアドレスが設定さ
れ、また前述のカウンタに最長の命令列に対応する命令
移動数としての最大パス長Lが設定され、割込信号発生
装置がセットされる。
【0022】その後、命令が次々と実行され、プログラ
ムカウンタの値とアドレスレジスタに記憶されている分
岐命令のアドレスが一致した時点で、割込信号発生手段
1から割込信号が出力される。前述の割込信号発生装置
のセットの時点で、例えば割込状態レジスタに割込要因
発生の理由となった命令のアドレスと割込要因の発生理
由とが、分岐命令の処理後において移動前の命令が元々
どちらの方向にあったかに対応させて記憶されており、
分岐命令後の処理がどちらに進むかに対応して、実際に
割込処理を実行するか、または中止するかが、例えばソ
フトウェアによって判断される。
【0023】一方、前述のカウンタのカウント値は1つ
の命令が実行される毎にデクリメントされ、カウント値
が‘0’となった時点で割込信号発生手段リセット手段
2からリセット信号が出力される。これは分岐命令実行
後の処理が、移動させられた命令が元々あった位置とは
異なる方向に進んだ場合に、割込信号発生手段1をリセ
ットするものである。
【0024】以上のように、本発明によれば、分岐命令
を越えて前に移動させられた命令の実行時に発生する割
込要因に対応する割込処理の実行を正しく制御すること
ができる。
【0025】
【実施例】図2は本発明の割込処理装置の全体構成ブロ
ック図である。同図において、割込処理装置は中央制御
装置(CPU)10、メモリ11、および割込信号発生
装置12によって構成されている。割込信号発生装置1
2の詳細構成は図3で説明するが、この装置に対しては
CPU10に対すると同様にクロック信号が与えられ、
割込信号発生装置12からCPU10に対して割込信号
が出力される。また、メモリ11の内部のロードモジュ
ール13の内容についても後述する。
【0026】図3は図2の割込信号発生装置の詳細構成
ブロック図である。同図において、割込信号発生装置
は、プログラムカウンタ20のカウント値と、後述する
ように分岐命令のアドレスが格納されるアドレスレジス
タ21の内容とを比較する比較器22、比較器22の出
力とコントロール信号とが入力されるアンドゲート2
3、複数のアンドゲート23の出力が入力されるオアゲ
ート24、クロック信号と後述するカウンタの出力とが
入力されるアンドゲート26、アンドゲート26の出力
をクロック信号の入力毎に‘1’だけ減算してカウンタ
28に出力する減算器27、後述するパス長が設定され
るカウンタ28、カウンタ28の出力を‘0’と比較す
る比較器29、比較器29の出力するコントロール信号
を反転させてアドレスレジスタ21のクリア信号を出力
するインバータ30を備えている。
【0027】また、この割込信号発生装置に対応して、
分岐命令を越えて前に移動させられたロード命令の実行
時に割込要因が発生した時、そのロード命令のアドレス
と割込要因発生理由とを、分岐命令後の処理がロード命
令が元々あった位置の方向に進行するか否かに応じて格
納する割込状態レジスタが備えられている。このレジス
タの左側の領域32には、分岐命令実行後の処理がロー
ド命令が元々分岐する方向にあった場合のアドレスと割
込要因発生理由とが格納され、右側の領域33にはロー
ド命令が元々分岐しない方向にあった場合のアドレスと
割込要因発生理由とが格納される。
【0028】図4は図2のメモリ11内のロードモジュ
ール13の格納内容の説明図である。同図(a) はロード
モジュールに格納されるプログラムであり、このプログ
ラムは実質的に図14と全く同一であるが、各命令に対
してアドレスが付加された形式となっている。
【0029】図4(b) はロードモジュール13におい
て、例えばプログラムの後に格納される割込制御表の例
である。本発明においては、分岐命令を越えて前に移動
させられた命令の移動先アドレスと、元の位置から移動
先に移動するに際して初めに越えた分岐命令のアドレス
と、その分岐命令の実行後のどちらの方向から移動して
きたかを示す分岐方向と、元の位置と移動した位置の間
のパス長、すなわち移動した位置から元の位置に至る全
ての命令列のうちで最長の命令列の長さを、制御表の形
式としてコンパイラが出力するものとする。このうち分
岐方向の‘0’は分岐が起こらない方向、すなわち前述
のプログラムでは図14、分岐方向‘1’は分岐が起こ
る場合の方向、すなわち図15の例のように、ロード命
令が分岐命令を越えて移動したことを示す。また、パス
長は図4(a) において元々の位置、すなわち(3)と
(5)の間の位置から移動した距離としての3命令分を
示している。
【0030】図5はロードモジュール出力の全体処理フ
ローチャートである。同図において、処理が開始される
と、ステップS1でプログラムの構文が解析され、ステ
ップS2で各命令コードが生成され、ステップS3でス
ケジューリングが行われ、ステップS4でプログラムコ
ード出力、および割込制御表の出力が行われる。
【0031】図6は図5のステップS3におけるスケジ
ューリングの詳細処理フローチャートである。同図にお
いて、スケジューリング処理が開始されると、まずステ
ップS11で変数の間の依存関係が解析され、ステップ
S12で変数の間の依存関係を壊さないと言う条件でロ
ード命令を移動できる範囲が求められる。ここで変数の
間の依存関係を壊さないということは、プログラムのあ
るステップである変数の値を使用する場合に、その変数
の値がそれに先立つステップにおいて決定されていなけ
ればならないことを意味する。
【0032】ロード命令を移動できる範囲が求められる
と、ステップS13でその範囲内において最大パス長L
が求められる。この最大パス長Lとは、移動後のロード
命令と、元々そのロード命令があった位置との間の命令
列のうちで最長の命令列に対応する命令の移動数に相当
する。
【0033】次にステップS14で、ロード命令を移動
できる範囲内において、そのロード命令を移動させる場
合に最初に越える分岐命令を実行することなく、再びそ
のロード命令を実行する場合のパス長のうち最も短い最
短パス長 外2 が求められ
【0034】
【外2】
【0035】る。これは、図3で説明したように、カウ
ンタ28に最大パス長Lが設定され、1つの命令の実行
毎にその値はデクリメントされ、カウンタ28のカウン
ト値が‘0’となった時点でアドレスレジスタ21の内
容がクリアされ、その後は割込信号を発生させない制御
が正しく行われることを保証するために、Lが 外3
【0036】
【外3】
【0037】り大きくなるような場合にはロード命令の
移動を行わないことにするためであり、図6のステップ
S15でLが 外4 より小さいと言う条件の下で最大
のLを
【0038】
【外4】
【0039】与える位置にロード命令の移動が行われ
る。そして、分岐命令を越えてその移動が行われた場合
には、図4の割込制御表への登録が行われる。図7はL
が 外5 より大きくなるようなロード命令の移動の説
明図である。
【0040】
【外5】
【0041】同図(a) において、最後にあるロード命令
を同図(b) に示すように4行目に移動させる場合を考え
る。その場合、最大パス長Lは図7(b) において4行目
にあるロード命令から順次各命令が実行される場合に対
応し、この場合移動後の位置から元々あった位置までの
パス長である最大パス長Lは‘12’となる。但し、L
ABEL命令は機械命令ではないために、これに対応す
るパス長は‘0’と数える。
【0042】これに対して、最短パス長 外6 に対応
する処理は、ロード命令から(1)
【0043】
【外6】
【0044】の分岐命令でLABEL1に分岐し、再び
ロード命令を実行し、(1)の分岐命令では分岐が行わ
れず、次の(2)の分岐命令でLABEL2に分岐し、
ロード命令の元々の位置に至るパスであり、そのパス長
外7 は‘11’となり、L
【0045】
【外7】
【0046】が 外8 より大きくなる。
【0047】
【外8】
【0048】前述のように図3のカウンタ28には最大
パス長Lが設定されるので、L>外9 となるような命
令移動を許容する場合には、当然 外10 に対する処
【0049】
【外9】
【0050】
【外10】
【0051】が行われている間にも割込信号の発生が可
能である。ここで最短パス長 外11
【0052】
【外11】
【0053】に相当する処理において、第1回目のロー
ド命令において発生した割込要因によってカウンタ28
にLの値、ここでは‘12’が設定されると、(1)の
分岐命令を経由した後の第2回目のロード命令実行時に
割込要因が発生しなくても割込処理が行われてしまうこ
とになる。
【0054】第1回目のロード命令の実行時の割込要因
は、処理がそのままロード命令の元々の位置まで順次実
行された時に有効なものであり、(1)の分岐命令によ
って他の方向に分岐した場合には、無効とすべきもので
あるために、この割込要因に対する割込処理を実行する
ことは、最短パス長 外12 に対する処理としては
【0055】
【外12】
【0056】不適当である。したがって、本発明におい
てはこのようにLが 外13 より大
【0057】
【外13】
【0058】きくなるような場合には、ロード命令の移
動は行わないものとする。ここで図13の割込信号発生
装置の構成ブロック図に戻り、本発明における割込処理
方式について更に詳細に説明する。前述のようにロード
命令が分岐命令を越えて、前に移動させられた場合に
は、移動時に最初に越えた分岐命令のアドレスがアドレ
スレジスタ21に格納される。図8はこのアドレスレジ
スタ21の個数の説明図である。同図において、ロード
命令が最初にブランチBを越えて、合計3個のブランチ
を越えた位置に移動させらたものとする。この場合、割
込信号発生装置において、そのアドレスがアドレスレジ
スタにセットされる可能性のある分岐命令は、各分岐命
令が2つの方向に分岐すると仮定して、合計7個とな
る。ある命令がL個の分岐命令を越えた位置まで移動さ
れたものとすると、図3におけるアドレスレジスタ21
の必要個数nは次式で与えられる。
【0059】n=2L −1図3においてプログラムカウ
ンタ20のカウント値がアドレスレジスタ21に格納さ
れている分岐命令のアドレスと一致すると、比較器22
から‘1’が出力され、比較器20からコントロール信
号として‘1’が出力されている場合には、アンドゲー
ト23から‘1’が出力され、オアゲート24を通して
割込信号が出力される。
【0060】一方、割込要因が発生した時点で、アドレ
スレジスタ21への分岐命令アドレス格納と共にカウン
タ28のカウント値設定が行われている。ここで設定さ
れる値は前述の最大パス長Lであり、設定されたカウン
ト値はクロック信号の入力毎にデクリメントされる。
【0061】図9はこのカウンタの動作を示すフローチ
ャートである。同図において、ステップS21で実行命
令が割込処理ルーチンの内部の命令であるか否かが判定
され、割込処理ルーチン内のものである時には何らの処
理も行われない。すなわち、カウンタ値のデクリメント
は実行されない。
【0062】これに対して、割込処理ルーチン以外のも
のである時には、ステップS22でカウンタの値がデク
リメントされ、S23でカウンタのカウント値が負にな
っているか否かが判定され、負である場合にはS34で
カウンタの値が‘0’とされ、負でない場合には何らの
処理も行われない。
【0063】図10は本発明における割込処理ルーチン
の全体フローチャートである。同図において、処理ルー
チンが開始されると、まずステップS30で割込要因が
解析され、S31で分岐命令を越えて移動した命令によ
る割込みであると判定されると、ステップS32で割込
信号発生装置に分岐命令のアドレスなどが設定され、割
込信号発生装置がセットされて処理を終了する。
【0064】これに対して、割込要因がS34で割込信
号発生装置による割込みであると判定されると、S35
で最初に越えた分岐命令実行後の処理がどちらの方向に
行われか、すなわち分岐方向が調べられ、S36でその
分岐方向に対応する割込状態レジスタに値が発生されて
いるならば、その値を割込発生アドレスとして割込処理
が行われ、処理を終了する。
【0065】更に割込要因がその他の割込みであるとS
38で判定されると、S39で割込処理が行われ、処理
を終了する。図11は、図10におけるステップS32
の割込信号発生装置の設定処理の詳細フローチャートで
ある。同図において、処理が開始されると、ステップS
40で割込信号発生装置がその分岐命令に対応する移動
元命令によってすでにセットされているか否かが判定さ
れ、すでにセットされている場合にはS41で現在の割
込要因に対応するパス長がカウンタのカウント値より小
さいか否かが判定され、小さくない時にはそのままで、
また小さい時には対応するパス長をカウンタ値として設
定し直した後に、処理を終了する。
【0066】図12は図11のS41,S42における
パス長の再設定の説明図である。同図において、ロード
1命令の実行時に割込要因が発生し、割込信号発生装置
の設定が行われたものとする。その場合には回り道をし
てブランチ1にたどりつくパスであるために、カウンタ
の値として回り道した場合の値が設定される。その後処
理が進んでロード2命令が実行されたとすると、その時
点で回り道を経由する実行は行われないことがわかるの
でカウンタの値をロード2命令からのパス長まで縮める
ことができ、小さい方にカウンタ値を書き直すことがで
きる。
【0067】なお、このロード2命令実行時に割込要因
が発生したとしても、その命令のアドレスや割込要因発
生理由の割込状態レジスタへの格納は行われない。これ
は対応する分岐命令に実行が移った時点で、最初に割込
要因が発生した命令、ここではロード1命令の再実行な
どの処理を行う割込処理ルーチンに処理が移り、このル
ーチンの中で必要に応じて、割込要因が発生した命令が
他にあるか否かなどが調べられるためである。
【0068】図11のS40において、割込信号発生装
置がセットされていないと判定された時には、ステップ
S44でアドレスレジスタの1つに分岐命令のアドレス
が設定され、ステップS45で分岐方向に対応した割込
状態レジスタに現在のプログラムカウンタの値と割込要
因発生理由とが設定され、S46でカウンタにパス長が
設定され、割込信号発生装置のセットが行われて処理を
終了する。
【0069】以上の説明においては、図3のアドレスレ
ジスタ21に移動させられた命令が最初に越えた分岐命
令のアドレスを設定し、割込状態レジスタにはその分岐
命令の実行後の処理がどちらの方向に行われるか、すな
わち分岐方向0と1とに対応させて、ロード命令の移動
先アドレスと割込要因発生理由とを格納するものとして
実施例を詳細に説明したが、他の実施例としてアドレス
レジスタ21には移動させられた命令が元々あった位置
のアドレスを設定することも可能である。
【0070】この場合には、分岐命令実行後の処理がそ
のアドレスの方向に行われる時にのみ割込信号が発生す
ることにより、割込状態レジスタにも分岐方向に対応さ
せることなく、ロード命令の移動先アドレスと割込要因
発生理由とを単に格納することによって適正な割込処理
を行うことが可能となる。この実施例においては、図1
1のステップS45、および図10のS36における
「分岐方向に対応する」と言う制約条件が不要となり、
また図10におけるステップS35の「分岐方向を調べ
る」処理も不要となる。さらに図11のS44でアドレ
スレジスタに設定されるアドレスはロード命令の元の位
置のアドレスである。
【0071】
【発明の効果】以上詳細に説明したように、本発明によ
れば命令セットを変更したり、命令に新たなフィールド
を付け加えたりすることなく、分岐命令を越えて前に移
動した命令の実行時に発生した割込要因に対応する割込
処理を適正に実行することが可能となる。また、割込要
因が発生しなければ余計な命令の処理を行う必要性が全
く存在しないために、通常の動作時においてはコンピュ
ータシステムの実行速度を落とすことがないため、コン
ピュータシステムの処理効率向上に寄与するところが大
きい。
【図面の簡単な説明】
【図1】本発明の原理構成ブロック図である。
【図2】本発明の割込処理装置の全体構成を示すブロッ
ク図である。
【図3】割込信号発生装置の詳細構成を示すブロック図
である。
【図4】ロードモジュールに加えられる割込制御表を説
明する図である。
【図5】コンパイラによるロードモジュール出力処理の
全体フローチャートである。
【図6】図5におけるスケジューリング処理の詳細フロ
ーチャートである。
【図7】ロード命令を移動できないプログラムの例を説
明する図である。
【図8】アドレスレジスタの必要個数を説明する図であ
る。
【図9】カウンタの動作を説明するフローチャートであ
る。
【図10】割込処理ルーチンの全体フローチャートであ
る。
【図11】図10における割込信号発生装置の設定処理
の詳細フローチャートである。
【図12】図11におけるカウンタのカウント値の再設
定理由の説明図である。
【図13】キャッシュミスによるペナルティの説明図で
ある。
【図14】ノンブロッキングロード命令を使用したプロ
グラム変更の説明図である。
【図15】分岐が成立した後に実行されるロード命令を
移動させたプログラムの説明図である。
【図16】センチネル命令を挿入したプログラムの説明
図である。
【符号の説明】
1 割込信号発生手段 2 割込信号発生手段リセット手段 10 中央処理装置(CPU) 11 メモリ 12 割込信号発生装置 13 ロードモジュール 21 アドレスレジスタ 28 カウンタ 32,33 割込状態レジスタ

Claims (15)

    【特許請求の範囲】
  1. 【請求項1】 分岐命令を越えて前に移動させられた命
    令の実行時に割込要因が発生した時にセットされ、該移
    動させられた命令の元の位置の方向に該分岐命令実行後
    の処理が行われる時、前記割込要因に対応する割込信号
    を発生する割込信号発生手段と、 該分岐命令実行後の処理が前記移動させられた命令の元
    の位置の方向と異なる方向に進む時、該割込信号発生手
    段をリセットする割込信号発生手段リセット手段とを備
    え、分岐命令を越えて前に移動させられた命令実行時に
    発生する割込要因に対応する割込みの実行、または中止
    を、該分岐命令の実行結果に従って制御可能とすること
    を特徴とする割込処理装置。
  2. 【請求項2】 前記割込信号発生手段が、 前記分岐命令のアドレスを記憶するアドレスレジスタ手
    段と、 該アドレスレジスタ手段に記憶されたアドレスと現在の
    プログラムカウンタのカウント値とを比較する比較手段
    と、 該比較手段が前記アドレスとプログラムカウンタのカウ
    ント値との一致を検出し、かつ前記割込信号発生手段リ
    セット手段が割込信号発生手段をリセットするリセット
    信号を出力していない時、割込信号を出力する論理ゲー
    ト手段とを備えたことを特徴とする請求項1記載の割込
    処理装置。
  3. 【請求項3】 前記割込信号発生手段リセット手段が、 前記移動させられた命令の移動後の位置から元の位置ま
    での命令列のうち最長の命令列に対応する、該元の位置
    から移動後の位置までの命令移動数としての最大パス長
    Lが設定され、1つの命令が実行されるたびにデクリメ
    ントされるカウンタ手段と、 該カウンタ手段のカウント値が‘0’となった時前記割
    込信号発生手段をリセットするリセット信号を出力する
    比較手段とを備えたことを特徴とする請求項1記載の割
    込処理装置。
  4. 【請求項4】 前記分岐命令を越えて移動させられる命
    令の移動時において、 該移動させられる命令の移動後の位置から元の位置まで
    の命令列のうち最長の命令列に対応する、該元の位置か
    ら移動後の位置までの命令移動数としての最大パス長L
    が、該移動時に最初に越える分岐命令を実行することな
    く該移動させられた命令を再度実行した後に該最初に越
    える分岐命令を実行し、前記元の位置に至る最短の命令
    列に対応する、該元の位置から移動後の位置までの命令
    移動数としての最短パス長 外1 より大きい時、該最
    大パス長Lに相当する命令移動を 【外1】 行わないことを特徴とする請求項1記載の割込処理装
    置。
  5. 【請求項5】 前記割込処理装置において、 前記移動させられた命令の実行時に割込要因が発生した
    時、該割込要因の発生理由と該移動させられた命令の移
    動後のアドレスとを、移動時に最初に越えた分岐命令に
    おける分岐の有、無のいずれの方向に該移動前の命令が
    あったかに対応させて記憶する割込状態レジスタ手段を
    更に備えたことを特徴とする請求項1記載の割込処理装
    置。
  6. 【請求項6】 前記割込信号発生手段が、 前記移動させられた命令の元の位置のアドレスを記憶す
    るアドレスレジスタ手段と、 該アドレスレジスタ手段に記憶されたアドレスと現在の
    プログラムカウンタのカウント値とを比較する比較手段
    と、 該比較手段が前記アドレスとプログラムカウンタのカウ
    ント値との一致を検出し、かつ前記割込信号発生手段リ
    セット手段が割込信号発生手段をリセットするリセット
    信号を出力していない時、割込信号を出力する論理ゲー
    ト手段とを備えたことを特徴とする請求項1記載の割込
    処理装置。
  7. 【請求項7】 前記割込処理装置において、 前記移動させられた命令の実行時に割込要因が発生した
    時、該割込要因の発生理由と該移動させられた命令の移
    動後のアドレスとを記憶する割込状態レジスタ手段を更
    に備えたことを特徴とする請求項1記載の割込処理装
    置。
  8. 【請求項8】 データ処理装置における割込みを処理す
    る割込処理装置において、 割込要因が発生した時該割込要因の発生理由を判定し、 該発生理由で分岐命令を越えて前に移動させられた命令
    の実行時に発生したものであるか、割込信号発生装置に
    よって発生したものであるか、あるいは全く異なるその
    他の理由によるものかによってそれぞれ異なる処理を実
    行することを特徴すとる割込処理方法。
  9. 【請求項9】 前記割込要因の発生理由が分岐命令を越
    えて前に移動させられた命令の実行時に発生したもので
    ある時、割込信号発生装置をセットすることを特徴とす
    る請求項8記載の割込処理方法。
  10. 【請求項10】 前記割込信号発生装置のセットにおい
    て、 該割込信号発生装置が、前記移動させられた命令が移動
    時に最初に越えた分岐命令に対応してすでにセット済で
    あるか否かを判定し、 すでにセット済である時、該割込要因の発生理由となっ
    た命令に対応するパス長が該割込信号発生装置内のカウ
    ンタのカウント値より小さいか否かを判定し、 小さい時、該パス長を該カウンタのカウント値として設
    定し直すことを特徴とする請求項9記載の割込処理方
    法。
  11. 【請求項11】 前記割込信号発生装置のセットにおい
    て、 該割込信号発生装置が、前記移動させられた命令が移動
    時に最初に越えた分岐命令に対応してすでにセット済で
    あるか否かを判定し、 セット済でない時、該割込信号発生装置内のアドレスレ
    ジスタに該最初に越えた分岐命令のアドレスを設定し、 該割込信号発生装置内の割込状態レジスタに現在のプロ
    グラムカウンタのカウント値と割込要因の発生理由を格
    納し、 該割込信号発生装置内のカウンタに、前記移動させられ
    た命令の移動後の位置から元の位置までの命令列のうち
    最長の命令列に対応する、該元の位置から移動後の位置
    までの命令移動数としての最大パス長Lを設定し、割込
    信号発生装置をセットすることを特徴とする請求項9記
    載の割込処理方法。
  12. 【請求項12】 前記割込信号発生装置のセットにおい
    て、 該割込信号発生装置が、前記移動させられた命令が移動
    時に最初に越えた分岐命令に対応してすでにセット済で
    あるか否かを判定し、 セット済でない時、該割込信号発生装置内のアドレスレ
    ジスタに該移動させられた命令の元の位置のアドレスを
    設定し、 該割込信号発生装置内の割込状態レジスタに現在のプロ
    グラムカウンタのカウント値と割込要因の発生理由を格
    納し、 該割込信号発生装置内のカウンタに、前記移動させられ
    た命令の移動後の位置から元の位置までの命令列のうち
    最長の命令列に対応する、該元の位置から移動後の位置
    までの命令移動数としての最大パス長Lを設定して、割
    込信号発生装置をセットすることを特徴とする請求項9
    記載の割込処理方法。
  13. 【請求項13】 前記割込要因の発生理由が割込信号発
    生装置よって発生したものである時、 前記移動させられた命令の元の位置が該命令が最初に越
    えた分岐命令の後のいずれの方向であるかを判定し、 該判定方向に対応して前記割込信号発生装置内の割込状
    態レジスタに該分岐命令に対応する値が格納済であれば
    該格納内容に基づいて割込処理をすることを特徴とする
    請求項8記載の割込処理方法。
  14. 【請求項14】 前記割込要因の発生理由が割込信号発
    生装置によって発生したものである時、 該割込信号発生装置内の割込状態レジスタに前記分岐命
    令に対応して格納された内容に基づいて割込処理をする
    ことを特徴とする請求項8記載の割込処理方法。
  15. 【請求項15】 命令を分岐命令の前に移動する手段
    と、 該命令の実行時に割り込み要因が発生したときにセット
    される割込信号発生手段と、 前記分岐命令の実行手段と、 前記分岐命令の実行後の処理が前記移動された命令の元
    の位置の方向と異なる方向に進むときに前記割込信号発
    生手段をリセットする割込信号発生手段リセット手段と
    を備えたことを特徴とする割込処理方法。
JP6208305A 1994-09-01 1994-09-01 割込処理装置および方法 Withdrawn JPH0877021A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP6208305A JPH0877021A (ja) 1994-09-01 1994-09-01 割込処理装置および方法
US08/510,120 US5812837A (en) 1994-09-01 1995-08-01 Data processing apparatus for controlling an interrupt process and its method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP6208305A JPH0877021A (ja) 1994-09-01 1994-09-01 割込処理装置および方法

Publications (1)

Publication Number Publication Date
JPH0877021A true JPH0877021A (ja) 1996-03-22

Family

ID=16554057

Family Applications (1)

Application Number Title Priority Date Filing Date
JP6208305A Withdrawn JPH0877021A (ja) 1994-09-01 1994-09-01 割込処理装置および方法

Country Status (2)

Country Link
US (1) US5812837A (ja)
JP (1) JPH0877021A (ja)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6785803B1 (en) * 1996-11-13 2004-08-31 Intel Corporation Processor including replay queue to break livelocks
US5850556A (en) * 1996-12-26 1998-12-15 Cypress Semiconductor Corp. Interruptible state machine
US6128728A (en) * 1997-08-01 2000-10-03 Micron Technology, Inc. Virtual shadow registers and virtual register windows
JP3278603B2 (ja) * 1998-01-12 2002-04-30 エヌイーシーマイクロシステム株式会社 コンパイル装置、コンパイラの最適化方法及びコンパイラの最適化手順を記録した記録媒体
KR100313939B1 (ko) * 1998-12-05 2001-12-20 김영환 인터럽트제어기
JP2002189603A (ja) * 2000-12-19 2002-07-05 Fujitsu Ltd 計算機とその制御方法

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4484271A (en) * 1979-01-31 1984-11-20 Honeywell Information Systems Inc. Microprogrammed system having hardware interrupt apparatus
US5003462A (en) * 1988-05-31 1991-03-26 International Business Machines Corporation Apparatus and method for implementing precise interrupts on a pipelined processor with multiple functional units with separate address translation interrupt means
JPH0795277B2 (ja) * 1988-11-25 1995-10-11 日本電気株式会社 データ処理装置
US5185871A (en) * 1989-12-26 1993-02-09 International Business Machines Corporation Coordination of out-of-sequence fetching between multiple processors using re-execution of instructions
US5185868A (en) * 1990-01-16 1993-02-09 Advanced Micro Devices, Inc. Apparatus having hierarchically arranged decoders concurrently decoding instructions and shifting instructions not ready for execution to vacant decoders higher in the hierarchy
US5303377A (en) * 1990-03-27 1994-04-12 North American Philips Corporation Method for compiling computer instructions for increasing instruction cache efficiency
JPH04263323A (ja) * 1991-02-18 1992-09-18 Nec Corp 機械語命令列並べ換え方式
KR100299691B1 (ko) * 1991-07-08 2001-11-22 구사마 사부로 확장가능알아이에스씨마이크로프로세서구조
US5537559A (en) * 1994-02-08 1996-07-16 Meridian Semiconductor, Inc. Exception handling circuit and method
US5625835A (en) * 1995-05-10 1997-04-29 International Business Machines Corporation Method and apparatus for reordering memory operations in a superscalar or very long instruction word processor

Also Published As

Publication number Publication date
US5812837A (en) 1998-09-22

Similar Documents

Publication Publication Date Title
JP3120152B2 (ja) コンピューターシステム
EP0394624B1 (en) Multiple sequence processor system
US6289445B2 (en) Circuit and method for initiating exception routines using implicit exception checking
US6353881B1 (en) Supporting space-time dimensional program execution by selectively versioning memory updates
US5617553A (en) Computer system which switches bus protocols and controls the writing of a dirty page bit of an address translation buffer
JP2560988B2 (ja) 情報処理装置および処理方法
JPH0877021A (ja) 割込処理装置および方法
US9639370B1 (en) Software instructed dynamic branch history pattern adjustment
US20220342844A1 (en) Method and Apparatus for Desynchronizing Execution in a Vector Processor
WO2001013223A1 (en) Method and apparatus for operating virtual computer
JP2783285B2 (ja) 情報処理装置
JP2814683B2 (ja) 命令処理装置
JP2894438B2 (ja) パイプライン処理装置
JP2771373B2 (ja) 命令先取り装置
JP2853460B2 (ja) データロード方法及びそれを用いた演算プロセッサ
JPH07182165A (ja) コミット条件付き命令の処理方法およびその装置
US20080005545A1 (en) Dynamically shared high-speed jump target predictor
JP3471691B2 (ja) マイクロ命令における分岐命令制御方式
JP2927102B2 (ja) 命令列切り替え方法及びそれを用いた演算プロセッサ
JP3647930B2 (ja) 動的ハイパースカラ・プロセッサ
JP2853458B2 (ja) 命令列切り替え方法及びそれを用いた演算プロセッサ
JPH04365133A (ja) プレロード命令実行装置及びプログラム修正装置
JPH03250221A (ja) 分岐予測方式
JPS6337416B2 (ja)
JPH04205625A (ja) 並列処理計算機

Legal Events

Date Code Title Description
A300 Application deemed to be withdrawn because no request for examination was validly filed

Free format text: JAPANESE INTERMEDIATE CODE: A300

Effective date: 20011106