(58)【調査した分野】(Int.Cl.,DB名)
複数のビットを包含するメモリにおいて、論理的に値が固定されたビットである論理固定ビットを識別する識別子と、障害により値が前記論理固定ビットが示す値に固定されたビットである障害ビットを識別する識別子と、を関連付けたビット入れ替え情報を記憶する入れ替え情報記憶手段と、
前記ビット入れ替え情報に基づき、前記論理固定ビットと前記障害ビットとを入れ替えてから、前記メモリへのアクセスを処理するアクセス制御手段と、
を備えるメモリアクセス制御装置。
前記登録手段は、特定の前記障害ビットに関して、前記障害が発生した回数をカウントし、前記回数が閾値に到達したときに、前記特定の障害ビットに関する前記ビット入れ替え情報を、前記入れ替え情報記憶手段に登録する、
請求項1または2に記載のメモリアクセス制御装置。
前記障害ビットが検出される前に1以上の前記論理固定ビットを識別する識別子を前記論理固定ビットが示す値と関連付けて記憶した前記記憶手段に対して、前記障害ビットを検出したのち、当該障害ビットが示す値と等しい値を示す、前記記憶域に記憶された何れかの前記論理固定ビットを選択して、当該障害ビットを識別する識別子と当該論理固定ビットを識別する識別子とを関連付けて、前記ビット入れ替え情報として登録する、
請求項7に記載のメモリアクセス制御方法。
複数のビットを包含するメモリにおいて、論理的に値が固定されたビットである論理固定ビットを識別する識別子と、障害により値が前記論理固定ビットが示す値に固定されたビットである障害ビットを識別する識別子と、を関連付けたビット入れ替え情報が記憶されている記憶手段を参照することにより、前記ビット入れ替え情報に基づき、前記論理固定ビットと前記障害ビットとを入れ替えてから、前記メモリへのアクセスを処理するアクセス制御処理
をコンピュータに実行させるメモリアクセス制御プログラム。
前記障害ビットが検出される前に1以上の前記論理固定ビットを識別する識別子を前記論理固定ビットが示す値と関連付けて記憶した前記記憶手段に対して、前記障害ビットを検出して、当該障害ビットが示す値と等しい値を示す、前記記憶域に記憶された何れかの前記論理固定ビットを選択して、当該障害ビットを識別する識別子と当該論理固定ビットを識別する識別子とを関連付けて、前記ビット入れ替え情報として登録する登録処理
をコンピュータに実行させる請求項9に記載のメモリアクセス制御プログラム。
【背景技術】
【0002】
DRAM(Dynamic Random Access Memory) やSRAM(Static Random Access Memory)等の半導体メモリを含む回路においては、α 線や中性子線により発生するソフトエラーに対応するため、一般的に、1ビットエラーを訂正し2ビットエラーを検出するECC(Error Checking and Correcting)回路が設けられている。
【0003】
また、ソフトエラー以外にも、LSI(Large Scale Integration)製造不良あるいは経年劣化等により、メモリが故障した1ビットエラーが発生する場合がある。メモリが故障した1ビットエラーは、一時的で復旧可能なソフトエラーとは異なり、復旧することがない固定障害として扱われる。係る固定障害による1ビットエラーは、ECC回路により訂正されるものの、常に1ビットエラーが発生している状態となっているため、ソフトエラーが併発した場合は2ビットエラーに発展する。特にシステム構成上重要な役割を担っているメモリにおいて2ビットエラーが発生した場合は、システムが停止する可能性がある。したがって、メモリの信頼性を向上させる技術に対する期待が高まってきている。
【0004】
上述した技術に関連する技術として、特許文献1には、ECCデータワード内におけるデータビットごとに障害の発生回数をカウントし、発生回数が閾値を超えた場合に予備のメモリチップと交換し、その後は、予備のメモリチップと並列に障害メモリチップへのデータ書き込みを継続するようにしたシステムが開示されている。
【0005】
また、特許文献2には、複数のメモリセルアレイブロックにおけるデータ入出力線群の各入出力線と、係るメモリセルアレイブロックに対応する複数の誤り検出及び訂正系のデータ入出力線群の各入出力線との1対1の対応関係を、プログラム素子を有するデータ入出力線アドレス変換手段によりプログラム可能とした装置が開示されている。
【発明を実施するための形態】
【0015】
以下、本願発明の実施の形態について図面を参照して詳細に説明する。
【0016】
<第1の実施形態>
図1は第1の実施形態のメモリアクセス制御システム1の構成を概念的に示すブロック図である。本実施形態のメモリアクセス制御システム1は、メモリアクセス制御装置10、及び、メモリ20を有する。メモリアクセス制御装置10は、中央処理装置(不図示)から受信したメモリアクセス入力情報に従ってメモリ20へアクセスし、アクセスした結果をメモリアクセス出力情報として、中央処理装置へ送信する。メモリ20は、1以上のRAMモジュールを有し、複数のビットを包含するメモリである。メモリ20は、主記憶メモリである場合もあれば、キャッシュメモリである場合もある。尚、メモリアクセス制御システム1は、1つの情報処理装置に内蔵される場合もある。
【0017】
メモリアクセス制御装置10は、入れ替え情報記憶部11、アクセス制御部12、登録部13、障害情報記憶部14、及び、エラー訂正部15を備えている。アクセス制御部12、登録部13、及び、エラー訂正部15は、電子回路の場合もあれば、コンピュータプログラムとそのコンピュータプログラムに従って動作するプロセッサによって実現される場合もある。入れ替え情報記憶部11、及び、障害情報記憶部14は、電子回路、あるいは、コンピュータプログラムとそのコンピュータプログラムに従って動作するプロセッサによりアクセス制御される、電子メモリ等の記憶デバイスである。
【0018】
入れ替え情報記憶部11は、ビット入れ替え情報110を記憶している。ビット入れ替え情報110の構成例を
図4に示す。ビット入れ替え情報110における論理固定ビットは、メモリ20において、値が論理的に“0”あるいは“1”のいずれかに固定されていることが判明しているビットである。ビット入れ替え情報110における障害ビットは、メモリ20において固定障害が発生したビットである。ビット入れ替え情報110は、論理固定ビットが示す値と、当該論理固定ビットを識別可能なビット位置と、障害ビットを識別可能なビット位置と、を関連付けたレコードを包含している。
【0019】
ビット入れ替え情報110における論理固定ビットに関する値及びビット位置は、メモリアクセス制御システム1のシステム管理者により事前に登録されている。障害ビットは、メモリアクセス制御システム1の運用中に障害が発生した際に、登録部13により登録される。
図4に示す例の場合、ビット入れ替え情報110は、論理的に“0”に固定されたbit2と、障害により“0”に固定されたbit3とを関連付けている。尚、ビット入れ替え情報110は、論理的に“1”に固定されたbit6、及び、論理的に“0”に固定されたbit8については、障害ビットを関連付けていない。
【0020】
アクセス制御部12は、メモリアクセス入力情報に従ってメモリ20へアクセスする際に、ビット入れ替え情報110を参照する。そして、アクセス制御部12は、メモリ20におけるアクセス先のビットが、ビット入れ替え情報110における障害ビットとして何れかのレコードに登録されている場合は、当該レコードが示す論理固定ビットと障害ビットとを入れ替えて、メモリ20へアクセスする。
【0021】
ビット入れ替え情報110が
図4に例示する情報である場合に、アクセス制御部12が行うビット入れ替え動作の詳細を
図5に示す。アクセス制御部12は、メモリ20に対する書き込みアクセスの場合、メモリアクセス入力情報に包含されるメモリ20への入力データ120を入手する。
図5に示す例では、メモリ20への入力データ120が示す値は“101101000”(内1ビットがパリティビット)である。アクセス制御部12は、ビット入れ替え情報110に基づき、論理的に“0”に固定された論理固定ビットであるbit2と、障害により“0”に固定されたbit3とを入れ替えて、メモリ20に格納されるデータ121として、メモリ20への書き込みを行う。このとき、メモリ20に格納されるデータ121が示す値は、“110101000”(内1ビットがパリティビット)となる。
【0022】
アクセス制御部12は、メモリ20からの読み出しアクセスの場合、ビット入れ替え情報110に基づき、メモリ20から読み出したメモリ20に格納されるデータ121におけるbit2とbit3とを入れ替えて、エラー訂正部15への入力データ122として、メモリ20から読み出す。このとき、エラー訂正部15への入力データ122が示す値は、“101101000”(内1ビットがパリティビット)となり、元々のデータであるメモリ20への入力データ120が示す値と等しくなる。アクセス制御部12は、エラー訂正部15への入力データ122を、エラー訂正部15へ入力する。
【0023】
エラー訂正部15は、ECC回路150を備えている。ECC回路150は、アクセス制御部12がメモリ20から読み出したデータについて、1ビットエラーを訂正し、2ビットエラーを検出する。エラー訂正部15が行うエラー訂正動作を
図6に示す。エラー訂正部15は、アクセス制御部12がメモリ20から読み出したエラー訂正前入力データ151を入手する。このとき、メモリ20におけるbit3には障害が発生しており、エラー訂正前入力データ151におけるbit3が示す値は、本来の値から反転しているものとする。ECC回路150は、エラー訂正前入力データ151に対して1ビットエラー訂正処理を行うことにより、bit3が示す値を“0”から“1”に訂正したエラー訂正後出力データ152を出力する。エラー訂正部15は、エラー訂正前入力データ151、及び、エラー訂正後出力データ152を、登録部13へ入力する。エラー訂正部15は、また、エラー訂正後出力データ152をメモリアクセス出力情報として、中央処理装置に送信する。
【0024】
障害情報記憶部14は、メモリ20において発生した障害を管理する情報である障害情報140を記憶している。障害情報140の構成例を
図7に示す。障害情報140におけるビット位置の項目は、メモリ20において障害が発生した障害ビットを識別する情報である。障害情報140における故障値の項目は、当該故障ビットが示す値である。例えば、当該故障ビットにおいて値が“0”に固定される固定障害が発生している場合、係る故障値が示す値は“0”となる。
【0025】
障害情報140における検出回数の項目は、当該故障ビットが示す値が当該故障値となる障害が発生した回数である。障害情報140における閾値の項目は、当該故障ビットにおいて固定障害が発生していることを登録部13が判定する際の基準となる、検出回数に関する閾値である。
図7に示す例の場合、係る閾値は“10”に設定されているが、閾値は10以外の値であってもよい。障害情報140における故障判定の項目は、当該故障ビットにおいて固定障害が発生していることを示す情報であり、係る固定障害が発生している場合は、登録部13により“1”に設定される。障害情報140は、ビット位置、故障値、検出回数、閾値、及び、故障判定に係る各項目を関連付けたレコードを包含している。
【0026】
登録部13は、エラー訂正部15から入力された、エラー訂正前入力データ151、及び、エラー訂正後出力データ152について、ビット位置が同じビット同士で、例えば排他的論理和を算出するなどにより、値を比較する。登録部13は、この比較の結果、何れかのビットに関して値が異なる場合、当該ビットにおいて障害が発生していると判定して、障害情報140を参照する。登録部13は、当該ビットがエラー訂正前入力データ151における値であるレコードが既に障害情報140に登録されている場合、当該レコードにおける検出回数が示す値に1を加算する。登録部13は、当該ビットがエラー訂正前入力データ151における値であるレコードが障害情報140に登録されていない場合、係る障害の内容を示すレコードを、障害情報140に新たに登録する。
【0027】
登録部13は、上述した処理により検出回数が示す値を更新したレコードについて、係る検出回数が示す値が、当該レコードにおける閾値に達した場合、当該故障ビットにおいて固定障害が発生していると判定して、故障判定が示す値を1に設定する。そして、登録部13は、ビット入れ替え情報110を参照して、論理固定ビットが示す値が当該故障ビットが示す値と等しく、かつ、障害ビットが関連付けされていないレコードをサーチする。登録部13は、1以上のレコードがヒットした場合、ヒットしたレコードの何れかを所定の基準に基づいて選択し、当該レコードにおける障害ビットとして、当該故障ビットを設定する。登録部13が当該レコードを選択する基準としては、最初にヒットしたレコードを選択するようにしてもよいし、その他の基準であってもよい。登録部13は、ヒットしたレコードが存在しない場合は、ビット入れ替えにより障害を隠蔽することができないことを、メモリアクセス制御システム1を管理するシステム管理者へ通知する。
【0028】
次に
図2乃至3のフローチャートを参照して、本実施形態に係るメモリアクセス制御システム1の動作(処理)について詳細に説明する。
【0029】
図2は、メモリアクセス制御装置10がビット入れ替え情報110を登録する動作を示すフローチャートである。
【0030】
登録部13は、エラー訂正前入力データ151と、エラー訂正後出力データ152とを比較する(ステップS101)。比較結果が一致している場合(ステップS102でYes)、全体の処理は終了する。比較結果が一致していない場合(ステップS102でNo)、登録部13は、障害情報140を参照し、比較結果が一致していないビットに関するレコードであって、故障値がエラー訂正前の当該ビットが示す値と等しいレコードが登録されているかどうかを確認する(ステップS103)。レコードが登録されている場合(ステップS104でYes)、登録部13は、当該レコードにおける検出回数を1加算する(ステップS105)。レコードが登録されていない場合(ステップS104でNo)、登録部13は、検出した障害の内容を示すレコードを新たに登録する(ステップS106)。
【0031】
障害情報140において、当該レコードにおける検出回数が閾値に達していない場合(ステップS107でNo)、全体の処理は終了する。当該レコードにおける検出回数が閾値に達した場合(ステップS107でYes)、登録部13は、当該レコードにおける故障判定を“1”に設定したのち、ビット入れ替え情報110を参照し、論理固定ビットにおける値が故障値と等しく、かつ、障害ビットが登録されていないレコードが存在するかどうかを確認する(ステップS108)。ヒットしたレコードが少なくとも1以上存在する場合(ステップS109でYes)、登録部13は、ヒットしたレコードの何れかに、検出した障害ビットを登録し(ステップS110)、全体の処理は終了する。ヒットしたレコードが1つも存在しない場合(ステップS109でNo)、登録部13は、ビット入れ替えにより障害を隠蔽することができないことを、システム管理者へ通知し(ステップS111)、全体の処理は終了する。
【0032】
図3は、メモリアクセス制御装置10がビット入れ替えによるメモリ20へのアクセス制御を行う動作を示すフローチャートである。
【0033】
アクセス制御部12は、メモリアクセス入力情報により指定された、メモリ20へのアクセスビットに関するレコードが、ビット入れ替え情報110に存在するかどうかを確認する(ステップS201)。ヒットしたレコードが1つも存在しない場合(ステップS202でNo)、アクセス制御部12は、メモリアクセス入力情報が指定する内容に従い、メモリ20へアクセスし(ステップS204)、全体の処理は終了する。
【0034】
ヒットしたレコードが少なくとも1以上存在する場合であり(ステップS202でYes)、メモリ20へのアクセスが書き込みアクセスである場合(ステップS204でYes)アクセス制御部12は、ヒットしたレコードが示す情報に基づき、メモリ20への入力データ120における論理固定ビットと障害ビットとを入れ替えたデータを、メモリ20へ書き込み(ステップS205)、全体の処理は終了する。メモリ20へのアクセスが書き込みアクセスでない(すなわち読み出しアクセスである)場合(ステップS204でYes)、アクセス制御部12は、ヒットしたレコードが示す情報に基づき、メモリ20から読み出したメモリ20に格納されるデータ121における論理固定ビットと障害ビットとを入れ替えたデータを、エラー訂正部15へ入力し(ステップS206)、全体の処理は終了する。
【0035】
本実施形態に係るメモリアクセス制御システム1は、簡易な構成によりメモリ障害を隠蔽することによって、メモリの信頼性を向上させることができる。その理由は、入れ替え情報記憶部11が、論理的に値が固定された論理固定ビットと障害により値が固定された障害ビットを関連付けたビット入れ替え情報110を記憶し、アクセス制御部12が、ビット入れ替え情報110に基づいて、論理固定ビットと障害ビットとを入れ替えてから、メモリ20へアクセスするからである。
【0036】
例えば、一般的な情報処理装置が備えている命令キャッシュのようなメモリの場合、アプリケーションプログラム、あるいは、ハードウェアに関する論理的な構成によっては、格納される命令コードが、全命令コードの中の限られた命令コードに集中することがある。この場合、命令キャッシュ内の特定のビットに関して、常に“0”もしくは“1”が格納されるような偏りが発生している。また、システムにおける動作モード等の環境設定情報を記憶するメモリなどに関しても、記憶する値が固定されている場合が多い。
【0037】
このような論理的に値が固定された論理固定ビットに関してメモリ障害が発生した場合、係るメモリ障害が、論理的に固定された値に固定される障害であれば、その障害は隠蔽されることになる。したがって、論理的に値が固定されていない通常のビットについて、値が固定される障害が発生した場合は、障害が発生した障害ビットと、係る障害ビットが障害により固定された値しか論理的に取りえない論理固定ビットとを入れ替えてメモリアクセスを行うことにより、係る障害を隠蔽することができる。
【0038】
本実施形態に係るメモリアクセス制御装置10は、メモリ障害発生時に、メモリ内に存在する論理固定ビットを活用し、障害ビットと論理固定ビットとを入れ替えることにより、例えば予備のメモリのようなハードウェアを備えることなく、メモリ障害を隠蔽することができる。
【0039】
また、本実施形態に係るメモリアクセス制御装置10における入れ替え情報記憶部11は、メモリ20においてメモリ障害が発生する前から、メモリ20内に存在することが判明している論理固定ビットに関する情報を、ビット入れ替え情報110として記憶している。そして、メモリ20において固定障害が発生した場合に、登録部13が、障害ビットを、ビット入れ替え情報110に登録された何れかの論理固定ビットに関連付けて、ビット入れ替え情報110に登録する。すなわち、メモリ20における障害発生時に、ビット入れ替え処理の対象となる論理固定ビットと障害ビットとの関連付けを、システム管理者が行うのではなく、メモリアクセス制御装置10が行う。したがって、メモリアクセス制御装置10は、システム管理者がメモリアクセス制御システム1を管理する際の負担を軽減することができる。
【0040】
さらに、本実施形態に係るメモリアクセス制御装置10における障害情報記憶部14は、
メモリ20におけるビット毎の障害発生状況を管理する情報である障害情報140を記憶する。登録部13は、メモリ20における障害が発生するたびに、障害ビットに関する検出回数に1を加算する。メモリ障害には、固定障害の他、α 線や中性子線により発生するソフトエラーがあり、例えば特定のビットにおいて1乃至2回程度障害が発生したとしても、固定障害が発生しているとは限らない。
【0041】
もし、メモリアクセス制御装置10が、障害ビットにおいて発生したソフトエラーを固定障害と誤認識して、係る障害ビットに関して論理固定ビットとのビット入れ替え処理を行うようにした場合、固定障害が発生した障害ビットとのビット入れ替えを行う論理固定ビットを割り当てることができなくなる虞がある。本実施形態に係る登録部13は、検出回数が閾値に達するまでは、係る障害ビットにおいて固定障害が発生したと判定しないため、ソフトエラーを固定障害と誤認識してビット入れ替えを行う論理固定ビットを必要以上に割り当てることを回避できる。
【0042】
尚、本実施形態は、メモリアクセス制御装置10及びメモリ20が独立した構成をとっているが、メモリ20が、メモリアクセス制御装置10の一部あるいは全ての機能を備えるようにしてもよい。
【0043】
<第2の実施形態>
図8は第2の実施形態のメモリアクセス制御装置30の構成を概念的に示すブロック図である。
【0044】
本実施形態のメモリアクセス制御装置30は、入れ替え情報記憶部31、及び、アクセス制御部32を備えている。
【0045】
入れ替え情報記憶部31は、複数のビットを包含するメモリ20において、論理的に値が固定されたビットである論理固定ビットを識別する識別子と、障害により値が前記論理固定ビットが示す値に固定されたビットである障害ビットを識別する識別子と、を関連付けたビット入れ替え情報310を記憶する。
【0046】
アクセス制御部32は、ビット入れ替え情報310に基づき、論理固定ビットと障害ビットとを入れ替えてから、メモリ20へのアクセスを処理する。
【0047】
本実施形態に係るメモリアクセス制御装置30は、簡易な構成によりメモリ障害を隠蔽して、メモリの信頼性を向上させることができる。その理由は、入れ替え情報記憶部31が、論理的に値が固定された論理固定ビットと障害により値が固定された障害ビットを関連付けたビット入れ替え情報310を記憶し、アクセス制御部32が、ビット入れ替え情報310に基づいて、論理固定ビットと障害ビットとを入れ替えてから、メモリ20へアクセスするからである。
【0048】
<ハードウェア構成例>
上述した各実施形態において
図1、及び、
図8に示した各部は、専用のHW(電子回路)によって実現することができる。また、当該各部は、ソフトウェアプログラムの機能(処理)単位(ソフトウェアモジュール)と捉えることができる。但し、これらの図面に示した各部の区分けは、説明の便宜上の構成であり、実装に際しては、様々な構成が想定され得る。この場合のハードウェア環境の一例を、
図9を参照して説明する。
【0049】
図9は、本発明の模範的な実施形態に係るメモリアクセス制御装置を実行可能な情報処理装置900(コンピュータ)の構成を例示的に説明する図である。即ち、
図9は、
図1、及び、
図8に示したメモリアクセス制御装置を実現可能なコンピュータ(情報処理装置)の構成であって、上述した実施形態における各機能を実現可能なハードウェア環境を表す。
【0050】
図9に示した情報処理装置900は、CPU901(Central_Processing_Unit)、ROM902(Read_Only_Memory)、RAM903(Random_Access_Memory)、ハードディスク904(記憶装置)、外部装置との通信インタフェース905(Interface:以降、「I/F」と称する)、CD−ROM(Compact_Disc_Read_Only_Memory)等の記憶媒体907に格納されたデータを読み書き可能なリーダライタ908、及び、入出力インタフェース909を備え、これらの構成がバス906(通信線)を介して接続された一般的なコンピュータである。
【0051】
そして、上述した実施形態を例に説明した本発明は、
図9に示した情報処理装置900に対して、その実施形態の説明において参照したブロック構成図(
図1、及び、
図8)或いはフローチャート(
図2乃至3)の機能を実現可能なコンピュータプログラムを供給した後、そのコンピュータプログラムを、当該ハードウェアのCPU901に読み出して解釈し実行することによって達成される。また、当該装置内に供給されたコンピュータプログラムは、読み書き可能な揮発性の記憶メモリ(RAM903)またはハードディスク904等の不揮発性の記憶デバイスに格納すれば良い。
【0052】
また、前記の場合において、当該ハードウェア内へのコンピュータプログラムの供給方法は、CD−ROM等の各種記憶媒体907を介して当該装置内にインストールする方法や、インターネット等の通信回線を介して外部よりダウンロードする方法等のように、現在では一般的な手順を採用することができる。そして、このような場合において、本発明は、係るコンピュータプログラムを構成するコード或いは、そのコードが格納された記憶媒体907によって構成されると捉えることができる。
【0053】
以上、上述した実施形態を模範的な例として本発明を説明した。しかしながら、本発明は、上述した実施形態には限定されない。即ち、本発明は、本発明のスコープ内において、当業者が理解し得る様々な態様を適用することができる。