特許第6247314号(P6247314)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 株式会社日立製作所の特許一覧

特許6247314計算機システム及び計算機システムの制御方法
<>
  • 特許6247314-計算機システム及び計算機システムの制御方法 図000002
  • 特許6247314-計算機システム及び計算機システムの制御方法 図000003
  • 特許6247314-計算機システム及び計算機システムの制御方法 図000004
  • 特許6247314-計算機システム及び計算機システムの制御方法 図000005
  • 特許6247314-計算機システム及び計算機システムの制御方法 図000006
  • 特許6247314-計算機システム及び計算機システムの制御方法 図000007
  • 特許6247314-計算機システム及び計算機システムの制御方法 図000008
  • 特許6247314-計算機システム及び計算機システムの制御方法 図000009
  • 特許6247314-計算機システム及び計算機システムの制御方法 図000010
  • 特許6247314-計算機システム及び計算機システムの制御方法 図000011
  • 特許6247314-計算機システム及び計算機システムの制御方法 図000012
  • 特許6247314-計算機システム及び計算機システムの制御方法 図000013
  • 特許6247314-計算機システム及び計算機システムの制御方法 図000014
  • 特許6247314-計算機システム及び計算機システムの制御方法 図000015
  • 特許6247314-計算機システム及び計算機システムの制御方法 図000016
  • 特許6247314-計算機システム及び計算機システムの制御方法 図000017
  • 特許6247314-計算機システム及び計算機システムの制御方法 図000018
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6247314
(24)【登録日】2017年11月24日
(45)【発行日】2017年12月13日
(54)【発明の名称】計算機システム及び計算機システムの制御方法
(51)【国際特許分類】
   G06F 11/10 20060101AFI20171204BHJP
【FI】
   G06F11/10 662
