(57)【要約】      （修正有）【課題】処理効率の低下を招くことなく、ＲＭＷ処理の前にバッファメモリ上のサブセクタ単位のデータを確実に保持できるデータ記憶装置を提供する。【解決手段】データ記憶制御装置はホストインターフェースコントローラ及びコントローラを具備する。ホストインターフェースコントローラは、ホストから所定単位の第１のデータを受信してバッファメモリに格納する。コントローラは、前記バッファメモリに格納された第１のデータに基づいて第２のデータを生成して、不揮発性記憶媒体に書き込むための制御を実行する。前記コントローラは、前記不揮発性記憶媒体に設定される通常領域に記録されるデータの第１のフォーマットと同サイズで、複数単位分の前記第１のデータ及び無効データを含む第２のフォーマットから構成される前記第２のデータを生成し、前記第２のデータを前記不揮発性記憶媒体に設定される退避領域に書き込むための制御を実行する。【選択図】図１
2013157068.tif 000002
【特許請求の範囲】
【請求項１】
ホストから所定単位の第１のデータを受信してバッファメモリに格納するインターフェース手段と、
前記バッファメモリに格納された第１のデータに基づいて第２のデータを生成して、不揮発性記憶媒体に書き込むための制御を実行するコントローラとを有し、
前記コントローラは、
前記不揮発性記憶媒体に設定される通常領域に記録されるデータの第１のフォーマットと同サイズの、複数単位分の前記第１のデータ及び無効データを含む第２のフォーマットから構成される前記第２のデータを生成し、
前記第２のデータを前記不揮発性記憶媒体に設定される退避領域に書き込むための制御を実行するデータ記憶制御装置。
【請求項２】
前記コントローラは、
前記第２のデータを前記退避領域に書き込むためのテーブル情報を使用し、
前記退避領域から読み出したデータと前記不揮発性記憶媒体上の通常領域から読み出したデータとをマージした前記第１のフォーマットのデータを作成し、
前記第１のフォーマットのデータを前記通常領域に書き戻す請求項１に記載のデータ記憶制御装置。
【請求項３】
前記コントローラは、
前記第２のデータを前記退避領域に書き込む際に、前記第１のデータ毎にエラー検出符号データを付加する請求項１または請求項２のいずれか１項に記載のデータ記憶制御装置。
【請求項４】
前記コントローラは、
前記退避領域から読み出したデータに対して、前記エラー検出符号データを使用して前記第１のデータ毎のエラー訂正処理を実行する請求項３項に記載のデータ記憶制御装置。
【請求項５】
前記コントローラは、
前記第１のデータである所定セクタ単位のデータを、前記第２のデータとして複数の所定セクタ分を含むロングセクタフォーマットのデータに変換する請求項１から請求項４のいずれか１項に記載のデータ記憶制御装置。
【請求項６】
前記コントローラは、
前記ロングセクタセクタフォーマットのデータを前記退避領域に書き込むためのテーブル情報を使用し、前記退避領域から読み出したデータと前記通常領域から読み出したデータとをマージしてロングセクタフォーマットデータを作成するリード・モディファイ・ライト処理を実行する請求項５項に記載のデータ記憶制御装置。
【請求項７】
請求項１から請求項６のいずれか１項に記載のデータ記憶制御装置と、
前記不揮発性記憶媒体であるディスクと
を具備するデータ記憶装置。
【請求項８】
請求項１から請求項６のいずれか１項に記載のデータ記憶制御装置と、
前記不揮発性記憶媒体であるフラッシュメモリと
を具備するデータ記憶装置。
【請求項９】
ホストから所定単位の第１のデータを受信してバッファメモリに格納するインターフェース手段と、不揮発性記憶媒体とを有するデータ記憶装置に適用するデータ記憶制御方法であって、
前記不揮発性記憶媒体に設定される通常領域に記録されるデータの第１のフォーマットと同サイズの、複数単位分の前記第１のデータ及び無効データを含む第２のフォーマットから構成される第２のデータを生成し、
前記第２のデータを前記不揮発性記憶媒体に設定される退避領域に書き込む
データ記憶制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、データ記憶制御装置、データ記憶装置及び方法に関する。
【背景技術】
【０００２】
従来、例えばハードディスクドライブ（以下単にディスクドライブと表記する場合がある）などのデータ記憶装置は、ホストから転送されるセクタ単位のデータをバッファメモリに一時的に格納し、このバッファメモリから不揮発性記憶媒体であるディスクに転送する。
【０００３】
近年、ディスク上の記憶容量を向上させるために、従来のセクタサイズ（例えば５１２バイト）よりも大きいセクタサイズ（例えば４Ｋバイト）を採用するディスクドライブが開発されている。具体的には、セクタ毎に付加するＥＣＣ（error correcting code）データを削減できるため、結果としてユーザデータの記録領域を増大できる。ここで、便宜的に従来のセクタサイズのセクタをサブセクタ(ショートセクタともいう)とし、大きいセクタサイズのセクタをロングセクタとする。
【０００４】
このようなロングセクタ方式（またはメディアセクタ方式）のディスクドライブでは、ディスク上にはロングセクタフォーマットのデータが書き込まれる。一方、ロングセクタ方式のディスクドライブでも、ホスト側もロングセクタフォーマットを採用している場合には、ネイティブ４Ｋ方式とも呼ばれている。前者のホスト側にショートセクタフォーマットが採用されるロングセクタ方式はエミュレーションモードとも呼ばれて、後者のロングセクタ方式とは区別される。
【０００５】
エミュレーションモードのロングセクタ方式では、ホストからは従来通りのサブセクタ単位（ショートセクタフォーマット）のデータが転送される。このため、バッファメモリには、ロングセクタに満たないサブセクタのデータ（パーシャルな状態のセクタデータ）が増大する。
【０００６】
そこで、ディスクドライブの内部では、バッファ上でのセクタフォーマットの変換が必要になる。即ち、ロングセクタ単位のフォーマットに変換してディスクに転送するなどのサブセクタ処理が実行される。具体的には、既にディスクに記録されているロングセクタ単位のデータを読み出して、該当部分だけをバッファメモリに格納されたサブセクタ単位のデータに置き換えて、ディスクに書き直す処理が必要となる。このような処理を、リード・モディファイ・ライト（read modify write : RMW)処理と呼ぶことがある。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２０１０−２６７１６４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
エミュレーションモードのロングセクタ方式（メディアセクタ方式）のディスクドライブでは、セクタフォーマットの変換のためにＲＭＷ処理が実行される。ＲＭＷ処理は、ドライブの処理効率の観点から、全くリードライトコマンドを実行していないアイドル状態時等に実行されることが望ましい。しかし、アイドル状態の待機中に電源遮断等があると、ドライブ内のバッファメモリ上のサブセクタ単位のデータは、ディスク上に書き込まれる前に消去してしまう。
【０００９】
そこで、本発明の目的は、処理効率の低下を招くことなく、ＲＭＷ処理の前にバッファメモリ上のサブセクタ単位のデータを確実に保持できるデータ記憶制御装置、データ記憶装置、及びデータ記憶方法を提供することにある。
【課題を解決するための手段】
【００１０】
実施形態によれば、データ記憶制御装置はインターフェース手段及びコントローラを具備する。インターフェース手段は、ホストから所定単位の第１のデータを受信してバッファメモリに格納する。コントローラは、前記バッファメモリに格納された第１のデータに基づいて第２のデータを生成して、不揮発性記憶媒体に書き込むための制御を実行する。前記コントローラは、前記不揮発性記憶媒体に設定される通常領域に記録されるデータの第１のフォーマットと同サイズで、複数単位分の前記第１のデータ及び無効データを含む第２のフォーマットから構成される前記第２のデータを生成し、前記第２のデータを前記不揮発性記憶媒体に設定される退避領域に書き込むための制御を実行する。
【図面の簡単な説明】
【００１１】
【図１】実施形態に関するデータ記憶装置の構成を説明するためのブロック図。
【図２】実施形態に関するディスク及びその周辺構成を説明するための図。
【図３】実施形態に関するバッファメモリ内の状態を説明するための図。
【図４】実施形態に関するディスク上の退避エリアの配置例を説明するための図。
【図５】実施形態に関するディスク上の退避エリアの配置例を説明するための図。
【図６】実施形態に関するディスク上の通常エリアと退避エリアのセクタフォーマットを説明するための図。
【図７】実施形態に関するデータ転送制御で使用されるテーブルのフォーマットを説明するための図。
【図８】実施形態に関するテーブルの具体例を示す図。
【図９】実施形態に関する退避エリアでのＣＲＣ処理を説明するための図。
【図１０】実施形態に関するＲＭＷ処理を説明するための図。
【図１１】実施形態に関するデータ転送制御を説明するためのフローチャート。
【発明を実施するための形態】
【００１２】
以下図面を参照して、実施形態を説明する。
【００１３】
［データ記憶装置の構成］
図１に示すように、本実施形態のデータ記憶装置１は大別して、不揮発性の記憶媒体１０と、コントローラ１１と、メモリ１８とを含む。ここで、本実施形態は、データ記憶装置１としてロングセクタ方式（メディアセクタ方式）のディスクドライブに適用した場合である。記憶媒体１０は、図２に示すように、磁気ディスク（以下単にディスク）である。メモリ１８は、後述するように、バッファメモリ１８０として使用されるＤＲＡＭ（dynamic random access memory）、ＳＲＡＭ（static random access memory）及びフラッシュメモリなどを含む（図３参照）。
【００１４】
コントローラ１１は、リードライト回路１２と、ハードディスクコントローラ（ＨＤＣ）１３と、マイクロプロセッサ（ＭＰＵ）１４とを含む。リードライト（Ｒ／Ｗ）回路１２は、リードライトチャネル（read and write channel）とも呼ばれ、ＨＤＣ１３の制御下で記憶媒体（ディスク）１０に対するデータの読み出し、書き込みを実行する。ＭＰＵ１４は、ＨＤＣ１３と連携して、ディスクドライブ１の制御を実行する。具体的には、ＭＰＵ１４は、サーボ制御、リードライトコマンド処理、及び後述するテーブルのエントリ処理などを実行する。
【００１５】
ＨＤＣ１３は、リードライト（Ｒ／Ｗ）コントローラ１５と、ホストインターフェースコントローラ１６と、データ転送コントローラ１７とを含む。Ｒ／Ｗコントローラ１５は、メモリ１８に格納されているセクタパルス制御情報に基づいてセクタパルスを生成する。また、Ｒ／Ｗコントローラ１５は、リードライト動作に必要なリードライトゲートをＲ／Ｗ回路１２に送出する。ホストインターフェースコントローラ１６は、ホスト２０から転送されるデータやコマンドを受信し、またはバッファメモリ１８０から読み出されたデータをホスト２０に送信するための転送制御を実行する。なお、ホスト２０は、例えばパーソナルコンピュータに含まれるＳＡＴＡ（Serial ATA）規格などのインターフェースコントローラである。
【００１６】
データ転送コントローラ１７は、ロジックゲートなどのハードウェアから構成されており、バッファメモリ１８０とＲ／Ｗ回路１２とのデータ転送を制御する。本実施形態では、データ転送コントローラ１７は、後述するように、ＲＭＷ処理の前にバッファメモリ１８０に格納されているサブセクタの各データを結合して、ロングセクタのフォーマットに変換する処理を実行する。
【００１７】
図２は、記憶媒体であるディスク１０及びその周辺構成を説明するための図である。
【００１８】
図２（Ａ）に示すように、ディスク１０は、ヘッド９によりデータの読み出し、書き込みが行われる。Ｒ／Ｗ回路１２は、図示しないヘッドアンプを介してヘッド９との間でデータの伝送を実行する。即ち、Ｒ／Ｗ回路１２は、ディスク１０上に記憶するデータをライト信号に変調してヘッド９に送出する。また、Ｒ／Ｗ回路１２は、ヘッド９により読み出されたリード信号を入力してデータを復調する。ヘッド９は、アクチュエータ１９により保持されて、ＭＰＵ１４のサーボ制御によりディスク１０上の指定位置に位置決めされる。
【００１９】
ディスク１０は、スピンドルモータ８により回転している（回転方向１３０）。ディスク１０上には、複数のセクタからなるトラック１００及びサーボ情報１１０が記録される。図２（Ｂ）はトラック１００のデータフォーマットである。図２（Ｂ）に示すように、トラック１００は、等間隔に分割されたサーボ情報１１０及びロングセクタ単位のデータ１２０が配列される。ＭＰＵ１４は、ヘッド９により読み出されるサーボ情報１１０に基づいてサーボ制御を実行する。
【００２０】
［データ転送制御］
以下図３〜１０及び図１１のフローチャートを参照して、本実施形態のデータ転送制御を説明する。
【００２１】
図３は、ホスト２０から転送されるデータをバッファメモリ１８０に格納したときのライトキャッシュの状態を示す。ホストインターフェースコントローラ１６は、ホスト２０から転送されるサブセクタ単位のデータ（以下サブセクタデータと表記する場合がある）３００を受信すると、バッファメモリ１８０に格納する。なお、各データ３００（Ａ）、３００（Ｂ）、３００（Ｃ）、３００（Ｄ）はいずれも非連続である。
【００２２】
図３において、データ３１０は、サブセクタ単位のＣＲＣ（Cyclic Redundancy Check）符号である。ホストインターフェースコントローラ１６は、ホスト２０から受信したサブセクタデータ３００に、ＣＲＣ符号３１０を付加してバッファメモリ１８０に格納する。
【００２３】
バッファメモリ１８０には、ロングセクタ方式（メディアセクタ方式）のサイズに満たないパーシャルな状態のサブセクタデータが混在する状態となる。即ち、論理ブロックアドレス（ＬＢＡ）のＬＢＡ（N-1）、（N+3）、（N+4）のデータは、ロングセクタ（例えば８サブセクタ分のサイズ）の一部が欠けている。一方、ＬＢＡ（N）、（N+1）、（N+2）のデータは、ロングセクタのサイズ分が揃っている。
【００２４】
データ転送コントローラ１７は、ＬＢＡ（N）、（N+1）、（N+2）のロングセクタデータをバッファメモリ１８０から読み出して、Ｒ／Ｗ回路１２を介してディスク１０に転送する。これにより、図４または図５に示すように、ディスク１０上の通常の記録エリア４００に、ロングセクタデータが書き込み（オーバーライト）される。
【００２５】
一方、データ転送コントローラ１７は、ＬＢＡ（N-1）、（N+3）、（N+4）のデータについては、そのままではディスク１０上の通常の記録エリア４００に書き込むことはできない。前述したように、セクタフォーマットの変換のためにＲＭＷ処理が実行される。ＲＭＷ処理は、アイドル状態時等に実行されることが望ましい。しかし、電源断等があると、バッファメモリ１８０のサブセクタデータは、ディスク１０上に書き込まれる前に消去してしまう。
【００２６】
そこで、本実施形態のデータ転送コントローラ１７は、ＲＭＷ処理の実行前に、一時的にディスク１０上の退避エリア４１０にバッファメモリ１８０の各サブセクタデータを、ロングセクタのフォーマットに変換して記録（退避）させるための制御を実行する。ここで、図４に示すように、退避エリア４１０は、トラック単位で任意に設定される。なお、通常の記録エリア４００は多数のトラックから構成されている。また、図５に示すように、通常の記録エリア４００をゾーン毎に分割した場合に、退避エリア４１０はゾーン内のロングセクタ単位エリアとして任意に設定される。
【００２７】
データ転送コントローラ１７は、図７に示すようなテーブルを使用して、退避エリア４１０へのデータ転送（書き込み）を実行する。図７に示すように、テーブルの各エントリには、バッファアドレス（Address）、サブセクタ識別フラグ（GAP）、最終転送識別（END）、ＬＢＡの加算値（Skip LBA）、予備（Reserved）、及びサブセクタ数（Num）の各項目が用意される。テーブルはバッファメモリ１８０に保存されており、ＭＰＵ１４により各エントリの更新が行われる。
【００２８】
バッファアドレス（Address）は、転送されるサブセクタの先頭アドレスを示す。サブセクタ識別フラグ（GAP）は、バッファメモリ１８０に存在するサブセクタデータを識別するフラグである。パーシャル状態のロングセクタの場合、バッファメモリ１８０に存在しないサブセクタがあるためである。サブセクタ識別フラグ（GAP）は、後述するように、サブセクタに付加するＣＲＣデータのシード（seed）値の更新時に利用される。
【００２９】
最終転送識別フラグ（END）は、退避エリアへの最終転送のサブセクタデータを識別するフラグである。このフラグ（END）は、最終転送の有効サブセクタを含むエントリでセットされて、後述する無効データ（PAD）の挿入位置の確定のために使用される。加算値（Skip LBA）は、退避エリアに転送開始前のＬＢＡ加算分である。この加算値（Skip LBA）は、複数のパーシャル状態のサブセクタを一度に書き込む際に使用される。これにより、パーシャル状態のサブセクタの境界で、現在のLBA値に加算して連続転送を可能にする。サブセクタ数（Num）は、バッファメモリ１８０に連続して存在するサブセクタを一つのエントリで扱えるサブセクタ数である。サブセクタ数（Num）は、連続サブセクタ数（Num）／GAPである。ここで、１エントリで扱える最小サブセクタ数は１であり、最大サブセクタ数は、「ロングセクタ内のサブセクタ数−１」である。
【００３０】
図８は、図３に示すパーシャル状態のサブセクタデータ（ＬＢＡ（N-1）、（N+3）、（N+4））を、ディスク１０上の退避エリア４１０に転送（書き込み）する場合のテーブルの具体例である。即ち、図８のテーブルにより、ＬＢＡ（N-1）に対応するサブセクタデータとして、４セクタ分のデータ３００（Ａ）と３セクタ分のデータ３００（Ｂ）が検索される。また、ＬＢＡ（N+3）に対応するサブセクタデータとして、３セクタ分のデータ３００（Ｃ）と３セクタ分のデータ３００（Ｄ）が検索される。さらに、ＬＢＡ（N+4）に対応するサブセクタデータとして、５セクタ分のデータ３００（Ｄ）が検索される。
【００３１】
以下、図６、８及び図１１のフローチャートを参照して、バッファメモリ１８０からディスク１０上の退避エリア４１０へのデータ転送制御を説明する。
【００３２】
データ転送開始時に、データ転送コントローラ１７は、バッファメモリ１８０に保存されている図８に示すようなテーブルを参照し、最初のエントリ(#0)の各項目を読み出す（ブロック２００）。即ち、データ転送コントローラ１７は、例えばＬＢＡ（N-1）の各項目及びサブセクタに付加するＣＲＣデータ用のシード（seed）値（または初期値）を準備する。
【００３３】
ここで、図６（Ａ）に示すように、退避エリア４１０に書き込まれるロングセクタフォーマットは、サブセクタ番号（A-1,A-2、B-5,B-6など）の順序でまとめられたサブセクタデータ３００からなるフォーマットである。なお、図６（Ｂ）は、通常エリア４００に書き込まれるロングセクタフォーマットである。
【００３４】
データ転送コントローラ１７は、ＬＢＡの加算値（Skip LBA）が０の場合で、サブセクタ識別フラグ（GAP）に基づいて、サブセクタがバッファメモリ１８０に存在する場合（GAP=0）と存在しない場合（GAP=1）を確認する（ブロック２０２）。ここで、ＬＢＡの加算値（Skip LBA）が０でない場合には、例えば図３に示すＬＢＡ（N+3）の場合のように、パーシャル状態のサブセクタ間に境界が存在することになる。そこで、データ転送コントローラ１７は、現在のＬＢＡ値に加算値（Skip LBA=4）を加算してサブセクタの連続転送を可能にする処理を行なう（ブロック２０１のＮＯ，２０７）。
【００３５】
データ転送コントローラ１７は、サブセクタ識別フラグ（GAP=1）によりサブセクタがバッファメモリ１８０に存在しないため、用意したＣＲＣデータ用のシード値にサブセクタ数（Num=1）を加算する（ブロック２０２のＮＯ，２０８）。即ち、図３に示すＬＢＡ（N-1）のバッファアドレス（Address=*）で示す空白部分である。
【００３６】
次に、データ転送コントローラ１７は、図８に示すように、テーブルのエントリ(#1)の各項目を読み出す（ブロック２００）。ＬＢＡの加算値（Skip LBA）が０で、サブセクタ識別フラグ（GAP=0）により、連続するサブセクタ（Ａ，Ｂ）がバッファメモリ１８０に存在するため、データ転送コントローラ１７はサブセクタ（Ａ，Ｂ）の転送を実行する（ブロック２０３）。
【００３７】
データ転送コントローラ１７は、サブセクタの転送時に、各サブセクタのそれぞれにＣＲＣデータ３１０を算出して付加する。サブセクタ識別フラグ（GAP=1）により、連続するサブセクタが存在しない場合には、サブセクタに付加するＣＲＣデータのシード値を更新する（ブロック２０８）。即ち、図３に示すように、例えばＬＢＡ（N+3）の場合で、パーシャル状態のサブセクタ（Ｃ，Ｄ）の間に空白が存在する場合である。
【００３８】
データ転送コントローラ１７は、同一ＬＢＡに属するサブセクタの転送後に、ロングセクタフォーマットを構成するために必要な無効データ（PAD）３２０のサイズを算出する（ブロック２０４のＹＥＳ，２０５）。図６（Ａ）に示すように、データ転送コントローラ１７は、必要に応じたサイズの無効データ（PAD）３２０を挿入する（ブロック２０６）。これにより、図３に示すようなＬＢＡ（N-1）に属するサブセクタデータが転送されて、退避エリア４１０に書き込まれる。即ち、図６（Ａ）に示すように、退避エリア４１０には、サブセクタ番号（A-1,A-2,A-3,A-4,B-5,B-6,B-7）の順序のサブセクタデータ３００及び無効データ（PAD）３２０からなるロングセクタフォーマットのデータが記録される。
【００３９】
データ転送コントローラ１７は、サブセクタのデータ転送処理を最終エントリ（#6）まで繰り返し、最終転送識別フラグ（END）を検出するとバッファメモリ１８０から退避エリア４１０へのデータ転送を完了する（ブロック２０９）。
【００４０】
以上のように、バッファメモリ１８０に存在するパーシャル状態のサブセクタデータ３００のそれぞれにＣＲＣデータ３１０を付加し、さらに無効データ（PAD）３２０を付加して結合したフォーマットのデータをディスク１０上の退避エリア４１０に転送（退避）することができる。この場合、退避エリア４１０に書き込まれたセクタフォーマットは、通常のロングセクタフォーマットと同じサイズである（図６（Ａ），（Ｂ）を参照）。
【００４１】
退避エリア４１０に書き込まれたロングセクタフォーマットのデータは、ＨＤＣ１３によるＲＭＷ処理が実行されるまで退避されている。従って、ＲＭＷ処理前の電源遮断等により、バッファメモリ１８０のサブセクタデータが、ディスク１０上に書き込まれる前に消去するような事態を大幅に軽減できる。ここで、ＨＤＣ１３は、例えばアイドル状態時に、退避エリア４１０に書き込まれたロングセクタフォーマットのデータを一度バッファメモリ１８０に読み出して、通常エリアのデータとマージし、ディスク１０に書き戻すＲＭＷ処理を実行する。
【００４２】
本実施形態では、退避エリア４１０に転送されるセクタフォーマットは、通常のロングセクタフォーマットと同じサイズである。このため、図４，５に示すように、退避エリア４１０をトラック毎またはゾーン毎に設けることが可能である。また、欠陥エリア用の代替エリアを、一時的に退避エリア４１０として使用することも可能である。
【００４３】
さらに、退避セクタと通常セクタのフォーマットが異なる場合には、Ｒ／Ｗコントローラ１５による転送の切り替え処理が必要となる。Ｒ／Ｗコントローラ１５はフォーマットが変更になると、レジスタ上でセクタパルスなどの各種のパラメータ設定を変更しなければならない。本実施形態では、フォーマットが同じでそのような転送の切り替え処理が不要となるため、Ｒ／Ｗコントローラ１５のオーバーヘッドを削減できる。
【００４４】
また、本実施形態では、退避エリア４１０に転送されるセクタフォーマットは、サブセクタ毎にＣＲＣデータ３１０が付加されている。通常では、例えば無効データ（PAD）３２０の部分に欠陥が含まれている場合、図９に示すように、当該ロングセクタは読み出しエラーセクタ９００となる。このような場合、本実施形態では、サブセクタ毎にＣＲＣデータ３１０によりエラー検出処理が可能であるため、サブセクタ９１０毎のエラー復元処理（エラー訂正処理）を実行することで正常読み出し完了とすることができる。
【００４５】
なお、ホストインターフェースコントローラ１６は、ホスト２０から転送されたデータにＣＲＣデータを付加してバッファメモリ１８０に格納する。本実施形態のデータ転送コントローラ１７は、バッファメモリ１８０からの各サブセクタデータを退避エリア４１０に書き込むときに、サブセクタデータ毎に新たなＣＲＣデータを付加するか、またはホストインターフェースコントローラ１６により付加されたＣＲＣデータを変更してもよい。
【００４６】
さらに、本実施形態では、即ち退避エリア４１０に書き込まれたデータを一度バッファメモリ１８０に読み出して、通常エリア４００のデータとマージする場合（ＲＭＷ処理）、図７，８に示すテーブルの各エントリをそのまま利用することができる。
【００４７】
具体的には、図１０に示すように、退避エリア４１０からバッファメモリ１８０にサブセクタ単位のデータを展開する場合には、テーブルの各エントリのＧＡＰ９２０で示すデータを空けて展開する。一方、通常エリア４００から読み出す場合には、テーブルの各エントリのＧＡＰ９３０で示すデータのみをバッファメモリ１８０に展開すればよい。
【００４８】
従って、本実施形態では、退避エリア４１０のデータと通常エリア４００のデータとをバッファメモリ１８０でマージする場合に、新たにテーブルを用意することなく、図７，８に示すテーブルを利用してＲＭＷ処理を実現することができる。
【００４９】
なお、本実施形態では、ＲＭＷ処理は、ＤＲＡＭのバッファメモリ１８０上で行なう場合について説明したが、メモリ１８に含まれるＳＲＡＭを利用してもよい。
【００５０】
なお、本実施形態のデータ記憶装置１は、ディスクドライブだけでなく、不揮発性の記憶媒体１０としてフラッシュメモリ（flash memory）を使用するＳＳＤ（solid state drive）にも適用可能である。
【００５１】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【００５２】
１…データ記憶装置、９…ヘッド、１０…不揮発性の記憶媒体（ディスク）、
１１…コントローラ、１２…リードライト回路、
１３…ハードディスクコントローラ（ＨＤＣ）、１４…マイクロプロセッサ（ＭＰＵ）、
１５…リードライト（Ｒ／Ｗ）コントローラ、
１６…ホストインターフェースコントローラ、１７…データ転送コントローラ、
１８…メモリ（ＤＲＡＭ、ＳＲＡＭ、フラッシュメモリ）、
１９…アクチュエータ、２０…ホスト、１８０…バッファメモリ。
【図１】
2013157068.tif 000003
【図２】
2013157068.tif 000004
【図３】
2013157068.tif 000005
【図４】
2013157068.tif 000006
【図５】
2013157068.tif 000007
【図６】
2013157068.tif 000008
【図７】
2013157068.tif 000009
【図８】
2013157068.tif 000010
【図９】
2013157068.tif 000011
【図１０】
2013157068.tif 000012
【図１１】
2013157068.tif 000013