(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-02-10
(45)【発行日】2023-02-20
(54)【発明の名称】誤り訂正及びデータスクラビング回路を備えたメモリシステム
(51)【国際特許分類】
G06F 11/10 20060101AFI20230213BHJP
【FI】
G06F11/10 662
(21)【出願番号】P 2021545262
(86)(22)【出願日】2019-10-11
(86)【国際出願番号】 US2019055963
(87)【国際公開番号】W WO2020077283
(87)【国際公開日】2020-04-16
【審査請求日】2021-06-21
(32)【優先日】2018-10-12
(33)【優先権主張国・地域又は機関】US
(32)【優先日】2018-11-05
(33)【優先権主張国・地域又は機関】US
(32)【優先日】2019-08-15
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】521152334
【氏名又は名称】スーパーメム,アイエヌシー.
(74)【代理人】
【識別番号】100091683
【氏名又は名称】▲吉▼川 俊雄
(74)【代理人】
【識別番号】100179316
【氏名又は名称】市川 寛奈
(72)【発明者】
【氏名】ル,ユ
(72)【発明者】
【氏名】リン,チエン-ユ
【審査官】三坂 敏夫
(56)【参考文献】
【文献】特開2006-318461(JP,A)
【文献】米国特許出願公開第2006/0212778(US,A1)
【文献】米国特許出願公開第2017/0161142(US,A1)
【文献】米国特許出願公開第2011/0289386(US,A1)
【文献】特開2005-063441(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 11/08-11/10
(57)【特許請求の範囲】
【請求項1】
個別に、独立動作が可能なデータメモリ及びECCメモリ回路と;
ECCメモリ及びデータメモリに電気的に結合し、同時に、独立してデータアクセス及びデータスクラビング動作を行うことができ、符号語長と関係する符号語を使用してデータメモリの誤りを訂正し、データスクラビング動作中はデータアクセス動作と異なる符号語長を採用するように構成されるデータスクラビング回路と;
環境条件を検出するように構成される環境外乱センサと;
を含
み、
データスクラビング回路が検出された環境条件に基づいて、スクラブデータコマンドを生成する、メモリシステム。
【請求項2】
個別に、独立動作が可能なデータメモリ及びECCメモリ回路と;
ECCメモリ及びデータメモリに電気的に結合し、同時に、独立してデータアクセス及びデータスクラビング動作を行うことができ、符号語長と関係する符号語を使用してデータメモリの誤りを訂正し、データスクラビング動作中はデータアクセス動作と異なる符号語長を採用するように構成されるデータスクラビング回路と;
を含
み、
データスクラビング回路又はホストが、データメモリが保護されるかどうかを判断するように構成され、
ECCメモリが、
データメモリが保護されるとの判断に基づいて、ECC検査ビットを保存し、
データメモリが保護されないとの判断に基づいて、演算データを保存するように構成される、メモリシステム。
【請求項3】
データスクラビング回路が、スクラブデータコマンドを受信すると、データメモリの誤りを訂正するように構成される、請求項1
または2に記載のメモリシステム。
【請求項4】
誤り訂正に用いる符号語長がデータメモリの正常なアクセス中に使用される語長より長い、請求項1
または2に記載のメモリシステム。
【請求項5】
データスクラビング回路が、データバッファ、データスクラビングコントローラ、ECCエンコード回路、及びECCデコード回路を含む、請求項1
または2に記載のメモリシステム。
【請求項6】
データメモリにアクセスするのと同時に、データスクラビング回路がデータメモリの誤りを訂正するように構成される、請求項1
または2に記載のメモリシステム。
【請求項7】
環境条件が温度及び磁場の少なくとも1つを含む、請求項
1に記載のメモリシステム。
【請求項8】
データスクラビング回路が、既知データの変化を検出し、変化の検出に基づいてスクラブデータコマンドを生成するように構成される、請求項1
または2に記載のメモリシステム。
【請求項9】
メモリシステムが
経過時間を追跡し;
経過時間がタイミング閾値より大きいかどうかを判断し、経過時間がタイミング閾値より大きいとの判断に基づいて、スクラブデータコマンドを生成するように構成されるタイマー回路をさらに含む、請求項1
または2に記載のメモリシステム。
【請求項10】
ECCメモリが複数のパーティションを含み、
データメモリが複数のメモリアドレス範囲を含み、各パーティションがデータメモリの1つのメモリアドレス範囲に対応する、請求項1
または2に記載のメモリシステム。
【請求項11】
ECCメモリが複数のECCビットを有する1つのパーティションを含み、
ECCビットの数が、データスクラビングアルゴリズムに関係するECCエンコード方法に基づく、請求項1
または2に記載のメモリシステム。
【請求項12】
ECCメモリが1組のレジスタを含み、
各レジスタが1つのECC符号語に対応し、
各ECC符号語がデータメモリの1つのセクションに対応し、
各レジスタが該セクションの状態を保存する、請求項1
または2に記載のメモリシステム。
【請求項13】
データメモリ及びECCメモリから選択される少なくとも1つが、磁気ランダムアクセスメモリ(MRAM)を含む、請求項1
または2に記載のメモリシステム。
【請求項14】
データメモリ及びECCメモリから選択される少なくとも1つが記憶装置を含み、これは磁気トンネル接合(MTJ)を含み、10-12から10-2の間のビット誤り率を有する記憶装置と比較して、サイズの縮小、保磁場の低下、磁気異方性の低下、及び飽和磁化強度の低下から選択される1つの特性を有する、請求項1
または2に記載のメモリシステム。
【請求項15】
10-12から10-2の間のビット誤り率を有する記憶装置と比較して、MJTがサイズの縮小、保磁場の低下、磁気異方性の低下、及び飽和磁化強度の低下から選択される2つの特性を有する、請求項1
4に記載のメモリシステム。
【請求項16】
データメモリがスタティックランダムアクセスメモリ(SRAM)、ダイナミックランダムアクセスメモリ(DRAM)、又は混載DRAM(eDRAM)を含む、請求項
1
または2に記載のメモリシステム。
【請求項17】
データメモリ及びECCメモリが異なるメモリ回路に含まれる、請求項1
または2に記載のメモリシステム。
【請求項18】
データメモリ及びECCメモリが同一のメモリ回路に含まれる、請求項1
または2に記載のメモリシステム。
【請求項19】
メモリシステムがホストデバイスに電気的に結合する、請求項1
または2に記載のメモリシステム。
【請求項20】
メモリシステム及びECCメモリが記憶装置を含み、これはサイズが20ナノメートルから200ナノメートルの間のMTJ、及び幅長比が1から200の間のMOSトランジスタを含む、請求項1
または2に記載のメモリシステム。
【請求項21】
データスクラビング回路が、
データに対する保護コマンドを受信し、
保護されるデータの各データ語に対して、保護コマンドを受信すると、
データ語に関係するデータ符号語のアドレスを識別し;
該アドレスに基づいて該データ語がデータメモリにあるかどうかを判断し;
該データ語がデータメモリにあると判断すると、データメモリから該データ語を読み出し;
該データ語がデータメモリにないと判断すると、
該データ語を受信し;
該データ語をデータメモリに書き込み;
該データ語のECCエンコード演算を実行し;
ECCエンコード演算に基づいてデータ符号語を生成し;
該アドレスで該データ符号語をデータメモリに書き込み;
ECCエンコード演算に基づいてECC検査ビットを生成し;
生成したECC検査ビットをECCメモリの対応するパーティションに書き込むように構成される、請求項1
または2に記載のメモリシステム。
【請求項22】
データスクラビング回路が、
データスクラブコマンドを受信し;
各スクラブされるデータ語に対して、スクラブデータコマンドを受信すると
データ符号語の開始アドレス、及び
対応するECCメモリパーティションを識別し;
データメモリから開始アドレスに関係するデータ語を読み出し;
ECCメモリから対応するECCメモリパーティションに関係するECC検査ビットを読み出し;
データ語及びECC検査ビットに基づいてECCデコード演算を実行し;
ECCデコード演算に基づいて、データ語が誤りを含むかどうかを判断し;
データ語が誤りを含むと判断すると、データ語の誤り訂正可能ビットで誤りビットを置換し、このうち誤り訂正可能ビットを含むデータ語はスクラブ後のデータ語であり;
データ語が誤りを含まないと判断すると、データ語の誤り訂正可能ビットで誤りビットを置換せず、このうちデータ語はスクラブ後のデータ語であり;
ホストがスクラブ後のデータ語を要求するかどうかを判断し;
ホストがスクラブ後のデータを要求すると判断すると、スクラブ後のデータ語をホストに電気的に結合するメモリコントローラに出力し;
ホストがスクラブ後のデータを要求しないと判断すると、スクラブ後のデータ語を該メモリコントローラに出力しないように構成される、請求項1
または2に記載のメモリシステム。
【請求項23】
メモリシステムの動作方法であって、該メモリシステムが
個別に、独立動作が可能なデータメモリ及びECCメモリ回路と;
ECCメモリ及びデータメモリに電気的に結合するデータスクラビング回路と;を含み、
該方法が、
スクラブデータコマンドを受信すると、データスクラビング回路を使用し、同時に、独立してデータアクセス及びデータスクラビング動作を行うことができ、符号語長と関係する符号語を使用してデータメモリの誤りを訂正し、データスクラビング動作中はデータアクセス動作と異なる符号語長を採用するように構成されること
と;
環境外乱センサを使用して環境条件を検出し、検出された環境条件に基づいて、スクラブデータコマンドを生成することと;
を含む方法。
【請求項24】
メモリシステムの動作方法であって、該メモリシステムが
個別に、独立動作が可能なデータメモリ及びECCメモリ回路と;
ECCメモリ及びデータメモリに電気的に結合するデータスクラビング回路と;を含み、
該方法が、
スクラブデータコマンドを受信すると、データスクラビング回路を使用し、同時に、独立してデータアクセス及びデータスクラビング動作を行うことができ、符号語長と関係する符号語を使用してデータメモリの誤りを訂正し、データスクラビング動作中はデータアクセス動作と異なる符号語長を採用するように構成されること
と;
データメモリが保護されるかどうかを判断し、データメモリが保護されるとの判断に基づいて、ECC検査ビットをECCメモリに保存し、データメモリが保護されないとの判断に基づいて、演算データをECCメモリに保存することと;
を含む方法。
【請求項25】
誤り訂正に用いる符号語長が、データメモリの正常なアクセス中に使用される語長より長い、請求項2
3または24に記載の方法。
【請求項26】
データスクラビング回路が、データバッファ、データスクラビングコントローラ、ECCエンコード回路、及びECCデコード回路を含む、請求項2
3または24に記載の方法。
【請求項27】
データメモリで誤りを訂正するのと同時に、データメモリにアクセスすることをさらに含む、請求項2
3または24に記載の方法。
【請求項28】
環境条件が温度及び磁場の少なくとも1つを含む、請求項2
3に記載の方法。
【請求項29】
既知データの変化を検出し;
変化の検出に基づいて、スクラブデータコマンドを生成することをさらに含む、請求項2
3または24に記載の方法。
【請求項30】
経過時間を追跡し;
経過時間がタイミング閾値より大きいかどうかを判断し;
経過時間がタイミング閾値より大きいとの判断に基づいて、スクラブデータコマンドを生成すること;
をさらに含む、請求項2
3または24に記載の方法。
【請求項31】
ECCメモリが複数のパーティションを含み、
データメモリが複数のメモリアドレス範囲を含み、各パーティションがデータメモリの1つのメモリアドレス範囲に対応する、請求項2
3または24に記載の方法。
【請求項32】
ECCメモリが、データスクラビングアルゴリズムに関係する複数のECCビットを有する1つのパーティションを含み、該方法が該ECCビットを使用してECCエンコード方法を実行することをさらに含む、請求項2
3または24に記載の方法。
【請求項33】
ECCメモリが1組のレジスタを含み、
各レジスタが1つのECC符号語に対応し、
各ECC符号語がデータメモリの1つのセクションに対応し、
各レジスタが該セクションの状態を保存する、請求項2
3または24に記載の方法。
【請求項34】
データメモリ及びECCメモリから選択される少なくとも1つが、磁気ランダムアクセスメモリ(MRAM)を含む、請求項2
3または24に記載の方法。
【請求項35】
データメモリ及びECCメモリから選択される少なくとも1つが記憶装置を含み、これは磁気トンネル接合(MTJ)を有し、ビット誤り率が10-12から10-2の間の記憶装置と比較して、サイズの縮小、保磁場の低下、磁気異方性の低下、及び飽和磁化強度の低下から選択される1つの特性を有する、請求項2
3または24に記載の方法。
【請求項36】
10-12から10-2の間のビット誤り率を有する記憶装置と比較して、該MTJがサイズの縮小、保磁場の低下、磁気異方性の低下、及び飽和磁化強度の低下から選択される2つの特性を有する、請求項3
5に記載の方法。
【請求項37】
データメモリがスタティックランダムアクセスメモリ(SRAM)、ダイナミックランダムアクセスメモリ(DRAM)、又は混載DRAM(eDRAM)を含む、請求項2
3または24に記載の方法。
【請求項38】
データメモリ及びECCメモリが異なるメモリ回路に含まれる、請求項2
3または24に記載の方法。
【請求項39】
データメモリ及びECCメモリが同一のメモリ回路に含まれる、請求項2
3または24に記載の方法。
【請求項40】
メモリシステムがホストデバイスに電気的に結合する、請求項2
3または24に記載の方法。
【請求項41】
データメモリ及びECCメモリが記憶装置を含み、これはサイズが20ナノメートルから200ナノメートルの間のMTJ、及び幅長比が1から200の間のMOSトランジスタを含む、請求項2
3または24に記載の方法。
【請求項42】
データに対する保護コマンドを受信し;
保護されるデータの各データ語に対して、保護コマンドを受信すると、
データ語に関係するデータ符号語のアドレスを識別し;
該アドレスに基づいて該データ語がデータメモリにあるかどうかを判断し;
該データ語がデータメモリにあると判断すると、データメモリから該データ語を読み出し;
該データ語がデータメモリにないと判断すると、
該データ語を受信し;
該データ語をデータメモリに書き込み;
該データ語のECCエンコード演算を実行し;
ECCエンコード演算に基づいてデータ符号語を生成し;
該アドレスで該データ符号語をデータメモリに書き込み;
ECCエンコード演算に基づいてECC検査ビットを生成し;
生成したECC検査ビットをECCメモリの対応するパーティションに書き込むこと
をさらに含む、請求項2
3または24に記載の方法。
【請求項43】
各スクラブされるデータ語に対して、スクラブデータコマンドを受信すると、
データ符号語の開始アドレス、及び
対応するECCメモリパーティションを識別し;
データメモリから開始アドレスに関係するデータ語を読み出し;
ECCメモリから対応するECCメモリパーティションに関係するECC検査ビットを読み出し;
データ語及びECC検査ビットに基づいてECCデコード演算を実行し;
ECCデコード演算に基づいて、データ語が誤りを含むかどうかを判断し;
データ語が誤りを含むと判断すると、データ語の誤り訂正可能ビットで誤りビットを置換し、このうち誤り訂正可能ビットを含むデータ語はスクラブ後のデータ語であり;
データ語が誤りを含まないと判断すると、データ語の誤り訂正可能ビットで誤りビットを置換せず、このうちデータ語はスクラブ後のデータ語であり;
ホストがスクラブ後のデータ語を要求するかどうかを判断し;
ホストがスクラブ後のデータ語を要求すると判断すると、スクラブ後のデータ語をホストに電気的に結合するメモリコントローラに出力し;
ホストがスクラブ後のデータ語を要求しないと判断すると、スクラブ後のデータ語をメモリコントローラに出力しないこと;
をさらに含む、請求項2
3または24に記載の方法。
【請求項44】
AIエッジコンピューティング(edge-AI)システム、データセンタのニューラルネットワークシステム、モノのインターネットシステム、自動車エレクトロニクスシステム、マイクロコントローラシステム、モバイル通信システム、プログラマブル演算システム、ハードウェアセキュリティシステム、テレマティクスサービスシステム、生物医学電子デバイス、ロボット、及びドローンから選択される1つに含まれる、請求項1~2
2のいずれか1項に記載のメモリシステム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は一般的に演算メモリに関し、より具体的に、本発明は演算メモリの誤り訂正に用いられる装置及び方法に関する。
【背景技術】
【0002】
磁気ランダムアクセスメモリ(MRAM)、相変化メモリ(PCM)、抵抗変化型ランダムアクセスメモリ(RRAM)及び強誘電体メモリ(FRAM)(登録商標)は、いくつかの不揮発性メモリ技術であり、FLASH(登録商標)と比較して、より速いデータ書込速度及びより高い書き換え耐久性を有することができる。例えば、高性能MRAMは、モデル最適化後、複雑なデータ構造を必要とするエッジAIコンピューティング(Edge-AI)アプリケーションに用いることができる。
【0003】
高性能を達成するため、MRAMのような不揮発性メモリには回路に対する多くの独特な課題が存在する。特に、比較的高電圧での読出動作について、読出性能はリードディスターブエラーにより制限され、書込性能はより高電圧の動作で、ハードブレイクダウン(hard break down)により制限される。もう1つの障害は、比較的高い温度下又は比較的高温イベント中は、より高いレベルの誤り訂正を必要とし、そうでなければ長期的なデータ保持を達成することができない可能性があることである。これらの状況で、2ビット誤り訂正回路を使用することができるが、回路は読出及び書込動作に対して追加の遅延を生じさせる。
【0004】
このほか、これらの不揮発性RAM技術及び従来の揮発性メモリ技術におけるいくつかの技術は環境外乱に対して敏感な可能性がある。例えば、DRAMのデータは高温外向性電離放射線に対して敏感であり、MRAMのデータは高温又は大磁場により誤りが生じる可能性がある。
【0005】
電力は電子デバイスの設計に対する主な制限要素である可能性があり、さらにメモリ密度が増加し続けるのに伴い、メモリデバイスは総電力の増加し続ける部分を消費する。メモリ動作の電力消費を減少させると、データ保持及び読出書込動作に対して、誤り率が増加する。
【0006】
適切な誤り訂正強度を達成するため、大面積の冗長回路を使用する必要がある可能性がある。例えば、低遅延のハミング符号(hamming code)を使用すると、シングルビットエラーから8ビットワードを保護するために5つの誤り訂正符号(ECC)ビットを必要とする可能性がある。別の典型例として、Bose、Chaudhuri及びHocquenghem(BCH)符号又は低密度パリティ検査(LDPC)符号を使用すると、比較的少ないECC検査ビットを利用して、比較的大きなデータブロック(例えば1024ビット又はより多くのビット)を保護することができる。しかしこれらのECC符号は比較的複雑なエンコード及びデコード動作を必要とし、さらに性能に影響を及ぼす可能性がある。
【0007】
コストを低下させるため、及びインメモリコンピューティング(PIM)を実現させるため、マルチレベルセル(MLC)デバイス(例えば浮遊ゲート又はチャージトラップFLASHデバイス、eDRAMキャパシタ、RRAM、PCM、アナログメモリ)を使用し、マルチステート又は連続的なアナログ特性でマトリクス状の被乗数を表すことにより、メモリで演算動作を実行することができる。しかしながら、大部分のこれらの装置には動作過程でドリフトが出現し、マトリクス状の被乗数の値が次第に変化する。装置のドリフトが閾値を超えた場合、簡単に「読出及びリカバリ」動作を採用して正確な数値を保持することはできない。
【発明の概要】
【発明が解決しようとする課題】
【0008】
本発明は、誤り訂正機能を備えたメモリシステム及び該メモリシステムの動作方法を提示することを目的とする。
【課題を解決するための手段】
【0009】
いくつかの実施例において、メモリシステムは
データメモリと;
ECCメモリと;
ECCメモリ及びデータメモリに電気的に結合するデータスクラビング回路とを含む。データスクラビング回路は、スクラブデータコマンドを受信すると、データメモリの誤りを訂正するように構成することができる。誤り訂正に用いる符号語長は、データメモリの正常なアクセス中に使用される語長より長くてよい。いくつかの実施例において、メモリシステムは第1ビット誤り率に関係する第1メモリ回路、及び第2ビット誤り率に関係する第2メモリ回路を含む。いくつかの実施例において、メモリシステムは誤り訂正可能なマルチレベルセル(MLC)アレイを含む。
【0010】
いくつかの実施例において、メモリシステムは
データメモリと;
ECCメモリと;
ECCメモリ及びデータメモリに電気的に結合するデータスクラビング回路とを含む。
【0011】
いくつかの実施例において、データスクラビング回路はスクラブデータコマンドを受信すると、データメモリの誤りを訂正するように構成される。
【0012】
いくつかの実施例において、誤り訂正に用いる符号語長はデータメモリの正常なアクセス中に使用される語長より長い。
【0013】
いくつかの実施例において、データスクラビング回路はデータバッファ、データスクラビングコントローラ、ECCエンコード回路、及びECCデコード回路を含む。
【0014】
いくつかの実施例において、データメモリにアクセスするのと同時に、データスクラビング回路はデータメモリの誤りを訂正するように構成される。
【0015】
いくつかの実施例において、メモリシステムは環境条件を検出するように構成される環境外乱センサをさらに含む。データスクラビング回路は検出された環境条件に基づいて、スクラブデータコマンドを生成する。
【0016】
いくつかの実施例において、環境条件は温度及び磁場の少なくとも1つを含む。
【0017】
いくつかの実施例において、データスクラビング回路は既知データの変化を検出し、変化の検出に基づいてスクラブデータコマンドを生成するように構成される。
【0018】
いくつかの実施例において、メモリシステムはタイマー回路をさらに含む。タイマー回路は経過時間を追跡し;
経過時間がタイミング閾値より大きいかどうかを判断し、経過時間がタイミング閾値より大きいとの判断に基づいて、スクラブデータコマンドを生成するように構成される。
【0019】
いくつかの実施例において、ECCメモリは複数のパーティションを含み、データメモリは複数のメモリアドレス範囲を含み、各パーティションはデータメモリの1つのメモリアドレス範囲に対応する。
【0020】
いくつかの実施例において、ECCメモリは複数のECCビットを有する1つのパーティションを含み、ECCビットの数は、データスクラビングアルゴリズムに関係するECCエンコード方法に基づく。
【0021】
いくつかの実施例において、ECCメモリは1組のレジスタを含む。各レジスタは1つのECC符号語に対応し、各ECC符号語はデータメモリの1つのセクションに対応し、各レジスタは該セクションの状態を保存する。
【0022】
いくつかの実施例において、データメモリ及びECCメモリから選択される少なくとも1つは、磁気ランダムアクセスメモリ(MRAM)を含む。
【0023】
いくつかの実施例において、データメモリ及びECCメモリから選択される少なくとも1つは記憶装置を含む。これは磁気トンネル接合(MTJ)を含み、10-12から10-2の間のビット誤り率を有する記憶装置と比較して、サイズの縮小、保磁場(coercive field)の低下、磁気異方性の低下、及び飽和磁化強度の低下から選択される1つの特性を有する。
【0024】
いくつかの実施例において、10-12から10-2の間のビット誤り率を有する記憶装置と比較して、MJTはサイズの縮小、保磁場の低下、磁気異方性の低下、及び飽和磁化強度の低下から選択される2つの特性を有する。
【0025】
いくつかの実施例において、データメモリはスタティックランダムアクセスメモリ(SRAM)、ダイナミックランダムアクセスメモリ(DRAM)、又は混載DRAM(eDRAM)を含む。
【0026】
いくつかの実施例において、データスクラビング回路又はホストは、データメモリが保護されるかどうかを判断するように構成される。ECCメモリはデータメモリが保護されるとの判断に基づいて、ECC検査ビットを保存し、データメモリが保護されないとの判断に基づいて、演算データを保存するように構成される。
【0027】
いくつかの実施例において、データメモリ及びECCメモリは異なるメモリ回路に含まれる。
【0028】
いくつかの実施例において、データメモリ及びECCメモリは同一のメモリ回路に含まれる。
【0029】
いくつかの実施例において、メモリシステムはホストデバイスに電気的に結合する。
【0030】
いくつかの実施例において、データメモリ及びECCメモリは記憶装置を含み、これはサイズが20ナノメートルから200ナノメートルの間のMTJ、及び幅長比が1から200の間のMOSトランジスタを含む。
【0031】
いくつかの実施例において、データスクラビング回路は、データ保護コマンドを受信し;
保護されるデータの各データ語に対して、保護コマンドを受信すると、データ語に関係するデータ符号語のアドレスを識別し;
該アドレスに基づいて該データ語がデータメモリにあるかどうかを判断し;
該データ語がデータメモリにあると判断すると、データメモリから該データ語を読み出し;
該データ語がデータメモリにないと判断すると、該データ語を受信し;
該データ語をデータメモリに書き込み;
該データ語のECCエンコード演算を実行し;
ECCエンコード演算に基づいてデータ符号語を生成し;
該アドレスでデータ符号語をデータメモリに書き込み;
ECCエンコード演算に基づいてECC検査ビットを生成し;
生成したECC検査ビットをECCメモリの対応するパーティションに書き込むように構成される。
【0032】
いくつかの実施例において、データスクラビング回路は、スクラブデータコマンドを受信し;
各スクラブされるデータ語に対して、スクラブデータコマンドを受信すると、データ符号語の開始アドレス及び対応するECC保存パーティションを識別し;
データメモリから開始アドレスに関係するデータ語を読み出し;
ECCメモリから対応するECCメモリパーティションに関係するECC検査ビットを読み出し;
データ語及びECC検査ビットに基づいてECCデコード演算を実行し;
ECCデコード演算に基づいて、データ語が誤りを含むかどうかを判断し;
該データ語に誤りを含むと判断すると、データ語の誤り訂正可能ビットで誤りビットを置換し、このうち誤り訂正可能ビットを含むデータ語はスクラブ後のデータ語であり;
データ語が誤りを含まないと判断すると、データ語の誤り訂正可能ビットで誤りビットを置換せず、このうちデータ語はスクラブ後のデータ語であり;ホストがスクラブ後のデータ語を要求するかどうかを判断し;
ホストがスクラブ後のデータを要求すると判断すると、スクラブ後のデータ語をホストに電気的に結合するメモリコントローラに出力し;
ホストがスクラブ後のデータを要求しないと判断すると、スクラブ後のデータ語をメモリコントローラに出力しないように構成される。
【0033】
いくつかの実施例において、メモリシステムの動作方法を開示する。該メモリシステムは
データメモリと;
ECCメモリと;
ECCメモリ及びデータメモリに電気的に結合するデータスクラビング回路とを含む。該方法はスクラブデータコマンドを受信すると、データスクラビング回路を使用してデータメモリの誤りを訂正することを含む。
【0034】
いくつかの実施例において、誤り訂正に用いる符号語長は、データメモリの正常なアクセス中に使用される語長より長い。
【0035】
いくつかの実施例において、データスクラビング回路はデータバッファ、データスクラビングコントローラ、ECCエンコード回路、及びECCデコード回路を含む。
【0036】
いくつかの実施例において、該方法はデータメモリで誤りを訂正するのと同時に、データメモリにアクセスすることをさらに含む。
【0037】
いくつかの実施例において、該方法は環境外乱センサを使用して環境条件を検出し;検出された環境条件に基づいて、スクラブデータコマンドを生成することをさらに含む。
【0038】
いくつかの実施例において、環境条件は温度及び磁場の少なくとも1つを含む。
【0039】
いくつかの実施例において、該方法は既知データの変化を検出し;
変化の検出に基づいてスクラブデータコマンドを生成することをさらに含む。
【0040】
いくつかの実施例において、該方法は経過時間を追跡し;
経過時間がタイミング閾値より大きいかどうかを判断し、経過時間がタイミング閾値より大きいとの判断に基づいて、スクラブデータコマンドを生成することをさらに含む。
【0041】
いくつかの実施例において、ECCメモリは複数のパーティションを含み、データメモリは複数のメモリアドレス範囲を含み、各パーティションはデータメモリの1つのメモリアドレス範囲に対応する。
【0042】
いくつかの実施例において、ECCメモリはデータスクラビングアルゴリズムに関係する複数のECCビットを有する1つのパーティションを含む。該方法は、該ECCビットを使用してECCエンコード方法を実行することをさらに含む。
【0043】
いくつかの実施例において、ECCメモリは1組のレジスタを含む。各レジスタは1つのECC符号語に対応し、各ECC符号語はデータメモリの1つのセクションに対応し、各レジスタは該セクションの状態を保存する。
【0044】
いくつかの実施例において、データメモリ及びECCメモリから選択される少なくとも1つは、磁気ランダムアクセスメモリ(MRAM)を含む。
【0045】
いくつかの実施例において、データメモリ及びECCメモリから選択される少なくとも1つは記憶装置を含む。これは磁気トンネル接合(MTJ)を含み、10-12から10-2の間のビット誤り率を有する記憶装置と比較して、サイズの縮小、保磁場の低下、磁気異方性の低下、及び飽和磁化強度の低下から選択される1つの特性を有する。
【0046】
いくつかの実施例において、10-12から10-2の間のビット誤り率を有する記憶装置と比較して、MTJはサイズの縮小、保磁場の低下、磁気異方性の低下、及び飽和磁化強度の低下から選択される2つの特性を有する。
【0047】
いくつかの実施例において、データメモリはスタティックランダムアクセスメモリ(SRAM)、ダイナミックランダムアクセスメモリ(DRAM)、又は混載DRAM(eDRAM)を含む。
【0048】
いくつかの実施例において、該方法は、データメモリが誤り訂正保護されるかどうかを判断し;
データメモリが誤り訂正保護される設定に基づいて、ECC検査ビットをECCメモリに保存し;
データメモリが誤り訂正保護されない設定に基づいて、演算データをECCメモリに保存することをさらに含む。
【0049】
いくつかの実施例において、データメモリ及びECCメモリは異なるメモリ回路に含まれる。
【0050】
いくつかの実施例において、データメモリ及びECCメモリは同一のメモリ回路に含まれる。
【0051】
いくつかの実施例において、メモリシステムはホストデバイスに電気的に結合する。
【0052】
いくつかの実施例において、データメモリ及びECCメモリは記憶装置を含み、これはサイズが20ナノメートルから200ナノメートルの間のMTJ、及び幅長比が1から200の間のMOSトランジスタを含む。
【0053】
いくつかの実施例において、該方法は、データ保護コマンドを受信し;
保護されるデータの各データ語に対して、保護コマンドを受信すると、データ語に関係するデータ符号語のアドレスを識別し;
該アドレスに基づいて該データ語がデータメモリにあるかどうかを判断し;
該データ語がデータメモリにあると判断すると、データメモリから該データ語を読み出し;
該データ語がデータメモリにないと判断すると、該データ語をデータメモリに書き込み;
該データ語に対してECCエンコード演算を実行し;
ECCエンコード演算に基づいてデータ符号語を生成し;
該アドレスでデータ符号語をデータメモリに書き込み;
ECCエンコード演算に基づいてECC検査ビットを生成し;
生成したECC検査ビットをECCメモリの対応するパーティションに書き込むことをさらに含む。
【0054】
いくつかの実施例において、該方法は、各スクラブされるデータ語に対して、スクラブデータコマンドを受信すると、データ符号語の開始アドレス及び対応するECCメモリパーティションを識別し;
データメモリから開始アドレスに関係するデータ語を読み出し;
ECCメモリから対応するECCメモリパーティションに関係するECC検査ビットを読み出し;
データ語及びECC検査ビットに基づいてECCデコード演算を実行し;
ECCデコード演算に基づいて、データ語が誤りを含むかどうかを判断し;
データ語が誤りを含むと判断すると、データ語の誤り訂正可能ビットで誤りビットを置換し、このうち誤り訂正可能ビットを含むデータ語はスクラブ後のデータ語であり;
データ語が誤りを含まないと判断すると、データ語の誤り訂正可能ビットで誤りビットを置換せず、このうちデータ語はスクラブ後のデータ語であり;ホストがスクラブ後のデータ語を要求するかどうかを判断し;
ホストがスクラブ後のデータを要求すると判断すると、スクラブ後のデータ語をホストに電気的に結合するメモリコントローラに出力し;
ホストがスクラブ後のデータを要求しないと判断すると、スクラブ後のデータ語をメモリコントローラに出力しないことをさらに含む。
【0055】
いくつかの実施例において、メモリシステムは、AIエッジコンピューティング(edge-AI)システム、データセンタのニューラルネットワークシステム、モノのインターネットシステム、自動車エレクトロニクスシステム、マイクロコントローラシステム、モバイル通信システム、プログラマブル演算システム、ハードウェアセキュリティシステム、テレマティクスサービスシステム、生物医学電子デバイス、ロボット、及びドローンから選択される1つに含まれる。
【0056】
いくつかの実施例において、メモリシステムは
第1ビット誤り率に関係する第1メモリ回路と;
第2ビット誤り率に関係し、第1ビット誤り率は第2ビット誤り率より大きい第2メモリ回路と;
第1及び第2回路中に保存されるデータ語とを含む。データ語は、第1ビット誤り率に関係する第1パーティション、及び第2ビット誤り率に関係する第2パーティションを含み、データ語の第1パーティションは第1メモリ回路に保存され、データ語の第2パーティションは第2メモリ回路に保存される。
【0057】
いくつかの実施例において、メモリシステムは第1メモリ回路及び第2メモリ回路に電気的に結合するデータスクラビング回路をさらに含む。データスクラビング回路は、第1メモリ回路を制御して、第1誤り率を第3誤り率まで減少させ、データスクラビング回路は、第2メモリ回路を制御して、第2誤り率を第4誤り率まで減少させる。第1ビット誤り率の減少幅は、第2ビット誤り率の減少幅より大きい。
【0058】
いくつかの実施例において、第1メモリ回路は第1記憶装置を含み、これは第1サイズの第1磁気トンネル接合(MTJ)、及び第1チャネル幅長(W/L)比の第1MOSトランジスタを含む。第2メモリ回路は第2記憶装置を含み、これは第2サイズの第2MTJ、及び第2W/L比の第2MOSトランジスタを含む。第1サイズは第2サイズより大きく、第1W/L比は第2W/L比より大きい。
【0059】
いくつかの実施例において、第1メモリ回路は記憶装置を含み、これはサイズが40ナノメートルから200ナノメートルの間のMTJ、及びW/L比が2から200の間のMOSトランジスタを含む。
【0060】
いくつかの実施例において、第2メモリ回路は記憶装置を含み、これはサイズが20ナノメートルから100ナノメートルの間のMTJ、及びW/L比が1から100の間のMOSトランジスタを含む。
【0061】
いくつかの実施例において、第1メモリ回路は第1読出電圧、第1検出時間及び第1ワード線(WL)電圧を使用し、第2メモリ回路は第2読出電圧、第2検出時間及び第2WL電圧を使用する。第1読出電圧は第2読出電圧より大きく、第1検出時間は第2検出時間より長く、第1WL電圧は第2WL電圧より大きい。
【0062】
いくつかの実施例において、第1メモリ回路は第1書込電圧、第1書込時間及び第1WL電圧を使用し、第2メモリ回路は第2書込電圧、第2書込時間及び第2WL電圧を使用する。第1書込電圧は第2書込電圧より大きく、第1書込時間は第2書込時間より長く、第1WL電圧は第2WL電圧より大きい。
【0063】
いくつかの実施例において、浮動小数点形式で第1パーティションは符号ビット、指数ビット及び仮数ビットの上位部分を含む。
【0064】
いくつかの実施例において、整数形式で第1パーティションは符号ビット及び上位ビットを含む。
【0065】
いくつかの実施例において、浮動小数点形式で第2パーティションは仮数ビットの下位部分を含む。
【0066】
いくつかの実施例において、整数形式で第2パーティションは下位ビットを含む。
【0067】
いくつかの実施例において、メモリシステムの動作方法を開示し、該メモリシステムは第1メモリ回路及び第2メモリ回路を含む。該方法は、第1ビット誤り率に基づいて、メモリシステムに保存されるデータ語の第1パーティションを判断し;
第2ビット誤り率に基づいて、メモリシステムに保存されるデータ語の第2パーティションを判断し、第1ビット誤り率は第2ビット誤り率より大きく;
データ語の第1パーティションを第1メモリ回路に保存し;
データ語の第2パーティションを第2メモリ回路に保存し、第1メモリ回路は第1ビット誤り率に関係し、第2メモリ回路は第2ビット誤り率に関係することを含む。
【0068】
いくつかの実施例において、該方法は、第1メモリ回路を制御して、第1誤り率を第3誤り率まで減少させ;
第2メモリ回路を制御して、第2誤り率を第4誤り率まで減少させ、第1ビット誤り率の減少幅は第2ビット誤り率の減少幅より大きいことをさらに含む。
【0069】
いくつかの実施例において、第1メモリ回路は第1記憶装置を含み、これは第1サイズのMTJ、及び第1チャネルW/L比の第1MOSトランジスタを含む。第2メモリ回路は第2記憶装置を含み、これは第2サイズの第2MTJ、及び第2W/L比の第2MOSトランジスタを含む。第1サイズは第2サイズより大きく、第1W/L比は第2W/L比より大きい。
【0070】
いくつかの実施例において、第1メモリ回路は記憶装置を含み、これはサイズが40ナノメートルから200ナノメートルの間のMTJ、及びW/L比が2から200の間のMOSトランジスタを含む。
【0071】
いくつかの実施例において、第2メモリ回路は記憶装置を含み、これはサイズが20ナノメートルから100ナノメートルの間のMTJ、及びW/L比が1から100の間のMOSトランジスタを含む。
【0072】
いくつかの実施例において、該方法は、第1メモリ回路で第1読出電圧、第1検出時間及び第1WL電圧を使用し;
第2メモリ回路で第2読出電圧、第2検出時間及び第2WL電圧を使用し、第1読出電圧は第2読出電圧より大きく、第1検出時間は第2検出時間より長く、第1WL電圧は第2WL電圧より大きいことをさらに含む。
【0073】
いくつかの実施例において、該方法は、第1メモリ回路で第1書込電圧、第1書込時間及び第1WL電圧を使用し;
第2メモリ回路で第2書込電圧、第2書込時間及び第2WL電圧を使用し、第1書込電圧は第2書込電圧より大きく、第1書込時間は第2書込時間より長く、第1WL電圧は第2WL電圧より大きいことをさらに含む。
【0074】
いくつかの実施例において、浮動小数点形式で第1パーティションは符号ビット、指数ビット及び仮数ビットの上位部分を含む。
【0075】
いくつかの実施例において、整数形式で第1パーティションは符号ビット及び上位ビットを含む。
【0076】
いくつかの実施例において、浮動小数点形式で第2パーティションは仮数ビットの下位部分を含む。
【0077】
いくつかの実施例において、整数形式で第2パーティションは下位ビットを含む。
【0078】
いくつかの実施例において、メモリシステムは、AIエッジコンピューティング(edge-AI)システム、データセンタのニューラルネットワークシステム、モノのインターネットシステム、自動車エレクトロニクスシステム、マイクロコントローラシステム、モバイル通信システム、プログラマブル演算システム、ハードウェアセキュリティシステム、テレマティクスサービスシステム、生物医学電子デバイス、ロボット、及びドローンから選択される1つに含まれる。
【0079】
いくつかの実施例において、メモリシステムは、
データ入力と;
マルチレベルセル(MLC)アレイと;
MLCアレイ及びデータ入力に電気的に結合する書込回路と;
書込回路に電気的に結合するグレイコードからバイナリへのデコーダ回路と;
MLCアレイに電気的に結合する読出回路と;
読出回路及びデータ入力に電気的に結合するバイナリからグレイコードへのエンコーダ回路と;
ECC検査ビットを保存するように構成されるメモリ回路と;
メモリ回路及びバイナリからグレイコードへのエンコーダ回路に電気的に結合するECCエンコーダと;
メモリ回路及びグレイコードからバイナリへのエンコーダ回路に電気的に結合し、リカバリしたデータを出力するように構成されるECCデコーダと;
メモリシステムのデータのリカバリを制御するように構成されるデータスクラビングコントローラとを含む。
【0080】
いくつかの実施例において、MLCアレイは2つ超の安定した物理状態を有するメモリセル回路を含む。
【0081】
いくつかの実施例において、メモリセル回路は、NORセルを構成する浮遊ゲートFLASHセル、NANDセルを構成する浮遊ゲートFLASHセル、NORセルを構成するチャージトラップFLASHセル、NANDセルを構成するチャージトラップFLASHセル、相変化メモリ(PCM)セル、及び抵抗変化型メモリ(RRAM)セルから選択される1つである。
【0082】
いくつかの実施例において、ECCエンコーダ及びデコーダは、ハミング符号、BCH符号、リード-ソロモン符号、及びLDPC符号から選択される1つにおいて使用される。
【0083】
いくつかの実施例において、メモリ回路及びMLCアレイは異なる集積回路に位置する。
【0084】
いくつかの実施例において、メモリ回路はMLCアレイの所定パーティションに位置する。
【0085】
いくつかの実施例において、データスクラビングコントローラは、環境外乱を検出するか、又はホストからコマンドを受信すると、所定間隔でデータスクラビング動作を起動するように構成される。
【0086】
いくつかの実施例において、MLCに対してデータスクラビングを行う方法は、MLCからバイナリコード又はアナログ値で表示されるデータを読み出し;
データをグレイコードに変換し;
ECC検査ビットを保存するように構成されるメモリ回路から対応する検査ビットデータを読み出し;
グレイコード形式のデータにおける訂正可能誤りの位置を演算して訂正し;
訂正後のデータをバイナリコード又は訂正後のアナログ値に変換し;
書込回路により訂正後のデータでMLCのデータを書き換えることを含む。
【0087】
いくつかの実施例において、MLCアレイは2つ超の安定した物理状態を有するメモリセル回路を含む。
【0088】
いくつかの実施例において、メモリセル回路は、NORセルを構成する浮遊ゲートFLASHセル、NANDセルを構成する浮遊ゲートFLASHセル、NORセルを構成するチャージトラップFLASHセル、NANDセルを構成するチャージトラップFLASHセル、相変化メモリ(PCM)セル、及び抵抗変化型メモリ(RRAM)セルから選択される1つである。
【0089】
いくつかの実施例において、該方法は、ハミング符号、BCH符号、リード-ソロモン符号、及びLDPC符号から選択される1つを用いてECCエンコード及びデコードを行うことをさらに含む。
【0090】
いくつかの実施例において、メモリ回路及びMLCアレイは異なる集積回路に位置する。
【0091】
いくつかの実施例において、メモリ回路はMLCアレイの所定パーティションに位置する。
【0092】
いくつかの実施例において、該方法は環境外乱を検出するか、又はホストからコマンドを受信すると、所定間隔でデータスクラビング動作を起動することをさらに含む。
【0093】
いくつかの実施例において、メモリシステムは、AIエッジコンピューティング(edge-AI)システム、データセンタのニューラルネットワークシステム、モノのインターネットシステム、自動車エレクトロニクスシステム、マイクロコントローラシステム、モバイル通信システム、プログラマブル演算システム、ハードウェアセキュリティシステム、テレマティクスサービスシステム、生物医学電子デバイス、ロボット、及びドローンから選択される1つに含まれる。
【0094】
以下、図面を参考にして、実施例により本発明を説明する。審査官は本発明の技術的特徴をより理解することができる。
【図面の簡単な説明】
【0095】
【
図1】
図1は、実施例に基づいてメモリシステムを含むシステムを示す。
【
図2】
図2は、実施例に基づいてデータメモリ及びECCメモリを示す。
【
図3】
図3は、実施例に基づいてメモリシステムの動作方法を示す。
【
図4】
図4は、実施例に基づいてメモリシステムの動作方法を示す。
【
図5】
図5は、実施例に基づいてメモリシステムを示す。
【
図6】
図6は、実施例に基づいてデータ語のパーティションを示す。
【
図7】
図7は、実施例に基づいてメモリシステムの動作方法を示す。
【
図8】
図8は、実施例に基づいてメモリシステムを示す。
【
図9】
図9は、実施例に基づいてデータリカバリを示す。
【
図10】
図10は、実施例に基づいてメモリシステムの動作方法を示す。
【
図11】
図11は、実施例に基づいてメモリシステムを含むシステムを示す。
【
図12】
図12は、実施例に基づいてメモリシステムを含む演算装置の典型例を示す。
【発明を実施するための形態】
【0096】
以下の実施例の説明において、図を説明の一部分として参照し、例を挙げて実行可能な特定の実施例を示す。開示した実施例の範囲を逸脱せず、当然、その他の実施例を使用し、さらに構造を変更することができる。
【0097】
図1は、メモリシステム100を含むメモリシステムを示す。いくつかの実施例において、メモリシステム100は、ホスト160及びメモリコントローラ170に電気的に結合する。いくつかの典型例において、メモリシステム100は単一のダイに1GBを超える保存空間を含むことができる。
【0098】
いくつかの典型例において、ホスト160又はメモリコントローラ170は、スクラブデータコマンドを生成してメモリシステム100でデータメモリに対するデータスクラビングを起動するか、又は保護コマンドを生成してメモリシステム100でデータメモリに対する保護を起動することができる。いくつかの典型例において、ホスト160又はメモリコントローラ170によりスクラブデータコマンドを生成、起動する条件をプログラム化することができる。いくつかの典型例において、ホスト160又はメモリコントローラ170により保護コマンドを生成、起動する条件をプログラム化することができる。
【0099】
模範的な利点として、メモリシステム100は高効率の誤り訂正及びデータスクラビングを達成することができる。例えば、以下に説明するように、メモリシステム100の模範的な実施例は、開示したスクラブデータコマンドを使用しないメモリシステムと比較して、特定の条件(例えば変化中の環境)に対して電力消費を2から4倍低下させることができ、実質的な性能を低下させる、又は面積を増やす必要はない。開示したスクラブデータコマンド又は開示した保護コマンドを使用しないメモリシステムは、スクラブ又は保護を必要としない可能性がある(例えばビット誤り率がシステムの要求を十分に満たす)ときも、データスクラビング又は保護を行う。この種のメモリシステムは区別せずに保護又はデータスクラビングを行うため(例えばシステムの電源のオン又はオフ中のみ)、動作の効率低下を引き起こす可能性がある(例えば電力消費が比較的高い、速度が比較的遅い)。いくつかの典型例において、効率を高めることにより、書込動作に用いるスピントランスファートルク(STT)を使用するMRAMの設計に対する要求が緩和される可能性がある。別の典型例として、比較的簡単なMTJ製造過程(例えば装置の製造コストを低下させることができる)を使用して、データ保持誤りを減少させることができる。別の典型例として、メモリシステム100を使用すると、MRAMデバイスは要求が緩和されることにより、線形サイズの縮小は70%に及ぶことができる。
【0100】
本文で使用する「スクラブデータコマンド」は、データメモリのデータスクラビング動作を起動するように構成されるコマンドであり、特定条件を満たすとの判断に基づいて、スクラブデータコマンドが生成され、データスクラビング回路に伝送される。この種の特定条件は、正常動作中に識別される条件、例えば環境条件、時間の経過、及び既知データの変化(本文の説明の通り)を含むことができる。正常動作は、(これに限定されないが)読出及び書込動作、列のアクティブ化及び予備充電動作、リフレッシュ動作、セクター書込及び消去動作、欠陥修復動作、及びウェアレベリング(wear-leveling)動作を含む。これらの特定条件を満たさないとき、スクラブデータコマンドは生成されず、不必要なデータのスクラブを防止する。例えば、従来のメモリシステムでは、システムの電源のオン又はオフ中に自動でデータをスクラブすることができる。開示したメモリシステムでは、スクラブデータコマンドを受信した場合のみ、データをスクラブすることができ;電源のオン又はオフは、スクラブデータコマンドを生成するのに不十分である。
【0101】
本文中で使用する「保護コマンド」は、データメモリのデータ保護を起動するように構成されるコマンドである。特定条件を満たすとの判断に基づいて、保護コマンドが生成され、データスクラビング回路に伝送される。これらの特定条件を満たさないとき、保護コマンドは生成されず、不必要なエンコードを防止する。例えば、従来のメモリシステムでは、予め設定することによりデータを保護することができる。開示したメモリシステムでは、保護コマンドを受信した場合のみ、データを保護することができる。
【0102】
例えば、メモリシステム100に含まれる高性能MRAMは、高効率で保護又はスクラブを行うことができ、さらにAIエッジコンピューティング(edge-AI)(例えばスマートスピーカ、ドライブレコーダ、ドローン、ロボット、自動運転車)又はニューラルネットワークアプリケーションにより適しており、これらはより速く、より高効率なメモリ(例えば高帯域幅及び低遅延、ニューラルネットワークモデル圧縮後も高性能を有する、高温でも高性能を有する、絶えずデータアクセスを行う)を必要とする。非決定性のメモリ技術である書込メカニズムは、高いビット誤り率(BER)に苦しんでいる。メモリシステム100は開示したデータスクラビング及び保護方法を使用し、自動運転車などのシステムでより安定した動作を有利に達成することができる。
【0103】
メモリシステム100は、データスクラビング回路110、データメモリ120及びECCメモリ130を含むことができる。いくつかの実施例において、データメモリ120はコンピュータシステムのランダムアクセスメモリ(RAM)である。いくつかの実施例において、データメモリ120及びECCメモリ130は不揮発性RAMである。
【0104】
いくつかの実施例において、データスクラビング回路110はデータスクラビングを実行するが、データメモリ120の読出又は書込アクセスに影響を及ぼさない。メモリのデータアクセスと同時に、データ保護又はデータスクラビングを実行することにより、メモリの誤り(例えば磁気トンネル接合(MTJ)の誤り)を減少させることができ、重要回路の遅延を増やす必要はない(例えば比較的高い読出及び書込速度でデータをスクラブする、定格の読出及び書込速度に影響を及ぼさない状況でデータをスクラブする)。例えば、遅延の減少によりメモリシステムが毎秒TBの帯域幅で動作することを許容することができる。
【0105】
いくつかの実施例において、データスクラビング回路110はECCデコーダ回路、及びECC符号に関係する符号語内の現在の位置を一時保存するのに用いられるローカルレジスタを含む。いくつかの実施例において、データメモリ120は通常メモリバンクと呼ばれる複数のサブ回路に分割される。各メモリバンクは、独立してその他のメモリバンクで動作するように構成することができる。
【0106】
典型例として、保護又はデータスクラビング動作中に、メモリシステム100はホスト(例えばAIエッジコンピューティング(edge-AI)システム)からデータアクセスコマンドを受信することができる。進行中のデータ保護又はデータスクラビング動作が1つのメモリバンクで実行されるとき、データアクセスコマンドは別のデータメモリバンクでの動作(例えばデータの読出、データの書込)に関係することができる。このような状況下で、進行中のデータ保護又はデータスクラビング動作はデータアクセスと同時に行うことができる。
【0107】
進行中のデータ保護又はデータスクラビング動作が同一のデータメモリバンクで実行されるとき、データアクセスコマンドはデータメモリバンクでの動作(例えばデータの読出、データの書込)に関係することができる。このような状況下で、データスクラビングコントローラ113はデータ保護又はデータスクラビング動作を一時停止することができ、データメモリバンクの制御は読出動作又は書込動作などのデータアクセス動作に移る。データアクセス動作の完了後、データスクラビングコントローラはデータメモリバンクを再び制御し、さらに一時停止したデータ保護又はデータスクラビング動作は中断する前のECC符号語の位置(例えば対応アドレス)で再開する。いくつかの典型例において、この期間に、データスクラビングコントローラ113は別のメモリバンクでデータ保護又はデータスクラビング動作を実行することができる。
【0108】
いくつかの典型例において、データスクラビング回路又はホスト(例えば中央処理装置(CPU)、グラフィック処理装置(GPU)、システムオンチップ(SoC)、プログラマブルプロセッサ、特定用途向け集積回路、又はマイクロコントローラ)は、データメモリが保護されるかどうかを判断するように構成され(例えばデータスクラビング回路又はホストがECCメモリのレジスタを検査し、対応するセクションが誤り訂正保護されるかどうかを調べる)、ECCメモリはデータメモリが保護されるとの判断に基づいて、ECC検査ビットを保存し、データメモリが保護されないとの判断に基づいて演算データを保存するように構成される。例えば、データメモリの演算データが保護されない(例えばECCを必要としない)場合、ECCメモリは追加の演算データを保存するのに用いることができる。図に示すように、データスクラビング回路はECCメモリ及びデータメモリに電気的に結合することができる。模範的な利点として、製品が劣悪な環境で使用されることを望まない場合(例えば高温又は高磁場の環境でないウェアラブルデバイス)、ECCメモリのデータ保存容量をホストシステムに解放することができる。
【0109】
いくつかの典型例において、ECCメモリは最初に演算データを保存し、さらにデータ保護コマンドが起動すると、ECCメモリを更新してECC検査ビットを保存するように構成される。これらの典型例において、演算データをデータメモリの空白領域、システムの別のメモリデバイスに移動させるか、またはデータネットワークを介して遠隔メモリデバイスに移動させることができる。これらを実行することができない場合、メモリシステムはホストにエラーメッセージを伝送することができる。
【0110】
いくつかの実施例において、データメモリ及びECCメモリは異なるメモリ回路に含まれる。例えば、データメモリ及びECCメモリは異なるチップに含まれる。いくつかの実施例において、データメモリ及びECCメモリは同一のメモリ回路に含まれる。例えば、データメモリ及びECCメモリは同一のチップに含まれる。別の典型例として、データメモリ及びECCメモリは同一のメモリアレイ中に含まれ;例えば、データメモリはアレイの第1部分に含まれ、ECCメモリはアレイの第2部分に含まれる。
【0111】
本文に記載の高効率の誤り訂正及びデータスクラビングの利点を達成することにより、記憶装置は書き換え耐久性又は性能の増強、電力消費の低下、又はこれらの望ましい特性の組合せを構成することができる。これはメモリシステムの誤り率を低下させることを必要とせずに、達成することができる(例えば開示したシステムの高効率の誤り訂正及びデータスクラビングは、これらの望ましい特性に関係する漸増する誤り率を少なくとも相殺することができる)。
【0112】
例えば、書込動作の電圧レベルを5から50%低下させることができ、メモリシステムの誤り率を低下させる必要がない状況で、記憶装置の書き換え耐久性を増強させ、電力消費を低下させる(例えば追加の回路設計を使用せず、書込動作中の故障確率を低下させた状況で、書込電圧又は書込時間はデバイス及び回路のミスマッチ並びに/又はランダムSTT効果を軽減させるのに十分である)。別の典型例として、記憶装置の読出動作の電圧レベルを5から50%増加させることができるか、又は読出時間を5から50%減少させることができ、メモリシステムの誤り率が低下しない状況で、読出性能を増強させる(例えば追加の回路設計を使用しない状況で、読出電圧又は読出時間はデバイス及び回路のミスマッチを軽減させるのに十分であり、読出ディスターブエラーを減少させることができる)。いくつかの典型例において、1MBアレイに用いると、読出性能は毎秒7GB超まで向上させることができる。
【0113】
いくつかの実施例において、データメモリは一部の磁気ランダムアクセスメモリ(MRAM)を含むことができる。いくつかの実施例において、ECCメモリも一部のMRAMを含むことができる。いくつかの典型例において、データメモリ及びECCメモリから選択される少なくとも1つに採用される記憶装置は、磁気トンネル接合(MTJ)を含み、10-12から10-2の間のビット誤り率を有する記憶装置と比較して、サイズの縮小、保磁場の低下、磁気異方性の低下、及び飽和磁化強度の低下から選択される1つの特性を有する。いくつかの典型例において、データメモリ及びECCメモリは記憶装置を含み、これはサイズが20ナノメートルから200ナノメートルの間のMTJ、及び幅長比が1から200の間のMOSトランジスタを含む。
【0114】
いくつかの実施例において、データメモリはスタティックランダムアクセスメモリ(SRAM)、ダイナミックランダムアクセスメモリ(DRAM)、又は混載DRAM(eDRAM)を含むことができる。いくつかの実施例において、ECCメモリはSRAM、DRAM、又はeRAMを含むことができる。例えば、SRAM、DRAM又はeRAMは記憶装置を含むことができ、これはサブミクロン(例えば28ナノメートル及びそれ以下)技術で実装され、10-16から10-10の間のビット誤り率を有する。従って、メモリシステム100はSRAM、DRAM又はeDRAMテクノロジが比較的小さなテクノロジノードに縮小されることを有利に許容することができ、電力、面積、又は性能もしくはソフトエラー率(例えば読出ディスターブ、書込エラー、リテンションエラー)などの最適化を犠牲にする必要はない。このほか、メモリシステム100を使用すると、比較的小さなテクノロジノードのSRAM、DRAM又はeDRAMはより広い温度区間で動作することができ、さらにより耐放射線性である。
【0115】
いくつかの実施例において、データスクラビング回路はスクラブデータコマンドを受信すると、メモリの誤りを訂正するように構成される。データメモリがスクラブを必要としない可能性がある(例えばビット誤り率(例えば使用可能なビット誤り率(UBER))がシステムの要求を十分に満たすことができる)ときも、開示したスクラブデータコマンドを利用しないメモリシステムはデータをスクラブする。この種のメモリシステムは、区別せずにデータをスクラブするため、効率が低下する(例えば電力消費が比較的高い、速度が低下する)可能性がある。スクラブデータコマンドを受信してデータメモリの誤りを訂正するように構成されるデータスクラビング回路を含むことにより、効果的にデータをスクラブすることができ、不必要なスクラビングを防止する。
【0116】
いくつかの実施例において、誤り訂正に用いる符号語長はデータメモリの正常なアクセス中に使用される語長より長い。例えば、正常なアクセス中の語は、これらの語がECC保護されるように、ECC符号語の一部分である。つまり、正常な読出動作中(例えば正常なアクセス語部分にアクセスする)に、すべてのECC符号語を使用することはない。書込動作を処理する多くの方式があり、例えば、符号語長は8192ビットの長さを有することができ、非符号語は64ビットの長さを有することができる。
【0117】
いくつかの実施例において、データメモリ120は複数ページに分割され、各ページはECC符号語長(例えば8192ビット)の長さを有する。ホスト(例えばAIエッジコンピューティング(edge-AI)システム)がデータ語(例えば長さが64ビットの語)を有する書込コマンドを送信するとき、データスクラビングコントローラ113は各ページに含まれる追加のビット(例えばページマーカビット)を使用してデータ語の目標ページに「未保護」と記す。データスクラビングコントローラ113が「未保護」ページでデータスクラビング動作を起動するとき、対応するECCメモリ130中のECC検査ビットデータをすぐに使用することはない。反対に、データスクラビングコントローラは保護動作を先に実行して、新しいページデータに対応する1組のECC検査ビットを生成する。さらにデータスクラビング動作を実行する前に、ページマーカビットを「未保護」から「保護」に更新する。
【0118】
模範的な利点として、誤り訂正における比較的長い符号語長は効率を上昇させる。つまり比較的少数のECC検査ビットで、原ビット誤り率(RBER)を必要なUBERに修正することができる。従って、メモリシステムのサイズを縮小させることができ、さらにコストを低下させることができる。
【0119】
いくつかの実施例において、データスクラビング回路110はデータバッファ111、ECCエンジン112、及びデータスクラビングコントローラ113を含む。データスクラビング回路は、さらに符号語長に関係する符号語を使用してデータメモリの誤りを訂正するように構成することができる。
【0120】
例えば、データスクラブコマンドを起動するとき、データメモリ120からECC符号に関係するすべてのデータ語(例えばECCページ)を読み出し、さらにECCメモリ130から該ECCページに関係するECC検査ビットを読み出す。データバッファ111を介して、データ語及びECC検査ビットをECCエンジン112に送信する。いくつかの典型例において、データバッファ111はファーストインファーストアウト(FIFO)メモリを構成することができる。いくつかの典型例において、ECCエンジン112がまさにECCデコード動作を実行しているとき、データメモリ120から読み出したデータ語の正常なデータアクセス(例えばホスト又はメモリコントローラからの読出要求)を一時停止することができる。ECCエンジン112がECCページをデコードすると、訂正可能誤りが検出される。ECCエンジンが検出した誤りの数量及び位置をデータスクラビングコントローラ113に送信することができる。正確なデータをデータメモリ120中の対応する位置に書き込む(例えばデータスクラビングコントローラを使用する)ことにより、すべての検出した誤りを訂正する。
【0121】
図2は、実施例に基づいてデータメモリ及びECCメモリを示す。いくつかの実施例において、ECCメモリ230は複数のパーティションを含み、データメモリは複数のメモリアドレス範囲を含み、各パーティションはデータメモリの1つのメモリアドレス範囲に対応する。例えば、ECCメモリはECC検査ビットパーティション231を含み、データメモリはECC符号語221を含む。ECC検査ビットパーティション231は、ECC符号語221に関係する1つのメモリアドレス範囲に対応することができる。
【0122】
いくつかの実施例において、ECC検査ビットパーティションは複数のECCビットを含み、さらにECCビットの数量はデータスクラビングアルゴリズムに関係するECCエンコード方法に基づく。例えば、データスクラビングアルゴリズムはBose、Chaudhuri及びHocquenghem(BCH)符号及び低密度パリティ検査(LDPC)符号の1つである。1つの典型例において、BCH(8640、8192、32)符号中で、448個のECCビットは8192ビット中の各ECC符号語(例えばECCページ)に関係し、さらに訂正可能なECC符号語中の誤りは32個に及ぶ。模範的な利点として、このエンコードを実装するため、およそ5.2%の面積を消費してECC検査ビットを保存する必要がある。比較すると、64ビット語で2ビットECCを使用するシステムでは、20%を超える面積を消費する必要がある。
【0123】
例えば、BCHエンコードの典型例を以下に説明する。データスクラビング回路を使用して、BCHエンコード及びデコードを実行することができる。n-k次元状態ベクトルはR(t)=(rn-k-1(t),rn-k-1(t),…,r1(t),r0(t))Tであり、式中ri(t)はi個目のリマインダレジスタの時間tにおける状態を表し、μ(t)は時間tにおけるシングルビット入力を表す。R(t+1)は以下のように表すことができる。
(1)R(t+1)=A・R(t)+b・μ(t)
【0124】
式中、マトリクスAは(2)
【数1】
であり、ベクトルbは
(3)b=(g
n-k-1,g
n-k-1,…,g
1,g
0)
T
であり、
再帰的に、R(t+p)は
(4)R(t+p)=
A
p・R(t)+(A
p-1b,A
p-2b,…,b)・(μ(t),μ(t+1),…,μ(t+p-1))
T=
A
p・R(t)+B
p・U
p(t)
と計算することができる。
【0125】
いくつかの実施例において、ECCメモリは1組のレジスタを含む。各レジスタは、1つのECC符号語に対応する。各ECC符号語は、データメモリの1つのセクションに対応する。各レジスタは該セクションの状態を保存する。例えば、レジスタはページマーカビットの保存に用いることができる。
【0126】
いくつかの実施例において、データメモリ220はデータメモリ120と大体似ており、さらにECCメモリ230はECCメモリ130と大体似ている。ブロックでデータメモリ及びECCメモリを示すが、本発明の範囲を逸脱せず、データメモリ及びECCメモリは当然1つ又は複数のメモリアレイ中に含まれることができる。
【0127】
いくつかの実施例において、メモリシステム100は環境外乱センサ140を含み、これは環境条件を検出し、検出された環境条件に基づいてスクラブデータコマンドを生成するように構成される。いくつかの実施例において、環境条件は温度及び磁場から選択される少なくとも1つを含む。いくつかの実施例において、環境外乱センサはデータスクラビングコントローラ(例えばデータスクラビングコントローラ113)中に含まれる。
【0128】
例えば、環境外乱センサは温度が閾値(例えば閾値ビット誤り率に関係する閾値温度)に達したことを検出する。温度が閾値に達したことを検出すると、データスクラビングコントローラはスクラブデータコマンドを生成し、データメモリのデータスクラビングを起動する。
【0129】
別の典型例として、環境外乱センサは磁場が閾値(例えば閾値ビット誤り率に関係する閾値磁場強度)に達したことを検出する。磁場が閾値に達したことを検出すると、データスクラビングコントローラがスクラブデータコマンドを生成し、データメモリのデータスクラビングを起動する。
【0130】
いくつかの実施例において、データスクラビング回路は既知データ(例えばホスト又はメモリシステム100の既知のデータ、所定のデータ(例えば0及び1を交互に有するチェッカーボード))中の変化を検出し、変化の検出に基づいてスクラブデータコマンドを生成するように構成される。例えば、MRAMは高磁場(例えば100から1000エルステッドより大きな磁場)に対して敏感であり、さらに高磁場は既知データに関係する誤りの確率を増加させることができる。
【0131】
別の典型例として、メモリは高温(例えば摂氏150度を超える温度)に敏感な可能性があり、さらに高温はメモリに関係する誤りの確率を増加させることができる。環境外乱センサは温度が特定温度の閾値に達したことを検出することができ、スクラブデータコマンドの生成を起動して高温による誤りデータを訂正する。
【0132】
メモリに関係する誤りの確率を増加させる可能性がある環境条件の検出に用いられる模範的なパラメータとして磁場及び温度を使用するが、環境外乱センサは当然その他の条件を検出することもできる。例えば、環境外乱センサは電離放射線を検出することができ、電離放射線は電荷ベースメモリ回路のデータ損失を引き起こすことができる。別の典型例において、環境外乱センサは機械的応力の偏位を検出することができる。
【0133】
模範的な利点として、センサ及びプログラマブル閉ループ制御はメモリ(例えばMRAM)を管理して、高温、温度変動、磁場又はその他の外乱による影響を軽減させることができる。従って、補償回路を追加しない状況で、比較的高温度下又は比較的広い温度範囲で動作して、耐久性を増加させることができる。例えば、およそ室温では、環境外乱センサはいかなるデータスクラビングも必要でないと判断することができる(例えば0%のメモリ動作がスクラブに用いられる)。摂氏125度のとき、60%の固有の保持能力(intrinsic retention capability)を有する1つのメモリデバイス(MTJを含む)は、2%の追加の読み書き動作で、すべてのデータをスクラブすることができる可能性がある。比較すると、その他のシステムはおよそ20%を超える追加動作を必要とし、そうでなければ類似の状況下で誤りを訂正することができない。
【0134】
いくつかの実施例において、メモリシステム100はタイマー回路150を含み、これは経過時間を追跡し、経過時間がタイミング閾値より大きいかどうかを判断し、経過時間がタイミング閾値より大きいとの判断に基づいてスクラブデータコマンドを生成するように構成される。例えば、メモリのビット誤り率(BER)及び時間は比例して増加し(例えばBERは累積する)、さらにタイミング閾値は閾値BER(例えばシステムのBERの要求)に対応する。タイマー回路150は開始時間(すなわちECC検査ビットが生成された時間)後の時間の経過(例えば1マイクロ秒から100時間の間)を追跡し、さらにデータメモリに累積したBERが、ECC方法で訂正することができない程度を超える前に、スクラブデータコマンドの生成を起動することができる。いくつかの実施例において、タイマー回路150はデータスクラビングコントローラ(例えばデータスクラビングコントローラ113)中に含まれる。
【0135】
図3は、実施例に基づいてメモリシステムの動作方法300を示す。方法300は、データ保護のコマンドを受信する工程302を含む。例えば、データスクラビング回路110、ホスト160又はメモリコントローラ170から保護コマンドを受信する。別の典型例として、データメモリが保護を必要とすると判断すると(例えば温度閾値、磁場閾値、タイミング閾値、ビット誤り率閾値に達する)、保護コマンドを受信する。
【0136】
模範的な利点として、メモリシステムは高効率の誤り訂正及びデータスクラビングを達成することができる。例えば、開示したスクラブデータコマンド又は開示した保護コマンドを利用しないメモリシステムと比較して、メモリシステム100の模範的な実施例は、実質的な性能を低下させる、又は面積を増加させることなく、電力消費を4倍低下させることができる。開示した保護コマンドを利用しないメモリシステムは、保護を必要としない可能性があるとき(例えばビット誤り率がすでにシステムの要求を満たすとき)もデータを保護する。この種のメモリシステムは区別せずにデータを保護するため、効率が好ましくない可能性がある(例えば電力消費が比較的高い、速度が遅い)。例えば、保護コマンドを受信しなかったとき、データスクラビング回路又はECC検査ビットを保存するメモリの一部あるいはすべては電源がオフされる。データ保護コマンドを使用することにより、効果的にデータを保護することができ、不必要な保護を防止する。
【0137】
いくつかの実施例において、保護コマンドを受信すると、方法300を実行し、保護コマンドは保護されるデータの各データ語に対する(工程304)。例えば、各保護されるデータ語はデータメモリ120の一部分でよく、例えば比較的敏感なビット誤り率を有するデータメモリの一部分である。別の典型例として、各保護されるデータ語はデータメモリ120の全体でよい。いくつかの実施例において、複数の語を順番に保護する。いくつかの実施例において、複数の語を並行して保護する。
【0138】
いくつかの実施例において、方法300は、該データ語に関係するデータ符号語に用いられるアドレスを識別する工程306を含む。例えば、保護コマンドは保護されるデータに関係するアドレス範囲を含む。別の典型例として、ホストがECC符号語221に関係するアドレスを識別する(例えばホストがメモリのシステム機能に対して比較的重要な部分を判断する)。
【0139】
いくつかの実施例において、方法300は、アドレスに基づいてデータ語がデータメモリにあるかどうかを判断する工程308を含む。例えば、データ語がデータメモリにあるかどうかを指示するビットを保護コマンド中に加える。別の典型例として、データスクラビング回路110は保護されるデータ語がデータメモリ120中に保存されるかどうかを判断する。
【0140】
いくつかの実施例において、方法300は、データ語がデータメモリにあると判断すると、データメモリからデータ語を読み出す工程310を含む。例えば、読み出したデータはバッファメモリに保存される。別の典型例として、データスクラビング回路110は保護されるデータ語がデータメモリ120中に保存されると判断し、データメモリ120から保護されるデータ語を読み出す。
【0141】
いくつかの実施例において、方法300は、データ語がデータメモリにないと判断すると、データ語を受信して(工程312a)データ語をデータメモリに書き込む(工程312b)工程312を含む。例えば、データスクラビング回路110はデータ語がデータメモリ120中に保存されていないと判断し、データ語をデータメモリ120中に書き込む。いくつかの実施例において、書き込まれる、及び保護されるデータ語はホスト160から提供される。
【0142】
いくつかの実施例において、方法300は、データ語のECCエンコード演算を実行する工程314を含む。例えば、データスクラビングアルゴリズムに基づいて、保護されるデータ語をデータスクラビングアルゴリズムに関係するECCエンコード演算によりエンコードする。
【0143】
いくつかの実施例において、方法300は、ECCエンコード演算に基づいてデータ符号語を生成する工程316を含む。例えば、ECCエンコード演算に基づいてECC符号語221を生成する。
【0144】
いくつかの実施例において、方法300は、該アドレスでデータ符号語をデータメモリに書き込む工程318を含む。例えば、該アドレスでECC符号語221をデータメモリ220に書き込む。
【0145】
いくつかの実施例において、方法300は、ECCエンコード演算に基づいてECC検査ビットを生成する工程320を含む。例えば、ECCエンコード演算に基づいて、ECC検査ビットパーティション221に関係するECC検査ビットを生成する。
【0146】
いくつかの実施例において、方法300は、生成したECC検査ビットをECCメモリの対応するパーティションに書き込む工程322を含む。例えば、ECC検査ビットをECC検査ビットパーティション221に書き込む。いくつかの実施例において、保護コマンドの指示によりデータメモリの保護を完了した後、完了信号を送信してホストに通知する。
【0147】
いくつかの実施例において、集積回路のパッケージの前に方法300を実行して、集積回路のメモリに書き込まれたデータを保護する。模範的な利点として、方法300を使用するメモリシステムは、長期保存が必要であるとき、又は標準的なパッケージ方法の過程(例えば260℃、90秒)を経過する必要があるとき、それぞれ利点を有する。例えば、MRAM及びPCMなどの不揮発性メモリに保存されるデータはパッケージ後、比較的高い誤り率を有する。
【0148】
いくつかの実施例において、集積回路を長時間保存した後、方法300を実行して、集積回路のメモリに書き込まれたデータを保護する。生成されたECC検査ビットは保存中に累積した誤りの除去に用いることができ、製品のデータ保持の仕様を高める。
【0149】
図4は、実施例に基づいてメモリシステムの動作方法400を示す。方法400は、スクラブデータコマンドを受信する工程402を含む。例えば、データスクラビング回路110、ホスト160又はメモリコントローラ170からスクラブデータコマンドを受信する。別の典型例として、閾値(例えば温度閾値、磁場閾値、タイミング閾値、ビット誤り率閾値)に達すると、データスクラビングコントローラはスクラブデータコマンドを送信する。
【0150】
模範的な利点として、メモリシステムは高効率の誤り訂正及びデータスクラビングを達成することができる。例えば、開示したスクラブデータコマンドを利用しないメモリシステムと比較して、記載したように、メモリシステム100の模範的実施例は、特定条件に対して、実質的な性能を犠牲にする、又は面積を増加させる必要なく、電力消費を4倍低下させることができる。開示したスクラブデータコマンドを利用しないメモリシステムは、スクラビングを必要としないとき(例えばビット誤り率がすでにシステムの要求に達するとき)も、データのスクラビング又は保護を行う可能性がある。区別せずにデータをスクラブするため、この種のメモリシステムは効率が好ましくない(例えば電力消費が比較的高い、速度が遅い)可能性がある。例えば、一部若しくは全てのデータスクラビング回路又はECC検査ビットを保存するメモリは、スクラブデータコマンドを受信しなかったとき電源をオフすることができる。スクラブデータコマンドを使用することにより、不必要なスクラブを行わず、効果的にデータをスクラブすることができる。
【0151】
いくつかの実施例において、スクラブデータコマンドを受信すると、方法400を実行し、スクラブデータコマンドは各スクラブされるデータ語に対する(工程404)。例えば、各スクラブされるデータ語はデータメモリ120の一部分でよく、例えば比較的敏感なビット誤り率を有するデータメモリの一部分である。別の典型例として、各スクラブされるデータ語はデータメモリ120の全体でよい。いくつかの実施例において、複数のスクラブされる語を順番にスクラブする。いくつかの実施例において、複数のスクラブされる語を並行してスクラブする。
【0152】
いくつかの実施例において、方法400は、データ符号語の開始アドレス(工程406a)及び対応するECCメモリパーティション(工程406b)を識別する工程406を含む。例えば、スクラブデータコマンドにスクラブされるデータに関係するアドレスを含む。別の典型例として、ホストがECC符号語221に関係するアドレス、及びECC検査ビットパーティション231を識別する(例えばホストがメモリのシステム機能に対して最も重要な部分を判断する)。
【0153】
いくつかの実施例において、方法400は、データメモリから開始アドレスに関係するデータ語を読み出す工程408を含む。例えば、読み出したデータはバッファメモリに保存される。別の典型例として、データメモリからデータ符号語に関係するデータ語を読み出す。
【0154】
いくつかの実施例において、方法400は、対応するECCメモリパーティションに関係するECC検査ビットをECCメモリから読み出す工程410を含む。例えば、ECC検査ビットパーティション231に関係するECC検査ビットをECCメモリ230から読み出す。
【0155】
いくつかの実施例において、方法400は、データ語及びECC検査ビットに基づいて、ECCデコード演算を実行する工程412を含む。例えば、データスクラビングアルゴリズムに基づいて、ECCエンジン112はデータ語、及びECC検査ビットパーティション231に関係するECC検査ビットによりECCデコード演算を実行する。
【0156】
いくつかの実施例において、方法400は、ECCデコード演算に基づいてデータ語に誤りが存在するかどうかを判断する工程414を含む。例えば、データスクラビングアルゴリズム及びECCデコード演算に基づいて、ECCエンジン112はデータ語が誤りを有するかどうかを判断する。
【0157】
いくつかの実施例において、方法400は、データ語に誤りが存在すると判断すると、データ語の誤り訂正可能ビットで誤りビットを置換し、このうち誤り訂正可能ビットを含むデータ語はスクラブ後のデータ語である工程416を含む。例えば、ECCエンジン112がデータ語に誤りが存在し、さらにデータ語が誤り訂正可能ビットを含むと判断する。対応としては、データ語の誤り訂正可能ビットで置換して訂正し、さらに訂正後のデータ語はスクラブ後のデータ語である。
【0158】
いくつかの実施例において、方法400は、データ語が誤りを含まないと判断すると、データ語の誤り訂正可能ビットで誤りビットを置換せず、このうちデータ語はスクラブ後のデータ語である工程418を含む。例えば、ECCエンジン112がデータ語に誤りを含まないと判断し、対応としては、データ語のいかなるビットも置換しない。
【0159】
いくつかの実施例において、方法400は、ホストがスクラブ後のデータ語を要求するかどうかを判断する工程420を含む。例えば、ホスト160の要求はコンピュータシステム(メモリシステム100及びホスト160を含む)のプロセッサからのデータ要求である。
【0160】
いくつかの実施例において、方法400は、ホストがスクラブ後のデータを要求すると判断すると、スクラブ後のデータ語をホストと電気的に結合するメモリコントローラに出力する工程422を含む。例えば、ホストがデータ要求すると判断すると(例えばメモリコントローラにより)、スクラブ後のデータ語をメモリコントローラに出力してホストに提供し、さらにスクラブ後のデータ語はデータメモリに留まる。
【0161】
いくつかの実施例において、方法400は、ホストがスクラブ後のデータを要求しないと判断すると、スクラブ後のデータ語をメモリコントローラに出力しない工程424を含む。例えば、ホストがデータ要求しないと判断すると(例えばメモリコントローラにより)、スクラブ後のデータ語はデータメモリに留まり、メモリコントローラに出力されない。いくつかの実施例において、スクラブデータコマンドに基づいてデータメモリをスクラブした後、完了信号を送信してホストに通知する。
【0162】
データ語の異なる部分は、誤りに対して異なる感度を有することができる。例えば、下位ビット中の誤りと比較して、整数の最上位ビット(MSB)の誤りはより重大な結果を引き起こし、これは表される数値に関係する。このほか、多くの現代の演算アプリケーションプログラム(例えば機械学習並びに動画及び画像処理)は本質的に誤り耐性を有し、システム全体で保守的な誤り訂正を強制的に実行するのは不必要な可能性がある。しかしながら、従来のメモリ回路は同一のデータ語のすべての部分に従って、同じ誤り率を有するように設計される可能性がある。これらの従来のメモリ回路において、低誤り耐性に設計されたメモリ回路を使用して比較的多くの誤り耐性データを保存するため、電力及び面積を浪費する。
【0163】
図5は、実施例に基づいてメモリシステム500を示す。いくつかの実施例において、メモリシステム500はメモリシステム100中に含まれる。いくつかの実施例において、メモリシステム500は機械学習或いは動画又はイメージ処理システム中に含まれることができる。
【0164】
いくつかの実施例において、メモリシステム500は第1メモリ回路502及び第2メモリ回路504を含む。第1メモリ回路502は第1ビット誤り率に関係することができ、第2メモリ回路504は第2ビット誤り率に関係することができ、さらに第1ビット誤り率は第2ビット誤り率より大きくてよい。例えば、第1ビット誤り率は10-16から10-12の間であり、第2ビット誤り率は10-12から10-6の間である。
【0165】
いくつかの実施例において、第1メモリ回路502は誤り訂正エンコード回路、データスクラビング回路、冗長回路、またはこれらの回路の組合せなどのデータ保護回路を含み、第1誤り率を第3誤り率まで低下させる。例えば、システムは第1誤り率を有するデータの一部分を容認することができない可能性があり;
該データ部分は第1メモリ回路に保存することができ、第1誤り率を第3誤り率まで低下させ、システムの要求を満たす。いくつかの実施例において、第1メモリ回路502は書込動作の後、データを検証して誤り率を低下させるように構成される回路、又はビット反転(bit flip)を防止して有効電力(active power)を減少させるように構成される回路を含む。
【0166】
いくつかの実施例において、第2メモリ回路504は誤り訂正エンコード回路、データスクラビング回路、冗長回路、またはこれらの回路の組合せなどのデータ保護回路を含み、誤り率を第2誤り率から第4誤り率まで低下させる。いくつかの実施例において、第2メモリ回路504は、書込動作の後、データを検証して誤り率を低下させるように構成される回路、又はビット反転を防止して有効電力を減少させるように構成される回路を含む。いくつかの実施例において、第1メモリ回路502中の相当する回路と比較して、第2メモリ回路504中に含まれるこれらの回路は、より少ない電力を消費し、比較的小さな面積を有することができる。
【0167】
いくつかの実施例において、データ語508は第1メモリ回路及び第2メモリ回路に保存される。データ語508は、第1ビット誤り率に関係する第1パーティション510及び第2ビット誤り率に関係する第2パーティション512を含むことができる。データ語508の第1パーティション510は第1メモリ回路502中に保存することができ、データ語508の第2パーティション512は第2メモリ回路504中に保存することができる。
【0168】
いくつかの実施例において、各パーティションの大きさはホスト(例えばホスト160)が判断する。例えば、8ビット符号付き整数データに対して、ホストは符号ビット及び3つの最上位ビットが比較的低いビット誤り率に関係する第1パーティションに保存されること、並びに4つの最下位ビットが比較的高いビット誤り率に関係する第2パーティションに保存されることを判断することができる。ビットの有効性はソフトウェアで使用される値の書式により判断することができ、結果をホストに伝達することができる。例えば、最上位ビットから最下位ビットまでの順番は、符号ビット、指数ビット、仮数のMSBからLSBでよい。
【0169】
いくつかの実施例において、変化した条件に対して各パーティションの大きさを更新する。例えば、メモリ回路に影響を及ぼす磁場及び温度条件に基づいて、各パーティションの大きさを更新することができる。別の典型例として、第1メモリ回路の1つのパーティションがもはや重要でないと判断すると、該パーティションを第2メモリ回路に移動させることができる。
【0170】
データ語508は、アドレス516に関係することができる。いくつかの実施例において、アドレス516はメモリ回路のパーティションが保存される位置に対応する。データ語は実質的に異なるパーティションに保存されることができるが、メモリシステム500(例えばホスト、メモリコントローラ)のユーザにとって、データ語はアドレス516に関係する1つの位置に保存されるように見受けられる。
【0171】
いくつかの実施例において、メモリシステムは第3メモリ回路506を含む。データ語508は第3パーティション514を含むことができ、さらに第3パーティションは第3メモリ回路506中に保存することができる。データ語508は第3パーティションを含まなくてよく、データ語508は第1メモリ回路及び第2メモリ回路に保存することができる。
【0172】
2つのメモリ回路及び3つのメモリ回路と、2つのパーティション及び3つのパーティションとを含む実施例を説明する。しかし、本発明の範囲を逸脱せず、メモリシステムは当然より多く又はより少ないメモリ回路を含むことができ、さらにデータ語はそれぞれのメモリ回路に保存されるパーティションをより多く又はより少なく含むことができる。
【0173】
いくつかの実施例において、メモリシステム500は第1メモリ回路及び第2メモリ回路に電気的に結合するデータスクラビング回路516を含む。データスクラビング回路516は第1メモリ回路502を制御することができ、第1誤り率を第3誤り率まで低下させ、さらに第2メモリ回路504を制御することができ、第2誤り率を第4誤り率まで低下させる。いくつかの実施例において、第1ビット誤り率の低下幅は第2ビット誤り率の低下幅より大きい。例えば、第3誤り率は10-20から10-16の間にあり、第4誤り率は10-16から10-10の間にある。いくつかの実施例において、データスクラビング回路516及びその他の処理回路は、メモリ回路と同一チップ上にある。いくつかの実施例において、データスクラビング回路516及びその他の処理回路はメモリ回路と異なるチップ上にある。
【0174】
模範的な利点として、電力及び面積を減少させることができる。例えば、比較的多くの回路面積又は電力を消費するリソースは比較的高いビット誤り率又は比較的高い誤り感度を有するパーティション(例えばメモリの最も重要な部分)に適切に方向づけられ、比較的少ないリソースは、比較的低いビット誤り率又は比較的低い誤り感度を有するパーティションに適切に方向付けられ(例えばビット誤り率が比較的低い、又は誤り感度が比較的低いパーティションに用いられるリソースを浪費することはない);
これにより電力を節約して誤り訂正回路の設計面積を減少させる。別の典型例として、ニューラルネットワークアプリケーション、機械学習及び動画又は画像処理システムなどの演算アプリケーションは誤り耐性を有し、さらにデータのいくつかの部分は誤りに対して敏感でない。データの比較的低い誤り感度を有する部分を分割することにより、メモリ回路の電力及び面積の消費を減少させることができる。
【0175】
別の模範的な利点として、ニューラルネットワークパラメータなどの大きな数値データに対して、メモリシステムの設計はデータ語内のビットの誤りに対する感度に基づいて効果的に分割することができ、これにより不必要な演算リソースの使用を防止する。
【0176】
いくつかの実施例において、第1メモリ回路502は第1記憶装置を含み、これは第1サイズの第1磁気トンネル接合(MTJ)、及び第1チャネル幅長(W/L)比の第1MOSトランジスタを含む。第2メモリ回路504は第2記憶装置を含み、これは第2サイズの第2MTJ、及び第2W/L比の第2MOSトランジスタを含む。第1サイズは第2サイズより大きく、第1W/L比は第2W/L比より大きい。
【0177】
例えば、第1メモリ回路は記憶装置を含み、これはサイズが40ナノメートルから200ナノメートルの間のMTJ、及びW/L比が2から200の間のMOSトランジスタを含む。別の典型例として、第2メモリ回路は記憶装置を含み、これはサイズが20ナノメートルから100ナノメートルの間のMTJ、及びW/L比が1から100の間のMOSトランジスタを含む。
【0178】
模範的な利点として、面積を減少させることができる。例えば、比較的大きな面積(例えば比較的低い誤り率を有する比較的大きなデバイス)は比較的高いビット誤り率又は比較的高い誤り感度を有するパーティション(例えばメモリの最も重要な部分)に適切に方向づけられ、比較的小さな面積(例えば比較的低い誤り率を有する比較的小さなデバイス)は比較的低いビット誤り率又は比較的低い誤り感度を有するパーティションに適切に方向づけられ(例えば比較的低いビット誤り率又は比較的低い誤り感度を有するパーティションに用いられる面積を浪費することはない);
これによりメモリ回路の面積を減少させる。別の典型例として、例えば機械学習及び動画又は画像処理システムなどの演算アプリケーションは誤り耐性を有し、さらにデータのいくつかの部分は誤りに対して比較的敏感でなくてよい。データの比較的低い誤り感度を有する部分を分割することにより、メモリ回路の面積を減少させることができる。
【0179】
いくつかの実施例において、第1メモリ回路502は第1読出電圧、第1検出時間及び第1ワード線(WL)電圧を使用し、第2メモリ回路504は第2読出回路、第2検出時間及び第2WL電圧を使用する。第1読出電圧は第2読出電圧より大きく、第1検出時間は第2検出時間より長く、第1WL電圧は第2WL電圧より大きい。
【0180】
例えば、第1読出電圧が50ミリボルトから300ミリボルトの間の範囲内にあるか、又は第1検出時間が3ナノ秒から500ナノ秒の間の範囲内にあるか、又は両者で、誤り率の検出が減少する。読出動作の過程において、第1WL電圧が定格ゲート電圧の100%から200%の間の範囲内でトランジスタにアクセスすることができる。第2読出電圧が30ミリボルトから100ミリボルトの範囲内にあるか、又は第2検出時間が2ナノ秒から100ナノ秒の範囲内にあるか、又は両者で、読出の電力消費が減少する。読出動作の過程において、第2WL電圧が定格ゲート電圧の70%から150%の間の範囲内でトランジスタにアクセスすることができる。
【0181】
いくつかの実施例において、第1メモリ回路502は第1書込電圧、第1書込時間及び第1ワード線(WL)電圧を使用し、第2メモリ回路504は第2書込電圧、第2書込時間及び第2WL電圧を使用する。第1書込電圧は第2書込電圧より大きく、第1書込時間は第2書込時間より長く、第1WL電圧は第2WL電圧より大きい。
【0182】
例えば、第1書込電圧が500ミリボルトから1500ミリボルトの範囲内にあるか、又は比較的長い書込時間が5ナノ秒から1000ナノ秒の範囲内にあるか、又は両者で、書込の誤り率が低下する。書込動作の過程において、第1WL電圧が定格ゲート電圧の100%から300%の間の範囲内でトランジスタにアクセスすることができる。第2書込電圧が300ミリボルトから1000ミリボルトの間の範囲内にあるか、又は比較的短い書込時間が2ナノ秒から500ナノ秒の間の範囲内にあるか、又は両者で、書込の電力消費が減少する。書込動作の過程において、第2WL電圧が定格ゲート電圧の70%から200%の間の範囲内でトランジスタにアクセスすることができる。
【0183】
模範的な利点として、電力を減少させることができる。例えば、比較的多くのリソース(例えば比較的高い電圧、比較的長い検出/書込時間)は、比較的高いビット誤り率又は比較的高い誤り感度を有するパーティション(例えばメモリの最も重要な部分)に適切に方向づけられ、比較的少ないリソース(例えば比較的低い電圧、比較的短い検出/書込時間)は、比較的低いビット誤り率又は比較的低い誤り感度を有するパーティションに適切に方向づけられ(例えば比較的低いビット誤り率又は比較的低い誤り感度を有するパーティションに用いられるリソースを浪費することはない);
これにより読出及び/又は書込電力を節約する。別の典型例として、機械学習及び動画又は画像処理システムなどの演算アプリケーションは誤り耐性を有し、さらにデータのいくつかの部分は誤りに対して比較的敏感でない可能性がある。データの比較的低い誤り感度を有する部分を分割することにより、電力を減少させることができる。
【0184】
図6は、実施例に基づいてデータ語のパーティションを示す。いくつかの実施例において、データ語600はパーティション602及び604を含む。例えば、データ語600は標準的な単精度形式(standard single-precision format)で形成されるパーティションを含み、誤りに対して比較的敏感なビット(MESB)(例えばパーティション602)及び誤りに対して比較的敏感でないビット(LESB)(例えばパーティション604)に分割される。いくつかの実施例において、パーティション602及び604はパーティション510及び512に大体似ており、さらにデータ語600はメモリシステム500中に保存することができる。いくつかの実施例において、データ語600の長さは2の冪である。
【0185】
いくつかの典型例において、データ語600は浮動小数点形式である。第1パーティション602は符号ビット、指数ビット及び仮数ビットの上位部分を含み、第2パーティション604は仮数ビットの下位部分を含む。いくつかの典型例において、データ語600は整数形式であり、第1パーティション602は符号ビット及び上位ビットを含み、第2パーティション604は下位ビットを含む。
【0186】
データ語600に関して、2つのパーティションを含む実施例を説明する。しかし、本発明の範囲を逸脱せず、データ語600は当然より多くのパーティションを含むことができ、各パーティションはビット誤り率に関係する。
【0187】
図7は、実施例に基づいてメモリシステムの動作方法を示す。いくつかの実施例において、方法700は、第1ビット誤り率に基づいて、メモリシステムに保存されるデータ語の第1パーティションを判断する工程702を含む。例えば、パーティション602が誤りに対して比較的敏感である(例えば比較的高い誤り率を有する)と判断する(例えばホストがデータに関係するシステムの誤り耐性に基づいて、データ語600の数値形式に基づいて)。
【0188】
いくつかの実施例において、方法700は、第2ビット誤り率に基づいて、メモリシステムに保存されるデータ語の第2パーティションを判断し、第1ビット誤り率は第2ビット誤り率より大きい工程704を含む。例えば、パーティション604が第1パーティションと比較して、誤りに対して比較的敏感でない(例えば第1パーティションと比較して、比較的低い誤り率を有する)と判断(例えばホストが)する。
【0189】
いくつかの実施例において、方法700は、データ語の第1パーティションを第1メモリ回路に保存する工程706を含む。例えば、第1パーティション602は第1メモリ回路502中に保存される。第1メモリ回路502は、第1ビット誤り率を有するデータを訂正するように構成することができる。
【0190】
いくつかの実施例において、方法700は、データ語の第2パーティションを第2メモリ回路に保存する工程708を含む。例えば、第2パーティション604は第2メモリ回路504中に保存される。第2メモリ回路504は、第2ビット誤り率を有するデータを訂正するように構成することができる。
【0191】
いくつかの実施例において、第1メモリ回路は第1ビット誤り率に関係し、第2メモリ回路は第2ビット誤り率に関係する。例えば、メモリ回路502は第1ビット誤り率に関係し、メモリ回路504は第2ビット誤り率に関係し、第2ビット誤り率は第1ビット誤り率より大きい。
【0192】
図8は、実施例に基づいてメモリシステムを示す。メモリシステム800は、
データ入力802と;
マルチレベルセル(MLC)メモリアレイ804と;
MLCメモリアレイ及びデータ入力に電気的に結合する書込回路806と;
書込回路に電気的に結合するグレイコードからバイナリへのデコーダ回路808と;
MLCメモリアレイに電気的に結合する読出回路810と;
読出回路及びデータ入力に電気的に結合するバイナリからグレイコードへのエンコーダ回路812と;
ECC検査ビットを保存するように構成されるメモリ回路814と;
メモリ回路及びバイナリからグレイコードへのエンコーダ回路に電気的に結合するECCエンコーダ816と;
メモリ回路及びグレイコードからバイナリへのエンコーダ回路に電気的に結合し、リカバリしたデータを出力するように構成されるECCデコーダ818と;
メモリシステムのデータのリカバリを制御するように構成されるデータスクラビングコントローラ820とを含む。
【0193】
いくつかの典型例において、マルチステート又は連続的なアナログ特性でマトリクス状の被乗数を表すことにより、マルチレベルセル(MLC)デバイスをメモリでの演算動作に用いることができる(例えばニューラルネットワーク演算において)。いくつかの実施例において、MLCはアナログメモリである。メモリデバイスは動作中にドリフトが現れる可能性があり、マトリクス状の被乗数の値が次第に変化する可能性がある。模範的な利点として、メモリシステム800はグレイコードを使用し、ドリフトしたデータを効果的にリカバリし(例えば簡単な「読出及びリカバリ」動作で誤りを有するデータを訂正することができなくなる前に、ドリフトを訂正する);
データを新たにリフレッシュする頻度を低下させることができる。グレイエンコーディングはデジタルデータの表示形式であり、このうち隣接状態では1つのビットが異なる。この特性はデバイスの状態の小さな変化が少数のビットのみ変化させ、回路の誤り訂正の需要を減少させ、これによりメモリに関係する誤り訂正回路の電力及び面積を減少させることを有利に保証する。
【0194】
いくつかの実施例において、メモリ回路814及びMLCメモリ804は異なる集積回路に位置する。例えば、メモリ回路、ECCエンコーダ回路及びECCデコーダ回路は同じチップ上にあり、該チップ及びMLCメモリ804があるチップは異なる。いくつかの実施例において、MLCメモリ804及びメモリ回路814は同じチップ上にある。例えば、MLCメモリ804及びメモリ回路814は同一のメモリアレイ中に含まれることができる。いくつかの状況において、メモリ回路はMLCメモリアレイの所定パーティションに位置することができる(例えばMLCメモリアレイ及びメモリ回路は同一のメモリに含まれる)。
【0195】
いくつかの実施例において、MLCメモリアレイは2つ超の安定した物理状態を有するメモリセル回路を含む。例えば、メモリセル回路は8つの安定した状態を有することができ、さらに各安定した状態はバイナリの0から7の数字を表す。いくつかの実施例において、MLCメモリアレイはアナログメモリデバイス(例えば一続きの連続した値を保存するように構成されるアナログデバイス)を含む。例えば、メモリセル回路はNORセルを構成する浮遊ゲートFLASHセル、NANDセルを構成する浮遊ゲートFLASHセル、NORセルを構成するチャージトラップFLASHセル、NANDセルを構成するチャージトラップFLASHセル、相変化メモリ(PCM)セル、及び抵抗変化型メモリ(RRAM)セルから選択される1つでよい。
【0196】
いくつかの実施例において、ECCエンコーダ及びデコーダはハミング符号、BCH符号、リード-ソロモン符号、及びLDPC符号から選択される1つを使用する。いくつかの典型例において、検査ビットメモリ(check-bit memory)814中の検査ビットの大きさは、ECC方法により決定される。いくつかの実施例において、読出回路810はアナログデジタル変換器(ADC)を含む。
【0197】
いくつかの実施例において、データスクラビングコントローラ820はデータスクラビング回路110に大体類似しているが、MLCメモリに使用される。いくつかの実施例において、メモリシステム800はいつデータスクラビングを起動するべきかを判断する環境外乱センサ140及び/又はタイマー150を含む。いくつかの典型例において、データスクラビングコントローラは、環境外乱を検出するか(例えば環境外乱センサ140を使用し、本文で説明する通りである)、又は本文で説明するように、ホストからコマンドを受信すると、所定間隔(例えばタイマー150を使用し、本文で説明する通りである)でデータスクラビング動作を起動するように構成される。例えば、データを周期的に読み出し、さらにデータのスクラビングを行い、データのドリフトを軽減させることができる。
【0198】
図9は、実施例に基づいてデータリカバリを示す。バイナリ値902はグレイコード値904に対応し;各列の上限値及び下限値は数学的に同等である。曲線906はMLCメモリに保存することができる各離散値の理想範囲(例えば電圧)に対応する。いくつかの状況において、デバイスのドリフトのような理想的でない状況のため、曲線は曲線906から逸脱する可能性がある。例えば、ドリフトにより、曲線908中のバイナリ値「100」に対応する曲線は右にシフトし;これらの典型例において、「100」を含むデータは誤って「101」に変化する可能性がある。メモリシステム800又は方法1000を使用して、「100」に対応する理想的な水準にリカバリすることができる。
【0199】
図10は、実施例に基づいてメモリシステムの動作方法1000を示す。方法1000は、MLCメモリからバイナリコード又はアナログ値で表示されるデータを読み出す工程1002を含む。例えば、読出回路810を使用して、MLCメモリ804から一部又は全てのデータを読み出す。順番に、又は並行してデータの読出及びスクラブを行うことができる。並行してデータの読出及びスクラブを行うとき、メモリシステム800は1個超の非メモリアレイ素子(例えば読出回路、グレイコードエンコーダ/デコーダ、ECCメモリ、ECCエンコーダ/デコーダ、書込回路)を含むことができ、MLCデータを同時にデータスクラビングすることを達成することができる。
【0200】
いくつかの実施例において、方法1000は、データをグレイコードに変換する工程1004を含む。例えば、バイナリからグレイコードへのエンコーダ回路812は読み出したデータをグレイコードに変換する。
【0201】
いくつかの実施例において、方法1000は、ECC検査ビットを保存するように構成されるメモリ回路から対応する検査ビットデータを読み出す工程1006を含む。例えば、メモリ回路814中の読み出したデータに対応するECC検査ビットを読み出し、読み出したデータのデータスクラビング動作を実行する。
【0202】
いくつかの実施例において、方法1000は、グレイコードでデータの訂正可能誤りの位置を演算する工程1008を含む。例えば、読み出したデータのECC動作を実行した後、ECC動作の結果に基づいて、データスクラビングコントローラ820は訂正可能誤りの位置を演算する(例えばデコード後のECCワードに基づく)。
【0203】
いくつかの実施例において、方法1000は、グレイコードでデータの訂正可能誤りを訂正する工程1010を含む。例えば、ECC方法に基づいて、データスクラビングコントローラ820はグレイコードで訂正可能誤りを訂正する。
【0204】
いくつかの実施例において、方法1000は、訂正後のデータをバイナリコード又は訂正後のアナログ値に変換する工程1012を含む。例えば、グレイコードからバイナリへのデコーダ回路808を使用して、訂正後のグレイコードデータをバイナリ値(例えばMLCメモリに用いる)又は訂正後のアナログ値(例えばアナログメモリの)に変換して戻す。
【0205】
いくつかの実施例において、方法1000は、書込回路を利用して訂正後のデータでMLCメモリのデータを書き換える工程1014を含む。例えば、スクラブされているデータが誤りを有すると判断した場合、書込回路806を使用し、訂正して変換した後のデータをメモリ804に書き込む。
【0206】
すでに
図8から
図10を参考にして特定のアーキテクチャ及び方法を説明した。しかし、本発明の範囲を逸脱せず、開示したMLC又はアナログメモリは、当然、MLC又はアナログメモリの誤り訂正に対して、バイナリ誤り訂正アーキテクチャ及び方法を利用することができる。
【0207】
図11は、実施例に基づいてメモリシステムを含むシステム1100を示す。システム1100は、
メモリコントローラ1120に電気的に結合するメモリシステム1110(例えばメモリシステム100、500、800);
プロセッサ1130;
ダイレクトメモリアクセス(DMA)コントローラ1140;
周辺インターフェース1150;
リアルタイムクロック(RTC)1160;及びその他の回路1170を含むことができる。システム1100の模範的な素子は、バスのデータバス1180に電気的に結合する。いくつかの実施例において、システム1100はポータブル電子デバイス(例えばスマートウォッチ又はスマートフォン)の一部分である。いくつかの実施例において、システム1100は機械学習システムの一部分である。いくつかの実施例において、システム1100は分散型情報収集及び処理ネットワーク(例えばクラウド、ニューラルネットワーク)の一部分である。
【0208】
いくつかの実施例において、メモリシステム1100はAIエッジコンピューティング(edge-AI)システム、データセンタのニューラルネットワークシステム、モノのインターネットシステム、自動車エレクトロニクスシステム、マイクロコントローラシステム、モバイル通信システム、プログラマブル演算システム(例えばFPGA)、ハードウェアセキュリティシステム、テレマティクスサービスシステム、生物医学電子デバイス、ロボット、及びドローンから選択される1つに含まれる。
【0209】
図12は、実施例に基づいて演算装置1200の典型例を示す。いくつかの実施例において、装置1200は開示したシステムに結合するように構成され、さらに本文で開示したシステムに関連する動作方法を実行するように構成される。
【0210】
装置1200は、ネットワークに接続したホストコンピュータでよい。装置1200は、クライアント端末のコンピュータ又はサーバでよい。
図12に示すように、装置1200はマイクロプロセッサに基づく、適した型のデバイスのいずれでもよく、例えば専用演算装置、パーソナルコンピュータ、ワークステーション、サーバ、携帯電話又はタブレットコンピュータなどの携帯可能な演算装置(ポータブル電子デバイス)、AIエッジコンピューティング(edge-AI)デバイス、又はニューラルネットワークデバイスである。例えば、該デバイスは1つ又は複数のプロセッサ1202、入力装置1206、出力装置1208、ストレージ1210、及び通信装置1204を含むことができる。入力装置1206及び出力装置1208は、通常、上記で開示したものに対応することができ、さらにコンピュータと接続することができるか、又はコンピュータと一体である。
【0211】
入力装置1206は入力を提供する、適した装置のいずれでもよく、例えばカメラセンサ、タッチスクリーン、キーボード若しくはキーパッド、マウス、又は音声認識装置である。出力装置1208は出力を提供する、適した装置のいずれでもよく、例えば照明器、タッチスクリーン、触覚装置、又はスピーカである。
【0212】
ストレージ1210は保存を提供する、適した装置のいずれでもよく、例えば電気、磁気又は光学メモリを含むRAM、キャッシュメモリ、ハードディスクドライブ、又はリムーバブルストレージディスクである。いくつかの典型例において、ストレージ1210はメモリシステム100、500、又は800を含む。通信装置1204はネットワークにより信号を送信及び受信することができる、適した装置のいずれも含むことができ、例えばネットワークインターフェースチップ又はデバイスである。コンピュータのコンポーネントは適した方式のいずれによっても接続することができ、例えばフィジカルバスを経由するか、又は無線方式である。
【0213】
ソフトウェア1212はストレージ1210に保存することができ、プロセッサ1210により実行される。例えば本発明の機能を具体化する(例えば上記装置中で具体化する)プログラミングを含むことができる。
【0214】
ソフトウェア1212はさらに持続性、コンピュータ可読のいずれの記憶媒体内にも保存及び/又は伝送することができ、命令実行システム、装置又はデバイス(例えば上記のもの)に供給して使用するか、又はこれらと接続して使用する。記憶媒体は命令実行システム、装置又はデバイスからソフトウェアに関係する命令をフェッチして命令を実行する。本発明の前後文において、コンピュータ可読記憶媒体はストレージ1210などのいずれの媒体でもよい。これはプログラミングを含むか、又は保存することができ、命令実行システム、装置又はデバイスに提供して使用するか、又はこれらと接続して使用する。
【0215】
ソフトウェア1212はさらにどのような伝送媒体内にも伝搬することができ、命令実行システム、装置又はデバイス(例えば上記のもの)に提供して使用するか、又はこれらと接続して使用する。伝送媒体は命令実行システム、装置又はデバイスからソフトウェアに関係する命令をフェッチして命令を実行することができる。本発明の前後文において、伝送媒体は、プログラミングを通信、伝搬又は伝送することができ、命令実行システム、装置又はデバイスに提供して使用するか、又はこれらと接続して使用するいずれの媒体でもよい。伝送可読媒体は、(これに限定されないが)電子、磁気、光学、電磁、又は赤外線有線もしくは無線の伝搬媒体を含むことができる。
【0216】
装置1200はネットワークに接続することができ、ネットワークは適した型の相互接続通信システムのいずれでもよい。ネットワークは適したいずれの通信プロトコルも実装することができ、さらに適したいずれのセキュリティプロトコルによっても保護することができる。ネットワークは配置するのに適したいずれのネットワークリンクも含むことができ、これはネットワーク信号の送信及び受信を実装することができる。例えば無線ネットワーク接続、T1又はT3線、ケーブルネットワーク、デジタル加入者線(DSL)、又は電話線である。
【0217】
装置1200は、ネットワーク上で動作するのに適したオペレーティングシステムのいずれも実装することができる。ソフトウェア1212は適したプログラム言語のいずれでも編集することができ、例えばC、C++、Java又はPythonである。各種実施例において、本発明の機能を具体化するアプリケーションソフトウェアを異なる構成、例えばクライアントサーバ配置で、又は例えばネットワークアプリケーション若しくはウェブサービスとしてのウェブブラウザを介してデプロイメントすることができる。
【0218】
1つの態様において、メモリシステムは
データメモリと;
ECCメモリと;
ECCメモリ及びデータメモリに電気的に結合するデータスクラビング回路とを含む。
【0219】
上記メモリシステムのいくつかの態様において、データスクラビング回路はスクラブデータコマンドを受信すると、データメモリの誤りを訂正するように構成される。
【0220】
上記メモリシステムのいくつかの態様において、誤り訂正に用いる符号語長はデータメモリの正常なアクセス中に使用される語長より長い。
【0221】
上記メモリシステムのいくつかの態様において、データスクラビング回路はデータバッファ、データスクラビングコントローラ、ECCエンコード回路、及びECCデコード回路を含む。
【0222】
上記メモリシステムのいくつかの態様において、データメモリにアクセスするのと同時に、データスクラビング回路はデータメモリの誤りを訂正するように構成される。
【0223】
上記メモリシステムのいくつかの態様において、メモリシステムは環境条件を検出するように構成される環境外乱センサをさらに含む。データスクラビング回路は検出された環境条件に基づいて、スクラブデータコマンドを生成する。
【0224】
上記メモリシステムのいくつかの態様において、環境条件は温度及び磁場の少なくとも1つを含む。
【0225】
上記メモリシステムのいくつかの態様において、データスクラビング回路は既知データの変化を検出し、変化の検出に基づいてスクラブデータコマンドを生成するように構成される。
【0226】
上記メモリシステムのいくつかの態様において、メモリシステムはタイマー回路をさらに含む。これは経過時間を追跡し;
経過時間がタイミング閾値より大きいかどうかを判断し、経過時間がタイミング閾値より大きいとの判断に基づいて、スクラブデータコマンドを生成するように構成される。
【0227】
上記メモリシステムのいくつかの態様において、ECCメモリは複数のパーティションを含み、データメモリは複数のメモリアドレス範囲を含み、各パーティションはデータメモリの1つのメモリアドレス範囲に対応する。
【0228】
上記メモリシステムのいくつかの態様において、ECCメモリは複数のECCビットを有する1つのパーティションを含み、ECCビットの数は、データスクラビングアルゴリズムに関係するECCエンコード方法に基づく。
【0229】
上記メモリシステムのいくつかの態様において、ECCメモリは1組のレジスタを含む。各レジスタは1つのECC符号語に対応し、各ECC符号語はデータメモリの1つのセクションに対応し、各レジスタは該セクションの状態を保存する。
【0230】
上記メモリシステムのいくつかの態様において、データメモリ及びECCメモリから選択される少なくとも1つは、磁気ランダムアクセスメモリ(MRAM)を含む。
【0231】
上記メモリシステムのいくつかの態様において、データメモリ及びECCメモリから選択される少なくとも1つは記憶装置を含む。これは磁気トンネル接合(MTJ)を含み、10-12から10-2の間のビット誤り率を有する記憶装置と比較して、サイズの縮小、保磁場の低下、磁気異方性の低下、及び飽和磁化強度の低下から選択される1つの特性を有する。
【0232】
上記メモリシステムのいくつかの態様において、ビット誤り率が10-12から10-2の間の記憶装置と比較して、MJTはサイズの縮小、保磁場の低下、磁気異方性の低下、及び飽和磁化強度の低下から選択される2つの特性を有する。
【0233】
上記メモリシステムのいくつかの態様において、データメモリはスタティックランダムアクセスメモリ(SRAM)、ダイナミックランダムアクセスメモリ(DRAM)、又は混載DRAM(eDRAM)を含む。
【0234】
上記メモリシステムのいくつかの態様において、データスクラビング回路又はホストはデータメモリが保護されるかどうかを判断するように構成される。ECCメモリはデータメモリが保護されるとの判断に基づいて、ECC検査ビットを保存し;
データメモリが保護されないとの判断に基づいて、演算データを保存するように構成される。
【0235】
上記メモリシステムのいくつかの態様において、データメモリ及びECCメモリは異なるメモリ回路に含まれる。
【0236】
上記メモリシステムのいくつかの態様において、データメモリ及びECCメモリは同一のメモリ回路に含まれる。
【0237】
上記メモリシステムのいくつかの態様において、メモリシステムはホストデバイスに電気的に結合する。
【0238】
上記メモリシステムのいくつかの態様において、データメモリ及びECCメモリは記憶装置を含み、これはサイズが20ナノメートルから200ナノメートルの間のMTJ、及び幅長比が1から200の間のMOSトランジスタを含む。
【0239】
上記メモリシステムのいくつかの態様において、データスクラビング回路は、データの保護コマンドを受信し;
保護されるデータの各データ語に対して、保護コマンドを受信すると、データ語に関係するデータ符号語に用いられるアドレスを識別し;
該アドレスに基づいて該データ語がデータメモリにあるかどうかを判断し;
該データ語がデータメモリにあると判断すると、データメモリから該データ語を読み出し;
該データ語がデータメモリにないと判断すると、該データ語を受信し;
該データ語をデータメモリに書き込み;
該データ語のECCエンコード演算を実行し;
ECCエンコード演算に基づいてデータ符号語を生成し;
該アドレスでデータ符号語をデータメモリに書き込み;
ECCエンコード演算に基づいてECC検査ビットを生成し;
生成したECC検査ビットをECCメモリの対応するパーティションに書き込むように構成される。
【0240】
上記メモリシステムのいくつかの態様において、データスクラビング回路は、スクラブデータコマンドを受信し;
各スクラブされるデータ語に対して、スクラブデータコマンドを受信すると、データ符号語の開始アドレス及び対応するECCメモリパーティションを識別し;
データメモリから開始アドレスに関係するデータ語を読み出し;
ECCメモリから対応するECCメモリパーティションに関係するECC検査ビットを読み出し;
データ語及びECC検査ビットに基づいてECCデコード演算を実行し;
ECCデコード演算に基づいて、データ語が誤りを含むかどうかを判断し;
データ語に誤りを含むと判断すると、データ語の誤り訂正可能ビットで誤りビットを置換し、このうち誤り訂正可能ビットを含むデータ語はスクラブ後のデータ語であり;
データ語が誤りを含まないと判断すると、データ語の誤り訂正可能ビットで誤りビットを置換せず、このうちデータ語はスクラブ後のデータ語であり;
ホストがスクラブ後のデータ語を要求するかどうかを判断し;
ホストがスクラブ後のデータを要求すると判断すると、スクラブ後のデータ語をホストと電気的に結合するメモリコントローラに出力し;
ホストがスクラブ後のデータを要求しないと判断すると、スクラブ後のデータ語をメモリコントローラに出力しないように構成される。
【0241】
1つの態様において、メモリシステムの動作方法を開示する。該メモリシステムは
データメモリと;
ECCメモリと;
ECCメモリ及びデータメモリに電気的に結合するデータスクラビング回路とを含む。
該方法は、スクラブデータコマンドを受信すると、データスクラビング回路を使用してデータメモリの誤りを訂正することを含む。
【0242】
上記方法のいくつかの態様において、誤り訂正に用いる符号語長はデータメモリの正常なアクセス中に使用される語長より長い。
【0243】
上記方法のいくつかの態様において、データスクラビング回路はデータバッファ、データスクラビングコントローラ、ECCエンコード回路、及びECCデコード回路を含む。
【0244】
上記方法のいくつかの態様において、該方法はデータメモリの誤りを訂正するのと同時に、データメモリにアクセスすることをさらに含む。
【0245】
上記方法のいくつかの態様において、該方法は環境外乱センサを使用して環境条件を検出し;検出された環境条件に基づいて、スクラブデータコマンドを生成することをさらに含む。
【0246】
上記方法のいくつかの態様において、環境条件は温度及び磁場の少なくとも1つを含む。
【0247】
上記方法のいくつかの態様において、該方法は既知データの変化を検出し;
変化の検出に基づいてスクラブデータコマンドを生成することをさらに含む。
【0248】
上記方法のいくつかの態様において、該方法は経過時間を追跡し;
経過時間がタイミング閾値より大きいかどうかを判断し、経過時間がタイミング閾値より大きいとの判断に基づいて、スクラブデータコマンドを生成することをさらに含む。
【0249】
上記方法のいくつかの態様において、ECCメモリは複数のパーティションを含み、データメモリは複数のメモリアドレス範囲を含み、各パーティションはデータメモリの1つのメモリアドレス範囲にそれぞれ対応する。
【0250】
上記方法のいくつかの態様において、ECCメモリはデータスクラビングアルゴリズムに関係する複数のECCビットを有する1つのパーティションを含む。該方法は、該ECCビットを使用してECCエンコード方法を実行することをさらに含む。
【0251】
上記方法のいくつかの態様において、ECCメモリは1組のレジスタを含む。各レジスタは1つのECC符号語に対応し、各ECC符号語はデータメモリの1つのセクションに対応し、各レジスタは該セクションの状態を保存する。
【0252】
上記方法のいくつかの態様において、データメモリ及びECCメモリから選択される少なくとも1つは、磁気ランダムアクセスメモリ(MRAM)を含む。
【0253】
上記方法のいくつかの態様において、データメモリ及びECCメモリから選択される少なくとも1つは記憶装置を含む。これは磁気トンネル接合(MTJ)を含み、ビット誤り率が10-12から10-2の間の記憶装置と比較して、サイズの縮小、保磁場の低下、磁気異方性の低下、及び飽和磁化強度の低下から選択される1つの特性を有する。
【0254】
上記方法のいくつかの態様において、10-12から10-2の間のビット誤り率を有する記憶装置と比較して、MTJはサイズの縮小、保磁場の低下、磁気異方性の低下、及び飽和磁化強度の低下から選択される2つの特性を有する。
【0255】
上記方法のいくつかの態様において、データメモリはスタティックランダムアクセスメモリ(SRAM)、ダイナミックランダムアクセスメモリ(DRAM)、又は混載DRAM(eDRAM)を含む。
【0256】
上記方法のいくつかの態様において、該方法はデータメモリが保護されるかどうかを判断し;
データメモリが保護されるとの判断に基づいて、ECC検査ビットをECCメモリに保存し;
データメモリが保護されないとの判断に基づいて、演算データをECCメモリに保存することをさらに含む。
【0257】
上記方法のいくつかの態様において、データメモリ及びECCメモリは異なるメモリ回路に含まれる。
【0258】
上記方法のいくつかの態様において、データメモリ及びECCメモリは同一のメモリ回路に含まれる。
【0259】
上記方法のいくつかの態様において、メモリシステムはホストデバイスに電気的に結合する。
【0260】
上記方法のいくつかの態様において、データメモリ及びECCメモリは記憶装置を含み、これはサイズが20ナノメートルから200ナノメートルの間のMTJ、及び幅長比(width-to-length ratio)が1から200の間のMOSトランジスタを含む。
【0261】
上記方法のいくつかの態様において、該方法は、データ保護コマンドを受信し;
保護されるデータの各データ語に対して、保護コマンドを受信すると、データ語に関係するデータ符号語のアドレスを識別し;
該アドレスに基づいてデータ語がデータメモリにあるかどうかを判断し;
データ語がデータメモリにあると判断すると、データメモリからデータ語を読み出し;
データ語がデータメモリにないと判断すると、データ語を受信し;
データ語をデータメモリに書き込み;データ語のECCエンコード演算を実行し;
ECCエンコード演算に基づいてデータ符号語を生成し;
該アドレスでデータ符号語をデータメモリに書き込み;
ECCエンコード演算に基づいてECC検査ビットを生成し;
生成したECC検査ビットをECCメモリの対応するパーティションに書き込むことをさらに含む。
【0262】
上記方法のいくつかの態様において、該方法は、スクラブされる各データ語に対して、スクラブデータコマンドを受信すると、データ符号語に用いる開始アドレス及び対応するECCメモリパーティションを識別し;
データメモリから開始アドレスに関係するデータ語を読み出し;
ECCメモリから対応するECCメモリパーティションに関係するECC検査ビットを読み出し;
データ語及びECC検査ビットに基づいてECCデコード演算を実行し;
ECCデコード演算に基づいて、データ語が誤りを含むかどうかを判断し;
データ語が誤りを含むと判断すると、データ語の誤り訂正可能ビットで誤りビットを置換し、このうち誤り訂正可能ビットを含むデータ語はスクラブ後のデータ語であり;
データ語が誤りを含まないと判断すると、データ語の誤り訂正可能ビットで誤りビットを置換せず、このうちデータ語はスクラブ後のデータ語であり;
ホストがスクラブ後のデータ語を要求するかどうかを判断し;
ホストがスクラブ後のデータを要求すると判断すると、スクラブ後のデータ語をホストと電気的に結合するメモリコントローラに出力し;
ホストがスクラブ後のデータを要求しないと判断すると、スクラブ後のデータ語をメモリコントローラに出力しないことをさらに含む。
【0263】
上記メモリシステムのいくつかの態様において、メモリシステムはAIエッジコンピューティング(edge-AI)システム、データセンタのニューラルネットワークシステム、モノのインターネットシステム、自動車エレクトロニクスシステム、マイクロコントローラシステム、モバイル通信システム、プログラマブル演算システム、ハードウェアセキュリティシステム、テレマティクスサービスシステム、生物医学電子デバイス、ロボット、及びドローンから選択される1つに含まれる。
【0264】
1つの態様において、メモリシステムは第1ビット誤り率に関係する第1メモリ回路;及び第2ビット誤り率に関係する第2メモリ回路を含む。第1ビット誤り率は第2ビット誤り率より大きく;
データ語は第1メモリ回路及び第2メモリ回路に保存される。データ語は第1ビット誤り率に関係する第1パーティション、及び第2ビット誤り率に関係する第2パーティションを含み、データ語の第1パーティションは第1メモリ回路に保存され、データ語の第2パーティションは第2メモリ回路に保存される。
【0265】
上記メモリシステムのいくつかの態様において、メモリシステムは第1メモリ回路及び第2メモリ回路に電気的に結合するデータスクラビング回路をさらに含む。データスクラビング回路は第1メモリ回路を制御して、第1誤り率を第3誤り率まで減少させ;
第2メモリ回路を制御して、第2誤り率を第4誤り率まで減少させる。第1ビット誤り率の減少幅は、第2ビット誤り率の減少幅より大きい。
【0266】
上記メモリシステムのいくつかの態様において、第1メモリ回路は第1記憶装置を含み、これは第1サイズの第1磁気トンネル接合(MTJ)、及び第1チャネル幅長(W/L)比の第1MOSトランジスタを含む。第2メモリ回路は第2記憶装置を含み、これは第2サイズの第2MTJ、及び第2W/L比の第2MOSトランジスタを含み、第1サイズは第2サイズより大きく、第1W/L比は第2W/L比より大きい。
【0267】
上記メモリシステムのいくつかの態様において、第1メモリ回路は記憶装置を含み、これはサイズが40ナノメートルから200ナノメートルの間のMTJ、及びW/L比が2から200の間のMOSトランジスタを含む。
【0268】
上記メモリシステムのいくつかの態様において、第2メモリ回路は記憶装置を含み、これはサイズが20ナノメートルから100ナノメートルの間のMTJ、及びW/L比が1から100の間のMOSトランジスタを含む。
【0269】
上記メモリシステムのいくつかの態様において、第1メモリ回路は第1読出電圧、第1検出時間及び第1ワード線(WL)電圧を使用し、第2メモリ回路は第2読出電圧、第2検出時間及び第2WL電圧を使用する。第1読出電圧は第2読出電圧より大きく、第1検出時間は第2検出時間より長く、第1WL電圧は第2WL電圧より大きい。
【0270】
上記メモリシステムのいくつかの態様において、第1メモリ回路は第1書込電圧、第1書込時間及び第1WL電圧を使用し、第2メモリ回路は第2書込電圧、第2書込時間及び第2WL電圧を使用する。第1書込電圧は第2書込電圧より大きく、第1書込時間は第2書込時間より長く、第1WL電圧は第2WL電圧より大きい。
【0271】
上記メモリシステムのいくつかの態様において、浮動小数点形式で第1パーティションは符号ビット、指数ビット、及び仮数ビットの上位部分を含む。
【0272】
上記メモリシステムのいくつかの態様において、整数形式で第1パーティションは符号ビット及び上位ビットを含む。
【0273】
上記メモリシステムのいくつかの態様において、浮動小数点形式で第2パーティションは仮数ビットの下位部分を含む。
【0274】
上記メモリシステムのいくつかの態様において、整数形式で第2パーティションは下位ビットを含む。
【0275】
1つの態様において、メモリシステムの動作方法を開示し、該メモリシステムは第1メモリ回路及び第2メモリ回路を含む。該方法は、第1ビット誤り率に基づいて、メモリシステムに保存されるデータ語の第1パーティションを判断し;
第2ビット誤り率に基づいて、メモリシステムに保存されるデータ語の第2パーティションを判断し、第1ビット誤り率は第2ビット誤り率より大きく;
データ語の第1パーティションを第1メモリ回路に保存し;
データ語の第2パーティションを第2メモリ回路に保存し、第1メモリ回路は第1ビット誤り率に関係し、第2メモリ回路は第2ビット誤り率に関係することを含む。
【0276】
上記方法のいくつかの態様において、該方法は、第1メモリ回路を制御して、第1誤り率を第3誤り率まで減少させ;
第2メモリ回路を制御して、第2誤り率を第4誤り率まで減少させ、第1ビット誤り率の減少幅は第2ビット誤り率の減少幅より大きいことをさらに含む。
【0277】
上記方法のいくつかの態様において、第1メモリ回路は第1記憶装置を含み、これは第1サイズの第1MTJ、及び第1チャネルW/L比の第1MOSトランジスタを含む。第2メモリ回路は第2記憶装置を含み、これは第2サイズの第2MTJ、及び第2W/L比の第2MOSトランジスタを含み、第1サイズは第2サイズより大きく、第1W/L比は第2W/L比より大きい。
【0278】
上記方法のいくつかの態様において、第1メモリ回路は記憶装置を含み、これはサイズが40ナノメートルから200ナノメートルの間のMTJ、及びW/L比が2から200の間のMOSトランジスタを含む。
【0279】
上記方法のいくつかの態様において、第2メモリ回路は記憶装置を含み、これはサイズが20ナノメートルから100ナノメートルの間のMTJ、及びW/L比が1から100の間のMOSトランジスタを含む。
【0280】
上記方法のいくつかの態様において、該方法は、第1メモリ回路で第1読出電圧、第1検出時間及び第1WL電圧を使用し;
第2メモリ回路で第2読出電圧、第2検出時間及び第2WL電圧を使用し、第1読出電圧は第2読出電圧より大きく、第1検出時間は第2検出時間より長く、第1WL電圧は第2WL電圧より大きいことをさらに含む。
【0281】
上記方法のいくつかの態様において、該方法は、第1メモリ回路で第1書込電圧、第1書込時間及び第1WL電圧を使用し;
第2メモリ回路で第2書込電圧、第2書込時間及び第2WL電圧を使用し、第1書込電圧は第2書込電圧より大きく、第1書込時間は第2書込時間より長く、第1WL電圧は第2WL電圧より大きいことをさらに含む。
【0282】
上記方法のいくつかの態様において、浮動小数点形式で第1パーティションは符号ビット、指数ビット、及び仮数ビットの上位部分を含む。
【0283】
上記方法のいくつかの態様において、整数形式で第1パーティションは符号ビット及び上位ビットを含む。
【0284】
上記方法のいくつかの態様において、浮動小数点形式で第2パーティションは仮数ビットの下位部分を含む。
【0285】
上記方法のいくつかの態様において、整数形式で第2パーティションは下位ビットを含む。
【0286】
上記メモリシステムのいくつかの態様において、メモリシステムはAIエッジコンピューティング(edge-AI)システム、データセンタのニューラルネットワークシステム、モノのインターネットシステム、自動車エレクトロニクスシステム、マイクロコントローラシステム、モバイル通信システム、プログラマブル演算システム、ハードウェアセキュリティシステム、テレマティクスサービスシステム、生物医学電子デバイス、ロボット、及びドローンから選択される1つに含まれる。
【0287】
1つの態様において、メモリシステムはデータ入力と;
マルチレベルセル(MLC)アレイと;
MLCアレイ及びデータ入力に電気的に結合する書込回路と;
書込回路に電気的に結合するグレイコードからバイナリへのデコーダ回路と;MLCアレイに電気的に結合する読出回路と;
読出回路及びデータ入力に電気的に結合するバイナリからグレイコードへのエンコーダ回路と;
ECC検査ビットを保存するように構成されるメモリ回路と;
メモリ回路及びバイナリからグレイコードへのエンコーダ回路に電気的に結合するECCエンコーダと;
メモリ回路及びグレイコードからバイナリへのエンコーダ回路に電気的に結合し、リカバリしたデータを出力するように構成されるECCデコーダと;
メモリシステムのデータのリカバリを制御するように構成されるデータスクラビングコントローラとを含む。
【0288】
上記メモリシステムのいくつかの態様において、MLCアレイは2つ超の安定した物理状態を有するメモリセル回路を含む。
【0289】
上記メモリシステムのいくつかの態様において、メモリセル回路はNORセルを構成する浮遊ゲートFLASHセル、NANDセルを構成する浮遊ゲートFLASHセル、NORセルを構成するチャージトラップFLASHセル、NANDセルを構成するチャージトラップFLASHセル、相変化メモリ(PCM)セル、及び抵抗変化型メモリ(RRAM)セルから選択される1つである。
【0290】
上記メモリシステムのいくつかの態様において、ECCエンコーダ及びデコーダはハミング符号、BCH符号、リード-ソロモン符号、及びLDPC符号から選択される1つを使用する。
【0291】
上記メモリシステムのいくつかの態様において、メモリ回路はMLCアレイと異なる集積回路に位置する。
【0292】
上記メモリシステムのいくつかの態様において、メモリ回路はMLCアレイの所定パーティションに位置する。
【0293】
上記メモリシステムのいくつかの態様において、データスクラビングコントローラは環境外乱を検出するか、又はホストからコマンドを受信すると、所定間隔でデータスクラビング動作を起動するように構成される。
【0294】
1つの態様において、MLCに対してデータスクラビングを行う方法は、MLCからバイナリコード又はアナログ値で表示されるデータを読み出し;
データをグレイコードに変換し;
ECC検査ビットを保存するように構成されるメモリ回路から対応する検査ビットデータを読み出し;
グレイコード形式のデータにおける訂正可能誤りの位置を演算して訂正し;
訂正後のデータをバイナリコード又は訂正後のアナログ値に変換し;
書込回路により訂正後のデータでMLCのデータを書き換えることを含む。
【0295】
上記方法のいくつかの態様において、MLCアレイは2つ超の安定した物理状態を有するメモリセル回路を含む。
【0296】
上記方法のいくつかの態様において、メモリセル回路はNORセルを構成する浮遊ゲートFLASHセル、NANDセルを構成する浮遊ゲートFLASHセル、NORセルを構成するチャージトラップFLASHセル、NANDセルを構成するチャージトラップFLASHセル、相変化メモリ(PCM)セル、及び抵抗変化型メモリ(RRAM)セルから選択される1つである。
【0297】
上記方法のいくつかの態様において、該方法は、ハミング符号、BCH符号、リード-ソロモン符号、及びLDPC符号から選択される1つを使用して、ECCエンコード及びデコードを行うことをさらに含む。
【0298】
上記方法のいくつかの態様において、メモリ回路はMLCアレイと異なる集積回路に位置する。
【0299】
上記方法のいくつかの態様において、メモリ回路はMLCアレイの所定パーティションに位置する。
【0300】
上記方法のいくつかの態様において、該方法は、環境外乱を検出するか、又はホストからコマンドを受信すると、所定間隔でデータスクラビング動作を起動することをさらに含む。
【0301】
上記メモリシステムのいくつかの態様において、メモリシステムはAIエッジコンピューティング(edge-AI)システム、データセンタのニューラルネットワークシステム、モノのインターネットシステム、自動車エレクトロニクスシステム、マイクロコントローラシステム、モバイル通信システム、プログラマブル演算システム、ハードウェアセキュリティシステム、テレマティクスサービスシステム、生物医学電子デバイス、ロボット、及びドローンから選択される1つに含まれる。
【0302】
本発明において、「電気的に結合」及び「結合」を使用して、読出回路の2つの素子間の電気的な接続を説明したが、電気的な接続は、当然、必ずしもコンポーネントの端子間を直接的に接続又は結合する必要はない。本発明の範囲を逸脱せず、前記コンポーネントの異なる組合せ及び接続は、定電流及び調整可能なバイアス電圧の読出回路を達成することができる。例えば、電気的に結合するコンポーネントの端子間に回路を接続する。別の典型例において、結合したコンポーネントの端子間に閉(導電性)スイッチを接続する。もう1つの典型例において、結合したコンポーネントの端子間に付加素子を接続しても、回路の定電流の特性に影響を及ぼすことはない。例えば、バッファ、増幅器及び受動回路素子を追加することができるが、読出回路の特性に影響を及ぼさず、さらに本発明の範囲を逸脱しない。
【0303】
いくつかの実施例において、2つの電気的に結合するコンポーネントはトポロジー方式で結合することができる。本文で使用するように、2つのコンポーネントがトポロジー内又はトポロジーの同一部分内で互いに電気的影響を与える場合、「トポロジー方式で結合する」である。例えば、開示した読出回路のリファレンスセンサ及び第1電流源は、読出回路の同一の分岐に電気的に結合する。
【0304】
同様に、本発明において「電気的に結合しない」を使用して、読出回路の2つの素子間の電力遮断を説明したが、電力遮断は、当然、必ずしも開閉するコンポーネントの端子間を実質的に開く必要はない。さらに、「結合しない」は2つの素子間の電気エネルギの伝達を阻止することを表すことに制限されない。例えば、結合していないコンポーネントの端子間に高抵抗素子を接続する。別の典型例において、切断されたコンポーネントの端子間に開(非導電性)スイッチを接続し、効果的にコンポーネントを切断する。
【0305】
通常、本文で使用するような「大体」という語は、(複数の)素子又は数量が正確な品質(例えば、固定の、同じ、統一した、等しい、類似の、比例した)を理想的に有することを説明しているが、実際には正確な品質と機能的に同等の品質を有する。例えば、素子又は数量を大体固定して、又は統一して記載しても、偏差がシステム(例えば精度の要求など)の公差内であれば、該固定した又は統一した値から逸脱することができる。別の典型例として、2つの素子又は数量を大体等しいと記載すると、ほぼ等しいとすることができ、差異が公差内であれば、機能的にシステムの動作に影響を及ぼさない。
【0306】
同様に、「大体」という語を使用せず、絶対的な意味でいくつかの素子又は数量を記載するが、これらの素子及び数量は、当然、絶対的な記載と機能的に同等の品質を有することができる。例えば、いくつかの実施例において、比率を1と記載する。しかしながら、当然該比率は1より大きいか、又は小さくてよく、該比率はシステム(例えば精度の要求など)の公差内であればよい。
【0307】
本文で使用するように、「大体同じ」センサは決められた刺激に対して似た反応を生成する。例えば、決められた温度変化に対して、「大体同じ」ボロメータには似た電気抵抗の変化が生じる。
【0308】
すでに図を参考にして開示した実施例を十分に説明したが、各種変更及び修正は当業者にとって明白であることに注意すべきである。この種の変更及び修正は、添付の特許請求の範囲に限定されるように、開示した実施例の範囲内に含まれることを理解すべきである。
【0309】
本文の前記各種実施例に対する説明で使用される専門用語は、特定の実施例を説明するためだけに使用し、制限する意図はない。前記各種実施例及び添付の特許請求の範囲の説明で使用するような単数形の「一」、「1つの」及び「該」は、前後文で他に明確に明示しない限り、複数形を含むことを意図する。さらに、本文で使用する「及び/又は」という語は、当然、列挙した関係する項目の1つ又は複数のいずれか及びすべての可能性がある組合せを含むことを示す。本明細書で「包含される」、「包含する」、「含まれる」及び/又は「含む」などの語を使用するとき、前記特徴、整数、工程、動作、素子及び/又はコンポーネントの存在を明確に示すが、1つ又は複数のその他の特徴、整数、工程、動作、素子、コンポーネント及び/又はその群の存在或いは追加を排除しないことをさらに理解すべきである。
【符号の説明】
【0310】
100, 500, 800, 1110 メモリシステム
110 データスクラビング回路
111 データバッファ
112 ECCエンジン
113, 820 データスクラビングコントローラ
120 データメモリ
130 ECCメモリ
230 ECCメモリ
140 環境外乱センサ
150 タイマー回路
160 ホスト
170 メモリコントローラ
1120 メモリコントローラ
220 データメモリ
221 ECC符号語
231 ECC検査ビットパーティション
300,400,700,1000 方法
302,304,306,308 工程
310,312a,312b 工程
314,316,318 工程
320,322 工程
402,404,406a 工程
406b,408,410 工程
412,414,416,418 工程
420,422,424 工程
702,704,706,708 工程
1002,1004,1006 工程
1008, 1010, 1012 工程
1014 工程
502 第1メモリ回路
504 第2メモリ回路
506 第3メモリ回路
814 メモリ回路
508 データ語
600 データ語
510 第1パーティション
512 第2パーティション
514 第3パーティション
602 パーティション
604 パーティション
516 アドレス
802 データ入力
804 MLC又はアナログメモリアレイ
806 書込回路
808 グレイコードからバイナリ
810 読出回路
812 バイナリからグレイコード
816 ECCエンコーダ
818 ECCデコーダ
902 バイナリ値
904 グレイコード値
906 曲線
908 曲線
1100 メモリシステム
1130 プロセッサ
1202 プロセッサ
1140 DMAコントローラ
1150 周辺インターフェース
1160 リアルタイムクロックRTC
1170 その他
1180 バス
1200 装置
1204 通信装置
1206 入力装置
1208 出力装置
1210 ストレージ
1212 ソフトウェア