JP5454686B2 - マルチコアプロセッサシステム、復元プログラム、および復元方法 - Google Patents
マルチコアプロセッサシステム、復元プログラム、および復元方法 Download PDFInfo
- Publication number
- JP5454686B2 JP5454686B2 JP2012522393A JP2012522393A JP5454686B2 JP 5454686 B2 JP5454686 B2 JP 5454686B2 JP 2012522393 A JP2012522393 A JP 2012522393A JP 2012522393 A JP2012522393 A JP 2012522393A JP 5454686 B2 JP5454686 B2 JP 5454686B2
- Authority
- JP
- Japan
- Prior art keywords
- processor
- context
- core
- stall
- data
- 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.)
- Expired - Fee Related
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1415—Saving, restoring, recovering or retrying at system level
- G06F11/1441—Resetting or repowering
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/4401—Bootstrapping
- G06F9/4405—Initialisation of multiprocessor systems
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Computer Security & Cryptography (AREA)
- Retry When Errors Occur (AREA)
Description
本発明は、複数のプロセッサ(マルチコアプロセッサ)にプログラムを実行させるマルチコアプロセッサシステム、復元プログラム、および復元方法に関する。
従来、OS(Operating System)の初期起動時にOSの初期化データを主記憶の書込禁止領域に退避し、障害検出での再起動時にはOSを特定番地から再起動し退避済初期化データを使用して主記憶を復元する技術が開示されている。また、OSの初期起動後、主記憶の内容を主記憶の保存領域に退避し、再起動時に保存領域の内容を主記憶に復元する技術も開示されている(たとえば、下記特許文献1,2を参照。)。
しかしながら、上述した従来技術のソフトウェア制御で、マルチコアプロセッサシステムを適用した携帯電話等の組み込みシステムで運用しようとすると、運用中にメモリイメージを時々刻々と保護することとなり、オーバーヘッドの要因になるという問題がある。また、メモリ上に運用状態の多重保存をおこなうと、必要メモリ量の増大化を招いてしまい、大型化により携帯性を損ねてしまうという問題がある。
本発明は、上述した従来技術による問題点を解消するため、運用中のウォームスタートを効率的に実現することができるマルチコアプロセッサシステム、復元プログラム、および復元方法を提供することを目的とする。
上述した課題を解決し、目的を達成するため、共有メモリにアクセスするマルチコアプロセッサのうちマスタプロセスを実行する第1のプロセッサが前記共有メモリ内の前記マスタプロセスに関するコンテキストにアクセスしたことを検出し、前記コンテキストへのアクセスが検出される都度、前記コンテキストのうちアクセス先を含む区画での検出前後の差分データの組み合わせを保存し、前記第1のプロセッサがストールした場合、前記マルチコアプロセッサのうち前記第1のプロセッサ以外の他のプロセッサ群の中から選ばれた第2のプロセッサにより、前記ストール前の前記区画ごとの前記差分データの組み合わせに基づいて、前記ストール前のコンテキストを復元し、前記第1のプロセッサがストールした場合、前記第2のプロセッサが実行する前記マスタプロセスを、前記第2のプロセッサにより生成し、復元された前記ストール前のコンテキストと生成されたマスタプロセスとを、前記第2のプロセッサにより関連付けるマルチコアプロセッサシステム、復元プログラム、および復元方法を、一例として提供する。
上記マルチコアプロセッサシステム、復元プログラム、および復元方法によれば、運用中のウォームスタートを効率的に実現することができるという効果を奏する。
以下に添付図面を参照して、本発明にかかるマルチコアプロセッサシステム、復元プログラム、および復元方法の実施の形態を詳細に説明する。
以下に示す実施の形態では、組み込み型端末、特に多くの携帯端末に標準的に実装されている暗号エンジンや、マルチコアプロセッサに実装されているスヌープコントローラを用いることで、OSのマスタ機能を保護し、障害発生時にコールドスタートすることなくシステムを継続運用する。
(システム構成の一例)
図1は、マルチコアプロセッサシステムのシステム構成例を示すブロック図である。図1において、マルチコアプロセッサシステム100は、マルチコアプロセッサ101と、スヌープコントローラ102と、ウォッチドッグタイマ103と、暗号エンジン104と、共有メモリ105とが、バス106を介して通信可能に接続されている。
図1は、マルチコアプロセッサシステムのシステム構成例を示すブロック図である。図1において、マルチコアプロセッサシステム100は、マルチコアプロセッサ101と、スヌープコントローラ102と、ウォッチドッグタイマ103と、暗号エンジン104と、共有メモリ105とが、バス106を介して通信可能に接続されている。
マルチコアプロセッサ101は、複数のCPU(Central Processing Unit)(図では、例として4個)により構成されている。各CPU#0〜CPU#3にはキャッシュメモリ(以下、単に、「キャッシュ」)Cが設けられている。また、各CPU#0〜CPU#3は、特権モードプログラムHを実行する。特権モードプログラムHとは、たとえば、ハイパーバイザであり、特権により各々のCPU#0〜CPU#3に直接アクセスすることができるプログラムである。
また、各CPU#0〜CPU#3は、カーネルK、マスタプロセスMP、およびスレーブプロセスSPを実行する。カーネルKは、OSの中核となるプログラムであり、メモリ管理やファイル管理、マルチコアプロセッサ101の管理を実行する。また、カーネルKは、マスタプロセスMPを生成する。
マスタプロセスMPは、スレーブプロセスSPを管理するプログラムである。マスタプロセスMPは、マルチコアプロセッサ101のうち1つのCPU(図1では、例としてCPU#0)でのみ生成されて実行される。マスタプロセスMPを実行するCPUをマスタCPUと称す。初期起動時では、マスタCPUは、CPU#0とするが、本実施の形態によりマイグレーションをおこなったり、その他既存の負荷分散をおこなうことで、他のCPU#1〜CPU#3に移行することがある。また、マルチコアプロセッサ101のうちマスタCPU以外の残余のCPUをスレーブCPUと称す。
スレーブプロセスSPは、マルチコアプロセッサ101で実行されるプログラムである。スレーブプロセスSPとしては、具体的には、たとえば、スレッド生成(スケジューリング)、割込み処理、システムリソースアクセス(ドライバ)といったシステムプロセスが挙げられる。上述したように、これらのスレーブプロセスSPの情報管理は、マスタプロセスMPが握っており、マスタプロセスMPはこれらの資源管理を共有メモリ105上のシステム管理領域に書き込まれたマスタコンテキストを用いて監視する。
また、スレーブプロセスSPは、自身の状態の変化をマスタプロセスMPに通知する。マスタプロセスMPに応答がない場合、資源障害が発生したとして、タイムアウトが発生する。このあと、従来では、ウォッチドッグタイマ103を通じて、マルチコアプロセッサシステム100をハングさせるか、リセット操作をおこなうことになるが、本実施の形態では、マスタプロセスMPを復元する。
なお、マスタプロセスMPが動作しているカーネルKおよびプロセス(少なくともマスタプロセスMPを含む)をマスタOSと称す。また、カーネルKおよびスレーブプロセスSPをスレーブOSと称す。なお、OSにはアプリケーションソフトウェア(以下、単に、「アプリ」)APに共通なライブラリも含まれているが説明の簡略化のため、ここでは省略する。また、マスタOSおよびスレーブOS上では、各種アプリAPが動作する。
スヌープコントローラ102は、マルチコアプロセッサ101に接続されており、各CPU#0〜CPU#3のキャッシュCを監視する。あるキャッシュC内の値が更新されると、スヌープコントローラ102は、他のキャッシュCに対してコヒーレント処理をおこなう。具体的には、スヌープコントローラ102は、キャッシュCを通過するメモリアクセスをすべて検出する。したがって、その検出されたメモリアクセスがキャッシュC内のコヒーレント対応領域に対するメモリアクセスである場合には、スヌープコントローラ102は、上述したコヒーレント処理を実行する。
ウォッチドッグタイマ103は、周期的にマルチコアプロセッサ101の生存状態を確認し、不正なセグメントアクセスに対するプログラムカウンタの停止や暴走状態から復帰するために、応答のないCPU#0〜CPU#3に対してリセットシグナルを発行する。
暗号エンジン104は、対象データの暗号化処理や暗号化データの復号処理を実行するハードウェアである。暗号エンジン104は、携帯型端末に標準装備されているハードウェアである。暗号エンジン104は、通常個人データの秘匿のため共有メモリ105が接続されたバス106上に設置され、暗号化・復号化をおこなうユニットである。
暗号化にはAES(Advanced Encryption Standard)やDES(Data Encryption Standard)などが用いられるが、通常ハフマン符号化などによるデータ可逆圧縮機能が搭載されている。
なお、本実施の形態では、暗号エンジン104での暗号化および復号化の処理を省略して説明するが、圧縮データは暗号化され、暗号化データは圧縮データに復号されて、そののちに伸張されるものとする。また、圧縮と伸張のみで暗号化処理と復号処理を実行しなくてもよい。
運用中、スヌープコントローラ102によるメモリ書き換えの検出、あるいは特権モードプログラムHがプロセスの変化(マスタプロセスMPによるシステム管理領域の更新)を検出した場合に、更新されたデータを、暗号エンジン104の可逆圧縮機能を用いて圧縮して、圧縮データとして共有メモリ105内の保護領域にデータバックアップする。
また、暗号エンジン104は、圧縮データのハッシュ値を算出する。これにより、データが更新されて圧縮データおよびそのハッシュ値が得られた場合、保存済みのハッシュ値と一致すれば、更新前後で圧縮データが同じであることがわかる。一方、ハッシュ値が不一致となった場合は、更新前後で圧縮データが異なることとなる。
更新前後で圧縮データが異なる場合は、暗号エンジン104は、更新前の旧圧縮データおよびそのハッシュ値と、更新後の新圧縮データおよびそのハッシュ値とを共有メモリ105内の保護領域に保存する。更新前後で圧縮データが同一である場合は、更新後の新圧縮データおよびそのハッシュ値を保存しない。これにより、常に最新の2つの圧縮データおよびそのハッシュ値が保存されていることとなる。なお、暗号エンジン104は、ハードウェアであるため性能の影響がない。
共有メモリ105は、マルチコアプロセッサ101が共有する記憶領域であり、システム管理領域151と保護領域152と一般領域153とを有する。システム管理領域151は、マスタOS、スレーブOS、および特権モードプログラムHが読み書きできる領域である。システム管理領域151には、マスタプロセスMPに関するマスタコンテキストMCが保存される。
マスタコンテキストMCとは、マスタプロセスMPが管理するスタックポインタやレジスタの値、プログラムカウンタの値、生成したスレーブプロセスSPの種類、スレーブプロセスSPの生成先CPU番号といったマスタプロセスMPが得る固有な情報である。また、マスタコンテキストMCは、複数の区画に分割されている。具体的には、たとえば、キャッシュライン、ページ、バンクといった単位領域ごとに区分されて保存される。
保護領域152は、特権モードプログラムHにより圧縮された圧縮データとそのハッシュ値を保存する領域である。本実施の形態では、ダブルバッファ方式を採用する。ダブルバッファ方式とは、同一箇所のデータに対する圧縮データおよびそのハッシュ値を時系列で2個保存する方式である。
マスタコンテキストMCは、単位領域ごとに区分されているため、マスタコンテキストMC内のある単位領域のデータが更新されると、圧縮情報160として、その更新前の圧縮データ(旧圧縮データ)およびそのハッシュ値(旧ハッシュ値)と、更新後の圧縮データ(新圧縮データ)およびそのハッシュ値(新ハッシュ値)を保存する。
一般領域153は、マスタOS、スレーブOS、アプリAPがデータ保存する領域である。具体的には、マスタOSおよびスレーブOSは、システム管理領域151に保存すべきデータ以外のデータを一般領域153に保存する。アプリAPはその演算結果などを一般領域153に保存する。
(保護領域152の更新例)
図2は、保護領域152内の圧縮情報160の更新例を示す説明図である。図2では、例としてマスタコンテキストMCが8分割されて区画データMC1〜MC8としてシステム管理領域151に保存されるものとする。
図2は、保護領域152内の圧縮情報160の更新例を示す説明図である。図2では、例としてマスタコンテキストMCが8分割されて区画データMC1〜MC8としてシステム管理領域151に保存されるものとする。
(A)は、システム起動時の状態を示している。システム起動時では、マスタコンテキストMCの全保存領域にアクセスするため、全保存領域で差分が生じる。したがって、区画データMC1〜MC8がマスタコンテキストMCとして保存される。そして、特権モードプログラムHからの指示により、区画データMC1〜MC8ごとに、暗号エンジン104が圧縮して圧縮データmc1〜mc8を生成する。また、暗号エンジン104は、圧縮データmc1〜mc8のハッシュ値h1〜h8を生成する。暗号エンジン104は、生成された圧縮データmc1〜mc8とそのハッシュ値h1〜h8を保護領域152に保存する。
(B)において、(A)の状態からマスタコンテキストMCのうち区画データMC1が更新されて区画データMC11になったとする。すなわち、メモリアクセス先が区画データMC1内のアドレスであったとする。この場合、暗号エンジン104は、特権モードプログラムHからの指示により、区画データMC11を圧縮して圧縮データmc11を生成する。また、暗号エンジン104は、圧縮データmc11のハッシュ値h11を生成する。
そして、ハッシュ値h1とハッシュ値h11とを比較する。h1=h11の場合は、圧縮データmc11およびそのハッシュ値h11は保存されない。一方、h1≠h11の場合は、区画データMC1と区画データMC11とは差分があることとなり、圧縮データmc11およびそのハッシュ値h11は保存される。(B)では、h1≠h11として、圧縮データmc11およびそのハッシュ値h11が保存されるものとする。また、今回更新されていない区画データMC2〜MC8については、暗号エンジン104は圧縮もハッシュ値算出もしない。
(C)において、(B)の状態からマスタコンテキストMCのうち区画データMC11が更新されて区画データMC12になったとする。すなわち、メモリアクセス先が区画データMC12内のアドレスであったとする。この場合、暗号エンジン104は、特権モードプログラムHからの指示により、区画データMC12を圧縮して圧縮データmc12を生成する。また、暗号エンジン104は、圧縮データmc12のハッシュ値h12を生成する。
そして、ハッシュ値h11とハッシュ値h12とを比較する。h11=h12の場合は、圧縮データmc12およびそのハッシュ値h12は保存されない。一方、h11≠h12の場合は、区画データMC11と区画データMC12とは差分があることとなり、圧縮データmc12およびそのハッシュ値h12は保存される。(C)では、h11≠h12として、圧縮データmc12およびそのハッシュ値h12が保存されるものとする。また、今回更新されていない区画データMC2〜MC8については、暗号エンジン104は圧縮もハッシュ値算出もしない。
(D)において、(C)の状態からマスタコンテキストMCのうち区画データMC5が障害により更新されて区画データMC51になったとする。すなわち、メモリアクセス先が区画データMC51内のアドレスであったとする。この場合、暗号エンジン104は、特権モードプログラムHからの指示により、区画データMC51を圧縮して圧縮データmc51を生成する。また、暗号エンジン104は、圧縮データmc51のハッシュ値h51を生成する。
そして、ハッシュ値h5とハッシュ値h51とを比較する。障害により区画データMC5は区画データMC51に更新されている。したがって、h5≠h51となり、区画データMC5と区画データMC51とは差分があり、圧縮データmc51およびそのハッシュ値h51は保存される。この場合、マスタCPUがストールしているため、スレーブCPUの特権モードプログラムHからの指示により、暗号エンジン104は、障害箇所である区画データMC51に対する保護領域152に保存されている圧縮データmc5,mc51のうち、障害による更新前の圧縮データmc5を伸張して、区画データMC5を生成する。
そして、(E)において、障害発生時のマスタコンテキストMC、具体的には、(D)のマスタコンテキストMCである区画データMC12,MC2〜MC4,MC51,MC6〜MC8のうち、障害となる区画データMC51を伸張した区画データMC5に置き換えて、マスタコンテキストMC(区画データMC12,MC2〜MC8)を復元する。この復元後のマスタコンテキストMCは、(D)での障害発生前の状態、すなわち、(C)の状態となる。また、(D)における更新後の圧縮データmc51とそのハッシュ値h51も保護領域152から削除されて、(C)と同一の状態に復元される。
(圧縮データおよびハッシュ値の更新処理)
図3は、圧縮情報160の更新処理手順を示すフローチャートである。まず、スヌープコントローラ102は、カーネルK、マスタプロセスMP、スレーブプロセスSPからのキャッシュCを通過するメモリアクセスを検出する(ステップS301)。なお、メモリアクセスは、カーネルK、マスタプロセスMP、スレーブプロセスSPを介してアプリAPからも行われる。
図3は、圧縮情報160の更新処理手順を示すフローチャートである。まず、スヌープコントローラ102は、カーネルK、マスタプロセスMP、スレーブプロセスSPからのキャッシュCを通過するメモリアクセスを検出する(ステップS301)。なお、メモリアクセスは、カーネルK、マスタプロセスMP、スレーブプロセスSPを介してアプリAPからも行われる。
つぎに、スヌープコントローラ102は、メモリアクセスを検出すると、そのメモリアクセスがキャッシュC内のコヒーレント対応領域であるか否かを判断する(ステップS302)。コヒーレント対応領域でない場合(ステップS302:No)、ステップS301に戻る。一方、コヒーレント対応領域である場合(ステップS302:Yes)、スヌープコントローラ102は、キャッシュコヒーレントをおこない(ステップS303)、ステップS301に戻る。
特権モードプログラムHは、スヌープコントローラ102によるメモリアクセスを監視している。そして、ステップS301において、スヌープコントローラ102が対象データのメモリアクセスを検出した場合、特権モードプログラムHは、共有メモリ105内のシステム管理領域151へのメモリアクセスを待ち受ける(ステップS304:No)。対象データのメモリアクセスがシステム管理領域151へのメモリアクセスである場合(ステップS304:Yes)、特権モードプログラムHは、対象データのキャッシュフラッシュをおこなう(ステップS305)。
この場合、キャッシュCに書き込まれた対象データは、ライトスルーにより、共有メモリ105にも書き込まれる。たとえば、マスタプロセスMPによるシステム管理領域151内のマスタコンテキストMCが更新される場合には、キャッシュCの非コヒーレント対応領域に対象データが書き込まれるとともに、マスタコンテキストMCにも書き込まれる。そして、キャッシュCの非コヒーレント対応領域はキャッシュフラッシュされる。このあと、特権モードプログラムHは、暗号エンジン104を起動して、対象データの圧縮指示をおこなう(ステップS306)。
また、マスタプロセスMPによるシステム管理領域151内へのアクセスではなく、他のプログラム、たとえば、アプリAPからのアクセスであっても、同様な処理となる。すなわち、特権モードプログラムHは、メモリアクセス元が、どんなプログラムであるかを問わず、ステップS304〜S306の処理を実行することとなる。
暗号エンジン104は、特権モードプログラムHから圧縮指示を受けると、アクセス先に書き込まれた対象データを圧縮する(ステップS307)。たとえば、図2に示したように、マスタコンテキストMCの区画データMC1が対象データである場合、区画データMC1が区画データMC11に更新されるため、暗号エンジン104は、区画データMC11を圧縮して圧縮データmc11とする。
つぎに、暗号エンジン104は、圧縮データのハッシュ値を算出する(ステップS308)。そして、暗号エンジン104は、アクセス先となった区画データについて前回圧縮された圧縮データと今回圧縮された圧縮データとに差分があるか否かを判断する(ステップS309)。具体的には、旧圧縮データのハッシュ値と新圧縮データのハッシュ値が同一であるか否かを判断する。同一であれば差分がないこととなる。
一方、同一でない場合、差分があることとなる。差分がない場合(ステップS309:No)、暗号エンジン104の処理を終了する。一方、差分がある場合(ステップS309:Yes)、暗号エンジン104は、図2に示したように、新圧縮データとそのハッシュ値とを保護領域152に格納する(ステップS310)。
このように、図3に示したフローチャートでは、システム管理領域151へのメモリアクセスが正常な更新処理であるかシステム管理領域151を障害するメモリアクセスであるかを問わず、システム管理領域151内のデータが更新されると、アクセス先における最新の圧縮データおよびそのハッシュ値と、1つ前の旧圧縮データおよびそのハッシュ値が保存されることとなる。
(復元処理)
図4は、復元処理手順を示すフローチャートである。まず、ウォッチドッグタイマ103がマスタCPUを監視する(ステップS401:No)。ウォッチドッグタイマ103は、マスタCPUのストールやハングにより異常を検出した場合(ステップS401:Yes)、特権モードプログラムHは、マスタCPUの異常検出の通知を受けて、スレーブCPUにスレーブOSの一時停止指示を通知する(ステップS402)。一時停止指示を受けたスレーブCPUは、そのスレーブOSを一時停止させる。
図4は、復元処理手順を示すフローチャートである。まず、ウォッチドッグタイマ103がマスタCPUを監視する(ステップS401:No)。ウォッチドッグタイマ103は、マスタCPUのストールやハングにより異常を検出した場合(ステップS401:Yes)、特権モードプログラムHは、マスタCPUの異常検出の通知を受けて、スレーブCPUにスレーブOSの一時停止指示を通知する(ステップS402)。一時停止指示を受けたスレーブCPUは、そのスレーブOSを一時停止させる。
このあと、マスタCPUはストールしているため(以下、ストールしたマスタCPUを「ストールCPU」と称す。)、特権モードプログラムHは、スレーブOSの一時停止指示を受けたスレーブCPUの中から、ストールCPUを復元させる復元元CPUを選択する(ステップS403)。具体的には、たとえば、スレーブCPUのうち、CPU番号が若いCPUを復元元CPUに選択する。図1の例では、CPU#0がストールCPUになるため、CPU#1が復元元CPUとなる。また、スレーブCPUのうち最も低負荷のCPUを復元元CPUに選択する。CPUの負荷は、スレーブOSまたはスレーブCPUの特権モードプログラムHが監視することで得ることができる。
そして、復元元CPUが選択されると、復元元CPUの特権モードプログラムHは、マスタコンテキストMC内の障害箇所となる区画データを特定する(ステップS404)。具体的には、復元元CPUの特権モードプログラムHは、ストールにより障害されたかどうかを特定せず、またその必要もない。ウォッチドッグタイマ103による異常検出があった場合、図2に示したように、メモリアクセス検出により、マスタコンテキストMCのある区画データが圧縮されて新圧縮データとそのハッシュ値が保存される。
復元元CPUの特権モードプログラムHは、このときに保存された新圧縮データの圧縮元の区画データを障害箇所として特定することとなる。復元元CPUの特権モードプログラムHは、暗号エンジン104に対し、特定された障害箇所である区画データの新旧圧縮データのうち旧圧縮データを抽出して(ステップS405)、抽出された旧圧縮データを伸張する(ステップS406)。たとえば、図2の(D)に示したように、障害箇所が区画データMC51の場合は、その新圧縮データmc51ではなく、1つ前の旧圧縮データmc5を抽出することとなる。
復元元CPUの特権モードプログラムHは、マスタコンテキストMCの障害箇所を伸張された区画データで上書きすることで、マスタコンテキストMCをストール前の状態に復元する(ステップS407)。たとえば、図2の(D)に示したように、抽出された圧縮データmc5を区画データMC5に伸張し、図2の(D)のマスタコンテキストMCの区画データMC51に伸張された区画データMC5を上書きする(図2の(E)参照。)。
このあと、復元元CPUの特権モードプログラムHは、復元元CPUで一時停止中のスレーブOS内のカーネルKが持つプロセステーブルを更新する(ステップS408)。具体的には、復元後のマスタコンテキストMCを指定するアドレスをプロセステーブルに追加する。なお、プロセステーブルは、復元元CPU内のキャッシュCまたはシステム管理領域に格納されている。
そして、復元元CPUの特権モードプログラムHは、復元元CPUのスレーブOSのみ一時停止を解除して、復元元CPUのスレーブOSのカーネルKにマスタプロセスMPの生成指示を通知する(ステップS409)。これにより、復元元CPUでマスタプロセスMPが生成されるため、更新後のプロセステーブル内の復元後のマスタコンテキストMCを指定するアドレスと関連付けされる。このようにして、マスタプロセスMPが復元元CPUにマイグレートされたこととなる。
このあと、復元元CPUの特権モードプログラムHは、存命している残余のスレーブCPUのスレーブOSの一時停止の解除指示を通知する(ステップS410)。これにより、ストールCPU以外のスレーブCPUでOSの動作が再開することとなる。また、OSの動作が再開することにより、その上位のアプリAPの動作も再開することとなる。
このように、マスタプロセスMPのマイグレートの完了後に、復元元CPUの特権モードプログラムHは、ストールCPUのリブートをおこなう(ステップS411)。これにより、復元処理が終了する。
図5は、復元後のシステム状態を示すブロック図である。図5では、CPU#1が復元元CPUとなっているため、CPU#1にマスタプロセスMPがマイグレートされている。また、ストールCPUであるCPU#0は、リブート直後には、OS、アプリAPが実行されていないが、復元後のマスタCPUであるCPU#1がスレーブOSの起動指示をすることで、CPU#0でカーネルKが起動する。また、その後、周知の負荷分散技術によりスレーブプロセスSPやアプリAPを割り当てることで、マルチコアプロセッサ101の負荷の均衡を図ることができる。
マスタプロセスMPやマスタCPUを保護する技術は多く開発されているが、いずれも、初期状態を保存しているものであり、動作中では、動的な変化状態を刻々保存するオーバーヘッドが大きいため、効率的な復元はできない。
これに対し、本実施の形態によれば、マルチコアプロセッサシステム100の動作中に、マスタCPUに異常が発生してストールした場合、マスタコンテキストMCをストール前の状態に復元して、スレーブCPUにマスタプロセスMPを移行することができる。したがって、システム全体をコールドスタートさせる必要はなく、ウォームスタートが可能となる。また、マスタプロセスMPに限らず、アプリAPの不正動作や異常動作によりマスタコンテキストMCが書き換えられた場合でも、同様にウォームスタートさせることができる。
特に、マルチコアプロセッサシステム100は、CPU数が多いため、チップ面積が必然的に広くなる。したがって、ガンマ線が照射されやすく、CPU内でのビット反転が発生する可能性がある。このようなビット反転によりマスタコンテキストMC内の値が狂った場合でも、ウォッチドッグタイマ103によりマスタCPUのストールが検出されるため、マスタプロセスMPの高速移行によるウォームスタートを実現することができる。
また、マスタコンテキストMCが更新される都度、更新された区画データについてのみ、新旧圧縮データとそのハッシュ値を保存しておくことで、マスタコンテキストMCを復元することができる。したがって、保護領域152のサイズを小さくすることができるため、その分システム管理領域151や一般領域153を大きくとることができる。
また、本マルチコアプロセッサシステム100を携帯端末に搭載する場合、携帯端末では据え置き型端末に比べて、必然的に高速起動が要求される。したがって、マスタCPUのストール発生後のウォームスタートにより、システム全体を再起動する必要はない。したがって、携帯端末の利便性の向上を図ることができる。
また、暗号エンジン104は、携帯電話、スマートフォン、ゲーム機、タブレットなどの携帯端末において通信認証やデータ保護のために標準装備されるハードウェアである。このような標準装備される暗号エンジン104を復元に流用することで、復元専用のハードウェアを搭載する必要がない。したがって、携帯端末の部品点数の低減化を図ることができ、機能増加にともなう大型化を防止することができる。
100 マルチコアプロセッサシステム
101 マルチコアプロセッサ
102 スヌープコントローラ
103 ウォッチドッグタイマ
104 暗号エンジン
105 共有メモリ
106 バス
151 システム管理領域
152 保護領域
153 一般領域
160 圧縮情報
AP アプリ
C キャッシュ
H 特権モードプログラム
MC マスタコンテキスト
MP マスタプロセス
SP スレーブプロセス
101 マルチコアプロセッサ
102 スヌープコントローラ
103 ウォッチドッグタイマ
104 暗号エンジン
105 共有メモリ
106 バス
151 システム管理領域
152 保護領域
153 一般領域
160 圧縮情報
AP アプリ
C キャッシュ
H 特権モードプログラム
MC マスタコンテキスト
MP マスタプロセス
SP スレーブプロセス
Claims (7)
- 共有メモリにアクセスするマルチコアプロセッサを有するマルチコアプロセッサシステムであって、
前記マルチコアプロセッサは、
前記マルチコアプロセッサのうちマスタプロセスを実行する第1のプロセッサが前記共有メモリ内の前記マスタプロセスに関するコンテキストにアクセスしたことを検出し、
前記コンテキストへのアクセスが検出される都度、前記コンテキストのうちアクセス先を含む区画での検出前後のデータを組み合わせた差分データを保存し、
前記第1のプロセッサがストールした場合、前記マルチコアプロセッサのうち前記第1のプロセッサ以外の他のプロセッサ群の中から選ばれた第2のプロセッサにより、前記ストール前の前記区画ごとの前記差分データの組み合わせに基づいて、前記ストール前のコンテキストを復元し、
前記第1のプロセッサがストールした場合、前記第2のプロセッサが実行する前記マスタプロセスを、前記第2のプロセッサにより生成し、
復元された前記ストール前のコンテキストと生成されたマスタプロセスとを、前記第2のプロセッサにより関連付ける、
ことを特徴とするマルチコアプロセッサシステム。 - 前記マルチコアプロセッサは、
前記マルチコアプロセッサ内の各キャッシュのコヒーレント処理を実行するキャッシュコヒーレンシー機構での前記共有メモリへのメモリアクセスの検出結果に基づいて、前記マスタプロセスに関するコンテキストにアクセスしたことを検出することを特徴とする請求項1に記載のマルチコアプロセッサシステム。 - 前記マルチコアプロセッサは、
前記差分データを圧縮し、
圧縮された圧縮差分データのハッシュ値を算出し、
算出された、前記コンテキストへのアクセス前後における同一箇所での前記圧縮差分データのハッシュ値どうしが、一致するか否かを判定し、
不一致と判定された場合、不一致と判定された前記圧縮差分データの組み合わせを保存し、
前記圧縮差分データを伸張し、
前記ストール前の前記圧縮差分データから伸張された差分データに基づいて、前記ストール前のコンテキストを復元することを特徴とする請求項1または2に記載のマルチコアプロセッサシステム。 - 前記マルチコアプロセッサは、
前記他のプロセッサ群の各々の負荷に基づいて、前記他のプロセッサ群の中から前記第2のプロセッサを決定し、
前記第1のプロセッサがストールした場合、決定された第2のプロセッサにより、前記ストール前の前記差分データに基づいて、前記ストール前のコンテキストを復元することを特徴とする請求項1または2に記載のマルチコアプロセッサシステム。 - 前記マルチコアプロセッサは、
前記第1のプロセッサのストール後に、前記第2のプロセッサにより、前記第1のプロセッサをリブートすることを特徴とする請求項1または2に記載のマルチコアプロセッサシステム。 - 共有メモリにアクセスするマルチコアプロセッサを有するマルチコアプロセッサシステムの復元プログラムであって、
前記マルチコアプロセッサに、
前記マルチコアプロセッサのうちマスタプロセスを実行する第1のプロセッサが前記共有メモリ内の前記マスタプロセスに関するコンテキストにアクセスしたことを検出し、
前記コンテキストへのアクセスが検出される都度、前記コンテキストのうちアクセス先を含む区画での検出前後のデータを組み合わせた差分データを保存し、
前記第1のプロセッサがストールした場合、前記マルチコアプロセッサのうち前記第1のプロセッサ以外の他のプロセッサ群の中から選ばれた第2のプロセッサにより、前記ストール前の前記区画ごとの前記差分データの組み合わせに基づいて、前記ストール前のコンテキストを復元し、
前記第1のプロセッサがストールした場合、前記第2のプロセッサが実行する前記マスタプロセスを、前記第2のプロセッサにより生成し、
復元された前記ストール前のコンテキストと生成されたマスタプロセスとを、前記第2のプロセッサにより関連付ける、
処理を実行させることを特徴とする復元プログラム。 - 共有メモリにアクセスするマルチコアプロセッサを有するマルチコアプロセッサシステムの復元方法であって、
前記マルチコアプロセッサが、
前記マルチコアプロセッサのうちマスタプロセスを実行する第1のプロセッサが前記共有メモリ内の前記マスタプロセスに関するコンテキストにアクセスしたことを検出し、
前記コンテキストへのアクセスが検出される都度、前記コンテキストのうちアクセス先を含む区画での検出前後のデータを組み合わせた差分データを保存し、
前記第1のプロセッサがストールした場合、前記マルチコアプロセッサのうち前記第1のプロセッサ以外の他のプロセッサ群の中から選ばれた第2のプロセッサにより、前記ストール前の前記区画ごとの前記差分データの組み合わせに基づいて、前記ストール前のコンテキストを復元し、
前記第1のプロセッサがストールした場合、前記第2のプロセッサが実行する前記マスタプロセスを、前記第2のプロセッサにより生成し、
復元された前記ストール前のコンテキストと生成されたマスタプロセスとを、前記第2のプロセッサにより関連付ける、
処理を実行することを特徴とする復元方法。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/JP2010/061192 WO2012001788A1 (ja) | 2010-06-30 | 2010-06-30 | マルチコアプロセッサシステム、復元プログラム、および復元方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPWO2012001788A1 JPWO2012001788A1 (ja) | 2013-08-22 |
JP5454686B2 true JP5454686B2 (ja) | 2014-03-26 |
Family
ID=45401543
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2012522393A Expired - Fee Related JP5454686B2 (ja) | 2010-06-30 | 2010-06-30 | マルチコアプロセッサシステム、復元プログラム、および復元方法 |
Country Status (2)
Country | Link |
---|---|
JP (1) | JP5454686B2 (ja) |
WO (1) | WO2012001788A1 (ja) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113467996B (zh) * | 2021-07-08 | 2024-04-19 | 咪咕音乐有限公司 | 数据库备份方法、装置、计算机设备及存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2006268204A (ja) * | 2005-03-23 | 2006-10-05 | Fujitsu Ltd | 共有メモリ装置、処理システム |
JP2008192028A (ja) * | 2007-02-07 | 2008-08-21 | Hitachi Ltd | ストレージ制御装置及びデータ管理方法 |
JP2009116699A (ja) * | 2007-11-07 | 2009-05-28 | Toyota Motor Corp | 情報処理システム |
JP2010061518A (ja) * | 2008-09-05 | 2010-03-18 | Nec Corp | データ保存装置及びデータ保存方法並びにプログラム |
-
2010
- 2010-06-30 WO PCT/JP2010/061192 patent/WO2012001788A1/ja active Application Filing
- 2010-06-30 JP JP2012522393A patent/JP5454686B2/ja not_active Expired - Fee Related
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2006268204A (ja) * | 2005-03-23 | 2006-10-05 | Fujitsu Ltd | 共有メモリ装置、処理システム |
JP2008192028A (ja) * | 2007-02-07 | 2008-08-21 | Hitachi Ltd | ストレージ制御装置及びデータ管理方法 |
JP2009116699A (ja) * | 2007-11-07 | 2009-05-28 | Toyota Motor Corp | 情報処理システム |
JP2010061518A (ja) * | 2008-09-05 | 2010-03-18 | Nec Corp | データ保存装置及びデータ保存方法並びにプログラム |
Also Published As
Publication number | Publication date |
---|---|
JPWO2012001788A1 (ja) | 2013-08-22 |
WO2012001788A1 (ja) | 2012-01-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6529617B2 (ja) | システムメモリから不揮発性データストレージに移行されるアプリケーションプログラムデータの選択的保持 | |
TWI697805B (zh) | 載入和虛擬化密碼金鑰 | |
US9870248B2 (en) | Page table based dirty page tracking | |
CN106687938B (zh) | 跨电源周期维护安全处理环境的方法及系统 | |
JP6736456B2 (ja) | 情報処理装置およびプログラム | |
JP4783392B2 (ja) | 情報処理装置および障害回復方法 | |
EP3113406B1 (en) | Key protecting method and apparatus | |
JP2012190267A (ja) | 移行プログラム、情報処理装置、及び移行方法 | |
US10644888B2 (en) | Systems and methods for providing I/O state protections in a virtualized environment | |
CN109558372B (zh) | 用于安全处理器的设备和方法 | |
WO2011137769A1 (zh) | 一种多核在线补丁方法和装置 | |
EP4156008A1 (en) | Seamless access to trusted domain protected memory by virtual machine manager using transformer key identifier | |
US9063868B2 (en) | Virtual computer system, area management method, and program | |
US10628168B2 (en) | Management with respect to a basic input/output system policy | |
US20140025903A1 (en) | Multi-core processor system | |
US9904567B2 (en) | Limited hardware assisted dirty page logging | |
CN113127263B (zh) | 一种内核崩溃恢复方法、装置、设备及存储介质 | |
JP5454686B2 (ja) | マルチコアプロセッサシステム、復元プログラム、および復元方法 | |
JP5920509B2 (ja) | コントローラの制御プログラム、およびコントローラの制御方法 | |
US11604651B2 (en) | Methods and devices for hardware characterization of computing devices | |
JP7074291B2 (ja) | 情報処理装置、情報処理方法及びプログラム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20130910 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20131111 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20131210 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20131223 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
LAPS | Cancellation because of no payment of annual fees |