(57)【要約】【課題】マルチコア、かつ、デュアルカーネル方式を採用した環境において、リアルタイム性能を低下させずにスループットを向上させる。【解決手段】複数の処理実行手段を有する情報処理装置であって、前記複数の処理実行手段による処理を連携する制御手段を有し、前記制御手段は、優先処理を実行中の第１の処理実行手段に対して非優先処理を実行する第２の処理実行手段から発行された処理要求を検出する検出手段と、前記検出手段により前記処理要求が検出された場合、前記処理要求の処理が回避可能であるか否かを判定する判定手段と、前記判定手段により回避可能と判定された場合、前記処理要求に対する回避対応処理を実行する実行手段と、を有することによって課題を解決する。【選択図】図８
2015197802.tif 000002
【特許請求の範囲】
【請求項１】
複数の処理実行手段を有する情報処理装置であって、
前記複数の処理実行手段による処理を連携する制御手段を有し、
前記制御手段は、
優先処理を実行中の第１の処理実行手段に対して非優先処理を実行する第２の処理実行手段から発行された処理要求を検出する検出手段と、
前記検出手段により前記処理要求が検出された場合、前記処理要求の処理が回避可能であるか否かを判定する判定手段と、
前記判定手段により回避可能と判定された場合、前記処理要求に対する回避対応処理を実行する実行手段と、
を有する情報処理装置。
【請求項２】
前記判定手段は、前記処理要求の処理の処理情報に基づいて処理情報毎に回避確認処理情報が関連付けられている管理情報を参照し、前記処理要求の処理の処理情報に関連付けられている回避確認処理情報が示す回避確認処理の結果に応じて前記処理要求の処理が回避可能であるか否かを判定する請求項１に記載の情報処理装置。
【請求項３】
前記管理情報には、処理情報毎に回避確認処理情報と回避対応処理情報とが関連付けられており、
前記実行手段は、前記判定手段により回避可能と判定された場合、前記処理要求の処理の処理情報に関連付けられている回避対応処理情報が示す回避対応処理を実行する請求項２に記載の情報処理装置。
【請求項４】
前記制御手段は、前記判定手段により回避可能でないと判定された場合、前記処理要求の処理を続行する続行手段を更に有する請求項１乃至３の何れか１項に記載の情報処理装置。
【請求項５】
前記制御手段は、前記検出手段により前記処理要求が検出された場合、前記第１の処理実行手段が優先処理と、非優先処理とのどちらの処理を実行しているかを判定する処理判定手段を更に有し、
前記判定手段は、前記処理判定手段により前記第１の処理実行手段が優先処理を実行していると判定された場合、前記処理要求の処理が回避可能であるか否かを判定する請求項１乃至４の何れか１項に記載の情報処理装置。
【請求項６】
前記検出手段は、前記第１の処理実行手段に対して前記第２の処理実行手段から発行された割り込み処理に関する前記処理要求を検出する請求項１乃至５の何れか１項に記載の情報処理装置。
【請求項７】
前記制御手段は、処理実行手段が優先処理を実行するか又は非優先処理を実行するかの切り換えを検知する切り換え検知手段を更に有し、
前記処理実行手段は、前記切り換え検知手段により検知された前記切り替えに応じて処理を実行する請求項１乃至６の何れか１項に記載の情報処理装置。
【請求項８】
前記処理実行手段は、他の処理実行手段との間で同期を要する処理を実行する請求項１乃至７の何れか１項に記載の情報処理装置。
【請求項９】
前記処理実行手段は、ＣＰＵであり、
前記制御手段は、複数のＣＰＵの処理を連携するハイパバイザである請求項１乃至８の何れか１項に記載の情報処理装置。
【請求項１０】
複数の処理実行手段を有する情報処理装置が実行する情報処理方法であって、
前記複数の処理実行手段による処理を連携する制御ステップを含み、
前記制御ステップは、
優先処理を実行中の第１の処理実行手段に対して非優先処理を実行する第２の処理実行手段から発行された処理要求を検出する検出ステップと、
前記検出ステップにより前記処理要求が検出された場合、前記処理要求の処理が回避可能であるか否かを判定する判定ステップと、
前記判定ステップにより回避可能と判定された場合、前記処理要求に対する回避対応処理を実行する実行ステップと、
を含む情報処理方法。
【請求項１１】
複数の処理実行手段を有するコンピュータに、
前記複数の処理実行手段による処理を連携する制御ステップを実行させ、
前記制御ステップは、
優先処理を実行中の第１の処理実行手段に対して非優先処理を実行する第２の処理実行手段から発行された処理要求を検出する検出ステップと、
前記検出ステップにより前記処理要求が検出された場合、前記処理要求の処理が回避可能であるか否かを判定する判定ステップと、
前記判定ステップにより回避可能と判定された場合、前記処理要求に対する回避対応処理を実行する実行ステップと、
を含むプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、情報処理方法及びプログラムに関する。
【背景技術】
【０００２】
汎用ＯＳに対して、既存の機能を損なわずにリアルタイム性能を向上させる方式としてデュアルカーネル方式が存在する。デュアルカーネル方式とは、カーネル内に本来のカーネルよりも動作優先度の高いサブシステムを追加し、サブシステム上でリアルタイム性能が要求されるタスクを動作させることで、システムのリアルタイム性能を向上させる手法のことである。以後の説明では、サブシステム側をリアルタイムドメイン、既存のカーネル側をノンリアルタイムドメインという。この動作優先度に則した形で制御するために、カーネルとハードウェアとの間にカーネルとは独立したソフトウェア（以下、ハイパバイザという）を配置し、リアルタイムドメインとノンリアルタイムドメインとの挙動を制御している。
ノンリアルタイムドメインにとって、リアルタイムドメインは透過的であり、ノンリアルタイムドメイン側がリアルタイムドメインの存在を意識する必要はない。即ち、リアルタイムドメインは、ノンリアルタイムドメインよりも優先的に動作する。リアルタイムドメイン上のタスクが起床した場合、ノンリアルタイムドメイン上でどのようなタスクが動作していようがプリエンプションされ、リアルタイムドメインタスクの動作を開始する。
【０００３】
また、ドメインとＣＰＵとは非依存関係となっており、任意のＣＰＵで任意のドメインでの動作と、ドメイン間の切り替えとが可能である。マルチコア環境においては、あるＣＰＵがリアルタイムドメインで動作している間でも、他のＣＰＵはノンリアルタイムドメインで動作することが可能である。そのため、リアルタイム性を維持しながら、マルチコアを活用してシステム全体のスループットを向上させることができる。
特許文献１には、マルチコア、かつ、デュアルカーネル方式を採用した環境においてスループットを向上させるための技術が開示されている。この技術では、ＣＰＵ１が優先度の高いドメインＡで動作中に、優先度の低いドメインＢで動作中のＣＰＵ２がＣＰＵ１に対して応答を求める処理を発行した場合、ＣＰＵ１はドメインＡからドメインＢに移行する。そして、ＣＰＵ１が依頼された処理を行いＣＰＵ２に応答を返した後、ドメインＡに復帰し中断した処理を再開することで、システム全体のスループットを向上させる。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１０−２５０８１７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
マルチコア環境上で動作する汎用ＯＳには、複数のＣＰＵ間で同期が必要な処理が存在する。複数のＣＰＵ間で同期が必要な処理の例としては、ＴｒａｎｓｌａｔｉｏｎＬｏｏｋａｓｉｄｅＢｕｆｆｅｒ（以下、ＴＬＢという）の同期等があげられる。
リアルタイムドメインにリアルタイムＯＳ、ノンリアルタイムドメインに汎用ＯＳを採用したデュアルカーネル環境において、リアルタイムドメインで動作中のＣＰＵに対して、ノンリアルタイムドメインで動作中のＣＰＵが何らかの応答を求めたとする。ここで、ノンリアルタイムドメインで動作中のＣＰＵが、応答が返ってくるまで待ち続ける処理を発行した場合、リアルタイムドメインでの処理が終わるまで応答は返ってこず、その間応答を待ち続けることになる。そのため、システム全体のスループットが低下する問題が発生する。
特許文献１に開示されている技術では、この問題に対してスループットを向上させることができる代わりにリアルタイム性能を低下させてしまう。
本発明は、マルチコア、かつ、デュアルカーネル方式を採用した環境において、リアルタイム性能を低下させずにスループットを向上させることを目的とする。
【課題を解決するための手段】
【０００６】
そこで、本発明は、複数の処理実行手段を有する情報処理装置であって、前記複数の処理実行手段による処理を連携する制御手段を有し、前記制御手段は、優先処理を実行中の第１の処理実行手段に対して非優先処理を実行する第２の処理実行手段から発行された処理要求を検出する検出手段と、前記検出手段により前記処理要求が検出された場合、前記処理要求の処理が回避可能であるか否かを判定する判定手段と、前記判定手段により回避可能と判定された場合、前記処理要求に対する回避対応処理を実行する実行手段と、を有する。
【発明の効果】
【０００７】
本発明によれば、マルチコア、かつ、デュアルカーネル方式を採用した環境において、リアルタイム性能を低下させずにスループットを向上させることができる。
【図面の簡単な説明】
【０００８】
【図１】情報処理装置のハードウェア構成の一例を示す図である。
【図２】情報処理装置の機能構成の一例を示す図である。
【図３】ＴＬＢＳｈｏｏｔｄｏｗｎに関するページテーブルの一例を示す図である。
【図４】ＴＬＢＳｈｏｏｔｄｏｗｎの処理の一例を示すシーケンス図である。
【図５】既存技術を適用した場合におけるＴＬＢＳｈｏｏｔｄｏｗｎの処理の一例を示すシーケンス図である。
【図６】実施形態で提案する技術を適用した場合におけるＴＬＢＳｈｏｏｔｄｏｗｎの処理の一例を示すシーケンス図である。
【図７】ドメイン切り替え処理管理テーブルの一例を示す図である。
【図８】対象処理検出処理の一例を示すフローチャートである。
【図９】回避手段管理テーブルのデータ構造の一例を示す図である。
【発明を実施するための形態】
【０００９】
以下、本発明を実施するための形態について図面を用いて説明する。
＜実施形態１＞
図１は、本実施形態における情報処理装置２００のハードウェア構成の一例を示す図である。ＣＰＵ（ＣｅｎｔｒａｌＰｒｏｃｅｓｓｉｎｇＵｎｉｔ）２０１、２０４は、情報処理装置２００全体を制御する。なお、ＣＰＵ２０１、２０４は、マルチコア環境における処理実行手段の一例である。ＭＭＵ（ＭｅｍｏｒｙＭａｎａｇｅｍｅｎｔＵｎｉｔ）２０２、２０５は、仮想アドレスを物理アドレスに変換する。ＴＬＢ（ＴｒａｎｓｌａｔｉｏｎＬｏｏｋａｓｉｄｅＢｕｆｆｅｒ）２０３、２０６は、ＭＭＵで利用した仮想アドレスと物理アドレスとの対応テーブルをキャッシュする。ＴＬＢは、ＣＰＵ一つにつき一つ存在し、マルチコア環境ではデータの整合性を保つために同期しなければならないケースが存在する。ＲＯＭ（ＲｅａｄＯｎｌｙＭｅｍｏｒｙ）２０７は、ハードディスクドライブ（以下、ＨＤＤという）のような、データやプログラムを記録しておくことができる不揮発な記録媒体である。ＲＡＭ（ＲａｎｄｏｍＡｃｃｅｓｓＭｅｍｏｒｙ）２０８は、プログラムやデータを一時記憶するメモリであり、システムメモリともいう。アドレスバス２０９は、アドレスをやり取りするためのバスである。データバス２１０は、データをやりとりするためのバスである。
【００１０】
ＣＰＵ２０１、２０４が、ＲＯＭ２０７等に記憶されているプログラムを実行することにより、情報処理装置２００の機能構成及び後述するフローチャートの処理が実現される。情報処理装置２００の機能構成には、オペレーティングシステム（以下、ＯＳという）の機能、カーネルの機能、ハイパバイザの機能等も含まれる。なお、図１では、本実施形態における情報処理装置２００が２つのＣＰＵを有する構成であるものとしたが、３つ以上のＣＰＵを有する構成であってもよい。
【００１１】
図２は、本実施形態における情報処理装置２００の機能構成の一例を示す図である。より具体的に説明すると、図２は、本実施形態における情報処理装置２００のハイパバイザ１００の機能構成の一例を示す図である。本実施形態では、カーネル内に本来のカーネルよりも動作優先度の高いサブシステムを追加し、サブシステム上でリアルタイム性能が要求されるタスクを動作させるデュアルカーネル方式を想定している。ハイパバイザ１００は、カーネルとハードウェアとの間に独立した機能として配置し、サブシステム側（リアルタイムドメイン）及び既存のカーネル側（ノンリアルタイムドメイン）を動作優先度に則して制御する。ここで、リアルタイムドメインの処理は、リアルタイム性能が要求される優先処理の一例である。一方、ノンリアルタイムドメインの処理は、リアルタイム性能が要求されない非優先処理の一例である。また、ハイパバイザ１００が実行する処理は、リアルタイムドメインの処理とノンリアルタイムドメインの処理とを連携する制御処理の一例である。
【００１２】
以下、ハイパバイザ１００のより具体的な機能構成について説明する。
ＣＰＵ別ドメイン状態管理テーブル１０１は、情報処理装置２００に含まれる全ＣＰＵが、現在、リアルタイムドメインとノンリアルタイムドメインとのどちらのドメインで動作しているかを示す情報を保持するテーブルである。ＣＰＵ別ドメイン状態管理テーブル１０１は、ＣＰＵの数だけデータを保持する。保持されているデータは、対象のＣＰＵがリアルタイムドメインで動作しているか、ノンリアルタイムドメインで動作しているかを示す。ドメインの状態は排他的であり、両方のドメインで動作している状態や、どちらのドメインでも動作していないという状態は存在しない。
回避手段管理テーブル１０２は、回避対象として判定された処理に対する回避手段に関する情報を保持するテーブルである。情報処理装置２００は、回避手段管理テーブル１０２を処理毎に保持している。回避手段管理テーブル１０２には、処理情報毎に処理に対する回避手段に関する情報が関連付けられて記述されている。回避手段管理テーブル１０２のより詳細な説明については、図９等を用いて後述する。
【００１３】
対象処理検出部１０３は、リアルタイムドメインで動作中（処理実行中）のＣＰＵに対して、ノンリアルタイムドメインで動作中のＣＰＵが処理を依頼したことを検知する。
回避可能判定部１０４は、対象処理検出部１０３で検出された処理が回避可能であるか否かを判定する。
ドメイン切り替え検知部１０５は、リアルタイムドメインとノンリアルタイムドメインとの切り替えを検知する。
ドメイン切り替え処理管理テーブル１０６は、ドメイン切り替え検知部１０５によってドメインの切り替えが検出された際に実行される処理の処理情報を保持する。ドメイン切り替え処理管理テーブル１０６のより詳細な説明については、図７等を用いて後述する。
なお、本実施形態では、ＣＰＵ別ドメイン状態管理テーブル１０１、回避手段管理テーブル１０２及びドメイン切り替え処理管理テーブル１０６は、情報処理装置２００のＲＯＭ２０７やＨＤＤに記憶されているものとしたが、これに限る必要はない。例えば、これらのテーブルは、情報処理装置２００とネットワークを介して通信可能な外部の装置に記憶されていてもよい。
以上が本実施形態における情報処理装置２００のハイパバイザ１００の基本的な構成である。図２の説明では情報処理装置２００が使用するデータの内容について詳述しなかったが、以降の説明ではより具体的なデータを用いて本実施形態の処理手順等について説明する。
【００１４】
以下、図３から図５までを用いて、本実施形態を理解する上で必要な既存技術の説明を行う。その後、図６から図９までを用いて、既存技術と比較して本実施形態が有利となる点等の詳細について説明する。
まず、図３及び図４を用いて、本実施形態が有用となる処理例であるＴＬＢＳｈｏｏｔｄｏｗｎについて説明する。
図３は、ＴＬＢＳｈｏｏｔｄｏｗｎの概要を説明するためのＴＬＢＳｈｏｏｔｄｏｗｎに関するページテーブルの一例を示す図である。ＴＬＢＳｈｏｏｔｄｏｗｎとは、マルチコア環境で、仮想アドレスと物理アドレスとの対応関係を保持するページテーブルの整合性を保つための処理である。図３の環境では、ＣＰＵ２０１、２０４と、それぞれのＣＰＵに対応したＴＬＢ２０３、２０６とが存在する。ＴＬＢ２０３、２０６は、プロセス毎に一つ存在するページテーブル３０１の一部をキャッシュする。ここで、カーネル空間のページテーブルエントリを書き換えるケースを想定する。カーネル空間のページテーブルは全てのプロセスで共通なため、ＣＰＵ２０１、２０４は、同一のカーネル空間のページテーブルエントリを参照しており、ＴＬＢ２０３、２０６は、共通のページテーブルエントリ３０２を保持している状態とする。
ＣＰＵ２０１がページテーブル３０１上に存在するページテーブルエントリ３０２を同期をとらずに書き換え、ＣＰＵ２０４がページテーブルエントリ３０２に記載されているアドレスにアクセスしたとする。この場合、ＴＬＢ２０６には書き換え前のページテーブルエントリ３０２がキャッシュされているため、ＣＰＵ２０１とＣＰＵ２０４との間で同じアドレスを指定しても別のページを指定してしまい、ＣＰＵ間におけるページテーブルの整合性がとれなくなる。この整合性を保つための処理がＴＬＢＳｈｏｏｔｄｏｗｎである。
【００１５】
次に、ＴＬＢＳｈｏｏｔｄｏｗｎの処理の流れについて、図４を用いて説明する。図４は、ＴＬＢＳｈｏｏｔｄｏｗｎの処理の概要の一例を示すシーケンス図の一例である。ＣＰＵ２０１がページテーブルエントリを書き換える場合、このページテーブルエントリを保持するプロセスを実行しているＣＰＵ２０４に対して、ページテーブルエントリ変更開始通知４０１を送る。なお、ＣＰＵ２０１は、前記プロセスを実行しているＣＰＵが複数ある場合は、自身を除く他の全てのＣＰＵ（以下、全ＣＰＵという）に対してページテーブルエントリ変更開始通知４０１を送る。ＣＰＵ２０１は、ページテーブルエントリ変更開始通知４０１を通知した全ＣＰＵ（ここではＣＰＵ２０４）からページテーブルエントリ変更承認通知４０２が返ってくるまで待機し続ける。
通知を受けたＣＰＵ２０４は、ＣＰＵ２０１に対してページテーブルエントリ変更承認通知４０２を返し、ページテーブルエントリ変更完了通知４０５を受けるまで待機し続ける。ＣＰＵ２０１は、書き換え対象のページテーブルエントリを保持する全ＣＰＵ（ここではＣＰＵ２０４）から応答が返ってきた後、ページテーブルエントリ変更処理４０３と、自身（ＣＰＵ２０１）のＴＬＢ無効化処理４０４とを行う。そして、ＣＰＵ２０１は、待機している全ＣＰＵ（ここではＣＰＵ２０４）に対してページテーブルエントリ変更完了通知４０５を送る。ページテーブルエントリ変更完了通知４０５を受けた全ＣＰＵ（ここではＣＰＵ２０４）は、ＴＬＢ無効化処理４０６を行う。これらの一連の処理が実行されることでＴＬＢＳｈｏｏｔｄｏｗｎは完了する。
【００１６】
次に、既存のマルチコア・デュアルカーネル方式において、ＴＬＢＳｈｏｏｔｄｏｗｎが発生した場合の処理の流れについて、図５を用いて説明する。図５は、既存技術を適用した場合におけるＴＬＢＳｈｏｏｔｄｏｗｎの処理の一例を示すシーケンス図の一例である。今、ＣＰＵ２０１とＣＰＵ２０４とが動作するマルチコア環境上で、ＣＰＵ２０１がリアルタイムドメイン５０１で動作し、ＣＰＵ２０４がノンリアルタイムドメイン５０２で動作しているものとする。
ＣＰＵ２０４がカーネル空間のページテーブルエントリを書き換える場合、書き換え処理を行うＣＰＵ以外の全ＣＰＵ（ここではＣＰＵ２０１）に対してページテーブルエントリ変更開始通知５０４を送る。ハイパバイザ５０３を経由した転送通知５０５により、ＣＰＵ２０４からＣＰＵ２０１に、ページテーブルエントリ変更開始通知５０６が送られるが、ＣＰＵ２０１はリアルタイムドメイン５０１で動作中である。そのため、このノンリアルタイムドメイン５０２上の処理である、ページテーブルエントリ変更開始通知５０６に対応するハンドラ処理（割り込み処理）はハイパバイザ５０３によって、リアルタイムドメイン５０１上の処理が終了するまで遅延させられる。この間、ＣＰＵ２０４は通知に対する応答が返ってくるまでビジーループで待ち続けているため、システムのスループットは低下する。
【００１７】
ＣＰＵ２０１がリアルタイムドメイン５０１上の処理を終了し、ノンリアルタイムドメイン５０２上の処理を開始すると、ページテーブルエントリ変更開始通知５０６に対応するハンドラ処理を実行する。そして、ＣＰＵ２０１は、ＣＰＵ２０４にページテーブルエントリ変更承認通知５０７を返す。その結果、ハイパバイザ５０３を経由した通知転送５０８によりＣＰＵ２０４のノンリアルタイムドメイン５０２にページテーブル変更承認通知５０９が返り、ＣＰＵ２０４は処理を再開する。
ＣＰＵ２０４は、ページテーブルエントリの変更処理５１０と、ＴＬＢ無効化処理５１１とを行い、ハイパバイザ５０３を経由してＣＰＵ２０１へページテーブルエントリ変更完了通知５１２を送る。ＣＰＵ２０１は、ＣＰＵ２０４から通知転送５１３を介したページテーブルエントリ変更完了通知５１４を受け取ると、ＴＬＢ無効化処理５１５を実行し、ＴＬＢＳｈｏｏｔｄｏｗｎ処理が完了する。
上記の通り、既存の技術では、あるＣＰＵがリアルタイムドメインで動作中に、他のＣＰＵがＴＬＢＳｈｏｏｔｄｏｗｎ命令を発行した場合、スループットが低下する。
【００１８】
次に、本実施形態で提案する技術を適用したマルチコア・デュアルカーネル方式において、ＴＬＢＳｈｏｏｔｄｏｗｎが発生した場合の処理の流れについて、図６を用いて説明する。図６は、本実施形態で提案する技術を適用した場合におけるＴＬＢＳｈｏｏｔｄｏｗｎの処理の一例を示すシーケンス図の一例である。図５の場合と同様に、ＣＰＵ２０１とＣＰＵ２０４とが動作するマルチコア環境上で、ＣＰＵ２０１がリアルタイムドメイン６０１で動作し、ＣＰＵ２０４がノンリアルタイムドメイン６０２で動作しているものとする。
本提案技術では、ＣＰＵ２０１は、ノンリアルタイムドメイン６０２からリアルタイムドメイン６０１への切り替えの際にＴＬＢ無効化処理６０４を実行する。この結果、ＣＰＵ２０１がリアルタイムドメイン６０１で動作している間はノンリアルタイムドメインのページテーブルがＴＬＢにキャッシュされることがなくなる。
【００１９】
ＣＰＵ２０４がカーネル空間のページテーブルエントリを書き換えた場合、書き換え処理を行うＣＰＵ以外の全ＣＰＵ（ここではＣＰＵ２０１）に対してページテーブルエントリ変更開始通知６０５を送ろうとする。ここで本提案技術では、ノンリアルタイムドメイン６０２で動作中のＣＰＵが応答が来るまで待機する必要がある処理要求を別ＣＰＵへ依頼するのをハイパバイザ６０３が検出すると、ＣＰＵ実行ドメイン確認処理６０６を実行する。ＣＰＵ実行ドメイン確認処理６０６によって通信先のＣＰＵの実行ドメインがリアルタイムドメインだと確認された場合、ハイパバイザ６０３は、前記処理要求の処理が回避可能であるか否かの判定処理６０７を行う。判定処理６０７において回避可能と判定された場合、ハイパバイザ６０３は、ノンリアルタイムドメイン６０２にページテーブルエントリ変更承認通知６０８を返す。
そして、ＣＰＵ２０４は、図５の既存技術と同様にＴＬＢＳｈｏｏｔｄｏｗｎの処理であるページテーブルエントリ変更処理６０９、ＴＬＢ無効化処理６１０を実行する。その後、既存技術の場合、ＣＰＵ２０４は、ハイパバイザ６０３を経由してページテーブルエントリ変更完了通知６１１をＣＰＵ２０１に通知しようと試みる。しかし、本提案技術では、ページテーブルエントリ変更完了通知６１１は無視され、ＣＰＵ２０１への通知はされない。
以上の処理により、リアルタイム性能を低下させずにスループットを向上させることができる。
【００２０】
以下、図６で説明した処理を実現するための仕組みについて図７、８を用いて説明する。
まず、リアルタイムドメイン切り替えの際にＴＬＢ無効化処理６０４を実行するための技術について図７を用いて説明する。図７のドメイン切り換え検知部１０５、ドメイン切り替え処理管理テーブル１０６の各々については、図１で説明した通りであるため説明を省略する。ドメイン切り替え検知部１０５は、ＣＰＵの処理がリアルタイムドメイン又はノンリアルタイムドメインに切り替わったことを検知する。ドメイン切り替え検知部１０５は、ドメイン切り替え処理管理テーブル１０６に登録されている切り替え先ドメイン別の処理情報が示す処理を、ドメインの切り替えが発生する度に実行する。ＴＬＢＳｈｏｏｔｄｏｗｎに適用した本例では、リアルタイムドメインに切り替わる際にＴＬＢ無効化処理７０１が実行されるよう、ドメイン切り替え処理管理テーブル１０６に予め登録しておく。
【００２１】
次に、ＣＰＵ実行ドメイン確認処理６０６及び判定処理６０７を含む対象処理検出処理の詳細について、図８を用いて説明する。図８は、ＣＰＵ実行ドメイン確認処理６０６及び判定処理６０７を含む対象処理検出処理の一例を示すフローチャートである。
Ｓ８００で、ドメイン切り替え検知部１０５は、通信先のＣＰＵがリアルタイムドメインとノンリアルタイムドメインとのどちらのドメインで動作しているかを確認（処理判定）する。ドメイン切り替え検知部１０５は、通信先のＣＰＵがノンリアルタイムドメインで動作中の場合には、検出した処理を回避せず、検出した処理を続行する（Ｓ８０３）。一方、ドメイン切り替え検知部１０５は、通信先のＣＰＵがリアルタイムドメインで動作中だった場合には、処理をＳ８０１に進める。
Ｓ８０１で、回避可能判定部１０４は、対象処理検出部１０３により検出された処理要求の処理が回避可能か否かを判定する。回避可能判定部１０４は、回避可能か否かを、回避手段管理テーブル１０２内に登録されている、検出された処理に対する回避確認処理情報が示す処理によって判定する。Ｓ８０１の処理の詳細については、図９を用いて後述する。回避可能判定部１０４は、回避可能であると判定した場合には、処理をＳ８０２に進める。
Ｓ８０２で、対象処理検出部１０３は、検出した処理要求を破棄する。また、図９を用いて後述する回避対応処理が実行される。一方、回避可能判定部１０４は、回避可能でないと判定した場合には、処理をＳ８０３に進める。Ｓ８０３の処理については、上述した通りである。
以上の処理により、ノンリアルタイムドメインで動作中のＣＰＵがリアルタイムドメインで動作中のＣＰＵによって不必要に待たされる時間を削減し、システムのスループットを向上させることができる。
【００２２】
図９は、回避手段管理テーブル１０２のデータ構造の一例を示す図である。回避手段管理テーブル１０２は、検出対象情報９０１、回避確認処理情報９０２、回避対応処理情報９０３、有効・無効フラグ９０４の、４つの情報を含む。なお、回避手段管理テーブル１０２は、管理情報の一例である。
検出対象情報９０１は、対象処理検出部１０３により検出された処理要求の処理の処理情報と照合するための情報である。検出対象情報９０１が示す情報に対応する処理が検出され、かつ、有効・無効フラグ９０４が有効になっている場合は、回避確認処理情報９０２が示す処理（回避確認処理）、回避対応処理情報９０３が示す処理（回避対応処理）が実行される。
回避確認処理情報９０２は、検出対象によって異なる。ページテーブルエントリ変更開始通知が検出された場合、回避可能判定部１０４は、書き換えられるページテーブルエントリがどのグループに属するかで回避可能か否かを判定する。より具体的に説明すると、回避可能判定部１０４は、ノンリアルタイムドメインのユーザ空間上、又はカーネル空間上のページテーブルエントリの場合には回避可能であると判定し、それ以外の場合は回避不可能と判定する。即ち、回避可能判定部１０４は、ページテーブルエントリが予め定められた条件を満たしているか否かに応じて、回避可能か否かを判定する。回避可能判定部１０４が回避確認処理情報９０２が示す処理によって回避可能と判定した場合、通常の処理（検出された処理要求の処理）の代わりに回避対応処理情報９０３が示す処理が実行される。より具体的には、ページテーブルエントリ書き換え処理に対応する回避対応処理として、ハイパバイザ６０３は、処理依頼元のＣＰＵ２０４に対して、ページテーブルエントリ変更承認通知を返す。そして、ハイパバイザ６０３は、ページテーブルエントリ変更完了通知の有効・無効フラグ９０６の有効化を行う。
【００２３】
回避対応処理情報９０３が示す処理の結果、ＣＰＵ２０４に対してページテーブルエントリ変更承認通知が返ると、ＣＰＵ２０４は、ページテーブルエントリ変更処理６０９、ＴＬＢ無効化処理６１０を行う。そして、ＣＰＵ２０４は、ページテーブルエントリ変更完了通知６１１をハイパバイザ６０３に送る。
ここで、先ほどのページテーブルエントリ変更開始通知によって回避手段管理テーブル１０２内のページテーブルエントリ変更完了通知の有効・無効フラグ９０６が有効化されている。そのため、本処理として、ＣＰＵ２０４は、回避手段管理テーブル１０２内に登録された処理である、ページテーブルエントリ変更完了通知の無効化処理９０５を実行する。
この結果、ＣＰＵ２０４は、リアルタイムドメインで動作中のＣＰＵ２０１の処理が終わるのを待機せずとも、次の処理を継続することが可能となる。
【００２４】
＜その他の実施形態＞
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア（プログラム）を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ（又はＣＰＵやＭＰＵ等）がプログラムを読み出して実行する処理である。
【００２５】
以上、上述した各実施形態によれば、マルチコア、かつ、デュアルカーネル方式を採用した環境において、リアルタイム性能を低下させずにスループットを向上させることができる。
【００２６】
以上、本発明の好ましい形態について詳述したが、本実施形態は係る特定の実施形態に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形・変更が可能である。
【図１】
2015197802.tif 000003
【図２】
2015197802.tif 000004
【図３】
2015197802.tif 000005
【図４】
2015197802.tif 000006
【図５】
2015197802.tif 000007
【図６】
2015197802.tif 000008
【図７】
2015197802.tif 000009
【図８】
2015197802.tif 000010
【図９】
2015197802.tif 000011