本発明は、割込を監視する割込監視装置、およびコンピュータシステムに関する。
従来から、携帯端末などの組込システムにおいては、リアルタイム制御が可能なOS(Operating System)として、リアルタイムOSが採用されていた。しかし、近年、開発コストの点で有利な汎用OSが採用される場合も増加してきている。汎用OSは、リアルタイム制御を行わないため、割込応答が保証されない。
割込応答を保証する技術として、たとえば、割込通知から、割込ハンドラ終了までの時間を監視し、応答の遅いスレッドの処理優先度を上げるものがある(たとえば、下記特許文献1を参照。)。なお、スレッドとは、プログラムの実行単位である。
しかしながら、上述した従来技術において、CPU(Central Processing Unit)の負荷量が増大すると、割込処理の応答時間の監視そのものが遅れてしまい、リアルタイム処理が破たんするという問題があった。また、システム内で既に最高の優先度に設定されているスレッドが遅延した場合、優先度をさらに上げることができず、リアルタイム処理が破たんするという問題があった。
本発明は、上述した従来技術による問題点を解消するため、リアルタイム処理を保証する割込監視装置、およびコンピュータシステムを提供することを目的とする。
上述した課題を解決し、目的を達成するため、本発明の一側面によれば、外部割込通知に対応する所定の閾値を記憶し、外部割込通知を受け付けた時刻から、CPUからのディスパッチ通知を受け付けた時刻までの時間を測定し、所定の閾値と測定部によって測定された時間とを比較し、比較結果をCPUへ出力する割込監視装置が提案される。
また、本発明の他の側面によれば、スレッド群を制御する制御装置と制御装置に通信可能な割込監視装置と制御装置に通信可能なデバイスとを含むコンピュータシステムであって、割込監視装置が、デバイスからの外部割込通知に対応する所定の閾値を記憶し、外部割込通知を受け付けた時刻から、制御装置からのディスパッチ通知を受け付けた時刻までの時間を測定し、所定の閾値と測定部によって測定された時間とを比較し、比較結果を制御装置へ出力し、制御装置が、制御装置で実行中の処理がスレッド群のうちの第1のスレッドから外部割込通知に対応する第2のスレッドを実行させる割込ハンドラに切り替わった場合、割込監視装置にディスパッチ通知を送信し、割込監視装置から比較結果を受け付けた場合、第1のスレッドの優先度を制御するコンピュータシステムが提案される。
本発明の一側面によれば、リアルタイム処理の保証を図ることができるという効果を奏する。
図1は、コンピュータシステムの動作例を示す説明図である。
図2は、コンピュータシステムのハードウェア例を示すブロック図である。
図3は、割込監視装置のハードウェア例を示す説明図である。
図4は、コンピュータシステムの機能例を示すブロック図である。
図5は、閾値レジスタの設定例を示す説明図である。
図6は、割込監視装置の動作におけるタイムチャート例を示す説明図である。
図7は、割込監視処理の処理例を示すフローチャートである。
図8は、本実施の形態にかかるコンピュータシステムの適用例を示す説明図である。
以下に添付図面を参照して、開示の割込監視装置、およびコンピュータシステムの実施の形態を詳細に説明する。
図1は、コンピュータシステムの動作例を示す説明図である。コンピュータシステム100は、メモリ等の記憶領域から実行されたスレッド群を制御するCPU101と、割込監視装置102を含む。CPU101は、コンピュータシステム100を制御するOSとして、汎用OSを採用しており、スレッド群として、スレッド1、スレッド2を実行する。スレッド1は、割込禁止区間が設定されているか、または高優先度に設定されたスレッドである。スレッド2は、外部割込通知に対応する処理を実行するスレッドである。なお、外部割込通知とは、コンピュータシステム100内のデバイスからの割込信号のことである。割込監視装置102は、外部割込通知からCPUのディスパッチ通知までの時間を測定し、割込処理の遅延を検出する装置である。
時刻t0にて、CPU101と、割込監視装置102は、デバイスからの外部割込通知を受け付ける。時刻t0では、CPU101は、スレッド1を実行中である。汎用OSは、優先度に基づいたスケジューリングに従ってスレッドを切り替えており、スレッドをいつ切り替えるかという制御は行っていない。また、外部割込通知を受け付けた割込監視装置102は、測定を開始する。
時刻t1にて、CPU101で実行中のスレッド1から外部割込通知に対応するスレッド2を実行させる割込ハンドラ103に切り替わった場合、CPU101は、ディスパッチ通知を割込監視装置102に送信する。ディスパッチ通知を受け付けた割込監視装置102は、外部割込通知を受け付けた時刻t0から現在の時刻となるt1までの時間と、デバイスが許容する応答時間となる所定の閾値を比較する。図1の例では、時刻t0から時刻t1までの時間が所定の閾値より大きいため、割込監視装置102は、アラームを出力する。
これにより、CPU101は、デバイスが許容する応答時間を超えた場合にアラームを受け付けるため、スレッド1の優先度を下げることで、リアルタイム処理の保証ができる。以下、図2〜図7を用いて、割込監視装置102の詳細について説明を行う。
(コンピュータシステム100のハードウェア)
図2は、コンピュータシステムのハードウェア例を示すブロック図である。本実施の形態におけるコンピュータシステム100は、携帯電話などの携帯端末を想定している。図2において、コンピュータシステム100は、CPU101と、ROM(Read‐Only Memory)202と、RAM(Random Access Memory)203と、を含む。
また、コンピュータシステム100は、フラッシュROM204と、フラッシュROMコントローラ205と、フラッシュROM206と、を含む。また、コンピュータシステム100は、ユーザやその他の機器との入出力装置として、I/F(Interface)207と、ディスプレイ208と、キーボード209と、を含む。また、コンピュータシステム100は、デバイス210と、デバイス211と、割込コントローラ212と、割込監視装置102と、を含む。また、各部はバス201によってそれぞれ接続されている。
ここで、CPU101は、コンピュータシステム100の全体の制御を司る。また、コンピュータシステム100は、複数のCPU101を有するマルチコアプロセッサシステムであってもよい。マルチコアプロセッサとは、コアが複数搭載されたプロセッサである。コアが複数搭載されていれば、複数のコアが搭載された単一のプロセッサでもよく、シングルコアのプロセッサが並列されているプロセッサ群でもよい。
具体的に、CPU101は、OS231を実行して、コンピュータシステム100の全体の制御を司る。なお、OS231は、リアルタイム処理を考慮していない、汎用OSを想定している。OS231には、スレッドをCPUに割り当てる機能を有するスケジューラ232を含む。また、CPU101は、ディスパッチ通知信号線223とアラーム信号線224を介して割込監視装置102と接続している。CPU101は、ディスパッチが発生するたびに、ディスパッチ通知信号線223を介して、ディスパッチ通知を送信する。
ROM202は、ブートプログラムなどのプログラムを記憶している。RAM203は、CPU101のワークエリアとして使用される。フラッシュROM204は、読出し速度が高速なフラッシュROMであり、たとえば、NOR型フラッシュメモリである。たとえば、フラッシュROM204は、OS231などのシステムソフトウェアやアプリケーションソフトウェアなどを記憶している。たとえば、OS231を更新する場合、コンピュータシステム100は、I/F207によって新しいOS231を受信し、フラッシュROM204に格納されている古いOS231を、受信した新しいOS231に更新する。
フラッシュROMコントローラ205は、CPU101の制御に従ってフラッシュROM206に対するデータのリード/ライトを制御する。フラッシュROM206は、データの保存、運搬を主に目的としたフラッシュROMであり、たとえば、NAND型フラッシュメモリである。フラッシュROM206は、フラッシュROMコントローラ205の制御で書き込まれたデータを記憶する。データの具体例としては、コンピュータシステム100を使用するユーザがI/F207を通して取得した画像データ、映像データなどである。フラッシュROM206は、たとえば、メモリカード、SDカードなどを採用することができる。
I/F207は、通信回線を通じてLAN、WAN(Wide Area Network)、インターネットなどのネットワークに接続され、ネットワークを介して他の装置に接続される。そして、I/F207は、ネットワークと内部のインターフェースを司り、外部装置からのデータの入出力を制御する。I/F207には、たとえばモデムやLANアダプタなどを採用することができる。
ディスプレイ208は、カーソル、アイコンあるいはツールボックスを始め、文書、画像、機能情報などのデータを表示する。ディスプレイ208は、たとえば、TFT(Thin Film Transistor)液晶ディスプレイなどを採用することができる。
キーボード209は、数字、各種指示などの入力のためのキーを有し、データの入力を行う。また、キーボード209は、タッチパネル式の入力パッドやテンキーなどであってもよい。
デバイス210、デバイス211は、ROM202〜キーボード209以外の周辺装置である。たとえば、携帯端末に搭載されるデバイスとしては、カメラデバイス、GPSデバイス等が挙げられる。
割込コントローラ212は、I/F207〜デバイス211といった装置からの割込信号を、割込要求信号線221を介して受信し、また、割込通知信号線222を介してCPU101と割込監視装置102に割込信号を通知する。また割込要求信号線221と割込通知信号線222は、割込信号を出力する装置の数分だけ存在する。具体的に、nを1以上の整数とすると、割込要求信号線221は、割込要求信号線221−1〜割込要求信号線221−n存在し、割込通知信号線222は、割込通知信号線222−1〜割込通知信号線222−n存在する。
割込監視装置102は、割込を監視する装置である。具体的に、割込監視装置102は、割込コントローラ212からの割込通知信号と、CPU101からのディスパッチ通知信号と、に基づいて、割込処理の遅延が発生しているか否かを、アラーム信号線224に出力する。割込監視装置102の詳細は、図3にて後述する。
図3は、割込監視装置のハードウェア例を示す説明図である。割込監視装置102は、記憶部301と、測定部302と、比較部303と、出力部304と、を含む。記憶部301は、閾値レジスタ311を含む。測定部302は、タイマ312と、ラッチ回路313と、を含む。
閾値レジスタ311は、デバイスの割込ハンドラ103開始までの閾値を記憶するレジスタである。また、閾値レジスタ311は、CPU101によって設定可能なレジスタである。また、閾値レジスタ311は、割込通知信号線222の数分となるn個存在してもよい。
タイマ312は、割込通知信号線222からの外部割込通知を受け付けると経過時間の測定を開始し、ラッチ回路313からの測定終了通知を受け付けるまで測定し続ける。また、タイマ312は、割込通知信号線222の数分となるn個存在してもよい。
ラッチ回路313は、CPU101からのディスパッチ通知を受け付けると、タイマ312へ測定終了を通知し、外部割込通知からディスパッチ通知までとなる、測定結果の時間を比較部303に通知する。
記憶部301は、外部割込通知に対応する所定の閾値を記憶する機能を有する。たとえば、記憶部301は、閾値レジスタ311に所定の閾値を記憶する。また、記憶部301は、所定の閾値を外部割込通知ごとに記憶してもよい。たとえば、閾値レジスタ311−1が、I/F207の割込通知に対応する閾値を記憶し、閾値レジスタ311−2が、ディスプレイ208の割込通知に対応する閾値を記憶する。
測定部302は、外部割込通知を受け付けた時刻から、CPU101からのディスパッチ通知を受け付けた時刻までの時間を測定する機能を有する。また、測定部302は、外部割込通知のうちいずれかの外部割込通知を受け付けた時刻から、CPUからのディスパッチ通知を受け付けた時刻までの時間を測定してもよい。
たとえば、測定部302は、割込通知信号線222から外部割込通知を受け付けると、タイマ312を起動する。また、タイマ312は、割込通知信号線222の数分存在してもよい。たとえば、I/F207が割込通知信号線222−1を経由して外部割込通知を送信した場合、外部割込通知を受け付けたタイマ312は、起動し、測定を開始する。続けて、CPU101からのディスパッチ通知を受け付けると、測定部302は、測定された時間を取得する。
なお、CPU101からのディスパッチ通知は、ディスパッチが発生するたびに通知される。したがって、測定部302は、外部割込通知を受け付けるまでは、ディスパッチ通知を受けても何も行わず、外部割込通知を受け付けて、次のディスパッチ通知までの時間を測定する。
比較部303は、所定の閾値と測定部302によって測定した時間とを比較する機能を有する。たとえば、比較部303は、所定の閾値が16.5[ミリ秒]であり、測定した時間18[ミリ秒]である場合、16.5と18の大小を比較する。
出力部304は、比較部303による比較結果をCPU101へ出力する機能を有する。たとえば、出力部304は、測定した時間が閾値より大きい場合、比較結果としてアラームを出力し、測定した時間が閾値より小さい場合、比較結果として、出力していたアラームを解除する。
(コンピュータシステム100の機能)
次に、コンピュータシステム100の機能について説明する。図4は、コンピュータシステムの機能例を示すブロック図である。コンピュータシステム100は、切替部401と、送信部402と、制御部403と、を含む。この制御部となる機能(切替部401〜制御部403)は、記憶装置に記憶されたプログラムをCPU101が実行することにより、その機能を実現する。記憶装置とは、具体的には、たとえば、図2に示したROM202、RAM203、フラッシュROM204、フラッシュROM206などである。
切替部401は、制御装置で実行中の処理をスレッド群のうちの第1のスレッドから前記外部割込通知に対応する第2のスレッドを実行させる割込ハンドラ103に切り替える機能を有する。ここで、制御装置とは、CPU101と、ROM202、RAM203等の記憶装置とを含めた装置である。たとえば、切替部401は、スレッド1から、スレッド2を実行させる割込ハンドラ103に切り替える。
送信部402は、実行中の処理が第1のスレッドから割込ハンドラ103に切り替わった場合、割込監視装置102にディスパッチ通知を送信する機能を有する。たとえば、送信部402は、スレッド1から割込ハンドラ103に切り替わった場合、割込監視装置102は、割込監視装置102にディスパッチ通知を送信する。
制御部403は、割込監視装置102から比較結果を受け付けた場合、第1のスレッドの優先度を制御する機能を有する。また、制御部403は、割込監視装置102から比較結果として測定された時間が所定の閾値より大きいことを受け付けた場合、第1のスレッドの優先度を低下させてもよい。たとえば、制御部403は、測定された時間が所定の閾値より大きいことを示すアラームを受け付けた場合、スレッド1の優先度を低下させる。
また、制御部403は、割込監視装置102から比較結果として測定された時間が所定の閾値より小さいことを受け付けた場合、第1のスレッドの優先度を復帰させる。たとえば、制御部403は、測定された時間が所定の閾値より小さいことを示すアラームの解除を受け付けた場合、スレッド1の優先度を復帰させる。
図5は、閾値レジスタの設定例を示す説明図である。図5では、表501にてI/F207〜デバイス211が有するデッドライン時間の例を示しており、表502にて、閾値レジスタの設定値の例を示している。
表501で示すように、コンピュータシステム100は、キーボード209の応答を行うデッドライン時間として33[ミリ秒]を、ユーザにとって違和感のない応答時間として設計されている。また、コンピュータシステム100は、通信処理のデッドライン時間として12[ミリ秒]を、通信のQoS(Quality of Service)を保証できる時間として設計されている。
このとき、デッドライン時間をそのまま閾値レジスタに設定してしまうと、デッドライン時間を超過してしまうため、デッドライン時間より短い時間を設定することが好ましい。たとえば、コンピュータシステム100は、キーボード209の閾値レジスタとして、デッドライン時間の整数倍または整数分の1の時間を設定してもよい。
表502の例では、コンピュータシステム100は、整数分の1となる1/2として、キーボード209の閾値レジスタに33×1/2=16.5[ミリ秒]を設定する。また、I/F207についても、コンピュータシステム100は、I/F207の閾値レジスタに12×1/2=6[ミリ秒]を設定する。なお、設定のタイミングは、たとえば、キーボード209の設定レジスタに対してであれば、キー操作を行うアプリケーションが起動される時が適している。
このように、設計時に決められたデッドラインの整数倍または整数分の1で閾値レジスタを設定すると、コンピュータシステム100は、ユーザに対する操作性を向上させることができる。ここで代表として、キーボード209のデッドラインについて、整数倍または整数分の1で設定すると違和感がない理由について説明する。キーボード209のデッドライン時間は、ディスプレイ208のリフレッシュレートに基づいて設定されている。ディスプレイ208のリフレッシュレートが30[Hz]である場合、約33[ミリ秒]に1回画面が更新されることになる。
このとき、閾値レジスタを整数倍または整数分の1でない25[ミリ秒]に設定した場合、画面の更新を1回行う際に、キーボード209の割込を2回取得する場合と、1回取得する場合が発生する。たとえば、ユーザがキーボード209のうち、決定キーを2回素早く押下した場合、決定キーが2回押された状態の画面が表示される場合と、決定キーが1回押された状態の画面が表示され、次の画面の更新にて2回押された状態の画面が表示される場合がある。
このように、閾値レジスタがデバイスの応答時間の整数倍または整数分の1の値で設定されていない場合、ユーザは同じ動作を行っているにも関わらず、コンピュータシステム100は、場合によって異なる操作結果を与えてしまう。閾値レジスタを応答時間の整数倍または整数分の1の値に設定すると、キーボード209の割込を取得する回数が一定となるため、コンピュータシステム100は、ユーザに対する操作性を向上させることができる。
図6は、割込監視装置の動作におけるタイムチャート例を示す説明図である。図6では、キーボード209の割込を例として、割込監視装置102の動作におけるタイムチャートを示している。図6では、スレッド1が高優先度で動作するダウンローダアプリであり、スレッド2が、ユーザからの操作を受け付けるブラウザであることを想定する。また、時刻t0〜t5では、割込監視装置102がアラームを通知する動作を示し、時刻t0’〜t5’では、割込監視装置102がアラームを解除する動作を示す。
時刻t0=0[ミリ秒]の時点で、CPU101はスレッド1を実行しており、また、ユーザの操作により、キーボード209の割込が発生する。割込監視装置102は、割込通知信号線222によって外部割込通知を受け取り、測定を開始する。
続けて、CPU101は、スレッド1の処理を終了し、コンテキストスイッチ時間後となる時刻t2にて、割込ハンドラ103を実行する。なお、時刻t2は、キーボード209の閾値t1=16.5[ミリ秒]以降の時刻である。また、時刻t2にてディスパッチが起こったため、CPU101は、スケジューラ232により、割込監視装置102にディスパッチ通知を送信する。なお、ディスパッチ通知は、時刻t0より前の時刻でも発生しているが、外部割込通知を受け付けるまでは、測定部302は、測定を開始しない。
なお、閾値を超えてしまう状態は、汎用OS特有の現象であり、複数のタスクあるいはスレッドが混載し、かつ、各々のタスクあるいはスレッドに異なる優先度が設定されている場合に発生しやすくなる。また、組込SoC(System−on−a−Chip)特有の共有バス、共有メモリをとる形態である場合も、このような現象を冗長化することがわかっている。
汎用OS特有の現象となる理由として、ソフトウェアを含めたシステムが互いに干渉しあうことで、OS231のディスパッチタイミングがOS231の設定する時間を逸脱する現象が起こるためである。OS231がリアルタイムOSであれば、互いに干渉するような複雑な系統を想定しておらず、全てのリアルタイムスレッドが与えられたタイミングで切り替わるような、設計者主導型のスケジューリングを行うことができる。しかし、本実施の形態におけるOS231は、汎用OSを想定しているため、アプリを優先度付で投入するスケジューリングが行われ、投入後の相互干渉までは設計されていない。
ディスパッチ通知を受け付けた割込監視装置102は、測定時間が閾値より大きいため、CPU101にアラームを通知する。時刻t3にて、CPU101は、割込ハンドラ103の処理が終了した後、スケジューラ232により、ディスパッチ前に実行されていたスレッド1の優先度を低下させる。続けて、時刻t4にて、CPU101は、外部割込通知に対する処理を開始し、コンテキストスイッチ時間が経過した時刻t5にて、スレッド2を実行する。
このように、高優先度であるスレッド1の優先度を一時的に下げることで、コンピュータシステム100の負荷バランスが一時的に変化することになる。複雑な系統におけるアプリ相互干渉が発生したとしても、優先度を下げることで、1つのスレッドに与えられるCPU時間を短くすることで、結果的にディスパッチ間隔が短くなることになる。また、CPU101は、ディスパッチ間隔が短くなると、短くなった分、割込通知を受信しやすくなる。
この現象も、汎用OS独特の現象である。理由として、割込処理は、割込が発生した場合、OS上の割込ベクタにフラグが設定され、ディスパッチによるスレッド切替のタイミングでフラグをチェックすることにより、割込のハンドリング処理が行われるためである。
続けて、時刻t0’=100[ミリ秒]の時点で、CPU101はスレッド1を実行しており、また、ユーザの操作により、キーボード209の割込が発生する。割込監視装置102は、割込通知信号線222によって通知を受け取り、測定を開始する。なお、時刻t0’にて、スレッド1の優先度は低下したままである。
続けて、CPU101は、スレッド1の処理を終了し、コンテキストスイッチ時間後となる時刻t2’にて、割込ハンドラ103を実行する。時刻t2’は、キーボード209の閾値t1’=116.5[ミリ秒]より前の時刻である。また、時刻t2’にてディスパッチが起こったため、CPU101は、スケジューラ232により、割込監視装置102にディスパッチ通知を送信する。
ディスパッチ通知を受け付けた割込監視装置102は、測定時間が閾値より大きいため、CPU101にアラームの解除を通知する。時刻t3’にて、CPU101は、割込ハンドラ103の処理が終了した後、スケジューラ232により、ディスパッチ前に実行されていたスレッド1の優先度を復帰させる。続けて、時刻t4’にて、CPU101は、外部割込通知に対する処理を開始し、コンテキストスイッチ時間が経過した時刻t5’にて、スレッド2を実行する。このように、アラームが解除されると、スケジューラ232は、スレッドの優先度を通常の優先度に戻すことで、想定した運用状態に復帰することができる。
図7は、割込監視処理の処理例を示すフローチャートである。割込監視処理は、OS231が実行してもよいし、スケジューラ232が実行してもよい。OS231が割込監視処理を実行する場合には、OS231は、ディスパッチ発生をスケジューラ232から受け付ける。また、スケジューラ232が実行する場合には、割込監視装置102からのアラームをOS231から受け付ける。図7では、スケジューラ232が実行する場合を想定する。
スケジューラ232は、イベントが発生したか否かを確認する(ステップS701)。イベントが発生していない場合(ステップS701:未発生)、スケジューラ232は、通常処理を実行する(ステップS702)。なお、通常処理とは、スケジューラ232が通常行う、優先度に従ったスレッドのディスパッチ等といった処理である。通常処理の実行後、スケジューラ232は、ステップS701の処理に移行する。
ディスパッチが発生した場合(ステップS701:ディスパッチ発生)、スケジューラ232は、割込監視装置102にディスパッチ通知を送信し(ステップS703)、ステップS702の処理に移行する。
割込監視装置102からのアラーム通知が発生した場合(ステップS701:割込監視装置からのアラーム通知)、スケジューラ232は、実行されていたスレッドの優先度を低下させる(ステップS704)。優先度の低下後、スケジューラ232は、ステップS702の処理に移行する。割込監視装置102からのアラーム解除が発生した場合(ステップS701:割込監視装置からのアラーム解除)、スケジューラ232は、優先度を低下させたスレッドの優先度を復帰させ(ステップS705)、ステップS702の処理に移行する。
なお、割込監視処理は、OS231とスケジューラ232が分担して行ってもよい。具体的には、スケジューラ232は、ディスパッチ発生を検出し、ステップS703の処理を実行し、OS231は、アラームを検出し、ステップS704、ステップS705の処理を実行する。
図8は、本実施の形態にかかるコンピュータシステムの適用例を示す説明図である。本実施の形態にかかるコンピュータを用いたシステムの適用例を示す説明図である。図8において、ネットワークNWは、コンピュータシステム801〜コンピュータシステム804が通信可能なネットワークであり、たとえば、LAN、WAN、インターネット、携帯電話網などを含む。
コンピュータシステム801はノート型PC(Personal Computer)である。コンピュータシステム802はデスクトップ型PC、コンピュータシステム803は携帯電話機である。携帯電話機として、コンピュータシステム803は、スマートフォンであってもよいし、PHS(Personal Handyphone System)であってもよい。コンピュータシステム804はタブレット型端末である。図8のコンピュータシステム801〜コンピュータシステム804は、本実施の形態にかかる割込監視を行う。
以上説明したように、割込監視装置によれば、デバイスからの外部割込の時刻とCPUからのディスパッチ通知の時刻から、割込処理の応答時間をCPU外部で測定する。これにより、割込監視装置は、CPUの負荷量に影響せずに割込処理の遅延を検出し、リアルタイム処理の保証を提供することができる。また、割込監視装置は、汎用OSを搭載した高機能端末に対して、キーボードやタッチパネルなどのユーザ操作に対する良好な応答性能を提供することができる。
また、割込監視装置は、複数のデバイスから通知される外部割込通知ごとに、外部割込通知のうちいずれかの外部割込通知を受け付けた時刻から、CPUからのディスパッチ通知を受け付けた時刻までの時間を測定してもよい。コンピュータシステムに搭載されるデバイスが多く存在し、多くのデバイスから外部割込通知が発生した場合、割込処理を行うスレッド同士が干渉しあってCPUの負荷が増加する場合が想定される。この場合でも、割込監視装置は、増加したCPUの負荷量に影響せずに割込処理の遅延を検出でき、リアルタイム処理を保証することができる。
たとえば、本実施の形態にかかるコンピュータシステムでは、ユーザがブラウザを操作している状態で、高優先度のダウンロードソフトの負荷が増加した場合でも、割込処理の遅延を検出して、ダウンロードソフトの優先度を一時的に低下させ、応答性を保てる。従来のコンピュータシステムでは、ダウンロードソフトの負荷が増加することにより、遅延を検出できず、操作感が著しく低下するような現象が発生してしまう。あるいは、従来のコンピュータシステムは、ブラウザ側に優先度を高く設定することで、ダウンロード通信がタイムアウトするなど、操作感的な不具合が発生してしまう。
また、コンピュータシステムは、割込監視装置からのアラームを受け付けた場合に、切替前となるスレッドの優先度を制御してもよい。これにより、コンピュータシステムは、CPUの外部で測定した割込処理の遅延に対して、原因となるスレッドを特定でき、さらに優先度を制御することで、リアルタイム処理の保証を行うことができる。具体的に、コンピュータシステムは、アラームを受け付けた場合に、切替前となるスレッドの優先度を低下させることで、切替後となるスレッドがCPUに割り当てられる割合が増加するため、リアルタイム処理の保証を行うことができる。また、コンピュータシステムは、アラームの解除を受け付けた場合に、切替前となるスレッドの優先度を復帰させることで、設計者が想定していた運用状態に復帰することができる。
また、コンピュータシステムは、閾値レジスタにデバイスの応答時間の整数倍または整数分の1の時間を設定してもよい。これにより、コンピュータシステムは、ユーザに対する操作性を向上させることができる。なお、閾値レジスタにデバイスの応答時間を設定した場合、コンピュータシステムは、1回目のアラームではデバイスの応答時間を超えてから割込処理に対応する処理を実行することとなり、2回目以降からはデバイスの応答時間以内で処理を実行することになる。リアルタイム処理の保証が比較的緩やかであるキーボード、タッチパネルといったユーザに対する応答性能については、このような制御でも十分に効果を上げることができる。
なお、本実施の形態で説明した割込監視方法は、予め用意されたプログラムをパーソナル・コンピュータやワークステーション等のコンピュータで実行することにより実現することができる。本割込監視プログラムは、ハードディスク、フレキシブルディスク、CD−ROM、MO、DVD等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。また本割込監視プログラムは、インターネット等のネットワークを介して配布してもよい。
また、本実施の形態で説明した割込監視装置102は、スタンダードセルやストラクチャードASIC(Application Specific Integrated Circuit)などの特定用途向けIC(以下、単に「ASIC」と称す。)やFPGAなどのPLD(Programmable Logic Device)によっても実現することができる。具体的には、たとえば、上述した割込監視装置102の機能(記憶部301〜出力部304)をHDL記述によって機能定義し、そのHDL記述を論理合成してASICやPLDに与えることにより、割込監視装置102を製造することができる。
1、2 スレッド
100 コンピュータシステム
101 CPU
102 割込監視装置
103 割込ハンドラ
301 記憶部
302 測定部
303 比較部
304 出力部
401 切替部
402 送信部
403 制御部
本発明は、割込を監視する割込監視装置、およびコンピュータシステムに関する。
従来から、携帯端末などの組込システムにおいては、リアルタイム制御が可能なOS(Operating System)として、リアルタイムOSが採用されていた。しかし、近年、開発コストの点で有利な汎用OSが採用される場合も増加してきている。汎用OSは、リアルタイム制御を行わないため、割込応答が保証されない。
割込応答を保証する技術として、たとえば、割込通知から、割込ハンドラ終了までの時間を監視し、応答の遅いスレッドの処理優先度を上げるものがある(たとえば、下記特許文献1を参照。)。なお、スレッドとは、プログラムの実行単位である。
しかしながら、上述した従来技術において、CPU(Central Processing Unit)の負荷量が増大すると、割込処理の応答時間の監視そのものが遅れてしまい、リアルタイム処理が破たんするという問題があった。また、システム内で既に最高の優先度に設定されているスレッドが遅延した場合、優先度をさらに上げることができず、リアルタイム処理が破たんするという問題があった。
本発明は、上述した従来技術による問題点を解消するため、リアルタイム処理を保証する割込監視装置、およびコンピュータシステムを提供することを目的とする。
上述した課題を解決し、目的を達成するため、本発明の一側面によれば、外部割込通知に対応する所定の閾値を記憶し、外部割込通知を受け付けた時刻から、CPUからのディスパッチ通知を受け付けた時刻までの時間を測定し、所定の閾値と測定部によって測定された時間とを比較し、比較結果をCPUへ出力する割込監視装置が提案される。
また、本発明の他の側面によれば、スレッド群を制御する制御装置と制御装置に通信可能な割込監視装置と制御装置に通信可能なデバイスとを含むコンピュータシステムであって、割込監視装置が、デバイスからの外部割込通知に対応する所定の閾値を記憶し、外部割込通知を受け付けた時刻から、制御装置からのディスパッチ通知を受け付けた時刻までの時間を測定し、所定の閾値と測定部によって測定された時間とを比較し、比較結果を制御装置へ出力し、制御装置が、制御装置で実行中の処理がスレッド群のうちの第1のスレッドから外部割込通知に対応する第2のスレッドを実行させる割込ハンドラに切り替わった場合、割込監視装置にディスパッチ通知を送信し、割込監視装置から比較結果を受け付けた場合、第1のスレッドの優先度を制御するコンピュータシステムが提案される。
本発明の一側面によれば、リアルタイム処理の保証を図ることができるという効果を奏する。
図1は、コンピュータシステムの動作例を示す説明図である。
図2は、コンピュータシステムのハードウェア例を示すブロック図である。
図3は、割込監視装置のハードウェア例を示す説明図である。
図4は、コンピュータシステムの機能例を示すブロック図である。
図5は、閾値レジスタの設定例を示す説明図である。
図6は、割込監視装置の動作におけるタイムチャート例を示す説明図である。
図7は、割込監視処理の処理例を示すフローチャートである。
図8は、本実施の形態にかかるコンピュータシステムの適用例を示す説明図である。
以下に添付図面を参照して、開示の割込監視装置、およびコンピュータシステムの実施の形態を詳細に説明する。
図1は、コンピュータシステムの動作例を示す説明図である。コンピュータシステム100は、メモリ等の記憶領域から実行されたスレッド群を制御するCPU101と、割込監視装置102を含む。CPU101は、コンピュータシステム100を制御するOSとして、汎用OSを採用しており、スレッド群として、スレッド1、スレッド2を実行する。スレッド1は、割込禁止区間が設定されているか、または高優先度に設定されたスレッドである。スレッド2は、外部割込通知に対応する処理を実行するスレッドである。なお、外部割込通知とは、コンピュータシステム100内のデバイスからの割込信号のことである。割込監視装置102は、外部割込通知からCPUのディスパッチ通知までの時間を測定し、割込処理の遅延を検出する装置である。
時刻t0にて、CPU101と、割込監視装置102は、デバイスからの外部割込通知を受け付ける。時刻t0では、CPU101は、スレッド1を実行中である。汎用OSは、優先度に基づいたスケジューリングに従ってスレッドを切り替えており、スレッドをいつ切り替えるかという制御は行っていない。また、外部割込通知を受け付けた割込監視装置102は、測定を開始する。
時刻t1にて、CPU101で実行中のスレッド1から外部割込通知に対応するスレッド2を実行させる割込ハンドラ103に切り替わった場合、CPU101は、ディスパッチ通知を割込監視装置102に送信する。ディスパッチ通知を受け付けた割込監視装置102は、外部割込通知を受け付けた時刻t0から現在の時刻となるt1までの時間と、デバイスが許容する応答時間となる所定の閾値を比較する。図1の例では、時刻t0から時刻t1までの時間が所定の閾値より大きいため、割込監視装置102は、アラームを出力する。
これにより、CPU101は、デバイスが許容する応答時間を超えた場合にアラームを受け付けるため、スレッド1の優先度を下げることで、リアルタイム処理の保証ができる。以下、図2〜図7を用いて、割込監視装置102の詳細について説明を行う。
(コンピュータシステム100のハードウェア)
図2は、コンピュータシステムのハードウェア例を示すブロック図である。本実施の形態におけるコンピュータシステム100は、携帯電話などの携帯端末を想定している。図2において、コンピュータシステム100は、CPU101と、ROM(Read‐Only Memory)202と、RAM(Random Access Memory)203と、を含む。
また、コンピュータシステム100は、フラッシュROM204と、フラッシュROMコントローラ205と、フラッシュROM206と、を含む。また、コンピュータシステム100は、ユーザやその他の機器との入出力装置として、I/F(Interface)207と、ディスプレイ208と、キーボード209と、を含む。また、コンピュータシステム100は、デバイス210と、デバイス211と、割込コントローラ212と、割込監視装置102と、を含む。また、各部はバス201によってそれぞれ接続されている。
ここで、CPU101は、コンピュータシステム100の全体の制御を司る。また、コンピュータシステム100は、複数のCPU101を有するマルチコアプロセッサシステムであってもよい。マルチコアプロセッサとは、コアが複数搭載されたプロセッサである。コアが複数搭載されていれば、複数のコアが搭載された単一のプロセッサでもよく、シングルコアのプロセッサが並列されているプロセッサ群でもよい。
具体的に、CPU101は、OS231を実行して、コンピュータシステム100の全体の制御を司る。なお、OS231は、リアルタイム処理を考慮していない、汎用OSを想定している。OS231には、スレッドをCPUに割り当てる機能を有するスケジューラ232を含む。また、CPU101は、ディスパッチ通知信号線223とアラーム信号線224を介して割込監視装置102と接続している。CPU101は、ディスパッチが発生するたびに、ディスパッチ通知信号線223を介して、ディスパッチ通知を送信する。
ROM202は、ブートプログラムなどのプログラムを記憶している。RAM203は、CPU101のワークエリアとして使用される。フラッシュROM204は、読出し速度が高速なフラッシュROMであり、たとえば、NOR型フラッシュメモリである。たとえば、フラッシュROM204は、OS231などのシステムソフトウェアやアプリケーションソフトウェアなどを記憶している。たとえば、OS231を更新する場合、コンピュータシステム100は、I/F207によって新しいOS231を受信し、フラッシュROM204に格納されている古いOS231を、受信した新しいOS231に更新する。
フラッシュROMコントローラ205は、CPU101の制御に従ってフラッシュROM206に対するデータのリード/ライトを制御する。フラッシュROM206は、データの保存、運搬を主に目的としたフラッシュROMであり、たとえば、NAND型フラッシュメモリである。フラッシュROM206は、フラッシュROMコントローラ205の制御で書き込まれたデータを記憶する。データの具体例としては、コンピュータシステム100を使用するユーザがI/F207を通して取得した画像データ、映像データなどである。フラッシュROM206は、たとえば、メモリカード、SDカードなどを採用することができる。
I/F207は、通信回線を通じてLAN、WAN(Wide Area Network)、インターネットなどのネットワークに接続され、ネットワークを介して他の装置に接続される。そして、I/F207は、ネットワークと内部のインターフェースを司り、外部装置からのデータの入出力を制御する。I/F207には、たとえばモデムやLANアダプタなどを採用することができる。
ディスプレイ208は、カーソル、アイコンあるいはツールボックスを始め、文書、画像、機能情報などのデータを表示する。ディスプレイ208は、たとえば、TFT(Thin Film Transistor)液晶ディスプレイなどを採用することができる。
キーボード209は、数字、各種指示などの入力のためのキーを有し、データの入力を行う。また、キーボード209は、タッチパネル式の入力パッドやテンキーなどであってもよい。
デバイス210、デバイス211は、ROM202〜キーボード209以外の周辺装置である。たとえば、携帯端末に搭載されるデバイスとしては、カメラデバイス、GPSデバイス等が挙げられる。
割込コントローラ212は、I/F207〜デバイス211といった装置からの割込信号を、割込要求信号線221を介して受信し、また、割込通知信号線222を介してCPU101と割込監視装置102に割込信号を通知する。また割込要求信号線221と割込通知信号線222は、割込信号を出力する装置の数分だけ存在する。具体的に、nを1以上の整数とすると、割込要求信号線221は、割込要求信号線221−1〜割込要求信号線221−n存在し、割込通知信号線222は、割込通知信号線222−1〜割込通知信号線222−n存在する。
割込監視装置102は、割込を監視する装置である。具体的に、割込監視装置102は、割込コントローラ212からの割込通知信号と、CPU101からのディスパッチ通知信号と、に基づいて、割込処理の遅延が発生しているか否かを、アラーム信号線224に出力する。割込監視装置102の詳細は、図3にて後述する。
図3は、割込監視装置のハードウェア例を示す説明図である。割込監視装置102は、記憶部301と、測定部302と、比較部303と、出力部304と、を含む。記憶部301は、閾値レジスタ311を含む。測定部302は、タイマ312と、ラッチ回路313と、を含む。
閾値レジスタ311は、デバイスの割込ハンドラ103開始までの閾値を記憶するレジスタである。また、閾値レジスタ311は、CPU101によって設定可能なレジスタである。また、閾値レジスタ311は、割込通知信号線222の数分となるn個存在してもよい。
タイマ312は、割込通知信号線222からの外部割込通知を受け付けると経過時間の測定を開始し、ラッチ回路313からの測定終了通知を受け付けるまで測定し続ける。また、タイマ312は、割込通知信号線222の数分となるn個存在してもよい。
ラッチ回路313は、CPU101からのディスパッチ通知を受け付けると、タイマ312へ測定終了を通知し、外部割込通知からディスパッチ通知までとなる、測定結果の時間を比較部303に通知する。
記憶部301は、外部割込通知に対応する所定の閾値を記憶する機能を有する。たとえば、記憶部301は、閾値レジスタ311に所定の閾値を記憶する。また、記憶部301は、所定の閾値を外部割込通知ごとに記憶してもよい。たとえば、閾値レジスタ311−1が、I/F207の割込通知に対応する閾値を記憶し、閾値レジスタ311−2が、ディスプレイ208の割込通知に対応する閾値を記憶する。
測定部302は、外部割込通知を受け付けた時刻から、CPU101からのディスパッチ通知を受け付けた時刻までの時間を測定する機能を有する。また、測定部302は、外部割込通知のうちいずれかの外部割込通知を受け付けた時刻から、CPUからのディスパッチ通知を受け付けた時刻までの時間を測定してもよい。
たとえば、測定部302は、割込通知信号線222から外部割込通知を受け付けると、タイマ312を起動する。また、タイマ312は、割込通知信号線222の数分存在してもよい。たとえば、I/F207が割込通知信号線222−1を経由して外部割込通知を送信した場合、外部割込通知を受け付けたタイマ312は、起動し、測定を開始する。続けて、CPU101からのディスパッチ通知を受け付けると、測定部302は、測定された時間を取得する。
なお、CPU101からのディスパッチ通知は、ディスパッチが発生するたびに通知される。したがって、測定部302は、外部割込通知を受け付けるまでは、ディスパッチ通知を受けても何も行わず、外部割込通知を受け付けて、次のディスパッチ通知までの時間を測定する。
比較部303は、所定の閾値と測定部302によって測定した時間とを比較する機能を有する。たとえば、比較部303は、所定の閾値が16.5[ミリ秒]であり、測定した時間18[ミリ秒]である場合、16.5と18の大小を比較する。
出力部304は、比較部303による比較結果をCPU101へ出力する機能を有する。たとえば、出力部304は、測定した時間が閾値より大きい場合、比較結果としてアラームを出力し、測定した時間が閾値より小さい場合、比較結果として、出力していたアラームを解除する。
(コンピュータシステム100の機能)
次に、コンピュータシステム100の機能について説明する。図4は、コンピュータシステムの機能例を示すブロック図である。コンピュータシステム100は、切替部401と、送信部402と、制御部403と、を含む。この制御部となる機能(切替部401〜制御部403)は、記憶装置に記憶されたプログラムをCPU101が実行することにより、その機能を実現する。記憶装置とは、具体的には、たとえば、図2に示したROM202、RAM203、フラッシュROM204、フラッシュROM206などである。
切替部401は、制御装置で実行中の処理をスレッド群のうちの第1のスレッドから前記外部割込通知に対応する第2のスレッドを実行させる割込ハンドラ103に切り替える機能を有する。ここで、制御装置とは、CPU101と、ROM202、RAM203等の記憶装置とを含めた装置である。たとえば、切替部401は、スレッド1から、スレッド2を実行させる割込ハンドラ103に切り替える。
送信部402は、実行中の処理が第1のスレッドから割込ハンドラ103に切り替わった場合、割込監視装置102にディスパッチ通知を送信する機能を有する。たとえば、送信部402は、スレッド1から割込ハンドラ103に切り替わった場合、割込監視装置102は、割込監視装置102にディスパッチ通知を送信する。
制御部403は、割込監視装置102から比較結果を受け付けた場合、第1のスレッドの優先度を制御する機能を有する。また、制御部403は、割込監視装置102から比較結果として測定された時間が所定の閾値より大きいことを受け付けた場合、第1のスレッドの優先度を低下させてもよい。たとえば、制御部403は、測定された時間が所定の閾値より大きいことを示すアラームを受け付けた場合、スレッド1の優先度を低下させる。
また、制御部403は、割込監視装置102から比較結果として測定された時間が所定の閾値より小さいことを受け付けた場合、第1のスレッドの優先度を復帰させる。たとえば、制御部403は、測定された時間が所定の閾値より小さいことを示すアラームの解除を受け付けた場合、スレッド1の優先度を復帰させる。
図5は、閾値レジスタの設定例を示す説明図である。図5では、表501にてI/F207〜デバイス211が有するデッドライン時間の例を示しており、表502にて、閾値レジスタの設定値の例を示している。
表501で示すように、コンピュータシステム100は、キーボード209の応答を行うデッドライン時間として33[ミリ秒]を、ユーザにとって違和感のない応答時間として設計されている。また、コンピュータシステム100は、通信処理のデッドライン時間として12[ミリ秒]を、通信のQoS(Quality of Service)を保証できる時間として設計されている。
このとき、デッドライン時間をそのまま閾値レジスタに設定してしまうと、デッドライン時間を超過してしまうため、デッドライン時間より短い時間を設定することが好ましい。たとえば、コンピュータシステム100は、キーボード209の閾値レジスタとして、デッドライン時間の整数倍または整数分の1の時間を設定してもよい。
表502の例では、コンピュータシステム100は、整数分の1となる1/2として、キーボード209の閾値レジスタに33×1/2=16.5[ミリ秒]を設定する。また、I/F207についても、コンピュータシステム100は、I/F207の閾値レジスタに12×1/2=6[ミリ秒]を設定する。なお、設定のタイミングは、たとえば、キーボード209の設定レジスタに対してであれば、キー操作を行うアプリケーションが起動される時が適している。
このように、設計時に決められたデッドラインの整数倍または整数分の1で閾値レジスタを設定すると、コンピュータシステム100は、ユーザに対する操作性を向上させることができる。ここで代表として、キーボード209のデッドラインについて、整数倍または整数分の1で設定すると違和感がない理由について説明する。キーボード209のデッドライン時間は、ディスプレイ208のリフレッシュレートに基づいて設定されている。ディスプレイ208のリフレッシュレートが30[Hz]である場合、約33[ミリ秒]に1回画面が更新されることになる。
このとき、閾値レジスタを整数倍または整数分の1でない25[ミリ秒]に設定した場合、画面の更新を1回行う際に、キーボード209の割込を2回取得する場合と、1回取得する場合が発生する。たとえば、ユーザがキーボード209のうち、決定キーを2回素早く押下した場合、決定キーが2回押された状態の画面が表示される場合と、決定キーが1回押された状態の画面が表示され、次の画面の更新にて2回押された状態の画面が表示される場合がある。
このように、閾値レジスタがデバイスの応答時間の整数倍または整数分の1の値で設定されていない場合、ユーザは同じ動作を行っているにも関わらず、コンピュータシステム100は、場合によって異なる操作結果を与えてしまう。閾値レジスタを応答時間の整数倍または整数分の1の値に設定すると、キーボード209の割込を取得する回数が一定となるため、コンピュータシステム100は、ユーザに対する操作性を向上させることができる。
図6は、割込監視装置の動作におけるタイムチャート例を示す説明図である。図6では、キーボード209の割込を例として、割込監視装置102の動作におけるタイムチャートを示している。図6では、スレッド1が高優先度で動作するダウンローダアプリであり、スレッド2が、ユーザからの操作を受け付けるブラウザであることを想定する。また、時刻t0〜t5では、割込監視装置102がアラームを通知する動作を示し、時刻t0'〜t5'では、割込監視装置102がアラームを解除する動作を示す。
時刻t0=0[ミリ秒]の時点で、CPU101はスレッド1を実行しており、また、ユーザの操作により、キーボード209の割込が発生する。割込監視装置102は、割込通知信号線222によって外部割込通知を受け取り、測定を開始する。
続けて、CPU101は、スレッド1の処理を終了し、コンテキストスイッチ時間後となる時刻t2にて、割込ハンドラ103を実行する。なお、時刻t2は、キーボード209の閾値t1=16.5[ミリ秒]以降の時刻である。また、時刻t2にてディスパッチが起こったため、CPU101は、スケジューラ232により、割込監視装置102にディスパッチ通知を送信する。なお、ディスパッチ通知は、時刻t0より前の時刻でも発生しているが、外部割込通知を受け付けるまでは、測定部302は、測定を開始しない。
なお、閾値を超えてしまう状態は、汎用OS特有の現象であり、複数のタスクあるいはスレッドが混載し、かつ、各々のタスクあるいはスレッドに異なる優先度が設定されている場合に発生しやすくなる。また、組込SoC(System−on−a−Chip)特有の共有バス、共有メモリをとる形態である場合も、このような現象を冗長化することがわかっている。
汎用OS特有の現象となる理由として、ソフトウェアを含めたシステムが互いに干渉しあうことで、OS231のディスパッチタイミングがOS231の設定する時間を逸脱する現象が起こるためである。OS231がリアルタイムOSであれば、互いに干渉するような複雑な系統を想定しておらず、全てのリアルタイムスレッドが与えられたタイミングで切り替わるような、設計者主導型のスケジューリングを行うことができる。しかし、本実施の形態におけるOS231は、汎用OSを想定しているため、アプリを優先度付で投入するスケジューリングが行われ、投入後の相互干渉までは設計されていない。
ディスパッチ通知を受け付けた割込監視装置102は、測定時間が閾値より大きいため、CPU101にアラームを通知する。時刻t3にて、CPU101は、割込ハンドラ103の処理が終了した後、スケジューラ232により、ディスパッチ前に実行されていたスレッド1の優先度を低下させる。続けて、時刻t4にて、CPU101は、外部割込通知に対する処理を開始し、コンテキストスイッチ時間が経過した時刻t5にて、スレッド2を実行する。
このように、高優先度であるスレッド1の優先度を一時的に下げることで、コンピュータシステム100の負荷バランスが一時的に変化することになる。複雑な系統におけるアプリ相互干渉が発生したとしても、優先度を下げることで、1つのスレッドに与えられるCPU時間を短くすることで、結果的にディスパッチ間隔が短くなることになる。また、CPU101は、ディスパッチ間隔が短くなると、短くなった分、割込通知を受信しやすくなる。
この現象も、汎用OS独特の現象である。理由として、割込処理は、割込が発生した場合、OS上の割込ベクタにフラグが設定され、ディスパッチによるスレッド切替のタイミングでフラグをチェックすることにより、割込のハンドリング処理が行われるためである。
続けて、時刻t0'=100[ミリ秒]の時点で、CPU101はスレッド1を実行しており、また、ユーザの操作により、キーボード209の割込が発生する。割込監視装置102は、割込通知信号線222によって通知を受け取り、測定を開始する。なお、時刻t0'にて、スレッド1の優先度は低下したままである。
続けて、CPU101は、スレッド1の処理を終了し、コンテキストスイッチ時間後となる時刻t2'にて、割込ハンドラ103を実行する。時刻t2'は、キーボード209の閾値t1'=116.5[ミリ秒]より前の時刻である。また、時刻t2'にてディスパッチが起こったため、CPU101は、スケジューラ232により、割込監視装置102にディスパッチ通知を送信する。
ディスパッチ通知を受け付けた割込監視装置102は、測定時間が閾値より大きいため、CPU101にアラームの解除を通知する。時刻t3'にて、CPU101は、割込ハンドラ103の処理が終了した後、スケジューラ232により、ディスパッチ前に実行されていたスレッド1の優先度を復帰させる。続けて、時刻t4'にて、CPU101は、外部割込通知に対する処理を開始し、コンテキストスイッチ時間が経過した時刻t5'にて、スレッド2を実行する。このように、アラームが解除されると、スケジューラ232は、スレッドの優先度を通常の優先度に戻すことで、想定した運用状態に復帰することができる。
図7は、割込監視処理の処理例を示すフローチャートである。割込監視処理は、OS231が実行してもよいし、スケジューラ232が実行してもよい。OS231が割込監視処理を実行する場合には、OS231は、ディスパッチ発生をスケジューラ232から受け付ける。また、スケジューラ232が実行する場合には、割込監視装置102からのアラームをOS231から受け付ける。図7では、スケジューラ232が実行する場合を想定する。
スケジューラ232は、イベントが発生したか否かを確認する(ステップS701)。イベントが発生していない場合(ステップS701:未発生)、スケジューラ232は、通常処理を実行する(ステップS702)。なお、通常処理とは、スケジューラ232が通常行う、優先度に従ったスレッドのディスパッチ等といった処理である。通常処理の実行後、スケジューラ232は、ステップS701の処理に移行する。
ディスパッチが発生した場合(ステップS701:ディスパッチ発生)、スケジューラ232は、割込監視装置102にディスパッチ通知を送信し(ステップS703)、ステップS702の処理に移行する。
割込監視装置102からのアラーム通知が発生した場合(ステップS701:割込監視装置からのアラーム通知)、スケジューラ232は、実行されていたスレッドの優先度を低下させる(ステップS704)。優先度の低下後、スケジューラ232は、ステップS702の処理に移行する。割込監視装置102からのアラーム解除が発生した場合(ステップS701:割込監視装置からのアラーム解除)、スケジューラ232は、優先度を低下させたスレッドの優先度を復帰させ(ステップS705)、ステップS702の処理に移行する。
なお、割込監視処理は、OS231とスケジューラ232が分担して行ってもよい。具体的には、スケジューラ232は、ディスパッチ発生を検出し、ステップS703の処理を実行し、OS231は、アラームを検出し、ステップS704、ステップS705の処理を実行する。
図8は、本実施の形態にかかるコンピュータシステムの適用例を示す説明図である。本実施の形態にかかるコンピュータを用いたシステムの適用例を示す説明図である。図8において、ネットワークNWは、コンピュータシステム801〜コンピュータシステム804が通信可能なネットワークであり、たとえば、LAN、WAN、インターネット、携帯電話網などを含む。
コンピュータシステム801はノート型PC(Personal Computer)である。コンピュータシステム802はデスクトップ型PC、コンピュータシステム803は携帯電話機である。携帯電話機として、コンピュータシステム803は、スマートフォンであってもよいし、PHS(Personal Handyphone System)であってもよい。コンピュータシステム804はタブレット型端末である。図8のコンピュータシステム801〜コンピュータシステム804は、本実施の形態にかかる割込監視を行う。
以上説明したように、割込監視装置によれば、デバイスからの外部割込の時刻とCPUからのディスパッチ通知の時刻から、割込処理の応答時間をCPU外部で測定する。これにより、割込監視装置は、CPUの負荷量に影響せずに割込処理の遅延を検出し、リアルタイム処理の保証を提供することができる。また、割込監視装置は、汎用OSを搭載した高機能端末に対して、キーボードやタッチパネルなどのユーザ操作に対する良好な応答性能を提供することができる。
また、割込監視装置は、複数のデバイスから通知される外部割込通知ごとに、外部割込通知のうちいずれかの外部割込通知を受け付けた時刻から、CPUからのディスパッチ通知を受け付けた時刻までの時間を測定してもよい。コンピュータシステムに搭載されるデバイスが多く存在し、多くのデバイスから外部割込通知が発生した場合、割込処理を行うスレッド同士が干渉しあってCPUの負荷が増加する場合が想定される。この場合でも、割込監視装置は、増加したCPUの負荷量に影響せずに割込処理の遅延を検出でき、リアルタイム処理を保証することができる。
たとえば、本実施の形態にかかるコンピュータシステムでは、ユーザがブラウザを操作している状態で、高優先度のダウンロードソフトの負荷が増加した場合でも、割込処理の遅延を検出して、ダウンロードソフトの優先度を一時的に低下させ、応答性を保てる。従来のコンピュータシステムでは、ダウンロードソフトの負荷が増加することにより、遅延を検出できず、操作感が著しく低下するような現象が発生してしまう。あるいは、従来のコンピュータシステムは、ブラウザ側に優先度を高く設定することで、ダウンロード通信がタイムアウトするなど、操作感的な不具合が発生してしまう。
また、コンピュータシステムは、割込監視装置からのアラームを受け付けた場合に、切替前となるスレッドの優先度を制御してもよい。これにより、コンピュータシステムは、CPUの外部で測定した割込処理の遅延に対して、原因となるスレッドを特定でき、さらに優先度を制御することで、リアルタイム処理の保証を行うことができる。具体的に、コンピュータシステムは、アラームを受け付けた場合に、切替前となるスレッドの優先度を低下させることで、切替後となるスレッドがCPUに割り当てられる割合が増加するため、リアルタイム処理の保証を行うことができる。また、コンピュータシステムは、アラームの解除を受け付けた場合に、切替前となるスレッドの優先度を復帰させることで、設計者が想定していた運用状態に復帰することができる。
また、コンピュータシステムは、閾値レジスタにデバイスの応答時間の整数倍または整数分の1の時間を設定してもよい。これにより、コンピュータシステムは、ユーザに対する操作性を向上させることができる。なお、閾値レジスタにデバイスの応答時間を設定した場合、コンピュータシステムは、1回目のアラームではデバイスの応答時間を超えてから割込処理に対応する処理を実行することとなり、2回目以降からはデバイスの応答時間以内で処理を実行することになる。リアルタイム処理の保証が比較的緩やかであるキーボード、タッチパネルといったユーザに対する応答性能については、このような制御でも十分に効果を上げることができる。
なお、本実施の形態で説明した割込監視方法は、予め用意されたプログラムをパーソナル・コンピュータやワークステーション等のコンピュータで実行することにより実現することができる。本割込監視プログラムは、ハードディスク、フレキシブルディスク、CD−ROM、MO、DVD等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。また本割込監視プログラムは、インターネット等のネットワークを介して配布してもよい。
また、本実施の形態で説明した割込監視装置102は、スタンダードセルやストラクチャードASIC(Application Specific Integrated Circuit)などの特定用途向けIC(以下、単に「ASIC」と称す。)やFPGAなどのPLD(Programmable Logic Device)によっても実現することができる。具体的には、たとえば、上述した割込監視装置102の機能(記憶部301〜出力部304)をHDL記述によって機能定義し、そのHDL記述を論理合成してASICやPLDに与えることにより、割込監視装置102を製造することができる。
上述した実施の形態に関し、さらに以下の付記を開示する。
(付記1)外部割込通知に対応する所定の閾値を記憶する記憶部と、
前記外部割込通知を受け付けた時刻から、CPUからのディスパッチ通知を受け付けた時刻までの時間を測定する測定部と、
前記所定の閾値と前記測定部によって測定された時間とを比較する比較部と、
前記比較部による比較結果を前記CPUへ出力する出力部と、
を備えることを特徴とする割込監視装置。
(付記2)前記記憶部は、
前記所定の閾値を前記外部割込通知ごとに記憶し、
前記測定部は、
外部割込通知群のうちいずれかの外部割込通知を受け付けた時刻から、CPUからのディスパッチ通知を受け付けた時刻までの時間を測定し、
前記比較部は、
前記いずれかの外部割込通知に対応する所定の閾値と前記測定部によって測定された時間とを比較する、
ことを特徴とする付記1に記載の割込監視装置。
(付記3)スレッド群を制御する制御装置と前記制御装置に通信可能な割込監視装置と前記制御装置に通信可能なデバイスとを含むコンピュータシステムであって、
前記割込監視装置は、
前記デバイスからの外部割込通知に対応する所定の閾値を記憶する記憶部と、
前記外部割込通知を受け付けた時刻から、前記制御装置からのディスパッチ通知を受け付けた時刻までの時間を測定する測定部と、
前記所定の閾値と前記測定部によって測定された時間とを比較する比較部と、
前記比較部による比較結果を前記制御装置へ出力する出力部と、
を備え、
前記制御装置は、
前記制御装置で実行中の処理が前記スレッド群のうちの第1のスレッドから前記外部割込通知に対応する第2のスレッドを実行させる割込ハンドラに切り替わった場合、前記割込監視装置に前記ディスパッチ通知を送信する送信部と、
前記割込監視装置から前記比較結果を受け付けた場合、前記第1のスレッドの優先度を制御する制御部と、
を備えることを特徴とするコンピュータシステム。
(付記4)前記制御部は、
前記比較結果として前記測定された時間が前記所定の閾値より大きいことを前記割込監視装置から受け付けた場合、前記第1のスレッドの優先度を低下させる、
ことを特徴とする付記3に記載のコンピュータシステム。
(付記5)前記制御部は、
前記比較結果として前記測定された時間が前記所定の閾値より小さいことを前記割込監視装置から受け付けた場合、前記第1のスレッドの優先度を復帰させる、
ことを特徴とする付記3に記載のコンピュータシステム。
(付記6)前記所定の閾値が、前記デバイスに設定される応答時間の整数倍または整数分の1の値であることを特徴とする付記3〜5のいずれか一つに記載のコンピュータシステム。
1、2 スレッド
100 コンピュータシステム
101 CPU
102 割込監視装置
103 割込ハンドラ
301 記憶部
302 測定部
303 比較部
304 出力部
401 切替部
402 送信部
403 制御部