(57)【特許請求の範囲】
【請求項１】
ＣＰＵに通信可能なデバイスに設定される応答時間の整数倍または整数分の１の値であり、前記デバイスからの外部割込通知に対応する所定の閾値を記憶する記憶部と、
前記外部割込通知を受け付けた時刻から、前記ＣＰＵからのディスパッチ通知を受け付けた時刻までの時間を測定する測定部と、
前記所定の閾値と前記測定部によって測定された時間とを比較する比較部と、
前記比較部による比較結果を前記ＣＰＵへ出力する出力部と、
を備えることを特徴とする割込監視装置。
【請求項２】
前記記憶部は、
前記所定の閾値を前記外部割込通知ごとに記憶し、
前記測定部は、
外部割込通知群のうちいずれかの外部割込通知を受け付けた時刻から、前記ＣＰＵからのディスパッチ通知を受け付けた時刻までの時間を測定し、
前記比較部は、
前記いずれかの外部割込通知に対応する所定の閾値と前記測定部によって測定された時間とを比較する、
ことを特徴とする請求項１に記載の割込監視装置。
【請求項３】
スレッド群を制御する制御装置と前記制御装置に通信可能な割込監視装置と前記制御装置に通信可能なデバイスとを含むコンピュータシステムであって、
前記割込監視装置は、
前記デバイスに設定される応答時間の整数倍または整数分の１の値であり、前記デバイスからの外部割込通知に対応する所定の閾値を記憶する記憶部と、
前記外部割込通知を受け付けた時刻から、前記制御装置からのディスパッチ通知を受け付けた時刻までの時間を測定する測定部と、
前記所定の閾値と前記測定部によって測定された時間とを比較する比較部と、
前記比較部による比較結果を前記制御装置へ出力する出力部と、
を備え、
前記制御装置は、
前記制御装置で実行中の処理が前記スレッド群のうちの第１のスレッドから前記外部割込通知に対応する第２のスレッドを実行させる割込ハンドラに切り替わった場合、前記割込監視装置に前記ディスパッチ通知を送信する送信部と、
前記割込監視装置から前記比較結果を受け付けた場合、前記第１のスレッドの優先度を制御する制御部と、
を備えることを特徴とするコンピュータシステム。
【請求項４】
前記制御部は、
前記比較結果として前記測定された時間が前記所定の閾値より大きいことを前記割込監視装置から受け付けた場合、前記第１のスレッドの優先度を低下させる、
ことを特徴とする請求項３に記載のコンピュータシステム。
【請求項５】
前記制御部は、
前記比較結果として前記測定された時間が前記所定の閾値より小さいことを前記割込監視装置から受け付けた場合、前記第１のスレッドの優先度を復帰させる、
ことを特徴とする請求項３に記載のコンピュータシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、割込を監視する割込監視装置、およびコンピュータシステムに関する。
【背景技術】
【０００２】
従来から、携帯端末などの組込システムにおいては、リアルタイム制御が可能なＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）として、リアルタイムＯＳが採用されていた。しかし、近年、開発コストの点で有利な汎用ＯＳが採用される場合も増加してきている。汎用ＯＳは、リアルタイム制御を行わないため、割込応答が保証されない。
【０００３】
割込応答を保証する技術として、たとえば、割込通知から、割込ハンドラ終了までの時間を監視し、応答の遅いスレッドの処理優先度を上げるものがある（たとえば、下記特許文献１を参照。）。なお、スレッドとは、プログラムの実行単位である。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開昭５９−１６１７３８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、上述した従来技術において、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）の負荷量が増大すると、割込処理の応答時間の監視そのものが遅れてしまい、リアルタイム処理が破たんするという問題があった。また、システム内で既に最高の優先度に設定されているスレッドが遅延した場合、優先度をさらに上げることができず、リアルタイム処理が破たんするという問題があった。
【０００６】
本発明は、上述した従来技術による問題点を解消するため、リアルタイム処理を保証する割込監視装置、およびコンピュータシステムを提供することを目的とする。
【課題を解決するための手段】
【０００７】
上述した課題を解決し、目的を達成するため、本発明の一側面によれば、外部割込通知に対応する所定の閾値を記憶し、外部割込通知を受け付けた時刻から、ＣＰＵからのディスパッチ通知を受け付けた時刻までの時間を測定し、所定の閾値と測定部によって測定された時間とを比較し、比較結果をＣＰＵへ出力する割込監視装置が提案される。
【０００８】
また、本発明の他の側面によれば、スレッド群を制御する制御装置と制御装置に通信可能な割込監視装置と制御装置に通信可能なデバイスとを含むコンピュータシステムであって、割込監視装置が、デバイスからの外部割込通知に対応する所定の閾値を記憶し、外部割込通知を受け付けた時刻から、制御装置からのディスパッチ通知を受け付けた時刻までの時間を測定し、所定の閾値と測定部によって測定された時間とを比較し、比較結果を制御装置へ出力し、制御装置が、制御装置で実行中の処理がスレッド群のうちの第１のスレッドから外部割込通知に対応する第２のスレッドを実行させる割込ハンドラに切り替わった場合、割込監視装置にディスパッチ通知を送信し、割込監視装置から比較結果を受け付けた場合、第１のスレッドの優先度を制御するコンピュータシステムが提案される。
【発明の効果】
【０００９】
本発明の一側面によれば、リアルタイム処理の保証を図ることができるという効果を奏する。
【図面の簡単な説明】
【００１０】
【図１】図１は、コンピュータシステムの動作例を示す説明図である。
【図２】図２は、コンピュータシステムのハードウェア例を示すブロック図である。
【図３】図３は、割込監視装置のハードウェア例を示す説明図である。
【図４】図４は、コンピュータシステムの機能例を示すブロック図である。
【図５】図５は、閾値レジスタの設定例を示す説明図である。
【図６】図６は、割込監視装置の動作におけるタイムチャート例を示す説明図である。
【図７】図７は、割込監視処理の処理例を示すフローチャートである。
【図８】図８は、本実施の形態にかかるコンピュータシステムの適用例を示す説明図である。
【発明を実施するための形態】
【００１１】
以下に添付図面を参照して、開示の割込監視装置、およびコンピュータシステムの実施の形態を詳細に説明する。
【００１２】
図１は、コンピュータシステムの動作例を示す説明図である。コンピュータシステム１００は、メモリ等の記憶領域から実行されたスレッド群を制御するＣＰＵ１０１と、割込監視装置１０２を含む。ＣＰＵ１０１は、コンピュータシステム１００を制御するＯＳとして、汎用ＯＳを採用しており、スレッド群として、スレッド１、スレッド２を実行する。スレッド１は、割込禁止区間が設定されているか、または高優先度に設定されたスレッドである。スレッド２は、外部割込通知に対応する処理を実行するスレッドである。なお、外部割込通知とは、コンピュータシステム１００内のデバイスからの割込信号のことである。割込監視装置１０２は、外部割込通知からＣＰＵのディスパッチ通知までの時間を測定し、割込処理の遅延を検出する装置である。
【００１３】
時刻ｔ０にて、ＣＰＵ１０１と、割込監視装置１０２は、デバイスからの外部割込通知を受け付ける。時刻ｔ０では、ＣＰＵ１０１は、スレッド１を実行中である。汎用ＯＳは、優先度に基づいたスケジューリングに従ってスレッドを切り替えており、スレッドをいつ切り替えるかという制御は行っていない。また、外部割込通知を受け付けた割込監視装置１０２は、測定を開始する。
【００１４】
時刻ｔ１にて、ＣＰＵ１０１で実行中のスレッド１から外部割込通知に対応するスレッド２を実行させる割込ハンドラ１０３に切り替わった場合、ＣＰＵ１０１は、ディスパッチ通知を割込監視装置１０２に送信する。ディスパッチ通知を受け付けた割込監視装置１０２は、外部割込通知を受け付けた時刻ｔ０から現在の時刻となるｔ１までの時間と、デバイスが許容する応答時間となる所定の閾値を比較する。図１の例では、時刻ｔ０から時刻ｔ１までの時間が所定の閾値より大きいため、割込監視装置１０２は、アラームを出力する。
【００１５】
これにより、ＣＰＵ１０１は、デバイスが許容する応答時間を超えた場合にアラームを受け付けるため、スレッド１の優先度を下げることで、リアルタイム処理の保証ができる。以下、図２〜図７を用いて、割込監視装置１０２の詳細について説明を行う。
【００１６】
（コンピュータシステム１００のハードウェア）
図２は、コンピュータシステムのハードウェア例を示すブロック図である。本実施の形態におけるコンピュータシステム１００は、携帯電話などの携帯端末を想定している。図２において、コンピュータシステム１００は、ＣＰＵ１０１と、ＲＯＭ（Ｒｅａｄ‐Ｏｎｌｙ  Ｍｅｍｏｒｙ）２０２と、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）２０３と、を含む。
【００１７】
また、コンピュータシステム１００は、フラッシュＲＯＭ２０４と、フラッシュＲＯＭコントローラ２０５と、フラッシュＲＯＭ２０６と、を含む。また、コンピュータシステム１００は、ユーザやその他の機器との入出力装置として、Ｉ／Ｆ（Ｉｎｔｅｒｆａｃｅ）２０７と、ディスプレイ２０８と、キーボード２０９と、を含む。また、コンピュータシステム１００は、デバイス２１０と、デバイス２１１と、割込コントローラ２１２と、割込監視装置１０２と、を含む。また、各部はバス２０１によってそれぞれ接続されている。
【００１８】
ここで、ＣＰＵ１０１は、コンピュータシステム１００の全体の制御を司る。また、コンピュータシステム１００は、複数のＣＰＵ１０１を有するマルチコアプロセッサシステムであってもよい。マルチコアプロセッサとは、コアが複数搭載されたプロセッサである。コアが複数搭載されていれば、複数のコアが搭載された単一のプロセッサでもよく、シングルコアのプロセッサが並列されているプロセッサ群でもよい。
【００１９】
具体的に、ＣＰＵ１０１は、ＯＳ２３１を実行して、コンピュータシステム１００の全体の制御を司る。なお、ＯＳ２３１は、リアルタイム処理を考慮していない、汎用ＯＳを想定している。ＯＳ２３１には、スレッドをＣＰＵに割り当てる機能を有するスケジューラ２３２を含む。また、ＣＰＵ１０１は、ディスパッチ通知信号線２２３とアラーム信号線２２４を介して割込監視装置１０２と接続している。ＣＰＵ１０１は、ディスパッチが発生するたびに、ディスパッチ通知信号線２２３を介して、ディスパッチ通知を送信する。
【００２０】
ＲＯＭ２０２は、ブートプログラムなどのプログラムを記憶している。ＲＡＭ２０３は、ＣＰＵ１０１のワークエリアとして使用される。フラッシュＲＯＭ２０４は、読出し速度が高速なフラッシュＲＯＭであり、たとえば、ＮＯＲ型フラッシュメモリである。たとえば、フラッシュＲＯＭ２０４は、ＯＳ２３１などのシステムソフトウェアやアプリケーションソフトウェアなどを記憶している。たとえば、ＯＳ２３１を更新する場合、コンピュータシステム１００は、Ｉ／Ｆ２０７によって新しいＯＳ２３１を受信し、フラッシュＲＯＭ２０４に格納されている古いＯＳ２３１を、受信した新しいＯＳ２３１に更新する。
【００２１】
フラッシュＲＯＭコントローラ２０５は、ＣＰＵ１０１の制御に従ってフラッシュＲＯＭ２０６に対するデータのリード／ライトを制御する。フラッシュＲＯＭ２０６は、データの保存、運搬を主に目的としたフラッシュＲＯＭであり、たとえば、ＮＡＮＤ型フラッシュメモリである。フラッシュＲＯＭ２０６は、フラッシュＲＯＭコントローラ２０５の制御で書き込まれたデータを記憶する。データの具体例としては、コンピュータシステム１００を使用するユーザがＩ／Ｆ２０７を通して取得した画像データ、映像データなどである。フラッシュＲＯＭ２０６は、たとえば、メモリカード、ＳＤカードなどを採用することができる。
【００２２】
Ｉ／Ｆ２０７は、通信回線を通じてＬＡＮ、ＷＡＮ（Ｗｉｄｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、インターネットなどのネットワークに接続され、ネットワークを介して他の装置に接続される。そして、Ｉ／Ｆ２０７は、ネットワークと内部のインターフェースを司り、外部装置からのデータの入出力を制御する。Ｉ／Ｆ２０７には、たとえばモデムやＬＡＮアダプタなどを採用することができる。
【００２３】
ディスプレイ２０８は、カーソル、アイコンあるいはツールボックスを始め、文書、画像、機能情報などのデータを表示する。ディスプレイ２０８は、たとえば、ＴＦＴ（Ｔｈｉｎ  Ｆｉｌｍ  Ｔｒａｎｓｉｓｔｏｒ）液晶ディスプレイなどを採用することができる。
【００２４】
キーボード２０９は、数字、各種指示などの入力のためのキーを有し、データの入力を行う。また、キーボード２０９は、タッチパネル式の入力パッドやテンキーなどであってもよい。
【００２５】
デバイス２１０、デバイス２１１は、ＲＯＭ２０２〜キーボード２０９以外の周辺装置である。たとえば、携帯端末に搭載されるデバイスとしては、カメラデバイス、ＧＰＳデバイス等が挙げられる。
【００２６】
割込コントローラ２１２は、Ｉ／Ｆ２０７〜デバイス２１１といった装置からの割込信号を、割込要求信号線２２１を介して受信し、また、割込通知信号線２２２を介してＣＰＵ１０１と割込監視装置１０２に割込信号を通知する。また割込要求信号線２２１と割込通知信号線２２２は、割込信号を出力する装置の数分だけ存在する。具体的に、ｎを１以上の整数とすると、割込要求信号線２２１は、割込要求信号線２２１−１〜割込要求信号線２２１−ｎ存在し、割込通知信号線２２２は、割込通知信号線２２２−１〜割込通知信号線２２２−ｎ存在する。
【００２７】
割込監視装置１０２は、割込を監視する装置である。具体的に、割込監視装置１０２は、割込コントローラ２１２からの割込通知信号と、ＣＰＵ１０１からのディスパッチ通知信号と、に基づいて、割込処理の遅延が発生しているか否かを、アラーム信号線２２４に出力する。割込監視装置１０２の詳細は、図３にて後述する。
【００２８】
図３は、割込監視装置のハードウェア例を示す説明図である。割込監視装置１０２は、記憶部３０１と、測定部３０２と、比較部３０３と、出力部３０４と、を含む。記憶部３０１は、閾値レジスタ３１１を含む。測定部３０２は、タイマ３１２と、ラッチ回路３１３と、を含む。
【００２９】
閾値レジスタ３１１は、デバイスの割込ハンドラ１０３開始までの閾値を記憶するレジスタである。また、閾値レジスタ３１１は、ＣＰＵ１０１によって設定可能なレジスタである。また、閾値レジスタ３１１は、割込通知信号線２２２の数分となるｎ個存在してもよい。
【００３０】
タイマ３１２は、割込通知信号線２２２からの外部割込通知を受け付けると経過時間の測定を開始し、ラッチ回路３１３からの測定終了通知を受け付けるまで測定し続ける。また、タイマ３１２は、割込通知信号線２２２の数分となるｎ個存在してもよい。
【００３１】
ラッチ回路３１３は、ＣＰＵ１０１からのディスパッチ通知を受け付けると、タイマ３１２へ測定終了を通知し、外部割込通知からディスパッチ通知までとなる、測定結果の時間を比較部３０３に通知する。
【００３２】
記憶部３０１は、外部割込通知に対応する所定の閾値を記憶する機能を有する。たとえば、記憶部３０１は、閾値レジスタ３１１に所定の閾値を記憶する。また、記憶部３０１は、所定の閾値を外部割込通知ごとに記憶してもよい。たとえば、閾値レジスタ３１１−１が、Ｉ／Ｆ２０７の割込通知に対応する閾値を記憶し、閾値レジスタ３１１−２が、ディスプレイ２０８の割込通知に対応する閾値を記憶する。
【００３３】
測定部３０２は、外部割込通知を受け付けた時刻から、ＣＰＵ１０１からのディスパッチ通知を受け付けた時刻までの時間を測定する機能を有する。また、測定部３０２は、外部割込通知のうちいずれかの外部割込通知を受け付けた時刻から、ＣＰＵからのディスパッチ通知を受け付けた時刻までの時間を測定してもよい。
【００３４】
たとえば、測定部３０２は、割込通知信号線２２２から外部割込通知を受け付けると、タイマ３１２を起動する。また、タイマ３１２は、割込通知信号線２２２の数分存在してもよい。たとえば、Ｉ／Ｆ２０７が割込通知信号線２２２−１を経由して外部割込通知を送信した場合、外部割込通知を受け付けたタイマ３１２は、起動し、測定を開始する。続けて、ＣＰＵ１０１からのディスパッチ通知を受け付けると、測定部３０２は、測定された時間を取得する。
【００３５】
なお、ＣＰＵ１０１からのディスパッチ通知は、ディスパッチが発生するたびに通知される。したがって、測定部３０２は、外部割込通知を受け付けるまでは、ディスパッチ通知を受けても何も行わず、外部割込通知を受け付けて、次のディスパッチ通知までの時間を測定する。
【００３６】
比較部３０３は、所定の閾値と測定部３０２によって測定した時間とを比較する機能を有する。たとえば、比較部３０３は、所定の閾値が１６．５［ミリ秒］であり、測定した時間１８［ミリ秒］である場合、１６．５と１８の大小を比較する。
【００３７】
出力部３０４は、比較部３０３による比較結果をＣＰＵ１０１へ出力する機能を有する。たとえば、出力部３０４は、測定した時間が閾値より大きい場合、比較結果としてアラームを出力し、測定した時間が閾値より小さい場合、比較結果として、出力していたアラームを解除する。
【００３８】
（コンピュータシステム１００の機能）
次に、コンピュータシステム１００の機能について説明する。図４は、コンピュータシステムの機能例を示すブロック図である。コンピュータシステム１００は、切替部４０１と、送信部４０２と、制御部４０３と、を含む。この制御部となる機能（切替部４０１〜制御部４０３）は、記憶装置に記憶されたプログラムをＣＰＵ１０１が実行することにより、その機能を実現する。記憶装置とは、具体的には、たとえば、図２に示したＲＯＭ２０２、ＲＡＭ２０３、フラッシュＲＯＭ２０４、フラッシュＲＯＭ２０６などである。
【００３９】
切替部４０１は、制御装置で実行中の処理をスレッド群のうちの第１のスレッドから前記外部割込通知に対応する第２のスレッドを実行させる割込ハンドラ１０３に切り替える機能を有する。ここで、制御装置とは、ＣＰＵ１０１と、ＲＯＭ２０２、ＲＡＭ２０３等の記憶装置とを含めた装置である。たとえば、切替部４０１は、スレッド１から、スレッド２を実行させる割込ハンドラ１０３に切り替える。
【００４０】
送信部４０２は、実行中の処理が第１のスレッドから割込ハンドラ１０３に切り替わった場合、割込監視装置１０２にディスパッチ通知を送信する機能を有する。たとえば、送信部４０２は、スレッド１から割込ハンドラ１０３に切り替わった場合、割込監視装置１０２は、割込監視装置１０２にディスパッチ通知を送信する。
【００４１】
制御部４０３は、割込監視装置１０２から比較結果を受け付けた場合、第１のスレッドの優先度を制御する機能を有する。また、制御部４０３は、割込監視装置１０２から比較結果として測定された時間が所定の閾値より大きいことを受け付けた場合、第１のスレッドの優先度を低下させてもよい。たとえば、制御部４０３は、測定された時間が所定の閾値より大きいことを示すアラームを受け付けた場合、スレッド１の優先度を低下させる。
【００４２】
また、制御部４０３は、割込監視装置１０２から比較結果として測定された時間が所定の閾値より小さいことを受け付けた場合、第１のスレッドの優先度を復帰させる。たとえば、制御部４０３は、測定された時間が所定の閾値より小さいことを示すアラームの解除を受け付けた場合、スレッド１の優先度を復帰させる。
【００４３】
図５は、閾値レジスタの設定例を示す説明図である。図５では、表５０１にてＩ／Ｆ２０７〜デバイス２１１が有するデッドライン時間の例を示しており、表５０２にて、閾値レジスタの設定値の例を示している。
【００４４】
表５０１で示すように、コンピュータシステム１００は、キーボード２０９の応答を行うデッドライン時間として３３［ミリ秒］を、ユーザにとって違和感のない応答時間として設計されている。また、コンピュータシステム１００は、通信処理のデッドライン時間として１２［ミリ秒］を、通信のＱｏＳ（Ｑｕａｌｉｔｙ  ｏｆ  Ｓｅｒｖｉｃｅ）を保証できる時間として設計されている。
【００４５】
このとき、デッドライン時間をそのまま閾値レジスタに設定してしまうと、デッドライン時間を超過してしまうため、デッドライン時間より短い時間を設定することが好ましい。たとえば、コンピュータシステム１００は、キーボード２０９の閾値レジスタとして、デッドライン時間の整数倍または整数分の１の時間を設定してもよい。
【００４６】
表５０２の例では、コンピュータシステム１００は、整数分の１となる１／２として、キーボード２０９の閾値レジスタに３３×１／２＝１６．５［ミリ秒］を設定する。また、Ｉ／Ｆ２０７についても、コンピュータシステム１００は、Ｉ／Ｆ２０７の閾値レジスタに１２×１／２＝６［ミリ秒］を設定する。なお、設定のタイミングは、たとえば、キーボード２０９の設定レジスタに対してであれば、キー操作を行うアプリケーションが起動される時が適している。
【００４７】
このように、設計時に決められたデッドラインの整数倍または整数分の１で閾値レジスタを設定すると、コンピュータシステム１００は、ユーザに対する操作性を向上させることができる。ここで代表として、キーボード２０９のデッドラインについて、整数倍または整数分の１で設定すると違和感がない理由について説明する。キーボード２０９のデッドライン時間は、ディスプレイ２０８のリフレッシュレートに基づいて設定されている。ディスプレイ２０８のリフレッシュレートが３０［Ｈｚ］である場合、約３３［ミリ秒］に１回画面が更新されることになる。
【００４８】
このとき、閾値レジスタを整数倍または整数分の１でない２５［ミリ秒］に設定した場合、画面の更新を１回行う際に、キーボード２０９の割込を２回取得する場合と、１回取得する場合が発生する。たとえば、ユーザがキーボード２０９のうち、決定キーを２回素早く押下した場合、決定キーが２回押された状態の画面が表示される場合と、決定キーが１回押された状態の画面が表示され、次の画面の更新にて２回押された状態の画面が表示される場合がある。
【００４９】
このように、閾値レジスタがデバイスの応答時間の整数倍または整数分の１の値で設定されていない場合、ユーザは同じ動作を行っているにも関わらず、コンピュータシステム１００は、場合によって異なる操作結果を与えてしまう。閾値レジスタを応答時間の整数倍または整数分の１の値に設定すると、キーボード２０９の割込を取得する回数が一定となるため、コンピュータシステム１００は、ユーザに対する操作性を向上させることができる。
【００５０】
図６は、割込監視装置の動作におけるタイムチャート例を示す説明図である。図６では、キーボード２０９の割込を例として、割込監視装置１０２の動作におけるタイムチャートを示している。図６では、スレッド１が高優先度で動作するダウンローダアプリであり、スレッド２が、ユーザからの操作を受け付けるブラウザであることを想定する。また、時刻ｔ０〜ｔ５では、割込監視装置１０２がアラームを通知する動作を示し、時刻ｔ０'〜ｔ５'では、割込監視装置１０２がアラームを解除する動作を示す。
【００５１】
時刻ｔ０＝０［ミリ秒］の時点で、ＣＰＵ１０１はスレッド１を実行しており、また、ユーザの操作により、キーボード２０９の割込が発生する。割込監視装置１０２は、割込通知信号線２２２によって外部割込通知を受け取り、測定を開始する。
【００５２】
続けて、ＣＰＵ１０１は、スレッド１の処理を終了し、コンテキストスイッチ時間後となる時刻ｔ２にて、割込ハンドラ１０３を実行する。なお、時刻ｔ２は、キーボード２０９の閾値ｔ１＝１６．５［ミリ秒］以降の時刻である。また、時刻ｔ２にてディスパッチが起こったため、ＣＰＵ１０１は、スケジューラ２３２により、割込監視装置１０２にディスパッチ通知を送信する。なお、ディスパッチ通知は、時刻ｔ０より前の時刻でも発生しているが、外部割込通知を受け付けるまでは、測定部３０２は、測定を開始しない。
【００５３】
なお、閾値を超えてしまう状態は、汎用ＯＳ特有の現象であり、複数のタスクあるいはスレッドが混載し、かつ、各々のタスクあるいはスレッドに異なる優先度が設定されている場合に発生しやすくなる。また、組込ＳｏＣ（Ｓｙｓｔｅｍ−ｏｎ−ａ−Ｃｈｉｐ）特有の共有バス、共有メモリをとる形態である場合も、このような現象を冗長化することがわかっている。
【００５４】
汎用ＯＳ特有の現象となる理由として、ソフトウェアを含めたシステムが互いに干渉しあうことで、ＯＳ２３１のディスパッチタイミングがＯＳ２３１の設定する時間を逸脱する現象が起こるためである。ＯＳ２３１がリアルタイムＯＳであれば、互いに干渉するような複雑な系統を想定しておらず、全てのリアルタイムスレッドが与えられたタイミングで切り替わるような、設計者主導型のスケジューリングを行うことができる。しかし、本実施の形態におけるＯＳ２３１は、汎用ＯＳを想定しているため、アプリを優先度付で投入するスケジューリングが行われ、投入後の相互干渉までは設計されていない。
【００５５】
ディスパッチ通知を受け付けた割込監視装置１０２は、測定時間が閾値より大きいため、ＣＰＵ１０１にアラームを通知する。時刻ｔ３にて、ＣＰＵ１０１は、割込ハンドラ１０３の処理が終了した後、スケジューラ２３２により、ディスパッチ前に実行されていたスレッド１の優先度を低下させる。続けて、時刻ｔ４にて、ＣＰＵ１０１は、外部割込通知に対する処理を開始し、コンテキストスイッチ時間が経過した時刻ｔ５にて、スレッド２を実行する。
【００５６】
このように、高優先度であるスレッド１の優先度を一時的に下げることで、コンピュータシステム１００の負荷バランスが一時的に変化することになる。複雑な系統におけるアプリ相互干渉が発生したとしても、優先度を下げることで、１つのスレッドに与えられるＣＰＵ時間を短くすることで、結果的にディスパッチ間隔が短くなることになる。また、ＣＰＵ１０１は、ディスパッチ間隔が短くなると、短くなった分、割込通知を受信しやすくなる。
【００５７】
この現象も、汎用ＯＳ独特の現象である。理由として、割込処理は、割込が発生した場合、ＯＳ上の割込ベクタにフラグが設定され、ディスパッチによるスレッド切替のタイミングでフラグをチェックすることにより、割込のハンドリング処理が行われるためである。
【００５８】
続けて、時刻ｔ０'＝１００［ミリ秒］の時点で、ＣＰＵ１０１はスレッド１を実行しており、また、ユーザの操作により、キーボード２０９の割込が発生する。割込監視装置１０２は、割込通知信号線２２２によって通知を受け取り、測定を開始する。なお、時刻ｔ０'にて、スレッド１の優先度は低下したままである。
【００５９】
続けて、ＣＰＵ１０１は、スレッド１の処理を終了し、コンテキストスイッチ時間後となる時刻ｔ２'にて、割込ハンドラ１０３を実行する。時刻ｔ２'は、キーボード２０９の閾値ｔ１'＝１１６．５［ミリ秒］より前の時刻である。また、時刻ｔ２'にてディスパッチが起こったため、ＣＰＵ１０１は、スケジューラ２３２により、割込監視装置１０２にディスパッチ通知を送信する。
【００６０】
ディスパッチ通知を受け付けた割込監視装置１０２は、測定時間が閾値より大きいため、ＣＰＵ１０１にアラームの解除を通知する。時刻ｔ３'にて、ＣＰＵ１０１は、割込ハンドラ１０３の処理が終了した後、スケジューラ２３２により、ディスパッチ前に実行されていたスレッド１の優先度を復帰させる。続けて、時刻ｔ４'にて、ＣＰＵ１０１は、外部割込通知に対する処理を開始し、コンテキストスイッチ時間が経過した時刻ｔ５'にて、スレッド２を実行する。このように、アラームが解除されると、スケジューラ２３２は、スレッドの優先度を通常の優先度に戻すことで、想定した運用状態に復帰することができる。
【００６１】
図７は、割込監視処理の処理例を示すフローチャートである。割込監視処理は、ＯＳ２３１が実行してもよいし、スケジューラ２３２が実行してもよい。ＯＳ２３１が割込監視処理を実行する場合には、ＯＳ２３１は、ディスパッチ発生をスケジューラ２３２から受け付ける。また、スケジューラ２３２が実行する場合には、割込監視装置１０２からのアラームをＯＳ２３１から受け付ける。図７では、スケジューラ２３２が実行する場合を想定する。
【００６２】
スケジューラ２３２は、イベントが発生したか否かを確認する（ステップＳ７０１）。イベントが発生していない場合（ステップＳ７０１：未発生）、スケジューラ２３２は、通常処理を実行する（ステップＳ７０２）。なお、通常処理とは、スケジューラ２３２が通常行う、優先度に従ったスレッドのディスパッチ等といった処理である。通常処理の実行後、スケジューラ２３２は、ステップＳ７０１の処理に移行する。
【００６３】
ディスパッチが発生した場合（ステップＳ７０１：ディスパッチ発生）、スケジューラ２３２は、割込監視装置１０２にディスパッチ通知を送信し（ステップＳ７０３）、ステップＳ７０２の処理に移行する。
【００６４】
割込監視装置１０２からのアラーム通知が発生した場合（ステップＳ７０１：割込監視装置からのアラーム通知）、スケジューラ２３２は、実行されていたスレッドの優先度を低下させる（ステップＳ７０４）。優先度の低下後、スケジューラ２３２は、ステップＳ７０２の処理に移行する。割込監視装置１０２からのアラーム解除が発生した場合（ステップＳ７０１：割込監視装置からのアラーム解除）、スケジューラ２３２は、優先度を低下させたスレッドの優先度を復帰させ（ステップＳ７０５）、ステップＳ７０２の処理に移行する。
【００６５】
なお、割込監視処理は、ＯＳ２３１とスケジューラ２３２が分担して行ってもよい。具体的には、スケジューラ２３２は、ディスパッチ発生を検出し、ステップＳ７０３の処理を実行し、ＯＳ２３１は、アラームを検出し、ステップＳ７０４、ステップＳ７０５の処理を実行する。
【００６６】
図８は、本実施の形態にかかるコンピュータシステムの適用例を示す説明図である。本実施の形態にかかるコンピュータを用いたシステムの適用例を示す説明図である。図８において、ネットワークＮＷは、コンピュータシステム８０１〜コンピュータシステム８０４が通信可能なネットワークであり、たとえば、ＬＡＮ、ＷＡＮ、インターネット、携帯電話網などを含む。
【００６７】
コンピュータシステム８０１はノート型ＰＣ（Ｐｅｒｓｏｎａｌ  Ｃｏｍｐｕｔｅｒ）である。コンピュータシステム８０２はデスクトップ型ＰＣ、コンピュータシステム８０３は携帯電話機である。携帯電話機として、コンピュータシステム８０３は、スマートフォンであってもよいし、ＰＨＳ（Ｐｅｒｓｏｎａｌ  Ｈａｎｄｙｐｈｏｎｅ  Ｓｙｓｔｅｍ）であってもよい。コンピュータシステム８０４はタブレット型端末である。図８のコンピュータシステム８０１〜コンピュータシステム８０４は、本実施の形態にかかる割込監視を行う。
【００６８】
以上説明したように、割込監視装置によれば、デバイスからの外部割込の時刻とＣＰＵからのディスパッチ通知の時刻から、割込処理の応答時間をＣＰＵ外部で測定する。これにより、割込監視装置は、ＣＰＵの負荷量に影響せずに割込処理の遅延を検出し、リアルタイム処理の保証を提供することができる。また、割込監視装置は、汎用ＯＳを搭載した高機能端末に対して、キーボードやタッチパネルなどのユーザ操作に対する良好な応答性能を提供することができる。
【００６９】
また、割込監視装置は、複数のデバイスから通知される外部割込通知ごとに、外部割込通知のうちいずれかの外部割込通知を受け付けた時刻から、ＣＰＵからのディスパッチ通知を受け付けた時刻までの時間を測定してもよい。コンピュータシステムに搭載されるデバイスが多く存在し、多くのデバイスから外部割込通知が発生した場合、割込処理を行うスレッド同士が干渉しあってＣＰＵの負荷が増加する場合が想定される。この場合でも、割込監視装置は、増加したＣＰＵの負荷量に影響せずに割込処理の遅延を検出でき、リアルタイム処理を保証することができる。
【００７０】
たとえば、本実施の形態にかかるコンピュータシステムでは、ユーザがブラウザを操作している状態で、高優先度のダウンロードソフトの負荷が増加した場合でも、割込処理の遅延を検出して、ダウンロードソフトの優先度を一時的に低下させ、応答性を保てる。従来のコンピュータシステムでは、ダウンロードソフトの負荷が増加することにより、遅延を検出できず、操作感が著しく低下するような現象が発生してしまう。あるいは、従来のコンピュータシステムは、ブラウザ側に優先度を高く設定することで、ダウンロード通信がタイムアウトするなど、操作感的な不具合が発生してしまう。
【００７１】
また、コンピュータシステムは、割込監視装置からのアラームを受け付けた場合に、切替前となるスレッドの優先度を制御してもよい。これにより、コンピュータシステムは、ＣＰＵの外部で測定した割込処理の遅延に対して、原因となるスレッドを特定でき、さらに優先度を制御することで、リアルタイム処理の保証を行うことができる。具体的に、コンピュータシステムは、アラームを受け付けた場合に、切替前となるスレッドの優先度を低下させることで、切替後となるスレッドがＣＰＵに割り当てられる割合が増加するため、リアルタイム処理の保証を行うことができる。また、コンピュータシステムは、アラームの解除を受け付けた場合に、切替前となるスレッドの優先度を復帰させることで、設計者が想定していた運用状態に復帰することができる。
【００７２】
また、コンピュータシステムは、閾値レジスタにデバイスの応答時間の整数倍または整数分の１の時間を設定してもよい。これにより、コンピュータシステムは、ユーザに対する操作性を向上させることができる。なお、閾値レジスタにデバイスの応答時間を設定した場合、コンピュータシステムは、１回目のアラームではデバイスの応答時間を超えてから割込処理に対応する処理を実行することとなり、２回目以降からはデバイスの応答時間以内で処理を実行することになる。リアルタイム処理の保証が比較的緩やかであるキーボード、タッチパネルといったユーザに対する応答性能については、このような制御でも十分に効果を上げることができる。
【００７３】
なお、本実施の形態で説明した割込監視方法は、予め用意されたプログラムをパーソナル・コンピュータやワークステーション等のコンピュータで実行することにより実現することができる。本割込監視プログラムは、ハードディスク、フレキシブルディスク、ＣＤ−ＲＯＭ、ＭＯ、ＤＶＤ等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。また本割込監視プログラムは、インターネット等のネットワークを介して配布してもよい。
【００７４】
また、本実施の形態で説明した割込監視装置１０２は、スタンダードセルやストラクチャードＡＳＩＣ（Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）などの特定用途向けＩＣ（以下、単に「ＡＳＩＣ」と称す。）やＦＰＧＡなどのＰＬＤ（Ｐｒｏｇｒａｍｍａｂｌｅ  Ｌｏｇｉｃ  Ｄｅｖｉｃｅ）によっても実現することができる。具体的には、たとえば、上述した割込監視装置１０２の機能（記憶部３０１〜出力部３０４）をＨＤＬ記述によって機能定義し、そのＨＤＬ記述を論理合成してＡＳＩＣやＰＬＤに与えることにより、割込監視装置１０２を製造することができる。
【００７５】
上述した実施の形態に関し、さらに以下の付記を開示する。
【００７６】
（付記１）外部割込通知に対応する所定の閾値を記憶する記憶部と、
前記外部割込通知を受け付けた時刻から、ＣＰＵからのディスパッチ通知を受け付けた時刻までの時間を測定する測定部と、
前記所定の閾値と前記測定部によって測定された時間とを比較する比較部と、
前記比較部による比較結果を前記ＣＰＵへ出力する出力部と、
を備えることを特徴とする割込監視装置。
【００７７】
（付記２）前記記憶部は、
前記所定の閾値を前記外部割込通知ごとに記憶し、
前記測定部は、
外部割込通知群のうちいずれかの外部割込通知を受け付けた時刻から、ＣＰＵからのディスパッチ通知を受け付けた時刻までの時間を測定し、
前記比較部は、
前記いずれかの外部割込通知に対応する所定の閾値と前記測定部によって測定された時間とを比較する、
ことを特徴とする付記１に記載の割込監視装置。
【００７８】
（付記３）スレッド群を制御する制御装置と前記制御装置に通信可能な割込監視装置と前記制御装置に通信可能なデバイスとを含むコンピュータシステムであって、
前記割込監視装置は、
前記デバイスからの外部割込通知に対応する所定の閾値を記憶する記憶部と、
前記外部割込通知を受け付けた時刻から、前記制御装置からのディスパッチ通知を受け付けた時刻までの時間を測定する測定部と、
前記所定の閾値と前記測定部によって測定された時間とを比較する比較部と、
前記比較部による比較結果を前記制御装置へ出力する出力部と、
を備え、
前記制御装置は、
前記制御装置で実行中の処理が前記スレッド群のうちの第１のスレッドから前記外部割込通知に対応する第２のスレッドを実行させる割込ハンドラに切り替わった場合、前記割込監視装置に前記ディスパッチ通知を送信する送信部と、
前記割込監視装置から前記比較結果を受け付けた場合、前記第１のスレッドの優先度を制御する制御部と、
を備えることを特徴とするコンピュータシステム。
【００７９】
（付記４）前記制御部は、
前記比較結果として前記測定された時間が前記所定の閾値より大きいことを前記割込監視装置から受け付けた場合、前記第１のスレッドの優先度を低下させる、
ことを特徴とする付記３に記載のコンピュータシステム。
【００８０】
（付記５）前記制御部は、
前記比較結果として前記測定された時間が前記所定の閾値より小さいことを前記割込監視装置から受け付けた場合、前記第１のスレッドの優先度を復帰させる、
ことを特徴とする付記３に記載のコンピュータシステム。
【００８１】
（付記６）前記所定の閾値が、前記デバイスに設定される応答時間の整数倍または整数分の１の値であることを特徴とする付記３〜５のいずれか一つに記載のコンピュータシステム。
【符号の説明】
【００８２】
１、２  スレッド
１００  コンピュータシステム
１０１  ＣＰＵ
１０２  割込監視装置
１０３  割込ハンドラ
３０１  記憶部
３０２  測定部
３０３  比較部
３０４  出力部
４０１  切替部
４０２  送信部
４０３  制御部
【図１】
0005880564.tif 000002
【図２】
0005880564.tif 000003
【図３】
0005880564.tif 000004
【図４】
0005880564.tif 000005
【図５】
0005880564.tif 000006
【図６】
0005880564.tif 000007
【図７】
0005880564.tif 000008
【図８】
0005880564.tif 000009