(57)【要約】【課題】ハードウェア的な故障が発生したと判定するとデータの切替を行う情報処理システムにおいて、ハードウェア的な故障が発生したか否かの判定基準を、より適切に設定できるようにする。【解決手段】閾値記憶部１３は、予備データ記憶部１２を使用するか否かの判定に用いる閾値を記憶する。これにより、ハードウェア的な故障が発生したか否かの判定基準を、より適切に設定し得る。例えば、情報処理システム１のユーザは、処理を高速に行う必要性の比較的高い用途のデータに対しては、ハード故障が発生したか否かの判定基準が緩やかになるように閾値を設定しておく。また、情報処理システム１のユーザは、処理を高速に行う必要性の比較的低い用途のデータに対しては、ハード故障が発生したか否かの判定基準が厳しくなるように閾値を設定しておく。【選択図】図１
2014016925.tif 000002
【特許請求の範囲】
【請求項１】
データを記憶する主データ記憶部と、
前記主データ記憶部の記憶領域を区画した区画毎に使用または不使用を設定され、使用との設定にて当該区画におけるデータの一部を前記主データ記憶部に代えて記憶する予備データ記憶部と、
前記予備データ記憶部を使用するか否かの判定に用いる閾値を記憶する閾値記憶部と、
前記区画毎に、前記閾値を用いて当該区画に応じた前記予備データ記憶部を用いるか否かを判定する予備データ切替判定部と、
を具備することを特徴とする情報処理システム。
【請求項２】
前記閾値記憶部は、前記区画毎に前記閾値を記憶し、
前記予備データ切替判定部は、前記区画毎に、当該区画に応じた前記閾値を用いて、当該区画に応じた前記予備データ記憶部を用いるか否かを判定する、
ことを特徴とする請求項１に記載の情報処理システム。
【請求項３】
データを記憶する主データ記憶部と、
前記主データ記憶部の記憶領域を区画した区画毎に使用または不使用を設定され、使用との設定にて当該区画におけるデータの一部を前記主データ記憶部に代えて記憶する予備データ記憶部と、
前記予備データ記憶部を使用するか否かの判定に用いる閾値を記憶する閾値記憶部と、
を具備する情報処理システムのデータ切替方法であって、
前記区画毎に、前記閾値を用いて当該区画に応じた前記予備データ記憶部を用いるか否かを判定する予備データ切替判定ステップを具備することを特徴とするデータ切替方法。
【請求項４】
データを記憶する主データ記憶部と、
前記主データ記憶部の記憶領域を区画した区画毎に使用または不使用を設定され、使用との設定にて当該区画におけるデータの一部を前記主データ記憶部に代えて記憶する予備データ記憶部と、
前記予備データ記憶部を使用するか否かの判定に用いる閾値を記憶する閾値記憶部と、
を具備する情報処理システムに、
前記区画毎に、前記閾値を用いて当該区画に応じた前記予備データ記憶部を用いるか否かを判定する予備データ切替判定ステップを実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理システム、データ切替方法およびプログラムに関する。
【背景技術】
【０００２】
メモリのデータビットにエラーが発生した場合の対策としてＥＣＣ（Error Correction Code）が知られている。一般的なＥＣＣでは、１ビットの誤りを訂正することができ、また、２ビットの誤りを検出することができる。
【０００３】
また、特許文献１に記載のメモリ装置では、制御回路はＳＩＭＭ（Single Inline Memory Module）に固定故障が発生してコピー動作指示信号を受信すると、アドレスデータで指定したＳＩＭＭのワードのデータ部とＥＣＣ部からＥＣＣ付き対象データを読み出し、エラーチェック／訂正回路でビットエラーを訂正し、このデータの固定故障発生ビットを代替データ選択回路により選択してその値をＳＩＭＭの予備部に書き込むコピーサイクルを、ＳＩＭＭの全てのワードに対して行い、これにより予備部に固定故障発生ビットの正しいデータがコピーされる。これ以降、読み出しアクセスに対しては、ＳＩＭＭから読み出したＥＣＣ付き対象データの固定故障発生ビットの値を予備部のデータに置換し、この置換したＥＣＣ付き対象データをエラーチェック／訂正回路に送る。
これにより、メモリに固定故障が発生してもアクセス処理の信頼性を落とさない、とされている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開平１０−０２１１４９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、ＥＣＣを用いたメモリにおいて、ハードウェア的な故障が発生した場合、アクセスの度にエラーの検出と訂正が続く状態となる。これにより、メモリコントローラの動作の負荷が通常時よりも高くなり、メモリアクセスの速度が低下するおそれがある。
【０００６】
また、特許文献１に記載のメモリ装置では、固定故障が発生したか否かの判定は、アクセス元が行うものとして詳しく説明されていない。当該判定について、特許文献１では、アクセス元はリードアクセスに対してエラーチェック／訂正回路から返送されるステータス信号およびエラービット通知信号Ｆのソフトウェア等による解析により、例えば「１ビットエラーが頻発し、エラーが発生しているビットとそのデータ値が毎回同一である」という条件が成立すれば、ＳＩＭＭの１ビットに縮退故障等の固定故障が発生していると推定できる、とされている。しかしながら、特許文献１では、１ビットエラーがどの程度の頻度で発生した場合に１ビットエラーが頻発したと判定するかは示されていない。
【０００７】
ここで、メモリアクセスの際にエラーが生じた場合、当該エラーがハードウェア的な故障（特許文献１では固定故障）に起因するエラーか否かを正確に判定することは、一般的には困難である。ハードウェア的な故障が発生したか否かの判定基準を厳しくしすぎると、ハードウェア的な故障が発生した場合でもハードウェア的な故障と判定されないおそれがある。すると、アクセスの度にエラーの検出と訂正が続く状態となり、メモリコントローラの動作の負荷が通常時よりも高くなって、メモリアクセスの速度が低下するおそれがある。
【０００８】
一方、ハードウェア的な故障が発生したか否かの判定基準を緩やかにしすぎると、実際にはハードウェア的な故障が発生していないにもかかわらずハードウェア的な故障が発生したと判定されるおそれがある。当該判定にて予備用ビット（特許文献１では予備部のビット）を使ってしまうと、実際にハードウェア的な故障を検出した際に、既に使用可能な予備用ビットが無く対応できないおそれがある。
【０００９】
本発明は、上述の課題を解決することのできる情報処理システム、データ切替方法およびプログラムを提供することを目的としている。
【課題を解決するための手段】
【００１０】
この発明は上述した課題を解決するためになされたもので、本発明の一態様による情報処理システムは、データを記憶する主データ記憶部と、前記主データ記憶部の記憶領域を区画した区画毎に使用または不使用を設定され、使用との設定にて当該区画におけるデータの一部を前記主データ記憶部に代えて記憶する予備データ記憶部と、前記予備データ記憶部を使用するか否かの判定に用いる閾値を記憶する閾値記憶部と、前記区画毎に、前記閾値を用いて当該区画に応じた前記予備データ記憶部を用いるか否かを判定する予備データ切替判定部と、を具備することを特徴とする。
【００１１】
また、本発明の一態様によるデータ切替方法は、データを記憶する主データ記憶部と、前記主データ記憶部の記憶領域を区画した区画毎に使用または不使用を設定され、使用との設定にて当該区画におけるデータの一部を前記主データ記憶部に代えて記憶する予備データ記憶部と、前記予備データ記憶部を使用するか否かの判定に用いる閾値を記憶する閾値記憶部と、を具備する情報処理システムのデータ切替方法であって、前記区画毎に、前記閾値を用いて当該区画に応じた前記予備データ記憶部を用いるか否かを判定する予備データ切替判定ステップを具備することを特徴とする。
【００１２】
また、本発明の一態様によるプログラムは、データを記憶する主データ記憶部と、前記主データ記憶部の記憶領域を区画した区画毎に使用または不使用を設定され、使用との設定にて当該区画におけるデータの一部を前記主データ記憶部に代えて記憶する予備データ記憶部と、前記予備データ記憶部を使用するか否かの判定に用いる閾値を記憶する閾値記憶部と、を具備する情報処理システムに、前記区画毎に、前記閾値を用いて当該区画に応じた前記予備データ記憶部を用いるか否かを判定する予備データ切替判定ステップを実行させるためのプログラムである。
【発明の効果】
【００１３】
本発明によれば、ハードウェア的な故障が発生したか否かの判定基準を、より適切に設定し得る。
【図面の簡単な説明】
【００１４】
【図１】本発明の一実施形態における情報処理システムの機能構成を示す概略ブロック図である。
【図２】同実施形態の、ＤＤＲメモリを用いた情報処理システム１におけるデータ信号の切替の例を示す説明図である。
【図３】同実施形態におけるＤＤＲメモリを用いた情報処理システムの構成例を示す概略構成図である。
【図４】同実施形態のＤＤＲメモリの記憶領域におけるデータ構成例を示すデータ構成図である。
【図５】同実施形態の、通常時におけるデータ選択部前後のデータ接続を示す説明図である。
【図６】同実施形態におけるレジスタ機能部がデータビット毎のエラーの回数を記憶するエラーカウント値データの構成例を示すデータ構成図である。
【図７】同実施形態におけるレジスタ機能部が記憶する予備データアサインレジスタのデータ構成例を示すデータ構成図である。
【図８】同実施形態の、切替後におけるデータ選択部前後のデータ接続を示す説明図である。
【図９】同実施形態の、切替後のＤＤＲメモリの記憶領域におけるデータ値の例を示す説明図である。
【図１０】同実施形態の一変形例における情報処理システムの構成例を示す概略構成図である。
【発明を実施するための形態】
【００１５】
以下、図面を参照して、本発明の実施の形態について説明する。図１は、本発明の一実施形態における情報処理システムの機能構成を示す概略ブロック図である。同図において、情報処理システム１は、主データ記憶部１１と、予備データ記憶部１２と、閾値記憶部１３と、予備データ切替判定部２１とを具備する。
情報処理システム１は、データを記憶する様々な情報処理システムとすることができる。例えば、情報処理システム１は、コンピュータシステム、パソコン（Personal Computer；ＰＣ）、または、携帯情報端末（Personal Digital Assistant）であってもよい。
【００１６】
なお、主データ記憶部１１と、予備データ記憶部１２と、閾値記憶部１３と、予備データ切替判定部２１とは、単体の装置内に全て含まれていてもよいし、複数の装置に分かれていてもよい。例えば、主データ記憶部１１と、予備データ記憶部１２と、閾値記憶部１３とが、いずれも予備データ切替判定部２１を含む情報機器の内蔵する記憶デバイスにて実現されていてもよいし、外付けの記憶デバイスにて実現されていてもよい。
【００１７】
主データ記憶部１１は、例えばコンピュータがアプリケーションプログラムを実行する際に用いるデータなど、直接記憶対象となっているデータ（以下、「主データ」と称する）を記憶する。
予備データ記憶部１２は、主データ記憶部１１の記憶領域を区画した区画毎に使用または不使用を設定される。そして、予備データ記憶部１２は、使用との設定（すなわち、予備データ記憶部１２を使用することを示す設定）にて当該区画におけるデータの一部を主データ記憶部１１に代えて記憶する。
【００１８】
閾値記憶部１３は、予備データ記憶部１２を使用するか否かの判定に用いる閾値を記憶する。
予備データ切替判定部２１は、主データ記憶部１１の記憶領域を区画した区画毎に、閾値を用いて当該区画に応じた予備データ記憶部１２を用いるか否かを判定する。
【００１９】
このように、閾値記憶部１３は、予備データ記憶部１２を使用するか否かの判定に用いる閾値を記憶する。これにより、ハードウェア的な故障（以下、「ハード故障」と称する）が発生したか否かの判定基準を、より適切に設定し得る。
例えば、情報処理システム１のユーザは、処理を高速に行う必要性の比較的高い用途のデータに対しては、ハード故障が発生したか否かの判定基準が緩やかになるように閾値を設定しておく。当該閾値に基づいて、ハード故障が発生した場合に、情報処理システム１が、当該故障が発生したビットの記憶部を主データ記憶部１１から予備データ記憶部１２に切り替えることが期待される。この切替にて、アクセスの度にエラーの検出と訂正が続く状態を回避でき、メモリアクセスの速度の低下を防止し得る。
【００２０】
また、情報処理システム１のユーザは、処理を高速に行う必要性の比較的低い用途のデータに対しては、ハード故障が発生したか否かの判定基準が厳しくなるように閾値を設定しておく。当該閾値に基づいて予備データ切替判定部２１が判定を行うことで、実際にはハード故障が発生していないにもかかわらずハード故障が発生したと判定するおそれを低減させることができる。従って、予備データ切替判定部２１が実際にハード故障を検出した際に、既に使用可能な予備用ビットが無く対応できないおそれを低減させることができる。
【００２１】
次に、主データ記憶部１１や予備データ記憶部１２や閾値記憶部１３を実現する記憶デバイスとしてＤＤＲ（Double Data Rate）メモリを用いた場合を例に、本実施形態についてさらに詳細に説明する。
但し、本発明の適用範囲は、ＤＤＲメモリに限らない。ハード故障に起因するエラーと、ハード故障に起因しない一時的なエラー（ソフトエラー）とが発生し得る様々な記憶デバイスに対して本発明を適用し得る。
【００２２】
図２は、ＤＤＲメモリを用いた情報処理システム１におけるデータ信号の切替の例を示す説明図である。同図において、情報処理システム１は、プロセッサ１０１と、複数のＤＤＲメモリ１０４とを具備する。プロセッサ１０１は、プロセッサコア１０２と、メモリコントローラ１０３とを具備する。
【００２３】
以下で説明するＤＤＲメモリを用いた情報処理システム１では、プロセッサ１０１からＤＤＲメモリ１０４へのバスにおいて、データ幅が３２ビット、付随するＥＣＣが４ビットとなっている。但し、本発明は、プロセッサとメモリとの間のバスのデータ幅や、エラー訂正ビットの種類やビット数に依存しない。従って、プロセッサ１０１からＤＤＲメモリ１０４へのバスのデータ幅は３２ビットに限らない。また、ＥＣＣのビット数は４ビットに限らないし、ＥＣＣ以外のエラー訂正手段を用いるようにしてもよい。
【００２４】
図２では、プロセッサ１０１とＤＤＲメモリ１０４との間の接続において、主データの信号ＤＡＴＡ［７−０］〜ＤＡＴＡ［３１−２４］およびデータストローブ（Data Strobe）信号ＤＱＳ０〜ＤＱＳ３や、ＥＣＣのデータ信号ＥＣＣ＿ＤＡＴＡ［３−０］およびデータストローブ信号ＥＣＣ＿ＤＱＳといった通常のデータ信号の接続に加えて、予備用のデータ信号（ＲＳＢ＿ＤＡＴＡ［３−０］  ２１２）の接続が示されている。
なお、［］にてビット位置を示している。例えば「［７−０］」は、７番目のビットから０番目のビットまでの一連のビットを示す。
【００２５】
特定のデータビットでエラーが発生した場合に当該データビットに対するアクセスを予備用のデータ信号に切り替える機能をメモリコントローラ１０３が具備することで、ハード故障による継続的なエラーの発生を抑制することができる。
例えば、設計に起因して特定ビットで波形品質が悪くエラーが発生する場合に、当該エラーの頻発を回避することができる。
【００２６】
設計に起因するエラーとして、例えば、プロセッサとＤＤＲメモリ間のプリント基板上の配線に起因して、特定のデータビットでの信号波形の品質が悪く、装置としての環境条件下における温度変化やデバイスの特性バラつきにより発生するエラーが考えられる。
かかるエラーを回避するために、プリント基板の設計など、環境変化やデバイスの特性バラつきに十分耐性のあるハードウェアを設計することが考えられる。しかし、高容量化による多分岐接続、低電圧化や高速化が求められるＤＤＲメモリにおいて、設計段階でエラーを予見することは非常に困難である。
【００２７】
これに対し、図２に示すように、エラーが発生したデータビットを未使用とし、予備データへ切替を行うことで継続してエラーが発生する状態を回避して、安定したメモリアクセスを実現することができる。従って、予備データの範囲で再設計や修理の必要なしにエラー状態を回避することができ、この点において、製造時や設計時のリスクを低減できる。
【００２８】
図３は、ＤＤＲメモリを用いた情報処理システム１の構成例を示す概略構成図である。同図において、情報処理システム１は、プロセッサ１０１と、複数のＤＤＲメモリ１０４とを具備する。プロセッサ１０１は、プロセッサコア１０２と、メモリコントローラ１０３とを具備する。メモリコントローラ１０３は、データ送受信部２０１と、アクセス制御部２０２と、レジスタ機能部２０３と、ＥＣＣ機能部２０４と、内部バス変換部２０５と、データ選択部２０６とを具備する。
【００２９】
プロセッサ１０１は、情報機器（例えば、コンピュータ、電気機器または情報通信機器等）の中において、ソフトウェアを動作させるハードウェアである。
ここで、本発明はプロセッサの種類に依存せず、様々なプロセッサに本発明を適用可能である。例えば、プロセッサ１０１は、ＣＰＵ（Central Processing Unit、中央処理装置）であってもよいし、ＮＰＵ（Network Processing Unit、ネットワークプロセッサ。ネットワークカードに搭載されたプロセッサ）であってもよい。あるいは、プロセッサ１０１は、ＤＳＰ（Digital Signal Processor、デジタル信号処理に特化したマイクロプロセッサ）であってもよい。あるいは、プロセッサ１０１は、ＦＰＧＡ（Field-Programmable Gate Array、製造後に購入者や設計者が構成を設定可能な集積回路）のビルドインプロセッサであってもよい。
【００３０】
プロセッサコア１０２は、ソフトウェアを動作させる演算装置であり、プログラムの命令を解釈し実行する機能を有する。
メモリコントローラ１０３は、プロセッサ１０１が動作するための命令やデータを格納する周辺メモリ（例えばＤＤＲメモリ１０４）とのインタフェースを担う。
【００３１】
ＤＤＲメモリ１０４は、プロセッサ１０１の周辺において、プロセッサ１０１が動作するための命令やデータを格納する役割を担う不揮発性のメモリである。ＤＤＲメモリ１０４として、例えば、ＤＤＲ２  ＳＤＲＡＭ（Double-Data-Rate2 Synchronous Dynamic Random Access Memory）を用いてもよい。あるいは、ＤＤＲメモリ１０４として、ＤＤＲ３  ＳＤＲＡＭ（Double-Data-Rate3 Synchronous Dynamic Random Access Memory）を用いてもよい。
【００３２】
データ送受信部２０１は、データ信号の送受信を行う機能部である。一般にＤＤＲメモリのインタフェースでは、データはＤＱＳ信号（データストローブ（Data Strobe）信号）を基準に処理される。データ送受信部２０１は、接続されるメモリの構成や仕様に合わせてドライブ能力やＤＱＳに対するデータの入出力タイミングを調整する。そして、データ送受信部２０１は、ＤＤＲメモリ１０４に対するデータおよびＤＱＳ信号の出力と、ＤＤＲメモリ１０４から入力されたデータを、ＤＱＳ信号を基準にラッチする役割を担う。
【００３３】
アクセス制御部２０２は、接続されるメモリの構成や仕様に合わせてアクセスの制御タイミングを調整し、ＤＤＲメモリ１０４への、制御信号や、アドレス信号や、クロック信号の送出を担う機能部である。
レジスタ機能部２０３は、メモリコントローラ１０３における制御レジスタである。レジスタ機能部２０３は、データ送受信部２０１とアクセス制御部２０２とに対してメモリの仕様に合わせたアクセスタイミングやドライブ能力などを設定するレジスタや、ＥＣＣ機能部２０４のエラー検出状態の確認用のレジスタを有する。さらに、レジスタ機能部２０３は、データ選択部２０６がエラーの発生したデータビットの切替制御を行うための設定レジスタを有する。レジスタ制御部の各レジスタの制御は、例えばプロセッサコア１０２が行う。
【００３４】
ＥＣＣ機能部２０４は、主データにＥＣＣを付加してメモリに格納することで、主データのエラーを検出して、自動修復する機能を担う。ＥＣＣ機能部２０４は、データ読み込み時に、読み込んだデータから算出したコードと、元のコード（メモリに格納されたコード）とを照合することで、エラーを検出し、１ビットエラーに対しては訂正を行う。
【００３５】
内部バス変換部２０５は、プロセッサコア１０２とメモリコントローラ１０３との間の内部バス２１０のデータ送受信を行う機能部である。内部バス変換部２０５は、内部バス２１０を介してのプロセッサコア１０２からメモリコントローラ１０３へのアクセスに対してライトデータを取得する。また、内部バス変換部２０５は、ＤＤＲメモリ１０４からのリードデータを、内部バス２１０を介してプロセッサコア１０２へ送出する。
データ選択部２０６は、ＥＣＣ機能部２０４が検出するエラーの発生状況に従い、エラー検出されたビットへのアクセスを予備データビットに切り替える。
【００３６】
図３に示す構成では、データバス幅６４ビット（ＤＡＴＡ［６３−０］）、付随するＥＣＣが８ビット（ＥＣＣ［７−０］）となっている。また、ＤＤＲメモリ１０４のデータ幅を１６ビットとなっており、ＥＣＣ用を含む５個のメモリで１つのバンクにおける１領域を構成している。具体的には、ＤＤＲ＃１〜ＤＤＲ＃４と、ＥＣＣ＆予備用ＤＤＲ＃１とでバンク０における１領域を構成し、６４ビットの主データを記憶する。また、ＤＤＲ＃５〜ＤＤＲ＃８と、ＥＣＣ＆予備用ＤＤＲ＃２とでバンク１における１領域を構成し、６４ビットの主データを記憶する。
【００３７】
但し、本発明の適用範囲は、図３に示すものに限らない。例えば、データバス幅や、ＥＣＣのビット数や、ＤＤＲメモリのデータ幅は、図３に示すものに限らず、従って、１つのバンクの１領域を構成するＤＤＲメモリ１０４の数は図３に示す５個に限らない。また、情報処理システム１におけるバンク数は図３に示す２つに限らず３つ以上であってもよい。
【００３８】
図３に示す構成では、メモリコントローラ１０３とＤＤＲメモリ１０４との間の一般的な接続に対して、データ信号が拡張されている。具体的には、バンクにおける１領域毎に、主データ６４ビットに対して、８ビットのデータ信号（ＲＳＢ＿ＤＡＴＡ［３−０］およびＦＬＧ＿ＤＡＴＡ［３−０］）が追加されている。
この追加ビット数は、ＤＤＲメモリ１０４においてデータがバイト（８ビット）単位で１レーンとして扱われるためであり、１レーンに対して１つのＤＱＳ信号が対となり、レーン内の８ビットのデータはこのＤＱＳを基準に送受信される。拡張したデータ信号の基準用としてＤＱＳ信号（ＲＳＢ＿ＤＱＳ  ２１１）が追加されている。
【００３９】
拡張されたデータ信号８ビットのうち４ビットは、エラーが発生した場合の切替用（冗長用）として使用する予備データ信号ＲＳＢ＿ＤＡＴＡ［３−０］となっている。また、残りの４ビットは、アクセスされたアドレス領域においてＲＳＢ＿ＤＡＴＡ［３−０］が使用されているか否かを示すためのフラグ信号ＦＬＧ＿ＤＡＴＡ［３−０］となっている。
【００４０】
なお、図３に示す構成において、主データを記憶するＤＤＲ＃１〜ＤＤＲ＃８は、本発明における主データ記憶部の一例に該当する。また、予備用のデータＲＳＢ＿ＤＡＴＡ［３−０］を記憶するＥＣＣ＆予備用ＤＤＲ＃１は、本発明における予備データ記憶部の一例に該当する。
また、レジスタ機能部２０３は、予備用のデータＲＳＢ＿ＤＡＴＡ［３−０］を用いるか否かの判定に用いる閾値を記憶しており、このレジスタ機能部２０３は、本発明における閾値記憶部の一例に該当する。
【００４１】
また、データ選択部２０６は、上述したように、ＥＣＣ機能部２０４が検出するエラーの発生状況に従い、エラー検出されたビットへのアクセスを予備データビットに切り替える。すなわち、データ選択部２０６は、予備用のデータＲＳＢ＿ＤＡＴＡ［３−０］を用いるか否かの判定を行う機能部であり、本発明における予備データ切替判定部の一例に該当する。
また、５つのＤＤＲメモリ１０４で構成する各バンクにおける１領域は、本発明における主データ記憶部の記憶領域の区画の一例に該当する。
【００４２】
次に、図３に示すＤＤＲメモリを用いた情報処理システム１の動作について説明する。
メモリコントローラ１０３は、ＤＤＲメモリ１０４に対するイニシャルシーケンスにおいて、主データのデータビットやＥＣＣのデータビットのタイミング調整や初期化に加えて、拡張されたデータビットに対してもタイミング調整および初期化を行う。
【００４３】
まず、通常時（エラー発生のない状態）における情報処理システム１の動作について説明する。
通常時において、データ選択部２０６は、ライト（Ｗｒｉｔｅ、メモリへの書込）時、リード（Ｒｅａｄ、メモリからの読出）時共に、拡張されたデータビットを使用しない。
プロセッサコア１０２からＤＤＲメモリ１０４へのライトアクセス時、データ選択部２０６は、内部バス変換部２０５からのデータ（ＳＥＬ＿ＤＡＴＡ［６３−０］  ２０９）を通常データ（ＤＥＦ＿ＤＡＴＡ［６３−０］  ２０８）としてＥＣＣ機能部に入力する。ＥＣＣ機能部２０４は、通常データのＥＣＣを算出し、算出されたＥＣＣ８ビットと通常データ６４ビットをデータ送受信部２０１に入力する。
【００４４】
このタイミングにおいて、プロセッサコアが指定したメモリのアドレス領域に対して、アクセス制御部２０２が制御信号でライトコマンドを入力し、データ送受信部２０１がデータ６４ビットとＥＣＣデータ８ビットとＤＱＳ信号とをメモリに入力する。メモリに入力されたデータは、指定のアドレス領域に格納される。この時、拡張されたデータビットに対しては、ＲＳＢ＿ＤＱＳに合わせてＡＬＬ−Ｚｅｒｏデータ（全ビット０のデータ）が出力され、ＤＤＲメモリ１０４に格納される。
【００４５】
図４は、ＤＤＲメモリ１０４の記憶領域におけるデータ構成例を示すデータ構成図である。同図では、情報処理システム１がバンク毎に複数領域分のＤＤＲメモリ１０４を具備する場合の例を示している。図３で説明したＤＤＲ＃１〜ＤＤＲ＃４およびＥＣＣ＆予備用ＤＤＲ＃１の場合と同様、１つの領域は５つのＤＤＲメモリにて構成される。
【００４６】
ＣＳ０のバンクの領域Ａを指定してライトされた通常データ６４ビットは、データを扱うＤＤＲ＃１〜４にそれぞれ格納される。ＥＣＣデータ８ビットは、ＥＣＣ予備用ＤＤＲ＃１に格納され、同メモリが扱う拡張データの領域にはＡＬＬ−Ｚｅｒｏが格納される。
プロセッサコア１０２からメモリへのリードアクセス時、アクセス制御部２０２がＤＤＲメモリ１０４に対してリードコマンドを入力する。ＤＤＲメモリ１０４は、メモリコントローラ１０３に対して、データ６４ビットとＥＣＣ８ビットと拡張データ８ビット（ＲＳＢ＿ＤＡＴＡ［３−０］およびＦＬＧ＿ＤＡＴＡ［３−０］）と各データに対となるＤＱＳを入力する。
【００４７】
メモリコントローラ１０３のデータ送受信部２０１は、ＤＱＳを基準にデータ６４ビットとＥＣＣデータ８ビットと拡張データ８ビットとをラッチして、ＥＣＣ機能部２０４に入力する。ＥＣＣ機能部２０４は、拡張データ８ビットのフラグデータ（ＦＬＧ［３−０］  ２１４）の値を確認する。前述したように、通常時にはフラグデータに０（Ｚｅｒｏ）が格納されている。
【００４８】
フラグデータが０（Ｚｅｒｏ）の場合、ＥＣＣ機能部２０４は、通常データ６４ビットに対してＥＣＣ算出を行い、ＤＤＲメモリ１０４からリードされたＥＣＣデータ８ビットと比較を行う。通常時（エラーがない状態）においては、比較したＥＣＣは一致し、ＥＣＣ機能部は、訂正なくデータ６４ビットと拡張データ８ビット（ＲＳＢ［３−０］、ＦＬＧ［３−０］）とをデータ選択部２０６に入力する。
【００４９】
データ選択部２０６は、ＥＣＣ機能部２０４と同じく入力された拡張データ８ビットのフラグデータ（ＦＬＧ［３−０］  ２１４）の値を確認する。フラグデータが０の場合、予備データ（ＲＳＢ［３−０］  ２０７）の使用がないことを示している。そこで、データ選択部２０６は、データ６４ビットを内部バス変換部２０５に入力する。内部バス変換部は、データ選択部２０６からのデータ６４ビット（ＳＥＬ＿ＤＡＴＡ［６３−０］）をプロセッサコア１０２へ出力する。
【００５０】
上記の通り、通常時（エラー発生のない状態）においては、プロセッサコア１０２からのデータ（主データ）６４ビットがＤＤＲメモリ１０４の記憶領域にライトされ、また、主データ６４ビットがプロセッサ１０１にリードされる。この通常時は、内部の論理的なデータ６４ビットとＤＤＲメモリに対する物理的なデータ６４ビットとが一致した状態である。
【００５１】
図５は、通常時におけるデータ選択部２０６前後のデータ接続を示す説明図である。通常時は、同図に示すようにＤＡＴＡ［６３−０］が主データの格納領域として用いられ、予備データＲＳＢ＿ＤＡＴＡ［３−０］とフラグデータＦＬＧ＿ＤＡＴＡ［３−０］の値は０になっている。
【００５２】
次に、エラー発生時の情報処理システム１の動作について説明する。
ライト時にＤＤＲメモリ１０４が記憶した主データ６４ビットのうち１ビットが誤っていた場合、また、リード時にデータ送受信部２０１がリードしたデータのうち１ビットが誤っていた場合、いずれもリード時において、ＥＣＣ機能部２０４がエラーを検出する。
ＥＣＣ機能部２０４は、ＥＣＣ機能部２０４自らが主データ６４ビットから算出したＥＣＣと、ＤＤＲメモリ１０４からリードしたＥＣＣデータとに不一致が発生することでエラーを検出する。ＥＣＣデータの不一致ビットから誤りを起こしているビットを特定することが可能であり、ＥＣＣ機能部２０４は、誤りビットの訂正を行う。
【００５３】
また、レジスタ機能部２０３は、エラーを起こしたデータビットを予備データに切り替えるか否かの判定のために、各データビットで発生したエラーの回数を記憶するためのエラー発生回数レジスタを有する。
図６は、レジスタ機能部２０３がデータビット毎のエラーの回数を記憶するエラーカウント値データの構成例を示すデータ構成図である。同図に示すように、レジスタ機能部２０３は、バンクの領域毎に、データ６４ビットの各ビットについてエラーの回数（エラーカウント値）を記憶している。各エラーカウント値の初期値は０に設定されている。
何れかのビットにエラーが発生した場合、該当するビットのエラーカウント値をインクリメントする（値に１を加える）。
【００５４】
なお、レジスタ機能部２０３がエラーをカウントする単位は領域毎に限らない。例えば、レジスタ機能部２０３が、エラーが発生したビットをバンク毎に切替可能とするために、バンク毎に各ビットのエラー発生回数をカウントするようにしてもよい。この場合、レジスタ機能部２０３は、バンク数分×ビット数分のレジスタを有し、バンク毎かつビット毎にエラー発生回数をカウントする。
【００５５】
また、レジスタ機能部２０３には、エラーが発生したデータビットへのアクセスを予備データに切り替えるか否か判断する閾値を記憶するためのエラー閾値レジスタを有する。
あるビットでのエラー発生回数がエラー閾値レジスタに設定された値を超えた場合、データ選択部２０６は、予備データへの切替動作を行う。ユーザは、エラー閾値レジスタの値を変更することで、予備データへの切替を行うエラー発生回数を任意に変更できる。
【００５６】
次に、情報処理システム１が予備データへの切替を行う動作について説明する。
例として、バンク０（ＣＳ０のバンク）の領域Ａ（ＤＤＲ＃１〜＃４およびＥＣＣ＆予備用ＤＤＲ＃１にて構成する領域）に対するアクセスにおいてデータビット３１でのエラー発生回数が閾値を超えた場合について説明する。ＥＣＣ機能部２０４は、データビット３１のアクセスが予備データに切り替えられたことを示すため、レジスタ機能部２０３のデータ切替フラグレジスタに対して値の設定を行う。
【００５７】
図７は、レジスタ機能部２０３が記憶する予備データアサインレジスタのデータ構成例を示すデータ構成図である。
レジスタ機能部２０３は、バンクの領域毎、かつ、予備データ４ビットの各々に対して、切替元となるデータビットの値を示すレジスタとして予備データアサインレジスタを有する。また、レジスタ機能部２０３は、予備データが有効となったことを示すためのレジスタとして、予備データイネーブルレジスタを有する。
【００５８】
この予備データイネーブルレジスタは、バンクの領域毎、かつ、予備データ４ビットの各々に対して設けられているフラグである。当該レジスタ（イネーブルビット）の初期値は、該当する予備データの切替が無いことを示す０に設定されている。イネーブルビットに１を設定することで、該当する予備データの切替が有効となったことを示す。
【００５９】
バンク０（ＣＳ０）の領域Ａのデータビット３１でエラー発生回数が閾値レジスタの値を超えた例では、ＥＣＣ機能部２０４は、バンク０の領域Ａに対応する予備データ＃０アサインレジスタに３１（０ｘ１Ｆ）を設定する。また、ＥＣＣ機能部２０４は、バンク０の領域Ａに対応する予備データイネーブルレジスタの予備データ０（ＲＳＢ［０］  ２０７）のイネーブルビットに１を設定する。
予備データイネーブルレジスタに１が設定されることで、メモリコントローラ１０３は、以降のアクセスにおける内部の論理的なデータビット３１に対するＣＳ０のバンクのメモリの物理的な接続を予備データ０に切り替える。
【００６０】
切替後のライト動作とリード動作について、説明する。
プロセッサコア１０２からＤＤＲメモリ１０４へのライトアクセス時、データ選択部２０６は、レジスタ機能部２０３の予備データイネーブルレジスタと予備データアサインレジスタの状態を確認する。そして、データ選択部２０６は、内部バス変換部２０５からのデータ（ＳＥＬ＿ＤＡＴＡ［６３−０］  ２０９）におけるデータビット３１の値を予備データ０に代入してＥＣＣ機能部に入力する。
それ以外のデータビットについては、通常データ（ＤＡＴＡ［６３−３２：３０−０］  ２０８）としてＥＣＣ機能部に入力する。また、アクセス対象となるメモリのエリアに対して予備データ０が有効となっていることを示す情報として、フラグデータ０（ＦＬＧ［０］  ２１４）の値を１として、ＥＣＣ機能部に入力する。
【００６１】
図８は、切替後におけるデータ選択部２０６前後のデータ接続を示す説明図である。
ＥＣＣ機能部２０４は、データ選択部２０６と同様にレジスタ機能部２０３の予備データイネーブルレジスタと予備データアサインレジスタの状態を確認する。そして、ＥＣＣ機能部２０４は、データビット３１の代わりに予備データ０を使用してＥＣＣの算出を行い、算出したＥＣＣデータ８ビットをデータ送受信部２０１に入力する。データ送受信部２０１は、通常データ６４ビットと、予備データ４ビット（ＲＳＢ＿ＤＡＴＡ［３−０］  ２１２）と、フラグデータ（ＦＬＧ＿ＤＡＴＡ［３−０］  ２１３）とをＤＤＲメモリ１０４に入力する。ＤＤＲメモリ１０４に入力された各データは、指定のアドレス領域に格納される。
【００６２】
図９は、切替後のＤＤＲメモリ１０４の記憶領域におけるデータ値の例を示す説明図である。
同図の領域Ｂには、データビット３１を予備データ０に切り替えた例を示している。データビット３１のデータが予備データ０を扱うビットＲＳＢ＿ＤＡＴＡ［０］に格納されている。また、予備データ０に対応するフラグＦＬＧ＿ＤＡＴＡ［０］の値として、予備データが使用されていることを示す値１が格納されている。
他のデータビットでのエラー発生回数が閾値を超えた場合には、残りの予備データ１〜３を同様の手順で使用する。
【００６３】
図９の領域Ｃには、データビット３１に加えてデータビット４８にて予備データを使用した場合の例を示している。前述の通り、バンクの領域毎にエラー発生時の予備データへの切替を制御可能であり、領域Ｃでは、領域Ｄと別のデータビットに予備データを割り当て可能である。
また、領域Ｅには、データビット１７が予備データに切り替えられた場合の例を示している。
【００６４】
プロセッサコア１０２からＤＤＲメモリ１０４へのリードアクセス時、メモリコントローラ１０３は、リードした領域のデータに予備データが使用されているかどうかを判別する。前述の通り、エラー発生状況に応じて予備データへの切替を行うため、ＤＤＲメモリ１０４には、領域毎に通常のデータ６４ビットが使用されている箇所と、予備データに切り替わりが発生した箇所とが混在する。そして、レジスタ機能部２０３は、予備データイネーブルレジスタのフラグデータにて、当該判別のための値を記憶している。
【００６５】
メモリコントローラ１０３がレジスタ機能部２０３の予備データイネーブルレジスタから読み出したフラグデータの値が０の場合、通常データのみ使用されていることを示しており、その処理は前述の通りである。
一方、読み出したフラグデータに１が設定されていた場合、予備データが使用されていることを示している。この場合、ＥＣＣ機能部２０４は、レジスタ機能部２０３の予備データアサインレジスタの値にて、予備データがどのデータビットのものかを確認する。そして、ＥＣＣ機能部２０４は、予備データを使用したデータ６４ビットに対してＥＣＣ算出を行い、ＤＤＲメモリ１０４からリードされたＥＣＣデータ８ビットと比較を行う。また、データ選択部２０６は、予備データの値を対応するデータビットの値としたデータ６４ビット（ＳＥＬ＿ＤＡＴＡ［６３−０］  ２０９）にて、内部バス変換部２０５とのデータのやり取りを行う。
【００６６】
以上の手順により、情報処理システム１では、ＤＤＲメモリ１０４へのアクセスにおいて、あるビットに閾値以上のエラーが発生した場合に、エラーの発生したデータビットを予備データに切り替える。これにより、同一ビットでエラーが頻発する状態を回避し得る。
また、レジスタ機能部２０３の予備データ切替用のレジスタについて、プロセッサコア１０２から設定変更可能である。例えば、製造不良などの原因で、あるデータビットの接続が切れていることが判明している場合、ユーザがソフトウェアのパラメータを予め設定しておくなどして起動時にレジスタを初期設定する。これにより、メモリアクセスの初期段階から不良を回避することができる。
【００６７】
なお、以上では、メモリのデータバスが６４ビット、接続されるメモリのデータ幅が１６ビットの場合について説明したが、上述したように、本発明の適用範囲はこれに限らない。メモリバス３２ビットやデータ幅８ビットのメモリ、さらにバンク数の多い構成の場合にも、上記の例と同様に本発明を適用可能である。
また、以上では、ＥＣＣ機能部２０４がデータ６４ビットに対してＥＣＣを行う場合について説明したが、ＥＣＣ機能部２０４が、拡張されたデータに対してもＥＣＣによるエラー訂正ないしエラー検出を行うようにしてもよい。
【００６８】
以上のように、情報処理システム１では、エラーが発生したデータビットを未使用とし、予備データへ切替を行うことで、エラーが頻発する状態を回避して、安定したメモリアクセスの状態を確保し得る。これにより、複数ビットでの同時エラー（マルチビットエラー）の発生や、メモリアクセスへのエラーによる負荷（速度低下）を防止でき、プロセッサを実装する装置の動作が阻害されるリスクを低減することが出来る。
【００６９】
また、設計や製造時に、あるビットで波形品質の劣化や接続不良によるエラーが発生しても、予備データの範囲で再設計や修理の必要なしにエラー状態を回避することが出来る。
また、既存のメモリインタフェースを用いて、信号追加とメモリコントローラへの機能追加にて本発明を適用することが可能である。従って、メモリの多重化によるメモリ数の増加や周辺回路の追加の必要無しに本発明を適用することが出来る。
【００７０】
また、レジスタ機能部２０３が、予備データを使用するか否かの判定に用いる閾値を記憶しておくことで、図１を参照して説明したように、ハード故障が発生したか否かの判定基準を、より適切に設定し得る。
例えば、情報処理システム１のユーザは、処理を高速に行う必要性の比較的高い用途のデータに対しては、ハード故障が発生したか否かの判定基準が緩やかになるように閾値を設定しておく。ハード故障が発生した場合に、情報処理システム１は、当該閾値に基づいて、当該故障が発生したビットの記憶場所を、主データを記憶するＤＤＲメモリ１０４（ＤＤＲ＃１〜ＤＤＲ＃８）から、予備データを記憶するＤＤＲメモリ１０４（ＥＣＣ＆予備用ＤＤＲ＃１〜ＥＣＣ＆予備用ＤＤＲ＃２）に切り替える。この切替にて、アクセスの度にエラーの検出と訂正が続く状態を回避でき、メモリアクセスの速度の低下を防止し得る。
【００７１】
また、情報処理システム１のユーザは、処理を高速に行う必要性の比較的低い用途のデータに対しては、ハード故障が発生したか否かの判定基準が厳しくなるように閾値を設定しておく。当該閾値に基づいて情報処理システム１（特に、データ選択部２０６）がデータの切替を行うことで、実際にはハード故障が発生していないにもかかわらずハード故障が発生したと判定するおそれを低減させることができる。従って、情報処理システム１が実際にハード故障を検出した際に、既に使用可能な予備用ビットが無く対応できないおそれを低減させることができる。
【００７２】
また、レジスタ機能部２０３が、ＤＤＲメモリ１０４の記憶領域の区間毎（バンクの領域毎）に、予備データを使用するか否かの判定に用いる閾値を記憶しておく。そして、情報処理システム１（特に、データ選択部２０６）は、区画毎に、当該区画に応じた閾値を用いて、当該区画に応じた、予備データを記憶するＤＤＲメモリ１０４（ＥＣＣ＆予備用ＤＤＲ＃１〜ＥＣＣ＆予備用ＤＤＲ＃２）を用いるか否かを判定する。
これにより、ＤＤＲメモリ１０４が複数のアプリケーションプログラムに対応するデータを記憶している場合など、処理を高速に行う必要性の異なるデータを記憶している場合でも、処理を高速に行う必要性に応じてデータ毎に、ハード故障が発生したか否かの判定基準を、より適切に設定し得る。
【００７３】
なお、レジスタ機能部２０３は、不揮発性の記憶デバイスを用いて実現されていてもよいし、揮発性の記憶デバイスを用いて実現されていてもよい。レジスタ機能部２０３が揮発性の記憶デバイスを用いて実現されている場合、不揮発性のメモリを用いてビットエラーの切替を管理するようにしてもよい。これにより、情報処理システム１の再起動が発生するケースにおいて、起動後速やかに予備データへの切替を行うことができ、エラーの頻発を防止できる。また、情報処理システム１の再起動時に、既に発生しているハード故障に応じて予備データへの切替を行う前に新たなハード故障が発生し、ＥＣＣでのエラー訂正不可能となって情報処理システム１の動作を維持できなくなる事態を防止し得る。
【００７４】
図１０は、本実施形態の一変形例における情報処理システムの構成例を示す概略構成図である。同図において、情報処理システム２は、プロセッサ３０１と、複数のＤＤＲメモリ１０４と、不揮発性メモリ７０２とを具備する。プロセッサ３０１は、プロセッサコア１０２と、メモリコントローラ１０３とを具備する。メモリコントローラ１０３は、データ送受信部２０１と、アクセス制御部２０２と、レジスタ機能部２０３と、ＥＣＣ機能部２０４と、内部バス変換部２０５と、データ選択部２０６と、不揮発性メモリコントローラ７０１とを具備する。
同図において、図１の各部に対応して同様の機能を有する部分には、同一の符号（１０２〜１０４、２０１〜２０６）を付し、説明を省略する。
【００７５】
不揮発性メモリ７０２は、プロセッサコア１０２が動作するために必要なプログラムや設定を格納するメモリである。特に、不揮発性メモリ７０２は、ビットエラーの切替のためのデータを記憶する。
不揮発性メモリコントローラ７０１は、プロセッサコア１０２と、不揮発性メモリ７０２とのインタフェースを担うことで、不揮発性メモリ７０２を用いてビットエラーの切替を管理する。不揮発性メモリコントローラ７０１は、例えば、情報処理システム１が具備するＲＯＭ（Read Only Memory）コントローラを機能拡張することで実現される。
【００７６】
シングルビットエラーの発生時、プロセッサコア１０２は、不揮発性メモリコントローラ７０１を介して、不揮発性メモリ７０２にエラーの発生状況を格納する。
情報処理システム２の再起動時において、プロセッサコア１０２が不揮発性メモリ７０２から再起動前のエラー発生情報をリードし、エラーの発生していたビットを予備データに切り替える設定をメモリコントローラ１０３に対して行う。これにより、再起動後に同一ビットでエラーが発生することを防止し得る。
【００７７】
なお、予備データ切替判定部２１や、プロセッサ１０１や、プロセッサ３０１の全部または一部の機能を実現するためのプログラムをコンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録されたプログラムをコンピュータシステムに読み込ませ、実行することで各部の処理を行ってもよい。なお、ここでいう「コンピュータシステム」とは、ＯＳや周辺機器等のハードウェアを含むものとする。
また、「コンピュータシステム」は、ＷＷＷシステムを利用している場合であれば、ホームページ提供環境（あるいは表示環境）も含むものとする。
また、「コンピュータ読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ＲＯＭ、ＣＤ−ＲＯＭ等の可搬媒体、コンピュータシステムに内蔵されるハードディスク等の記憶装置のことをいう。さらに「コンピュータ読み取り可能な記録媒体」とは、インターネット等のネットワークや電話回線等の通信回線を介してプログラムを送信する場合の通信線のように、短時間の間、動的にプログラムを保持するもの、その場合のサーバやクライアントとなるコンピュータシステム内部の揮発性メモリのように、一定時間プログラムを保持しているものも含むものとする。また上記プログラムは、前述した機能の一部を実現するためのものであっても良く、さらに前述した機能をコンピュータシステムにすでに記録されているプログラムとの組み合わせで実現できるものであっても良い。
【００７８】
以上、本発明の実施形態を図面を参照して詳述してきたが、具体的な構成はこの実施形態に限られるものではなく、この発明の要旨を逸脱しない範囲の設計変更等も含まれる。
【符号の説明】
【００７９】
１  情報処理システム
１１  主データ記憶部
１２  予備データ記憶部
１３  閾値記憶部
２１  予備データ切替判定部
１０１、３０１  プロセッサ
１０２  プロセッサコア
１０３  メモリコントローラ
１０４  ＤＤＲメモリ
２０１  データ送受信部
２０２  アクセス制御部
２０３  レジスタ機能部
２０４  ＥＣＣ機能部
２０５  内部バス変換部
２０６  データ選択部
７０１  不揮発性メモリコントローラ
７０２  不揮発性メモリ
【図１】
2014016925.tif 000003
【図２】
2014016925.tif 000004
【図３】
2014016925.tif 000005
【図４】
2014016925.tif 000006
【図５】
2014016925.tif 000007
【図６】
2014016925.tif 000008
【図７】
2014016925.tif 000009
【図８】
2014016925.tif 000010
【図９】
2014016925.tif 000011
【図１０】
2014016925.tif 000012