(57)【要約】【課題】電断に適切に対応しうる小型軽量のＳＳＤ装置を提供する。【解決手段】フラッシュメモリを用いたＳＳＤ装置に、フラッシュメモリとは異なる種類の不揮発性メモリと、フラッシュメモリへ書き込むべきデータを受け入れて、不揮発性メモリに当該受け入れたデータを保存した後、不揮発性メモリからフラッシュメモリへ書き込むべきデータを書き込むコントローラ部とを設け、さらに、コントローラ部が行うべき作業フローを示すフローデータをコントローラ部が不揮発性メモリに保存した。【選択図】図１
2014048679.tif 000002
【特許請求の範囲】
【請求項１】
フラッシュメモリを用いたＳＳＤ（ソリッドステートドライブ）装置であって、
前記フラッシュメモリとは異なる種類の不揮発性メモリと、
前記フラッシュメモリへ書き込むべきデータを受け入れて、前記不揮発性メモリに当該受け入れたデータを保存した後、前記不揮発性メモリから前記フラッシュメモリへ書き込むべきデータを書き込むコントローラ部とを備え、
前記コントローラ部は、このコントローラ部が行うべき作業フローを示すフローデータを前記不揮発性メモリに保存する
ことを特徴とするＳＳＤ装置。
【請求項２】
前記コントローラ部は、前記ＳＳＤ装置に対して強制的に電源供給が断たれた後、前記不揮発性メモリ内に保存された前記フローデータを参照して、前記ＳＳＤ装置の復旧動作を行うことを特徴とする請求項１記載のＳＳＤ装置。
【請求項３】
前記コントローラ部は、前記ＳＳＤ装置に対して強制的に電源供給が断たれた後、前記ＳＳＤ装置に対する電断がこのＳＳＤ装置の動作のどの時点で生じたかを参照して、前記ＳＳＤ装置の復旧動作を行うことを特徴とする請求項２記載のＳＳＤ装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＮＡＮＤフラッシュメモリなど、フラッシュメモリを用いたＳＳＤ装置に関する。
【背景技術】
【０００２】
近年、スループットの高さや消費電力の低さといった観点から、ＳＳＤ（Solid State Drive）装置が、ハードディスクドライブ（ＨＤＤ）に代わって利用されるようになっている。このようなＳＳＤ装置では、読出しや書込みの速度向上のために、キャッシュメモリとして揮発性メモリであるＤＲＡＭ（Dynamic Random Access Memory）を利用する例がある。
【０００３】
ここで、予測できない停電等によりこのＳＳＤ装置への電源供給が強制的に断たれる（以降、単に「電断」と称することがある）と、キャッシュメモリが揮発性メモリである場合、キャッシュメモリ上に展開されているデータは電断に伴って消失する。従って、かかる電断に伴うキャッシュメモリ内のデータ消失への対策が必要である。
【０００４】
ＳＳＤ装置に限らず、外部記憶装置に用いられているキャッシュメモリは揮発性メモリであることが多いため、この外部記憶装置にバッテリーを設け、電断時にはこのバッテリーから供給される電力によりキャッシュメモリ内にあるデータを外部記憶装置内にあるフラッシュメモリに待避させる（特許文献１参照）、あるいは、電断時にはキャッシュメモリをバッテリー駆動して内部データを保持し続ける（特許文献２参照）技術が提案されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開平５−２１６７７５号公報
【特許文献２】特開２０１２−７８９４１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
上述した従来の外部記憶装置は、いずれも電断時においてキャッシュメモリ内のデータをバッテリーによりバックアップし、あるいは不揮発性メモリにキャッシュメモリ内のデータを待避させる際の電源としてバッテリーを用いており、いずれにしても電断対策のためにバッテリーを必要としていた。しかしながら、この技術をＳＳＤ装置に適用した場合、ＳＳＤ装置は小型軽量であることが利点であるため、バッテリーを設けることによりＳＳＤ装置の大型化及び重量増を招くことが避けられない。仮に、一時的な電源として電気二重層コンデンサを用いることも考えられるが、この場合でもやはりＳＳＤ装置の大型化及び重量増を招くことが避けられない。
【０００７】
本発明は上述した課題に鑑みてなされたもので、電断に適切に対応しうる小型軽量のＳＳＤ装置を提供することを目的としている。
【課題を解決するための手段】
【０００８】
本発明は、フラッシュメモリを用いたＳＳＤ（ソリッドステートドライブ）装置に適用され、そして、このＳＳＤ装置に、フラッシュメモリとは異なる種類の不揮発性メモリと、フラッシュメモリへ書き込むべきデータを受け入れて、不揮発性メモリに当該受け入れたデータを保存した後、不揮発性メモリからフラッシュメモリへ書き込むべきデータを書き込むコントローラ部とを設け、さらに、コントローラ部が行うべき作業フローを示すフローデータをコントローラ部が不揮発性メモリに保存することにより上述の目的を達成している。
【０００９】
従って、ＳＳＤ装置に電断が生じた場合でも、フローデータがフラッシュメモリとは異なる種類の不揮発性メモリに保存されているので、フローデータが電断によって消失することがなくなる。
【００１０】
ここで、ＳＳＤ装置に対して強制的に電源供給が断たれた後、不揮発性メモリ内に保存されたフローデータを参照して、コントローラ部がＳＳＤ装置の復旧動作を行うことが好ましい。さらに、ＳＳＤ装置に対して強制的に電源供給が断たれた後、ＳＳＤ装置に対する電断がこのＳＳＤ装置の動作のどの時点で生じたかを参照して、コントローラ部がＳＳＤ装置の復旧動作を行うことが好ましい。
【発明の効果】
【００１１】
本発明は、コントローラ部が行うべき作業フローを示すフローデータをコントローラ部が不揮発性メモリに保存しているので、このフローデータが電断によって消失することがなくなる。これにより、バッテリー等の電源を設けることなく、電断終了後の復帰動作をフローデータを参照することにより行うことができる。よって、電断に適切に対応しうる小型軽量のＳＳＤ装置を提供することが可能となる。
【図面の簡単な説明】
【００１２】
【図１】本発明の一実施形態であるＳＳＤ装置の構成例を表す概略ブロック図である。
【図２】本発明の一実施形態であるＳＳＤ装置のコントローラ部の内容例を表すブロック図である。
【図３】本発明の一実施形態であるＳＳＤ装置の動作を説明するための図である。
【図４】本発明の一実施形態であるＳＳＤ装置の動作の一例を示すフローチャートである。
【図５】本発明の一実施形態であるＳＳＤ装置の動作の他の例を示すフローチャートである。
【図６】本発明の一実施形態であるＳＳＤ装置の動作のまた他の例を示すフローチャートである。
【発明を実施するための形態】
【００１３】
以下、図面を参照して、本発明のＳＳＤ装置の実施形態について説明する。
（一実施形態）
【００１４】
本発明の一実施形態であるＳＳＤ装置１は、図１にその概要を示すように、コントローラ部１１と、インタフェース部１２と、キャッシュメモリ部１３と、フラッシュメモリ部１４と、電源部１５とを含んで構成されている。このＳＳＤ装置１は、インタフェース部１２を介してホスト（コンピュータ等、ＳＳＤ装置を利用する装置）に接続されている。
【００１５】
コントローラ部１１は、記憶されているプログラムに従って動作するプログラム制御デバイスであり、具体的には図２に例示するように、ＣＰＵ２１と、記憶部２２と、入出力部２３と、キャッシュ制御部２４と、フラッシュメモリインタフェース２５と、を含んで構成されている。
【００１６】
ここでＣＰＵ２１は、記憶部２２に格納されたプログラムに従って動作する。本実施の形態では、このＣＰＵ２１は、入出力部２３を介してホスト側から入力される指示に従い、キャッシュメモリ部１３やフラッシュメモリ部１４との間でデータの読出しや書込みを行う。このＣＰＵ２１による具体的な処理の内容は後に述べる。
【００１７】
コントローラ部１１の記憶部２２は、例えばＳＲＡＭ（Static Random Access Memory）等の揮発性メモリであり、ファームウェア等ＣＰＵ２１によって実行されるプログラムを保持する。なお、このファームウェアは、図示しないＮＯＲ型フラッシュ等の不揮発性メモリに格納しておき、このＮＯＲ型フラッシュをコントローラ部１１に接続して、当該ＮＯＲ型フラッシュから読出してこの記憶部２２に格納するようになっていてもよい。また、このファームウェアは、ＤＶＤ−ＲＯＭ（Digital Versatile Disc Read Only Memory）等のコンピュータ可読な記録媒体に格納されて、あるいはホスト側から提供され、この記憶部２２に複写されたものであってもよい。
【００１８】
入出力部２３は、インタフェース部１２に接続され、インタフェース部１２を介してＣＰＵ２１とホスト機器との間の通信を制御する。この入出力部２３は、例えばＳＡＴＡ（Serial Advanced Technology Attachment）−ＰＨＹである。
【００１９】
キャッシュ制御部２４は、ＣＰＵ２１から入力される指示に従い、キャッシュメモリ部１３との間でデータの書き込みや読み出しの処理を行う。フラッシュメモリインタフェース２５は、ＣＰＵ２１から入力される指示に従い、フラッシュメモリ部１４との間でデータの書き込みや読み出しを行う。
【００２０】
インタフェース部１２は、ＳＡＴＡまたはＰＡＴＡ（Parallel Advanced Technology Attachment）インタフェース・コネクタなどであり、ホスト側に接続される。このインタフェース部１２は、ホスト機器側からコマンドや書き込みの対象となるデータを受けて、コントローラ部１１に出力する。また、このインタフェース部１２は、コントローラ部１１から入力されるデータ等をホスト機器側に出力する。さらに、例えばコントローラ部１１に含まれる入出力部２３がＳＡＴＡ−ＰＨＹであり、インタフェース部１２がＰＡＴＡインタフェース・コネクタである場合は、コントローラ部１１とインタフェース部１２との間に、ＰＡＴＡとＳＡＴＡとの間のプロトコル変換を行うモジュールを設けてもよい。
【００２１】
キャッシュメモリ部１３は、フラッシュメモリとは異なる種類の不揮発性メモリを含む。このような不揮発性メモリとしては、ＦｅＲＡＭ（Ferroelectric RAM）やＭＲＡＭ（Magnetoresistive RAM）等がある。キャッシュメモリ部１３は、コントローラ部１１から入力される指示に従い、データを保持する。またこのキャッシュメモリ部１３は、コントローラ部１１から入力される指示に従って、保持しているデータを読み出してコントローラ部１１に出力する。
【００２２】
フラッシュメモリ部１４は、例えばＮＡＮＤ型フラッシュを含む。このフラッシュメモリ部１４は、コントローラ部１１から入力される指示に従い、データを保持する。またこのフラッシュメモリ部１４は、コントローラ部１１から入力される指示に従って、保持しているデータを読み出してコントローラ部１１に出力する。
【００２３】
電源部１５は、コントローラ部１１から入力される指示に従って、各部への電源供給を個別にオン／オフする。
【００２４】
（一実施形態の動作）
次に、図３を参照して、本実施形態のＳＳＤ装置１の動作の概略について説明する。図３（ａ）に示すように、キャッシュメモリを持たない一般のＳＳＤ装置においては、フラッシュメモリ部１４内に書き込まれたデータ（Ａ）３０と、このフラッシュメモリ部１４内の論理アドレスを管理するための管理テーブル（Ｂ）３１と、そして、フラッシュメモリ部１４へのデータ書き込み／読み出し動作の手順を記載した作業フローを示す作業フローデータ（Ｃ）３２とが書き込まれている。作業フローデータ３２は、ＳＳＤ装置に対する電断が生じた際に、電断終了後の復帰作業を行う際にこのデータ２２を参照して復帰作業を行うためにフラッシュメモリ部１４に書き込まれている。従って、管理テーブル３１及び作業フローデータ３２は、新たなデータが書き込まれれば基本的にフラッシュメモリ部１４内に保存しておく必要はない。
【００２５】
この管理テーブル３１と作業フローデータ３２とはフラッシュメモリ部１４内に分散して書き込まれている。従って、フラッシュメモリ部１４がデータ３０、管理テーブル３１及び作業フローデータ３２で埋まってしまった段階で、不要な管理テーブル３１及び作業フローデータ３２を消去する（ここでいう「消去」には、その時点で有効な管理テーブル３１上で不要な管理テーブル３１等が格納されているアドレスを無効等にして書き込み可能な状態にすることや、該当箇所のフラッシュメモリ部１４のブロック消去が含まれる）必要がある。
【００２６】
このような動作を省くために、さらにはフラッシュメモリ部１４へのデータ書き込み／読み出し動作の高速化のためにキャッシュメモリ部１３が設けられているが、このキャッシュメモリ部１３をＤＲＡＭ等の揮発性メモリで構成した場合、既に述べたように電断対策として電源が必要になる等の問題がある。
【００２７】
そこで、本実施形態では、図３（ｂ）に示すように、ＳＳＤ装置１にフラッシュメモリとは異なる種類の不揮発性メモリを含むキャッシュメモリ部１３を設け、コントローラ部１１が、図略のホスト機器からＳＳＤ装置１への書き込みが指示されたデータ（Ｄ）３３、管理テーブル（Ｂ）３１及び作業フローデータ（Ｃ）３２をキャッシュメモリ部１３に保存し、さらにデータ３３をフラッシュメモリ部１４に書き込む構成にしている。かかる構成により、ＳＳＤ装置１に強制的に電断が生じた場合でも、キャッシュメモリ部１３が不揮発性メモリを備えているため、データ３３、管理テーブル３１及び作業フローデータ３２が電断によって消失することがなくなり、しかも、電断終了後の復帰動作を、作業フローデータ３２を参照することにより行うことができる。
【００２８】
ここに、本実施形態における作業フローデータ３２の詳細について説明する。作業フローデータ３２の具体的構成は任意であるが、一例として、この作業フローデータ３２は、作業毎の（１）処理内容に付された番号、（２）転送元情報、（３）転送先情報、（４）作業完了フラグからなり、（１）〜（４）がテーブル化されたものである。より具体的には、（１）処理内容に付された番号とは、ＳＳＤ装置１において実施される処理のそれぞれに番号を付したものであり、一例として、ホスト機器からキャッシュメモリ部１３へのデータ転送は「１」、キャッシュメモリ部１３からホスト機器へのデータ転送は「２」、キャッシュメモリ部１３からフラッシュメモリ部１４へのデータ転送は「３」とされる。実際にはこの番号は例えば１６進数で表される。（２）転送元情報及び（３）転送先情報は、番号単位の個々の処理内容におけるデータの転送元及び転送先情報であり、一例としてキャッシュメモリ部１３等のアドレス値情報である。なお、転送元がホスト機器である場合のように転送元が一意に決まる場合や、フラッシュメモリ部１４のブロック単位での消去動作の場合のように、転送元情報または転送先情報のいずれかが明らかになれば十分である場合は、一方の情報が空白であることもある。（４）作業完了フラグは、当該処理が実施済みか否かを示すフラグである。
【００２９】
次に、図４〜図６を参照して、本実施形態のＳＳＤ装置１の動作について説明する。なお、特記しない限り、図４〜図６に示す動作はコントローラ部１１により実施される。
【００３０】
まず、図４は、ＳＳＤ装置１のキャッシュメモリ部１３に書き込まれたデータ３３（図３参照）をフラッシュメモリ部１４に書き込む（転送する）際の動作を説明するためのフローチャートである。図４において、ステップＳ１では、フラッシュメモリ部１４へのデータ書き込みを行うべき所定領域（転送先）の特定がされる。次いで、ステップＳ２では、キャッシュメモリ部１３からフラッシュメモリ部１４へのデータ転送手順を示す作業フローデータ３２がキャッシュメモリ部１３に書き込まれる。
【００３１】
ステップＳ３では、キャッシュメモリ部１３に書き込まれたデータ３３がフラッシュメモリ部１４の所定領域に書き込まれる（転送される）。ステップＳ４では、フラッシュメモリ部１４から、書き込みが正常終了した旨の通知がコントローラ部１１にされる。
【００３２】
ステップＳ５では、ステップＳ４においてフラッシュメモリ部１４へのデータ書き込みが正常に終了したことを受けて、キャッシュメモリ部１３に書き込まれている作業フローデータ３２を更新する。ステップＳ５における作業フローデータ３２更新作業には、処理済の作業フローデータ３２の作業単位での消去作業や、作業フローデータ３２の作業完了フラグの書き換え（実施済である旨のフラグ書き換え）作業が含まれる。次いで、ステップＳ６では、同様にステップＳ４においてフラッシュメモリ部１４へのデータ書き込みが正常に終了したことを受けて、キャッシュメモリ部１３にある管理テーブル３１を更新する。そして、ステップＳ７では、キャッシュメモリ部１３に書き込まれている作業フローデータ３２を消去する。ここにいう「消去」とは、キャッシュメモリ部１３にある作業フローデータ３２のイレーズ動作のみならず、作業フローデータ３２が書き込まれた領域についてデータ書き込み可能に設定することも含まれる。
【００３３】
次に、図５は、ＳＳＤ装置１のフラッシュメモリ部１４への書き込みの対象となるデータをホスト機器から受けた際の動作を説明するためのフローチャートである。まず、ステップＳ１０において、フラッシュメモリ部１４への書き込みの対象となるデータをホスト機器から受けたことをトリガとして、キャッシュメモリ部１３へのデータ受け入れ手順を示す作業フローデータ３２がキャッシュメモリ部１３に書き込まれる。ステップＳ１１では、ホスト機器から受けたデータ３３がキャッシュメモリ部１３に書き込まれる。ステップＳ１２では、キャッシュメモリ部１３から、書き込みが正常終了した旨の通知がコントローラ部１１にされる。
【００３４】
ステップＳ１３では、ステップＳ１２においてキャッシュメモリ部１３へのデータ書き込みが正常に終了したことを受けて、キャッシュメモリ部１３に書き込まれている作業フローデータ３２を更新する。ステップＳ１３における作業フローデータ３２更新作業には、ステップＳ５の作業と同様に、処理済の作業フローデータ３２の作業単位での消去作業や、作業フローデータ３２の作業完了フラグの書き換え（実施済である旨のフラグ書き換え）作業が含まれる。次いで、ステップＳ１４では、同様にステップＳ１２においてキャッシュメモリ部１３へのデータ書き込みが正常に終了したことを受けて、キャッシュメモリ部１３にある管理テーブル３１を更新する。そして、ステップＳ１５では、キャッシュメモリ部１３に書き込まれている作業フローデータ３２を消去する。ここにいう「消去」とは、キャッシュメモリ部１３にある作業フローデータ３２のイレーズ動作のみならず、作業フローデータ３２が書き込まれた領域についてデータ書き込み可能に設定することも含まれる。
【００３５】
次に、図６は、図４または図５に示す動作の途中で、本実施形態のＳＳＤ装置１に強制的な電断が生じた後における復帰動作を説明するためのフローチャートである。まず、ステップＳ２０において、キャッシュメモリ部１３に保存されている作業フローデータ３２を読み出す。次いで、ステップＳ２１において、ステップＳ２０で読み出された作業フローデータ３２を解析する。
【００３６】
さらに、ステップＳ２２において、図４または図５に示す動作のどの段階で電断が生じたかを判定する。どの段階で電断が生じたかどうかの判定は、作業フローデータ３２の更新状態及び作業フローデータ３２内の作業完了フラグの値により判断が可能である。そして、図４のａに示す段階で電断が生じたと判定されると、プログラムはステップＳ２３に移行し、キャッシュメモリ部１３からフラッシュメモリ部１４へのデータ転送作業をキャンセルする。その後、ＳＳＤ装置１は通常動作に復帰する。
【００３７】
また、ステップＳ２２において、図４のｂに示す段階で電断が生じたと判定されると、プログラムはステップＳ２４に移行し、図４のステップＳ１で特定された所定領域を後に消去すべき対象として管理テーブル３１に登録し、次いで、ステップＳ２５において、キャッシュメモリ部１３からフラッシュメモリ部１４へのデータ転送作業をキャンセルする。その後、ＳＳＤ装置１は通常動作に復帰する。ここでいう「消去すべき対象として登録」には、管理テーブル３１上で所定領域に対応するアドレスを無効等にして書き込み可能な状態にすることや、所定領域のフラッシュメモリ部１４をブロック消去の対象とすることが含まれる。
【００３８】
さらに、ステップＳ２２において、図４のｃに示す段階で電断が生じたと判断されると、プログラムはステップＳ２６に移行し、図４のステップＳ５に示す管理テーブル３１更新作業を継続する。次いで、ステップＳ２７において、キャッシュメモリ部１３からフラッシュメモリ部１４へのデータ転送作業を終了する。その後、ＳＳＤ装置１は通常動作に復帰する。
【００３９】
さらに、ステップＳ２２において、図５のｄに示す段階で電断が生じたと判断されると、プログラムはステップＳ２８に移行し、ホスト機器から受けたデータを書き込んでいるキャッシュメモリ部１３の領域を空き領域として登録し、次いで、ステップＳ２９において、キャッシュメモリ部１３へのデータ書き込み作業をキャンセルする。その後、ＳＳＤ装置１は通常動作に復帰する。ここでいう、「空き領域として登録」とは、書き込み対象とされた領域のアドレスを無効等にして書き込み可能な状態にすることが含まれる。
【００４０】
さらに、ステップＳ２２において、図５のｅに示す段階で電断が生じたと判断されると、プログラムはステップＳ３０に移行し、図５のステップＳ１３に示す管理テーブル３１更新作業を継続する。次いで、ステップＳ３１において、キャッシュメモリ部１３へのデータ書き込み作業を終了する。その後、ＳＳＤ装置１は通常動作に復帰する。
【００４１】
以上説明したように、本実施形態のＳＳＤ装置１では、ＳＳＤ装置１にフラッシュメモリとは異なる種類の不揮発性メモリを含むキャッシュメモリ部１３を設け、コントローラ部１１が、ホスト機器からＳＳＤ装置１への書き込みが指示されたデータ３３、管理テーブル３１及び作業フローデータ３２をキャッシュメモリ部１３に保存しているので、ＳＳＤ装置１に強制的に電断が生じた場合でも、データ３３、管理テーブル３１及び作業フローデータ３２が電断によって消失することがなくなり、しかも、電断終了後の復帰動作を、作業フローデータ３２を参照することにより行うことができる。これにより、電断に適切に対応することが可能になる。しかも、従来のＳＳＤ装置等のように、キャッシュメモリのバックアップ用電源を設けることなく電断に適切に対応することができるので、ＳＳＤ装置の小型軽量化を図ることができる。
【００４２】
ここで、キャッシュメモリ部１３がフラッシュメモリ部１４とは異なる種類の不揮発性メモリを含む構成であることから、作業フローデータ３２をキャッシュメモリ部１３に保存することなく、データ３３及び管理テーブル３１のみをキャッシュメモリ部１３に保存する構成が考えられる。この場合でも、データ３３及び管理テーブル３１は、電断が生じてもその時点での内容が消失することはないと考えられる。しかしながら、電断はホストからＳＳＤ装置１へのデータ書き込み作業のどの段階で生じるかは事前に予測することができず、電断のタイミングによってはデータ３３及び管理テーブル３１の内容だけでは適切に電断後の復帰動作を適切に行えない可能性がある。従って、電断に適切に対応するためには、データ３３、管理テーブル３１に加えて作業フローデータ３２をキャッシュメモリ部１３に保存することが好ましい。
【００４３】
（変形例）
なお、本発明のＳＳＤ装置は、その細部が上述の一実施形態に限定されず、種々の変形例が可能である。一例として、上述した一実施形態のＳＳＤ装置１では、キャッシュメモリ部１３に用いる不揮発性のメモリとして、ＦｅＲＡＭ、ＭＲＡＭを例に挙げたが、キャッシュメモリ部１３に適用可能な不揮発性メモリはこれに限定されず、例えばＲｅＲＡＭ（Resistance Random Access Memory）であってもよく、要は、バッテリー等の電源によるバックアップを行うことなくメモリ内のデータを保持できるメモリであれば適用可能である。
【符号の説明】
【００４４】
１    ＳＳＤ装置
１１    コントローラ部
１２    インタフェース部
１３    キャッシュメモリ部
１４    フラッシュメモリ部
２１    ＣＰＵ
２２    記憶部
２３    入出力部
２４    キャッシュ制御部
３０、３３  データ
３１    管理テーブル
３２    作業フローデータ
【図１】
2014048679.tif 000003
【図２】
2014048679.tif 000004
【図３】
2014048679.tif 000005
【図４】
2014048679.tif 000006
【図５】
2014048679.tif 000007
【図６】
2014048679.tif 000008