説明

ディスク・ドライブ装置及びディスク・ドライブ装置において不揮発性半導体メモリ領域上のデータを管理するテーブルを保存する方法

【課題】セグメント・テーブルの保存処理によるホストの処理への影響を抑制する。
【解決手段】本発明の一形態において、HDD1は、ユーザ・データのフラッシュ・メモリ25のアドレスと磁気ディスク11のLBAとを対応づけるセグメント・テーブルを作成する。HDD1は、セグメント・テーブル243をDRAM24上で更新すると共に、所定タイミングでフラッシュ・メモリ25に保存する。HDD1は、セグメント・テーブル243の更新を示すジャーナルを生成し、それをフラッシュ・メモリ25に保存する。フラッシュ・メモリ25上のセグメント・テーブル253とジャーナルとから、最新のセグメント・テーブルを回復することができる。HDD1は、所定のコマンドをホストから受信すると、DRAM24上のセグメント・テーブル243をフラッシュ・メモリ25にセーブする。

【発明の詳細な説明】
【技術分野】
【0001】
本発明はユーザ・データを保存するためのディスクと不揮発性半導体メモリとを有するディスク・ドライブ装置及びそのディスク・ドライブ装置において不揮発性半導体メモリ領域上のデータを管理するテーブルを保存する方法に関する。
【背景技術】
【0002】
データ記憶装置として、光ディスク、光磁気ディスク、あるいはフレキシブル磁気ディスクなどの様々な態様のメディアを使用する装置が知られているが、その中で、ハードディスク・ドライブ(HDD)は、コンピュータの記憶装置として広く普及し、現在のコンピュータ・システムにおいて欠かすことができない記憶装置の一つとなっている。さらに、コンピュータにとどまらず、動画像記録再生装置、カーナビゲーション・システム、携帯電話、あるいはデジタル・カメラなどで使用されるリムーバブルメモリなど、HDDの用途は、その優れた特性により益々拡大している。
【0003】
HDDは、磁気ディスクへのアクセス(リードもしくはライト)のために、磁気ディスクを回転し、ヘッド・スライダを目的のデータ・セクタに移動する。このため、HDDの消費電力は半導体メモリに比較して大きく、また、そのアクセス・スピードも半導体メモリよりも遅い。特に、スピンドル・モータのスピン・アップ時間は他の動作に比較して多くの時間を必要とする。このため、HDDの起動時や、省電力低減のためのパワー・セーブ・モードから復帰するときに多くの処理時間を必要とする。
【0004】
このため、HDDに不揮発性半導体メモリの一つであるフラッシュ・メモリを実装することが提案されている(例えば、特許文献1を参照)。フラッシュ・メモリは半導体メモリであるため、磁気ディスクよりもアクセス・スピードが速く、消費電力が小さい。また、フラッシュ・メモリは不揮発性メモリであるため、電源オフ状態であってもデータを保存しておくことができる。
【0005】
HDDに実装するフラッシュ・メモリの容量は、コストなどの点から制限される。従って、HDDは、特定のユーザ・データのみをフラッシュ・メモリに保存し、その他ユーザ・データを磁気ディスクに保存する。例えば、ホストの起動に必要なデータや、ホストが頻繁にアクセスするデータをフラッシュ・メモリに保存しておくことによって、ホストの起動時間の短縮、HDDのパフォーマンスの向上、あるいはスピンドル・モータの回転数を小さくするパワー・セーブ・モードによる消費電力の低減を図ることができる。
【0006】
ホストは、HDDに対して、磁気ディスクのアドレスであるLBA(Logical Block Address)を指定してデータの書き込みあるいは読み出しを指示する。従って、HDDは、フラッシュ・メモリに保存しているユーザ・データのLBAと、フラッシュ・メモリ内のアドレスとを対応付けることが必要となる。具体的には、HDDは、上記二つのアドレスを対応づけるテーブルを作成し、そのテーブルを参照することで、磁気ディスク及びフラッシュ・メモリへのアクセスを行う。以下において、このテーブルをセグメント・テーブルと呼ぶ。
【特許文献1】特開2006−114206号公報
【特許文献2】特開2005−115857号公報
【発明の開示】
【発明が解決しようとする課題】
【0007】
セグメント・テーブルは電源がオフされ、再度オンされた後も使用するものであるため、HDDは、不揮発性メモリである磁気ディスクもしくはフラッシュ・メモリにセグメント・テーブルを保存する。典型的には、セグメント・テーブルはフラッシュ・メモリに保存される。しかし、フラッシュ・メモリはデータの書き換えのために消去と書き込みのプロセスが必要であり、頻繁にセグメント・テーブルを更新することは、パフォーマンスの低下を招く。
【0008】
そこで、セグメント・テーブルをRAMにロードし、RAM上のセグメント・テーブルを更新する。さらに、セグメント・テーブルの更新内容を示すログ・データを生成し、そのログ・データをフラッシュ・メモリに保存することが考えられる。なお、HDDにおけるログ・データの使用は、例えば特許文献2に開示されている。
【0009】
ログ・データを保存しておくことによって、電源遮断によりRAM上の最新のセグメント・テーブルが消えてしまった場合でも、フラッシュ・メモリ上のセグメント・テーブルとログ・データとから、最新のセグメント・テーブルを復元することができる。一方、RAM上のセグメント・テーブルの内容を、いずれかのタイミングでフラッシュ・メモリ上のセグメント・テーブルに反映することが必要となる。フラッシュ・メモリ上のセグメント・テーブルの更新は相応の処理時間を要するため、ホストへの影響を小さくすることが重要となる。
【課題を解決するための手段】
【0010】
本発明の一態様に係るディスク・ドライブ装置は、ユーザ・データを保存するディスク・メモリ領域と、ユーザ・データを保存する不揮発性半導体メモリ領域と、前記不揮発性半導体メモリ領域に保存されているユーザ・データのアドレスとそのユーザ・データに対応する前記ディスク・メモリ領域のアドレスとを対応づけ、随時更新される一時的セグメント・テーブル、を格納するバッファ・メモリ領域と、前記一時的セグメント・テーブルの更新履歴を示すジャーナルを保存する不揮発性メモリ領域と、コントローラとを有する。前記コントローラは、一もしくは複数の設定されたコマンドの内いずれかをホストから受信したことに応答して、前記一時的セグメント・テーブルの内容を、不揮発性メモリ領域に保存されている保存セグメント・テーブルに反映する。所定コマンドの受信に応答して一時的セグメント・テーブルの内容を保存セグメント・テーブルに反映することで、ホストの処理への影響を抑制しつつ、セグメント・テーブルの保存を行うことができる。
【0011】
好ましくは、前記一もしくは複数の設定されたコマンドは、前記不揮発性半導体メモリ領域と前記ディスク・メモリ領域との間のユーザ・データ転送を伴うコマンドを含む。これにより、効率的にセグメント・テーブルの保存を行うことができる。
【0012】
前記ジャーナルが前記不揮発性半導体メモリ領域に転送される前に前記ジャーナルを一時的に格納するバッファSRAM、をさらに有することが好ましい。これにより処理の高速化を図ることができる。
【0013】
前記不揮発性半導体メモリ領域は、前記ディスク・メモリ領域内の設定されているアドレスに対応するユーザ・データを保存し、前記一もしくは複数の設定されたコマンドは、前記設定されているアドレスを変更するコマンドを含むことが好ましい。あるいは、前記一もしくは複数の設定されたコマンドは、前記不揮発性半導体メモリに保存されているユーザ・データを前記ディスク・メモリ領域に移すコマンドを含むことが好ましい。もしくは、前記一もしくは複数の設定されたコマンドは、前記ディスクの回転が停止し前記不揮発性半導体メモリ領域にユーザ・データを保存するモードからの復帰を指示するコマンドを含むことが好ましい。これらにより、効率的にセグメント・テーブルの保存を行うことができる。
【0014】
前記コントローラは、前記ジャーナルを保存する不揮発性メモリ領域のサイズが基準値を越えると、前記一時的セグメント・テーブルの内容を、不揮発性メモリ領域に保存されている保存セグメント・テーブルに反映することが好ましい。これにより、不揮発性メモリが占有される領域を制限することができる。
【0015】
本発明の他の態様は、ユーザ・データを保存するディスク・メモリ領域と不揮発性半導体メモリ領域とを有するディスク・ドライブ装置において、前記不揮発性半導体メモリ領域上のデータを管理するテーブルを保存する方法である。この方法は、バッファ・メモリ領域において、前記不揮発性半導体メモリ領域に保存されているユーザ・データのアドレスとそのユーザ・データに対応する前記ディスク・メモリ領域のアドレスとを対応づける一時的セグメント・テーブルを随時更新する。前記一時的セグメント・テーブルの更新履歴を示すジャーナルを不揮発性メモリ領域に保存する。前記一もしくは複数の設定されたコマンドの内いずれかをホストから受信したことに応答して、前記一時的セグメント・テーブルの内容を、不揮発性メモリ領域に保存されている保存セグメント・テーブルに反映する。所定コマンドの受信に応答して一時的セグメント・テーブルの内容を保存セグメント・テーブルに反映することで、ホストの処理への影響を抑制しつつ、セグメント・テーブルの保存を行うことができる。
【発明の効果】
【0016】
本発明によれば、ホストの処理への影響を抑制しつつ、ディスク・アドレスと不揮発性半導体メモリのアドレスとを対応づけるセグメント・テーブルの保存を行うことができる。
【発明を実施するための最良の形態】
【0017】
以下に、本発明を適用可能な実施の形態を説明する。説明の明確化のため、以下の記載及び図面は、適宜、省略及び簡略化がなされている。又、各図面において、同一要素には同一の符号が付されており、必要に応じて重複説明は省略されている。以下においては、ディスク・ドライブ装置の一例であるハードディスク・ドライブ(HDD)について説明する。
【0018】
本形態のHDDは、ユーザ・データを保存するための不揮発性メモリとして、磁気ディスクの他にフラッシュ・メモリを有する。フラッシュ・メモリは、不揮発性半導体メモリである。HDDは、フラッシュ・メモリに保存するユーザ・データを管理するため、フラッシュ・メモリのアドレスと、そのユーザ・データが対応する磁気ディスクのアドレス(LBA)とを対応づけるテーブルを作成する。このテーブルを、以下においてセグメント・テーブルと呼ぶ。
【0019】
HDDは、セグメント・テーブルをRAM上で更新すると共に、所定のタイミングでフラッシュ・メモリに保存する。本形態のHDDは、さらに、RAM上の更新を示すログ・データを生成し、それをフラッシュ・メモリに保存する。以下において、このログ・データをジャーナルと呼ぶ。HDDは、予期しない電源遮断などが起きたとき、フラッシュ・メモリ上のセグメント・テーブルとジャーナルとから、最新のセグメント・テーブルを回復する。
【0020】
HDDは、所定のコマンドをホストから受信すると、RAM上のセグメント・テーブルの更新内容をフラッシュ・メモリ上のセグメント・テーブルに反映する。具体的には、HDDはフラッシュ・メモリ上のセグメント・テーブルを消去し、その後、RAM上のセグメント・テーブルをフラッシュ・メモリにセーブする。上記所定コマンドは、予め設定されているフラッシュ・メモリに関連するコマンドである。特に、磁気ディスクとフラッシュ・メモリとの間のユーザ・データの転送を伴うコマンドが、上記所定コマンドとして選択される。予め設定されているフラッシュ・メモリに関連するコマンドに応答してセグメント・テーブルのセーブを行うことで、セグメント・テーブルのセーブによるパフォーマンスへの影響を抑制することができる。
【0021】
まず、本形態のHDDの全体構成を、図1のブロック図を参照して説明する。HDD1は、エンクロージャ10の外側に固定された回路基板20を備えている。回路基板20上には、リード・ライト・チャネル(RWチャネル)21、モータ・ドライバ・ユニット22、ハードディスク・コントローラ(HDC)とMPUの集積回路(HDC/MPU)23及び揮発性半導体メモリのDRAM24、不揮発性半導体メモリであるフラッシュ・メモリ25などの各回路を有している。エンクロージャ10内において、スピンドル・モータ(SPM)14は所定の角速度で磁気ディスク11を回転する。磁気ディスク11は、データを記憶するディスクである。HDC/MPU23からの制御データに従って、モータ・ドライバ・ユニット22がSPM14を駆動する。
【0022】
各ヘッド・スライダ12は、磁気ディスク上を浮上するスライダと、スライダに固定され磁気信号と電気信号との間の変換(データの読み書き)を行うヘッド素子部とを備えている。各ヘッド・スライダ12はアクチュエータ16の先端部に固定されている。アクチュエータ16はボイス・コイル・モータ(VCM)15に連結され、回動軸を中心に回動することによって、ヘッド・スライダ12を回転する磁気ディスク11上においてその半径方向に移動する。モータ・ドライバ・ユニット22は、HDC/MPU23からの制御データに従ってVCM15を駆動する。アーム電子回路(AE:Arm Electronics)13は、HDC/MPU23からの制御データに従って複数のヘッド素子部12の中から磁気ディスク11にアクセス(リードもしくはライト)するヘッド・スライダ12を選択し、リード/ライト信号の増幅を行う。
【0023】
RWチャネル21は、リード処理において、AE13から取得したリード信号からサーボ・データ及びユーザ・データを抽出し、デコード処理を行う。デコード処理されたデータは、HDC/MPU23に供給される。また、RWチャネル21は、ライト処理において、HDC/MPU23から供給されたライト・データをコード変調し、さらに、コード変調されたデータをライト信号に変換してAE13に供給する。HDC/MPU23において、HDCはロジック回路であり、MPUはDRAM24にロードされたファームウェアに従って動作する。HDD1の起動に伴い、DRAM24には、制御及びデータ処理に必要とされるデータが磁気ディスク11あるいはROM(不図示)からロードされる。HDC/MPU23はコントローラの一例であり、ヘッド・ポジショニング制御、インターフェース制御、ディフェクト管理などのデータ処理に関する必要な処理の他、HDD1の全体制御を実行する。
【0024】
HDC/MPU23は、ホスト51からのユーザ・データの一部をフラッシュ・メモリ25に保存する。フラッシュ・メモリ25上のユーザ・データを磁気ディスク11にも保存するか否かは、設計によって決めることができる。フラッシュ・メモリ25に保存するデータは、磁気ディスク11のLBAで特定することができる。HDC/MPU23は、予め設定されているLBAへのライト・コマンドを受信すると、そのユーザ・データをフラッシュ・メモリ25に保存する。HDC/MPU23は、フラッシュ・メモリ25に保存するユーザ・データのLBAを自ら設定することができ、また、ホスト51から指定されたLBAのユーザ・データをフラッシュ・メモリ25に保存する。
【0025】
図2は、フラッシュ・メモリ25にユーザ・データを保存するための処理に関連する論理構成要素を模式的に示すブロック図である。DRAM24上のPIN/UNPINテーブル242は、フラッシュ・メモリ25に保存するデータの磁気アドレス領域を示す。PIN領域及びUNPIN領域は、LBAで示される磁気ディスク・アドレスの一部の領域である。PIN領域は、ホスト51がフラッシュ・メモリ25に保存するアドレス領域として指定する。一方、UNPIN領域は、HDC/MPU23自身がフラッシュ・メモリ25に保存するアドレス領域として選択するものである。
【0026】
HDC/MPU23は、フラッシュ・メモリ25に保存されているPIN/UNPINテーブル254をDRAM24にロードする。HDC/MPU23は、ライト処理においては、DRAM24上のPIN/UNPINテーブル242を参照して処理を行う。また、HDC/MPU23はDRAM24上のPIN/UNPINテーブル242を変更した場合、それをフラッシュ・メモリ25上のPIN/UNPINテーブル254に反映する。
【0027】
ホスト51から転送された所定のユーザ・データU_DATAは、DRAM24内のセクタ・バッファ241に格納された後、フラッシュ・メモリ25に保存される。フラッシュ・メモリ25内に、ユーザ・データ領域251が確保されており、そこにユーザ・データが保存される。上述のように、フラッシュ・メモリ25に保存されるデータは、PINデータとUNPINデータがあり、それぞれ、ユーザ・データ領域251内のPIN領域255とUNPIN領域256とに保存される。
【0028】
HDC/MPU23は、フラッシュ・メモリ25上の保存セグメント・テーブル253をDRAM24にロードする。DRAM24上のセグメント・テーブルである一時的セグメント・テーブル243は、ユーザ・データのリード及びライト処理においてHDC/MPU23に参照される。セグメント・テーブル243、253は、フラッシュ・メモリ25に保存されているユーザ・データのアドレスを特定する。具体的には、セグメント・テーブル243、253は、フラッシュ・メモリ25上のユーザ・データのフラッシュ・メモリ・アドレスと磁気ディスク・アドレスとを対応づける。ホスト51は、磁気ディスク11上のアドレスであるLBAを指定して、データの書き込みを指示する。セグメント・テーブル243、253は、そのLBAとフラッシュ・メモリ25上のアドレスとを対応付けて格納している。
【0029】
図3(a)は、セグメント・テーブル243、253内の一レコードのフォーマットを模式的に示している。フラッシュ・メモリ25に保存されているユーザ・データの開始LBAと、データ・セクタ数で表されるデータ長LEN、そしてPIN/UNPINのサイズを有している。PIN/UNPINのサイズは、ユーザ・データ領域251における、PIN領域255あるいはUNPIN領域256内のサイズを示している。PIN領域255あるいはUNPIN領域256は、ユーザ・データを、それぞれの先頭アドレスから順次格納していくため、PIN/UNPINのサイズを特定することでPIN領域255あるいはUNPIN領域256内のデータ位置を特定することができる。
【0030】
HDC/MPU23は、フラッシュ・メモリ25へのアクセス(リードもしくはライト)に応じて、一時的セグメント・テーブル243を更新する。HDC/MPU23は、その更新内容をすぐにフラッシュ・メモリ25上の保存セグメント・データ・テーブル253に反映せずに、その更新内容を示すログ・データであるジャーナルを生成する。HDC/MPU23はSRAM231を有しており、そのSRAM231に生成したジャーナルを格納する。生成されたジャーナルは、フラッシュ・メモリ25上の領域252に逐次保存される。保存する前のジャーナルの格納にSRAM231を使用することによって、DRAMよりも処理速度を速めることができる。また、SRAM231からフラッシュ・メモリ25への保存も、DRAMよりも高速に行うことができる。
【0031】
図3(b)は、ジャーナルのフォーマットを模式的に示している。ジャーナルは、そのタイプを示すデータ、開始LBA、データ長LEN、そしてPIN/UNPINのサイズを有している。LBA、LEN、そしてPIN/UNPINのサイズは、セグメント・テーブル243、253のレコード内のデータと同様である。複数のタイプのジャーナルが存在し、本明細書においては、プロローグ・ジャーナルとエピローグ・ジャーナルについて説明する。HDC/MPU23は、プロローグ・ジャーナル232を生成した後に一時的セグメント・テーブル243を更新し、その後エピローグ・ジャーナル233を生成する。これによって、一時的セグメント・テーブル243を更新している間に電源遮断などがあった場合にも、正確にセグメント・テーブルを回復することができる。
【0032】
続いて、図2を参照して、フラッシュ・メモリ25へのユーザ・データの保存及びそれに伴う一時的セグメント・テーブル243の更新及びジャーナルの保存の処理例を説明する。HDC/MPU23は、ホスト51からライト・コマンドW_COMMANDを受信する[1]。さらに、HDC/MPU23は、ユーザ・データU_DATAを受信し、それをセクタ・バッファ241に格納する[2]。HDC/MPU23は、DRAM24上のPIN/UNPINテーブル242を参照して、ライト・コマンドW_COMMANDが指定するLBAがPINもしくはUNPIN領域内にあるか判定する[3]。ここでは、指定LBAが、上記のいずれかの領域にあるとする。
【0033】
HDC/MPU23は、プロローグ・ジャーナル232を生成し、それをフラッシュ・メモリ25内のジャーナル領域252に保存する[4]。次に、HDC/MPU23は、セクタ・バッファ241内のユーザ・データU_DATAを、フラッシュ・メモリ25内のユーザ・データ領域251に保存する[5]。次に、HDC/MPU23は、一時的セグメント・テーブル243を更新する[6]。続いて、HDC/MPU23は、エピローグ・ジャーナル233を生成し、それをフラッシュ・メモリ25内のジャーナル領域252に保存する[7]。
【0034】
次に、突然の電源遮断が起きた後、ジャーナルを使用してセグメント・テーブルを回復処理の一例を、図4(a)、(b)を参照して説明する。図4(a)において、左から右に向く矢印は、時間の経過を示している。なお、以下の各処理は、HDC/MPU23が実行する。最初の処理は、一時的セグメント・テーブル243に格納されているレコード#1とレコード#2を、保存セグメント・テーブル253に保存する。次の処理は、一時的セグメント・テーブル243にレコード#3を追加し、さらに、それを示すジャーナルをジャーナル領域252保存する。次の処理は、一時的セグメント・テーブル243からレコード#2を削除し、さらに、それを示すジャーナルをジャーナル領域252保存する。この段階において、電源遮断が発生する。
【0035】
その後、電源が回復すると、図4(b)に示す回復処理が開始する。図4(b)において、最初の処理は、保存セグメント・テーブル内のレコード#1とレコード#2とをDRAM24にロードして、一時的セグメント・テーブル243を生成する。次の処理は、レコード#3の追加を示すジャーナルに従って、一時的セグメント・テーブル243にレコード#3を追加する。最後の処理は、レコード#2の削除を示すジャーナルに従って、一時的セグメント・テーブル243からレコード#2を削除する。以上の処理で、一時的セグメント・テーブル243が回復される。必要であれば、このタイミングで、一時的セグメント・テーブル243をセーブする。
【0036】
このように、ジャーナルを保存することによって、セグメント・テーブルを毎回保存するよりも処理時間を短縮することができると共に、予期しない電源遮断などが起きた場合でも、セグメント・テーブルを回復することができる。特に、フラッシュ・メモリは、データの書き換えをするためにブロック単位でデータを消去した後、新たなデータを書き込むことを必要とする。つまり、保存セグメント・テーブル253を更新するために、フラッシュ・メモリ25は、それを格納している領域を含むブロックを消去し、さらに、その消去したブロック内に新たな保存セグメント・テーブル253を書き込む。また、保存セグメント・テーブルは、一般に、高速サーチのために、2分木データ構造、あるいは線形リストやハッシュテーブルを有しており、一部のデータを追加する場合にも全体を書き換えることが要求される。一方、フラッシュ・メモリ25は、新たなジャーナルを、随時、ジャーナル領域252に書き込む。この書き込みのためには、消去処理を必要としない。このため、処理時間が大きく短縮される。
【0037】
しかし、更新されたセグメント・テーブルをフラッシュ・メモリ25に保存することなくジャーナルを蓄積していくと、フラッシュ・メモリ25の領域が徒に消費されてしまう。従って、所定のタイミングで保存セグメント・テーブル253を更新し、フラッシュ・メモリ25のジャーナルを消去することが必要となる。一方、セグメント・テーブルのセーブにはより長い処理時間を要するため、パフォーマンスの低下を考慮することが重要となる。
【0038】
本形態のHDC/MPU23は、予め設定されているフラッシュ・メモリ25に関するコマンドをホスト51から受信すると、一時的セグメント・テーブル243をフラッシュ・メモリ25にセーブする。具体的には、PIN領域の変更を指示するコマンド、フラッシュ・メモリ25のユーザ・データを磁気ディスク11に転送することを指示するコマンド、そして磁気ディスク11の回転を停止してフラッシュ・メモリにユーザ・データを保存するモードから復帰することを指示するコマンドである。
【0039】
まず、PIN領域の変更を指示するコマンドを受けた場合の処理を、図5のブロック図及び図6のフローチャートを参照して説明する。HDC/MPU23は、ホスト51からPIN/UNPIN領域の変更を指示するコマンドP_COMMNADを受信する(S11)。HDC/MPU23は、一時的セグメント・テーブル243を参照して、PIN/UNPIN領域の変更に伴い磁気ディスク11とフラッシュ・メモリ25との間で転送すべきユーザ・データのアドレスを特定する(S12)。
【0040】
PIN領域が増加した場合には、増加した領域のユーザ・データが、磁気ディスク11からフラッシュ・メモリ25に転送される。あるいは、PIN領域が減少した場合には、削除されたPIN領域のユーザ・データが、フラッシュ・メモリ25から磁気ディスク11に転送される(S13)。HDC/MPU23は、データ転送が終了すると、一時的セグメント・テーブル243をフラッシュ・メモリ25にセーブして、保存セグメント・テーブル253を更新する(S14)。対応するユーザ・データが存在しない場合には、データ転送処理は省略される。その後、HDC/MPU23は、ジャーナル領域252のデータを消去する(S15)。
【0041】
次に、フラッシュ・メモリ25のユーザ・データを磁気ディスク11に転送することを指示するコマンドを受けた場合の処理を、図7のブロック図及び図8のフローチャートを参照して説明する。HDC/MPU23は、このコマンドを受信すると、フラッシュ・メモリ25内のUNPIN領域のユーザ・データを磁気ディスク11に転送する。これによって、フラッシュ・メモリ25の領域が開放される。具体的には、HDC/MPU23は、ホスト51からフラッシュ・メモリ25から磁気ディスク11へのデータ移動を指示するコマンドF_COMMNADを受信する(S21)。HDC/MPU23は、一時的セグメント・テーブル243を参照して、磁気ディスク11に転送すべきユーザ・データのアドレスを特定する(S22)。HDC/MPU23は、ユーザ・データ領域251のUNPIN領域256内のデータを磁気ディスク11へ転送する(S23)。
【0042】
その後、磁気ディスク11へのデータの保存が終了すると、HDC/MPU23は、一時的セグメント・テーブル243をフラッシュ・メモリ25にセーブして、保存セグメント・テーブル253を更新する(S24)。対応するユーザ・データが存在しない場合には、データ転送処理は省略される。さらに、HDC/MPU23は、ジャーナル領域252のデータを消去する(S25)。
【0043】
次に、磁気ディスク11の回転を停止してフラッシュ・メモリにユーザ・データを保存するモードから復帰することを指示するコマンドを受けた場合の処理を、図9のフローチャートを参照して説明する。上記モードは、ホスト51とのインターフェースを維持しながら、磁気ディスク11の回転を停止することで電力消費量を低減することができる。このようなモードから通常動作モードへの復帰を指示するコマンドを受信すると(S31)、HDC/MPU23は、一時的セグメント・テーブル243を参照して、磁気ディスク11に転送すべきユーザ・データのアドレスを特定する(S32)。HDC/MPU23は、ユーザ・データ領域251のUNPIN領域256内のデータを磁気ディスク11へ転送する(S33)。
【0044】
その後、磁気ディスク11へのデータの保存が終了すると、HDC/MPU23は、一時的セグメント・テーブル243をフラッシュ・メモリ25にセーブして、保存セグメント・テーブル253を更新する(S34)。対応するユーザ・データが存在しない場合には、データ転送処理は省略される。さらに、HDC/MPU23は、ジャーナル領域252のデータを消去する(S35)。
【0045】
上記三つのコマンドは、フラッシュ・メモリ25に関連するコマンドであり、ホスト51が処理の遅延を許容しやすいと考えられる。また、上記三つのコマンドに共通していることは、これらコマンドに応じた処理は、フラッシュ・メモリ25と磁気ディスク11との間のユーザ・データ転送が伴うことである。データ転送を必要としない場合もあるが、データ転送の蓋然性が高い。データ転送に伴い一時的セグメント・テーブル243の内容が変化する。このように、一時的セグメント・テーブル243が大きく変化する場合は、ジャーナルを保存するのではなく、一時的セグメント・テーブル243をセーブすることが好ましい。
【0046】
上記各例は、ホスト51からのコマンドに応答して一時的セグメント・テーブル243をセーブする。このほかに、本形態のHDC/MPU23は、フラッシュ・メモリ25のジャーナル領域252内のジャーナルが、規定サイズ(規定数)を越えた場合に、一時的セグメント・テーブル243をセーブする。具体的には、図10に示すように、フラッシュ・メモリ25のジャーナル領域252内のジャーナルが、規定サイズを越えると(S41)、HDC/MPU23は、一時的セグメント・テーブル243をフラッシュ・メモリ25にセーブして、保存セグメント・テーブル253を更新する(S42)。さらに、HDC/MPU23は、ジャーナル領域252のデータを消去する(S43)。
【0047】
HDC/MPU23は、さらに、ホスト51からのコマンド対応処理から解放されているアイドル状態にあるとき、一時的セグメント・テーブル243の保存を行う。これによって、ホスト51の処理への影響を最小限に抑えることができる。HDC/MPU23は、上述の各処理例と同様に、一時的セグメント・テーブル243をフラッシュ・メモリ25にセーブして、保存セグメント・テーブル253を更新すると共に、ジャーナル領域252をクリアする。
【0048】
以上、本発明について好ましい態様を使用して説明したが、本発明は上述した実施の形態のみに限定されるものではなく、本発明の要旨を逸脱しない範囲において種々の変更が可能であることは勿論である。例えば、上述の実施の形態においては、HDDを例にとって説明したが、光ディスクや光磁気ディスクなど他のディスクを使用するディスク・ドライブ装置に適用してもよい。
【0049】
上述のように、セグメント・テーブルを不揮発性半導体メモリに保存することが好ましいが、不揮発性メモリである磁気ディスクに保存してもよい。不揮発性半導体メモリとしては、フラッシュ・メモリ以外のメモリを使用してもよい。また、複数のICを使用して不揮発性半導体メモリの領域を形成してもよい。メモリ領域は、ICやディスクなどの素子の数に制限されない。一時的セグメント・テーブルの保存を行うコマンドは上述のものに限定されるものではなく、また、セグメント・テーブルやジャーナルなどのデータ・フォーマットも設計により変更することができる。セグメント・テーブルの保存タイミングとして、上述の各例の全てを採用する必要はなく、それらの内を一部のみをHDDに実装することができる。
【図面の簡単な説明】
【0050】
【図1】本実施の形態にかかるハードディスク・ドライブの全体構成を模式的に示すブロック図である。
【図2】本実施の形態において、再生処理を行う構成要素を模式的に示すブロック図である。
【図3】本本実施の形態にかかるセグメント・テーブルのレコード及びジャーナルのフォーマットを模式的に示す図である。
【図4】本実施の形態にかかるジャーナルを使用してセグメント・テーブルを回復処理の一例を模式的に示す図である。
【図5】本実施の形態にかかるPIN領域の変更を指示するコマンドを受けた場合の処理を模式的に示すブロック図である。
【図6】本実施の形態にかかるPIN領域の変更を指示するコマンドを受けた場合の処理の流れを示すフローチャートである。
【図7】本実施の形態にかかるフラッシュ・メモリのユーザ・データを磁気ディスクに転送することを指示するコマンドを受けた場合の処理を模式的に示すブロック図である。
【図8】本実施の形態にかかるフラッシュ・メモリのユーザ・データを磁気ディスクに転送することを指示するコマンドを受けた場合の処理の流れを示すフローチャートである。
【図9】本実施の形態にかかる磁気ディスクの回転を停止してフラッシュ・メモリにユーザ・データを保存するモードから復帰することを指示するコマンドを受けた場合の処理の流れを示すフローチャートである。
【図10】本実施の形態にかかるフラッシュ・メモリのジャーナル領域内のジャーナルが規定サイズを越えた場合の処理の流れを示すフローチャートである。
【符号の説明】
【0051】
1 ハードディスク・ドライブ、10 エンクロージャ、11 磁気ディスク
12 ヘッド・スライダ、13 アーム・エレクトロニクス、14 スピンドル・モータ
15 ボイス・コイル・モータ、16 アクチュエータ、20 回路基板
21 RWチャネル、22 モータ・ドライバ・ユニット
23 ハードディスク・コントローラ/MPU、24 DRAM
25 フラッシュ・メモリ、231 SRAM、232 プロローグ・ジャーナル
233 エピローグ・ジャーナル、241 セクタ・バッファ
242、254 PIN/UNPINテーブル、243 一時的セグメント・テーブル
251 ユーザ・データ領域、252 ジャーナル領域
253 保存セグメント・テーブル、255 PIN領域、256 UNPIN領域

