JP5996110B2 - 計算機システム及び制御方法 - Google Patents

計算機システム及び制御方法 Download PDF

Info

Publication number
JP5996110B2
JP5996110B2 JP2015521256A JP2015521256A JP5996110B2 JP 5996110 B2 JP5996110 B2 JP 5996110B2 JP 2015521256 A JP2015521256 A JP 2015521256A JP 2015521256 A JP2015521256 A JP 2015521256A JP 5996110 B2 JP5996110 B2 JP 5996110B2
Authority
JP
Japan
Prior art keywords
cpu
cpu core
alternative
program
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.)
Active
Application number
JP2015521256A
Other languages
English (en)
Other versions
JPWO2014196083A1 (ja
Inventor
明 平田
明 平田
雅浩 虻川
雅浩 虻川
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Mitsubishi Electric Corp
Original Assignee
Mitsubishi Electric Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Mitsubishi Electric Corp filed Critical Mitsubishi Electric Corp
Application granted granted Critical
Publication of JP5996110B2 publication Critical patent/JP5996110B2/ja
Publication of JPWO2014196083A1 publication Critical patent/JPWO2014196083A1/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1415Saving, restoring, recovering or retrying at system level
    • G06F11/1417Boot up procedures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1479Generic software techniques for error detection or fault masking
    • G06F11/1482Generic software techniques for error detection or fault masking by means of middleware or OS functionality
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4406Loading of operating system
    • G06F9/441Multiboot arrangements, i.e. selecting an operating system to be loaded
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1415Saving, restoring, recovering or retrying at system level
    • G06F11/1438Restarting or rejuvenating

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)
  • Stored Programmes (AREA)
  • Hardware Redundancy (AREA)

Description

