JP2019125366A - バリアーコマンドに基づいてデータを順に格納するストレージ装置 - Google Patents

バリアーコマンドに基づいてデータを順に格納するストレージ装置 Download PDF

Info

Publication number
JP2019125366A
JP2019125366A JP2019002547A JP2019002547A JP2019125366A JP 2019125366 A JP2019125366 A JP 2019125366A JP 2019002547 A JP2019002547 A JP 2019002547A JP 2019002547 A JP2019002547 A JP 2019002547A JP 2019125366 A JP2019125366 A JP 2019125366A
Authority
JP
Japan
Prior art keywords
data
barrier
command
host
volatile memory
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
JP2019002547A
Other languages
English (en)
Other versions
JP7274869B2 (ja
Inventor
珠榮 黄
Jooyoung Hwang
珠榮 黄
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
Priority claimed from KR1020180068127A external-priority patent/KR102646724B1/ko
Application filed by Samsung Electronics Co Ltd filed Critical Samsung Electronics Co Ltd
Publication of JP2019125366A publication Critical patent/JP2019125366A/ja
Application granted granted Critical
Publication of JP7274869B2 publication Critical patent/JP7274869B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
    • G11C7/1078Data input circuits, e.g. write amplifiers, data input buffers, data input registers, data input level conversion circuits
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0804Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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
    • 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
    • G06F12/0615Address space extension
    • G06F12/063Address space extension for I/O modules, e.g. memory mapped I/O
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/906Clustering; Classification
    • 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/0656Data buffering arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/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
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • G06F9/522Barrier synchronisation
    • 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

Abstract

【課題】 バリアーコマンドに基づいてデータを順に格納するストレージ装置を提供する。【解決手段】 不揮発性メモリ装置を含んだストレージ装置にデータをプログラムする方法は、ホストから第1バリアーコマンド、第2バリアーコマンド及び第3バリアーコマンドを受信し、ホストから第1バリアーコマンドに対応する第1データ、第2バリアーコマンドに対応する第2データ、第3バリアーコマンドに対応する第3データを受信し、第1及び第2バリアーコマンドを併合し、そして前記第1及び第2データを前記第1及び第2バリアーコマンドの順序に対応して連続的に不揮発性メモリ装置にプログラムし、第1及び第2データ全てのプログラム完了を検証し、第1及び第2データのプログラムが完了されれば、第1及び第2データをマップインし、そして第1又は第2データのプログラムが完了されなければ、第1及び第2データ全てをマップアウトし、そしてマップイン又はマップアウトの後に、不揮発性メモリ装置に第3データをプログラムする。【選択図】 図1

Description

本発明はストレージ装置に係り、さらに詳細にはバリアーコマンドに基づいてデータを順に格納するストレージ装置に係る。
ストレージ装置は不揮発性記憶媒体として、ストレージ装置に格納されたデータは電源供給に関わらず、永久的に或いは半永久的に保持されることができる。一般的に、ストレージ装置はホストから提供されたデータを不揮発性メモリではないバッファメモリに先に格納し、その次に、バッファメモリのデータを不揮発性メモリに格納する。しかし、上述したプログラム動作によってホストの書込み要請の順序が保障されないことがある。
ホストは書込み順序を保障するために、データを伝送し、そのデータがストレージ装置の不揮発性メモリに格納される時まで(フラッシュ(flush))待ち、そしてその次に、データをストレージ装置に伝送することがある。このような動作によってホストの性能が低下してしまい得る。したがって、ホストの性能低下無しで書込み要請の順序を保障することができるストレージ装置が必要である。
米国登録特許第8,006,047号明細書
本発明は上述した技術的課題を解決するためのものであって、本発明の目的はバリアーコマンドに基づいてデータを順に格納するストレージ装置を提供することにある。
本発明の実施形態に係る、不揮発性メモリ装置を含むストレージ装置にデータをプログラムする方法は、ホストから第1バリアーコマンド(barrier command)、第2バリアーコマンド、及び第3バリアーコマンドを受信し、前記ホストから前記第1バリアーコマンドに対応する第1データ、前記第2バリアーコマンドに対応する第2データ、前記第3バリアーコマンドに対応する第3データを受信し、前記第1及び第2バリアーコマンドを併合(merge)し、そして前記第1及び第2データを前記第1及び第2バリアーコマンドの順序に対応して連続的に前記不揮発性メモリ装置にプログラムし、前記第1及び第2データ全てのプログラム完了を検証(verify)し、前記第1及び第2データのプログラムが完了されれば、前記第1及び第2データをマップイン(map in)し、そして前記第1データ及び前記第2データのうち少なくとも1つのプログラムが完了されなければ、前記第1及び第2データ全てをマップアウト(map out)し、そして前記マップイン又は前記マップアウトの後に、前記不揮発性メモリ装置に前記第3データをプログラムする。
本発明の他の実施形態に係る、不揮発性メモリ装置を制御するメモリコントローラの動作方法は、ホストから第1バリアーコマンドと第1プログラムコマンド、第2バリアーコマンドと第2プログラムコマンド、及び第3バリアーコマンドと第3プログラムコマンドを受信し、ホストから第1バリアーコマンドに対応する第1データ、第2バリアーコマンドに対応する第2データ、第3バリアーコマンドに対応する第3データを受信し、前記第1乃至第3バリアーコマンドを併合して前記第1乃至第3データを連続的に前記不揮発性メモリ装置にプログラムし、前記第1乃至第3データのプログラムの成否を検証(verify)し、前記第1乃至第3データが全てプログラムされれば、前記第1乃至第3データを有効(valid)データとして分類し、そして前記第1乃至第3データのうち少なくとも1つのデータがプログラムされなければ、前記第1乃至第3データを全て無効(invalid)データとして分類する。
本発明のその他の実施形態に係るコンピュータシステムは、ホストと、前記ホストから第1乃至第3バリアーコマンドを受信し、そして前記第1乃至第3バリアーコマンドに各々対応しプログラムされる第1乃至第3データをホストから受信するストレージ装置と、を含み、前記ストレージ装置は、前記第1乃至第3データを格納する複数の不揮発性メモリ装置と、前記複数の不揮発性メモリ装置を制御し、前記第1乃至第3バリアーコマンドを併合し、前記第1乃至第3データを連続的にプログラムし、前記第1乃至第3データのプログラム完了の成否を判別し、前記第1乃至第3データが全てプログラム完了されれば、前記第1乃至第3データを有効データにマップイン(map in)し、前記第1乃至第3データのうち少なくとも1つのデータがプログラム完了されなければ、前記第1乃至第3データを無効データにマップアウト(map out)するメモリコントローラと、を含む。
本発明の実施形態によれば、ストレージ装置は書込み順序を守るためのバリアーコマンドをサポートすることができる。このようなストレージ装置と通信するホストは、順に要請した書込み要請がストレージ装置によって各々完了される時まで待たずに、書込み要請を順にストレージ装置に提供することができる。
本発明の実施形態に係るコンピュータシステムを例示的に示すブロック図である。 図1のホストがストレージ装置にジャーナリングを遂行する動作を例示的に示すタイミング図である。 図1のコントローラをさらに具体的に示すブロック図である。 本発明の実施形態に係って、ストレージ装置がバリアーコマンドを処理する動作を例示的に図示する。 本発明の実施形態に係って、ストレージ装置がバリアーコマンドを処理する動作を例示的に図示する。 本発明の他の実施形態に係って、ストレージ装置がバリアーコマンドを処理する動作を例示的に図示する。 本発明のその他の実施形態に係って、ストレージ装置がバリアーコマンドを処理する動作を例示的に図示する。 本発明の実施形態に係って、ストレージ装置が順に受信されたバリアーコマンドを処理する動作を例示的に図示する。 本発明の実施形態に係って、ストレージ装置が順に受信されたバリアーコマンドを処理する動作を例示的に図示する。 本発明の他の実施形態に係って、ストレージ装置が順に受信されたバリアーコマンドを処理する動作を例示的に図示する。 本発明の他の実施形態に係って、ストレージ装置が順に受信されたバリアーコマンドを処理する動作を例示的に図示する。 本発明のその他の実施形態に係って、ストレージ装置が順に受信されたバリアーコマンドを処理する動作を例示的に図示する。 本発明のその他の実施形態に係って、ストレージ装置が順に受信されたバリアーコマンドを処理する動作を例示的に図示する。 図1の不揮発性メモリ装置の不揮発性メモリの中で1つを例示的に示すブロック図である。 図14のメモリセルアレイに含まれたメモリブロックの中で3次元構造の第1ブロックを例示的に示す回路図である。 図1のストレージ装置の動作方法を例示的に示す順序図である。 本発明の実施形態に係って、書込み順序のためのシステム呼出を支援するホストのソフトウェアスタックを図示する。 図17のホストがストレージ装置にジャーナリングを遂行する動作を例示的に示すタイミング図である。 本発明の実施形態に係って、ストレージ装置のIOPS及びコマンドキューの深さを例示的に図示する。
以下、本発明の技術分野で通常の知識を有する者が本発明を容易に実施できる程度に、実施形態が明確かつ詳細に記載される。
図1は本発明の実施形態に係るコンピュータシステムを例示的に示すブロック図である。コンピュータシステム10はホスト100及びストレージ装置200を含む。コンピュータシステム10は個人用コンピュータ、サーバー、ワークステーション、ノートブック型コンピューター、タブレット、モバイル装置、スマートフォン等のような電子装置に適用されるか、或いは具現されることができる。ホスト100はバリアーコマンド(barrier command)及びデータをストレージ装置200(例えば、SSD(solid state drive))に伝送する。ストレージ装置200はバリアーコマンドに基づいてデータを内部に格納する。ホスト100はバリアーコマンドを発行してデータの書込み順序をストレージ装置200に通知し、ストレージ装置200はバリアーコマンドに基づいてホスト100が要請したデータの書込み順序を守る。ホスト100はプロセシングユニット110、ホストメモリ120、及びインターフェイス回路130を含む。
プロセシングユニット110はホストメモリ120にロード(load)されたソフトウェアを実行する。例えば、プロセシングユニット110はアプリケーションプログラム(application program)、ファイルシステム(file system)、ブロック入出力スケジューラー(block I/O scheduler)、及び装置ドライバー(device driver)を実行する。プロセシングユニット110は同種マルチ−コアプロセッサ(homogeneous multi−core processor)又は異種マルチ−コアプロセッサ(heterogeneous multi−core processor)を含む。例えば、プロセシングユニット110はCPU(central processing unit)、ISP(image signal processing unit)、DSP(digital signal processing unit)、GPU(graphics processing unit)、VPU(vision processing unit)、及びNPU(neural processing unit)のうちの少なくとも1つを含む。
ホストメモリ120にはコンピュータシステム10内すべてのハードウェアとソフトウェアを管理するオペレーティングシステムOSがロード(load)される。さらに具体的に、ホストメモリ120にはユーザー空間(user space)に含まれるアプリケーションプログラム121とカーネル(kernel)空間に含まれるファイルシステム122、ブロック入出力スケジューラー123、及び装置ドライバー125がロードされる。ホストメモリ120にロードされたソフトウェア階層121〜123、125はストレージ装置200にアクセスするためのソフトウェアスタック(stack)に含まれる。ホストメモリ120はDRAM(dynamic random access memory)装置又はSRAM(static random access memory)装置のような記憶媒体を含む。
アプリケーションプログラム121は基本的なサービスとして実行されるか、又は使用者の要請によって実行される。アプリケーションプログラム121が位置するユーザー空間とファイルシステム122、ブロック入出力スケジューラー123、装置ドライバー125等を含むカーネルが位置するカーネル空間は互いに分離される。アプリケーションプログラム121はストレージ装置200のような資源に直接的にアクセスできない。代わりに、アプリケーションプログラム121はシステム呼出(system call)関数が含まれたライブラリ(図示せず)上に定義された関数を呼出し、カーネルに必要である作業を要請する。システム呼出関数が呼出されると、ユーザーモードからカーネルモードに転換される(switch)。
ファイルシステム122はストレージ装置200に格納されるファイル又はデータを管理する。例えば、ファイルシステム122はFAT(file allocation table)、NTFS(new technology file system)、HFS(hierarchical file system)、HPFS(high performance file system)、UFS(unix file system)、ext2(secondary extended file system)、ext3、ext4、JFS(journaling file system)、ISO 9660、Files−11、VxFS(veritas file system)、ZFS、ReiserFS、UDF(universal disk format)等を含むことができる。特に、ファイルシステム122はSPO(sudden power off)又はシステムクラッシュ(system crash)によってデータベース、ファイル、又はデータの一貫性が維持されないことを防止するためにジャーナリング(journaling)を遂行する。
ブロック入出力スケジューラー123はブロック階層に位置する。ブロック入出力スケジューラー123はファイルシステム122から入出力IO要請を受信し、受信されたIO要請をスケジューラーキュー124に格納する。ブロック入出力スケジューラー123はスケジューラーキュー124を管理する。ブロック入出力スケジューラー123はIO要請を併合するか、IO要請の順序を調整する(再配列(re−ordering))。例えば、スケジューラーキュー124はNoopスケジューラー、Deadlineスケジューラー、Anticipatoryスケジューラー、CFQ(completely fair queuing)スケジューラー等を含む。
装置ドライバー125はストレージ装置200のようなハードウェア装置を制御するためにカーネルの一部分として動作するプログラムである。装置ドライバー125はスケジューラーキュー124内のIO要請を取り出し、ストレージ装置200を制御するコマンドを生成する。装置ドライバー125はスケジューラーキュー124のIO要請を処理する。例えば、装置ドライバー125はブロック単位にストレージ装置200にデータ入出力を遂行するブロックデバイスである。実施形態において、ホストメモリ120にロードされるプログラム、ソフトウェア階層は図1で図示されたことに限定されない。
インターフェイス回路130はホスト100とストレージ装置200との間の物理的な連結を提供する。例えば、インターフェイス回路130はホスト100で生成される多様なIO要請に対応するコマンド、アドレス、データ等をストレージ装置200との通信方式に応じて変換する。
ホスト100はバリアーコマンド及びデータをストレージ装置200に伝送する。ホスト100はバリアーコマンドを発行することによってストレージ装置200にデータを順に(in order)書き込むことを要請する。ストレージ装置200はホスト100からバリアーコマンド及びバリアーコマンドに対応するデータを受信する。ストレージ装置200はコントローラ210、バッファメモリ220、及び不揮発性メモリ装置230を含む。
ストレージ装置200はコントローラ210、バッファメモリ220、及び不揮発性メモリ装置230を含む。コントローラ210はバッファメモリ220及び不揮発性メモリ装置230の動作を制御する。コントローラ210は不揮発性メモリ装置230よりデータ入出力速度が速いバッファメモリ220にホスト100から受信されたデータを格納し(バッファーリング(buffering))、次いで、バッファメモリ220に格納されたデータを不揮発性メモリ装置230に書き込むか、或いはプログラムする。
実施形態において、コントローラ210とインターフェイス回路130とはUSB(universal Serial Bus)、SCSI(small computer system interface)、PCIe(peripheral component interconnect express)、M−PCIe(mobile PCIe)、NVMe(nonvolatile memory express)、ATA(advanced technology attachment)、PATA(parallel ATA)、SATA(serial ATA)、SAS(serial attached SCSI)、IDE(integrated drive electronics)、UFS(universal flash storage)、Firewire等のような多様なインターフェイス規約(interface protocol)のうちの1つ以上に応じて互いに通信することができる。
バッファメモリ220はホスト100から受信されたデータ又は不揮発性メモリ装置230から受信されたデータを一時的に格納する。バッファメモリ220はホスト100の論理アドレスLA(或いは、論理ブロックアドレスLBA)と不揮発性メモリ装置230の物理アドレスPA(或いは、物理ブロックアドレスPBA)の関係を示すマッピングテーブルを格納する。バッファメモリ220はDRAM装置又はSRAM装置を利用して具現される。
不揮発性メモリ装置230は第1チャンネルCH1を通じてコントローラ210と通信する不揮発性メモリ、第2チャンネルCH2を通じてコントローラ210と通信する不揮発性メモリ、及び第3チャンネルCH3を通じてコントローラ210と通信する不揮発性メモリを含む。不揮発性メモリ装置230とコントローラ210との間のチャンネルの数は図1で図示されたことに限定されない。不揮発性メモリの各々はNANDフラッシュメモリセル、NORフラッシュメモリセル、RRAM(登録商標(resistive random access memory))セル、FRAM(登録商標(ferroelectric random access memory))セル、PRAM(phase change random access memory)セル、TRAM(thyristor random access memory)セル、MRAM(magnetic random access memory)セル等のような不揮発性メモリセルを含むことができる。以下の説明で、第1乃至第3不揮発性メモリの各々はNANDフラッシュメモリセルを含むことと仮定する。
実施形態において、コントローラ210はバッファメモリ220をキャッシュ(cache)メモリとして利用する。コントローラ210はバッファメモリ220に不揮発性メモリ装置230のプログラム単位(program unit)に対応するデータを格納及び併合し、併合されたデータを不揮発性メモリ装置230に1度にプログラムする。上述した動作によって、不揮発性メモリ装置230の寿命及び性能が改善されるが、ホスト100から書込みコマンドを受信した順にデータの集合が不揮発性メモリ装置230にプログラムされないことがあり得る。ここで、データの集合は書込みコマンドに各々対応するデータの複数形態を示すための用語であり、マルチデータ又は複数のデータと称されてもよい。ホスト100はストレージ装置200に格納されるデータの種類又はアプリケーションプログラム121に基づいてデータの集合が不揮発性メモリ装置230に順にプログラムされるように、バリアーコマンドを発行する。
図2は図1のホストがジャーナリングを遂行する動作を例示的に示すタイミング図である。図2は図1を参照して説明される。例えば、ホストメモリ120にロードされたオペレーティングシステム(例えば、アンドロイドオペレーティングシステム(android OS))はキャッシュフラッシュコマンド(cache flush command)を頻繁に生成する。オペレーティングシステムはデータが不揮発性メモリ装置230に実際にプログラムされることを保障するために、キャッシュフラッシュコマンドを生成することができるが、データの集合が不揮発性メモリ装置230に書き込まれる順序を保障するために、キャッシュフラッシュコマンドを生成することもできる。前述した通り、ファイルシステム122はジャーナリングを遂行する。ホスト100はデータベースファイルの一部を修正する場合、修正されなければならないデータ元本をジャーナルにバックアップし、データベースファイルを修正し、そしてジャーナルを削除する。ファイルシステム122がジャーナルトランザクション(transaction)を遂行完了(commit)するために、又はデータベースに対する一貫性を維持するために、キャッシュフラッシュコマンドをストレージ装置200に伝送する。このようなキャッシュフラッシュコマンドは書込み順序を守るためのものである。
図2を参照すれば、ジャーナルをバックアップする時又はデータベースファイル修正の後にfsync()のようなシステム呼出が呼出される。fsync()が開始されると、ファイルシステム122はファイルデータDをストレージ装置200に伝送するためにブロック階層のスケジューラーキュー124に書込み要請を挿入する。書込み要請はストレージ装置200にディスパッチ(dispatch)される。ファイルシステム122はファイルデータDのDMA(direct memory access)伝送が完了される時まで待つ。DMA伝送はプロセシングユニット110と独立的なホスト100内のDMAコントローラ(図示せず)がストレージ装置200と直接的にデータを交換することを意味する。ファイルシステム122は、ファイルデータDのDMA伝送が完了されると、ジャーナルトランザクションを遂行完了するために、JBD(journal block device)をトリガー(trigger)する。JBDはファイルシステム122がジャーナリングのために確保したホストメモリ120の一部で実行されるスレッド(thread)である。
JBDはジャーナルデータJDをストレージ装置200に伝送するためにスケジューラーキュー124に書込み要請を挿入する。装置ドライバー125によって書込み要請はストレージ装置200にディスパッチされる。JBDはジャーナルデータJDのDMA(direct memory access)伝送が完了される時まで待つ。ファイルシステム122は、ジャーナルデータJDのDMA伝送が完了されると、ジャーナルデータJDがバッファメモリ220で不揮発性メモリ装置230にフラッシュされるように、スケジューラーキュー124にフラッシュ要請を挿入する。装置ドライバー125によってフラッシュ要請はストレージ装置200にディスパッチされる(即ち、キャッシュフラッシュコマンドの伝送)。ジャーナルデータJDのフラッシュが完了されると、スケジューラーキュー124に挿入された書込み要請がストレージ装置200にディスパッチされる。このような書込み要請に応じてジャーナルコミット(journal commit;JC)のDMA伝送が完了され、ジャーナルコミットJCのフラッシュが完了されると、fsync()がリターン(return)される。ジャーナルコミットJCが不揮発性メモリ装置230に書き込まれた後に、ファイルシステム122はジャーナリングトランザクションを遂行完了する。ジャーナリングトランザクションを遂行完了した後にファイルシステム122は他の動作を遂行する。
図2を参照すれば、ファイルシステム122は、ジャーナリングを遂行する間、書込み順序を守るために、ファイルデータDのDMA伝送、ジャーナルデータJDのDMA伝送及びフラッシュ、及びジャーナルコミットJCのDMA伝送及びフラッシュが全て完了される時まで待たなければならない。図2で説明されたジャーナリングはストレージ装置200内部の並列処理を無力化する(neutralize)か、又はコントローラ210のコマンドキューの深さ(depth)を減少させるかしてしまい得る。特に、ホスト100の動作はストレージ装置200内部のセルプログラミングに必要である時間だけ遅延される。したがって、ホスト100は書込み順序を守り、キャッシュフラッシュコマンドによる遅延を減らすために、キャッシュフラッシュコマンドの代わりにバリアーコマンドを生成する。ホスト100はキャッシュフラッシュコマンドの代わりにバリアーコマンドを発行し、バリアーコマンドに応じたストレージ装置200の動作が完了される時まで待たずに他の動作を遂行することができる。
実施形態において、バリアーコマンドはホスト100とストレージ装置200との間のインターフェイス規約に定義されたものである。バリアーコマンドは前述したスケジューラーキュー124の1エントリ(entry)を占める。他の実施形態において、ホスト100は書込みコマンドのフラッグ(例えば、REQ_BARRIER)を設定することによって書込みコマンドをバリアーコマンドとして設定することができる。ストレージ装置200は書込みコマンドのフラッグをデコーディング(decoding)し、書込みコマンドがバリアーコマンドであるか否かを確認する。ストレージ装置200はバリアーコマンドに対応するデータを順に格納する。バリアーコマンドはプログラムコマンド、即ち書込みコマンドを含む。
図2でfsync()が呼出されたことと図示されたが、fdatasync()が呼出されてもよい。fdatasync()はfsync()と類似である。fsync()によってファイルメタデータが修正される。しかし、fdatasync()が呼出される場合、新しく書き込まれたデータを読み出すためのファイルメタデータが追加修正されなかったら、ファイルメタデータが修正されないことがある。
図3は図1のコントローラをさらに具体的に示すブロック図である。図3は図1を参照して説明される。コントローラ210はプロセシングユニット211、ワーキングメモリ212、ホストインターフェイス回路214、バッファメモリインターフェイス回路215、及びフラッシュインターフェイス回路216を含む。コントローラ210はSoC(system on chip)、ASIC(application specific integrated circuit)、又はFPGA(field programmable gate array)を利用して具現されることができる。バッファメモリ220は図1で図示されたようにコントローラ210と別個に提供されるか、或いは図3で図示されたようにコントローラ210に含まれることができる。
プロセシングユニット211はホスト100から提供されるコマンドをデコーディングする。プロセシングユニット211はコマンドに基づいてコントローラ210の他の構成要素212〜216の動作を制御する。プロセシングユニット211は不揮発性メモリ装置230を管理するためのガーベッジコレクションや、論理アドレスと物理アドレスとの関係を示すマッピングテーブル、ウェアレベリング(wear leveling)等を遂行するためのフラッシュ変換階層FTLを実行する。プロセシングユニット211は前述したプロセシングユニットのうちの少なくとも1つを含む。
ワーキングメモリ212はキャッシュメモリとして動作する。ワーキングメモリ212はプロセシングユニット211のデコーディング結果を格納する。例えば、ワーキングメモリ212の領域にはホスト100から伝送される順にコマンドCMD1〜CMD2を格納するコマンドキュー213が割当される。ここで、コマンドキュー213に格納されるコマンドの数は図示されたことに限定されない。そして、図示されたことと異なり、コマンドキュー213はプロセシングユニット211に、又はバッファメモリ220の一部領域に位置することもできる。
ホストインターフェイス回路214は上述したインターフェイス規約に応じてホスト100と通信を遂行する。例えば、ホストインターフェイス回路214はNVMeプロトコルに応じて動作する。プロセシングユニット211はホストインターフェイス回路214を通じてコマンドを受信し、受信されたコマンドを順にコマンドキュー213に挿入する。
バッファメモリインターフェイス回路215はプロセシングユニット211の制御に応じてバッファメモリ220の読出し動作と書込み動作を制御する。バッファメモリインターフェイス回路215は論理アドレスと物理アドレスとの関係を示すマッピングテーブルをバッファメモリ220に提供する。バッファメモリインターフェイス回路215はバッファメモリ220に格納されたデータをホストインターフェイス回路214又はフラッシュインターフェイス回路216に提供する。バッファメモリインターフェイス回路215はホストインターフェイス回路214又はフラッシュインターフェイス回路216から提供されたデータをバッファメモリ220に提供する。
バッファメモリ220は書込みバックキャッシュ(write back cache)221が割当される領域と書込みバッファ(write buffer)222が割当される領域とを含む。例えば、ホスト100から提供され、コマンドに対応するデータのサイズが不揮発性メモリ装置230のプログラム単位より小さければ、データは書込みバックキャッシュ221に格納される。ホスト100から提供され、コマンドに対応するデータのサイズがメモリ装置230のプログラム単位と同一であるか、或いはプログラム単位より大きければ、データは書込みバッファ222に格納される。
フラッシュインターフェイス回路216は不揮発性メモリ装置230とデータを交換する。フラッシュインターフェイス回路216はバッファメモリ220から提供されたデータを図1のチャンネルCH1〜CH3を通じて不揮発性メモリ装置230に書き込むか、又は不揮発性メモリ装置230からチャンネルCH1〜CH3を通じてデータを受信し、受信されたデータをバッファメモリ220に提供する。
以下、コントローラ210がバリアーコマンドを処理する多様な例示が説明される。
図4及び図5は本発明の実施形態に係って、ストレージ装置がバリアーコマンドを処理する動作を例示的に図示する。図4及び図5は図1を参照して共に説明される。説明を簡易にするために、ストレージ装置200のコマンドキュー213、書込みバックキャッシュ221、書込みバッファ222、及び図1の不揮発性メモリ装置230のみが例示的に図示されている。不揮発性メモリ装置230は複数のブロックを含むが、例示的に1つのブロックのみが図示されている。ブロックは少なくとも1つ以上の物理ページ(physical page)を含む。物理ページは読出し単位或いは書込み(プログラム)単位に対応するメモリセルを含む。ブロックのメモリセルは消去単位に対応する。
ストレージ装置200のコントローラ210は第1書込みコマンドWCMD1、第2バリアーコマンドBCMD2、及び第3書込みコマンドWCMD3を順に受信し、第1書込みコマンドWCMD1、第2バリアーコマンドBCMD2、及び第3書込みコマンドWCMD3は順にコマンドキュー213に挿入される。図4でストレージ装置200は第2バリアーコマンドBCMD2をサポートできず、図5でストレージ装置200はバリアーコマンドBCMD2をサポートし、書込み順序を守ることと仮定する。そして、第1書込みコマンドWCMD1に対応する第1データDATA1のサイズと第2バリアーコマンドBCMD2に対応する第2データDATA2のサイズの各々は不揮発性メモリ装置230のプログラム単位(例えば、16KB)より小さい4KBであり、そして第3書込みコマンドWCMD3に対応する第3データDATA3のサイズは不揮発性メモリ装置230のプログラム単位のような16KBであると仮定する。図4及び図5で、不揮発性メモリ装置230のプログラム単位と物理ページのサイズが互いに一致することと図示されたが、プログラム単位と物理ページのサイズは互いに異なってもよい。
例えば、コントローラ210は不揮発性メモリ装置230のプログラム時間を減少させるために、インタリービング(interleaving)方式にマルチチャンネル、マルチウェイ、及びマルチプレーンを通じて複数の物理ページを同時にプログラムすることができる。即ち、不揮発性メモリ装置230のプログラム単位は不揮発性メモリ装置230とコントローラ210とを連結するチャンネルの数、チャンネルの各々に連結されたウェイの数、不揮発性メモリのプレーンの数、物理ページのサイズ、メモリセルが格納するビットの数に応じて決定される。
コントローラ210はプログラム単位より小さい第1データDATA1及び第2データDATA2を書込みバックキャッシュ221に格納する。例えば、コントローラ210はプログラム単位より小さいデータの集合を書込みバックキャッシュ221に併合した後、プログラム単位に対応する併合されたデータを不揮発性メモリ装置230にプログラムする。書込みバックキャッシュ221はプログラム単位より小さいデータの集合を併合するのに使用される。コントローラ210はプログラム単位に対応する第3データDATA3を書込みバッファ222に格納する。書込みバッファ222はプログラム単位と同一であるか、或いはプログラム単位より大きいデータを格納するのに使用される。
図4を参照すれば、コントローラ210はプログラム単位に対応しない第1データDATA1及び第2データDATA2に他のデータが併合される前に、プログラム単位に対応する第3データDATA3を第2データDATA2より先に不揮発性メモリ装置230のページにプログラムする。第3データDATA3がプログラムされ、それに次いで、SPO又はシステムクラッシュが発生すると、書込みバックキャッシュ221に格納された第1データDATA1及び第2データDATA2は消滅される。図4のコントローラ210は第2バリアーコマンドBCMD2に応じて第1データDATA1、第2データDATA2、及び第3データDATA3を順にプログラムすることができなくなることがある。
対照的に、図5を参照すれば、コントローラ210は第2バリアーコマンドBCMD2をデコーディングし、第1データDATA1、第2データDATA2、及び第3データDATA3を順にプログラムする。コントローラ210は第1データDATA1、第2データDATA2、及び第3データDATA3の一部(8KB)を併合し、併合されたデータを不揮発性メモリ装置230にプログラムする。ここで、併合されたデータのサイズはプログラム単位に対応する。コントローラ210は第2バリアーコマンドBCMD2に対応する第2データDATA2のサイズがプログラム単位より小さくても、書込みバックキャッシュ221又は書込みバッファ222から他のデータを借り、他のデータと第2データDATA2とを併合し、そしてプログラム単位に対応する併合されたデータを不揮発性メモリ装置230にプログラムする。即ち、コントローラ210は第2バリアーコマンドBCMD2に基づいて第2データDATA2の書込み順序を守ることができる。
図6は本発明の他の実施形態に係って、ストレージ装置がバリアーコマンドを処理する動作を例示的に図示する。図6は図1及び図5を参照して説明される。前述した図4及び図5の仮定は図6にも適用されることができ、図6でストレージ装置200はバリアーコマンドBCMD2をサポートし、書込み順序を守ることと仮定する。
再び図5を参照すれば、コントローラ210が第3データDATA3の一部を第2データDATA2に併合する場合、第3データDATA3の残りは他の物理ページにプログラムされる。第3データDATA3のサイズがプログラム単位に対応するにもかかわらず、第3データDATA3が互いに異なるページに分けられ、互いに異なるページにプログラムされ得る。この場合、第3データDATA3の全体を読み出すために、不揮発性メモリ装置230は第3データDATA3が格納された少なくとも2つの物理ページを活性化しなければならない。
図6を参照すれば、コントローラ210は、第3データDATA3の一部の代わりにダミーデータを第1データDATA1及び第2データDATA2に併合する。コントローラ210はダミーデータを利用して第2バリアーコマンドBCMD2に対応する第2データDATA2のサイズをプログラム単位に調整する。コントローラ210は、第1データDATA1、第2データDATA2、及びダミーデータが併合されてプログラム単位に対応するデータを不揮発性メモリ装置230の物理ページにプログラムし、その次に、第3データDATA3を不揮発性メモリ装置230の他の物理ページにプログラムする。ここで、第2データDATA2がプログラムされた物理ページと第3データDATA3がプログラムされた物理ページとの位置は互いに隣接することもあり得るし、互いに離れることもあり得る。コントローラ210は第2バリアーコマンドBCMD2に基づいて第2データDATA2の書込み順序を守ることができる。
図7は本発明のその他の実施形態に係って、ストレージ装置がバリアーコマンドを処理する動作を例示的に図示する。図7は図1及び図5を参照して説明される。前述した図4及び図5の仮定は図7にも適用されることができ、図7でストレージ装置200はバリアーコマンドをサポートし、書込み順序を守ることと仮定する。
コントローラ210は書込みバックキャッシュ221に格納された第1データDATA1及び第2データDATA2を第1ブロックBLK1に格納し、その次に、書込みバッファ222に格納された第3データDATA3を第2ブロックBLK2に格納する。図示されないが、コントローラ210は第1データDATA1、第2データDATA2、及び図6のダミーデータを併合し、併合されたデータを第1ブロックBLK1に格納する。
図7で、プログラム単位より小さい第1データDATA1及び第2データDATA2は相対的に頻繁にアップデートされるホットデータ(hot data)であり、プログラム単位に対応する第3データDATA3は相対的に頻繁にアップデートされないコールドデータ(cold data)である。コントローラ210は第2バリアーコマンドBCMD2に基づいて第2データDATA2の書込み順序を守りながらも、ホットデータが格納される第1ブロックBLK1とコールドデータが格納される第2ブロックBLK2とを分離する。例えば、第1ブロックBLK1のメモリセルの各々は1ビットを格納する単一レベルセルSLCであり、第2ブロックBLK2のメモリセルの各々は少なくとも2ビットを格納するマルチレベルセルMLCである。
図5乃至図7を参照すれば、コントローラ210は第2バリアーコマンドBCMD2に対応する第2データDATA2より先に受信された第1データDATA1を不揮発性メモリ装置230にプログラムし、その次に、第2データDATA2を不揮発性メモリ装置230にプログラムし、その次に、第2データDATA2より後に受信された第3データDATA3を不揮発性メモリ装置230にプログラムする。図5乃至図7で図示されないが、第1データDATA1がプログラムされ、他のデータがプログラムされ、そして第2データDATA2がプログラムされてもよい。また、第2データDATA2がプログラムされ、他のデータがプログラムされ、そして第3データDATA3がプログラムされてもよい。いずれの場合でも、コントローラ210は他のデータのプログラムの可否に関わらず、第2データDATA2の書込み順序を守ることができる。
図8及び図9は本発明の実施形態に係って、ストレージ装置が順に受信されたバリアーコマンドを処理する動作を例示的に図示する。図8及び図9は図1を参照して共に説明される。図8及び図9で、第1乃至第4データDATA1〜DATA4の各々のサイズはプログラム単位に対応することと仮定する。コンピュータシステム10でホスト100は第1乃至第3バリアーコマンドBCMD1〜BCMD3を順にストレージ装置200に伝送し、第1乃至第3データDATA1〜DATA3をDMA方式にストレージ装置200に伝送する。ホスト100は第1バリアーコマンドBCMD1、第1データDATA1、第2バリアーコマンドBCMD2、第2データDATA2、第3バリアーコマンドBCMD3、及び第3データDATA3を順に伝送する。第1データDATA1は第1バリアーコマンドBCMD1受信の後に連続的に(sequentially)提供される。第2データDATA2は第2バリアーコマンドCMD2受信に続いて提供される。但し、ホスト100は第1データDATA1を伝送する間に、第2バリアーコマンドBCMD2を伝送することもできる。
ストレージ装置200のコントローラ210はホスト100から第1乃至第3バリアーコマンドBCMD1〜BCMD3を順に受信し、コマンドキュー213に順に挿入する。コントローラ210は第1乃至第3バリアーコマンドBCMD1〜BCMD3に各々対応する第1乃至第3データDATA1〜DATA3を受信し、バッファメモリ220に格納する(1)。
コントローラ210は第1乃至第3バリアーコマンドBCMD1〜BCMD3をデコーディングし、第1乃至第3バリアーコマンドBCMD1〜BCMD3を受信する順序に対応して連続的に第1乃至第3データDATA1〜DATA3を順に不揮発性メモリ装置230にプログラムする(2)。コントローラ210は第1乃至第3データDATA1〜DATA3のプログラムをアトミックに(atomically)遂行する。コントローラ210がアトミックプログラム(atomic program)を遂行すれば、第1乃至第3データDATA1〜DATA3が全て正常に不揮発性メモリ装置230にプログラムされる(図8参照)か、又は第1乃至第3データDATA1〜DATA3が全て不揮発性メモリ装置230にプログラムされない(図9参照)かである。アトミックプログラムによって、第1乃至第3データDATA1〜DATA3の一部のみが不揮発性メモリ装置230にプログラムされる場合は発生しない。コントローラ210は第1乃至第3データDATA1〜DATA3を不揮発性メモリ装置230にプログラムし、第1乃至第3データDATA1〜DATA3のプログラムを遂行完了(commit)する。又は、コントローラ210は第1乃至第3データDATA1〜DATA3をプログラムすることなく、ロールバック(roll back)する。コントローラ210は第1乃至第3データDATA1〜DATA3に対するアトミックプログラムを完了した後に第4データDATA4を不揮発性メモリ装置230にプログラムする。第4データDATA4に対するコマンドの図示は省略されている。
図8を参照すれば、第1データDATA1は第1物理ページ<P1>にプログラムされ、第2データDATA2は第2物理ページ<P2>にプログラムされ、そして第3データDATA3は第3物理ページ<P3>にプログラムされる(アトミックプログラム成功)。この場合、コントローラ210は第1乃至第3物理ページ<P1:P3>のマッピング情報をマッピングテーブルL2Pにマップイン(map in)するか、又はアップデートする(3)。ここで、マップインはコントローラ210が第1乃至第3物理ページ<P1:P3>のマッピング情報をマッピングテーブルL2Pにアップデートする動作を示す。コントローラ210はマップインを通じて第1乃至第3データDATA1〜DATA3を全て有効データとして分類する。コントローラ210は第1乃至第3データDATA1〜DATA3をマップインする。
図9を参照すれば、第1データDATA1は第1物理ページ<P1>にプログラムされ、第3データDATA3は第3物理ページ<P3>にプログラムされたが、SPO又はシステムクラッシュによって第2データDATA2は第2物理ページ<P2>にプログラムされないことがある(アトミックプログラム失敗)。この場合、コントローラ210は第2物理ページ<P2>のマッピング情報のみならず、第1及び第3物理ページ<P1、P3>のマッピング情報もマッピングテーブルL2Pにマップアウト(map out)する(3)。ここで、マップアウトはコントローラ210が第1乃至第3物理ページ<P1:P3>のマッピング情報をマッピングテーブルL2Pにアップデートしない動作を示す。コントローラ210はマップアウトを通じて第1乃至第3データDATA1〜DATA3を全て無効データとして分類する。コントローラ210は第1乃至第3データDATA1〜DATA3に対するガーベッジコレクションを遂行し、第1乃至第3データDATA1〜DATA3を消去する(4)。
図10及び図11は本発明の他の実施形態に係って、ストレージ装置が順に受信されたバリアーコマンドを処理する動作を例示的に図示する。図10及び図11は図1を参照して共に説明される。図8及び図9の場合と類似に、コントローラ210は第1乃至第3バリアーコマンドBCMD1〜BCMD3を順に受信し、コマンドキュー213に順に挿入する。コントローラ210は複数のバリアーコマンドを併合し、処理する。例えば、コントローラ210は第1及び第2バリアーコマンドBCMD1、BCMD2を併合する。コントローラ210は併合された第1及び第2バリアーコマンドBCMD1、BCMD2を先に処理し、その次に、第3バリアーコマンドBCMD3を処理する。
コントローラ210は第1乃至第3バリアーコマンドBCMD1〜BCMD3に各々対応する第1乃至第3データDATA1〜DATA3を受信し、バッファメモリ220に格納する(1)。コントローラ210は第1及び第2バリアーコマンドBCMD1〜BCMD3の順序に対応して連続的に第1及び第2データDATA1、DATA2を不揮発性メモリ装置230の第2及び第3物理ページ<P2、P3>にプログラムする。その次に、コントローラ210は第1及び第2データDATA1、DATA2のプログラムの遂行完了の成否を確認するためにコミットページ(commit page)を不揮発性メモリ装置230の第4物理ページ<P4>にプログラムする(2)。
コントローラ210はコミットページを読み出すことによって第1及び第2データDATA1、DATA2のプログラムの遂行完了の成否を確認する。コントローラ210は第1及び第4物理ページ<P1、P4>のコミットページを読み出すか、或いはスキャン(scan)し、コミットページの間の第1及び第2データDATA1、DATA2のプログラムの遂行完了の成否を確認する。図10を参照すれば、コントローラ210は第1及び第2データDATA1、DATA2を有効データとして分類し、第1及び第2物理ページ<P1、P2>のマッピング情報をマッピングテーブルL2Pにマップインする(3)。逆に、図11を参照すれば、SPO又はシステムクラッシュによって第3物理ページ<P3>に第2データDATA2がプログラムされず、第4物理ページ<P4>にコミットページがプログラムされない。コントローラ210は第1及び第2データDATA1、DATA2を無効データとして分類し、第1及び第2物理ページ<P1、P2>のマッピング情報をマッピングテーブルL2Pにマップアウトする(3)。ここで、第3物理ページ<P3>に第2データDATA2がプログラムされ、第4物理ページ<P4>にコミットページのみがプログラムされない場合にも、コントローラ210は第1及び第2物理ページ<P1、P2>のマッピング情報をマッピングテーブルL2Pにマップアウトする(3)。その後、コントローラ210は第1及び第2データDATA1、DATA2に対するガーベッジコレクションを遂行する(4)。
コントローラ210は第1及び第2物理ページ<P1、P2>のマッピング情報をマッピングテーブルL2Pにマップインするか、或いはマップアウトした後に、第3データDATA3を第5物理ページ<P5>にプログラムする。その次に、コントローラ210は第3データDATA3のプログラムの遂行完了の成否を確認するためにコミットページを第6物理ページ<P6>にプログラムする(4)。コントローラ210はコミットページを読み出すか、或いはスキャンし、コミットページの間の第3データDATA3のプログラム遂行完了の成否を確認する。
図10を参照すれば、コントローラ210は第4及び第6物理ページ<P4、P6>の間の第5物理ページ<P5>にプログラムされた第3データDATA3を有効データとして分類し、第5物理ページ<P5>のマッピング情報をマッピングテーブルL2Pにマップインする(5)。図11を参照すれば、コントローラ210は第1及び第6物理ページ<P1、P6>の間の第5物理ページ<P5>にプログラムされた第3データDATA3を有効データとして分類し、第5物理ページ<P5>のマッピング情報をマッピングテーブルL2Pにマップインする(5)。例えば、第1及び第2データDATA1、DATA2に対するガーベッジコレクションの遂行始点(4)は第3データDATA3のプログラム始点(5)以後である。
図12は本発明のその他の実施形態に係って、ストレージ装置が順に受信されたバリアーコマンドを処理する動作を例示的に図示する。図12は図1を参照して説明される。図12で、データのアトミックプログラムが全て成功したことと仮定する。
図8乃至図11の場合と類似に、コントローラ210は第1乃至第3バリアーコマンドBCMD1〜BCMD3を順に受信し、コマンドキュー213に順に挿入する。例えば、コントローラ210は第2及び第3バリアーコマンドBCMD2、BCMD3を併合する。コントローラ210は第1バリアーコマンドBCMD1を先に処理し、その次に、併合された第2及び第3バリアーコマンドBCMD2、BCMD3を処理する。コントローラ210は第1乃至第3バリアーコマンドBCMD1〜BCMD3に各々対応する第1乃至第3データDATA1〜DATA3を受信し、バッファメモリ220に格納する(1)。
図8乃至図11の場合と異なり、コントローラ210はデータのみを不揮発性メモリ装置230にプログラムするのではなく、フラッグ情報も共に不揮発性メモリ装置230にプログラムする。フラッグ情報はデータの書込み順序を示すバリアーコマンドを表記する。
データのエポック(epoch)はホスト100のバリアーコマンドに応じて決定される。エポック番号はデータのエポックを示し、バリアーコマンドを基準として先にプログラムされるデータと後にプログラムされるデータとを分類するのに使用される。コントローラ210はデータのフラッグ情報にデータのエポック番号を含ませる。コントローラ210は併合されたバリアーコマンドに対応するデータの集合には同一なエポック番号を割当する。図12を参照すれば、コントローラ210は第1データDATA1に第1エポック番号(epoch number;EP<1>)を割当し、第2及び第3データDATA2、DATA3に第2エポック番号EP<2>を割当する。コントローラ210はデータのフラッグ情報にコミット記録ビット(commit record bit;C)を含ませる。コミット記録ビットはコミットページと類似にデータのプログラム遂行完了の成否を確認するのに使用される。
コントローラ210は第1データDATA1、第1エポック番号EP<1>、及びコミット記録ビット(C)を不揮発性メモリ装置230の第1物理ページ<P1>にプログラムする(2)。コントローラ210は第1物理ページ<P1>のデータ領域に第1データDATA1を、そして第1物理ページ<P1>のスペア領域に第1エポック番号EP<1>及びコミット記録ビット(C)をプログラムする。図示されたことと異なり、第1エポック番号EP<1>及びコミット記録ビット(C)は不揮発性メモリ装置230の他のブロック、他のページに格納されることができる。
コントローラ210は第1物理ページ<P1>のコミット記録ビット(C)を読み出し、第1データDATA1のプログラム遂行完了の成否を確認する。コントローラ210は第1データDATA1を有効データとして分類し、第1物理ページ<P1>のマッピング情報をマッピングテーブルL2Pにマップインする(3)。
コントローラ210は第1データDATA1と類似に、第2データDATA2及び第2エポック番号EP<2>を第2物理ページ<P2>に、そして第3データDATA3、第2エポック番号EP<2>、及びコミット記録ビット(C)を第3物理ページ<P3>にプログラムする(4)。コントローラ210は第3物理ページ<P3>のコミット記録ビット(C)を読み出し、第2及び第3データDATA2、DATA3のプログラム遂行完了の成否を確認する。コントローラ210は第2及び第3データDATA2、DATA3を有効データとして分類し、第2及び第3物理ページ<P2、P3>のマッピング情報をマッピングテーブルL2Pにマップインする(5)。
実施形態において、コントローラ210は併合されたコマンドに対応し、同一なエポック番号を有するデータの集合の中で最後にプログラムされるデータ(図12参照すれば、第3データDATA3)と共にコミット記録ビットをプログラムすることができる。コントローラ210は同一なエポック番号を有するデータの集合の中で最後にプログラムされるデータ以外の他のデータのフラッグ情報にコミット記録ビット(C)を含ませない。他の実施形態において、コントローラ210は併合されたコマンドに対応し、同一なエポック番号を有するデータの集合で書込み順序を再配列することができる。例えば、コントローラは第3データDATA3を第2物理ページ<P2>に、そして第2データDATA2とコミット記録ビット(C)を第3物理ページ<P3>にプログラムする。
図13は本発明のその他の実施形態に係って、ストレージ装置が順に受信されたバリアーコマンドを処理する動作を例示的に図示する。図13は図1を参照して説明される。図13で、データに対するアトミックプログラムが全て成功し、そして第1乃至第3データのサイズの各々がプログラム単位より小さいことと仮定する。
図8乃至図12の場合と類似に、コントローラ210は第1乃至第3バリアーコマンドBCMD1〜BCMD3を順に受信し、コマンドキュー213に順に挿入する。コントローラ210は第1乃至第3バリアーコマンドBCMD1〜BCMD3を併合する。例えば、コントローラ210はバリアーデータのサイズに基づいてバリアーコマンドを併合する。併合されたバリアーコマンドに対応するデータの集合のサイズはプログラム単位である。
コントローラ210は第1乃至第3バリアーコマンドBCMD1〜BCMD3に各々対応する第1乃至第3データDATA1〜DATA3を受信し、バッファメモリ220に格納する(1)。例えば、第1データDATA1は8KBであり、第2データDATA2は4KBであり、第3データ(4KB)であり、そして併合されたデータの集合のサイズは16KBであり、プログラム単位である。
コントローラ210は第1乃至第3データDATA1〜DATA3を不揮発性メモリ装置230の第1物理ページ<P1>にプログラムする(2)。図示されないが、コントローラ210は第1乃至第3データDATA1〜DATA3のフラッグ情報(即ち、図12のエポック番号及びコミット記録ビット)を第1物理ページ<P1>のスペア領域にプログラムすることもできる。他の実施形態において、第1乃至第3データDATA1〜DATA3の位置は図示されたことに限定されず、コントローラ210によって再配列されることができる。コントローラ210は第1乃至第3データDATA1〜DATA3を有効データとして分類し、第1物理ページ<P1>のマッピング情報をマッピングテーブルL2Pにマップインする(3)。
図14は図1の不揮発性メモリ装置の不揮発性メモリのうちの1つを例示的に示すブロック図である。不揮発性メモリ231はメモリセルアレイ231_1、アドレスデコーダー231_2、ページバッファ231_3、入出力回路231_4、及び制御ロジック及び電圧発生回路231_5を含む。不揮発性メモリ231は不揮発性メモリチップと称されてもよい。
メモリセルアレイ231_1はメモリブロックを含む。メモリブロックの各々はセルストリングを含む。セルストリングの各々はメモリセルを含む。メモリセルはワードラインWLと連結される。メモリセルの各々は1ビットを格納する単一レベルセルSLC又は少なくとも2ビットを格納するマルチレベルセルMLCを含む。
実施形態として、メモリセルアレイ231_1は3次元メモリアレイを含む。3次元メモリアレイは、シリコン基板及びメモリセルの動作に関連する回路の上に配置される活性領域を有するメモリセルアレイの1つ以上の物理レベルにモノリシックに(Monolithically)形成されることができる。メモリセルの動作に関連する回路は基板内に又は基板上に配置される。“モノリシック(Monolithical)”という用語は、3次元メモリアレイの各レベルの層が3次元メモリアレイの下位レベルの層上に直接堆積されることを意味する。3次元メモリアレイは垂直の方向性を有し、少なくとも1つのメモリセルが他の1つのメモリセル上に位置する垂直NANDストリングを含む。少なくとも1つのメモリセルは電荷トラップ(Charge Trap)層を含む。垂直NANDストリングの各々はメモリセル上に位置する少なくとも1つの選択トランジスタを含む。少なくとも1つの選択トランジスタはメモリセルと同一の構造で構成され、メモリセルと共にモノリシックに形成される。3次元メモリアレイが複数のレベルに構成され、レベルの間に共有されるワードライン又はビットラインが具備されるように、3次元メモリアレイに適合な構成は米国登録特許公報第7,679,133号、米国登録特許公報第8,553,466号、米国登録特許公報第8,654,587号、米国登録特許公報第8,559,235号、そして米国公開特許公報第2011/0233648号に開示されており、これらの公報は本発明の参照として含まれる。
アドレスデコーダー231_2はワードラインWL、ストリング選択ラインSSL、及び接地選択ラインGSLを通じてメモリセルアレイ231_1と連結される。アドレスデコーダー231_2はコントローラ210から物理アドレスADDを受信し、物理アドレスADDをデコーディングし、ワードラインWLを駆動する。例えば、アドレスデコーダー231_2はワードラインWLの中で少なくとも1つのサブワードラインを選択する。
ページバッファ231_3はビットラインBLを通じてメモリセルアレイ231_1と連結される。ページバッファ231_3は制御ロジック及び電圧発生回路231_5の制御に応じてページ単位に入出力回路231_4から受信されたデータDATAがメモリセルアレイ231_1に格納されるようにビットラインBLを駆動するか、又はメモリセルアレイ231_1に格納されたデータをページ単位に読み出し、読み出されたデータを入出力回路231_4に提供する。
入出力回路231_4はコントローラ210からデータDATAを受信し、データDATAをページバッファ231_3に提供する。又は入出力回路231_4はページバッファ231_3からデータDATAを受信し、受信されたデータDATAをコントローラ210に提供する。入出力回路231_4は制御信号CTRLに基づいて外部装置とデータDATAを送受信する。
制御ロジック及び電圧発生回路231_5はコントローラ210からストレージコマンドCMD及び制御信号CTRLを受信し、受信された信号に応答してアドレスデコーダー231_2、ページバッファ231_3、及び入出力回路231_4を制御する。例えば、制御ロジック及び電圧発生回路231_5は信号CMD、CTRLに応答してデータDATAがメモリセルアレイ231_1に格納されるように他の構成要素を制御する。制御ロジック及び電圧発生回路231_5は信号CMD、CTRLに応答してメモリセルアレイ231_1に格納されたデータDATAが外部装置に伝送されるように他の構成要素を制御する。制御ロジック及び電圧発生回路231_5は不揮発性メモリ231が動作するのに要求される多様な電圧を生成する。制御ロジック及び電圧発生回路231_5はプログラム電圧、パス電圧、選択読出し電圧、非選択読出し電圧、消去電圧、検証電圧を生成する。制御ロジック及び電圧発生回路231_5は生成された多様な電圧をアドレスデコーダー231_2に提供するか、又はメモリセルアレイ231_1の基板に提供する。
図15は図14のメモリセルアレイに含まれたメモリブロックの中で3次元構造の第1ブロックを例示的に示す回路図である。第1ブロックBLK1のセルストリングの数、セルストリングによって構成される行及び列の数、セルトランジスタGST、MC、DMC、SST等の数、セルトランジスタと連結されたラインGSL、WL、DML、SSL等の数、及び第1ブロックBLK1の高さは図15で図示されたことに限定されない。不揮発性メモリ装置230に含まれた他のメモリブロックも、また第1ブロックBLK1と類似な構造を有する。
第1ブロックBLK1はセルストリングCS11〜CS22を含む。セルストリングCS11〜CS22は行方向及び列方向に沿って配置される。セルストリングCS11、CS12はストリング選択ラインSSL1a、SSL1bと連結される(1行)。セルストリングCS21、CS22はストリング選択ラインSSL2a、SSL2bと連結される(2行)。セルストリングCS11、CS21は第1ビットラインBL1と連結される(1列)。セルストリングCS12、CS22は第2ビットラインBL2と連結される(2列)。
セルストリングCS11〜CS22の各々はセルトランジスタを含む。セルストリングCS11〜CS22の各々はストリング選択トランジスタSSTa、SSTb、メモリセルMC1〜MC8、接地選択トランジスタGSTa、GSTb、及びダミーメモリセルDMC1、DMC2を含む。セルトランジスタの各々は電荷トラップ型フラッシュ(CTF;charge trap flash)メモリセルである。
メモリセルMC1〜MC8は直列に連結され、行方向及び列方向によって形成された平面と垂直になる方向である高さ方向に積層される。直列に連結されたストリング選択トランジスタSSTa、SSTbはメモリセルMC1〜MC8及びビットラインBLの間に提供される。直列に連結された接地選択トランジスタGSTa、GSTbはメモリセルMC1〜MC8及び共通ソースラインCSLの間に提供される。メモリセルMC1〜MC8及び接地選択トランジスタGSTa、GSTbの間に第1ダミーメモリセルDMC1が提供される。メモリセルMC1〜MC8及びストリング選択トランジスタSSTa、SSTbの間に第2ダミーメモリセルDMC2が提供される。セルストリングCS11〜CS22の接地選択トランジスタGSTa、GSTbは接地選択ラインGSLに共通に連結される。
第1行のセルストリングCS11、CS12の第1接地選択トランジスタGSTaは第1接地選択ラインに連結され、第2行のセルストリングCS21、CS22の第1接地選択トランジスタGSTaは第2接地選択ラインに連結される。基板(図示せず)から同一な高さに提供される接地選択トランジスタは同一な接地選択ラインに連結され、他の高さに提供される接地選択トランジスタは他の接地選択ラインに連結される。例えば、セルストリングCS11〜CS22の第1接地選択トランジスタGSTaは第1接地選択ラインに連結され、第2接地選択トランジスタGSTbは第2接地選択ラインに連結される。
基板(又は接地選択トランジスタGSTa、GSTb)から同一な高さのメモリセルは同一なワードラインに共通に連結され、互いに異なる高さのメモリセルは互いに異なるワードラインに連結される。セルストリングCS11〜CS22の第1乃至第8メモリセルMC8は第1乃至第8ワードラインWL1〜WL8に各々共通に連結される。同一な高さの第1ストリング選択トランジスタSSTaの中で同一な行のストリング選択トランジスタは同一なストリング選択ラインと連結され、他の行のストリング選択トランジスタは他のストリング選択ラインと連結される。例えば、第1行のセルストリングCS11、CS12の第1ストリング選択トランジスタSSTaはストリング選択ラインSSL1aと共通に連結され、第2行のセルストリングCS21、CS22の第1ストリング選択トランジスタSSTaはストリング選択ラインSSL1aと共通に連結される。また、第1行のセルストリングCS11、CS12の第2ストリング選択トランジスタSSTbはストリング選択ラインSSL1bと共通に連結され、第2行のセルストリングCS21、CS22の第2ストリング選択トランジスタSSTbはストリング選択ラインSSL2bと共通に連結される。
同一な行のセルストリングのストリング選択トランジスタは同一なストリング選択ラインに共通に連結される。例えば、第1行のセルストリングCS11、CS12の第1及び第2ストリング選択トランジスタSSTa、SSTbは同一なストリング選択ラインに共通に連結される。第2行のセルストリングCS21、CS22の第1及び第2ストリング選択トランジスタSSTa、SSTbは同一なストリング選択ラインに共通に連結される。同一な高さのダミーメモリセルは同一なダミーワードラインと連結され、他の高さのダミーメモリセルは他のダミーワードラインと連結される。例えば、第1ダミーメモリセルDMC1は第1ダミーワードラインDWL1と連結され、第2ダミーメモリセルDMC2は第2ダミーワードラインDWL2と連結される。
第1ブロックBLK1で、読出し及び書込みは行単位に遂行される。例えば、ストリング選択ラインSSL1a、SSL1b、SSL2a、SSL2bによってブロックBLKaの1つの行が選択される。ストリング選択ラインSSL1a、SSL1bにターンオン電圧が供給され、ストリング選択ラインSSL2a、SSL2bにターンオフ電圧が供給される時、第1行のセルストリングCS11、CS12がビットラインBL1、BL2に連結される。反対の場合、第2行のセルストリングCS21、CS22がビットラインBL1、BL2に連結される。サブワードラインを駆動することによって、駆動される行のセルストリングのメモリセルの中で同一な高さのメモリセルが選択される。選択されたメモリセルは物理ページ単位に対応する。選択されたメモリセルに対する読出し及び書込み動作が遂行される。
図16は図1のストレージ装置の動作方法を例示的に示す順序図である。S110段階で、ストレージ装置200のコントローラ210はホスト100からバリアーコマンドとバリアーコマンドに各々対応するデータ(或いはデータの集合)とを受信する。前述した通り、データはDMA方式にホスト100から伝送される。
S120段階で、コントローラ210はバリアーコマンドを併合し、バリアーコマンドの順序に基づいて又はバリアーコマンドの順序に対応して、データを連続的に不揮発性メモリ装置230にプログラムする。コントローラ210は、メモリセルに格納されるビットの数、1つの物理的ページのサイズ、そしてマルチチャンネル、マルチウェイ、マルチプレーンに応じた1度にアクセスされる物理ページの数に応じて決定される不揮発性メモリ装置230のプログラム単位に基づいてバリアーコマンドを併合する。実施形態において、図8乃至図13でデータはいずれか1つの物理ページ内で格納されたことと図示されたが、データは不揮発性メモリ装置230内の複数のチップ、複数のプレーン、複数のブロック、又は複数のページに分散されて格納されてもよい。S120段階のプログラムはアトミックに遂行される。
S130段階で、コントローラ210はS120段階のプログラム完了を検証する。コントローラ210は図10及び図11のコミットページを読み出すか、或いは図12のコミット記録ビットを読み出す。コントローラ210はコミットページ又はコミット記録ビットが割当されたデータを有効データに判別し、コミットページ又はコミット記録ビットが割当されないデータを無効データとして判別する。
プログラム成功である場合、S140段階で、コントローラ210は有効データがプログラムされた物理ページのマッピング情報をマッピングテーブルL2Pにマップインする。プログラム失敗である場合、S150段階で、コントローラ210は無効データがプログラムされた物理ページのマッピング情報をマッピングテーブルL2Pにマップアウトする。アトミックプログラム対象であるデータの一部が格納され、データの残りが格納されなかった場合には、コントローラ210はデータの一部が格納された物理ページのマッピング情報をマップアウトする。実施形態において、コントローラ210はバリアーコマンドに対応するデータをマップイン又はマップアウトした後に、又はデータのプログラム完了の後に、他のバリアーコマンドに対応する他のデータを不揮発性メモリ装置230にプログラムする。
図17は本発明の実施形態に係って、書込み順序のためのシステム呼出をサポートするホストのソフトウェアスタックを図示する。図18は図17のホストがストレージ装置にジャーナリングを遂行する動作を例示的に示すタイミング図である。図17と図18は図1及び図2を参照して共に説明される。ストレージ装置400はバリアーコマンドをサポートする図1のストレージ装置200である。
ホスト300は図1のホスト100の構成要素を含む。ホスト300はハードウェア観点でホスト100と実質的に同様に具現されることができる。ホスト300でも図1のホストメモリ120にロードされるソフトウェアが実行されることができる。但し、ホスト100と異なり、ホスト300はfbarrier()又はfdatabarrier()のようなシステム呼出をサポートする。ホスト300のホストメモリ(図1のホストメモリ120参照)にはバリアーファイルシステム322、ディスパッチャー(dispatcher)323、及び入出力スケジューラー324が各々ロードされる。
バリアーファイルシステム322はファイルシステム122と類似に動作する。実施形態において、fsync()又はfdatasync()が呼出されると、バリアーファイルシステム322はヒント情報を利用してfsync()又はfdatasync()がデータを順に書き込むために呼出されたものであるか否かを判別する。バリアーファイルシステム322はファイルの拡張子が事前に決定された単語であるか、ファイル名が事前に決定された単語であるか、又はfsync()又はfdatasync()を呼出したプロセスの名が事前に決定された単語であるか否かを確認する。ヒント情報は事前に決定されたファイルの拡張子、事前に決定されたファイル名、又はfsync()又はfdatasync()を呼出したプロセスの名前を含む。
他の実施形態において、fbarrier()又はfdatabarrier()が呼出されれば、バリアーファイルシステム322はデータを順に書込むためにfbarrier()又はfdatabarrier()が呼出されたことと判別する。fdatabarrier()はfbarrier()と類似である。fbarrier()によってファイルメタデータが修正される。しかし、fdatabarrier()が呼出される場合、新しく書き込まれたデータを読み出すためのファイルメタデータが追加修正されなかったら、ファイルメタデータが修正されないことがある。バリアーファイルシステム322は書込み要請をディスパッチするコミットスレッド(commit thread)と書込み要請に対応するデータをストレージ装置400にフラッシュするフラッシュスレッド(flush thread)をホストメモリに割当する。バリアーファイルシステム322はコミットスレッドとフラッシュスレッドを生成してデュアルモードジャーナリング(dual mode journaling)を遂行する。
図18を参照すれば、バリアーファイルシステム322はジャーナリングを遂行する。ジャーナルをバックアップする時、又はデータベースファイル修正の後にfbarrier()又はfdatabarrier()が呼出される。例えば、fbarrier()が開始されると、バリアーファイルシステム322はファイルデータDをストレージ装置400に伝送するためにブロック階層のスケジューラーキュー(図示せず、図1のスケジューラーキュー124参照)に書込み要請を挿入する。書込み要請はストレージ装置400にディスパッチされる。バリアーファイルシステム322は、ファイルシステム122と異なり、ファイルデータDのDMA伝送が完了される時まで待たずにコミットスレッドをトリガーする。
コミットスレッドはジャーナルデータJDとジャーナルコミットJCをストレージ装置400に伝送するためにスケジューラーキューに書込み要請を挿入する。書込み要請はストレージ装置400にディスパッチされる。コミットスレッドはジャーナルデータJDのDMA伝送とジャーナルコミットJCのDMA伝送が完了される時まで待つ。ジャーナルデータJDのDMA伝送とジャーナルコミットJCのDMA伝送が完了されると、コミットスレッドはフラッシュスレッドをトリガーする。フラッシュスレッドはジャーナルデータJDとジャーナルコミットJCがフラッシュされるように、スケジューラーキューにフラッシュ要請を挿入する。フラッシュ要請はストレージ装置400にディスパッチされる。ジャーナルデータJDとジャーナルコミットJCのフラッシュが完了されると、fbarrier()がリターンされる。
図18を参照すれば、fsync()が呼出された場合も、図1のファイルシステム122はファイルデータDのDMA伝送、ジャーナルデータJDのDMA伝送及びフラッシュ、及びジャーナルコミットJCのDMA伝送及びフラッシュが全て完了される時まで待たなければならない。対照的に、fbarrier()が呼出された場合、バリアーファイルシステム322はファイルデータD、ジャーナルデータJD、及びジャーナルコミットJCのDMA伝送及びフラッシュが完了される時まで待たずにスケジューラーキューにIO要請を連続的に挿入する。
再び図17を参照すれば、ブロック階層のディスパッチャー323はスケジューラーキューに入力されたIO要請をストレージ装置400のコマンドキュー(図3乃至図13のコマンドキュー213参照)にディスパッチする。例えば、ディスパッチャー323はバリアーコマンドをコマンドキューにディスパッチする。ディスパッチャー323はコマンドキューの既存コマンドが処理され、その次に、バリアーコマンドが処理され、その次に、バリアーコマンド以後のコマンドが処理されることを保障する。ディスパッチャー323はホスト300でストレージ装置400にコマンドがディスパッチされる順序とストレージ装置400のコマンドキューでコマンドが処理される順序を一致させる。ディスパッチャー323は順序を守る(order−preserving)ディスパッチャーと称される。
実施形態において、ディスパッチャー323からディスパッチされるバリアーコマンドはバリアーフラッグを有する書込みコマンドである。他の実施形態において、ディスパッチャー323からディスパッチされるバリアーコマンドは書込み要請と別個にスケジューラーキューの1エントリを占める入力要請から生成されてもよい。
入出力スケジューラー324はエポックに基づいて、IO要請がスケジューラーキューに挿入される順序とホスト300でストレージ装置400にコマンドがディスパッチされる順序を一致させる。入出力スケジューラー324はエポックの間に順序を守る。入出力スケジューラー324はスケジューラーキューに挿入されたIO要請がバリアー書込み要請であるか否かを判別する。入出力スケジューラー324は挿入されたIO要請がバリアー書込み要請であれば、それ以上IO要請を受信しない。したがって、バリアー書込み要請の前にスケジューラーキューに入力され、バリアー書込み要請の後にスケジューラーキューに存在する全てのIO要請は1つのエポックに属することができる。入出力スケジューラー324はエポック内のIO要請を再配列するか、或いは併合する。入出力スケジューラー324はスケジューラーキューに存在するIO要請を装置ドライバー(図1の装置ドライバー125参照)に送る。入出力スケジューラー324は最後に出力されるIO要請を新しいバリアー書込み要請として指定する。入出力スケジューラー324はスケジューラーキューに存在するIO要請を全て送ると、新しいIO要請を受信する。
図19は本発明の実施形態に係ってストレージ装置のIOPS及びコマンドキューの深さを例示的に図示する。本発明の実施形態に係るストレージ装置は図1乃至図18で前述したストレージ装置200、400である。図19で、XnFはtransfer−and−flush方式を示し(図2参照)、Xはwait−on−transfer方式を示し、そしてOPは本発明の実施形態に係るorder−preserving方式を示す(図18参照)。図19には、UFS2.0(GS6)、SSD(850 PRO)、及びSSD(843TN)の各々がXnF方式、X方式、及びOP方式に入出力要請を処理する場合、IOPS(input/output operations per second)及びコマンドキューの深さが図示されている。本発明の実施形態に係るOP方式によれば、前述したホスト100、300はデータのDMA伝送及びデータのフラッシュが完了される時まで待たずにIO要請に応じるコマンドをストレージ装置200、400に伝送することができる。したがって、XnF方式又はX方式に比べて、OP方式によれば、ストレージ装置200、400のIOPS及びコマンドキューの深さが増加することができる。
上で説明した内容は本発明を実施するための具体的な例である。本発明は上述した実施形態のみならず、上述した実施形態を利用して単純に設計変更するか、或いは容易に変更することができる実施形態も含む。
10 コンピュータシステム
100 ホスト
110 プロセシングユニット
120 ホストメモリ
121 アプリケーションプログラム
122 ファイルシステム
123 ブロック入出力スケジューラー
124 スケジューラーキュー
130 インターフェイス回路
125 装置ドライバー
200 ストレージ装置
210 コントローラ
211 プロセシングユニット
212 ワーキングメモリ
213 コマンドキュー
214 ホストインターフェイス回路
215 バッファインターフェイス回路
216 フラッシュインターフェイス回路
220 バッファメモリ
221 書込みバックキャッシュ
222 書込みバッファ
230 不揮発性メモリ装置

Claims (20)

  1. 不揮発性メモリ装置を含んだストレージ装置にデータをプログラムする方法であって、
    ホストから第1バリアーコマンド、第2バリアーコマンド、及び第3バリアーコマンドを受信し、
    前記ホストから前記第1バリアーコマンドに対応する第1データ、前記第2バリアーコマンドに対応する第2データ、前記第3バリアーコマンドに対応する第3データを受信し、
    前記第1及び第2バリアーコマンドを併合し、そして前記第1及び第2データを前記第1及び第2バリアーコマンドの順序に対応して連続的に前記不揮発性メモリ装置にプログラムし、
    前記第1及び第2データ全てのプログラム完了を検証し、
    前記第1及び第2データのプログラムが完了されれば、前記第1及び第2データをマップインし、そして前記第1データ及び前記第2データのうち少なくとも1つのプログラムが完了されなければ、前記第1及び第2データ全てをマップアウトし、そして
    前記マップイン又は前記マップアウトの後に、前記不揮発性メモリ装置に前記第3データをプログラムする、
    ことを含む方法。
  2. 前記第1乃至第3バリアーコマンドの各々は、プログラムコマンドを含む、請求項1に記載の方法。
  3. 前記第1乃至第3バリアーコマンドの各々は、前記不揮発性メモリ装置のスペア領域にフラッグ情報で表記される、請求項1に記載の方法。
  4. 前記フラッグ情報は、エポック番号であり、前記併合された第1及び第2バリアーコマンドは、同一なエポック番号を有する、請求項3に記載の方法。
  5. 前記第2バリアーコマンドのエポック番号に追加的に遂行完了記録ビットを記載する、請求項4に記載の方法。
  6. 前記第1及び第2データのプログラム完了を検証することは、遂行完了記録ビットを参照して検証することを含む、請求項4に記載の方法。
  7. 前記第1データは、前記ホストから、前記第1バリアーコマンドの受信の後に連続的に提供される、請求項1に記載の方法。
  8. 前記第2データは、前記ホストから、前記第2バリアーコマンドの受信に続いて提供される、請求項1に記載の方法。
  9. 前記第1及び第2データのプログラム完了を検証した後に、前記第3データがプログラムされる、請求項1に記載の方法。
  10. 前記第1及び第2データは、前記不揮発性メモリ装置の第1ブロックにプログラムされ、前記第3データは、前記不揮発性メモリ装置の第2ブロックにプログラムされる、請求項9に記載の方法。
  11. 前記マップインは、前記第1及び第2データを有効データとして分類する、請求項1に記載の方法。
  12. 前記マップアウトは、前記第1及び第2データを無効データとして分類する、請求項1に記載の方法。
  13. 前記無効データとして分類された前記第1及び第2データに対するガーベッジコレクションを遂行することをさらに含む請求項12に記載の方法。
  14. 前記第1及び第2データの量は、前記不揮発性メモリ装置のプログラム単位と同一であるか、或いは小さい、請求項1に記載の方法。
  15. 前記第1及び第2データの前記量が前記プログラム単位より小さい場合、前記第1及び第2データは、第4データと共に前記不揮発性メモリ装置にプログラムされる、請求項14に記載の方法。
  16. 不揮発性メモリ装置を制御するメモリコントローラの動作方法であって、
    ホストから第1バリアーコマンドと第1プログラムコマンド、第2バリアーコマンドと第2プログラムコマンド、及び第3バリアーコマンドと第3プログラムコマンドを受信し、
    前記ホストから前記第1バリアーコマンドに対応する第1データ、前記第2バリアーコマンドに対応する第2データ、前記第3バリアーコマンドに対応する第3データを受信し、
    前記第1乃至第3バリアーコマンドを併合して前記第1乃至第3データを連続的に前記不揮発性メモリ装置にプログラムし、
    前記第1乃至第3データのプログラムの成否を検証し、前記第1乃至第3データが全てプログラムされれば、前記第1乃至第3データを有効データとして分類し、そして前記第1乃至第3データのうち少なくとも1つのデータがプログラムされなければ、前記第1乃至第3データを全て無効データとして分類する、
    ことを含む動作方法。
  17. 前記第1乃至第3データの各々のサイズの合計は、前記不揮発性メモリ装置のプログラム単位と同一であるか、或いは小さい、請求項16に記載の動作方法。
  18. 前記第1乃至第3データのプログラムの成否は、遂行完了記録ビットを参照して検証される、請求項16に記載の動作方法。
  19. ホストと、
    前記ホストから第1乃至第3バリアーコマンドを受信し、そして前記第1乃至第3バリアーコマンドに各々対応しプログラムされる第1乃至第3データを前記ホストから受信するストレージ装置と、を含み、
    前記ストレージ装置は、
    前記第1乃至第3データを格納する複数の不揮発性メモリ装置と、
    前記複数の不揮発性メモリ装置を制御し、前記第1乃至第3バリアーコマンドを併合し、前記第1乃至第3データを連続的にプログラムし、前記第1乃至第3データのプログラム完了の成否を判別し、前記第1乃至第3データが全てプログラム完了されれば、前記第1乃至第3データを有効データにマップインし、前記第1乃至第3データのうち少なくとも1つのデータがプログラム完了されなければ、前記第1乃至第3データを無効データにマップアウトするメモリコントローラと、を含む、
    コンピュータシステム。
  20. 前記ホストは、前記第1乃至第3バリアーコマンドを前記ストレージ装置に提供する時、前記第1乃至第3データを前記第1乃至第3バリアーコマンドに各々対応してフラッシュしない、請求項19に記載のコンピュータシステム。
JP2019002547A 2018-01-12 2019-01-10 バリアーコマンドに基づいてデータを順に格納するストレージ装置 Active JP7274869B2 (ja)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201862616718P 2018-01-12 2018-01-12
US62/616,718 2018-01-12
KR10-2018-0068127 2018-06-14
KR1020180068127A KR102646724B1 (ko) 2018-01-12 2018-06-14 배리어 커맨드에 기초하여 데이터를 순서대로 저장하는 스토리지 장치

Publications (2)

Publication Number Publication Date
JP2019125366A true JP2019125366A (ja) 2019-07-25
JP7274869B2 JP7274869B2 (ja) 2023-05-17

Family

ID=65019306

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019002547A Active JP7274869B2 (ja) 2018-01-12 2019-01-10 バリアーコマンドに基づいてデータを順に格納するストレージ装置

Country Status (4)

Country Link
US (1) US11741010B2 (ja)
EP (1) EP3511814B1 (ja)
JP (1) JP7274869B2 (ja)
CN (1) CN110033799A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102226184B1 (ko) * 2020-02-25 2021-03-10 한국과학기술원 디스크 배열을 위한 캐시베리어 명령 처리 방법 및 이를 위한 장치

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10534540B2 (en) * 2016-06-06 2020-01-14 Micron Technology, Inc. Memory protocol
KR102537373B1 (ko) * 2018-09-10 2023-05-30 에스케이하이닉스 주식회사 메모리 시스템에서의 데이터 전달 방법 및 장치
US10990517B1 (en) * 2019-01-28 2021-04-27 Xilinx, Inc. Configurable overlay on wide memory channels for efficient memory access
US20220100425A1 (en) * 2020-09-29 2022-03-31 Samsung Electronics Co., Ltd. Storage device, operating method of storage device, and operating method of computing device including storage device
EP3974954A1 (en) * 2020-09-29 2022-03-30 Samsung Electronics Co., Ltd. Storage device, operating method of storage device, and operating method of computing device including storage device
CN114764310A (zh) * 2021-01-13 2022-07-19 三星电子株式会社 使用主机存储缓冲器的处理器和包括该处理器的存储系统
CN114281245A (zh) 2021-11-26 2022-04-05 三星(中国)半导体有限公司 同步写方法及装置、存储系统、电子设备
US11861216B2 (en) * 2021-12-20 2024-01-02 Micron Technology, Inc. Data recovery using barrier commands

Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH02284246A (ja) * 1989-04-26 1990-11-21 Oki Electric Ind Co Ltd ディスクキャッシュ装置の制御方式
JP2001243021A (ja) * 2000-02-29 2001-09-07 Toshiba Corp ランダムディスクライトに好適なディスク制御機構
JP2004013367A (ja) * 2002-06-05 2004-01-15 Hitachi Ltd データ記憶サブシステム
US20120198214A1 (en) * 2009-09-25 2012-08-02 Shirish Gadre N-way memory barrier operation coalescing
JP2014199583A (ja) * 2013-03-29 2014-10-23 富士通株式会社 ストレージ制御装置、制御プログラム及び制御方法
US20150220439A1 (en) * 2014-02-04 2015-08-06 Microsoft Corporation Block storage by decoupling ordering from durability
JP2016021246A (ja) * 2012-06-19 2016-02-04 株式会社東芝 制御プログラム、ホスト装置の制御方法、情報処理装置およびホスト装置
JP2016186735A (ja) * 2015-03-27 2016-10-27 株式会社バイオス 記憶制御システム及び記憶制御装置
JP2017123110A (ja) * 2016-01-08 2017-07-13 株式会社東芝 データ記憶装置、データ記憶方法およびプログラム
JP2018005959A (ja) * 2016-06-30 2018-01-11 東芝メモリ株式会社 メモリシステムおよび書き込み方法

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5930807A (en) 1997-04-23 1999-07-27 Sun Microsystems Apparatus and method for fast filtering read and write barrier operations in garbage collection system
US7457921B2 (en) 2005-02-23 2008-11-25 Microsoft Corporation Write barrier for data storage integrity
US7574565B2 (en) 2006-01-13 2009-08-11 Hitachi Global Storage Technologies Netherlands B.V. Transforming flush queue command to memory barrier command in disk drive
US8006047B2 (en) 2007-06-27 2011-08-23 Hitachi Global Storage Technologies Netherlands B.V. Storage device with write barrier sensitive write commands and write barrier insensitive commands
KR101226685B1 (ko) 2007-11-08 2013-01-25 삼성전자주식회사 수직형 반도체 소자 및 그 제조 방법.
US8065491B2 (en) 2007-12-30 2011-11-22 Intel Corporation Efficient non-transactional write barriers for strong atomicity
KR101691092B1 (ko) 2010-08-26 2016-12-30 삼성전자주식회사 불휘발성 메모리 장치, 그것의 동작 방법, 그리고 그것을 포함하는 메모리 시스템
US8553466B2 (en) 2010-03-04 2013-10-08 Samsung Electronics Co., Ltd. Non-volatile memory device, erasing method thereof, and memory system including the same
US9536970B2 (en) 2010-03-26 2017-01-03 Samsung Electronics Co., Ltd. Three-dimensional semiconductor memory devices and methods of fabricating the same
KR101682666B1 (ko) 2010-08-11 2016-12-07 삼성전자주식회사 비휘발성 메모리 장치, 그것의 채널 부스팅 방법, 그것의 프로그램 방법 및 그것을 포함하는 메모리 시스템
KR101734199B1 (ko) 2010-12-29 2017-05-24 삼성전자주식회사 멀티-비트 메모리 장치를 포함한 데이터 저장 시스템 및 그것의 동작 방법
KR101942272B1 (ko) 2011-12-27 2019-01-28 삼성전자주식회사 비휘발성 메모리의 제어방법, 이를 구현한 비휘발성 메모리 컨트롤러 및 이를 포함하는 메모리 시스템
JP6135134B2 (ja) 2012-06-04 2017-05-31 大日本印刷株式会社 光学積層体及び画像表示装置
WO2014018912A1 (en) 2012-07-27 2014-01-30 Huawei Technologies Co., Ltd. The handling of barrier commands for computing systems
US9146857B2 (en) 2012-08-18 2015-09-29 Storart Technology Co. Ltd. Method for mapping management
US9645752B1 (en) 2014-04-07 2017-05-09 Western Digital Technologies, Inc. Identification of data committed to non-volatile memory by use of notification commands
US9632711B1 (en) 2014-04-07 2017-04-25 Western Digital Technologies, Inc. Processing flush requests by utilizing storage system write notifications
US9696927B2 (en) 2014-06-19 2017-07-04 International Business Machines Corporation Memory transaction having implicit ordering effects
US9990146B2 (en) * 2016-02-03 2018-06-05 Sandisk Technologies Llc Apparatus and method of data sequencing

Patent Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH02284246A (ja) * 1989-04-26 1990-11-21 Oki Electric Ind Co Ltd ディスクキャッシュ装置の制御方式
JP2001243021A (ja) * 2000-02-29 2001-09-07 Toshiba Corp ランダムディスクライトに好適なディスク制御機構
JP2004013367A (ja) * 2002-06-05 2004-01-15 Hitachi Ltd データ記憶サブシステム
US20120198214A1 (en) * 2009-09-25 2012-08-02 Shirish Gadre N-way memory barrier operation coalescing
JP2016021246A (ja) * 2012-06-19 2016-02-04 株式会社東芝 制御プログラム、ホスト装置の制御方法、情報処理装置およびホスト装置
JP2014199583A (ja) * 2013-03-29 2014-10-23 富士通株式会社 ストレージ制御装置、制御プログラム及び制御方法
US20150220439A1 (en) * 2014-02-04 2015-08-06 Microsoft Corporation Block storage by decoupling ordering from durability
JP2016186735A (ja) * 2015-03-27 2016-10-27 株式会社バイオス 記憶制御システム及び記憶制御装置
JP2017123110A (ja) * 2016-01-08 2017-07-13 株式会社東芝 データ記憶装置、データ記憶方法およびプログラム
JP2018005959A (ja) * 2016-06-30 2018-01-11 東芝メモリ株式会社 メモリシステムおよび書き込み方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
JOSHI, ARPIT ET AL: "Efficient Persist Barriers for Multicores", MICRO-48, JPN6022055845, 2015, US, pages 660 - 671, XP055938080, ISSN: 0004958336, DOI: 10.1145/2830772.2830805 *
WON, YOUJIP ET AL: "Barrier Enabled IO Stack for Flash Storage", [ONLINE], JPN6022055847, 7 November 2017 (2017-11-07), pages 1 - 15, ISSN: 0004958335 *

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102226184B1 (ko) * 2020-02-25 2021-03-10 한국과학기술원 디스크 배열을 위한 캐시베리어 명령 처리 방법 및 이를 위한 장치
WO2021172708A1 (ko) * 2020-02-25 2021-09-02 한국과학기술원 디스크 배열을 위한 캐시베리어 명령 처리 방법 및 이를 위한 장치
US11947843B2 (en) 2020-02-25 2024-04-02 Korea Advanced Institute Of Science And Technology Method for processing a cache barrier command for a disk array and device for the same

Also Published As

Publication number Publication date
JP7274869B2 (ja) 2023-05-17
EP3511814A1 (en) 2019-07-17
US11741010B2 (en) 2023-08-29
EP3511814B1 (en) 2022-07-06
CN110033799A (zh) 2019-07-19
US20190220404A1 (en) 2019-07-18

Similar Documents

Publication Publication Date Title
JP7274869B2 (ja) バリアーコマンドに基づいてデータを順に格納するストレージ装置
US10671299B2 (en) Nonvolatile memory module having device controller that detects validity of data in RAM based on at least one of size of data and phase bit corresponding to the data, and method of operating the nonvolatile memory module
US9799402B2 (en) Nonvolatile memory device and program method thereof
KR102646724B1 (ko) 배리어 커맨드에 기초하여 데이터를 순서대로 저장하는 스토리지 장치
US10782909B2 (en) Data storage device including shared memory area and dedicated memory area
US20220261171A1 (en) Storage devices, data storage systems and methods of operating storage devices
CN112201292A (zh) 控制器及其操作方法
US20150220275A1 (en) Method for operating nonvolatile storage device and method for operating computing device accessing nonvolatile storage device
US11875055B2 (en) Storage device that receives inode address information to reduce external communication overhead
KR20220087785A (ko) 메모리 컨트롤러 및 이를 포함하는 저장 장치
KR20220087782A (ko) 메모리 컨트롤러 및 이를 포함하는 저장 장치
US20160132251A1 (en) Operating method of storage device and data writing method for writing data into storage device
KR20200032404A (ko) 데이터 저장 장치 및 동작 방법, 이를 포함하는 스토리지 시스템
KR102500821B1 (ko) 복수의 회로들 및 복수의 회로들을 연결하는 버스를 포함하는 반도체 장치 및 반도체 장치의 동작 방법
US11003580B1 (en) Managing overlapping reads and writes in a data cache
US11055011B2 (en) Storage device
CN115390747A (zh) 存储设备及其操作方法
US20240069750A1 (en) Storage device including nonvolatile memory device and operating method of storage device
US20240078027A1 (en) Storage device including nonvolatile memory device and operating method of storage device
KR20220159270A (ko) 스토리지 장치 및 그 동작 방법
KR20210083081A (ko) 메모리 컨트롤러 및 그 동작 방법

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20211224

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20221227

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20230110

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20230404

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20230502

R150 Certificate of patent or registration of utility model

Ref document number: 7274869

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150