(57)【要約】【課題】タスクの切り替え時におけるコンテクストの退避・復元処理にかかるオーバーヘッドを極力少なくし、タスクの切り替えを短時間で行えるようにする。【解決手段】同一アプリケーションに属する複数のタスクＴＫ１〜ＴＫ３を複数の異なる仮想プロセッサＶＰ３〜ＶＰ５に割り当て、スケジュールテーブルレジスタ１２を参照して各仮想プロセッサＶＰ１〜ＶＰ５を順次に切り替えることにより、各仮想プロセッサＶＰ１〜ＶＰ５に割り当てられている複数のタスクを実行させるようにする。これにより、同一アプリケーションに属する複数のタスクＴＫ１〜ＴＫ３の切り替えを、当該複数のタスクＴＫ１〜ＴＫ３が別々に割り当てられた複数の仮想プロセッサＶＰ３〜ＶＰ５の切り替えによって行うようにして、１つの仮想プロセッサで複数のタスクを切り替えるときのようにコンテクストの退避・復元処理を行わなくても済むようにする。【選択図】        図１
2009064388.tif 000002
【特許請求の範囲】
【請求項１】
複数の仮想プロセッサにより複数のタスクを時分割で実行する演算処理システム上での各タスクの実行を制御するタスク制御システムであって、
同一アプリケーションに属する複数のタスクを複数の異なる仮想プロセッサに割り当てるようにしたことを特徴とするタスク制御システム。
【請求項２】
上記同一アプリケーションに属する複数のタスクを上記複数の異なる仮想プロセッサに割り当てるように制御するタスク割当制御部と、
上記複数の仮想プロセッサの切り替え順序をスケジュールテーブル情報として記憶するスケジュールテーブル記憶部と、
上記スケジュールテーブル情報に基づき上記複数の仮想プロセッサを順次に切り替えて、上記タスク割当制御部により上記複数の仮想プロセッサに割り当てられている上記複数のタスクを実行させる切替制御部とを備えたことを特徴とする請求項１に記載のタスク制御システム。
【請求項３】
上記複数の仮想プロセッサが休止中状態であるか実行可能状態であるかのステータス情報を記憶するステータス記憶部を更に備え、
上記スケジュールテーブル情報は、上記同一アプリケーションに属する複数のタスクが割り当てられた上記複数の異なる仮想プロセッサを同一の実行タイミングに配したスケジュール情報から成り、
上記切替制御部は、上記スケジュールテーブル情報および上記ステータス情報に基づいて上記複数の仮想プロセッサを順次に切り替え、上記スケジュールテーブル情報により同一の実行タイミングに属する仮想プロセッサが複数存在することが示されているときは、上記ステータス情報により上記実行可能状態であることが示されている仮想プロセッサに切り替えることを特徴とする請求項２に記載のタスク制御システム。
【請求項４】
上記スケジュールテーブル情報は、上記同一の実行タイミングに配する上記複数の異なる仮想プロセッサに対して優先順位が設定されたスケジュール情報から成り、
上記切替制御部は、上記スケジュールテーブル情報により同一の実行タイミングに属する仮想プロセッサが複数存在することが示されていて、上記ステータス情報により上記実行可能状態であることが示されている仮想プロセッサが複数存在するときは、より優先順位の高い仮想プロセッサに切り替えることを特徴とする請求項３に記載のタスク制御システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はタスク制御システムに関し、特に、複数の仮想プロセッサにより複数のタスクを時分割で実行する際の各タスクの実行制御技術に関するものである。
【背景技術】
【０００２】
近年、情報処理装置は高度な処理能力が求められており、システムの高速化が重要な課題となってきている。そのために、１つのＣＰＵに対して仮想的なプロセッサを複数個用意し、それらの仮想プロセッサにそれぞれ機能を固定で割り当てることによって、各機能を仮想プロセッサ上で実行させる仕組みが提供されている（例えば、特許文献１参照）。
【特許文献１】特開平１１−３２３５号公報
【０００３】
例えば、最近の自動車はエレクトロニクス化が進み、エンジン系の制御を始めてとして、ＡＢＳ（Anti-lock Braking System）やエアバッグなどの安全系の制御、エアコン、ウィンドウ、ドア、シート、インテリア照明などの車体系の制御など、多くの機能（アプリケーション）がＥＣＵ（電子制御ユニット）により制御されるようになっている。そして、これら複数のアプリケーションを複数の仮想プロセッサに固定で割り当てることによって、各アプリケーションを複数の仮想プロセッサ上で実行させる仕組みが採られなければならない。
【０００４】
このとき、ＥＣＵに搭載されているオペレーティング・システム（ＯＳ）は、あらかじめ決められたスケジュールテーブルに従って、アプリケーションを実行させる仮想プロセッサを１命令単位で順次切り替える。このようにＯＳは、各仮想プロセッサに割り当てられた複数のアプリケーションを時分割で実行させることにより、当該複数のアプリケーションをあたかも同時に実行しているかのように見せる機能を有している。
【０００５】
この場合において、スケジュールテーブルの設定如何により、各アプリケーションに対して任意の割当でＣＰＵのリソースを配分することが可能である。例えば、図７に示すように、３個の仮想プロセッサＶＰ１〜ＶＰ３が存在する場合に、第１の仮想プロセッサＶＰ１にＣＰＵリソースの６０％を割り当て、第２の仮想プロセッサＶＰ２にＣＰＵリソースの３０％を割り当て、第３の仮想プロセッサＶＰ３にＣＰＵリソースの１０％を割り当てるといったことが必要となる。
【０００６】
一般的にＯＳは、１つのプロセッサを効率良く使用するために、アプリケーションを実行単位である複数のタスクに分割する。そして、ＯＳが種々の状況に応じてタスクを選択し、選択したタスクにプロセッサの実行権を割り当てている。このときＯＳは、複数のタスクを時分割で実行させることによって、プロセッサの数よりも多くのタスクをあたかも同時に実行しているかのように見せることが可能である。
【０００７】
図７の例では、リアルタイムＯＳ（ＲＴＯＳ）が第３のアプリケーションＡＰＬ３に関するタスクを３つのタスクＴＫ１〜ＴＫ３に分割し、これらを第３の仮想プロセッサＶＰ３に割り当てた例を示している。この場合に第３の仮想プロセッサＶＰ３は、３つのタスクＴＫ１〜ＴＫ３を時分割で順次に切り替えて実行する。
【０００８】
なお、ＣＰＵのリソースを複数の小プロセッサにクラスタ化しておき、各小プロセッサの稼働状況を監視して、要求された情報処理の負荷の大きさに応じて稼働させる小プロセッサにタスクを割り当てるようにした技術も提案されている（例えば、特許文献２参照）。この特許文献２では、Ｉ／Ｏインタフェースを通じて他のコンピュータからリソース貸出の要求があったときは、空き状態の小プロセッサのリソースを貸し出すように成されている。
【特許文献２】特開２００４−２８７８０１号公報
【０００９】
ところで、ＯＳが仮想プロセッサに割り当てるタスクを切り替える際には、その時点で動作しているタスクのコンテクスト（仮想プロセッサのレジスタ値などシステムの状態を表す情報）をメモリに退避し、次に実行を開始するタスクのコンテクストをメモリ上から復元する処理を行う。これによって仮想プロセッサは、後続のタスクの処理を開始することができ、さらに、必要な時点でいつでも以前のタスクの処理を再開することができる（例えば、特許文献３，４参照）。
【特許文献３】特開２００３−３４５６０７号公報
【特許文献４】特開平９−２１２３７１号公報
【発明の開示】
【発明が解決しようとする課題】
【００１０】
上記のように構成された従来の技術では、仮想プロセッサの切り替えはスケジュールテーブルに従ってほぼタイムラグなくできるものの、１つの仮想プロセッサに割り当てられた同一アプリケーションに属する複数のタスクを切り替える際には、コンテクストの退避・復元にかかるオーバーヘッドが生じる。すなわち、タスクを切り替える度に、その時点で動作しているタスクのコンテクストをレジスタからメモリに退避するとともに、次に実行するタスクのコンテクストをメモリからレジスタに復元しなければならない。
【００１１】
図８は、このオーバーヘッドを説明するための図である。図７に示すように、第３の仮想プロセッサＶＰ３に割り当てられた第３のアプリケーションＡＰＬ３が３つのタスクＴＫ１〜ＴＫ３を有している場合、第３の仮想プロセッサＶＰ３は、この３つのタスクＴＫ１〜ＴＫ３を順次切り替えながら処理していく。例えば、図８のようにＴＫ１→ＴＫ２→ＴＫ３の順番で各タスクを処理していくとき、第１のタスクＴＫ１から第２のタスクＴＫ２に切り替える際、および第２のタスクＴＫ２から第３のタスクＴＫ３に切り替える際に、コンテクストの退避・復元のためにオーバーヘッドが生じる。このため、各タスクＴＫ１〜ＴＫ３の切り替えに時間がかかってしまい、システムの応答性などが低下してしまう問題があった。
【００１２】
本発明は、このような問題を解決するために成されたものであり、複数の仮想プロセッサを有する演算処理システムにおいて、同一アプリケーションに属する複数のタスクの切り替え時におけるレジスタ内容の退避・復元処理にかかるオーバーヘッドを極力少なくし、タスクの切り替えを短時間で行えるようにすることを目的とする。
【課題を解決するための手段】
【００１３】
上記した課題を解決するために、本発明では、同一アプリケーションに属する複数のタスクを複数の異なる仮想プロセッサに割り当てるようにしている。そして、このように割り当てた各タスクを実行する際には、複数の仮想プロセッサの切り替え順序をスケジュールテーブル情報として記憶するスケジュールテーブル記憶部を参照して、複数の仮想プロセッサを順次に切り替えることにより、複数の仮想プロセッサに割り当てられている複数のタスクを実行させる。
【発明の効果】
【００１４】
上記のように構成した本発明によれば、同一アプリケーションに属する複数のタスクの切り替えが、当該複数のタスクが別々に割り当てられた複数の仮想プロセッサの切り替えによって行われることとなる。このため、１つの仮想プロセッサで複数のタスクを切り替えるときのようにコンテクストの退避・復元処理を行う必要がなくなり、タスクの切り替えにかかる時間を短縮することができる。
【発明を実施するための最良の形態】
【００１５】
以下、本発明の一実施形態を図面に基づいて説明する。図１は、本実施形態によるタスク制御システムの機能構成例を示すブロック図である。図２は、本実施形態によるタスク制御システムを適用した演算処理システムのハードウェア構成例を示す図である。図１については後述することとし、まず、図２に基づいて演算処理システムのハードウェア構成について説明する。
【００１６】
図２に示すように、演算処理システムは、プロセッサ（ＣＰＵ）１、ＲＯＭ２、ＲＡＭ３およびタイマ４などを備えて構成されている。これらの各構成１〜４は、バス５を介して互いにデータをやり取りすることができるように成されている。この演算処理システムは、後述するように、複数の仮想プロセッサにより複数のタスクを時分割で実行するように成されている。
【００１７】
プロセッサ１は、後述するアプリケーションプログラム（以下、アプリケーションという）の処理を実行するものであり、図４を用いて後述する各種のレジスタを備えている。ＲＯＭ２は、リアルタイムＯＳ（以下、ＲＴＯＳと記す）およびその上で動作するアプリケーションをあらかじめ記憶した記録媒体である。ＲＴＯＳは、図３を用いて後述するように、プロセッサ１が持つリソースを複数の仮想プロセッサに分割して提供する機能を有している。
【００１８】
ＲＡＭ３は、プロセッサ１がアプリケーションの処理を実行する際に使用するワーク用のメモリである。タイマ４は、タスク同期のオブジェクトである“セマフォ”に設定されたカウント数を計測する機能を有している。タスクはセマフォを取得することによって実行可能状態（Ｒｅａｄｙ状態）となり、セマフォを開放することによって休止中状態（Ｄｏｒｍａｎｔ状態）となる。各タスクはセマフォに設定されたカウンタ数までのアクセスが可能であるため、マルチタスク環境で仮想プロセッサが持つリソースの排他制御を行うことが可能である。
【００１９】
図３は、本実施形態のタスク制御システムによるタスクの割当例を示す図である。この図３では、３種類の異なるアプリケーションＡＰＬ１〜ＡＰＬ３がＲＴＯＳの下で動作する例を示している。また、図３の例においてＲＴＯＳは、プロセッサ１が持つリソースを５つの仮想プロセッサＶＰ１〜ＶＰ５に分割して提供している。
【００２０】
ここで、第１のアプリケーションＡＰＬ１と第２のアプリケーションＡＰＬ２はシングルタスクのアプリケーションであるとする。一方、第３のアプリケーションＡＰＬ３は３つのタスクＴＫ１〜ＴＫ３を有するマルチタスクのアプリケーションであるとする。ＲＴＯＳは、各アプリケーションＡＰＬ１〜ＡＰＬ３に属する複数のタスクを５つの仮想プロセッサＶＰ１〜ＶＰ５に割り当てて、各仮想プロセッサＶＰ１〜ＶＰ５により複数のタスクを時分割で実行させる。
【００２１】
具体的には、ＲＴＯＳは、第１のアプリケーションＡＰＬ１に属する１つのタスク（図示せず）を第１の仮想プロセッサＶＰ１に割り当て、第２のアプリケーションＡＰＬ２に属する１つのタスク（図示せず）を第２の仮想プロセッサＶＰ２に割り当てる。また、ＲＴＯＳは、第３のアプリケーションＡＰＬ３に属する３つのタスクＴＫ１〜ＴＫ３を複数の異なる仮想プロセッサＶＰ３〜ＶＰ５にそれぞれ割り当てる。すなわち、第１のタスクＴＫ１を第３の仮想プロセッサＶＰ３に、第２のタスクＴＫ２を第４の仮想プロセッサＶＰ４に、第３のタスクＴＫ３を第５の仮想プロセッサＶＰ５に割り当てる。
【００２２】
図４は、プロセッサ１が備える各種レジスタの構成例を示す図である。図４に示すように、プロセッサ１は、汎用レジスタ１１、スケジュールテーブルレジスタ１２およびステータスレジスタ１３を備えている。図４（ａ）に示す汎用レジスタ１１は、データの演算やアドレス演算などを行う際に使用するものである。図４（ｂ）に示すスケジュールテーブルレジスタ１２は、本発明のスケジュールテーブル記憶部に相当するものであり、５つの仮想プロセッサＶＰ１〜ＶＰ５の切り替え順序をスケジュールテーブル情報として記憶する。
【００２３】
本実施形態のスケジュールテーブル情報は、同一のアプリケーションＡＰＬ３に属する３つのタスクＴＫ１〜ＴＫ３が割り当てられた３つの異なる仮想プロセッサＶＰ３〜ＶＰ５を同一の実行タイミングに配した構成となっている。すなわち、図４（ｂ）に示すスケジュールテーブルレジスタ１２において、横軸は仮想プロセッサＶＰ１〜ＶＰ５の実行タイミング（時間軸）を示している。また、縦軸は同一のタイミングで実行され得る複数の仮想プロセッサＶＰ３〜ＶＰ５が存在することを表している。
【００２４】
図４（ｂ）に示す例では、ＶＰ１→ＶＰ２→ＶＰ１→（ＶＰ３〜ＶＰ５の何れか）→ＶＰ１→ＶＰ２→ＶＰ１→（ＶＰ３〜ＶＰ５の何れか）→・・・の順序で仮想プロセッサＶＰ１〜ＶＰ５が動作することを示している。なおここでは、第１の仮想プロセッサＶＰ１に対してより多くの実行スケジュールを割り当てることにより、各仮想プロセッサＶＰ１〜ＶＰ５により実行される各アプリケーションＡＰＬ１〜ＡＰＬ３に対して任意の割当でプロセッサ１のリソースを配分している。具体的には、第１のアプリケーションＡＰＬ１にリソースの５０％を割り当て、第２のアプリケーションＡＰＬ２にリソースの２５％を割り当て、第３のアプリケーションＡＰＬ３にリソースの２５％を割り当てている。
【００２５】
また、スケジュールテーブルレジスタ１２において縦軸の位置は、同一の実行タイミングに配される３つの仮想プロセッサＶＰ３〜ＶＰ５に対する実行の優先順位を示している。例えば、縦軸の上の位置ほど優先順位が高く、下の位置ほど優先順位が低く設定されている。なお、図４はスケジュールテーブル情報の概念を分かりやすく説明するために示した概念図であり、必ずしも横軸と縦軸とを有する２次元的なスケジュールテーブルレジスタ１２とする必要はない。要は、同一のタイミングで実行され得る複数の仮想プロセッサＶＰ３〜ＶＰ５が存在することと、当該複数の仮想プロセッサＶＰ３〜ＶＰ５に関する実行の優先順位とを示す情報をスケジュールテーブルレジスタ１２に格納すれば良い。
【００２６】
図４（ｃ）に示すステータスレジスタ１３は、本発明のステータス記憶部に相当するものであり、５つの仮想プロセッサＶＰ１〜ＶＰ５がそれぞれ実行可能状態であるか休止中状態であるかのステータス情報を記憶する。図４（ｃ）に示すステータスレジスタ１３は、左から順に５つの仮想プロセッサＶＰ１〜ＶＰ５のステータス情報を示しており、“Ｒ”は実行可能状態（Ｒｅａｄｙ状態）、“Ｄ”は休止中状態（Ｄｏｒｍａｎｔ状態）を示している。
【００２７】
次に、図１に基づいて本実施形態によるタスク制御システムの機能構成について説明する。なお、この図１において、図３および図４に示した構成要素と同一の機能を有する構成要素には同一の符号を付している。
【００２８】
図１において、スケジュール設定部２１は、ＲＴＯＳの機能により提供されるものであり、プロセッサ１のスケジュールテーブルレジスタ１２にスケジュールテーブル情報を格納する。ここで格納するスケジュールテーブル情報は、例えば、ＲＴＯＳによりあらかじめ定められた固定のテーブル情報である。
【００２９】
ステータス設定部２２は、ＲＴＯＳの機能により提供されるものであり、プロセッサ１のステータスレジスタ１３に各仮想プロセッサＶＰ１〜ＶＰ５のステータス情報を格納する。上述したように、各仮想プロセッサＶＰ１〜ＶＰ５は、セマフォの取得により実行可能状態となり、セマフォの開放により休止中状態となる。例えば、ステータス設定部２２は、このセマフォの取得および開放に応じて、ステータスレジスタ１３に格納するステータス情報を適宜書き換える。
【００３０】
タスク割当制御部２３は、ＲＴＯＳが起動される前に初期化プログラム（モニタープログラム、ＢＩＯＳ、マイクロカーネルなど）の機能によって提供されるものであり、各アプリケーションＡＰＬ１〜ＡＰＬ３に属する複数のタスクを５つの仮想プロセッサＶＰ１〜ＶＰ５に割り当てる。上述したように、タスク割当制御部２３は、第１のアプリケーションＡＰＬ１に属する１つのタスクを第１の仮想プロセッサＶＰ１に割り当て、第２のアプリケーションＡＰＬ２に属する１つのタスクを第２の仮想プロセッサＶＰ２に割り当てる。また、タスク割当制御部２３は、第３のアプリケーションＡＰＬ３に属する３つのタスクＴＫ１〜ＴＫ３を３つの異なる仮想プロセッサＶＰ３〜ＶＰ５にそれぞれ割り当てる。
【００３１】
切替制御部２４は、プロセッサ１内のハードウェア機構により遅延なく１クロック単位で行われるものであり、スケジュールテーブルレジスタ１２に格納されているスケジュールテーブル情報およびステータスレジスタ１３に格納されているステータス情報に基づいて複数の仮想プロセッサＶＰ１〜ＶＰ５を順次に切り替えて、タスク割当制御部２３により複数の仮想プロセッサＶＰ１〜ＶＰ５に割り当てられている複数のタスクを実行させるよう制御する。
【００３２】
このとき切替制御部２４は、スケジュールテーブル情報により同一の実行タイミングに属する仮想プロセッサが複数存在することが示されているときは、ステータス情報により実行可能状態であることが示されている仮想プロセッサに切り替える。また、切替制御部２４は、スケジュールテーブル情報により同一の実行タイミングに属する仮想プロセッサが複数存在することが示されていて、かつ、ステータス情報により実行可能状態であることが示されている仮想プロセッサが複数存在するときは、より優先順位の高い仮想プロセッサに切り替える。
【００３３】
図５は、本実施形態によるタスク制御システムの動作例を説明するための図である。図５に示すように、スケジュールテーブルレジスタ１２に格納されているスケジュールテーブル情報により、５つの仮想プロセッサＶＰ１〜ＶＰ５がＶＰ１→ＶＰ２→（ＶＰ３〜ＶＰ５の何れか）→ＶＰ１→ＶＰ２→（ＶＰ３〜ＶＰ５の何れか）→・・・の順序で動作するものとする。また、ステータスレジスタ１３に格納されているステータス情報により、ある実行タイミングで第３の仮想プロセッサＶＰ３が休止中状態、それ以外の仮想プロセッサＶＰ１，ＶＰ２，ＶＰ４，ＶＰ５が実行可能状態になっているものとする。
【００３４】
この状態において、切替制御部２４は、スケジュールテーブル情報により第１の仮想プロセッサＶＰ１の実行タイミングになったときに、ステータス情報を参照して第１の仮想プロセッサＶＰ１が実行可能状態かどうかを確認する。ここでは第１の仮想プロセッサＶＰ１が実行可能状態となっているので、切替制御部２４は第１の仮想プロセッサＶＰ１に切り替えてタスクを実行させる。
【００３５】
次に、切替制御部２４は、スケジュールテーブル情報により第２の仮想プロセッサＶＰ２の実行タイミングになったときに、ステータス情報を参照して第２の仮想プロセッサＶＰ２が実行可能状態かどうかを確認する。ここでは第２の仮想プロセッサＶＰ２が実行可能状態となっているので、切替制御部２４は第２の仮想プロセッサＶＰ２に切り替えてタスクを実行させる。
【００３６】
さらに、切替制御部２４は、スケジュールテーブル情報により第３〜第５の仮想プロセッサＶＰ３〜ＶＰ５の実行タイミングになったときに、ステータス情報を参照して、最も優先順位の高い第３の仮想プロセッサＶＰ３が実行可能状態かどうかを確認する。ここでは第３の仮想プロセッサＶＰ３が休止中状態となっているので、第３の仮想プロセッサＶＰ３はスキップして、次に優先順位の高い第４の仮想プロセッサＶＰ４が実行可能状態かどうかを確認する。
【００３７】
ここでは第４の仮想プロセッサＶＰ４が実行可能状態となっているので、切替制御部２４は、第４の仮想プロセッサＶＰ４に切り替えて第２のタスクＴＫ２を実行させる。なお、図５の例では、第４の仮想プロセッサＶＰ４と同時に第５の仮想プロセッサＶＰ５も実行可能状態となっている。しかし、第４の仮想プロセッサＶＰ４の方が第５の仮想プロセッサＶＰ５よりも優先順位が高いので、切替制御部２４は第４の仮想プロセッサＶＰ４の方に優先的に切り替えて第２のタスクＴＫ２を実行させる。
【００３８】
ところで、第３のアプリケーションＡＰＬ３が３つのタスクＴＫ１〜ＴＫ３をＴＫ１→ＴＫ２→ＴＫ３の順番で処理していくように成されていて、第１のタスクＴＫ１の終了を条件として第２のタスクＴＫ２が実行可能となる場合には、ＲＴＯＳは、第１のタスクＴＫ１が終了していない間は第３の仮想プロセッサＶＰ３のステータスを実行可能状態としておく。第３の仮想プロセッサＶＰ３は第４、第５の仮想プロセッサＶＰ４，ＶＰ５よりも優先順位が高いので、第３の仮想プロセッサＶＰ３のステータスが実行可能状態となっていれば、第１のタスクＴＫ１が優先的に実行されるようになる。図５に示した例は、第１のタスクＴＫ１が既に終了し、その終了時点で第３の仮想プロセッサＶＰ３のステータスが実行可能状態から休止中状態に切り替えられた後の状態を示している。
【００３９】
以上詳しく説明したように、本実施形態では、仮想化されたプロセッサというハードウェア構成と、ＲＴＯＳというソフトウェアとの組み合わせによってタスク制御の新しい手法を実現している。すなわち、同一アプリケーションＡＰＬ３に属する複数のタスクＴＫ１〜ＴＫ３のスケジューリングを複数の異なる仮想プロセッサＶＰ３〜ＶＰ５というハードウェアにより実現している。
【００４０】
具体的には、同一のアプリケーションＡＰＬ３に属する複数のタスクＴＫ１〜ＴＫ３を複数の異なる仮想プロセッサＶＰ３〜ＶＰ５に割り当てるようにしている。そして、ＲＴＯＳがプロセッサ１のスケジュールテーブルレジスタ１２とステータスレジスタ１３とを参照して複数の仮想プロセッサＶＰ１〜ＶＰ５を順次に切り替えることにより、各仮想プロセッサＶＰ１〜ＶＰ５に割り当てられている複数のタスクを順次実行させるようにしている。
【００４１】
このように構成した本実施形態のタスク制御システムによれば、同一アプリケーションＡＰＬ３に属する複数のタスクＴＫ１〜ＴＫ３の切り替えが、当該複数のタスクＴＫ１〜ＴＫ３が別々に割り当てられた複数の仮想プロセッサＶＰ３〜ＶＰ５の切り替えによって行われることとなる。このため、１つの仮想プロセッサで複数のタスクを切り替えるときのようにタスクのコンテクストを退避・復元するための処理を行う必要がなくなり、タスクＴＫ１〜ＴＫ３の切り替えにかかる時間を短縮することができる。
【００４２】
図６は、本実施形態の効果を説明するための図である。図６に示すように、第３のアプリケーションＡＰＬ３が３つのタスクＴＫ１〜ＴＫ３を有している場合、ＲＴＯＳは、第３〜第５の仮想プロセッサＶＰ３〜ＶＰ５を切り替えることにより、これら３つのタスクＴＫ１〜ＴＫ３を順次処理していく。例えば、ＴＫ１→ＴＫ２→ＴＫ３の順番で各タスクを処理していくとき、第１のタスクＴＫ１から第２のタスクＴＫ２に切り替える際にも、第２のタスクＴＫ２から第３のタスクＴＫ３に切り替える際にも、コンテクストの退避・復元処理を行うことは不要であり、そのためのオーバーヘッドを省くことができる。
【００４３】
なお、上記実施形態では、第１のアプリケーションＡＰＬ１がシングルタスクである場合について説明したが、これがマルチタスクのアプリケーションであっても良い。この場合、ＲＴＯＳは、第１のアプリケーションＡＰＬ１に属する複数のタスクを複数の異なる仮想プロセッサ（例えばタスクが３つの場合、それらを仮想プロセッサＶＰ１，ＶＰ４，ＶＰ５）割り当てる。また、第２のアプリケーションＡＰＬ２がマルチタスクのアプリケーションであっても良い。この場合、ＲＴＯＳは、第２のアプリケーションＡＰＬ２に属する複数のタスクを複数の異なる仮想プロセッサ（例えばタスクが３つの場合、それらを仮想プロセッサＶＰ２，ＶＰ４，ＶＰ５）割り当てる。
【００４４】
このように構成した場合、第４の仮想プロセッサＶＰ４と第５の仮想プロセッサＶＰ５は、第１のアプリケーションＡＰＬ１に属するタスクと、第２のアプリケーションＡＰＬ２に属するタスクと、第３のアプリケーションＡＰＬ３に属するタスクとを１つずつ担当することになる。よって、１つの仮想プロセッサＶＰ３内でタスクの切り替えが生じる。この場合は、タスクのコンテクストをＲＡＭ３等のメモリに退避・復元する必要がある。そこで、仮想プロセッサの数を増やし、１つの仮想プロセッサに対して複数のタスクが割り当てられないようにすることが好ましい。もしくは、リアルタイム性が要求されない汎用ＯＳ（例えばＬＩＮＵＸに代表されるＵＮＩＸ（登録商標））と共存する場合は、汎用ＯＳはタスク数が多く、更にコンテクストスイッチ時間を問題としないので、仮想プロセッサは１つが望ましい。
【００４５】
その他、上記実施形態は、何れも本発明を実施するにあたっての具体化の一例を示したものに過ぎず、これによって本発明の技術的範囲が限定的に解釈されてはならないものである。すなわち、本発明はその精神、またはその主要な特徴から逸脱することなく、様々な形で実施することができる。
【図面の簡単な説明】
【００４６】
【図１】本実施形態によるタスク制御システムの機能構成例を示すブロック図である。
【図２】本実施形態によるタスク制御システムを適用した演算処理システムのハードウェア構成例を示す図である。
【図３】本実施形態のタスク制御システムによる各仮想プロセッサへのタスクの割当例を示す図である。
【図４】本実施形態のプロセッサが備える各種レジスタの構成例を示す図である。
【図５】本実施形態によるタスク制御システムの動作例を説明するための図である。
【図６】本実施形態の効果を説明するための図である。
【図７】従来のタスク制御システムによる各仮想プロセッサへのタスクの割当例を示す図である。
【図８】タスクの切り替え時に生じるコンテクスト退避・復元に関するオーバーヘッドを説明するための図である。
【符号の説明】
【００４７】
１  プロセッサ
２  ＲＯＭ
３  ＲＡＭ
４  タイマ
１１  汎用レジスタ
１２  スケジュールテーブルレジスタ
１３  ステータスレジスタ
２１  スケジュール設定部
２２  ステータス設定部
２３  タスク割当制御部
２４  切替制御部
ＶＰ１〜ＶＰ５  仮想プロセッサ
ＡＰＬ１〜ＡＰＬ３  アプリケーション
ＴＫ１〜ＴＫ３  １つのアプリケーションに属する複数のタスク
【図１】
2009064388.tif 000003
【図２】
2009064388.tif 000004
【図３】
2009064388.tif 000005
【図４】
2009064388.tif 000006
【図５】
2009064388.tif 000007
【図６】
2009064388.tif 000008
【図７】
2009064388.tif 000009
【図８】
2009064388.tif 000010