JP2009069963A - マルチプロセッサシステム - Google Patents

マルチプロセッサシステム Download PDF

Info

Publication number
JP2009069963A
JP2009069963A JP2007235370A JP2007235370A JP2009069963A JP 2009069963 A JP2009069963 A JP 2009069963A JP 2007235370 A JP2007235370 A JP 2007235370A JP 2007235370 A JP2007235370 A JP 2007235370A JP 2009069963 A JP2009069963 A JP 2009069963A
Authority
JP
Japan
Prior art keywords
processor
application
unit
processor unit
core
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.)
Withdrawn
Application number
JP2007235370A
Other languages
English (en)
Inventor
Hiromasa Takahashi
宏政 高橋
Takashi Chiba
▲隆▼ 千葉
Shunsuke Kamijo
俊介 上條
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.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
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 Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2007235370A priority Critical patent/JP2009069963A/ja
Publication of JP2009069963A publication Critical patent/JP2009069963A/ja
Withdrawn legal-status Critical Current

Links

Images

Landscapes

  • Hardware Redundancy (AREA)

Abstract

【課題】階層型のマルチプロセッサシステムにおいて、優先順位の高いアプリケーションの実行を確保する。
【解決手段】各プロセッサユニットU0〜U3は、それぞれ複数のプロセッサコアC00〜C03、C10〜C13、C20〜C23、C30〜C33を備える。アプリケーションの優先順位は予め定義されている。プロセッサユニットU0〜U3の優先順位は、プロセッサユニットU0〜U3に割り当てられるアプリケーションの配置に応じて動的に変化する。アプリケーションAを実行していたプロセッサコアC00が故障したとき、プロセッサコアU0内に代替実行可能なプロセッサコアが存在しなければ、最も優先順位の低いプロセッサユニット内のプロセッサコアがそのアプリケーションAを代替実行する。
【選択図】図3

Description

