JP2016515231A - 不揮発性記憶デバイスのためのメモリーのリアドレシング - Google Patents

不揮発性記憶デバイスのためのメモリーのリアドレシング Download PDF

Info

Publication number
JP2016515231A
JP2016515231A JP2015557042A JP2015557042A JP2016515231A JP 2016515231 A JP2016515231 A JP 2016515231A JP 2015557042 A JP2015557042 A JP 2015557042A JP 2015557042 A JP2015557042 A JP 2015557042A JP 2016515231 A JP2016515231 A JP 2016515231A
Authority
JP
Japan
Prior art keywords
file
storage device
memory
volatile storage
physical
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.)
Granted
Application number
JP2015557042A
Other languages
English (en)
Other versions
JP2016515231A5 (ja
JP6355650B2 (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.)
Microsoft Corp
Original Assignee
Microsoft Corp
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 Microsoft Corp filed Critical Microsoft Corp
Publication of JP2016515231A publication Critical patent/JP2016515231A/ja
Publication of JP2016515231A5 publication Critical patent/JP2016515231A5/ja
Application granted granted Critical
Publication of JP6355650B2 publication Critical patent/JP6355650B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • 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/061Improving I/O performance
    • 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/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • 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/0616Improving the reliability of storage systems in relation to life time, e.g. increasing Mean Time Between Failures [MTBF]
    • 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/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • 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/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • 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

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)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Memory System (AREA)

Abstract

不揮発性記憶デバイスにおけるフラグメント化ファイルのメモリーを、連続物理メモリー・アドレスにリアドレシングすることができるが、不揮発性記憶デバイスに格納されたフラグメント化ファイルのファイル・フラグメントの物理位置は、メモリーがリアドレシングされた後も同じままで残る。論理ブロック・アドレシング(LBA)マッピング・テーブルは、リアドレシングされた連続物理メモリー・アドレスに基づいて、更新することができる。【選択図】図1

Description

