(57)【特許請求の範囲】
【請求項１】
プロセッサによって実行される割込処理を実行する契機となる割込要求を受け付ける受付部と、
前記受付部によって割込要求を受け付けた時刻を記憶領域に格納する格納部と、
前記受付部によって割込要求を受け付けた場合、前記割込要求を受け付けた時刻と前記記憶領域から読み出された特定の時間情報とに基づいて、前記割込要求の次の割込要求を受け付ける予測時刻を算出する算出部と、
前記プロセッサにて実行可能なスレッドのうち前記プロセッサによって実行されるスレッドを検出する検出部と、
前記検出部によって検出されたスレッドがある場合、前記算出部によって算出された予測時刻から所定の閾値を減算した時刻と前記予測時刻から前記所定の閾値を加算した時刻との間に現在時刻が存在するか否かを判断することにより、前記検出されたスレッドの実行中に割込処理を実行する可能性があるか否かを判断する判断部と、
前記判断部による判断結果に基づいて、前記検出されたスレッドを前記プロセッサによって実行するか否かを決定する決定部と、
前記決定部による決定結果に基づいて、前記検出されたスレッドを前記プロセッサによって実行する実行部と、
を有することを特徴とするデータ処理装置。
【請求項２】
前記実行可能なスレッドが前記割込処理の実行を阻害するか否かを示す情報を前記記憶領域以外の他の記憶領域に記憶する記憶部を有し、
前記判断部は、
さらに、前記割込処理の実行を阻害するか否かを示す情報を参照して、前記検出されたスレッドが前記割込処理の実行を阻害するか否かを判断することを特徴とする請求項１に記載のデータ処理装置。
【請求項３】
前記決定部は、
前記判断部によって前記検出されたスレッドの実行中に前記割込処理を実行する可能性があり、かつ、前記検出されたスレッドが前記割込処理の実行を阻害すると判断された場合、前記割込処理の実行を阻害するか否かを示す情報を参照して、前記実行可能なスレッドのうち前記検出されたスレッド以外の割込処理を阻害しないスレッドを前記プロセッサによって実行すると決定し、
前記実行部は、
前記決定部によって前記割込処理を阻害しないスレッドを実行すると決定された場合、前記割込処理を阻害しないスレッドを前記プロセッサによって実行することを特徴とする請求項２に記載のデータ処理装置。
【請求項４】
前記実行可能なスレッドの実行による前記プロセッサのバスへのアクセス回数を取得する取得部を有し、
前記判断部は、
さらに、前記取得部によって取得されたアクセス回数に基づいて、前記検出されたスレッドが前記割込処理の実行を阻害するか否かを判断することを特徴とする請求項１〜３のいずれか一つに記載のデータ処理装置。
【請求項５】
前記実行可能なスレッドの実行による前記プロセッサの割込禁止命令実行回数を取得する取得部を有し、
前記判断部は、
さらに、前記取得部によって取得された割込禁止命令実行回数に基づいて、前記検出されたスレッドが前記割込処理の実行を阻害するか否かを判断することを特徴とする請求項１〜３のいずれか一つに記載のデータ処理装置。
【請求項６】
前記検出部は、
前記プロセッサが複数存在する場合、いずれかのプロセッサによって実行されるスレッドを検出し、
前記決定部は、
前記判断部によって前記検出されたスレッドの実行中に前記割込処理を実行する可能性があり、かつ、前記検出されたスレッドが前記割込禁止命令実行回数に基づいて前記割込処理の実行を阻害すると判断された場合、前記検出されたスレッドまたは前記割込処理のいずれか一方を前記いずれかのプロセッサによって実行すると決定するとともに、他方を前記プロセッサのうち前記いずれかのプロセッサ以外の他のプロセッサによって実行することを決定し、
前記実行部は、
前記一方を前記いずれかのプロセッサによって実行するとともに、前記他方を前記他のプロセッサによって実行することを特徴とする請求項５に記載のデータ処理装置。
【請求項７】
バスにそれぞれ接続するプロセッサと送信装置とを含むデータ処理装置であって、
前記プロセッサによって実行される割込処理を実行する契機となる割込要求を受け付ける受付部と、
前記受付部によって割込要求を受け付けた時刻を記憶領域に格納する格納部と、
前記受付部によって割込要求を受け付けた場合、前記割込要求を受け付けた時刻と前記記憶領域から読み出された特定の時間情報とに基づいて、前記割込要求の次の割込要求を受け付ける時間帯を決定する決定部と、
前記決定部によって決定された時間帯での前記送信装置が前記バスを介して送信するデータの送信単位の分割数を、前記時間帯以外の時点における分割数より大きくして送信するように前記送信装置を制御する制御部と、
を有することを特徴とするデータ処理装置。
【請求項８】
割込要求の受付装置とバスで接続する送信装置であって、
前記バスを介して送信するデータの送信単位の分割数を記憶する記憶部と、
前記受付装置にて前記割込要求を受け付ける時間帯を前記受付装置から取得する取得部と、
前記取得部によって取得された時間帯において、前記分割数を前記記憶部に記憶された分割数より大きい値に変更する変更部と、
前記変更部によって変更された分割数で前記データを分割して送信する送信部と、
を有することを特徴とする送信装置。
【請求項９】
前記取得部は、
さらに、前記割込要求を受け付ける予測時刻を取得し、
前記変更部は、
前記時間帯のうち前記時間帯の開始時刻から前記予測時刻までにおいて、変更後の分割数を変更前の分割数より大きい値に変更し、前記時間帯のうち前記予測時刻から前記時間帯の終了時刻までにおいて、変更後の分割数を変更前の分割数より小さい値に変更することを特徴とする請求項８に記載の送信装置。
【請求項１０】
コンピュータが、
プロセッサによって実行される割込処理を実行する契機となる割込要求を受け付け、
割込要求を受け付けた時刻を記憶領域に格納し、
割込要求を受け付けた場合、前記割込要求を受け付けた時刻と前記記憶領域から読み出された特定の時間情報とに基づいて、前記割込要求の次の割込要求を受け付ける予測時刻を算出し、
前記プロセッサにて実行可能なスレッドのうち前記プロセッサによって実行されるスレッドを検出し、
検出されたスレッドがある場合、算出された予測時刻から所定の閾値を減算した時刻と前記予測時刻から前記所定の閾値を加算した時刻との間に現在時刻が存在するか否かを判断することにより、前記検出されたスレッドの実行中に前記割込処理を実行する可能性があるか否かを判断し、
判断結果に基づいて、前記検出されたスレッドを前記プロセッサによって実行するか否かを決定し、
決定結果に基づいて、前記検出されたスレッドを前記プロセッサによって実行する、
処理を実行することを特徴とするスケジューリング方法。
【請求項１１】
バスにそれぞれ接続するプロセッサと送信装置とを含むコンピュータが、
前記プロセッサによって実行される割込処理を実行する契機となる割込要求を受け付け、
割込要求を受け付けた時刻を記憶領域に格納し、
割込要求を受け付けた場合、前記割込要求を受け付けた時刻と前記記憶領域から読み出された特定の時間情報とに基づいて、前記割込要求の次の割込要求を受け付ける時間帯を決定し、
決定された時間帯での前記送信装置が前記バスを介して送信するデータの送信単位の分割数を、前記時間帯以外の時点における分割数より大きくして送信するように前記送信装置を制御する、
処理を実行することを特徴とする送信制御方法。
【請求項１２】
コンピュータに、
プロセッサによって実行される割込処理を実行する契機となる割込要求を受け付け、
割込要求を受け付けた時刻を記憶領域に格納し、
割込要求を受け付けた場合、前記割込要求を受け付けた時刻と前記記憶領域から読み出された特定の時間情報とに基づいて、前記割込要求の次の割込要求を受け付ける予測時刻を算出し、
前記プロセッサにて実行可能なスレッドのうち前記プロセッサによって実行されるスレッドを検出し、
検出されたスレッドがある場合、算出された予測時刻から所定の閾値を減算した時刻と前記予測時刻から前記所定の閾値を加算した時刻との間に現在時刻が存在するか否かを判断することにより、前記検出されたスレッドの実行中に前記割込処理を実行する可能性があるか否かを判断し、
判断結果に基づいて、前記検出されたスレッドを前記プロセッサによって実行するか否かを決定し、
決定結果に基づいて、前記検出されたスレッドを前記プロセッサによって実行する、
処理を実行させることを特徴とするスケジューリングプログラム。
【請求項１３】
バスにそれぞれ接続するプロセッサと送信装置とを含むコンピュータに、
前記プロセッサによって実行される割込処理を実行する契機となる割込要求を受け付け、
割込要求を受け付けた時刻を記憶領域に格納し、
割込要求を受け付けた場合、前記割込要求を受け付けた時刻と前記記憶領域から読み出された特定の時間情報とに基づいて、前記割込要求の次の割込要求を受け付ける時間帯を決定し、
決定された時間帯での前記送信装置が前記バスを介して送信するデータの送信単位の分割数を、前記時間帯以外の時点における分割数より大きくして送信するように前記送信装置を制御する、
処理を実行させることを特徴とする送信制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ処理装置、送信装置、スケジューリング方法、送信制御方法、スケジューリングプログラム、および送信制御プログラムに関する。
【背景技術】
【０００２】
近年、１つのＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）に対して、複数のプログラムを動作させるマルチプログラミング技術が存在する。具体的には、ＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）は、ＣＰＵの処理時間を分割する機能を有し、分割された時間にスレッドを割り当てることにより、ＣＰＵは同時に複数のスレッドを動作する。ここで、スレッドはプログラムの実行単位である。【０００３】
たとえば、関連する技術として、電気機器が動作モードとして通常モードと省電力モードを有しており、動作モードを切り替えるための移行処理および復帰処理に伴う電力消費量を考慮して、動作モードを切り替えるものがある（たとえば、下記特許文献１を参照。）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００６−７２９９１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、上述した従来技術において、メモリへのデータ送信の多いスレッドが実行されるとバスが占有される。このとき、割込要求を受け付けたＣＰＵが他のＣＰＵに割込処理を実行させようとしても、バスが解放するまで他のＣＰＵは割込処理を実行できず、応答性能が低下する。また、割込禁止命令を多く発行するスレッドが実行されると、割込処理を実行することができず、応答性能が低下する。【０００６】
本発明は、上述した従来技術による問題点を解消するため、応答性能を向上できるデータ処理装置、送信装置、スケジューリング方法、送信制御方法、スケジューリングプログラム、および送信制御プログラムを提供することを目的とする。
【課題を解決するための手段】
【０００７】
上述した課題を解決し、目的を達成するため、本発明の一側面によれば、プロセッサによって実行される割込処理を実行する契機となる割込要求を受け付け、割込要求を受け付けた時刻を記憶領域に格納し、割込要求を受け付けた場合、割込要求を受け付けた時刻に基づいて、割込要求の次の割込要求を受け付ける予測時刻を算出し、プロセッサにて実行可能なスレッドのうちプロセッサによって実行されるスレッドを検出し、検出されたスレッドがある場合、算出された予測時刻と現在時刻とに基づいて、検出されたスレッドの実行中に割込処理を実行する可能性があるか否かを判断し、判断結果に基づいて、検出されたスレッドをプロセッサによって実行するか否かを決定し、決定結果に基づいて、検出されたスレッドをプロセッサによって実行するデータ処理装置、スケジューリング方法、およびスケジューリングプログラムが提案される。【０００８】
また、本発明の他の側面によれば、プロセッサによって実行される割込処理を実行する契機となる割込要求を受け付け、割込要求を受け付けた時刻を記憶領域に格納し、割込要求を受け付けた場合、割込要求を受け付けた時刻に基づいて、割込要求の次の割込要求を受け付ける時間帯を決定し、決定された時間帯での送信装置によるデータの送信単位の分割数を、時間帯以外の時点における分割数より大きくして送信するように送信装置を制御するデータ処理装置、送信制御方法、および送信制御プログラムが提案される。【０００９】
また、本発明の他の側面によれば、データの送信単位の分割数を記憶し、割込要求の受付装置にて割込要求を受け付ける時間帯を取得し、取得された時間帯において、分割数を記憶部に記憶された分割数より大きい値に変更し、変更された分割数でデータを分割して送信する送信装置が提案される。
【発明の効果】
【００１０】
本発明の一側面によれば、応答性能の向上を図ることができるという効果を奏する。
【図面の簡単な説明】
【００１１】
【図１】図１は、データ処理装置の動作例を示す説明図である。
【図２】図２は、データ処理装置のハードウェア例を示すブロック図である。
【図３】図３は、データ処理装置の機能的構成例を示すブロック図である。
【図４】図４は、ＤＭＡコントローラの機能的構成例を示すブロック図である。
【図５】図５は、パラメータテーブルの一例を示す説明図である。
【図６】図６は、スレッドテーブルの記憶内容の一例を示す説明図である。
【図７】図７は、割込情報テーブルの記憶内容の一例を示す説明図である。
【図８】図８は、ＣＰＵ割込命令状態テーブルの例を示す説明図である。
【図９】図９は、割込阻害要因の排除方法の第１の例を示す説明図である。
【図１０】図１０は、割込阻害要因の排除方法の第２の例を示す説明図である。
【図１１】図１１は、割込阻害要因の排除方法の第３の例を示す説明図である。
【図１２】図１２は、次回割込予測時刻の算出例を示す説明図である。
【図１３】図１３は、ＤＭＡコントローラのデータ送信分割の例を示す説明図である。
【図１４】図１４は、割込阻害要因の排除処理手順の一例を示すフローチャートである。
【図１５】図１５は、スレッドスイッチ時処理手順の一例を示すフローチャートである。
【図１６】図１６は、スレッド実行終了時処理手順の一例を示すフローチャートである。
【図１７】図１７は、タイマ回路の処理手順の一例を示すフローチャートである。
【図１８】図１８は、バス調停回路の処理手順の一例を示すフローチャートである。
【図１９】図１９は、ＤＭＡコントローラの処理手順の一例を示すフローチャートである。
【図２０】図２０は、本実施の形態にかかるコンピュータを用いたシステムの適用例を示す説明図である。
【発明を実施するための形態】
【００１２】
以下に添付図面を参照して、開示のデータ処理装置、送信装置、スケジューリング方法、送信制御方法、スケジューリングプログラム、および送信制御プログラムの実施の形態を詳細に説明する。
【００１３】
図１は、データ処理装置の動作例を示す説明図である。データ処理装置１００は、データ処理装置１００全体を制御するＣＰＵ＃０と、データ処理装置１００内のハードウェアを接続するバス１０１を有する。ＣＰＵ＃０は、実行優先度が低い低優先度スレッドを実行する。また、ＣＰＵ＃０は、割込要求を受け付けた場合に、実行優先度が高い割込処理を実行する。さらに、ＣＰＵ＃０は、割込処理の実行を阻害する割込処理阻害スレッドを実行する。割込処理の実行を阻害する要因としては、たとえば、割込処理阻害スレッドがバス１０１に頻繁にアクセスしたために、割込処理の実行が遅延した場合である。また、他の要因としては、たとえば、割込処理阻害スレッドが割込禁止命令を頻繁に発行したために、割込処理の実行が遅延した場合である。
【００１４】
以下、バス１０１に頻繁にアクセスするスレッドを、バス占有スレッドと呼称する。同様に、割込禁止命令を頻繁に発行するスレッドを、割込禁止スレッドと呼称する。頻繁か否かの判断方法については、図５、図６で後述する。
【００１５】
本実施の形態にかかるデータ処理装置１００では、割込処理の実行を早く行い、応答性能を向上させることを目的とする。また、図１の（Ａ）、図１の（Ｂ）に共通する設定として、時刻ｔ０と時刻ｔ１にそれぞれに割込要求が発生しており、ＣＰＵ＃０は、割込要求に対応する割込処理を実行している。時刻ｔ１にて割込要求を受け付けた場合、ＣＰＵ＃０は、次の割込要求が発生する予測時刻として、時刻ｔ３を算出する。図１の（Ａ）は、割込阻害要因を排除しなかった場合のスレッドの実行状態を示しており、１の（Ｂ）は、割込阻害要因を排除した場合のスレッドの実行状態を示している。
【００１６】
図１の（Ａ）の時刻ｔ２にてスレッド切替タイミングとなった場合、ＣＰＵ＃０は、実行可能キューに格納されたスレッドのうち、割込処理阻害スレッドを実行する。なお、実行可能キューとは、スレッドが実行可能状態であるスレッドが格納されているキューである。続けて、時刻ｔ３にて割込要求が発生した場合、割込処理阻害スレッドにより、割込処理の実行が遅くなり、応答性能が低下する。
【００１７】
図１の（Ｂ）では、時刻ｔ２にてスレッド切替タイミングとなった場合、ＣＰＵ＃０は、予測時刻である時刻ｔ３と現在時刻である時刻ｔ２とから、実行予定となる割込処理阻害スレッドの実行中に割込処理を実行する可能性があるか否かを判断する。図１の例では、ＣＰＵ＃０は可能性があると判断し、割込処理阻害スレッドを実行せずに他のスレッドを実行する。これにより、時刻ｔ３にて割込要求が発生しても、割込処理が直ぐに実行でき、応答性能が向上する。
【００１８】
このように、データ処理装置１００は、割込要求が次に発生する予測時刻を求めておき、スレッドを実行する場合に、現在時刻が予測時刻に近ければスレッド実行を行わない。これにより、データ処理装置１００は、割込要求に対する割込処理が阻害されなくなるため、応答性能を向上できる。
【００１９】
図２は、データ処理装置のハードウェア例を示すブロック図である。本実施の形態におけるデータ処理装置１００は、携帯電話などの携帯端末を想定している。図２において、データ処理装置１００は、ＣＰＵｓ２０１と、割込コントローラ２０２と、ＲＯＭ（Ｒｅａｄ‐Ｏｎｌｙ  Ｍｅｍｏｒｙ）２０３と、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）２０４と、を含む。また、データ処理装置１００は、フラッシュＲＯＭ２０５と、フラッシュＲＯＭコントローラ２０６と、フラッシュＲＯＭ２０７と、を含む。また、データ処理装置１００は、ＤＭＡコントローラ２０８と、ディスプレイ２０９と、Ｉ／Ｆ（Ｉｎｔｅｒｆａｃｅ）２１０と、キーボード２１１と、バス調停回路２１２と、を含む。また、各部はバス１０１によってそれぞれ接続されている。
【００２０】
ＣＰＵｓ２０１は、データ処理装置１００の全体の制御を司る。また、ＣＰＵｓ２０１は、ＣＰＵ＃０〜ＣＰＵ＃ｎを含む。ｎは０以上の整数である。また、ＣＰＵｓ２０１は、専用のキャッシュメモリを有してもよい。また、データ処理装置１００は、複数のコアを含むマルチコアプロセッサシステムであってもよい。なお、マルチコアプロセッサシステムとは、コアが複数搭載されたプロセッサを含むコンピュータのシステムである。コアが複数搭載されていれば、複数のコアが搭載された単一のプロセッサでもよく、シングルコアのプロセッサが並列されているプロセッサ群でもよい。なお、本実施の形態では、シングルコアのプロセッサであるＣＰＵが並列されている形態を例にあげて説明する。
【００２１】
割込コントローラ２０２は、ディスプレイ２０９と、キーボード２１１等といったハードウェアからの割込信号を受信し、ＣＰＵｓ２０１のいずれかのＣＰＵに通知する。ＲＯＭ２０３は、ブートプログラムなどのプログラムを記憶している。ＲＡＭ２０４は、ＣＰＵｓ２０１のワークエリアとして使用される。フラッシュＲＯＭ２０５は、読出し速度が高速なフラッシュＲＯＭであり、たとえば、ＮＯＲ型フラッシュメモリである。たとえば、フラッシュＲＯＭ２０５は、ＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）などのシステムソフトウェアやアプリなどを記憶している。たとえば、ＯＳを更新する場合、データ処理装置１００は、Ｉ／Ｆ２１０によって新しいＯＳを受信し、フラッシュＲＯＭ２０５に格納されている古いＯＳを、受信した新しいＯＳに更新する。
【００２２】
フラッシュＲＯＭコントローラ２０６は、ＣＰＵｓ２０１の制御にしたがってフラッシュＲＯＭ２０７に対するデータのリード／ライトを制御する。フラッシュＲＯＭ２０７は、データの保存、運搬を主に目的としたフラッシュＲＯＭであり、たとえば、ＮＡＮＤ型フラッシュメモリである。フラッシュＲＯＭ２０７は、フラッシュＲＯＭコントローラ２０６の制御で書き込まれたデータを記憶する。データの具体例としては、データ処理装置１００を使用するユーザがＩ／Ｆ２１０を通して取得した画像データ、映像データや、また本実施の形態にかかるスケジューリングプログラムおよび送信制御プログラムなどである。フラッシュＲＯＭ２０７は、たとえば、メモリカード、ＳＤカードなどを採用することができる。
【００２３】
ＤＭＡコントローラ２０８は、ＣＰＵｓ２０１を介さずにデータ送信を行う装置である。たとえば、ＤＭＡコントローラ２０８は、ＲＡＭ２０４からディスプレイ２０９の有するバッファへデータを送信する。
【００２４】
ディスプレイ２０９は、カーソル、アイコンあるいはツールボックスを始め、文書、画像、機能情報などのデータを表示する。ディスプレイ２０９は、たとえば、ＴＦＴ（Ｔｈｉｎ  Ｆｉｌｍ  Ｔｒａｎｓｉｓｔｏｒ）液晶ディスプレイなどを採用することができる。
【００２５】
Ｉ／Ｆ２１０は、通信回線を通じてＬＡＮ、ＷＡＮ（Ｗｉｄｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、インターネットなどのネットワーク２１３に接続され、ネットワーク２１３を介して他の装置に接続される。そして、Ｉ／Ｆ２１０は、ネットワーク２１３と内部のインターフェースを司り、外部装置からのデータの入出力を制御する。Ｉ／Ｆ２１０には、たとえばモデムやＬＡＮアダプタなどを採用することができる。
【００２６】
キーボード２１１は、数字、各種指示などの入力のためのキーを有し、データの入力を行う。また、キーボード２１１は、タッチパネル式の入力パッドやテンキーなどであってもよい。バス調停回路２１２は、バス１０１に対するアクセスの調停を行う。
【００２７】
（データ処理装置１００の機能）
次に、データ処理装置１００の機能について説明する。図３は、データ処理装置の機能的構成例を示すブロック図である。データ処理装置１００は、記憶部３００と、受付部３０１と、格納部３０２と、算出部３０３と、検出部３０４と、取得部３０５と、判断部３０６と、決定部３０７と、実行部３０８と、決定部３０９と、制御部３１０と、を含む。受付部３０１〜制御部３１０は、記憶装置に記憶されたプログラムをＣＰＵ＃０が実行することにより、その機能を実現する。記憶装置とは、具体的には、たとえば、図２に示したＲＯＭ２０３、ＲＡＭ２０４、フラッシュＲＯＭ２０５、フラッシュＲＯＭ２０７などである。
【００２８】
また、図３では、受付部３０１〜制御部３１０が、ＣＰＵ＃０の機能であるように図示されているが、ＣＰＵ＃０以外の他のＣＰＵの機能であってもよい。
【００２９】
また、データ処理装置１００は、記憶部３００が記憶する内容として、パラメータテーブル３１１と、スレッドテーブル３１２と、割込情報テーブル３１３と、ＣＰＵ割込命令状態テーブル３１４と、にアクセス可能である。記憶部３００は、ＲＡＭ２０４、フラッシュＲＯＭ２０５、フラッシュＲＯＭ２０７といった記憶装置である。
【００３０】
パラメータテーブル３１１は、本実施の形態で用いる定数や、閾値を記憶する。パラメータテーブル３１１の記憶内容の詳細は、図５にて後述する。スレッドテーブル３１２は、割込処理の実行を阻害するか否かを示す情報を記憶する。スレッドテーブル３１２の記憶内容の詳細は、図６にて後述する。割込情報テーブル３１３は、割込処理に関する情報を記憶しており、たとえば、割込要求を受け付けた時刻と、次の割込要求の予測時刻を記憶する。割込情報テーブル３１３の記憶内容の詳細は、図７にて後述する。ＣＰＵ割込命令状態テーブル３１４は、割込処理を実行可能か否かを示す状態を記憶する。ＣＰＵ割込命令状態テーブル３１４の記憶内容の詳細は、図８にて後述する。
【００３１】
記憶部３００は、実行可能なスレッドが割込処理の実行を阻害するか否かを示す情報を記憶する。実行可能なスレッドとは、実行可能状態にあるスレッドである。たとえば、記憶部３００は、割込処理を阻害することを示す識別子または割込処理を阻害しないことを示す識別子のいずれか一方を、スレッドごとに記憶する。また、記憶部３００は、データ処理装置１００で実行される可能性のあるスレッド全てに対して、割込処理の実行を阻害するか否かを示す情報を記憶しておいてもよい。
【００３２】
受付部３０１は、プロセッサによって実行される割込処理を実行する契機となる割込要求を受け付ける。たとえば、ユーザがキーボード２１１の操作を行った場合、受付部３０１は、割込コントローラ２０２に接続しているＣＰＵから割込要求を受け付ける。プロセッサとは、たとえば、ＣＰＵ＃０である。受付部３０１の機能により、データ処理装置１００は、割込処理を実行する契機を判別することができる。なお、受け付けた情報は、ＲＡＭ２０４、フラッシュＲＯＭ２０５、フラッシュＲＯＭ２０７などの記憶領域に記憶される。
【００３３】
格納部３０２は、受付部３０１によって割込要求を受け付けた時刻を記憶領域に格納する。たとえば、受付部３０１によって割込要求を１２：００：１０に受け付けた場合、格納部３０２は、１２：００：１０を記憶する。格納部３０２の動作により、データ処理装置１００は、過去の割込要求の受付時刻を参照することができる。
【００３４】
算出部３０３は、ＣＰＵが割込要求を受け付けた場合、割込要求を受け付けた時刻と記憶領域から読み出された特定の時間情報とに基づいて、割込要求の次の割込要求を受け付ける予測時刻を算出する。特定の時間情報は、たとえば、所定時間であってもよいし、前回の割込要求を受け付けた時刻であってもよいし、さらに、過去の割込要求の受付間隔であってもよい。
【００３５】
予測時刻の算出方法として、算出部３０３は、たとえば、割込要求を受け付けた時刻に所定時間を加算した時刻を予測時刻としてもよい。また、算出部３０３は、たとえば、割込要求を受け付けた時刻に、割込要求を受け付けた時刻と格納部３０２により記憶領域に格納された前回の割込要求を受け付けた時刻の差分を加算した時刻を予測時刻としてもよい。また、算出部３０３は、割込要求を受け付けた時刻に、割込要求を受け付けた時刻および格納部３０２により記憶領域に格納された前回の割込要求を受け付けた時刻の差分と、過去の割込要求の受付間隔と、の平均を加算してもよい。また、算出部３０３は、前述の平均に関して、過去の割込要求の受付間隔に、受け付けた回数を重みとして加重平均を求めてもよい。
【００３６】
たとえば、記憶領域に割込要求を受け付けた時刻として１２：００：１０が格納されており、割込要求を１２：００：２０に受け付けたとする。算出部３０３は、予測時刻を、１２：００：２０＋（１２：００：２０−１２：００：１０）＝１２：００：３０と算出する。算出部３０３の動作により、データ処理装置１００は、次に割込要求の発生時刻を予測することができる。なお、算出された予測時刻は、ＲＡＭ２０４、フラッシュＲＯＭ２０５、フラッシュＲＯＭ２０７などの記憶領域に記憶される。
【００３７】
検出部３０４は、ＣＰＵにて実行可能なスレッドのうちＣＰＵによって実行されるスレッドを検出する。たとえば、検出部３０４は、バス占有スレッドを検出する。また、検出部３０４は、ＣＰＵが複数存在する場合、いずれかのＣＰＵによって実行されるスレッドを検出してもよい。たとえば、検出部３０４は、ＣＰＵ＃０〜ＣＰＵ＃ｎのうち、ＣＰＵ＃０によって実行されるスレッドを検出する。
【００３８】
検出部３０４の機能により、データ処理装置１００は、割込処理を阻害する可能性があるか否かを検出するタイミングを得ることができる。なお、検出されたスレッドの識別情報、ポインタ等が、ＲＡＭ２０４、フラッシュＲＯＭ２０５、フラッシュＲＯＭ２０７などの記憶領域に記憶される。
【００３９】
取得部３０５は、実行可能なスレッドの実行によるＣＰＵのバス１０１へのアクセス回数を取得する。バス１０１へのアクセス回数の取得方法は、たとえば、バス調停回路２１２で計数することで取得してもよいし、各ＣＰＵにてアクセスする場合に、アクセス先アドレスからバス１０１を経由するアクセスを計数することで取得してもよい。また、取得部３０５は、実行可能なスレッドの実行によるＣＰＵの割込禁止命令実行回数を取得してもよい。たとえば、取得部３０５は、ＣＰＵ＃０が計数した割込禁止命令の実行回数を取得する。なお、取得された情報は、ＲＡＭ２０４、フラッシュＲＯＭ２０５、フラッシュＲＯＭ２０７などの記憶領域に記憶される。
【００４０】
判断部３０６は、検出部３０４によって検出されたスレッドがある場合、算出部３０３によって算出された予測時刻と現在時刻とに基づいて、検出されたスレッドの実行中に割込処理を実行する可能性があるか否かを判断する。
【００４１】
たとえば、判断部３０６は、予測時刻から閾値を減算した時刻と予測時刻に閾値を加算した時刻との間に、現在時刻が存在する場合、検出されたスレッドの実行中に割込処理を実行する可能性があると判断する。また、判断部３０６は、予測時刻から閾値を減算した時刻と閾値を加算した時刻との間に、予測時刻にスレッドが切り替わるタイムスライスの時間を加算した時刻が存在する場合、検出されたスレッドの実行中に割込処理を実行する可能性があると判断してもよい。
【００４２】
たとえば、算出部３０３が予測時刻を１２：００：２０として算出し、検出部３０４が１２：００：１９．５にバス占有スレッドを検出し、閾値が０．５［秒］であるとする。このとき、判断部３０６は、１２：００：２０−０．５＝１２：００：１９．５であるため、検出されたスレッドの実行中に割込処理を実行する可能性があると判断する。
【００４３】
また、判断部３０６は、記憶部３００に記憶されている割込処理の実行を阻害するか否かを示す情報を参照して、検出されたスレッドが割込処理の実行を阻害するか否かを判断してもよい。たとえば、判断部３０６は、検出されたスレッドに対して割込処理を阻害することを示す識別子が記憶されている場合、割込処理の実行を阻害すると判断する。
【００４４】
また、判断部３０６は、取得部３０５によって取得されたアクセス回数に基づいて、検出されたスレッドが割込処理の実行を阻害するか否かを判断してもよい。たとえば、判断部３０６は、取得されたアクセス回数が閾値以上であれば、割込処理の実行を阻害すると判断する。または、取得部３０５が単位時間ごとにアクセス回数を取得しておき、アクセス回数の平均を算出しておいて、平均より大きいアクセス回数を取得した場合に、判断部３０６は、検出されたスレッドが割込処理の実行を阻害すると判断してもよい。
【００４５】
また、判断部３０６は、取得部３０５によって取得された割込禁止命令実行回数に基づいて、検出されたスレッドが割込処理の実行を阻害するか否かを判断してもよい。たとえば、取得された割込禁止命令実行回数が閾値以上であれば、割込処理の実行を阻害すると判断する。ここで、閾値は、たとえば、データ処理装置１００の設計者またはユーザによって指定された値である。または、取得部３０５が単位時間ごとに割込禁止命令実行回数を取得しておき、割込禁止命令実行回数の平均を算出しておく。そして、平均より大きい割込禁止命令実行回数を取得した場合、判断部３０６は、検出されたスレッドが割込処理の実行を阻害すると判断してもよい。
【００４６】
判断部３０６の動作により、データ処理装置１００は、検出されたスレッドを実行するか否かを判断できる。なお、判断結果は、ＲＡＭ２０４、フラッシュＲＯＭ２０５、フラッシュＲＯＭ２０７などの記憶領域に記憶される。
【００４７】
決定部３０７は、判断部３０６による判断結果に基づいて、検出されたスレッドをＣＰＵによって実行するか否かを決定する。たとえば、判断部３０６が検出されたスレッドの実行中に割込処理を実行する可能性がないと判断した場合、決定部３０７は、検出されたスレッドをＣＰＵによって実行することを決定する。また、判断部３０６が、検出されたスレッドの実行中に割込処理を実行する可能性があると判断した場合、決定部３０７は、検出されたスレッドをＣＰＵによって実行しないことを決定する。また、判断部３０６が、検出されたスレッドが割込処理の実行を阻害しないと判断した場合、検出されたスレッドをＣＰＵによって実行することを決定する。
【００４８】
また、決定部３０７は、判断部３０６によって検出されたスレッドの実行中に割込処理を実行する可能性があり、かつ、検出されたスレッドが割込処理の実行を阻害すると判断された場合、検出されたスレッドをＣＰＵによって実行しないと決定してもよい。
【００４９】
また、判断部３０６が、検出されたスレッドの実行中に割込処理を実行する可能性があり、かつ、検出されたスレッドが割込禁止命令実行回数に基づいて割込処理の実行を阻害すると判断した場合とする。このとき、決定部３０７は、検出されたスレッドまたは割込処理のいずれか一方をいずれかのＣＰＵによって実行すると決定するとともに、他方をＣＰＵのうちいずれかのＣＰＵ以外の他のＣＰＵによって実行することを決定してもよい。
【００５０】
具体的には、判断部３０６が検出されたスレッドの割込禁止命令実行回数が閾値以上となり、割込処理の実行を阻害すると判断したとする。このとき、決定部３０７は、たとえば、検出されたスレッドをＣＰＵ＃０によって実行すると決定し、割込処理をＣＰＵ＃１によって実行すると決定する。また、決定部３０７は、検出されたスレッドをＣＰＵ＃１によって実行すると決定し、割込処理をＣＰＵ＃０によって実行すると決定してもよい。なお、決定結果は、ＲＡＭ２０４、フラッシュＲＯＭ２０５、フラッシュＲＯＭ２０７などの記憶領域に記憶される。
【００５１】
実行部３０８は、決定部３０７による決定結果に基づいて、検出されたスレッドをＣＰＵによって実行する。たとえば、決定部３０７が検出されたスレッドを実行すると決定した場合、実行部３０８は、検出されたスレッドをＣＰＵ＃０によって実行する。
【００５２】
また、実行部３０８は、決定部３０７によって検出されたスレッドを実行しないと決定された場合、実行可能なスレッドのうち検出されたスレッド以外の他のスレッドをＣＰＵによって実行してもよい。他のスレッドとして、実行部３０８は、たとえば、低優先度スレッドを実行してもよいし、何もしないスレッドであるアイドルスレッドを実行してもよい。
【００５３】
また、実行部３０８は、検出されたスレッドまたは割込処理のいずれか一方をいずれかのＣＰＵによって実行するとともに、他方を他のＣＰＵによって実行してもよい。たとえば、実行部３０８は、検出されたスレッドをＣＰＵ＃０によって実行するとともに、割込処理をＣＰＵ＃１によって実行する。
【００５４】
決定部３０９は、受付部３０１によって割込要求を受け付けた場合、割込要求を受け付けた時刻と記憶領域から読み出された特定の時間情報とに基づいて、割込要求の次の割込要求を受け付ける時間帯を決定する。特定の時間情報については、算出部３０３の特定の時間情報と同一であるので、説明を省略する。時間帯の決定方法として、決定部３０９は、たとえば、予測時刻の算出方法として、割込要求を受け付けた時刻から所定時間減算した時刻から、割込要求を受け付けた時刻に所定時間を加算した時刻までを、次の割込要求を受け付ける時間帯と決定してもよい。また、決定部３０９は、たとえば、割込要求を受け付けた時刻から、割込要求を受け付けた時刻と格納部３０２により記憶領域に格納された時刻の差分を減算した時刻から、加算した時刻までを時間帯としてもよい。
【００５５】
決定部３０９の機能により、データ処理装置１００は、次に割込要求が発生する時間帯を得ることができる。なお、決定された時間帯の情報は、ＲＡＭ２０４、フラッシュＲＯＭ２０５、フラッシュＲＯＭ２０７などの記憶領域に記憶される。
【００５６】
制御部３１０は、決定部３０９によって決定された時間帯での送信装置によるデータの送信単位の分割数を、時間帯以外の時点における分割数より大きくして送信するように送信装置を制御する。送信装置とは、データを送信する装置であり、たとえば、ＤＭＡコントローラ２０８である。たとえば、制御部３１０は、ＤＭＡコントローラ２０８がデータを分割せずに送信している場合、決定された時間帯では、データを２分割して送信するように制御する。制御部３１０の機能により、データ処理装置１００は、割込要求が発生すると予測された時間帯にて、データの送信単位を細かくして、割込処理を実行し易くすることができる。
【００５７】
図４は、ＤＭＡコントローラの機能的構成例を示すブロック図である。ＤＭＡコントローラ２０８は、タイマ回路４０１と、記憶部４０２と、取得部４０３と、変更部４０４と、送信部４０５と、を含む。
【００５８】
タイマ回路４０１は、経過時間を測定する回路である。タイマ回路４０１は、たとえば、測定開始要求を受け付けると、経過時間を計測し、所定時刻を経過した場合、ＣＰＵ＃０にタイマ割込を発行する。
【００５９】
記憶部４０２は、データの送信単位の分割数を記憶する。たとえば、ＣＰＵ＃０から割込要求を受け付ける時間帯を受け付けていない場合、分割数は１を記憶する。また、記憶部４０２は、分割数が増加する状態を示す識別子または分割数が減少する状態を示す識別子のいずれかとなる分割数状態を記憶する。たとえば、分割数が増加する状態を示す識別子を“０”とし、分割数が減少する状態を示す識別子を“１”とする。記憶部４０２の機能により、ＤＭＡコントローラ２０８は、現在の分割数の状態を記憶することができる。
【００６０】
取得部４０３は、割込要求の受付装置にて割込要求を受け付ける時間帯を受付装置から取得する。割込要求の受付装置とは、たとえば、ＣＰＵである。たとえば、取得部４０３は、割込要求を受け付ける時間帯として、１２：００：１９．５〜１２：００：２０．５を取得する。また、取得部４０３は、さらに、割込要求を受け付ける予測時刻を取得してもよい。たとえば、取得部４０３は、予測時刻として１２：００：２０を取得する。取得部４０３の機能により、ＤＭＡコントローラ２０８は、データの送信単位を分割する時間帯を得ることができる。
【００６１】
変更部４０４は、取得部４０３によって取得された時間帯において、分割数を記憶部４０２に記憶された分割数より大きい値に変更する。たとえば、割込要求を受け付ける時間帯を受け付けていない時点の分割数が１であり、取得部４０３が割込要求を受け付ける時間帯として、１２：００：１９．５〜１２：００：２０．５を取得したとする。このとき、変更部４０４は、１２：００：１９．５〜１２：００：２０．５において、データの送信単位を２分割に変更する。また、変更部４０４は、タイマ回路４０１からの満了通知に応じて、分割数を変更してもよい。
【００６２】
また、変更部４０４は、時間帯のうち時間帯の開始時刻から予測時刻までにおいて、変更後の分割数を変更前の分割数より大きい値に変更し、時間帯のうち予測時刻から時間帯の終了時刻までにおいて、変更後の分割数を変更前の分割数より小さい値に変更する。
【００６３】
たとえば、開始時刻が１２：００：１９．５であり、予測時刻が１２：００：２０．５であり、予測時刻が１２：００：２０であるとする。初めに、１２：００：１９．５にて、変更部４０４は、分割数を２に変更する。次に、１２：００：１９．７５にて、変更部４０４は、分割数を３に変更する。続けて、１２：００：２０．２５にて、変更部４０４は、分割数を２に変更する。最後に、１２：００：２０．５にて、変更部４０４は、分割数を１に変更する。このように、変更部４０４の機能により、ＤＭＡコントローラ２０８は、割込要求が発生すると予測した時刻において分割数を大きくすることで、予測時刻にてバス１０１の解放回数を増やし、割込処理を実行し易くする。
【００６４】
送信部４０５は、変更部４０４によって変更された分割数でデータを分割して送信する。たとえば、変更部４０４によって、分割数が２に変更された場合、送信部４０５は、データの送信単位を２分割して送信する。
【００６５】
図５は、パラメータテーブルの一例を示す説明図である。パラメータテーブル３１１は、バスアクセスカウント閾値、割込禁止命令実行回数閾値、データ送信最大分割数、特定処理非実行間隔という４つのフィールドを含む。バスアクセスカウント閾値フィールドには、割込阻害要因となるスレッドか否かを判断するための閾値の一つが格納される。具体的に、バスアクセスカウント閾値フィールドに格納された値以上の回数分、バス１０１へのアクセスを行ったスレッドは、割込処理の実行を阻害するスレッドと判断される。
【００６６】
割込禁止命令実行回数閾値フィールドには、実行予定のスレッドが割込阻害要因となるスレッドか否か判断するための閾値の一つが格納される。具体的に、割込禁止命令実行回数閾値フィールドに格納された値以上の回数分、割込禁止命令を実行したスレッドは、割込処理の実行を阻害するスレッドと判断される。データ送信最大分割数フィールドには、バス占有を避けるために行う、データ送信の最大の分割数が格納される。特定処理非実行間隔フィールドには、割込応答性向上のため、実行予定のスレッドが割込阻害要因となるスレッドか否かを判断する期間に関する値が格納される。
【００６７】
図６は、スレッドテーブルの記憶内容の一例を示す説明図である。スレッドテーブル３１２は、割込処理の実行を阻害するか否かを示す情報をスレッドごとに記憶する。図６で示すスレッドテーブル３１２は、レコード３１２−１、レコード３１２−２を記憶している。
【００６８】
スレッドテーブル３１２は、スレッドＩＤ、バスアクセス回数、割込禁止命令実行回数、割込処理阻害スレッドフラグという４つのフィールドを含む。スレッドＩＤフィールドには、割込阻害要因となるスレッドの識別情報が格納される。バスアクセス回数フィールドには、割込阻害要因となるスレッドがバス１０１にアクセスした回数が格納される。割込禁止命令実行回数フィールドには、割込阻害要因となるスレッドが割込禁止命令を実行した回数が格納される。
【００６９】
割込処理阻害スレッドフラグフィールドには、スレッドが割込処理の実行を阻害するか否かを示す識別子が格納される。具体的な識別子は、“Ｙｅｓ”が割込処理を阻害することを示す識別子であり、“Ｎｏ”が割込処理を阻害しないことを示す識別子である。“Ｙｅｓ”となるスレッドを実行する場合、データ処理装置１００は、スレッドの実行を行わず、他のスレッドに実行権を譲渡する。また、割込処理阻害スレッドフラグは、データ処理装置１００の設計時に設計者が決定してもよいし、データ処理装置１００のユーザが設定してもよい。
【００７０】
たとえば、レコード３１２−１は、スレッド０がバスアクセス回数がｃｃ回であり、割込禁止命令実行回数がｅｅ回であり、割込処理を阻害するスレッドであることが示されている。たとえば、ｃｃ回が、図５で示したバスアクセスカウント閾値フィールドの値であるａａ回以上であれば、スレッド０はバス占有スレッドとなる。同様に、レコード３１２−２は、スレッド１がバスアクセス回数がｄｄ回であり、割込禁止命令実行回数がｆｆ回であり、割込処理を阻害しないスレッドであることが示されている。たとえば、ｆｆ回が、図５で示した割込禁止命令実行回数閾値の値であるｂｂ回以上であれば、スレッド１は割込禁止スレッドとなる。
【００７１】
図７は、割込情報テーブルの記憶内容の一例を示す説明図である。割込情報テーブル３１３は、１つの割込処理に関する情報を１レコードにして記憶している。図７で示す割込情報テーブル３１３は、レコード３１３−１、レコード３１３−２を記憶している。
【００７２】
割込情報テーブル３１３は、割込ＩＤ、スレッドＩＤ、操作内容、割込間隔、前回割込時刻、次回割込予測時刻、一定時間内割込回数という７つのフィールドを含む。割込ＩＤフィールドには、割込処理の識別情報が格納される。スレッドＩＤフィールドには、割込ＩＤフィールドに対応するスレッドＩＤが格納される。操作内容フィールドには、ユーザの操作内容が格納される。割込間隔フィールドには、割込要求が発生する時間間隔が格納される。前回割込時刻フィールドには、一つ前の割込要求が発生した時刻が格納される。次回割込予測時刻フィールドには、次の割込要求が発生する予測時刻が格納される。一定時間内割込回数フィールドには、一定時間内に発生する割込要求の回数が格納される。
【００７３】
たとえば、レコード３１３−１は、割込ＩＤがｉｎｔ＃０で示される割込処理がスレッド２に属しており、割込処理で行う操作内容が音楽再生中の曲飛ばしであることを示している。さらに、レコード３１３−１は、割込間隔が１０秒であり、前回の割込要求が１２：００：１０に発生し、次回の割込要求の予測時刻が１２：００：２０であることを示している。
【００７４】
図８は、ＣＰＵ割込命令状態テーブルの例を示す説明図である。ＣＰＵ割込命令状態テーブル３１４は、ＣＰＵごとに対象のＣＰＵが割込処理を実行可能か否かを示す状態を記憶している。ＣＰＵ割込命令状態テーブル３１４は、レコード３１４−０〜レコード３１４−ｎまで登録されている。ＣＰＵ割込命令状態テーブル３１４は、ＣＰＵ＿ＩＤ、状態種別という２つのフィールドを含む。ＣＰＵ＿ＩＤフィールドには、ＣＰＵの識別情報が格納される。状態種別フィールドには、ＣＰＵが割込処理を実行可能な状態か否かを示す識別子が格納される。具体的に、状態種別フィールドには、ＣＰＵが割込禁止命令を実行中のため、割込処理を実行不可能である状態を示す識別子“０”と、ＣＰＵが割込禁止命令を実行していないため、割込処理を実行可能である状態を示す識別子“１”と、のいずれかが格納される。
【００７５】
たとえば、レコード３１４−０は、ＣＰＵ＃０が割込処理を実行不可能である状態を示している。また、レコード３１４−１は、ＣＰＵ＃１が割込処理を実行可能である状態を示している。同様に、レコード３１４−ｎは、ＣＰＵ＃ｎが割込処理を実行不可能である状態を示している。
【００７６】
続けて、図９〜図１１では、割込阻害要因の排除方法について、３つの例を提示する。図９〜図１１に共通する設定として、時刻ｔ０、時刻ｔ１それぞれに割込要求が発生しており、ＣＰＵ＃０は、時刻ｔ３が次の割込要求が発生する予測時刻であると算出している。さらに、図９〜図１１では、予測時刻となる時刻ｔ３に割込要求が発生したとする。また、図９〜図１１の（Ａ）は、割込阻害要因を排除しなかった場合のスレッドの実行状態を示しており、図９〜図１１の（Ｂ）は、割込阻害要因を排除した場合のスレッドの実行状態を示している。
【００７７】
図９は、割込阻害要因の排除方法の第１の例を示す説明図である。図９では、割込阻害要因の排除方法の第１の例として、バス占有スレッドの実行時刻を割込要求が発生する時刻と重ならないようにする方法である。
【００７８】
図９（Ａ）の時刻ｔ２にて、ＣＰＵ＃０は、次回割込予測時刻−特定処理非実行間隔≦現在時刻≦次回割込予測時刻＋特定処理非実行間隔であるか否かを判断する。図９で示す状態では、条件を満たしている。ここで、図９（Ａ）は、バス占有スレッドを時刻ｔ２にて実行した場合を示しており、図９（Ｂ）は、判断結果により、バス占有スレッドを時刻ｔ２では実行しなかった場合を示している。
【００７９】
図９（Ａ）では、時刻ｔ３に割込要求が発生するが、バス１０１がバス占有スレッドにより占有されているため、割込要求に対応する割込処理の実行が遅くなり、応答性能が低下する。図９（Ｂ）では、時刻ｔ３に割込要求が発生し、割込要求に対応する割込処理を時刻ｔ３に実行するため、応答性能が向上する。
【００８０】
図１０は、割込阻害要因の排除方法の第２の例を示す説明図である。図１０では、割込阻害要因の排除方法の第２の例として、割込要求が発生する時刻にて、ＤＭＡコントローラ２０８のデータの送信単位を分割する方法である。
【００８１】
図１０（Ａ）の時刻ｔ２にて、ＣＰＵ＃０は、次回割込予測時刻−特定処理非実行間隔≦現在時刻≦次回割込予測時刻＋特定処理非実行間隔であるか否かを判断する。図１０で示す状態では、条件を満たしている。ここで、図１０（Ａ）は、ＤＭＡコントローラ２０８の送信単位を分割しなかった場合を示しており、図１０（Ｂ）は、判断結果により、ＤＭＡコントローラ２０８の送信単位を分割した場合を示している。
【００８２】
図１０（Ａ）では、時刻ｔ３に割込要求が発生するが、バス１０１がＤＭＡコントローラ２０８により占有されているため、割込要求に対応する割込処理の実行が遅くなり、応答性能が低下する。図１０（Ｂ）では、時刻ｔ３に割込要求が発生し、ＤＭＡコントローラ２０８がバス１０１を占有していないため、割込要求に対応する割込処理を時刻ｔ３に実行するため、応答性能が向上する。
【００８３】
図１１は、割込阻害要因の排除方法の第３の例を示す説明図である。図１１では、割込阻害要因の排除方法の第３の例として、割込要求が発生する時刻にて、割込要求に対応する割込処理と、割込禁止スレッドとを、それぞれ異なるＣＰＵが実行する方法である。
【００８４】
図１１（Ａ）の時刻ｔ２にて、ＣＰＵ＃０は、次回割込予測時刻−特定処理非実行間隔≦現在時刻≦次回割込予測時刻＋特定処理非実行間隔であるか否かを判断する。ここで、図１１（Ａ）は、割込処理と割込禁止スレッドを同一のＣＰＵが実行した場合を示しており、図１１（Ｂ）は、判断結果により、割込処理と割込禁止スレッドを異なるＣＰＵが実行した場合を示している。
【００８５】
図１１（Ａ）では、時刻ｔ３に割込要求が発生するが、割込禁止命令が発行されているため、割込要求に対応する割込処理の実行が遅くなり、応答性能が低下する。図１１（Ｂ）では、時刻ｔ３にＣＰＵ＃０が割込禁止スレッドを実行しているが、ＣＰＵ＃１では、割込禁止命令が発行されていないため、ＣＰＵ＃１が割込要求に対応する割込処理を実行し、応答性能が向上する。
【００８６】
図１２は、次回割込予測時刻の算出例を示す説明図である。次回割込予測時刻の算出例として、データ処理装置１００は、連続で同一の割込要求が発生した場合、割込要求の発生間隔を平均化する。ＣＰＵ＃０は、割込情報テーブル３１３の割込間隔フィールドを下記（１）式で得た結果で更新する。
【００８７】
割込間隔＝（割込間隔フィールドの値×（一定時間内割込回数フィールドの値−１）＋（今回の割込発生時刻−前回割込時刻フィールドの値））／一定時間内割込回数フィールドの値  …（１）
【００８８】
さらに、ＣＰＵ＃０は、次回割込予測時刻を下記（２）式で算出する。
【００８９】
次回割込予測時刻＝今回の割込発生時刻＋割込間隔  …（２）
【００９０】
なお、ＣＰＵ＃０は、（１）式を１回目の割込要求発生時には実行せず、割込間隔フィールドに０を格納し、前回割込時刻フィールドに１回目の割込要求発生時刻を格納し、一定時間内割込回数フィールドに１を格納する。たとえば、音楽再生中に、１２：００：００にて割込要求が発生した場合、ＣＰＵ＃０は、前回割込時刻フィールドに１２：００：００を格納する。
【００９１】
次に、図１２（Ａ）で示すように、１２：００：１０に割込要求が発生したとする。このとき、ＣＰＵ＃０は、（１）式を用いて割込間隔を算出する。
【００９２】
割込間隔＝（０×（１−１）＋（１２：００：１０−１２：００：００））／１
⇔割込間隔＝１０／１＝１０［秒］
【００９３】
したがって、ＣＰＵ＃０は、割込間隔フィールドに１０を格納し、前回割込時刻フィールドに２回目の割込要求発生時刻を格納し、一定時間内割込回数フィールドに１増加した２を格納する。さらに、ＣＰＵ＃０は、（２）式より、次回割込予測時刻を下記のように算出する。
【００９４】
次回割込予測時刻＝１２：００：１０＋１０
⇔次回割込予測時刻＝１２：００：２０
【００９５】
したがって、ＣＰＵ＃０は、次回割込予測時刻に１２：００：２０を格納する。続けて、図１２（Ｂ）にて、図１２（Ａ）で示した状態から１２：００：１５に割込要求が発生したとする。このとき、ＣＰＵ＃０は、（１）式を用いて割込間隔を算出する。
【００９６】
割込間隔＝（１０×（２−１）＋（１２：００：１５−１２：００：１０））／２
⇔割込間隔＝（１０＋５）／２＝７．５［秒］
【００９７】
したがって、ＣＰＵ＃０は、割込間隔フィールドに７．５を格納し、前回割込時刻フィールドに３回目の割込要求発生時刻を格納し、一定時間内割込回数フィールドに１増加した３を格納する。さらに、ＣＰＵ＃０は、（２）式より、次回割込予測時刻を下記のように算出する。
【００９８】
次回割込予測時刻＝１２：００：１５＋７．５
⇔次回割込予測時刻＝１２：００：２２．５
【００９９】
したがって、ＣＰＵ＃０は、次回割込予測時刻に１２：００：２２．５を格納する。続けて、図１２（Ｃ）にて、図１２（Ｂ）で示した状態から１２：００：３０に割込要求が発生したとする。このとき、ＣＰＵ＃０は、（１）式を用いて割込間隔を算出する。
【０１００】
割込間隔＝（７．５×（３−１）＋（１２：００：３０−１２：００：１５））／３
⇔割込間隔＝（１５＋１５）／３＝１０［秒］
【０１０１】
したがって、ＣＰＵ＃０は、割込間隔フィールドに１０を格納し、前回割込時刻フィールドに４回目の割込要求発生時刻を格納し、一定時間内割込回数フィールドに１増加した４を格納する。さらに、ＣＰＵ＃０は、（２）式より、次回割込予測時刻を下記のように算出する。
【０１０２】
次回割込予測時刻＝１２：００：３０＋１０
⇔次回割込予測時刻＝１２：００：４０
【０１０３】
したがって、ＣＰＵ＃０は、次回割込予測時刻に１２：００：４０を格納する。このように、ＣＰＵ＃０は、過去の割込発生時刻を用いて次の割込発生の予測時刻を算出する。次に、データ送信の分割の例について説明する。
【０１０４】
図１３は、ＤＭＡコントローラのデータ送信分割の例を示す説明図である。図１３では、データ送信最大分割数を４として説明する。初めに、ＤＭＡコントローラ２０８は、時刻ｔ０より前では、データを分割せずにデータ送信を行っている。
【０１０５】
時刻ｔ０にて、次回割込予測時刻−特定処理非実行間隔≦現在時刻≦次回割込予測時刻＋特定処理非実行間隔の条件を満たした場合、ＣＰＵ＃０は、データ送信モードの分割モードへの設定要求を、ＤＭＡコントローラ２０８に通知する。通知を受けたＤＭＡコントローラ２０８は、２分割でデータ送信を行う。
【０１０６】
また、ＤＭＡコントローラ２０８は、時刻ｔ０から予測時刻までの時間を、データ送信最大分割数−１で分割し、段階的に分割数を増加していく。図１３の例では、時刻ｔ０から予測時刻までの時間を３分割し、時刻ｔ０から、１／３経過した時刻をｔ１、２／３経過した時刻をｔ２とする。また、ＤＭＡコントローラ２０８は、予測時刻以降の時刻にて、１／３経過した時刻をｔ３、２／３経過した時刻をｔ４、予測時刻から特定処理非実行間隔経過した時刻をｔ５とする。
【０１０７】
時刻ｔ０にて、ＤＭＡコントローラ２０８は、分割数を２に設定する。これにより、ＤＭＡコントローラ２０８は、時刻ｔ０から時刻ｔ１まで、データ送信を２分割で送信する。また、時刻ｔ１にて、ＤＭＡコントローラ２０８は、分割数を３に設定する。これにより、ＤＭＡコントローラ２０８は、時刻ｔ１から時刻ｔ２まで、データ送信を３分割で送信する。また、時刻ｔ２にて、ＤＭＡコントローラ２０８は、分割数を４に設定する。これにより、ＤＭＡコントローラ２０８は、時刻ｔ２から時刻ｔ３まで、データ送信を４分割で送信する。
【０１０８】
続けて、時刻ｔ３にて、ＤＭＡコントローラ２０８は、分割数を３に設定する。これにより、ＤＭＡコントローラ２０８は、時刻ｔ３から時刻ｔ４まで、データ送信を３分割で送信する。また、時刻ｔ４にて、ＤＭＡコントローラ２０８は、分割数を２に設定する。これにより、ＤＭＡコントローラ２０８は、時刻ｔ４から時刻ｔ５まで、データ送信を２分割で送信する。
【０１０９】
このように、予測時刻にて最も分割数を大きくすることにより、データ処理装置１００は、割込要求が最も起こりそうである予測時刻付近にて、分割数を大きくして割込要求を応答しやすくすることができる。続けて、図１４〜図１９にて、割込処理阻害用の排除処理手順のフローチャートを説明する。
【０１１０】
図１４は、割込阻害要因の排除処理手順の一例を示すフローチャートである。割込阻害要因の排除処理は、イベントに応じて割込阻害となるスレッドを検出し、スレッドが終了したら終了処理を実行する。割込阻害要因の排除処理はＣＰＵ＃０〜ＣＰＵ＃ｎのうちいずれのＣＰＵが行ってもよいが、図１４では、ＣＰＵ＃０が実行する場合について説明する。なお、割込阻害要因の排除処理は、スケジューラの一部のプログラムであってもよいし、スケジューラからスレッドスイッチを行った、スレッドが実行終了したというイベントを受け付けるプログラムであってもよい。
【０１１１】
ＣＰＵ＃０は、何らかのイベントを受け付けたかを確認する（ステップＳ１４０１）。イベントを受け付けていない場合（ステップＳ１４０１：イベントなし）、ＣＰＵ＃０は、一定時間経過後、ステップＳ１４０１の処理に移行する。スレッドスイッチイベントを受け付けた場合、ＣＰＵ＃０は、スレッドスイッチ時処理を実行する（ステップＳ１４０２）。ステップＳ１４０２の実行終了後、ＣＰＵ＃０は、ステップＳ１４０１の処理に移行する。スレッドスイッチ時処理の詳細は、図１５にて説明する。
【０１１２】
割込禁止命令実行開始イベントを受け付けた場合（ステップＳ１４０１：割込禁止命令実行開始）、ＣＰＵ＃０は、ＣＰＵ割込命令状態テーブル３１４の自ＣＰＵの状態種別フィールドを、１から０に更新する（ステップＳ１４０３）。ステップＳ１４０３の実行終了後、ＣＰＵ＃０は、ステップＳ１４０１の処理に移行する。
【０１１３】
また、割込禁止命令実行終了イベントを受け付けた場合（ステップＳ１４０１：割込禁止命令実行終了）、ＣＰＵ＃０は、ＣＰＵ割込命令状態テーブル３１４の自ＣＰＵの状態種別フィールドを、０から１に更新する（ステップＳ１４０４）。ステップＳ１４０４の実行終了後、ＣＰＵ＃０は、ステップＳ１４０１の処理に移行する。なお、割込禁止命令実行開始、および割込禁止命令実行終了の検出方法は、スレッドがＯＳのＡＰＩ（Ａｐｐｌｉｃａｔｉｏｎ  Ｐｒｏｇｒａｍｍｉｎｇ  Ｉｎｔｅｒｆａｃｅ）のうち、割込禁止命令を呼び出すため、ＯＳが検出することができる。
【０１１４】
タイマ割込イベントを受け付けた場合（ステップＳ１４０１：タイマ割込）、ＣＰＵ＃０は、データ送信モードの通常モードへの設定要求を、ＤＭＡコントローラ２０８に通知し（ステップＳ１４０５）、ステップＳ１４０１の処理に移行する。タイマ割込は、タイマ回路４０１より通知される。
【０１１５】
割込要求イベントを受け付けた場合（ステップＳ１４０１：割込要求）、ＣＰＵ＃０は、割込要求を受け付けた時刻を割込情報テーブル３１３に格納する（ステップＳ１４０６）。次に、ＣＰＵ＃０は、割込要求に対応する割込処理を実行する（ステップＳ１４０７）。続けて、ＣＰＵ＃０は、ステップＳ１４０１の処理に移行する。
【０１１６】
スレッド実行終了イベントを受け付けた場合（ステップＳ１４０１：スレッド実行終了）、ＣＰＵ＃０は、スレッド実行終了時処理を実行する（ステップＳ１４０８）。ステップＳ１４０８の実行終了後、ＣＰＵ＃０は、ステップＳ１４０１の処理に移行する。このように、図１４で示す割込阻害要因の排除処理を実行することにより、データ処理装置１００は、各イベントに対応した処理を実行できる。
【０１１７】
図１５は、スレッドスイッチ時処理手順の一例を示すフローチャートである。スレッドスイッチ時処理は、スレッドスイッチイベントが発生した時に行う処理である。また、スレッドスイッチ時処理は、割込阻害要因の排除処理内の呼び出しによって実行される。また、スレッドスイッチによって、これから実行されるスレッドを、実行予定スレッドと呼称する。
【０１１８】
ＣＰＵ＃０は、次回割込予測時刻−特定処理非実行間隔≦現在時刻≦次回割込予測時刻＋特定処理非実行間隔を満たすか否かを判断する（ステップＳ１５０１）。条件を満たす場合（ステップＳ１５０１：Ｙｅｓ）、ＣＰＵ＃０は、実行予定スレッドの割込処理阻害スレッドフラグフィールドがＹｅｓか、またはバスアクセス回数がバスアクセスカウント閾値以上か否かを判断する（ステップＳ１５０２）。
【０１１９】
割込処理阻害スレッドフラグフィールドがＹｅｓである、またはバスアクセスカウント閾値以上である場合（ステップＳ１５０２：Ｙｅｓ）、ＣＰＵ＃０は、実行可能キューの次のスレッドに実行権を譲渡する（ステップＳ１５０３）。ステップＳ１５０３の終了後、ＣＰＵ＃０は、ステップＳ１５０２の処理に移行する。また、ステップＳ１５０３の処理を実行することにより、実行予定スレッドは、実行可能キュー内の次のスレッドとなる。
【０１２０】
割込処理阻害スレッドフラグフィールドがＮｏであり、かつバスアクセスカウント閾値未満である場合（ステップＳ１５０２：Ｎｏ）、ＣＰＵ＃０は、実行予定スレッドの割込禁止命令実行回数が割込禁止命令実行回数閾値以上か否かを判断する（ステップＳ１５０４）。割込禁止命令実行回数閾値以上である場合（ステップＳ１５０４：Ｙｅｓ）、ＣＰＵ＃０は、割込処理を、実行予定スレッドを実行するＣＰＵとは異なる他のＣＰＵのうち、状態種別フィールドが１となるＣＰＵに移行する（ステップＳ１５０５）。
【０１２１】
ステップＳ１５０５の実行終了後、または、割込禁止命令実行回数閾値未満である場合（ステップＳ１５０４：Ｎｏ）、ＣＰＵ＃０は、ＤＭＡコントローラ２０８のデータ送信モードが分割モードに切替済か否かを判断する（ステップＳ１５０６）。分割モードに切替済でない場合（ステップＳ１５０６：Ｎｏ）、ＣＰＵ＃０は、データ送信モードの分割モードへの設定要求を、ＤＭＡコントローラ２０８に通知する（ステップＳ１５０７）。続けて、ＣＰＵ＃０は、タイマ回路４０１に計測開始要求を通知する（ステップＳ１５０８）。
【０１２２】
ステップＳ１５０８の実行終了後、またはステップＳ１５０１の条件を満たさない場合（ステップＳ１５０１：Ｎｏ）、または分割モードに切替済である場合（ステップＳ１５０６：Ｙｅｓ）、ＣＰＵ＃０は、実行予定スレッドを実行する（ステップＳ１５０９）。続けて、ＣＰＵ＃０は、スレッドスイッチ時処理を終了する。このように、図１５で示すスレッドスイッチ時処理を実行することにより、データ処理装置１００は、割込要求を阻害するスレッドについて、阻害要因を排除でき、割込処理に対応する割込処理の実行を早く行える。
【０１２３】
図１６は、スレッド実行終了時処理手順の一例を示すフローチャートである。スレッドが実行終了する時に行う処理である。また、スレッド実行終了時処理は、割込阻害要因の排除処理内の呼び出しによって実行される。
【０１２４】
ＣＰＵ＃０は、実行終了するスレッドが割込情報テーブル３１３に登録されたスレッドか否かを判断する（ステップＳ１６０１）。割込情報テーブル３１３に登録されたスレッドである場合（ステップＳ１６０１：Ｙｅｓ）、ＣＰＵ＃０は、次回割込予測時刻を算出する（ステップＳ１６０２）。具体的に、ステップＳ１６０２の処理として、ＣＰＵ＃０は、（１）式と（２）式を実行する。続けて、ＣＰＵ＃０は、データ送信モードの通常モードへの設定要求を、ＤＭＡコントローラ２０８に通知する（ステップＳ１６０３）。ステップＳ１６０３の実行終了後、ＣＰＵ＃０は、スレッド実行終了時処理を終了する。
【０１２５】
割込情報テーブル３１３に登録されたスレッドでない場合（ステップＳ１６０１：Ｎｏ）、ＣＰＵ＃０は、スレッドテーブル３１２の割込禁止命令実行回数フィールドを更新する（ステップＳ１６０４）。続けて、ＣＰＵ＃０は、スレッドテーブル３１２のバスアクセス回数を登録するように、バス調停回路２１２に通知する（ステップＳ１６０５）。ステップＳ１６０５の実行終了後、ＣＰＵ＃０は、スレッド実行終了時処理を終了する。なお、通知を受け付けたバス調停回路２１２は、スレッドテーブル３１２のバスアクセス回数を更新する。
【０１２６】
このように、図１６で示すスレッド実行終了時処理を実行することにより、データ処理装置１００は、実行終了するスレッドに関して、次回割込予測時刻と、割込禁止命令の回数と、バスアクセスの回数を更新することができる。
【０１２７】
図１７は、タイマ回路の処理手順の一例を示すフローチャートである。図１７では、タイマ回路４０１の動作について説明する。タイマ回路４０１は、ＣＰＵ＃０から計測開始要求を受け付けたか否かを判断する（ステップＳ１７０１）。計測開始要求を受け付けていない場合（ステップＳ１７０１：Ｎｏ）、タイマ回路４０１は、一定時間経過後、ステップＳ１７０１の処理を再び実行する。計測開始要求を受け付けた場合（ステップＳ１７０１：Ｙｅｓ）、タイマ回路４０１は、特定処理非実行間隔×２の時間が経過したか否かを判断する（ステップＳ１７０２）。経過していない場合（ステップＳ１７０２：Ｎｏ）、タイマ回路４０１は、一定時間経過後、ステップＳ１７０２の処理を再び実行する。
【０１２８】
経過している場合（ステップＳ１７０２：Ｙｅｓ）、タイマ回路４０１は、タイマ割込をＣＰＵ＃０に通知する（ステップＳ１７０３）。ステップＳ１７０１の実行終了後、タイマ回路４０１は、ステップＳ１７０１の処理に移行する。なお、ステップＳ１７０３の処理により、ＣＰＵ＃０は、ステップＳ１４０１：タイマ割込を実行する。このように、図１７で示すタイマ回路４０１の処理により、データ処理装置１００は、割込予測時刻＋特定処理非実行間隔となる時刻を検出することができる。
【０１２９】
図１８は、バス調停回路の処理手順の一例を示すフローチャートである。図１８では、バス調停回路２１２の動作について説明する。バス調停回路２１２は、バスアクセスが発生したか否かを判断する（ステップＳ１８０１）。バスアクセスが発生していない場合（ステップＳ１８０１：Ｎｏ）、バス調停回路２１２は、ステップＳ１８０１の処理を再び実行する。バスアクセスが発生した場合（ステップＳ１８０１：Ｙｅｓ）、バス調停回路２１２は、従来の処理を実行する（ステップＳ１８０２）。ここで、従来の処理とは、バスアクセスの調停処理である。
【０１３０】
続けて、バス調停回路２１２は、バスアクセスを発生させたスレッドのバスアクセス回数フィールドの値をインクリメントする（ステップＳ１８０３）。ステップＳ１８０３の実行終了後、バス調停回路２１２は、ステップＳ１８０１の処理に移行する。このように、図１８で示すバス調停回路２１２の処理により、データ処理装置１００は、スレッドごとのバスアクセス回数を取得することができる。
【０１３１】
図１９は、ＤＭＡコントローラの処理手順の一例を示すフローチャートである。図１９では、ＤＭＡコントローラ２０８の動作について説明する。ＤＭＡコントローラ２０８は、分割数を１に設定する（ステップＳ１９０１）。また、ＤＭＡコントローラ２０８は、ステップＳ１９０１の処理の次に分割数状態を０に設定する。次に、ＤＭＡコントローラ２０８は、データ送信モードの分割モードへの設定要求を受け付けたか否かを判断する（ステップＳ１９０２）。分割モードへの設定要求を受け付けてない場合（ステップＳ１９０２：Ｎｏ）、ＤＭＡコントローラ２０８は、一定時間経過後、ステップＳ１９０２の処理を再び実行する。分割モードへの設定要求を受け付けた場合（ステップＳ１９０２：Ｙｅｓ）、ＤＭＡコントローラ２０８は、切替単位時間を、特定処理非実行間隔／（データ送信最大分割数−１）に設定する（ステップＳ１９０３）。
【０１３２】
続けて、ＤＭＡコントローラ２０８は、分割数をインクリメントする（ステップＳ１９０４）。次に、ＤＭＡコントローラ２０８は、切替単位時間が経過したか否かを判断する（ステップＳ１９０５）。切替単位時間が経過していない場合（ステップＳ１９０５：Ｎｏ）、ＤＭＡコントローラ２０８は、一定時間経過後、ステップＳ１９０５の処理を再び実行する。
【０１３３】
切替単位時間が経過した場合（ステップＳ１９０５：Ｙｅｓ）、ＤＭＡコントローラ２０８は、分割数をインクリメントする（ステップＳ１９０６）。次に、ＤＭＡコントローラ２０８は、分割数がデータ送信最大分割数より小さいか否かを判断する（ステップＳ１９０７）。小さい場合（ステップＳ１９０７：Ｙｅｓ）、ＤＭＡコントローラ２０８は、ステップＳ１９０５の処理に移行する。なお、ステップＳ１９０４〜ステップＳ１９０７の処理により、図１３で示した時刻ｔ０〜時刻ｔ２までの時間について処理を行ったことになる。
【０１３４】
分割数がデータ送信最大分割数以上である場合（ステップＳ１９０７：Ｎｏ）、ＤＭＡコントローラ２０８は、切替単位時間が経過したか否かを判断する（ステップＳ１９０８）。また、ＤＭＡコントローラ２０８は、ステップＳ１９０７：Ｎｏの処理の次に分割数状態を１に設定する。切替単位時間が経過していない場合（ステップＳ１９０８：Ｎｏ）、ＤＭＡコントローラ２０８は、一定時間経過後、ステップＳ１９０８の処理を再び実行する。なお、ステップＳ１９０８の処理により、図１３で示した時刻ｔ２〜予測時刻までの時間について処理を行ったことになる。
【０１３５】
切替単位時間が経過した場合（ステップＳ１９０８：Ｙｅｓ）、ＤＭＡコントローラ２０８は、切替単位時間が経過したか否かを判断する（ステップＳ１９０９）。切替単位時間が経過していない場合（ステップＳ１９０９：Ｎｏ）、ＤＭＡコントローラ２０８は、一定時間経過後、ステップＳ１９０９の処理を再び実行する。切替単位時間が経過した場合（ステップＳ１９０９：Ｙｅｓ）、ＤＭＡコントローラ２０８は、分割数をデクリメントする（ステップＳ１９１０）。
【０１３６】
続けて、ＤＭＡコントローラ２０８は、分割数が１より大きいか否かを判断する（ステップＳ１９１１）。分割数が１より大きい場合（ステップＳ１９１１：Ｙｅｓ）、ＤＭＡコントローラ２０８は、ステップＳ１９０９の処理に移行する。分割数が１以下である場合（ステップＳ１９１１：Ｎｏ）、ＤＭＡコントローラ２０８は、ステップＳ１９０２の処理に移行する。また、ＤＭＡコントローラ２０８は、ステップＳ１９１１：Ｎｏの処理の次に分割数状態を０に設定する。なお、ステップＳ１９０９〜ステップＳ１９１１の処理により、図１３で示した予測時刻〜時刻ｔ５までの時間について処理を行ったことになる。
【０１３７】
また、図１９では図示していないが、ＣＰＵ＃０より、通常モードへの設定要求を受け付けた場合、ＤＭＡコントローラ２０８は、分割数を１、分割数状態を０に設定して、ステップＳ１９０２の処理に移行する。このように、図１９で示すＤＭＡコントローラ２０８の処理により、データ処理装置１００は、予測時刻の付近にて分割数を最大にすることができる。
【０１３８】
図２０は、本実施の形態にかかるコンピュータを用いたシステムの適用例を示す説明図である。図２０において、ネットワークＮＷは、サーバ２００１、サーバ２００２とクライアント２０３１〜クライアント２０３４とが通信可能なネットワークであり、たとえば、ＬＡＮ、ＷＡＮ、インターネット、携帯電話網などを含む。
【０１３９】
サーバ２００２は、クラウド２０２０を有するサーバ群（サーバ２０２１〜サーバ２０２５）の管理サーバである。クライアント２０３１はノート型ＰＣ（Ｐｅｒｓｏｎａｌ  Ｃｏｍｐｕｔｅｒ）である。クライアント２０３２はデスクトップ型ＰＣ、クライアント２０３３は携帯電話機である。携帯電話機として、クライアント２０３３は、スマートフォンであってもよいし、ＰＨＳ（Ｐｅｒｓｏｎａｌ  Ｈａｎｄｙｐｈｏｎｅ  Ｓｙｓｔｅｍ）であってもよい。クライアント２０３４はタブレット型端末である。
【０１４０】
図２０のサーバ２００１、サーバ２００２、サーバ２０２１〜サーバ２０２５、クライアント２０３１〜クライアント２０３４は、たとえば、実施の形態で説明したデータ処理装置として、本実施の形態にかかるデータ処理装置を実行する。たとえば、サーバ２０２１にて割込禁止命令を発行するスレッドを実行する場合、割込処理をサーバ２０２２にて実行することにより、応答性能が向上できる。
【０１４１】
以上説明したように、データ処理装置、スケジューリング方法、およびスケジューリングプログラムによれば割込要求が次に発生する予測時刻を求めておき、スレッドが実行する場合に、現在時刻が予測時刻に近ければスレッド実行を行わない。これにより、データ処理装置は、割込処理が阻害されなくなるため、応答性能を向上することができる。
【０１４２】
また、データ処理装置は、スレッドを実行する場合、割込処理の実行を阻害するか否かを示す情報を参照して、スレッド実行を行うか否かを決定してもよい。これにより、データ処理装置は、割込処理の実行を阻害しないスレッドであれば、割込処理が発生する可能性である時刻であっても実行し続けることができる。
【０１４３】
また、データ処理装置は、検出されたスレッドの実行中に割込処理を実行する可能性があり、かつ、検出されたスレッドが割込処理の実行を阻害すると判断された場合、検出されたスレッドをＣＰＵによって実行しなくてもよい。これにより、データ処理装置は、割込処理を阻害するためにスレッドを実行しないと判断する判断精度を向上することができる。
【０１４４】
また、データ処理装置は、スレッドのバスへのアクセス回数に基づいて、スレッドが割込処理の実行を阻害するか否かを判断してもよい。これにより、データ処理装置は、たとえば、バスへのアクセス回数が実行途中で急増したスレッドに対して、割込処理の実行を阻害すると判断できるため、スレッドを実行しないタイミングを、割込処理を阻害する可能性が高いときに限定することができる。
【０１４５】
また、データ処理装置は、スレッドの割込禁止命令実行回数に基づいて、スレッドが割込処理の実行を阻害するか否かを判断してもよい。これにより、データ処理装置は、たとえば、割込禁止命令の回数が実行途中で急増したスレッドに対して、割込処理の実行を阻害すると判断できるため、スレッドを実行しないタイミングを、割込処理を阻害する可能性が高いときに限定することができる。
【０１４６】
また、データ処理装置は、割込禁止命令実行回数に基づいてスレッドが割込処理の実行を阻害すると判断した場合、スレッドを実行するＣＰＵと割込処理を実行するＣＰＵを別にしてもよい。これにより、割込処理阻害の回避方法であったスレッドを実行しない方法に比べ、スレッドを実行することができるため、本来のスケジューリングに沿った動作を行うことができる。
【０１４７】
また、データ処理装置、送信装置、送信制御方法、および送信制御プログラムによれば割込要求が次に発生する時間帯を決定しておき、決定された時間帯において、ＤＭＡコントローラのデータの送信単位を細かくする。これにより、決定された時間帯では、バスの解放回数が多くなるため、割込処理を実行できるタイミングが早くなり、データ処理装置は、応答性能を向上できる。
【０１４８】
また、送信装置は、割込要求が次に発生する時間帯と、予測時刻を取得し、予測時刻で最もデータの送信単位が細かくなるようにしてもよい。これにより、予測時刻付近でバスの解放回数が多くなるため、割込処理を実行できるタイミングが早くなり、データ処理装置は、応答性能をより向上できる。また、割込要求を受け付けないであろうと予測される時間帯では、送信単位を粗くすることで、送信速度が上昇するため、データ処理装置は、処理性能を向上できる。
【０１４９】
また、応答性能を向上できる他の方法として、ＣＰＵのクロック周波数を上昇させるという方法があるが、この方法は消費電力が大きくなる。本実施の形態にかかるスケジューリング方法および送信制御方法は、消費電力が大きくならないため、消費電力を維持したまま、応答性能を向上できる。
【０１５０】
なお、本実施の形態で説明したスケジューリング方法は、予め用意されたプログラムをパーソナル・コンピュータやワークステーション等のコンピュータで実行することにより実現することができる。本スケジューリングプログラムは、ハードディスク、フレキシブルディスク、ＣＤ−ＲＯＭ、ＭＯ、ＤＶＤ等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。また本スケジューリングプログラムは、インターネット等のネットワークを介して配布してもよい。
【０１５１】
また、本実施の形態で説明したＤＭＡコントローラ２０８は、スタンダードセルやストラクチャードＡＳＩＣ（Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）などの特定用途向けＩＣ（以下、単に「ＡＳＩＣ」と称す。）やＦＰＧＡなどのＰＬＤ（Ｐｒｏｇｒａｍｍａｂｌｅ  Ｌｏｇｉｃ  Ｄｅｖｉｃｅ）によっても実現することができる。具体的には、たとえば、上述したＤＭＡコントローラ２０８のタイマ回路４０１〜送信部４０５をＨＤＬ記述によって機能定義し、そのＨＤＬ記述を論理合成してＡＳＩＣやＰＬＤに与えることにより、ＤＭＡコントローラ２０８を製造することができる。
【符号の説明】
【０１５２】
１００  データ処理装置
１０１  バス
３００  記憶部
３０１  受付部
３０２  格納部
３０３  算出部
３０４  検出部
３０５  取得部
３０６  判断部
３０７  決定部
３０８  実行部
３０９  決定部
３１０  制御部
３１１  パラメータテーブル
３１２  スレッドテーブル
３１３  割込情報テーブル
４０２  記憶部
４０３  取得部
４０４  変更部
４０５  送信部
【図１】
0005861715.tif 000002
【図２】
0005861715.tif 000003
【図３】
0005861715.tif 000004
【図４】
0005861715.tif 000005
【図５】
0005861715.tif 000006
【図６】
0005861715.tif 000007
【図７】
0005861715.tif 000008
【図８】
0005861715.tif 000009
【図９】
0005861715.tif 000010
【図１０】
0005861715.tif 000011
【図１１】
0005861715.tif 000012
【図１２】
0005861715.tif 000013
【図１３】
0005861715.tif 000014
【図１４】
0005861715.tif 000015
【図１５】
0005861715.tif 000016
【図１６】
0005861715.tif 000017
【図１７】
0005861715.tif 000018
【図１８】
0005861715.tif 000019
【図１９】
0005861715.tif 000020
【図２０】
0005861715.tif 000021