(57)【要約】  【課題】  データフォーマット効率の減少を避け、高密度記録再生を実現する。  【解決手段】  データ保存に大ブロックサイズ（例えば、４KB）を用い、小ブロックサイズ（例えば512バイト）を用いるクライアントからの読見出し書き込み要請に応ずるディスクドライブにおいて、少なくとも読み出しデータの開始・終了の４K  ブロックはキャッシュされる。書き込み要求の対象のディスク・データの多くは先ず読まれるので、次の書き込み要請のときドライブコントローラは、キャッシュに開始・終了ブロックが存在するか判定し、もしそうであれば、それらのブロックに新データを書き込み、それらについて全ECCを計算し、ついで、中間のブロックについてECC を計算し、該中間ブロックに新データを書き込む。もし、開始・終了両ブロックともキャッシュに無い場合は、ドライブコントローラは、高データ保全性ルーティンか高パフォーマンスルーチンのいずれかユーザが選んだ方を実行する。【選択図】  図３
2005063441.tif 000002
【特許請求の範囲】
【請求項１】
少なくとも１つのストレージディスクと、少なくとも1つのデータキャッシュ、及び、該ディスクとキャッシュにアクセスするドライブコントローラを備えたハードディスクドライブ（ＨＤＤ）において、該ドライブコントローラは、少なくとも何らかのデータを、該ディスク上の第１サイズのブロックに、第1サイズよりは小さい第2サイズのブロックを用いるシステムからの少なくとも1つの書き込み要求に応じて蓄積する論理を実行し、その論理は、少なくとも1つの書き込み要求を受けること、該ディスク上にあるデータの少なくとも開始ブロックと終了ブロックを確認すること−ここで、該開始ブロックと終了ブロックは第１サイズであり、該ディスク上の該データは該開始ブロックと終了ブロックを部分的に占めるのみである−、少なくとも該開始ブロックと終了ブロックが該キャッシュに存在するか否かを判定すること、もし該開始ブロックと終了ブロックが該キャッシュに存在する場合は、該要求に係わる新データを少なくとも該キャッシュ上の該開始・終了ブロックの少なくとも1つに書き込み、少なくとも1つのブロックを更新すること、その更新されたブロックにエラー訂正コード（error correction code: ECC）を生成すること、および、少なくとも該開始ブロックと終了ブロックの間のブロックに要求に係わる新データを書き込むこととを含む論理であることを特徴とするハードディスクドライブ（HDD）。
【請求項２】
前記開始ブロックと終了ブロックが前記キャッシュに存在する場合に、前記ドライブコントローラが実行する論理に、さらに、該開始ブロックと終了ブロックの間の全ブロックについてECCを生成することが含まれることを特徴とする請求項１に記載のHDD。
【請求項３】
前記ディスク上にあるデータの読み出しに従って、前記開始ブロックと終了ブロックを前記キャッシュに保存することを特徴とする請求項１に記載のHDD。
【請求項４】
前記開始ブロックと終了ブロックが前記キャッシュに存在しない場合に、前記ドライブコントローラは、高データ保全性ルーチンと高パフォーマンスルーチンの少なくとも1つを実行し、前記データ書き込み要求を実行することを特徴とする請求項１に記載のHDD。
【請求項５】
前記ドライブコントローラが実行する前記高データ保全性ルーチンには、前記開始ブロックと終了ブロックを前記ディスクから前記キャッシュへコピーすること、要求された新データを前記キャッシュの中の該開始・終了ブロックの少なくとも1つに書き込み、少なくとも1つのブロックを更新すること、該更新されたブロックについてエラー訂正コード（error correction code: ECC）を生成すること、該開始ブロックと終了ブロックの間の全ブロックについてECCを生成すること、及び、要求された新データを少なくとも該開始・終了ブロックの間のブロックに書き込むこととを含むことを特徴とする請求項４に記載のHDD。
【請求項６】
前記ドライブコントローラはISF ドライブコントローラであり、該ISFコントローラが実行する前記高パフォーマンスルーチンは、前記開始ブロックと終了ブロックの少なくとも1つが、前記キャッシュに存在するか否かを判定すること、該キャッシュに存在する開始・終了ISFブロック各々について新データを書き込み、そして当該ブロックについて全多重レベルECCを生成すること、及び、該キャッシュに存在しない開始・終了ブロック各々について、第１レベルECC のみを生成することとを含むことを特徴とする請求項４に記載のHDD。
【請求項７】
少なくとも1つのキャッシュと第1サイズのブロックにデータが蓄積されている少なくとも1つのストレージディスクにアクセスするハードディスクコントローラであって、該ディスクコントローラは、第１サイズよりは小さい第２サイズのブロックを使用する要求者からのインプット／アウトプット要求を受けるものであり、かつ、該ディスク上の、開始ブロックを部分的に占め又終了ブロックを部分的に占める要求されたデータの、少なくとも1つの読み取り要求を受ける手段、少なくとも該開始ブロック及び終了ブロックの全体を該キャッシュにコピーする手段、該ディスクに要求されたデータと関連した新データを書き込む書き込み要求を受ける手段、該開始ブロックと終了ブロックが該キャッシュに存在することが確認されたら、該開始・終了ブロックの少なくとも1つに少なくとも何らかの新データを書き込み少なくとも１つのブロックを更新する手段、その更新されたブロックにエラー訂正コード（error correction code: ECC）を生成する手段、及び、少なくとも該開始・終了ブロックの間のブロックに要請された新データを書き込む手段とを備えるハードディスクドライブコントローラ。
【請求項８】
さらに、前記キャッシュに前記開始・終了ブロックが存在する場合に、該開始ブロックと終了ブロックの間の全ブロックについてECCを生成する手段を備えることを特徴とする請求項７に記載のハードディスクドライブコントローラ。
【請求項９】
さらに、前記キャッシュに前記開始・終了ブロックが存在しない場合に、高データ保全性ルーチンと高パフォーマンスルーチンの少なくとも1つを実行し、前記書き込み要求を遂行する手段を備えることを特徴とする請求項７に記載のハードディスクドライブコントローラ。
【請求項１０】
前記高データ保全性ルーチンが、前記開始ブロック及び終了ブロックの少なくとも１つをディスクから前記キャッシュにコピーする手段、キャッシュの中の該開始・終了ブロックの少なくとも1つに要求された新データを書き込み、少なくとも１つのブロックを更新する手段、その更新されたブロックにエラー訂正コード（error correction code: ECC）を生成する手段、該開始ブロックと終了ブロックの間の全ブロックにECCを生成する手段、及び、少なくとも該開始・終了ブロックの間のブロックに要求された新データを書き込む手段とを有することを特徴とする請求項９に記載のハードディスクドライブコントローラ。
【請求項１１】
前記高パフォーマンスルーチンが、開始ISF ブロックである前記開始ブロックと終了ISF ブロックである前記終了ブロックの少なくとも１つが、前記キャッシュに存在するか否か判定する手段、該キャッシュに存在する各開始・終了ISF ブロックについて、該ブロックに新データを書き込み、続いて該ISFブロックについて全多重レベルECC を生成する手段、及び、該キャッシュに存在しない開始・終了ISFブロック各々について、第１レベルECC のみを生成する手段とを有することを特徴とする請求項９に記載のハードディスクドライブコントローラ。
【請求項１２】
少なくとも1つのデータキャッシュと第1サイズのブロックにデータを有する少なくとも1つのディスクにアクセスするハードディスクコントローラであって、該ディスク・コントローラは、第１サイズよりは小さい第２サイズのブロックを使用するクライアントからの読みだし要求及び書き込み要求を受けるものであり、かつ、開始・終了ブロックを部分的にのみ占めるデータの読み出し要求に従って、少なくとも該開始ブロックと終了ブロックの全体をキャッシュに保存し、続く少なくとも該データのいくらかを必要とする書き込み要求について、該キャッシュに該開始ブロックと終了ブロックがキャッシュされているかを確認し、もしそうであれば、書き込み要求のあった新データを少なくとも該開始・終了ブロックの1つに書き込み、少なくとも1つのブロックを更新し、その更新されたブロックにつちえ全エラー訂正コード（error correction code: ECC）を生成する論理を実行するハードディスクドライブコントローラ。
【請求項１３】
さらに、書き込み要求のあった新データを少なくとも前記開始・終了ブロックの間のブロックに書き込み、該開始ブロックと終了ブロックの間の全ブロックについてECC を生成することを特徴とする請求項１２に記載のハードディスクドライブコントローラ。
【請求項１４】
前記キャッシュに前記開始・終了ブロックが存在しない場合に、該コントローラは、高データ保全性ルーチンと高パフォーマンス・ルーチンの少なくとも1つを実行し、前記データ書き込み要求を遂行することを特徴とする請求項１２に記載のハードディスクドライブコントローラ。
【請求項１５】
前記ドライブコントローラによって実行される高データ保全性ルーチンは、前記開始ブロック及び終了ブロックをディスクから前記キャッシュにコピーし、キャッシュの中の該開始・終了ブロックの少なくとも1つに要求された新データを書き込み、少なくとも１つのブロックを更新し、その更新されたブロックにエラー訂正コード（error correction code: ECC）を生成し、該開始ブロックと終了ブロックの間の全ブロックにECCを生成し、そして、少なくとも該開始・終了ブロックの間のブロックに要求請された新データを書き込むことを含むことを特徴とする請求項１４に記載のハードディスクドライブコントローラ。
【請求項１６】
前記ドライブコントローラによって実行される前記高パフォーマンスルーチンは、開始ISF ブロックと終了ISF ブロックの少なくとも１つが前記キャッシュに存在するか否か判定し、該キャッシュに存在する開始・終了ISF ブロック各々について、該ブロックに新データを書き込み、続いて該ISFブロックについて全多重レベルECC を生成し、そして、該キャッシュに存在しない開始・終了ISFブロック各々について、該ISF ブロックの第１レベルECC のみを生成することを含むことを特徴とする請求項９に記載のハードディスクドライブコントローラ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ハードディスクドライブ（HDDと略記）一般に関し、特に、但し限定するものではないが、独立ディスクの冗長配列（RAID）におけるHDDおよびハードディスクドライブコントローラに関する。
【背景技術】
【０００２】
20年以上前の固定ブロックハードディスクアーキテクチャーの導入以来、ディスクブロックつまりデータセクタの標準サイズは、典型的には512バイト、いくつかの特殊用途ドライブでは520と528バイト、のまま変わらなかった。ディスクドライブの記録密度の持続的増加に伴い、一セクタが占める物理的スペースは当然ますます縮小した。しかし、本発明が理解するところ、磁気媒体におけるスクラッチや異物混入のような問題となる物理的欠陥の大きさは、小さくなるとしても、同様な比率では縮小しない。その結果、一セクター内で欠陥が生ずると、集積度のより小さい古いドライブと比べて、より大きな部分のデータが破壊されることになると本発明は理解する。
【０００３】
このことに対抗するためには、より強力なエラー訂正コード（エラーコレクションコード、以下“ECC”）が必要になる。しかし、より強力なECCはより冗長性を要求する、すなわち、ディスクにおいてユーザデータよりECCのために必要とされる蓄積スペースの割合が増加することになる。本発明の理解するところ、このデータフォーマット効率の減少を避けるため、より強力なECC は、より大きなブロックサイズにおいて適用し、冗長性の増大をより大きなバイト数によってカバーすることになる。さらに、ECCの強さに係わらず、修正作業のためには、データブロックの相当部分はエラーフリーでなければならない。一欠陥のわたるバイト数が大きければ大きいほど、データブロックは大きくなければならない。これらの理由により、本発明では、標準的ブロックサイズは、例えば、４キロバイト（４ＫＢ）に増やすべきだと考える。本明細書における説明では４ＫＢを用いるが、本発明はそのようなブロックサイズに限るものではない。
【０００４】
この変更を実現する一つの方法は、現在の業界標準インターフェースである512バイトを4KBに変更することであろう。残念ながら、これは、オペレーションシステムソフトウエアやBIOSファームウエアの広範囲の変更を必要とする。
【０００５】
この変更を実現するもう一つの方法は、4KBのECCブロックサイズを内部的に実施するディスクドライブを作ることである。外部的には、インターフェイスは現在の512バイトのブロックサイズのままでよく、ドライブが512バイトブロックサイズインターフェイスをエミュレートする。本発明は、そのようなエミュレーションが直接的で簡単であると認識する。より具体的には、読み取り命令で、ドライブは、ただ単に要求された512バイトを含む原4KBブロックを読み、要求されたデータをホストに返す。書き込み命令では、もし、書き込むべきデータが４KB倍数で、そのデータが原4KBブロック領域に配置される場合は、単にその新データの為にECCを生成しディスクに書き込むことができる。しかしながら、本発明の理解するところ、この両条件のいずれかでも満たされなければ、該新データの初め及び又は終わりが部分的にHDDの原４KBブロックの内部にかかることになり、その場合は、ドライブは最初に先の４KBブロック及び又は続く４KBブロックを読み、該新データを一つ又は複数のブロックに入れ、変更された一又は複数のブロックのためのECCを生成し、すべての新ブロックをディスクに書かなければならない。このような読み−変更−書く手順は、現在もそうであるように、余分のドライブの回転を必要とし、ドライヴの性能を下げる。
【０００６】
より詳細にいうならば、HDDにおいて４KBECCブロックを実施する方法は2つの方法がある。第一の方法は、原セクター・サイズを512バイトから４KBに増やすことであり、セクターECCを512バイト・セクターのそれから４KBセクター用にエンハンスする。512バイトセクターインターフェイスを依然として用いるホストに対して、そのような4KBセクターは論理的には8ヶの512バイト論理セクターである。この方法による４KBブロックをここでは「原４KBブロック」とよぶ。第２の方法は、原セクターサイズ512バイトを維持し、そのようなセクターの数を増やした集合に対して高位レベルのECCを適用する。一例は、各原512バイトセクタについてのセクタECCを第１レベルECCと呼び、4つの連続したセクタ1グループについて第２レベルのより強力なECCを計算し付加する。さらに8つの連続したセクタ1グループについて第3レベルのさらに強力なECCを計算し付加する。このような複数レベルECC方法は、何レベルでも、またレベルあたり何セクタでも使用でき、Integrated Sector Format(ISF)と呼ばれる。8連続512バイトのISFセクターが４KBECCブロック（例示の第３レベルECCに対応）を構成する。このような４KBブロックを以下「ISF４KBブロック」と呼ぶ。
【０００７】
本発明の認識するところ、原512バイトセクタに個々にアクセスすることは可能ではあるが、多重レベルのECCをすべて適切に維持する為には、ISFブロック全体をアップデートしなければならい。茲に開示する本発明は、上記の両方のタイプの４KB ECC ブロックに適用でき、いくかの特徴はISF４KBブロックにのみ適用できる。以下において、「ブロック」は、特記しない限り原４KBブロックかISF４KBブロックを意味する。
【発明の開示】
【発明が解決しようとする課題】
【０００８】
ディスクドライブの記録密度の持続的増加に伴い、一セクタが占める物理的スペースは当然ますます縮小した。しかし、磁気媒体におけるスクラッチや異物混入のような問題となる物理的欠陥の大きさは、小さくなるとしても、同様な比率では縮小しない。その結果、一セクター内で欠陥が生ずると、集積度のより小さい古いドライブと比べて、より大きな部分のデータが破壊されることになる。
【０００９】
このことに対抗するためには、より強力なエラー訂正コード（エラーコレクションコード、以下“ECC”）が必要になる。しかし、より強力なECCはより冗長性を要求する、すなわち、ディスクにおいてユーザ・データよりECCのために必要とされる蓄積スペースの割合が増加することになる。本発明が解決しようとする課題は、かかるデータフォーマット効率の減少を避け、高密度記録再生を実現することにある。
【課題を解決するための手段】
【００１０】
本発明は、上記課題を解決するために、データは、書かれる前に先ず読まれることが多いことに注目した。これは、あるレコードが更新されたり、ユーザーファイル（テキスト、図、プレゼンテーション、写真、ビデオクリップ等）を編集するときに起きる。また、複数のドライブ（例えば、RAID４，５、６）にわたって冗長性が計算されるRAIDアプリケーションでは、あるドライブへの書き込みは、必ず、RAIDコントローラによる新データと新パリティの書き込み前に、そのドライブからの旧データ及びパリティドライブからの旧パリティの読み出しが行われる。
【００１１】
この認識に基づき、HDDは少なくとも１ストレージディスク、１データキャッシュとそのディスクとキャッシュにアクセスする１ドライブコントローラーを有する。ドライブコントロ−ラー、第1のサイズより小さい第2のサイズ（例えば、512バイト）を使用するシステムからの少なくとも1つの書き込み要求に応じて、第１サイズ（例えば４ＫＢ）のブロックにすくなくともなにがしのデータを蓄積する論理を実行する。このドライブの論理は、データの書き込み要求の受領と、少なくとも書き込みデータの開始アドレスと終了アドレスに係わる開始ブロックと終了ブロックをディスク上に確認することを含む。その開始・終了ブロックは、第1ブロックサイズである。書き込みデータは、開始ブロックと終了ブロックを部分的に占めるだけである。
【００１２】
次に、論理は、少なくとも開始ブロックと終了ブロックがキャッシュに存在するか否かを判定する。もし、これらがキャッシュに存在する場合は、論理には、キャッシュの開始ブロック・終了ブロックの少なくとも一つに要求されたデータを書き込み、少なくとも１ブロックを変更し、この変更されたブロックについてエラー訂正コード（ＥＣＣ）を生成することが含まれる。要求された新データは開始ブロックと終了ブロックの間のブロックに書き込まれる。
【００１３】
好ましい実施例では、開始ブロックと終了ブロックがキャッシュに存在する場合は、ドライブコントローラが実行する論理は、さらに、開始ブロックと終了ブロックの間のブロック一つ一つに対してECCコードを生成することを含む。開始ブロック及び終了ブロックは、ディスク上にあったデータを読むのにしたがって、キャッシュに保存されることが望ましい。
【００１４】
ISFを用いるドライブの場合、開始及び又は終了ISFブロックがキャッシュに存在しなければ、ドライブコントローラーは、書き込み要求を実行するのに、高データ保全性ルーティン又は高パフォーマンスルーティンを実行することができる。原４KBブロックを用いるHDDの場合は、もし、開始及び又は終了ブロックがキャッシュに存在しない場合は、高データ保全性ルーチンがいつも実行され、高パフォーマンスルーチンが実行されることはない。ドライブコントローラーによって実行される高データ保全性ルーチンは開始ブロックと終了ブロックをディスクからキャッシュにコピーすることを含み得、要求に係わる新データをキャッシュにある少なくとも一つの開始ブロック又は終了ブロックに書き込み、少なくとも一つの変更されたブロックを生成し、続いて当該変更されたブロックのエラー修正コード（ECC）を生成する。開始ブロックと終了ブロックの中間にある個々のブロックのECC も生成される。要請された新データ及び新ECCは開始ブロックから終了ブロックまでディスクに書かれる。
【００１５】
対照的に、ISF HDDの場合のドライブコントローラによって実行される高パフォーマンスルーチンは開始ISF ブロック又は終了ISFブロックがキャッシュに存在するか否かを判定することを含み得、いずれかがキャッシュに存在する場合は、新データはそのキャッシュ内ISFブロックに書き込まれ、当該ISFブロックのについて全多重レベルECCが生成される。キャッシュに存在しない開始・終了ISFブロック各々については、そのブロックの新セクタについて第1レベルECCのみが生成される。
【００１６】
もう一つの態様では、ハードディスクドライブコントローラは、キャッシュと第1サイズのブロックにデータを蓄積している少なくとも一つのストレージディスクにアクセスしており、第1サイズより小さい第2サイズのブロックを用いる要求者からのインプット・アウトプット要求を受ける。コントローラは、ディスク上のデータへの読み取り要求を受ける手段を有している。要求されたデータは、開始ブロックを部分的に占め、終了ブロックも部分的に占める。開始ブロックと終了ブロックの全体をキャッシュにコピーする手段を有している。コントローラは、さらに、ディスクへの新データ書き込み要求をも受ける手段を有す、が、ここで新データは（読み取り）要求されたデータに係わるものである。開始ブロックと終了ブロックがキャッシュに存在することが確認された場合に、新データを開始ブロックと終了ブロックに書き込み、少なくとも１ブロックを更新する手段を有する。コントローラは、さらに更新されたブロックについてエラー訂正コード（ＥＣＣ）を生成する手段も有しており、開始ブロックと終了ブロックの間のブロックに要求に係わる新データを書き込む手段も有している。
【００１７】
さらにもう一つの態様では、ハードディスクドライブコントローラは、キャッシュと第1サイズのブロックにデータを有している少なくとも一つのディスクにアクセスしており、コントローラは、第1サイズより小さい第2サイズのブロックを用いているクライアントからの読み取り要求と書き込み要求に応ずる。ディスクドライブコントローラは、開始ブロック、終了ブロックを部分的にのみ占めるデータの読み取り要求に従って、開始ブロックと終了ブロックの全体をキャッシュに蓄積することを含む論理を実行する。続くそのデータについての書き込み要求に対して、コントローラは、開始ブロックと終了ブロックがキャッシュに存在するか否かを判断し、もしそうなら、コントローラーは書き込み要求に係わる新データを開始・終了ブロックに書き込み、更新されたブロックを作成し、それに対して全エラー訂正コード（ＥＣＣ）を生成する。
【００１８】
本発明の詳細は、その構造及び動きに関し、添付図面を参照することによりもっともよく理解されるものであり、図面において参照番号はしかるべき部分を指す：
【発明の効果】
【００１９】
以上説明したように、本発明によれば、データフォーマット効率の減少を避け、高密度記録再生を実現できる効果を奏する
【発明を実施するための最良の形態】
【００２０】
先ず図1について説明すると、10は一般的なRAIDシステムを示しており、RAIDコントローラ 12を有し、これが１つ以上のクライアントプロセッサ 14と交信し、比較的小さいブロックサイズ、例えば512バイト、を用いる複数のハードディスクドライブ16に対しデータの蓄積・引出しをおこなう。図２は、本発明のハードディスクドライブ16がドライブコントローラ18を有し、比較的大きいブロックサイズ、例えば4000バイト（４KB）、を用いるRAIDコントローラ12からの要請に応じ１つ以上のデータストレージディスク20に対しデータの読み出し・書き込みを行う。各HDD16は既に知られたHDD技術原理に従い半導体データキャッシュ20を有することができる。限定条件ではないが望ましい実施例として、本発明の論理を実行するドライブコントローラ18は、内部ドライブコントロール電子機器であり、外部ホスト−バス−アダプター式コントロール電子機器ではない。
【００２１】
図3は、開始及び終了４KBブロック24、26と、開始及び終了ブロック24、26の間に存在する要求された連続セクタ28を示す。ほとんどの場合、読み取り要求あるいは書き込み要求の対象であるデータ（512バイトのいわゆる論理ブロックアドレス（「LBA」）が付せられている）は、図3のハッチングした部分に示すように、開始及び終了ブロック24、26を部分的に占めるのみであり、要求された開始セクタのアドレスは、「開始LBA」30とラベルを付け、要求された終了セクタのアドレスは「終了LBA」32とラベルが付されており、このような場合において本発明が特に有効である。512バイトのセクタが1乃至２のような小さな要請の場合、開始ブロック24と終了ブロック26は同じブロックであることもありえる。
【００２２】
いずれにしろ、図1に示すRAIDコントローラ12のようなクライアントあるいはユーザが用いるHDD―ホストのインターフェースブロック（例えば512バイト）と比べて、HDD内部のブロック24、26のサイズは比較的大きく、例えば図３の34に示すように4KBである。図3に示すように、開始ブロック24は開始アドレス36を有し、図３に「開始LBA」と表示、一方終了ブロック26は、終了アドレス38を有し、図3では「終了LBA」と表示している。すなわち、望ましい実施例では、開始LBA30は、例えば開始LBA'36と記した512バイトセクタ8ヶの４KB ブロックの中にあり、終了LBA32は、終了LBA'38と記した8セクタからなる４KBブロックの中にあることが望ましい。
【００２３】
図4は、ドライブコントローラ18が読み取り要求を実行する論理を示しており、本発明では、書き込み要求の対象であるデータは、上に開示したように、しばしば先ず読み取られると認識している。40状態で読み取り要求がHDDに来ることから始まり、ブロック42でドライブコントローラ18は読み取り要求の開始LBA30と終了LBA32を確認する。次に、ブロック44において、開始LBA30を含む開始ブロック24の開始LBA'36を確認し、次のブロック46で終了LBA32を含む終了ブロック26の終了LBA'38を確認する。論理は次にブロック48に進み、ドライブコントローラ18は、開始IBA'36と終了LBA'36をそれぞれ含む両者間の全512バイトセクタから読み出しを行う。ブロック50では、ドライブコントローラ18は、キャッシュ22に、最低、開始ブロック24の全体と終了ブロック24の全体を蓄積する。もし望むなら、ドライブコントローラ18は開始ブロック24と終了ブロックの間のブロックもキャッシュ22に保存しても良い、
ISFドライブの場合は、個々の512バイトブロックを読み取り可能であるので、コントロ−ラ18は、上記論理を意図的にとらなければならない。原ブロックサイズが真に４KBである他のECCスキームを用いるドライブの場合は、ドライブ16は4KBより小さいものは読めないので、自然に上記論理になる。もし要求されたデータのサイズが小さければ、コントローラは通常読み取り要求データをキャッシュし、読み取り要求全体が開始ブロック及び終了ブロックを含めまとめてキャッシュに蓄積することができる。対照的に、要求データのサイズが大きいときは、コントローラ18は通常読み取り要求データをキャッシュせず、開始及び終了ブロック24,26のみがキャッシュされる必要がある。
【００２４】
図５は、ドライブコントローラ18が書き込み要求を実行する論理を示す。52状態でドライブコントロ−ラ18に書き込み要求が来るところから始まる。ドライブコントローラ18は、ブロック54で、書き込み要求の対象のデータの開始LBA30と終了LBA32を確認する。次にブロック56で、論理は、開始ブロック24の開始LBA'36と終了ブロック26の終了LBA'38を確認する。選択決定を示す菱形58に進み、開始ブロック24全体がキャッシュ22に存在するか確認される。もし存在しなければ、論理は、探すブロックがキャッシュ22に無いことを示す60状態で終わり、図６で説明する次の処理に進む。そうでない場合は、論理は、ブロック62に進み、書き込み要請の開始セクタをキャッシュ22にある開始ブロック24に挿入し、対応する原セクターを置き換える。そこで、新、望ましくは全、ECCが、更新された開始ブロックについて従来のECC技術原理に従って生成される。
【００２５】
決定菱形枠64に進み、ドライブコントローラ18は、キャッシュ22に終了ブロック26の全体が存在するかを確認する。もしなければ、論理は状態60で終了するが、そうでなければ、論理はブロック66に進み、書き込み要求の終了セクターをキャッシュ22にある終了ブロック26に挿入し、対応する原セクターを置き換える。新、望ましくは全、ECCが、更新された終了ブロックについて生成される。
【００２６】
ブロック66からブロック68に進み、ドライブコントローラ18の論理は、開始ブロック24と終了ブロック26の間の新データの入った全ブロックについて全ECCを生成する。望ましくは、ブロック68のステップ後、ブロック70で、開始LBA'36から終了LBA'38まで、両端を含む、の全セクタが、全新ECCとともに、ディスク20に書き出される。
【００２７】
上に説明した書き込み方法は、オーバーヘッドをほとんど負わないで、書き込み要求に先だって同じアドレスについて読み出し要求が有る場合に−RAIDS と多くのユーザアプリケーションの場合そうであるが−ドライブが（ディスクから）読みだし−修正−書き込みをしなくてすむようにするものである。
【００２８】
次に図６であるが、図５の60状態になったとき（開始ブロック又は終了ブロック24,26のいずれか又は両方ともキャッシュ22に存在せず、書き込みデータについて全ECCを生成できないとき）、論理は72状態から始まり、決定菱形74に移りユーザによるデータの高保全性又は高パフォーマンスの選択が決められる。高パフォーマンスのオプションはISF ドライブの場合にのみ選択可能であり、原４KBブロックドライブの場合は選択できない。この選択は、最初にユーザによりドライブコントローラ18がインストールされるときになされるか、あるいは、ドライブコントローラ18にデフォールト設定しておいてもよい。高データ保全性が選択された場合、ドライブコントロ−ラ18は、状態76に進み図７の論理を実行する。そうではなく、高パフォーマンスが選ばれた場合は、コントローラ18は、状態78に進み図８及び9の論理を実行する。
図７の高データ保全性論理は状態80から始まり、82に進んでキャッシュに無かった開始及び又は終了ブロックをディスクから読んでキャッシュ22に入れる。ブロック84に進み、ドライブコントローラ18は、キャッシュの開始ブロックに書き込み要求の開始セクタを挿入して開始ブロックを変更して、対応する元セクタを置き換え、変更した開始ブロックの新ＥＣＣを生成する。ブロック86では、ドライブコントローラ18は、キャッシュの終了ブロックに書き込み要求の終了セクタを挿入して終了ブロックを変更して、対応する元セクタを置き換え、変更した終了ブロックの新ＥＣＣを生成する。ドライブコントローラ18は、次にブロック88に進み、開始ブロックと終了ブロックの間の新データの全ブロックについてECCを生成する。最後に、ブロック90で、開始LBA'から終了LBA'までの全セクタが、全新ECCと併せ、ディスクに書き出される。
【００２９】
上記高データ保全性論理では、読み取り−変更―書き込みが行われるので、パフォーマンスを犠牲にされるが、４KBECCのデータ信頼性の特徴が維持される。
【００３０】
対照的に、図８の高パフォーマンス論理は、ISFドライブヴの場合にのみ利用でき、状態92に始まり、決定菱形94に進んで書き込むべきデータの開始ISF ブロック24全体がキャッシュ22に存在するかを判定する。もし、noであれば、論理はブロック96に進み既存技術のECC原理に従って開始ISFブロックの新セクターについて第１レベルのECC のみを生成する。キャッシュ22にすべての必要なセクタが存在しないため開始ISF ブロックについて全ECC は生成されない。加えて、ブロック96では、ホルダー変数「SLBA」は開始LBA30とセットされる。
【００３１】
キャッシュ22に書き込みデータの開始ISF ブロック24の全体が存在する場合は、論理は、決定菱形94からブロック98に移り、そこで、書き込み要求の開始セクタがキャッシュ22にある開始ISFブロック24に挿入され、対応する元セクタを置き換える。変更された開始ISF ブロックについて全（全レベルの）新ECCが生成される。加えて、ブロック98ではSLBAは開始LBA'36にセットされる。
【００３２】
ブロック96又は98から論理は決定菱形100に移り、キャッシュ22に書き込みデータの終了ISF ブロック26全体が入っているか否かを判定する。もし入っていなければ、論理はブロック102に移り終了ISFブロックの新セクタについて第１レベルのECCのみを生成する。加えて、ブロック102において、ホルダー変数「ELBA」は終了LBA32とセットされる。
【００３３】
キャッシュ22に終了ISF ブロック26の全体が存在する場合は、論理は、決定菱形100からブロック104に移り、そこで、書き込み要求の終了セクタがキャッシュ22にある終了ISFブロック26に挿入され、対応する元セクタを置き換える。変更された終了ISF ブロックについて全（全レベルの）新ECCが生成される。加えて、ブロック104ではELBAは終了LBA'38にセットされる。
【００３４】
ブロック106に進み、ドライブコントローラ18は、開始ブロックと終了ブロックの間の新データの全ISFブロックについて全多重レベルECCを生成する。最後に、ブロック108で、SLBAからELBAまで、両端を含む、の全セクタが、ディスクに書き出される。
図８の高パフォーマンスのオプションが選択された場合、全部のブロックについて全多重レベルECCが生成されるわけではないので、ドライブコントロ−ラのアイドル時間に自律的なバックグラウンドプロセスを用いてそのようなブロックを探してディスクをスクラブしＥＣＣを更新することが望ましい。ドライヴ16の全蓄積空間は論理的に数多くのデータスクラブ単位に区切られている。これらの単位は固定サイズも可変サイズもよい。効率のためには、１スクラブ単位は少なくとも512セクタ有ることが望ましい。望ましい実施例では、物理的なトラックをデータスクラブの単位として使用している。このようにして、待ち時間ゼロの（すなわち、ヘッドがトラックに来ると同時に読み始める）の読み取り技術が読み取りスクラブに際し容易に適用でき、回転による遅延オーバーヘッドは無くなる。これらスクラブデータ単位に対応するビットマップを用いてスクラブした単位を管理することができるが、他のどんな方法を用いてもよい。スクラブサイクルの開始ごとにビットマップをリセットする。
【００３５】
図９に基本的なスクラブループを示す。状態110に始まり、論理はブロック112に進み、次にスクラブされるべきデータ単位が選ばれ、次にブロック114でドライブコントローラー18によって読まれる。決定菱形116において、ISFブロックで古いECCを持っているものがないか判定され、もしそうであれば、ブロック118において、これらのセクタについて新多重レベルECCが生成される。これら新多重レベルECC付きブロックはディスクに書き込まれる。ブロック120において、ドライブコントローラ18は、どのデータ単位がスクラブされたかのリスト（又はビットマップ）を更新する。ブロック122において、ドライブコントローラ18はディスク20全体がスクラブ済みであるかを判定し、もしそうでなければ、論理はブロック112にループバックする。もしディスク全体がスクラブ済みであれば、論理はブロック110にループバックし新しいスクラブサイクルを始める。
【００３６】
図８に示す高パフォーマンス論理のためのISFドライブの場合では、個々の512バイトセクタが読みだし書き込みされ得るので、ドライブは更新されたセクタのみについて書き込みに進むことができ、第1レベルECCを生成するが、第２第３レベルECCは更新しなくてよい。このようなECCの部分的な更新では、読み出し−更新―書き込みを行わない分、パフォーマンスの損失を受けない。その代り、これらのブロックについては４KBECC のデータ信頼性の特徴は一時的に失われることになる。部分的に更新したECC/CRCチェックによる訂正誤り探知が保証されている。後に、背景スクラブ処理でディスクをスキャンし、ECCが適切に更新されなかったブロックについて完全に更新することができ、それらのブロックについてデータ信頼性を完全に回復することができる。
【００３７】
以上により本発明がHDDに実施される場合の価値が理解されよう。HDD が接続されるホストはHDDが大ブロックECCを採用していることを知らず、従って、何ら変更の必要はない。すなわち、ホストはいまの標準的なインターフェイスを用いて運営されていてよいのである
此処に示し詳細に説明した「４Kブロックサイズを用いてハードディスクドライブへの書き込みを行うハードディスクドライブコントローラおよびそれを用いたハードディスクドライブ」は、上記に説明した本発明の目的を完全に達成できるものであるが、次のことを理解すべきである。すなわち、これは本発明の現時点での望ましい実施形態であり、本発明が広く考えるところのものを代表的に表すものであり、本発明の範囲は、当該技術に長けた者にとってすぐに分かるような実施例は包含するものであり、かつ、本発明の範囲は従って、添付の請求項以外によっては限定されるものではなく、その請求項において単数形で言及している要素は明確にそう言及していない限り「唯一の」を意図的に意味しているのではなくむしろ「一つ以上の」を意味している。本発明の範囲に入るために、ある機器あるいは方法が本発明が解決しようとする問題をすべて解決するものである必要はない。さらには、本開示におけるいかなる要素、部品、方法のステップも、それが請求項に明示に言及されているか否かにかかわらず、公に提供することを意図していない。本開示におけるいかなる要素も、「の手段」の語句を用いて、又は、方法クレームの場合は、当該要素が「作用」ではなく「ステップ」として使用されているのでなければ、３５U.S.C.112条、第６パラグラフに従って解釈してはならない。明確な定義がない場合は、請求項の語句は本明細書とファイル経歴と矛盾しない普通のいつもの意味に解釈されねばならない。
【図面の簡単な説明】
【００３８】
【図１】本発明の意図する環境にけるＨＤＤのブロック図である。
【図２】本発明のＨＤＤのブロック図である。
【図３】本発明の要請されたデータの論理ブロックアドレス（ＬＢＡ）の模式図である。
【図４】本発明の読み取り要求を実行する論理を示すフロチャートである。
【図５】本発明の書き込み要求を実行する論理を示すフロチャートである。
【図６】本発明の要求された書き込みデータがキャッシュに無い場合に、図７と図８のどちらを用いるかを決める論理を示すフロチャートである。
【図７】本発明の高データ保全性を保ちながらキャッシュされていないデータの書き込み要求を実行する論理を示すフロチャートである。
【図８】本発明の高パフォーマンスを保ちながらキャッシュされていないデータの書き込み要求を実行する論理を示すフロチャートである。
【図９】本発明の基本的データスクラブループの論理を示すフローチャートである。
【符号の説明】
【００３９】
１０…RAIDシステム、１２…RAIDコントローラ、１４…クライアントプロセッサ、１６…ハードディスクドライブ（ＨＤＤ）、１８…ハードディスクドライブコントローラ（ドライブコントローラ）、２０…データストレージディスク、２０…半導体データキャッシュ（キャッシュ）、２４…開始４ＫＢブロック、２６…終了４ＫＢブロック、２８…連続セクタ、３０…開始ＬＢＡ、３２…終了ＬＢＡ、３４…４ＫＢブロックＥＣＣブロック、３６…開始アドレス（開始ＬＢＡ’）、３８…終了アドレス（終了ＬＢＡ’）、４０…読出し要求着、４２…ブロック、４４…ブロック、４６…ブロック、４８…ブロック、５０…ブロック、５２…書込み要求着、５４…ブロック、５６…ブロック、５８…選択決定を示す菱形、６２…ブロック、６４…選択決定を示す菱形、６６…ブロック、６８…ブロック、７０…ブロック、７４…選択決定を示す菱形、８２…ブロック、８４…ブロック、８６…ブロック、８８…ブロック、９０…ブロック、９４…選択決定を示す菱形、９６…ブロック、９６…ブロック、９８…ブロック、１００…選択決定を示す菱形、１０２…ブロック、１０４…ブロック、１０６…ブロック、１０８…ブロック、１１２…ブロック、１１４…ブロック、１１６…選択決定を示す菱形、１１８…ブロック、１２０…ブロック、１２２…ブロック。
【図１】
2005063441.tif 000003
【図２】
2005063441.tif 000004
【図３】
2005063441.tif 000005
【図４】
2005063441.tif 000006
【図５】
2005063441.tif 000007
【図６】
2005063441.tif 000008
【図７】
2005063441.tif 000009
【図８】
2005063441.tif 000010
【図９】
2005063441.tif 000011