(57)【要約】  データを記憶する方法は、読み出しのための推測的読み出しモードの定義を記憶デバイス内で保持することであって、記憶デバイスはデータ単位サイズを有するデータ単位を読み取るよう要求され、それに応じて記憶デバイスは、そのデータ単位を含み、かつそのデータ単位サイズよりも大きい記憶ページサイズを有する記憶ページを取得し、その記憶ページを後続の要求に備えて保持する、ことを含む。推測的読み出しモードのアクティブ化は調整される。推測的読み出しモードを使用して、読み出しコマンドが実行される。
2017503266.tif 000002
【特許請求の範囲】
【請求項１】
データを記憶する方法であって、
読み出しのための推測的読み出しモードの定義を記憶デバイス内で保持することであって、前記記憶デバイスはデータ単位サイズを有するデータ単位を読み取るよう要求され、それに応じて前記記憶デバイスは、前記データ単位を含み、かつ前記データ単位サイズよりも大きい記憶ページサイズを有する記憶ページを取得し、前記記憶ページを後続の要求に備えて保持する、ことと、
前記推測的読み出しモードのアクティブ化を調整することと、
前記推測的読み出しモードを使用して読み出しコマンドを実行することと、
を含む、方法。
【請求項２】
前記アクティブ化を調整することは、単一のデータ単位を読み取るためのコマンドを前記記憶デバイス内で受信することを含み、前記読み出しコマンドを実行することは、前記保持された記憶ページから前記単一のデータ単位を読み取ることを含む、請求項１に記載の方法。
【請求項３】
前記読み出しコマンドを実行することは、前記保持された記憶ページ内に前記単一のデータ単位が存在しないことを検出すると、エラーイベントを報告することを含む、請求項２に記載の方法。
【請求項４】
前記読み出しコマンドを実行することは、前記保持された記憶ページ内の全ての前記データ単位が要求された後に、前記保持された記憶ページを破棄することを更に含む、請求項２に記載の方法。
【請求項５】
前記読み出しコマンドを実行することは、前記保持された記憶ページ内の所与のデータ単位を読み取るための要求を前記記憶デバイス内で受信することと、前記保持された記憶ページから前記所与のデータ単位及び全ての連続する前記データ単位を返すことと、を含む、請求項１に記載の方法。
【請求項６】
前記アクティブ化を調整することは、前記記憶デバイスから前記記憶ページサイズを報告することを含む、請求項１に記載の方法。
【請求項７】
サイズが前記記憶ページサイズと等しいデータを記憶するための書き込みコマンドを前記記憶デバイス内で受信することと、前記記憶デバイスのページ境界に合わせて前記データを記憶することと、を更に含む、請求項１に記載の方法。
【請求項８】
記憶デバイスであって、
不揮発性メモリと、
プロセッサであって、前記プロセッサは推測的読み出しモードの定義を保持するように構成され、前記記憶デバイスは、データ単位サイズを有するデータ単位を読み取るよう要求され、それに応じて前記記憶デバイスは、前記データ単位を含み、かつ前記データ単位サイズよりも大きい記憶ページサイズを有する記憶ページを前記不揮発性メモリから取得し、前記記憶ページを後続の要求に備えて保持し、かつ前記プロセッサは、前記推測的読み出しモードのアクティブ化を調整し、前記推測的読み出しモードを使用して読み出しコマンドを実行するように構成される、プロセッサと、
を備える、記憶デバイス。
【請求項９】
前記プロセッサは、単一のデータ単位を読み取るためのコマンドを受信し、前記保持された記憶ページから前記単一のデータ単位を読み取ることによって前記読み出しコマンドを実行するように構成される、請求項８に記載の記憶デバイス。
【請求項１０】
前記プロセッサは、前記保持された記憶ページ内に前記単一のデータ単位が存在しないことを検出すると、エラーイベントを報告するように構成される、請求項９に記載の記憶デバイス。
【請求項１１】
前記プロセッサは、前記保持された記憶ページ内の全ての前記データ単位が要求された後に、前記保持された記憶ページを破棄するように更に構成される、請求項９に記載の記憶デバイス。
【請求項１２】
前記プロセッサは、前記保持された記憶ページ内の所与のデータ単位を読み取るための要求を受信し、前記所与のデータ単位及び全ての連続するデータ単位を前記保持された記憶ページから返すように構成される、請求項８に記載の記憶デバイス。
【請求項１３】
前記プロセッサは、前記記憶ページサイズを報告するように構成される、請求項８に記載の記憶デバイス。
【請求項１４】
前記プロセッサは、サイズが前記記憶ページサイズと等しいデータを記憶するための書き込みコマンドを受信し、前記記憶デバイスのページ境界に合わせて前記データを記憶するように構成される、請求項８に記載の記憶デバイス。
【請求項１５】
装置であって、
オペレーティングシステムを実行するように構成されたホストと、
記憶デバイスと、
前記記憶デバイスに発行される複数の読み取りコマンドが、前記オペレーティングシステムによって実行されるアプリケーションの起動に関連付けられていることを示す暗示を前記オペレーティングシステムから受信し、前記暗示に応じて前記複数の前記読み取りコマンドを一括で処理するように構成されるプロセッサと、
を備える、装置。
【請求項１６】
前記プロセッサは、推測的プリフェッチを使用して前記複数の前記読み取りコマンドを実行するように構成される、請求項１５に記載の装置。
【請求項１７】
前記プロセッサは、前記複数の前記読み取りコマンドによって読み取られたデータを、前記記憶デバイス内の物理アドレスの連続する範囲内に再配置するように構成される、請求項１６に記載の装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、全般的に、データ記憶に関し、特に、不揮発性メモリ内に記憶されたデータをプリフェッチするための方法及びシステムに関する。
【背景技術】
【０００２】
いくつかのコンピューティングシステムは、高速であるが小容量の揮発性メモリ及び大容量であるがより低速な不揮発性メモリを使用する、仮想メモリ（Virtual Memory、ＶＭ）技術を利用する。例えば、いくつかのモバイルコンピューティング及び通信デバイスでは、デバイスのオペレーティングシステム（Operating System、ＯＳ）は、デバイスのランダムアクセスメモリ（Random Access Memory、ＲＡＭ）をソリッドステートドライブ（Solid State Drive、ＳＳＤ）と連携して動作させるＶＭモジュールを含む。
【０００３】
当該技術分野では、ＶＭを使用するための様々な方法が知られている。例えば、その開示が参照により本明細書に組み込まれる、米国特許第８，４２９，３７７号は、メモリにアクセスするためのシステム及び方法を説明している。このシステムは、仮想アドレス上のメモリページに対する要求を発行するプロセッサデバイス、及び１つ以上のページテーブルエントリを記憶するためのルックアップバッファを含み、ページテーブルエントリのそれぞれは、少なくとも仮想ページ番号及び物理ページ番号を含む。このシステムは、同じページテーブルエントリ内の物理ページ番号を選択するために、前記プロセッサから仮想アドレスを受信し、その仮想アドレスをページテーブルエントリのうちの１つの仮想ページ番号と照合する、論理回路を更に含む。ページテーブルエントリは、ページからメモリ範囲を除外するための１つ以上のビットセットを含む。
【０００４】
参照により本明細書に組み込まれる、２０１０年４月にドイツのパッサウで開催された第９回ＩＦＩＰ  ＷＧ  ８．８／１１．２の国際会議であるＣＡＲＤＩＳ２０１０の議事録「Ｓｍａｒｔ  Ｃａｒｄ  Ｒｅｓｅａｒｃｈ  ａｎｄ  Ａｄｖａｎｃｅｄ  Ａｐｐｌｉｃａｔｉｏｎ」の１０２〜１１７ページに記載されている、Ｇｅｏｆｆｒｏｙらによる「Ｋｅｙ−Ｓｔｕｄｙ  ｔｏ  Ｅｘｅｃｕｔｅ  Ｃｏｄｅ  Ｕｓｉｎｇ  Ｄｅｍａｎｄ  Ｐａｇｉｎｇ  ａｎｄ  ＮＡＮＤ  Ｆｌａｓｈ  ａｔ  Ｓｍａｒｔ  Ｃａｒｄ  Ｓｃａｌｅ」は、スマートカード又はセンサほどの大きさしかないシステム内に複数のアプリケーションを埋め込むことに伴う制限を説明している。非常に小さいメインメモリなどのこれらのシステムの物理的な制限、及びこれらのシステムの生産コストが、この埋め込みの実現を難しくしている。この研究で提示された１つの解決策は、より安価かつ高密度であるが、より低速なＮＡＮＤフラッシュなどの二次メモリからコードを実行することである。
【発明の概要】
【０００５】
本発明の一実施形態は、読み出しのための推測的読み出しモードの定義を記憶デバイス内で保持することであって、記憶デバイスはデータ単位サイズを有するデータ単位を読み取るよう要求され、それに応じて記憶デバイスは、そのデータ単位を含み、かつそのデータ単位サイズよりも大きい記憶ページサイズを有する記憶ページを取得し、その記憶ページを後続の要求に備えて保持する、ことを含む方法を提供する。推測的読み出しモードのアクティブ化は調整される。推測的読み出しモードを使用して、読み出しコマンドが実行される。
【０００６】
いくつかの実施形態では、アクティブ化を調整することは、単一のデータ単位を読み取るためのコマンドを記憶デバイス内で受信することを含み、読み出しコマンドを実行することは、保持された記憶ページから単一のデータ単位を読み取ることを含む。他の実施形態では、読み出しコマンドを実行することは、保持された記憶ページ内に単一のデータ単位が存在しないことを検出すると、エラーイベントを報告することを含む。更に他の実施形態では、読み出しコマンドを実行することは、保持された記憶ページ内の全てのデータ単位が要求された後に、保持された記憶ページを破棄することを更に含む。
【０００７】
一実施形態では、読み出しコマンドを実行することは、保持された記憶ページ内の所与のデータ単位を読み取るための要求を記憶デバイス内で受信することと、保持された記憶ページから所与のデータ単位及び全ての連続するデータ単位を返すことと、を含む。別の実施形態では、アクティブ化を調整することは、記憶デバイスから記憶ページサイズを報告することを含む。更に別の実施形態では、方法は、サイズが記憶ページサイズと等しいデータを記憶するための書き込みコマンドを記憶デバイス内で受信することと、記憶デバイスのページ境界に合わせてデータを記憶することと、を更に含む。
【０００８】
更に、不揮発性メモリ及びプロセッサを備える記憶デバイスが提供される。このプロセッサは、推測的読み出しモードの定義を保持するように構成され、記憶デバイスは、データ単位サイズを有するデータ単位を読み取るよう要求され、それに応じて記憶デバイスは、そのデータ単位を含み、かつそのデータ単位サイズよりも大きい記憶ページサイズを有する記憶ページを不揮発性メモリから取得し、その記憶ページを後続の要求に備えて保持し、かつこのプロセッサは、推測的読み出しモードのアクティブ化を調整し、推測的読み出しモードを使用して読み出しコマンドを実行するように構成される。
【０００９】
本発明は、下記の図面と併せて解釈される、以下の本発明の実施形態の詳細な説明からより完全に理解されよう。
【図面の簡単な説明】
【００１０】
【図１】本発明の一実施形態に係るストレージシステムを模式的に示すブロック図である。
【図２】推測的プリフェッチの一部としてデータをキャッシュすること及び読み取ることを模式的に示す図である。
【図３】推測的プリフェッチの一部としてデータをキャッシュすること及び読み取ることを模式的に示す図である。
【図４】推測的プリフェッチの一部としてデータをキャッシュすること及び読み取ることを模式的に示す図である。
【図５】本発明の一実施形態に係る、ページ境界に合わせてデータを記憶することによる推測的データプリフェッチのための方法を模式的に示すフローチャートである。
【図６】本発明の一実施形態に係る、アプリケーションの起動時間を短縮するための方法を模式的に示すフローチャートである。
【発明を実施するための形態】
【００１１】
概説
本明細書で説明される本発明の実施形態は、仮想メモリ（ＶＭ）動作のための改善された方法及びシステムを提供する。多くのストレージシステムでは、オペレーティングシステム（ＯＳ）が所与のプロセスに対して割り当てる、ホストの揮発性メモリ内の空間（本明細書で「ローカルメモリ」と呼ばれる）は、そのプロセスのコード及びデータ全体を含むのに不十分である。このシナリオは、例えば、ローカルメモリの記憶空間の合計がプロセスに必要な空間よりも小さいとき、又はＯＳが複数のプロセスを同時に実行するときに発生し得る。
【００１２】
いくつかの実施形態では、ＯＳは、ローカルメモリ内で実行されるプロセスのためのメモリを管理する、仮想メモリ（ＶＭ）サブシステムを含む。本明細書で説明される実施形態では、ＶＭは、ローカルメモリ、及びフラッシュベースのソリッドステートドライブ（Solid State Drive、ＳＳＤ）などの大容量の不揮発性メモリを管理する。ＶＭは、プロセスが、ＯＳによってそのプロセスのために割り当てられた空間よりも大きいメモリ空間を使用することを可能にする。場合によっては、プロセスは、現在ローカルで使用できないデータへのアクセスを試行し得る。そのようなイベントは、ページフォールトイベントと呼ばれる。ＶＭは、典型的には、該当するデータをＳＳＤからフェッチすることによってページフォールトに対応する。
【００１３】
ＶＭは、本明細書でデータチャンク又はデータ単位と呼ばれる単位で、ＳＳＤ内のデータにアクセスする。ページフォールトを検出する（又はその通知を受信する）と、ＶＭは、欠落データが属するデータチャンク（欠落チャンクとも呼ばれる）を要求することによって、対応する欠落データをＳＳＤからフェッチする。いくつかの実施形態では、欠落データへのアクセス速度を改善するために、ＶＭは、欠落チャンクに加えて１つ以上の連続するデータチャンクをフェッチするように構成されてもよい。この動作モードは推測的プリフェッチと呼ばれる。ただし、ＳＳＤベースのストレージシステム内での推測的プリフェッチは、以下で更に説明されるように、問題となり得る。
【００１４】
典型的には、ＯＳは、ファイル及びディレクトリなどの論理構造内へのデータ（例えば、ユーザデータ又は他のデータ）の記憶を管理する、ファイルシステム（File System、ＦＳ）サブシステムを更に含む。ＦＳはファイルをＳＳＤ内に記憶する。コンピュータプログラムは、１つ以上のファイルを実行するか又はさもなければ使用し得る。例えば、アプリケーションプログラムは、実行可能ファイル及びマルチメディアファイルなどの大量の小さいファイルにアクセスし得る。アプリケーションの実行時、ＦＳは最初に、対応するアプリケーションファイルをＳＳＤからローカルメモリにアップロードし、ホストがその後、ローカルメモリからアプリケーションを実行する。アプリケーションのファイルをアップロードするプロセスは、アプリケーション起動と呼ばれる。アプリケーションファイルは実行前にアップロードされるべきであるため、より短いアプリケーション起動時間が、より良いユーザエクスペリエンスをもたらす。
【００１５】
ホスト内では、ＯＳのＶＭ及びＦＳサブシステムは、典型的には、論理アドレスの連続する空間内でメモリを管理する。ＳＳＤは、典型的には、フラッシュメモリの物理アドレス内でストレージを管理するＳＳＤコントローラを含む。論理アドレスは、フラッシュメモリ内の、データチャンクの対応する物理アドレスに対応する。ＳＳＤコントローラは、典型的には、論理アドレスと物理アドレスとの間の変換テーブルを維持する。
【００１６】
ＳＳＤコントローラは、記憶ページ、又は簡略化のために単純にページと呼ばれる単位で、ＳＳＤ内にデータを記憶する。いくつかの場合、ＶＭ（又はＦＳ）は、ＳＳＤのページサイズよりも小さいデータチャンクをフェッチするように構成される。すなわち、ＳＳＤ内のページは、典型的には、ＶＭがその中から一度に１つずつ要求し得る、複数のデータチャンクを含む。以下で説明されるように、この記憶ページとデータチャンクとの間のサイズの不一致は、推測的プリフェッチの潜在的な利点を排除し得る。
【００１７】
いくつかの実施形態では、ＯＳは、本明細書でチャンク又はセグメントと呼ばれる単位でデータを読み取る。チャンクサイズは、例えば、５１２バイト又は４キロバイト（Kilobyte、ＫＢ）であってもよい。一方、ＳＳＤ内のデータは、フラッシュメモリから、典型的にはサイズがチャンクサイズよりも大きい記憶ページ内に書き込まれ、取得される。例示的なページサイズは、８ＫＢ、１６ＫＢ、及び３２ＫＢを含む。
【００１８】
一実施形態では、ページフォールトイベントに応じて、ＶＭは対応する欠落チャンク（すなわち、ページフォールトを発生させた欠落データが属するチャンク）をＳＳＤから要求する。原則として、ＶＭは、欠落チャンクに加えて１つ以上の連続するチャンクを要求することによって、推測的プリフェッチを実行し得る。しかしながら、ＳＳＤは、ＶＭが同じページ内の複数のチャンクを要求したときでも、各チャンク要求に対してページ全体を取得するため、このプリフェッチ動作は、欠落データにアクセスする速度を改善しない場合がある。更に、そのような冗長なページ取得動作は電力消費を増加させる原因となり、その結果、システムのバッテリ寿命が短くなる。
【００１９】
開示される技術では、ＶＭが欠落チャンクを要求したときに、このチャンクを含むページが取得され、ＳＳＤ内にキャッシュされる。その後ＶＭが、既にキャッシュされている１つ以上のチャンクを（例えば、推測的プリフェッチの実行時に）要求したとき、これらのチャンクは、対応するページのＳＳＤからの不要な再読み取りを発生させることなく、キャッシュされたページから読み取られる。
【００２０】
以下の説明では、ＳＳＤコントローラを備える基になるＳＳＤ記憶装置、及び揮発性キャッシュメモリを前提とする。分かりやすくするために、特に明記しない限り、ＳＳＤの不揮発性メモリは「フラッシュメモリ」と呼ばれる。フラッシュメモリは、任意の好適な数の個々のフラッシュデバイスを含んでもよい。
【００２１】
一実施形態では、ホストのＶＭは、欠落チャンクを取得するための要求をＳＳＤに発行し、更に、推測的プリフェッチ動作をＳＳＤコントローラに通知する。ＳＳＤコントローラは、要求されたチャンクが属するページをフラッシュメモリから取得し、そのページをキャッシュメモリ内にキャッシュする。ＳＳＤコントローラは、要求されたチャンクをホストに伝送し、キャッシュされたページを、ＶＭがキャッシュされたページの全ての他のチャンクを要求するまで保持する。
【００２２】
一実施形態では、ＶＭは、ページ全体をフラッシュメモリから再読み取りすることなく、それぞれのそのようなチャンクをキャッシュされたページから読み取るようＳＳＤコントローラに指示することによって、ＳＳＤ内に既にキャッシュされたページの一部であるチャンクを読み取る。ＶＭがキャッシュされたチャンクを要求したが、要求されたチャンクがキャッシュされたページ内に存在しないとき、ＳＳＤコントローラは、対応するエラー通知をＶＭに返す。ＶＭはその後、対応するページをキャッシュするか又はキャッシュすることなく、そのチャンクを読み取ることができる。キャッシュされたチャンクの読み取りは、そのチャンクのフラッシュメモリからの読み取りよりも高速である。
【００２３】
いくつかの実施形態では、ＶＭは、欠落チャンクを要求し、更にＳＳＤに推測的プリフェッチ動作を通知することによって、推測的プリフェッチを実行する。ＳＳＤは、要求されたチャンクが属するページをフラッシュメモリから取得し、そのページをキャッシュし、要求されたチャンク並びにキャッシュされたページ内の全ての連続するチャンクをホストに返す。
【００２４】
推測的プリフェッチは、原則として、単一のＶＭ要求が、ＳＳＤコントローラにチャンクをページ境界に合わせて取得させたときに、より効率的になり得る。しかしながら、ＶＭは、ページ内の個々のチャンクの位置に関する明確な情報を有さず、それゆえに、ＶＭは、ページ境界に位置合わせされたチャンクを明示的に要求することができない。
【００２５】
一実施形態では、ＳＳＤコントローラは、フラッシュメモリ内で使用されるページサイズをＶＭに報告する。ＶＭはその後、受信したページサイズを有する単位でデータを記憶し、更にＳＳＤコントローラに、それぞれのそのような単位をページ境界に合わせてフラッシュメモリ内に記憶するよう指示する。ＶＭが後から、対応する記憶されたデータを読み取るとき、ＶＭは、上述のように、ページ内の第１のチャンクを要求することによって推測的プリフェッチを実行し、推測的プリフェッチの要求に応じて、ＳＳＤは、第１のチャンクが属するページを読み取ってキャッシュし、そのページ全体をホストに伝送する。
【００２６】
アプリケーションの起動時に、推測的プリフェッチを実行することによって起動時間を短縮することは、例えば、アプリケーションファイルが連続的にフラッシュメモリ内に記憶されるときに有利になり得る。しかしながら、アプリケーションファイルのそれぞれをアップロードするときに、ＦＳは、ファイルがアプリケーションプログラムと共通していることを認識せず、これらのファイルのアップロード時に推測的プリフェッチモードに切り替えるための明示的な通知を有さない。一実施形態では、ＯＳは、アプリケーション起動を開始するときに、ＦＳに通知する。それに応じて、ＦＳはその後、対応するアプリケーションファイルを推測的プリフェッチモードで読み取るように切り替える。
【００２７】
いくつかの実施形態では、ＯＳは、アプリケーション起動を開始及び終了するときに、ＳＳＤコントローラに通知する。それに応じて、ＳＳＤは、起動されたアプリケーションのアップロードされたファイルの論理アドレス及び対応する物理アドレスを監視及び記録する。ＳＳＤコントローラはその後、推測的プリフェッチを使用して、同じアプリケーションの後続の効率的な起動を可能にするために、フラッシュメモリ内の物理アドレスの連続する範囲内に、アプリケーションファイルを連続的に再配置する。
【００２８】
代替の実施形態では、ＯＳは、ＯＳがアプリケーション起動を開始及び終了するたびに、（ＳＳＤではなく）ＦＳに通知する。ＦＳは、アップロードされたアプリケーションファイルの論理アドレスを記録し、専用のデフラグコマンドを使用して、記録されたアドレスをＳＳＤコントローラに送信する。ＳＳＤコントローラはその後、アプリケーションファイルをフラッシュメモリ内に連続的に再配置し、それにしたがってアドレス変換テーブルを更新する。
【００２９】
開示される技術は、ページフォールトイベント検出時に欠落データにアクセスする速度を改善するために推測的プリフェッチを実行すること、及びフラッシュメモリからの不要な読み取り動作を実行することなくアプリケーションの起動時間を短縮することを可能にする。したがって、開示される技術は、読み取りの待ち時間、電力消費、及びシステムのバッテリ寿命を改善する。
【００３０】
システムの説明
図１は、本発明の一実施形態に係るメモリシステムを模式的に示す。本実施例では、メモリシステムは、ソリッドステートドライブ（ＳＳＤ）２４にデータを記憶するコンピュータ２０を備える。コンピュータ２０は、例えば、モバイル、タブレット又はパーソナルコンピュータを含むことができる。コンピュータは、ホストとして働く中央処理装置（ＣＰＵ）２６を備える。以下の説明では、ＣＰＵ及びホストという用語は区別なく使用される。
【００３１】
代替実施形態では、ホストは、任意の他の好適なプロセッサ又はコントローラを備えることができ、記憶デバイスは、任意の他の好適なデバイスを備えることができる。例えば、ホストは、エンタープライズストレージシステムのストレージコントローラを備えることができ、記憶デバイスは、ＳＳＤ又はＳＳＤのアレイを備えることができる。不揮発性記憶デバイスにデータを記憶するホストの他の例は、モバイル電話、デジタルカメラ、メディアプレーヤ、並びに取外し可能なメモリーカード又はデバイスを含む。
【００３２】
一実施形態では、ＣＰＵ２６は、コンピュータ２０の様々なタスクを処理するオペレーティングシステム（ＯＳ）２７を実行する。ＯＳは、ファイルシステム（ＦＳ）２８及び仮想メモリ（ＶＭ）サブシステム２９を更に含む。ＦＳ２８は、ディレクトリ及びファイルなどの論理構造内で、ユーザ（及び他の）データの編成を管理する。ＶＭ２９は、ＦＳが揮発性ホストメモリ３２にアップロードし、かつＯＳが揮発性ホストメモリ３２から実行するプロセスのためのメモリを管理する。メモリ３２はローカルメモリとも呼ばれる。メモリ３２は、例えば、ＤＤＲ、ＤＤＲ２、ＤＤＲ３、ＤＤＲ３Ｌ、ＳＤＲＡＭ、又はＲＤＲＡＭなどの任意の好適な種類の揮発性メモリを含んでもよい。典型的なアプリケーションでは、メモリ３２は１ＧＢ〜３２ＧＢのサイズを有するが、任意の他の好適なサイズが使用されてもよい。
【００３３】
ＳＳＤ２４は、不揮発性メモリに、本実施例では１つ以上のＮＡＮＤフラッシュメモリデバイス３４に、ＣＰＵ２６のためのデータを記憶する。代替実施形態では、ＳＳＤ２４中の不揮発性メモリは、例えば、ＮＯＲフラッシュ、チャージトラップフラッシュ（ＣＴＦ）、相変化ＲＡＭ（ＰＲＡＭ）、磁気抵抗ＲＡＭ（ＭＲＡＭ）又は強誘電体ＲＡＭ（ＦｅＲＡＭ）などの、任意の他の好適なタイプの不揮発性メモリを備えることができる。
【００３４】
ＳＳＤコントローラ３０は、ＳＳＤの種々の記憶タスク及び管理タスクを実行する。ＳＳＤコントローラは、一般に、メモリコントローラとも呼ばれる。ＳＳＤコントローラ３０は、ＣＰＵ２６と通信するためのホストインタフェース３８、フラッシュデバイス３４と通信するためのメモリインタフェース４６、及びＳＳＤの種々の処理タスクを実行するプロセッサ４２を備える。
【００３５】
ＳＳＤ２４は、揮発性メモリを、本実施例ではランダムアクセスメモリ（ＲＡＭ）５０、を更に備える。図１の実施形態では、ＲＡＭ５０は、ＳＳＤコントローラ３０の一部として示されているが、代替的には、ＲＡＭは、ＳＳＤコントローラとは別個であってもよい。ＲＡＭ５０は、例えば、スタティックＲＡＭ（ＳＲＡＭ）、ダイナミックＲＡＭ（ＤＲＡＭ）、２つのＲＡＭタイプの組み合わせ、又は任意の他の好適なタイプの揮発性メモリを備えてもよい。ＲＡＭ５０は、フラッシュデバイス３４から読み取られたデータを、そのデータ又は部分をＣＰＵ２６又はホストメモリ３２に伝送する前にキャッシュするために使用されてもよい。以下で説明されるように、いくつかの実施形態では、ＲＡＭ５０は、その１つ以上のデータチャンクが要求に応じてＣＰＵ２６に伝送されるデータページをキャッシュする。
【００３６】
図１の下側部分は、ＮＡＮＤフラッシュデバイス３４の例示的な詳細ブロック図を示す。本実施例では、デバイス３４は読み取り／書き込み（Ｒ／Ｗ）ユニット７０を備え、このユニットは、メモリデバイス内に記憶されるデータを記憶値に変換し、それらをフラッシュメモリアレイ７６のメモリセル（例えば、アナログメモリセル）内に書き込む。代替の実施形態では、Ｒ／Ｗユニットは変換を実行せず、電圧サンプル、即ち、セル内に記憶する記憶値を供給される。Ｒ／Ｗユニットは、典型的には（必ずしもそうではないが）、当該技術分野で知られるような反復型のプログラム化及び検証（Program and Verify、Ｐ＆Ｖ）プロセスを使用して、メモリセルをプログラムする。アレイ７６からデータを読み出すときには、Ｒ／Ｗユニット７０はメモリセルの記憶値を１ビット以上の分解能を有するデジタルサンプルに変換する。典型的には、データは、データページ又は単純にページと呼ばれる群で、メモリセルに書き込まれ、メモリセルから読み出される。デバイス３４などのフラッシュデバイスは、典型的には８ＫＢ、１６ＫＢ、又は３２ＫＢのページを含む。いくつかの実施形態では、Ｒ／Ｗユニットは、１つ以上の負の消去パルスをセルに印加することによって、メモリアレイ７６内の一群のセル、例えば、複数のページを含むブロックを消去してもよい。
【００３７】
メモリアレイ７６は、２つのプログラミングレベルを使用して１ビット／セルを記憶するシングルレベルセル（Single-Level Cell、ＳＬＣ）メモリアレイ、又は２Ｎ個のプログラミングレベルでＮビット／セルを記憶するマルチレベルセル（Multi-Level Cell、ＭＬＣ）メモリアレイを含んでもよい。例えば、２ビット／セルデバイスは４つのプログラミングレベルを使用し、３ビット／セルデバイスは８つのプログラミングレベルを使用する。
【００３８】
いくつかのメモリデバイスは、しばしばプレーンと呼ばれる、２つ以上の別個のメモリセルアレイを備える。例えば、各プレーンが１６ＫＢのページを備える二プレーンデバイスでは、ＳＳＤコントローラは、複数プレーンアクセスの方法を使用して単一の読み取り動作で３２ＫＢを取得することができる。
【００３９】
ＳＳＤコントローラ３０のプロセッサ４２は、典型的には論理から物理へのアドレス変換を維持し、このアドレス変換は、ホストによって指定された論理アドレスを、フラッシュデバイス３４内の対応する物理記憶位置（物理アドレスとも呼ばれる）に関連付け、データを適切な物理記憶位置に記憶する。論理から物理へのアドレス変換（仮想から物理へのマッピング（Virtual-to-Physical mapping、Ｖ２Ｐ）とも呼ばれる）は、ＲＡＭ５０内、フラッシュデバイス３４内、又はこれらの両方に記憶されてもよい。
【００４０】
論理アドレス及び対応する物理アドレスは、本明細書でデータチャンクと呼ばれるデータ単位にアクセスする。いくつかの実施形態では、データページのサイズはデータチャンクのサイズよりも大きい。例えば、ＶＭはサイズが４ＫＢのデータチャンクで構成され、フラッシュメモリはサイズが１６ＫＢのページで構成されてもよい。典型的には、必須ではないが、データページは整数個のデータチャンクを含む。
【００４１】
ＳＳＤコントローラ３０は、詳細にはプロセッサ４２は、ハードウェアで実装することができる。代替的には、ＳＳＤコントローラは、好適なソフトウェアを実行するマイクロプロセッサ、あるいはハードウェア要素とソフトウェア要素との組み合わせを備えることができる。
【００４２】
図１の構成は例示的な構成であり、概念を明快するためにのみ示される。任意の他の好適なＳＳＤ又は他のメモリシステム構成を使用することもできる。種々のインタフェース、アドレス指定回路、タイミング及びシーケンス回路、並びにデバッギング回路などの、本発明の原理を理解する上で必要ではない要素は、明瞭性のために図から省略されている。いくつかのアプリケーション、例えば、非ＳＳＤアプリケーションでは、ＳＳＤコントローラ３０の機能は、好適なメモリコントローラによって実行される。
【００４３】
図１に示される例示的なシステム構成では、メモリデバイス３４及びＳＳＤコントローラ３０は、別個の集積回路（ＩＣ）として実装される。ただし、代替の実施形態では、メモリ装置及びＳＳＤコントローラは、単一のマルチチップパッケージ（Multi-Chip Package、ＭＣＰ）又はシステムオンチップ（System on Chip、ＳｏＣ）内の別個の半導体ダイに組み込まれるか、内部バスによって相互接続されてもよい。更に代替的には、ＳＳＤコントローラ回路の一部又は全体が、１つ以上のメモリ装置３４が配置された同じダイ上に設けられてもよい。更に代替的には、ＳＳＤコントローラ３０の機能の一部又は全部は、ソフトウェア中に実施することができ、コンピュータ中のＣＰＵ２６又は他のプロセッサにより実行することができる。いくつかの実施形態において、ＣＰＵ２６及びＳＳＤコントローラ３０は、同じダイ上に、又は、同じデバイスパッケージ中の別個のダイ上に作り込むことができる。
【００４４】
いくつかの実施形態では、プロセッサ４２及び／又はＣＰＵ２６は、本明細書で説明される機能を実施するためにソフトウェア内でプログラムされる、汎用プロセッサを備える。ソフトウェアは、例えばネットワーク経由で電子的な形態でプロセッサにダウンロードしてもよく、又は別の方法によって、あるいは追加的に、磁気メモリ、光学的メモリ、若しくは電子メモリなどの非一時的な有形的媒体によって提供及び／又は記憶することができる。
【００４５】
ＳＳＤベースのストレージシステム内でのＶＭのプリフェッチ
以下の説明では、ＶＭ２９が固定サイズのチャンク又はセグメントでフラッシュメモリ３４からデータをフェッチすることを前提とする。いくつかの実施形態では、ＳＳＤコントローラ３０はＯＳ２７に、ホストインタフェース３８を介したデータ転送の最小単位サイズ、すなわち、例えば５１２バイト又は４ＫＢなどのチャンクサイズを通知する。以下の説明では、４ＫＢのチャンクサイズを前提とする。しかしながら、代替的には、任意の他の好適なチャンクサイズも使用されてもよい。
【００４６】
ＯＳ２７によってホストメモリ３２から実行されるソフトウェアプロセス又はアプリケーションが、メモリ３２内でローカルに使用できないデータにアクセスする必要があるとき、ページフォールトイベントが発生する。ページフォールトが発生すると、ＶＭは、欠落データを対応するフラッシュメモリ３４からフェッチするための１つ以上のＩ／Ｏ要求を、ＳＳＤコントローラに発行する。欠落データが属するデータチャンクは欠落チャンクとも呼ばれる。ＶＭは一度に１つのチャンク（すなわち、欠落チャンク）のみをフェッチし得るが、多くの場合、ソフトウェアプロセスの実行が進行するにしたがって、ＶＭは高い確率で、追加の連続するデータチャンクをフェッチすることが必要になる。したがって、典型的には、欠落チャンクだけでなく複数のチャンクの連続する範囲をフェッチすることが、より効率的である。本発明の文脈、及び特許請求の範囲では、「推測的プリフェッチ」という用語は、欠落チャンクと連続する１つ以上の追加のチャンクをフェッチすることを指す。推測的プリフェッチでは、フェッチされるチャンクは、欠落チャンクの前にある１つ以上のチャンクを含んでもよい。
【００４７】
以下で説明されるように、ＶＭ２９を推測的プリフェッチモードで動作するように構成することによって、フラッシュメモリ３４からの冗長な読み取り動作が発生し、結果として待ち時間及び電力消費が増加する場合がある。例えば、フラッシュメモリ３４のそれぞれが１６ＫＢのページを記憶するものと仮定する。ＶＭ２９が単一の４ＫＢのデータチャンクを要求したとき、ＳＳＤコントローラは、このチャンクが属する１６ＫＢのページ全体を読み取り、要求されたチャンクのみをホスト２６に伝送すべきである。後続のＶＭ要求が他のページにアクセスする場合、他の３つの読み取られたチャンク（この実施例では１２ＫＢ）は利用されない。更に、ＶＭ２９が、全て同じページ内に配置された複数の４ＫＢのチャンクを推測的に要求したとき、それぞれの個々のＶＭ要求は、１６ＫＢのページ全体の別個の読み取り動作を発生させ、そのような読み取り動作ごとに、１６ＫＢのページのうちの４ＫＢのみがホスト２６に伝送される。このように、上記の実施例は、帯域幅利用率が２５％（１６ＫＢのうちの４ＫＢ）のみであることを示す。
【００４８】
以下で説明される開示される技術は、ＶＭが帯域幅及び電力消費を無駄にすることなく推測的プリフェッチを実行することを可能にする。開示される技術では、新しいＶＭ動作を定義することによって、ＳＳＤコントローラが、一度データページを読み取ってキャッシュし、そのページのキャッシュされたデータチャンクを要求に応じてホストに送信することができる。
【００４９】
効率的な推測的プリフェッチのための方法
図２〜図４は、推測的プリフェッチの一部としてデータをキャッシュすること及び読み取ることを模式的に示す図である。図２〜図４のそれぞれに示す図は、３つの列を含む。一番左及び一番右の列は、ＶＭ２９及びＳＳＤコントローラ３０によってそれぞれ実行される動作を指す。それぞれの図の中央の列は、４つの４ＫＢのデータチャンクを含む、キャッシュされた１６ＫＢのページを示す。それぞれの図は、行ごとに１つのＶＭ動作及び対応するＳＳＤコントローラの動作を示す、複数の行を更に含む。したがって、それぞれの図は、経時的に実行される一連のＶＭ動作を示す。図２〜図４の図では、それぞれの４ＫＢのチャンクは、ＡＤＲ１、ＡＤＲ２などのその対応する物理アドレスによって特定される。このため、例えば、ＡＤＲ３チャンクは、そのフラッシュメモリ内の物理アドレスがＡＤＲ３であるデータチャンクを指す。開示される方法では、ＳＳＤコントローラは、フラッシュメモリ３４から取得されたページをＲＡＭ５０内にキャッシュする。
【００５０】
ここで図２を参照する。本実施例では、その物理アドレスがＡＤＲ１〜ＡＤＲ４として示される、４つの連続した４ＫＢのチャンクを含む１６ＫＢのページを前提とする。第１の動作、すなわちＲＥＡＤ＿ＶＭ１（ＡＤＲ３）では、ＶＭは、ＡＤＲ３チャンクを要求するが、更にＳＳＤコントローラ３０に推測的プリフェッチ動作を通知する。ＳＳＤコントローラ３０は、要求されたチャンクがフラッシュメモリ内に記憶されている１６ＫＢのページを読み取ることによって応答し、そのページをＲＡＭ５０内にキャッシュする。キャッシュされたページはチャンクＡＤＲ１〜ＡＤＲ４を含む。ＳＳＤコントローラ３０はその後、キャッシュされたページからホスト２６にＡＤＲ３チャンクのみを伝送する。
【００５１】
ＶＭは次にＲＥＡＤ＿ＮＯ＿ＳＥＮＳＥ（ＡＤＲ１）動作を実行し、この動作では、ＶＭはＡＤＲ１チャンクを要求し、そのチャンクをキャッシュされたページから読み取るよう通知する。ＳＳＤコントローラ３０は、キャッシュされたＡＤＲ１チャンクを読み取り、かつそれを、１６ＫＢのページ全体を再読み取りすることなくホスト２６に伝送することによって応答する。次に、ＶＭ２９は同様に、ＳＳＤコントローラ３０に、キャッシュされたＡＤＲ２チャンクを読み取らせ、それをホストに伝送させるためのＲＥＡＤ＿ＮＯ＿ＳＥＮＳＥ（ＡＤＲ２）動作を実行する。
【００５２】
ＲＥＡＤ＿ＮＯ＿ＳＥＮＳＥ（ＡＤＲ５）動作を実行するときに、ＶＭは、キャッシュされたチャンクＡＤＲ１〜ＡＤＲ４の一部ではないＡＤＲ５チャンクを要求する。その結果、ＳＳＤコントローラ３０は、ＶＭにＲＥＡＤ＿ＮＯ＿ＳＥＮＳＥ＿ＭＩＳＳエラーイベントを通知することによって応答する。この失敗イベントは、要求されたチャンクがまだキャッシュされておらず、ＲＥＡＤ＿ＮＯ＿ＳＥＮＳＥ動作を使用して読み取ることができないことをＶＭに通知する。
【００５３】
ＶＭがＲＥＡＤ＿ＮＯ＿ＳＥＮＳＥ（ＡＤＲ４）動作を使用してＡＤＲ４チャンクを要求すると、ＳＳＤコントローラ３０は、キャッシュされたＡＤＲ４チャンクを読み取り、それをホストに伝送する。この動作によって、ＶＭは全てのキャッシュされたチャンクＡＤＲ１〜ＡＤＲ４（必ずしもこの順序ではない）の要求を完了するため、ＳＳＤコントローラは更に、キャッシュされたページを解放することによって、他のページをキャッシュするためにＲＡＭ５０内の同じメモリ空間を使用することを可能にする。
【００５４】
図３は、推測的プリフェッチのための別の方法を説明している。一実施形態では、ＶＭは単一の４ＫＢのチャンクを要求するが、ＶＭは、ＳＳＤコントローラ３０から、要求されたチャンクが属する１６ＫＢのページ全体までを受け入れるよう準備する。図３の実施例では、ＶＭ２９は、ＶＭ動作、すなわち、ＡＤＲ７チャンクをフェッチするためのＲＥＡＤ＿ＶＭ＿ＴＯ＿ＥＮＤ（ＡＤＲ７）を発行する。ＳＳＤコントローラ３０は、４つの連続するチャンクＡＤＲ６〜ＡＤＲ９を含むページを読み取ってキャッシュすることによって応答し、要求されたチャンク並びに全ての連続するチャンク（ページの末尾までの読み取り動作）、すなわち、ＡＤＲ７〜ＡＤＲ９のみをホストに伝送する。更に、データチャンクと共に、ＳＳＤコントローラ３０は、伝送されたチャンクの数及びそれらの対応する論理アドレスをＶＭに伝送する。データチャンクの伝送に続き、ＳＳＤコントローラ３０は、他のページをキャッシュするために、キャッシュされたページを解放する。ページの末尾まで読み取る機能は、この機能がなければＶＭによって個々のデータチャンクごとに別個に発行されていたであろう冗長な要求（典型的には、チャンクごとのメモリセンス及び読み取り動作を含む）を不要にし、したがってＯＳのダイレクトメモリアクセス（ＤＭＡ）動作をより効率的にする。
【００５５】
図４は、効率的な推測的プリフェッチのための更に別の方法を説明している。この方法は、ページ境界の物理アドレスに合わせて以前に記憶された、データチャンクをフェッチすることを可能にする。図４の実施例では、ＳＳＤコントローラ３０は最初に、ＶＭ２９にページサイズ、本実施例では１６ＫＢを通知する。ＶＭは、通知されたページサイズが後続のＶＭ動作で使用されることを受け入れる。ＶＭ２９はその後、ページ境界に合わせて１６ＫＢのデータを書き込むために、ＷＲＩＴＥ＿ＶＭ＿ＡＬＩＮＧＥＤコマンドをＳＳＤコントローラ３０に発行する。ＳＳＤコントローラ３０はＷＲＩＴＥ＿ＶＭ＿ＡＬＩＮＧＥＤコマンドを受信し、１６ＫＢのデータを、第１のチャンクの物理アドレスが完全なページの物理アドレスと一致するように、連続する４つのチャンク内に記憶する。図４の実施例では、書き込まれる（１６ＫＢのデータの）４つのチャンクは、アドレスがＡＤＲ６であるページ内に記憶される。ＶＭは、ページ境界に合わせて書き込まれた任意のデータの論理アドレスを認識するため、ＶＭは、このデータを後から完全なページとして推測的に読み取ることができる。
【００５６】
後からＶＭは、ＡＤＲ６〜ＡＤＲ９チャンクを記憶するページを要求するために、ＲＥＡＤ＿ＶＭ＿ＴＯ＿ＥＮＤ（ＡＤＲ６）動作を実行する。ＳＳＤコントローラ３０は、対応するページ全体をキャッシュし、４つのＡＤＲ６〜ＡＤＲ９チャンクをホストに伝送し、キャッシュされたページを解放することによって、このコマンドに応答する。
【００５７】
いくつかの実施形態では、ＳＳＤコントローラは、「ガベージコレクション」（garbage collection、ＧＣ）とも呼ばれるブロック圧縮プロセスを適用する。このプロセスでは、ＳＳＤコントローラは、有効なデータを、部分的に有効なコピー元ブロックから１つ以上のコピー先ブロックにコピーする。ＧＣは典型的にはブロック又はページ全体をコピーするため、上述のようにページ境界に合わせて書き込まれたデータは、ＧＣプロセスによってコピーされた後でも、その位置合わせを保持する。
【００５８】
図５は、本発明の一実施形態に係る、最初にページ境界に合わせてデータを記憶することによる推測的プリフェッチのための方法を模式的に示すフローチャートである。この方法はＳＳＤコントローラ３０によって実行され、ＳＳＤコントローラ３０が通知ステップ１００で、フラッシュメモリ３４のページサイズをＶＭ２９に通知することによって開始される。図５の実施例では、ページサイズは１６ＫＢである。本明細書で説明されるように、ＶＭ２９は、ページ境界に合わせてデータチャンクを書き込むために、通知されたページサイズを使用し、その結果、このデータの効率的な推測的プリフェッチが可能になる。
【００５９】
コマンド受信ステップ１０４では、ＳＳＤコントローラ３０がＶＭから、ＷＲＩＴＥ＿ＶＭ＿ＡＬＩＧＮＭＥＮＴコマンド（上述）を使用して記憶される１６ＫＢのデータを受け入れる。位置合わせ記憶ステップ１０８では、ＳＳＤコントローラ３０が、フラッシュメモリ３４内の対応するページを選択し、選択されたページの境界に合わせて、１６ＫＢのデータを含む４つの４ＫＢのチャンクを記憶する。ＶＭ２９は、物理的なページ境界に合わせて記憶される１６ＫＢのデータページの論理アドレスを追跡する。推測的読み取りコマンド受信ステップ１１２では、ＳＳＤコントローラ３０が、ステップ１０８で記憶されたページ全体を推測的に読み取るための要求をＶＭ２９から受信する。
【００６０】
ステップ１１６では、ＳＳＤコントローラ３０が、要求されたページの論理アドレスを対応する物理アドレスに変換し、ページデータを読み取り、そのページをＲＡＭ５０内にキャッシュする。ステップ１１６では、ＶＭは、例えば、ＲＥＡＤ＿ＶＭ＿ＴＯ＿ＥＮＤ動作（上述）、又はキャッシュされたページ全体をホストに伝送する、専用の他のＶＭ動作を使用してもよい。ＳＳＤコントローラはその後、ページ伝送ステップ１２０で、ホストインタフェース３８を介して、１６ＫＢのキャッシュされたページをＶＭ２９に伝送する。更にステップ１２０では、ＳＳＤコントローラが、同じメモリ空間を再利用することによって他のページをキャッシュすることを可能にするために、ＲＡＭ５０内のキャッシュされたページを解放する。
【００６１】
高速なアプリケーション起動
アプリケーションプログラムは、大量の比較的小さいファイルに頻繁にアクセスし、ＦＳ２８はこれらのファイルを、アプリケーションがインストールされるときに、フラッシュメモリ３４内に記憶する。アプリケーションファイルは、実行可能ファイル、ビットマップファイル、マルチメディアファイルなどを含み得る。いくつかの実施形態では、ＯＳ２６がアプリケーションを起動するときに、ＦＳ２８は、アプリケーションのファイルを、実行のためにフラッシュメモリ３４内の対応する位置からホストメモリ３２にアップロードする。ＦＳ２８は、複数の対応する読み取りコマンドをＳＳＤコントローラ３０に送信することによって、アプリケーションファイルをアップロードする。ユーザがアプリケーションを使用できるようになるまでの遅延が最小限になるように、アプリケーションファイルの起動にかかる時間は短時間であるべきである。
【００６２】
当該技術分野では、アプリケーションの起動時間を短縮するための様々な方法が知られている。例示的な方法は、参照により本明細書に組み込まれる、２０１１年２月１５〜１７日に米国サンノゼで開催された、ファイル及び記憶技術に関する第９回ＵＳＥＮＩＸ会議の議事録の２５９〜２７２ページに記載されている、「ＦＡＳＴ：ｑｕｉｃｋ  ａｐｐｌｉｃａｔｉｏｎ  ｌａｕｎｃｈ  ｏｎ  ｓｏｌｉｄ−ｓｔａｔｅ  ｄｒｉｖｅｓ」でＹｏｎｇｓｏｏらによって説明されている。
【００６３】
本明細書で説明されるいくつかの実施形態では、ＦＳ２８は、アプリケーションの起動時間を短縮するために推測的プリフェッチを使用する。例えば、ＦＳ２８は、上記の図２〜図４で説明されているような方法で推測的プリフェッチを使用してもよい。
【００６４】
一例示的実施形態では、アプリケーションファイルは、フラッシュメモリのうちの１つの物理アドレスの連続する範囲内に、連続的に記憶される。アプリケーションファイルの識別子をＯＳ２７から受信すると、ＦＳ２８は、推測的プリフェッチを無効にした状態で、フラッシュメモリからアプリケーションファイルのそれぞれを別個に読み取ることができる可能性がある。ただし、これはフラッシュメモリ内の冗長な読み取り動作を発生させ、したがって、特に、ファイルのサイズがおよそチャンクサイズ（例えば、４ＫＢ）と等しいか又はそれ以下であるときに、起動時間が長くなるおそれがある。
【００６５】
開示される実施形態では、アプリケーションファイルの識別子を提供することに加えて、ＯＳ２７はＦＳ２８に、それらのファイルが共通して１つのアプリケーションプログラムに属することを暗示する。この暗示を受信すると、ＦＳ２８は自動的に推測的プリフェッチモードに切り替え、このモードでは、ＦＳ２８は、複数の４ＫＢのチャンクを効率的に読み取るために、図２〜図４に関連して上述したものなどの推測的プリフェッチを使用する。
【００６６】
図６は、本発明の一実施形態に係る、アプリケーションの起動時間を短縮するための方法を模式的に示すフローチャートである。この方法はＳＳＤコントローラ３０によって実行され、ＳＳＤコントローラが起動開始通知ステップ２００で、アプリケーション起動プロセスが開始されたことに関する通知又は暗示をＯＳ２７から受信することによって開始される。監視ステップ２０４では、ＦＳ２８がアプリケーションファイルを読み取る間に、ＳＳＤコントローラ３０は、アップロードされたファイルの読み取りデータの論理アドレス及び対応する物理アドレスを監視及び記録する。
【００６７】
起動終了通知ステップ２０８では、ＳＳＤコントローラ３０は、ＦＳ２８がアプリケーションファイルのアップロードを終了したことに関する暗示をＯＳ２７から受信し、ＳＳＤコントローラ３０はそれにしたがって、ステップ２０４で実行された記録を停止する。ＳＳＤコントローラはその後、物理アドレスの連続する範囲を占有するために、デフラグステップ２１２でアプリケーションファイルを再配置する。ステップ２１２の後、方法は終了する。連続する物理空間へのアプリケーションファイルのデフラグは、そのアプリケーションの後続の（すなわち、推測的プリフェッチを使用した）起動をより効率的にし、その結果、起動時間がより短くなるため、ユーザエクスペリエンスが改善される。
【００６８】
代替の実施形態では、ＯＳ２７は、アプリケーション起動を開始すると、アプリケーションファイルの論理アドレスの記録を開始し、アプリケーション起動の終了時に記録を停止するよう、（図６の方法のようにＳＳＤコントローラ３０ではなく）ＦＳ２８に暗示する。そのような実施形態では、起動の終了後、ＦＳ２８は、専用のデフラグコマンドをＳＳＤコントローラ３０に発行する。このデフラグコマンドで、ＳＳＤコントローラ３０は、アプリケーションファイルの論理アドレスをＦＳ２８から受信する。ＳＳＤコントローラはその後、アプリケーションファイルを物理アドレスの連続する範囲内に再配置することによって、デフラグを実行する。
【００６９】
上述の方法は例示的な方法であり、代替の実施形態では他の方法が使用されてもよい。例えば、全ての上述の方法では、データチャンク及びページサイズはそれぞれ４ＫＢ及び１６ＫＢであるが、任意の他の好適なサイズも使用されてもよい。
【００７０】
別の実施例では、典型的にはＶＭ及びＦＳは同じデータチャンクサイズを共有するが、代替の実施形態では、ＶＭ及びＦＳが異なるサイズの（どちらのサイズもページサイズより小さい）データチャンクをフェッチするように、上述の方法が適用されてもよい。代替的に又は追加として、ＶＭ（又はＦＳ）は、異なるプロセス又はアプリケーションに対して異なるチャンクサイズを使用してもよい。
【００７１】
開示される方法は、ＳＳＤベースのストレージシステムだけでなく、ＶＭ（又はＦＳ）によって欠落データチャンクがフェッチされるたびに、チャンクサイズよりも大きいサイズのページが対応するメモリから取得される、任意のストレージシステムに適用され得る。
【００７２】
本明細書で説明される実施形態は、主に、ＳＳＤベースのストレージシステム内のメモリデバイスと通信するホストプロセッサに対応しているが、本明細書で説明される方法及びシステムは、基になる記憶デバイスによって使用される記憶単位よりも小さいチャンク内にデータを記憶するようにホストが構成される任意のシステム内などの他の適用例でも使用され得る。
【００７３】
上述の実施形態は例として挙げられており、本発明は、以上に具体的に図示され説明されたものに限定されないことが理解されるであろう。むしろ、本発明の範囲は、以上に説明した様々な機能の組み合わせ及び部分的組み合わせの両方、並びに当業者であれば前述の説明を読むことによって想到するであろう従来技術に開示されていないそれらの変型及び修正を含む。この参照により本特許出願に組み込まれる文献は、何らかの用語が、これらの組み込まれた文献の中において本明細書内で明示的又は暗示的になされた定義と対立する方法で定義されている範囲において、本明細書内の定義のみが考慮されるべきである点を除き、本願の必須部分であるとみなされるべきである。
【図１】
2017503266.tif 000003
【図２】
2017503266.tif 000004
【図３】
2017503266.tif 000005
【図４】
2017503266.tif 000006
【図５】
2017503266.tif 000007
【図６】
2017503266.tif 000008
【国際調査報告】
2017503266.tif 000009
2017503266.tif 000010
2017503266.tif 000011
2017503266.tif 000012
2017503266.tif 000013