(57)【要約】【課題】本発明は、プロセッサ及びプロセッサ処理方法に係り、マイクロカーネル上で優先パーティションが優先的にタスクを実行する際のコンテキストスイッチを低減することにある。【解決手段】マイクロカーネル１４上に互いに独立して設けられる、定周期でタスクを実行する定周期パーティションＴＰ１，ＴＰ２と、優先的にタスクを実行する優先パーティションＴＰ０と、からなる複数のタイムパーティションＴＰを備える時分割マルチスレッド化されたプロセッサ１０において、マイクロカーネル１４は、複数のタイムパーティションＴＰのすべてを同時に起動させて各タイムパーティションＴＰ内の計時を開始させることで、各タイムパーティションＴＰ間のタスクスケジュールのタイミングを合わせる。【選択図】図１
2010205085.tif 000002
【特許請求の範囲】
【請求項１】
マイクロカーネル上に互いに独立して設けられる、定周期でタスクを実行する定周期パーティションと、優先的にタスクを実行する優先パーティションと、からなる複数のパーティションを備える時分割マルチスレッド化されたプロセッサであって、
マイクロカーネルは、各パーティション間のタスクスケジュールのタイミングを合わせる同期手段を有することを特徴とするプロセッサ。
【請求項２】
前記同期手段は、前記複数のパーティションのすべてを同時に起動させて各パーティション内の計時を開始させることを特徴とする請求項１記載のプロセッサ。
【請求項３】
前記定周期パーティションは、複数設けられており、
各定周期パーティションはそれぞれ、ラウンドロビンでタスクを実行する機会を与えられることを特徴とする請求項１又は２記載のプロセッサ。
【請求項４】
マイクロカーネル上に互いに独立して設けられる、定周期でタスクを実行する定周期パーティションと、優先的にタスクを実行する優先パーティションと、からなる複数のパーティションを備える時分割マルチスレッド化されたプロセッサにおける処理方法であって、
マイクロカーネルが、各パーティション間のタスクスケジュールのタイミングを合わせる同期ステップを備えることを特徴とするプロセッサ処理方法。
【請求項５】
前記同期ステップは、マイクロカーネルが前記複数のパーティションのすべてを同時に起動させて各パーティション内の計時を開始させるステップであることを特徴とする請求項４記載のプロセッサ処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プロセッサ及びその処理方法に係り、特に、マイクロカーネル上に互いに独立して設けられる、定周期でタスクを実行するパーティションと、優先的にタスクを実行するパーティションと、からなる複数のパーティションを備える時分割マルチスレッド化されたプロセッサ、及び、そのプロセッサにおける処理方法に関する。
【背景技術】
【０００２】
従来、マルチスレッド化されたプロセッサが知られている（例えば、特許文献１及び２参照）。これらのプロセッサは、各スレッドをそれぞれ一定周期でスケジューリングしたうえで、複数のスレッドを並行して実行する。また、プロセッサは、オペレーティングシステム（ＯＳ）の一部としてマイクロカーネルを搭載しており、各スレッドを時分割で実行することができる。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００７−５８３３１号公報
【特許文献２】特開平８−５５０３７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ところで、各スレッドのすべてが、時分割されたラウンドロビンでタスクを実行できるパーティション（定周期パーティション）である場合は、これらの各定周期パーティションはそれぞれ、ラウンドロビンで自己に割り当てられるスケジュールタイミングでタスクを実行することができる。一方、複数のスレッドに、上記の定周期パーティション以外に、タスクを優先的に実行できるパーティション（優先パーティション）が含まれている場合には、各定周期パーティションがラウンドロビンでハードウェアを占有しているときにも、優先パーティションがその定周期パーティションによる占有に割り込んでタスクを実行することができる。
【０００５】
マイクロカーネル上の各パーティションはそれぞれ、互いに独立しており、他のパーティションの存在を意識することなく独自の時間スケジュールでタスクを実行する。しかし、この場合において、各パーティション内の時間が互いに全く関係の無い独立したものであると、定周期パーティションがタスクを実行し始めた後、そのタスクが完了する前に、優先パーティションのタスクが割り込んで実行される事態が生じ得る。かかる事態が生ずると、定周期パーティションのタスクの実行が中途で停止されて優先パーティションのタスクの実行が開始されると共に、優先パーティションの割り込んだタスクが完了した後に定周期パーティションのタスクの実行がその中途から再開されることとなるため、マイクロカーネル内で発生するコンテキストスイッチが増加してしまう。従って、各パーティション内の時間が互いに全く関係の無い独立したものでは、タスク処理についてリアルタイム性が悪化するなどの不都合が生ずる。
【０００６】
本発明は、上述の点に鑑みてなされたものであり、マイクロカーネル上で優先パーティションが優先的にタスクを実行する際のコンテキストスイッチの低減を図ることが可能なプロセッサ及びその処理方法を提供することを目的とする。
【課題を解決するための手段】
【０００７】
上記の目的は、マイクロカーネル上に互いに独立して設けられる、定周期でタスクを実行する定周期パーティションと、優先的にタスクを実行する優先パーティションと、からなる複数のパーティションを備える時分割マルチスレッド化されたプロセッサであって、マイクロカーネルは、各パーティション間のタスクスケジュールのタイミングを合わせる同期手段を有するプロセッサにより達成される。
【０００８】
また、上記の目的は、マイクロカーネル上に互いに独立して設けられる、定周期でタスクを実行する定周期パーティションと、優先的にタスクを実行する優先パーティションと、からなる複数のパーティションを備える時分割マルチスレッド化されたプロセッサにおける処理方法であって、マイクロカーネルが、各パーティション間のタスクスケジュールのタイミングを合わせる同期ステップを備えるプロセッサ処理方法により達成される。
【０００９】
これらの態様の発明において、定周期パーティションと優先パーティションとを含むすべてのパーティションのタスクスケジュールのタイミングは、マイクロカーネルにより同期されている。かかる同期がなされていれば、優先パーティションを含むすべてのパーティション内の時間が互いに関係することとなるため、各パーティションのタスクの実行タイミングが重なるのを防止することができ、定周期パーティションのタスクの実行途中で優先パーティションのタスクが割り込むのを回避することができる。従って、本発明によれば、マイクロカーネル上で優先パーティションが優先的にタスクを実行する際のコンテキストスイッチを低減することができる。
【００１０】
尚、上記したプロセッサにおいて、前記同期手段は、前記複数のパーティションのすべてを同時に起動させて各パーティション内の計時を開始させることとすればよい。
【００１１】
また、上記したプロセッサ処理方法において、前記同期ステップは、マイクロカーネルが前記複数のパーティションのすべてを同時に起動させて各パーティション内の計時を開始させるステップであることとすればよい。
【００１２】
これらの態様の発明において、パーティションのすべては、マイクロカーネルの同期手段により同時に起動されて内部の計時を開始する。この場合、すべてのパーティション内の時間は互いに一致したものとなる。このため、各パーティションがそれぞれタスクを実行する場合にもその実行タイミングが重なるのは防止され、定周期パーティションのタスクの実行途中で優先パーティションのタスクが割り込むのは回避される。
【００１３】
ところで、上記したプロセッサにおいて、前記定周期パーティションは、複数設けられており、各定周期パーティションはそれぞれ、ラウンドロビンでタスクを実行する機会を与えられることとしてもよい。
【発明の効果】
【００１４】
本発明によれば、マイクロカーネル上で優先パーティションが優先的にタスクを実行する際のコンテキストスイッチを低減することができる。
【図面の簡単な説明】
【００１５】
【図１】本発明の一実施例であるプロセッサの構成図である。
【図２】本実施例のプロセッサにおける一例の動作タイムチャートである。
【図３】本実施例のプロセッサにおいてマイクロカーネルが実行する制御ルーチンの一例のフローチャートである。
【発明を実施するための形態】
【００１６】
以下、図面を用いて、本発明に係るプロセッサ及びプロセッサ処理方法の具体的な実施の形態について説明する。
【００１７】
図１は、本発明の一実施例であるプロセッサ又はそのソフトウェア１０の構成図を示す。図２は、本実施例のプロセッサ又はソフトウェア１０における一例の動作タイムチャートを示す。尚、図２（Ａ）には本実施例のプロセッサ又はソフトウェア１０と対比される各タイムパーティション間の時間同期が無い場合を、また、図２（Ｂ）には本実施例のプロセッサ又はソフトウェア１０における各タイムパーティション間の時間同期が有る場合を、それぞれ示す。本実施例のプロセッサ又はソフトウェア１０は、例えば、車両に搭載されるプロセッサシステムであり、車両制御に用いられる統合型の電子制御ユニット（ＥＣＵ）である。
【００１８】
図１に示す如く、プロセッサ又はソフトウェア１０は、マイクロコンピュータを構成しており、一つのハードウェアリソース（以下、Ｈ／Ｗと称す）１２を備えている。プロセッサ又はソフトウェア１０は、マイクロカーネル１４を使用したゲストＯＳ（オペレーティングシステム）に従って動作することができる。マイクロカーネル１４は、ＯＳが担う各種機能のうち最小限の機能のことである。プロセッサ又はソフトウェア１０は、一つのＨ／Ｗ１２上でマイクロカーネル１４を用いて複数（図１では３つ）のＯＳ（例えば、ＯＳＥＫ−ＯＳやｉＴｒｏｎ−ＯＳなど）１６を独立にかつ並行に動作させることが可能である。
【００１９】
プロセッサ又はソフトウェア１０に搭載される各ＯＳ１６上ではそれぞれ、予め定められたアプリケーションＡＰやＩ／Ｏサーバなどが実行可能である。ＯＳ１６上でのアプリケーションＡＰ等の実行処理は、他のＯＳ１６でのアプリケーションＡＰ等の実行処理に影響を与えないものとなっている。これらのアプリケーションＡＰは、例えば、車両のパワーマネジメントを行う電源制御プログラム、画像処理を行うカメラ制御プログラム、ナビゲーション処理を行うナビゲーションプログラム、エンジン制御を行うエンジン制御プログラムなどである。
【００２０】
各アプリケーションＡＰやＩ／Ｏサーバはそれぞれ、自己に対応するＯＳ１６上でＣＰＵの実行単位（ＯＳ１６が取り扱う処理の最小単位）であるタスク（実行時間は例えば１００μｓｅｃ）に区分される。そして、これら複数のタスクは、タイムスケジューリングされながら実行される。各アプリケーションＡＰやＩ／Ｏサーバのタスクの実行結果は、他のアプリケーションＡＰやＩ／Ｏサーバに対して、共有メモリやＩＰＣ（Inter  Process  Communication）などにより送受されることが可能である。
【００２１】
プロセッサ又はソフトウェア１０は、時分割マルチスレッド化されており、マイクロカーネル１４は、複数のスレッドを独立にかつ並行に実行させることができる。プロセッサ又はソフトウェア１０に搭載される複数のＯＳ１６やアプリケーションＡＰ等はそれぞれ、マイクロカーネル１４上で互いに独立して設けられる複数のタイムパーティションＴＰに割り当てられている。各タイムパーティションＴＰは、互いに独立したスレッドであって、時分割でラウンドロビンするパーティション（以下、定周期パーティションと称す）ＴＰ１〜ＴＰｎと、それらの定周期パーティションＴＰ１〜ＴＰｎとは異なり優先的に動作するパーティション（以下、優先パーティションと称す）ＴＰ０と、からなる。優先パーティションＴＰ０は、処理負荷の高い、例えば、ゲートウェイなどとの入出力や通信を行うＩ／Ｏサーバに対応するタイムパーティションである。
【００２２】
以下、本実施例では、タイムパーティションＴＰは、２つの定周期パーティションＴＰ１，ＴＰ２と、一つの優先パーティションＴＰ０と、からなるものとする。定周期パーティションＴＰ１，ＴＰ２のラウンドロビン周期は、予め定められており、例えば１．１ｍｓｅｃである。また、定周期パーティションＴＰ１，ＴＰ２の各占有時間は、予め定められており、ラウンドロビン周期が１．１ｍｓｅｃとした場合には、例えば、それぞれ６００μｓｅｃ，５００μｓｅｃである。
【００２３】
マイクロカーネル１４は、Ｈ／Ｗ１２側のリセット解除（例えば、車両のイグニションスイッチのオフからオンへの切り替え）により起動され、その後は、各タイムパーティションＴＰなどの初期化を行うと共に、起動により開始されるシステムチック（例えば、１００μｓｅｃ周期）に従って時間を計算する。そして、定周期パーティションＴＰ１，ＴＰ２のラウンドロビンをタイムスケジューリングして、予め定められるラウンドロビン周期内で予め定められる占有時間に従って定周期パーティションＴＰ１，ＴＰ２の占有を切り替える。
【００２４】
マイクロカーネル１４上において、各タイムパーティションＴＰはそれぞれ、互いに独立しており、他のタイムパーティションの存在を意識することなく独自の時間スケジュールでタスクを実行する。すなわち、各タイムパーティションＴＰはそれぞれ、システムチックから独立した独自の時間を内蔵している（スケジューラ）。各タイムパーティションＴＰはそれぞれ、マイクロカーネル１４からの指令により初期化され、その初期化が完了した後に起動されて内部時間の計時を開始する。
【００２５】
定周期パーティションＴＰ１，ＴＰ２に割り当てられているアプリケーションＡＰやＩ／Ｏサーバは、所定周期（例えば、１ｍｓｅｃ）ごとにタスクを生成する。すなわち、これらのアプリケーションＡＰやＩ／Ｏサーバにおいて、タスクは、予め所定時間（例えば、１ｍｓｅｃ）ごとに生成されるようにスケジューリングされており、そのタイムスケジュールを基に生成される。また、優先パーティションＴＰ０に割り当てられているアプリケーションＡＰやＩ／Ｏサーバも、所定時間（例えば、１ｍｓｅｃ）ごとに生成されるスケジューリングされたタスクを有しており、優先パーティションＴＰ０においても、タスクが、予め所定周期（例えば、１ｍｓｅｃ）ごとに生成されるようにスケジューリングされており、そのタイムスケジュールを基に生成される。尚、定周期パーティションＴＰ１，ＴＰ２及び優先パーティションＴＰ０の各タスク生成周期は、ラウンドロビン周期と異なっていてもよいし、同じであってもよい。
【００２６】
優先パーティションＴＰ０のタスクは、定周期パーティションＴＰ１，ＴＰ２のタスクに比べて優先的に実行されるタスクであり、定周期パーティションＴＰ１，ＴＰ２が占有状態にあってもマイクロカーネル１４上でコンテキストスイッチが発生することで実行可能とされる。一方、定周期パーティションＴＰ１，ＴＰ２のタスクは、その定周期パーティションＴＰ１，ＴＰ２がマイクロカーネル１４からの指令により占有状態にある場合にのみ実行される。
【００２７】
マイクロカーネル１４は、タイムパーティションＴＰのタスクが生成された場合、そのタスクのタイムスケジューリングを行う。生成タスクが例えば定周期パーティションＴＰ１によるものである場合は、その定周期パーティションＴＰ１が占有状態になった際にそのタスクが実行されるようにタイムスケジュールを行う。また、生成タスクが例えば優先パーティションによるものである場合は、その生成タスクが他のタスク（定周期パーティションＴＰ１，ＴＰ２のタスク）に比して優先的に実行されるようにタイムスケジュールを行う。
【００２８】
上記したプロセッサ又はソフトウェア１０においては、定周期パーティションＴＰ１又はＴＰ２のタスクが生成された際、その定周期パーティションＴＰ１又はＴＰ２が占有状態にある場合は、直ちにそのタスクが実行される。一方、定周期パーティションＴＰ１又はＴＰ２のタスクが生成された際、その定周期パーティションＴＰ１又はＴＰ２が占有状態にない場合（すなわち、他方の定周期パーティションＴＰ２又はＴＰ１が占有状態にある場合）は、直ちにそのタスクが実行される訳ではなく、そのタスクは、メモリ上に待機して、当該定周期パーティションＴＰ１又はＴＰ２が非占有状態から占有状態へ切り替わった後に実行される。
【００２９】
また、優先パーティションＴＰ０のタスクが生成されると、定周期パーティションＴＰ１又はＴＰ２が占有状態にあっても、直ちにその優先パーティションＴＰ０のタスクが実行される。尚、優先パーティションＴＰ０のタスクが生成された際、待機する定周期パーティションＴＰ１又はＴＰ２のタスクがある場合は、優先パーティションＴＰ０のタスクが実行された後に、その待機する定周期パーティションＴＰ１又はＴＰ２のタスクが実行される。
【００３０】
従って、本実施例のプロセッサ又はソフトウェア１０によれば、定周期パーティションＴＰ１，ＴＰ２にそれぞれ、交互に割り当てられる占有状態時にタスクを実行させることができると共に、優先パーティションＴＰ０のタスクが割り込んだ際には、その優先パーティションＴＰ０に、定周期パーティションＴＰ１，ＴＰ２が占有状態にあっても直ちにタスクを実行させることができる。このため、定周期パーティションＴＰ１，ＴＰ２のタスクを定期的に実行させつつ、優先パーティションＴＰ０のタスクを優先的に実行させることが可能である。
【００３１】
ところで、定周期パーティションＴＰ１又はＴＰ２が占有状態にある場合に優先パーティションＴＰ０のタスクが実行されるときは、マイクロカーネル１４によりその優先パーティションＴＰ０のタスク実行開始時及びタスク実行終了時にそれぞれコンテキストスイッチが発生される。特に、各タイムパーティションＴＰはそれぞれ、上記の如く、マイクロカーネル１４からの指令による初期化が完了した後に起動されて内部時間の計時を開始するが、各タイムパーティションＴＰ内の時間（絶対時間）が互いに全く関係なく計時開始されて独立していると、各タイムパーティションＴＰ内のタスクの実行タイミングが重なるおそれがある（図２（Ａ）参照）。
【００３２】
具体的には、タイムパーティションＴＰが定周期パーティションＴＰ１及びＴＰ２のみからなるものであれば、マイクロカーネル１４により切り替えられる定周期パーティションＴＰ１及びＴＰ２の占有時間が互いに重なることは無いので、各タイムパーティションＴＰ内の時間が互いに全く関係なく独立していても、タスクの実行タイミングが重なることは無い。しかし、タイムパーティションＴＰが優先パーティションＴＰ０を含んでいる場合において、各タイムパーティションＴＰ内の時間が互いに全く関係なく独立していると、定周期パーティションＴＰ１，ＴＰ２がタスクを実行し始めた後、そのタスクが完了する前に、優先パーティションＴＰ０のタスクが割り込んで実行される事態が生じ得る。かかる事態が生ずると、定周期パーティションＴＰ１，ＴＰ２のタスクの実行が中途で停止されて優先パーティションＴＰ０のタスクの実行が開始されると共に、優先パーティションＴＰ０の割り込んだタスクが完了した後に定周期パーティションＴＰ１，ＴＰ２のタスクの実行がその中途から再開されることとなるため、マイクロカーネル１４内で発生するコンテキストスイッチが増加してしまう。
【００３３】
そこで、本実施例のプロセッサ又はソフトウェア１０においては、マイクロカーネル１４上で優先パーティションＴＰ０が優先的にリスクを実行する際のコンテキストスイッチの低減を図ることとしている。図３は、本実施例のプロセッサ又はソフトウェア１０においてマイクロカーネル１４が実行する制御ルーチンの一例のフローチャートを示す。
【００３４】
本実施例において、各タイムパーティションＴＰ内の時間は、互いに同期されている。具体的には、各タイムパーティションＴＰのスケジューラはそれぞれ、タスクの実行を開始できるタイミング及びその時間間隔が、他のタイムパーティションＴＰのスケジューラにおけるタスクの実行を開始できるタイミング及びその時間間隔と一致するように時間設定されている。
【００３５】
マイクロカーネル１４は、上記の如く、Ｈ／Ｗ１２側のリセット解除により起動された後に各タイムパーティションＴＰの初期化を行う（ステップ１００）が、すべてのタイムパーティションＴＰの初期化を完了した後、それらすべてのタイムパーティションＴＰが同時に起動されるように起動指令を行う（ステップ１０２）。
【００３６】
かかる構成においては、各タイムパーティションＴＰ内の時間が同時に計時開始されて、互いに一致したものとなる。この場合、マイクロカーネル１４からの指令によりすべてのタイムパーティションＴＰのタスクスケジュールのタイミングは同期されるので、定周期パーティションＴＰ１，ＴＰ２のタスクの実行タイミングと優先パーティションＴＰ０のタスクの実行タイミングとが少なくともシステムチックの周期間隔（すなわち、タスクの実行時間の長さ）分だけずれたものとなる（図２（Ｂ）参照）。
【００３７】
例えば、優先パーティションＴＰ０のタスクが定周期パーティションＴＰ１，ＴＰ２のタスクが実行されるべきタイミングと同じタイミングで実行される場合には、マイクロカーネル１４が両タスクのタイムスケジュールを優先順位に従って作成することで、その定周期パーティションＴＰ１，ＴＰ２でのタスクの実行タイミングが、その優先パーティションＴＰ０でのタスクの実行後に（具体的には、少なくともタスクの実行時間の長さ分だけ）ずれることとなる。
【００３８】
このため、各優先パーティションＴＰ０のタスクの実行タイミングと定周期パーティションＴＰ１，ＴＰ２のタスクの実行タイミングとがその全部及び一部で実際に重なるのを防止することができ、この点、定周期パーティションＴＰ１，ＴＰ２のタスクの実行途中でそのタスクの実行が停止されかつ優先パーティションＴＰ０のタスクが割り込んでその実行が開始されるのを回避することができると共に、更に、優先パーティションＴＰ０のタスクの実行が完了した後に定周期パーティションＴＰ１，ＴＰ２のタスクの実行が中途から再開されるのを回避することができる。
【００３９】
従って、本実施例のプロセッサ又はソフトウェア１０によれば、各タイムパーティションＴＰ内の時間を互いに同期させることで、マイクロカーネル１４上で優先パーティションＴＰ０が優先的にタスクを実行する際に生ずるコンテキストスイッチの発生を低減することが可能となっている。特に、定周期パーティションの数が増えるほど、優先パーティションＴＰ０のタスクが定周期パーティションのタスクの実行されるべきタイミングに割り込んで実行される機会が多くなるが、かかる状況でもコンテキストスイッチの発生が確実に低減されるので、上記の効果をより有効なものとすることが可能である。
【００４０】
このため、本実施例によれば、プロセッサ１０における処理負荷の軽減を図ることができ、かかる処理についてリアルタイム性の悪化を防止することができる。或いは逆に、高性能のプロセッサ１０を用いることなく各タイムパーティションＴＰのタスク処理を行うことができ、各タイムパーティションＴＰのタスク処理を行ううえで低コスト化を図ることができる。
【００４１】
尚、上記の実施例においては、マイクロカーネル１４がすべてのタイムパーティションＴＰが同時に起動されるように各タイムパーティションＴＰに対して起動指令を行うことにより特許請求の範囲に記載した「同期手段」及び「同期ステップ」が実現されている。
【産業上の利用可能性】
【００４２】
今日では、車両に搭載される制御システムは多様化しており、車両用電子制御ユニット（ＥＣＵ）で生じる負荷の調整に対するニーズが高くなっている。従って、本実施例のプロセッサ又はソフトウェア１０は、車両用電子制御ユニットに好適に搭載することが可能であり、車両制御についてのリアルタイム性と低コスト性との両立を図ることが可能である。
【符号の説明】
【００４３】
１０  プロセッサ
１２  ハードウェアリソース
１４  マイクロカーネル
１６  オペレーティングシステム
ＴＰ  タイムパーティション
ＴＰ０  優先パーティション
ＴＰ１，ＴＰ２  定周期パーティション
【図１】
2010205085.tif 000003
【図３】
2010205085.tif 000004
【図２】
2010205085.tif 000005