JP5238685B2 - フラッシュ・ストレージの離散領域を記述して問い合わせること - Google Patents

フラッシュ・ストレージの離散領域を記述して問い合わせること Download PDF

Info

Publication number
JP5238685B2
JP5238685B2 JP2009502794A JP2009502794A JP5238685B2 JP 5238685 B2 JP5238685 B2 JP 5238685B2 JP 2009502794 A JP2009502794 A JP 2009502794A JP 2009502794 A JP2009502794 A JP 2009502794A JP 5238685 B2 JP5238685 B2 JP 5238685B2
Authority
JP
Japan
Prior art keywords
flash
driver
data
component
flash component
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.)
Expired - Fee Related
Application number
JP2009502794A
Other languages
English (en)
Other versions
JP2009532761A (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 JP2009532761A publication Critical patent/JP2009532761A/ja
Application granted granted Critical
Publication of JP5238685B2 publication Critical patent/JP5238685B2/ja
Expired - Fee Related 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/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • 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
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • 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
    • 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/0643Management of files
    • 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
    • G06F9/00Arrangements for program control, e.g. control units

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)
  • Software Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Stored Programmes (AREA)
  • Signal Processing For Digital Recording And Reproducing (AREA)

Description

NANDやNORフラッシュストレージコンポーネントのような、フラッシュストレージコンポーネントは、各々が異なった特性を持つ離散的な物理領域で構成される場合が多いが、選択的に構成されることもある。この特性は例えば、異なるブロック、ページ、セクターサイズや、固有のリード/ライト/イレース(erase)性能属性、および、リードオンリー、リード/ライト、又はライトワンス能力を含んでいる。
従来のソフトウェアファイルシステムは、フラッシュコンポーネントを、異なった領域の特性を考慮せずに、セクタ又はクラスタの異成分から成る単一のセットと見做している。各領域とそのプロパティに関するフラッシュ領域情報を、ファイルシステムに公開するための標準的なメカニズムは存在しない。このため、フラッシュコンポーネントの利用および性能を効率の悪いものにする。
フラッシュドライバは、基礎となるフラッシュコンポーネントを記述する領域形状(region geometry)のような、更に詳細な属性やプロパティを決定するために、ファイルシステムや他のアプリケーションにより使用可能である。これによってファイルシステムは例えば、各々のフラッシュ領域とそのプロパティを知ることができる。そこでファイルシステムは、フラッシュコンポーネントをより効率的に利用するように最適化される。この最適化により、フラッシュコンポーネントの寿命が長くなり、リード/ライト性能が向上する。
フラッシュメディアドライバ中の内部API(アプリケーション・プログラム・インタフェース)は、低レベルのフラッシュプロパティをフラッシュ抽象化層に与える。I/O(入力/出力)制御コードのようなフラッシュドライバインタフェースは、フラッシュドライバにより公開され、フラッシュ及びドライバプロパティを提供する。このI/O制御コードは、ファイルシステムや他のアプリケーションにより使用可能である。
この課題を解決すための手段は、以下の発明を実施するための最良の形態で更に説明する概念を選択して、簡潔に紹介するために提供するものである。この課題を解決すための手段は、特許請求する発明の主題の主要な特徴、又は本質的な特徴を特定するためのものではなく、特許請求する発明の主題の範囲を制限するのに使用するためのものでもない。
フラッシュ抽象化層マルチオブジェクトアーキテクチャのようなフラッシュストレージアーキテクチャにより、単一のフラッシュコンポーネントを各々が独立して扱える領域に物理的にパーティショニングすることが可能になる。各々のフラッシュ領域は、お互いに分離されていているのが望ましく、フラッシュ抽象化層オブジェクトにより管理される。フラッシュ抽象化層オブジェクトは、フラッシュコンポーネントへのインタフェースを抽象化して、パーティションドライバやファイルシステムドライバのようなスタック内の、上位層に使用されるドライバインタフェースを提供する。更に、フラッシュ抽象化層マルチオブジェクトアーキテクチャは、可変ブロックサイズフラッシュコンポーネントをサポートする。可変ブロックサイズコンポーネントは、他の領域とは異なるブロックサイズを持つフラッシュの領域を含んでいる。
フラッシュストレージコンポーネントは、各々が異なった特性を持つ離散した物理領域で構成される。この特性には例えば、異なるブロック、ページ、セクタのサイズや、固有のリード/ライト/イレース性能属性、リードオンリー、リード/ライト、ライトワンス能力が含まれる。領域は様々なブロックサイズと同様に、固有の性能プロパティを備えることができる。ファイルシステムが将来のプロパティと同様にフラッシュストレージコンポーネントのプロパティを使用することができるように、インタフェースが提供されている。
図1は、フラッシュクエリシステムの例のブロック図である。ファイルシステムや他のアプリケーションは、フラッシュドライバ15を使用して、基礎となるフラッシュコンポーネント10を記述する領域配置のような、さらに詳細な属性とプロパティを決定できる。これによってファイルシステム40は例えば、各々のフラッシュ領域とそのプロパティを知ることができる。そこでファイルシステムは最適化され、フラッシュコンポーネント10をより効率的に利用することができるようになる。この最適化は、コンポーネントの長寿命化と、リード/ライト性能の向上につながる。本明細書で使用する際、フラッシュドライバとは、フラッシュを管理して上位層(例えば、パーティションドライバ、ファイルシステム等)にフラッシュを公開するソフトウェアコンポーネントのようなコンポーネントのことを言う。フラッシュドライバインタフェースは、フラッシュドライバにより上位層に公開されるAPIであってもよい。
図1に関して、フラッシュメディアドライバ20とフラッシュ抽象化層30からなるフラッシュドライバ15は、他の情報と同様にプロパティ情報を、フラッシュメディア又はストレージコンポーネント10、および/又はシステムレジストリ50のようなハードウェアから受け取ることができる。システムレジストリ50は、ドライバ構築中に抽出された低レベルプロパティをフラッシュメディアドライバ20に与え、ドライバコンフィグレーションから抽出された高レベルプロパティをフラッシュ抽象化層30に与える。フラッシュドライバ15は、例えばプロパティ情報をファイルシステム40に与えることができる。低レベルプロパティは、例えば読み出し速度、書込み速度、ブロックサイズ等のようなフラッシュの物理的な特性を含む。高レベルプロパティは、例えばリードオンリー、リード/ライト、リザーブ領域、アトミックライト等ソフトウェアに課せられた、又は強化されたものである。
フラッシュコンポーネント10は、例えばNAND又はNORコンポーネントからなり、フラッシュメディアドライバ20に低レベルのプロパティを提供することが望ましい。フラッシュメディアドライバ20は、デバイス固有のものであり、フラッシュコンポーネント10に直接物理的にアクセスすることに関わることが望ましい。
フラッシュドライバ15内で、フラッシュコンポーネント10のための低レベルプロパティが、フラッシュ抽象化層30に与えられる。フラッシュ抽象化層30は、ウエアレベリング(wear-leveling)、書込みセクタトランザクション、論理セクタから物理セクタへのマッピングと翻訳を扱うフラッシュメディアドライバ20の上の層であり、メディアのタイプに依存しない。
フラッシュ抽象化層の例は、セクタマネジャー、論理セクタから物理セクタへのマッパー、コンパクタで構成される。セクタマネジャーは、メディア上の自由なセクタのリストを管理する責任がある。要求された場合、セクタマネジャーはメディア上の(もし利用可能であれば)次の空きセクタを返すのが望ましい。論理セクタから物理セクタへのマッパーは、論理セクタから物理セクタへのマッピングを返す責任がある。ファイルシステムは、メディア上で任意の物理セクタにマップされた論理セクタを使用する。その結果、フラッシュ抽象化層はファイルシステムからの論理セクタアドレスを、メディア上の対応する物理セクタアドレスに翻訳することが望ましい。コンパクタは、DIRTYセクタをFREEセクタにリサイクルさせる責任がある。コンパクタは、FLASHブロック全体を解析して、どのセクタがDIRTYでリサイクルできるかを決定するのが望ましい。DIRTYではないブロック内のセクタはどれでもメディアの別の部分に再マップされる。
フラッシュメディアドライバの例は、フラッシュデバイスに実際に入出力を行う責任があるプラグ着脱可能なコンポーネントである。フラッシュメディアドライバは、フラッシュメモリデバイスのリード/ライト/イレースに使用されるデバイス固有のコードを含むことが望ましい。
さらに、例えばフラッシュコンポーネント10、および/又はシステムレジストリ50からのプロパティや他の情報は、フラッシュ抽象化層30に与えられる。フラッシュ抽象化層30は、ファイルシステム40に情報(ハードウェアのプロパティと範囲)を提供する。このようにして、フラッシュコンポーネント10とフラッシュドライバ15のプロパティは、フラッシュドライバ15からファイルシステム40に与えられる。
フラッシュ抽象化層30がフラッシュメディアドライバ20に問合せを行うためのインタフェースと、フラッシュ抽象化層30からファイルシステム40に情報を提供するためのインタフェース、という2つのインタフェースが提供される。このインタフェースは、例えばI/O制御コードを使用して問合せられた構造(structures)を使用して実装される。フラッシュメディアドライバ20は、フラッシュコンポーネント10の物理的特性に関する情報をフラッシュ抽象化層30に与えるが、フラッシュ抽象化層30ではその情報を、その情報が使用可能なファイルシステム40に与える。
一例として、フラッシュドライバ15は、低レベルのフラッシュプロパティをフラッシュ抽象化層30に与えるフラッシュメディアドライバ20内の内部API(アプリケーション・プログラムインタフェース)からなる。フラッシュドライバインタフェースは開示されており、フラッシュとドライバプロパティを提供するI/O(入力/出力)制御コードからなる。このI/O制御コードは、例えばファイルシステム40と他のアプリケーションにより使用可能である。
フラッシュメディアドライバ20は、ハードウェア固有のものであり、フラッシュコンポーネント10の既存のプロパティを生かすことができることが望ましい。例えばユーザドライバにフラッシュメディアドライバ機能のサポートを追加することにより、ユーザはフラッシュメディアドライバ20を生成することができる。フラッシュ抽象化層30は、フラッシュメディアドライバ20の機能とプロパティを使用する。
図2は、フラッシュに問合せを行う方法の例を示すフロー図である。ステップ200で、フラッシュメディアドライバはフラッシュコンポーネントから低レベルプロパティを抽出する。ステップ210で、フラッシュメディアドライバはシステムレジストリを介してドライバコンフィグレーションから低レベルプロパティを抽出することができる。フラッシュメディアドライバは、抽出した低レベルのプロパティをステップ220でフラッシュ抽象化層に与える。フラッシュ抽象化層は、ステップ230でシステムレジストリを介してドライバコンフィグレーションから高レベルプロパティを抽出する。ステップ240にて低レベルと高レベル両方のプロパティがファイルシステムに与えられる。
フラッシュメディアドライバAPIは、フラッシュコンポーネントについての一般的な低レベルの詳細を提供する。このAPIは、コンポーネントの任意の保存された部分と同様に、フラッシュコンポーネントの形状(geometry)を記述することができる。例えば、フラッシュメディアドライバにより提供可能なAPIのための情報レベルは4つある。即ち、基本的なフラッシュ情報、フラッシュ領域標準情報、フラッシュ領域性能情報、フラッシュリザーブ標準情報である。この情報は、フラッシュのハードウェア自身から入手したものである。要求や優先度の変化に応じてAPIは追加情報レベルをサポートするように拡張することができると考えられている。
基本的なフラッシュ情報は、例えばフラッシュタイプNAND又はNOR,製造ID,シリアル番号、領域番号、リザーブ領域番号を含むことが望ましい。
フラッシュ領域標準情報は、例えば領域プロパティ(リードオンリー、ライトワンス、シーケンスプロラミング要求(MLCフラッシュ))、ページプログラム制限、物理的及び論理的形状、セクタ当たりのデータバイト、セクタ当たりのスペアバイト、のような領域の基本的なプロパティをそれぞれが記述している、構造の配列と、フラッシュ領域毎の配列を含むことが望ましい。
フラッシュ領域性能情報は、例えばリードスループット、ライトスループット、イレース時間、リードセットアップ時間、ライトセットアップ時間のような領域の性能プロパティを各々が記述している構造の列とフラッシュ領域当たりの列を含むことが望ましい。
フラッシュリザーブ標準情報は、その各々が例えばリザーブ領域の名前、リザーブ領域の場所と大きさ、リザーブ領域のプロパティ(リードオンリー、ライトワンス)のようなリザーブ領域を記述する構造の配列と保存されたフラッシュ領域毎の配列を含むことが望ましい。リザーブ領域はファイルシステムから隠蔽されていることが望ましい。この情報はフラッシュハードウェアに由来しても、又は由来しなくてもよい。
フラッシュメディアドライバにより提供される情報は、多数の場所から集められる。例えば、フラッシュメディアドライバコードでハードコードされた情報もあれば、システムレジストリから読み出されたものもあるし、共通フラッシュインタフェース(CFI)又は他の方法を介してフラッシュコンポーネントから直接抽出されたものもある。離散領域を持たないフラッシュコンポーネントは、フラッシュコンポーネント全体を走査する一つの領域を報告する。
フラッシュ抽象化層は、それ自身の情報をフラッシュメディアドライバより提供された情報と組合せて、このI/O制御コードのようなインタフェースを介して開示された豊富なフラッシュプロパティ集合を形成することが望ましい。このAPIのためにフラッシュメディアドライバより提供される4つの情報レベルがある。即ち、標準情報、領域標準情報、領域性能情報、リザーブ標準情報である。要求や優先度の変化に応じて、APIは追加情報レベルをサポートするように拡張することができる。この情報は、フラッシュメディアドライバの情報と似ている。これはサードパーティフラッシュソフトウェアプロバイダが開示する情報である。
標準情報は、例えば製造ID,シリアル番号、領域番号、リザーブ領域番号のようなストレージ装置全体に関する一般情報を含んでいることが望ましい。
領域標準情報は、ストレージ装置内の別個の領域のプロパティや特長を含むことが望ましい。多数の別個の領域がないストレージ装置では、装置全体を記述するのに単一構造が使用される。ここでの情報には、例えばこの領域のプロパティ(リードオンリー、リード/ライト、ライトワンス、XIP、アトミックライト)、この領域でサポートされているプロパティ(セクタ削除、安全な拭き取り、キャッシュフラッシュ)、セクタ及びブロックのサイズ、トータルセクタ数、スペアブロック数が含まれる。
領域性能情報は、ストレージ装置内の別個の領域の性能能力を含むことが望ましい。多数の別個の領域がないストレージ装置では、装置全体を記述するのに単一構造を使用する。情報には、例えば好ましいリード転送サイズ(セクタ数)、好ましいライト転送サイズ(セクタ数)、リード転送速度、ライト転送速度、リードセットアップ時間、ライトセットアップ時間が含まれる。
リザーブ標準情報は、例えばリザーブ領域の名前、リザーブ領域の場所と大きさ、リザーブ領域のプロパティ(リードオンリー、ライトワンス)のような、標準的なリードおよびライト操作を介してはアクセスすることができないストレージ装置のリザーブ領域についての情報を含むことが望ましい。
フラッシュドライバのサポートはフラッシュ装置に限定されず、装置プロパティを記述するリッチな情報のセットを提供する必要がある他のメディア(ハードディスク、着脱可能なフラッシュカード等)がサポートすることもできる。
フラッシュドライバによりリッチな情報が提供されている状態で、ファイルシステムの活用に関しては、性能向上とコンポーネントの長寿命化のために、ファイルシステムがフラッシュコンポーネントをより良く活用することができる。例えば、フラッシュコンポーネントは2つのブロックサイズで構成することができる。即ち、コンポーネントの第一の部分は、SLCフラッシュ(セクタ0からNまで)としてあまり稠密でなく構成され、フラッシュの残りの部分はより稠密なMLCフラッシュ(セクタN+1からMまで)として構成される。MLCとSLCは、現在フラッシュとして利用可能な2つのカテゴリーである。
図3はファイルシステムレイアウト例を示す。ファイルシステムレイアウト300は2つの領域からなる。ファイルアロケーションテーブル325を含む領域320と、ファイルとディレクトリデータ345を含む領域340である。領域320は、例えばブロック辺り32セクタの密度であり、高速リード/ライト性能を持つ。領域340は、例えばブロック当たり64セクタの密度であり、中位のリード/ライト性能となる。
ファイルアロケーションテーブル325のブロック0からNは、ファイルとディレクトリデータ345のブロックN+1からMまでよりも小さい。従って0からNはN+1からMよりもデータは少ない。小さなブロックは大きなブロックよりも早く(例えば)イレースすることができるので、ファイルシステムが頻繁にリード・ライトするデータを小さいブロックに入れておくほうが望ましい。こうすることにより、システムが早く動く。
そのようなフラッシュ構成の例では、フラッシュのSLC部分に対してはブロックサイズが小さくなり高性能が得られるので、この領域はメタデータのように頻繁にアクセスされるデータに望ましいものになる。ファイルシステムは、頻繁にアクセスされるファイルアロケーションテーブル325を選択してフラッシュのSLC部に記憶して、ファイルとディレクトリデータ345をフラッシュの残りのMLC部に格納することができる。このレイアウト例では、SLCの高性能を最も頻繁にアクセスされるセクタのために利用して、さらにMLCフラッシュの密度を利用してより多くのデータを記憶する。ルートディレクトリの内容をSLC部に記憶させるといった他の最適化によっても、性能は向上する。
コンピューティング配置の例
図4は、例示的な実施形態と態様が実装されたコンピューティング環境の一例を示す。コンピューティングシステム環境100は、適切なコンピューティング環境の一例でしかなく、使用範囲や機能に対するいかなる制限を示唆するものではない。コンピューティング環境100は、動作環境例100内で説明したコンポーネントのどれか、又は組合せに関するいかなる依存性又は要求も持たないと解釈すべきである。
他の汎用又は特殊用途のコンピューティングシステム環境、又は構成が数多く使用されている。使用に適した周知のコンピューティングシステム、環境、および/又は構成には、限定するものではないが、パーソナルコンピュータ、サーバーコンピュータ、ハンドヘルド又はラップトップ装置、マルチプロセッサシステム、マイクロプロセッサベースシステム、セットトップボックス、プログラマブルコンシューマエレクトロニクス、ネットワークPC,ミニコンピュータ、メインフレームコンピュータ、埋め込み型システム、上記システム又は装置のいずれかを含む分散コンピューティング環境等を含む。
コンピュータで実行されるプログラム・モジュールのような、コンピュータ実行可能命令が使用できる。一般的にプログラム・モジュールは、特定のタスクを実行するか、特定の抽象的なデータタイプを実装しているルーチン、プログラム、オブジェクト、コンポーネント、データ構造等を含む。通信ネットワーク又は他のデータ転送メディアを介して、遠隔処理装置によりタスクが行なわれている分散コンピューティング環境を利用することができる。分散コンピューティング環境では、プログラム・モジュールと他のデータはメモリーストレージ装置を含むローカルとリモート双方のコンピュータストレージメディアに配置される。
図4を参照すると、コンピュータ110の形態で汎用コンピューティング装置がシステムの例に含まれている。コンピュータ110のコンポーネントは、限定するものではないが、プロセッシング・ユニット120、システムメモリ130、システムメモリを含む様々なシステムコンポーネントをプロセッシング・ユニット120と結合するシステムバス121を含む。プロセッシング・ユニット120は、マルチスレッドプロセッサ上でサポートされているもののような多数の論理プロセッシング・ユニットを表す。システムバス121は、メモリバス、又はメモリコントローラ、周辺バス、様々なバスアーキテクチャのどれかを使用したローカルバスを含むバス構造の幾つかのタイプのどれでもよい。例を挙げれば、限定するものではないが、そのようなアーキテクチャには、業界標準アーキテクチャ(ISA)バス、マイクロ・チャネル・アーキテクチャ(MCA)バス、拡張業界標準アーキテクチャ(EISA)バス、ベサ(VESA)ローカルバス、PCIバス(メザニンバスとしても知られる)が含まれる。システムバス121は、通信を行う装置の中で、ポイント・ツー・ポイント接続、スイッチング・ファブリック等としても実装することができる。
コンピュータ110は、普通様々なコンピュータ読取可能媒体を備える。コンピュータ読取可能媒体は、コンピュータ110によりアクセスが可能で、揮発性と不揮発性媒体、リムーバブルと非リムーバブルメディアの両方を備える入手可能なメディアのどれでもよい。例を挙げれば、限定するものではないが、コンピュータ読取可能媒体はコンピュータ記憶媒体と通信媒体からなる。コンピュータ記憶媒体は、コンピュータ読取可能命令、データ構造、プログラム・モジュール、又は他のデータのような情報を記憶するための方法又は技術のいずれかに実装された揮発性と不揮発性、リムーバブルと非リムーバブルメディアの両方を含む。コンピュータ記憶媒体は、限定するものではないが、RAM,ROM,EEPROM,フラッシュメモリ、又は他のメモリ技術、CDROM,DVD又は他の光学ディスクストレージ、磁気カセット、磁気テープ、磁気ディスク記憶又は他の磁気記憶装置、又は必要な情報を記憶するのに使用可能であり、コンピュータ110でアクセスできる他のメディアを含む。通信媒体は普通、コンピュータ読取可能命令、データ構造、プログラム・モジュール、又は搬送波又は他の輸送機構のような変調データ信号内の他のデータを具体化するものであり、任意の情報配信媒体を備える。「被変調データ信号」という言葉は、特性セットの内の一つ以上の特性を持つ信号か、信号中の情報を符号化するように変更された信号を意味する。例をあげれば、限定するものではないが、通信媒体は有線ネットワーク又は直結有線接続のような有線媒体、音響、高周波、赤外線のような無線媒体、及び他の無線媒体を含む。上記何れかの組合せも、コンピュータ読取可能媒体の範囲に含まれる。
システムメモリ130は、リード・オンリー・メモリ(ROM)131とランダム・アクセス・メモリ(RAM)132のような揮発性、および/又は不揮発性メモリの形態の、コンピュータ記憶媒体を含む。起動中等にコンピュータ110内の要素間で情報を転送するのを助ける基本的なルーチンを含むバイオス(BIOS)133は普通ROM131に格納される。RAM132は普通、直ぐにアクセスできる、および/又は現在プロセッシング・ユニット120により操作中であるデータ、および/又はプログラム・モジュールを含む。例を挙げれば、限定するものではないが、図4はオペレーティング・システム134、アプリケーション・プログラム135、他のプログラム・モジュール136、プログラムデータ137を含む。
コンピュータ110は、他のリムーバブル/非リムーバブル、揮発性/不揮発性コンピュータ記憶媒体も持つことができる。例を挙げれば、図4は非リムーバブル、不揮発性磁気メディアから読込む、又は書込むハード・ディスク・ドライブ140と、リムーバブル、不揮発性磁気ディスク152から読込む、又は書込む磁気ディスクドライブ151と、CD ROM,又は他の光メディアのようなリムーバブル、不揮発性光ディスク156から読込む、又は書込む光ディスクドライブ155を示す。典型的な動作環境で使用可能な他のリムーバブル/非リムーバブル、揮発性/不揮発性コンピュータ記憶媒体は、限定はしないが、磁気テープカセット、フラッシュメモリカード、DVD,ディジタルビデオテープ、半導体RAM,半導体ROM等を含む。ハード・ディスク・ドライブ141は、普通インタフェース140のような非リムーバブル・メモリ・インタフェースを介してシステムバス121に接続され、磁気ディスクドライブ151と光ディスクドライブ155は、普通インタフェース50のようなリムーバブル・メモリ・インタフェースによりシステムバス121に接続される。
上記で議論して図4で説明したドライブと関連するコンピュータ記憶媒体は、コンピュータ読取可能命令、データ構造、プログラム・モジュール、コンピュータ110用の他のデータのストレージを提供する。図4では、例えばハード・ディスク・ドライブ141は、オペレーティング・システム144、アプリケーション・プログラム145、他のプログラム・モジュール146、プログラムデータ147を記憶するとして説明されている。これらのコンポーネントは、オペレーティング・システム134、アプリケーション・プログラム135、他のプログラム・モジュール136、プログラムデータ137と同じか、異なるかどちらかであるということには注意が必要である。オペレーティング・システム144、アプリケーション・プログラム145、他のプログラム・モジュール146、プログラムデータ147は、少なくともコピーとは異なるということを説明するために、ここでは別の数字にしてある。キーボード162、普通はマウス、トラックボール、又はタッチパッドと呼ばれているポインティングデバイス161のような入力装置を介して、ユーザはコマンドと情報をコンピュータ20に入力することができる。他の入力装置(図示せず)には、マイクロフォン、ジョイスティック、ゲームパッド、サテライトディッシュ、スキャナ等が含まれる。こうした入力装置は、システムバスに結合されたユーザ入力インタフェース160を介してプロセッシング・ユニット120に接続されることがよくあるが、他のインタフェースやパラレルポート、ゲームポート、又はUSBのようなバス構造により接続されることもできる。モニタ191又は他のタイプの表示装置も、ビデオインタフェース190のようなインタフェースを介してシステムバス121に接続される。モニタの他にもコンピュータは、出力周辺装置インタフェース195を介して接続可能なスピーカ197やプリンタ196のような他の周辺出力装置も含んでいる。
コンピュータ110は、リモートコンピュータ180のような一つまたは複数のリモートコンピュータへの論理接続を使用するネットワーク環境で動作可能である。リモートコンピュータ180は、パーソナルコンピュータ、サーバ、ルータ、ネットワークPC,ピア装置、又は他の共通ネットワークノードでよく、コンピュータ110と関連して上述した多くの、又は全ての要素を含むが、メモリ記憶装置181だけを図4で説明している。図4に示した論理接続はローカルエリアネットワーク(LAN)171とワイドエリアネットワーク(WAN)173を含むが、他のネットワークも含んでいる。そのようなネットワーク環境は、オフィス、企業内コンピュータネットワーク、イントラネット、インターネットではありふれている。
LANネットワーク環境で使用される場合、コンピュータ110はネットワークインタフェース即ちアダプタ170を介してLAN171に接続される。WANネットワーク環境で使用される場合、コンピュータ110は普通モデム172、又はインターネットのようなWAN173上で通信を確立するための他の手段を備える。モデム172は、内蔵又は外付けであるが、ユーザ入力インタフェース160、又は他の適当な仕組みを介してシステムバス121に接続できる。ネットワーク環境では、コンピュータ110、又はその一部に関連して表わされたプログラム・モジュールはリモートメモリストレージ装置に記憶することができる。例を挙げれば、制限するものではないが、図4はメモリ装置181にあるリモートアプリケーションプログラム185を示す。当然のことながら、図示したネットワーク接続は例であり、コンピュータ間の通信リンクを確立する他の方法を使用してもよい。
発明の内容は構造特徴、および/又は方法論的行為に特化した言語で記述されているが、付属の特許請求範囲で定義された発明の内容は、上記の固有のプロパティや行為には必ずしも限定されないと理解できる。むしろ、上記の固有のプロパティや行為は特許請求範囲を実装する形式の例として公開される。
フラッシュクエリシステムの一例のブロック図である。 クエリフラッシュ方法の一例を示すフロー図である。 ファイルシステムレイアウトの一例を示す図である。 実施形態と態様の例が実装されているコンピューティング環境の一例のブロック図である。

