(57)【要約】      （修正有）【課題】  ビット誤りが増加する場合の許容範囲を拡大し、リフレッシュ周期を一層長くして更なる低消費電力化を図ることが可能な半導体記憶装置等を提供する。【解決手段】  データ領域と検査コード領域を有するメモリアレイと、データ保持状態において所定周期のリフレッシュ動作を制御するリフレッシュ制御手段と、データの所定のビット列を処理単位Ｂ１、Ｂ２として符号化演算を行って検査コードを生成するとともに、検査コードを用いた復号化演算を行ってデータの誤り検出訂正を行う演算手段と、メモリアレイの互いに直交するＸ方向とＹ方向に対して生成された第１コードと第２コードを検査コード領域に書き込むように制御するエンコード制御手段と、第１コードに基づく第１のビット誤り訂正と第２コードに基づく第２のビット誤り訂正とを演算手段に交互に実行させ、それぞれを少なくとも２回以上実行させるように制御するデコード制御手段とを備えている。【選択図】  図７
2006004560.tif 000002
【特許請求の範囲】
【請求項１】
データを記憶するデータ領域と前記データの誤り検出訂正用の検査コードを記憶する検査コード領域を有するメモリアレイと、
データ保持状態において前記メモリアレイに対する所定周期のリフレッシュ動作を制御するリフレッシュ制御手段と、
前記データ領域の所定のビット列を処理単位とする符号化演算を行って前記検査コードを生成するとともに、前記検査コードを用いた復号化演算を行って前記データに対する誤り検出訂正を行う演算手段と、
前記データ保持状態に移行する際のエンコード処理として、前記メモリアレイの互いに直交する第１の方向と第２の方向に対し、前記第１の方向のビット列に基づき前記演算手段により生成された第１コードと、前記第２の方向のビット列に基づき前記演算手段により生成された第２コードをそれぞれ区別可能に前記検査コード領域に書き込むように制御するエンコード制御手段と、
前記データ保持状態を終了する際のデコード処理として、前記第１の方向に対する前記第１コードに基づく第１のビット誤り訂正と、前記第２の方向に対する前記第２コードに基づく第２のビット誤り訂正とを、前記演算手段に交互に実行させ、少なくとも前記第１のビット誤り訂正と前記第２のビット誤り訂正をそれぞれ２回以上実行させるように制御するデコード制御手段と、
を備えることを特徴とする半導体記憶装置。
【請求項２】
前記演算手段は、前記復号化演算の対象となるビット列中に１ビット以上の誤りが発生したことを示す第１の信号と、前記ビット列中に１ビットのみのビット誤りが発生したビット位置を示す第２の信号をそれぞれ出力することを特徴とする請求項１に記載の半導体記憶装置。
【請求項３】
前記デコード制御手段は、前記第２のビット誤り訂正の際、前記演算手段から前記第１の信号が出力されるとともに前記第２の信号が出力されない場合。復号化対象のビット列中に訂正不能なビット誤りが存在すると判定することを特徴とする請求項２に記載の半導体記憶装置。
【請求項４】
前記デコード制御手段は、前記復号化対象のビット列中に訂正不能なビット誤りが存在すると判定したとき、当該ビット列の位置情報を保持し、後続の前記第２のビット誤り訂正時に前記保持される位置情報のビット列に対してのみ前記第２のビット誤り訂正を行うように制御することを特徴とする請求項３に記載の半導体記憶装置。
【請求項５】
前記デコード制御手段は、前記第１のビット誤り訂正及び前記第２のビット誤り訂正について、予め設定された繰り返し回数をそれぞれ実行するように制御することを特徴とする請求項１に記載の半導体記憶装置。
【請求項６】
前記第１の方向は前記メモリアレイの行方向であり、前記第２の方向は前記メモリアレイの列方向であることを特徴とする請求項１から５のいずれかに記載の半導体記憶装置。
【請求項７】
通常時の動作を制御する通常動作モードと、前記データ保持状態における消費電力を低減するように動作を制御する低消費電力モードを切り替え制御する動作制御手段を更に備え、前記リフレッシュ制御手段は、前記低消費電力モードにおいて長周期のリフレッシュ動作を制御することを特徴とする請求項１から６のいずれかに記載の半導体記憶装置。
【請求項８】
データを記憶するデータ領域と前記データの誤り検出訂正用の検査コードを記憶する検査コード領域とからなる記憶領域を有する半導体記憶装置の誤り訂正方法であって、
前記データの所定のビット列を処理単位として符号化演算を行って前記検査コードを生成するとともに、前記検査コードを用いた復号化演算を行って前記データの誤り検出訂正を行う演算手段を制御し、
前記記憶領域の互いに直交する第１の方向と第２の方向に対し、前記第１の方向のビット列に基づき前記演算手段により生成された第１コードと、前記第２の方向のビット列に基づき前記演算手段により生成された第２コードをそれぞれ区別可能に前記検査コード領域に書き込むエンコード処理と、
前記第１の方向に対する前記第１コードに基づく第１のビット誤り訂正と、前記第２の方向に対する前記第２コードに基づく第２のビット誤り訂正とを、前記演算手段に交互に実行させ、少なくとも前記第１のビット誤り訂正と前記第２のビット誤り訂正をそれぞれ２回以上実行させるデコード処理と、
を含むことを特徴とする半導体記憶装置の誤り訂正方法。
【請求項９】
前記復号化対象のビット列中に訂正不能なビット誤りが存在する場合、当該ビット列の位置情報を保持し、後続の前記第２のビット誤り訂正時に前記保持される位置情報のビット列に対してのみ前記第２のビット誤り訂正を行うことを特徴とする請求項８に記載の半導体記憶装置の誤り訂正方法。
【請求項１０】
前記第１のビット誤り訂正及び前記第２のビット誤り訂正について、予め設定された繰り返し回数をそれぞれ実行することを特徴とする請求項８に記載の半導体記憶装置の誤り訂正方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＤＲＡＭ（Dynamic Random Access Memory）等の半導体記憶装置に関し、特に、記憶領域の行方向と列方向に対し、それぞれ検査コードを生成して記憶し、検査コードを用いて誤り検出訂正を行うように構成された半導体記憶装置及びその誤り訂正方法の技術分野に関するものである。
【背景技術】
【０００２】
従来から、ＤＲＡＭのデータ保持状態における一層の低消費電力化を実現するため、通常動作時よりも長い周期でリフレッシュ動作を制御することが求められている。そのため、ＤＲＡＭにＥＣＣ回路等による誤り訂正機能を搭載し、リフレッシュ動作の長周期化によって増加するビット誤りを訂正可能な構成が提案されている。例えば、この種の構成として、特許文献１に開示されている半導体集積回路装置が挙げられる。
【０００３】
特許文献１に開示された半導体集積回路装置は、誤り検出訂正用の検査ビットを保持する手段と、複数のデータから検査ビットを生成する手段と、検査ビットを用いて誤りビットを訂正する手段を備え、データ保持状態に移行する際に検査ビットを生成して記憶する構成を備えている。このような構成により、リフレッシュ動作の長周期化が可能となり、データ保持状態における低消費電力化を図ることができる。
【特許文献１】特開２００２−５６６７１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかしながら、上記従来の構成によれば、ビット誤りが許容範囲を超えて増加した場合、誤り訂正が困難な誤りパターンとなる場合も少なくない。例えば、ＤＲＡＭに採用される一般的な誤り訂正回路によれば、行方向又は列方向のビット列中に１ビットのみの誤りが発生した場合は訂正できるが、行方向又は列方向に２ビット以上の誤りが発生する場合は訂正できなくなる。一方、誤り訂正回路としてビット列中に２ビット以上の誤りがある場合に訂正可能な構成を採用するのは、回路規模が増大してコスト上昇を招く。よって、上記従来の構成では、誤り発生率を訂正可能な範囲に抑えるべく、リフレッシュ周期を制限する必要があり、低消費電力化を妨げることが問題であった。
【０００５】
そこで、本発明はこれらの問題を解決するためになされたものであり、一般的な誤り訂正回路を組み込んだＤＲＡＭにおいて、ビット誤りが増加する場合の許容範囲を拡大し、リフレッシュ周期の一層の長期化を実現して、更なる低消費電力化を図ることが可能な半導体記憶装置等を提供することを目的とする。
【課題を解決するための手段】
【０００６】
上記課題を解決するために、本発明の半導体記憶装置は、データを記憶するデータ領域と前記データの誤り検出訂正用の検査コードを記憶する検査コード領域を有するメモリアレイと、データ保持状態において前記メモリアレイに対する所定周期のリフレッシュ動作を制御するリフレッシュ制御手段と、前記データ領域の所定のビット列を処理単位とする符号化演算を行って前記検査コードを生成するとともに、前記検査コードを用いた復号化演算を行って前記データに対する誤り検出訂正を行う演算手段と、前記データ保持状態に移行する際のエンコード処理として、前記メモリアレイの互いに直交する第１の方向と第２の方向に対し、前記第１の方向のビット列に基づき前記演算手段により生成された第１コードと、前記第２の方向のビット列に基づき前記演算手段により生成された第２コードをそれぞれ区別可能に前記検査コード領域に書き込むように制御するエンコード制御手段と、前記データ保持状態を終了する際のデコード処理として、前記第１の方向に対する前記第１コードに基づく第１のビット誤り訂正と、前記第２の方向に対する前記第２コードに基づく第２のビット誤り訂正とを、前記演算手段に交互に実行させ、少なくとも前記第１のビット誤り訂正と前記第２のビット誤り訂正をそれぞれ２回以上実行させるように制御するデコード制御手段とを備えることを特徴とする。
【０００７】
このように構成された本発明によれば、半導体記憶装置のリフレッシュ動作を伴うデータ保持状態に移行するときにエンコード処理が実行されるとともに、データ保持状態を終了するときにデコード処理が実行される。そして、エンコード処理では、互いに方向が直交するビット列を符号化演算の単位とし、デコード処理では、直交する２方向について交互にビット誤り訂正を行うようにしたので、１ビットのみ訂正可能な符号化アルゴリズムであっても、演算回数を増やすことにより次第にビット誤りが訂正されていく。よって、複雑な符号化アルゴリズムを用いることなくビット誤りを減らすことにより、リフレッシュ周期を長くすることができ、半導体記憶装置の消費電力の低減を図ることができる。
【０００８】
本発明の半導体記憶装置において、前記演算手段が、前記復号化演算の対象となるビット列中に１ビット以上の誤りが発生したことを示す第１の信号と、前記ビット列中に１ビットのみのビット誤りが発生したビット位置を示す第２の信号をそれぞれ出力するようにしてもよい。
【０００９】
本発明の半導体記憶装置において、前記デコード制御手段が、前記第２のビット誤り訂正の際、前記演算手段から前記第１の信号が出力されるとともに前記第２の信号が出力されない場合。復号化対象のビット列中に訂正不能なビット誤りが存在すると判定するようにしてもよい。
【００１０】
本発明の半導体記憶装置において、前記デコード制御手段が、前記復号化対象のビット列中に訂正不能なビット誤りが存在すると判定したとき、当該ビット列の位置情報を保持し、後続の前記第２のビット誤り訂正時に前記保持される位置情報のビット列に対してのみ前記第２のビット誤り訂正を行うように制御してもよい。
【００１１】
本発明の半導体記憶装置において、前記デコード制御手段が、前記第１のビット誤り訂正及び前記第２のビット誤り訂正について、予め設定された繰り返し回数をそれぞれ実行するように制御してもよい。
【００１２】
本発明の半導体記憶装置において、前記第１の方向を前記メモリアレイの行方向とし、前記第２の方向を前記メモリアレイの列方向としてもよい。
【００１３】
本発明の半導体記憶装置において、通常時の動作を制御する通常動作モードと、前記データ保持状態における消費電力を低減するように動作を制御する低消費電力モードを切り替え制御する動作制御手段を更に備え、前記リフレッシュ制御手段が、前記低消費電力モードにおいて長周期のリフレッシュ動作を制御するようにしてもよい。
【００１４】
また、本発明の半導体記憶装置の誤り訂正方法は、データを記憶するデータ領域と前記データの誤り検出訂正用の検査コードを記憶する検査コード領域とからなる記憶領域を有する半導体記憶装置の誤り訂正方法であって、前記データの所定のビット列を処理単位として符号化演算を行って前記検査コードを生成するとともに、前記検査コードを用いた復号化演算を行って前記データの誤り検出訂正を行う演算手段を制御し、前記記憶領域の互いに直交する第１の方向と第２の方向に対し、前記第１の方向のビット列に基づき前記演算手段により生成された第１コードと、前記第２の方向のビット列に基づき前記演算手段により生成された第２コードをそれぞれ区別可能に前記検査コード領域に書き込むエンコード処理と、前記第１の方向に対する前記第１コードに基づく第１のビット誤り訂正と、前記第２の方向に対する前記第２コードに基づく第２のビット誤り訂正とを、前記演算手段に交互に実行させ、少なくとも前記第１のビット誤り訂正と前記第２のビット誤り訂正をそれぞれ２回以上実行させるデコード処理とを含むことを特徴とする。
【００１５】
本発明の半導体装置の誤り訂正方法において、前記復号化対象のビット列中に訂正不能なビット誤りが存在する場合、当該ビット列の位置情報を保持し、後続の前記第２のビット誤り訂正時に前記保持される位置情報のビット列に対してのみ前記第２のビット誤り訂正を行うようにしてもよい。
【００１６】
本発明の半導体装置の誤り訂正方法において、前記第１のビット誤り訂正及び前記第２のビット誤り訂正について、予め設定された繰り返し回数をそれぞれ実行してもよい。
【発明の効果】
【００１７】
本発明によれば、エンコード処理時にメモリアレイの２方向について第１コード、第２コードを生成し、デコード処理時に第１コードと第２コードを用いたビット誤り訂正を交互に行うようにしたので、一般的な誤り訂正機能を用いて処理手順の工夫により、ビット誤りが増加する場合の許容範囲を広げ、リフレッシュ周期の一層の長期化を実現して半導体記憶装置の低消費電力化を図ることが可能となる。
【発明を実施するための最良の形態】
【００１８】
以下、本発明の実施形態について図面を参照しながら説明する。本実施形態においては、低消費電力化を実現するために、誤り訂正機能を担う回路を内蔵し、長周期のリフレッシュ動作を制御するように構成されたダイナミック形ＲＡＭ（ＤＲＡＭ）に対して本発明を適用する場合を説明する。
【００１９】
図１は、本実施形態に係るＤＲＡＭの全体構成を示すブロック図である。ここでは、４バンク構成で記憶容量６４ＭビットのＤＲＡＭを例にとって説明する。図１に示すＤＲＡＭは、４つのバンク０〜バンク３に対応する４つのメモリアレイ１０と、各々のメモリアレイ１０の周辺に設けられた行デコーダ１１、ワードドライバ１２、センスアンプ１３、Ｉ／Ｏゲート１４、列デコーダ１５、コーデック１６とを備え、さらに制御回路２０と、Ｉ／Ｏバッファ２１を備えて構成されている。
【００２０】
以上の構成において、各々のメモリアレイ１０は、行方向と列方向にマトリクス配置されデータを記憶するデータ領域と、このデータ領域に対応する検査ビット列（検査コード）を記憶する検査コード領域を備えている。なお、検査コードに基づく誤り訂正機能については後述する。なお、４つのバンク０〜３に対応する４つのメモリアレイ１０は、いずれも同一の構成を備え、その周辺の行デコーダ１１、ワードドライバ１２、センスアンプ１３、Ｉ／Ｏゲート１４、列デコーダ１５、コーデック１６についても、４つのバンク０〜３について同一の構成となっている。
【００２１】
メモリアレイ１０に対しては、動作を指令するメモリ制御コマンドに基づき、アクセスすべき所望の行アドレス及び列アドレスが指定される。行デコーダ１１は、指定される行アドレスに対応する１本のワード線(不図示)を選択する。そして、ワードドライバ１１は、行デコーダ１１により選択されたワード線を選択レベルに駆動する。
【００２２】
一方、センスアンプ１３は、選択レベルに駆動されるワード線とそれに接続するメモリアレイ１０からの読み出しデータに対応して相補データ線に生じる電位差を増幅し、Ｉ／Ｏゲート１４に出力する。列デコーダ１５は、上述のように指定された列アドレスに対応する列を選択し、Ｉ／Ｏゲート１４のデータのうち選択された行のデータがＩ／Ｏバッファ２１に送られる。Ｉ／Ｏバッファ２１は、メモリアレイ１０に対するアクセス時に、外部とＩ／Ｏゲート１４の間で１６ビットのデータＤ＜０：１５＞の入力又は出力を行うバッファとして機能する。
【００２３】
ここで、図２に示すように、４つのバンク０〜３に対応するメモリアレイ１０は、それぞれ１６個のマット１００により構成されている。すなわち、図２の奥行き方向に重ねて示すように、１６個のマット１００（０）〜１００（１５）からなる。そして、所定のメモリアレイ１０にアクセスする際、１６個のマット１００（０）〜１００（１５）に対して同時に読み出し又は書き込みが行われる。各々のマット１００は、１０２４×１０２４ビット構成のデータ領域と、３２×１０２４ビット構成の検査コード領域とからなる。この検査コード領域は、誤り訂正符号としての検査コードが記憶され、データ領域とは異なるアドレス空間として認識される。
【００２４】
なお、検査コード領域に記憶される検査コードは、コーデック１６によって生成及びそれを用いた誤り訂正が行われるが、具体的な動作については後述する。
【００２５】
図２の構成において、４つのバンク０〜３はいずれも共通の構成を備えるため、データ領域に関しては各バンクについて１Ｍ×１６＝１６Ｍビットの記憶容量を持ち、ＤＲＡＭ全体では１６Ｍビット×４＝６４Ｍビットの記憶容量を持つ。なお、図２の４つのバンク０〜３は、２ビットのバンク選択信号に基づき、いずれかを選択可能に構成されている。
【００２６】
次に図１に戻って、制御回路２０は、本実施形態に係るＤＲＡＭの各種動作を制御し、図１の各構成要素における内部タイミングを制御する。この制御回路２０は、ＤＲＡＭに対するメモリ制御コマンドを判別するコマンド制御部３１と、ＤＲＡＭの動作状態の切り替え制御を行う状態制御部３２と、メモリアレイ１０に対して上述の検査コードを用いた誤り訂正機能を制御するＥＣＣ（Error Correcting Code）制御部３３が含まれる。
【００２７】
制御回路２０に対しては、外部からの制御信号として、行アドレスストローブ信号（／ＲＡＳ）、列アドレスストローブ信号（／ＣＡＳ）、ライトイネーブル信号（／ＷＥ）、クロックイネーブル信号ＣＫＥ、クロック信号ＣＬＫが供給される（なお、記号／は、ローレベルの時に信号がアクティブとなることを意味する）。また、制御回路２０に対しては、１０ビットのアドレス信号Ａ＜０：９＞及び２ビットのバンク選択信号Ｂ＜０：１＞が入力される。
【００２８】
制御回路２０のコマンド制御部３１は、外部から入力される制御信号の組合せパターンにより定められたメモリ制御コマンドを判別し、必要な制御信号を出力する。図３は、本実施形態における主要なメモリ制御コマンドの種類を示す図である。なお、図３に示す制御コマンドのうち、Ｅｎｔｒｙコマンド及びＥｘｉｔコマンドに関しては、後述の状態制御部３２により判別される。
【００２９】
ＡＣＴコマンドは、バンク選択信号によって指定される所定のバンクを選択するとともに、アドレス信号に基づく所定の行アドレスを選択してアクティブ状態にする。ＲＤコマンドは、選択された行アドレスにおいてアドレス信号に基づく所定の列アドレスを選択し、メモリアレイ１０に記憶されたデータを読み出す。ＷＴコマンドは、選択された行アドレスにおいてアドレス信号に基づく所定の列アドレスを選択し、メモリセル１０に対しデータを書き込む。ＲＥＦコマンドは、メモリセル１０のキャパシタに蓄積された電荷を保持するためのリフレッシュ動作を実行する。ＰＲＥコマンドは、選択された行アドレスのデータを読み出した後に選択されたバンクをプリチャージする。
【００３０】
次に、制御回路２０の状態制御部３２は、本実施形態において設けられた２つのモードの切り替えに先立って、上述のＥｎｔｒｙコマンドとＥｘｉｔコマンドを図３の制御信号の組み合せパターンに基づき判別する。すなわち、本実施形態では、通常時の動作を制御する通常動作モードと、ＤＲＡＭのデータ保持状態における消費電力を低減するように動作を制御する低消費電力モードの２つのモードが設けられている。図３に示すように、Ｅｎｔｒｙコマンドは、通常動作モードで動作しているＤＲＡＭの動作状態を低消費電力モードに遷移させるとともに、Ｅｘｉｔコマンドは、低消費電力モードで動作しているＤＲＡＭの動作状態を通常動作モードに遷移させる。この低消費電力モードは、本実施形態に係るＤＲＡＭに対し、誤り訂正を行いつつ長周期のリフレッシュ動作を行って低消費電力を実現するものである。
【００３１】
ここで、図４及び図５を用いて上述のＤＲＡＭにおける動作状態について説明する。図４は、ＤＲＡＭの複数の動作状態の関係と機能を説明する図であり、図５は、図４の状態遷移図に対応する概略のタイミングフロー図である。図４において、ＤＲＡＭの動作状態は通常動作モードと低消費電力モードの２つに分かれ、低消費電力モードには、エンコード処理、パワーオフ状態、バーストリフレッシュ処理、デコード処理の４つの状態（処理）が含まれる。
【００３２】
通常動作モード時に上述のＥｎｔｒｙコマンドが入力されると、低消費電力モードにおけるエンコード処理に遷移する。このとき、図５に示すように、通常動作モードにおいて、図３のＥｎｔｒｙコマンドの組合せパターンに基づき制御信号が変化し、そのタイミングで低消費電力モードに切り替わる。図５の例では、最初にエンコード処理（Ｅｎｃ）を行った後、パワーオフ状態（Ｐｏｆｆ）とバーストリフレッシュ（Ｂｒｅｆ）を交互に繰り返し、最後にデコード処理（Ｄｅｃ）を行うことがわかる。また、詳細は省くが、バーストリフレッシュ（Ｂｒｅｆ）及びデコード処理（Ｄｅｃ）はパワーオンした後に行う。
【００３３】
エンコード処理は、メモリアレイ１０における各行のビット列に基づく行方向の検査コード（第１コード）と各列のビット列に基づく列方向の検査コード(第２コード)を生成する符号化演算を実行し、検査コード領域に書き込む。エンコード処理による検査コードの生成が終了すると、パワーオフ状態に遷移し、ＤＲＡＭの各部に供給される電源のうち不要な電源を全て停止する。そして、所定時間経過後に、バーストリフレッシュ処理に遷移する。
【００３４】
このバーストリフレッシュ処理においては、メモリセル１０の全てのデータ領域及び検査コード領域に対する連続的なリフレッシュ動作を行う。リフレッシュ動作に際しては、リフレッシュカウンタ（不図示）がメモリセル１０の行アドレスを発生して順次カウントアップする。
【００３５】
バーストリフレッシュ処理に続いて、再びパワーオフ状態に遷移し、所定時間経過後に再びバーストリフレッシュ処理に遷移する。そして、これ以降はバーストリフレッシュ処理とパワーオフ状態を交互に繰り返す。この場合、低消費電力モードにおいては、隣接するバーストリフレッシュ処理の間隔（周期）が予め設定され、例えば１秒程度と長周期に設定されている。
【００３６】
一方、パワーオフ状態又はバーストリフレッシュ処理に際し、上述のＥｘｉｔコマンドが入力されるとデコード処理に遷移する。このとき、図３のＥｘｉｔコマンドの組合せパターンに基づき制御信号が変化し、そのタイミングでデコード処理が開始される。このデコード処理は、エンコード処理により生成された検査コードに基づき、メモリアレイ１０のデータと検査コードを用いた復号化演算を実行し、メモリセル１０の行方向又は列方向に生じた１ビットのエラーを訂正する。
【００３７】
デコード処理が終了すると、通常動作モードに自動遷移し、再びＥｎｔｒｙコマンドが入力されるまで通常動作モードを継続する。なお、低消費電力モードを継続する時間は、ＤＲＡＭの制御に応じた任意の時間を設定することができる。低消費電力モードにおいては、相対的にパワーオフ状態の時間がバーストリフレッシュ処理に要する時間より長いため、通常動作モードに比べて大幅に消費電力を低減することができる。
【００３８】
次に図６は、制御回路２０のＥＣＣ制御部３３の構成を示すブロック図である。図６に示すように、制御回路２０には、低消費電力モードにおける動作を全体的に制御する低消費電力モード制御部４１と、エンコード処理を制御するエンコード制御部４２と、デコード処理を制御するデコード制御部４３と、バーストリフレッシュ処理を制御するＢＲＥＦ制御部４４と、バーストリフレッシュ処理の周期を制御するＢＲＥＦ周期制御部４５と、外部に出力すべき信号を選択的に切り替えるマルチプレクサ４６、４７が含まれる。
【００３９】
低消費電力モード制御部４１には、上記の状態制御部３２からＥｎｔｒｙコマンドとＥｘｉｔコマンドの判別信号が入力され、これらの各コマンドに従って制御を行う。低消費電力モード制御部４１は、エンコード制御部４２、デコード制御部４３、ＢＲＥＦ制御部４３に対し、その制御開始タイミングに際し、それぞれ信号ｅｎｃ＿ｓｔａｒｔ、ｄｅｃ＿ｓｔａｒｔ、ｂｒｅｆ＿ｓｔａｒｔを供給するとともに、制御終了タイミングに際し、それぞれから出力される信号ｅｎｃ＿ｅｎｄ、ｄｅｃ＿ｅｎｄ、ｂｒｅｆ＿ｅｎｄを受け取る。また、低消費電力モードを終了するときに、信号ｅｎｄ＿ｏｆ＿ｅｘｉｔを外部に出力する。
【００４０】
エンコード制御部４２は、エンコード処理を実行する際に各メモリセル１０に付随するコーデック１６による符号化演算を制御する。また、デコード制御部４３は、デコード処理を実行する際に上述のコーデック１６による復号化演算を制御する。一方、ＢＲＥＦ制御部４４は、バーストリフレッシュ処理を制御する際に各メモリセル１０の動作を制御する。このとき、バーストリフレッシュ処理では、予め設定された周期を計時するタイマとしてのＢＲＥＦ周期制御部４５により制御される。
【００４１】
エンコード制御部４２、デコード制御部４３、ＢＲＥＦ制御部４３からそれぞれ出力される制御信号は、２つのマルチプレクサ４６、４７に入力される。マルチプレクサ４６には、メモリセル１０の動作を制御する信号が入力され、それらを選択的に切り替えてメモリ制御信号として出力する。マルチプレクサ４７には、コーデック１６の動作を制御する信号が入力され、それらを選択的に切り替えてコーデック制御信号として出力する。
【００４２】
次に図７は、エンコード処理において生成される検査コードの構成を示す図である。図７においては、メモリアレイ１０を構成する一のマット１００を示している。マット１００のデータ領域では、（Ｘ、Ｙ）でビット位置を特定し、Ｘ、Ｙがいずれも０〜１０２３の範囲で変化する１０２４×１０２４ビットのマトリクス状となっている。また、マット１００の検査コードは、Ｘ方向の１０２４ビットを処理単位として分割する第１コード体系と、Ｙ方向の１０２４ビットを処理単位として分割する第２コード体系に分けて示している。
【００４３】
第１コード体系に基づき生成された検査コード（第１コード）は、第１コード領域に書き込まれる。一方、第２コード体系に基づき生成された検査コード（第２コード）は、第２コード領域に書き込まれる。これら第１コード領域と第２コード領域は、図７に示すように、いずれも一のマット１００に対し１６×１０２４ビットの記憶容量を有し、その両者を併せて３２×１０２４ビットの検査コード領域を構成する。ただし、上記第１コード及び第２コードは両者を区別可能に保持できる限り、検査コード領域における配置は自由である。
【００４４】
なお、データ領域はビット位置を（Ｘ、Ｙ）で表しているが、それと区別するため、第１コード領域はビット位置を（Ｘ１、Ｙ１）で表し、第２コード領域はビット位置を（Ｘ２、Ｙ２）で表している。
【００４５】
図７に示すように、マット１００のデータ領域において、Ｘ方向に沿って第１ボックスＢ１を定義している。この第１ボックスＢ１は、第１コード体系によって分割される１０２４ビットのビット列からなり、マット１００のデータ領域に対するＸ方向のエンコード処理の単位となる。図７においては、Ｙ＝０の位置における１つの第１ボックスＢ１を示しているが、実際にはエンコード処理に従って、Ｙ＝０からＹ＝１０２３までの１０２４個の第１ボックスＢ１が順次設定される。そして、Ｙ＝ｎの位置の第１ボックスＢ１に対して生成された検査コードは、第１コード領域におけるＹ１＝ｎの位置の１６ビット（Ｘ１＝０〜１５）に書き込まれることになる。
【００４６】
また、図７に示すように、マット１００のデータ領域に対し、Ｙ方向に沿って第２ボックスＢ２を定義している。この第２ボックスＢ２は、第２コード体系によって分割された１０２４ビットからなり、マット１００のデータ領域に対するＹ方向のエンコード処理の単位となる。図７においては、Ｘ＝０の位置における１つの第２ボックスＢ２を示しているが、実際にはエンコード処理に従って、Ｘ＝０からＸ＝１０２３までの１０２４個の第２ボックスＢ２が順次設定される。この場合、Ｘ＝ｎの位置の第２ボックスＢ２に対して生成された検査コードは、第２コード領域におけるＸ２＝ｎの位置の１６ビット（Ｙ２＝０〜１５）に書き込まれることになる。
【００４７】
次に、本発明の演算手段として機能するコーデック１６（図１）の構成及び動作について説明する。図８は、コーデック１６の回路構成の一例を示す図である。図８においては、巡回ハミング符号化に基づき、生成多項式Ｇ（ｘ）＝Ｘ１６＋Ｘ１２＋Ｘ５＋１
を演算するコーデック１６の例を示している。コーデック１６には、１６段のシフトレジスタ及び周辺の論理回路が含まれる。１６段のシフトレジスタは、順進・逆進機能付きであり、順進用クロックｆｗｄ＿ｃｌｋが入力されると図８の右から左に（順方向）データを順次転送し、逆進用クロックｂｗｄ＿ｃｌｋが入力されると図８の左から右に（逆方向）にデータを順次転送する。
【００４８】
ここで、図８の構成を備えるコーデック１６における演算処理の具体例について、図９を用いて説明する。図９（ａ）には、コーデック１６のエンコード処理における検査コード生成の具体例を示している。検査コードを生成する際、１０２４ビットのデータが１ビットずつシフトレジスタに読み込まれる。シフトレジスタは順方向にシフトされ、全てのビットの読み込みが終了したときに１６段のシフトレジスタには検査コードが生成される。図９(ａ)の例では、先頭が１でそれ以降が全て０のデータを入力する場合の検査コードが示されている。なお、このように生成された検査コードが上述のメモリアレイ１０の検査コード領域において、第１コード体系又は第２コード体系に従って所定位置に書き込まれる。
【００４９】
次に、図９（ｂ）には、コーデック１６のデコード処理においてビット誤りがない場合の具体例を示している。デコード処理に際しては、１０２４ビット及び検査コードの１６ビットの計１０４０ビットが１ビットずつシフトレジスタに読み込まれる。シフトレジスタは順方向にシフトされ、読み込みが終了したときに１６段のシフトレジスタが全てゼロになる。このとき、コーデック１６から出力されるｅｒｒｏｒ信号が０となる。
【００５０】
一方、図９（ｃ）には、コーデック１６のデコード処理においてビット誤りが生じた場合の具体例を示している。図９（ｂ）の場合と同様、データ及び検査コードの計１０４０ビットが１ビットずつシフトレジスタに読み込まれる。この場合、読み込みが終了したときに１６段のシフトレジスタはゼロだけでなく、１となるビットが含まれる。このとき、コーデック１６から出力されるｅｒｒｏｒ信号は１となる。そして、１ビットのビット誤りが生じた場合、コーデック１６のシフトレジストを逆方向にシフトさせることにより、誤りがあるビット位置にてｌｏｃａｔｉｏｎ信号が１に変化する。
【００５１】
図９（ｃ）の右下にコーデック１６を逆進させたときの出力パターンの変化の一例を示している。ビット位置１０２３に対応するシフトレジスタの出力において１となるビットが生じているので、ビット１０２３に誤りがあることを判別することができる。ただし、１０２４ビットのうち１ビットの誤りがある場合は検出できるが、２ビット以上の誤りがあるときは、シフトレジスタを逆方向にシフトさせても、誤りビットの位置を検出することはできない。
【００５２】
次に、コーデック１６の動作制御に用いるコーデック制御コマンドについて説明する。図１０は、コーデック制御コマンドの種類を示す図である。これらのコーデック制御コマンドは、コーデック１６に入力される制御信号の組合せパターンによって定められ、主にＥＣＣ制御部３３のエンコード制御部４２及びデコード制御部４３からコーデック１６に対して出力される。
【００５３】
図１０において、ＧＥＮ＿ＣＯＤＥコマンドは、データ領域から読み出されたビットを符号化演算の対象としてコーデック１６に入力するコマンドである。ＷＴ＿ＣＯＤＥコマンドは、コーデック１６にて生成された検査コードを１ビットずつメモリセル１０に転送するコマンドである。ＲＥＶＥＲＳＥコマンドは、逆進用クロックｂｗｄ＿ｃｌｋを１とし、コーデック１６のシフトレジスタの逆方向へのシフトを開始させるコマンドである。ＣＯＲＲＥＣＴコマンドは、コーデック１６において誤りを生じたビットを反転し、誤りを訂正して出力するコマンドである。
【００５４】
以下、本実施形態のＤＲＡＭにおけるエンコード処理及びデコード処理の具体的な制御手順について説明する。まず、図１１〜図１３を参照して、エンコード処理の制御手順について説明する。このエンコード処理は、主にエンコード制御部４２（図６）によって制御される処理である。図１１及び図１２は、エンコード処理の制御フローを示す図であり、図１３は、図１１及び図１２の制御フローに対応するタイミングチャートを示す図である。
【００５５】
図１１は、エンコード処理のうち、第１コード体系に基づく処理を示す制御フローである。図１１に示す制御が開始されると、最初にデータ領域の列アドレスＹと第１コード領域の列アドレスＹ１にそれぞれ０をセットする（ステップＳ１１）。続いて、データ領域の行アドレスＸに０をセットする（ステップＳ１２）。なお、本実施形態では１０２４×１０２４ビットのマット１００を想定しているので、後述するようにＸとＹを０〜１０２３の範囲でカウントアップすることにより、データ領域の全てのビット位置にアクセスすることができる。
【００５６】
次に、メモリ制御コマンドＡＣＴ（Ｘ）を実行し（ステップＳ１３）、行アドレスＸを選択してアクティブ状態にする。続いて、メモリ制御コマンドＲＤ（Ｙ）を実行し（ステップＳ１４）、データ領域の位置（Ｘ、Ｙ）のビットを読み出す。一方、ＲＤ（Ｙ）の実行とともに、コーデック制御コマンドＧＥＮ＿ＣＯＤＥを実行する（ステップＳ１５）。これにより、データ領域の位置（Ｘ、Ｙ）のビットがコーデック１６に演算対象として入力されることになる。
【００５７】
そして、Ｘをインクリメントし（ステップＳ１６）、Ｘの値が１０２４に達するまでの間（ステップＳ１７）、ステップＳ１３〜Ｓ１７の制御を繰り返す。その結果、第１ボックスＢ１に含まれる１０２４ビットを用いた符号化演算が完了する。この時点で、コーデック１６のシフトレジスタには、第１ボックスＢ１に対応する１６ビットの検査コードが生成された状態になっている。
【００５８】
次に、第１コード領域の行アドレスＸ１に０をセットする（ステップＳ１８）。そして、メモリ制御コマンドＡＣＴ（Ｘ１）を実行し（ステップＳ１９）、行アドレスＸ１を選択してアクティブ状態にする。続いて、コーデック制御コマンドＷＴ_ＣＯＤＥを実行し（ステップＳ２０）、コーデック１６にて生成された所定の検査ビットをメモリセル１０に転送する。そして、制御コマンドＷＴ（Ｙ１）を実行し（ステップＳ２１）、第１コード領域の位置（Ｘ１、Ｙ１）に第１コード体系に基づく検査ビットを書き込む。
【００５９】
そして、Ｘ１をインクリメントし（ステップＳ２２）、Ｘの値が１６に達するまでの間（ステップＳ２３）、ステップＳ１９〜Ｓ２３の制御を繰り返す。その結果、第１コード体系に基づく１６ビットの検査コードの第１コード領域への書き込みが完了する。
【００６０】
次いで、データ領域及び第１コード領域における列アドレスを更新すべくＹ及びＹ１をインクリメントする（ステップＳ２４）。そして、Ｙの値が１０２４に達するまでの間（ステップＳ２５）、ステップＳ１２〜Ｓ２５の制御を繰り返す。なお、ステップＳ２５は、Ｙ１に対する判断であっても同様になる。これにより、Ｙの値が０〜１０２３の範囲で１０２４行の第１ボックスＢ１に対し、同様のエンコード処理が繰り返されることになる。この時点で、データ領域に対する全てのデータについて第１コード体系に基づく検査コードの生成・書き込みが完了する。
【００６１】
ここで、図１３（ａ）には、データ領域においてＹ＝Ｎ、Ｙ１＝Ｎとなる任意の一行に関し、図１１の制御フローに対応するタイミングチャートを示している。図１３(ａ)において、第１ボックスＢ１の読み出し動作は、上述のステップＳ１２〜Ｓ１７に対応し、データ領域の行アドレスＸを順次カウントアップしつつ上述の各コマンドが１０２４回繰り返し実行される。また、検査コードの書き込み動作は、上述のステップＳ１８〜Ｓ２３に対応し、第１コード領域の行アドレスＸ１を順次カウントアップしつつ上述の各コマンドが１６回繰り返し実行される。
【００６２】
次に図１２は、エンコード処理のうち、第２コード体系に基づく処理を示す制御フローである。本実施形態のエンコード処理においては、第１コード体系に基づく処理に続いて、第２コード体系に基づく処理に移行する。図１２に示す制御が開始されると、最初にデータ領域の行アドレスＸと第２コード領域の行アドレスＸ２にそれぞれ０をセットする（ステップＳ３１）。
【００６３】
次に、メモリ制御コマンドＡＣＴ（Ｘ）を実行し（ステップＳ３２）、行アドレスＸを選択してアクティブ状態にする。続いて、データ領域の列アドレスＹに０をセットする（ステップＳ３３）。このように、第２コード体系の制御フローでは、列アドレスＹのセットに先立ってＡＣＴ（Ｘ）を実行する点で、図１１の第１コード体系の制御フローとは手順が異なっている。
【００６４】
この状態で、メモリ制御コマンドＲＤ（Ｙ）を実行し（ステップＳ３４）、データ領域の位置（Ｘ、Ｙ）のビットを読み出す。一方、ＲＤ（Ｙ）の実行とともにコーデック制御コマンドＧＥＮ＿ＣＯＤＥを実行し（ステップＳ３５）、データ領域の位置（Ｘ、Ｙ）のビットをコーデック１６に演算対象として入力する。
【００６５】
そして、Ｙをインクリメントし（ステップＳ３６）、Ｙの値が１０２４に達するまでの間（ステップＳ３７）、ステップＳ３４〜Ｓ３７の制御を繰り返す。その結果、第２ボックスＢ２に含まれる１０２４ビットを用いた符号化演算が完了する。この時点で、コーデック１６のシフトレジスタには、第２ボックスＢ２に対応する１６ビットの検査コードが生成された状態になっている。
【００６６】
次に、メモリ制御コマンドＡＣＴ（Ｘ２）を実行し（ステップＳ３８）、行アドレスＸ２を選択してアクティブ状態にする。続いて、第２コード領域の列アドレスＹ２に０をセットする（ステップＳ３９）。そして、メモリ制御コマンドＷＴ_ＣＯＤＥを実行し（ステップＳ４０）、さらにメモリ制御コマンドＷＴ（Ｙ２）を実行する（ステップＳ４１）。これにより、コーデック１６にて生成された所定の検査ビットがメモリセル１０に転送された後に、第２コード領域の位置（Ｘ２、Ｙ２）に、第２コード体系に基づく検査ビットが書き込まれることになる。
【００６７】
そして、Ｙ２をインクリメントし（ステップＳ４２）、Ｙ２の値が１６に達するまでの間（ステップＳ４３）、ステップＳ４０〜Ｓ４３の制御を繰り返す。その結果、第２コード体系に基づく１６ビットの検査コードの第２コード領域への書き込みが完了する。
【００６８】
次いで、データ領域及び第２コード領域における行アドレスを更新すべくＸ及びＸ２をインクリメントする（ステップＳ４４）。そして、Ｘの値が１０２４に達するまでの間（ステップＳ４５）、ステップＳ３２〜Ｓ４５の制御を繰り返す。なお、ステップＳ４５は、Ｘ２に対する判断であっても同様になる。これにより、Ｘの値が０〜１０２３の範囲で１０２４列の第２ボックスＢ２に対し、同様のエンコード処理が繰り返されることになる。この時点で、データ領域に対する全てのデータについて第２コード体系に基づく検査コードの生成・書き込みが完了する。
【００６９】
ここで、図１３（ｂ）には、データ領域においてＸ＝Ｎ、Ｘ２＝Ｎとなる任意の一列に関し、図１２の制御フローに対応するタイミングチャートを示している。図１３(ｂ)において、第２ボックスＢ２の読み出し動作は、上述のステップＳ３２〜Ｓ３７に対応し、データ領域の列アドレスＹを順次カウントアップしつつ上述の各コマンドが１０２４回繰り返し実行される。また、検査コードの書き込み動作は、上述のステップＳ３８〜Ｓ４３に対応し、第２コード領域の列アドレスＹ２を順次カウントアップしつつ上述の各コマンドが１６回繰り返し実行される。
【００７０】
次に、図１４〜図２２を参照して、本実施形態に係るデコード処理の制御手順について説明する。図１４は、デコード処理の概略の制御フローを示す図であり、図１５〜図１９は、図１４に対応する詳細な制御フローを示す図である。また、図２０及び図２１は、図１５及び図１７各制御フローに対応するタイミングチャートを示す図である。また、図２２は、デコード処理を主に制御するデコード制御部４３の構成を示すブロック図である。
【００７１】
図１４の概略の制御フローに示されるように、本実施形態に係るデコード処理は、制御内容に応じた複数のデコードシーケンスＳＱ１〜ＳＱ７から構成されている。ビット誤り訂正を行うデコードシーケンスＳＱ１は、第１コード体系に基づく第１ボックスＢ１のビット誤り訂正を制御するデコードシーケンスＳＱ１Ａと、第２コード体系に基づく第２ボックスＢ２のビット誤り訂正を制御するデコードシーケンスＳＱ１Ｂが含まれる。
【００７２】
図１４の制御フローの全体は、ＥＣＣ制御回路３３に含まれるデコード制御部４３により制御される。図２２に示すように、デコード制御部４３は、デコードシーケンスＳＱ１〜ＳＱ７の全体を制御するボックス制御部５１と、処理対象である１つの第１ボックスＢ１又は第２ボックスＢ２（以下、対象ボックスと呼ぶ）のデコード処理時にメモリセル１０とコーデック１６を制御するメモリ・コーデック制御部５２と、対象ボックスのデコード処理のステージ（実行サイクル）をカウントするステージカウンタ５３と、後述のデコードシーケンスＳＱ３における繰り返し回数をカウントする繰り返しカウンタ５４と、処理すべき対象ボックスの番号をカウントするボックスアドレスカウンタ５５と、訂正不能なビット誤りが存在する第２ボックスＢ２の番号を保持するボックスアドレスレジスタ５６と、処理すべき対象ボックスの番号を選択するセレクタ５７を含んで構成されている。
【００７３】
図１５は、デコードシーケンスＳＱ１Ａの詳細な制御フローを示す図である。図１５に示す制御が開始されると、最初にデータ領域の列アドレスＹと第１コード領域の列アドレスＹ１にそれぞれ０をセットする（ステップＳ１０１）。続いて、データ領域の行アドレスＸに０をセットする（ステップＳ１０２）。
【００７４】
次に、メモリ制御コマンドＡＣＴ（Ｘ）を実行し（ステップＳ１０３）、続いてメモリ制御コマンドＲＤ（Ｙ）を実行する（ステップＳ１０４）。これにより、データ領域の位置（Ｘ、Ｙ）のビットが読み出される。一方、ビットの読み出しとともにコーデック制御コマンドＧＥＮ＿ＣＯＤＥを実行し（ステップＳ１０５）、読み出したビットをコーデック１６に入力する。
【００７５】
そして、Ｘをインクリメントし（ステップＳ１０６）、Ｘの値が１０２４に達するまでの間（ステップＳ１０７）、ステップＳ１０３〜Ｓ１０７の制御を繰り返す。その結果、第１ボックスＢ１に含まれる１０２４ビットを用いて、コーデック１６の復号化演算が実行されることになる。
【００７６】
続くステップＳ１０８〜Ｓ１１３では、上述のステップＳ１０２〜Ｓ１０７のデータ領域に対する制御と同様の手順で、第１コード領域に対する制御を実行する。この場合、行アドレスＸをＸ１に、列アドレスＹをＹ１に置き換えるとともに、その変化範囲を０〜１５に置き換えて考えればよい。
【００７７】
ステップＳ１１３の判断結果がＮＯとなった時点で、コーデック１６では、所定の第１ボックスＢ１とこれに対応する検査コードの計１０４０ビットを用いた復号化演算が完了した状態になる。よって、コーデック１６の演算の結果、ビット誤りが生じたか否かをｅｒｒｏｒ信号に基づき判別する（ステップＳ１１４）。
【００７８】
コーデック１６から出力されるｅｒｒｏｒ信号が１となり、ビット誤りが生じている場合は、演算対象の第１ボックスＢ１に対するビット誤り訂正を実行する（ステップＳ１１５）。ここで、ステップＳ１１５で実行されるビット誤り訂正の制御フローを図１６に示す。まず、図１６に示すように、処理対象の第１ボックスＢ１及び第１コード領域の列アドレスＹ及びＹ１が既にセットされている状態で、第１コード領域の行アドレスＸ１に１５をセットする（ステップＳ２０１）。
【００７９】
次いで、コーデック制御コマンドＲＥＶＥＲＳＥを実行し（ステップＳ２０２）、１６段のシフトレジスタを逆進させた状態でコーデック１６から出力されるｌｏｃａｔｉｏｎ信号に基づき、ビット誤りが生じた位置を判別する（ステップＳ２０３）。その結果、ｌｏｃａｔｉｏｎ信号が１となる場合は、メモリ制御コマンドＡＣＴ（Ｘ１）を実行し（ステップＳ２０４）、続いてメモリ制御コマンドＲＤ（Ｙ１）を実行し（ステップＳ２０５）、第１コード領域の位置（Ｘ１、Ｙ１）の検査ビットを読み出す。
【００８０】
続いて、制御コマンドＣＯＲＲＥＣＴを実行し（ステップＳ２０６）、誤りを生じたビットを訂正する。すなわち、図８からわかるように、コーデック１６では、ｒｄ＿ｄａｔａ（ステップＳ２０５で読み出したビット）とｌｏｃａｔｉｏｎ信号のＥＯＲ演算出力をセレクタにより選択的に出力するので、誤りを生じたビットが反転されて信号ｗｔ＿ｄａｔａとして出力されることになる。
【００８１】
そして、メモリ制御コマンドＷＴ（Ｙ１）を実行し（ステップＳ２０７）、コーデック１６にて誤りを訂正されたビットを、第１コード領域の位置（Ｘ１、Ｙ１）に書き込む。次いで、Ｘ１をデクリメントし（ステップＳ２０８）、Ｘ１の値が０に達するまでの間(ステップＳ２０９)、ステップＳ２０３〜Ｓ２０９の制御を繰り返す。ステップＳ２０９の判断結果がＮＯになると、データ領域に対する制御に移る。
【００８２】
まず、データ領域の行アドレスＸに１０２３をセットする（ステップＳ２１０）。続くステップＳ２１１〜Ｓ２１８では、上述のステップＳ２０１〜Ｓ２０９の第１コード領域に対する制御と同様の手順で、データ領域に対する制御を実行する。この場合、行アドレスＸ１をＸに、列アドレスＹ１をＹに置き換えるとともに、その変化範囲を１０２３〜０に置き換えて考えればよい。
【００８３】
なお、ステップＳ２０３、Ｓ２１２においてｌｏｃａｔｉｏｎ＝１となるのは、マット１００の一列において１ビットの誤りが存在する場合に限られ、２ビット以上の誤りが存在する場合は、コーデック１６の回路構成ではｌｏｃａｔｉｏｎ信号が立たない。このような場合に行うべき制御については後述する。
【００８４】
ステップＳ２１８の判断結果がＮＯとなった時点で、誤りが検出されたビットが訂正された状態になり、図１６の制御フローを終える。
【００８５】
図１５に戻って、図１６の制御フローに対応するステップＳ１１５に続き、データ領域及び第１コード領域における列アドレスを更新すべくＹ及びＹ１をインクリメントする（ステップＳ１１６）。そして、Ｙの値が１０２４に達するまでの間（ステップＳ１１７）、ステップＳ１０２〜Ｓ１１７の制御を繰り返す。ステップＳ１１７の判断結果がＮＯとなった時点でデコードシーケンスＳＱ１Ａを終える。
【００８６】
ここで、図２０には、データ領域及び第１コード領域においてＹ＝Ｎ、Ｙ１＝Ｎとなる任意の一列に関し、デコードシーケンスＳＱ１Ａの制御フローに対応するタイミングチャートを示している。図２０において、第１コード体系に基づく検査コードの読み出し動作は、上述のステップＳ１０２〜Ｓ１０７に対応し、データ領域の行アドレスＸを順次カウントアップしつつ上述の各コマンドが１０２４回繰り返し実行される。検査コードの読み出し動作は、上述のステップＳ１０８〜Ｓ１１３に対応し、第１コード領域の行アドレスＸ１を順次カウントアップしつつ上述の各コマンドが１６回繰り返し実行される。また、第１コード体系に基づく検査コード及び第１ボックスＢ１に対するビット誤り検出・訂正動作は、ｅｒｒｏｒ信号とｌｏｃａｔｉｏｎ信号に応じて異なる制御がされることがわかる。
【００８７】
次に図１７は、デコードシーケンスＳＱ１Ｂ（図１４）の詳細な制御フローを示す図である。図１７に示す制御が開始されると、最初にデータ領域の行アドレスＸと第２コード領域の行アドレスＸ２にそれぞれ０をセットする（ステップＳ１５１）。
【００８８】
次に、メモリ制御コマンドＡＣＴ（Ｘ）を実行する（ステップＳ１５２）。続いて、データ領域の列アドレスＹに０をセットする（ステップＳ１５３）。この状態で、メモリ制御コマンドＲＤ（Ｙ）を実行し（ステップＳ１５４）、データ領域の位置（Ｘ、Ｙ）のビットを読み出す。一方、ビットの読み出しとともにコーデック制御コマンドＧＥＮ＿ＣＯＤＥを実行し（ステップＳ１５５）、読み出したビットをコーデック１６に入力する。
【００８９】
続いて、Ｙをインクリメントし（ステップＳ１５６）、Ｙの値が１０２４に達するまでの間（ステップＳ１５７）、ステップＳ１５４〜１５７の制御を繰り返す。その結果、第２ボックスＢ２に含まれる１０２４ビットを用いて、コーデック１６の復号化演算が実行されることになる。
【００９０】
続くステップＳ１５８〜Ｓ１６３では、上述のステップＳ１５２〜Ｓ１５７のデータ領域に対する制御と同様の手順で、第２コード領域に対する制御を実行する。この場合、行アドレスＸをＸ２に、列アドレスＹをＹ２に置き換えるとともに、その変化範囲を０〜１５に置き換えて考えればよい。
【００９１】
ステップＳ１６３の判断結果がＮＯとなった時点で、コーデック１６では、所定の第２ボックスＢ２とこれに対応する検査コードの計１０４０ビットを用いた復号化演算が完了した状態になる。よって、コーデック１６の演算の結果、ビット誤りが生じたか否かをｅｒｒｏｒ信号に基づき判別する（ステップＳ１６４）。
【００９２】
コーデック１６から出力されるｅｒｒｏｒ信号が１となり、ビット誤りが生じている場合は、演算対象の第２ボックスＢ２に対するビット誤り訂正を実行する（ステップＳ１６５）。ここで、ステップＳ１６５で実行されるビット誤り訂正の制御フローを図１８に示す。
【００９３】
図１８のステップＳ２５１〜Ｓ２６８に示す制御フローでは、基本的な制御手順としては、図１６のステップＳ２０１〜Ｓ２１８に示す制御フローと共通であり、図１６のＸ１、Ｘをそれぞれ図１８のＹ２、Ｙに置き換えて考えればよい。最後のステップＳ２６８の判断結果がＮＯとなった時点で、誤りが検出されたビットが訂正された状態になり、図１８の制御フローを終える。
【００９４】
図１７に戻って、図１８の制御フローに対応するステップＳ１６５に続き、データ領域及び第１コード領域における行アドレスを更新すべくＸ及びＸ２をインクリメントする（ステップＳ１６６）。そして、Ｘの値が１０２４に達するまでの間（ステップＳ１６７）、ステップＳ１５２〜Ｓ１６７の制御を繰り返す。ステップＳ１６７の判断結果がＮＯとなった時点でデコードシーケンスＳＱ１Ｂを終える。
【００９５】
ここで、図２１には、データ領域及び第２コード領域においてＸ＝Ｎ、Ｘ２＝Ｎとなる任意の一行に関し、デコードシーケンスＳＱ１Ｂの制御フローに対応するタイミングチャートを示している。図２１において、第２コード体系に基づく検査コードの読み出し動作は、上述のステップＳ１５２〜Ｓ１５７に対応し、データ領域の列アドレスＹを順次カウントアップしつつ上述の各コマンドが１０２４回繰り返し実行される。検査コードの読み出し動作は、上述のステップＳ１５８〜Ｓ１６３に対応し、第２コード領域の列アドレスＹ２を順次カウントアップしつつ上述の各コマンドが１６回繰り返し実行される。また、第２コード体系に基づく検査コード及び第２ボックスＢ２に対するビット誤り検出・訂正動作は、ｅｒｒｏｒ信号とｌｏｃａｔｉｏｎ信号に応じて異なる制御がされる点は、図２０の場合と同様である。
【００９６】
以上の２つのデコードシーケンスＳＱ１Ａ、ＳＱ１Ｂにおいて、図２２のデコード制御部４３では、ボックス制御部５１が各々の対象ボックスの処理タイミングを認識する。そして、対象ボックスの処理開始タイミングを示すボックススタート信号ｓｇ１と、対象ボックスの番号（アドレス）を示すボックスアドレス信号ｓｇ２をメモリ・コーデック制御部５２に出力する。このメモリ・コーデック制御部５２では、対象ボックスのデコード処理に必要となるメモリ制御信号とコーデック制御信号を生成して出力する。そして、対象ボックスの処理完了タイミングを示すボックスエンド信号ｓｇ３をボックス制御部５１に出力する。
【００９７】
また、対象ボックスの番号はボックスアドレスカウンタ５５により生成される。ボックス制御部５１は、制御信号ｓｇ８によりボックスアドレスカウンタ５５を制御し、ボックスアドレスカウンタ５５からは、そのカウンタ値をボックス番号カウント信号ｓｇ９として出力する。
【００９８】
さらに、対象ボックスの処理に際し、メモリ・コーデック制御部５２は、ステージカウンタ５３に対しカウンタ制御信号ｓｇ４を供給し、コーデック１６のシフトレジスタの順進・逆進の方向に応じた制御を行う。ステージカウンタ５３は、コーデック１６の順進演算時にはインクリメントされ、コーデック１６の逆進演算時にはデクリメントされるように制御される。メモリ・コーデック制御部５２は、ステージカウンタ５３のカウント値を示すカウント信号ｓｇ５を受け、これにより実行すべきサイクルを認識する。
【００９９】
次に、図１４に示すように、デコードシーケンスＳＱ１Ａ、ＳＱ１Ｂに後続するデコードシーケンスＳＱ２では、デコードシーケンスＳＱ１Ａ又はデコードシーケンスＳＱ１Ｂにおいて、訂正不能なビット誤りが存在するか否かを判定する。すなわち、本実施形態の誤り訂正方式では、対象ボックスにおいて１ビットの誤りが存在する場合にのみ訂正可能であり、２ビット以上の誤りが存在する場合は訂正ができない。コーデック１６の回路構成においては、ｅｒｒｏｒ＝１になった場合でも、２ビット以上の誤りの存在時にｌｏｃａｔｉｏｎ＝１にならないため、このような状態をデコードシーケンスＳＱ２において検知するものである。
【０１００】
図２２において、コーデック１６から出力されるｅｒｒｏｒ信号及びｌｏｃａｔｉｏｎ信号は、ボックス制御部５１及びメモリ・コーデック制御部５２に入力される。ボックス制御部５１は、ｅｒｒｏｒ＝１、ｌｏｃａｔｉｏｎ＝１となる場合、ビット誤りの存在とそのビットが訂正されたことを認識し、メモリ・コーデック部５２の制御によるビット誤り訂正が実行される。一方、ボックス制御部５１は、ｅｒｒｏｒ＝１であってｌｏｃａｔｉｏｎ＝１にならない場合、訂正不能なビット誤りの発生を認識する。
【０１０１】
本実施形態では、第２ボックスＢ２に訂正不能なビットがあると認識される場合、その第２ボックスＢ２の番号（行アドレスＸ）が保持される。具体的には、ボックス制御部５１からボックスアドレスレジスタ５６にホールド信号ｓｇ１３を１として供給した状態で、ボックスアドレスカウンタ５５から、該当する第２ボックスＢ２の番号がボックスアドレス信号ｓｇ９としてボックスアドレスレジスタ５６に送られる。なお、ボックスアドレスレジスタ５６には、訂正不能な第２ボックスＢ２がＮ個ある場合、それらの番号に加えて個数Ｎも保持される。
【０１０２】
なお、ボックスアドレスレジスタ５６の読み出し信号ｓｇ１０は、セレクタ５７に送られる。このセレクタ５７は、ボックスアドレスカウンタ５５からのボックス番号カウント信号ｓｇ９とボックスレジスタ５６からの読み出し信号ｓｇ１０を選択的に切り替え、選択信号ｓｇ１１をボックス制御部５１に出力する。
【０１０３】
図１４において、デコードシーケンスＳＱ２で訂正不能なビット誤りが存在しないと判定された場合は、それ以降の誤り訂正は不要となるので、図１４のデコード処理は完了する。一方、デコードシーケンスＳＱ２で訂正不能なビット誤りが存在すると判定された場合、続いてデコードシーケンスＳＱ３を実行する。
【０１０４】
デコードシーケンスＳＱ３では、デコードシーケンスＳＱ１を予め設定されている繰り返し回数だけ完了したか否かを判定する。すなわち、本実施形態では行方向と列方向の誤り訂正を交互に繰り返すことにより、ビット誤りを減少させるようにしているため、繰り返し回数を増やせば、それだけビット誤りが訂正される可能性が大きくなる。よって、予め適切な繰り返し回数を設定できるようにしたものである。
【０１０５】
図２２のデコード制御部４３では、繰り返しカウンタ５４によりデコードシーケンスＳＱ１、ＳＱ２の繰り返し回数がカウントされる。ボックス制御部５１は、デコードシーケンスＳＱ１、ＳＱ２を実行する度にデクリメント信号を繰り返しカウンタ５４に送り、そのカウント値をカウント信号ｓｇ６としてボックス制御部５１に出力する。これにより、ボックス制御部５１が予め設定された繰り返し回数に達したことを認識できる。
【０１０６】
デコードシーケンスＳＱ３において所定回数繰り返したと判定されると、続いてデコードシーケンスＳＱ４に移行する。このデコードシーケンスＳＱ４では、デコードシーケンスＳＱ１Ａと同様、第１ボックスＢ１のビット誤り訂正を行うものであり、複数回繰り返す場合の最終の処理となる。そして、続くデコードシーケンスＳＱ５では、デコードシーケンスＳＱ２と同様の判定を行う。
【０１０７】
また、デコードシーケンスＳＱ５で訂正不能なビット誤りが存在すると判定された場合、続いてデコードシーケンスＳＱ６に移行する。このデコードシーケンスＳＱ６では、第２ボックスＢ２のビット誤り訂正を行うものであり、この場合も複数回繰り返す場合の最終の処理となる。ここで、デコードシーケンスＳＱ６の処理は、デコードシーケンスＳＱ１Ｂの処理と異なる点があるため、以下で説明する。
【０１０８】
図１９は、デコードシーケンスＳＱ６の詳細な制御フローを示す図である。このデコードシーケンスＳＱ６の基本的な制御は、図１７のデコードシーケンスＳＱ１Ｂと共通するが、行アドレスＸの設定手順が異なっている。すなわち、図１９に示すように、まずカウンタｉに０をセットし（ステップＳ３０１）、上述のボックスアドレスレジスタ５６に保持されるｉ番目の値であるＢＯＸ＿ＡＤＲ＿ＲＥＧ（ｉ）をＸの値としてセットする（ステップＳ３０２）。同様にＢＯＸ＿ＡＤＲ＿ＲＥＧ（ｉ）をＸ２の値としてもセットする（ステップＳ３０９）そして、そのＸ、Ｘ２について、ステップＳ３０３〜Ｓ３１７の制御を実行した後、ｉをインクリメントし（ステップＳ３１８）、ｉがボックスアドレスレジスタに保持される値Ｎに達するまで（ステップＳ３１９）、ステップＳ３０３〜Ｓ３１９の処理を繰り返し実行する。
【０１０９】
このように、デコードシーケンスＳＱ６においては、既に第２ボックスＢ２について実行済みのビット誤り訂正を行った際、訂正不能なビットが存在する第２ボックスＢ２についてのみ、新たなビット誤り訂正を行うように制御している。これにより、不要な処理を回避して、処理全体の実行時間の低減を図ることができる。なお、デコードシーケンスＳＱ３において所定回数が１回に設定されている場合は、第１ボックスＢ１と第２ボックスＢ２について交互に少なくとも２回ずつのビット誤り訂正が実行されることになる。
【０１１０】
最後に、デコードシーケンスＳＱ７では、デコードシーケンスＳＱ２、ＳＱ５と同様の判定を行う。そして、デコードシーケンスＳＱ７で訂正不能なビット誤りが存在しないと判定された場合は、図１４のデコード処理は完了する。一方、デコードシーケンスＳＱ７で訂正不能なビット誤りが存在すると判定された場合、所定の訂正不可信号を発生する。この訂正不可信号を参照することによりＤＲＡＭの異常を検知することができる。
【０１１１】
次に、図２３を用いて、本実施形態の誤り訂正方法の具体例を説明する。図２３においては、簡単のため１０×１０のサイズのデータ領域を例に取って考える。図２３（ａ）に示すように、データ領域に６ビットの誤りが存在する状態で（図中×印で示す）、Ｘ方向のビット列に対しデコードシーケンスＳＱ１Ａを実行する。この場合、ビット誤りがある３つの列には、いずれも２ビットの誤りが存在するため、ビット誤りは訂正できない。
【０１１２】
次に、図２３（ｂ）に示すように、Ｙ方向のビット列に対しデコードシーケンスＳＱ１Ｂを実行する。この場合、２ビットの誤りが存在する２行の誤りは訂正できないが、１ビットの誤りが存在する他の２行の誤りは訂正される。このとき、訂正不能の行を示す位置情報Ｘｅ（１）、Ｘｅ（２）を保持する。
【０１１３】
次に、図２３（ｃ）に示すように、Ｘ方向のビット列に対しデコードシーケンスＳＱ４を実行する（デコードシーケンスＳＱ３の繰り返し数は１とする）。この場合、図２３（ａ）の誤りパターンが変化しているので、１ビットの誤りが存在する２列の誤りは訂正される。そして、２ビットの誤りが存在する１列が残った状態になる。
【０１１４】
最後に、図２３（ｄ）に示すように、Ｙ方向のビット列に対しデコードシーケンスＳＱ６を実行する。このとき、保持される位置情報Ｘｅ（１）、Ｘｅ（２）についてのみ誤り訂正が実行され、その２行に残存する誤りビットｅｂ１、ｅｂ２がいずれも訂正される。この結果、データ領域における全てのビット誤りが訂正される状態になる。より複雑な誤りパターンであっても、繰り返し回数を増やすことにより、全てのビット誤りが訂正される可能性を高めることができる。
【０１１５】
なお、上述の繰り返し回数を増やしたとしても、誤りパターンによってはビット誤りを訂正できない場合がある。例えば、方形状の２×２の領域に含まれる４ビットの誤りが存在する場合である。この場合、Ｘ方向、Ｙ方向に誤り訂正を繰り返しても常に誤りが残存する状態になる。このような状態を回避するには、所定形状の領域で常にビット誤りを訂正不能な状態が続く場合、その領域内で全てのビットが誤っていると判定し、それらのビットを反転するように制御を行えばよい。
【０１１６】
以上説明した本実施形態のＤＲＡＭにより、従来では訂正不可能である誤りパターンに対する誤り訂正が可能となり、許容されるビットエラー率を高くすることができる。具体的には、上述の誤り訂正方法を採用することにより、従来の許容ビットエラー率を０．０１％から０．０２％程度に高くすることができる。また、許容ビットエラー率を高くできるため、リフレッシュ周期を長く設定でき、これによりデータ保持状態での消費電力を低減することができる。具体的には、温度８５℃において、リフレッシュ周期を従来の約２倍に伸ばすことが可能である。
【０１１７】
以上、本実施形態に基づき本発明について具体的に説明したが、本発明は上述の実施形態に限定されるものではなく、その要旨を逸脱しない範囲で種々の変更を施すことができる。例えば、メモリアレイ１０の構成や容量は、上述の具体例に限られることなく、多様なメモリ手段に対して本発明を広く適用することができる。
【図面の簡単な説明】
【０１１８】
【図１】本実施形態に係るＤＲＡＭの全体構成を示すブロック図である。
【図２】メモリアレイのバンク構成及びマット構成を示す図である。
【図３】本実施形態における主要なメモリ制御コマンドの種類を示す図である。
【図４】ＤＲＡＭにおける複数の動作状態の関係と機能を示す状態遷移図である。
【図５】図４の状態遷移図に対応する概略のタイミングフロー図である。
【図６】制御回路のＥＣＣ制御部の構成を示すブロック図である。
【図７】エンコード処理において生成される検査コードの構成を示す図である。
【図８】コーデックの回路構成の一例を示す図である。
【図９】図８の構成を備えるコーデックにおける演算処理の具体例について説明する図である。
【図１０】コーデックの動作制御に用いるコーデック制御コマンドの種類を示す図である。
【図１１】エンコード処理のうち、第１コード体系に基づく制御フローを示す図である。
【図１２】エンコード処理のうち、第２コード体系に基づく制御フローを示す図である。
【図１３】図１１及び図１２の制御フローに対応するタイミングチャートを示す図である。
【図１４】デコード処理の概略の制御フローを示す図である。
【図１５】図１４のデコードシーケンスＳＱ１Ａに対応する詳細な制御フローを示す図である。
【図１６】図１５のステップＳ１１５で実行されるビット誤り訂正の制御フローを示す図である。
【図１７】図１４のデコードシーケンスＳＱ１Ｂに対応する詳細な制御フローを示す図である。
【図１８】図１７のステップＳ１６５で実行されるビット誤り訂正の制御フローを示す図である。
【図１９】図１４のデコードシーケンスＳＱ６の詳細な制御フローを示す図である。
【図２０】図１５の制御フローに対応するタイミングチャートを示す図である。
【図２１】図１７の制御フローに対応するタイミングチャートを示す図である。
【図２２】デコード処理を主に制御するデコード制御部の構成を示すブロック図である。
【図２３】本実施形態の誤り訂正方法の具体例を説明する図である。
【符号の説明】
【０１１９】
１０…メモリアレイ
１１…行デコーダ
１２…ワードドライバ
１３…センスアンプ
１４…Ｉ／Ｏゲート
１５…列デコーダ
１６…コーデック
２０…制御回路
２１…Ｉ／Ｏバッファ
３１…コマンド制御部
３２…状態制御部
３３…ＥＣＣ制御部
４１…低消費電力モード制御部
４２…エンコード制御部
４３…デコード制御部
４４…ＢＲＥＦ制御部
４５…ＢＲＥＦ周期制御部
４６、４６…マルチプレクサ
５１…ボックス制御部
５２…メモリ・コーデック制御部
５３…ステージカウンタ
５４…繰り返しカウンタ
５５…ボックスアドレスカウンタ
５６…ボックスアドレスレジスタ
５７…セレクタ
１００…マット
【図１】
2006004560.tif 000003
【図２】
2006004560.tif 000004
【図３】
2006004560.tif 000005
【図４】
2006004560.tif 000006
【図５】
2006004560.tif 000007
【図６】
2006004560.tif 000008
【図７】
2006004560.tif 000009
【図８】
2006004560.tif 000010
【図９】
2006004560.tif 000011
【図１０】
2006004560.tif 000012
【図１１】
2006004560.tif 000013
【図１２】
2006004560.tif 000014
【図１３】
2006004560.tif 000015
【図１４】
2006004560.tif 000016
【図１５】
2006004560.tif 000017
【図１６】
2006004560.tif 000018
【図１７】
2006004560.tif 000019
【図１８】
2006004560.tif 000020
【図１９】
2006004560.tif 000021
【図２０】
2006004560.tif 000022
【図２１】
2006004560.tif 000023
【図２２】
2006004560.tif 000024
【図２３】
2006004560.tif 000025