(57)【要約】【課題】不揮発性メモリをキャッシュとして利用し、消費電力を低減できるＳＳＤ装置を提供する。【解決手段】フラッシュメモリを用いたＳＳＤ（ソリッドステートドライブ）装置であって、フラッシュメモリとは異なる種類の不揮発性メモリをそれぞれに含んだ、ｎ個（ｎ≧２）の不揮発性メモリユニット１３０と、フラッシュメモリへ書き込むべきデータを受け入れて、不揮発性メモリユニット１３０に、当該受け入れたデータを保存するコントローラ部１１と、を含む。【選択図】図１
2013235347.tif 000002
【特許請求の範囲】
【請求項１】
フラッシュメモリを用いたＳＳＤ（ソリッドステートドライブ）装置であって、
フラッシュメモリとは異なる種類の不揮発性メモリをそれぞれに含んだ、ｎ個（ｎ≧２）の不揮発性メモリユニットと、
前記フラッシュメモリへ書き込むべきデータを受け入れて、前記不揮発性メモリユニットに、当該受け入れたデータを保存するコントローラと、
を含む。
【請求項２】
請求項１記載のＳＳＤ装置であって、
前記コントローラは、前記フラッシュメモリへ書き込むべきデータをｍ個（２≦ｍ≦ｎ）に分割して分割データを生成し、前記ｎ個の不揮発性メモリユニットに対して、当該分割して得たｍ個の分割データをそれぞれ書き込む。
【請求項３】
請求項１記載のＳＳＤ装置であって、
前記コントローラは、前記フラッシュメモリへ書き込むべきデータをｍ個（２≦ｍ≦ｎ）に分割して分割データを生成し、前記ｎ個の不揮発性メモリユニットのそれぞれを書込み対象として逐次的に切替えつつ、当該分割して得たｍ個の分割データをそれぞれ書き込む。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＮＡＮＤフラッシュメモリなど、フラッシュメモリを用いたＳＳＤ装置に関する。
【背景技術】
【０００２】
近年、スループットの高さや消費電力の低さといった観点から、ＳＳＤ（Solid State Drive）装置が、ハードディスクドライブ（ＨＤＤ）に代わって利用されるようになっている。また、読出しや書込みの速度向上のために、キャッシュメモリとしてＤＲＡＭ（Dynamic Random Access Memory）を利用する例がある。
【０００３】
なお、特許文献１，２には、いずれにもＤＲＡＭ以外にも磁気抵抗メモリ（ＭＲＡＭ）をキャッシュメモリとして利用可能である旨の開示がある。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】米国特許第７，００３，６２３号明細書
【特許文献２】特開２０１１−１６４９９４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
上記従来のＤＲＡＭキャッシュつきのＳＳＤでは、ＤＲＡＭのリフレッシュ動作が必須であるため、待機電力の低減が困難となっている。一方、磁気抵抗メモリ等の不揮発性のメモリでは、理論上ではＤＲＡＭに置換えてのキャッシュメモリとして採用できるが、実際にはＤＲＡＭのような書込み、読出し速度が達成できないため、ホスト側のインタフェースの速度よりも遅くなる（例えばベースクロック２５ＭＨｚのＭＲＡＭを利用する場合、４バイトアクセスとしても２５×４＝１００ＭＢ／ｓとなって、ＰＡＴＡ（Parallel Advanced Technology Attachment）の要求する１３３ＭＢ／ｓよりも遅い）。これではキャッシュメモリとして利用することができない。
【０００６】
本発明は上記実情に鑑みて為されたもので、不揮発性メモリをキャッシュとして利用し、消費電力を低減できるＳＳＤ装置を提供することを、その目的の一つとする。
【課題を解決するための手段】
【０００７】
上記従来例の問題点を解決するための本発明は、フラッシュメモリを用いたＳＳＤ（ソリッドステートドライブ）装置であって、フラッシュメモリとは異なる種類の不揮発性メモリをそれぞれに含んだ、ｎ個（ｎ≧２）の不揮発性メモリユニットと、前記フラッシュメモリへ書き込むべきデータを受け入れて、前記不揮発性メモリユニットに、当該受け入れたデータを保存するコントローラと、を含むものである。
【０００８】
ここで前記コントローラは、前記フラッシュメモリへ書き込むべきデータをｍ個（２≦ｍ≦ｎ）に分割して分割データを生成し、前記ｎ個の不揮発性メモリユニットに対して、当該分割して得たｍ個の分割データをそれぞれ書き込むようにしてもよい。また、前記コントローラは、前記フラッシュメモリへ書き込むべきデータをｍ個（２≦ｍ≦ｎ）に分割して分割データを生成し、前記ｎ個の不揮発性メモリユニットのそれぞれを書込み対象として逐次的に切替えつつ、当該分割して得たｍ個の分割データをそれぞれ書き込むようにしてもよい。
【発明の効果】
【０００９】
本発明によると、複数の不揮発性メモリユニットを用いることで、並行的あるいは時分割的にデータの読書きを可能として、読出し、書込み速度を向上し、キャッシュメモリとして利用可能としている。
【図面の簡単な説明】
【００１０】
【図１】本発明の実施の形態に係るＳＳＤ装置の構成例を表す概略ブロック図である。
【図２】本発明の実施の形態に係るＳＳＤ装置のコントローラ部の内容例を表すブロック図である。
【図３】本発明の実施の形態に係るＳＳＤ装置のキャッシュ制御部と、不揮発性メモリユニットとの接続態様の例を表す説明図である。
【図４】本発明の実施の形態に係るＳＳＤ装置の書込み動作時のＣＰＵの動作例を表すフローチャート図である。
【図５】本発明の実施の形態に係るＳＳＤ装置の書込み動作時の概略タイミングチャート図である。
【図６】本発明の実施の形態に係るＳＳＤ装置におけるコントローラ部の制御例を表すフローチャート図である。
【発明を実施するための形態】
【００１１】
本発明の実施の形態について図面を参照しながら説明する。本発明の実施の形態に係るＳＳＤ装置１は、図１にその概要を示すように、コントローラ部１１と、インタフェース部１２と、キャッシュメモリ部１３と、フラッシュメモリ部１４と、電源部１５とを含んで構成されている。このＳＳＤ装置１は、インタフェース部１２を介してホスト（コンピュータ等、ＳＳＤ装置を利用する装置）に接続されている。
【００１２】
コントローラ部１１は、記憶されているプログラムに従って動作するプログラム制御デバイスであり、具体的には図２に例示するように、ＣＰＵ２１と、記憶部２２と、入出力部２３と、キャッシュ制御部２４と、フラッシュメモリインタフェース２５と、を含んで構成されている。
【００１３】
ここでＣＰＵ２１は、記憶部２２に格納されたプログラムに従って動作する。本実施の形態では、このＣＰＵ２１は、入出力部２３を介してホスト側から入力される指示に従い、キャッシュメモリ部１３やフラッシュメモリ部１４との間でデータの読出しや書込みを行う。このＣＰＵ２１による具体的な処理の内容は後に述べる。
【００１４】
コントローラ部１１の記憶部２２は、例えばＳＲＡＭ（Static Random Access Memory）等の揮発性メモリであり、ファームウェア等ＣＰＵ２１によって実行されるプログラムを保持する。なお、このファームウェアは、図示しないＮＯＲフラッシュ等の不揮発性メモリに格納しておき、このＮＯＲフラッシュをコントローラ部１１に接続して、当該ＮＯＲフラッシュから読出してこの記憶部２２に格納するようになっていてもよい。また、このファームウェアは、ＤＶＤ−ＲＯＭ（Digital Versatile Disc Read Only Memory）等のコンピュータ可読な記録媒体に格納されて、あるいはホスト側から提供され、この記憶部２２に複写されたものであってもよい。
【００１５】
入出力部２３は、インタフェース部１２に接続され、インタフェース部１２を介してＣＰＵ２１とホストの間の通信を制御する。この入出力部２３は、例えばＳＡＴＡ（Serial Advanced Technology Attachment）−ＰＨＹである。
【００１６】
キャッシュ制御部２４は、ＣＰＵ２１から入力される指示に従い、キャッシュメモリ部１３との間でデータの書き込みや読出しの処理を行う。このキャッシュ制御部２４は、ＣＰＵ２１からデータの書き込み指示を受けると、書込み対象となるデータにエラー訂正符号を付して、このエラー訂正符号を含むデータをキャッシュメモリ部１３に書き込む。またこのキャッシュ制御部２４は、ＣＰＵ２１から入力される読出し指示に従ってキャッシュメモリ部１３から読み出したデータに含まれるエラー訂正符号を用いてデータのエラー訂正を行い、エラー訂正後のデータをＣＰＵ２１にの指示に従い転送先のアドレスにデータを出力する。フラッシュメモリインタフェース２５は、ＣＰＵ２１から入力される指示に従い、フラッシュメモリ部１４との間でデータの書き込みや読出しを行う。
【００１７】
インタフェース部１２は、ＳＡＴＡまたはＰＡＴＡ（Parallel Advanced Technology Attachment）インタフェース・コネクタなどであり、ホスト側に接続される。このインタフェース部１２は、ホスト側からコマンドや書込みの対象となるデータを受けて、コントローラ部１１に出力する。また、このインタフェース部１２は、コントローラ部１１から入力されるデータ等をホスト側に出力する。さらに、例えばコントローラ部１１に含まれる入出力部２３がＳＡＴＡ−ＰＨＹであり、インタフェース部１２がＰＡＴＡインタフェース・コネクタである場合は、コントローラ部１１とインタフェース部１２との間に、ＰＡＴＡとＳＡＴＡとの間のプロトコル変換を行うモジュールを設けることとしてもよい。
【００１８】
キャッシュメモリ部１３は、フラッシュメモリとは異なる種類の不揮発性メモリを含む。このような不揮発性メモリとしては、ＦｅＲＡＭ（Ferroelectric RAM）やＭＲＡＭ（Magetoresistive RAM）等がある。本実施の形態では、このキャッシュメモリ部１３には、フラッシュメモリとは異なる種類の不揮発性メモリをそれぞれに含んだ、ｎ（ｎ≧２）個の不揮発性メモリユニット１３０ａ，ｂ，…が含まれる。キャッシュメモリ部１３は、コントローラ部１１から入力される指示に従い、データを保持する。またこのキャッシュメモリ部１３は、コントローラ部１１から入力される指示に従って、保持しているデータを読み出してコントローラ部１１に出力する。
【００１９】
フラッシュメモリ部１４は、例えばＮＡＮＤフラッシュを含む。このフラッシュメモリ部１４は、コントローラ部１１から入力される指示に従い、データを保持する。またこのフラッシュメモリ部１４は、コントローラ部１１から入力される指示に従って、保持しているデータを読み出してコントローラ部１１に出力する。
【００２０】
電源部１５は、コントローラ部１１から入力される指示に従って、各部への電源供給を個別にオン／オフする。
【００２１】
本実施の形態においては、図３（ａ）に例示するように、コントローラ部１１のキャッシュ制御部２４から、複数の不揮発性メモリユニット１３０ａ，ｂ…のそれぞれに対応したデバイスセレクト信号線ＣＳ0＃，ＣＳ1＃…、上位バイトのセレクト信号線ＵＢ0＃，ＵＢ1＃…、下位バイトのセレクト信号線ＬＢ0＃，ＬＢ1＃…、デバイスへの書込み許可信号線ＷＥa＃，ＷＥb＃…、デバイスからの読出し許可信号線ＲＥ0＃，ＲＥ1＃…が引出され、対応する不揮発性メモリユニット１３０ａ，ｂ…に接続されている。なお、書込み許可信号線と読出し許可信号線、及び、上位バイトのセレクト信号線と下位バイトのセレクト信号線は、それぞれ一つの信号線であってもよい。この場合、信号のＨ／Ｌのいずれかによって、書込み・読出しのいずれをイネーブル（Enable）とするかを定める。また上位・下位のどちらのバイトを選択するかを信号のＨ／Ｌのいずれかによって定める。
【００２２】
またキャッシュ制御部２４からは、アドレス信号線（Ａ0，…Ａm）、データ信号線（ＤＱ0，…ＤＱs）が引出されており、このうちアドレス信号線は各不揮発性メモリユニット１３０ａ，ｂ…に接続されている。またデータ信号線は、ｓビットの信号線のうち互いに異なる（ｓ＋１）／ｎ（整数であるとする）ビットずつが各不揮発性メモリユニット１３０ａ，ｂ…に接続される。一例として２個の不揮発性メモリユニット１３０ａ，ｂを用いる場合（ｎ＝２の場合）、データ信号線の幅（ｓ＋１）が３２ビットであれば、ＤＱ0，…ＤＱ31の各信号線のうち、（ｓ＋１）／ｎ＝３２／２＝１６ビット分ＤＱ0，…ＤＱ15が、不揮発性メモリユニット１３０ａ，ｃ…に接続され、残る１６ビット分ＤＱ16，…ＤＱ31が、不揮発性メモリユニット１３０ｂ，ｄ…に接続される。
【００２３】
この例では、キャッシュ制御部２４は、ＣＰＵ２１からデータの書き込み指示を受け入れると、アドレス信号線に、書込み先のアドレスを表す情報を出力する。そして各不揮発性メモリユニット１３０ａ，ｂ…に対応するデバイスセレクト信号線ＣＳn＃を一斉にアサートし、デバイスへの書込み許可信号線ＷＥn＃を一斉にイネーブルの状態に設定する。なお、上位，下位のバイトごとの制御を行う場合は、各不揮発性メモリユニット１３０ａ，ｂ…に対応する上位バイトのセレクト信号線ＵＢn＃及び下位バイトのセレクト信号線ＬＢn＃を一斉にイネーブルの状態とする。
【００２４】
そしてキャッシュ制御部２４は、データ信号線に、書き込むべきデータ（３２ビット幅）を出力する。不揮発性メモリユニット１３０ａ，ｂ…に含まれるＭＲＡＭ等は、デバイスセレクト信号線ＣＳn＃がアサートされたあと、書込み許可信号線ＷＥn＃等がイネーブルの状態になったとき、所定の時間が経過してからデータ信号線ＤＱにあるデータを取込んで、アドレス信号線を介して入力されるアドレスへ書き込む。このとき不揮発性メモリユニット１３０ａには、データ信号線ＤＱ0，…ＤＱj（ｊ＝（ｓ＋１）／ｎ）が接続され、不揮発性メモリユニット１３０ｂには、データ信号線ＤＱj+1，…ＤＱ(2j+1)（ｊ＝（ｓ＋１）／ｎ）が接続され…というように、それぞれ接続されているので、各不揮発性メモリユニット１３０ａ，ｂ…にデータが分割されて記録された状態となる。
【００２５】
つまりこのキャッシュ制御部２４は、本実施の形態のこの例では、上述のように接続したことで、ｍ＝ｎ個に分割して分割したデータを生成し、ｎ個の不揮発性メモリユニット１３０ａ，ｂ…に対して、当該分割して得たｍ個の分割データをそれぞれ書き込むことになる。
またこの例のキャッシュ制御部２４は、ＣＰＵ２１からデータの読出し指示を受け入れると、アドレス信号線に、読出すべきデータ格納したアドレスを表す情報を出力する。そして各不揮発性メモリユニット１３０ａ，ｂ…に対応するデバイスセレクト信号線ＣＳn＃を一斉にアサートし、デバイスへの読出し許可信号線ＲＥn＃を一斉にイネーブルの状態に設定する。
【００２６】
不揮発性メモリユニット１３０ａ，ｂ…に含まれるＭＲＡＭ等は、アドレス信号線にアドレスが出力されてから所定の時間が経過した後に、データ信号線ＤＱ＃に、読出したデータを出力することになる。そこでキャッシュ制御部２４は、アドレス信号線にアドレスを出力してから所定の時間が経過した後のデータ信号線ＤＱ＃のデータを取込む。このとき不揮発性メモリユニット１３０ａには、データ信号線ＤＱ0，…ＤＱj（ｊ＝（ｓ＋１）／ｎ）が接続され、不揮発性メモリユニット１３０ｂには、データ信号線ＤＱj+1，…ＤＱ(2j)（ｊ＝（ｓ＋１）／ｎ）が接続され…というように、それぞれ接続されているので、各不揮発性メモリユニット１３０ａ，ｂ…から得られた各ビットのデータを順番通りに連接したデータが、ＤＱ0，…ＤＱsの各データ信号線に現れる。キャッシュ制御部２４は、このデータを取り出してＣＰＵ２１の指示に従い、転送先アドレスにデータを出力する。
【００２７】
また本実施の形態の別の例では、図３（ｂ）に例示するように、コントローラ部１１のキャッシュ制御部２４が、複数のチャネルを制御するチャネル制御部３１ａ，ｂ…と、各チャネルに共通するアドレス設定部３５、データ設定部３６及び、調停部３７とを有し、各チャネルにキャッシュメモリ部１３がそれぞれ接続されてもよい。各チャネル制御部３１ａ，ｂ…は、それぞれ独立したデータ転送部３２ａ，ｂを有する。このデータ転送部３２は例えばＤＭＡＣ（Direct Memory Access Controller）を含んでなり、記憶部２２内の指定されたアドレスから、対応するチャネルの不揮発性メモリユニット１３０の指定されたアドレスへデータを転送する。
【００２８】
アドレス設定部３５は、いずれかのデータ転送部３２から指示されるアドレスを表す信号をアドレス信号線Ａ0…に出力する。このアドレス設定部３５は、アドレスの指示を受けるデータ転送部３２から、転送終了の指示があるまでは、他のデータ転送部３２からのアドレスの指示を受け入れない。
【００２９】
データ設定部３６は、いずれかのデータ転送部３２が指定する記憶部２２内のアドレスを受け入れ、記憶部２２内で、当該アドレスで表される位置に格納されているデータを読み出して、当該データを表す信号をデータ信号線ＤＱ0…に出力する。
【００３０】
調停部３７は、アドレス設定部３５へのアドレス指定を行うデータ転送部３２を決定する。この調停部３７は、待ち行列（キュー）を記録するメモリを有し、いずれかのデータ転送部３２からアドレス指定の要求を受けると、このキューの最後尾に当該要求を行ったデータ転送部３２を特定する情報を保持する。調停部３７は、また、キューの先頭の情報で特定されるデータ転送部３２に対してアドレス指定を許可する。このキューの先頭の情報で特定されるデータ転送部３２が転送の終了を表す情報を出力すると、調停部３７は、このデータ転送部３２を特定する情報をキューの先頭から削除して処理を続ける。
【００３１】
また複数の不揮発性メモリユニット１３０ａ，ｂ…は、それぞれ同数ｐ（ｐ≧１）個ずつ（つまりチャネルの数をＣNとすると、ｎ＝ｐ×ＣNとなる）、いずれかのチャネルに割当てられている。本実施の形態のある例では、不揮発性メモリユニット１３０ａ，ｂが第１のチャネルに、不揮発性メモリユニット１３０ｃ，ｄが第２のチャネルにそれぞれ割当てられる。
【００３２】
また、複数の不揮発性メモリユニット１３０ａ，ｂ…のそれぞれに対応したデバイスセレクト信号線ＣＳ0＃，ＣＳ1＃…、上位バイトのセレクト信号線ＵＢ0＃，ＵＢ1＃…、下位バイトのセレクト信号線ＬＢ0＃，ＬＢ1＃…、デバイスへの書込み許可信号線ＷＥ0＃，ＷＥ1＃…、デバイスからの読出し許可信号線ＲＥ0＃，ＲＥ1＃…が、対応するチャネル制御部３１ａ，ｂ…から引出されて、対応する不揮発性メモリユニット１３０ａ，ｂ…に接続されている。例えば、先の例であれば、不揮発性メモリユニット１３０ａに対応する各信号線ＣＳ0＃、ＵＢ0＃、ＬＢ0＃、ＷＥ0＃、ＲＥ0＃は、第１チャネルに対応するチャネル制御部３１ａから取出されており、不揮発性メモリユニット１３０ｃに対応する各信号線ＣＳ2＃、ＵＢ2＃、ＬＢ2＃、ＷＥ2＃、ＲＥ2＃は、第２チャネルに対応するチャネル制御部３１ｂから取出される。
【００３３】
またキャッシュ制御部２４からは、アドレス信号線（Ａ0，…Ａm）、データ信号線（ＤＱ0，…ＤＱs）が引出されており、このうちアドレス信号線は各不揮発性メモリユニット１３０ａ，ｂ…に接続されている。またデータ信号線は、ｓビットの信号線のうち互いに異なるｓ／ｐ（整数であるとする）ビットずつが各不揮発性メモリユニット１３０ａ，ｂ…に接続される。一例として、上記のように１つのチャネルにつき２個の不揮発性メモリユニット１３０を対応させる場合、ｓが３２ビットであれば、ＤＱ0，…ＤＱ31の各信号線のうち、３２／２＝１６ビット分ＤＱ0，…ＤＱ15が、不揮発性メモリユニット１３０ａ，ｃ…に接続され、残る１６ビット分ＤＱ16，…ＤＱ31が、不揮発性メモリユニット１３０ｂ，ｄ…に接続される。
【００３４】
この例では図４に例示するように、ＣＰＵ２１は、ホスト側からデータの書き込み指示（データ書込みを伴うコマンド）と、書込みの対象となるデータとを受け入れると、このデータを所定のサイズのデータブロックに分割する。
【００３５】
具体的にＣＰＵ２１は、受け入れたデータを記憶部２２の空きエリアに格納し（Ｓ１）、書込み先のチャネルの数をＣNとして、受け入れたデータ長Ｌをこのチャネル数ＣNで除した値ＢL＝Ｌ／ＣNを、分割データのデータ長として演算する（Ｓ２）。
【００３６】
そしてＣＰＵ２１は、カウンタｉを「１」にリセットし（Ｓ３）、転送元となる記憶部２２内のメモリ上のアドレス（転送元アドレス）と、転送先となる不揮発性メモリユニット１３０側での不揮発性メモリ上のアドレス（転送先アドレス）と、転送するデータの長さとしての分割データのデータ長ＢLとを、第ｉチャネルに対応するチャネル制御部３１ｉのデータ転送部３２ｉのＤＭＡＣに設定する（ＤＭＡ設定処理：Ｓ４）。
【００３７】
ここで転送元アドレスＡsourceは、処理Ｓ１でデータを格納した空きエリアの先頭アドレスＡsを用い、
Ａsource＝Ａs＋（ｉ−１）×ＢL
として演算される。また転送先アドレスはデータの書込みを伴うコマンドに含まれるＬＢＡ（Logical Block Address）に関連して決めればよく、キャッシュメモリの管理の方法として広く知られている方法を採用して決定できるので、ここでの詳細な説明を省略する。ＣＰＵ２１は、ＬＢＡと、書込み先のチャネルと、転送先のアドレスとを関連付けて記憶しておく。
【００３８】
ＣＰＵ２１は、第ｉチャネルに対するＤＭＡ設定処理を終了すると、当該ＤＭＡＣによるデータ転送状況の如何に関わらず、ｉを「１」だけインクリメントして（Ｓ５）、ｉがＣNを超えたか（ｉ＞ＣNであるか）否かを調べる（Ｓ６）。ここでｉ＞ＣNでなければ、処理Ｓ４に戻って次のチャネルに対するＤＭＡ設定処理を引き続き行う。
【００３９】
また処理Ｓ６にてｉ＞ＣNであれば、ループを抜けて処理を終了し、他の処理を開始する。
【００４０】
データ転送部３２ｉは、対応する不揮発性メモリユニット１３０へ、指定されたアドレスから指定されたデータ長のデータの転送を開始するのであるが、この具体的な処理は次のようになる。データ転送部３２ｉは、調停部３７に対してアドレスの指定を要求する。調停部３７からアドレスの指定が許可されると、データ転送部３２ｉは、ＤＭＡ設定処理にて設定された転送先アドレスをアドレス設定部３５に対して出力する。
【００４１】
またこのデータ転送部３２ｉは、対応する第ｉ番目のチャネルのチャネル制御部３１ｉに接続されているデバイスセレクト信号線ＣＳn＃を一斉にアサートし、デバイスへの書込み許可信号線ＷＥn＃を一斉にイネーブルの状態に設定する。なお、上位，下位のバイトごとの制御を行う場合は、各不揮発性メモリユニット１３０ａ，ｂ…に対応する上位バイトのセレクト信号線ＵＢn＃及び下位バイトのセレクト信号線ＬＢn＃を一斉にイネーブルの状態とする。
【００４２】
そしてデータ転送部３２ｉは、データ設定部３６に対して転送元アドレスを出力する。これらの動作を所定のタイミングで行うことで、第ｉチャネルの不揮発性メモリユニット１３０に対して、データが書き込まれる。
【００４３】
以下、データ転送部３２ｉは、データ長ＢLに相当するデータの書き込みが終了するまで、転送先アドレス、転送元アドレスをインクリメントしつつ以上の動作を繰返し行う。そしてデータ長ＢLに相当するデータの書き込みが終了すると、データ転送部３２ｉは、データ転送が終了した旨の信号を調停部３７に出力する。データ転送部３２ｉは、所定の終了時処理（終了ステータス情報の設定等）を行い、ＣＰＵ２１に対して、データ転送終了を表す割込み信号を出力する。
【００４４】
以上の動作が行われることにより、本実施の形態のこの例に係るＳＳＤ装置１では、データを書き込む際に、図５に示すように、ＣＰＵ２１が書込みの対象となる各チャネルのデータ転送部３２に対し、各データ転送部３２によるデータ転送の処理の進捗の如何に関わらず、ＤＭＡ設定処理を逐次的に行うことになる（ＴDMA１，ＴDMA２…）。
【００４５】
そしてＣＰＵ２１このＤＭＡ設定処理を各チャネルについて行った後は、データ転送部３２がデータ転送中であったとしても、他の処理を行うことができる（Ｐ１）。
【００４６】
第１チャネルのデータ転送部３２ａは、第１チャネルの不揮発性メモリユニット１３０ａ，ｂへのデータ転送を行い、データ転送が終了すると、次のデータ転送部３２ｂによる転送が可能となるよう各部を制御（上述の例では調停部３７に転送終了を通知）する。そして第１チャネルのデータ転送部３２ａは、所定の終了時処理を行って、ＣＰＵ２１に対して転送終了を表す割込信号を出力する（ＴE_DMA１）。ＣＰＵ２１は、この割込信号を受けて、第１チャネルへの書込み終了を記録する。
【００４７】
この間、第２チャネルのデータ転送部３２ｂは、第２チャネルの不揮発性メモリユニット１３０ｃ，ｄへのデータ転送を行っている。つまり、キャッシュ制御部２４は、各チャネルの不揮発性メモリユニット１３０のそれぞれを書込み対象として逐次的に切替えつつ、分割して得られた分割データをそれぞれ書き込んでいく。
【００４８】
ＣＰＵ２１は、すべてのチャネルにおいてデータ転送が終了すると処理を終了する。この処理によると、ＣＰＵ２１は、ＤＭＡ設定処理後は他の処理を実行できるようになるので、ホスト側から見たＳＳＤ装置１の応答速度が上昇することになる。
【００４９】
また読出し時には、ＣＰＵ２１は、読出しの対象として指定されたＬＢＡに格納されているべきデータがキャッシュメモリである不揮発性メモリユニット１３０に格納されているか否かを判断し、格納されていると判断すると、ＬＢＡに対応して記憶しているチャネルと不揮発性メモリユニット１３０のアドレスとをキャッシュ制御部２４に出力して、当該チャネルの不揮発性メモリユニット１３０の、当該指定されたアドレスからデータを読み出すよう指示する。
【００５０】
そしてこの指示に応じてキャッシュ制御部２４が出力するデータをホスト側へ出力する。なお、読出しの対象として指定されたＬＢＡに格納されているべきデータがキャッシュメモリである不揮発性メモリユニット１３０に格納されていないと判断すると、当該ＬＢＡからのデータの読出しをフラッシュメモリインタフェース２５に指示する。そしてこの指示に応じてフラッシュメモリインタフェース２５がフラッシュメモリ部１４から読み出して出力するデータをホスト側へ出力する。
【００５１】
キャッシュ制御部２４は、第１チャネル、第２チャネル…の各不揮発性メモリユニット１３０ａ，ｂ…から読出したデータを連接したビット列を生成し、当該生成したビット列をＣＰＵ２１に出力する。
【００５２】
次にＣＰＵ２１の全体的な動作について説明する。ＣＰＵ２１は、起動時には各部を初期化した後、キャッシュ制御部２４のインタフェースを初期設定する。その後ＣＰＵ２１は、前回終了時にＭＲＡＭへ退避したデータがあれば、当該退避したデータを記憶部２２へ転送し、ホストとのインタフェースを確立して、コマンドを待機するループの実行を開始する。この処理は、破壊読出しが行われるＤＲＡＭを利用する従来例に比べ、退避したデータを記憶部２２へ転送した後、ＤＲＡＭへ再度読込む処理が不要となって、起動が高速化される。また、従来例では退避データをフラッシュメモリ部１４に書き込む必要があり、長期間経過してしまった場合にデータが読出せなくなる、いわゆるデータリテンション（Data retention）が生じる懸念があったが、本実施の例では、フラッシュメモリではない不揮発性メモリとして例えばＦｅＲＡＭやＭＲＡＭを利用することで、かかる問題を解消している。
【００５３】
またＣＰＵ２１は、起動後は、ホストからのコマンドを待機し、ホストからのコマンドが受信されると、当該コマンドに応じた処理を行う。具体的にＣＰＵ２１は、ホスト側からデータをフラッシュメモリ部１４に書き込むべき指示を受けると、当該指示により書き込むべきデータをホスト側から受け入れる。そしてこのデータをキャッシュ制御部２４に出力して、キャッシュメモリ部１３に格納させる。
【００５４】
ＣＰＵ２１は、またキャッシュメモリ部１３に格納したデータについて、その一部を所定の方法で選択して読み出し、フラッシュメモリ部１４に格納する処理も行う。またＣＰＵ２１は、フラッシュメモリ部１４に格納されているデータの一部を所定の方法で選択して読み出し、キャッシュ制御部２４に指示してキャッシュメモリ部１３に書き込ませてもよい。このようなキャッシュの制御・管理方式については、広く知られている方法を採用できるため、ここでの詳細な説明を省略する。
【００５５】
ＣＰＵ２１はさらに、ホスト側からのデータの読出し指示を受けると、当該データがキャッシュメモリ部１３に格納されているか否かを判断し、格納されていると判断される場合は、キャッシュ制御部２４に対して当該データを読み出すよう指示する。また、このＣＰＵ２１は、当該データがキャッシュメモリ部１３に格納されていないと判断される場合は、フラッシュメモリ部１４に格納されている当該データを読み出して、ホスト側に出力する。
【００５６】
なおＣＰＵ２１は、ホスト側からのコマンドがなく、またバックグラウンドでの処理もなく、その他入出力部２３からの割込みもなく一定の時間が経過したときも、従来のＤＲＡＭをキャッシュとして利用したＳＳＤ装置とは異なり、電源瞬断等に備えてキャッシュメモリ部１３に格納したデータをフラッシュメモリ部１４に保存する必要がない。
【００５７】
またＣＰＵ２１は、ホスト側からキャッシュした情報をフラッシュ（flush）する指示（フラッシュメモリ部１４に書き戻すべき指示）を受け入れたときは、当該コマンドを無視する（何もしない）。ＤＲＡＭをキャッシュとして使用する場合とは異なり、ＦｅＲＡＭやＭＲＡＭ等に格納したデータは破壊される恐れが少ないためである。
【００５８】
さらにＣＰＵ２１は、ホスト側からのコマンドがなく、またバックグラウンドでの処理もなく、その他入出力部２３からの割込みもない状態で予め定めた時間が経過したときには、次に述べる省電力制御を行ってもよい。またＣＰＵ２１は、ホスト側からＳＳＤ装置１を待機状態とするべき旨のコマンドの入力があったときも同様に省電力制御を実行することとしてもよい。このようなコマンドの例としては、ＰＡＴＡ規格／ＳＡＴＡ規格で定義されているスタンバイ（STANDBY またはSTANDBY Immediate）、スリープ（SLEEP）等がある。また、ＳＡＴＡ規格に定義されている周辺機器（ＳＳＤ）とホストとを接続するシリアルＡＴＡバス自体を対象としてパワーセーブする状態を定義したコマンドであるＰＨＹ  ＰＡＲＴＩＡＬ（パーシャル）、ＳＬＵＭＢＥＲ（スランバ）をＳＳＤのコントローラが検知した場合にも省電力制御を実行することとしてもよい。
【００５９】
この省電力制御を行うＣＰＵ２１は、図６に例示するように、記憶部２２に格納しているデータを読み出して、キャッシュ制御部２４に出力し、キャッシュメモリ部１３に格納させる（データ退避：Ｓ１１）。記憶部２２に格納されたデータの退避が完了すると、ＣＰＵ２１はキャッシュ制御部２４に信号の出力を停止させ、また、電源部１５に対してキャッシュメモリ部１３への電源供給を停止させる（Ｓ１２）。
【００６０】
ＣＰＵ２１はさらに、入出力部２３をそのままに、あるいは省電力状態に設定して（Ｓ１３）、コントローラ部１１内で予め定められた範囲の電源を遮断する（Ｓ１４）。一例としては記憶部２２やＣＰＵ２１自身の電源も遮断する。また、キャッシュ制御部２４に接続されたキャッシュメモリ部１３への電源供給を停止させることもできる。キャッシュメモリ部１３では、ＤＲＡＭ等で必要となる記憶保持のための動作（リフレッシュ動作等）も必要がないからである。
【００６１】
この後は入出力部２３に、通常状態へ復帰するべき旨のコマンド（IDLE またはIDLE Immediate）の入力があるまで待機することとなる。入出力部２３が通常状態へ復帰するべき旨のコマンド（IDLE またはIDLE Immediate またはPHY READY）をホスト側から受け入れると、入出力部２３は（省電力状態であったときには省電力状態から復帰し）、ＣＰＵ２１、記憶部２２への電源供給を開始させる。
【００６２】
このときＣＰＵ２１は、電源部１５に対してキャッシュメモリ部１３への電源供給を開始させ、キャッシュ制御部２４に対して記憶部２２から退避したデータを読み出すよう指示する。この指示に応じてキャッシュ制御部２４が読出したデータがＣＰＵ２１に出力されると、ＣＰＵ２１は当該データを記憶部２２に格納して記憶部２２内のデータを復帰させる。そしてＣＰＵ２１は記憶部２２内のデータに基づく処理を再開する。
【００６３】
さらにＳＳＤ装置１の電源断時には、ＣＰＵ２１は、従来のＤＲＡＭをキャッシュとして利用するものとは異なり、退避情報をＤＲＡＭからフラッシュメモリ部１４へ格納するという処理が不要となる。キャッシュメモリ部１３では、電源が断となったあともデータが保持されるためである。
【００６４】
本実施の形態のＳＳＤ装置１では、また、キャッシュメモリ部１３に書き込むデータにエラー訂正符号を付していたが、キャッシュ制御部２４は、このエラー訂正符号（ｑバイト）を、不揮発性メモリユニット１３０の数ｎ個以下の複数の数に分割し、分割したエラー訂正符号を、互いに異なる不揮発性メモリユニット１３０に格納させてもよい。一例では、キャッシュ制御部２４は、１バイトのエラー訂正符号を、４つの不揮発性メモリユニット１３０に１／４バイトずつに分割して書き込むよう制御することとすればよい。例えば不揮発性メモリユニット１３０のそれぞれが２バイトずつの読書きに対応している場合、エラー訂正符号を含んだバイト列を書き込む際に、キャッシュ制御部２４は、ｑバイトのエラー訂正符号についてｑ／ｒ（２≦ｒ≦Ｎ）バイトずつに分割し、本来エラー訂正符号を含むバイト列にｑ／ｒバイトずつの分割したエラー訂正符号を含めて（本来エラー訂正符号を含むバイト列がなければ新たにバイト列を生成して）、各不揮発性メモリユニット１３０に格納する。
【００６５】
この場合は、キャッシュ制御部２４は、各不揮発性メモリユニット１３０からエラー訂正の単位となるまでデータを読み出し、エラー訂正の単位となったときに、各不揮発性メモリユニット１３０から読出したデータに分割されて含まれているエラー訂正符号を元の順序で連接してエラー訂正符号を再現し、この再現したエラー訂正符号で読出したデータのエラー訂正を行うこととなる。
【００６６】
本実施の形態のある例では、キャッシュメモリ部１３としてのＭＲＡＭのデータ読み出し・書込みのおおよそのクロック数（ベースクロック）が２５ＭＨｚ程度である場合に、ｎ＝４の不揮発性メモリユニット１３０ａ，ｂ，ｃ，ｄ（各２バイト幅でデータを読書き可能とする）を用い、２つのチャネルに分割して動作させる。これによると、各チャネルの間ではアドレス信号線の再セットアップが必要なくなるなど、メモリ管理の処理にかかるオーバーヘッド時間を短縮できる（実測値によると１．４ないし２倍（平均値で１．５倍）程度の速度が達成される）。
【００６７】
従って、実測値によると、平均２５×４×１．５＝１５０ＭＢ／ｓ程度の読出し・書込み速度が達成されることとなる。この値は、ＰＡＴＡの転送速度１３３ＭＢ／ｓより大きく、またＳＡＴＡの転送速度１５０ＭＢ／ｓに匹敵する速度であるため、ホスト側インタフェースのデータ転送速度から見て、キャッシュとしての機能を十分発揮できる。
【符号の説明】
【００６８】
１  ＳＳＤ装置、１１  コントローラ部、１２  インタフェース部、１３  キャッシュメモリ部、１４  フラッシュメモリ部、１５  電源部、２１  ＣＰＵ、２２  記憶部、２３  入出力部、２４  キャッシュ制御部、２５  フラッシュメモリインタフェース、３１  チャネル制御部、３２  データ転送部、３５  アドレス設定部、３６  データ設定部、３７  調停部、１３０  不揮発性メモリユニット。
【図１】
2013235347.tif 000003
【図２】
2013235347.tif 000004
【図３】
2013235347.tif 000005
【図４】
2013235347.tif 000006
【図５】
2013235347.tif 000007
【図６】
2013235347.tif 000008