説明

データ記録装置

【課題】データの更新頻度を考慮して、データを合理的に分散して書き込むことにより長寿命化を図る。
【解決手段】SSD(Solid State Device)1にデータを書き込む際に、ホスト装置100が当該データに関する更新頻度情報をSSD1に通知する。SSD1は、更新頻度値が基準値以上であれば、フラッシュメモリ7におけるデータ書換回数が所定回数未満のブロックに当該データを書き込み、更新頻度値が基準値未満であれば、フラッシュメモリ7におけるデータ書換回数が所定回数以上のブロックに当該データを書き込む。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、SSD(Solid State Device)のようなデータ記録装置に関する。
【背景技術】
【0002】
SSDは、可動部を有しない大容量の半導体メモリ装置であって、データ転送速度が高速でアクセス時間が短いこと、耐衝撃性および耐振動性に優れていること、消費電力が小さいことなどから、従来の磁気ハードディスクドライブ(HDD)に代わる新しいデータ記録装置として近年注目されている。
【0003】
SSDのデータ記録媒体としては、一般にフラッシュメモリが用いられる。フラッシュメモリには、NAND型とNOR型の2種類があるが、SSDにおいては、高速書き込みが可能で記憶容量の大きいNAND型が用いられる。しかしながら、NAND型フラッシュメモリでは、記録領域が複数のブロックに区分され、ブロック単位でデータの書き換えが行われるため、同じブロックに対してデータの書き換えが集中すると、そのブロックのメモリセルが度重なる電圧印加によって劣化し、フラッシュメモリの寿命が短くなるという問題がある。
【0004】
この対策として、データの書き換えが特定のブロックに集中しないように、記録領域全体にわたって書き換えを平準化する手法が知られている。例えば、下記の特許文献1には、ブロック毎に情報の書き換えが可能な情報記録媒体において、ブロックの書換回数を記録する記録領域を設け、書換回数の少ないブロックから書き換えを行うことにより、ブロック間での書換回数のばらつきを抑えることが記載されている。特許文献2には、未使用ブロックの検索順序をローテーションさせることにより、ブロック間での使用頻度の格差を少なくして寿命を延ばすことが記載されている。特許文献3には、同一領域にデータを繰り返し記録することを避けるための循環記録方法が記載されている。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特開平7−85603号公報
【特許文献2】特開2003−271439号公報
【特許文献3】再表2005−76275号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
従来のデータ書き換えの平準化手法では、データの属性について考慮がされていない。このため、例えば、プログラムファイルのような更新頻度の低いデータが書換回数の少ないブロックに格納されたり、逆に、文書ファイルのような更新頻度の高いデータが書換回数の多いブロックに格納されたりして、記録領域のデータ配置にアンバランスが生じ、これが長寿命化の阻害要因となる可能性がある。
【0007】
そこで本発明は、データの更新頻度を考慮して、データを合理的に分散して書き込むことにより長寿命化を図ったデータ記録装置を提供することを目的とする。
【課題を解決するための手段】
【0008】
本発明では、データ記録領域が複数のブロックに区分され、ホスト装置からのデータ書込要求に基づいて所定のブロックにデータが書き込まれるとともに、各ブロック単位でデータの書き換えが行われるデータ記録装置において、データの書き込みの際に、ホスト装置から当該データに関する更新頻度情報を取得し、この更新頻度情報に基づいてデータを書き込むブロックを選択し、選択されたブロックに当該データを書き込むようにしている。
【0009】
このようにすると、データの更新頻度に応じて選択されたブロックにデータが書き込まれるので、更新頻度が高い場合は書換回数の少ないブロックにデータを書き込み、更新頻度が低い場合は書換回数の多いブロックにデータを書き込むことができる。したがって、更新頻度に応じて、データを合理的に分散して書き込むことが可能となる。
【0010】
本発明の好ましい実施形態では、更新頻度情報は、データの属性に応じて算出された更新頻度値であり、書き込むべきデータの更新頻度値を基準値と比較する。そして、当該データの更新頻度値が基準値以上である場合は、データの書換回数が所定回数未満のブロックに当該データを書き込み、当該データの更新頻度値が基準値未満である場合は、データの書換回数が所定回数以上のブロックに当該データを書き込む。
【0011】
上記の更新頻度値は、データの作成主体、データの保存場所、データの拡張子、データの作成日のうちの少なくとも1つに基づいて算出することができる。
【0012】
例えば、データの作成主体がユーザーである場合の更新頻度値は、作成主体がユーザーでない場合の更新頻度値よりも大きな値となる。データの保存場所がユーザー用または一時保管用の保存場所である場合の更新頻度値は、保存場所がユーザー用および一時保管用の保存場所でない場合の更新頻度値よりも大きな値となる。データの拡張子が文書ファイルまたは表ファイルの拡張子である場合の更新頻度値は、拡張子が文書ファイルおよび表ファイルの拡張子でない場合の更新頻度値よりも大きな値となる。データの作成日が現在から遡って所定期間内である場合の更新頻度値は、作成日が現在から遡って所定期間内でない場合の更新頻度値よりも大きな値となる。
【発明の効果】
【0013】
本発明によれば、データの更新頻度を考慮して、データを合理的に分散して書き込むことができるので、記憶領域におけるデータ配置のアンバランスが解消され、装置の長寿命化を図ることができる。
【図面の簡単な説明】
【0014】
【図1】本発明の実施形態に係るSSDのブロック図である。
【図2】データ記録領域を示す図である。
【図3】書換回数テーブルを示す図である。
【図4】アドレス変換テーブルを示す図である。
【図5】データ記録の手順を示すフローチャートである。
【図6】更新頻度値の算出手順を示すフローチャートである。
【図7】他の実施形態による更新頻度値の算出手順を示すフローチャートである。
【図8】他の実施形態によるデータ記録の手順を示すフローチャートである。
【発明を実施するための形態】
【0015】
以下、本発明をSSD(Solid State Device)に適用した場合の実施形態につき、図面を参照しながら説明する。
【0016】
最初に、図1〜図4に基づいて、本発明の実施形態に係るSSDの構成について述べる。図1において、SSD1は、CPU2、SRAM(Static Random Access Memory)3、インターフェイス4、バッファ5、メモリコントローラ6、フラッシュメモリ7から構成される。
【0017】
CPU2は、制御部として、符号3〜6の各部の動作を制御する。SRAM3には、後述する書換回数テーブルやアドレス変換テーブルなどが設けられている。インターフェイス4は、PATA(Parallel Advanced Technology Attachment)、SATA(Serial Advanced Technology Attachment)、SCSI(Small Computer System Interface)、SAS(Serial Attached SCSI)などからなり、ホスト装置100との間でデータの授受を行う。バッファ5は、例えばDRAM(Dynamic Random Access Memory)からなり、ホスト装置100からインターフェイス4を介して送られてくるデータを一時的に格納する。メモリコントローラ6は、バッファ5のデータをフラッシュメモリ7に書き込むための制御を行う。フラッシュメモリ7は、電源切断後も記憶内容が保持される不揮発性メモリであって、複数のNAND型フラッシュメモリから構成される。
【0018】
図2は、フラッシュメモリ7におけるデータ記録領域を示している。データ記録領域10は、複数のブロックに区分されており、各ブロックはさらに複数のページ(セクターともいう)から構成される。フラッシュメモリ7にデータを書き込むにあたっては、書き込み先のブロックのデータを一括して消去した後に、新たなデータを書き込む必要がある。この場合、データを消去できる最小単位はブロックであり、各ブロック単位でデータの書き換えが行われることになる。なお、データの読み書きの最小単位はページである。
【0019】
図3は、SRAM3に設けられている書換回数テーブルを示している。書換回数テーブル20には、図2のデータ記録領域10におけるブロックのデータが書き換えられた回数が、ブロック毎に記録される。
【0020】
図4は、SRAM3に設けられているアドレス変換テーブルを示している。アドレス変換テーブル30には、フラッシュメモリ7の論理アドレスに対応する物理アドレスが記録される。ホスト装置100がSSD1にアクセスする場合、フラッシュメモリ7のページを単位とする論理アドレスで記憶領域が指定される。一方、フラッシュメモリ7の物理アドレスは、論理アドレスに対して固定的に割り当てられたものではなく、データの更新に伴ってダイナミックに割り当てられるようになっている。したがって、データの書き換えが行われるたびに、アドレス変換テーブル30の内容は更新される。
【0021】
次に、以上の構成からなるSSD1におけるデータ記録の詳細について説明する。最初に、本発明の特徴であるデータの更新頻度情報について述べる。
【0022】
SSD1に記録されるデータには、様々な種類のものがあるが、これらの中には、頻繁に更新(書き換え)が行われるものもあれば、ほとんど更新が行われないものもある。
【0023】
例えば、データの作成主体に着目した場合、ユーザー自身が作成したファイルは更新される可能性が高いが、企業によって作成された実行ファイルなどは更新される可能性が低い。
【0024】
また、データの保存場所に着目した場合、例えば、Linux(登録商標)のホームディレクトリ(/home)やテンポラリディレクトリ(/tmp)のようなユーザー用または一時保管用の保存場所に保存されるファイルは更新される可能性が高いが、バイナリディレクトリ(/bin)に保存される基本コマンドのファイルなどは更新される可能性が低い。
【0025】
また、データの拡張子に着目した場合、文書ファイルを表す拡張子「doc」や、表ファイルを表す拡張子「xls」の付いたファイルは更新される可能性が高いが、プログラムファイルを表す拡張子「exe」や、ライブラリファイルを表す拡張子「lib」の付いたファイルは更新される可能性が低い。
【0026】
そこで、ホスト装置100では、SSD1に書き込むデータ(ファイル)に対して、上述したようなデータの属性に応じた更新頻度値をあらかじめ算出し、データの書込時にこの更新頻度値をSSD1へ通知する。そして、SSD1は、ホスト装置100から取得した更新頻度値に基づいてデータを書き込むブロックを選択し、当該ブロックにデータを書き込む(詳細は後述)。
【0027】
図6は、ホスト装置100において更新頻度値を算出する手順の一例を示したフローチャートである。ステップS11では、更新頻度値Zの初期化を行い、Z=0にする。次のステップS12では、SSD1に書き込むデータがユーザーの作成したファイルであるか否かを判定する。ユーザーの作成したファイルであれば(ステップS12:YES)、ステップS13へ進んで、更新頻度値Zに1を加算し、Z=Z+1とする。その後、ステップS14へ進む。一方、ユーザーの作成したファイルでなければ(ステップS12:NO)、ステップS13を省略して、ステップS14へ進む。
【0028】
ステップS14では、ファイルのディレクトリがユーザー用または一時保管用のディレクトリ(例えば、「/home」や「/tmp」)であるか否かを判定する。ユーザー用または一時保管用のディレクトリであれば(ステップS14:YES)、ステップS15へ進んで、更新頻度値Zに1を加算し、Z=Z+1とする。その後、ステップS16へ進む。一方、ユーザー用でも一時保管用でもないディレクトリの場合は(ステップS14:NO)、ステップS15を省略して、ステップS16へ進む。
【0029】
ステップS16では、ファイルの拡張子が文書ファイルまたは表ファイルを表す拡張子(例えば、「doc」や「xls」)であるか否かを判定する。文書ファイルまたは表ファイルを表す拡張子であれば(ステップS16:YES)、ステップS17へ進んで、更新頻度値Zに1を加算し、Z=Z+1とする。その後、処理を終了する。一方、文書ファイルでも表ファイルでもない拡張子の場合は(ステップS16:NO)、ステップS17を省略して、処理を終了する。
【0030】
図6の手順によれば、更新頻度値が例えば以下のように算出される。
(1)ファイルがユーザーにより作成され(ステップS12:YES)、ディレクトリがユーザー用または一時保管用のディレクトリであり(ステップS14:YES)、かつ、拡張子が文書ファイルまたは表ファイルの拡張子である場合(ステップS16:YES)は、ステップS13、S15、S17の演算により、更新頻度値ZはZ=3となる。
(2)ファイルがユーザーにより作成されたものであり(ステップS12:YES)、ディレクトリがユーザー用でも一時保管用でもないディレクトリであり(ステップS14:NO)、拡張子が文書ファイルまたは表ファイルの拡張子である場合(ステップS16:YES)は、ステップS13、S17の演算により、更新頻度値ZはZ=2となる。
(3)ファイルがユーザーにより作成されたものでなく(ステップS12:NO)、ディレクトリがユーザー用または一時保管用のディレクトリであり(ステップS14:YES)、拡張子が文書ファイルでも表ファイルでもない拡張子の場合(ステップS16:NO)は、ステップS15の演算により、更新頻度値ZはZ=1となる。
(4)ファイルがユーザーにより作成されたものでなく(ステップS12:NO)、ディレクトリがユーザー用でも一時保管用でもないディレクトリであり(ステップS14:NO)、かつ、拡張子が文書ファイルでも表ファイルでもない拡張子の場合(ステップS16:NO)は、ステップS13、S15、S17が実行されないため、更新頻度値ZはZ=0となる。
このようにして、データの属性に応じた更新頻度値がホスト装置100において算出される。
【0031】
次に、SSD1において上述の更新頻度値に基づきデータを記録する手順を、図5のフローチャートに基づいて説明する。本フローチャートの各ステップは、CPU2によって実行される。
【0032】
ステップS1では、ホスト装置100からデータ書込要求を受信する。ステップS2では、データ書込要求に続いてホスト装置100から送信される、論理アドレスと更新頻度値とを受信する。次のステップS3では、フラッシュメモリ7のデータ記録領域10における空き領域をサーチする。
【0033】
次に、ステップS4において、ステップS2で受信した更新頻度値を基準値と比較し、更新頻度値が基準値以上か否かを判定する。判定の結果、更新頻度値が基準値以上である場合は(ステップS4:YES)、ステップS5へ進む。
【0034】
ステップS5では、ステップS3で抽出された空き領域のうち、データの書換回数が所定回数未満であるブロックが選択される。当該ブロックが複数ある場合は、最も書換回数の少ないブロックが優先的に選択される。
【0035】
続くステップS6では、ステップS5で選択されたブロックにデータが書き込まれる。この書き込みに先立って、当該ブロックのデータは、メモリコントローラ6により一括消去される。また、ステップS2で取得した論理アドレスに対応する物理アドレスが、アドレス変換テーブル30に基づいて抽出され、この物理アドレスに相当するページにおける書換対象以外のデータが、書き込み先のブロックにコピーされる。その後、バッファ5に格納されたデータが、メモリコントローラ6によりフラッシュメモリ7に転送され、書き込み先のブロックに書き込まれる。これによって、当該ブロックのデータが書き換えられるので、書換回数テーブル20(図3)において、該当するブロックの書換回数に1が加算される。
【0036】
次に、ステップS7において、アドレス変換テーブル30(図4)を更新する。すなわち、ステップS2でホスト装置100から取得した論理アドレスと、ステップS5で選択された書き込み先のブロックの物理アドレスとが対応付けられ、アドレス変換テーブル30が書き換えられる。
【0037】
一方、ステップS4での判定の結果、更新頻度値が基準値未満の場合は(ステップS4:NO)、ステップS8へ進む。
【0038】
ステップS8では、ステップS3で抽出された空き領域のうち、データの書換回数が所定回数以上であるブロックが選択される。当該ブロックが複数ある場合は、最も書換回数の多いブロックが優先的に選択される。
【0039】
その後、ステップS6で、選択されたブロックにデータが書き込まれ、ステップS7で、アドレス変換テーブル30が更新されて処理が終了する。
【0040】
このように、上述した実施形態においては、データの属性に応じて算出された更新頻度値を、ホスト装置100からSSD1へ通知し、SSD1で更新頻度値に応じたブロックが選択されるようにしている。このため、更新頻度値が大きいデータは、書換回数の少ないブロックに書き込まれ、更新頻度値が小さいデータは、書換回数の多いブロックに書き込まれる。これによって、更新頻度に応じて、データを合理的に分散して書き込むことが可能となり、更新される可能性の低いデータが書換回数の少ないブロックに集中したり、更新される可能性の高いデータが書換回数の多いブロックに集中するのを回避することができる。この結果、フラッシュメモリ7のデータ記憶領域10にデータがバランスよく配置されるので、フラッシュメモリ7の長寿命化を図ることができる。
【0041】
本発明では、上述した実施形態以外にも、種々の実施形態を採用することができる。例えば、上記実施形態では、データの属性として、データの作成主体、保存場所、拡張子の3つを例に挙げたが、これ以外の属性としてデータの作成日を追加してもよい。この場合の更新頻度値の算出手順を図7に示す。
【0042】
図7では、図6のステップS11〜S17に加えて、ステップS18、S19が追加されている。ステップS18では、データの作成日が現在から遡って所定期間内(例えば1年以内)であるか否かが判定される。データの作成日が所定期間内であれば(ステップS18:YES)、更新される可能性が高いとみてステップS19へ進み、更新頻度値Zに1を加算して、Z=Z+1とする。その後、処理を終了する。一方、データの作成日が現在から遡って所定期間内でなければ(ステップS18:NO)、更新される可能性が低いとみてステップS19を省略し、処理を終了する。
【0043】
データの属性は、上記のような4種類に限らず他の属性を採用してもよい。例えば、データのタイプの点から、実行ファイルか否かにより更新頻度値を区分してもよい(実行ファイルの更新頻度は、他のファイルの更新頻度に比べて低い)。また、複数の属性をすべて採用するのではなく、それらの一部を組み合わせて採用したり、いずれか1つのみを採用してもよい。
【0044】
また、上記実施形態では、更新頻度値を1つの基準値と比較したが、更新頻度値を複数の基準値と比較してもよい。例えば、基準値が2つの場合のデータ記録手順を図8に示す。
【0045】
図8では、図5のステップS4、S5、S8が、ステップS4a、S5a〜S5cに置き換わっている。ステップS4aでは、データの更新頻度値を基準値α、β(α>β)と比較し、更新頻度値≧αであれば、更新頻度が高いとみて、ステップS5aで書換回数の少ないブロックを選択する。α>更新頻度値≧βであれば、更新頻度が中程度とみて、ステップS5bで書換回数が中程度のブロックを選択する。β>更新頻度値であれば、更新頻度が低いとみて、ステップS5cで書換回数の多いブロックを選択する。なお、ステップS5a〜S5cの書換回数の区分は、あらかじめ定められた2つの閾値に基づいて決められる。
【0046】
また、上記実施形態では、更新頻度情報として、演算により算出される更新頻度値を採用したが、更新頻度情報は、更新頻度に応じてあらかじめ区分されたランクであってもよい。
【0047】
さらに、上記実施形態では、本発明をSSDに適用した例を挙げたが、本発明はSSDに限らず、例えばEEPROM(Electrically Erasable and Programmable Read Only Memory)などの半導体メモリ装置にも適用することが可能である。
【産業上の利用可能性】
【0048】
本発明は、パーソナルコンピュータ、ディスク記録再生装置、デジタルテレビ、デジタルカメラ等に搭載されるデータ記録装置として有用である。
【符号の説明】
【0049】
1 SSD
2 CPU
3 SRAM
4 インターフェイス
5 バッファ
6 メモリ制御部
7 フラッシュメモリ
10 データ記録領域
20 書換回数テーブル
30 アドレス変換テーブル
100 ホスト装置