Claims (17)

  1. コンピュータによって実行されるフラッシュコンポーネントクエリーシステムであって、
    フラッシュコンポーネントに関するデータを保持するフラッシュドライバと、
    前記フラッシュドライバから前記データを受取るファイルシステムと
    を具え、
    前記データは、前記フラッシュコンポーネントの複数の離散領域の特性を有し、
    前記特性は、前記複数の離散領域のうちの1つ又はそれ以上の離散領域に関する性能情報を含み、
    前記性能情報は、前記1つ又はそれ以上の離散領域の性能レベルを示し、
    前記ファイルシステムは、ファイルシステムレイアウトを最適化するために前記データを使用すると共に、頻繁にアクセスされる情報に関する高性能レベルに関連した1つ又はそれ以上の離散領域を利用して前記フラッシュコンポーネントの少なくとも一部を使用することを特徴とするフラッシュコンポーネントクエリーシステム。
  2. 前記データは、前記フラッシュコンポーネントに関するプロパティ情報をさらに具えたことを特徴とする請求項1記載のフラッシュコンポーネントクエリーシステム。
  3. 前記フラッシュドライバは、前記フラッシュコンポーネントから前記フラッシュコンポーネントに関する前記データを受取るように構成されていることを特徴とする請求項1記載のフラッシュコンポーネントクエリーシステム。
  4. 前記フラッシュドライバは、フラッシュメディアドライバと、
    前記フラッシュメディアドライバと通信しているフラッシュ抽象化層と
    を具えたことを特徴とする請求項1記載のフラッシュコンポーネントクエリーシステム。
  5. 低レベルのプロパティを前記フラッシュメディアドライバに与え、高レベルのプロパティを前記フラッシュ抽象化層に与えるシステムレジストリを具えたことを特徴とする請求項4記載のフラッシュコンポーネントクエリーシステム。
  6. 前記フラッシュメディアドライバは、前記低レベルのプロパティを前記フラッシュ抽象化層に与えるように構成されていることを特徴とする請求項5記載のフラッシュコンポーネントクエリーシステム。
  7. 前記フラッシュメディアドライバは、前記フラッシュコンポーネントから前記フラッシュコンポーネントに関する前記データを受取るように構成されていることを特徴とする請求項4記載のフラッシュコンポーネントクエリーシステム。
  8. 前記データは、前記フラッシュコンポーネントの前記複数の離散領域の各々における、異なるブロック、ページ、セクタのサイズ、および異なる性能属性のうちの少なくとも1つに関する情報をさらに具えたことを特徴とする請求項1記載のフラッシュコンポーネントクエリーシステム。
  9. フラッシュコンポーネントに問合せをする方法であって、
    フラッシュドライバにおいて、フラッシュコンポーネントのプロパティに関するデータを受取ることと、
    前記データは、前記フラッシュコンポーネントの複数の離散領域の特性をさらに有し、
    前記特性は、前記複数の離散領域のうちの1つ又はそれ以上の離散領域に関する性能情報を含み、
    前記性能情報は、前記1つ又はそれ以上の離散領域の性能レベルを示し、
    前記受取ったデータをシステムファイルに与えることと、
    前記ファイルシステムによって、ファイルシステムレイアウトを最適化するために前記データを使用すると共に、頻繁にアクセスされる情報に関する高性能レベルに関連した1つ又はそれ以上の離散領域を利用して前記フラッシュコンポーネントの少なくとも一部を使用することと
    を具えたことを特徴とする方法。
  10. 前記フラッシュコンポーネントに関するデータを受取ることは、前記フラッシュコンポーネントからデータを受取ることを含むことを特徴とする請求項9記載の方法。
  11. 前記フラッシュコンポーネントに関するデータを受取ることは、システムレジストリからデータを受取ることを含むことを特徴とする請求項9記載の方法。
  12. 前記フラッシュドライバはフラッシュメディアドライバを備える、前記フラッシュコンポーネントに関するデータを受取ることは前記フラッシュメディアドライバを使用してデータを抽出することを含むことを特徴とする請求項9記載の方法。
  13. 前記フラッシュドライバは、前記フラッシュメディアドライバと通信中のフラッシュ抽象化層を含み、さらに前記抽出したデータを前記フラッシュ抽象化層に与えることをさらに含むことを特徴とする請求項12記載の方法。
  14. 追加データを前記フラッシュ抽象化層に前記システムレジストリを介して前記ドライバコンフィグレーションから与えることをさらに含むことを特徴とする請求項13記載の方法。
  15. 前記データは、前記フラッシュコンポーネントの前記複数の離散領域の各々における、異なるブロック、ページ、セクタのサイズ、および異なる性能属性のうちの少なくとも1つに関する情報をさらに具えたことを特徴とする請求項9記載の方法。
  16. コンピュータにより、請求項9ないし15のいずれかに記載の方法を実行することが可能な命令を有するコンピュータプログラム。
  17. 請求項16記載のコンピュータプログラムを有するコンピュータ読取り可能な記録媒体。