本発明は、複数のプロセッサコアを備えるマルチプロセッサシステムに係わり、特に、互いに接続された複数のプロセッサユニットがそれぞれ1または複数のプロセッサコアを備えるマルチプロセッサシステムに係わる。
様々な分野において組込みシステムが広く普及してきている。組込みシステムは、制御すべき対象の装置に内蔵される情報処理システムであって、1または複数のプロセッサを用いてその装置の動作を制御する。そして、近年では、高い信頼性を必要とする組込みシステム(例えば、自動車、航空機、鉄道車両、船舶等に組み込まれる制御システム)が要求されている。
高い信頼性が要求される組込みシステムにおいては、例えば、3重化システムまたは2重化システムが採用されている。3重化システムにおいては、同一の処理を並列に実行する3個のプロセッサの出力値が互いに比較され、多数決の原理に従って出力結果が決定される。このとき、特定のプロセッサの出力値が他の2個のプロセッサの出力値と異なっていた場合には、その特定のプロセッサは故障しているものと判断され、システムから切り離される。これにより、高い信頼性が実現される。2重化システムにおいては、2個のプロセッサの出力値を互いに比較することによって故障を検出できる。ただし、2重化システムでは、出力値の比較だけでは、どちらのプロセッサが故障しているのかを判定することはできない。
組込みシステムは、高い処理能力を必要とする場合には、複数のプロセッサエレメントを備えるマルチプロセッサシステム構成が採用される。ここで、このマルチプロセッサシステムの信頼性を高めるためには、上述した2重化/3重化を導入する構成が考えられる。しかし、各プロセッサエレメントをそれぞれ2重化/3重化すると、全体としてコストが大幅に増加することとなる。
一方、マルチプロセッサシステムは、複数のプロセッサエレメントを備えているので、各プロセッサエレメントが相互に動作状態を監視する機能を導入すれば、各プロセッサエレメントの故障を検出することが可能である。例えば、特許文献1、2には、各プロセッサエレメントが他のプロセッサエレメントから出力される「自己故障検出情報」あるいは「生存通知」を監視するサーバーシステムが記載されている。
また、特許文献3に記載の組込みシステムにおいては、各プロセッサエレメントがそれぞれ自分の「動作状態」を共有メモリに書き込み、他のプロセッサエレメントがその共有メモリを参照する。このとき、異常値が検出されると、その異常値を書き込んだプロセッサエレメントが故障しているものと判断される。そして、そのプロセッサエレメントにより実行されていたアプリケーションは、他のプロセッサエレメントにより実行されるように制御される。さらに、故障が検出されたプロセッサエレメントは、リセットされた後に再起動される。
さらに、互いに接続された複数のプロセッサユニットがそれぞれ複数のプロセッサコアを備える大規模な階層型マルチプロセッサシステムにおける故障時の復旧/代替実行としては、例えば、特許文献4、5に記載の方法が提案されている。なお「代替実行」とは、あるプロセッサにより実行されていたプログラムを他のプロセッサに実行させる処理を意味する。
特許文献4に記載のシステムは、同一命令セットを実行できる複数のCPUグループを備える。第1のグループは、例えば、科学技術演算処理に係わる命令を高速に実行できる複数のCPUを備え、第2のグループは、例えば、文字処理に係わる命令を高速に実行できる複数のCPUを備える。各プログラムは、その処理内容(ここでは、科学技術演算、文字処理)に応じて、対応するクループに割り当てられる。そして、あるプログラムを実行しているCPUが故障すると、そのプログラムは、同一グループ内の他のCPUに割り当てられて実行される。ただし、同一グループ内に代替実行すべきCPUが残っていないときは、そのプログラムは、他のグループに属するCPUに割り当てられる。
特許文献5には、運用系および代替系から構成されるホットスタンバイマルチプロセッサシステムが記載されている。このシステムは、複数の代替系を備え、各代替系の優先順位は予め決められてテーブルに登録されている。そして、運用系において障害が発生すると、このテーブルに従って、使用すべき代替系が決定される。
特開平7−262042号公報 特開昭63−004366号公報 特開2004−310252号公報 特開平6−348664号公報 特開平7−248933号公報
上述のような階層型のマルチプロセッサシステム(互いに接続された複数のプロセッサユニットがそれぞれ1または複数のプロセッサコアを備える構成)においては、上位階層(すなわち、ユニット間)で故障検出および/または代替実行に要する時間は、下位階層(すなわち、ユニット内)で要する時間と比べて大幅に長くなる。よって、システム全体として故障検出および/または代替実行に要する時間が長くなってしまう。
また、従来の技術においては、障害発生時に代替実行を行う機能を備えている場合であっても、各プログラムの優先順位は必ずしも考慮されていなかった。このため、障害発生時に優先順位の高いプログラムの実行を継続できなくなるおそれがあった。
本発明の課題は、階層型のマルチプロセッサシステムにおいて、優先順位の高いアプリケーションの実行を確保する方式を提供することである。
本発明のマルチプロセッサシステムは、互いに接続された複数のプロセッサユニットがそれぞれ1または複数のプロセッサコアを備える構成であって、前記複数のプロセッサユニットの優先順位は、各プロセッサユニットにおいて実行されているアプリケーションの中の代表アプリケーションの優先順位に基づいて決定される。
この構成によれば、アプリケーションの配置が変わると、それに伴ってプロセッサユニットの優先順位も動的に変化する。したがって、常に、優先順位の高いアプリケーションを実行しているプロセッサユニットを認識することができる。
本発明の他の態様のマルチプロセッサシステムは、互いに接続された複数のプロセッサユニットがそれぞれ1または複数のプロセッサコアを備える構成であって、アプリケーションの優先順位を管理する第1の管理手段と、各プロセッサユニット上で実行されているアプリケーションの優先順位に基づいて各プロセッサユニットの優先順位を管理する第2の管理手段と、第1のプロセッサユニットにおいて、故障が検出されたプロセッサコアに
より実行されていたアプリケーションである代替対象アプリケーションの優先順位がそのユニット内で最も高かった場合であって、そのユニット内に代替実行可能なプロセッサコアが存在しない場合には、前記第1のプロセッサユニットよりも優先順位の低い第2のプロセッサユニット内のプロセッサコアに前記代替対象アプリケーションを割り当てる制御手段、を有する。
この構成によれば、あるプロセッサコアが故障したときには、まず、その故障プロセッサを含むプロセッサユニット内で代替実行が可能か否かを判断する。そして、このプロセッサユニット内で代替実行できない場合には、故障プロセッサで実行されていたアプリケーションを他のプロセッサユニットに実行させる。このとき、各プロセッサユニットの優先順位は、各アプリケーションの優先順位および各アプリケーションの配置に応じて決まる。よって、故障発生時には、代替実行を行うべき優先順位の低いプロセッサユニットが適切に選択される。
本発明によれば、階層型のマルチプロセッサシステムにおいて、優先順位の高いアプリケーションの実行を確保することができる。
また、本発明によれば、階層型のマルチプロセッサシステムにおいて、下位階層内(プロセッサユニット内)での故障検出および/または代替実行に要する時間を短く保つことができる。
図1は、本発明の実施形態のマルチプロセッサシステムの基本構成を示す図である。実施形態のマルチプロセッサシステム1は、複数のプロセッサユニットを備える。図1に示すマルチプロセッサシステム1は、4個のプロセッサユニットU0〜U3を備えるが、プロセッサユニットの数は特に限定されるものはない。また、プロセッサユニットU0〜U3は、ユニット間接続ネットワーク2により互いに接続されている。すなわち、プロセッサユニットU0〜U3は、ユニット間接続ネットワーク2を介して相互にデータを送受信することができる。なお、ユニット間接続ネットワーク2は、特に限定されるものではないが、例えば、バス形式であってもよいし、スイッチ・ハブ等を利用したスター型接続形式であってもよい。
各プロセッサユニットU0〜U3は、それぞれ、1または複数のプロセッサコア(或いは、プロセッサエレメント)を備えている。この実施例では、各プロセッサユニットU0〜U3は、それぞれ4個のプロセッサコアを備えている。即ち、プロセッサユニットU0は、プロセッサコアC00〜C03を備え、プロセッサユニットU1は、プロセッサコアC10〜C13を備え、プロセッサユニットU2は、プロセッサコアC20〜C23を備え、プロセッサユニットU3は、プロセッサコアC30〜C33を備えている。なお、各プロセッサユニットが備えるプロセッサコアの数は特に限定されるものではなく、プロセッサユニット間で互いに同じである必要もない。
各プロセッサコアは、それぞれ、1または複数のアプリケーションプログラム(以下、単に「アプリケーション」と呼ぶ。)を実行することができる。また、マルチプロセッサシステム1において実行すべきアプリケーションは、任意のプロセッサコアで実行可能であるものとする。
各プロセッサユニットU0〜U3は、それぞれ対応するメモリM0〜M3を備える。各メモリは、例えばDRAM/SRAM等の揮発性メモリやフラッシュメモリ等の不揮発性メモリで構成され、対応するプロセッサユニット内のプロセッサコアにより使用される。また、ユニット間接続ネットワーク2には、共有メモリ3が接続されている。共有メモリ
3は、各プロセッサユニットU0〜U3からアクセス可能な記憶領域である。
上記構成のマルチプロセッサシステムは、上位階層構成として、複数のプロセッサユニットを備える。そして、各プロセッサユニットは、下位階層構成として、複数のプロセッサコアを備える。
図2は、プロセッサユニットのハードウェア構成を示す図である。ここでは、図1に示すプロセッサユニットU0について示すが、他のプロセッサユニットU1〜U3の構成も基本的に同じであるものとする。
メモリバス11には、メモリM0が接続されている。また、プロセッサコアC00〜C03は、メモリバス11に接続されている。そして、プロセッサコアC00〜C03は、メモリバス11を介してメモリM0にアクセスすることができる。また、プロセッサコアC00〜C03は、メモリM0を介して相互にデータを送受信することができる。
コア間通信パス12は、プロセッサコアC00〜C03間を接続する。そして、プロセッサコアC00〜C03は、コア間通信パス12を介して(すなわち、メモリM0を介することなく)、相互にデータを送受信することができる。
プロセッサコアC00〜C03は、I/Oバス13に接続されている。I/Oバス13には、ユニット間接続ネットワーク2に接続されると共に、各種I/Oデバイスが接続される。
なお、各プロセッサコアC00〜C03とメモリバス11との間、各プロセッサコアC00〜C03とコア間通信パス12との間、各プロセッサコアC00〜C03とI/Oバス13との間には、図示しないが、それぞれスイッチが設けられている。そして、これらのスイッチを制御することにより、所望のプロセッサコアを、マルチプロセッサシステムの共有資源および他のプロセッサコアから切り離すことが可能である。
図3は、アプリケーションの割当ての実施例である。ここでは、マルチプロセッサシステム1において16個のアプリケーションA、B、C、D、E0〜E3、F0〜F3、G0〜G3を実行するものとする。また、各アプリケーションの優先順位が予め決められており、図4に示すアプリケーション管理テーブル21に登録されているものとする。
優先順位の高いアプリケーションは、基本的に、異なるプロセッサユニットに割り当てられる。図3に示す例では、優先順位の高い4つのアプリケーションA〜DがそれぞれプロセッサユニットU0〜U3の任意のプロセッサコアに割り当てられる。また、他のアプリケーションは、マルチプロセッサシステム1の初期状態において、それぞれ対応するプロセッサコアに割り当てられる。マルチプロセッサシステム1におけるアプリケーションの割当ての一例を図5に示す。なお、各アプリケーションは、それぞれ、共有メモリ3から対応するメモリM0〜M1にロードされる。
図6は、プロセッサユニットのソフトウェア構成を示す図である。ここでは、図1に示すプロセッサユニットU0について示すが、他のプロセッサユニットU1〜U3の構成も基本的に同じであるものとする。
図6に示すように、プロセッサコアC00〜C03上でそれぞれリアルタイムOS(RTOS)が動作する。このリアルタイムOSは、コア間通信機能を備えている。コア間通信機能は、同一プロセッサユニット内のプロセッサコア間の通信だけでなく、他のプロセッサユニット内のプロセッサコアとの間の通信も制御できるものとする。また、リアルタ
イムOS上で対応するアプリケーション(図6に示す時点では、アプリケーションA、E0、F0、G0)が実行される。なお、各アプリケーションは、それぞれ任意のプロセッサコアにおいて実行可能であるものとする。
動作状態管理モジュール22は、故障検出機能および復旧機能を提供する。故障検出機能は、各プロセッサコアの故障を検出する。プロセッサコアの故障とは、プロセッサコア自体のハードウェア故障のみを意味するものではなく、そのプロセッサコア上で動作しているアプリケーションの異常に起因する動作不良、および/またはメモリに起因する動作不良等も含むものとする。なお、プロセッサコアの故障の検出方法は、特に限定されるものではないが、例えば、パリティチェック等により実現してもよいし、上述した特許文献1、2に記載の「自己故障検出情報」あるいは「生存通知」を監視することにより実現してもよい。また、故障検出機能は、ユニット間接続ネットワーク2とプロセッサユニット間の接続(例えば、I/Oバス13)の障害、各プロセッサユニットが備えるメモリ(M0〜M3)の故障、コア間通信パス12の故障も検出するようにしてもよい。なお、動作状態管理モジュール22は、各プロセッサコアにそれぞれ常駐するようにしてもよいし、プロセッサユニット内に1つだけ設けるようにしてもよい。動作状態管理モジュール22は、プロセッサユニット内に1つだけ設ける場合には、任意のプロセッサコアに動的に割り当て可能であるものとする。この場合、動作状態管理モジュール22は、例えば、そのプロセッサユニット内で最も優先順位の高いアプリケーションと同じプロセッサコアに割り当てられるものとする。
復旧機能は、後で詳しく説明するが、プロセッサコアの故障が検出されたときに、その故障プロセッサコア上で動作していたアプリケーションを他のプロセッサコアに代替実行させる。このとき、下位階層レベル(すなわち、故障が発生したプロセッサコアを含むプロセッサユニット内)での復旧が優先される。そして、下位階層レベルでの復旧ができない場合に、上位階層レベル(すなわち、プロセッサユニット間)での復旧を行う。
リアルタイムOSは、各アプリケーションを任意のプロセッサコアに割り当てることができる。ここで、アプリケーションの割当ての変更は、例えば、リアルタイムOSのタスク切替え機能を利用して実現される。あるいは、代替実行を行うプロセッサコアをリセット、再ブートすることによりアプリケーションの割当て変更を行っても良い。
次に、実施形態のマルチプロセッサシステム1の復旧機能を実現するための制御について説明する。
実施形態のマルチプロセッサシステム1においては、各アプリケーションの優先順位が定義されているだけでなく、各プロセッサユニットにも優先順位が与えられる。プロセッサユニットの優先順位は、各ユニットにおいて実行されるアプリケーションのなかの代表アプリケーションに基づいて決定される。代表アプリケーションとは、この実施例では、当該プロセッサユニットにより実行されるアプリケーションの中で最も優先順位の高いアプリケーションを意味する。例えば、図3〜図5に示す状態においては、プロセッサユニットU0により実行されるアプリケーションA、E0、F0、G0の中で、アプリケーションAの優先順位が最も高い。よって、プロセッサユニットU0の代表アプリケーションは、アプリケーションAである。同様に、プロセッサユニットU1、U2、U3の代表アプリケーションは、それぞれ、アプリケーションB、C、Dである。
アプリケーションA〜Dの優先順位は、「第1位:A」「第2位:B」「第3位:C」「第4位:D」である。したがって、この場合、プロセッサユニットU0〜U3の優先順位は、「第1位:U0」「第2位:U1」「第3位:U2」「第4位:U3」となる。なお、各アプリケーションは、任意のプロセッサユニットの任意のプロセッサコアにより実行され得る。特に、プロセッサコアが故障した場合には、その故障したプロセッサコアで
動作していたアプリケーションは、他のプロセッサコアに割り当てられる。よって、プロセッサユニットU0〜U3の優先順位は、アプリケーションの割当てに応じて、動的に変化する。
図7は、状態管理テーブル23の実施例である。図7において、「コア0」とは、プロセッサユニットU0においては「プロセッサコアC00」を意味し、プロセッサユニットU1、U2、U3においてはそれぞれ「プロセッサコアC10」「プロセッサコアC20」「プロセッサコアC30」を意味する。「コア1」〜「コア3」についても同様である。なお、図7は、マルチプロセッサシステム1において各アプリケーションが図3に示すように割当てられているときの状態管理テーブル23の状態を表している。
状態管理テーブル23は、プロセッサユニットU0〜U3の優先順位を管理する。プロセッサユニットU0〜U3の優先順位は、上述したようにして決定される。また、状態管理テーブル23は、各アプリケーションの割当てを管理する。ここで、「★印」は、各プロセッサユニットの代表アプリケーションを示している。代表アプリケーションは、この実施例では、上述したように、各プロセッサユニット内で実行されているアプリケーションの中で最も優先順位の高いアプリケーションを意味する。
なお、状態管理テーブル23は、各プロセッサユニット内のプロセッサコアでの動作状況および故障の有無、各プロセッサユニットの優先順位、各プロセッサユニットの故障の有無に関する情報を格納するが、他の情報を含むようにしてもよい。
次に、プロセッサコアの故障が検出されたときの復旧手順について説明する。なお、以下の説明では、アプリケーションA〜D、E0〜E3、F0〜F3、G0〜G3の優先順位は、図4に示すように定義されているものとする。
<ケース1>
ケース1は、図3に示す正常動作状態において、アプリケーションBを実行しているプロセッサコアC10が故障した場合を想定する。以下、図8を参照しながらケース1における復旧手順を説明する。
プロセッサコアC10の故障を検出すると、まず、プロセッサユニットU1上で実行している各アプリケーション(B、E1、F1、G1)の優先順位をチェックする。ケース1では、故障したプロセッサコアC10により実行されていたアプリケーションBよりも優先順位の低いアプリケーション(E1、F1、G1)が存在する。ここで、アプリケーションG1の優先順位が最も低い。また、このアプリケーションG1は、プロセッサコアC13により実行されている。よって、この場合、アプリケーションG1を停止し、アプリケーションBは、図8(a)に示すように、そのアプリケーションG1を実行していたプロセッサコアC13に割当てられる。また、状態管理テーブル23は、図8(b)に示すように更新される。
このように、あるプロセッサコアが故障したときに、その故障が発生したプロセッサユニット内に代替プロセッサが存在する場合には、当該プロセッサユニット内で代替実行処理が行われる。この場合、他のプロセッサユニットの動作状況等を考慮する必要がないので、復旧処理に要する時間は短い。
なお、プロセッサコアの故障を検出する処理、代替プロセッサを決定する処理、状態管理テーブル23を更新する処理は、動作状態管理モジュール22により行われる。また、アプリケーションを他のプロセッサコアに実行させる処理は、例えば、リアルタイムOSのタスク切替え機能を利用して実現される。このとき、リアルタイムOSは、例えば、動
作状態管理モジュール22から切替え指示が与えられる。
<ケース2>
ケース2は、図9(a)に示すように、プロセッサユニットU1において、プロセッサコアC11〜C13が故障しており、プロセッサコアC10上でアプリケーションBのみが動作しているときに、そのプロセッサコアC10が故障した場合を想定する。なお、他のプロセッサユニットの各プロセッサコアはそれぞれ正常であるものとする。以下、図9(a)および図9(b)を参照しながらケース2における復旧手順を説明する。
プロセッサコアC10の故障を検出すると、ケース1と同様に、プロセッサユニットU1上で実行している各アプリケーションの優先順位をチェックする。しかし、ケース2では、プロセッサユニットU1においてアプリケーションBのみが動作している。また、プロセッサユニットU1上で動作しているプロセッサコアは、プロセッサコアC10のみである。すなわち、プロセッサユニットU1上には、アプリケーションBを代替実行可能なプロセッサコアは存在しない。この場合、アプリケーションBについて、ユニット間代替実行を行うか否かを判断する。ユニット間代替実行とは、あるプロセッサユニット上で動作していたアプリケーションを他のプロセッサユニットに割り当てて実行させることを意味する。
ユニット間代替実行を行うか否かの判断においては、まず、故障したプロセッサコアC10で動作していたアプリケーションB(以下、「故障アプリケーションB」と呼ぶことがある。)の優先順位を、他のプロセッサユニットU0、U2、U3の代表アプリケーションの優先順位と比較する。この実施例では、プロセッサユニットU0、U2、U3の代表アプリケーションは、それぞれアプリケーションA、C、Dである。ここで、アプリケーションA〜Dの優先順位は、図4に示すアプリケーション管理テーブル21に登録されており、「A>B>C>D」である。すなわち、故障アプリケーションBよりも優先順位の低いアプリケーション(C、D)が存在し、それらの中でアプリケーションDの優先順位が最も低い。よって、故障アプリケーションBを代替実行すべきプロセッサユニットとしてプロセッサユニットU3が選択される。
なお、代替実行すべきプロセッサユニットは、状態管理テーブル23により管理されている「ユニット優先順位」に基づいて選択するようにしてもよい。この場合、故障アプリケーションBを実行していたプロセッサユニットU1よりも優先順位が低く、且つ最も優先順位の低いプロセッサユニット(すなわち、プロセッサユニットU3)が選択される。
続いて、選択した代替実行プロセッサユニットにおいて、最も優先順位の低いアプリケーションを実行しているプロセッサコアを選択する。この実施例では、プロセッサコアC30〜C33においてアプリケーションD、E3、F3、G3が実行されており、その優先順位は「D>E3>F3>G3」である。よって、アプリケーションG3を実行しているプロセッサコアC33が選択される。そうすると、アプリケーションBは、図9(a)に示すように、プロセッサコアC33に割当てられる。また、状態管理テーブル23は、図9(b)に示すように更新される。なお、プロセッサユニットU1は、すべてのプロセッサコアが停止しているので、マルチプロセッサシステム1から切り離される。
上述の手順により、プロセッサユニットU3においては、アプリケーションD、E3、F3、Bが実行されることになる。したがって、以降、プロセッサユニットU3の代表アプリケーションは「B」になる。そうすると、プロセッサユニットU3の優先順位は、プロセッサユニットU2よりも高くなる。
このように、あるプロセッサコアが故障したときに、その故障が発生したプロセッサユ
ニット内に代替プロセッサが存在しない場合には、他のプロセッサユニットに代替実行を依頼する。このとき、最も優先順位の低いプロセッサユニットが代替実行を行うので、優先順位の高いアプリケーションの動作が停止することはない。
なお、ケース2は、プロセッサユニットU1が故障した場合にも同様に起こり得る。プロセッサユニットU1の故障は、例えば、プロセッサユニットU1とユニット間接続ネットワーク2との接続に障害が発生したとき、プロセッサユニットU1が備えるメモリM1が故障したとき、プロセッサユニットU1内の各プロセッサコア間を接続するコア間通信パス12が故障したときに検出される。
<ケース3>
ケース3は、ケース2による復旧手順に続いて、図10(a)に示すように、下記の動作状態においてさらにプロセッサコアC00が故障した場合を想定する。
プロセッサユニットU0:プロセッサコアC01〜C03が故障しており、プロセッサコアC00でアプリケーションAが動作中
プロセッサユニットU1:すべてのプロセッサコアが故障
プロセッサユニットU2:プロセッサコアC23が故障しており、プロセッサコアC20〜C22においてそれぞれアプリケーションC、E2、F2が動作中
プロセッサユニットU3:プロセッサコアC30〜C33においてそれぞれアプリケーションD、E3、F3、Bが動作中
そして、このような動作状態において、さらに、アプリケーションAを実行するプロセッサコアC00が故障したものとする。なお、プロセッサコアC00が故障した時点で、プロセッサユニットU0〜U3の優先順位は、図9(b)に示すように「1位:U0」「2位:U3」「3位:U2」「U1:故障」であるものとする。以下、図10を参照しながらケース3における復旧手順を説明する。
アプリケーションAを実行するプロセッサコアC00が故障したとき、プロセッサユニットU0上に代替可能なプロセッサコアは存在しない。そうすると、プロセッサユニット間の優先順位に基づいて代替実行すべきプロセッサユニットを決定する。ここで、プロセッサユニットU0〜U3の優先順位は、「U3>U2(U0、U1は、故障)」である。したがって、アプリケーションAを代替実行すべきプロセッサユニットとして、より優先順位の低いプロセッサユニットU2が選択される。
続いて、選択した代替実行プロセッサユニットにおいて、最も優先順位の低いアプリケーションを実行しているプロセッサコアを選択する。この実施例では、プロセッサコアC20〜C22においてアプリケーションC、E2、F2が実行されており、その優先順位は「C>E2>F2」である。よって、アプリケーションF2を実行しているプロセッサコアC22が選択される。そうすると、アプリケーションAは、図10(a)に示すように、プロセッサコアC22に割り当てられる。また、状態管理テーブル23は、図10(b)に示すように更新される。なお、プロセッサユニットU0は、すべてのプロセッサコアが停止しているので、マルチプロセッサシステム1から切り離される。
なお、ケース3は、プロセッサユニットU1が故障した後にプロセッサユニットU0が故障した場合にも同様に起こり得る。
このように、実施形態のマルチプロセッサシステム1においては、アプリケーションの配置に応じて、プロセッサユニットの優先順位が動的に変化する。したがって、階層型のマルチプロセッサシステムにおいて、優先順位の高いアプリケーションの実行を確保できる。例えば、図9〜図10に示す実施例では、まず、プロセッサユニットU1が故障したことによって、アプリケーションBがプロセッサユニットU3に割り当てられる。このとき、プロセッサユニットU3の優先順位は、プロセッサユニットU2よりも高くなる。こ
のため、プロセッサユニットU1の故障に続いてプロセッサユニットU0が故障したときに、アプリケーションAは、プロセッサユニットU3ではなく、プロセッサユニットU2に割り当てられる。すなわち、優先順位の高いアプリケーションA、B、C、Dは、可能な限り異なるプロセッサユニットに分散されることになる。したがって、優先順位の高いアプリケーションの実行を継続しやすくなる。
これに対して、各プロセッサユニットの優先順位が固定的に決められていたとすると、故障したプロセッサコアで動作していたアプリケーションを最も優先順位の低いプロセッサユニットに割り当てる場合、代替実行プロセッサユニットとして常に同じプロセッサユニット(すなわち、最低優先順位のプロセッサユニット)が選択されることになる。したがって、複数の故障が発生すると、優先順位の高いアプリケーションの実行を継続できなくなる可能性が高くなる。
図11は、故障検出時の復旧手順を示すフローチャートである。このフローチャートの処理は、動作状態管理モジュール22により実行される。ただし、アプリケーションの代替実行は、例えば、リアルタイムOSが動作状態管理モジュール22からの指示に従って行うようにしてもよい。
各プロセッサユニット上で動作する動作状態管理モジュール22は、常時、プロセッサコアの状態をモニタする。ここで、動作状態管理モジュール22は、当該プロセッサユニット内のプロセッサコアの状態をモニタすると共に、他のプロセッサユニット内のプロセッサコアの状態もモニタできるものとする。そして、ステップS1においてあるプロセッサコア(以下、故障プロセッサコア)の故障が検出されると、復旧手順が実行される。
ステップS2では、故障プロセッサコア上で動作していたアプリケーション(以下、故障アプリケーション)の優先順位と、その故障プロセッサコアを搭載するプロセッサユニット上で動作する他のアプリケーションの優先順位とを比較する。そして、故障アプリケーションよりも優先順位の低いアプリケーションが当該プロセッサユニット上で動作中であれば、ステップS11へ進む。ステップS11では、故障アプリケーションよりも優先順位の低いアプリケーション(例えば、当該プロセッサユニット上で最も優先順位の低いアプリケーション)を停止し、その停止したアプリケーションを実行していたプロセッサコアに、故障アプリケーションを代替実行させる。なお、ステップS11の処理は、例えば、図8に示す実施例に対応する。
故障アプリケーションよりも優先順位の低いアプリケーションが当該プロセッサユニット上で動作していないときは、ステップS3へ進む。ここで、故障アプリケーションよりも優先順位の低いアプリケーションが当該プロセッサユニット上で動作していない状態としては、以下の2つの動作状態が考えられる。
第1の動作状態:当該プロセッサユニットにおいて、故障プロセッサコア以外のプロセッサコア上で故障アプリケーション以外のアプリケーションが動作しており、且つ、故障アプリケーションの優先順位が当該プロセッサユニット内で最も低い
第2の動作状態:当該プロセッサユニット上で故障プロセッサコア以外のプロセッサコアが動作していない(すなわち、故障アプリケーションの優先順位が当該プロセッサユニット内で最も高い)
当該プロセッサユニットの動作状態が第1の状態であれば、ステップS12に進む。ステップS12では、故障プロセッサコアがマルチプロセッサシステムから切り離される。
当該プロセッサユニットの動作状態が第2の状態であれば、ステップS4に進む。ステップS4では、故障アプリケーションを他のプロセッサユニットに代替実行させるか否かを判断する。この判断は、プロセッサユニットの優先順位に従って行われる。すなわち、
故障プロセッサコアを搭載するプロセッサユニット(以下、故障プロセッサユニット)の優先順位が動作中の全プロセッサユニットの中で最も低い場合には、ステップS13へ進む。ステップS13では、故障プロセッサユニットがマルチプロセッサシステムから切り離される。
一方、故障プロセッサユニットよりも優先順位の低いプロセッサユニットが存在する場合には、ステップS5へ進む。ステップS5では、最も優先順位の低いプロセッサユニット上で最も優先順位の低いアプリケーションを実行しているプロセッサコアを選択する。そして、故障アプリケーションをその選択したプロセッサコアに代替実行させる。なお、代替実行するプロセッサコアは、必ずしも、最も優先順位の低いアプリケーションを実行しているプロセッサに限定されるものではない。そして、ステップS6において、状態管理テーブル23を更新する。このとき、プロセッサユニットの優先順位も更新される。
図12および図13は、システム構成例を示す図である。図12に示す構成では、代替実行処理に係わるテーブル(アプリケーション管理テーブル21および状態管理テーブル23)は、各プロセッサユニットU0〜U3が備える各メモリM0〜M3にそれぞれ設けられる。この場合、各メモリM0〜M3に設けられるテーブルの内容は、互いに同じである必要がある。よって、例えば、代替実行処理等によってアプリケーションを実行すべきプロセッサコアが変更されると、各メモリM0〜M3に設けられるテーブルの内容が同期して更新される。図13に示す構成では、上記テーブルは、共有メモリ3に設けられる。この場合、各プロセッサコアは、必要に応じて共有メモリ3にアクセスして対応する情報を取得することになる。
(付記1)
互いに接続された複数のプロセッサユニットがそれぞれ1または複数のプロセッサコアを備えるマルチプロセッサシステムであって、
前記複数のプロセッサユニットの優先順位は、各プロセッサユニットにおいて実行されているアプリケーションの中の代表アプリケーションの優先順位に基づいて決定される
ことを特徴とするマルチプロセッサシステム。
(付記2)
付記1に記載のマルチプロセッサシステムであって、
各プロセッサユニットの代表アプリケーションは、そのプロセッサユニットが備えるプロセッサコアにより実行されているアプリケーションの中で最も優先順位の高いアプリケーションである
ことを特徴とするマルチプロセッサシステム。
(付記3)
互いに接続された複数のプロセッサユニットがそれぞれ1または複数のプロセッサコアを備えるマルチプロセッサシステムであって、
アプリケーションの優先順位を管理する第1の管理手段と、
各プロセッサユニット上で実行されているアプリケーションの優先順位に基づいて各プロセッサユニットの優先順位を管理する第2の管理手段と、
第1のプロセッサユニットにおいて、故障が検出されたプロセッサコアにより実行されていたアプリケーションである代替対象アプリケーションの優先順位がそのユニット内で最も高かった場合であって、そのユニット内に代替実行可能なプロセッサコアが存在しない場合には、前記第1のプロセッサユニットよりも優先順位の低い第2のプロセッサユニット内のプロセッサコアに前記代替対象アプリケーションを割り当てる制御手段、
を有するマルチプロセッサシステム。
(付記4)
付記3に記載のマルチプロセッサシステムであって、
前記第2のプロセッサユニットは、前記複数のプロセッサユニットの中で最も優先順位の低いプロセッサユニットである
ことを特徴とするマルチプロセッサシステム。
(付記5)
付記3に記載のマルチプロセッサシステムであって、
前記制御手段は、前記第2のプロセッサユニットにおいて最も優先順位の低いアプリケーションを実行しているプロセッサコアに前記代替対象アプリケーションを割り当てる
ことを特徴とするマルチプロセッサシステム。
(付記6)
付記3に記載のマルチプロセッサシステムであって、
前記制御手段は、前記第1のプロセッサユニット内に代替実行可能なプロセッサコアが存在する場合には、そのユニットにおいて最も優先順位の低いアプリケーションを実行しているプロセッサコアに前記代替対象アプリケーションを割り当てる
ことを特徴とするマルチプロセッサシステム。
(付記7)
付記3に記載のマルチプロセッサシステムであって、
前記複数のプロセッサユニットは、それぞれ、メモリ手段を備え、
前記第1および第2の管理手段により管理される情報は、各プロセッサユニットが備える前記メモリ手段にそれぞれ格納される
ことを特徴とするマルチプロセッサシステム。
(付記8)
付記3に記載のマルチプロセッサシステムであって、
前記複数のプロセッサユニットからアクセス可能な共有メモリ手段をさらに備え、
前記第1および第2の管理手段により管理される情報は、前記共有メモリ手段に格納される
ことを特徴とするマルチプロセッサシステム。
(付記9)
付記3に記載のマルチプロセッサシステムであって、
前記制御手段は、前記第1のプロセッサユニットが故障したときに、前記代替対象アプリケーションを前記第2のプロセッサユニット内のプロセッサコアに割り当てる
ことを特徴とするマルチプロセッサシステム。
(付記10)
付記9に記載のマルチプロセッサシステムであって、
前記制御手段は、前記複数のプロセッサユニット間を接続するネットワークと前記第1のプロセッサユニットとの接続に障害が発生したときに、前記代替対象アプリケーションを前記第2のプロセッサユニット内のプロセッサコアに割り当てる
ことを特徴とするマルチプロセッサシステム。
(付記11)
付記9に記載のマルチプロセッサシステムであって、
前記制御手段は、前記第1のプロセッサユニットにおいてそのユニット内の各プロセッサコアが共用するメモリ手段が故障したときに、前記代替対象アプリケーションを前記第
2のプロセッサユニット内のプロセッサコアに割り当てる
ことを特徴とするマルチプロセッサシステム。
(付記12)
付記9に記載のマルチプロセッサシステムであって、
前記制御手段は、前記第1のプロセッサユニットにおいてそのユニット内の各プロセッサコア間を接続するパスが故障したときに、前記代替対象アプリケーションを前記第2のプロセッサユニット内のプロセッサコアに割り当てる
ことを特徴とするマルチプロセッサシステム。
本発明の実施形態のマルチプロセッサシステムの基本構成を示す図である。 プロセッサユニットのハードウェア構成を示す図である。 アプリケーションの割当ての実施例である。 アプリケーション管理テーブルの実施例である。 アプリケーションの割当て状態の一例を示す図である。 プロセッサユニットのソフトウェア構成を示す図である。 状態管理テーブルの実施例である。 復旧手順(ユニット内での代替)を説明する図である。 復旧手順(ユニット間での代替1)を説明する図である。 復旧手順(ユニット間での代替2)を説明する図である。 故障検出時の復旧手順を示すフローチャートである。 システム構成例(分散型)を示す図である。 システム構成例(共有型)を示す図である。
符号の説明
1 マルチプロセッサシステム
2 ユニット間接続ネットワーク
3 共有メモリ
11 メモリバス
12 コア間通信パス
13 I/Oバス
21 アプリケーション管理テーブル
22 動作状態管理モジュール
23 状態管理テーブル