本発明は、複数のCPU(Central Processing Unit)を用いてOS(Operating System)を実行する技術に関する。
例えば、特許文献1では、計算機システムの安定動作のために、マルチコアを用いて複数のOS(ドメイン)を動作させる。
そして、特許文献1では、1つのドメインに異常が発生した場合に、異常が発生したドメインの処理を他のドメインで引継ぎ、異常が発生したドメインが再起動され、再起動されたドメインの処理が回復する。
また、特許文献2では、共有メモリを用いることでオーバヘッドが少なく迅速に処理をドメイン間で引き継ぐことができる方法が示されている。
特開2010−020621号公報 特開2012−099000号公報
計算機システムを安定して動作させるために、上記の特許文献1及び特許文献2のように、非対称型マルチプロセッサ(AMP:Asymmetric Multiprocessor)により、複数のOSをマルチコア上で定常的に動作させることが考えられる。
しかし、AMPにより定常的に複数のOSをマルチコア上で並列に動作させると、各OSがそれぞれメモリを消費し効率が悪く、スループットが低下するという課題がある。
一方で、複数のCPUコアに処理を分散させる対称型マルチプロセッサ(SMP:Symmetric Multiprocessor)では、使用可能なCPUコア数が多いほど、スループットが向上する。
この発明は、このような事情に鑑みたものであり、SMPによりスループットの向上を図りながら、計算機システムを安定的に動作させることを主な目的とする。
本発明に係る計算機システムは、
複数のCPU(Central Processing Unit)を有する計算機システムであって、
前記複数のCPUがOS(Operating System)及び前記OS上で動作するプログラムの実行を分担している際に、
前記複数のCPUのうちの特定のCPUが、
前記OS及び前記プログラムの実行の分担を停止し、前記OSを代替する代替OSを起動し、前記プログラムが動作するOSを前記OSから前記代替OSに切り替え、
前記特定のCPU以外のCPUである他のCPUが、
前記プログラムが動作するOSが前記代替OSに切り替わった後に、前記OSの実行を終了することを特徴とする。
本発明によれば、SMPにより、複数のCPUがOS及び前記OS上で動作するプログラムの実行を分担しており、スループットの向上が図られる。
更に、例えばOSに関連する障害が発生した場合に、特定のCPUがOS及びプログラムの分担を停止し、代替OSを起動し、プログラムが動作するOSを代替OSに切り替える。
このため、OSに関連する障害が発生した場合にも、プログラムを代替OSで継続して実行することができる。
実施の形態1に係る計算機システムの構成例を示す図。 実施の形態1に係るROMに保存されるデータの例を示す図。 実施の形態1に係るRAMに保存されるデータの例を示す図。 実施の形態1に係る計算機システムの動作例を説明する図。 実施の形態1に係る計算機システムの動作例を説明する図。 実施の形態1に係る計算機システムの動作例を説明する図。 実施の形態1に係る計算機システムの動作例を説明する図。 実施の形態1に係るCPUコア(1)の動作例を示すフローチャート図。 実施の形態1に係るCPUコア(1)の動作例を示すフローチャート図。 実施の形態1に係るCPUコア(2)の動作例を示すフローチャート図。 実施の形態1に係るCPUコア(2)の動作例を示すフローチャート図。
実施の形態1.
本実施の形態では、平時は対称型マルチプロセッサ(SMP)で動作し、障害が発生した際に、一時的に非対称型マルチプロセッサ(AMP)で動作してOSの切り替えを行い、OSの切り替え後はSMPに戻る計算機システムを説明する。
図1は、本実施の形態に係る計算機システム10の構成例を示す。
計算機システム10は、ハードウェアとしては、マルチコアプロセッサ100、バス110、RAM111、ROM112、IO装置113を有する。
マルチコアプロセッサ100は、CPUコア(1)101及びCPUコア(2)102を有する。
バス110は、マルチコアプロセッサ100、RAM111、ROM112、IO装置113を接続する。
RAM111は、バス110に接続される揮発性メモリである。
ROM112は、バス110に接続される不揮発性メモリである。
IO装置113は、バス110に接続され、後述するOS(1)201及びOS(2)211によりアクセスされる。
また、計算機システム10は、ソフトウェアとしては、ブートローダ200、OS(1)201、プログラム(A)204、プログラム(B)205を有する。
また、OS(1)201は、スケジューラ202及び不安定検知部203を有する。
ブートローダ200は、マルチコアプロセッサ100の起動時に、CPUコア(1)101或いはCPUコア(2)102によってROM112から読み出され、ハードウェアの初期化処理を行い、ROM112内の後述するOS実行イメージ302をバス110を介してRAM111に展開して実行する。
OS(1)201は、マルチコアプロセッサ100で動作するオペレーティングシステムである。
プログラム(A)204及びプログラム(B)205は、OS(1)201上で動作するアプリケーションプログラムである。
スケジューラ202は、OS(1)201で動作するプログラムをCPUコア(1)101或いはCPUコア(2)102に割り当てて、実行させる機能を持つ。
不安定検知部203は、OS(1)201で動作するプログラムがメモリリークや、指定範囲外のアドレスに対するアクセスを行った時に、OS(1)201に対して異常を通知する機能を持つ。
なお、図1では、OS(1)201のみを図示しているが、図6に示すように、計算機システム10には、OS(2)211も含まれている。
OS(2)211は、マルチコアプロセッサ100においてOS(1)201とは別個に動作する。
OS(2)211の内部構成もOS(1)201と同様であり、スケジューラ212と不安定検知部213が含まれる。
スケジューラ212は、スケジューラ202と同様であり、不安定検知部213は不安定検知部203と同様である。
マルチコアプロセッサ100は、CPUコア(1)101及びCPUコア(2)102を用いて動作するSMPを構成する。
CPUコア(1)101及びCPUコア(2)102は、互いに割り込み信号を発生させる、CPU間割込み機構を有する。
OS(1)201及びOS(2)211は、マルチコアプロセッサ100においてSMP対応のOSとして動作する。
また、SMPのみでなく、CPUコア(1)101が単独でOS(1)201を実行する場合もあり、また、CPUコア(2)102が単独でOS(1)201を実行する場合もある。
同様に、CPUコア(1)101が単独でOS(2)211を実行する場合もあり、また、CPUコア(2)102が単独でOS(2)211を実行する場合もある。
本実施の形態では、CPUコア(1)101とCPUコア(2)102がSMPによりOS(1)201を実行している際にOS(1)201に関連して障害が発生した場合に、CPUコア(2)102が分離される。
つまり、CPUコア(2)102がOS(1)201の実行の分担を停止し、CPUコア(2)102が再稼動し、再稼動したCPUコア(2)102がOS(2)211を起動する。
本実施の形態では、OS(2)211はOS(1)201を代替するOSであり、代替OSの例に相当する。
そして、CPUコア(2)102がOS(2)211を起動した後に、CPUコア(1)101がOS(1)201の実行を終了し、CPUコア(1)101が再稼動する。
CPUコア(1)101が再稼動した後は、CPUコア(1)101とCPUコア(2)102がSMPによりOS(2)211を実行する。
なお、CPUコア(2)102の再稼動とは、ブートローダ200を起動し、CPUコア(2)102用に確保されていたRAM111内の領域のデータを初期化し、CPUコア(2)102内のレジスタのデータを初期化することである。
同様に、CPUコア(1)101の再稼動とは、ブートローダ200を起動し、CPUコア(1)101用に確保されていたRAM111内の領域のデータを初期化し、CPUコア(1)101内のレジスタのデータを初期化することである。
図2は、ROM112に保存されるデータの例を示す。
図2において、ブートローダ実行イメージ301は、ブートローダ200の実行イメージである。
OS実行イメージ302は、OSの実行イメージである。
図1及び図6では、OS実行イメージ302がマルチコアプロセッサ100により実行されている状態が、OS(1)201又はOS(2)211として表現されている。
アプリケーションイメージ303は、アプリケーションプログラムの実行イメージを示す。
図1及び図6では、アプリケーションイメージ303がマルチコアプロセッサ100により実行されている状態が、プログラム(A)204及びプログラム(B)205として表現されている。
スナップショットイメージ(1)304は、OS(1)201においてOS(1)201及びデバイスドライバの初期化完了時のワークメモリの内容をデータとして保存したスナップショットイメージである。
スナップショットイメージ(2)305は、OS(2)211においてOS(2)211及びデバイスドライバの初期化完了時のワークメモリの内容をデータとして保存したスナップショットイメージである。
図3は、RAM111に保存されるデータを示す。
OS(1)実行領域311は、OS(1)201がマルチコアプロセッサ100により実行される際に、OS実行イメージ302がロードされる物理メモリ領域である。
OS(2)実行領域312は、OS(2)211がマルチコアプロセッサ100により実行される際に、OS実行イメージ302がロードされる物理メモリ領域である。
共有メモリ領域313は、OS(1)201とOS(2)211が同時に動作した際にCPUコア(1)101とCPUコア(2)102によりアクセスされる物理メモリ領域である。
OS(1)専用領域321は、OS(1)201のみ(つまり、OS(1)201を実行しているCPUコアのみ)が書き込みできる物理メモリ領域である。
OS(2)専用領域322は、OS(2)211のみ(つまり、OS(2)211を実行しているCPUコアのみ)が書き込みできる物理メモリ領域である。
起動フラグ331は、OS(2)211の起動モードを通知するためのフラグである。
起動フラグ331では、OS(2)211をSMPにより実行するための起動モード(定常起動モード)、または、OS(2)211をCPUコア(2)102のみで実行するための起動モード(分離OS起動モード)が示される。
OS起動許可フラグ333は、OS(2)211によるIO装置113へのアクセス(以下、IO装置113へのアクセスをIOアクセスともいう)の許否を通知するためのフラグである。
プロセス移行フラグ334は、OS(1)201で処理されていたプロセスのコンテキスト情報の保存が完了したことを通知するためのフラグである。
CPU待機フラグ335は、CPUコア(1)101の再稼動によってCPUコア(1)101の初期化が完了し、CPUコア(1)101が処理待ち状態(アイドル)になっていることを通知するためのフラグである。
再稼動動作フラグ336は、CPUコア(1)101に、再稼動時にOSを起動するか、処理待ち状態(アイドル)で待機するかを指示するフラグである。
準備完了フラグ332は、CPUコア(2)102がIOアクセスを伴わないOS(2)211の起動を完了したことを通知するフラグである。
なお、CPUコア間の通知は共有メモリ領域313を介して行う。
また、OS(1)201からOS(2)211への通知並びにCPUコア(1)101からCPUコア(2)102への通知はOS(1)専用領域321が用いられ、OS(2)211からOS(1)201への通知並びに、CPUコア(2)102からCPUコア(1)101への通知はOS(2)専用領域322が用いられる。
次に、図4〜図7を用いて、本実施の形態に係る計算機システム10の動作例を説明する。
図4では、SMPにより、CPUコア(1)101及びCPUコア(2)102がOS(1)201を分担して実行し、OS(1)201上でプログラム(A)204及びプログラム(B)205が動作している状態を表している。
このとき、プログラム(B)205の動作が不安定となり、プログラム(B)205の不安定な動作がシステム全体に影響を与えることを不安定検知部203が検知すると、CPUコア(1)101は、スケジューラ202を実行し、CPUコア(2)102をOS(1)201から切り離すために、CPUコア(2)102への処理割り当てを停止する。
処理の割り当てが発生しなくなったCPUコア(2)102は、割り当てられていた処理を終了すると、処理待ちのアイドル状態となる。
つまり、CPUコア(2)102は、OS(1)201及びプログラム(A)204の実行の分担を停止する。
これにより、CPUコア(1)101のみがOS(1)201を実行し、OS(1)201上で動作するプログラム(A)204及びプログラム(B)205も必然的にCPUコア(1)101のみが実行する(図5)。
次に、CPUコア(1)101が、CPUコア(2)102にOS(2)211を起動するように通知する。
この通知は、CPUコア(1)101が起動フラグ331(図3)に「分離OS起動モード」を表す値を設定することにより行われる。
また、CPUコア(1)101はCPUコア(2)102の再稼動を要求する。
この要求は、CPUコア(1)101からCPUコア(2)102へのCPU間割込み或いは、CPUコア(1)101のレジスタ操作によるCPUコア(2)102のリセットにより行われる。
CPUコア(1)101から再稼動を要求されたCPUコア(2)102は、再稼動を行う。
CPUコア(2)102は、ブートローダ200を起動し、初期化処理を行い、OS実行イメージ302(図2)をROM112から読み出し、OS(2)211を起動する(図6)。
なお、この時、CPUコア(1)101が実行中のOS(1)201の動作を阻害しないように、CPUコア(2)102は、IO装置113へのアクセスを伴わないOS初期化処理(第1の初期化処理に相当)を行う。
このOS初期化処理は、予めROM112に保存しておいたスナップショットイメージ(2)305をRAM111に展開してOS及びデバイスドライバの初期化を短縮化する起動手法を用いてもよい。
OS(2)211についてIO装置113へのアクセスを伴わないOS初期化処理を完了すると、CPUコア(2)102は、起動フラグ331の値を読み、「分離OS起動モード」を表す値が設定されていることを検知する。
そして、CPUコア(2)102は、CPUコア(1)101に、OS(2)211が動作可能であることを通知する。
この通知は、所定の値を準備完了フラグ332に設定することにより行われる。
次に、CPUコア(1)101は、動作不安定となったプログラム(B)205の終了処理を行う。
また、CPUコア(1)101は、プログラム(A)204の実行主体をOS(2)211へ切り替えるために、プログラム(A)204のコンテキスト情報をOS(1)専用領域321に格納する。
また、CPUコア(1)101は、コンテキスト情報の格納が完了したことを表す値をプロセス移行フラグ334に設定する。
更に、CPUコア(1)101は、OS(2)211からIO装置113にアクセス可能であることをCPUコア(2)102に通知する。
この通知は、所定の値をOS起動許可フラグ333に設定することにより行われる。
CPUコア(2)102は、OS起動許可フラグ333の値を読み、OS(2)211によるIO装置113へのアクセスが許可されていることを検知し、IO装置113のアクセスを伴うOS初期化処理(第2の処理化処理に相当)を行う。
また、CPUコア(2)102は、プロセス移行フラグ334の値に基づき、プログラム(A)204のコンテキスト情報を読み出し、プログラム(A)204のOS(2)211での動作の再開を行う。
また、CPUコア(2)102は、プログラム(B)205を新たにOS(2)211上で実行する。
そして、CPUコア(1)101は、OS(1)201の実行を終了し、再稼動を行う。
CPUコア(1)101は、ブートローダ200を実行し、CPUコア(1)101の初期化処理完了の後、CPUコア(1)101がアイドル状態であることを示す値をCPU待機フラグ335に設定する。
また、CPUコア(1)101は、CPU待機フラグ335に値を設定したことを、CPU間割込みでCPUコア(2)102に対して通知し、CPUコア(1)101はアイドル状態で待機する。
プログラム(A)204の動作再開後、CPUコア(2)102が、CPU待機フラグ335を読み、CPUコア(1)101がアイドル状態であることを検知すると、OS(2)211のスケジューラ212がCPUコア(1)101への処理割り当てを開始する。
この結果、OS(2)211は、SMP対応OSとして、CPUコア(1)101及びCPUコア(2)102によって実行される(図7)。
次に、図8及び図9を用いて、CPUコア(1)101の動作例を説明する。
図4の状態において、CPUコア(1)101が不安定検知部203を実行して、OS(1)201で動作するプログラムの動作を監視する(S401)。
例えばプログラム(B)205の動作が不安定であることを判断すると(S402でYES)、CPUコア(1)101は、スケジューラ202を実行し、動作が不安定なプログラム(B)205をスケジューラ202の待ち行列から外す等の処理で不安定動作のプログラム(B)205の実行を停止する(S403)。
その後、CPUコア(1)101は、スケジューラ202の実行により、CPUコア(2)102に対してプログラムの割り当てを中止する(S404)。
更に、CPUコア(1)101は、スケジューラ202の実行により、CPUコア(2)102に既に割り当てられていた処理が終了したことを確認し(S405)、CPUコア(2)102がアイドル状態となったことを確認する(S406)。
CPUコア(2)102がアイドル状態となった後、CPUコア(1)101は、スケジューラ202の実行により、CPUコア(2)102を処理の割り当て対象から外す(S407)。
次に、CPUコア(1)101は、MMU(Memory Management Unit)等を操作して、OS(1)201が管理しているRAM111の領域をOS(2)211用に解放する(S408)。
次に、CPUコア(1)101は、起動フラグ331(図3)に、「分離OS起動モード」を表す値を設定する(S409)。
次に、CPUコア(1)101は、CPUコア(2)102へCPU間割込みやリセットによってCPUコア(2)102の再稼動を要求する(S410)。
CPUコア(1)101は、CPUコア(2)102でOS(2)211の起動準備が完了(第1の初期化処理が完了)するのを準備完了フラグ332(図3)を監視して待つ(S411)。
そして、OS(2)211の起動準備が完了したことを検知した場合(S411でYES)に、CPUコア(1)101は、スケジューラ202を実行して、正常に動作しているプログラム(A)204の動作を停止する(S412)。
また、CPUコア(1)101は、OS(1)201からIO装置113へのIOアクセスが発生しないように制御し、OS起動許可フラグ333(図3)に、OS(2)211によるIOアクセスの許可を通知する値を設定する(S413)。
これにより、CPUコア(2)102は、IOアクセスを伴うOS(2)211のOS初期化処理を実行することができる。
また、CPUコア(1)101は、OS(1)201で動作していた正常なプログラム(A)204のコンテキスト情報をOS(1)専用領域321へ書き出す(S414)。
更に、CPUコア(1)101は、S414で書き出したコンテキスト情報の利用許可を通知する値をプロセス移行フラグ334に設定する(S415)。
次に、CPUコア(1)101は、再稼動後にアイドル状態で待機するために、再稼動動作フラグ336(図3)に、「アイドル待機モード」を表す値を設定する(S416)。
そして、CPUコア(1)101は、OS(1)201の実行を終了し、再稼動を行う(S417)。
再稼動後に、CPUコア(1)101は、再稼動動作フラグ336の値を読み(S418)、再稼動動作フラグ336の値が「アイドル待機モード」なので、CPUコア(1)101が処理待ち状態(アイドル)であることを通知する値をCPU待機フラグ335(図3)に設定する(S419)。
そして、CPUコア(1)101はアイドル状態の無限待ちとなる(S420)。
一方で、S418において、再稼動動作フラグ336の値が「定常起動モード」であれば、SMP用OSとして、OS(1)201を通常通りに起動する(S421)。
次に、図10及び図11を用いて、CPUコア(2)102の動作例を説明する。
図8のS410で行われた再稼動要求に基づき、CPUコア(2)102は、ブートローダ200を起動する(S501)。
また、CPUコア(2)102は、所定の初期化処理も行う。
次に、CPUコア(2)102は、RAM111のOS(2)実行領域312に、ROM112内のOS実行イメージ302をロードする(S502)。
次に、CPUコア(2)102は、OS(2)211の初期化処理を開始する(S503)。
S503では、CPUコア(2)102は、IOアクセスを伴わない初期化のみを行う。
次に、CPUコア(2)102は、ROM112内のスナップショットイメージ(2)305を用いて、システムの初期化状態を復帰させる(S504)。
次に、CPUコア(2)102は、起動フラグ331の値を確認し(S505)、起動フラグ331の値が「定常起動モード」を表す値であれば、SMP用OSとしてOS(2)211を通常通りに起動する(S506)。
一方、起動フラグ331の値が「分離OS起動モード」を表す値であれば、CPUコア(2)102は、IOアクセスを伴わないOS(2)211の起動を完了したことを通知する値を準備完了フラグ332に設定する(S507)。
また、CPUコア(2)102は、CPUコア(1)101によりOS起動許可フラグ333(図3)が設定されるのを待つ(S508)。
OS起動許可フラグ333の値が、IOアクセスの許可を通知する値になると(S508で「起動指示あり」)、CPUコア(2)102は、IOアクセスを伴うOS(2)211の初期化処理を行う(S509)。
更に、CPUコア(2)102は、OS(2)211のスケジューラ212を起動し(S510)、OS(2)211の定常動作を開始させる。
また、CPUコア(2)102は、プロセス移行フラグ334(図3)を監視し(S511)、プロセス移行フラグ334の値が有効になると、OS(1)201で正常に動作していたプログラム(A)204のコンテキスト情報をOS(1)専用領域321から読み出し、プログラム(A)204の動作をOS(2)211で再開させる(S512)。
次に、CPUコア(2)102は、CPU待機フラグ335を参照して、CPUコア(1)101がアイドル状態であるか否かを確認する(S513)。
CPUコア(1)101がアイドル状態である場合(S513でYES)は、CPUコア(2)102は、CPUコア(1)101をスケジューラ212の管理下に組込み(S514)、OS(2)211をSMP用OSとして動作させる。
また、CPUコア(2)102は、OS(1)201が使用していたOS(1)実行領域311をOS(2)211用に新たに確保し、OS(2)211の管理下に加える(S515)。
このように、本実施の形態に係る計算機システムでは、マルチコアプロセッサを用いて処理を継続しつつシステムの安定性を担保することができる。
以上の説明では、OS(1)201上のプログラムで不安定動作が発生した際にOS(2)211を用いて安定状態へ復帰する手順を示した。
OS(2)211上のプログラムに不安定動作が発生した場合も同様に、OS(1)201を用いて安定状態へと復帰することができる。
また、以上では、マルチコアプロセッサ100を構成するCPUコアが2個の例を説明した。
なお、CPUコアが3個以上のコアの場合でも、同様に一部のCPUコアを切り離して、安定状態への復帰が可能である。
また、以上では、複数のCPUコアが含まれるマルチコアプロセッサ100の計算機システムを説明したが、複数のプロセッサ(CPU)で構成される計算機システムにも、本実施の形態を適用することができる。
また、本実施の形態に示した手順により、本発明に係る制御方法を実現することができる。
以上、本実施の形態では、
マルチコアプロセッサにおいて動作中のCPUコアを途中で分離し、
分離したCPUコアで新たにOSを動作させ、
すでに動作していたOSでの処理を新たに動作させたOSで引き継がせることにより
システムの安定化を行う高可用性計算機方式を説明した。
また、本実施の形態では、
新たに動作するOSが、
動作していたOSで使用していたCPUコアを統合して処理を継続する高可用性計算機方式を説明した。
また、本実施の形態では、
OSの使用するメモリを動的に変更する高可用性計算機方式を説明した。
10 計算機システム、100 マルチコアプロセッサ、101 CPUコア(1)、102 CPUコア(2)、110 バス、111 RAM、112 ROM、113 IO装置、200 ブートローダ、201 OS(1)、202 スケジューラ、203 不安定検知部、204 プログラム(A)、205 プログラム(B)、211 OS(2)、212 スケジューラ、213 不安定検知部、301 ブートローダ実行イメージ、302 OS実行イメージ、303 アプリケーションイメージ、304 スナップショットイメージ(1)、305 スナップショットイメージ(2)、311 OS(1)実行領域、312 OS(2)実行領域、313 共有メモリ領域、321 OS(1)専用領域、322 OS(2)専用領域、331 起動フラグ、332 準備完了フラグ、333 OS起動許可フラグ、334 プロセス移行フラグ、335 CPU待機フラグ、336 再稼動動作フラグ。

