(57)【要約】【課題】複数のデータ源からの割り込みを監視し取りこぼしなくデータの授受を行うことができるコンピュータを提供すること。【解決手段】コンピュータ１００は、複数のデータを一時的に保持してＭＰＵへ送るための複数のデータバッファ回路４−１〜４−Ｎと、データ源１−１〜１−Ｎからの割り込み要求信号から変化点を順次に検出してエッジ信号を生成する複数の割り込み信号エッジ検出回路２−１〜２−Ｎと、割り込み信号エッジ検出回路２−１〜２−Ｎからの前記エッジ信号を一時的に保持する複数のＦＩＦＯバッファ回路３−１〜３−Ｎと、ＦＩＦＯバッファ回路３−１〜３−Ｎの出力を待ち行列に登録する割り込みサンプラ回路５と、割り込みサンプラ回路５の前記待ち行列を読み出してＭＰＵ７への割り込み信号を発生させる割り込みコントローラ６と、を具備する。【選択図】図１
2010257035.tif 000002
【特許請求の範囲】
【請求項１】
複数のデータ源から任意のタイミングでデータを受信するコンピュータにおいて、
前記複数のデータを一時的に保持してＭＰＵへ送るための複数のデータバッファ回路と、
前記データ源からの割り込み要求信号から変化点を順次に検出してエッジ信号を生成する複数の割り込み信号エッジ検出回路と、
前記割り込み信号エッジ検出回路からの前記エッジ信号を一時的に保持する複数のＦＩＦＯバッファ回路と、
前記ＦＩＦＯバッファ回路の出力を待ち行列に登録する割り込みサンプラ回路と、
前記割り込みサンプラ回路の前記待ち行列を読み出して前記ＭＰＵへの割り込み信号を発生させる割り込みコントローラと、
を具備することを特徴とするコンピュータ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のデータ源から任意のタイミングでデータを受信するコンピュータに関するものである。
【背景技術】
【０００２】
コンピュータにおいては、年々、システムの肥大化・高速化に伴い、単一システムで実現する形態から、複数のサブシステムに分割しそれらを統合化するといった、いわゆる分散処理が図られてきている。分散処理によりシステム化しやすくなるメリットがある反面、サブシステム間の情報伝達が複雑になるというデメリットが生じる。任意のデータ源の出力を、任意の出力タイミングでの受け取りしなければならなくなるケースが頻繁に発生している。そのため、サブシステム間、あるいは、下位システムと上位システム間でのデータの授受をより信頼性高く、より効率良く実行でき、かつ、より容易に実現できることが望まれている。
【０００３】
組み込み機器、又は、ＰＣを用いるアプリケーション分野において、外部データ源からデータを効率よく取り込むための手段として、割り込み手法が広く知られている（特許文献１参照）。割り込み手法は、正確なタイミング、かつ、正確なデータ取り込みを容易に実現できるため、ポーリング手法より優れた方法であると言える。
【０００４】
しかし、複数のデータ源から同時に割り込みが発生した場合、その同時処理への対処が容易ではなく、データの取りこぼし等が発生するケースが多く見られる。この対処をするための処理も複雑になりがちである。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開平５−１４３３６０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
本発明の目的は、複数のデータ源からの割り込み要求を監視し取りこぼしなくデータの授受を行うことができるコンピュータを提供することにある。
【課題を解決するための手段】
【０００７】
請求項１の発明に係るコンピュータは、複数のデータ源から任意のタイミングでデータを受信するコンピュータにおいて、前記複数のデータを一時的に保持してＭＰＵへ送るための複数のデータバッファ回路と、前記データ源からの割り込み要求信号から変化点を順次に検出してエッジ信号を生成する複数の割り込み信号エッジ検出回路と、前記割り込み信号エッジ検出回路からの前記エッジ信号を一時的に保持する複数のＦＩＦＯバッファ回路と、前記ＦＩＦＯバッファ回路の出力を待ち行列に登録する割り込みサンプラ回路と、前記割り込みサンプラ回路の前記待ち行列を読み出して前記ＭＰＵへの割り込み信号を発生させる割り込みコントローラと、を具備することを特徴とする。
【発明の効果】
【０００８】
本発明によれば、複数のデータ源からに割り込みを監視し取りこぼしなくデータの授受を行うことができる。このことにより、本発明によれば、割り込み処理ソフトウエアに対する時間的制約が緩和され、開発、テストが容易になり、ひいてはサブシステムによる分散化を実現しやすくなるため、より大規模なシステム開発をし易くなる。
【図面の簡単な説明】
【０００９】
【図１】本発明の実施の形態１に係るコンピュータを示すブロック図である。
【図２】本発明の実施の形態１において割り込み要求の発生から割り込み情報を待ち行列に登録するまでのハードウエアの処理フローの一例を説明するための図である。
【図３】本発明の実施の形態１において待ち行列に登録された割り込み要求をＭＰＵに割り込み通知するまでのハードウエアの処理フローの一例を説明するための図である。
【図４】本発明の実施の形態１において割り込み要求に対するＭＰＵのソフトウエアの処理フローの一例を説明するための図である。
【図５】本発明の実施の形態１において割り込みメッセージに対するＭＰＵのソフトウエアの処理フローの一例を説明するための図である。
【図６】本発明の実施の形態１において３個のデータ源から同時に割り込み要求が発生した場合の処理フローに対するタイムチャートを示す図である。
【発明を実施するための形態】
【００１０】
次に、本発明の実施の形態について、図面を参照して詳細に説明する。
（実施の形態１）
図１は、本発明の実施の形態１に係るコンピュータを示すブロック図である。図1に示すように、本発明の実施の形態１に係るコンピュータ１００は、複数のデータバッファ回路４−１、４−２、…、４−Ｎと、複数の割り込み信号エッジ検出回路２−１、２−２、…、２−Ｎと、複数のＦＩＦＯバッファ回路３−１、３−２、…、３−Ｎと、割り込みサンプラ回路５と、割り込みコントローラ６と、を具備している。
【００１１】
複数のデータバッファ回路４−１、４−２、…、４−Ｎの入力端子には、複数のデータ源１−１、１−２、…、１−Ｎが接続されている。複数のデータバッファ回路４−１、４−２、…、４−Ｎの出力端子は、ＭＰＵ７の入力端子に接続されている。複数の割り込み信号エッジ検出回路２−１、２−２、…、２−Ｎの入力端子には、複数のデータ源１−１、１−２、…、１−Ｎの出力端子が接続されている。複数の割り込み信号エッジ検出回路２−１、２−２、…、２−Ｎの出力端子は、複数のＦＩＦＯバッファ回路３−１、３−２、…、３−Ｎの入力端子に接続されている。複数のＦＩＦＯバッファ回路３−１、３−２、…、３−Ｎの出力端子は、割り込みサンプラ回路５の入力端子に接続されている。割り込みサンプラ回路５の出力端子は、割り込みコントローラ６の入力端子に接続されている。割り込みコントローラ６の出力端子は、ＭＰＵ(Micro Processing Unit)７の入力端子に接続されている。
【００１２】
コンピュータ１００は、複数のデータ源１−１、１−２、…、１−Ｎから任意のタイミングでデータを受信する。複数のデータバッファ回路４−１、４−２、…、４−Ｎは、複数のデータ源１−１、１−２、…、１−Ｎから複数のデータを一時的に保持してＭＰＵ７へ送るためのものである。複数の割り込み信号エッジ検出回路２−１、２−２、…、２−Ｎは、データ源１−１、１−２、…、１−Ｎからの割り込み要求信号から変化点を順次に検出してエッジ信号を生成する。複数のＦＩＦＯバッファ回路３−１、３−２、…、３−Ｎは、割り込み信号エッジ検出回路２−１、２−２、…、２−Ｎからのエッジ信号を一時的に保持する。割り込みサンプラ回路５は、ＦＩＦＯバッファ回路３−１、３−２、…、３−Ｎの出力を待ち行列に登録する。割り込みコントローラ６は、割り込みサンプラ回路６の待ち行列を読み出してＭＰＵ７への割り込み信号を発生させる。
【００１３】
データ源（割り込み発生源）１−１、１−２、…、１−Ｎは、その数がＮである。データ源１−１、１−２、…、１−Ｎからの信号線のコネクタの形状やサイズなどの物理的な制約以外にその接続数Ｎに対する制約は生じない。データ源（割り込み発生源）１−１、１−２、…、１−Ｎは、割り込みを要求する信号線１１と渡すべきデータ信号線１２によりコンピュータ１００に接続されている。
【００１４】
割り込み信号エッジ検出回路２−１、２−２、…、２−Ｎは、データ源１−１、１−２、…、１−Ｎからの割り込み要求信号(データ源からデータバッファ回路への書き込み完了信号でも可)に対してエッジ部の検出(信号アサート期間の正規化)を行ってエッジ信号１３を生成する。このエッジ信号１３については後述するが、割り込み要求完了応答１１、または、データ源１−１、１−２、…、１−Ｎからデータバッファ回路４−１、４−２、…、４−Ｎに書き込みが完了したことを示す信号を元に生成される。データ源１−１、１−２、…、１−Ｎの数Ｎだけ割り込み信号エッジ検出回路２−１、２−２、…、２−Ｎが配置されデータ源１−１、１−２、…、１−Ｎからの信号が並列に処理される。
【００１５】
ＦＩＦＯバッファ回路３−１、３−２、…、３−Ｎは、信号線１３を介して割り込みエッジ信号を割り込み情報としてＦＩＦＯ(First In First Out)バッファ に一時的に保持する。このバッファの容量は、読み出し、書き込み共にハードウエアで実行、かつ、双方共にウエイトに対する制約条件がないため、小容量でよい。データ源１−１、１−２、…、１−Ｎの数ＮだけＦＩＦＯバッファ回路３−１、３−２、…、３−Ｎが配置され、各データ源１−１、１−２、…、１−Ｎからの信号が並列に処理される。
【００１６】
データバッファ回路４−１、４−２、…、４−Ｎは、データ源１−１、１−２、…、１−Ｎから受信するデータを一時的に保持するためのＦＩＦＯバッファである。データ源１−１、１−２、…、１−Ｎの数Ｎだけデータバッファ回路４−１、４−２、…、４−Ｎが配置され、データ源１−１、１−２、…、１−Ｎからのデータが並列に処理される。
【００１７】
割り込みサンプラ５は、割り込み要求を待ち行列に登録するためのＦＩＦＯバッファとその制御をする回路である。Ｎ個だけ配置されたＦＩＦＯバッファ回路３−１、３−２、…、３−Ｎが空(エンプティ)でない場合、順次に読み出し(デキュー)し、データ源ナンバ(１〜Ｎ)の情報を付加し、信号線１４を介して割り込みサンプラ５に書き込む(エンキュー)。
【００１８】
上記順次読み出しは、割り込みの現実的な応答時間より十分に高速なタイミングでサンプリングすることにより、順次読み出しによる時間的なロスは無視しても差し支えない。ハードウエア処理で行う順次読み出しのサンプリングのサイクルを数十〜数百MHz(数十ns〜数ns)にすることは一般に容易であるが、一方、割り込みタイミングの精度は数百ns〜数μsが現実的と想定されるためである。
【００１９】
割り込みコントローラ６は、ＭＰＵ７におけるソフトウエア割り込み処理と割り込みサンプラ回路５の間の調停を行う回路である。割り込みコントローラ６は、割り込みサンプラ回路６の待ち行列を読み出してＭＰＵ７への割り込み信号を発生させて発生順に逐次に信号線１６を介してＭＰＵ７に割り込みを発生させる。一つ一つの割り込みを見ると、割り込み要求信号１６とその割り込み完了信号１７が対をなしている。
【００２０】
ＭＰＵ７は、割り込みを受けて割り込み処理をソフトウエアで実行する部分である。メモリ装置８は、ＭＰＵ７のワーク用メモリ装置である。説明を簡単にするため、該割り込み処理によりＮ個のデータ源１−１、１−２、…、１−Ｎからのデータに保持しておく場所とする。
【００２１】
データバッファ回路４−１、４−２、…、４−Ｎ、割り込みコントローラ６、ＭＰＵ７、メモリ装置８は、データバス１０及びコントロールバス９により接続されている。データバス１０は、データをやりとりするための信号線の集合体(バス幅は取り扱うデータに幅に依存する)であり、バス周辺に接続された回路は、アクセス時のみバスに接続する。コントロールバス９は、割り込み要求を示す信号線、データバスのリード/ライトタイミングを決める信号線等の集合体である。この他にアドレスバスがあるが、本発明の本質ではないため省略することとする。
【００２２】
次に、本発明の実施の形態1に係るコンピュータ１００の動作について、図面を参照して詳細に説明する。コンピュータ１００の動作は、大きく分けて、（i）割り込み要求を待ち行列に登録するまでのハードウエアの処理（図２参照）、（ii）待ち行列に登録された割り込み要求をMPUに通知するまでのハードウエアの処理（図３参照）、（iii）割り込み処理とその割り込みに対するソフトウエアの処理（図４参照）、（iv）割り込みメッセージに対するソフトウエアの処理（図５参照）の４つがある。これらは、全て独立、かつ、並行して実行される。
【００２３】
（i）Ｎ個接続されたデータ源１−１、１−２、…、１−Ｎから割り込み要求があった場合、割り込み要求の履歴を先着順にＦＩＦＯバッファ回路３−１、３−２、…、３−Ｎに書き込む処理（図２の処理３１〜３４）と、対応する割り込みデータを先着順にデータバッファ回路４−１、４−２、…、４−Ｎに書き込む処理（図２の処理３５）とは、並行して実行される。図２の処理３４でＮ種類の情報源が１系統に統合される。ここでの統合とは、個々の割り込み発生源をチャンネルナンバー情報に変換して、１系統の回路及び１系統のバッファにて処理することを意味している。
【００２４】
割り込み信号エッジ検出回路２−１、２−２、…、２−Ｎ、ＦＩＦＯバッファ回路３−１、３−２、…、３−Ｎ、データバッファ回路４−１、４−２、…、４−Ｎは、データ源１−１、１−２、…、１−Ｎの数だけハードウエアとして配置されるため、この段階での割り込みの取りこぼしは起こり得ないが、この段階で割り込み要求から待ち行列に登録されるまでの間に遅延が生じる。その最大時間Ｔは、下式で表わされる。
Ｔ＝データ源の数N[U] / サンプリング周期K[Hz]                    （式１）
一般に、Ｎの範囲を２〜２０、Ｋを１００MHzとすると、Ｔは最大で２００nsとなる。これは前述（段落[００１８]参照）の割り込みタイミングの精度と比較して、十分に無視できるオーダーと言ってもよい。
【００２５】
データ源１−１、１−２、…、１−Ｎから割り込み要求の形式として下記の２通りのものが挙げられる。
（Ａ）１つの形式は、データ源１−１、１−２、…、１−Ｎから割り込み要求のみを受け、能動的に必要なデータをデータ源１−１、１−２、…、１−Ｎから取り出す形式で、イベント発生を知らせることを主眼においた信号路の形態に多く見受けられる。この形式は、相対的に、データ量が少ない、発生頻度が少ない、処理時間の余裕がある処理になりやすい傾向がある。この場合、処理３１〜３４から処理３５の順に動作が実行される。エッジ信号１３は、割り込み要求信号１１から生成される。
【００２６】
（Ｂ）他の形式は、データ源１−１、１−２、…、１−Ｎから受動的に必要なデータを受け、データの受信を以って割り込みを能動的に生成する形式で、パケット通信などのデータ通知に主眼をおいた通信路の形態に多く見受けられる。この形式は、相対的に、データ量が多い、発生頻度が多い、処理時間の余裕がない処理になりやすい傾向がある。この場合、処理３５から処理３１〜３４の順に動作が実行される。エッジ信号１３は、データ源１−１、１−２、…、１−Ｎからデータバッファ回路４−１、４−２、…、４−Ｎに書き込みが完了したことを示す信号から生成される。
【００２７】
上記（Ａ）、（Ｂ）で実行順序やエッジ信号１３の生成方法こそ異なれども、本発明は複数のデータ源１−１、１−２、…、１−Ｎからの割り込みに対するものであり、本発明が上記相違に限定されるものではない。
【００２８】
（ii）割り込みコントローラ６は、常時、割り込みサンプラ回路５の内の待ち行列に登録された割り込み情報を１つずつ取り出し、ＭＰＵ７に割り込み信号１６を発行する（図３の処理３６〜４１）。割り込みサンプラ回路５は、ＭＰＵ７７からの割り込み完了応答信号１７を以って、次の割り込み情報に対する処理を行う。このことより、ＭＰＵ７に対する多重割り込みは生じない。なお、処理４１における”A mod B”とは、AをBで割った余りを表している。nは、0, 1, 2, 3 … N-2, N-1の値を繰り返すことになる。
【００２９】
（iii）図４の処理は、ＭＰＵ７の中のソフトウエア処理になる。割り込み信号１８を受け次第、対応する割り込みベクタの飛び先(割り込み処理ルーチン)に実行制御が移される（図４の処理４２）。割り込み処理ルーチンでの処理は、実行環境により異なる。Windows（登録商標）などの大規模なOSを搭載している環境では、メッセージキューに割り込みイベント発生のメッセージを投函する（図４の処理４３）だけで、実際のデータの読み出しはしないで、割り込み完了応答信号１９を発行して処理を抜ける。これは、デバイスドライバに相当する部分になる。
【００３０】
他方、OSを搭載していない環境、あるいは、簡易OSを使用している環境では、デバイスドライバとアプリケーションソフトウエアを分割する必要性がないため、（iv）を取り除いた上で、処理４３の代わりに図５の処理４６を直接実行してもよい。本発明は、実行環境の相違を問題にしていない。
【００３１】
（iv）図５の処理も、ＭＰＵ７の中のソフトウエア処理になる。イベントハンドラは、図４の処理４３に対する実行処理であるが、イベントハンドラ内で実際にデータ読み出しが行われる（処理４６）。その実行タイミングは、通常、OS側で管理されることになるため、リアルタイム性を考慮する必要はない。
【００３２】
次に、図６を用いて、３個のデータ源から同時に発行された場合における、割り込み処理タイミングについて説明する。３個の割り込みタイミングは、説明の都合上、少しずらして記載されているが、ほほ同時に入力されていることとする（５０,５１,５２）。
【００３３】
５２,５３,５４はそのエッジ部の波形であり、このタイミングでＦＩＦＯバッファ回３−１、３−２、…、３−Ｎに割り込み情報を書き込む。割り込み情報は、書き込みとほぼ同時に読み出しされ、データ源ナンバの情報を付加した上で、割り込みサンプラ５の内のバッファに書き込みされる。５６は割り込みサンプラ５に入力された割り込み情報数を示すカウンタである。このカウンタは、通常、０になっているが、情報数は書き込みで＋１、読み出しで−１される。＋１するタイミングは７０で示され、−１するタイミングは７１で示される。上記書き込みと読み出しは対になっている必然性はない。この読み出し信号５７と同時にＭＰＵ７に対して割り込み要求信号１６が出力される。
【００３４】
５８は、５７の割り込み要求に対するＭＰＵ７のソフトウエア処理実行タイミングを示している。５９は、その処理完了をもって、割り込み処理完了応答を出力するタイミングを示している。
【００３５】
このように、ハードウエア処理による時間遅延は、一定で、かつ、無視できるオーダーであるが、ソフトウエアにおける処理時間は、割り込み処理内容に依存している。また、その用途も多種多様である。すなわち、ソフトウエアを介在させることで、データ源１−１、１−２、…、１−Ｎからの割り込み要求１１から割り込み処理完了応答１９までの時間のバラツキが大きく(最悪値の見積りができない)、時間見積りは不可能ということになる。
【００３６】
しかし、割り込み処理の本来の目的からも、所定のタイミングでデータを受け取りができればよいという観点から考慮しなければならない。この観点からして、データバッファ回路４−１、４−２、…、４−Ｎを用意することが上記時間ばらつきの対策となる。すなわち、データ源１−１、１−２、…、１−Ｎから出力されるデータをデータバッファ回路４−１、４−２、…、４−Ｎに書き込むまでの時間が問題であり、本発明では、該書き込み処理はハードウエア処理で実行すること、かつ、ウエイトに対する制約がないため、データ源１−１、１−２、…、１−Ｎからの出力レートと同じレートで書き込みが可能である。一方、データバッファ回路４−１、４−２、…、４−Ｎの読み出しは、すぐに読み出す必要はなく、データバッファ回路４−１、４−２、…、４−Ｎのメモリ装置に満杯にならない範囲で読み出せばよい。
【００３７】
このように、データバッファ回路４−１、４−２、…、４−Ｎは、処理のリアルタイム性に対する緩衝（データ用）としての役割を果たしている。同様に、データバッファ回路４−１、４−２、…、４−Ｎは、割り込み情報に対しては、割り込みサンプラ５の内のバッファが緩衝の役割を果たしている。
【００３８】
割り込み間隔に対する許容時間、及び、割り込み処理に対する許容時間は、本来、次の式（２）を満たすように設計するのが常識である。
2010257035.tif 000003
ここで、
2010257035.tif 000004
とする。任意のn(n=1, 2, …, N)に対して
2010257035.tif 000005
を満たす必要がなくなることが、緩衝の効果である。すなわち、式（３）から、式（２）に時間制約が緩和されたことになる。
【００３９】
緩衝の更なる効果として、瞬間的に式（２）が満たされない場合でも、式（４）、式（５）を満たしていれば、割り込みやデータの取りこぼしは生じないことが挙げられる。
2010257035.tif 000006
ここで、
【００４０】
【数１】
2010257035.tif 000007
【００４１】
とする。
【００４２】
本発明の手法により、割り込み処理に対するソフトウエアの処理時間の制約は、式（２）のみを満たせばよく、加えて、ＭＰＵ７の上で多重割り込み処理も発生しない。そのためソフトウエアのリエントラント性などの複雑な配慮は不要となり、ソフトウエアの開発、テストが大幅に容易になる。
【００４３】
特に、計測分野などでは、複数のセンサを取り付けでリアルタイムにそのデータをサンプリングするケースが非常に多く、本発明が効力を発揮しやすい分野でもある。
【符号の説明】
【００４４】
１−１〜１−Ｎ  データ源
２−１〜２−Ｎ  割り込み信号エッジ検出回路 
３−１〜３−Ｎ  ＦＩＦＯバッファ回路
４−１〜４−Ｎ  データバッファ回路
５  割り込みサンプラ回路
６  割り込みコントローラ
７  ＭＰＵ
８  メモリ装置
９  コントロールバス
１０  データバス
【図１】
2010257035.tif 000008
【図２】
2010257035.tif 000009
【図３】
2010257035.tif 000010
【図４】
2010257035.tif 000011
【図５】
2010257035.tif 000012
【図６】
2010257035.tif 000013