JP6893897B2 - ソリッドステートドライブ(ssd)、そのガーベッジコレクションに係る方法、及びその具現に係る物品 - Google Patents

ソリッドステートドライブ(ssd)、そのガーベッジコレクションに係る方法、及びその具現に係る物品 Download PDF

Info

Publication number
JP6893897B2
JP6893897B2 JP2018084363A JP2018084363A JP6893897B2 JP 6893897 B2 JP6893897 B2 JP 6893897B2 JP 2018084363 A JP2018084363 A JP 2018084363A JP 2018084363 A JP2018084363 A JP 2018084363A JP 6893897 B2 JP6893897 B2 JP 6893897B2
Authority
JP
Japan
Prior art keywords
block
valid data
stream identifier
response
stream
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
JP2018084363A
Other languages
English (en)
Other versions
JP2018185815A (ja
JP2018185815A5 (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.)
Samsung Electronics Co Ltd
Original Assignee
Samsung Electronics Co Ltd
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 Samsung Electronics Co Ltd filed Critical Samsung Electronics Co Ltd
Publication of JP2018185815A publication Critical patent/JP2018185815A/ja
Publication of JP2018185815A5 publication Critical patent/JP2018185815A5/ja
Application granted granted Critical
Publication of JP6893897B2 publication Critical patent/JP6893897B2/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/0604Improving or facilitating administration, e.g. storage management
    • G06F3/0607Improving or facilitating administration, e.g. storage management by facilitating the process of upgrading existing storage systems, e.g. for improving compatibility between host and storage device
    • 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
    • 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/0253Garbage collection, i.e. reclamation of unreferenced 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/0608Saving storage space on storage systems
    • 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/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0652Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket
    • 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
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/10Programming or data input circuits
    • G11C16/14Circuits for erasing electrically, e.g. erase voltage switching circuits
    • G11C16/16Circuits for erasing electrically, e.g. erase voltage switching circuits for erasing blocks, e.g. arrays, words, groups
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1041Resource optimization
    • G06F2212/1044Space efficiency improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/20Employing a main memory using a specific memory technology
    • G06F2212/202Non-volatile memory
    • G06F2212/2022Flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7201Logical to physical mapping or translation of blocks or pages
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7205Cleaning, compaction, garbage collection, erase control
    • 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

Description

本発明は、一般的にソリッドステートドライブ(SSD、Solid State Drive)と関連され、さらに具体的にはSSD内におけるガーベッジコレクションに係る自動データ配置{Garbage Collection−Automatic Data Placement}の改善に関連される。
マルチストリーミング(multi−streaming)は、ソリッドステートドライブ(SSDs)のより良い耐久性と性能を提供するために開発されたスキーム(scheme)である。同一のストリームIDを持つデータは一つのストリームに割り当てられ、究極的に同一の消去ブロックに共に格納される。同一のストリームIDを持つデータは、共に無効化されることが期待され、これはデータが同一の寿命を有することを意味する。ガーベッジコレクションが発生する時、もし消去ブロックの全てのページが無効であれば、消去ブロックに残っていて他のブロックにプログラムされる必要がある有効データがないので、オーバヘッドは減少する。
SSD又はフラッシュ変換階層(Flash Translation Layers、FTLs)は自動ストリーム検出アルゴルズムを包含し、データ操作の属性(頻度(frequency)、最新性(recency)、順次性(sequentiality)などのような)に基づいてストリームIDを生成でき、ストリームに適合する消去ブロックにデータを配置する。但し、ガーベッジコレクションが発生する時、他のストリームと連関された有効データが混入する場合があり、これはマルチストリーミングの有用性を害する。
マルチストリーミングの有利さを維持するためには、有効データがガーベッジコレクションの間にプログラムされるように、ブロックの選択を管理する方法が、依然として必要である。
米国登録特許第8429658B2号公報 米国登録特許第9459810B2号公報 米国公開特許第20090119352A1号公報 米国公開特許第20120072798A1号公報 米国公開特許第20140189270A1号公報 米国公開特許第20160283116A1号公報 米国公開特許第20160283124A1号公報 米国公開特許第20170031631A1号公報 韓国登録特許第101544309B1号公報
本発明の実施例は、改善されたガーベッジコレクションを遂行できるソリッドステートドライブ、そのガーベッジコレクションに係る方法、及びその具現に係る物品を提供する。
本発明に実施例は制限なしに、下の陳述に拡張できる。
ステータス1.本発明の実施例はソリッドステートドライブ(SSD)を含む。
該SSDは、
データを格納するフラッシュメモリと、
フラッシュメモリへのデータのライト(write)及びフラッシュメモリからのデータのリード(read)を管理するSSDコントローラと、を含み、
前記SSDコントローラは、
データの属性に応答してストリーム識別子(ID)を選択する自動ストリーム検出ロジックと、
ガーベッジコレクションのために、フラッシュメモリ内の消去ブロックを選択し、自動ストリーム検出ロジックにより決定された第1ストリームIDに応答して第2ブロックに消去ブロックの有効データをプログラムするガーベッジコレクションロジックと、を含み、
自動ストリーム検出ロジックはガーベッジコレクションロジックがガーベッジコレクションのために消去ブロックを選択した後、第1ストリームIDを決定するように動作する。
ステータス2.ステータス1によるSSDを含む本発明の実施例において、
SSDコントローラは、ホストコンピュータ上のアプリケーションからのリクエスト(request)を管理する入出力(I/O)キューを含み、
ガーベッジコレクションロジックは入出力キューに有効データに対するライト(write)リクエストを配置するライト(write)リクエストロジックを含む。
ステータス3.ステータス2によるSSDを含む本発明の 実施例において、SSDコントローラは、アプリケーションからの第2ライト(write)リクエストを受信するレシーバ(receiver)をさらに含み、第2ライト(write)リクエストはアプリケーションからの有効データを含む。
ステータス4.ステータス3によるSSDを含む本発明の実施例において、SSDは自動ストリーム検出ロジックからの第2ストリームIDに応答して、消去ブロックに有効データを書き込む。
ステータス5.ステータス4によるSSDを含む本発明の実施例において、第1ストリームIDは第2ストリームIDである。
ステータス6.ステータス2によるSSDを含む本発明の実施例において、ガーベッジコレクションロジックは消去ブロックを消去する消去ロジックをさらに包含する。
ステータス7.ステータス6によるSSDを含む本発明の実施例において、消去ロジックはライトリクエストがSSDにより処理された後、消去ブロックを消去するように動作する。
ステータス8.ステータス6によるSSDを含む本発明の実施例において、消去ロジックはライトリクエストロジックが入出力キューにライトリクエストを配置した後、そしてライトリケエストがSSDにより処理される前に、消去ブロックを消去するように動作する。
ステータス9.ステータス1によるSSDを含む本発明の実施例において、
ガーベッジコレクションロジックは有効データをプログラムする前に、自動ストリーム検出ロジックから第1ストリームIDを要請するように動作するものの、
ガーベッジコレクションロジックは、
第1ストリームIDに応答して第2ブロックを選択するブロック選択ロジックと、及び第2ブロックに有効データを書き込むプログラミングロジックと、を包含する。
ステータス10.ステータス9によるSSDを含む本発明の実施例において、第2ブロックはガーベッジコレクションの間プログラムされたデータだけを格納する特殊なブロックである。
ステータス11.ステータス1によるSSDを含む本発明の実施例において、ストリームIDは有効データの論理ブロックアドレス(LBA)、SSDに有効データを元来(original)書き込んでいるアプリケーションのアプリケーションID、有効データに対する残余寿命、有効データに対する順次性、有効データに対するアップデート頻度、有効データに対する最新性、有効データに対するライト(write)サイズ、有効データに対するライト時間、有効データに対するリード(read)頻度、及び有効データに対するリード(read)温度の中で,少なくとも一つに応答する。
ステータス12.本発明の実施例は方法を含み、方法は、
ガーベッジコレクションのためのソリッドステートドライブ(SSD)において消去ブロックを識別するステップと、
プログラミングを要請する消去ブロックの有効データを識別するステップと、及び
第2ブロックに消去ブロックの有効データをプログラミングするステップと、を包含するものの、第2ブロックはストリーム識別子(ID)に応答して選択され、ストリームIDはプログラムを要請する消去ブロックの有効データを識別するステップが識別された後に、有効データの属性に応答して決定される。
ステータス13.ステータス12による方法を含む本発明の実施例において、
プログラミングを要請する消去ブロックの有効データを識別するステップの以前に、
アプリケーションからライトリクエストの有効データをSSDから受信するステップと、
有効データの属性に応答して第2ストリームIDを決定するステップと、
第2ストリームIDに応答して消去ブロックを選択するステップと、及び
第2ブロックに有効データを書き込むステップと、をさらに包含する。
ステータス14.ステータス13による方法を含む本発明の実施例において、ストリームIDは第2ストリームIDである。
ステータス15.ステータス12による方法を含む本発明の実施例において、第2ブロックに消去ブロックの有効データをプログラムするステップは、第2ブロックに有効データを書き込むように入出力(I/O)キューにライトリクエストを配置するステップ、を包含する。
ステータス16.ステータス15による方法を含む本発明の実施例において、消去ブロックを消去するステップ、をさらに包含する。
ステータス17.ステータス16による方法を含む本発明の実施例において、消去ブロックを消去するステップは、有効データが第2ブロックに書き込まれる前に、消去ブロックを消去するステップと、を包含する。
ステータス18.ステータス12による方法を含む本発明の実施例において、第2ブロックに、消去ブロックの有効データをプログラムするステップは、
有効データの属性に応答して、有効データに対するストリームIDを決定するステップと、
ストリームIDに応答して第2ブロックを選択するステップと、
第2ブロックに有効データをプログラムするステップと、を包含する。
ステータス19.ステータス18による方法を含む本発明の実施例において、ストリームIDに応答して第2ブロックを選択するステップは、ストリームIDに応答して、特殊なブロックを選択するステップを包含するものの、特殊なブロックはガーベッジコレクションの間にプログラムされたデータのみを格納する。
ステータス20.ステータス12による方法を含む本発明の実施例において、ストリームIDは有効データの論理ブロックアドレス(LBA)、SSDに有効データを元来書き込んでいるアプリケーションのアプリケーションID、有効データに対する残余寿命、有効データに対する順次性、有効データに対するアップデート頻度、有効データに対する最新性、有効データに対するライト(write)サイズ、有効データに対するライト時間、有効データに対するリード(read)頻度及び有効データに対するリード(read)温度の中で,少なくとも一つに応答する。
ステータス21.本発明の実施例は、ソリッドステートドライブ(SSD)のガーベッジコレクションに係る方法の具現に係る、非一時的なストレージ媒体を含む物品において、非一時的なストレージ媒体上に、マシンにより実行されると下記の手順を結果する命令語を格納している物品を含む。
ガーベッジコレクションのために、ソリッドステートドライブ(SSD)において消去ブロックを識別するステップと、
消去ブロックにおいてプログラムを要請する有効データを識別するステップと、
ストリーム識別子(ID)に応答して選択された第2ブロックに、消去ブロックの有効データをプログラムする(書き込む)ステップと、
ここで、ストリームIDはプログラミング(書き込み)を要請する消去ブロックが識別され、前記識別された消去ブロックの有効データを識別するステップがなされた後に、前記有効データの属性に応答して決定される。
ステータス22.ステータス21による物品を含む本発明の実施例において、非一時的ストレージ媒体は、プログラムを要請する消去ブロックの有効データを識別するステップの以前に、アプリケーションからライトリクエストの有効データをSSDから受信するステップと、
有効データの属性に応答して第2ストリームIDを決定するステップと、
第2ストリームIDに応答して消去ブロックを選択するステップと、
消去ブロックに有効データを書き込むステップと、を、マシンにより実行される時、発生させる命令語を更に格納する。
ステータス23.ステータス22による物品を含む本発明の実施例において、ストリームIDは第2ストリームIDである。
ステータス24.ステータス21による物品を含む本発明の実施例において、第2ブロックに、消去ブロックの有効データをプログラムするステップは、第2ブロックに有効データを書き込むように入出力(I/O)キューにライトリクエストを配置するステップを包含する。
ステータス25.ステータス24による物品を含む本発明の実施例において、非一時的なストレージ媒体は消去ブロックを消去するステップを、マシンにより実行される時、発生させる命令語を格納する。
ステータス26.ステータス25による物品を含む本発明の実施例において、消去ブロックを消去するステップは、有効データが第2ブロックに書き込まれる前に、消去ブロックを消去するステップを包含する。
ステータス27.ステータス21による物品を含む本発明の実施例において、第2ブロックに、消去ブロックの有効データをプログラムするステップは、
有効データの属性に応答して有効データに対するストリームIDを決定するステップと、
ストリームIDに応答して第2ブロックを選択するステップと、
第2ブロックに有効データをプログラムするステップと、を包含する。
ステータス28.ステータス27による物品を含む本発明の実施例において、ストリームIDに応答して第2ブロックを選択するステップは、ストリームIDに応答して特殊なブロックを選択するステップを包含し、ここで特殊なブロックはガーベッジコレクションの間にプログラムされたデータのみを格納する。
ステータス29.ステータス21による物品を含む本発明の実施例において、ストリームIDは有効データの論理ブロックアドレス(LBA)、SSDに有効データを元来書き込んでいるアプリケーションのアプリケーションID、有効データに対する残余寿命、有効データに対する順次性、有効データに対するアップデート頻度、有効データに対する最新性、有効データに対するライト(write)サイズ、有効データに対するライト時間、有効データに対するリード(read)頻度及び有効データに対するリード(read)温度の中で,少なくとも一つに応答する。
本発明の実施例によると、ガーベッジコレクションロジックが自動ストリーム検出ロジックにより決定された第1ストリームIDに応答して第2ブロックに消去ブロックの有効データをプログラムする(書き込む)ので、第2ブロックへの書き込みと消去ブロックの消去の機会を低減し、改善されたガーベッジコレクションを提供できる。
本発明の実施例によるソリッドステートドライブ(SSD)を有するマシンを図示した図面である。 図1のマシンの追加的な詳細を図示した図面である。 図1のSSDの詳細を図示した図面である。 ライト(write)リクエストに対するストリームIDを決定する自動ストリーム検出ロジックを図示した図面である。 消去ブロックからの有効データを他のブロックにプログラムして移す、図1のSSDにおけるガーベッジコレクションを図示した図面である。 ストリームIDを決定するのに使用され得るデータの多様な属性を図示した図面である。 図3のSSDコントローラの詳細を図示した図面である。 図7のガーベッジコレクションロジックの詳細を図示した図面である。 本発明の実施例により、有効データをプログラムするように図7の入出力(I/O)キューに有効データを伝達する図8のライトリクエストロジックを図示した図面である。 本発明の実施例により、図7の自動ストリーム検出ロジックから受信されたストリームIDに対応するブロックを選択する図8のブロック選択ロジックを図示した図面である。 本発明の実施例により、ストリームIDを用いたガーベッジコレクションを遂行するための例示的な手順に対する順序図を図示した図面である。 本発明の実施例により、消去ブロックからの有効データを選択された第2ブロックにプログラムして移すための例示的な手順に対する順序図を図示した図面である。
本発明の実施例に対する参照が詳細に提供される。本発明の例示は添付された図面に図示される。以下の詳細な説明から、本発明の完全な理解が可能となるように数多くの詳細が陳述される。但し、当業者にとっては、斯かる具体的な詳細な説明なしに本発明を実施できることが理解されるべきである。他の例示で、よく知られた方法、手順、構成要素、回路及びネットワークは実施例の態様を曖昧にしないようにするため、詳細な説明をしない。
例えば、第1、第2などの用語が、ここで多様な要素を説明するのに使用されるが、このような要素は斯かる用語に制限されないと理解されるべきである。斯かる用語は、単純に一つの要素を、他の要素と区別するため使用される。例えば、第1モジュールは第2モジュールと命名され得るし、同様に、本発明の範囲を逸脱しない状態で、第2モジュールは第1モジュールと命名され得る。
ここで、本発明の説明に使用された用語の目的は、特定の実施例を説明するためであって、本発明を制限する意図はない。本発明の説明及び付加された請求項に使用される時、文脈上明白に違うように指示しない限り、単数の形式の“a”、“an”及び“the”は、なお、複数の形式を含むように意図される。なお、ここで使用される“及び/又は”の用語は一つ以上の連関及び列挙された事項の任意の全ての可能な組合を意味し包含するものとして理解されるべきである。“包含する”及び/又は“包含する〜”の用語は、詳細な説明で使用される時、陳述された特徴、数字、ステップ、動作、要素及び構成要素の存在を明示するものであり、一つ以上の他の特徴、数字、ステップ、要素、構成要素及び/又はそのグループの存在又は付加を排除しない。図面の構成要素及び特徴は、必ずしも実寸通りに描かれない。
ストリーム基盤のガーベッジコレクション(garbage collection)の場合、データがストリームIDに基づいて当初はブロックに配置されるにも拘わらず、異なる寿命を有するデータが混在する機会を提供する。このような結果は単一のストリーム内のデータの寿命が、時間の経過と共に転変(evolve)するので発生する。例えば、ホットデータ(hot data)がストリーム識別子(identifier, ID)「8」に割り当てられる時間区間が有り得る。但し、作業負荷がホスト上で変化するにつれデータ温度が変化し、従って与えられたストリームIDに割り当てられた、より古いデータブロックは、同一のストリームIDに属する、より新しいブロックと同一の期待寿命を有しない場合がある。
しかし、ガーベッジコレクションさえストリーミングを利用できる。ガーベッジコレクションの一部として有効データをプログラムする(書き込む)際に、消去ブロックの有効データに対しては、論理ブロックアドレス(LBA:Logical Block Address)(又は任意の他の属性)を手交(pass)し、斯かる有効LBAに対して、対応して検出された現在のストリームIDに該有効データを書き込む(write)ことにより、自動ストリーム検出アルゴリズムを利用できる。しかも、ストリームIDが、データがプログラムされる時間に再決定されるので、ストリームIDをデータと共に格納する必要がない。
ストリームIDを使用して有効データをプログラムするのに使用され得る二つの接近法がある。一つの方法は、プログラム動作を新規ライト(write、書き込み)として扱うことである。もっと具体的に、有効データは、アプリケーションからの元来のライトリクエスト(書き込み要求)のように見えるライトリクエストとして、SSDに伝送される。この接近法は2つの長所を有する。一番目に、ガーベッジコレクションは有効データを特別扱いして書き込む必要がなく、SSD内に既に存在するロジックに該書き込みプロセスを一任(leave)できる。二番目に、消去ブロックは有効データが実際に新しいブロックに書き込まれる前に消去可能になる。但し、斯かる接近法はブロックが消去された後、そして有効データの予定されたライトが完了される前に、電力障害(又は一部の類似で不運なイベント)が発生すると、データが消失するという問題点を有する。他の方法は、ガーベッジコレクションロジックに自動ストリーム検出アルゴリズムからストリームIDを要請させ、そのストリームIDを利用して有効データを書き込む場所を決定する。
図1は本発明の実施例によるソリッドステートドライブ(SSD)を有するマシンを図示した図面である。図1で、マシン105が図示される。マシン105は任意のマシンであって、デスクトップ(desk top)又はラップトップ(laptop)コンピュータ、サーバ(独立型サーバ(standalone))又はラックサーバ(rack server)、又は本発明の実施例を有益に使える任意の他の装置を包含するが、これに制限されない。なお、マシン105は専門化された携帯用コンピューティング装置、タブレットコンピュータ、スマートフォン及び他のコンピューティング装置を包含できる。マシン105は任意のアプリケーションを実行できるし、データベースアプリケーションが良い例示であるが、本発明の実施例は任意のアプリケーションへ拡張できる。
マシン105は、ここに示す特定の形式に限定されないが、プロセッサ110、メモリ115及びSSD(Solid State Drive)120を包含する。プロセッサ110は任意の種類のプロセッサであり、例えば、Intelの、Xeon、Celeron、Itanium又はAtomプロセッサ、AMDのOpteronプロセッサ、或いは、ARMのプロセッサある。図1では単一のプロセッサを示すが、マシン105は任意の個数のプロセッサを包含できる。メモリ115は、任意の種類のメモリであって、フラッシュメモリ、SRAM(Static RAM(Random Access Memory))、PRAM(Persistent RAM)、FRAM(登録商標)(Ferroelectric RAM)、又は、NVRAM(Non−Volatile RAM)(MRAM(Magnetoresistive RAM))など)の何れかであり得るが、典型的にはDRAMである。なお、メモリ115は相異なるメモリ形式の任意の組み合わせであり得る。メモリ115は、なおマシン105の一部であるメモリコントローラ125により制御される。
SSD120は任意の種類のSSDであって、ガーベッジコレクションを遂行する(フラッシュメモリを使用しない場合を含む)他の形式のストレージを包含するように拡張され得る。SSD120は、メモリ115内に駐在(reside)する装置ドライバ130により制御される。
図2は図1のマシン105の追加的な詳細を図示した図面である。図2を参照すれば、典型的に、マシン105はメモリコントローラ125とクロック205を包含する一つ以上のプロセッサ110を含み、プロセッサ110はマシン105の各構成要素の動作を調整するように使用される。なお、プロセッサ110は、例えば、RAM(Radom Access Memory)、ROM(Read−Only Memory)、又は他の、状態を保存する媒体を含むメモリ115と結合される。なお、プロセッサ110はストレージ装置120とも結合され、例えば、イーサネット(登録商標)コネクタ又は無線コネクタであるネットワークコネクタ210と結合される。なお、プロセッサ110はバス215と連結され、バス215には、使用者インタフェース220、入出力(I/O、Input/Output)エンジン225を使用して管理されるインタフェースポート、及び他の構成要素が連結される。
図3は、図1のSSD120の詳細を図示した図面である。図3において、SSD120は、ホストインタフェースロジック305、SSDコントローラ310及び多様なフラッシュメモリチップ315−1〜315−8を包含し、フラッシュメモリチップ315−1〜315−8は多様なチャンネル320−1〜320−4として組織化される。ホストインタフェースロジック305は、SSD120と図1のマシン105との間の通信を管理する。
SSDコントローラ310はフラッシュメモリチップ315−1〜315−8上のガーベッジコレクションの動作と共に、リード及びライト動作を管理する。SSDコントローラ310は、斯かる管理の一部を遂行するフラッシュ変換階層325を包含する。SSDコントローラ310の機能の本願に係る詳細については、図7などを参照して後述する。図3は、4個のチャンネル320−1〜320−4として組織化された8個のフラッシュメモリチップ315−1〜315−8を包含するSSD120を図示するが、本発明の実施例は任意の個数のチャンネルとして組織された任意の個数のフラッシュメモリチップを支援できる。
図4は、ライトリクエストに対するストリームIDを決定する自動ストリーム検出ロジックを図示した図面である。図4で、多様なライトリクエスト405−1〜405−4が図示される。各々のライトリクエスト405−1〜405−4は論理ブロックアドレス(LBA)410−1〜410−4を包含する。自動ストリーム検出ロジック415は、LBA410−1〜410−4を使用して、ライトリクエスト405−1〜405−4を割り当てるストリーム識別子(IDs)420−1〜420−4を決定する。例えば、自動ストリーム検出ロジック415は、ここでの全ての目的のための参照文献で包含される2017年4月27日出願された米国特許出願第15/499、877において説明されたように動作し、LBA410−1〜410−4に基づいてストリームID420−1〜420−4を割り当てる。但し、図4は、LBA410−1〜410−4を使用してストリームID420−1〜420−4を決定する自動ストリーム検出ロジック415を図示するが、本発明の別の実施例はライトリクエスト405−1〜405−4の任意の属性を使用し、ストリームID420−1〜420−4を決定できる。
フラッシュメモリ(又は、ガーベッジコレクションを遂行する他の装置)を使用するSSDにおいて、フラッシュメモリは通常、多重のページを含む消去ブロックとして組織化される。ページの各々は三つの状態の中で一つであり得る。斯かる三つの状態はフリー(free、現在どのようなデータも格納しない状態)、有効(valid、現在データを格納した状態)及び無効(invalid、以前に有効データを格納したが、最早有効データを格納せず、しかし未だフリーではない状態)である。
新しいデータがフラッシュメモリに書き込まれる時、フリーページの位置が探し出され、斯かるフリーページにデータが書き込まれる。その後、該ページは有効データを格納するとしてマーキングされる。ページは、典型的に消去ブロック内で順序通り書き込まれる。但し、フラッシュメモリの個々のページは通常、一旦書き込まれると重ねて書き込まれ(over−written)ない。よって、フラッシュメモリに格納されたデータが、アプリケーションにより変更される時、該データを含む全体のページがフラッシュメモリの新しいページに書き込まれる。その後、元のページは無効としてマーキングされる。“ガーベッジコレクション”は、SSDが消去ブロック単位で無効ぺージを使用可能(reclaim)とする処理過程である。斯かる処理過程は、消去ブロックの全てのページをリセットするステップ及び再びフリーとして該ページをマーキングするステップを包含する。
ページが二つではなくむしろ三つの可能な状態を有する理由は、ガーベッジコレクションが遂行される方式に起因する。もしも、ガーベッジコレクションが個々のページに対して遂行されると仮定するなら、無効状態は必要とならないであろう。ガーベッジコレクションはデータが無効化されるや否や、生起(実行)できるし、ページは即時フリーにされる。しかし実際には、ガーベッジコレクションは典型的に個々のページよりもっと大きいチャンク(chunk、塊り)に対して動作する。
斯かるチャンクは、消去ブロック又はスーパーブロック(superblocks)と命名され、任意の個数のページを包含できる。或るブロックがガーベッジコレクションの対象になると、現ブロック中の全てのページはフリー状態に遷移する。よって、現ブロック中の任意の現在有効データは、現ブロック中のページが消去される前に、何処か他のブロックのフラッシュメモリのフリーページに書き込まれ(斯かる処理過程はプログラム(プログラミング)と命名される)なければならない。
もしも、ガーベッジコレクションがブロック中の任意のデータが無効化されると直ちに、スタートすると仮定するならば、SSDは該ブロック中の有効ページから他のページにデータを移すのに相当膨大な時間を消費しなければならないはずである。消去ブロックからの有効データを他のページにプログラムすること自身が、それによる相当膨大なオーバヘッドを惹起するが、その事実を脇に措くとしても、フラッシュメモリは典型的に、限定された回数以上に書き込み(プログラム)アクセスされると信頼性が低下する(又は、より悪い場合には、使用不能になる)。
よって、消去ブロックからの有効データをプログラムするのに消費される時間量を最小化することが要求される。但し、同時に、ガーベッジコレクションは、消去ブロックの全てのページが無効としてマーキングされるまで遅延することはできない。フラッシュメモリはその全てのブロックが、有効又は無効としてマーキングされたページだけを含む(即ち、フリーページを含まない)状態になると、これは、これ以上データを該フラッシュメモリに書き込めないことを意味する。
図5は、消去ブロックからの有効データを他のブロックにプログラムして(書き込んで)移す、図1のSSD120におけるガーベッジコレクションを図示した図面である。図5において、ブロック505−1〜505−10が図示され、ブロック505−2は特に詳細に示される。ブロック505−2は4個のページ510−1〜510−4を包含し、ページ510−1、510−2、510−4は現在無効としてマーキングされ、ページ510−3は現在有効データが格納されていることを意味する有効としてマーキングされている。従って、ブロック505−2がガーベッジコレクションの対象になる時、ページ510−3の有効データ(以下、単に「有効データ510−3」ともいう)は例えば、ページ515−1〜515−4を含むと図示されるブロック505−8のような他のブロックにプログラムされるべきである。ページ510−3の有効データは具体的には例えば、破線の矢印520で図示されたように、ページ515−1にプログラムされる。ページ510−3の有効データがページ515−1にプログラムされた後に、ブロック505−2の全てのページは無効としてマーキングされ、ブロック505−2全体が消去ブロックとしてガーベッジコレクションの対象になる。
図5は、10個のブロック505−1〜505−10を図示し、各々のブロックが4個のページを有する場合を図示するが、本発明の実施例は任意の個数のブロックを含む図1のSSD120を支援でき、各々のブロックは任意の個数のページを有し得る。本発明の実施例は、ブロック又はブロック当りのページの特定の個数に制限されない。
図6は、図4のストリームID420−1〜420−4を決定するのに使用され得るデータの多様な属性を図示した図面である。図6には、属性の集合605が図示される。属性の集合605は、LBA410、アプリケーションID610及び残余寿命615を包含する。例えば、LBA410は図1のSSD120に書き込まれるべきデータのLBAであり、アプリケーションID610は図1のSSD120に対してデータ書き込みを要請しているアプリケーションの識別子であり、残余寿命615はデータが(新しいデータに交替されるか単純に完全に除去されることで)無効化される前に、データが図1のSSD120に残っているであろうと期待される時間である。ストリームIDを決定するのに使用される他の可能な属性は、以下を含む。
順次性620:書き込まれるべきデータのLBAが以前のLBA(直前のライトリクエストであるか、又は、或るウィンドウ内の以前のライトリクエスト)に順次的なページにあるか。
アップデート頻度625:書き込まれたデータがどの程度頻繁にアップデート(現在データが書き込まれる場所のページを無効化する)されるであろうと期待されるか。
最新性630:書き込まれたデータのLBAが、どの程度近い以前に書き込まれたか。
ライトサイズ635:(同じ時期になされた他のライトに関するサイズに対して相対的な)書き込まれるべきデータのサイズ。
ライト時間640:(同じ時期になされた他のライトに関する書き込み時間に対して相対的な)データの書き込み時間。
リード頻度645:(他のデータのリード頻度に対して相対的に)リードされるべきデータがどの程度頻繁にリードされたか。
リード温度650:リードされるべきデータの“温度”、即ち、リードされるべきデータが“ホット(hot)”と考慮されるか“クール(cool)”と考慮されるか。
本発明の実施例は、図6に図示された属性を超えて、他の属性を支援できる。例えば、データをライトするアプリケーションにより要求されるQoS(Quality of Service)に対しては、要求に応じて、任意の他の属性が使用され得る。
従来技術においては、図4のストリームID420−1〜420−4は、ライトリクエスト405−1〜405−4が全て受信される時、決定される。図4のストリームID420−1〜420−4は、図4のライトリクエスト405−1〜405−4により書き込まれたデータに対するメタデータとして格納され得るが、ストリームID420−1〜420−4はアップデートされない。しかし、有効データ510−3(正確には、「ページ510−3に格納された有効データ」であるが、以下、このように「有効データ510−3」と略称する)のような、消去ブロックの有効データがガーベッジコレクションの一部として新しいブロックに書き込まれるべき時、図5の有効データ510−3が元来書き込まれた時に決定されたストリームIDは、図5の有効データ510−3と現在マッチングされるストリームを適切に表わせない場合もある。
別の言葉で言えば、もし図5の有効データ510−3がこの時新しいライトリクエストの対象として受信されたと仮定すると、図5の有効データ510−3は、元来書き込まれた時に割り当てられたストリームと異なるストリームに割り当てられるであろう。図5の有効データ510−3をプログラムする時にストリームIDをアップデートすることの長所は、元来のストリームIDが図5の有効データ510−3を書き込むためのブロックを選択するのに使用されると仮定した場合に生起するであろう属性よりも、さらに類似した属性を有するデータを格納するブロックに有効データ510−3がプログラムされ得るという点である。
以上、ガーベッジコレクションの処理過程、及びガーベッジコレクションの処理過程において図4のストリームID420−1〜420−4を適用する場合の長所を説明したが、ここで本発明の実施例を追加して記述する。図7は、図3のSSDコントローラ310の詳細を図示した図面である。図7においてSSDコントローラ310は、フラッシュ変換階層315の外に、レシーバ705、入出力(I/O)キュー710、自動ストリーム検出ロジック415、及びガーベッジコレクションロジック715を含む。レシーバ705は、図1のマシン105上で走る(実行される)アプリケーションなどの任意のソースから図4のライト(write)リクエスト405−1〜405−4を受信する。一旦受信されると、図4のライト(write)リクエスト405−1〜405−4は処理のために、I/Oキュー710に配置される。特定のライト(write)リクエストがI/Oキュー710から消去される時に、自動ストリーム検出ロジック415が該ライト(write)リクエストに対する適切なストリームIDを決定するために使用され、その後、データが図3の適切なフラッシュメモリ315−1〜315−8に書き込まれる。
ガーベッジコレクションロジック715は、図3の適切なフラッシュメモリ315−1〜315−8から消去ブロックを復旧させる。消去ブロックは、任意のアルゴリズムを使用して選択される。但し、任意の使用可能なページをランダムに採用してそのページに図5の有効データ510−3をプログラムする場合に比べて、ガーベッジコレクションロジック715は、図5の有効データ510−3をプログラムするべき適切なブロックを選択するにあたって、自動ストリーム検出ロジック415を有利に活用できる。ガーベッジコレクションロジックは、下記の図8を参照してさらに説明される。
図8は、図7のガーベッジコレクションロジック715の詳細を図示した図面である。本発明の一実施例において、ガーベッジコレクションロジック715はライト(write)リクエストロジック805及び消去ロジック810を含む。ガーベッジコレクションロジック715が図5の消去ブロック502−2のような消去ブロックを消去するように起動される際に、該消去ブロック内に図5の有効データを含むページ510−3がある場合には、まるでライト(write)リクエストが図1のマシン105上で走るアプリケーションによって提起された場合のように、ライト(write)リクエストロジック805はライト(write)リクエストを図7のレシーバ705を介してI/Oキュー710に伝達する。(もし、消去ブロックが有効データを有するページを含まないならば、プログラムが要求される有効データが無いことは自明である。一方、該消去ブロック内の全てのページが無効データを含む場合は、該消去ブロックを直接消去できる。)
このような方式でライト(write)リクエストが処理される場合、有効データ510−3は、図1のSSD120の新たなページに書き込まれる。図1のSSD120の観点からは、このようなライト(write)リクエストは、図1のマシン105上を走るアプリケーションによって提起されるライト(write)リクエストと異なることはなく、同様に処理される。一旦ライト(write)リクエストが図7のI/Oキュー710に伝達されると、消去ロジック810は図5の消去ブロック505−2を消去する。ガーベッジコレクションロジック715は消去ロジック810を開始する前に、有効データが新たなページに書き込まれることを待つ必要のない点に留意されたい。何故ならば、該有効データは図7のI/Oキュー710内に完全に存在し、順に書き込まれるであろうから。もちろん、電力障害のような想定外の状況によってもデータが消失しないことを保証され場合には、消去ロジック810は図5の消去ブロック505−2を消去処理する前に、データの書き込みが成功するまで待たねばならない。但し、図1のSSD120がこのような保証を提供する場合は、想定外の状況によってもデータが消失しないように図7のI/Oキュー710のデータを保証する他のメカニズムが既に図1のSSD120内に通常、存在する。
図9は本発明の実施例によって、有効データをプログラムするように図7のI/Oキュー710に有効データを伝達する図8のライト(write)リクエストロジック805を図示した図面である。図9において、一旦、ブロック505−2が消去ブロックとして選択されて有効データ510−3が識別されると、ライト(write)リクエストロジック805は、ライト(write)リクエストを生成して、図1のSSD120上の新たなページに戻り、有効データ510−3を再書き込みする。このようなライト(write)リクエストはI/Oキュー710に伝達でき、図1のマシン105上を走るアプリケーションに由来する元来のライト(write)リクエストと同様に処理できる。
図7のガーベッジコレクションロジック715によって有効データ510−3を直接プログラムすることを避けるために、I/Oキュー710に有効データ510−3を配置すると、元来のライト(write)リクエストの書き込み遅延(latency)を増加させうると考えられがちであるが、書き込み遅延への実際の影響は僅かである。理想的には、図7のガーベッジコレクションロジック715は、図1のSSD120に対する他の需要が低い場合に動作する。図1のSSD120が多数の元来のライト(write)リクエストを図1のマシン105上で走るアプリケーションから受信している最中には、図7のガーベッジコレクションロジック715は消去ブロックの復旧を、望ましくは開始しない。
図7のガーベッジコレクションロジック715は、図1のSSD120が異常に低いフリーページカウントを示す場合に開始され得る。但し、このような状況が発生すれば、有効データのプログラミング(書き込み)は何れにしても発生し、元来のライト(write)リクエストの書き込み遅延に対しては類似の影響を予期せざるを得ない。よって、有効データ510−3をプログラムする際に、あたかも元来のライト(write)リクエストの場合のようにI/Oキュー710を使用することは、伝統的な従来のガーベッジコレクションにおけるよりも大きい影響を惹起する可能性がない。そして、有効データ510−3は、残余寿命などの類似する属性を有する他のデータと共に配置される可能性が大きいので、ガーベッジコレクションの性能は、将来の有効データに対するプログラミング(書き込み)の機会を低減することにより、向上できる。
図8に戻って、本発明の他の実施例によるガーベッジコレクションロジック715は消去ロジック810、ブロック選択ロジック815、及びプログラミングロジック820を含む。ブロック選択ロジック815は、図7の自動ストリーム検出ロジック415にアクセスして、図5の有効データ510−3に対する新たなストリームIDを決定する。即ち、ブロック選択ロジック815は図5の有効データ510−3に係る図6の属性の集合605内の一つの属性を図7の自動ストリーム検出ロジック415に伝達し、これに応答してストリームIDを受信する。その後、ブロック選択ロジック815は、そのストリームIDを使用して、有効データ510−3をプログラミングするための適切なブロックを選択する。これは、従来の伝統的な技術を使用するプログラミングロジック820によって行われうる。
ブロック選択ロジック815は、図7の自動ストリーム検出ロジック415から受信されたストリームIDに基づいて任意の適切なブロックを選択できる点に留意されたい。例えば、選択されたブロックは、選択されたストリームIDを有する図1のマシン105上で走るアプリケーションから受信された元来のライト(write)リクエストに応答して、書き込みされたデータを保有するブロックでありうる。又は、選択されたブロックは、ガーベッジコレクションの結果としてプログラムされ、このようなストリームIDによって、割り当てられたデータのみ格納する特殊ブロックでありうる。なお、本発明の実施例は、他の方式で受信されたストリームIDに応答してブロックを選択するように、ブロック選択ロジック815を具現できる。
図10は本発明の実施例によって、図7の自動ストリーム検出ロジック415から受信されたストリームIDに応答するブロックを選択する図8のブロック選択ロジック815を図示した図面である。図10において、ブロック選択ロジック815は、自動ストリーム検出ロジック415からストリームID1005を受信する。ストリームID1005は、有効データ510−3の属性を使用して決定される。一旦、ブロック505−8のようなブロックが選択されると、フリーページ1010−3のような、ブロック505−8のフリーページの位置が探され、プログラミングロジック820は、有効データ510−3を例えばフリーページ1010−3に書き込む。一旦、このような動作が完了されると、図8の消去ロジック810は消去ブロック505−2を消去し、この消去ブロック505−2のページ510−1〜510−4は全て、フリーになる。
図7のガーベッジコレクションロジック715が具現される方法に関わらず、本発明の実施例は、大略、有効データ510−3がプログラムされるべき時に、有効データ510−3をプログラムするのに使用されるストリームIDを決定する。即ち、図7のガーベッジコレクションロジック715は、有効データ510−3が元来プログラムされる時に決定される図4のストリームID420−1〜420−4に依存しない。代わりに、図7のガーベッジコレクションロジック715は、大略、有効データ510−3が新たな(フリー)ページにプログラムされるべき時に、有効データ510−3をプログラムする際に使用されるストリームIDを決定する。また、図7のガーベッジコレクションロジック715は、有効データ510−3とともに格納されていたかも知れないストリームIDに依存しない。何故ならば、以前に決定されたストリームIDは最早、有効データ510−3をプログラムするための最善のストリーム選択を反映しない、からである。
図11は、本発明の実施例によって、図10のストリームID1005を用いたガーベッジコレクションを行うための例示的な手順に対するフローチャートを図示した図面である。図11のステップ1105において、図7のレシーバ705は一つ以上の図4の書き込みコマンド(ライトリクエスト)405−1〜405−4を受信する。ステップ1110において、図7の自動ストリーム検出ロジック415は、図4の書き込みコマンド405−1〜405−4に対するストリームID420−1〜420−4を決定する。ステップ1115において、図3のSSDコントローラ310は、図4のストリームID420−1〜420−4に関連されたデータが書き込まれるべきブロックを選択し、ステップ1120において、図3のSSDコントローラ310は、図3のフラッシュメモリ315−1〜315−8にデータを書き込むように書き込みコマンド405−1〜405−4を実行する。
ステップ1125において、図3のSSDコントローラ310はガーベッジコレクションを行うべき時であるかを確認する。もしそうでなければ、この後の処理ステップは、ステップ1105に戻って追加的な書き込み(又は他の)コマンドを処理する。しかしながら、もし、図3のSSDコントローラ310がガーベッジコレクションを行うべき時間であれば、この後、処理ステップはステップ1130に続けられ、図3のSSDコントローラ310は、フォアグラウンド(Foreground)動作又はバックグラウンド(Background)動作の何れかとしてガーベッジコレクションを行う。後者の場合、ステップ1125における確認事項は、図3のSSDコントローラ310がガーベッジコレクションをするための時が到来したか否かに関することよりも、むしろ、アプリケーションからのリード(read)及びライト(write)リクエストに対して僅かな、又は最小限の影響しか与えずにガーベッジコレクションが進行できるレベルにまで活動が落ちたか否かに関することになる。
ステップ1130において、図7のガーベッジコレクションロジック715は、図5の消去ブロック505−2のような消去ブロックを識別する。ステップ1135において、図3のガーベッジコレクションロジック715は、図5の消去ブロック505−2内の有効データを識別する。そして、ステップ1140において、図7のガーベッジコレクションロジック715は、図7の自動ストリーム検出ロジック415によって決定されたとおりに、図10のストリームID1005に基づいて選択された、消去ブロック505−2とは相異なる第2ブロック505−8に図5の有効データ510−3をプログラムする。処理ステップはこの後、他の書き込み(又は他の)コマンドを処理するステップ1105に戻る。又は、他に消去すべきブロックがある場合はその消去ブロックを識別するステップ1130に戻る(図示せず)。
注意深い読者は、図11に図示された例示的な手順が消去ブロックを消去すること自身に関して陳述しなかった点に気付くであろう。これは、消去動作のタイミングは本発明の実施例に依存して変化できるためである。消去動作は、図12に図示され、後述される。
図12は、本発明の一実施例によって、ガーベッジコレクションの間、図5の消去ブロック505−2内の図5の有効データ510−3(正確には、「ページ510−3に格納された有効データ」であるが、以下、簡略に「有効データ510−3」という)を、該選択された第2ブロック505−8のフリーページにプログラムする(書き込む)ための例示的な手順のフローチャートを図示した図面である。図12は実際に、プログラム動作を行う二つの異なる接近法を説明する。本発明の一実施例の場合、ステップ1205において、図8のライト(write)リクエストロジック805は、図7のI/Oキュー710にライト(write)リクエストを配置する。実効的には、ステップ1205は、ライト(write)リクエストのソースを除外して、図11のステップ1105と同一である。その時点で、フリーページに図5の有効データ510−3を書き込む動作は、図1のマシン105上で走るアプリケーションに由来する書き込みとともに処理される。ステップ1210にて、図8の消去ロジック810は、この後、ライト(write)リクエストが完了されることを待つか、又は、待たずに図5の消去ブロック505−2を消去する。
本発明の他の実施例の場合、ステップ1215において、図8のブロック選択ロジック815は、図7の自動ストリーム検出ロジック415から図10のストリームID1005を要請する。ステップ1220において、図8のブロック選択ロジック815は図10のストリームID1005に基づいてブロックを選択する。ステップ1225において、図8のプログラミングロジック820は、図5の有効データ510−3を選択されたブロックのフリーページに書き込む。その後、ステップ1230にて、図8の消去ブロック810が図5の消去ブロック505−2を消去する。
図11及び図12において、本発明の一部の実施例が図示される。但し、当業者は、本発明の他の実施例がステップの順序の変更、ステップの省略、及び/又は、図面に図示されてないリンクの追加により、尚、具現可能であることを認識するであろう。このような全てのフローチャートの変化は明示的な記述の有無に関わらず、本発明の実施例として見なされる。
次の記述は、本発明の或る一部の態様が具現できる適切な単数又は複数のマシンの簡略且つ一般的な説明を提供する意図がある。単数又は複数のマシンは、少なくとも部分的には、他のマシン、バーチャルリアリティー(VR)環境との相互作用、バイオ認識フィードバック、又は他の入力信号から受信された指示のみならず、キーボード、マウス等のような伝統的な入力装置からの入力によって制御される。ここで使用される「マシン」の用語は、単一マシン、仮想マシン、又は複数のマシン、複数の仮想マシン、又は共に動作する装置と通信的に結合されたシステムを広く含むように意図される。例示的なマシンは、例えば、自動車、汽車、タクシー等の個人的又は公的な運送手段のような運送装置のみならず、パーソナルコンピュータ、ワークステーション、サーバ、ポータブルコンピュータ、ハンドヘルド装置、電話、タブレットのようなコンピューティング装置を含む。
単数又は複数のマシンはプログラム可能か、又は、プログラム不可なロジック装置又はアレイ、ASIC(Application Specific Integrated Circuits)、組込み式(エンベデッド)のコンピュータ、スマートカード等のような組込み式(embedded)のコントローラを含む。単数又は複数のマシンは、ネットワークインタフェース、モデム、又は他の通信的結合などを介して一つ以上の遠隔マシンとの一つ以上の連結を用いることができる。マシンはイントラネット、インタネット、LAN(Local Area Networks)、 WAN(Wide Area Networks)等のように、物理的及び/又は論理的ネットワーク方式により互いに連結できる。当業者は、ネットワーク通信がRF(Radio Frequency)、衛星、マイクロ波、IEEE(Institute of Electrical and Electronics Engineers)802.11、Bluetooth(登録商標)、光学、赤外線、ケーブル、レーザー等を含む様々な有線及び/又は無線の短距離又は長距離のキャリアとプロトコルを用い得ることを理解するであろう。
本発明の実施例は、機能、手順、データ構造、アプリケーションプログラム等を含む関連データと結合して、又は該関連データを参照して記述できる。該関連データはマシンによってアクセスされると、該マシンを、実作業を行うか、又は抽象的なデータ形式又は低いレベルのハードウェア文脈を定義するマシンに帰着する。関連するデータは、例えば、RAM、ROM等の揮発性及び/又は不揮発性メモリ、又はハードドライブ、フロッピーディスク、光学ストレージ、テープ、フラッシュメモリ、メモリスティック、デジタルビデオディスク、生物学的ストレージ等を含む他のストレージ装置、及びそれらの関連するストレージ媒体に格納できる。関連するデータはパケット、シリアルデータ、並列データ、伝播された信号等の形式で、物理的及び/又は論理的ネットワークを含む伝送環境を通じて移動できる。そして、関連するデータは、圧縮又は暗号化されたフォマットで使用できる。関連するデータは分離された環境で使用でき、マシンアクセスのために、ローカル及び/又は遠隔で格納されうる。
本発明の実施例は、一つ以上のプロセッサによって実行可能な命令語を含む類型の非一時的なマシン判読できる媒体を含むことができ、命令語は、ここで説明されるように、本発明の要素を行うための命令語を含むことができる。
図示された実施例を参照して、本発明の原理を説明及び図示したように、図示された実施例は、このような原理を逸脱しない詳細及び配列に変更されうるし、任意の方式に組み合わせることができる。上述の説明は、特定の実施例にフォーカシングされたが、他の構成が考慮されうる。特に、「本発明の実施例による」等の表現がここで使用されるが、このようなフレーズは、一般的に実施例の可能性を参考することを意味し、本発明の特定の実施例の構成を制限するものと意図されない。ここで使用されたように、このような用語は、他の実施例と組み合わせられる同一又は他の実施例を参考できる。
前もって図示された実施例は、本発明をそれによって制限するものと解釈されてはならない。たとえ、一部の実施例が説明されたとしても、当業者は、数々の変更が本発明の新たな教示及び長所から実質的に逸脱しない実施例にできることを容易に理解できるであろう。よって、このような全ての変更は、請求項に定義されることによって、本発明の範囲内に含まれるものと意図される。
結論的に、ここで説明された実施例に対する置き換えの多様性の観点で、このような詳細な説明及び添付資料は、単純に図示的なものと意図され、本発明の範囲を制限するものと受け入れられてはならない。よって、本発明で請求されたものは、下記の請求項及びその均等物の範囲及び思想内に有り得るこのような全ての変更である。
本発明は、改善されたガーベッジコレクションによってソリッドステートドライブ、ストレージ媒体及びその動作方法において有用である。
105 マシン
110 プロセッサ
115 メモリ
120 ソリッドステートドライブ(SSD)
125 メモリコントローラ
130 装置ドライバ
205 クロック
210 ネットワークコネクタ
215 バス
220 使用者インタフェース
225 入出力(I/O、Input/Output)エンジン
305 ホストインタフェースロジック
310 SSDコントローラ
315−1〜315−8 フラッシュメモリチップ
320−1〜320−4 チャンネル
325 フラッシュ変換階層
405−1〜405−4 ライトリクエスト
410、410−1〜410−4 論理ブロックアドレス(LBA)
415 自動ストリーム検出ロジック
420−1〜420−4 ストリーム識別子(ストリームID)
505−1〜505−10 ブロック、消去ブロック
510−1〜510−4、515−1〜515−4 ページ
510−3 (ページ410−3に格納された)有効データ
515−1〜515−4 フリーページ
605 属性の集合
610 アプリケーションID
615 残余寿命
620 順次性
625 アップデート頻度
630 最新性
635 ライトサイズ
640 ライト時間
645 リード頻度
645 リード温度
705 レシーバ
710 入出力(I/O)キュー
715 ガーベッジコレクションロジック
805 ライト(write)リクエストロジック
810 消去ロジック
815 ブロック選択ロジック
820 プログラミングロジック
1005 ストリーム識別子(ID)1010−3 フリーページ
1105〜1140 ステップ
1205〜1230 ステップ

