JPWO2011104824A1 - マルチコアプロセッサシステム、制御プログラム、および制御方法 - Google Patents

マルチコアプロセッサシステム、制御プログラム、および制御方法 Download PDF

Info

Publication number
JPWO2011104824A1
JPWO2011104824A1 JP2012501563A JP2012501563A JPWO2011104824A1 JP WO2011104824 A1 JPWO2011104824 A1 JP WO2011104824A1 JP 2012501563 A JP2012501563 A JP 2012501563A JP 2012501563 A JP2012501563 A JP 2012501563A JP WO2011104824 A1 JPWO2011104824 A1 JP WO2011104824A1
Authority
JP
Japan
Prior art keywords
thread
core
application
cpu
reliability
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
Application number
JP2012501563A
Other languages
English (en)
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.)
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
Publication of JPWO2011104824A1 publication Critical patent/JPWO2011104824A1/ja
Pending legal-status Critical Current

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/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/505Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Hardware Redundancy (AREA)
  • Debugging And Monitoring (AREA)

Abstract

マルチコアプロセッサシステムにおいて、アプリケーションA,C,Dが実行中であり、実行中のアプリケーションはすべて高信頼アプリケーションである。CPU0にはアプリケーションCとアプリケーションDの高信頼マスタスレッドが割り当てられ、CPU1にはアプリケーションAの高信頼マスタスレッドが割り当てられている。マスタCPUであるCPU0が、スケジューラ(100)により低信頼アプリケーションであるアプリケーションBの低信頼スレッドの割り当て指示を受け付けると、高信頼マスタスレッドが割り当てられていないCPUを特定する。ここでは、CPU2とCPU3が特定され、CPU0がスケジューラ(100)により特定されたCPU2へ低信頼スレッドの起動指示を通知する。これにより、高信頼マスタスレッドと低信頼スレッドが同一のCPUに割り当てられないように制御される。

Description