JP2009502794A 2006-03-30 2007-02-23 フラッシュ・ストレージの離散領域を記述して問い合わせること Expired - Fee Related JP5238685B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/393,349 2006-03-30
US11/393,349 US7779426B2 (en) 2006-03-30 2006-03-30 Describing and querying discrete regions of flash storage
PCT/US2007/004723 WO2007120394A1 (en) 2006-03-30 2007-02-23 Describing and querying discrete regions of flash storage

Publications (2)

Publication Number Publication Date
JP2009532761A JP2009532761A (ja) 2009-09-10
JP5238685B2 true JP5238685B2 (ja) 2013-07-17

Family

ID=38576906

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009502794A Expired - Fee Related JP5238685B2 (ja) 2006-03-30 2007-02-23 フラッシュ・ストレージの離散領域を記述して問い合わせること

Country Status (12)

Country Link
US (1) US7779426B2 (ja)
EP (1) EP1999592A4 (ja)
JP (1) JP5238685B2 (ja)
KR (1) KR101376937B1 (ja)
CN (1) CN101416165B (ja)
AU (1) AU2007239066B2 (ja)
BR (1) BRPI0708916A8 (ja)
CA (1) CA2643332C (ja)
IL (1) IL193446A (ja)
MX (1) MX2008011916A (ja)
RU (1) RU2433455C2 (ja)
WO (1) WO2007120394A1 (ja)

