(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-10-12
(45)【発行日】2022-10-20
(54)【発明の名称】計算機システム及びプログラム実行方法
(51)【国際特許分類】
G06F 11/18 20060101AFI20221013BHJP
G06F 9/50 20060101ALI20221013BHJP
【FI】
G06F11/18 620
G06F9/50 120Z
(21)【出願番号】P 2019125471
(22)【出願日】2019-07-04
【審査請求日】2021-07-15
(73)【特許権者】
【識別番号】000005108
【氏名又は名称】株式会社日立製作所
(74)【代理人】
【識別番号】110000925
【氏名又は名称】特許業務法人信友国際特許事務所
(72)【発明者】
【氏名】野水 拓馬
(72)【発明者】
【氏名】河合 英宏
(72)【発明者】
【氏名】小川 雅昭
【審査官】三坂 敏夫
(56)【参考文献】
【文献】特開2004-046356(JP,A)
【文献】特開2012-194615(JP,A)
【文献】特開2016-031651(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 11/16-11/20
G06F 9/50
(57)【特許請求の範囲】
【請求項1】
オペレーティングシステムによって動作が管理される同期コア処理部及び準同期コア処理部を有し、前記同期コア処理部及び前記準同期コア処理部は、所定の実行単位ごとにプログラムを切り替えて、複数の前記プログラムを並列に実行可能である計算機と、
ネットワークで接続される複数の前記計算機で実行された前記プログラムの実行結果を比較して比較結果を出力する比較機と、を備え、
前記計算機が実行する前記プログラムの
実行タイミングを他の前記計算機で実行される前記プログラムの実行タイミングと同期させるための同期用データを、前記ネットワークを介して規定の時間範囲で他の前記計算機と交換する計算機システムであって、
前記同期コア処理部は、他の前記計算機が備える同期コア処理部と同期した同期タイミングで、他の前記計算機が実行するプログラムと同じ前記プログラムを前記実行単位ごとに実行し、前記プログラムの特性に応じて移住が要請される実行中の前記プログラムを前記準同期コア処理部に移住させ、
前記準同期コア処理部は、前記同期コア処理部から移住した前記プログラムを実行した後、前記同期コア処理部に前記プログラムを移住させ、
前記同期コア処理部は、前記準同期コア処理部から移住した前記プログラムを前記同期タイミングで実行して得た前記実行結果を前記比較機に出力する
計算機システム。
【請求項2】
前記同期コア処理部が前記同期タイミングで実行する前記プログラムは、他の前記計算機と同期して実行されなければ入力される値が同一であっても出力結果が同一とならず、他の前記計算機と同期して実行され、かつ入力される値が同一であれば出力結果が同一となる非決定性処理を特性とし、
前記同期コア処理部から前記準同期コア処理部に移住される前記プログラムは、入力される値が同一であれば出力結果が同一となる決定性処理を特性とする
請求項1に記載の計算機システム。
【請求項3】
前記同期コア処理部は、
前記実行単位ごとに前記プログラムをキューに接続して管理する第1プログラム管理部と、
前記第1プログラム管理部で実行可能状態となった前記プログラムのうち、複数の前記計算機で同一順序かつ最も早く実行可能待ちとなった前記プログラムを選択する第1選択処理部と、
第1選択処理部が選択した前記プログラムを前記同期タイミングで実行する第1プログラム実行部と、
前記第1プログラム実行部が実行中の前記プログラムから移住要請を受付ける第1移住要請受付部と、
前記移住要請を受付けた前記プログラムを、前記準同期コア処理部に移住させる第1移住処理部と、
他の前記計算機が備える前記同期コア処理部との間で、前記第1選択処理部により選択された前記プログラムの次に実行可能状態となる前記プログラムの実行開始を待合わせる待合わせ処理部と、を備える
請求項2に記載の計算機システム。
【請求項4】
前記第1選択処理部は、前記第1プログラム管理部に接続される実行待ち状態の前記プログラムを、前記同期コア処理部が生成し、又は実行中断した後、前記第1プログラム管理部に接続される前記プログラムと、前記準同期コア処理部から移住される前記プログラムとに分類して選択し、
前記待合わせ処理部は、前記準同期コア処理部から移住される前記プログラムの実行開始を待合わせる時間範囲を、前記同期コア処理部が生成し、又は実行中断した後、前記第1プログラム管理部に接続される前記プログラムの実行開始を待合わせる時間範囲よりも長くする
請求項3に記載の計算機システム。
【請求項5】
前記準同期コア処理部は、
前記実行単位ごとに前記プログラムをキューに接続して管理する第2プログラム管理部と、
前記第2プログラム管理部で実行可能状態となった前記プログラムのうち、最も早く実行可能待ちとなった前記プログラムを選択する第2選択処理部と、
第2選択処理部が選択した前記プログラムを実行する第2プログラム実行部と、
前記第2プログラム実行部が実行中の前記プログラムから移住要請を受付ける第2移住要請受付部と、
前記移住要請を受付けた前記プログラムを、前記同期コア処理部に移住させる第2移住処理部と、を備え、
前記第1移住処理部は、移住要請を行った前記プログラムが指定した任意の移住先に、前記第1移住要請受付部が受付けた前記プログラムを移住させ、
前記第2移住処理部は、前記プログラムの移住元に前記プログラムを移住させる
請求項3又は4に記載の計算機システム。
【請求項6】
前記第1移住要請受付部は、前記プログラムの実行中の任意のタイミングで、前記プログラムから前記移住要請を受け付け、
前記第1移住処理部は、移住要請を行った前記プログラムが指定した任意の移住先にある前記第2プログラム管理部に、前記第1移住要請受付部が受付けた前記プログラムを移住させて接続する
請求項5に記載の計算機システム。
【請求項7】
オペレーティングシステムによって動作が管理される同期コア処理部及び準同期コア処理部を有し、前記同期コア処理部及び前記準同期コア処理部は、所定の実行単位ごとにプログラムを切り替えて、複数の前記プログラムを並列に実行可能である計算機と、
ネットワークで接続される複数の前記計算機で実行された前記プログラムの実行結果を比較して比較結果を出力する比較機と、を備え、
前記計算機が実行する前記プログラムの
実行タイミングを他の前記計算機で実行される前記プログラムの実行タイミングと同期させるための同期用データを、前記ネットワークを介して規定の時間範囲で他の前記計算機と交換する計算機システムで行われるプログラム実行方法であって、
前記同期コア処理部は、他の前記計算機が備える同期コア処理部と同期した同期タイミングで、他の前記計算機が実行するプログラムと同じ前記プログラムを前記実行単位ごとに実行し、前記プログラムの特性に応じて移住が要請される実行中の前記プログラムを前記準同期コア処理部に移住させる処理と、
前記準同期コア処理部は、前記同期コア処理部から移住した前記プログラムを実行した後、前記同期コア処理部に前記プログラムを移住させる処理と、
前記同期コア処理部は、前記準同期コア処理部から移住した前記プログラムを前記同期タイミングで実行して得た実行結果を前記比較機に出力する処理と、を含む
プログラム実行方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、計算機システム及びプログラム実行方法に関する。
【背景技術】
【0002】
システムの無停止運転を実現する技術として、フォールト・トレラント・コンピュータ(Fault tolerant computer)がある。フォールト・トレラント・コンピュータは、CPU(Central Processing Unit)やメモリ、I/O(Input, Output)バスなどを多重化したハードウェアにて、同一プログラムを複数のCPUで動作させて結果を照合する。このため、1台のCPUに障害が発生しても、他のCPUが処理を継続することができる。
【0003】
このフォールト・トレラント・コンピュータと同じレベルの多重性を、多重化向けの専用ハードウェアを製作せずに実現する方法として、疎結合な複数の汎用計算機を用いてフォールト・トレラント・コンピュータを構成する技術がある。
【0004】
例えば、特許文献1には、疎結合なフォールト・トレラント・コンピュータに関する記載がある。すなわち、特許文献1には、「複数CPUを二重化バスで接続して同一タスクを実行し、実行結果(命令の出力)を照合する。」と記載されている。
【先行技術文献】
【特許文献】
【0005】
【発明の概要】
【発明が解決しようとする課題】
【0006】
ところで、特許文献1に記載された疎結合なフォールト・トレラント・コンピュータは、次に動作させるプログラムの情報をネットワーク越しに共有し、実行開始タイミングを待合わせることで、特定のコアが同期して動作する仕組み(タスク同期処理)である。このシステムで、単位時間当たりの処理性能を増やすためには、同期して動くコアを増やす必要がある。
【0007】
しかし、同期して動作するコアを増やすためには、同期のための通信用帯域、通信用ハードウェアや、突合せを行う装置の演算資源を増やさなければならない。例えば、同期処理を行う一組のコアに加えて、さらにもう一組のコアが別の同期処理を行う場合には、同期のための通信用帯域、通信用ハードウェアや、突合せを行う装置の一組を追加しなければならない。このため、システムの管理者は、ハードウェアの増強を検討したり、システムの構成変更を検討する必要があった。
【0008】
本発明はこのような状況に鑑みて成されたものであり、ハードウェアの構成を変更せず、計算機システムの処理性能を向上することを目的とする。
【課題を解決するための手段】
【0009】
本発明に係る計算機システムは、オペレーティングシステムによって動作が管理される同期コア処理部及び準同期コア処理部を有し、同期コア処理部及び準同期コア処理部は、所定の実行単位ごとにプログラムを切り替えて、複数のプログラムを並列に実行可能である計算機と、ネットワークで接続される複数の計算機で実行されたプログラムの実行結果を比較して比較結果を出力する比較機と、を備え、計算機が実行するプログラムの実行タイミングを他の計算機で実行されるプログラムの実行タイミングと同期させるための同期用データを、ネットワークを介して規定の時間範囲で他の計算機と交換する。
そして、同期コア処理部は、他の計算機が備える同期コア処理部と同期した同期タイミングで、他の計算機が実行するプログラムと同じプログラムを実行単位ごとに実行し、プログラムの特性に応じて移住が要請される実行中のプログラムを準同期コア処理部に移住させ、準同期コア処理部は、同期コア処理部から移住したプログラムを実行した後、同期コア処理部にプログラムを移住させ、同期コア処理部は、準同期コア処理部から移住したプログラムを同期タイミングで実行して得た実行結果を比較機に出力する。
【発明の効果】
【0010】
本発明によれば、プログラムの特性に応じて移住が要請される実行中のプログラムを準同期コア処理部に移住させることで、同期コア処理部と準同期コア処理部が並列に実行可能となる。また、複数の計算機で準同期コア処理部を同期して動作させる通信用帯域や新たなハードウェアは不要である。このため、計算機のハードウェア構成を変更することなく、計算機システムの処理性能を向上させることができる。
上記した以外の課題、構成及び効果は、以下の実施の形態の説明により明らかにされる。
【図面の簡単な説明】
【0011】
【
図1】本発明の一実施の形態に係る計算機システムのシステム構成図である。
【
図2】本発明の一実施の形態に係るタスク同期処理のために各計算機で稼働するオペレーティングシステムの構成例と、タスク実行の例を示すタイムチャートである。
【発明を実施するための形態】
【0012】
以下、本発明を実施するための形態について、添付図面を参照して説明する。本明細書及び図面において、実質的に同一の機能又は構成を有する構成要素については、同一の符号を付することにより重複する説明を省略する。
【0013】
[一実施の形態]
以下、本発明の一実施の形態に係るタスク同期処理の例について
図1と
図2を参照して説明する。
【0014】
<計算機システムの構成例>
図1は、本発明の一実施の形態に係る計算機システム10のシステム構成図である。
計算機システム10は、計算機X201と、計算機Y211と、計算機Z221と、計算機T231と、出力比較機251とがネットワーク240に接続され、出力比較機251と外部装置とがネットワーク260で接続される構成をとる。
【0015】
計算機X201~T231(複数の計算機の一例)は、いずれも共有するメモリ、ディスク等を持っておらず、プログラムの同期処理に必要な通知を互いに行う。このため、計算機システム10は、複数の計算機から出力結果を得る、疎結合なフォールト・トレラント・コンピュータを構成する。このため、計算機システム10では、計算機X201が実行するプログラムの情報を、ネットワーク240を介して規定の時間範囲で他の計算機Y211~T231が交換する。つまり、複数の計算機X201~t231が互いに実行するプログラムの情報を交換する。なお、計算機システム10が備える計算機の数は2台以上であればよく、本実施の形態に係る4台に限らない。
【0016】
計算機X201は、CPU(Central Processing Unit)202と、バスコントローラ(BC:Bus Controller)205と、メモリ206と、NIC(Network Interface Card)207を備える。計算機Y211、計算機Z221、計算機T231は、計算機X201と同等の構成要素を備えるため、ここでは、計算機X201の構成例について説明する。
【0017】
CPU202は、コア203と、コア204を備える。そして、CPU202と、バスコントローラ205と、メモリ206と、NIC207とが、計算機X201内に設けられたバスによって接続される構成をとる。計算機X201が搭載するCPU202は1つに限らず、また、CPU202の中のコアの数も2つ以上であれば数に制限はない。
【0018】
CPU202は、本実施の形態に係る各機能を実現するソフトウェアのプログラムコードをメモリ206から読み出して、実行する演算器の一例として用いられる。メモリ206には、CPU202の演算処理の途中で発生した変数やパラメーター等が一時的に書き込まれ、これらの変数やパラメーター等がCPU202によって適宜読み出される。ただし、CPU202に代えてMPU(Micro Processing Unit)等の他の演算器を用いてもよい。
【0019】
CPU202で稼働するコア203,204は、
図1では不図示のオペレーティングシステムにより動作が管理される機能部であり、ソフトウェアプログラムによってコア203,204の機能が実現される。後述する
図2にて詳細を説明するが、コア203は、例えば同期コア処理部101として用いられ、コア204は、準同期コア処理部108として用いられる。コア203,204で実行されるプログラムの実行単位はタスク(プロセスともいう)である。以下の説明では、実行されるプログラムをタスクと呼ぶこともある。本実施の形態に係るプログラムの特性によっては、コア203で実行されるタスクがコア204に移住され、コア204で実行された後、コア203に戻されて、コア203が戻されたタスクを実行することが可能である。
【0020】
バスコントローラ205は、メモリ206におけるメモリ空間(アドレス)を生成し、メモリ206に書き込まれるデータを制御する。メモリ206には、例えば、コア203、204で実行されたプログラムの実行結果が書き込まれる。また、バスコントローラ205は、計算機X201内の各デバイスによるデータの衝突を避けるために、各デバイスのデータの入出力を管理する。
【0021】
メモリ206としては、例えば、ROM(Read Only Memory)、RAM(Read Only Memory)、HDD(Hard Disk Drive)、SSD(Solid State Drive)、フレキシブルディスク、光ディスク、光磁気ディスク、CD-ROM、CD-R、磁気テープ又は不揮発性のメモリ等が用いられる。メモリ206には、OS(Operating System)、各種のパラメーターの他に、計算機X201を機能させるためのプログラムや、計算機X201に実行が指示されたプログラムが記録されている。メモリ206は、CPU202が動作するために必要なプログラムやデータ等を永続的に記録しており、計算機X201によって実行されるプログラムを格納したコンピュータ読取可能な非一過性の記録媒体の一例として用いられる。
【0022】
NIC207は、端子に接続されたLAN(Local Area Network)、専用線等を介して各種のデータを装置間で送受信することが可能である。
【0023】
計算機X201と、他の計算機(計算機Y211~計算機T231の少なくともいずれか1台)とは、同じタイミングで同じプログラムを実行する。このため、計算機X201と、他の計算機とは、プログラムの実行タイミングを同期させるための同期用データを互いに通信し合う。各計算機がプログラムを実行した後、計算機X201が実行したプログラムの実行結果と、他の計算機が実行したプログラムの実行結果とがネットワーク240を通じて出力比較機251に転送される。
【0024】
計算機X201~T231が実行したプログラムの実行結果は、ネットワーク240を通じて出力比較機251に送信される。出力比較機251は、ネットワーク240で接続される複数の計算機X201~T231で行われたプログラムの実行結果を受信して、各実行結果の比較照合を行った後、照合結果を外部のネットワーク260に出力する。
一方、出力比較機251は、外部のネットワーク260から受信したデータを各計算機にブロードキャスト送信する。そして、各計算機の同一タスクが同一データを受信した後、受信したデータの処理を行う。
【0025】
出力比較機251(比較機の一例)は、CPU252と、バスコントローラ254と、メモリ255と、NIC256と、NIC257を備える。CPU252は、1つのコア253を備える。そして、CPU252と、バスコントローラ254と、メモリ255と、NIC256と、NIC257とは、出力比較機251の内部に設けられたバスによって接続される。
【0026】
出力比較機251が備えるCPU252と、バスコントローラ254と、メモリ255と、NIC256,257の動作は、計算機X201が備えるCPU202と、バスコントローラ205と、メモリ206と、NIC207と同様である。ただし、NIC256は、ネットワーク260に接続され、NIC257は、ネットワーク240に接続される。
【0027】
CPU252は、2台以上の計算機で得られたプログラムの実行結果を比較する機能を有する。各計算機の実行結果は、ネットワーク240を通じて、NIC257に入力され、メモリ255に書き込まれた後、CPU252のコア253が比較照合のプログラムを実行する。そして、コア253が比較照合のプログラムを実行して得た比較照合の結果は一旦、メモリ255に書き込まれ、NIC256を通じてネットワーク260に出力される。例えば、ネットワーク260に接続される表示装置等に比較照合の結果が表示される。表示装置を操作するユーザは、比較照合の結果に基づいて、各計算機の実行結果が、正常又は異常のいずれであるかを確認することができる。
【0028】
また、各計算機が、後述する
図2に示すオペレーティングシステムを動作させることで、4台の計算機のうち、2台の計算機が故障しても残りの2台の計算機で同一タスクを実行し、出力比較機251が、実行された同一タスクの2つの出力データを比較できる。また、4台の計算機のうち、3台の計算機が故障しても残りの1台の計算機がタスクの実行を継続することが可能となる。1台の計算機しかタスクを実行しない場合、出力比較機251による出力データの比較は行われない。
【0029】
<オペレーティングシステム(OS)の構成例と、タスク実行方法の例>
図2は、本発明の一実施の形態に係るタスク同期処理のために各計算機で稼働するオペレーティングシステム(OS)の構成例と、タスク実行方法の例を示すタイムチャートである。本明細書では、オペレーティングシステムをOSと略記して説明する。
【0030】
図2では、可読性を向上するため、計算機X201のOS100、計算機Y211のOS120の構成例について説明する。実際には、
図1に示した計算機Z221、計算機T231も計算機X201、計算機Y211に接続され、4台の計算機がタスク同期処理を実行し、実行結果を出力比較機251に出力する。
【0031】
計算機X201のOS100、及び計算機Y211のOS120の中には、タスク同期処理を行う構成要素が存在する。OS100,120は、マルチプログラミング機能を有するオペレーティング・システムであり、複数のプログラムの実行を可能とするために実行中のプログラムをタスク(プロセスともいう)という実行単位で管理する。また、OS100,120は、マルチプロセッサ用途であり、コア単位にタスクを並列して実行することが可能である。
【0032】
OS100,120は、同期用データ通信路140で接続され、同期用データ通信路140を介して互いに同期用データを交換する。本実施の形態では、OS100の次実行タスク待合わせ処理部104と、OS120の次実行タスク待合わせ処理部124とが、同期用データ通信路140により接続される。なお、本明細書では、現在実行しているタスクの次に実行が予定されるタスクを「次実行タスク」と呼ぶ。
【0033】
ただし、本実施の形態は2台の計算機に限定するものではなく、計算機システム10を任意の数の計算機で多重に構築することを可能とする。そして、同期用データ通信路140は、多重に構築された複数の計算機間を繋ぐ経路として用いられる。
【0034】
また、本実施の形態に係る計算機X201、Y211は、それぞれオペレーティング・システムよりも上位の階層で実行されるプログラム(タスク)の処理を、決定性処理と非決定性処理とに分類して実行することが可能である。決定性処理は、入力結果が同一であれば出力結果が同一となる処理である。非決定性処理は、入力結果が同一であっても出力結果が同一とならない処理である。例えば、非決定性処理は、タスクを実行するハードウェアに何らかの要因で障害が発生した場合に、出力結果が同一とならないような処理である。また、非決定性処理は、実行中のタスクが、計算機ごとに異なるパラメータを別のタスクから受け取った場合に、出力結果が同一とならないような処理でもある。従来の同期コア処理部は、外乱等の影響を受けることで、非決定性処理のタスクを実行して得る出力結果が同一とならない。一方、本実施の形態に係る同期コア処理部101,121は、確実に同期実行されるため、非決定性処理の出力結果は同一となる。
【0035】
このため、本実施の形態に係る計算機システム10では、同期しているコア(同期コア処理部101,121)が非決定性処理を実行(同期実行)し、同期していないコア(準同期コア処理部108,128)が決定性処理を実行(準同期実行)する。実行された決定性処理及び非決定性処理のいずれからも、複数のコアで同じ実行結果が得られる。以下に、本実施の形態に係る計算機X201で稼働するOS100、計算機Y211で稼働するOS120の構成例及び動作例について順に説明する。
【0036】
<OS100の構成例>
始めに、OS100の構成例について説明する。
計算機X201は、OS100によって管理されるタスク(所定の実行単位の一例)ごとにプログラムを切り替えて、複数のプログラムを並列に実行可能な同期コア処理部101及び準同期コア処理部108を備える。
【0037】
同期コア処理部101は、実行タスクキュー102と、次実行タスク選択処理部103と、次実行タスク待合わせ処理部104と、タスク起床処理部105と、コア移住処理部106と、コア移住要請受付部107とを備える。同期コア処理部101は、次実行タスク選択処理部103、次実行タスク待合わせ処理部104、タスク起床処理部105、次実行タスク選択処理部103…の順にループして処理を行う。同期コア処理部101は、処理部103~105のループ処理をしながら、タスクからのコア移住要請があれば、このループ処理よりも優先してコア移住処理部106を実行する。
【0038】
準同期コア処理部108は、実行タスクキュー109と、次実行タスク選択処理部110と、タスク起床処理部111と、コア移住処理部112と、コア移住要請受付部113とを備える。準同期コア処理部108は、次実行タスク選択処理部110、タスク起床処理部111、次実行タスク選択処理部110…の順にループして処理を行う。準同期コア処理部108は、処理部110、111のループ処理をしながら、タスクからのコア移住要請があれば、このループ処理よりも優先してコア移住処理部112を実行する。
【0039】
そこで、同期コア処理部101は、計算機Y211が備える同期コア処理部101と同期した同期タイミングで、計算機Y211(他の計算機)が実行するプログラムと同じプログラムをタスクごとに実行し、プログラムの特性に応じて移住が要請される実行中のプログラムを準同期コア処理部108に移住させる。次に、準同期コア処理部108は、同期コア処理部101から移住したプログラムを実行した後、同期コア処理部101にプログラムを移住させる。そして、同期コア処理部101は、準同期コア処理部108から移住したプログラムを同期タイミングで実行して得た実行結果を出力比較機251に出力する。ここで、同期コア処理部101が同期タイミングで実行するプログラムは、計算機Y211(他の計算機)と同期して実行されなければ入力される値が同一であっても出力結果が同一とならない非決定性処理を特性とする。ただし、非決定性処理は、計算機Y211(他の計算機)と同期して実行され、かつ入力される値が同一であれば出力結果が同一となる。また、同期コア処理部101から準同期コア処理部108に移住されるプログラムは、入力される値が同一であれば出力結果が同一となる決定性処理を特性とする。
【0040】
なお、準同期コア処理部108は、CPU202のコア数に応じて複数存在してもよい。例えば、一つの同期コア処理部101に対して、複数の準同期コア処理部108が存在してもよい。この場合、同期コア処理部101は、コア移住要請161を行うタスクBを、番号等で指定した準同期コア処理部108に移住してもよいし、相対的に負荷が低い準同期コア処理部108に移住してもよい。
【0041】
<同期コア処理部101の動作例>
ここで、OS100の同期コア処理部101が備えるキュー及び各処理部の詳細な動作例について説明する。
【0042】
実行タスクキュー102(第1プログラム管理部の一例)は、タスクごとにプログラムをキューに接続し、実行待ち状態のタスクを優先度毎に管理する。
図2には、実行タスクキュー102に「A」、「B」のタスクが接続される様子が示される。実行タスクキュー102では、上にあるタスクの優先度が高いので、「B」より「A」のタスクが優先して実行される。
次実行タスク選択処理部103(第1選択処理部の一例)は、実行タスクキュー102で実行可能状態となったタスクのうち、計算機X201,211で同一順序かつ最も早く実行可能待ちとなったタスクを選択する。
【0043】
次実行タスク待合わせ処理部104(待合わせ処理部の一例)は、計算機Y211が備える同期コア処理部121との間で、次実行タスク選択処理部103により選択されたタスクの次に実行可能状態となるタスクの実行開始を待合わせる。このため、次実行タスク待合わせ処理部104は、次実行タスク選択処理部103が実行タスクキュー102から取り出したタスクの情報を、OS120の次実行タスク待合わせ処理部124と同期用データ通信路140を介して交換する。そして、次実行タスク待合わせ処理部104は、少なくとも2台以上の計算機における同期コアで、同一のタスクが同一の順序で実行可能状態となるまで、任意のタイムアウト時間内で待合わせを行う。
【0044】
タスク起床処理部105(第1プログラム実行部の一例)は、次実行タスク待合わせ処理部104が選択したタスクを同期タイミングに合わせて起床し、実行する。タスク起床処理部105で実行されるタスクは、少なくとも2台以上の計算機における同期コアで同一のタスクが同一の順序で実行可能状態になったと判断されたタスクである。
【0045】
同期コア処理部101は、タスク起床処理部105により起床したタスクが実行を終了し、又は中断したときに、再度、次実行タスク選択処理部103を実行する。次実行タスク選択処理部103は、次に実行するタスクを実行タスクキュー102から選択し、実行する。次実行タスク選択処理部103は、実行タスクキュー102に接続されるタスクが無くなるまで、次に実行すべきタスクを選択し、処理し続ける。
【0046】
コア移住処理部106(第1移住処理部の一例)は、コア移住要請受付部107が移住要請を受付けたタスクを、準同期コア処理部108に移住させる。ここで、コア移住処理部106は、移住要請を行ったタスクが指定した任意の移住先(本実施の形態では準同期コア処理部108)に、コア移住要請受付部107が受付けたタスクを移住させる指示が可能である。
【0047】
このとき、コア移住処理部106は、コア移住要請受付部107からの指示内容に基づいて、移住要請を行ったタスクが指定した任意の移住先(準同期コア処理部108)にある実行タスクキュー109に、コア移住要請受付部107が受付けたタスクを移住させて接続する。ここで、タスクが指定した任意の移住先とは、例えば、タスクを移住先として選択可能な準同期コア処理部が複数ある場合に、これら複数の準同期コア処理部から選択される一つの準同期コア処理部である。
【0048】
コア移住要請受付部107(第1移住要請受付部の一例)は、実行中のタスクからコア移住要請を受け付ける。ここで、コア移住要請受付部107は、タスクの実行中の任意のタイミングで、タスクから移住要請を受け付けることが可能である。そして、コア移住要請受付部107は、受け付けたコア移住要請の内容をコア移住処理部106へと伝える。このとき、コア移住要請受付部107は、実行中タスクからの任意のタイミングでコア移住要請を受付けることが可能である。そして、コア移住要請受付部107は、タスク起床処理部105がタスクを実行してから、次実行タスク選択処理部103が、次に実行されるタスクを選択するまでの間に、コア移住処理部106を実行する。
【0049】
<準同期コア処理部108の動作例>
次に、準同期コア処理部108が備えるキュー及び各処理部の詳細な動作例について説明する。
【0050】
実行タスクキュー109(第2プログラム管理部の一例)は、同期コア処理部101の実行タスクキュー102と同様に、タスクごとにプログラムをキューに接続し、実行待ち状態のタスクを優先度毎に管理する。
図2には、実行タスクキュー109に「F」のタスクが接続される様子が示される。
【0051】
次実行タスク選択処理部110(第2選択処理部の一例)は、実行タスクキュー109で実行可能状態となったタスクのうち、最も早く実行可能待ちとなったタスクを選択する。
タスク起床処理部111(第2プログラム実行部の一例)は、次実行タスク選択処理部110が選択したタスクを起床し、実行する。
【0052】
コア移住処理部112(第2移住処理部の一例)は、コア移住要請受付部113が移住要請を受付けたタスクを、同期コア処理部101に移住させる。ここで、コア移住処理部112は、タスクの移住元にタスクを移住させる。このため、コア移住処理部112は、コア移住要請受付部113からの指示内容に基づいて、指示されたタスクを、指示された同期コア処理部101の実行タスクキュー102に接続する。
【0053】
コア移住要請受付部113(第2移住要請受付部の一例)は、同期コア処理部101のコア移住要請受付部107と同様に、タスク起床処理部111が実行中のタスクから移住要請を受付ける。コア移住要請受付部113は、タスクの実行中の任意のタイミングで、タスクから移住要請を受け付けることが可能である。そして、コア移住要請受付部113は、コア移住要請の内容をコア移住処理部112へと伝える。このとき、コア移住要請受付部113は、実行中タスクからの任意のタイミングでコア移住要請を受付けることが可能である。そして、コア移住要請受付部113は、タスク起床処理部111がタスクを起床し、実行してから、次実行タスク選択処理部110が、次に実行されるタスクを選択するまでの間に、コア移住処理部112を実行する。
【0054】
<OS120の構成例>
次に、OS120の構成例について説明する。
計算機Y211は、計算機X201と同様に、OS120によって管理されるタスク(所定の実行単位の一例)ごとにプログラムを切り替えて、複数のプログラムを並列に実行可能な同期コア処理部121及び準同期コア処理部128を備える。
【0055】
同期コア処理部121は、OS100の同期コア処理部101と同様に、実行タスクキュー122と、次実行タスク選択処理部123と、次実行タスク待合わせ処理部124と、タスク起床処理部125と、コア移住処理部126と、コア移住要請受付部127とを備える。次実行タスク選択処理部123、次実行タスク待合わせ処理部124、タスク起床処理部125、次実行タスク選択処理部123…の順にループして処理を行う。同期コア処理部121は、処理部123~125のループ処理をしながら、タスクからのコア移住要請があれば、このループ処理よりも優先してコア移住処理部126を実行する。
【0056】
準同期コア処理部128は、OS100の準同期コア処理部108と同様に、実行タスクキュー129と、次実行タスク選択処理部130と、タスク起床処理部131と、コア移住処理部132と、コア移住要請受付部133とを備える。次実行タスク選択処理部130、タスク起床処理部131、次実行タスク選択処理部130…の順にループして処理を行う。準同期コア処理部128は、処理部130、131のループ処理を行いながら、タスクからのコア移住要請があれば、このループ処理よりも優先してコア移住処理部132を実行する。
【0057】
そこで、同期コア処理部121は、計算機X201が備える同期コア処理部101と同期した同期タイミングで同じプログラムをタスクごとに実行し、プログラムの特性に応じて移住が要請される実行中のプログラムを準同期コア処理部128に移住させる。次に、準同期コア処理部128は、同期コア処理部121から移住したプログラムを実行した後、同期コア処理部121にプログラムを移住させる。そして、同期コア処理部121は、準同期コア処理部128から移住したプログラムを実行した実行結果を出力比較機251に出力する。
【0058】
なお、準同期コア処理部128は、CPU212のコア数に応じて複数存在してもよい。例えば、一つの同期コア処理部121に対して、複数の準同期コア処理部128が存在してもよい。この場合、同期コア処理部121は、コア移住要請162を行うタスクBを、番号等で指定した準同期コア処理部128に移住してもよいし、相対的に負荷が低い準同期コア処理部128に移住してもよい。
【0059】
計算機Y211のOS120で稼働する同期コア処理部121と準同期コア処理部128は、それぞれ計算機X201のOS100で稼働する同期コア処理部101と準同期コア処理部108と同じ構成要素を備える。
【0060】
<同期コア処理部121の動作例>
ここで、OS120の同期コア処理部121が備えるキュー及び各処理部の詳細な動作例について説明する。
【0061】
実行タスクキュー122(第1プログラム管理部の一例)は、タスクごとにプログラムをキューに接続し、実行待ち状態のタスクを優先度毎に管理する。
図2には、実行タスクキュー122に「A」、「B」のタスクが接続される様子が示される。実行タスクキュー122では、上にあるタスクの優先度が高いので、「B」より「A」のタスクが優先して実行される。
次実行タスク選択処理部123(第1選択処理部の一例)は、実行タスクキュー122で実行可能状態となったタスクのうち、計算機X201,211で同一順序かつ最も早く実行可能待ちとなったタスクを選択する。
【0062】
次実行タスク待合わせ処理部124(待合わせ処理部の一例)は、計算機X201が備える同期コア処理部101との間で、次実行タスク選択処理部123により選択されたタスクの次に実行可能状態となるタスクの実行開始を待合わせる。このため、次実行タスク待合わせ処理部124は、次実行タスク選択処理部123が実行タスクキュー122から取り出したタスクの情報を、OS100の次実行タスク待合わせ処理部104と同期用データ通信路140を介して交換する。そして、次実行タスク待合わせ処理部124は、少なくとも2台以上の計算機における同期コアで、同一のタスクが同一の順序で実行可能状態となるまで、任意のタイムアウト時間内で待合わせを行う。
【0063】
タスク起床処理部125(第1プログラム実行部の一例)は、次実行タスク選択処理部123が選択したタスクを同期タイミングに合わせて起床し、実行する。タスク起床処理部125で実行されるタスクは、少なくとも2台以上の計算機における同期コアで同一のタスクが同一の順序で実行可能状態になったと判断されたタスクである。
【0064】
同期コア処理部121は、タスク起床処理部125により起床したタスクが実行を終了し、又は中断したときに、再度、次実行タスク選択処理部123を実行する。次実行タスク選択処理部123は、次に実行するタスクを実行タスクキュー122から選択し、実行する。次実行タスク選択処理部123は、実行タスクキュー122に接続されるタスクが無くなるまで、次に実行すべきタスクを選択し、処理し続ける。
【0065】
コア移住処理部126(第1移住処理部の一例)は、コア移住要請受付部127が移住要請を受付けたタスクを、準同期コア処理部128に移住させる。ここで、コア移住処理部126は、移住要請を行ったタスクが指定した任意の移住先に、コア移住要請受付部127が受付けたタスクを移住させる指示が可能である。このとき、コア移住処理部126は、コア移住要請受付部127からの指示内容に基づいて、移住要請を行ったタスクが指定した任意の移住先(本実施の形態では準同期コア処理部128)にある実行タスクキュー129に、コア移住要請受付部127が受付けたタスクを移住させて接続する。
【0066】
コア移住要請受付部127(第1移住要請受付部の一例)は、実行中のタスクからコア移住要請を受け付ける。ここで、コア移住要請受付部127は、タスクの実行中の任意のタイミングで、タスクから移住要請を受け付けることが可能である。そして、コア移住要請受付部127は、受け付けたコア移住要請の内容をコア移住処理部126へと伝える。このとき、コア移住要請受付部127は、実行中タスクからの任意のタイミングでコア移住要請を受付けることが可能である。そして、コア移住要請受付部127は、タスク起床処理部125がタスクを起床し、実行してから、次実行タスク選択処理部123が、次に実行されるタスクを選択するまでの間に、コア移住処理部126を実行する。
【0067】
<準同期コア処理部128の動作例>
次に、準同期コア処理部128が備えるキュー及び各処理部の詳細な動作例について説明する。
【0068】
実行タスクキュー129(第2プログラム管理部の一例)は、同期コア処理部121の実行タスクキュー122と同様に、タスクごとにプログラムをキューに接続し、実行待ち状態のタスクを優先度毎に管理する。
図2には、実行タスクキュー129に「F」のタスクが接続される様子が示される。
【0069】
次実行タスク選択処理部130(第2選択処理部の一例)は、実行タスクキュー129で実行可能状態となったタスクのうち、最も早く実行可能待ちとなったタスクを選択する。
タスク起床処理部131は、次実行タスク選択処理部130が選択したタスクを起床し、実行する。
【0070】
コア移住処理部132(第2移住処理部の一例)は、コア移住要請受付部133が移住要請を受付けたタスクを、同期コア処理部121に移住させる。ここで、コア移住処理部132は、タスクの移住元にタスクを移住させる。このため、コア移住処理部132は、コア移住要請受付部133からの指示内容に基づいて、指示されたタスクを、指示された同期コア処理部121の実行タスクキュー122に接続する。
【0071】
コア移住要請受付部133(第2移住要請受付部の一例)は、同期コア処理部121のコア移住要請受付部127と同様に、タスク起床処理部131が実行中のタスクから移住要請を受付ける。コア移住要請受付部133は、タスクの実行中の任意のタイミングで、タスクから移住要請を受け付けることが可能である。そして、コア移住要請受付部133は、コア移住要請の内容をコア移住処理部132へと伝える。このとき、コア移住要請受付部133は、実行中タスクからの任意のタイミングでコア移住要請を受付けることが可能である。そして、コア移住要請受付部133は、タスク起床処理部131がタスクを起床し、実行してから、次実行タスク選択処理部130が、次に実行されるタスクを選択するまでの間に、コア移住処理部132を実行する。
【0072】
ここで、同期コア処理部101,121で実行中のタスクが任意のタイミングで準同期コア処理部108,128に移動し、処理を継続した後、任意のタイミングで同期コア処理部101,121に戻って処理を継続するときの処理の具体例について、
図2の下側に示すタイムチャートを参照して、各処理の内容を説明する。
【0073】
タイムチャートの左から順に、計算機X201の準同期コア処理部108のタイムチャート150、計算機X201の同期コア処理部101のタイムチャート151を示す。また、計算機Y211の同期コア処理部121のタイムチャート152、計算機Y211の準同期コア処理部128のタイムチャート153を示す。
【0074】
計算機X201の次実行タスク待合わせ処理部104と、計算機Y211の次実行タスク待合わせ処理部124とは、同期用データ通信路140を介して、次実行タスクを待合わせる(タスク同期)。この様子は、以下のタスク同期タイミング180~185の各処理に示される。なお、本明細書及び図面では、「タスク同期」と略記する。
【0075】
タスク同期180は、計算機X201と計算機Y211がタスクAを次の実行タスクとして待合わせ完了したことを表す。
タスク同期181は、計算機X201と計算機Y211がタスクBを次の実行タスクとして待合わせ完了したことを表す。
タスク同期182は、計算機X201と計算機Y211がタスクCを次の実行タスクとして待合わせ完了したことを表す。
【0076】
タスク同期183は、計算機X201と計算機Y211がタスクDを次の実行タスクとして待合わせ完了したことを表す。
タスク同期184は、計算機X201と計算機Y211がタスクBを次の実行タスクとして待合わせ完了したことを表す。
タスク同期185は、計算機X201と計算機Y211がタスクEを次の実行タスクとして待合わせ完了したことを表す。
【0077】
なお、計算機X201の準同期コア処理部108で実行されるタスクF,G、計算機Y211の準同期コア処理部128で実行されるタスクH,I,J,Kはいずれも同期処理の対象ではない。これらのタスクの実行結果に対して、出力比較機251の比較照合は行われない。
【0078】
このように計算機X201の同期コア処理部101のタイムチャート151には、タスクA~Eの実行開始及び終了のタイミングの例が示され、準同期コア処理部108のタイムチャート150には、タスクB,F,Gの実行開始及び終了のタイミングの例が示される。さらに、タイムチャート150,151には、それぞれコア移住要請160,161の例が示される。
【0079】
計算機X201のOS100において、準同期コア処理部108では、実行されるタスクF、Gの間でタスクBが実行される。ここでは、OS100におけるタスクBの移住処理について説明する。
【0080】
計算機X201の準同期コアイベントT1X170は、計算機X201でタスクBが同期コア処理部101から準同期コア処理部108に移住したタスクBの決定性処理を、準同期コア処理部108が開始したタイミングを示す。
計算機X201の準同期コアイベントT2X171は、計算機X201でタスクBが決定性処理を終了し、準同期コア処理部108から同期コア処理部101へのタスクBの移住要請を実施したタイミングを示す。
計算機X201の準同期コアイベントT3X172は、計算機X201でタスクBが準同期コア処理部108から同期コア処理部101に移住したタスクBの非決定性処理を、同期コア処理部101が開始したタイミングを示す。
【0081】
タイムチャート151に示すように、同期コア処理部101にてタスクAの実行が終了した後、タスクBの実行が開始される。
コア移住要請161は、計算機X201の同期コア処理部101が実行中のタスクBから任意のタイミングで実施されるコア移住要請を示す。このコア移住要請により、タスクBが同期コア処理部101から準同期コア処理部108に移住される。なお、同期コア処理部101で実行されたタスクBの出力結果が、準同期コア処理部108に移住されたタスクBに入力されるのではない。
【0082】
タイムチャート150に示すように、準同期コア処理部108にてタスクFの実行が終了した後、同期コア処理部101から移住されたタスクBの決定性処理が開始される。
コア移住要請160は、計算機X201の準同期コア処理部108が実行中のタスクBから任意のタイミングで実施されるコア移住要請を示す。このコア移住要請により、タスクBが準同期コア処理部108から同期コア処理部101に移住される。
【0083】
そして、タイムチャート151に示すように、同期コア処理部101にてタスクC、Dの実行が終了した後、準同期コア処理部108から移住されたタスクBの非決定性処理が開始される。
【0084】
計算機Y211の計算機X201の同期コア処理部121のタイムチャート152には、タスクA~Eの実行開始及び終了のタイミングの例が示され、準同期コア処理部128のタイムチャート153には、タスクB,H~Kの実行開始及び終了のタイミングの例が示される。さらに、タイムチャート152,153には、コア移住要請162,163の例が示される。
【0085】
計算機Y211のOS120において、準同期コア処理部128では、実行されるタスクI、Jの間でタスクBが実行される。ここでは、OS120におけるタスクBの移住処理について説明する。
【0086】
計算機Y211の準同期コアイベントT1Y173は、計算機Y211のタスクBが同期コア処理部121から準同期コア処理部128に移住したタスクBの決定性処理を、準同期コア処理部128が開始したタイミングを示す。
計算機Y211の準同期コアイベントT2Y174は、計算機Y211でタスクBが決定性処理を終了し、準同期コア処理部128から同期コア処理部121へのタスクBの移住要請を実施したタイミングを示す。
計算機Y211の準同期コアイベントT3Y175は、計算機Y211でタスクBが準同期コア処理部128から同期コア処理部121に移住したタスクBの非決定性処理を、同期コア処理部121が開始したタイミングを示す。
【0087】
計算機Y211のOS120におけるタイムチャート152に示すように、同期コア処理部121にてタスクAの実行が終了した後、タスクBの非決定性処理が開始される。
コア移住要請162は、計算機Y211の同期コア処理部121が実行中のタスクBから任意のタイミングで実施したコア移住要請を示す。このコア移住要請により、同期コア処理部121から準同期コア処理部128にタスクBが移住される。
【0088】
タイムチャート153に示すように、準同期コア処理部128にてタスクIの実行が終了した後、同期コア処理部121から移住されたタスクBの決定性処理が開始される。
コア移住要請163は、計算機Y211の準同期コア処理部128が実行中のタスクBから任意のタイミングで実施したコア移住要請を示す。このコア移住要請により、タスクBが準同期コア処理部128から同期コア処理部121に移住される。
【0089】
そして、タイムチャート152に示すように、同期コア処理部101にてタスクC、Dの実行が終了した後、準同期コア処理部128から移住されたタスクBの非決定性処理が開始される。
【0090】
上記のタスクBの移住処理を踏まえた上で、計算機X201,Y211にて実行される各タスクの処理について説明する。
【0091】
まず、タスク同期180によって開始タイミングが決定されるタスクAは、計算機X201の同期コア処理部101が有するタスク起床処理部105によって実行され、計算機Y211の同期コア処理部121が有するタスク起床処理部125によって実行される。
【0092】
計算機X201の同期コア処理部101と、計算機Y211の同期コア処理部121とでタスクAの実行が終了し、又は中断したとき、タスク同期181によって、タスクBが選択される。そして、計算機X201の同期コア処理部101、計算機Y211の同期コア処理部121にて、それぞれタスクBの処理が実行開始される。
【0093】
計算機X201でタスクBを実行中に、決定性処理の開始ポイントで、タスクBが準同期コア処理部108へのコア移住要請161を実施する。開始ポイントとは、例えば、タスクBとして実行されるプログラム中で処理の種類ごとに規定されるパラメータである。ほぼ時を同じくして、計算機Y211のタスクBが準同期コア処理部128へのコア移住要請162を実施する。
【0094】
計算機X201のタスクBからのコア移住要請161を受けたコア移住要請受付部107は、コア移住要請161の内容に従ってコア移住処理部106の処理を開始する。コア移住処理部106により、準同期コア処理部108の実行タスクキュー109にタスクBが接続される。
【0095】
同様に、計算機Y211のタスクBからのコア移住要請162を受けたコア移住要請受付部127は、コア移住要請162の内容に従ってコア移住処理部126の処理を開始する。コア移住処理部126により、準同期コア処理部128の実行タスクキュー129にタスクBが接続される。
【0096】
タスクBが移住したことにより、計算機X201のコア移住要請161、計算機Y211のコア移住要請162では、それぞれタスクBの実行が中断する。このため、計算機X201,Y211は、次のタスクを選択するためにタスク同期182を実施し、次の実行タスクとしてタスクCを選択する。計算機X201の同期コア処理部101と、計算機Y211の同期コア処理部121は、ほぼ時を同じくしてタスクCの実行を開始する。
【0097】
計算機X201の準同期コア処理部108では、準同期コアイベントT1X170のタイミングで、タスクFの実行が終了すると、次実行タスク選択処理部110が実行タスクキュー109からタスクBを選択し、タスク起床処理部111がタスクBの実行を開始する。
計算機Y211の準同期コア処理部128では、準同期コアイベントT1Y173のタイミングで、タスクIの実行が終了すると、次実行タスク選択処理部130が実行タスクキュー129からタスクBを選択し、タスク起床処理部131がタスクBの実行を開始する。
【0098】
このように、実行タスクキュー109,129にそれぞれタスクBを接続する場合、準同期コアイベントT1X170,T1Y173のタイミングは異なってもよい。このため、準同期コア処理部108,128は、計算機X201と計算機Y211の間でタイミングを合わせる必要が無い。
【0099】
次に、計算機X201の準同期コア処理部108では、準同期コアイベントT2X171のタイミングでタスクBがコア移住要請160を実施する。計算機X201のコア移住要請受付部113がコア移住要請160を受付けると、コア移住処理部112にて、同期コア処理部101の実行タスクキュー102にタスクBを接続する。
【0100】
一方、計算機Y211の準同期コア処理部128では、準同期コアイベントT2Y174のタイミングでタスクBがコア移住要請163を実施する。計算機Y211のコア移住要請受付部133がコア移住要請163を受付けると、コア移住処理部132にて、同期コア処理部121の実行タスクキュー122にタスクBを接続する。
【0101】
このように、実行タスクキュー102,122にそれぞれタスクBを接続する場合も、準同期コアイベントT2X171,T2Y174のタイミングは異なってもよい。このため、準同期コア処理部108,128は、計算機X201と計算機Y211の間でタイミングを合わせる必要が無い。
【0102】
計算機X201のタイムチャート150に示すように、タスク同期183は、タスクBのコア移住要請160の後のタイミングである。このため、タスクBは、準同期コアイベントT2X171より後に、実行タスクキュー102に接続されている。
【0103】
しかし、計算機Y211のタイムチャート152に示すように、タスク同期183の時点で、準同期コア処理部128がタスクBを実行中である。このように、タスクBのコア移住要請163のタイミングは、タスク同期183の後であるため、タスク同期183のタイミングでは、タスクBが未だ実行タスクキュー122に接続されていない。
【0104】
よって、タスク同期183では、計算機X201の次実行タスク選択処理部103と、計算機Y211の次実行タスク選択処理部123とは、それぞれ実行する次タスクをタスクBではなく、タスクBの次に優先度が高いタスクDに決定する。このとき、準同期コアイベントT2X171と、準同期コアイベントT2Y174との時間差の許容範囲は任意のタイムアウト時間として設定可能である。
【0105】
このように、タスクBの決定性処理が、準同期コア処理部108,128で実施されることで、コア移住要請160,163のタイミングが一致しないことがある。そこで、計算機X201の次実行タスク選択処理部103は、実行タスクキュー102に接続される実行待ち状態のタスクを、同期コア処理部101が生成し、又は実行中断した後、実行タスクキュー102に接続されるタスクと、準同期コア処理部108から移住されるタスクとに分類して選択する。そして、次実行タスク次実行タスク待合わせ処理部104は、準同期コア処理部108から移住されるタスクの実行開始を待合わせる時間範囲を、同期コア処理部101が生成し、又は実行中断した後、実行タスクキュー102に接続されるタスクの実行開始を待合わせる時間範囲よりも長くする。
【0106】
同様に、計算機Y211の次実行タスク選択処理部123は、実行タスクキュー122に接続される実行待ち状態のタスクを、同期コア処理部121が生成し、又は実行中断した後、実行タスクキュー122に接続されるタスクと、準同期コア処理部128から移住されるタスクとに分類して選択する。そして、次実行タスク次実行タスク待合わせ処理部124は、準同期コア処理部128から移住されるタスクの実行開始を待合わせる時間範囲を、同期コア処理部121が生成し、又は実行中断した後、実行タスクキュー122に接続されるタスクの実行開始を待合わせる時間範囲よりも長くする。
【0107】
準同期コア処理部108,128から移住されるタスクが同期コア処理部101,121に戻るまでの時間が、設定された時間範囲よりも長ければ、実行タスクキュー102,122に接続された優先度の高い他のタスクが先に実行される。例えば、次実行タスク待合わせ処理部104,124は、準同期コア処理部108からタスクBがコア移住要請160をしたタイミングが時間範囲内であったとしても、準同期コア処理部128からタスクBがコア移住要請163をしたタイミングが時間範囲を超え得ていれば、別のタスクが先に実行される。
【0108】
そして、実行された別のタスクが終了した後、コア移住要請160,163をした各タスクBが実行可能であれば、タスクBの実行が開始される。例えば、計算機X201の同期コア処理部101と、計算機Y211の同期コア処理部121において、タスクDの実行が終了し、又は中断したタスク同期184のタイミングで、計算機X201,Y211の同期コアの次実行タスクとしてタスクBが起床され、実行される。つまり、準同期コアイベントT3X172,T3Y175は、ほぼ同時刻に実行される。
【0109】
計算機X201の同期コア処理部101と、計算機Y211の同期コア処理部121において、タスクBの実行が終了し、タスク同期165のタイミングで次タスクをタスクEに決定し、タスクEを起床させる。
【0110】
以上の流れから、タスクBの非決定性処理は同期コア処理部101,121が実行し、決定性処理のみを準同期コア処理部108,128で処理した後、再度、同期コア処理部101,121がタスクを処理することで、実行結果の出力タイミングを合わせることが可能となる。
【0111】
以上説明した一実施の形態に係る計算機システム10は、複数の計算機X201,Y211の間で、同期コア処理部101,121が同一のタスクを同一の順序で実行することが可能となる。また、同期コア処理部101,121が実行中のタスクが任意のタイミングで準同期コア処理部108,128に移動して処理が継続され、再度、同期コア処理部101,121に移動することで処理を完了することが可能となる。
【0112】
各計算機のOSは、タスクの処理を決定性処理と非決定性処理とに分類する。そして、非決定性処理のタスクは常に同期コア処理部101,121上で同期実行され、決定性処理のみが準同期コア処理部108,128で準同期実行される。このように同期コア処理部101,121に加えて、準同期コア処理部108,128でもタスクを実行することが可能となる。このため、各計算機が備える複数のコアの全体で実行可能なタスクの単位時間当たりの処理効率が上がる。このため、計算機システム10では、各計算機のハードウェア構成を変更することなく、各計算機の処理性能を向上させることができる。
【0113】
また、準同期コア処理部108,128は、決定性処理を一括して実行する。このために、非決定性処理が同期実行中であるタスクが自ら別なコアに移住要請する。この移住要請により、同期コア処理部101,121にて同期実行中のタスクが、決定性処理の開始ポイントで準同期コア処理部108,128に移住することが可能となる。また、準同期コア処理部108,128が決定性処理を終了する終了ポイントで、タスクが同期コア処理部101,121に戻って、処理を継続することが可能となる。
【0114】
また、
図2に示したような、決定性処理と非決定性処理を含むタスクBの実行を同期コア処理部が同期実行し、準同期コア処理部が準同期実行することで、タスクBの実行結果を一致させて出力することが可能となる。
【0115】
また、準同期コア処理部108,128は、決定性処理を実行する際に、他の計算機と同期タイミングを合わせる必要がなく、同期用データ等の情報を共有する必要もない。このため、準同期コア処理部108,128を同期するための新たなネットワークを構築しなくてよい。そして、同期用データ通信路140が設けられるネットワーク240の通信帯域と、照合処理を行う出力比較機251の演算資源を変えずに、計算機システム10を疎結合なフォールト・トレラント・コンピュータとして処理性能を向上させるタスク実行方式を実現することができる。
【0116】
なお、本発明は上述した実施の形態に限られるものではなく、特許請求の範囲に記載した本発明の要旨を逸脱しない限りその他種々の応用例、変形例を取り得ることは勿論である。
例えば、上述した実施の形態は本発明を分かりやすく説明するためにシステムの構成を詳細かつ具体的に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されない。また、本実施の形態の構成の一部について、他の構成の追加、削除、置換をすることも可能である。
また、制御線や情報線は説明上必要と考えられるものを示しており、製品上必ずしも全ての制御線や情報線を示しているとは限らない。実際には殆ど全ての構成が相互に接続されていると考えてもよい。
【符号の説明】
【0117】
10…計算機システム、100,120…OS、101,121…同期コア処理部、102,109,122,129…実行タスクキュー、103,110,123,130…次実行タスク選択処理部、104,124…次実行タスク待合わせ処理部、105,111,125,131…タスク起床処理部、106,112,126,132…コア移住処理部、107,113,127,133…コア移住要請受付部、108,128…準同期コア処理部、201…計算機X、211…計算機Y、251…出力比較機