(57)【要約】【課題】マルチタスク制御においてリアルタイム性を保証し、かつシステムの処理効率の向上を図る。【解決手段】プロセッサが複数のタスクを切り替えながら処理を実行するシステムにおいて、タスクを切り替えながら各タスクにおける命令を実行する実行手段と、実行対象の命令が予め定められた特定の命令か否かを識別する識別手段と、実行対象の命令が前記特定の命令である場合に、所定の条件に基づき、実行手段に特定の命令を実行させるか、または、特定の命令を実行せずにタスク切り替え処理を行わせるかを判断する判断手段と、を備える。【選択図】図４
2011134162.tif 000002
【特許請求の範囲】
【請求項１】
プロセッサが複数のタスクを切り替えながら処理を実行するシステムにおいて、
タスクを切り替えながら各タスクにおける命令を実行する実行手段と、
実行対象の命令が予め定められた特定の命令か否かを識別する識別手段と、
実行対象の命令が前記特定の命令である場合に、所定の条件に基づき、前記実行手段に当該特定の命令を実行させるか、または、当該特定の命令を実行せずにタスク切り替え処理を行わせるかを判断する判断手段と、
を備える、システム。
【請求項２】
前記判断手段は、実行中のタスクに割り当てられた処理時間に対する残り時間と予め設定された閾値とを比較し、当該残り時間が当該閾値よりも短い場合に、前記実行手段に前記特定の命令を実行せずにタスク切り替え処理を行わせるように判断する、請求項１に記載のシステム。
【請求項３】
前記実行手段は、前記判断手段の判断に基づくタスク切り替え処理を行うための割り込みハンドラを備え、
前記判断手段は、前記割り込みハンドラを呼び出して、前記実行手段にタスク切り替え処理を行わせる、
請求項１または請求項２に記載のシステム。
【請求項４】
汎用ＣＰＵと、前記特定の命令を実行するための専用プロセッサとを別個に備え、
前記識別手段、前記判断手段および前記実行手段の機能を前記専用プロセッサにより実現する、請求項１または請求項２に記載のシステム。
【請求項５】
前記識別手段による命令の識別および前記判断手段による命令を実行するか否かの判断は、各命令に対する命令パイプラインの工程において行われる、請求項１乃至請求項４のいずれかに記載のシステム。
【請求項６】
前記識別手段は、
前記実行手段の機能を実現するプロセッサによるメモリからの命令の読み込みをバス・モニタ回路にて監視し、
当該命令の内容、または当該プロセッサがアクセスしたメモリアドレス、もしくはその両方に基づき、当該命令が前記特定の命令か否かを識別する、請求項１または請求項２に記載のシステム。
【請求項７】
プロセッサが複数のタスクを切り替えながら処理を実行するシステムにおいて、
汎用ＣＰＵと、
予め定められた特定の命令を実行するための専用プロセッサとを備え、
前記専用プロセッサは、
実行対象の命令が予め定められた特定の命令か否かを識別する識別部と、
実行対象の命令が前記特定の命令である場合に、実行中のタスクに割り当てられた処理時間に対する残り時間と予め設定された閾値とを比較し、当該残り時間が当該閾値よりも短い場合に、当該特定の命令を実行するか、または、当該特定の命令を実行せずにタスク切り替え処理を行うかを判断する判断部と、
前記判断部によりタスク切り替え処理を行うと判断された場合に、割り込みを発生させてタスク切り替え処理を行うタスク切り替え処理部と、
を備える、システム。
【請求項８】
プロセッサが複数のタスクを切り替えながら処理を実行する方法において、
実行対象の命令が予め定められた特定の命令か否かを識別するステップと、
実行対象の命令が前記特定の命令である場合に、所定の条件に基づき、当該特定の命令を実行するか、または、当該特定の命令を実行せずにタスク切り替え処理を行うかを判断するステップと、
タイマー割り込みによりタスク切り替え処理を行いながら各タスクにおける命令を実行し、前記判断するステップでタスク切り替えを行うと判断した場合は、当該判断に基づく割り込みによりタスク切り替え処理を行うステップと、
を含む、方法。
【請求項９】
前記判断するステップでは、実行中のタスクに割り当てられた処理時間に対する残り時間と予め設定された閾値とを比較し、当該残り時間が当該閾値よりも短い場合に、当該特定の命令を実行せずにタスク切り替え処理を行うと判断する、請求項８に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、マルチタスクシステムにおけるタスク制御に関し、特に各タスクの処理時間の制御に関する。
【背景技術】
【０００２】
コンピュータによる処理の実行環境として、複数の処理を並列に実行するマルチタスク環境がある。マルチタスク環境では、所定の条件に基づいて処理が実行されるタスクを切り替えるタスク切り替え処理（タスクスイッチ）が、例えばＯＳ（Operating System）によって行われ、これにより各タスクの処理が順次実行される。一般に、タスク切り替え処理は、所定のタスクを実行中にタスクを切り替えるための一連の操作を行う割り込み処理を実行することにより行われる（例えば、特許文献１参照）。
【０００３】
マルチタスク環境において、あるタスクの処理がリアルタイム処理である場合、その処理は予め定められた時間内に終了することが保証される必要がある。ここで、ＣＰＵ命令の処理時間は、通常、論理演算では数ｎｓ（ナノ秒：１０億分の１秒）程度であるのに対し、Ｉ／Ｏ命令では数μｓ（マイクロ秒：１００万分の１秒）以上かかり、桁違いに大きい。また、Ｉ／Ｏ命令は、タスクの切り替えによって処理の実行を一旦キャンセルした後に再実行すると、再実行までの間にアクセス先のデバイス等の状態が変わってしまい、問題が生じる可能性がある。したがって、あるタスクの処理で開始されたＩ／Ｏ命令を中断することはできない。
【０００４】
そのため、リアルタイム処理を伴うマルチタスク制御では、タスクに割り当てられた時間（以下、切り替え時間）が切れる直前に長い処理時間を要するＩ／Ｏ命令が実行される場合にも、リアルタイム性を保証するために各タスクの実行に対して割り当てられる最長の処理時間（以下、最長処理時間）を越えないように、切り替え時間および最長処理時間を設定する必要がある。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００８−１７１２９３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
リアルタイム処理を伴うマルチタスク制御では、切り替え時間が切れる直前にＩ／Ｏ命令が実行されても最長処理時間を超えないように切り替え時間および最長処理時間が設定される。しかし、各タスクの切り替え時間を短くすると、最長処理時間のうち、余裕をもたせるための時間（以下、余裕時間）の割合が大きくなる。そのため、タスク切り替えの回数が多くなり、システム全体の処理効率の低下を招く。また、十分な余裕時間を得るために必要な最長処理時間を予想することが困難になり、最長処理時間および切り替え時間を設定することができなくなる可能性もある。
【０００７】
本発明は、上記の課題に鑑み、マルチタスク制御においてリアルタイム性を保証し、かつシステムの処理効率の向上を図ることを目的とする。
【課題を解決するための手段】
【０００８】
上記の目的を達成するため、本発明は、次のようなシステムとして実現される。このシステムは、プロセッサが複数のタスクを切り替えながら処理を実行するシステムにおいて、タスクを切り替えながら各タスクにおける命令を実行する実行手段と、実行対象の命令が予め定められた特定の命令か否かを識別する識別手段と、実行対象の命令が前記特定の命令である場合に、所定の条件に基づき、実行手段に特定の命令を実行させるか、または、特定の命令を実行せずにタスク切り替え処理を行わせるかを判断する判断手段と、を備える。
ここで、より詳細には、判断手段は、実行中のタスクに割り当てられた処理時間に対する残り時間と予め設定された閾値とを比較し、残り時間が閾値よりも短い場合に、実行手段に特定の命令を実行せずにタスク切り替え処理を行わせるように判断する。
さらに好ましくは、識別手段による命令の識別および判断手段による命令を実行するか否かの判断は、各命令に対する命令パイプラインの工程において行われる
【０００９】
また、好ましくは、実行手段は、判断手段の判断に基づくタスク切り替え処理を行うための割り込みハンドラを備え、判断手段は、割り込みハンドラを呼び出して、実行手段にタスク切り替え処理を行わせる。
また、本発明のシステムを、汎用ＣＰＵと、特定の命令を実行するための専用プロセッサとを別個に備えて構成し、識別手段、判断手段および実行手段の機能を専用プロセッサにより実現しても良い。
または、本発明のシステムにおいて、識別手段は、実行手段の機能を実現するプロセッサによるメモリからの命令の読み込みをバス・モニタ回路にて監視し、この命令の内容、またはプロセッサがアクセスしたメモリアドレス、もしくはその両方に基づき、この命令が特定の命令か否かを識別する構成としても良い。
【００１０】
また、本発明は、次のようなシステムとしても実現される。このシステムは、プロセッサが複数のタスクを切り替えながら処理を実行するシステムにおいて、汎用ＣＰＵと、予め定められた特定の命令を実行するための専用プロセッサとを備え、専用プロセッサは、実行対象の命令が予め定められた特定の命令か否かを識別する識別部と、実行対象の命令が特定の命令である場合に、実行中のタスクに割り当てられた処理時間に対する残り時間と予め設定された閾値とを比較し、残り時間が閾値よりも短い場合に、特定の命令を実行するか、または、特定の命令を実行せずにタスク切り替え処理を行うかを判断する判断部と、判断部によりタスク切り替え処理を行うと判断された場合に、割り込みを発生させてタスク切り替え処理を行うタスク切り替え処理部と、を備える。
【００１１】
さらにまた、本発明は、次のような方法としても実現される。この方法は、プロセッサが複数のタスクを切り替えながら処理を実行する方法において、実行対象の命令が予め定められた特定の命令か否かを識別するステップと、実行対象の命令が特定の命令である場合に、所定の条件に基づき、この特定の命令を実行するか、または、この特定の命令を実行せずにタスク切り替え処理を行うかを判断するステップと、タイマー割り込みによりタスク切り替え処理を行いながら各タスクにおける命令を実行し、判断するステップでタスク切り替えを行うと判断した場合は、その判断に基づく割り込みによりタスク切り替え処理を行うステップと、を含む。
【発明の効果】
【００１２】
本発明によれば、タスクの残り時間が短い場合には命令を実行せずにタスク切り替え処理を行うため、マルチタスク制御においてリアルタイム性を保証し、かつシステムの処理効率の向上を図ることができる。
【図面の簡単な説明】
【００１３】
【図１】本実施形態の基本構成を示す図である。
【図２】第１の実施例によるタスク切り替えシステムが適用されるコンピュータのハードウェア構成例を示す図である。
【図３】第１の実施例によるタスク制御の方法を示すフローチャートである。
【図４】第１の実施例によるタスク切り替えの様子を示すタイムチャートである。
【図５】本実施形態において、メモリからの読み込みとＩ／Ｏデバイスからの読み込みを行うための命令シーケンスの例を示す図である。
【図６】命令パイプラインの構成を模式的に表す図である。
【図７】第２の実施例によるタスク切り替えシステムの構成例を示す図である。
【図８】第２の実施例における割り込み用プロセッサの詳細構成を示す模式図である。
【図９】第２の実施例によるタスク制御の方法を示すフローチャートである。
【図１０】第２の実施例によるタスク切り替えの様子を示すタイムチャートである。
【図１１】第３の実施例によるタスク切り替えシステムの構成例を示す図である。
【図１２】本実施形態におけるクリティカル・セクションを含むタスクの処理の様子を示すタイムチャートである。
【発明を実施するための形態】
【００１４】
以下、添付図面を参照して、本発明の実施形態について詳細に説明する。
＜基本構成＞
図１は、本実施形態の基本構成を示す図である。
図１に示すように、本実施形態のタスク切り替えシステムは、ＣＰＵが実行する命令が予め定められた特定の命令か否かを識別するための識別手段１０と、識別手段１０により識別された特定の命令について、即時実行するか、保留するかを判断する判断手段２０とを備える。また、本実施形態のシステムは、判断手段２０の判断結果にしたがって、マルチタスク制御により命令を実行する実行手段３０を備える。
【００１５】
識別手段１０は、あるタスクでＣＰＵが命令を実行する際に、その命令が予め定められた特定の命令か否かを識別する。命令を識別するための具体的な手段として、本実施形態では、ＣＰＵにより実行される命令群（命令セット）に識別対象となる命令を導入する手段と、特別の追加ハードウェアによりＣＰＵが実行しようとする命令を解析する手段とを提案する。これらの具体的な手段の詳細については後述する。
【００１６】
判断手段２０は、ＣＰＵが実行しようとする命令が上記の特定の命令である場合に、その命令を即時実行するか、保留するかを判断する。具体的には、その特定の命令を実行するのに要する処理時間に基づいて予め閾値を設定しておき、判断手段２０は、ＣＰＵが命令を実行しようとする際に、そのタスクにおける最長処理時間までの残り時間が閾値を下回っているか否かを調べる。そして、残り時間が閾値を下回ると判断手段２０が判断した場合には、実行手段３０は、その命令の実行を保留する。
【００１７】
実行手段３０は、ＣＰＵを構成要素に含む。そして、マルチタスク制御によるタスク切り替え処理を行いながら、命令を実行する。本実施形態では、実行手段３０は、識別手段１０により特定の命令以外の命令と判断された命令と、識別手段１０により特定の命令と判断された命令のうち判断手段２０により即時実行すると判断された命令とを直ちに実行する。また、実行手段３０は、識別手段１０により特定の命令と判断された命令のうち判断手段２０により保留すると判断された命令は実行せずにタスク切り替え処理を行う。そして、次にそのタスクの実行順が回ってきたときに保留した命令を実行する。
【００１８】
以上のような構成とすることにより、本実施形態は、ＣＰＵが特定の命令を実行しようとする際に、その命令の実行に要する処理時間よりも現在のタスクに割り当てられた最長処理時間の残り時間が短い場合には、その命令の実行を保留する。これにより、あるタスクにおける処理に要する時間が最長処理時間を超えてしまうことを回避し、タスク切り替えのタイミングを正確に制御することが可能となる。
【００１９】
次に、本実施形態による具体的なシステムの実施例について説明する。以下では、識別手段１０として、識別対象となる命令を導入する手段を適用した２つの実施例と、追加ハードウェアにより命令を解析する手段を適用した１つの実施例について説明する。
【００２０】
＜第１の実施例＞
第１の実施例によるシステムでは、コンピュータのＣＰＵ自体の機能として識別手段１０および判断手段２０を実現する。そして、識別手段１０の実現方法として、ＣＰＵにより実行される命令群に特定の命令を導入する。導入される特定の命令は、判断手段２０の判断結果に応じて実行が保留される場合がある命令であり、遅延実行可能命令（postponable instruction：以下、Ｐ命令と記す）と呼ぶ。第１の実施例において、ＣＰＵは、命令を実行する際に、実行しようとする命令がＰ命令か否かを識別する。
【００２１】
Ｐ命令は、ＣＰＵが実行可能な命令セットに含まれるＣＰＵ命令として、システムの仕様や動作環境、用途等に応じて適宜設定される。特に、ｌｏａｄ／ｓｔｏｒｅ命令や、並列処理されている一連の命令の同期を取るためのｓｙｎｃ命令等、処理時間が不確定で長時間となる可能性があるＣＰＵ命令に関しては、その命令を実行することによってタスクに割り当てられた最長処理時間を超えてしまうことを回避する観点から、Ｐ命令を設定することが望ましい。
【００２２】
＜第１の実施例の構成例＞
図２は、第１の実施例によるタスク切り替えシステムが適用されるコンピュータのハードウェア構成例を示す図である。
図２に示すコンピュータ１００は、演算手段であるＣＰＵ（Central Processing Unit）１００ａと、主記憶手段であるメモリ１００ｃを備える。また、外部デバイスとして、磁気ディスク装置（ＨＤＤ：Hard Disk Drive）１００ｇ、ネットワーク・インタフェース・カード１００ｆ、ビデオ・カード１００ｄおよび表示装置１００ｊ、音声機構１００ｈ、キーボードやマウス等の入力デバイス１００ｉ等を備える。
【００２３】
図２に示す構成例では、メモリ１００ｃおよびビデオ・カード１００ｄは、システム・コントローラ１００ｂを介してＣＰＵ１００ａに接続されている。また、ネットワーク・インタフェース・カード１００ｆ、磁気ディスク装置１００ｇ、音声機構１００ｈおよび入力デバイス１００ｉは、Ｉ／Ｏコントローラ１００ｅを介してシステム・コントローラ１００ｂと接続されている。各構成要素は、システム・バスや入出力バス等の各種のバスによって接続される。また、特に図示していないが、各外部デバイスとＣＰＵ１００ａとの間には、割り込みコントローラが設けられている。なお、図２は、第１の実施例が適用されるのに好適なコンピュータのハードウェア構成を例示するに過ぎない。本実施例はマルチタスク環境が実現された情報処理システムに広く適用できるものであり、図示の構成においてのみ本実施例が実現されるのではない。
【００２４】
図２において、磁気ディスク装置１００ｇにはＯＳやアプリケーション・ソフトのプログラムが格納されている。そして、これらのプログラムがメモリ１００ｃに読み込まれてＣＰＵ１００ａに実行されることにより、図１に示した実行手段３０を含む各種の機能が実現される。また、第１の実施例では、ＣＰＵ１００ａが実行可能な命令セットにＰ命令が含まれている。
【００２５】
さらに第１の実施例におけるＣＰＵ１００ａは、ＤＥＣレジスタ（Decrementer Register）１０１ａと、ＴＨレジスタ（Threshold Register）１０１ｂとを備える。
ＤＥＣレジスタ１０１ａは、タスク切り替え時に、ＯＳによりそのタスクの最長処理時間に相当する値（タイムアウト値）がセットされ、ＣＰＵクロックごとに１ずつカウントダウンされる。したがって、ＤＥＣレジスタ１０１ａの値によりタスクの残り時間が示される。
【００２６】
ＴＨレジスタ１０１ｂは、判断手段２０がＰ命令を即時実行するか保留するかを判断するための基準となる閾値がセットされる。すなわち、判断手段２０は、ＤＥＣレジスタ１０１ａの値（残り時間）がＴＨレジスタ１０１ｂの値（閾値）よりも大きければ、Ｐ命令（ＣＰＵ命令）を即時実行すると判断する。反対に、ＤＥＣレジスタ１０１ａの値がＴＨレジスタ１０１ｂの値よりも小さければ、Ｐ命令を保留すると判断する。
【００２７】
ここで、閾値を０とし、タスクの残り時間が０である場合にＰ命令を保留する制御を行うならば、ＴＨレジスタ１０１ｂは設ける必要はない。しかし、ＴＨレジスタ１０１ｂを設けることにより、Ｐ命令の種類に応じて異なる閾値を設定することが可能となる。例えば、通常、ｓｔｏｒｅ命令はｌｏａｄ命令より早く完了する可能性が高い。そこで、ｓｔｏｒｅ命令用の閾値として小さい値を設定し、ｌｏａｄ命令用の閾値としてｓｔｏｒｅ命令用の閾値よりも大きい値を設定することができる。なお、複数の閾値を設定する場合は、ＴＨレジスタ１０１ｂも複数用意することとなる。
【００２８】
＜第１の実施例によるタスク制御＞
図３は、第１の実施例によるタスク制御の方法を示すフローチャートである。
図３を参照すると、ＣＰＵ１００ａは、実行しようとするＣＰＵ命令に着目すると（ステップ３０１）、まず識別手段１０としての機能により、そのＣＰＵ命令がＰ命令か否かを判断する（ステップ３０２）。Ｐ命令でなければ、ＣＰＵ１００ａは、実行手段３０としての機能により、直ちにそのＣＰＵ命令を実行する（ステップ３０５）。そして、ステップ３０１に戻り、次の実行対象のＣＰＵ命令に着目する。
【００２９】
実行しようとするＣＰＵ命令がＰ命令であった場合、次にＣＰＵ１００ａは、判断手段２０としての機能により、ＤＥＣレジスタ１０１ａの値（以下、ＤＥＣ値）とＴＨレジスタ１０１ｂの値（以下、ＴＨ値）とを比較し、ＣＰＵ命令（Ｐ命令）を即時実行するか否かを判断する（ステップ３０３）。図３の例では、ＤＥＣ値がＴＨ値以上であれば、ＣＰＵ１００ａは、実行手段３０としての機能により、直ちにそのＣＰＵ命令を実行する（ステップ３０５）。そして、ステップ３０１に戻り、次のＣＰＵ命令に着目する。
【００３０】
実行しようとするＣＰＵ命令がＰ命令であり、かつＤＥＣ値がＴＨ値よりも小さい場合、ＣＰＵ１００ａは、判断手段２０としての機能により、割り込み（Ｐ命令例外と呼ぶ）を発生させる（ステップ３０４）。これにより、一般の割り込み処理（例外処理）と同様に、ＯＳのＰ命令例外用の割り込みハンドラが呼び出され、コンテキスト情報が保存された後、実行対象のタスクが切り替わる。割り込みハンドラによって今回の実行が終了したタスクが次に実行される際には、このＣＰＵ命令（Ｐ命令）から処理が再開される。
【００３１】
図４は、第１の実施例によるタスク切り替えの様子を示すタイムチャートである。
図４において、１行目の時間軸はＯＳによる処理が行われる時間を示し、２行目から４行目の時間軸は、３つのタスク（タスクＡ〜Ｃ）の処理が順番に行われる様子を示す。
【００３２】
図４を参照すると、通常のタスク切り替え処理は、ＯＳがタイマー割り込み等を用いて一定時間ごとに行う。例えば、タスクＡからタスクＢへ切り替わる場合、まずタスクＡの処理（例えば処理Ａ１）の実行中にタイマー割り込みが発生し、ＯＳが割り込み処理を行った後にタスクＢの処理（処理Ｂ１）が開始される。上述したように、ＯＳは、タスク切り替え処理を行った際に、ＣＰＵ１００ａのＤＥＣレジスタ１０１ａにタイムアウト値を設定する。通常は、各タスクにおける処理時間がこのタイムアウト値に達した場合にタイマー割り込みが発生し、タスク切り替え処理が行われる。
【００３３】
ここで、図４に示す各処理のうち、タスクＢの処理Ｂ２において、ＤＥＣ値＜ＴＨ値となる時間に、Ｐ命令が実行対象になったものとする。すると、図３を参照して説明した動作を経てＰ命令例外が発生し、ＯＳのＰ命令例外用の割り込みハンドラが呼び出される。すなわち、処理Ｂ２は、タスクＢの最長処理時間に達してタイマー割り込みにより終了する前に、Ｐ命令例外によって終了する。そして、ＯＳのタスク切り替え処理が行われた後、タスクＣの処理Ｃ２が開始される。
【００３４】
以上のように、ＤＥＣ値＜ＴＨ値となるタイミングでＰ命令が実行対象になった場合に、そのＰ命令の実行を保留してタスクを切り替えることにより、Ｐ命令を実行中にタスクに割り当てられた最長処理時間に達してしまうことを回避することができる。そのため、タスク切り替えのタイミングを正確に制御し、各タスクの処理のリアルタイム性を保証することができる。
【００３５】
＜Ｐ命令の導入方法＞
Ｐ命令の導入方法には、いくつかの方法が考えられる。ここでは、Ｉ／Ｏ命令をＰ命令に設定する場合を例として、ＣＰＵが扱うアドレス空間がＩ／Ｏ空間とメモリ空間とで区別されない場合と、区別される場合について、導入方法の一例を説明する。
【００３６】
ＣＰＵには、様々な仕様があり、アドレスの割り当て方法として、Ｉ／Ｏ空間とメモリ空間に対するアドレスの割り当てに着目した場合、これらを区別せずにアドレスを割り当てる方法と、Ｉ／Ｏ用のアドレス空間とメモリ用のアドレス空間とを別個に用意する方法とがある。前者の場合、例えばロード（load）命令のアクセス先がメモリかＩ／Ｏデバイスかは、アドレス値のみによって区別され、命令自体によって区別することができない。そこで、この場合のＰ命令の導入方法として、ＣＰＵが実行可能な命令セットにＰ命令としての命令を追加することが考えられる。
【００３７】
図５は、メモリからの読み込みとＩ／Ｏデバイスからの読み込みを行うための命令シーケンスの例を示す図である。
図５に示す例では、読み込み（load）命令として、通常の読み込み命令（lwz）と、Ｐ命令として通常の命令とは別に設定された読み込み命令（lwzd）の２種類が存在する。また、図５に示す命令シーケンスにおいて、１行目および２行目は、ＤＤＲメモリアドレス「０ｘ０００００１００」をレジスタｒ３にセットすることを指示する。３行目は、レジスタｒ３の値＋オフセット０のデータを読み込んでレジスタｒ４にセットすることを指示する。４行目および５行目は、Ｉ／Ｏデバイスのアドレス「０ｘＦ００００４００」をレジスタｒ３にセットすることを指示する。６行目は、レジスタｒ３の値＋オフセット０のデータを読み込んでレジスタｒ５にセットすることを指示する。
【００３８】
ここで、３行目と６行目の命令に着目すると、３行目では高速なＤＤＲメモリからの読み込みであり、６行目は処理に時間がかかる可能性のあるＩ／Ｏデバイスからの読み込みである。そのため、３行目には通常の読み込み命令（lwz）が用いられており、６行目にはＰ命令である読み込み命令（lwzd）が用いられている。識別手段１０としてのＣＰＵ１００ａは、この命令の種別により実行対象の命令がＰ命令か否かを判断する。
【００３９】
以上、読み込み命令に対してＰ命令を設定した例を説明したが、読み込み命令以外の種々のＣＰＵ命令に対してもＰ命令を設定して良い。また、実際のプログラムにおいて、どの処理に対してＰ命令を使用するか（通常の命令とＰ命令の使い分け）は、個々のプログラムの個別的な条件に応じて適宜決定し得る。例えば、図５の３行目では高速なＤＤＲメモリからの読み込みであるために通常の読み込み命令（lwz）を用いたが、安全を期すためにＰ命令（lwzd）を用いても良い。また、図５の６行目の処理が必ずタスクの最長処理時間に近いタイミングでは実行されないことが保証されるのであれば、通常の読み込み命令（lwz）を用いても良い。
【００４０】
次に、Ｉ／Ｏ用のアドレス空間とメモリ用のアドレス空間とが別個に用意されている場合について説明する。
この場合、例えば読み込み（load）命令では、アクセス先のアドレス空間が異なるので、識別手段１０としてのＣＰＵ１００ａは、実行対象の命令がＩ／Ｏ命令か否かを命令自体によって判断することができる。したがって、例えばＩ／Ｏ命令を一括してＰ命令に設定することが可能である。ＣＰＵ１００ａは、識別手段１０の機能により実行対象のＣＰＵ命令がＩ／Ｏ命令か否かを判断し、Ｉ／Ｏ命令であればすなわちＰ命令であるので、判断手段２０の機能によりＤＥＣ値とＴＨ値の比較を行う。なお、この例においては、Ｉ／Ｏ命令のようにＰ命令に設定された命令は全てＰ命令として固定的に扱われるので、図５を参照して説明した場合のように、ある処理を行うためにＰ命令を用いるか否かを、プログラムごとに個別的に決定することはできない。
【００４１】
＜第１の実施例の実装例＞
第１の実施例において、Ｐ命令の識別およびＰ命令を即時実行するか否かの判断は、ＣＰＵ命令の実行（例えばｌｏａｄ命令の実行そのもの）に先立って行われるのであって、ＣＰＵ命令の実行そのものには影響を与えない。また、Ｐ命令を実行するためには、ＣＰＵが実行可能な命令セットにＰ命令が含まれており、かつＣＰＵがＰ命令を実行する際に識別手段１０および判断手段２０として動作すれば良い。したがって、第１の実施例の実装方法は、システムの仕様等に応じて適宜定め得る。以下に、実装例の一つとして、命令パイプラインを用いた実装について説明する。
【００４２】
図６は、命令パイプラインの構成を模式的に表す図であり、図６（ａ）は通常の命令パイプラインを示し、図６（ｂ）は第１の実施例を実装した命令パイプラインを示す。
図６（ａ）に示す命令パイプラインは、「命令フェッチ」、「デコード」、「実行」、「ライトバック」の４段階の工程で構成されている。これに対し、第１の実施例を実装する図６（ｂ）に示す命令パイプラインは、「命令フェッチ」、「デコード」、「遅延判定」、「実行」、「ライトバック」の５段階の工程で構成されている。
【００４３】
図６（ｂ）に示す例では、「デコード」において、識別手段１０の機能である、Ｐ命令の識別が行われる。そして、「実行」の前に挿入された「遅延判定」において、判断手段２０の機能である、ＤＥＣ値とＴＨ値に基づくＰ命令を即時実行するか否かの判断が行われる。ＤＥＣ値がＴＨ値よりも小さい場合は、そのＰ命令の実行は保留されるので、ＣＰＵは、パイプラインのデータを全て破棄し、割り込みベクタに命令ポインタを設定して命令をフェッチし直す。
【００４４】
このように、命令パイプラインを用いて実装すると、識別手段１０および判断手段２０の機能による動作は、並列に実行される各工程の中で実行されるため、大きなオーバーヘッドは生じない。なお、図６に示した命令パイプラインは、基本的なパイプラインの構成を模式的に表したものであり、実際には、さらに多くの工程が並列に実行される。したがって、第１の実施例を実装することによる相対的なオーバーヘッドの度合いはさらに小さくなる。
【００４５】
＜第２の実施例＞
第２の実施例によるシステムでは、ＣＰＵとは別に設けられる専用プロセッサのハードウェア制御により、識別手段１０および判断手段２０の機能と、実行手段３０におけるタスク切り替え処理を行う機能とを実現する。識別手段１０の実現方法としては、第１の実施例と同様に、Ｐ命令を導入する。
【００４６】
＜第２の実施例の構成例＞
図７は、第２の実施例によるタスク切り替えシステムの構成例を示す図である。
図７に示すシステムは、汎用ＣＰＵであるＣＰＵ１００ａと、本実施形態を実現するための専用プロセッサである割り込み用プロセッサ１１０とを備える。ＣＰＵ命令は、その種類に応じてＣＰＵ１００ａまたは割り込み用プロセッサ１１０に読み込まれ、実行される。また、割り込み用プロセッサ１１０に読み込まれたＣＰＵ命令がＰ命令である場合は、即時実行するか否かの判断が行われる。図７に示すように、ＣＰＵ１００ａおよび割り込み用プロセッサ１１０は、ローカルバス１０２を介してメモリ１００ｃ、Ｉ／Ｏデバイス１０３と接続されている。なお、このシステムは、例えば図２に示したコンピュータ１００に、割り込み用プロセッサ１１０を追加することにより実現される。
【００４７】
図７に示すシステムにおいて、割り込み用プロセッサ１１０は、割り込み検知部１１０ａと、割り込み処理選択部１１０ｂと、割り込み処理実行ユニット１１０ｃと、内部メモリ１１０ｄとを備える。そして、割り込み処理実行ユニット１１０ｃは、識別部１１１と、判断部１１２と、タスク切り替え処理部１１３とを備える。識別部１１１は、実行対象の命令がＰ命令か否かを識別する。判断部１１２は、実行対象の命令がＰ命令である場合に、そのＰ命令を即時実行するか、または実行せずにタスク切り替え処理を行うかを判断する。タスク切り替え処理部１１３は、タスク切り替え処理を実行する。
【００４８】
また、第２の実施例では、図７に示すように、割り込み用プロセッサ１１０の割り込み処理実行ユニット１１０ｃが、ＤＥＣレジスタ１０１ａとＴＨレジスタ１０１ｂとを備える。タスク切り替え時に行われるＤＥＣレジスタ１０１ａのタイムアウト値の設定は、割り込み処理実行ユニット１１０ｃが行う。
【００４９】
ここで、識別部１１１は、図１に示した識別手段１０として機能し、判断部１１２は、図１に示した判断手段２０として機能する。また、タスク切り替え処理部１１３は、図１に示した実行手段３０におけるタスク切り替え処理を実行する機能を担う。さらに、割り込み用プロセッサ１１０自身は、図１に示した実行手段３０として、割り込み用プロセッサ１１０において実行されるべきＣＰＵ命令（リアルタイム性を必要とする処理等）を実行する。識別部１１１、判断部１１２およびタスク切り替え処理部１１３は、論理回路にて構成される。また、図７に示すシステムにおいて、ＣＰＵ１００ａは、割り込み用プロセッサ１１０において実行されないＣＰＵ命令（リアルタイム性を必要としない処理等）を実行する。
【００５０】
割り込み検知部１１０ａは、Ｉ／Ｏデバイス１０３からの割り込み要求を検知する。割り込み検知部１１０ａは、割り込み要求を直接ＣＰＵ１００ａへ通知するのではなく、割り込み処理選択部１１０ｂへ通知する。割り込み処理選択部１１０ｂは、割り込み処理をＣＰＵ１００ａで実行するか、割り込み処理実行ユニット１１０ｃで実行するかを選択する。
【００５１】
割り込み処理プログラムは、ＣＰＵ１００ａからローカルバス１０２を介して割り込み用プロセッサ１１０内の内部メモリ１１０ｄにダウンロードしておく。そして、割り込み要求を受け付けた割り込み処理実行ユニット１１０ｃは、内部メモリ１１０ｄから対応する割り込み処理プログラムを呼び出して割り込み処理を実行し、割り込み処理の完了をＣＰＵ１００ａに通知する。
【００５２】
図８は、割り込み用プロセッサ１１０の詳細構成を示す模式図である。
図８において、各Ｉ／Ｏデバイス１０３からの割り込み要求のうち、最大ｎ個（ｎは自然数）の割り込み要求が割り込み処理実行ユニット１１０ｃへ通知される。ここでｎは固定値であり、割り込み処理実行ユニット１１０ｃをＳｏＣ（System on Chip）に組み込む時点でハードウェア的に決定される。内部メモリ１１０ｄにはｎ個の割り込み処理ルーチンがＣＰＵ１００ａからローカルバス１０２を介して事前にダウンロードされている。また、図８において、制御レジスタ１１０ｆは、割り込み処理ルーチンＰｉの数に対応し、例えば３２ビットレジスタとして構成されている。
【００５３】
割り込み処理実行ユニット１１０ｃは、内部メモリ１１０ｄに記憶されている割り込み処理ルーチンＰ０、Ｐ１、・・・Ｐｎ−１を順次切り替えながら実行する。割り込み処理ルーチンＰｉ（ｉは０〜ｎ−１の整数）が実行されるのは、割り込み処理ルーチンＰｉが有効であり、割り込み要求がアクティブである場合のみである。そして、必要な場合には最後にＣＰＵ１００ａに対して割り込み要求を通知する。
【００５４】
割り込み処理の実行中に他の処理が割り込むことは無いが、一定時間内に割り込み処理ルーチンが終了しない場合には、割り込み処理実行ユニット１１０ｃは強制的に次の割り込み処理ルーチンＰｉ＋１に制御を渡す。割り込み処理ルーチンを切り替える場合のコンテキスト情報の保存は、割り込み処理実行ユニット１１０ｃによりハードウェア的に実行される。
【００５５】
＜第２の実施例によるタスク制御＞
図９は、第２の実施例によるタスク制御の方法を示すフローチャートである。
図９を参照すると、識別部１１１は、実行しようとするＣＰＵ命令に着目すると（ステップ９０１）、まず識別手段１０としての機能により、そのＣＰＵ命令がＰ命令か否かを判断する（ステップ９０２）。Ｐ命令でなければ、タスク切り替え処理部１１３はタスク切り替え処理を行わず、実行手段３０であるＣＰＵ１００ａは、直ちにそのＣＰＵ命令を実行する（ステップ９０５）。そして、ステップ９０１に戻り、次の実行対象のＣＰＵ命令に着目する。
【００５６】
実行しようとするＣＰＵ命令がＰ命令であった場合、次に、判断部１１２が、ＤＥＣ値とＴＨ値とを比較し、ＣＰＵ命令（Ｐ命令）を即時実行するか否かを判断する（ステップ９０３）。図９の例では、ＤＥＣ値がＴＨ値以上であれば、判断部１１２はＣＰＵ命令（Ｐ命令）を即時実行すると判断し、実行手段３０であるＣＰＵ１００ａは、直ちにそのＣＰＵ命令を実行する（ステップ９０５）。そして、ステップ９０１に戻り、次のＣＰＵ命令に着目する。
【００５７】
実行しようとするＣＰＵ命令がＰ命令であり、かつＤＥＣ値がＴＨ値よりも小さい場合、判断部１１２は、そのＣＰＵ命令（Ｐ命令）を即時実行せずタスク切り替え処理を行うと判断する。そして、タスク切り替え処理部１１３は、割り込み（Ｐ命令例外）を発生させてタスク切り替え処理を実行する（ステップ９０４）。これにより、ＣＰＵ１００ａが実行するタスクが切り替わる。
【００５８】
ところで、マルチタスク環境では、実行しようとするＣＰＵ命令がＰ命令か否かに関わらず、またＤＥＣ値の如何に関わらず、タイマー割り込みを用いてタスク切り替え処理が行われる。第２の実施例においては、図７および図８を参照して説明したように、このタイマー割り込みによる通常のタスク切り替え処理をタスク切り替え処理部１１３が行う。
【００５９】
図１０は、第２の実施例によるタスク切り替えの様子を示すタイムチャートである。
第２の実施例では、上記のように割り込み用プロセッサ１１０のタスク切り替え処理部１１３が強制的にタスク切り替え処理を行う。したがって、図１０において、ＯＳによる処理が行われる時間を示す時間軸は記載されていない。１行目から３行目の時間軸は、３つのタスク（タスクＡ〜Ｃ）の処理が順番に行われる様子を示す。
【００６０】
図１０を参照すると、通常のタスク切り替え処理は、タイマー割り込みにより一定時間ごとに行われる。例えば、タスクＡからタスクＢへ切り替わる場合、まずタスクＡの処理（例えば処理Ａ１）の実行中にタイマー割り込みが発生し、強制的にタスクＢの処理（処理Ｂ１）に切り替わる。上述したように、タスク切り替え処理を行った際には、ＤＥＣレジスタ１０１ａにタイムアウト値が設定される。通常は、各タスクにおける処理時間がこのタイムアウト値に達した場合に、タスク切り替え処理が行われる。
【００６１】
ここで、図１０に示す各処理のうち、タスクＢの処理Ｂ２において、ＤＥＣ値＜ＴＨ値となる時間に、Ｐ命令が実行対象になったものとする。すると、図９を参照して説明した動作を経て、タスク切り替え処理が行われる。すなわち、処理Ｂ２は、タスクＢの最長処理時間に達してタイマー割り込みにより終了する前に、強制的に終了し、タスクＣの処理Ｃ２が開始される。
【００６２】
以上のように、ＤＥＣ値＜ＴＨ値となるタイミングでＰ命令が実行対象になった場合に、そのＰ命令の実行を保留してタスクを強制的に切り替えることにより、Ｐ命令を実行中にタスクに割り当てられた最長処理時間に達してしまうことを回避することができる。そのため、タスク切り替えのタイミングを正確に制御し、各タスクの処理のリアルタイム性を保証することができる。
【００６３】
また、第２の実施例における割り込み用プロセッサ１１０は、処理のリアルタイム性を高めるためのものであり、通常のＣＰＵ（例えばＣＰＵ１００ａ）で行われるタスク切り替えの時間と比較して桁違いに短い時間での切り替えを前提としている。そのようなシステムの場合、本実施形態によるタスク制御は特に有効である。
【００６４】
以上説明した第２の実施例において、ＴＨレジスタ１０１ｂの有無およびＴＨ値の設定については、第１の実施例と同様である。また、Ｐ命令の導入方法も第１の実施例で説明した通りである。第２の実施例の実装に関しても、命令パイプラインを用いた実装を行うことができることを含め、第１の実施例と同様である。
【００６５】
＜第３の実施例＞
第３の実施例によるシステムでは、ＣＰＵとは別に設けられる専用プロセッサのハードウェア制御により、識別手段１０および判断手段２０の機能を実現する。識別手段１０は、上記第１、第２の実施例とは異なり、通常のＣＰＵ命令と異なるＰ命令を導入するのではなく、ＣＰＵがメモリから読み込むＣＰＵ命令を専用プロセッサが解析することにより実現される。
【００６６】
＜第３の実施例の構成例＞
図１１は、第３の実施例によるタスク切り替えシステムの構成例を示す図である。
図１１に示すシステムは、ＣＰＵ１００ａと、本実施形態によるタスク制御のための割り込みを行う割り込み装置１２０とを備える。図１１に示すように、ＣＰＵ１００ａおよび割り込み装置１２０は、ローカルバス１０２を介してメモリ１００ｃと接続されている。また、割り込み装置１２０は、他のＩ／Ｏデバイス１０３からの割り込み要求を制御する割り込みコントローラ１０４と共に、論理和回路を介してＣＰＵ１００ａに接続されている。なお、このシステムは、例えば図２に示したコンピュータ１００に、割り込み装置１２０を追加することにより実現される。
【００６７】
図１１に示すシステムにおいて、割り込み装置１２０は、解析部１２１と、判断部１２２と、割り込み要求生成部１２３とを備える。解析部１２１は、ＣＰＵ１００ａによる命令フェッチを監視し、フェッチされたＣＰＵ命令を解析する。判断部１２２は、実行対象の命令がＰ命令である場合に、そのＰ命令を即時実行するか、または実行せずにタスク切り替え処理を行うかを判断する。割り込み要求生成部１２３は、ＣＰＵ１００ａに対する割り込み要求を生成する。
【００６８】
また、第３の実施例では、図１１に示すように、割り込み装置１２０の判断部１２２が、ＤＥＣレジスタ１０１ａとＴＨレジスタ１０１ｂとを備える。タスク切り替え時に行われるＤＥＣレジスタ１０１ａのタイムアウト値の設定は、判断部１２２が行う。
【００６９】
ここで、解析部１２１は、図１に示した識別手段１０として機能し、判断部１２２は、図１に示した判断手段２０として機能する。解析部１２１、判断部１２２および割り込み要求生成部１２３は、論理回路にて構成される。また、図１１に示すシステムにおいて、ＣＰＵ１００ａは、図１に示した実行手段３０として機能する。
【００７０】
解析部１２１は、バス・モニタ回路とアドレス／データ比較回路とを備える。そして、バス・モニタ回路の機能により、ローカルバス１０２のアドレスおよびデータラインを監視し、ＣＰＵ１００ａがメモリ１００ｃから読み込んだＣＰＵ命令を取得する。また、アドレス／データ比較回路の機能により、取得したＣＰＵ命令が判断部１２２による判断の対象となるＣＰＵ命令（第１、第２の実施例におけるＰ命令に相当する）か否かを判定する。なお、第３の実施例では、少なくとも判断部１２２による判断の対象となるＣＰＵ命令は、メモリ１００ｃにおけるキャッシュされないメモリ領域に記憶されていることが望ましい。ＣＰＵ１００ａがメモリ１００ｃからＣＰＵ命令を読み込む際にバス・モニタ回路にてそのＣＰＵ命令を取得するので、ＣＰＵ１００ａがＣＰＵ命令をキャッシュしてしまうと、キャッシュから読み込む命令を解析部１２１が取得できないためである。
【００７１】
また、解析部１２１は、アドレスレジスタ１２１ａとデータレジスタ１２１ｂおよびマスクレジスタ１２１ｃとを備える。これらは、判断部１２２による判断の対象となるＣＰＵ命令の数に応じて設けられる。図１１に示す例では、アドレスレジスタ１２１ａがｎ個設けられている。また、データレジスタ１２１ｂとマスクレジスタ１２１ｃとは個別に対応しており、各々ｍ個ずつ設けられている。
【００７２】
解析部１２１は、取得したＣＰＵ命令からＣＰＵ１００ａがアクセスしたアドレスを抽出し、得られたアドレスがいずれかのアドレスレジスタ１２１ａの値にマッチするか否かを調べる。そして、いずれかのレジスタ値とマッチするならば、そのＣＰＵ命令は判断部１２２による判断の対象となるＣＰＵ命令であると判定する。
【００７３】
また、解析部１２１は、取得したＣＰＵ命令のデータ（すなわちＣＰＵ命令そのもの）が、いずれかのデータレジスタ１２１ｂの値にマッチするか否かを調べる。ただし、このマッチングでは、ＣＰＵ命令のデータのうち、各データレジスタ１２１ｂに対応するマスクレジスタ１２１ｃで指定されたビットのみを比較する。そして、いずれかのレジスタ値とマッチするならば、そのＣＰＵ命令は判断部１２２による判断の対象となるＣＰＵ命令であると判定する。
【００７４】
ここで、ＣＰＵ命令のうち、マスクレジスタ１２１ｃで指定されたビットのみをデータレジスタ１２１ｂの値と比較するのは、ＣＰＵ命令のＯＰコードの部分のみを比較するためである。機械語で記述されたＣＰＵ命令は上位桁に記述されるＯＰコードと下位桁に記述されるレジスタ値との組み合わせで構成されている。そこで、マスクレジスタ１２１ｃの値を用いてＣＰＵ命令のレジスタ値の部分をマスクする。
【００７５】
なお、ここでは、取得したＣＰＵ命令のメモリアドレスまたはＣＰＵ命令自体に基づいて判断部１２２による判断の対象となるＣＰＵ命令か否かを判定することとしたが、これらを組み合わせた複合条件に基づき判定しても良い。例えば、特定のアドレスから読み出された特定の命令のみを判断部１２２による判断の対象となるＣＰＵ命令と判定することができる。また、ＣＰＵ命令のメモリアドレスまたはＣＰＵ命令自体のいずれか一方のみを判定条件としても良い。例えば全てのＣＰＵ命令に対して、その種類のみに基づいて判断部１２２による判断の対象となるＣＰＵ命令か否かを判定する仕様を採用することができる。この場合、解析部１２１においてアドレスレジスタ１２１ａは必須の構成要件ではなく、省略して良い。
【００７６】
また、解析部１２１によるＣＰＵ命令の取得は、通常、数ワード単位で行われるが、どの単位でレジスタと比較が行われるかは、特に限定しない。例えば、３２バイト単位でコードがフェッチされる３２ビットのＲＩＳＣプロセッサの場合、データ（マスク）レジスタのビット幅は３２ビット（１命令分）にしておき、３２バイトデータを８つの部分に分解して同時に比較しても良い。
【００７７】
判断部１２２は、解析部１２１において、取得したＣＰＵ命令が判断部１２２による判断の対象となるＣＰＵ命令であると判断された場合、そのＣＰＵ命令に関して、即時実行するか否かを判断する。具体的な判断手法は、第１、第２の実施例と同様である。すなわち、ＤＥＣ値（タスクの残り時間）とＴＨ値（閾値）とを比較して、ＤＥＣ値＜ＴＨ値である場合には、そのＣＰＵ命令を即時実行せず、タスク切り替え処理を行うと判断する。
【００７８】
割り込み要求生成部１２３は、判断部１２２がタスク切り替え処理を行うと判断した場合、割り込み要求を生成してＣＰＵ１００ａに送る。また、割り込み要求生成部１２３は、ステータスレジスタ１２３ａを備える。
ＣＰＵ１００ａは、この割り込み要求を受けて、ＯＳが提供する割り込みハンドラを実行する。この際、割り込み要求生成部１２３のステータスレジスタ１２３ａを読むことにより、割り込みコントローラ１０４による割り込みではなく、割り込み装置１２０による割り込みであることがわかる。
【００７９】
以上説明した第３の実施例によれば、割り込み装置１２０がＣＰＵ命令を解析して割り込みを発生させ、タスク切り替え処理を実行させるので、第１、第２の実施例のようにＣＰＵ１００ａが実行する命令セットを拡張する必要はない。なお、第３の実施例において、ＴＨレジスタ１０１ｂの有無およびＴＨ値の設定については、第１の実施例と同様である。
【００８０】
＜クリティカル・セクションへの応用＞
次に、本実施形態のクリティカル・セクションへの応用について説明する。
ＣＰＵがプログラムのクリティカル・セクションを実行する場合、排他制御等によりその領域の不可分性を確保する必要がある。そのため、マルチタスク制御において、あるタスクのクリティカル・セクションの実行中には割り込みを発生させることができず、タスク切り替え処理を行うことができない。したがって、リアルタイム処理を要するマルチタスク制御では、クリティカル・セクションの存在によってリアルタイム性が損なわれる可能性があった。
【００８１】
これに対し、本実施形態を応用することにより、クリティカル・セクションが存在する場合にも確実にリアルタイム性を確保することが可能となる。具体的には、プログラミングの際に、クリティカル・セクションの直前に必ずＰ命令を記述するようにする。このようにすれば、ＣＰＵがクリティカル・セクションを実行する際には、それに先立って必ずＰ命令が実行されることとなる。そのため、クリティカル・セクションに入る直前のＰ命令を実行する時点でタスクの残り時間が閾値よりも短くなっていれば、Ｐ命令は実行されず、クリティカル・セクションにも入ることなくタスクが切り替わる。これにより、クリティカル・セクションに入ったためにタスクの最長処理時間に達してもタスクを切り替えることができず、リアルタイム性を損なうことを防止することができる。
【００８２】
図１２は、クリティカル・セクションを含むタスクの処理の様子を示すタイムチャートである。図１２（ａ）はクリティカル・セクションの直前にＰ命令を挿入しない場合の動作を示し、図１２（ｂ）はクリティカル・セクションの直前にＰ命令を挿入した場合の動作を示す。
【００８３】
図１２（ａ）の時間軸を参照すると、クリティカル・セクションの実行中に、タスクに割り当てられた最長処理時間に達している。しかし、クリティカル・セクションに入る際に排他制御により割り込み禁止となり、クリティカル・セクションが終わるまで割り込みは許可されないため、最長処理時間となってもタスクを切り替えることができない。
【００８４】
一方、図１２（ｂ）の時間軸を参照すると、クリティカル・セクションに入る直前にＰ命令が読み込まれ、タスクの残り時間が短いために、クリティカル・セクションを含むＰ命令以降の処理が実行されずにタスク切り替え処理が行われる。そして、次に同タスクが実行される際に、Ｐ命令から処理が再開され、クリティカル・セクションが実行される。
【００８５】
なお、上記のように本実施形態をクリティカル・セクションに応用する場合、クリティカル・セクションの実行に要する時間に応じて閾値（ＴＨレジスタの値）を設定する必要がある。また、上記の例では、クリティカル・セクションの直前に第１、第２の実施例で用いたＰ命令を記述する例について説明したが、第３の実施例も同様にクリティカル・セクションに応用することができる。
【００８６】
また、本実施形態をクリティカル・セクションに応用する場合、クリティカル・セクションの直前に記述されるＰ命令は、クリティカル・セクションに入るか否かを判断するために用いられるのであり、その命令自体の内容は特に限定されない。そこで、例えば実体的な処理が行われないＮＯＰ命令等をＰ命令として設定し、クリティカル・セクションの前に記述することができる。
【００８７】
以上、本実施形態について説明したが、本発明の技術的範囲は上記実施形態に記載の範囲には限定されない。例えば、第１、第２の実施例では、即時実行するか否かを判断する必要がある各ＣＰＵ命令（ｌｏａｄ／ｓｔｏｒｅ命令や、並列処理されている一連の命令の同期を取るためのｓｙｎｃ命令等、処理時間が不確定で長時間となる可能性があるＣＰＵ命令）に対して個別にＰ命令を設定した。これに対し、これらのＣＰＵ命令自体に対してＰ命令を設定するのではなく、これらのＣＰＵ命令の直前にＰ命令として設定されたＮＯＰ命令等を記述することで、本実施形態を実現することも可能である。その他、上記実施形態に、種々の変更または改良を加えたものも、本発明の技術的範囲に含まれることは、特許請求の範囲の記載から明らかである。
【符号の説明】
【００８８】
１０…識別手段、２０…判断手段、３０…実行手段、１００ａ…ＣＰＵ（Central Processing Unit）、１０１ａ…ＤＥＣレジスタ、１０１ｂ…ＴＨレジスタ
【図１】
2011134162.tif 000003
【図２】
2011134162.tif 000004
【図３】
2011134162.tif 000005
【図４】
2011134162.tif 000006
【図５】
2011134162.tif 000007
【図６】
2011134162.tif 000008
【図７】
2011134162.tif 000009
【図８】
2011134162.tif 000010
【図９】
2011134162.tif 000011
【図１０】
2011134162.tif 000012
【図１１】
2011134162.tif 000013
【図１２】
2011134162.tif 000014