(57)【要約】  ヘッドをディスク媒体の任意の位置に移動するヘッドアクチュエータと、ヘッドによりディスク媒体にデータを記録又は再生するディスク記録再生部と、不揮発メモリに対し情報を記録又は再生する不揮発メモリ制御部と、バッファメモリに対し情報を記録再生するバッファ制御部と、上位装置との間で命令及びデータを送受する上位インタフェース制御部と、ディスク記録再生部、不揮発メモリ制御部及び上位インタフェース制御部の間でデータ転送パスを切替える転送パス切替部とを備える。アクセス制御部は、不揮発メモリからデータを読み出すデータ読出命令を上位装置から受信した際に、転送パス切替部を制御して不揮発メモリから読出したデータを上位装置に転送すると同時にバッファメモリに転送してキャッシュ領域に格納する。
2008149453.tif 000002
【特許請求の範囲】
【請求項１】
ヘッドをディスク媒体の任意の位置に移動するヘッドアクチュエータと、
前記ヘッドによりディスク媒体にデータを記録又は再生するディスク記録再生部と、
不揮発メモリに対し情報を書き込み又は読み出す不揮発メモリ制御部と、
バッファメモリに対し情報を書き込み又は読み出すバッファ制御部と、
上位装置との間で命令及びデータを送受する上位インタフェース制御部と、
前記ディスク記録再生部、前記不揮発メモリ制御部及び前記上位インタフェース制御部の間でデータ転送パスを切替える転送パス切替部と、
前記不揮発メモリからデータを読み出すデータ読出命令を前記上位装置から受信した際に、前記転送パス切替部を制御して前記不揮発メモリから読出したデータを前記上位装置に転送すると同時に前記バッファメモリに転送してキャッシュ領域に格納する制御を行うアクセス制御部と、
を備えたことを特徴とする記憶装置。
【請求項２】
請求項１記載の記憶装置に於いて、前記転送パス切替部は、
前記不揮発メモリから読み出したデータを前記上位インタフェース制御部側と前記バッファ制御部側に２分岐して同時転送させる分岐パスアクセス制御部と、
前記分岐パスアクセス制御部と前記上位インタフェースとの間に配置した第１ＦＩＦＯと、
前記分岐パスアクセス制御部と前記バッファ制御部との間に配置した第２ＦＩＦＯと、
前記第１ＦＩＦＯと前記バッファ制御部との間の転送パス、前記第２ＦＩＦＯと前記ディスク記録再生部との間の転送パス、又は前記バッファ制御部と前記ディスク記録再生部との間の転送パスのいずれか１つを切替選択するアービタと、
を備えたことを特徴とする記憶装置。
【請求項３】
請求項２記載の記憶装置に於いて、前記第１ＦＩＦＯ及び第２ＦＩＦＯの記憶容量を、前記バッファメモリに対する単位書込データサイズの少なくとも２倍の記憶容量としたことを特徴とする記憶装置。
【請求項４】
請求項１記載の記憶装置に於いて、前記アクセス制御部は、前記不揮発メモリからデータを読み出すデータ読出命令を前記上位装置から受信した際に、前記バッファメモリのキャッシュ領域に該当するデータがあるかどうかを検索し、前記キャッシュ領域に該当するデータが存在した場合、前記キャッシュ領域のデータを読み出して前記上位装置に転送することを特徴とする記憶装置。
【請求項５】
請求項１記載の記憶装置に於いて、前記アクセス制御部は、前記不揮発メモリから前記ディスク媒体への書戻し命令を前記上位装置から受信した際又は前記アクセス制御部自身で書戻し要求を発生した際に、前記バッファメモリのキャッシュ領域に該当するデータがあるかどうかを検索し、前記キャッシュ領域に該当するデータが存在した場合、前記キャッシュ領域のデータを読み出して前記ディスク媒体に書き戻すことを特徴とする記憶装置。
【請求項６】
請求項５記載の記憶装置に於いて、前記アクセス制御部は、前記キャッシュ領域からデータを前記ディスク媒体に書き戻している間の前記バッファメモリの読出し空き時間を利用して前記不揮発メモリから前記バッファメモリのキャッシュ領域へキャッシュしていないデータを転送して格納することを特徴とする記憶装置。
【請求項７】
ヘッドによりディスク媒体にデータを記録又は再生するディスク記録再生部と、
不揮発メモリに対し情報を書き込み又は読み出す不揮発メモリ制御部と、
バッファメモリに対し情報を書き込み又は読み出すバッファ制御部と、
上位装置との間で命令及びデータを送受する上位インタフェース制御部と、
前記ディスク記録再生部、前記不揮発メモリ制御部及び前記上位インタフェース制御部の間でデータ転送パスを切替える転送パス切替部と、
前記不揮発メモリからデータを読み出すデータ読出命令を前記上位装置から受信した際に、前記転送パス切替部を制御して前記不揮発メモリから読出したデータを前記上位装置に転送すると同時に前記バッファメモリに転送してキャッシュ領域に格納する制御を行うアクセス制御部と、
を備えたことを特徴とする記憶制御装置。
【請求項８】
請求項７記載の記憶制御装置に於いて、前記転送パス切替部は、
前記不揮発メモリから読み出したデータを前記上位インタフェース制御部側と前記バッファ制御部側に２分岐して同時転送させる分岐パスアクセス制御部と、
前記分岐パスアクセス制御部と前記上位インタフェースとの間に配置した第１ＦＩＦＯと、
前記分岐パスアクセス制御部と前記バッファ制御部との間に配置した第２ＦＩＦＯと、
前記第１ＦＩＦＯと前記バッファ制御部との間の転送パス、前記第２ＦＩＦＯと前記ディスク記録再生部との間の転送パス、又は前記バッファ制御部と前記ディスク記録再生部との間の転送パスのいずれか１つを切替選択するアービタと、
を備えたことを特徴とする記憶制御装置。
【請求項９】
請求項８記載の記憶制御装置に於いて、前記第１ＦＩＦＯ及び第２ＦＩＦＯの記憶容量を、前記バッファメモリに対する単位書込データサイズの少なくとも２倍の記憶容量としたことを特徴とする記憶制御装置。
【請求項１０】
請求項７記載の記憶制御装置に於いて、前記アクセス制御部は、前記不揮発メモリからデータを読み出すデータ読出命令を前記上位装置から受信した際に、前記バッファメモリのキャッシュ領域に該当するデータがあるかどうかを検索し、前記キャッシュ領域に該当するデータが存在した場合、前記キャッシュ領域のデータを読み出して前記上位装置に転送することを特徴とする記憶制御装置。
【請求項１１】
請求項７記載の記憶制御装置に於いて、前記アクセス制御部は、前記不揮発メモリから前記ディスク媒体への書戻し命令を前記上位装置から受信した際又は前記アクセス制御部自身で書戻し要求を発生した際に、前記バッファメモリのキャッシュ領域に該当するデータがあるかどうかを検索し、前記キャッシュ領域に該当するデータが存在した場合、前記キャッシュ領域のデータを読み出して前記ディスク媒体に書き戻すことを特徴とする記憶制御装置。
【請求項１２】
請求項１１記載の記憶制御装置に於いて、前記アクセス制御部は、前記キャッシュ領域からデータを前記ディスク媒体に書き戻している間の前記バッファメモリの読出し空き時間を利用して前記不揮発メモリから前記バッファメモリのキャッシュ領域へキャッシュしていないデータを転送して格納することを特徴とする記憶制御装置。
【請求項１３】
ヘッドをディスク媒体の任意の位置に移動するヘッドアクチュエータと、
前記ヘッドによりディスク媒体にデータを記録又は再生するディスク記録再生部と、
不揮発メモリに対し情報を書き込み又は読み出す不揮発メモリ制御部と、
バッファメモリに対し情報を書き込み又は読み出すバッファ制御部と、
上位装置との間で命令及びデータを送受する上位インタフェース制御部と、
前記ディスク記録再生部、前記不揮発メモリ制御部及び前記上位インタフェース制御部の間でデータ転送パスを切替える転送パス切替部と、
を備えた記憶装置の制御方法に於いて、
前記不揮発メモリからデータを読み出すデータ読出命令を前記上位装置から受信した際に、前記転送パス切替部を制御して前記不揮発メモリから読出したデータを前記上位装置に転送すると同時に前記バッファメモリに転送してキャッシュ領域に格納することを特徴とする記憶装置の制御方法。
【請求項１４】
請求項１３記載の記憶装置の制御方法に於いて、前記転送パス切替部は、
前記不揮発メモリから読み出したデータを前記上位インタフェース制御部側と前記バッファ制御部側に２分岐して同時転送させる分岐パスアクセス制御部と、
前記分岐パスアクセス制御部と前記上位インタフェースとの間に配置した第１ＦＩＦＯと、
前記分岐パスアクセス制御部と前記バッファ制御部との間に配置した第２ＦＩＦＯと、
前記第１ＦＩＦＯと前記バッファ制御部との間の転送パス、前記第２ＦＩＦＯと前記ディスク記録再生部との間の転送パス、又は前記バッファ制御部と前記ディスク記録再生部との間の転送パスのいずれか１つを切替選択するアービタと、
を備えたことを特徴とする記憶装置の制御方法。
【請求項１５】
請求項１４記載の記憶装置の制御方法に於いて、前記第１ＦＩＦＯ及び第２ＦＩＦＯの記憶容量を、前記バッファメモリに対する単位書込データサイズの少なくとも２倍の記憶容量としたことを特徴とする記憶装置の制御方法。
【請求項１６】
請求項１３記載の記憶装置の制御方法に於いて、前記不揮発メモリからデータを読み出すデータ読出命令を前記上位装置から受信した際に、前記バッファメモリのキャッシュ領域に該当するデータがあるかどうかを検索し、前記キャッシュ領域に該当するデータが存在した場合、前記キャッシュ領域のデータを読み出して前記上位装置に転送することを特徴とする記憶装置の制御方法。
【請求項１７】
請求項１３記載の記憶装置の制御方法に於いて、前記不揮発メモリから前記ディスク媒体への書戻し命令を前記上位装置から受信した際又は前記アクセス制御部自身で書戻し要求を発生した際に、前記バッファメモリのキャッシュ領域に該当するデータがあるかどうかを検索し、前記キャッシュ領域に該当するデータが存在した場合、前記キャッシュ領域のデータを読み出して前記ディスク媒体に書き戻すことを特徴とする記憶装置の制御方法。
【請求項１８】
請求項１７記載の記憶装置の制御方法に於いて、前記キャッシュ領域からデータを前記ディスク媒体に書き戻している間の前記バッファメモリの読出し空き時間を利用して前記不揮発メモリから前記バッファメモリのキャッシュ領域へキャッシュしていないデータを転送して格納することを特徴とする記憶装置の制御方法。
【請求項１９】
ヘッドをディスク媒体の任意の位置に移動するヘッドアクチュエータと、前記ヘッドによりディスク媒体にデータを記録又は再生するディスク記録再生部と、不揮発メモリに対し情報を書き込み又は読み出す不揮発メモリ制御部と、バッファメモリに対し情報を書き込み又は読み出すバッファ制御部と、上位装置との間で命令及びデータを送受する上位インタフェース制御部とを少なくとも備えた記憶装置の制御ユニットにおいて、
前記ディスク記録再生部、前記不揮発メモリ制御部及び前記上位インタフェース制御部の間でデータ転送パスを切替える制御を行う転送パス切替制御部と、
前記不揮発メモリからデータを読み出すデータ読出命令を前記上位装置から受信した際に、前記転送パス切替制御部を制御して前記不揮発メモリから読出したデータを前記上位装置に転送すると同時に前記バッファに転送してキャッシュ領域に格納する制御を行うアクセス制御部と、
を備えたことを特徴とする記憶装置の制御ユニット。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、磁気ディスクと不揮発メモリを記憶媒体として使用する記憶装置、記憶制御装置及び制御方法に関し、特に、不揮発メモリからの読み出したデータのホスト転送を効率的に行う記憶装置、記憶制御装置及び制御方法に関する。
【背景技術】
【０００２】
近年、不揮発メモリであるフラッシュメモリの記憶容量の増加とコストの低減に伴い磁気ディスク装置にフラッシュメモリを記憶媒体として搭載したハイブリッド記憶装置が知られている（特許文献１）。【０００３】
このようなハイブリッド記憶装置にあっては、磁気ディスクに比べてフラッシュメモリの方がリード、ライトのアクセス時間が短いことから、ホストのＯＳにより高速処理が要求されるランダムデータは不揮発メモリに格納し、連続処理が要求されるストリームデータは磁気ディスクに格納するような使い方をしている。【０００４】
ところで、ハイブリッド記憶装置でホストから不揮発メモリを対象としたリードコマンドを受信した場合、装置のファームウェアは、図１３のタイムチャートに示すようにデータ転送を制御する。図１３（Ｃ）に示すようにホストから不揮発メモリを対象としたリード要求１００−１を受信すると、図１３（Ａ）のように、不揮発メモリにロードコマンドを発行し、不揮発メモリが読出動作が可能な状態となってイネーブルが得られるとロードコマンド終了１０４−１とし、不揮発メモリから転送データ１０６−１１が読み出され、図１３（Ｂ）に示すようにバッファメモリに格納される。続いてバッファメモリから転送データ１０６−１３が読み出されホストに転送データ１０６−１４として転送される。【０００５】
このように従来の不揮発メモリに対するリード要求は、不揮発メモリの読出し速度とホストへの転送速度が異なっていることから、バッファメモリを経由して非同期にデータ転送を行うようにしている。【０００６】
また図１４（Ａ）に示すように、図１３に続いて不揮発メモリの同じデータに対しホストから再リード要求１００−２を受信したとすると、最初のリード要求と同様、図１４（Ａ）のように、不揮発メモリにロードコマンドを発行し、イネーブルが得られたらロードコマンド終了１０４−２とし、不揮発メモリから読み出された転送データ１０６−２１をバッファメモリに転送データ１０６−２２として格納した後、バッファメモリから転送データ１０６−２３として読出し、ホストに転送データ１０６−２４として転送している。【０００７】
また不揮発メモリに格納したデータについては、必要に応じて磁気ディスクに書き戻す場合がある。この書き戻しは、ホストからの書き戻し命令や、ファームウェアによる不揮発メモリの空き領域の確保のための書き戻し要求により行われる。【０００８】
図１５に示すように、書戻し要求１０８に対し該当データが不揮発メモリに存在する不揮発メモリヒット１１０を判別すると、図１５（Ａ）のように、不揮発メモリにロードコマンド１１２を発行し、イネーブルが得られたらロードコマンド終了１１４とし、不揮発メモリから読み出された転送データ１０６−３１を図１５（Ｂ）のようにバッファメモリに転送データ１０６−３２として格納した後、バッファメモリから転送データ１０６−３３として読出し、図１５（Ｄ）のように転送データ１０６−３４として磁気ディスクに書き戻している。【０００９】
この書き戻しの場合にも、不揮発メモリの読出し速度と磁気ディスクへの書込み速度が異なることから、バッファメモリを経由して非同期にデータ転送を行うようにしている。
【特許文献１】特開２００５−２０９１１９号公報
【特許文献２】特開２００３−２３３５２９号公報
【発明の開示】
【発明が解決しようとする課題】
【００１０】
しかしながら、このような従来のハイブリッド記憶装置にあっては、不揮発メモリから読み出したデータをホストに転送する際に、バッファメモリを経由してホストに転送しており、バッファメモリを経由する分、ホストへの読出しデータの転送に時間がかかるという問題がある。【００１１】
また不揮発メモリのデータを磁気ディスクに書き戻す際にも、バッファメモリを経由して磁気ディスクに書き戻しており、バッファメモリを経由する分、磁気ディスクへの書き戻しデータの転送に時間がかかるという問題がある。【００１２】
本発明は、不揮発メモリからホストへの読出しデータ転送と不揮発メモリから磁気ディスクへの書き戻しデータ転送の処理時間を短縮してアクセス性能を向上する記憶装置、記憶制御装置及び制御方法を提供することを目的とする。
【課題を解決するための手段】
【００１３】
（記憶装置）
本発明は記憶装置を提供する。本発明の記憶装置は、
ヘッドをディスク媒体の任意の位置に移動するヘッドアクチュエータと、
ヘッドによりディスク媒体にデータを記録又は再生するディスク記録再生部と、
不揮発メモリに対し情報を書き込み又は読み出す不揮発メモリ制御部と、
バッファメモリに対し情報を書き込み又は読み出すバッファ制御部と、
上位装置との間で命令及びデータを送受する上位インタフェース制御部と、
ディスク記録再生部、不揮発メモリ制御部及び上位インタフェース制御部の間でデータ転送パスを切替える転送パス切替部と、
不揮発メモリからデータを読み出すデータ読出命令（リードコマンド）を上位装置から受信した際に、転送パス切替部を制御して不揮発メモリから読出したデータを上位装置に転送すると同時にバッファメモリに転送してキャッシュ領域に格納する制御を行うアクセス制御部と、
を備えたことを特徴とする。【００１４】
ここで、転送パス切替部は、
不揮発メモリから読み出したデータを上位インタフェース制御部側とバッファ制御部側に２分岐して同時転送させる分岐パスアクセス制御部と、
分岐パスアクセス制御部と上位インタフェースとの間に配置した第１ＦＩＦＯと、
分岐パスアクセス制御部とバッファ制御部との間に配置した第２ＦＩＦＯと、
第１ＦＩＦＯとバッファ制御部との間の転送パス、第２ＦＩＦＯとディスク記録再生部との間の転送パス、又はバッファ制御部とディスク記録再生部との間の転送パスのいずれか１つを切替選択するアービタと、
を備える。【００１５】
望ましくは、第１ＦＩＦＯ及び第２ＦＩＦＯの記憶容量を、バッファメモリに対する単位書込データサイズの少なくとも２倍の記憶容量とする。【００１６】
アクセス制御部は、不揮発メモリのデータ読出命令を上位装置から受信した際に、バッファメモリのキャッシュ領域に該当するデータがあるかどうかを検索し、キャッシュ領域に該当するデータが存在した場合、キャッシュ領域のデータを読み出して上位装置に転送する。【００１７】
アクセス制御部は、不揮発メモリからディスク媒体への書戻し命令（ライトバックコマンド）を上位装置から受信した際又はアクセス制御部自身で書戻し要求を発生した際に、バッファメモリのキャッシュ領域に該当するデータがあるかどうかを検索し、キャッシュ領域に該当するデータが存在した場合、キャッシュ領域のデータを読み出してディスク媒体に書き戻す。【００１８】
アクセス制御部は、キャッシュ領域からデータをディスク媒体に書き戻している間のバッファメモリの読出し空き時間を利用して不揮発メモリからバッファメモリのキャッシュ領域へキャッシュしていないデータを転送して格納する。【００１９】
（記憶制御装置）
本発明は記憶制御装置を提供する。本発明の記憶制御装置は、
ヘッドによりディスク媒体にデータを記録又は再生するディスク記録再生部と、
不揮発メモリに対し情報を書き込み又は読み出す不揮発メモリ制御部と、
バッファメモリに対し情報を書き込み又は読み出すバッファ制御部と、
上位装置との間で命令及びデータを送受する上位インタフェース制御部と、
ディスク記録再生部、不揮発メモリ制御部及び上位インタフェース制御部の間でデータ転送パスを切替える転送パス切替部と、
不揮発メモリからデータを読み出すデータ読出命令を前記上位装置から受信した際に、転送パス切替部を制御して不揮発メモリから読出したデータを上位装置に転送すると同時にバッファメモリに転送してキャッシュ領域に格納するアクセス制御部と、
を備えたことを特徴とする。【００２０】
（記憶装置の制御方法）
本発明は記憶装置の制御方法を提供する。本発明は、
ヘッドをディスク媒体の任意の位置に移動するヘッドアクチュエータと、
ヘッドによりディスク媒体にデータを記録又は再生するディスク記録再生部と、
不揮発メモリに対し情報を書き込み又は読み出す不揮発メモリ制御部と、
バッファメモリに対し情報を書き込み又は読み出すバッファ制御部と、
上位装置との間で命令及びデータを送受する上位インタフェース制御部と、
ディスク記録再生部、不揮発メモリ制御部及び上位インタフェース制御部の間でデータ転送パスを切替える転送パス切替部と、
を備えた記憶装置の制御方法に於いて、
不揮発メモリからデータを読み出すデータ読出命令を上位装置から受信した際に、転送パス切替部を制御して不揮発メモリから読出したデータを上位装置に転送すると同時にバッファメモリに転送してキャッシュ領域に格納する制御を行うことを特徴とする。【００２１】
（記憶装置の制御ユニット）
本発明は記憶装置の制御ユニットを提供する。即ち、本発明は、ヘッドをディスク媒体の任意の位置に移動するヘッドアクチュエータと、ヘッドによりディスク媒体にデータを記録又は再生するディスク記録再生部と、不揮発メモリに対し情報を書き込み又は読み出す不揮発メモリ制御部と、バッファメモリに対し情報を書き込み又は読み出すバッファ制御部と、上位装置との間で命令及びデータを送受する上位インタフェース制御部とを少なくとも備えた記憶装置の制御ユニットにおいて、
ディスク記録再生部、不揮発メモリ制御部及び上位インタフェース制御部の間でデータ転送パスを切替える制御を行う転送パス切替制御部と、
不揮発メモリからデータを読み出すデータ読出命令を上位装置から受信した際に、転送パス切替制御部を制御して不揮発メモリから読出したデータを上位装置に転送すると同時にバッファに転送してキャッシュ領域に格納する制御を行うアクセス制御部と、
を備えたことを特徴とする。
【発明の効果】
【００２２】
本発明によれば、不揮発メモリに対するホストからの読出要求時に、不揮発メモリから読み出したデータをホストへ転送すると同時にバッファメモリに転送してキャッシュすることで、バッファメモリを経由せずにホストにデータを転送できるためホストに対する転送処理時間を短縮できる。【００２３】
また不揮発メモリの読出しによるホストへのデータ転送と同時にバッファメモリにキャッシュできるため、その後の不揮発メモリに対する同じデータの読出要求時に、バッファメモリからホストへのデータ転送して転送処理時間を短縮できる。【００２４】
また不揮発メモリからディスク媒体への書戻し要求が発生した場合にも、バッファメモリにキャッシュしているデータをディスク媒体に転送して書き戻すことで、不揮発メモリからバッファメモリを経由してディスク媒体に書き戻す場合に比べ、書き戻し処理時間を短縮できる。【００２５】
更に、不揮発メモリからディスク媒体への書き戻し要求があったとき、バッファメモリからディスク媒体にデータを転送して書き戻す場合、バッファメモリの読出速度に対しディスク媒体の書込み速度が遅く、バッファメモリに読出し空き時間が発生することから、この空き時間を利用して不揮発メモリからキャッシュしていないデータを読出しキャッシュにプリフェッチすることで、不揮発メモリのデータのバッファメモリにおけるキャッシュヒット率を高め、全体的にみた記憶装置のアクセス時間を短縮して処理性能を向上することができる。
【図面の簡単な説明】
【００２６】
【図１】本発明による記憶装置の実施形態を示したブロック図
【図２】本実施形態における不揮発メモリからホストとバッファメモリへの同時データ転送を示したタイムチャート
【図３】図２のデータ転送の詳細を示したタイムチャート
【図４】本実施形態の不揮発メモリへのリード要求に対しキャッシュヒットした場合のデータ転送を示したタイムチャート
【図５】図４のデータ転送の詳細を示したタイムチャート
【図６】本実施形態の不揮発メモリに対する書き戻し要求でキャッシュヒットした場合のデータ転送を示したタイムチャート
【図７】本実施形態の不揮発メモリに対する書き戻し要求でキャッシュヒットした場合のデータ転送と、その空き時間を利用して不揮発メモリから別データをキャッシュにプリフェッチするデータ転送を示したフローチャート
【図８】本実施形態における磁気ディスク装置の制御処理を示したフローチャート
【図９】図８のステップＳ６におけるライト処理の詳細を示したフローチャート
【図１０】図８のステップＳ８におけるリード処理の詳細を示したフローチャート
【図１１】図８のステップＳ１１における書き戻し処理の詳細を示したフローチャート
【図１２】本実施形態における不揮発メモリの制御処理を示したフローチャート
【図１３】従来の不揮発メモリへのリード要求に対するホストへのデータ転送を示したタイムチャート
【図１４】従来の不揮発メモリへの再リード要求に対するホストへのデータ転送を示したタイムチャート
【図１５】従来の不揮発メモリから磁気ディスクへの書き戻し要求に対するデータ転送を示したタイムチャート
【発明を実施するための最良の形態】
【００２７】
図１は本発明が適用される磁気ディスク装置のブロック図である。図１において、ハードディスクドライブ（ＨＤＤ）として知られた磁気ディスク装置１０は上位装置としてのホスト１２に対し接続され、ディスクエンクロージャ１４と制御ボート１６で構成される。【００２８】
ディスクエンクロージャ１４にはスピンドルモータ１８が設けられ、スピンドルモータ１８の回転軸に磁気ディスク２４−１、２４−２を装着し、例えば４２００ｒｐｍの一定速度で回転している。【００２９】
またディスクエンクロージャ１４にはボイスコルモータ２０が設けられ、ボイスコルモータ２０はヘッドアクチュエータ２２のアーム先端にヘッド２６−１〜２６−４を支持しており、磁気ディスク２４−１、２４−２の記録側に対するヘッドの位置決めを行う。【００３０】
ヘッド２６−１〜２６−４は記録素子と読出素子が一体化された複合型のヘッドである。記録素子には面内記録型の記録素子または垂直磁気記録型の記録素子が使用される。垂直磁気記録型の記録素子の場合、磁気ディスク２４−１、２４−２には記録層と軟磁性裏打層を備えた垂直記録媒体を使用する。読出素子にはＧＭＲ素子やＴＭＲ素子を使用する。【００３１】
ヘッド２６−１〜２６−４はヘッドＩＣ２８に信号線接続されており、ヘッドＩＣ２８はホスト１２からのライトコマンド（ライト要求）またはリードコマンド（リード要求）に基づく、ヘッドセレクト信号でひとつのヘッドを選択し、書き込みまたは読出しを行う。またヘッドＩＣ２８にはライト系についてはライトドライブが設けられ、リード系についてはプリアンプが設けられている。【００３２】
制御ボード１６にはＭＰＵ３０が設けられ、ＭＰＵ３０のバスに対し、ＲＡＭを用いた制御プログラム及び制御データを読出し配置する。メモリ３４及びスピンドルモータ１８とボイスコイルモータ２０を駆動制御するモータ駆動制御部３５が設けられている。【００３３】
またＭＰＵ３０に対してはメモリ制御部として機能するメモリインタフェース４２を介して不揮発メモリ３８が接続され、また同じくメモリ制御部と機能するメモリインタフェース５６を介してバッファメモリ４０が接続されている。【００３４】
本実施形態において不揮発メモリ３８にはＭＰＵ３０で実行される磁気ディスク装置１０の制御プログラムであるファームウェアを記録すると同時にデータを記憶するようにしている。このため本実施形態の磁気ディスク装置１０は、磁気ディスク２４−１、２４−２に加えてデータ記憶先として不揮発メモリ３８を備えたハイブリット型の記憶装置を構成している。【００３５】
不揮発メモリ３８としてはフラッシュメモリなどが用いられ、フラッシュメモリにあっては予め定めたデータサイズ、例えば８キロバイト、６４キロバイトといったブロック単位でデータの書き込みと読出しを行う。【００３６】
またバッファメモリ４０はＲＡＭを使用しており、バッファメモリ４０についても予め定めたバースト長単位でのデータの書き込みと読出しを行う。【００３７】
本実施形態におけるデータ記憶に使用する不揮発メモリ３８としては、実用的には１ＧＢ程度の容量が必要となる。これに対しバッファメモリ４０としては例えば６４ＭＢ程度の容量で十分である。【００３８】
ヘッド２６−１〜２６−４による磁気ディスク２４−１、２４−２に対するデータの記録または再生のため、ＭＰＵ３０のバスに対しセクタバッファ６０、ハードディスクコントローラ６２及びリードチャネル６４を設けており、セクタバッファ６０からヘッドＩＣ２８までの回路部がディスク記録再生部を構成している。【００３９】
一方、ＭＰＵ３０のバスに対してはホスト１２との間でコマンド（命令）及びデータを送信する上位インタフェース制御部として機能するホストインタフェース制御部５０が設けられる。ホストインタフェース制御部５０としては例えばシリアルＡＴＡインタフェースなどが使用される。【００４０】
このような本実施形態におけるホスト１２側のホストインタフェース制御部５０、不揮発メモリ３８側のメモリインタフェース４２、バッファメモリ４０側のメモリインタフェース５６、さらに磁気ディスク２４−１、２４−２にデータを記録または再生するヘッド２６−１〜２６−４側のセクタバッファ６０からヘッドＩＣ２８を含むディスク記録再生部との間には、それぞれのデータ転送パスを切り替えるための転送パス切替部が設けられている。【００４１】
この転送パス切替部には、不揮発メモリ３８のメモリインタフェース４２側から分岐パス制御部４６、ＦＩＦＯ（第１ＦＩＦＯ）４８が設けられ、また分岐パス制御部４６とバッファメモリ４０のメモリインタフェース５６の間にＦＩＦＯ（第２ＦＩＦＯ）５２とアービタ５４が設けられ、アービタ５４に対しては更にＦＩＦＯ４８とセクタバッファ６０が接続されている。なお、ＦＩＦＯは先入れ先出し（Ｆｉｒｓｔ  Ｉｎ  Ｆｉｒｓｔ  Ｏｕｔ）のメモリである。【００４２】
ＭＰＵ３０には不揮発メモリ３８に記録されているファームウェアをメモリ３４に読出し配置して実行することで実現される機能としてアクセス制御部６５が設けられる。アクセス制御部６５にはリード処理部６６、ライト処理部６８、書き戻し処理部７０及びキャッシュ制御部７２の機能が設けられている。【００４３】
本実施形態において、バッファメモリ４０には１次キャッシュ７４が設けられ、不揮発メモリ３８には２次キャッシュ７３が設けられている。バッファメモリ４０の１次キャッシュ７４にはホスト１２からのリード要求で不揮発メモリ３８から読み出されたデータ及び磁気ディスク２４−１、２４−２から読み出されたデータが格納され、その後の同じデータのリード要求に対し１次キャッシュ７４のキャッシュヒットでバッファメモリ４０からライトデータを読み出してホスト１２に転送する。【００４４】
不揮発メモリ３８の２次キャッシュ７３は１次キャッシュ７４からＬＲＵ管理により追い出された磁気ディスク２４−１、２４−２から読み出してキャッシュしたデータが格納される。【００４５】
本実施形態のＭＰＵ３０に設けたリード処理部６６は、ホスト１２から不揮発メモリ３８を対象にデータを読み出す命令、すなわちリードコマンドを受信した際に、分岐パス制御部４６を制御し（転送パス切替制御機能）、不揮発メモリ３８からメモリインタフェース４２により読出したデータをＦＩＦＯ４８を介してホストインタフェース制御部５０からホスト１２に転送すると同時に、ＦＩＦＯ５２を介してアービタ５４からメモリインタフェース５６によりバッファメモリ４０に転送して１次キャッシュ７４に格納する。【００４６】
ここで不揮発メモリ３８の読出し速度に対し、分岐パス制御部４６の分岐側に設けたＦＩＦＯ４８及びＦＩＦＯ５２の書き込み速度は十分に高速である。従って不揮発メモリ３８からの読出しデータの転送中にＦＩＦＯ４８及びＦＩＦＯ５２が常にエンプティ状態を維持し、不揮発メモリ３８の読出しデータを連続的に先出しにより処理し、ＦＩＦＯ４８からホストインタフェース制御部５０に、またＦＩＦＯ５２からアービタ５４を経由してバッファメモリ４０に転送することができる。【００４７】
また何らかの原因によりＦＩＦＯ４８とＦＩＦＯ５２のいずれか一方のエンプティ状態が断たれて停止した場合には、他方のＦＩＦＯに対する書き込みも停止する。【００４８】
またバッファメモリ４０に対し、読出しデータを転送するＦＩＦＯ５２にあっては、バッファメモリ４０に対するデータ書き込みがバースト長単位に実行されていることから、ＦＩＦＯ５２の記憶容量としてはバッファメモリ４０に対するバースト長の少なくとも２倍の大きさがあれば、不揮発メモリ３８からの読出しデータに対し連続的にバッファメモリ４０への転送が可能である。これによってＦＩＦＯ４８を経由したホストインタフェース制御部５０からのホスト１２へのデータ転送を妨げることはない。【００４９】
ＭＰＵ３０に設けたリード処理部６６は、不揮発メモリ３８から読出したデータをバッファメモリ４０の１次キャッシュ７４に格納した後、ホスト１２から不揮発メモリ３８の同じデータについて再度リードコマンドを受信した際には、ＭＰＵ３０に設けているキャッシュ制御部７２により１次キャッシュ７４の管理データを参照することでキャッシュヒットを判定し、この場合には不揮発メモリ３８からではなくバッファメモリ４０の１次キャッシュ７４から該当するデータを読出し、メモリインタフェース５６からアービタ５４さらにＦＩＦＯ４８を経由してホストインタフェース制御部５０に出力し、ホスト１２に１次キャッシュ７４からの読出しデータを転送する。【００５０】
このバッファメモリ４０の１次キャッシュ７４のヒットによる不揮発メモリ３８のホスト１２に対するデータ転送については、バッファメモリ４０によりバースト長単位でＦＩＦＯ４８を経由したデータ転送が行われるため、ＦＩＦＯ４８の空き容量がバースト長より大きい限りバッファメモリ４０は連続的に読出しデータの転送を繰り返すことができる。【００５１】
このためバッファメモリ４０の１次キャッシュ７４からのホスト転送については、ＦＩＦＯ４８の記憶容量がバッファメモリ４０の読出し単位であるバースト長の少なくとも２倍あれば、バッファメモリ４０の読出しを中断することなく最大速度のデータ転送が可能となる。【００５２】
更に、ＭＰＵ３０に設けた書き戻し処理部７０は、不揮発メモリ３８から磁気ディスク２４−１、２４−２に対する書き戻しコマンドを受信した場合、またはファームウェア自身の制御となるキャッシュ制御部７２で不揮発メモリ３８から磁気ディスク２４−１、２４−２への書き戻し要求が発生した場合、キャッシュ制御部７２によりバッファメモリ４０の１次キャッシュ７４に該当するデータがあるかどうかを検索し、１次キャッシュ７４に該当するデータが存在してキャッシュヒットとなった場合には１次キャッシュ７４のデータを読み出して、磁気ディスク２４−１、２４−２側に書き戻す。【００５３】
このようなバッファメモリ４０の１次キャッシュ７４のデータを使用した磁気ディスクに対する書き戻しに対し、不揮発メモリ３８からデータを読み出してバッファメモリ４０に格納した後、バッファメモリ４０から読み出して磁気ディスクに書き込むというバッファメモリ４０を経由した書き戻し処理に対し、処理時間を短縮することができる。【００５４】
ここでホスト１２による不揮発メモリ３８から磁気ディスク２４−１、２４−２側に対する書き戻し要求としては、ホスト１２が不揮発メモリ３８の２次キャッシュ７５のデータを磁気ディスクに格納するコマンドを発行する場合がある。【００５５】
またホスト１２が処理する不揮発メモリ３８から磁気ディスクへの書き戻しの処理としては、ホスト１２が不揮発メモリ３８にデータを書き込む際に不揮発メモリ３８への蓄積を示す標識となるフラグであるＰＩＮフラグをセットして格納している。【００５６】
ホスト１２からのライトデータにＰＩＮフラグがセットされていれば、不揮発メモリ３８への蓄積を意味している。このような状態でホスト１２は不揮発メモリ３８のデータに対し必要に応じてＰＩＮフラグをリセットすることができる。【００５７】
ホスト１２により不揮発メモリ３８に格納しているデータのＰＩＮフラグがリセットされると、リセットされたデータを磁気ディスクに書き戻す動作を行う。【００５８】
従ってホスト１２で不揮発メモリ３８に格納しているデータのＰＩＮフラグをリセットすることで、ＭＰＵ３０の書き戻し処理部７０がＰＩＮフラグがリセットされた不揮発メモリ３８のデータを磁気ディスクに書き戻す処理を実行することになる。【００５９】
また磁気ディスク装置のファームウェアによる不揮発メモリ３８のデータの磁気ディスクへの書き戻しとして、キャッシュ制御部７２による書き戻し処理がある。【００６０】
キャッシュ制御部７２による書き戻し処理は、バッファメモリ４０の１次キャッシュ７４および不揮発メモリ３８の２次キャッシュ７３についてＬＲＵ（Ｌｅａｓｔ  Ｒｅｃｅｎｔｌｙ  Ｕｓｅｄ）管理が行われている。【００６１】
まず１次キャッシュ７４についてはＬＲＵ管理により追い出し対象となった１次キャッシュのデータは不揮発メモリ３８に書き戻される。このとき書き戻しデータが磁気ディスクのキャッシュデータであった場合には２次キャッシュ７３に書き戻す。書き戻しデータが不揮発メモリ３８のデータであった場合には該当する不揮発メモリ３８のデータに上書きする。【００６２】
不揮発メモリ３８の２次キャッシュ７３についてもＬＲＵ管理で追い出し対象となったデータの磁気ディスク２４−１、２４−２に対する書き戻しが行われる。このとき書き戻し処理部７０は書き戻し対象となった２次キャッシュ７３のデータがバッファメモリ４０の１次キャッシュ７４にあるか否か検索し、キャッシュヒットとなればバッファメモリ４０の１次キャッシュ７４から磁気ディスクに書き戻す。【００６３】
２次キャッシュ７３のデータが１次キャッシュ７４でミスヒットとなった場合は、２次キャッシュ７３のデータをバッファメモリ４０に転送して格納した後、バッファメモリ４０から読み出して磁気ディスク２４−１、２４−２側に書き戻す。【００６４】
ＭＰＵ３０に設けたライト処理部６８は、ホストインタフェース制御部５０でホスト１２からライト要求であるライトコマンドを受信した際に、ＦＩＦＯ４８、アービタ５４を介してメモリインタフェース５６によりライトデータをバッファメモリ４０に書き込んだ後、コマンドで指定された不揮発メモリ３８または磁気ディスク２４−１、２４−２側に転送して書き込むことになる。【００６５】
このときライトデータがバッファメモリ４０の１次キャッシュ７４の更新データである場合には、１次キャッシュ７４のデータをライトデータにより上書きして更新し、不揮発メモリ３８または磁気ディスク２４−１、２４−２側と更新により異なったデータになることから、書き戻しフラグをセットしておく。【００６６】
このように１次キャッシュ７４のデータをライトデータにより更新して書き戻しフラグをセットしておけば、その後、キャッシュ制御部７２がホスト１２からのアクセスのない空き時間を利用して、書き戻しフラグがセットされている１次キャッシュ７４のデータを不揮発メモリ３８または磁気ディスク２４−１、２４−２側に書き戻して一致させる。【００６７】
またホスト１２からのライトコマンドが磁気ディスク２４−１、２４−２を対象としたライトコマンドの場合、バッファメモリ４０の１次キャッシュ７４の検索でミスヒットとなった場合には、不揮発メモリ３８の２次キャッシュ７３を検索し、２次キャッシュ７３でキャッシュヒットとなった場合には、バッファメモリ４０からライトデータを不揮発メモリ３８に転送し、２次キャッシュ７３の該当データを更新する。【００６８】
この場合にも、更新した２次キャッシュ７３のデータについて書き戻しフラグをセットしておき、アイドル状態で書き戻し処理部７０が書き戻しフラグがセットされている２次キャッシュ７３のデータを読出し、バッファメモリ４０を経由して磁気ディスク２４−１、２４−２側に書き戻し、２次キャッシュ７３と磁気ディスク２４−１、２４−２側のデータを一致させる。【００６９】
図２は本実施形態における不揮発メモリからホストとバッファメモリへ読出しデータを同時転送する転送処理を示したタイムチャートである。【００７０】
図２（Ｅ）に示すように、ホスト１２からリード要求（リードコマンド）７５を受信すると、ＭＰＵ３０のリード処理部６６は不揮発メモリ３８のメモリインタフェース４２に対しロードコマンド７６を発行する。【００７１】
このロードコマンド７６を受けてメモリインタフェース４２は動作し、不揮発メモリ３８がデータ読出し可能状態となってイネーブル信号が得られるとロードコマンド終了７７を行う。ロードコマンド終了７７を行うと不揮発メモリ３８はメモリインタフェース４２を介して転送データ７８−１１の読出し出力を開始する。【００７２】
不揮発メモリ３８から出力された転送データ７８−１１は分岐パス制御部４６に入力し、ＦＩＦＯ４８とＦＩＦＯ５２のそれぞれに分岐して転送される。【００７３】
ＦＩＦＯ５２については、図２（Ｂ）に示すように、分岐パス制御部４６で分岐された転送データを転送データ７８−１２として書き込んだ後に読み出してアービタ５４を経由してメモリインタフェース５６により図２（Ｃ）のように転送データ７８−１３として書き込み、１次キャッシュ７４に格納する。【００７４】
同時に分岐パス制御部４６より出力された転送データ７８−１１は、図２（Ｄ）に示すように、ＦＩＦＯ４８からホストインタフェース制御部５０に転送データ７８−２１として転送され、図２（Ｅ）に示すようにホストインタフェース制御部５０からホスト１２に転送される。【００７５】
このように本実施形態にあっては、不揮発メモリ３８からの転送データ７８−１１は、バッファメモリ４０とホスト１２に対し同時並列的に転送され、図１３に示したように、従来のバッファメモリを経由したホスト転送に比べ、バッファメモリを経由をせずに直接ホストに転送することでホスト転送時間を短縮することができる。またホスト転送と同時にバッファメモリ３８における１次キャッシュ７４へのキャッシュ登録が同時にできる。【００７６】
図３は図２のデータ転送の詳細を示したタイムチャートである。図３（Ａ）は不揮発メモリ４０の出力、図３（Ｂ）はＦＩＦＯ４８のイネーブル、図３（Ｃ）はＦＩＦＯ４８のエンプティ、図３（Ｄ）はＦＩＦＯ４８の出力、図３（Ｅ）はホスト１２に対するホストインタフェース制御部５０の出力、図３（Ｆ）はＦＩＦＯ５２のイネーブル、図３（Ｇ）はＦＩＦＯ５２の出力、図３（Ｈ）はバッファメモリ４０の書き込みを示している。【００７７】
すなわち図３（Ｅ）でホスト１２の出力としてリードコマンド７５を受信すると、図３（Ａ）のように不揮発メモリ３８に対しファームウェアがロードコマンド７６−１を発行し、不揮発メモリ３８がデータ読出し可能状態になるとロードコマンド終了７７−１とし、これによって不揮発メモリ３８より転送データ７８−１１が読出し出力される。なお次にリード要求があればロードコマンド終了７７−１のあとにロードコマンド終了７７−２を発行する。【００７８】
不揮発メモリ３８からの転送データ７８−１１の読出し出力に対し、図３（Ｂ）のようにＦＩＦＯ４８がイネーブルとなり、不揮発メモリ３８からの転送データ７８−１１を図３（Ｃ）のようにＦＩＦＯ４８のエンプティが立ち上がるまで連続的に書き込む。【００７９】
ここで不揮発メモリ３８の読出し速度に対しＦＩＦＯ４８の書き込み読出しによる転送速度が速いことから、図３（Ｄ）に示すように、ＦＩＦＯ４８に対し連続的に転送データ７８−１１を書き込み、ＦＩＦＯ４８は図３（Ｄ）に示すように連続的に高速読出しを繰り返す。【００８０】
ＦＩＦＯ４８から読み出された転送データは、図３（Ｅ）のようにホストインタフェース制御部５０によりＦＩＦＯ４８にデータが入っている限り継続的にホスト１２側に読出し転送する。【００８１】
一方、不揮発メモリ３８の転送データ７８−１１は、図３（Ｆ）のＦＩＦＯ５２のイネーブルとなっていることからＦＩＦＯ５２に書き込まれ、ＦＩＦＯ５２にバッファメモリ４０のバースト長分のデータがたまると、図３（Ｇ）に示すように、バースト長単位で図３（Ｈ）のバッファメモリ４０に対する書き込み転送が行われる。【００８２】
不揮発メモリ３８の転送データ７８−１１のホスト１２及びバッファメモリ４０に対する転送が終了すると、次のリードコマンドに対するロードコマンド７６−２に対応したロードコマンド終了７７−２となり、更に次のリードコマンドがあればロードコマンド７６−３を発行した後、次の転送データの不揮発メモリ３８からの読み出しによるホスト１２及びバッファメモリ４０への転送を行う。【００８３】
図４は図２のように不揮発メモリから転送データ７８−１１を読み出してホスト１２に転送すると同時に、バッファメモリ４０に転送して１次キャッシュ７４に格納した後、ホスト１２から同じ不揮発メモリのデータを対象に再リード要求を行うときのデータ転送を示したタイムチャートである。【００８４】
図４（Ｅ）に示すようにホスト１２から再リード要求８０を受けると、キャッシュ制御部７２が１次キャッシュ７４の管理データを検索してキャッシュヒット８２を判定し、図４（Ｃ）のバッファメモリ４０の１次キャッシュ７４から転送データ７８−３１を読出し、アービタ５４を介して図４（Ｄ）に示すようにＦＩＦＯ４８からホストインタフェース制御部５０に転送データ７８−３２を送り、図４（Ｅ）のようにホストインタフェース制御部５０からホスト１２に対し転送データ７８−３３を転送する。【００８５】
このような不揮発メモリ３８に対するホスト１２からの再リード要求８０で１次キャッシュ７４のキャッシュヒットとなった場合には、キャッシュヒットせずに破線で示す不揮発メモリ３８から転送データ１０６−１を読み出してホスト１２に転送データ１０６−２として転送する場合に比べ、Ｔ時間分の処理時間を短縮することができる。【００８６】
図５は図４のバッファメモリ４０のキャッシュヒットでホストにデータを転送する際の詳細を示したタイムチャートである。図５において、キャッシュヒットとなることで、図５（Ｈ）のように、バッファメモリ４０より転送データ７８−１３はバースト長単位で連続的に出力される。【００８７】
このとき図５（Ｂ）のＦＩＦＯ４８は最初のバッファメモリ４０からのバースト長の転送データを受けて図５（Ｃ）のＦＩＦＯ４８エンプティがオフとなり、図５（Ｄ）のようにＦＩＦＯ４８のイネーブルに同期してバッファメモリ４０からのバースト長の転送データの書き込みが行われる。【００８８】
同時に図５（Ｄ）のようにＦＩＦＯ４８はホスト側の転送速度が速いことから連続的に転送データ７８−３１の出力を行い、図５（Ｅ）のようにホスト１２に対しホストとインタフェース制御部５０から転送データ７８−３２として連続的に転送される。【００８９】
図６は本実施形態の不揮発メモリ３８に対する書き戻し要求でキャッシュヒットとなった場合のデータ転送を示したタイムチャートである。【００９０】
図６（Ａ）〜（Ｆ）の前半は図２（Ａ）〜（Ｅ）による最初のリード要求７５に対するホスト１２及びバッファメモリ４０に対するデータ転送を示しており、その後、バッファメモリ４０に書き込んだ転送データ７８−１３と同じ不揮発メモリ３８のデータについて書き戻し要求８４が発生したとする。【００９１】
この書き戻し要求８４に対し図１の書き戻し処理はキャッシュ制御部７２に対しバッファメモリ４０の１次キャッシュ７４に該当データが有るか否かの検索を依頼し、検索結果としてキャッシュヒット８６を受けると、図６（Ｃ）のようにバッファメモリ４０に対し転送データ７８−３１の読出しを要求し、これが図６（Ｆ）のように磁気ディスク２４に転送データ７８−３２として転送書き込みされる。【００９２】
このように不揮発メモリ３８のデータを対象とした磁気ディスクへの書き戻し要求につき、バッファメモリ４０の１次キャッシュ７４でキャッシュヒットとなった場合には、破線で示す不揮発メモリ３８から転送データ１０６−１を読み出してバッファメモリ４０に転送データ１０６−２として格納した後、転送データ１０６−３として読み出して磁気ディスク２４に転送データ１０６−４として書き込む従来の書き込み処理に比べ、Ｔ時間分の処理時間を短縮することができる。【００９３】
図７は本実施形態における不揮発メモリから磁気ディスクに対する書き戻しを連続して行う際のバッファメモリの空き時間を利用して不揮発メモリ３８から別データを１次キャッシュ７４にプリフェッチするデータ転送を示したタイムチャートである。【００９４】
図７（Ａ）〜（Ｆ）の前半は図６と同じく不揮発メモリ３８から磁気ディスク２４に対する書き戻しで、バッファメモリ４０の１次キャッシュ７４がキャッシュヒット９０となって場合の処理であり、バッファメモリ４０の１次キャッシュ７４から転送データ７８−３１が読み出され、磁気ディスク２４に転送データ７８−３２を書き戻す処理が行われる。【００９５】
ここでバッファメモリ４０の転送データ７８−３１の書き込み時間に対し、磁気ディスク２４に対する転送データ７８−３２の書き込み時間の方が長いため、バッファメモリ４０で転送データ７８−３１を読出した後、空き時間を生じ、磁気ディスク２６に対する転送データ７８−３２の書き込み終了を待って次の転送データ７８−４１のバッファメモリ４０からの読出しが行われる。【００９６】
そこで本実施形態にあっては、バッファメモリ４０における転送データ７８−３１と転送データ７８−４１の間の読出し空き時間に、不揮発メモリ３８から別の転送データ９２−１１を読出し、ＦＩＦＯ５２からバッファメモリ４０に転送データ９２−１２として転送し、バッファメモリ４０の１次キャッシュ７４に転送データ９２−１３として書き込むようにしている。【００９７】
具体的には書戻し要求８８が発生した際に、図７（Ａ）の不揮発メモリ３８にロードコマンド７６−１を発行し、不揮発メモリ３８が読出し可能となった状態で、ロードコマンド終了７７−１として不揮発メモリ３８から転送データ９２−１１を読出し、ＦＩＦＯ５２を経由してバッファメモリ４０に転送データ９２−１３として書き込む。【００９８】
ここでバッファメモリ４０の読出し空き時間を使用して不揮発メモリ３８からバッファメモリ４０の１次キャッシュ７４に書き込むデータとしては、１次キャッシュ７４におけるＭＲＵ（Ｍｏｓｔ Ｒｅｓｅｎｔｌｙ Ｕｓｅｄ）の対象となっているデータ、すなわち最新使用データに後続する不揮発メモリ３８のデータを読出し転送して１次キャッシュ７４に格納する。【００９９】
このようにバッファメモリ４０の転送データ７８−３１の読出し空き時間に不揮発メモリ３８から読出し転送した転送データ９２−１３を格納した後、後続する転送データ７８−４１を読み出して磁気ディスク２４に転送データ７８−４２として書き込む。【０１００】
この場合、次の空き時間に対しても不揮発メモリ３８に対しロードコマンド７６−２を発行し、読出し可能状態となることでロードコマンド終了７７−２とした後、転送データ９２−２１を読出し、バッファメモリ４０の１次キャッシュ７４に転送データ９２−２３として書き込む。【０１０１】
このように不揮発メモリ３８から磁気ディスク２４にデータを書き戻す際に、バッファメモリ４０のキャッシュヒットとなることでバッファメモリ４０から磁気ディスク２４の読出し転送におけるバッファ空き時間のタイミングで不揮発メモリ３８から別データをバッファメモリ４０に転送して１次キャッシュ７４にプリフェッチキャッシュデータをして格納しておくことができ、バッファメモリ４０に設けた１次キャッシュ７４のキャッシュデータをその後のホストからのアクセスに対し、キャッシュヒットしやすいデータ状態とすることができ、１次キャッシュ７４のキャッシュヒットの割合が高まることで磁気ディスク装置全体としてのアクセス性能を向上することができる。【０１０２】
図８は本実施形態における磁気ディスク装置の制御処理を示したフローチャートであり、図１を参照して説明すると次のようになる。【０１０３】
図８において、まず図１のホスト１２を起動すると、ホスト１２の起動に伴い磁気ディスク装置１０の電源も投入され、ステップＳ１で起動処理が行われ、ステップＳ２で正常に起動すると、ステップＳ３でホスト１２に対しレディ応答を送ってアクセス可能状態となる。【０１０４】
続いてステップＳ４でホスト１２からのコマンド受信の有無をチェックしており、コマンドを受信するステップＳ５に進み、ステップＳ５でライトコマンドであることを判別するとステップＳ６に進み、ライト処理を実行する。【０１０５】
またステップＳ７でリードコマンドであることを判別すると、ステップＳ８でリード処理を実行する。更にステップＳ９で書戻しコマンド（ライトバックコマンド）であることを判別すると、ステップＳ１１に進み、書戻し処理を実行する。【０１０６】
一方、磁気ディスク装置のファームウェアであるアクセス制御部６５により書戻し要求が発生したことをステップＳ１０で判別すると、ステップＳ１１の書戻し処理を実行する。このようなステップＳ４〜Ｓ１１の処理を、ステップＳ１２でホスト１２のログオフによる停止指示があるまで繰り返す。【０１０７】
図９は図８のステップＳ６におけるライト処理の詳細を示したフローチャートである。図９においてライト処理は、図１のアクセス制御部６５に設けたライト処理部６８によりライトコマンドを解読して実行される。【０１０８】
図９において、ライト処理は、ステップＳ１でホスト１２から受信したライトデータを、ホストインターフェイス制御部５０からアービタ５４を経由してメモリインターフェイス５６によりバッファメモリ４０に格納する。【０１０９】
その後、ステップＳ２で、キャッシュ制御部７２によりバッファメモリ４０の１次キャッシュ７４の管理データにより、１次キャッシュ７４に該当するデータがあるか否か検索する。【０１１０】
ステップＳ３で１次キャッシュ７４のキャッシュヒットを判別すると、ステップＳ４で、ホスト１２から受信したライトデータにより、１次キャッシュ７４の該当するデータを上書きして更新する。この１次キャッシュ７４のデータ更新については、更新済みのデータの書戻しフラグをセットする。【０１１１】
一方、ステップＳ３でキャッシュミスヒットとなった場合には、ステップＳ５に進み、不揮発メモリ３８への書込みか否かチェックする。書込み先が不揮発メモリであった場合にはバッファメモリ４０のライトデータを読み出し、アービタ５４、ＦＩＦＯ５２、分岐パス制御部４６を通る経路で、メモリインターフェイス４２により不揮発メモリ３８に書き込む。【０１１２】
このときキャッシュ制御部７２において不揮発メモリ３８に設けている２次キャッシュ７３に該当するデータがあるか否か検索し、２次キャッシュ７３でキャッシュヒットとなった場合には、バッファメモリ４０から転送したライトデータにより２次キャッシュ７３の該当データを上書きして更新し、更新データにつき書き戻しフラグをセットする。２次キャッシュ７３のキャッシュミスヒットの場合には、不揮発メモリ３８の空き領域にライトデータを書き込む。【０１１３】
またステップＳ５で書込み先が不揮発メモリ３８でなかった場合には、ステップＳ７で磁気ディスクへの書込みを判別し、ステップＳ８でバッファメモリ４０のライトデータを読み出し、アービタ５４を介してセクタバッファ６０に送り、ハードディスクコントローラ６２を経由し、リードチャネル６４で変調し、ヘッドＩＣ２８を介して、そのとき選択している例えばヘッド２６−１により、磁気ディスク２４−１の目標トラックにライトデータを書き込む。【０１１４】
図１０は図８のステップＳ８におけるリード処理の詳細を示したフローチャートであり、図１を参照して説明すると次のようになる。図１のアクセス制御部６５に設けたリード処理部６６は、ホスト１２から受信したリードコマンドの解読結果に基づき、まずステップＳ１で、キャッシュ制御部７２に処理を依頼して、バッファメモリ４０に設けている１次キャッシュ７４の管理データを対象に、１次キャッシュ７４に該当データがあるか否か検索する。【０１１５】
ステップＳ２で１次キャッシュ７４でのキャッシュヒットが判別されると、ステップＳ３で１次キャッシュ７４からデータを読み出し、アービタ５４、ＦＩＦＯ４８を介して、ホストインターフェイス制御部５０に転送データを送り、ホスト１２に転送する。【０１１６】
一方、ステップＳ２でキャッシュミスヒットを判定した場合は、ステップＳ４に進み、該当データが不揮発メモリ３８にあるか否かチェックし、不揮発メモリ３８にあることがヒット判定されると、ステップＳ５に進み、不揮発メモリ３８から該当するデータを読み出して、分岐パス制御部４６よりＦＩＦＯ４８を介してホストインターフェイス制御部５０に送り、ホストインターフェイス制御部５０からホスト１２に転送する。【０１１７】
同時に、分岐パス制御部４６からＦＩＦＯ５２、アービタ５４を介して、バッファメモリ４０にデータを転送し、１次キャッシュ７４にデータを書き込む。【０１１８】
ステップＳ４で該当データが不揮発メモリになかった場合（ミスヒット）には、ステップＳ７で磁気ディスクに該当データがあることを判別すると、ステップＳ８で磁気ディスクからデータを読み出してバッファメモリ４０に書き込む。【０１１９】
続いてステップＳ９で、バッファメモリ４０からデータを読み出し、アービタ５４及びＦＩＦＯ４８を経由して、ホストインターフェイス制御部５０によりホスト１２に対しデータを転送する。更にステップＳ１０で、バッファメモリ４０に転送したデータを１次キャッシュ７４に書き込む。【０１２０】
図１１は図８のステップＳ１１における書き戻し処理の詳細を示したフローチャートであり、図１を参照して説明すると次のようになる。【０１２１】
図１１において、アクセス制御部６５の書き戻し処理部７０がホスト１２からの書き戻しコマンドあるいは不揮発メモリ３８に格納しているデータのＰＩＮフラグのリセット、あるいはキャッシュ制御部７２による２次キャッシュ７３からのＬＲＵ管理によるキャッシュ追出しによる書き戻し要求を判別すると、ステップＳ１で不揮発メモリから磁気ディスクへの書き戻しであることを判別すると、ステップＳ２に進み、書き戻しデータがバッファメモリ４０の１次キャッシュ７４にあるか否か検索する。【０１２２】
続いてステップＳ３で１次キャッシュ７４に該当データが存在するキャッシュヒットを判別すると、ステップＳ４で１次キャッシュ７４のデータを読み出し、該当する磁気ディスクに転送して書き込む。【０１２３】
このバッファメモリ４０の１次キャッシュ７４から磁気ディスクにデータを読み出して転送書込みする書き戻し処理の際には、図７のタイムチャートに示したように、バッファメモリ４０の読出しに空き時間が生ずることから、この空き時間につき、ステップＳ４で不揮発メモリ３８の別のデータ例えば１次キャッシュ７４におけるＬＲＵ管理の対象となっているデータに後続するデータを読み出して、プリフェッチデータとして１次キャッシュ７４に書き込む。【０１２４】
一方、ステップＳ３で不揮発メモリから磁気ディスクに書戻しするデータが１次キャッシュ７４でミスヒットとなった場合には、ステップＳ６で不揮発メモリ３８のデータを読み出してバッファメモリ４０に転送書込みした後、ステップＳ７でバッファメモリ４０からデータを読み出して磁気ディスクに転送して書き込むことになる。【０１２５】
またステップＳ８でバッファメモリ４０の１次キャッシュ７４から不揮発メモリ３８への書き戻しを判別した場合は、即ち１次キャッシュ７４のＬＲＵ管理のキャッシュ追出しによる書き戻しを判別した場合は、ステップＳ９で１次キャッシュ７４のデータを読み出して不揮発メモリ３８に転送し、不揮発メモリ３８に書き込む。【０１２６】
このバッファメモリ４０から不揮発メモリ３８の書き戻しについては、不揮発メモリ３８に存在するデータに対する１次キャッシュ７４からのデータの書き戻しによる上書きと、不揮発メモリ３８の２次キャッシュ７３に存在する該当データに対する上書きによる書き戻しがある。【０１２７】
２次キャッシュ７３に存在するデータは、その元となる該当データは磁気ディスクにあることから、２次キャッシュ７３に対する書き戻しで、更新済みのデータの書き戻しフラグをセットしておく。【０１２８】
図１２は本実施形態における不揮発メモリ３８のメモリ制御を示したフローチャートであり、図１のアクセス制御部６５によるメモリインターフェイス４２の制御として実行される。【０１２９】
図１２において、不揮発メモリ制御は、ステップＳ１でストア要求であることを判別すると、ステップＳ２でメモリインターフェイス４２にストアコマンドを発行し、メモリインターフェイス４２からのライトイネーブルをステップＳ３で判別すると、ステップＳ４でストアコマンドを終了とし、ステップＳ５で後続してストア要求があれば、ステップＳ２からの処理を繰り返す。【０１３０】
一方、ステップＳ６でロード要求を判別すると、ステップＳ７でロードコマンドをメモリインターフェイス４２に発行し、ステップＳ８でリードイネーブルを判別すると、ステップＳ９でロードコマンドを終了とする。【０１３１】
ステップＳ１０で継続してロード要求があれば、ステップＳ７からの処理を繰り返す。このようなステップＳ１〜Ｓ１０の処理を、ステップＳ１１でホスト１２によるログオフなどによる停止指示があるまで繰り返す。【０１３２】
また本発明は、図１のＭＰＵ３０のアクセス制御部として機能するファームウェアプログラムを提供する。このファームウェアプログラムは、図８〜図１２のフローチャートに示した処理内容を持つ。【０１３３】
更に本発明は記憶装置の制御ユニットを提供する。この記憶装置の制御ユニットは図１の実施形態における制御回路部３６に該当し、制御回路部３６にはＭＰＵ３０、メモリインターフェイス４２、分岐パス制御部４６、ＦＩＦＯ４８、ホストインターフェイス制御部５０、ＦＩＦＯ５２、アービタ５４、メモリインターフェイス５６、セクタバッファ６０、ハードディスクコントローラ６２及びリードチャネル６４が含まれており、これらの回路部を含む制御回路３６は１つのＬＳＩとして作られている。【０１３４】
なお、本実施形態では制御回路３６は１つのＬＳＩであるが、ハードディスクコントローラ、リードチャネル等は、別のＬＳＩであっても良く、記憶装置の制御ユニットは、ＭＰＵなどのコントローラを少なくとも含む制御回路で構成されていても良い。【０１３５】
また、本実施形態における１次キャッシュ７４はバッファメモリ４０に設けていることから、ホスト１２のログオフにより磁気ディスク装置１０の電源を切断すると１次キャッシュ７４は消去されることになる。【０１３６】
この電源遮断時にあっては、キャッシュ制御部７２により１次キャッシュ７４の中の書き戻しフラグがセットされているデータについては、電源遮断処理として、書き戻しフラグがセットされている１次キャッシュ７４のデータを不揮発メモリ３８の該当データ及びその２次キャッシュ７３の該当データに書き戻す書き戻し処理を完了してから処理を停止させる。【０１３７】
これによって、揮発メモリであるバッファメモリ４０に１次キャッシュ７４を設けていても、電源切断に伴う１次キャッシュ７４のキャッシュデータの喪失を防ぐことができる。【０１３８】
また本発明はその目的と利点を損なうことのない適宜の変形を含み、更に上記の実施形態に示した数値による限定は受けない。
【図１】
2008149453.tif 000003
【図２】
2008149453.tif 000004
【図３】
2008149453.tif 000005
【図４】
2008149453.tif 000006
【図５】
2008149453.tif 000007
【図６】
2008149453.tif 000008
【図７】
2008149453.tif 000009
【図８】
2008149453.tif 000010
【図９】
2008149453.tif 000011
【図１０】
2008149453.tif 000012
【図１１】
2008149453.tif 000013
【図１２】
2008149453.tif 000014
【図１３】
2008149453.tif 000015
【図１４】
2008149453.tif 000016
【図１５】
2008149453.tif 000017
【国際調査報告】
2008149453.tif 000018
2008149453.tif 000019
2008149453.tif 000020
2008149453.tif 000021
2008149453.tif 000022