以下に添付図面を参照して、この発明にかかるコンピュータシステムおよび割込要求処理方法の好適な実施の形態を詳細に説明する。
(実施の形態1)
図1は、実施の形態1にかかるコンピュータシステムを示す説明図である。図1において、コンピュータシステム100は、CPU(Central Processing Unit)101と、デバイスDと、割込要求処理装置Mと、を含む。コンピュータシステム100において、CPU101、デバイスDおよび割込要求処理装置Mは、バス110を介して相互に通信可能に接続されている。
CPU101は、コンピュータシステム100を制御する中央処理装置である。CPU101は、デバイスDからの割込み要求を受け付けて割込み処理を実行する。ここで、割込み要求とは、例えば、デバイスDが、ある状態や特定の条件を満たしたときにCPU101に対して出力する信号である。
デバイスDは、所定の機能を実現するハードウェアであり、例えば、I/O(Input/Output)デバイスやインターフェースを含むモジュールである。デバイスDは、例えば、CPU101に対して割込み要求を出力することにより所定の処理の終了を通知する。所定の処理とは、デバイスDの機能を実現するための処理である。デバイスDとしては、例えば、メモリコントローラ、DMAC(Direct Memory Access Controller)、磁気ディスク、光ディスクなどがある。
割込要求処理装置Mは、デバイスDからCPU101に対して出力される割込み要求を処理する。ここで、デバイスDからの割込み要求に対してCPU101が行う割込み処理の中には、CPU101を介して行う必要があるものと、CPU101を介して行う必要がないものがある。
例えば、CPU101からデバイスDに対して実行要求を繰り返し行って、デバイスDに所定の処理を複数回実行させる場合がある。この場合、デバイスDは、所定の処理が終了すると、その都度、所定の処理の終了を通知するための割込み要求をCPU101に出力する。そして、CPU101は、デバイスDからの割込み要求を受け付けると、その都度、割込み処理を実行する。
具体的には、例えば、CPU101は、デバイスDからの割込み要求を受け付けると、実行中のプログラムの処理を中断し、該プログラムを再開するための情報をメモリに退避して、割込ハンドラなどの割込処理プログラムを呼び出す。すなわち、CPU101は、デバイスDに所定の処理をF回繰り返し実行させる場合、割込ハンドラといったソフトウェア処理をF回行うことになる。
この際、割込ハンドラは、デバイスDの1回目から(F−1)回目の割込み要求に対しては、割込み要因を分析してデバイスDの割込み要因をクリアし、デバイスDに実行要求を行う。また、割込ハンドラは、F回目の割込み要求に対しては、例えば、F回繰り返された所定の処理の実行結果を用いて別の処理を行うためのプログラムの実行予約などを行う。
このような割込ハンドラの処理のうち、プログラムの実行予約を行うなどの最後(F回目)の割込み要求に対する処理は、CPU101を介して行う必要がある。一方、デバイスDに対して単に所定の処理の実行要求を行う1回目から(F−1)回目の割込み要求に対する処理は、CPU101を介して行う必要がない。
ところが、デバイスDに対して単なる実行要求を行う処理であっても数百サイクルを必要とするため、CPU101に対する割込み頻度が高くなると、CPU101の負荷が増大してしまう。また、CPU101は、割込み要求を受け付けると実行中のプログラムを中断して割込み処理を行うため、CPU101に対する割込み頻度が高くなると、本来実行すべき処理に専念できず、CPU101の処理効率が低下してしまう。
そこで、実施の形態1にかかるコンピュータシステム100では、必ずしもCPU101が関与しなくてもよいデバイスDからの割込み要求を横取りして、CPU101の代わりに処理する割込要求処理装置Mを設ける。以下、デバイスDに所定の処理をF回繰り返し実行させる場合の割込要求処理装置Mの処理手順を説明する。なお、デバイスDに対する最初の実行要求は、CPU101がデバイスDに直接通知してもよく、また、CPU101が割込要求処理装置Mを介してデバイスDに通知してもよい。
(1)割込要求処理装置Mは、デバイスDから出力される所定の処理の終了を通知する割込み要求を受け付ける。すなわち、本来はデバイスDからCPU101に直接通知される割込み要求を、割込要求処理装置MがCPU101への通知に先立って受け付ける。
(2)割込要求処理装置Mは、デバイスDから割込み要求を受け付けた回数が、所定回数Fと一致するか否かを判定する。ここで、所定回数Fは、デバイスDに所定の処理を繰り返し実行させる回数であり、予め任意に設定されている。
(3)割込要求処理装置Mは、デバイスDから割込み要求を受け付けた回数が所定回数Fに達するまで、デバイスDに対して所定の処理の実行要求を出力する。すなわち、単にデバイスDに対して所定の処理の実行要求を行う処理は、CPU101を介して行う必要がないため、割込要求処理装置MがCPU101の代わりに行う。
(4)上記(1)〜(3)を繰り返した結果、割込要求処理装置Mは、デバイスDから割込み要求を受け付けた回数が所定回数Fと一致すると判定された場合、CPU101に対して割込み要求を出力する。すなわち、F回目の割込み要求に対する処理は、CPU101を介して行う必要があるため、デバイスDからの割込み要求をCPU101に通知する。
以上説明したように、実施の形態1にかかるコンピュータシステム100によれば、CPU101に対するデバイスDからの割込み要求のうち、CPU101が直接関与しなくてもよい割込み要求を、割込要求処理装置Mに処理させることができる。すなわち、デバイスDに所定の処理を複数回繰り返し実行させる場合、CPU101がデバイスDに対して最初の実行要求を行ったあとは、CPU101を介すことなく、デバイスDに所定の処理を複数回実行させることができる。また、CPU101にはデバイスDからの最後の割込み要求のみ通知されるため、CPU101が行う割込み処理は1回となる。これにより、実行中のプログラムを中断して割込ハンドラを呼び出すなどのCPU101の割込み処理を減らすことができ、CPU101の割込み処理にかかる負荷を低減させて、CPU101の処理効率の向上を図ることができる。
(実施の形態2)
図2は、実施の形態2にかかるコンピュータシステムを示す説明図である。なお、実施の形態1で説明した箇所と同様の箇所については説明を省略する。図2において、コンピュータシステム200は、CPU201と、ROM(Read‐Only Memory)202と、RAM203と、割込コントローラ204と、デバイスD1〜Dnと、割込要求処理装置M1〜Mnと、を含む。コンピュータシステム200において、CPU201、ROM202、RAM203、割込コントローラ204、デバイスD1〜Dnおよび割込要求処理装置M1〜Mnは、バス210を介して相互に通信可能に接続されている。
CPU201は、コンピュータシステム200を制御する中央処理装置である。CPU201は、割込コントローラ204を介して、デバイスD1〜Dnからの割込み要求を受け付けて割込み処理を実行する。ROM202は、ブートプログラムや割込処理プログラムなどの各種プログラムを記憶している。RAM203は、CPU201のワークエリアとして使用される。
割込コントローラ204は、割込要求処理装置M1〜Mnから、CPU201に対するデバイスD1〜Dnの割込み要求を受け付けてCPU201に通知する。具体的には、例えば、割込コントローラ204は、各デバイスD1〜Dnの割込み要因ごとの割込ステータスレジスタおよび割込マスクレジスタを有している。割込ステータスレジスタは、割込み要因の状態を保持するレジスタである。割込マスクレジスタは、CPU201に対する割込みがイネーブルか否かを示す情報を保持するレジスタである。
割込コントローラ204は、ある割込み要因がアサートされると、割込み要因に対応する割込ステータスレジスタに要因の状態を格納する。そして、割込コントローラ204は、該割込み要因に対応する割込マスクレジスタがイネーブルの場合、CPU201に対して割込み要求を出力する。この際、割込コントローラ204は、割込み要因に対応する割込みベクタをCPU201に出力する。割込みベクタとは、割込み要因に対応する割込処理プログラムを起動するための情報である。CPU201は、割込み要求とともに受け付けた割込みベクタを参照して、割込ハンドラなどの割込処理プログラムを呼び出す。
デバイスD1〜Dnは、例えば、I/Oデバイスやインターフェースを含むメモリコントローラ、DMAC、エンコーダ、デコーダ、磁気ディスク、光ディスクなどのモジュールである。各デバイスD1〜Dnには、各割込要求処理装置M1〜Mnがそれぞれ搭載されている。各割込要求処理装置M1〜Mnは、各デバイスD1〜DnからCPU201に対する割込み要求を受け付けて処理する。
ここで、コンピュータシステム200においてCPU201が行う初期設定について説明する。CPU201は、割込コントローラ204の初期設定を行う。具体的には、例えば、CPU201は、割込み要因に対応する割込みベクタや割込み要求の優先順位などを割込コントローラ204に設定する。優先順位とは、複数の割込み要求が同時に発生した場合や多重割込みが発生した場合に、割込み要求を受け付ける順番を決める情報である。
また、CPU201は、デバイスD1〜Dnの初期設定を行う。具体的には、CPU201は、各デバイスD1〜Dnが所定の処理を実行するために必要となる情報を各デバイスD1〜Dnに設定する。具体的には、例えば、デバイス間のデータ転送を行う場合、CPU201は、リードコマンドやライトコマンドなどのコマンド内容、リード先やライト先のアドレス、転送データ量などを実行対象のデバイスD1〜Dnに設定する。
また、CPU201は、割込要求処理装置M1〜Mnの初期設定を行う。具体的には、例えば、CPU201は、図3に示す設定テーブル300を参照して、割込要求処理装置M1〜Mnの初期設定を行う。ここで、設定テーブル300の記憶内容について説明する。
図3は、設定テーブルの記憶内容の一例を示す説明図である。図3において、設定テーブル300は、マクロ名、回数レジスタ値およびIDレジスタ値のフィールドを有し、各フィールドに情報を設定することで、設定データ300−1〜300−nをレコードとして記憶している。
ここで、マクロ名とは、各割込要求処理装置M1〜Mnの名称である。回数レジスタ値とは、各割込要求処理装置M1〜Mnが有する回数レジスタR2(後述の図4参照)のレジスタ値である。回数レジスタR2は、各デバイスD1〜Dnに所定の処理を繰り返し実行させる回数を記憶するレジスタである。
IDレジスタ値とは、各割込要求処理装置M1〜Mnが有するIDレジスタR3(後述の図4参照)のレジスタ値である。IDレジスタR3は、割込コントローラ204および割込要求処理装置M1〜Mnのうちのいずれかの識別子を記憶するレジスタである。ただし、IDレジスタ値「0xFFFFFFFF」は、割込コントローラ204の識別子である。
一例として、割込要求処理装置M1を例に挙げると、CPU201は、設定データ300−1を参照して、割込要求処理装置M1の回数レジスタR2に「F1」を設定し、IDレジスタR3に「0x00000001」を設定する。設定テーブル300は、例えば、図2に示したROM202に記憶されている。
以下の説明において、複数のデバイスD1〜Dnのうち任意のデバイスを「デバイスDi」と表記する(i=1,2,…,n)。また、複数の割込要求処理装置M1〜Mnのうち任意の割込要求処理装置を「割込要求処理装置Mi」と表記する。また、複数のデバイスD1〜DnのうちデバイスDiとは異なる他のデバイスを「デバイスDj」と表記する(j≠i、j=1,2,…,n)。また、複数の割込要求処理装置M1〜Mnのうち割込要求処理装置Miとは異なる他の割込要求処理装置を「割込要求処理装置Mj」と表記する。
(割込要求処理装置Miの機能的構成)
つぎに、実施の形態2にかかる割込要求処理装置Miの機能的構成について説明する。図4は、実施の形態2にかかる割込要求処理装置を示すブロック図である。図4において、割込要求処理装置Miは、受付部401と、判断部402と、出力部403と、カウンタ404と、回数判定部405と、ID判定部406と、を含む構成である。各機能部(受付部401〜ID判定部406)は、例えば、各機能を実現するための回路によって実現される。具体的には、例えば、各機能部(受付部401〜ID判定部406)の機能を実現するステートマシンによって実現することができる。
受付部401は、CPU201からデバイスDiに対する所定の処理の実行要求を受け付ける。具体的には、例えば、受付部401が、バス210を介して、イネーブルレジスタR1の値をアサートに設定する制御信号をCPU201から受け付ける。ここで、イネーブルレジスタR1とは、デバイスDiに対する所定の処理の実行要求が有効か否かを示す情報を保持するレジスタである。イネーブルレジスタR1がアサートの場合、デバイスDiに対する実行要求が有効となっていることを示す。一方、イネーブルレジスタR1がネゲートの場合、デバイスDiに対する実行要求が無効となっていることを示す。
また、受付部401は、他の割込要求処理装置MjからデバイスDiに対する所定の処理の実行要求を受け付ける。具体的には、例えば、受付部401が、デバイスDiに対する所定の処理の実行要求として、バス210を介してready信号を受け付ける。受付部401によってデバイスDiに対する実行要求を受け付けると、イネーブルレジスタR1の値がアサートに設定される。
判断部402は、デバイスDiに対する所定の処理の実行要求が有効となっているか否かを判断する。具体的には、例えば、判断部402が、イネーブルレジスタR1がアサートの場合、デバイスDiに対する実行要求が有効となっていると判断する。一方、判断部402が、イネーブルレジスタR1がネゲートの場合、デバイスDiに対する実行要求が無効となっていると判断する。
また、判断部402は、デバイスDiに対する所定の処理の実行要求が有効となっている場合、ウェイト指示が有効となっているか否かを判断することにしてもよい。ここで、ウェイト指示とは、デバイスDiと連動して動作する他のデバイスDjの準備が終了するまでの間、デバイスDiを待機させるためのものである。
具体的には、例えば、判断部402が、受付部401によって受け付けた他のデバイスDjからのウェイト信号がアサートされている間は、ウェイト指示が有効となっていると判断する。一方、判断部402が、他のデバイスDjからのウェイト信号がネゲートされた場合、ウェイト指示が無効となっていると判断する。他のデバイスDjからのウェイト信号は、受付部401が、他のデバイスDjから直接受け付けてもよく、また、デバイスDiを介して他のデバイスDjから受け付けてもよい。
また、判断部402は、イネーブルレジスタR1の値がアサートに設定されてから一定時間T経過するまでの間、ウェイト指示が有効となっていると判断することにしてもよい。ここで、一定時間Tは、他のデバイスDjの準備が終了するまでにかかる時間であり、予め設定されている。判断部402は、イネーブルレジスタR1の値がアサートに設定されてから一定時間T経過したら、ウェイト指示が無効となっていると判断する。
出力部403は、判断部402によってデバイスDiに対する所定の処理の実行要求が有効となっていると判断された場合、デバイスDiに対して所定の処理の実行要求を出力する。また、出力部403は、デバイスDiに対する所定の処理の実行要求が有効かつウェイト指示が無効となっていると判断された場合に、デバイスDiに所定の処理の実行要求を出力することにしてもよい。これにより、デバイスDiと連動して動作する他のデバイスDjの準備が終了してから、デバイスDiに対して所定の処理の実行要求を行うことができる。
具体的には、例えば、出力部403が、所定の処理の実行要求をデバイスDiの主機能部410に出力する。ここで、主機能部410は、所定の処理を実行するデバイスDiの機能部であり、所定の処理が終了するとCPU201に対する割込み要求を割込みコントローラを介して通知する。所定の処理の実行要求が主機能部410に出力されると、主機能部410によって所定の処理が実行される。
また、受付部401は、デバイスDiからCPU201に対して割込みコントローラを介して通知される割込み要求を、CPU201への通知に先立って受け付ける。具体的には、例えば、受付部401が、割込要求処理装置MiとデバイスDiとを直接接続する割込み信号線を使用して、デバイスDiの主機能部410から出力される割込み要求を受け付ける。
カウンタ404は、受付部401によって割込み要求を受け付けた回数をカウントする。具体的には、例えば、カウンタ404が、受付部401によって割込み要求を受け付けると、その都度、カウンタ値をインクリメントすることにより、割込み要求を受け付けた回数をカウントする。
回数判定部405は、割込み要求を受け付けた回数が、所定回数Fiと一致するか否かを判定する。ここで、所定回数Fiとは、デバイスDiに所定の処理を繰り返し実行させる回数である。所定回数Fiは、回数レジスタR2のレジスタ値として予め設定されている。具体的には、例えば、回数判定部405が、回数レジスタR2のレジスタ値と、カウンタ404のカウント値とが一致するか否かを判定する。
出力部403は、回数判定部405によって割込み要求を受け付けた回数が所定回数Fiに達するまで、デバイスDiに対して所定の処理の実行要求を出力する。具体的には、例えば、出力部403が、回数レジスタR2のレジスタ値とカウンタ404のカウント値が不一致の場合、所定の処理の実行要求を主機能部410に出力する。
また、出力部403は、所定の処理の実行要求の出力に先立って、割込み要因のクリア指示を主機能部410に出力することにしてもよい。主機能部410は、割込み要因のクリア指示を受け付けると、割込み要因ビットの値を変更して割込み要因をクリアする。これにより、デバイスDiからの割込み要求が繰り返し発生することを防ぐことができる。
ID判定部406は、回数判定部405によって割込み要求を受け付けた回数が所定回数Fiと一致すると判定された場合、CPU201に対して割込み要求を通知するか否かを判定する。具体的には、例えば、ID判定部406が、IDレジスタR3のレジスタ値が割込コントローラ204の識別子と一致するか否かを判定する。
ここで、IDレジスタR3のレジスタ値が割込コントローラ204の識別子と一致する場合、ID判定部406が、CPU201に対して割込み要求を通知すると判定する。一方、IDレジスタR3のレジスタ値が割込コントローラ204の識別子と不一致の場合、ID判定部406が、CPU201に対して割込み要求を通知しないと判定する。
ここでは、割込コントローラ204の識別子は「0xFFFFFFFF」に設定されている。このため、ID判定部406が、IDレジスタR3のレジスタ値の論理積(AND)が「1」となる場合に、割込コントローラ204の識別子と一致すると判定することにしてもよい。一方、IDレジスタR3のレジスタ値の論理積が「0」となる場合、ID判定部406が、割込コントローラ204の識別子と一致しないと判定する。
また、割込要求処理装置Mi内部に割込コントローラ204の識別子を記憶する記憶装置を設けることにしてもよい。この場合、ID判定部406は、IDレジスタR3のレジスタ値と記憶装置に記憶されている識別子とを比較して、割込コントローラ204の識別子と一致するか否かを判定する。
回数判定部405によって割込み要求を受け付けた回数が所定回数Fiと一致すると判定された場合、判断部402によってイネーブルレジスタR1の値がネゲートに設定される。これにより、デバイスDiが所定の処理をFi回繰り返し実行したあとに、割込要求処理装置MiからデバイスDiに対して実行要求を行うことを防ぐことができる。
出力部403は、ID判定部406によってCPU201に対して割込み要求を通知すると判定された場合、CPU201に対するデバイスDiからの割込み要求を割込コントローラ204に出力する。具体的には、例えば、出力部403が、割込要求処理装置Miと割込コントローラ204とを直接接続する割込み信号線を使用して、デバイスDiからの割込み要求を出力する。
割込コントローラ204は、割込要求処理装置MiからデバイスDiの割込み要求を受け付けると、CPU201に対してデバイスDiの割込み要求とともにデバイスDiの割込み要因に対応する割込みベクタを出力する。これにより、CPU201を介して処理する必要がある割込み要求をCPU201に通知することができる。
また、出力部403は、ID判定部406によってCPU201に対して割込み要求を通知しないと判定された場合、他のデバイスDjに対して所定の処理の実行要求を出力する。具体的には、例えば、出力部403が、IDレジスタR3のレジスタ値から識別される他の割込要求処理装置Mjに、デバイスDjに対する所定の処理の実行要求を出力する。
より具体的には、例えば、出力部403が、バス210に対してvalid信号を出力するとともに、IDレジスタR3のレジスタ値を出力する。この結果、バス210により、IDレジスタR3のレジスタ値から識別される他の割込要求処理装置Mjにready信号が出力される。
そして、他の割込要求処理装置Mjは、バス210からready信号を受け付けると、デバイスDjに対して所定の処理の実行要求を出力する。このように、デバイスDiのつぎに動作させる他のデバイスDjに搭載されている割込要求処理装置Mjの識別子をIDレジスタR3に設定しておくことで、複数のデバイスD1〜Dnを任意のシーケンスに従って動作させることができる。
なお、上述した説明では、デバイスDiからの割込み要求を、割込コントローラ204を介してCPU201に通知することにしたが、これに限らない。具体的には、例えば、出力部403が、CPU201と割込要求処理装置Miとを直接接続する割込み信号線を使用して、デバイスDiからの割込み要求をCPU201に直接出力することにしてもよい。
また、上述した説明では、割込要求処理装置MiからデバイスDiに対して割込み要因のクリア指示を出力することで、デバイスDiが割込み要因をクリアすることにしたが、これに限らない。具体的には、例えば、デバイスDiが、所定の処理の実行要求を受け付けると、自律的に割込み要因をクリアすることにしてもよい。
(コンピュータシステム200の処理手順)
つぎに、実施の形態2にかかるコンピュータシステム200の処理手順について説明する。ここでは、割込要求処理装置MiのIDレジスタR3に割込要求処理装置Mjの識別子が保持されており、割込要求処理装置MjのIDレジスタR3に割込コントローラ204の識別子が保持されている場合を例に挙げて説明する。
図5は、実施の形態2にかかるコンピュータシステムの処理手順を示すシーケンス図である。図5のシーケンス図において、(1)CPU201は、割込コントローラ204、割込要求処理装置Mi,MjおよびデバイスDi,Djの初期設定を行う。(2)CPU201は、デバイスDiに対する実行要求を割込要求処理装置Miに出力する。(3)CPU201は、任意のプログラムの実行を開始する。
(4)割込要求処理装置Miは、デバイスDiに対する実行要求を受け付けると、デバイスDiに対して実行要求を出力する。(5)デバイスDiは、割込要求処理装置Miから実行要求を受け付けると所定の処理を実行する。(6)割込要求処理装置Miは、所定の処理の終了を通知するためのCPU201に対する割込み要求をデバイスDiから受け付ける。
(7)割込要求処理装置Miは、デバイスDiから割込み要求を受け付けた回数がFi回となるまで、デバイスDiの割込み要因をクリアするとともに、デバイスDiに対して実行要求を出力する。(8)割込要求処理装置Miは、デバイスDiから割込み要求を受け付けた回数がFi回となったら、デバイスDiの割込み要因をクリアして、他のデバイスDjに対する実行要求を他の割込要求処理装置Mjに出力する。
(9)割込要求処理装置Mjは、割込要求処理装置MiからデバイスDjに対する実行要求を受け付けると、デバイスDjに対して実行要求を出力する。(10)デバイスDjは、割込要求処理装置Mjから実行要求を受け付けると所定の処理を実行する。(11)割込要求処理装置Mjは、所定の処理の終了を通知するためのCPU201に対する割込み要求をデバイスDjから受け付ける。
(12)割込要求処理装置Mjは、デバイスDjから割込み要求を受け付けた回数がFj回となるまで、デバイスDjの割込み要因をクリアするとともに、デバイスDjに対して実行要求を出力する。(13)割込要求処理装置Mjは、デバイスDjから割込み要求を受け付けた回数がFj回となったら、デバイスDjの割込み要因をクリアして、CPU201に対するデバイスDjからの割込み要求を割込コントローラ204に出力する。
(14)割込コントローラ204は、割込要求処理装置Mjから割込み要求を受け付けると、CPU201にデバイスDjからの割込み要求を出力する。(15)CPU201は、割込コントローラ204から割込み要求を受け付けると、実行中のプログラムを中断して割込ハンドラを呼び出す。この結果、割込ハンドラによってデバイスDjからの割込み要求が処理される。
(割込要求処理装置Miの動作タイミング)
つぎに、実施の形態2にかかる割込要求処理装置Mi,Mjの動作タイミングについて説明する。ここでは、図5と同様に、割込要求処理装置MiのIDレジスタR3に割込要求処理装置Mjの識別子が保持されており、割込要求処理装置MjのIDレジスタR3に割込コントローラ204の識別子が保持されている場合を例に挙げて説明する。
図6は、実施の形態2にかかる割込要求処理装置の動作タイミングの一例を示すタイミングチャートである。図6において、割込要求処理装置Miは、イネーブルレジスタR1の値がアサートに設定されると、デバイスDiから割込み要求を受け付けた回数をカウントする。割込要求処理装置Miは、デバイスDiから割込み要求を受け付けた回数がFi回となったら、イネーブルレジスタR1の値をネゲートに設定して、バス210に対してvalid信号を1サイクルアサートする(図6中(a))。
バス210は、valid信号がアサートされると、割込要求処理装置Mjに対してready信号を1サイクルアサートする(図6中(b))。割込要求処理装置Mjは、ready信号がアサートされると、イネーブルレジスタR1の値をアサートに設定する(図6中(c))。
割込要求処理装置Mjは、イネーブルレジスタR1の値がアサートに設定されると、デバイスDjから割込み要求を受け付けた回数をカウントする。割込要求処理装置Mjは、デバイスDjから割込み要求を受け付けた回数がFj回となったら、イネーブルレジスタR1の値をネゲートに設定して、CPU201に対するデバイスDjからの割込み要求を割込コントローラ204に出力する(図6中(d))。これにより、CPU201を介すことなく、デバイスDiのあとにデバイスDjを動作させることができる。
(割込要求処理装置Miの割込要求処理手順)
つぎに、実施の形態2にかかる割込要求処理装置Miの割込要求処理手順について説明する。図7は、実施の形態2にかかる割込要求処理装置の割込要求処理手順の一例を示すフローチャートである。
図7のフローチャートにおいて、まず、判断部402により、イネーブルレジスタR1の値がアサートに設定されたか否かを判断する(ステップS701)。ここで、イネーブルレジスタR1の値がアサートに設定されるのを待って(ステップS701:No)、アサートに設定された場合(ステップS701:Yes)、判断部402により、ウェイト信号がアサートされているか否かを判断する(ステップS702)。
ここで、ウェイト信号がアサートされている場合(ステップS702:Yes)、判断部402により、ウェイト信号がネゲートされるのを待つ。そして、ウェイト信号がネゲートされた場合(ステップS702:No)、出力部403により、デバイスDiに対して割込み要因のクリア指示を出力する(ステップS703)。つぎに、出力部403により、デバイスDiに対して所定の処理の実行要求を出力する(ステップS704)。
このあと、受付部401により、デバイスDiから割込み要求を受け付けるのを待って(ステップS705:No)、割込み要求を受け付けた場合(ステップS705:Yes)、カウンタ404により、カウント値をインクリメントする(ステップS706)。そして、回数判定部405により、カウンタ404のカウント値と回数レジスタR2のレジスタ値とが一致するか否かを判定する(ステップS707)。
ここで、カウンタ404のカウント値と回数レジスタR2のレジスタ値とが不一致の場合(ステップS707:No)、ステップS702に戻る。一方、カウンタ404のカウント値と回数レジスタR2のレジスタ値とが一致する場合(ステップS707:Yes)、出力部403により、デバイスDiに対して割込み要因のクリア指示を出力する(ステップS708)。
つぎに、判断部402により、イネーブルレジスタR1の値をネゲートに設定する(ステップS709)。そして、ID判定部406により、IDレジスタR3のレジスタ値が割込コントローラ204の識別子と一致するか否かを判定する(ステップS710)。
ここで、不一致の場合(ステップS710:No)、出力部403により、バス210に対して、valid信号を1サイクルアサートするとともにIDレジスタR3のレジスタ値を出力して(ステップS711)、本フローチャートによる一連の処理を終了する。
一方、一致する場合(ステップS710:Yes)、出力部403により、CPU201に対するデバイスDiからの割込み要求を割込コントローラ204に出力して(ステップS712)、本フローチャートによる一連の処理を終了する。
これにより、CPU201が直接関与しなくてもよい割込み要求を、CPU201の代わりに処理することができる。また、他のデバイスDjに搭載されている割込要求処理装置Mjの識別子をIDレジスタR3に設定しておくことで、CPU201を介すことなく、デバイスDiと連動して動作する他のデバイスDjを動作させることができる。
(コンピュータシステム200の一実施例)
つぎに、実施の形態2にかかるコンピュータシステム200の一実施例について説明する。図8は、実施の形態2にかかるコンピュータシステムの一実施例を示す説明図である。ここでは、コンピュータシステム200内のデバイスDiとして、DMAC801およびメモリコントローラ802を例に挙げて説明する。
DMAC801は、コンピュータシステム200のDMA転送を制御する。DMAC801には、割込要求処理装置M1が搭載されている。メモリコントローラ802は、コンピュータシステム200のRAM203やNANDフラッシュメモリ803などのインターフェースを統括する。
ここでは、CPU201が、DMAC801を使用して、NANDフラッシュメモリ803に格納されているデータをRAM203に転送する場合を想定する。ここで、NANDフラッシュメモリ803は、不揮発性の半導体メモリであり、ページ単位(例えば、512[B]または2048[B])の書き込み、読み出しを行う。
このため、NANDフラッシュメモリ803からページ単位よりも大きなデータ量のデータを読み出す場合、DMAC801を複数回起動してデータの転送を行う必要がある。例えば、NANDフラッシュメモリ803のページ単位のデータ量を2[KB]、総転送データ量を16[KB]とすると、DMAC801を8回(=16/2)起動してデータの転送を行う必要がある。このため、割込要求処理装置M1の回数レジスタR2に保持される所定回数F1は「F1=8」となる。
(コンピュータシステム200の処理手順の一実施例)
つぎに、実施の形態2にかかるコンピュータシステム200の処理手順の一実施例について説明する。図9は、実施の形態2にかかるコンピュータシステムの処理手順の一実施例を示すシーケンス図である。
図9のシーケンス図において、(1)CPU201は、割込コントローラ204、NANDフラッシュメモリ803、DMAC801および割込要求処理装置M1の初期設定を行う。具体的には、例えば、CPU201は、割込みベクタや優先順位などを割込コントローラ204に設定する。また、CPU201は、リードコマンドや読み込み先のアドレスなどをNANDフラッシュメモリ803に設定する。また、CPU201は、アクセスアドレスや転送データ量(ここでは、ページ単位のデータ量)などをDMAC801に設定する。また、CPU201は、回数レジスタR2のレジスタ値「8」およびIDレジスタR3のレジスタ値「0xFFFFFFFF」を割込要求処理装置M1に設定する。
(2)CPU201は、DMAC801に対する転送処理の実行要求を割込要求処理装置M1に出力する。(3)CPU201は、任意のプログラムの実行を開始する。(4)割込要求処理装置M1は、DMAC801に対する転送処理の実行要求を受け付けると、DMAC801に対して転送処理の実行要求を出力する。
(5)DMAC801は、割込要求処理装置M1から実行要求を受け付けると、NANDフラッシュメモリ803からRAM203へのデータの転送処理を実行する。具体的には、例えば、DMAC801は、NANDフラッシュメモリ803に格納されているデータを、DMAC801内部のバッファに取り込んだあとRAM203に書き込む処理を、1ページ分のデータが転送されるまで繰り返す。
(6)割込要求処理装置M1は、転送処理の終了を通知するためのCPU201に対する割込み要求をDMAC801から受け付ける。(7)NANDフラッシュメモリ803は、1ページ分のデータが読み出されると、割込要求処理装置M1に対してウェイト信号をアサートして、次ページのデータの読み込みを開始する。具体的には、例えば、NANDフラッシュメモリ803は、バス210を介して、割込要求処理装置M1に対して直接接続されたウェイト信号をアサートして、ページの切り替えを行う。
(8)NANDフラッシュメモリ803は、次ページのデータの読み込みが完了したら、割込要求処理装置M1に対してウェイト信号をネゲートする。具体的には、例えば、NANDフラッシュメモリ803は、バス210を介して、割込要求処理装置M1に対して直接接続されたウェイト信号をネゲートする。
(9)割込要求処理装置M1は、DMAC801から割込み要求を受け付けた回数が8回となるまで、DMAC801の割込み要因をクリアするとともに、DMAC801に転送処理の実行要求を出力する。具体的には、例えば、割込要求処理装置M1は、NANDフラッシュメモリ803からウェイト信号がネゲートされるのを待って、DMAC801に対して転送処理の実行要求を出力する。
(10)割込要求処理装置M1は、DMAC801から割込み要求を受け付けた回数が8回となったら、DMAC801の割込み要因をクリアして、CPU201に対するDMAC801からの割込み要求を割込コントローラ204に出力する。(11)割込コントローラ204は、割込要求処理装置M1から割込み要求を受け付けると、CPU201に対してDMAC801からの割込み要求を出力する。CPU201は、割込コントローラ204からの割込み要求を受け付けると、実行中のプログラムを中断して割込ハンドラを呼び出す。そして、割込ハンドラによってDMAC801からの割込み要求が処理される。
コンピュータシステム200の一実施例によれば、データ転送を行う際の、CPU201の割込み処理にかかる負荷を低減させて、CPU201の処理効率の向上を図ることができる。具体的には、CPU201の代わりに、DMAC801からの1回目から7回目までの割込み要求を割込要求処理装置Miに処理させることができる。このため、CPU201は、DMAC801からの最後(8回目)の割込み要求に対する割込み処理を行うだけでよい。これにより、従来に比べてCPU201は本来実行すべき処理に専念することができ、CPU201の処理効率を向上させることができる。
以上説明したように、実施の形態2にかかるコンピュータシステム200によれば、割込要求処理装置Miが、デバイスDiから割込み要求を受け付けた回数が所定回数Fiとなるまで、CPU201の代わりに割込み要求を処理することができる。すなわち、CPU201に対する複数のデバイスD1〜Dnからの割込み要求を、複数の割込要求処理装置M1〜Mnに分散して処理させることができる。これにより、実行中のプログラムを中断して割込ハンドラを呼び出すなどのCPU201の割込み処理を減らすことができ、CPU201の割込み処理にかかる負荷を低減させて、CPU201の処理効率の向上を図ることができる。
また、コンピュータシステム200によれば、割込コントローラ204の識別子をIDレジスタR3に設定しておくことで、割込み要求を受け付けた回数が所定回数Fiとなったら、デバイスDiからの割込み要求をCPU201に通知することができる。これにより、CPU201を介して処理する必要がある割込み要求をCPU201に通知することができる。
また、コンピュータシステム200によれば、割込要求処理装置Mjの識別子をIDレジスタR3に設定しておくことで、割込み要求を受け付けた回数が所定回数Fiとなったら、他のデバイスDjに対して所定の処理の実行要求を行うことができる。これにより、CPU201を介すことなく、複数のデバイスD1〜Dnを任意のシーケンスに従って動作させることができる。
また、コンピュータシステム200に割込要求処理装置Miを設置するために、CPU201、割込コントローラ204およびデバイスDiのインターフェース部分を変更する必要がない。このため、CPU201、割込コントローラ204およびデバイスDiの回路構成を変更することなく、CPU201の処理効率の向上を図ることができる。
(実施の形態3)
つぎに、実施の形態3にかかるコンピュータシステム1000について説明する。実施の形態3では、コンピュータシステム1000に割込要求処理装置Mi,Mj間の通信を行うための専用のバスを設ける。なお、実施の形態1,2で説明した箇所と同様の箇所については、図示および説明を省略する。
図10は、実施の形態3にかかるコンピュータシステムを示す説明図である。コンピュータシステム1000において、CPU201、ROM202、RAM203、割込コントローラ204およびデバイスD1〜Dnは、バス210を介して相互に通信可能に接続されている。また、コンピュータシステム1000において、割込コントローラ204および割込要求処理装置M1〜Mnは、割込専用バス1010を介して通信可能に接続されている。
ここで、割込要求処理装置Miは、割込専用バス1010を介して、他の割込要求処理装置Mjと相互に通信を行う。具体的には、例えば、出力部403は、割込専用バス1010を介して、他のデバイスDjに対する実行要求を他の割込要求処理装置Mjに出力する。また、受付部401は、割込専用バス1010を介して、デバイスDiに対する実行要求を他の割込要求処理装置Mjから受け付ける。
また、割込要求処理装置Miは、割込専用バス1010を介して、割込コントローラ204と相互に通信を行う。具体的には、例えば、出力部403は、割込専用バス1010を介して、CPU201に対するデバイスDiからの割込み要求を割込コントローラ204に出力する。
以上説明したように、実施の形態3にかかるコンピュータシステム1000によれば、バス210とは異なる割込専用バス1010を介して、割込要求処理装置Mi,Mj間の通信を行うことができる。これにより、割込要求処理装置Mi,Mj間の通信によりバス210の帯域が圧迫されることを避けて、バス210のスループットの低下を防ぐことができる。また、割込要求処理装置Mi,Mj間の通信プロトコルを、バス210の通信プロトコルに合わせる必要がないため、システム設計者の手間を削減することができる。
本実施の形態で説明した割込要求処理装置Miは、スタンダードセルやストラクチャードASIC(Application Specific Integrated Circuit)などの特定用途向けIC(以下、単に「ASIC」と称す。)やFPGAなどのPLD(Programmable Logic Device)によっても実現することができる。具体的には、たとえば、上述した割込要求処理装置Miの機能(受付部401〜ID判定部406)をHDL記述によって機能定義し、そのHDL記述を論理合成してASICやPLDに与えることにより、割込要求処理装置Miを製造することができる。
また、割込要求処理装置Miの各機能部(受付部401〜ID判定部406)は、例えば、ROM202やRAM203などの記憶装置に記憶されたプログラムをCPU201に実行させることにより、その機能を実現することにしてもよい。なお、本実施の形態で説明した割込要求処理方法は、各機能部(受付部401〜ID判定部406)を有するパーソナル・コンピュータやワークステーション等のコンピュータにより実現することができる。