(57)【特許請求の範囲】
【請求項１】
メモリ管理システムであって、
読取りコマンドを受け取り、前記読取りコマンドに基づいてメモリ・デバイスを制御するように構成されるコントローラであって、
前記メモリ・デバイスが、生データおよび誤り訂正コーディング（ＥＣＣ）ビットを記憶して、前記読取りコマンドに指定されるメモリ・アドレスに対応する前記生データおよび前記ＥＣＣビットを出力するように構成される、前記コントローラと、
前記メモリ・デバイスにより出力される前記メモリ・アドレスに対応する前記生データおよび前記ＥＣＣビットに基づいて、前記メモリ・アドレスに関連する誤りベクトルを出力するように構成されるＥＣＣデコーダであって、前記メモリ・アドレスに関連する前記誤りベクトルが、前記メモリ・アドレスに対応する前記生データ中の誤りを示す、前記ＥＣＣデコーダと、
前記読取りコマンド中に示される選択に基づいて前記誤りベクトルを出力するように構成されるマルチプレクサ（ＭＵＸ）と
を備える、システム。
【請求項２】
前記メモリ・デバイスにより出力される前記メモリ・アドレスに対応する前記生データおよび前記ＥＣＣビット上で動作し、前記メモリ・アドレスに関連する訂正データを出力するように構成される構成要素をさらに備え、前記メモリ・アドレスに関連する前記訂正データが、前記メモリ・アドレスに対応する前記生データ中の訂正可能な誤りに対する訂正を含む、請求項１に記載のシステム。
【請求項３】
前記構成要素が排他的ＯＲデジタル論理ゲートである、請求項２に記載のシステム。
【請求項４】
前記読取りコマンドに示される前記選択に基づいて、前記ＭＵＸが、前記メモリ・アドレスに関連する前記誤りベクトルに加えて、前記メモリ・アドレスに関連する前記訂正データを出力する、請求項２に記載のシステム。
【請求項５】
前記読取りコマンドに示される前記選択に基づいて、前記ＭＵＸが、前記メモリ・アドレスに関連する前記誤りベクトルの圧縮されたバージョンに加えて、前記メモリ・アドレスに関連する前記訂正データを出力する、請求項２に記載のシステム。
【請求項６】
前記読取りコマンドに示される前記選択に基づいて、前記ＭＵＸが、前記メモリ・アドレスに関連する前記誤りベクトルの代わりに、前記メモリ・アドレスに関連する前記訂正データを出力する、請求項２に記載のシステム。
【請求項７】
前記メモリ・アドレスに対応する前記生データが訂正不可能な誤りを含むとき、前記メモリ・アドレスに関連する前記誤りベクトルが、所定の訂正不可能なデータのパターンを示す、請求項１に記載のシステム。
【請求項８】
前記読取りコマンドに示される前記選択に基づいて、前記ＭＵＸが、前記メモリ・アドレスに関連する前記誤りベクトルの代わりに、前記メモリ・アドレスに対応する前記生データを出力する、請求項１に記載のシステム。
【請求項９】
前記読取りコマンドに示される前記選択に基づいて、前記ＭＵＸが、前記メモリ・アドレスに関連する前記誤りベクトルに加えて、前記メモリ・アドレスに対応する前記生データを出力する、請求項１に記載のシステム。
【請求項１０】
前記読取りコマンドに指定された前記メモリ・アドレスとは異なるメモリ・アドレスであるが、前記メモリ・アドレスに対応する前記ＥＣＣビットに関連する前記生データ中に誤りがあるとき、前記メモリ・アドレスに関連する前記誤りベクトルが、所定のアクセスされないデータのパターンを示す、請求項１に記載のシステム。
【請求項１１】
前記コントローラが、前記メモリ・デバイス上でスクラビング・プロセスを実施するために使用される複数の読取りコマンドを受け取り、持続的な誤りと訂正可能な誤りとを識別する、請求項１に記載のシステム。
【請求項１２】
前記メモリ・デバイスが、ダイナミック・ランダム・アクセス・メモリ（ＤＲＡＭ）デバイスである、請求項１に記載のシステム。
【請求項１３】
生データおよび誤り訂正コーディング（ＥＣＣ）ビットを記憶するメモリ・デバイスから生じる出力データを管理する方法であって、
読取りコマンドを受け取るステップであって、前記読取りコマンドが前記メモリ・デバイス内の１つまたは複数のメモリ・アドレスの仕様を含む、前記ステップと、
前記メモリ・デバイスから、前記１つまたは複数のメモリ・アドレスに対応する前記生データおよび前記１つまたは複数のメモリ・アドレスに対応する前記ＥＣＣビットを出力するステップと、
前記１つまたは複数のメモリ・アドレスに対応する前記生データおよび前記ＥＣＣビットを復号して、前記１つまたは複数のメモリ・アドレスに関連する誤りベクトルを出力するステップであって、前記１つまたは複数のメモリ・アドレスに関連する前記誤りベクトルが、前記１つまたは複数のメモリ・アドレスに対応する前記生データ中の誤りを示す、前記ステップと、
前記読取りコマンド中に示される選択に基づいて、前記出力データとして前記１つまたは複数のメモリ・アドレスに関連する前記誤りベクトルを出力するステップと
を含む、方法。
【請求項１４】
前記１つまたは複数のメモリ・アドレスに対応する前記生データおよび前記ＥＣＣビットに対して演算して、前記１つまたは複数のメモリ・アドレスに関連する訂正データを出力するステップであって、前記１つまたは複数のメモリ・アドレスに関連する前記訂正データが、前記１つまたは複数のメモリ・アドレスに対応する前記生データ中の訂正可能な誤りに対する訂正を含む、前記ステップをさらに含む、請求項１３に記載の方法。
【請求項１５】
前記読取りコマンドに示される前記選択に基づいて、前記出力データとして、前記１つまたは複数のメモリ・アドレスに関連する前記誤りベクトルに加えてまたはその代わりに、前記１つまたは複数のメモリ・アドレスに関連する前記訂正データまたは前記１つまたは複数のメモリ・アドレスに対応する前記生データを出力するステップをさらに含む、請求項１４に記載の方法。
【請求項１６】
前記読取りコマンドに示される前記選択に基づいて、前記出力データとして、前記１つまたは複数のメモリ・アドレスに関連する前記誤りベクトルの圧縮されたバージョンに加えて、前記１つまたは複数のメモリ・アドレスに関連する前記訂正データまたは前記１つまたは複数のメモリ・アドレスに対応する前記生データを出力するステップをさらに含む、請求項１４に記載の方法。
【請求項１７】
前記１つまたは複数のメモリ・アドレスに関連する前記誤りベクトルを出力する前記ステップが、前記１つまたは複数のメモリ・アドレスに対応する前記生データ中の訂正不可能な誤りを示す所定の訂正不可能な誤りのパターンを出力するステップ、または前記読取りコマンドに指定された前記１つまたは複数のメモリ・アドレスとは異なるメモリ・アドレスであるが、前記１つまたは複数のメモリ・アドレスに対応する前記ＥＣＣビットに関連する前記生データ中の誤りを示す所定のアクセスされないデータのパターンを出力するステップを含む、請求項１３に記載の方法。
【請求項１８】
コントローラが、前記メモリ・デバイスから標準的な読出しを実施するため前記読取りコマンドを送信するステップ、または持続的な誤りと訂正可能な誤りとを識別するため前記メモリ・デバイス上でスクラビング・プロセスを実施するために複数の前記読取りコマンドを送信するステップをさらに含む、請求項１３に記載の方法。
【請求項１９】
生データおよび誤り訂正コーディング（ＥＣＣ）ビットを記憶するメモリ・デバイスから生じる出力データを管理するためのコンピュータ・プログラムであって、
読取りコマンドを受け取るステップであって、前記読取りコマンドが前記メモリ・デバイス内の１つまたは複数のメモリ・アドレスの仕様を含む、前記ステップと、
前記メモリ・デバイスから、前記１つまたは複数のメモリ・アドレスに対応する前記生データおよび前記１つまたは複数のメモリ・アドレスに対応する前記ＥＣＣビットを出力するステップと、
前記１つまたは複数のメモリ・アドレスに対応する前記生データおよび前記ＥＣＣビットを復号して、前記１つまたは複数のメモリ・アドレスに関連する誤りベクトルを出力するステップであって、前記１つまたは複数のメモリ・アドレスに関連する前記誤りベクトルが、前記１つまたは複数のメモリ・アドレスに対応する前記生データ中の誤りを示す、前記ステップと、
前記読取りコマンド中に示される選択に基づいて、前記出力データとして前記１つまたは複数のメモリ・アドレスに関連する前記誤りベクトルを出力するステップと
を含む方法をプロセッサに実行させる、コンピュータ・プログラム。
【請求項２０】
前記１つまたは複数のメモリ・アドレスに対応する前記生データおよび前記ＥＣＣビットに対して演算して、前記１つまたは複数のメモリ・アドレスに関連する訂正データを出力するステップであって、前記１つまたは複数のメモリ・アドレスに関連する前記訂正データが、前記１つまたは複数のメモリ・アドレスに対応する前記生データ中の訂正可能な誤りに対する訂正を含む、前記ステップをさらに含む、請求項１９に記載のコンピュータ・プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はメモリ管理に関し、より詳細には、メモリ・デバイスからの誤りベクトル読出しに関する。
【背景技術】
【０００２】
ダイナミック・ランダム・アクセス・メモリ（ＤＲＡＭ）などのメモリ・デバイスは、典型的には、誤り訂正機能を含む。誤り訂正コーディング（ＥＣＣ）ビットは、エンコーダを介して、ＤＲＡＭに記憶されるデータ上に符号化される。データがＤＲＡＭから読み出されると、デコーダを使用して、ＥＣＣビットに基づき、正しいデータを取得する。デコーダは、訂正データを取得するために、（ＸＯＲ演算で）生データと組み合わされる誤りベクトルを生成する。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
本発明は、メモリ管理システム、方法、およびコンピュータ・プログラムを提供する。
【課題を解決するための手段】
【０００４】
実施形態によれば、メモリ管理システムは、読取りコマンドを受け取り、読取りコマンドに基づいてメモリ・デバイスを制御するように構成されるコントローラであって、メモリ・デバイスが、生データおよび誤り訂正コーディング（ＥＣＣ）ビットを記憶して、読取りコマンドに指定されるメモリ・アドレスに対応する生データおよびＥＣＣビットを出力するように構成される、コントローラと、メモリ・デバイスにより出力されるメモリ・アドレスに対応する生データおよびＥＣＣビットに基づいて、メモリ・アドレスに関連する誤りベクトルを出力するように構成されるＥＣＣデコーダであって、メモリ・アドレスに関連する誤りベクトルが、メモリ・アドレスに対応する生データ中の誤りを示す、ＥＣＣデコーダと、読取りコマンド中に示される選択に基づいて誤りベクトルを出力するように構成されるマルチプレクサ（ＭＵＸ）と、を含む。
【０００５】
別の実施形態によれば、生データおよび誤り訂正コーディング（ＥＣＣ）ビットを記憶するメモリ・デバイスから生じる出力データを管理する方法は、読取りコマンドを受け取るステップであって、読取りコマンドがメモリ・デバイス内の１つまたは複数のメモリ・アドレスの指定を含む、ステップと、メモリ・デバイスから、１つまたは複数のメモリ・アドレスに対応する生データおよび１つまたは複数のメモリ・アドレスに対応するＥＣＣビットを出力するステップと、１つまたは複数のメモリ・アドレスに対応する生データおよびＥＣＣビットを復号して、１つまたは複数のメモリ・アドレスに関連する誤りベクトルを出力するステップであって、１つまたは複数のメモリ・アドレスに関連する誤りベクトルが、１つまたは複数のメモリ・アドレスに対応する生データ中の誤りを示す、ステップと、読取りコマンド中に示される選択に基づいて、出力データとして１つまたは複数のメモリ・アドレスに関連する誤りベクトルを出力するステップと、を含む。
【０００６】
本発明の技法を通して、さらなる特徴および利点が実現される。本発明の他の実施形態および態様は、本明細書に詳細に記載され、特許請求される発明の一部と考えられる。利点および特徴とともに本発明をよりよく理解するために、記載および図面を参照されたい。
【０００７】
本発明と考えられる主題は、本明細書の結びにおける特許請求の範囲で、具体的に指摘され明確に特許請求される。本発明の上記および他の特徴ならびに利点は、添付の図面に関連して得られる、以下の詳細な説明から明らかである。
【図面の簡単な説明】
【０００８】
【図１】本発明の実施形態に従うメモリ管理システムのブロック図である。
【図２】実施形態に従う２つの異なるコマンドから生じる出力データを示す図である。
【図３】別の実施形態に従う２つの異なるコマンドから生じる出力データを示す図である。
【図４】さらに別の実施形態に従う２つの異なるコマンドから生じる出力データを示す図である。
【図５】実施形態に従う例示的な誤りベクトルについての、例示的な圧縮アルゴリズムを示す図である。
【図６】実施形態に従う訂正可能な誤りの場合の、例示的なデータおよび誤りベクトル・ビットを示す図である。
【図７】実施形態に従う訂正不可能な誤りの場合の、例示的なデータおよび誤りベクトル・ビットを示す図である。
【図８】別の実施形態に従う訂正不可能な誤りの場合の、例示的なデータおよび誤りベクトル・ビットを示す図である。
【図９】実施形態に従う様々なシナリオについて誤りベクトルを示す図である。
【図１０】別の実施形態に従う様々なシナリオについて誤りベクトルを示す図である。
【図１１】実施形態に従うメモリ管理システムのコマンド・デコーダの例示的な実装の図である。
【図１２】実施形態に従って取得された誤りベクトルを使用する方法のプロセス・フローの図である。
【図１３】実施形態に従って取得された誤りベクトルを使用する別の方法のプロセス・フローの図である。
【図１４】実施形態に従って取得された誤りベクトルを使用するさらに別の方法のプロセス・フローの図である。
【発明を実施するための形態】
【０００９】
上記のように、メモリ・デバイス（例えば、ＤＲＡＭ）中に記憶されるデータ上で符号化されるＥＣＣビットを使用して、メモリ・デバイスからの読出しの際に正しいデータを取得する。メモリ・デバイス中に記憶された生データ中の任意の誤りは、生データと、やはり記憶される復号されるＥＣＣビットとを組み合わせることにより訂正される。具体的には、ＥＣＣビットの復号によって、生データと（例えば、ＸＯＲで）組み合わされる誤りベクトルを生成して、訂正データを提供する。誤りベクトルで取得される訂正データが提供されるが、誤りベクトル自体は、現在のところ利用可能ではない。しかし、誤りベクトルを使用して、メモリ管理を改善することを容易にする情報を取得することができる。例えば、アドレス情報を含む誤りベクトルは、誤り（例えば、誤りの頻度、特定のメモリ位置における集中）の監視を容易にする誤りのアドレス位置、および訂正データを取得するために必要だった訂正の範囲を示す。これらの例は、誤りベクトルから取得できる情報を網羅したものではない。以前は、フラグ・ピン・インジケータまたは他のメカニズムを使用して、誤りをメモリ・コントローラに示すことができた。しかし、メモリ・コントローラは、誤りのメモリ位置を決定するために、読取り動作を停止して、メモリ・デバイスの内部レジスタを読み取る必要があった。追加のフラグ・ピンは、メモリ位置を決定するためにプロセスが必要となることを防ぐが、そのことは、著しくリソース利用が加わることを表す。本明細書に詳述されるシステムおよび方法の実施形態は、性能上不利益となることなく、またはリソースを追加する必要なく、誤りベクトルを取得することに関する。すなわち、下で論じられる実施形態は、以前の手法のような停止−検査手法ではなく、追加のピンまたは他のリソースを必要としない。
【００１０】
図１は、本発明の実施形態に従うメモリ管理システム１００のブロック図である。任意の数のメモリ・デバイス１１０にアクセスするメモリ・コントローラ１０によって、メモリ管理システム１００にアクセスすることができる。メモリ・コントローラ１０は、命令を記憶する１つまたは複数のメモリ・デバイスおよび命令を実施する１つまたは複数のプロセッサを含む。メモリ・コントローラ１０により実施される例示的なプロセスは、図１２〜図１４を参照して、下でさらに論じられる。メモリ・デバイス１１０は、生データ１１３およびＥＣＣビット１１５を記憶した状態で示される。生データ１１３は、メモリ・デバイス１１０中のＥＣＣビット１１５で符号化される。コマンド・デコーダ１５０へ入力されるコマンド１５３によって、復号されたコマンド１５５が生じる。コマンド１５３は、下でさらに論じられ、メモリ・コントローラ１０から来てよい。復号されたコマンド１５５に基づいて、メモリ・デバイス１１０からデータ読出しが開始される。データ読出しは、生データ１１３ならびにＥＣＣビット１１５を読み出すことを含む。対応する生データ１１３およびＥＣＣビット１１５がメモリ・デバイス１１０から出力されるメモリ・アドレスまたはアドレス範囲は、読取りのコマンド１５３中に指定される。ＥＣＣデコーダ１２０は、生データ１１３およびＥＣＣビット１１５を使用して、誤りベクトル１２５を生成する。構成要素１３０（例えば、排他的論理和（ＸＯＲ）デジタル論理ゲート）が、生データ１１３および誤りベクトル１２５に対して動作して、訂正データ１３５を出力する。一実施形態によれば、誤りベクトル１２５は、訂正データ１３５中で訂正される、生データ１１３中の誤りの位置を示す。他の実施形態は、下でさらに論じられる。復号されたコマンド１５５は、ＭＵＸ１４０にやはり提供されて、使用され、実施形態に従う出力データ１４５として、訂正データ１３５または誤りベクトル１２５のいずれかを出力する。下でさらに論じられるように、代替実施形態では、ＭＵＸ１４０の出力データ１４５は、生データ１１３であってよく、または誤りベクトル１２５の圧縮されたバージョンを含むことができる。コマンド１５３は、出力データ１４５が誤りベクトル１２５でなければならないかどうかを指定する１つまたは複数のビットを含むことができる（例えば、誤りベクトル１２５が出力されるべきでないときにビットＥＶ＝０、誤りベクトル１２５が出力されるべきときにＥＶ＝１）。代替実施形態では、同じ１つもしくは複数のビットまたは異なるビットの組が使用されて、ＭＵＸ１４０により出力される出力データ１４５が生データ１１３でなければならないかどうかを指定することができる。他の出力データ１４５のオプションを指定する他の実施形態が下で論じられる。出力データ１４５を、メモリ・コントローラ１０に提供することができる。例示的な読出しが下で論じられる。
【００１１】
図２〜図４は、３つの異なる実施形態に従う例示的な読出しを示す。各実施形態において、入力のコマンド１５３によって、ＭＵＸ１４０から特定の出力データ１４５が生じる。訂正データ１３５ではなく生データ１１３が出力データ１４５として出力される実施形態は明示的に論じられないが、コマンド１５３に基づいて、図２〜図４に示される実施形態のいずれかで、訂正データ１３５ではなく生データ１１３を出力する場合がある。これは、コマンド１５３中にビット（例えば、ＲＶ）を設定して、生データ１１３が出力データ１４５としてＭＵＸ１４０により出力されるべきであることを示すことにより達成することができる。
【００１２】
図２は、実施形態に従う２つの異なるコマンド１５３から生じる出力データ１４５を示す。第１のコマンド１５３（読取り１）は、誤りベクトル１２５が出力されないことを示す、０に設定された誤りベクトル・ビット（例えば、ＥＶ）を含む。結果として、図２中の矢印により示されるように、訂正データ１３５（または、代替的に、生データ１１３）が出力される。例示の訂正データ１３５は、図２中では３２ビットであるが、例は訂正データ１３５の長さ、または出力データ１４５を提供するデータ・バスの配置を限定することを意図していない。誤りベクトル１２５が出力されることを示す、ＥＶが１に設定される別のコマンド１５３（読取り２）が発行されると、誤りベクトル１２５が出力データ１４５として提供される。コマンド１５３（ＥＶ＝１である、読取り２）を、何らかの指定された数の、標準的な読取りのコマンド１５３（ＥＶ＝０である、読取り１）の後に（例えば、１０００の読取りコマンドごとに）発行する場合があり、イベントに基づいて、または別のトリガに従って発行する場合がある。
【００１３】
図３は、別の実施形態に従う２つの異なるコマンド１５３から生じる出力データ１４５を示す。第１のコマンド１５３（読取り１）は、誤りベクトル１２５が出力されないことを示す、０に設定された誤りベクトル・ビット（例えば、ＥＶ）を含む。結果として、図２に示される実施形態と同様に、訂正データ１３５が出力データ１４５として出力される。代替実施形態では、訂正データ１３５ではなく生データ１１３を、出力データ１４５として出力する場合がある。ＥＶが１に設定される別のコマンド１５３（読取り２）が発行されると、図２で示された実施形態ではなく、本実施形態に従い、結果が異なる。ＥＶが１に設定されると、訂正データ１３５（または生データ１１３）および誤りベクトル１２５の両方が、出力データ１４５として出力される。結果として、データが３２ビットである例示的に示される場合では、ＥＶが１に設定されると、６４ビットが出力データ１４５として出力される。ＥＶ＝０のときとＥＶ＝１のときに出力される訂正データ１３５のアドレス範囲は異なってよく（しかし、同じであってもよく）、コマンド１５３中で指定されるアドレス範囲に依存する。図２と図３の比較が示すように、図３に示される実施形態は、誤りベクトル１２５を読み出すこと、ならびにデータ（１１３または１３５）の読出しを容易にするが、出力データ１４５中の追加ビットに起因して、より長い時間を必要とする。実際、図２に示される実施形態と比較して、図３に示される（読取り２についての）実施形態では、２倍長い時間が必要とされる。
【００１４】
図４は、さらに別の実施形態に従う２つの異なるコマンド１５３から生じる出力データ１４５を示す。図４は、図２および図３に示される実施形態の間の中間の観点を表す実施形態を示す。この場合もまた、ＥＶが０に設定される第１のコマンド１５３（読取り１）について、出力データ１４５は、訂正データ１３５（または、生データ１１３）である。ＥＶが１に設定される別のコマンド１５３（読取り２）が発行されると、結果として得られる出力データ１４５は、圧縮された誤りベクトル１２５’ならびに訂正データ１３５を含む。すなわち、（図３に示される例の中では各バス線について８ビットの長さの）誤りベクトル１２５は（２ビットに）圧縮される。圧縮は、図５に示される例示的なアルゴリズムに従って実施することができる。この実施形態は、ＥＶが１に設定されるとき、図２に示される実施形態のように、誤りベクトル１２５からの情報がデータ（１３５または１１３）の代わりに伝達されず、出力データ１４５の提供において、図３に示される実施形態と比較して、必要なデータがより少なく、したがって必要な時間がより短いので、図２および図３に示される実施形態の間の中間の観点を表す。図５は、実施形態に従う例示的な誤りベクトルについての、例示的な圧縮アルゴリズムを示す。表５１０は、どのように４ビットが１ビットに圧縮されるのかを示す。表５１０中の記号||は、論理ＯＲ演算を示す。
【００１５】
図６は、実施形態に従う訂正可能な誤りの場合の、例示的なデータおよび誤りベクトル・ビットを示す。生データ１１３は、誤りを有する１ビット（影付き）を含む。このビットは、訂正データ１３５中で訂正され、誤りベクトル１２５の対応するビット中で誤りとして示される。誤りベクトル・ビット（ＥＶ）が０に設定されるとき、出力データ１４５は、訂正データ１３５である。図２〜図４を参照して上で論じられた実施形態に従い、ＥＶが１に設定されるとき、出力データ１４５は、３つの異なるビットの組のうちの１つであってよい。出力データ１４５は、（図２に示されるように）誤りベクトル１２５のみ、（図３に示されるように）訂正データ１３５および誤りベクトル１２５、または（図４に示されるように）訂正データ１３５および圧縮されたバージョンの誤りベクトル１２５’であってよい。図６に示される例は、訂正可能な誤りを含む。訂正不可能な誤りを示すパターンを含む例示的な実施形態は、下で論じられる。
【００１６】
図７は、一実施形態に従う訂正不可能な誤りの場合の、例示的なデータおよび誤りベクトル・ビットを示す。生データ１１３は、誤りを有する２ビット（影付き）を含む。例えば、どのビットが特に誤りであるのかについての情報がＥＣＣビット１１５を通して入手可能でない可能性があるので、誤りを有するビットが訂正不可能な可能性がある。したがって、誤りは検出可能であるが訂正可能ではない。本実施形態によれば、この場合、訂正データ１３５は生データ１１３と同じであるが、誤りベクトル１２５は、１つまたは複数の訂正不可能な誤りを示す所定のパターン（例えば、例の中の全てが「１」）である。図８は、別の実施形態に従う訂正不可能な誤りの場合の、例示的なデータおよび誤りベクトル・ビットを示す。図８に示される実施形態では、訂正データ１３５および誤りベクトル１２５は、両方とも、生データ１１３中に訂正不可能なデータが存在することを示す所定のパターンである（同じまたは異なるパターンであってよい）。
【００１７】
図９は、実施形態に従う様々なシナリオ９１０〜９４０について誤りベクトル１２５を示す。図９によって示される実施形態によれば、誤りベクトル１２５は、生データ１１３だけでなく、ＥＣＣビット１１５間の誤りビットも示す。シナリオ９１０では、生データ１１３またはＥＣＣビット１１５のいずれにも誤りがないとき、誤りベクトル１２５は全て０である。生データ１１３中に訂正可能な誤りを有し、ＥＣＣビット１１５中に誤りがないシナリオ９２０では、誤りベクトル１２５中で、対応するビットが１に設定される（全ての他のビットは０に設定される）。シナリオ９３０では、生データ１１３中に誤りはないが、ＥＣＣビット１１５のうちの１つに誤りがある。誤りベクトル１２５のビットの数が生データ１１３のビットの数と同じであり、その結果、ＥＣＣビット１１５中の誤りを示すための予備ビットがなく、ＥＣＣビット１１５中の誤りがビット９３５において示されることを示すために（影を付けたビットについて示される）パターンが使用されることに留意されたい。誤っているＥＣＣビット１１５に対応するビット９３５内の誤りベクトル１２５中のビットは１に設定され、一方、ビット９３５内の他のビットは０に設定される。シナリオ９４０では、訂正不可能な誤りが、生データ１１３の中に検出される。この場合、誤りベクトル１２５は、図７および図８に示される実施形態と同様に、パターンで生成される。シナリオ９１０〜９４０は、網羅したものではないけれども（例えば、シナリオ９１０〜９４０の組合せ）。
【００１８】
図１０は、別の実施形態に従う様々なシナリオ１０１０〜１０５０について誤りベクトル１２５を示す。図１０によって示される実施形態によれば、誤りベクトル１２５は、アクセスされた生データ１１３およびＥＣＣビット１１５からだけでなく、アクセスされない生データ１１３からの誤りを示す。この実施形態は、アクセスされた生データ１１３およびアクセスされないデータ１１３’にわたって計算されるＥＣＣビット１１５に関連する。メモリ・デバイス１１０は、ＥＣＣビット１１５および追加ビットを使用して、生データ１１３より２倍多く（例えば、ほんの３２ビットではなく６４ビット）をカバーする。本明細書で論じられる例では、アクセスされないデータ１１３’は、メモリ・デバイス１１０中に記憶されるが、生データ１１３として読み出されない。シナリオ１０１０中のように、アクセスされた生データ１１３、アクセスされないデータ１１３’、またはＥＣＣビット１１５中に誤りがないとき、誤りベクトル１２５は、全て０を含む。シナリオ１０２０中のように、アクセスされた生データ１１３中に訂正可能な誤りがあるとき、誤りビットは、誤りベクトル１２５の対応するビット中に示される。シナリオ１０３０中のように、アクセスされないデータ１１３’が訂正可能な誤りを含むとき、誤りベクトル１２５は、ＥＣＣビット１１５と関連する２つのデータセット（１１３、１１３’）のうちの１つに誤りがあることを示すパターンである。または、誤りベクトル１２５は、アクセスされた生データ１１３が何ら誤りを含まないことを示すために、全て０であってよい。シナリオ１０４０では、ＥＣＣビット１１５中に訂正可能な誤りがある。このシナリオ１０４０は、シナリオ９３０と同様に、パターンとともにＥＣＣビット１１５からの誤っているビットの誤りベクトル１２５中の表示をもたらす。シナリオ１０５０中のように、アクセスされた生データ１１３中に訂正不可能な誤りがあるとき、シナリオ９４０と同様に、誤りベクトル１２５はパターンである。
【００１９】
図１１は、実施形態に従うメモリ管理システム１００のコマンド・デコーダ１５０の例示的な実装である。デコーダ１５０へ入力されるコマンド１５３として設定される異なるビットの組がＥＶビットを含む。図１１が示すように、モード・レジスタ１１１０を使用して、ＥＶ読出しビットをイネーブルまたはディセーブルにすることができる。
【００２０】
図１２〜図１４は、メモリ管理システム１００を使用する、メモリ・コントローラ１０により実装される例示的なプロセス・フローを示す。図１２は、本明細書に論じられる実施形態に従って取得された誤りベクトルを使用する方法のプロセス・フローである。本実施形態は、例えば、標準的な読取りに関する。ブロック１２１０において、誤りベクトル１２５が出力されるべきでないことを示す、ＥＶが０に設定された、読取り動作（読取り１）が行われる。ブロック１２２０において、訂正データ１３５が所定のパターンであるかどうかの決定が行われる。例えば、図８に示されるように、所定のパターンである訂正データ１３５は、訂正不可能な誤りを示すことができる。訂正データ１３５が所定のパターンであるとき、次いでブロック１２３０において、誤りベクトル１２５が出力されるべきであることを示す、ＥＶが１に設定された別の読取り（読取り２）が行われる。上に論じられた様々な実施形態に従いコマンド１５３中に設定される他のビットに基づいて、この第２の読取りは、追加で、生データ１１３または訂正データ１３５が出力されることを指示することができる。ブロック１２４０において、誤りベクトル１２５に基づいて、生データ１１３中に訂正不可能な誤りがあるかどうかが決定される。生データ１１３中に訂正不可能な誤りがあると決定されると、ブロック１２５０において、誤り回復が遂行される。誤り回復は、知られている技法によることができる。訂正データ１３５が所定のパターンでないと（ブロック１２２０において）決定される、または生データ１１３中に訂正不可能な誤りがないと（ブロック１２４０において）決定されると、通常動作を続けるプロセスがブロック１２６０で継続される。このプロセスは、例えば、メモリ・デバイス１１０から追加データを読み取るステップを含むことができる。
【００２１】
図１３は、実施形態に従って取得された誤りベクトルを使用する別の方法のプロセス・フローである。本実施形態は、例えば、メモリ・デバイス１１０のメモリ位置が必要に応じて読み取られて訂正される、メモリ・スクラビング・プロセス(memory scrubbing process)に関する。訂正データが書き戻された後に誤りが残存するメモリ位置は、ハード・エラーを有するといわれ、誤りが残存しないメモリ位置は、ソフト・エラーを有するといわれる。ブロック１３１０において、誤りベクトル１２５が出力されるべきでないこと（すなわち、データ（１１３または１３５）のみが出力されるべきであること）を示す、ＥＶが０に設定された、第１の読取り（読取り１）の後に、誤りベクトル１２５が出力されるべきであることを示す、ＥＶが１に設定された、第２の読取り（読取り２）が続く。ブロック１３２０において、データ（１１３または１３５）または誤りベクトル１２５の中に誤りがあるかどうかが決定される（例えば、誤りベクトル１２５は所定のパターンである）。データ１１３、１３５または誤りベクトル１２５の中に誤りがあると、ブロック１３３０において、正しいデータがメモリ位置に書き込まれる。この訂正の後に、ブロック１３４０において、別の読取りの組（読取り１および読取り２）が続く。ブロック１３５０において、データ１１３、１３５または誤りベクトル１２５の中に誤りがあるかどうかが決定される。この段階で（ブロック１３３０における訂正後）、データ１１３、１３５または誤りベクトル１２５の中に（まだ）誤りがあるとき、誤りは、ブロック１３６０において、ハード・エラー・ログの中に記録される。ブロック１３３０における訂正後、データ１１３、１３５または誤りベクトル１２５の中に誤りがないとき、ブロック１３７０において、ソフト・エラーが記録される。ハードもしくはソフト・エラーの記録（ブロック１３６０または１３７０）に続いて、または（ブロック１３１０における）第１の読取りの組の後にデータ１１３、１３５または誤りベクトル１２５の中に誤りがないことが（ブロック１３２０において）決定されると、プロセスは継続する。メモリ・デバイス１１０のあらゆるメモリ位置が読み取られるまで、継続するステップは、メモリ・デバイス１１０の次のアドレスまたはメモリ位置へ進むステップを含む。
【００２２】
図１４は、実施形態に従って取得された誤りベクトルを使用するさらに別の方法のプロセス・フローである。図１３を参照して論じられた例のように、図１４に示される実施形態は、メモリ・スクラビング・プロセスに関する。ブロック１４１０において、誤りベクトル１２５が出力されるべきであることを示す、ＥＶが１に設定された、読取りが行われる。図３を参照して論じたように、例えば、データ（１１３または１３５、あるいはその両方）を追加で出力することができる。ブロック１４２０において、データ１１３、１３５、または誤りベクトル１２５の中に誤りがあるかどうかが決定される。ブロック１４２０において見いだされた誤りがある場合、ブロック１４３０において、誤りベクトル１２５が出力されるべきでないことを示す、ＥＶが０に設定された、別の読取りが実施される。ブロック１４４０において、訂正データは、（ブロック１４２０において決定された）誤りを有していたメモリ位置に書き戻される。次いで、ブロック１４５０において、ＥＶが１に設定された、別の読取りが実施される。ブロック１４６０において、データ１１３、１３５、または誤りベクトル１２５の中に誤りがあるかどうかが決定される。再び誤りがある場合、誤りは持続的であり、ブロック１４７０において、ハード・エラーとして記録される。（ブロック１４５０における）この読取り後に誤りがない場合、誤りは、ブロック１４８０において、ソフト・エラーとして記録される。ハードもしくはソフト・エラーの記録（ブロック１４７０または１４８０）に続いて、または（ブロック１４１０における）第１の読取り後にデータ１１３、１３５、または誤りベクトル１２５の中に誤りがないことが（ブロック１４２０において）決定されると、プロセスは継続する。メモリ・デバイス１１０のあらゆるメモリ位置が読み取られるまで、継続するステップは、メモリ・デバイス１１０の次のアドレスまたはメモリ位置へ進むステップを含む。
【００２３】
本明細書において使用する用語は、特定の実施形態を記載することのみを目的としており、本発明を限定することを意図していない。本明細書において使用するとき、文脈上の明確な別段の指示がない限り、単数形「ａ」「ａｎ」および「ｔｈｅ」は、複数形を同様に含むことを意図している。本明細書において使用するとき、用語「備える、含む（ｃｏｍｐｒｉｓｅｓ）」または「備えている、含んでいる（ｃｏｍｐｒｉｓｉｎｇ）」あるいはその両方の組合せは、述べた特徴、整数、ステップ、動作、要素、または構成要素あるいはこれらの組合せが存在することを明示するが、１つまたは複数の他の特徴、整数、ステップ、動作、要素、構成要素、またはそのグループあるいはこれらの組合せの存在または追加を排除しないことをさらに理解されよう。
【００２４】
添付の請求項内の全てのミーンズ・プラス・ファンクション要素またはステップ・プラス・ファンクション要素の対応する構造、材料、働き、および均等物は、他の特許請求される要素と組み合わせて、具体的に特許請求されるものとして、機能を実施するために、任意の構造、材料、または働きを含むことが意図される。本発明の記載は、説明および記載のために提示されたが、網羅的であること、または開示された形に発明を限定することを意図していない。本発明の範囲および思想から逸脱することなく、多くの変更形態および変形形態が、当業者には明らかとなるであろう。様々な変更形態を備える様々な実施形態が意図された特定の使用に適するので、実施形態は、本発明の原理および実践的な適用を最もよく説明するため、および当業者が本発明を理解することが可能となるために、選択され記載された。
【００２５】
本発明は、システム、方法、またはコンピュータ・プログラム、あるいはそれらの組合せであってよい。コンピュータ・プログラムは、プロセッサに本発明の態様を実行させるため、コンピュータ可読プログラム命令を有する、１つまたは複数のコンピュータ可読記憶媒体を含むことができる。
【００２６】
コンピュータ可読記憶媒体は、命令実行デバイスにより使用するための命令を保持および記憶できる有形のデバイスであってよい。コンピュータ可読記憶媒体は、例えば、限定するものではないが、電子的記憶デバイス、磁気的記憶デバイス、光学的記憶デバイス、電磁的記憶デバイス、半導体記憶デバイス、または上記の任意の好適な組合せであってよい。コンピュータ可読記憶媒体のより具体的な例の、網羅的でないリストは以下、すなわち、携帯型コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ（ＲＡＭ）、読取り専用メモリ（ＲＯＭ）、消去可能プログラマブル読取り専用メモリ（ＥＰＲＯＭまたはフラッシュ・メモリ）、スタティック・ランダム・アクセス・メモリ（ＳＲＡＭ）、携帯型コンパクト・ディスク読取り専用メモリ（ＣＤ−ＲＯＭ）、デジタル多用途ディスク（ＤＶＤ）、メモリ・スティック、フロッピー（Ｒ）・ディスク、命令を記録させたパンチカードまたは溝の中の隆起構造などの機械的に符号化されたデバイス、および上記の任意の好適な組合せを含む。本明細書で使用するコンピュータ可読記憶媒体は、電波もしくは他の自由に伝播する電磁波、導波路もしくは他の伝送媒体を通って伝播する電磁波（例えば、光ファイバ・ケーブルを通過する光パルス）、またはワイヤを通って伝送される電気信号など、過渡的な信号自体であると解釈されるべきでない。
【００２７】
本明細書で記載されるコンピュータ可読プログラム命令は、コンピュータ可読記憶媒体からそれぞれのコンピューティング／処理デバイスに、または例えば、インターネット、ローカル・エリア・ネットワーク、ワイド・エリア・ネットワーク、またはワイヤレス・ネットワーク、あるいはそれらの組合せを介して、外部コンピュータまたは外部記憶デバイスにダウンロードすることができる。ネットワークは、銅製伝送ケーブル、光伝送ファイバ、ワイヤレス伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータ、またはエッジ・サーバ、あるいはそれらの組合せを含むことができる。各コンピューティング／処理デバイス中のネットワーク・アダプタ・カードまたはネットワーク・インターフェイスは、ネットワークから、コンピュータ可読プログラム命令を受け取り、それぞれのコンピューティング／処理デバイス内のコンピュータ可読記憶媒体中で記憶するため、コンピュータ可読プログラム命令を転送する。
【００２８】
本発明の動作を実行するためのコンピュータ可読プログラム命令は、Ｊａｖａ（Ｒ）、Ｓｍａｌｌｔａｌｋ（Ｒ）、Ｃ＋＋などのオブジェクト指向プログラミング言語、および「Ｃ」プログラミング言語または同様のプログラミング言語などの従来型の手続き型プログラミング言語を含む、１つまたは複数のプログラミング言語の任意の組合せで書かれる、アセンブラ命令、インストラクション・セット・アーキテクチャ（ＩＳＡ）命令、機械命令、機械依存命令、マイクロコード、ファームウェア命令、状態設定データ、またはソース・コードもしくはオブジェクト・コードであってよい。コンピュータ可読プログラム命令は、完全にユーザのコンピュータ上で、スタンドアロン・ソフトウェア・パッケージとして部分的にユーザのコンピュータ上で、部分的にはユーザのコンピュータ上および部分的にはリモート・コンピュータ上で、または完全にリモート・コンピュータもしくはサーバ上で実行することができる。後者のシナリオでは、リモート・コンピュータは、ローカル・エリア・ネットワーク（ＬＡＮ）もしくはワイド・エリア・ネットワーク（ＷＡＮ）を含む、任意のタイプのネットワークを通してユーザのコンピュータに接続することができ、または、外部コンピュータに（例えば、インターネット・サービス・プロバイダを使用してインターネットを通して）接続をすることができる。いくつかの実施形態では、本発明の態様を実施するために、例えば、プログラム可能論理回路、フィールド・プログラマブル・ゲート・アレイ（ＦＰＧＡ）、またはプログラマブル・ロジック・アレイ（ＰＬＡ）が、電子回路を個別化するため、コンピュータ可読プログラム命令の状態情報を利用することによりコンピュータ可読プログラム命令を実行することができる。
【００２９】
本発明の態様は、本発明の実施形態に従う、方法、装置（システム）およびコンピュータ・プログラムの、フローチャート図またはブロック図あるいはその両方を参照して本明細書で記載される。フローチャート図またはブロック図あるいはその両方の各ブロック、およびフローチャート図またはブロック図あるいはその両方中のブロックの組合せは、コンピュータ可読プログラム命令により実装することが可能であることが理解されよう。
【００３０】
これらのコンピュータ可読プログラム命令は、コンピュータまたは他のプログラム可能データ処理装置のプロセッサを介して実行する命令が、フローチャートまたはブロック図あるいはその両方の１つまたは複数のブロック中で指定される機能／行為を実装するための手段を生み出すように、汎用コンピュータ、専用コンピュータ、または他のプログラム可能データ処理装置のプロセッサに提供されてマシンを作り出すものであってよい。これらのコンピュータ可読プログラム命令は、命令を記憶させたコンピュータ可読記憶媒体が、フローチャートまたはブロック図あるいはその両方の１つまたは複数のブロック中で指定される機能／行為の態様を実装する命令を含む製造品を含むように、コンピュータ可読記憶媒体中に記憶され、コンピュータ、プログラム可能データ処理装置、または他のデバイス、あるいはそれらの組合せに特定のやり方で機能するよう指示するものであってもよい。
【００３１】
コンピュータ可読プログラム命令は、コンピュータ、他のプログラム可能装置、または他のデバイス上で実行する命令が、フローチャートまたはブロック図あるいはその両方の１つまたは複数のブロック中で指定される機能／行為を実装するように、コンピュータ実装されたプロセスを作り出すべく、コンピュータ、他のプログラム可能データ処理装置、または他のデバイス上にロードされて、コンピュータ、他のプログラム可能装置、または他のデバイス上で一連の動作ステップを実施させるものであってもよい。
【００３２】
図中のフローチャートおよびブロック図は、本発明の様々な実施形態に従うシステム、方法、およびコンピュータ・プログラムの可能な実装の、アーキテクチャ、機能性、および動作を示す。この点に関連し、フローチャートまたはブロック図中の各ブロックは、指定された論理的機能を実装するための１つまたは複数の実行可能命令を含む、モジュール、セグメント、または命令の部分を表すことができる。いくつかの代替実装において、ブロック内に言及される機能は、図中で言及される順序から外れて生じ得る。例えば、含まれる機能性に依存して、連続して示される２つのブロックが、実際には、実質的に同時に実行されてよく、またはブロックが、場合によって逆の順序で実行されてよい。ブロック図またはフローチャート図あるいはその両方の各ブロック、およびブロック図またはフローチャート図あるいはその両方中のブロックの組合せは、指定される機能もしくは行為を実施する、または専用ハードウェアとコンピュータ命令の組合せを実行する専用ハードウェアベースのシステムにより実装できることにも留意されたい。
【００３３】
本発明の様々な実施形態の記載は、説明のために提示されたが、網羅的であること、または、開示された実施形態に限定することを意図していない。記載された実施形態の範囲および思想から逸脱することなく、多くの変更形態および変形形態が、当業者には明らかとなるであろう。本明細書に使用される用語は、実施形態の原理、市場で見いだされる技術への実践的な適用または技術的な改良を最良に説明するため、または当業者が本明細書に開示される実施形態を理解することを可能にするために選択された。
【符号の説明】
【００３４】
１０  メモリ・コントローラ
１００  メモリ管理システム
１１０  メモリ・デバイス
１１３  生データ
１１３’  アクセスされないデータ
１１５  ＥＣＣビット
１２０  ＥＣＣデコーダ
１２５  誤りベクトル
１２５’  圧縮されたバージョンの誤りベクトル
１３０  構成要素
１３５  訂正データ
１４０  ＭＵＸ
１４５  出力データ
１５０  コマンド・デコーダ
１５３  コマンド
１５５  復号されたコマンド
５１０  表
９１０  シナリオ
９２０  シナリオ
９３０  シナリオ
９３５  ビット
９４０  シナリオ
１０１０  シナリオ
１０２０  シナリオ
１０３０  シナリオ
１０４０  シナリオ
１０５０  シナリオ
１１１０  モード・レジスタ
【図１】
0006568012.tif 000002
【図２】
0006568012.tif 000003
【図３】
0006568012.tif 000004
【図４】
0006568012.tif 000005
【図５】
0006568012.tif 000006
【図６】
0006568012.tif 000007
【図７】
0006568012.tif 000008
【図８】
0006568012.tif 000009
【図９】
0006568012.tif 000010
【図１０】
0006568012.tif 000011
【図１１】
0006568012.tif 000012
【図１２】
0006568012.tif 000013
【図１３】
0006568012.tif 000014
【図１４】
0006568012.tif 000015