(57)【要約】所定の信頼性を維持しつつ、記憶デバイスの消費電力を削減した計算機システムを提供する。命令データ、ポインタなど、データに誤りが発生するとシステムダウンに繋がる重要度の高いデータについては記憶デバイス内で高信頼（エラー訂正可能となるレベル）に保持し、画像やテキストなどの入力データや計算の中間データなど、データに誤りが発生してもシステム全体を停止させない重要度が低いデータについては低信頼（1ビット以上のデータがＥＣＣを用いてもエラー訂正不可能となるレベル）に保持する。
2015083276.tif 000002
【特許請求の範囲】
【請求項１】
メモリと、
第１の動作状態で前記メモリへアクセスし、前記メモリにおけるデータエラー発生率が前記第１の動作状態よりも高い第２の動作状態では前記メモリへのアクセスを停止する第１のプロセッサと、
前記第２の動作状態で前記メモリへアクセスする第２のプロセッサとを有する計算機システム。
【請求項２】
請求項１の計算機システムであって、
前記第１のプロセッサは、前記第１の動作状態で前記第２のプロセッサへの作業指示内容を前記メモリに格納し、
前記第２のプロセッサは、前記第２の動作状態で前記メモリに格納された作業指示内容を読み出して処理を実行することを特徴とする計算機システム。
【請求項３】
請求項２の計算機システムであって、
前記第２の動作状態は、前記メモリにおいて１ビット以上の訂正不可能なデータエラーが発生する状態であることを特徴とする計算機システム。
【請求項４】
請求項２の計算機システムであって、
テストパターンを入力データとした処理を実行した結果に基づき、前記第２の動作状態を決定することを特徴とする計算機システム。
【請求項５】
請求項２の計算機システムであって、
前記第２のプロセッサには、前記メモリの第１の記憶領域が使用可能な記憶領域として割り当てられており、
前記第１のプロセッサは、前記第２のプロセッサが動作しているかを確認し、動作していない場合は、前記第１の記憶領域に換えて第２の記憶領域を前記第２のプロセッサに割り当て、前記第２のプロセッサを再起動させることを特徴とする計算機システム。
【請求項６】
請求項２の計算機システムであって、
前記第１のプロセッサは、前記第２のプロセッサの処理結果が所定の条件を満たすかを確認し、満たしていない場合は、前記第２のプロセッサに指示した作業を再実行させることを特徴とする計算機システム。
【請求項７】
請求項２の計算機システムであって、
前記メモリはＳＲＡＭ（Ｓｔａｔｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）であり、
前記第１及び前記第２の動作状態は前記メモリの動作電圧により決定され、前記第２の動作状態における動作電圧は前記第１の動作状態における動作電圧よりも低いことを特徴とする計算機システム。
【請求項８】
請求項２の計算機システムであって、
前記メモリはＤＲＡＭ（Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）であり、
前記第１及び前記第２の動作状態は前記メモリのリフレッシュレートにより決定され、前記第２の動作状態におけるリフレッシュレートは前記第１の動作状態におけるリフレッシュレートよりも低いことを特徴とする計算機システム。
【請求項９】
第１及び第２のプロセッサとメモリを備えた計算機システムの制御方法であって、
前記第１のプロセッサは、第１の動作状態で前記メモリへアクセスし、前記メモリにおけるデータエラー発生率が前記第１の動作状態よりも高い第２の動作状態では前記メモリへのアクセスを停止し、
前記第２のプロセッサは、前記第２の動作状態で前記メモリへアクセスする、計算機システムの制御方法。
【請求項１０】
請求項９の計算機システムの制御方法であって、
前記第１のプロセッサは、前記第１の動作状態で前記第２のプロセッサへの作業指示内容を前記メモリに格納し、
前記第２のプロセッサは、前記第２の動作状態で前記メモリに格納された作業指示内容を読み出して処理を実行する、計算機システムの制御方法。
【請求項１１】
請求項１０の計算機システムの制御方法であって、
前記メモリはＳＲＡＭ（Ｓｔａｔｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）であり、
前記第１及び前記第２の動作状態は前記メモリの動作電圧により決定され、前記第２の動作状態における動作電圧は前記第１の動作状態における動作電圧よりも低いことを特徴とする計算機システムの制御方法。
【請求項１２】
請求項１０の計算機システムの制御方法であって、
前記メモリはＤＲＡＭ（Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）であり、
前記第１及び前記第２の動作状態は前記メモリのリフレッシュレートにより決定され、前記第２の動作状態におけるリフレッシュレートは前記第１の動作状態におけるリフレッシュレートよりも低いことを特徴とする計算機システムの制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、半導体メモリを備えた情報処理システム及びその制御方法に関する。特に、低消費電力かつ所定の信頼性を満たす情報処理システムを実現する技術に関する。
【背景技術】
【０００２】
半導体微細化に伴い、計算機システムの性能が向上する一方で、トランジスタの特性ばらつきが増大している。この特性ばらつきは特に、ＳＲＡＭ（Ｓｔａｔｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）など記憶デバイスの信頼性を低下させ、保持データの破損などを招く原因となる。データ破損はシステムダウンなどを引き起こす可能性があるため、その補償技術が近年大きな課題となっている。ＳＲＡＭのみならず、ＤＲＡＭ（Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）などの記憶デバイスにおいても同様である。例えば、ＤＲＡＭにおいては記憶保持時間が小さくなる。【０００３】
このため、記憶デバイスの信頼性を維持する技術として、特許文献１では、エラー訂正符号化（ＥＣＣ）やデータの多重化により記憶したデータの誤りを訂正する技術が開示されている。また、特許文献２では、メモリチップの劣化による必要閾値電圧の違いに対応するために、メモリチップに対するデータの書き込みまたは読み込みに用いる信号の電気的特性を定めるパラメータを変更して適正値に設定する技術が開示されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特表２００８−５２１１６０
【特許文献２】特開２０１２−６８８２５
【発明の概要】
【発明が解決しようとする課題】
【０００５】
特許文献１および特許文献２のように、全てのデータに対し、誤りを完全に訂正する場合、信頼性維持コストが増大する。例えば、ＥＣＣを適用する場合、符号化および訂正処理のために電力を消費する。また、ＳＲＡＭにおいては電圧を高める、ＤＲＡＭにおいてはリフレッシュレートの頻度を上げることで、動作マージンを拡大することが可能だが、消費電力も増加する。このように、記憶デバイスの信頼性維持には多大な電力コストが必要であり、半導体微細化が進むほどその信頼性維持コストは増大する。【０００６】
また、今後、大規模データを用いた学習・認識処理などのアプリケーションの台頭が予想されている。このようなアプリケーションでは多量の計算を行うため、大容量の記憶デバイスを必要とする。このため、記憶デバイスの大容量化に伴う信頼性維持コストの増加が、特に問題となってくる。【０００７】
但し、学習・認識処理を応用したアプリケーションなど、一部のアプリケーションにおいては計算結果の誤差に対して強い耐性がある。例えば、人物の認識において正しい計算結果は確信度９０％であるに対し、データのエラーによって確信度８８％となっても、結論としてこれがＡさんであるという結論に変わりが無ければ問題ない。しかしながら、記憶デバイスが高信頼であることを前提としている現在の計算機システムにおいては、プロセッサへの命令もデータも全て同様に扱うために、記憶デバイスのデータのエラーが計算機システム全体のダウンにつながる恐れがある。
【課題を解決するための手段】
【０００８】
そこで、本発明の実施例における計算機システムでは、命令データ、ポインタなど、システム全体の制御に関わるデータであり、誤りが発生するとシステムダウンに繋がる重要度の高いデータについては、記憶デバイス内で高信頼（エラー訂正可能となるレベル）に保持する。一方、画像やテキストなどの入力データや計算の中間データなど、データに誤りが発生してもシステム全体を停止させない重要度が低いデータについては低信頼（1ビット以上のデータがＥＣＣを用いてもエラー訂正不可能となるレベル）に保持する。これにより、記憶デバイスの大部分を低信頼（言い換えれば低電力）の状態で使用しつつ、システム全体の停止など計算機システムの致命的なエラーを回避する。【０００９】
具体的には、実施例の一例における計算機システムは、メモリと、メモリに接続された第１及び第２のプロセッサを備える。第１のプロセッサは、第１の動作状態でメモリへアクセスし、メモリにおけるデータエラー発生率が前記第１の動作状態よりも高い第２の動作状態ではメモリへのアクセスを停止する。一方、第２のプロセッサは、第２の動作状態で前記メモリへアクセスする。【００１０】
そして、第１のプロセッサは、第１の動作状態で第２のプロセッサへの作業指示内容をメモリに格納し、第２のプロセッサは、第２の動作状態でメモリに格納された作業指示内容を読み出して処理を実行する。また、第１のプロセッサは、第１の動作状態で第２のプロセッサが動作しているかを確認し、動作していない場合は、第２のプロセッサを再起動させる。【００１１】
メモリがＳＲＡＭの場合は、前述の第１及び第２の動作状態はＳＲＡＭの動作電圧により決定される。この場合、第２の動作状態における動作電圧は第１の動作状態における動作電圧よりも低い。【００１２】
メモリがＤＲＡＭの場合は、前述の第１及び第２の動作状態はＤＲＡＭのリフレッシュレートにより決定される。この場合、第２の動作状態におけるリフレッシュレートは第１の動作状態におけるリフレッシュレートよりも低い。
【発明の効果】
【００１３】
本発明により、所定の信頼性を維持しつつ記憶デバイスの消費電力を削減した計算機システムの提供が可能になる。
【図面の簡単な説明】
【００１４】
【図１】ＳＲＡＭを備えたプロセッサの構成例を示す図である。
【図２】ＳＲＡＭが保有するデータを示す図である。
【図３】プロセッサの並列計算処理を説明する図である。
【図４】ワーカが使用するＳＲＡＭ上のアドレス領域のデータ配置を示す図である。
【図５】ワーカが使用するＳＲＡＭ上のアドレス領域のデータ配置を示す図である。
【図６】ワーカが使用するＳＲＡＭ上のアドレス領域のデータ配置を示す図である。
【図７】並列計算処理におけるマスタの動作フローチャートを示す図である。
【図８】並列計算処理におけるワーカの動作フローチャートを示す図である。
【図９】計算機システムの構成例を示す図である。
【図１０】メモリが保有するデータを示す図である。
【図１１】計算機システムのパラメータ調整用プログラムの処理フローチャートである。
【図１２】計算機システムの構成例を示す図である。
【図１３】メモリの構成例を示す図である。
【図１４】メモリの制御ユニットが保有するデータを示す図である。
【図１５】メモリの記憶ユニットの高信頼領域が保有するデータを示す図である。
【図１６】メモリの記憶ユニットの低電力領域が保有するデータを示す図である。
【図１７】計算機システムの動作フローチャートを示す図である。
【発明を実施するための形態】
【実施例１】
【００１５】
実施例１では、ＳＲＡＭの消費電力を削減したプロセッサの例を説明する。【００１６】
図１は、ＳＲＡＭを備えたプロセッサ１０の構成を示すブロック図である。プロセッサ１０は、複数のプロセッサコアを備えたマルチコアプロセッサであり、ＣＰＵ１１０、ＣＰＵ１２０、バス１３０、入出力ユニット１４０、ＳＲＡＭ１５０、タイマ１６０、電圧／周波数制御ユニット１７０を有している。【００１７】
ＣＰＵ１１０は、マスタ・ワーカ方式の並列処理において、マスタの役割をする演算コアであり、ＣＰＵ１２０は、ワーカの役割をする演算コアである。ＣＰＵ１２０は、命令キャッシュ１２１とロード／ストアユニット１２２を有する。【００１８】
命令キャッシュ１２１は、命令データを格納するキャッシュメモリであり、メモリセルのトランジスタサイズが大きい、又はトランジスタ数が多いなど、低電圧動作においても高信頼に動作できるように作られている。ロード／ストアユニット１２２は、ＣＰＵ１２０のデータをＳＲＡＭ１５０へ書込む処理と、ＳＲＡＭ１５０のデータをＣＰＵ１２０から読出す処理を行うユニットである。【００１９】
バス１３０は、プロセッサ１０に存在する各モジュールを繋ぐユニットである。入出力ユニット１４０は、プロセッサ１０と外部システムを繋ぐユニットである。ＳＲＡＭ１５０は、ＣＰＵ１１０（マスタ）とＣＰＵ１２０（ワーカ）が計算に使用するデータが格納される共有メモリであり、例えば図２に示すデータを格納する。【００２０】
タイマ１６０は、時間をカウントするタイマであり、ＣＰＵ１１０から受信した低電圧設定値情報２０１と電圧変更間隔情報２０２を含む制御情報１１１に基づいて、電圧／周波数制御ユニット１７０へ電圧変更指示を含む制御情報１６１を出力し、ＣＰＵ１１０へ電圧変更完了を示す情報を含む割込み情報１６２を出力する。【００２１】
電圧／周波数制御ユニット１７０は、プロセッサ１０の動作電圧および動作周波数を変更するユニットである。本実施形態では、電圧／周波数制御ユニット１７０により、ＣＰＵ１１０とＣＰＵ１２０の電圧の制御を共通して行うが、異なる電圧／周波数制御ユニットにより独立した制御を行ってもよい。【００２２】
図２は、ＳＲＡＭ１５０に格納されるデータの一例である。低電圧設定値情報２０１は、低電圧状態の動作電圧と、該動作電圧でＣＰＵ１１０およびＣＰＵ１２０が動作可能な動作周波数の情報である。電圧変更間隔情報２０２は、プロセッサ１０の動作電圧を変更する時間間隔の情報である。アドレスオフセット情報２０３は、ＣＰＵ１１０がＣＰＵ１２０へ割り当てるＳＲＡＭ１５０上の記憶領域のアドレスオフセット情報である。【００２３】
タスク管理情報２０４は、ＣＰＵ１１０がＣＰＵ１２０へ与えるタスクの管理情報であり、どのワーカ（ＣＰＵ１２０）がどのタスクを処理していて、全体としてどれだけのタスクが完了しているかなどを示す情報である。タスクキュー２０５はＣＰＵ１１０がＣＰＵ１２０へ与えるタスクのキューであり、ワーカ（ＣＰＵ１２０）はタスクキュー２０５のタスクが無くなるまで、タスクキュー２０５からタスクを受け取って処理する。【００２４】
タスク計算結果情報２０６は、ＣＰＵ１２０（ワーカ）が処理したタスクの計算結果の情報であり、計算結果の配置アドレス情報などＣＰＵ１１０（マスタ）が計算結果を取得するための情報である。マスタ作業データ２０７は、ＣＰＵ１１０（マスタ）が処理の途中に生成するデータである。ワーカ作業データ２０８は、ＣＰＵ１２０（ワーカ）が処理の途中に生成するデータである。【００２５】
入力データ２０９は、計算の対象となる入力データであり、例えば機械学習の教師データとなる画像データである。生存確認情報２１０は、ワーカの生存状況を確認するための情報である。目標エラー数２１１は、プロセッサ１０がプログラム実行中の所定処理でカウントするエラーデータ数の目標値である。許容エラー数２１２は、プロセッサ１０がプログラム実行中の所定部分の処理でカウントするエラーデータ数において、アプリケーションが許容可能な閾値である。【００２６】
図３は、プロセッサ１０において、ＣＰＵ１１０（マスタ）とＣＰＵ１２０（ワーカ）により実行される並列処理の例を示すタイムチャートである。まず、ＣＰＵ１１０（マスタ）は、標準電圧の状態で、並列処理を行う前までの処理３０１を行う。その後、処理３０２においてタスクキュー作成処理とワーカ起動処理３２１を行う。ＣＰＵ１２０（ワーカ）は、ワーカ起動処理３１１を行い、完了したことをマスタに通知する。全てのワーカ起動完了を確認したマスタは、タイマ１６０に低電圧設定値情報２０１と電圧変更間隔情報２０２を設定し、スリープ処理３０３を行う。【００２７】
タイマ１６０は、低電圧設定値情報２０１に基づいて電圧／周波数制御ユニット１７０へ動作電圧および動作周波数の設定値変更指示（制御情報１６１）を出力する。電圧／周波数制御ユニット１７０は、タイマ１６０からの設定値変更指示に基づいて動作電圧および動作周波数を変更し、プロセッサ１０を低電圧の状態にする。ワーカは、タスクキュー２０５よりタスクを取得し、入力データ２０９を用いてタスク処理３１２を行う。ワーカは、取得したタスクの処理が完了すると、タスク計算結果の格納アドレスをタスク計算結果情報２０６としてＳＲＡＭ１５０に書込み、タスクキュー２０５から新たなタスクを取得して処理する。ワーカは、タスクキュー２０５のタスクがなくなるまでこれを繰り返す。【００２８】
タイマ１６０は、電圧変更間隔情報２０２に基づいた所定時間経過後に、電圧／周波数制御ユニット１７０へ標準電圧への設定値変更指示（制御情報１６１）を出力し、電圧変更後にマスタに割込み情報１６２を出力する。割込み情報１６２を受信したマスタは、タスクの進捗状況確認とワーカの生存状況の確認などを行う管理処理３０４を行う。ここで、あるワーカ（ワーカ２）が低電圧状態でのＳＲＡＭ１５０にアクセスし、ポインタのデータが破損するなどによって停止するアクシデント３１３が発生していた場合、マスタはワーカ２の再起動処理３２２を実行する。再起動処理３２２においては、マスタは再起動するワーカが使用するＳＲＡＭ１５０上のアドレス領域のオフセット値を変更する。これにより、再起動したワーカ（ワーカ２）は前回とは異なるアドレス領域にアクセスすることになるため、アクシデント３１３と同一の原因で停止することを回避することができる。【００２９】
生存状況の確認は、ＳＲＡＭ１５０上の生存確認情報２１０のデータをワーカが定期的にカウントアップし、マスタがこれを観測するなどによって行うことができる。管理処理３０４において全てのタスクが完了していなければ、マスタは処理３０２と同様にタイマ１６０へ制御情報１１１を出力し、スリープ処理３０３を行う。管理処理３０４において全てのタスクが完了している場合は、ワーカにタスク終了通知３２３を通知し、後処理３０５を行う。【００３０】
このようにマスタがＳＲＡＭ１５０へアクセスする際には、常にＳＲＡＭ１５０の電圧が標準電圧の状態であるようにすることによって、マスタが保有するデータを正しく保持することができる。また、タスクキュー２０５、タスク計算結果情報２０６と生存確認情報２１０はＳＲＡＭ１５０上で三重化して保持されており、低電圧状態でも高信頼（訂正処理によって完全にデータ復元が可能である状態）にデータアクセスができる。一方、ワーカがＳＲＡＭ１５０にアクセスする際は、ＳＲＡＭ１５０の電圧を低電圧の状態にすることにより、ＳＲＡＭ１５０の消費電力を削減することができる。【００３１】
次に、ＣＰＵ１１０（マスタ）が再起動するＣＰＵ１２０（ワーカ）が使用するＳＲＡＭ１５０上のアドレス領域のデータ配置を変更する手段を、図４、図５、図６を用いて説明する。図４、図５、図６はワーカが使用するアドレス領域のデータ配置を示す図である。マスタは、ワーカ起動時にワーカが作業に使うアドレス領域を実際に割当てるサイズよりも大きく確保し、ワーカへＳＲＡＭ１５０上のアドレス領域のオフセット値とインデックス値を設定し、ワーカが使用可能なアドレス領域を割当てる。オフセット値はワーカへ割当てるアドレス領域の物理的な先頭アドレスであり、インデックス値はワーカへ割当てたアドレス領域内の論理的な先頭アドレスである。【００３２】
図４に示すように、マスタは、例えばワーカ１へはアドレス領域４０１を確保し、アドレス４１１をオフセット値（先頭アドレス）として設定することでワーカ１へアドレス領域４１０を割当て、残りのアドレス領域４５１をマージン領域とする。同様にワーカ２へはアドレス領域４０２を確保し、アドレス４２１をオフセット値として設定することでアドレス領域４２０を割当てる。なお、インデックス値の初期値はゼロとして設定される。マスタが有するワーカのアドレスオフセットに関する情報はアドレスオフセット情報２０３としてＳＲＡＭ１５０に格納され、ワーカが有するオフセット値とインデックス値は該ワーカのロード／ストアユニット１２２に格納される。【００３３】
ここで、ワーカ２を再起動させる場合、図５に示すように、マスタはワーカ２のオフセット値をアドレス４２２に変更して再起動する。これにより、ワーカ２のデータ配置が変更されるため、同一の原因でワーカ２が何度も停止する事象を回避できる。【００３４】
オフセット値変更を行ってもワーカ２が繰り返し停止する場合、マスタは図６に示すように、ワーカ２のインデックス値を変更する。ワーカ２のロード／ストアユニット１２２は変更されたインデックス値に従って、アドレス領域４２０内でデータを配置するアドレスをリングシフトすることによってデータ配置の変更を行う。図４ではワーカ２のオフセット値がアドレス４２２と設定されており、インデックス値の変更に従ってアドレス４２２がワーカ２の論理的な先頭アドレスとなるようにアドレス変換を行った例を示している。【００３５】
このようにデータ配置の変更を行うことによって、再起動したワーカが過去に停止した原因と同一の原因で何度も停止を繰り返すことを回避することができる。【００３６】
次に、図７と図８を用いて、プロセッサ１０で実行される並列処理を説明する。図７はプロセッサ１０のＣＰＵ１１０（マスタ）が行う処理のフローチャートである。まず、マスタはタスクキュー２０５作成処理（ステップＳ７０１）を実行する。ここで、タスクキュー２０５内の情報は３重化などによって高信頼化されて書込まれる。これにより、ワーカはＳＲＡＭ１５０が低電圧状態でもタスクキュー２０５から正確な情報を取得できる。タスクキュー２０５の情報は全体に比べて非常に小さいため、３重化に伴う電力損失は非常に小さい。その後、ワーカ起動処理（ステップＳ７０２）を行い、電圧変更処理（ステップＳ７０３）としてタイマ１６０へ低電圧設定値情報２０１と電圧変更間隔情報２０２を設定し、スリープ処理（ステップＳ７０４）へ移行する。マスタはタイマ１６０から割込み情報１６２を受信（ステップＳ７０５）すると、スリープ処理を解除し、ステップＳ７０６へ移行してワーカ生存確認とワーカ再起動処理を行う。その後、ステップＳ７０７としてタスク管理情報２０４を参照し、タスク処理状況の進捗確認を行い、タスクキュー２０５の全てのタスクが処理されていたならば、全てのＣＰＵ１２０（ワーカ）に対してタスク終了通知３２３を出力し、ステップＳ７１０へ移行し、タスクキュー２０５の全てのタスクが処理されていなければ、Ｓ７０３へ移行するという分岐処理（ステップＳ７０８）を行う。【００３７】
ステップＳ７１０ではワーカが処理したタスクの計算結果が所定のフォーマットを満たしているかのチェックを行う。例えば、教師なし学習の一種であるＫ−ｍｅａｎｓクラスタリングのアルゴリズムにおいては、入力データの各要素が所属するクラスタの番号は必ずクラスタ数Ｋよりも小さくなる。このように、ワーカの計算結果が、計算結果として取りえる値域を満たしているかをチェックする。これにより、マスタがワーカの計算結果を配列の要素番号として使用する際などに、配列オーバフローなどシステムが停止してしまう致命的なエラーを回避することができる。なお、前記所定のフォーマットを満たしていない計算結果は破棄される。【００３８】
ステップＳ７１１では、前記所定のフォーマットを満たしていない計算結果の数が目標エラー数２１１に近づくように、マスタは信頼性を調整する処理を行う。信頼性の調整は低電圧設定値情報２０１の電圧値を変更することによって行う。破棄されたデータ数が目標エラー数２１１よりも大きい場合はＳＲＡＭ１５０の信頼性を向上させるために、電圧値をより高い値へ設定する。破棄されたデータ数が目標エラー数２１１よりも小さい場合はＳＲＡＭ１５０の電力効率を向上させるために、電圧値をより低い値へ設定する。また、ステップＳ７１１として、前記所定のフォーマットを満たしていない計算結果の数が許容エラー数２１２以上であるとき、ワーカの計算結果を全て破棄し、計算のリトライを行うためにステップＳ７０３へ移行する分岐処理を行う。プロセッサ１０を備える計算機システムは、低電圧設定値情報２０１、目標エラー数２１１、および許容エラー数２１２をユーザが容易に設定することが可能なＡＰＩ（Ａｐｐｌｉｃａｔｉｏｎ  Ｐｒｏｇｒａｍｍｉｎｇ  Ｉｎｔｅｒｆａｃｅ）を有している。なお、精度維持のために特に細やかなエラー数調整が必要ない場合、プロセッサ１０を備える計算機システムはステップＳ７１１を省略することもできる。【００３９】
図８は、図７のＳ７０２でＣＰＵ１１０（マスタ）により起動されたＣＰＵ１２０（ワーカ）が行う処理のフローチャートである。起動したワーカは、ステップＳ８０1にてタスクキュー２０５のタスク進捗状況を確認し、ステップＳ８０２として全タスクが完了しているならばステップＳ８２０へ移行し、未処理のタスクが残っているならばＳ８１０へ移行する。Ｓ８２０ではタスク終了通知３２３をマスタから受信するまで待機し、ワーカは処理を終了する。Ｓ８１０ではタスクキュー２０５からタスクを取得し、どのワーカがどのタスクを取得したかが分かるように、取得したタスク識別番号と自身のワーカ識別番号をタスク管理情報２０４へ書込む。ステップＳ８１１として取得したタスクを処理する。ステップＳ８１２として処理したタスクの計算結果をＳＲＡＭ１５０へ出力すると共に、取得したタスクの処理が完了したことが分かるように、処理を完了したタスク識別番号と自身のワーカ識別番号をタスク管理情報２０４へ書込む。ここで、タスク管理情報２０４のデータは３重化などによって高信頼化されて書込まれる。なお、Ｓ８０１からＳ８２０までのフローにおいて、ワーカは所定の間隔で生存確認情報２１０を更新する。【００４０】
以上の構成及び処理により、ＳＲＡＭ内の故障ビットを完全に訂正することなく、システム全体が停止することを回避した低電力なプロセッサ１０を実現できる。【００４１】
次に、図９、図１０、図１１を用いて、プロセッサ１０の低電圧設定値情報２０１と目標エラー数２１１を設定する手段を説明する。図７に示したステップＳ７１１の信頼性調整処理では、プログラム中にその目標エラー数２１１を設定する必要がある。プロセッサ１０を含む計算機システムをユーザに提供する場合、ユーザがアプリケーションプログラムを意識して目標エラー数２１１などのパラメータを設定することが困難な場合がある。そのような場合、ユーザはパラメータ調整用プログラム１００３を実行することにより、アプリケーションプログラムを意識することなく最適なパラメータを設定できる。パラメータ調整用プログラム１００３は、ユーザが準備したパラメータ調整用のテストデータと予め設定された計算結果の精度目標値情報を用いてアプリケーションプログラムをプロセッサ１０の上で実行することによって、計算結果の精度が目標値を満たす範囲で電力が最も下がる低電圧設定値情報２０１を取得し、さらに目標エラー数２１１を取得する。【００４２】
図９は、プロセッサ１０を含む計算機システム１の構成例を示す図である。メモリ２０は、ＤＲＡＭなどで構成されるメモリである。メモリ２０には図１０に示す情報が格納される。入出力ユニット３０は外部システムと計算機システム１を繋ぐユニットである。バス４０は計算機システム１の各コンポーネントを繋ぐバスである。【００４３】
図１０は、メモリ２０に格納されたデータの一例である。アプリケーションプログラム１００１は、パラメータ調整対象となるアプリケーションプログラムである。テストデータ１００２は、低電圧設定値情報２０１と目標エラー数２１１のパラメータを調整するための入力テストデータである。パラメータ調整用プログラム１００３は、アプリケーションプログラム１００１の最適パラメータを探索するためのプログラムである。精度目標値情報１００４は、許容可能な精度劣化を規定する基準情報である。【００４４】
図１１のパラメータ調整用プログラム１００３のフローチャートを用いて、ユーザがアプリケーションプログラムを意識することなく、低電圧設定値情報２０１と目標エラー数２１１の設定値を取得する方法を説明する。まず、計算機システム１は正解基準データ生成（ステップＳ１１０１）を行う。正解基準データは、プロセッサ１０の低電圧設定値情報２０１を標準電圧値として実行する（すなわち、全ての処理を標準電圧で実行する）ことによって得られる高信頼計算時における計算結果であり、低電圧動作を含む高効率計算時の計算結果と比較するために使用されるデータである。【００４５】
ステップＳ１１０２で、低電圧設定値情報２０１のパラメータを電圧値更新幅情報１００５だけ小さい値に設定する。すなわち、ここでは標準電圧よりも電圧値更新幅情報１００５だけ小さい値に設定される。次にステップＳ１１０３でアプリケーションプログラム１００１を実行し、低電圧動作を含む高効率計算時の計算結果を得て、ステップＳ１１０４で正解基準データとの比較を行い、高効率計算時における計算精度の劣化の度合いを示す計算精度劣化値を取得する。【００４６】
そして、ステップＳ１１０５で、前記計算精度劣化値と精度目標値情報１００４を比較し、目標とする計算精度を満たしているならばステップＳ１１０２へ移行し、低電圧設定値情報２０１の値をさらに電圧値更新幅情報１００５だけ小さい値に設定する。Ｎ回目の試行におけるステップＳ１１０５の処理において目標とする計算精度を満たしていなければ、Ｎ−１回目の試行における低電圧設定値情報２０１を、アプリケーションプログラム１００１における低電圧設定値情報２０１として得る。さらに、ステップＳ１１１０にてＮ−１回目の試行におけるステップＳ７１０（データ健全性チェック）でカウントした破棄データ数の平均値を目標エラー数２１１として得る。【００４７】
以上の構成及び処理により、ユーザがアプリケーションプログラムを意識することなく、低電圧設定値情報２０１と目標エラー数２１１の設定値を取得することができ、要求された計算精度を満たしつつ消費電力を削減した計算機システム１を実現できる。なお、ここでは低電圧設定値情報２０１を標準電圧から徐々に低下させる例、即ち高い電圧値から徐々に低い電圧値へ変更することによって最適パラメータを得る例を示したが、低い電圧値から徐々に高い電圧値へ変更することによって最適パラメータを得ることも可能である。
【実施例２】
【００４８】
実施例２では、ＤＲＡＭの消費電力を削減した計算機システム３の例を説明する。【００４９】
図１２は、本実施例における計算機システム３の構成例である。計算機システム３はプロセッサ１８１０、プロセッサ１８２０、バス４０、入出力ユニット３０、ＤＲＡＭ１８３０を有している。図９と同一のコンポーネントには同一の符号を付し、説明は省略する。【００５０】
プロセッサ１８１０、プロセッサ１８２０はＣＰＵなどで構成されるプロセッサである。計算機システム３は実施例１と同じくマスタ・ワーカ構成の計算を行う計算機システムであり、プロセッサ１８１０はマスタ、プロセッサ１８２０はワーカの役割を担う。メモリ１８３０は本発明に係るメモリであり、ＤＲＡＭなど、データの揮発を防ぐためのリフレッシュを必要とする記憶デバイスで構成される。【００５１】
メモリ１８３０は、図１３に示すように入出力ユニット１９１０、制御ユニット１９２０、バス１９４０、記憶ユニット１９３０で構成される。  バス１９４０はメモリ１８３０内の各コンポーネントを繋ぐためのバスである。入出力ユニット１９１０はバス４０とメモリ１８３０の内部とつなぐユニットであり通信プロトコルに関する処理を行う。【００５２】
制御ユニット１９２０はメモリ１８３０の制御部であり、記憶ユニット１９３０へのデータ書込み及び読出し処理や、これに伴うＥＣＣ処理、さらにリフレッシュ処理などを行う。制御ユニット１９２０は記憶ユニット１９２１を有する。【００５３】
記憶ユニット１９２１は、図１４に示すように、第１のリフレッシュレート情報２００１と第２のリフレッシュレート情報２００２を有する。第１のリフレッシュレート情報２００１は記憶ユニット１９３０の高信頼領域１９３１のリフレッシュレートであり、第２のリフレッシュレート情報２００２は低電力領域１９３２のリフレッシュレートである。第１のリフレッシュレート情報２００１と第２のリフレッシュレート情報２００２はプロセッサ１８１０（マスタ）から設定される。リフレッシュレートが高いほど頻繁にリフレッシュを行うので記憶ユニットの信頼性は向上するが消費電力も増加する。このため、低電力領域１９３２のリフレッシュレート（第１のリフレッシュレート情報２００１）は高信頼領域１９３１のリフレッシュレート（第２のリフレッシュレート情報２００２）よりも低く設定されている。【００５４】
記憶ユニット１９３０は、ＤＲＡＭのアレイで構成される記憶デバイスであり、高信頼領域１９３１と低電力領域１９３２を有する。高信頼領域１９３１は保持されるデータの故障ビット数が、制御ユニット１９２０が実施するＥＣＣで正しく訂正可能な範囲内になるように動作を行うアドレス領域である。低電力領域１９３２は、保持されるデータの故障ビット数が、制御ユニット１９２０が実施するＥＣＣで正しく訂正可能な範囲外になるように動作を行うアドレス領域である。即ち、低電力領域１９３２に書込まれたデータは、読出し時に誤りを有しながらバス４０に出力される。【００５５】
高信頼領域１９３１が有するデータを図１５に示す。図１５において、図２と同一のデータには同一の符号を付し、説明を省略する。レート変更間隔情報２１０２はリフレッシュレートを変更する間隔の情報である。低電力領域１９３２が有するデータを図１６に示す。図１６において、図２と同一のデータには同一の符号を付し、説明を省略する。高信頼領域１９３１はマスタ及びワーカの双方がアクセスする領域であり、計算機システムを制御するためのデータが格納されている。一方、低信頼領域１９３２はワーカがアクセスする領域であり、画像やテキストなどの入力データや計算の中間データなどが格納されている。【００５６】
次に計算機システム３の処理フローを、図１７に示す計算機システム３の動作フローチャートを用いて説明する。図１７において、図７と同一の要素については同一の符号を付し、詳しい説明を省略する。【００５７】
並列処理において、マスタはタスクキュー作成処理（ステップＳ７０１）を行い、ワーカ起動処理（ステップＳ７０２）を行って、所定時間スリープする（ステップＳ７０４）。本実施例におけるタスクキュー作成処理では、マスタは高信頼領域１９３１に作成したタスクキューを格納する。その後、ステップＳ７０５では、割込み情報受信や内部タイマに基づいてアクティブ状態に遷移し、ワーカ生存確認と再起動処理（ステップＳ７０６）を行い、タスク進捗確認（ステップＳ７０７）を行う。そして、全てのタスクが完了していなければステップＳ７０４へ移行し、全てのタスクが完了していたならば得られた結果に対してデータ健全性チェック（ステップＳ７１０）を行う。ステップＳ２３１１では、実施例１におけるステップＳ７１１と同様の手段で信頼性調整処理を行う。但し、実施例１における計算機システム１ではデータ信頼性（即ち、データ中の故障ビット数又は故障ビット割合）の調整を電圧変更によって行っていたが、本実施例における計算機システム３ではデータ信頼性の調整を、ＤＲＡＭのリフレッシュレートの変更によって行う点が異なる（ステップＳ２３１１）。即ち、計算機システム３では低電力領域１９３２のリフレッシュレートを定める第２のリフレッシュレート情報２００２を変更することによって信頼性調整を行う。破棄されたデータ数が目標エラー数２１１よりも大きい場合はＤＲＡＭ１９３２の信頼性を向上させるために、リフレッシュレートをより高い値へ設定する。破棄されたデータ数が目標エラー数２１１よりも小さい場合はＤＲＡＭ１９３２の電力効率を向上させるために、リフレッシュレートをより低い値へ設定する。【００５８】
本実施例においても、Ｓ７０２の処理により起動したワーカは図８の一連の処理を実行するが、低信頼領域１９３２に格納された入力データ２０８を対象として処理を実行し、その処理結果であるワーカ作業データ２０９を低信頼領域に格納する点が実施例１とは異なる。【００５９】
以上の構成及び処理により、ＤＲＡＭ内の故障ビットを完全に訂正することなく、システム全体が停止することを回避した低電力な計算機システム３を実現できる。大容量ＤＲＡＭを用いるシステムにおいては、ＤＲＡＭが消費する電力の大部分はリフレッシュのための電力であるため、本実施例における計算機システムにより、ＤＲＡＭの電力を大きく削減することが可能になる。
【図１】
2015083276.tif 000003
【図２】
2015083276.tif 000004
【図３】
2015083276.tif 000005
【図４】
2015083276.tif 000006
【図５】
2015083276.tif 000007
【図６】
2015083276.tif 000008
【図７】
2015083276.tif 000009
【図８】
2015083276.tif 000010
【図９】
2015083276.tif 000011
【図１０】
2015083276.tif 000012
【図１１】
2015083276.tif 000013
【図１２】
2015083276.tif 000014
【図１３】
2015083276.tif 000015
【図１４】
2015083276.tif 000016
【図１５】
2015083276.tif 000017
【図１６】
2015083276.tif 000018
【図１７】
2015083276.tif 000019
【国際調査報告】
2015083276.tif 000020
2015083276.tif 000021
2015083276.tif 000022
2015083276.tif 000023