(57)【要約】【課題】各メモリブロックの頻度および書き変え回数の両方を考慮して、使用の平滑化を図る。【解決手段】  本発明の装置は、使用中、または、第１のキュー若しくは第２のキューに繋がれた空きの不揮発メモリのブロックを複数包含するデータ記憶手段と、使用中ブロックが解放されると、解放されたブロックの使用回数を増加して、当該ブロックを前記第２のキューの末尾に追加し、空きブロックが必要になると、前記第１のキューの先頭からブロックを確保し、前記第１のキューが空になると、前記第２のキューのブロックを前記使用回数の少ない順に並び替えて、前記第２のキューをあらたに前記第１のキューとする要求受け手段と、を備える。【選択図】    図１
2016153932.tif 000002
【特許請求の範囲】
【請求項１】
使用中、または、第１のキュー若しくは第２のキューに繋がれた空きの不揮発メモリのブロックを複数包含するデータ記憶手段と、
使用中ブロックが解放されると、解放されたブロックの使用回数を増加して、当該ブロックを前記第２のキューの末尾に追加し、空きブロックが必要になると、前記第１のキューの先頭からブロックを確保し、前記第１のキューが空になると、前記第２のキューのブロックを前記使用回数の少ない順に並び替えて、前記第２のキューをあらたに前記第１のキューとする要求受け手段と、を備える書き変え平準化装置。
【請求項２】
装置の初期設定時に起動されて、前記データ記憶手段の空きブロックを乱数に基づいて決定した順番で並べて、前記第１のキューを作成する初期化手段を、さらに備える、請求項１の書き変え平準化装置。
【請求項３】
論理アドレスを前記データ記憶手段のブロックのアドレスに変換するアドレス変換手段を、さらに備え、
前記要求受付手段は、指定された論理アドレスの書き変え要求を受け取ると、当該論理アドレスに対応するアドレスのブロックからデータを読み取り、書き変え要求に基づいて更新データを作成し、前記第１のキューの先頭からブロックを確保して前記更新データを確保したブロックに格納し、前記論理アドレスと確保したブロックの対応を前記アドレス変換手段に通知する、請求項１または２の書き変え平準化装置。
【請求項４】
使用中、または、第１のキュー若しくは第２のキューに繋がれた空きの不揮発メモリのブロックを複数包含するデータ記憶手段の使用中ブロックが解放されると、解放されたブロックの使用回数を増加して、当該ブロックを前記第２のキューの末尾に追加し、
空きブロックが必要になると、前記第１のキューの先頭からブロックを確保し、前記第１のキューが空になると、前記第２のキューのブロックを前記使用回数の少ない順に並び替えて、前記第２のキューをあらたに前記第１のキューとする方法。
【請求項５】
初期設定時に、前記データ記憶手段の空きブロックを乱数に基づいて決定した順番で並べて、前記第１のキューを作成する、請求項４の方法。
【請求項６】
指定された論理アドレスの書き変え要求を受け取ると、当該論理アドレスに対応するアドレスのブロックからデータを読み取り、書き変え要求に基づいて更新データを作成し、前記第１のキューの先頭からブロックを確保して前記更新データを確保したブロックに格納し、前記論理アドレスと確保したブロックの対応を記憶して、論理アドレスを前記データ記憶手段のブロックのアドレスに変換する、請求項４または５の方法。
【請求項７】
使用中、または、第１のキュー若しくは第２のキューに繋がれた空きの不揮発メモリのブロックを複数包含するデータ記憶手段を備えたコンピュータに、
使用中ブロックが解放されると、解放されたブロックの使用回数を増加して、当該ブロックを前記第２のキューの末尾に追加し、空きブロックが必要になると、前記第１のキューの先頭からブロックを確保し、前記第１のキューが空になると、前記第２のキューのブロックを前記使用回数の少ない順に並び替えて、前記第２のキューをあらたに前記第１のキューとする要求受付処理を実行させるプログラム。
【請求項８】
コンピュータの起動時に、前記データ記憶手段の空きブロックを乱数に基づいて決定した順番で並べて前記第１のキューを作成する初期化処理を、さらに実行させる、請求項７のプログラム。
【請求項９】
論理アドレスを前記データ記憶手段のブロックのアドレスに変換するアドレス変換手段を、さらに備えるコンピュータに、
指定された論理アドレスの書き変え要求を受け取ると、当該論理アドレスに対応するアドレスのブロックからデータを読み取り、書き変え要求に基づいて更新データを作成し、前記第１のキューの先頭からブロックを確保して前記更新データを確保したブロックに格納し、前記論理アドレスと確保したブロックの対応を前記アドレス変換手段に通知する前記要求受付処理を実行させる、請求項７または８のプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、不揮発性メモリの書き変え平準化装置、方法、および、プログラムに関する。
【背景技術】
【０００２】
不揮発性メモリは、ブロックの書き変えにより劣化が進むため書き変え回数による寿命が設定されている。そのため特定ブロックへの書き込みを繰り返すことにより当該ブロックの寿命が短くなり、寿命を迎えた一部のブロックのために全体の寿命が短くなる。ブロックの書き変えが特定ブロックに偏らないために、いろいろな方法が提案されている。
【０００３】
特許文献１は、ブロックごとの書き変え回数のカウントを行い、カウントが少ないものを優先的に使用する半導体記憶装置を開示する。
【０００４】
ところで、不揮発性メモリは書き変え回数だけではなく、高頻度の書き変えによっても劣化が進行する。書き変え頻度の上昇によるメモリの劣化が進行すると、書き変え回数によって設定された寿命が来る前にデータ破損等の障害が現れる可能性がある。
【０００５】
特許文献２が開示する半導体メモリ装置は、解放順にエントリされたフリーブロック領域を有する。解放されたブロックはフリーブロック領域の最下位にエントリされる。一方、書き込み処理は、フリーブロック領域の最上位のブロックから順におこなわれる。即ち、特許文献２が開示する半導体メモリ装置は、データ更新が発生するブロックについては循環的な割り当てを行い、同一のブロックが連続的に書き変えに使用されることはないように制御する。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２０１１−２０３９１６号公報
【特許文献２】特開２０１２−０１４４００号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
特許文献１が開示する半導体メモリ装置は、メモリブロックの確保において、各メモリブロックの書き変え回数のみを考慮し、頻度を考慮していない。特許文献２が開示する半導体メモリ装置は、メモリブロックの確保において、各メモリブロックの頻度のみを考慮し、書き変え回数を考慮していない。
【０００８】
本発明は、上述の課題を解決する、メモリの書き変え平準化装置、方法、および、プログラムを提供することを目的とする。
【課題を解決するための手段】
【０００９】
本発明の１実施の形態の書き換え平準化装置は、使用中、または、第１のキュー若しくは第２のキューに繋がれた空きの不揮発メモリのブロックを複数包含するデータ記憶手段と、使用中ブロックが解放されると、解放されたブロックの使用回数を増加して、当該ブロックを前記第２のキューの末尾に追加し、空きブロックが必要になると、前記第１のキューの先頭からブロックを確保し、前記第１のキューが空になると、前記第２のキューのブロックを前記使用回数の少ない順に並び替えて、前記第２のキューをあらたに前記第１のキューとする要求受け手段と、を備える。
【００１０】
本発明の１実施の形態の方法は、使用中、または、第１のキュー若しくは第２のキューに繋がれた空きの不揮発メモリのブロックを複数包含するデータ記憶手段の使用中ブロックが解放されると、解放されたブロックの使用回数を増加して、当該ブロックを前記第２のキューの末尾に追加し、空きブロックが必要になると、前記第１のキューの先頭からブロックを確保し、前記第１のキューが空になると、前記第２のキューのブロックを前記使用回数の少ない順に並び替えて、前記第２のキューをあらたに前記第１のキューとする。
【００１１】
本発明の１実施の形態のプログラムは、使用中、または、第１のキュー若しくは第２のキューに繋がれた空きの不揮発メモリのブロックを複数包含するデータ記憶手段を備えたコンピュータに、使用中ブロックが解放されると、解放されたブロックの使用回数を増加して、当該ブロックを前記第２のキューの末尾に追加し、空きブロックが必要になると、前記第１のキューの先頭からブロックを確保し、前記第１のキューが空になると、前記第２のキューのブロックを前記使用回数の少ない順に並び替えて、前記第２のキューをあらたに前記第１のキューとする要求受付処理を実行させる。
【発明の効果】
【００１２】
本発明にかかるメモリの書き変え平準化装置は、各メモリブロックの頻度および書き変え回数の両方を考慮して、使用の平滑化を図ることが出来る。
【図面の簡単な説明】
【００１３】
【図１】図１は、第１の形態にかかる書き変え平準化装置１０の構成図である。
【図２】図２は、要求受付部１１が、空き状態のブロックを確保するときのフローチャートである。
【図３】図３は、ブロックの一部書き変え要求を受け取ったときの、要求受付部１１の動作フローチャートである。
【図４】図４は、第２の形態にかかる書き変え平準化装置１０の構成図である。
【発明を実施するための形態】
【００１４】
＜第１の実施の形態＞
＜構成＞
図１は、本実施の形態にかかる書き変え平準化装置１０の構成図である。書き変え平準化装置１０は、要求受付部１１、初期化部１２、アドレス変換部１３、データ記憶部２１、および、キューターミナル格納部２２を備える。
【００１５】
データ記憶部２１は、不揮発性メモリのブロックを複数包含する。各ブロックは、使用中または空き状態にある。空きブロックは、現キューと次キューの２つのキューにつながれている。使用中ブロックは、書き変え平準化装置１０に接続されている外部の装置、例えば演算装置３０によって使用されており、当該演算装置３０から与えられたユーザデータを格納している。
【００１６】
データ記憶部２１の各ブロックは、物理アドレスを有している。また、各ブロックは、当該ブロックが確保されて使用中になった回数（以降、使用回数）と関連付けられている。使用回数は、例えば、各ブロックに関連付けられた、図示されない使用数カウンタに格納されている。使用回数は、各ブロック自身の管理領域、すなわち、ユーザデータが格納されない領域に格納されていても良い。
【００１７】
キューターミナル格納部２２は、空きブロックの現キューと次キューの２つのキューのキューターミナルを格納している。現キューＱＴ２４は、現キューの先頭の空きブロックを指している。次キューＱＴ２３は、次キューの先頭および末尾の空きブロックを指している。キューにつながれている各ブロックは、次ブロックへのポインタを格納している。
【００１８】
初期化部１２は、書き変え平準化装置１０の初期設定時に、データ記憶部２１すべての空き状態のブロックを現キューにつなぐ。初期化部１２が、空きブロックを現キューにつなぐ順番はランダムである。例えば、初期化部１２は、ブロックの数を範囲とする乱数を順次発生し、その乱数を番号数とするブロックを順次、現キューに繋げていく。
【００１９】
要求受付部１１は、例えば、演算装置３０から、例えば、ブロックの確保、ブロックへのデータ書き込み、および、ブロックの書き変え、ブロックの解放の命令を受け付けて実行する。
【００２０】
アドレス変換部１３は、演算装置３０から与えられたブロックの論理アドレスを物理アドレスに変換して、ブロックにアクセスする。アドレス変換部１３は、例えば、論理アドレスと物理アドレスの対応表を有しており、当該対応表を用いてブロックの論理アドレスを物理アドレスに変換する。
【００２１】
＜動作＞
演算装置３０から書き込み要求を受け取った際、書き変え平準化装置１０は、次のように動作する。なお、書き込み要求は、論理アドレスと、書き込みデータを包含する。
【００２２】
書き込み要求を受け付けると、要求受付部１１は、まず、空き状態のブロックを確保し（後述）、当該ブロックへ書き込みデータを書き込む。そののち、要求受付部１１は、書き込み要求に含まれていた論理アドレスと確保したブロックの物理アドレスを、アドレス変換部１３に通知する。
【００２３】
アドレス変換部１３は、通知された論理アドレスと物理アドレスを関連付けて、例えば、アドレス変換テーブルに登録する。以降、演算装置３０は、論理アドレスを指定して、当該ブロックのデータを読むことが出来る。
【００２４】
図２は、要求受付部１１が、空き状態のブロックを確保するときのフローチャートである。まず、要求受付部１１は、現キューＱＴ２４から、現キューの先頭ブロックを取り外して、当該ブロックを確保する（Ｓ１）。
【００２５】
要求受付部１１は、現キューに取り外したブロックの次のブロックが有るかを確認し（Ｓ２）、存在すれば（Ｓ２でＹ）、現キューＱＴ２４が当該次のブロックを指すように更新する（Ｓ３）。
【００２６】
存在しなければ（Ｓ２でＮ）、要求受付部１１は、次キューのブロックを使用回数の少ない順に並び替えて、先頭ブロック（使用回数の最も少ないブロック）を現キューＱＴ２４に登録する（Ｓ４）。その後、要求受付部１１は、次キューＱＴ２３をＮｕｌｌ（キュー要素無）に設定する（S５）。
【００２７】
図３は、ブロックの一部書き変え要求を受け取ったときの、要求受付部１１の動作フローチャートである。ブロックの書き変え要求は、論理アドレスと、書き変えデータ、その部位、例えば、ブロック内のオフセットを包含する。
【００２８】
要求受付部１１は、アドレス変換部１３から指定された論理アドレスに対する物理アドレスを得て、当該物理アドレスのブロックから書き変え前のデータを読み出す（Ｓ１１）。要求受付部１１は、当該ブロックを解放する（Ｓ１２）。
【００２９】
次に、要求受付部１１は、読み出した書き変え前のデータと、書き変えデータとその部位から、更新後のデータを作成する（Ｓ１３）。要求受付部１１は、空き状態のブロックを確保し、当該ブロックへ更新後のデータを書き込み、書き変え要求に含まれていた論理アドレスと確保したブロックの物理アドレスを、アドレス変換部１３に通知する（Ｓ１４）。
【００３０】
なお、要求受付部１１は、ブロックを解放するときは、解放対象ブロックを、次キューの末尾に登録する。即ち、要求受付部１１は、次キューＱＴ２３を参照して、次キューの末尾ブロックにアクセスして、その次に解放対象ブロックをつなぎ、解放対象ブロックを次キューＱＴ２３に末尾ブロックとして登録する。
【００３１】
また、アドレス変換部１３は、通知された論理アドレスと物理アドレスを関連付けて、例えば、アドレス変換テーブルに登録する。
【００３２】
要求受付部１１、初期化部１２、および、アドレス変換部１３は論理回路で構成される。要求受付部１１、初期化部１２、または、アドレス変換部１３は、コンピュータでもある書き変え平準化装置１０の図示されないプロセッサで実行されるプログラムによって実現されても良い。
【００３３】
データ記憶部２１、および、キューターミナル格納部２２は、不揮発性の半導体メモリで構成される。
＜効果＞
本実施の形態にかかるメモリの書き変え平準化装置１０は、各メモリブロックの頻度および書き変え回数の両方を考慮して、使用の平滑化を図ることが出来る。
【００３４】
その理由は、要求受付部１１が、解放時期にしたがって、空きブロックを２つのキューに分けて管理し、その中で、書き変え回数の少ない順に使用していくからである。したがって、解放されたブロックが連続して使用されることが防止できるとともに、書き変え回数の高いブロックの使用を遅らせることが出来る。
【００３５】
本実施の形態にかかるメモリの書き変え平準化装置１０は、各メモリブロックの頻度および書き変え回数の両方を考慮して、使用の平滑化を効率よく図ることが出来る。
【００３６】
その理由は、一時期にソートするブロックの数が低減されるからである。ソートの処理量は、対象となる要素数の比例以上の割合で増加する。
【００３７】
＜第一の実施の形態の変形例＞
なお、キューの管理方法は、上述した方法に限られない。キュー内のブロックの順番が分かる方法であれば、要求受付部１１は、どのように管理しても良い。
【００３８】
また、書き変え平準化装置１０は、物理アドレスだけで、アクセスする構成を採用しても良い。この場合、書き変え平準化装置１０は、アドレス変換部１３を備えない。
【００３９】
＜第２の実施形態＞
図４は、本実施の形態にかかる書き変え平準化装置１０の構成図である。書き変え平準化装置１０は、要求受付部１１、および、データ記憶部２１を備える。
【００４０】
データ記憶部２１は、使用中、または、第１のキュー若しくは第２のキューに繋がれた空きの不揮発メモリのブロックを複数包含する。
【００４１】
要求受付部１１は、使用中ブロックが解放されると、解放されたブロックの使用回数を増加して、当該ブロックを第２のキューの末尾に追加する。また、要求受付部１１は、空きブロックが必要になると、第１のキューの先頭からブロックを確保し、第１のキューが空になると、第２のキューのブロックを使用回数の少ない順に並び替えて、第２をあらたに第１のキューとする。
【００４２】
本実施の形態にかかるメモリの書き変え平準化装置１０は、各メモリブロックの頻度および書き変え回数の両方を考慮して、使用の平滑化を図ることが出来る。
【００４３】
その理由は、要求受付部１１が、解放時期にしたがって、空きブロックを２つのキューに分けて管理し、その中で、書き変え回数の少ない順に使用していくからである。したがって、解放されたブロックが連続して使用されることが防止できるとともに、書き変え回数の高いブロックの使用を遅らせることが出来る。
【００４４】
本実施の形態にかかるメモリの書き変え平準化装置１０は、各メモリブロックの頻度および書き変え回数の両方を考慮して、使用の平滑化を効率よく図ることが出来る。
【００４５】
その理由は、一時期にソートするブロックの数が低減されるからである。ソートの処理量は、対象となる要素数の比例以上の割合で増加する。
【００４６】
以上、実施形態を参照して本願発明を説明したが、本願発明は上記実施形態に限定されるものではない。本願発明の構成や詳細には、本願発明のスコープ内で当業者が理解し得る様々な変更をすることができる。
【符号の説明】
【００４７】
１０    書き変え平準化装置
１１    要求受付部
１２    初期化部
１３    アドレス変換部
２１    データ記憶部
２２    キューターミナル格納部
２３    次キューＱＴ
２４    現キューＱＴ
３０    演算装置
【図１】
2016153932.tif 000003
【図２】
2016153932.tif 000004
【図３】
2016153932.tif 000005
【図４】
2016153932.tif 000006