JP6213040B2 - 半導体記憶装置および半導体記憶装置の制御方法 - Google Patents

半導体記憶装置および半導体記憶装置の制御方法 Download PDF

Info

Publication number
JP6213040B2
JP6213040B2 JP2013169707A JP2013169707A JP6213040B2 JP 6213040 B2 JP6213040 B2 JP 6213040B2 JP 2013169707 A JP2013169707 A JP 2013169707A JP 2013169707 A JP2013169707 A JP 2013169707A JP 6213040 B2 JP6213040 B2 JP 6213040B2
Authority
JP
Japan
Prior art keywords
address
mask
memory device
semiconductor memory
swap
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2013169707A
Other languages
English (en)
Other versions
JP2015038698A (ja
Inventor
清己 柴田
清己 柴田
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2013169707A priority Critical patent/JP6213040B2/ja
Priority to US14/295,097 priority patent/US9448925B2/en
Publication of JP2015038698A publication Critical patent/JP2015038698A/ja
Application granted granted Critical
Publication of JP6213040B2 publication Critical patent/JP6213040B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7211Wear leveling

Description

開示の技術は、半導体記憶装置および半導体記憶装置の制御方法に関する。
一般に、高集積・大容量の不揮発性半導体記憶装置(メモリ)は、書き換え回数が有限であり、アクセスが限定された部分(アドレス)に集中すると、アクセスが集中した部分が他の部分に比べて早期に劣化し、記憶動作不能となる場合がある。この問題が発生すると、メモリの故障となる。
そこで、各部分(アドレス)に対する書き換え回数を平準化するウェアレベリングを行うことが提案されている。メモリにアクセスする場合、外部から入力される論理アドレスを物理アドレスに変換し、物理アドレスをデコードしてメモリ内の記憶セルにアクセスする。一般のメモリでは、論理アドレスと物理アドレスの関係は固定である。ウェアレベリングを行う場合には、論理アドレスをアドレス変換情報に基づいて物理アドレスに変換するアドレス変換部を設け、アドレス変換情報を適宜変更する。
しかし、書き込まれたデータは、元の物理アドレスでアクセスする必要があるため、アドレス変換情報を変更すると記憶してあるデータにアクセスできない。そこで、書き込まれたデータの消去要求や初期化要求があり、記憶してあるデータにアクセスする必要がなくなった時に、アドレス変換情報を変更する。なお、物理アドレス空間を複数のブロックに分け、アドレス変換をブロック単位で行う場合もある。
特開平09−293386号公報 特開2007−184072号公報 特開2008−287803号公報 特開2012−027991号公報 米国特許出願公開第2012/0204071号明細書
Moinuddin K. Qureshi, John Karidis, Michele Franceschini, Vijayalakshmi Srinivasan, Luis Lastras, and Bulent Abali. 2009. Enhancing lifetime and security of PCM-based main memory with start-gap wear leveling. In Proceedings of the 42nd Annual IEEE/ACM International Symposium on Microarchitecture (MICRO 42)
アドレス変換情報の変更がメモリの初期化要求時やデータの消去要求時に限定される場合、応用によっては、アドレス変換情報変更の頻度が低くなり、ウェアレベリングの効果が得られない場合がある。
開示の実施形態は、アドレス変換情報の変更時期が限定されない半導体記憶装置を開示する。
第1の態様の半導体記憶装置は、記憶部と、アドレス変換部と、制御部と、を有する。アドレス変換部は、記憶部へアクセスする論理アドレスを、アドレス変換情報に基づいて物理アドレスに変換する。制御部は、アドレス変換情報をアドレス変換部へ出力し、アドレス変換情報の変更時に、記憶部における、変更前のアドレス変換情報に基づく旧物理アドレスのデータと変更後のアドレス変換情報に基づく新物理アドレスのデータとを交換するスワップ処理を行う。
第2の態様の半導体記憶装置の制御方法は、半導体記憶装置へアクセスする論理アドレスを、アドレス変換情報に基づいて物理アドレスに変換する。制御方法は、アドレス変換情報を変更し、アドレス変換情報の変更時に、記憶部における、変更前のアドレス変換情報に基づく旧物理アドレスのデータと変更後のアドレス変換情報に基づく新物理アドレスのデータとを交換するスワップ処理を行う。
第1の態様によれば、ウェアレベリングのためのアドレス変換情報の変更時期が限定されない上、スワップ処理の対象となるメモリセルの選択アルゴリズムが単純であるために、高速の動作が可能で、単純な構成にできる半導体記憶装置が実現される。
図1は、実施形態の半導体記憶装置(メモリ)の概要を説明する図である。 図2は、実施形態の半導体記憶装置(メモリ)の概略構成を示す図である。 図3は、実施形態の半導体記憶装置(メモリ)のより詳細な構成を示す図である。 図4は、アドレス変換(XOR)部の回路構成を示す図である。 図5は、スワップ処理部を含む制御部の全体の動作を示すフローチャートである。 図6は、第1実施形態の半導体記憶装置における書き込み処理を示すフローチャートである。 図7は、第1実施形態の半導体記憶装置における読み出し処理を示すフローチャートである。 図8は、旧反転マスクの新反転マスクへの更新処理を示すフローチャートである。 図9は、新反転マスクの生成方法を示すフローチャートである。 図10は、スワップ処理を示すフローチャートである。 図11は、反転マスク更新を起動する処理を示すフローチャートである。 図12は、動作時間に応じて反転マスクの更新処理を起動する場合の処理を示すフローチャートであり、(A)がタイマ処理を、(B)がタイマで起動される処理を示す。 図13は、新しい反転マスクの生成処理の他の例を示すフローチャートである。 図14は、反転マスクを生成する別の処理例を示すフローチャートであり、(A)が初期化処理を、(B)が反転マスクの更新処理を示す。 図15は、3ビットの一般的な2進数とグレイコードの対応関係を示す図である。 図16は、擬似乱数生成アルゴリズムXorshiftを使用して発生した乱数を利用して新しい反転マスクを生成する処理を示すフローチャートであり、(A)が擬似乱数の種の初期化を、(B)が新しい反転マスクの生成を示す。 図17は、スワップ処理中のアドレス変換処理を示すフローチャートである。 図18は、以上の前提条件および式に基づいて算出した結果を示すグラフの図である。
実施形態の半導体記憶装置の詳細を説明する前に、その概要を説明する。
図1は、実施形態の半導体記憶装置(メモリ)の概要を説明する図である。
実施形態のメモリは、記憶部(メモリ部)11と、アドレス変換部(XOR)12と、反転マスク部13と、カウンタ14と、スワッパ(スワップ処理部)15と、を有する。メモリ部11は、不揮発性のメモリである。図1では、CPU1がメモリにアクセスする場合の例を示しが、これに限定されるものではない。CPU1がメモリをアクセス(書き込みまたは読み出し)する場合、CPU1は、メモリに対して論理アドレスを出力する。CPU1は、書き込みの場合には、書き込みデータをメモリに出力し、読み出しの場合には、メモリから読み出されたデータを受ける。CPU1は、さらに、書き込みの場合には書き込み信号(ライトイネーブル)を、読み出しの場合には読み出し信号(リードイネーブル)信号を、他に必要な制御信号があればそれらと共に、メモリに出力する。
アドレス変換部(XOR)12は、メモリに入力された論理アドレスと、反転マスク部13に記憶されたアドレス変換情報(反転マスク)との排他的論理和(XOR)を演算して物理アドレスを生成し、メモリ部11に供給する。書き込みの場合には、物理アドレスのメモリ部11への供給に同期して、書き込みデータがメモリ11に供給される。読み出しの場合には、物理アドレスのメモリ部11への供給に同期して、メモリ部11から読み出しデータがCPU1に出力される。この動作は、XOR12によるアドレス変換処理を除けば通常のメモリへのアクセス動作と同じである。
XOR12は、論理アドレスと反転マスクとのXORを演算して物理アドレスを生成しており、反転マスクを変化させれば異なる物理アドレスが生成される。したがって、反転マスクを変化させることにより、論理アドレスと物理アドレスの対応関係が変化し、書き込み動作の論理アドレスのアドレス値が偏在する場合でも、物理アドレスが偏在しないようにするウェアレベリングが行われる。
しかし、反転マスクの変更の前後で、同じ論理アドレスで読み出すメモリの物理アドレスが変化するため、読み出しデータが変わってしまう。そのため、これまでは、反転マスクの変更は、メモリの初期化要求時やデータの消去要求時に限定されていた。
実施形態のメモリでは、スワッパ15が、所定のタイミングで、反転マスクを変更し、メモリ部11における、変更前の旧反転マスクに基づく旧物理アドレスのデータと変更後の新反転マスクに基づく新物理アドレスのデータとを交換するスワップ処理を行う。図1では、カウンタ14がメモリへの書き込み動作数をカウントし、カウンタ14のカウント値が所定値を超えたら(桁あふれが発生したら)、反転マスクの変更およびスワッパ15の起動を行う。スワッパ15の起動は、書き込み動作数に限定されず、経過時間等によって行ってもよい。
図2は、実施形態の半導体記憶装置(メモリ)の概略構成を示す図である。
実施形態の半導体記憶装置(メモリ)10は、記憶部(メモリ部)11と、アドレス変換部(XOR)12と、制御部20と、を有する。図1の反転マスク部13、カウンタ14およびスワッパ15は、制御部20内に形成される。図2では、CPU1がメモリ10にアクセスする例を示す。
CPU1が出力する論理アドレスALは、アドレス変換部12に入力される。XOR12で変換された物理アドレスAPは、メモリ部11に供給される。CPU1と制御部20の間で、入出力データDS(読み出しデータおよび書き込みデータ)の入出力が行われる。CPU1は、書き込み信号WSおよび読み出し信号RSを制御部20に出力する。
制御部20は、旧反転マスクM1、新反転マスクM2、スワップアドレスAX、スワップアドレス有効信号Yを、XOR12に出力する。これらの信号については後述する。制御部20は、メモリ部11に書き込み信号WMおよび読み出し信号RMを出力すると共に、メモリ部11との間で、入出力データDS(読み出しデータおよび書き込みデータ)の入出力を行う。書き込み信号WMおよび読み出し信号RMは、CPU1からメモリ10に出力される書き込み信号WSおよび読み出し信号RSに対応し、物理アドレスAPのメモリ部11への供給に同期してタイミングが調整される。入出力データDSは、CPU1とメモリ10の間で入出力される入出力データDSに対応し、タイミングが異なる。さらに、制御部20は、書き込み、読み出し、またはスワップ処理中であり、アクセスを受けることができないことを示すアクセス保留フラグKを出力する。アクセス保留フラグKは、書き込み処理中または読み出し処理中に「1」になり、書き込み処理および読み出し処理が終了すると「0」になる。さらに、アクセス保留フラグKは、スワップ処理中に、1ライン分の旧物理アドレスのデータと新物理アドレスのデータとを交換している間「1」となり、1ライン分のデータ交換終了時に書き込み信号WSまたは読み出し信号RSが入力されていないと維持される。
XOR12は、通常動作時に、スワップアドレス有効信号Yが「真(0)」となり、論理アドレスALと新反転マスクM2のXORを演算して物理アドレスAPをメモリ部11に供給する。XOR12は、スワップ処理時に、スワップアドレス有効信号Yが「偽(1)」となり、スワップアドレスAXをメモリ部11に供給する。XOR12は、スワップ処理時にCPU1からメモリへのアクセスがあると、スワップアドレス有効信号Yが「真」となり、CPU1からの論理アドレスALが書き換え済みのアドレスであればALと新反転マスクM0のXORを演算して物理アドレスAPを出力する。一方、XOR12は、スワップ処理時にCPU1からメモリへのアクセスがあると、スワップアドレス有効信号Yが「真」となり、CPU1からの論理アドレスALが書き換え前のアドレスであればALと旧反転マスクM1のXORを演算して物理アドレスAPを出力する。
メモリ部11は、物理アドレスAPで指示されたアドレスについて、書き込み信号WMであれば、入出力データ(書き込みデータ)DSの書き込みを行い、読み出し信号RMであれば、入出力データ(読み出しデータ)DSを出力する。
図3は、実施形態の半導体記憶装置(メモリ)10のより詳細な構成を示す図である。
実施形態のメモリ10は、記憶部(メモリデバイス)11と、スワップ処理部31と、アドレス変換(XOR)部12と、書き込み信号切換スイッチ42と、読み出し信号切換スイッチ43と、データ切換スイッチ44と、を有する。
スワップ処理部31は、制御部20の一部として、例えばステートマシン等により実現される。スワップ処理部31は、旧反転マスクM1を保持する旧反転マスクレジスタ32と、新反転マスクM2を保持する新反転マスクレジスタ33と、XOR演算器34と、XOR演算結果Xを保持するレジスタ35、とを有し、一連のスワップ処理を実行する。XOR演算器34は、M1とM2の排他的論理和(XOR)を演算する。XOR演算器34の演算結果は、M1とM2の異なるビットが1となり、他が0となるデータである。スワップ処理部31は、アドレス変換(XOR)部12に、旧反転マスクM1と、新反転マスクM2と、スワップアドレスAXと、スワップアドレス有効信号Yと、を出力する。スワップ処理部31は、書き込み信号切換スイッチ42および読み出し信号切換スイッチ43に、スワップ用書き込み信号WXおよびスワップ用読み出し信号RXを出力する。スワップ処理部31は、データ切換スイッチ44との間で、スワップデータDXの入出力を行う。スワップ処理部31は、書き込み信号切換スイッチ42、読み出し信号切換スイッチ43およびデータ切換スイッチ44の接続を制御する。スワップ処理部31における処理内容については後述する。
アドレス変換(XOR)部12は、論理アドレスALと、旧反転マスクM1と、新反転マスクM2と、スワップアドレスAXと、スワップアドレス有効信号Yと、を受けて、物理アドレスAPを生成する。書き込み信号切換スイッチ42は、スワップ処理部31の制御に応じて、CPU1からの書き込み信号WSとスワップ用書き込み信号WXの一方を選択してメモリデバイス11に出力する。読み出し信号切換スイッチ43は、スワップ処理部31の制御に応じて、CPU1からの読み出し信号WSとスワップ用読み出し信号WXの一方を選択してメモリデバイス11に出力する。データ切換スイッチ44は、スワップ処理部31の制御に応じて、CPU1との間の入出力データDSとスワップデータDXの一方を選択してメモリデバイス11との間で入出力を行う。
図4は、アドレス変換(XOR)部12の回路構成を示す図である。
XOR部12は、2個のXORゲート51および52と、2個の比較器53および54と、ORゲート55と、2個のスイッチ56および57と、を有する。XORゲート51は、論理アドレスALと旧反転マスクM1の排他的論理和(XOR)演算を行い、旧マスク変換アドレスAP1を出力する。XORゲート52は、ALと新反転マスクM2のXOR演算を行い、新マスク変換アドレスAP2を出力する。比較器53は、旧マスク変換アドレスAP1をスワップアドレスAXと比較し、スワップアドレスAXが大きければ比較結果「真(0)」を、スワップアドレスAXが小さければ比較結果「偽(1)」を出力する。比較器54は、新マスク変換アドレスAP2をスワップアドレスAXと比較し、スワップアドレスAXが大きければ比較結果「真(0)」を、スワップアドレスAXが小さければ比較結果「偽(1)」を出力する。ORゲート55は、比較器53および54の出力の論理和(OR)を演算する。したがって、スワップアドレスAXが、旧マスク変換アドレスAP1および新マスク変換アドレスAP2の両方より大きければ、ORゲート55の出力は「真(0)」となる。スイッチ56は、ORゲート55の出力が「真(0)」の時には旧マスク変換アドレスAP1を、ORゲート55の出力が「偽(1)」の時には新マスク変換アドレスAP2を、選択する。スイッチ57は、スワップアドレス有効信号Yが「真(0)」の時にはスイッチ56の出力を、スワップアドレス有効信号Yが「偽(1)」の時にはスワップアドレスAXを、選択する。
上記の処理をまとめると、XOR部12は、スワップアドレス有効信号Yが「真(0)」の時で、スワップ処理を行っていない時には、新マスク変換アドレスAP2を物理アドレスAPとして出力する。XOR部12は、スワップ処理中にYが「真」になった時には、旧マスク変換アドレスAP1と新マスク変換アドレスAP2の両方がスワップアドレスAXより小さければAP1を、大きければAP2を、物理アドレスAPとして出力する。さらに、XOR部12は、スワップアドレス有効信号Yが「偽(1)」の時には、スワップアドレスAXを物理アドレスAPとして出力する。
スワップ処理は、書き込み処理が所定回数行われると起動され、新反転マスクM2を生成し、旧反転マスクM1を置き換える。書き込み処理の回数をカウントするカウンタの値を示すパラメータをCWで表す。スワップ処理では、スワップアドレスAXを順に変化させ、AXがAXとM1とM2の排他的論理和(XOR)より小さければ、スワップアドレスAXの指すメモリ部11のデータと、AXとM1とM2のXOR指すメモリ部11のデータとをスワップする。AXがAXとM1とM2のXORより大きければ、スワップ済みなので、何も行わない。ここで、図では排他的論理和を記号∧で表す。したがって、AXとM1とM2の排他的論理和は、AX∧M1∧M2で表される。
図5は、スワップ処理部31を含む制御部20の全体の動作を示すフローチャートである。
処理を開始する前に、旧反転マスクM1=新反転マスクM2=0、スワップアドレスAX=0およびパラメータCW=0に初期化される。
ステップS11では、CPU1からの書き込み信号WS=1であるか、すなわち書き込み要求であるか判定し、WS=1であればステップS14に進み、WS=1でなければステップS12に進む。
ステップS12では、CPU1からの読み出し信号RS=1であるか、すなわち読み出し要求であるか判定し、RS=1であればステップS21に進み、RS=1でなければステップS13に進む。
ステップS13では、旧反転マスクM1=新反転マスクM2であるか、すなわち、スワップ処理中であるか判定し、M1=M2であればステップS24に進み、M1=M2でなければステップS11に戻り、動作を繰り返す。
ステップS14では、アクセス保留フラグKを1にする。
ステップS15では、パラメータCWを1増加させる。
ステップS16では、パラメータCWが所定値CL以上であるか判定し、所定値CL以上であればステップS17に進み、所定値CL以上でなければステップS18に進む。
ステップS17では、それまでの反転マスクとは異なる反転マスクを生成し、新反転マスクM2とする。新反転マスクM2の生成方法については、後述する。
ステップS18では、記憶部11への書き込みを行う。
ステップS19では、アクセス保留フラグKを0にした後、ステップS11に戻る。
ステップS21では、アクセス保留フラグKを1にする。
ステップS22では、記憶部11からの読み出しを行う。
ステップS23では、アクセス保留フラグKを0にした後、ステップS11に戻る。
ステップS24では、スワップ処理を行い、終了後ステップS11に戻る。
次に、各動作をより詳細に説明する。
図6は、第1実施形態の半導体記憶装置における書き込み処理を示すフローチャートである。
ステップS31では、CPU1から論理アドレスALを受け取る。
ステップS32では、CPU1から書き込みデータDSを受け取る。
ステップS33では、アクセス保留フラグK=0であるか、すなわちアクセス可能であるか判定し、K=0であればステップS34に進み、K=0でなければ待機する。
ステップS34では、論理アドレスALと反転マスクとのXOR演算を行い、物理アドレスAPを算出する。この時に使用する反転マスクは、スワップ中でなければ、旧反転マスクを使用し(新反転マスクはこの時点では存在しない)する。スワップ中であれば、書き込みアドレスが未スワップアドレスであれば旧反転マスクを、スワップ済みアドレスであれば新反転マスクを使用する。
ステップS35では、物理アドレスAPをメモリ部11に出力する。
ステップS36では、書き込みデータDM(DSと同じ)をメモリ部11に出力する。
ステップS37では、書き込み信号WMをメモリ部11に出力する。
図7は、第1実施形態の半導体記憶装置における読み出し処理を示すフローチャートである。
ステップS41では、CPU1から論理アドレスALを受け取る。
ステップS42では、アクセス保留フラグK=0であるか、すなわちアクセス可能であるか判定し、K=0であればステップS43に進み、K=0でなければ待機する。
ステップS43では、論理アドレスALと反転マスクとのXOR演算を行い、物理アドレスAPを算出する。この時に使用する反転マスクは、スワップ中でなければ、旧反転マスクを使用し(新反転マスクはこの時点では存在しない)する。スワップ中であれば、書き込みアドレスが未スワップアドレスであれば旧反転マスクを、スワップ済みアドレスであれば新反転マスクを使用する。
ステップS44では、物理アドレスAPをメモリ部11に出力する。
ステップS45では、読み出し信号RMをメモリ部11に出力する。
ステップS46では、読み出しデータDMをメモリ部11から読み出す。
ステップS47では、CPU1に読み出しデータDSを出力する。
図8は、旧反転マスクM1の新反転マスクM2への更新処理を示すフローチャートである。
ステップS51では、新反転マスクM2を生成する。新反転マスクM2の生成方法については後述する。
ステップS52では、アクセス保留フラグK=1にする。
ステップS53では、スワップ処理を行う。スワップ処理については後述する。
ステップS54では、旧反転マスクレジスタ32に記憶する反転マスクを、旧反転マスクM1から新反転マスクM2に更新する。
ステップS55では、アクセス保留フラグK=0にする。
図9は、新反転マスクM2の生成方法を示すフローチャートである。
ステップS61で、旧反転マスクM1を1増加させた値を32で除した時の剰余を、新反転マスクM2とする。なお、この例は、アドレスビット数が32ビットである場合の例であり、16ビットであれば16で除した時の剰余を使用する。また、新反転マスクM2の生成方法はこれに限定されず、後述するグレイコード等を使用する方法で生成してもよい。
図10は、スワップ処理を示すフローチャートである。
ステップS71では、スワップアドレスAXを0に初期化する。
ステップS72で、CPU1からのアクセス要求があるか(WSまたはRSが1であるか)判定し、アクセス要求があれば待機する。この間にメモリ部11へのCPU1からのアクセスが行われる。アクセス要求が無ければ、ステップS73に進む。
ステップ73では、アクセス保留フラグK=1にセットする。
ステップS74では、AXがAXとM1とM2の排他的論理和(XOR)より小さいか判定され(AX<AX∧M1∧M2?)、小さければステップS75に進み、大きければスワップ済みなのでステップS77に進む。
ステップS75では、メモリ部11のアドレスAXからデータを読み出してPとしレジスタに保持し、アドレスAX∧M1∧M2からデータを読み出してQとしてレジスタに保持する。
ステップS76では、データQをメモリ部11のアドレスAXに書き込み、データPをメモリ部11のアドレスAX∧M1∧M2に書き込む。
ステップS77では、スワップアドレスAXを1増加する。
ステップS78では、アクセス保留フラグK=0にセットする。
ステップS79では、スワップアドレスAXがアドレス最大値に到達したかを判定し、到達していなければステップS72に戻り、到達していればステップS80に進む。
ステップS80では、スワップ処理が終了するので、旧反転マスクレジスタ32に新反転マスクM2を記憶し、旧反転マスクM1を新反転マスクM2で置き換える。
以上のようにしてスワップ処理が終了する。実施形態では、スワップ処理中は、1ライン(1アドレス)のデータを他のラインのデータと置き換えるごとにアクセス保留フラグK=0にすることにより、スワップ処理のためにCPU1から長時間アクセスができなくなるのを防止している。
図11は、反転マスク更新を起動する処理を示すフローチャートである。
ステップS81では、カウンタの初期化を行う。初期化は、例えば、パワーオンリセットや反転マスクの更新処理が行われた後に行われる。
ステップS82では、書き込みが行われたかを判定し、書き込みが行われるまで待機し、書き込みが行われるとステップS83に進む。
ステップS83では、カウンタを1増加(インクリメント)する。
ステップS84では、カウント値が所定値Lに到達したかを判定し、到達していなければステップS82に戻り、達した時にはステップS85に進む。
ステップS85では、図8に示した反転マスクの更新処理を実行する。
実施形態の半導体記憶装置(メモリ)では、図11に示すように、L回の書き込み処理が行われるたびに、反転マスクの更新処理を起動したが、他の判定基準で起動するようにしてもよい。
図12は、動作時間に応じて反転マスクの更新処理を起動する場合の処理を示すフローチャートであり、(A)がタイマ処理を、(B)がタイマで起動される処理を示す。
図12の(A)に示すように、半導体記憶装置(メモリ)に電源が投入されると、ステップS87で、T秒後に通知するように、タイマが設定される。
図12の(B)に示すように、T秒経過しタイマから通知が来ると、ステップS88で、図8に示した反転マスクの更新処理を実行する。さらに、ステップS89で、タイマを再設定し、終了する。
実施形態の半導体記憶装置(メモリ)では、図9に示すように、新しい反転マスクは、直前の反転マスクを剰余演算することにより生成したが、他の方法で生成してもよい。
図13は、新しい反転マスクの生成処理の他の例を示すフローチャートである。
ステップS91では、旧反転マスクM1で反転するビット(n番目)を選ぶ。
ステップS92では、旧反転マスクM1のn番目のビットを反転し、新反転マスクM2とする。
図14は、反転マスクを生成する別の処理例を示すフローチャートであり、(A)が初期化処理を、(B)が反転マスクの更新処理を示す。
図14の(A)に示すように、半導体記憶装置(メモリ)の電源投入に応じて、ステップS101で、コード生成用のカウンタの値Uを初期化する。なお、電源投入ではなくて、半導体記憶装置(メモリ)の出荷時にステップS101を行うようにしてもよい。
ステップS102では、反転マスクの初期化を行い、旧反転マスクレジスタ32に旧反転マスクM1=0を記憶する。
図11または図12に示した方法などで反転マスク更新処理が起動されると、ステップS103で、カウンタをインクリメントし、カウンタ値Uが1増加する。
ステップS104では、カウンタ値Uに応じてグレイコードにより新反転マスクM2の値を算出する。具体的には、カウンタ値Uを1ビット右シフトした値と、カウンタ値UのXORを算出する。
図15は、3ビットの一般的な2進数とグレイコードの対応関係を示す図である。図15に示すように、隣接するグレイコードは3ビット中の1ビットのみが異なる。他のビット数についても同様である。
図14に戻り、ステップS105では、図10に示したスワップ処理を行う。
ステップS106では、スワップ処理が終了したので、旧反転マスクレジスタ32に新反転マスクM2を記憶し、旧反転マスクM1を新反転マスクM2で置き換える。
図16は、擬似乱数生成アルゴリズムXorshiftを使用して発生した乱数を利用して新しい反転マスクを生成する処理を示すフローチャートであり、(A)が擬似乱数の種の初期化を、(B)が新しい反転マスクの生成を示す。
図16の(A)に示すように、半導体記憶装置(メモリ)の電源投入に応じて、ステップS111で、x=123456789、y=362436069、z=521288629、w=88675123に設定する擬似乱数の種の初期化を行う。なお、電源投入ではなくて、半導体記憶装置(メモリ)の出荷時にステップS101を行うようにしてもよい。
ステップS112では、上記の初期値に基づいて、図16の(B)に示す処理で新しい反転マスクM2の生成を行う。
図16の(B)に示すように、ステップS113では、xとxを左側に11ビットシフトした値のXORを算出してtとし、さらに、x=y、y=z、z=wとする。さらに、wと、wを右側に19ビットシフトした値と、tを右側に8ビットシフトした値と、のXORを算出し新しいwとする。
ステップS114では、ステップS113で生成したwを新しい反転マスクM2とする。
前述のように、実施形態の半導体記憶装置では、スワップ処理を行っている途中でもCPU1からのアクセス(書き込み処理または読出し処理)を受けられるようにしている。そのため、アクセスするアドレスが、スワップ処理の途中で旧反転マスクによるアドレスのデータの新反転マスクによるアドレスへのスワップが終了しているスワップ済みの場合と、未スワップの場合が生じる。そこで、実施形態の半導体記憶装置では、CPU1からの論理アドレスALがスワップ済みのアドレスであるか未スワップのアドレスであるか判定してアドレス変換を行う。
図17は、スワップ処理中のアドレス変換処理を示すフローチャートである。
ステップS121では、論理アドレスALと旧反転マスクM1とのXORがスワップアドレスAXより小さいかを判定し、小さければステップS123に進み、そうでなければステップS122に進む。
ステップS122では、論理アドレスALと新反転マスクM2とのXORがスワップアドレスAXより小さいかを判定し、小さければステップS123に進み、そうでなければステップS122に進む。
ステップS123では、未スワップのアドレスであるので、論理アドレスALと旧反転マスクM1とのXORを物理アドレスAPとする。
ステップS124では、スワップ済みのアドレスであるので、論理アドレスALと新反転マスクM2とのXORを物理アドレスAPとする。
以上説明した実施形態の半導体記憶装置が、何も対策をしない半導体記憶装置に比べてどの程度寿命が長くなるかについて説明する。
前提条件とし、メモリ部11は、N本のラインを有し、アドレスは0、1、…、N−1である。1本のラインに対する書き込み回数の限界をWmaxとし、書き込み回数がWmaxに達すとそのラインは不良となる。書き込みがT回あるごとに反転マスクを更新し、言い換えればスワップ周期はTである。新しい反転マスクは、擬似乱数生成アルゴリズムで生成される。
1周期(T回の書き込み)の中での、1ラインに対する書き込み回数の分散をσ2とする。なお、この場合も1ラインの平均書き込み回数はT/Nである。さらに、スワップによる書き込み回数が1回増加するので、言い換えればスワップによるオーバーヘッドが各ラインについて1ずつあるので、これを含めたメモリの各ラインの書き込み回数の平均は、T/N+1となる。
1周期ごとにランダムな反転マスクへ更新するので、特定の論理アドレスに対応する物理アドレスはランダムの変化する。したがって、中心極限定理より、k周期目までの1ラインに対する総書き込み回数は、平均がk(T/N+1)、分散k・σ2の正規分布に近づく。
したがって、ある1ラインの書き込み回数がWmax以下である確率は、式(1)で示す0からWmaxまでの累積分布になる。
Figure 0006213040
ここで、関数erfは、誤差関数を表す。
さらに、すべてのラインの書き込み回数がWmax以下である確率は、式(2)で示すようになる。
Figure 0006213040
図18は、以上の前提条件および式に基づいて算出した結果を示すグラフの図であり、縦軸はN本すべてのラインがどれも不良とならない確率を、横軸は総書き込み回数を最大書き込み回数×ライン数Nで正規化した値で、理想的に平準化されれば100%となる。
図18では、1周期での1ラインに対する書き込み回数の標準偏差σが100、200、400、800の場合をプロットしており、それぞれ98%、97%、95%、91%の付近でメモリ全体が急激に不良となる。
具体的に標準偏差σ=100というのは、全ラインの50%に書き込みが集中した場合に相当する。ランダムなアドレス変換を施さなければ寿命は50%となるのに対して、約98%に延命される。同様に、σ=200の場合は全ラインの20%が約97%に、σ=400の場合は全ラインの約5.8%が約95%に、σ=800の場合は全ラインの約1.5%が約91%に、それぞれ延命される。
なお、書き込みの集中の具合を示すrは、次のように算出する。
r・N本のラインに書き込みが集中した時の標準偏差σは、平均値μ=T/Nとすると、式(3)で表される。
Figure 0006213040
以上の通り、実施形態の半導体記憶装置は、何も対策をしない場合に比べて寿命が長くなる。
以上、実施形態を説明したが、ここに記載したすべての例や条件は、発明および技術に適用する発明の概念の理解を助ける目的で記載されたものである。特に記載された例や条件は発明の範囲を制限することを意図するものではなく、明細書のそのような例の構成は発明の利点および欠点を示すものではない。発明の実施形態を詳細に記載したが、各種の変更、置き換え、変形が発明の精神および範囲を逸脱することなく行えることが理解されるべきである。
1 CPU
11 記憶部(メモリ部)
12 アドレス変換部(XOR)
13 反転マスク
14 カウンタ
15 スワッパ(スワップ処理回路)
20 制御部

Claims (8)

  1. 記憶部と、
    前記記憶部へアクセスする論理アドレスを、アドレス変換情報に基づいて物理アドレスに変換するアドレス変換部と、
    前記アドレス変換情報を前記アドレス変換部へ出力する制御部と、を備え、
    前記アドレス変換情報は、複数ビットを含む変換マスクであり、
    前記アドレス変換部は、前記論理アドレスと前記変換マスクとの排他的論理和演算を行うことにより、前記論理アドレスを前記物理アドレスに変換し、
    前記制御部は、変更前の前記変換マスクと変更後の前記変換マスクが、前記複数ビットのうちの1ビットのみが異なるように変更し、前記アドレス変換情報の変更時に、前記記憶部における、変更前の前記アドレス変換情報に基づく旧物理アドレスのデータと変更後の前記アドレス変換情報に基づく新物理アドレスのデータとを交換するスワップ処理を行うことを特徴とする半導体記憶装置。
  2. 前記制御部は、前記記憶部への書き込みが所定の回数に達した時に、前記アドレス変換情報を変更することを特徴とする請求項1に記載の半導体記憶装置。
  3. 前記制御部は、所定時間が経過するごとに、前記アドレス変換情報を変更することを特徴とする請求項1に記載の半導体記憶装置。
  4. 前記制御部は、前記変換マスクをグレイコードとして変更することを特徴とする請求項に記載の半導体記憶装置。
  5. 前記アドレス変換部は、前記スワップ処理中に、前記記憶部へのアクセスがあった時、交換の終了していない論理アドレスについては変更前の前記アドレス変換情報に基づく旧物理アドレスに変換し、交換の終了している論理アドレスについては変更後の前記アドレス変換情報に基づく新物理アドレスに変換することを特徴とする請求項1からのいずれか1項に記載の半導体記憶装置。
  6. 前記記憶部は、不揮発性メモリを含むことを特徴とする請求項1からのいずれか1項に記載の半導体記憶装置。
  7. 半導体記憶装置へアクセスする論理アドレスを、複数ビットを含む変換マスクであるアドレス変換情報に基づいて、前記論理アドレスと前記変換マスクとの排他的論理和演算を行うことにより、前記論理アドレスを物理アドレスに変換し、
    変更前の前記変換マスクと変更後の前記変換マスクが、前記複数ビットのうちの1ビットのみが異なるように前記アドレス変換情報を変更し、前記アドレス変換情報の変更時に、記憶部における、変更前の前記アドレス変換情報に基づく旧物理アドレスのデータと変更後の前記アドレス変換情報に基づく新物理アドレスのデータとを交換するスワップ処理を行うことを特徴とする半導体記憶装置の制御方法。
  8. 前記スワップ処理中に、前記記憶部へのアクセスがあった時、交換の終了していない論理アドレスについては変更前の前記アドレス変換情報に基づく旧物理アドレスに変換し、交換の終了している論理アドレスについては変更後の前記アドレス変換情報に基づく新物理アドレスに変換することを特徴とする請求項に記載の半導体記憶装置の制御方法。
JP2013169707A 2013-08-19 2013-08-19 半導体記憶装置および半導体記憶装置の制御方法 Active JP6213040B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2013169707A JP6213040B2 (ja) 2013-08-19 2013-08-19 半導体記憶装置および半導体記憶装置の制御方法
US14/295,097 US9448925B2 (en) 2013-08-19 2014-06-03 Semiconductor storage device and semiconductor storage device control method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2013169707A JP6213040B2 (ja) 2013-08-19 2013-08-19 半導体記憶装置および半導体記憶装置の制御方法

Publications (2)

Publication Number Publication Date
JP2015038698A JP2015038698A (ja) 2015-02-26
JP6213040B2 true JP6213040B2 (ja) 2017-10-18

Family

ID=52467663

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013169707A Active JP6213040B2 (ja) 2013-08-19 2013-08-19 半導体記憶装置および半導体記憶装置の制御方法

Country Status (2)

Country Link
US (1) US9448925B2 (ja)
JP (1) JP6213040B2 (ja)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6519292B2 (ja) * 2015-04-17 2019-05-29 富士通株式会社 メモリ制御装置、半導体記憶装置およびメモリ制御方法
KR102532581B1 (ko) * 2016-03-17 2023-05-17 에스케이하이닉스 주식회사 메모리 장치를 포함하는 메모리 시스템 및 그의 동작 방법
US10540100B2 (en) * 2018-04-10 2020-01-21 Western Digital Technologies, Inc. Mapping-based wear leveling for non-volatile memory
US10811112B2 (en) 2018-09-29 2020-10-20 Western Digital Technologies, Inc. Wear leveling with wear-based attack detection for non-volatile memory

Family Cites Families (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6230233B1 (en) * 1991-09-13 2001-05-08 Sandisk Corporation Wear leveling techniques for flash EEPROM systems
JP3178909B2 (ja) * 1992-01-10 2001-06-25 株式会社東芝 半導体メモリ装置
EP0640228A1 (en) * 1992-05-12 1995-03-01 International Business Machines Corporation Method and apparatus for reducing memory wearout in a computer system
JPH09293386A (ja) * 1996-04-30 1997-11-11 Matsushita Electric Ind Co Ltd 記憶装置
JP3916277B2 (ja) * 1996-12-26 2007-05-16 シャープ株式会社 読み出し専用メモリ及び演算装置
US6202133B1 (en) * 1997-07-02 2001-03-13 Micron Technology, Inc. Method of processing memory transactions in a computer system having dual system memories and memory controllers
US6049855A (en) * 1997-07-02 2000-04-11 Micron Electronics, Inc. Segmented memory system employing different interleaving scheme for each different memory segment
US6076137A (en) * 1997-12-11 2000-06-13 Lexar Media, Inc. Method and apparatus for storing location identification information within non-volatile memory devices
DE60038133T2 (de) * 1999-08-27 2009-03-05 Sony Corp. Nichtflüchtiger Speicher
DE60017870T2 (de) * 1999-10-21 2005-06-23 Matsushita Electric Industrial Co., Ltd., Kadoma Eine halbleiterspeicherkarte-zugangsanordnung, ein rechnerlesbares aufzeichnungsmedium, initialisierungsverfahren,und eine halbleiterspeicherkarte
JP3640624B2 (ja) * 2001-06-25 2005-04-20 三菱電機株式会社 情報処理装置、レジスタ
US6988163B2 (en) * 2002-10-21 2006-01-17 Microsoft Corporation Executing binary images from non-linear storage systems
JP5162846B2 (ja) * 2005-07-29 2013-03-13 ソニー株式会社 記憶装置、コンピュータシステム、および記憶システム
US7480766B2 (en) * 2005-08-03 2009-01-20 Sandisk Corporation Interfacing systems operating through a logical address space and on a direct data file basis
KR100735024B1 (ko) 2005-12-29 2007-07-03 삼성전자주식회사 반도체 장치의 어드레스 변환기 및 반도체 메모리 장치
US7646636B2 (en) * 2007-02-16 2010-01-12 Mosaid Technologies Incorporated Non-volatile memory with dynamic multi-mode operation
JP2008287803A (ja) 2007-05-17 2008-11-27 Elpida Memory Inc 半導体記憶装置、半導体記憶装置の制御装置、および半導体記憶装置のアドレス制御方法
KR100857761B1 (ko) * 2007-06-14 2008-09-10 삼성전자주식회사 웨어 레벨링을 수행하는 메모리 시스템 및 그것의 쓰기방법
US8375160B2 (en) * 2007-11-14 2013-02-12 Panasonic Corporation Memory controller, nonvolatile storage module, access module and nonvolatile storage system
JP2010160653A (ja) * 2009-01-07 2010-07-22 Renesas Electronics Corp リングバッファ回路及びその制御回路
US8255613B2 (en) 2009-04-30 2012-08-28 International Business Machines Corporation Wear-leveling and bad block management of limited lifetime memory devices
JP2012027991A (ja) 2010-07-27 2012-02-09 Hitachi Ltd 不揮発メモリ及び記憶装置
JP2012234482A (ja) * 2011-05-09 2012-11-29 Canon Inc 記憶制御装置及びその制御方法、並びにプログラム

Also Published As

Publication number Publication date
US20150052291A1 (en) 2015-02-19
JP2015038698A (ja) 2015-02-26
US9448925B2 (en) 2016-09-20

Similar Documents

Publication Publication Date Title
JP6213040B2 (ja) 半導体記憶装置および半導体記憶装置の制御方法
TWI569273B (zh) 非揮發性記憶體裝置讀取干擾管理方法
JP5984989B2 (ja) オンチップのnand型フラッシュメモリおよびその不良ブロック管理方法
Seong et al. Security refresh: Prevent malicious wear-out and increase durability for phase-change memory with dynamically randomized address mapping
US20090259803A1 (en) Systems, methods and computer program products for encoding data to be written to a nonvolatile memory based on wear-leveling information
KR20110065452A (ko) 데이터 처리 시스템에서 단일화된 캐시에 대한 에러 검출 스킴들
JP2012118979A (ja) Nandフラッシュ・メモリにおける確率論的多層エラー訂正のためのシステム、方法、およびコンピュータ・プログラム
TW201732592A (zh) 用於多位元錯誤偵測和校正之裝置和方法
US20140245107A1 (en) Rearranging write data to avoid hard errors
JP2011180773A (ja) メモリシステム
US20190370189A1 (en) Off-chip memory address scrambling apparatus and method for system on chip
TW201945940A (zh) 隨機標籤設定指令
US9405618B2 (en) Marker programming in non-volatile memories
JP4574994B2 (ja) メモリ外付けマイコン
JP7446923B2 (ja) 半導体装置及び半導体記憶装置
Wang et al. Write-activity-aware page table management for PCM-based embedded systems
JP5937244B2 (ja) 消去カウンタを処理するための方法および装置
KR101495795B1 (ko) 불휘발성 메모리 장치 및 그것의 프로그램 방법
CN112951313A (zh) 用于纠错的存储控制器、包括其的存储设备及其操作方法
US9760301B2 (en) WOM code emulation of EEPROM-type devices
Ho et al. Antiwear leveling design for SSDs with hybrid ECC capability
JP2005216455A (ja) 不揮発性半導体メモリ
JP3646679B2 (ja) 不揮発性メモリのデータ書き換え方法
US8200919B2 (en) Storage device with self-condition inspection and inspection method thereof
US20120297124A1 (en) Flash memory device

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20160510

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20170308

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20170321

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170519

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20170822

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20170904

R150 Certificate of patent or registration of utility model

Ref document number: 6213040

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150