本発明は、マルチコアプロセッサにおけるマスタスレーブのスケジュール処理とハイパーバイザ処理を行うマルチコアプロセッサシステム、制御プログラム、および制御方法に関する。
従来、マルチコアプロセッサシステムにおいては、分散システム(以下、「従来方式1」と称する。)と、集中共用システム(以下、「従来方式2」と称する。)と呼ばれる方式が知られている。
従来方式1は、個々のCPU(Central Processing Unit)に物理的に分かれているメモリが接続される方式である。よって、従来方式1では、互いに独立したメモリを分散して接続するため、独立したアプリケーション同士によってアクセスが競合せず、アクセスの競合によるCPUの性能劣化が発生しない。したがって、1つのアプリケーションが障害によりクラッシュしても影響を受けるのはクラッシュしたアプリケーションが動作していたCPUだけである。
ここで、クラッシュとは、障害(バグ)を含んだソフトウェアが不正な領域にデータを書き込んだり、不正なアドレスにジャンプすることにより、正常な動作ができなくなる状態のうち、障害を起こしたソフトウェアが異常終了するだけではなく、システム領域を破壊や不正ジャンプすることにより、OSを含む他のプロセスを続行ができなくなる状態を指す。
従来方式2は、物理的なメモリが1つであり、全CPUがバスなどを介して当該メモリに接続される方式である。従来方式2は従来方式1と比較してメモリが少ないため低廉かつ低消費電力であるので、組み込みシステムにおいては、従来方式2が採用されていた。従来からマスタCPUが行うスケジューリングでは、たとえば、負荷の小さいCPUから順にアプリケーションあるいはアプリケーションから起動されるスレッドが割り当てられていた。
また、大型計算機などでは、チェックポイント/リスタート方法など、クラッシュ時に備えてアプリケーションの動作状態を保存し、問題が発生した場合にはチェックポイントから復帰する機構(従来技術1)を備えていた。
また、大型計算機などでは、OSを含むソフトウェアが仮想マシンを通じてハードウェアにアクセスを行う手法(従来技術2、たとえば、下記特許文献1〜3を参照。)が知られている。一般に仮想マシンは、CPUとソフトウェアのくくりつけを仮想化することで隔離し、円滑なマイグレーション(移動先に仮想マシンごと移す)を実現するために用いられる。1つのソフトウェアが障害によりクラッシュした場合、ダウンするのはクラッシュしたソフトウェアが動作していた仮想マシンということになる。
国際公開第2006/134691号パンフレット 特開2002−202959号公報 特開2008−152594号公報
しかしながら、従来より、クラッシュする可能性が低い高信頼であるアプリケーションとクラッシュする可能性が高い高信頼でないアプリケーションが同時に実行される。よって、高信頼であるアプリケーションが、高信頼でないアプリケーションに起因して発生するクラッシュの影響でクラッシュするという問題点があった。
従来技術1および2を用いれば、高信頼であるアプリケーションがクラッシュするのを防止できるが、従来技術1および2では、メモリリソースが膨大に必要となり、メモリリソースの少ない組み込みシステムにおいて従来技術1および2を適用するのは困難であった。
本発明は、上述した問題点を解消するため、クラッシュの可能性の高いアプリケーションがクラッシュすることの影響がクラッシュの可能性の低いアプリケーションに及ぶのを回避することができるマルチコアプロセッサシステム、制御プログラム、および制御方法を提供することを目的とする。
上述した課題を解決し、目的を達成するため、マルチコアプロセッサシステムは、マルチコアプロセッサと、アプリケーションソフトウェア(以下、「アプリケーション」)ごとに動作に関する信頼度を記憶する記憶装置とを備え、前記マルチコアプロセッサ内の一のコアが前記記憶装置にアクセス可能なマルチコアプロセッサシステムであって、前記一のコアが、前記アプリケーションのうち対象スレッドを起動する対象アプリケーションの信頼度を前記記憶装置から抽出し、抽出された信頼度と指定閾値に基づいて、前記対象アプリケーションが高信頼であるアプリケーションか否かを判断し、前記高信頼であるアプリケーションと判断された場合、前記マルチコアプロセッサのうち高信頼でないアプリケーションのスレッドが割り当てられていないコアを特定し、前記高信頼でないアプリケーションと判断された場合、前記マルチコアプロセッサのうち前記高信頼であるアプリケーションのスレッドが割り当てられていないコアを特定し、前記対象スレッドの起動指示を、特定されたコアへ通知することを要件とする。
本マルチコアプロセッサシステム、制御プログラム、および制御方法によれば、クラッシュの可能性の高いアプリケーションがクラッシュすることの影響がクラッシュの可能性の低いアプリケーションに及ぶのを回避することができるという効果を奏する。
実施の形態1にかかる制御処理の一実施例を示す説明図である。 信頼度リストの一例を示す説明図である。 タスク構成情報の一例を示す説明図である。 マルチコアプロセッサシステムのハードウェア構成を示すブロック図である。 実施の形態1にかかるマルチコアプロセッサシステムの機能的構成を示すブロック図である。 高信頼スレッドが割り当てられる例を示す説明図である。 高信頼スレッドの割り当て後のタスク構成情報の一例を示す説明図である。 低信頼スレッドが割り当てられる例を示す説明図である。 すべてのCPU0〜3に低信頼スレッドが割り当てられない例を示す説明図である。 マスタCPUに低信頼スレッドが割り当てられない例を示す説明図である。 実施の形態1にかかるマルチコアプロセッサシステムによる制御処理の制御処理手順の一例を示すフローチャートである。 図11で示した高信頼マスタスレッドの割り当て処理(ステップS1107)の詳細な説明を示すフローチャートである。 図11で示した低信頼スレッドの割り当て処理(ステップS1109)の詳細な説明を示すフローチャートである。 マルチコアプロセッサシステムによる登録処理の登録処理手順の一例を示すフローチャートである。 実施の形態2にかかる制御処理の一実施例を示す説明図である。 実施の形態2にかかるマルチコアプロセッサシステムの機能的構成を示すブロック図である。 スレッドがクラッシュした例を示す説明図である。 各CPUが存命シグナルをCPU0へ送付する例を示す説明図である。 アプリケーションが停止される例を示す説明図である。 リブート指示例およびスレッドの割り当て指示例を示す説明図である。 信頼度リストの信頼度が変更される例を示す説明図である。 ストールCPUを除く残余のCPUにクラッシュしたスレッドが割り当てられる例を示す説明図である。 再起動後のタスク構成情報の一例を示す説明図である。 ストールCPUへスレッドの起動指示が通知される例を示す説明図である。 実施の形態2にかかるマルチコアプロセッサシステムによる制御処理の制御処理手順の一例を示すフローチャートである。 図25で示した再起動処理(ステップS2503)の詳細な説明を示すフローチャートである。 図25で示した再起動処理(ステップS2504)の詳細な説明を示すフローチャートである。 マルチコアプロセッサによる存命シグナルの送付処理手順の一例を示すフローチャートである。
本発明によるマルチコアプロセッサシステム、制御プログラム、および制御方法の好適な実施の形態を詳細に説明する。
まず、実施の形態1では、各CPUへの割り当てについて説明する。つぎに、実施の形態2では、CPUがストールした場合に、CPUのストールによりクラッシュしたスレッドの再起動に関して説明する。
ここで、スレッドは、周知のようにアプリケーション内で行われる処理の実行単位である。そして、プロセスは、少なくとも1以上のスレッドを含む実行単位である。スレッドを1のみしか含まないプロセスは、実質的にスレッドである。よって、実施の形態1では、割り当ての対象がスレッドであってもプロセスであっても、スケジューラ100による制御処理に違いはないため、すべてスレッドを用いて説明する。
実施の形態1では、利用者からのアプリケーションの起動指示が通知されることで起動される最初の処理を総称してマスタスレッドと称する。さらに、実施の形態1では、当該マスタスレッドによってあらたに起動される処理をスレーブスレッドと称し、実施の形態1では、スレーブスレッドによってあらたに起動される処理も同様にスレーブスレッドと称する。
なお、マスタスレッドでは、スレーブスレッドの親子関係や処理済みのスレッドにより得られる結果などをすべて管理しているため、マスタスレッドがクラッシュした場合には、アプリケーションが再起動となる。
以下に添付図面を参照して、実施の形態1および実施の形態2を詳細に説明する。
(実施の形態1)
図1は、実施の形態1にかかる制御処理の一実施例を示す説明図である。図1では、アプリケーションA,C,Dがすでに実行中であり、さらに、アプリケーションBのスレッドの割り当て指示をスケジューラ100が受け付けたとする。アプリケーションA,C,Dは高信頼であるアプリケーションであり、アプリケーションBは高信頼でないアプリケーションであるとする。
ここで、高信頼であるアプリケーションと高信頼でないアプリケーションについて詳細に説明する。上述のように高信頼であるアプリケーションは、クラッシュする可能性が低いアプリケーションである。たとえば、高信頼であるアプリケーションとは、出荷時にインストールされているアプリケーションや出荷元が配布しているアプリケーションである。
一方、上述のように高信頼でないアプリケーションは、クラッシュする可能性が高いアプリケーションである。たとえば、高信頼でないアプリケーションとは、運用後に、利用者が任意にインストールしたアプリケーションである。
実施の形態1では、高信頼であるアプリケーションは高信頼アプリケーションと称し、高信頼アプリケーションのスレッドは高信頼スレッドと称する。高信頼スレッドのうちマスタスレッドは高信頼マスタスレッドと称し、高信頼スレッドのうちスレーブスレッドは高信頼スレーブスレッドと称する。
そして、実施の形態1では、高信頼でないアプリケーションは低信頼アプリケーションと称し、低信頼アプリケーションのスレッドは低信頼スレッドと称する。低信頼スレッドのうちマスタスレッドは低信頼マスタスレッドと称し、低信頼スレッドのうちスレーブスレッドは低信頼スレーブスレッドと称する。
図1では、CPU0には、アプリケーションDの高信頼マスタスレッドとアプリケーションEの高信頼マスタスレッドが割り当てられ、CPU1には、アプリケーションAの高信頼マスタスレッドが割り当てられている。CPU2には、アプリケーションAの高信頼スレーブスレッドが割り当てられている。CPU3には、アプレケーションAが起動する高信頼スレーブスレッドが割り当てられている。
ここで、スケジューラ100はオペレーティングシステムに含まれている。マスタCPUであるCPU0が、スケジューラ100によりスレッドの割り当て指示を受けると当該スレッドの割り当て処理を実行する。
まず、CPU0が、スケジューラ100によりアプリケーションBのスレッドの割り当て指示を受け付けると、アプリケーションBに関する信頼度をメモリから抽出して、アプリケーションBが、高信頼アプリケーションであるか否かを判断する。ここでは、アプリケーションBは、低信頼アプリケーションと判断される。
そして、たとえば、CPU0が、スケジューラ100によりCPU0〜3のうち高信頼マスタスレッドが割り当てられていないCPUを特定する。ここで、CPU0とCPU1には、高信頼マスタスレッドが割り当てられているため、低信頼アプリケーションBのマスタスレッドを割り当てることができない(図1中点線矢印)。
ここでは、CPU2とCPU3が、高信頼マスタスレッドが割り当てられていないCPUとして特定され、たとえば、CPU2にアプリケーションBのスレッド(図1中低信頼スレッド))が割り当てられる(図1中実線矢印)。
たとえば、低信頼スレッドがクラッシュすることによりCPU2がストールしてしまうと、CPU2に割り当てられている高信頼スレーブスレッドも同時にクラッシュする。しかしながら、高信頼スレッドであってもスレーブスレッドであるため、当該クラッシュした高信頼スレーブスレッドのみを再実行させればよく、クラッシュした影響が他のスレッドに波及しない。
また、図1では、高信頼マスタスレッドであるか低信頼スレッドであるかで割り当てるCPUを分けているが、高信頼スレッドであるか低信頼スレッドであるかで割り当てるCPUを分けてもよい。これにより、低信頼スレッドがクラッシュした場合の影響が、高信頼スレッドに影響しない。
(信頼度リスト)
図2は、信頼度リストの一例を示す説明図である。信頼度リスト200は、マルチコアプロセッサの各CPUがアクセス可能なメモリに記憶されている情報であって、アプリケーション名201と、信頼度項目202とを備えている。ここでは、信頼度項目202の値が信頼度を示し、理解の容易化のために信頼度項目202を、高信頼と低信頼とクラッシュ済との3段階としている。信頼度については、従来から用いられている優先度の番号を流用してもよい。具体的には、たとえば、信頼度項目202の値が3の場合、高信頼アプリケーションであることを示し、信頼度項目202の値が2の場合、低信頼アプリケーションであることを示し、信頼度項目202の値が1の場合、クラッシュしたことがあるクラッシュ済のアプリケーションであることを示す。
また、マルチコアプロセッサシステムの運用設計時に設計者が、たとえば、あらかじめ組み込むアプリケーションに関する信頼度を信頼度リスト200に登録する。
(タスク構成情報)
図3は、タスク構成情報の一例を示す説明図である。タスク構成情報300はマルチコアプロセッサの各CPUがアクセス可能なメモリに記憶されている情報であり、タスク構成情報には実行中のアプリケーションに関する情報が記述されている。アプリケーションに関する情報とは、アプリケーションが高信頼アプリケーションか否かを示す信頼度フラグと、アプリケーションの各スレッドがどのCPUに割り当てられたかを示す割り当て情報である。
タスク構成情報300では、“TASK_NAME”の代入文によりタスク名と、信頼度フラグとが示されている。ここで、タスクは、周知のように一つのアプリケーションが行っている作業全体を示す。タスク構成情報300では、TASK_FOOとTASK_XYZが記述され、TASK_FOOがアプリケーションAに関する情報であり、TASK_XYZがアプリケーションBに関する情報である。
さらに、タスク構成情報300では、“MASTER”の代入文によりマスタスレッドの割り当て情報が示されている。TASK_FOOでは、マスタスレッドがCPU0に割り当てられていることが記述されている。さらに、タスク構成情報300のTASK_FOOでは、MASTER”の代入文の下にスレーブスレッドの割り当て情報が記述されている。スレーブスレッド1が“LIB_BAR”を呼び出して、CPU0に割り当てられているとことが記述され、スレーブスレッド2が“LIB_BUZ”を呼び出して、CPU1に割り当てられていることが記述されている。ここで、“LIB_BAR”と“LIB_BUZ”は、関数の名称である。
さらに、タスク構成情報300のTASK_FOOでは、スレーブスレッド3が0から200まで同一の処理が行われるループ処理のうちの0〜100までを行うスレッドであり、スレーブスレッド3が、CPU2に割り当てられていることが記述されている。
そして、タスク構成情報300のTASK_FOOでは、0から200まで同一の処理が行われるループ処理のうちの101〜200までを行うスレッドがCPU2に割り当てられていることが記述されている。
ここで、タスク構成情報300内に記述されているCOARSEGRAINとMIDDLEGRAINについて説明する。実施の形態1では、関数を呼び出し、呼び出した関数を実行するスレッドを粗粒度のスレッドと呼び、ループ処理を実行するスレッドを中粒度のスレッドと呼ぶ。そして、COAESEGRAINで表されているスレッドが、粗粒度のスレッドであり、MIDDLEGRAINで表されているスレッドが、中粒度のスレッドである。
また、TASK_XYZでは、マスタスレッドがCPU1に割り当てられ、スレーブスレッドが、CPU1に割り当てられていることが記述されている。そして、タスク構成情報300では、当該スレーブスレッドが“LIB_BAR”を呼び出して実行することを示している。
(マルチコアプロセッサシステムのハードウェア構成)
図4は、マルチコアプロセッサシステムのハードウェア構成を示すブロック図である。図4において、マルチコアプロセッサシステム400は、CPU0〜CPUn(n≧1)と、メモリ401と、I/F(Interface)402と、を備えている。また、各構成部は、バス400によってそれぞれ接続されている。
ここで、マルチコアプロセッサとは、コアが複数搭載されたプロセッサである。コアが複数搭載されていれば、複数のコアが搭載された単一のプロセッサでもよく、シングルコアのプロセッサが並列されているプロセッサ群でもよい。なお、実施の形態1では、説明を単純化するため、シングルコアのプロセッサが並列されているプロセッサ群を例に挙げて説明する。
メモリ401は、共有メモリであって、アプリケーションソフトウェアやシステムソフトウェア(具体的には、ハイパーバイザ0〜ハイパーバイザnと、スケジューラ100を含むOS0と、OS1)などのプログラムを記憶している。メモリ401は、さらに、上述した信頼度リスト200やタスク構成情報300などのシステムファイルを記憶している。メモリ401は、具体的には、ROM(Read Only Memory)と、RAM(Random Access Memory)と、フラッシュROMなどを備えている。
本実施の形態1では、n=3として計4個のCPUを備えていることとする。そして、CPU0〜3が、独立して動作可能なコアとキャッシュとレジスタなどを備えている。
CPU0は、マルチプロセッサシステムの全体の制御を司るマスタCPUであり、CPU1〜CPU3は、スレーブCPUである。たとえば、ROMが、上記プログラムなどを記憶し、RAMは、CPU0〜3のワークエリアとして使用される。メモリ401に記憶されているプログラムは、CPUにロードされることで、コーディングされている処理をCPUに実行させることとなる。
CPU0は、ハイパーバイザ0とスケジューラ100を含むOS0をロードし、それぞれにコーディングされている処理を実行する。CPU1は、ハイパーバイザ1とOS1をロードし、それぞれにコーディングされている処理を実行する。
CPU2は、ハイパーバイザ2とOS1をロードし、それぞれにコーディングされている処理を実行する。CPU3は、ハイパーバイザ3とOS1をロードし、それぞれにコーディングされている処理を実行する。
ここで、CPU1〜3が、それぞれハイパーバイザ1〜3によりハイパーバイザ処理を実行することで、同一のOS1の処理を実行することができる。また、CPU0〜3は、スレッドの起動指示を受け付けるとOSにより当該スレッドを生成する。
ハイパーバイザ0〜3は、CPU0〜3などのハードウェア上で直接動作するプログラムである。ここで、通常のハイパーバイザ処理とは、一般のプログラムでは操作できないCPUのキャッシュ制御やI/O操作を行うような特殊レジスタを操作したり、同様に、一般のプログラムでは読み書きできない共有メモリ上の空間を用いて動作を行う処理である。
また、CPU1〜3は、ハイパーバイザ1〜3により上述した通常のハイパーバイザ処理を実行する前にCPU1〜3がそれぞれストールしていないことを示す情報をハイパーバイザ0へ送付する。ストールしているか否かは、プログラムカウンタが正常に動作しているか否かで判断される。また、ストールしたCPUは、ストールしていないことを示す情報を送付できない。ここで、ストールしたCPUをストールCPUと称する。
そして、CPU0は、ハイパーバイザ0により上述した通常のハイパーバイザ処理を実行する前にハイパーバイザ1〜3から送付されるストールしていないことを示す情報を受け付けて、ストールしたCPUを検出する。つづいて、ストールCPUを検出した場合、ストールCPUによりクラッシュしたスレッドを特定する処理を実行し、通常のハイパーバイザ処理を実行する。一方、ストールCPUが検出されなかった場合、通常のハイパーバイザ処理を実行する。
I/F402は、通信回線を通じてLAN(Local Area Network)、WAN(Wide Area Network)、インターネットなどのネットワーク403に接続され、当該ネットワーク403を介して他の装置に接続される。そして、I/F402は、ネットワーク403と内部のインターフェースを司り、外部装置からのデータの入出力を制御する。I/F402には、たとえばモデムやLANアダプタなどを採用することができる。
また、図示していないが、マルチコアプロセッサシステム400では、ディスプレイやキーボードなどを備えている。ディスプレイは、カーソル、アイコンあるいはツールボックスをはじめ、文書、画像、機能情報などのデータを表示する。ディスプレイは、たとえば、CRT、TFT液晶ディスプレイ、プラズマディスプレイなどを採用することができる。
キーボードは、文字、数字、各種指示などの入力のためのキーを備え、データの入力を行う。また、タッチパネル式の入力パッドやテンキーなどであってもよい。
(実施の形態1にかかるマルチコアプロセッサシステムの機能的構成)
図5は、実施の形態1にかかるマルチコアプロセッサシステムの機能的構成を示すブロック図である。マルチコアプロセッサシステム500は、受付部501と、抽出部502と、信頼度判断部503と、特定部504と、検出部505と、割り当て判断部506と、決定部507と、通知部508を含む構成である。各機能(受付部501〜通知部508)は、具体的には、たとえば、図4に示したメモリ401に記憶されたスケジューラ100にコーディングされている処理をマスタCPUであるCPU0が実行することにより実現される。
(スレッドの起動時に関する処理)
まず、受付部501は、スレッドまたはプロセスの起動指示を受け付ける。具体的には、たとえば、マスタCPUであるCPU0が、ユーザーからのアプリケーションの起動指示を受け付ける。または、実行中のスレッドがあらたにスレッドを立ち上げる際にCPU0が実行中のスレッドからスレッドの起動指示を受け付ける。
つぎに、抽出部502は、受付部501によって受け付けた対象スレッドを起動する対象アプリケーションの信頼度を、信頼度リスト200からアプリケーション名201に基づいて抽出する。
そして、信頼度判断部503は、抽出部502によって抽出された信頼度と指定閾値に基づいて対象アプリケーションが、高信頼アプリケーションか否かを判断する。具体的には、たとえば、信頼度が、指定閾値以上であれば対象アプリケーションが高信頼アプリケーションと判断され、指定閾値未満であれば対象アプリケーションが低信頼アプリケーションと判断される。
特定部504は、信頼度判断部503により高信頼アプリケーションと判断された場合、すべてのCPU0〜3のうち低信頼スレッドが割り当てられていないCPUを特定する。
ここで、低信頼スレッドが割り当てられていないCPUとは、高信頼スレッドが割り当てられているコアまたはいずれのスレッドも割り当てられていないCPUである。
特定部504は、信頼度判断部503により低信頼アプリケーションと判断された場合、マルチコアプロセッサのうち高信頼スレッドが割り当てられていないCPUを特定する。
ここで、高信頼スレッドが割り当てられていないCPUとは、低信頼スレッドが割り当てられているコアまたはいずれのスレッドも割り当てられていないCPUである。
そして、通知部508は、対象スレッドの起動指示を、特定部504により特定されたコアへ通知する。
また、特定部504は、信頼度判断部503により対象アプリケーションが低信頼アプリケーションであると判断された場合、マルチコアプロセッサのうち低信頼アプリケーションのマスタスレッドが割り当てられていないコアを特定する。
また、特定部504は、信頼度判断部503により高信頼アプリケーションであると判断された場合において、対象スレッドがマスタスレッドである場合のみ、マルチコアプロセッサのうち低信頼スレッドが割り当てられていないCPUを特定する。
信頼度判断部503により対象アプリケーションが高信頼アプリケーションであると判断された場合において、対象スレッドが高信頼マスタスレッドのときに、通知部508は対象スレッドの起動指示を特定部504により特定されたCPUへ通知する。一方、対象スレッドが高信頼マスタスレッドでないときに、通知部508は、対象スレッドの起動指示をマルチコアプロセッサのうち任意のCPUへ通知する。対象スレッドが高信頼マスタスレッドでないとは、対象スレッドが高信頼スレーブスレッドであることを示している。
以上のことを踏まえて、割り当て例について図を用いて説明する。
図6は、高信頼スレッドが割り当てられる例を示す説明図である。具体的には、たとえば、まず、CPU0は、ユーザーからアプリケーションAの起動指示があると、アプリケーションAのマスタスレッドの割り当て指示を受け付ける。なお、ここでは、すべてのCPU0〜3が、にいずれのスレッドも割り当てられていないこととする。図示しないが、ここでのタスク構成情報には、いずれの情報も記述されていないこととする。
そして、具体的には、たとえば、CPU0が、優先度リスト200にアクセスしてアプリケーション名201に基づいて信頼度項目202の値を抽出する。ここでは、アプリケーションAの信頼度項目202の値は、3である。
つぎに、具体的には、たとえば、CPU0が、アプリケーションAの信頼度が指定閾値以上であるか否かを判断する。実施の形態1では、指定閾値は3である。そして、たとえば、CPU0によりアプリケーションAの信頼度が指定閾値以上であると判断されると、アプリケーションAは高信頼アプリケーションであると判断される。一方、たとえば、CPU0にアプリケーションAの信頼度が指定閾値未満であると判断されると、アプリケーションAは低信頼アプリケーションであると判断される。ここでは、アプリケーションAの信頼度項目202の値は3であるため、アプリケーションAは高信頼アプリケーションであると判断される。
つづいて、具体的には、たとえば、アプリケーションAが高信頼アプリケーションであると判断された場合、CPU0が、CPU0〜3のうち低信頼スレッドが割り当てられていないCPUをタスク構成情報に基づいて特定する。
たとえば、CPU0が、タスク構成情報内に記述されているアプリケーションに関する情報ごとに信頼度フラグが1であるか否かを判断する。上述のようにアプリケーションに関する情報とは、高信頼アプリケーションであるか否かを示す信頼度フラグとアプリケーションのスレッドがそれぞれどのCPUに割り当てられたかを示す割り当て情報である。
そして、CPU0が、信頼度フラグが0であると判断されたアプリケーションに関する情報内に記述されているCPUを特定する。特定されたCPUが、低信頼スレッドが割り当てられているCPUである。
そして、たとえば、CPU0が、CPU0〜3のなかで低信頼スレッドが割り当てられているCPUを除くCPUを低信頼スレッドが割り当てられていないCPUとして特定する。ここでは、すべてのCPU0〜3が、低信頼スレッドが割り当てられていないCPUとして特定される。
そして、たとえば、CPU0が、CPU0〜3のいずれかにマスタプロセスの起動指示を通知する。低信頼スレッドが割り当てられていないCPUが複数ある場合において、どのCPUに割り当てるかについては、従来の割り当て処理と同一であるため、詳細な説明を省略する。ここでは、CPU0に通知される(図中(1))。そして、CPU0が、マスタプロセスを起動する。
さらに、たとえば、CPU0への起動指示の通知前に、CPU0が、メモリ401へアクセスしてタスク構成情報にあらたにアプリケーションAに関する情報を追加する。たとえば、タスク名と信頼度フラグが記述される。そして、当該アプリケーションAに関する情報内にマスタスレッドがどのCPUに割り当てられたかに関する割り当て情報を記述する。
つぎに、CPU0が、スケジューラ100により高信頼マスタスレッドからの高信頼スレーブスレッドの割り当て指示を受け付けると、当該高信頼マスタスレッドがCPU0〜3のうち任意のCPUに割り当てられる。これにより、高信頼スレーブスレッドが、図中(2)〜(5)のように割り当てられたとする。
図7は、高信頼スレッドの割り当て後のタスク構成情報の一例を示す説明図である。タスク構成情報700には、“TASK_FOO”のみが記述されている。“TASK_FOO”が、上述のタスク構成情報300と同様にアプリケーションAに関する情報である。なお、タスク構成情報700は、上述のタスク構成情報300の“TASK_XYZ”が記述されていないだけで、“TASK_FOO”に関しては同一記述であるため、ここでは、詳細な説明を省略する。
つぎに、図8は、低信頼スレッドが割り当てられる例を示す説明図である。ここでは、アプリケーションBの起動指示がユーザーの操作により通知されたとし、上述の高信頼アプリケーションの割り当て例との異なる点のみを説明する。
つぎに、具体的には、たとえば、CPU0が、アプリケーションBの信頼度が指定閾値以上であるか否かを判断する。ここで、信頼度リスト200において、アプリケーションBの信頼度項目202の値は2であるため、アプリケーションBは、低信頼アプリケーションであると判断される。
つづいて、具体的には、たとえば、アプリケーションBが低信頼アプリケーションであると判断された場合、CPU0が、CPU0〜3のうち高信頼マスタスレッドが割り当てられていないCPUをタスク構成情報700に基づいて特定する。
たとえば、CPU0が、タスク構成情報700内に記述されているアプリケーションに関する情報ごとに信頼度フラグが1であるか否かを判断する。たとえば、CPU0が、信頼度フラグが1であるアプリケーションに関する情報内でMASTERの代入文に記述されているCPUを特定する。特定されたCPUは、高信頼マスタスレッドが割り当てられているCPUである。そして、たとえば、CPU0が、CPU0〜3のうち高信頼マスタスレッドが割り当てられているCPUを除く残余のCPUを高信頼マスタスレッドスレッドが割り当てられていないCPUとして特定する。
ここでは、“TASK_FOO”のマスタプロセスがCPU0に割り当てられているため、CPU1〜3が、高信頼アプリケーションのマスタプロセスが割り当てられていないCPUとして特定される。
そして、たとえば、CPU0が、CPU1〜3のいずれかに低信頼マスタスレッドの起動指示を通知する。ここでは、CPU1に通知される(図8中(6))。そして、CPU1が、低信頼マスタスレッドを起動する。
さらに、たとえば、CPU1への起動指示の通知前に、CPU0がメモリ401へアクセスしてタスク構成情報700にアプリケーションBに関する情報を追加し、マスタスレッドがどのCPUに割り当てられたかに関する情報を記述する。なお、図3のタスク構成情報300が、タスク構成情報700にアプリケーションBに関する情報が追加された例である。
つぎに、アプリケーションBの低信頼マスタスレッドから低信頼スレーブスレッドの割り当て指示が通知されると、CPU0が、割り当て指示を受け付けて、再度、同様の処理を行う。これにより、図8中(7)のように低信頼スレーブスレッドが割り当てられる。
図5の説明に戻って、検出部505は、特定部504により特定されたCPUのうちいずれのスレッドも割り当てられていないCPUを特定する。
割り当て判断部506は、検出部505により検出されたCPUに対象スレッドが割り当てられた場合、マルチプロセッサのすべてのCPU0〜3に高信頼マスタスレッドが割り当てられるか否かを判断する。
そして、決定部507は、割り当て判断部506によりすべてのCPU0〜3に高信頼マスタスレッドが割り当てられると判断された場合、特定部504により特定されたCPUのうち検出部505により検出されたCPUを除く残余のCPUから対象スレッドを割り当てるCPUを決定する。
つづいて、通知部508は、対象スレッドの割り当て指示を決定部507により決定されたCPUへ通知する。
また、割り当て判断部506は、検出部505により検出されたCPUに対象スレッドが割り当てられた場合、すべてのCPU0〜3に低信頼スレッドが割り当てられるか否かを判断する。
そして、決定部507は、割り当て判断部506によりすべてのCPUに低信頼スレッドが割り当てられると判断された場合、特定部504により特定されたCPUのうち検出部505により検出されたCPUを除く残余のCPUから対象スレッドを割り当てるCPUを決定する。
つづいて、通知部508は、対象スレッドの割り当て指示を決定部507により決定されたCPUへ通知する。
ここで、上述した処理を踏まえて図を用いて説明する。
図9は、すべてのCPU0〜3に低信頼スレッドが割り当てられない例を示す説明図である。ここで、たとえば、アプリケーションBの低信頼マスタと、低信頼スレーブスレッド1と、低信頼スレーブスレッド2がすでに割り当てられているとする。なお、タスク構成情報については図示しない。そして、あらたに低信頼マスタからの低信頼スレーブスレッド3の割り当て指示がCPU0へ通知されたとする。
具体的には、たとえば、CPU0が、タスク構成情報内に記述されているアプリケーションに関する情報ごとに信頼度フラグが1であるか否かを判断する。信頼度フラグが1と判断されたアプリケーションに関する情報内に記述されているCPUを特定する。ここで、特定される。
そして、たとえば、CPU0が、CPU0〜3のなかで、信頼度フラグが1であるアプリケーションに関する情報内に記述されているCPUを特定する。特定されたCPUは高信頼スレッドが割り当てられているCPUである。つづいて、すべてのCPU0〜3が、のうち高信頼スレッドが割り当てられているCPUを除くCPUを高信頼スレッドが割り当てられていないCPUとして特定する。ここでは、CPU0〜3のすべてが特定される。
そして、たとえば、CPU0が、さらに、信頼度フラグが0であるアプリケーションに関する情報内に記述されているCPUを特定する。特定されたCPUが、低信頼スレッドが割り当てられているスレッドである。つぎに、たとえば、CPU0が、高信頼スレッドが割り当てられていないCPUのうち低信頼スレッドが割り当てられているCPUを除く残余のCPUを特定する。特定されたCPUが、いずれのスレッドも割り当てられていないCPUである。ここでは、高信頼スレッドが割り当てられているCPUは無く、CPU0〜2に低信頼スレッドが割り当てられているため、CPU3がいずれのスレッドも割り当てられていないCPUとして特定される。
そして、たとえば、CPU0が、CPU3へ対象スレッドを割り当てることで、CPU0〜3のそれぞれのCPUに低信頼スレッドが割り当てられるか否かを判断する。具体的には、たとえば、CPU0が、低信頼スレッドが割り当てられているCPU数といずれのスレッドも割り当てられていないCPU数の合計値が、全CPUの数になるか否かを判断する。
たとえば、合計値が全CPUの数になる場合、CPU0はいずれのスレッドも割り当てられていないCPU3へ対象スレッドを割り当てることで、すべてのCPU0〜3に低信頼スレッドが割り当てられると判断する。たとえば、合計値が全CPUの数にならない場合、CPU0は、いずれのスレッドも割り当てられていないCPU3へ対象スレッドを割り当てることで、すべてのCPU0〜3に低信頼スレッドが割り当てられないと判断する。
ここでは、全CPUの数が4つであり、すでに低信頼スレッドが割り当てられているCPUの数が3つであり、いずれのスレッドも割り当てられていないCPUの数が1つである。よって、CPU3へ対象スレッドを割り当てることでCPU0〜3のそれぞれのCPUに低信頼スレッドが割り当てられると判断される。
つぎに、具体的には、たとえば、CPU0が、それぞれのCPUに低信頼スレッドが割り当てられると判断した場合、CPU0〜3のうちCPU3を除く残余のCPUから対象スレッドを割り当てるCPUを決定する。ここで、残余のCPUがCPU0〜2である。ここでは、割り当てるCPUがCPU1に決定される。
そして、具体的には、たとえば、CPU0が、対象スレッドの起動指示を決定したCPU1へ通知する。図9では、低信頼スレーブスレッド3があらたにCPU1に割り当てられている。
また、高信頼マスタスレッドをすべてのCPU0〜3に割り当てないように制御する処理は、低信頼スレッドをすべてのCPU0〜3に割り当てないように制御する処理と同様の処理であるため、詳細な説明は省略する。
図5に戻って、特定部504は、信頼度判断部503により低信頼アプリケーションと判断された場合、すべてのCPU0〜3のうちマスタCPUであるCPU0を除く残余のCPUから高信頼スレッドが割り当てられていないCPUを特定する。
そして、通知部508は、対象スレッドの起動指示を特定部504により特定されたCPUへ通知する。したがって、マスタCPUであるCPU0には、必ず低信頼スレッドが割り当てられない。
図10は、マスタCPUに低信頼スレッドが割り当てられない例を示す説明図である。ここでは、まだ、CPU2〜3にそれぞれ低信頼スレッドが割り当てられているとし、たとえば、CPU0が低信頼スレッドの割り当て通知を受け付けたとする。なお、図10の低信頼スレッドは、低信頼マスタスレッドと低信頼スレーブスレッドとを示す。
そして、たとえば、CPU0が、CPU0〜3のうちCPU0を除くCPUから高信頼スレッドが割り当てられていないCPUを特定する。ここで、CPU1〜3が特定される。そして、たとえば、CPU0が、低信頼スレッドの起動指示をCPU1へ通知する(図10中実線矢印)。
したがって、CPU0には、クラッシュの可能性の高い低信頼スレッドが割り当てられないため(図10中点線矢印)、CPU0がストールする可能性が低くなる。
また、図示しないが、たとえば、CPU0が、あらかじめCPU0とCPU1には、低信頼スレッドが割り当てられないように制御し、CPU2とCPU3には高信頼マスタスレッドが割り当てられないように制御してもよい。
図5に戻って、抽出部502は、さらに、対象アプリケーションのクラッシュ済であるか否かに関する情報を抽出する。
そして、信頼度判断部503は、対象アプリケーションのクラッシュ済であるか否かに関する情報が、クラッシュ済であることを示しているか否かを判断する。
そして、通知部508は、クラッシュ済であることを示す場合、対象スレッドの起動指示をどのCPUにも通知せず、ユーザーへ対象アプリケーションがクラッシュ済で起動できないことを通知してもよい。
一方、特定部504は、信頼度判断部503によりクラッシュ済でないと判断された場合、上述の処理を実施する。これにより、クラッシュしたことがあるアプリケーションを起動させないことができる。
具体的には、たとえば、CPU0が、スレッドの割り当て指示を受け付けると、信頼度リスト200を読み出し、優先度項目202の値が1であるか否かを判断する。そして、CPU0が、優先度項目202の値が1であると判断した場合、スレッドの起動指示をどのCPUにも通知せず、対象アプリケーションがストール済であることを出力する。出力形式としては、たとえば、ディスプレイへの表示、I/F402による外部装置への送信がある。
また、本実施の形態1では、対象アプリケーションが高信頼アプリケーションであるか否かに基づいて割り当てるCPUを決定しているが、さらに、対象アプリケーションが高信頼アプリケーションと低信頼アプリケーションと中信頼アプリケーションなど信頼度を詳細に分割して割り当てるCPUを決定してもよい。
(マルチコアプロセッサシステムによる制御処理の制御処理手順)
図11は、実施の形態1にかかるマルチコアプロセッサシステムによる制御処理の制御処理手順の一例を示すフローチャートである。まず、CPU0が、スケジューラ100により対象スレッドの割り当て指示を受け付けたか否かを判断し(ステップS1101)、受け付けなかったと判断した場合(ステップS1101:No)、ステップS1101へ戻る。一方、CPU0が、スケジューラにより受け付けたと判断した場合(ステップS1101:Yes)、信頼度リストを読み出す(ステップS1102)。
つぎに、CPU0が、スケジューラ100により、信頼度リスト200からスレッドを起動する対象アプリケーションの信頼度を抽出し(ステップS1103)、対象アプリケーションがストールしたことがあるか否かを判断する(ステップS1104)。そして、CPU0が、スケジューラ100により、ストールしたことがないと判断した場合(ステップS1104:No)、対象アプリケーションが高信頼であるアプリケーションか否かを判断する(ステップS1105)。
まず、CPU0が、スケジューラ100により対象アプリケーションが高信頼であると判断された場合(ステップS1105:Yes)、対象スレッドがマスタスレッドであるか否かを判断する(ステップS1106)。そして、CPU0が、スケジューラ100により対象スレッドがマスタスレッドであると判断した場合(ステップS1106:Yes)、高信頼マスタスレッドの割り当て処理を実施する(ステップS1107)。
一方、CPU0が、スケジューラ100により対象スレッドがマスタスレッドでないと判断した場合(ステップS1106:No)、対象スレッドの起動指示を任意のCPUへ通知する(ステップS1108)。
つぎに、ステップS1105において、CPU0が、スケジューラ100により対象アプリケーションが高信頼でないアプリケーションと判断された場合(ステップS1105:No)、低信頼スレッドの割り当て処理を実施する(ステップS1109)。
ステップS1107、ステップS1108、またはステップS1109のつぎに、CPU0が、スケジューラ100によりタスク構成情報に対象スレッドの割り当て情報を追加し(ステップS1110)、一連の処理を終了する。
一方、ステップS1104において、CPU0が、スケジューラ100によりストールしたことがあると判断された場合(ステップS1104:Yes)、ストール済であることをユーザーに通知し(ステップS1111)、一連の処理を終了する。
つぎに、図12は、図11で示した高信頼マスタスレッドの割り当て処理(ステップS1107)の詳細な説明を示すフローチャートである。まず、CPU0が、スケジューラ100によりタスク構成情報を読み出し(ステップS1201)、低信頼スレッドが割り当てられていないCPUを特定する(ステップS1202)。そして、CPU0が、スケジューラ100により特定したCPUからスレッドが割り当てられていないCPUを検出する(ステップS1203)。
そして、マルチコアプロセッサのうちそれぞれのCPUに高信頼マスタスレッドが割り当てられるか否かを判断する(ステップS1204)。
CPU0が、スケジューラ100によりそれぞれのCPUに高信頼マスタスレッドが割り当てられると判断した場合(ステップS1204:Yes)、特定したCPUのうち検出したCPUを除く残余のCPUから対象スレッドを割り当てるCPUを決定する(ステップS1205)。決定方法については、従来のスケジューリング処理と同一処理であるため、詳細な説明を省略する。
一方、CPU0が、スケジューラ100によりそれぞれのCPUに高信頼マスタスレッドが割り当てられないと判断した場合(ステップS1204:No)、特定したCPUから対象スレッドを割り当てるCPUを決定する(ステップS1206)。
そして、ステップS1205またはステップS1206のつぎに、CPU0が、スケジューラ100により対象スレッドの起動指示を決定したCPUへ通知し(ステップS1207)、ステップS1110へ移行する。
一方、CPU0が、スケジューラ100により割り当てられないと判断した場合(ステップS1204:No)、ステップS1206へ移行する。
つぎに、図13は、図11で示した低信頼スレッドの割り当て処理(ステップS1109)の詳細な説明を示すフローチャートである。まず、CPU0が、スケジューラ100によりタスク構成情報を読み出し(ステップS1301)、高信頼マスタスレッドが割り当てられていないCPUを特定する(ステップS1302)。そして、CPU0が、スケジューラ100により特定したCPUからスレッドが割り当てられていないCPUを検出し(ステップS1303)、検出したCPUに対象スレッドを割り当てることで、それぞれのCPUに低信頼マスタスレッドが割り当てられるか否かを判断する(ステップS1304)。
そして、CPU0が、スケジューラ100によりそれぞれのCPUに低信頼スレッドが割り当てられると判断した場合(ステップS1304:Yes)、特定したCPUのうち検出したCPUを除く残余のCPUから対象スレッドを割り当てるCPUを決定する(ステップS1305)。
一方、CPU0が、スケジューラ100によりそれぞれのCPUに低信頼スレッドが割り当てられないと判断した場合(ステップS1304:No)、特定したCPUから対象スレッドを割り当てるCPUを決定する(ステップS1306)。そして、CPU0が、スケジューラ100により対象スレッドの起動指示を選択したCPUへ通知し(ステップS1306)、1110へ移行する。
また、CPU0は、OSによりアプリケーションのダウンロードまたはインストール時に優先度を抽出し、信頼度リストにアプリケーション名を登録し、抽出した優先度を信頼度として登録する。
(マルチコアプロセッサシステムの登録処理手順)
図14は、マルチコアプロセッサシステムによる登録処理の登録処理手順の一例を示すフローチャートである。ここでは、CPU0が、OSにより信頼度リストへ信頼度を登録する登録処理手順を示す。まず、CPU0が、OS0によりアプリケーションをダウンロードし(ステップS1401)、優先度タグを抽出する(ステップS1402)。そして、CPU0が、OS0により信頼度リストを読み出し(ステップS1403)、アプリケーションの信頼度を登録する(ステップS1404)。優先度タグとは、たとえば、出荷元などを示すタグであり、アプリケーションの信頼度は、出荷元がマルチコアプロセッサの設計元であったりすれば信頼度リストに高信頼で登録される。
(実施の形態2)
つぎに、図15は、実施の形態2にかかる制御処理の一実施例を示す説明図である。実施の形態2では、ストールしたストールCPUによってクラッシュしたスレッドを直ちに再起動する例を示す。ここで、ストールCPUは、プログラムカウンタが動作せず、ソフトウェアによる処理が実行できないCPUである。まず、CPU0が、ハイパーバイザ0によりストールしたストールCPUを検出する(図15中(1))。ここでは、CPU1がストールCPUとして検出される。
つぎに、ストールCPUによりクラッシュしたスレッドを特定する(図15中(2))。ここでは、高信頼スレーブスレッド2が、特定されたスレッドである。最後に、CPU0が、ハイパーバイザ0により特定したスレッドの割り当て指示をスケジューラ100へ通知する(図15中(3))。
そして、CPU0が、スケジューラ100により高信頼スレーブスレッドをCPU1とCPU2とCPU3のいずれか一つに割り当てる。
ここで、復帰処理に関する課題を説明する。従来技術1および2を用いると動作状態を保存するためにメモリやスレッドの状態を確保する必要があり、組み込みシステムでは、メモリのリソースが少ないためリソースの確保が困難であった。よって、リソースの確保のためにシステムが膨大になるという問題点があった。
そこで、実施の形態2では、僅かなメモリリソースの仕様でストールしたストールCPUによってクラッシュしたスレッドを直ちに再起動する。実施の形態2では、実施の形態1で示した構成と同一構成については同一符号を付し、説明を省略する。
(実施の形態2にかかるマルチコアプロセッサシステム)
図16は、実施の形態2にかかるマルチコアプロセッサシステムの機能的構成を示すブロック図である。マルチコアプロセッサシステム1600は、受付部1601と、検出部1602と、停止通知部1603と、削除部1604と、特定部1605と、リブート通知部1606と、変更部1607と、割り当て通知部1608と、解除通知部1609を含む構成である。各機能(受付部1601〜解除通知部1609)は、具体的には、たとえば、図4に示したメモリ401に記憶されたハイパーバイザ0にコーディングされている処理をCPU0が実行することにより実現される。
まず、受付部1601は、マルチコアプロセッサのうち一のCPUを除くCPUから送付されるストールしていないことを示す情報を受け付ける。具体的には、たとえば、ハイパーバイザ1〜3によるハイパーバイザ処理を実行するCPU1〜3から送付される存命シグナルを受け付ける。
検出部1602は、マルチコアプロセッサのうちストールCPUを検出する。具体的には、たとえば、CPU0が、マルチコアプロセッサのうち存命シグナルの無かったCPUをストールCPUとして検出する。ここで、検出部1602によりストールCPUが検出されなかった場合、通常のハイパーバイザ処理が実行される。以下、検出部1602によりストールCPUが検出された場合の処理について説明する。
まず、メモリ401内でストールCPUに割り当てられていた一部のメモリは、解放される。
そして、停止通知部1603は、全アプリケーションの一時停止指示をすべてのCPU0〜3へ通知する。削除部1604は、検出部1602により検出されたストールCPUがストールする要因となったスレッドを起動させるアプリケーションに関する情報をタスク構成情報300から削除する。ストールCPUがストールする要因となったスレッドをクラッシュスレッドと称する。
また、変更部1607は、信頼度リストに記述されている検出部1602により検出されたストールCPUをストールさせたクラッシュスレッドを起動させるアプリケーションの信頼度をクラッシュ済であることを示す信頼度に変更する。
つぎに、特定部1605は、検出部1602により検出されたストールCPUでのストールによりクラッシュしたスレッドを特定する。ここで、ストールCPUでのストールによりクラッシュしたスレッドとは、ストールCPUがストールする直前まで正常に処理が実行されていたスレッドであり、ストールすることによってクラッシュしたスレッドである。よって、上述のクラッシュスレッドは、ストールCPUでのストールによりクラッシュしたスレッドに含まれない。具体的には、たとえば、タスク構成情報700を読み出し、タスク構成情報700からストールCPUに割り当てられていたスレッドを特定する。
そして、リブート通知部1606は、検出部1602により検出されたストールCPUへリブート指示を通知する。具体的には、たとえば、CPU0が、リセット指示をストールCPUへ行う。なお、リセット指示はハイパーバイザの特権命令である。
そして、割り当て通知部1608は、特定部1605により特定されたスレッドをすべてのCPU0〜3のうちストールCPUを除く残余のCPUに割り当てるためのスレッドの割り当て指示を、スケジューラ100に通知する。具体的には、たとえば、CPU0が、CPU0が有しているレジスタに割り当て指示を示す情報を出力する。
これにより、CPU0が、スケジューラ100によりスレッドの割り当て指示の通知を受けると、スレッドのマルチコアプロセッサへの割り当て処理を実行する。具体的には、たとえば、CPU0が実施の形態1で示した処理を実行する。
また、割り当て通知部1608は、ストールCPUがリブート完了後に特定部1605により特定されたスレッドの割り当て指示を、スケジューラ100に通知する。
さらに、解除通知部1609は、割り当て通知部1608によりスレッドの割り当て通知が通知され、当該スケジューラ100によりスレッドが割り当てられると、一時停止を解除する解除通知を、CPU0〜3へ通知する。
以上のことを踏まえて、ストールCPUによってクラッシュしたスレッドの再起動例について図を用いて説明する。まず、実施の形態2では、クラッシュ前の例として図9で示した割り当て結果と図3で示したタスク構成情報300を挙げて説明する。
図17は、スレッドがクラッシュした例を示す説明図である。CPU1に割り当てられている低信頼スレーブスレッドがクラッシュし、そして、クラッシュした影響でOS1がクラッシュしてプログラムカウンタが停止することでCPU1がストールしたとする。
図17に記載のCPU0の処理とは、OS0による処理とハイパーバイザ0による処理を示し、CPU1の処理とは、OS1による処理とハイパーバイザ1による処理を示している。CPU2の処理とは、OS1による処理とハイパーバイザ2による処理を示し、CPU3の処理とは、OS1による処理とハイパーバイザ3による処理を示している。
図18は、各CPUが存命シグナルをCPU0へ送付する例を示す説明図である。たとえば、CPU0〜3がストールしていない場合、CPU1〜3は、それぞれのハイパーバイザにより定期的にストールしていないことを示す情報をCPU0へ通知する。そして、通知後、CPU1〜3はそれぞれのハイパーバイザにより通常のハイパーバイザ処理を実施する。
CPU2とCPU3が、それぞれハイパーバイザ2とハイパーバイザ3によりCPU0へストールしていないことを示す情報(以下、「存命シグナル」と称する。)を送付する(図18中(1))。一方、CPU1がストールしたため、CPU1はハイパーバイザ1によりCPU0へ存命シグナルを送付できない。
具体的には、たとえば、CPU0は、ハイパーバイザ0により各CPUからの存命シグナルを受け付ける。そして、CPU0が存命シグナルを送付していないCPUを検出する。ここで、存命シグナルを送付していないCPUがストールCPUである。
つぎに、図19は、アプリケーションが停止される例を示す説明図である。具体的には、たとえば、CPU0は、ストールCPUを検出すると、ハイパーバイザ0により各CPUへアプリケーションの一時停止指示を通知する(図19中(2))。そして、各CPUが、OSにより起動しているスレッドをすべて一時停止させる。
そして、具体的には、たとえば、CPU0が、アプリケーションBに関する情報であるTASK_XYZの記載をすべて削除する。削除後のタスク構成情報は図7のタスク構成情報700と同一である。なお、CPUのストール原因であるクラッシュしたスレッドの特定についてはOSにより従来から可能であるため詳細な説明は省略する。
つぎに、図20は、リブート指示例およびスレッドの割り当て指示例を示す説明図である。具体的には、たとえば、CPU0が、ハイパーバイザ0によりCPU1へリブート指示を通知し(図20中(3))、CPU1が、リブート指示を受け付けるとリブートする。
さらに、具体的には、たとえば、CPU0が、ハイパーバイザ0によりタスク構成情報を読み出し、CPU1に割り当てられていたスレッドを特定する。
図21は、信頼度リストの信頼度が変更される例を示す説明図である。具体的には、たとえば、CPU0が、ハイパーバイザ0により信頼度リスト200を読み出し、アプリケーションBの信頼度項目202の値を1に変更する。変更後の信頼度リストが、信頼度リスト2100である。
そして、図22は、ストールCPUを除く残余のCPUにクラッシュしたスレッドが割り当てられる例を示す説明図である。具体的には、たとえば、CPU0が、ハイパーバイザ0により特定したスレッドの割り当て指示をスケジューラ100へ通知する(図22中(4))。
そして、CPU0が、CPU1がリブート中の場合、スケジューラ100によりCPU0と、CPU2と、CPU3のうち任意のCPUに特定したスレッドを割り当てる。ここでは、CPU0が、スケジューラ100によりCUP2へ高信頼スレーブスレッド2の起動指示を通知する(図22中(5))。そして、CPU2が、OS1により高信頼スレーブスレッド2を起動する。
つづいて、CPU0が、ハイパーバイザ0により一時停止の解除指示(図22中(6))を各CPUへ通知し、各CPUが、OSにより一時停止を解除する。これにより、ストールCPUによりクラッシュしたスレッドが直ぐに再起動される。
そして、図23は、再起動後のタスク構成情報の一例を示す説明図である。スケジューラ100によりタスク構成情報が更新され、タスク構成情報2300では高信頼スレーブスレッドがCPU2に割り当てられていることが示されている(図23中下線部)。
また、CPU1がすでにリブート済の場合、CPU0が、スケジューラ100によりCPU0〜3のうち任意のCPUに特定したスレッドを割り当てる。
図16に戻って、また、割り当て通知部1608は、スケジューラ100に割り当て指示を通知せず、特定部1605により特定されたスレッドの起動指示を、リブート通知部1606によるリブート指示によりリブートされたリブート済ストールCPUへ通知する。
図24は、ストールCPUへスレッドの起動指示が通知される例を示す説明図である。具体的には、たとえば、CPU0が、ハイパーバイザ0によりスケジューラ100へ割り当て指示を通知せず、CPU1のリブート後に特定されたスレッドの起動指示(図24中(1))をCPU1へ通知する。そして、具体的には、たとえば、CPU0が、ハイパーバイザ0により各CPUへアプリケーションの一時停止を解除させる解除指示(図24中(2))を通知する。
具体的には、たとえば、CPU0は、OS0により解除指示を受け付けると、割り当てられている各スレッドの一時停止を解除する。さらに、具体的には、たとえば、CPU2と、CPU3とが、OS1により解除指示を受け付けると、各CPUに割り当てられている各スレッドの一時停止を解除する。なお、一時停止処理や、一時停止の解除処理の具体的な処理内容については、公知であるため詳細な説明を省略する。
また、図16に戻って、特定部1605は、ストールCPUによりクラッシュしたスレッドを特定するとともに、クラッシュしたスレッドが中粒度のスレッドであるか粗粒度のスレッドであるかを特定する。そして、特定部1605は、クラッシュしたスレッドが粗粒度のスレッドである場合、呼び出し関数と当該関数の係数を特定する。
一方、特定部1605は、クラッシュしたスレッドが中粒度のスレッドである場合、クラッシュ時に実行していた実行位置と終了位置を特定する。
そして、割り当て通知部1608は、特定されたスレッドが粗粒度のスレッドの場合、割り当て通知とともに呼び出し関数に関する情報を同時に通知する。一方、特定されたスレッドが中粒度のスレッドの場合、割り当て通知とともに実行位置と終了位置を同時に通知する。
具体的には、たとえば、CPU0が、タスク構成情報を読み出し、タスク構成情報からクラッシュしたスレッドを特定するとともに、クラッシュしたスレッドがCOARSEGRAIN(粗粒度)であるかMIDDLEGRAIN(中粒度)であるかを特定する。
そして、具体的には、たとえば、CPU0が、クラッシュしたスレッドがCOARSEGRAINであると特定すると、当該スレッドが呼び出す呼び出し関数を特定する。
一方、具体的には、たとえば、CPU0が、クラッシュしたスレッドがMIDDLEGRAINであると特定すると、当該スレッドが実施していたループ処理のループ番号を特定する。さらに、具体的には、たとえば、CPU0が、タスク構成情報に記述されている101〜200のループ処理のうちすでに実行済のループ番号を特定する。実行済のループ番号に関する情報は、OSによりメモリ401やCPU内のレジスタに記憶されている。たとえば、101〜200のうち1〜50まで実行済であれば、50が記憶される。
また、メモリ401のうちストールCPUに割り当てられた領域に実行済のループ番号の情報が記憶されている場合、ストールCPUがリブートされる前に、CPU0が実行済のループ番号の情報をメモリ401のうちCPU0に割り当てられた領域へ退避する。
そして、具体的には、たとえば、CPU0が、ハイパーバイザ0によりクラッシュしたスレッドの割り当て指示とループ処理のループ番号のうち未実行のループ番号とをスケジューラ100へ通知する。または、たとえば、CPU0が、ハイパーバイザ0によりクラッシュしたスレッドの起動指示と未実行のループ番号とをリブート済のCPU1へ通知する。
(実施の形態2にかかる制御処理の制御処理手順)
図25は、実施の形態2にかかるマルチコアプロセッサシステムによる制御処理の制御処理手順の一例を示すフローチャートである。まず、CPU0が、ハイパーバイザ0により存命シグナルを受け付け(ステップS2501)、全CPUから存命シグナルを受け付けたか否かを判断する(ステップS2502)。
そして、CPU0が、ハイパーバイザ0により全CPUから存命シグナルを受け付けていないと判断した場合(ステップS2502:No)、再起動処理を実施する(ステップS2503またはステップS2504)。つづいて、CPU0が、ハイパーバイザにより通常のハイパーバイザ処理を実施し(ステップS2505)、一連の処理を終了する。一方、CPU0が、ハイパーバイザ0により全CPUから存命シグナルを受け付けたと判断した場合(ステップS2502:Yes)、ステップS2505へ移行する。
図26は、図25で示した再起動処理(ステップS2503)の詳細な説明を示すフローチャートである。まず、ストールしたストールCPUを特定し(ステップS2601)、全アプリケーションの一時停止指示を通知する(ステップS2602)。そして、ストールCPUへリブート指示を通知し(ステップS2603)、信頼度リストを読み出す(ステップS2604)。
そして、クラッシュしたアプリケーションの信頼度を変更し(ステップS2605)、タスク構成情報を読み出す(ステップS2606)。タスク構成情報からクラッシュしたアプリケーションに関するタスク情報を削除し(ステップS2607)。
つぎに、タスク構成情報からストールCPUに割り当てられているスレッドを検出し(ステップS2608)、未選択のスレッドがあるか否かを判断する(ステップS2609)。
そして、未選択のスレッドがあると判断した場合(ステップS2609:Yes)、未選択のスレッドから任意のスレッドを選択する(ステップS2610)。そして、選択したスレッドが粗粒度か否かを判断し(ステップS2611)、粗粒度であると判断した場合(ステップS2611:Yes)、呼び出し関数を特定する(ステップS2612)。
一方、粗粒度でないと判断した場合(ステップS2611:No)、未実行のイタレーションを特定する(ステップS2613)。
そして、ステップS2612またはステップS2613のつぎに、ステップS2612またはステップS2613で特定した情報を関連付けてスケジューラへスレッドの割り当て指示を通知し(ステップS2614)、ステップS2609へ戻る。
また、未選択のスレッドがないと判断した場合(ステップS2609:No)、一時停止の解除指示を通知し(ステップS2615)、ステップS2505へ移行する。
図27は、図25で示した再起動処理(ステップS2504)の詳細な説明を示すフローチャートである。図27で示すステップS2701〜S2713は、図26で示したステップS2601〜S2613と同一処理であり、ステップS2716は、ステップS2615と同一処理であるため、図26で示した処理と同一処理については説明を省略する。よって、ここでは、ステップS2714とステップS2715について説明する。
ステップS2712またはステップS2713のつぎにストールCPUがリブートしたか否かを判断する(ステップS2714)。そして、リブートしていない場合(ステップS2714:No)、ステップS2714に戻る。
リブートしたと判断した場合(ステップS2714:Yes)、ステップS2712またはステップS2713で特定した情報を関連付けてリブート後のストールCPUへ起動指示を通知する(ステップS2715)。
(マルチコアプロセッサによる存命シグナルの送付処理手順)
図28は、マルチコアプロセッサによる存命シグナルの送付処理手順の一例を示すフローチャートである。まず、スレーブCPUのうちストールしていないCPUが、それぞれのハイパーバイザにより存命シグナルをマスタCPUへ送付し(ステップS2801)、通常のハイパーバイザ処理を実施する(ステップS2802)。なお、スレーブCPUがストールした場合、図28に記載の処理が実施できないので存命シグナルがマスタCPUへ送付されず、マスタCPUがストールしたスレーブCPUを検出することができる。
また、マスタCPUが、実施の形態1で示したようにマスタCPUへ高信頼マスタスレッドを割り当てるスケジュール処理を実施することで、マスタCPUがストールせず、ハイパーバイザ処理が常時動作可能である。
以上説明したように、マルチコアプロセッサシステム、制御プログラム、および制御方法によれば、高信頼であるアプリケーションのスレッドと高信頼でないアプリケーションのスレッドとを同一のCPUに割り当てないように制御する。これにより、高信頼でないアプリケーションのスレッドがクラッシュすることによって、高信頼であるアプリケーションのスレッドがクラッシュするのを防止することができる。
また、高信頼であるアプリケーションのマスタスレッドが割り当てられているCPUに高信頼でないアプリケーションのスレッドを割り当てないように制御する。これにより、高信頼でないアプリケーションのスレッドがクラッシュしても高信頼であるアプリケーションのスレーブスレッドのみがクラッシュする可能性があり、高信頼であるアプリケーションのマスタスレッドがクラッシュするのを防止することができる。これにより、クラッシュしたスレーブスレッドのみを再起動するだけでよく、復帰が容易である。
また、高信頼でないアプリケーションのスレッドが割り当てられているCPUに高信頼であるアプリケーションのマスタスレッドを割り当てないように制御する。そして、高信頼であるアプリケーションのスレーブスレッドは、マルチコアプロセッサのうち任意のCPUに割り当てる。
高信頼であるアプリケーションのスレッドのうち少なくともマスタスレッドが、高信頼でないアプリケーションによってクラッシュするのを防止することで、高信頼であるアプリケーションのすべてのスレッドを再起動させる手間を防止することができる。
マルチコアプロセッサのうちのすべてのCPUに高信頼であるアプリケーションのマスタスレッドが割り当てられないように制御する。これにより、高信頼であるアプリケーションのみが実行されていても、高信頼でないアプリケーションのスレッドをCPUに割り当てることができる。
マルチコアプロセッサのうちすべてのCPUに高信頼でないアプリケーションのマスタスレッドが割り当てられないように制御する。これにより、高信頼でないアプリケーションのみが起動されていても、高信頼であるアプリケーションのスレッドをCPUに割り当てることができる。
また、マスタコアには、高信頼でないアプリケーションのスレッドを割り当てないことで、スケジューリング処理を実行するマスタコアが、ストールするのを防止することができる。
以上説明したように、マルチコアプロセッサシステム、制御プログラム、および制御方法によれば、ストールしたストールCPUによりクラッシュしたスレッドを再起動させるようにスケジューラを制御する。これにより、少ないメモリ資源であってもクラッシュしたスレッドを直ちに再起動することができる。
また、ストールCPUをリブートし、リブート後のストールCPUへクラッシュしたスレッドの起動指示を通知することで、スケジューラを介さずともクラッシュしたスレッドを低負荷なコアへ容易に割り当てることができる。
500,1600 マルチコアプロセッサシステム
100 スケジューラ
502 抽出部
503 信頼度判断部
504 特定部
505 検出部
506 割り当て判断部
507 決定部
508 通知部
1602 検出部
1605 特定部
1608 割り当て通知部
1606 リブート通知部