Claims (24)

  1. ソリッドステートドライブ(SSD)であって、
    データを格納するフラッシュメモリと、
    ここで、前記フラッシュメモリは、ホストコンピュータからの第1書き込み要求に応答する第1ブロックに第1有効データを格納し、前記ホストコンピュータからの第2書き込み要求に応答する第2ブロックに第2有効データを格納し、前記第1ブロックは、前記第1書き込み要求に応答する第1ストリーム識別子(ID)に応答し、前記第2ブロックは、前記第2書き込み要求に応答する第2ストリーム識別子(ID)に応答し、
    前記フラッシュメモリへのデータの書き込み及び前記フラッシュメモリからのデータの読み取りを管理するSSDコントローラと、
    前記第1有効データの属性に応答する第3ストリーム識別子(ID)を選択するための自動ストリーム検出ロジックと、
    ここで、前記第3ストリーム識別子(ID)は、前記第1ストリーム識別子(ID)、前記第2ストリーム識別子(ID)、又は異なるストリーム識別子(ID)のいずれかであり得、前記自動ストリーム検出ロジックは、前記第1ストリーム識別子(ID)、前記第2ストリーム識別子(ID)、前記第3ストリーム識別子(ID)、又は前記異なるストリーム識別子(ID)の内のいずれかを選択でき、
    ガベージコレクションに対し前記フラッシュメモリ内の前記第1ブロックを選択し、前記自動ストリーム検出ロジックによって決定された前記第3ストリーム識別子(ID)に応答して、前記第1ブロックの前記第1有効データを第3ブロックにプログラムするガーベッジコレクションロジックと、を有し、
    前記自動ストリーム検出ロジックは、前記ガーベッジコレクションロジックがガーベッジコレクションのための(for garbage collection)前記第1ブロックを選択した後、前記第3ストリーム識別子(ID)を決定することを特徴とするソリッドステートドライブ(SSD)。
  2. 前記SSDコントローラは、ホストコンピュータ上のアプリケーションからの要求(request)を管理する入出力(I/O)キューを含み、
    前記ホストコンピュータ上のアプリケーションからの要求は、読み取り要求と書き込み要求の両方が含まれ
    前記ガーベッジコレクションロジックは、前記第1有効データに対するプログラミング書き込み要求を前記入出力(I/O)キューに配置するための書き込み要求ロジックを含むことを特徴とする請求項1に記載のソリッドステートドライブ(SSD)。
  3. 前記SSDコントローラは、前記アプリケーションからの以前の書き込み要求を受信するレシーバ(receiver)をさらに含み、
    前記以前の書き込み要求は、前記第1有効データと、ガベージコレクションユニットが前記ガベージコレクションのために第1ブロック選択する前に前記第1有効データが前記第1ブロックに書き込まれる結果となる以前の書き込み要求と、を含むことを特徴とする請求項2に記載のソリッドステートドライブ(SSD)。
  4. 前記ソリッドステートドライブは、前記第1有効データを前記以前の書き込み要求に応答して前記第1ブロックに書き込み、前記自動ストリーム検出ロジックから前記第1ストリーム識別子(ID)を書き込み、
    前記第1ストリーム識別子(ID)は、前記自動ストリーム検出ロジックが前記第1有効データに応答して選択される少なくとも2つのストリーム識別子(ID)の内の1つであることを特徴とする請求項3に記載のソリッドステートドライブ(SSD)。
  5. 前記ガーベッジコレクションロジックは、前記第1ブロックを消去するための消去ロジックをさらに含むことを特徴とする請求項2に記載のソリッドステートドライブ(SSD)。
  6. 前記消去ロジックは、前記プログラミング書き込み要求が前記ソリッドステートドライブによって処理された後、前記第1ブロックを消去するように動作することを特徴とする請求項5に記載のソリッドステートドライブ(SSD)。
  7. 前記消去ロジックは、前記書き込み要求ロジックがプログラミング書き込み要求を前記入出力(I/O)キューに配置した後、前記プログラミング書き込み要求が前記ソリッドステートドライブによって処理される前に、前記第1ブロックを消去するように動作することを特徴とする請求項5に記載のソリッドステートドライブ(SSD)。
  8. 前記ガーベッジコレクションロジックは、前記第1有効データをプログラムする前に、前記自動ストリーム検出ロジックから前記第3ストリーム識別子(ID)を要求し
    前記ガーベッジコレクションロジックは、前記第3ストリーム識別子(ID)に応答して第3ブロックを選択するためのブロック選択ロジックと、
    前記第1有効データを前記第3ブロックに書き込むためのプログラミングロジックと、を含み、
    前記第3ブロックは、前記ブロック選択ロジックによって選択される複数の第3ブロックの内の1つであることを特徴とする請求項1に記載のソリッドステートドライブ(SSD)。
  9. 前記第3ブロックは、ガベージコレクション中にプログラムされたデータのみを格納する特別なブロックであることを特徴とする請求項8に記載のソリッドステートドライブ(SSD)。
  10. 前記第3ストリーム識別子(ID)は、前記ソリッドステートドライブへの前記第1有効データの書き込みを最初(originally)に担当するアプリケーションのアプリケーションID、前記第1有効データに対する残余寿命、前記第1有効データに対する順次性(sequentiality)、前記第1有効データに対する最新性(recency)、前記第1有効データに対する書き込みサイズ、前記第1有効データに対する書き込み時間、及び前記第1有効データに対する読み出し頻度の内の少なくとも一つに応答することを特徴とする請求項1に記載のソリッドステートドライブ(SSD)。
  11. ソリッドステートドライブ(SSD)のガーベッジコレクションに係る方法であって、
    ガーベッジコレクションのためのソリッドステートドライブの第1ブロックを識別する(identifying)ステップと、
    ここで、前記ソリッドステートドライブは、第2有効データを格納する第2ブロック、第1ストリーム識別子(ID)に応答する第1ブロック、及び第2ストリーム識別子(ID)に応答する第2ブロック、ホストコンピュータからの第1書き込み要求に応答して前記第1ブロックに格納された第1有効データ、及び前記ホストコンピュータからの第2書き込み要求に応答して第2ブロックに格納された第2有効データを含み、
    プログラミングを要請する前記第1ブロックの前記第1有効データを識別するステップと、
    自動ストリーム検出ロジックによって、前記第1有効データの属性(attributes)に応答する前記第1有効データに対する第3ストリーム識別子(ID)を選択するステップと、
    ここで、前記自動ストリーム検出ロジックは、前記第1ストリーム識別子(ID)、前記第2ストリーム識別子(ID)、及び前記第3ストリーム識別子(ID)としての異なるストリーム識別子(ID)の内のいずれかを選択でき、前記第3ストリーム識別子(ID)は、プログラミングを必要とする前記第1ブロック内の前記第1有効データが識別された後に選択され、
    前記第1ブロックの前記第1有効データを前記第3ストリーム識別子(ID)に応答して選択される第3ブロックにプログラミングするステップと、を有することを特徴とする方法。
  12. 前記プログラミングを要請する前記第1ブロック内の前記第1有効データを識別する前に
    前記ソリッドステートドライブにおいて、ガベージコレクションのための前記ソリッドステートドライブの前記第1ブロックを識別する前に、アプリケーションからの第1書き込み要求で前記第1有効データを受信するステップと、
    前記第1有効データの属性に応答する第1ストリーム識別子(ID)を決定するステップと、
    前記第1ストリーム識別子(ID)に応答する前記第1ブロックを選択するステップと、
    前記第1書き込み要求に応答して、前記第1有効データを前記第1ブロックに書き込むステップと、をさらに有することを特徴とする請求項11に記載の方法。
  13. 前記第1ブロックの前記第1有効データを前記第3ストリーム識別子(ID)に応答して選択された第3ブロックにプログラミングするステップは、プログラミング書き込み要求を入出力(I/O)キューに入れて、前記第1有効データを前記第3ブロックに書き込むステップを含み、
    前記入出力(I/O)キューは、ホストコンピュータ上のアプリケーションからの要求を受信するよう動作し、
    前記ホストコンピュータ上のアプリケーションからの要求は、読み取り要求と書き込み要求の両方を含むことを特徴とする請求項11に記載の方法。
  14. 前記第1ブロックを消去するステップをさらに有することを特徴とする請求項13に記載の方法。
  15. 前記第1ブロックを消去するステップは、前記第1有効データが前記第3ブロックに書き込まれる前に、前記第1ブロックを消去するステップを含むことを特徴とする請求項14に記載の方法。
  16. 前記第1ブロックの前記第1有効データを前記第3ストリーム識別子(ID)に応答して選択された第3ブロックにプログラミングするステップは、
    前記第1有効データの属性に応答する前記第1有効データの前記第3ストリーム識別子(ID)を決定するステップと、
    前記第3ストリーム識別子(ID)に応答する前記第3ブロックを選択するステップと、
    前記第1有効データを前記第3ブロックにプログラミングするステップと、を含み、
    前記第3ブロックは、前記第3ストリーム識別子(ID)に応答して選択される複数の第3ブロックの内の1つであることを特徴とする請求項11に記載の方法。
  17. 前記第3ストリーム識別子(ID)に応答する前記第3ブロックを選択するステップは、前記第3ストリーム識別子(ID)に応答する特別なブロックを選択するステップを含み、
    前記特別なブロックは、前記ガーベッジコレクションの中にプログラムされたデータのみを格納することを特徴とする請求項16に記載の方法。
  18. 前記第3ストリーム識別子(ID)は、前記ソリッドステートドライブへの前記第1有効データの書き込みを最初(originally)に担当するアプリケーションのアプリケーションID、前記第1有効データに対する残余寿命、前記第1有効データに対する順次性(sequentiality)、前記第1有効データに対する最新性(recency)、前記第1有効データに対する書き込みサイズ、前記第1有効データに対する書き込み時間、及び前記第1有効データに対する読み出し頻度の内の少なくとも一つに応答することを特徴とする請求項11に記載の方法。
  19. 前記第1有効データの属性の値は、前記第1書き込み要求に応じて変化することを特徴とする請求項11に記載の方法。
  20. 非一時的なストレージ媒体を含む物品(article)であって、
    前記非一時的なストレージ媒体は、マシンによって実行される時、下記の手順を結果する命令語を格納しており、
    前記手順は、ガーベッジコレクションのためのソリッドステートドライブにおいて第1ブロックを識別するステップと、
    ここで、前記ソリッドステートドライブは、第2有効データを格納する第2ブロック、第1ストリーム識別子(ID)に応答する第1ブロック、及び第2ストリーム識別子(ID)に応答する第2ブロック、ホストコンピュータからの第1書き込み要求に応答して前記第1ブロックに格納された第1有効データ、及び前記ホストコンピュータからの第2書き込み要求に応答して第2ブロックに格納された第2有効データを含み、
    プログラミングを要請する前記第1ブロックの前記第1有効データを識別するステップと、
    自動ストリーム検出ロジックによって、前記第1有効データの属性(attributes)に応答する前記第1有効データに対する第3ストリーム識別子(ID)を選択するステップと、
    ここで、自動ストリーム検出ロジックは、前記第1ストリーム識別子(ID)、前記第2ストリーム識別子(ID)、及び第3ストリーム識別子(ID)としての異なるストリーム識別子(ID)の内のいずれかを選択でき、前記第3ストリーム識別子(ID)は、プログラミングを必要とする前記第1ブロック内の前記第1有効データが識別された後に選択され、
    前記第1ブロックの前記第1有効データを前記第3ストリーム識別子(ID)に応答して選択される第3ブロックにプログラミングするステップと、を有することを特徴とする物品。
  21. 前記第1ブロックの前記第1有効データを前記第3ストリーム識別子(ID)に応答して選択された第3ブロックにプログラミングするステップは、プログラミング書き込み要求を入出力(I/O)キューに入れて、前記第1有効データを前記第3ブロックに書き込むステップを含み、
    前記入出力(I/O)キューは、ホストコンピュータ上のアプリケーションからの要求を受信するよう動作し、
    前記ホストコンピュータ上のアプリケーションからの要求は、読み取り要求と書き込み要求の両方を含むことを特徴とする請求項20に記載の物品。
  22. ソリッドステートドライブ(SSD)のホストコンピュータから、第1有効データを含む第1書き込み要求を受信するステップと、
    前記第1書き込み要求に応答する第1ストリーム識別子(ID)を選択するステップと、
    前記第1書き込み要求に応答して、前記第1ストリーム識別子(ID)に応答する前記ソリッドステートドライブの第1ブロックに、前記第1有効データを書き込むステップと、
    前記ソリッドステートドライブの前記ホストコンピュータから、第2有効データを含む第2書き込み要求を受信するステップと、
    前記第2書き込み要求に応答して前記第1ストリーム識別子(ID)とは異なる第2ストリーム識別子(ID)を選択するステップと、
    前記第2書き込み要求に応答して、前記第2ストリーム識別子(ID)に応答する前記ソリッドステートドライブの第2ブロックに、前記第2有効データを書き込むステップと、
    前記第1有効データを前記第1ブロックに書き込み、前記第2有効データを前記第2ブロックに書き込んだ後、ガーベッジコレクションのための前記第1ブロックを識別するステップと、
    前記第1ブロックの前記第1有効データをプログラミングが要請されるものとして識別するステップと、
    自動ストリーム検出ロジックによって、前記第1有効データの属性(attributes)に応答する第3ストリーム識別子(ID)を選択するステップと、
    ここで、前記第3ストリーム識別子(ID)は、前記第1ストリーム識別子(ID)、前記第2ストリーム識別子(ID)、又は異なるストリーム識別子(ID)の内のいずれかであり、前記自動ストリーム検出ロジックは、前記第1有効データに対して前記第1ストリーム識別子(ID)、前記第2ストリーム識別子(ID)、又は前記異なるストリーム識別子(ID)の内のいずれかを選択することができ、
    前記第3ストリーム識別子(ID)に応答して前記第1有効データを前記ソリッドステートドライブの第3ブロックにプログラミングするステップと、を有することを特徴とする方法。
  23. 前記第1有効データの属性に応答する前記第3ストリーム識別子(ID)を選択するステップは、前記第1有効データの属性に応答する前記第2ストリーム識別子(ID)を選択するステップを含み、
    前記第3ブロックは、前記第2ブロックであることを特徴とする請求項22に記載の方法。
  24. ソリッドステートドライブ(SSD)のホストコンピュータから、第1有効データを含む第1書き込み要求を受信するステップと、
    前記第1書き込み要求に応答する第1ストリーム識別子(ID)を選択するステップと、
    前記第1書き込み要求に応答して、前記第1ストリーム識別子(ID)に応答する前記ソリッドステートドライブの第1ブロックに、前記第1有効データを書き込むステップと、
    前記ソリッドステートドライブの前記ホストコンピュータから、第2有効データを含む第2書き込み要求を受信するステップと、
    前記第2書き込み要求に応答して前記第1ストリーム識別子(ID)とは異なる第2ストリーム識別子(ID)を選択するステップと、
    前記第2書き込み要求に応答して、前記第2ストリーム識別子(ID)に応答する前記ソリッドステートドライブの第2ブロックに、前記第2有効データを書き込むステップと、
    前記ソリッドステートドライブの前記ホストコンピュータから、第3有効データを含む第3書き込み要求を受信するステップと、
    前記第3書き込み要求に応答して前記第2ストリーム識別子(ID)を選択するステップと、
    前記第3書き込み要求に応答して、前記第2ストリーム識別子(ID)に応答する前記ソリッドステートドライブの第3ブロックに、前記第3有効データを書き込むステップと、
    前記第1有効データを前記第1ブロックに書き込み、前記第2有効データを前記第2ブロックに書き込み、前記第3有効データを前記第3ブロックに書き込んだ後、ガーベッジコレクションのための前記第1ブロックを識別するステップと、
    前記第1ブロックの前記第1有効データをプログラミングが要請されるものとして識別するステップと、
    自動ストリーム検出ロジックによって、前記第1有効データの属性(attributes)に応答する前記第1ストリーム識別子(ID)を選択するステップと、
    前記第1ストリーム識別子(ID)に応答して前記第1有効データを、前記ソリッドステートドライブ上の第4ブロックにプログラミングするステップと、
    ガーベッジコレクションのための前記第2ブロックを識別するステップと、
    前記第2ブロックの前記第2有効データをプログラミングが要請されるものとして識別するステップと、
    前記自動ストリーム検出ロジックによって、前記第2有効データの属性に応答する前記第1ストリーム識別子(ID)を選択するステップと、
    前記第1ストリーム識別子(ID)に応答して前記第2有効データを、前記ソリッドステートドライブ上の第5ブロックにプログラミングするステップと、
    ガーベッジコレクションのための前記第3ブロックを識別するステップと、
    前記第3ブロックの前記第3有効データをプログラミングが要請されるものとして識別するステップと、
    前記自動ストリーム検出ロジックによって、前記第3有効データの属性に応答する、前記第1ストリーム識別子(ID)及び前記第2ストリーム識別子(ID)とは異なる第3ストリーム識別子(ID)を選択するステップと、
    前記第3ストリーム識別子(ID)に応答する前記第3有効データを前記ソリッドステートドライブ上の第6ブロックにプログラミングするステップと、を有することを特徴とする方法。