[0001] 記憶デバイスにおいてファイルが書き込まれそして消去されるに連れて、ときの経過と共にこれらのファイルは断片化し、記憶デバイスの性能が低下するおそれがある。この性能問題を軽減するのに役立てるために、ディスク・ディフラグメンテーションを記憶デバイスにおいて実行することができる。ディスク・ディフラグメンテーションとは、記憶デバイスにおけるファイル・フラグメントを連続位置に移動させることによって、記憶デバイスにおけるファイルのフラグメンテーションを低減する動作を指し、これによって、ファイル・フラグメントの全てを読み込むまたは書き出すために必要とされる、記憶デバイスと中央処理ユニット(CPU)メモリーとの間における入力/出力(I/O)トランザクションの回数を減らす。
[0002] ソリッド・ステート・ドライブ(SSD)のような不揮発性記憶デバイスは、回転磁気および光ドライブのような、従前からのハード・ディスク・ドライブに代わって、またはこれに加えて、増々記憶デバイスとして使用されつつある。従前からのハード・ディスク・ドライブではディフラグメンテーションを有効に使用することができるが、ディフラグメンテーションを不揮発性記憶デバイスで使用すると、問題となる可能性がある。何故なら、これらの不揮発性記憶デバイスは、当該デバイスに対する繰り返し消去動作によって摩耗を被るおそれがあるからである。不揮発性記憶デバイスは、その信頼性が低下する前に消去および書き込みしてもよい回数が制限されているので、不揮発性記憶デバイスのディフラグメンテーションは、ディスク性能と記憶デバイスの寿命との間でトレードオフを行わなければならない。
[0003] この摘要は、詳細な説明において以下で更に説明する概念から選択されたものを、簡略化した形態で紹介するために設けられる。この摘要は、特許請求する主題の主要な特徴や必須の特徴を特定することを意図するのではなく、特許請求する主題の範囲を限定するために使用されることを意図するのでもない。
[0004] 不揮発性記憶デバイスにおいてメモリー・アドレスを配列し直す(rearrange)技法およびツールについて説明する。例えば、データーを記憶デバイスにおけるその物理位置から移動させることなく、メモリー・アドレスをリアドレシングすることができる。記憶デバイスは、オペレーティング・システムには透過的な様態でメモリー・アドレスをリアドレシングすることができる。あるいは、オペレーティング・システムが記憶デバイスに最適化を実行し、 例えば、最適化記憶デバイスのためのマッピング・テーブルを変更する命令を発行することもできる。
[0005] 例えば、不揮発性記憶デバイスにおいてフラグメント化ファイルのためにメモリーのリアドレシングを実行する方法を提供することができる。この方法は、フラグメント化ファイルのファイル・フラグメントが複数の不連続物理アドレスに跨がって広がる、フラグメント化ファイルのメモリーをリアドレシングするコマンドを、 不揮発性記憶デバイスに送るステップと、フラグメント化ファイルに対するメモリーがリアドレシングされ連続物理アドレスになったという応答を、不揮発性記憶デバイスから受けるステップとを含む。ファイル・フラグメントの物理位置は、メモリーがリアドレシングされた後も同じまま残る。
[0006] 他の例として、不揮発性記憶デバイスは、本明細書において説明する動作を実行するように構成することができる。例えば、不揮発性記憶デバイスは、フラグメント化ファイルのメモリーをリアドレシングし、フラグメント化ファイルのファイル・フラグメントの各々に対して、連続物理メモリー・アドレスをファイル・フラグメントに割り当てる命令を受けることができる。ファイル・フラグメントの物理位置は、メモリーがリアドレシングされた後も同じまま残る。
[0007] 更に他の例として、本明細書において説明する動作をシステムに実行させるコンピューター実行可能命令を格納するコンピューター読み取り可能記憶媒体を提供することができる。例えば、コンピューター読み取り可能記憶媒体は、フラグメント化ファイルに対するメモリーが連続物理アドレスにリアドレシングされたという応答を不揮発性記憶デバイスから受けることができ、リアドレシングされた連続物理アドレスに基づいて、仮想マッピング・テーブルを更新することができる。ファイル・フラグメントの物理位置は、メモリーがリアドレシングされた後も、同じまま残る。オペレーティング・システムのための論理ブロック・アドレシング(LBA)マッピング・テーブルは、リアドレシングされた物理アドレスに基づいて更新されず、LBAマッピング・テーブルは仮想マッピング・テーブルと通信する。
[0008] 本明細書において説明するように、種々の他の特徴および利点も、所望通りに、本技術に組み込むことができる。
図1は、動作環境例のブロック図である。 図2は、メモリーのリアドレシングを実行する方法例のフローチャートである。 図3は、メモリーのリアドレシングを実行する方法のフローチャートである。 図4aは、物理アドレスをリアドレシングする例を示す図である。 図4bは、物理アドレスをリアドレシングする例を示す図である。 図4cは、物理アドレスをリアドレシングする例を示す図である。 図5aは、メモリーの物理位置を移動させることなく、物理アドレスをリアドレシングする例を示す図である。 図5bは、メモリーの物理位置を移動させることなく、物理アドレスをリアドレシングする例を示す図である。 図6aは、LBAマッピング・テーブルおよび物理アドレスのマッピングの例を示すテーブルである。 図6bは、LBAマッピング・テーブルおよび物理アドレスのマッピングの例を示すテーブルである。 図7は、説明する実施形態を実現することができる計算システム例の図である。 図8は、本明細書において説明する技術と共に使用することができる移動体デバイス例である。
例1−全体像の例
[0017] 以下の説明は、不揮発性記憶デバイスにおいて物理メモリー・アドレスをリアドレシングするための技法およびソリューションを対象とする。例えば、フラグメント化ファイルのメモリーの物理アドレスは、記憶デバイスにおけるその物理メモリー位置からメモリーを移動させることなく、リアドレシングすることができる。
[0018] メモリー・アドレスをリアドレシングすることによって、フラグメント化ファイルのファイル・フラグメントを連続メモリー・アドレスにリアドレシングすることができ、一層効率的なファイル動作(例えば、ファイルの引き出し)を可能にする。例えば、ファイルのファイル・フラグメントが連続メモリー・アドレスに配置されると、オペレーティング・システムは、ファイルを引き出すために、1回の要求を行えばよく、または複数の要求をパックすることができると考えられる。一方、ファイルが不連続メモリー・アドレスに配置されると、オペレーティング・システムはファイルを引き出すために複数回の要求を記憶デバイスに対して行わなければならないおそれがある。
[0019] 不揮発性記憶デバイスのディスク・ディフラグメンテーションは、同様の効果を得ることが可能である。記憶デバイスをディフラグメントすることによって、ディフラグメンテーションの後にはファイル・フラグメントが連続物理メモリー位置に配置されるように、ファイル・フラグメントは記憶デバイスの実際の物理メモリー位置間で移動させられる。しかしながら、ディフラグメンテーションは、SSDのような不揮発性記憶デバイスの寿命を短くするおそれがある。何故なら、ディフラグメンテーション動作毎に、記憶デバイス内でファイル・フラグメントを移動させるために複数回の消去および書き込み動作を必要とし、記憶デバイスにおける摩耗が増加するからである。摩耗が増えるという問題は、書き込み増幅(write amplification)として当業界において知られている現象による単なるデーターの消去および書き込みよりも大きい。書き込み増幅は、メモリーに再度書き込む前に消去しなければならないというシナリオを説明する。通例、データーは、例えば、サイズが4〜8キロバイトのページ・サイズ単位で書き込まれるが、一方消去されるブロック(消去ブロック)は、通例、それよりも遙かに大きなサイズである(例えば、128キロバイト、または高密度記憶デバイスでは、数MBという場合もある)。したがって、例えば、512バイトのデーターを書き込む場合であっても、データーを書き込むまたは移動するときは、この書き込みの結果、それよりも遙かに大きなブロックのデーターを移動させ消去しなければならないというおそれがある。尚、これらのドライブをディフラグメントすると、根底にある関わりを知らないと、記憶デバイスが信頼性高く動作することができる時間を短縮する可能性があること、そして本明細書において説明する実施形態は、周期的にフラグメンテーションを除去しつつも、記憶デバイスが信頼性高く動作できる時間を延長することができることは認められてしかるべきである。
[0020] 回転磁気および光ドライブでのディフラグメンテーションは、ファイル・フラグメントが物理的にデバイスの新たな隣接位置に移動され、I/Oパイプラインにおいて最適化を達成することを必要とする。この最適化は、読み取りおよび書き込みヘッドが他のファイル・フラグメントの物理的近傍にあるときに行われる。本明細書において説明する実施形態は、オペレーティング・システムが、コンテンツが格納されているアドレス可能位置を変更することによって、実際にコンテンツを新たな物理的隣接位置にコピーすることなく、どのようにして不揮発性記憶デバイスを利用してI/Oパターンを最適化するかについて示す。不揮発性記憶デバイスは、コンテンツをアドレス可能位置に格納する。アドレス可能位置は、関連コンテンツが格納されているばらばらの(disparate)位置の参照アドレスを論理的に隣接するように変更することによって、最適化することができる。更に、本明細書において説明する実施形態は、記憶デバイスにおける早すぎる摩耗という悪影響を受けることなく、ディフラグメンテーションと同様のI/O性能に関する利点を提供し、電力の浪費を回避し、写真を保存するまたはムービーを再生するというようなエンド・ユーザーの作業の代わりに、大量の記憶システムのコンテンツを再配列することに関連するエンド・ユーザーの影響を回避する。
例2−不揮発性記憶デバイスの例
[0021] 本明細書において使用する場合、不揮発性記憶デバイスとは、電源を入れる必要なく、その内容を保持する任意の半導体ベースの記憶デバイスを指す。例えば、不揮発性記憶デバイスは、ソリッド・ステート・ドライブ、USBフラッシュ・ドライブ、チップ上埋め込みメモリー、相変化メモリー・デバイス、または任意の他のタイプの不揮発性半導体ベース・ストレージとすることができる。また、本明細書において説明する実施形態は、ランダム・アクセス・メモリー(RAM)のように、順序付けされた情報がフラグメンテーションのために分散させられる可能性がある任意のシナリオにおいても、本明細書において説明するメカニズムを使用して、ブロックまたはページ・リアドレシングによってブロックを連続レイアウトに並び替えるために、実際にデーターを異なる記憶ページにコピーする必要なく、使用することができる。
[0022] 本明細書において使用する場合、不揮発性メモリーとは、半導体ベースのストレージを指し、したがって、磁気記憶デバイス(例えば、ハード・ディスク・ドライブ)や光記憶デバイス(例えば、CDまたはDVD媒体)を含まない。
例3−物理メモリーのリアドレシング
[0023] 磁気または光記憶デバイスとは異なり、不揮発性記憶デバイスはデーターを線形に読み取らない。例えば、磁気記憶デバイスでは、読み取りおよび書き込みヘッドは、プラッタ上の位置に移動し、プラッタが回転すると、そのプラッタから情報を読み取る。磁気記憶デバイスがプラッタ上の他の位置においてデーターを読み取りたい場合、読み取りおよび書き込みヘッドは新たな位置に移動しなければならない。磁気記憶デバイスの物理アドレスは、プラッタ(1つまたは複数)上の位置に基づいて配列される。
[0024] 一方、不揮発性記憶デバイスは、読み取りおよび書き込みヘッドを使用せず、代わりに、個々のトランジスタの状態を判定することによって情報を読み出すことができる。トランジスタに電圧が流されているので、電流が二進データーとして検出される。この動作は、多くの異なるトランジスタにおいて並列して実行することができる。これらのデバイスには、物理読み取り/書き込みヘッドを特定の位置に移動させることに伴うレイテンシが生じないが、これらが性能上の利点を顕在化させるのは、オペレーティング・システムおよびアプリケーションが、多くの小さいトランザクションを使用するときよりも少ないが大きなアクセスをしてデーターを引き出すまたは格納するときである。例えば、性能および電力消費の観点から、1つの連続ファイル読み取り要求にマッピングする1MBのチャンクを読み出す方が、各々512バイトのアクセスを2000回行って同じファイル・ペイロードを引き出すよりも良い。本明細書において説明する実施形態を採用するシステムは、連続ブロックを解放する代わりに、ばらばらの1組のブロックにデーターをダンプする(dumping)ことによって、高い書き込み速度を提供する(deliver)ことができる。何故なら、データーは、あたかもそれが実際に物理的に隣接するアドレス可能ブロックに配置されたかのように、アドレシングされることになるからである。
[0025] しかしながら、不揮発性記憶デバイスを使用する計算デバイス、および記憶デバイス自体は、通常、不揮発性記憶デバイスを磁気記憶デバイスと同様に扱う。即ち、線形に読み出されなければならないかのように扱う。フラッシュ変換レイヤ(FTL: flash translation layer)は、データーが特定の物理位置にあるように見せることを可能にし、FTLは、不揮発性記憶デバイスにおいて物理メモリー・アドレスの物理位置に対するマッピングを追跡する。つまり、不揮発性記憶デバイスは、線形に読み取られるように見せることができるように、物理アドレスをトランジスタ位置に割り当てる。
[0026] しかしながら、記憶デバイスにおける特定のトランジスタの物理アドレスおよび物理位置には共通のマッピング方式がない。即ち、物理アドレスは、記憶デバイスにおける任意の位置にマッピングすることができ、近隣の物理アドレスは、近隣の物理位置にマッピングする必要がなく、代わりに各半導体記憶デバイスの製造業者が、それら自身の方式を考え出して物理メモリー・アドレスを記憶デバイスに割り当てる。例えば、ある製造業者は、記憶デバイスにおいて物理メモリー・アドレスをハード・コード化する場合があり、一方他の製造業者は、例えば、摩耗平準化のために、動的にメモリー・アドレスを割り当てる場合もある。
例4−動作環境例
[0027] 本明細書における例のいずれにおいても、メモリー・アドレスをリアドレシングするための動作環境100を設けることができる。図1は、動作環境例100を示す図である。動作環境例100は、ディフラグメンテーション・アプリケーション120およびオペレーティング・システム130を含む計算デバイス110を含む。例えば、計算デバイス110は、移動体電話機またはタブレット・コンピューターのような、移動体計算デバイスでもよい。
[0028] オペレーティング・システム130は、不揮発性記憶デバイス160と通信することができる。オペレーティング・システム130は、ファイル・システム140およびデバイス・ドライバー150を含む。ファイル・システム140は、不揮発性記憶デバイス160におけるファイルの位置を維持し、不揮発性記憶デバイス160へのアクセスを管理する。例えば、ファイル・システム140は、NTFS(新技術ファイル・システム)、即ち、Microsoft Corporation(マイクロソフト社)によってそのWindows(登録商標)オペレーティング・システムのために開発されたファイル・システムであってもよい。デバイス・ドライバー150は、不揮発性記憶デバイスを制御し、オペレーティング・システム130と不揮発性記憶デバイス160との間における通信を処理する。
[0029] 図1において、計算デバイス110および不揮発性記憶デバイス160は、例示の目的上、別のコンポーネントとして示されている。しかしながら、計算デバイス110および不揮発性記憶デバイス160は同じデバイスであってもよいことは言うまでもない。
[0030] 図1において、オペレーティング・システム130は、ファイル・システム140と、不揮発性記憶デバイス160と通信するためのデバイス・ドライバー150とを含む。しかしながら、オペレーティング・システム130は、不揮発性記憶デバイス160と通信する他のコンポーネントを含んでもよい。一実施形態では、メモリーをリアドレシングするコマンドは、これら他のオペレーティング・システムのコンポーネントの内1つから来ても良い。
[0031] 一例では、計算デバイス110はディフラグメンテーション・アプリケーション120を含むことができる。ディフラグメンテーション・アプリケーション120は、図1においてオペレーティング・システム130の外部にあるように示されているが、ディフラグメンテーション・アプリケーション120がファイル・システム140内に統合される、またはデバイス・ドライバー150に含まれるように、変更されてもよいことは認められてしかるべきである。更に、ある実施形態では、ディフラグメンテーションが不揮発性記憶デバイス160自体に統合されてもよい。
[0032] ディフラグメンテーション・アプリケーション120が計算デバイス110において実行されるとき、記憶デバイスのリアドレシングを遂行するために、メモリー・アドレスをリアドレシングすることを不揮発性記憶デバイス160に命令することができる。ディフラグメンテーション・アプリケーション120は、ファイル・システム140内に格納されている各ファイルがどのように、デバイス・ドライバー150を介して、不揮発性記憶デバイス160における記憶アドレスにマッピングされているのか検査することができる。ディフラグメンテーション・アプリケーション120が、ファイルが構成可能な数または予め定められた数よりも多いフラグメント(1、2、20等)にまたがって格納されていると判定したとき、リアドレシング手法を呼び出すことができる。他の実施形態では、ディフラグメンテーション・アプリケーション120は、頻繁にアクセスされるファイルというような判断基準、あるいはファイル・サイズ、システム・ファイル、ユーザー・ファイル等のような、任意の数の他の発見的方法を使用することができる。ディフラグメンテーション・アプリケーション120は、ファイル・システム140およびデバイス・ドライバー150を介して、フラグメントされたアドレス位置を含むコマンドを記憶デバイス160に発行し、新たな非フラグメント化(またはフラグメント化が少ない)アドレス位置(1つまたは複数)を含む応答を受けることができる。例えば、あるファイルが15個の不連続記憶アドレスに跨がって分散されていることが発見された場合、リアドレシングの後、ファイル・システムは、それを15個の連続記憶アドレス位置として見る。次いで、ファイル・システム140は、ファイルに対して読み取りまたは書き込みを行うためにシーケンシャル・アクセスを実行することができる。これは、各フラグメントを引き出して組み立てるための15回の別個のトランザクションよりも遙かに速い。本明細書において説明する実施形態は、記憶デバイス160が、利用可能な空いているストレージにファイル・フラグメントをコピーすることなく、代わりに記憶ブロックを連続アドレス可能範囲に単にリアドレシングして、デバイス・ドライバー150およびファイル・システム140が一層効率的な転送モードで動作するようにするには、リアドレシングをどのように遂行するのかについて説明する。他の実施形態では、ディフラグメンテーション・アプリケーション120は、ファイル・システム140およびデバイス・ドライバー150を介して、供給されるファイル記憶アドレスのリストを使用してファイルを連続にすることを、単に記憶デバイス160に命令することができる。コマンドが成功応答を受けた場合、ファイル・システムは、新たなアドレス位置(1つまたは複数)を使用すべきことを知り、一方誤り応答を受けた場合、後の時点においてリアドレシングを再度試すことができる。
[0033] 代わりに、ディフラグメンテーション・アプリケーション120は不揮発性記憶デバイス160内に存在してもよく、オペレーティング・システム130は、不揮発性記憶デバイス160に、ディフラグメンテーション・アプリケーション120を周期的に実行するように命令することができ、不揮発性記憶デバイス160は、代わりに、記憶デバイス160自体においてメモリーのリアドレシングを実行することができる。この例では、記憶デバイス160には、ファイル・システム140によって、ファイルのリスト、およびこれらが格納されているフラグメント位置というような情報が提供される。不揮発性記憶デバイス160がリアドレシングを完了した後、ファイル・コンテンツの新たな位置を記述する情報を含む応答することができ、デバイス・ドライバー150およびファイル・システム140に対する変更を更新する。次いで、ファイル・システム140は、ファイル・ブロックの読み出しまたは書き込みを行うときは、リアドレシングされた位置において、ファイル・フラグメントに対する新たなアドレスを使用する。
[0034] 一例では、デバイス・ドライバー150がディフラグメンテーション・アプリケーション120を内蔵してもよく、またはデバイス・ドライバー外部のディフラグメンテーション・アプリケーション120が、不揮発性記憶デバイス160をディフラグメントまたはリアドレスするルーチンをコールしてもよい。あるいは、デバイス・ドライバー150が、それ自体のディフラグメンテーション・アプリケーション120を有し、リアドレシング動作を開始し、記憶デバイス160を計算デバイス110に通信可能に結合するバスを介して、記憶位置をリアドレシングするために使用される特殊プロトコル・コマンドを使用して通信してもよい。
例5−リアドレシングを実行する方法
[0035] 図2は、不揮発性記憶デバイス160においてフラグメント化ファイルに対してメモリーのリアドレシングを実行する方法例200のフローチャートである。
[0036] 210において、フラグメント化ファイルに対してメモリーをリアドレシングするコマンドを不揮発性記憶デバイス160に送る。
[0037] リアドレシング・コマンド210の目標は、不揮発性記憶デバイス160には本質的にランダムI/Oアクセス・パターンに見えるいくつかの非連続アドレス記憶ブロックに跨がって分散されたファイルを、もっと少ない(例えば、1回)シーケンシャル・アクセスに変換することである。本明細書において説明する実施形態は、物理的にデーターを新たな記憶位置にコピーする必要なく、記憶位置のリアドレシングを遂行する。物理的にデーターを新たな記憶位置にコピーすると、その結果、リアドレシングよりも多くの電力を使い果たし、ストレージの寿命に悪影響を及ぼし、ファイルをディフラグメントする目的でストレージ・コンテンツをオペレーティング・システムにそして再度ストレージ部分にコピーするのに遙かに長大なI/Oサイクルを招く。これは、エンド・ユーザーが実行したいアプリケーションまたは通常のオペレーティング・システムの挙動に関連するタスクの邪魔になる可能性がある。
[0038] 220において、フラグメント化ファイルに対するメモリーがリアドレシングされたという応答を、不揮発性記憶デバイス160から受ける。
[0039] 230において、ファイル・システム140は、ファイル・フラグメントがアドレスされている場所を保持するその内部レコードを更新する。ある実施形態では、ファイル・システム140は、210においてコマンドが送られるときにそのレコードを更新し、220において成功応答を受けない場合、リアドレシング・トランザクションをロール・バックすることができる。他の実施形態では、ファイル・システム140は、応答を受けるまで、応答220において戻される新たなアドレス・ブロックに基づいて、対応するリアドレシング変更をコミットするまたは行うのを待つこともできる。例えば、応答220は、コマンド210においてリアドレシングされることを要求されたブロックに対して新たなマッピングを含むことができ、これらのブロックに対して最終的に合意したアドレシングは、ファイル・システム140が230において更新されたときに完了する。
[0040] 一例では、ファイル・システム140が更新された後、計算デバイス110は、リアドレシングされたメモリーを反映する動作を実行することもできる。
[0041] 一例では、計算デバイスは、連続物理アドレスを含む、リアドレシングされたメモリーを使用して、不揮発性記憶デバイス160に他のコマンドを送ることができる。例えば、計算デバイスは、連続物理アドレスにおいてファイルを引き出すために、1つの要求または複数の要求の1群を送ることができる。ファイルは連続物理アドレスに配置されているので、計算デバイスにとって動作数が減少する。不揮発性記憶デバイス160によって使用される内部キャッシング・メカニズムは、一層効率的に利用することができる。何故なら、リアドレシング後の格納要求は、データーに対する連続シーケンシャル要求として実施することができるからである。小規模のランダムな読み出しおよび書き込みに対して、大規模のシーケンシャルな読み出しおよび書き込みに固有な性能上の利点は、SDカード、eMMCデバイス、MMC、およびSSDデバイスのような、最新の記憶デバイスの性能ベンチマークによって、詳しく文書化されている。
[0042] 図3は、不揮発性記憶デバイス160においてフラグメント化ファイルに対するメモリーのリアドレシングを実行する方法例300のフローチャートである。図3に示すステップは、図2に示すそれらに対応する。310において、フラグメント化ファイルのメモリーをリアドレシングするコマンドを受ける。
[0043] 320において、フラグメント化ファイルのメモリーに、連続物理メモリー・アドレスを割り当てる。即ち、以前に複数の不連続物理メモリー・アドレスに配置されたファイル・フラグメントの各々を、連続物理メモリー・アドレスにリアドレシングする。
[0044] 325において、不揮発性記憶デバイス160は、リアドレシング変更を処理するエラーを戻すこともあり、システムは340に進み、リアドレシング変更を行わず、リアドレシングを中断する。リアドレシングが成功した場合、システムは330に進む。不揮発性記憶デバイス160がコマンドを完了することができない場合、オペレーティング・システム130は、340によって示すように、ファイル・システム140がリアドレシングしない一部として、エラーを受けることができる。
[0045] 330において、不揮発性記憶デバイス160は、オペレーティング・システム130(デバイス・ドライバー150およびファイル・システム140を含む)に、 ファイル・フラグメントに対する新たなアドレス位置を含む応答を送ることができる。ある実施形態では、不揮発性記憶デバイス160は単にコマンドを完了するだけであるので、計算デバイス110は、オペレーティング・システム130に応答するためにステップ330を実行する必要がない場合もある。何故なら、不揮発性記憶デバイス160が単にコマンドを完了するからである。他の実施形態では、応答は、ブロックがリアドレシングされたという成功応答だけあればよい場合もある。
[0046] ある実施形態では、リアドレシング・ロジックをオペレーティング・システム130の一部として含むことができ、全てのブロック、およびリアドレシングによってディフラグメントさせるために変更することができる利用可能なブロックを追跡する。他の実施形態では、オペレーティング・システムは、不揮発性記憶デバイス160がブロックを管理することを要求し、非常にフラグメント化されていることをそれが知っているファイルを、リアドレシングするように求めるだけにすることができ、新たなブロック・マッピングを含む応答を期待する。
[0047] 最後に、ある実施形態では、リアドレシングはファイルに対して元の開始ブロック・アドレスを保持し、リアドレシングは、全ての後続の記憶ブロックを開始アドレスの後に連続的にアドレスさせるので、これらがシーケンシャル・アドレスであるように見える。しかしながら、後続のブロックは実際には、他のファイルに属するとして計算することができるアドレスと比較して、一意のアドレスを有していないこともある。これは、後に図4cにおいて詳細に、2つのファイルを含むブロックが外部観察者には重複ブロックに見えるときに、疎なアドレシング(sparse addressing)を組み込むリアドレシング・ソリューションとして説明する。
[0048] 図1に関する実現例(example implementation)では、不揮発性記憶デバイス160は、フラグメント化ファイルのメモリーがリアドレシングされたという応答330を送ることができるが、応答を返送することは必要ではない。例えば、不揮発性記憶デバイス160は、フラグメント化ファイルをリアドレシングするコマンドだけを受ける場合もあり、オペレーティング・システム130、ファイル・システム140、デバイス・ドライバー150、またはディフラグメンテーション・アプリケーション120が、不揮発性記憶デバイス160が正常に動作していれば、首尾良く完了したと想定する。
[0049] 例えば、図1を参照すると、メモリーをリアドレシングするコマンドは、ファイル・システム140、デバイス・ドライバー150、または不揮発性記憶デバイス160から来ることができる。実施形態では、計算デバイス110内には、不揮発性記憶デバイス160にコマンドを供給する他のオペレーティング・システム・コンポーネントがあってもよい。他の実施形態では、コマンドを不揮発性記憶デバイス160に供給する別のコンポーネントが、オペレーティング・システム130と不揮発性メモリーとの間に存在してもよい。ディフラグメンテーション・アプリケーション120は、計算デバイス110、オペレーティング・システム130、ファイル・システム140、およびデバイス・ドライバー150の内1つ以上に存在してもよい。ディフラグメンテーションをどこから始めるかの選択は、システムの設計者に委ねられ、設計者は、どのように種々の販売業者がリアドレシング・ソリューションの品質およびコストを実現するかに基づいて、どのアプリケーション・モデルを配備するか選択することができる。
[0050] 図1に関する実現例では、メモリーをリアドレシングするコマンドは、不揮発性記憶デバイス160によって受け取られる。しかしながら、このコマンドは、どのフラグメント化ファイルをリアドレシングする必要があるか指定しない場合もある。例えば、このコマンドは、不揮発性記憶デバイス160へのディフラグメンテーション要求の一部であってもよい。この場合、不揮発性記憶デバイス160は、ファイルのフラグメンテーションの度合いに基づいて、リアドレシングする可能性が最も高い候補ファイルを決定し、このファイルをリアドレシングするために選択することができる。しかしながら、リアドレシングすべきフラグメント化ファイルは、最もフラグメント化されたファイルである必要はない。例えば、不揮発性記憶デバイス160は、オペレーティング・システムによるファイルのアクセス頻度、ファイルの物理メモリー・アドレスの位置、または任意の他の判断基準に基づいて、最も可能性が高い候補を決定してもよい。不揮発性記憶デバイス160には、フラグメントがある全てのファイルのリストを提供することができる。このリストは、ファイル・システム140によって提供されるか、あるいはデバイス・ドライバー150、またはオペレーティング・システム130、またはディフラグメンテーション・アプリケーション120によって追跡される。
[0051] 不揮発性記憶デバイス160は、本明細書において開示する方法の内任意のものを使用して、リアドレシングを実行することができるが、これらの方法に限定されるのではない。不揮発性記憶デバイスにおけるフラグメント化ファイルに対してメモリーをリアドレシングする任意の方法を実行することができる。
例6−仮想マッピングの例
[0052] 図4aおよび図4bは、物理メモリー・アドレスをリアドレシングする例を示す。この例では、フラグメント化ファイルのファイル・フラグメントは、複数の不連続物理アドレスに跨がって広がる。例えば、フラグメント化ファイルがメモリー・アドレス1、3、4、および7に位置すると仮定する。一旦記憶デバイスが、フラグメント化ファイルを連続物理メモリー・アドレスにリアドレシングするコマンドを受けたなら、記憶デバイスは、どの物理メモリー・アドレスにこのファイルをリアドレシングすればよいか決定する。この例では、ファイルは、メモリー・アドレス1から開始してリアドレシングされるが、代わりに、任意の物理メモリー・アドレスにおいて開始してリアドレシングされてもよい。
[0053] この例では、古いメモリー・アドレス3が新たなメモリー・アドレス2にリアドレシングされる。しかしながら、古いメモリー・アドレス2は他のデーターを含んでもよい。つまり、メモリー・アドレスが交換されたのであり、即ち、古いメモリー・アドレス3は新たなメモリー・アドレス2にリアドレシングされ、そして古いメモリー・アドレス2は新たなメモリー・アドレス3にリアドレシングされる。これは、フラグメント化ファイルの残りのメモリー・アドレスの全てに対して繰り返される。最終結果では、古いメモリー・アドレス3、4、および7が新たなメモリー・アドレス2、3、および4にリアドレシングされ、フラグメント化ファイルのメモリーを連続物理メモリー・アドレスにおいてアドレスすることが可能になり、古いメモリー・アドレス2は新たなメモリー・アドレス7にリアドレシングされる。ファイル・システム140によって管理されるクラスタまたはセクタ・サイズが記憶デバイス160におけるブロック・サイズに対して、密接な1:1関係にあるというシナリオでは、この実現例は、図4aによって示されるものと非常に類似する。尚、ファイル・システム140によって管理されるクラスタまたはセクタ・サイズは、ディフラグメンテーションを実行するために実際にデーターをコピーすることなく、既に実施されているディフラグメンテーション・ソリューションと比較してデーターのコピーおよび書き込み回数を減らして、記憶位置をリアドレシングする基本原理に対して、1:1の関係である必要はないことは認められてしかるべきである。
[0054] しかしながら、物理メモリー・アドレスは、必ずしも交換される必要はなく、代わりに、使用されていないメモリー・アドレスにリアドレシングすることができる。例えば、図4bにおいて、古いメモリー・アドレス2を利用可能なメモリー・アドレス100(例えば、空である利用可能なメモリー・アドレス)にリアドレシングするのでもよい。次いで、フラグメント化ファイルの他のメモリー・アドレスを連続物理アドレスにリアドレシングすることができる。
[0055] 図4cは、ファイルに対する元の一意の開始ブロック・アドレスを保持するリアドレシング・メカニズムの代替実施形態について説明する。この実施形態では、リアドレシングは、全ての後続の記憶ブロックを、開始アドレスの後に連続してアドレスさせ、これらが、ファイル・システム140またはオペレーティング・システム130にはシーケンシャル・アクセスに見えるようにする。しかしながら、2番目以降のブロックは、実際には、他のファイルに属するとして計算することができるアドレスと比較して、一意のアドレスを有さないかもしれない(例えば、2番目以降のブロックは、共有可能な物理メモリー・アドレスを有することができる)。ファイルは、一意の開始アドレスおよび特定のブロック長を使用しなければ引き出されないので、そしてそれは常にシーケンシャル・アクセスであるので、最初の一意のブロック・アドレスに続くコンテンツのストリームは、明確にアドレスされると考えられる。例えば、図4cにおいて、1番上にある1組のブロックは、リアドレシング前の状態を示し、ブロック1において開始し、合計3ブロックの長さにわたってブロック3および5において追加のフラグメントを含むファイル "a.txt"を示す(それぞれ、フラグメントa.txt1、a.txt2、a.txt3によって示されるように)。また、本システムは、ブロック2において開始し、ブロック4および6においてフラグメントとして格納されたコンテンツを有するファイル"b.txt"も有することができる(それぞれ、b.txt1, b.txt2, b.txt3 で示されるように)。ファイル"a.txt"に対するリアドレシング・コマンドは、ファイル・システム140によって送られ、ブロック1、3、5におけるファイルがシーケンシャルになるために、即ち、ブロック1において開始し3ブロックの長さになるために、リアドレシングを命令することができる。このリアドレシングは、ブロック1におけるコンテンツを不変のまま残すが、ブロック3をブロック2としてリアドレシングし(ブロック1の読み取りに続くときのみ)、ブロック1および2の読み取りに続くときにのみ、ブロック5をブロック3としてリアドレシングする。したがって、リアドレシングの後、ファイル "a.txt"は、外部ソースからシーケンシャルにアクセスされるとき(図4cの下半分に示すように)、ブロック1、2、および3に格納される。不揮発性記憶デバイス160は、ファイル・システム140がブロック2または3を1ブロックの長さだけ読み取ろうとした場合、エラーを報告する。何故なら、システムはブロック1を読み取り、その後1回のシーケンシャル・アクセスの一部として任意にブロック2および3を読み取ることのみによって、ファイルを引き出さなければならないことを知っているからである。コンテンツが、ブロック1において開始し長さを3とするコマンドを使用してシーケンシャルにアドレスされるのであれば、一意にファイル・システム140およびストレージ・ドライバー150に供給される。また、ファイル・システム140は、図4cに示したのと同じメカニズムを使用してブロック2、3、4になることを想定して、ブロック2において開始しブロック4および6を含むファイル"b.txt"をリアドレシングすることを命令する。ファイル・システム140のような外部観察者は、"a.txt"および"b.txt"の開始アドレスおよび長さが双方共ブロック2および3におけるコンテンツを共有し、したがって、このコンテンツは同じ記憶ブロックを占有していることを推定する(compute)ことができる。しかしながら、これが当てはまらない場合もある。何故なら、不揮発性記憶デバイス160は、"a.txt"および"b.txt"へのアクセスは常にシーケンシャル・アクセスであり一意のアドレスにて開始するので、このストレージ部分は、ブロック1にて開始する3ブロック長のアクセスを受けたときには、ファイル"a.txt"のみにマッピングされた一意のコンテンツを送り出し、ブロック2において開始する3ブロック長の要求を受けたときは、ファイル"b.txt"のコンテンツのみを引き出すと判断するからである。不揮発性記憶デバイス160は、ブロック・アドレス1または2を他のいずれのファイルにも供給せず、ある実施形態では、ファイル・システム140は、開始アドレスを使用してファイルにアクセスすることしか知らず、ファイル内を捜して重複しているブロックにアクセスすることは知らない。また、ある実施形態では、ファイル・システム140は、ブロック3、4、5、または6の開始アドレスを有する開始記憶ブロックを受けない。何故なら、これらのブロックは実際にファイル"a.txt"および"b.txt"によって使用されているからである。代替実施形態では、ブロック3、4、5、または6の開始アドレスを供給してもよい。しかしながら、ファイル・システム140に供給される全アドレス・ブロックは、不揮発性記憶デバイス160の記憶容量を超えることはない。更に、図4cは、3の利用可能な開始ブロック・アドレスを供給するために、空きブロック7がリアドレシングされることを示す。ファイル・システム140がアドレス3への1ブロック書き込みとして新たなファイル "c.txt"を格納しようとすると仮定すると、アドレス2において開始する3ブロック・アクセスを読み取るときにファイル"b.txt"のコンテンツを受けることを予想し、アドレス3において開始する1ブロック読み取りを発行ときに、"c.txt"コンテンツを受けることを予想する。ある実施形態では、このタイプのリアドレシングは、シーケンシャルに読み取られるファイルに対してのみ実行される。ある実施形態では、ファイル・システム140は、このようにリアドレシングされるこれらの種類のファイルをシークしないように属性を設定することができる。
[0056] 尚、図4a〜図4cの例は全て、ファイル・システム140によって追跡されるファイル・フラグメントに対する離散記憶単位(即ち、クラスタ)と、記憶ブロック(不揮発性記憶デバイス160によって供給される離散記憶単位、即ち、ブロックまたはセクタ)との間における1:1のマッピングを示す。しかしながら、本明細書において説明する実施形態では、ファイル・フラグメントが記憶ブロックの副部分(sub portion)を占有すること、そして各クラスタに格納されたファイル・フラグメントが数個のアドレス可能な記憶ブロックに跨がってマッピングすることは、容易に示すことができる。即ち、ファイル・フラグメント(クラスタ)および記憶ブロック(セクタ)の比率は、1:1、2:1、1:2、1:16、16:1等とすることもできる。リアドレシングの原理は、実際には、部分的ページを移動させる必要があるとき、リアドレシング処理の間に行われるデーターコピーを最少にして、一意のアドレスを記憶のために供給することを保証するように拡張される。そして、ファイル"a.txt"および"b.txt"によって消費される記憶空間は、リアドレシングの前後で一定のままであり、不揮発性記憶デバイス160の6ブロックを消費する。
[0057] 物理メモリー・アドレスのリアドレシングは(例えば、図4aおよび図4bを参照して先に説明したような)、不揮発性記憶デバイス160においてメモリーの物理位置を移動させることなく実行される。図5aおよび図5bは、図4aおよび図4bにおいて説明したリアドレシング動作が、メモリーの物理位置を移動させることなく、どのように実行されるかを示す図である。直前の例をあげると、古いメモリー・アドレス1、3、4、および7が、新たなメモリー・アドレス1、2、3、および4にリアドレシングされる。しかしながら、メモリー・デバイスにおけるフラグメント化ファイルのファイル・フラグメントの実際の物理位置は移動させられない。この例を参照して、図5aは、リアドレシング前におけるメモリー・アドレス1、3、4、および7を示す。図5aに示すように、不揮発性記憶デバイス160は、不揮発性記憶デバイス160内部の特定の物理位置におけるメモリー・アドレス1、3、4、および7に対応するファイル・フラグメントを格納する。これは、簡略化された形式で、510において "LOC1" 〜 "LOC4"で示されている。図5bは、メモリー・リアドレシングが実行された後におけるメモリー・アドレスを示す。図5bに示すように、メモリー・アドレスが連続になる(アドレス1、2、3、4)ように、リアドレシングが実行された。また、図5bに示すように、リアドレシングが実行されたが、不揮発性記憶デバイス160におけるメモリーの物理位置は変化していない。このように、例えば、古いメモリー・アドレス3が新たなメモリー・アドレス2にリアドレシングされたが、メモリーの物理位置は変化していない。
[0058] ある実施形態では、このアドレス変換を実行しリマッピングをサポートするソフトウェアおよび/またはハードウェアは、不揮発性記憶デバイス160の内部に格納することができる。他の実施形態では、リマッピングは、ファイル・システム140、ストレージ・ドライバー150、および不揮発性記憶デバイス160に跨がる分散型ソリューションとなることができる。例えば、ファイル・システム140は、論理ブロック対物理ブロックのマッピングを追跡し続け、不揮発性記憶デバイス160にリマッピング・ソリューションを提出することもでき、不揮発性記憶デバイス160はこの変更を適用する。他の実施形態では、ストレージ・ドライバーは、ファイル・システム140が記憶デバイス160における記憶ブロックにマッピングしたことが分かっているアドレス間で変換を実行することができ、したがって、ファイル・システム140がリマッピングを知ることなく、記憶デバイスのリマッピングを行う。
例7−マッピング・テーブルの例
[0059] 図6aおよび図6bは、LBAマッピング・テーブル、および図4aおよび図4bにおけるフラグメント化ファイルの物理アドレスの例を示すテーブルである。例えば、LBAマッピング・テーブルは、論理アドレスを不揮発性記憶デバイス160における物理アドレスに割り当てるために、オペレーティング・システム130によって使用することができる。直前の例では、物理アドレスがリアドレシングされたので、LBAマッピング表は、リアドレシングされたメモリーに基づいて更新される。つまり、例えば、図6aにおいて、LBA0000は物理アドレス1を指し示し、LBA0001は物理アドレス3を指し示し、LBA0002は物理アドレス4を指し示し、LBA0003は物理アドレス7を指し示す。リアドレシングの後、図6bに示すように、LBA0000は物理アドレス1を指し示し、LBA0001は物理アドレス2を指し示し、LBA0002は物理アドレス3を指し示し、LBA0003は物理アドレス4を指し示す。
[0060] 図6aおよび図6bに示すように、LBAマッピング・テーブルは、メモリーのリアドレシングを反映するように更新することができる。しかしながら、LBAマッピング・テーブルは、必ずしも更新される必要はない。例えば、仮想マッピング・テーブルが、LBAマッピング・テーブルと記憶デバイスとの間に存在してもよい。仮想マッピング・テーブルは、メモリーのリアドレシングの新たな情報で更新することができる。LBAマッピング・テーブルがアドレスを捜すとき、更新された仮想マッピング・テーブルが、リアドレシングされた物理アドレスを指し示すことができ、LBAマッピング・テーブルは、このようなリアドレシングが行われたことに気がつかない。この場合、LBAマッピング・テーブルはリアドレシングされた物理メモリー・アドレスについての情報を含む仮想マッピング・テーブルと通信する。
例8−計算環境例
[0061] 図7は、以上で説明した改革を実現することができる、適した計算環境700を一般化した例を示す。計算環境700は、使用範囲や機能に関して限定を示唆する意図は全くない。何故なら、本改革は、多様な汎用または特殊目的計算システムにおいても実現できるからである。例えば、計算環境700は、種々の計算デバイス(例えば、デスクトップ・コンピューター、ラップトップ・コンピューター、サーバー・コンピューター、タブレット・コンピューター、メディア・プレーヤー、ゲーミング・システム、移動体デバイス等)の内任意のものにすることができる。
[0062] 図7を参照すると、計算環境700は、1つ以上の処理ユニット710、715、およびメモリー720、725を含む。図7では、この基本構成730は、破線内に含まれる。処理ユニット710、715は、コンピューター実行命令を実行する。処理ユニットは、汎用中央処理ユニット(CPU)、特定用途集積回路(ASIC)におけるプロセッサー、または任意の他のタイプのプロセッサーとすることができる。マルチ処理システムでは、多数の処理ユニットが、処理パワーを増大するために、コンピューター実行可能命令を実行する。例えば、図7は、中央処理ユニット710、更にグラフィクス処理ユニットまたは共処理ユニット715を示す。有形メモリー720、725は、揮発性メモリー(例えば、レジスタ、キャッシュ、RAM)、不揮発性メモリー(例えば、ROM、EEPROM、フラッシュ・メモリー等)、または処理ユニット(1つまたは複数)によってアクセス可能な、これら2つの何らかの組み合わせであってもよい。メモリー720、725は、処理ユニット(1つまたは複数)による実行に適しており、本明細書において説明した1つ以上の革新を実現するコンピューター実行可能命令の形態としたソフトウェア780を格納する。
[0063] 計算システムは、追加の機構を有してもよい。例えば、計算環境700は、ストレージ740、1つ以上の入力デバイス750、1つ以上の出力デバイス760、および1つ以上の通信接続770を含む。バス、コントローラー、またはネットワークのような相互接続メカニズム(図示せず)は、計算環境700のコンポーネントを相互接続する。通例、オペレーティング・システム・ソフトウェア(図示せず)は、計算環境700において実行する他のソフトウェアのために動作環境を提供し、計算環境700のコンポーネントのアクティビティを調整する。
[0064] 有形ストレージ740は、リムーバブルまたは非リムーバブルでもよく、磁気ディスク、磁気テープまたはカセット、CD−ROM、DVD、あるいは情報を一時的でない方法で格納するために使用することができ、更に計算環境700内でアクセスすることができる任意の他の媒体を含む。ストレージ740は、本明細書において説明した1つ以上の革新を実現するソフトウェア780の命令を格納する。
[0065] 入力デバイス(1つまたは複数)750は、キーボード、マウス、ペン、またはトラックボールのようなタッチ入力デバイス、音声入力デバイス、走査デバイス、あるいは入力を計算環境700に供給する他のデバイスであってもよい。ビデオ・エンコーディング用では、入力デバイス(1つまたは複数)750は、カメラ、ビデオ・カード、TVチューナ・カード、あるいはアナログまたはディジタル形態でビデオ入力を受け入れる同様のデバイス、あるいはビデオ・サンプルを計算環境700に読み込むCD−ROMまたはCD−RWであってもよい。出力デバイス(1つまたは複数)760は、ディスプレイ、プリンター、スピーカー、CD−ライター、または計算環境700からの出力を供給する他のデバイスであってもよい。
[0066] 通信接続(1つまたは複数)770は、通信媒体または他の計算エンティティを通じた通信を可能にする。通信媒体は、コンピューター実行可能命令、オーディオまたはビデオ入力または出力、あるいは変調データー信号における他のデーターというような情報を伝える。変調データー信号とは、当該信号において情報をエンコードするように、その特性の内1つ以上が設定されたまたは変化させられた信号である。一例として、そして限定ではなく、通信媒体は、電気、光、RF、または他の搬送波を使用することができる。
[0067] 本革新は、計算システムにおけるターゲットの実プロセッサーまたは仮想プロセッサー上で実行されるプログラム・モジュールに含まれるような、コンピューター実行可能命令という一般的なコンテキストで説明することができる。一般に、プログラム・モジュールは、ルーチン、プログラム、ライブラリ、オブジェクト、クラス、コンポーネント、データー構造等を含み、特定のタスクを実行するか、または特定の抽象データー型を実装する。プログラム・モジュールの機能は、種々の実施形態において所望通りに、プログラム・モジュール間で組み合わせてもまたは分割してもよい。プログラム・モジュールのコンピューター実行可能命令は、ローカルまたは分散型計算システム内部で実行することもできる。
[0068] 本明細書では、「システム」および「デバイス」という用語は相互交換可能に使用される。そうでないことを文脈が明らかに示すのではなければ、いずれの用語も、計算システムまたは計算デバイスのタイプに対して何の限定も強制しない。一般に、計算システムまたは計算デバイスは、ローカルまたは分散型であることができ、特殊目的ハードウェアおよび/または汎用ハードウェアと、本明細書において説明した機能を実現するソフトウェアとの任意の組み合わせを含むことができる。
例9−移動体デバイスの例
[0069] 図8は、全体的に802で示す、種々の任意のハードウェアおよびソフトウェア・コンポーネントを含む移動体デバイスの一例800を示すシステム図である。一般に、移動体デバイス内にあるコンポーネント802は、他のいずれのコンポーネントとも通信することができるが、図示を容易にするために、全ての接続は示されていない。移動体デバイスは、種々の計算デバイス(例えば、セル・フォン、スマート・フォン、ハンドヘルド・コンピューター、パーソナル・ディジタル・アシスタント(PDA)等)のいずれでも可能であり、セルラまたは衛星ネットワーク、あるいは他のネットワークのような、1つ以上の移動体通信ネットワーク804とのワイヤレス双方向通信を可能にすることができる。
[0070] 図示した移動体デバイス800は、信号コード化、データー処理、入力/出力処理、電力制御、および/または他の機能というようなタスクを実行するために、コントローラーまたはプロセッサー810(例えば、信号プロセッサー、マイクロプロセッサー、ASIC、または他の制御および処理論理回路)を含むことができる。オペレーティング・システム812は、コンポーネント802の割り当ておよび使用、ならびにアプリケーション814、815の内1つ以上のサポートを制御することができる。アプリケーション814は、一般的な移動体計算アプリケーション(例えば、電子メール・アプリケーション、カレンダー、連絡先マネージャー、ウェブ・ブラウザー、メッセージング・アプリケーション)、または任意の他の計算アプリケーションを含むことができる。アプリケーション・ストアにアクセスする機能813は、アプリケーション814を取得し更新するためにも使用することができる。
[0071] 図示した移動体デバイス800は、メモリー820を含むことができる。メモリー820は、非リムーバブル・メモリー822および/またはリムーバブル・メモリー824を含むことができる。非リムーバブル・メモリー822は、RAM、ROM、フラッシュ・メモリー、ハード・ディスク、または他の周知のメモリー記憶技術を含むことができる。リムーバブル・メモリー824は、フラッシュ・メモリーまたはGSM通信システムでは周知であるサブスクライバー識別モジュール(SIM)カード、あるいは「スマート・カード」のような他の周知のメモリー記憶技術を含むことができる。メモリー820は、オペレーティング・システム812およびアプリケーション814を実行するためのデーターおよび/またはコードを格納するために使用することができる。データーの例は、ウェブ・ページ、テキスト、画像、音響ファイル、ビデオ・データー、あるいは1つ以上の有線またはワイヤレス・ネットワークを介して1つ以上のネットワーク・サーバーまたは他のデバイスにおよび/またはから送られるその他のデーター集合を含むことができる。メモリー820は、国際移動体サブスクライバー識別(IMSI)のようなサブスクライバー識別子、および国際移動体機器識別子(IMEI)のような機器識別子を格納するために使用することができる。このような識別子は、ユーザーおよび機器を識別するために、ネットワーク・サーバーに送信することができる。
[0072] 移動体デバイス800は、タッチスクリーン832、マイクロフォン834、カメラ836、物理キーボード838および/またはトラックボールのような1つ以上の入力デバイス830、ならびにスピーカー852およびディスプレイ854のような1つ以上の出力デバイス850をサポートすることができる。他の可能な出力デバイス(図示せず)は、圧電型出力デバイスまたは他の触覚型出力デバイスを含むことができる。あるデバイスは、1つよりも多い入力/出力機能を供与することができる。例えば、タッチスクリーン832およびディスプレイ854を組み合わせて1つの入力/出力デバイスにすることができる。
[0073] 入力デバイス830は、自然ユーザー・インターフェース(NUI)を含むことができる。NUIは、ユーザーが「自然な」方法でデバイスと対話処理することを可能とし、マウス、キーボード、リモコン等のような入力デバイスによって強制される人工的な制約から解放することができる、あらゆるインターフェース技術として定義することができる。NUI方法の例は、音声認識(speech recognition)、タッチおよびスタイラス認識、画面上および画面近傍双方におけるジェスチャー認識、エア・ジェスチャー(air gesture)、頭部および視線追尾、音声(voice)および発話(speech)、視覚、タッチ、ジェスチャー、ならびに機械インテリジェンスを拠り所とするものを含む。NUIの他の例は、加速度計/ジャイロスコープを使用する動きジェスチャー(motion gesture)検出、顔認識、3Dディスプレイ、頭部、視線および凝視追尾、没入型拡張現実および仮想現実システムを含み、これらの全ては、電界検知電極(EEGおよび関係する方法)を使用して脳活動を検知する技術だけでなく、一層自然なインターフェースを提供する。このように、具体的な一例では、オペレーティング・システム812またはアプリケーション814は、音声認識ソフトウェアを、ユーザーに音声コマンドによってデバイス800を動作させる音声ユーザー・インターフェースの一部として含むことができる。更に、デバイス800は、ゲーミング・アプリケーションに入力を供給するためにジェスチャーを検出し解釈するというような、ユーザーの空間ジェスチャーによってユーザーの対話処理を可能にする入力デバイスおよびソフトウェアも含むことができる。
[0074] ワイヤレス・モデム860は、アンテナ(図示せず)に結合することができ、プロセッサー810と外部デバイスとの間における双方向通信をサポートすることができる。これは当技術分野では良く理解されている。モデム860は包括的に示され、移動体通信ネットワーク804と通信するためのセルラ・モデム、および/または他の無線系モデム(例えば、Bluetooth864またはWi−Fi862)を含むことができる。ワイヤレス・モデム860は、通例、1つのセルラ・ネットワーク内、セルラ・ネットワーク間、または移動体デバイスと公衆電話交換網(PSTN)との間におけるデーターおよび音声通信のためのGSM(登録商標)ネットワークのような、1つ以上のセルラ・ネットワークとの通信のために構成される。
[0075] 更に、移動体デバイスは、少なくとも1つの入力/出力ポート880、電源882、汎地球測位システム(GPS)受信機のような衛星ナビゲーション・システム受信機884、加速度計886、および/または物理コネクター890も含むことができる。物理コネクター890は、USBポート、IEEE1394(Fire Wire)ポート、および/またはRS−232ポートとすることができる。図示したコンポーネント802は、必須ではなく、全てを含むのでもない。何故なら、いずれのコンポーネントでも削除することができ、他のコンポーネントを追加することができるからである。
例10−実現例
[0076] 開示した方法の一部の動作は、都合のよい提示のために、特定の連続順序で説明したが、この説明のやり方は、以下に明記される特定の文言によって特定の順序付けが要求されない限り、再配列を含むことは理解されてしかるべきである。例えば、順次説明した動作は、場合によっては、配列し直しても、または同時に実行されてもよい。更に、簡略さのために、添付図面は、開示した方法を他の方法と併せて使用することができる種々のやり方を示さない場合もある。
[0077] 開示した方法はいずれも、1つ以上のコンピューター読み取り可能記憶媒体上に格納され、計算デバイス(例えば、スマート・フォンまたは計算ハードウェアを含む他の移動体デバイスを含む、任意の入手可能なコンピューター)上で実行されるコンピューター実行可能命令として実現することができる。コンピューター読み取り可能記憶媒体は、計算環境内においてアクセスすることができる任意の入手可能な有形媒体である(例えば、1つ以上の光媒体ディスクのような非一時的コンピューター読み取り可能媒体、揮発性メモリー・コンポーネント(DRAMまたはSRAMのような)、または不揮発性メモリー・コンポーネント(フラッシュ・メモリーまたはハード・ドライブのような))。一例として、そして図7を参照すると、コンピューター読み取り可能記憶媒体は、メモリー720および725、ならびにストレージ740を含む。一例として、そして図8を参照すると、コンピューター読み取り可能記憶媒体は、メモリー820、822、および824を含む。コンピューター読み取り可能記憶媒体という用語は、信号および搬送波のような通信接続(例えば、770、860、862、および864)を含まない。
[0078] 開示した技法を実現するためのコンピューター実行可能命令、および開示した実施形態の実現の間に作成および使用されるデーターはいずれも、1つ以上のコンピューター読み取り可能媒体上に格納することができる。コンピューター実行可能命令は、例えば、専用ソフトウェア・アプリケーション、あるいはウェブ・ブラウザーまたは他のソフトウェア・アプリケーション(リモート計算アプリケーション等)によってアクセスまたはダウンロードされる、ソフトウェア・アプリケーションの一部であることができる。このようなソフトウェアは、例えば、1つのローカル・コンピューター(例えば、任意の適した市販のコンピューター)上で、または1つ以上のネットワーク・コンピューターを使用するネットワーク環境において(例えば、インターネット、ワイド・エリア・ネットワーク、ローカル・エリア・ネットワーク、クライアント−サーバー・ネットワーク(クラウド計算ネットワーク等)、または他のこのようなネットワークを介して)、実行することができる。
[0079] 明確さのために、ソフトウェア・ベースの実施態様からある種の選択された態様だけについて説明した。当技術分野では周知である他の詳細は省略した。例えば、開示した技術は、いずれの特定のコンピューター言語にもプログラムにも限定されない。例えば、開示した技術は、C++、Java(登録商標)、Perl、JavaScript(登録商標)、Adobe Flash、または任意の他の適したプログラミング言語で書かれたソフトウェアによって実現することができる。同様に、開示した技術は、いずれの特定のコンピューターにもハードウェアのタイプにも限定されない。適したコンピューターおよびハードウェアのある種の詳細は、周知であり、本開示において詳細に明記される必要はない。
[0080] また、本明細書において説明した機能はいずれも、ソフトウェアの代わりに、少なくとも部分的に、1つ以上のハードウェア論理コンポーネントによって実行できることも、良く理解されてしかるべきである。例えば、限定ではなく、使用することができるハードウェア論理コンポーネントの代表的なタイプは、フィールド・プログラマブル・ゲート・アレイ(FPGA)、特定プログラム集積回路(ASIC)、特定プログラム標準製品(ASSP)、チップ上システム・システム(SOC)(System-on-a-Chip System)、複合プログラマブル論理デバイス(CPLD)等を含む。
[0081] 更に、ソフトウェア・ベースの実施形態(例えば、開示した方法の内任意のものをコンピューターに実行させるためのコンピューター実行可能命令を含む)はいずれも、適した通信手段を介して、アップロードすること、ダウンロードすること、または離れてアクセスすることができる。このような適した通信手段は、例えば、インターネット、ワールド・ワイド・ウェブ、イントラネット、ソフトウェア・アプリケーション、ケーブル(光ファイバ・ケーブルを含む)、磁気通信、電磁通信(RF、マイクロ波、および赤外線通信を含む)、電子通信、または他のこのような通信手段を含む。
[0082] 開示した方法、装置、およびシステムは、決して限定するように解釈してはならない。代わりに、本開示は、単独での、そして互いとの種々のコンビネーションおよびサブコンビネーションにおける、種々の開示した実施形態の全ての新規で非自明な特徴および態様を対象とする。開示した方法、装置、およびシステムは、いずれの特定の態様や特徴、その組み合わせにも限定されず、開示した実施形態は、いずれの1つ以上の特定の利点が得られることも、問題が解決されることも必要としない。
代替
[0083] 任意の例からの技術は、他の例の任意の1つ以上において説明した技術と組み合わせることができる。開示した技術の原理を適用することができる多くの可能な実施形態があることに鑑み、例示した実施形態は、開示した技術の例に過ぎず、開示した技術の範囲を限定するように捕らえてはならないことは、認識されてしかるべきである。逆に、開示した技術の範囲は、以下の請求項によって定められることとする。したがって、これらの請求項の範囲内に該当する全てを、本発明として特許請求する。

