(58)【調査した分野】(Int.Cl.,DB名)
【発明を実施するための形態】
【0015】
以下、本発明の実施の形態を図面に基づいて詳細に説明する。なお、実施の形態を説明するための全図において、同一部分には原則として同一の符号を付し、その繰り返しの説明は省略する。
【0016】
メモリ回路を含むメモリモジュールに関して、複数の実施の形態を以下に説明するが、各実施の形態を説明する前に、以下で説明するメモリモジュールを内蔵する半導体集積回路装置を、先ず説明する。
【0017】
図7は、メモリモジュールを内蔵した半導体集積回路装置の構成を示すブロック図である。同図において、700は、複数のモジュールが1個の半導体チップに形成された半導体集積回路装置である。1個の半導体チップに形成されたモジュールとしては、後で各実施の形態で詳細に説明するメモリモジュール701、マイクロプロセッサ(以下、CPUと称する)703、その他モジュール(例えばタイマー等)702、I/Oモジュール705がある。各モジュールは、内部バス704に接続されており、この内部バス704を介して相互間でデータの転送が行われる。I/Oモジュール705は、内部バス704と半導体集積回路装置700の外部との間でデータ転送を行うインタフェース回路を含んでいる。CPU703は、図示されていないメモリに格納されたプログラムに従って動作する。プログラムに従って動作する際に、CPU703は、メモリモジュール701に対してアクセスを行い、アクセスによりデータの書き込みあるいはデータの読み出しを行う。特に制限されないが、CPU703は、メモリモジュール701に対してデータの読み出しあるいは書き込みのためのアクセスをする際に、メモリモジュール701に対してリクエスト信号706を発行する。
【0018】
リクエスト信号706は内部バス704を介してメモリモジュール701に供給される。メモリモジュール701は、リクエスト信号706を受けることにより、CPU703からのアクセス要求を知り、アクセス要求を受け付ける場合、すなわちCPU703によるデータの読み出し動作あるいは書き込み動作を許可する場合、アクノリッジ信号707を発行する。このアクノリッジ信号707は、内部バス704を介して、CPU703に伝えられる。CPU703は、アクノリッジ信号707を受けることにより、メモリモジュール701に対して読み出し動作あるいは書き込み動作を開始する。一方、メモリモジュール701からアクノリッジ信号707が供給されない場合、アクノリッジ信号707が供給されるまで、CPU703は、メモリモジュール701に対するアクセスを待機する。なお、リクエスト信号706とアクノリッジ信号707の信号経路は、内部バス704とは、別であっても良い。
【0019】
(実施の形態1)
図1は、本発明の一実施の形態に係わる半導体集積回路装置700に内蔵されたメモリモジュール701(
図7)の構成を示すブロック図である。メモリモジュール701は、メモリ部1、書き込み制御回路4、読み出し制御回路5、バッドエリア管理回路6および内部バスインタフェース回路(以下、内部バスIFと称する)7を具備している。メモリ部1は、特に制限されないが互いに同じ構成にされたメモリ回路2および3を含んでおり、それぞれのメモリ回路2、3は、メモリ部2b、3bとエラーチェック・コレクト回路(Error Check and Correct回路、以下ECC回路と称する)2a、3aを含んでいる。メモリ回路2および3のそれぞれのメモリ部2b、3bには、互いに同じデータが書き込まれ、メモリ回路に故障が発生していなければ、同じデータが読み出される。所謂二重化されたメモリ回路である。二重化することにより、メモリ回路の故障に対してデータの信頼性を向上させている。
【0020】
メモリ回路2および3のそれぞれには、書き込み制御回路4から書き込まれるべきライトデータ10およびライト制御信号11が供給される。ライト制御信号11は、メモリ回路2および3のメモリ部2b、3bにおいて、書き込まれるべきアドレスを指定する内部書き込みアドレス信号と書き込み動作を指示するライトイネーブル信号を含んでいる。メモリ回路2および3には、同じライトデータ10とライト制御信号11が供給されるため、ライトイネーブル信号により書き込み動作が指示されると、互いに同じアドレス(メモリ部2b、3bのアドレス)に、同じライトデータ(以下、単にデータとも称する場合がある)が書き込まれる。また、ECC回路2aおよび3aのそれぞれは、書き込まれるべきデータ10を受け、データ10に従った誤り訂正用データを形成する。形成された誤り訂正用データは、ライト制御信号11に含まれている内部書き込みアドレス信号により指定されるアドレスに書き込まれる。すなわち、ライト制御信号11に含まれている内部書き込みアドレス信号により指定されるアドレス(メモリ部2b、3bのアドレス)には、書き込み動作により、書き込まれるべきデータ10と該データ10に従って形成された誤り訂正用データが格納される。
【0021】
メモリ回路2および3に格納されたデータ(データ10と誤り訂正用データ)は、読み出し制御回路5から、メモリ部1に供給されるリード制御信号13により、読み出される。リード制御信号13は、メモリ回路2および3に供給される内部読み出しアドレス信号と読み出し動作を指示するリードイネーブル信号を含んでいる。メモリ回路2および3のそれぞれは、リードイネーブル信号により読み出し動作が指示されると、内部読み出しアドレス信号により指定されたアドレス(メモリ部2b、3bのアドレス)からデータが出力される。出力されたデータの内、誤り訂正用データは、それぞれのメモリ回路に設けられたECC回路2aおよび3aに供給される。訂正用データに基づいて、ECC回路2a、3aのそれぞれは、出力されたデータの内、データ10に対応するデータに誤りが含まれているかのチェックを行い、誤りが含まれていないデータあるいは誤り訂正用データで訂正したデータをリードデータ12として読み出し制御回路5へ供給する。
【0022】
特に制限されないが、本明細書において述べるECC回路は、データに1ビットの誤りが含まれていた場合には、その1ビットを訂正する機能を有し、2ビット以上の誤りが含まれていた場合には、訂正をすることができない。また、ECC回路2aおよび3aのそれぞれは、チェックにおいて、次の情報を形成する。すなわち、誤りがあった場合には、誤りがあったことを示す誤り情報、誤りが1ビットであり、訂正した場合は訂正したことを示す訂正情報、誤りが2ビット以上あり、訂正できない場合は訂正不可能であったことを示す訂正不可情報を形成して、出力する。特に制限されないが、もし、誤りがなければ、誤り情報、訂正情報、および訂正不可情報は形成されない。
【0023】
ECC回路2aおよび3aのそれぞれからの誤り情報、訂正情報および訂正不可情報は、ECCエラー系情報14として、読み出し制御回路5に供給される。同図では1本の信号線として示されているが、ECCエラー系情報14は、ECC回路2aからのエラー系情報(誤り情報、訂正情報、訂正不可情報)とECC回路3aからのエラー系情報とを含んでいる。リードデータ12も、同様に1本の信号線で示しているが、メモリ回路2から出力されたデータとメモリ回路3から出力されたデータとを含んでいる。なお、情報は、信号線を介して送受されるので、情報は信号と読み替えることも可能である。
【0024】
この様に、書き込み動作においては、同じデータを2個のメモリ回路2および3に書き込み、読み出し動作においては、同じデータを2個のメモリ回路から読み出す様にして、メモリの二重化をしている。また、ECC回路を設けることにより、1ビットの誤りが含まれていた場合でも、正しいデータが出力できる様にしている。
【0025】
バッドエリア管理回路6は、その詳細を後で図面を用いて説明するので、ここでは概要を説明する。メモリ回路2および3のいずれかからエラー系情報が発行された場合、バッドエリア管理回路6は、メモリ回路2および3の診断を実行させる。診断を実行した結果、故障であると判断した場合、バッドエリア管理回路6は、その故障のアドレスの代替えとなるアドレスを形成し、代替えアドレスにデータ(書き込むべきデータとそれに基づいて形成された誤り訂正用データ)を書き込む様に管理する。また、診断の結果として故障と判断したアドレスに対して、その後、書き込みあるいは読み出しのアクセスが生じた場合、代替えのアドレスに対してアクセスが行われる様に、バッドエリア管理回路はアドレスの管理を実行する。特に制限されないが、バッドエリア管理回路6は、診断を実施している期間、アクセス元(
図7の実施例ではCPU703)に対してアクセスを待機させる。
【0026】
読み出し制御回路5は、読み出し動作を実施するために、内部読み出しアドレス信号とリードイネーブル信号を、リード制御信号13としてメモリ部1に供給する。このリード制御信号13に応答して、メモリ回路2および3のそれぞれから、内部読み出しアドレス信号によって指定されたアドレス(メモリ部2b、3bのアドレス)に格納されていたデータが出力される。出力されたデータは、書き込まれたデータに対応するデータ(以下処理用データとも称する)と誤り訂正用データを含んでいる。出力された誤り訂正用データに基づいて、ECC回路2aおよび3aのそれぞれは、処理用データと誤り訂正用データに誤りが含まれているか否かをチェックする。メモリ部2bあるいは3bから出力されたデータ(処理用データと誤り訂正用データを含む)のいずれか一方に、1ビットの誤りが含まれていた場合、そのデータは、ECC回路により訂正され、訂正されたデータの内、処理用データは、読み出し制御回路5に供給される。
【0027】
例えば、メモリ回路2内のメモリ部2bから出力されたデータは、ECC回路2aにより訂正され、訂正された処理用データが出力される。このとき、メモリ回路3内のメモリ部3bから出力されたデータに誤りが含まれていなければ、ECC回路3aによって訂正されず、処理用データとして出力される。この場合、リードデータ12は、メモリ回路2から出力された訂正された処理用データと、メモリ回路3から出力された訂正されていない処理用データを含んでいる。また、このとき、メモリ回路2内のECC回路2aからは、エラー系情報(誤りがあったことを示す誤り情報、訂正したことを示す訂正情報)が発行される。従って、この時のECCエラー系情報14は、メモリ回路2で発行されたエラー系情報を含んでいる。なお、このとき、メモリ回路3内のECC回路3aからもエラー系情報が発行され、ECCエラー系情報14に含まれる様にしても良い。この場合、ECC回路3aが発行するエラー系情報は、例えば誤りが発生していないことを示す誤り情報である。
【0028】
また、ECC回路2aおよび3aのそれぞれで誤りが検出された場合には、誤りの発生、訂正の有無あるいは訂正不可を示すエラー系情報が発行され、ECCエラー系情報14として読み出し制御回路5に供給される。ECC回路2a、3aの両方で誤りが検出されなかった場合には、ECC回路2a、3aのそれぞれは、エラー系情報を発行しない。あるいは、誤りが発生していないことを示すエラー系情報を発行し、これがECCエラー系情報14として読み出し制御回路5に供給される。
【0029】
読み出し制御回路5は、誤りが発生していることを示す誤り情報と、訂正を実施したことを示す訂正情報あるいは訂正不可を示す訂正不可情報とを含むECCエラー系情報14を受けると、このECCエラー系情報14と訂正の必要がなかった処理用データ(上記の説明では、メモリ回路3から出力された処理用データ)を、リードECCエラー系情報15として、バッドエリア管理回路6に供給する。また、この時の内部読み出しアドレス信号を読み出しアドレス値20として、読み出し制御回路5は、バッドエリア管理回路6に供給する。バッドエリア管理回路6は、このリードECCエラー系情報15を受けると、診断データライト要求16を書き込み制御回路4に供給する。この診断データライト要求16は、供給されたリードECCエラー系情報15に含まれていた訂正の必要がなかった処理用データと、ライトイネーブル信号と、読み出しアドレス値20を含んでいる。書き込み制御回路4は、診断データライト要求16を受けると、リードECCエラー系情報15に含まれていた訂正の必要がなかった処理用データを、ライトデータ10としてメモリ部1に供給する。また、書き込み制御回路4は、読み出しアドレス値20を内部書き込み用アドレス信号としたライト制御信号11をメモリ部1に供給する。このとき、書き込み制御回路4は、ライトイネーブル信号もライト制御信号11として供給する。
【0030】
これにより、読み出しアドレス値20を内部書き込みアドレス信号として、メモリ回路2、3内のメモリ部2b、3bのそれぞれにおいて、それぞれ指定されたアドレスに、リードECCエラー系情報15に含まれていた訂正の必要がなかった処理用データが書き込まれる。すなわち、ECC回路により訂正を行ったデータが格納されていた、メモリ回路2および/あるいは3のそれぞれのアドレスに、訂正の必要がなかった処理用データが再度書き込まれる。このとき、処理用データに基づいて、それぞれのECC回路2aおよび3aでは、誤り訂正用データが生成される。生成された誤り訂正用データも、読み出しアドレス値20により指定されたアドレスに書き込まれる。すなわち、訂正を必要としなかった処理用データとそれに対応した誤り訂正用データの両方が、メモリ回路2および3のそれぞれにおいて読み出しアドレス値20により指定されたアドレスに再度書き込まれる。
【0031】
バッドエリア管理回路6は、上記した再度書き込みの後、診断結果リード要求17を読み出し制御回路5に供給する。診断結果リード要求17は、読み出しアドレス値20として通知されたアドレス信号とリードイネーブル信号とを含んでいる。
【0032】
読み出し制御回路5は、診断結果リード要求17を受けると、それに含まれているアドレス信号を内部読み出しアドレス信号としてメモリ部1に供給する。また、リードイネーブル信号をメモリ部1に供給する。これにより、メモリ回路2および3のそれぞれにおいて、読み出しアドレス値20に対応するアドレス信号により特定されるアドレスに格納されている処理用データと誤り訂正用データが読み出される。読み出された誤り訂正用データに基づいて処理用データおよび誤り訂正用データに誤りがないか否かのチェックが、各ECC回路2aおよび3aにおいて実施される。チェックの結果として、誤りがあり、誤りを示す誤り情報と、訂正情報あるいは訂正不可情報がECC回路2aまたは3aから読み出し制御回路5に、ECCエラー系情報14として供給された場合、読み出し制御回路5は、誤りを示す誤り情報と、訂正情報あるいは訂正不可情報をリードECCエラー系情報15としてバッドエリア管理回路6に伝える。
【0033】
バッドエリア管理回路6は、診断結果リード要求17を発行した後、リードECCエラー系情報15が供給されると、メモリ回路2、3内のメモリ部2b、3bのそれぞれに予め設定してある予備のメモリエリアの特定アドレスを指定するアドレス信号を形成する。この形成されたアドレス信号と、ライトイネーブル信号と、訂正の必要なしとして先に供給されていた処理用データとを含む診断データライト要求16が、書き込み制御回路4に供給される。書き込み制御回路4は、この診断データライト要求16を受けると、それに含まれているアドレス信号を内部書き込み用アドレス信号として、訂正の必要なしとして先に供給されていた処理用データを書き込み用のデータとして、メモリ部1に供給する。これにより、メモリ回路2および3のそれぞれにおいて、予備エリア内のアドレスに、訂正の必要なしとして先に供給されていた処理用データが書き込まれる。
【0034】
また、この書き込みの際には、誤り訂正用データも、ECC回路2aおよび3aのそれぞれにおいて形成され、予備エリア内のアドレスに書き込まれる。このようにして、診断結果リード要求17に応答して、誤りを示す誤り情報と、訂正情報あるいは訂正不可情報が発行された場合には、メモリ回路2および3のそれぞれに予め設けられていた予備のエリアにデータが格納される。
【0035】
バッドエリア管理回路6は、予備のメモリエリア内のアドレスを示すアドレス信号を形成した際、この形成したアドレス信号と読み出しアドレス値20として供給されたアドレス信号とを、1対として登録するレジスタを有している。すなわち、変換前のアドレス信号と変換後のアドレス信号とを1対として登録するレジスタを有している。
【0036】
CPU703からメモリモジュール701へのアクセスは、内部バスIF7を介して行われる。例えば、CPU703からメモリモジュール701へ書き込みのアクセスをする場合、CPU703からメモリモジュール701へ供給される外部書き込みアドレス信号と、書き込まれるべきデータと、ライトイネーブル信号は、内部バス704を介して、内部バスIF7に供給され、内部バスIF7からライト要求23として書き込み制御回路4に供給される。すなわち、ライト要求23は、外部書き込みアドレス信号と、ライトイネーブル信号と、書き込まれるべきデータとを含んでいる。書き込み制御回路4は、供給された外部書き込みアドレス信号を書き込みアドレス値18として、バッドエリア管理回路6に供給する。バッドエリア管理回路6は、書き込みアドレス値18として供給された外部書き込みアドレス信号が、前記レジスタに登録されているか否かの確認を行う。すなわち、書き込みアドレス値18として供給された外部書き込みアドレス信号が、アドレス信号を変換する前のアドレス信号として登録されているアドレス信号と一致するか否かの確認が実行される。
【0037】
一致した場合、一致したことを示す一致信号と、一致した変換前のアドレス信号と対を構成している変換後のアドレス信号を、書き込みアドレス変換要求19として出力する。これにより、メモリ回路2および3において、故障しているアドレスではなく、メモリ回路2および3の予備のエリアにおけるアドレスに、データとECC回路により形成された誤り訂正データが書き込まれる。この場合、ライトイネーブル信号は、バッドエリア管理回路6により形成され、書き込みアドレス変換要求19の一部として供給されるようすることができる。また、書き込み制御回路4は、データセレクタを有しており、書き込まれるべきデータは、診断データライト要求16が発行されたときのみ、上記データセレクタがバッドエリア管理回路6からのデータを選択して、メモリ部1に供給する様にされている。従って、CPU703による書き込みのアクセスにおいては、上記データセレクタは、ライト要求23に含まれているデータをメモリ部1に供給する。
【0038】
一方、書き込みアドレス値18として供給された外部書き込み用アドレス信号が、アドレス信号を変換する前のアドレス信号として登録されているアドレス信号と一致しなかった場合、一致信号が書き込み制御回路4に供給されないため、書き込み制御回路4は、ライト要求23に含まれている外部書き込み用アドレス信号をメモリ部1に供給する。これにより、外部書き込み用アドレス信号によって指定されるアドレスにデータの書き込みが行われる。
【0039】
CPU703によるメモリモジュール701へのアクセスが、読み出しの場合を次に説明する。CPU703により出力された外部読み出しアドレス信号と、リードイネーブル信号は、内部バス704を介して内部バスIF7に供給される。内部バスIF7は、供給された外部読み出しアドレス信号とリードイネーブル信号をリード要求24として、読み出し制御回路5に供給する。読み出し制御回路5は、供給された外部読み出し用アドレス信号を読み出しアドレス値20として、バッドエリア管理回路6に供給する。
【0040】
バッドエリア管理回路6は、供給された読み出しアドレス値20と、上記したレジスタに登録されているアドレスの変換前のアドレス信号と比較を行う。一致した場合、一致した変換前のアドレス信号と対を構成している変換後のアドレス信号をレジスタから読み出して、バッドエリア管理回路6は、読み出しアドレス変換要求21として読み出し制御回路5に供給する。このとき、一致したことを示す一致信号も読み出しアドレス変換要求21の一部としてバッドエリア管理回路6から読み出し制御回路5へ供給される。読み出し制御回路5は、供給された読み出しアドレス変換要求21に含まれているアドレス信号(この場合には、変換後のアドレス信号)をメモリ部1に供給して、メモリ回路2、3内のメモリ部2b、3bから処理用データおよび誤り訂正用データの読み出しを行う。この場合、リードイネーブル信号は、バッドエリア管理回路6から読み出しアドレス変換要求21とともに、読み出し制御回路5に供給しても良いし、リード要求24に含まれているリードイネーブル信号を用いても良い。
【0041】
供給された読み出しアドレス値20と、バッドエリア管理回路6内の上記したレジスタに登録されているアドレスの変換前のアドレス信号とが一致しなかった場合、すなわち、不一致の場合、バッドエリア管理回路6からは、一致信号が読み出し制御回路5に供給されない。読み出し制御回路5は、一致信号が供給されないため、リード要求24に含まれている外部読み出し用アドレス信号とリードイネーブル信号をリード制御信号13として、メモリ部1に供給する。これにより、メモリ回路2、3内のメモリ部2b、3bのそれぞれから、処理用データと誤り訂正用データが出力される。読み出し制御回路5も、データセレクタを有しており、診断結果リード要求17が発行されていないときのみ、メモリ回路2および3からの処理用データがリードデータ25として内部バスIF7に供給するようにされている。特に制限されないが、診断結果リード要求17が発行された場合は、メモリ回路2および3から出力された処理用データは、内部バスIF7に供給されない。
【0042】
CPU703からの読み出しアクセスにおいて、誤り訂正用データに基づいたデータの訂正が発生した場合には、前述したように、訂正情報が発生し、前述したような診断動作が実行される。診断動作を実施している期間においては、バッドエリア管理回路6は、CPU703によるメモリモジュール701へのアクセスを待機させるために、診断中を示すビジー信号22を形成して、内部バスIF7に供給する。
図1においては、リクエスト信号とアクノリッジ信号が示されていないが、上記したCPU703からメモリモジュール701へのアクセスは、リクエスト信号をCPU703が発行し、メモリモジュール701はアクノリッジ信号を発行した状態で行われる。一方、内部バスIF7は、ビジー信号22を受けると、アクノリッジ信号の発行を停止する。これにより、メモリモジュール701の診断中にアクセスされるのが防止される。すなわち、CPU703によるメモリモジュール701へのアクセスを制限される制限信号(ビジー信号22)が形成される。なお、図面においては、ビジー信号22をBUSY信号22と記載している場合もある。
【0043】
バッドエリア管理回路6は、同図には示されていないが複数のレジスタを有しており、これらのレジスタをアクセスするための経路が、26で示されている。また、メモリモジュール701の故障等を、CPU703に通知するために、本実施の形態では、割り込み制御を用いており、その信号がバッドエリア管理回路6から割り込み通知用信号27として示されている。割り込み通知用信号27は、内部バス704を介さずに、CPU703へ供給するため、内部バスIF7には供給されていない。
【0044】
本実施の形態では、ECC回路2aおよび3aにより、1ビットの誤りを訂正しても、診断動作を実行する様にしている。この様にすることにより、ソフトエラーによる故障であれば、診断動作で故障と判断される可能性が低くなり、予備のメモリエリアを用いずに、継続してメモリ回路2、3の正規領域を使うことができる。一方、ハード的な故障であれば、診断動作において、誤りを示す情報、訂正情報あるいは訂正不可情報が発生するため、予備のメモリエリアを用いる様にできる。ハード的な故障に対して予備のメモリエリアを用いるようにすることにより、ハード的なエラーとソフトエラーとが重なって、ECC回路の訂正能力を超えるようなエラーが発生するのを低減することが可能となる。また、常時診断動作を行うのではなく、ECC回路により、誤りを示す誤り情報、訂正情報、訂正不可情報が形成された場合に、診断動作が行われるため、診断回数を低減することが可能となり、消費電力の増大を低減することが可能となる。
【0045】
上述では、診断データおよび予備エリア内のアドレスに書き込まれるデータとして、訂正の必要なしとして先に供給されていた処理用データを用いることを述べた。しかしながら、診断データおよび予備エリア内のアドレスに書き込まれるデータは、訂正されて、正しいデータとなったものでも良い。従って、この実施の形態においては、診断データおよび予備エリアに書き込まれるデータは、訂正の必要なしとして先に供給されていた処理用データだけでなく、後で
図3Aおよび
図3Bを用いて説明する「正しく読み出されたデータ」であれば良い。
【0046】
次に、
図1に示したメモリモジュールの動作を、フロチャート図を用いながら説明する。
図2は、
図1に示したメモリモジュール701における書き込み動作を示すフロチャート図である。
図3Aおよび
図3Bのそれぞれは、メモリモジュール701における読み出し動作を示すフロチャート図である。
図4は、メモリモジュール701における診断動作を示すフロチャート図である。
【0047】
図2は、
図7に示したCPU703からメモリモジュール701にデータの書き込み指示(命令)があった場合のフロチャート図である。
図2において、一点破線よりも上側が、CPU703による動作を示しており、一点破線の下側がメモリモジュール701の動作を示している。CPU703は、メモリモジュール701にデータを書き込むために、リクエスト信号706を内部バスIF7に供給し、アクセスする(ステップS200)。内部バスIF7は、ステップS201において、メモリ部1が診断中か否かをバッドエリア管理回路6から供給されているビジー信号22により判断する。メモリ部1が診断中であれば、バッドエリア管理回路6からビジー信号22が供給されているため、内部バスIF7は、アクノリッジ信号707の発生を待機させる(ステップS202)。これにより、CPU703は、アクノリッジ信号707が発行されるまで、メモリモジュール701へのアクセスを待機する。
【0048】
ビジー信号22が、バッドエリア管理回路6で形成されていない場合、内部バスIF7は、ステップS203でアクノリッジ信号707を形成して、CPU703へメモリモジュール701の使用許可を知らせる。これに応答して、CPU703から、外部書き込みアドレス信号と書き込まれるべきデータがメモリモジュール701に供給される。供給されたデータおよび外部書き込みアドレス信号は、内部バスIF7から書き込み制御回路4に対して、ライト要求23として供給される(ステップS204)。書き込み制御回路4は、供給された外部書き込みアドレス信号を書き込みアドレス値18としてバッドエリア管理回路6に供給する(ステップS205)。
【0049】
バッドエリア管理回路6は、ステップS206において、供給された書き込みアドレス値18が、バッドエリア管理回路6に登録されているか否かの判断を行う。後で、
図6を用いてバッドエリア管理回路6の構成を説明するが、バッドエリア管理回路6は、バッドエリア情報登録レジスタ601を有しており、バッドエリア情報登録レジスタ601に、書き込みアドレス値18に該当するアドレス信号が既に登録されているか否かの判断が行われる。バッドエリア管理回路6に、書き込みアドレス値18に該当するアドレス信号が登録されている場合、ステップS207において、バッドエリア管理回路6から書き込み制御回路4へアドレス信号が供給され、このアドレス信号が書き込み制御回路4に内部書き込みアドレス信号として設定される。一方、バッドエリア管理回路6に、書き込みアドレス値18が登録されていない場合には、ライト要求23として供給された外部書き込みアドレス信号が内部書き込みアドレス信号として書き込み制御回路4に供給され、書き込み制御回路4に設定される。
【0050】
書き込み制御回路4は、設定された内部書き込みアドレス信号と、書き込まれるべきデータと、書き込み制御信号(ライトイネーブル信号)を、ステップS209において、メモリ部1に供給する。供給された内部書き込みアドレス信号によって指定されたメモリ回路2、3のそれぞれのアドレスに、データが書き込まれる(ステップS210)。このステップS210においては、ECC回路2aおよび3aにより、書き込まれるべきデータ(書き込み用データ)から誤り訂正用データも形成され、書き込み用データとともに、同じアドレスに書き込まれる。すなわち、メモリ回路2、3内のメモリ部2b、3bのそれぞれにおいて、同じアドレスに同じデータが書き込まれる。
【0051】
次に、メモリモジュール701における読み出し動作を
図3Aおよび
図3Bのフロチャート図に基づいて説明する。読み出し動作は、以下に述べるステップS300からS321によって実行される。これらのステップの内、ステップS300からS309までが、
図3Aに示されており、ステップS310からS321までが、
図3Bに示されている。
図3AのステップS309の後に、
図3Bのステップ310が実行される。
【0052】
図3Aにおいても、一点破線より上側は、CPU703による動作を示し、下側は、メモリモジュール701の動作を示している。
図3Aにおいて、ステップS300からS303までは、
図2に示したステップS200からS203までと類似している。すなわち、ステップS200からS203までは、CPU703による書き込み指示を示しているが、ステップS300からS303までは、CPU703による読み出し指示を示している。
図3Aでは、読み出し動作が指示されているため、CPU703からは外部書き込みアドレス信号ではなく、外部読み出しアドレス信号が外部バスIF7に供給される。ステップS303までは、
図2と類似しているので、その説明は省略する。
【0053】
ステップS304において、内部バスIF7から読み出し制御回路5に、外部読み出しアドレス信号を含むリード要求24が供給される。読み出し制御回路5は、外部読み出しアドレス信号を読み出しアドレス値20として、バッドエリア管理回路6に供給する(ステップS305)。
【0054】
バッドエリア管理回路6は、バッドエリア情報登録レジスタ601(後述する)を有しており、供給された読み出しアドレス値20に該当するアドレス信号がバッドエリア情報登録レジスタに登録されているか否かの判断を行う。該当するアドレス信号が、登録されていた場合、次にステップS307が実行される。ステップS307においては、バッドエリア管理回路6からアドレス信号が、読み出しアドレス変換要求21として出力され、読み出し制御回路5に設定される。一方、該当するアドレス信号が、バッドエリア管理回路6に登録されていない場合には、内部バスIF7からリード要求24として供給された外部読み出しアドレス信号が、ステップS308において、読み出し制御回路5に設定される。
【0055】
次に、読み出し制御回路5は、ステップS307あるいはS308で設定された読み出しアドレス信号と読み出し制御信号(リードイネーブル信号)をメモリ部1に供給する(ステップS309)。これにより、ステップS310において、メモリ部1内のメモリ回路2、3内のメモリ部2b、3bのそれぞれからデータが読み出される。ここで読み出されたデータは、書き込み動作において、同一のアドレスに書き込まれた処理用データと、書き込み用データに基づいて形成された誤り訂正用データの2種類のデータである。
【0056】
メモリ回路2および3に設けられたECC回路2aおよび3aのそれぞれにおいて、ステップS310で読み出された処理用データと誤り訂正用データとを用いて、誤りの有無を示す誤り情報、訂正した場合には訂正情報、訂正不可能な場合には訂正不可情報を含むECCエラー系情報14が形成され、読み出し制御回路5に供給される。読み出し制御回路5は、ECC回路2aおよび3aから供給されるECCエラー系情報14に基づいて、ステップS311で、データの復旧が可能か否かの判断を行う。すなわち、ECC回路2aおよび3aの両方から、2ビット以上のエラーで訂正不可であることを示す訂正不可情報を含むECCエラー系情報14が供給された場合、データの復旧は不可能となる。この場合には、次にステップS319を実施する。
【0057】
ステップS319では、読み出し制御回路5からバッドエリア管理回路6に対して、データ復旧不可の通知を、リードECC系エラー情報15として通知する。この通知を受けて、バッドエリア管理回路6は、ステップS320において、データ復旧不可を表す割り込み信号を形成し、重度障害の割り込み通知信号27として、CPU703に伝える。本実施の形態では、ステップS320の後のステップS321において、復旧不可能なデータを、読み出し制御回路5から、リードデータ25として内部バスIF7へ供給するようにしている。この様にすることにより、復旧不可能なデータをCPU703において、分析することが可能となるが、必ずしも、ステップS320の後にステップ321を実施しなくても良い。
【0058】
ステップS311で、復旧不可能なデータではないと判断した場合、メモリ回路2および3のそれぞれから読み出されたデータの内、正しく読み出されたデータが、ステップS312で、読み出し制御回路5に取り込まれる。ここで、正しく読み出されたデータ(あるいは正しく読み出せたデータ)とは、次の3種類に分類される。
【0059】
分類(1):ECC回路2aおよび3aの両方でエラーなしを示すECCエラー系情報14(誤りを示す誤り情報が含まれていない)が形成された場合には、メモリ回路2および3からの読み出されたデータが正しく読み出されたデータである。分類(2):ECC回路2aまたは3aのいずれか一方でエラーありを示すECCエラー系情報14が形成され、他方ではエラーなしを示すECCエラー系情報14が形成された場合には、エラーなしを示すECCエラー系情報14(誤りを示す誤り情報が含まれていない)を出力しているECC回路を有するメモリ回路から出力されているデータが正しく読み出されたデータである。分類(3):少なくとも1つのECC回路から1ビットエラーの訂正を示しているECCエラー系情報14(誤りを示す誤り情報と訂正を実施した旨を示す訂正情報を含む)が形成されている場合、そのECCエラー系情報14を形成しているECC回路を有するところのメモリ回路から出力されているデータが、正しく読み出されたデータである。メモリモジュールから出力するデータは1つであるため、正しいデータが2つある場合には、いずれか1つのデータが、読み出し制御回路5によって選択されるようにすれば良い。
【0060】
読み出し制御回路5においては、ステップS312の後で、故障発生の特定のために、ステップS313からS316を実施する。先ず、メモリ回路から供給されているECCエラー系情報14から、メモリ回路2においてエラーが発生したのかを、ステップS313で判断する。メモリ回路2においてエラーが発生している場合には、ステップS314で、メモリ回路2でエラーが発生している誤り情報と、発生しているエラーを訂正したのか2ビット以上で訂正不可能なのかを示す情報(訂正情報あるいは訂正不可情報)とをECCエラー系情報14として取り込む。次に、ステップS315において、メモリ回路3においてエラーが発生したのかを判断し、ステップS316において、メモリ回路3でエラーが発生している情報(誤り情報)と、発生しているエラーを訂正したのか、2ビット以上で訂正不可能なのかを示す情報(訂正情報あるいは訂正不可情報)とをECCエラー系情報14として取り込む。
【0061】
ステップS317において、読み出し制御回路5は、メモリ回路2および3のいずれかでエラーが発生したかを、メモリ回路2および3のそれぞれから取り込んだECCエラー系情報14により判断する。メモリ回路2および3のいずれかでエラーが発生していた場合には、ステップS318を実行する。ステップS318では、ステップS314およびステップS316で取り込んだECCエラー系情報14をリードECCエラー系情報15として、バッドエリア管理回路6に供給する。また、ステップS311で「正しく読み出されたデータ」と判定されたデータも、バッドエリア管理回路6にリードECCエラー系情報15として供給する。また、「正しく読み出されたデータ」と判定されたデータは、次のステップS321で、リードデータ25として、内部バスIF7を介して、CPU703へ供給される。
【0062】
ECC回路2aおよび3aの両方が、エラーなしを示した場合には、ステップS321が実行される。ステップS321では、いずれかのメモリ回路から読み出されたデータが、リードデータ25として、内部バスIF7へ供給され、CPU703に供給される。
【0063】
図4には、メモリモジュール701における診断動作を示すフロチャートが示されている。バッドエリア管理回路6は、読み出し制御回路5からリードECCエラー系情報15によってエラーの発生が通知されるまで、ステップS400で待機する。エラーの発生が通知されると、ステップS401をバッドエリア管理回路6は実施する。
【0064】
ステップS401において、バッドエリア管理回路6は、リードECCエラー系情報15と正しく読み出されたデータとを取り込む。また、このとき、読み出しアドレス値20を取り込み、エラーの発生したアドレスを、バッドエリア管理回路6は、この読み出しアドレス値20から把握する。リードECCエラー系情報15は、
図3Aおよび
図3Bで説明したように、メモリ回路2および3のそれぞれにおいて発生したエラーの状況を含んでいる。すなわち、本実施の形態においては、メモリ回路2および3のそれぞれにおいて、エラーが発生しているかを示す情報(誤り情報)、1ビットエラーで訂正されているかを示す訂正情報、2ビット以上のエラーで訂正不可を示す訂正不可情報が、バッドエリア管理回路6に供給される。
【0065】
次に、ステップS402において、バッドエリア管理回路6は、故障の診断を実施することをメモリモジュールの外部に通知するために、ビジー信号22を発生する。次のステップS403において、バッドエリア管理回路6は、診断のための書き込みアドレス信号と診断のために書き込まれるべきデータとを形成する。ここで、書き込みアドレス信号は、ステップS401において取り込んだ読み出しアドレス値20を用い、書き込むべきデータとして、同じくステップS401において取り込んだところの正しく読み出されたデータを用いる。正しく読み出されたデータを、診断用の書き込みデータとして用いることにより、診断の結果として故障が発生していないと判断した場合に書き込み回数の増加を防ぐことができ、消費電力の低減に寄与できる。上記の様にして形成された書き込みアドレス信号と書き込まれるべきデータは、このステップにおいて、バッドエリア管理回路6から書き込み制御回路4へ供給される。
【0066】
書き込み制御回路4は、ステップS404において、供給された書き込みアドレス信号と書き込むべきデータを、メモリ回路2および3のそれぞれに供給し、書き込み制御信号(ライトイネーブル信号)を発生する。これにより、メモリ回路2および3のそれぞれにおいて、供給された書き込みアドレス信号(内部書き込みアドレス信号)により指定されたアドレス(診断対象アドレス)に対して、診断用の書き込みデータの書き込み動作が実施される。メモリ回路2および3内のそれぞれのECC回路2aおよび3aは、診断用の書き込みデータに基づいた誤り訂正用データを形成する。形成された誤り訂正用データは、書き込まれるべきデータとともに、それぞれのメモリ回路2、3内のメモリ部2b、3bのアドレスに書き込まれる。
【0067】
ステップS404の後に、バッドエリア管理回路6は、読み出し制御回路5に対して診断結果リード要求17を、ステップS405において供給する。診断結果リード要求17は、ステップS401において取り込んだ読み出しアドレス値20を含んでいる。読み出し制御回路5は、診断結果リード要求17を受けることにより、メモリ回路2および3のそれぞれにおいて、読み出しアドレス値20で指定されるアドレスからデータの読み出しを行う。この時、同じアドレスに格納されている誤り訂正用データも読み出される。
【0068】
読み出されたデータ(誤り訂正用データと処理用データ)とを、ECC回路2aおよび3aが受け、誤りの検出と訂正が行われる。ECC回路2aおよび3aのそれぞれは、それを含むメモリ回路において、故障が発生しているか否かを示す誤り情報と、1ビットエラーで訂正したことを示す訂正情報あるいは2ビット以上のエラーで訂正不可を示す訂正不可情報を、ECCエラー系情報14として、読み出し制御回路5に供給する。
【0069】
読み出し制御回路5は、メモリ回路2および3のそれぞれから供給されるECCエラー系情報14に基づいて、メモリ回路2および/あるいは3において故障が発生しているか否かの判断を、ステップS406において行う。この時の判断は、例えばメモリ回路2および3の少なくとも一方から、故障が発生していることを示す情報が供給された場合、メモリ回路に故障が発生していると判断する。この判断動作は、診断結果リード要求17に応答して行われるため、診断結果リード要求17が供給された場合のみ、上記例示した様な判断動作を行う。
【0070】
ステップS406において、故障は発生していないと判断された場合、ステップS402で発生していたビジー信号22の発生を、バッドエリア管理回路6は停止する(ステップS411)。言い換えれば、ステップS402でアサートしたビジー信号22を、ステップS411でネゲートする。これにより、メモリモジュール701は、CPU703からリクエスト信号が供給されたとき、アクノリッジ信号を発生することになり、CPU703によるメモリモジュール701へのアクセスが可能となる。
【0071】
ステップS406において、故障が発生していると判断された場合には、次にステップS407が実行される。バッドエリア管理回路6は、後で
図6を用いて説明するがバッドエリア情報登録レジスタ601を有している。このバッドエリア情報登録レジスタ601には、それぞれアドレスを変換する前のアドレス信号と変換後のアドレス信号を対とした複数対のアドレス情報が格納されている。言い換えるならば、複数対のアドレス情報を有するアドレス変換テーブルが、バッドエリア管理回路6に設けられている。特に制限されないが、本実施の形態においては、アドレス変換テーブルに格納できるアドレス情報の数には制限がある。また、ステップS406において故障と判断されたところのアドレスに代わるアドレスが、メモリ回路2および3のそれぞれにおいて、予備のエリア内に予め用意されている。
【0072】
バッドエリア管理回路6は、故障と判断されたアドレスに代わる予備エリア内のアドレスを指定するアドレス信号を形成し、故障と判断されたアドレスを指定するアドレス信号を変換前のアドレス信号、予備エリア内のアドレスを指定するアドレス信号を変換後のアドレス信号とし、これらのアドレス信号を対として、アドレス変換テーブルに登録する(ステップS409)。このステップS409の登録動作を行う前に、有限な数を格納するアドレス変換テーブルの登録状況をステップS407で確認する。すなわち、ステップS407において、バッドエリア管理回路6は、アドレス変換テーブルに格納されているアドレス信号の数が、有限な数を超えていないかの確認を行う。有限な数を超えていた場合、次にステップS408が実行される。
【0073】
ステップS408では、バッドエリア管理回路6内のアドレス変換テーブルへの登録数が、有限値を超えているため、新たな登録が困難となる。そのため、このステップでは、バッドエリア管理回路6が、メモリモジュール701の外部に設けられたCPU703に対して、割り込み信号を発生し、メモリモジュール701に重要な障害が発生している旨を通知する。本実施の形態においては、バッドエリアとして登録可能な数を超えたバッドエリアを検出した旨を通知する割り込み信号を、バッドエリア管理回路6が形成する。
【0074】
アドレス変換テーブルに登録する数を超えていない場合、ステップS407の次に、ステップS409が実施され、上記したように、アドレス変換テーブルに、変換前のアドレス信号として故障のアドレス信号が登録され、予備のエリアを指定するアドレス信号が変換後のアドレス信号として登録される。これにより、予備のエリア内にアドレスが確保されたので、次回の読み出し動作に備えて、ステップS410で、正しく読み出せたデータ(ステップS403参照)を変換後のアドレス信号が指定する予備エリア内のアドレスに格納する。
【0075】
すなわち、バッドエリア管理回路6は、正しく読み出せたデータと、アドレス変換テーブルに格納した変換後のアドレス信号とを書き込み制御回路4に供給する。この場合、変換後のアドレス信号と正しく読み出せたデータは、診断データライト要求16として、バッドエリア管理回路6から書き込む制御回路4に供給される。書き込み制御回路4は、供給された変換後のアドレス信号で指定されるところのメモリ回路2および3のそれぞれの予備エリア内のアドレスに、正しく読み出せたデータの書き込みを行う。この場合も、ECC回路により、誤り訂正用データは形成され、予備エリア内の同じアドレスに書き込まれる。結果として、メモリ回路2および3のそれぞれの予備エリア内のアドレスに、正しく読み出せたデータと同じデータが格納される。その後、上記したステップS411が実行される。
【0076】
なお、バッドエリア管理回路6は、ステップS401とステップS406の2回で、リードECCエラー系情報15を受けることになる。ステップS401でリードECCエラー系情報15を受けているのか、ステップS406でリードECCエラー系情報15を受けているのかの判断は、例えば、診断結果リード要求17を発行した後であれば、リードECCエラー系情報15を受けたステップは、ステップS406であると判断すれば良い。
【0077】
図5は、本発明に係わるメモリモジュールの構成を示すブロック図である。
図5には、メモリモジュール701のメモリ部1の構成と読み出し制御回路5の構成が示されている。メモリ部1は、
図1で述べた様に、メモリ回路2および3を有する。それぞれのメモリ回路2、3は、ECC回路2a、3aを有している。書き込み制御回路4からのライトデータとライト制御信号は、データライト信号としてメモリ回路2および3に共通に供給される。ライト制御信号は、内部書き込みアドレス信号と、ライトイネーブル信号を含んでいる。これにより、メモリ回路2および3のそれぞれにおいて、内部書き込みアドレス信号によって指定された同じアドレスへ、同じデータが書き込まれる。また、ECC回路2aおよび3aにより形成された誤り訂正用データも、内部書き込みアドレス信号によって指定された同じアドレスに書き込まれる。なお、
図5では、メモリ部2b、3bは省略されている。
【0078】
メモリ回路2および3には、読み出し制御回路5からリード制御信号が共通に供給される。リード制御信号は、内部読み出しアドレス信号とリードイネーブル信号を有している。これにより、読み出し動作においては、メモリ回路2および3のそれぞれにおいて、内部読み出しアドレス信号により指定される同じアドレスからデータが読み出される。メモリ回路2および3のそれぞれにおいて、アドレスには、処理に用いるために書き込まれた処理用データと該データに基づいてECC回路により形成された誤り訂正用データとが格納されている。読み出された処理用データと誤り訂正用データは、それぞれのメモリ回路に設けられたECC回路に供給され、処理用データおよび/あるいは誤り訂正用データにエラー(誤り)が存在するか否かの確認が、ECC回路により行われ、処理用データはリードデータ12として出力される。もし、エラーが存在している場合には、ECC回路により訂正されてから出力される。
【0079】
本実施の形態においては、前述したように、ECC回路2aおよび3aは、1ビットエラーの訂正ができ、2ビット以上のエラーが存在する場合には、エラーである旨を通知するものとして説明している。すなわち、各ECC回路は、確認により、エラーが存在しているか否かの誤り情報と、エラーが存在する場合、1ビットエラーで訂正したことを示す訂正情報と、2ビット以上のエラーが存在する場合、2ビット以上のエラーで訂正不可を示す訂正不可情報をECCエラー系情報14として出力する。
【0080】
各ECC回路は、メモリ回路に対応している。すなわち、ECC回路2aは、メモリ回路2に設けられ、メモリ回路2における読み出しデータにエラーが存在しないかの確認を行い、ECCエラー系情報14を出力する。このとき、2ビット以上のエラーが存在しなければ、訂正したデータあるいは訂正していないデータ(エラーが存在していない場合)も出力する。同様に、ECC回路3aは、メモリ回路3に設けられ、メモリ回路3における読み出しデータにエラーが存在しないかの確認を行い、ECCエラー系情報14を出力する。このとき、2ビット以上のエラーが存在しなければ、訂正したデータあるいは訂正していないデータ(エラーが存在していない場合)も出力する。
【0081】
図面が複雑になるのを避けるために、
図1では、リードデータ12およびECCエラー系情報14を、それぞれ1本の信号線で示した。しかしながら、2個のメモリ回路2、3からの信号がメモリ部1から読み出し制御回路5に供給されるため、
図5に示されている様に、それぞれ2本のリードデータ12とECCエラー系情報14が、メモリ部1から読み出し制御回路5に供給される。すなわち、メモリ回路2からのリードデータ12とECCエラー系情報14と、メモリ回路3からのリードデータ12とECCエラー系情報14が、読み出し制御回路5に供給される。
【0082】
図5には、読み出し制御回路5の主要部が示されている。すなわち、ECCエラー判定回路500と読み出しセレクタ501が示されている。読み出しセレクタ501は、メモリ回路2および3のそれぞれからのリードデータ12を受け、ECCエラー判定回路500からの選択信号によって、いずれかを選択する。ECCエラー判定回路500は、メモリ回路2および3のそれぞれから、ECCエラー系情報14を受け、例えば、これらを纏めた信号をリードECCエラー系情報15として形成し、バッドエリア管理回路6に供給する。
【0083】
ECC回路2a、3aのそれぞれにより、メモリ回路2、3においてエラーが発生しているか否かを示すECCエラー系情報14が形成され、ECCエラー判定回路500によって、ECC回路2a、3aからのECCエラー系情報14に基づいたリードECCエラー系情報15が形成される。ECC回路2a、3aのそれぞれは、訂正可能なエラー、例えばソフトエラー等の一時的なエラーであっても、誤りを示す誤り情報を形成する。すなわち、ECCエラー系情報14は、メモリ回路2、3において、一時的にエラーを発生している場合も形成される。従って、ECC回路2a、3aにより形成されるECCエラー系情報14は、メモリ回路2、3が故障している可能性を示す故障可能性情報と見なすことができる。
【0084】
一方、リードECCエラー系情報15は、ECC回路2a、3aからのECCエラー系情報14に基づいて形成されているため、メモリ回路2、3を含むメモリ部1に一時的にエラーが発生している場合にも形成される。従って、リードECCエラー系情報15は、複数のメモリ回路を含むメモリ部1のうちの少なくとも1個のメモリ回路が故障している可能性を示す故障可能性情報と見なすことができる。本実施の形態においては、故障可能性情報であるリードECCエラー系情報15は、ECCエラー判定回路500により形成されるため、故障可能性情報を形成する検出回路は、ECCエラー判定回路500により構成されていると見なすことができる。また、故障可能性情報は、信号線を介してバッドエリア管理回路6に供給されるため、故障可能性信号と見なすことができる。
【0085】
バッドエリア管理回路6は、リードECCエラー系情報15を確認することにより、いずれのメモリ回路でエラーが発生しているのか、訂正可能なのか等を判断することができる。これを、レジスタ等を用いて、CPU703に知らせることができる。
【0086】
また、ECCエラー判定回路500は、メモリ回路2、3から出力されているリードデータの内、正しく読み出せたデータが、読み出しセレクタ501によって選択されるように選択信号を形成する。正しく読み出せたデータを選択する基準は、一例をステップS311で説明した。例えば、ステップS311で述べた分類(2)に合致する様な、ECCエラー系情報14がメモリ回路2、3から供給された場合、エラーなしを示しているECCエラー系情報14を出力しているメモリ回路からのリードデータ12が、読み出しセレクタ501により選択される。選択されたリードデータは、正しく読み出されたデータとして、先に述べた診断動作のための書き込みデータおよび/あるいは内部バスIF7を介してメモリモジュールの外へ出力されるデータとなる。
【0087】
本実施の形態においては、読み出し制御回路5に、ECCエラー判定回路500が設けられている。しかしながら、ECCエラー判定回路500は、読み出し制御回路5とは、別に設けても良い。この場合には、読み出し制御回路5とは別に設けられたECCエラー判定回路500から、セレクト信号が読み出し制御回路5に供給され、リードECCエラー系情報15の内、ECCエラー系情報14に基づいた情報が、バッドエリア管理回路6に供給される。バッドエリア管理回路6に供給される正しく読み出せたデータは、読み出し制御回路5から出力されることになる。
【0088】
図6は、バッドエリア管理回路6の構成を示すブロック図である。バッドエリア管理回路6は、RAM診断内容登録レジスタ600とバッドエリア情報登録レジスタ601とを有している。同図には示されていないが、RAM診断内容登録レジスタ600およびバッドエリア情報登録レジスタ601のそれぞれは、制御回路を有している。それぞれに含まれている制御回路とレジスタ(RAM診断内容登録レジスタ600、バッドエリア情報登録レジスタ601)との協働により、次のように動作する。なお、RAM診断内容登録レジスタ600およびバッドエリア情報登録レジスタ601のそれぞれは、複数のレジスタを有している。
【0089】
RAM診断内容登録レジスタ600は、読み出し制御回路5からリードECCエラー系情報15と読み出しアドレス値20を受け、レジスタに、リードECCエラー系情報15に含まれている情報と読み出しアドレス値20とを格納し、保持する。リードECCエラー系情報15は、先にも述べた様に、正しく読み出せたデータと、メモリ回路2、3のそれぞれにおいてエラーがあるか否かを示す誤り情報、エラーがあった場合に1ビットエラーで訂正したことを示す訂正情報、エラーがあった場合で2ビット以上のエラーで訂正不可を示す訂正不可情報を含んでいる。
【0090】
RAM診断内容登録レジスタ600は、リードECCエラー系情報15の供給に応答して、ビジー信号22を形成して、内部バスIF7へ供給する。また、レジスタ(保持回路)に保持された読み出しアドレス値20および正しく読み出せたデータとに基づいて、診断データライト要求16を形成し、書き込み制御回路4に供給する。これにより、メモリ回路2、3へ診断用アドレス信号と診断用のデータが供給され、メモリ回路2、3のそれぞれにおいて書き込み動作が開始される。診断用のデータが書き込まれるので、診断動作が開始されるとも見なせる。
【0091】
診断データライト要求16を供給した後で、RAM診断内容登録レジスタ600は、診断結果リード要求17を形成して、読み出し制御回路5へ供給する。供給後、RAM診断内容登録レジスタ600は、所定時間待機状態になる。なお、診断結果リード要求17を形成する際には、レジスタに格納されている読み出しアドレス値20が、診断の際の読み出しアドレス信号として用いられる。
【0092】
RAM診断内容登録レジスタ600は、待機状態にあるときに、読み出し制御回路5からリードECCエラー系情報15が供給されると、バッドエリア情報登録レジスタ601に対してバッドエリア情報登録指示を発行する。このバッドエリア情報登録指示は、診断動作で故障と判断したアドレス値と、このアドレス値が故障のアドレス値として有効であることを示す有効情報を含んでいる。ここで、診断動作で故障と判断したアドレスは、レジスタに格納されているところの読み出しアドレス値20である。また、有効情報は、このアドレス値が故障であることの正当性を示す情報である。
【0093】
バッドエリア情報登録指示を発行した後、バッドエリア情報登録レジスタ601から、RAM診断内容登録レジスタ600へ、アドレスの変換後のアドレス信号(図では変換先アドレス値と記載)が供給された場合、RAM診断内容登録レジスタ600は、レジスタに保持されているところの正しく読み出せたデータと変換後のアドレス信号とを含む診断データライト要求16を形成する。この形成された診断データライト要求16は、書き込み制御回路4に供給され、更にメモリ回路2、3のそれぞれに供給される。これにより、メモリ回路2、3のそれぞれに予備のエリアとして設けられていたアドレス(変換後のアドレス信号によって指定されるアドレス)に正しく読み出せたデータが書き込まれる。なお、この書き込みにおいては、ECC回路により形成された誤り訂正データも、同じアドレスに書き込まれる。変換後のアドレスに、正しく読み出せたデータの書き込みが終了することにより、診断動作は終了する。
【0094】
RAM診断内容登録レジスタ600は、もし、変換後のアドレス信号を受ける前に、バッドエリア情報登録レジスタ601からバッドエリア登録上限割り込み信号を受けた場合、RAM診断内容登録レジスタ600は、重度の障害が発生したものと判断し、ビジー信号22の形成を中止する。
【0095】
次に、バッドエリア情報登録レジスタ601について、説明する。バッドエリア情報登録レジスタ601は、上記したバッドエリア情報登録指示の供給に応答して、その動作を開始する。バッドエリア情報登録レジスタ601は、アドレス変換テーブルとして機能する複数組のレジスタを有している。1組のレジスタは、変換前のアドレス値を保持する変換前レジスタと、それと対をなし、変換後のアドレス値を保持する変換後レジスタと、変換前レジスタに故障のアドレスを示すアドレス値が格納されていることを示す有効ビットを持つ有効レジスタとを含んでいる。バッドエリア情報登録指示が供給されることにより、バッドエリア情報登録レジスタ601は、バッドエリア情報登録指示に含まれているアドレス値(読み出しアドレス値20)が、アドレス変換テーブルを構成する複数組のレジスタにおける変換後レジスタのそれぞれに格納されている変換後アドレス値と、一致しないかの確認を行う。
【0096】
一致しない場合、複数組のレジスタのそれぞれの有効ビットを確認し、有効ビットが有効を示していない1組のレジスタを特定し、特定したレジスタ組の変換前レジスタに、バッドエリア情報登録指示に含まれているアドレス値を格納し、予備のエリアにおけるアドレスを示すアドレス値を生成して、特定したレジスタ組の変換後レジスタに格納する。また、バッドエリア情報登録指示に含まれているアドレス値を、変換前レジスタに格納する際に、バッドエリア情報登録指示に含まれている有効情報を、有効レジスタの有効ビットに格納する。これにより、アドレス変換テーブルへ、バッドエリア情報登録指示に含まれているアドレス値が登録され、変換前のアドレス値がアドレス変換テーブルに供給された際に、それと対をなす変換後のアドレス値がアドレス変換テーブルから出力される。
【0097】
一方、バッドエリア情報登録指示に含まれているアドレス値が、変換後レジスタに格納されているアドレス値と一致した場合、予備のエリアにおけるアドレスに故障が発生していることになる。そのため、この場合には、予備のエリアにおける新たなアドレスを指定する新たなアドレス値を生成し、変換後レジスタに新たなアドレス値を格納する。
【0098】
また、有効ビットを確認するときに、有効ビットが有効を示していないレジスタ組を特定できなかった場合は、アドレス変換テーブルを構成する複数組のレジスタの全てに、アドレス値が格納されていると考えられる。言い換えるならば、バッドエリア登録上限に達していることになる。従って、この場合に、バッドエリア情報登録レジスタ601は、上記したバッドエリア登録上限割り込みを発生して、重度な障害が発生していることを通知する。なお、本実施の形態では、変換後アドレス信号は発生するようにしているが、予め変換後レジスタのそれぞれに変換後のアドレス値として予備のエリアにおけるアドレスを指定するアドレス値を格納しておいても良い。
【0099】
メモリ部1に対する読み出し動作においては、読み出し制御回路5に供給された読み出しアドレス信号は、読み出しアドレス値20として、読み出し制御回路5からバッドエリア管理回路6に供給される。この読み出しアドレス値20は、バッドエリア情報登録レジスタ601に供給され、アドレス変換テーブルを構成する複数組のレジスタにおける変換前レジスタに格納されているアドレス値と比較される。この比較により一致した場合には、一致した変換前アドレス値を格納した変換前レジスタと対をなす変換後レジスタに格納されているアドレス値を含む読み出しアドレス変換要求21が、バッドエリア情報登録レジスタ601により形成され、読み出し制御回路5に供給される。これにより、予備のエリアからデータの読み出しが行われる。一致しない場合には、例えば、変換不要を示す読み出しアドレス変換要求21が形成され、読み出し制御回路5は、内部バスIF7から供給された読み出しアドレス信号に従った読み出し動作を行う。
【0100】
メモリ部1に対する書き込み動作においても同様に、書き込み制御回路4に供給された書き込みアドレス信号は、書き込みアドレス値18として、書き込み制御回路4からバッドエリア管理回路6に供給される。この書き込みアドレス値18は、バッドエリア情報登録レジスタ601に供給され、アドレス変換テーブルを構成する複数組のレジスタにおける変換前レジスタに格納されているアドレス値と比較される。この比較により一致した場合には、一致した変換前アドレス値を格納した変換前レジスタと対をなす変換後レジスタに格納されているアドレス値を含む書き込みアドレス変換要求19が、バッドエリア情報登録レジスタ601により形成され、書き込み制御回路4に供給される。これにより、予備のエリアへのデータの書き込みが行われる。一致しない場合には、例えば、変換不要を示す書き込みアドレス変換要求19が形成され、書き込み制御回路4は、内部バスIF7から供給された書き込みしアドレス信号に従った書き込み動作を行う。
【0101】
リードECCエラー系情報15が、メモリ回路2および3の両方において、2ビット以上のエラーであり、訂正不可であることを示す訂正不可情報であった場合、RAM診断内容登録レジスタ600は、データ復旧不可を表す割り込み信号(図ではデータ復旧不可割り込みと記載)を形成し、割り込み通知用信号27としてCPU703に伝える。特に制限されないが、RAM診断内容登録レジスタ600とバッドエリア情報登録レジスタ601とは、レジスタアクセスパス26を介して内部バスIF7と接続されている。これにより、内部バスIF7を介して、CPU703によりRAM診断内容登録レジスタ600とバッドエリア情報登録レジスタ601内のレジスタにアクセスし、レジスタに設定されているデータを読み出したり、データの設定を行うことが可能とされている。
【0102】
図8は、アドレス変換を説明するための説明図である。
図8の(A)には、本実施の形態におけるメモリ部1のアドレス空間が示されている。メモリ部1は、16進数で0x0000から0xFFFCまでのアドレス空間を有している。このアドレス空間の内、16進数で0xFFF0から〜0xFFFCまでが予備のメモリ領域(エリア)に割り当てられている。また、同図において破線から右側にはECC回路により形成された誤り訂正データが格納される訂正用データ領域が設けられている。特に制限されないが、1回のアクセスで、書き込まれるべきデータ(書き込み用データ)は、4バイト(1バイトは8ビット)で、この書き込み用データに基づいて形成された誤り訂正用データは1バイトである。この様に、予備のエリアあるいは通常のエリアにおいて、一つのアドレス(例えば16進数で0xFFEC)に書き込み用データと誤り訂正用データが格納される。なお、メモリ回路2および3は、二重化されているため、それぞれのメモリ回路2、3がメモリ部1と同じアドレス空間を有している。
【0103】
図8の(B)には、
図8の(A)において、アドレス:0x1000(16進数)とアドレス:0x4000(16進数)のそれぞれにおいて、故障が発生している場合を示している。この場合には、アドレス変換テーブルを構成する複数組のレジスタの内の1組のレジスタに、変換前のアドレス値として0x1000(16進数)が格納され、同じ組のレジスタに、変換後のアドレス値として0xFFF4(16進数)が格納される。また、別のレジスタ組に、変換前のアドレス値として0x4000(16進数)が格納され、同じ組のレジスタに、変換後のアドレス値として0xFFF0(16進数)が格納される。これにより、読み出し動作および書き込み動作で、CPU703からメモリモジュール701へのアクセスにおいて、故障のアドレス:0x1000(16進数)あるいは0x4000(16進数)がCPU703により与えられた場合、予備のエリアにあるアドレス:0xFFF4(16進数)あるいは0x4000(16進数)がアクセスされることになる。
【0104】
図8の(C)は、
図8の(B)と類似しているので、相違点を説明する。故障診断で、アドレス:0x1000(16進数)に故障を発見し、アドレス変換テーブルに、変換前のアドレスとして、0x1000(16進数)を登録し、変換後のアドレスとして、0xFFF4(16進数)を登録した。登録後の読み出し動作あるいは書き込み動作で、アドレス:0x1000(16進数)をアクセスしたとき、エラーが生じた。この場合、アドレス変換テーブルの働きにより、アクセスは予備のエリアにあるアドレス:0xFFF4(16進数)に対して行われる。この場合には、変換後のアドレス値が、アドレス変換テーブルを構成する変換後レジスタに格納されているか否かの確認を行い、格納されている場合には、変換後レジスタに新たなアドレス値である0xFFF8(16進数)を格納する。この様にすることにより、予備として設けたエリアに故障が生じても、予備のエリアにおける新たなアドレス:0xFFF8(16進数)へアクセスすることができ、故障の回避をすることができる。
【0105】
アドレス変換テーブルを、複数組のレジスタで構成することを述べたが、メモリ回路によりアドレス変換テーブルを構成しても良い。
【0106】
本実施の形態によれば、メモリ部1へのアクセスの際であって、故障の可能性がある場合に、故障診断が実施される。そのため、故障診断の回数を低減することが可能となり、消費電力の増大を低減することが可能となる。また、故障と判断した場合、故障と判断したアドレスを、予備エリアにあるアドレスへ置換する。そのため、故障が発生してもメモリモジュールを交換する必要はなく、継続してメモリモジュールを使用することが可能となる。ECC回路により、訂正可能であっても、故障診断が実施される。そのため、ソフトエラーとハード的な故障とを区別することが可能となり、ソフトエラーとハード的な故障とが重なることを低減することが可能となり、より信頼度の高い半導体集積回路装置を提供することが可能となる。さらに、アドレス変換テーブルの変換後アドレスと故障アドレスとの比較を行う様にすれば、予備のエリアにおける故障も回避することが可能となり、信頼性のより高い半導体集積回路装置を提供することが可能となる。
【0107】
(実施の形態2)
図9は、本発明に係わる他の実施の形態の構成を示すブロック図である。
図9には、メモリ部904と読み出し制御回路905のブロックが示されている。
図5におけるメモリ部1が、
図9のメモリ部904に変更され、
図5における読み出し制御回路5が、
図9の読み出し制御回路905に変更される。
【0108】
本実施の形態においては、メモリ部904に、3個以上の奇数個のメモリ回路が設けられる。同図では、奇数個のメモリ回路として3個のメモリ回路900、901、902が設けられている。これらのメモリ回路900、901、902のそれぞれには、内部バスIF7から、ライトデータとライト制御信号が、共通に供給される。ライト制御信号は、アドレス信号とライトイネーブル信号を含んでいる。これにより、3個のメモリ回路900、901、902のそれぞれには、同じアドレスに同じ書き込み用データが書き込まれる。また、アドレス信号とリードイネーブル信号を含むリード制御信号が、3個のメモリ回路900、901、902に対して共通に供給される。これにより、それぞれのメモリ回路900、901、902の同じアドレスからデータが読み出される。従って、メモリ回路900、901、902は、多重化されていることになる。
【0109】
メモリ回路900、901、902のそれぞれから読み出されたデータは、リード系信号として、読み出し制御回路905に供給される。読み出し制御回路905は、メモリ回路900、901、902のそれぞれから供給されるリード系信号を受けるデータ不一致判定回路903を有している。データ不一致判定回路903は、リード系信号の間で不一致が発生しているかを判定する。例えば、1個のメモリ回路902からのリード系信号が残りの2個のメモリ回路900、901からのリード系信号と異なる場合、データ不一致判定回路は、多数決の論理に従い、残り2個のメモリ回路900、901からのリード系信号が正しく読み出されたデータと判定し、出力する。また、不一致したことを示す不一致信号を、データ不一致判定回路903は形成する。
【0110】
データ不一致判定回路903から出力される不一致信号と正しく読み出されたデータとが、
図5に示したリードECCエラー系情報15と見なされる。また、
図4に示した診断動作においては、読み出し動作のときの不一致信号に応答して、ステップS401が開始される。この診断動作のステップS404で、メモリ部904に書き込まれるべき診断データは多数決の論理で正しいと判定したデータ(正しく読み出されたデータ)を用いる。すなわち、データ不一致判定回路903からのリードデータが、診断動作の時の書き込みデータとされる。診断動作のステップS406においても、データ不一致信号が形成された場合、このデータ不一致信号により、
図6に示したRAM診断内容登録レジスタ600の動作を開始させる。
【0111】
この実施の形態によれば、各メモリ回路900、901、903にECC回路を設ける必要がなくなり、メモリモジュールの高速化を図ることが可能となる。すなわち、奇数個のメモリ回路を用いることにより、多数決の論理で、正しく読み出されたデータを推定することが可能となる。また、データ不一致判定回路903において、ビット単位で3個のメモリ回路からのリード系信号を比較するため、ビットの位置が異なれば、2つのメモリ回路で異なる値を出力しても、エラーの訂正をすることが可能となる。
【0112】
この実施の形態においては、メモリ回路900、901、902が、一時的にエラーを発生しているときも、不一致信号が形成される。従って、不一致信号は、リードECCエラー系情報15と同様に、メモリ部904において少なくとも1個のメモリ回路が故障している可能性があることを示す故障可能性信号と見なすことができる。この場合、データ不一致判定回路903が、読み出し動作において、故障の可能性を検出する回路(故障検出回路)を構成していると見なすことができる。なお、読み出し制御回路905は、
図5と同様に、主要部のみが、
図9に示されている。
【0113】
(実施の形態3)
図6に示したRAM診断内容登録レジスタ600に、次のレジスタが追加される。この実施の形態においては、例えば、1個のアドレスに対して、ECC回路によって複数回のエラー検出が行われる。追加されるレジスタは、ECC回路によってエラーとして検出される回数の上限値を設定するエラー上限レジスタ(図示せず)と、ECC回路によってエラーなしとして検出される回数の上限値を設定する許容上限レジスタ(図示せず)である。
【0114】
エラー上限レジスタと許容上限レジスタは、レジスタアクセス用パス26に接続され、CPU703により、それぞれのレジスタに値を設定できる様にされる。これらのエラー上限レジスタと許容上限レジスタを設けたことに対応して、バッドエリア情報登録レジスタ601には、診断動作において、ECC回路がエラーとして判定した回数をカウントする故障カウンタ(図示せず)と、診断動作において、ECC回路によりエラーが検出されなかった回数をカウントするパスカウンタ(図示せず)とが設けられる。
【0115】
上記したエラー上限レジスタ、許容上限レジスタ、故障カウンタおよびパスカウンタを設けた構成の動作を次に説明する。
図10は、この実施の形態の動作を示すフロチャート図である。
図10に示したステップS1001からS1013は、
図4に示したステップS403からS410の代わりに実行される。すなわち、
図4に示したステップS402の次に、
図10に示したステップ(S1001からS1013)が実行される。
図10に示したステップS1000は、
図4に示したステップS400からS402を含んでいるものと理解されたい。
【0116】
まず、初期設定としてステップS1000よりも以前のステップ(S9999)において、CPU703によって、上記したエラー上限レジスタおよび許容上限レジスタのそれぞれに数値を設定する。後の説明で理解されると思うが、1個のアドレスに対するECC回路を用いた診断は、それぞれのレジスタに設定された数値だけ実行される。言い換えるならば、エラー上限レジスタに設定された数値だけ、エラーの発生が検出されれば、1つのアドレスに対する診断動作は終了する。同様に、許容上限レジスタに設定された数値だけ、エラーなしが検出されれば、そのアドレスに対する診断動作は終了する。
【0117】
図10において、ステップS1001は、1個のアドレスに対する診断動作を開始する前の初期ステップである。このステップS1001において、上記した故障カウンタおよびパスカウンタのそれぞれは、それぞれの状態がクリアされる。次のステップS1002は、
図4のステップS403とS404を含むステップであり、正しく読み出されたデータが診断のためのデータとして、1個の対象アドレスに書き込まれる。ステップS1003は、
図4のステップS405を含むステップであり、上記した対象アドレスから、診断のために書き込んだデータとそれに基づいて形成された誤り訂正用データが、このステップで読み出される。ステップS1004は、
図4のステップS406を含むステップである。このステップS1004において、対象アドレスから読み出されたデータを基にしてECC回路がエラーの有無(誤り情報)と、エラーの種類(1ビットエラーで訂正したことを示す訂正情報、2ビット以上のエラー発生で訂正不可を示す訂正不可情報)を判定する。
【0118】
ステップS1004で、エラーが有りと判定した場合、ステップS1005において、上記した故障カウンタの値をインクリメントする。一方、ステップS1004で、エラーは無いと判定した場合、ステップS1006において、上記したパスカウンタの値をインクリメントする。次にステップS1007において、故障カウンタの値と上記したエラー上限レジスタに設定されている値との比較が行われる。この比較において、エラー上限レジスタに設定されている値よりも、故障カウンタの値が小さい場合、次にステップS1012が実行される。ステップS1012においては、パスカウンタの値と上記した許容上限レジスタに設定されている値との比較が行われる。許容上限レジスタに設定されている値が、パスカウンタの値よりも大きい場合、ステップS1002に戻る。これにより、ECC回路によりエラーとして判定された回数が、エラー上限レジスタに設定されている回数に達するまで、あるいはECC回路によりエラー無しと判定された回数が、許容上限レジスタに設定されている回数に達するまで、1個の対象アドレスに対して診断データの書き込み、読み出し、ECC回路による判定が繰り返される。
【0119】
ステップS1007において、故障カウンタの値がエラー上限レジスタに設定されている値(数値)よりも大きくなった場合、ステップS1008からS1011が実行される。ここで、ステップS1008は、
図4のステップS407と同じ処理を行い、ステップS1009は、
図4のステップS408と同じ処理を行う。また、ステップS1010は、
図4のステップS409と同じ処理を行い、ステップ1011は、
図4のステップS410と同じ処理を行う。ステップS1012において、パスカウンタの値が許容上限レジスタに設定されている値(数値)を超えたと判定された場合、次にステップS1013が実行される。ステップS1009およびステップ1011が終了したときも、次にステップS1013が実行される。ステップS1013において、1個のアドレスに対して診断が終了した旨を示す情報が形成される。このステップの後に
図4に示したステップS411が実行される。
【0120】
この実施の形態によれば、1個の対象アドレスに対して複数回の診断が行われる。故障が、例えばソフトエラーにより発生しているのであれば、時間の経過によりエラーの発生は消滅する可能性がある。そのため、複数回の診断を繰り返すことにより、エラー無しと判定されるようになる。一方、故障がハード的に発生しているので有れば、複数回の診断を繰り返しても、エラー無しの判定には到達しないと考えられる。従って、この実施の形態によれば、故障の原因がハード的な原因かソフト的な原因かを特定して、対応することが可能となる。また、エラー上限レジスタと許容上限レジスタを別々に設けたことにより、信頼性を考慮して、それぞれに設定される上限の数値を変えることも可能である。もちろん、この2個のレジスタは、1個の上限レジスタに変更しても良い。この場合には、上限レジスタに、エラー発生の許容回数とエラー無しの許容回数が設定され、ステップS1007とS1012のそれぞれにおいて、上限レジスタの値が、故障カウンタとパスカウンタと比較される。この様にすることにより、半導体集積回路装置の小型化を図ることが可能となる。
【0121】
(実施の形態4)
図11は、本発明に係わるバッドエリア管理回路の他の構成を示すブロック図である。同図に示したバッドエリア管理回路6は、
図6に示したバッドエリア管理回路と類似しているので、相違点のみを説明する。
【0122】
この実施の形態においては、電気的に書き込み可能な不揮発性メモリ1102が、バッドエリア管理回路6に設けられる。本実施の形態では、フラッシュメモリが電気的に書き込み可能な不揮発性メモリ1102として用いられている。フラッシュメモリ1102は、フラッシュインタフェース回路(図では、フラッシュI/Fと記載している)1101を介してバッドエリア情報登録レジスタ601に接続されている。バッドエリア情報登録レジスタ601が有するアドレス変換テーブルにアドレスを登録すると、その登録したアドレスは、フラッシュインタフェース回路1101により、フラッシュメモリ1102にコピーされる。また、電源の投入に応答して、フラッシュインタフェース回路1101は、フラッシュメモリ1102に格納されているアドレスを、アドレス変換テーブルへ登録する。
【0123】
この実施の形態によれば、アドレス変換テーブルは、高速に動作する揮発性のレジスタにより構成することが可能であり、メモリモジュールの高速化を図ることができる。一方、電源投入の際には、フラッシュメモリ1102からアドレス変換テーブルに登録されるべきアドレスが、揮発性のレジスタに供給されて、保持される。そのため、電源遮断後に電源を投入した場合、診断動作においてアドレス変換テーブルへのアドレス登録を減らすことができる。その結果として、メモリモジュールの高速化を図ることが可能となる。
【0124】
(実施の形態5)
図12は、本発明に係わるバッドエリア管理回路6に設けられるレジスタの構成を示すブロック図である。本実施の形態では、バッドエリア管理回路6に複数の状態レジスタ1200から1204が設けられる。状態レジスタ1200〜1204のそれぞれは、レジスタアクセス用パス26に接続されている。各状態レジスタは、レジスタアクセス用パス26を介してCPU703によりアクセスできるようにされている。状態レジスタ1200〜1204には、メモリモジュールの状態を示す情報が格納され、CPU703によって読み出すことが可能とされる。例えば、状態レジスタ1200には、リードECCエラー系情報15に含まれている情報の内、メモリ回路2に関する情報(誤り情報、訂正情報、訂正不可情報)が格納される。状態レジスタ1201には、リードECCエラー系情報15に含まれている情報の内、メモリ回路3に関する情報(誤り情報、訂正情報、訂正不可情報)が格納される。
【0125】
この実施の形態によれば、メモリモジュールの状態をCPU703が確認することができ、故障の解析を容易化することが可能となる。
【0126】
(実施の形態6)
バッドエリア管理回路6に、1ビットエラーを許可する許可レジスタが設けられる。この許可レジスタは、レジスタアクセス用パス26を介して、その値が設定できるようにされる。この許可レジスタに1ビットエラーを許可する情報をCPU703によって設定する。1ビットエラーを許可する情報を設定することにより、メモリ回路2および3のそれぞれにおいて、1個のアドレスに格納されるデータに1ビットの誤りが含まれていても、アドレス変換テーブルには、そのアドレスを指定するアドレス値は登録されない。これにより、アドレス変換テーブルに登録される数の低減を図ることが可能となる。この場合、アドレス変換テーブルに登録されないので、予備のエリアの消費についても低減を図ることが可能となり、例えば2ビット以上のエラーに対する救済を多くすることが可能となる。
【0127】
図4のステップS406において、エラーを有していると判定された場合、
図4の実施の形態では、次にステップS407が実施される。本実施の形態においては、ステップS407を実行する前に、許可レジスタに許可を表す情報が設定されているかを確認するステップAS1(図示せず)が追加される。また、この確認するステップAS1で、許可を表す情報が設定されていると判定した場合には、リードECCエラー系情報15に含まれるメモリ回路2および3のエラー情報を確認するステップAS2(図示せず)が追加される。ステップAS2では、メモリ回路2および3からのエラー情報が、2ビット以上のエラーで訂正不可を表す情報が含まれているかを確認する。2ビット以上のエラーで訂正不可を表す情報が含まれている場合は、
図4に示したステップS409を実行し、アドレス変換テーブルへの登録を行う。これに対して、2ビット以上のエラーで訂正不可を表す情報が含まれていない場合には、次にステップS411を実行する。また、ステップAS1で、許可レジスタに、許可を表す情報が登録されていないと判断した場合には、次に
図4のステップS407が実行される。
【0128】
(実施の形態7)
図4に示したステップS404からS406が削除され、ステップS403とステップS407との間に、2回の診断ステップ(診断用のデータの書き込み、読み出し、エラー判定)が追加される。1回目の診断ステップでは、正しく読み出されたデータに対してビット反転した診断用のデータが作成され、対象のアドレスに書き込まれる。次に、書き込まれたデータを読み出し、リードECCエラー系情報15に基づいてエラーの有無を判断し、判断結果を一時的に保持しておく。2回目の診断ステップでは、正しく読み出されたデータを対象のアドレスに書き込む。その後で、対象のアドレスからデータの読み出しを行い、リードECCエラー系情報15に基づいてエラーの有無を判断する。保存しておいた1回目の判断結果と2回目の判断結果のいずれかで、エラーであることを示す結果があった場合、その対象のアドレスをアドレス変換テーブルに登録して、予備のエリアにあるアドレスに代替えする様に、
図4のステップS407からS411を実行する。これに対して、1回目の判断結果と2回目の判断結果のいずれもが、エラーであることを示す結果を含んでいない場合には、アドレス変換テーブルへの登録をせずに、次にステップS411を実行する。
【0129】
1回目の診断ステップで、正しく読み出されたデータをビット反転させて形成させたデータを診断用の書き込みデータとして用いる様にした。これにより、1回目の診断ステップでは、その前の書き込み動作の時とはビット反転したデータが書き込まれることになる。これにより、対象のアドレスにおける各ビットが診断用のデータにおける各ビットに追従して変化しているかを確認することができ、診断の誤りを低減し、信頼性の向上を図ることができる。なお、2回目の診断ステップで正しく読み出されたデータを書き込むようにしているので、2回目にビット反転した診断用のデータを書き込むのに比べて、書き込み回数の低減を図ることが可能となる。
【0130】
以上本発明者によってなされた発明を、前記実施形態に基づき具体的に説明したが、本発明は、前記実施形態に限定されるものではなく、その要旨を逸脱しない範囲において種々変更可能である。例えば、各実施の形態を、相互に組み合わせても良いし、ECC回路は2ビット以上のエラーに対して訂正可能なECC回路であっても良い。