Claims (5)

  1. 互いに接続された複数のプロセッサユニットがそれぞれ1または複数のプロセッサコアを備えるマルチプロセッサシステムであって、
    前記複数のプロセッサユニットの優先順位は、各プロセッサユニットにおいて実行されているアプリケーションの中の代表アプリケーションの優先順位に基づいて決定される
    ことを特徴とするマルチプロセッサシステム。
  2. 互いに接続された複数のプロセッサユニットがそれぞれ1または複数のプロセッサコアを備えるマルチプロセッサシステムであって、
    アプリケーションの優先順位を管理する第1の管理手段と、
    各プロセッサユニット上で実行されているアプリケーションの優先順位に基づいて各プロセッサユニットの優先順位を管理する第2の管理手段と、
    第1のプロセッサユニットにおいて、故障が検出されたプロセッサコアにより実行されていたアプリケーションである代替対象アプリケーションの優先順位がそのユニット内で最も高かった場合であって、そのユニット内に代替実行可能なプロセッサコアが存在しない場合には、前記第1のプロセッサユニットよりも優先順位の低い第2のプロセッサユニット内のプロセッサコアに前記代替対象アプリケーションを割り当てる制御手段、
    を有するマルチプロセッサシステム。
  3. 請求項2に記載のマルチプロセッサシステムであって、
    前記第2のプロセッサユニットは、前記複数のプロセッサユニットの中で最も優先順位の低いプロセッサユニットである
    ことを特徴とするマルチプロセッサシステム。
  4. 請求項2に記載のマルチプロセッサシステムであって、
    前記制御手段は、前記第2のプロセッサユニットにおいて最も優先順位の低いアプリケーションを実行しているプロセッサコアに前記代替対象アプリケーションを割り当てる
    ことを特徴とするマルチプロセッサシステム。
  5. 請求項2に記載のマルチプロセッサシステムであって、
    前記制御手段は、前記第1のプロセッサユニット内に代替実行可能なプロセッサコアが存在する場合には、そのユニットにおいて最も優先順位の低いアプリケーションを実行しているプロセッサコアに前記代替対象アプリケーションを割り当てる
    ことを特徴とするマルチプロセッサシステム。