Families Citing this family (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100874702B1 (ko) 2006-10-02 2008-12-18 삼성전자주식회사 플래시 메모리 파일 시스템을 효율적으로 관리하기 위한장치 드라이버 및 방법
US8166267B2 (en) 2006-12-26 2012-04-24 Sandisk Technologies Inc. Managing a LBA interface in a direct data file memory system
US7917686B2 (en) * 2006-12-26 2011-03-29 Sandisk Corporation Host system with direct data file interface configurability
US8209461B2 (en) * 2006-12-26 2012-06-26 Sandisk Technologies Inc. Configuration of host LBA interface with flash memory
TWI368224B (en) * 2007-03-19 2012-07-11 A Data Technology Co Ltd Wear-leveling management and file distribution management of hybrid density memory
US8200904B2 (en) * 2007-12-12 2012-06-12 Sandisk Il Ltd. System and method for clearing data from a cache
US8443260B2 (en) 2007-12-27 2013-05-14 Sandisk Il Ltd. Error correction in copy back memory operations
TWI375953B (en) * 2008-02-21 2012-11-01 Phison Electronics Corp Data reading method for flash memory, controller and system therof
TWI425523B (zh) * 2008-03-25 2014-02-01 Asmedia Technology Inc 混合型快閃儲存裝置及其操作方法
US8819563B2 (en) 2008-04-03 2014-08-26 Dell Products L.P. Systems and methods for accessing system utilities
US9594679B2 (en) * 2008-05-01 2017-03-14 Sandisk Il Ltd. Flash cache flushing method and system
JP4683438B2 (ja) * 2008-06-13 2011-05-18 讀賣テレビ放送株式会社 データ放送システム、データ放送方法及びプログラム
US8261009B2 (en) * 2008-12-30 2012-09-04 Sandisk Il Ltd. Method and apparatus for retroactive adaptation of data location
US20100169540A1 (en) * 2008-12-30 2010-07-01 Sinclair Alan W Method and apparatus for relocating selected data between flash partitions in a memory device
US8639877B2 (en) * 2009-06-30 2014-01-28 International Business Machines Corporation Wear leveling of solid state disks distributed in a plurality of redundant array of independent disk ranks
US8880835B2 (en) * 2009-07-07 2014-11-04 International Business Machines Corporation Adjusting location of tiered storage residence based on usage patterns
US8234520B2 (en) 2009-09-16 2012-07-31 International Business Machines Corporation Wear leveling of solid state disks based on usage information of data and parity received from a raid controller
TWI434284B (zh) * 2009-12-03 2014-04-11 Silicon Motion Inc 主動式快閃管理之方法以及相關之記憶裝置及其控制器
US9104546B2 (en) * 2010-05-24 2015-08-11 Silicon Motion Inc. Method for performing block management using dynamic threshold, and associated memory device and controller thereof
US9703500B2 (en) 2012-04-25 2017-07-11 International Business Machines Corporation Reducing power consumption by migration of data within a tiered storage system
CN102830941B (zh) * 2012-06-15 2016-03-30 记忆科技(深圳)有限公司 固态硬盘的驱动方法及其存储系统
KR20140069659A (ko) * 2012-11-29 2014-06-10 성균관대학교산학협력단 플래시 메모리용 파일 시스템
JP6818982B2 (ja) 2015-06-01 2021-01-27 エスゼット ディージェイアイ テクノロジー カンパニー リミテッドSz Dji Technology Co.,Ltd ファイルを格納する方法
GB2541916B (en) * 2015-09-03 2018-05-09 Gurulogic Microsystems Oy Method of operating data memory and device utilizing method
US10420928B2 (en) 2015-12-14 2019-09-24 Medtronic, Inc. Implantable medical device having a scheme for managing storage of data

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6598169B1 (en) * 1999-07-26 2003-07-22 Microsoft Corporation System and method for accessing information made available by a kernel mode driver
US7103625B1 (en) * 1999-10-05 2006-09-05 Veritas Operating Corporation Virtual resource ID mapping
CN1088218C (zh) * 1999-11-14 2002-07-24 邓国顺 用于数据处理系统的快闪电子式外存储方法及其装置
JP2003216491A (ja) * 2002-01-23 2003-07-31 Hitachi Ltd 階層キャッシュ制御方法
US7533214B2 (en) * 2002-02-27 2009-05-12 Microsoft Corporation Open architecture flash driver
US6901499B2 (en) * 2002-02-27 2005-05-31 Microsoft Corp. System and method for tracking data stored in a flash memory device
US6621746B1 (en) * 2002-02-27 2003-09-16 Microsoft Corporation Monitoring entropic conditions of a flash memory device as an indicator for invoking erasure operations
US20040078542A1 (en) * 2002-10-14 2004-04-22 Fuller William Tracy Systems and methods for transparent expansion and management of online electronic storage
US7277978B2 (en) * 2003-09-16 2007-10-02 Micron Technology, Inc. Runtime flash device detection and configuration for flash data management software
US7321951B2 (en) * 2003-11-17 2008-01-22 Micron Technology, Inc. Method for testing flash memory power loss recovery
US7480760B2 (en) * 2003-12-17 2009-01-20 Wegener Communications, Inc. Rotational use of memory to minimize write cycles
US7350044B2 (en) * 2004-01-30 2008-03-25 Micron Technology, Inc. Data move method and apparatus
US20050204091A1 (en) * 2004-03-11 2005-09-15 Kilbuck Kevin M. Non-volatile memory with synchronous DRAM interface

Also Published As

Publication number Publication date
AU2007239066A1 (en) 2007-10-25
WO2007120394A1 (en) 2007-10-25
EP1999592A4 (en) 2010-09-15
KR101376937B1 (ko) 2014-03-20
US20070239927A1 (en) 2007-10-11
JP2009532761A (ja) 2009-09-10
AU2007239066B2 (en) 2011-07-28
CA2643332C (en) 2014-09-09
RU2008138708A (ru) 2010-04-10
IL193446A (en) 2014-03-31
BRPI0708916A8 (pt) 2017-01-17
CN101416165A (zh) 2009-04-22
RU2433455C2 (ru) 2011-11-10
US7779426B2 (en) 2010-08-17
CA2643332A1 (en) 2007-10-25
EP1999592A1 (en) 2008-12-10
BRPI0708916A2 (pt) 2011-06-14
CN101416165B (zh) 2012-06-27
MX2008011916A (es) 2008-09-29
IL193446A0 (en) 2009-05-04
KR20080104337A (ko) 2008-12-02

Similar Documents

Publication Publication Date Title
JP5238685B2 (ja) フラッシュ・ストレージの離散領域を記述して問い合わせること
JP7404442B2 (ja) 格納媒体を多重モードで動作させる管理システム、それを含む格納システム、及びそれを利用して格納媒体を管理する方法
CN110663019B (zh) 用于叠瓦式磁记录(smr)的文件系统
US10324832B2 (en) Address based multi-stream storage device access
JP5384576B2 (ja) 複数の異種のソリッドステート・ストレージ・ロケーションの選択的利用
JP6890401B2 (ja) 多重モード格納管理装置、多重モード格納装置、及びその選別潜在露出(sue)マッピング動作方法
US10452562B2 (en) File access method and related device
TW200846911A (en) Composite solid state drive identification and optimization technologies
KR20090037705A (ko) 불휘발성 메모리 시스템 및 그것의 파일 데이터 관리 방법
US20100211820A1 (en) Method of managing non-volatile memory device and memory system including the same
US10169124B2 (en) Unified object interface for memory and storage system
KR101017067B1 (ko) 낸드 플래시 메모리를 위한 지역성 기반의 가비지 컬렉션기법
US20070106865A1 (en) Method and system for using a block allocation policy
US9734057B2 (en) Semiconductor storage device and buffer operation method thereof
EP4307129A1 (en) Method for writing data into solid-state hard disk
CN115390747A (zh) 存储设备及其操作方法
US11429519B2 (en) System and method for facilitating reduction of latency and mitigation of write amplification in a multi-tenancy storage drive
JP7490714B2 (ja) メモリシステムおよび制御方法
KR20220159270A (ko) 스토리지 장치 및 그 동작 방법
KR20230103000A (ko) 메모리 시스템, 메모리 시스템의 입출력 관리 방법 및 이를 수행하기 위한 컴퓨팅 장치

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20100112

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120221

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120518

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20121102

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130204

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130401

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20160405

Year of fee payment: 3

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees