(57)【要約】１又は複数のプロセッサを備えたプロセッサシステムにおいて、デバイスからプロセッサへの１以上のイベントをキューへキューイングして通知するイベント通知方法は、キューに存在する未通知イベントの個数をカウンタ装置で管理し、デバイスとプロセッサからのカウンタ装置の更新タイミングの違いによるカウンタ装置の不整合な状態を一時的に許す。
2004046926.tif 000002
【特許請求の範囲】
【請求項１】
１又は複数のプロセッサを備えたプロセッサシステムにおいて、デバイスからプロセッサへの１以上のイベントをキューへキューイングして通知するイベント通知方法であって、
該キューに存在する未通知イベントの個数をカウンタ装置で管理し、
該デバイスと該プロセッサからの該カウンタ装置の更新タイミングの違いによる該カウンタ装置の不整合な状態を一時的に許すことを特徴とする、イベント通知方法。
【請求項２】
前記プロセッサへの通知条件を、未通知イベント数が閾値以上になった場合とすることを特徴とする、請求の範囲第１項記載のイベント通知方法。
【請求項３】
前記プロセッサへの通知条件を、未通知イベントが一定時間以上存在している場合とすることを特徴とする、請求の範囲第１項記載のイベント通知方法。
【請求項４】
前記通知条件が満たされなくなった時点から、一定時間前記プロセッサへの通知を抑止することを特徴とする、請求の範囲第２項又は第３項記載のイベント通知方法。
【請求項５】
キューを介して通知不能、或いは、通知する必要のないイベントが発生した場合に、前記デバイス内のエラーレジスタにエラー情報を格納して、イベントの発生を時系列的に格納することを特徴とする、請求の範囲第１項記載のイベント通知方法。
【請求項６】
１又は複数のプロセッサに対して１以上のイベントを発生してキューへキューイングすることで通知するデバイスであって、
該キューに存在する未通知イベントの個数をカウンタ装置に管理させる手段と、
該デバイスと該プロセッサからの該カウンタ装置の更新タイミングの違いによる該カウンタ装置の不整合な状態を一時的に許す手段とを備えたことを特徴とする、デバイス。
【請求項７】
前記プロセッサへの通知条件を、未通知イベント数が閾値以上になった場合とすることを特徴とする、請求の範囲第６項記載のデバイス。
【請求項８】
前記プロセッサへの通知条件を、未通知イベントが一定時間以上存在している場合とすることを特徴とする、請求の範囲第６項記載のデバイス。
【請求項９】
イベントの発生を通知するプロセッサを複数指定する手段と、
通知が完了する毎に通知先のプロセッサを変更する手段とを更に備えたことを特徴とする、請求の範囲第６項記載のデバイス。
【請求項１０】
前記カウンタ装置を更に備えたことを特徴とする、請求の範囲第６項〜第９項のいずれか１項記載のデバイス。
【請求項１１】
キューを介して通知不能、或いは、通知する必要のないイベントが発生した場合にエラー情報を格納するエラーレジスタを更に備え、
イベントの発生を時系列的に格納することを特徴とする、請求の範囲第６項記載のデバイス。
【請求項１２】
１又は複数のプロセッサと、
各プロセッサへの１以上のイベントをキューへキューイングして通知する１又は複数のデバイスと、
該キューに存在する未通知イベントの個数を管理するカウンタ装置とを備え、
該カウンタ装置は、該デバイスと各プロセッサからの該カウンタ装置の更新タイミングの違いによる該カウンタ装置の不整合な状態を一時的に許すことを特徴とする、プロセッサシステム。
【請求項１３】
各プロセッサへの通知条件を、未通知イベント数が閾値以上になった場合とすることを特徴とする、請求の範囲第１２項記載のプロセッサシステム。
【請求項１４】
各プロセッサへの通知条件を、未通知イベントが一定時間以上存在している場合とすることを特徴とする、請求の範囲第１２項記載のプロセッサシステム。
【請求項１５】
前記通知条件が満たされなくなった時点から、一定時間各プロセッサへの通知を抑止することを特徴とする、請求の範囲第１３項又は第１４項記載のプロセッサシステム。
【請求項１６】
前記デバイスは、キューを介して通知不能、或いは、通知する必要のないイベントが発生した場合に、エラー情報を格納してイベントの発生を時系列的に格納するエラーレジスタを有することを特徴とする、請求の範囲第１２項記載のプロセッサシステム。
【請求項１７】
前記カウンタ装置は、前記デバイス内に設けられていることを特徴とする、請求の範囲第１２項〜第１６項のいずれか１項記載のプロセッサシステム。
【発明の詳細な説明】
【技術分野】  本発明は、イベント通知方法、デバイス及びプロセッサシステムに係り、特に多数のイベントをプロセッサに通知するデバイスのイベント通知方法及びそのようなイベント通知方法を用いるデバイスとプロセッサシステムに関する。
【背景技術】  プロセッサシステム（計算機システム）内のデバイスにおいて発生したイベントの存在は、割り込みやプロセッサ上で動くプログラムによるポーリング等の手法によって通知される。イベントの存在を通知されたプロセッサは、デバイスのレジスタを読み書きする等のアクセスを行ってイベントに関する情報を取得し、発生したイベントに対応した処理をイベントハンドラで実行する。多数のイベントが発生する場合、イベントに関する情報取得に伴うバス帯域の圧迫や、イベントハンドラの起動オーバヘッドが問題になる。
例えば、特開平９−２０４３１１号公報には、デバイスとプロセッサに共有された共有メモリを用意し、この共有メモリを介して複数個のイベント情報を一度に受け渡すことによって上記問題を解決する第１の方法が提案されている。しかじし、特開平９−２０４３１１号公報には、共有メモリの資源管理については触れられていない。
又、複数のイベントの発生に対し、共有メモリ等の記憶装置にイベント情報を一時的に保存し、効率よくイベント処理を行うためには、長時間イベントが処理されずに放置されるコールド入出力（Ｃｏｌｄ  Ｉ／Ｏ）や、過度に割り込みが生じるホット入出力（Ｈｏｔ  Ｉ／Ｏ）の問題を対処しなければならない。
例えば、特開平７−２６２０２２号公報には、オペレーティングシステム（ＯＳ）の割り込み処理部分を改良し、デバイスからの割り込みを一時的に保持しておく第２の方法が提案されている。この第２の方法では、一定時間以上処理されないイベントがある場合にソフトウェア割り込みを発生させる機能（Ｃｏｌｄ  Ｉ／Ｏ対策）と、一定個数以上イベントが溜まった場合にソフトウェア割り込みを発生させる機能（Ｈｏｔ  Ｉ／Ｏ対策）とを追加している。
多数のイベントが発生するデバイスを持つプロセッサシステムにおいて、イベント情報の通知によるバス帯域の圧迫や、イベントハンドラの起動オーバヘッドを解決するためには、デバイスとプロセッサに共有されたメモリを介して、複数のイベント情報を一度に受け渡す第１の方法が有効である。ただし、オーバフロー対策のために、共有メモリの資源管理が必要になるという問題がある。
又、効率的にイベントを通知するためには、ＯＳの割り込み処理部に手を加える第２の方法が有効であるが、ＯＳに修正を加える作業にはコストがかかり、ＯＳ毎に修正が必要になるという問題がある。
他方、マルチプロセッサシステムにおいて、特定のプロセッサに処理が集中すると、マルチプロセッサシステム全体の性能低下をもたらすという問題がある。つまり、特定のプロセッサのみでイベントハンドラが起動されると、他のプロセッサは、そのイベントハンドラの完了を待たないと、処理が開始できないという状況になる。そこで、あるプロセッサでイベントハンドラを起動中に、他のプロセッサでもイベントハンドラが起動できる仕組みが望まれている。
更に、デバイスで発生するイベントの中には、キューを通じて通知不能なイベントがある。例えば、キューそのものが利用不可能な状態で発生したイベント等は、キューを通じて通知不能である。又、キューを通じて通知する必要のないイベントもある。例えば、デバイス内で誤り訂正が実行され影響を残さないイベント等である。このようなイベントの発生は、従来技術ではデバイスのレジスタに格納されているが、どの時点で発生したかを特定することができないという問題がある。
【発明の開示】
本発明は、上記の問題を解決した、新規、且つ、有用なイベント通知方法、デバイス及びプロセッサシステムを提供することを概括的目的とする。
本発明のより具体的な目的は、複数のイベント処理を１回の割り込みで処理するイベント通知をコストのかかるＯＳへの修正なしに実現でき、未通知イベント数の不整合な状態に対処可能であると共に、マルチプロセッサシステムの処理の負荷分散も可能とするイベント通知方法、デバイス及びプロセッサシステムを提供することにある。
本発明の他の目的は、１又は複数のプロセッサを備えたプロセッサシステムにおいて、デバイスからプロセッサへの１以上のイベントをキューへキューイングして通知するイベント通知方法であって、該キューに存在する未通知イベントの個数をカウンタ装置で管理し、該デバイスと該プロセッサからの該カウンタ装置の更新タイミングの違いによる該カウンタ装置の不整合な状態を一時的に許すことを特徴とするイベント通知方法を提供することにある。本発明になるイベント通知方法によれば、複数のイベント処理を１回の割り込みで処理するイベント通知をコストのかかるＯＳへの修正なしに実現でき、未通知イベント数の不整合な状態に対処可能であると共に、マルチプロセッサシステムに適用した場合の処理の負荷分散も可能となる。
本発明の更に他の目的は、１又は複数のプロセッサに対して１以上のイベントを発生してキューへキューイングすることで通知するデバイスであって、該キューに存在する未通知イベントの個数をカウンタ装置に管理させる手段と、該デバイスと該プロセッサからの該カウンタ装置の更新タイミングの違いによる該カウンタ装置の不整合な状態を一時的に許す手段とを備えたことを特徴とするデバイスを提供することにある。本発明になるデバイスによれば、複数のイベント処理を１回の割り込みで処理するイベント通知をコストのかかるＯＳへの修正なしに実現でき、未通知イベント数の不整合な状態に対処可能であると共に、マルチプロセッサシステムに適用した場合の処理の負荷分散も可能となる。
本発明の他の目的は、１又は複数のプロセッサと、各プロセッサへの１以上のイベントをキューへキューイングして通知する１又は複数のデバイスと、該キューに存在する未通知イベントの個数を管理するカウンタ装置とを備え、該カウンタ装置は、該デバイスと各プロセッサからの該カウンタ装置の更新タイミングの違いによる該カウンタ装置の不整合な状態を一時的に許すことを特徴とするプロセッサシステムを提供することにある。本発明になるプロセッサシステムによれば、複数のイベント処理を１回の割り込みで処理するイベント通知をコストのかかるＯＳへの修正なしに実現でき、未通知イベント数の不整合な状態に対処可能であると共に、マルチプロセッサシステムを実現する場合に処理の負荷分散が可能となる。
本発明の更に他の目的及び特長は、以下図面と共に述べる説明より明らかとなろう。
【図面の簡単な説明】  図１は、本発明になるプロセッサシステムの第１実施例を示すブロック図である。
図２は、デバイスのイベント通知機構を示すブロック図である。
図３は、ＤＭＡコントローラの動作を説明するフローチャートである。
図４は、未通知イベント数カウンタの動作を説明するフローチャートである。
図５は、割り込み及びタイマ制御装置の動作を説明するフローチャートである。
図６は、未通知イベント数カウンタのカウント値の変化を説明するタイムチャートである。
図７は、イベント発生によるカウント値増加処理済みイベント数通知によるカウント値減少、割り込み発生条件及び割り込み先更新の関係を示す図である。
図８は、図２に示す割り込み及びタイマ制御装置の回路図である。
図９は、本発明になるプロセッサシステムの第２実施例を示すブロック図である。
図１０は、本発明になるプロセッサシステムの第３実施例を示すブロック図である。
図１１は、本発明になるプロセッサシステムの第４実施例の要部を示すブロック図である。
【発明を実施するための最良の形態】  以下に、本発明になるイベント通知方法、デバイス及びプロセッサシステムの各実施例を、図面と共に説明する。
汎用性のある効率的なイベント情報通知のためには、共有メモリの資源管理を行い、共有メモリ上の未通知イベント情報の個数に応じた割り込み制御することが有効である。本明細書中、未通知イベントとは、キューに格納され、まだ取り出されていない状態のイベント情報のことを言う。そこで、共有メモリの資源管理と割り込み制御機能を、カウンタ装置に持たせることが考えられるが、この場合、カウンタ装置が共有メモリの未通知イベント数と空き領域を管理する必要があり、プロセッサが共有メモリから読み出したイベント情報の個数をカウンタ装置に通知する必要がある。しかし、共有メモリへのイベント情報書き込み、イベント発生による未通知イベント情報数の増加、プロセッサのイベント取り出しによる未通知イベント情報数の減少は、非同期に発生するため、カウンタ装置の保持する未通知イベント情報数が不整合な状態になることがある。本発明では、このようにカウンタ装置の保持する未通知イベント情報数が不整合になる問題を解決する。
つまり、イベント格納、未通知イベント数更新、イベントハンドラの処理には処理時間が伴うため、タイミングによりカウンタ装置の保持する未通知イベント情報数が不整合な状態が発生する。この問題を解決するために、本発明では、カウンタ装置が管理する未通知イベント数に、発生した総イベント数よりも通知された総イベント数が多くなる状態を許す。
未通知イベントを管理する方法としては、発生及び通知済みイベントの総数を格納する方法と、キューにある未通知イベント数をカウンタ装置で保持する方法が考えられる。
総数を格納する方法では、カウンタ装置が、イベント発生時に発生した総イベント数を＋１、プロセッサのイベント取り出し１つに対して通知済み総イベント数を＋１することによって管理する。不整合状態では、（発生した総イベント数）＜（通知済み総イベント数）となるが、これは一時的な状態であり、発生した総イベント数の更新によって正常な状態に戻せる。
未通知イベント数をカウンタで保持する方法では、イベント発生時にカウンタ装置のカウント値を＋１、プロセッサのイベント取り出し１つに対してカウント値を−１することによって管理する。不整合状態では、カウンタ装置のカウント値は負となるが、これは一時的な状態であり、イベント発生によるカウント値増加によって正常な状態に戻せる。
マルチプロセッサシステムにおける負荷集中に対しては、通知するプロセッサを事前に複数設定可能とし、通知完了時に適切なアルゴリズムによって通知先を変更する。又、複数のキューを持ち、イベントを処理するプロセッサをいくつかのブロックに分けることによって、並列性を持たせてスケーラビリティを上げる。
キューを通じて通知不能なイベント、或いは、通知する必要のないイベントについては、デバイス内等にそのようなイベントの詳細情報を格納し、そのようなイベントの発生を示すフラグを、キューに格納するイベント情報に付加する。これにより、イベントがどの時点で発生したものであるかを知ることができる。
図１は、本発明になるプロセッサシステムの第１実施例を示すブロック図である。プロセッサシステムの第１実施例は、本発明になるイベント通知方法及びデバイスの第１実施例を採用する。本実施例では、本発明がマルチプロセッサシステムに適用されている。
図１に示すプロセッサシステムには、デバイス１０１と、デバイス１０１からのイベントを処理する１以上のプロセッサ１０３、１０４、１０５と、カウンタ装置１０６と、共有メモリ１０７とが設けられている。システムバス２０２は、プロセッサ１０３、１０４、１０５とカウンタ装置１０６を接続する。デバイス１０１とプロセッサ１０３、１０４、１０５が、共有メモリ１０７内のあるキュー１０２を共有している。カウンタ装置１０６は、キュー１０２に存在するイベントの数を管理する。デバイス１０１は、キュー１０２へのイベント書き込みを行い、各プロセッサ１０３、１０４、１０５は、キュー１０２からのイベント読み出しを行う。デバイス１０１は、発生したイベントを発生順にキュー１０２に書き込み、各プロセッサ１０３、１０４、１０５は、キュー１０２から書き込まれた順、即ち、発生順にイベントを読み出して、対応するイベント処理を実行する。デバイス１０１は、書き込んだイベントの数をカウンタ装置１０６に通知する。カウンタ装置１０６は、キュー１０２上にイベントが存在することを通知するために、各プロセッサ１０３、１０４、１０５に割り込みを発生する。カウンタ装置１０６が管理する未通知イベント数を更新するために、各プロセッサ１０３、１０４、１０５は、通知済みのイベントの個数を、カウンタ装置１０６のレジスタに書く等の方法によって通知する。
図２は、デバイス１０１のイベント通知機構を示すブロック図である。図２では、説明の便宜上、キュー１０２はデバイス１０１外の共有メモリ１０７（又は主記憶上等）に存在し、イベントはディレクトメモリアクセス（ＤＭＡ）コントローラ２０５によってキュー１０２に書き込まれるものとする。デバイス１０１は、イベント２０３と、キューへの書き込みアドレスレジスタ２０４と、ＤＭＡコントローラ２０５からなる。カウンタ装置１０６は、未通知イベント数カウンタ２０６と、閾値レジスタ２０７と、タイマ２０８と、タイムアウトレジスタ２０９と、通知済イベント数レジスタ２１０と、割り込み及びタイマ制御装置２１１と、割り込みコントローラ２１２からなる。
カウンタ装置１０６は、デバイス１０１内に設けられていても良い。この場合、デバイス１０１はＰＣＩ等の拡張基板からなり、カウンタ装置１０６はこの拡張基板上に設けられる。
イベント２０３において、発生したイベント２０３に対応するキュー１０２に格納するデータが生成される。キュー１０２の次の書き込みアドレスは、キュー１０２への書き込みアドレスレジスタ２０４に保持されている。ＤＭＡコントローラ２０５は、イベント２０３をキュー１０２に書き込む。本実施例においては、未通知のイベント数は、負の値をとりうる１つの未通知イベント数カウンタ（レジスタ）２０６に保持される。閾値レジスタ２０７は、外部から変更可能な設定値を保持するもので、具体的には、割り込みを発生するイベント２０３の個数の閾値を保持する。タイマ２０８は、割り込み発生までの時間を計測する。タイムアウトレジスタ２０９は、タイマ２０８による割り込み発生までの時間を保持する。割り込み及びタイマ制御装置２１１は、未通知イベント数カウンタ２０６、閾値レジスタ２０７及びタイマ２０８の値を比較し、比較結果に基づいてタイマ２０８の開始と停止及び割り込み発生を制御する。割り込みコントローラ２１２は、複数個の割り込み先を保持し、割り込み発生時には現在の割り込み先に割り込みを発生し、割り込み発生が停止した時には割り込み先を更新する。通知済みイベント数レジスタ２１０は、プロセッサ１０３、１０４、１０５が通知済みイベント数を書き込むためのものである。
デバイス１０１内でイベント２０３が発生すると、イベント２０３に対応するデータが作成され、キュー１０２の書き込みアドレスレジスタ２０４の値と共にＤＭＡコントローラ２０５に渡される。ＤＭＡコントローラ２０５は、キュー１０２へイベント２０９を書き込む。ＤＭＡが完了すると、未通知イベント数カウンタ２０６のカウント値はインクリメント（＋１）され、キュー１０２への書き込みアドレスは次の書き込みアドレスに更新される。プロセッサ１０３、１０４又は１０５で通知済みとなったイベントの個数は、通知済みイベント数レジスタ２１０に書き込まれ、未通知イベント数カウンタ２０６のカウント値から減算される。割り込み及びタイマ制御装置２１１は、未通知イベント数カウンタ２０６のカウント値、閾値レジスタ２０７及びタイマ２０８を参照し、割り込み発生の制御とタイマ２０８の設定を行う。割り込みコントローラ２１２は、割り込み及びタイマ制御装置２１１からの割り込み制御が未発生から発生に遷移した時に、割り込み先のプロセッサ１０３、１０４又は１０５に対し割り込みを発生し、割り込み制御が発生から未発生に遷移したときに割り込みを停止し、割り込み先のプロセッサ１０３、１０４又は１０５からラウンドロビン等のアルゴリズム（方式）で次の割り込み先を決定する。
このように、未通知イベント数が変更されて通知が完了してから、次にプロセッサ１０３、１０４又は１０５への通知を行うまでの期間に、ラウンドロビン等の適切なアルゴリズムにより通知先を変更することができると共に、特定のプロセッサに負荷が集中しないようにすることができる。尚、イベントを通知されるプロセッサ１０３、１０４又は１０５は、キュー１０２からイベントを取り出す際の排他処理を行えば良い。
図３、図４及び図５は、夫々未通知イベント数カウンタ２０６の動作と割り込み発生条件を説明するフローチャートである。
図３は、ＤＭＡコントローラ２０５の動作を説明するフローチャートである。図３中、ステップＳ３０１においてイベント２０３が発生すると、ステップＳ３０２では、ＤＭＡコントローラ２０５がキュー１０２へのイベント２０３の書き込みを行う。イベント２０３の書き込みが完了すると、ステップＳ３０３では、ＤＭＡコントローラ２０５が未通知イベント数カウンタ２０６のカウント値をインクリメント（＋１）し、ステップＳ３０４において処理は終了する。
図４は、未通知イベント数カウンタ２０６の動作を説明するフローチャートである。図４中、ステップＳ３１１においてプロセッサ１０３、１０４又は１０５がイベント処理を実行すると、イベント通知数をデバイス１０１に通知するために、プロセッサ１０３、１０４又は１０５は通知済みイベント数レジスタ２１０に通知されたイベント数を書き込む。ステップＳ３１２では、未通知イベント数カウンタ２０６が、未通知イベント数カウンタ２０６のカウント値からイベント数レジスタ２１０に書き込まれた通知イベント数を減算し、ステップＳ３１３において処理は終了する。
図５は、割り込み及びタイマ制御装置２１１の動作を説明するフローチャートである。図５中、割り込み及びタイマ制御装置２１１は、ステップＳ３２１において、図３又は図４において未通知イベント数カウンタ２０６のカウント値が加減算されて更新されたことを検出すると、ステップＳ３２２において、未通知イベント数カウンタ２０６のカウント値と閾値レジスタ２０７の閾値とを比較してカウント値が閾値以上であるか否かを判定する。ステップＳ３２２の判定結果がＹＥＳであると、処理はステップＳ３２４へ進む。他方、割り込み及びタイマ制御装置２１１は、ステップＳ３２３において、未通知イベント数カウンタ２０６のカウント値が１以上、且つ、閾値未満に変化した時点からその状態が継続している時間が一定時間に達したことを、タイムアウトレジスタ２０９に保持された時間に基づくタイマ２０８のタイムアウトにより検出すると、処理はステップＳ３２４へ進む。ステップＳ３２４は、タイマ２０８を停止し、割り込みが発生したことを割り込みコントローラ２１２へ通知する。
ステップＳ３２５は、加減算された未通知イベント数カウンタ２０６のカウント値が、１以上、且つ、閾値未満であるか否かを判定する。ステップＳ３２５の判定結果がＹＥＳであると、ステップＳ３２６は、タイマ２０８が停止状態なら開始し、動作状態なら継続する。ステップＳ３２７は、更新前の未通知イベント数カウンタ２０６のカウント値が閾値以上であるか否かを判定し、判定結果がＮＯであると、処理は終了する。ステップＳ３２７の判定結果がＹＥＳであると、ステップＳ３２８は、割り込み未発生を割り込みコントローラ２１２に通知し、割り込みを停止する。又、ステップＳ３２９は、割り込み先を更新し、処理は終了する。
他方、ステップＳ３２５の判定結果がＮＯであると、ステップＳ３３１は、更新前の未通知イベント数カウンタ２０６のカウント値が１以上、且つ、閾値未満であるか否かを判定する。ステップＳ３３１の判定結果がＹＥＳであると、ステップＳ３３２は、タイマ２０８を停止する。ステップＳ３３１の判定結果がＮＯであると、ステップＳ３３３は、更新前の未通知イベント数カウンタ２０６のカウント値が閾値以上であるか否かを判定し、判定結果がＮＯであると、処理は終了する。ステップＳ３３３の判定結果がＹＥＳであると、ステップＳ３２８は、割り込み未発生を割り込みコントローラ２１２に通知し、割り込みを停止する。又、ステップＳ３２９は、割り込み先を更新し、処理は終了する。
次に、カウンタ装置１０６が保持する未通知イベント数の情報が不整合な状態となる過程を、図６と共に説明する。図６は、未通知イベント数カウンタ２０６のカウント値の変化を説明するタイムチャートである。以下の説明では、共有メモリ１０７上にキュー１０２を作成し、そのキュー１０２に対してデバイス１０１がイベント情報を書き込み、そのキュー１０２からプロセッサ１０３、１０４又は１０５がイベント情報を取り出すものとする。カウンタ装置１０６は、未通知イベント数を格納している。
マルチプロセッサシステム等の実計算機システムにおいては、イベント２０３のキュー１０２への格納は、キュー１０２を実装した共有メモリ１０７への書き込みで開始し、書き込みの完了通知を受けるまでの処理となる。その後、未通知イベント数を更新する処理を行う。共有メモリ１０７への書き込みを開始し、書き込みの完了通知を受け取るまでには一定の時間がかかり、書き込み完了通知を受け取ってから、未通知イベント数を更新するまでにも一定の時間がかかる。又、割り込み等（以下、プロセッサ１０３、１０４又は１０５への通知とも言う）によって起動されたイベントハンドラが、イベント処理を実行し、取り出したイベント数をカウンタ装置１０６に通知するタイミングは様々である。
図６では、説明の便宜上、デバイス１０１において２つのイベント４０７、４１１が発生し、キュー１０２へのイベント書き込みと書き込みの完了通知４０８、４１２、未通知イベント数更新４０９、４１４が夫々あるものとする。又、プロセッサ１０３、１０４又は１０５においてイベントハンドラ処理４０５及び通知済みイベント数の通知４１３を行うものとする。
イベント４０７により割り込み４１０が発生すると、イベントハンドラ４０５が起動される。イベントハンドラ４０５の起動中に、更にイベント４１１が発生し、キュー１０２に書き込まれる。イベントハンドラ４０５は、キュー１０２からのイベント取り出し４１５を行うが、１つ目のイベント処理後、キュー１０２には２つ目のイベントが存在するので、合計２つのイベント４０７、４１１を処理する。このため、イベント４１１の書き込み完了通知４１２がデバイス１０１に届き、未通知イベント数更新処理４１４の実行完了前に、イベントハンドラ４０５からの通知済みイベント数通知４１３が到着し、（未通知イベント数）＜（通知済みイベント数）、或いは、（発生した総イベント数）＜（通知済み総イベント数）というあり得ない状態が発生する（未通知イベント数４０６の「−１」の時間帯）。このような状態を想定しないプロセッサシステムでは、カウンタ装置１０６のアンダフローによって誤動作が引き起こされてしまう。
しかし、本実施例では、イベント４０７によって、キュー１０２へのイベント書き込みと書き込みの完了通知４０８、未通知イベント数更新４０９が行われ、未通知イベント数４０６が０から１へ増加する。従って、例えば閾値が１であれば、割り込み４１０が発生する。割り込み４１０を受けて、プロセッサ１０３、１０４又は１０５上で、イベントハンドラ４０５が起動される。イベントハンドラ４０５起動中にさらに、イベント４１１が発生し、キュー１０２への書き込み４１２が行われる。イベントハンドラ４０５は、キュー１０２からイベント取り出し４１５を行うが、１つ目のイベント処理後、キュー１０２には２つ目のイベントが存在するので、合計２つのイベント４０７、４１１を処理する。イベントの書き込み完了通知４１２がデバイス１０１に届き、未通知イベント数更新処理４１４の実行完了前に、イベントハンドラ４０５からの通知済みイベント数通知４１３が到着する。未通知イベント数４０６は、１から−１に変化する。イベント４１１の未通知イベント数更新処理が終了し、未通知イベント数は＋１され、−１から０に変化する。
図６において、未通知イベント数４０６は、発生した総イベント数から通知済み総イベント数を引いた値、或いは、未通知イベント数のカウント値を表している。発生した総イベント数よりも通知された総イベント数が多くなる状態を、図６ではマイナス値で表現することにより、一時的に−１というあり得ない値となるが、未通知イベント数更新４１４によって、正常な状態に復帰する。
共有メモリ１０７へのイベント情報書き込み、イベント発生による未通知イベント情報数の増加、プロセッサ１０３、１０４又は１０５のイベント取り出しによる未通知イベント情報数の減少は、非同期に発生するため、カウンタ装置１０６の保持する未通知イベント情報数が不整合な状態になることがあるが、本実施例では、このようにカウンタ装置１０６の保持する未通知イベント情報数が不整合になる問題を解決することができる。
図７は、イベント発生によるカウント値増加、処理済みイベント数通知によるカウント値減少、割り込み発生条件及び割り込み先更新の関係を示す図である。未通知イベント数カウンタ２０６のカウント値は、負の値、零（０）、１以上閾値未満、閾値以上の４つの状態をとる。更新後のカウント値が閾値以上となる場合には、割り込みが発生する。更新後のカウント値が１以上閾値未満の場合には、タイマ２０８を開始する。更新前が閾値以上で、更新後に閾値以上でなくなる場合には、割り込みが停止し、割り込み先が更新される。更新前が１以上閾値未満で、更新後に１以上閾値未満でなくなる場合には、タイマ２０８が停止される。
図８は、図２に示す割り込み及びタイマ制御装置２１１の回路図である。説明の便宜上、割り込み及びタイマ制御装置２１１の周辺モジュールとして、未通知イベント数カウンタ２０６が符号付の整数レジスタ、閾値レジスタ２０７が正の整数を保存するレジスタで構成されているものとする。又、タイマ２０８は、一定時間毎に値を減らすダウンカウンタで構成され、タイマ２０８の初期値である正の値がタイムアウトレジスタ２０９に保存されているものとする。アンド（ＡＮＤ）回路６０３、６０４には、未通知イベント数カウンタ２０６の出力のうち、未通知イベント数の負符号フラグ（１ビット）が入力される。
タイマ２０８は、タイマ開始信号６５１が０から１に変化したときにタイムアウトレジスタ２０９から初期値を読み込み、タイマ値のダウンカウントを開始し、タイマ値が０になると減少が停止する。タイマ停止信号６５１が０から１に変化すると、タイマ２０８の動作中、停止中に関わらず、タイマ値が初期値にセットされ、タイマ２０８が停止する。タイマ停止信号６５２が、タイマ開始信号６５１よりも優先される。割り込みコントローラ２１２は、割り込み開始信号６６１が０から１に変化したときに割り込みを開始し、割り込み停止信号６６２が０から１に変化したときに割り込みを停止し、必要に応じて割り込み先を変化させる。割り込み及びタイマ制御装置２１１の外部入力としては、未通知イベント数カウンタ２０６から符号付の整数値、閾値レジスタ２０７から正の整数値、及びタイマ２０８から現在のタイマ値が入力される。割り込み及びタイマ制御装置２１１の外部出力としては、タイマ２０８へのタイマ開始信号６５１及びタイマ停止信号６５２、割り込みコントローラ２１２への割り込み開始信号６６１及び割り込み停止信号６６２が出力される。
図８において、比較演算器６０１は、未通知イベント数カウンタ２０６のカウント値と閾値レジスタ２０７の閾値の比較を行う。カウント値が閾値以上であれば、比較演算器６０１の出力は１となる。カウント値が負数でなく、出力が１ならば、アンド（ＡＮＤ）回路６０３の出力は１となり、閾値以上となる。他方、オア（ＯＲ）回路６０２の出力１によってカウント値が０以外であり、カウント値が負でなく、且つ、閾値より小さい場合には、１以上閾値未満でありＡＮＤ回路６０４の出力が１となる。フリップフロップ（ＦＦ）回路６０５、６０６は、夫々閾値以上、１以上閾値未満の前状態を格納している。ＡＮＤ回路６０７，６０８により、閾値より小から閾値以上への変化（割り込み開始）、閾値以上からそれ以外への変化（割り込み停止）が検出される。ＡＮＤ回路６０９、６１０により、１以上閾値未満以外から１以上閾値未満への変化（タイマ開始）、１以上閾値未満からそれ以外への変化（タイマ停止）が検出される。又、タイムアウトは、ノア（ＮＯＲ）回路６１１により検出され、ＯＲ回路６１２により閾値以上の割り込みと共に割り込みコントローラ２１２へ出力される。
図９は、本発明になるプロセッサシステムの第２実施例を示すブロック図である。プロセッサシステムの第２実施例は、本発明になるイベント通知方法及びデバイスの第２実施例を採用する。図９では、プロセッサが１つしか図示されていないが、図１に示す第１実施例のように、複数のプロセッサを設けても良いことは言うまでもない。図９中、図１と同一部分には同一符号を付し、その説明は省略する。
本実施例では、カウンタ装置７０６にイベント書き込み機能を付加し、デバイス７０１は発生したイベントのみをカウンタ装置７０６に通知する。つまり、デバイス７０１は、図２に示すイベント２０３からなる。他方、カウンタ装置７０６は、図２に示すキューへの書き込みアドレスレジスタ２０４と、ＤＭＡコントローラ２０５と、未通知イベント数カウンタ２０６と、閾値レジスタ２０７と、タイマ２０８と、タイムアウトレジスタ２０９と、通知済イベント数レジスタ２１０と、割り込み及びタイマ制御装置２１１と、割り込みコントローラ２１２からなる。
カウンタ装置７０６は、デバイス７０１内に設けられていても良い。この場合、デバイス７０１はＰＣＩ等の拡張基板からなり、カウンタ装置７０６はこの拡張基板上に設けられる。
図１０は、本発明になるプロセッサシステムの第３実施例を示すブロック図である。プロセッサシステムの第３実施例は、本発明になるイベント通知方法及びデバイスの第３実施例を採用する。図１０では、プロセッサが１つしか図示されていないが、図１に示す第１実施例のように、複数のプロセッサを設けても良いことは言うまでもない。図１０中、図１と同一部分には同一符号を付し、その説明は省略する。
本実施例では、カウンタ装置８０６は、図１０のように複数のデバイス８０１−１、８０１−２、８０１−３をイベントの入力先として持つ。つまり、各デバイス８０１−１、８０１−２、８０１−３は、図２に示すイベント２０３からなる。他方、カウンタ装置８０６は、図２に示すキューへの書き込みアドレスレジスタ２０４と、ＤＭＡコントローラ２０５と、未通知イベント数カウンタ２０６と、閾値レジスタ２０７と、タイマ２０８と、タイムアウトレジスタ２０９と、通知済イベント数レジスタ２１０と、割り込み及びタイマ制御装置２１１と、割り込みコントローラ２１２からなる。
カウンタ装置８０６は、各デバイス８０１−１〜８０１−３内に設けられていても良い。この場合、デバイス８０１−１〜８０１−３は夫々ＰＣＩ等の拡張基板からなり、カウンタ装置８０６は各拡張基板上に設けられる。
上記第１〜第３実施例の変形例として、拡張基板等からなるデバイス１０１、７０１、８０１−１〜８０１−３内に更にキュー１０２を持つ構成であっても良い。この場合、１つのデバイスに複数個のキューを持たせ、夫々で独立したイベントを扱い、イベントを通知するプロセッサを分離することができるので、プロセッサシステムの並列性を向上することができる。
図１１は、本発明になるプロセッサシステムの第４実施例の要部を示すブロック図である。プロセッサシステムの第４実施例は、本発明になるイベント通知方法及びデバイスの第４実施例を採用する。図１１中、図１と同一部分には同一符号を付し、その説明は省略する。
本実施例では、キュー１０２に格納するイベント２０３のデータの１ビット９０１を、デバイス１０１のエラーレジスタ９０２の有効情報フラグとして使用する。エラーレジスタ９０２には、ＤＭＡエラー９０２−１、キューオーバーラン９０２−２、内部ＲＡＭパリティエラー９０２−３等のエラー情報が保持されており、イベント２０３が発生した場合に対応するビットがセットされる。
プロセッサ１０３、１０４又は１０５は、キュー１０２のイベント２０３を読み出して、有効情報フラグ９０１がセットされている場合にはエラーレジスタ９０２の内容をチェックする。これにより、キューオーバーラン９０２−２等により１又は複数のイベントが失われていると、これを検出することができる。又、エラーイベントがキュー１０２から読み出された場合には、それ以前に発生したキューで通知されなかったイベントのエラー情報がエラーレジスタ９０２に格納されている可能性があるので、このエラー情報を障害発生時の解析等の際に有効利用することができる。
本実施例は、上記第２実施例又は上記第３実施例にも適用することが可能であることは、言うまでもない。
このように、本実施例によれば、キューを介して通知不能、或いは、通知する必要のないイベントが発生した場合に、エラーレジスタ９０２にエラー情報を格納しておくことで、イベントの発生を時系列的に格納しておくことができる。従って、イベントを取り出したプロセッサは、イベントに付けられたエラーレジスタフラグのエラー情報に基づいて、発生したイベントを、未通知のイベントを含めて取得することができる。又、障害解析時等に、どのタイミングでイベントが発生したかを明確に知ることができる。
尚、本発明は、上記実施例に限定されるものではなく、本発明の範囲内で種々の改良及び変更が可能であることは、言うまでもない。
【図１】
2004046926.tif 000003
【図２】
2004046926.tif 000004
【図３】
2004046926.tif 000005
【図４】
2004046926.tif 000006
【図５】
2004046926.tif 000007
【図６】
2004046926.tif 000008
【図７】
2004046926.tif 000009
【図８】
2004046926.tif 000010
【図９】
2004046926.tif 000011
【図１０】
2004046926.tif 000012
【図１１】
2004046926.tif 000013
【国際調査報告】
2004046926.tif 000014
2004046926.tif 000015
2004046926.tif 000016
2004046926.tif 000017