JP2007235370A 2007-09-11 2007-09-11 マルチプロセッサシステム Withdrawn JP2009069963A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2007235370A JP2009069963A (ja) 2007-09-11 2007-09-11 マルチプロセッサシステム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2007235370A JP2009069963A (ja) 2007-09-11 2007-09-11 マルチプロセッサシステム

Publications (1)

Publication Number Publication Date
JP2009069963A true JP2009069963A (ja) 2009-04-02

Family

ID=40606180

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007235370A Withdrawn JP2009069963A (ja) 2007-09-11 2007-09-11 マルチプロセッサシステム

Country Status (1)

Country Link
JP (1) JP2009069963A (ja)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2011087020A1 (ja) * 2010-01-15 2011-07-21 株式会社日立製作所 組み込み装置及び組み込みシステム
JP2013225208A (ja) * 2012-04-20 2013-10-31 Toyota Motor Corp 情報処理装置、情報処理方法、及びプログラム
JP2013254422A (ja) * 2012-06-08 2013-12-19 Nec Corp サーバ装置、管理ユニット、障害対処方法及びプログラム
WO2014125606A1 (ja) * 2013-02-15 2014-08-21 三菱電機株式会社 制御装置
JP2015229467A (ja) * 2014-06-06 2015-12-21 本田技研工業株式会社 電子制御システム
JP2018052315A (ja) * 2016-09-29 2018-04-05 日立オートモティブシステムズ株式会社 自動車用制御装置及び内燃機関用制御装置

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2011087020A1 (ja) * 2010-01-15 2011-07-21 株式会社日立製作所 組み込み装置及び組み込みシステム
CN102667729A (zh) * 2010-01-15 2012-09-12 株式会社日立制作所 嵌入式装置以及嵌入式系统
JP2013225208A (ja) * 2012-04-20 2013-10-31 Toyota Motor Corp 情報処理装置、情報処理方法、及びプログラム
JP2013254422A (ja) * 2012-06-08 2013-12-19 Nec Corp サーバ装置、管理ユニット、障害対処方法及びプログラム
WO2014125606A1 (ja) * 2013-02-15 2014-08-21 三菱電機株式会社 制御装置
JP6029737B2 (ja) * 2013-02-15 2016-11-24 三菱電機株式会社 制御装置
US9952579B2 (en) 2013-02-15 2018-04-24 Mitsubishi Electric Corporation Control device
JP2015229467A (ja) * 2014-06-06 2015-12-21 本田技研工業株式会社 電子制御システム
JP2018052315A (ja) * 2016-09-29 2018-04-05 日立オートモティブシステムズ株式会社 自動車用制御装置及び内燃機関用制御装置