Claims (12)

  1. マルチコアプロセッサと、アプリケーションソフトウェア(以下、「アプリケーション」)ごとに動作に関する信頼度を記憶する記憶装置とを備え、前記マルチコアプロセッサ内の一のコアが前記記憶装置にアクセス可能なマルチコアプロセッサシステムであって、
    前記一のコアが、
    前記アプリケーションのうち対象スレッドを起動する対象アプリケーションの信頼度を前記記憶装置から抽出する抽出手段と、
    前記抽出手段により抽出された信頼度と指定閾値に基づいて、前記対象アプリケーションが高信頼であるアプリケーションか否かを判断する信頼度判断手段と、
    前記信頼度判断手段により前記対象アプリケーションが前記高信頼であるアプリケーションと判断された場合、前記マルチコアプロセッサのうち高信頼でないアプリケーションのスレッドが割り当てられていないコアを特定し、前記対象アプリケーションが前記高信頼でないアプリケーションと判断された場合、前記マルチコアプロセッサのうち前記高信頼であるアプリケーションのスレッドが割り当てられていないコアを特定する特定手段と、
    前記対象スレッドの起動指示を、前記特定手段により特定されたコアへ通知する通知手段と、
    を備えることを特徴とするマルチコアプロセッサシステム。
  2. 前記特定手段は、
    前記信頼度判断手段により前記対象アプリケーションが前記高信頼でないアプリケーションと判断された場合、前記マルチコアプロセッサのうち前記高信頼であるアプリケーションのマスタスレッドが割り当てられていないコアを特定し、
    前記通知手段は、
    前記対象スレッドの起動指示を、前記特定手段により特定されたコアへ通知することを特徴とする請求項1に記載のマルチコアプロセッサシステム。
  3. 前記通知手段は、
    前記信頼度判断手段により前記対象アプリケーションが前記高信頼であるアプリケーションと判断された場合において、前記対象スレッドが前記マスタスレッドであるときは前記対象スレッドの起動指示を前記特定手段により特定されたコアへ通知し、前記対象スレッドが前記マスタスレッドでないときは前記対象スレッドの起動指示を前記マルチコアプロセッサのうち任意のコアへ通知することを特徴とする請求項2に記載のマルチコアプロセッサシステム。
  4. 前記一のコアが、
    前記特定手段により特定されたコアのうちいずれのスレッドも割り当てられていないコアを検出する検出手段と、
    前記検出手段により検出されたコアに前記対象スレッドが割り当てられた場合、前記マルチコアプロセッサのすべてのコアに前記高信頼でないアプリケーションのスレッドが割り当てられるか否かを判断する割り当て判断手段と、
    前記割り当て判断手段により前記すべてのコアに前記高信頼でないアプリケーションのスレッドが割り当てられると判断された場合、前記特定されたコアのうち前記検出されたコアを除く残余のコアから前記対象スレッドを割り当てるコアを決定し、前記割り当て判断手段により前記すべてのコアに前記高信頼でないアプリケーションのスレッドが割り当てられないと判断された場合、前記特定されたコアから前記対象スレッドを割り当てるコアを決定する決定手段と、を備え、
    前記通知手段は、
    前記対象スレッドの割り当て指示を、前記決定手段により決定されたコアへ通知することを特徴とする請求項1に記載のマルチコアプロセッサシステム。
  5. 前記一のコアが、
    前記特定手段により特定されたコアのうちいずれのスレッドも割り当てられていないコアを検出する検出手段と、
    前記検出手段より検出されたコアに前記対象スレッドが割り当てられた場合、前記マルチコアプロセッサのいずれのコアにも前記高信頼であるアプリケーションのスレッドが割り当てられるか否かを判断する割り当て判断手段と、
    前記割り当て判断手段により前記すべてのコアに前記高信頼であるアプリケーションのスレッドが割り当てられると判断された場合、前記特定されたコアのうち前記検出されたコアを除く残余のコアから前記対象スレッドを割り当てるコアを決定し、前記割り当て判断手段により前記すべてのコアに前記高信頼であるアプリケーションのスレッドが割り当てられないと判断された場合、前記特定されたコアから前記対象スレッドを割り当てるコアを決定する決定手段と、を備え、
    前記通知手段は、
    前記対象スレッドの割り当て指示を、前記決定手段により決定されたコアへ通知することを特徴とする請求項1に記載のマルチコアプロセッサシステム。
  6. 前記特定手段は、
    前記信頼度判断手段により前記対象アプリケーションが前記高信頼でないアプリケーションと判断された場合、前記マルチコアプロセッサのうち前記一のコアを除く残余のコアから前記高信頼であるアプリケーションのスレッドが割り当てられていないコアを特定し、
    前記通知手段は、
    前記対象スレッドの起動指示を、前記特定手段により特定されたコアへ通知することを特徴とする請求項1〜4のいずれか一つに記載のマルチコアプロセッサシステム。
  7. マルチコアプロセッサを備え、前記マルチコアプロセッサ内の一のコアがスケジューラによりスレッドの割り当て指示の通知を受けると前記スレッドのマルチコアプロセッサへの割り当て処理を実行するマルチコアプロセッサシステムであって、
    前記一のコアが、
    前記マルチコアプロセッサのうちストールしたストールコアを検出する検出手段と、
    前記検出手段により検出されたストールコアでストールによりクラッシュしたスレッドを特定する特定手段と、
    前記マルチコアプロセッサのうちストールコアを除く残余のコアに割り当てる前記特定手段により特定されたスレッドの割り当て指示を、前記スケジューラに通知する割り当て通知手段と、
    を備えることを特徴とするマルチコアプロセッサシステム。
  8. 前記一のコアが、さらに、
    前記検出手段により検出されたストールコアにリブート指示を通知するリブート通知手段と、を備え、
    前記割り当て通知手段は、
    前記スケジューラに前記割り当て指示を通知せず、前記特定手段により特定されたスレッドの起動指示を、前記リブート通知手段によるリブート指示によりリブートされたリブート済ストールコアへ通知することを特徴とする請求項7に記載のマルチコアプロセッサシステム。
  9. アプリケーションソフトウェア(以下、「アプリケーション」)ごとに動作に関する信頼度を記憶する記憶装置にアクセス可能なマルチコアプロセッサ内の一のコアに、
    対象スレッドを起動する対象アプリケーションの信頼度を前記記憶装置から抽出する抽出工程と、
    前記抽出工程により抽出された信頼度と指定閾値に基づいて前記対象アプリケーションが、高信頼であるアプリケーションか否かを判断する信頼度判断工程と、
    前記信頼度判断工程により前記高信頼であるアプリケーションと判断された場合、前記マルチコアプロセッサのうち高信頼でないアプリケーションのスレッドが割り当てられていないコアを特定し、前記高信頼でないアプリケーションと判断された場合、前記マルチコアプロセッサのうち前記高信頼であるアプリケーションのスレッドが割り当てられていないコアを特定する特定工程と、
    前記対象スレッドの起動指示を、前記特定工程により特定されたコアへ通知する通知工程と、
    を実行させることを特徴とする制御プログラム。
  10. スレッドの割り当て指示の通知を受けるとスケジューラにより前記スレッドのマルチコアプロセッサへの割り当て処理を実行する前記マルチコアプロセッサ内の一のコアに、
    前記マルチコアプロセッサのうちストールしたストールコアを検出する検出工程と、
    前記検出工程により検出されたストールコアのストールによりクラッシュしたスレッドを特定する特定工程と、
    前記マルチコアプロセッサのうち前記ストールコアを除く残余のコアに割り当てる前記特定工程により特定されたスレッドの割り当て指示を、前記スケジューラに通知する割り当て通知工程と、
    を実行させることを特徴とする制御プログラム。
  11. アプリケーションソフトウェア(以下、「アプリケーション」)ごとに動作に関する信頼度を記憶する記憶装置にアクセス可能なマルチコアプロセッサ内の一のコアが、
    前記アプリケーションのうち対象スレッドを起動する対象アプリケーションの信頼度を前記記憶装置から抽出する抽出工程と、
    前記抽出工程により抽出された信頼度と指定閾値に基づいて、前記対象アプリケーションが高信頼であるアプリケーションか否かを判断する信頼度判断工程と、
    前記信頼度判断工程により前記高信頼であるアプリケーションと判断された場合、前記マルチコアプロセッサのうち高信頼でないアプリケーションのスレッドが割り当てられていないコアを特定し、前記高信頼でないアプリケーションと判断された場合、前記マルチコアプロセッサのうち前記高信頼であるアプリケーションのスレッドが割り当てられていないコアを特定する特定工程と、
    前記対象スレッドの起動指示を、前記特定工程により特定されたコアへ通知する通知工程と、
    を実行することを特徴とする制御方法。
  12. スレッドの割り当て指示の通知を受けるとスケジューラにより前記スレッドのマルチコアプロセッサへの割り当て処理を実行する前記マルチコアプロセッサ内の一のコアが、
    前記マルチコアプロセッサのうちストールしたストールコアを検出する検出工程と、
    前記検出工程により検出されたストールコアのストールによりクラッシュしたスレッドを特定する特定工程と、
    前記マルチコアプロセッサのうち前記ストールコアを除く残余のコアに割り当てる前記特定工程により特定されたスレッドの割り当て指示を、前記スケジューラに通知する割り当て通知工程と、
    を実行することを特徴とする制御方法。