Claims (10)

  1. 不揮発性記憶デバイスにおいてフラグメント化ファイルに対してメモリーのリアドレシングを実行するために、少なくとも部分的に計算デバイスによって実行される方法であって、
    前記計算デバイスによって、前記フラグメント化ファイルのメモリーをリアドレシングするためにコマンドを前記不揮発性記憶デバイスに送るステップであって、前記フラグメント化ファイルのファイル・フラグメントが、複数の不連続物理アドレスに跨がって広がり、前記不揮発性記憶デバイス内の複数の物理位置に格納される、ステップと、
    前記計算デバイスによって、前記フラグメント化ファイルのメモリーがリアドレシングされたという応答を前記不揮発性記憶デバイスから受けるステップであって、前記メモリーが連続物理アドレスにリアドレシングされた、ステップと、
    を含み、
    前記ファイル・フラグメントの前記複数の物理位置が、前記フラグメント化ファイルのメモリーがリアドレシングされた後も同じままで残る、方法。
  2. 不揮発性記憶デバイスであって、
    処理ユニットと、
    不揮発性メモリーと、
    を含み、
    前記不揮発性記憶デバイスが、フラグメント化ファイルに対してメモリーをリアドレシングする動作を実行するように構成され、前記動作が、
    前記フラグメント化ファイルのメモリーをリアドレシングするためにコマンドを受ける動作であって、前記フラグメント化ファイルのファイル・フラグメントが、複数の不連続物理アドレスに跨がって広がり、前記不揮発性記憶デバイス内の複数の物理位置に格納される、動作と、
    前記ファイル・フラグメントの各々に対して、連続物理メモリー・アドレスを前記ファイル・フラグメントに割り当てる動作と、
    を含み、
    前記ファイル・フラグメントの前記複数の物理位置が、前記フラグメント化ファイルのメモリーがリアドレシングされた後も、同じままで残る、不揮発性記憶デバイス。
  3. 請求項2記載の不揮発性記憶デバイスにおいて、前記不揮発性記憶デバイスが、ソリッド・ステート・ドライブである、不揮発性記憶デバイス。
  4. 請求項2記載の不揮発性記憶デバイスにおいて、前記不揮発性記憶デバイスが、相変化メモリー・デバイスである、不揮発性記憶デバイス。
  5. 請求項2記載の不揮発性記憶デバイスにおいて、前記ファイル・フラグメントの各々に対して、前記ファイル・フラグメントに割り当てられようとしている物理メモリー・アドレスに他のデーターが位置する場合、新たなメモリー・アドレスを前記他のデーターに割り当てる、不揮発性記憶デバイス。
  6. 請求項5記載の不揮発性記憶デバイスにおいて、新たなメモリー・アドレスを前記他のデーターに割り当てる前記動作が、前記他のデーターの物理メモリー・アドレスを、前記ファイル・フラグメントのメモリー・アドレスと交換する動作を含む、不揮発性記憶デバイス。
  7. 請求項5記載の不揮発性記憶デバイスにおいて、新たなメモリー・アドレスを前記他のデーターに割り当てる前記動作が、未使用メモリー・アドレスを前記他のデーターに割り当てる動作を含む、不揮発性記憶デバイス。
  8. 請求項2記載の不揮発性記憶デバイスにおいて、前記連続物理メモリー・アドレスを前記ファイル・フラグメントに割り当てる動作が、
    前記フラグメント化ファイルの開始ブロックに対して、一意の物理メモリー・アドレスを割り当てる動作と、
    前記フラグメント化ファイルの1つ以上の後続ブロックに対して、共有可能な物理メモリー・アドレスを割り当てる動作と、
    を含む、不揮発性記憶デバイス。
  9. 請求項2記載の不揮発性記憶デバイスにおいて、前記フラグメント化ファイルのメモリーをリアドレシングするコマンドを受ける動作が、
    フラグメンテーションの程度に基づいて、リアドレシングする可能性が最も高い候補ファイルを判定する動作と、
    前記最も可能性が高い候補ファイルを、前記フラグメント化ファイルとして選択する動作と、
    を含む、不揮発性記憶デバイス。
  10. フラグメント化ファイルに対してメモリーをリアドレシングする動作を計算デバイスに実行させるコンピューター実行可能命令を格納するコンピューター読み取り可能記憶媒体であって、前記動作が、
    前記フラグメント化ファイルのメモリーがリアドレシングされたという応答を不揮発性記憶デバイスから受ける動作であって、前記メモリーが連続物理アドレスにリアドレシングされた、動作と、
    前記リアドレシングされた連続物理アドレスに基づいて、仮想マッピング・テーブルを更新する動作と、
    を含み、
    前記フラグメント化ファイルのファイル・フラグメントの物理位置が、前記フラグメント化ファイルのメモリーがリアドレシングされた後も同じままで残り、
    オペレーティング・システム用の論理ブロック・アドレシング(LBA)マッピング・テーブルが、前記リアドレシングされた連続物理アドレスに基づいて更新されず、
    前記LBAマッピング・テーブルが、前記仮想マッピング・テーブルと通信する、コンピューター読み取り可能記憶媒体。
