JP2008065745A - 記憶装置 - Google Patents
記憶装置 Download PDFInfo
- Publication number
- JP2008065745A JP2008065745A JP2006245368A JP2006245368A JP2008065745A JP 2008065745 A JP2008065745 A JP 2008065745A JP 2006245368 A JP2006245368 A JP 2006245368A JP 2006245368 A JP2006245368 A JP 2006245368A JP 2008065745 A JP2008065745 A JP 2008065745A
- Authority
- JP
- Japan
- Prior art keywords
- storage device
- memory
- main storage
- failure
- entry
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Abstract
【課題】多ビットのメモリ故障であっても、効率よく、主記憶装置が使用不可になることを回避する。
【解決手段】主記憶装置2の初期化において、主記憶装置初期化/故障検出部6は、キャッシュメモリ5のキャッシュ有効フラグ4aに’0’を設定し、キャッシュメモリ5を無効とする。その後、主記憶装置2のSバイト領域に検査データWを記憶させた後に、主記憶装置2のSバイト領域を読み取った後、検査データWの反転データである検査データWWを主記憶装置2のSバイト領域に記憶させて、そのSバイト領域のデータを読み取る。検査データW,WWと読み取ったデータとが同じでない場合、主記憶装置2のSバイト領域が異常と見なし、そのSバイト領域をキャッシュメモリ5の任意のメモリ領域に割り付けて該Sバイト領域を救済する。
【選択図】図1
【解決手段】主記憶装置2の初期化において、主記憶装置初期化/故障検出部6は、キャッシュメモリ5のキャッシュ有効フラグ4aに’0’を設定し、キャッシュメモリ5を無効とする。その後、主記憶装置2のSバイト領域に検査データWを記憶させた後に、主記憶装置2のSバイト領域を読み取った後、検査データWの反転データである検査データWWを主記憶装置2のSバイト領域に記憶させて、そのSバイト領域のデータを読み取る。検査データW,WWと読み取ったデータとが同じでない場合、主記憶装置2のSバイト領域が異常と見なし、そのSバイト領域をキャッシュメモリ5の任意のメモリ領域に割り付けて該Sバイト領域を救済する。
【選択図】図1
Description
本発明は、記憶装置の信頼性の向上技術に関し、特に、キャッシュメモリを用いた主記憶装置におけるメモリ故障の救済に有効な技術に関する。
近年、画像処理装置やパーソナルコンピュータなどの電子システムには、データの書き換えが可能な記憶装置が広く用いられている。記憶装置には、高性能や高信頼性を実現するために、リードエラーなどのエラー訂正を行うために様々な技術が用いられている。
この種の記憶装置において、該記憶装置のデータを回復する技術として、たとえば、異常発生ブロックのデータを回復後にキャッシュメモリ上の常駐領域にセーブすることにより正常動作を継続するものが知られている(特許文献1参照)。
また、記憶装置のソフトエラーによりメモリビットの反転を対策する技術として、メモリアクセス時における訂正可能エラーの検出に応答してそのエラーアドレスに対するメモリパトロールを実行し、その記憶内容を回復可能とするものがある(特許文献2参照)。
特開2002−123372号公報
特開平05−233472号公報
ところが、上記のような記憶装置のエラー回復技術では、次のような問題点があることが本発明者により見い出された。
すなわち、上記した特許文献1,2では、いずれもデータに冗長性を持たせた際にデータが回復可能な場合の技術である。記憶装置に冗長性を持たせる場合、該記憶装置のコストが大きくなってしまうという問題がある。それにより、低コストが要求される記憶装置では、冗長性を持たせる余裕がなくなってしまう恐れがある。
また、冗長性によってデータ回復が可能なケースは、破損の度合いが軽い場合(たとえば、1ビット程度)に限られており、破損の度合いが重い場合には、エラー回復ができないという問題がある。
本発明の目的は、多ビットのメモリ故障であっても、効率よく、主記憶装置が使用不可になることを回避することのできる技術を提供することにある。
本発明の前記ならびにそのほかの目的と新規な特徴については、本明細書の記述および添付図面から明らかになるであろう。
本願において開示される発明のうち、代表的なものの概要を簡単に説明すれば、次のとおりである。
本発明は、主記憶装置と、該主記憶装置のキャッシュとなる補助メモリと、該補助メモリの制御を行う補助メモリ制御部とを有し、主記憶装置におけるメモリ故障の検出を任意の期間に実行し、主記憶装置にメモリ故障が検出された際に、そのメモリ故障の記憶領域をアクセス禁止とする故障検出制御部を備えたものである。
また、本願のその他の発明の概要を簡単に示す。
本発明は、前記故障検出制御部が、主記憶装置におけるメモリ故障の記憶領域を、補助メモリの任意の領域に割り付ける処理を行うものである。
また、本発明は、前記補助メモリが、主記憶装置のメモリ故障の領域の代替となっていることを示す常駐フラグを有し、故障検出制御部が、常駐フラグが設定されている場合、主記憶装置におけるメモリ故障の記憶領域を補助メモリの任意の領域に割り付けた後、補助メモリの任意の領域を主記憶装置の記憶領域としてアクセス可能となるように処理するものである。
さらに、本発明は、前記故障検出制御部が、主記憶装置におけるメモリ故障の検出処理を、記憶装置の初期化期間に実行するものである。
また、本発明は、前記補助メモリ制御部が、補助メモリの有効/無効を設定する補助メモリ設定部を備え、故障検出制御部が、主記憶装置におけるメモリ故障の検出、およびメモリ故障の記憶領域の救済が終了するまで、補助メモリを無効とし、主記憶装置へのアクセスに補助メモリが影響しないように制御するものである。
本願において開示される発明のうち、代表的なものによって得られる効果を簡単に説明すれば以下のとおりである。
(1)記憶装置におけるメモリ故障を検出し、補助メモリにより代替して救済するので、多ビットのメモリ故障であっても効率よく救済することができる。
(2)上記(1)により、記憶装置の信頼性を大幅に向上させることができる。
以下、本発明の実施の形態を図面に基づいて詳細に説明する。なお、実施の形態を説明するための全図において、同一の部材には原則として同一の符号を付し、その繰り返しの説明は省略する。
図1は、本発明の一実施の形態による記憶装置の構成例を示すブロック図、図2は、図1の記憶装置における初期化動作の一例を示すフローチャート、図3は、図2のステップS102の処理における詳細なフローチャートである。
本実施の形態において、記憶装置1は、図1に示すように、主記憶装置2、主記憶制御回路3、キャッシュ制御回路4、キャッシュメモリ5、主記憶装置初期化/故障検出部6、および主記憶故障通知部7から構成されている。
この記憶装置1は、たとえば、パーソナルコンピュータや画像処理システムなどの情報システム、アドレス付けされた大容量記憶装置を用いて構成される様々な電子システムに適用可能である。
主記憶装置2は、書き換え可能な記憶装置であり、先頭アドレスから末尾アドレスまで連続したアドレスが割り付けられている。主記憶装置1には、主記憶制御回路3が接続されている。
主記憶制御回路3は、主記憶装置2をアクセスするときのデータバス幅や、ウェイト数などを制御する。この主記憶制御回路3には、補助メモリ制御部として機能するキャッシュ制御回路4が接続されている。キャッシュ制御回路4には、補助メモリとして機能するキャッシュメモリ5が接続されている。
キャッシュ制御回路4は、キャッシュメモリ5の制御を行う。キャッシュ制御回路4は、補助メモリ設定部として機能するキャッシュ有効フラグ4a、およびLRU(Least Recently Used)ベクタ4bをそれぞれ有している。
キャッシュ有効フラグ4aに’1’を設定するとキャッシュメモリ5が有効となり、キャッシュ有効フラグ4aに’0’を設定するとキャッシュメモリ5が無効になる。
LRUベクタ4bは、キャッシュメモリ5のエントリ数Nに対し、(N*(N−1)/2)個のビットからなるベクタである。このLRUベクタ4bは、キャッシュメモリ5のエントリの中から最も古く使用されたエントリを見つけることを目的とするベクタである。LRUベクタ4bは、キャッシュメモリ5のN個のエントリが使用された順序を記録する。
キャッシュメモリ5は、たとえば、RAM(Random Access Memory)などからなる高速メモリであり、使用頻度の高いデータなどが格納される。
故障検出制御部として機能する主記憶装置初期化/故障検出部6は、専用ハードウェア、または、CPU(Central Processing Unit)とプログラムからなり、後述するアルゴリズム(図2、および図3)を実現する。
主記憶装置初期化/故障検出部6は、読み書き可能でSバイト幅のレジスタ6a,6b,6c、およびSバイト幅のデータである開始アドレスAS、終了アドレスAE、検査データW,WWをそれぞれ有している。
開始アドレスASは、主記憶装置2の先頭アドレスである。終了アドレスSEは、主記憶装置2の開始アドレスASに主記憶装置2のサイズを足した数である。開始アドレスAS、ならびに終了アドレスAEは、キャッシュメモリ5のデータブロックサイズLで割り切れる数と仮定して一般性を失わない。
検査データWは、Sバイトの任意のデータである。たとえば、Sバイトの全ビットが1であるデータでよい。主記憶装置2の検査対象のアドレスから始まるSバイトに検査データWを書き込んだ後に当該アドレスから始まるSバイトを読み込んだ時に、読み込んだ値が検査データWと等しければ正常と判断し、等しくなければ異常と判断する。検査データWWは、検査データWをビット毎に反転した値である。
検査データWとそれを反転した検査データWWとを検査データとして使うことにより、主記憶装置2の検査対象アドレスから始まるSバイトの領域に0固定となる不良ビット、または1固定となる不良ビットがあることを発見することができる。
主記憶故障通知部7は、記憶装置1を用いるシステムに対して主記憶装置2の故障発生状況をLED(Light Emitting Diode)などを点灯させて知らせる。
主記憶故障通知部7において、救済不可表示部13は、ONの状態で主記憶装置2に救済できなかった故障が発生したことを表示し、OFFの状態でそのような故障がないことを示し、縮退運転表示部14は、ONの状態で主記憶装置2に故障があり、キャッシュメモリ5に故障箇所を含むブロックをマッピングして稼動中であることを表示し、OFFの状態でそのような状態でないことを示す。
また、主記憶制御回路3、キャッシュ制御回路4、記憶装置初期化/故障検出部6、ならびに主記憶故障通知部7は、バス15から各々に設けられたバス接続子を介して相互に接続されている。バス15は、発信元経路識別子、コマンド、アドレス、データの4つ組みからなるパケットを受け取り、当該アドレスが割り付いているバス接続子へ経路を介して転送する。
パケットの発信元経路識別子はパケットを発信した経路を識別するための数字である。パケットのコマンドは要求と応答からなる。要求にはリード要求とライト要求があり、応答にはリード応答、ライト応答がある。
リード要求、ライト要求、リード応答、ライト応答はアクセスサイズ1バイト、2バイト、4バイト、8バイトに細分化されている。パケットのアドレスはパケットのコマンドがリード要求またはライト要求の時に有意であり、転送先のアドレスからなる。
バケットのデータはパケットのコマンドがライト要求、または、リード応答の時に有意であり、ライト要求ではライトするデータ、リード応答ではリードしたデータからなる。
各バス接続子にはお互いに重ならないアドレス範囲が割り付けられている。アドレス範囲に対応した経路を作り、主記憶制御回路3には、経路341、キャッシュ制御回路4には経路342と経路343、主記憶装置初期化/故障検出部6には、経路344、主記憶故障通知部7には、経路345を介してバス15と接続している。
特に、キャッシュ制御回路4には、経路342と経路343の2つの経路があり、経路342は主記憶装置2のアドレス範囲に対応した経路であり、経路343はキャッシュ有効フラグ4a、およびLRUベクタ4bを集結した領域のアドレス範囲に対応した経路である。
経路341、経路342、経路343、経路344、経路345に対して、パケットの発信元経路識別子に記述する経路識別子を互いに異なる数字として割り当てている。
次に、キャッシュメモリ5の構成について説明する。
キャッシュメモリ5は、Nエントリのフルアソシエイティブキャッシュである。言い換えればインデックス数が1のNウェイキャッシュである。N個のエントリそれぞれに対してデータブロック8、アドレスタグ9、不一致フラグ10、有効フラグ11、常駐フラグ12という読み書き可能な記憶領域がある。
各エントリの有効フラグ11は当、該エントリが有効か無効かを示す。有効フラグ11が’1’のエントリは有効であり、有効フラグ11が’0’のエントリは無効である。
有効フラグ11が’1’のエントリのデータブロック8、アドレスタグ9、不一致フラグ10、常駐フラグ12は有意な値を持ち、有効フラグ11が’0’のエントリのデータブロック8、アドレスタグ9、不一致フラグ10、常駐フラグ12は意味の無い値を持ち使用しない。
データブロック8は、エントリ毎にLバイト幅のデータを記憶する。Lは2のp乗である。アドレスタグ9は、当該エントリのデータブロック8が主記憶装置2におけるどのアドレスのブロックのデータを持つかを示す。
主記憶装置2のアドレスK番地を含むブロックのアドレスタグはK/Lである。主記憶装置2のアドレス空間のビット幅がMビットとすると、アドレスタグ9のビット幅は(M−p)である。
不一致フラグ10は、当該エントリのデータブロック8の記憶する内容と、アドレスタグ9が示す主記憶装置2のブロックの内容とが一致するか否かを示す。一致する場合は’0’、一致しない場合は’1’となるように設定する。
常駐フラグ12は、当該エントリをキャッシュメモリ5に常駐するか否かを指示する。常駐フラグ12が’1’のエントリはアドレスタグ9がさす主記憶装置2のブロックの内容がデータブロック8に常駐するようにキャッシュ制御回路4が保護する。
キャッシュメモリ5の各エントリのデータブロック8、アドレスタグ9、不一致フラグ10、有効フラグ11、常駐フラグ12、および、キャッシュ有効フラグ4aとLRUベクタ4bは、主記憶装置初期化/故障検出部6からバス15を経由して直接読み書きできる。
続いて、キャッシュ制御回路4の動作について説明する。
キャッシュ有効フラグ4aが’0’の時、キャッシュメモリ5は無効となる、すなわち、バス15から経路342を介する主記憶装置2へのアクセスは直接主記憶装置2へ転送される。
キャッシュ有効フラグ4aが’1’の時、キャッシュメモリ5は有効となる、すなわち、バス15から経路342を介する主記憶装置2へのアクセスはキャッシュメモリ5の状態に応じた影響を受ける。
LRUベクタ4bは、キャッシュメモリ5のエントリ数N個に対し、(N*(N−1)/2)個のビットからなる。(N*(N−1)/2)は、N個から2個を選ぶときの組み合わせの個数である。
N個のエントリから任意に選んだ第iエントリと第jエントリ、但しi<j、の関係を表す場所は、LRUベクタ4bの中の決まったビット(i,j)に割り付けられている。第iエントリが第jエントリより古い時期に使用された場合、ビット(i,j)の値は’0’、第iエントリが第jエントリより新しい時期に使用された場合、ビット(i,j)の値は’1’とする。
LRUベクタ4bには、2の(N*(N−1)/N)乗個の状態がありえるが、そのうち有効な状態はN個の順列からなるN!個、すなわち、Nの階乗個である。つまり、LRUベクタ4bはキャッシュメモリ5のN個のエントリが最も古く使用された順序を記録することができる。
キャッシュ制御回路4は、キャッシュメモリ5の第iエントリが使用された時に、LRUベクタ4bのビットのうち、第iエントリに関するビットをアップデートすることで、LRUベクタ4bにN個のエントリが最も古く使用された順序を保持する。
以下、キャッシュ有効フラグ4aが’1’を前提に、主記憶装置2へのアクセスがリードの場合とライトの場合に分けてキャッシュ制御装置4、およびキャッシュメモリ5の動作についてそれぞれ説明する。
まず、主記憶装置2へのアクセスがリードの場合、バス15から経路342を介してアドレスXに対してTバイトのリード要求コマンドのパケットがキャッシュ制御回路4へ転送された時、キャッシュ制御回路4は以下の動作D101〜D108の動作を行う。
アドレスXをデータブロック310のバイト幅Lで割り算した値の整数部X/Lに対し、アドレスタグ9がX/Lと一致、かつ、有効フラグ11が1のエントリが存在する場合D102へ行き、存在しない場合は動作D103へ行く(動作D101)。
アドレスタグ9がX/Lと一致したエントリのデータブロック8からアドレスXに該当するTバイトのデータDを読み込む。当該エントリが使用されたので当該エントリが最も新しく使用された状態を示すべくLRUベクタ4bをアップデートし動作D108へ行く(動作D102)。
キャッシュメモリ5のエントリN個の中から有効フラグ11が’0’(無効)のエントリが有る場合は動作D104へ行き、有効フラグ11が’0’のエントリが無い場合は動作D105へ行く(動作D103)。
無効エントリがある場合には、有効フラグ11が’0’(無効)のエントリを任意に選び、動作D107へ行く(動作D104)。また、無効エントリがない場合には、キャッシュメモリ5のN個のエントリ全てにおいて常駐フラグ12が’1’(常駐)の場合、主記憶装置2からアドレスXから始まるTバイトのデータDを読み込み、動作D108へ行き、常駐フラグ12が’0’(非常駐)のエントリが有る場合は、常駐フラグが’1’(常駐)のエントリを除外したエントリの中で最も古く使われたエントリをLRUベクタ4bから探す。探したエントリの不一致フラグ10が’1’(不一致)の場合は動作D106へ行き、’0’(一致)の場合は動作D107へ行く(動作D105)。
当該エントリは主記憶装置2より新しいデータを持つとみなし、主記憶装置2へデータブロック8の値を書き込む操作を行う。当該エントリのアドレスタグ9の値をQとし、主記憶装置2の(Q*L)番地から始まるLバイトに当該エントリのデータブロック8にあるLバイトの値を書き込み、動作D107へ行く(動作D106)。
当該エントリに対しアドレスタグ9をX/Lに設定し、データブロック8に主記憶装置2の((X/L)*L)番地からLバイトを読み込み、常駐フラグ12を’0’(非常駐)に設定し、不一致フラグ10を’0’(一致)に設定し、有効フラグ11を’1’(有効)に設定し、データブロック8からアドレスXに該当するTバイトのデータDを読み込こむ(動作D107)。当該エントリが使用されたので当該エントリが最も新しく使用された状態を示すべくLRUベクタ4bをアップデートする(動作D107)。
続いて、リード要求元にリード応答コマンドのパケットでリードしたデータDを転送する(動作D108)。
以上の動作D101〜D108の手続きにおいて、常駐フラグ12が’1’(常駐)のエントリがキャッシュメモリ5に常駐するように保護されている。常駐フラグ12が’1’(常駐)のエントリは主記憶装置2の故障領域の代替として活用しているためである。
続いて、主記憶装置2へのアクセスがライトの場合について説明する。
バス15から経路342を介してアドレスXに対してTバイトのライト要求コマンドのパケットがキャッシュ制御回路4へ転送された時、キャッシュ制御回路4は以下の動作D201〜D208の動作を行う。
なお、以下の説明ではライトアロケート方式を採用するがノンライトアロケート方式でも本発明の趣旨を曲げずに適用することができる。また、コピーバック方式とライトスルー方式の2方式のうちコピーバック方式を採用するが、ライトスルー方式でも本発明の趣旨を曲げずに適用することができる。
まず、アドレスXをデータブロック8のバイト幅Lで割り算した値の整数部X/Lに対し、アドレスタグ9がX/Lと一致し、かつ、有効フラグ11が’1’のエントリが存在する場合には動作D202へ行き、存在しない場合は動作D203へ行く(動作D201)。
動作D201において、エントリが存在する場合、アドレスタグ9がX/Lと一致したエントリのデータブロック8のアドレスXに該当するTバイトにライト要求データを書き込む。当該エントリの不一致フラグ10に’1’(不一致)を設定する。当該エントリが使用されたので当該エントリが最も新しく使用された状態を示すべくLRUベクタ4bをアップデートして動作D208に行く(動作D202)。
動作D201でエントリが存在しない場合において、キャッシュメモリ5のエントリN個の中から有効フラグ11が’0’(無効)のエントリが有る場合は動作D204へ行き、有効フラグが’0’のエントリがない場合は動作D205へ行く(動作D203)。
無効エントリが有る場合、有効フラグ11が’0’(無効)のエントリを任意に選び、動作D207へ行く(動作D204)。
動作D203で有効フラグ11が’0’のエントリがない場合において、キャッシュメモリ5のN個のエントリ全てにおいて常駐フラグ12が’1’(常駐)の場合、主記憶装置2のアドレスXから始まるTバイトにライト要求データを読み込み、動作D208へ行く(動作D205)。また、常駐フラグ12が’0’(非常駐)のエントリが有る場合は、常駐フラグが’1’(常駐)のエントリを除外したエントリの中で最も古く使われたエントリをLRUベクタ4bから探す。探したエントリの不一致フラグ10が’1’(不一致)の場合は、動作D206へ行き、’0’(一致)の場合は、動作D207へ行く(動作D205)。
動作D205で不一致の場合、当該エントリは主記憶装置2より新しいデータを持つとみなし主記憶装置2へデータブロック8の値を書き込む操作を行う。当該エントリのアドレスタグ9の値をQとし、主記憶装置2の(Q*L)番地から始まるLバイトに当該エントリのデータブロック8にあるLバイトの値を書き込み、動作D207へ行く(動作D206)。
当該エントリに対し、アドレスタグ9をX/Lに設定し、データブロック8に主記憶装置2の((X/L)*L)番地からLバイトを読み込み(ライトアロケート方式の特徴)、常駐フラグ12を’0’(非常駐)に設定し、不一致フラグ10を’1’(不一致)に設定し、有効フラグ11を’1’(有効)に設定し、データブロック8のアドレスXに該当するTバイトにライト要求データを書き込む(コピーバッグ方式のため、主記憶装置2へデータの書き込みは行わない)。
当該エントリが使用されたので当該エントリが最も新しく使用された状態を示すべくLRUベクタ4bをアップデートする(動作D207)。
続いて、ライト要求元にライト応答コマンドのパケットを転送する(動作D208)。
以上の動作D201〜D208の手続きにおいて常駐フラグ12が’1’(常駐)のエントリがキャッシュメモリ5に常駐するように保護されている。常駐フラグ12が’1’(常駐)のエントリは主記憶装置2の故障領域の代替として活用しているためである。
図2は、本実施の形態による記憶装置1の初期化動作の一例を示すフローチャートである。
まず、システムに電源が投入されたことなどにより、初期化のイベントが発生すると、システムで利用可能とするための主記憶装置2の初期化が行われる(ステップS101)。このステップS101の処理では、データ経路のビット幅、主記憶装置2へのアクセスタイミングなどを主記憶制御回路3に設定する処理などを行う。
続いて、主記憶装置2のテスト、故障箇所の摘出、および故障箇所の救済を行う(ステップS102)。このステップS102の処理においては、図3を用いて詳しく説明する。
このステップS102の処理において、主記憶装置2が正常、あるいは主記憶装置2に異常な領域があるがキャッシュメモリ5、およびキャッシュ制御回路4によって該領域が救済された場合には、主記憶装置2の初期化以降に続くシステム起動処理を行う(ステップS103)。ステップS103の処理では、主記憶装置2を用いるシステムの初期化を行い、その初期化が終了後に該システムが稼動する。
図3は、図2のステップS102における主記憶装置2の故障箇所の摘出、および故障箇所救済の動作を行う際の主記憶装置初期化/故障検出部6の処理例を示したフローチャートである。
まず、主記憶装置2の故障検出兼救済の処理が開始されると、主記憶装置初期化/故障検出部6は、キャッシュメモリ5のキャッシュ有効フラグ4aに’0’を設定する(ステップS201)。すなわち、キャッシュメモリ5を無効とする。
キャッシュメモリ5が無効ということは、主記憶装置2へのアクセスにキャッシュメモリ5が影響しないことを示すことになる。この場合、キャッシュメモリ5の初期化が済むまで、該キャッシュメモリ5は無効とする。
また、ステップS201の処理では、キャッシュメモリ5の全エントリの有効フラグ11に’0’を設定して全エントリを無効とし、該キャッシュメモリ5の全エントリの常駐フラグ12に’0’を設定し全エントリを非常駐とする。
続いて、主記憶装置初期化/故障検出部6は、救済不可表示部13、および縮退運転表示部14をそれぞれOFF、すなわち正常状態に初期化する(ステップS202)。これ以降、主記憶装置2に異常が発見された際には、救済不可表示部13、または縮退運転表示部14がその異常状態を表示する。
その後、主記憶装置初期化/故障検出部6は、レジスタ6aに主記憶装置2の検査の開始アドレスASを設定する(ステップS203)。そして、レジスタ6aの値を先頭アドレスとする主記憶装置2のSバイト領域に検査データWを記憶させた後に、該レジスタ6aの値を先頭アドレスとする主記憶装置2のSバイト領域を読み取った値をレジスタ6bの値とする(ステップS204)。
レジスタ6aの値を先頭アドレスとする主記憶装置2のSバイト領域に検査データWWを記憶させた後に、レジスタ6aの値を先頭アドレスとする主記憶装置2のSバイト領域を読み取った値をレジスタ6cの値とする(ステップS205)。
レジスタ6bと検査データWとが等しく、かつ、レジスタ6cと検査データWWとが等しい場合には、レジスタ6aの値を先頭アドレスとする主記憶装置2のSバイト領域が正常と見なし、その他の場合に当該領域が異常と見なす。
ここで、当該領域が正常の場合は、当該領域に関する処理を終了し、ステップS211の処理へ進む。また、当該領域が異常の場合は当該領域の故障を救済すべく、ステップS207へ進む(ステップS206)。
レジスタ6aがさすアドレスのエントリがキャッシュメモリ5に既に常駐しているか否かをチェックし、既に常駐している場合には異常な領域が既に救済されているのでステップS211の処理を実行し、常駐していない場合は異常な領域を救済すべくステップS208の処理へ進む(ステップS207)。
レジスタ6aが持つアドレスをYとして具体的に説明すると、キャッシュメモリ5のエントリをスキャンして常駐フラグ12が’1’(常駐)、有効フラグ11が’1’(有効)、かつアドレスタグ9がY/Lとなるエントリが有れば既に異常な領域を含むエントリがキャッシュメモリ5に常駐しているのでステップS211の処理に進み、なければステップS208の処理へ進む。
一般にデータブロック8のサイズLは検査データWや検査データWWのサイズSより大きいため異常な領域が既に常駐していることが有り得る。
そして、レジスタ6aがさすアドレスのエントリをキャッシュメモリ5に新規に常駐可能か否かを調べ、常駐が可能な場合は異常な領域を救済すべくステップS209の処理へ進み、不可能な場合は異常な領域の救済不可とみなし、ステップS214の処理へ進む(ステップS208)。
具体的に説明すると、キャッシュメモリ5のエントリをスキャンして常駐フラグ12が’0’(常駐)(このとき有効フラグ11も’0’(無効)のはずである)のエントリが見つかれば新規に常駐化可能とみなし、ステップS209の処理へ進み、見つからなければ救済不可とみなしステップS214の処理へ進む。
ステップS214の処理では、主記憶装置2が救済不可な記憶域を持つことになるので、救済不可表示部13をONにして異常終了となる(ステップS214)。
また、ステップS209の処理では、キャッシュメモリ5のエントリを登録する。つまり、レジスタ6aの値をYとすると、当該エントリに対して次の動作を行う。データブロック8の全ビットをゼロに初期化し、アドレスタグに(Y/L)を設定し、不一致フラグ10に‘0’(一致)を設定し、有効フラグ11に‘1’(有効)を設定し、常駐フラグ12に‘1’(常駐)を設定する。ここで不一致フラグ10の設定値に関しては‘0’(一致)を設定する実装と‘1’(不一致)を設定する実装の両方があり得るが故障ブロック救済の観点から特に重要ではない。常駐フラグ12に‘1’(常駐)を設定することにより主記憶装置2の故障領域からの読み込むアクセスが禁止され、故障領域がデータブロック8で代替される(ステップS209)。
続いて、縮退運転表示部14をONにする(ステップS210)。縮退運転とは主記憶装置2に故障した記憶域があるが当該域をキャッシュメモリ5のエントリで代替することにより継続動作可能な状態を表す。
その後、主記憶装置2の次のアドレス領域を検査すべく、既に検査したアドレスをもつレジスタ6aにSバイトを加算する(ステップS211)。レジスタ6aがさすアドレスが主記憶装置2の領域を超えたか否かをチェックし(ステップS212)、超えていない場合にはステップS204からの処理を再び実行する。終了アドレスAEは主記憶装置2の開始アドレスASに主記憶装置2のサイズを加算した値を持つ。
また、レジスタ6aがさすアドレスが主記憶装置2の領域を超えている場合、キャッシュ有効フラグ4aに’1’を設定する。即ちキャッシュメモリ5を有効にし、正常終了となる。
それにより、本実施の形態によれば、主記憶装置2における任意の記憶領域が不良となっても、主記憶装置初期化/故障検出部6がその不良を検出し、キャッシュメモリ5により代替して稼働することができるので、記憶装置1の信頼性を大幅に向上させることができる。
以上、本発明者によってなされた発明を実施の形態に基づき具体的に説明したが、本発明は前記実施の形態に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能であることはいうまでもない。
本発明は、記憶装置におけるメモリ故障の救済技術に適している。
1 記憶装置
2 主記憶装置
3 主記憶制御回路
4 キャッシュ制御回路
4a キャッシュ有効フラグ
4b LRUベクタ
5 キャッシュメモリ
6 主記憶装置初期化/故障検出部
6a〜6c レジスタ
7 主記憶故障通知部
8 データブロック
9 アドレスタグ
10 不一致フラグ
11 有効フラグ
12 常駐フラグ
13 救済不可表示部
14 縮退運転表示部
15 バス
2 主記憶装置
3 主記憶制御回路
4 キャッシュ制御回路
4a キャッシュ有効フラグ
4b LRUベクタ
5 キャッシュメモリ
6 主記憶装置初期化/故障検出部
6a〜6c レジスタ
7 主記憶故障通知部
8 データブロック
9 アドレスタグ
10 不一致フラグ
11 有効フラグ
12 常駐フラグ
13 救済不可表示部
14 縮退運転表示部
15 バス
Claims (5)
- 主記憶装置と、前記主記憶装置のキャッシュとなる補助メモリと、前記補助メモリの制御を行う補助メモリ制御部とを有し、
前記主記憶装置におけるメモリ故障の検出を任意の期間に実行し、前記主記憶装置にメモリ故障が検出された際に、前記メモリ故障の記憶領域をアクセス禁止とする故障検出制御部を備えたことを特徴とする記憶装置。 - 請求項1記載の記憶装置において、
前記故障検出制御部は、
前記主記憶装置におけるメモリ故障の記憶領域を、前記補助メモリの任意の領域に割り付ける処理を行うことを特徴とする記憶装置。 - 請求項1または2記載の記憶装置において、
前記補助メモリは、
前記主記憶装置のメモリ故障の領域の代替となっていることを示す常駐フラグを有し、
前記故障検出制御部は、
前記常駐フラグが設定されている場合、前記主記憶装置におけるメモリ故障の記憶領域を前記補助メモリの任意の領域に割り付けた後、前記補助メモリの任意の領域を前記主記憶装置の記憶領域としてアクセス可能となるように処理することを特徴とする記憶装置。 - 請求項1〜3のいずれか1項に記載の記憶装置において、
前記故障検出制御部は、
前記主記憶装置におけるメモリ故障の検出処理を、前記記憶装置の初期化期間に実行することを特徴とする記憶装置。 - 請求項1〜4のいずれか1項に記載の記憶装置において、
前記補助メモリ制御部は、
前記補助メモリの有効/無効を設定する補助メモリ設定部を備え、
前記故障検出制御部が、前記主記憶装置におけるメモリ故障の検出、および前記メモリ故障の記憶領域の救済が終了するまで、前記補助メモリを無効とし、前記主記憶装置へのアクセスに前記補助メモリが影響しないように制御することを特徴とする記憶装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2006245368A JP2008065745A (ja) | 2006-09-11 | 2006-09-11 | 記憶装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2006245368A JP2008065745A (ja) | 2006-09-11 | 2006-09-11 | 記憶装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2008065745A true JP2008065745A (ja) | 2008-03-21 |
Family
ID=39288389
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2006245368A Pending JP2008065745A (ja) | 2006-09-11 | 2006-09-11 | 記憶装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2008065745A (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9330791B2 (en) | 2013-11-18 | 2016-05-03 | Samsung Electronics Co., Ltd. | Memory systems and methods of managing failed memory cells of semiconductor memories |
-
2006
- 2006-09-11 JP JP2006245368A patent/JP2008065745A/ja active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9330791B2 (en) | 2013-11-18 | 2016-05-03 | Samsung Electronics Co., Ltd. | Memory systems and methods of managing failed memory cells of semiconductor memories |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7650557B2 (en) | Memory scrubbing of expanded memory | |
US8291168B2 (en) | Disabling cache portions during low voltage operations | |
KR100572800B1 (ko) | 에러 체크 방법, 에러 정정 코드 체커 및 이를 포함하는 컴퓨터 시스템 | |
JP4283221B2 (ja) | 繰返し失敗したメモリ位置を無効にする実行をイネーブルにするため、失敗したメモリ位置を追跡する各種方法及び装置 | |
JP3761614B2 (ja) | キャッシュ・メモリ付きコンピュータ装置 | |
JP5202130B2 (ja) | キャッシュメモリ、コンピュータシステム、及びメモリアクセス方法 | |
KR102515417B1 (ko) | 캐시 메모리 장치 및 그것의 동작 방법 | |
US7343455B2 (en) | Cache mechanism and method for avoiding cast out on bad victim select and recycling victim select operation | |
JP2004310770A (ja) | フラッシュメモリのエラーブロック管理方法及び装置 | |
US6226763B1 (en) | Method and apparatus for performing cache accesses | |
US10528473B2 (en) | Disabling cache portions during low voltage operations | |
EP0626644A1 (en) | Structure to utilize a partially functional cache memory | |
KR101449231B1 (ko) | 어드레스 변환 검사 장치, 중앙 처리 연산 장치, 및 어드레스 변환 검사 방법 | |
US7987320B2 (en) | Cache mechanism and method for avoiding cast out on bad victim select and recycling victim select operation | |
JP2006040140A (ja) | 情報処理装置及びマルチヒット制御方法 | |
EP1278123A1 (en) | High integrity cache directory | |
US7716416B2 (en) | Analysis for a multiple tag hit in a content addressable memory (CAM) | |
JP2008065745A (ja) | 記憶装置 | |
US6567952B1 (en) | Method and apparatus for set associative cache tag error detection | |
US20100169572A1 (en) | Data storage method, apparatus and system for interrupted write recovery | |
US8458532B2 (en) | Error handling mechanism for a tag memory within coherency control circuitry | |
JP7470112B2 (ja) | 持続性メモリクリーニング | |
US20220231836A1 (en) | Hash based key value to block translation methods and systems | |
US7624224B1 (en) | System and method for directly executing code from block-based memory | |
US20090055687A1 (en) | RAM diagnosis device and RAM diagnosis method |