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