JP2015557042A 2013-02-08 2014-02-06 不揮発性記憶デバイスのためのメモリーのリアドレシング Active JP6355650B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/763,491 2013-02-08
US13/763,491 US20140229657A1 (en) 2013-02-08 2013-02-08 Readdressing memory for non-volatile storage devices
PCT/US2014/014971 WO2014124064A1 (en) 2013-02-08 2014-02-06 Readdressing memory for non-volatile storage devices

Publications (3)

Publication Number Publication Date
JP2016515231A true JP2016515231A (ja) 2016-05-26
JP2016515231A5 JP2016515231A5 (ja) 2017-03-09
JP6355650B2 JP6355650B2 (ja) 2018-07-11

Family

ID=50231513

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015557042A Active JP6355650B2 (ja) 2013-02-08 2014-02-06 不揮発性記憶デバイスのためのメモリーのリアドレシング

Country Status (7)

Country Link
US (1) US20140229657A1 (ja)
EP (1) EP2954400A1 (ja)
JP (1) JP6355650B2 (ja)
KR (1) KR20150115924A (ja)
CN (1) CN105190526B (ja)
TW (1) TWI607306B (ja)
WO (1) WO2014124064A1 (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7293458B1 (ja) 2021-12-21 2023-06-19 ウェスタン デジタル テクノロジーズ インコーポレーテッド ストレージフラグメンテーションを定量化し性能低下を予測するための記憶システム及び方法
US11809747B2 (en) 2021-12-21 2023-11-07 Western Digital Technologies, Inc. Storage system and method for optimizing write-amplification factor, endurance, and latency during a defragmentation operation
US11847343B2 (en) 2021-12-22 2023-12-19 Western Digital Technologies, Inc. Storage system and method for non-blocking coherent re-writes

Families Citing this family (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8977799B2 (en) * 2011-09-26 2015-03-10 Lsi Corporation Storage caching/tiering acceleration through staggered asymmetric caching
KR20140099737A (ko) * 2013-02-04 2014-08-13 삼성전자주식회사 존-기반 조각모음 방법 및 그것을 이용한 유저 장치
JP6642427B2 (ja) * 2014-06-30 2020-02-05 ソニー株式会社 情報処理装置および方法
DE102014224278A1 (de) * 2014-11-27 2016-06-02 Bundesdruckerei Gmbh Verfahren zum Nachladen von Software auf eine Chipkarte durch einen Nachladeautomaten
US20170337212A1 (en) * 2015-01-13 2017-11-23 Hitachi Data Systems Engineering UK Limited Computer program product, method, apparatus and data storage system for managing defragmentation in file systems
US9760147B2 (en) 2016-01-22 2017-09-12 Microsoft Technology Licensing, Llc Power control for use of volatile memory as non-volatile memory
US9746895B2 (en) * 2016-01-22 2017-08-29 Microsoft Technology Licensing, Llc Use of volatile memory as non-volatile memory
US10235079B2 (en) 2016-02-03 2019-03-19 Toshiba Memory Corporation Cooperative physical defragmentation by a file system and a storage device
CN105892938A (zh) * 2016-03-28 2016-08-24 乐视控股(北京)有限公司 一种磁盘缓存系统的优化方法及系统
US10185657B2 (en) * 2016-04-13 2019-01-22 Nanjing University Method and system for optimizing deterministic garbage collection in NAND flash storage systems
US20180074970A1 (en) * 2016-09-09 2018-03-15 Sap Se Cache-Efficient Fragmentation of Data Structures
US10579516B2 (en) 2017-03-13 2020-03-03 Qualcomm Incorporated Systems and methods for providing power-efficient file system operation to a non-volatile block memory
US10324628B2 (en) * 2017-04-19 2019-06-18 Veritas Technologies Llc Systems and methods for reducing data fragmentation
KR20200022179A (ko) * 2018-08-22 2020-03-03 에스케이하이닉스 주식회사 데이터 처리 시스템 및 데이터 처리 시스템의 동작 방법
KR20200022118A (ko) * 2018-08-22 2020-03-03 에스케이하이닉스 주식회사 데이터 저장 장치 및 그 동작 방법
CN110245119B (zh) * 2018-11-02 2023-01-31 浙江大华技术股份有限公司 一种文件整理方法及存储系统
US10922022B2 (en) * 2019-03-13 2021-02-16 Samsung Electronics Co., Ltd. Method and system for managing LBA overlap checking in NVMe based SSDs
KR20210129370A (ko) * 2020-04-20 2021-10-28 삼성전자주식회사 메모리 모듈 및 적층형 메모리 장치
CN114356224B (zh) * 2021-12-15 2024-04-19 广州致存科技有限责任公司 文件地址优化方法、终端、服务器及计算机可读存储介质
US11954348B2 (en) * 2022-04-08 2024-04-09 Netapp, Inc. Combining data block I/O and checksum block I/O into a single I/O operation during processing by a storage stack
US20240176501A1 (en) * 2022-11-29 2024-05-30 Western Digital Technologies, Inc. Data Storage Device and Method for Swap Defragmentation

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005267240A (ja) * 2004-03-18 2005-09-29 Hitachi Global Storage Technologies Netherlands Bv デフラグメントを行う方法及び記憶装置
US20100312983A1 (en) * 2009-06-09 2010-12-09 Seagate Technology Llc Defragmentation of solid state memory
US20110238946A1 (en) * 2010-03-24 2011-09-29 International Business Machines Corporation Data Reorganization through Hardware-Supported Intermediate Addresses

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5873124A (en) * 1997-02-06 1999-02-16 Microsoft Corporation Virtual memory scratch pages
CN100442393C (zh) * 1999-10-21 2008-12-10 松下电器产业株式会社 半导体存储卡的访问装置、初始化方法和半导体存储卡
US8051115B2 (en) * 2004-09-08 2011-11-01 Koby Biller Measuring fragmentation on direct access storage devices and defragmentation thereof
US7774514B2 (en) * 2005-05-16 2010-08-10 Infortrend Technology, Inc. Method of transmitting data between storage virtualization controllers and storage virtualization controller designed to implement the method
TWI499906B (zh) * 2008-12-08 2015-09-11 Apacer Technology Inc Memory reorganization method of storage device, computer storage medium, computer program product, reorganization method
US20110055471A1 (en) * 2009-08-28 2011-03-03 Jonathan Thatcher Apparatus, system, and method for improved data deduplication
US20120079229A1 (en) * 2010-09-28 2012-03-29 Craig Jensen Data storage optimization for a virtual platform
US8943296B2 (en) * 2011-04-28 2015-01-27 Vmware, Inc. Virtual address mapping using rule based aliasing to achieve fine grained page translation
US8612719B2 (en) * 2011-07-21 2013-12-17 Stec, Inc. Methods for optimizing data movement in solid state devices
US9229948B2 (en) * 2012-11-30 2016-01-05 Oracle International Corporation Self-governed contention-aware approach to scheduling file defragmentation
US20140189211A1 (en) * 2012-12-31 2014-07-03 Sandisk Enterprise Ip Llc Remapping Blocks in a Storage Device
US9021187B2 (en) * 2013-01-29 2015-04-28 Sandisk Technologies Inc. Logical block address remapping
US8966207B1 (en) * 2014-08-15 2015-02-24 Storagecraft Technology Corporation Virtual defragmentation of a storage

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005267240A (ja) * 2004-03-18 2005-09-29 Hitachi Global Storage Technologies Netherlands Bv デフラグメントを行う方法及び記憶装置
US20100312983A1 (en) * 2009-06-09 2010-12-09 Seagate Technology Llc Defragmentation of solid state memory
US20110238946A1 (en) * 2010-03-24 2011-09-29 International Business Machines Corporation Data Reorganization through Hardware-Supported Intermediate Addresses

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7293458B1 (ja) 2021-12-21 2023-06-19 ウェスタン デジタル テクノロジーズ インコーポレーテッド ストレージフラグメンテーションを定量化し性能低下を予測するための記憶システム及び方法
JP2023092425A (ja) * 2021-12-21 2023-07-03 ウェスタン デジタル テクノロジーズ インコーポレーテッド ストレージフラグメンテーションを定量化し性能低下を予測するための記憶システム及び方法
US11809747B2 (en) 2021-12-21 2023-11-07 Western Digital Technologies, Inc. Storage system and method for optimizing write-amplification factor, endurance, and latency during a defragmentation operation
US11809736B2 (en) 2021-12-21 2023-11-07 Western Digital Technologies, Inc. Storage system and method for quantifying storage fragmentation and predicting performance drop
US11847343B2 (en) 2021-12-22 2023-12-19 Western Digital Technologies, Inc. Storage system and method for non-blocking coherent re-writes

Also Published As

Publication number Publication date
EP2954400A1 (en) 2015-12-16
CN105190526A (zh) 2015-12-23
KR20150115924A (ko) 2015-10-14
TW201432447A (zh) 2014-08-16
CN105190526B (zh) 2018-03-30
TWI607306B (zh) 2017-12-01
US20140229657A1 (en) 2014-08-14
JP6355650B2 (ja) 2018-07-11
WO2014124064A1 (en) 2014-08-14

Similar Documents

Publication Publication Date Title
JP6355650B2 (ja) 不揮発性記憶デバイスのためのメモリーのリアドレシング
TWI739859B (zh) 操作對多重名稱空間進行管理的儲存裝置的方法
US11003576B2 (en) Namespace change propagation in non-volatile memory devices
EP2665065A2 (en) Electronic device employing flash memory
JP2014519112A (ja) 記憶デバイスにおいて少ないオーバープロビジョニングで低い書き込み増幅率を実現する方法
KR102649131B1 (ko) 메모리 시스템 내 대용량 데이터 저장이 가능한 블록에서의 유효 데이터 체크 방법 및 장치
JP2015026379A (ja) 磁気ランダムアクセスメモリ(mram)を使用する記憶デバイスのメモリアレイのコントローラ管理
KR20200016075A (ko) 메모리 시스템에서의 유효 데이터 탐색 방법 및 장치
US8433847B2 (en) Memory drive that can be operated like optical disk drive and method for virtualizing memory drive as optical disk drive
CN106557428B (zh) 数据存储设备的映射系统选择
KR20200116704A (ko) 메모리 시스템 및 그것의 동작방법
US11526296B2 (en) Controller providing host with map information of physical address for memory region, and operation method thereof
US11422930B2 (en) Controller, memory system and data processing system
CN112684976A (zh) 用于执行迁移操作的存储器系统及其操作方法
US11182289B1 (en) Memory system and operating method thereof
US11409444B2 (en) Memory system and operation method thereof
TW202314471A (zh) 儲存裝置及其操作方法
US11941246B2 (en) Memory system, data processing system including the same, and operating method thereof
US20220164119A1 (en) Controller, and memory system and data processing system including the same
CN102023925A (zh) 固态硬盘及其使用方法
KR20240058637A (ko) 데이터 및 대응되는 맵을 선택적으로 저장하는 메모리 시스템 및 그 동작 방법
KR20220159270A (ko) 스토리지 장치 및 그 동작 방법
CN114691534A (zh) 控制器以及包括控制器的存储器系统
KR20100051350A (ko) 하이브리드 저장 장치 및 하이브리드 저장 장치에서 저장 성능을 개선하기 위한 방법

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170206

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20170206

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20180205

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180502

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20180612

R150 Certificate of patent or registration of utility model

Ref document number: 6355650

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