(57)【要約】【課題】大容量化とデータアクセスの高速化を両立させつつ、データ記憶時の信頼性を向上させる。【解決手段】書込制御部２１は、第１記憶媒体１７にライトデータを第１の記録方法で記録させ、読込制御部２２は、第２記憶媒体１８から読み出されたリードデータを第１の記録方法よりも信頼性が低いものの記憶容量が大きい第２の記録方法で第１記憶媒体１７に記録させる。【選択図】図１
2014211800.tif 000002
【特許請求の範囲】
【請求項１】
ＮＡＮＤ型フラッシュメモリと、
磁気ディスクと、
前記磁気ディスクに記録するライトデータを前記ＮＡＮＤ型フラッシュメモリに第１の記録方法で記録させ、前記磁気ディスクから読み出されたリードデータを前記第１の記録方法よりも信頼性が低いものの記憶容量が大きい第２の記録方法で前記ＮＡＮＤ型フラッシュメモリに記録させるコントローラとを備えるデータ記憶装置。
【請求項２】
第１記憶媒体と、
不揮発性の第２記憶媒体と、
ホスト装置から書き込み要求されたライトデータを前記第２記憶媒体のキャッシュメモリである前記第１記憶媒体に第１の記録方法で記録させ、前記第２記憶媒体から読み出されたリードデータを前記第１の記録方法よりも信頼性が低いものの記憶容量が大きい第２の記録方法で前記第１記憶媒体に記録させるコントローラとを備えるデータ記憶装置。
【請求項３】
前記コントローラは、
書き込み要求に応じて前記第１記憶媒体に前記ライトデータを第１の記録方法で記録させる書込制御部と、
読み出し要求に応じて前記第２記憶媒体から読み出されたリードデータを前記第２の記録方法で前記第１記憶媒体に記録させる読込制御部とを備える請求項２に記載のデータ記憶装置。
【請求項４】
前記コントローラは、
追い出し要求に応じて前記第１記憶媒体から前記ライトデータを読み出させ前記第２記憶媒体に記録させる追い出し制御部を備える請求項３に記載のデータ記憶装置。
【請求項５】
前記第１の記録方法は前記第２の記録方法よりも、同一ビット長のユーザデータに対する誤り訂正符号のビット長が長い請求項１から４のいずれか１項に記載のデータ記憶装置。
【請求項６】
前記第１の記録方法は前記第２の記録方法よりも、パリティデータの生成元となるデータ量が少ない請求項１から４のいずれか１項に記載のデータ記憶装置。
【請求項７】
前記第１の記録方法は、所定量のデータにパリティデータを割り当て、前記第２の記録方法は、前記データにパリティデータを割り当てない請求項１から４のいずれか１項に記載のデータ記憶装置。
【請求項８】
前記第１の記録方法は前記第２の記録方法よりも、ＲＳ符号の生成元となるデータ量が少ない請求項１から４のいずれか１項に記載のデータ記憶装置。
【請求項９】
前記第１の記録方法は、所定量のデータにＲＳ符号を割り当て、前記第２の記録方法は、前記所定量のデータにパリティデータを割り当てる請求項１から４のいずれか１項に記載のデータ記憶装置。
【請求項１０】
前記第１の記録方法は、所定量のデータにＲＳ符号を割り当て、前記第２の記録方法は、前記データにＲＳ符号を割り当てない請求項１から４のいずれか１項に記載のデータ記憶装置。
【請求項１１】
前記第１の記録方法は前記第２の記録方法よりも、メモリセル当たりの記憶ビット数が少ない請求項１から４のいずれか１項に記載のデータ記憶装置。
【請求項１２】
第１記憶媒体にライトデータを第１の記録方法で記録させ、不揮発性の第２記憶媒体から読み出されたリードデータを前記第１の記録方法よりも信頼性が低いものの記憶容量が大きい第２の記録方法で前記第１記憶媒体に記録させるストレージコントローラ。
【請求項１３】
第１記憶媒体にライトデータを第１の記録方法で記録し、不揮発性の２記憶媒体から読み出したリードデータを前記第１の記録方法よりも信頼性が低いものの記憶容量が大きい第２の記録方法で前記第１記憶媒体に記録するデータ記憶制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、データ記憶装置、ストレージコントローラおよびデータ記憶制御方法に関する。
【背景技術】
【０００２】
大容量化とデータアクセスの高速化を両立させるため、ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）などのストレージのキャッシュとして、ＮＡＮＤ型フラッシュメモリなどの半導体記憶媒体を使用したハイブリッドドライブがある。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】ＵＳＰ７６１０４３８
【発明の概要】
【発明が解決しようとする課題】
【０００４】
本発明の一つの実施形態は、大容量化とデータアクセスの高速化を両立させつつ、データ記憶時の信頼性を向上させることが可能なデータ記憶装置、ストレージコントローラおよびデータ記憶制御方法を提供することを目的とする。
【課題を解決するための手段】
【０００５】
本発明の一つの実施形態によれば、第１記憶媒体と、不揮発性の第２記憶媒体と、コントローラとが設けられている。コントローラは、ホスト装置から書き込み要求されたライトデータを前記第２記憶媒体のキャッシュメモリである前記第１記憶媒体に第１の記録方法で記録させ、前記第２記憶媒体から読み出されたリードデータを前記第１の記録方法よりも信頼性が低いものの記憶容量が大きい第２の記録方法で前記第１記憶媒体に記録させる。
【図面の簡単な説明】
【０００６】
【図１】図１は、第１実施形態に係るデータ記憶装置の概略構成を示すブロック図である。
【図２】図２（ａ）は、第１実施形態に係る第１アドレス正引きテーブルの概略構成を示す図、図２（ｂ）は、図２（ａ）の論理アドレスに対応して登録されるキャッシュアドレス情報の内容を示す図である。
【図３】図３（ａ）は、第１実施形態に係るデータ記憶装置の第１の記録方法の一例を示す図、図３（ｂ）は、第１実施形態に係るデータ記憶装置の第２の記録方法の一例を示す図である。
【図４】図４（ａ）は、第１実施形態に係るデータ記憶装置の第１の記録方法のその他の例を示す図、図４（ｂ）は、第１実施形態に係るデータ記憶装置の第２の記録方法のその他の例を示す図、図４（ｃ）は、第１実施形態に係るデータ記憶装置の第２の記録方法のさらにその他の例を示す図である。
【図５】図５（ａ）は、第１実施形態に係るデータ記憶装置の第１の記録方法のさらにその他の例を示す図、図５（ｂ）は、第１実施形態に係るデータ記憶装置の第２の記録方法のさらにその他の例を示す図、図５（ｃ）は、第１実施形態に係るデータ記憶装置の第２の記録方法のさらにその他の例を示す図、図５（ｄ）は、第１実施形態に係る図１のデータ記憶装置の第２の記録方法のさらにその他の例を示す図である。
【図６】図６（ａ）は、第１実施形態に係るデータ記憶装置の第１の記録方法のさらにその他の例を示す図、図６（ｂ）は、第１実施形態に係るデータ記憶装置の第２の記録方法のさらにその他の例を示す図、図６（ｃ）は、第１実施形態に係るデータ記憶装置の第２の記録方法のさらにその他の例を示す図である。
【図７】図７は、第１実施形態に係るデータ記憶装置の書込処理を示すフローチャートである。
【図８】図８は、第１実施形態に係るデータ記憶装置の読込処理を示すフローチャートである。
【図９】図９は、第１実施形態に係るデータ記憶装置の追い出し処理を示すフローチャートである。
【図１０】図１０は、第２実施形態に係るデータ記憶装置の概略構成を示すブロック図である。
【発明を実施するための形態】
【０００７】
以下に添付図面を参照して、実施形態に係るデータ記憶装置を詳細に説明する。なお、これらの実施形態により本発明が限定されるものではない。
【０００８】
（第１実施形態）
図１は、第１実施形態に係るデータ記憶装置の概略構成を示すブロック図である。
図１において、データ記憶装置１１には、ホストインタフェース部１２、コントローラ１３、第１アクセス部１４、第２アクセス部１５、第３アクセス部１６、第１記憶媒体１７、不揮発性の第２記憶媒体１８および管理情報記憶部１９が設けられている。本第１実施形態では、第１記憶媒体１７は、第２記憶媒体１８のキャッシュとして用いられる。第１記憶媒体１７は、第２記憶媒体１８よりもデータのアクセス速度が速いことが好ましい。例えば、第１記憶媒体１７はＮＡＮＤ型フラッシュメモリ、第２記憶媒体１８は磁気ディスクを用いることができる。コントローラ１３には、書込制御部２１、読込制御部２２および追い出し制御部２３が設けられている。管理情報記憶部１９には、第１アドレス正引きテーブル１９Ａおよび第２アドレス正引きテーブル１９Ｂが設けられている。データ記憶装置１１は、ホストインタフェース部１２を介してホスト２０に接続されている。
【０００９】
なお、書込制御部２１は、第１記憶媒体１７にライトデータを第１の記録方法で記録させることができる。読込制御部２２は、第２記憶媒体１８から読み出されたリードデータを第１の記録方法よりも信頼性が低いものの記憶容量の大きい第２の記録方法で第１記憶媒体１７に記録させることができる。
【００１０】
ここで、データ記憶装置１１がホスト２０からの書き込み命令を受け付けた時には、その書き込み命令で書き込まれるライトデータは第２記憶媒体１８に記録されていない。したがって、ライトキャッシュでは第１記憶媒体１７に第１の記録方法でライトデータを記録することで、第１記憶媒体１７の信頼性を向上することができる。一方、データ記憶装置１１がホスト２０からの読み込み命令を受け付けた結果、第２記憶媒体１８に記録されているデータを第１記憶媒体１７にキャッシュ（書き込み）した場合は、その読み込み命令で読み込まれるリードデータは第１記憶媒体１７にも第２記憶媒体１８にも記録されている。このため、リードデータを第１記憶媒体１７に記録した後、第１記憶媒体１７に記録したリードデータが破壊された場合であっても、そのリードデータを第２記憶媒体１８から再度読み込むことができる。したがって、リードキャッシュでは第１記憶媒体１７に第２の記録方法でライトデータを記録することで、データ記憶装置全体としての信頼性を落とすことなく、記憶容量を増やすことができるため、結果としてキャッシュのヒット率が向上し、データアクセスの高速化が可能になる。
【００１１】
以下、図１の構成および動作について詳細に説明する。なお、以下の説明では、第１記憶媒体１７はＮＡＮＤ型フラッシュメモリ、第２記憶媒体１８は磁気ディスクを例にとるが、第１記憶媒体１７と第２記憶媒体１８は別の不揮発メモリや別の記憶媒体であってもよい。例えば、第２記憶媒体１８はＮＡＮＤ型フラッシュメモリであってもよい。
第１記憶媒体１７がＮＡＮＤ型フラッシュメモリの場合、第１記憶媒体１７は複数のブロックを有する。ブロックは、例えばＮＡＮＤ型フラッシュメモリの消去処理の単位のように、データの読み書き処理における単位の１つである。また、ブロックは、複数のページを有する。ブロックにおける各ページには、通しのページ番号が付与される。ページは、第１記憶媒体１７に対するデータの入出力単位であり、１つのページのデータ量をページサイズと称する。ページサイズは、例えば１６キロバイトのように定められている。例えば、キャッシュにおけるデータの管理サイズがページサイズよりも小さい場合、１つのページに複数のキャッシュされたデータが含まれる。具体的には、例えば、ページサイズが１６キロバイトで、キャッシュにおけるデータの管理サイズが４キロバイトの場合、１つのページに４つのキャッシュされたデータが含まれることになる。
【００１２】
第１アクセス部１４は、要求元から指示される第１記憶媒体１７からの読み込み指示を受け付け、読み込み指示されたリードデータを第１記憶媒体１７から読み込み、要求元に送信する。また、第１アクセス部１４は、要求元から指示される第１記憶媒体１７への書き込み指示を受け付け、書き込み指示されたライトデータを第１記憶媒体１７に入力し、書き込み処理を実行する。
【００１３】
第２記憶媒体１８が磁気ディスクの場合、第２記憶媒体１８は同心円状の複数のトラックを有する。トラックには、複数のセクタが含まれる。各セクタには、通しのセクタ番号が付与される。セクタは、データ記憶装置１１とホスト２０とのデータの入出力単位である。回転軸を中心に第２記憶媒体１８を回転させ、回転した第２記憶媒体１８に対して磁気ヘッドをトラック間方向に移動させることで、目標セクタのデータを読み書きすることができる。
【００１４】
第２アクセス部１５は、要求元から指示される第２記憶媒体１８からの読み込み指示を受け付け、読み込み指示されたリードデータを第２記憶媒体１８から読み込み、要求元に送信する。また、第２アクセス部１５は、要求元から指示される第２記憶媒体１８への書き込み指示を受け付け、書き込み指示されたライトデータを第２記憶媒体１８に入力し、書き込み処理を実行する。
【００１５】
管理情報記憶部１９は、第１記憶媒体１７および第２記憶媒体１８に記録されるデータの管理情報を記憶する。管理情報には、第１アドレス正引きテーブル１９Ａおよび第２アドレス正引きテーブル１９Ｂが含まれる。
【００１６】
ここで、図２を用いて第１アドレス正引きテーブル１９Ａの構成例について説明する。図２（ａ）は、第１実施形態に係る第１アドレス正引きテーブルの概略構成を示す図、図２（ｂ）は、図２（ａ）の論理アドレスに対応して登録されるキャッシュアドレス情報の内容を示す図である。
図２（ａ）において、第１アドレス正引きテーブル１９Ａは、キャッシュの管理単位である論理アドレス０、１、・・・Ｎ（Ｎは正の整数）と、論理アドレスのデータが第１記憶媒体１７にキャッシュされているかを示す情報、および論理アドレスのデータが第１記憶媒体１７にキャッシュデータとして含まれる場合の第１記憶媒体１７上の位置情報であるキャッシュアドレス情報ＡＪとの対応付けを管理する。キャッシュの管理単位としては、例えば、４キロバイトのように定められている。キャッシュアドレス情報ＡＪには、キャッシュ上存在フラグ情報ＦＪと、ブロック番号情報ＢＪと、ページ番号情報ＰＪと、ページ上オフセット情報ＴＪが含まれる。なお、第１記憶媒体１７がＮＡＮＤ型フラッシュメモリではなく他の不揮発メモリの場合は、ブロック番号情報ＢＪと、ページ番号情報ＰＪと、ページ上オフセット情報ＴＪは、当該不揮発メモリの構造に応じた情報に読み替えることができる。
【００１７】
キャッシュ上存在フラグ情報ＦＪは、対応する論理アドレスのデータが第１記憶媒体１７にキャッシュされているかを示す情報である。キャッシュ上存在フラグ情報ＦＪが示す情報の種類には、リードキャッシュとしてキャッシュされているかを示す情報、ライトキャッシュとしてキャッシュされているかを示す情報、キャッシュされていない旨を示す情報の少なくとも３種類がある。ブロック番号情報ＢＪは、対応する論理アドレスのデータがキャッシュされている場合に、当該データが格納されている領域がどのブロックに含まれるかを示す情報である。ページ番号情報ＰＪは、対応する論理アドレスのデータがキャッシュされている場合に、当該データが格納されている領域がどのページに含まれるかを示す情報である。ページ上オフセット情報ＴＪは、対応する論理アドレスのデータがキャッシュされている場合に、当該データが格納されている領域がページ上のどこに配置されているかを示す情報である。なお、本実施の形態では、キャッシュの管理単位がページサイズより少ない場合、１つのページに複数のキャッシュされたデータが含まれるものとして説明する。
【００１８】
第２アドレス正引きテーブル１９Ｂは、データ記憶装置１１がホスト２０に提供するアドレス情報である記憶装置アドレス情報と、記憶装置アドレスのデータが第２記憶媒体１８のどこに記憶されているかを示す情報である第２記憶媒体物理アドレス情報との対応付けを管理する。例えば、ＨＤＤやＳＳＤでの記憶装置アドレスの実施の形態としては、ＬＢＡ（Ｌｏｇｉｃａｌ  Ｂｌｏｃｋ  Ａｄｄｒｅｓｓ）がある。ＬＢＡで特定されるデータのサイズは、例えば、５１２バイトのように定められている。第２記憶媒体物理アドレス情報には、トラック番号情報と、セクタ番号情報が含まれる。トラック番号情報は、対応する記憶装置アドレスのデータがどのトラックに含まれるかを示す情報である。セクタ番号情報は、対応する記憶装置アドレスのデータがどのセクタに含まれるかを示す情報である。
【００１９】
なお、第２記憶媒体１８の物理アドレスと、記憶装置アドレスが固定的に対応しており、計算等で対応関係の算出が可能な場合は、第２アドレス正引きテーブル１９Ｂは省略可能である。なお、本実施の形態では、第２アドレス正引きテーブル１９Ｂを省略しない構成として説明する。
【００２０】
なお、管理情報には、以降の種々の処理を簡単にするために、第１アドレス正引きテーブル１９Ａおよび第２アドレス正引きテーブル１９Ｂから導出可能な情報を別途含んでいてもよい。また、以降の種々の処理において、処理を簡単にするために、第１アドレス正引きテーブル１９Ａおよび第２アドレス正引きテーブル１９Ｂから導出可能な情報を用いるようにしてもよい。
【００２１】
ここで図１に戻り、第３アクセス部１６は、要求元から指示される管理情報記憶部１９からの読み込み指示を受け付け、読み込み指示された管理情報記憶部１９が記憶する管理情報を管理情報記憶部１９から読み込み、要求元に送信する。また、第３アクセス部１６は、要求元から指示される管理情報記憶部１９への書き込み指示を受け付け、管理情報記憶部１９に書き込み指示された管理情報を入力し、書き込み処理を実行する。
【００２２】
ホストインタフェース部１２は、書き込み命令及び読み込み命令を含む命令をホスト２０から受け付ける。書き込み命令には、記憶装置アドレス情報およびライトデータが含まれる。読み込み命令には、記憶装置アドレス情報が含まれる。
【００２３】
前述したように、記憶装置アドレスで特定されるデータのサイズは、例えば、５１２バイトのように定められており、また、論理アドレスで特定されるデータのサイズは４キロバイトのように定められているため、記憶装置アドレスで特定されるデータのサイズと、論理アドレスで特定されるデータのサイズは一般に異なっているが、記憶装置アドレスと論理アドレスは相互に変換可能である。例えば、記憶装置アドレス情報が５１２バイトごとに割り当てられ、論理アドレス情報が４キロバイトごとに割り当てられている場合、記憶装置アドレス情報を８で除算したときの商を求めることにより、記憶装置アドレス情報を論理アドレス情報に変換できる。本実施の形態では、説明の簡単化のために、記憶装置アドレスで特定されるデータのサイズと、論理アドレスで特定されるデータのサイズが同じ構成で説明するが、記憶装置アドレスで特定されるデータのサイズと、論理アドレスで特定されるデータのサイズが異なる構成でも適用可能である。
【００２４】
ホストインタフェース部１２は、受け付けた命令が書き込み命令であったときは、書込制御部２１に書き込み命令を転送し、受け付けた命令が読み込み命令であったときは、読込制御部２２に読み込み命令を転送する。ホストインタフェース部１２は、読込制御部２２からデータを受信すると、受信したデータをホスト２０に転送する。
【００２５】
書込制御部２１は、ホストインタフェース部１２から書き込み命令を受け取ると、受け取った書き込み命令から、記憶装置アドレス情報及びライトデータを抽出する。書込制御部２１は、抽出したライトデータを第１記憶媒体１７にキャッシュするべきか否か判断する。この判断方法には、任意の公知の方法を用いることができる。
【００２６】
書込制御部２１は、抽出したライトデータを第１記憶媒体１７にキャッシュするべきでないと判断した場合は、抽出したライトデータの書込み先になる第２記憶媒体１８のトラック番号情報とセクタ番号情報を第２アドレス正引きテーブル１９Ｂから取得するように、第３アクセス部１６に読み込み指示する。ライトデータの書込み先になるトラック番号情報とセクタ番号情報を第２アドレス正引きテーブル１９Ｂから導出する方法には、任意の公知の方法を用いることができる。書込制御部２１は、抽出したライトデータの書込み先となるトラック番号情報とセクタ番号情報を第３アクセス部１６から取得する。なお、第２記憶媒体１８が磁気ディスクではなく他の記憶媒体の場合は、トラック番号情報とセクタ番号情報は、当該記憶媒体の構造に応じた情報に読み替えることができる。
【００２７】
書込制御部２１は、第２記憶媒体１８のトラック番号情報とセクタ番号情報に対応する領域に抽出したライトデータを書き込むように第２アクセス部１５に書き込み指示する。書込制御部２１は、第２アドレス正引きテーブル１９Ｂの記憶装置アドレス情報に対応する第２記憶媒体物理アドレス情報に取得したトラック番号情報とセクタ番号情報を書き込むように第３アクセス部１６に書き込み指示する。これは、今回の書き込み命令受信前に第２アドレス正引きテーブル１９Ｂの当該記憶装置アドレス情報に対応していた第２記憶媒体物理アドレス情報と、今回の書き込み命令受信に伴ってライトデータを書き込んだ位置を示す第２記憶媒体物理アドレス情報とが異なっていてもよいため、今回の書き込み命令受信に伴ってライトデータを書き込んだ位置を示す第２記憶媒体物理アドレス情報に更新するものである。なお、今回の書き込み命令受信前に第２アドレス正引きテーブル１９Ｂの当該記憶装置アドレス情報に対応していた第２記憶媒体物理アドレス情報と、今回の書き込み命令受信に伴ってライトデータを書き込んだ位置を示す第２記憶媒体物理アドレス情報とが同じである場合は、今回の書き込み命令受信に伴ってライトデータを書き込んだ位置を示す第２記憶媒体物理アドレス情報に更新する必要はない。
【００２８】
一方、書込制御部２１は、抽出したライトデータを第１記憶媒体１７にキャッシュするべきと判断した場合は、抽出したライトデータの書込み先になるブロック番号情報ＢＪとページ番号情報ＰＪとページ上オフセット情報ＴＪ（以下、この３つの情報をキャッシュ先情報という）を第１アドレス正引きテーブル１９Ａから取得するように第３アクセス部１６に読み込み指示する。ライトデータの書込み先になるキャッシュ先情報を第１アドレス正引きテーブル１９Ａから導出する方法には、任意の方法を用いることができる。書込制御部２１は、抽出したライトデータの書込み先になるキャッシュ先情報を第３アクセス部１６から取得する。
【００２９】
書込制御部２１は、第１記憶媒体１７のキャッシュ先情報に対応する領域に第１の記録方法でライトデータを書き込むように第１アクセス部１４に書き込み指示する。なお、例えば、本実施の形態のキャッシュの管理単位がページサイズより小さい場合、１つのページに複数のキャッシュデータが含まれることになるが、この場合、記録する複数のキャッシュデータが１つのページのサイズ分揃ってから第１記憶媒体１７に書き込むように制御してもよい。
【００３０】
書込制御部２１は、書き込み命令から抽出した記憶装置アドレス情報から変換された論理アドレスに対応するキャッシュアドレス情報ＡＪがライトデータの書込み先を示すように第３アクセス部１６に書き込み指示する。より詳細には、管理情報記憶部１９のキャッシュアドレス情報ＡＪのキャッシュ先情報を、第３アクセス部１６から取得したキャッシュ先情報に更新し、キャッシュ上存在フラグ情報ＦＪを、ライトキャッシュとして存在する旨を示す情報に更新する。これは、今回の書き込み命令受信前に第１アドレス正引きテーブル１９Ａの当該論理アドレスに対応していたキャッシュ先情報と、今回の書き込み命令受信に伴ってライトデータを書き込んだ位置を示すキャッシュ先情報とが異なっていてもよいため、今回の書き込み命令受信に伴ってライトデータを書き込んだ位置を示すキャッシュ先情報に更新するものである。なお、今回の書き込み命令受信前に第１アドレス正引きテーブル１９Ａの当該論理アドレスに対応していたキャッシュ先情報と、今回の書き込み命令受信に伴ってライトデータを書き込んだ位置を示すキャッシュ先情報とが同じである場合は、今回の書き込み命令受信に伴ってライトデータを書き込んだ位置を示すキャッシュ先情報に更新する必要はない。
【００３１】
読込制御部２２は、ホストインタフェース部１２から読み込み命令を受け取ると、受け取った読み込み命令から記憶装置アドレス情報を抽出する。読込制御部２２は、抽出した記憶装置アドレス情報を論理アドレス情報に変換する。読込制御部２２は、変換した論理アドレス情報に対応するキャッシュ上存在フラグ情報ＦＪを管理情報記憶部１９（第１アドレス正引きテーブル１９Ａ）から読み込むように第３アクセス部１６に読み込み指示する。読込制御部２２は、キャッシュ上存在フラグ情報ＦＪを取得する。
【００３２】
読込制御部２２は、取得したキャッシュ上存在フラグ情報ＦＪから、変換した論理アドレスのデータがキャッシュ上に存在するか否かを判断する。読込制御部２２は、変換した論理アドレスのデータがキャッシュ上に存在すると判断した場合は、変換した論理アドレス情報に対応するキャッシュ先情報を管理情報記憶部１９（第１アドレス正引きテーブル１９Ａ）から読み込むように第３アクセス部１６に読み込み指示する。読込制御部２２は、キャッシュ先情報を取得する。
【００３３】
また、読込制御部２２は、変換した論理アドレスのデータがライトキャッシュ上に存在するかリードキャッシュ上に存在するかを、取得したキャッシュ上存在フラグ情報ＦＪから判断する。読込制御部２２は、論理アドレスのデータがライトキャッシュ上に存在すると判断した場合は、取得したキャッシュ先情報が示す第１記憶媒体１７の領域から、第１の記録方法で記録されているデータを読み込む方法に従ってデータを読み込むように第１アクセス部１４に読み込み指示する。読込制御部２２は、読み込んだデータを取得する。
【００３４】
一方、読込制御部２２は、論理アドレスのデータがリードキャッシュ上に存在すると判断した場合は、取得したキャッシュ先情報が示す第１記憶媒体１７の領域から、第２の記録方法で記録されているデータを読み込む方法に従ってデータを読み込むように第１アクセス部１４に読み込み指示する。読込制御部２２は、読み込んだデータを取得する。第２の記録方法については後述する。
【００３５】
読込制御部２２は、論理アドレスのデータがキャッシュ上に存在しないと判断した場合は、抽出した記憶装置アドレス情報に対応する第２記憶媒体物理アドレス情報であるトラック番号情報とセクタ番号情報を管理情報記憶部１９（第２アドレス正引きテーブル１９Ｂ）から読み込むように、第３アクセス部１６に読み込み指示する。読込制御部２２は、トラック番号情報とセクタ番号情報を第３アクセス部１６を介して取得する。
【００３６】
読込制御部２２は、取得したトラック番号情報とセクタ番号情報が示す第２記憶媒体１８の領域からデータを読み込むように第２アクセス部１５に読み込み指示する。読込制御部２２は、読み込んだデータを第２アクセス部１５を介して取得する。
【００３７】
読込制御部２２は、読み込んだデータを第１記憶媒体１７にリードキャッシュするべきか否かを判断する。この判断方法には、任意の方法を用いることができる。
【００３８】
読込制御部２２は、読み込んだデータを第１記憶媒体１７にリードキャッシュするべきでないと判断した場合は、必要に応じて、データのヒット率などの更新を行うために、管理情報記憶部１９が記憶する管理情報を更新するように第３アクセス部１６に書き込み指示してもよい。例えば、データのヒット率の情報を管理情報に記憶させておくことで、後述の追い出し処理において、ヒット率が高いデータをキャッシュから追い出さずに残しておくような対処が可能になる。
【００３９】
読込制御部２２は、読み込んだデータを第１記憶媒体１７にリードキャッシュするべきと判断した場合は、第２記憶媒体１８から読み込んだデータの書込み先に対応する論理アドレスのキャッシュ先情報を第１アドレス正引きテーブル１９Ａから取得するように、第３アクセス部１６に読み込み指示する。読み込んだデータの書込み先になるキャッシュ先情報を第１アドレス正引きテーブル１９Ａから導出する方法には、任意の方法を用いることができる。読込制御部２２は、第２記憶媒体１８から読み込んだデータの書込み先になるキャッシュ先情報を第３アクセス部１６から取得する。
【００４０】
読込制御部２２は、取得したキャッシュ先情報に対応する第１記憶媒体１７の領域に、第２記憶媒体１８から読み込んだデータを第２の記録方法で書き込むように第１アクセス部１４に書き込み指示する。なお、例えば、本実施の形態のキャッシュの管理単位がページサイズより小さい場合、１つのページに複数のキャッシュデータが含まれることになるが、この場合、記録する複数のキャッシュデータが１つのページのサイズ分揃ってから第１記憶媒体１７に書き込むように制御してもよい。
【００４１】
読込制御部２２は、変換した論理アドレスに対応するキャッシュアドレス情報ＡＪが第２記憶媒体１８から読み込んだデータの書込み先を示すように第３アクセス部１６に書き込み指示する。より詳細には、管理情報記憶部１９のキャッシュアドレス情報ＡＪのキャッシュ先情報を、第３アクセス部１６から取得したキャッシュ先情報に更新し、キャッシュ上存在フラグ情報ＦＪを、リードキャッシュとして存在する旨を示す情報に更新する。これは、第１アドレス正引きテーブル１９Ａの当該論理アドレスのデータが過去にキャッシュされていて、そののちに後述する追い出し処理によってキャッシュから追い出されていた場合に、第１アドレス正引きテーブル１９Ａの当該論理アドレスに、過去にキャッシュされていたデータの記録先であるキャッシュ先情報が記録されていることがあるためである。ここで、今回の読み込み命令受信前に第１アドレス正引きテーブル１９Ａの当該論理アドレスに対応していたキャッシュ先情報と、今回の読み込み命令受信に伴ってリードデータを書き込んだ位置を示すキャッシュ先情報とが異なっていてもよいため、今回の読み込み命令受信に伴ってリードデータを書き込んだ位置を示すキャッシュ先情報に更新される。なお、今回の読み込み命令受信前に第１アドレス正引きテーブル１９Ａの当該論理アドレスに対応していたキャッシュ先情報と、今回の読み込み命令受信に伴ってリードデータを書き込んだ位置を示すキャッシュ先情報とが同じである場合は、今回の読み込み命令受信に伴ってリードデータを書き込んだ位置を示すキャッシュ先情報に更新する必要はない。読込制御部２２は、必要に応じて、データのヒット率などの更新を行うために、管理情報記憶部１９が記憶する管理情報を更新するように第３アクセス部１６に書き込み指示してもよい。例えば、データのヒット率の情報を管理情報に記憶させておくことで、後述の追い出し処理において、ヒット率が高いデータをキャッシュから追い出さずに残しておくような対処が可能になる。
【００４２】
読込制御部２２は、第１記憶媒体１７から読み込んだデータまたは第２記憶媒体１８から読み込んだデータをホストインタフェース部１２に送信する。なお、読込制御部２２は、第１記憶媒体１７または第２記憶媒体１８からデータを読み込み次第、読み込んだデータをホストインタフェース部１２に送信するように制御してもよい。これにより、ホスト２０に対する読み込み命令の応答時間を早めることができる。
【００４３】
追い出し制御部２３は、予め定められたタイミング、あるいは動的に定められたタイミングでキャッシュから追い出すデータが存在するか否かを判定する。データを次々に第１記憶媒体１７にキャッシュ（書き込む）すると、やがて第１記憶媒体１７にそれ以上データをキャッシュ（書き込む）することができなくなる場合がある。例えば、このような場合に、過去に第１記憶媒体１７にキャッシュ（書き込む）したデータを無効化し、新たな書き込み先の領域を確保する処理（キャッシュから追い出す処理）が必要になる。なお、キャッシュから追い出すタイミングは前述した場合に限られない。このタイミングには、任意の公知のタイミングを用いることができる。また、この判断方法には、任意の公知の方法を用いることができる。
【００４４】
追い出し制御部２３は、キャッシュから追い出すデータが存在しないと判断した場合は、処理を終了する。追い出し制御部２３は、キャッシュから追い出すデータが存在すると判断した場合は、追い出し対象のデータがリードキャッシュのデータであるかライトキャッシュのデータであるかを判断する。
【００４５】
追い出し制御部２３は、追い出し対象のデータがリードキャッシュのデータであると判断した場合、管理情報を更新する。より詳細には、追い出し制御部２３は、追い出し対象のデータに対応する第１アドレス正引きテーブル１９Ａのキャッシュ上存在フラグ情報ＦＪを、キャッシュとして存在しない旨を示す情報に更新するように第３アクセス部１６に書き込み指示する。
【００４６】
追い出し制御部２３は、追い出し対象のデータがライトキャッシュのデータであると判断した場合、当該データを第２記憶媒体１８にコピーする。より詳細には、追い出し制御部２３は、追い出し対象のデータに対応するキャッシュ先情報を読み込むように、第３アクセス部１６に読み込み指示する。追い出し制御部２３は、キャッシュ先情報を取得する。追い出し制御部２３は、取得したキャッシュ先情報が示す第１記憶媒体１７の領域から、第１の記録方法で記録されているデータを読み込む方法に従ってデータを読み込むように第１アクセス部１４に読み込み指示する。追い出し制御部２３は、読み込んだデータを取得する。
【００４７】
追い出し制御部２３は、読み込んだデータの書込み先になる第２記憶媒体１８のトラック番号情報とセクタ番号情報を第２アドレス正引きテーブル１９Ｂから取得するように、第３アクセス部１６に読み込み指示する。読み込んだデータの書込み先になるトラック番号情報とセクタ番号情報を第２アドレス正引きテーブル１９Ｂから導出する方法には、任意の公知の方法を用いることができる。追い出し制御部２３は、読み込んだデータの書込み先となるトラック番号情報とセクタ番号情報を第３アクセス部１６から取得する。
【００４８】
追い出し制御部２３は、取得したトラック番号情報とセクタ番号情報に対応する第２記憶媒体１８の領域に、読み込んだデータを書き込むように第２アクセス部１５に書き込み指示する。追い出し制御部２３は、管理情報を更新する。より詳細には、追い出し制御部２３は、第２アドレス正引きテーブル１９Ｂ上の追い出し対象のデータに対応する記憶装置アドレス情報に対応する第２記憶媒体物理アドレス情報に、取得したトラック番号情報とセクタ番号情報を書き込むように第３アクセス部１６に書き込み指示する。これは、今回の追い出し処理前に第２アドレス正引きテーブル１９Ｂの当該記憶装置アドレス情報に対応していた第２記憶媒体物理アドレス情報と、今回の追い出し処理に伴ってデータを書き込んだ位置を示す第２記憶媒体物理アドレス情報とが異なっていてもよいため、今回の追い出し処理に伴ってデータを書き込んだ位置を示す第２記憶媒体物理アドレス情報に更新するものである。なお、今回の追い出し処理前に第２アドレス正引きテーブル１９Ｂの当該記憶装置アドレス情報に対応していた第２記憶媒体物理アドレス情報と、今回の追い出し処理に伴ってデータを書き込んだ位置を示す第２記憶媒体物理アドレス情報とが同じである場合は、今回の追い出し処理に伴ってデータを書き込んだ位置を示す第２記憶媒体物理アドレス情報に更新する必要はない。
【００４９】
また、追い出し制御部２３は、追い出し対象のデータに対応するキャッシュ上存在フラグ情報ＦＪをキャッシュとして存在しない旨を示す情報に更新する。なお、キャッシュとして存在しない旨を示す情報に更新するのではなく、リードキャッシュとして存在する旨を示す情報に更新してもよい。こうすることで、ライトキャッシュとして第１記憶媒体１７上に記録されていたデータを無効化することなく、リードキャッシュとして使用することができる。
【００５０】
以下、第１記憶媒体１７に対する第１の記録方法と第２の記録方法について説明する。
第１の記録方法と第２の記録方法としては、第１の記録方法によって記録されたデータの信頼性が、第２の記録方法によって記録されたデータの信頼性よりも高くなるような記録方法を採用する。また、第２の記録方法によって記録可能なデータ容量が、第１の記録方法によって記録可能なデータ容量よりも多くなるような記録方法を採用する。このような条件を満たせるような記録方法であれば、第１の記録方法と第２の記録方法には、任意の方法を用いることができる。
【００５１】
ライトキャッシュへのデータの記録には、第２の記録方法で記録された場合よりもデータの信頼性が高い第１の記録方法が適用される。このことで、ライトキャッシュのデータの信頼性を確保できるので、データ記憶装置１１としての信頼性を損なうことはない。一方、リードキャッシュへのデータの記録には、第１の記録方法で記録された場合よりも記録可能なデータ容量が多い第２の記録方法が適用される。このことで、リードキャッシュの記録可能な容量を増やすことができるので、より高いキャッシュのヒット率が見込める。リードキャッシュにデータを記録する際、リードキャッシュのデータに化けが生じた場合であっても、リードキャッシュの元データは第２記憶媒体１８上にあるため、第２記憶媒体１８からデータを再び読み直すことができる。これにより、大容量化とデータアクセスの高速化を両立させつつ、データ記憶時の信頼性を向上させることが可能なデータ記憶装置１１を低コストで実現できるという効果を奏する。
【００５２】
図３（ａ）は、第１実施形態に係るデータ記憶装置の第１の記録方法の一例を示す図、図３（ｂ）は、第１実施形態に係るデータ記憶装置の第２の記録方法の一例を示す図である。
図３（ａ）および図３（ｂ）において、同じデータ長のユーザデータＵＤのビット長ＢＬ１に対して、第１の記録方法では第２の記録方法と比べて相対的に多いビット長ＢＬ２の誤り訂正符号ＣＤ１を割り当てる。一方、第２の記録方法では、第１の記録方法と比べて相対的に少ないビット長ＢＬ３の誤り訂正符号ＣＤ２を割り当てる。
【００５３】
一般に、誤り訂正符号のビット長を多く割り当てると、それだけ誤り訂正能力が向上する。したがって、第１の記録方法によって記録されたデータの信頼性は、第２の記録方法によって記録されたデータの信頼性よりも高くなる。
【００５４】
また、第１記憶媒体１７はある所定の容量であるため、ユーザデータとともに記録する誤り訂正符号の量が少ないほうが、相対的にユーザデータを多く記録できる。従って、第２の記録方法によって記録可能なデータ容量は、第１の記録方法によって記録可能なデータ容量よりも多い。
【００５５】
図４（ａ）は、第１実施形態に係るデータ記憶装置の第１の記録方法のその他の例を示す図、図４（ｂ）は、第１実施形態に係るデータ記憶装置の第２の記録方法のその他の例を示す図、図４（ｃ）は、第１実施形態に係るデータ記憶装置の第２の記録方法のさらにその他の例を示す図である。
図４（ａ）において、複数のデータからパリティデータＰＤを生成する場合、第１の記録方法におけるパリティデータＰＤの生成の元となるデータＤ１〜Ｄ３の個数に対して、第２の記録方法では、図４（ｂ）に示すように、パリティデータＰＤの生成の元となるデータＤ１〜Ｄ６の個数を多くする。あるいは、第２の記録方法では、図４（ｃ）に示すように、データＤ１〜Ｄ３に対してパリティデータＰＤを付加しないようにしてもよい。
【００５６】
一般に、パリティデータＰＤの生成の元となるデータの個数が少ないほどそれだけ誤り訂正能力が向上する。従って、第１の記録方法によって記録されたデータの信頼性は、第２の記録方法によって記録されたデータの信頼性よりも高い。
【００５７】
また、第１記憶媒体１７はある所定の容量であるため、パリティデータＰＤの生成の元となるデータの個数が多いほうがパリティデータを少なくすることができ、相対的にユーザデータを多く記録できる。従って、第２の記録方法によって記録可能なデータ容量は、第１の記録方法によって記録可能なデータ容量よりも多い。
【００５８】
図５（ａ）は、第１実施形態に係るデータ記憶装置の第１の記録方法のさらにその他の例を示す図、図５（ｂ）は、第１実施形態に係るデータ記憶装置の第２の記録方法のさらにその他の例を示す図、図５（ｃ）は、第１実施形態に係るデータ記憶装置の第２の記録方法のさらにその他の例を示す図、図５（ｄ）は、第１実施形態に係るデータ記憶装置の第２の記録方法のさらにその他の例を示す図である。
図５（ａ）において、複数のデータからＲＳ（Ｒｅｅｄ−Ｓｏｌｏｍｏｎ）符号のパリティデータＰＤ１、ＰＤ２を生成する場合、第１の記録方法におけるＲＳ符号のパリティデータＰＤ１、ＰＤ２の生成の元となるデータＤ１〜Ｄ３の個数に対して、第２の記録方法では、図５（ｂ）に示すように、ＲＳ符号のパリティデータＰＤ１、ＰＤ２の生成の元となるデータＤ１〜Ｄ６の個数を多くする。
【００５９】
一般に、ＲＳ符号のパリティデータＰＤ１、ＰＤ２の生成の元となるデータの個数が少ないほどそれだけ誤り訂正能力が向上する。従って、第１の記録方法によって記録されたデータの信頼性は、第２の記録方法によって記録されたデータの信頼性よりも高い。
【００６０】
また、第１記憶媒体１７はある所定の容量であるため、ＲＳ符号のパリティデータＰＤ１、ＰＤ２の生成の元となるデータの個数が多いほうがパリティデータを少なくすることができ、相対的にユーザデータを多く記録できる。従って、第２の記録方法によって記録可能なデータ容量は、第１の記録方法によって記録可能なデータ容量よりも多い。
【００６１】
あるいは、ＲＳ符号よりも誤り訂正能力が低いものの、誤り訂正符号の量が少ない誤り訂正方法を採用してもよい。例えば、図５（ｃ）に示すように、第２の記録方法では、データＤ１〜Ｄ３に図４で示したパリティ方式のパリティデータＰＤを付加してもよい。これは、一般に、ＲＳ符号では２つまでのデータの誤りを訂正できるのに対し、パリティ方式では１つまでのデータの誤りしか訂正できないため、ＲＳ符号よりもパリティの方が誤り訂正能力が低いからである。一方で、パリティデータの生成の元になるデータの個数が同じ場合は、パリティ方式の方がＲＳ符号よりもパリティデータを少なくすることができ、相対的にユーザデータを多く記録できる。従って、第２の記録方法によって記録可能なデータ容量は、第１の記録方法によって記録可能なデータ容量よりも多い。あるいは、第２の記録方法では、図５（ｄ）に示すように、データＤ１〜Ｄ３に対してＲＳ符号のパリティデータＰＤ１、ＰＤ２を付加しないようにしてもよい。
【００６２】
図６（ａ）は、第１実施形態に係るデータ記憶装置の第１の記録方法のさらにその他の例を示す図、図６（ｂ）は、第１実施形態に係るデータ記憶装置の第２の記録方法のさらにその他の例を示す図、図６（ｃ）は、第１実施形態に係るデータ記憶装置の第２の記録方法のさらにその他の例を示す図である。
図６（ａ）において、第１の記録方法は１ビット／セルの記録方法である。１ビット／セルの記録方法では、メモリセルからの読み出し時の電位分布がＬＡまたはＬＢに設定される。すなわち、電位分布ＬＡに‘１’、電位分布ＬＢに‘０’を割り当てることで１ビット／セルを実現できる。これに対して、第２の記録方法は、図６（ｂ）に示すように、２ビット／セルの記録方法である。２ビット／セルの記録方法では、メモリセルからの読み出し時の電位分布がＬＡ〜ＬＤに設定される。すなわち、電位分布ＬＡに‘１１’、電位分布ＬＢに‘１０’、電位分布ＬＣに‘０１’、電位分布ＬＤに‘００’を割り当てることで２ビット／セルを実現できる。あるいは、第２の記録方法は、図６（ｃ）に示すように、３ビット／セルの記録方法を採用してもよい。３ビット／セルの記録方法では、メモリセルからの読み出し時の電位分布がＬＡ〜ＬＨに設定される。すなわち、電位分布ＬＡに‘１１１’、電位分布ＬＢに‘１１０’、電位分布ＬＣに‘１００’、電位分布ＬＤに‘１０１’、電位分布ＬＥに‘００１’、電位分布ＬＦに‘０００’、電位分布ＬＧに‘０１０’、電位分布ＬＨに‘０１１’を割り当てることで３ビット／セルを実現できる。
【００６３】
一般に、メモリセルあたりの記憶ビット数が少ないほど、閾値の範囲がある程度広く設定されても許容されるため、記録されるデータの信頼性が高い。従って、第１の記録方法によって記録されたデータの信頼性は、第２の記録方法によって記録されたデータの信頼性よりも高い。
【００６４】
また、第１記憶媒体１７のメモリセルの総量はある所定の個数であるため、メモリセルあたりの記録ビット数が多いほうが、相対的にユーザデータを多く記録できる。従って、第２の記録方法によって記録可能なデータ容量は、第１の記録方法によって記録可能なデータ容量よりも多い。
【００６５】
あるいは、第１の記録方法に２ビット／セルの記録方法を採用し、第２の記録方法に３ビット／セルの記録方法を採用してもよい。また、上述した具体例の記録方法を、任意に組み合わせてもよい。
【００６６】
図７は、第１実施形態に係るデータ記憶装置の書込処理を示すフローチャートである。
図７において、ステップＳ１では、ホストインタフェース部１２は、書き込み命令または読み込み命令を含む命令をホスト２０から受け付ける。受け付けた命令が書き込み命令であったときは、受け付けた書き込み命令を書込制御部２１に転送する。
【００６７】
書込制御部２１は、ホストインタフェース部１２から書き込み命令を受け取ると、受け取った書き込み命令から、記憶装置アドレス情報及びライトデータを抽出する。
【００６８】
ステップＳ２では、書込制御部２１は、抽出したライトデータを第１記憶媒体１７にキャッシュするべきか否か判断する。キャッシュするべきでないと判断した場合（ステップＳ２でＮｏの場合）、ステップＳ３に進む。ステップＳ３では、書込制御部２１は、抽出したライトデータの書込み先になるトラック番号情報とセクタ番号情報を第２アドレス正引きテーブル１９Ｂから取得する（読み込む）ように第３アクセス部１６に指示する。第３アクセス部１６は、管理情報記憶部１９が記憶する情報から指示された情報を読み込み、書込制御部２１に送信する。書込制御部２１は、抽出したライトデータの書込み先となる第２記憶媒体１８のトラック番号情報とセクタ番号情報を第３アクセス部１６から取得する。
【００６９】
ステップＳ４では、書込制御部２１は、取得したトラック番号情報とセクタ番号情報に対応する第２記憶媒体の領域に、抽出したライトデータを書き込むように第２アクセス部１５に書き込み指示する。第２アクセス部１５は、第２記憶媒体１８の指示された領域に書き込み指示されたデータを書き込む。
【００７０】
ステップＳ５では、書込制御部２１は、抽出した記憶装置アドレス情報に対応する第２記憶媒体物理アドレス情報に、取得したトラック番号情報とセクタ番号情報を書き込むように第３アクセス部１６に書き込み指示する。第３アクセス部１６は、管理情報記憶部１９が記憶する情報の指示された領域に、書き込み指示された情報を書き込む。
【００７１】
一方、キャッシュするべきと判断した場合（ステップＳ２でＹｅｓの場合）、ステップＳ６に進む。ステップＳ６では、書込制御部２１は、抽出したライトデータの書込み先になるキャッシュ先情報を第１アドレス正引きテーブル１９Ａから取得するように第３アクセス部１６に読み込み指示する。第３アクセス部１６は、管理情報記憶部１９が記憶する情報から、読み込み指示された情報を読み込み、書込制御部２１に送信する。書込制御部２１は、抽出したライトデータの書込み先になるキャッシュ先情報を第３アクセス部１６から取得する。
【００７２】
ステップＳ７では、書込制御部２１は、取得したキャッシュ先情報に対応する第１記憶媒体１７の領域に、抽出したライトデータを第１の記録方法で書き込むように第１アクセス部１４に指示する。第１アクセス部１４は、第１記憶媒体１７の指示された領域に、第１の記録方法で指示されたデータを書き込む。
【００７３】
ステップＳ８では、書込制御部２１は、抽出した記憶装置アドレス情報から変換された論理アドレスに対応するキャッシュアドレス情報がライトデータの書込み先を示すように第３アクセス部１６に指示する。第３アクセス部１６は、管理情報記憶部１９が記憶する情報の指示された領域に、指示された情報を書き込む。
【００７４】
図８は、第１実施形態に係るデータ記憶装置の読込処理を示すフローチャートである。
図８において、ステップＳ１１では、ホストインタフェース部１２は、ホスト２０から、書き込み命令または読み込み命令を含む命令を受け付ける。ホストインタフェース部１２は、受け付けた命令が読み込み命令であったときは、受け付けた読み込み命令を読込制御部２２に転送する。
【００７５】
読込制御部２２は、ホストインタフェース部１２から読み込み命令を受け取ると、受け取った読み込み命令から記憶装置アドレス情報を抽出する。読込制御部２２は、抽出した記憶装置アドレス情報を論理アドレス情報に変換する。
【００７６】
読込制御部２２は、変換した論理アドレス情報に対応するキャッシュ上存在フラグ情報ＦＪを読み込むように、第３アクセス部１６に指示する。第３アクセス部１６は、管理情報記憶部１９が記憶する情報から指示された情報を読み込み、読込制御部２２に送信する。読込制御部２２は、キャッシュ上存在フラグ情報ＦＪを取得する。
【００７７】
ステップＳ１２では、読込制御部２２は、変換した論理アドレスのデータがキャッシュされているか否かを、取得したキャッシュ上存在フラグ情報ＦＪから判断する。
【００７８】
論理アドレスのデータがキャッシュされている場合（ステップＳ１２がＹｅｓの場合）、ステップＳ１３に進む。ステップＳ１３では、読込制御部２２は、変換した論理アドレス情報に対応するキャッシュ先情報を読み込むように第３アクセス部１６に指示する。第３アクセス部１６は、指示された情報を管理情報記憶部１９が記憶する情報から読み込み、読込制御部２２に送信する。読込制御部２２は、キャッシュ先情報を取得する。
【００７９】
ステップＳ１４では、読込制御部２２は、変換した論理アドレスのデータがライトキャッシュされているかリードキャッシュされているかを、取得したキャッシュ上存在フラグ情報ＦＪから判断する。
【００８０】
ステップＳ１４でライトキャッシュされていると判断した場合、ステップＳ１５に進む。ステップＳ１５では、読込制御部２２は、取得したキャッシュ先情報が示す領域から、第１の記録方法で記録されているデータを読み込む方法に従ってデータを読み込むように第１アクセス部１４に指示する。第１アクセス部１４は、第１の記録方法で記録されているデータを読み込む方法に従って指示されたデータを第１記憶媒体１７の指示された領域から読み込み、読込制御部２２に送信する。読込制御部２２は、読み込んだデータを取得し、ステップＳ２３に進む。
【００８１】
ステップＳ１４でリードキャッシュされていると判断した場合、ステップＳ１６に進む。ステップＳ１６では、読込制御部２２は、取得したキャッシュ先情報が示す領域から、第２の記録方法で記録されているデータを読み込む方法に従ってデータを読み込むように第１アクセス部１４に指示する。第１アクセス部１４は、第２の記録方法で記録されているデータを読み込む方法に従って指示されたデータを第１記憶媒体１７の指示された領域から読み込み、読込制御部２２に送信する。読込制御部２２は、読み込んだデータを取得し、ステップＳ２３に進む。
【００８２】
論理アドレスのデータがキャッシュされていない場合（ステップＳ１２がＮｏの場合、ステップＳ１７に進む。ステップＳ１７では、読込制御部２２は、抽出した記憶装置アドレス情報に対応する第２記憶媒体物理アドレス情報であるトラック番号情報とセクタ番号情報を読み込むように、第３アクセス部１６に指示する。第３アクセス部１６は、指示された情報を管理情報記憶部１９が記憶する情報から読み込み、読込制御部２２に送信する。読込制御部２２は、トラック番号情報とセクタ番号情報を取得する。
【００８３】
ステップＳ１８では、読込制御部２２は、取得したトラック番号情報とセクタ番号情報が示す領域からデータを読み込むように第２アクセス部１５に指示する。第２アクセス部１５は、指示されたデータを第２記憶媒体１８の指示された領域から読み込み、読込制御部２２に送信する。読込制御部２２は、読み込んだデータを取得する。
【００８４】
ステップＳ１９では、読込制御部２２は、読み込んだデータを第１記憶媒体１７にリードキャッシュするべきか否かを判断する。リードキャッシュしない場合（ステップＳ１９がＮｏの場合）、ステップＳ２３に進む。
【００８５】
リードキャッシュする場合（ステップＳ１９がＹｅｓの場合）、ステップＳ２０に進む。ステップＳ２０では、読込制御部２２は、第２記憶媒体１８から読み込んだデータの書込み先になるキャッシュ先情報を取得するように、第３アクセス部１６に指示する。第３アクセス部１６は、指示された情報を管理情報記憶部１９が記憶する情報から読み込み、読込制御部２２に送信する。読込制御部２２は、第２記憶媒体１８から読み込んだデータの書込み先になるキャッシュ先情報を第３アクセス部１６から取得する。
【００８６】
ステップＳ２１では、読込制御部２２は、取得したキャッシュ先情報に対応する領域に、第２記憶媒体１８から読み込んだデータを第２の記録方法で書き込むように第１アクセス部１４に指示する。第１アクセス部１４は、第２の記録方法で書き込み指示されたデータを第１記憶媒体１７の指示された領域に書き込む。
【００８７】
ステップＳ２２では、読込制御部２２は、変換した論理アドレスに対応するキャッシュアドレス情報ＡＪが第２記憶媒体１８から読み込んだデータの書込み先を示すように第３アクセス部１６に書き込み指示する。第３アクセス部１６は、管理情報記憶部１９が記憶する情報の指示された領域に書き込み指示された情報を書き込む。
【００８８】
ステップＳ２３では、読込制御部２２は、必要に応じて、データのヒット率などの更新を行うために、管理情報記憶部１９が記憶する管理情報を更新するように、第３アクセス部１６に書き込み指示してもよい。第３アクセス部１６は、管理情報記憶部１９が記憶する情報の指示された領域に、書き込み指示された情報を書き込む。
【００８９】
ステップＳ２４では、読込制御部２２は、第１記憶媒体１７から読み込んだデータまたは第２記憶媒体１８から読み込んだデータを、ホストインタフェース部１２に送信する。ホストインタフェース部１２は、読込制御部２２からデータを受信すると、受信したデータをホスト２０に転送する。
【００９０】
図９は、第１実施形態に係るデータ記憶装置の追い出し処理を示すフローチャートである。
図９において、ステップＳ３１では、追い出し制御部２３は、予め定められたタイミング、あるいは動的に定められたタイミングで、キャッシュから追い出すデータが存在するか否かを判定する。ステップＳ３１がＮｏの場合、すなわち、キャッシュから追い出すデータが存在しないと判断した場合は、処理を終了する。
【００９１】
キャッシュから追い出すデータが存在する場合（ステップＳ３１がＹｅｓの場合）、ステップＳ３２に進む。ステップＳ３２では、追い出し制御部２３は、追い出し対象のデータがリードキャッシュのデータであるかライトキャッシュのデータであるかを判断する。
【００９２】
ステップＳ３２でリードキャッシュのデータであると判断した場合、ステップＳ３３に進む。ステップＳ３３では、追い出し制御部２３は、追い出し対象のデータに対応するキャッシュ上存在フラグ情報ＦＪを、キャッシュとして存在しない旨を示す情報に更新するように第３アクセス部１６に書き込み指示する。第３アクセス部１６は、管理情報記憶部１９が記憶する情報の指示された領域に、書き込み指示された情報を書き込む。ステップＳ３３が終了すると処理を終える。
【００９３】
ステップＳ３２でライトキャッシュのデータであると判断した場合、ステップＳ３４に進む。ステップＳ３４では、追い出し制御部２３は、追い出し対象のデータに対応するキャッシュ先情報を読み込むように、第３アクセス部１６に読み込み指示する。第３アクセス部１６は、管理情報記憶部１９が記憶する情報から、読み込み指示された情報を読み込み、追い出し制御部２３に送信する。追い出し制御部２３は、キャッシュ先情報を取得する。
【００９４】
ステップＳ３５では、追い出し制御部２３は、取得したキャッシュ先情報が示す領域から、第１の記録方法で記録されているデータを読み込む方法に従ってデータを読み込むように第１アクセス部１４に指示する。第１アクセス部１４は、第１の記録方法で記録されているデータを読み込む方法に従って読み込み指示されたデータを第１記憶媒体１７の指示された領域から読み込み、追い出し制御部２３に送信する。追い出し制御部２３は、読み込んだデータを取得する。
【００９５】
ステップＳ３６では、追い出し制御部２３は、読み込んだデータの書込み先になるトラック番号情報とセクタ番号情報を取得するように、第３アクセス部１６に読み込み指示する。第３アクセス部１６は、読み込み指示された情報を管理情報記憶部１９が記憶する情報から読み込み、追い出し制御部２３に送信する。追い出し制御部２３は、読み込んだデータの書込み先となるトラック番号情報とセクタ番号情報を第３アクセス部１６から取得する。
【００９６】
ステップＳ３７では、追い出し制御部２３は、取得したトラック番号情報とセクタ番号情報に対応する領域に、読み込んだデータを書き込むように第２アクセス部１５に指示する。第２アクセス部１５は、書き込み指示されたデータを第２記憶媒体１８の指示された領域に書き込む。
【００９７】
ステップＳ３８では、追い出し制御部２３は、追い出し対象のデータに対応する記憶装置アドレス情報に対応する第２記憶媒体物理アドレス情報に、取得したトラック番号情報とセクタ番号情報を書き込むように、第３アクセス部１６に指示する。第３アクセス部１６は、書き込み指示された情報を管理情報記憶部１９が記憶する情報の指示された領域に書き込む。
【００９８】
また、追い出し制御部２３は、追い出し対象のデータに対応するキャッシュ上存在フラグ情報ＦＪを、キャッシュとして存在しない旨を示す情報に更新する。第３アクセス部１６は、書き込み指示された情報を管理情報記憶部１９が記憶する情報の指示された領域に書き込む。
【００９９】
すなわち、以上説明したように、ここで、ライトキャッシュでは第１記憶媒体１７に第１の記録方法でライトデータを記録することで、第１記憶媒体１７の信頼性を向上することができる。また、リードキャッシュでは第１記憶媒体１７に第２の記録方法でリードデータを記録することで、データ記憶装置全体としての信頼性を落とすことなく、記憶容量を増やすことができるため、結果としてキャッシュのヒット率が向上し、データアクセスの高速化が可能になる。
【０１００】
（第２実施形態）
図１０は、第２実施形態に係るデータ記憶装置の概略構成を示すブロック図である。
図１０において、データ記憶装置には、複数の磁気ディスク３２、３３が設けられ、磁気ディスク３２の両面にはディスク面Ｍ０、Ｍ１がそれぞれ設けられ、磁気ディスク３３の両面にはディスク面Ｍ２、Ｍ３がそれぞれ設けられている。そして、磁気ディスク３２、３３はスピンドル４１を介して一体的に支持されている。
【０１０１】
データ記憶装置には、ディスク面Ｍ０〜Ｍ３ごとに磁気ヘッドＨ０〜Ｈ３が設けられ、磁気ヘッドＨ０〜Ｈ３は、ディスク面Ｍ０〜Ｍ３にそれぞれ対向するように配置されている。ここで、磁気ヘッドＨ０〜Ｈ３はアームＡ０〜Ａ３をそれぞれ介してディスク面Ｍ０〜Ｍ３上にそれぞれ保持されている。アームＡ０〜Ａ３は、磁気ヘッドＨ０〜Ｈ３を水平面内でそれぞれスライドさせることができる。
【０１０２】
また、データ記憶装置には、アームＡ０〜Ａ３を駆動するボイスコイルモータ３４が設けられるとともに、スピンドル４１を介して磁気ディスク３２、３３を回転させるスピンドルモータ４０が設けられている。そして、磁気ディスク３２、３３、磁気ヘッドＨ０〜Ｈ３、アームＡ０〜Ａ３、ボイスコイルモータ３４、スピンドルモータ４０およびスピンドル４１は、ケース３１に収容されている。
【０１０３】
データ記憶装置には磁気記録制御部３５が設けられ、磁気記録制御部３５には、ヘッド制御部３６、パワー制御部３７、リードライトチャネル３８およびハードディスク制御部３９が設けられている。ヘッド制御部３６には、ライト電流制御部３６Ａおよび再生信号検出部３６Ｂが設けられている。パワー制御部３７には、スピンドルモータ制御部３７Ａおよびボイスコイルモータ制御部３７Ｂが設けられている。
【０１０４】
ヘッド制御部３６は、記録再生時における信号を増幅する。ライト電流制御部３６Ａは、磁気ヘッドＨ０〜Ｈ３に流れるライト電流を制御する。再生信号検出部３６Ｂは、磁気ヘッドＨ０〜Ｈ３にて読み出された信号を検出する。パワー制御部３７は、ボイスコイルモータ３４およびスピンドルモータ４０を駆動する。スピンドルモータ制御部３７Ａは、スピンドルモータ４０の回転を制御する。ボイスコイルモータ制御部３７Ｂは、ボイスコイルモータ３４の駆動を制御する。リードライトチャネル３８は、磁気ヘッドＨ０〜Ｈ３にて再生される信号をホスト４７で扱われるデータ形式に変換したり、ホスト４７から出力されるデータを磁気ヘッドＨ０〜Ｈ３にて記録される信号形式に変換したりする。このような形式変換としては、ＤＡ変換や符号化を挙げることができる。また、リードライトチャネル３８は、磁気ヘッドＨ０〜Ｈ３にて再生された信号のデコード処理を行ったり、ホスト４７から出力されるデータをコード変調したりする。ハードディスク制御部３９は、システムコントローラ４３からの指令に基づいて記録再生制御を行ったり、システムコントローラ４３とリードライトチャネル３８との間でデータの受け渡しを行ったりすることができる。
【０１０５】
また、データ記憶装置には、ホストインタフェース部４２、システムコントローラ４３、ＤＲＡＭ４４、ＮＡＮＤコントローラ４５およびＮＡＮＤメモリ４６が設けられている。ホストインタフェース部４２は、書き込み命令及び読み込み命令を含む命令をホスト４７から受け付けたり、磁気ディスク３２、３３またはＮＡＮＤメモリ４６から読み出されたリードデータをホスト４７に出力したりすることができる。このホストインタフェース部４２はホスト４７に接続されている。なお、ホスト４７としては、書き込み指示や読み出し指示を磁気ディスク装置に行うパーソナルコンピュータであってもよいし、外部インタフェースであってもよい。
【０１０６】
ＮＡＮＤメモリ４６は、磁気ディスク３２、３３よりも書き換え可能回数が少ないが、ランダムアクセス性能では磁気ディスク３２、３３よりも優れる。ここで、ＮＡＮＤメモリ４６は、磁気ディスク３２、３３のキャッシュとして用いられる。なお、ＮＡＮＤメモリ４６は図１の第１記憶媒体１７、磁気ディスク３２、３３は図１の第２記憶媒体１８に用いることができる。
ＮＡＮＤコントローラ４５はＮＡＮＤメモリ４６の制御を行うことができる。なお、ＮＡＮＤメモリ４６の制御としては、例えば、ＮＡＮＤメモリ４６の読み書き制御、ブロック選択、誤り訂正、ウェアレベリングなどを挙げることができる。
ＤＲＡＭ４４は、ＮＡＮＤメモリ４６から読み出されたリードデータをホスト４７に転送したり、ＮＡＮＤメモリ４６に書き込まれるライトデータをホスト４７から受け取ったりするためのバッファとして用いることができる。
システムコントローラ４３は、磁気ディスク３２、３３にデータを読み書きさせるための指令をハードディスク制御部３９に送ったり、ＮＡＮＤメモリ４６にデータを読み書きさせるための指令をＮＡＮＤコントローラ４５に送ったりする。ここで、システムコントローラ４３は、ＮＡＮＤメモリ４６にライトデータを第１の記録方法で記録させたり、磁気ディスク３２、３３から読み出されたリードデータを第１の記録方法よりも信頼性の低い第２の記録方法でＮＡＮＤメモリ４６に記録させたりする。なお、システムコントローラ４３、リードライトチャネル３８、ハードディスク制御部３９、ホストインタフェース部４２およびＮＡＮＤコントローラ４５は、例えば、ＳｏＣ（システムオンチップ）として構成することができる。システムコントローラ４３の処理は、ＣＰＵで実行されるファームウェアにより実現することができる。また、システムコントローラ４３は、第１の記録方法または第２の記録方法で記録されたデータを管理し、図１の管理情報はＤＲＡＭ４４に保持される。
【０１０７】
また、第１の記録方法および第２の記録方法については、例えば、図３から図６に示したいずれかの方法を用いることができる。なお、第１の記録方法および第２の記録方法による読み書き処理はＮＡＮＤコントローラ４５が行ってもよい。
【０１０８】
そして、磁気ディスク３２、３３に読み書きが行われる場合、スピンドルモータ４０により磁気ディスク３２、３３が回転されながら、磁気ヘッドＨ０〜Ｈ３の何れかを介してディスク面Ｍ０〜Ｍ３の何れかから信号が読み出され、再生信号検出部３６Ｂにて検出される。再生信号検出部３６Ｂにて検出された信号は、リードライトチャネル３８にてデータ変換された後、ハードディスク制御部３９に送られる。そして、ハードディスク制御部３９において、再生信号検出部３６Ｂにて検出された信号に含まれるバーストパターンに基づいて磁気ヘッドＨ０〜Ｈ３の何れかのトラッキング制御が行われる。また、再生信号検出部３６Ｂにて検出された信号に含まれるセクタ／シリンダ情報に基づいて磁気ヘッドＨ０〜Ｈ３の何れかの現在位置が算出され、磁気ヘッドＨ０〜Ｈ３が目標位置に近づくようにシーク制御が行われる。
【０１０９】
一方、ＮＡＮＤメモリ４６に書き込みを行う場合、ＮＡＮＤコントローラ４５は、ホスト４７から供給されたライトデータをＤＲＡＭ４４に一旦格納してもよい。ＮＡＮＤコントローラ４５は、ＤＲＡＭ４４に格納されたライトデータをＮＡＮＤメモリ４６に転送し、ＮＡＮＤメモリ４６にライトデータを書き込む。
【０１１０】
また、ＮＡＮＤメモリ４６から読み出しを行う場合、ＮＡＮＤコントローラ４５は、ＮＡＮＤメモリ４６からリードデータを読み出し、ＤＲＡＭ４４に一旦格納してもよい。ＮＡＮＤコントローラ４５は、ＤＲＡＭ４４に格納された読み出しデータをホスト４７に転送する。
【０１１１】
ここで、システムコントローラ４３は、ホスト４７から書き込み指示を受け取った場合、書き込み指示で与えられるライトデータをＮＡＮＤメモリ４６にキャッシュさせるかどうかを判断する。そして、そのライトデータをキャッシュさせる場合には、そのライトデータをＮＡＮＤメモリ４６に第１の記録方法で記録させるようにＮＡＮＤコントローラ４５に指示する。一方、そのライトデータをキャッシュさせない場合には、そのライトデータを磁気ディスク３２、３３に記録させるようにハードディスク制御部３９に指示する。
【０１１２】
一方、システムコントローラ４３は、ホスト４７から読み込み指示を受け取った場合、読み込み指示で指定されたリードデータがキャッシュにあるかどうかを判断する。そして、その読み込み指示で指定されたリードデータがキャッシュにない場合、そのリードデータを磁気ディスク３２、３３から読み出すようにハードディスク制御部３９に指示する。そして、システムコントローラ４３は、磁気ディスク３２、３３から読み出されたリードデータをキャッシュさせるかどうかを判断する。そして、そのリードデータをキャッシュさせる場合には、そのリードデータをＮＡＮＤメモリ４６に第２の記録方法で記録させるようにＮＡＮＤコントローラ４５に指示する。
【０１１３】
すなわち、以上説明したように、データ記憶装置がホスト４７からの書き込み命令を受け付けた時には、その書き込み命令で書き込まれるライトデータは磁気ディスク３２、３３に記録されていない。したがって、ライトキャッシュではＮＡＮＤメモリ４６に第１の記録方法でライトデータを記録することで、ＮＡＮＤメモリ４６の信頼性を向上することができる。一方、データ記憶装置がホスト４７からの読み込み命令を受け付けた結果、磁気ディスク３２、３３に記録されているデータをＮＡＮＤメモリ４６に書き込みした場合は、その読み込み命令で読み込まれるリードデータはＮＡＮＤメモリ４６にも磁気ディスク３２、３３にも記録されている。このため、リードデータをＮＡＮＤメモリ４６に記録した後、ＮＡＮＤメモリ４６に記録したリードデータが破壊された場合であっても、そのリードデータを磁気ディスク３２、３３から再度読み込むことができる。したがって、リードキャッシュではデータ記憶装置全体としての信頼性を落とすことなく、記憶容量を増やすことができるため、結果としてキャッシュのヒット率が向上し、データアクセスの高速化が可能になる。
【０１１４】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【０１１５】
１１  データ記憶装置、１２  ホストインタフェース部、１３  コントローラ、１４  第１アクセス部、１５  第２アクセス部、１６  第３アクセス部、１７  第１記憶媒体、１８  第２記憶媒体、１９  管理情報記憶部、２０  ホスト、２１  書込制御部、２２  読込制御部、２３  追い出し制御部、１９Ａ  第１アドレス正引きテーブル、１９Ｂ  第２アドレス正引きテーブル
【図１】
2014211800.tif 000003
【図２】
2014211800.tif 000004
【図３】
2014211800.tif 000005
【図４】
2014211800.tif 000006
【図５】
2014211800.tif 000007
【図６】
2014211800.tif 000008
【図７】
2014211800.tif 000009
【図８】
2014211800.tif 000010
【図９】
2014211800.tif 000011
【図１０】
2014211800.tif 000012