Similar Documents

Publication Publication Date Title
US8281007B2 (en) Cluster control apparatus, cluster control method, and computer product
JP5851503B2 (ja) 高可用性仮想機械環境におけるアプリケーションの高可用性の提供
CN102402395B (zh) 基于仲裁磁盘的高可用系统不间断运行方法
JP4882845B2 (ja) 仮想計算機システム
JP6003350B2 (ja) 監視装置、情報処理装置、及び監視方法
US8219851B2 (en) System RAS protection for UMA style memory
JP2007172334A (ja) 並列型演算システムの冗長性を確保するための方法、システム、およびプログラム
JP2009069963A (ja) マルチプロセッサシステム
JP2008107896A (ja) 物理資源制御管理システム、物理資源制御管理方法および物理資源制御管理用プログラム
CN110609699B (zh) 维护存储系统的组件的方法、电子设备和计算机可读介质
JP4491482B2 (ja) 障害回復方法、計算機、クラスタシステム、管理計算機及び障害回復プログラム
WO2015118679A1 (ja) 計算機、ハイパーバイザ、物理コアの割り当て方法
JP5998577B2 (ja) クラスタ監視装置、クラスタ監視方法、及びプログラム
US20180357137A1 (en) Selective mirroring of predictively isolated memory
JP2010186242A (ja) 計算機システム
JP5712714B2 (ja) クラスタシステム、仮想マシンサーバ、仮想マシンのフェイルオーバ方法、仮想マシンのフェイルオーバプログラム
JP2009003537A (ja) 計算機
JP2021026375A (ja) ストレージシステム
WO2008004330A1 (fr) Système à processeurs multiples
JP2009026182A (ja) プログラム実行システム及び実行装置
JP4829821B2 (ja) マルチプロセッサシステムおよびマルチプロセッサシステムにおける復旧方法
JP4867896B2 (ja) 情報処理システム
JP5217128B2 (ja) エミュレーション装置及びエミュレーション方法
JP5832408B2 (ja) 仮想計算機システム及びその制御方法
US20230092343A1 (en) Lockstep processor recovery for vehicle applications

Legal Events

Date Code Title Description
A300 Withdrawal of application because of no request for examination

Free format text: JAPANESE INTERMEDIATE CODE: A300

Effective date: 20101207