【請求項の数】10
【全頁数】16
(21)【出願番号】特願2015-551349(P2015-551349)
(86)(22)【出願日】2013年12月6日
(86)【国際出願番号】JP2013082759
(87)【国際公開番号】WO2015083276
(87)【国際公開日】20150611
【審査請求日】2016年4月19日
(73)【特許権者】
【識別番号】000005108
【氏名又は名称】株式会社日立製作所
(74)【代理人】
【識別番号】110001689
【氏名又は名称】青稜特許業務法人
(72)【発明者】
【氏名】濱本 真生
(72)【発明者】
【氏名】山岡 雅直
【審査官】 漆原 孝治
(56)【参考文献】
【文献】 特開2012−174317(JP,A)
【文献】 国際公開第2009/088020(WO,A1)
【文献】 特開平06−332931(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 11/10
(57)【特許請求の範囲】
【請求項1】
第1の動作状態と第2の動作状態との間で遷移するメモリと、
前記第1の動作状態前記メモリへアクセスし、前記メモリにおけるデータエラー発生率が前記第1の動作状態よりも高い前記第2の動作状態へ遷移するように設定し、前記メモリへのアクセスを停止する第1のプロセッサと、
前記第2の動作状態前記メモリへアクセスする第2のプロセッサとを有する計算機システム。
【請求項2】
請求項1の計算機システムであって、
前記第1のプロセッサは、前記第1の動作状態において、前記第2のプロセッサへの作業指示内容を前記メモリに格納し、
前記第2のプロセッサは、前記第2の動作状態において、前記メモリから作業指示内容を読み出して処理を実行することを特徴とする計算機システム。
【請求項3】
請求項2の計算機システムであって、
前記第2の動作状態は、前記メモリにおいて1ビット以上の訂正不可能なデータエラーが発生する状態であることを特徴とする計算機システム。
【請求項4】
請求項2の計算機システムであって、
テストパターンを入力データとした処理を実行した結果に基づき、前記第2の動作状態を決定することを特徴とする計算機システム。
【請求項5】
請求項2の計算機システムであって、
前記第2のプロセッサには、前記メモリの第1の記憶領域が使用可能な記憶領域として割り当てられており、
前記第1のプロセッサは、前記第2のプロセッサが動作しているかを確認し、動作していない場合は、前記第1の記憶領域に換えて第2の記憶領域を前記第2のプロセッサに割り当て、前記第2のプロセッサを再起動させることを特徴とする計算機システム。
【請求項6】
請求項2の計算機システムであって、
前記第1のプロセッサは、前記第2のプロセッサの処理結果が所定の条件を満たすかを確認し、満たしていない場合は、前記第2のプロセッサに指示した作業を再実行させることを特徴とする計算機システム。
【請求項7】
請求項2の計算機システムであって、
前記メモリはSRAM(Static Random Access Memory)であり、
前記第1及び前記第2の動作状態は前記メモリの動作電圧により決定され、前記第2の動作状態における動作電圧は前記第1の動作状態における動作電圧よりも低いことを特徴とする計算機システム。
【請求項8】
第1及び第2のプロセッサと、第1の動作状態と第2の動作状態との間で遷移するメモリを備えた計算機システムの制御方法であって、
前記第1のプロセッサは、前記第1の動作状態前記メモリへアクセスし、前記メモリにおけるデータエラー発生率が前記第1の動作状態よりも高い前記第2の動作状態へ遷移するように設定し、前記メモリへのアクセスを停止し、
前記第2のプロセッサは、前記第2の動作状態前記メモリへアクセスする、計算機システムの制御方法。
【請求項9】
請求項の計算機システムの制御方法であって、
前記第1のプロセッサは、前記第1の動作状態において、前記第2のプロセッサへの作業指示内容を前記メモリに格納し、
前記第2のプロセッサは、前記第2の動作状態において、前記メモリから作業指示内容を読み出して処理を実行する、計算機システムの制御方法。
【請求項10】
請求項の計算機システムの制御方法であって、
前記メモリはSRAM(Static Random Access Memory)であり、
前記第1及び前記第2の動作状態は前記メモリの動作電圧により決定され、前記第2の動作状態における動作電圧は前記第1の動作状態における動作電圧よりも低いことを特徴とする計算機システムの制御方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、半導体メモリを備えた情報処理システム及びその制御方法に関する。特に、低消費電力かつ所定の信頼性を満たす情報処理システムを実現する技術に関する。
【背景技術】
【0002】
半導体微細化に伴い、計算機システムの性能が向上する一方で、トランジスタの特性ばらつきが増大している。この特性ばらつきは特に、SRAM(Static Random Access Memory)など記憶デバイスの信頼性を低下させ、保持データの破損などを招く原因となる。データ破損はシステムダウンなどを引き起こす可能性があるため、その補償技術が近年大きな課題となっている。SRAMのみならず、DRAM(Dynamic Random Access Memory)などの記憶デバイスにおいても同様である。例えば、DRAMにおいては記憶保持時間が小さくなる。
【0003】
このため、記憶デバイスの信頼性を維持する技術として、特許文献1では、エラー訂正符号化(ECC)やデータの多重化により記憶したデータの誤りを訂正する技術が開示されている。また、特許文献2では、メモリチップの劣化による必要閾値電圧の違いに対応するために、メモリチップに対するデータの書き込みまたは読み込みに用いる信号の電気的特性を定めるパラメータを変更して適正値に設定する技術が開示されている。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特表2008−521160
【特許文献2】特開2012−68825
【発明の概要】
【発明が解決しようとする課題】
【0005】
特許文献1および特許文献2のように、全てのデータに対し、誤りを完全に訂正する場合、信頼性維持コストが増大する。例えば、ECCを適用する場合、符号化および訂正処理のために電力を消費する。また、SRAMにおいては電圧を高める、DRAMにおいてはリフレッシュレートの頻度を上げることで、動作マージンを拡大することが可能だが、消費電力も増加する。このように、記憶デバイスの信頼性維持には多大な電力コストが必要であり、半導体微細化が進むほどその信頼性維持コストは増大する。
【0006】
また、今後、大規模データを用いた学習・認識処理などのアプリケーションの台頭が予想されている。このようなアプリケーションでは多量の計算を行うため、大容量の記憶デバイスを必要とする。このため、記憶デバイスの大容量化に伴う信頼性維持コストの増加が、特に問題となってくる。
【0007】
但し、学習・認識処理を応用したアプリケーションなど、一部のアプリケーションにおいては計算結果の誤差に対して強い耐性がある。例えば、人物の認識において正しい計算結果は確信度90%であるに対し、データのエラーによって確信度88%となっても、結論としてこれがAさんであるという結論に変わりが無ければ問題ない。しかしながら、記憶デバイスが高信頼であることを前提としている現在の計算機システムにおいては、プロセッサへの命令もデータも全て同様に扱うために、記憶デバイスのデータのエラーが計算機システム全体のダウンにつながる恐れがある。
【課題を解決するための手段】
【0008】
そこで、本発明の実施例における計算機システムでは、命令データ、ポインタなど、システム全体の制御に関わるデータであり、誤りが発生するとシステムダウンに繋がる重要度の高いデータについては、記憶デバイス内で高信頼(エラー訂正可能となるレベル)に保持する。一方、画像やテキストなどの入力データや計算の中間データなど、データに誤りが発生してもシステム全体を停止させない重要度が低いデータについては低信頼(1ビット以上のデータがECCを用いてもエラー訂正不可能となるレベル)に保持する。これにより、記憶デバイスの大部分を低信頼(言い換えれば低電力)の状態で使用しつつ、システム全体の停止など計算機システムの致命的なエラーを回避する。
【0009】
具体的には、実施例の一例における計算機システムは、メモリと、メモリに接続された第1及び第2のプロセッサを備える。第1のプロセッサは、第1の動作状態でメモリへアクセスし、メモリにおけるデータエラー発生率が前記第1の動作状態よりも高い第2の動作状態ではメモリへのアクセスを停止する。一方、第2のプロセッサは、第2の動作状態で前記メモリへアクセスする。
【0010】
そして、第1のプロセッサは、第1の動作状態で第2のプロセッサへの作業指示内容をメモリに格納し、第2のプロセッサは、第2の動作状態でメモリに格納された作業指示内容を読み出して処理を実行する。また、第1のプロセッサは、第1の動作状態で第2のプロセッサが動作しているかを確認し、動作していない場合は、第2のプロセッサを再起動させる。
【0011】
メモリがSRAMの場合は、前述の第1及び第2の動作状態はSRAMの動作電圧により決定される。この場合、第2の動作状態における動作電圧は第1の動作状態における動作電圧よりも低い。
【0012】
メモリがDRAMの場合は、前述の第1及び第2の動作状態はDRAMのリフレッシュレートにより決定される。この場合、第2の動作状態におけるリフレッシュレートは第1の動作状態におけるリフレッシュレートよりも低い。
【発明の効果】
【0013】
本発明により、所定の信頼性を維持しつつ記憶デバイスの消費電力を削減した計算機システムの提供が可能になる。
【図面の簡単な説明】
【0014】
図1】SRAMを備えたプロセッサの構成例を示す図である。
図2】SRAMが保有するデータを示す図である。
図3】プロセッサの並列計算処理を説明する図である。
図4】ワーカが使用するSRAM上のアドレス領域のデータ配置を示す図である。
図5】ワーカが使用するSRAM上のアドレス領域のデータ配置を示す図である。
図6】ワーカが使用するSRAM上のアドレス領域のデータ配置を示す図である。
図7】並列計算処理におけるマスタの動作フローチャートを示す図である。
図8】並列計算処理におけるワーカの動作フローチャートを示す図である。
図9】計算機システムの構成例を示す図である。
図10】メモリが保有するデータを示す図である。
図11】計算機システムのパラメータ調整用プログラムの処理フローチャートである。
図12】計算機システムの構成例を示す図である。
図13】メモリの構成例を示す図である。
図14】メモリの制御ユニットが保有するデータを示す図である。
図15】メモリの記憶ユニットの高信頼領域が保有するデータを示す図である。
図16】メモリの記憶ユニットの低電力領域が保有するデータを示す図である。
図17】計算機システムの動作フローチャートを示す図である。
【発明を実施するための形態】
【実施例1】
【0015】
実施例1では、SRAMの消費電力を削減したプロセッサの例を説明する。
【0016】
図1は、SRAMを備えたプロセッサ10の構成を示すブロック図である。プロセッサ10は、複数のプロセッサコアを備えたマルチコアプロセッサであり、CPU110、CPU120、バス130、入出力ユニット140、SRAM150、タイマ160、電圧/周波数制御ユニット170を有している。
【0017】
CPU110は、マスタ・ワーカ方式の並列処理において、マスタの役割をする演算コアであり、CPU120は、ワーカの役割をする演算コアである。CPU120は、命令キャッシュ121とロード/ストアユニット122を有する。
【0018】
命令キャッシュ121は、命令データを格納するキャッシュメモリであり、メモリセルのトランジスタサイズが大きい、又はトランジスタ数が多いなど、低電圧動作においても高信頼に動作できるように作られている。ロード/ストアユニット122は、CPU120のデータをSRAM150へ書込む処理と、SRAM150のデータをCPU120から読出す処理を行うユニットである。
【0019】
バス130は、プロセッサ10に存在する各モジュールを繋ぐユニットである。入出力ユニット140は、プロセッサ10と外部システムを繋ぐユニットである。SRAM150は、CPU110(マスタ)とCPU120(ワーカ)が計算に使用するデータが格納される共有メモリであり、例えば図2に示すデータを格納する。
【0020】
タイマ160は、時間をカウントするタイマであり、CPU110から受信した低電圧設定値情報201と電圧変更間隔情報202を含む制御情報111に基づいて、電圧/周波数制御ユニット170へ電圧変更指示を含む制御情報161を出力し、CPU110へ電圧変更完了を示す情報を含む割込み情報162を出力する。
【0021】
電圧/周波数制御ユニット170は、プロセッサ10の動作電圧および動作周波数を変更するユニットである。本実施形態では、電圧/周波数制御ユニット170により、CPU110とCPU120の電圧の制御を共通して行うが、異なる電圧/周波数制御ユニットにより独立した制御を行ってもよい。
【0022】
図2は、SRAM150に格納されるデータの一例である。低電圧設定値情報201は、低電圧状態の動作電圧と、該動作電圧でCPU110およびCPU120が動作可能な動作周波数の情報である。電圧変更間隔情報202は、プロセッサ10の動作電圧を変更する時間間隔の情報である。アドレスオフセット情報203は、CPU110がCPU120へ割り当てるSRAM150上の記憶領域のアドレスオフセット情報である。
【0023】
タスク管理情報204は、CPU110がCPU120へ与えるタスクの管理情報であり、どのワーカ(CPU120)がどのタスクを処理していて、全体としてどれだけのタスクが完了しているかなどを示す情報である。タスクキュー205はCPU110がCPU120へ与えるタスクのキューであり、ワーカ(CPU120)はタスクキュー205のタスクが無くなるまで、タスクキュー205からタスクを受け取って処理する。
【0024】
タスク計算結果情報206は、CPU120(ワーカ)が処理したタスクの計算結果の情報であり、計算結果の配置アドレス情報などCPU110(マスタ)が計算結果を取得するための情報である。マスタ作業データ207は、CPU110(マスタ)が処理の途中に生成するデータである。ワーカ作業データ208は、CPU120(ワーカ)が処理の途中に生成するデータである。
【0025】
入力データ209は、計算の対象となる入力データであり、例えば機械学習の教師データとなる画像データである。生存確認情報210は、ワーカの生存状況を確認するための情報である。目標エラー数211は、プロセッサ10がプログラム実行中の所定処理でカウントするエラーデータ数の目標値である。許容エラー数212は、プロセッサ10がプログラム実行中の所定部分の処理でカウントするエラーデータ数において、アプリケーションが許容可能な閾値である。
【0026】
図3は、プロセッサ10において、CPU110(マスタ)とCPU120(ワーカ)により実行される並列処理の例を示すタイムチャートである。まず、CPU110(マスタ)は、標準電圧の状態で、並列処理を行う前までの処理301を行う。その後、処理302においてタスクキュー作成処理とワーカ起動処理321を行う。CPU120(ワーカ)は、ワーカ起動処理311を行い、完了したことをマスタに通知する。全てのワーカ起動完了を確認したマスタは、タイマ160に低電圧設定値情報201と電圧変更間隔情報202を設定し、スリープ処理303を行う。
【0027】
タイマ160は、低電圧設定値情報201に基づいて電圧/周波数制御ユニット170へ動作電圧および動作周波数の設定値変更指示(制御情報161)を出力する。電圧/周波数制御ユニット170は、タイマ160からの設定値変更指示に基づいて動作電圧および動作周波数を変更し、プロセッサ10を低電圧の状態にする。ワーカは、タスクキュー205よりタスクを取得し、入力データ209を用いてタスク処理312を行う。ワーカは、取得したタスクの処理が完了すると、タスク計算結果の格納アドレスをタスク計算結果情報206としてSRAM150に書込み、タスクキュー205から新たなタスクを取得して処理する。ワーカは、タスクキュー205のタスクがなくなるまでこれを繰り返す。
【0028】
タイマ160は、電圧変更間隔情報202に基づいた所定時間経過後に、電圧/周波数制御ユニット170へ標準電圧への設定値変更指示(制御情報161)を出力し、電圧変更後にマスタに割込み情報162を出力する。割込み情報162を受信したマスタは、タスクの進捗状況確認とワーカの生存状況の確認などを行う管理処理304を行う。ここで、あるワーカ(ワーカ2)が低電圧状態でのSRAM150にアクセスし、ポインタのデータが破損するなどによって停止するアクシデント313が発生していた場合、マスタはワーカ2の再起動処理322を実行する。再起動処理322においては、マスタは再起動するワーカが使用するSRAM150上のアドレス領域のオフセット値を変更する。これにより、再起動したワーカ(ワーカ2)は前回とは異なるアドレス領域にアクセスすることになるため、アクシデント313と同一の原因で停止することを回避することができる。
【0029】
生存状況の確認は、SRAM150上の生存確認情報210のデータをワーカが定期的にカウントアップし、マスタがこれを観測するなどによって行うことができる。管理処理304において全てのタスクが完了していなければ、マスタは処理302と同様にタイマ160へ制御情報111を出力し、スリープ処理303を行う。管理処理304において全てのタスクが完了している場合は、ワーカにタスク終了通知323を通知し、後処理305を行う。
【0030】
このようにマスタがSRAM150へアクセスする際には、常にSRAM150の電圧が標準電圧の状態であるようにすることによって、マスタが保有するデータを正しく保持することができる。また、タスクキュー205、タスク計算結果情報206と生存確認情報210はSRAM150上で三重化して保持されており、低電圧状態でも高信頼(訂正処理によって完全にデータ復元が可能である状態)にデータアクセスができる。一方、ワーカがSRAM150にアクセスする際は、SRAM150の電圧を低電圧の状態にすることにより、SRAM150の消費電力を削減することができる。
【0031】
次に、CPU110(マスタ)が再起動するCPU120(ワーカ)が使用するSRAM150上のアドレス領域のデータ配置を変更する手段を、図4図5図6を用いて説明する。図4図5図6はワーカが使用するアドレス領域のデータ配置を示す図である。マスタは、ワーカ起動時にワーカが作業に使うアドレス領域を実際に割当てるサイズよりも大きく確保し、ワーカへSRAM150上のアドレス領域のオフセット値とインデックス値を設定し、ワーカが使用可能なアドレス領域を割当てる。オフセット値はワーカへ割当てるアドレス領域の物理的な先頭アドレスであり、インデックス値はワーカへ割当てたアドレス領域内の論理的な先頭アドレスである。
【0032】
図4に示すように、マスタは、例えばワーカ1へはアドレス領域401を確保し、アドレス411をオフセット値(先頭アドレス)として設定することでワーカ1へアドレス領域410を割当て、残りのアドレス領域451をマージン領域とする。同様にワーカ2へはアドレス領域402を確保し、アドレス421をオフセット値として設定することでアドレス領域420を割当てる。なお、インデックス値の初期値はゼロとして設定される。マスタが有するワーカのアドレスオフセットに関する情報はアドレスオフセット情報203としてSRAM150に格納され、ワーカが有するオフセット値とインデックス値は該ワーカのロード/ストアユニット122に格納される。
【0033】
ここで、ワーカ2を再起動させる場合、図5に示すように、マスタはワーカ2のオフセット値をアドレス422に変更して再起動する。これにより、ワーカ2のデータ配置が変更されるため、同一の原因でワーカ2が何度も停止する事象を回避できる。
【0034】
オフセット値変更を行ってもワーカ2が繰り返し停止する場合、マスタは図6に示すように、ワーカ2のインデックス値を変更する。ワーカ2のロード/ストアユニット122は変更されたインデックス値に従って、アドレス領域420内でデータを配置するアドレスをリングシフトすることによってデータ配置の変更を行う。図4ではワーカ2のオフセット値がアドレス422と設定されており、インデックス値の変更に従ってアドレス422がワーカ2の論理的な先頭アドレスとなるようにアドレス変換を行った例を示している。
【0035】
このようにデータ配置の変更を行うことによって、再起動したワーカが過去に停止した原因と同一の原因で何度も停止を繰り返すことを回避することができる。
【0036】
次に、図7図8を用いて、プロセッサ10で実行される並列処理を説明する。図7はプロセッサ10のCPU110(マスタ)が行う処理のフローチャートである。まず、マスタはタスクキュー205作成処理(ステップS701)を実行する。ここで、タスクキュー205内の情報は3重化などによって高信頼化されて書込まれる。これにより、ワーカはSRAM150が低電圧状態でもタスクキュー205から正確な情報を取得できる。タスクキュー205の情報は全体に比べて非常に小さいため、3重化に伴う電力損失は非常に小さい。その後、ワーカ起動処理(ステップS702)を行い、電圧変更処理(ステップS703)としてタイマ160へ低電圧設定値情報201と電圧変更間隔情報202を設定し、スリープ処理(ステップS704)へ移行する。マスタはタイマ160から割込み情報162を受信(ステップS705)すると、スリープ処理を解除し、ステップS706へ移行してワーカ生存確認とワーカ再起動処理を行う。その後、ステップS707としてタスク管理情報204を参照し、タスク処理状況の進捗確認を行い、タスクキュー205の全てのタスクが処理されていたならば、全てのCPU120(ワーカ)に対してタスク終了通知323を出力し、ステップS710へ移行し、タスクキュー205の全てのタスクが処理されていなければ、S703へ移行するという分岐処理(ステップS708)を行う。
【0037】
ステップS710ではワーカが処理したタスクの計算結果が所定のフォーマットを満たしているかのチェックを行う。例えば、教師なし学習の一種であるK−meansクラスタリングのアルゴリズムにおいては、入力データの各要素が所属するクラスタの番号は必ずクラスタ数Kよりも小さくなる。このように、ワーカの計算結果が、計算結果として取りえる値域を満たしているかをチェックする。これにより、マスタがワーカの計算結果を配列の要素番号として使用する際などに、配列オーバフローなどシステムが停止してしまう致命的なエラーを回避することができる。なお、前記所定のフォーマットを満たしていない計算結果は破棄される。
【0038】
ステップS711では、前記所定のフォーマットを満たしていない計算結果の数が目標エラー数211に近づくように、マスタは信頼性を調整する処理を行う。信頼性の調整は低電圧設定値情報201の電圧値を変更することによって行う。破棄されたデータ数が目標エラー数211よりも大きい場合はSRAM150の信頼性を向上させるために、電圧値をより高い値へ設定する。破棄されたデータ数が目標エラー数211よりも小さい場合はSRAM150の電力効率を向上させるために、電圧値をより低い値へ設定する。また、ステップS711として、前記所定のフォーマットを満たしていない計算結果の数が許容エラー数212以上であるとき、ワーカの計算結果を全て破棄し、計算のリトライを行うためにステップS703へ移行する分岐処理を行う。プロセッサ10を備える計算機システムは、低電圧設定値情報201、目標エラー数211、および許容エラー数212をユーザが容易に設定することが可能なAPI(Application Programming Interface)を有している。なお、精度維持のために特に細やかなエラー数調整が必要ない場合、プロセッサ10を備える計算機システムはステップS711を省略することもできる。
【0039】
図8は、図7のS702でCPU110(マスタ)により起動されたCPU120(ワーカ)が行う処理のフローチャートである。起動したワーカは、ステップS801にてタスクキュー205のタスク進捗状況を確認し、ステップS802として全タスクが完了しているならばステップS820へ移行し、未処理のタスクが残っているならばS810へ移行する。S820ではタスク終了通知323をマスタから受信するまで待機し、ワーカは処理を終了する。S810ではタスクキュー205からタスクを取得し、どのワーカがどのタスクを取得したかが分かるように、取得したタスク識別番号と自身のワーカ識別番号をタスク管理情報204へ書込む。ステップS811として取得したタスクを処理する。ステップS812として処理したタスクの計算結果をSRAM150へ出力すると共に、取得したタスクの処理が完了したことが分かるように、処理を完了したタスク識別番号と自身のワーカ識別番号をタスク管理情報204へ書込む。ここで、タスク管理情報204のデータは3重化などによって高信頼化されて書込まれる。なお、S801からS820までのフローにおいて、ワーカは所定の間隔で生存確認情報210を更新する。
【0040】
以上の構成及び処理により、SRAM内の故障ビットを完全に訂正することなく、システム全体が停止することを回避した低電力なプロセッサ10を実現できる。
【0041】
次に、図9図10図11を用いて、プロセッサ10の低電圧設定値情報201と目標エラー数211を設定する手段を説明する。図7に示したステップS711の信頼性調整処理では、プログラム中にその目標エラー数211を設定する必要がある。プロセッサ10を含む計算機システムをユーザに提供する場合、ユーザがアプリケーションプログラムを意識して目標エラー数211などのパラメータを設定することが困難な場合がある。そのような場合、ユーザはパラメータ調整用プログラム1003を実行することにより、アプリケーションプログラムを意識することなく最適なパラメータを設定できる。パラメータ調整用プログラム1003は、ユーザが準備したパラメータ調整用のテストデータと予め設定された計算結果の精度目標値情報を用いてアプリケーションプログラムをプロセッサ10の上で実行することによって、計算結果の精度が目標値を満たす範囲で電力が最も下がる低電圧設定値情報201を取得し、さらに目標エラー数211を取得する。
【0042】
図9は、プロセッサ10を含む計算機システム1の構成例を示す図である。メモリ20は、DRAMなどで構成されるメモリである。メモリ20には図10に示す情報が格納される。入出力ユニット30は外部システムと計算機システム1を繋ぐユニットである。バス40は計算機システム1の各コンポーネントを繋ぐバスである。
【0043】
図10は、メモリ20に格納されたデータの一例である。アプリケーションプログラム1001は、パラメータ調整対象となるアプリケーションプログラムである。テストデータ1002は、低電圧設定値情報201と目標エラー数211のパラメータを調整するための入力テストデータである。パラメータ調整用プログラム1003は、アプリケーションプログラム1001の最適パラメータを探索するためのプログラムである。精度目標値情報1004は、許容可能な精度劣化を規定する基準情報である。
【0044】
図11のパラメータ調整用プログラム1003のフローチャートを用いて、ユーザがアプリケーションプログラムを意識することなく、低電圧設定値情報201と目標エラー数211の設定値を取得する方法を説明する。まず、計算機システム1は正解基準データ生成(ステップS1101)を行う。正解基準データは、プロセッサ10の低電圧設定値情報201を標準電圧値として実行する(すなわち、全ての処理を標準電圧で実行する)ことによって得られる高信頼計算時における計算結果であり、低電圧動作を含む高効率計算時の計算結果と比較するために使用されるデータである。
【0045】
ステップS1102で、低電圧設定値情報201のパラメータを電圧値更新幅情報1005だけ小さい値に設定する。すなわち、ここでは標準電圧よりも電圧値更新幅情報1005だけ小さい値に設定される。次にステップS1103でアプリケーションプログラム1001を実行し、低電圧動作を含む高効率計算時の計算結果を得て、ステップS1104で正解基準データとの比較を行い、高効率計算時における計算精度の劣化の度合いを示す計算精度劣化値を取得する。
【0046】
そして、ステップS1105で、前記計算精度劣化値と精度目標値情報1004を比較し、目標とする計算精度を満たしているならばステップS1102へ移行し、低電圧設定値情報201の値をさらに電圧値更新幅情報1005だけ小さい値に設定する。N回目の試行におけるステップS1105の処理において目標とする計算精度を満たしていなければ、N−1回目の試行における低電圧設定値情報201を、アプリケーションプログラム1001における低電圧設定値情報201として得る。さらに、ステップS1110にてN−1回目の試行におけるステップS710(データ健全性チェック)でカウントした破棄データ数の平均値を目標エラー数211として得る。
【0047】
以上の構成及び処理により、ユーザがアプリケーションプログラムを意識することなく、低電圧設定値情報201と目標エラー数211の設定値を取得することができ、要求された計算精度を満たしつつ消費電力を削減した計算機システム1を実現できる。なお、ここでは低電圧設定値情報201を標準電圧から徐々に低下させる例、即ち高い電圧値から徐々に低い電圧値へ変更することによって最適パラメータを得る例を示したが、低い電圧値から徐々に高い電圧値へ変更することによって最適パラメータを得ることも可能である。
【実施例2】
【0048】
実施例2では、DRAMの消費電力を削減した計算機システム3の例を説明する。
【0049】
図12は、本実施例における計算機システム3の構成例である。計算機システム3はプロセッサ1810、プロセッサ1820、バス40、入出力ユニット30、DRAM1830を有している。図9と同一のコンポーネントには同一の符号を付し、説明は省略する。
【0050】
プロセッサ1810、プロセッサ1820はCPUなどで構成されるプロセッサである。計算機システム3は実施例1と同じくマスタ・ワーカ構成の計算を行う計算機システムであり、プロセッサ1810はマスタ、プロセッサ1820はワーカの役割を担う。メモリ1830は本発明に係るメモリであり、DRAMなど、データの揮発を防ぐためのリフレッシュを必要とする記憶デバイスで構成される。
【0051】
メモリ1830は、図13に示すように入出力ユニット1910、制御ユニット1920、バス1940、記憶ユニット1930で構成される。 バス1940はメモリ1830内の各コンポーネントを繋ぐためのバスである。入出力ユニット1910はバス40とメモリ1830の内部とつなぐユニットであり通信プロトコルに関する処理を行う。
【0052】
制御ユニット1920はメモリ1830の制御部であり、記憶ユニット1930へのデータ書込み及び読出し処理や、これに伴うECC処理、さらにリフレッシュ処理などを行う。制御ユニット1920は記憶ユニット1921を有する。
【0053】
記憶ユニット1921は、図14に示すように、第1のリフレッシュレート情報2001と第2のリフレッシュレート情報2002を有する。第1のリフレッシュレート情報2001は記憶ユニット1930の高信頼領域1931のリフレッシュレートであり、第2のリフレッシュレート情報2002は低電力領域1932のリフレッシュレートである。第1のリフレッシュレート情報2001と第2のリフレッシュレート情報2002はプロセッサ1810(マスタ)から設定される。リフレッシュレートが高いほど頻繁にリフレッシュを行うので記憶ユニットの信頼性は向上するが消費電力も増加する。このため、低電力領域1932のリフレッシュレート(第1のリフレッシュレート情報2001)は高信頼領域1931のリフレッシュレート(第2のリフレッシュレート情報2002)よりも低く設定されている。
【0054】
記憶ユニット1930は、DRAMのアレイで構成される記憶デバイスであり、高信頼領域1931と低電力領域1932を有する。高信頼領域1931は保持されるデータの故障ビット数が、制御ユニット1920が実施するECCで正しく訂正可能な範囲内になるように動作を行うアドレス領域である。低電力領域1932は、保持されるデータの故障ビット数が、制御ユニット1920が実施するECCで正しく訂正可能な範囲外になるように動作を行うアドレス領域である。即ち、低電力領域1932に書込まれたデータは、読出し時に誤りを有しながらバス40に出力される。
【0055】
高信頼領域1931が有するデータを図15に示す。図15において、図2と同一のデータには同一の符号を付し、説明を省略する。レート変更間隔情報2102はリフレッシュレートを変更する間隔の情報である。低電力領域1932が有するデータを図16に示す。図16において、図2と同一のデータには同一の符号を付し、説明を省略する。高信頼領域1931はマスタ及びワーカの双方がアクセスする領域であり、計算機システムを制御するためのデータが格納されている。一方、低信頼領域1932はワーカがアクセスする領域であり、画像やテキストなどの入力データや計算の中間データなどが格納されている。
【0056】
次に計算機システム3の処理フローを、図17に示す計算機システム3の動作フローチャートを用いて説明する。図17において、図7と同一の要素については同一の符号を付し、詳しい説明を省略する。
【0057】
並列処理において、マスタはタスクキュー作成処理(ステップS701)を行い、ワーカ起動処理(ステップS702)を行って、所定時間スリープする(ステップS704)。本実施例におけるタスクキュー作成処理では、マスタは高信頼領域1931に作成したタスクキューを格納する。その後、ステップS705では、割込み情報受信や内部タイマに基づいてアクティブ状態に遷移し、ワーカ生存確認と再起動処理(ステップS706)を行い、タスク進捗確認(ステップS707)を行う。そして、全てのタスクが完了していなければステップS704へ移行し、全てのタスクが完了していたならば得られた結果に対してデータ健全性チェック(ステップS710)を行う。ステップS2311では、実施例1におけるステップS711と同様の手段で信頼性調整処理を行う。但し、実施例1における計算機システム1ではデータ信頼性(即ち、データ中の故障ビット数又は故障ビット割合)の調整を電圧変更によって行っていたが、本実施例における計算機システム3ではデータ信頼性の調整を、DRAMのリフレッシュレートの変更によって行う点が異なる(ステップS2311)。即ち、計算機システム3では低電力領域1932のリフレッシュレートを定める第2のリフレッシュレート情報2002を変更することによって信頼性調整を行う。破棄されたデータ数が目標エラー数211よりも大きい場合はDRAM1932の信頼性を向上させるために、リフレッシュレートをより高い値へ設定する。破棄されたデータ数が目標エラー数211よりも小さい場合はDRAM1932の電力効率を向上させるために、リフレッシュレートをより低い値へ設定する。
【0058】
本実施例においても、S702の処理により起動したワーカは図8の一連の処理を実行するが、低信頼領域1932に格納された入力データ208を対象として処理を実行し、その処理結果であるワーカ作業データ209を低信頼領域に格納する点が実施例1とは異なる。
【0059】
以上の構成及び処理により、DRAM内の故障ビットを完全に訂正することなく、システム全体が停止することを回避した低電力な計算機システム3を実現できる。大容量DRAMを用いるシステムにおいては、DRAMが消費する電力の大部分はリフレッシュのための電力であるため、本実施例における計算機システムにより、DRAMの電力を大きく削減することが可能になる。
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15
図16
図17