(57)【要約】  メモリのコードワードにおける誤りを検出及び訂正する方法及びメモリが提供される。本方法は、誤り検出訂正エンジンによるコードワードのビットにおける誤りの検出及び訂正と、誤りの誤り訂正情報をキャッシュに格納することを含む。同一ビットの同一の誤りの第２の検出において、誤りの訂正が格納されている誤り訂正情報に基づき実行される。
2010512601.tif 000002
【特許請求の範囲】
【請求項１】
メモリに格納されるコードワードにおける誤りを検出及び訂正する方法であって、
前記コードワードの１つのビットにおいて第１の誤りを検出及び訂正するステップと、
前記第１の誤りの誤り訂正情報を格納するステップと、
前記第１の誤りと第２の誤りとを有する前記コードワードの他の１つのビットにおいて第２の誤りを検出及び訂正するステップと、
前記第１の誤りの格納されている誤り訂正情報を用いて前記第１の誤りを訂正するステップと、
を有する方法。
【請求項２】
前記第１の誤りの誤り訂正情報をエラーキャッシュＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）に格納するステップを有する、請求項１記載の方法。
【請求項３】
誤りを検出するため前記メモリをスキャンするステップと、
前記格納されている誤り訂正情報を用いて既知の誤りを訂正するステップと、
新たな誤りを訂正し、前記新たな誤りの誤り訂正情報を格納するステップと、
を有する、請求項１記載の方法。
【請求項４】
前記誤り訂正情報をバックアップメモリに格納するステップを有する、請求項１記載の方法。
【請求項５】
検出された誤りを含むメモリ行を誤り訂正された行と置換することによって、前記メモリに永久誤り訂正を実行するステップを有する、請求項１記載の方法。
【請求項６】
メモリセルのアレイと、
コードワードのビットにおける誤りを検出し、前記コードワードのビットの誤り訂正情報を生成する誤り検出訂正エンジンと、
前記検出された誤りの誤り訂正情報を格納し、前記コードワードのビットの格納されている誤り訂正情報に基づき、同一のビットの検出された誤りを訂正するエラーキャッシュＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）と、
を有する装置。
【請求項７】
メモリセルのアレイの各行の誤りをスキャンするアドレススキャンエンジンを有する、請求項６記載の装置。
【請求項８】
前記誤り訂正情報のバックアップを格納する不揮発性キャッシュを有する、請求項６記載の装置。
【請求項９】
検出された誤りを含むメモリ行を誤り訂正された行と置換することによって、メモリセルのアレイにおける誤りを修復する永久修復アルゴリズムを有する、請求項６記載の装置。
【請求項１０】
前記メモリセルのアレイは、ＮＯＲフラッシュメモリを有する、請求項６記載の装置。
【請求項１１】
メモリセルのアレイと、
メモリコントローラと、
を有するメモリシステムであって、
前記メモリコントローラは、
コードワードのビットにおける誤りを検出し、前記コードワードのビットの誤り訂正情報を生成する誤り検出訂正エンジンと、
前記検出された誤りの誤り訂正情報を格納し、前記コードワードのビットの格納されている誤り訂正情報に基づき、同一のビットの検出された誤りを訂正するエラーキャッシュＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）と、
を有するメモリシステム。
【請求項１２】
メモリセルのアレイの各行の誤りをスキャンするアドレススキャンエンジンを有する、請求項１１記載のメモリシステム。
【請求項１３】
前記メモリコントローラは、前記誤り訂正情報のバックアップを格納する不揮発性キャッシュを有する、請求項１１記載のメモリシステム。
【請求項１４】
前記メモリコントローラは、検出された誤りを含むメモリ行を誤り訂正された行と置換することによって、メモリセルのアレイにおける誤りを修復する永久修復アルゴリズムを有する、請求項１１記載のメモリシステム。
【請求項１５】
前記メモリセルのアレイは、ＮＯＲフラッシュメモリを有する、請求項６記載のメモリシステム。
【請求項１６】
ＮＡＮＤベースのメモリセルのアレイと、
メモリコントローラと、
を有するメモリシステムであって、
前記メモリコントローラは、
コードワードのビットにおける誤りを検出し、前記コードワードのビットの誤り訂正情報を生成する誤り検出訂正エンジンと、
前記検出された誤りの誤り訂正情報を格納し、前記コードワードのビットの格納されている誤り訂正情報に基づき、同一のビットの検出された誤りを訂正するエラーキャッシュＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）と、
を有するメモリシステム。
【請求項１７】
メモリセルのアレイの各行の誤りをスキャンするアドレススキャンエンジンを有する、請求項１６記載のメモリシステム。
【請求項１８】
前記メモリコントローラは、前記誤り訂正情報のバックアップを格納する不揮発性キャッシュを有する、請求項１６記載のメモリシステム。
【請求項１９】
前記メモリコントローラは、検出された誤りを含むメモリ行を誤り訂正された行と置換することによって、メモリセルのアレイにおける誤りを修復する永久修復アルゴリズムを有する、請求項１６記載のメモリシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施例は、一般に記憶装置に関する。
【背景技術】
【０００２】
記憶装置は、コード及びデータを格納するため、多数の異なるタイプのシステムにおいて利用される。コード及びデータは、アクセス要求により２つの異なるメモリに格納されることがある。例えば、典型的には、コードはシステム製造中又はコードインストール若しくは更新中、大きなデータブロックとして記憶装置に書き込まれる。コードは、ランダムに読み込まれ、ソフトウェアルーチンのプログラムカウンタ、ジャンプ及びブランチにより指示される。大部分のデータは、アプリケーション処理中にブロック単位で読み書きされる。
【０００３】
メモリに格納されている命令の直接的な実行は、これらの命令が、比較的に短い初期アクセス遅延、おそらく１００ナノ秒などの期間内に、それらの正しい形式により利用可能とされることを要求する。これらのメモリのロジックの能力の範囲内で、システムに命令を出力する前に命令の複数セルの訂正を実行することは実現可能でない。
【０００４】
多くの場合、マルチセルエラーはまずシングルセルエラーとして出現する。その後、同じコードワードの内部において第２エラーが生じる。従来技術によると、このマルチセルエラーは訂正可能でなく、誤ったデータがシステムに返される。
【図面の簡単な説明】
【０００５】
本発明とみなされる主題は、特に明細書の結論部分において指摘及び請求される。しかしながら、本発明は、その課題、特徴及び効果と共に、構成と処理方法の両方に関して、添付した図面を読むときに以下の詳細な説明を参照することにより最も良く理解されるかもしれない。
【図１】図１は、本発明の一実施例によるメモリのブロック図を概略的に示す。
【図２】図２は、本発明の他の実施例によるメモリシステムのブロック図を概略的に示す。
【図３】図３は、本発明の一実施例による誤ったコードワードにおけるエラーの誤り検出及び訂正方法のフローチャートを示す。
【図４】図４は、本発明の各実施例による図３のコードワードにおける以降のエラーの誤り検出及び訂正方法のフローチャートを示す。  異なる図における同一の参照符号の使用は、同様又は同一のアイテムを示す。
【０００６】
説明の簡単化のため、図示される各要素は必ずしもスケーリングして図示されていないことが理解されるであろう。例えば、一部の要素の大きさは、簡単化のため他の要素に対して誇張されるかもしれない。さらに、適当と考えられる場合、対応する又は類似した要素を示すため、参照符号が図面を通じて繰り返されるかもしれない。
【発明を実施するための形態】
【０００７】
以下の説明では、多数の具体的な詳細が与えられる。しかしながら、本発明の各実施例は、これらの具体的な詳細なしに実現可能であることが理解されるであろう。また、本説明の理解を不明りょうにしないように、周知の方法、構成及び技術は詳細には示されない。
【０００８】
“一実施例”、“ある実施例”、“一例となる実施例”、“各実施例”などの表現は、開示される本発明の実施例が特定の機能、構成又は特徴を有するが、必ずしもすべての実施例が当該特定の機能、構成又は特徴を有するとは限らないことを示す。さらに、“一実施例では”という表現の繰り返しの使用は、必ずしも同一の実施例について言及するものでない。
【０００９】
特段の断りがない場合、共通のオブジェクトを記述する序数の形容詞“第１の”、“第２の”、“第３の”などの使用は、同様のオブジェクトの異なるインスタンスが参照されていることを単に示すだけであり、記載されたオブジェクトが時間的、空間的、ランキングにおいて又は他の何れかの方法において所与の順序でなければならないことを意味するものでない。
【００１０】
特段の断りがない場合、以下の説明から明らかなように、明細書を通じて、“処理”、“計算”、“算出”などの用語を用いた説明は、電子などの物理量として表現されるデータを物理量として同様に表現されるデータに処理及び／又は変換するコンピュータ、計算システム又は同様の電子計算装置のアクション及び／又はプロセスを表すことが理解されるであろう。
【００１１】
同様に、“プロセッサ”という用語は、レジスタ及び／又はメモリからの電子データをレジスタ及び／又はメモリに格納可能な他の電子データに変換するよう処理する何れかの装置又はその一部を表すかもしれない。“計算プラットフォーム”は、１以上のプロセッサを有するかもしれない。
【００１２】
“メインアレイ”という用語は、コード又はデータを格納するのに用いられるメモリセルアレイを表すかもしれない。“冗長な要素”という用語は、誤ったコード又はデータを修復するのに利用される追加的なメモリ要素を表すかもしれない。“ＥＤＡＣエンジン”という用語は、誤り検出及び訂正回路を表すかもしれない。“エラーキャッシュＲＡＭ”という用語は、コードワードにおいて検出された誤りをコードワードを格納するのに用いられる揮発性メモリを表し、“ＮＶエラーキャッシュ”という用語は、コードワードにおける検出された誤りを永久に格納するのに用いられる不揮発性メモリ（ＮＶ）を表すかもしれない。
【００１３】
図１を参照するに、本発明の一実施例によるメモリ１００のブロック図の概略が示される。本発明の範囲はこれに限定されるものでないが、記憶装置１００は、メインメモリセルアレイ１１０と、ＵＣＯＤＥ永久修復アルゴリズム１２０と、ＥＤＡＣエンジン１３０と、エラーキャッシュＲＡＭ１４０と、ＮＶエラーキャッシュ１５０とを有する。
【００１４】
本発明の上記実施例によると、メモリ１００は、限定されることなく、ＮＯＲ  ＦＬＡＳＨであってもよく、ＮＯＲベースメモリセルアレイを有してもよい。
【００１５】
本発明の上記実施例によると、システム１０５（計算プラットフォームなど）は、メインアレイ１１０に誤りを含むアドレスにアクセスするかもしれない。ＥＤＡＣエンジン１３０は、所望される場合、システムによりアクセスされるアドレスのコードワードのビットに誤りを検出及び訂正するかもしれない。ＥＤＡＣエンジン１３０は、エラーキャッシュＲＡＭ１４０にコードワードのビットの誤り訂正情報を格納してもよい。エラーキャッシュＲＡＭ１４０は、この誤り訂正情報を用いて、当該コードワードの当該ビットにおけるさらなる誤りの出現において、ビットの誤りを訂正するかもしれない。
【００１６】
本発明の上記実施例によると、エラーキャッシュＲＡＭは、ビットの誤り訂正情報をＮＶエラーキャッシュ１５０に格納してもよい。ＮＶエラーキャッシュは、メモリ１００の電力不調及び／又は電力ダウンの場合におけるメモリミラーであるかもしれない。他の実施例では、高速リード／ライトＮＶメモリは、所望の場合、エラーキャッシュＲＡＭ１４０を置換するかもしれない。コードワードの永久修復は、Ｕコード永久修復アルゴリズム１２０によって実行されてもよい。
【００１７】
本発明の各実施例によると、Ｕコード永久修復アルゴリズム１２０は、メインアレイ１１０における永久に修復される誤りに対する方法であってもよい。例えば、Ｕコード永久修復アルゴリズム１２０は、消去アルゴリズム中、電力アップ中又は装置がメインアレイ１１０の既知の誤りを修復するための時間を許可するユーザコマンドに応答して実行されてもよい。Ｕコード永久修復アルゴリズム１２０は、誤りを有する行を消去し、代わりにＮＶエラーキャッシュ１５０からダウンロードされた修復された行を書き込むかもしれない。Ｕコード永久修復アルゴリズム１２０は、エラーキャッシュＲＡＭ１４０とＮＶエラーキャッシュ１５０のサイズ要求を効果的に減少させるかもしれない。
【００１８】
本発明はこれに限定されるものでないが、ＥＤＡＣエンジン１３０と、Ｕコード永久修復アルゴリズム１２０と、メモリ１００の他のコンポーネントとがハードウェア、ソフトウェア又はハードウェアとソフトウェアの何れか所望の組み合わせにより実現可能であることが理解されるべきである。
【００１９】
図２を参照するに、本発明の他の実施例によるメモリシステム２００のブロック図が概略的に示される。本発明はこれに限定されるものでないが、メモリシステム２００は、メモリ２１０と、メモリコントローラ２２０とを有する。メモリ２１０は、メインアレイ２１５を有してもよい。メモリコントローラ２２０は、Ｕコード永久修復アルゴリズム２３０と、ＥＤＡＣエンジン２４０と、エラーキャッシュＲＡＭ２５０と、ＮＶエラーキャッシュ２６０とを有してもよい。
【００２０】
本発明の上記実施例によると、メモリ２１０は、限定されることなく、ＮＡＮＤフラッシュベースメモリであってもよく、メインアレイ２１５は、メモリセルのＮＡＮＤベースアレイを有してもよい。
【００２１】
本発明の上記実施例によると、アドレススキャンエンジン２０５は、メモリ２１０のアドレスをスキャンする。アドレススキャンエンジン２０５は、誤りを含むアドレスにアクセスするかもしれない。メモリコントローラ２２０のＥＤＡＣエンジン２４０は、所望される場合、コードワードのビットにおいて誤りを検出及び訂正するかもしれない。ＥＤＡＣエンジン２４０は、コードワードのビットの誤り訂正情報をエラーキャッシュＲＡＭ２５０に格納してもよい。エラーキャッシュＲＡＭ２５０は、この誤り訂正情報を利用して、当該コードワードの当該ビットのさらなる誤りの出現において、ビットの誤りを訂正するようにしてもよい。
【００２２】
本発明の上記実施例によると、エラーキャッシュＲＡＭ２５０は、メモリ２１０の電力不調及び／又は電力ダウンの場合におけるメモリミラーとして、ビットの誤り訂正情報をＮＶエラーキャッシュ２６０に格納してもよい。他の実施例では、高速リード／ライトＮＶメモリは、エラーキャッシュＲＡＭ２５０を置換するかもしれない。コードワードの永久修復は、Ｕコード永久修復アルゴリズム２３０により実行されてもよい。
【００２３】
本発明の各実施例によると、Ｕコード永久修復アルゴリズム２３０は、メモリ２１０における永久修復された誤りに対する方法であるかもしれない。例えば、Ｕコード永久修復アルゴリズム２３０は、消去アルゴリズム中、電力アップ中又は装置がメイン２１０のメインアレイ２１５の既知の誤りを修復するための時間を許可するユーザコマンドに応答して実行されてもよい。Ｕコード永久修復アルゴリズム２３０は、誤りを有する行を消去し、代わりに誤り訂正された行を書き込んでもよい。誤り訂正された行は、所望される場合、ＮＶエラーキャッシュ１５０からダウンロードされてもよい。
【００２４】
本発明はこれに限定されるものでないが、ＥＤＡＣエンジン２４０と、Ｕコード永久修復アルゴリズム２３０と、他のコンポーネントなどのメモリコントローラ２２０のコンポーネントがハードウェア、ソフトウェア又はハードウェアとソフトウェアの何れか所望の組み合わせにより実現可能であることが理解されるべきである。
【００２５】
図３を参照するに、本発明のいくつかの実施例によるコードワードにおける１以上のビットの誤り検出及び訂正方法のフローチャートが示される。本発明のいくつかの実施例によると、本方法は、テキストブロック３１０に示されるように、誤りを含むメモリのメインアレイのアドレスがシステム（計算プラットフォームなど）によりアクセスされることにより開始されるかもしれない。
【００２６】
本発明の他の実施例によると、本方法は、テキストブロック３２０に示されるように、誤りを含むメモリのメインアレイのアドレスがスキャンエンジン（図示せず）によりアクセスされることにより開始されるかもしれない。本発明の何れかの実施例において、ＥＤＡＣエンジン（ＥＤＡＣ１３０など）は、テキストブロック３３０に示されるように、コードワードのビット（ビット４など）における誤りを検出及び訂正するかもしれない。ＥＤＡＣエンジンは、誤り訂正情報をエラーキャッシュＲＡＭに格納してもよい（テキストブロック３４０）。本発明の各実施例によると、この誤り訂正情報は、誤りの行のアドレス、当該行のシンボル位置、及び誤りを有するビット（ビット４など）を含むシンボルの訂正値を含むかもしれない。本方法は、限定されるものでないが、システムに所望のアドレス（アドレス１０００など）の訂正されたデータを提示することによって終了するかもしれない。
【００２７】
図４を参照するに、本発明の他の実施例による図３のコードワードにおける以降の誤りの誤り検出及び訂正方法のフローチャートが示される。本発明のいくつかの実施例によると、本方法は、システムにある誤り訂正情報を用いて、コードワードのビットの既知の誤りを訂正するかもしれない（図３の方法により提供されるように）。本方法は、テキストブロック４１０に示されるように、誤りを含むメモリのメインアレイのアドレスがシステム（計算プラットフォームなど）によりアクセスされることにより開始されるかもしれない。
【００２８】
本発明の他の実施例によると、本方法は、テキストブロック４２０に示されるように、誤りを含むメモリのメインアレイのアドレスがスキャンエンジン（図示せず）によりアクセスされることにより開始されるかもしれない。本発明の何れかの実施例において、エラーキャッシュＲＡＭ（エラーキャッシュＲＡＭ１４０など）は、テキストブロック４３０に示されるように、コードワード（コードワード１００など）のビットにおける既知の誤りを検出及び訂正するようにしてもよい。ＥＤＡＣエンジンは、コードワードの他のビット（ビット６など）における他の誤りを検出及び訂正してもよい（テキストブロック４４０）。また、新たな誤り訂正情報をエラーキャッシュＲＡＭに格納してもよい（テキストブロック４５０）。この新たな誤り訂正情報は、誤りの行のアドレス、当該行のシンボル位置及び誤りを有するビット（ビット６など）を含むシンボルの訂正値を含むかもしれない。本方法は、限定されるものでないが、システムに所望のアドレス（アドレス１０００など）の訂正されたデータを提示することによって終了するようにしてもよい。
【００２９】
図３及び４の方法を用いた具体例が提供される。本例によると、最初の日にコードワード３のビット４において誤りが出現するかもしれない。ＥＤＡＣは、この誤りを検出及び訂正し、訂正されたデータをホストシステムに提供する。この誤りは、エラーキャッシュＲＡＭに格納される。他の日に、コードワード３のビット６に他の誤りが発生する（例えば、ビット４の誤りは依然として存在する）。メインアレイ出力は、ビット４と６に誤りを有する。本発明の各実施例によると、ビット４の誤りは、最初の日から格納されている情報を用いて訂正され、ビット６の誤りは、ＥＤＡＣエンジンを用いて訂正される。
【００３０】
上述された技術は、本方法を実行するよう計算システムを設定するコンピュータ可読媒体に実現されてもよい。コンピュータ可読媒体は、例えば、限定されることなく、ディスク及びテープ記憶媒体を含む磁気記憶媒体、コンパクトディスク媒体（ＣＤ−ＲＯＭ、ＣＤ−Ｒなど）やデジタルビデオディスク記憶媒体などの光記憶媒体、ホログラフィックメモリ、ＦＬＡＳＨメモリ、ＥＥＰＲＯＭ、ＥＰＲＯＭ、ＲＯＭなどの半導体ベース記憶ユニットを含む不揮発性メモリ記憶媒体、レジスタ、バッファ若しくはキャッシュ、メインメモリ、ＲＡＭなどを含む揮発性記憶媒体、及び永久及び断続的コンピュータネットワーク、ポイント・ツーポイント通信装置、搬送波伝送媒体、インターネットを含むデータ伝送媒体の何れかを含むものであってもよい。他の新規な及び各種タイプのコンピュータ可読媒体が、ここに記載されるソフトウェアモジュールを格納及び／又は送信するのに利用可能である。計算システムは、限定されるものでないが、メインフレーム、ミニコンピュータ、サーバ、ワークステーション、パーソナルコンピュータ、ノートパッド、携帯情報端末、各種無線装置、及び埋め込みシステムを含む多数の形態に見つけることができる。典型的な計算システムは、少なくとも１つの処理ユニット、係るメモリ及びいくつかの入出力（Ｉ／Ｏ）装置を含む。計算システムは、プログラムに従って情報を処理し、Ｉ／Ｏ装置を介し結果として得られる出力情報を生成する。
【００３１】
本発明による実現形態が、特定の実施例に関して説明された。これらの実施例は、例示的なものであって、限定するものでない。多数の変形、変更、追加及び改良が可能である。複数のインスタンスが、単一のインスタンスとしてここに記載されたコンポーネントに対して提供されるかもしれない。各種コンポーネント、処理及びデータストアの間の境界は任意的なものであり、特定の処理は具体的な例示的構成に関して説明される。他の機能の割当てが、以下の請求項の範囲内に含まれる。最後に、各種構成の各コンポーネントとして与えられた構成及び機能は、合成された構成又はコンポーネントして実現可能である。上記及び他の変形、変更、追加及び改良は、以下の請求項に規定されるような本発明の範囲内に属するかもしれない。
【図１】
2010512601.tif 000003
【図２】
2010512601.tif 000004
【図３】
2010512601.tif 000005
【図４】
2010512601.tif 000006
【国際調査報告】
2010512601.tif 000007
2010512601.tif 000008