JP5990430B2 - Ssd(ソリッドステートドライブ)装置 - Google Patents

Ssd(ソリッドステートドライブ)装置 Download PDF

Info

Publication number
JP5990430B2
JP5990430B2 JP2012188415A JP2012188415A JP5990430B2 JP 5990430 B2 JP5990430 B2 JP 5990430B2 JP 2012188415 A JP2012188415 A JP 2012188415A JP 2012188415 A JP2012188415 A JP 2012188415A JP 5990430 B2 JP5990430 B2 JP 5990430B2
Authority
JP
Japan
Prior art keywords
data
ssd device
memory unit
unit
ssd
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
JP2012188415A
Other languages
English (en)
Other versions
JP2014048679A (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.)
Buffalo Memory Co Ltd
Original Assignee
Buffalo Memory 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 Buffalo Memory Co Ltd filed Critical Buffalo Memory Co Ltd
Priority to JP2012188415A priority Critical patent/JP5990430B2/ja
Priority to US13/963,501 priority patent/US9063845B2/en
Priority to CN201310381722.1A priority patent/CN103678177B/zh
Publication of JP2014048679A publication Critical patent/JP2014048679A/ja
Priority to US14/699,838 priority patent/US9632714B2/en
Application granted granted Critical
Publication of JP5990430B2 publication Critical patent/JP5990430B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/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
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/30Means for acting in the event of power-supply failure or interruption, e.g. power-supply fluctuations
    • 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/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0873Mapping of cache memory to specific storage devices or parts thereof
    • 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
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1032Reliability improvement, data loss prevention, degraded operation etc
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/15Use in a specific computing environment
    • G06F2212/152Virtualized environment, e.g. logically partitioned system
    • 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/21Employing a record carrier using a specific recording technology
    • G06F2212/214Solid state disk
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/28Using a specific disk cache architecture
    • G06F2212/281Single cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/30Providing cache or TLB in specific location of a processing system
    • G06F2212/304In main memory subsystem
    • G06F2212/3042In main memory subsystem being part of a memory device, e.g. cache DRAM
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/31Providing disk cache in a specific location of a storage system
    • G06F2212/313In storage device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/604Details relating to cache allocation
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Computer Security & Cryptography (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Description

本発明は、NANDフラッシュメモリなど、フラッシュメモリを用いたSSD装置に関する。
近年、スループットの高さや消費電力の低さといった観点から、SSD(Solid State Drive)装置が、ハードディスクドライブ(HDD)に代わって利用されるようになっている。このようなSSD装置では、読出しや書込みの速度向上のために、キャッシュメモリとして揮発性メモリであるDRAM(Dynamic Random Access Memory)を利用する例がある。
ここで、予測できない停電等によりこのSSD装置への電源供給が強制的に断たれる(以降、単に「電断」と称することがある)と、キャッシュメモリが揮発性メモリである場合、キャッシュメモリ上に展開されているデータは電断に伴って消失する。従って、かかる電断に伴うキャッシュメモリ内のデータ消失への対策が必要である。
SSD装置に限らず、外部記憶装置に用いられているキャッシュメモリは揮発性メモリであることが多いため、この外部記憶装置にバッテリーを設け、電断時にはこのバッテリーから供給される電力によりキャッシュメモリ内にあるデータを外部記憶装置内にあるフラッシュメモリに待避させる(特許文献1参照)、あるいは、電断時にはキャッシュメモリをバッテリー駆動して内部データを保持し続ける(特許文献2参照)技術が提案されている。
特開平5−216775号公報 特開2012−78941号公報
上述した従来の外部記憶装置は、いずれも電断時においてキャッシュメモリ内のデータをバッテリーによりバックアップし、あるいは不揮発性メモリにキャッシュメモリ内のデータを待避させる際の電源としてバッテリーを用いており、いずれにしても電断対策のためにバッテリーを必要としていた。しかしながら、この技術をSSD装置に適用した場合、SSD装置は小型軽量であることが利点であるため、バッテリーを設けることによりSSD装置の大型化及び重量増を招くことが避けられない。仮に、一時的な電源として電気二重層コンデンサを用いることも考えられるが、この場合でもやはりSSD装置の大型化及び重量増を招くことが避けられない。
本発明は上述した課題に鑑みてなされたもので、電断に適切に対応しうる小型軽量のSSD装置を提供することを目的としている。
本発明は、フラッシュメモリを用いたSSD(ソリッドステートドライブ)装置に適用され、そして、このSSD装置に、フラッシュメモリとは異なる種類の不揮発性メモリと、フラッシュメモリへ書き込むべきデータを受け入れて、不揮発性メモリに当該受け入れたデータを保存した後、不揮発性メモリからフラッシュメモリへ書き込むべきデータを書き込むコントローラ部とを設け、さらに、コントローラ部が行うべき作業フローを示すフローデータをコントローラ部が不揮発性メモリに保存することにより上述の目的を達成している。
従って、SSD装置に電断が生じた場合でも、フローデータがフラッシュメモリとは異なる種類の不揮発性メモリに保存されているので、フローデータが電断によって消失することがなくなる。
ここで、SSD装置に対して強制的に電源供給が断たれた後、不揮発性メモリ内に保存されたフローデータを参照して、コントローラ部がSSD装置の復旧動作を行うことが好ましい。さらに、SSD装置に対して強制的に電源供給が断たれた後、SSD装置に対する電断がこのSSD装置の動作のどの時点で生じたかを参照して、コントローラ部がSSD装置の復旧動作を行うことが好ましい。
本発明は、コントローラ部が行うべき作業フローを示すフローデータをコントローラ部が不揮発性メモリに保存しているので、このフローデータが電断によって消失することがなくなる。これにより、バッテリー等の電源を設けることなく、電断終了後の復帰動作をフローデータを参照することにより行うことができる。よって、電断に適切に対応しうる小型軽量のSSD装置を提供することが可能となる。
本発明の一実施形態であるSSD装置の構成例を表す概略ブロック図である。 本発明の一実施形態であるSSD装置のコントローラ部の内容例を表すブロック図である。 本発明の一実施形態であるSSD装置の動作を説明するための図である。 本発明の一実施形態であるSSD装置の動作の一例を示すフローチャートである。 本発明の一実施形態であるSSD装置の動作の他の例を示すフローチャートである。 本発明の一実施形態であるSSD装置の動作のまた他の例を示すフローチャートである。
以下、図面を参照して、本発明のSSD装置の実施形態について説明する。
(一実施形態)
本発明の一実施形態であるSSD装置1は、図1にその概要を示すように、コントローラ部11と、インタフェース部12と、キャッシュメモリ部13と、フラッシュメモリ部14と、電源部15とを含んで構成されている。このSSD装置1は、インタフェース部12を介してホスト(コンピュータ等、SSD装置を利用する装置)に接続されている。
コントローラ部11は、記憶されているプログラムに従って動作するプログラム制御デバイスであり、具体的には図2に例示するように、CPU21と、記憶部22と、入出力部23と、キャッシュ制御部24と、フラッシュメモリインタフェース25と、を含んで構成されている。
ここでCPU21は、記憶部22に格納されたプログラムに従って動作する。本実施の形態では、このCPU21は、入出力部23を介してホスト側から入力される指示に従い、キャッシュメモリ部13やフラッシュメモリ部14との間でデータの読出しや書込みを行う。このCPU21による具体的な処理の内容は後に述べる。
コントローラ部11の記憶部22は、例えばSRAM(Static Random Access Memory)等の揮発性メモリであり、ファームウェア等CPU21によって実行されるプログラムを保持する。なお、このファームウェアは、図示しないNOR型フラッシュ等の不揮発性メモリに格納しておき、このNOR型フラッシュをコントローラ部11に接続して、当該NOR型フラッシュから読出してこの記憶部22に格納するようになっていてもよい。また、このファームウェアは、DVD−ROM(Digital Versatile Disc Read Only Memory)等のコンピュータ可読な記録媒体に格納されて、あるいはホスト側から提供され、この記憶部22に複写されたものであってもよい。
入出力部23は、インタフェース部12に接続され、インタフェース部12を介してCPU21とホスト機器との間の通信を制御する。この入出力部23は、例えばSATA(Serial Advanced Technology Attachment)−PHYである。
キャッシュ制御部24は、CPU21から入力される指示に従い、キャッシュメモリ部13との間でデータの書き込みや読み出しの処理を行う。フラッシュメモリインタフェース25は、CPU21から入力される指示に従い、フラッシュメモリ部14との間でデータの書き込みや読み出しを行う。
インタフェース部12は、SATAまたはPATA(Parallel Advanced Technology Attachment)インタフェース・コネクタなどであり、ホスト側に接続される。このインタフェース部12は、ホスト機器側からコマンドや書き込みの対象となるデータを受けて、コントローラ部11に出力する。また、このインタフェース部12は、コントローラ部11から入力されるデータ等をホスト機器側に出力する。さらに、例えばコントローラ部11に含まれる入出力部23がSATA−PHYであり、インタフェース部12がPATAインタフェース・コネクタである場合は、コントローラ部11とインタフェース部12との間に、PATAとSATAとの間のプロトコル変換を行うモジュールを設けてもよい。
キャッシュメモリ部13は、フラッシュメモリとは異なる種類の不揮発性メモリを含む。このような不揮発性メモリとしては、FeRAM(Ferroelectric RAM)やMRAM(Magnetoresistive RAM)等がある。キャッシュメモリ部13は、コントローラ部11から入力される指示に従い、データを保持する。またこのキャッシュメモリ部13は、コントローラ部11から入力される指示に従って、保持しているデータを読み出してコントローラ部11に出力する。
フラッシュメモリ部14は、例えばNAND型フラッシュを含む。このフラッシュメモリ部14は、コントローラ部11から入力される指示に従い、データを保持する。またこのフラッシュメモリ部14は、コントローラ部11から入力される指示に従って、保持しているデータを読み出してコントローラ部11に出力する。
電源部15は、コントローラ部11から入力される指示に従って、各部への電源供給を個別にオン/オフする。
(一実施形態の動作)
次に、図3を参照して、本実施形態のSSD装置1の動作の概略について説明する。図3(a)に示すように、キャッシュメモリを持たない一般のSSD装置においては、フラッシュメモリ部14内に書き込まれたデータ(A)30と、このフラッシュメモリ部14内の論理アドレスを管理するための管理テーブル(B)31と、そして、フラッシュメモリ部14へのデータ書き込み/読み出し動作の手順を記載した作業フローを示す作業フローデータ(C)32とが書き込まれている。作業フローデータ32は、SSD装置に対する電断が生じた際に、電断終了後の復帰作業を行う際にこのデータ22を参照して復帰作業を行うためにフラッシュメモリ部14に書き込まれている。従って、管理テーブル31及び作業フローデータ32は、新たなデータが書き込まれれば基本的にフラッシュメモリ部14内に保存しておく必要はない。
この管理テーブル31と作業フローデータ32とはフラッシュメモリ部14内に分散して書き込まれている。従って、フラッシュメモリ部14がデータ30、管理テーブル31及び作業フローデータ32で埋まってしまった段階で、不要な管理テーブル31及び作業フローデータ32を消去する(ここでいう「消去」には、その時点で有効な管理テーブル31上で不要な管理テーブル31等が格納されているアドレスを無効等にして書き込み可能な状態にすることや、該当箇所のフラッシュメモリ部14のブロック消去が含まれる)必要がある。
このような動作を省くために、さらにはフラッシュメモリ部14へのデータ書き込み/読み出し動作の高速化のためにキャッシュメモリ部13が設けられているが、このキャッシュメモリ部13をDRAM等の揮発性メモリで構成した場合、既に述べたように電断対策として電源が必要になる等の問題がある。
そこで、本実施形態では、図3(b)に示すように、SSD装置1にフラッシュメモリとは異なる種類の不揮発性メモリを含むキャッシュメモリ部13を設け、コントローラ部11が、図略のホスト機器からSSD装置1への書き込みが指示されたデータ(D)33、管理テーブル(B)31及び作業フローデータ(C)32をキャッシュメモリ部13に保存し、さらにデータ33をフラッシュメモリ部14に書き込む構成にしている。かかる構成により、SSD装置1に強制的に電断が生じた場合でも、キャッシュメモリ部13が不揮発性メモリを備えているため、データ33、管理テーブル31及び作業フローデータ32が電断によって消失することがなくなり、しかも、電断終了後の復帰動作を、作業フローデータ32を参照することにより行うことができる。
ここに、本実施形態における作業フローデータ32の詳細について説明する。作業フローデータ32の具体的構成は任意であるが、一例として、この作業フローデータ32は、作業毎の(1)処理内容に付された番号、(2)転送元情報、(3)転送先情報、(4)作業完了フラグからなり、(1)〜(4)がテーブル化されたものである。より具体的には、(1)処理内容に付された番号とは、SSD装置1において実施される処理のそれぞれに番号を付したものであり、一例として、ホスト機器からキャッシュメモリ部13へのデータ転送は「1」、キャッシュメモリ部13からホスト機器へのデータ転送は「2」、キャッシュメモリ部13からフラッシュメモリ部14へのデータ転送は「3」とされる。実際にはこの番号は例えば16進数で表される。(2)転送元情報及び(3)転送先情報は、番号単位の個々の処理内容におけるデータの転送元及び転送先情報であり、一例としてキャッシュメモリ部13等のアドレス値情報である。なお、転送元がホスト機器である場合のように転送元が一意に決まる場合や、フラッシュメモリ部14のブロック単位での消去動作の場合のように、転送元情報または転送先情報のいずれかが明らかになれば十分である場合は、一方の情報が空白であることもある。(4)作業完了フラグは、当該処理が実施済みか否かを示すフラグである。
次に、図4〜図6を参照して、本実施形態のSSD装置1の動作について説明する。なお、特記しない限り、図4〜図6に示す動作はコントローラ部11により実施される。
まず、図4は、SSD装置1のキャッシュメモリ部13に書き込まれたデータ33(図3参照)をフラッシュメモリ部14に書き込む(転送する)際の動作を説明するためのフローチャートである。図4において、ステップS1では、フラッシュメモリ部14へのデータ書き込みを行うべき所定領域(転送先)の特定がされる。次いで、ステップS2では、キャッシュメモリ部13からフラッシュメモリ部14へのデータ転送手順を示す作業フローデータ32がキャッシュメモリ部13に書き込まれる。
ステップS3では、キャッシュメモリ部13に書き込まれたデータ33がフラッシュメモリ部14の所定領域に書き込まれる(転送される)。ステップS4では、フラッシュメモリ部14から、書き込みが正常終了した旨の通知がコントローラ部11にされる。
ステップS5では、ステップS4においてフラッシュメモリ部14へのデータ書き込みが正常に終了したことを受けて、キャッシュメモリ部13に書き込まれている作業フローデータ32を更新する。ステップS5における作業フローデータ32更新作業には、処理済の作業フローデータ32の作業単位での消去作業や、作業フローデータ32の作業完了フラグの書き換え(実施済である旨のフラグ書き換え)作業が含まれる。次いで、ステップS6では、同様にステップS4においてフラッシュメモリ部14へのデータ書き込みが正常に終了したことを受けて、キャッシュメモリ部13にある管理テーブル31を更新する。そして、ステップS7では、キャッシュメモリ部13に書き込まれている作業フローデータ32を消去する。ここにいう「消去」とは、キャッシュメモリ部13にある作業フローデータ32のイレーズ動作のみならず、作業フローデータ32が書き込まれた領域についてデータ書き込み可能に設定することも含まれる。
次に、図5は、SSD装置1のフラッシュメモリ部14への書き込みの対象となるデータをホスト機器から受けた際の動作を説明するためのフローチャートである。まず、ステップS10において、フラッシュメモリ部14への書き込みの対象となるデータをホスト機器から受けたことをトリガとして、キャッシュメモリ部13へのデータ受け入れ手順を示す作業フローデータ32がキャッシュメモリ部13に書き込まれる。ステップS11では、ホスト機器から受けたデータ33がキャッシュメモリ部13に書き込まれる。ステップS12では、キャッシュメモリ部13から、書き込みが正常終了した旨の通知がコントローラ部11にされる。
ステップS13では、ステップS12においてキャッシュメモリ部13へのデータ書き込みが正常に終了したことを受けて、キャッシュメモリ部13に書き込まれている作業フローデータ32を更新する。ステップS13における作業フローデータ32更新作業には、ステップS5の作業と同様に、処理済の作業フローデータ32の作業単位での消去作業や、作業フローデータ32の作業完了フラグの書き換え(実施済である旨のフラグ書き換え)作業が含まれる。次いで、ステップS14では、同様にステップS12においてキャッシュメモリ部13へのデータ書き込みが正常に終了したことを受けて、キャッシュメモリ部13にある管理テーブル31を更新する。そして、ステップS15では、キャッシュメモリ部13に書き込まれている作業フローデータ32を消去する。ここにいう「消去」とは、キャッシュメモリ部13にある作業フローデータ32のイレーズ動作のみならず、作業フローデータ32が書き込まれた領域についてデータ書き込み可能に設定することも含まれる。
次に、図6は、図4または図5に示す動作の途中で、本実施形態のSSD装置1に強制的な電断が生じた後における復帰動作を説明するためのフローチャートである。まず、ステップS20において、キャッシュメモリ部13に保存されている作業フローデータ32を読み出す。次いで、ステップS21において、ステップS20で読み出された作業フローデータ32を解析する。
さらに、ステップS22において、図4または図5に示す動作のどの段階で電断が生じたかを判定する。どの段階で電断が生じたかどうかの判定は、作業フローデータ32の更新状態及び作業フローデータ32内の作業完了フラグの値により判断が可能である。そして、図4のaに示す段階で電断が生じたと判定されると、プログラムはステップS23に移行し、キャッシュメモリ部13からフラッシュメモリ部14へのデータ転送作業をキャンセルする。その後、SSD装置1は通常動作に復帰する。
また、ステップS22において、図4のbに示す段階で電断が生じたと判定されると、プログラムはステップS24に移行し、図4のステップS1で特定された所定領域を後に消去すべき対象として管理テーブル31に登録し、次いで、ステップS25において、キャッシュメモリ部13からフラッシュメモリ部14へのデータ転送作業をキャンセルする。その後、SSD装置1は通常動作に復帰する。ここでいう「消去すべき対象として登録」には、管理テーブル31上で所定領域に対応するアドレスを無効等にして書き込み可能な状態にすることや、所定領域のフラッシュメモリ部14をブロック消去の対象とすることが含まれる。
さらに、ステップS22において、図4のcに示す段階で電断が生じたと判断されると、プログラムはステップS26に移行し、図4のステップS5に示す管理テーブル31更新作業を継続する。次いで、ステップS27において、キャッシュメモリ部13からフラッシュメモリ部14へのデータ転送作業を終了する。その後、SSD装置1は通常動作に復帰する。
さらに、ステップS22において、図5のdに示す段階で電断が生じたと判断されると、プログラムはステップS28に移行し、ホスト機器から受けたデータを書き込んでいるキャッシュメモリ部13の領域を空き領域として登録し、次いで、ステップS29において、キャッシュメモリ部13へのデータ書き込み作業をキャンセルする。その後、SSD装置1は通常動作に復帰する。ここでいう、「空き領域として登録」とは、書き込み対象とされた領域のアドレスを無効等にして書き込み可能な状態にすることが含まれる。
さらに、ステップS22において、図5のeに示す段階で電断が生じたと判断されると、プログラムはステップS30に移行し、図5のステップS13に示す管理テーブル31更新作業を継続する。次いで、ステップS31において、キャッシュメモリ部13へのデータ書き込み作業を終了する。その後、SSD装置1は通常動作に復帰する。
以上説明したように、本実施形態のSSD装置1では、SSD装置1にフラッシュメモリとは異なる種類の不揮発性メモリを含むキャッシュメモリ部13を設け、コントローラ部11が、ホスト機器からSSD装置1への書き込みが指示されたデータ33、管理テーブル31及び作業フローデータ32をキャッシュメモリ部13に保存しているので、SSD装置1に強制的に電断が生じた場合でも、データ33、管理テーブル31及び作業フローデータ32が電断によって消失することがなくなり、しかも、電断終了後の復帰動作を、作業フローデータ32を参照することにより行うことができる。これにより、電断に適切に対応することが可能になる。しかも、従来のSSD装置等のように、キャッシュメモリのバックアップ用電源を設けることなく電断に適切に対応することができるので、SSD装置の小型軽量化を図ることができる。
ここで、キャッシュメモリ部13がフラッシュメモリ部14とは異なる種類の不揮発性メモリを含む構成であることから、作業フローデータ32をキャッシュメモリ部13に保存することなく、データ33及び管理テーブル31のみをキャッシュメモリ部13に保存する構成が考えられる。この場合でも、データ33及び管理テーブル31は、電断が生じてもその時点での内容が消失することはないと考えられる。しかしながら、電断はホストからSSD装置1へのデータ書き込み作業のどの段階で生じるかは事前に予測することができず、電断のタイミングによってはデータ33及び管理テーブル31の内容だけでは適切に電断後の復帰動作を適切に行えない可能性がある。従って、電断に適切に対応するためには、データ33、管理テーブル31に加えて作業フローデータ32をキャッシュメモリ部13に保存することが好ましい。
(変形例)
なお、本発明のSSD装置は、その細部が上述の一実施形態に限定されず、種々の変形例が可能である。一例として、上述した一実施形態のSSD装置1では、キャッシュメモリ部13に用いる不揮発性のメモリとして、FeRAM、MRAMを例に挙げたが、キャッシュメモリ部13に適用可能な不揮発性メモリはこれに限定されず、例えばReRAM(Resistance Random Access Memory)であってもよく、要は、バッテリー等の電源によるバックアップを行うことなくメモリ内のデータを保持できるメモリであれば適用可能である。
1 SSD装置
11 コントローラ部
12 インタフェース部
13 キャッシュメモリ部
14 フラッシュメモリ部
21 CPU
22 記憶部
23 入出力部
24 キャッシュ制御部
30、33 データ
31 管理テーブル
32 作業フローデータ

Claims (3)

  1. フラッシュメモリを用いたSSD(ソリッドステートドライブ)装置であって、
    前記フラッシュメモリとは異なる種類の不揮発性メモリと、
    前記フラッシュメモリへ書き込むべきデータを受け入れて、前記不揮発性メモリに当該受け入れたデータを保存した後、前記不揮発性メモリから前記フラッシュメモリへ書き込むべき前記データを書き込むコントローラ部とを備え、
    前記コントローラ部は、このコントローラ部が行うべき作業フローを示す、作業毎の処理内容に付された番号、前記データの転送元情報、前記データの転送先情報、及び作業完了フラグからなるフローデータを前記不揮発性メモリに保存する
    ことを特徴とするSSD装置。
  2. 前記コントローラ部は、前記SSD装置に対して強制的に電源供給が断たれた後、前記不揮発性メモリ内に保存された前記フローデータを参照して、前記SSD装置の復旧動作を行うことを特徴とする請求項1記載のSSD装置。
  3. 前記コントローラ部は、前記SSD装置に対して強制的に電源供給が断たれた後、前記SSD装置に対する電断がこのSSD装置の動作のどの時点で生じたかを参照して、前記SSD装置の復旧動作を行うことを特徴とする請求項2記載のSSD装置。
JP2012188415A 2012-08-29 2012-08-29 Ssd(ソリッドステートドライブ)装置 Active JP5990430B2 (ja)

Priority Applications (4)

Application Number Priority Date Filing Date Title
JP2012188415A JP5990430B2 (ja) 2012-08-29 2012-08-29 Ssd(ソリッドステートドライブ)装置
US13/963,501 US9063845B2 (en) 2012-08-29 2013-08-09 Solid-state drive device
CN201310381722.1A CN103678177B (zh) 2012-08-29 2013-08-28 固态硬盘装置
US14/699,838 US9632714B2 (en) 2012-08-29 2015-04-29 Solid-state drive device

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2012188415A JP5990430B2 (ja) 2012-08-29 2012-08-29 Ssd(ソリッドステートドライブ)装置

Publications (2)

Publication Number Publication Date
JP2014048679A JP2014048679A (ja) 2014-03-17
JP5990430B2 true JP5990430B2 (ja) 2016-09-14

Family

ID=50189100

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012188415A Active JP5990430B2 (ja) 2012-08-29 2012-08-29 Ssd(ソリッドステートドライブ)装置

Country Status (3)

Country Link
US (2) US9063845B2 (ja)
JP (1) JP5990430B2 (ja)
CN (1) CN103678177B (ja)

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150052390A1 (en) * 2013-08-13 2015-02-19 Breakaway Systems Apparatus and Method for Microprocessor File System Protection
US9105333B1 (en) 2014-07-03 2015-08-11 Sandisk Technologies Inc. On-chip copying of data between NAND flash memory and ReRAM of a memory die
US9064569B1 (en) 2014-07-03 2015-06-23 Sandisk Technologies Inc. Memory controller with resistive random access memory (ReRAM)
US9632927B2 (en) 2014-09-25 2017-04-25 International Business Machines Corporation Reducing write amplification in solid-state drives by separating allocation of relocate writes from user writes
US10078582B2 (en) 2014-12-10 2018-09-18 International Business Machines Corporation Non-volatile memory system having an increased effective number of supported heat levels
US9779021B2 (en) 2014-12-19 2017-10-03 International Business Machines Corporation Non-volatile memory controller cache architecture with support for separation of data streams
CN104461397A (zh) * 2014-12-19 2015-03-25 上海新储集成电路有限公司 一种固态硬盘及其读写方法
CN104616688A (zh) * 2015-03-05 2015-05-13 上海磁宇信息科技有限公司 一种集成mram的固态硬盘控制芯片及固态硬盘
CN104810055B (zh) 2015-05-08 2018-09-07 京东方科技集团股份有限公司 Flash芯片读写控制电路和方法、AMOLED应用电路
JP6460940B2 (ja) 2015-08-06 2019-01-30 東芝メモリ株式会社 記憶装置およびデータ退避方法
US9886208B2 (en) 2015-09-25 2018-02-06 International Business Machines Corporation Adaptive assignment of open logical erase blocks to data streams
US10719236B2 (en) * 2015-11-20 2020-07-21 Arm Ltd. Memory controller with non-volatile buffer for persistent memory operations
JP6783812B2 (ja) * 2018-03-13 2020-11-11 株式会社東芝 情報処理装置、情報処理方法およびプログラム
US10671531B2 (en) * 2018-07-13 2020-06-02 Seagate Technology Llc Secondary memory configuration for data backup
US11340826B2 (en) * 2019-09-13 2022-05-24 Kioxia Corporation Systems and methods for strong write consistency when replicating data

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05216775A (ja) 1991-10-29 1993-08-27 Hitachi Ltd 半導体記憶装置
JPH09311827A (ja) 1996-05-22 1997-12-02 Fujitsu Ltd データバックアップ装置
JP4281421B2 (ja) 2003-06-06 2009-06-17 ソニー株式会社 情報処理システム及びその制御方法、並びにコンピュータ・プログラム
JP4060245B2 (ja) * 2003-06-30 2008-03-12 シャープ株式会社 メモリ管理装置およびこれを備えたicカード
US20050251617A1 (en) * 2004-05-07 2005-11-10 Sinclair Alan W Hybrid non-volatile memory system
JP2005258851A (ja) * 2004-03-12 2005-09-22 Renesas Technology Corp メモリカード
US20060002197A1 (en) * 2004-06-30 2006-01-05 Rudelic John C Method and apparatus to detect invalid data in a nonvolatile memory following a loss of power
US7395452B2 (en) * 2004-09-24 2008-07-01 Microsoft Corporation Method and system for improved reliability in storage devices
JP2006338370A (ja) * 2005-06-02 2006-12-14 Toshiba Corp メモリシステム
US20070143531A1 (en) * 2005-12-15 2007-06-21 Atri Sunil R Power loss recovery for bit alterable memory
KR100755700B1 (ko) * 2005-12-27 2007-09-05 삼성전자주식회사 비휘발성 메모리가 캐쉬로 사용되는 저장 장치 및 그 관리방법
US7913003B2 (en) * 2006-02-24 2011-03-22 Intel Corporation Reclaim algorithm for fast edits in a nonvolatile file system
CN101059749A (zh) * 2006-04-21 2007-10-24 技嘉科技股份有限公司 挥发式存储装置及具有此挥发式存储装置的串接式混合存储系统
KR100843543B1 (ko) * 2006-10-25 2008-07-04 삼성전자주식회사 플래시 메모리 장치를 포함하는 시스템 및 그것의 데이터복구 방법
CN101604548B (zh) * 2009-03-26 2012-06-27 成都市华为赛门铁克科技有限公司 一种固态硬盘及数据存储方法
JP2012078941A (ja) 2010-09-30 2012-04-19 Toshiba Corp 情報処理装置及びキャッシュ制御方法
JP2012108627A (ja) 2010-11-15 2012-06-07 Toshiba Corp メモリシステム
US9323670B2 (en) * 2010-12-13 2016-04-26 Seagate Technology Llc Protecting volatile data of a storage device in response to a state reset
JP5178857B2 (ja) * 2011-02-16 2013-04-10 株式会社東芝 メモリシステム
JP5914148B2 (ja) 2012-05-07 2016-05-11 株式会社バッファローメモリ Ssd(ソリッドステートドライブ)装置
US9177607B2 (en) * 2012-05-16 2015-11-03 Seagate Technology Llc Logging disk recovery operations in a non-volatile solid-state memory cache

Also Published As

Publication number Publication date
US20140068157A1 (en) 2014-03-06
US9063845B2 (en) 2015-06-23
CN103678177B (zh) 2016-08-31
US20150242151A1 (en) 2015-08-27
JP2014048679A (ja) 2014-03-17
US9632714B2 (en) 2017-04-25
CN103678177A (zh) 2014-03-26

Similar Documents

Publication Publication Date Title
JP5990430B2 (ja) Ssd(ソリッドステートドライブ)装置
TWI570737B (zh) 資料儲存裝置以及快閃記憶體控制方法
US8230161B2 (en) Data backup method for a flash memory and controller and storage system using the same
US8037232B2 (en) Data protection method for power failure and controller using the same
JP2008198310A (ja) ビットエラーの修復方法および情報処理装置
JP2013061799A (ja) 記憶装置、記憶装置の制御方法およびコントローラ
US20100268865A1 (en) Static Wear Leveling
JP2009237668A (ja) フラッシュメモリを用いた記憶装置
US20120324145A1 (en) Memory erasing method, memory controller, and memory storage apparatus
JP2013222435A (ja) 半導体記憶装置及びその制御方法
TWI454922B (zh) 記憶體儲存裝置及其記憶體控制器與資料寫入方法
JP5592478B2 (ja) 不揮発性記憶装置及びメモリコントローラ
US9047923B1 (en) Fast shingled tracks recording
JP2010086009A (ja) 記憶装置およびメモリ制御方法
JP5306745B2 (ja) フラッシュメモリの管理方法及びフラッシュメモリデバイス
US20160124650A1 (en) Data Storage Device and Flash Memory Control Method
KR101627322B1 (ko) 비-휘발성 버퍼를 이용한 데이터 저장 장치 및 방법
JP2009116465A (ja) 記憶装置及びメモリ制御方法
JP4661369B2 (ja) メモリコントローラ
US20120124275A1 (en) Memory system and data storage method
JP2012108627A5 (ja)
WO2016175762A1 (en) Storage cache management
JP6237177B2 (ja) 磁気ディスク装置およびストレージ装置
CN110928480B (zh) 固态储存装置的数据处理方法
JP5255389B2 (ja) 記憶装置およびメモリ制御方法

Legal Events

Date Code Title Description
A625 Written request for application examination (by other person)

Free format text: JAPANESE INTERMEDIATE CODE: A625

Effective date: 20150417

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20160325

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20160405

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160530

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20160815

R150 Certificate of patent or registration of utility model

Ref document number: 5990430

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313111

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250