(57)【要約】      （修正有）【課題】効率的なバッファ制御を実現できる記憶制御装置を提供する。【解決手段】複数のバンクを有する不揮発性メモリ１３と、バッファメモリ１１とを有するデータ記憶装置の制御装置であって、第１のバッファコントローラ１０と、第２のバッファコントローラ１２とを備える。バッファメモリはバンク毎に割り当てられた複数の領域を有する。第１のバッファコントローラは、ホストから転送されて不揮発性メモリに書き込み又は不揮発性メモリから読み出されてホストに転送する第１の単位のデータをデータバッファ領域毎に格納する。第２のバッファコントローラは、不揮発性メモリにデータを書き込む場合に転送準備が完了したバンクに対応するデータバッファ領域から第２の単位のデータを独立して転送し、ホストにデータを転送する場合に読み出し対象のバンクから当該読み出し対象のバンクに対応するデータバッファ領域に第２の単位のデータを独立して転送する。【選択図】図１
2014137721.tif 000002
【特許請求の範囲】
【請求項１】
複数のバンク毎の記憶領域を有する不揮発性メモリと、
前記バンク毎に割り当てられた複数のデータバッファ領域を有するバッファメモリとを有するデータ記憶装置の制御装置であって、
ホストから転送されて前記不揮発性メモリに書き込み又は前記不揮発性メモリから読み出されて前記ホストに転送する第１の単位のデータを、前記データバッファ領域毎に格納する第１のバッファ制御手段と、
前記不揮発性メモリにデータを書き込む場合に転送準備が完了したバンクに対応する前記データバッファ領域から第２の単位のデータを独立して転送し、前記ホストにデータを転送する場合に読み出し対象のバンクから当該読み出し対象のバンクに対応する前記データバッファ領域に前記第２の単位のデータを独立して転送する第２のバッファ制御手段と
を具備する制御装置。
【請求項２】
前記データバッファ領域毎にカウントアップまたはカウントダウンするカウンタ手段を有し、
前記第１のバッファ制御手段は、前記カウンタ手段により前記データバッファ領域毎に格納される前記第１の単位毎のデータ数を前記カウンタ手段によりカウントアップし、
前記第２のバッファ制御手段は、前記データバッファ領域から前記第２の単位毎のデータを読み出す場合に、前記第１の単位毎のデータ数を前記カウンタ手段によりカウントダウンする請求項１に記載の制御装置。
【請求項３】
前記カウンタ手段は、
前記ホストから連続的に転送されて、前記各データバッファ領域に格納されるセクタ単位毎のデータのデータ数をカウントアップまたはカウントダウンする請求項２に記載の制御装置。
【請求項４】
前記第２のバッファ制御手段は、
前記各データバッファ領域に格納された前記第１の単位毎のデータを、前記第１の単位の複数分からなる前記第２の単位毎のデータとして管理する請求項３に記載の制御装置。
【請求項５】
前記第２のバッファ制御手段は、
前記不揮発性メモリにデータを書き込む場合に、転送準備が完了した第１のバンクに対応するデータバッファ領域のデータを前記不揮発性メモリに転送完了後に、次に転送する第２のバンクを転送準備が完了した各バンクから設定し、当該設定した第２のバンクに対応するデータバッファ領域のデータを前記不揮発性メモリに転送する請求項１から請求項４のいずれか１項に記載の制御装置。
【請求項６】
前記不揮発性メモリにデータを書き込む場合に、
前記第１のバッファ制御手段は、ライトポインタを制御して前記データバッファ領域毎にデータを格納するバッファ制御を実行し、
前記第２のバッファ制御手段は、リードポインタを制御して前記データバッファ領域からデータを読み出すバッファ制御を実行する請求項１から請求項５のいずれか１項に記載の制御装置。
【請求項７】
請求項１から請求項５のいずれか１項に記載の制御装置と、
複数のバンク毎の記憶領域を有する不揮発性メモリと、
前記バンク毎に割り当てられた複数のデータバッファ領域を有するバッファメモリと、
ホストから連続的に転送される第１の単位のデータを順次受信し、前記データバッファ領域から読み出されたデータを前記ホストに転送するインターフェース手段と
を具備するデータ記憶装置。
【請求項８】
前記不揮発性メモリとは別に設けられた不揮発性記憶媒体と、
前記バッファメモリに格納された前記第１の単位毎のデータを前記不揮発性記憶媒体に対して書き込み、読み出すリード・ライト制御手段と
を有する請求項７に記載のデータ記憶装置。
【請求項９】
複数のバンク毎の記憶領域を有する不揮発性メモリと、前記バンク毎に割り当てられた複数のデータバッファ領域を有するバッファメモリとを有するデータ記憶装置に適用する制御方法であって、
ホストから転送されて前記不揮発性メモリに書き込み又は前記不揮発性メモリから読み出されて前記ホストに転送する第１の単位のデータを、前記データバッファ領域毎に格納し、
前記不揮発性メモリにデータを書き込む場合に転送準備が完了したバンクに対応する前記データバッファ領域から第２の単位のデータを独立して転送し、
前記ホストにデータを転送する場合に読み出し対象のバンクから当該読み出し対象のバンクに対応する前記データバッファ領域に前記第２の単位のデータを独立して転送する制御方法。
【請求項１０】
前記データ記憶装置はさらに、前記データバッファ領域毎にカウントアップまたはカウントダウンするカウンタ手段を有し、
前記データバッファ領域毎に格納する場合に、前記第１の単位毎のデータ数を前記カウンタ手段によりカウントアップし、
前記データバッファ領域から前記第２の単位のデータを読み出して転送する場合に、前記第１の単位毎のデータ数を前記カウンタ手段によりカウントダウンする請求項９に記載の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、記憶制御装置、データ記憶装置及び記憶制御方法に関する。
【背景技術】
【０００２】
近年、ハードディスクドライブ（ＨＤＤ）を代表とするデータ記憶装置では、記憶媒体として、ディスクと共にＮＡＮＤ型フラッシュメモリ（以下、単にフラッシュメモリと表記する）のような不揮発性メモリが使用されている。
【０００３】
データ記憶装置は、ホストから例えばセクタ単位のデータを連続的に受信し、ＤＲＡＭなどのバッファメモリに格納した後に、フラッシュメモリに転送するバッファ制御を行なう。通常では、データ記憶装置は、バッファメモリに対してシーケンシャルにデータをライトし、かつシーケンシャルにデータをリードする。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開平１１−１４４４７９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
シーケンシャルにデータをライト及びリードするバッファ制御では、複数の独立したバンク構成であるにも関わらず、フラッシュメモリにはシーケンシャルにデータが転送されて書き込まれるだけである。このため、バッファメモリから、一部のバンクに対するデータ転送処理が遅れた場合に、準備完了のバンクに対してもデータ転送処理が遅れる事態となる。複数の独立したバンク構成のフラッシュメモリは、準備完了したバンクの順にバッファメモリからデータを転送できる効率的なバッファ制御が望ましい。
【０００６】
そこで、本発明の目的は、効率的なバッファ制御を実現できる記憶制御装置、データ記憶装置及び記憶制御方法を提供することにある。
【課題を解決するための手段】
【０００７】
本実施形態の記憶制御装置は、複数のバンク毎の記憶領域を有する不揮発性メモリと、バッファメモリとを有するデータ記憶装置の制御装置であって、第１のバッファ制御手段と、第２のバッファ制御手段とを備えた構成である。前記バッファメモリはバンク毎に割り当てられた複数のデータバッファ領域を有する。前記第１のバッファ制御手段は、ホストから転送されて前記不揮発性メモリに書き込み又は前記不揮発性メモリから読み出されて前記ホストに転送する第１の単位のデータを前記データバッファ領域毎に格納する。前記第２のバッファ制御手段は、前記不揮発性メモリにデータを書き込む場合に転送準備が完了したバンクに対応する前記データバッファ領域から第２の単位のデータを独立して転送し、前記ホストにデータを転送する場合に読み出し対象のバンクから当該読み出し対象のバンクに対応する前記データバッファ領域に前記第２の単位のデータを独立して転送する。
【図面の簡単な説明】
【０００８】
【図１】実施形態に関するデータ記憶装置の構成を説明するためのブロック図。
【図２】実施形態に関するメインコントローラの構成を説明するためのブロック図。
【図３】実施形態に関するフラッシュメモリのバンク構成を説明するための図。
【図４】実施形態に関するバッファメモリの構成を説明するための図。
【図５】実施形態に関するバッファ制御を説明するための図。
【図６】実施形態に関するデータ転送制御を説明するための図。
【図７】実施形態に関するバッファ制御処理を説明するためのフローチャート。
【発明を実施するための形態】
【０００９】
以下図面を参照して、実施形態を説明する。
【００１０】
［ディスクドライブの構成］
図１は、本実施形態に関するデータ記憶装置として、ハイブリッド型のハードディスクドライブ（以下、単にディスクドライブと表記する）の要部を示すブロック図である。
【００１１】
図１に示すように、ディスクドライブ１は大別して、メインコントローラ１０と、バッファメモリ１１と、メモリコントローラ１２とを有する。メインコントローラ１０は、後述するように、ディスクドライブ１の動作全体を制御するコントローラである。バッファメモリ１１は、例えばＤＲＡＭ（dynamic random access memory）からなる。バッファメモリ１１は、ホスト２と記憶媒体との間のデータ転送を制御するために、リードデータまたはライトデータを一時的に格納する。
【００１２】
ディスクドライブ１は、記憶媒体としてフラッシュメモリ１３及びディスク１５を有する。メインコントローラ１０は、メモリコントローラ１２を介してフラッシュメモリ１３に対してデータを書き込み又はデータを読み出す。また、メインコントローラ１０は、ヘッドアンプ集積回路（以下、ヘッドＩＣ）１４及びヘッド１６を制御し、ディスク１５に対してデータを書き込み又はデータを読み出す。
【００１３】
ヘッドＩＣ１４は、リードアンプ及びライトドライバを有する。リードアンプは、ヘッド１６により読み出されたリード信号を増幅して、メインコントローラ１０に伝送する。ライトドライバは、メインコントローラ１０から出力されるライトデータに応じたライト電流をヘッド１６に伝送する。ヘッド１６は、ライトヘッド及びリードヘッドを有する。ライトヘッドはディスク１５上にデータを書き込む。リードヘッドは、ディスク１５上からデータを読み出す。
【００１４】
図２に示すように、メインコントローラ１０は、ハードディスクコントローラ（ＨＤＣ）２０と、マイクロプロセッサ（ＭＰＵ）２３と、Ｒ／Ｗチャネル２４とを含む。Ｒ／Ｗチャネル２４は、リードデータの信号処理を実行するリードチャネルと、ライトデータの信号処理を実行するライトチャネルとを含む。Ｒ／Ｗチャネル２４は、ヘッドＩＣ１４との間でリードデータまたはライトデータを伝送する。
【００１５】
ＨＤＣ２０は、ホスト２と、フラッシュメモリ１３またはディスク１５のそれぞれの間とのデータ転送を制御する。ＨＤＣ２０は、後述するように、カウンタ２１及びポインタ２２を有し、バッファメモリ１１を制御して、リードデータ及びライトデータをバッファメモリ１１に一時的に格納することでデータ転送制御を実行する。
【００１６】
ＭＰＵ２３はＨＤＣ２０と連携し、データの記録再生を制御する。即ち、ＭＰＵ２３はＲ／Ｗチャネル２４を制御して、ディスク１５に対するデータの書き込み動作及びデータの読み出し動作を制御する。また、ＭＰＵ２３はメモリコントローラ１２を制御して、フラッシュメモリ１３に対するデータの書き込み動作及びデータの読み出し動作を制御する。
【００１７】
［バッファ制御動作］
次に、本実施形態のディスクドライブ１のバッファ制御（データ転送制御）の動作を説明する。本実施形態は、フラッシュメモリ１３に対するデータの書き込みと読み出しの動作におけるバッファ制御（データ転送制御）に関する。従って、ディスク１５に対するデータの書き込みと読み出しの動作については省略する。
【００１８】
即ち、本実施形態は、ホスト２からライトデータをバッファメモリ１１を経由してフラッシュメモリ１３に転送するためのライトデータ転送制御に関する。なお、本実施形態は、フラッシュメモリ１３からのリードデータをバッファメモリ１１を経由してホスト２に転送するためのリードデータ転送制御にも適用できる。
【００１９】
図３に示すように、フラッシュメモリ１３は、複数の独立したバンク（bank）により構成されて、例えば４バンク３０-0〜３０-3を有する。各バンク３０-0〜３０-3はそれぞれ、複数のメモリチップの集合体である。メモリコントローラ１２は、バンク毎に独立にデータを書き込み、読み出すことが可能である。
【００２０】
一方、図４に示すように、バッファメモリ１１は、各バンク毎にセグメント（格納領域の単位）が割り当てられて管理される。ＨＤＣ２０は、ポインタ２２により下位ポインタ（BP-L:lower）から上位ポインタ（BP-U:upper）までのバッファ領域２２０を管理する。即ち、ＨＤＣ２０はポインタ２２を、データの書き込み時にはライトポインタとして制御し、データの読み出し時にはリードポインタとして制御する。
【００２１】
さらに、ＨＤＣ２０は、各セグメントを独立に管理し、後述するセクタ単位のデータのセクタ数をカウントするカウンタ２１を有する。本実施形態では、図５に示すように、ＨＤＣ２０は、カウンタ２１として、セグメント１〜４に対応するカウンタ２１１〜２１４を含む。即ち、ＨＤＣ２０は、バンク３０-0〜３０-3に対応するセグメント１〜４を独立に管理するために、カウンタ２１１〜２１４をそれぞれ制御する（カウントアップまたはカウントダウン）。
【００２２】
ここで、本実施形態では、ホスト２からは、例えば、セクタ単位のデータが２５６セクタ分だけ連続的（シーケンシャル）に転送される。なお、１セクタは５１２Ｂ（Ｂはバイト）である。ホスト２からのデータは、フラッシュメモリ１３の各バンク３０-0〜３０-3に対して、例えば１６ＫＢずつ書き込みされる。また、図４に示すように、各セグメント１〜４には、例えば１６ＫＢ単位（ＢＯＸと表記する）のデータが２単位分ずつ格納される。
【００２３】
以下、図５及び図７を参照して、ホスト２からシーケンシャルに転送されたデータを、フラッシュメモリ１３に書き込む場合のバッファ制御（データ転送制御）を説明する。
【００２４】
図５に示すように、ＨＤＣ２０は、ホスト２からシーケンシャルに転送されたデータを受信すると、バッファメモリ１１の各セグメント１〜４に格納する。ここで、本実施形態では、図６に示すように、ＨＤＣ２０は、セグメントチェーン情報に従ってバッファ制御を実行する。なお、セグメントチェーンの条件は、１ＢＯＸ（例えば１６ＫＢ単位）転送毎とする。
【００２５】
即ち、図５に示すように、ＨＤＣ２０は、ポインタ２２をライトポインタ５１〜５８として制御し、バッファメモリ１１の各セグメント１〜４にＢＯＸ単位のデータを格納する。即ち、ＨＤＣ２０は、セグメント１のＢＯＸ０、セグメント２のＢＯＸ２、セグメント３のＢＯＸ４、セグメント４のＢＯＸ６の順にバッファ制御を実行する。さらに、ＨＤＣ２０は、セグメント１のＢＯＸ１、セグメント２のＢＯＸ３、セグメント３のＢＯＸ５、セグメント４のＢＯＸ７の順にバッファ制御を実行する。
【００２６】
ここで、ＨＤＣ２０は、セグメント１〜４毎のカウンタ２１１〜２１４を制御し、ホスト２からバッファメモリ１１に格納されたセクタ数分をカウントアップしている。即ち、例えばＢＯＸ０、ＢＯＸ２，ＢＯＸ４，ＢＯＸ６、ＢＯＸ１までのデータ転送が終了した時点では、カウンタ２１１は、セグメント１において２ＢＯＸ分のセクタ数をカウントアップしている。また、カウンタ２１２〜２１４はそれぞれ、セグメント２〜４において１ＢＯＸ分のセクタ数をカウントアップしている。
【００２７】
次に、図７に示すフローチャートに従って、ＨＤＣ２０は、バッファメモリ１１に格納されたデータを、フラッシュメモリ１３の各バンク３０-0〜３０-3に書き込むためのデータ転送を制御する。まず、ＨＤＣ２０は、例えばＭＰＵ２３から、フラッシュメモリ１３においてデータを記憶するために使用する各バンク３０-0〜３０-3に対応するセグメントの番号(アクティブセグメント)を受け取る（ブロック７００）。即ち、ＨＤＣ２０は、指定されたセグメント（ここではセグメント番号１〜４）のデータをバッファメモリ１１から読み出し、フラッシュメモリ１３に転送する。
【００２８】
図５に示すように、ＨＤＣ２０は、ポインタ２２をリードポインタ６０〜６７として制御し、バッファメモリ１１の各セグメント１〜４からＢＯＸ単位のデータを読み出して転送する。具体的には、ＨＤＣ２０は、セグメント毎にＢＯＸ単位（１６ＫＢ）のデータ転送を実行する（ブロック７０１）。ここで、ＨＤＣ２０は、セグメント毎に前半のＢＯＸ単位のデータを転送し、次に後半のＢＯＸ単位のデータの順で転送する。
【００２９】
ＨＤＣ２０はＢＯＸ単位のデータをバッファメモリ１１からメモリコントローラ１２に転送する。メモリコントローラ１２はフラッシュメモリ１３に当該データを書き込む。これにより、例えば５００us程度のライトプログラム（書き込み動作）が完了となる（ブロック７０２のＹＥＳ）。具体例では、図５に示すように、セグメント１の前半のＢＯＸ０のデータがフラッシュメモリ１３に転送されて、書き込み完了された時点でライトプログラムは完了となる。この処理は、ＢＯＸ単位のデータ（ここではＢＯＸ０）の全てがバッファメモリ１１からメモリコントローラ１２に転送されて、書き込み完了となるまで繰り返される（ブロック７０２のＮＯ）。
【００３０】
ＨＤＣ２０は、ＢＯＸ単位データのライトプログラムが完了した時点で、カウンタ２１１〜２１４を制御し、フラッシュメモリ１３に転送されたＢＯＸ単位データのセクタ数分をカウントダウンする。即ち、ＨＤＣ２０は、セグメント１のカウンタ２１１をカウントダウンする。
【００３１】
ＨＤＣ２０は、ＢＯＸ単位データのライトプログラムが完了した時点で、アクティブセグメントを自由に変更できる。即ち、ＨＤＣ２０は、書き込み準備が完了しているフラッシュメモリ１３のバンクに対応するセグメント（アクティブセグメント）を検索する（ブロック７０３）。ＨＤＣ２０は、当該アクティブセグメントを設定し、前述と同様に、バッファメモリ１１からフラッシュメモリ１３（実際にはメモリコントローラ１２）へのデータ転送を開始する（ブロック７０４）。
【００３２】
ここで、ＨＤＣ２０は、例えばセグメント１の前半のＢＯＸ０のデータを転送してライトプログラムの完了後に、順番にＢＯＸ１〜ＢＯＸ７のデータを転送するとは限らない。即ち、ＨＤＣ２０は、各セグメント１〜４の前半のＢＯＸ０、ＢＯＸ２，ＢＯＸ４，ＢＯＸ６のデータを転送し、ライトプログラムが完了した順に後半のＢＯＸ３、ＢＯＸ７，ＢＯＸ５，ＢＯＸ１の順でデータ転送を実行することもあり得る。但し、各セグメント１〜４において、前半のＢＯＸ単位データの転送が完了する前に、後半のＢＯＸ単位データの転送を開始する事はない。
【００３３】
ＨＤＣ２０は、各セグメント１〜４からＢＯＸ単位データを転送し、ライトプログラムが完了した時点でデータ転送を終了する（ブロック７０５のＹＥＳ）。ＨＤＣ２０は、セグメント１〜４毎のカウンタ２１１〜２１４を制御し、フラッシュメモリ１３に転送されたＢＯＸ単位データのセクタ数分をカウントダウンする。このような処理は、各セグメント１〜４からＢＯＸ単位データの全てが転送されて、ライトプログラムが完了するまで繰り返される（ブロック７０５のＮＯ）。
【００３４】
以上のように本実施形態によれば、ホストから連続的（シーケンシャル）にセクタ単位のデータが転送されると、このデータがバッファメモリに格納される。この場合、バッファメモリのセグメント毎のカウンタを制御し、バッファメモリに格納されたセクタ数分をカウントアップする。
【００３５】
また、バッファメモリからフラッシュメモリにデータ転送を行なう場合に、フラッシュメモリのバンクに対応するセグメント（アクティブセグメント）毎に独立してバッファメモリからデータを取り出すことが可能である。ここで、本実施形態は、セグメント毎のカウンタを独立に制御できるため、各セグメント（各バンク）に転送可能な有効データ数を管理できる。従って、フラッシュメモリのバンク毎に独立してバッファメモリからデータを転送できる。これにより、フラッシュメモリのバンク毎の書き込み処理時間に差がある場合でも、書き込み準備が完了しているバンクから順にデータの転送を開始できる。
【００３６】
なお、本実施形態は、ホスト（データの送出元）２からシーケンシャルに転送されるライトデータをバッファメモリ１１を経由してフラッシュメモリ（データの送出先）１３に転送するライトデータ転送制御について説明しているが、リードデータ転送制御についても適用できる。
【００３７】
但し、リードデータ転送制御では、フラッシュメモリ（データの送出元となる）１３からは非シーケンシャルにデータが読み出されて、バッファメモリ１１に格納される。ＨＤＣ２０は、フラッシュメモリ（データの送出元となる）１３から読み出し要求のバンクから読み出されたデータを、バッファメモリ１１の対応するセグメントにＢＯＸ単位で格納する。次に、前述したように、ＨＤＣ２０は、セグメント毎のカウンタを制御し、読み出し要求のバンクに対応するセグメントのＢＯＸから読み出し要求のデータをセクタ単位で読み出し、ホスト（データの送出先となる）２に転送するバッファ制御を実行する。
【００３８】
要するに本実施形態によれば、第１に、フラッシュメモリの各バンクに対してデータの書き込み処理を行なう場合に、各バンクの処理を独立して管理できる。従って、処理待ち時間を抑制して処理効率を向上できる。第２に、一部のバンクに対する書き込み処理が遅れた場合でも、書き込み準備が完了しているバンクに対する書き込み処理に移行できる。従って、書き込み処理が停滞することなく、フラッシュメモリ全体の書き込み処理の進行を継続することができる。特に、本実施形態は、各バンクに同時にデータを書き込む場合で、バンク毎にデータの書き込み処理時間が大きく異なる場合には有効である。
【００３９】
また、一部のバンクからの読み出し処理が遅れた場合でも、ホストに対する転送準備が完了しているバンクに対応するセグメントからの転送処理に移行できる。従って、読み出し処理が停滞することなく、フラッシュメモリ全体の読み出し処理の進行を継続することができる。
【００４０】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【００４１】
１…ハイブリッド型ＨＤＤ（ディスクドライブ）、２…ホスト、
１０…メインコントローラ、１１…バッファメモリ、１２…メモリコントローラ、
１３…フラッシュメモリ、１４…ヘッドアンプ集積回路（ヘッドアンプＩＣ）
１５…ディスク、１６…ヘッド、
２０…ハードディスクコントローラ（ＨＤＣ）、
２１，２１１〜２１４…カウンタ、２２…ポインタ、
２３…マイクロプロセッサ（ＭＰＵ）、２４…Ｒ／Ｗチャネル、
３０-0〜３０-3…バンク。
【図１】
2014137721.tif 000003
【図２】
2014137721.tif 000004
【図３】
2014137721.tif 000005
【図４】
2014137721.tif 000006
【図５】
2014137721.tif 000007
【図６】
2014137721.tif 000008
【図７】
2014137721.tif 000009