Claims (6)

  1. 複数のCPU(Central Processing Unit)を有する計算機システムであって、
    前記複数のCPUがOS(Operating System)及び前記OS上で動作するプログラムの実行を分担している際に、
    前記複数のCPUのうちの特定のCPUが、
    前記OS及び前記プログラムの実行の分担を停止し、前記OSを代替する代替OSを起動し、前記プログラムが動作するOSを前記OSから前記代替OSに切り替え、
    前記特定のCPU以外のCPUである他のCPUが、
    前記プログラムが動作するOSが前記代替OSに切り替わった後に、前記OSの実行を終了することを特徴とする計算機システム。
  2. 前記他のCPUは、
    前記OSの実行を終了した後に、前記特定のCPUと、前記代替OS及び前記代替OS上で動作するプログラムの実行を分担することを特徴とする請求項1に記載の計算機システム。
  3. 前記複数のCPUが前記OS及び前記OS上で動作するプログラムの実行を分担している際に、前記OSに関連した障害が検知された場合に、
    前記特定のCPUが、
    前記OS及び前記プログラムの実行の分担を停止し、前記特定のCPUを再稼動し、前記代替OSを起動し、前記プログラムが動作するOSを前記OSから前記代替OSに切り替え、
    前記他のCPUが、
    前記プログラムが動作するOSが前記代替OSに切り替わった後に、前記OSの実行を終了し、前記他のCPUを再稼動することを特徴とする請求項1又は2に記載の計算機システム。
  4. 前記計算機システムは、
    前記OS及び前記代替OSによりアクセスされるデバイスに接続されており、
    前記特定のCPUは、
    前記代替OSによる前記デバイスへのアクセスが発生しない前記代替OSの第1の初期化処理を行い、前記第1の初期化処理を行ったことを前記他のCPUに通知し、前記代替OSによる前記デバイスへのアクセスが許可されたことが前記他のCPUから通知された場合に、前記代替OSによる前記デバイスへのアクセスが発生する前記代替OSの第2の初期化処理を行って、前記代替OSを起動し、
    前記他のCPUは、
    前記第1の初期化処理が行われたことが前記特定のCPUから通知された場合に、前記OSによる前記デバイスへのアクセスを禁止し、前記代替OSによる前記デバイスへのアクセスを許可することを前記特定のCPUに通知することを特徴とする請求項1〜3のいずれかに記載の計算機システム。
  5. 前記計算機システムは、更に、
    前記複数のCPUが共有する共有メモリを有し、
    前記特定のCPUは、
    前記第2の初期化処理を行った場合に、前記第2の初期化処理を行ったことを前記他のCPUに通知し、前記プログラムのコンテキスト情報が前記共有メモリに格納されたことが前記他のCPUから通知された場合に、前記プログラムが動作するOSを前記OSから前記代替OSに切り替え、前記共有メモリに格納された前記コンテキスト情報を用いて前記代替OS上で前記プログラムを実行し、
    前記他のCPUは、
    前記第2の初期化処理が行われたことが前記特定のCPUから通知された場合に、前記プログラムのコンテキスト情報を前記共有メモリに格納し、前記コンテキスト情報を前記共有メモリに格納したことを前記特定のCPUに通知することを特徴とする請求項4に記載の計算機システム。
  6. 複数のCPU(Central Processing Unit)を有する計算機システムで行われる制御方法であって、
    前記複数のCPUがOS(Operating System)及び前記OS上で動作するプログラムの実行を分担している際に、
    前記複数のCPUのうちの特定のCPUが、
    前記OS及び前記プログラムの実行の分担を停止し、前記OSを代替する代替OSを起動し、前記プログラムが動作するOSを前記OSから前記代替OSに切り替え、
    前記特定のCPU以外のCPUである他のCPUが、
    前記プログラムが動作するOSが前記代替OSに切り替わった後に、前記OSの実行を終了することを特徴とする制御方法。
