(57)【要約】【課題】  アドレス変換テーブルを記憶する専用の不揮発性メモリを不要とすると共に、シーケンシャルリードの速度を早める情報記憶装置を提供する。【解決手段】  ＣＰＵ１０がＨＤＤ１２乃至１４にデータを書込む際には、ＬＦＳによりデータをＤＣＤ領域１５にストライプとして記憶させる。このとき、当該ストライプには論理アドレスと物理アドレスとの対応に関する情報、及びタイムスタンプ情報を付加することにより、当該情報からアドレス変換テーブルを構築できるようにする。さらに、書込コマンド及び読込コマンドの非入力時に、ＤＣＤ領域１５から通常記憶領域１６にデータを移行させる。【選択図】      図１
2007156549.tif 000002
【特許請求の範囲】
【請求項１】
同時に書込み可能な複数の記憶装置が其々有する記憶領域から構成される、論理的に単一な第１の記憶領域と、
前記複数の記憶装置の記憶領域に前記第１の記憶領域とは別に確保される第２の記憶領域と、
前記第１の記憶領域に書込むデータを一時的に記憶する書込バッファと、
前記書込バッファに記憶されたデータ及び当該データに関するタイムスタンプ情報を、前記第１の記憶領域の空領域に、前記複数の記憶装置に振り分けて同時に書込む書込手段と、
前記タイムスタンプ情報に基づいて、前記第１の記憶領域に記憶されたデータのうち最新のデータが記憶された物理アドレスを得るアドレス管理テーブルを作成する管理テーブル作成手段と、
前記アドレス管理テーブルを参照して前記第１の記憶領域に格納されたデータを読込む読込手段と、
前記第１の記憶領域に記憶されたデータを、前記第２の記憶領域に移すデータ移行手段と
を備えることを特徴とする情報記憶装置。
【請求項２】
前記データ移行手段は、前記書込手段による書込み、及び前記読込手段による読込みを行うためのコマンドが入力されていない時に、前記第１の記憶領域に記憶されたデータの前記第２の記憶領域への移行作業を開始すること
を特徴とする請求項１記載の情報記憶装置。
【請求項３】
請求項１記載の情報記憶装置において、
前記管理テーブルを参照し、前記第１の記憶領域内に記憶されている各データの内、最も新しいデータを集めて、タイムスタンプ情報と一緒に前記第１の記憶領域の空領域に、前記複数の記憶装置に振り分けて記憶させ、前記データが書込まれていた領域を空領域として確保するデータ整理を行うデータ整理手段
をさらに備えることを特徴とする情報記憶装置。
【請求項４】
前記データ整理手段は、前記書込手段による書込み、及び前記読込手段による読込みを行うためのコマンドが入力されていない時に、データ整理を開始すること
を特徴とする請求項３記載の情報記憶装置。
【請求項５】
前記書込手段は、タイムスタンプ情報が前記複数の記憶装置に振り分けて書込むこと
を特徴とする請求項１記載の情報記憶装置。
【請求項６】
前記書込手段は、タイムスタンプ情報が前記複数の記憶装置に均等に記憶されるように書込むこと
を特徴とする請求項５記載の情報記憶装置。
【請求項７】
前記第２の記憶領域内に記憶されたデータ量の増加に応じて、前記第１の記憶領域を減らし、前記第２の記憶領域に割り当てること
を特徴とする請求項１記載の情報記憶装置。
【請求項８】
前記第２の記憶領域内に記憶されたデータ量が予め定められた所定量を超えたときに、前記第１の記憶領域の空領域を、前記第２の記憶領域に割り当てること
を特徴とする請求項７記載の情報記憶装置。
【請求項９】
請求項１記載の情報記憶装置において、
前記複数の記憶装置は、其々の記憶装置が有する記憶領域からデータを書込むと共に、其々の記憶装置が有する記憶領域からデータを読込むヘッドを其々有し、
前記書込手段は、前記第１の記憶領域にデータを書込む際に、前記複数の記憶装置が有する其々のヘッドの移動に要する時間を考慮してデータを書込むこと
を特徴とする情報記憶装置。
【請求項１０】
請求項９記載の情報記憶装置において、
前記第１の記憶領域内に既にデータが記憶されているストライプを認識するためのストライプ情報
を更に備え、
前記書込手段は前記ストライプ情報に基づいて、各空きストライプの内、前記複数の記憶装置が有する其々のヘッドの位置のうち最も遠いものまでの距離が最も近い空きストライプにデータを書込むこと
を特徴とする情報記憶装置。
【請求項１１】
前記第１の記憶領域及び前記第２の記憶領域は、ＲＡＩＤ５を構成すること
を特徴とする請求項１記載の情報記憶装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、例えば複数の記憶装置を有する情報記憶装置に関する。
【背景技術】
【０００２】
従来より、ＬＦＳ（Ｌｏｇ−Ｓｔｒｕｃｔｕｒｅｄ  Ｆｉｌｅ  Ｓｙｓｔｅｍ、ログ構造化ファイルシステム）と呼ばれるデータ書込み方法が提案されている（例えば、特許文献１参照）。ＬＦＳとは、更新データを用意した書込バッファに蓄積し、この蓄積した更新データを旧データを書き換えることなく、ディスクドライブ内の空領域に一括して書込む方法である。
【０００３】
このようなＬＦＳを使用する手法では通常、論理アドレスと、当該論理アドレスの最も新しいデータが記憶された物理アドレスとの対応付けるアドレス変換テーブルが必要となる。アドレス変換テーブルは通常、電源がオフとなっても当該テーブルが消去されないように不揮発性メモリ上に作成される。これを換言すれば専用の不揮発性メモリを有する必要があるということであるので、通常のＰＣ等でソフトウェアＲＡＩＤ（Ｒｅｄｕｎｄａｎｔ  Ａｒｒａｙｓ  ｏｆ  Ｉｎｅｘｐｒｅｎｓｉｖｅ  Ｄｉｓｋｓ）を構成する場合に、当該手法を採用することはできない。
【０００４】
そこで、特許文献１ではデータをストライプとして書込む際に、当該ストライプ中に論理アドレスタグブロックと呼ばれるタイムスタンプ情報を埋め込んだ上でディスク装置に書込んでいる。このようにすることで、全ストライプに対して論理アドレスタグブロックを読込めば論理アドレスと物理アドレスとの対応がわかるようになるので、必ずしも不揮発性メモリ上にアドレス変換テーブルを構成する必要は無くなる。
【０００５】
また一方で、ＬＦＳでは、更新されたデータが新たな空領域に書込まれることとなるので、論理アドレスとしては連続したデータであっても、当該データの一部が更新されると更新部分は別の物理アドレスに書込まれることとなり、論理アドレスとして連続したデータを読込む場合（シーケンシャルリード）にも実際にはランダムアクセスとなり、読込時間が長くなるという課題があった。
【０００６】
そこで、特許文献２ではシーケンシャルリードがランダムアクセスになってしまうというＬＦＳの構造的な問題を回避するために、ディスクの領域をＬＦＳと、従来型のファイルシステム構造とに論理的に分離し、ＬＦＳ領域をあたかもメモリキャッシュのように利用する技術が知られている。
【特許文献１】特開平１１−１９４８９９号公報
【特許文献２】米国特許第５７５４８８８号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
しかしながら、特許文献２記載の手法は、主にディスクアレイなどの専用のディスクシステムを対象としたものであって、ＬＦＳ領域に記憶されたデータの物理アドレスと論理アドレスとの対応をアドレス変換テーブルとして記憶する専用の不揮発性メモリを有する必要があり、通常のＰＣでソフトウェアＲＡＩＤを構成する場合に当該手法を採用することはできないという課題があった。
【０００８】
そこで本発明は、アドレス変換テーブルを記憶する専用の不揮発性メモリを不要とすると共に、シーケンシャルリードの速度を早めることのできる情報記憶装置を提供することを目的とする。
【課題を解決するための手段】
【０００９】
上記目的を達成するために、本発明の情報記憶装置は、同時に書込み可能な複数の記憶装置が其々有する記憶領域から構成される、論理的に単一な第１の記憶領域と、前記複数の記憶装置の記憶領域に前記第１の記憶領域とは別に確保される第２の記憶領域と、前記第１の記憶領域に書込むデータを一時的に記憶する書込バッファと、前記書込バッファに記憶されたデータ及び当該データに関するタイムスタンプ情報を、前記第１の記憶領域の空領域に、前記複数の記憶装置に振り分けて同時に書込む書込手段と、前記タイムスタンプ情報に基づいて、前記第１の記憶領域に記憶されたデータのうち最新のデータが記憶された物理アドレスを得るアドレス管理テーブルを作成する管理テーブル作成手段と、前記第２の記憶領域内に記憶されたデータを読込むと共に、前記アドレス管理テーブルを参照して前記第１の記憶領域に格納されたデータを読込む読込手段と、前記第１の記憶領域に記憶されたデータを、前記第２の記憶領域に移すデータ移行手段とを備えることを特徴とする。
【発明の効果】
【００１０】
本発明によれば、アドレス変換テーブルを記憶する専用の不揮発性メモリを不要とすると共に、シーケンシャルリードの速度を早める情報記憶装置を提供することができる。
【発明を実施するための最良の形態】
【００１１】
以下、本発明の情報記憶装置について、図面を参照しながら説明する。
【実施例１】
【００１２】
図１は、本発明の情報記憶装置の実施例に係るパーソナルコンピュータ（以下、ＰＣ）の構成を示す図である。ＰＣ１は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）１０と、メモリ１１と、ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）１２、１３、１４とから構成され、各構成要素はバスにより接続されている。
【００１３】
ＨＤＤ１２、１３、１４は、ＣＰＵ１０の制御の下、同時に書込み及び読込みが可能な記憶装置である。
尚、ＨＤＤ１２は記憶領域Ａ１及び記憶領域Ａ２、ＨＤＤ１３は記憶領域Ｂ１及びＢ２、ＨＤＤ１４は記憶領域Ｃ１及びＣ２を其々の記憶領域として有している。記憶領域Ａ１、Ｂ１、Ｃ１はＲＡＩＤ５のＤＣＤ（Ｄｉｓｋ  Ｃａｃｈｉｎｇ  Ｄｉｓｋ）領域１５を構成し、記憶領域Ａ２、Ｂ２、Ｃ２はＲＡＩＤ５の通常記憶領域１６を構成する。尚、ＤＣＤ領域１５は、通常記憶領域１６にデータを書込むまでに一時的にデータ記憶させる、キャッシュの役割を果たす記憶領域であり、ユーザから見える記憶領域は通常記憶領域１６のみである。
【００１４】
ＤＣＤ領域１５は、通常記憶領域１６へデータを移行する前に、一時的にデータが記憶される記憶領域である。当該領域はＲＡＩＤ５を構成しており、また、ＬＦＳによりデータの書込みが行われる。ＬＦＳでは、ある論理アドレスのデータＡをデータＡ’に書き換える際に、データＡ’を書込みバッファに蓄積し、データＡが記憶された物理アドレスのデータを書き換えることなく、ＤＣＤ領域１５の空領域に、書込みバッファに蓄積された他のデータと共にデータＡ’を１つのストライプとして記憶させる。これにより、データＡや他の書換前の旧データが記憶された物理アドレスを其々シークすることなく、当該データを一括して書込むことができるようになり、書き込み速度を著しく向上させることができる。尚、本実施例ではＤＣＤ領域１５はＲＡＩＤ５を構成しているが、ＲＡＩＤ１で構成しても構わない。
【００１５】
通常記憶領域１６は、ＣＰＵ１０の制御の下、ＤＣＤ領域１５に記憶されたデータを移行して記憶する記憶領域であり、ＲＡＩＤ５を構成している。データ移行後には、ＤＣＤ領域１５から当該データは削除される。この通常記憶領域１６では、ＬＦＳは構成しておらず、データ書換時には通常行われているように、同一の論理アドレスのデータを更新する際には、旧データの上から新データを書込む。
【００１６】
ＣＰＵ１０は、ＨＤＤ１２乃至１４へのデータの書込み及び読込み、若しくはＤＣＤ領域１５から通常記憶領域１６へのデータ移行、又は後述するＤＣＤ領域１５内でのストライプの整理等の各種処理を制御する。
【００１７】
メモリ１１は、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）等の揮発性の記憶媒体であり、タイムスタンプ１１ａ、アドレス変換テーブル１１ｂ、ストライプ情報１１ｃ、書込みバッファ１１ｄを有する。
【００１８】
タイムスタンプ１１ａは、書込みバッファ１１ｄに記憶されたデータをＤＣＤ領域１５に書込む毎にインクリメントされるタイムスタンプデータである。当該タイムスタンプ１１ａの情報は、ＤＣＤ領域１５へのデータ書込み時に、タイムスタンプ情報として当該ストライプに付加される。
【００１９】
書込みバッファ１１ｄは、ＣＰＵ１０がＨＤＤ１２乃至１４にデータを書込む前に、データを一時的に記憶しておくバッファである。書込みバッファ１１ｄに記憶されたデータは、所定量に達した際に、タイムスタンプ情報と共にストライプとしてＤＣＤ領域１５に書込まれる。
【００２０】
アドレス変換テーブル１１ｂは、ＤＣＤ領域に記憶されたデータについての、論理アドレスと、実際にデータが記憶されている物理アドレスとの対応が記載されたテーブルである。書込みバッファ１１ｄからＤＣＤ領域１５にデータが書込まれる際、及びＤＣＤ領域１５から通常記憶領域１６にデータを移行する際にアドレス変換テーブル１１ｂは更新される。ＣＰＵ１０がＤＣＤ領域１５内に記憶されたデータを読込む際には、当該アドレス変換テーブル１１ｂを参照することにより、其々のデータが記憶されている物理アドレスを知ることができるので、ＣＰＵ１０は各データを読込むことができるようになる。
【００２１】
図２は、アドレス変換テーブル１１ｂの例を示す図である。其々の論理アドレスに対して、その論理アドレスに割り当てられたデータが記憶されているＤＣＤ領域１５内の物理アドレスが記載されている。図２の例では、論理アドレスＬ２に記憶されたデータの物理アドレスはＰ５３であり、論理アドレスＬ４に記憶されたデータの物理アドレスはＰ２、論理アドレスＬ５に記憶されたデータの物理アドレスはＰ５１である。
【００２２】
尚、図２において論理アドレスＬ１及びＬ３に対応する物理アドレスが記載されていないが、これは論理アドレスＬ１及びＬ３にはデータが記憶されていないということである。
【００２３】
ストライプ情報１１ｃは、ＤＣＤ領域の其々のストライプが、使用中が空きストライプかを知るためのテーブルである。書込みバッファ１１ｄからＤＣＤ領域１５にデータが書込まれる際、若しくはＤＣＤ領域１５内でのストライプの整理の際、又はＤＣＤ領域１５から通常記憶領域１６へのデータの移行の際にストライプ情報１１ｃは更新される。
【００２４】
図３は、ストライプ情報１１ｃの例を示す図である。図３の例では、各ストライプが使用済みか否かを１又は０で示している。図３の例では、ストライプＳＴ１、ＳＴ２、ＳＴ３の値が１であるので使用済み、ストライプＳＴ１、ＳＴ４の値が０であるので未使用（空領域を構成）であることがわかる。
【００２５】
次に、ＣＰＵ１０がＤＣＤ領域１５へデータを書込む際の処理を図４乃至図６を参照しながら説明する。図４は、ＤＣＤ領域１５へデータを書込む際の処理を説明するための図である。
【００２６】
ＣＰＵ１０は、ＨＤＤ１２乃至１４に書込むデータを、所定長の論理ブロックに分割した上で、まず書込みバッファ１１ｄに格納させる。
書込みバッファ１１ｄ上のデータが論理ブロックＫ×Ｎ−１個（Ｋ：１台のＨＤＤに同時に書込む論理ブロックであり図４の例では４個、Ｎ：ＨＤＤの台数であり本実施例では３台）に達すれば、ＣＰＵ１０はこのＫ×Ｎ−１個の論理ブロックのデータに、論理ブロック１つ分の論理アドレスタグブロックを合わせて一つのストライプとし、ＨＤＤ１２乃至ＨＤＤ１４に其々論理ブロック４個ずつとなるように振り分けて、同時にＤＣＤ領域１５に書込む。
【００２７】
尚、論理アドレスタグブロックには、ストライプ内のＫ×Ｎ−１個のデータに対する其々の論理アドレスと、タイムスタンプ情報とを含む。タイムスタンプ情報は、タイムスタンプ１１ａの値である。タイムスタンプ１１ａは、ＤＣＤ領域１５にストライプが書込まれる毎にインクリメントされるので、タイムスタンプ情報には新しいストライプほど大きな値が付与される。即ち、其々のストライプに記憶されているデータの中で、最も新しいタイムスタンプ情報が付与されているストライプのデータが、最も新しいデータ（有効なデータ）となる。
【００２８】
図５は、書込みバッファ１１ｄからＤＣＤ領域１５へデータを書込む際のアドレス変換テーブル１１ｂの更新について説明するための図である。尚、この図において、１台のＨＤＤに同時に書込む論理ブロック数（上記Ｋ）は２個であるものとする。
【００２９】
まず、ＣＰＵ１は、書込みバッファ１１ｄに記憶されたデータを、ＨＤＤ１２乃至１４に振り分けてストライプＳＴ１として書込む。このストライプＳＴ１に含まれているデータは其々論理アドレスＬ２、Ｌ４、Ｌ７、Ｌ１０、Ｌ１５として記憶されるデータであり、其々実際に記憶される領域のアドレスはＰ１、Ｐ２、Ｐ３、Ｐ４、Ｐ５であるものとする。また、論理アドレスタグブロック内のタイムスタンプ情報の値はＴ１である。
【００３０】
この際、ＣＰＵ１０は、アドレス変換テーブル１１ｂを、論理アドレスＬ２に対して物理アドレスＰ１、論理アドレスＬ４に対して物理アドレスＰ２、論理アドレスＬ２に対して物理アドレスＰ３、論理アドレスＬ１０に対して物理アドレスＰ４、論理アドレスＬ１５に対して物理アドレスＰ５が対応づくようにアドレス変換テーブル１１ｂを更新する。
【００３１】
次に、ＣＰＵ１０が書込みバッファ１１ｄに新たに記憶されたデータをＨＤＤ１２乃至１４に振り分けてストライプＳＴ２として書込むことを考える。ストライプＳＴ１と、ストライプＳＴ２とは、ＨＤＤ１２乃至１４上で異なる位置に存在するストライプであり、即ちストライプＳＴ１のデータを上書きするものではない。
【００３２】
このストライプＳＴ２に含まれているデータは其々論理アドレスＬ１、Ｌ７、Ｌ８、Ｌ１０、Ｌ１１として記憶されるデータであり、其々実際に記憶される領域のアドレスはＰ７、Ｐ８、Ｐ９、Ｐ１０、Ｐ１１であるものとする。また、論理アドレスタグブロック内のタイムスタンプ情報の値はＴ２（Ｔ２＞Ｔ１）である。
【００３３】
この際、ＣＰＵ１０は、アドレス変換テーブル１１ｂを、論理アドレスＬ１に対して物理アドレスＰ７、論理アドレスＬ８に対して物理アドレスＰ９、論理アドレスＬ１１に対して物理アドレスＰ１１を対応付けて新たにアドレス変換テーブル１１ｂに記載すると共に、論理アドレスＬ７に対応付ける物理アドレスの値をＰ３からＰ８に、論理アドレスＬ１０に対応付ける物理アドレスの値をＰ４からＰ１０に更新する。即ち、論理アドレスＬ７及びＬ１０のデータは、其々ストライプＳＴ１内のデータからストライプＳＴ２内の新たなデータに更新されたということであり、換言すれば、ストライプＳＴ１内の物理アドレスＰ３及びＰ４に記憶されたデータは、古いデータであり不要ということになる。
【００３４】
図６を参照しながら、ＣＰＵ１０がＤＣＤ領域１５にデータを書込む際の処理の流れについて説明する。図６は、ＣＰＵ１０がＤＣＤ領域１５にデータを書込む際の処理の流れを示す図である。
【００３５】
ＣＰＵ１０は、まず書込コマンドが入力されたか否かを判断する（Ｓ６０１）。書込コマンドが入力されていないときには（Ｓ６０１のＮｏ）、Ｓ６０１に戻り、書込コマンドの入力を待つ（Ｓ６０１）。
【００３６】
書込コマンドが入力されたときには（Ｓ６０１のＹｅｓ）、ＨＤＤ１２乃至１４に書込むべきデータを、論理ブロックに分割して書込バッファ１１ｄに記憶させる（Ｓ６０２）。
【００３７】
さらに、ＣＰＵ１０は、書込バッファ１１ｄ内のデータが論理ブロックＫ×Ｎ−１個（Ｋ：１台のＨＤＤが同時に書込可能な論理ブロック数、Ｎ：ＨＤＤの台数）に達しているかどうかを判定する（Ｓ６０３）。書込バッファ１１ｄ内のデータがＫ×Ｎ−１個に達していない場合には、Ｓ６０１に戻り、新たな書込コマンドの入力を待つ。
【００３８】
書込バッファ１１ｄ内のデータが論理ブロックＫ×Ｎ−１個に達した場合には（Ｓ６０３のＹｅｓ）、ＣＰＵ１０は、書込バッファ１１ｄ内のデータと、これらのデータの其々の論理アドレス及びタイムスタンプ情報を含む論理アドレスタグブロックとからストライプを作成し、ＤＣＤ領域１５の空領域に記憶させる（Ｓ６０４）。
【００３９】
さらに、ＣＰＵ１０は、アドレス変換テーブル１１ｂを更新することにより、其々のデータを記憶させた物理アドレスと各データの論理アドレスとの対応を図る（Ｓ６０５）。またこれと共に、ストライプ情報１１ｃを更新し、ＤＣＤ領域１５に書込んだストライプを使用済みとする（Ｓ６０６）。更に、タイムスタンプ１１ａをインクリメントする（Ｓ６０７）。
【００４０】
尚、図６の流れによりＤＣＤ領域１５にデータを書込むストライプの選択方法について、図７を参照しながら説明する。図７の例において、ストライプＳＴ１乃至ＳＴ６はＤＣＤ領域１５内のストライプ、ストライプＳＴ７乃至ＳＴ１２は通常記憶領域１６内のストライプとする。
【００４１】
ＣＰＵ１０がデータを書込む際には、ＣＰＵ１０が各ＨＤＤ１２乃至１４が有するヘッド１２ａ、１３ａ、１４ａの移動時間（シーク時間）が短くなるように空きストライプを選択し、データを書込む。例えば、ＤＣＤ領域１５内の各空きストライプの中で、最も遠いヘッドまでの距離が一番短くなるストライプを選択する。このとき、シーク前のヘッドがＤＣＤ領域１５内にあるか通常記憶領域１６内にあるかに関わらず、シーク時間が短くなるような空きストライプを選択する。
【００４２】
図７の例では、ストライプＳＴ１、ＳＴ４、ＳＴ６がＤＣＤ領域１５内の空きストライプであり、ヘッド１２ａはストライプＳＴ３、ヘッド１３ａはストライプＳＴ５、ヘッド１４ａはストライプＳＴ８上にある。
【００４３】
このとき、ストライプＳＴ１から最も遠い位置にあるヘッドは、ＨＤＤ１４のヘッド１４ａであり、距離は７（＝８−１）である。同様に、ストライプＳＴ４から最も遠い位置にあるヘッドは、ヘッド１４ａであり、その距離は４（＝８−４）、ストライプＳＴ６から最も遠い位置にあるヘッドはヘッド１２ａであり、その距離は３（＝６−３）である。
【００４４】
即ち、各空きストライプの中で、最も遠いヘッドまでの距離が一番短くなる空きストライプはストライプＳＴ６であるので、このストライプに書込むとヘッドの移動時間が最も早くなると判断し、ＣＰＵ１０は当該ストライプにデータを書込む。
【００４５】
次に、システム起動後、アドレス変換テーブル１１ｂ及びストライプ情報１１ｃを作成する処理の流れについて、図８を参照しながら説明する。尚、先述の通りメモリ１１は揮発性メモリであるので、電源オフによりアドレス変換テーブル１１ｂ及びストライプ情報１１ｃは消えてしまう。換言すれば、システム起動時にアドレス変換テーブル１１ｂ及びストライプ情報１１ｃを新たに作成する必要がある。
【００４６】
尚、タイムスタンプ１１ａについては、ＤＣＤ領域１５内の全ストライプに付与されているストライプ情報内のタイムスタンプ情報の値の内、最も大きな値に１加えた値とすればこれを作成することができる。
【００４７】
まずＣＰＵ１０は、ＤＣＤ領域１５内の読込位置を最初のストライプに合わせ（Ｓ８０１）、当該ストライプの論理アドレスタグブロックを読込む（Ｓ８０２）。そしてＣＰＵ１０は、当該ストライプが空きストライプか否かを判断してこの情報をストライプ情報１１ｃとして書込む（Ｓ８０３）。
【００４８】
当該ストライプが空きストライプであれば（Ｓ８０４のＹｅｓ）、当該ストライプ内の各データを、論理アドレスタグブロック内の物理アドレスと論理アドレスとの対応に関する情報、及びタイムスタンプ情報に基づいてアドレス変換テーブル１１ｂを更新する。
【００４９】
以上の処理を行っているのがＤＣＤ領域１５内の最終ストライプで無い場合には（Ｓ８０６のＮｏ）、読込位置を次のストライプに更新し（Ｓ８０７）、Ｓ８０２に戻って同様の処理を行う。
【００５０】
現在の読込位置がＤＣＤ領域１５内の最終ストライプである場合には（Ｓ８０６のＹｅｓ）、ＤＣＤ領域１５内の全ストライプに対する処理を終えた、即ちアドレス変換テーブル１１ｂ及びストライプ情報１１ｃの作成が終了したこととなるので処理を終える。
【００５１】
尚、図８の処理速度を上げるため、ストライプのＤＣＤ領域１５への書込時に論理アドレスタグブロックを図９に示すように、各ＨＤＤに均等に振り分けて記憶させるのが好適である。
【００５２】
論理アドレスタグブロックを記憶させるＨＤＤを１台のＨＤＤに固定すると、論理アドレスタグブロックの数だけ読込む必要があるが、図９のように振り分けて記憶させると、例えばＣＰＵ１０はストライプＳＴ１乃至ＳＴ３の論理アドレスタグブロックを同時に読込むことができる、換言すれば１回のアクセスで３つの論理アドレスタグブロックを読込むことができるようになるので、処理速度を向上させることが可能となる。
【００５３】
続いて、ＤＣＤ領域１５内でのストライプ整理の処理について、図１０及び図１１を参照しながら説明する。
図１０は、ストライプ整理処理について説明するための図である。この図では、ストライプＳＴ１及びＳＴ２を整理し、ストライプＳＴ１０を作成（ストライプＳＴ１及びストライプＳＴ２は削除され、空領域となる）している。
【００５４】
ストライプＳＴ１には、論理アドレスＬ１０、Ｌ１１、Ｌ５０、Ｌ４、Ｌ４２、Ｌ３９、Ｌ１３、Ｌ７、Ｌ８、Ｌ１９、Ｌ９の各データが含まれているものとする。しかしながら、この中でＬ１０、Ｌ５０、Ｌ４、Ｌ４２、Ｌ３９、Ｌ８、Ｌ１９、Ｌ９の各データは、最新のデータではなく（同じ論理アドレスに対する最新のデータは他のストライプに記憶されている）、アドレス変換テーブル１１ｂにも、ストライプＳＴ１内の各物理アドレスは記載されていないものとする。尚、ストライプＳＴ１内の他の論理アドレスのデータは、最新のデータである。
【００５５】
ストライプＳＴ２には、論理アドレスＬ２、Ｌ１４、Ｌ２５、Ｌ２３、Ｌ３７、Ｌ４１、Ｌ２２、Ｌ３０、Ｌ５１、Ｌ４６、Ｌ２７の各データが含まれているものとする。しかしながら、この中でもＬ２、Ｌ１４、Ｌ３０、Ｌ２７の各データは最新のデータではなく（同じ論理アドレスに対する最新のデータは他のストライプに記憶されている）、アドレス変換テーブル１１ｂにも、ストライプＳＴ２内の各物理アドレスは記載されていないものとする。尚、ストライプＳＴ２内の他の論理アドレスのデータは、最新のデータである。
【００５６】
ストライプＳＴ１及びＳＴ２から新たなストライプＳＴ１０を作成する際には、ストライプＳＴ１及びＳＴ２から、当該ストライプに含まれる最新のデータのみを集めてストライプを作成する。図１０の例では、論理アドレスＬ７、Ｌ１１、Ｌ１３、Ｌ２２、Ｌ２３、Ｌ２５、Ｌ３７、Ｌ４１、Ｌ４６、Ｌ５１の各データがストライプＳＴ１０を構成する。このとき、論理アドレスタグブロックも新たに作成され、当該データの論理アドレスと物理アドレスとの対応、及びタイムスタンプ情報を新たに付与する。ストライプＳＴ１及びＳＴ２は削除され、空領域となる。
【００５７】
図１１は、ＣＰＵ１０がＤＣＤ領域１５内のストライプ整理処理を行う処理の流れを示す図である。尚、当該処理は書込コマンド及び読込コマンドの非入力時に開始するのが好適である。書込コマンド及び読込コマンドの非入力時であれば、書込速度及び読込速度に影響を与えずに、当該処理を行うことができるからである。
【００５８】
まず、ＣＰＵ１０は書込コマンド及び読込コマンドの入力がないことを確認する（Ｓ１１０１）。書込コマンド及び読込コマンドの入力がある場合には（Ｓ１１０１のＮｏ）、Ｓ１１０１に戻り、書込／読込コマンドの入力がなくなるまで待つ。
【００５９】
書込コマンド及び読込コマンドの入力がない場合には（Ｓ１１０１のＹｅｓ）、複数のストライプから新たなストライプを作成する（Ｓ１１０２）。この処理の詳細は、図１０を参照しながら先述した通りであり、この新たなストライプ作成時には、論理アドレスタグブロック内に新たなタイムスタンプ情報を付加する。さらにこれに伴い、ＣＰＵ１０は、タイムスタンプ１１ａをインクリメントする（Ｓ１１０３）。
【００６０】
ＣＰＵ１０は、作成した新たなストライプを、ＤＣＤ領域１５に書込む（Ｓ１１０４）。旧ストライプは削除し（Ｓ１１０５）、空領域とする。また、これに合わせてＣＰＵ１０は、アドレス変換テーブル１１ｂ及びストライプ情報１１ｃを更新する（Ｓ１１０６、Ｓ１１０７）。アドレス変換テーブル１１ｂでは、論理アドレスと新たなストライプ内の物理アドレスとの対応付けを行い、ストライプ情報１１ｃは、新たなストライプを使用済みとすると共に、旧ストライプを空領域とする更新を行う。
【００６１】
ＣＰＵ１０がＤＣＤ領域１５から通常記憶領域１６へのデータの移行について図１２を参照しながら説明する。図１２は、ＣＰＵ１０がＤＣＤ領域１５から通常記憶領域１６へデータを移行する際の処理の流れを示す図である。当該処理は、書込コマンド及び読込コマンドの入力のないときに開始するのが好適である。書込コマンド及び読込コマンドの非入力時であれば、書込及び読込速度に影響を与えずに、当該処理を行うことができるからである。
【００６２】
まず、ＣＰＵ１０は書込コマンド及び読込コマンドの入力がないことを確認する（Ｓ１２０１）。書込コマンド及び読込コマンドの入力がある場合には（Ｓ１２０１のＮｏ）、Ｓ１２０１に戻り、書込／読込コマンドの入力がなくなるまで待つ。
【００６３】
書込コマンド及び読込コマンドの入力が無い場合には（Ｓ１２０１のＹｅｓ）、１以上のストライプ（以下、この図の説明において旧ストライプ）から、通常記憶領域１６に書込むデータ及びパリティを作成する（Ｓ１２０２）。このとき通常記憶領域１６に書込むデータは、最新のデータ（アドレス変換テーブル１１ｂに物理アドレスが登録されているデータ）のみであり、同じ論理アドレスに対する最新のデータが他のストライプに記載されているデータ、及び論理アドレスタグブロックについては、通常記憶領域１６に記憶させるデータには含めない。尚このとき通常記憶領域１６に書込むデータは、当該データの更新前のデータが既に通常記憶領域１６内に記憶されている場合には、その上に上書きし、また、論理アドレスが連続しているデータはなるべく連続するようにデータを配置する。これにより、通常記憶領域１６からのデータ読込時において、シーケンシャルリードの速度を向上させることができる。
【００６４】
更に、旧ストライプを削除する（Ｓ１２０３）。これに伴い、アドレス変換テーブル１１ｂ及びストライプ情報１１ｃを更新する（Ｓ１２０４、Ｓ１２０５）。以上の処理により、データはＤＣＤ領域から通常記憶領域１６にデータを移行させることができる。
【００６５】
ところで、本実施例のＰＣ１は、通常記憶領域１６の記憶容量に応じて、ＤＣＤ領域１５の記憶容量を変化させる。この処理について図１３を参照しながら説明する。
【００６６】
ＣＰＵ１０は、通常記憶領域１６の空き容量が所定量以下か否かを判断する（Ｓ１３０１）。通常記憶領域１６の空き容量が所定量以下でない場合には（Ｓ１３０１のＮｏ）、Ｓ１３０１に戻り、さらに空き容量の監視を続ける。
【００６７】
通常記憶領域１６の空き容量が所定量以下である場合には（Ｓ１３０１のＹｅｓ）、ＤＣＤ領域１５の空き領域の一部を通常記憶領域１６として割り当てる（Ｓ１３０２）。これにより、通常記憶領域１６の記憶容量を増やすことができる。
【００６８】
以上説明したように、本実施例によれば、タイムスタンプ情報、及び論理アドレスと物理アドレスとの対応に関する情報を含む論理アドレスタグブロックをデータと併せてストライプとして書込むので、アドレス変換テーブルを記憶させる専用の不揮発性メモリ等を備えなくとも、システム起動時等に論理アドレスタグブロックを読込むことによりアドレス変換テーブル等の必要なデータを作成することができるので、例えばソフトウェアＲＡＩＤ等にも当該システムを使用することができるようになる。
【００６９】
また、本発明では、ＬＦＳによりデータを記憶するＤＣＤ領域１５はあくまで一時記憶領域であり、所定のタイミングで、通常記憶領域１６へとデータを移行する。通常記憶領域１６ではＬＦＳではなく、論理アドレスが連続するデータは連続するようにデータを記憶しており、また、更新データは旧データの上に上書きするので、通常記憶領域１６からデータを読込む際には、ＬＦＳと比してシーケンシャルリードの速度を早めることができる。
【００７０】
また、データ書込み時には通常記憶領域１６に直接書込むのではなく、一時的にＤＣＤ領域１５に書込む。ＤＣＤ領域１５はＬＦＳにより書込むので、ＲＡＩＤ５を構成していても、パリティを作成する際にリードを行ってからパリティを作成する必要がなく、また、其々の更新前の旧データが記憶されているアドレスをシークする必要もないため、高速な書き込みを行うことができる。
【００７１】
更に、本実施例では、ストライプ整理処理及びＤＣＤ領域から通常記憶領域１６へのデータ移行処理を、書込コマンド及び読込コマンドの非入力時に行うので、当該処理に伴って書込速度及び読込速度の低下をユーザに感じさせることを防ぐことができる。
【００７２】
本実施例では、論理アドレスタグブロックがＨＤＤ１２乃至１４に平均的に配置されるようにデータを書込む。これにより、其々のＨＤＤから同時に論理アドレスタグブロックを読込むことができるようになるので、図８に示したアドレス変換テーブル１１ｂ及びストライプ情報１１ｃを作成する処理を迅速に行うことができるようになる。
【００７３】
本実施例では、通常記憶領域１６のデータ量の増加に応じてＤＣＤ領域１５の記憶容量を減らす。これにより、通常記憶領域１６の記憶領域を固定的にする場合と比して、より多くのデータを記憶させることができるようになる。
【００７４】
本実施例では、ＤＣＤ領域１５にデータを書込む際に、ヘッドの移動時間を考慮した上で書込むストライプを選択する。これにより書込速度を向上させることが可能となる。
【図面の簡単な説明】
【００７５】
【図１】本発明の実施例１に係るパーソナルコンピュータの構成を示す図。
【図２】本発明の実施例１に係るパーソナルコンピュータが有するアドレス変換テーブルの例を示す図。
【図３】本発明の実施例１に係るパーソナルコンピュータが有するストライプ情報の例を示す図。
【図４】本発明の実施例１に係るパーソナルコンピュータがＤＣＤ領域へデータを書込む際の処理を説明するための図。
【図５】本発明の実施例１に係るパーソナルコンピュータがＤＣＤ領域へデータを書込む際の処理を説明するための図。
【図６】本発明の実施例１に係るパーソナルコンピュータがＤＣＤ領域へデータを書込む際の処理の流れを示す図。
【図７】本発明の実施例１に係るパーソナルコンピュータがデータを書込むストライプの選択方法について説明するための図。
【図８】本発明の実施例１に係るパーソナルコンピュータがアドレス変換テーブル及びストライプ情報を作成する際の処理の流れを示す図。
【図９】本発明の実施例１に係るパーソナルコンピュータによる論理アドレスタグブロックの配置例について示す図。
【図１０】本発明の実施例１に係るパーソナルコンピュータによるストライプ整理処理について説明するための図。
【図１１】本発明の実施例１に係るパーソナルコンピュータがＤＣＤ領域内のストライプ整理処理の流れを示す図。
【図１２】本発明の実施例１に係るパーソナルコンピュータがＤＣＤ領域から通常記憶領域へデータを移行させる際の処理の流れを示す図。
【図１３】本発明の実施例１に係るパーソナルコンピュータがＤＣＤ領域の記憶容量を変化させる処理の流れを示す図。
【符号の説明】
【００７６】
１・・・ＰＣ
１０・・・ＣＰＵ
１１・・・メモリ
１１ａ・・・タイムスタンプ
１１ｂ・・・アドレス変換テーブル
１１ｃ・・・ストライプ情報
１１ｄ・・・書込バッファ
１２、１３、１４・・・ＨＤＤ
１２ａ、１３ａ、１４ａ・・・ヘッド
１５・・・ＤＣＤ領域
１６・・・通常記憶領域
【図１】
2007156549.tif 000003
【図２】
2007156549.tif 000004
【図３】
2007156549.tif 000005
【図４】
2007156549.tif 000006
【図５】
2007156549.tif 000007
【図６】
2007156549.tif 000008
【図７】
2007156549.tif 000009
【図８】
2007156549.tif 000010
【図９】
2007156549.tif 000011
【図１０】
2007156549.tif 000012
【図１１】
2007156549.tif 000013
【図１２】
2007156549.tif 000014
【図１３】
2007156549.tif 000015