JP2018084363A 2017-04-25 2018-04-25 ソリッドステートドライブ(ssd)、そのガーベッジコレクションに係る方法、及びその具現に係る物品 Active JP6893897B2 (ja)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201762490027P 2017-04-25 2017-04-25
US62/490,027 2017-04-25
US15/620,814 2017-06-12
US15/620,814 US10698808B2 (en) 2017-04-25 2017-06-12 Garbage collection—automatic data placement

Publications (3)

Publication Number Publication Date
JP2018185815A JP2018185815A (ja) 2018-11-22
JP2018185815A5 JP2018185815A5 (ja) 2021-06-10
JP6893897B2 true JP6893897B2 (ja) 2021-06-23

Family

ID=63853844

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2018084363A Active JP6893897B2 (ja) 2017-04-25 2018-04-25 ソリッドステートドライブ(ssd)、そのガーベッジコレクションに係る方法、及びその具現に係る物品

Country Status (5)

Country Link
US (4) US10698808B2 (ja)
JP (1) JP6893897B2 (ja)
KR (1) KR102615007B1 (ja)
CN (1) CN108733321B (ja)
TW (1) TWI771383B (ja)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10761750B2 (en) 2017-03-09 2020-09-01 Netapp Inc. Selectively storing data into allocation areas using streams
JP2018160195A (ja) * 2017-03-23 2018-10-11 東芝メモリ株式会社 メモリシステムおよび不揮発性メモリの制御方法
US11379359B2 (en) * 2020-02-11 2022-07-05 Micron Technology, Inc. Selecting data transfer units associated with a data stream for garbage collection
KR20220022332A (ko) 2020-08-18 2022-02-25 에스케이하이닉스 주식회사 메모리 컨트롤러 및 그 동작 방법
KR20220041593A (ko) 2020-09-25 2022-04-01 에스케이하이닉스 주식회사 메모리 컨트롤러 및 그 동작 방법
KR20220049329A (ko) 2020-10-14 2022-04-21 삼성전자주식회사 스토리지 컨트롤러, 스토리지 장치, 및 스토리지 장치의 동작 방법
US11907123B2 (en) 2021-04-20 2024-02-20 International Business Machines Corporation Flash memory garbage collection

