(57)【要約】  説明される例において、非一時的機械可読媒体が、ソースコード（５２）に含まれるループにおいてソフトブレイクインジケータを検出するコンパイラ（５６）を含み、コンパイラ（５６）は、ソフトウェアパイプライン化を適用してこのループについてのコンパイルされたコード（５８）を生成する。コンパイルされたコード（５８）はアセンブリ命令を含み、ソフトブレイクインジケータは、コンパイラ（５６）にアセンブリ命令を整理させて、ソフトブレイクの実行の後、ループの実行中反復を完了させる。
2020514869.tif 000002
【特許請求の範囲】
【請求項１】
メモリコントローラであって、
誤り訂正符号（ＥＣＣ）メモリにおける部分書込みデータに対する部分書込みデータ要求を受け取り、読出しデータを訂正する前に結合データを形成するため、前記部分書込みデータ要求における前記部分書込みデータを前記ＥＣＣメモリから提供される前記読出しデータと結合する、読出し−改変−書込みロジックモジュール、及び
前記ＥＣＣメモリへの前記結合データの書込みを制御する書込み制御モジュール、
を含む、メモリコントローラ。
【請求項２】
請求項１に記載のメモリコントローラであって、
前記読出しデータと誤り訂正符号とに応答して修復データパターン信号を生成するＥＣＣ検査及び修復モジュールをさらに含み、
前記ＥＣＣメモリが、前記読出しデータ及び前記誤り訂正符号を、前記ＥＣＣ検査及び修復モジュール及び前記読出し−改変−書込みロジックモジュールに提供する、
メモリコントローラ。
【請求項３】
請求項２に記載のメモリコントローラであって、
前記書込み制御モジュールがさらに、前記データ修復パターン信号及び前記結合データに対してＸＯＲ（排他的ＯＲ）機能を実行して、前記ＥＣＣメモリに書き込まれる修復されたデータを形成するＸＯＲデータロジックを含む、
メモリコントローラ。
【請求項４】
請求項３に記載のメモリコントローラであって、前記ＸＯＲ機能が、前記結合データにおけるビットの適切なサブセットをフリップして前記修復されたデータを形成する、メモリコントローラ。
【請求項５】
請求項２に記載のメモリコントローラであって、前記ＥＣＣ検査及び修復モジュールが、前記ＥＣＣメモリから前記読出しデータ及び前記誤り訂正符号を受け取り、前記ＥＣＣ検査及び修復モジュールが、前記読出しデータと前記書込み制御モジュールに提供される前記誤り訂正符号との受信に応答してＥＣＣ修復パターン信号を生成する、メモリコントローラ。
【請求項６】
請求項５に記載のメモリコントローラであって、前記結合データの受信に応答して新たな誤り訂正符号を生成するＥＣＣ生成器をさらに含む、メモリコントローラ。
【請求項７】
請求項６に記載のメモリコントローラであって、前記書込み制御がさらに、前記ＥＣＣ生成器からの前記ＥＣＣ修復パターン信号及び前記新たな誤り訂正符号に対してＸＯＲ（排他的ＯＲ）機能を実行して、前記ＥＣＣメモリの符号メモリに書き込まれる修復された誤り訂正符号を形成するＸＯＲ  ＥＣＣロジックを含む、メモリコントローラ。
【請求項８】
請求項２に記載のメモリコントローラであって、前記ＥＣＣ検査及び修復モジュールがさらに、
前記読出しデータの受信に応答して再生成された誤り訂正符号を生成するＥＣＣ生成器、及び
前記再生成された誤り訂正符号を前記ＥＣＣメモリから提供される誤り訂正符号と比較し、前記比較に基づいてＥＣＣ誤り信号を生成するＥＣＣ比較モジュール、
を含み、
前記ＥＣＣ誤り信号が、前記読出し−改変−書込みロジックモジュール及び前記書込み制御モジュールに提供される、
メモリコントローラ。
【請求項９】
請求項８に記載のメモリコントローラであって、前記メモリコントローラが前記読出しデータを登録し、前記読出し−改変−書込みロジックモジュールが、前記読出しデータのビット位置の少なくとも１つが誤りを有することを示す前記ＥＣＣ誤り信号に応答して、新たなメモリ読出し又は書込み要求の受け取りを妨げるストール信号を付加的なクロックサイクルにわたってアサートする、メモリコントローラ。
【請求項１０】
請求項８に記載のメモリコントローラであって、前記書込み制御がさらに、
前記データ修復パターン信号及び前記読出しデータに対してＸＯＲ（排他的ＯＲ）機能を実行して、修復されたデータ信号を形成するＸＯＲデータロジック、及び
前記結合データ及び前記修復されたデータをそれぞれの入力ノードで受け取り、前記ＥＣＣ誤り信号を選択ノードで受け取るデータマルチプレクサ、
を含む、メモリコントローラ。
【請求項１１】
請求項１０に記載のメモリコントローラであって、
前記データマルチプレクサが、前記読出しデータに誤りが存在しないことを示す前記ＥＣＣ誤り信号に応答して前記結合データを前記ＥＣＣメモリに書き込み、
前記データマルチプレクサが、前記読出しデータの少なくとも１つのビット位置が誤りを有することを示す前記ＥＣＣ誤り信号に応答して前記修復されたデータを前記ＥＣＣメモリに書き込む、
メモリコントローラ。
【請求項１２】
請求項８に記載のメモリコントローラであって、
前記ＥＣＣ検査及び修復モジュールが、前記誤り訂正符号及び前記読出しデータに基づいて、前記書込み制御モジュールに提供されるＥＣＣ修復パターン信号を生成し、
前記メモリコントローラが、前記結合データについての新たな誤り訂正符号を生成する別のＥＣＣ生成器をさらに含み、
前記書込み制御が、
前記ＥＣＣ修復パターン信号及び前記新たな誤り訂正符号に対してＸＯＲ（排他的ＯＲ）機能を実行して、修復された誤り訂正符号を形成する生成器ＸＯＲ  ＥＣＣロジックと、
前記新たな誤り訂正符号及び前記修復された誤り訂正符号をそれぞれの入力ノードで受け取り、前記ＥＣＣ誤り信号を選択ノードで受け取るＥＣＣマルチプレクサと、
をさらに含む、
メモリコントローラ。
【請求項１３】
請求項１２に記載のメモリコントローラであって、前記ＥＣＣマルチプレクサが、前記読出しデータにおいて誤りが検出されないことを示す前記ＥＣＣ誤り信号に応答して前記ＥＣＣメモリに前記新たな誤り訂正符号を書き込み、前記データマルチプレクサが、前記読出しデータ及び前記誤り訂正符号の少なくとも１つが検出される誤りを有することを示す前記ＥＣＣ誤り信号に応答して前記ＥＣＣメモリの前記符号メモリに前記修復された誤り訂正符号を書き込む、メモリコントローラ。
【請求項１４】
メモリコントローラであって、
ＥＣＣメモリから読出しデータ及び誤り訂正符号を受け取り、前記読出しデータの少なくとも１つのビット位置において誤りが検出されるかを示すＥＣＣ誤り信号を提供する、誤り訂正符号（ＥＣＣ）検査及び修復モジュール、
前記ＥＣＣメモリにおける部分書込みデータに対する部分書込みデータ要求を受け取り、前記ＥＣＣ検査及び修復モジュールが前記読出しデータの前記少なくとも１つのビット位置における誤りを検出する前に、前記部分書込みデータ要求における前記部分書込みデータを前記ＥＣＣメモリから提供される読出しデータと結合して結合データを形成する、読出し−改変−書込みロジックモジュール、及び
前記ＥＣＣ誤り信号に基づいて、前記ＥＣＣメモリへの前記結合データの書込みを制御する、書込み制御モジュール、
を含む、メモリコントローラ。
【請求項１５】
請求項１４に記載のメモリコントローラであって、
前記メモリコントローラが前記読出しデータを登録し、前記読出し−改変−書込みロジックモジュールが、前記読出しデータの少なくとも１つのビット位置において誤りが検出されたことを示す前記ＥＣＣ誤り信号に応答して付加的なクロックサイクルにわたってストール信号をアサートし、
前記ストール信号のアサートが、後続の読出し要求又は書込み要求を防止する、
メモリコントローラ。
【請求項１６】
請求項１４に記載のメモリコントローラであって、
前記ＥＣＣ検査及び修復モジュールがさらに、
前記読出しデータの受信に応答して、再生成された誤り訂正符号を生成するＥＣＣ生成器、及び
前記誤り訂正符号を前記再生成された誤り訂正符号と比較して、前記ＥＣＣ誤り信号と、前記読出しデータ及び／又は前記誤り訂正符号における誤りを有するビットのセットを識別するシンドローム信号とを生成する、ＥＣＣ比較モジュール、
を含む、メモリコントローラ。
【請求項１７】
請求項１６に記載のメモリコントローラであって、
前記ＥＣＣ検査及び修復モジュールがさらに、
前記シンドローム信号に応答して前記書込み制御に提供されるデータ修復パターン信号を生成する、データ修復ルックアップテーブル（ＬＵＴ）、及び
前記シンドローム信号に応答して前記書込み制御に提供されるＥＣＣ修復パターン信号を生成する、ＥＣＣ修復ＬＵＴ、
を含む、メモリコントローラ。
【請求項１８】
方法であって、
誤り訂正符号（ＥＣＣ）メモリにおけるデータに対する部分書込みデータ要求を受け取ること、
結合データを形成するため、前記部分書込みデータ要求における部分書込みデータを前記ＥＣＣメモリのデータメモリから提供される読出しデータと結合すること、及び
前記結合することと並列に、前記読出しデータの正確さを検査すること、
を含む、方法。
【請求項１９】
請求項１８に記載の方法であって、
前記検査することに基づいてデータ修復パターン信号を生成すること、及び
前記検査することに基づいてＥＣＣ修復パターン信号を生成すること、
をさらに含む、方法。
【請求項２０】
請求項１９に記載の方法であって、
前記結合データに基づいて新たな誤り訂正符号を生成すること、
前記結合データ及び前記データ修復パターン信号に対してＸＯＲ（排他的ＯＲ）機能を実行すること、及び
前記新たな誤り訂正符号及び前記ＥＣＣ修復パターン信号に対して別のＸＯＲ機能を実行すること、
を含む、方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、概して、誤り訂正符号メモリに関し、より特定していえば、誤り訂正符号メモリのためのコントローラに関する。
【背景技術】
【０００２】
誤り訂正符号（ＥＣＣ）を用いて一時誤りからデータを保護するメモリはＥＣＣメモリと呼ばれる。誤り訂正符号（ＥＣＣ）メモリは、大部分の一般的な種類の内部データ破損を検出し訂正し得るコンピュータデータストレージの一種である。ＥＣＣメモリは、安全、科学、及び／又は金融コンピューティングなどのほぼいかなる状況下でもデータの破損が許容され得ないコンピュータにおいて用いられる。ＥＣＣメモリは、誤りの検出及び訂正を容易にするために、データに加えて誤り訂正符号（ＥＣＣ）ビットを有する。この付加的な誤り訂正符号ビットは、データとともにデータメモリ又はＥＣＣメモリの別個の符号メモリに記憶され得る。共通誤り訂正符号、単一誤り訂正及び二重誤り検出（ＳＥＣＤＥＤ）ハミング符号により、単一ビット誤りが訂正され得、二重ビット誤りを検出され得る。
【０００３】
幾つかの例において、ＥＣＣメモリは、単一ビット誤りの影響を受けないようにメモリシステムを維持する。したがって、ＥＣＣメモリにおける各ワードから読み出されるデータは、事前に格納された１つ又は複数のビットが誤った状態にフリップしたとしても、ＥＣＣメモリに書き込まれたデータと同じである。ＥＣＣ方式は、「部分データ書込み」と称する書込み可能なデータの最小サイズよりも大きいデータサイズに基づき得る。このような部分データ書込みに対して、読出し−改変−書込み動作が実施される。読出し−改変−書込み動作を実行するために、データは、メモリから読み出されるデータであり、ＥＣＣ検査ロジックを用いて誤りについて検査される。単一ビット誤り（ＳＢＥ）の場合、データは訂正ロジックを用いて修復され、次いで、訂正された読出しデータが部分書込みデータと結合され、データメモリに書き込まれる。結合データは、符号メモリに書き込まれる新たなＥＣＣ符号を電算するためにも用いられる。
【発明の概要】
【０００４】
第１の例において、メモリコントローラが、読出し−改変−書込みロジックモジュールを含み、読出し−改変−書込みロジックモジュールは、誤り訂正符号（ＥＣＣ）メモリにおける部分書込みデータに対する部分書込みデータ要求を受け取り、読出しデータを訂正する前に、部分書込みデータ要求における部分書込みデータをＥＣＣメモリから提供される読出しデータと結合して結合データを形成する。メモリコントローラはさらに、ＥＣＣメモリへの結合データの書込みを制御する書込み制御モジュールを含む。
【０００５】
第２の例において、メモリコントローラが、ＥＣＣ検査及び修復モジュールを含み、ＥＣＣ検査及び修復モジュールは、ＥＣＣメモリから読出しデータ及び誤り訂正符号を受け取り、読出しデータの少なくとも１つのビット位置において誤りが検出されるかを示すＥＣＣ誤り信号を提供する。また、メモリコントローラは、読出し−改変−書込みロジックモジュールを含み、読出し−改変−書込みロジックモジュールは、ＥＣＣメモリにおける部分書込みデータに対する部分書込みデータ要求を受け取り、ＥＣＣ検査及び修復モジュールが読出しデータの少なくとも１つのビット位置において誤りを検出する前に、部分書込みデータ要求における部分書込みデータをＥＣＣメモリから提供された読出しデータと結合して結合データを形成する。メモリコントローラはさらに、ＥＣＣ誤り信号に基づいて、ＥＣＣメモリへの結合データの書込みを制御する書込み制御モジュールを含む。
【０００６】
第３の例において、或る方法が、ＥＣＣメモリにおけるデータに対する部分書込みデータ要求を受け取ることを含む。この方法はまた、部分書込みデータ要求における部分書込みデータをＥＣＣメモリから提供される読出しデータと結合して結合データを形成することを含む。この方法はさらに、結合することと並列に、読出しデータの正確さを検査することを含む。
【図面の簡単な説明】
【０００７】
【図１】部分メモリ書込みを実行するためのメモリコントローラの一例のブロック図である。
【０００８】
【図２】部分メモリ書込みを実行するためのメモリコントローラの別の例のブロック図である。
【０００９】
【図３】図２のメモリコントローラによって用いられ得る例示の波形のタイミング図である。
【００１０】
【図４】部分メモリ書込みを実行するためのメモリコントローラのさらに別の例のブロック図である。
【００１１】
【図５】図２のメモリコントローラによって用いられ得る例示の波形のタイミング図である。
【００１２】
【図６】部分メモリ書込みを実行するための例示の方法のフローチャートである。
【００１３】
【図７】部分メモリ書込みを実行するための別の例示の方法のフローチャートである。
【発明を実施するための形態】
【００１４】
例示の実施形態は、メモリコントローラと、部分メモリ書込み動作の間に誤り訂正符号（ＥＣＣ）保護メモリを実装するための方法とを含む。メモリコントローラは、部分幅データ書込みを含む大規模メモリ（データストレージ）のＥＣＣコア（メイン／マスタコントローラ）についての比較的厳しいタイミング要件を満足するように動作するように構成される。
【００１５】
少なくとも１つの例において、メモリコントローラは、部分書込みの間、並列に動作する読出しパス及び書込みパスを実装する。例えば、並列動作において、ＥＣＣメモリから読み出されるデータ（「読出しデータ」）が、読み出されたデータにおける誤りが訂正される前に部分書込みデータと結合される。得られた結合データは、書込みパスに対する新たな誤り訂正符号を生成するために用いられる。説明を簡単にするために、下記で用いられるように、「ＥＣＣ」という用語はハードウェア（例えば、ＥＣＣメモリ）を指し、「誤り訂正符号」という用語は誤り訂正符号を表すデータの実際のインスタンスを指し、後者は誤り符号ワードとも称され得る。
【００１６】
並列に（例えば、同時の動作及び並列パスでの動作の両方）、誤り訂正符号が再生成（再電算）され、再生成された誤り訂正符号を、符号メモリにおける格納された誤り訂正符号と比較することによって、読出しデータに対してシンドロームが生成される。シンドロームは、単一ビット誤り検出の場合にデータビット誤り位置を復号するために用いられる。部分書込みのための新たな誤り訂正符号を電算するための結合データを生成するために用いられるビット位置に誤りが見つかった場合、メモリコントローラは破損したビットを（ＸＯＲ演算を介して）フリップし、その結果の修復されたデータ（これは部分書込みデータを含む）はメモリに書き込まれる。同様に、破損したデータビットによって影響を受けた誤り訂正符号におけるビットが、比較的シンプルな論理ゲート演算（例えば、１レベルのロジック）を用いて（ＸＯＲ演算を介して）フリップされて、修復された誤り訂正符号が生成され、ＥＣＣメモリに書き込まれる。読出し及び書込みパスについて並列に誤り訂正符号を生成することによって、誤り訂正符号のシリアル（連続）計算を必要とせずに、コントローラのタイミングが緩和される。例えば、本明細書で説明するように、並列パスを用いることによって、部分書込みは２クロックサイクルで完了され得る。このような状況において、第１のクロックサイクルの間、データメモリからデータが読み出される。第２のクロックサイクルの間、部分書込みにおけるデータを読出しデータと結合することによって結合データが生成され、結合データに対する新たな誤り訂正符号が電算され、結合データ及び新たな誤り訂正符号は、（ＸＯＲ機能の後）ＥＣＣメモリに書き込まれる。
【００１７】
別の例において、メモリコントローラは、読出しパス及び書込みパスに対してパイプライン並列プロセスを実装して、部分メモリ書込み動作を実行する。大きなサイズのメモリ（例えば、１ギガバイト以上）に関わる高周波設計において、メモリ遅延があると、読出しパスに対してさらなる論理レベルを付加できないことがある。このような状況において、読出しデータは、読出しパスで用いられる前に登録される（遅延に格納される）。こういった登録は、誤り訂正符号電算、及び読出しパスでのシンドローム復号に先立つ。この登録により、レイテンシが（読出し−改変−書込み動作における）部分メモリ書込みについて少なくとも１クロックサイクル増加し、そのため、部分書込み動作は、２クロックサイクルではなく少なくとも３クロックサイクルで完了する。しかし、下記で説明するパイプライン並列動作を用いることによって、この余分なクロックサイクルが避けられ／軽減され得る。
【００１８】
部分書込みのパイプライン並列動作において、第１のクロックサイクルにおいて、データがＥＣＣメモリから読み出される（「読出しデータ」）。また、ＥＣＣメモリのための制御信号をもう１つのクロックサイクルで保持するために、ストール信号がマスタコントローラにアサートされる。第２のクロックサイクルにおいて、読出しデータはメモリコントローラによって部分書込みデータと結合されて結合データが形成され、ＥＣＣ生成器が新たな誤り訂正符号を生成する。結合データ及び新たな誤り訂正符号はＥＣＣメモリに書き込まれ、ストール信号がアサート解除される。また、第２のクロックサイクルにおいて、読出しデータが遅延（フリップフロップ）に登録される。
【００１９】
登録された読出しデータは、第３のクロックサイクルにおいて利用可能であり、データが破壊について検査される。単一ビット誤りの場合、メモリコントローラは、１つの付加的なクロックサイクルにわたってストール信号を再度アサートして、ＥＣＣメモリにおけるデータ及び誤り訂正符号を訂正値に更新する。メモリビット破壊の確率は極めて低くまれである（例えば、時間の約０．００００１％未満）と予想されるので、誤り訂正のためのもう１つのクロックサイクルの付加的なレイテンシは必然ではない。
【００２０】
図１は、読出し−改変−書込み動作を介してＥＣＣメモリ５２に対して部分書込みを実行するためのメモリコントローラ５０の一部のブロック図を図示する。「部分書込み」という用語は、或いは、部分データ書込み又は部分データ転送と称することがある。ＥＣＣメモリ５２は、極めて正確なデータ（例えば、破壊されていない）が必要とされる状況において用いられ得る非一時的機械可読媒体（例えば、ランダムアクセスメモリ）である。したがって、ＥＣＣメモリ５２は、自動車ブレーキ制御及び／又はエアバッグ展開などの、不正確であること（データが破壊されている）で安全システム機能が不適切となる安全性応用例においてしばしば用いられる。しかし、ＥＣＣメモリ５２は、極めて正確なデータが必要又は所望とされるほぼいかなる電算環境においても配備され得る。ＥＣＣメモリ５２は、データメモリ５４及び符号メモリ５６を含む。
【００２１】
データメモリ５４はデータを格納するためのメモリセルを含み、符号メモリ５６は、データメモリ５４に格納されるデータについての誤り訂正符号を格納するためのデータセルを含む。データワード（単に「ワード」と称される）が、データメモリ５４における複数のセルで構成され、符号メモリ５６は一意的にアドレス指定可能である。ＥＣＣメモリ５２のデータメモリ５４に格納されるデータは、Ｋビットの割り当てられたワードサイズを有し、Ｋは２以上の整数である。
【００２２】
少なくとも１つの例において、メモリコントローラ５０は、部分書込みデータ要求（図１において「ＰＡＲＴＩＡＬ  ＷＲ  ＤＡＴＡ」と記載される）に応答してＥＣＣメモリ５２に対して読出し−改変−書込み動作を実行する読出し−改変−書込みロジック５８（読出し−改変−書込みロジックモジュール）を含む。部分書込みデータ要求は、データメモリ５４におけるワードに対する一意のアドレスを含む。また、部分書込みデータ要求は、データメモリ５４に書き込まれるＴ個のビットを含む。ここで、Ｔは１以上Ｋ未満の整数であり、Ｋはデータメモリ５４のワードサイズである。したがって、データメモリ５４が６４ビットのワードサイズを有する場合、Ｔは読出し−改変−書込み動作においてデータメモリ５４に書き込まれる１〜６３ビットとし得る。
【００２３】
読出し−改変−書込みロジック５８は、部分書込みデータ要求と同時に、アクティブローのメモリイネーブル信号（図１の「ＥＺ」）及びアクティブローの書込みイネーブル信号（図１の「ＷＺ」）を受け取る。本明細書において用いられるように、アクティブローの信号は、アクティブロー信号が論理「０」である状況においてアサートされ、アクティブロー信号が論理「１」である状況においてアサート解除される。メモリイネーブルＥＺがアサート解除される（例えば、論理「１」である）場合、ＥＣＣメモリ５２に含まれるメモリセルは、イナクティブであり、読出しも書込みも成され得ない。逆に、ＥＺがアサートされる（例えば、論理「０」である）場合、ＥＣＣメモリに含まれるメモリセルは、アクティブであり、読出し及び／又は書込みが成され得る。また、ＷＺがアサート解除され（例えば、論理「１」）、ＥＺがアサートされる（例えば、論理「０」である）場合、ＥＣＣメモリ５２は読出し動作を実行している。また、ＷＺがアサートされ（例えば、論理「０」）、ＥＺがアサートされる（例えば、論理「０」である）場合、ＥＣＣメモリは書込み動作を実行している。
【００２４】
書込み信号ＷＺ及びメモリイネーブル信号ＥＺがアサートされていること（例えば、論理「０」）に応答して、読出し−改変−書込みロジック５８は、アクティブローのストール信号ＳＴＡＬＬ＿Ｎ（論理「０」）をアサートする。これにより、ＥＣＣメモリ５２に対する後続のメモリ動作が防止される。また、読出し−改変−書込みロジック５８は、アドレス信号ＭＥＭ  ＡＤＤＲ（これは部分書込みデータ要求ＰＡＲＴＩＡＬ  ＷＲ  ＤＡＴＡに含まれる）をＥＣＣメモリ５２に転送する。これに応答して、データメモリ５４は、読出し−改変−書込みロジック５８に読出しデータ信号（図１の「ＲＤ  ＤＡＴＡ」）を提供する。読出しデータ信号ＲＤ  ＤＡＴＡは、信号（例えば、データワード）のアドレスにおいて識別される、データメモリ５４のメモリ位置に格納されたデータを含む。
【００２５】
読出しデータ信号ＲＤ  ＤＡＴＡに応答して、読出し−改変−書込みロジック５８は、ＲＤ  ＤＡＴＡのデータを部分書込みデータ要求ＰＡＲＴＩＡＬ  ＷＲ  ＤＡＴＡのデータと結合して結合データ形成し、書込みデータ信号（図１の「ＷＲ  ＤＡＴＡ」）を生成する。書込みデータ信号ＷＲ  ＤＡＴＡは、データメモリ５４の同じ位置（アドレス信号ＭＥＭ  ＡＤＤＲによって識別される位置）に書き込まれるべき結合データを含む。書込みデータ信号ＷＲ  ＤＡＴＡは、読出しデータ信号ＲＤ  ＤＡＴＡにおけるデータの誤り訂正の前に生成される。書込みデータ信号ＷＲ  ＤＡＴＡは、書込み制御６２（書込み制御モジュール）及びＥＣＣ生成器６４に提供される。
【００２６】
書込みデータ信号ＷＲ  ＤＡＴＡに応答して、ＥＣＣ生成器６４は、書込みデータ信号ＷＲ  ＤＡＴＡに含まれる結合データについての新たな誤り訂正符号を生成し、この新たな誤り訂正符号を書込み制御６２に転送する。書込み制御６２は、データメモリ５４及び符号メモリ５６にデータを書き込むタイミングを制御する。
【００２７】
並列動作と称され得、図２を参照して詳細に説明される第１の例（下記では「第１例」）において、読出しデータ信号ＲＤ  ＤＡＴＡもＥＣＣ検査及び修復６０（ＥＣＣ検査及び修復モジュール）に提供される。また、アドレス信号ＭＥＭ  ＡＤＤＲに応答して、ＥＣＣメモリ５２の符号メモリ５６は、誤り訂正符号信号（図１の「ＥＣＣ１」）をＥＣＣ検査及び修復６０に提供する。誤り訂正符号信号ＥＣＣは、アドレス信号ＭＥＭ  ＡＤＤＲによって識別されたアドレスに対応する、符号メモリ５６におけるアドレスにおいて格納される誤り訂正符号を含む。このアドレスは誤り符号アドレスと称され得る。
【００２８】
第１の例を継続すると、読出しデータ信号ＲＤ  ＤＡＴＡに応答して、ＥＣＣ検査及び修復６０は、誤り訂正符号ＥＣＣ１を用いて、読出しデータ信号ＲＤ  ＤＡＴＡに含まれるデータにおける誤りを識別する。また、ＥＣＣ検査及び修復６０は、書込み制御６２に提供されるデータ修復パターン信号（図１の「ＤＡＴＡ  ＲＥＰＡＩＲ  ＰＡＴＴＥＲＮ」）を生成する。データ修復パターン信号ＤＡＴＡ  ＲＥＰＡＩＲ  ＰＡＴＴＥＲＮは、誤りを訂正するためのデータを含む。同様に、ＥＣＣ検査及び修復６０は、書込み制御６２に提供されるＥＣＣ修復パターン信号（「ＥＣＣ  ＲＥＰＡＩＲ  ＰＡＴＴＥＲＮ」）を生成する。
【００２９】
第１の例において、書込み制御６２は、書込みデータ信号ＷＲ  ＤＡＴＡの結合データ、及びデータ修復パターン信号ＤＡＴＡ  ＲＥＰＡＩＲ  ＰＡＴＴＥＲＮのデータを用いて、アドレス信号ＭＥＭ  ＡＤＤＲにおいて識別されたアドレスにおいてデータメモリ５４に書き込まれるデータを含む修復されたデータ信号を生成する。また、書込み制御６２は、ＥＣＣ生成器６４からの新たな誤り訂正符号、及びＥＣＣ検査及び修復６０からのＥＣＣ修復パターン信号ＥＣＣ  ＲＥＰＡＩＲ  ＰＡＴＴＥＲＮを用いて、誤り符号アドレスで符号メモリ５６において書き込まれたデータについての修復された誤り訂正符号を生成する。また、書込みが成されている修復された誤り訂正符号に続いて、読出し−改変−書込みロジック５８は、ストール信号ＳＴＡＬＬ＿Ｎ（例えば、論理「１」）をアサート解除して、ＥＣＣメモリ５２に対する後続のメモリ動作を可能にする。
【００３０】
パイプライン並列動作と称され得、図４を参照して詳細に説明される第２の例（以下「第２例」）において、書込みデータ信号ＷＲ  ＤＡＴＡ及び新たな誤り訂正符号に応答して、書込み制御６２は、アドレス信号ＭＥＭ  ＡＤＤＲにおいて識別されたアドレスでデータメモリ５４に結合データを書き込み、符号メモリ５６の誤り符号アドレスに新たな誤り訂正符号を書き込む。また、読出し−改変−書込みロジック５８は、ストール信号ＳＴＡＬＬ＿Ｎ（例えば、論理「１」）をアサート解除する。
【００３１】
その後、読出しデータ信号ＲＤ  ＤＡＴＡ（これは遅延に登録される）及び誤り訂正符号ＥＣＣ１が誤りについて解析され、ＥＣＣ検査及び修復６０が、読出しデータ信号ＲＤ  ＤＡＴＡに含まれるデータに単一ビット誤りが存在すると判定する場合、ＥＣＣ検査及び修復６０は、ＥＣＣ単一ビット誤り信号（図１の「ＥＣＣ  ＳＢＥ」）をアサートし（例えば、論理「１」）、書込み制御６２に及び読出し−改変−書込みロジック５８にＥＣＣ単一ビット誤り信号ＥＣＣ  ＳＢＥを提供する。ＥＣＣ単一ビット誤り信号ＥＣＣ  ＳＢＥは、代替としてＥＣＣ誤り信号と称されることもある。逆に、ＥＣＣ検査及び修復６０が、読出しデータ信号ＲＤ  ＤＡＴＡに誤りが存在しないと判定する場合、ＥＣＣ単一ビット誤り信号ＥＣＣ  ＳＢＥは、アサート解除され（例えば、論理「０」）、書込み制御６２に及び読出し−改変−書込みロジック５８に提供される。
【００３２】
第２の例において、アサートされている単一ビット誤り信号ＥＣＣ  ＳＢＥ（例えば、論理「１」）に応答して、読出し−改変−書込みロジック５８は、ＥＣＣメモリ５２に対する他の動作に対して後続のデータ転送を防止するストール信号ＳＴＡＬＬ＿Ｎをアサートする（例えば、論理「０」）。また、単一ビット誤り信号のアサートにより、ＥＣＣ  ＳＢＥは、書込み制御６２に、データ修復パターン信号ＤＡＴＡ  ＲＥＰＡＩＲ  ＰＡＴＴＥＲＮ及びＥＣＣ修復パターン信号ＥＣＣ  ＲＥＰＡＩＲ  ＰＡＴＴＥＲＮを用いて、アドレス信号ＭＥＭ  ＡＤＤＲにおいて識別されたデータメモリ５４のアドレスに書き込まれたデータ及び符号メモリ５６の誤りアドレスに書き込まれた誤り訂正符号を訂正させる。また、読出し−改変−書込みロジック５８は、ストール信号ＳＴＡＬＬ＿Ｎをアサート解除し、ＥＣＣメモリ５２に対する後続の動作を可能にする。
【００３３】
逆に、第２の例において、アサート解除されている単一ビット誤り信号ＥＣＣ  ＳＢＥ（例えば、論理「０」）に応答して、読出し−改変−書込みロジック５８は、ストール信号ＳＴＡＬＬ＿Ｎのアサート解除（例えば、論理「０」）を継続する。このように、ＥＣＣメモリ５２に書き込まれる結合データ及び新たな誤り訂正符号は変化しない。
【００３４】
第１及び第２の両方の例において、（ＲＤ＿ＤＡＴＡに含まれる）データがデータメモリ５４から読み出され、読出しデータ信号ＲＤ  ＤＡＴＡのデータの誤り訂正の前に部分書込みデータ要求ＰＡＲＴＩＡＬ  ＷＲ  ＤＡＴＡのデータと結合される。このように、誤り訂正が他の動作と並列に実行されて、読出し−改変−書込み動作のレイテンシが減少する。
【００３５】
図２は、読出し−改変−書込み動作を用いてＥＣＣメモリ１０２に対して部分書込みを実行するためのメモリコントローラ１００の一部のブロック図の別の例を図示する。メモリコントローラ１００は並列動作でプロセスを実行する。少なくとも１つの例において、メモリコントローラ１００は、図１に図示されたメモリコントローラ５０を実装するように用いられ得る。ＥＣＣメモリ１０２は、安全性応用例（例えば、オートモーティブ）、金融応用例などの極めて正確なデータ（例えば、破壊されていない）が必要とされる状況において用いられ得る非一時的機械可読媒体（例えば、ランダムアクセスメモリ）である。ＥＣＣメモリ１０２は、データメモリ１０４及び符号メモリ１０６を含む。
【００３６】
データメモリ１０４はデータを格納するためのメモリセルを含み、符号メモリ１０６は、データメモリ１０４に格納されたデータについての誤り訂正符号を格納するためのデータセルを含む。データメモリ１０４における複数のセルでワードが構成され、符号メモリ１０６は一意的にアドレス指定可能である。ＥＣＣメモリ１０２のデータメモリ１０４に格納されるデータは、Ｋビットの割り当てられたワードサイズを有する。
【００３７】
少なくとも１つの例において、メモリコントローラ１００は、部分書込みデータ要求（図２において「ＰＡＲＴＩＡＬ  ＷＲ  ＤＡＴＡ」と記される）に応答してＥＣＣメモリ１０２に対して読出し−改変−書込み動作を実行する読出し−改変−書込みロジック１０８を含む。部分書込みデータ要求ＰＡＲＴＩＡＬ  ＷＲ  ＤＡＴＡは、データメモリ１０４におけるワードに対する一意のアドレスを含む。また、部分書込みデータ要求ＰＡＲＴＩＡＬ  ＷＲ  ＤＡＴＡは、データメモリ１０４に書き込まれるＴ個のビットを含む。ここで、Ｔは１以上Ｋ未満の整数であり、Ｋはデータメモリ１０４のワードサイズである。したがって、データメモリ１０４が３２ビットのワードサイズを有する場合、Ｔは、読出し−改変−書込み動作においてデータメモリ１０４に書き込まれる１〜３１ビットとし得る。
【００３８】
読出し−改変−書込みロジック１０８は、部分書込みデータ要求ＰＡＲＴＩＡＬ  ＷＲ  ＤＡＴＡと同時に、アクティブローのメモリイネーブル信号（図２の「ＥＺ」）及びアクティブローの書込みイネーブル信号（図２の「ＷＺ」）を受け取る。アサート解除された書込み信号ＷＺ及びメモリイネーブル信号ＥＺ（例えば、論理「０」）に応答して、（図示しないマスタメモリコントローラからの）第１のクロックサイクルにおいて、読出し−改変−書込みロジック１０８は、ＥＣＣメモリ１０２に対する後続のメモリ演算を防止するストール信号ＳＴＡＬＬ＿Ｎをアサートする。また、読出し−改変−書込みロジック１０８は、アドレス信号ＭＥＭ  ＡＤＤＲ（これは部分書込みデータ信号ＰＡＲＴＩＡＬ  ＷＲ  ＤＡＴＡにＡＤＤＲとして含まれる）をＥＣＣメモリ１０２に転送する。また、読出し−改変−書込みロジック１０８は、メモリイネーブル信号ＭＺ及び書込みイネーブル信号ＷＺに対応する、アクティブローのアサートされ調整されたメモリイネーブル信号ＭＥＭ  ＥＺ（例えば、論理「０」）及びアクティブローのアサート解除され調整されたメモリ再書込み信号ＭＥＭ  ＷＺ（例えば、論理「１」）を提供する。これに応答して、データメモリ１０４は、読出し−改変−書込みロジック１０８に及びＥＣＣ検査及び修復１１２のＥＣＣ生成器１１０に、読出しデータ信号（図１の「ＲＤ  ＤＡＴＡ」）を提供する。読出しデータ信号ＲＤ  ＤＡＴＡは、アドレス信号ＭＥＭ  ＡＤＤＲ（例えば、データワード）において識別されたメモリアドレスに格納されたデータを含む。アドレス信号ＭＥＭ  ＡＤＤＲにさらに応答して、ＥＣＣメモリ１０２の符号メモリ１０６は、ＥＣＣ検査及び修復１１２のＥＣＣ比較１１４に誤り訂正符号信号（図２の「ＥＣＣ１」）を提供する。誤り訂正符号信号ＥＣＣは、アドレス信号ＭＥＭ  ＡＤＤＲによって識別されたアドレスに対応する、符号メモリ１０６におけるアドレスに格納される誤り訂正符号を含む。このアドレスは誤り符号アドレスと称されることもある。
【００３９】
（メインメモリコントローラからの）第２のクロックサイクルにおいて、読出しデータ信号ＲＤ  ＤＡＴＡに応答して、読出し−改変−書込みロジック１０８は、ＲＤ  ＤＡＴＡのデータを部分書込みデータ要求ＰＡＲＴＩＡＬ  ＷＲ  ＤＡＴＡのデータと結合して書込みデータ信号（図２の「ＷＲ  ＤＡＴＡ」）を生成することによって、ＲＤ  ＤＡＴＡのデータを改変する。また、読出し−改変−書込みロジック１０８は、ＭＥＭ＿ＷＺ信号（例えば、論理「０」）をアサートする。書込みデータ信号ＷＲ  ＤＡＴＡは、データメモリ１０４の同じ位置（アドレス信号ＭＥＭ  ＡＤＤＲによって識別された位置）に書き込まれるべき結合データを含む。書込みデータ信号ＷＲ  ＤＡＴＡは、データメモリ１０４に前に格納され得たデータの誤りを訂正するための任意の誤り訂正符号が用いられる前に生成される。書込みデータ信号ＷＲ  ＤＡＴＡは、書込み制御１１８のＸＯＲデータロジック１１６に及びＥＣＣ生成器１２０に提供される。また、読出し−改変−書込みロジック１０８は、ストール信号ＳＴＡＬＬ＿Ｎをアサート解除する。
【００４０】
また、第２のクロックサイクルにおいて、書込みデータ信号ＷＲ  ＤＡＴＡに応答して、ＥＣＣ生成器１２０は、ＸＯＲ  ＥＣＣロジック１１９（ＸＯＲゲート論理）に提供される誤り訂正符号を生成する。また、第２のクロックサイクルの間、並列動作で、読出しデータ信号ＲＤ  ＤＡＴＡに応答して、ＥＣＣ検査及び修復１１２のＥＣＣ生成器１１０は、読出しデータ信号ＲＤ  ＤＡＴＡに含まれるデータについての再電算誤り訂正符号（図２の「ＥＣＣ２」）を生成する。再電算誤り訂正符号ＥＣＣ２は、ＥＣＣ比較１１４に提供される。ＥＣＣ比較１１４は、符号メモリ１０６から提供される誤り訂正符号ＥＣＣ１を再電算誤り訂正符号ＥＣＣ２と比較し、読出しデータ信号ＲＤ  ＤＡＴＡに含まれるデータにおける誤りを識別するシンドローム信号（図２の「ＳＹＮＤＲＯＭＥ」）を生成する。例えば、シンドローム信号ＳＹＮＤＲＯＭＥは、読出しデータ信号ＲＤ  ＤＡＴＡにおける破損したビットを識別する。少なくとも１つの例において、誤り訂正符号ＥＣＣ１が生成されて以来（データメモリ１０４での格納時）、読出しデータ信号ＲＤ  ＤＡＴＡに含まれるデータのビット及び／又は誤り訂正符号ＥＣＣ１が変化していない場合、シンドローム信号ＳＹＮＤＲＯＭＥは論理「０」の値を有する。この例において、誤り訂正符号ＥＣＣ１が生成されてから読出しデータ信号ＲＤ  ＤＡＴＡに含まれるデータの１つ又は複数のビットが変化している場合、シンドローム信号ＳＹＮＤＲＯＭＥは、読出しデータ信号ＲＤ  ＤＡＴＡからのデータにおいて破損した特定のビットを識別する値に設定される。
【００４１】
シンドローム信号ＳＹＮＤＲＯＭＥは、データ修復ルックアップテーブル（ＬＵＴ）１２２及びＥＣＣ修復ＬＵＴ１２４に提供される。データ修復ＬＵＴ１２２は、シンドローム信号をデータ修復パターン信号（図２の「ＤＡＴＡ  ＲＥＰＡＩＲ  ＰＡＴＴＥＲＮ」に変換する。データ修復パターン信号は、書込み制御１１８のＸＯＲデータ論理１１６に提供される。データ修復パターン信号ＤＡＴＡ  ＲＥＰＡＩＲ  ＰＡＴＴＥＲＮは、読出しデータ信号ＲＤ  ＤＡＴＡのデータを、データ読出し信号ＲＤ  ＤＡＴＡのデータと同じ値、すなわち正しい値に復元／訂正するために採用可能なデータを含む。同様に、ＥＣＣ修復ＬＵＴ１２４は、シンドローム信号ＳＹＮＤＲＯＭＥを、誤り訂正符号ＥＣＣ１を復元／訂正するために採用可能なＥＣＣ修復パターン信号（図２の「ＥＣＣ  ＲＥＰＡＩＲ  ＰＡＴＴＥＲＮ」）に変換する。
【００４２】
ＸＯＲデータロジック１１６は、データ修復パターン信号ＤＡＴＡ  ＲＥＰＡＩＲ  ＰＡＴＴＥＲＮ及び書込みデータ信号ＷＲ  ＤＡＴＡに対してＸＯＲ機能を実行して、アドレス信号ＭＥＭ  ＡＤＤＲにおいて識別された、データメモリ１０４のメモリアドレスで書き込まれる修復データ値を生成する。例えば、ＸＯＲデータロジック１１６は、補正されたデータをデータメモリ１０４に書き込む前に、（シンドローム信号ＳＹＮＤＲＯＭＥによって識別された）破損したデータビットをフリップ（「ＸＯＲ」）する。ＸＯＲ  ＥＣＣロジック１１６は、ＥＣＣ修復パターン信号ＥＣＣ  ＲＥＰＡＩＲ  ＰＡＴＴＥＲＮ及び新たな誤り訂正符号に対してＸＯＲ機能を実行して、誤り符号アドレスで符号メモリ１０６に書き込まれる修復データ値を生成する。例えば、ＸＯＲ  ＥＣＣロジック１２６は、破損したデータによって影響を受ける誤り訂正符号ビットをフリップして、符号メモリ１０６に書き込まれる修復誤り訂正符号を生成する。また、読出し−改変−書込みロジックは、調整されたメモリイネーブル信号ＭＥＭ  ＥＺ及び調整されたメモリ書込み信号ＭＥＭ  ＷＺをアサート解除する（例えば、論理「１」）。
【００４３】
図３は、メモリコントローラ１００によって用いられる例示の波形のタイミング図１５０を示す。タイミング図１５０において、クロック信号ＣＬＫ、アドレス信号ＡＤＤＲ、及びデータ信号ＤＡＴＡは、図２の部分書込みデータ信号ＰＡＲＴＩＡＬ  ＷＲ  ＤＡＴＡに含まれるか、又は、別個の信号（図示せず）として提供される。タイミング図１５０は、メモリアドレスＡ０へのＤ０の部分書込みを図示する。
【００４４】
タイミング図１５０に図示されるように、メモリＱ０が、データメモリ１０４から読み出され、Ｄ０と結合されてメモリＭ０を形成する。メモリＭ０は、アドレスＡ０でデータメモリ１０４に書き込まれる。
【００４５】
再び図３を参照して、メモリコントローラ１００の一部分を用いることによって、データメモリ１０４から読み出されたデータ（ＲＤ  ＤＡＴＡ）は、部分書込みデータ要求ＰＡＲＴＩＡＬ  ＷＲ  ＤＡＴＡのデータと結合するために直接用いられる。したがって、ＥＣＣ生成器１２０によって（書込みパスにおいて）実行される誤り訂正符号生成は、ＥＣＣ検査及び修復１１２のＥＣＣ生成器１１０によって実行される誤り訂正符号再生成と並列に動作する。したがって、読出し−改変−書込み動作のためのタイミングパスにより、誤り訂正符号をシリアルに（例えば、連続的に）生成する必要性が回避される。
【００４６】
一例として、メモリコントローラ１００によって実行される読出し−改変−書込み動作のためのクリティカルパスが式１によって定義される。
CP=DR+ECCcheck+Syndrome Decode+XOR  （式１）
ここで、
ＣＰは、ピコ秒（ｐｓ）単位のクリティカルパス時間／遅延であり、
ＤＲは、データメモリ１０４のｃｌｋ２ｑ（ｃｌｏｃｋ−ｔｏ−Ｑ）遅延であり、
ＥＣＣｃｈｅｃｋは、ＥＣＣ生成器１２０及び１２０による誤り訂正符号生成からの遅延であり、ＥＣＣ比較１１４についての比較時間であり、
Ｓｙｎｄｒｏｍｅ  Ｄｅｃｏｄｅは、データ修復ＬＵＴによるデータ修復パターン信号ＤＡＴＡ  ＲＥＰＡＩＲ  ＰＡＴＴＥＲＮの生成及びＥＣＣ修復ＬＵＴ１２４によるＥＣＣ修復パターン信号ＥＣＣ  ＲＥＰＡＩＲ  ＰＡＴＴＥＲＮの生成のための遅延であり、
ＸＯＲは、ＸＯＲデータロジック１１６によるデータ修復パターン信号ＤＡＴＡ  ＲＥＰＡＩＲ  ＰＡＴＴＥＲＮに対してＸＯＲ論理を実行するための遅延時間、及びＸＯＲデータＥＣＣロジック１２６によるＥＣＣ修復パターン信号ＥＣＣ  ＲＥＰＡＩＲ  ＰＡＴＴＥＲＮに対してＸＯＲ論理を実行するための遅延時間である。
【００４７】
幾つかの例において、クリティカルパスＣＰは、シリアルに生成される誤り訂正符号を用いるシステムのクリティカルパスより約２０％（又は大きい）少ない遅延を有する。したがって、メモリコントローラ１００は、高周波クロック信号を有するシステムにおいて採用可能であり、付加的な制御ロジックを必要としない。
【００４８】
図４は、読出し−改変−書込み動作を用いてＥＣＣメモリ２０２に部分書込みを実行するためのメモリコントローラ２００の一部のブロック図の別の例を図示する。少なくとも１つの例において、メモリコントローラ２００は、パイプライン並列動作を実装するように用いられる。少なくとも１つの例において、メモリコントローラ２００は、図１に図示されるメモリコントローラ５０を実装するように用いられ得る。ＥＣＣメモリ２０２は、安全性応用例（例えば、オートモーティブ）、金融応用例などの極めて正確なデータ（例えば、破壊されていない）が必要とされる状況において用いられ得る非一時的機械可読媒体（例えば、ランダムアクセスメモリ）である。ＥＣＣメモリ２０２は、データメモリ２０４及び符号メモリ２０６を含む。
【００４９】
データメモリ２０４はデータを格納するためのメモリセルを含み、符号メモリ２０６は、データメモリ２０４に格納されるデータについての誤り訂正符号を格納するためのデータセルを含む。データメモリ２０４における複数のセルでワードが構成され、符号メモリ２０６は一意的にアドレス指定可能である。ＥＣＣメモリ２０２のデータメモリ２０４に格納されるデータは、Ｋビットの割り当てられたワードサイズを有する。
【００５０】
少なくとも１つの例において、メモリコントローラ２００は、部分書込みデータ要求（図２において「ＰＡＲＴＩＡＬ  ＷＲ  ＤＡＴＡ」と記される）に応答してＥＣＣメモリ２０２に対して読出し−改変−書込み動作を実行する読出し−改変−書込みロジック２０８を含む。部分書込みデータ要求ＰＡＲＴＩＡＬ  ＷＲ  ＤＡＴＡは、データメモリ２０４におけるワードに対する一意のアドレスを含む。また、部分書込みデータ要求ＰＡＲＴＩＡＬ  ＷＲ  ＤＡＴＡは、データメモリ２０４に書き込まれるＴ個のビットを含む。ここで、Ｔは１以上Ｋ未満の整数であり、Ｋはデータメモリ２０４のワードサイズである。したがって、データメモリ２０４が３２ビットのワードサイズを有する場合、Ｔは、読出し−改変−書込み動作においてデータメモリ２０４に書き込まれる１〜３１ビットとし得る。
【００５１】
読出し−改変−書込みロジック２０８は、部分書込みデータ要求ＰＡＲＴＩＡＬ  ＷＲ  ＤＡＴＡと同時に、アクティブローのメモリイネーブル信号（図４の「ＥＺ」）及びアクティブローの書込みイネーブル信号（図４の「ＷＺ」）を受け取る。アサートされている書込み信号ＷＺ及びメモリイネーブル信号ＥＺ（例えば、論理「１」）に応答して、（図示しないマスタメモリコントローラからの）第１のクロックサイクルにおいて、読出し−改変−書込みロジック２０８は、ＥＣＣメモリ２０２に対する後続のメモリ演算を防止するストール信号ＳＴＡＬＬ＿Ｎ（例えば、論理「０」）をアサートする。また、読出し−改変−書込みロジック２０８は、アドレス信号ＭＥＭ  ＡＤＤＲ（これは部分書込みデータ信号ＰＡＲＴＩＡＬ  ＷＲ  ＤＡＴＡにＡＤＤＲとして含まれる）をＥＣＣメモリ２０２に転送する。また、読出し−改変−書込みロジック２０８は、アサートされアクティブロー調整されたメモリイネーブル信号ＭＥＭ  ＥＺ（例えば、論理「０」）及びアサート解除され調整されたメモリ書込み信号ＭＥＭ  ＷＺ（例えば、論理「１」）を転送する。これに応答して、データメモリ２０４は、読出し−改変−書込みロジック２０８及び遅延２１０（例えば、フリップフロップ）に読出しデータ信号（図１の「ＲＤ  ＤＡＴＡ」）を提供し、それによって、読出しデータ信号ＲＤ  ＤＡＴＡのデータが登録／パイプライン化される。読出しデータ信号ＲＤ  ＤＡＴＡは、アドレス信号（例えば、データワード）において識別されたメモリ位置において格納されるデータを含む。所定の遅延（例えば、約１クロックサイクル）の後、遅延２１０は、読出しデータ信号ＲＤ  ＤＡＴＡをＥＣＣ検査及び修復２１４のＥＣＣ生成器２１２に渡す。遅延２１０は、読出しデータ信号ＲＤ  ＤＡＴＡを、書込み制御２１８のＸＯＲデータロジック２１６（例えば、ＸＯＲゲート）にも渡す。
【００５２】
アドレス信号ＭＥＭ  ＡＤＤＲにさらに応答して、ＥＣＣメモリ２０２の符号メモリ２０６は、遅延２２０に誤り訂正符号信号（図４の「ＥＣＣ」）を提供し、それによって、誤り訂正符号信号ＥＣＣが登録される。誤り訂正符号信号ＥＣＣは、アドレス信号ＭＥＭ  ＡＤＤＲによって識別されたアドレスに対応する、符号メモリ２０６におけるアドレスにおいて格納される誤り符号を含む。このアドレスは誤り符号アドレスと称され得る。約１クロックサイクルなどの所定の遅延の後、遅延２２０は、誤り訂正符号信号ＥＣＣを、ＥＣＣ検査及び修復２１４のＥＣＣ比較２２２に渡す。遅延２１０及び遅延２２０は、ＥＣＣ検査及び修復２１４の機能ブロックとして図示されている。しかし、他の例において、遅延２１０及び／又は遅延２２０は、ＥＣＣ検査及び修復２１４の外で実装され得る。
【００５３】
（メインメモリコントローラからの）第２のクロックサイクルにおいて、読出しデータ信号ＲＤ  ＤＡＴＡに応答して、読出し−改変−書込みロジック２０８は、ＲＤ  ＤＡＴＡのデータを部分書込みデータ要求ＰＡＲＴＩＡＬ  ＷＲ  ＤＡＴＡのデータと結合することによって、ＲＤ  ＤＡＴＡのデータを改変して、結合データを生成する。読出し−改変−書込みロジック２０８は、書込みデータ信号（図４の「ＷＲ  ＤＡＴＡ」）を生成し、調整されたメモリ書込み信号ＭＥＭ  ＷＺ信号（例えば、論理「０」）をアサートする。書込みデータ信号ＷＲ  ＤＡＴＡは、データメモリ２０４の同じ位置（アドレス信号ＭＥＭ  ＡＤＤＲによって識別された位置）に書き込まれた結合データを含む。書込みデータ信号ＷＲ  ＤＡＴＡは、データメモリ２０４に事前に格納され得たデータの誤りを訂正するための何らかの誤り訂正符号が用いられる前に、生成される。書込みデータ信号ＷＲ  ＤＡＴＡは、書込み制御２１８のデータマルチプレクサ（ＭＵＸ）２２４の入力ノードに、及びＥＣＣ生成器２２６に提供される。
【００５４】
ＥＣＣ生成器２２６は、書込みデータ信号ＷＲ  ＤＡＴＡにおける結合データについての新たな誤り訂正符号を生成し、新たな誤り訂正符号を、ＥＣＣ  ＭＵＸ２２８の入力に及び遅延２３０に渡す。所定の時間量（例えば、１クロックサイクル）の後、遅延２３０は、新たな誤り訂正符号を、書込み制御２１８のＸＯＲロジック２３２に渡す。また、読出し−改変−書込みロジック２０８は、ストール信号ＳＴＡＬＬ＿Ｎをアサート解除する（例えば、論理「１」）。また、幾つかの例において、読出し−改変−書込みロジック２０８は、調整されたメモリ書込み信号ＭＥＭ  ＷＺもアサート解除する（例えば、論理「１」）。
【００５５】
ＸＯＲデータロジック２１６は、データＭＵＸ２２４の別の入力に信号を提供する。また、ＸＯＲ  ＥＣＣロジック２３２は、ＥＣＣ  ＭＵＸ２２８の別の入力に信号を提供する。また、ＥＣＣ比較２２２は、データＭＵＸ２２４及びＥＣＣ  ＭＵＸ２２８の制御／選択ノードにＥＣＣ単一ビット誤り（図４の「ＥＣＣ  ＳＢＥ」）を提供する。第２のクロックサイクルの間、ＥＣＣ単一ビット誤り信号ＥＣＣ  ＳＢＥがアサート解除され（例えば、論理「０」）、データＭＵＸ２２４及びＥＣＣ  ＭＵＸ２２８に、書込みデータ信号ＷＲ  ＤＡＴＡに割り当てられた入力ノードを選択させる。単一ビット誤り信号ＥＣＣ  ＳＢＥに応答して、データＭＵＸ２２４は、書込みデータ信号ＷＲ  ＤＡＴＡの結合データを、アドレス信号ＭＥＭ  ＡＤＤＲにおける識別されたデータメモリ２０４のアドレスに書き込む。また、ＥＣＣ  ＭＵＸ２２８は、新たな誤り訂正符号を、符号メモリ２０６の対応する誤りアドレスに書き込む。このようにして、ＥＣＣメモリ２０２を用いて結合データが登録される。
【００５６】
また、第３のクロックサイクルにおいて、結合データがデータメモリ２０４に書き込まれ、新たな誤り訂正符号が符号メモリ２０５に書き込まれた後、登録され／パイプライン化された読出しデータＲＤ  ＤＡＴＡが遅延２１０からＥＣＣ生成器２１２に出力される。同様に、遅延２２０における誤り訂正符号ＥＣＣ１が、登録され／パイプライン化された誤り訂正符号ＥＣＣ１をＥＣＣ比較２２２に出力する。ＥＣＣ検査及び修復２１４のＥＣＣ生成器２１２は、読出しデータ信号ＲＤ  ＤＡＴＡに含まれるデータについての再電算誤り訂正符号（図４の「ＥＣＣ２」）を生成する。再電算誤り訂正符号ＥＣＣ２はＥＣＣ比較２２２に提供される。ＥＣＣ比較２２２は、遅延２２０から提供される誤り訂正符号ＥＣＣ１を再電算誤り訂正符号ＥＣＣ２と比較し、読出しデータ信号ＲＤ  ＤＡＴＡに含まれるデータにおける誤りを識別するシンドローム信号（図４の「ＳＹＮＤＲＯＭＥ」）を生成する。少なくとも１つの例において、誤り訂正符号ＥＣＣ１が生成されて以来（データメモリ２０４での格納時）、読出しデータ信号ＲＤ  ＤＡＴＡに含まれるデータのビット及び／又は誤り訂正符号ＥＣＣ１が変化している場合、シンドローム信号ＳＹＮＤＲＯＭＥは論理「０」の値を有する。この例において、誤り訂正符号ＥＣＣ１が生成されてから読出しデータ信号ＲＤ  ＤＡＴＡに含まれるデータの１つ又は複数のビットが（例えば、破壊されることによって）変化している場合、シンドローム信号ＳＹＮＤＲＯＭＥは、読出しデータ信号ＲＤ  ＤＡＴＡ及び／又は誤り訂正符号ＥＣＣ１からのデータにおいて破損した特定のビットを識別する値に設定される。
【００５７】
ＥＣＣ比較２２２は、シンドローム信号の値に基づいてＥＣＣ単一ビット誤り信号ＥＣＣ  ＳＢＥを設定する。例えば、シンドローム信号ＳＹＮＤＲＯＭＥが、読出しデータ信号ＲＤ  ＤＡＴＡのデータ及び／又は誤り訂正符号ＥＣＣ１に誤りがないことを示す値を有する場合、ＥＣＣ比較２２２は、単一ビット誤り信号ＥＣＣ  ＳＢＥを初期状態（例えば、論理「０」）に維持する。逆に、シンドローム信号ＳＹＮＤＲＯＭＥが、読出しデータ信号ＲＤ  ＤＡＴＡのデータ及び／又は誤り訂正符号ＥＣＣ１に誤りがないことを示す値を有する場合、ＥＣＣ比較２２２は、単一ビット誤り信号ＥＣＣ  ＳＢＥを誤り状態（例えば、論理「１」）に設定する。本明細書において説明されるように、ＥＣＣ単一ビット誤り信号ＥＣＣ  ＳＢＥは、読出し−改変−書込みロジック２０８、データＭＵＸ２２４、及びＥＣＣ  ＭＵＸ２２８に提供される。
【００５８】
シンドローム信号ＳＹＮＤＲＯＭＥは、データ修復ＬＵＴ２３４及びＥＣＣ修復ＬＵＴ２３６に提供される。データ修復ＬＵＴ２３４は、シンドローム信号を、書込み制御２１８のＸＯＲデータ論理２１６に提供されるデータ修復パターン信号（図２の「ＤＡＴＡ  ＲＥＰＡＩＲ  ＰＡＴＴＥＲＮ」）に変換する。データ修復パターン信号ＤＡＴＡ  ＲＥＰＡＩＲ  ＰＡＴＴＥＲＮは、読出しデータ信号ＲＤ  ＤＡＴＡの破損したデータを訂正するために採用可能なデータを含む。同様に、ＥＣＣ修復ＬＵＴ２３６は、シンドローム信号ＳＹＮＤＲＯＭＥを、誤り訂正符号ＥＣＣ１を復元するために採用可能なＥＣＣ修復パターン信号（図４の「ＥＣＣ  ＲＥＰＡＩＲ  ＰＡＴＴＥＲＮ」）に変換する。
【００５９】
ＸＯＲデータロジック２１６は、データＭＵＸ２２４の他の入力に入力される修復データ値を生成するため、データ修復パターン信号ＤＡＴＡ  ＲＥＰＡＩＲ  ＰＡＴＴＥＲＮ、及び遅延２１０から提供される読出しデータ信号ＲＤ  ＤＡＴＡからのデータに対して、ＸＯＲ機能を実行する。例えば、ＸＯＲデータロジック２１６は、（シンドローム信号ＳＹＮＤＲＯＭＥによって識別される）破損したデータビットをフリップ（「ＸＯＲ」）する。フリップされたデータビットは、データＭＵＸ２２４の他の入力に提供される。ＸＯＲ  ＥＣＣロジック２３２は、修復された誤り訂正符号を生成するため、ＥＣＣ修復パターン信号ＥＣＣ  ＲＥＰＡＩＲ  ＰＡＴＴＥＲＮ、及び遅延２３０から提供される新たな誤り訂正符号に対してＸＯＲ機能を実行する。修復された誤り訂正符号はＥＣＣ  ＭＵＸ２２８の他の入力に提供される。例えば、ＸＯＲ  ＥＣＣロジック２３２は、破損したデータによって影響を受ける誤り訂正符号ビットをフリップして、修復された誤り訂正符号を生成する。修復された誤り訂正符号は、ＥＣＣ  ＭＵＸ２２８の他の入力に提供される。
【００６０】
第３のクロックサイクルの間、誤り状態（例えば、論理「１」）の単一ビット誤り信号ＥＣＣ  ＳＢＥに応答して、読出し−改変−書込みロジック２０８は、ストール信号ＳＴＡＬＬ＿Ｎ及び調整された書込み信号ＭＥＭ  ＷＺ（例えば、論理「０」）をアサートする。また、誤り状態（例えば、論理「１」）の単一ビット誤り信号ＥＣＣ  ＳＢＥの受信に応答して、データＭＵＸ２２４は、ＸＯＲデータロジック２１６からの他の入力を選択し、ＥＣＣ  ＭＵＸ２２８は、ＸＯＲ  ＥＣＣロジック２３２からの他の入力を選択する。また、ＸＯＲデータロジック２１６からデータＭＵＸ２２４に提供された値（修復されたデータ）は、アドレス信号ＭＥＭ  ＡＤＤＲにおいて識別されたアドレスでデータメモリ２０４に書き込まれる。同様に、ＸＯＲ  ＥＣＣロジック２３２からＥＣＣ  ＭＵＸ２２８に提供された値（修復された誤り訂正符号）は、符号メモリ２０６の対応する誤りアドレスに書き込まれる。読出し−改変／書込みロジック２０８は、ストール信号ＳＴＡＬＬ＿Ｎをアサート解除する（例えば、論理「１」）。また、幾つかの例において、読出し／改変／書込みロジック２０８は、調整されたメモリイネーブル信号ＭＥＭ  ＥＺ及び調整された書込み信号ＷＺをアサート解除する（例えば、論理「１」）。
【００６１】
図５はメモリコントローラ２００によって用いられる例示の波形のタイミング図２５０を示す。タイミング図２５０において、クロック信号ＣＬＫ、アドレス信号ＭＥＭ  ＡＤＤＲ、及びデータ信号ＤＡＴＡは、図４の部分書込みデータ信号ＷＲ  ＤＡＴＡに含まれるか、又は、別に提供され得る（図示せず）。タイミング図２５０は、メモリアドレスＡ０へのＤ０の部分書込み及びメモリアドレスＡ１へのＤ１の部分書込みを図示する。
【００６２】
タイミング図１５０において、読出しデータ信号ＲＤ  ＤＡＴＡはデータＱ０を提供する。データＱ０は、データ信号Ｄ０のデータと結合されて、データメモリ２０４に書き込まれる結合データＭ０を形成する。しかし、データＱ０には誤りがあると推定され、これは、ＥＣＣ単一ビット誤り信号ＥＣＣ  ＳＢＥの立ち上がりエッジ（誤り状態を示す）によって示される。そのため、ストール信号ＳＴＡＬＬ＿Ｎがアサートされ、データが訂正されて、データメモリ２０４に再度書き込まれるデータＭ０’が形成される。これによって、ＥＣＣ信号ビット誤り信号ＥＣＣ  ＳＢＥが初期状態に戻る。これにより、メモリアドレスＡ１へのＤ１の第２の部分書込みが開始される。第２の部分書込みにより、データＱ１がデータＤ１と結合されて、メモリアドレスＡ１に書き込まれる結合データＭ１が形成される。
【００６３】
再度図４を参照して、メモリコントローラ２００の一部分を用いることによって、データメモリ２０４から読み出されるデータ（ＲＤ  ＤＡＴＡ）は、部分書込みデータ要求ＰＡＲＴＩＡＬ  ＷＲ  ＤＡＴＡのデータと結合するために、直接用いられる。また、誤りが生じると、この誤りを訂正するために第３のクロックサイクルが用いられる。しかし、多くの応用例において、誤りは極めて稀であり、生じたとしても時間の０．００００１％未満であることがほとんどである。そのため、誤りの検査及び修復が完了する前にＥＣＣメモリ２０２にデータを書き込むことによって、著しい時間節約が実現され得る。したがって、メモリコントローラ２００は、大部分の時間（例えば、約０．９９９９９％以上）、データ及び／又は誤り訂正符号の訂正が必要とされないという仮定の下で動作することによって時間を節約する。
【００６４】
先に説明した上述の構造的及び機能的な特徴に鑑みて、図６及び図７を参照して例示の方法を説明する。説明を簡潔にするために、図６及び図７の例示の方法は、順次実行するように示され説明されるが、（特に言及しない限り）これらの例は図示される順に限定されず、他の例において幾つかの動作が、本明細書で示され説明されるものとは異なる順で、複数回、及び／又は同時になされ得る。また、幾つかの説明される動作が、方法を実装するために任意選択である。
【００６５】
図６は、ＥＣＣメモリに対して部分書込みを実行するための例示の方法３００のフローチャートを図示する。例えば、方法３００は、図１のメモリコントローラ５０及び／又は図２のメモリコントローラ１００などのメモリコントローラによって実行され得る。３１０において、読出し−改変−書込みロジック（例えば、読出し−改変−書込みロジック５８）が、ＥＣＣメモリ（例えば、ＥＣＣメモリ５２）のデータメモリ（例えば、データメモリ５４）に格納されるデータに対する部分書込みデータ要求を受け取る。３２０において、データメモリから読み出されるデータが、メモリ読出し−改変−書込みロジックにおける部分書込みデータ要求のデータと結合されて、結合データを形成する。３３０において、データ修復パターン及びＥＣＣ修復パターン信号が、読み出されたデータ及び対応する誤り訂正符号の正確さの検査に基づいて、ＥＣＣ検査及び修復（例えば、ＥＣＣ検査及び修復６０）によって生成される。読出し−改変−書込みロジックは、この結合をＥＣＣ検査及び修復によって実行される検査と並列に実行する。
【００６６】
３４０において、ＥＣＣ生成器（例えば、ＥＣＣ生成器６４）によって結合データについての誤り訂正符号が生成される。３５０において、書込み制御によって、データ修復パターン信号及び結合データに対してＸＯＲ機能が実行され、ＥＣＣ修復パターン信号及び結合データについての誤り符号に対してＸＯＲ機能が実行されて、修復されたデータ及び修復された誤り訂正符号が生成される。３６０において、修復されたデータ及び修復された誤り訂正符号がＥＣＣメモリに書き込まれる。
【００６７】
図７は、ＥＣＣメモリに対して部分書込みを実行するための例示の方法４００のフローチャートを図示する。例えば、方法４００は、図１のメモリコントローラ５０及び／又は図４のメモリコントローラ２００などのメモリコントローラによって実行され得る。４１０において、読出し−改変−書込みロジック（例えば、読出し−改変−書込みロジック５８）が、ＥＣＣメモリ（例えば、ＥＣＣメモリ５２）のデータメモリ（例えば、データメモリ５４）に格納されるデータに対する部分書込みデータ要求を受け取る。４２０において、データメモリから読み出されるデータが、メモリ読出し−改変−書込みロジックにおける部分書込みデータ要求のデータと結合されて、結合データを形成する。４３０において、結合データについての誤り訂正符号が、ＥＣＣ生成器（例えば、ＥＣＣ生成器６４）によって生成される。４３０において、ＥＣＣ検査及び修復（例えば、ＥＣＣ検査及び修復６０）が、読み出されたデータ及び誤り訂正符号の正確さを検査する。
【００６８】
４４０において、データ及びＥＣＣ修復パターン信号が、読み出されたデータ及び対応する誤り訂正符号の正確さの検査に基づいて、ＥＣＣ検査及び修復によって生成される。４５０において、書込み制御が、結合データ及び修復された誤り訂正符号をＥＣＣメモリに書き込み得る。４６０において、誤りが検出されるかどうかの判定がＥＣＣ検査及び修復によってなされ得る。４６０における判定が否定（例えば、ＮＯ）である場合、方法４００は（次の部分データ書込み要求を処理するために）４１０に戻り得る。４６０における判定が肯定（例えば、ＹＥＳ）である場合、方法４００は４７０に進み得る。また、４６０において、４５０における判定を示すＥＣＣ単一ビット誤り信号が出力され得る。
【００６９】
４７０において、読出し−改変−書込みロジックは、１クロックサイクルにわたってストール信号をアサートし得、それによって、後続の部分書込みデータ要求の受信及び実行が防止され得る。４８０において、書込み制御は、修復されたデータ及びＥＣＣ修復データを生成するためにＸＯＲ機能を適用し得る。４９０において、書込み制御は、修復されたデータ及びＥＣＣの修復されたデータをＥＣＣメモリに書き込む。方法４００は、４１０に戻り、次の部分書込みデータ要求を処理する。
【００７０】
本記載において、「に基づいて」という用語は、少なくとも部分的に基づくことを意味する。特許請求の範囲内で、説明した実施形態における改変が可能であり、他の実施形態が可能である。
【図１】
2020514869.tif 000003
【図２】
2020514869.tif 000004
【図３】
2020514869.tif 000005
【図４】
2020514869.tif 000006
【図５】
2020514869.tif 000007
【図６】
2020514869.tif 000008
【図７】
2020514869.tif 000009
【国際調査報告】
2020514869.tif 000010