JP2015197802A - 情報処理装置、情報処理方法及びプログラム - Google Patents
情報処理装置、情報処理方法及びプログラム Download PDFInfo
- Publication number
- JP2015197802A JP2015197802A JP2014075544A JP2014075544A JP2015197802A JP 2015197802 A JP2015197802 A JP 2015197802A JP 2014075544 A JP2014075544 A JP 2014075544A JP 2014075544 A JP2014075544 A JP 2014075544A JP 2015197802 A JP2015197802 A JP 2015197802A
- Authority
- JP
- Japan
- Prior art keywords
- processing
- information
- avoidance
- request
- execution
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Memory System Of A Hierarchy Structure (AREA)
Abstract
【課題】マルチコア、かつ、デュアルカーネル方式を採用した環境において、リアルタイム性能を低下させずにスループットを向上させる。【解決手段】複数の処理実行手段を有する情報処理装置であって、前記複数の処理実行手段による処理を連携する制御手段を有し、前記制御手段は、優先処理を実行中の第1の処理実行手段に対して非優先処理を実行する第2の処理実行手段から発行された処理要求を検出する検出手段と、前記検出手段により前記処理要求が検出された場合、前記処理要求の処理が回避可能であるか否かを判定する判定手段と、前記判定手段により回避可能と判定された場合、前記処理要求に対する回避対応処理を実行する実行手段と、を有することによって課題を解決する。【選択図】図8
Description
本発明は、情報処理装置、情報処理方法及びプログラムに関する。
汎用OSに対して、既存の機能を損なわずにリアルタイム性能を向上させる方式としてデュアルカーネル方式が存在する。デュアルカーネル方式とは、カーネル内に本来のカーネルよりも動作優先度の高いサブシステムを追加し、サブシステム上でリアルタイム性能が要求されるタスクを動作させることで、システムのリアルタイム性能を向上させる手法のことである。以後の説明では、サブシステム側をリアルタイムドメイン、既存のカーネル側をノンリアルタイムドメインという。この動作優先度に則した形で制御するために、カーネルとハードウェアとの間にカーネルとは独立したソフトウェア(以下、ハイパバイザという)を配置し、リアルタイムドメインとノンリアルタイムドメインとの挙動を制御している。
ノンリアルタイムドメインにとって、リアルタイムドメインは透過的であり、ノンリアルタイムドメイン側がリアルタイムドメインの存在を意識する必要はない。即ち、リアルタイムドメインは、ノンリアルタイムドメインよりも優先的に動作する。リアルタイムドメイン上のタスクが起床した場合、ノンリアルタイムドメイン上でどのようなタスクが動作していようがプリエンプションされ、リアルタイムドメインタスクの動作を開始する。
ノンリアルタイムドメインにとって、リアルタイムドメインは透過的であり、ノンリアルタイムドメイン側がリアルタイムドメインの存在を意識する必要はない。即ち、リアルタイムドメインは、ノンリアルタイムドメインよりも優先的に動作する。リアルタイムドメイン上のタスクが起床した場合、ノンリアルタイムドメイン上でどのようなタスクが動作していようがプリエンプションされ、リアルタイムドメインタスクの動作を開始する。
また、ドメインとCPUとは非依存関係となっており、任意のCPUで任意のドメインでの動作と、ドメイン間の切り替えとが可能である。マルチコア環境においては、あるCPUがリアルタイムドメインで動作している間でも、他のCPUはノンリアルタイムドメインで動作することが可能である。そのため、リアルタイム性を維持しながら、マルチコアを活用してシステム全体のスループットを向上させることができる。
特許文献1には、マルチコア、かつ、デュアルカーネル方式を採用した環境においてスループットを向上させるための技術が開示されている。この技術では、CPU1が優先度の高いドメインAで動作中に、優先度の低いドメインBで動作中のCPU2がCPU1に対して応答を求める処理を発行した場合、CPU1はドメインAからドメインBに移行する。そして、CPU1が依頼された処理を行いCPU2に応答を返した後、ドメインAに復帰し中断した処理を再開することで、システム全体のスループットを向上させる。
特許文献1には、マルチコア、かつ、デュアルカーネル方式を採用した環境においてスループットを向上させるための技術が開示されている。この技術では、CPU1が優先度の高いドメインAで動作中に、優先度の低いドメインBで動作中のCPU2がCPU1に対して応答を求める処理を発行した場合、CPU1はドメインAからドメインBに移行する。そして、CPU1が依頼された処理を行いCPU2に応答を返した後、ドメインAに復帰し中断した処理を再開することで、システム全体のスループットを向上させる。
マルチコア環境上で動作する汎用OSには、複数のCPU間で同期が必要な処理が存在する。複数のCPU間で同期が必要な処理の例としては、TranslationLookasideBuffer(以下、TLBという)の同期等があげられる。
リアルタイムドメインにリアルタイムOS、ノンリアルタイムドメインに汎用OSを採用したデュアルカーネル環境において、リアルタイムドメインで動作中のCPUに対して、ノンリアルタイムドメインで動作中のCPUが何らかの応答を求めたとする。ここで、ノンリアルタイムドメインで動作中のCPUが、応答が返ってくるまで待ち続ける処理を発行した場合、リアルタイムドメインでの処理が終わるまで応答は返ってこず、その間応答を待ち続けることになる。そのため、システム全体のスループットが低下する問題が発生する。
特許文献1に開示されている技術では、この問題に対してスループットを向上させることができる代わりにリアルタイム性能を低下させてしまう。
本発明は、マルチコア、かつ、デュアルカーネル方式を採用した環境において、リアルタイム性能を低下させずにスループットを向上させることを目的とする。
リアルタイムドメインにリアルタイムOS、ノンリアルタイムドメインに汎用OSを採用したデュアルカーネル環境において、リアルタイムドメインで動作中のCPUに対して、ノンリアルタイムドメインで動作中のCPUが何らかの応答を求めたとする。ここで、ノンリアルタイムドメインで動作中のCPUが、応答が返ってくるまで待ち続ける処理を発行した場合、リアルタイムドメインでの処理が終わるまで応答は返ってこず、その間応答を待ち続けることになる。そのため、システム全体のスループットが低下する問題が発生する。
特許文献1に開示されている技術では、この問題に対してスループットを向上させることができる代わりにリアルタイム性能を低下させてしまう。
本発明は、マルチコア、かつ、デュアルカーネル方式を採用した環境において、リアルタイム性能を低下させずにスループットを向上させることを目的とする。
そこで、本発明は、複数の処理実行手段を有する情報処理装置であって、前記複数の処理実行手段による処理を連携する制御手段を有し、前記制御手段は、優先処理を実行中の第1の処理実行手段に対して非優先処理を実行する第2の処理実行手段から発行された処理要求を検出する検出手段と、前記検出手段により前記処理要求が検出された場合、前記処理要求の処理が回避可能であるか否かを判定する判定手段と、前記判定手段により回避可能と判定された場合、前記処理要求に対する回避対応処理を実行する実行手段と、を有する。
本発明によれば、マルチコア、かつ、デュアルカーネル方式を採用した環境において、リアルタイム性能を低下させずにスループットを向上させることができる。
以下、本発明を実施するための形態について図面を用いて説明する。
<実施形態1>
図1は、本実施形態における情報処理装置200のハードウェア構成の一例を示す図である。CPU(CentralProcessingUnit)201、204は、情報処理装置200全体を制御する。なお、CPU201、204は、マルチコア環境における処理実行手段の一例である。MMU(MemoryManagementUnit)202、205は、仮想アドレスを物理アドレスに変換する。TLB(TranslationLookasideBuffer)203、206は、MMUで利用した仮想アドレスと物理アドレスとの対応テーブルをキャッシュする。TLBは、CPU一つにつき一つ存在し、マルチコア環境ではデータの整合性を保つために同期しなければならないケースが存在する。ROM(ReadOnlyMemory)207は、ハードディスクドライブ(以下、HDDという)のような、データやプログラムを記録しておくことができる不揮発な記録媒体である。RAM(RandomAccessMemory)208は、プログラムやデータを一時記憶するメモリであり、システムメモリともいう。アドレスバス209は、アドレスをやり取りするためのバスである。データバス210は、データをやりとりするためのバスである。
<実施形態1>
図1は、本実施形態における情報処理装置200のハードウェア構成の一例を示す図である。CPU(CentralProcessingUnit)201、204は、情報処理装置200全体を制御する。なお、CPU201、204は、マルチコア環境における処理実行手段の一例である。MMU(MemoryManagementUnit)202、205は、仮想アドレスを物理アドレスに変換する。TLB(TranslationLookasideBuffer)203、206は、MMUで利用した仮想アドレスと物理アドレスとの対応テーブルをキャッシュする。TLBは、CPU一つにつき一つ存在し、マルチコア環境ではデータの整合性を保つために同期しなければならないケースが存在する。ROM(ReadOnlyMemory)207は、ハードディスクドライブ(以下、HDDという)のような、データやプログラムを記録しておくことができる不揮発な記録媒体である。RAM(RandomAccessMemory)208は、プログラムやデータを一時記憶するメモリであり、システムメモリともいう。アドレスバス209は、アドレスをやり取りするためのバスである。データバス210は、データをやりとりするためのバスである。
CPU201、204が、ROM207等に記憶されているプログラムを実行することにより、情報処理装置200の機能構成及び後述するフローチャートの処理が実現される。情報処理装置200の機能構成には、オペレーティングシステム(以下、OSという)の機能、カーネルの機能、ハイパバイザの機能等も含まれる。なお、図1では、本実施形態における情報処理装置200が2つのCPUを有する構成であるものとしたが、3つ以上のCPUを有する構成であってもよい。
図2は、本実施形態における情報処理装置200の機能構成の一例を示す図である。より具体的に説明すると、図2は、本実施形態における情報処理装置200のハイパバイザ100の機能構成の一例を示す図である。本実施形態では、カーネル内に本来のカーネルよりも動作優先度の高いサブシステムを追加し、サブシステム上でリアルタイム性能が要求されるタスクを動作させるデュアルカーネル方式を想定している。ハイパバイザ100は、カーネルとハードウェアとの間に独立した機能として配置し、サブシステム側(リアルタイムドメイン)及び既存のカーネル側(ノンリアルタイムドメイン)を動作優先度に則して制御する。ここで、リアルタイムドメインの処理は、リアルタイム性能が要求される優先処理の一例である。一方、ノンリアルタイムドメインの処理は、リアルタイム性能が要求されない非優先処理の一例である。また、ハイパバイザ100が実行する処理は、リアルタイムドメインの処理とノンリアルタイムドメインの処理とを連携する制御処理の一例である。
以下、ハイパバイザ100のより具体的な機能構成について説明する。
CPU別ドメイン状態管理テーブル101は、情報処理装置200に含まれる全CPUが、現在、リアルタイムドメインとノンリアルタイムドメインとのどちらのドメインで動作しているかを示す情報を保持するテーブルである。CPU別ドメイン状態管理テーブル101は、CPUの数だけデータを保持する。保持されているデータは、対象のCPUがリアルタイムドメインで動作しているか、ノンリアルタイムドメインで動作しているかを示す。ドメインの状態は排他的であり、両方のドメインで動作している状態や、どちらのドメインでも動作していないという状態は存在しない。
回避手段管理テーブル102は、回避対象として判定された処理に対する回避手段に関する情報を保持するテーブルである。情報処理装置200は、回避手段管理テーブル102を処理毎に保持している。回避手段管理テーブル102には、処理情報毎に処理に対する回避手段に関する情報が関連付けられて記述されている。回避手段管理テーブル102のより詳細な説明については、図9等を用いて後述する。
CPU別ドメイン状態管理テーブル101は、情報処理装置200に含まれる全CPUが、現在、リアルタイムドメインとノンリアルタイムドメインとのどちらのドメインで動作しているかを示す情報を保持するテーブルである。CPU別ドメイン状態管理テーブル101は、CPUの数だけデータを保持する。保持されているデータは、対象のCPUがリアルタイムドメインで動作しているか、ノンリアルタイムドメインで動作しているかを示す。ドメインの状態は排他的であり、両方のドメインで動作している状態や、どちらのドメインでも動作していないという状態は存在しない。
回避手段管理テーブル102は、回避対象として判定された処理に対する回避手段に関する情報を保持するテーブルである。情報処理装置200は、回避手段管理テーブル102を処理毎に保持している。回避手段管理テーブル102には、処理情報毎に処理に対する回避手段に関する情報が関連付けられて記述されている。回避手段管理テーブル102のより詳細な説明については、図9等を用いて後述する。
対象処理検出部103は、リアルタイムドメインで動作中(処理実行中)のCPUに対して、ノンリアルタイムドメインで動作中のCPUが処理を依頼したことを検知する。
回避可能判定部104は、対象処理検出部103で検出された処理が回避可能であるか否かを判定する。
ドメイン切り替え検知部105は、リアルタイムドメインとノンリアルタイムドメインとの切り替えを検知する。
ドメイン切り替え処理管理テーブル106は、ドメイン切り替え検知部105によってドメインの切り替えが検出された際に実行される処理の処理情報を保持する。ドメイン切り替え処理管理テーブル106のより詳細な説明については、図7等を用いて後述する。
なお、本実施形態では、CPU別ドメイン状態管理テーブル101、回避手段管理テーブル102及びドメイン切り替え処理管理テーブル106は、情報処理装置200のROM207やHDDに記憶されているものとしたが、これに限る必要はない。例えば、これらのテーブルは、情報処理装置200とネットワークを介して通信可能な外部の装置に記憶されていてもよい。
以上が本実施形態における情報処理装置200のハイパバイザ100の基本的な構成である。図2の説明では情報処理装置200が使用するデータの内容について詳述しなかったが、以降の説明ではより具体的なデータを用いて本実施形態の処理手順等について説明する。
回避可能判定部104は、対象処理検出部103で検出された処理が回避可能であるか否かを判定する。
ドメイン切り替え検知部105は、リアルタイムドメインとノンリアルタイムドメインとの切り替えを検知する。
ドメイン切り替え処理管理テーブル106は、ドメイン切り替え検知部105によってドメインの切り替えが検出された際に実行される処理の処理情報を保持する。ドメイン切り替え処理管理テーブル106のより詳細な説明については、図7等を用いて後述する。
なお、本実施形態では、CPU別ドメイン状態管理テーブル101、回避手段管理テーブル102及びドメイン切り替え処理管理テーブル106は、情報処理装置200のROM207やHDDに記憶されているものとしたが、これに限る必要はない。例えば、これらのテーブルは、情報処理装置200とネットワークを介して通信可能な外部の装置に記憶されていてもよい。
以上が本実施形態における情報処理装置200のハイパバイザ100の基本的な構成である。図2の説明では情報処理装置200が使用するデータの内容について詳述しなかったが、以降の説明ではより具体的なデータを用いて本実施形態の処理手順等について説明する。
以下、図3から図5までを用いて、本実施形態を理解する上で必要な既存技術の説明を行う。その後、図6から図9までを用いて、既存技術と比較して本実施形態が有利となる点等の詳細について説明する。
まず、図3及び図4を用いて、本実施形態が有用となる処理例であるTLBShootdownについて説明する。
図3は、TLBShootdownの概要を説明するためのTLBShootdownに関するページテーブルの一例を示す図である。TLBShootdownとは、マルチコア環境で、仮想アドレスと物理アドレスとの対応関係を保持するページテーブルの整合性を保つための処理である。図3の環境では、CPU201、204と、それぞれのCPUに対応したTLB203、206とが存在する。TLB203、206は、プロセス毎に一つ存在するページテーブル301の一部をキャッシュする。ここで、カーネル空間のページテーブルエントリを書き換えるケースを想定する。カーネル空間のページテーブルは全てのプロセスで共通なため、CPU201、204は、同一のカーネル空間のページテーブルエントリを参照しており、TLB203、206は、共通のページテーブルエントリ302を保持している状態とする。
CPU201がページテーブル301上に存在するページテーブルエントリ302を同期をとらずに書き換え、CPU204がページテーブルエントリ302に記載されているアドレスにアクセスしたとする。この場合、TLB206には書き換え前のページテーブルエントリ302がキャッシュされているため、CPU201とCPU204との間で同じアドレスを指定しても別のページを指定してしまい、CPU間におけるページテーブルの整合性がとれなくなる。この整合性を保つための処理がTLBShootdownである。
まず、図3及び図4を用いて、本実施形態が有用となる処理例であるTLBShootdownについて説明する。
図3は、TLBShootdownの概要を説明するためのTLBShootdownに関するページテーブルの一例を示す図である。TLBShootdownとは、マルチコア環境で、仮想アドレスと物理アドレスとの対応関係を保持するページテーブルの整合性を保つための処理である。図3の環境では、CPU201、204と、それぞれのCPUに対応したTLB203、206とが存在する。TLB203、206は、プロセス毎に一つ存在するページテーブル301の一部をキャッシュする。ここで、カーネル空間のページテーブルエントリを書き換えるケースを想定する。カーネル空間のページテーブルは全てのプロセスで共通なため、CPU201、204は、同一のカーネル空間のページテーブルエントリを参照しており、TLB203、206は、共通のページテーブルエントリ302を保持している状態とする。
CPU201がページテーブル301上に存在するページテーブルエントリ302を同期をとらずに書き換え、CPU204がページテーブルエントリ302に記載されているアドレスにアクセスしたとする。この場合、TLB206には書き換え前のページテーブルエントリ302がキャッシュされているため、CPU201とCPU204との間で同じアドレスを指定しても別のページを指定してしまい、CPU間におけるページテーブルの整合性がとれなくなる。この整合性を保つための処理がTLBShootdownである。
次に、TLBShootdownの処理の流れについて、図4を用いて説明する。図4は、TLBShootdownの処理の概要の一例を示すシーケンス図の一例である。CPU201がページテーブルエントリを書き換える場合、このページテーブルエントリを保持するプロセスを実行しているCPU204に対して、ページテーブルエントリ変更開始通知401を送る。なお、CPU201は、前記プロセスを実行しているCPUが複数ある場合は、自身を除く他の全てのCPU(以下、全CPUという)に対してページテーブルエントリ変更開始通知401を送る。CPU201は、ページテーブルエントリ変更開始通知401を通知した全CPU(ここではCPU204)からページテーブルエントリ変更承認通知402が返ってくるまで待機し続ける。
通知を受けたCPU204は、CPU201に対してページテーブルエントリ変更承認通知402を返し、ページテーブルエントリ変更完了通知405を受けるまで待機し続ける。CPU201は、書き換え対象のページテーブルエントリを保持する全CPU(ここではCPU204)から応答が返ってきた後、ページテーブルエントリ変更処理403と、自身(CPU201)のTLB無効化処理404とを行う。そして、CPU201は、待機している全CPU(ここではCPU204)に対してページテーブルエントリ変更完了通知405を送る。ページテーブルエントリ変更完了通知405を受けた全CPU(ここではCPU204)は、TLB無効化処理406を行う。これらの一連の処理が実行されることでTLBShootdownは完了する。
通知を受けたCPU204は、CPU201に対してページテーブルエントリ変更承認通知402を返し、ページテーブルエントリ変更完了通知405を受けるまで待機し続ける。CPU201は、書き換え対象のページテーブルエントリを保持する全CPU(ここではCPU204)から応答が返ってきた後、ページテーブルエントリ変更処理403と、自身(CPU201)のTLB無効化処理404とを行う。そして、CPU201は、待機している全CPU(ここではCPU204)に対してページテーブルエントリ変更完了通知405を送る。ページテーブルエントリ変更完了通知405を受けた全CPU(ここではCPU204)は、TLB無効化処理406を行う。これらの一連の処理が実行されることでTLBShootdownは完了する。
次に、既存のマルチコア・デュアルカーネル方式において、TLBShootdownが発生した場合の処理の流れについて、図5を用いて説明する。図5は、既存技術を適用した場合におけるTLBShootdownの処理の一例を示すシーケンス図の一例である。今、CPU201とCPU204とが動作するマルチコア環境上で、CPU201がリアルタイムドメイン501で動作し、CPU204がノンリアルタイムドメイン502で動作しているものとする。
CPU204がカーネル空間のページテーブルエントリを書き換える場合、書き換え処理を行うCPU以外の全CPU(ここではCPU201)に対してページテーブルエントリ変更開始通知504を送る。ハイパバイザ503を経由した転送通知505により、CPU204からCPU201に、ページテーブルエントリ変更開始通知506が送られるが、CPU201はリアルタイムドメイン501で動作中である。そのため、このノンリアルタイムドメイン502上の処理である、ページテーブルエントリ変更開始通知506に対応するハンドラ処理(割り込み処理)はハイパバイザ503によって、リアルタイムドメイン501上の処理が終了するまで遅延させられる。この間、CPU204は通知に対する応答が返ってくるまでビジーループで待ち続けているため、システムのスループットは低下する。
CPU204がカーネル空間のページテーブルエントリを書き換える場合、書き換え処理を行うCPU以外の全CPU(ここではCPU201)に対してページテーブルエントリ変更開始通知504を送る。ハイパバイザ503を経由した転送通知505により、CPU204からCPU201に、ページテーブルエントリ変更開始通知506が送られるが、CPU201はリアルタイムドメイン501で動作中である。そのため、このノンリアルタイムドメイン502上の処理である、ページテーブルエントリ変更開始通知506に対応するハンドラ処理(割り込み処理)はハイパバイザ503によって、リアルタイムドメイン501上の処理が終了するまで遅延させられる。この間、CPU204は通知に対する応答が返ってくるまでビジーループで待ち続けているため、システムのスループットは低下する。
CPU201がリアルタイムドメイン501上の処理を終了し、ノンリアルタイムドメイン502上の処理を開始すると、ページテーブルエントリ変更開始通知506に対応するハンドラ処理を実行する。そして、CPU201は、CPU204にページテーブルエントリ変更承認通知507を返す。その結果、ハイパバイザ503を経由した通知転送508によりCPU204のノンリアルタイムドメイン502にページテーブル変更承認通知509が返り、CPU204は処理を再開する。
CPU204は、ページテーブルエントリの変更処理510と、TLB無効化処理511とを行い、ハイパバイザ503を経由してCPU201へページテーブルエントリ変更完了通知512を送る。CPU201は、CPU204から通知転送513を介したページテーブルエントリ変更完了通知514を受け取ると、TLB無効化処理515を実行し、TLBShootdown処理が完了する。
上記の通り、既存の技術では、あるCPUがリアルタイムドメインで動作中に、他のCPUがTLBShootdown命令を発行した場合、スループットが低下する。
CPU204は、ページテーブルエントリの変更処理510と、TLB無効化処理511とを行い、ハイパバイザ503を経由してCPU201へページテーブルエントリ変更完了通知512を送る。CPU201は、CPU204から通知転送513を介したページテーブルエントリ変更完了通知514を受け取ると、TLB無効化処理515を実行し、TLBShootdown処理が完了する。
上記の通り、既存の技術では、あるCPUがリアルタイムドメインで動作中に、他のCPUがTLBShootdown命令を発行した場合、スループットが低下する。
次に、本実施形態で提案する技術を適用したマルチコア・デュアルカーネル方式において、TLBShootdownが発生した場合の処理の流れについて、図6を用いて説明する。図6は、本実施形態で提案する技術を適用した場合におけるTLBShootdownの処理の一例を示すシーケンス図の一例である。図5の場合と同様に、CPU201とCPU204とが動作するマルチコア環境上で、CPU201がリアルタイムドメイン601で動作し、CPU204がノンリアルタイムドメイン602で動作しているものとする。
本提案技術では、CPU201は、ノンリアルタイムドメイン602からリアルタイムドメイン601への切り替えの際にTLB無効化処理604を実行する。この結果、CPU201がリアルタイムドメイン601で動作している間はノンリアルタイムドメインのページテーブルがTLBにキャッシュされることがなくなる。
本提案技術では、CPU201は、ノンリアルタイムドメイン602からリアルタイムドメイン601への切り替えの際にTLB無効化処理604を実行する。この結果、CPU201がリアルタイムドメイン601で動作している間はノンリアルタイムドメインのページテーブルがTLBにキャッシュされることがなくなる。
CPU204がカーネル空間のページテーブルエントリを書き換えた場合、書き換え処理を行うCPU以外の全CPU(ここではCPU201)に対してページテーブルエントリ変更開始通知605を送ろうとする。ここで本提案技術では、ノンリアルタイムドメイン602で動作中のCPUが応答が来るまで待機する必要がある処理要求を別CPUへ依頼するのをハイパバイザ603が検出すると、CPU実行ドメイン確認処理606を実行する。CPU実行ドメイン確認処理606によって通信先のCPUの実行ドメインがリアルタイムドメインだと確認された場合、ハイパバイザ603は、前記処理要求の処理が回避可能であるか否かの判定処理607を行う。判定処理607において回避可能と判定された場合、ハイパバイザ603は、ノンリアルタイムドメイン602にページテーブルエントリ変更承認通知608を返す。
そして、CPU204は、図5の既存技術と同様にTLBShootdownの処理であるページテーブルエントリ変更処理609、TLB無効化処理610を実行する。その後、既存技術の場合、CPU204は、ハイパバイザ603を経由してページテーブルエントリ変更完了通知611をCPU201に通知しようと試みる。しかし、本提案技術では、ページテーブルエントリ変更完了通知611は無視され、CPU201への通知はされない。
以上の処理により、リアルタイム性能を低下させずにスループットを向上させることができる。
そして、CPU204は、図5の既存技術と同様にTLBShootdownの処理であるページテーブルエントリ変更処理609、TLB無効化処理610を実行する。その後、既存技術の場合、CPU204は、ハイパバイザ603を経由してページテーブルエントリ変更完了通知611をCPU201に通知しようと試みる。しかし、本提案技術では、ページテーブルエントリ変更完了通知611は無視され、CPU201への通知はされない。
以上の処理により、リアルタイム性能を低下させずにスループットを向上させることができる。
以下、図6で説明した処理を実現するための仕組みについて図7、8を用いて説明する。
まず、リアルタイムドメイン切り替えの際にTLB無効化処理604を実行するための技術について図7を用いて説明する。図7のドメイン切り換え検知部105、ドメイン切り替え処理管理テーブル106の各々については、図1で説明した通りであるため説明を省略する。ドメイン切り替え検知部105は、CPUの処理がリアルタイムドメイン又はノンリアルタイムドメインに切り替わったことを検知する。ドメイン切り替え検知部105は、ドメイン切り替え処理管理テーブル106に登録されている切り替え先ドメイン別の処理情報が示す処理を、ドメインの切り替えが発生する度に実行する。TLBShootdownに適用した本例では、リアルタイムドメインに切り替わる際にTLB無効化処理701が実行されるよう、ドメイン切り替え処理管理テーブル106に予め登録しておく。
まず、リアルタイムドメイン切り替えの際にTLB無効化処理604を実行するための技術について図7を用いて説明する。図7のドメイン切り換え検知部105、ドメイン切り替え処理管理テーブル106の各々については、図1で説明した通りであるため説明を省略する。ドメイン切り替え検知部105は、CPUの処理がリアルタイムドメイン又はノンリアルタイムドメインに切り替わったことを検知する。ドメイン切り替え検知部105は、ドメイン切り替え処理管理テーブル106に登録されている切り替え先ドメイン別の処理情報が示す処理を、ドメインの切り替えが発生する度に実行する。TLBShootdownに適用した本例では、リアルタイムドメインに切り替わる際にTLB無効化処理701が実行されるよう、ドメイン切り替え処理管理テーブル106に予め登録しておく。
次に、CPU実行ドメイン確認処理606及び判定処理607を含む対象処理検出処理の詳細について、図8を用いて説明する。図8は、CPU実行ドメイン確認処理606及び判定処理607を含む対象処理検出処理の一例を示すフローチャートである。
S800で、ドメイン切り替え検知部105は、通信先のCPUがリアルタイムドメインとノンリアルタイムドメインとのどちらのドメインで動作しているかを確認(処理判定)する。ドメイン切り替え検知部105は、通信先のCPUがノンリアルタイムドメインで動作中の場合には、検出した処理を回避せず、検出した処理を続行する(S803)。一方、ドメイン切り替え検知部105は、通信先のCPUがリアルタイムドメインで動作中だった場合には、処理をS801に進める。
S801で、回避可能判定部104は、対象処理検出部103により検出された処理要求の処理が回避可能か否かを判定する。回避可能判定部104は、回避可能か否かを、回避手段管理テーブル102内に登録されている、検出された処理に対する回避確認処理情報が示す処理によって判定する。S801の処理の詳細については、図9を用いて後述する。回避可能判定部104は、回避可能であると判定した場合には、処理をS802に進める。
S802で、対象処理検出部103は、検出した処理要求を破棄する。また、図9を用いて後述する回避対応処理が実行される。一方、回避可能判定部104は、回避可能でないと判定した場合には、処理をS803に進める。S803の処理については、上述した通りである。
以上の処理により、ノンリアルタイムドメインで動作中のCPUがリアルタイムドメインで動作中のCPUによって不必要に待たされる時間を削減し、システムのスループットを向上させることができる。
S800で、ドメイン切り替え検知部105は、通信先のCPUがリアルタイムドメインとノンリアルタイムドメインとのどちらのドメインで動作しているかを確認(処理判定)する。ドメイン切り替え検知部105は、通信先のCPUがノンリアルタイムドメインで動作中の場合には、検出した処理を回避せず、検出した処理を続行する(S803)。一方、ドメイン切り替え検知部105は、通信先のCPUがリアルタイムドメインで動作中だった場合には、処理をS801に進める。
S801で、回避可能判定部104は、対象処理検出部103により検出された処理要求の処理が回避可能か否かを判定する。回避可能判定部104は、回避可能か否かを、回避手段管理テーブル102内に登録されている、検出された処理に対する回避確認処理情報が示す処理によって判定する。S801の処理の詳細については、図9を用いて後述する。回避可能判定部104は、回避可能であると判定した場合には、処理をS802に進める。
S802で、対象処理検出部103は、検出した処理要求を破棄する。また、図9を用いて後述する回避対応処理が実行される。一方、回避可能判定部104は、回避可能でないと判定した場合には、処理をS803に進める。S803の処理については、上述した通りである。
以上の処理により、ノンリアルタイムドメインで動作中のCPUがリアルタイムドメインで動作中のCPUによって不必要に待たされる時間を削減し、システムのスループットを向上させることができる。
図9は、回避手段管理テーブル102のデータ構造の一例を示す図である。回避手段管理テーブル102は、検出対象情報901、回避確認処理情報902、回避対応処理情報903、有効・無効フラグ904の、4つの情報を含む。なお、回避手段管理テーブル102は、管理情報の一例である。
検出対象情報901は、対象処理検出部103により検出された処理要求の処理の処理情報と照合するための情報である。検出対象情報901が示す情報に対応する処理が検出され、かつ、有効・無効フラグ904が有効になっている場合は、回避確認処理情報902が示す処理(回避確認処理)、回避対応処理情報903が示す処理(回避対応処理)が実行される。
回避確認処理情報902は、検出対象によって異なる。ページテーブルエントリ変更開始通知が検出された場合、回避可能判定部104は、書き換えられるページテーブルエントリがどのグループに属するかで回避可能か否かを判定する。より具体的に説明すると、回避可能判定部104は、ノンリアルタイムドメインのユーザ空間上、又はカーネル空間上のページテーブルエントリの場合には回避可能であると判定し、それ以外の場合は回避不可能と判定する。即ち、回避可能判定部104は、ページテーブルエントリが予め定められた条件を満たしているか否かに応じて、回避可能か否かを判定する。回避可能判定部104が回避確認処理情報902が示す処理によって回避可能と判定した場合、通常の処理(検出された処理要求の処理)の代わりに回避対応処理情報903が示す処理が実行される。より具体的には、ページテーブルエントリ書き換え処理に対応する回避対応処理として、ハイパバイザ603は、処理依頼元のCPU204に対して、ページテーブルエントリ変更承認通知を返す。そして、ハイパバイザ603は、ページテーブルエントリ変更完了通知の有効・無効フラグ906の有効化を行う。
検出対象情報901は、対象処理検出部103により検出された処理要求の処理の処理情報と照合するための情報である。検出対象情報901が示す情報に対応する処理が検出され、かつ、有効・無効フラグ904が有効になっている場合は、回避確認処理情報902が示す処理(回避確認処理)、回避対応処理情報903が示す処理(回避対応処理)が実行される。
回避確認処理情報902は、検出対象によって異なる。ページテーブルエントリ変更開始通知が検出された場合、回避可能判定部104は、書き換えられるページテーブルエントリがどのグループに属するかで回避可能か否かを判定する。より具体的に説明すると、回避可能判定部104は、ノンリアルタイムドメインのユーザ空間上、又はカーネル空間上のページテーブルエントリの場合には回避可能であると判定し、それ以外の場合は回避不可能と判定する。即ち、回避可能判定部104は、ページテーブルエントリが予め定められた条件を満たしているか否かに応じて、回避可能か否かを判定する。回避可能判定部104が回避確認処理情報902が示す処理によって回避可能と判定した場合、通常の処理(検出された処理要求の処理)の代わりに回避対応処理情報903が示す処理が実行される。より具体的には、ページテーブルエントリ書き換え処理に対応する回避対応処理として、ハイパバイザ603は、処理依頼元のCPU204に対して、ページテーブルエントリ変更承認通知を返す。そして、ハイパバイザ603は、ページテーブルエントリ変更完了通知の有効・無効フラグ906の有効化を行う。
回避対応処理情報903が示す処理の結果、CPU204に対してページテーブルエントリ変更承認通知が返ると、CPU204は、ページテーブルエントリ変更処理609、TLB無効化処理610を行う。そして、CPU204は、ページテーブルエントリ変更完了通知611をハイパバイザ603に送る。
ここで、先ほどのページテーブルエントリ変更開始通知によって回避手段管理テーブル102内のページテーブルエントリ変更完了通知の有効・無効フラグ906が有効化されている。そのため、本処理として、CPU204は、回避手段管理テーブル102内に登録された処理である、ページテーブルエントリ変更完了通知の無効化処理905を実行する。
この結果、CPU204は、リアルタイムドメインで動作中のCPU201の処理が終わるのを待機せずとも、次の処理を継続することが可能となる。
ここで、先ほどのページテーブルエントリ変更開始通知によって回避手段管理テーブル102内のページテーブルエントリ変更完了通知の有効・無効フラグ906が有効化されている。そのため、本処理として、CPU204は、回避手段管理テーブル102内に登録された処理である、ページテーブルエントリ変更完了通知の無効化処理905を実行する。
この結果、CPU204は、リアルタイムドメインで動作中のCPU201の処理が終わるのを待機せずとも、次の処理を継続することが可能となる。
<その他の実施形態>
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア(プログラム)を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ(又はCPUやMPU等)がプログラムを読み出して実行する処理である。
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア(プログラム)を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ(又はCPUやMPU等)がプログラムを読み出して実行する処理である。
以上、上述した各実施形態によれば、マルチコア、かつ、デュアルカーネル方式を採用した環境において、リアルタイム性能を低下させずにスループットを向上させることができる。
以上、本発明の好ましい形態について詳述したが、本実施形態は係る特定の実施形態に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形・変更が可能である。
Claims (11)
- 複数の処理実行手段を有する情報処理装置であって、
前記複数の処理実行手段による処理を連携する制御手段を有し、
前記制御手段は、
優先処理を実行中の第1の処理実行手段に対して非優先処理を実行する第2の処理実行手段から発行された処理要求を検出する検出手段と、
前記検出手段により前記処理要求が検出された場合、前記処理要求の処理が回避可能であるか否かを判定する判定手段と、
前記判定手段により回避可能と判定された場合、前記処理要求に対する回避対応処理を実行する実行手段と、
を有する情報処理装置。 - 前記判定手段は、前記処理要求の処理の処理情報に基づいて処理情報毎に回避確認処理情報が関連付けられている管理情報を参照し、前記処理要求の処理の処理情報に関連付けられている回避確認処理情報が示す回避確認処理の結果に応じて前記処理要求の処理が回避可能であるか否かを判定する請求項1に記載の情報処理装置。
- 前記管理情報には、処理情報毎に回避確認処理情報と回避対応処理情報とが関連付けられており、
前記実行手段は、前記判定手段により回避可能と判定された場合、前記処理要求の処理の処理情報に関連付けられている回避対応処理情報が示す回避対応処理を実行する請求項2に記載の情報処理装置。 - 前記制御手段は、前記判定手段により回避可能でないと判定された場合、前記処理要求の処理を続行する続行手段を更に有する請求項1乃至3の何れか1項に記載の情報処理装置。
- 前記制御手段は、前記検出手段により前記処理要求が検出された場合、前記第1の処理実行手段が優先処理と、非優先処理とのどちらの処理を実行しているかを判定する処理判定手段を更に有し、
前記判定手段は、前記処理判定手段により前記第1の処理実行手段が優先処理を実行していると判定された場合、前記処理要求の処理が回避可能であるか否かを判定する請求項1乃至4の何れか1項に記載の情報処理装置。 - 前記検出手段は、前記第1の処理実行手段に対して前記第2の処理実行手段から発行された割り込み処理に関する前記処理要求を検出する請求項1乃至5の何れか1項に記載の情報処理装置。
- 前記制御手段は、処理実行手段が優先処理を実行するか又は非優先処理を実行するかの切り換えを検知する切り換え検知手段を更に有し、
前記処理実行手段は、前記切り換え検知手段により検知された前記切り替えに応じて処理を実行する請求項1乃至6の何れか1項に記載の情報処理装置。 - 前記処理実行手段は、他の処理実行手段との間で同期を要する処理を実行する請求項1乃至7の何れか1項に記載の情報処理装置。
- 前記処理実行手段は、CPUであり、
前記制御手段は、複数のCPUの処理を連携するハイパバイザである請求項1乃至8の何れか1項に記載の情報処理装置。 - 複数の処理実行手段を有する情報処理装置が実行する情報処理方法であって、
前記複数の処理実行手段による処理を連携する制御ステップを含み、
前記制御ステップは、
優先処理を実行中の第1の処理実行手段に対して非優先処理を実行する第2の処理実行手段から発行された処理要求を検出する検出ステップと、
前記検出ステップにより前記処理要求が検出された場合、前記処理要求の処理が回避可能であるか否かを判定する判定ステップと、
前記判定ステップにより回避可能と判定された場合、前記処理要求に対する回避対応処理を実行する実行ステップと、
を含む情報処理方法。 - 複数の処理実行手段を有するコンピュータに、
前記複数の処理実行手段による処理を連携する制御ステップを実行させ、
前記制御ステップは、
優先処理を実行中の第1の処理実行手段に対して非優先処理を実行する第2の処理実行手段から発行された処理要求を検出する検出ステップと、
前記検出ステップにより前記処理要求が検出された場合、前記処理要求の処理が回避可能であるか否かを判定する判定ステップと、
前記判定ステップにより回避可能と判定された場合、前記処理要求に対する回避対応処理を実行する実行ステップと、
を含むプログラム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2014075544A JP2015197802A (ja) | 2014-04-01 | 2014-04-01 | 情報処理装置、情報処理方法及びプログラム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2014075544A JP2015197802A (ja) | 2014-04-01 | 2014-04-01 | 情報処理装置、情報処理方法及びプログラム |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2015197802A true JP2015197802A (ja) | 2015-11-09 |
Family
ID=54547439
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2014075544A Pending JP2015197802A (ja) | 2014-04-01 | 2014-04-01 | 情報処理装置、情報処理方法及びプログラム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2015197802A (ja) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113419820A (zh) * | 2021-07-02 | 2021-09-21 | 广州市品高软件股份有限公司 | 实时虚拟机的部署方法和云平台 |
JP2021530760A (ja) * | 2018-06-20 | 2021-11-11 | 東莞市李群自動化技術有限公司 | 分散型マルチノード制御システム及び方法 |
-
2014
- 2014-04-01 JP JP2014075544A patent/JP2015197802A/ja active Pending
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2021530760A (ja) * | 2018-06-20 | 2021-11-11 | 東莞市李群自動化技術有限公司 | 分散型マルチノード制御システム及び方法 |
JP7507098B2 (ja) | 2018-06-20 | 2024-06-27 | 東莞市李群自動化技術有限公司 | 分散型マルチノード制御システム及び方法 |
CN113419820A (zh) * | 2021-07-02 | 2021-09-21 | 广州市品高软件股份有限公司 | 实时虚拟机的部署方法和云平台 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6944983B2 (ja) | ハイブリッドメモリ管理 | |
US20200285578A1 (en) | Software-transparent hardware predictor for core-to-core data transfer optimization | |
US9037753B2 (en) | Automatic pinning and unpinning of virtual pages for remote direct memory access | |
TWI722010B (zh) | 用以減少核心至核心資料轉移最佳化指令之性能反轉的低負擔硬體預測器、設備及方法 | |
US9003082B2 (en) | Information processing apparatus, arithmetic device, and information transferring method | |
US7533198B2 (en) | Memory controller and method for handling DMA operations during a page copy | |
US8924624B2 (en) | Information processing device | |
US10713083B2 (en) | Efficient virtual I/O address translation | |
US9632901B2 (en) | Page resolution status reporting | |
US11620233B1 (en) | Memory data migration hardware | |
US20150220481A1 (en) | Arithmetic processing apparatus, information processing apparatus, and control method of arithmetic processing apparatus | |
US9043520B2 (en) | Interrupt control method and multicore processor system | |
JP2016513846A (ja) | ネットワークを介したメモリー共有 | |
US20090164749A1 (en) | Coupled symbiotic operating systems | |
WO2015180598A1 (zh) | 对存储设备的访问信息处理方法和装置、*** | |
US9921875B2 (en) | Zero copy memory reclaim for applications using memory offlining | |
US20130145202A1 (en) | Handling Virtual-to-Physical Address Translation Failures | |
US8751724B2 (en) | Dynamic memory reconfiguration to delay performance overhead | |
US9075795B2 (en) | Interprocess communication | |
JP2015197802A (ja) | 情報処理装置、情報処理方法及びプログラム | |
US9507724B2 (en) | Memory access processing method and information processing device | |
JP5254710B2 (ja) | データ転送装置、データ転送方法およびプロセッサ | |
US20230153249A1 (en) | Hardware translation request retry mechanism | |
CN115087961B (zh) | 用于相干及非相干存储器请求的仲裁方案 | |
CN116069695A (zh) | 使用***设备进行存储器访问跟踪 |