JP2012501563A 2010-02-23 2010-02-23 マルチコアプロセッサシステム、制御プログラム、および制御方法 Pending JPWO2011104824A1 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2010/052793 WO2011104824A1 (ja) 2010-02-23 2010-02-23 マルチコアプロセッサシステム、制御プログラム、および制御方法

Publications (1)

Publication Number Publication Date
JPWO2011104824A1 true JPWO2011104824A1 (ja) 2013-06-17

Family

ID=44506271

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012501563A Pending JPWO2011104824A1 (ja) 2010-02-23 2010-02-23 マルチコアプロセッサシステム、制御プログラム、および制御方法

Country Status (5)

Country Link
US (1) US20120304184A1 (ja)
EP (1) EP2541407A1 (ja)
JP (1) JPWO2011104824A1 (ja)
CN (1) CN102754079A (ja)
WO (1) WO2011104824A1 (ja)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101295508B1 (ko) * 2011-09-09 2013-08-23 주식회사 팬택 스마트 단말기에서 어플리케이션을 실행하기 위한 제어 장치 및 그 방법
US9052911B2 (en) * 2012-08-14 2015-06-09 Oracle International Corporation Mechanism for consistent core hang detection in a a processor core
CN103631661B (zh) * 2013-11-27 2017-04-05 青岛海信电器股份有限公司 一种内存管理方法和装置
CN103870747B (zh) * 2014-03-31 2017-05-24 可牛网络技术(北京)有限公司 一种应用程序的监控及处理方法及装置
US10528443B2 (en) * 2015-01-30 2020-01-07 Samsung Electronics Co., Ltd. Validation of multiprocessor hardware component
JP6378128B2 (ja) * 2015-04-28 2018-08-22 ルネサスエレクトロニクス株式会社 性能検証装置、システム、方法、およびコンピュータに当該方法を実行させるためのプログラム
CN104866460B (zh) * 2015-06-04 2017-10-10 电子科技大学 一种基于SoC的容错自适应可重构系统与方法
CN108334420B (zh) * 2017-01-19 2021-06-08 中国科学院声学研究所 一种基于多核网络处理器系统的数据恢复方法
US11151002B2 (en) 2019-04-05 2021-10-19 International Business Machines Corporation Computing with unreliable processor cores
CN110990151A (zh) * 2019-11-24 2020-04-10 浪潮电子信息产业股份有限公司 一种基于异构计算平台的业务处理方法
CN110928601B (zh) * 2019-12-04 2022-05-20 锐捷网络股份有限公司 一种隔离cpu的方法、装置以及存储介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2006022161A1 (ja) * 2004-08-25 2006-03-02 Nec Corporation 情報通信装置及びプログラム実行環境制御方法
JP2007133723A (ja) * 2005-11-11 2007-05-31 Hitachi Ltd マルチプロセッサ、タスクスケジューリング方法、及びコンパイラ
WO2008062647A1 (en) * 2006-11-02 2008-05-29 Nec Corporation Multiprocessor system, system configuration method in multiprocessor system, and program thereof

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2812045B2 (ja) * 1992-03-16 1998-10-15 株式会社日立製作所 高信頼型分散処理システム
JP2002202959A (ja) 2000-12-28 2002-07-19 Hitachi Ltd 動的な資源分配をする仮想計算機システム
US8365021B2 (en) 2005-06-17 2013-01-29 Nec Corporation Information processing device comprising a plurality of domains having a plurality of processors, recovery device, program and recovery method
JP2008152594A (ja) 2006-12-19 2008-07-03 Hitachi Ltd マルチコアプロセッサ計算機の高信頼化方法
CN101236515B (zh) * 2007-01-31 2010-05-19 迈普通信技术股份有限公司 多核系统单核异常的恢复方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2006022161A1 (ja) * 2004-08-25 2006-03-02 Nec Corporation 情報通信装置及びプログラム実行環境制御方法
JP2007133723A (ja) * 2005-11-11 2007-05-31 Hitachi Ltd マルチプロセッサ、タスクスケジューリング方法、及びコンパイラ
WO2008062647A1 (en) * 2006-11-02 2008-05-29 Nec Corporation Multiprocessor system, system configuration method in multiprocessor system, and program thereof

Also Published As

Publication number Publication date
EP2541407A1 (en) 2013-01-02
CN102754079A (zh) 2012-10-24
WO2011104824A1 (ja) 2011-09-01
US20120304184A1 (en) 2012-11-29

Similar Documents

Publication Publication Date Title
WO2011104824A1 (ja) マルチコアプロセッサシステム、制御プログラム、および制御方法
US9304794B2 (en) Virtual machine control method and virtual machine system using prefetch information
EP3039540B1 (en) Virtual machine monitor configured to support latency sensitive virtual machines
JP3546678B2 (ja) マルチos構成方法
US9009701B2 (en) Method for controlling a virtual machine and a virtual machine system
EP2656206B1 (en) Probe insertion via background virtual machine
US6772419B1 (en) Multi OS configuration system having an interrupt process program executes independently of operation of the multi OS
US8635615B2 (en) Apparatus and method for managing hypercalls in a hypervisor and the hypervisor thereof
Song et al. Schedule processes, not VCPUs
US8458718B2 (en) Statically partitioning into fixed and independent systems with fixed processing core
US10409633B2 (en) Hypervisor-visible guest thread management
CN113835895A (zh) 用于具有不同能力的核心的线程和/或虚拟机调度
JP2008234191A (ja) ハードウエアモニタ管理装置及びハードウエアモニタ機能の実行方法
CN115480931A (zh) 一种核间通信处理方法、装置及计算机系统
US9904567B2 (en) Limited hardware assisted dirty page logging
JP6198858B2 (ja) 計算機、及び、ハイパバイザによる資源スケジューリング方法
JP5925288B2 (ja) 計算機、アクセス管理方法およびアクセス管理プログラム
JP2011221634A (ja) 計算機システム、論理区画管理方法及び論理分割処理プログラム
JPWO2020183278A5 (ja)
CN114327814A (zh) 任务调度方法、虚拟机、物理主机和存储介质
US20240086219A1 (en) Transmitting interrupts from a virtual machine (vm) to a destination processing unit without triggering a vm exit
Leroux et al. Using Resource Partitioning to Build Secure, Survivable Embedded Systems
JP2022542212A (ja) カーネルサポートを用いたデュラブルサービスに基づく耐障害オペレーティングシステムを構築すること
JP2004038995A (ja) マルチos構成方法

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130618

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130819

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20131112