(57)【要約】  ソリッドステートドライブを最適化する方法が説明される。この方法は、ＳＳＤ上の空き領域断片がしきい値断片サイズよりも小さいかどうかを決定するステップを伴う。ＳＳＤ上の空き領域断片がしきい値断片サイズよりも小さい場合、空き領域断片を除去する。ＳＳＤ上の空き領域断片がしきい値断片サイズよりも小さくない場合、データを記憶するために空き領域断片を保持する。しきい値断片サイズよりも小さい空き領域断片の除去により、ＳＳＤへの書込時に用いられる空き領域断片の数が減少されて、ＳＳＤ性能を向上させることが可能になる。
2010541107.tif 000002
【特許請求の範囲】
【請求項１】
ＳＳＤ上の空き領域断片がしきい値断片サイズよりも小さいかどうかを決定するステップと、
前記ＳＳＤ上の前記空き領域断片が前記しきい値断片サイズよりも小さい場合、前記空き領域断片を除去するステップと、
前記ＳＳＤ上の前記空き領域断片が前記しきい値断片サイズよりも小さくない場合、データを記憶するために前記空き領域断片を保持するステップとを備える、方法。
【請求項２】
前記しきい値断片サイズは、
前記ＳＳＤのシーケンシャル書込速度と、
前記ＳＳＤの１秒当りの入出力（Ｉ／Ｏ）とのうち少なくとも１つ以上に基づいて演算される、請求項１に記載の方法。
【請求項３】
前記しきい値断片サイズは、前記ＳＳＤの前記シーケンシャル書込速度を前記ＳＳＤの前記１秒当りのＩ／Ｏで除算するステップを含む１つ以上のステップを用いて演算される、請求項２に記載の方法。
【請求項４】
前記空き領域断片を除去するステップは、
前記空き領域断片を除去するのに必要な１つ以上のリソースの利用がアイドル基準にいつ準拠するかを決定するステップと、
前記アイドル基準に準拠している前記１つ以上のリソースの前記利用に応答して、前記空き領域断片を除去するステップとを含む、請求項１に記載の方法。
【請求項５】
前記空き領域断片を除去するステップは、前記空き領域断片をファイルの少なくとも一部で埋めるステップを含む、請求項１に記載の方法。
【請求項６】
前記ファイルは、
仮フィラーファイルと、
ほとんど使用されないファイルとのうち１つ以上である、請求項５に記載の方法。
【請求項７】
第２の空き領域断片を除去するステップは、前記空き領域断片を隣接する空き領域断片とマージして、マージされた空き領域断片を得るステップを含み、前記マージされた空き領域断片は、前記しきい値断片サイズよりも大きい、請求項１に記載の方法。
【請求項８】
前記しきい値断片サイズは、
ユーザから前記しきい値断片サイズを受取るステップ、
前記しきい値断片サイズを演算するステップ、
前記ＳＳＤ内部に物理的に組込まれた要素から前記しきい値断片サイズを得るステップ、
前記しきい値断片サイズに対してさまざまな値をテストし、最適な性能が得られる前記しきい値断片サイズを選択することによって、前記しきい値断片サイズを決定するステップによって得られる、請求項１に記載の方法。
【請求項９】
ソリッドステートドライブ（ＳＳＤ）オプティマイザであって、
前記ＳＳＤ上の空き領域断片がしきい値断片サイズよりも小さいかどうかを決定するための手段と、
前記ＳＳＤ上の前記空き領域断片が前記しきい値断片サイズよりも小さい場合、前記空き領域断片を除去するための手段と、
前記ＳＳＤ上の前記空き領域断片が前記しきい値断片サイズより小さくない場合、データを記憶するために前記空き領域断片を保持するための手段とを備える、ＳＳＤオプティマイザー。
【請求項１０】
前記ＳＳＤのシーケンシャル書込速度と、
前記ＳＳＤの１秒当りの入出力（Ｉ／Ｏ）とのうち少なくとも１つ以上に基づいて、前記しきい値断片サイズを演算するための手段をさらに備える、請求項９に記載のＳＳＤオプティマイザー。
【請求項１１】
前記しきい値断片サイズを演算するための前記手段は、前記しきい値断片サイズを決定するために前記ＳＳＤの前記シーケンシャル書込速度を前記ＳＳＤのＩ／Ｏ速度で除算するための手段を含む、請求項１０に記載のＳＳＤオプティマイザー。
【請求項１２】
前記空き領域断片を除去するための手段は、
前記空き領域断片を除去するのに必要な１つ以上のリソースの利用がいつアイドル基準に準拠するかを決定するための手段を含む、請求項９に記載のＳＳＤオプティマイザー。
【請求項１３】
前記空き領域断片を除去するための前記手段は、
前記空き領域断片をファイルの少なくとも一部で埋めるための手段を含む、請求項９に記載のＳＳＤオプティマイザー。
【請求項１４】
前記ファイルは、
仮フィラーファイルと、
ほとんど使用されないファイルとのうち１つ以上である、請求項１３に記載のＳＳＤオプティマイザー。
【請求項１５】
第２の空き領域断片を除去するための前記手段は、マージされた空き領域断片を得るために前記空き領域断片を隣接する空き領域断片とマージするための手段を含み、前記マージされた空き領域断片は、前記しきい値断片サイズよりも大きい、請求項９に記載のＳＳＤオプティマイザー。
【請求項１６】
ユーザから前記しきい値断片サイズを受取るための手段、
前記しきい値断片サイズを演算するための手段、
前記しきい値断片サイズを前記ＳＳＤ内部に物理的に組込まれた要素から得るための手段、または
前記しきい値断片サイズに対してさまざまな値をテストし、最適な性能が得られる前記しきい値断片サイズを選択することによって、前記しきい値断片サイズを決定するための手段をさらに備える、請求項９に記載のＳＳＤオプティマイザー。
【請求項１７】
１つ以上のプロセッサによって実行されると前記プロセッサに請求項１から８のいずれかに記載された方法を実行させる命令の１つ以上のシーケンスを備える、コンピュータ読取可能記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
（優先権の主張）
この出願は、２００７年１０月５日に出願された米国仮特許出願連続番号第６０／９７８，０８６号および２００８年１０月３日に出願された米国通常出願特許出願連続番号第１２／２４４，７７１号の優先権を主張する。
【０００２】
（引用による援用）
この出願は、２００６年１０月１０日に出願された米国特許出願連続番号第１１／５４６，０７２号、２００６年１０月１０日に出願された米国特許出願連続番号第１１／５４６，５１４号および２００６年６月１９日日に出願された米国特許出願連続番号第１１／４７１，４６６号をこの明細書中に引用により援用する。
【０００３】
（発明の分野）
この発明は、概して、ソリッドステートドライブに関する。より具体的には、この発明は、ソリッドステートドライブを最適化することに関する。
【背景技術】
【０００４】
（背景）
この節に説明されるアプローチは、遂行され得るアプローチであるが、以前に着想または遂行されたアプローチであるとは限らない。したがって、特に明記しない限り、この節に説明されるアプローチのいずれも、単にこの節に含まれるからといって先行技術と見なされるとみなされるべきでない。
【０００５】
ソリッドステートドライブ（ＳＳＤ）は、ソリッドステートディスクと称されることもあり、揮発性または不揮発性ソリッドステートメモリを用いてデータを記憶する記憶装置である。ソリッドステートメモリは、半導体ベースの電子部品で構成される。ソリッドステートドライブは、静的ランダムアクセスメモリ（ＳＲＡＭ）、動的ランダムアクセスメモリ（ＤＲＡＭ）、パラメータランダムアクセスメモリ（ＰＲＡＭ）、フラッシュメモリ（たとえばＮＯＲフラッシュメモリやＮＡＮＤフラッシュメモリ）、または相変化メモリ（ＰＣＭ）が含まれるがこれに限定されない異なる種類のメモリ要素を含んでもよい。
【０００６】
ＳＳＤには可動部分がないため、ＳＳＤは、機械的不良の危険性が相当低減されている。機械的不良の減少は、システムの信頼性の向上をもたらす。さらに、可動部分がないことにより、ＳＳＤは、標準的な回転媒体ハードドライブと比較してより短い読出および書込シーク時間を提供する。したがって、ＳＳＤは、より高速な、シーケンシャルおよびランダムなデータ読出および書込レートを可能にする。
【発明の概要】
【発明が解決しようとする課題】
【０００７】
ＳＳＤに可動部分はないものの、それにもかかわらず、装置の限界およびおそらくは空き領域断片による性能問題が存在する。たとえば、性能に基づいた限界は、所与の時間内にＳＳＤが行なうことのできる書込オペレーションの数の限界であることがある。ＳＳＤが多数の小さな空き領域断片に書込んでいるとき、ファイルは、ＳＳＤへの記憶のために多くの異なる部分に断片化されなくてはならない。各空き領域断片への書込は、消去オペレーションを必要とすることがあるとともに、書込オペレーションを必要とし、そして、ＳＳＤが行なうことのできる書込オペレーションの数には限界があり得るため、多数の小さな空き領域断片は、書込操作の数の限界によりＳＳＤの最大シーケンシャル書込速度を利用できないことを引起こすことがある。
【０００８】
コンピュータの通常使用において、Windows（登録商標）（Windows（登録商標）は、ワシントン州シアトルのマイクロソフトコーポレイションの登録商標である）などの現在のオペレーションシステムは、多数の空き領域断片を作成する。たとえば、インターネットの閲覧は、多くの不要な空き領域断片を作成する可能性があり得る。ウェブブラウザは、使用されるときに、多くの一時ファイルを作成する。一時ファイルのほとんどは、小さく、寿命が短く、たとえばブラウザキャッシュクリーンアップ中などに頻繁に削除される。しかしながら、すべての一時ファイルが同時にまたはそれらの作成された順に削除されるわけではない。この現象は、空き領域断片の作成を加速させる。
【０００９】
さらに、新規作成されたファイルのディスクへの記憶中、ファイルシステムは、一般的に、新規作成されたファイルを（ａ）最も直近に空いた空き領域断片か（ｂ）最初に識別された空き領域断片かのいずれかに、その空き領域断片のサイズを考慮することなく書込み始める。書込まれるべきファイルが大きく、識別された空き領域断片が小さい場合、ファイルは、識別された空き領域断片に応じて多くの断片に分割され、ファイルをディスクに記憶するのに多数の書込オペレーションが必要とされる。実際のファイルを記憶するのに必要な書込オペレーションに加えて、ファイルが多数の断片に記憶されるときファイルシステム構造を更新するために多数の書込オペレーションも必要とされることがある。
【００１０】
この発明は、添付の図面の図中に限定的ではなく例示的に示される。図中、同様の参照番号は、同様の要素を指す。
【図面の簡単な説明】
【００１１】
【図１】ある実施例に従ったソリッドステートドライブおよびソリッドステートドライブオプティマイザを説明するブロック図である。
【図２】ソリッドステートドライブを最適化するためのある実施例を説明するフロー図である。
【図３】この発明のある実施例を実装する際に用いられてもよいコンピュータシステムを説明するブロック図である。
【発明を実施するための形態】
【００１２】
（詳細な説明）
以下の説明では、説明のために、多数の特定的な詳細が記載されて、この発明の完全な理解を与える。しかしながら、この発明はこういった特定的な詳細なしに実施されてもよいことが明らかであるだろう。他の例において、この発明を不必要に不明瞭にすることを避けるために、周知の構造および装置は、ブロック図形式で示されている。
【００１３】
互いに独立してまたは他の特徴との任意の組合せで各々用いられ得るいくつかの特徴を以下に説明する。しかしながら、個別の特徴は、上述の問題のいずれにも対処しないかもしれず、または上述の問題のうち１つのみに対処するかもしれない。上述の問題の中には、この明細書中で説明される特徴のいずれによっても十分に対処されないものがあるかもしれない。また、見出しが設けられてはいるものの、ある特定の見出しに関連するがその見出しが付いた節中に見つからない情報が、明細書中の他の場所に見つかることもある。
【００１４】
（概要）
ソリッドステートドライブ（ＳＳＤ）の最適化方法が提供される。ＳＳＤへのファイル書込みは、書込まれている空き領域断片がそのファイル全体には小さすぎる場合、多数の消去および書込オペレーションを必要とすることがある。たとえば、ファイルが書込まれているＳＳＤにある各空き領域断片がそのファイルのサイズよりも大幅に小さい場合、このファイルは、多数の断片に分割されることがあり、ファイル全体がＳＳＤに書込まれるまで、各空き領域断片に対して書込オペレーションが必要とされることがある。したがって、この発明は、小さな空き領域断片が書込性能に影響を与えないように、この空き領域断片をデータで埋めることにより、または、この空き領域断片を大型化することにより、小さな空き領域断片を除去することで、ＳＳＤを最適化する。これは、オペレーティングシステムにファイルを順次または少なくともより少ない空き領域断片に書込ませ、これにより最高書込性能が得られる。
【００１５】
ある実施例に従って、空き領域断片を除去するか、または空き領域断片をデータ記憶のためにＳＳＤに保持するかを決定するための基準として、しきい値断片サイズが用いられる。空き領域断片のサイズは、しきい値断片サイズと比較される。空き領域断片がしきい値断片サイズよりも小さい場合、空き領域断片は、ＳＳＤが空き領域断片を用いてファイルの断片を書込まないように除去される。空き領域断片がしきい値断片サイズと少なくとも同じ大きさの場合、空き領域断片は、ＳＳＤによるデータ記憶のために保持される。しきい値断片サイズよりも小さい空き領域断片を除去すると、ファイルがより大きな空き領域断片に書込まれることになり、したがってファイルを書込むために必要な空き領域断片の数が減り、必要な書込オペレーションの数が減る。時間当たりの書込オペレーションの数を、ＳＳＤで実際に行なうことができる書込オペレーションの数以下まで減らすことによって、ＳＳＤの性能が向上する。ＳＳＤの向上した性能は、行なうことができる書込オペレーションの数によって制限されない。なぜなら、最適化されたＳＳＤに必要な書込オペレーションの数は、行なうことができる書込オペレーションの数よりも少ないためである。ある実施例において、しきい値断片サイズは、少なくともＳＳＤのシーケンシャル書込速度とＳＳＤ上で時間当たり可能な入出力（Ｉ／Ｏ）オペレーションの数とに基づいて決定される。たとえば、しきい値断片サイズは、少なくとも部分的に、ＳＳＤのシーケンシャル書込速度をＳＳＤの１秒当りのＩ／Ｏで除算することによって決定されてもよい。
【００１６】
ある実施例において、いくつかの異なるしきい値断片サイズがファイル書込時にテストされてもよく、最適性能に対応するしきい値断片サイズが用いられてもよい。しきい値断片サイズの最適化は、周期的に、または、ＳＳＤによる低性能レベルもしくは予め定められた数の空き領域断片の発生のような予め定められた条件に基づいて、行なわれてもよい。
【００１７】
特定の構成要素がこの明細書中において方法ステップを行なうものとして記載されるが、他の実施例において、この特定された構成要素のために働くエージェントまたは機構が方法ステップを行なってもよい。さらに、この発明は、単一のシステム上の構成要素に関して論じられるが、この発明は、複数のシステムにわたって分配された構成要素で実現化されてもよい。加えて、この発明は、ソリッドステートドライブ（ＳＳＤ）に関して論じられるが、この発明の実施例は、任意のメモリドライブ（たとえば回転ディスクドライブ）に適用することができる。
【００１８】
この発明の実施例は、この明細書中で説明される方法ステップを行なうための手段を含む任意のシステムも含む。この発明の実施例は、命令を備えたコンピュータ読取可能媒体も含み、この命令は、実行されると、この明細書中に説明される方法ステップを行なわせる。
【００１９】
（空き領域断片除去）
ファイルシステムレベルで参照される空き領域断片は、データを含んでいるものとは参照されないものであって、割当てに利用可能な、メモリブロックまたは記憶領域である。空き領域断片は、メモリに記憶されたオブジェクトがたとえばメモリ空間への参照を取除くことによって削除されるときに生成されることがある。オブジェクトは、オブジェクトが作成されたのと同じ順には削除されないことがあるので、削除されたオブジェクトに対応する空き領域断片がデータが記憶され参照されるメモリブロック間に作成される。各空き領域断片への書込は、消去オペレーションを必要とすることがあり、書込オペレーションを必要とする。したがって、空き領域断片がファイルを保持するには小さすぎる場合、ファイルは、断片化され、多くの異なる空き領域断片に書込まれなければならない。空き領域断片が小さいほど、ファイルを書込むのにいっそうの断片化が必要になる。ドライブが時間当たり行うことができる書込オペレーションの数には限界があるので、多数の小さな空き領域断片は、高レベルのファイル断片化を必要とし、ドライブの最大シーケンシャル書込速度の利用を妨げることがある。したがって、この発明のある実施例において、指定されたしきい値断片サイズよりも小さい空き領域断片は、除去される。空き領域断片の除去により、ファイルシステムによって書込まれる空き領域断片の数が減少する。
【００２０】
空き領域断片の除去は、空き領域断片を別のファイルの少なくとも一部で埋めることを伴ってもよい。たとえば、ディスクの終わり頃のファイル、ほとんど使用されないファイル、または仮のフィラーファイルが用いられて、空き領域断片を埋めてもよい。空き領域断片を別のファイルの少なくとも一部を記憶することによって埋めることにより、ＳＳＤ性能に影響を与える可能性があり得る空き領域断片が除去される。空き領域断片の除去は、マージされた空き領域断片が少なくともしきい値断片サイズと同じ大きさであるよう、空き領域断片を１つ以上の隣接する空き領域断片とマージすることも伴ってもよい。ある実施例において、空き領域断片は、空き領域断片を除去するのに必要なリソースがアイドル基準に準拠した後に除去される。たとえば、リソースの利用が予め定められた割合を下回る場合、アイドル基準は満たされてもよい。別の例において、予め定められた低い使用頻度がアイドル基準を満たす場合に、アイドル基準は、リソース使用頻度を含んでもよい。アイドル基準およびリソースに基づいたスケジューリングのより詳細な説明は、この明細書中に引用により援用される２００６年１０月１０日に出願された米国特許出願連続番号第１１／５４６，５１４号に説明されている。
【００２１】
（システムアーキテクチャ）
特定のコンピュータアーキテクチャがこの明細書中に説明されるものの、この発明の他の実施例は、しきい値断片サイズに基づいてソリッドステートドライブ（ＳＳＤ）を最適化するために用いることができる任意のアーキテクチャに適用可能である。
【００２２】
図１には、この発明の１つ以上の実施例に従ったＳＳＤ（１００）およびＳＳＤオプティマイザ（１２５）が示されている。図１に示されるように、ＳＳＤ（１００）は、インターフェイス（１０５）と、メモリコントローラ（１１０）と、ソリッドステートメモリ（１１５）とを含む。
【００２３】
（インターフェイス）
インターフェイス（１０５）は、一般的に、データをＳＳＤ（１００）とやり取りする（たとえばデータを記憶するまたはデータを取得する）ために用いることができる任意の接続を表わす。たとえば、インターフェイス（１０５）は、ＳＳＤ（１００）とデータ転送のためのマザーボードとの間の接続であってもよい。インターフェイス（１０５）は、データワードを並列にまたはビットシリアル形式で搬送してもよい。インターフェイス（１０５）の例には、アドバンスドテクノロジーアタッチメント（ＡＴＡ）（たとえばシリアルアドバンスドテクノロジーアタッチメント（ＳＡＴＡ）およびパラレルアドバンスドテクノロジーアタッチメント（ＰＡＴＡ））またはインテリジェントドライブエレクトロニクス（ＩＤＥ）またはスモールコンピュータシステムインターフェイス（ＳＣＳＩ）が含まれるが、これに限定されない。インターフェイス（１０５）は、外部構成要素がソリッドステートメモリ（１１５）に直接アクセスするまたはメモリコントローラ（１１０）を用いるコマンドを介してソリッドステートメモリ（１１５）に間接的にアクセスすることを可能にしてもよい。
【００２４】
（メモリコントローラ）
１つ以上の実施例において、メモリコントローラ（１１０）は、一般的に、ソリッドステートメモリ（１１５）に出入りするデータの流れを管理するロジックを含む構成要素を表わす。メモリコントローラ（１１０）は、ＳＳＤ（１１０）自体にあるものとして示されているものの、メモリコントローラ（１１０）は、ある実施例に従って別の構成要素上にあってもよい。メモリコントローラ（１１０）は、メモリコントローラ（１１０）をソリッドステートメモリ（１１５）に接続するために必要な配線の数または複雑性を減少させるために、一式のマルチプレクサおよびデマルチプレクサ、または、予め定義されたプロトコル（ＡＴＡ）を介してソリッドステートメモリ（１１５）に接続されてもよい。
【００２５】
ある実施例において、メモリコントローラ（１１０）は、ソリッドステートメモリ（１１５）のどこにデータが記憶されるかを制御していてもよい。たとえば、メモリコントローラ（１１０）は、ソリッドステートメモリ（１１５）のどの部分がデータ記憶に利用可能であり、ソリッドステートメモリ（１１５）のどの部分がデータ記憶に利用可能でないかを決定するロジックを含んでもよい。
【００２６】
メモリコントローラ（１１０）は、データブロックを書込む、取得する、または削除するコマンドを、ＳＳＤに接続された装置上で実行されているファイルシステムを通して１つ以上のアプリケーションから受けてもよい。メモリコントローラ（１１０）は、コマンドを、ファイルシステムまたはオペレーティングシステムを通して、ＳＳＤ（１００）に接続されたものとして示されるソリッドステートドライブオプティマイザ（１２５）からも受けてもよい。
【００２７】
（ソリッドステートメモリ）
１つ以上の実施例において、ソリッドステートメモリ（１１５）は、一般的に、デジタルデータを保持するロジックを含むデータ記憶コンポーネントを表わす。ソリッドステートメモリ（１１５）は、ロジックとハードウェアとを含んでデジタルデータを保持する半導体装置を含む。たとえば、ソリッドステートメモリ（１１５）は、ビットを相変化ＲＡＭ、シングルレベルセル（ＳＬＣ）またはマルチレベルセル（ＭＬＣ）に記憶してもよい。上述のしきい値断片サイズ（１２０）は、ビットがソリッドステートメモリ（１１５）内のＳＬＣに記憶されたのかまたはＭＬＣに記憶されたのかに基づいて、異なって演算されてもよい。さらに、しきい値断片サイズ（１２０）も、マルチレベルセル中のレベルの数に基づいて異なって演算されてもよい。ソリッドステートメモリ（１１５）は、静的ランダムアクセスメモリ（ＳＲＡＭ）、動的ランダムアクセスメモリ（ＤＲＡＭ）、パラメータランダムアクセスメモリ（ＰＲＡＭ）、フラッシュメモリ（たとえばＮＯＲフラッシュメモリおよびＮＡＮＤフラッシュメモリ）、相変化メモリ（ＰＣＭ）または別の種類の適切なメモリとして実装されてもよい。
【００２８】
（ソリッドステートドライブオプティマイザ）
１つ以上の実施例において、ソリッドステートドライブオプティマイザ（１２５）は、一般的に、ＳＳＤ性能を向上させるためにＳＳＤ（１００）を最適化するために用いられるソフトウェアおよび／またはハードウェアを表わす。たとえば、ＳＳＤオプティマイザ（１２５）は、ＳＳＤ（１００）に接続された装置上で実行されているソフトウェアアプリケーションに対応してもよい。コンピュータシステムにおいて、ソリッドステートオプティマイザ（１２５）は、データをＳＳＤ（１００）に記憶する他のアプリケーションと同時に実行されるアプリケーションであってもよい。別の例において、ＳＳＤオプティマイザ（１２５）は、ＳＳＤ（１００）を最適化するために組み込まれたロジックを備えた装置に対応してもよい。図１においてＳＳＤ（１００）に接続されたものとして示されているものの、ＳＳＤオプティマイザ（１２５）は、この発明のある実施例に従って、ＳＳＤ（１００）自体にあるソフトウェアおよび／またはコンポーネントにも対応してもよい。
【００２９】
ＳＳＤオプティマイザ（１２５）は、しきい値断片サイズ（１２０）よりも小さい空き領域断片を除去して、オペレーティングシステムにデータまたはファイルをシーケンシャルに書込ませることによって上述のようにＳＳＤ（１００）を最適化するロジックを含む。ＳＳＤオプティマイザ（１２５）は、ユーザによって起動されてもよく、周期的に起動されてもよく、または予め定められた条件（たとえば、ＳＳＤ（１００）の予め定められた断片化レベルまたはＳＳＤ（１００）の低性能レベル）に基づいて起動されてもよい。ＳＳＤオプティマイザ（１２５）は、低リソース使用によっても起動されてもよい。たとえば、ＳＳＤ（１００）を最適化する際ＳＳＤオプティマイザ（１２５）によって用いられるリソース（たとえばプロセッサ）の現在利用レベルが低い場合、ＳＳＤオプティマイザ（１２５）が起動されてもよい。ある実施例において、ＳＳＤオプティマイザ（１２５）の起動のために複数の条件が組合せて必要とされてもよい（たとえばＳＳＤ（１００）の低性能レベルおよびリソースの低現在利用レベル）。
【００３０】
ある実施例において、ＳＳＤオプティマイザ（１２５）は、コンピュータマイクロジョブとして行なわれる任意のタスクをスケジュールするロジックを含んでもよい。コンピュータマイクロジョブは、この明細書中に引用により援用される２００６年６月１９日に出願された米国特許出願連続番号第１１／４７１，４６６号および２００６年１０月１０日に出願された米国特許出願連続番号第１１／５４６，０７２号に説明されている。したがって、ＳＳＤオプティマイザ（１２５）によって行なわれてＳＳＤ（１００）を最適化するタスクは、異なるコンピュータマイクロジョブとして時間の経過とともに行なわれてもよい。
【００３１】
（しきい値断片サイズ）
１つ以上の実施例において、ＳＳＤオプティマイザ（１２５）に記憶されたものとして示されるしきい値断片サイズ（１２０）は、上述のタスクを行なう際にＳＳＤオプティマイザ（１２５）によって用いられる特定の空き領域断片サイズに対応する。具体的には、しきい値断片サイズ（１２０）よりも小さい空き領域断片は、ＳＳＤオプティマイザ（１２５）によって除去され、しきい値断片サイズ（１２０）以上の大きさの空き領域断片は、ＳＳＤオプティマイザ（１２５）によるデータ記憶のために保持される。しきい値断片サイズ（１２０）よりも小さい空き領域断片を除去する際のしきい値断片サイズ（１２０）の使用により、ファイルシステムは、ファイルを単一の空き領域断片または多数の空き領域断片にＳＳＤの１秒当りのメモリ書込ＩＯ（ＩＯＰＳ）の限界内でシーケンシャルに書込まざるをえなくなってもよく、これは、ＳＳＤの１秒当りの書込ＩＯに基づいたＳＳＤ性能に影響を与えない。
【００３２】
ＳＳＤオプティマイザ（１２５）に記憶されたものとして示されているものの、しきい値断片サイズ（１２０）は、任意のコンポーネント（たとえばＳＳＤオプティマイザ（１２５）、ＳＳＤ（１００）、または別の適切な装置）によって維持されてもよい。しきい値断片サイズは、変数としてソフトウェアアプリケーション（たとえばＳＳＤオプティマイザ）によって維持されてもよく、または装置に物理的に組込まれていてもよい。たとえば、しきい値断片サイズは、ＳＳＤ（１００）に、ＳＳＤオプティマイザが装置として実装されている場合はＳＳＤオプティマイザ（１２５）に、ＳＳＤオプティマイザがシステム上で実行されるソフトウェアアプリケーションとして実装されている場合はＳＳＤオプティマイザ（１２５）を実行するシステムに、または別の適切な装置に物理的に組込まれていてもよい。しきい値断片サイズ（１２０）も、ユーザが制御することができる設定エリアから取得されてもよい（１２０）。
【００３３】
ある実施例において、しきい値断片サイズ（１２０）は、ＳＳＤオプティマイザ（１２５）、メモリコントローラ（１１０）、ユーザ、または別の適切なエンティティによって演算される。ある実施例において、しきい値断片サイズ（１２０）は、シーケンシャル書込速度またはＳＳＤ（１００）が時間当たり行なうことができる書込オペレーションの数に基づいて演算されてもよい。しきい値断片サイズを演算するステップのうち１つは、シーケンシャル書込速度を所与の時間内にＳＳＤが行なうことのできる書込オペレーションの数で除算することを伴ってもよい。たとえば、シーケンシャル書込速度が４０ＭＢ／秒であり、ＳＳＤ（１００）が行なうことのできる書込オペレーションの数が１０／秒である場合、しきい値断片サイズは、４０を１０で除算することによって４ＭＢに等しいと演算される。したがって、しきい値断片サイズは、４ＭＢと設定されてもよい。さらに、しきい値断片サイズの演算は、追加の計算（たとえば定数３または４での乗算の結果１２ＭＢまたは１６ＭＢとなる）も伴って、実際の性能と理論上の性能または速度との間の違いを考慮してもよい。
【００３４】
ＳＳＤについてのしきい値断片サイズ（１２０）は、動的に決定されてもよく、またはＳＳＤオプティマイザ（１２５）によって用いられる静的な値であってもよい。たとえば、物理的に組込まれたしきい値断片サイズ（１２０）は、ＳＳＤ（１００）を最適化するために永久的に用いられてもよい。これに代えて、ＳＳＤ（１００）が最適化されるたびにまたは周期的に、しきい値断片サイズ（１２０）は、再演算されるまたは取得されてもよい。
【００３５】
ある実施例において、異なるしきい値断片サイズが用いられて、最適性能を決定してもよい。たとえば、ＳＳＤ（１００）にある空き領域断片を除去することによってＳＳＤ（１００）を最適化するために、しきい値断片サイズのさまざまな値が用いられてもよい。その後、性能は、ＳＳＤ（１００）の最適化後のある時間について測定されてもよい。最適化後の最高性能をもたらすしきい値断片サイズは、しきい値断片サイズ（１２０）として設定されてもよい。
【００３６】
１つの実施例において、一旦しきい値断片サイズ（１２０）が設定されると、しきい値断片サイズ（１２０）の再テストが、周期的に行なわれてもよい。再テスト中、しきい値断片サイズ（１２０）よりも高い値およびしきい値断片サイズよりも低い値が、ＳＳＤ（１００）の最適化のために一時的に用いられてもよい。より高いおよび／またはより低いしきい値断片サイズを用いた後、ＳＳＤ（１００）の後続の性能が評価されて、しきい値断片サイズ（１２０）が増大されるべきか、減少されるべきか、または修正なしに保持されるべきかを決定してもよい。
【００３７】
（ソリッドステートドライブの最適化）
図２には、１つ以上の実施例に従った、しきい値断片サイズを用いてソリッドステートドライブ（ＳＳＤ）を最適化するためのフローチャートが示されている。以下に説明されるステップのうち１つ以上は、省略して、繰返して、および／または異なる順序で行なわれてもよい。したがって、図２に示されるステップの特定の配置は、この発明の範囲を限定するものであると解釈されるべきでない。
【００３８】
ある実施例において、リソース利用可能性チェックは、以下に説明される、ソリッドステートドライブを最適化するステップのうち１つ以上に先行してもよい。リソース利用可能性チェックを行って、ステップを行なうのに必要なリソースが、上述のようにアイドル基準を満たすために利用可能であることを確実にしてもよい。さらに、以下に説明されるステップのうち１つ以上を、コンピュータマイクロジョブとしてスケジュールしてもよい。
【００３９】
まず、ＳＳＤを最適化するかどうかについて決定する（ステップ２０２）。ＳＳＤを最適化する決定は、１つ以上の条件に基づいていてもよい。たとえばＳＳＤを最適化する決定は、低ＳＳＤ性能の発生、予め定められたレベルの断片化の発生（たとえば多数の空き領域断片、しきい値断片サイズよりも小さな空き領域断片の数など）、リソース利用可能性、時間ベースのスケジューラ（たとえば周期的最適化）、ファイル断片化レベル、または任意の他の適切な基準に基づいていてもよい。ＳＳＤオプティマイザは、ファイルが断片化されすぎた場合、ファイルをデフラグもしてもよく、これによりファイルアクセスがより効率的かつ信頼性のあるものになる。
【００４０】
次にＳＳＤを検索して、空き領域断片を除去候補として識別する（ステップ２０４）。空き領域を検索するステップは、ファイルシステムまたはオペレーティングシステムＡＰＩを検索するステップ、または、ファイルシステムによって参照されていないもしくは割当てに利用可能な記憶ブロック場所として索引付けられた記憶アドレスを検索するステップを伴ってもよい。ファイルシステムを、順番に、記憶割当て解除の順に、または任意の他の適切な順に検索してもよい。ある実施例において、最も小さな空き領域断片が最初に除去されるように、空き領域断片を最小のものから最大のものへの順に除去候補として識別してもよい。
【００４１】
次に、除去候補として識別された空き領域断片がしきい値断片サイズよりも小さいかどうかを決定する（ステップ２０６）。識別された空き領域断片がしきい値断片サイズよりも小さくない場合、識別された空き領域断片は、ファイルを書込むのに適しており、したがって、識別された空き領域断片は、書込のために保持される。しかしながら、空き領域断片がしきい値断片サイズよりも小さい場合、識別された空き領域断片は、データ記憶に不適切であり、したがって、上述のように除去される（ステップ２０８）。識別された空き領域断片を、マージされた空き領域断片を作成するために空き領域断片を１つ以上の隣接する空き領域断片とマージするステップによっても除去してもよく、マージされた空き領域断片は、少なくともしきい値断片サイズと同じ大きさである。
【００４２】
次に、ＳＳＤの最適化を続けるかどうかを決定する（ステップ２１０）。すべてのＳＳＤがしきい値断片サイズよりも小さい空き領域断片について検索されるまで最適化を続けるように決定してもよい。別の例において、ＳＳＤを、リソースが高度に利用可能である限り（たとえば、オフピーク時の間）最適化してもよい。ＳＳＤを、一定の時間がＳＳＤの最適化に充てられているタイマに基づいても最適化してもよい。
【００４３】
上記のステップは、しきい値断片サイズよりも小さい各空き領域断片を除去するための順番で説明されたが、この発明の実施例は、上述のタスクを行なう任意の適切な態様を含む。たとえば、すべての空き領域断片をまず除去候補として識別してもよい。その後、識別した空き領域断片の各々を、しきい値断片と比較し、しきい値断片サイズよりも小さい場合、除去してもよい。
【００４４】
（ハードウェア概要）
図３は、こコンピュータシステム３００を説明するブロック図であり、このシステム上でこの発明のある実施例が実装されてもよい。コンピュータシステム３００は、情報を通信するためのバス３０２または他の通信機構と、バス３０２と結合されて情報を処理するためのプロセッサ３０４とを含む。コンピュータシステム３００は、バス３０２に結合され情報およびプロセッサ３０４によって実行されるべき命令を記憶するための、ランダムアクセスメモリ（ＲＡＭ）または他の動的な記憶装置などのメインメモリ３０６も含む。メインメモリ３０６は、プロセッサ３０４によって実行されるべき命令の実行中に一時的変数または他の中間情報を記憶するためにも用いられてもよい。コンピュータシステム３００は、さらに、バス３０２に結合され静的な情報およびプロセッサ３０４に対する命令を記憶するための読出専用メモリ（ＲＯＭ）３０８または他の静的な記憶装置を含む。磁気ディスクまたは光ディスクなどの記憶装置３１０は、情報および命令を記憶するために設けられ、バス３０２と結合されている。
【００４５】
コンピュータシステム３００は、情報をコンピュータユーザに表示するために、バス３０２を介してブラウン管（ＣＲＴ）などの表示部３１２に結合されていてもよい。英数字および他のキーを含めて、入力装置３１４は、情報およびコマンド選択をプロセッサ３０４に通信するためにバス３０２に結合されている。別の種類のユーザ入力装置は、方向情報およびコマンド選択をプロセッサ３０４に通信するためおよび表示部３１２上のカーソル移動を制御するための、マウス、トラックボール、またはカーソル方向キーなどのカーソル制御部３１６である。この入力装置は、典型的に、第１の軸（たとえばｘ）と第２の軸（たとえばｙ）との２つの軸における２つの自由度を有し、これは、装置が平面で位置を指定することを可能にする。
【００４６】
この発明は、この明細書中に説明された手法を実装するためのコンピュータシステム３００の使用に関する。この発明の１つの実施例に従って、そういった手法は、コンピュータシステム３００によってメインメモリ３０６に含まれる１つ以上の命令の１つ以上のシーケンスを実行するプロセッサ３０４に応答して行なわれる。そのような命令は、記憶装置３１０などの別の機械読取可能な媒体からメインメモリ３０６に読込まれてもよい。メインメモリ３０６に含まれる命令のシーケンスの実行は、プロセッサ３０４にこの明細書中に説明された処理ステップを行なわせる。代替的な実施例において、物理的に組込まれている回路構成をソフトウェア命令に代えてまたはソフトウェア命令と組合せて用いて、この発明を実現化してもよい。よって、この発明の実施例は、ハードウェア回路構成およびソフトウェアのどのような特定の組合せにも限定されない。
【００４７】
この明細書中で用いられる用語「機械読取可能な媒体」は、機械を特定の様態で動作させるデータを提供することに関与する任意の媒体を指す。コンピュータシステム３００を用いて実装されるある実施例において、さまざまな機械読取可能な媒体がたとえば、実行のためにプロセッサ３０４に命令を与えることに関与する。そのような媒体は、記憶媒体および伝送媒体を含めて多くの形態を取ることがあるが、これに限定されない。記憶媒体には、不揮発性媒体と揮発性媒体との両方が含まれる。不揮発性媒体には、たとえば、記憶装置３１０のような光ディスクまたは磁気ディスクが含まれる。揮発性媒体には、メインメモリ３０６のような動的メモリが含まれる。伝送媒体には、バス３０２を含むワイヤを含めて、同軸ケーブル、銅線および光ファイバが含まれる。伝送媒体は、電波および赤外線データ通信中に生じるものなど音波または光波の形態も取り得る。そのような媒体はすべて、この媒体によって担持される命令が命令を機械に読込む物理メカニズムによって検出されることを可能にするように、有形なものでなくてはならない。
【００４８】
機械読取可能な媒体の一般的な形態には、たとえば、フロッピー（登録商標）ディスク、フレキシブルディスク、ハードディスク、磁気テープ、もしくは任意の他の磁気媒体、ＣＤ−ＲＯＭ、任意の他の光学媒体、パンチカード、紙テープ、穴のパターンを備えた任意の他の物理媒体、ＲＡＭ、ＰＲＯＭ、およびＥＰＲＯＭ、フラッシュＥＰＲＯＭ、任意の他のメモリチップもしくはカートリッジ、以下に説明されるような搬送波、またはそこからコンピュータが読込むことができる任意の他の媒体が含まれる。
【００４９】
さまざまな形態の機械読取可能な媒体が１つ以上の命令の１つ以上のシーケンスを実行のためにプロセッサ３０４に搬送することに関与してもよい。たとえば、命令は、初めリモートコンピュータの磁気ディスクで担持されてもよい。リモートコンピュータは、その動的メモリに命令をロードし、命令をモデムを用いて電話線で送信することができる。コンピュータシステム３００にローカルなモデムは、電話線上のデータを受信し、赤外線送信機を用いてデータを赤外線信号に変換することができる。赤外線検出器は、赤外線信号で搬送されたデータを受信することができ、適切な回路構成は、データをバス３０２に乗せることができる。バス３０２は、データをメインメモリ３０６に搬送し、そこからプロセッサ３０４は、命令を取得して実行する。メインメモリ３０６によって受取られた命令は、任意選択的に、プロセッサ３０４による実行前か実行後かのいずれかに記憶装置３１０に記憶されてもよい。
【００５０】
コンピュータシステム３００は、バス３０２に結合された通信インターフェイス３１８も含む。通信インターフェイス３１８は、ローカルネットワーク３２２に接続されたネットワークリンク３２０に双方向データ通信結合を提供する。たとえば、通信インターフェイス３１８は、統合サービスデジタル網（ＩＳＤＮ）カードまたはモデムであって、データ通信接続を対応する種類の電話線に提供してもよい。別の例として、通信インターフェイス３１８は、ローカルエリアネットワーク（ＬＡＮ）カードであって、データ通信接続を互換性のあるＬＡＮに提供してもよい。無線リンクも実装されてもよい。そのような実装例のいずれにおいても、通信インターフェイス３１８は、さまざまな種類の情報を表わすデジタルデータストリームを搬送する電気、電磁または光学信号を送受信する。
【００５１】
ネットワークリンク３２０は、典型的に、データ通信を１つ以上のネットワークを通して他のデータ装置に提供する。たとえば、ネットワークリンク３２０は、ローカルネットワーク３２２を通してホストコンピュータ３２４とのまたはインターネットサービスプロバイダ（ＩＳＰ）３２６によって操作されるデータ機器との接続を提供してもよい。次にＩＳＰ３２６は、現在一般的に「インターネット」３２８と称される広域パケットデータ通信網を通じてデータ通信サービスを提供する。ローカルネットワーク３２２とインターネット３２８とは両方ともデジタルデータストリームを搬送する電気、電磁または光学信号を用いる。コンピュータシステム３００との間でデジタルデータを搬送し合う、さまざまなネットワークを通した信号ならびにネットワークリンク３２０上および通信インターフェイス３１８を通した信号は、情報を移送する搬送波の例示的な形態である。
【００５２】
コンピュータシステム３００は、ネットワーク、ネットワークリンク３２０および通信インターフェイス３１８を通してメッセージを送信し、プログラムコードを含めてデータを受信することができる。インターネットの例において、サーバ３３０は、アプリケーションプログラムについての要求コードをインターネット３２８、ＩＳＰ３２６、ローカルネットワーク３２２、および通信インターフェイス３１８を通して送信するかもしれない。
【００５３】
受信されたコードは、その受信時にプロセッサ３０４によって実行されてもよく、および／または後で実行するために記憶装置３１０または他の不揮発性記憶装置に記憶されてもよい。このようにして、コンピュータシステム３００は、アプリケーションコードを搬送波の形態で取得してもよい。
【００５４】
（拡張および代替）
前述の明細書において、この発明の実施例は、実装例ごとに変化することがある多数の特定的な詳細を参照して説明された。よって、発明であるものおよび出願人によって発明であると意図されるものを唯一および独占的に示すものは、この出願から生じるある請求項のセットであり、如何なる後の訂正も含めて、そのような請求項が発行される特定の形態におけるものである。そのような請求項に含まれる用語についてこの明細書中において明示的に記載されるいずれの定義も、請求項において用いられるようにそのような用語の意味を決定するものとする。したがって、請求項において明示的に記載されていない限定、要素、性質、特徴、利点または属性は、そのような請求項の範囲を如何なるようにも限定するものではない。したがって、明細書および図面は、限定的ではなく例示的に認識されるべきである。
【図１】
2010541107.tif 000003
【図２】
2010541107.tif 000004
【図３】
2010541107.tif 000005
【手続補正書】
【提出日】平成22年6月3日(2010.6.3)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
しきい値断片サイズを取得するステップを備え、前記しきい値断片サイズは、ソリッドステートドライブ（ＳＳＤ）のシーケンシャル書込速度または前記ＳＳＤの１秒当りの入出力（Ｉ／Ｏ）のうち少なくとも１つ以上に基づいて演算され、さらに
前記ＳＳＤ上の空き領域断片がしきい値断片サイズよりも小さいかどうかを決定するステップと、
前記ＳＳＤ上の前記空き領域断片が前記しきい値断片サイズよりも小さい場合、前記空き領域断片を除去するステップと、
前記ＳＳＤ上の前記空き領域断片が前記しきい値断片サイズよりも小さくない場合、データを記憶するために前記空き領域断片を保持するステップとを備える、方法。
【請求項２】
前記しきい値断片サイズは、少なくとも前記ＳＳＤのシーケンシャル書込速度に基づいて演算される、請求項１に記載の方法。
【請求項３】
前記しきい値断片サイズは、前記ＳＳＤの前記シーケンシャル書込速度を前記ＳＳＤの前記１秒当りのＩ／Ｏで除算するステップを含む１つ以上のステップを用いて演算される、請求項１に記載の方法。
【請求項４】
前記空き領域断片を除去するステップは、
前記空き領域断片を除去するのに必要な１つ以上のリソースの利用がアイドル基準にいつ準拠するかを決定するステップと、
前記アイドル基準に準拠している前記１つ以上のリソースの前記利用に応答して、前記空き領域断片を除去するステップとを含む、請求項１に記載の方法。
【請求項５】
前記空き領域断片を除去するステップは、前記空き領域断片をファイルの少なくとも一部で埋めるステップを含む、請求項１に記載の方法。
【請求項６】
前記ファイルは、
仮フィラーファイルと、
ほとんど使用されないファイルとのうち１つ以上である、請求項５に記載の方法。
【請求項７】
前記しきい値断片サイズは、少なくとも前記ＳＳＤの前記１秒当りのＩ／Ｏに基づいて演算される、請求項１に記載の方法。
【請求項８】
前記しきい値断片サイズは、
ユーザから前記しきい値断片サイズを受取るステップ、
前記ＳＳＤ内部に物理的に組込まれた要素から前記しきい値断片サイズを得るステップ、または
前記しきい値断片サイズに対してさまざまな値をテストし、最適な性能が得られる前記しきい値断片サイズを選択することによって、前記しきい値断片サイズを決定するステップによって得られる、請求項１に記載の方法。
【請求項９】
ソリッドステートドライブ（ＳＳＤ）オプティマイザであって、
請求項１〜８のいずれかに記載の方法を実行するための手段を備える、ＳＳＤオプティマイザ。
【請求項１０】
１つ以上のプロセッサによって実行されると前記プロセッサに請求項１から８のいずれかに記載された方法を実行させる命令の１つ以上のシーケンスを備える、コンピュータ読取可能記憶媒体。
【請求項１１】
プロセッサを備え、請求項１から８のいずれかに記載の方法を実行するように構成された装置。
【国際調査報告】
2010541107.tif 000006
2010541107.tif 000007