(58)【調査した分野】(Int.Cl.,DB名)
【発明を実施するための形態】
【0010】
以下、本発明の実施形態について図面を参照して説明する。なお、本発明は以下の記述に限定されるものではなく、本発明の要旨を逸脱しない範囲において適宜変更可能である。
【0011】
[第1の実施形態]
図1は、第1の実施形態に係る割込み処理回路を含む割込み処理システム100の構成図である。なお、
図1には、説明の便宜上、本実施形態に関する構成のみを記載している。
【0012】
図1に示すように、CPU1100はPCI Expressバス1300を介してASIC1200と接続されている。
【0013】
CPU1100は、CPUコア1101と、ROM(Read Only Memory)コントローラ1102と、PCI Expressコントローラ1103と、割込みコントローラ1104と、メモリコントローラ1105と、内部バス1106とを備える。
【0014】
CPUコア1101は、CPU1100に接続された不揮発性記憶装置であるROM1107に格納された制御プログラムに基づき、システム全体の制御を行う実行部である。また、CPUコア1101は、PCI Expressバス1300を介してASIC1200内部の機能モジュール(1)1205−1〜(N)1205−Nの制御を行う。
【0015】
ROMコントローラ1102は、ROM1107との接続を可能とするインタフェースを備え、ROM1107に格納された制御プログラムをはじめとする各種データの読み取り制御を行う。
【0016】
PCI Expressコントローラ1103は、ASIC1200と接続するPCI Express1300のアクセス制御を行う。
【0017】
割込みコントローラ1104は、PCI Expressコントローラ1103がASIC1200から受信した後述する割込み情報に基づき、CPUコア1101に対して割込み情報を通知する。
【0018】
メモリコントローラ1105は、RAM(Random Access Memory)1108との接続を可能とするインタフェースを備え、RAM1108へのアクセス制御を行う。
【0019】
内部バス1106は、CPUコア1101が出力する命令や、PCI Expressバス1300を介して送受信するデータやRAM1108に保持された割込みレジスタ情報1109等を送受信するための通信路である。
【0020】
RAM1108は、ASIC1200内部の各機能モジュール(1)1205−1〜(N)1205−Nの割込みレジスタ情報1109を保持する。
【0021】
ASIC1200は、PCI Expressコントローラ1201と、割込み処理回路1202と、タイマ1203と、メモリコントローラ1204と、機能モジュール(1)1205−1〜(N)1205−Nと、内部バス1206とを備える。
【0022】
PCI Expressコントローラ1201は、CPU1100と接続するPCI Express1300のアクセス制御を行う。
【0023】
割込み処理回路1202は、タイマ1203からのトリガ信号又は各機能モジュール(1)1205−1〜(N)1205−Nからの割込みを受信する検知部として機能するとともに、CPU1100に先行して各機能モジュールの割込みレジスタ情報を取得する(フェッチする)レジスタリードシーケンサーとして構成される。その他、割込み処理回路1202の詳細な機能については後程説明する。
【0024】
タイマ1203は定期的にトリガ信号を割込み処理回路1202に対して出力する。
【0025】
メモリコントローラ1204は、RAM1207との接続を可能とするインタフェースを備え、RAM1207へのアクセス制御を行う。
【0026】
機能モジュール(1)1205−1〜(N)1205−Nは、例えば、画像処理、I/O(Input/Output)処理、I/F(Interface)処理、モータ制御等を実行する論理回路である。
【0027】
内部バス1206は、PCI Expressバス1300を介して送受信するデータやRAM1207に保持された割込みレジスタ情報1209等を送受信するための通信路である。
【0028】
RAM1207は、前述したCPU1100に接続されたRAM1108と同様に、ASIC1200内部の各機能モジュール(1)1205−1〜(N)1205−Nの割込みレジスタ情報1209を保持するとともに、各機能モジュール(1)1205−1〜(N)1205−Nの割込みレジスタのアドレステーブル1208を保持する。ASIC1200に接続されたRAM1207とCPU1100に接続されたRAM1108とが保持する各機能モジュール(1)1205−1〜(N)1205−Nの割込みレジスタ情報は、割込み処理回路1202の指示によって更新され、同じ値が保持される。
【0029】
次に、本実施形態に係る割込み処理回路の動作について説明する。
図2−1は、割込み処理回路1202の処理動作を説明するフローチャートである。
【0030】
まず、
図2−1で説明する処理動作の事前処理として、装置起動時にCPUコア1101は、PCI Expressバス1300を介してASIC側のRAM1207に、ASIC1200内部の各機能モジュール(1)1205−1〜(N)1205−Nの割込みレジスタのアドレステーブル1208を格納させる。アドレステーブル1208の格納が完了後、CPUコア1101は、割込み処理回路1202に対して、割込みレジスタ情報を格納するCPU側のRAM1108及びASIC側のRAM1207におけるアドレスを通知するとともに、起動を要求する。
【0031】
ステップS001において、起動した割込み処理回路1202は、アドレステーブル1208をASIC側のRAM1207から読み出し、読み出したアドレステーブル1208に対応する機能モジュール(1)1205−1〜(N)1205−Nの割込みレジスタを読み出すことで現在のレジスタ情報を取得する(ステップS002)。
【0032】
次に、割込み処理回路1202は、PCI Expressバス1300を介して、CPU側のメモリコントローラ1105に、レジスタ情報を格納させるRAMアドレスと現在の機能モジュールの割込みレジスタ情報(割込み情報)を通知する。CPU側のメモリコントローラ1105は、通知された情報を基に、現在の機能モジュールの割込みレジスタ情報をRAM1108に格納させる。また、同時に、割込み処理回路1202は、ASIC側のメモリコントローラ1204にレジスタ情報を格納させるRAMアドレスと現在の機能モジュールの割込みレジスタ情報を通知する。ASIC側のメモリコントローラ1204は、通知された情報を基に、現在の機能モジュールの割込みレジスタ情報をRAM1207に格納させる(ステップS003)。
【0033】
そして、現在のアドレステーブルが最後のアドレステーブルでない場合(ステップS004 NO)、割込み処理回路1202は、読み出し位置を次の機能モジュールのアドレステーブルに移動し(ステップS005)、ステップS001からの処理を繰り返す。
【0034】
一方、現在のアドレステーブルが最後のアドレステーブルである場合(ステップS004 YES)、割込み処理回路1202はタイマ1203からのトリガ信号又はASIC内部の機能モジュール(1)1205−1〜(N)1205−Nによる割込み待ち状態となる(ステップS006)。
【0035】
割込み処理回路1202は、定期的に発生するタイマ1203からのトリガ信号を受信すると(ステップS007 NO)、
図2−2のフローチャートで説明する処理を実行する(ステップS009)。そして、当該処理が完了すると、割込み処理回路1202は、再度割込み待ち状態となり、ステップS006からの処理を繰り返す。
【0036】
ところで、割込み処理回路1202は、ASIC内部の機能モジュール(1)1205−1〜(N)1205−Nによる割込みを検知すると(ステップS007 YES)、
図2−3のフローチャートで説明する処理を実行する(ステップS008)。そして、当該処理が完了すると、割込み処理回路1202は、再度割込み待ち状態となり、ステップS006からの処理を繰り返す。
【0037】
次に、タイマ1203からトリガ信号を受信した際の割込み処理回路1202の処理動作(
図2−1 ステップS009)について
図2−2のフローチャートを用いて説明する。
【0038】
タイマ1203からトリガ信号を受信すると、割込み処理回路1202は、
図2−1のステップS001の動作と同様に、アドレステーブル1208をASIC側のRAM1207から読み出す(ステップS011)。
【0039】
ステップS012において、割込み処理回路1202は、読み出したアドレステーブルの情報に対応する機能モジュールの前回の割込みレジスタ情報RD(old)をASIC側のRAM1207から読み出す。
【0040】
これと同時に、割込み処理回路1202は、ステップS011で読み出したアドレステーブルの情報に対応する機能モジュールの割込みレジスタ情報を読み出すことで、現在の割込みレジスタ情報RD(new)を取得する(ステップS013)。
【0041】
そして、割込み処理回路1202は、ステップS012で読み出した前回の割込みレジスタ情報RD(old)とステップS013で読み出した現在の割込みレジスタ情報RD(new)とを比較する。ここで、両者に差分が有る場合(ステップS014 YES)、割込み処理回路1202は、CPU側のRAM1108に格納されている割込みレジスタ情報1109及びASIC側のRAM1207に格納されている割込みレジスタ情報1209を現在の割込みレジスタ情報に置き換えるため、PCI Expressバス1300を介して、CPU側のメモリコントローラ1105に、レジスタ情報を格納するRAMアドレスと現在の機能モジュール(1)1205−1〜(N)1205−Nの割込みレジスタ情報を通知する。CPU側のメモリコントローラ1105は通知された情報を基に、現在の機能モジュールの割込みレジスタ情報をRAM1108に格納させる。また、同時に、割込み処理回路1202は、ASIC側のメモリコントローラ1204に、レジスタ情報を格納するRAMアドレスと現在の機能モジュール(1)1205−1〜(N)1205−Nの割込みレジスタ情報を通知する。ASIC側のメモリコントローラ1204は通知された情報を基に、現在の機能モジュールの割込みレジスタ情報をRAM1207に格納させる(ステップS015)。
【0042】
一方、前回の割込みレジスタ情報RD(old)と現在の割込みレジスタ情報RD(new)とで差分が無い場合(ステップS014 NO)、ステップS015で説明した割込みレジスタ情報の置き換え処理は省略される。
【0043】
そして、現在のアドレステーブルが最後のアドレステーブルでない場合(ステップS016 NO)、割込み処理回路1202は、読み出し位置を次の機能モジュールのアドレステーブルに移動し(ステップS017)、ステップS011からの処理を繰り返す。
【0044】
一方、現在のアドレステーブルが最後のアドレステーブルである場合(ステップS016 YES)、割込み処理回路1202はタイマ1203からトリガ信号を受信した際の処理を終了する。
【0045】
次に、ASIC内部の機能モジュール(1)1205−1〜(N)1205−Nによる割込みを検知した際の割込み処理回路1202の処理動作(
図2−1 ステップS008)について
図2−3のフローチャートを用いて説明する。
【0046】
なお、
図2−3のステップS021〜ステップS027(ステップS026 YES以降の処理は除く)までの処理は、
図2−2のステップS011〜ステップS017までの処理と同様であるため、ここでの説明は省略する。
【0047】
ステップS026において、現在のアドレステーブルが最後のアドレステーブルである場合(ステップS026 YES)、全てのアドレステーブルを読み終え、機能モジュールの割込みレジスタの処理が終了した後、割込み処理回路1202は、PCI Expressバス1300を介してCPU内部の割込みコントローラ1104に割込みの発生を通知する(ステップS028)。
【0048】
CPU内部の割込みコントローラ1104は、CPUコア1101に対して割込み情報を通知する。CPUコア1101は、割込み情報の通知を受けると、CPU側のRAM1108にあるASIC内部の各機能モジュール(1)1205−1〜(N)1205−Nの割込みレジスタ情報を読み出し、割込み処理を実行する。
【0049】
図3は、従来技術と本実施形態に係るASIC内部の機能モジュールによる割込み発生から割込み処理完了までに要する時間を比較した図である。
【0050】
図3(b)に示すように、割込み発生時に既に転送された割込みソース状態と現在の割込みソース状態とが完全に不一致である場合(差分ヒット率0%)、割込みソース状態を読み出し、CPU側に転送する(データフェッチ処理)時間は
図3(a)で示す従来技術と同じであるが、割込み発生時に既に転送された割込みソース状態と現在の割込みソース状態とが50%一致した場合(差分ヒット率50%)、割込みソース状態を読み出し、CPU側に転送する(データフェッチ処理)時間は
図3(c)に示すように従来技術と比較して大幅に減少させることができる。
【0051】
以上のように、第1の実施形態によれば、割込み処理回路が定期的にCPU側に割込みソースの状態を転送し、割込み発生時には既に転送された割込みソース状態との差分のみをCPU側に転送するため、割込み発生時におけるASIC側からCPU側へのデータ転送量を減少させることが可能となる。その結果、割込み処理におけるリアルタイムでの応答性を向上させることができる。
【0052】
[第2の実施形態]
図4は、第2の実施形態に係る割り込み処理回路を含む割込み処理システム200の構成図である。なお、第1の実施形態に係る構成と同構成のものについては同一の符号を付してその説明を省略し、異なる構成について説明する。
【0053】
CPU1100に接続されたRAM2108は、ASIC内部の各機能モジュール(1)1205−1〜(N)1205−Nの割込みレジスタ情報2109を保持する。
【0054】
ここで、割込みレジスタ情報2109は、
図5(a)に示されるように、画像処理系レジスタ情報2109−1、メカ制御系レジスタ情報2109−2、IF制御系レジスタ情報2109−3といったように、類似した系統の機能モジュール毎にまとめられている。
【0055】
ASIC1200に接続されたRAM2207は、CPU1100に接続されたRAM2108と同様にASIC内部の各機能モジュール(1)1205−1〜(N)1205−Nの割込みレジスタ情報2209を、画像処理系レジスタ情報2209−1、メカ制御系レジスタ情報2209−2、IF制御系レジスタ情報2209−3といったように、類似した系統の機能モジュール毎にまとめて保持するとともに、各機能モジュールの割込みレジスタのアドレステーブル2208を保持する。
【0056】
なお、割込みレジスタのアドレステーブル2208についても、
図5(b)に示されるように、画像処理系テーブル2208−1、メカ制御系アドレステーブル2208−2、IF制御系テーブル2208−3といったように、類似した系統の機能モジュール毎にまとめられている。
【0057】
そして、ASIC1200に接続されたRAM2207とCPU1100に接続されたRAM2108とが保持する各機能モジュール(1)1205−1〜(N)1205−Nの割込みレジスタ情報は割込み処理回路2202からの指示によって更新され、同じ値が保持される。
【0058】
次に、本実施形態に係る割込み処理回路の動作について説明する。
図6−1は、割込み処理回路2202の処理動作を説明するフローチャートである。
【0059】
なお、本実施形態に係る割込み処理回路2202の処理動作において、第1の実施形態における
図2−1で説明した処理動作と同一なものについては同一のステップ番号を付してここでの説明は省略する。
【0060】
ステップS002の処理の後、割込み処理回路2202は、機能モジュールの割込みレジスタ情報をある規定数N分まとめ、PCI Expressバス1300を介してCPU側のメモリコントローラ1105に転送する。
【0061】
転送単位数の機能モジュールの割込みレジスタの読み出しが完了していない場合(ステップS201 NO)、割込み処理回路2202は、読み出し位置を次の機能モジュールのアドレステーブルに移動し(ステップS202)、ステップS001からの処理を繰り返す。
【0062】
一方、転送単位数の機能モジュールの割込みレジスタの読み出しが完了した場合(ステップS201 YES)、割込み処理回路2202は、PCI Expressバス1300を介して、CPU側のメモリコントローラ1105に、レジスタ情報を格納させるRAMアドレスと転送単位分の現在の機能モジュールの割込みレジスタ情報を通知する。CPU側のメモリコントローラ1105は、通知された情報を基に、現在の機能モジュールの割込みレジスタ情報を転送単位分まとめてRAM2108に格納させる。また、同時に、割込み処理回路2202は、ASIC側のメモリコントローラ1204に、レジスタ情報を格納させるRAMアドレスと転送単位分の現在の機能モジュールの割込みレジスタ情報を通知する。ASIC側のメモリコントローラ1204は、通知された情報を基に、現在の機能モジュールの割込みレジスタ情報を転送単位分まとめてRAM2207に格納させる(ステップS203)。
【0063】
次に、タイマ1203からトリガ信号を受信した際の割込み処理回路2202の処理(
図6−1 ステップS204)について
図6−2のフローチャートを用いて説明する。なお、割込み処理回路2202の処理動作において、第1の実施形態における
図2−2で説明した処理動作と同一なものについては同一のステップ番号を付してここでの説明は省略する。
【0064】
ステップS013の処理の後、転送単位数の機能モジュールの割込みレジスタの読み出しが完了していない場合(ステップS211 NO)、割込み処理回路2202は、読み出し位置を次の機能モジュールのアドレステーブルに移動し(ステップS212)、ステップS011からの処理を繰り返す。
【0065】
一方、転送単位数の機能モジュールの割込みレジスタの読み出しが完了した場合(ステップS211 YES)、割込み処理回路2202は、転送単位分の全ての割込みレジスタについて、ステップS012で読み出した前回の割込みレジスタ情報RD(old)とステップS013で読み出した現在の割込みレジスタ情報RD(new)とを比較する。ここで、1つ以上のレジスタ情報で差分が有る場合(ステップS0213 YES)、割込み処理回路2202は、CPU側のRAM2108に格納されている割込みレジスタ情報2109及びASIC側のRAM2207に格納されている割込みレジスタ情報2209を現在の割込みレジスタ情報に置き換えるため、PCI Expressバス1300を介して、CPU側のメモリコントローラ1105に、レジスタ情報を格納するRAMアドレスと転送単位分の現在の機能モジュール(1)1205−1〜(N)1205−Nの割込みレジスタ情報を通知する。CPU側のメモリコントローラ1105は通知された情報を基に、現在の機能モジュールの割込みレジスタ情報を転送単位分まとめてRAM2108に格納させる。また、同時に、割込み処理回路2202は、ASIC側のメモリコントローラ1204に、レジスタ情報を格納するRAMアドレスと転送単位分の現在の機能モジュール(1)1205−1〜(N)1205−Nの割込みレジスタ情報を通知する。ASIC側のメモリコントローラ1204は通知された情報を基に、現在の機能モジュールの割込みレジスタ情報を転送単位分まとめてRAM2207に格納させる(ステップS214)。
【0066】
一方、転送単位分の全てのレジスタについて、前回の割込みレジスタ情報RD(old)と現在の割込みレジスタ情報RD(new)とで差分が無い場合(ステップS213 NO)、ステップS214で説明した割込みレジスタ情報の置き換え処理は省略される。
【0067】
次に、ASIC内部の機能モジュール(1)1205−1〜(N)1205−Nによる割込みを検知した際の割込み処理回路1202の処理(
図6−1 ステップS205)について
図6−3のフローチャートを用いて説明する。なお、割込み処理回路2202の処理動作において、第1の実施形態における
図2−3で説明した処理動作と同一なものについては同一のステップ番号を付してここでの説明は省略する。
【0068】
ステップS023の処理の後、転送単位数の機能モジュールの割込みレジスタの読み出しが完了していない場合(ステップS221 NO)、割込み処理回路2202は、読み出し位置を次の機能モジュールのアドレステーブルに移動し(ステップS222)、ステップS021からの処理を繰り返す。
【0069】
一方、転送単位数の機能モジュールの割込みレジスタの読み出しが完了した場合(ステップS221 YES)、割込み処理回路2202は、転送単位分の全ての割込みレジスタについて、ステップS022で読み出した前回の割込みレジスタ情報RD(old)とステップS023で読み出した現在の割込みレジスタ情報RD(new)とを比較する。ここで、1つ以上のレジスタ情報で差分が有る場合(ステップS0223 YES)、割込み処理回路2202は、CPU側のRAM2108に格納されている割込みレジスタ情報2109及びASIC側のRAM2207に格納されている割込みレジスタ情報2209を現在の割込みレジスタ情報に置き換えるため、PCI Expressバス1300を介して、CPU側のメモリコントローラ1105に、レジスタ情報を格納するRAMアドレスと転送単位分の現在の機能モジュール(1)1205−1〜(N)1205−Nの割込みレジスタ情報を通知する。CPU側のメモリコントローラ1105は通知された情報を基に、現在の機能モジュールの割込みレジスタ情報を転送単位分まとめてRAM2108に格納させる。また、同時に、割込み処理回路2202は、ASIC側のメモリコントローラ1204に、レジスタ情報を格納するRAMアドレスと転送単位分の現在の機能モジュール(1)1205−1〜(N)1205−Nの割込みレジスタ情報を通知する。ASIC側のメモリコントローラ1204は通知された情報を基に、現在の機能モジュールの割込みレジスタ情報を転送単位分まとめてRAM2207に格納させる(ステップS224)。
【0070】
一方、転送単位分の全てのレジスタについて、前回の割込みレジスタ情報RD(old)と現在の割込みレジスタ情報RD(new)とで差分が無い場合(ステップS223 NO)、ステップS224で説明した割込みレジスタ情報の置き換え処理は省略される。
【0071】
図7は、機能モジュール内の割込みレジスタ情報を格納するASIC側メモリ及びCPU側メモリの領域を類似した系統の機能モジュール毎にまとめた場合(
図7(a))とまとめなかった場合(
図7(b))とで、ASIC側からCPU側に転送する必要がある機能モジュールの転送回数の違いを説明する図である。
【0072】
図7(a)及び
図7(b)の場合において、どちらも割込み発生時に、既に転送された割込みソース状態との差分があり、CPU側へ転送する必要がある機能モジュール数は8つである。
図7(a)に示す類似した系統の機能モジュール毎にまとめた場合においては、転送単位が機能モジュール4つ毎であるため、転送数は3回で済む。これに対して
図7(b)に示す類似した系統の機能モジュール毎にまとめなかった場合においては、5回の転送が必要である。このように、類似した系統の機能モジュール毎にまとめることにより、データ転送効率を向上させることができる。
【0073】
以上のように、第2の実施形態によれば、機能モジュール内の割込みレジスタ情報を格納するASIC側メモリ及びCPU側メモリの領域を類似した系統の機能モジュール毎にまとめることによって、第1の実施形態の効果に加え、CPU側へのデータ転送効率を向上させることが可能となり、割込み処理におけるリアルタイムでの応答性を高めることができる。
【0074】
本発明の実施形態の説明においては、ASICとCPUとの間のバスの例をPCI Expressとして説明したが、本発明はこれに限定されるものではなく、例えば、PCI、USB(Universal Serial Bus)、ローカルバス、SPI(Serial Peripheral Interface)等にも適用可能である。