JP2004234420A - 割り込み制御方式及び割り込み制御方法 - Google Patents
割り込み制御方式及び割り込み制御方法 Download PDFInfo
- Publication number
- JP2004234420A JP2004234420A JP2003023239A JP2003023239A JP2004234420A JP 2004234420 A JP2004234420 A JP 2004234420A JP 2003023239 A JP2003023239 A JP 2003023239A JP 2003023239 A JP2003023239 A JP 2003023239A JP 2004234420 A JP2004234420 A JP 2004234420A
- Authority
- JP
- Japan
- Prior art keywords
- interrupt
- processing
- coprocessor
- processor
- register
- 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.)
- Pending
Links
Images
Landscapes
- Advance Control (AREA)
Abstract
【課題】通常処理と割り込み処理を依頼するインターフェースが同じであるコプロセッサにおいて、割り込み発生時に再開する手段を提供する。
【解決手段】コプロセッサ2はCPU1のアドレス空間に割り当てられたメモリマップドI/Oによってアクセスする内部レジスタとして、検出した異常状態を保持するための「ステータスレジスタ」、割り込み状態を保持する「割り込みステータスレジスタ」と、キュー内部の情報を読み出すための「キューポインタレジスタ」、「キューデータレジスタ」、キューのクリアを行う「キュークリアレジスタ」を保持し、上記内部レジスタを用いて、コプロセッサ2の割り込み処理依頼の判定、処理モード変更の通知、CPU1が異常状態の要因となる命令の特定、依頼されている処理の保持、割り込み処理後に再開する処理の特定、割り込み処理後の再開において、処理の再実行、もしくは継続の選択制御を行う。
【選択図】 図1
【解決手段】コプロセッサ2はCPU1のアドレス空間に割り当てられたメモリマップドI/Oによってアクセスする内部レジスタとして、検出した異常状態を保持するための「ステータスレジスタ」、割り込み状態を保持する「割り込みステータスレジスタ」と、キュー内部の情報を読み出すための「キューポインタレジスタ」、「キューデータレジスタ」、キューのクリアを行う「キュークリアレジスタ」を保持し、上記内部レジスタを用いて、コプロセッサ2の割り込み処理依頼の判定、処理モード変更の通知、CPU1が異常状態の要因となる命令の特定、依頼されている処理の保持、割り込み処理後に再開する処理の特定、割り込み処理後の再開において、処理の再実行、もしくは継続の選択制御を行う。
【選択図】 図1
Description
【0001】
【発明の属する技術分野】
この発明は、CPUとコプロセッサの割り込み制御に関するものである。
【0002】
【従来の技術】
CPU(Central Processing Unit)からの処理依頼の通知により動作を開始するコプロセッサ(プロセッサの機能を拡張する機能ブロック)では、コプロセッサで検出した異常状態をCPUへ通知する必要がある。この通知後にCPUは、異常発生に伴う処置をする。その後、コプロセッサは後続処理の継続実行、もしくは再実行を行う。コプロセッサは、CPUコア内部でなく外部回路として外付けされたものを想定する。
【0003】
CPUがコプロセッサで検出した異常を認識するには、CPUがコプロセッサ内部の状態を読み出すことにより、異常状態の発生を検出する方法がある。この方法では、CPUは、コプロセッサに処理依頼をした後でコプロセッサの状態を読み出す処理が必要になるため、コプロセッサの使用効率が落ちるという問題がある。そのために、コプロセッサが異常検出時の割り込み通知を、外部回路の割り込み調停制御を行う割り込みコントローラに送ることによって、CPUに異常状態の検出を通知する方法がある。これにより、コプロセッサが通常処理を行う限りにおいては、割り込みをサポートするためにコプロセッサの性能が劣化することがない。
【0004】
コプロセッサの処理が複数サイクルに渡って実行される場合、コプロセッサの稼動効率を上げるために、コプロセッサの処理をパイプライン化し、CPUはコプロセッサの処理終了を待つことなく、次の処理依頼を発行することによりコプロセッサだけでなく、CPUの稼動効率も上げる手段が取られている。
【0005】
更に割り込み処理からの復帰を考慮すると、CPUとコプロセッサは協調動作をする必要がある。具体的には、割り込み処理後に処理の継続を行う場合は、CPUはどこまでの処理依頼がコプロセッサに受け付けられたかの情報を持ち、コプロセッサは受け付けた処理依頼の情報を保持することが必要である。割り込み処理後に再実行を行う場合は、CPUは処理依頼を最初からやり直し、コプロセッサはそれまでに受け付けた処理依頼を破棄する必要がある。
【0006】
【特許文献1】
特開平8−137751号公報
【0007】
【発明が解決しようとする課題】
割り込み復帰処理をサポートする場合において、処理ごとに内部状態を読み出して確認する手法では処理を実行する期間に無駄が生じるのでコプロセッサをパイプライン化する恩恵を受けられない。また、割り込みを使用する場合、割り込み検出時にCPUはどの処理依頼に対して発生したものか特定できない。何故なら、CPUはコプロセッサのパイプライン性能を生かすために処理依頼の完了を待つことなく、次の処理依頼を発行するため、割り込み検出の直前に発行した情報が割り込み要因となった処理とは限らないためである。割り込み要因となった処理が特定できない場合、割り込み処理の内容に応じたコプロセッサへのCPUの対応ができなくなる。
【0008】
割り込み処理からの処理の継続を行う場合、CPUは、どこまでの処理依頼が受け付けられたかの情報を持つことが必要である。しかし、コプロセッサの性能を有効に使うためにコプロセッサが割り込み信号による通知をCPUへ行う場合、CPUが割り込みを認識するまで、CPUはコプロセッサに処理依頼をし続ける。一方、コプロセッサは割り込み処理通知後は、CPUが割り込み処理を完了するまで依頼された処理の実行を止める必要がある。そのため、CPUから発行され続ける処理依頼を保持する必要が生じるが、保持できる処理依頼には限界があるため、ある数以上の処理依頼をキャンセルする必要がある。処理依頼のキャンセルとはCPUからの処理依頼の受付の返答を遅らせるのでなく、明示的に受け付けできない旨の返答を返すことである。
【0009】
しかし、CPUとコプロセッサのインターフェースには制御を簡略化するため、このキャンセルを示す信号を持たないものも存在する。この場合、処理の継続という形での割り込みからの復帰はできない。何故なら、CPUがどこまでの処理依頼が受け付けられたかの情報を持つためには、コプロセッサは処理依頼を受け付けられない状態になった場合、CPUがコプロセッサからの処理依頼のキャンセル処理の実行ができないのであれば、受け付け可能になるまで処理依頼の返答を遅らせる必要がある。しかし、CPUからの割り込み処理による処理依頼も同じインターフェースで行うことを考慮すると、CPUの割り込み処理自体も受け付けられなくなり、デッドロックが発生する。
【0010】
また、CPUはコプロセッサへの処理依頼を通常時と割り込み処理時と同じインターフェースで行う。このため、コプロセッサは、依頼された処理が割り込み処理を依頼するものか、CPUが割り込み検出前のキャンセルすべき処理の依頼であるかを判別しなければならない。例えば、コプロセッサ内部情報の読み書きは、通常処理時でも割り込み処理時でも発生する処理であるので判別が必要となる。
【0011】
コプロセッサが複数のCPUへの対応を考慮するのであれば、割り込みからの復帰に際して、継続と再実行を実現するための方式を必要最小限の回路を保持することにより実装すべきである。2つの対応を行う回路を開発することは、コストの上昇につながり望ましくない。
【0012】
本発明においては、性能向上のためにパイプライン処理を行い、通常処理と割り込み処理を依頼するインターフェースが同じであることを想定したコプロセッサにおいて、接続するCPUの依頼した処理のキャンセル機能をコプロセッサが有するか否かに関わらず、割り込みに伴う復帰処理をサポートする機能と方式を実現することを目的とする。
【0013】
【課題を解決するための手段】
この発明に係る割り込み制御方式は、プロセッサと、バスによって上記プロセッサと接続され、上記プロセッサがバスを介して処理依頼を通知することによって処理を実施するコプロセッサ部とを備える割り込み制御方式において、
上記コプロセッサ部は、プロセッサが割り込み処理を依頼する割り込み状態を示す割り込みステータスレジスタを備え、
上記プロセッサは、上記割り込みステータスレジスタのアドレスを記憶するアドレステーブルを備え、
上記プロセッサは、上記割り込み処理を通知する場合に、上記アドレステーブルに記憶された上記割り込みステータスレジスタのアドレスを読み出し、上記割り込みステータスレジスタのアドレスへ割り込み状態を示す値を書き込む処理を上記コプロセッサ部へバスを介して通知し、
上記コプロセッサ部は、上記割り込みステータスレジスタが割り込み状態を示している場合に、上記プロセッサから通知される処理依頼を割り込み処理であると判断することを特徴とする。
【0014】
【発明の実施の形態】
実施の形態1.
図1は、実施の形態1のシステム構成の一例を表す図である。
コプロセッサ2は、CPU1が外部回路を接続するためのバス3に接続され、CPU1からコプロセッサ2への処理依頼、ステータス読み出し、コプロセッサ2の内部機構へのアクセスは、CPU1のアドレス空間に割り当てられたメモリマップドI/Oを介した送受信によって行うものとする。これにより、コプロセッサ2とCPU1は、外部回路を接続するバス3によって接続される。割り込み信号は、その他の外部回路4と同様に割り込み制御回路5に送られ、割り込み制御回路5がどの外部回路からの割り込み処理が発生したかをCPU1に通知する。
【0015】
CPU1は、コプロセッサ2のアドレス空間に割り当てられた内部レジスタ7へアクセスするために、コプロセッサ2が有する内部レジスタ7のアドレスを記憶するアドレステーブル8(アドレス空間)を有する。
CPU1は、アドレステーブル8に記憶するアドレスを用い、バス3を介してコプロセッサ2の内部レジスタ7へアクセスすることができる。
CPU1は、プロセッサともいう。
コプロセッサ2は、CPU1の機能を拡張する機能ブロックであり、CPU1から処理依頼を通知され、通知された処理を実施する。コプロセッサ2は、コプロセッサ部ともいう。
【0016】
コプロセッサ2は高速化のため、パイプライン処理化されており、CPU1は、コマンドの連続実行を可能とするために、コプロセッサ2の処理終了を待たずに次の処理を発行する。コプロセッサ2は、連続発行される処理依頼を保持するためのキューを持ち、内部処理に依存するパイプラインストール発生に伴う影響をキューに保持することで吸収する。パイプライン処理するコプロセッサ2の場合、キューにはパイプライン内部のステージで実行中の処理依頼とパイプライン受付前の処理依頼を保持し、キュー読み出しは処理依頼の実行完了時、もしくは処理依頼に対する割り込み発生時に発生する。また、割り込み発生に伴う割り込み処理の間は特別な操作がない限り、キューを保持し、処理依頼のキャンセルを行うことによりキューへの登録を行わなず、割り込み処理終了に伴い、キューの保持されている処理依頼から実行を開始することを特徴とする。
【0017】
コプロセッサ2は、処理に伴う異常状態を検出し、異常状態に対応して内部情報を更新する。同時に、コプロセッサ2は、異常状態の検出に伴う通知を割り込み信号6aとして出力する。割り込み信号6aは、その他の外部回路4の出力する割り込み信号6bとともに割り込み制御回路5に入力される。割り込み制御回路5は、調停制御をした上で割り込み信号6cとしてCPU1へ出力する。CPU1は、割り込み信号6cの入力によって割り込みを認識する。
【0018】
コプロセッサ2は、メモリマップドI/Oとして、検出した異常状態を保持するための「ステータスレジスタ」、割り込み状態を保持する「割り込みステータスレジスタ」と、キュー内部の情報を読み出すための「キューポインタレジスタ」、「キューデータレジスタ」、キューのクリアを行う「キュークリアレジスタ」を保持する。
図2に、コプロセッサ2が保持する内部レジスタ7を示す。
【0019】
「ステータスレジスタ」は異常状態検出に伴い、異常要因となるビットにのみセットされ、その他の処理はホールドする。CPU1は、メモリマップドI/Oにアクセスすることにより、レジスタの全ての異常要因のビットのクリア、セットが可能となる。
【0020】
「割り込みステータスレジスタ」は、「通常状態」、「割り込み処理待ち」、「割り込み処理中」のステータスを有する。「割り込みステータスレジスタ」は、通常処理を実行している間は「通常状態」である。「通常状態(ステータスレジスタの異常要因となるビットがセットされいないとき)」では、「割り込みステータスレジスタ」への書き込み処理は無視される。読み出し時は、現在の状態を示す情報を返す。「割り込みステータスレジスタ」は、異常状態検出に伴い、「割り込み処理待ち」となる。
【0021】
「割り込み処理待ち」状態では、「割り込みステータスレジスタ」は書き込みと読み出しのみ実行可能、その他のレジスタのアクセスは無視される。「割り込み処理待ち」状態での「割り込みステータスレジスタ」の書き込みに伴い、「割り込み処理中」状態となる。「割り込み処理待ち」状態での「割り込みステータスレジスタ」読み出し時は、現在の状態を示す情報を返す。
【0022】
「割り込み処理中」状態での「割り込みステータスレジスタ」の書き込みに伴い、「通常状態」となる。「割り込み処理中」状態での「割り込みステータスレジスタ」読み出し時は、現在の状態を示す情報を返す。
【0023】
「キューポインタレジスタ」は、コプロセッサ2が保持するキューで保持するCPU1から依頼された処理を指定するためのレジスタであり、常に書き込み、読み出しが可能である。
【0024】
「キューデータレジスタ」は、「キューポインタレジスタ」で指定されるキューのエントリの読み出しを行う。キューのエントリは、「コマンドキューエントリ」ともいう。コマンドキューエントリは、キューデータレジスタへ書き込まれたコマンドであり、CPU1から処理依頼を受けたコマンドをいう。読み出されたキューデータは、現時点でのエントリが有効かどうかを示すための有効bitを保持している。
有効bitは、CPU1から依頼された処理をコプロセッサ2が受付をした時点で有効となる。また、依頼された処理が完了した時点で無効(処理終了となり、エントリを空けることを意味する)となる。従って、有効bitが有効である場合、コプロセッサ2は、CPU1から処理依頼を受け付け、受け付けた処理依頼の処理を完了していない状態を意味する。
【0025】
「キュークリアレジスタ」は、コプロセッサ2が保持するキューの情報をクリアするためのレジスタである。「割り込み処理中」状態時のみ書き込み可能であり、書き込みに伴いキューの内容をクリアする。
【0026】
上記の性質を持つレジスタを保持することにより、以下の3つの問題を解決する。
(1)コプロセッサ2の割り込み処理依頼の判定
(2)CPU1が異常状態の要因となる命令を特定する方法
(3)割り込み処理再開を行うための方法
以下に説明する。
【0027】
(1)コプロセッサ2の割り込み処理依頼の判定
割り込み処理が発生する場合のCPU1のコプロセッサ2へのアクセスは、図3のようになる。図3の矢印は、CPU1からコプロセッサ2の内部レジスタアクセスを示している。
【0028】
コプロセッサ2は、異常状態の要因となる命令21により<1.通常処理>から<2.割り込み処理待ち>22となり、割り込み信号27をアサートする。割り込み処理が開始されるまでにもCPU1からコプロセッサ2への処理依頼は発行されている。<2.割り込み処理待ち>22においては、コプロセッサ2は、CPU1からの処理依頼を実施しないことを期待する。しかし、コプロセッサ2は、<2.割り込み処理待ち>22と<3.割り込み処理中>24とのいずれの区間でCPU1が依頼した処理であるかの区別がつかない。
【0029】
CPU1は割り込み検出した場合は、割り込み処理本体の処理を発行する前に「割り込みステータスレジスタ」への書き込み処理23を発行する。コプロセッサ2は<2.割り込み処理待ち>の間は、「割り込みステータスレジスタ」への書き込み以外の処理依頼を全てキャンセルする、もしくは無視することにより、割り込み処理に伴う処理依頼までのCPU1からの処理依頼の実行を抑止する。「割り込みステータスレジスタ」への書き込み処理23によりコプロセッサ2は<3.割り込み処理中>24となり、それ以降は、CPU1からの処理依頼は割り込み処理に伴う処理依頼として実行する。
【0030】
CPU1は割り込み処理終了に伴い、「割り込みステータスレジスタ」への書き込み依頼25を発行する。「割り込みステータスレジスタ」への書き込みによりコプロセッサ2は<4.再開処理>となり、それ以降はCPU1からの処理依頼を実行する。
【0031】
(2)CPU1が異常状態の要因となる命令を特定する方法
内部レジスタ7の「キューデータレジスタ」と「キューポインタレジスタ」により、コマンドキューエントリを読み出す。「キューデータレジスタ」はエントリが有効であるかの情報を保持している。
割り込み発生時(異常状態の要因となる命令21を受けたとき)は、キューの先頭のエントリは割り込み継続を行う時の最初の処理依頼を示す。これは異常状態の要因となる処理の次の処理依頼を指す。キューは割り込み発生時は、全エントリの処理依頼が有効になっていない(必ず空きが一つ存在する)。何故なら、キューの読み出しは割り込み発生時に行われ、割り込み発生に伴いキューへの登録が行われないため、必ずエントリが一つ空くこととなる。通常キューのエントリはラップアラウンド式に制御されるが、エントリに空きがあることにより、割り込み発生時のキューの先頭を以下のように決定できる。
【0032】
「キューポインタレジスタ」を0から最大エントリ数まで連続で「キューデータレジスタ」を読み出す。読み出した「キューデータレジスタ」の有効bitが無効から有効になったときの「キューポインタレジスタ」の指す「キューデータレジスタ」が再開後の先頭の処理依頼となる。よって、異常状態の要因となる処理は、その時の「キューポインタレジスタ」−1となる。
【0033】
(3)割り込み処理再開を行うための方法
(3.1)異常状態の要因となる処理の直後から再開:
割り込み発生時に異常状態の要因となる処理の次から再開することを想定する。コプロセッサ2は<2.割り込み処理待ち>22、<3.割り込み処理中>24の間はキューにエントリを保持しており、<2.割り込み処理待ち>22、<3.割り込み処理中>24から<5.再開処理>26に戻った際には異常状態の要因となる処理の次の処理依頼から実行を再開する。
【0034】
(3.2)処理の再実行を伴う再開:
割り込み発生時は最初の処理依頼からやり直すことを想定する。ここで、最初の処理依頼とは、図3の<1.通常処理>の最初の処理依頼(図3の<1.通常処理>左側の矢印)を指す。コプロセッサ2は、割り込み処理中でもキューを保持している。そのため、CPU1は<3.割り込み処理中>24において、「コマンドキュークリアレジスタ>にアクセスすることでキューをクリアする処理依頼をコプロセッサ2に行う。
【0035】
次に、CPU1がコプロセッサ2からの処理依頼のキャンセル指示を処理する機能の有無によって動作が異なる点について説明する。
まず、CPU1は、コプロセッサ2からの処理依頼のキャンセル指示を処理する機能を有する場合の動作について説明する。
コプロセッサ2は、CPU1へキャンセル指示を通知する。すなわち、コプロセッサ2は、CPU1からの処理依頼を実施しなかったことを、CPU1へ通知する。
【0036】
割り込みに伴う復帰の際に、継続処理を行う場合のCPU1とコプロセッサ2の動作を示す。割り込み処理が発生する場合のCPU1のコプロセッサ2へのアクセスは、図3のようになる。
【0037】
コプロセッサ2は、処理実行中に割り込みが発生した場合、割り込み信号27をアサートしてキューを保持し、<2.割り込み処理待ち>22となる。この状態においては、CPU1からの処理依頼は「割り込みステータスレジスタ」の書き込み処理以外全てキャンセルする。すなわち、コプロセッサ2は、異常状態をCPU1へ通知した後、「割り込みステータスレジスタ」の書込み処理以外の処理依頼をCPU1から受け取った場合、受け取った処理をすべてキャンセルする。「割り込みステータスレジスタ」への書き込み処理23に伴い、<3.割り込み処理中>24となり、以後の処理依頼を割り込みに伴う処理として受付、実行する。再度の「割り込みステータスレジスタ」への書き込み処理25に伴い、<5.再開処理>26となり、保持したキューの先頭の処理依頼からの実行を開始する。
【0038】
CPU1は、コプロセッサ2による割り込み信号6aのアサートから割り込み制御回路5の割り込み発生通知(割り込み信号6c)まで複数の処理をコプロセッサ2に依頼している。但し、コプロセッサ2が割り込みを検出した後の処理依頼はキャンセルの旨通知されているので、CPU1はその依頼をキャンセルされたものとして扱う。これにはリトライ、再実行による処理が想定される。割り込み発生通知後、CPU1は割り込み処理を行うため、「割り込みステータスレジスタ」への書き込み処理23を依頼し、コプロセッサ2に割り込み処理開始を通知し、<3.割り込み処理中>24となる。それ以後の処理依頼により、異常状態の要因となる処理を特定し、ステータスをチェックする、といった割り込み処理をCPU1は実行する。ステータスをチェックするとは、CPU1が、ステータスレジスタを読み出して異常要因となるビットをチェックするということを意味する。割り込み処理終了に際して、再度「割り込みステータスレジスタ」への書き込み処理25を行い、コプロセッサ2を<4.再開処理>の状態にしてコプロセッサ2の処理を再開させる。CPU1は、割り込み発生までにコプロセッサ2に依頼済みしている処理以降の処理をコプロセッサ2に依頼する。
【0039】
次に、CPU1は、コプロセッサ2からの処理依頼のキャンセル指示を想定しない場合について説明する。
【0040】
割り込みに伴う復帰の際に、再実行を行う場合のCPU1とコプロセッサ2の動作を示す。割り込み処理が発生する場合のCPU1のコプロセッサ2へのアクセスは、以下のようになる。
【0041】
コプロセッサ2は処理実行中に割り込みが発生した場合、割り込み信号27をアサートしてキューを保持し、<2.割り込み処理待ち>22となる。この状態においては、CPU1からの処理依頼は「割り込みステータスレジスタ」の書き込み処理以外全て無視する。ここで無視する、ということの意味はバス上の処理依頼としては受信するが、コプロセッサ2としては処理を実行しない、という意味である。コプロセッサ2は、「割り込みステータスレジスタ」への書き込み処理23に伴い、<3.割り込み処理中>24となり、以後の処理依頼を割り込みに伴う処理として受付、実行する。コプロセッサ2は、<3.割り込み処理中>24の間に「キュークリアレジスタ」の書き込み処理が来るので、これによりキューをクリアし、コプロセッサ2としてはリセットされた状態となる。再度の「割り込みステータスレジスタ」への書き込み処理25に伴い、<4.再開処理>26となり、割り込み再開後にCPU1から依頼された処理から実行する。
【0042】
CPU1は、コプロセッサ2による割り込み信号6aのアサートから割り込み制御回路5の割り込み発生通知(割り込み信号6c)まで複数の処理をコプロセッサ2に依頼している。割り込み発生通知後は、割り込み処理を行うため、「割り込みステータスレジスタ」への書き込み処理23を依頼し、コプロセッサ2に割り込み処理開始を通知し、<3.割り込み処理中>24となる。それ以後の処理依頼により、異常状態の要因となる処理を特定し、ステータスをチェックする、といった割り込み処理をCPU1は実行する。再実行を行うために、コプロセッサ2が保持している未実行の処理依頼をクリアする必要があるため、<3.割り込み処理中>24の間に「キュークリアレジスタ」の書き込み処理依頼を行う。割り込み処理終了に際して、再度「割り込みステータスレジスタ」への書き込み処理25を行い、コプロセッサ2を<4.再開処理>としてコプロセッサ2の処理を再開させる。CPU1は、コプロセッサ2に対しては最初の処理から実行するように依頼する。
【0043】
【発明の効果】
この発明によれば、コプロセッサ2へ内部レジスタを設置し、CPU1がメモリマップドI/Oを用いて内部レジスタへアクセスすることにより、割り込み処理から復帰した場合に、処理の継続あるいは処理の再実行とを選択して実施することができる。
特に、「割り込みステータスレジスタ」をコプロセッサ2へ備え、CPU1からアクセスすることによって、割り込みに伴う復帰処理をサポートする機能を実現できる。
【図面の簡単な説明】
【図1】CPUとコプロセッサの接続を表す図。
【図2】コプロセッサ2が保持する内部レジスタ7を示す図。
【図3】割り込み処理フローを表す図。
【符号の説明】
1 CPU、2 コプロセッサ、3 バス、4 その他の外部回路、5 割り込み制御回路、6a 割り込み信号(コプロセッサから出力される割り込み検出信号)、6b 割り込み信号(外部回路から出力される割り込み検出信号)、6c 割り込み信号(CPUに入力される割り込み信号)、8 アドレステーブル、9 内部レジスタ、20 通常処理(割り込み検出前の処理)、21 命令(割り込み検出要因となる処理)、22 割り込み処理待ち(割り込み検出後CPUによる割り込み処理開始までの処理)、23 書き込み処理(割り込み処理開始を示す「割り込みステータスレジスタ」書き込み処理)、24 割り込み処理中、25 書き込み処理(割り込み処理終了を示す「割り込みステータスレジスタ」書き込み処理)、26 再開処理(割り込み処理終了後の再開処理)、27割り込み処理(割り込み検出を通知する割り込み信号)、28 CPUの処理発行の時間軸、29 コプロセッサの処理受信の時間軸。
【発明の属する技術分野】
この発明は、CPUとコプロセッサの割り込み制御に関するものである。
【0002】
【従来の技術】
CPU(Central Processing Unit)からの処理依頼の通知により動作を開始するコプロセッサ(プロセッサの機能を拡張する機能ブロック)では、コプロセッサで検出した異常状態をCPUへ通知する必要がある。この通知後にCPUは、異常発生に伴う処置をする。その後、コプロセッサは後続処理の継続実行、もしくは再実行を行う。コプロセッサは、CPUコア内部でなく外部回路として外付けされたものを想定する。
【0003】
CPUがコプロセッサで検出した異常を認識するには、CPUがコプロセッサ内部の状態を読み出すことにより、異常状態の発生を検出する方法がある。この方法では、CPUは、コプロセッサに処理依頼をした後でコプロセッサの状態を読み出す処理が必要になるため、コプロセッサの使用効率が落ちるという問題がある。そのために、コプロセッサが異常検出時の割り込み通知を、外部回路の割り込み調停制御を行う割り込みコントローラに送ることによって、CPUに異常状態の検出を通知する方法がある。これにより、コプロセッサが通常処理を行う限りにおいては、割り込みをサポートするためにコプロセッサの性能が劣化することがない。
【0004】
コプロセッサの処理が複数サイクルに渡って実行される場合、コプロセッサの稼動効率を上げるために、コプロセッサの処理をパイプライン化し、CPUはコプロセッサの処理終了を待つことなく、次の処理依頼を発行することによりコプロセッサだけでなく、CPUの稼動効率も上げる手段が取られている。
【0005】
更に割り込み処理からの復帰を考慮すると、CPUとコプロセッサは協調動作をする必要がある。具体的には、割り込み処理後に処理の継続を行う場合は、CPUはどこまでの処理依頼がコプロセッサに受け付けられたかの情報を持ち、コプロセッサは受け付けた処理依頼の情報を保持することが必要である。割り込み処理後に再実行を行う場合は、CPUは処理依頼を最初からやり直し、コプロセッサはそれまでに受け付けた処理依頼を破棄する必要がある。
【0006】
【特許文献1】
特開平8−137751号公報
【0007】
【発明が解決しようとする課題】
割り込み復帰処理をサポートする場合において、処理ごとに内部状態を読み出して確認する手法では処理を実行する期間に無駄が生じるのでコプロセッサをパイプライン化する恩恵を受けられない。また、割り込みを使用する場合、割り込み検出時にCPUはどの処理依頼に対して発生したものか特定できない。何故なら、CPUはコプロセッサのパイプライン性能を生かすために処理依頼の完了を待つことなく、次の処理依頼を発行するため、割り込み検出の直前に発行した情報が割り込み要因となった処理とは限らないためである。割り込み要因となった処理が特定できない場合、割り込み処理の内容に応じたコプロセッサへのCPUの対応ができなくなる。
【0008】
割り込み処理からの処理の継続を行う場合、CPUは、どこまでの処理依頼が受け付けられたかの情報を持つことが必要である。しかし、コプロセッサの性能を有効に使うためにコプロセッサが割り込み信号による通知をCPUへ行う場合、CPUが割り込みを認識するまで、CPUはコプロセッサに処理依頼をし続ける。一方、コプロセッサは割り込み処理通知後は、CPUが割り込み処理を完了するまで依頼された処理の実行を止める必要がある。そのため、CPUから発行され続ける処理依頼を保持する必要が生じるが、保持できる処理依頼には限界があるため、ある数以上の処理依頼をキャンセルする必要がある。処理依頼のキャンセルとはCPUからの処理依頼の受付の返答を遅らせるのでなく、明示的に受け付けできない旨の返答を返すことである。
【0009】
しかし、CPUとコプロセッサのインターフェースには制御を簡略化するため、このキャンセルを示す信号を持たないものも存在する。この場合、処理の継続という形での割り込みからの復帰はできない。何故なら、CPUがどこまでの処理依頼が受け付けられたかの情報を持つためには、コプロセッサは処理依頼を受け付けられない状態になった場合、CPUがコプロセッサからの処理依頼のキャンセル処理の実行ができないのであれば、受け付け可能になるまで処理依頼の返答を遅らせる必要がある。しかし、CPUからの割り込み処理による処理依頼も同じインターフェースで行うことを考慮すると、CPUの割り込み処理自体も受け付けられなくなり、デッドロックが発生する。
【0010】
また、CPUはコプロセッサへの処理依頼を通常時と割り込み処理時と同じインターフェースで行う。このため、コプロセッサは、依頼された処理が割り込み処理を依頼するものか、CPUが割り込み検出前のキャンセルすべき処理の依頼であるかを判別しなければならない。例えば、コプロセッサ内部情報の読み書きは、通常処理時でも割り込み処理時でも発生する処理であるので判別が必要となる。
【0011】
コプロセッサが複数のCPUへの対応を考慮するのであれば、割り込みからの復帰に際して、継続と再実行を実現するための方式を必要最小限の回路を保持することにより実装すべきである。2つの対応を行う回路を開発することは、コストの上昇につながり望ましくない。
【0012】
本発明においては、性能向上のためにパイプライン処理を行い、通常処理と割り込み処理を依頼するインターフェースが同じであることを想定したコプロセッサにおいて、接続するCPUの依頼した処理のキャンセル機能をコプロセッサが有するか否かに関わらず、割り込みに伴う復帰処理をサポートする機能と方式を実現することを目的とする。
【0013】
【課題を解決するための手段】
この発明に係る割り込み制御方式は、プロセッサと、バスによって上記プロセッサと接続され、上記プロセッサがバスを介して処理依頼を通知することによって処理を実施するコプロセッサ部とを備える割り込み制御方式において、
上記コプロセッサ部は、プロセッサが割り込み処理を依頼する割り込み状態を示す割り込みステータスレジスタを備え、
上記プロセッサは、上記割り込みステータスレジスタのアドレスを記憶するアドレステーブルを備え、
上記プロセッサは、上記割り込み処理を通知する場合に、上記アドレステーブルに記憶された上記割り込みステータスレジスタのアドレスを読み出し、上記割り込みステータスレジスタのアドレスへ割り込み状態を示す値を書き込む処理を上記コプロセッサ部へバスを介して通知し、
上記コプロセッサ部は、上記割り込みステータスレジスタが割り込み状態を示している場合に、上記プロセッサから通知される処理依頼を割り込み処理であると判断することを特徴とする。
【0014】
【発明の実施の形態】
実施の形態1.
図1は、実施の形態1のシステム構成の一例を表す図である。
コプロセッサ2は、CPU1が外部回路を接続するためのバス3に接続され、CPU1からコプロセッサ2への処理依頼、ステータス読み出し、コプロセッサ2の内部機構へのアクセスは、CPU1のアドレス空間に割り当てられたメモリマップドI/Oを介した送受信によって行うものとする。これにより、コプロセッサ2とCPU1は、外部回路を接続するバス3によって接続される。割り込み信号は、その他の外部回路4と同様に割り込み制御回路5に送られ、割り込み制御回路5がどの外部回路からの割り込み処理が発生したかをCPU1に通知する。
【0015】
CPU1は、コプロセッサ2のアドレス空間に割り当てられた内部レジスタ7へアクセスするために、コプロセッサ2が有する内部レジスタ7のアドレスを記憶するアドレステーブル8(アドレス空間)を有する。
CPU1は、アドレステーブル8に記憶するアドレスを用い、バス3を介してコプロセッサ2の内部レジスタ7へアクセスすることができる。
CPU1は、プロセッサともいう。
コプロセッサ2は、CPU1の機能を拡張する機能ブロックであり、CPU1から処理依頼を通知され、通知された処理を実施する。コプロセッサ2は、コプロセッサ部ともいう。
【0016】
コプロセッサ2は高速化のため、パイプライン処理化されており、CPU1は、コマンドの連続実行を可能とするために、コプロセッサ2の処理終了を待たずに次の処理を発行する。コプロセッサ2は、連続発行される処理依頼を保持するためのキューを持ち、内部処理に依存するパイプラインストール発生に伴う影響をキューに保持することで吸収する。パイプライン処理するコプロセッサ2の場合、キューにはパイプライン内部のステージで実行中の処理依頼とパイプライン受付前の処理依頼を保持し、キュー読み出しは処理依頼の実行完了時、もしくは処理依頼に対する割り込み発生時に発生する。また、割り込み発生に伴う割り込み処理の間は特別な操作がない限り、キューを保持し、処理依頼のキャンセルを行うことによりキューへの登録を行わなず、割り込み処理終了に伴い、キューの保持されている処理依頼から実行を開始することを特徴とする。
【0017】
コプロセッサ2は、処理に伴う異常状態を検出し、異常状態に対応して内部情報を更新する。同時に、コプロセッサ2は、異常状態の検出に伴う通知を割り込み信号6aとして出力する。割り込み信号6aは、その他の外部回路4の出力する割り込み信号6bとともに割り込み制御回路5に入力される。割り込み制御回路5は、調停制御をした上で割り込み信号6cとしてCPU1へ出力する。CPU1は、割り込み信号6cの入力によって割り込みを認識する。
【0018】
コプロセッサ2は、メモリマップドI/Oとして、検出した異常状態を保持するための「ステータスレジスタ」、割り込み状態を保持する「割り込みステータスレジスタ」と、キュー内部の情報を読み出すための「キューポインタレジスタ」、「キューデータレジスタ」、キューのクリアを行う「キュークリアレジスタ」を保持する。
図2に、コプロセッサ2が保持する内部レジスタ7を示す。
【0019】
「ステータスレジスタ」は異常状態検出に伴い、異常要因となるビットにのみセットされ、その他の処理はホールドする。CPU1は、メモリマップドI/Oにアクセスすることにより、レジスタの全ての異常要因のビットのクリア、セットが可能となる。
【0020】
「割り込みステータスレジスタ」は、「通常状態」、「割り込み処理待ち」、「割り込み処理中」のステータスを有する。「割り込みステータスレジスタ」は、通常処理を実行している間は「通常状態」である。「通常状態(ステータスレジスタの異常要因となるビットがセットされいないとき)」では、「割り込みステータスレジスタ」への書き込み処理は無視される。読み出し時は、現在の状態を示す情報を返す。「割り込みステータスレジスタ」は、異常状態検出に伴い、「割り込み処理待ち」となる。
【0021】
「割り込み処理待ち」状態では、「割り込みステータスレジスタ」は書き込みと読み出しのみ実行可能、その他のレジスタのアクセスは無視される。「割り込み処理待ち」状態での「割り込みステータスレジスタ」の書き込みに伴い、「割り込み処理中」状態となる。「割り込み処理待ち」状態での「割り込みステータスレジスタ」読み出し時は、現在の状態を示す情報を返す。
【0022】
「割り込み処理中」状態での「割り込みステータスレジスタ」の書き込みに伴い、「通常状態」となる。「割り込み処理中」状態での「割り込みステータスレジスタ」読み出し時は、現在の状態を示す情報を返す。
【0023】
「キューポインタレジスタ」は、コプロセッサ2が保持するキューで保持するCPU1から依頼された処理を指定するためのレジスタであり、常に書き込み、読み出しが可能である。
【0024】
「キューデータレジスタ」は、「キューポインタレジスタ」で指定されるキューのエントリの読み出しを行う。キューのエントリは、「コマンドキューエントリ」ともいう。コマンドキューエントリは、キューデータレジスタへ書き込まれたコマンドであり、CPU1から処理依頼を受けたコマンドをいう。読み出されたキューデータは、現時点でのエントリが有効かどうかを示すための有効bitを保持している。
有効bitは、CPU1から依頼された処理をコプロセッサ2が受付をした時点で有効となる。また、依頼された処理が完了した時点で無効(処理終了となり、エントリを空けることを意味する)となる。従って、有効bitが有効である場合、コプロセッサ2は、CPU1から処理依頼を受け付け、受け付けた処理依頼の処理を完了していない状態を意味する。
【0025】
「キュークリアレジスタ」は、コプロセッサ2が保持するキューの情報をクリアするためのレジスタである。「割り込み処理中」状態時のみ書き込み可能であり、書き込みに伴いキューの内容をクリアする。
【0026】
上記の性質を持つレジスタを保持することにより、以下の3つの問題を解決する。
(1)コプロセッサ2の割り込み処理依頼の判定
(2)CPU1が異常状態の要因となる命令を特定する方法
(3)割り込み処理再開を行うための方法
以下に説明する。
【0027】
(1)コプロセッサ2の割り込み処理依頼の判定
割り込み処理が発生する場合のCPU1のコプロセッサ2へのアクセスは、図3のようになる。図3の矢印は、CPU1からコプロセッサ2の内部レジスタアクセスを示している。
【0028】
コプロセッサ2は、異常状態の要因となる命令21により<1.通常処理>から<2.割り込み処理待ち>22となり、割り込み信号27をアサートする。割り込み処理が開始されるまでにもCPU1からコプロセッサ2への処理依頼は発行されている。<2.割り込み処理待ち>22においては、コプロセッサ2は、CPU1からの処理依頼を実施しないことを期待する。しかし、コプロセッサ2は、<2.割り込み処理待ち>22と<3.割り込み処理中>24とのいずれの区間でCPU1が依頼した処理であるかの区別がつかない。
【0029】
CPU1は割り込み検出した場合は、割り込み処理本体の処理を発行する前に「割り込みステータスレジスタ」への書き込み処理23を発行する。コプロセッサ2は<2.割り込み処理待ち>の間は、「割り込みステータスレジスタ」への書き込み以外の処理依頼を全てキャンセルする、もしくは無視することにより、割り込み処理に伴う処理依頼までのCPU1からの処理依頼の実行を抑止する。「割り込みステータスレジスタ」への書き込み処理23によりコプロセッサ2は<3.割り込み処理中>24となり、それ以降は、CPU1からの処理依頼は割り込み処理に伴う処理依頼として実行する。
【0030】
CPU1は割り込み処理終了に伴い、「割り込みステータスレジスタ」への書き込み依頼25を発行する。「割り込みステータスレジスタ」への書き込みによりコプロセッサ2は<4.再開処理>となり、それ以降はCPU1からの処理依頼を実行する。
【0031】
(2)CPU1が異常状態の要因となる命令を特定する方法
内部レジスタ7の「キューデータレジスタ」と「キューポインタレジスタ」により、コマンドキューエントリを読み出す。「キューデータレジスタ」はエントリが有効であるかの情報を保持している。
割り込み発生時(異常状態の要因となる命令21を受けたとき)は、キューの先頭のエントリは割り込み継続を行う時の最初の処理依頼を示す。これは異常状態の要因となる処理の次の処理依頼を指す。キューは割り込み発生時は、全エントリの処理依頼が有効になっていない(必ず空きが一つ存在する)。何故なら、キューの読み出しは割り込み発生時に行われ、割り込み発生に伴いキューへの登録が行われないため、必ずエントリが一つ空くこととなる。通常キューのエントリはラップアラウンド式に制御されるが、エントリに空きがあることにより、割り込み発生時のキューの先頭を以下のように決定できる。
【0032】
「キューポインタレジスタ」を0から最大エントリ数まで連続で「キューデータレジスタ」を読み出す。読み出した「キューデータレジスタ」の有効bitが無効から有効になったときの「キューポインタレジスタ」の指す「キューデータレジスタ」が再開後の先頭の処理依頼となる。よって、異常状態の要因となる処理は、その時の「キューポインタレジスタ」−1となる。
【0033】
(3)割り込み処理再開を行うための方法
(3.1)異常状態の要因となる処理の直後から再開:
割り込み発生時に異常状態の要因となる処理の次から再開することを想定する。コプロセッサ2は<2.割り込み処理待ち>22、<3.割り込み処理中>24の間はキューにエントリを保持しており、<2.割り込み処理待ち>22、<3.割り込み処理中>24から<5.再開処理>26に戻った際には異常状態の要因となる処理の次の処理依頼から実行を再開する。
【0034】
(3.2)処理の再実行を伴う再開:
割り込み発生時は最初の処理依頼からやり直すことを想定する。ここで、最初の処理依頼とは、図3の<1.通常処理>の最初の処理依頼(図3の<1.通常処理>左側の矢印)を指す。コプロセッサ2は、割り込み処理中でもキューを保持している。そのため、CPU1は<3.割り込み処理中>24において、「コマンドキュークリアレジスタ>にアクセスすることでキューをクリアする処理依頼をコプロセッサ2に行う。
【0035】
次に、CPU1がコプロセッサ2からの処理依頼のキャンセル指示を処理する機能の有無によって動作が異なる点について説明する。
まず、CPU1は、コプロセッサ2からの処理依頼のキャンセル指示を処理する機能を有する場合の動作について説明する。
コプロセッサ2は、CPU1へキャンセル指示を通知する。すなわち、コプロセッサ2は、CPU1からの処理依頼を実施しなかったことを、CPU1へ通知する。
【0036】
割り込みに伴う復帰の際に、継続処理を行う場合のCPU1とコプロセッサ2の動作を示す。割り込み処理が発生する場合のCPU1のコプロセッサ2へのアクセスは、図3のようになる。
【0037】
コプロセッサ2は、処理実行中に割り込みが発生した場合、割り込み信号27をアサートしてキューを保持し、<2.割り込み処理待ち>22となる。この状態においては、CPU1からの処理依頼は「割り込みステータスレジスタ」の書き込み処理以外全てキャンセルする。すなわち、コプロセッサ2は、異常状態をCPU1へ通知した後、「割り込みステータスレジスタ」の書込み処理以外の処理依頼をCPU1から受け取った場合、受け取った処理をすべてキャンセルする。「割り込みステータスレジスタ」への書き込み処理23に伴い、<3.割り込み処理中>24となり、以後の処理依頼を割り込みに伴う処理として受付、実行する。再度の「割り込みステータスレジスタ」への書き込み処理25に伴い、<5.再開処理>26となり、保持したキューの先頭の処理依頼からの実行を開始する。
【0038】
CPU1は、コプロセッサ2による割り込み信号6aのアサートから割り込み制御回路5の割り込み発生通知(割り込み信号6c)まで複数の処理をコプロセッサ2に依頼している。但し、コプロセッサ2が割り込みを検出した後の処理依頼はキャンセルの旨通知されているので、CPU1はその依頼をキャンセルされたものとして扱う。これにはリトライ、再実行による処理が想定される。割り込み発生通知後、CPU1は割り込み処理を行うため、「割り込みステータスレジスタ」への書き込み処理23を依頼し、コプロセッサ2に割り込み処理開始を通知し、<3.割り込み処理中>24となる。それ以後の処理依頼により、異常状態の要因となる処理を特定し、ステータスをチェックする、といった割り込み処理をCPU1は実行する。ステータスをチェックするとは、CPU1が、ステータスレジスタを読み出して異常要因となるビットをチェックするということを意味する。割り込み処理終了に際して、再度「割り込みステータスレジスタ」への書き込み処理25を行い、コプロセッサ2を<4.再開処理>の状態にしてコプロセッサ2の処理を再開させる。CPU1は、割り込み発生までにコプロセッサ2に依頼済みしている処理以降の処理をコプロセッサ2に依頼する。
【0039】
次に、CPU1は、コプロセッサ2からの処理依頼のキャンセル指示を想定しない場合について説明する。
【0040】
割り込みに伴う復帰の際に、再実行を行う場合のCPU1とコプロセッサ2の動作を示す。割り込み処理が発生する場合のCPU1のコプロセッサ2へのアクセスは、以下のようになる。
【0041】
コプロセッサ2は処理実行中に割り込みが発生した場合、割り込み信号27をアサートしてキューを保持し、<2.割り込み処理待ち>22となる。この状態においては、CPU1からの処理依頼は「割り込みステータスレジスタ」の書き込み処理以外全て無視する。ここで無視する、ということの意味はバス上の処理依頼としては受信するが、コプロセッサ2としては処理を実行しない、という意味である。コプロセッサ2は、「割り込みステータスレジスタ」への書き込み処理23に伴い、<3.割り込み処理中>24となり、以後の処理依頼を割り込みに伴う処理として受付、実行する。コプロセッサ2は、<3.割り込み処理中>24の間に「キュークリアレジスタ」の書き込み処理が来るので、これによりキューをクリアし、コプロセッサ2としてはリセットされた状態となる。再度の「割り込みステータスレジスタ」への書き込み処理25に伴い、<4.再開処理>26となり、割り込み再開後にCPU1から依頼された処理から実行する。
【0042】
CPU1は、コプロセッサ2による割り込み信号6aのアサートから割り込み制御回路5の割り込み発生通知(割り込み信号6c)まで複数の処理をコプロセッサ2に依頼している。割り込み発生通知後は、割り込み処理を行うため、「割り込みステータスレジスタ」への書き込み処理23を依頼し、コプロセッサ2に割り込み処理開始を通知し、<3.割り込み処理中>24となる。それ以後の処理依頼により、異常状態の要因となる処理を特定し、ステータスをチェックする、といった割り込み処理をCPU1は実行する。再実行を行うために、コプロセッサ2が保持している未実行の処理依頼をクリアする必要があるため、<3.割り込み処理中>24の間に「キュークリアレジスタ」の書き込み処理依頼を行う。割り込み処理終了に際して、再度「割り込みステータスレジスタ」への書き込み処理25を行い、コプロセッサ2を<4.再開処理>としてコプロセッサ2の処理を再開させる。CPU1は、コプロセッサ2に対しては最初の処理から実行するように依頼する。
【0043】
【発明の効果】
この発明によれば、コプロセッサ2へ内部レジスタを設置し、CPU1がメモリマップドI/Oを用いて内部レジスタへアクセスすることにより、割り込み処理から復帰した場合に、処理の継続あるいは処理の再実行とを選択して実施することができる。
特に、「割り込みステータスレジスタ」をコプロセッサ2へ備え、CPU1からアクセスすることによって、割り込みに伴う復帰処理をサポートする機能を実現できる。
【図面の簡単な説明】
【図1】CPUとコプロセッサの接続を表す図。
【図2】コプロセッサ2が保持する内部レジスタ7を示す図。
【図3】割り込み処理フローを表す図。
【符号の説明】
1 CPU、2 コプロセッサ、3 バス、4 その他の外部回路、5 割り込み制御回路、6a 割り込み信号(コプロセッサから出力される割り込み検出信号)、6b 割り込み信号(外部回路から出力される割り込み検出信号)、6c 割り込み信号(CPUに入力される割り込み信号)、8 アドレステーブル、9 内部レジスタ、20 通常処理(割り込み検出前の処理)、21 命令(割り込み検出要因となる処理)、22 割り込み処理待ち(割り込み検出後CPUによる割り込み処理開始までの処理)、23 書き込み処理(割り込み処理開始を示す「割り込みステータスレジスタ」書き込み処理)、24 割り込み処理中、25 書き込み処理(割り込み処理終了を示す「割り込みステータスレジスタ」書き込み処理)、26 再開処理(割り込み処理終了後の再開処理)、27割り込み処理(割り込み検出を通知する割り込み信号)、28 CPUの処理発行の時間軸、29 コプロセッサの処理受信の時間軸。
Claims (6)
- プロセッサと、バスによって上記プロセッサと接続され、上記プロセッサがバスを介して処理依頼を通知することによって処理を実施するコプロセッサ部とを備える割り込み制御方式において、
上記コプロセッサ部は、プロセッサが割り込み処理を依頼する割り込み状態を示す割り込みステータスレジスタを備え、
上記プロセッサは、上記割り込みステータスレジスタのアドレスを記憶するアドレステーブルを備え、
上記プロセッサは、上記割り込み処理を通知する場合に、上記アドレステーブルに記憶された上記割り込みステータスレジスタのアドレスを読み出し、上記割り込みステータスレジスタのアドレスへ割り込み状態を示す値を書き込む処理を上記コプロセッサ部へバスを介して通知し、
上記コプロセッサ部は、上記割り込みステータスレジスタが割り込み状態を示している場合に、上記プロセッサから通知される処理依頼を割り込み処理であると判断することを特徴とする割り込み制御方式。 - 上記コプロセッサ部は、異常状態が発生した場合に、上記プロセッサへ異常状態の発生を通知した後、処理依頼の実施を中止し、
上記プロセッサは、上記異常状態の発生を通知された場合に、上記割り込み状態を示す値を書き込む処理を通知した後、上記異常状態に対応した割り込み処理を上記コプロセッサ部へ通知し、
上記コプロセッサ部は、上記割り込み状態を示す値を書き込む処理を受け付け、上記割り込みステータスレジスタへ割り込み状態を示す値を書き込んだ後、上記プロセッサから通知された割り込み処理を実施することを特徴とする請求項1記載の割り込み制御方式。 - 上記コプロセッサ部は、さらに、
複数の処理依頼を格納するキューデータレジスタと、
上記キューデータレジスタに格納された複数の処理依頼から読み出しを開始するポイントを指定するキューポインタレジスタとを備え、
上記アドレステーブルは、さらに、上記キューデータレジスタのアドレスと上記キューポインタレジスタのアドレスとを記憶し、
上記プロセッサは、上記異常状態に対応した割り込み処理を通知した場合、上記アドレステーブルを用いて、上記キューデータレジスタと上記キューポインタレジスタとに格納された情報を読み出す処理を通知し、読み出した情報を用いて、上記割り込み処理が実施された後に通知する処理依頼を再開始処理として決定することを特徴とする請求項2記載の割り込み制御方式。 - 上記プロセッサは、上記異常状態の発生が通知された時に上記コプロセッサ部が処理していた処理依頼を再開始処理として特定することを特徴とする請求項3記載の割り込み制御方式。
- 上記プロセッサは、複数の連続する処理依頼を通知し、上記異常状態の発生が通知された場合、上記複数の連続する処理依頼の最初の処理を再開始処理として決定することを特徴とする請求項3記載の割り込み制御方式。
- プロセッサと、バスによって上記プロセッサと接続され、上記プロセッサがバスを介して処理依頼を通知することによって処理を実施するコプロセッサ部とを備える割り込み制御方法において、
上記プロセッサは、
上記プロセッサが割り込み処理を依頼する割り込み状態を示す割り込みステータスレジスタを上記コプロセッサ部へ設定し、
上記割り込みステータスレジスタのアドレスをアドレステーブルへ記憶し、
上記割り込み処理を通知する場合に、上記ステータスレジスタのアドレステーブルに記憶された上記割り込みステータスレジスタのアドレスを読み出し、上記割り込みステータスレジスタへ割り込み状態を書き込む処理を上記コプロセッサ部へバスを介して通知し、
上記コプロセッサ部は、
上記割り込みステータスレジスタが割り込み状態を示している場合に、上記プロセッサから通知される処理依頼を割り込み処理であると判断することを特徴とする割り込み制御方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003023239A JP2004234420A (ja) | 2003-01-31 | 2003-01-31 | 割り込み制御方式及び割り込み制御方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003023239A JP2004234420A (ja) | 2003-01-31 | 2003-01-31 | 割り込み制御方式及び割り込み制御方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2004234420A true JP2004234420A (ja) | 2004-08-19 |
Family
ID=32952089
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2003023239A Pending JP2004234420A (ja) | 2003-01-31 | 2003-01-31 | 割り込み制御方式及び割り込み制御方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2004234420A (ja) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2012120573A1 (ja) * | 2011-03-04 | 2012-09-13 | 日本電気株式会社 | デッドロック回避方法、デッドロック回避機構 |
JP2015532990A (ja) * | 2012-09-27 | 2015-11-16 | インテル・コーポレーション | 複数のコアを有するプロセッサ、共有コア拡張ロジック及び複数の共有コア拡張使用命令 |
JP2015534184A (ja) * | 2012-09-28 | 2015-11-26 | インテル・コーポレーション | コード実行の柔軟なアクセラレーション |
WO2019026442A1 (ja) * | 2017-08-02 | 2019-02-07 | フェリカネットワークス株式会社 | 情報処理装置、および情報処理方法 |
-
2003
- 2003-01-31 JP JP2003023239A patent/JP2004234420A/ja active Pending
Cited By (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP5870994B2 (ja) * | 2011-03-04 | 2016-03-01 | 日本電気株式会社 | デッドロック回避方法、デッドロック回避機構 |
JPWO2012120573A1 (ja) * | 2011-03-04 | 2014-07-07 | 日本電気株式会社 | デッドロック回避方法、デッドロック回避機構 |
WO2012120573A1 (ja) * | 2011-03-04 | 2012-09-13 | 日本電気株式会社 | デッドロック回避方法、デッドロック回避機構 |
US9405549B2 (en) | 2011-03-04 | 2016-08-02 | Nec Corporation | Deadlock avoidance method and deadlock avoidance mechanism |
US10061593B2 (en) | 2012-09-27 | 2018-08-28 | Intel Corporation | Processor having multiple cores, shared core extension logic, and shared core extension utilization instructions |
US9582287B2 (en) | 2012-09-27 | 2017-02-28 | Intel Corporation | Processor having multiple cores, shared core extension logic, and shared core extension utilization instructions |
JP2017224342A (ja) * | 2012-09-27 | 2017-12-21 | インテル・コーポレーション | プロセッサ及び装置 |
JP2015532990A (ja) * | 2012-09-27 | 2015-11-16 | インテル・コーポレーション | 複数のコアを有するプロセッサ、共有コア拡張ロジック及び複数の共有コア拡張使用命令 |
US10901748B2 (en) | 2012-09-27 | 2021-01-26 | Intel Corporation | Processor having multiple cores, shared core extension logic, and shared core extension utilization instructions |
US10963263B2 (en) | 2012-09-27 | 2021-03-30 | Intel Corporation | Processor having multiple cores, shared core extension logic, and shared core extension utilization instructions |
US11494194B2 (en) | 2012-09-27 | 2022-11-08 | Intel Corporation | Processor having multiple cores, shared core extension logic, and shared core extension utilization instructions |
JP2015534184A (ja) * | 2012-09-28 | 2015-11-26 | インテル・コーポレーション | コード実行の柔軟なアクセラレーション |
US9836316B2 (en) | 2012-09-28 | 2017-12-05 | Intel Corporation | Flexible acceleration of code execution |
WO2019026442A1 (ja) * | 2017-08-02 | 2019-02-07 | フェリカネットワークス株式会社 | 情報処理装置、および情報処理方法 |
CN110945482A (zh) * | 2017-08-02 | 2020-03-31 | 飞力凯网路股份有限公司 | 信息处理装置和信息处理方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3644959B2 (ja) | マイクロプロセッサシステム | |
JP4982375B2 (ja) | 複数のコアを介してのモニタリングされたキャッシュラインの共有 | |
KR100360064B1 (ko) | 고도로파이프라인된버스구조 | |
JP4990829B2 (ja) | 指定されたメモリアクセスが発生するまでスレッドの実行をサスペンドする方法及び装置 | |
JP3659877B2 (ja) | ライトアフターライトデータハザードにより生じるエラーを効率的に防止するためのスーパースケーラ処理システム及び方法 | |
JP3420091B2 (ja) | マイクロプロセッサ | |
JP2004234420A (ja) | 割り込み制御方式及び割り込み制御方法 | |
JP2011138401A (ja) | プロセッサシステム、プロセッサシステムの制御方法、及び制御回路 | |
US20020169930A1 (en) | Memory access control system, method thereof and host bridge | |
JP2001034533A (ja) | キャッシュコヒーレンシ制御装置、2次キャッシュメモリ、中央処理装置、マルチプロセッサシステム、プロセッサノード、キャッシュコヒーレンシ制御方法 | |
JP2002108703A (ja) | キャッシュ制御装置及びプロセッサ | |
JP3862777B2 (ja) | 二重化データ一致化方法および二重化制御装置 | |
JP3735375B2 (ja) | マルチプロセッサシステム | |
JP2006048163A (ja) | ストアデータ制御装置およびストアデータ制御方法 | |
JPH0133856B2 (ja) | ||
US20040103267A1 (en) | Data processor having cache memory | |
JP2007328539A (ja) | バスシステムおよびバススレーブならびにバス制御方法 | |
JP2001084143A (ja) | 情報処理装置 | |
JP2572821B2 (ja) | 命令再実行による演算処理方式 | |
CN116088942A (zh) | 指令执行方法、装置、芯片和计算机设备 | |
JP3715505B2 (ja) | 特定用途向け演算命令を有する計算機およびその計算機の計算方法 | |
JP2000353146A (ja) | 入出力制御装置及びそのデータの先取り方法 | |
JP2005010995A (ja) | マルチプロセッサシステム及びそのライトバックの障害処理方法 | |
JPH0713865A (ja) | キャッシュメモリ制御システム | |
JPH06208540A (ja) | Dmaバスマスタモジュール装置と制御方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
RD04 | Notification of resignation of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7424 Effective date: 20040519 |
|
RD04 | Notification of resignation of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7424 Effective date: 20041026 |