(57)【要約】【課題】データアクセス時間が短く、耐久性が高く、コスト競争力に優れる真に競争力のあるＲＡＩＤ記憶装置を提供する。【解決手段】各々のデータ記憶領域に同一のデータを記憶する２つの記憶部と、２つの記憶部のうち、何れの記憶部からデータを読み出した方が短い読み出し時間になるかを判断する読み出し時間判断部と、データの読み出し命令を受けて、読み出し時間判断部により判断した短い読み出し時間の記憶部から、データを読み出す制御部と、を備える記憶装置を提供する。【選択図】図１
2008293350.tif 000002
【特許請求の範囲】
【請求項１】
各々のデータ記憶領域に同一のデータを記憶する２つの記憶部と、
前記２つの記憶部のうち、何れの記憶部から前記データを読み出した方が短い読み出し時間になるかを判断する読み出し時間判断部と、
前記データの読み出し命令を受けて、前記読み出し時間判断部により判断した短い読み出し時間の記憶部から、前記データを読み出す制御部と、
を備える記憶装置。
【請求項２】
前記２つの記憶部の一方は、ハードディスクドライブ記憶部であり、
前記２つの記憶部の他方は、可動部を持たない固体メモリ素子でデータ記憶領域を構成する固体メモリ記憶部である、
請求項１に記載の記憶装置。
【請求項３】
前記制御部は、
前記ハードディスクドライブ記憶部から、データ記憶領域内の連続した領域に記憶されている連続データを読み出し、
前記固体メモリ記憶部から、データ記憶領域内の不連続な領域に分散して記憶されている不連続データを読み出す、
請求項２に記載の記憶装置。
【請求項４】
前記固体メモリ素子は、不揮発性半導体メモリ素子、またはトンネル磁気抵抗素子である、
請求項３に記載の記憶装置。
【請求項５】
前記読み出し時間判断部は、
前記ハードディスクドライブ記憶部のヘッドが位置している現トラックまたは現シリンダと、前記データの読み出し命令に基づくターゲットトラックまたはターゲットシリンダとが一致する場合に、前記ハードディスクドライブ記憶部を短い読み出し時間の記憶部と判断する、
請求項２に記載の記憶装置。
【請求項６】
前記制御部は、
前記データの読み出し命令を受けて前記固体メモリ記憶部に対する前記データの読み出し制御を実行すると共に、前記ハードディスクドライブ記憶部に対する前記データのシーク制御を実行し、
前記読み出し時間判断部は、
前記固体メモリ記憶部についての予測読み出し時間を、平均読み出し時間に基づいて決定し、
前記ハードディスクドライブ記憶部についての予測読み出し時間を、ターゲットトラックと現トラックとの差に基づいて決定する、
請求項２に記載の記憶装置。
【請求項７】
データを第１読み出し時間で読み出す複数の第１記憶部と、
前記第１読み出し時間より短い第２読み出し時間で前記データを読み出す第２記憶部と、
書き込むデータの誤り検出符号データを生成する符号生成部と、
前記データの書き込み命令を受けて、前記データを前記複数の第１記憶部に分散して書き込み、前記誤り検出符号データを前記第２記憶部に書き込む制御部と、
を備える記憶装置。
【請求項８】
前記第１記憶部は、ハードディスクドライブ記憶部であり、
前記第２記憶部は、可動部を持たない固体メモリ素子でデータ記憶領域を構成する固体メモリ記憶部である、
請求項７に記載の記憶装置。
【請求項９】
前記固体メモリ素子は、不揮発性半導体メモリ素子、またはトンネル磁気抵抗素子である、
請求項８に記載の記憶装置。
【請求項１０】
各々のデータ記憶領域に同一のデータを記憶する２つの記憶部を備える記憶装置の制御方法であって、
前記２つの記憶部のうち、何れの記憶部から前記データを読み出した方が短い読み出し時間になるかを判断する読み出し時間判断段階と、
前記データの読み出し命令を受けて、前記読み出し時間判断段階で判断した短い読み出し時間の記憶部から、前記データを読み出す制御段階と、
を備える記憶装置の制御方法。
【請求項１１】
データを第１読み出し時間で読み出す複数の第１記憶部と、
前記第１読み出し時間より短い第２読み出し時間で前記データを読み出す第２記憶部と、を備える記憶装置の制御方法であって、
書き込むデータの誤り検出符号データを生成する符号生成段階と、
前記データの書き込み命令を受けて、前記データを前記複数の第１記憶部に分散して書き込み、前記誤り検出符号データを前記第２記憶部に書き込む制御段階と、
を備える記憶装置の制御方法。
【請求項１２】
各々のデータ記憶領域に同一のデータを記憶する２つの記憶部を備える記憶装置の制御プログラムであって、前記記憶装置を、
前記２つの記憶部のうち、何れの記憶部から前記データを読み出した方が短い読み出し時間になるかを判断する読み出し時間判断部、
前記データの読み出し命令を受けて、前記読み出し時間判断部で判断した短い読み出し時間の記憶部から、前記データを読み出す制御部、
として機能させる制御プログラム。
【請求項１３】
データを第１読み出し時間で読み出す複数の第１記憶部と、
前記第１読み出し時間より短い第２読み出し時間で前記データを読み出す第２記憶部と、を備える記憶装置の制御プログラムであって、前記記憶装置を、
書き込むデータの誤り検出符号データを生成する符号生成部、
前記データの書き込み命令を受けて、前記データを前記複数の第１記憶部に分散して書き込み、前記誤り検出符号データを前記第２記憶部に書き込む制御部、
として機能させる制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、記憶装置、記憶装置の制御方法および制御プログラムに関する。特に、複数の記憶部に同一データを記録して、または複数の記憶部にストライピングデータと誤り検出符号データとを分散記録して、データの信頼性を高めた記憶装置、記憶装置の制御方法および制御プログラムに関する。
【背景技術】
【０００２】
データを２重化して、２重化したデータの各々を複数の記憶部に分けて記憶するミラー記憶装置（ＲＡＩＤ−１）が知られている。また、データをストライピングして、ストライピングしたデータのパリティデータをパリティディスクに記憶して、データの信頼性を高めたディスクアレイ記憶装置（ＲＡＩＤ−３，４）が知られている。たとえば特許文献１は、エラーを検出して処理するＮＡＶＩマイコンを備え、マスタードライブまたはミラードライブのいずれかにエラーが検出された場合、エラーが検出されていないドライブからデータを読み出すミラー記憶装置を開示する。また、たとえば特許文献２は、古いデータを読み出すディスクと新しいデータを書き込むディスクとを分けて、データディスクへのアクセスを見かけ上１回ですませるディスクアレイ装置を開示する。
【特許文献１】特開２００５−２５０８２７号公報
【特許文献２】特開平７−２９５７６３号公報
【発明の開示】
【発明が解決しようとする課題】
【０００３】
ミラー記憶装置あるいはディスクアレイ記憶装置等のＲＡＩＤ記憶装置において、ＲＡＩＤ構成に関わらずデータアクセス時間の短縮が望まれる。また、個別記憶装置の故障頻度がある程度存在することを想定されて設計されたＲＡＩＤ記憶装置ではあるものの、故障頻度の低いＲＡＩＤ記憶装置も勿論望まれる。記憶部にハードディスクドライブを採用するＲＡＩＤ記憶装置のデータアクセス時間は、ハードディスクドライブのあまり短くないアクセス時間で制限され、また、耐久性は、温度、湿度、振動あるいは地上からの高度等の外部環境に影響を受けて故障し易いとされるハードディスクドライブの信頼性で制限される。よって、よりアクセス時間が短く、機械的可動部を持たないが故に外部環境の影響を受けにくいとされる半導体メモリ記憶装置、たとえば一括消去型不揮発性半導体メモリを利用した半導体記憶装置に置き換える対策が考え得る。
【０００４】
しかし、半導体記憶装置は、ハードディスクドライブに比較してコスト競争力に劣り、書き換え回数に制限を有する。よってＲＡＩＤ記憶装置の記憶部を単純にハードディスクドライブから半導体記憶装置に置き換えるだけでは、真に競争力のあるＲＡＩＤ記憶装置を提供することは難しい。
【課題を解決するための手段】
【０００５】
上記課題を解決するために、本発明の形態においては、各々のデータ記憶領域に同一のデータを記憶する２つの記憶部と、２つの記憶部のうち、何れの記憶部からデータを読み出した方が短い読み出し時間になるかを判断する読み出し時間判断部と、データの読み出し命令を受けて、読み出し時間判断部により判断した短い読み出し時間の記憶部から、データを読み出す制御部と、を備える記憶装置を提供する。また本発明の他の形成においては、データを第１読み出し時間で読み出す複数の第１記憶部と、第１読み出し時間より短い第２読み出し時間でデータを読み出す第２記憶部と、書き込むデータの誤り検出符号データを生成する符号生成部と、データの書き込み命令を受けて、データを複数の第１記憶部に分散して書き込み、誤り検出符号データを第２記憶部に書き込む制御部と、を備える記憶装置を提供する。なお、上記の発明の概要は、本発明の必要な特徴の全てを列挙したものではない。これらの特徴群のサブコンビネーションもまた、発明となりうる。
【発明を実施するための最良の形態】
【０００６】
以下、発明の実施の形態を通じて本発明を説明するが、以下の実施形態は特許請求の範囲にかかる発明を限定するものではない。また実施形態の中で説明されている特徴の組み合わせの全てが発明の解決に必須であるとは限らない。
【０００７】
図１は、本実施形態の記憶装置１００の機能ブロックを、ホストコンピュータ１２０と共に示す。ホストコンピュータ１２０は、記憶装置１００にデータの書き込みあるいは読み出しを求める情報処理装置であってよい。本実施の形態の記憶装置１００は、固体メモリドライブ１０２と、ハードディスクドライブ１０４と、読み出し時間判断部１０６と、制御部１０８とを備える。
【０００８】
固体メモリドライブ１０２は、可動部を持たない固体メモリ素子でデータ記憶領域を構成する。固体メモリドライブ１０２は、機械的な可動部を持たないので、温度、湿度、振動、あるいは地上からの高度等の外部環境に影響を受けにくく、データ記憶の信頼性が高い。また固体メモリドライブ１０２は、機械的な可動部を持たないので、たとえばハードディスクドライブのように、データの書き込みあるいは読み出しの時にデータ記憶領域のデータを記憶している場所まで読み出しあるいは書き込みのためのセンサ（たとえば磁気ヘッド）を移動しなくてもよい。よって、データアクセスの時間が短い。
【０００９】
固体メモリ素子として、機械的な可動部を持たない固体メモリ素子、不揮発性半導体メモリ素子、またはトンネル磁気抵抗素子を例示できる。不揮発性半導体メモリ素子は、たとえば一括消去型ＥＥＰＲＯＭ（Ｅｌｅｃｔｒｉｃａｌ  Ｅｒａｓａｂｌｅ  Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）であってよい。一括消去型ＥＥＰＲＯＭの読み出し速度および書き込み速度として３０〜４０Ｍバイト／秒が例示できる。
【００１０】
トンネル磁気抵抗素子は、データ記憶の機構としてトンネル磁気抵抗現象を利用する。固定磁化方向を示す磁性材料と可変磁化方向を示す磁性材料とで磁化方向によって抵抗値が変化するトンネル磁気抵抗材料を挟む構造のトンネル磁気抵抗接合を形成する。可変磁化方向を示す磁性材料の磁化方向によって情報を記憶して、トンネル磁気抵抗接合の抵抗値を検出して情報を読み出す。
【００１１】
ハードディスクドライブ１０４は、表面に磁性材料を形成した堅いディスクをスピンドルモータによって高速回転して、磁性材料に磁化方向の変化を与えて情報を記憶する。磁気ヘッドによって磁化方向を変化させて情報を記録する。磁気ヘッドにより磁化方向の変化を検出して情報を読み出す。ハードディスクドライブ１０４は、スピンドルモータの回転および磁気ヘッドの移動等の機械的可動部を持ち、温度、湿度、振動、あるいは地上からの高度等の外部環境に影響を受けやすい。よって、データ記憶の信頼性があまり高くない。
【００１２】
またハードディスクドライブ１０４は、データを読み出すまたは書き込む時に磁気ヘッドの移動を伴うから、データの読み出しおよび書き込みに所定の時間を要する。ただし、データの読み出しの時、既に読み出すべきデータが書き込まれているトラック（ターゲットトラック）に磁気ヘッドが位置する場合には、ハードディスクドライブ１０４の読み出し時間は短くなる。
【００１３】
たとえば、データ記憶領域内の連続した領域に記憶されている連続データを読み出す場合には、磁気ヘッドが既にターゲットトラックに位置している場合が多く、読み出し時間は短い。一方、データ記憶領域内の不連続な領域に分散して記憶されている不連続データを読み出す場合には、磁気ヘッドがターゲットトラックまで移動するシーク動作の時間がかかり、データの読み出し時間は長くなる。ハードディスクドライブ１０４の連続データの読み出し速度および書き込み速度として、６０〜７０Ｍバイト／秒が例示でき、不連続データの読み出し速度および書き込み速度として１０〜２０Ｍバイト／秒が例示できる。
【００１４】
固体メモリドライブ１０２およびハードディスクドライブ１０４の各データ記憶領域に同一のデータを記憶する。すなわち、記憶装置１００は、固体メモリドライブ１０２およびハードディスクドライブ１０４を２つの記憶部とするＲＡＩＤ−１を構成する。なお、本実施形態では、各々１つの固体メモリドライブ１０２およびハードディスクドライブ１０４を例示するが、２つ以上の複数の固体メモリドライブ１０２およびハードディスクドライブ１０４を備えてもよい。
【００１５】
読み出し時間判断部１０６は、固体メモリドライブ１０２およびハードディスクドライブ１０４のうち、何れの記憶部からデータを読み出した方が短い読み出し時間になるかを判断する。なお、一方記憶部である固体メモリドライブ１０２の読み出し時間を予め定め、他方記憶部であるハードディスクドライブ１０４の読み出し時間を予定時間と比較してよい。
【００１６】
ハードディスクドライブ１０４の読み出し時間を推測するには以下の方法を例示できる。すなわち読み出し命令に含まれる読み出しデータのアドレスを参照してターゲットトラックを計算する。そして、現在の磁気ヘッドが位置しているトラックからターゲットトラックまでの距離を計算する。現在のトラック位置からターゲットトラックまでの距離（差）は、ターゲットトラックまで磁気ヘッドを移動する時間であるシーク時間の関数になる。
【００１７】
読み出し時間のうち、磁気ヘッドがターゲットトラック上にフォローイングした後にデータを読み出す時間は、シーク時間よりも短いので、シーク時間を推定できれば、読み出し時間をある程度の確度で推定できる。よって現在のトラック位置からターゲットトラックまでの差によって読み出し時間を推定できる。
【００１８】
前記の通り、ハードディスクドライブ１０４は磁気ヘッドがターゲットトラックに既にフォローイングしている場合には読み出し時間が短い。よって、読み出し時間判断部１０６は、ハードディスクドライブ１０４のヘッドが位置している現トラックまたは現シリンダと、データの読み出し命令に基づくターゲットトラックまたはターゲットシリンダとが一致する場合に、ハードディスクドライブ１０４を短い読み出し時間の記憶部と判断することができる。
【００１９】
あるいは、ハードディスクドライブ１０４の現トラックがターゲットトラックからわずかに外れた位置に存在する場合もある。このような場合シーク時間は極めて短い。よって、読み出し時間判断部１０６は、ターゲットトラックと現トラックとの差に基づいて決定できる。なお、ターゲットトラックと現トラックとの差には、差がない場合、つまりターゲットトラックと現トラックとが一致する場合を含む。
【００２０】
なお、読み出し時間判断部１０６は、固体メモリドライブ１０２についての予測読み出し時間を、平均読み出し時間に基づいて決定できる。ここで、平均読み出し時間には、節電モード時のクロック低下による比較的長い読み出し時間の場合、あるいはバースト読み出し等による比較的短い読み出し時間の場合を含み、これら読み出し時間の変動を考慮する。また、平均読み出し時間は、予め定めた値としてもよい。
【００２１】
制御部１０８は、たとえばホストコンピュータ１２０から、データの読み出し命令を受けて、読み出し時間判断部１０６により判断した短い読み出し時間の記憶部からデータを読み出す。つまり、読み出し時間判断部１０６が固体メモリドライブ１０２からの読み出しをハードディスクドライブ１０４からの読み出しより短い時間でできると判断した場合制御部１０８は固体メモリドライブ１０２からデータを読み出す。逆に読み出し時間判断部１０６がハードディスクドライブ１０４からの読み出しを固体メモリドライブ１０２からの読み出しより短い時間でできると判断した場合制御部１０８はハードディスクドライブ１０４からデータを読み出す。
【００２２】
なお、制御部１０８は、固体メモリドライブ１０２およびハードディスクドライブ１０４の両方に読み出し命令を発して、先に読み出し対象のデータを転送してきた記憶部からデータを読み出してもよい。この場合、後から転送されてきたデータは結果的に廃棄される。
【００２３】
また、前記した通り、ハードディスクドライブ１０４は連続データに対して読み出し時間が短く、不連続データに対して読み出し時間が長くなる。固体メモリドライブ１０２の読み出し時間がその中間にある場合、制御部１０８は、ハードディスクドライブ１０４から連続データを読み出して、固体メモリドライブ１０２から不連続データを読み出す。
【００２４】
また、制御部１０８は、データの読み出し命令を受けて固体メモリドライブ１０２に対するデータの読み出し制御を実行すると共に、ハードディスクドライブ１０４に対するデータのシーク制御を実行してよい。たとえば固体メモリドライブ１０２に対して読み出しが実行された場合であってもハードディスクドライブ１０４の磁気ヘッドをシーク制御しておけば、それが連続データの読み出しであった場合には、結果として次のデータの読み出し命令のときに磁気ヘッドはターゲットトラック上に位置する。このような場合、全体としての読み出し時間を短くできる。
【００２５】
図２は、記憶装置１００の読み出し処理フロー（Ｓ２００）の一例を示す。まず、制御部１０８が読み出し命令を受信する（Ｓ２０２）。次に読み出し時間判断部１０６が読み出し時間を判断する（Ｓ２０４）。さらに固体メモリドライブ１０２またはハードディスクドライブ１０４の何れの読み出し時間が短いかを判断する（Ｓ２０６）。
【００２６】
固体メモリドライブ１０２の方が読み出し時間が短いと判断した場合には、固体メモリドライブ１０２にリードコマンドを発行する（Ｓ２０８）。そしてハードディスクドライブ１０４にシークコマンドを発行する（Ｓ２１０）。その後ステップＳ２１４に進む。
【００２７】
一方ハードディスクドライブ１０４の方が読み出し時間が短いと判断した場合には、ハードディスクドライブ１０４にリードコマンドを発行する（Ｓ２１２）。その後ステップＳ２１４に進む。
【００２８】
ステップＳ２１４では、コマンド実行中にエラーがあるか否かを判断する（Ｓ２１４）。コマンド実行中にエラーがない、すなわちデータを正常に受信した場合、ホストコンピュータ１２０にデータを転送して（Ｓ２１６）、処理を終了する。
【００２９】
一方、コマンド実行中にエラーがある場合、逆側のドライブにリードコマンドを発行する（Ｓ２１８）。すなわち、固体メモリドライブ１０２にリードコマンドを発行してコマンド実行中にエラーを生じた場合はハードディスクドライブ１０４にリードコマンドを発行する。逆にハードディスクドライブ１０４にリードコマンドを発行してコマンド実行中にエラーを生じた場合は固体メモリドライブ１０２にリードコマンドを発行する。
【００３０】
ステップＳ２１８の後、コマンド実行中にエラーがあるか否かを判断して（Ｓ２２０）、コマンド実行中にエラーがない、すなわちデータを正常に受信した場合、ホストコンピュータ１２０にデータを転送して（Ｓ２１６）、処理を終了する。コマンド実行中にエラーがある場合、エラー処理を行い（Ｓ２２２）、処理を終了する。エラー処理には、データを正常に読み取れなかった旨のメッセージを転送すること、あるいは装置の故障の可能性があることを表示することを含む。
【００３１】
図３は、読み出し時間判断処理フロー（Ｓ３００）の一例を示す。まず、読み出し命令から読み出し対象のデータのアドレスを取得する（Ｓ３０２）。次に、データのアドレスからターゲットのトラックあるいはターゲットシリンダの番号を計算する（Ｓ３０４）。なお、トラックとシリンダとの関係は当業者に周知な事項であり、トラック番号とシリンダ番号とを適切に変換して何れかの番号を用いることによりヘッド位置を表現できる。よって、前記したトラック番号はシリンダ番号と読み替えることができる。
【００３２】
次にハードディスクドライブ１０４にステータスチェックコマンドを発行して現在のヘッド位置（フォローイングトラックあるいはフォローイングシリンダ）を取得する（Ｓ３０６）。ターゲットのトラックあるいはターゲットシリンダと取得したフォローイングトラックあるいはフォローイングシリンダとを比較して一致しているか否かを判断する（Ｓ３０８）。一致している場合にはハードディスクドライブ１０４の方が読み出し時間が短いと判断する（Ｓ３１０）。一致していない場合には固体メモリドライブ１０２の方が読み出し時間が短いと判断する（Ｓ３１２）。
【００３３】
以上説明した記憶装置１００によれば、読み出し命令を受けて、データを読み出す時間が短い方の固体メモリドライブ１０２またはハードディスクドライブ１０４からデータを読み出す。よって読み出し時間を短くできる。特に、不連続データの場合固体メモリドライブ１０２からデータを読み出すことができる。連続データの場合は、ハードディスクドライブ１０４からデータを読み出すことができる。
【００３４】
一方、本実施形態の記憶装置１００はハードディスクドライブ１０４を備えるから外部環境の影響を受けて故障を生じる場合がある。しかし、固体メモリドライブ１０２は外部環境の影響を受けることは少なく、外部環境に起因する故障の発生確率は小さい。仮に外部環境の影響によってハードディスクドライブ１０４に故障が生じても、固体メモリドライブ１０２とハードディスクドライブ１０４とには同一データを記録するミラーを構成しているので、固体メモリドライブ１０２がバックアップして故障の影響は抑制できる。
【００３５】
また、本実施形態の記憶装置１００は固体メモリドライブ１０２を備えるから書き換え回数の制限を受けて故障を生じる場合がある。しかし、ハードディスクドライブ１０４への書き換え回数は実質的に制限がない（機械的寿命の方が書き換え回数による制限寿命より短い）。仮に書き換え回数制限によって固体メモリドライブ１０２に故障が生じても、固体メモリドライブ１０２とハードディスクドライブ１０４とには同一データを記録するミラーを構成しているので、ハードディスクドライブ１０４がバックアップして故障の影響は抑制できる。
【００３６】
また、ハードディスクドライブ１０４の記録密度の高密度化に伴って、狭いトラック間隔に起因する記録不良が問題になる場合がある。つまり、記録データのパターンによっては、隣接するトラックに記録されたデータの磁界に影響を受けてデータの記録不良が発生する場合がある。このような場合であっても、本実施形態の記憶装置１００は固体メモリドライブ１０２とハードディスクドライブ１０４とに同一データを記録するミラーを構成するので、固体メモリドライブ１０２に存在によってハードディスクドライブ１０４への記録不良の影響はない。さらに、コスト競争力に劣る固体メモリドライブ１０２は、記憶部全体の半分を占めるだけなので、コスト上昇の影響を抑制できる。
【００３７】
なお、図４は、読み出し時間判断処理フローの他の例を示す。図４の処理フローにおけるステップＳ４０２〜ステップＳ４０６、ステップＳ４１０およびステップＳ４１２は、図３の処理フローにおけるステップＳ３０２〜ステップＳ３０６、ステップＳ３１０およびステップＳ３１２と同様であってよい。ステップＳ４０８において、図３のステップＳ３０８とは相違してターゲットトラックあるいはターゲットシリンダとフォローイングトラックあるいはフォローイングシリンダとの差が所定値以下であるかを判断している（Ｓ４０８）。ターゲットトラック等とフォローイングトラック等との差が僅か（所定値で指定する）である場合はヘッドシークのための時間は僅かであり、そのような場合ハードディスクドライブ１０４の方が読み出し時間が短いと判断してよい。なお、所定値としては０乃至２トラックを例示できる。
【００３８】
図５は、他の実施形態の記憶装置５００の機能ブロックを、ホストコンピュータ１２０と共に示す。ホストコンピュータ１２０は前記した通りであってよい。本実施の形態の記憶装置５００は、固体メモリドライブ５０２と、ハードディスクドライブ５０４およびハードディスクドライブ５０５と、符号生成部５０６と、制御部５０８とを備える。
【００３９】
固体メモリドライブ５０２は、前記した固体メモリドライブ１０２と同様であってよい。ハードディスクドライブ５０４およびハードディスクドライブ５０５は、前記したハードディスクドライブ１０４と同様であってよい。なお、固体メモリドライブ５０２は、第２記憶部の一例であり、ハードディスクドライブ５０４およびハードディスクドライブ５０５は、複数の第１記憶部に一例である。
【００４０】
第１記憶部であるハードディスクドライブ５０４およびハードディスクドライブ５０５は、データを第１読み出し時間で読み出す。一方、第２記憶部である固体メモリドライブ５０２は第１読み出し時間より短い第２読み出し時間でデータを読み出す。ハードディスクドライブ５０４およびハードディスクドライブ５０５は、前記した通り連続データを読み出す場合には比較的読み出し時間が短いが、不連続データを読み出す場合には読み出し時間が極めて長くなる。一方、固体メモリドライブ５０２の読み出し時間は、連続データであっても不連続データであってもほぼ変わらず一定の読み出し時間になる。よって平均としてみれば、ハードディスクドライブ５０４およびハードディスクドライブ５０５の読み出し時間は固体メモリドライブ５０２の読み出し時間より長い。
【００４１】
符号生成部５０６は、書き込むデータの誤り検出符号データを生成する。誤り検出符号データとしてパリティデータ、誤り訂正符号データ、ハミング符号データを例示できる。符号生成部５０６は、ハードディスクドライブ５０４およびハードディスクドライブ５０５に分散して記録する書き込みデータのストライピングデータについて誤り検出符号データを生成する。
【００４２】
制御部５０８は、データの書き込み命令を受けて、データをハードディスクドライブ５０４およびハードディスクドライブ５０５に分散して書き込み、誤り検出符号データを固体メモリドライブ５０２に書き込む。制御部５０８は、その他データを読み出す制御あるいは誤り検出符号を用いた誤り検出または誤り訂正を制御する。なお、固体メモリドライブ５０２が可動部を持たない固体メモリ素子でデータ記憶領域を構成する固体メモリ記憶部の一例であること、固体メモリ素子として、不揮発性半導体メモリ素子またはトンネル磁気抵抗素子を例示できることは前記と同様であってよい。
【００４３】
図６は、記憶装置５００の書き込み処理フロー（Ｓ６００）の一例を示す。まず、制御部５０８が書き込み命令を受信する（Ｓ６０２）。次に、書き込み命令に付随する書き込みデータをバッファする（Ｓ６０４）。さらにバッファしたデータをストライピングする（Ｓ６０６）。バッファデータのストライピングは、たとえばビット単位、バイト単位、ブロック単位で、データを分割する。
【００４４】
ストライピングされたデータを順にハードディスクドライブ５０４およびハードディスクドライブ５０５に分散して割り当てる（Ｓ６０８）。なお、本例ではハードディスクドライブとして２つのハードディスクドライブ５０４およびハードディスクドライブ５０５を例示しているが、さらに多数のハードディスクドライブを備えてもよい。この場合ストライピングデータは多数のハードディスクドライブに割り当てられる。
【００４５】
次にハードディスクドライブ５０４およびハードディスクドライブ５０５にライトコマンドを発行して（Ｓ６１０）、各ハードディスクドライブに割り当てたデータを各ハードディスクドライブに転送する（Ｓ６１２）。ステップＳ６０８〜ステップＳ６１２の処理に並行して、ストライピングデータのパリティデータを生成する（Ｓ６１４）。なお、ここではパリティデータを例示しているが前記したような他の誤り検出符号を生成してよい。次に、固体メモリドライブ５０２にライトコマンドを発行して（Ｓ６１６）、固体メモリドライブ５０２にパリティデータを転送する（Ｓ６１８）。
【００４６】
ステップＳ６１２およびステップＳ６１８の各転送に対するハードディスクドライブ５０４、ハードディスクドライブ５０５および固体メモリドライブ５０２から転送ＯＫを受信したかを判断して（Ｓ６２０）、ＯＫの場合には処理を終了する。ＯＫでない場合はエラー処理を実行して（Ｓ６２２）、処理を終了する。なお、エラー処理には再度書き込みをトライすることを含む。
【００４７】
図７は、記憶装置５００の読み出し処理フロー（Ｓ７００）の一例を示す。まず、制御部５０８が読み出し命令を受信する（Ｓ７０２）。次に制御部５０８は、各ハードディスクドライブおよび固体メモリドライブ５０２に読み出し命令を発行する（Ｓ７０４、Ｓ７１０）。各ハードディスクドライブからデータを受信したかを判断して（Ｓ７０６）、同時期に固体メモリドライブ５０２からパリティデータを受信しかたを判断する（Ｓ７１２）。データの受信が正常に為されない場合には再度読み出しを試行する。
【００４８】
なお、固体メモリドライブ５０２からの読み出しは、各ハードディスクドライブからの読み出しより短い時間で行われるので、次の読み出し命令を処理する場合に、素早くパリティデータを受信できる。ハードディスクドライブが多数台接続されている場合、データ読み出しには使用されていないハードディスクドライブが次の読み出し命令で使用される場合があり、このような場合の読み出し処理においてはパリティデータの読み出しが全体の読み出し速度を律速する場合がある。しかし、本実施形態の記憶装置５００においてはパリティデータの読み出し時間が短く、全体の読み出し速度を高めることができる。
【００４９】
ステップＳ７０６およびステップＳ７１２で各データを正常に受信したと判断した場合は、パリティチェックを実行する（Ｓ７０８）。そして、パリティチェックがＯＫかを判断して（Ｓ７１４）、ＯＫの場合にはデータをホストコンピュータ１２０に転送する（Ｓ７１８）。そして処理を終了する。
【００５０】
パリティチェックの結果がＯＫでない場合にはエラー処理を実行する（Ｓ７１６）。エラー処理には、パリティデータを利用して誤りデータを訂正することを含む。データの誤り訂正に成功した場合にはステップＳ７１８に進んでデータをホストコンピュータ１２０に転送する（Ｓ７１８）。なお、誤りが訂正できない場合はデータを読み取れない旨のメッセージを発行して処理を終了できる。
【００５１】
記憶装置５００とその制御方法によれば、パリティデータを読み出し時間の短い固体メモリドライブ５０２に記録する。その結果、パリティデータの読み出し処理に係る時間を短縮して、パリティ計算に係る時間のオーバーヘッドを低減できる。
【００５２】
以上、本発明を実施の形態を用いて説明したが、本発明の技術的範囲は上記実施の形態に記載の範囲には限定されない。上記実施の形態に、多様な変更または改良を加えることが可能であることが当業者に明らかである。その様な変更または改良を加えた形態も本発明の技術的範囲に含まれ得ることが、特許請求の範囲の記載から明らかである。
【００５３】
たとえば、前記した実施形態では、同一データを記憶する２つの記憶部の一方記憶部またはデータを第１読み出し時間で読み出す記憶部としてハードディスクドライブ１０４、ハードディスクドライブ５０４およびハードディスクドライブ５０５を例示した。また同一データを記憶する２つの記憶部の他方記憶部または第１読み出し時間より短い第２読み出し時間でデータを読み出す記憶部として固体メモリドライブ１０２、固体メモリドライブ５０２を例示した。しかし、２つの記憶部の一方記憶部または第１読み出し時間でデータを読み出す記憶部として、低速な読み出しを実行するハードディスクドライブを例示できる。また、２つの記憶部の他方記憶部または第１読み出し時間より短い第２読み出し時間でデータを読み出す記憶部として、より高速な読み出しを実行するハードディスクドライブを例示できる。
【００５４】
たとえばスピンドルモータの回転速度の高い高速回転型のハードディスクドライブは読み出し速度が高く、２つの記憶部の他方記憶部または第２読み出し時間の記憶部として例示できる。それより回転速度の低いハードディスクドライブを２つの記憶部の一方記憶部または第１読み出し時間の記憶部として例示できる。
【００５５】
また、前記実施形態では、不揮発性半導体メモリとして、一括消去型不揮発性半導体メモリを例示した。しかし、不揮発性半導体メモリとして、たとえばヒステリシスを持つ強誘電体を絶縁膜とする１つのコンデンサと１つのトランジスタとでメモリ素子を構成するＦＲＡＭ（Ｆｅｒｒｏｅｌｅｃｔｒｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）を適用してもよい。
【図面の簡単な説明】
【００５６】
【図１】本実施形態の記憶装置１００の機能ブロックを、ホストコンピュータ１２０と共に示す。
【図２】記憶装置１００の読み出し処理フロー（Ｓ２００）の一例を示す。
【図３】読み出し時間判断処理フロー（Ｓ３００）の一例を示す。
【図４】読み出し時間判断処理フローの他の例を示す。
【図５】他の実施形態の記憶装置５００の機能ブロックを、ホストコンピュータ１２０と共に示す。
【図６】記憶装置５００の書き込み処理フロー（Ｓ６００）の一例を示す。
【図７】記憶装置５００の読み出し処理フロー（Ｓ７００）の一例を示す。
【符号の説明】
【００５７】
１００  記憶装置
１０２  固体メモリドライブ
１０４  ハードディスクドライブ
１０６  読み出し時間判断部
１０８  制御部
１２０  ホストコンピュータ
５００  記憶装置
５０２  固体メモリドライブ
５０４  ハードディスクドライブ
５０５  ハードディスクドライブ
５０６  符号生成部
５０８  制御部
【図１】
2008293350.tif 000003
【図２】
2008293350.tif 000004
【図３】
2008293350.tif 000005
【図４】
2008293350.tif 000006
【図５】
2008293350.tif 000007
【図６】
2008293350.tif 000008
【図７】
2008293350.tif 000009