Family Cites Families (37)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006235960A (ja) 2005-02-24 2006-09-07 Fujitsu Ltd ガーベッジコレクション高速化方法
US20090119352A1 (en) 2007-11-05 2009-05-07 Steven Joseph Branda Method for Optimizing Generational Garbage Collection Through Object Life Heuristics
US8429658B2 (en) 2008-10-16 2013-04-23 International Business Machines Corporation Lock deferral for real-time garbage collection
TWI460588B (zh) 2009-07-17 2014-11-11 Toshiba Kk Memory management device and memory information processing device
US8688894B2 (en) 2009-09-03 2014-04-01 Pioneer Chip Technology Ltd. Page based management of flash storage
US20130138915A1 (en) 2010-08-11 2013-05-30 Nec Corporation Data processing system, data processing method, and program
JP2012084127A (ja) 2010-09-15 2012-04-26 Toshiba Corp 半導体装置
US20120110239A1 (en) 2010-10-27 2012-05-03 Seagate Technology Llc Causing Related Data to be Written Together to Non-Volatile, Solid State Memory
JP5500309B2 (ja) 2011-09-07 2014-05-21 日本電気株式会社 ストレージ装置
US10203881B2 (en) 2011-12-19 2019-02-12 Apple Inc. Optimized execution of interleaved write operations in solid state drives
JP5723812B2 (ja) 2012-03-16 2015-05-27 株式会社 日立産業制御ソリューションズ ファイルサーバ、データ入出力方法、i/oフックモジュールプログラム及びi/o代行デーモンプログラム
US8886880B2 (en) 2012-05-29 2014-11-11 Dot Hill Systems Corporation Write cache management method and apparatus
US9158687B2 (en) 2013-03-04 2015-10-13 Dot Hill Systems Corporation Method and apparatus for processing fast asynchronous streams
US20160196076A1 (en) 2013-07-08 2016-07-07 Wilus Institute Of Standards And Technology Inc. Memory system and method for controlling same
KR102074329B1 (ko) 2013-09-06 2020-02-06 삼성전자주식회사 데이터 저장 장치 및 그것의 데이터 처리 방법
US9854270B2 (en) 2013-12-19 2017-12-26 Qualcomm Incorporated Device and method for scalable coding of video information
US9459810B2 (en) 2013-12-30 2016-10-04 Sandisk Technologies Llc Storage module and method for configuring command attributes
US8874835B1 (en) 2014-01-16 2014-10-28 Pure Storage, Inc. Data placement based on data properties in a tiered storage device system
KR101544309B1 (ko) 2014-02-26 2015-08-12 한양대학교 산학협력단 스트림 기반의 비휘발성 메모리 제어 방법 및 장치
TWI554944B (zh) * 2014-06-20 2016-10-21 慧榮科技股份有限公司 快閃記憶體控制裝置、快閃記憶體控制系統以及快閃記憶體控制方法
EP3021208B1 (en) 2014-11-14 2019-01-09 Dot Hill Systems Corporation Method and apparatus for processing fast asynchronous streams
US9519429B2 (en) 2014-12-09 2016-12-13 Intel Corporation Techniques to manage multiple sequential write streams to a solid state drive
US10409526B2 (en) * 2014-12-17 2019-09-10 Violin Systems Llc Adaptive garbage collection
KR20160105624A (ko) 2015-02-27 2016-09-07 에스케이하이닉스 주식회사 데이터 처리 시스템 및 그것의 동작 방법
JP2016170583A (ja) * 2015-03-12 2016-09-23 株式会社東芝 メモリシステムおよび情報処理システム
US20160283125A1 (en) 2015-03-25 2016-09-29 Kabushiki Kaisha Toshiba Multi-streamed solid state drive
US9760281B2 (en) * 2015-03-27 2017-09-12 Intel Corporation Sequential write stream management
US9996302B2 (en) 2015-04-03 2018-06-12 Toshiba Memory Corporation Storage device writing data on the basis of stream
US10261725B2 (en) 2015-04-10 2019-04-16 Toshiba Memory Corporation Storage system capable of invalidating data stored in a storage device thereof
US10013177B2 (en) 2015-04-20 2018-07-03 Hewlett Packard Enterprise Development Lp Low write amplification in solid state drive
US9696935B2 (en) 2015-04-24 2017-07-04 Kabushiki Kaisha Toshiba Storage device that secures a block for a stream or namespace and system having the storage device
US9594513B1 (en) 2015-06-29 2017-03-14 EMC IP Holding Company LLC Data storage system with file system stream detection
KR102381343B1 (ko) 2015-07-27 2022-03-31 삼성전자주식회사 스토리지 장치 및 상기 스토리지 장치의 동작 방법
JP6403164B2 (ja) * 2015-09-11 2018-10-10 東芝メモリ株式会社 メモリシステム
US9880780B2 (en) 2015-11-30 2018-01-30 Samsung Electronics Co., Ltd. Enhanced multi-stream operations
JP2018022275A (ja) * 2016-08-02 2018-02-08 東芝メモリ株式会社 半導体記憶装置
JP2018160195A (ja) * 2017-03-23 2018-10-11 東芝メモリ株式会社 メモリシステムおよび不揮発性メモリの制御方法

