(57)【特許請求の範囲】
【請求項１】
ユーザ・データを記憶するディスク・メモリ領域と、
ユーザ・データを記憶する不揮発性半導体メモリ領域と、
前記不揮発性半導体メモリ領域に記憶されているユーザ・データの前記ディスク・メモリ領域のアドレスが登録されているセグメント・テーブル、を記憶する揮発性メモリ領域と、
前記セグメント・テーブルが保存される第１不揮発性メモリ領域と、
前記揮発性メモリ領域のセグメント・テーブルの更新履歴を表すログ・データが保存される第２不揮発性メモリ領域と、
前記ディスク・メモリ領域の連続するアドレス領域への複数ライト・コマンドに対応するログ・データを、前記複数ライト・コマンドのそれぞれに対応するログ・データから一部を省略して生成し、生成した前記複数ライト・コマンドに対応するログ・データを前記第２不揮発性メモリ領域に保存する、コントローラと、
を有するデータ記憶装置。
【請求項２】
第１不揮発性メモリ領域と第２不揮発性メモリ領域と、不揮発性半導体メモリ領域とが、同一の不揮発性半導体メモリ内にある、
請求項１に記載のデータ記憶装置。
【請求項３】
前記複数ライト・コマンドが３以上のライト・コマンドである場合、前記コントローラは、最初のライト・コマンドと最後のライト・コマンドとの間にある全てのライト・コマンドのログ・データを省略する、
請求項１に記載のデータ記憶装置。
【請求項４】
一つのライト・コマンドに対応するログ・データは、前記揮発性メモリ領域のセグメント・テーブルの更新前のプロローグと更新後のエピローグとを含み、
前記コントローラは、最初のライト・コマンドのプロローグと最後のライト・コマンドのエピローグとを前記第２不揮発性メモリ領域に保存し、前記最初のライト・コマンドのプロローグと前記最後のライト・コマンドのエピローグとの間のログ・データを省略する、
請求項１に記載のデータ記憶装置。
【請求項５】
一つのライト・コマンドに対応するプロローグとエピローグとは、それぞれ、前記一つのライト・コマンドが指定する開始アドレスとデータ長とを含み、
前記最後のライト・コマンドのエピローグは、前記最初のライト・コマンドのプロローグが含む開始アドレスを含む、
請求項４に記載のデータ記憶装置。
【請求項６】
前記コントローラは、ライト・コマンドをキャッシュされた順序に従って処理し、現在のライト・コマンドの指定アドレスが、その前のライト・コマンドの指定アドレスと連続している場合に、前記複数ライト・コマンドに前記現在のライト・コマンドを追加する、
請求項１に記載のデータ記憶装置。
【請求項７】
前記コントローラは、前記複数ライト・コマンドを構成するライト・コマンドの数が閾値に達している場合、前記複数ライト・コマンドに対応する現在のログ・データを前記第２不揮発性メモリ領域に保存する、
請求項６に記載のデータ記憶装置。
【請求項８】
前記コントローラは、ライト・コマンドの指定したデータ長が閾値に達している場合、そのライト・コマンドに対応するログ・データを個別に前記第２不揮発性メモリ領域に保存する、
請求項６に記載のデータ記憶装置。
【請求項９】
前記コントローラは、前記複数ライト・コマンドを構成するライト・コマンドが指定するアドレス領域が閾値に達している場合、前記複数ライト・コマンドに対応する現在のログ・データを前記第２不揮発性メモリ領域に保存する、
請求項６に記載のデータ記憶装置。
【請求項１０】
電源遮断により前記複数ライト・コマンドに対応するログ・データの保存処理が中断した場合、前記電源遮断後に起動された前記コントローラは、前記不揮発性半導体メモリ領域において、前記複数ライト・コマンドの最初のライト・コマンドに対応するアドレスから先の不使用領域を消去する、
請求項１に記載のデータ記憶装置。
【請求項１１】
前記コントローラは、さらに、指定アドレスが不連続の複数ライト・コマンドの最初のライト・コマンド以外のライト・コマンドに対応するログ・データを、同時に前記第２不揮発性メモリ領域に保存する、
請求項１に記載のデータ記憶装置。
【請求項１２】
一つのライト・コマンドに対応する前記ログ・データは、前記揮発性メモリ領域のセグメント・テーブルの更新前のプロローグと更新後のエピローグとを含み、
前記コントローラは、前記最初のライト・コマンド以外のライト・コマンドに対応するプロローグを省略する、
請求項１１に記載のデータ記憶装置。
【請求項１３】
前記指定アドレスが不連続の複数ライト・コマンドに対応するログ・データは、前記最初のライト・コマンドのプロローグ及びエピローグと、それ以外のライト・コマンドのエピローグとから構成され、
前記コントローラは、前記最初のライト・コマンドのプロローグを保存した後、その他のログ・データを同時に保存する、
請求項１２に記載のデータ記憶装置。
【請求項１４】
ユーザ・データを記憶するディスク・メモリ領域と、ユーザ・データを記憶する不揮発性半導体メモリ領域と、を有するデータ記憶装置における、データ管理方法であって、
前記不揮発性半導体メモリ領域に記憶されているユーザ・データの前記ディスク・メモリ領域のアドレスが登録されているセグメント・テーブルを、揮発性メモリ領域に格納し、
前記セグメント・テーブルを第１不揮発性メモリ領域に保存し、
前記揮発性メモリ領域のセグメント・テーブルの更新履歴を表すログ・データを、第２不揮発性メモリ領域に保存し、
前記ディスク・メモリ領域の連続するアドレス領域への複数ライト・コマンドに対応するログ・データを、前記複数ライト・コマンドのそれぞれに対応するログ・データから一部を省略して生成し、
生成した前記複数ライト・コマンドに対応するログ・データを前記第２不揮発性メモリ領域に保存する、
方法。
【請求項１５】
前記複数ライト・コマンドが３以上のライト・コマンドである場合、前記コントローラは、最初のライト・コマンドと最後のライト・コマンドとの間にある全てのライト・コマンドのログ・データを省略する、
請求項１４に記載の方法。
【請求項１６】
さらに、指定アドレスが不連続の複数ライト・コマンドの最初のライト・コマンド以外のライト・コマンドに対応するログ・データを、同時に前記第２不揮発性メモリ領域に保存する、
請求項１４に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はデータ記憶装置及びデータ記憶装置におけるデータ管理方法に関し、特に、ユーザ・データを保存するためのディスクと不揮発性半導体メモリとを有するデータ記憶装置における、テーブルの更新を示すログ・データの保存に関する。
【背景技術】
【０００２】
データ記憶装置として、光ディスク、光磁気ディスク、あるいはフレキシブル磁気ディスクなどの様々な態様のメディアを使用する装置が知られているが、その中で、ハードディスク・ドライブ（ＨＤＤ）は、コンピュータの記憶装置として広く普及し、現在のコンピュータ・システムにおいて欠かすことができない記憶装置の一つとなっている。さらに、コンピュータにとどまらず、動画像記録再生装置、カーナビゲーション・システム、あるいは携帯電話など、ＨＤＤの用途はその優れた特性により益々拡大している。
【０００３】
ＨＤＤは、磁気ディスクへのアクセス（リードもしくはライト）のために、磁気ディスクを回転し、ヘッド・スライダを目的のデータ・セクタに移動する。このため、ＨＤＤの消費電力は半導体メモリに比較して大きく、また、そのアクセス・スピードも半導体メモリよりも遅い。特に、スピンドル・モータのスピン・アップ時間は他の動作に比較して多くの時間を必要とする。このため、ＨＤＤの起動時や、省電力低減のためのパワー・セーブ・モードから復帰するときに多くの処理時間を必要とする。
【０００４】
このため、ＨＤＤに不揮発性半導体メモリの一つであるフラッシュ・メモリを実装することが提案されている（例えば、特許文献１を参照）。フラッシュ・メモリは半導体メモリであるため、磁気ディスクよりもアクセス・スピードが速く、消費電力が小さい。また、フラッシュ・メモリは不揮発性メモリであるため、電源オフ状態であってもデータを保存しておくことができる。
【０００５】
ＨＤＤに実装するフラッシュ・メモリの容量は、コストなどの点から制限される。従って、ＨＤＤは、特定のユーザ・データのみをフラッシュ・メモリに保存し、その他ユーザ・データを磁気ディスクに保存する。例えば、ホストの起動に必要なデータや、ホストが頻繁にアクセスするデータをフラッシュ・メモリに保存しておくことによって、ホストの起動時間の短縮、ＨＤＤのパフォーマンスの向上、あるいはスピンドル・モータの回転数を小さくするパワー・セーブ・モードによる消費電力の低減を図ることができる。
【０００６】
ホストは、ＨＤＤに対して、磁気ディスクのアドレスであるＬＢＡ（Logical Block Address）を指定してデータの書き込みあるいは読み出しを指示する。従って、ＨＤＤは、フラッシュ・メモリに保存しているユーザ・データのＬＢＡと、フラッシュ・メモリ内のアドレスとを対応付けることが必要となる。具体的には、ＨＤＤは、上記二つのアドレスを対応づけるテーブルを作成し、そのテーブルを参照することでフラッシュ・メモリへのアクセスを行う。以下において、このテーブルをセグメント・テーブルと呼ぶ。
【特許文献１】特開２００６−１１４２０６号公報
【特許文献２】特開２００５−１３４１２５号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
セグメント・テーブルは電源がオフされ、再度オンされた後も使用するものであるため、ＨＤＤは、不揮発性メモリである磁気ディスクもしくはフラッシュ・メモリにセグメント・テーブルを保存する。典型的には、セグメント・テーブルはフラッシュ・メモリに保存される。しかし、フラッシュ・メモリはデータの書き換えのために消去と書き込みのプロセスが必要であり、頻繁にセグメント・テーブルを更新することは、パフォーマンスの低下を招く。磁気ディスクにセグメント・テーブルを保存する場合にも、磁気ディスクへのアクセスのための処理時間が必要であり、頻繁にセグメント・テーブルを更新することは、パフォーマンスの低下を招く。
【０００８】
そこで、セグメント・テーブルをＲＡＭにロードし、ＲＡＭ上のセグメント・テーブルを更新する。さらに、セグメント・テーブルの更新内容を示すログ・データを生成し、そのログ・データを磁気ディスクあるいはフラッシュ・メモリに保存することが考えられる。なお、記録メディアへのデータ書き込みにおいてログ・データを使用することは、例えば特許文献２に開示されている。ログ・データを保存しておくことによって、電源遮断によりＲＡＭ上の最新のセグメント・テーブルが消えてしまった場合でも、フラッシュ・メモリ上のセグメント・テーブルとログ・データとから、最新のセグメント・テーブルを復元することができる。
【０００９】
パフォーマンスの観点からは、セグメント・テーブルの保存回数を少なくすることが好ましい。しかし、そのことは、保存するログ・データのエントリ数が大きくなることを意味する。ログ・データによるデータ回復のための典型的な手法は、フラッシュ・メモリへの書き出しを伴うライト・コマンド毎にログ・データを保存する。このため、フラッシュ・メモリへの書き出し回数の増加に伴い、保存されるログ・データのエントリ数も増加する。一方、ログ・データを保存するための領域は限られている。従って、セグメント・テーブルの更新を示すログ・データのエントリ数を少なくする手法が要求される。
【００１０】
あるいは、ログ・データを保存する処理時間を考慮することも重要である。特に、ユーザ・データの記憶に適切なＮＡＮＤ型フラッシュ・メモリは、ページ単位でのデータ書き込みを行う。このため、一つのライト・コマンドに対応するログ・データをＮＡＮＤ型フラッシュ・メモリに保存する処理は、１データ・セクタをする処理と同等の処理時間を必要とする。従って、セグメント・テーブルの更新を示すログ・データの保存処理の時間を短縮する手法が要求される。
【課題を解決するための手段】
【００１１】
本発明の一態様に係るデータ記憶装置は、ユーザ・データを記憶するディスク・メモリ領域と、ユーザ・データを記憶する不揮発性半導体メモリ領域と、前記不揮発性半導体メモリ領域に記憶されているユーザ・データの前記ディスク・メモリ領域のアドレスが登録されているセグメント・テーブル、を記憶する揮発性メモリ領域と、前記セグメント・テーブルが保存される第１不揮発性メモリ領域と、前記揮発性メモリ領域のセグメント・テーブルの更新履歴を表すログ・データが保存される第２不揮発性メモリ領域と、コントローラとを有する。前記コントローラは、前記ディスク・メモリ領域の連続するアドレス領域への複数ライト・コマンドに対応するログ・データを、前記複数ライト・コマンドのそれぞれに対応するログ・データから一部を省略して生成し、生成した前記複数ライト・コマンドに対応するログ・データを前記第２不揮発性メモリ領域に保存する。これにより、ログ・データの保存を効率的に行うことができる。
【００１２】
好ましくは、第１不揮発性メモリ領域と第２不揮発性メモリ領域と、不揮発性半導体メモリ領域とが、同一の不揮発性半導体メモリ内にある。これにより、部品点数を低減する。
前記複数ライト・コマンドが３以上のライト・コマンドである場合、前記コントローラは、最初のライト・コマンドと最後のライト・コマンドとの間にある全てのライト・コマンドのログ・データを省略する。これにより、ログ・データの保存をより効率的に行うことができる。
【００１３】
好ましい例において、一つのライト・コマンドに対応する前記ログ・データは、前記揮発性メモリ領域のセグメント・テーブルの更新前のプロローグと更新後のエピローグとを含み、前記コントローラは、最初のライト・コマンドのプロローグと前記第２不揮発性メモリ領域に保存し、最後のライト・コマンドのエピローグを前記第２不揮発性メモリ領域に保存し、前記最初のライト・コマンドのプロローグと最後のライト・コマンドのエピローグとの間のログ・データを省略する。これにより、ログ・データの保存をより効率的に行うことができる。さらに、一つのライト・コマンドに対応するプロローグとエピローグとは、それぞれ、前記一つのライト・コマンドが指定する開始アドレスとデータ長とを含み、前記最後のライト・コマンドのエピローグは、前記最初のライト・コマンドのプロローグが含む開始アドレスを含む。これにより、エピローグのみにより正確な情報を示すことができる。
【００１４】
好ましい例において、前記コントローラは、ライト・コマンドをキャッシュされた順序に従って処理し、現在のライト・コマンドの指定アドレスが、その前のライト・コマンドの指定アドレスと連続している場合に、前記複数ライト・コマンドに前記現在のライト・コマンドを追加する。これにより、随時複数ライト・コマンドのグループを構成することができる。好ましくは、前記コントローラは、前記複数ライト・コマンドを構成するライト・コマンドの数が閾値に達している場合、前記複数ライト・コマンドに対応する現在のログ・データを前記第２不揮発性メモリ領域に保存する。あるいは、前記コントローラは、ライト・コマンドの指定したデータ長が閾値に達している場合、そのライト・コマンドに対応するログ・データを個別に前記第２不揮発性メモリ領域に保存する。もしくは、前記コントローラは、前記複数ライト・コマンドを構成するライト・コマンドが指定するアドレス領域が閾値に達している場合、前記複数ライト・コマンドに対応する現在のログ・データを前記第２不揮発性メモリ領域に保存する。これらにより、ログ・データが保存されるまでの時間が長くなりすぎることを防ぐ。
【００１５】
好ましくは、電源遮断により前記複数ライト・コマンドに対応するログ・データの保存処理が中断した場合、前記電源遮断後に起動された前記コントローラは、前記不揮発性半導体メモリ領域において、前記複数ライト・コマンドの最初のライト・コマンドに対応するアドレスから先の不使用領域を消去する。これにより、データの書き込みのために消去を必要とする不揮発性メモリに適切に対応することができる。
【００１６】
好ましい例において前記コントローラは、さらに、指定アドレスが不連続の複数ライト・コマンドの最初のライト・コマンド以外のライト・コマンドに対応するログ・データを、同時に前記第２不揮発性メモリ領域に保存する。これにより、ログ・データの保存をより効率的に行うことができる。さらに好ましい例において、一つのライト・コマンドに対応する前記ログ・データは、前記揮発性メモリ領域のセグメント・テーブルの更新前のプロローグと更新後のエピローグとを含み、前記コントローラは、最初のライト・コマンド以外のライト・コマンドに対応するプロローグを省略する。これにより、ログ・データの保存をより効率的に行うことができる。前記指定アドレスが不連続の複数ライト・コマンドに対応するログ・データは、最初のライト・コマンドのプロローグ及びエピローグと、それ以外のライト・コマンドのエピローグとから構成され、前記コントローラは、前記最初のライト・コマンドのプロローグを保存した後、その他のログ・データを同時に保存することが好ましい。これにより、ログ・データを全て保存する前に電源遮断が起きた場合に、適切に対応することができる。
【００１７】
本発明の他の態様は、ユーザ・データを記憶するディスク・メモリ領域と、ユーザ・データを記憶する不揮発性半導体メモリ領域と、を有するデータ記憶装置における、データ管理方法である。この方法は、前記不揮発性半導体メモリ領域に記憶されているユーザ・データの前記ディスク・メモリ領域のアドレスが登録されているセグメント・テーブルを、揮発性メモリ領域に格納する。前記セグメント・テーブルを第１不揮発性メモリ領域に保存する。前記揮発性メモリ領域のセグメント・テーブルの更新履歴を表すログ・データを、第２不揮発性メモリ領域に保存する。前記ディスク・メモリ領域の連続するアドレス領域への複数ライト・コマンドに対応するログ・データを、前記複数ライト・コマンドのそれぞれに対応するログ・データから一部を省略して生成する。生成した前記複数ライト・コマンドに対応するログ・データを前記第２不揮発性メモリ領域に保存する。これにより、ログ・データの保存を効率的に行うことができる。
【発明の効果】
【００１８】
本発明によれば、セグメント・テーブルの更新を示すログ・データを効率的に保存することができる。
【発明を実施するための最良の形態】
【００１９】
以下に、本発明を適用可能な実施の形態を説明する。説明の明確化のため、以下の記載及び図面は、適宜、省略及び簡略化がなされている。又、各図面において、同一要素には同一の符号が付されており、必要に応じて重複説明は省略されている。以下においては、ディスク・ドライブ装置の一例であるハードディスク・ドライブ（ＨＤＤ）について説明する。
【００２０】
本形態のＨＤＤは、ユーザ・データを記憶するための不揮発性メモリとして、磁気ディスクの他にフラッシュ・メモリを有する。フラッシュ・メモリは、不揮発性半導体メモリである。ＨＤＤは、フラッシュ・メモリに保存するユーザ・データを管理するため、フラッシュ・メモリ内が記憶しているユーザ・データの磁気ディスクでのアドレス（ＬＢＡ）を登録するテーブルを作成する。このテーブルを、以下においてセグメント・テーブルと呼ぶ。
【００２１】
本形態のＨＤＤは、セグメント・テーブルをＲＡＭ上で更新すると共に、所定のタイミングでフラッシュ・メモリに保存する。本形態のＨＤＤは、さらに、ＲＡＭ上の更新を示すログ・データを生成し、それをフラッシュ・メモリに保存する。以下において、このログ・データをジャーナルと呼ぶ。ＨＤＤは、予期しない電源遮断などが起きたとき、フラッシュ・メモリ上のセグメント・テーブルとジャーナルとから、最新のセグメント・テーブルを回復する。
【００２２】
本形態のＨＤＤは、ログ・データであるジャーナルの保存方法に特徴を有している。本形態のＨＤＤは、条件に応じて、一つのライト・コマンドに対応するジャーナルを保存する、あるいは、所定の複数ライト・コマンドからなるグループに対応するジャーナルを保存する。複数ライト・コマンドのグループに対応するジャーナルの保存において、ＨＤＤは、グループの各ライト・コマンドそれぞれに対応するジャーナルの一部を省略する。従って、グループに対応するジャーナルの数は、グループの各ライト・コマンドに対応するジャーナルの合計数よりも少ない。これにより、セグメント・テーブルの更新内容を示すジャーナルのエントリ数を低減することができる。また、ジャーナルをテーブルに登録するための処理時間を短縮することができる。
【００２３】
本実施形態においては、複数のライト・コマンドによるグループを構成する方法として、２つの好適な例を説明する。一つは、磁気ディスクの連続領域への複数ライト・コマンドでグループを構成する。ＨＤＤは、磁気ディスクの連続領域を指定アドレスとする複数のライト・コマンドを一つのグループとし、そのグループに対応したジャーナルをテーブルに保存する。
【００２４】
他の一つは、それぞれのライト・コマンドが磁気ディスクの離散した非連続の領域を指定する複数のライト・コマンドにより、一つのグループを構成する。これら異なる二つのグループに対応して保存されるジャーナルは異なる。このように、連続領域へのライト・コマンドのグループと、非連続領域へのライト・コマンドのグループとによって、異なるジャーナルを保存することで、セグメント・テーブル回復のための必要な情報を保存すると共に、より効率的な処理を行うことができる。
【００２５】
まず、本形態のＨＤＤの全体構成を、図１のブロック図を参照して説明する。ＨＤＤ１は、エンクロージャ１０の外側に固定された回路基板２０を備えている。回路基板２０上には、リード・ライト・チャネル（ＲＷチャネル）２１、モータ・ドライバ・ユニット２２、ハードディスク・コントローラ（ＨＤＣ）とＭＰＵの集積回路（ＨＤＣ／ＭＰＵ）２３及び揮発性半導体メモリのＤＲＡＭ２４、不揮発性半導体メモリであるフラッシュ・メモリ２５などの各回路を有している。エンクロージャ１０内において、スピンドル・モータ（ＳＰＭ）１４は所定の角速度で磁気ディスク１１を回転する。磁気ディスク１１は、データを記憶するディスクであり、不揮発性のメモリである。
【００２６】
各ヘッド・スライダ１２は、磁気ディスク１１上を浮上するスライダと、スライダに固定され磁気信号と電気信号との間の変換（データの読み書き）を行うヘッド素子部とを備えている。各ヘッド・スライダ１２はアクチュエータ１６の先端部に固定されている。アクチュエータ１６はボイス・コイル・モータ（ＶＣＭ）１５に連結され、回動軸を中心に回動することによって、ヘッド・スライダ１２を回転する磁気ディスク１１上においてその半径方向に移動する。モータ・ドライバ・ユニット２２は、ＨＤＣ／ＭＰＵ２３からの制御データに従って、ＳＰＭ１４とＶＣＭ１５とを駆動する。アーム電子回路（ＡＥ：Arm Electronics）１３は、ＨＤＣ／ＭＰＵ２３からの制御データに従って複数のヘッド・スライダ１２の中から磁気ディスク１１にアクセス（リードもしくはライト）するヘッド・スライダ１２を選択し、リード／ライト信号の増幅を行う。
【００２７】
ＲＷチャネル２１は、リード処理において、ＡＥ１３から取得したリード信号からサーボ・データ及びユーザ・データを抽出し、デコード処理を行う。デコード処理されたデータは、ＨＤＣ／ＭＰＵ２３に供給される。また、ＲＷチャネル２１は、ライト処理において、ＨＤＣ／ＭＰＵ２３から供給されたライト・データをコード変調し、さらに、コード変調されたデータをライト信号に変換してＡＥ１３に供給する。
【００２８】
ＨＤＣ／ＭＰＵ２３において、ＨＤＣはロジック回路であり、ＭＰＵはＤＲＡＭ２４にロードされたファームウェアに従って動作する。ＨＤＤ１の起動に伴い、ＤＲＡＭ２４には、制御及びデータ処理に必要とされるデータが磁気ディスク１１あるいはＲＯＭ（不図示）からロードされる。ＨＤＣ／ＭＰＵ２３はコントローラの一例であり、ヘッド・ポジショニング制御、インターフェース制御、ディフェクト管理などのデータ処理に関する必要な処理の他、ＨＤＤ１の全体制御を実行する。
【００２９】
ＨＤＣ／ＭＰＵ２３は、ホスト５１からのユーザ・データの一部をフラッシュ・メモリ２５に保存する。つまり、ＨＤＣ／ＭＰＵ２３は、ホスト５１から受信するライト・コマンドの内、フラッシュ・メモリ２５への書き出しを指定されているライト・コマンドに応答して、ユーザ・データをフラッシュ・メモリ２５に保存する。フラッシュ・メモリ２５上のユーザ・データを磁気ディスク１１にも保存するか否かは、設計によって決めることができる。フラッシュ・メモリ２５に保存するデータは、磁気ディスク１１のＬＢＡで特定することができる。ＨＤＣ／ＭＰＵ２３は、予め設定されているＬＢＡへのライト・コマンドを受信すると、そのユーザ・データをフラッシュ・メモリ２５に保存する。ＨＤＣ／ＭＰＵ２３は、フラッシュ・メモリ２５に保存するユーザ・データのＬＢＡを自ら設定することができ、また、ホスト５１から指定されたＬＢＡのユーザ・データをフラッシュ・メモリ２５に保存する。
【００３０】
図２は、フラッシュ・メモリ２５にユーザ・データを保存するための処理に関連する論理構成要素を模式的に示すブロック図である。ＤＲＡＭ２４上のＰＩＮ／ＵＮＰＩＮテーブル２４２は、フラッシュ・メモリ２５に保存するデータの磁気アドレス領域を示す。ＰＩＮ領域及びＵＮＰＩＮ領域は、ＬＢＡで示される磁気ディスク・アドレスの一部の領域である。ＰＩＮ領域は、ホスト５１がフラッシュ・メモリ２５に保存するアドレス領域として指定する。一方、ＵＮＰＩＮ領域は、ＨＤＣ／ＭＰＵ２３自身がフラッシュ・メモリ２５に保存するアドレス領域として選択するものである。
【００３１】
ＨＤＣ／ＭＰＵ２３は、フラッシュ・メモリ２５に保存されているＰＩＮ／ＵＮＰＩＮテーブル２５４をＤＲＡＭ２４にロードする。ＨＤＣ／ＭＰＵ２３は、ライト処理においては、ＤＲＡＭ２４上のＰＩＮ／ＵＮＰＩＮテーブル２４２を参照して処理を行う。また、ＨＤＣ／ＭＰＵ２３はＤＲＡＭ２４上のＰＩＮ／ＵＮＰＩＮテーブル２４２を変更した場合、それをフラッシュ・メモリ２５上のＰＩＮ／ＵＮＰＩＮテーブル２５４に反映する。
【００３２】
ホスト５１から転送された所定のユーザ・データＵ＿ＤＡＴＡは、ＤＲＡＭ２４内のセクタ・バッファ２４１に格納された後、フラッシュ・メモリ２５に保存される。フラッシュ・メモリ２５内に、ユーザ・データ領域２５１が確保されており、そこにユーザ・データが保存される。上述のように、フラッシュ・メモリ２５に保存されるデータは、ＰＩＮデータとＵＮＰＩＮデータがあり、それぞれ、ユーザ・データ領域２５１内のＰＩＮ領域２５５とＵＮＰＩＮ領域２５６とに保存される。
【００３３】
ＨＤＣ／ＭＰＵ２３は、フラッシュ・メモリ２５上の保存セグメント・テーブル２５３をＤＲＡＭ２４にロードする。ＤＲＡＭ２４上のセグメント・テーブルである一時的セグメント・テーブル２４３は、ユーザ・データのリード及びライト処理においてＨＤＣ／ＭＰＵ２３に参照される。セグメント・テーブル２４３、２５３は、フラッシュ・メモリ２５に保存されているユーザ・データのアドレスを特定する。具体的には、セグメント・テーブル２４３、２５３は、フラッシュ・メモリ２５上のユーザ・データのフラッシュ・メモリ・アドレスと磁気ディスク・アドレスとを対応づける。ホスト５１は、磁気ディスク１１上のアドレスであるＬＢＡを指定して、データの書き込みを指示する。セグメント・テーブル２４３、２５３は、そのＬＢＡとフラッシュ・メモリ２５上のアドレスとを対応付けて格納している。
【００３４】
図３（ａ）は、セグメント・テーブル２４３、２５３内の一レコードのフォーマットを模式的に示している。フラッシュ・メモリ２５のページと、フラッシュ・メモリ２５に保存されているユーザ・データの開始ＬＢＡと、データ・セクタ数で表されるデータ長ＬＥＮ、そしてＰＩＮ／ＵＮＰＩＮの区別を有している。
【００３５】
ＨＤＣ／ＭＰＵ２３は、フラッシュ・メモリ２５へのアクセス（ライト）に応じて、一時的セグメント・テーブル２４３を更新する。ＨＤＣ／ＭＰＵ２３は、その更新内容をすぐにフラッシュ・メモリ２５上の保存セグメント・データ・テーブル２５３に反映せずに、その更新内容を示すログ・データであるジャーナルを生成する。ＨＤＣ／ＭＰＵ２３はＳＲＡＭ２３１を有しており、そのＳＲＡＭ２３１に生成したジャーナルを格納する。生成されたジャーナルは、フラッシュ・メモリ２５上の領域２５２に保存される。保存する前のジャーナルの格納にＳＲＡＭ２３１を使用することによって、ＤＲＡＭよりも処理速度を速めることができる。また、ＳＲＡＭ２３１からフラッシュ・メモリ２５への保存も、ＤＲＡＭよりも高速に行うことができる。
【００３６】
図３（ｂ）は、ジャーナルのフォーマットを模式的に示している。ジャーナルは、そのタイプを示すデータ、開始ＬＢＡ、データ長ＬＥＮ、そしてＰＩＮ／ＵＮＰＩＮのサイズを有している。ＬＢＡそしてＬＥＮは、セグメント・テーブル２４３、２５３のレコード内のデータと同様である。ＰＩＮ／ＵＮＰＩＮのサイズは、ユーザ・データ領域２５１における、ＰＩＮ領域２５５あるいはＵＮＰＩＮ領域２５６内のサイズを示している。セグメント・テーブルは、使用を開始するページを記憶しており、ＰＩＮ領域２５５あるいはＵＮＰＩＮ領域２５６は、ユーザ・データを、それぞれの使用開始ページから順次格納していくため、ＰＩＮ／ＵＮＰＩＮのサイズを特定することでＰＩＮ領域２５５あるいはＵＮＰＩＮ領域２５６内のデータ位置を特定することができる。複数のタイプのジャーナルが存在し、本明細書においては、プロローグ・ジャーナルとエピローグ・ジャーナルについて説明する。ＨＤＣ／ＭＰＵ２３は、プロローグ・ジャーナル２３２を生成した後に一時的セグメント・テーブル２４３を更新し、その後エピローグ・ジャーナル２３３を生成する。これによって、一時的セグメント・テーブル２４３を更新している間に電源遮断などがあった場合にも、正確にセグメント・テーブルを回復することができる。
【００３７】
続いて、図２を参照して、フラッシュ・メモリ２５へのユーザ・データの保存及びそれに伴う一時的セグメント・テーブル２４３の更新及びジャーナルの保存の処理例を説明する。以下の例において、ＨＤＣ／ＭＰＵ２３は、一つのライト・コマンドに対応するジャーナルを保存する。ＨＤＣ／ＭＰＵ２３は、ホスト５１からライト・コマンドＷ＿ＣＯＭＭＡＮＤを受信する[１]。さらに、ＨＤＣ／ＭＰＵ２３は、ユーザ・データＵ＿ＤＡＴＡを受信し、それをセクタ・バッファ２４１に格納する[２]。ＨＤＣ／ＭＰＵ２３は、ＤＲＡＭ２４上のＰＩＮ／ＵＮＰＩＮテーブル２４２を参照して、ライト・コマンドＷ＿ＣＯＭＭＡＮＤが指定するＬＢＡがＰＩＮもしくはＵＮＰＩＮ領域内にあるか判定する[３]。ここでは、指定ＬＢＡが、上記のいずれかの領域にあるとする。
【００３８】
ＨＤＣ／ＭＰＵ２３は、プロローグ・ジャーナル２３２を生成し、それをフラッシュ・メモリ２５内のジャーナル領域２５２に保存する[４]。次に、ＨＤＣ／ＭＰＵ２３は、セクタ・バッファ２４１内のユーザ・データＵ＿ＤＡＴＡを、フラッシュ・メモリ２５内のユーザ・データ領域２５１に保存する[５]。次に、ＨＤＣ／ＭＰＵ２３は、一時的セグメント・テーブル２４３を更新する[６]。続いて、ＨＤＣ／ＭＰＵ２３は、エピローグ・ジャーナル２３３を生成し、それをフラッシュ・メモリ２５内のジャーナル領域２５２に保存する[７]。
【００３９】
次に、突然の電源遮断が起きた後、ジャーナルを使用してセグメント・テーブルを回復処理の一例を、図４（ａ）、（ｂ）を参照して説明する。図４（ａ）において、左から右に向く矢印は、時間の経過を示している。なお、以下の各処理は、ＨＤＣ／ＭＰＵ２３が実行する。最初の処理は、一時的セグメント・テーブル２４３に格納されているレコード＃１とレコード＃２を、保存セグメント・テーブル２５３に保存する。次の処理は、一時的セグメント・テーブル２４３にレコード＃３を追加し、さらに、それを示すジャーナルをジャーナル領域２５２保存する。次の処理は、一時的セグメント・テーブル２４３からレコード＃２を削除し、さらに、それを示すジャーナルをジャーナル領域２５２保存する。この段階において、電源遮断が発生する。
【００４０】
その後、電源が回復すると、図４（ｂ）に示す回復処理が開始する。図４（ｂ）において、最初の処理は、保存セグメント・テーブル内のレコード＃１とレコード＃２とをＤＲＡＭ２４にロードして、一時的セグメント・テーブル２４３を生成する。次の処理は、レコード＃３の追加を示すジャーナルに従って、一時的セグメント・テーブル２４３にレコード＃３を追加する。最後の処理は、レコード＃２の削除を示すジャーナルに従って、一時的セグメント・テーブル２４３からレコード＃２を削除する。以上の処理で、一時的セグメント・テーブル２４３が回復される。必要であれば、このタイミングで、一時的セグメント・テーブル２４３をセーブする。ＨＤＣ／ＭＰＵ２３は、一時的セグメント・テーブル２４３をフラッシュ・メモリ２５にセーブして、保存セグメント・テーブル２５３を更新すると共に、ジャーナル領域２５２をクリアする。
【００４１】
このように、ジャーナルを保存することによって、セグメント・テーブルを毎回保存するよりも処理時間を短縮することができると共に、予期しない電源遮断などが起きた場合でも、セグメント・テーブルを回復することができる。特に、フラッシュ・メモリは、データの書き換えをするためにブロック単位でデータを消去した後、新たなデータを書き込むことを必要とする。つまり、保存セグメント・テーブル２５３を更新するために、フラッシュ・メモリ２５は、それを格納している領域を含むブロックを消去し、さらに、その消去したブロック内に新たな保存セグメント・テーブル２５３を書き込む。
【００４２】
また、保存セグメント・テーブルは、一般に、高速サーチのために、２分木データ構造、あるいは線形リストやハッシュテーブルを有しており、一部のデータを追加する場合にも全体を書き換えることが要求される。一方、フラッシュ・メモリ２５は、新たなジャーナルを、随時、ジャーナル領域２５２に書き込む。この書き込みのためには、消去処理を必要としない。このため、処理時間が大きく短縮される。
【００４３】
しかし、セグメント・テーブル更新のための処理時間を短縮するためには、更新されたセグメント・テーブルをフラッシュ・メモリ２５に保存することなくジャーナルを蓄積していくことが好ましい。しかし、ジャーナルを記憶するフラッシュ・メモリ２５のジャーナル領域２５２は限られている。また、ジャーナル保存のために消去処理が必要ではないとしても、ジャーナルを書き込むための処理時間は必要となる。そこで、本形態のＨＤＣ／ＭＰＵ２３は、複数のライト・コマンドを一つのグループとみなし、そのグループに対応するジャーナルをフラッシュ・メモリ２５のジャーナル領域２５２に保存する。これにより、ジャーナル保存処理を効率化し、保存するジャーナルのエントリ数及び保存処理時間を小さくする。
【００４４】
まず、図５のフローチャート及び図６のブロック図を参照して、三つのライト・コマンドに対して、ライト・コマンド毎にジャーナルを保存する例を説明する。ＨＤＣ／ＭＰＵ２３は、ライト・コマンド[１]を受信すると（Ｓ１１）、そのプロローグ[１]をジャーナル領域２５２に保存する（Ｓ１２）。ライト・コマンド[１]の指定アドレスは、ＬＢＡ１００ｈ〜１０Ｆｈである。プロローグ[１]は、開始ＬＢＡ１００ｈと、データ長１０ｈを示す。次に、ＨＤＣ／ＭＰＵ２３は、ライト・コマンド共に受信したユーザ・データをフラッシュ・メモリ２５に保存し（Ｓ１３）、さらにＤＲＡＭ２４上の一時的セグメント・テーブル２４３を更新する（Ｓ１４）。最後に、ＨＤＣ／ＭＰＵ２３は、ライト・コマンド[１]に対応するエピローグ[１]をジャーナル領域２５２に保存する（Ｓ１５）。エピローグ[１]は、開始ＬＢＡ１００ｈと、データ長１０ｈを示す。
【００４５】
ＨＤＣ／ＭＰＵ２３は、ライト・コマンド[２]及びライト・コマンド[３]についても、同様の処理を繰り返す。従って、図６に示すように、ジャーナル領域２５２に保存されているジャーナルは、プロローグ[１]〜プロローグ[３]、エピローグ[１]〜エピローグ[３]の６エントリである。また、三つのライト・コマンド[１]〜ライト・コマンド[３]に対応するジャーナルを保存するために、ＨＤＣ／ＭＰＵ２３は６回の書き込みを行う。
【００４６】
次に、三つのライト・コマンド[１]〜ライト・コマンド[３]からなるグループに対応したジャーナルを保存する処理を説明する。上記三つのライト・コマンド[１]〜ライト・コマンド[３]の指定するアドレスは、磁気ディスク１１上の連続アドレス領域（ＬＢＡ１００ｈ〜１ＡＦｈ）である。ＨＤＣ／ＭＰＵ２３は、このように連続するアドレス領域への複数のライト・コマンドを一つにまとめ、複数ライト・コマンドからなるグループに対応したジャーナルを保存する。
【００４７】
図７は、ライト・コマンド[１]〜ライト・コマンド[３]及びそれに対応して保存されるジャーナルを示している。保存されるジャーナルは、プロローグ[１]とエピローグ[３]の２エントリのみである。図６を参照して説明した、ライト・コマンド毎にジャーナルを保存する場合と比較して、中間のライト・コマンド[２]に対応する全てのジャーナルと、最初のライト・コマンド[１]のエピローグ[１]、そして最後のライト・コマンド[３]のプロローグ[３]が省略されている。連続領域への書き込みを指示する複数のライト・コマンドによるセグメント・テーブル２４３の更新は、このように、最初のライト・コマンドのプロローグと、最後のライト・コマンドのエピローグとで示すことができる。
【００４８】
複数ライト・コマンドの指定アドレス領域が連続しているために、その領域を一つのライト・コマンドに対応するジャーナルで示すことができる。ここで重要なことは、最後のライト・コマンド[３]に対応するエピローグ[３]が含むデータは、ライト・コマンド[３]のみのために形成されるジャーナルとは異なるということである。図６に示すように、ライト・コマンド[３]単独でジャーナルを保存する場合は、そのライト・コマンド[３]が指定するアドレスをエピローグも有する。
【００４９】
しかし、複数ライト・コマンドをまとめてジャーナルを保存する場合、エピローグは複数ライト・コマンドが指定する全てのアドレス領域を示すことが必要になる。そのため、ＨＤＣ／ＭＰＵ２３は、最初のライト・コマンド[１]のプロローグ[１]の開始ＬＢＡと、最後のライト・コマンド[３]の終了アドレスとから、開始ＬＢＡとデータ長とを決定し、その値をエピローグ[３]に格納する。図７の例において、エピローグ[３]の開始ＬＢＡは、プロローグ[１]と同様のＬＢＡ１００ｈであり、また、データ長は、ＬＢＡ１００ｈから最後のライト・コマンド[３]の終了アドレス１ＡＦｈまでのＢ０ｈである。
【００５０】
また、連続領域を指定する複数ライト・コマンドを一単位としてジャーナルを保存することで、保存するジャーナルのエントリ数を低減することができると共に、ジャーナル保存のための処理時間を短縮することができる。上記説明から理解されるように、ＨＤＣ／ＭＰＵ２３は、三つのライト・コマンドのジャーナルを保存するために、２回の書き込み処理を行うのみである。各ライト・コマンドに対して個別にジャーナルを保存する場合に対して、四回の書き込み処理時間を短縮することができる。
【００５１】
続いて、図８のフローチャートを参照して、上記三つのライト・コマンドを一グループしてジャーナルを保存する処理を説明する。ＨＤＤ１のライト・キャッシュ機能はイネーブルとなっている。ライト・キャッシュ機能は、ライト・データを不揮発性メモリに保存する前に、ライト・データをセクタ・バッファ２４１に格納すると、ホスト５１からのライト・コマンドに対して、完了の通知を行う機能である。ライト・キャッシュ機能がイネーブルされている場合、ライト・データの保存は、ホスト５１に対して保障されない。
【００５２】
ＨＤＣ／ＭＰＵ２３は、キャッシュされているライト・コマンドを取得し（Ｓ２１）、そのライト・コマンドの指定アドレスを参照して、その前のライト・コマンドのアドレスに連続しているかを判定する（Ｓ２２）。最初のライト・コマンド[１]は、連続領域への書き込みではないため（Ｓ２２におけるＮ）、ＨＤＣ／ＭＰＵ２３は、プロローグ[１]をジャーナル領域２５２に書き込む（Ｓ２３）。ＨＤＣ／ＭＰＵ２３は、さらに、ライト・コマンド[１]のユーザ・データをフラッシュ・メモリ２５に保存し（Ｓ２４）、さらにＤＲＡＭ２４上の一時的セグメント・テーブル２４３を更新する（Ｓ２５）。
【００５３】
次に、ＨＤＣ／ＭＰＵ２３は、次のライト・コマンドがキャッシュされているかを確認し（Ｓ２６）、次のライト・コマンドが存在する場合（Ｓ２６におけるＹ）、そのライト・コマンドを取得する（Ｓ２１）。本例では、ＨＤＣ／ＭＰＵ２３は、ライト・コマンド[２]を取得する。ＨＤＣ／ＭＰＵ２３は、ライト・コマンド[２]の指定アドレスを参照し、そのアドレスが、その前のライト・コマンド[１]の指定アドレスに連続しているかを判定する（Ｓ２２）。本例において、これらの指定アドレスは連続領域であり（Ｓ２２におけるＹ）、ＨＤＣ／ＭＰＵ２３はプロローグの書き込み（Ｓ２３）を省略して、ライト・コマンド[２]のユーザ・データをフラッシュ・メモリ２５に保存し（Ｓ２４）、さらにＤＲＡＭ２４上の一時的セグメント・テーブル２４３を更新する（Ｓ２５）。
【００５４】
次に、ＨＤＣ／ＭＰＵ２３は、次のライト・コマンドがキャッシュされているかを確認し（Ｓ２６）、次のライト・コマンドが存在する場合（Ｓ２６におけるＮ）、そのライト・コマンドを取得する（Ｓ２１）。本例では、ＨＤＣ／ＭＰＵ２３は、ライト・コマンド[３]を取得する。ＨＤＣ／ＭＰＵ２３は、ライト・コマンド[３]の指定アドレスを参照し、そのアドレスが、その前のライト・コマンド[２]の指定アドレスに連続しているかを判定する（Ｓ２２）。本例において、これらの指定アドレスは連続領域である（Ｓ２２におけるＹ）。
【００５５】
従って、ＨＤＣ／ＭＰＵ２３はプロローグの書き込み（Ｓ２３）を省略して、ライト・コマンド[３]のユーザ・データをフラッシュ・メモリ２５に保存し（Ｓ２４）、さらにＤＲＡＭ２４上の一時的セグメント・テーブル２４３を更新する（Ｓ２５）。キャッシュされているライト・コマンドがない場合（Ｓ２６におけるＮ）、ＨＤＣ／ＭＰＵ２３は、エピローグを保存する（Ｓ２７）。本例においてはライト・コマンド[３]が最後のライト・コマンドであり、ＨＤＣ／ＭＰＵ２３は、図７に示したエピローグ[３]をジャーナル領域２５２に書き込む。
【００５６】
本方法に従えば、ＨＤＣ／ＭＰＵ２３は、２つのライト・コマンドが連続アドレス領域を指定する場合、最初のライト・コマンドに対応するエピローグと、最後のライト・アドレスにおけるプロローグを省略する。また、上述のように、３以上の連続するライト・コマンドが、一つの連続アドレス領域を指定する場合、最初のライト・コマンドに対応するエピローグと、最後のライト・アドレスにおけるプロローグ、そして、それらの中間のライト・コマンドに対応する全てのジャーナルの保存を省略する。
【００５７】
ＨＤＣ／ＭＰＵ２３は、連続領域へ書き込むライト・コマンドの全てを一つのグループに含めることができる。つまり、ＨＤＣ／ＭＰＵ２３は、取得したライト・コマンドが示すアドレス領域がその前のライト・コマンドのアドレス領域に連続している場合、そのライト・コマンドを無条件でグループに含める。しかし、グループに含めることはジャーナルの保存を遅らせることにあり、その時間が長すぎることは好ましくない場合もある。
【００５８】
そこで、好ましい例において、ＨＤＣ／ＭＰＵ２３は、グループを構成するライト・コマンド数が予め設定されている閾値に達すると、そのグループに対応するジャーナルをフラッシュ・メモリ２５に保存する。あるいは、ＨＤＣ／ＭＰＵ２３は、グループを構成するライト・コマンドが指定するアドレス領域が予め設定されている閾値に達すると、そのグループに対応するジャーナルをフラッシュ・メモリ２５に保存する。
【００５９】
ＨＤＣ／ＭＰＵ２３は、各ライト・コマンドの指定アドレス領域に応じて、そのライト・コマンドをグループに含めるか否かを決定することができる。具体的には、ライト・コマンドの指定したデータ長が予め設定されている閾値に達している場合、ＨＤＣ／ＭＰＵ２３は、そのライト・コマンド単独のジャーナル、つまり、そのライト・コマンドに対応するプロローグとエピローグとをフラッシュ・メモリ２５に保存する。
【００６０】
グループに対応するプロローグとエピローグとがフラッシュ・メモリ２５に保存されている場合、予期しない電源遮断後において、ＨＤＣ／ＭＰＵ２３は、上記プロローグとエピローグとを使用してセグメント・テーブルを回復することができる。しかし、プロローグを保存した後、エピローグを保存する前に電源遮断が起きることがありうる。エピローグが保存されていない場合、ＨＤＣ／ＭＰＵ２３は、フラッシュ・メモリ２５のユーザ・データ領域２５１に保存されているグループのライト・データ長を知ることができない。一方、ＨＤＣ／ＭＰＵ２３は、フラッシュ・メモリ２５にデータを上書きすることはできず、既存データを消去することが必要である。
【００６１】
そこで、ＨＤＣ／ＭＰＵ２３は、グループに対応するエピローグが保存される前に電源遮断が起きた場合、ユーザ・データ領域２５１内において上記グループに対応するユーザ・データが保存されている可能性がある領域を消去する。具体的には、ＨＤＣ／ＭＰＵ２３は、上記グループのプロローグが示すユーザ・データ領域２５１内アドレスから先の不使用領域を消去する。不使用領域は、保存セグメント・テーブル２５３が示す他のユーザ・データが保存されている領域までの領域である。ユーザ・データ領域２５１がリングバッファとして機能している場合、他のユーザ・データが保存されている領域以外の領域が消去される。これにより、その後のユーザ・データのユーザ・データ領域２５１への保存処理を円滑に進めることができる。
【００６２】
次に、ライト・コマンドのグループ化の他の好ましい方法を説明する。この方法は、指定アドレス領域が不連続（離散）の複数ライト・コマンドを一つのグループとし、さらに、そのグループのジャーナルの一部を同時にフラッシュ・メモリ２５に保存する。ＨＤＣ／ＭＰＵ２３は、ジャーナルの一部を省略して保存する。図９を参照して具体的に説明する。
【００６３】
ライト・キャッシュ機能はイネーブルされている。／ＭＰＵ２３は、キャッシュされているライト・コマンド[１]の処理において、ＳＲＡＭ２３１にプロローグ[１]とエピローグ[１]とを格納する。さらに、ＨＤＣ／ＭＰＵ２３は、プロローグ[１]をフラッシュ・メモリ２５のジャーナル領域２５２に保存する。その後、ＨＤＣ／ＭＰＵ２３は、キャッシュされているライト・コマンド[２]〜ライト・コマンド[Ｎ]を順次処理し、それぞれのライト・コマンドに対応する、プロローグ[２]〜プロローグ[Ｎ]、エピローグ[２]〜エピローグ[Ｎ]をＳＲＡＭ２３１に格納する。
【００６４】
キャッシュされているライト・コマンドが終了する、あるいは、ＳＲＡＭ２３１のジャーナル格納数が閾値に達すると、ＨＤＣ／ＭＰＵ２３は、ＳＲＭＡ２１３に格納されているジャーナルを同時にフラッシュ・メモリ２５のジャーナル領域２５２に保存する。このとき、ＨＤＣ／ＭＰＵ２３は、各ライト・コマンドのプロローグ[２]〜プロローグ[Ｎ]を省略し、エピローグ[２]〜エピローグ[Ｎ]をジャーナル領域２５２に保存する。保存セグメント・テーブル２５３の更新のためにはエピローグのみで十分であり、ＨＤＣ／ＭＰＵ２３は、保存するジャーナルを省略することでエントリ数を低減する。また、複数ライト・コマンドに対応するジャーナルを同時に保存することで、そのための処理時間を短縮することができる。最初のプロローグのみを保存して、その後のジャーナルを保存する前に電源遮断が起きた場合の処理は、上記連続領域へのライト・コマンドによりグループを構成する場合と同様である。
【００６５】
以上、本発明について好ましい態様を使用して説明したが、本発明は上述した実施の形態のみに限定されるものではなく、本発明の要旨を逸脱しない範囲において種々の変更が可能であることは勿論である。例えば、上述の実施の形態においては、ＨＤＤを例にとって説明したが、光ディスクや光磁気ディスクなど他のディスクを使用するデータ記憶装置に適用してもよい。
【００６６】
上述のように、セグメント・テーブルを不揮発性半導体メモリに保存することが好ましいが、不揮発性メモリである磁気ディスクに保存してもよい。不揮発性半導体メモリとしては、フラッシュ・メモリ以外のメモリを使用してもよい。また、複数のＩＣを使用して不揮発性半導体メモリの領域を形成してもよい。メモリ領域は、ＩＣやディスクなどの素子の数に制限されない。セグメント・テーブルやジャーナルなどのデータ・フォーマットや１ライト・コマンドに対応するログ・データの数などは、設計により変更することができる。
【図面の簡単な説明】
【００６７】
【図１】本実施の形態にかかるハードディスク・ドライブの全体構成を模式的に示すブロック図である。
【図２】本実施の形態において、再生処理を行う構成要素を模式的に示すブロック図である。
【図３】本実施の形態にかかるセグメント・テーブルのレコード及びジャーナルのフォーマットを模式的に示す図である。
【図４】本実施の形態にかかるジャーナルを使用してセグメント・テーブルを回復処理の一例を模式的に示す図である。
【図５】本実施の形態において、ライト・コマンド毎にジャーナルを保存する例を説明するフローチャートである。
【図６】本実施の形態において、ライト・コマンド毎にジャーナルを保存する例を説明する図である。
【図７】本実施の形態において、連続領域を指定する複数ライト・コマンドで構成するグループに対応したジャーナルを保存する例を説明する図である。
【図８】本実施の形態において、連続領域を指定する複数ライト・コマンドで構成するグループに対応したジャーナルを保存する例を説明するフローチャートである。
【図９】本実施の形態において、離散領域を指定する複数ライト・コマンドで構成するグループに対応したジャーナルの保存を説明する図である。
【符号の説明】
【００６８】
１  ハードディスク・ドライブ、１０  エンクロージャ、１１  磁気ディスク
１２  ヘッド・スライダ、１３  アーム・エレクトロニクス、１４  スピンドル・モータ
１５  ボイス・コイル・モータ、１６  アクチュエータ、２０  回路基板
２１  ＲＷチャネル、２２  モータ・ドライバ・ユニット
２３  ハードディスク・コントローラ／ＭＰＵ、２４  ＤＲＡＭ
２５  フラッシュ・メモリ、２３１  ＳＲＡＭ、２３２  プロローグ・ジャーナル
２３３  エピローグ・ジャーナル、２４１  セクタ・バッファ
２４２、２５４  ＰＩＮ／ＵＮＰＩＮテーブル、２４３  一時的セグメント・テーブル
２５１  ユーザ・データ領域、２５２  ジャーナル領域
２５３  保存セグメント・テーブル、２５５  ＰＩＮ領域、２５６  ＵＮＰＩＮ領域
【図１】
0004919983.tif 000002
【図２】
0004919983.tif 000003
【図３】
0004919983.tif 000004
【図４】
0004919983.tif 000005
【図５】
0004919983.tif 000006
【図６】
0004919983.tif 000007
【図７】
0004919983.tif 000008
【図８】
0004919983.tif 000009
【図９】
0004919983.tif 000010