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

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

Info

Publication number
JP5914148B2
JP5914148B2 JP2012106260A JP2012106260A JP5914148B2 JP 5914148 B2 JP5914148 B2 JP 5914148B2 JP 2012106260 A JP2012106260 A JP 2012106260A JP 2012106260 A JP2012106260 A JP 2012106260A JP 5914148 B2 JP5914148 B2 JP 5914148B2
Authority
JP
Japan
Prior art keywords
data
unit
nonvolatile memory
cpu
written
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
JP2012106260A
Other languages
English (en)
Other versions
JP2013235347A5 (ja
JP2013235347A (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 JP2012106260A priority Critical patent/JP5914148B2/ja
Priority to US14/399,004 priority patent/US20150081953A1/en
Priority to CN201380024027.8A priority patent/CN104303161A/zh
Priority to PCT/JP2013/059058 priority patent/WO2013168479A1/ja
Publication of JP2013235347A publication Critical patent/JP2013235347A/ja
Publication of JP2013235347A5 publication Critical patent/JP2013235347A5/ja
Application granted granted Critical
Publication of JP5914148B2 publication Critical patent/JP5914148B2/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
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1028Power efficiency
    • 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/22Employing cache memory using specific memory technology
    • G06F2212/222Non-volatile memory
    • 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

Landscapes

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

Description

本発明は、NANDフラッシュメモリなど、フラッシュメモリを用いたSSD装置に関する。
近年、スループットの高さや消費電力の低さといった観点から、SSD(Solid State Drive)装置が、ハードディスクドライブ(HDD)に代わって利用されるようになっている。また、読出しや書込みの速度向上のために、キャッシュメモリとしてDRAM(Dynamic Random Access Memory)を利用する例がある。
なお、特許文献1,2には、いずれにもDRAM以外にも磁気抵抗メモリ(MRAM)をキャッシュメモリとして利用可能である旨の開示がある。
米国特許第7,003,623号明細書 特開2011−164994号公報
上記従来のDRAMキャッシュつきのSSDでは、DRAMのリフレッシュ動作が必須であるため、待機電力の低減が困難となっている。一方、磁気抵抗メモリ等の不揮発性のメモリでは、理論上ではDRAMに置換えてのキャッシュメモリとして採用できるが、実際にはDRAMのような書込み、読出し速度が達成できないため、ホスト側のインタフェースの速度よりも遅くなる(例えばベースクロック25MHzのMRAMを利用する場合、4バイトアクセスとしても25×4=100MB/sとなって、PATA(Parallel Advanced Technology Attachment)の要求する133MB/sよりも遅い)。これではキャッシュメモリとして利用することができない。
本発明は上記実情に鑑みて為されたもので、不揮発性メモリをキャッシュとして利用し、消費電力を低減できるSSD装置を提供することを、その目的の一つとする。
上記従来例の問題点を解決するための本発明は、フラッシュメモリを用いたSSD(ソリッドステートドライブ)装置であって、フラッシュメモリとは異なる種類の不揮発性メモリをそれぞれに含んだ、n個(n≧2)の不揮発性メモリユニットと、前記フラッシュメモリへ書き込むべきデータを受け入れて、前記不揮発性メモリユニットに、当該受け入れたデータを保存するコントローラと、を含むものである。
ここで前記コントローラは、前記フラッシュメモリへ書き込むべきデータをm個(2≦m≦n)に分割して分割データを生成し、前記n個の不揮発性メモリユニットに対して、当該分割して得たm個の分割データをそれぞれ書き込むようにしてもよい。また、前記コントローラは、前記フラッシュメモリへ書き込むべきデータをm個(2≦m≦n)に分割して分割データを生成し、前記n個の不揮発性メモリユニットのそれぞれを書込み対象として逐次的に切替えつつ、当該分割して得たm個の分割データをそれぞれ書き込むようにしてもよい。
本発明によると、複数の不揮発性メモリユニットを用いることで、並行的あるいは時分割的にデータの読書きを可能として、読出し、書込み速度を向上し、キャッシュメモリとして利用可能としている。
本発明の実施の形態に係るSSD装置の構成例を表す概略ブロック図である。 本発明の実施の形態に係るSSD装置のコントローラ部の内容例を表すブロック図である。 本発明の実施の形態に係るSSD装置のキャッシュ制御部と、不揮発性メモリユニットとの接続態様の例を表す説明図である。 本発明の実施の形態に係るSSD装置の書込み動作時のCPUの動作例を表すフローチャート図である。 本発明の実施の形態に係る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との間でデータの書き込みや読出しの処理を行う。このキャッシュ制御部24は、CPU21からデータの書き込み指示を受けると、書込み対象となるデータにエラー訂正符号を付して、このエラー訂正符号を含むデータをキャッシュメモリ部13に書き込む。またこのキャッシュ制御部24は、CPU21から入力される読出し指示に従ってキャッシュメモリ部13から読み出したデータに含まれるエラー訂正符号を用いてデータのエラー訂正を行い、エラー訂正後のデータをCPU21指示に従い転送先のアドレスにデータを出力する。フラッシュメモリインタフェース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には、フラッシュメモリとは異なる種類の不揮発性メモリをそれぞれに含んだ、n(n≧2)個の不揮発性メモリユニット130a,b,…が含まれる。キャッシュメモリ部13は、コントローラ部11から入力される指示に従い、データを保持する。またこのキャッシュメモリ部13は、コントローラ部11から入力される指示に従って、保持しているデータを読み出してコントローラ部11に出力する。
フラッシュメモリ部14は、例えばNANDフラッシュを含む。このフラッシュメモリ部14は、コントローラ部11から入力される指示に従い、データを保持する。またこのフラッシュメモリ部14は、コントローラ部11から入力される指示に従って、保持しているデータを読み出してコントローラ部11に出力する。
電源部15は、コントローラ部11から入力される指示に従って、各部への電源供給を個別にオン/オフする。
本実施の形態においては、図3(a)に例示するように、コントローラ部11のキャッシュ制御部24から、複数の不揮発性メモリユニット130a,b…のそれぞれに対応したデバイスセレクト信号線CS0#,CS1#…、上位バイトのセレクト信号線UB0#,UB1#…、下位バイトのセレクト信号線LB0#,LB1#…、デバイスへの書込み許可信号線WE0#,WE1#…、デバイスからの読出し許可信号線RE0#,RE1#…が引出され、対応する不揮発性メモリユニット130a,b…に接続されている。なお、書込み許可信号線と読出し許可信号線、及び、上位バイトのセレクト信号線と下位バイトのセレクト信号線は、それぞれ一つの信号線であってもよい。この場合、信号のH/Lのいずれかによって、書込み・読出しのいずれをイネーブル(Enable)とするかを定める。また上位・下位のどちらのバイトを選択するかを信号のH/Lのいずれかによって定める。
またキャッシュ制御部24からは、アドレス信号線(A0,…Am)、データ信号線(DQ0,…DQs)が引出されており、このうちアドレス信号線は各不揮発性メモリユニット130a,b…に接続されている。またデータ信号線は、sビットの信号線のうち互いに異なる(s+1)/n(整数であるとする)ビットずつが各不揮発性メモリユニット130a,b…に接続される。一例として2個の不揮発性メモリユニット130a,bを用いる場合(n=2の場合)、データ信号線の幅(s+1)が32ビットであれば、DQ0,…DQ31の各信号線のうち、(s+1)/n=32/2=16ビット分DQ0,…DQ15が、不揮発性メモリユニット130a,c…に接続され、残る16ビット分DQ16,…DQ31が、不揮発性メモリユニット130b,d…に接続される。
この例では、キャッシュ制御部24は、CPU21からデータの書き込み指示を受け入れると、アドレス信号線に、書込み先のアドレスを表す情報を出力する。そして各不揮発性メモリユニット130a,b…に対応するデバイスセレクト信号線CSn#を一斉にアサートし、デバイスへの書込み許可信号線WEn#を一斉にイネーブルの状態に設定する。なお、上位,下位のバイトごとの制御を行う場合は、各不揮発性メモリユニット130a,b…に対応する上位バイトのセレクト信号線UBn#及び下位バイトのセレクト信号線LBn#を一斉にイネーブルの状態とする。
そしてキャッシュ制御部24は、データ信号線に、書き込むべきデータ(32ビット幅)を出力する。不揮発性メモリユニット130a,b…に含まれるMRAM等は、デバイスセレクト信号線CSn#がアサートされたあと、書込み許可信号線WEn#等がイネーブルの状態になったとき、所定の時間が経過してからデータ信号線DQにあるデータを取込んで、アドレス信号線を介して入力されるアドレスへ書き込む。このとき不揮発性メモリユニット130aには、データ信号線DQ0,…DQ(j-1)(j=(s+1)/n)が接続され、不揮発性メモリユニット130bには、データ信号線DQ(j),…DQ(2j-1)(j=(s+1)/n)が接続され…というように、それぞれ接続されているので、各不揮発性メモリユニット130a,b…にデータが分割されて記録された状態となる。
つまりこのキャッシュ制御部24は、本実施の形態のこの例では、上述のように接続したことで、m=n個に分割して分割したデータを生成し、n個の不揮発性メモリユニット130a,b…に対して、当該分割して得たm個の分割データをそれぞれ書き込むことになる。
またこの例のキャッシュ制御部24は、CPU21からデータの読出し指示を受け入れると、アドレス信号線に、読出すべきデータ格納したアドレスを表す情報を出力する。そして各不揮発性メモリユニット130a,b…に対応するデバイスセレクト信号線CSn#を一斉にアサートし、デバイスへの読出し許可信号線REn#を一斉にイネーブルの状態に設定する。
不揮発性メモリユニット130a,b…に含まれるMRAM等は、アドレス信号線にアドレスが出力されてから所定の時間が経過した後に、データ信号線DQ#に、読出したデータを出力することになる。そこでキャッシュ制御部24は、アドレス信号線にアドレスを出力してから所定の時間が経過した後のデータ信号線DQ#のデータを取込む。このとき不揮発性メモリユニット130aには、データ信号線DQ0,…DQ(j-1)(j=(s+1)/n)が接続され、不揮発性メモリユニット130bには、データ信号線DQ(j),…DQ(2j-1)(j=(s+1)/n)が接続され…というように、それぞれ接続されているので、各不揮発性メモリユニット130a,b…から得られた各ビットのデータを順番通りに連接したデータが、DQ0,…DQsの各データ信号線に現れる。キャッシュ制御部24は、このデータを取り出してCPU21の指示に従い、転送先アドレスにデータを出力する。
また本実施の形態の別の例では、図3(b)に例示するように、コントローラ部11のキャッシュ制御部24が、複数のチャネルを制御するチャネル制御部31a,b…と、各チャネルに共通するアドレス設定部35、データ設定部36及び、調停部37とを有し、各チャネルにキャッシュメモリ部13がそれぞれ接続されてもよい。各チャネル制御部31a,b…は、それぞれ独立したデータ転送部32a,bを有する。このデータ転送部32は例えばDMAC(Direct Memory Access Controller)を含んでなり、記憶部22内の指定されたアドレスから、対応するチャネルの不揮発性メモリユニット130の指定されたアドレスへデータを転送する。
アドレス設定部35は、いずれかのデータ転送部32から指示されるアドレスを表す信号をアドレス信号線A0…に出力する。このアドレス設定部35は、アドレスの指示を受けるデータ転送部32から、転送終了の指示があるまでは、他のデータ転送部32からのアドレスの指示を受け入れない。
データ設定部36は、いずれかのデータ転送部32が指定する記憶部22内のアドレスを受け入れ、記憶部22内で、当該アドレスで表される位置に格納されているデータを読み出して、当該データを表す信号をデータ信号線DQ0…に出力する。
調停部37は、アドレス設定部35へのアドレス指定を行うデータ転送部32を決定する。この調停部37は、待ち行列(キュー)を記録するメモリを有し、いずれかのデータ転送部32からアドレス指定の要求を受けると、このキューの最後尾に当該要求を行ったデータ転送部32を特定する情報を保持する。調停部37は、また、キューの先頭の情報で特定されるデータ転送部32に対してアドレス指定を許可する。このキューの先頭の情報で特定されるデータ転送部32が転送の終了を表す情報を出力すると、調停部37は、このデータ転送部32を特定する情報をキューの先頭から削除して処理を続ける。
また複数の不揮発性メモリユニット130a,b…は、それぞれ同数p(p≧1)個ずつ(つまりチャネルの数をCNとすると、n=p×CNとなる)、いずれかのチャネルに割当てられている。本実施の形態のある例では、不揮発性メモリユニット130a,bが第1のチャネルに、不揮発性メモリユニット130c,dが第2のチャネルにそれぞれ割当てられる。
また、複数の不揮発性メモリユニット130a,b…のそれぞれに対応したデバイスセレクト信号線CS0#,CS1#…、上位バイトのセレクト信号線UB0#,UB1#…、下位バイトのセレクト信号線LB0#,LB1#…、デバイスへの書込み許可信号線WE0#,WE1#…、デバイスからの読出し許可信号線RE0#,RE1#…が、対応するチャネル制御部31a,b…から引出されて、対応する不揮発性メモリユニット130a,b…に接続されている。例えば、先の例であれば、不揮発性メモリユニット130aに対応する各信号線CS0#、UB0#、LB0#、WE0#、RE0#は、第1チャネルに対応するチャネル制御部31aから取出されており、不揮発性メモリユニット130cに対応する各信号線CS2#、UB2#、LB2#、WE2#、RE2#は、第2チャネルに対応するチャネル制御部31bから取出される。
またキャッシュ制御部24からは、アドレス信号線(A0,…Am)、データ信号線(DQ0,…DQs)が引出されており、このうちアドレス信号線は各不揮発性メモリユニット130a,b…に接続されている。またデータ信号線は、sビットの信号線のうち互いに異なるs/p(整数であるとする)ビットずつが各不揮発性メモリユニット130a,b…に接続される。一例として、上記のように1つのチャネルにつき2個の不揮発性メモリユニット130を対応させる場合、sが32ビットであれば、DQ0,…DQ31の各信号線のうち、32/2=16ビット分DQ0,…DQ15が、不揮発性メモリユニット130a,c…に接続され、残る16ビット分DQ16,…DQ31が、不揮発性メモリユニット130b,d…に接続される。
この例では図4に例示するように、CPU21は、ホスト側からデータの書き込み指示(データ書込みを伴うコマンド)と、書込みの対象となるデータとを受け入れると、このデータを所定のサイズのデータブロックに分割する。
具体的にCPU21は、受け入れたデータを記憶部22の空きエリアに格納し(S1)、書込み先のチャネルの数をCNとして、受け入れたデータ長Lをこのチャネル数CNで除した値BL=L/CNを、分割データのデータ長として演算する(S2)。
そしてCPU21は、カウンタiを「1」にリセットし(S3)、転送元となる記憶部22内のメモリ上のアドレス(転送元アドレス)と、転送先となる不揮発性メモリユニット130側での不揮発性メモリ上のアドレス(転送先アドレス)と、転送するデータの長さとしての分割データのデータ長BLとを、第iチャネルに対応するチャネル制御部31iのデータ転送部32iのDMACに設定する(DMA設定処理:S4)。
ここで転送元アドレスAsourceは、処理S1でデータを格納した空きエリアの先頭アドレスAsを用い、
Asource=As+(i−1)×BL
として演算される。また転送先アドレスはデータの書込みを伴うコマンドに含まれるLBA(Logical Block Address)に関連して決めればよく、キャッシュメモリの管理の方法として広く知られている方法を採用して決定できるので、ここでの詳細な説明を省略する。CPU21は、LBAと、書込み先のチャネルと、転送先のアドレスとを関連付けて記憶しておく。
CPU21は、第iチャネルに対するDMA設定処理を終了すると、当該DMACによるデータ転送状況の如何に関わらず、iを「1」だけインクリメントして(S5)、iがCNを超えたか(i>CNであるか)否かを調べる(S6)。ここでi>CNでなければ、処理S4に戻って次のチャネルに対するDMA設定処理を引き続き行う。
また処理S6にてi>CNであれば、ループを抜けて処理を終了し、他の処理を開始する。
データ転送部32iは、対応する不揮発性メモリユニット130へ、指定されたアドレスから指定されたデータ長のデータの転送を開始するのであるが、この具体的な処理は次のようになる。データ転送部32iは、調停部37に対してアドレスの指定を要求する。調停部37からアドレスの指定が許可されると、データ転送部32iは、DMA設定処理にて設定された転送先アドレスをアドレス設定部35に対して出力する。
またこのデータ転送部32iは、対応する第i番目のチャネルのチャネル制御部31iに接続されているデバイスセレクト信号線CSn#を一斉にアサートし、デバイスへの書込み許可信号線WEn#を一斉にイネーブルの状態に設定する。なお、上位,下位のバイトごとの制御を行う場合は、各不揮発性メモリユニット130a,b…に対応する上位バイトのセレクト信号線UBn#及び下位バイトのセレクト信号線LBn#を一斉にイネーブルの状態とする。
そしてデータ転送部32iは、データ設定部36に対して転送元アドレスを出力する。これらの動作を所定のタイミングで行うことで、第iチャネルの不揮発性メモリユニット130に対して、データが書き込まれる。
以下、データ転送部32iは、データ長BLに相当するデータの書き込みが終了するまで、転送先アドレス、転送元アドレスをインクリメントしつつ以上の動作を繰返し行う。そしてデータ長BLに相当するデータの書き込みが終了すると、データ転送部32iは、データ転送が終了した旨の信号を調停部37に出力する。データ転送部32iは、所定の終了時処理(終了ステータス情報の設定等)を行い、CPU21に対して、データ転送終了を表す割込み信号を出力する。
以上の動作が行われることにより、本実施の形態のこの例に係るSSD装置1では、データを書き込む際に、図5に示すように、CPU21が書込みの対象となる各チャネルのデータ転送部32に対し、各データ転送部32によるデータ転送の処理の進捗の如何に関わらず、DMA設定処理を逐次的に行うことになる(TDMA1,TDMA2…)。
そしてCPU21は、このDMA設定処理を各チャネルについて行った後は、データ転送部32がデータ転送中であったとしても、他の処理を行うことができる(P1)。
第1チャネルのデータ転送部32aは、第1チャネルの不揮発性メモリユニット130a,bへのデータ転送を行い、データ転送が終了すると、次のデータ転送部32bによる転送が可能となるよう各部を制御(上述の例では調停部37に転送終了を通知)する。そして第1チャネルのデータ転送部32aは、所定の終了時処理を行って、CPU21に対して転送終了を表す割込信号を出力する(TE_DMA1)。CPU21は、この割込信号を受けて、第1チャネルへの書込み終了を記録する。
この間、第2チャネルのデータ転送部32bは、第2チャネルの不揮発性メモリユニット130c,dへのデータ転送を行っている。つまり、キャッシュ制御部24は、各チャネルの不揮発性メモリユニット130のそれぞれを書込み対象として逐次的に切替えつつ、分割して得られた分割データをそれぞれ書き込んでいく。
CPU21は、すべてのチャネルにおいてデータ転送が終了すると処理を終了する。この処理によると、CPU21は、DMA設定処理後は他の処理を実行できるようになるので、ホスト側から見たSSD装置1の応答速度が上昇することになる。
また読出し時には、CPU21は、読出しの対象として指定されたLBAに格納されているべきデータがキャッシュメモリである不揮発性メモリユニット130に格納されているか否かを判断し、格納されていると判断すると、LBAに対応して記憶しているチャネルと不揮発性メモリユニット130のアドレスとをキャッシュ制御部24に出力して、当該チャネルの不揮発性メモリユニット130の、当該指定されたアドレスからデータを読み出すよう指示する。
そしてこの指示に応じてキャッシュ制御部24が出力するデータをホスト側へ出力する。なお、読出しの対象として指定されたLBAに格納されているべきデータがキャッシュメモリである不揮発性メモリユニット130に格納されていないと判断すると、当該LBAからのデータの読出しをフラッシュメモリインタフェース25に指示する。そしてこの指示に応じてフラッシュメモリインタフェース25がフラッシュメモリ部14から読み出して出力するデータをホスト側へ出力する。
キャッシュ制御部24は、第1チャネル、第2チャネル…の各不揮発性メモリユニット130a,b…から読出したデータを連接したビット列を生成し、当該生成したビット列をCPU21に出力する。
次にCPU21の全体的な動作について説明する。CPU21は、起動時には各部を初期化した後、キャッシュ制御部24のインタフェースを初期設定する。その後CPU21は、前回終了時にMRAMへ退避したデータがあれば、当該退避したデータを記憶部22へ転送し、ホストとのインタフェースを確立して、コマンドを待機するループの実行を開始する。この処理は、破壊読出しが行われるDRAMを利用する従来例に比べ、退避したデータを記憶部22へ転送した後、DRAMへ再度読込む処理が不要となって、起動が高速化される。また、従来例では退避データをフラッシュメモリ部14に書き込む必要があり、長期間経過してしまった場合にデータが読出せなくなる、いわゆるデータリテンション(Data retention)が生じる懸念があったが、本実施の例では、フラッシュメモリではない不揮発性メモリとして例えばFeRAMやMRAMを利用することで、かかる問題を解消している。
またCPU21は、起動後は、ホストからのコマンドを待機し、ホストからのコマンドが受信されると、当該コマンドに応じた処理を行う。具体的にCPU21は、ホスト側からデータをフラッシュメモリ部14に書き込むべき指示を受けると、当該指示により書き込むべきデータをホスト側から受け入れる。そしてこのデータをキャッシュ制御部24に出力して、キャッシュメモリ部13に格納させる。
CPU21は、またキャッシュメモリ部13に格納したデータについて、その一部を所定の方法で選択して読み出し、フラッシュメモリ部14に格納する処理も行う。またCPU21は、フラッシュメモリ部14に格納されているデータの一部を所定の方法で選択して読み出し、キャッシュ制御部24に指示してキャッシュメモリ部13に書き込ませてもよい。このようなキャッシュの制御・管理方式については、広く知られている方法を採用できるため、ここでの詳細な説明を省略する。
CPU21はさらに、ホスト側からのデータの読出し指示を受けると、当該データがキャッシュメモリ部13に格納されているか否かを判断し、格納されていると判断される場合は、キャッシュ制御部24に対して当該データを読み出すよう指示する。また、このCPU21は、当該データがキャッシュメモリ部13に格納されていないと判断される場合は、フラッシュメモリ部14に格納されている当該データを読み出して、ホスト側に出力する。
なおCPU21は、ホスト側からのコマンドがなく、またバックグラウンドでの処理もなく、その他入出力部23からの割込みもなく一定の時間が経過したときも、従来のDRAMをキャッシュとして利用したSSD装置とは異なり、電源瞬断等に備えてキャッシュメモリ部13に格納したデータをフラッシュメモリ部14に保存する必要がない。
またCPU21は、ホスト側からキャッシュした情報をフラッシュ(flush)する指示(フラッシュメモリ部14に書き戻すべき指示)を受け入れたときは、当該コマンドを無視する(何もしない)。DRAMをキャッシュとして使用する場合とは異なり、FeRAMやMRAM等に格納したデータは破壊される恐れが少ないためである。
さらにCPU21は、ホスト側からのコマンドがなく、またバックグラウンドでの処理もなく、その他入出力部23からの割込みもない状態で予め定めた時間が経過したときには、次に述べる省電力制御を行ってもよい。またCPU21は、ホスト側からSSD装置1を待機状態とするべき旨のコマンドの入力があったときも同様に省電力制御を実行することとしてもよい。このようなコマンドの例としては、PATA規格/SATA規格で定義されているスタンバイ(STANDBY またはSTANDBY Immediate)、スリープ(SLEEP)等がある。また、SATA規格に定義されている周辺機器(SSD)とホストとを接続するシリアルATAバス自体を対象としてパワーセーブする状態を定義したコマンドであるPHY PARTIAL(パーシャル)、SLUMBER(スランバ)をSSDのコントローラが検知した場合にも省電力制御を実行することとしてもよい。
この省電力制御を行うCPU21は、図6に例示するように、記憶部22に格納しているデータを読み出して、キャッシュ制御部24に出力し、キャッシュメモリ部13に格納させる(データ退避:S11)。記憶部22に格納されたデータの退避が完了すると、CPU21はキャッシュ制御部24に信号の出力を停止させ、また、電源部15に対してキャッシュメモリ部13への電源供給を停止させる(S12)。
CPU21はさらに、入出力部23をそのままに、あるいは省電力状態に設定して(S13)、コントローラ部11内で予め定められた範囲の電源を遮断する(S14)。一例としては記憶部22やCPU21自身の電源も遮断する。また、キャッシュ制御部24に接続されたキャッシュメモリ部13への電源供給を停止させることもできる。キャッシュメモリ部13では、DRAM等で必要となる記憶保持のための動作(リフレッシュ動作等)も必要がないからである。
この後は入出力部23に、通常状態へ復帰するべき旨のコマンド(IDLE またはIDLE Immediate)の入力があるまで待機することとなる。入出力部23が通常状態へ復帰するべき旨のコマンド(IDLE またはIDLE Immediate またはPHY READY)をホスト側から受け入れると、入出力部23は(省電力状態であったときには省電力状態から復帰し)、CPU21、記憶部22への電源供給を開始させる。
このときCPU21は、電源部15に対してキャッシュメモリ部13への電源供給を開始させ、キャッシュ制御部24に対して記憶部22から退避したデータを読み出すよう指示する。この指示に応じてキャッシュ制御部24が読出したデータがCPU21に出力されると、CPU21は当該データを記憶部22に格納して記憶部22内のデータを復帰させる。そしてCPU21は記憶部22内のデータに基づく処理を再開する。
さらにSSD装置1の電源断時には、CPU21は、従来のDRAMをキャッシュとして利用するものとは異なり、退避情報をDRAMからフラッシュメモリ部14へ格納するという処理が不要となる。キャッシュメモリ部13では、電源が断となったあともデータが保持されるためである。
本実施の形態のSSD装置1では、また、キャッシュメモリ部13に書き込むデータにエラー訂正符号を付していたが、キャッシュ制御部24は、このエラー訂正符号(qバイト)を、不揮発性メモリユニット130の数n個以下の複数の数に分割し、分割したエラー訂正符号を、互いに異なる不揮発性メモリユニット130に格納させてもよい。一例では、キャッシュ制御部24は、1バイトのエラー訂正符号を、4つの不揮発性メモリユニット130に1/4バイトずつに分割して書き込むよう制御することとすればよい。例えば不揮発性メモリユニット130のそれぞれが2バイトずつの読書きに対応している場合、エラー訂正符号を含んだバイト列を書き込む際に、キャッシュ制御部24は、qバイトのエラー訂正符号についてq/r(2≦r≦N)バイトずつに分割し、本来エラー訂正符号を含むバイト列にq/rバイトずつの分割したエラー訂正符号を含めて(本来エラー訂正符号を含むバイト列がなければ新たにバイト列を生成して)、各不揮発性メモリユニット130に格納する。
この場合は、キャッシュ制御部24は、各不揮発性メモリユニット130からエラー訂正の単位となるまでデータを読み出し、エラー訂正の単位となったときに、各不揮発性メモリユニット130から読出したデータに分割されて含まれているエラー訂正符号を元の順序で連接してエラー訂正符号を再現し、この再現したエラー訂正符号で読出したデータのエラー訂正を行うこととなる。
本実施の形態のある例では、キャッシュメモリ部13としてのMRAMのデータ読み出し・書込みのおおよそのクロック数(ベースクロック)が25MHz程度である場合に、n=4の不揮発性メモリユニット130a,b,c,d(各2バイト幅でデータを読書き可能とする)を用い、2つのチャネルに分割して動作させる。これによると、各チャネルの間ではアドレス信号線の再セットアップが必要なくなるなど、メモリ管理の処理にかかるオーバーヘッド時間を短縮できる(実測値によると1.4ないし2倍(平均値で1.5倍)程度の速度が達成される)。
従って、実測値によると、平均25×4×1.5=150MB/s程度の読出し・書込み速度が達成されることとなる。この値は、PATAの転送速度133MB/sより大きく、またSATAの転送速度150MB/sに匹敵する速度であるため、ホスト側インタフェースのデータ転送速度から見て、キャッシュとしての機能を十分発揮できる。
1 SSD装置、11 コントローラ部、12 インタフェース部、13 キャッシュメモリ部、14 フラッシュメモリ部、15 電源部、21 CPU、22 記憶部、23 入出力部、24 キャッシュ制御部、25 フラッシュメモリインタフェース、31 チャネル制御部、32 データ転送部、35 アドレス設定部、36 データ設定部、37 調停部、130 不揮発性メモリユニット。

Claims (3)

  1. フラッシュメモリを用いたSSD(ソリッドステートドライブ)装置であって、
    フラッシュメモリとは異なる種類の不揮発性メモリをそれぞれに含んだ、n個(n≧2)の不揮発性メモリユニットと、
    前記フラッシュメモリへ書き込むべきデータを受け入れて、前記不揮発性メモリユニットに、当該受け入れたデータを保存するコントローラと、
    を含み、
    前記コントローラは、揮発性メモリを有し、電源断または省電力制御時には、当該揮発性メモリに格納されたデータを、前記不揮発性メモリユニットに退避し、起動時または省電力制御時から通常状態に復帰する際に、前記不揮発性メモリユニットに退避したデータがあれば、当該退避したデータを前記揮発性メモリへ転送する処理を、当該転送後に前記不揮発性メモリユニットへ再度書き込むことなく実行するSSD装置。
  2. 請求項1記載のSSD装置であって、
    前記コントローラは、前記フラッシュメモリへ書き込むべきデータをm個(2≦m≦n)に分割して分割データを生成し、前記n個の不揮発性メモリユニットに対して、当該分割して得たm個の分割データをそれぞれ書き込む。
  3. 請求項1記載のSSD装置であって、
    前記コントローラは、前記フラッシュメモリへ書き込むべきデータをm個(2≦m≦n)に分割して分割データを生成し、前記n個の不揮発性メモリユニットのそれぞれを書込み対象として逐次的に切替えつつ、当該分割して得たm個の分割データをそれぞれ書き込む。
JP2012106260A 2012-05-07 2012-05-07 Ssd(ソリッドステートドライブ)装置 Active JP5914148B2 (ja)

Priority Applications (4)

Application Number Priority Date Filing Date Title
JP2012106260A JP5914148B2 (ja) 2012-05-07 2012-05-07 Ssd(ソリッドステートドライブ)装置
US14/399,004 US20150081953A1 (en) 2012-05-07 2013-03-27 Ssd (solid state drive) device
CN201380024027.8A CN104303161A (zh) 2012-05-07 2013-03-27 Ssd(固态硬盘)装置
PCT/JP2013/059058 WO2013168479A1 (ja) 2012-05-07 2013-03-27 Ssd(ソリッドステートドライブ)装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2012106260A JP5914148B2 (ja) 2012-05-07 2012-05-07 Ssd(ソリッドステートドライブ)装置

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2016075291A Division JP2016154031A (ja) 2016-04-04 2016-04-04 Ssd(ソリッドステートドライブ)装置

Publications (3)

Publication Number Publication Date
JP2013235347A JP2013235347A (ja) 2013-11-21
JP2013235347A5 JP2013235347A5 (ja) 2014-12-18
JP5914148B2 true JP5914148B2 (ja) 2016-05-11

Family

ID=49550536

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012106260A Active JP5914148B2 (ja) 2012-05-07 2012-05-07 Ssd(ソリッドステートドライブ)装置

Country Status (4)

Country Link
US (1) US20150081953A1 (ja)
JP (1) JP5914148B2 (ja)
CN (1) CN104303161A (ja)
WO (1) WO2013168479A1 (ja)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5990430B2 (ja) 2012-08-29 2016-09-14 株式会社バッファローメモリ Ssd(ソリッドステートドライブ)装置
US9563557B2 (en) 2014-12-23 2017-02-07 Intel Corporation Instruction and logic for flush-on-fail operation
CN104616688A (zh) * 2015-03-05 2015-05-13 上海磁宇信息科技有限公司 一种集成mram的固态硬盘控制芯片及固态硬盘
CN105205015B (zh) * 2015-09-29 2019-01-22 北京联想核芯科技有限公司 一种数据存储方法及存储设备
US20170109101A1 (en) * 2015-10-16 2017-04-20 Samsung Electronics Co., Ltd. System and method for initiating storage device tasks based upon information from the memory channel interconnect
US9747158B1 (en) * 2017-01-13 2017-08-29 Pure Storage, Inc. Intelligent refresh of 3D NAND
US10318416B2 (en) * 2017-05-18 2019-06-11 Nxp B.V. Method and system for implementing a non-volatile counter using non-volatile memory
CN107807797B (zh) * 2017-11-17 2021-03-23 北京联想超融合科技有限公司 数据写入的方法、装置及服务器
CN110727470B (zh) * 2018-06-29 2023-06-02 上海磁宇信息科技有限公司 一种混合式非失性存储装置
CN109947678B (zh) * 2019-03-26 2021-07-16 联想(北京)有限公司 一种存储装置、电子设备及数据交互方法

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06266596A (ja) * 1993-03-11 1994-09-22 Hitachi Ltd フラッシュメモリファイル記憶装置および情報処理装置
JPH07160575A (ja) * 1993-12-10 1995-06-23 Toshiba Corp メモリシステム
US8341332B2 (en) * 2003-12-02 2012-12-25 Super Talent Electronics, Inc. Multi-level controller with smart storage transfer manager for interleaving multiple single-chip flash memory devices
JP2003281084A (ja) * 2002-03-19 2003-10-03 Fujitsu Ltd 外部バスへのアクセスを効率的に行うマイクロプロセッサ
JP4961693B2 (ja) * 2005-07-29 2012-06-27 ソニー株式会社 コンピュータシステム
JP4805696B2 (ja) * 2006-03-09 2011-11-02 株式会社東芝 半導体集積回路装置およびそのデータ記録方式
JP2010108385A (ja) * 2008-10-31 2010-05-13 Hitachi Ulsi Systems Co Ltd 記憶装置
JP5221332B2 (ja) * 2008-12-27 2013-06-26 株式会社東芝 メモリシステム
US20100191896A1 (en) * 2009-01-23 2010-07-29 Magic Technologies, Inc. Solid state drive controller with fast NVRAM buffer and non-volatile tables
JP2010211734A (ja) * 2009-03-12 2010-09-24 Toshiba Storage Device Corp 不揮発性メモリを用いた記憶装置
JP2011022657A (ja) * 2009-07-13 2011-02-03 Fujitsu Ltd メモリシステムおよび情報処理装置
US9003159B2 (en) * 2009-10-05 2015-04-07 Marvell World Trade Ltd. Data caching in non-volatile memory
US9235530B2 (en) * 2010-05-31 2016-01-12 Sandisk Technologies Inc. Method and system for binary cache cleanup
JP2012022422A (ja) * 2010-07-13 2012-02-02 Panasonic Corp 半導体記録再生装置
JP5553309B2 (ja) * 2010-08-11 2014-07-16 国立大学法人 東京大学 データ処理装置
JP2012063871A (ja) * 2010-09-14 2012-03-29 Univ Of Tokyo 制御装置およびデータ記憶装置

Also Published As

Publication number Publication date
JP2013235347A (ja) 2013-11-21
US20150081953A1 (en) 2015-03-19
WO2013168479A1 (ja) 2013-11-14
CN104303161A (zh) 2015-01-21

Similar Documents

Publication Publication Date Title
JP5914148B2 (ja) Ssd(ソリッドステートドライブ)装置
TWI385519B (zh) 資料寫入方法及使用此方法的快閃儲存系統與其控制器
TWI385516B (zh) 快閃記憶體儲存系統及其資料寫入方法
US9043541B2 (en) Storage control device, storage device, and control method for controlling storage control device
US20180275921A1 (en) Storage device
TWI791536B (zh) 記憶體控制器、系統及包括記憶體控制器的應用處理器
JP4628750B2 (ja) バッファメモリを内蔵したフラッシュメモリ装置及びフラッシュメモリシステム
US20190042413A1 (en) Method and apparatus to provide predictable read latency for a storage device
JP2011253251A (ja) データ記憶装置及びデータ書き込み方法
US20190042460A1 (en) Method and apparatus to accelerate shutdown and startup of a solid-state drive
KR20210096133A (ko) 구역화된 네임스페이스들에서의 기록 커맨드들의 유지
US9606928B2 (en) Memory system
JP2007193448A (ja) 情報記録装置及びその制御方法
JP2010211618A (ja) 半導体記憶装置
JP6975202B2 (ja) 瞬断からの回復処理方法及び装置、並びにコンピュータ読み取り可能な記憶媒体
KR20240004454A (ko) 솔리드 스테이트 드라이브에서 nand 다이 충돌들을 줄이는 방법 및 장치
US10747439B2 (en) Method and apparatus for power-fail safe compression and dynamic capacity for a storage device
EP3772682A1 (en) Method and apparatus to improve write bandwidth of a block-based multi-level cell non-volatile memory
JP2011028386A (ja) キャッシュメモリ制御方法およびキャッシュメモリを備えた情報記憶装置
JP2016154031A (ja) Ssd(ソリッドステートドライブ)装置
US9047959B1 (en) Data storage device, memory control method, and electronic device with data storage device
JP2006302343A (ja) 情報記録再生装置
JP2010026584A (ja) メモリコントローラおよび不揮発性記憶装置
JP2007293987A (ja) 情報記録装置及びその制御方法
US20170153994A1 (en) Mass storage region with ram-disk access and dma access

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20141029

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20141031

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20150901

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20151026

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20160404

R150 Certificate of patent or registration of utility model

Ref document number: 5914148

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