【特許請求の範囲】
【請求項1】
ユーザ・データを保存するディスク・メモリ領域と、
ユーザ・データを保存する不揮発性半導体メモリ領域と、
前記不揮発性半導体メモリ領域に保存されているユーザ・データのアドレスとそのユーザ・データに対応する前記ディスク・メモリ領域のアドレスとを対応づけ、随時更新される一時的セグメント・テーブル、を格納するバッファ・メモリ領域と、
前記一時的セグメント・テーブルの更新履歴を示すジャーナルを保存する不揮発性メモリ領域と、
一もしくは複数の設定されたコマンドの内いずれかをホストから受信したことに応答して、前記一時的セグメント・テーブルの内容を、不揮発性メモリ領域に保存されている保存セグメント・テーブルに反映するコントローラと、
を有するディスク・ドライブ装置。
【請求項2】
前記一もしくは複数の設定されたコマンドは、前記不揮発性半導体メモリ領域と前記ディスク・メモリ領域との間のユーザ・データ転送を伴うコマンドを含む、
請求項1に記載のディスク・ドライブ装置。
【請求項3】
前記ジャーナルが前記不揮発性半導体メモリ領域に転送される前に前記ジャーナルを一時的に格納するバッファSRAM、をさらに有する、
請求項1に記載のディスク・ドライブ装置。
【請求項4】
前記不揮発性半導体メモリ領域は、前記ディスク・メモリ領域内の設定されているアドレスに対応するユーザ・データを保存し、
前記一もしくは複数の予め設定されたコマンドは、前記予め設定されているアドレスを変更するコマンドを含む、
請求項1に記載のディスク・ドライブ装置。
【請求項5】
前記一もしくは複数の設定されたコマンドは、前記不揮発性半導体メモリに保存されているユーザ・データを前記ディスク・メモリ領域に移すコマンドを含む、
請求項1に記載のディスク・ドライブ装置。
【請求項6】
前記一もしくは複数の設定されたコマンドは、前記ディスクの回転が停止し前記不揮発性半導体メモリ領域にユーザ・データを保存するモードからの復帰を指示するコマンドを含む、
請求項1に記載のディスク・ドライブ装置。
【請求項7】
前記コントローラは、前記ジャーナルを保存する不揮発性メモリ領域のサイズが基準値を越えると、前記一時的セグメント・テーブルの内容を、不揮発性メモリ領域に保存されている保存セグメント・テーブルに反映する、
請求項1に記載のディスク・ドライブ装置。
【請求項8】
ユーザ・データを保存するディスク・メモリ領域と不揮発性半導体メモリ領域とを有するディスク・ドライブ装置において、前記不揮発性半導体メモリ領域上のデータを管理するテーブルを保存する方法であって、
バッファ・メモリ領域において、前記不揮発性半導体メモリ領域に保存されているユーザ・データのアドレスとそのユーザ・データに対応する前記ディスク・メモリ領域のアドレスとを対応づける一時的セグメント・テーブルを随時更新し、
前記一時的セグメント・テーブルの更新履歴を示すジャーナルを不揮発性メモリ領域に保存し、
一もしくは複数の設定されたコマンドの内いずれかをホストから受信したことに応答して、前記一時的セグメント・テーブルの内容を、不揮発性メモリ領域に保存されている保存セグメント・テーブルに反映する、方法。
【請求項9】
前記一もしくは複数の設定されたコマンドは、前記不揮発性半導体メモリ領域と前記ディスク・メモリ領域との間のユーザ・データ転送を伴うコマンドを含む、
請求項8に記載の方法。
【請求項10】
前記ディスク・メモリ領域内の設定されているアドレスに対応するユーザ・データは、前記不揮発性半導体メモリ領域に保存され、
前記一もしくは複数の設定されたコマンドは、前記設定されているアドレスを変更するコマンドを含む、
請求項8に記載の方法。
【請求項11】
前記一もしくは複数の設定されたコマンドは、前記不揮発性半導体メモリに保存されているユーザ・データを前記ディスク・メモリ領域に移すコマンドを含む、
請求項8に記載の方法。
【請求項12】
前記一もしくは複数の設定されたコマンドは、前記ディスクの回転が停止し前記不揮発性半導体メモリ領域にユーザ・データを保存するモードからの復帰を指示するコマンドを含む、
請求項8に記載の方法。
【請求項13】
前記ジャーナルを保存する不揮発性メモリ領域のサイズが基準値を越えると、前記一時的セグメント・テーブルの内容を、不揮発性メモリ領域に保存されている保存セグメント・テーブルに反映する、
請求項8に記載の方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate


【公開番号】特開2009−20986(P2009−20986A)
【公開日】平成21年1月29日(2009.1.29)
【国際特許分類】
【出願番号】特願2007−185112(P2007−185112)
【出願日】平成19年7月15日(2007.7.15)
【出願人】(503116280)ヒタチグローバルストレージテクノロジーズネザーランドビーブイ (1,121)
【出願人】(000233055)日立ソフトウエアエンジニアリング株式会社 (1,610)
【Fターム(参考)】