(57)【要約】      （修正有）【課題】不揮発性メモリのエラーを検出して補正する方法およびそのシステムを提供する。【解決手段】メモリシステムは、データと先読みビットを保存するように構成された抵抗型不揮発性メモリアレイおよびメモリコントローラを含む。保存された先読みビットの中のエラーの数を検出し、先読みビットエラーの数をビットエラーのしきい値数と比較し、先読みビットエラーの数がしきい値以上であるとき、抵抗型不揮発性メモリアレイに保存されたデータと先読みビットの強いリフレッシュを実行し、先読みビットエラーの数がしきい値以下であるとき、データビットエラーを有する保存されたデータのユニットと先読みビットエラーを有する先読みビットだけをリフレッシュすることによって、データと先読みビットの弱いリフレッシュを実行する。【選択図】図４
2016225007.tif 000002
【特許請求の範囲】
【請求項１】
データおよび先読みビットを記憶するように構成された抵抗型不揮発性メモリアレイ、および
メモリコントローラ
を具備するメモリシステムであって、
当該メモリコントローラは、
記憶されたデータをユニット単位でデータビットエラー、および、記憶された先読みビットの中から先読みビットエラーを検出し、  
前記先読みビットエラーの数を検出し、
前記検出した先読みビットエラーの数と、先読みビットエラーのしきい値とを比較し、
前記検出した先読みビットエラーの数が前記先読みビットエラーのしきい値と等しいか大きいとき、前記抵抗型不揮発性メモリアレイに記憶されているデータおよび先読みビットについて強いリフリッシュを行い、
前記検出した先読みビットエラーの数が前記先読みビットエラーのしきい値未満のとき、前記データエラーを有する記憶されているデータ、および、前記先読みビットエラーを有する記憶されている先読みビットのユニットのみをリフリッシュすることにより前記記憶されたデータおよび先読みビットについて弱いリフリッシュを行う、
ように構成されている、メモリシステム。
【請求項２】
前記抵抗型不揮発性メモリアレイは、位相変化ランダムアクセスメモリ（ＰＣＲＡＭ）、抵抗型ランダムアクセスメモリ（ＲＲＡＭ）、または、導電性ブリッジ型ランダムアクセスメモリ（ＣＢＲＡＭ）の少なくとも１つを具備する、
請求項１に記載のメモリシステム。
【請求項３】
当該メモリシステムはさらにトランジスタ−ベース不揮発性メモリアレイを具備し、
前記抵抗型不揮発性メモリアレイは、前記記憶されているデータおよび先読みビットのユニットに対応するエラー訂正コード（ＥＣＣ）ビットを記憶するように構成されており、
前記メモリコントローラはさらに、
前記データビットエラーおよび前記先読みビットエラーを訂正するのに必要なＥＣＣビットの数を決定し、
前記決定したＥＣＣビットとＥＣＣビットのしきい値数とを比較する、
ように構成されており、
前記メモリコントローラはさらに下記の動作により、強いリフリッシュを行うように構成されており、ここで、前記下記の動作は、
データビットエラーおよび先読みビットエラーを訂正するのに必要なＥＣＣの数が０より大きくＥＣＣビットのしきい値数未満のとき、前記記憶されているデータおよび先読みビットエラーをユニット単位でデータビットエラーを訂正し、訂正したユニット単位で記憶されているデータおよび先読みビットを前記抵抗型不揮発性メモリアレイに書き込み、
前記記憶されているデータビットエラーおよび先読みビットエラーについてユニット単位での訂正をするのに必要なＥＣＣの数がＥＣＣビットのしきい値数以上のとき、前記トランジスタ−ベース不揮発性メモリアレイに記憶されているデータおよび先読みビットのユニットに対応する前記記憶されているデータおよび先読みビットをユニット単位で置き換え、
データビットエラーのない記憶されたデータ、および、先読みビットエラーのない先読みビットを有する先読みビットを読み出し、当該読みだしたデータビットエラーのない記憶されたデータ、および、先読みビットエラーのないビットを有する先読みビットをユニット単位で前記抵抗型不揮発性メモリアレイに書き込む
動作を含む、
請求項１に記載のメモリシステム。
【請求項４】
前記メモリコントローラは、
ユニット単位で訂正したデータおよび先読みビットを書き込み、データビットエラーを有する記憶されてデータ、および、先読みビットエラーを有する先読みビットをユニット単位で置き換え、データビットエラーのないデータを有する記憶されたデータおよび先読みビットのない先読みビットを有する先読みビットをユニット単位で書き込み、それにより、前記抵抗型不揮発性メモリアレイのメモリセルのための現在の分布が前記弱いリフリッシュよりも大きくなる、動作、
による強いリフリッシュを遂行するように構成されている、
請求項３に記載のメモリシステム。
【請求項５】
前記メモリコントローラは下記の動作により弱いリフリッシュを遂行するように、さらに構成されており、当該下記の動作は、
データビットエラーおよび先読みビットエラーを訂正するのに必要なＥＣＣの数が０より大きくＥＣＣビットのしきい値数未満のとき、前記記憶されているデータおよび先読みビットエラーをユニット単位でデータビットエラーを訂正し、訂正したユニット単位で記憶されているデータおよび先読みビットを前記抵抗型不揮発性メモリアレイに書き込み、
前記記憶されているデータビットエラーおよび先読みビットエラーについてユニット単位での訂正をするのに必要なＥＣＣの数がＥＣＣビットのしきい値数以上のとき、前記トランジスタ−ベース不揮発性メモリアレイに記憶されているデータおよび先読みビットのユニットに対応する前記記憶されているデータおよび先読みビットをユニット単位で置き換える、
動作を含む、
請求項３に記載のメモリシステム。
【請求項６】
前記データおよび先読みビットはそれぞれ、半導体ダイに形成された異なる抵抗型不揮発性メモリアレイに、または、集積回路（ＩＣ）パッケージに含まれる分離されている半導体ダイキに形成された異なる抵抗型不揮発性メモリアレイに、または、集積回路（ＩＣ）パッケージに含まれる分離されている異なる抵抗型不揮発性メモリアレイに、記憶されている、
請求項１記載のメモリシステム。
【請求項７】
抵抗型不揮発性メモリアレイを含むメモリシステムにおけるエラーを訂正する方法であて、当該方法は、
前記抵抗型不揮発性メモリアレイに記憶されたデータをユニット単位でデータビットエラー、および、記憶された先読みビットの中から先読みビットエラーを検出し、  
前記先読みビットエラーの数を検出し、
前記検出した先読みビットエラーの数と、先読みビットエラーのしきい値とを比較し、
前記検出した先読みビットエラーの数が前記先読みビットエラーのしきい値と等しいか大きいとき、前記抵抗型不揮発性メモリアレイに記憶されているデータおよび先読みビットについて強いリフリッシュを行い、
前記検出した先読みビットエラーの数が前記先読みビットエラーのしきい値未満のとき、前記データエラーを有する記憶されているデータ、および、前記先読みビットエラーを有する記憶されている先読みビットのユニットのみをリフリッシュすることにより前記記憶されたデータおよび先読みビットについて弱いリフリッシュを行う、
エラー訂正方法。
【請求項８】
前記抵抗型不揮発性メモリアレイは、位相変化ランダムアクセスメモリ（ＰＣＲＡＭ）、抵抗型ランダムアクセスメモリ（ＲＲＡＭ）、または、導電性ブリッジ型ランダムアクセスメモリ（ＣＢＲＡＭ）の少なくとも１つを具備する、
請求項７に記載のエラー訂正方法。
【請求項９】
前記先読みビットエラーの数の検出動作は、当該メモリシステムの電力印加に応じて、または、当該メモリシステムのアイドルモード期間，または、受信した命令に応じて行う、
請求項７に記載のエラー訂正方法。
【請求項１０】
前記先読みビットエラーの数の検出動作は、所定数の電力印加に応じて、または、所定数のアイドルモード，または、所定数の受信した命令に応じて行う、
請求項７に記載のエラー訂正方法。
【請求項１１】
当該エラー訂正方法はさらに、
前記データビットエラーおよび前記先読みビットエラーを訂正するのに必要な、前記抵抗型不揮発性メモリアレイに記憶されており、前記記憶されたデータおよび先読みビットに対応する、ＥＣＣビットの数を決定し、
前記決定したＥＣＣビットと、ＥＣＣビットのしきい値数とを比較する、
請求項７に記載のエラー訂正方法。
【請求項１２】
前記強いリフリッシュ動作は、
データビットエラーおよび先読みビットエラーを訂正するのに必要なＥＣＣの数が０より大きくＥＣＣビットのしきい値数未満のとき、前記記憶されているデータおよび先読みビットエラーをユニット単位でデータビットエラーを訂正し、訂正したユニット単位で記憶されているデータおよび先読みビットを前記抵抗型不揮発性メモリアレイに書き込み、
前記記憶されているデータビットエラーおよび先読みビットエラーについてユニット単位での訂正をするのに必要なＥＣＣの数がＥＣＣビットのしきい値数以上のとき、前記トランジスタ−ベース不揮発性メモリアレイに記憶されているデータおよび先読みビットのユニットに対応する前記記憶されているデータおよび先読みビットをユニット単位で置き換え、
データビットエラーのない記憶されたデータ、および、先読みビットエラーのない先読みビットを有する先読みビットを読み出し、当該読みだしたデータビットエラーのない記憶されたデータ、および、先読みビットエラーのないビットを有する先読みビットをユニット単位で前記抵抗型不揮発性メモリアレイに書き込む
動作を含む、
請求項１１に記載のエラー訂正方法。
【請求項１３】
前記強いリフリッシュ動作は、
ユニット単位で訂正したデータおよび先読みビットを書き込み、データビットエラーを有する記憶されてデータ、および、先読みビットエラーを有する先読みビットをユニット単位で置き換え、データビットエラーのないデータを有する記憶されたデータおよび先読みビットのない先読みビットを有する先読みビットをユニット単位で書き込み、それにより、前記抵抗型不揮発性メモリアレイのメモリセルのための現在の分布が前記弱いリフリッシュよりも大きくなる、動作である
請求項１に記載のエラー訂正方法。
【請求項１４】
前記弱いリフリッシュ動作は、
データビットエラーおよび先読みビットエラーを訂正するのに必要なＥＣＣの数が０より大きくＥＣＣビットのしきい値数未満のとき、前記記憶されているデータおよび先読みビットエラーをユニット単位でデータビットエラーを訂正し、訂正したユニット単位で記憶されているデータおよび先読みビットを前記抵抗型不揮発性メモリアレイに書き込み、
前記記憶されているデータビットエラーおよび先読みビットエラーについてユニット単位での訂正をするのに必要なＥＣＣの数がＥＣＣビットのしきい値数以上のとき、前記トランジスタ−ベース不揮発性メモリアレイに記憶されているデータおよび先読みビットのユニットに対応する前記記憶されているデータおよび先読みビットをユニット単位で置き換える、
動作を含む、
請求項７に記載のエラー訂正方法。
【請求項１５】
前記強いリフリッシュ動作または前記弱いリフリッシュ動作は、前記メモリシステムへの電力の印加または前記メモリシステムのアイドルモードの期間に応じて、強いリフリッシュまたは弱いリフリッシュを行うことを含む、
請求項７に記載のエラー訂正方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般的には、不揮発性メモリに関し、特に、不揮発性メモリのエラーを検出して補正する方法およびそのシステムに関するものである。
【背景技術】
【０００２】
不揮発性半導体メモリは、一般に電力が追加されないときでもデータを保持する。トランジスタベースの不揮発性メモリ、例えば、フラッシュメモリおよび電気的消去可能プログラマブル読み取り専用（リードオンリー）メモリ（ＥＥＰＲＯＭ）などは、高速な読み出しアクセス時間と耐衝撃性を提供し、トランジスタベースの不揮発性メモリを各種のアプリケーションにおいて望ましいものとしている。不揮発性メモリのいくつかのアプリケーションは、コンピューティングデバイス、携帯電話、ポータブルオーディオプレーヤー、およびその他の消費者（コンシューマ）用電子製品におけるデータストレージを含む。
【０００３】
図１は、例示的なトランジスタベースの不揮発性メモリアレイ１００の回路図を示している。トランジスタベースの不揮発性メモリ１００は、複数のトランジスタベースの不揮発性メモリセル１１０を含む。各トランジスタベースの不揮発性メモリセル１１０は、ワード線（例えば、ＷＬ０〜ＷＬｎ）とビット線（例えば、ＢＬ０〜ＢＬｍ）に関連する。トランジスタベースの不揮発性メモリアレイ１００は、１つ以上のトランジスタを記憶素子として用いて、データを保存する不揮発性メモリによって形成されることができる。トランジスタベースの不揮発性メモリは、プログラマブル読み取り専用（リードオンリー）メモリ（ＰＲＯＭ）、電気的プログラマブル読み取り専用（リードオンリー）メモリ（ＥＰＲＯＭ）、電気的消去可能プログラマブル読み取り専用（リードオンリー）メモリ（ＥＥＰＲＯＭ）、フラッシュメモリ、または電気的プログラム可能フューズ（ｅＦＵＳＥ）メモリを含む。
【０００４】
図１に示されるように、トランジスタベースの不揮発性メモリアレイ１００がＥＰＲＯＭ、ＥＥＰＲＯＭ、またはフラッシュメモリを用いて実現されたとき、各トランジスタベースの不揮発性メモリセル１１０は、フローティングゲート金属酸化物半導体電界効果トランジスタ（ＭＯＳＦＥＴ）を含む。フローティングゲートＭＯＳＦＥＴ（ＦＧＭＯＳ）は、電荷を電気的に絶縁されたフローティングゲートに保存することができる。この電気的絶縁は、フローティングゲートが電源のない延伸期間に電荷を保持することを可能にしている。充分に充電されたフローティングゲートは、論理「０」状態を示すことができ、充電されていないフローティングゲートは、論理「１」状態を示すことができ、またその逆の論理も示すことができる。
【０００５】
新規提案の不揮発性メモリ技術が、例えば、フラッシュメモリなどのトランジスタベースの不揮発性メモリと関連した各種の制約に対処するために開発されている。例えば、ほとんどの市販のフラッシュメモリは、書き換え耐性 （Write Endurance）が比較的低いという問題に遭遇している。代表的なフラッシュメモリは、１×１０５サイクルまでの書き込みサイクル（プログラム／消去サイクルともいう）に耐え得ることができる。いくつかの新しい不揮発性メモリ、例えば、磁気ランダムアクセスメモリ（ＭＲＡＭ）は、１×１０１２サイクルまでの書き込みサイクルに耐え得ることができる。他の例では、フラッシュメモリアレイは、例えば、読み出しディスターブ（ｄｉｓｔｕｒｂ）（近隣セルを時間とともに変えさせる順次読み出しサイクル）と書き換え耐性の低下などのスケーリング問題に遭遇している。
【０００６】
しかしながら、新しい不揮発性メモリは、欠点を有する。例えば、高温での動作は、抵抗型（ｒｅｓｉｓｔｉｖｅ）不揮発性メモリなどのいくつかの新しい不揮発性メモリにおいてビット反転などのデータエラーを生じさせる可能性がある。このようなデータエラーは、システムクラッシュ、データ破損、および／またはセキュリティ上の脆弱性を招く可能性がある。さらに、製造と保存の温度が高温であると、新しい不揮発性メモリはシステム的なデータドリフト、データ損失、大幅なデータ破損、およびデータ保持時間の減少などのデータ保持の問題を招く可能性がある。
【発明の概要】
【０００７】
１つの例示的な実施形態に基づくと、メモリシステムは、データと先読み（ルックアヘッド, look-ahead）ビットを保存するように構成された抵抗型不揮発性メモリアレイおよびメモリコントローラを含む。メモリコントローラは、保存された先読みビットの中のエラーの数を判定し、先読みビットエラーの数をビットエラーのしきい値数と比較し、先読みビットエラーの数がしきい値以上であるとき、抵抗型不揮発性メモリアレイに保存されたデータと先読みビットの強いリフレッシュを実行し、先読みビットエラーの数がしきい値未満であるとき、データビットエラーを有する保存されたデータと先読みビットエラーを有する先読みビットのユニットだけをリフレッシュすることによって、データと先読みビットの弱いリフレッシュを実行する。
【０００８】
他の例示的な実施形態に基づくと、メモリシステムにおけるエラーを補正する方法は、抵抗型不揮発性メモリアレイに保存された先読み（ルックアヘッド）ビットの中のエラーの数を検出するステップ、先読みビットエラーの数をビットエラーのしきい値数と比較するステップ、先読みビットエラーの数がしきい値以上であるとき、抵抗型不揮発性メモリアレイに保存されたデータと先読みビットの強いリフレッシュを実行するステップ、先読みビットエラーの数がしきい値未満であるとき、データビットエラーを有する保存されたデータと先読みビットエラーを有する先読みビットのユニットだけをリフレッシュすることによって、データと先読みビットの弱いリフレッシュを実行するステップを含む。
【０００９】
さらに他の例示的な実施形態に基づくと、メモリシステムは、不揮発性メモリアレイを含む。この不揮発性メモリアレイは、データを保存するように構成された抵抗型メモリセル、誤り訂正符号（ＥＣＣ）ビットを保存するように構成された抵抗型メモリセル、保存されたデータのユニットにあるデータビットエラーを補正するＥＣＣビット、および先読みビットを保存するように構成された抵抗型メモリセルを含み、先読みビットは保存されたデータのシステム的なドリフトを検出する。
【００１０】
本開示の特定の実施形態を詳細に説明する前に、実施形態はその用途又は使用において、添付の図及び説明に例示される部品の構成及び配列の詳細に限定されないことに理解すべきである。
【００１１】
以上、当業者が本開示の態様をより理解できるように幾つかの実施の形態の特徴を概説した。当業者は、本開示を、いくつかの目的を実行するために他の構造、方法、およびシステムを設計するための基礎として、容易に使用できることが分かる。さらに、本開示の精神及び範囲を逸脱しない限りにおいては、当業者であればそのような等価な構成を達成することが可能である。
本明細書に組み込まれて、その一部を形成する添付図面は、本発明の幾つかの実施態様を示しており、説明とともに本発明の原理を説明するに役立つ。
【図面の簡単な説明】
【００１２】
【図１】例示的なトランジスタベースの不揮発性メモリアレイの回路図である。
【図２】本発明と整合する実施形態を実施する例示的な抵抗型不揮発性メモリアレイの回路図である。
【図３】本発明と整合する実施形態を実施する例示的なトランジスタベースの不揮発性メモリアレイのブロック図である。
【図４】本発明と整合する実施形態を実施する例示的なメモリシステムのブロック図である。
【図５】本発明の実施形態と整合するメモリシステムのデータを補正する例示的な方法を示すフロー図である。
【図６】本発明の実施形態と整合するメモリシステムのデータを補正するもう１つの例示的な方法を示すフロー図である。
【図７】本発明の実施形態と整合する強いリフレッシュ動作を実行する例示的な方法を示すフロー図である。
【図８】本発明の実施形態と整合する弱いリフレッシュ動作を実行する例示的な方法を示すフロー図である。
【図９】通常の（ｎｏｒｍａｌ）読み出し動作と本開示の実施形態と整合するマージン（ｍａｒｇｉｎ）読み出し動作との間の比較を示している。
【発明を実施するための形態】
【００１３】
本発明の実施形態は、新規提案の不揮発メモリにおけるエラーを検出して補正する、改善された方法およびシステムを提供する。多くの新規提案の不揮発メモリは、トランジスタベースの不揮発性メモリに対し、書き込み速度と書き換え耐性、電力消費、データ保持、データ保護、およびバイトレベルのランダムアクセスについて著しい利点を有する。しかしながら、抵抗型不揮発性メモリなどのいくつかの新規提案の不揮発性メモリは、高温および／または電磁妨害（ＥＭＩ）により、データ保持とデータ破損の問題に影響されやすい可能性がある。抵抗型不揮発性メモリは、例えば、異なる抵抗状態を用いてデータを保存する任意の不揮発性メモリを含むことができる。抵抗型不揮発性メモリの例は、相変化ランダムアクセスメモリ（ＰＣＲＡＭ）、磁気ランダムアクセスメモリ（ＭＲＡＭ）、導電性ブリッジランダムアクセスメモリ（ＣＢＲＡＭ）などのプログラマブルメタライゼーションセル（ＰＭＣ）メモリ、および抵抗型ランダムアクセスメモリ（ＰＲＡＭ）を含む。
【００１４】
ＰＣＲＡＭは、カルコゲナイド系材料の非結晶相と結晶相との間の抵抗の違いを用いてデータを保存する。非結晶相は、高抵抗相に対応し、結晶相は、低抵抗相に対応する。
ＭＲＡＭは、２つの強磁性層間のトンネルバリア層を用いて、異なる抵抗状態を切り替えてデータを保存する。低抵抗状態は、２つの強磁性層の磁化方向が平行のとき、実現される。高抵抗状態は、２つの強磁性層の磁化方向が平行でないとき、実現される。
ＣＢＲＡＭセルは、2つの固体金属電極間に電解質の薄膜を含む。ＣＢＲＡＭセルは、電解質膜の金属電極の間にナノワイヤーを形成することによって、異なる抵抗状態でデータを保存する。ナノワイヤーの欠如は、高抵抗状態に対応し、ナノワイヤーの存在は、低抵抗状態に対応する。
ＰＲＡＭは、遷移金属酸化物における抵抗スイッチングに基づいて２つ以上の抵抗状態としてデータを保存する。
ＣＢＲＡＭセルと同様に、ＰＲＡＭセルは、金属‐絶縁体‐金属構造を含む。異なる論理状態は、絶縁体層で１トレイルの導通不良（ａ  ｔｒａｉｌ  ｏｆ  ｃｏｎｄｕｃｔｉｎｇ  ｄｅｆｅｃｔｓ）（フィラメント（ｆｉｌａｍｅｎｔ）と呼ばれる）を生じることで示される。フィラメントの不存在は、高抵抗状態に対応し、フィラメントの存在は、低抵抗状態に対応する。各種の抵抗メモリの高抵抗状態と低抵抗状態は、第１と第２の論理値、例えば、「０」と「１」を示すデータを記憶するように用いられる。
【００１５】
不揮発性メモリは、各種の温度範囲内で動作されるように仕様が規定されることができる。例えば、不揮発性メモリは、０〜８５℃（産業用仕様）、−４０〜１２５℃（工業／自動車用仕様）、または−５５〜１２５℃（軍用仕様）の環境温度内で動作されるように仕様が規定されることができる。保存温度の定格は、一般的に１５０℃までの範囲である。
不揮発性メモリは、基板にＩＣチップを搭載するときにも高温になる。例えば、代表的なウェーブはんだ付けプロセスは、２５０℃にまで温度が上昇する。抵抗型不揮発性メモリは、これらの動作範囲の上の部分に近接したときに性能が劣化することになる可能性がある。例えば、ビット反転などのデータエラーは、高環境動作温度で抵抗型不揮発性メモリセルに生じる可能性がある。また、ウェーブはんだ付けプロセスによって引き起こされた高温に曝される前に、抵抗型不揮発性メモリに書き込まれたデータは、システム的なデータドリフトおよびデータ保持時間の減少などの重大なデータエラーになる可能性がある。
【００１６】
本発明の実施形態は、抵抗型不揮発性メモリに対する高温のメモリ動作およびデータ保存において、上述のメモリを含むシステムおよび／または集積回路（ＩＣ）の性能改善を可能にする改善方法を提供する。本発明の実施形態は、誤り訂正符号（ＥＣＣ）を用いてその保存されたデータを更新するように構成される抵抗型不揮発性メモリアレイを提供する。データ更新は、メモリシステム動作の異なる段階、例えば、パワーアップの初期化またはアイドルモードの期間に、またはシステム命令に応じて実行されることができる。データ更新は、保存したデータに対して読み出し、補正、および書き戻しをすることによって実行されることができる。いくつかの実施形態は、不足した誤り訂正符号（ＥＣＣ）またはシステム的なデータドリフトの場合に実行される、より強い書き戻しをした改善されたデータ更新を提供する。強化されたデータ更新は、抵抗型メモリに保存された全てのデータをリフレッシュすることができ、それにより、メモリのマージンは、基板実装および／または高温保存後に回復する。他の実施形態は、データ更新の技術の組み合わせを提供することができる。
【００１７】
ここで、本発明に基づいて実現された例示的な実施形態が詳細に参照され、その実施例は添付図面に例証されており、図中、同様の参照番号は全体を通して同様の要素を指している。
【００１８】
図２は、本開示と一致する実施形態を実施する例示的な抵抗型不揮発性メモリアレイ２００の回路図である。抵抗型不揮発性メモリアレイ２００は、上述の任意の抵抗型不揮発性メモリ、例えばＰＣＲＡＭ、ＰＲＡＭ、ＭＲＡＭ、またはＣＢＲＡＭなどを用いて形成されることができる。また、抵抗型不揮発性メモリアレイ２００は、２次元メモリアレイまたは３次元メモリアレイを含むことができる。
【００１９】
図２に示されるように、抵抗型不揮発性メモリアレイ２００は、複数のワード線（ＷＬ０〜ＷＬｎ）、複数のビット線（ＢＬ０〜ＢＬｍ）、および複数の抵抗型メモリセル２１０を含む。各抵抗型メモリセル２１０は、ワード線とビット線に関連する。各抵抗型メモリセル２１０は、選択素子２１２と抵抗記憶素子２１４を含む。抵抗型メモリセル２１０は、上述の任意の抵抗型不揮発性メモリ、例えばＰＣＲＡＭセル、ＰＲＡＭセル、ＭＲＡＭセル、または導電性ブリッジＲＡＭ（ＣＢＲＡＭ）セルなどによって実施されることができる。選択素子２１２は、選択スイッチとして動作し、抵抗型不揮発性メモリセル２１０へのアクセスを制御する。選択素子２１２は、例えば、ダイオード、金属酸化物半導体電界効果トランジスタ（ＭＯＳＦＥＴ）、またはバイポーラ接合トランジスタ（ＢＪＴ）によって実施されることができる。いくつかの実施形態では、選択素子２１２は、任意であることができ、例えば、抵抗型不揮発性メモリセル２１０は、ＲＰＡＭセルによって実施される。
【００２０】
図３は、本発明と一致する実施形態を実施する抵抗型不揮発性メモリアレイ２００のブロック図を示している。図３に示されるように、抵抗型不揮発性メモリアレイ２００は、複数のセルタイプを含む。例えば、データセル３１０は、データビットを保存するように構成される。各データセル３１０は、１つ以上のデータビットを保存する。データビットは、各種の記憶ユニット、例えば、ページ、ブロック、セクタ、ワード、または当業者に周知の任意の他のストレージ構成に書き込まれ、アクセスされることができる。各記憶ユニットは、任意の数のデータビットを含むことができる。
【００２１】
いくつかの実施形態では、抵抗型不揮発性メモリアレイ２００は、ＥＣＣセル３２０を含む。各ＥＣＣセル３２０は、ＥＣＣビット（または複数のビット）を保存するように構成され、データセル３１０と先読み（ｌｏｏｋ−ａｈｅａｄ）セル３３０に保存されたエラーまたは不良データビットを検出して補正する。エラーは、例えば、ＥＭＩ、高温動作、高温保存、基板実装ウェーブはんだ付け温度（ｂｏａｒｄ ｍｏｕｎｔ ｗａｖｅ ｓｏｌｄｅｒ ｔｅｍｐｅｒａｔｕｒｅｓ）などに起因するソフトエラー（ｓｏｆｔ ｅｒｒｏｒｓ）である可能性がある。ソフトエラーは一般的に、一時的であり、常に繰り返されるものではない。エラーは、メモリセルのハードウェア欠陥に起因するハードエラー（ｈａｒｄ ｅｒｒｏｒｓ）である可能性がある。ハードエラーは、一般的に繰り返され、且つ常にエラーの結果を生じる。保存されたＥＣＣビットは、ハミング符号、ボーズチョドーリオッケンジェム（Ｂｏｓｅ-Ｃｈａｕｄｈｕｒｉ-Ｈｏｃｑｕｅｎｇｈｅｍ；ＢＣＨ）符号、パリティビット、リードソロモン符号、ターボ符号、低密度パリティ検査符号（ＬＤＰＣ）、畳み込み符号、または当業者に周知の任意の他の誤り訂正符号を含むことができる。
【００２２】
ＥＣＣセル３２０に保存されたＥＣＣビットの数は、ＥＣＣの符号化方式によって決まる。ＥＣＣの符号化方式は、保存されたデータの記憶ユニット当たり（例えば、ページ当たり、ブロック当たり、セクタ当たり、ワード当たり、バイト当たり、ビット当たりなど）のＥＣＣビットの数を割り当てることができる。例えば、１６のデータワードがデータセル３１０に保存され、且つＥＣＣの符号化方式がデータワード当たり４つのＥＣＣビットを割り当てたとき、ＥＣＣセル３２０に保存された全てのＥＣＣビットの数は６４であり、且つＥＣＣセル３２０当たり１つ以上のＥＣＣビットを有する。各記憶ユニットに割り当てられたＥＣＣビットの数は、フレキシブルであることができ、設計要求、システム能力、タイミング、およびスループット要求などによって決まることができる。保存されたＥＣＣビットで補正可能なデータビットエラーの数は、ｉ−１と定められ、ｉは、各記憶ユニットに割り当てられたＥＣＣビットの数である。例えば、ＥＣＣセル３２０がデータワード当たり３つのＥＣＣビットを保存したとき、３つのＥＣＣビットは、データワード当たり２つのデータビットエラーを訂正することができる。
【００２３】
いくつかの実施形態では、抵抗型不揮発性メモリアレイ２００は、先読みセル３３０を含む。先読みセル３３０は、データセル３１０に保存されたデータビットの実質的なデータ破損またはシステム的なデータドリフトを検出する先読みビットを保存するように構成される。各先読みセル３３０は、１つ以上の先読みビットを保存するように構成される。先読みセル３３０に保存された先読みビットは、データ破損またはシステム的なデータドリフトのインジケータとなる。データ破損またはシステム的なデータドリフトの原因は、例えば、ＥＭＩ、基板実装ウェーブはんだ付け温度、または抵抗型不揮発性メモリアレイ２００の高温保存などである。言い換えれば、保存された先読みビット内の重大なエラーの存在は、データセル３１０に保存されたデータにも重大なエラーを含んでいる可能性があることを示しているということである。
【００２４】
先読みセル３３０に保存された先読みビットの数は、例えば、抵抗型不揮発性メモリアレイ２００に含まれたメモリセルの総数、データセル３１０に保存されたデータビットの総数、システム的なドリフト検出に割り当てできるメモリシステムスループットの量など、多くの要因によって決まる。先読みセル３３０に保存された先読みビットの総数の例は、１６ビットまたは３２ビットを含む。先読みセル３３０に保存された先読みビットの総数は、データセル３１０に保存されたデータビットの数と比べ、小さいことがある。従って、少量の先読みビットを多数のデータビットの品質の代用として用いることは、メモリシステムの効率を改善し、エラー検出に必要なメモリシステムリソースの量を減少する。
【００２５】
いくつかの実施形態では、データセル３１０、ＥＣＣセル３２０、および／または先読みセル３３０は、セル当たり複数ビットを保存するように構成される。例えば、マルチレベルセルは、抵抗型不揮発性メモリアレイ２００に用いられることができる。マルチレベルセルは、３つ以上の異なる抵抗状態を用いて２つ以上のデータビットを保存する。例えば、４つの異なる抵抗状態を有するマルチレベルセルは、２つのビットを保存することができ、各ビットは、２つの抵抗状態を用いて論理「０」と「１」を示す。しかしながら、セル当たりに保存されたビット数の増加は、より大きなビット誤り率となる可能性があるため、記憶ユニット当たり、より大きな数のＥＣＣビットでこれらのエラーを訂正する必要がある。
【００２６】
データセル３１０、ＥＣＣセル３２０、および先読みセル３３０は、同じ抵抗型不揮発性メモリアレイ２００内に含まれ、同一の半導体ダイ上に形成された異なる抵抗型不揮発性メモリアレイ２００に保存される、同一の集積回路（ＩＣ）パッケージに含まれた個別の半導体ダイ上に形成された異なる抵抗型不揮発性メモリアレイ２００に保存される、または個別のＩＣパッケージに含まれた個別の半導体ダイ上に形成された異なる抵抗型不揮発性メモリアレイ２００に保存されるなどができる。
【００２７】
図４は、本発明と一致する実施形態を実施する例示的なメモリシステム４００のブロック図を示している。図４に示されるように、メモリシステム４００は、抵抗型不揮発性メモリアレイ２００およびメモリコントローラ４１０を含む。本発明の開示から、これらの構成要素の数と配置は、例示的なものであるに過ぎず、説明する目的のために提供されるものであることが認識されるであろう。他の構成要素の数と配置は、本発明の教示および実施形態から逸脱せずに用いられることができる。一例では、メモリコントローラ４１０および抵抗型不揮発性メモリアレイ２００は、同一の半導体ダイ上に、同一のＩＣパッケージに含まれた個別の半導体ダイ上に、個別のＩＣパッケージに含まれた個別の半導体ダイ上に、または当業者に周知の任意の構成上に形成されることができる。他の実施例では、メモリコントローラ４１０は、複数の抵抗型不揮発性メモリアレイ２００またはトランジスタベースの不揮発性メモリアレイと抵抗型不揮発性メモリアレイ２００の組み合わせを制御することができる。
【００２８】
いくつかの実施形態では、メモリコントローラ４１０は、入力／出力インターフェース（Ｉ／Ｏ）４１１、行デコーダ（ワード線デコーダとも呼ばれる）４１２、列デコーダ４１３、センスアンプと書き込みドライバ４１４、誤り訂正符号（ＥＣＣ）コントローラ４１５、および先読みコントローラ４１６を含む。メモリコントローラ４１０に含まれた構成要素４１１〜４１６は、ハードウェアとソフトウェアの組み合わせによって実施されることができる。例えば、構成要素４１１〜４１６は、マイクロプロセッサ、特定用途向け集積回路（ＡＳＩＣ）、プログラマブルゲートアレイＩ（ＰＧＡ）またはフィールドプログラマブルゲートアレイ（ＦＰＧＡ）、電気回路、またはその任意の組み合わせによって実施されることができる。また、構成要素４１１〜４１６のいくつかの、または全ての機能は、同じハードウェア／ソフトウェアの組み合わせによって実行されることができる。例えば、ＥＣＣコントローラ４１５と先読みコントローラ４１６の機能は、同じマイクロプロセッサ、ＡＳＩＣ、ＰＧＡ、ＦＰＧＡ、ＣＰＬＤ、またはカスタム論理回路によって実行されることができ、全てのコントローラは同じ書き込みアルゴリズムをシェアする、またはシェア（共用）しないことができる。
【００２９】
Ｉ／Ｏ４１１は、外部ソースから入力信号を受けてその入力信号を変換し、それにより、それらの入力信号は、メモリコントローラ４１０に含まれた構成要素によって理解され受けられることができる。例えば、Ｉ／Ｏ４１１は、例えば、読み出しコマンド、書き込みコマンド、データ更新コマンドなどのコマンドを受けることができる。
【００３０】
通常の読み出し動作では、Ｉ／Ｏ４１１は、行座標と列座標を行デコーダ４１２と列デコーダ４１３にそれぞれ送信する。行デコーダ４１２は、行座標をデコードし、センス電圧を対応するワード線に提供する。センス電圧は、ワード線に接続された各抵抗型メモリセル２１０の選択素子２１２を活性化する。列デコーダ４１３は、列座標をデコードし、対応するビット線をセンスアンプと書き込みドライバ４１４に接続する。センスアンプと書き込みドライバ４１４は、読み出し回路と書き込み回路を含む。読み出し回路は、適切なワード線／ビット線の交差にある抵抗型メモリセル２１０に流れる電流を測定し、測定した電流に対応する論理値を判定する。読み出しサイクルの期間、メモリセルの電流は、しきい値電流値（一般的にセンス電流と呼ばれる）のどちらか側に分布される。しきい値より大きい電流値は、論理「０」に対応し、しきい値より小さい電流値は、論理「１」に対応し、その逆の論理にも対応する。従って、センスアンプと書き込みドライバ４１４は、抵抗型メモリセル２１０に流れる電流を測定し、測定した電流を1つ以上のしきい値電流値と比較し、測定した電流がしきい値電流値より大きいか、または小さいかに基づいて論理値を判定する。センスアンプと書き込みドライバ４１４は、判定した論理値を読み込み動作からの出力としてＩ／Ｏ４１１に提供する。Ｉ／Ｏ４１１は、出力を外部送り先に送信するか、または外部ソースによって要求されるまで出力を保留する。いくつかの実施形態では、同一の活性化されたワード線と関連した複数の抵抗型メモリセル２１０は、単一の読み出し動作で読み出されることができる。行レコーダ４１２がセンス電圧を対応するワード線に提供したとき、ワード線上の各抵抗型メモリセル２１０は、活性化される。従って、読み出し回路は、これらのセルと関連したビット線上の各活性化された抵抗型メモリセル２１０によって電流を測定する。
【００３１】
いくつかの実施形態では、メモリコントローラ４１０は、より高いメモリの信頼性と読み取り精度が望まれたとき、マージン読み出し動作をメモリセル２１０に実行する。例えば、メモリコントローラ４１０は、先読みセル３３０から読み出すとき、マージン読み出し動作を実行する。先読みビットは、大量のデータビットの品質の代用として用いるため、マージン読み出しは、先読みビットの品質の劣化（従ってデータ破損が発生する）の検出を改善するのに用いられる。もう1つの例として、メモリコントローラ４１０は、強いまたは弱いリフレッシュ動作（後述の図７および図８を参照）後、データセル３１０にマージン読み出し動作を実行し、データセル３１０がうまくリフレッシュされたかどうかを確認する。
【００３２】
単一のしきい値電流値を用いる代わりに、センスアンプと書き込みドライバ４１４は、マージン読み出し動作の期間、測定した電流を複数のしきい値電流値と比較することによって、測定した電流に対応する論理値を判定する。しきい値電流値は、上限しきい値電流値と下限しきい値電流値を含む。上限しきい値電流値と下限しきい値電流値は、通常しきい値電流値のどちらか側に分布される。例えば、通常の書き込みサイクルのしきい値電流値は、２５μＡで選択され、上限しきい値電流値と下限しきい値電流値は、４０μＡと１０μＡでそれぞれ選択されることができる。上限しきい値電流値より大きい測定された電流値は、論理「０」に対応し、下限しきい値電流値より小さい測定された電流値は、論理「１」に対応し、その逆も対応する。
【００３３】
通常の書き込み動作では、Ｉ／Ｏ４１１は、外部ソースからのデータおよびデータが保存される抵抗型不揮発性メモリセル２１０アドレスを受信する。Ｉ／Ｏ４１１は、アドレスを行と列座標に変換し、その座標を行デコーダ４１２と列デコーダ４１３にそれぞれ送信する。行デコーダ４１２は、行座標をデコードし、書き込み電圧を対応するワード線に提供する。列デコーダ４１３は、列座標をデコードし、対応するビット線をセンスアンプと書き込みドライバ４１４に接続する。Ｉ／Ｏ４１１は、指示をセンスアンプと書き込みドライバ４１４に送信し、活性化されたワード線とビット線の交差部に位置した抵抗型不揮発性メモリセル２１０に「０」または「１」のいずれかを書き込む。センスアンプと書き込みドライバ４１４の書き込み回路は、「１」または「０」が保存されるかどうかに応じて、高抵抗状態または低抵抗状態に抵抗素子２１２の抵抗を変える。
【００３４】
いくつかの実施形態では、メモリコントローラ４１０は、ＥＣＣコントローラ４１５を含む。ＥＣＣコントローラ４１５は、データセル３１０に保存されたデータの中のデータビットエラーおよび先読みセル３３０に保存されたビットの中の先読みビットエラーを検出する。上述の書き込み動作では、ＥＣＣコントローラ４１５は、抵抗型メモリセル２１０に書き込まれるデータに対応してＥＣＣビットを生成する。ＥＣＣコントローラ４１５は、抵抗型メモリセル２１０に書き込まれる先読みビットにも対応してＥＣＣビットを生成する。データまたは先読みビットの各記憶ユニット用に生成されたＥＣＣビットの数は、上述のＥＣＣの符号化方式の中の１つに従って決まる。生成されたＥＣＣビットは、ＥＣＣコントローラ４１５からセンスアンプと書き込みドライバ４１４に送信される。センスアンプと書き込みドライバ４１４の書き込み回路は、データをデータセル３１０に、よき読みビットを先読みセル３３０に、且つ生成されたＥＣＣビットをＥＣＣセル３２０に書き込む。
【００３５】
上述の読み出し動作では、ＥＣＣコントローラ４１５は、データセル３１０に保存されたデータとＥＣＣセル３２０に保存された対応するＥＣＣビットを読み出す。ＥＣＣコントローラ４１５は、ＥＣＣビットを用いて読み出されたデータにエラー検出を行い、データビットエラーを検出する。１つの実施形態では、ＥＣＣコントローラ４１５は、データの記憶ユニット当たりのデータビットエラーの数を判定する。記憶ユニット当たりのデータビットエラーの数が記憶ユニットに対応するＥＣＣビットの数より小さい場合、ＥＣＣコントローラ４１５は、ＥＣＣビットを用いてデータビットエラーを補正する。ＥＣＣコントローラ４１５は、補正したデータをセンスアンプと書き込みドライバ４１４に送信し、且つ書き込み回路は、データを各々のデータセル３１０とＥＣＣセル３２０に書き戻す。いくつかの実施形態では、書き込み回路は、補正されたデータビットを含むデータの全ての記憶ユニットをデータセル３１０に書き込む。他の実施形態では、書き込み回路は、補正されたビットだけをデータセル３１０に書き込む。
【００３６】
いくつかの実施形態では、メモリコントローラ４１０は、先読みコントローラ４１６を含む。先読みコントローラ４１６は、データセル３１０に保存されたデータの重大なデータ破損および／またはシステム的なデータドリフトを検出する。例えば、先読みコントローラ４１６は、先読みセル３３０に保存された先読みビットとＥＣＣセル３２０に保存された対応するＥＣＣビットを読み出し、ＥＣＣビットを用いて先読みセル３３０に保存された先読みビットエラーの数を判定する。先読みビットエラーの数がビットエラーのしきい値数以上である場合、先読みコントローラ４１６は、データセル３１０に保存されたデータの強いリフレッシュを初期化する。先読みビットのしきい値数の実施例は、先読みセル３３０に保存された先読みビットの５０％であることができる。従って、本実施例では、先読みセル３３０に保存された先読みビットが３２個存在するとき、先読みコントローラ４１６は、先読みコントローラ４１６が先読みビットの数が１６ビット以上であると判定したとき、強いリフレッシュを初期化する。
【００３７】
強いリフレッシュは、抵抗型不揮発性メモリアレイ２００に保存された全てのデータと先読みビットの読み出し、任意の補正可能なビットエラーを補正し、補正不可能なエラーを有する任意のビットを代替し、且つ全てのデータと先読みビット（補正されて代替されたビットを含む）を抵抗型不揮発性メモリアレイ２００に書き戻す。具体的に言うと、エラーを有さないデータと先読みビットは、強いリフレッシュ動作でなおリフレッシュされる。保存された先読みビットが重大なエラーを含むとき、それによりデータセル３１０に保存されたデータも重大なエラーを含む可能性があることを示すため、エラーを有さないデータと先読みビットは、無くした重大なメモリセルマージンをまだ有している可能性があるため、無効に近い可能性がある。従って、強いリフレッシュ動作は、データと先読みビットを保存しているメモリセル内でマージンを復元するために、抵抗型不揮発性メモリアレイ２００に保存された全てのデータと先読みビットをリフレッシュする。強いリフレッシュ動作は、図７を参照にしながら、詳細に説明する。
【００３８】
先読みビットエラーの数がエラーのしきい値数より小さい場合、先読みコントローラ４１６は、データセル３１０に保存されたデータの弱いリフレッシュを初期化する。弱いリフレッシュは、抵抗型不揮発性メモリアレイ２００に保存された全てのデータと先読みビットの読み出し、任意の補正可能なビットエラーを補正し、補正不可能なエラーを有する任意のビットを代替し、且つ補正／代替されたデータと先読みビットだけを抵抗型不揮発性メモリアレイ２００に書き戻す。従って、保存された先読みビットが重大なエラーを含まないとき、リフレッシュ動作を実行するのに用いられるメモリシステムリソースは、抵抗型不揮発性メモリアレイ２００の全てのデータと先読みビットに代替して補正／代替されたデータと先読みビットだけを書き込むことによって最小化することができる。弱いリフレッシュ動作は、図８を参照にしながら、以下に詳述する。
【００３９】
図５は、本発明のいくつかの実施形態および態様と一致する例示的な方法５００のフローチャートを示している。方法５００は、例えば、抵抗型不揮発性メモリのエラーを検出して補正するように実施されることができる。いくつかの実施形態では、方法５００は、例えば、図４に示されたメモリシステム４００のメモリシステムによって実施されることができる。
【００４０】
いくつかの実施形態では、例示的な方法５００は、抵抗型不揮発性メモリアレイに保存された先読みビットに対してマージン読み出し動作を実行するステップを含む（ステップ５１０）。メモリシステムに含まれたメモリコントローラ（例えば、図４のメモリコントローラ４１０）は、図４に関して上述されたマージン読み出し動作を用いて、抵抗型メモリアレイ（例えば、図２〜図４の抵抗型メモリアレイ２００）の第１の不揮発性メモリアレイのデータセル（例えば、図３の先読みセル３３０）に保存された先読みビットを読み出す。メモリコントローラは、例えば、ページ、ブロック、セクタ、ワード、または当業者に周知の任意の他の記憶ユニットなど、各種の記憶ユニットの先読みビットを読み出す。各記憶ユニットは、任意の数の先読みビットを含むことができる。
【００４１】
いくつかの実施形態では、例示の方法５００は、抵抗型不揮発性メモリアレイに保存された先読みビットの中のエラーの数を判定するステップを含む（５２０）。メモリコントローラは、抵抗型不揮発性メモリアレイのメモリセル（例えば、図３のＥＣＣセル３２０）に保存されたＥＣＣビットを読み出し、保存されたＥＣＣビットを用いて先読みビットエラーを検出する。メモリコントローラは、どの先読みビットが高温またはＥＭＩのために、論理状態を反転（例えば、論理「０」から論理「１」、またその逆から反転）させたかを判定することによってエラーを検出する。保存されたＥＣＣビットは、ハミング符号、ボーズチョドーリオッケンジェム（Ｂｏｓｅ-Ｃｈａｕｄｈｕｒｉ-Ｈｏｃｑｕｅｎｇｈｅｍ；ＢＣＨ）符号、パリティビット、リードソロモン符号、ターボ符号、低密度パリティ検査符号（ＬＤＰＣ）、畳み込み符号、または当業者に周知の任意の他の誤り訂正符号を含むことができる。
【００４２】
いくつかの実施形態では、メモリコントローラは、保存された先読みビットとパターンを比較することによって保存された先読みビットの中のエラーを検出する。メモリコントローラは、多数のパターンの中の１つ、例えば、交互の論理状態（例えば、０１０１０１０１）のチェッカーボードパターンで先読みビットを抵抗型メモリアレイに書き込む。メモリコントローラは、パターン化された先読みビットを読み出すように更にプログラムされ、それらを所望のパターンと比較する。読み出されたパターンが所望のパターンと一致しないとき、先読みビットでエラーが起きる。
【００４３】
メモリコントローラは、メモリシステムの動作のさまざまな段階で先読みビットエラーの数を判定する。例えば、メモリコントローラは、読み出しサイクルの期間、メモリシステムのパワーアップ、メモリシステムのアイドルモードの期間に応じて、または受信コマンドに応じて、先読みビットエラーの数を判定することができる。アイドルモードの場合では、メモリコントローラは、単一のアイドルモードの期間または所定数のアイドルモードの期間に先読みビットエラーの数を判定することができる。従って、メモリコントローラは、システムの性能への影響が最小である時、エラー検出を実行する。パワーアップの場合では、メモリコントローラは、単一のパワーアップまたは所定数のパワーアップに応じて、先読みビットエラーの数を判定することができる。パワーアップの所定数は、さまざまな基準を用いて決定されることができる。例えば、パワーアップの数は、生産テストの期間にメモリシステムが受ける、パワーサイクルの予測数に基づいて決定されることができる。従って、生産の期間にメモリシステムに予めローディングされたデータ内の任意のシステマティックな欠陥は、生産設備から出荷される前に、自動的に修正される。受信コマンドの場合では、メモリシステムは、メモリシステムと通信可能に結合された処理システムから、システムオペレータまたは試験（ｔｅｓｔ）技術者／エンジニアなどのユーザーから、および／または開発或いは生産試験システムなどの試験システムからコマンドを受信することができる。コマンドはエラー検出および修正を行うコマンド、読み込みコマンド、システムリセットコマンド、パワーオンリセットコマンド（ＰＯＲ）、またはウエイクアップコマンドであることができる。
【００４４】
いくつかの実施形態では、メモリコントローラは、抵抗型不揮発性メモリアレイに保存された先読みビットの中のエラーの数を判定する先読みコントローラ（例えば、図４の先読みコントローラ４１６）を含む。例えば、先読みコントローラは、抵抗型メモリアレイから先読みビットを読み出し、先読みビットの中のエラーの数を判定する。
【００４５】
いくつかの実施形態では、例示的な方法５００は、先読みビットエラーの数を先読みビットエラーのしきい値数と比較するステップを含む（ステップ５３０）。このしきい値数は、例えば、メモリシステムの信頼性要求、安全要求、顧客要求、メモリシステムリソースの可用性、抵抗型メモリアレイのサイズなどを含む、いくつかの要素に基づいて決定されることができる。先読みビットエラーの例示的なしきい値数は、抵抗型不揮発性メモリアレイの先読みセルに保存された先読みビットの５０％である。メモリコントローラが先読みビットエラーの数が先読みビットエラーのしきい値数より小さいと判定したとき（ステップ５３０−ｙｅｓ）、メモリコントローラは、データビットエラーを有するデータの記憶ユニットだけに弱いリフレッシュを実行する（ステップ５４０）。メモリコントローラが先読みビットエラーの数が先読みビットエラーのしきい値数以上であると判定したとき（ステップ５３０−ｎｏ）、メモリコントローラは、抵抗型不揮発性メモリアレイに保存された全ての先読みビットとデータに強いリフレッシュを実行する（ステップ５５０）。
【００４６】
図６は、本発明のいくつかの実施形態および態様と一致する例示的な方法６００のフローチャートを示している。方法６００は、例えば、抵抗型不揮発性メモリのエラーを検出して補正するように実施されることができる。いくつかの実施形態では、方法６００は、例えば、図４に示されたメモリシステム４００のメモリシステムによって実施されることができる。
【００４７】
例示的な方法５００に類似する、例示的な方法６００は、抵抗型不揮発性メモリアレイに保存された先読みビットに対してマージン読み出し動作を実行するステップを含み（ステップ６１０）、且つ抵抗型不揮発性メモリアレイに保存された先読みビットの中のエラーの数を判定する（６２０）。いくつかの実施形態では、例示的な方法６００は、先読みビットエラーの数を先読みビットエラーの第１のしきい値数と比較するステップを含む（ステップ６３０）。メモリコントローラが先読みビットエラーの数が先読みビットエラーの第１のしきい値数より小さいと判定したとき（ステップ６３０−ｎｏ）、メモリコントローラは、リフレッシュ動作を実行しない（６４０）。メモリコントローラが先読みビットエラーの数が先読みビットエラーの第１のしきい値数以上であると判定したとき（ステップ６３０−ｙｅｓ）、メモリコントローラは、先読みビットエラーの数を先読みビットエラーの第２のしきい値数と比較する（ステップ６５０）。先読みビットエラーの第２のしきい値数は、第１のしきい値数より大きい。先読みビットエラーの数が先読みビットエラーの第２のしきい値数より小さいとき（ステップ６５０−ｙｅｓ）、メモリコントローラは、抵抗型不揮発性メモリアレイに保存されたデータの弱いリフレッシュを実行し（ステップ６６０）、先読みビットエラーの数が先読みビットエラーの第２のしきい値数以上であると判定したとき（ステップ６５０−ｎｏ）、メ抵抗型不揮発性メモリアレイに保存された全ての先読みビットとデータに強いリフレッシュを実行する（ステップ６７０）。
【００４８】
先読みビットの上限しきい値と先読みビットの下限しきい値が用いられたとき、メモリシステムは、メモリシステムが第１のしきい値より低い、先読みビットエラーの数に対応するように構成されるため、より少ないリソースを用いる。従って、リフレッシュ動作は、先読みセルが第１のしきい値より高いエラーを含んだ場合にだけ実行される。メモリシステムのオペレータは、例えば、メモリシステムの信頼性要求、安全要求、顧客要求、メモリシステムリソースの可用性、抵抗型メモリアレイのサイズなどを含む、いくつかの要素に基づいて第１のしきい値を決めることができる。
【００４９】
図７は、本発明のいくつかの実施形態および態様と一致する例示的な方法７００のフローチャートを示している。方法７００は、例えば、抵抗型不揮発性メモリアレイに保存された全ての先読みビットとデータの強いリフレッシュを実行する。いくつかの実施形態では、方法７００は、例えば、図４に示されたメモリシステム４００のメモリシステムによって実施されることができる。
【００５０】
いくつかの実施形態では、例示的な方法７００は、ＥＣＣの補正でデータを読み出し、且つ抵抗型不揮発性メモリアレイに保存されたデータの中のデータビットエラーを検出するステップを含む（ステップ７１０）。メモリシステムに含まれたメモリコントローラ（例えば、図４のメモリコントローラ４１０）は、上述の通常の読み出し動作を用いて、抵抗型メモリアレイ（例えば、図２〜図４の抵抗型メモリアレイ２００）の第１の不揮発性メモリアレイのデータセル（例えば、図３のデータセル３１０）に保存されたデータを読み出す。メモリコントローラは、例えば、ページ、ブロック、セクタ、ワード、または当業者に周知の任意の他の記憶ユニットなど、各種の記憶ユニットのデータを読み出す。各記憶ユニットは、任意の数の先読みビットを含むことができる。メモリコントローラは、抵抗型不揮発性メモリアレイのメモリセル（例えば、図３のＥＣＣセル３２０）に保存されたＥＣＣビットを更に読み出し、保存されたＥＣＣビットを用いてデータの記憶ユニットにあるデータビットエラーを検出する。メモリコントローラは、どのデータビットが高温またはＥＭＩのために、論理状態を反転（例えば、論理「０」から論理「１」、またその逆から反転）させたかを判定することによってデータの記憶ユニットにあるデータビットエラーを検出する。保存されたＥＣＣビットは、ハミング符号、ボーズチョドーリオッケンジェム（Ｂｏｓｅ-Ｃｈａｕｄｈｕｒｉ-Ｈｏｃｑｕｅｎｇｈｅｍ；ＢＣＨ）符号、パリティビット、リードソロモン符号、ターボ符号、低密度パリティ検査符号（ＬＤＰＣ）、畳み込み符号、または当業者に周知の任意の他の誤り訂正符号を含むことができる。
【００５１】
メモリコントローラは、メモリシステムの動作のさまざまな段階でデータビットエラーの数を判定する。例えば、メモリコントローラは、読み出しサイクルの期間に、メモリシステムのパワーアップ、メモリシステムのアイドルモードの期間に応じて、または受信コマンドに応じて、データビットエラーの数を判定することができる。アイドルモードの場合では、メモリコントローラは、単一のアイドルモードの期間または所定数のアイドルモードの期間にデータビットエラーの数を判定することができる。従って、メモリコントローラは、システムの性能への影響が最小である時、エラー検出を実行する。パワーアップの場合では、メモリコントローラは、単一のパワーアップまたは所定数のパワーアップに応じて、データビットエラーの数を判定することができる。パワーアップの所定数は、さまざまな基準を用いて決定されることができる。例えば、パワーアップの数は、生産テストの期間にメモリシステムが受ける、パワーサイクルの予測数に基づいて決定されることができる。従って、製造の期間にメモリシステムに予めローディングされたデータ内の任意のエラーは、生産設備から出荷される前に、自動的に修正される。受信コマンドの場合では、メモリシステムは、メモリシステムと通信可能に結合された処理システムから、システムオペレータまたは試験（ｔｅｓｔ）技術者／エンジニアなどのユーザーから、および／または開発或いは生産試験システムなどの試験システムからコマンドを受信することができる。コマンドはエラー検出および修正を行うコマンド、読み込みコマンド、システムリセットコマンド、パワーオンリセットコマンド（ＰＯＲ）、またはウエイクアップコマンドであることができる。
【００５２】
いくつかの実施形態では、メモリコントローラは、抵抗型不揮発性メモリアレイに保存されたデータのデータビットエラーの数を判定するＥＣＣコントローラ（例えば、図４のＥＣＣコントローラ４１５）を含む。例えば、ＥＣＣコントローラは、抵抗型メモリアレイからデータとＥＣＣビットを読み出し、ＥＣＣの符号化方式に基づいてデータビットエラーの数を判定する。
【００５３】
いくつかの実施形態では、例示的な方法７００は、抵抗型不揮発性メモリアレイのデータと先読みビットの強い書き込みを実行し、且つ検証読み出し動作で書き込みデータを検証するステップ（７２０）を含む。メモリコントローラは、データと先読みビットをメモリセルに書き戻すことによって強い書き込み動作を実行し、メモリセルの電流分布が通常の書き込みサイクルより大きくなるようにする。メモリセルの電流分布を増加させるために、メモリコントローラは、そのメモリセルの論理値をプログラムし、このメモリセルから読み出された現在値が通常の書き込みサイクルよりも、更にしきい値から離されるようにする。メモリセル内で電流分布を増加することは、余分な書き込み時間とメモリコントローラによるエネルギー消費を必要とするが、メモリセルマージンを増加することでデータと先読みビットが劣化するのを保護する助けをする。従って、メモリセル内で電流分布を増加させると、メモリセルが論理状態を反転させるのをより難しくするため、フォルトトレランスを改善することができる。
【００５４】
強い書き込み動作を実行するために、メモリコントローラは、抵抗型不揮発性メモリアレイから読み出されたデータビットエラーおよび／または先読みビットエラーを補正するのに必要なＥＣＣビットの数を判定する。抵抗型不揮発性メモリアレイに保存されたＥＣＣビットの数は、ＥＣＣの符号化方式によって決まる。例えば、ＥＣＣの符号化方式は、記憶ユニット当たり（例えば、ページ当たり、ブロック当たり、セクタ当たり、ワード当たりなど）のＥＣＣビットの数を割り当てることができる。各記憶ユニットに割り当てられたＥＣＣビットの数は、フレキシブルであることができ、設計要求、システム能力、タイミング、およびスループット要求などによって決まることができる。メモリコントローラまたはＥＣＣコントローラは、記憶ユニットのデータビットエラーを補正するのに必要な各記憶ユニットに割り当てられるＥＣＣビットの数を判定する。例えば、５つのＥＣＣビットが抵抗型不揮発性メモリアレイに保存されたデータの各アドレスに割り当てられる。従って、実施例では、メモリコントローラまたはＥＣＣコントローラは、５つのＥＣＣビットのいくつがデータの対応するアドレスでデータビットエラーを補正するのに必要であるかを判定する。メモリコントローラまたはＥＣＣコントローラは、先読みビットエラーを補正するのに必要な各先読みビット（または記憶ユニットまたは先読みビット）に割り当てられるＥＣＣビットの数を更に判定する。
【００５５】
メモリコントローラまたはＥＣＣコントローラは、各記憶ユニットのデータビットエラーおよび／または先読みビットエラーを補正するのに必要なＥＣＣビットの数がＥＣＣビットのしきい値数より小さいかどうかを判定する。ＥＣＣビットのしきい値数は、通常、メモリコントローラまたはＥＣＣコントローラによって実施されたＥＣＣの符号化方式のエラー補正容量に基づいて判定される。しかしながら、ＥＣＣビットのしきい値数を判定するとき、他の要因が考えられる可能性もある。
【００５６】
記憶ユニットのデータエラーを補正、または先読みビットエラーを補正するのに必要なＥＣＣビットがないと判定されたとき（即ち、記憶ユニットのデータビットエラーがない、または先読みビットエラーがない）、メモリコントローラは、データの記憶ユニットまたは先読みビットを読み出し、強い書き込み動作を用いて記憶ユニットまたは先読みビットを抵抗型不揮発性メモリアレイに書き戻す（７２０）。強い書き込み動作を用いて、エラーを含まないデータまたは先読みビットを読み出し、それらを抵抗型不揮発性メモリアレイに書き戻すことは、データおよび先読みビットを保存するメモリセル内のマージンを増加する。
【００５７】
メモリコントローラが、記憶ユニットのデータエラーを補正、または先読みビットエラーを補正するのにＥＣＣビットが必要であり、且つ必要なＥＣＣビットの数がＥＣＣビットのしきい値数より小さいと判定したとき、メモリコントローラまたはＥＣＣコントローラは、強い書き込み動作を用いてエラーを補正し、補正したビットを抵抗型不揮発性メモリアレイに書き込む。メモリコントローラまたはＥＣＣコントローラは、データビットまたは先読みビットの数値を反転させることによってエラーを補正する。従って、例えば、データセルまたは先読みセルが「０」の論理値を含み、且つ論理値を判定するメモリコントローラまたはＥＣＣコントローラがＥＣＣビットを用いてこの論理値が正確でないと判定した場合、メモリコントローラまたはＥＣＣコントローラは、論理値を「１」に反転させる。
【００５８】
メモリコントローラは、補正されたビットをセンスアンプと書き込みドライバ（例えば、図４のセンスアンプと書き込みドライバ４１４）に含まれた書き込み回路に送信することによって、補正されたビットを抵抗型不揮発性メモリアレイに書き込む。メモリコントローラは、メモリシステム動作のさまざまな段階で補正されたビットを書き込むことができる。例えば、１つの実施形態では、メモリコントローラは、メモリシステムの後続するパワーアップ（例えば、次のパワーアップ）に応じて、またはメモリシステムの後続するアイドルモードの期間（例えば、次のアイドルモード）に書き込みを実行する。メモリコントローラが後続のパワーアップに応じて補正されたビットを書き込むとき、書き込みは、パワーアップの初期化または初期化のすぐその後、実行される。システム使用が最小になるまで（例えば、パワーアップに応じて、またはアイドルモードの期間）、修正されたビットを書き込むのを待ち、メモリシステムの性能への影響を最小にする。
【００５９】
メモリコントローラが、記憶ユニットのデータエラーを補正、または先読みビットエラーを補正するのにＥＣＣビットが必要であり、且つ必要なＥＣＣビットの数がＥＣＣビットのしきい値数以上であると判定したとき、メモリコントローラまたはＥＣＣコントローラは、記憶ユニットまたは先読みビットを置き換える。データの記憶ユニットまたは先読みビットの置き換えは、データの記憶ユニットまたは先読みビットを抵抗型不揮発性メモリアレイに保存された対応するデータの記憶ユニットまたは先読みビットに置き換えることを含む。トランジスタベースの不揮発性メモリアレイは、例えば、プログラマブル読み取り専用メモリ（ＰＲＯＭ）、フラッシュメモリ、電気的消去可能プログラマブル読み取り専用メモリ（ＥＥＰＲＯＭ）、または電気的プログラム可能フューズ（ｅＦＵＳＥ）メモリを含む。
【００６０】
トランジスタベースの不揮発性メモリアレイに保存されたデータの記憶ユニットまたは先読みビットは、置き換えられた抵抗型不揮発性メモリアレイのデータの記憶ユニットまたは先読みビットのコピー（即ち、バックアップ記憶ユニットまたはバックアップ先読みビット）であることができる。メモリコントローラは、抵抗型メモリアレイに保存されたデータと先読みビットをトランジスタベースの不揮発性メモリアレイに書き込み、データと先読みビットのバックアップ記憶ユニットを確立する。書き込みは、メモリシステム動作のさまざまな段階で生じることができる。例えば、メモリコントローラは、高温熱サイクル（例えば、基板実装ウェーブはんだ付け）の前に、データと先読みビットが抵抗型不揮発性メモリアレイに書き込まれた後に、メモリシステムのアイドルモードの期間に、受信したコマンドに応じて、またはメモリシステムのパワーアップに応じて、データと先読みビットをトランジスタベースの不揮発性メモリアレイに書き込むことができる。
【００６１】
代替プロセスの一部として、メモリコントローラは、トランジスタベースの不揮発性メモリアレイに保存されたバックアップ記憶ユニットまたはバックアップ先読みビットを読み込む。いくつかの実施形態では、メモリコントローラは、抵抗型不揮発性メモリアレイとトランジスタベースの不揮発性メモリアレイの両方を制御する。このような実施例では、メモリコントローラは、トランジスタベースの不揮発性メモリアレイに保存されたデータを直接読み出す。もう１つの実施形態では、トランジスタベースの不揮発性メモリアレイは、個別のメモリコントローラによって制御される。このような実施例では、抵抗型不揮発性メモリアレイに関連付けられたメモリコントローラは、トランジスタベースの不揮発性メモリアレイに関連付けられたメモリコントローラにリクエストを送信する。トランジスタベースの不揮発性メモリアレイに関連付けられたメモリコントローラは、リクエストを受信し、読み出し動作を行い、保存されたデータのバックアップ記憶ユニットまたはバックアップ先読みビットを検索し、且つ検索されたバックアップを抵抗型不揮発性メモリアレイに関連付けられたメモリコントローラに送信する。
【００６２】
メモリコントローラは、強い書き込み動作を用いて、バックアップ記憶ユニットまたはバックアップ先読みビットを抵抗型不揮発性メモリアレイに書き込む。メモリコントローラは、メモリシステムの動作のさまざまな段階でデータの記憶ユニットまたは先読みビットを置き換える。例えば、メモリコントローラは、エラーを補正するのに必要なＥＣＣビットの数がＥＣＣビットのしきい値数以上であると判定した後、すぐにデータの記憶ユニットまたは先読みビットを置き換えることができる。もう１つの例では、メモリコントローラは、メモリシステムの後続するパワーアップ（例えば、次のパワーアップ）に応じて、またはメモリシステムの後続するアイドルモードの期間（例えば、次のアイドルモード）にデータの記憶ユニットまたは先読みビットを置き換えることができる。
【００６３】
一旦、強い書き込み動作がデータビットまたは先読みビットに実行されると、メモリコントローラは、図４を参照して上述されたマージン読み出し動作を実行することによって、強い書き込み動作がうまく実行されたかどうかを検証する。マージン読み出し動作は、書き込まれたデータまたは先読みビットの電流分布を上限および／または下限しきい値電流値と比較し、書き込まれたデータまたは先読みビットの電流分布が増加されているかを検証する。一旦、メモリコントローラが強い書き込み動作がうまく実行されていると検証すると、メモリコントローラは、全てのデータセルと先読みセルがリフレッシュされているかどうかを判定する（７３０）。メモリコントローラが全てのデータセルと先読みセルがリフレッシュされていると判定した場合（７３０−Ｙｅｓ）、強いリフレッシュ動作が完了する（７４０）。メモリコントローラがいくつかのデータセルまたは先読みセルがまだリフレッシュされる必要があると判定した場合（７３０−Ｎｏ）、メモリコントローラは、次のデータ／先読みセルに移動し、且つ強いリフレッシュ動作を継続する（７５０）。
【００６４】
図８は、本開示のいくつかの実施形態および態様と一致する例示的な方法８００のフローチャートを示している。方法８００は、例えば、抵抗型不揮発性メモリアレイに保存されたデータの弱いリフレッシュを実行する。弱いリフレッシュは、データビットエラーを有するデータの強いユニットだけをリフレッシュするのを含む。いくつかの実施形態では、方法８００は、例えば、図４に示されたメモリシステム４００のメモリシステムによって実施されることができる。
【００６５】
いくつかの実施形態では、方法８００は、ＥＣＣの補正でデータを読み出し、抵抗型不揮発性メモリアレイに保存されたデータの中のデータビットエラーを検出するステップを含む（ステップ８１０）。メモリシステムに含まれたメモリコントローラ（例えば、図４のメモリコントローラ４１０）は、抵抗型メモリアレイ（例えば、図２〜図４の抵抗型メモリアレイ２００）の第１の不揮発性メモリアレイのデータセル（例えば、図３のデータセル３１０）に保存されたデータを読み出す。メモリコントローラは、例えば、ページ、ブロック、セクタ、ワード、または当業者に周知の任意の他の記憶ユニットなど、各種の記憶ユニットのデータを読み出す。各記憶ユニットは、任意の数の先読みビットを含むことができる。メモリコントローラは、抵抗型不揮発性メモリアレイのメモリセル（例えば、図３のＥＣＣセル３２０）に保存されたＥＣＣビットを更に読み出し、保存されたＥＣＣビットを用いて保存されたデータのデータビットエラーを検出する。メモリコントローラは、どのデータビットが高温またはＥＭＩのために、論理状態を反転（例えば、論理「０」から論理「１」、またその逆から反転）させたかを判定することによってデータの記憶ユニットのデータビットエラーを検出する。保存されたＥＣＣビットは、ハミング符号、ボーズチョドーリオッケンジェム（Ｂｏｓｅ-Ｃｈａｕｄｈｕｒｉ-Ｈｏｃｑｕｅｎｇｈｅｍ；ＢＣＨ）符号、パリティビット、リードソロモン符号、ターボ符号、低密度パリティ検査符号（ＬＤＰＣ）、畳み込み符号、または当業者に周知の任意の他の誤り訂正符号を含むことができる。
【００６６】
メモリコントローラは、メモリシステムの動作のさまざまな段階でデータビットエラーを検出する。例えば、メモリコントローラは、読み出しサイクルの期間に、メモリシステムのパワーアップ、メモリシステムのアイドルモードの期間に応じて、または受信コマンドに応じて、データビットエラーを検出することができる。アイドルモードの場合では、メモリコントローラは、単一のアイドルモードの期間または所定数のアイドルモードの期間にデータビットエラーを検出することができる。従って、メモリコントローラは、システムの性能への影響が最小である時、エラー検出を実行する。パワーアップの場合では、メモリコントローラは、単一のパワーアップまたは所定数のパワーアップに応じて、データビットエラーを検出することができる。パワーアップの所定数は、さまざまな基準を用いて決定されることができる。例えば、パワーアップの数は、生産テストの期間にメモリシステムが受ける、パワーサイクルの予測数に基づいて決定されることができる。従って、製造の期間にメモリシステムに予めローディングされたデータ内の任意のエラーは、生産設備から出荷される前に、自動的に修正される。受信コマンドの場合では、メモリシステムは、メモリシステムと通信可能に結合された処理システムから、システムオペレータまたは試験（ｔｅｓｔ）技術者／エンジニアなどのユーザーから、および／または開発或いは生産試験システムなどの試験システムからコマンドを受信することができる。コマンドはエラー検出および修正を行うコマンド、読み込みコマンド、システムリセットコマンド、パワーオンリセットコマンド（ＰＯＲ）、またはウエイクアップコマンドであることができる。
【００６７】
いくつかの実施形態では、メモリコントローラは、抵抗型不揮発性メモリアレイに保存されたデータのデータビットエラーを検出するＥＣＣコントローラ（例えば、図４のＥＣＣコントローラ４１５）を含む。例えば、ＥＣＣコントローラは、抵抗型メモリアレイからデータとＥＣＣビットを読み出し、ＥＣＣの符号化方式に基づいてデータビットエラーを検出する。
【００６８】
いくつかの実施形態では、方法８００は、データビットエラーを補正するのに必要なＥＣＣビットの数を判定するステップを含む（ステップ８２０）。抵抗型不揮発性メモリアレイに保存されたＥＣＣビットの数は、ＥＣＣの符号化方式によって決まる。例えば、ＥＣＣの符号化方式は、記憶ユニット当たり（例えば、ページ当たり、ブロック当たり、セクタ当たり、ワード当たりなど）のＥＣＣビットの数を割り当てることができる。各記憶ユニットに割り当てられたＥＣＣビットの数は、フレキシブルであることができ、設計要求、システム能力、タイミング、およびスループット要求などによって決まることができる。メモリコントローラまたはＥＣＣコントローラは、記憶ユニットのデータビットエラーを補正するのに必要な各記憶ユニットに割り当てられるＥＣＣビットの数を判定する。例えば、５つのＥＣＣビットが抵抗型不揮発性メモリアレイに保存されたデータの各アドレスに割り当てられる。従って、実施例では、メモリコントローラまたはＥＣＣコントローラは、５つのＥＣＣビットのいくつがデータの対応するアドレスでデータビットエラーを補正するのに必要であるかを判定する。
【００６９】
メモリコントローラまたはＥＣＣコントローラは、各記憶ユニットのデータビットエラーを補正するのに必要なＥＣＣビットの数がＥＣＣビットのしきい値数より小さいかどうかを判定する（ステップ８３０）。弱いリフレッシュ動作では、ＥＣＣビットのしきい値数は、メモリコントローラまたはＥＣＣコントローラによって実施されたＥＣＣの符号化方式の最大のＥＣＣビットエラー補正容量より小さくなるように選択される。保存された先読みビットが重大なエラーを含まないと判断されているため（５３０−ｙｅｓ）、弱いリフレッシュ動作を実行するのに用いられるメモリシステムリソースは、抵抗型不揮発性メモリアレイの全てのデータに代替して、重要なエラー、または破損を有するデータだけを書き込むことによって最小化することができる。
【００７０】
メモリコントローラが、記憶ユニットのデータエラーを補正するのに必要なＥＣＣビットの数がしきい値数より小さいと判定したとき（ステップ８３０−ｙｅｓ）、メモリコントローラおよび／またはＥＣＣコントローラは、データの弱いリフレッシュを実行せず、次のデータセルの実行を継続する（８４０）。
【００７１】
メモリコントローラが、記憶ユニットのデータエラーを補正するのに必要なＥＣＣビットの数がしきい値数以上であると判定し（ステップ８３０−Ｎｏ）、必要なＥＣＣビットの数がエラー補正に使用可能な最大ＥＣＣビットより小さいと判定したとき、メモリコントローラまたはＥＣＣコントローラは、エラーを補正することによって弱いリフレッシュ書き込みを実行し、補正したビットを抵抗型不揮発性メモリアレイに書き込む（ステップ８５０）。メモリコントローラまたはＥＣＣコントローラは、データビットエラーの数値を反転させることによってエラーを補正する。従って、例えば、データセルが「０」の論理値を含み、且つ論理値を判定するメモリコントローラまたはＥＣＣコントローラがＥＣＣビットを用いてこの論理値が正確でないと判定した場合、メモリコントローラまたはＥＣＣコントローラは、論理値を「１」に反転させる。
【００７２】
メモリコントローラは、図４を参照して上述された通常の読み出し動作を用いて、補正されたデータビットを抵抗型不揮発性メモリアレイに書き込む。メモリコントローラは、補正されたビットをセンスアンプと書き込みドライバ（例えば、図４のセンスアンプと書き込みドライバ４１４）に含まれた書き込み回路に送信することによって、補正されたビットを抵抗型不揮発性メモリアレイに書き込む。メモリコントローラは、メモリシステム動作のさまざまな段階で補正されたビットを書き込むことができる。例えば、１つの実施形態では、メモリコントローラは、メモリシステムの後続するパワーアップ（例えば、次のパワーアップ）に応じて、またはメモリシステムの後続するアイドルモードの期間（例えば、次のアイドルモード）に書き込みを実行する。メモリコントローラが後続のパワーアップに応じて補正されたビットを書き込むとき、書き込みは、パワーアップの初期化または初期化のすぐその後、実行される。システム使用が最小になるまで（例えば、パワーアップに応じて、またはアイドルモードの期間）、修正されたビットを書き込むのを待ち、メモリシステムの性能への影響を最小にする。もう１つの実施形態では、メモリコントローラは、データビットエラーを補正した後、すぐに書き込みを実行する。抵抗型不揮発性メモリセルの書き込み時間は、一般的にトランジスタベースの不揮発性メモリセル（例えば、フラッシュメモリセル）の書き込み時間よりはるかに短い。データビットエラーを有するデータの記憶ユニットだけが弱いリフレッシュの期間に書き込まれるため、弱いリフレッシュは、通常のメモリシステムの期間、メモリシステムに悪影響を与えることなく、実行されることができる。
【００７３】
メモリコントローラが、記憶ユニットのデータエラーを補正するのに必要なＥＣＣビットの数がしきい値数以上であると判定し（８３０−Ｎｏ）、且つ必要なＥＣＣビットの数がエラー補正に使用可能な最大ＥＣＣビット以上であると判定したとき、メモリコントローラまたはＥＣＣコントローラは、記憶ユニットを置き換えることによって、弱いリフレッシュ書き込みを実行する（８５０）。データの記憶ユニットの置き換えは、上述のデータの記憶ユニットをトランジスタベースの不揮発性メモリアレイに保存された対応するデータの記憶ユニットと置き換えることを含む。トランジスタベースの不揮発性メモリアレイは、例えば、プログラマブル読み取り専用メモリ（ＰＲＯＭ）、フラッシュメモリ、電気的消去可能プログラマブル読み取り専用メモリ（ＥＥＰＲＯＭ）、または電気的プログラム可能フューズ（ｅＦＵＳＥ）メモリを含む。
【００７４】
トランジスタベースの不揮発性メモリアレイに保存されたデータの記憶ユニットは、置き換えられた抵抗型不揮発性メモリアレイのデータの記憶ユニットまたは先読みビットのコピー（即ち、バックアップ記憶ユニット）であることができる。メモリコントローラは、抵抗型メモリアレイに保存されたデータをトランジスタベースの不揮発性メモリアレイに書き込み、データのバックアップ記憶ユニットを確立する。書き込みは、メモリシステム動作のさまざまな段階で生じることができる。例えば、メモリコントローラは、高温熱サイクル（例えば、基板実装ウェーブはんだ付け）の前に、データが抵抗型不揮発性メモリアレイに書き込まれた後に、メモリシステムのアイドルモードの期間に、受信したコマンドに応じて、またはメモリシステムのパワーアップに応じて、データをトランジスタベースの不揮発性メモリアレイに書き込むことができる。
【００７５】
代替プロセスの一部として、メモリコントローラは、トランジスタベースの不揮発性メモリアレイに保存されたバックアップ記憶ユニットを読み込む。いくつかの実施形態では、メモリコントローラは、抵抗型不揮発性メモリアレイとトランジスタベースの不揮発性メモリアレイの両方を制御する。このような実施例では、メモリコントローラは、トランジスタベースの不揮発性メモリアレイに保存されたデータを直接読み出す。もう１つの実施形態では、トランジスタベースの不揮発性メモリアレイは、個別のメモリコントローラによって制御される。このような実施例では、抵抗型不揮発性メモリアレイに関連付けられたメモリコントローラは、トランジスタベースの不揮発性メモリアレイに関連付けられたメモリコントローラにリクエストを送信する。トランジスタベースの不揮発性メモリアレイに関連付けられたメモリコントローラは、リクエストを受信し、読み出し動作を行い、保存されたデータのバックアップ記憶ユニットまたはバックアップ先読みビットを検索し、且つ検索されたバックアップを抵抗型不揮発性メモリアレイに関連付けられたメモリコントローラに送信する。
【００７６】
メモリコントローラは、図４を参照して上述された通常の書き込み動作を用いて、バックアップ記憶ユニットを抵抗型不揮発性メモリアレイに書き込む。メモリコントローラは、メモリシステムの動作のさまざまな段階でデータの記憶ユニットを置き換える。例えば、メモリコントローラは、エラーを補正するのに必要なＥＣＣビットの数がＥＣＣビットのしきい値数以上であり、必要とされるＥＣＣビットの数がエラー訂正に利用可能な最大ＥＣＣビット以上と判定した後、すぐにデータの記憶ユニットを置き換えることができる。もう１つの例では、メモリコントローラは、メモリシステムの後続するパワーアップ（例えば、次のパワーアップ）に応じて、またはメモリシステムの後続するアイドルモードの期間（例えば、次のアイドルモード）にデータの記憶ユニットを置き換えることができる。
【００７７】
一旦、弱いリフレッシュ動作がデータビットまたは先読みビットに実行されると、メモリコントローラは、図４を参照して上述されたマージン読み出し動作を実行することによって、弱いリフレッシュ動作がうまく実行されたかどうかを検証する。弱いリフレッシュ動作のマージン読み出しは、強い書き込み動作のマージン読み出し動作よりも通常のしきい値電流値に近い上限および下限しきい値電流値を用いる。一旦、弱いリフレッシュ動作がデータセルに対して完了すると（ステップ８５０）、メモリコントローラおよび／またはＥＣＣコントローラは、次のデータセルに移動し、且つ弱いリフレッシュ動作が継続される。
【００７８】
図９は、通常の読み出し動作と本開示の実施形態と整合するマージン読み出し動作との間の比較を示している。図９に示されるように、通常のしきい値電流９１０は、メモリセルの電流分布を上限領域および下限領域の２つの領域に分割する。上限領域および下限領域は、異なる論理値（例えば、論理「０」と論理「１」）に対応する。通常の書き込み動作では、メモリコントローラ（例えば、図４のメモリコントローラ４１０）は、セルの電流分布が通常のしきい値電流のどちらか１つ側に降下するように、メモリセルをプログラムする。通常の読み出し動作では、メモリコントローラは、メモリセルを通過する電流を測定し、且つそれを通常のしきい値電流９１０と比較し、メモリセルの論理値を判定する。
【００７９】
弱いリフレッシュ動作では、メモリコントローラは、より低い弱いしきい値電流９２０ａとより高い弱いしきい値電流９２０ｂをそれぞれ上限領域と下限領域の境界として用いる。図９に示されるように、より低い弱いしきい値電流９２０ａとより高い弱いしきい値電流９２０ｂは、通常のしきい値電流９１０のどちらか１つ側に分布され、各弱いしきい値電流９２０ａおよび９２０ｂと通常のしきい値電流９１０との間にマージンがあるようになる。弱いリフレッシュ動作では、メモリコントローラは、セルの電流分布がより低い弱いしきい値電流９２０ａまたはより高い弱いしきい値電流９２０ｂより小さくなるように、メモリセルをプログラムする。
【００８０】
弱い検証読み出し動作（例えば、マージン読み出し）では、メモリコントローラは、メモリセルを通過する電流を測定し、且つそれをより低い弱いしきい値電流９２０ａとより高い弱いしきい値電流９２０ｂと比較し、メモリセルの論理値を判定する。
【００８１】
強いリフレッシュ動作では、メモリコントローラは、より低い強いしきい値電流９３０ａとより高い強いしきい値電流９３０ｂをそれぞれ上限領域と下限領域の境界として用いる。図９に示されるように、より低い強いしきい値電流９３０ａとより高い強いしきい値電流９３０ｂは、通常のしきい値電流９１０のどちらか１つ側に分布され、２つの強いしきい値電流９３０ａおよび９３０ｂと通常のしきい値電流９１０との間にマージンがあるようになる。また、より低い強いしきい値電流９３０ａとより高い強いしきい値電流９３０ｂは、それぞれより低い弱いしきい値電流９２０ａとより高い弱いしきい値電流９２０ｂよりも、通常のしきい値電流９１０から更に離れて分布される。強いリフレッシュ動作では、メモリコントローラは、セルの電流分布がより強いしきい値電流９３０ａまたはより高い強いしきい値電流９３０ｂより小さくなるように、メモリセルをプログラムする。従って、強いリフレッシュ書き込み動作は、弱いリフレッシュ書き込み動作よりもより多くのメモリセルマージンを提供する。
【００８２】
強い検証読み出し動作（例えば、マージン読み出し）では、メモリコントローラは、メモリセルを通過する電流を測定し、且つそれをより低い強いしきい値電流９３０ａとより高い強いしきい値電流９３０ｂと比較し、メモリセルの論理値を判定する。
【００８３】
強いしきい値電流９３０ａと９３０ｂは、メモリセルの電流分布でのシフトを検出するのに用いられることができる。例えば、より低い強いしきい値電流９３０ａとより高い強いしきい値電流９３０ｂを用いたマージン読み込み動作は、メモリセルの電流分布が通常のしきい値電流９１０により近いようにシフトされるため、メモリセルに保存されたデータの品質が劣化するのを検出することができる。例えば、先読みビットエラーを大量のデータのインジケータとして用いたとき、先読みビットの品質の劣化が、対応するデータの品質も劣化するためにリフレッシュされなければならないことを示すため、データ品質の劣化の早期検出は、有用性がある。
【００８４】
図９は、例示的な分布曲線９４０ａと９４０ｂを更に示しており、メモリセルに保存されたビット数とセルの電流分布の比較を示している。分布曲線９４０ａと９４０ｂは、例示的なものであるに過ぎず、他の分布曲線も可能であることは当業者には明らかであろう。
【００８５】
前述した明細書において、種々の例示的な実施の形態および観点が添付した図面に関連づけて記述されている。しかしながら、それらに対して種々の修正および変更が行われる得ることが明瞭であり、および、下記の請求項に記載の本発明の広い範囲を逸脱することなく、付加的な実施の形態および観点が実施し得ることが明瞭である。明細書および図面はしたがって、限定的な間隔ではなく例示的な記述として扱われるべきである。
【００８６】
請求項における要素は、請求項に用いられている言語に基づいて広く解釈されるべきであり、本明細書に記述された実施の形態または本願の審査手続きにおいてに限定されず、実施の形態は非排他的として解釈されるべきである。さらに、当業者は、上述した記述から、開示した本願発明の方法の動作が、順序を代えた動作及び／又は動作の挿入または削除を含む任意の方法で、修正可能なことを理解している。したがって、明細書の記述および実施の形態が単なる例示として考慮されるべきであり、下記の請求項によって示された真の範囲および技術的思想、および、それらの全範囲の均等て範囲を有することが意図されている。
【符号の説明】
【００８７】
１００  トランジスタベースの不揮発性メモリ
１１０  トランジスタベースの不揮発性メモリセル
２００  抵抗型不揮発性メモリアレイ
２１０  バックアップデータセル
２１２  選択素子
２１４  抵抗記憶素子
２２０  インジケータセル
３１０  データセル
３２０  誤り訂正符号（ＥＣＣ）セル
３３０  先読みセル
４００  メモリシステム
４１０  メモリコントローラ
４１１  入力／出力インターフェース
４１２  行デコーダ
４１３  列デコーダ
４１４  センスアンプと書き込みドライバ
４１５  誤り訂正符号（ＥＣＣ）コントローラ
４１６  先読みコントローラ
５００、６００、７００、８００  方法
５１０〜５５０  方法のステップ
６１０〜６７０  方法のステップ
７１０〜７５０  方法のステップ
８１０〜５５０  方法のステップ
９１０  しきい値電流
９２０ａ、９２０ｂ  弱いしきい値電流
９３０ａ、９３０ｂ  強いしきい値電流
９４０ａと９４０ｂ  分布曲線
ＢＬ０〜ＢＬｍ  ビット線
ＷＬ０〜ＷＬｎ  ワード線
【図１】
2016225007.tif 000003
【図２】
2016225007.tif 000004
【図３】
2016225007.tif 000005
【図４】
2016225007.tif 000006
【図５】
2016225007.tif 000007
【図６】
2016225007.tif 000008
【図７】
2016225007.tif 000009
【図８】
2016225007.tif 000010
【図９】
2016225007.tif 000011