JP5943153B2 - 情報処理装置、書き込み制御回路、書き込み制御方法、及び書き込み制御プログラム - Google Patents

情報処理装置、書き込み制御回路、書き込み制御方法、及び書き込み制御プログラム Download PDF

Info

Publication number
JP5943153B2
JP5943153B2 JP2015531387A JP2015531387A JP5943153B2 JP 5943153 B2 JP5943153 B2 JP 5943153B2 JP 2015531387 A JP2015531387 A JP 2015531387A JP 2015531387 A JP2015531387 A JP 2015531387A JP 5943153 B2 JP5943153 B2 JP 5943153B2
Authority
JP
Japan
Prior art keywords
block
identification information
storage unit
data
write
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
JP2015531387A
Other languages
English (en)
Other versions
JPWO2015173966A1 (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
Application granted granted Critical
Publication of JP5943153B2 publication Critical patent/JP5943153B2/ja
Publication of JPWO2015173966A1 publication Critical patent/JPWO2015173966A1/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/16Protection against loss of memory contents

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Description

本発明は、情報処理装置、書き込み制御回路、書き込み制御方法、及び書き込み制御プログラムに関する。
近年の情報処理システムでは、不揮発性記憶装置が広く使用されている。例えば、不揮発性記憶装置の一種であるNANDフラッシュメモリデバイスは、従来の磁気ディスク装置等に比べると動作速度が高速であり、他の不揮発性記憶装置よりも大容量化が容易である、というメリットを有する。このため、NANDフラッシュメモリデバイスは、記憶システムやストレージシステム等の様々な分野で利用されている。以下では、NANDフラッシュメモリデバイスを「NANDデバイス」と記すことがある。
NANDデバイスには前述のようなメリットがある反面、データの上書きに対応していないため、NANDデバイスに書き込まれたデータを書き換える場合、データを一度消去してから、改めてデータが書き込まれる。また、データの書き換えによる消去を行う度に記憶素子が劣化するため、ある程度の回数(例えば、1万回〜10万回程度)の消去を行うと、それ以上書き込みを行うことは困難になる。
このような書き込み回数に対する制約から、NANDデバイスコントローラは、NANDデバイスの書き込み・消去の制御を行うためのアドレス管理機構とウェアレベリング機構とを有することがある(例えば、特許文献1を参照)。ウェアレベリング機構は、NANDデバイスの信頼性を高めるために、データの書き込み回数を平準化する機構である。
図1は、このような従来のNANDデバイスを含む情報処理装置の構成例を示している。図1の情報処理装置101は、中央処理装置(CPU)111、コントローラ112、及びNANDデバイス113を含む。
NANDデバイス113内の記憶領域は、ブロック(物理ブロック)と呼ばれる単位に分割され、NANDデバイス113は、ブロック毎にデータの入出力を行う。ブロックがさらにページと呼ばれる単位に分割され、NANDデバイス113がページ毎にデータの入出力を行うこともある。
この例では、NANDデバイス113内の記憶領域は、#1〜#N(Nは2以上の整数)のN個のブロックに分割されており、それらのブロックには、P1〜PNの物理アドレスが割り当てられている。したがって、コントローラ112は、物理アドレスを指定することにより、1つのブロックを特定することができる。N個のブロックのうち#1〜#M(Mは2以上の整数)のM個のブロックだけがユーザに開放されており、残りの#M+1〜#NのN−M個のブロックは、ユーザに開放されない予備ブロックである。
コントローラ112は、読み出し・書き込み制御部121、First-In First-Out(FIFO)キュー122、及びアドレス変換テーブル123を含む。そして、コントローラ112は、CPU111からの読み出し要求又は書き込み要求に応じて、NANDデバイス113からのデータの読み出し又はNANDデバイス113へのデータの書き込みを制御する。
アドレス変換テーブル123は、ソフトウェアが管理するファイルシステムの論理的なアドレス(論理アドレス)と、NANDデバイス113のブロックの物理アドレスとを、ブロック単位で対応付ける記憶領域である。アドレス変換テーブル123は、Mワードのテーブルであり、各ワードは、論理アドレス、書込済フラグ、及び物理アドレスを含む。
アドレス変換テーブル123の物理アドレスは、NANDデバイス113内の対応するブロックを示すポインタとして用いられる。書込済フラグは、NANDデバイス113の初期設定後に、各物理アドレスが示すブロックに対する書き込みが行われたか否かを示す。
FIFOキュー122は、N−M個の予備ブロックに対応する物理アドレスを格納することができる。そして、FIFOキュー122は、格納された物理アドレスを先に格納されたものから順番に出力する。
読み出し・書き込み制御部121は、アドレス変換テーブル123を参照して、CPU111からの読み出し要求又は書き込み要求が示す論理アドレスを物理アドレスに変換する。そして、読み出し・書き込み制御部121は、得られた物理アドレスのデータの読み出し又は得られた物理アドレスへのデータの書き込みを制御する。
また、読み出し・書き込み制御部121は、FIFOキュー122に予備ブロックの物理アドレスを格納する制御と、FIFOキュー122から先頭の物理アドレスを取り出す制御とを行う。
図2は、図1のNANDデバイス113の初期設定後の状態を示している。初期設定により、NANDデバイス113の全ブロックの内容(データ)が消去される。アドレス変換テーブル123には、L1〜LMの論理アドレスに対応付けて、ユーザに開放されているM個のブロックに対応するP1〜PMの物理アドレスが設定されている。そして、各物理アドレスの書込済フラグは、未書込状態(OFF)に設定されている。また、FIFOキュー122には、N−M個の予備ブロックに対応するPM+1〜PNの物理アドレスが格納されている。
図3及び図4は、コントローラ112がCPU111から、論理アドレスL4に対する書き込み要求を受信した場合の書き込み制御の第1の例を示している。この書き込み制御の手順は、以下の通りである。
処理301:読み出し・書き込み制御部121は、アドレス変換テーブル123を参照して、書き込み要求が示す論理アドレスL4に対応する書込済フラグがOFFであることを検知する。
処理302:読み出し・書き込み制御部121は、アドレス変換テーブル123を参照して、論理アドレスL4に対応する物理アドレスがP4であることを検知する。
処理303:読み出し・書き込み制御部121は、物理アドレスP4に対応するNANDデバイス113のブロックに、書き込み要求が示す書き込みデータを書き込む。
処理304:読み出し・書き込み制御部121は、アドレス変換テーブル123の論理アドレスL4に対応する書込済フラグを書込状態(ON)に更新する。
図5及び図6は、コントローラ112がCPU111から、論理アドレスL4に対する書き込み要求を受信した場合の書き込み制御の第2の例を示している。この書き込み制御の手順は、以下の通りである。
処理501:読み出し・書き込み制御部121は、アドレス変換テーブル123を参照して、書き込み要求が示す論理アドレスL4に対応する書込済フラグがONであり、論理アドレスL4に対応する物理アドレスがP4であることを検知する。
処理502:読み出し・書き込み制御部121は、FIFOキュー122から先頭の物理アドレスPM+1を取り出す。
処理503:読み出し・書き込み制御部121は、物理アドレスPM+1に対応するNANDデバイス113の予備ブロックに、書き込み要求が示す書き込みデータを書き込む。
処理504:読み出し・書き込み制御部121は、アドレス変換テーブル123の論理アドレスL4に対応する物理アドレスをPM+1に更新する。
処理505:読み出し・書き込み制御部121は、物理アドレスP4に対応するNANDデバイス113のブロックのデータを消去する。
処理506:読み出し・書き込み制御部121は、物理アドレスP4をFIFOキュー122に格納する。
このような書き込み制御によれば、FIFOキュー122に格納された物理アドレスP4は、それ以降に発生するN−M回目の書き込み時に初めてFIFOキュー122から取り出されることになる。特定の論理アドレスに対して書き込み要求が集中した場合でも、N−M個の予備ブロックを含むN−M+1個のブロックのローテーションで、各ブロックが使用される。このため、論理アドレスと物理アドレスとの対応関係が1対1に固定されている場合と比べて、同じ論理アドレスに対する書き込み可能回数がN−M+1倍になったように見える。
このようなFIFOキューを用いたウェアレベリング機構では、使用するブロックのローテーションにより各ブロックの書き込み回数を平準化して、NANDデバイスの寿命を延ばすことが可能になる。この場合、「ウェアレベリング」は、ブロックの書き込み回数を平準化してNANDデバイスの寿命を延ばす技術を意味する。
また、不揮発性半導体メモリに関してより効果的な平準化を行うメモリ制御方法も知られている(例えば、特許文献2を参照)。このメモリ制御方法では、メモリ制御部が、不揮発性半導体メモリの使用中の物理ブロックであるデータブロックと、待機中の物理ブロックである交替ブロックとを別々に管理する。そして、メモリ制御部は、物理ブロック毎の書き換え回数を管理し、書き換え回数が所定回数以上の交替ブロックと、未書き換え時間が所定時間より長いデータブロックとを交替させる。
特開平7−78485号公報 特開2010−79860号公報
上述した従来のNANDデバイスの書き込み制御には、以下のような問題がある。
FIFOキューを用いたウェアレベリング機構では、予備ブロックの書き込み回数に拘わらず、FIFOキュー内で最も古い物理アドレスに対応する予備ブロックから順番に使用されるため、高速な書き込み制御が可能である。しかしながら、書き込み回数の多いブロックであっても、一旦FIFOキューに格納されると必ず使用されるため、書き込み回数の多いブロックが頻繁にFIFOキューに格納される場合は、ウェアレベリング効果が低下する。
一方、特許文献2のメモリ制御方法では、交替ブロックの書き換え回数の範囲毎にキューが設けられ、書き換え回数が所定回数以上の交替ブロックに、長時間書き換えが発生していないデータが書き込まれる。これにより、書き換え回数の多い交替ブロックを読み出し専用のブロックに変更することができ、より高いウェアレベリング効果が期待できる。
しかしながら、このメモリ制御方法では、データが消去されて交替ブロックの候補となったブロックは、複数のキューのうち、そのブロックの書き換え回数に対応するキューに登録される。したがって、不揮発性半導体メモリに対する書き込み要求に基づきブロックのデータが消去されて交替ブロックの候補が発生する度に、書き換え回数を判定する処理が行われる。このため、書き込み要求に基づくデータ書き込みの処理速度が低下し、書き込み性能が劣化すると考えられる。
なお、かかる問題は、NANDデバイスの書き込み制御に限らず、他の不揮発性記憶装置の書き込み制御においても生ずるものである。
1つの側面において、本発明の目的は、複数のブロックを含む記憶装置において、各ブロックの書き込み回数を平準化する高性能な書き込み制御を行うことである。
1つの案では、情報処理装置は、複数のブロックを含む記憶装置と制御部とを含む。
制御部は、複数のブロックに対するデータの書き込みを制御する。そして、制御部は、データを格納する第1のブロックの第1の書き込み回数が、データを格納する第2のブロックの第2の書き込み回数よりも大きい場合、第1のブロックのデータを予備の第3のブロックへ移動させ、第1のブロックを予備のブロックに変更する。
実施形態の情報処理装置によれば、複数のブロックを含む記憶装置において、各ブロックの書き込み回数を平準化する高性能な書き込み制御を行うことができる。
従来の情報処理装置の構成図である。 NANDデバイスの初期設定後の状態を示す図である。 NANDデバイスへの書き込み要求に対する書き込み制御の第1の例を示す図(その1)である。 NANDデバイスへの書き込み要求に対する書き込み制御の第1の例を示す図(その2)である。 NANDデバイスへの書き込み要求に対する書き込み制御の第2の例を示す図(その1)である。 NANDデバイスへの書き込み要求に対する書き込み制御の第2の例を示す図(その2)である。 実施形態の情報処理装置の構成図である。 書き込み制御のフローチャートである。 実施形態の情報処理装置の第1の具体例を示す図である。 記憶装置の初期設定後の状態を示す図である。 書き込み制御の第1の具体例のフローチャート(その1)である。 書き込み制御の第1の具体例のフローチャート(その2)である。 データ移動制御のフローチャートである。 記憶装置への書き込み要求に対する書き込み制御の第1の具体例における第1の例を示す図(その1)である。 記憶装置への書き込み要求に対する書き込み制御の第1の具体例における第1の例を示す図(その2)である。 記憶装置への書き込み要求に対する書き込み制御の第1の具体例における第2の例を示す図(その1)である。 記憶装置への書き込み要求に対する書き込み制御の第1の具体例における第2の例を示す図(その2)である。 データ移動要求に対する書き込み制御の第1の具体例における第1の例を示す図(その1)である。 データ移動要求に対する書き込み制御の第1の具体例における第1の例を示す図(その2)である。 データ移動要求に対する書き込み制御の第1の具体例における第2の例を示す図(その1)である。 データ移動要求に対する書き込み制御の第1の具体例における第2の例を示す図(その2)である。 消去要求に対する書き込み制御の第1の具体例を示す図(その1)である。 消去要求に対する書き込み制御の第1の具体例を示す図(その2)である。 実施形態の情報処理装置の第2の具体例を示す図である。 書き込み制御の第2の具体例のフローチャート(その1)である。 書き込み制御の第2の具体例のフローチャート(その2)である。 書き込み制御の第2の具体例のフローチャート(その3)である。 データ移動要求に対する書き込み制御の第2の具体例における第1の例を示す図(その1)である。 データ移動要求に対する書き込み制御の第2の具体例における第1の例を示す図(その2)である。 データ移動要求に対する書き込み制御の第2の具体例における第2の例を示す図(その1)である。 データ移動要求に対する書き込み制御の第2の具体例における第2の例を示す図(その2)である。 処理回路の構成図である。
以下、図面を参照しながら、実施形態を詳細に説明する。
図7は、実施形態の情報処理装置の構成例を示している。図7の情報処理装置701は、書き込み制御回路711と複数のブロックを含む記憶装置712とを含み、書き込み制御回路711は、制御部721を含む。
図8は、図7の制御部721によって実行される書き込み制御の例を示すフローチャートである。まず、制御部721は、記憶装置712に含まれる複数のブロックに対するデータの書き込みを制御する(ステップ801)。
それらのブロックのうちデータを格納する第1のブロックの第1の書き込み回数が、データを格納する第2のブロックの第2の書き込み回数よりも大きい場合、制御部721は、第1のブロックのデータを予備の第3のブロックへ移動させる(ステップ802)。そして、制御部721は、第1のブロックを予備のブロックに変更する(ステップ803)。
このような情報処理装置701によれば、複数のブロックを含む記憶装置において、各ブロックの書き込み回数を平準化する高性能な書き込み制御を行うことができる。
図9は、図7の情報処理装置701の第1の具体例を示している。図9の情報処理装置901は、CPU911、コントローラ912、及び記憶装置913を含む。コントローラ912及び記憶装置913は、図7の制御部721及び記憶装置712にそれぞれ対応する。記憶装置913としては、NANDフラッシュメモリデバイス、NORフラッシュメモリデバイス、磁気抵抗ランダムアクセスメモリ(MRAM)等の不揮発性記憶装置を用いることができる。
記憶装置913内の記憶領域は、#1〜#N(Nは2以上の整数)のN個のブロックに分割されており、それらのブロックには、P1〜PNの物理アドレスが割り当てられている。したがって、コントローラ912は、物理アドレスを指定することにより、1つのブロックを特定することができる。N個のブロックのうち#1〜#M(Mは2以上の整数)のM個のブロックだけがユーザに開放されており、残りの#M+1〜#NのN−M個のブロックは、ユーザに開放されない予備ブロックである。
コントローラ912は、読み出し・書き込み制御部921、データ移動制御部922、FIFOキュー923、FIFOキュー924、アドレス変換テーブル925、及び情報管理テーブル926を含む。そして、コントローラ912は、CPU911からの読み出し要求又は書き込み要求に応じて、記憶装置913からのデータの読み出し又は記憶装置913へのデータの書き込みを制御する。
アドレス変換テーブル925は、論理アドレスと記憶装置913のブロックの物理アドレスとを、ブロック単位で対応付ける記憶領域である。アドレス変換テーブル925は、Mワードのテーブルであり、各ワードは、論理アドレス、書込済フラグ、及び物理アドレスを含む。
アドレス変換テーブル925の物理アドレスは、記憶装置913内の対応するブロックを示すポインタとして用いられる。書込済フラグは、記憶装置913の初期設定後に、各物理アドレスが示すブロックに対する書き込みが行われたか否かを示す。
情報管理テーブル926は、記憶装置913のブロックの物理アドレスと、そのブロックの書き込み回数を示すカウンタとを、ブロック単位で対応付ける記憶領域である。ブロックの書き込み回数としては、例えば、そのブロックのデータが消去された回数を用いることができる。
情報管理テーブル926は、Nワードのテーブルであり、予備ブロックも含めたN個のブロックの情報を格納する。各ワードは、物理アドレス、カウンタ、及び物理アドレスに対応付けられている論理アドレスを含む。予備ブロックの物理アドレスに対しては、便宜的に論理アドレスL0が割り当てられる。
FIFOキュー923は、物理アドレスを格納する格納部であり、L個(Lは1以上N−M−1以下の整数)の予備ブロックに対応する物理アドレスを格納することができる。そして、FIFOキュー923は、格納された物理アドレスを先に格納されたものから順番に出力する。
FIFOキュー924は、物理アドレスを格納する格納部であり、N−M−L個の予備ブロックに対応する物理アドレスを格納することができる。そして、FIFOキュー924は、格納された物理アドレスを先に格納されたものから順番に出力する。
読み出し・書き込み制御部921は、アドレス変換テーブル925を参照して、CPU911からの読み出し要求又は書き込み要求が示す論理アドレスを物理アドレスに変換する。そして、読み出し・書き込み制御部921は、得られた物理アドレスのデータの読み出し又は得られた物理アドレスへのデータの書き込みを制御する。
読み出し・書き込み制御部921は、記憶装置913のブロックのデータを消去した場合、情報管理テーブル926の対応する物理アドレスのカウンタを、1だけインクリメントする。
読み出し・書き込み制御部921は、CPU911から書き込み要求を受信した場合、FIFOキュー923から物理アドレスを取り出し、FIFOキュー923に別の物理アドレスを格納する制御を行う。読み出し・書き込み制御部921は、データ移動制御部922からデータ移動要求を受信した場合、FIFOキュー924から物理アドレスを取り出し、FIFOキュー924に別の物理アドレスを格納する制御を行う。
データ移動制御部922は、所定のタイミングで情報管理テーブル926を参照して、L1〜LMの論理アドレスに対応する物理アドレスが示すM個のブロックのうち、カウンタが示す書き込み回数が比較的大きいブロックを特定する。書き込み回数が比較的大きいブロックとしては、例えば、書き込み回数が最も大きいブロックを用いることができる。そして、データ移動制御部922は、特定したブロックに割り当てられている論理アドレスを対象とするデータ移動要求を、読み出し・書き込み制御部921に対して発行する。
このようなコントローラ912によれば、CPU911から書き込み要求を受信した場合、FIFOキュー923が示す予備ブロックを使用してデータの書き込みが行われる。また、CPU911から書き込み要求とは非同期に、書き込み回数が比較的大きいブロックのデータを別のブロックへ移動させて、移動元のブロックの物理アドレスをFIFOキュー924に格納することができる。
これにより、書き込み回数が比較的大きいブロックの使用頻度を低くして、書き込み回数を効果的に平準化することができる。また、書き込み要求に基づくデータ書き込み時に書き込み回数を判定する必要がないため、書き込み性能が劣化することはない。したがって、書き込み性能を維持しながらウェアレベリング効果を高める、高性能な書き込み制御を行うことができる。
図10は、図9の記憶装置913の初期設定後の状態を示している。初期設定により、記憶装置913の全ブロックのデータが消去される。アドレス変換テーブル925には、L1〜LMの論理アドレスに対応付けて、ユーザに開放されているM個のブロックに対応するP1〜PMの物理アドレスが設定されている。そして、各物理アドレスの書込済フラグは、未書込状態(OFF)に設定されている。
情報管理テーブル926には、P1〜PMのM個の物理アドレスに対応付けてL1〜LMの論理アドレスが設定されており、PM+1〜PNのN−M個の物理アドレスに対応付けて予備ブロックを示す論理アドレスL0が設定されている。全ブロックのデータが消去されたため、各物理アドレスのカウンタは1に設定されている。なお、この状態でもう一度記憶装置913の初期設定が行われると、各物理アドレスのカウンタは2に更新されることになる。
FIFOキュー923には、L個の予備ブロックに対応するPM+1〜PM+Lの物理アドレスが格納されている。FIFOキュー924には、N−M−L個の予備ブロックに対応するPM+L+1〜PNの物理アドレスが格納されている。
図11及び図12は、図9の読み出し・書き込み制御部921による書き込み制御の例を示すフローチャートである。
読み出し・書き込み制御部921は、CPU911からの書き込み要求又はデータ移動制御部922からのデータ移動要求を受信すると、受信した要求がいずれの要求であるかをチェックする(ステップ1101)。
受信した要求がデータ移動要求である場合(ステップ1101,YES)、読み出し・書き込み制御部921は、次に、アドレス変換テーブル925を参照する。そして、読み出し・書き込み制御部921は、データ移動要求が示す論理アドレスに対応する書込済フラグが書込状態(ON)であるか否かをチェックする(ステップ1102)。
書込済フラグがONである場合(ステップ1102,YES)、読み出し・書き込み制御部921は、データ移動要求が示す論理アドレスに対応する物理アドレスが示すブロックからデータを読み出す(ステップ1103)。そして、読み出し・書き込み制御部921は、そのブロックのデータを消去する(ステップ1104)。
次に、読み出し・書き込み制御部921は、FIFOキュー924から先頭の物理アドレスを取り出し(ステップ1105)、ステップ1103で読み出したデータを、取り出した物理アドレスが示すブロックに書き込む(ステップ1106)。これにより、データ移動要求が示す論理アドレスに対応するブロックのデータを、FIFOキュー924から取り出した物理アドレスに対応する予備ブロックへ移動させることができる。そして、読み出し・書き込み制御部921は、データ移動要求が示す論理アドレスに対応する物理アドレスを、FIFOキュー924に格納する(ステップ1107)。
次に、読み出し・書き込み制御部921は、情報管理テーブル926において、データ移動要求が示す論理アドレスに対応するカウンタを1だけインクリメントする(ステップ1108)。そして、読み出し・書き込み制御部921は、情報管理テーブル926において、FIFOキュー924に格納した物理アドレスに対応する論理アドレスをL0に更新する。
次に、読み出し・書き込み制御部921は、アドレス変換テーブル925において、データ移動要求が示す論理アドレスに対応する物理アドレスを、FIFOキュー924から取り出した物理アドレスに更新する(ステップ1109)。
そして、読み出し・書き込み制御部921は、情報管理テーブル926において、FIFOキュー924から取り出した物理アドレスに対応する論理アドレスを、データ移動要求が示す論理アドレスに更新する(ステップ1110)。
一方、書込済フラグがOFFである場合(ステップ1102,NO)、読み出し・書き込み制御部921は、FIFOキュー924から先頭の物理アドレスを取り出し(ステップ1111)、データ移動要求が示す論理アドレスに対応する物理アドレスを、FIFOキュー924に格納する(ステップ1112)。
次に、読み出し・書き込み制御部921は、情報管理テーブル926において、FIFOキュー924に格納した物理アドレスに対応する論理アドレスをL0に更新し(ステップ1113)、ステップ1109以降の処理を行う。
受信した要求が書き込み要求である場合(ステップ1101,NO)、読み出し・書き込み制御部921は、次に、アドレス変換テーブル925を参照する。そして、読み出し・書き込み制御部921は、書き込み要求が示す論理アドレスに対応する書込済フラグがONであるか否かをチェックする(ステップ1201)。
書込済フラグがONである場合(ステップ1201,YES)、読み出し・書き込み制御部921は、書き込み要求が示す論理アドレスに対応する物理アドレスが示すブロックのデータを消去する(ステップ1202)。
次に、読み出し・書き込み制御部921は、FIFOキュー923から先頭の物理アドレスを取り出し(ステップ1203)、書き込み要求が示す書き込みデータを、取り出した物理アドレスが示すブロックに書き込む(ステップ1204)。そして、読み出し・書き込み制御部921は、書き込み要求が示す論理アドレスに対応する物理アドレスを、FIFOキュー923に格納する(ステップ1205)。
次に、読み出し・書き込み制御部921は、情報管理テーブル926において、書き込み要求が示す論理アドレスに対応するカウンタを1だけインクリメントする(ステップ1206)。そして、読み出し・書き込み制御部921は、情報管理テーブル926において、FIFOキュー923に格納した物理アドレスに対応する論理アドレスをL0に更新する。
次に、読み出し・書き込み制御部921は、アドレス変換テーブル925において、書き込み要求が示す論理アドレスに対応する物理アドレスを、FIFOキュー923から取り出した物理アドレスに更新する(ステップ1207)。
そして、読み出し・書き込み制御部921は、情報管理テーブル926において、FIFOキュー923から取り出した物理アドレスに対応する論理アドレスを、書き込み要求が示す論理アドレスに更新する(ステップ1208)。
一方、書込済フラグがOFFである場合(ステップ1201,NO)、読み出し・書き込み制御部921は、書き込み要求が示す論理アドレスに対応する物理アドレスが示すブロックに、書き込み要求が示す書き込みデータを書き込む(ステップ1209)。そして、読み出し・書き込み制御部921は、アドレス変換テーブル925において、書き込み要求が示す論理アドレスに対応する書込済フラグをONに変更する(ステップ1210)。
図13は、図9のデータ移動制御部922によるデータ移動制御の例を示すフローチャートである。データ移動制御部922は、所定のタイミングでデータ移動制御を開始する。所定のタイミングとしては、例えば、以下のようなタイミングを用いることができる。
(1)定期的
(2)CPU911からの読み出し要求又は書き込み要求の制御が行われていない空き時間
(3)CPU911からの書き込み要求が所定回数発生したとき
まず、データ移動制御部922は、論理アドレスの番号を表す変数nを1に設定し(ステップ1301)、アドレス変換テーブル925を参照して、論理アドレスLnに対応する物理アドレスを読み出す(ステップ1302)。
次に、データ移動制御部922は、情報管理テーブル926を参照して、読み出した物理アドレスに対応するカウンタの値を読み出し、変数C1に設定する(ステップ1303)。
次に、データ移動制御部922は、nが1であるか否かをチェックする(ステップ1304)。nが1である場合(ステップ1304,YES)、データ移動制御部922は、変数C1の値を変数C2に設定し(ステップ1306)、物理アドレスLnを変数Xに設定する(ステップ1307)。
次に、データ移動制御部922は、nがMであるか否かをチェックし(ステップ1308)、nがMでない場合(ステップ1308,NO)、nを1だけインクリメントして(ステップ1310)、ステップ1302以降の処理を繰り返す。
nが1でない場合(ステップ1304,NO)、データ移動制御部922は、C1とC2を比較する(ステップ1305)。C1がC2より大きい場合(ステップ1305,YES)、データ移動制御部922は、ステップ1306以降の処理を行う。これにより、C2がより大きなカウンタ値に更新され、Xが更新後のカウンタ値に対応する論理アドレスに更新される。一方、C1がC2以下である場合(ステップ1305,NO)、データ移動制御部922は、ステップ1308以降の処理を行う。
そして、nがMに達した場合(ステップ1308,YES)、論理アドレスXに対するデータ移動要求を、読み出し・書き込み制御部921に対して発行する(ステップ1309)。
このようなデータ移動制御によれば、所定のタイミングで、カウンタが示す書き込み回数が最も大きいブロックのデータを予備ブロックへ移動させて、移動元のブロックを予備ブロックに変更することが可能になる。したがって、書き込み回数が最も大きいブロックの使用頻度を低くすることができる。
なお、図13のデータ移動制御によれば、全ブロックのカウンタが同じ値である場合、XがL1のままで更新されないため、論理アドレスL1に対するデータ移動要求が発行される。しかし、この場合は全ブロックの使用頻度が同じであるため、データ移動制御部922は、L1以外の論理アドレスに対するデータ移動要求を発行してもよい。
図14及び図15は、コントローラ912がCPU911から、論理アドレスL4に対する書き込み要求を受信した場合の書き込み制御の第1の例を示している。この書き込み制御の手順は、以下の通りである。
処理1401:読み出し・書き込み制御部921は、アドレス変換テーブル925を参照して、書き込み要求が示す論理アドレスL4に対応する書込済フラグがOFFであることを検知する。
処理1402:読み出し・書き込み制御部921は、アドレス変換テーブル925を参照して、論理アドレスL4に対応する物理アドレスがP4であることを検知する。
処理1403:読み出し・書き込み制御部921は、物理アドレスP4に対応する記憶装置913のブロックに、書き込み要求が示す書き込みデータを書き込む。
処理1404:読み出し・書き込み制御部921は、アドレス変換テーブル925の論理アドレスL4に対応する書込済フラグをONに更新する。
図16及び図17は、コントローラ912がCPU911から、論理アドレスL4に対する書き込み要求を受信した場合の書き込み制御の第2の例を示している。この書き込み制御の手順は、以下の通りである。
処理1601:読み出し・書き込み制御部921は、アドレス変換テーブル925を参照して、書き込み要求が示す論理アドレスL4に対応する書込済フラグがONであることを検知する。
処理1602:読み出し・書き込み制御部921は、アドレス変換テーブル925を参照して、書き込み要求が示す論理アドレスL4に対応する物理アドレスがP4であることを検知する。
処理1603:読み出し・書き込み制御部921は、物理アドレスP4に対応する記憶装置913のブロックのデータを消去する。
処理1604:読み出し・書き込み制御部921は、FIFOキュー923から先頭の物理アドレスPM+1を取り出す。
処理1605:読み出し・書き込み制御部921は、物理アドレスPM+1に対応する記憶装置913の予備ブロックに、書き込み要求が示す書き込みデータを書き込む。
処理1606:読み出し・書き込み制御部921は、物理アドレスP4をFIFOキュー923に格納する。
処理1607:読み出し・書き込み制御部921は、情報管理テーブル926の物理アドレスP4に対応するカウンタの値を1だけインクリメントする。これにより、カウンタの値は、1から2に更新される。
処理1608:読み出し・書き込み制御部921は、情報管理テーブル926の物理アドレスP4に対応する論理アドレスをL0に更新する。
処理1609:読み出し・書き込み制御部921は、アドレス変換テーブル925の論理アドレスL4に対応する物理アドレスをPM+1に更新する。
処理1610:読み出し・書き込み制御部921は、情報管理テーブル926の物理アドレスPM+1に対応する論理アドレスをL4に更新する。
図18及び図19は、コントローラ912がデータ移動制御部922から、論理アドレスL4に対するデータ移動要求を受信した場合の書き込み制御の第1の例を示している。この例では、情報管理テーブル926の全ブロックのカウンタの値が1である状態で、論理アドレスL1に対するデータ移動要求の代わりに、論理アドレスL4に対するデータ移動要求が発行されている。この書き込み制御の手順は、以下の通りである。
処理1801:読み出し・書き込み制御部921は、アドレス変換テーブル925を参照して、データ移動要求が示す論理アドレスL4に対応する書込済フラグがONであることを検知する。
処理1802:読み出し・書き込み制御部921は、アドレス変換テーブル925を参照して、データ移動要求が示す論理アドレスL4に対応する物理アドレスがP4であることを検知する。
処理1803:読み出し・書き込み制御部921は、物理アドレスP4に対応する記憶装置913のブロックからデータを読み出す。
処理1804:読み出し・書き込み制御部921は、物理アドレスP4に対応する記憶装置913のブロックのデータを消去する。
処理1805:読み出し・書き込み制御部921は、FIFOキュー924から先頭の物理アドレスPM+L+1を取り出す。
処理1806:読み出し・書き込み制御部921は、物理アドレスPM+L+1に対応する記憶装置913の予備ブロックに、物理アドレスP4に対応するブロックから読み出したデータを書き込む。
処理1807:読み出し・書き込み制御部921は、物理アドレスP4をFIFOキュー924に格納する。
処理1808:読み出し・書き込み制御部921は、情報管理テーブル926の物理アドレスP4に対応するカウンタの値を1だけインクリメントする。これにより、カウンタの値は、1から2に更新される。
処理1809:読み出し・書き込み制御部921は、情報管理テーブル926の物理アドレスP4に対応する論理アドレスをL0に更新する。
処理1810:読み出し・書き込み制御部921は、アドレス変換テーブル925の論理アドレスL4に対応する物理アドレスをPM+L+1に更新する。
処理1811:読み出し・書き込み制御部921は、情報管理テーブル926の物理アドレスPM+L+1に対応する論理アドレスをL4に更新する。
図20及び図21は、コントローラ912がデータ移動制御部922から、論理アドレスL4に対するデータ移動要求を受信した場合の書き込み制御の第2の例を示している。この書き込み制御の手順は、以下の通りである。
処理2001:読み出し・書き込み制御部921は、アドレス変換テーブル925を参照して、データ移動要求が示す論理アドレスL4に対応する書込済フラグがOFFであることを検知する。
処理2002:読み出し・書き込み制御部921は、アドレス変換テーブル925を参照して、データ移動要求が示す論理アドレスL4に対応する物理アドレスがP4であることを検知する。この場合、物理アドレスP4に対応するブロックにはデータが存在しないため、読み出し・書き込み制御部921は、そのブロックのデータの読み出し及び消去を行わない。
処理2003:読み出し・書き込み制御部921は、FIFOキュー924から先頭の物理アドレスPM+L+1を取り出す。
処理2004:読み出し・書き込み制御部921は、物理アドレスP4をFIFOキュー924に格納する。
処理2005:読み出し・書き込み制御部921は、情報管理テーブル926の物理アドレスP4に対応する論理アドレスをL0に更新する。
処理2006:読み出し・書き込み制御部921は、アドレス変換テーブル925の論理アドレスL4に対応する物理アドレスをPM+L+1に更新する。
処理2007:読み出し・書き込み制御部921は、情報管理テーブル926の物理アドレスPM+L+1に対応する論理アドレスをL4に更新する。
ところで、CPU911は、読み出し要求及び書き込み要求以外に、ブロックのデータを消去する消去要求をコントローラ912に対して発行することもできる。
図22及び図23は、コントローラ912がCPU911から、論理アドレスL4に対する消去要求を受信した場合の書き込み制御の例を示している。この書き込み制御の手順は、以下の通りである。
処理2201:読み出し・書き込み制御部921は、アドレス変換テーブル925を参照して、消去要求が示す論理アドレスL4に対応する書込済フラグがONであることを検知する。
処理2202:読み出し・書き込み制御部921は、アドレス変換テーブル925を参照して、消去要求が示す論理アドレスL4に対応する物理アドレスがP4であることを検知する。
処理2203:読み出し・書き込み制御部921は、物理アドレスP4に対応する記憶装置913のブロックのデータを消去する。
処理2204:読み出し・書き込み制御部921は、FIFOキュー923から先頭の物理アドレスPM+1を取り出す。
処理2205:読み出し・書き込み制御部921は、物理アドレスP4をFIFOキュー923に格納する。
処理2206:読み出し・書き込み制御部921は、情報管理テーブル926の物理アドレスP4に対応するカウンタの値を1だけインクリメントする。これにより、カウンタの値は、1から2に更新される。
処理2207:読み出し・書き込み制御部921は、情報管理テーブル926の物理アドレスP4に対応する論理アドレスをL0に更新する。
処理2208:読み出し・書き込み制御部921は、アドレス変換テーブル925の論理アドレスL4に対応する物理アドレスをPM+1に更新する。
処理2209:読み出し・書き込み制御部921は、アドレス変換テーブル925の論理アドレスL4に対応する書込済フラグをOFFに更新する。
処理2210:読み出し・書き込み制御部921は、情報管理テーブル926の物理アドレスPM+1に対応する論理アドレスをL4に更新する。
図9の情報処理装置901における書き込み制御によれば、データ移動制御部922からのデータ移動要求に基づき予備ブロックに変更された書き込み回数の大きなブロックの物理アドレスは、常にFIFOキュー924に格納される。一方、CPU911からの書き込み要求に基づく書き込み先としては、常にFIFOキュー923内の物理アドレスが示す予備ブロックが使用される。このため、書き込み回数の大きな予備ブロックが書き込み要求に基づく書き込み先として使用される頻度が低くなる。
所定のタイミングでデータ移動制御部922を動作させて、書き込み回数の大きなブロックに対するCPU911からの書き込みを抑止することで、各ブロックの書き込み回数を効果的に平準化することができる。また、書き込み要求に基づくデータ書き込み時に書き込み回数を判定する必要がないため、書き込み性能が劣化することはない。したがって、書き込み性能を維持しながらウェアレベリング効果を高めることができる。
図24は、図7の情報処理装置701の第2の具体例を示している。図24の情報処理装置2401は、図9のコントローラ912をコントローラ2411に置き換えた構成を有する。コントローラ2411は、図7の制御部721に対応する。
コントローラ2411は、読み出し・書き込み制御部2421、データ移動制御部922、FIFOキュー923、FIFOキュー924、FIFOキュー2422、カウンタレジスタ2423、アドレス変換テーブル925、及び情報管理テーブル926を含む。
図9の情報処理装置901とは異なり、FIFOキュー924は、K個(Kは1以上N−M−L−1以下の整数)の予備ブロックに対応する物理アドレスを格納することができる。
FIFOキュー2422は、物理アドレスを格納する格納部であり、N−M−L−K個の予備ブロックに対応する物理アドレスを格納することができる。そして、FIFOキュー2422は、格納された物理アドレスを先に格納されたものから順番に出力する。
カウンタレジスタ2423は、情報管理テーブル926において、データ移動制御部922からのデータ移動要求に基づき更新されたカウンタの最大値を格納する。
読み出し・書き込み制御部2421は、アドレス変換テーブル925を参照して、CPU911からの読み出し要求又は書き込み要求が示す論理アドレスを物理アドレスに変換する。そして、読み出し・書き込み制御部2421は、得られた物理アドレスのデータの読み出し又は得られた物理アドレスへのデータの書き込みを制御する。
読み出し・書き込み制御部2421は、記憶装置913のブロックのデータを消去した場合、情報管理テーブル926の対応する物理アドレスのカウンタを、1だけインクリメントする。データ移動制御部922からデータ移動要求を受信した場合で、更新後のカウンタの値がカウンタレジスタ2423に格納された値よりも大きい場合、読み出し・書き込み制御部2421は、カウンタレジスタ2423に格納された値を更新後のカウンタの値に更新する。
読み出し・書き込み制御部2421は、CPU911から書き込み要求を受信した場合、FIFOキュー923から物理アドレスを取り出し、FIFOキュー923に別の物理アドレスを格納する制御を行う。
読み出し・書き込み制御部2421は、データ移動制御部922からデータ移動要求を受信した場合、FIFOキュー924又はFIFOキュー2422から物理アドレスを取り出す制御を行う。このとき、読み出し・書き込み制御部2421は、情報管理テーブル926のカウンタの値とカウンタレジスタ2423の値とを比較した結果に基づいて、FIFOキュー924又はFIFOキュー2422のいずれか一方を選択する。そして、読み出し・書き込み制御部2421は、選択したFIFOキューに別の物理アドレスを格納する制御を行う。
データ移動制御部922の動作は、図9の情報処理装置901の場合と同様である。
図25乃至図27は、図24の読み出し・書き込み制御部2421による書き込み制御の例を示すフローチャートである。
読み出し・書き込み制御部2421は、CPU911からの書き込み要求又はデータ移動制御部922からのデータ移動要求を受信すると、受信した要求がいずれの要求であるかをチェックする(ステップ2501)。
受信した要求がデータ移動要求である場合(ステップ2501,YES)、読み出し・書き込み制御部2421は、次に、アドレス変換テーブル925を参照する。そして、読み出し・書き込み制御部2421は、データ移動要求が示す論理アドレスに対応する書込済フラグがONであるか否かをチェックする(ステップ2502)。
書込済フラグがONである場合(ステップ2502,YES)、読み出し・書き込み制御部2421は、データ移動要求が示す論理アドレスに対応する物理アドレスが示すブロックからデータを読み出す(ステップ2503)。そして、読み出し・書き込み制御部2421は、そのブロックのデータを消去し(ステップ2504)、情報管理テーブル926において、消去したブロックの物理アドレスに対応するカウンタを1だけインクリメントする(ステップ2505)。
次に、読み出し・書き込み制御部2421は、インクリメントしたカウンタの値と、カウンタレジスタ2423の値とを比較する(ステップ2506)。
インクリメントしたカウンタの値がカウンタレジスタ2423の値より大きい場合(ステップ2506,YES)、読み出し・書き込み制御部2421は、FIFOキュー2422から先頭の物理アドレスを取り出す(ステップ2507)。次に、読み出し・書き込み制御部2421は、ステップ2503で読み出したデータを、取り出した物理アドレスが示すブロックに書き込む(ステップ2508)。これにより、データ移動要求が示す論理アドレスに対応するブロックのデータを、FIFOキュー2422から取り出した物理アドレスに対応する予備ブロックへ移動させることができる。
そして、読み出し・書き込み制御部2421は、データ移動要求が示す論理アドレスに対応する物理アドレスを、FIFOキュー2422に格納する(ステップ2509)。
次に、読み出し・書き込み制御部2421は、カウンタレジスタ2423の値をインクリメントしたカウンタの値に更新する(ステップ2510)。そして、読み出し・書き込み制御部2421は、情報管理テーブル926において、FIFOキュー2422に格納した物理アドレスに対応する論理アドレスをL0に更新する(ステップ2511)。
次に、読み出し・書き込み制御部2421は、アドレス変換テーブル925において、データ移動要求が示す論理アドレスに対応する物理アドレスを、FIFOキュー2422から取り出した物理アドレスに更新する(ステップ2512)。
そして、読み出し・書き込み制御部2421は、情報管理テーブル926において、FIFOキュー2422から取り出した物理アドレスに対応する論理アドレスを、データ移動要求が示す論理アドレスに更新する(ステップ2513)。
一方、インクリメントしたカウンタの値がカウンタレジスタ2423の値以下である場合(ステップ2506,NO)、読み出し・書き込み制御部2421は、FIFOキュー924から先頭の物理アドレスを取り出す(ステップ2514)。次に、読み出し・書き込み制御部2421は、ステップ2503で読み出したデータを、取り出した物理アドレスが示すブロックに書き込む(ステップ2515)。これにより、データ移動要求が示す論理アドレスに対応するブロックのデータを、FIFOキュー924から取り出した物理アドレスに対応する予備ブロックへ移動させることができる。
そして、読み出し・書き込み制御部2421は、データ移動要求が示す論理アドレスに対応する物理アドレスを、FIFOキュー924に格納する(ステップ2516)。
次に、読み出し・書き込み制御部2421は、情報管理テーブル926において、FIFOキュー924に格納した物理アドレスに対応する論理アドレスをL0に更新する(ステップ2511)。
次に、読み出し・書き込み制御部2421は、アドレス変換テーブル925において、データ移動要求が示す論理アドレスに対応する物理アドレスを、FIFOキュー924から取り出した物理アドレスに更新する(ステップ2512)。
そして、読み出し・書き込み制御部2421は、情報管理テーブル926において、FIFOキュー924から取り出した物理アドレスに対応する論理アドレスを、データ移動要求が示す論理アドレスに更新する(ステップ2513)。
書込済フラグがOFFである場合(ステップ2502,NO)、読み出し・書き込み制御部2421は、アドレス変換テーブル925を参照して、データ移動要求が示す論理アドレスに対応する物理アドレスを取得する(ステップ2601)。そして、読み出し・書き込み制御部2421は、情報管理テーブル926の取得した物理アドレスに対応するカウンタの値と、カウンタレジスタ2423の値とを比較する。
情報管理テーブル926のカウンタの値がカウンタレジスタ2423の値より大きい場合(ステップ2601,YES)、読み出し・書き込み制御部2421は、FIFOキュー2422から先頭の物理アドレスを取り出す(ステップ2602)。そして、読み出し・書き込み制御部2421は、データ移動要求が示す論理アドレスに対応する物理アドレスを、FIFOキュー2422に格納する(ステップ2603)。
次に、読み出し・書き込み制御部2421は、情報管理テーブル926において、FIFOキュー2422に格納した物理アドレスに対応する論理アドレスをL0に更新する(ステップ2604)。
次に、読み出し・書き込み制御部2421は、アドレス変換テーブル925において、データ移動要求が示す論理アドレスに対応する物理アドレスを、FIFOキュー2422から取り出した物理アドレスに更新する(ステップ2605)。
そして、読み出し・書き込み制御部2421は、情報管理テーブル926において、FIFOキュー2422から取り出した物理アドレスに対応する論理アドレスを、データ移動要求が示す論理アドレスに更新する(ステップ2606)。
一方、情報管理テーブル926のカウンタの値がカウンタレジスタ2423の値以下である場合(ステップ2601,NO)、読み出し・書き込み制御部2421は、FIFOキュー924から先頭の物理アドレスを取り出す(ステップ2607)。そして、読み出し・書き込み制御部2421は、データ移動要求が示す論理アドレスに対応する物理アドレスを、FIFOキュー924に格納する(ステップ2608)。
次に、読み出し・書き込み制御部2421は、情報管理テーブル926において、FIFOキュー924に格納した物理アドレスに対応する論理アドレスをL0に更新する(ステップ2604)。
次に、読み出し・書き込み制御部2421は、アドレス変換テーブル925において、データ移動要求が示す論理アドレスに対応する物理アドレスを、FIFOキュー924から取り出した物理アドレスに更新する(ステップ2605)。
そして、読み出し・書き込み制御部2421は、情報管理テーブル926において、FIFOキュー924から取り出した物理アドレスに対応する論理アドレスを、データ移動要求が示す論理アドレスに更新する(ステップ2606)。
受信した要求が書き込み要求である場合(ステップ2501,NO)、読み出し・書き込み制御部2421は、図27の処理を行う。図27のステップ2701〜ステップ2710の処理は、図12のステップ1201〜ステップ1210の処理と同様である。
図28及び図29は、コントローラ2411がデータ移動制御部922から、論理アドレスL4に対するデータ移動要求を受信した場合の書き込み制御の第1の例を示している。この例では、情報管理テーブル926の物理アドレスPNに対応するカウンタの値が5であり、PN以外のブロックのカウンタの値が1である状態で、論理アドレスL1に対するデータ移動要求の代わりに、論理アドレスL4に対するデータ移動要求が発行されている。この書き込み制御の手順は、以下の通りである。
処理2801:読み出し・書き込み制御部2421は、アドレス変換テーブル925を参照して、データ移動要求が示す論理アドレスL4に対応する書込済フラグがONであることを検知する。
処理2802:読み出し・書き込み制御部2421は、アドレス変換テーブル925を参照して、データ移動要求が示す論理アドレスL4に対応する物理アドレスがP4であることを検知する。
処理2803:読み出し・書き込み制御部2421は、物理アドレスP4に対応する記憶装置913のブロックからデータを読み出す。
処理2804:読み出し・書き込み制御部2421は、物理アドレスP4に対応する記憶装置913のブロックのデータを消去する。
処理2805:読み出し・書き込み制御部2421は、情報管理テーブル926の物理アドレスP4に対応するカウンタの値を1だけインクリメントする。これにより、カウンタの値は、1から2に更新される。
処理2806:読み出し・書き込み制御部2421は、カウンタレジスタ2423を参照して、カウンタレジスタ2423の値が5であることを検知する。
処理2807:読み出し・書き込み制御部2421は、更新後のカウンタの値2とカウンタレジスタ2423の値5とを比較し、更新後のカウンタの値2の方が小さいので、FIFOキュー924を選択する。そして、読み出し・書き込み制御部2421は、FIFOキュー924から先頭の物理アドレスPM+L+1を取り出す。
処理2808:読み出し・書き込み制御部2421は、物理アドレスPM+L+1に対応する記憶装置913の予備ブロックに、物理アドレスP4に対応するブロックから読み出したデータを書き込む。
処理2809:読み出し・書き込み制御部2421は、物理アドレスP4をFIFOキュー924に格納する。
処理2810:読み出し・書き込み制御部2421は、情報管理テーブル926の物理アドレスP4に対応する論理アドレスをL0に更新する。
処理2811:読み出し・書き込み制御部2421は、アドレス変換テーブル925の論理アドレスL4に対応する物理アドレスをPM+L+1に更新する。
処理2812:読み出し・書き込み制御部2421は、情報管理テーブル926の物理アドレスPM+L+1に対応する論理アドレスをL4に更新する。
図30及び図31は、コントローラ2411がデータ移動制御部922から、論理アドレスL4に対するデータ移動要求を受信した場合の書き込み制御の第2の例を示している。この例では、情報管理テーブル926の物理アドレスP4に対応するカウンタの値4が最大値である状態で、論理アドレスL4に対するデータ移動要求が発行されている。この書き込み制御の手順は、以下の通りである。
処理3001:読み出し・書き込み制御部2421は、アドレス変換テーブル925を参照して、データ移動要求が示す論理アドレスL4に対応する書込済フラグがONであることを検知する。
処理3002:読み出し・書き込み制御部2421は、アドレス変換テーブル925を参照して、データ移動要求が示す論理アドレスL4に対応する物理アドレスがP4であることを検知する。
処理3003:読み出し・書き込み制御部2421は、物理アドレスP4に対応する記憶装置913のブロックからデータを読み出す。
処理3004:読み出し・書き込み制御部2421は、物理アドレスP4に対応する記憶装置913のブロックのデータを消去する。
処理3005:読み出し・書き込み制御部2421は、情報管理テーブル926の物理アドレスP4に対応するカウンタの値を1だけインクリメントする。これにより、カウンタの値は、4から5に更新される。
処理3006:読み出し・書き込み制御部2421は、カウンタレジスタ2423を参照して、カウンタレジスタ2423の値が2であることを検知する。
処理3007:読み出し・書き込み制御部2421は、更新後のカウンタの値5とカウンタレジスタ2423の値2とを比較し、更新後のカウンタの値5の方が大きいので、FIFOキュー2422を選択する。そして、読み出し・書き込み制御部2421は、FIFOキュー2422から先頭の物理アドレスPM+L+K+1を取り出す。
処理3008:読み出し・書き込み制御部2421は、物理アドレスPM+L+K+1に対応する記憶装置913の予備ブロックに、物理アドレスP4に対応するブロックから読み出したデータを書き込む。
処理3009:読み出し・書き込み制御部2421は、物理アドレスP4をFIFOキュー2422に格納する。
処理3010:読み出し・書き込み制御部2421は、カウンタレジスタ2423の値を更新後のカウンタの値5に更新する。
処理3011:読み出し・書き込み制御部2421は、情報管理テーブル926の物理アドレスP4に対応する論理アドレスをL0に更新する。
処理3012:読み出し・書き込み制御部2421は、アドレス変換テーブル925の論理アドレスL4に対応する物理アドレスをPM+L+K+1に更新する。
処理3013:読み出し・書き込み制御部2421は、情報管理テーブル926の物理アドレスPM+L+K+1に対応する論理アドレスをL4に更新する。
図24の情報処理装置2401における書き込み制御によれば、FIFOキュー924に加えてFIFOキュー2422が設けられ、過去の書き込み回数の最大値を超えるブロックの物理アドレスがFIFOキュー2422に格納される。これにより、FIFOキュー2422の物理アドレスが示すブロックの使用頻度を、FIFOキュー924の物理アドレスが示すブロックの使用頻度よりも低くすることが可能になる。したがって、図9の情報処理装置901よりもウェアレベリング効果を高めることができる。
図7の情報処理装置701、図9の情報処理装置901、及び図24の情報処理装置2401の構成は一例に過ぎず、情報処理装置の用途や条件に応じて一部の構成要素を省略又は変更してもよい。
例えば、図9の読み出し・書き込み制御部921がデータ移動制御部922の機能を含んでいる場合、図9のデータ移動制御部922を省略することができる。同様に、図24の読み出し・書き込み制御部2421がデータ移動制御部922の機能を含んでいる場合、図24のデータ移動制御部922を省略することができる。また、図9及び図24の情報管理テーブル926の情報をアドレス変換テーブル925に付加することが可能な場合、情報管理テーブル926を省略することができる。
図24のコントローラ2411に、さらに1つ以上のFIFOキューを追加してもよい。FIFOキューを追加することで、ウェアレベリング効果をさらに高めることができる。
図8、図11乃至図13、及び図25乃至図27に示したフローチャートは一例に過ぎず、情報処理装置の構成や条件に応じて一部の処理を省略又は変更してもよい。例えば、図11のステップ1108〜ステップ1110の処理の順序は、如何なる順序であっても構わない。同様に、図12のステップ1206〜ステップ1208の処理の順序は、如何なる順序であっても構わない。
また、図25のステップ2510〜ステップ2513の処理の順序は、如何なる順序であっても構わない。図26のステップ2604〜ステップ2606の処理の順序は、如何なる順序であっても構わない。図27のステップ2706〜ステップ2708の処理の順序は、如何なる順序であっても構わない。
図13のデータ移動制御において、書き込み回数が最も大きいブロックの論理アドレスに対するデータ移動要求を発行する代わりに、書き込み回数が所定のブロックよりも大きいブロックの論理アドレスに対するデータ移動要求を発行してもよい。
図7の制御部721、図9のコントローラ921、及び図24のコントローラ2411は、ハードウェア回路として実装することもでき、図32に示すように、プログラムを実行する処理回路(コンピュータ)として実現することもできる。
図32の処理回路は、Micro-Processing Unit(MPU)3201、メモリ3202、インタフェース3203、及びインタフェース3204を備える。これらの構成要素はバス3205により互いに接続されている。
メモリ3202は、例えば、Read Only Memory(ROM)、Random Access Memory(RAM)、フラッシュメモリ等の半導体メモリであり、書き込み制御に用いられる書き込み制御プログラム及びデータを格納する。メモリ3202は、図9及び図24のFIFOキュー923、FIFOキュー924、FIFOキュー2422、カウンタレジスタ2423、アドレス変換テーブル925、及び情報管理テーブル926として用いることもできる。
MPU3201(プロセッサ)は、例えば、メモリ3202を利用して書き込み制御プログラムを実行することにより、図9の読み出し・書き込み制御部921及びデータ移動制御部922として動作する。MPU3201は、書き込み制御プログラムを実行することにより、図24の読み出し・書き込み制御部2421及びデータ移動制御部922として動作することもできる。
インタフェース3203は、図9及び図24のCPU911と通信する通信インタフェースである。インタフェース3203は、CPU911から読み出し要求、書き込み要求、消去要求等の指示を受信し、要求された読み出しデータ、処理結果等を含む応答をCPU911へ送信する。
インタフェース3204は、図9及び図24の記憶装置913と通信する通信インタフェースである。インタフェース3204は、読み出し要求、書き込み要求、消去要求等の指示を記憶装置913へ送信し、読み出しデータ、処理結果等を含む応答を記憶装置913から受信する。
図32の処理回路は、補助記憶装置又は可搬型記録媒体に格納された書き込み制御プログラムを、メモリ3202にロードして使用することもできる。
補助記憶装置は、例えば、磁気ディスク装置、光ディスク装置、光磁気ディスク装置、テープ装置等である。この外部記憶装置は、ハードディスクドライブであってもよい。可搬型記録媒体は、例えば、メモリデバイス、フレキシブルディスク、光ディスク、光磁気ディスク等である。この可搬型記録媒体は、Compact Disk Read Only Memory(CD−ROM)、Digital Versatile Disk(DVD)、フラッシュメモリ、Universal Serial Bus(USB)メモリ等であってもよい。
このように、書き込み制御に用いられる書き込み制御プログラム及びデータを格納するコンピュータ読み取り可能な記録媒体には、メモリ3202、補助記憶装置、及び可搬型記録媒体のような、物理的な(非一時的な)記録媒体が含まれる。
開示の実施形態とその利点について詳しく説明したが、当業者は、特許請求の範囲に明確に記載した本発明の範囲から逸脱することなく、様々な変更、追加、省略をすることができるであろう。

Claims (14)

  1. 複数のブロックを含む記憶装置と、
    前記複数のブロックに対するデータの書き込みを制御し、前記複数のブロックのうちデータを格納する第1のブロックの第1の書き込み回数が、データを格納する第2のブロックの第2の書き込み回数よりも大きい場合、前記第1のブロックのデータを前記複数のブロックのうち予備の第3のブロックへ移動させ、前記第1のブロックを予備のブロックに変更する制御部と、
    を備えることを特徴とする情報処理装置。
  2. 前記制御部は、
    前記複数のブロックのうち予備のブロックの識別情報を格納する第1の格納部と、
    前記複数のブロックのうち予備のブロックの識別情報を格納する第2の格納部と、
    を含み、
    前記第1の格納部は、第4のブロックの識別情報を格納し、
    前記第2の格納部は、前記第3のブロックの識別情報を格納し、
    前記制御部は、
    書き込み要求を受信した場合、前記書き込み要求が示す論理アドレスに対応する第5のブロックのデータを消去し、前記第1の格納部から前記第4のブロックの識別情報を取り出し、前記書き込み要求が示す書き込みデータを前記第4のブロックに書き込み、前記第5のブロックの識別情報を前記第1の格納部に格納し、
    前記第1のブロックのデータを前記第3のブロックへ移動させた場合、前記第2の格納部から前記第3のブロックの識別情報を取り出し、前記第1のブロックの識別情報を前記第2の格納部に格納することを特徴とする請求項1記載の情報処理装置。
  3. 前記制御部は、前記第1の書き込み回数が前記複数のブロックの書き込み回数の中で最も大きい場合、前記第1のブロックのデータを前記第3のブロックへ移動させることを特徴とする請求項1又は2記載の情報処理装置。
  4. 前記制御部は、
    前記複数のブロックのうち予備のブロックの識別情報を格納する第3の格納部をさらに含み、
    前記第3の格納部は、第6のブロックの識別情報を格納し、
    前記制御部は、
    前記第1の書き込み回数が前記第2の書き込み回数よりも大きく、前記第1の書き込み回数に1を加算した第3の書き込み回数が所定値よりも小さい場合、前記第2の格納部から前記第3のブロックの識別情報を取り出し、前記第1のブロックのデータを前記第3のブロックへ移動させ、前記第1のブロックの識別情報を前記第2の格納部に格納し、
    前記第1の書き込み回数が前記第2の書き込み回数よりも大きく、前記第3の書き込み回数が前記所定値よりも大きい場合、前記第3の格納部から前記第6のブロックの識別情報を取り出し、前記第1のブロックのデータを前記第6のブロックへ移動させ、前記第1のブロックの識別情報を前記第3の格納部に格納することを特徴とする請求項1乃至3のいずれか1項に記載の情報処理装置。
  5. 前記制御部は、前記第1のブロックのデータを前記第6のブロックへ移動させた場合、前記所定値を前記第3の書き込み回数に更新することを特徴とする請求項4記載の情報処理装置。
  6. 記憶装置に含まれる複数のブロックに対するデータの書き込みを制御し、前記複数のブロックのうちデータを格納する第1のブロックの第1の書き込み回数が、データを格納する第2のブロックの第2の書き込み回数よりも大きい場合、前記第1のブロックのデータを前記複数のブロックのうち予備の第3のブロックへ移動させ、前記第1のブロックを予備のブロックに変更する制御部
    を備えることを特徴とする書き込み制御回路。
  7. 前記制御部は、
    前記複数のブロックのうち予備のブロックの識別情報を格納する第1の格納部と、
    前記複数のブロックのうち予備のブロックの識別情報を格納する第2の格納部と、
    を含み、
    前記第1の格納部は、第4のブロックの識別情報を格納し、
    前記第2の格納部は、前記第3のブロックの識別情報を格納し、
    前記制御部は、
    書き込み要求を受信した場合、前記書き込み要求が示す論理アドレスに対応する第5のブロックのデータを消去し、前記第1の格納部から前記第4のブロックの識別情報を取り出し、前記書き込み要求が示す書き込みデータを前記第4のブロックに書き込み、前記第5のブロックの識別情報を前記第1の格納部に格納し、
    前記第1のブロックのデータを前記第3のブロックへ移動させた場合、前記第2の格納部から前記第3のブロックの識別情報を取り出し、前記第1のブロックの識別情報を前記第2の格納部に格納することを特徴とする請求項6記載の書き込み制御回路。
  8. 前記制御部は、
    前記複数のブロックのうち予備のブロックの識別情報を格納する第3の格納部をさらに含み、
    前記第3の格納部は、第6のブロックの識別情報を格納し、
    前記制御部は、
    前記第1の書き込み回数が前記第2の書き込み回数よりも大きく、前記第1の書き込み回数に1を加算した第3の書き込み回数が所定値よりも小さい場合、前記第2の格納部から前記第3のブロックの識別情報を取り出し、前記第1のブロックのデータを前記第3のブロックへ移動させ、前記第1のブロックの識別情報を前記第2の格納部に格納し、
    前記第1の書き込み回数が前記第2の書き込み回数よりも大きく、前記第3の書き込み回数が前記所定値よりも大きい場合、前記第3の格納部から前記第6のブロックの識別情報を取り出し、前記第1のブロックのデータを前記第6のブロックへ移動させ、前記第1のブロックの識別情報を前記第3の格納部に格納することを特徴とする請求項7記載の書き込み制御回路。
  9. 記憶装置に含まれる複数のブロックに対するデータの書き込みを制御し、
    前記複数のブロックのうちデータを格納する第1のブロックの第1の書き込み回数が、データを格納する第2のブロックの第2の書き込み回数よりも大きい場合、前記第1のブロックのデータを前記複数のブロックのうち予備の第3のブロックへ移動させ、前記第1のブロックを予備のブロックに変更する、
    ことを特徴とする書き込み制御方法。
  10. 前記複数のブロックのうち予備のブロックの識別情報を格納する第1の格納部は、第4のブロックの識別情報を格納し、前記複数のブロックのうち予備のブロックの識別情報を格納する第2の格納部は、前記第3のブロックの識別情報を格納し、
    書き込み要求を受信した場合、前記書き込み要求が示す論理アドレスに対応する第5のブロックのデータを消去し、前記第1の格納部から前記第4のブロックの識別情報を取り出し、前記書き込み要求が示す書き込みデータを前記第4のブロックに書き込み、前記第5のブロックの識別情報を前記第1の格納部に格納し、
    前記第1のブロックのデータを前記第3のブロックへ移動させた場合、前記第2の格納部から前記第3のブロックの識別情報を取り出し、前記第1のブロックの識別情報を前記第2の格納部に格納することを特徴とする請求項9記載の書き込み制御方法。
  11. 前記複数のブロックのうち予備のブロックの識別情報を格納する第3の格納部は、第6のブロックの識別情報を格納し、
    前記第1の書き込み回数が前記第2の書き込み回数よりも大きく、前記第1の書き込み回数に1を加算した第3の書き込み回数が所定値よりも小さい場合、前記第2の格納部から前記第3のブロックの識別情報を取り出し、前記第1のブロックのデータを前記第3のブロックへ移動させ、前記第1のブロックの識別情報を前記第2の格納部に格納し、
    前記第1の書き込み回数が前記第2の書き込み回数よりも大きく、前記第3の書き込み回数が前記所定値よりも大きい場合、前記第3の格納部から前記第6のブロックの識別情報を取り出し、前記第1のブロックのデータを前記第6のブロックへ移動させ、前記第1のブロックの識別情報を前記第3の格納部に格納することを特徴とする請求項10記載の書き込み制御方法。
  12. 記憶装置に含まれる複数のブロックに対するデータの書き込みを制御し、
    前記複数のブロックのうちデータを格納する第1のブロックの第1の書き込み回数が、データを格納する第2のブロックの第2の書き込み回数よりも大きい場合、前記第1のブロックのデータを前記複数のブロックのうち予備の第3のブロックへ移動させ、前記第1のブロックを予備のブロックに変更する、
    処理をコンピュータに実行させる書き込み制御プログラム。
  13. 前記コンピュータは、
    前記複数のブロックのうち予備のブロックの識別情報を格納する第1の格納部と、
    前記複数のブロックのうち予備のブロックの識別情報を格納する第2の格納部と、
    を含み、
    前記第1の格納部は、第4のブロックの識別情報を格納し、
    前記第2の格納部は、前記第3のブロックの識別情報を格納し、
    前記コンピュータは、
    書き込み要求を受信した場合、前記書き込み要求が示す論理アドレスに対応する第5のブロックのデータを消去し、前記第1の格納部から前記第4のブロックの識別情報を取り出し、前記書き込み要求が示す書き込みデータを前記第4のブロックに書き込み、前記第5のブロックの識別情報を前記第1の格納部に格納し、
    前記第1のブロックのデータを前記第3のブロックへ移動させた場合、前記第2の格納部から前記第3のブロックの識別情報を取り出し、前記第1のブロックの識別情報を前記第2の格納部に格納することを特徴とする請求項12記載の書き込み制御プログラム。
  14. 前記コンピュータは、
    前記複数のブロックのうち予備のブロックの識別情報を格納する第3の格納部をさらに含み、
    前記第3の格納部は、第6のブロックの識別情報を格納し、
    前記コンピュータは、
    前記第1の書き込み回数が前記第2の書き込み回数よりも大きく、前記第1の書き込み回数に1を加算した第3の書き込み回数が所定値よりも小さい場合、前記第2の格納部から前記第3のブロックの識別情報を取り出し、前記第1のブロックのデータを前記第3のブロックへ移動させ、前記第1のブロックの識別情報を前記第2の格納部に格納し、
    前記第1の書き込み回数が前記第2の書き込み回数よりも大きく、前記第3の書き込み回数が前記所定値よりも大きい場合、前記第3の格納部から前記第6のブロックの識別情報を取り出し、前記第1のブロックのデータを前記第6のブロックへ移動させ、前記第1のブロックの識別情報を前記第3の格納部に格納することを特徴とする請求項13記載の書き込み制御プログラム。
JP2015531387A 2014-05-16 2014-05-16 情報処理装置、書き込み制御回路、書き込み制御方法、及び書き込み制御プログラム Active JP5943153B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2014/063125 WO2015173966A1 (ja) 2014-05-16 2014-05-16 情報処理装置、書き込み制御回路、書き込み制御方法、及び書き込み制御プログラム

Publications (2)

Publication Number Publication Date
JP5943153B2 true JP5943153B2 (ja) 2016-06-29
JPWO2015173966A1 JPWO2015173966A1 (ja) 2017-04-20

Family

ID=54479532

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015531387A Active JP5943153B2 (ja) 2014-05-16 2014-05-16 情報処理装置、書き込み制御回路、書き込み制御方法、及び書き込み制御プログラム

Country Status (2)

Country Link
JP (1) JP5943153B2 (ja)
WO (1) WO2015173966A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11709630B2 (en) 2021-03-04 2023-07-25 Kioxia Corporation Non-volatile memory system, controller for non-volatile memory system, and wear leveling method for non-volatile memory systems

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10795576B2 (en) 2018-11-01 2020-10-06 Micron Technology, Inc. Data relocation in memory

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005275722A (ja) * 2004-03-24 2005-10-06 Kyocera Corp 電子機器
JP2010079659A (ja) * 2008-09-26 2010-04-08 Nec Personal Products Co Ltd フラッシュメモリの延命装置、その方法及びそのプログラム
JP2010520571A (ja) * 2007-03-07 2010-06-10 モサイド・テクノロジーズ・インコーポレーテッド フラッシュメモリ向け部分ブロック消去アーキテクチャ

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005275722A (ja) * 2004-03-24 2005-10-06 Kyocera Corp 電子機器
JP2010520571A (ja) * 2007-03-07 2010-06-10 モサイド・テクノロジーズ・インコーポレーテッド フラッシュメモリ向け部分ブロック消去アーキテクチャ
JP2010079659A (ja) * 2008-09-26 2010-04-08 Nec Personal Products Co Ltd フラッシュメモリの延命装置、その方法及びそのプログラム

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11709630B2 (en) 2021-03-04 2023-07-25 Kioxia Corporation Non-volatile memory system, controller for non-volatile memory system, and wear leveling method for non-volatile memory systems

Also Published As

Publication number Publication date
JPWO2015173966A1 (ja) 2017-04-20
WO2015173966A1 (ja) 2015-11-19

Similar Documents

Publication Publication Date Title
US9928167B2 (en) Information processing system and nonvolatile storage unit
US10915475B2 (en) Methods and apparatus for variable size logical page management based on hot and cold data
JP4836647B2 (ja) 不揮発性キャッシュメモリを用いる記憶装置とその制御方法
US20170228191A1 (en) Systems and methods for suppressing latency in non-volatile solid state devices
EP3506117B1 (en) Stream classification based on logical regions
JP6034183B2 (ja) 半導体記憶装置
US20170270045A1 (en) Hybrid memory device and operating method thereof
KR102106261B1 (ko) 메모리 컨트롤러의 작동 방법과 이를 포함하는 장치들의 작동 방법들
US10884916B2 (en) Non-volatile file update media
JP6347055B2 (ja) 不揮発性メモリ装置
US20140325168A1 (en) Management of stored data based on corresponding attribute data
KR20180126656A (ko) 데이터 저장 장치 및 그것의 동작 방법
KR102530583B1 (ko) 저장 장치 및 메모리 시스템
JP2016184402A (ja) メモリコントローラ、不揮発性記憶装置、不揮発性記憶システム、及びメモリ制御方法
JP5943153B2 (ja) 情報処理装置、書き込み制御回路、書き込み制御方法、及び書き込み制御プログラム
JP2006236239A (ja) データ処理システム及びデータ伸長方法
US20150121033A1 (en) Information processing apparatus and data transfer control method
US11029892B2 (en) Memory control apparatus and memory control method for swapping data based on data characteristics
JP5967307B2 (ja) 情報処理装置、制御回路、制御プログラム、及び制御方法
CN114610654A (zh) 一种固态存储设备以及向其写入数据的方法
JP5967308B2 (ja) 情報処理装置、制御回路、制御プログラム、及び制御方法
WO2020039927A1 (ja) 不揮発性記憶装置、ホスト装置、及びデータ記憶システム
JP5807693B2 (ja) メモリコントローラ、メモリシステム及びアドレス変換方法
JP2009282836A (ja) メモリカード及びメモリカードドライブ
US20140281160A1 (en) Non-volatile semiconductor storage apparatus

Legal Events

Date Code Title Description
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: 20160426

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20160509

R150 Certificate of patent or registration of utility model

Ref document number: 5943153

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150