JP4919983B2 - データ記憶装置及びデータ記憶装置におけるデータ管理方法 - Google Patents

データ記憶装置及びデータ記憶装置におけるデータ管理方法 Download PDF

Info

Publication number
JP4919983B2
JP4919983B2 JP2008040128A JP2008040128A JP4919983B2 JP 4919983 B2 JP4919983 B2 JP 4919983B2 JP 2008040128 A JP2008040128 A JP 2008040128A JP 2008040128 A JP2008040128 A JP 2008040128A JP 4919983 B2 JP4919983 B2 JP 4919983B2
Authority
JP
Japan
Prior art keywords
write command
memory area
write
log data
data
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2008040128A
Other languages
English (en)
Other versions
JP2009199665A (ja
Inventor
秀二 山田
俊男 柿原
勝広 井本
章彦 毛利
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hitachi Solutions Ltd
Original Assignee
Hitachi Solutions Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hitachi Solutions Ltd filed Critical Hitachi Solutions Ltd
Priority to JP2008040128A priority Critical patent/JP4919983B2/ja
Priority to US12/380,116 priority patent/US8082409B2/en
Publication of JP2009199665A publication Critical patent/JP2009199665A/ja
Application granted granted Critical
Publication of JP4919983B2 publication Critical patent/JP4919983B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1415Saving, restoring, recovering or retrying at system level
    • G06F11/1441Resetting or repowering
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1471Saving, restoring, recovering or retrying involving logging of persistent data for recovery
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7201Logical to physical mapping or translation of blocks or pages
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7206Reconfiguration of flash memory system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7207Details relating to flash memory management management of metadata or control data

Description

本発明はデータ記憶装置及びデータ記憶装置におけるデータ管理方法に関し、特に、ユーザ・データを保存するためのディスクと不揮発性半導体メモリとを有するデータ記憶装置における、テーブルの更新を示すログ・データの保存に関する。
データ記憶装置として、光ディスク、光磁気ディスク、あるいはフレキシブル磁気ディスクなどの様々な態様のメディアを使用する装置が知られているが、その中で、ハードディスク・ドライブ(HDD)は、コンピュータの記憶装置として広く普及し、現在のコンピュータ・システムにおいて欠かすことができない記憶装置の一つとなっている。さらに、コンピュータにとどまらず、動画像記録再生装置、カーナビゲーション・システム、あるいは携帯電話など、HDDの用途はその優れた特性により益々拡大している。
HDDは、磁気ディスクへのアクセス(リードもしくはライト)のために、磁気ディスクを回転し、ヘッド・スライダを目的のデータ・セクタに移動する。このため、HDDの消費電力は半導体メモリに比較して大きく、また、そのアクセス・スピードも半導体メモリよりも遅い。特に、スピンドル・モータのスピン・アップ時間は他の動作に比較して多くの時間を必要とする。このため、HDDの起動時や、省電力低減のためのパワー・セーブ・モードから復帰するときに多くの処理時間を必要とする。
このため、HDDに不揮発性半導体メモリの一つであるフラッシュ・メモリを実装することが提案されている(例えば、特許文献1を参照)。フラッシュ・メモリは半導体メモリであるため、磁気ディスクよりもアクセス・スピードが速く、消費電力が小さい。また、フラッシュ・メモリは不揮発性メモリであるため、電源オフ状態であってもデータを保存しておくことができる。
HDDに実装するフラッシュ・メモリの容量は、コストなどの点から制限される。従って、HDDは、特定のユーザ・データのみをフラッシュ・メモリに保存し、その他ユーザ・データを磁気ディスクに保存する。例えば、ホストの起動に必要なデータや、ホストが頻繁にアクセスするデータをフラッシュ・メモリに保存しておくことによって、ホストの起動時間の短縮、HDDのパフォーマンスの向上、あるいはスピンドル・モータの回転数を小さくするパワー・セーブ・モードによる消費電力の低減を図ることができる。
ホストは、HDDに対して、磁気ディスクのアドレスであるLBA(Logical Block Address)を指定してデータの書き込みあるいは読み出しを指示する。従って、HDDは、フラッシュ・メモリに保存しているユーザ・データのLBAと、フラッシュ・メモリ内のアドレスとを対応付けることが必要となる。具体的には、HDDは、上記二つのアドレスを対応づけるテーブルを作成し、そのテーブルを参照することでフラッシュ・メモリへのアクセスを行う。以下において、このテーブルをセグメント・テーブルと呼ぶ。
特開2006−114206号公報 特開2005−134125号公報
セグメント・テーブルは電源がオフされ、再度オンされた後も使用するものであるため、HDDは、不揮発性メモリである磁気ディスクもしくはフラッシュ・メモリにセグメント・テーブルを保存する。典型的には、セグメント・テーブルはフラッシュ・メモリに保存される。しかし、フラッシュ・メモリはデータの書き換えのために消去と書き込みのプロセスが必要であり、頻繁にセグメント・テーブルを更新することは、パフォーマンスの低下を招く。磁気ディスクにセグメント・テーブルを保存する場合にも、磁気ディスクへのアクセスのための処理時間が必要であり、頻繁にセグメント・テーブルを更新することは、パフォーマンスの低下を招く。
そこで、セグメント・テーブルをRAMにロードし、RAM上のセグメント・テーブルを更新する。さらに、セグメント・テーブルの更新内容を示すログ・データを生成し、そのログ・データを磁気ディスクあるいはフラッシュ・メモリに保存することが考えられる。なお、記録メディアへのデータ書き込みにおいてログ・データを使用することは、例えば特許文献2に開示されている。ログ・データを保存しておくことによって、電源遮断によりRAM上の最新のセグメント・テーブルが消えてしまった場合でも、フラッシュ・メモリ上のセグメント・テーブルとログ・データとから、最新のセグメント・テーブルを復元することができる。
パフォーマンスの観点からは、セグメント・テーブルの保存回数を少なくすることが好ましい。しかし、そのことは、保存するログ・データのエントリ数が大きくなることを意味する。ログ・データによるデータ回復のための典型的な手法は、フラッシュ・メモリへの書き出しを伴うライト・コマンド毎にログ・データを保存する。このため、フラッシュ・メモリへの書き出し回数の増加に伴い、保存されるログ・データのエントリ数も増加する。一方、ログ・データを保存するための領域は限られている。従って、セグメント・テーブルの更新を示すログ・データのエントリ数を少なくする手法が要求される。
あるいは、ログ・データを保存する処理時間を考慮することも重要である。特に、ユーザ・データの記憶に適切なNAND型フラッシュ・メモリは、ページ単位でのデータ書き込みを行う。このため、一つのライト・コマンドに対応するログ・データをNAND型フラッシュ・メモリに保存する処理は、1データ・セクタをする処理と同等の処理時間を必要とする。従って、セグメント・テーブルの更新を示すログ・データの保存処理の時間を短縮する手法が要求される。
本発明の一態様に係るデータ記憶装置は、ユーザ・データを記憶するディスク・メモリ領域と、ユーザ・データを記憶する不揮発性半導体メモリ領域と、前記不揮発性半導体メモリ領域に記憶されているユーザ・データの前記ディスク・メモリ領域のアドレスが登録されているセグメント・テーブル、を記憶する揮発性メモリ領域と、前記セグメント・テーブルが保存される第1不揮発性メモリ領域と、前記揮発性メモリ領域のセグメント・テーブルの更新履歴を表すログ・データが保存される第2不揮発性メモリ領域と、コントローラとを有する。前記コントローラは、前記ディスク・メモリ領域の連続するアドレス領域への複数ライト・コマンドに対応するログ・データを、前記複数ライト・コマンドのそれぞれに対応するログ・データから一部を省略して生成し、生成した前記複数ライト・コマンドに対応するログ・データを前記第2不揮発性メモリ領域に保存する。これにより、ログ・データの保存を効率的に行うことができる。
好ましくは、第1不揮発性メモリ領域と第2不揮発性メモリ領域と、不揮発性半導体メモリ領域とが、同一の不揮発性半導体メモリ内にある。これにより、部品点数を低減する。
前記複数ライト・コマンドが3以上のライト・コマンドである場合、前記コントローラは、最初のライト・コマンドと最後のライト・コマンドとの間にある全てのライト・コマンドのログ・データを省略する。これにより、ログ・データの保存をより効率的に行うことができる。
好ましい例において、一つのライト・コマンドに対応する前記ログ・データは、前記揮発性メモリ領域のセグメント・テーブルの更新前のプロローグと更新後のエピローグとを含み、前記コントローラは、最初のライト・コマンドのプロローグと前記第2不揮発性メモリ領域に保存し、最後のライト・コマンドのエピローグを前記第2不揮発性メモリ領域に保存し、前記最初のライト・コマンドのプロローグと最後のライト・コマンドのエピローグとの間のログ・データを省略する。これにより、ログ・データの保存をより効率的に行うことができる。さらに、一つのライト・コマンドに対応するプロローグとエピローグとは、それぞれ、前記一つのライト・コマンドが指定する開始アドレスとデータ長とを含み、前記最後のライト・コマンドのエピローグは、前記最初のライト・コマンドのプロローグが含む開始アドレスを含む。これにより、エピローグのみにより正確な情報を示すことができる。
好ましい例において、前記コントローラは、ライト・コマンドをキャッシュされた順序に従って処理し、現在のライト・コマンドの指定アドレスが、その前のライト・コマンドの指定アドレスと連続している場合に、前記複数ライト・コマンドに前記現在のライト・コマンドを追加する。これにより、随時複数ライト・コマンドのグループを構成することができる。好ましくは、前記コントローラは、前記複数ライト・コマンドを構成するライト・コマンドの数が閾値に達している場合、前記複数ライト・コマンドに対応する現在のログ・データを前記第2不揮発性メモリ領域に保存する。あるいは、前記コントローラは、ライト・コマンドの指定したデータ長が閾値に達している場合、そのライト・コマンドに対応するログ・データを個別に前記第2不揮発性メモリ領域に保存する。もしくは、前記コントローラは、前記複数ライト・コマンドを構成するライト・コマンドが指定するアドレス領域が閾値に達している場合、前記複数ライト・コマンドに対応する現在のログ・データを前記第2不揮発性メモリ領域に保存する。これらにより、ログ・データが保存されるまでの時間が長くなりすぎることを防ぐ。
好ましくは、電源遮断により前記複数ライト・コマンドに対応するログ・データの保存処理が中断した場合、前記電源遮断後に起動された前記コントローラは、前記不揮発性半導体メモリ領域において、前記複数ライト・コマンドの最初のライト・コマンドに対応するアドレスから先の不使用領域を消去する。これにより、データの書き込みのために消去を必要とする不揮発性メモリに適切に対応することができる。
好ましい例において前記コントローラは、さらに、指定アドレスが不連続の複数ライト・コマンドの最初のライト・コマンド以外のライト・コマンドに対応するログ・データを、同時に前記第2不揮発性メモリ領域に保存する。これにより、ログ・データの保存をより効率的に行うことができる。さらに好ましい例において、一つのライト・コマンドに対応する前記ログ・データは、前記揮発性メモリ領域のセグメント・テーブルの更新前のプロローグと更新後のエピローグとを含み、前記コントローラは、最初のライト・コマンド以外のライト・コマンドに対応するプロローグを省略する。これにより、ログ・データの保存をより効率的に行うことができる。前記指定アドレスが不連続の複数ライト・コマンドに対応するログ・データは、最初のライト・コマンドのプロローグ及びエピローグと、それ以外のライト・コマンドのエピローグとから構成され、前記コントローラは、前記最初のライト・コマンドのプロローグを保存した後、その他のログ・データを同時に保存することが好ましい。これにより、ログ・データを全て保存する前に電源遮断が起きた場合に、適切に対応することができる。
本発明の他の態様は、ユーザ・データを記憶するディスク・メモリ領域と、ユーザ・データを記憶する不揮発性半導体メモリ領域と、を有するデータ記憶装置における、データ管理方法である。この方法は、前記不揮発性半導体メモリ領域に記憶されているユーザ・データの前記ディスク・メモリ領域のアドレスが登録されているセグメント・テーブルを、揮発性メモリ領域に格納する。前記セグメント・テーブルを第1不揮発性メモリ領域に保存する。前記揮発性メモリ領域のセグメント・テーブルの更新履歴を表すログ・データを、第2不揮発性メモリ領域に保存する。前記ディスク・メモリ領域の連続するアドレス領域への複数ライト・コマンドに対応するログ・データを、前記複数ライト・コマンドのそれぞれに対応するログ・データから一部を省略して生成する。生成した前記複数ライト・コマンドに対応するログ・データを前記第2不揮発性メモリ領域に保存する。これにより、ログ・データの保存を効率的に行うことができる。
本発明によれば、セグメント・テーブルの更新を示すログ・データを効率的に保存することができる。
以下に、本発明を適用可能な実施の形態を説明する。説明の明確化のため、以下の記載及び図面は、適宜、省略及び簡略化がなされている。又、各図面において、同一要素には同一の符号が付されており、必要に応じて重複説明は省略されている。以下においては、ディスク・ドライブ装置の一例であるハードディスク・ドライブ(HDD)について説明する。
本形態のHDDは、ユーザ・データを記憶するための不揮発性メモリとして、磁気ディスクの他にフラッシュ・メモリを有する。フラッシュ・メモリは、不揮発性半導体メモリである。HDDは、フラッシュ・メモリに保存するユーザ・データを管理するため、フラッシュ・メモリ内が記憶しているユーザ・データの磁気ディスクでのアドレス(LBA)を登録するテーブルを作成する。このテーブルを、以下においてセグメント・テーブルと呼ぶ。
本形態のHDDは、セグメント・テーブルをRAM上で更新すると共に、所定のタイミングでフラッシュ・メモリに保存する。本形態のHDDは、さらに、RAM上の更新を示すログ・データを生成し、それをフラッシュ・メモリに保存する。以下において、このログ・データをジャーナルと呼ぶ。HDDは、予期しない電源遮断などが起きたとき、フラッシュ・メモリ上のセグメント・テーブルとジャーナルとから、最新のセグメント・テーブルを回復する。
本形態のHDDは、ログ・データであるジャーナルの保存方法に特徴を有している。本形態のHDDは、条件に応じて、一つのライト・コマンドに対応するジャーナルを保存する、あるいは、所定の複数ライト・コマンドからなるグループに対応するジャーナルを保存する。複数ライト・コマンドのグループに対応するジャーナルの保存において、HDDは、グループの各ライト・コマンドそれぞれに対応するジャーナルの一部を省略する。従って、グループに対応するジャーナルの数は、グループの各ライト・コマンドに対応するジャーナルの合計数よりも少ない。これにより、セグメント・テーブルの更新内容を示すジャーナルのエントリ数を低減することができる。また、ジャーナルをテーブルに登録するための処理時間を短縮することができる。
本実施形態においては、複数のライト・コマンドによるグループを構成する方法として、2つの好適な例を説明する。一つは、磁気ディスクの連続領域への複数ライト・コマンドでグループを構成する。HDDは、磁気ディスクの連続領域を指定アドレスとする複数のライト・コマンドを一つのグループとし、そのグループに対応したジャーナルをテーブルに保存する。
他の一つは、それぞれのライト・コマンドが磁気ディスクの離散した非連続の領域を指定する複数のライト・コマンドにより、一つのグループを構成する。これら異なる二つのグループに対応して保存されるジャーナルは異なる。このように、連続領域へのライト・コマンドのグループと、非連続領域へのライト・コマンドのグループとによって、異なるジャーナルを保存することで、セグメント・テーブル回復のための必要な情報を保存すると共に、より効率的な処理を行うことができる。
まず、本形態のHDDの全体構成を、図1のブロック図を参照して説明する。HDD1は、エンクロージャ10の外側に固定された回路基板20を備えている。回路基板20上には、リード・ライト・チャネル(RWチャネル)21、モータ・ドライバ・ユニット22、ハードディスク・コントローラ(HDC)とMPUの集積回路(HDC/MPU)23及び揮発性半導体メモリのDRAM24、不揮発性半導体メモリであるフラッシュ・メモリ25などの各回路を有している。エンクロージャ10内において、スピンドル・モータ(SPM)14は所定の角速度で磁気ディスク11を回転する。磁気ディスク11は、データを記憶するディスクであり、不揮発性のメモリである。
各ヘッド・スライダ12は、磁気ディスク11上を浮上するスライダと、スライダに固定され磁気信号と電気信号との間の変換(データの読み書き)を行うヘッド素子部とを備えている。各ヘッド・スライダ12はアクチュエータ16の先端部に固定されている。アクチュエータ16はボイス・コイル・モータ(VCM)15に連結され、回動軸を中心に回動することによって、ヘッド・スライダ12を回転する磁気ディスク11上においてその半径方向に移動する。モータ・ドライバ・ユニット22は、HDC/MPU23からの制御データに従って、SPM14とVCM15とを駆動する。アーム電子回路(AE:Arm Electronics)13は、HDC/MPU23からの制御データに従って複数のヘッド・スライダ12の中から磁気ディスク11にアクセス(リードもしくはライト)するヘッド・スライダ12を選択し、リード/ライト信号の増幅を行う。
RWチャネル21は、リード処理において、AE13から取得したリード信号からサーボ・データ及びユーザ・データを抽出し、デコード処理を行う。デコード処理されたデータは、HDC/MPU23に供給される。また、RWチャネル21は、ライト処理において、HDC/MPU23から供給されたライト・データをコード変調し、さらに、コード変調されたデータをライト信号に変換してAE13に供給する。
HDC/MPU23において、HDCはロジック回路であり、MPUはDRAM24にロードされたファームウェアに従って動作する。HDD1の起動に伴い、DRAM24には、制御及びデータ処理に必要とされるデータが磁気ディスク11あるいはROM(不図示)からロードされる。HDC/MPU23はコントローラの一例であり、ヘッド・ポジショニング制御、インターフェース制御、ディフェクト管理などのデータ処理に関する必要な処理の他、HDD1の全体制御を実行する。
HDC/MPU23は、ホスト51からのユーザ・データの一部をフラッシュ・メモリ25に保存する。つまり、HDC/MPU23は、ホスト51から受信するライト・コマンドの内、フラッシュ・メモリ25への書き出しを指定されているライト・コマンドに応答して、ユーザ・データをフラッシュ・メモリ25に保存する。フラッシュ・メモリ25上のユーザ・データを磁気ディスク11にも保存するか否かは、設計によって決めることができる。フラッシュ・メモリ25に保存するデータは、磁気ディスク11のLBAで特定することができる。HDC/MPU23は、予め設定されているLBAへのライト・コマンドを受信すると、そのユーザ・データをフラッシュ・メモリ25に保存する。HDC/MPU23は、フラッシュ・メモリ25に保存するユーザ・データのLBAを自ら設定することができ、また、ホスト51から指定されたLBAのユーザ・データをフラッシュ・メモリ25に保存する。
図2は、フラッシュ・メモリ25にユーザ・データを保存するための処理に関連する論理構成要素を模式的に示すブロック図である。DRAM24上のPIN/UNPINテーブル242は、フラッシュ・メモリ25に保存するデータの磁気アドレス領域を示す。PIN領域及びUNPIN領域は、LBAで示される磁気ディスク・アドレスの一部の領域である。PIN領域は、ホスト51がフラッシュ・メモリ25に保存するアドレス領域として指定する。一方、UNPIN領域は、HDC/MPU23自身がフラッシュ・メモリ25に保存するアドレス領域として選択するものである。
HDC/MPU23は、フラッシュ・メモリ25に保存されているPIN/UNPINテーブル254をDRAM24にロードする。HDC/MPU23は、ライト処理においては、DRAM24上のPIN/UNPINテーブル242を参照して処理を行う。また、HDC/MPU23はDRAM24上のPIN/UNPINテーブル242を変更した場合、それをフラッシュ・メモリ25上のPIN/UNPINテーブル254に反映する。
ホスト51から転送された所定のユーザ・データU_DATAは、DRAM24内のセクタ・バッファ241に格納された後、フラッシュ・メモリ25に保存される。フラッシュ・メモリ25内に、ユーザ・データ領域251が確保されており、そこにユーザ・データが保存される。上述のように、フラッシュ・メモリ25に保存されるデータは、PINデータとUNPINデータがあり、それぞれ、ユーザ・データ領域251内のPIN領域255とUNPIN領域256とに保存される。
HDC/MPU23は、フラッシュ・メモリ25上の保存セグメント・テーブル253をDRAM24にロードする。DRAM24上のセグメント・テーブルである一時的セグメント・テーブル243は、ユーザ・データのリード及びライト処理においてHDC/MPU23に参照される。セグメント・テーブル243、253は、フラッシュ・メモリ25に保存されているユーザ・データのアドレスを特定する。具体的には、セグメント・テーブル243、253は、フラッシュ・メモリ25上のユーザ・データのフラッシュ・メモリ・アドレスと磁気ディスク・アドレスとを対応づける。ホスト51は、磁気ディスク11上のアドレスであるLBAを指定して、データの書き込みを指示する。セグメント・テーブル243、253は、そのLBAとフラッシュ・メモリ25上のアドレスとを対応付けて格納している。
図3(a)は、セグメント・テーブル243、253内の一レコードのフォーマットを模式的に示している。フラッシュ・メモリ25のページと、フラッシュ・メモリ25に保存されているユーザ・データの開始LBAと、データ・セクタ数で表されるデータ長LEN、そしてPIN/UNPINの区別を有している。
HDC/MPU23は、フラッシュ・メモリ25へのアクセス(ライト)に応じて、一時的セグメント・テーブル243を更新する。HDC/MPU23は、その更新内容をすぐにフラッシュ・メモリ25上の保存セグメント・データ・テーブル253に反映せずに、その更新内容を示すログ・データであるジャーナルを生成する。HDC/MPU23はSRAM231を有しており、そのSRAM231に生成したジャーナルを格納する。生成されたジャーナルは、フラッシュ・メモリ25上の領域252に保存される。保存する前のジャーナルの格納にSRAM231を使用することによって、DRAMよりも処理速度を速めることができる。また、SRAM231からフラッシュ・メモリ25への保存も、DRAMよりも高速に行うことができる。
図3(b)は、ジャーナルのフォーマットを模式的に示している。ジャーナルは、そのタイプを示すデータ、開始LBA、データ長LEN、そしてPIN/UNPINのサイズを有している。LBAそしてLENは、セグメント・テーブル243、253のレコード内のデータと同様である。PIN/UNPINのサイズは、ユーザ・データ領域251における、PIN領域255あるいはUNPIN領域256内のサイズを示している。セグメント・テーブルは、使用を開始するページを記憶しており、PIN領域255あるいはUNPIN領域256は、ユーザ・データを、それぞれの使用開始ページから順次格納していくため、PIN/UNPINのサイズを特定することでPIN領域255あるいはUNPIN領域256内のデータ位置を特定することができる。複数のタイプのジャーナルが存在し、本明細書においては、プロローグ・ジャーナルとエピローグ・ジャーナルについて説明する。HDC/MPU23は、プロローグ・ジャーナル232を生成した後に一時的セグメント・テーブル243を更新し、その後エピローグ・ジャーナル233を生成する。これによって、一時的セグメント・テーブル243を更新している間に電源遮断などがあった場合にも、正確にセグメント・テーブルを回復することができる。
続いて、図2を参照して、フラッシュ・メモリ25へのユーザ・データの保存及びそれに伴う一時的セグメント・テーブル243の更新及びジャーナルの保存の処理例を説明する。以下の例において、HDC/MPU23は、一つのライト・コマンドに対応するジャーナルを保存する。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が、上記のいずれかの領域にあるとする。
HDC/MPU23は、プロローグ・ジャーナル232を生成し、それをフラッシュ・メモリ25内のジャーナル領域252に保存する[4]。次に、HDC/MPU23は、セクタ・バッファ241内のユーザ・データU_DATAを、フラッシュ・メモリ25内のユーザ・データ領域251に保存する[5]。次に、HDC/MPU23は、一時的セグメント・テーブル243を更新する[6]。続いて、HDC/MPU23は、エピローグ・ジャーナル233を生成し、それをフラッシュ・メモリ25内のジャーナル領域252に保存する[7]。
次に、突然の電源遮断が起きた後、ジャーナルを使用してセグメント・テーブルを回復処理の一例を、図4(a)、(b)を参照して説明する。図4(a)において、左から右に向く矢印は、時間の経過を示している。なお、以下の各処理は、HDC/MPU23が実行する。最初の処理は、一時的セグメント・テーブル243に格納されているレコード#1とレコード#2を、保存セグメント・テーブル253に保存する。次の処理は、一時的セグメント・テーブル243にレコード#3を追加し、さらに、それを示すジャーナルをジャーナル領域252保存する。次の処理は、一時的セグメント・テーブル243からレコード#2を削除し、さらに、それを示すジャーナルをジャーナル領域252保存する。この段階において、電源遮断が発生する。
その後、電源が回復すると、図4(b)に示す回復処理が開始する。図4(b)において、最初の処理は、保存セグメント・テーブル内のレコード#1とレコード#2とをDRAM24にロードして、一時的セグメント・テーブル243を生成する。次の処理は、レコード#3の追加を示すジャーナルに従って、一時的セグメント・テーブル243にレコード#3を追加する。最後の処理は、レコード#2の削除を示すジャーナルに従って、一時的セグメント・テーブル243からレコード#2を削除する。以上の処理で、一時的セグメント・テーブル243が回復される。必要であれば、このタイミングで、一時的セグメント・テーブル243をセーブする。HDC/MPU23は、一時的セグメント・テーブル243をフラッシュ・メモリ25にセーブして、保存セグメント・テーブル253を更新すると共に、ジャーナル領域252をクリアする。
このように、ジャーナルを保存することによって、セグメント・テーブルを毎回保存するよりも処理時間を短縮することができると共に、予期しない電源遮断などが起きた場合でも、セグメント・テーブルを回復することができる。特に、フラッシュ・メモリは、データの書き換えをするためにブロック単位でデータを消去した後、新たなデータを書き込むことを必要とする。つまり、保存セグメント・テーブル253を更新するために、フラッシュ・メモリ25は、それを格納している領域を含むブロックを消去し、さらに、その消去したブロック内に新たな保存セグメント・テーブル253を書き込む。
また、保存セグメント・テーブルは、一般に、高速サーチのために、2分木データ構造、あるいは線形リストやハッシュテーブルを有しており、一部のデータを追加する場合にも全体を書き換えることが要求される。一方、フラッシュ・メモリ25は、新たなジャーナルを、随時、ジャーナル領域252に書き込む。この書き込みのためには、消去処理を必要としない。このため、処理時間が大きく短縮される。
しかし、セグメント・テーブル更新のための処理時間を短縮するためには、更新されたセグメント・テーブルをフラッシュ・メモリ25に保存することなくジャーナルを蓄積していくことが好ましい。しかし、ジャーナルを記憶するフラッシュ・メモリ25のジャーナル領域252は限られている。また、ジャーナル保存のために消去処理が必要ではないとしても、ジャーナルを書き込むための処理時間は必要となる。そこで、本形態のHDC/MPU23は、複数のライト・コマンドを一つのグループとみなし、そのグループに対応するジャーナルをフラッシュ・メモリ25のジャーナル領域252に保存する。これにより、ジャーナル保存処理を効率化し、保存するジャーナルのエントリ数及び保存処理時間を小さくする。
まず、図5のフローチャート及び図6のブロック図を参照して、三つのライト・コマンドに対して、ライト・コマンド毎にジャーナルを保存する例を説明する。HDC/MPU23は、ライト・コマンド[1]を受信すると(S11)、そのプロローグ[1]をジャーナル領域252に保存する(S12)。ライト・コマンド[1]の指定アドレスは、LBA100h〜10Fhである。プロローグ[1]は、開始LBA100hと、データ長10hを示す。次に、HDC/MPU23は、ライト・コマンド共に受信したユーザ・データをフラッシュ・メモリ25に保存し(S13)、さらにDRAM24上の一時的セグメント・テーブル243を更新する(S14)。最後に、HDC/MPU23は、ライト・コマンド[1]に対応するエピローグ[1]をジャーナル領域252に保存する(S15)。エピローグ[1]は、開始LBA100hと、データ長10hを示す。
HDC/MPU23は、ライト・コマンド[2]及びライト・コマンド[3]についても、同様の処理を繰り返す。従って、図6に示すように、ジャーナル領域252に保存されているジャーナルは、プロローグ[1]〜プロローグ[3]、エピローグ[1]〜エピローグ[3]の6エントリである。また、三つのライト・コマンド[1]〜ライト・コマンド[3]に対応するジャーナルを保存するために、HDC/MPU23は6回の書き込みを行う。
次に、三つのライト・コマンド[1]〜ライト・コマンド[3]からなるグループに対応したジャーナルを保存する処理を説明する。上記三つのライト・コマンド[1]〜ライト・コマンド[3]の指定するアドレスは、磁気ディスク11上の連続アドレス領域(LBA100h〜1AFh)である。HDC/MPU23は、このように連続するアドレス領域への複数のライト・コマンドを一つにまとめ、複数ライト・コマンドからなるグループに対応したジャーナルを保存する。
図7は、ライト・コマンド[1]〜ライト・コマンド[3]及びそれに対応して保存されるジャーナルを示している。保存されるジャーナルは、プロローグ[1]とエピローグ[3]の2エントリのみである。図6を参照して説明した、ライト・コマンド毎にジャーナルを保存する場合と比較して、中間のライト・コマンド[2]に対応する全てのジャーナルと、最初のライト・コマンド[1]のエピローグ[1]、そして最後のライト・コマンド[3]のプロローグ[3]が省略されている。連続領域への書き込みを指示する複数のライト・コマンドによるセグメント・テーブル243の更新は、このように、最初のライト・コマンドのプロローグと、最後のライト・コマンドのエピローグとで示すことができる。
複数ライト・コマンドの指定アドレス領域が連続しているために、その領域を一つのライト・コマンドに対応するジャーナルで示すことができる。ここで重要なことは、最後のライト・コマンド[3]に対応するエピローグ[3]が含むデータは、ライト・コマンド[3]のみのために形成されるジャーナルとは異なるということである。図6に示すように、ライト・コマンド[3]単独でジャーナルを保存する場合は、そのライト・コマンド[3]が指定するアドレスをエピローグも有する。
しかし、複数ライト・コマンドをまとめてジャーナルを保存する場合、エピローグは複数ライト・コマンドが指定する全てのアドレス領域を示すことが必要になる。そのため、HDC/MPU23は、最初のライト・コマンド[1]のプロローグ[1]の開始LBAと、最後のライト・コマンド[3]の終了アドレスとから、開始LBAとデータ長とを決定し、その値をエピローグ[3]に格納する。図7の例において、エピローグ[3]の開始LBAは、プロローグ[1]と同様のLBA100hであり、また、データ長は、LBA100hから最後のライト・コマンド[3]の終了アドレス1AFhまでのB0hである。
また、連続領域を指定する複数ライト・コマンドを一単位としてジャーナルを保存することで、保存するジャーナルのエントリ数を低減することができると共に、ジャーナル保存のための処理時間を短縮することができる。上記説明から理解されるように、HDC/MPU23は、三つのライト・コマンドのジャーナルを保存するために、2回の書き込み処理を行うのみである。各ライト・コマンドに対して個別にジャーナルを保存する場合に対して、四回の書き込み処理時間を短縮することができる。
続いて、図8のフローチャートを参照して、上記三つのライト・コマンドを一グループしてジャーナルを保存する処理を説明する。HDD1のライト・キャッシュ機能はイネーブルとなっている。ライト・キャッシュ機能は、ライト・データを不揮発性メモリに保存する前に、ライト・データをセクタ・バッファ241に格納すると、ホスト51からのライト・コマンドに対して、完了の通知を行う機能である。ライト・キャッシュ機能がイネーブルされている場合、ライト・データの保存は、ホスト51に対して保障されない。
HDC/MPU23は、キャッシュされているライト・コマンドを取得し(S21)、そのライト・コマンドの指定アドレスを参照して、その前のライト・コマンドのアドレスに連続しているかを判定する(S22)。最初のライト・コマンド[1]は、連続領域への書き込みではないため(S22におけるN)、HDC/MPU23は、プロローグ[1]をジャーナル領域252に書き込む(S23)。HDC/MPU23は、さらに、ライト・コマンド[1]のユーザ・データをフラッシュ・メモリ25に保存し(S24)、さらにDRAM24上の一時的セグメント・テーブル243を更新する(S25)。
次に、HDC/MPU23は、次のライト・コマンドがキャッシュされているかを確認し(S26)、次のライト・コマンドが存在する場合(S26におけるY)、そのライト・コマンドを取得する(S21)。本例では、HDC/MPU23は、ライト・コマンド[2]を取得する。HDC/MPU23は、ライト・コマンド[2]の指定アドレスを参照し、そのアドレスが、その前のライト・コマンド[1]の指定アドレスに連続しているかを判定する(S22)。本例において、これらの指定アドレスは連続領域であり(S22におけるY)、HDC/MPU23はプロローグの書き込み(S23)を省略して、ライト・コマンド[2]のユーザ・データをフラッシュ・メモリ25に保存し(S24)、さらにDRAM24上の一時的セグメント・テーブル243を更新する(S25)。
次に、HDC/MPU23は、次のライト・コマンドがキャッシュされているかを確認し(S26)、次のライト・コマンドが存在する場合(S26におけるN)、そのライト・コマンドを取得する(S21)。本例では、HDC/MPU23は、ライト・コマンド[3]を取得する。HDC/MPU23は、ライト・コマンド[3]の指定アドレスを参照し、そのアドレスが、その前のライト・コマンド[2]の指定アドレスに連続しているかを判定する(S22)。本例において、これらの指定アドレスは連続領域である(S22におけるY)。
従って、HDC/MPU23はプロローグの書き込み(S23)を省略して、ライト・コマンド[3]のユーザ・データをフラッシュ・メモリ25に保存し(S24)、さらにDRAM24上の一時的セグメント・テーブル243を更新する(S25)。キャッシュされているライト・コマンドがない場合(S26におけるN)、HDC/MPU23は、エピローグを保存する(S27)。本例においてはライト・コマンド[3]が最後のライト・コマンドであり、HDC/MPU23は、図7に示したエピローグ[3]をジャーナル領域252に書き込む。
本方法に従えば、HDC/MPU23は、2つのライト・コマンドが連続アドレス領域を指定する場合、最初のライト・コマンドに対応するエピローグと、最後のライト・アドレスにおけるプロローグを省略する。また、上述のように、3以上の連続するライト・コマンドが、一つの連続アドレス領域を指定する場合、最初のライト・コマンドに対応するエピローグと、最後のライト・アドレスにおけるプロローグ、そして、それらの中間のライト・コマンドに対応する全てのジャーナルの保存を省略する。
HDC/MPU23は、連続領域へ書き込むライト・コマンドの全てを一つのグループに含めることができる。つまり、HDC/MPU23は、取得したライト・コマンドが示すアドレス領域がその前のライト・コマンドのアドレス領域に連続している場合、そのライト・コマンドを無条件でグループに含める。しかし、グループに含めることはジャーナルの保存を遅らせることにあり、その時間が長すぎることは好ましくない場合もある。
そこで、好ましい例において、HDC/MPU23は、グループを構成するライト・コマンド数が予め設定されている閾値に達すると、そのグループに対応するジャーナルをフラッシュ・メモリ25に保存する。あるいは、HDC/MPU23は、グループを構成するライト・コマンドが指定するアドレス領域が予め設定されている閾値に達すると、そのグループに対応するジャーナルをフラッシュ・メモリ25に保存する。
HDC/MPU23は、各ライト・コマンドの指定アドレス領域に応じて、そのライト・コマンドをグループに含めるか否かを決定することができる。具体的には、ライト・コマンドの指定したデータ長が予め設定されている閾値に達している場合、HDC/MPU23は、そのライト・コマンド単独のジャーナル、つまり、そのライト・コマンドに対応するプロローグとエピローグとをフラッシュ・メモリ25に保存する。
グループに対応するプロローグとエピローグとがフラッシュ・メモリ25に保存されている場合、予期しない電源遮断後において、HDC/MPU23は、上記プロローグとエピローグとを使用してセグメント・テーブルを回復することができる。しかし、プロローグを保存した後、エピローグを保存する前に電源遮断が起きることがありうる。エピローグが保存されていない場合、HDC/MPU23は、フラッシュ・メモリ25のユーザ・データ領域251に保存されているグループのライト・データ長を知ることができない。一方、HDC/MPU23は、フラッシュ・メモリ25にデータを上書きすることはできず、既存データを消去することが必要である。
そこで、HDC/MPU23は、グループに対応するエピローグが保存される前に電源遮断が起きた場合、ユーザ・データ領域251内において上記グループに対応するユーザ・データが保存されている可能性がある領域を消去する。具体的には、HDC/MPU23は、上記グループのプロローグが示すユーザ・データ領域251内アドレスから先の不使用領域を消去する。不使用領域は、保存セグメント・テーブル253が示す他のユーザ・データが保存されている領域までの領域である。ユーザ・データ領域251がリングバッファとして機能している場合、他のユーザ・データが保存されている領域以外の領域が消去される。これにより、その後のユーザ・データのユーザ・データ領域251への保存処理を円滑に進めることができる。
次に、ライト・コマンドのグループ化の他の好ましい方法を説明する。この方法は、指定アドレス領域が不連続(離散)の複数ライト・コマンドを一つのグループとし、さらに、そのグループのジャーナルの一部を同時にフラッシュ・メモリ25に保存する。HDC/MPU23は、ジャーナルの一部を省略して保存する。図9を参照して具体的に説明する。
ライト・キャッシュ機能はイネーブルされている。/MPU23は、キャッシュされているライト・コマンド[1]の処理において、SRAM231にプロローグ[1]とエピローグ[1]とを格納する。さらに、HDC/MPU23は、プロローグ[1]をフラッシュ・メモリ25のジャーナル領域252に保存する。その後、HDC/MPU23は、キャッシュされているライト・コマンド[2]〜ライト・コマンド[N]を順次処理し、それぞれのライト・コマンドに対応する、プロローグ[2]〜プロローグ[N]、エピローグ[2]〜エピローグ[N]をSRAM231に格納する。
キャッシュされているライト・コマンドが終了する、あるいは、SRAM231のジャーナル格納数が閾値に達すると、HDC/MPU23は、SRMA213に格納されているジャーナルを同時にフラッシュ・メモリ25のジャーナル領域252に保存する。このとき、HDC/MPU23は、各ライト・コマンドのプロローグ[2]〜プロローグ[N]を省略し、エピローグ[2]〜エピローグ[N]をジャーナル領域252に保存する。保存セグメント・テーブル253の更新のためにはエピローグのみで十分であり、HDC/MPU23は、保存するジャーナルを省略することでエントリ数を低減する。また、複数ライト・コマンドに対応するジャーナルを同時に保存することで、そのための処理時間を短縮することができる。最初のプロローグのみを保存して、その後のジャーナルを保存する前に電源遮断が起きた場合の処理は、上記連続領域へのライト・コマンドによりグループを構成する場合と同様である。
以上、本発明について好ましい態様を使用して説明したが、本発明は上述した実施の形態のみに限定されるものではなく、本発明の要旨を逸脱しない範囲において種々の変更が可能であることは勿論である。例えば、上述の実施の形態においては、HDDを例にとって説明したが、光ディスクや光磁気ディスクなど他のディスクを使用するデータ記憶装置に適用してもよい。
上述のように、セグメント・テーブルを不揮発性半導体メモリに保存することが好ましいが、不揮発性メモリである磁気ディスクに保存してもよい。不揮発性半導体メモリとしては、フラッシュ・メモリ以外のメモリを使用してもよい。また、複数のICを使用して不揮発性半導体メモリの領域を形成してもよい。メモリ領域は、ICやディスクなどの素子の数に制限されない。セグメント・テーブルやジャーナルなどのデータ・フォーマットや1ライト・コマンドに対応するログ・データの数などは、設計により変更することができる。
本実施の形態にかかるハードディスク・ドライブの全体構成を模式的に示すブロック図である。 本実施の形態において、再生処理を行う構成要素を模式的に示すブロック図である。 本実施の形態にかかるセグメント・テーブルのレコード及びジャーナルのフォーマットを模式的に示す図である。 本実施の形態にかかるジャーナルを使用してセグメント・テーブルを回復処理の一例を模式的に示す図である。 本実施の形態において、ライト・コマンド毎にジャーナルを保存する例を説明するフローチャートである。 本実施の形態において、ライト・コマンド毎にジャーナルを保存する例を説明する図である。 本実施の形態において、連続領域を指定する複数ライト・コマンドで構成するグループに対応したジャーナルを保存する例を説明する図である。 本実施の形態において、連続領域を指定する複数ライト・コマンドで構成するグループに対応したジャーナルを保存する例を説明するフローチャートである。 本実施の形態において、離散領域を指定する複数ライト・コマンドで構成するグループに対応したジャーナルの保存を説明する図である。
符号の説明
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領域

Claims (16)

  1. ユーザ・データを記憶するディスク・メモリ領域と、
    ユーザ・データを記憶する不揮発性半導体メモリ領域と、
    前記不揮発性半導体メモリ領域に記憶されているユーザ・データの前記ディスク・メモリ領域のアドレスが登録されているセグメント・テーブル、を記憶する揮発性メモリ領域と、
    前記セグメント・テーブルが保存される第1不揮発性メモリ領域と、
    前記揮発性メモリ領域のセグメント・テーブルの更新履歴を表すログ・データが保存される第2不揮発性メモリ領域と、
    前記ディスク・メモリ領域の連続するアドレス領域への複数ライト・コマンドに対応するログ・データを、前記複数ライト・コマンドのそれぞれに対応するログ・データから一部を省略して生成し、生成した前記複数ライト・コマンドに対応するログ・データを前記第2不揮発性メモリ領域に保存する、コントローラと、
    を有するデータ記憶装置。
  2. 第1不揮発性メモリ領域と第2不揮発性メモリ領域と、不揮発性半導体メモリ領域とが、同一の不揮発性半導体メモリ内にある、
    請求項1に記載のデータ記憶装置。
  3. 前記複数ライト・コマンドが3以上のライト・コマンドである場合、前記コントローラは、最初のライト・コマンドと最後のライト・コマンドとの間にある全てのライト・コマンドのログ・データを省略する、
    請求項1に記載のデータ記憶装置。
  4. 一つのライト・コマンドに対応するログ・データは、前記揮発性メモリ領域のセグメント・テーブルの更新前のプロローグと更新後のエピローグとを含み、
    前記コントローラは、最初のライト・コマンドのプロローグと最後のライト・コマンドのエピローグとを前記第2不揮発性メモリ領域に保存し、前記最初のライト・コマンドのプロローグと前記最後のライト・コマンドのエピローグとの間のログ・データを省略する、
    請求項1に記載のデータ記憶装置。
  5. 一つのライト・コマンドに対応するプロローグとエピローグとは、それぞれ、前記一つのライト・コマンドが指定する開始アドレスとデータ長とを含み、
    前記最後のライト・コマンドのエピローグは、前記最初のライト・コマンドのプロローグが含む開始アドレスを含む、
    請求項4に記載のデータ記憶装置。
  6. 前記コントローラは、ライト・コマンドをキャッシュされた順序に従って処理し、現在のライト・コマンドの指定アドレスが、その前のライト・コマンドの指定アドレスと連続している場合に、前記複数ライト・コマンドに前記現在のライト・コマンドを追加する、
    請求項1に記載のデータ記憶装置。
  7. 前記コントローラは、前記複数ライト・コマンドを構成するライト・コマンドの数が閾値に達している場合、前記複数ライト・コマンドに対応する現在のログ・データを前記第2不揮発性メモリ領域に保存する、
    請求項6に記載のデータ記憶装置。
  8. 前記コントローラは、ライト・コマンドの指定したデータ長が閾値に達している場合、そのライト・コマンドに対応するログ・データを個別に前記第2不揮発性メモリ領域に保存する、
    請求項6に記載のデータ記憶装置。
  9. 前記コントローラは、前記複数ライト・コマンドを構成するライト・コマンドが指定するアドレス領域が閾値に達している場合、前記複数ライト・コマンドに対応する現在のログ・データを前記第2不揮発性メモリ領域に保存する、
    請求項6に記載のデータ記憶装置。
  10. 電源遮断により前記複数ライト・コマンドに対応するログ・データの保存処理が中断した場合、前記電源遮断後に起動された前記コントローラは、前記不揮発性半導体メモリ領域において、前記複数ライト・コマンドの最初のライト・コマンドに対応するアドレスから先の不使用領域を消去する、
    請求項1に記載のデータ記憶装置。
  11. 前記コントローラは、さらに、指定アドレスが不連続の複数ライト・コマンドの最初のライト・コマンド以外のライト・コマンドに対応するログ・データを、同時に前記第2不揮発性メモリ領域に保存する、
    請求項1に記載のデータ記憶装置。
  12. 一つのライト・コマンドに対応する前記ログ・データは、前記揮発性メモリ領域のセグメント・テーブルの更新前のプロローグと更新後のエピローグとを含み、
    前記コントローラは、前記最初のライト・コマンド以外のライト・コマンドに対応するプロローグを省略する、
    請求項11に記載のデータ記憶装置。
  13. 前記指定アドレスが不連続の複数ライト・コマンドに対応するログ・データは、前記最初のライト・コマンドのプロローグ及びエピローグと、それ以外のライト・コマンドのエピローグとから構成され、
    前記コントローラは、前記最初のライト・コマンドのプロローグを保存した後、その他のログ・データを同時に保存する、
    請求項12に記載のデータ記憶装置。
  14. ユーザ・データを記憶するディスク・メモリ領域と、ユーザ・データを記憶する不揮発性半導体メモリ領域と、を有するデータ記憶装置における、データ管理方法であって、
    前記不揮発性半導体メモリ領域に記憶されているユーザ・データの前記ディスク・メモリ領域のアドレスが登録されているセグメント・テーブルを、揮発性メモリ領域に格納し、
    前記セグメント・テーブルを第1不揮発性メモリ領域に保存し、
    前記揮発性メモリ領域のセグメント・テーブルの更新履歴を表すログ・データを、第2不揮発性メモリ領域に保存し、
    前記ディスク・メモリ領域の連続するアドレス領域への複数ライト・コマンドに対応するログ・データを、前記複数ライト・コマンドのそれぞれに対応するログ・データから一部を省略して生成し、
    生成した前記複数ライト・コマンドに対応するログ・データを前記第2不揮発性メモリ領域に保存する、
    方法。
  15. 前記複数ライト・コマンドが3以上のライト・コマンドである場合、前記コントローラは、最初のライト・コマンドと最後のライト・コマンドとの間にある全てのライト・コマンドのログ・データを省略する、
    請求項14に記載の方法。
  16. さらに、指定アドレスが不連続の複数ライト・コマンドの最初のライト・コマンド以外のライト・コマンドに対応するログ・データを、同時に前記第2不揮発性メモリ領域に保存する、
    請求項14に記載の方法。
JP2008040128A 2008-02-21 2008-02-21 データ記憶装置及びデータ記憶装置におけるデータ管理方法 Expired - Fee Related JP4919983B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2008040128A JP4919983B2 (ja) 2008-02-21 2008-02-21 データ記憶装置及びデータ記憶装置におけるデータ管理方法
US12/380,116 US8082409B2 (en) 2008-02-21 2009-02-23 Data storage device and data management method in data storage device

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2008040128A JP4919983B2 (ja) 2008-02-21 2008-02-21 データ記憶装置及びデータ記憶装置におけるデータ管理方法

Publications (2)

Publication Number Publication Date
JP2009199665A JP2009199665A (ja) 2009-09-03
JP4919983B2 true JP4919983B2 (ja) 2012-04-18

Family

ID=40999431

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008040128A Expired - Fee Related JP4919983B2 (ja) 2008-02-21 2008-02-21 データ記憶装置及びデータ記憶装置におけるデータ管理方法

Country Status (2)

Country Link
US (1) US8082409B2 (ja)
JP (1) JP4919983B2 (ja)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9268682B2 (en) * 2012-10-05 2016-02-23 Skyera, Llc Methods, devices and systems for physical-to-logical mapping in solid state drives
US8954694B2 (en) * 2012-11-15 2015-02-10 Western Digital Technologies, Inc. Methods, data storage devices and systems for fragmented firmware table rebuild in a solid state drive
WO2015081470A1 (zh) * 2013-12-02 2015-06-11 华为技术有限公司 数据处理设备和数据处理的方法

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2913591B2 (ja) * 1990-09-26 1999-06-28 株式会社日立製作所 オンライン・ジャーナル取得方法
US5576303A (en) 1993-03-16 1996-11-19 Kabushiki Kaisha Hayashibara Seibutsu Kagaku Kenkyujo Energy-supplementing saccharide source and its uses
JP2001101075A (ja) * 1999-09-28 2001-04-13 Hitachi Ltd ディスク記憶装置
US6925476B1 (en) * 2000-08-17 2005-08-02 Fusionone, Inc. Updating application data including adding first change log to aggreagate change log comprising summary of changes
JP3472256B2 (ja) * 2000-10-17 2003-12-02 株式会社東芝 データ処理装置およびデータ処理方法
JP4186602B2 (ja) 2002-12-04 2008-11-26 株式会社日立製作所 ジャーナルログを利用した更新データ書込方法
JP2005115857A (ja) * 2003-10-10 2005-04-28 Sony Corp ファイル記憶装置
JP2005134125A (ja) 2003-10-28 2005-05-26 Mitsubishi Materials Corp タイヤ圧力測定手段及び該手段を利用したrfidシステム
US7472222B2 (en) 2004-10-12 2008-12-30 Hitachi Global Storage Technologies Netherlands B.V. HDD having both DRAM and flash memory
JP2007193448A (ja) * 2006-01-17 2007-08-02 Toshiba Corp 情報記録装置及びその制御方法

Also Published As

Publication number Publication date
JP2009199665A (ja) 2009-09-03
US20090216943A1 (en) 2009-08-27
US8082409B2 (en) 2011-12-20

Similar Documents

Publication Publication Date Title
JP2009020986A (ja) ディスク・ドライブ装置及びディスク・ドライブ装置において不揮発性半導体メモリ領域上のデータを管理するテーブルを保存する方法
US8667248B1 (en) Data storage device using metadata and mapping table to identify valid user data on non-volatile media
US7472219B2 (en) Data-storage apparatus, data-storage method and recording/reproducing system
US8429343B1 (en) Hybrid drive employing non-volatile semiconductor memory to facilitate refreshing disk
JP4675881B2 (ja) 磁気ディスク装置およびその制御方法
US8656097B2 (en) Selection of data storage locations based on one or more conditions
JP4282733B1 (ja) ディスク記憶装置及びデータ書き込み方法
JP5339817B2 (ja) 異なるサイズのデータ・セクタによるインターフェースをサポートするディスク・ドライブ装置及びそのデータ・ライト方法
JP2007200537A (ja) ハイブリッドディスクドライブおよびハイブリッドディスクドライブのデータ制御方法
US20150113208A1 (en) Storage apparatus, cache controller, and method for writing data to nonvolatile storage medium
US20120162809A1 (en) Magnetic disk drive and method of accessing a disk in the drive
JP4919983B2 (ja) データ記憶装置及びデータ記憶装置におけるデータ管理方法
US9070417B1 (en) Magnetic disk device and method for executing write command
US9105297B2 (en) Information recording device and data recovery method
JP2008140459A (ja) ハイブリッドディスク記憶装置及び同装置に適用されるディスクライト方法
US20170090768A1 (en) Storage device that performs error-rate-based data backup
US20150205543A1 (en) Storage device and data storing method
KR20100030990A (ko) 특정 조건을 갖는 파일을 정해진 위치에 저장할 수 있는 하이브리드 하드디스크 드라이브, 이에 적합한 제어 방법 및 이에 적합한 기록 매체
US20140068178A1 (en) Write performance optimized format for a hybrid drive
JP6178287B2 (ja) 記憶装置、及び制御方法
US20170242792A1 (en) Storage device that carries out a read cache operation
US10991387B1 (en) Data storage device migrating data from non-energy assist disk surface to energy assist disk surface
JP2009054209A (ja) 不揮発性半導体メモリ装置を有するディスク・ドライブ装置及びそのディスク・ドライブ装置において不揮発性半導体メモリ装置にデータを格納する方法
JP2023045988A (ja) 磁気ディスク装置
CN115116479A (zh) 磁盘装置

Legal Events

Date Code Title Description
RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20100510

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20110119

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20110816

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20111025

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20111214

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20120117

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20120131

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20150210

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20150210

Year of fee payment: 3

S533 Written request for registration of change of name

Free format text: JAPANESE INTERMEDIATE CODE: R313533

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20150210

Year of fee payment: 3

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees