JP6224253B2 - フラッシュメモリ内に記憶されたデータの推測的プリフェッチ - Google Patents

フラッシュメモリ内に記憶されたデータの推測的プリフェッチ Download PDF

Info

Publication number
JP6224253B2
JP6224253B2 JP2016541546A JP2016541546A JP6224253B2 JP 6224253 B2 JP6224253 B2 JP 6224253B2 JP 2016541546 A JP2016541546 A JP 2016541546A JP 2016541546 A JP2016541546 A JP 2016541546A JP 6224253 B2 JP6224253 B2 JP 6224253B2
Authority
JP
Japan
Prior art keywords
data
page
read
data unit
buffer
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
JP2016541546A
Other languages
English (en)
Other versions
JP2017503266A (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.)
Apple Inc
Original Assignee
Apple Inc
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 Apple Inc filed Critical Apple Inc
Publication of JP2017503266A publication Critical patent/JP2017503266A/ja
Application granted granted Critical
Publication of JP6224253B2 publication Critical patent/JP6224253B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1072Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in multilevel memories
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0215Addressing or allocation; Relocation with look ahead addressing means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0862Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0688Non-volatile semiconductor memory arrays
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/52Protection of memory contents; Detection of errors in memory contents
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/6028Prefetching based on hints or prefetch instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • G06F2212/654Look-ahead translation
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Computer Security & Cryptography (AREA)
  • Quality & Reliability (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

本発明は、全般的に、データ記憶に関し、特に、不揮発性メモリ内に記憶されたデータをプリフェッチするための方法及びシステムに関する。
いくつかのコンピューティングシステムは、高速であるが小容量の揮発性メモリ及び大容量であるがより低速な不揮発性メモリを使用する、仮想メモリ(Virtual Memory、VM)技術を利用する。例えば、いくつかのモバイルコンピューティング及び通信デバイスでは、デバイスのオペレーティングシステム(Operating System、OS)は、デバイスのランダムアクセスメモリ(Random Access Memory、RAM)をソリッドステートドライブ(Solid State Drive、SSD)と連携して動作させるVMモジュールを含む。
当該技術分野では、VMを使用するための様々な方法が知られている。例えば、その開示が参照により本明細書に組み込まれる、米国特許第8,429,377号は、メモリにアクセスするためのシステム及び方法を説明している。このシステムは、仮想アドレス上のメモリページに対する要求を発行するプロセッサデバイス、及び1つ以上のページテーブルエントリを記憶するためのルックアップバッファを含み、ページテーブルエントリのそれぞれは、少なくとも仮想ページ番号及び物理ページ番号を含む。このシステムは、同じページテーブルエントリ内の物理ページ番号を選択するために、前記プロセッサから仮想アドレスを受信し、その仮想アドレスをページテーブルエントリのうちの1つの仮想ページ番号と照合する、論理回路を更に含む。ページテーブルエントリは、ページからメモリ範囲を除外するための1つ以上のビットセットを含む。
参照により本明細書に組み込まれる、2010年4月にドイツのパッサウで開催された第9回IFIP WG 8.8/11.2の国際会議であるCARDIS2010の議事録「Smart Card Research and Advanced Application」の102〜117ページに記載されている、Geoffroyらによる「Key−Study to Execute Code Using Demand Paging and NAND Flash at Smart Card Scale」は、スマートカード又はセンサほどの大きさしかないシステム内に複数のアプリケーションを埋め込むことに伴う制限を説明している。非常に小さいメインメモリなどのこれらのシステムの物理的な制限、及びこれらのシステムの生産コストが、この埋め込みの実現を難しくしている。この研究で提示された1つの解決策は、より安価かつ高密度であるが、より低速なNANDフラッシュなどの二次メモリからコードを実行することである。
本発明の一実施形態は、読み出しのための推測的読み出しモードの定義を記憶デバイス内で保持することであって、記憶デバイスはデータ単位サイズを有するデータ単位を読み取るよう要求され、それに応じて記憶デバイスは、そのデータ単位を含み、かつそのデータ単位サイズよりも大きい記憶ページサイズを有する記憶ページを取得し、その記憶ページを後続の要求に備えて保持する、ことを含む方法を提供する。推測的読み出しモードのアクティブ化は調整される。推測的読み出しモードを使用して、読み出しコマンドが実行される。
いくつかの実施形態では、アクティブ化を調整することは、単一のデータ単位を読み取るためのコマンドを記憶デバイス内で受信することを含み、読み出しコマンドを実行することは、保持された記憶ページから単一のデータ単位を読み取ることを含む。他の実施形態では、読み出しコマンドを実行することは、保持された記憶ページ内に単一のデータ単位が存在しないことを検出すると、エラーイベントを報告することを含む。更に他の実施形態では、読み出しコマンドを実行することは、保持された記憶ページ内の全てのデータ単位が要求された後に、保持された記憶ページを破棄することを更に含む。
一実施形態では、読み出しコマンドを実行することは、保持された記憶ページ内の所与のデータ単位を読み取るための要求を記憶デバイス内で受信することと、保持された記憶ページから所与のデータ単位及び全ての連続するデータ単位を返すことと、を含む。別の実施形態では、アクティブ化を調整することは、記憶デバイスから記憶ページサイズを報告することを含む。更に別の実施形態では、方法は、サイズが記憶ページサイズと等しいデータを記憶するための書き込みコマンドを記憶デバイス内で受信することと、記憶デバイスのページ境界に合わせてデータを記憶することと、を更に含む。
更に、不揮発性メモリ及びプロセッサを備える記憶デバイスが提供される。このプロセッサは、推測的読み出しモードの定義を保持するように構成され、記憶デバイスは、データ単位サイズを有するデータ単位を読み取るよう要求され、それに応じて記憶デバイスは、そのデータ単位を含み、かつそのデータ単位サイズよりも大きい記憶ページサイズを有する記憶ページを不揮発性メモリから取得し、その記憶ページを後続の要求に備えて保持し、かつこのプロセッサは、推測的読み出しモードのアクティブ化を調整し、推測的読み出しモードを使用して読み出しコマンドを実行するように構成される。
本発明は、下記の図面と併せて解釈される、以下の本発明の実施形態の詳細な説明からより完全に理解されよう。
本発明の一実施形態に係るストレージシステムを模式的に示すブロック図である。 推測的プリフェッチの一部としてデータをキャッシュすること及び読み取ることを模式的に示す図である。 推測的プリフェッチの一部としてデータをキャッシュすること及び読み取ることを模式的に示す図である。 推測的プリフェッチの一部としてデータをキャッシュすること及び読み取ることを模式的に示す図である。 本発明の一実施形態に係る、ページ境界に合わせてデータを記憶することによる推測的データプリフェッチのための方法を模式的に示すフローチャートである。 本発明の一実施形態に係る、アプリケーションの起動時間を短縮するための方法を模式的に示すフローチャートである。
概説
本明細書で説明される本発明の実施形態は、仮想メモリ(VM)動作のための改善された方法及びシステムを提供する。多くのストレージシステムでは、オペレーティングシステム(OS)が所与のプロセスに対して割り当てる、ホストの揮発性メモリ内の空間(本明細書で「ローカルメモリ」と呼ばれる)は、そのプロセスのコード及びデータ全体を含むのに不十分である。このシナリオは、例えば、ローカルメモリの記憶空間の合計がプロセスに必要な空間よりも小さいとき、又はOSが複数のプロセスを同時に実行するときに発生し得る。
いくつかの実施形態では、OSは、ローカルメモリ内で実行されるプロセスのためのメモリを管理する、仮想メモリ(VM)サブシステムを含む。本明細書で説明される実施形態では、VMは、ローカルメモリ、及びフラッシュベースのソリッドステートドライブ(Solid State Drive、SSD)などの大容量の不揮発性メモリを管理する。VMは、プロセスが、OSによってそのプロセスのために割り当てられた空間よりも大きいメモリ空間を使用することを可能にする。場合によっては、プロセスは、現在ローカルで使用できないデータへのアクセスを試行し得る。そのようなイベントは、ページフォールトイベントと呼ばれる。VMは、典型的には、該当するデータをSSDからフェッチすることによってページフォールトに対応する。
VMは、本明細書でデータチャンク又はデータ単位と呼ばれる単位で、SSD内のデータにアクセスする。ページフォールトを検出する(又はその通知を受信する)と、VMは、欠落データが属するデータチャンク(欠落チャンクとも呼ばれる)を要求することによって、対応する欠落データをSSDからフェッチする。いくつかの実施形態では、欠落データへのアクセス速度を改善するために、VMは、欠落チャンクに加えて1つ以上の連続するデータチャンクをフェッチするように構成されてもよい。この動作モードは推測的プリフェッチと呼ばれる。ただし、SSDベースのストレージシステム内での推測的プリフェッチは、以下で更に説明されるように、問題となり得る。
典型的には、OSは、ファイル及びディレクトリなどの論理構造内へのデータ(例えば、ユーザデータ又は他のデータ)の記憶を管理する、ファイルシステム(File System、FS)サブシステムを更に含む。FSはファイルをSSD内に記憶する。コンピュータプログラムは、1つ以上のファイルを実行するか又はさもなければ使用し得る。例えば、アプリケーションプログラムは、実行可能ファイル及びマルチメディアファイルなどの大量の小さいファイルにアクセスし得る。アプリケーションの実行時、FSは最初に、対応するアプリケーションファイルをSSDからローカルメモリにアップロードし、ホストがその後、ローカルメモリからアプリケーションを実行する。アプリケーションのファイルをアップロードするプロセスは、アプリケーション起動と呼ばれる。アプリケーションファイルは実行前にアップロードされるべきであるため、より短いアプリケーション起動時間が、より良いユーザエクスペリエンスをもたらす。
ホスト内では、OSのVM及びFSサブシステムは、典型的には、論理アドレスの連続する空間内でメモリを管理する。SSDは、典型的には、フラッシュメモリの物理アドレス内でストレージを管理するSSDコントローラを含む。論理アドレスは、フラッシュメモリ内の、データチャンクの対応する物理アドレスに対応する。SSDコントローラは、典型的には、論理アドレスと物理アドレスとの間の変換テーブルを維持する。
SSDコントローラは、記憶ページ、又は簡略化のために単純にページと呼ばれる単位で、SSD内にデータを記憶する。いくつかの場合、VM(又はFS)は、SSDのページサイズよりも小さいデータチャンクをフェッチするように構成される。すなわち、SSD内のページは、典型的には、VMがその中から一度に1つずつ要求し得る、複数のデータチャンクを含む。以下で説明されるように、この記憶ページとデータチャンクとの間のサイズの不一致は、推測的プリフェッチの潜在的な利点を排除し得る。
いくつかの実施形態では、OSは、本明細書でチャンク又はセグメントと呼ばれる単位でデータを読み取る。チャンクサイズは、例えば、512バイト又は4キロバイト(Kilobyte、KB)であってもよい。一方、SSD内のデータは、フラッシュメモリから、典型的にはサイズがチャンクサイズよりも大きい記憶ページ内に書き込まれ、取得される。例示的なページサイズは、8KB、16KB、及び32KBを含む。
一実施形態では、ページフォールトイベントに応じて、VMは対応する欠落チャンク(すなわち、ページフォールトを発生させた欠落データが属するチャンク)をSSDから要求する。原則として、VMは、欠落チャンクに加えて1つ以上の連続するチャンクを要求することによって、推測的プリフェッチを実行し得る。しかしながら、SSDは、VMが同じページ内の複数のチャンクを要求したときでも、各チャンク要求に対してページ全体を取得するため、このプリフェッチ動作は、欠落データにアクセスする速度を改善しない場合がある。更に、そのような冗長なページ取得動作は電力消費を増加させる原因となり、その結果、システムのバッテリ寿命が短くなる。
開示される技術では、VMが欠落チャンクを要求したときに、このチャンクを含むページが取得され、SSD内にキャッシュされる。その後VMが、既にキャッシュされている1つ以上のチャンクを(例えば、推測的プリフェッチの実行時に)要求したとき、これらのチャンクは、対応するページのSSDからの不要な再読み取りを発生させることなく、キャッシュされたページから読み取られる。
以下の説明では、SSDコントローラを備える基になるSSD記憶装置、及び揮発性キャッシュメモリを前提とする。分かりやすくするために、特に明記しない限り、SSDの不揮発性メモリは「フラッシュメモリ」と呼ばれる。フラッシュメモリは、任意の好適な数の個々のフラッシュデバイスを含んでもよい。
一実施形態では、ホストのVMは、欠落チャンクを取得するための要求をSSDに発行し、更に、推測的プリフェッチ動作をSSDコントローラに通知する。SSDコントローラは、要求されたチャンクが属するページをフラッシュメモリから取得し、そのページをキャッシュメモリ内にキャッシュする。SSDコントローラは、要求されたチャンクをホストに伝送し、キャッシュされたページを、VMがキャッシュされたページの全ての他のチャンクを要求するまで保持する。
一実施形態では、VMは、ページ全体をフラッシュメモリから再読み取りすることなく、それぞれのそのようなチャンクをキャッシュされたページから読み取るようSSDコントローラに指示することによって、SSD内に既にキャッシュされたページの一部であるチャンクを読み取る。VMがキャッシュされたチャンクを要求したが、要求されたチャンクがキャッシュされたページ内に存在しないとき、SSDコントローラは、対応するエラー通知をVMに返す。VMはその後、対応するページをキャッシュするか又はキャッシュすることなく、そのチャンクを読み取ることができる。キャッシュされたチャンクの読み取りは、そのチャンクのフラッシュメモリからの読み取りよりも高速である。
いくつかの実施形態では、VMは、欠落チャンクを要求し、更にSSDに推測的プリフェッチ動作を通知することによって、推測的プリフェッチを実行する。SSDは、要求されたチャンクが属するページをフラッシュメモリから取得し、そのページをキャッシュし、要求されたチャンク並びにキャッシュされたページ内の全ての連続するチャンクをホストに返す。
推測的プリフェッチは、原則として、単一のVM要求が、SSDコントローラにチャンクをページ境界に合わせて取得させたときに、より効率的になり得る。しかしながら、VMは、ページ内の個々のチャンクの位置に関する明確な情報を有さず、それゆえに、VMは、ページ境界に位置合わせされたチャンクを明示的に要求することができない。
一実施形態では、SSDコントローラは、フラッシュメモリ内で使用されるページサイズをVMに報告する。VMはその後、受信したページサイズを有する単位でデータを記憶し、更にSSDコントローラに、それぞれのそのような単位をページ境界に合わせてフラッシュメモリ内に記憶するよう指示する。VMが後から、対応する記憶されたデータを読み取るとき、VMは、上述のように、ページ内の第1のチャンクを要求することによって推測的プリフェッチを実行し、推測的プリフェッチの要求に応じて、SSDは、第1のチャンクが属するページを読み取ってキャッシュし、そのページ全体をホストに伝送する。
アプリケーションの起動時に、推測的プリフェッチを実行することによって起動時間を短縮することは、例えば、アプリケーションファイルが連続的にフラッシュメモリ内に記憶されるときに有利になり得る。しかしながら、アプリケーションファイルのそれぞれをアップロードするときに、FSは、ファイルがアプリケーションプログラムと共通していることを認識せず、これらのファイルのアップロード時に推測的プリフェッチモードに切り替えるための明示的な通知を有さない。一実施形態では、OSは、アプリケーション起動を開始するときに、FSに通知する。それに応じて、FSはその後、対応するアプリケーションファイルを推測的プリフェッチモードで読み取るように切り替える。
いくつかの実施形態では、OSは、アプリケーション起動を開始及び終了するときに、SSDコントローラに通知する。それに応じて、SSDは、起動されたアプリケーションのアップロードされたファイルの論理アドレス及び対応する物理アドレスを監視及び記録する。SSDコントローラはその後、推測的プリフェッチを使用して、同じアプリケーションの後続の効率的な起動を可能にするために、フラッシュメモリ内の物理アドレスの連続する範囲内に、アプリケーションファイルを連続的に再配置する。
代替の実施形態では、OSは、OSがアプリケーション起動を開始及び終了するたびに、(SSDではなく)FSに通知する。FSは、アップロードされたアプリケーションファイルの論理アドレスを記録し、専用のデフラグコマンドを使用して、記録されたアドレスをSSDコントローラに送信する。SSDコントローラはその後、アプリケーションファイルをフラッシュメモリ内に連続的に再配置し、それにしたがってアドレス変換テーブルを更新する。
開示される技術は、ページフォールトイベント検出時に欠落データにアクセスする速度を改善するために推測的プリフェッチを実行すること、及びフラッシュメモリからの不要な読み取り動作を実行することなくアプリケーションの起動時間を短縮することを可能にする。したがって、開示される技術は、読み取りの待ち時間、電力消費、及びシステムのバッテリ寿命を改善する。
システムの説明
図1は、本発明の一実施形態に係るメモリシステムを模式的に示す。本実施例では、メモリシステムは、ソリッドステートドライブ(SSD)24にデータを記憶するコンピュータ20を備える。コンピュータ20は、例えば、モバイル、タブレット又はパーソナルコンピュータを含むことができる。コンピュータは、ホストとして働く中央処理装置(CPU)26を備える。以下の説明では、CPU及びホストという用語は区別なく使用される。
代替実施形態では、ホストは、任意の他の好適なプロセッサ又はコントローラを備えることができ、記憶デバイスは、任意の他の好適なデバイスを備えることができる。例えば、ホストは、エンタープライズストレージシステムのストレージコントローラを備えることができ、記憶デバイスは、SSD又はSSDのアレイを備えることができる。不揮発性記憶デバイスにデータを記憶するホストの他の例は、モバイル電話、デジタルカメラ、メディアプレーヤ、並びに取外し可能なメモリーカード又はデバイスを含む。
一実施形態では、CPU26は、コンピュータ20の様々なタスクを処理するオペレーティングシステム(OS)27を実行する。OSは、ファイルシステム(FS)28及び仮想メモリ(VM)サブシステム29を更に含む。FS28は、ディレクトリ及びファイルなどの論理構造内で、ユーザ(及び他の)データの編成を管理する。VM29は、FSが揮発性ホストメモリ32にアップロードし、かつOSが揮発性ホストメモリ32から実行するプロセスのためのメモリを管理する。メモリ32はローカルメモリとも呼ばれる。メモリ32は、例えば、DDR、DDR2、DDR3、DDR3L、SDRAM、又はRDRAMなどの任意の好適な種類の揮発性メモリを含んでもよい。典型的なアプリケーションでは、メモリ32は1GB〜32GBのサイズを有するが、任意の他の好適なサイズが使用されてもよい。
SSD24は、不揮発性メモリに、本実施例では1つ以上のNANDフラッシュメモリデバイス34に、CPU26のためのデータを記憶する。代替実施形態では、SSD24中の不揮発性メモリは、例えば、NORフラッシュ、チャージトラップフラッシュ(CTF)、相変化RAM(PRAM)、磁気抵抗RAM(MRAM)又は強誘電体RAM(FeRAM)などの、任意の他の好適なタイプの不揮発性メモリを備えることができる。
SSDコントローラ30は、SSDの種々の記憶タスク及び管理タスクを実行する。SSDコントローラは、一般に、メモリコントローラとも呼ばれる。SSDコントローラ30は、CPU26と通信するためのホストインタフェース38、フラッシュデバイス34と通信するためのメモリインタフェース46、及びSSDの種々の処理タスクを実行するプロセッサ42を備える。
SSD24は、揮発性メモリを、本実施例ではランダムアクセスメモリ(RAM)50、を更に備える。図1の実施形態では、RAM50は、SSDコントローラ30の一部として示されているが、代替的には、RAMは、SSDコントローラとは別個であってもよい。RAM50は、例えば、スタティックRAM(SRAM)、ダイナミックRAM(DRAM)、2つのRAMタイプの組み合わせ、又は任意の他の好適なタイプの揮発性メモリを備えてもよい。RAM50は、フラッシュデバイス34から読み取られたデータを、そのデータ又は部分をCPU26又はホストメモリ32に伝送する前にキャッシュするために使用されてもよい。以下で説明されるように、いくつかの実施形態では、RAM50は、その1つ以上のデータチャンクが要求に応じてCPU26に伝送されるデータページをキャッシュする。
図1の下側部分は、NANDフラッシュデバイス34の例示的な詳細ブロック図を示す。本実施例では、デバイス34は読み取り/書き込み(R/W)ユニット70を備え、このユニットは、メモリデバイス内に記憶されるデータを記憶値に変換し、それらをフラッシュメモリアレイ76のメモリセル(例えば、アナログメモリセル)内に書き込む。代替の実施形態では、R/Wユニットは変換を実行せず、電圧サンプル、即ち、セル内に記憶する記憶値を供給される。R/Wユニットは、典型的には(必ずしもそうではないが)、当該技術分野で知られるような反復型のプログラム化及び検証(Program and Verify、P&V)プロセスを使用して、メモリセルをプログラムする。アレイ76からデータを読み出すときには、R/Wユニット70はメモリセルの記憶値を1ビット以上の分解能を有するデジタルサンプルに変換する。典型的には、データは、データページ又は単純にページと呼ばれる群で、メモリセルに書き込まれ、メモリセルから読み出される。デバイス34などのフラッシュデバイスは、典型的には8KB、16KB、又は32KBのページを含む。いくつかの実施形態では、R/Wユニットは、1つ以上の負の消去パルスをセルに印加することによって、メモリアレイ76内の一群のセル、例えば、複数のページを含むブロックを消去してもよい。
メモリアレイ76は、2つのプログラミングレベルを使用して1ビット/セルを記憶するシングルレベルセル(Single-Level Cell、SLC)メモリアレイ、又は2N個のプログラミングレベルでNビット/セルを記憶するマルチレベルセル(Multi-Level Cell、MLC)メモリアレイを含んでもよい。例えば、2ビット/セルデバイスは4つのプログラミングレベルを使用し、3ビット/セルデバイスは8つのプログラミングレベルを使用する。
いくつかのメモリデバイスは、しばしばプレーンと呼ばれる、2つ以上の別個のメモリセルアレイを備える。例えば、各プレーンが16KBのページを備える二プレーンデバイスでは、SSDコントローラは、複数プレーンアクセスの方法を使用して単一の読み取り動作で32KBを取得することができる。
SSDコントローラ30のプロセッサ42は、典型的には論理から物理へのアドレス変換を維持し、このアドレス変換は、ホストによって指定された論理アドレスを、フラッシュデバイス34内の対応する物理記憶位置(物理アドレスとも呼ばれる)に関連付け、データを適切な物理記憶位置に記憶する。論理から物理へのアドレス変換(仮想から物理へのマッピング(Virtual-to-Physical mapping、V2P)とも呼ばれる)は、RAM50内、フラッシュデバイス34内、又はこれらの両方に記憶されてもよい。
論理アドレス及び対応する物理アドレスは、本明細書でデータチャンクと呼ばれるデータ単位にアクセスする。いくつかの実施形態では、データページのサイズはデータチャンクのサイズよりも大きい。例えば、VMはサイズが4KBのデータチャンクで構成され、フラッシュメモリはサイズが16KBのページで構成されてもよい。典型的には、必須ではないが、データページは整数個のデータチャンクを含む。
SSDコントローラ30は、詳細にはプロセッサ42は、ハードウェアで実装することができる。代替的には、SSDコントローラは、好適なソフトウェアを実行するマイクロプロセッサ、あるいはハードウェア要素とソフトウェア要素との組み合わせを備えることができる。
図1の構成は例示的な構成であり、概念を明快するためにのみ示される。任意の他の好適なSSD又は他のメモリシステム構成を使用することもできる。種々のインタフェース、アドレス指定回路、タイミング及びシーケンス回路、並びにデバッギング回路などの、本発明の原理を理解する上で必要ではない要素は、明瞭性のために図から省略されている。いくつかのアプリケーション、例えば、非SSDアプリケーションでは、SSDコントローラ30の機能は、好適なメモリコントローラによって実行される。
図1に示される例示的なシステム構成では、メモリデバイス34及びSSDコントローラ30は、別個の集積回路(IC)として実装される。ただし、代替の実施形態では、メモリ装置及びSSDコントローラは、単一のマルチチップパッケージ(Multi-Chip Package、MCP)又はシステムオンチップ(System on Chip、SoC)内の別個の半導体ダイに組み込まれるか、内部バスによって相互接続されてもよい。更に代替的には、SSDコントローラ回路の一部又は全体が、1つ以上のメモリ装置34が配置された同じダイ上に設けられてもよい。更に代替的には、SSDコントローラ30の機能の一部又は全部は、ソフトウェア中に実施することができ、コンピュータ中のCPU26又は他のプロセッサにより実行することができる。いくつかの実施形態において、CPU26及びSSDコントローラ30は、同じダイ上に、又は、同じデバイスパッケージ中の別個のダイ上に作り込むことができる。
いくつかの実施形態では、プロセッサ42及び/又はCPU26は、本明細書で説明される機能を実施するためにソフトウェア内でプログラムされる、汎用プロセッサを備える。ソフトウェアは、例えばネットワーク経由で電子的な形態でプロセッサにダウンロードしてもよく、又は別の方法によって、あるいは追加的に、磁気メモリ、光学的メモリ、若しくは電子メモリなどの非一時的な有形的媒体によって提供及び/又は記憶することができる。
SSDベースのストレージシステム内でのVMのプリフェッチ
以下の説明では、VM29が固定サイズのチャンク又はセグメントでフラッシュメモリ34からデータをフェッチすることを前提とする。いくつかの実施形態では、SSDコントローラ30はOS27に、ホストインタフェース38を介したデータ転送の最小単位サイズ、すなわち、例えば512バイト又は4KBなどのチャンクサイズを通知する。以下の説明では、4KBのチャンクサイズを前提とする。しかしながら、代替的には、任意の他の好適なチャンクサイズも使用されてもよい。
OS27によってホストメモリ32から実行されるソフトウェアプロセス又はアプリケーションが、メモリ32内でローカルに使用できないデータにアクセスする必要があるとき、ページフォールトイベントが発生する。ページフォールトが発生すると、VMは、欠落データを対応するフラッシュメモリ34からフェッチするための1つ以上のI/O要求を、SSDコントローラに発行する。欠落データが属するデータチャンクは欠落チャンクとも呼ばれる。VMは一度に1つのチャンク(すなわち、欠落チャンク)のみをフェッチし得るが、多くの場合、ソフトウェアプロセスの実行が進行するにしたがって、VMは高い確率で、追加の連続するデータチャンクをフェッチすることが必要になる。したがって、典型的には、欠落チャンクだけでなく複数のチャンクの連続する範囲をフェッチすることが、より効率的である。本発明の文脈、及び特許請求の範囲では、「推測的プリフェッチ」という用語は、欠落チャンクと連続する1つ以上の追加のチャンクをフェッチすることを指す。推測的プリフェッチでは、フェッチされるチャンクは、欠落チャンクの前にある1つ以上のチャンクを含んでもよい。
以下で説明されるように、VM29を推測的プリフェッチモードで動作するように構成することによって、フラッシュメモリ34からの冗長な読み取り動作が発生し、結果として待ち時間及び電力消費が増加する場合がある。例えば、フラッシュメモリ34のそれぞれが16KBのページを記憶するものと仮定する。VM29が単一の4KBのデータチャンクを要求したとき、SSDコントローラは、このチャンクが属する16KBのページ全体を読み取り、要求されたチャンクのみをホスト26に伝送すべきである。後続のVM要求が他のページにアクセスする場合、他の3つの読み取られたチャンク(この実施例では12KB)は利用されない。更に、VM29が、全て同じページ内に配置された複数の4KBのチャンクを推測的に要求したとき、それぞれの個々のVM要求は、16KBのページ全体の別個の読み取り動作を発生させ、そのような読み取り動作ごとに、16KBのページのうちの4KBのみがホスト26に伝送される。このように、上記の実施例は、帯域幅利用率が25%(16KBのうちの4KB)のみであることを示す。
以下で説明される開示される技術は、VMが帯域幅及び電力消費を無駄にすることなく推測的プリフェッチを実行することを可能にする。開示される技術では、新しいVM動作を定義することによって、SSDコントローラが、一度データページを読み取ってキャッシュし、そのページのキャッシュされたデータチャンクを要求に応じてホストに送信することができる。
効率的な推測的プリフェッチのための方法
図2〜図4は、推測的プリフェッチの一部としてデータをキャッシュすること及び読み取ることを模式的に示す図である。図2〜図4のそれぞれに示す図は、3つの列を含む。一番左及び一番右の列は、VM29及びSSDコントローラ30によってそれぞれ実行される動作を指す。それぞれの図の中央の列は、4つの4KBのデータチャンクを含む、キャッシュされた16KBのページを示す。それぞれの図は、行ごとに1つのVM動作及び対応するSSDコントローラの動作を示す、複数の行を更に含む。したがって、それぞれの図は、経時的に実行される一連のVM動作を示す。図2〜図4の図では、それぞれの4KBのチャンクは、ADR1、ADR2などのその対応する物理アドレスによって特定される。このため、例えば、ADR3チャンクは、そのフラッシュメモリ内の物理アドレスがADR3であるデータチャンクを指す。開示される方法では、SSDコントローラは、フラッシュメモリ34から取得されたページをRAM50内にキャッシュする。
ここで図2を参照する。本実施例では、その物理アドレスがADR1〜ADR4として示される、4つの連続した4KBのチャンクを含む16KBのページを前提とする。第1の動作、すなわちREAD_VM1(ADR3)では、VMは、ADR3チャンクを要求するが、更にSSDコントローラ30に推測的プリフェッチ動作を通知する。SSDコントローラ30は、要求されたチャンクがフラッシュメモリ内に記憶されている16KBのページを読み取ることによって応答し、そのページをRAM50内にキャッシュする。キャッシュされたページはチャンクADR1〜ADR4を含む。SSDコントローラ30はその後、キャッシュされたページからホスト26にADR3チャンクのみを伝送する。
VMは次にREAD_NO_SENSE(ADR1)動作を実行し、この動作では、VMはADR1チャンクを要求し、そのチャンクをキャッシュされたページから読み取るよう通知する。SSDコントローラ30は、キャッシュされたADR1チャンクを読み取り、かつそれを、16KBのページ全体を再読み取りすることなくホスト26に伝送することによって応答する。次に、VM29は同様に、SSDコントローラ30に、キャッシュされたADR2チャンクを読み取らせ、それをホストに伝送させるためのREAD_NO_SENSE(ADR2)動作を実行する。
READ_NO_SENSE(ADR5)動作を実行するときに、VMは、キャッシュされたチャンクADR1〜ADR4の一部ではないADR5チャンクを要求する。その結果、SSDコントローラ30は、VMにREAD_NO_SENSE_MISSエラーイベントを通知することによって応答する。この失敗イベントは、要求されたチャンクがまだキャッシュされておらず、READ_NO_SENSE動作を使用して読み取ることができないことをVMに通知する。
VMがREAD_NO_SENSE(ADR4)動作を使用してADR4チャンクを要求すると、SSDコントローラ30は、キャッシュされたADR4チャンクを読み取り、それをホストに伝送する。この動作によって、VMは全てのキャッシュされたチャンクADR1〜ADR4(必ずしもこの順序ではない)の要求を完了するため、SSDコントローラは更に、キャッシュされたページを解放することによって、他のページをキャッシュするためにRAM50内の同じメモリ空間を使用することを可能にする。
図3は、推測的プリフェッチのための別の方法を説明している。一実施形態では、VMは単一の4KBのチャンクを要求するが、VMは、SSDコントローラ30から、要求されたチャンクが属する16KBのページ全体までを受け入れるよう準備する。図3の実施例では、VM29は、VM動作、すなわち、ADR7チャンクをフェッチするためのREAD_VM_TO_END(ADR7)を発行する。SSDコントローラ30は、4つの連続するチャンクADR6〜ADR9を含むページを読み取ってキャッシュすることによって応答し、要求されたチャンク並びに全ての連続するチャンク(ページの末尾までの読み取り動作)、すなわち、ADR7〜ADR9のみをホストに伝送する。更に、データチャンクと共に、SSDコントローラ30は、伝送されたチャンクの数及びそれらの対応する論理アドレスをVMに伝送する。データチャンクの伝送に続き、SSDコントローラ30は、他のページをキャッシュするために、キャッシュされたページを解放する。ページの末尾まで読み取る機能は、この機能がなければVMによって個々のデータチャンクごとに別個に発行されていたであろう冗長な要求(典型的には、チャンクごとのメモリセンス及び読み取り動作を含む)を不要にし、したがってOSのダイレクトメモリアクセス(DMA)動作をより効率的にする。
図4は、効率的な推測的プリフェッチのための更に別の方法を説明している。この方法は、ページ境界の物理アドレスに合わせて以前に記憶された、データチャンクをフェッチすることを可能にする。図4の実施例では、SSDコントローラ30は最初に、VM29にページサイズ、本実施例では16KBを通知する。VMは、通知されたページサイズが後続のVM動作で使用されることを受け入れる。VM29はその後、ページ境界に合わせて16KBのデータを書き込むために、WRITE_VM_ALINGEDコマンドをSSDコントローラ30に発行する。SSDコントローラ30はWRITE_VM_ALINGEDコマンドを受信し、16KBのデータを、第1のチャンクの物理アドレスが完全なページの物理アドレスと一致するように、連続する4つのチャンク内に記憶する。図4の実施例では、書き込まれる(16KBのデータの)4つのチャンクは、アドレスがADR6であるページ内に記憶される。VMは、ページ境界に合わせて書き込まれた任意のデータの論理アドレスを認識するため、VMは、このデータを後から完全なページとして推測的に読み取ることができる。
後からVMは、ADR6〜ADR9チャンクを記憶するページを要求するために、READ_VM_TO_END(ADR6)動作を実行する。SSDコントローラ30は、対応するページ全体をキャッシュし、4つのADR6〜ADR9チャンクをホストに伝送し、キャッシュされたページを解放することによって、このコマンドに応答する。
いくつかの実施形態では、SSDコントローラは、「ガベージコレクション」(garbage collection、GC)とも呼ばれるブロック圧縮プロセスを適用する。このプロセスでは、SSDコントローラは、有効なデータを、部分的に有効なコピー元ブロックから1つ以上のコピー先ブロックにコピーする。GCは典型的にはブロック又はページ全体をコピーするため、上述のようにページ境界に合わせて書き込まれたデータは、GCプロセスによってコピーされた後でも、その位置合わせを保持する。
図5は、本発明の一実施形態に係る、最初にページ境界に合わせてデータを記憶することによる推測的プリフェッチのための方法を模式的に示すフローチャートである。この方法はSSDコントローラ30によって実行され、SSDコントローラ30が通知ステップ100で、フラッシュメモリ34のページサイズをVM29に通知することによって開始される。図5の実施例では、ページサイズは16KBである。本明細書で説明されるように、VM29は、ページ境界に合わせてデータチャンクを書き込むために、通知されたページサイズを使用し、その結果、このデータの効率的な推測的プリフェッチが可能になる。
コマンド受信ステップ104では、SSDコントローラ30がVMから、WRITE_VM_ALIGNMENTコマンド(上述)を使用して記憶される16KBのデータを受け入れる。位置合わせ記憶ステップ108では、SSDコントローラ30が、フラッシュメモリ34内の対応するページを選択し、選択されたページの境界に合わせて、16KBのデータを含む4つの4KBのチャンクを記憶する。VM29は、物理的なページ境界に合わせて記憶される16KBのデータページの論理アドレスを追跡する。推測的読み取りコマンド受信ステップ112では、SSDコントローラ30が、ステップ108で記憶されたページ全体を推測的に読み取るための要求をVM29から受信する。
ステップ116では、SSDコントローラ30が、要求されたページの論理アドレスを対応する物理アドレスに変換し、ページデータを読み取り、そのページをRAM50内にキャッシュする。ステップ116では、VMは、例えば、READ_VM_TO_END動作(上述)、又はキャッシュされたページ全体をホストに伝送する、専用の他のVM動作を使用してもよい。SSDコントローラはその後、ページ伝送ステップ120で、ホストインタフェース38を介して、16KBのキャッシュされたページをVM29に伝送する。更にステップ120では、SSDコントローラが、同じメモリ空間を再利用することによって他のページをキャッシュすることを可能にするために、RAM50内のキャッシュされたページを解放する。
高速なアプリケーション起動
アプリケーションプログラムは、大量の比較的小さいファイルに頻繁にアクセスし、FS28はこれらのファイルを、アプリケーションがインストールされるときに、フラッシュメモリ34内に記憶する。アプリケーションファイルは、実行可能ファイル、ビットマップファイル、マルチメディアファイルなどを含み得る。いくつかの実施形態では、OS26がアプリケーションを起動するときに、FS28は、アプリケーションのファイルを、実行のためにフラッシュメモリ34内の対応する位置からホストメモリ32にアップロードする。FS28は、複数の対応する読み取りコマンドをSSDコントローラ30に送信することによって、アプリケーションファイルをアップロードする。ユーザがアプリケーションを使用できるようになるまでの遅延が最小限になるように、アプリケーションファイルの起動にかかる時間は短時間であるべきである。
当該技術分野では、アプリケーションの起動時間を短縮するための様々な方法が知られている。例示的な方法は、参照により本明細書に組み込まれる、2011年2月15〜17日に米国サンノゼで開催された、ファイル及び記憶技術に関する第9回USENIX会議の議事録の259〜272ページに記載されている、「FAST:quick application launch on solid−state drives」でYongsooらによって説明されている。
本明細書で説明されるいくつかの実施形態では、FS28は、アプリケーションの起動時間を短縮するために推測的プリフェッチを使用する。例えば、FS28は、上記の図2〜図4で説明されているような方法で推測的プリフェッチを使用してもよい。
一例示的実施形態では、アプリケーションファイルは、フラッシュメモリのうちの1つの物理アドレスの連続する範囲内に、連続的に記憶される。アプリケーションファイルの識別子をOS27から受信すると、FS28は、推測的プリフェッチを無効にした状態で、フラッシュメモリからアプリケーションファイルのそれぞれを別個に読み取ることができる可能性がある。ただし、これはフラッシュメモリ内の冗長な読み取り動作を発生させ、したがって、特に、ファイルのサイズがおよそチャンクサイズ(例えば、4KB)と等しいか又はそれ以下であるときに、起動時間が長くなるおそれがある。
開示される実施形態では、アプリケーションファイルの識別子を提供することに加えて、OS27はFS28に、それらのファイルが共通して1つのアプリケーションプログラムに属することを暗示する。この暗示を受信すると、FS28は自動的に推測的プリフェッチモードに切り替え、このモードでは、FS28は、複数の4KBのチャンクを効率的に読み取るために、図2〜図4に関連して上述したものなどの推測的プリフェッチを使用する。
図6は、本発明の一実施形態に係る、アプリケーションの起動時間を短縮するための方法を模式的に示すフローチャートである。この方法はSSDコントローラ30によって実行され、SSDコントローラが起動開始通知ステップ200で、アプリケーション起動プロセスが開始されたことに関する通知又は暗示をOS27から受信することによって開始される。監視ステップ204では、FS28がアプリケーションファイルを読み取る間に、SSDコントローラ30は、アップロードされたファイルの読み取りデータの論理アドレス及び対応する物理アドレスを監視及び記録する。
起動終了通知ステップ208では、SSDコントローラ30は、FS28がアプリケーションファイルのアップロードを終了したことに関する暗示をOS27から受信し、SSDコントローラ30はそれにしたがって、ステップ204で実行された記録を停止する。SSDコントローラはその後、物理アドレスの連続する範囲を占有するために、デフラグステップ212でアプリケーションファイルを再配置する。ステップ212の後、方法は終了する。連続する物理空間へのアプリケーションファイルのデフラグは、そのアプリケーションの後続の(すなわち、推測的プリフェッチを使用した)起動をより効率的にし、その結果、起動時間がより短くなるため、ユーザエクスペリエンスが改善される。
代替の実施形態では、OS27は、アプリケーション起動を開始すると、アプリケーションファイルの論理アドレスの記録を開始し、アプリケーション起動の終了時に記録を停止するよう、(図6の方法のようにSSDコントローラ30ではなく)FS28に暗示する。そのような実施形態では、起動の終了後、FS28は、専用のデフラグコマンドをSSDコントローラ30に発行する。このデフラグコマンドで、SSDコントローラ30は、アプリケーションファイルの論理アドレスをFS28から受信する。SSDコントローラはその後、アプリケーションファイルを物理アドレスの連続する範囲内に再配置することによって、デフラグを実行する。
上述の方法は例示的な方法であり、代替の実施形態では他の方法が使用されてもよい。例えば、全ての上述の方法では、データチャンク及びページサイズはそれぞれ4KB及び16KBであるが、任意の他の好適なサイズも使用されてもよい。
別の実施例では、典型的にはVM及びFSは同じデータチャンクサイズを共有するが、代替の実施形態では、VM及びFSが異なるサイズの(どちらのサイズもページサイズより小さい)データチャンクをフェッチするように、上述の方法が適用されてもよい。代替的に又は追加として、VM(又はFS)は、異なるプロセス又はアプリケーションに対して異なるチャンクサイズを使用してもよい。
開示される方法は、SSDベースのストレージシステムだけでなく、VM(又はFS)によって欠落データチャンクがフェッチされるたびに、チャンクサイズよりも大きいサイズのページが対応するメモリから取得される、任意のストレージシステムに適用され得る。
本明細書で説明される実施形態は、主に、SSDベースのストレージシステム内のメモリデバイスと通信するホストプロセッサに対応しているが、本明細書で説明される方法及びシステムは、基になる記憶デバイスによって使用される記憶単位よりも小さいチャンク内にデータを記憶するようにホストが構成される任意のシステム内などの他の適用例でも使用され得る。
上述の実施形態は例として挙げられており、本発明は、以上に具体的に図示され説明されたものに限定されないことが理解されるであろう。むしろ、本発明の範囲は、以上に説明した様々な機能の組み合わせ及び部分的組み合わせの両方、並びに当業者であれば前述の説明を読むことによって想到するであろう従来技術に開示されていないそれらの変型及び修正を含む。この参照により本特許出願に組み込まれる文献は、何らかの用語が、これらの組み込まれた文献の中において本明細書内で明示的又は暗示的になされた定義と対立する方法で定義されている範囲において、本明細書内の定義のみが考慮されるべきである点を除き、本願の必須部分であるとみなされるべきである。

Claims (14)

  1. データを記憶する方法であって、
    憶デバイスによって、データ単位サイズを有する第1のデータ単位についての第1の読み取りコマンド受信することと、
    前記第1の読み取りコマンドの受信に応じて、前記第1のデータ単位を含む記憶ページを読み取ることであって、前記記憶ページのサイズが前記データ単位サイズよりも大きい、ことと、
    前記記憶ページをバッファにキャッシュすることと、
    第2のデータ単位についての第2の読み取りコマンドを受信することであって、前記第2の読み取りコマンドが前記バッファから読み取ることを指定する、ことと、
    前記第2の読み取りコマンドの受信に応じて、前記バッファから前記第2のデータ単位を読み取ることと、
    を含む、方法。
  2. 前記第2のデータ単位を読み取ることは、前記バッファ内に前記第2のデータ単位が存在しないことを検出すると、エラーイベントを報告することを含む、請求項に記載の方法。
  3. 前記記憶ページ内に含まれる全てのデータ単位が要求されたと判定することに応じて、前記バッファ内にキャッシュされた前記記憶ページを破棄することを更に含む、請求項に記載の方法。
  4. 前記記憶デバイスによって、前記バッファ内にキャッシュされた前記記憶ページに含まれる所与のデータ単位を読み取る第3の読み取りコマンドを受信することと、前記バッファ内にキャッシュされた前記記憶ページから前記所与のデータ単位及び全ての連続するデータ単位を返すことと、を更に含む、請求項1に記載の方法。
  5. 記記憶ページの前記サイズを報告することを更に含む、請求項1に記載の方法。
  6. 前記記憶デバイスによって、前記データのサイズが前記記憶ページの前記サイズと等しい、前記データを記憶するための書き込みコマンドを受信することと、前記記憶デバイスのページ境界に合わせて前記データを記憶することと、を更に含む、請求項1に記載の方法。
  7. 記憶デバイスであって、
    不揮発性メモリと、
    プロセッサであって
    データ単位サイズを有する第1のデータ単位を読み取る第1の読み取りコマンドを受信し
    前記第1の読み取りコマンドを受信することに応じて前記第1のデータ単位を含む記憶ページを前記不揮発性メモリから読み取り前記記憶ページサイズが前記データ単位サイズよりも大きく
    前記記憶ページをバッファ内にキャッシュし、
    第2のデータ単位についての第2の読み取りコマンドを受信し、前記第2の読み取りコマンドは前記バッファから読み取ることを指定し、
    前記第2の読み取りコマンドを受信することに応じて、前記バッファから前記第2のデータ単位を読み取るように構成される、プロセッサと、
    を備える、記憶デバイス。
  8. 前記プロセッサは、前記第2のデータ単位が前記バッファ以内に記憶されていないことを検出すると、エラーイベントを報告するように更に構成される、請求項に記載の記憶デバイス。
  9. 前記プロセッサは、前記憶ページ内の全てのデータ単位が要求されると、前記バッファ内にキャッシュされた記憶ページを破棄するように更に構成される、請求項に記載の記憶デバイス。
  10. 前記プロセッサは、前記バッファ内にキャッシュされた前記記憶ページに含まれる所与のデータ単位を読み取る第3の読み取りコマンドを受信し、前記所与のデータ単位及び全ての連続するデータ単位を前記バッファ内にキャッシュされた記憶ページから返すように更に構成される、請求項に記載の記憶デバイス。
  11. 前記プロセッサは、前記記憶ページの前記サイズを報告するように更に構成される、請求項に記載の記憶デバイス。
  12. 前記プロセッサは、前記データのサイズが前記記憶ページの前記サイズと等しい、前記データを記憶するための書き込みコマンドを受信し、前記記憶デバイスのページ境界に合わせて前記データを記憶するように更に構成される、請求項に記載の記憶デバイス。
  13. 装置であって、
    オペレーティングシステムを実行するように構成されたホストと、
    記憶デバイスと、
    前記記憶デバイスに発行される複数の読み取りコマンドが、前記オペレーティングシステムによって実行されるアプリケーションの起動に関連付けられていることを示す情報を前記オペレーティングシステムから受信し、
    前記情報の受信に応じて前記複数の前記読み取りコマンドを一括で処理し、
    前記複数の前記読み取りコマンドの実行に応じて、前記記憶デバイス内の物理アドレスの連続する範囲内に、読み取られたデータを再配置するように構成されるプロセッサと、
    を備える、装置。
  14. 前記プロセッサは、推測的プリフェッチを使用して前記複数の前記読み取りコマンドを実行するように更に構成される、請求項13に記載の装置。
JP2016541546A 2014-01-07 2014-12-31 フラッシュメモリ内に記憶されたデータの推測的プリフェッチ Active JP6224253B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/148,910 US9582204B2 (en) 2014-01-07 2014-01-07 Speculative prefetching of data stored in flash memory
US14/148,910 2014-01-07
PCT/US2014/073040 WO2015105721A1 (en) 2014-01-07 2014-12-31 Speculative prefetching of data stored in flash memory

Publications (2)

Publication Number Publication Date
JP2017503266A JP2017503266A (ja) 2017-01-26
JP6224253B2 true JP6224253B2 (ja) 2017-11-01

Family

ID=52395223

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016541546A Active JP6224253B2 (ja) 2014-01-07 2014-12-31 フラッシュメモリ内に記憶されたデータの推測的プリフェッチ

Country Status (6)

Country Link
US (1) US9582204B2 (ja)
JP (1) JP6224253B2 (ja)
KR (1) KR101790913B1 (ja)
CN (1) CN105900069B (ja)
DE (1) DE112014006118B4 (ja)
WO (1) WO2015105721A1 (ja)

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9594687B2 (en) * 2015-04-14 2017-03-14 Google Inc. Virtualization-aware prefetching
KR20170001235A (ko) * 2015-06-26 2017-01-04 에스케이하이닉스 주식회사 메모리 시스템 및 그것의 동작 방법
US20170123796A1 (en) * 2015-10-29 2017-05-04 Intel Corporation Instruction and logic to prefetch information from a persistent memory
JP2017122997A (ja) * 2016-01-06 2017-07-13 富士通株式会社 情報処理装置、演算処理装置の制御方法および演算処理装置の制御プログラム
US10817224B2 (en) * 2016-06-23 2020-10-27 Qualcomm Incorporated Preemptive decompression scheduling for a NAND storage device
CN107329908A (zh) * 2017-07-07 2017-11-07 联想(北京)有限公司 一种数据处理方法和电子设备
CN107479938B (zh) * 2017-09-27 2024-03-29 北京忆芯科技有限公司 电子设备及其启动方法
CN109582490B (zh) * 2017-09-28 2023-12-15 北京忆芯科技有限公司 智能重读命令生成
US11029879B2 (en) * 2018-01-29 2021-06-08 Samsung Electronics Co., Ltd Page size synchronization and page size aware scheduling method for non-volatile memory dual in-line memory module (NVDIMM) over memory channel
US10963394B2 (en) * 2018-04-16 2021-03-30 Samsung Electronics Co., Ltd. System and method for optimizing performance of a solid-state drive using a deep neural network
CN109213448B (zh) * 2018-08-30 2022-04-05 东信和平科技股份有限公司 一种智能卡的擦写数据的方法、装置、设备及存储介质
CN109254733B (zh) * 2018-09-04 2021-10-01 北京百度网讯科技有限公司 用于存储数据的方法、装置和***
KR102518095B1 (ko) 2018-09-12 2023-04-04 삼성전자주식회사 스토리지 장치 및 시스템
US10607712B1 (en) 2018-09-28 2020-03-31 Toshiba Memory Corporation Media error reporting improvements for storage drives
KR20200057473A (ko) * 2018-11-16 2020-05-26 삼성전자주식회사 스토리지 장치 및 이를 포함하는 스토리지 시스템
US11042325B2 (en) 2019-08-05 2021-06-22 International Business Machines Corporation Speculative bank activate dynamic random access memory (DRAM) scheduler
CN110688325B (zh) * 2019-09-05 2021-12-03 苏州浪潮智能科技有限公司 一种固态硬盘的垃圾回收方法、装置、设备及存储介质
US11249913B2 (en) * 2020-03-06 2022-02-15 Macronix International Co., Ltd. Continuous read with multiple read commands
US11314637B2 (en) * 2020-05-29 2022-04-26 Hewlett Packard Enterprise Development Lp System and method for efficient cache coherency protocol processing

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0675853A (ja) * 1992-08-25 1994-03-18 Oki Electric Ind Co Ltd キャッシュメモリ装置
US7031987B2 (en) * 1997-05-30 2006-04-18 Oracle International Corporation Integrating tablespaces with different block sizes
US7143401B2 (en) * 2000-02-17 2006-11-28 Elbrus International Single-chip multiprocessor with cycle-precise program scheduling of parallel execution
ATE293810T1 (de) * 2000-06-27 2005-05-15 Koninkl Philips Electronics Nv Integrierte schaltung mit flash
US20030204675A1 (en) * 2002-04-29 2003-10-30 Dover Lance W. Method and system to retrieve information from a storage device
US7421567B2 (en) * 2004-12-17 2008-09-02 International Business Machines Corporation Using a modified value GPR to enhance lookahead prefetch
JP2007188408A (ja) * 2006-01-16 2007-07-26 Toshiba Corp ストレージ装置及び方法
JP2007293604A (ja) * 2006-04-25 2007-11-08 Toshiba Corp 情報処理装置およびプログラムロード方法
US20080215849A1 (en) * 2007-02-27 2008-09-04 Thomas Scott Hash table operations with improved cache utilization
US9052910B2 (en) * 2007-10-25 2015-06-09 International Business Machines Corporation Efficiency of short loop instruction fetch
TWI375953B (en) * 2008-02-21 2012-11-01 Phison Electronics Corp Data reading method for flash memory, controller and system therof
JP5163220B2 (ja) 2008-03-26 2013-03-13 富士通株式会社 キャッシュ制御装置、情報処理装置
US8429377B2 (en) * 2010-01-08 2013-04-23 International Business Machines Corporation Optimizing TLB entries for mixed page size storage in contiguous memory
US20110238962A1 (en) * 2010-03-23 2011-09-29 International Business Machines Corporation Register Checkpointing for Speculative Modes of Execution in Out-of-Order Processors
US8341382B2 (en) * 2010-09-30 2012-12-25 Nxp B.V. Memory accelerator buffer replacement method and system
US10031850B2 (en) 2011-06-07 2018-07-24 Sandisk Technologies Llc System and method to buffer data
US8856456B2 (en) * 2011-06-09 2014-10-07 Apple Inc. Systems, methods, and devices for cache block coherence

Also Published As

Publication number Publication date
CN105900069A (zh) 2016-08-24
CN105900069B (zh) 2019-09-17
US20150193155A1 (en) 2015-07-09
WO2015105721A1 (en) 2015-07-16
KR20160104710A (ko) 2016-09-05
KR101790913B1 (ko) 2017-10-26
DE112014006118T5 (de) 2016-09-29
JP2017503266A (ja) 2017-01-26
US9582204B2 (en) 2017-02-28
DE112014006118B4 (de) 2021-09-16

Similar Documents

Publication Publication Date Title
JP6224253B2 (ja) フラッシュメモリ内に記憶されたデータの推測的プリフェッチ
US11119940B2 (en) Sequential-write-based partitions in a logical-to-physical table cache
US11055230B2 (en) Logical to physical mapping
CN106354615B (zh) 固态硬盘日志生成方法及其装置
US20180196743A1 (en) Directed sanitization of memory
US11537512B2 (en) Asynchronous power loss recovery for memory devices
US11755491B2 (en) Mapping supporting non-sequential writes at sequentially-written memory devices
WO2012050934A2 (en) Apparatus, system, and method for a direct interface between a memory controller and non-volatile memory using a command protocol
KR102663304B1 (ko) 구역 네임스페이스 디바이스들에서의 판독 처리
US10754785B2 (en) Checkpointing for DRAM-less SSD
KR20220031490A (ko) 서브 블록 모드를 사용한 구역 네임스페이스 제한 완화
JP2023514307A (ja) 順次的にプログラムするメモリサブシステムにおける順次読み出し最適化
US11422945B2 (en) Generating, maintaining, or utilizing a compressed logical-to-physical table based on sequential writes
KR20200019421A (ko) 메모리 시스템 내 대용량 데이터 저장이 가능한 블록에서의 유효 데이터 체크 방법 및 장치
US20220300195A1 (en) Supporting multiple active regions in memory devices
US11573891B2 (en) Memory controller for scheduling commands based on response for receiving write command, storage device including the memory controller, and operating method of the memory controller and the storage device
US11403011B1 (en) Host memory buffer allocation management
US11797198B2 (en) Memory instruction for memory tiers
US11755476B2 (en) Memory controller, storage device including the memory controller, and method of operating the memory controller and the storage device
US11928063B1 (en) Dynamic updates to logical-to-physical address translation table bitmaps
US20240143512A1 (en) Write buffer linking for easy cache reads
KR20220159270A (ko) 스토리지 장치 및 그 동작 방법
KR20230063857A (ko) 스토리지 장치 및 전자 장치
WO2023034535A1 (en) Virtual management unit scheme for two-pass programming in a memory sub-system

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20170428

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170720

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: 20170919

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20171004

R150 Certificate of patent or registration of utility model

Ref document number: 6224253

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250