Also Published As

Publication number Publication date
JP2018185815A (ja) 2018-11-22
TW201839612A (zh) 2018-11-01
US11194710B2 (en) 2021-12-07
CN108733321B (zh) 2023-05-23
US20200293443A1 (en) 2020-09-17
US20180307596A1 (en) 2018-10-25
US20220171701A1 (en) 2022-06-02
KR102615007B1 (ko) 2023-12-18
US20230333977A1 (en) 2023-10-19
CN108733321A (zh) 2018-11-02
US10698808B2 (en) 2020-06-30
KR20180119470A (ko) 2018-11-02
TWI771383B (zh) 2022-07-21
US11630767B2 (en) 2023-04-18

Similar Documents

Publication Publication Date Title
JP6893897B2 (ja) ソリッドステートドライブ(ssd)、そのガーベッジコレクションに係る方法、及びその具現に係る物品
US9418002B1 (en) Processing unit reclaiming requests in a solid state memory device
US10579267B2 (en) Memory controller and memory system
US9959046B2 (en) Multi-streaming mechanism to optimize journal based data storage systems on SSD
TW202001573A (zh) 記憶系統
US20130080685A1 (en) Storage devices and methods of driving storage devices
US20150149741A1 (en) Storage System and Control Method Thereof
CN112684976A (zh) 用于执行迁移操作的存储器系统及其操作方法
US9569113B2 (en) Data storage device and operating method thereof
US20150121033A1 (en) Information processing apparatus and data transfer control method
KR101876574B1 (ko) 데이터 입출력 컨트롤러 및 이를 포함하는 시스템
US11182329B2 (en) Data processing system and operating method thereof
US7421536B2 (en) Access control method, disk control unit and storage apparatus
US10042753B2 (en) Data storage device for storing data storage information of data and method for operating the same
KR101477776B1 (ko) 플래시 메모리에서의 페이지 교체 방법
EP4325347A1 (en) Submission queue entry age tracking
KR101466493B1 (ko) Ssd의 버퍼 제어 장치 및 방법
KR101691286B1 (ko) 입출력 정보 공유 방법, 상기 방법을 수행하는 저장 장치 및 호스트 장치
US20160034192A1 (en) Data storage device and operation method thereof
KR20180016660A (ko) 스토리지 내의 데이터 처리 장치의 제어 방법

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210426

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20210426

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20210426

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20210602

R150 Certificate of patent or registration of utility model

Ref document number: 6893897

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150