JP2015521256A 2013-06-07 2013-06-07 計算機システム及び制御方法 Active JP5996110B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2013/065884 WO2014196083A1 (ja) 2013-06-07 2013-06-07 計算機システム及び制御方法

Publications (2)

Publication Number Publication Date
JP5996110B2 true JP5996110B2 (ja) 2016-09-21
JPWO2014196083A1 JPWO2014196083A1 (ja) 2017-02-23

Family

ID=52007754

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015521256A Active JP5996110B2 (ja) 2013-06-07 2013-06-07 計算機システム及び制御方法

Country Status (5)

Country Link
US (1) US9880888B2 (ja)
JP (1) JP5996110B2 (ja)
CN (1) CN105247491B (ja)
DE (1) DE112013007143T5 (ja)
WO (1) WO2014196083A1 (ja)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103608792B (zh) * 2013-05-28 2016-03-09 华为技术有限公司 支持多核架构下资源隔离的方法及系统
US9678903B1 (en) 2014-10-15 2017-06-13 Intel Corporation Systems and methods for managing inter-CPU interrupts between multiple CPUs
US11531607B2 (en) * 2019-12-10 2022-12-20 Cisco Technology, Inc. Fault isolation and recovery of CPU cores for failed secondary asymmetric multiprocessing instance

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH08272755A (ja) * 1995-03-29 1996-10-18 Fujitsu Ltd プロセッサ切替え装置
JP2006172100A (ja) * 2004-12-15 2006-06-29 Hitachi Ltd オペレーティングシステムの高速切替え方式及びその方法
JP2008077388A (ja) * 2006-09-21 2008-04-03 Nec Corp マルチプロセッサ制御システム、方法、およびプログラム
JP2008510238A (ja) * 2004-08-18 2008-04-03 ジャルナ エスアー オペレーティングシステム
WO2008044423A1 (fr) * 2006-10-13 2008-04-17 Nec Corporation Processeur d'informations et procédé de couverture de panne
JP2008123439A (ja) * 2006-11-15 2008-05-29 Denso Corp オペレーティング・システム、プログラム及び移動体操縦支援装置
JP2011043892A (ja) * 2009-08-19 2011-03-03 Nec Corp マルチコアシステム、マルチコアシステムの制御方法、及びマルチプロセッサ

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1467282B1 (en) * 2003-04-09 2008-10-01 Jaluna SA Operating systems
US7251746B2 (en) * 2004-01-21 2007-07-31 International Business Machines Corporation Autonomous fail-over to hot-spare processor using SMI
US20080091974A1 (en) 2006-10-11 2008-04-17 Denso Corporation Device for controlling a multi-core CPU for mobile body, and operating system for the same
JP2008123357A (ja) 2006-11-14 2008-05-29 Honda Motor Co Ltd 並列計算機システム、並列計算方法および並列計算機用プログラム
JP5131269B2 (ja) * 2007-03-20 2013-01-30 富士通株式会社 マルチプロセッシングシステム
JP2010020621A (ja) * 2008-07-11 2010-01-28 Toyota Infotechnology Center Co Ltd プログラム修復システムおよび方法
US20130007729A1 (en) * 2008-07-14 2013-01-03 Alexander Sirotkin Method and System for virtualization assisted remote access system designed For e-Support
JP5035299B2 (ja) 2009-06-15 2012-09-26 株式会社日立製作所 マルチコアプロセッサ制御方法、その計算機システム、及び管理計算機のプログラム
CN101782861A (zh) * 2009-12-24 2010-07-21 华为终端有限公司 在嵌入式系统中操作系统的管理方法及装置
JP5644380B2 (ja) 2010-11-04 2014-12-24 トヨタ自動車株式会社 情報処理装置

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH08272755A (ja) * 1995-03-29 1996-10-18 Fujitsu Ltd プロセッサ切替え装置
JP2008510238A (ja) * 2004-08-18 2008-04-03 ジャルナ エスアー オペレーティングシステム
JP2006172100A (ja) * 2004-12-15 2006-06-29 Hitachi Ltd オペレーティングシステムの高速切替え方式及びその方法
JP2008077388A (ja) * 2006-09-21 2008-04-03 Nec Corp マルチプロセッサ制御システム、方法、およびプログラム
WO2008044423A1 (fr) * 2006-10-13 2008-04-17 Nec Corporation Processeur d'informations et procédé de couverture de panne
JP2008123439A (ja) * 2006-11-15 2008-05-29 Denso Corp オペレーティング・システム、プログラム及び移動体操縦支援装置
JP2011043892A (ja) * 2009-08-19 2011-03-03 Nec Corp マルチコアシステム、マルチコアシステムの制御方法、及びマルチプロセッサ

Also Published As

Publication number Publication date
DE112013007143T5 (de) 2016-02-18
US20160041850A1 (en) 2016-02-11
CN105247491B (zh) 2019-03-12
US9880888B2 (en) 2018-01-30
JPWO2014196083A1 (ja) 2017-02-23
WO2014196083A1 (ja) 2014-12-11
CN105247491A (zh) 2016-01-13

Similar Documents

Publication Publication Date Title
JP6089349B2 (ja) マルチコアアーキテクチャでのリソース分離を支援するための方法およびシステム
JP5212360B2 (ja) 制御プログラム、制御システムおよび制御方法
US10671426B2 (en) Data processing
US9639486B2 (en) Method of controlling virtualization software on a multicore processor
JP2016508647A5 (ja)
JP6165964B2 (ja) 計算機
US20130254446A1 (en) Memory Management Method and Device for Distributed Computer System
JP2013225208A (ja) 情報処理装置、情報処理方法、及びプログラム
JP5996110B2 (ja) 計算機システム及び制御方法
US9910677B2 (en) Operating environment switching between a primary and a secondary operating system
JP5035227B2 (ja) 情報処理装置、プログラムの起動制御方法、及び起動制御プログラム
WO2011104812A1 (ja) マルチコアプロセッサシステム、割込プログラム、および割込方法
JP5557612B2 (ja) 計算機及び転送プログラム
JPWO2008114415A1 (ja) マルチプロセッシングシステム
US9448871B2 (en) Information processing device and method for selecting processor for memory dump processing
WO2013136457A1 (ja) 仮想計算機システム、情報保存処理プログラム及び情報保存処理方法
WO2016017219A1 (ja) データ処理システム及びデータ処理方法及びプログラム
JP5867630B2 (ja) マルチコアプロセッサシステム、マルチコアプロセッサシステムの制御方法、およびマルチコアプロセッサシステムの制御プログラム
JP5699665B2 (ja) サーバ装置、処理実行方法およびプログラム
JP6007532B2 (ja) 仮想化システム、仮想化サーバ、マイグレーション方法、マイグレーションプログラム
JP4730386B2 (ja) 仮想計算機装置、計算資源活用方法、および、プログラム
RU2589853C1 (ru) Способ обеспечения совместной работы нескольких гипервизоров в компьютерной системе
JP5582241B2 (ja) マルチコアプロセッサシステム、マルチコアプロセッサシステムの制御方法、およびマルチコアプロセッサシステムの制御プログラム
JP2011180840A (ja) プロセッサ、マルチプロセッサシステム、及びメモリアクセス不正検出方法
JP2013130999A (ja) マルチコアプロセッサ

Legal Events

Date Code Title Description
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: 20160726

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20160823

R150 Certificate of patent or registration of utility model

Ref document number: 5996110

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250