(57)【要約】【課題】エラー訂正コードシード処理のための技術を提供する。【解決手段】本明細書に開示の技術は、データブロックのセル番号がデータブロックに記憶されたＥＣＣ値と一致しないときにデータブロックから読み取られたデータを確認する方法を提供する。具体的には、該方法は、セル番号に基づいて複数のデータブロックのインデックス付き配列内の１つのデータブロックにアクセスすることであって、インデックス付き配列内のそれぞれのデータブロックが、記憶されたＥＣＣ値を含むことと、１つのデータブロックのセル番号と関連付けられたオフセットを読み出すことと、セル番号およびオフセットに基づいてＥＣＣ値を生成することと、生成されたＥＣＣ値および記憶されたＥＣＣ値が完全性条件を満たすかを判定することとを含む。【選択図】図５
2014175001.tif 000002
【特許請求の範囲】
【請求項１】
セル番号に基づいて複数のデータブロックのインデックス付き配列内の１つのデータブロックにアクセスすることであって、前記インデックス付き配列内のそれぞれのデータブロックが、記憶されたＥＣＣ値を含むことと、
前記１つのデータブロックの前記セル番号と関連付けられたオフセットを読み出すことと、
前記セル番号および前記オフセットに基づいてＥＣＣ値を生成することと、
前記生成されたＥＣＣ値および前記記憶されたＥＣＣ値が完全性条件を満たすかを判定することと、を含む、方法。
【請求項２】
エラー検出および訂正モジュールを前記セル番号および前記オフセットに基づいた値でシード処理することをさらに含む、請求項１に記載の方法。
【請求項３】
前記エラー検出および訂正モジュールをシード処理することが、
前記エラー検出および訂正モジュールを前記セル番号および前記オフセットの合計値でシード処理することをさらに含む、請求項２に記載の方法。
【請求項４】
前記オフセットが、記憶デバイスのファームウェアに記憶されたオフセットテーブルから読み出される、請求項１に記載の方法。
【請求項５】
前記オフセットテーブルが、工場初期化動作中に作成される、請求項４に記載の方法。
【請求項６】
データブロックの前記インデックス付き配列が、磁気ディスク上のデータトラックに沿った連続したセクタである、請求項１に記載の方法。
【請求項７】
前記インデックス付き配列が、記憶デバイス上のシーケンシャルデータブロックと関連付けられた連続して増加するインデックスを含む、請求項１に記載の方法。
【請求項８】
コンピュータシステム上でコンピュータプロセスを実行するためのコンピュータ実行可能命令を符号化する１つ以上の有形のコンピュータ可読記憶媒体であって、前記コンピュータプロセスが、
セル番号に基づいて複数のデータブロックのインデックス付き配列内の１つのデータブロックにアクセスすることであって、前記インデックス付き配列内のそれぞれのデータブロックが、記憶されたＥＣＣ値を含むことと、
前記１つのデータブロックの前記セル番号と関連付けられたオフセットを読み出すことと、
前記セル番号および前記オフセットに基づいてＥＣＣ値を生成することと、
前記生成されたＥＣＣ値および前記記憶されたＥＣＣ値が完全性条件を満たすかを判定することと、を含む、１つ以上の有形のコンピュータ可読記憶媒体。
【請求項９】
前記コンピュータプロセスが、
エラー検出および訂正モジュールを前記セル番号および前記オフセットに基づいた値でシード処理することをさらに含む、請求項８に記載の１つ以上の有形のコンピュータ可読記憶媒体。
【請求項１０】
前記オフセットが、記憶デバイスのファームウェアに記憶されたオフセットテーブルから読み出される、請求項８に記載の１つ以上の有形のコンピュータ可読記憶媒体。
【請求項１１】
前記オフセットテーブルが、工場初期化動作中に作成される、請求項８に記載の１つ以上の有形のコンピュータ可読記憶媒体。
【請求項１２】
データブロックの前記インデックス付き配列が、磁気ディスク上のデータトラックに沿った連続したセクタである、請求項８に記載の１つ以上の有形のコンピュータ可読記憶媒体。
【請求項１３】
前記インデックス付き配列が、記憶デバイス上のシーケンシャルデータブロックと関連付けられた連続して増加するインデックスを含む、請求項８に記載の１つ以上の有形のコンピュータ可読記憶媒体。
【請求項１４】
記憶デバイスと、
インデックス付き配列内のデータブロックのセル番号と関連付けられたオフセットを読み出すように構成されるオフセットルックアップモジュールであって、前記インデックス付き配列内のそれぞれのデータブロックが、記憶されたＥＣＣ値を含む、オフセットルックアップモジュールと、
エラー検出および訂正モジュールであって、
前記セル番号および前記オフセットに基づいてＥＣＣ値を生成することと、
前記生成されたＥＣＣ値および前記記憶されたＥＣＣ値が完全性条件を満たすかを判定することと、
を行うように構成される、エラー検出および訂正モジュールと、
を備える、システム。
【請求項１５】
前記エラー検出および訂正モジュールがさらに、前記セル番号および前記オフセットの合計であるシードを用いて前記ＥＣＣ値を生成するように構成される、請求項１５に記載のシステム。
【請求項１６】
前記オフセットルックアップモジュールが、記憶デバイスのファームウェアに記憶されたオフセットテーブルから前記オフセットを読み出すように構成される、請求項１５に記載のシステム。
【請求項１７】
前記オフセットテーブルが、工場初期化動作中に作成される、請求項１５に記載のシステム。
【請求項１８】
データブロックの前記インデックス付き配列が、磁気ディスク上のデータトラックに沿った連続したセクタである、請求項１５に記載のシステム。
【請求項１９】
前記インデックス付き配列が、記憶デバイス上のシーケンシャルデータブロックと関連付けられた連続して増加するインデックスを含む、請求項１５に記載のシステム。
【請求項２０】
前記エラー検出および訂正モジュールが、前記生成されたＥＣＣ値が前記記憶されたＥＣＣ値と等しい場合に、前記完全性条件が満たされたと判定する、請求項１５に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願の相互参照
本出願は、本明細書と同時に出願された米国特許出願第１３／７９３，９９９号、表題「エラー訂正コードシード処理」に関するものであり、それが開示および教示するすべてのために参照により本明細書に具体的に組み込まれる。
【背景技術】
【０００２】
使用不可能なデータブロックは、ドライブ処理におけるいくつかの段階で発見される。そのようなデータブロックが発見されるとき、そのドライブが再線形化され得るため、使用可能なデータブロックは、それぞれのデータブロックに関するエラー訂正コード（ＥＥＣ）情報において符号化されたシーケンシャルインデックスを有する。そのような再線形化の結果として、ＥＣＣ情報は、使用可能なブロックがシーケンシャルインデックスを有するようにすべての使用可能なデータブロック上に再度書き込まれる。しかしながら、単一のドライブを再線形化するのに数時間かかり、製造業者に莫大な費用を発生させ得る。
【発明の概要】
【課題を解決するための手段】
【０００３】
本明細書において記載および特許請求される実装例は、セル番号に基づいて複数のデータブロックのインデックス付き配列内の１つのデータブロックにアクセスし（インデックス付き配列内のそれぞれのデータブロックが記憶されたＥＣＣ値を含む）、１つのデータブロックのセル番号と関連付けられたオフセットを読み出し、セル番号およびオフセットに基づいてＥＣＣ値を生成し、かつ生成されたＥＣＣ値および記憶されたＥＣＣ値が完全性条件を満たすかを判定することによって前述の問題に対処する。
【０００４】
本発明の概要は、簡略化された形態で以下の発明を実施するための形態にさらに説明される概念の選択を導入するために提供される。本発明の概要は、特許請求される主題の主要な特徴または本質的な特徴を特定することも、特許請求される主題の範囲を限定するために使用されることも意図していない。これらおよび様々な他の特徴および利点は、以下の発明を実施するための形態を読むことにより明らかになる。
【図面の簡単な説明】
【０００５】
【図１】図１は、データブロックのセル番号がデータブロックに記憶されたエラー訂正コード（ＥＣＣ）値と一致しない場合にデータブロックから読み取られたデータを確認するための機構を有するシステムを図解する。
【図２】図２は、エラー検出モジュールのシード値を計算するために使用され得るオフセットテーブルを作成するオフセットテーブル作成モジュールを有する記憶デバイスを図解する。
【図３】図３は、データブロックのセル番号がデータブロックに記憶されたＥＣＣ値と一致しない場合にデータブロックから読み取られたデータを確認するための機構を有する別のシステムを図解する。
【図４】図４は、エラー検出モジュールのシード値を計算するために使用され得るオフセットテーブルを作成するための例示の動作を図解する。
【図５】図５は、データブロックのセル番号がデータブロックに記憶されたＥＣＣ値と一致しない場合にデータブロックから読み取られたデータを確認するための例示の動作を図解する。
【図６】図６は、ディスクアクセス動作中にターゲットデータブロックのインデックス付き配列内の１つ以上のデータブロックを選択的に除外するためのシステムの１つ以上の態様の実装に好適なコンピュータシステムのブロック図を開示する。
【発明を実施するための形態】
【０００６】
図１は、データブロックのセル番号がデータブロックに記憶されたエラー訂正コード（ＥＣＣ）値と一致しない場合にデータブロックのデータを確認するための機構（例えば、オフセットルックアップモジュール１１４）を有するシステム１００を図解する。システム１００は、１つ以上のアクセスコマンド１０４（例えば、読み取りまたは書き込みコマンド）を記憶ドライブ１０６に送信するホストコンピュータ１０２を含む。記憶ドライブ１０６は、有形のコンピュータ可読記憶媒体を有するデバイスであり、コンピュータによってアクセス可能なシーケンシャルユニット（例えば、セルまたはデータブロック）にデータを記憶することができる。そのような有形のコンピュータ可読媒体には、制限なく、磁気記憶ディスク、ソリッドステートドライブ、フラッシュメモリ、光学記憶ディスク、ランダムアクセスメモリ（ＲＡＭ）、読み取り専用メモリ（ＲＯＭＳ）等が含まれ得る。記憶ドライブ１０６は、一定の数の記憶バイトを保持することができるいくつかのデータブロック（例えば、データブロック１０８）を含む。
【０００７】
データブロックはそれぞれ、記憶デバイス１０６上の複数のデータブロックのインデックス付き配列内の１つのデータブロックの物理的位置と関連付けられた物理インデックス（例えば、データブロック１０８内の物理インデックス０）を有する。一実装例に従って、記憶ドライブ１０６上のシーケンシャルデータブロックは、連続して増加する物理インデックスと関連付けられる。データブロックはそれぞれ、データブロックの物理インデックスを符号化するＥＣＣ値を含むエラー訂正コード（ＥＣＣ）情報（図示されず）も含む。
【０００８】
記憶デバイス（例えば、記憶ドライブ１０６）は、デバイスの初期処理中に不良または使用不可能なものとして特定されるいくつかのデータブロックを含み得る。例えば、ディスクの表面上のブロック欠陥または不規則（例えば、サーマルアスペリティ）は、ディスクの１つ以上のブロックを使用不可能にし得る。実際の物理的欠陥を有しないデータブロックは、他の理由で記憶デバイスのデータ記憶動作から選択的に除外されるため、「使用不可能」であり得る。したがって、「使用不可能」という用語は、何らかの理由でデータ記憶動作における使用から選択的に除外される記憶ブロックを意味するために本明細書で使用される。
【０００９】
データが記憶ドライブ１０６上のデータブロックから読み直されるとき、エラー検出および訂正モジュール１１０は、データ完全性チェックを行って、読み取られたデータまたは書き込まれたデータが正しく、かつ正しいデータブロックがアクセスされたことを確実にする。この完全性チェックを行うために、エラー検出および訂正モジュール１１０は、シード値およびデータブロックから読み直されたデータを用いて、ＥＣＣ値を生成する。完全性チェックが成功した場合、生成されたＥＣＣ値は、データブロックに記憶されたＥＣＣ値と一致する。しかしながら、そのような確認は、概して、シード値がデータブロックの物理インデックスと一致しない場合、可能ではない。
【００１０】
図１において、物理インデックス１および４を有するデータブロックは、最初の工場処理動作中に使用不可能なものとして特定される。しかしながら、記憶ドライブ１０６は、使用不可能なブロック１および４を記憶デバイスのインデックス化スキームから除外するために再線形化されなくてもよい。むしろ、システム１００は、ファームウェアにおいて機能的なモジュールであり得るオフセットルックアップモジュール１１４を含むように製造されている。オフセットルックアップモジュール１１４は、エラー検出および訂正モジュール１１０に入力されるシード値がデータブロックの物理インデックスとは異なる場合であっても、エラー検出および訂正モジュール１１０がデータブロックから読み取られたデータの完全性を確認することを可能にする。
【００１１】
例示の図解において、ホストコンピュータ１０２は、４つの名前（例えば、Ｓａｒａｈ、Ｊａｋｅ、Ｊｕｎｅ、およびＣｈａｒｌｉｅ）を書き込むために４つのアクセスコマンド１０４をセル番号０〜３の４つのターゲットデータブロックに送信する。４つのターゲットデータブロックのそれぞれと関連付けられたデータ（例えば、名前）は、データブロックのそれぞれに対応する論理的ブロックアドレス（ＬＢＡ）とともに、記憶ドライブ１０６に送信される。記憶デバイス１００は、ホストコンピュータ１０２からのＬＢＡを、それぞれ、セル番号０、１、２、および３に変換する。その後、データ割り当てモジュール（図示されず）は、セル番号のそれぞれに対応するように物理ブロックインデックスを選択する。物理インデックス１および４を有する使用不可能なブロックへのデータの書き込みを回避するために、データ割り当てモジュールは、セル番号０、１、２、および３と関連付けられたデータが、それぞれ、物理データブロック０、２、３、および５に割り当てられ得ることを判定する。その結果として、Ｓａｒａｈ、Ｊａｋｅ、Ｊｕｎｅ、およびＣｈａｒｌｉｅという名前が物理データブロック０、２、３、および５に書き込まれる。
【００１２】
データが４つのターゲットデータブロックのうちの１つから読み直されるとき、オフセットルックアップモジュール１１４は、エラー検出および訂正モジュール１１０によって使用され得るシード値を計算して、ターゲットデータブロックから読み取られたデータの完全性を確認する。具体的には、オフセットルックアップモジュール１１４は、オフセットテーブル（図示されず）にアクセスし、ターゲットデータブロックのセル番号と関連付けられたオフセットを読み出す。セル番号およびオフセットを用いて、オフセットルックアップモジュールは、シード値を生成する。エラー検出および訂正モジュール１１０は、シード値および関連付けられたデータブロックから読み直されたデータを用いてＥＣＣ値を計算し、それはターゲットデータブロックに記憶されたＥＣＣ値と比較される。
【００１３】
例えば、データ「Ｓａｒａｈ」の完全性を確認するために、オフセットルックアップモジュール１１４は、セル番号０と関連付けられたオフセット０を読み出す。オフセット０を用いて、オフセットルックアップモジュール１１４は、シード値０を計算し、物理インデックス０を有するデータブロックに記憶されたＥＣＣ値と一致するＥＣＣ値を計算するために使用される。
【００１４】
同様に、データ「Ｊａｋｅ」の完全性を確認するために、オフセットルックアップモジュール１１４は、セル値１を用いて、オフセット１を読み出し、シード値２を計算する。エラー検出および訂正モジュール１１０は、シード２を用いて、物理インデックス２を有するデータブロックに記憶されたＥＣＣ値と一致するＥＣＣ値を計算する。
【００１５】
同様に、データ「Ｃｈａｒｌｉｅ」の完全性を確認するために、オフセットルックアップモジュール１１０は、セル番号３と関連付けられたオフセット２を読み出し、シード値５を計算する。エラー検出および訂正モジュール１１０は、シード値５および物理インデックス５を有するデータブロックから読み直されたデータを用いて、物理インデックス５を有するデータブロックに記憶されたＥＣＣ値と一致するＥＣＣ値を計算する。その結果として、データは、媒体上の使用可能なシーケンシャルデータブロックに書き込まれ、データの完全性が確認され、ドライブは、最初のドライブ処理中に再線形化されない。
【００１６】
図２は、エラー検出モジュール（図示されず）のシード値を計算し、ひいてはデータブロックから読み取られたデータの完全性を確認するために使用され得るオフセットテーブル２０４を作成するオフセットテーブル作成モジュール２０２を有する記憶デバイス２００を図解する。記憶デバイス２００は、一定の量のデータを記憶することができるいくつかのデータブロック（例えば、データブロック２０８および２１０）を有する記憶媒体２０６を含む。記憶媒体２０６は、任意の種類の有形のコンピュータ可読媒体であり得るが、一実装例において、記憶媒体は、磁気ディスクであり、データブロックは、ディスク上のデータトラックに沿ったシーケンシャルセクタである。別の実装例では、記憶媒体は、ソリッドステートドライブ（ＳＳＤ）である。
【００１７】
記憶媒体２０６上のデータブロックはそれぞれ、インデックス付き配列（例えば、記憶媒体２０６上に使用可能なデータブロックおよび使用不可能なデータブロックの両方を含む配列）上のデータブロックの物理的位置と関連付けられた物理インデックス（例えば、データブロック２１０内の物理インデックス０）を有する。さらに、データブロックはそれぞれ、データブロックの物理インデックスを符号化する符号化されたＥＥＣ情報（例えば、データブロック２１０内の符号化された物理インデックス「ＥＣＣ０」）を有する。工場初期化動作中（ＥＣＣ情報がデータブロックのそれぞれに符号化された後であり得る）、使用不可能なデータブロック（例えば、物理インデックス１および４を有する使用不可能なデータブロック）は、エラー検出モジュール（図示されず）によって記憶媒体２０６上で特定される。
【００１８】
使用不可能なブロックを記憶動作から選択的に除外する配列内のエラー確認データブロックの機構は、オフセットテーブル作成モジュール２０２を用いて実装される。オフセットテーブル作成モジュール２０２は、使用可能なデータブロックの物理インデックスを対応するセル番号と関連付け（セル番号は、使用可能なデータブロックの連続した配列を集合的に表す）、オフセットテーブル２０４内に選択されたセル番号に関連した増分オフセット値を記録する。その後、そのようなオフセット値を用いて、ディスク記憶動作中に書き込まれ、かつ読み取られたデータの完全性を確認することができる。
【００１９】
図２は、オフセットテーブル２０４のオフセットを抽出するために使用される論理を例示する論理テーブル２１４（メモリ内に含まれても含まれなくてもよい）も含む。具体的には、論理テーブル２１４は、記憶媒体２０６上の使用可能なデータブロックおよび使用不可能なデータブロックの両方に対応する物理インデックスを含む「物理インデックス」欄を有する。論理テーブル２１４は、それぞれの使用可能なデータブロックに関連したセル番号を含む「セル番号」欄も有する。例えば、物理インデックス１および４は、そのようなデータブロックがエラー検出モジュールによって使用不可能なものとして特定されたため、オフセットテーブル２０４内に対応するセル番号を有しない。したがって、一連の連続したセル番号０、１、２、および３は、それぞれ、使用可能なシーケンシャルデータブロック０、２、３、および５の物理インデックスに対応する。オフセット（例えば、論理テーブル２１４内の全体のオフセット値）は、データブロックの物理インデックスとセル番号との差を表す。全体のオフセット値は、インデックス付き配列内の使用不可能なデータブロックの後のそれぞれの使用可能なデータブロックに関連して１だけ増分する。例えば、全体のオフセット値は、物理インデックス２が、物理インデックス１を有する使用不可能なデータブロックの後の次の使用可能なデータブロックに対応するため、物理インデックス２に関連して１だけ増分する。同様に、全体のオフセットは、物理インデックス５が、物理インデックス４を有する使用不可能なデータブロックの後の次の使用可能なデータブロックに対応するため、この場合もやはり、物理インデックス５に関連して１だけ増分する。論理テーブル２１４内に図解される情報は、オフセットテーブル作成モジュール２０２によって、オフセットテーブル２０４に凝縮され、記憶デバイス２００のメモリに記憶される。
【００２０】
オフセットテーブル作成モジュール２０２は、オフセットテーブル２０４内に記憶デバイス上のすべての使用可能な物理インデックスと関連付けられたオフセットを記録しない。むしろ、オフセットは、増分の影響を受けた第１のシーケンシャル物理インデックスを有するそれぞれの使用可能なデータブロック（例えば、物理インデックスのインデックス付き配列内の使用不可能なデータブロックの後の第１の使用可能なデータブロック）に関連して記録される。例えば、セル番号１および２は、両方ともにオフセット１の影響を受ける。しかしながら、物理インデックス２は、オフセット１の影響を受けた第１の物理インデックスである。したがって、オフセット１は、物理インデックス２に関連して記録される。
【００２１】
オフセットテーブル作成モジュール２０２が記憶デバイス２００（例えば、ファームウェア内のモジュール）の内部にあるように図解されているが、オフセットテーブル作成モジュール２０２および／または論理的マップモジュール２０２は、記憶デバイス２００と通信可能に接続された外部デバイスのソフトウェアまたはファームウェアであり得る。オフセットテーブル作成モジュール２０２によって作成されたオフセットテーブル２０４は、記憶デバイス２００の寿命期間にわたってアクセスされ得るように、記憶デバイス２００のファームウェア内の記憶デバイス等の記憶デバイス２００に関連して保存される。具体的には、オフセットテーブル２０４は、データがデータブロックから読み取られるたびにアクセスされ、データブロックに記憶されたデータの完全性を確認するエラー検出および訂正モジュールのシード値を計算するために使用され得る。
【００２２】
図３は、データブロックのセル番号がデータブロックに記憶されたＥＣＣ値と一致しない場合にデータブロックから読み取られたデータを確認するための機構（例えば、オフセットルックアップモジュール３１０）を有する別のシステム３００を図解する。このシステムは、１つ以上のアクセスコマンド３０４（例えば、読み取りおよび書き込みコマンド）を記憶デバイス３０６に送信するホストコンピュータ（図示されず）を含む。記憶デバイス３０６は、オフセットルックアップモジュール３２０、オフセットテーブル３２２、および記憶媒体３１２も含む。記憶媒体３１２は、データを記憶するためにいくつかのデータブロック（例えば、データブロック３０８）を含む。データブロックはそれぞれ、記憶媒体３１２上の複数のデータブロックのインデックス付き配列内の１つのデータブロックの物理的位置と関連付けられた物理インデックス（例えば、データブロック３０８内の物理インデックス０）を有する。さらに、データブロックはそれぞれ、データブロックの物理インデックスを符号化するＥＥＣ情報を含む。例えば、データブロック３０８は、データブロックの物理インデックス「０」を符号化するＥＣＣ値「ＥＣＣ０」を有する。
【００２３】
記憶デバイス３０６の工場処理動作中に、使用不可能なデータブロック（例えば、使用不可能なデータブロック３１４および３１８）が特定される。図２に記載されるオフセットテーブル作成モジュールと同一または同様であり得るオフセットテーブル作成モジュール（図示されず）は、オフセットテーブル３２２を作成する。オフセットテーブル３２２は、「セル番号」と題された第１の欄を含む。ここで、セル番号配列は、使用可能なブロックの連続した配列を表す。選択されたセル番号のみがオフセットテーブル３２２内に列記される。オフセットテーブル３２２は、「全体のオフセット」と題された欄も含み、これは、所与のセル番号をシードとしてエラー検出および訂正モジュール３１０に渡され得る値に変換するために使用され得るオフセットを含む。
【００２４】
図３において、ホストコンピュータは、４つの名前４つの名前（例えば、Ｓａｒａｈ、Ｊａｋｅ、Ｊｕｎｅ、およびＣｈａｒｌｉｅ）を書き込むために、アクセスコマンド３０４をセル番号０、１、２、および３と関連付けられた４つのターゲットデータブロックに送信する。具体的には、ホストは、ＬＢＡを記憶デバイス３０６に送信し、記憶デバイスは、ＬＢＡを関連付けられたセル番号０〜３に変換する。現在の技術を用いて、記憶デバイスは、セル番号０〜３と関連付けられたデータが、それぞれ、物理インデックス０、２、３、および５に書き込まれ得ることを判定する。
【００２５】
データがその後にターゲットデータブロックのうちの１つから読み直されるとき、記憶デバイス３０６のオフセットルックアップモジュール３２０は、オフセットテーブル３２２にアクセスし、それぞれのセル番号と関連付けられたオフセットを読み出す。例示の図解において、オフセットルックアップモジュール３２０は、セル番号０と関連付けられたオフセット０、セル番号１および２と関連付けられたオフセット１、ならびにセル番号３と関連付けられたオフセット２を読み出す。それぞれのターゲットデータブロックのセル番号を関連付けられたオフセットに追加することによって、オフセットルックアップモジュール３１０は、エラー検出および訂正モジュール３１０に入力される（それぞれのターゲットデータブロックの）シード値を計算する。エラー検出および訂正モジュール３１０は、シード値を用いて、ターゲットデータブロックに記憶されたデータの完全性を確認する。その結果として、エラー検出および訂正モジュール３１０は、ＥＣＣ値を計算し、かつそれをターゲットデータブロックに記憶されたＥＣＣ値と比較することによって、データ内のエラーを検出および訂正することができる。計算されたＥＣＣ値および記憶されたＥＣＣ値が完全性条件を満たす場合（例えば、その値がある他の相関と一致するか、またはそれを満たす場合）、ターゲットデータブロックに書き込まれたデータの完全性が確認される。
【００２６】
例えば、「Ｊａｋｅ」という名前が正しく書き込まれ、かつ正しいデータブロックに書き込まれることを確実にするために、（関連付けられたセル番号およびオフセットテーブル３２２からのオフセットとともに追加することによって計算された）物理インデックス２は、物理インデックス２（例えば、「Ｊａｋｅ」）を有するセルに書き込まれたデータとともにエラー検出および訂正モジュール３１０に入力される。これらの入力を用いて、エラー検出および訂正モジュール３１０は、物理インデックス２（例えば、ＥＣＣ２）を有するデータブロックに記憶されたＥＣＣ値と一致するＥＣＣ値（例えば、ＥＣＣ２）を計算する。
【００２７】
エラー検出および訂正モジュール３１０とオフセットルックアップモジュール３２０は、両方ともに記憶デバイス３０６（例えば、ファームウェア）の内部にあるように図解されている。しかしながら、これらのモジュールのいずれかまたは両方は、記憶デバイス３００と通信可能に接続された外部デバイスのソフトウェアまたはファームウェアでもあり得る。
【００２８】
図４は、エラー検出モジュールのシード値を計算するために使用され得るオフセットテーブルを作成するための例示の動作を図解する。指定動作４０５は、使用不可能なものとしてインデックス付き配列内のデータブロックを指定し、それぞれのデータブロックは、物理インデックスと関連付けられる。インデックス付き配列は、記憶デバイス上の使用可能なデータブロックおよび使用不可能なデータブロックの両方を含む配列である。一実装例において、記憶デバイス上のシーケンシャルデータブロックは、インデックス付き配列内の連続して増加する物理インデックスに割り当てられる。関連付け動作４１０は、セル番号をインデックス付き配列内の特定されたデータブロックの後の次の使用可能なデータブロックと関連付ける。記録動作４１５は、オフセットテーブル内に次の使用可能なデータブロックのセル番号に関連したオフセットを記録し、そのオフセットを使用して、次の使用可能なデータブロックのＥＣＣ値を作成する。一実装例において、オフセットは、関連付けられたセル番号に追加されて、ＥＣＣ値を計算するエラー検出および訂正モジュールのシード値を作成する。計算されたＥＣＣ値および次の使用可能なデータブロック上で符号化されたＥＣＣ値は、完全性条件を満たし、次の使用可能なデータブロックに書き込まれたデータの完全性を確実にする。
【００２９】
一実装例において、記録されたオフセットは、次の使用可能なデータブロックのセル番号と物理インデックスとの間の差分である。そのオフセットは、オフセットの影響を受けたインデックス付き配列内の第１のデータブロックに関連したオフセットテーブル内に記録され得る。一実装例において、インデックス付き配列内のデータブロックは、磁気ディスク上のデータトラックに沿った連続したセクタである。
【００３０】
一実装例において、例示の動作４００は、記憶デバイスの最初の工場初期化中に行われる。動作４０５〜４１５は、工場で複数回繰り返され得、オフセットは、ディスク上のいくつかの選択的に除外された（すなわち、使用不可能な）データブロックのそれぞれに関連して記録され得る。
【００３１】
図５は、データブロックのセル番号がデータブロックに記憶されたＥＣＣ値と一致しないときにデータブロックから読み取られたデータを確認するための例示の動作５００を図解する。アクセス動作５０５は、セル番号に基づいて複数のデータブロックのインデックス付き配列を有する１つのデータブロックにアクセスし、インデックス付き配列内のそれぞれのデータブロックは、記憶されたＥＣＣ値を含む。一実装例において、これらの複数のデータブロックのインデックス付き配列は、記憶デバイス内の連続したデータブロックの配列である。別の実装例では、これらの複数のデータブロックは、磁気媒体ディスク内のデータトラックに沿ったセクタである。
【００３２】
読み出し動作５１０は、データブロックのセル番号と関連付けられたオフセットを読み出す。一実装例において、読み出し動作５１０は、記憶デバイスのファームウェアに記憶され得るオフセットアクセステーブルにアクセスすることによってオフセットを読み出す。
【００３３】
生成動作５１５は、セル番号および読み出されたオフセットに基づいてＥＣＣ値を生成する。一実装例において、判定動作５１５は、エラー検出および訂正モジュールをセル番号およびオフセットの合計でシード処理することによってＥＣＣ値を生成する。
【００３４】
判定動作５２０は、生成されたＥＣＣ値および記憶されたＥＣＣ値が完全性条件を満たすかを判定する。一実装例において、完全性条件は、生成されたＥＣＣ値および符号化されたＥＣＣ値が等しい場合に満たされる。
【００３５】
図６は、ディスクアクセス動作中にターゲットデータブロックのインデックス付き配列内の１つ以上のデータブロックを選択的に除外するためのシステムの１つ以上の態様の実装に好適なコンピュータシステム６００のブロック図を開示する。一実装例において、コンピュータシステム６００は、オフセットテーブル作成モジュール、エラー検出および訂正モジュール、ならびに／またはエラー検出および訂正動作のためにオフセットを読み出してデータブロックと関連付けられたシードを計算するオフセットルックアップモジュールを有する記憶デバイスと通信可能に接続される。
【００３６】
コンピュータシステム６００は、有形のコンピュータ可読記憶媒体に組み込まれたコンピュータプログラム製品を実行して、コンピュータプロセスを実行することができる。有形のコンピュータ可読記憶媒体は、搬送波または他の信号に組み込まれない。データおよびプログラムファイルは、それらのファイルを読み取り、かつ１つ以上のプロセッサを用いてその中のプログラムを実行するコンピュータシステム６００に入力され得る。コンピュータシステムの要素のいくつかが図６に示されており、プロセッサ６０２は、入出力（Ｉ／Ｏ）部分６０４、中央処理装置（ＣＰＵ）６０６、およびメモリ部分６０８を有するように示されている。コンピューティングシステム６００のプロセッサ６０２が単一の中央処理装置６０６または複数の処理装置を備えるように、１つ以上のプロセッサ６０２が存在し得る。コンピューティングシステム６００は、従来のコンピュータ、分散型コンピュータ、または任意の他の種類のコンピュータであり得る。記載される技術は、メモリ６０８、ディスク記憶装置６１２、または取り外し可能なメモリ６１８にロードされるソフトウェアに任意で実装される。
【００３７】
例示の実装例において、エラー検出および訂正モジュール、オフセットルックアップモジュール、ならびに／またはオフセットテーブル作成モジュールは、メモリ６０８および／または記憶装置６１２に記憶され、かつプロセッサ６０７によって実行される命令によって具現化され得る。さらに、ローカルコンピューティングシステム、リモートデータソースおよび／またはサービス、ならびに他の関連付けられた論理は、作業負荷タスクを適応的に分配して、システム性能を向上させるように構成され得るファームウェア、ハードウェア、および／またはソフトウェアを表す。エラー検出および訂正モジュール、オフセットルックアップモジュール、ならびに／またはオフセットテーブル作成モジュールは、汎用コンピュータおよび専門ソフトウェア（サービスソフトウェアを実行するサーバ等）、ならびに特殊用途のコンピューティングシステムおよび専門ソフトウェア（サービスソフトウェアを実行するモバイルデバイスまたはネットアプライアンス等）、または他のコンピューティング構成を用いて実装され得る。加えて、オフセットテーブル等のプログラムデータは、メモリ６０８および／または記憶装置６１２に記憶され、かつプロセッサ６０２によって実行され得る。
【００３８】
本明細書に記載の本発明の実装例は、１つ以上のコンピュータシステムにおける論理ステップとして実装される。本発明の論理動作は、（１）１つ以上のコンピュータシステムを実行するプロセッサ実装ステップの配列、および（２）１つ以上のコンピュータシステム内の相互接続した機械または回路モジュールとして実装される。実装例は、本発明を実装するコンピュータシステムの性能要件に応じて選択できる問題である。したがって、本明細書に記載の本発明の実施形態を構成する論理動作は、動作、ステップ、目的、またはモジュールと様々に称される。さらに、論理動作が、別途明確に特許請求されない限り、所望通りに追加および除外することによって任意の順序で行われ得るか、または特定の順序が特許請求言語によって本質的に必要とされることを理解されたい。
【００３９】
上述の明細書、実施例、およびデータは、本発明の例示的な実装例の構造および使用の完全な説明を提供する。本発明の多くの実装例が本発明の精神および範囲から逸脱することなく作成され得るため、本発明は、以下に添付された特許請求の範囲に属する。さらに、異なる実装例の構造的特徴は、列挙される特許請求の範囲から逸脱することなく、さらに別の実装例に組み込まれ得る。
【図１】
2014175001.tif 000003
【図２】
2014175001.tif 000004
【図３】
2014175001.tif 000005
【図４】
2014175001.tif 000006
【図５】
2014175001.tif 000007
【図６】
2014175001.tif 000008
【手続補正書】
【提出日】平成26年6月17日(2014.6.17)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
セル番号に基づいて複数のデータブロックのインデックス付き配列内の１つのデータブロックにアクセスすることであって、前記インデックス付き配列内のそれぞれのデータブロックが、記憶されたＥＣＣ値を含むことと、
前記１つのデータブロックの前記セル番号と関連付けられたオフセットを読み出すことと、
前記セル番号および前記オフセットに基づいてＥＣＣ値を生成することと、
前記生成されたＥＣＣ値および前記記憶されたＥＣＣ値が完全性条件を満たすかを判定することと、を含む、方法。
【請求項２】
エラー検出および訂正モジュールを前記セル番号および前記オフセットに基づいた値でシード処理することをさらに含む、請求項１に記載の方法。
【請求項３】
前記エラー検出および訂正モジュールをシード処理することが、
前記エラー検出および訂正モジュールを前記セル番号および前記オフセットの合計値でシード処理することをさらに含む、請求項２に記載の方法。
【請求項４】
前記オフセットが、記憶デバイスのファームウェアに記憶されたオフセットテーブルから読み出される、請求項１から請求項３のいずれか１項に記載の方法。
【請求項５】
前記オフセットテーブルが、工場初期化動作中に作成される、請求項４に記載の方法。
【請求項６】
データブロックの前記インデックス付き配列が、磁気ディスク上のデータトラックに沿った連続したセクタである、請求項１から請求項５のいずれか１項に記載の方法。
【請求項７】
前記インデックス付き配列が、記憶デバイス上のシーケンシャルデータブロックと関連付けられた連続して増加するインデックスを含む、請求項１から請求項６のいずれか１項に記載の方法。
【請求項８】
コンピュータシステム上でコンピュータプロセスを実行するためのコンピュータ実行可能命令を符号化した状態で記憶する、１つ以上の有形のコンピュータ可読記憶媒体であって、前記コンピュータプロセスが、
セル番号に基づいて複数のデータブロックのインデックス付き配列内の１つのデータブロックにアクセスすることであって、前記インデックス付き配列内のそれぞれのデータブロックが、記憶されたＥＣＣ値を含むことと、
前記１つのデータブロックの前記セル番号と関連付けられたオフセットを読み出すことと、
前記セル番号および前記オフセットに基づいてＥＣＣ値を生成することと、
前記生成されたＥＣＣ値および前記記憶されたＥＣＣ値が完全性条件を満たすかを判定することと、を含む、１つ以上の有形のコンピュータ可読記憶媒体。
【請求項９】
前記コンピュータプロセスが、
エラー検出および訂正モジュールを前記セル番号および前記オフセットに基づいた値でシード処理することをさらに含む、請求項８に記載の１つ以上の有形のコンピュータ可読記憶媒体。
【請求項１０】
前記オフセットが、記憶デバイスのファームウェアに記憶されたオフセットテーブルから読み出される、請求項８または請求項９に記載の１つ以上の有形のコンピュータ可読記憶媒体。
【請求項１１】
前記オフセットテーブルが、工場初期化動作中に作成される、請求項１０に記載の１つ以上の有形のコンピュータ可読記憶媒体。
【請求項１２】
データブロックの前記インデックス付き配列が、磁気ディスク上のデータトラックに沿った連続したセクタである、請求項８から請求項１１のいずれか１項に記載の１つ以上の有形のコンピュータ可読記憶媒体。
【請求項１３】
前記インデックス付き配列が、記憶デバイス上のシーケンシャルデータブロックと関連付けられた連続して増加するインデックスを含む、請求項８から請求項１２のいずれか１項に記載の１つ以上の有形のコンピュータ可読記憶媒体。
【請求項１４】
記憶デバイスと、
インデックス付き配列内のデータブロックのセル番号と関連付けられたオフセットを読み出すように構成されるオフセットルックアップモジュールであって、前記インデックス付き配列内のそれぞれのデータブロックが、記憶されたＥＣＣ値を含む、オフセットルックアップモジュールと、
エラー検出および訂正モジュールであって、
前記セル番号および前記オフセットに基づいてＥＣＣ値を生成することと、
前記生成されたＥＣＣ値および前記記憶されたＥＣＣ値が完全性条件を満たすかを判定することと、
を行うように構成される、エラー検出および訂正モジュールと、
を備える、システム。
【請求項１５】
前記エラー検出および訂正モジュールがさらに、前記セル番号および前記オフセットの合計であるシードを用いて前記ＥＣＣ値を生成するように構成される、請求項１４に記載のシステム。
【請求項１６】
前記オフセットルックアップモジュールが、記憶デバイスのファームウェアに記憶されたオフセットテーブルから前記オフセットを読み出すように構成される、請求項１４またたは請求項１５に記載のシステム。
【請求項１７】
前記オフセットテーブルが、工場初期化動作中に作成される、請求項１６に記載のシステム。
【請求項１８】
データブロックの前記インデックス付き配列が、磁気ディスク上のデータトラックに沿った連続したセクタである、請求項１４から請求項１７のいずれか１項に記載のシステム。
【請求項１９】
前記インデックス付き配列が、記憶デバイス上のシーケンシャルデータブロックと関連付けられた連続して増加するインデックスを含む、請求項１４から請求項１８のいずれか１項に記載のシステム。
【請求項２０】
前記エラー検出および訂正モジュールが、前記生成されたＥＣＣ値が前記記憶されたＥＣＣ値と等しい場合に、前記完全性条件が満たされたと判定する、請求項１４から請求項１９のいずれか１項に記載のシステム。