【特許請求の範囲】
【請求項1】
データ記録領域が複数のブロックに区分され、ホスト装置からのデータ書込要求に基づいて所定のブロックにデータが書き込まれるとともに、各ブロック単位でデータの書き換えが行われるデータ記録装置において、
データの書き込みの際に、前記ホスト装置から当該データに関する更新頻度情報を取得し、
前記更新頻度情報に基づいてデータを書き込むブロックを選択し、選択されたブロックに当該データを書き込むことを特徴とするデータ記録装置。
【請求項2】
請求項1に記載のデータ記録装置において、
前記更新頻度情報は、データの属性に応じて算出された更新頻度値であり、
書き込むべきデータの更新頻度値を基準値と比較し、
当該データの更新頻度値が基準値以上である場合は、データの書換回数が所定回数未満のブロックに当該データを書き込み、
当該データの更新頻度値が基準値未満である場合は、データの書換回数が所定回数以上のブロックに当該データを書き込むことを特徴とするデータ記録装置。
【請求項3】
請求項2に記載のデータ記録装置において、
前記更新頻度値は、データの作成主体、データの保存場所、データの拡張子、データの作成日のうちの少なくとも1つに基づいて算出されることを特徴とするデータ記録装置。
【請求項4】
請求項3に記載のデータ記録装置において、
データの作成主体がユーザーである場合の更新頻度値は、作成主体がユーザーでない場合の更新頻度値よりも大きな値であることを特徴とするデータ記録装置。
【請求項5】
請求項3に記載のデータ記録装置において、
データの保存場所がユーザー用または一時保管用の保存場所である場合の更新頻度値は、保存場所がユーザー用および一時保管用の保存場所でない場合の更新頻度値よりも大きな値であることを特徴とするデータ記録装置。
【請求項6】
請求項3に記載のデータ記録装置において、
データの拡張子が文書ファイルまたは表ファイルの拡張子である場合の更新頻度値は、拡張子が文書ファイルおよび表ファイルの拡張子でない場合の更新頻度値よりも大きな値であることを特徴とするデータ記録装置。
【請求項7】
請求項3に記載のデータ記録装置において、
データの作成日が現在から遡って所定期間内である場合の更新頻度値は、作成日が現在から遡って所定期間内でない場合の更新頻度値よりも大きな値であることを特徴とするデータ記録装置。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate