(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-03-04
(45)【発行日】2024-03-12
(54)【発明の名称】フラッシュメモリセルで形成されたEEPROMエミュレータにおけるウェアレベリング
(51)【国際特許分類】
G06F 12/00 20060101AFI20240305BHJP
G06F 12/02 20060101ALI20240305BHJP
【FI】
G06F12/00 550Z
G06F12/02 570A
G06F12/00 597U
(21)【出願番号】P 2022549411
(86)(22)【出願日】2020-08-31
(86)【国際出願番号】 US2020048816
(87)【国際公開番号】W WO2021167648
(87)【国際公開日】2021-08-26
【審査請求日】2022-10-14
(31)【優先権主張番号】202010106388.9
(32)【優先日】2020-02-21
(33)【優先権主張国・地域又は機関】CN
(32)【優先日】2020-08-28
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】500147506
【氏名又は名称】シリコン ストーリッジ テクノロージー インコーポレイテッド
【氏名又は名称原語表記】SILICON STORAGE TECHNOLOGY, INC.
(74)【代理人】
【識別番号】110000626
【氏名又は名称】弁理士法人英知国際特許商標事務所
(72)【発明者】
【氏名】リン、グァンミン
(72)【発明者】
【氏名】キアン、シャオゾウ
(72)【発明者】
【氏名】ピ、シャオ ヤン
(72)【発明者】
【氏名】ティワリ、ビピン
(72)【発明者】
【氏名】ディン、ジェンリン
【審査官】松平 英
(56)【参考文献】
【文献】特開2017-224366(JP,A)
【文献】特開2019-220242(JP,A)
【文献】特表2017-525081(JP,A)
【文献】米国特許出願公開第2005/0055496(US,A1)
【文献】米国特許出願公開第2018/0046582(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 3/06-3/08
12/00-12/128
13/16-13/18
G11C 7/00-8/20
11/00
11/56
14/00
16/00-17/18
(57)【特許請求の範囲】
【請求項1】
ウェアレベリングを備えたEEPROMエミュレートシステムであって、
不揮発性メモリセルのアレイを備えるEEPROMエミュレートアレイと、
前記不揮発性メモリセルのアレイに結合されたウェアレベリングモジュールと、を備え、前記ウェアレベリングモジュールは、
プログラミング操作を行うプログラムコマンド、書き込みデータ、及び論理アドレスを受信することと、
前記論理アドレス及びインデックスビットに基づいて、前記不揮発性メモリセルのアレイ内の不揮発性メモリセルの物理ワードのセクタ内の現在のワードを読み出すことであって、前記ワードのセクタは、前記論理アドレスに対応し、最初の物理ワード、最後の物理ワード、及び前記最初の物理ワードと前記最後の物理ワードとの間の1つ以上の物理ワードを含む、読み出すことと、
前記書き込みデータが、前記現在のワード内の「1」であるビットに対して「0」を含まない場合、前記プログラミング操作をスキップすることと、
前記書き込みデータが、前記現在のワード内の「1」であるビットに対して「0」を含み、前記現在のワードが、前記セクタ内の前記最後の物理ワードである場合、前記現在のワード内の前記書き込みデータをプログラミングすること
により前記プログラミング操作を行うことと、
前記書き込みデータが、前記現在のワード内の「1」であるビットに対して「0」を含み、前記現在のワードが、前記セクタ内の前記最後の物理ワードではない場合、次のワードにおいて前記書き込みデータをプログラミングすること
により前記プログラミング操作を行うことと、を行うように構成されている、システム。
【請求項2】
前記インデックスビットは、インデックスワード内のビットである、請求項1に記載のシステム。
【請求項3】
前記インデックスワードは、ビットのセットを含み、前記インデックスワード内の各ビットは、前記アレイ内の物理ワードに対応する、請求項2に記載のシステム。
【請求項4】
前記インデックスワード内の各ビットは、前記アレイ内の対応する物理ワードが使用されているか否かを示す、請求項3に記載のシステム。
【請求項5】
前記セクタは、前記不揮発性メモリセルのアレイ内に2行の不揮発性メモリセルを備える、請求項1に記載のシステム。
【請求項6】
前記不揮発性メモリセルの各々は、ビット線端子、ソース線端子、ワード線端子、及び浮遊ゲートを備える、請求項1に記載のシステム。
【請求項7】
前記不揮発性メモリセルの各々は、制御ゲートを更に備える、請求項6に記載のシステム。
【請求項8】
前記不揮発性メモリセルの各々は、消去ゲートを更に備える、請求項7に記載のシステム。
【請求項9】
ウェアレベリングを備えたEEPROMエミュレートシステムであって、
不揮発性メモリセルのアレイを備えるEEPROMエミュレートアレイと、
前記不揮発性メモリセルのアレイに結合されたウェアレベリングモジュールと、を備え、前記ウェアレベリングモジュールは、
消去コマンド及び論理アドレスを受信することであって、前記論理アドレスは、前記不揮発性メモリセルのアレイ内の不揮発性メモリセルの物理ワードのセクタに対応し、前記セクタは、最初の物理ワード、最後の物理ワード、及び前記最初の物理ワードと前記最後の物理ワードとの間の1つ以上の物理ワードを含む、受信することと、
インデックスビットによって識別された現在のワードが、前記セクタ内の前記最後の物理ワードである場合、前記セクタを消去することと、
前記現在のワードが、前記セクタ内の前記最後の物理ワードではない場合、次のインデックスビットを変えることと、を行なうように構成されている、システム。
【請求項10】
前記インデックスビットは、インデックスワード内のビットである、請求項9に記載のシステム。
【請求項11】
前記インデックスワードは、ビットのセットを含み、前記インデックスワード内の各ビットは、前記アレイ内の物理ワードに対応する、請求項10に記載のシステム。
【請求項12】
前記インデックスワードの各ビットは、前記アレイ内の対応する物理ワードが使用されているか否かを示す、請求項11に記載のシステム。
【請求項13】
前記インデックスワード内の次の
インデックスビットを変える
ことは
、次のワードに対応するビット位置の前記インデックスワードに「0」をプログラミングすることを含む、請求項12に記載のシステム。
【請求項14】
前記セクタは、前記不揮発性メモリセルのアレイ内に2行の不揮発性メモリセルを備える、請求項9に記載のシステム。
【請求項15】
前記不揮発性メモリセルの各々は、ビット線端子、ソース線端子、ワード線端子、及び浮遊ゲートを備える、請求項9に記載のシステム。
【請求項16】
前記不揮発性メモリセルの各々は、制御ゲートを更に備える、請求項15に記載のシステム。
【請求項17】
前記不揮発性メモリセルの各々は、消去ゲートを更に備える、請求項16に記載のシステム。
【発明の詳細な説明】
【技術分野】
【0001】
(優先権の主張)
本出願は、2020年2月21日に出願され「Wear Leveling In EEPROM Emulator Formed Of Flash Memory Cells」と題する中国特許出願第202010106388.9号、及び、2020年8月28日に出願され「Wear Leveling In EEPROM Emulator Formed Of Flash Memory Cells」と題する米国特許出願第17/006,550号の優先権を主張する。
【0002】
(発明の分野)
本発明は、フラッシュメモリセルで形成された電気的消去可能プログラマブル読み出し専用メモリ(EEPROM)エミュレータでウェアレベリングを実施するためのシステム及び方法に関する。
【背景技術】
【0003】
不揮発性メモリセルは、当該技術分野において周知である。第1の種類の先行技術の不揮発性メモリセル110を
図1に示す。メモリセル110は、P型などの第1の導電型の半導体基板112を備える。基板112は、N型などの第2の導電型の第1の領域114(ソース線SL端子としても知られる)が形成され、それは典型的にはソース線(図示せず)に接続されている、表面を有する。同様にN型である第2の領域116(ドレイン線としても知られる)が、基板112の表面に形成される。第1の領域114と第2の領域116との間は、チャネル領域118である。ビット線BL端子120は、第2の領域116に接続され、典型的には、ビット線(図示せず)に接続される。ワード線WL端子122は、チャネル領域118の第1の部分の上に位置付けられ、そこから絶縁され、典型的には、ワード線(図示せず)に接続される。ワード線端子122は、第2の領域116とほとんど又は全く重ならない。浮遊ゲートFG124は、チャネル領域118の別の部分の上方にある。浮遊ゲート124は、そこから絶縁され、ワード線端子122に隣接し、そこから絶縁されている。浮遊ゲート124はまた、第1の領域114にも隣接する。浮遊ゲート124は、第1の領域114に大きく重なって、第1の領域114から浮遊ゲート124に強い結合を提供し得る。
【0004】
先行技術の不揮発性メモリセル110の消去及びプログラムのための1つの例示的な動作は、次のとおりである。不揮発性メモリセル110は、ワード線端子122に高電圧を印加し、ビット線端子120及びソース線端子114に0ボルトを印加することにより、ファウラーノルドハイムトンネリングメカニズムを通じて消去される。電子が浮遊ゲート124からワード線端子122にトンネリングすることにより、浮遊ゲート124に陽電荷を帯びさせ、読み出し状態において不揮発性メモリセル110をオンにする。その結果生じるセルの消去状態は、「1」状態として知られる。セル110は、ソース線114に高電圧を印加し、ワード線端子122に小電圧を印加し、ビット線端子120にプログラミング電流を印加することにより、ソース側ホットエレクトロンプログラミングメカニズムを通じてプログラムされる。ワード線端子122と浮遊ゲート124との間の隙間を横切って流れる電子の一部分は、浮遊ゲート124の中へ注入するための十分なエネルギーを得ることにより、浮遊ゲート124に陰電荷を帯びさせ、読み出し状態において不揮発性メモリセル110をオフにする。その結果生じる不揮発性メモリセルのプログラムされた状態は、「0」状態として知られる。
【0005】
メモリセル110内での読み出し、プログラム、消去、及びスタンバイ操作に使用可能な例示的な電圧を下の表1に示す。
【表1】
【0006】
第2の種類の先行技術の不揮発性メモリセル210を
図2に示す。不揮発性メモリセル210は、P型などの第1の導電型の半導体基板212を備える。基板212は、N型などの第2の導電型の第1の領域214(ソース線SL端子としても知られる)が形成され、それは典型的にはソース線(図示せず)に接続されている、表面を有する。同様にN型である第2の領域216(ドレイン線としても知られる)が、基板212の表面に形成されている。第1の領域214と第2の領域216との間は、チャネル領域218である。ビット線BL端子220は、第2の領域216に接続され、典型的にはビット線(図示せず)に接続されている。ワード線WL端子222は、チャネル領域218の第1の部分の上に位置付けられ、そこから絶縁され、典型的にはワード線(図示せず)に接続されている。ワード線端子222は、第2の領域216とほとんど又は全く重ならない。浮遊ゲートFG224は、チャネル領域218の別の部分の上方にある。浮遊ゲート224は、そこから絶縁され、ワード線端子222に隣接し、そこから絶縁されている。浮遊ゲート224はまた、第1の領域214にも隣接している。浮遊ゲート224は、第1の領域214に重なり、第1の領域214から浮遊ゲート224への結合を提供し得る。結合ゲートCG端子(制御ゲート端子としても知られている)226は、浮遊ゲート224の上方にあり、そこから絶縁され、また、ワード線端子222から絶縁され、典型的には結合ゲート又は制御ゲート(図示せず)に接続されている。
【0007】
先行技術の不揮発性メモリセル210の消去及びプログラムのための1つの例示的な動作は、次のとおりである。不揮発性メモリセル210は、ワード線端子222に高電圧を印加し、他の端子が0ボルトと等しくなることにより、ファウラーノルドハイムトンネリングメカニズムを通じて消去される。電子が浮遊ゲート224からワード線端子222にトンネリングして陽電荷を帯び、読み出し状態においてセル210をオンにする。その結果生じる不揮発性メモリセルの消去状態は、「1」状態として知られる。不揮発性メモリセル210は、結合ゲート端子226に高電圧を印加し、ソース線端子214に高電圧を印加し、ビット線端子220にプログラミング電流を印加することにより、ソース側ホットエレクトロンプログラミングメカニズムを通じてプログラムされる。ワード線端子222と浮遊ゲート224との間の隙間を横切って流れる電子の一部分は、浮遊ゲート224の中へ注入するための十分なエネルギーを得ることにより、浮遊ゲート224に陰電荷を帯びさせ、読み出し状態において不揮発性メモリセル210をオフにする。その結果生じる不揮発性メモリセルのプログラムされた状態は、「0」状態として知られる。
【0008】
メモリセル210内での読み出し、プログラム、消去、及びスタンバイ操作に使用可能な例示的な電圧を下の表2に示す。
【表2】
【0009】
不揮発性メモリセル210で読み出し、プログラム、及び消去操作に使用することができる例示的な電圧の別のセット(読み出し及びプログラム操作に負電圧を使用することができる場合)を下の表3に示す。
【表3】
【0010】
不揮発性メモリセル210で読み出し、プログラム、及び消去操作に使用することができる例示的な電圧の別のセット(読み出し、プログラム、及び消去操作に負電圧を使用することができる場合)を下の表4に示す。
【表4】
【0011】
第3の種類の不揮発性メモリセル310を
図3に示す。不揮発性メモリセル310は、P型などの第1の導電型の半導体基板312を備える。基板312は、N型などの第2導電型の第1領域314(ソース線SL端子としても知られる)が形成され、それは典型的にはソース線(図示せず)に接続されている、表面を有する。同様にN型である第2の領域316(ドレイン線としても知られる)が、基板312の表面に形成されている。第1の領域314と第2の領域316との間は、チャネル領域318である。ビット線BL端子320は、第2の領域316に接続され、典型的にはビット線(図示せず)に接続されている。ワード線WL端子322は、チャネル領域318の第1の部分の上に位置付けられ、そこから絶縁され、典型的にはワード線(図示せず)に接続されている。ワード線端子322は、第2の領域316とほとんど又は全く重ならない。浮遊ゲートFG324は、チャネル領域318の別の部分の上方にある。浮遊ゲート324は、そこから絶縁され、ワード線端子322に隣接し、そこから絶縁されている。浮遊ゲート324はまた、第1の領域314にも隣接している。浮遊ゲート324は、第1の領域314に重なり、第1の領域314から浮遊ゲート324への結合を提供し得る。結合ゲートCG端子(制御ゲート端子としても知られる)326は、浮遊ゲート324の上方にあり、そこから絶縁され、典型的には結合ゲート線又は制御ゲート線(図示せず)に接続されている。消去ゲートEG端子328は、第1の領域314の上方にあり、浮遊ゲート324及び結合ゲート端子326に隣接し、そこから絶縁され、典型的には消去ゲート線(図示せず)に接続されている。浮遊ゲート324の上角部は、消去効率を高めるために、T字形状の消去ゲート328の入隅部の方を向いていてもよい。消去ゲート328は、第1の領域314からも絶縁される。不揮発性メモリセル310は、米国特許第7,868,375号においてより具体的に説明されており、それは、参照によりその全体が本明細書に組み込まれる。
【0012】
先行技術の不揮発性メモリセル310の消去及びプログラムのための1つの例示的な動作は、次のとおりである。不揮発性メモリセル310は、消去ゲート端子328に高電圧を印加し、他の端子が0ボルトに等しくなることによって、ファウラーノルドハイムトンネリングメカニズムを通じて消去される。電子が浮遊ゲート324から消去ゲート端子328にトンネリングすることにより、浮遊ゲート324に陽電荷を帯びさせ、読み出し状態において不揮発性メモリセル310をオンにする。その結果生じる不揮発性メモリセルの消去状態は、「1」状態として知られる。不揮発性メモリセル310は、結合ゲート端子326に高電圧を印加し、ソース線端子314に高電圧を印加し、消去ゲート端子328に中電圧を印加し、ビット線端子320にプログラミング電流を印加することにより、ソース側ホットエレクトロンプログラミングメカニズムを通じてプログラムされる。ワード線端子322と浮遊ゲート324との間の隙間を横切って流れる電子の一部分は、浮遊ゲート324の中へ注入するための十分なエネルギーを得ることにより、浮遊ゲート324に陰電荷を帯びさせ、読み出し状態において不揮発性メモリセル310をオフにする。その結果生じる不揮発性メモリセルのプログラムされた状態は、「0」状態として知られる。
【0013】
不揮発性メモリセル310での読み出し、プログラム、及び消去操作に使用可能な例示的な電圧を下の表5に示す。
【表5】
【0014】
プログラミング操作に関して、プログラミング操作を強化するために、EG電圧は、SL電圧、例えば5Vよりはるかに高い電圧、例えば8V、で印加することができる。この場合、選択された不揮発性メモリセルと同じEGゲート328を共有する隣接メモリセルの意図しない消去効果を低減するために、非選択のCGプログラム電圧は、より高い電圧(CG禁止電圧)、例えば6V、で印加される。
【0015】
不揮発性メモリセル310で読み出し、プログラム、及び消去操作に使用することができる例示的な電圧の別のセット(読み出し及びプログラム操作に負電圧を使用することができる場合)を下の表6に示す。
【表6】
【0016】
不揮発性メモリセル310で読み出し、プログラム、及び消去操作に使用することができる例示的な電圧の別のセット(読み出し、プログラム、及び消去操作に負電圧を使用することができる場合)を下の表7に示す。
【表7】
【0017】
プログラミング操作に関して、プログラミング操作を強化するために、EG電圧は、SL電圧、例えば5Vよりはるかに高い電圧、例えば8~9V、で印加される。この場合、選択された不揮発性メモリセル310と同じEGゲート328を共有する隣接メモリセルの意図しない消去効果を低減するために、非選択のCGプログラム電圧は、より高い電圧(CG禁止電圧)、例えば5V、で印加される。
【0018】
図1~
図3に示した種類の不揮発性メモリセルは、しばしばフラッシュメモリセルと呼ばれる。フラッシュメモリセルは、典型的には、行及び列に配置されてアレイを形成する。ワード線はメモリセルの行全体を制御し、(
図3に示した種類の)消去ゲートは、これが存在する場合、メモリセルの行の対によって共有されるので、消去操作は、行全体又は行の対に対して同時に実行される。したがって、
図1~
図3に示した種類のメモリセルを使用する従来技術のメモリシステムでは、一度に1バイトのデータ又は1バイトのデータ対のみを消去することは不可能である。
【0019】
また従来技術で知られているものに、EEPROM装置がある。
図1~
図3のフラッシュメモリセルと同様に、EEPROM装置は不揮発性メモリ装置である。しかし、
図1~
図3のメモリセルを利用するシテムの場合とは異なり、EEPROM装置では、セルを1バイトずつ消去することができる。EEPROMセルサイズは、典型的にはフラッシュメモリセルサイズよりはるかに大きい。
【0020】
出願人は、「Flash Memory System With EEPROM Functionality」と題された、2014年8月8日に出願された米国特許出願第14/455,698号においてEEPROM装置をエミュレートすることができ、バイトごとのベースで消去することができるフラッシュメモリ装置を以前に開示し、米国特許第9,286,982号として発行され、それは、参照により本明細書に組み込まれる。
【0021】
図4~
図6は、米国特許出願第14/455,698号の開示と一致する、先行技術のEEPROMエミュレータとして使用することができるフラッシュメモリシステムの一実施形態を示す。
【0022】
図4は、バイト401及び402を含む例示的なワード400を示す。バイト401は、不揮発性メモリセル403-0、403-1、...、及び403-7を含む。バイト402は、不揮発性メモリセル403-8、403-9、...、及び403-15を含む。こうして、各不揮発性メモリセルは、典型的には、1ビット(すなわち、「0」又は「1」)を記憶する。8ビットはバイトを形成し、2バイトはワードを形成する。
【0023】
図5は、ワード400-0、400-1、...、及び400-15を含む例示的なセクタ500を示す。こうして、各セクタは、2つの隣接するワード行を含む。この例では、各行は、8個のワードを含む。2つの隣接するワードの行は、典型的には、別個のワード線を有するが、共有ソース線及び/又は消去ゲート線を有する。
【0024】
図6は、セクタ500-0、500-1、...、及び500-iを含む例示的なアレイ610を示し、アレイ610は、i+1のセクタを含む。デコーダ600は、典型的には、不揮発性メモリシステムの外部のソースから論理アドレス601を受信する。デコーダ600は、物理アドレス603の制御信号602を出力する。物理アドレス603は、通常、列番号及び行番号を含む、メモリアレイ内の物理的場所の一意のアドレスである。制御信号602は、物理アドレス603の行及び列をアサートする。デコーダ600は、論理回路及び/又はソフトウェアを実行するコントローラ又はプロセッサを含むことができる。
【0025】
EEPROM装置をエミュレートするフラッシュメモリシステムは、不均一なウェアのリスクがある。具体的には、プログラミング及び消去操作は、物理デバイスにストレスを引き起こし、経時的に、デバイスは使用不可になる。これは、物理デバイスの同じ部分が何度も何度も使用される場合に特に当てはまる。加えて、そのようなデバイスは、「プログラムディスターブ」と呼ばれる現象の影響を受けやすい。プログラムディスターブは、不揮発性メモリセルが消去される前に数回プログラムされるときに発生する。そのような状況では、その不揮発性メモリセルに隣接する不揮発性メモリセルは、プログラミング操作中にセルに印加される電圧のために不注意にプログラムされることになり得る。これは、システムがそうすることを意図しなかったときに、隣接する不揮発性メモリセルをプログラミングするという望ましくない影響を有することになる。
【0026】
これらの問題は、ウェアレベリング技術を実施することによって少なくとも部分的に軽減することができる。
図7は、デコーダ600によって、又はデコーダ600の外部の論理によって実施され得る先行技術のウェアレベリング方法700を示す。この例では、セクタ500はEEPROMワード710として使用され、これはEEPROMエミュレータが単一ワードのデータ(典型的には2バイト)を記憶するユニットである。セクタ500は16個の物理ワード(400-0、...400-15)を含むため、これは、単一のEEPROMワード710が、それが記憶され得る16個の物理的場所に対応すること、すなわち、EEPROMワード710は、16個の物理的場所のいずれかに記憶され得ることを意味する。
【0027】
先行技術のウェアレベリング方法700では、EEPROMワード710が最初にプログラムされるとき、そのデータは、ワード400-0に書き込まれる。EEPROMワード710が更新されるとき、ワードワード400-0を消去し、更新されたデータでワード400-0をプログラミングするのではなく、更新されたデータは、代わりにワード400-1に書き込まれる。この時点で、ワード400-0に記憶されたデータは古くなっている。EEPROMワード710の各後続のプログラミング操作は、16番目のプログラミング操作のために、ワード400-15がプログラムされるまで、セクタ500の次のワード400を使用する。この時点で、セクション500の各ワードは、最後の消去操作以降に1回プログラムされている。更に別のプログラミング操作がEEPROMワード710に対して命令されるとき、システムはセクタ消去を実行し、セクタ500を消去し、次いでデータをワード400-0にプログラムし、こうしてプロセスを最初からやり直す。当業者は、先行技術のウェアレベリング方法700が、特定の場所においてウェアを集中させる代わりに、セクタ500の全ての部分の中に「ウェア」を広げることを理解するであろう。
【0028】
先行技術のウェアレベリング方法700は有益であるが、それはまた幾分制限的である。具体的には、フラッシュメモリ装置から構築されたEEPROMエミュレータは、ビットレベルプログラミングが可能(バイトレベル又はワードレベルプログラミングだけでなく)であるため、ウェアレベリングに対する粗いアプローチである。
【0029】
必要とされるのは、ビットレベルプログラミングを実行する能力を含む装置の機能を十分に利用し、プログラムディスターブ現象を相殺する様態でEEPROM装置をエミュレートするフラッシュメモリシステムにおいてウェアレベリングを実施するための改善されたシステム及び方法である。
【発明の概要】
【0030】
本発明は、EEPROMをエミュレートするフラッシュメモリ装置においてウェアレベリングを実施するためのシステム及び方法に関する。実施形態は、エミュレートEEPROM内の各論理アドレスに対するインデックスワードを記憶するインデックスアレイを利用する。各インデックスワードの各ビットは、エミュレートEEPROM内の物理ワードの物理アドレスと関連付けられ、インデックスワードは、どの物理ワードが特定の論理アドレスの現在のワードであるかを記録する。インデックスワードの使用は、(i)現在のワードに記憶されたデータが、記憶されようとするデータの「0」に対応する「1」を含まない場合、プログラミング操作をスキップする、(ii)特定の状況において現在のワードの1つ以上のビットを再プログラミングする、又は(iii)特定の状況において次の物理ワードにシフトしてプログラミングする、という結果をもたらすように論理アドレスへのプログラミングコマンドを可能にするウェアレベリングアルゴリズムを有効にする。
【0031】
【0032】
【0033】
【0034】
【0035】
【0036】
【0037】
【0038】
【0039】
【0040】
【0041】
【図面の簡単な説明】
【0042】
【
図1】本発明の方法を適用することができる先行技術の不揮発性メモリセルの断面図である。
【
図2】本発明の方法を適用することができる先行技術の不揮発性メモリセルの断面図である。
【
図3】本発明の方法を適用することができる先行技術の不揮発性メモリセルの断面図である。
【
図4】ワードを形成する不揮発性メモリセルを示す。
【
図5】セクタを形成する不揮発性メモリセルのワードを示す。
【
図6】デコーダとともにアレイを形成する不揮発性メモリセルのセクタを示す。
【
図9】
図8のウェアレベリングシステムにおける、例示的なインデックスワードを示す。
【
図10】
図8のウェアレベリングシステムにおける、入力された例示的なインデックスワードを示す。
【発明を実施するための形態】
【0043】
図8は、ウェアレベリング800を有する改善されたEEPROMエミュレートシステムを示す。システム800は、インデックスアレイ802、ウェアレベリングモジュール804、及びEEPROMエミュレートアレイ807を備える。インデックスアレイ802は、論理アドレス801を受信し、インデックスワード803を出力する。ウェアレベリングモジュール804は、インデックスワード803、論理アドレス801、コマンド808(例えば、プログラム、消去、又は読み出しコマンド)、及び書き込みデータ809(例えば、プログラム操作中に書き込まれるデータ)を受信し、物理アドレス806の制御信号805を出力する。物理アドレス806は、通常、列番号及び行番号を含む、EEPROMエミュレートアレイ807内の物理的場所の一意のアドレスである。制御信号805は、物理アドレス806の行及び列をアサートし、それによって、読み出し、消去、又はプログラミング操作が物理アドレス806で発生することを可能にする。インデックスアレイ802は、EEPROMエミュレートアレイ807内の各セクタの別個のインデックスワードを含む。ウェアレベリングモジュール804は、ソフトウェア命令、組合せ論理、又は他の既知の技術を実行するプロセッサ又はコントローラを使用して実施される。
【0044】
一例を
図9に示す。ここで、インデックスワード803は、EEPROMエミュレートアレイ807内のセクタ500に対応する。インデックスワード803は、16個のインデックスビット、804-0、804-1、...、804-15を含む。インデックスビット804-0は物理ワード400-0に対応し、インデックスビット804-1は物理ワード400-1に対応し、インデックスビット804-2は物理ワード400-2に対応し、インデックスビット804-3は物理ワード400-3に対応し、インデックスビット804-4は物理ワード400-4に対応し、インデックスビット804-5は物理ワード400-5に対応し、インデックスビット804-6は物理ワード400-6に対応し、インデックスビット804-7は物理ワード400-7に対応し、インデックスビット804-8は物理ワード400-8に対応し、インデックスビット804-9は物理ワード400-9に対応し、インデックスビット804-10は物理ワード400-10に対応し、インデックスビット804-11は物理ワード400-11に対応し、インデックスビット804-12は物理ワード400-12に対応し、インデックスビット804-13は物理ワード400-13に対応し、インデックスビット804-14は物理ワード400-14に対応し、インデックスビット804-15は物理ワード400-15に対応する。物理ワード400-0は、セクタ500内の最初の物理ワードであり、物理ワード400-15は、セクタ500内の最後の物理ワードである。
【0045】
図10を参照すると、インデックスワード803の各特定のインデックスビット804は、その対応する物理ワードが使用されていない場合、「1」に設定され、その対応する物理ワードが使用されている場合、又は使用された場合、「0」に設定される。ここで、ビット804-1及び804-0は、物理ワード400-1及び400-0が使用されているか、又は使用されたことを示す「0」に設定され、ビット804-0は、最下位ビットである。このシステムでは、「0」を含む最上位ビットは、現在のワード1010とラベル付けされた、ごく最近にプログラムされた現在のワードに対応し、これは、この例では物理ワード400-1である。この例では、物理ワード400-0は以前に使用されていたが(その時点では、物理ワード400-0が現在のワード1010であった)、現在は「古くなった」データを保持している。
【0046】
図11は、インデックスアレイ802及びインデックスワード803などのインデックスワードを利用するウェアレベリング方法1100を示す。インデックスアレイ802及びインデックスワードの使用は、プログラム操作が発生したときに、システムが次のワードに自動的に進む必要がもはやないため、先行技術のウェアレベリング方法700より高い能力をシステムにもたらす。代わりに、
図12A、
図12B、及び
図12Cを参照して以下でより詳細に論じられるように、場合によっては、システムは、現在のワード内の特定のビットをプログラムするか、必要に応じて現在のワード内の特定のビットをプログラミングすることをスキップすることになる。
【0047】
図12A、
図12B、及び
図12Cは、システム800(
図8に以前に示されている)及びそれがウェアレベリング方法1100(
図11に以前に示されている)をどのように実行するかに関する追加の詳細を示す。有利なことに、本実施形態のEEPROMエミュレータは、個々のビットプログラミングを依然として可能にしながらウェアレベリングを実行する。
【0048】
ステップ1201において、ウェアレベリングモジュール804は、コマンド808、論理アドレス801、インデックスワード803、及び書き込みデータ809(コマンド808がプログラムコマンドであるとき)を受信し、ステップ1202に進む。
【0049】
ステップ1202において、ウェアレベリングモジュール804は、論理アドレス801及びインデックスワード803を使用して、EEPROMエミュレートアレイ807内の現在のワード1010を読み出し、ステップ1203に進む。
【0050】
ステップ1203において、ウェアレベリングモジュール804は、コマンド808がプログラムコマンドであるかどうかを判定する。はいの場合、それはステップ1204に進む。いいえの場合、それはステップ1212に進む。
【0051】
ステップ1204において、ウェアレベリングモジュール804は、現在のワード1010及び書き込みデータ809に基づいてマスク1220を生成し、ステップ1205に進む。マスク1220は、表8に従って生成される。
【表8】
【0052】
ステップ1205において、ウェアレベリングモジュール804は、マスク1220が少なくとも1つの「0」(マスクされていない)ビットを含むかどうかを判定する。はいの場合、それはステップ1207に進む。いいえの場合、それはステップ1206に進む。
【0053】
ステップ1206において、ウェアレベリングモジュール804は、プログラム操作をスキップする。それは、データ809が現在のワード1010に記憶された「1」に対応する「0」を含まないため、プログラム操作によってデータ809を記憶することができないと結論付けたためである。プログラム操作は、「1」を「0」に変えるのみ(及び「0」を「1」ではない)であり得るため、プログラム操作を通じて達成されることは何もない。書き込みデータ809は、現在のワードに記憶された「0」に対応する「1」を含むこと、及び、記憶されることが意図されているデータ(書き込みデータ809)と実際に記憶されたデータ(現在のワード1010)との間のミスマッチが存在することが可能である。外部システムは、任意選択的に、EEPROMワード710が、記憶されることが意図されるデータ(書き込みデータ809)を正しく記憶することを確実にするために、読み出し検証操作を実行することができる。検証操作が失敗するとき、外部システムは、次いで、消去操作を実行し、次に、書き込みデータ809を再びプログラムすることができる。表8に示されるように、有利なことに、ビットは2回プログラムされず、それは、隣接するセルのプログラム障害を防止し、耐久性を増加させる。
【0054】
ステップ1207において、ウェアレベリングモジュール804は、現在のワード1010がセクタ500内の最後の物理ワードであるかどうかを判定する。はいの場合、それはステップ1208に進む。いいえの場合、それはステップ1209に進む。
【0055】
ステップ1208において、ウェアレベリングモジュール804は、物理アドレス806(ここでは現在のワードに関連付けられた物理アドレスである)の制御信号805をアサートし、マスク1220に従ってマスクされていないビットのEEPROエミュレートアレイ807内の物理アドレス806にデータ809をプログラミングすることによって、現在のワード1010にデータ809をプログラムする。書き込みデータ809は、現在のワード1010に記憶された「0」に対応する「1」を含むことが可能であり、また、記憶されることが意図されるデータ(書き込みデータ809)と実際に記憶されているデータ(現在のワード1010)との間のミスマッチが存在することが可能である。外部システムは、任意選択的に、EEPROMワード710が、記憶されることが意図されるデータ(書き込みデータ809)を正しく記憶することを確実にするために、読み出し検証操作を実行することができる。検証操作が失敗するとき、外部システムは、次いで、消去操作を実行し、次に、書き込みデータ809を再びプログラムすることができる。とりわけ、最後の物理ワードが、最後の消去操作以降に以前にプログラムされている可能性があるため、プログラム障害の可能性が増加する。しかしながら、これは、以前のワードがすでに「古くなったデータ」を含み、そのデータが乱されても、システムの完全性に影響を及ぼさないため、許容可能な結果である。また、最後の物理ワードの隣に後続の物理ワードはないため、最後の物理ワードのその側で発生するプログラム障害の懸念はない。
【0056】
ステップ1209において、ウェアレベリングモジュール804は、現在のワード1010が全て「1」を含むかどうかを判定する。はいである場合、ステップ1210に進む。いいえの場合、それはステップ1211に進む。
【0057】
ステップ1210において、ウェアレベリングモジュール804は、現在のワード1010にデータ809をプログラムする。現在のワード1010は、プログラミング操作の前に消去状態(全て「1」)にあったため、ミスマッチは発生しない。更に、現在のワード1010は最後に消去されてからプログラムされていないため、プログラム障害が発生する懸念はない。ウェアレベリングモジュール804は、物理アドレス806(ここでは現在のワード1010に関連付けられた物理アドレスである)の制御信号805をアサートし、マスク1220に従ってマスクされていないビットについてEEPROMエミュレートアレイ807内の物理アドレス806にデータ809をプログラミングすることによって、現在のワード1010にデータをプログラムする。
【0058】
ステップ1211において、ウェアレベリングモジュール804は、次のワードにデータ809をプログラムし、インデックスワード803の次のワードにシフトする。ステップ1209において、現在のワード1010が消去状態(全て「1」)ではないと判定されたためこれを行ない、それは、現在のワード1010がすでにプログラムされていることを意味する。シフトは、プログラム障害が発生する可能性を回避するために実施される。ウェアレベリングモジュール804は、物理アドレス806(ここでは、次のワードと関連付けられた物理アドレスである)の制御信号805をアサートし、EEPROMエミュレートアレイ807内の物理アドレス806にデータ809をプログラミングすることによって、次のワードにデータをプログラムする。次のワードのインデックスビットを「1」から「0」に変えることによって、インデックスワード803の次のビットにシフトする(それ自体がインデックスワード803にプログラム操作を必要とする)。
【0059】
ステップ1212において、ウェアレベリングモジュール804は、コマンド808が消去コマンドであるかどうかを判定する。はいの場合、それはステップ1213に進む。いいえの場合、それはステップ1216に進む。
【0060】
ステップ1213において、ウェアレベリングモジュール804は、現在のワードがセクタ500内の最後の物理ワード(現在のワードがワード400-15であることを意味し、インデックスビット804-15が「0」であることによって示される)であるかどうかを判定する。はいの場合、それはステップ1214に進む。いいえの場合、それはステップ1215に進む。
【0061】
ステップ1214において、ウェアレベリングモジュール804は、セクタ500にセクタ消去を実行し、これは、ワード400-0、400-1、...、400-15の全てのビットを「1」に変えさせ、これはまた、インデックスワード803の全てのビットが「1」に変えられるように、インデックスワード803を消去する。
【0062】
ステップ1215において、ウェアレベリングモジュール804は、消去操作をスキップし、代わりに、次の物理ワードのインデックスビットを「1」から「0」に変えることによって、インデックスワード803の次のビットにシフトする(それ自体がインデックスワード803にプログラム操作を必要とする)。これは、まだプログラムされておらず、全て「1」を含む次のワードに進むため、事実上消去と同じである。
【0063】
ステップ1216において、ウェアレベリングモジュール804は、コマンド808が読み出しコマンドであることを推定することができるため、読み出し動作を実行する。それは、物理アドレス806(ここでは現在のワード1010に関連付けられた物理アドレスである)の制御信号805をアサートし、EEPROMエミュレートアレイ807内の物理アドレス806からデータを読み出すことによって、読み出しを実行する。
【0064】
本明細書に記載の実施形態は、先行技術のウェアレベリング方法700に対する以下の利点を有する。
・実施形態において、各特定のビットは、そのビットの消去操作の間に1回より多く「0」値にプログラムされず、これは、プログラムディスターブ現象を低減する。
・実施形態は、ビットプログラミングを可能にしながらウェアレベリングを実行するが、一方、先行技術のウェアレベリング方法700では、ワードレベルプログラミングのみが可能である。
・実施形態がセクタ消去コマンドを受信するとき、現在のワードがセクタ内の最後のワードとなる時点まで消去を実行することなく次のワードにシフトする。
【0065】
本明細書で使用される場合、「の上方に(over)」及び「に(on)」という用語は両方とも、「の上に直接」(中間材料、要素、又は間隙がそれらの間に配設されていない)、及び「の上に間接的に」(中間材料、要素、又は間隙がそれらの間に配設されている)を包括的に含むことに留意されるべきである。同様に、「隣接した」という用語は、「直接隣接した」(中間材料、要素、又は間隙がそれらの間に配設されていない)、及び「間接的に隣接した」(中間材料、要素、又は間隙がそれらの間に配設されている)を含み、「に取り付けられた」は、「に直接取り付けられた」(中間材料、要素、又は間隙がそれらの間に配設されていない)、及び「に間接的に取り付けられた」(中間材料、要素、又は間隙がそれらの間に配設されている)を含み、「電気的に結合された」は、「に直接電気的に結合された」(要素を一緒に電気的に接続する中間材料又は要素がそれらの間にない)、及び「に間接的に電気的に結合された」(要素を一緒に電気的に接続する中間材料又は要素がそれらの間にある)を含む。例えば、要素を「基板の上方に」形成することは、その要素を基板に直接、中間材料/要素をそれらの間に伴わずに形成すること、及びその要素を基板の上に間接的に1つ以上の中間材料/要素をそれらの間に伴って形成することを含み得る。