(57)【要約】  データ記憶プロセスにおいてデータ妥当性を確保するための装置、システム及び方法が開示される。データ受信モジュール２０２が記憶ブロック及び既存のパリティ情報を受信する。記憶ブロック及び既存のパリティ情報を受信するのに応答して、ＥＣＣ生成モジュール２０４が記憶ブロックのデータのための誤り訂正符号（「ＥＣＣ」）チェックビットを生成する。記憶ブロックのためのＥＣＣチェックビットはブロック符号、畳み込み符号等を用いて生成される。記憶前整合性モジュール２０６が、記憶ブロックのデータ、既存のパリティ情報及びＥＣＣチェックビットを用いて、該記憶ブロックのデータ、該既存のパリティ情報及び該ＥＣＣチェックビットが整合しているか否かを判断する。データ記憶モジュール２０８が、既存のパリティ情報を格納することなく、記憶ブロックのデータ及びＥＣＣチェックビットをデータ記憶デバイス１０６のために格納する。
2011516984.tif 000002
【特許請求の範囲】
【請求項１】
データ保護を拡張する装置であって、該装置は、
記憶ブロックと該記憶ブロックのための既存のパリティ情報とを受信するデータ受信モジュールであって、該記憶ブロックはデータ記憶デバイス上に一緒に格納されるデータを含み、該記憶ブロックは１又は複数のデータパケットの少なくとも一部を含み、前記既存のパリティ情報は前記記憶ブロックの前記データのために生成される、データ受信モジュールと、
前記データ記憶モジュールが前記記憶ブロック及び前記既存のパリティ情報を受信するのに応答して、前記記憶ブロックの前記データのための誤り訂正符号（「ＥＣＣ」）チェックビットを生成するＥＣＣ生成モジュールであって、前記記憶ブロックのための該ＥＣＣチェックビットは、ブロック符号及び畳み込み符号の一方を用いて生成される、ＥＣＣ生成モジュールと、
前記記憶ブロックのデータと、前記既存のパリティ情報と、前記ＥＣＣチェックビットとを用いて、前記記憶ブロックのデータ、前記既存のパリティ情報及び前記ＥＣＣチェックビットが整合しているか否かを判断する記憶前整合性モジュールと、
前記記憶ブロックの前記データと、前記記憶ブロックのための前記ＥＣＣチェックビットとを前記データ記憶デバイス上に格納するデータ記憶モジュールであって、前記記憶ブロックのための前記既存のパリティ情報は前記データ記憶デバイス上に格納されない、データ記憶モジュールと
を備えることを特徴とする装置。
【請求項２】
請求項１記載の装置において、前記記憶前整合性モジュールは前記ＥＣＣ生成モジュールから独立していることを特徴とする装置。
【請求項３】
請求項２記載の装置において、該装置はさらに、前記ＥＣＣチェックビットを用いてＥＣＣチェックビットパリティ情報を生成するＥＣＣチェックビットパリティモジュールを備え、前記記憶前整合性モジュールは、前記ＥＣＣチェックビットパリティ情報を用いて、整合性を判断することを特徴とする装置。
【請求項４】
請求項３記載の装置において、前記記憶前整合性モジュールは、前記ＥＣＣ生成モジュール及び前記ＥＣＣチェックビットパリティモジュールから独立した機能において、前記記憶ブロックの前記データ及び前記既存のパリティ情報を用いて、代替のパリティ情報を生成し、該代替のパリティ情報を前記ＥＣＣチェックビットパリティ情報と照合して、整合性を判断することを特徴とする請求項３に記載の装置。
【請求項５】
請求項１記載の装置において、該装置はさらに、
読出し要求に応答して、前記データ記憶デバイス上に格納される１又は複数のデータパケットからのデータを有する記憶ブロックと、該記憶ブロックのためのＥＣＣチェックビットとを検索するデータ検索モジュールと、
該検索された記憶ブロックのデータ、及び前記ＥＣＣチェックビットのためのパリティ情報を生成するパリティ生成モジュールと、
前記記憶ブロックと共に格納される前記ＥＣＣチェックビットを用いてＥＣＣシンドロームを生成し、前記検索された記憶ブロックの前記データ及び前記生成されたパリティが誤りを有するか否かを判断するＥＣＣ検出モジュールと、
前記検索された記憶ブロックからの前記データと、前記パリティ生成モジュールによって生成されたパリティ情報と、前記ＥＣＣシンドロームとを用いて、該データ、該生成されたパリティ情報及び該ＥＣＣシンドロームが整合しているか否かを判断する記憶後整合性モジュールと
を備えることを特徴とする装置。
【請求項６】
請求項５記載の装置において、該装置はさらに、前記ＥＣＣ検出モジュールが、前記検索された記憶ブロックの前記データ及び前記生成されたパリティが誤りを有するものと判断するのに応答して、前記記憶ブロックの前記データ内の１又は複数の誤りを訂正し、パリティビットのうちの１又は複数を更新するＥＣＣ訂正モジュールを備えることを特徴とする装置。
【請求項７】
請求項５記載の装置において、前記記憶後整合性モジュールは前記ＥＣＣ検出モジュールから独立していることを特徴とする装置。
【請求項８】
請求項７記載の装置において、該装置はさらに、前記ＥＣＣシンドロームを用いてＥＣＣシンドロームパリティ情報を生成するＥＣＣシンドロームパリティモジュールを備え、前記記憶後整合性モジュールは前記ＥＣＣシンドロームパリティ情報を用いて整合性を判断することを特徴とする装置。
【請求項９】
請求項８記載の装置において、前記記憶後整合性モジュールは、前記ＥＣＣ検出モジュール及び前記ＥＣＣシンドロームパリティモジュールから独立した機能において、前記検索された記憶ブロックの前記データ及び前記生成されたパリティ情報を用いて、代替のパリティ情報を生成し、該代替のパリティ情報を前記ＥＣＣシンドロームパリティ情報と照合して、整合性を判断することを特徴とする装置。
【請求項１０】
請求項５記載の装置において、該装置はさらに、前記ＥＣＣ検出モジュールが前記検索された記憶ブロックの前記データが誤りを有するか否かを判断し終えるのに応答して、前記検索された記憶ブロック及び前記ＥＣＣチェックビットからの前記生成されたパリティ情報を用いて、前記検索された記憶ブロック及び前記ＥＣＣチェックビットのパリティを検査する検索後パリティチェックモジュールを備えることを特徴とする装置。
【請求項１１】
請求項１記載の装置において、前記ＥＣＣ生成モジュールはさらに、前記記憶ブロックの前記既存のパリティ情報のための誤り検査符号を生成し、前記誤り検査符号は前記記憶ブロックのための前記ＥＣＣチェックビットと共に格納されることを特徴とする装置。
【請求項１２】
請求項１１記載の装置において、前記既存のパリティ情報のための前記誤り検査符号は、パリティチェックビット、検査符号及びＥＣＣチェックビットの一方を含むことを特徴とする装置。
【請求項１３】
請求項１記載の装置において、前記ＥＣＣ生成モジュールはさらに、前記生成されたＥＣＣチェックビットがデータとパリティ情報とを区別しないように、前記既存のパリティ情報と合成される前記記憶ブロックの前記データのためのＥＣＣチェックビットを生成することを特徴とする装置。
【請求項１４】
請求項１記載の装置において、該装置はさらに、前記既存のパリティ情報及び前記ＥＣＣチェックビットの前記パリティを用いて、前記データ受信モジュールによって受信される前記記憶ブロックの前記データのパリティを検査する記憶前パリティチェックモジュールを備え、該記憶前パリティチェックモジュールは、前記記憶ブロック及び前記ＥＣＣチェックを格納する前にパリティチェックを行うことを特徴とする装置。
【請求項１５】
請求項１記載の装置において、データパケットは記憶要求と共に受信されるデータセグメントの少なくとも一部を含み、前記装置はさらに復号化モジュールを備え、該復号化モジュールは、誤り検出能力に隙間がないように単一ステップにおいて、前記データセグメントの前記データを復号し、結果として、パリティ及びデータセグメントの符号化されていないデータが生成されることを特徴とする装置。
【請求項１６】
請求項１記載の装置において、データパケットは記憶要求と共に受信されるデータセグメントの少なくとも一部を含み、前記装置はさらに、前記復号化モジュールが前記パリティを生成してから、前記データ受信モジュールが前記パリティ及び前記記憶ブロックの形のデータを受信するまで、前記データセグメントの前記データのためのパリティ情報を用いることによって誤り検出能力に隙間がないように保持するパリティ整合性モジュールを備え、該パリティ整合性モジュールは、データの暗号化、データの圧縮、及びユーザ定義による用途特有の機能の少なくとも１つを実施中にパリティを保持することを特徴とする装置。
【請求項１７】
請求項１記載の装置において、前記記憶ブロックのための前記ＥＣＣチェックビットは、ＢＣＨ符号、リード−ソロモン符号、及びターボ符号のうちの１つを用いて生成されることを特徴とする装置。
【請求項１８】
請求項１記載の装置において、前記データ記憶モジュールは、前記ＥＣＣチェックビットのパリティ情報を格納しないことを特徴とする装置。
【請求項１９】
データ保護を拡張するためのシステムであって、該システムは、
データ記憶デバイスと、
前記データ記憶デバイス内のデータの記憶を制御する記憶コントローラと、
記憶ブロックと、該記憶ブロックのための既存のパリティ情報とを受信するデータ受信モジュールであって、該記憶ブロックはデータ記憶デバイス上に一緒に格納されるデータを含み、該記憶ブロックは１又は複数のデータパケットのうちの少なくとも一部を含み、前記既存のパリティ情報は前記記憶ブロックの前記データのために生成される、データ受信モジュールと、
前記データ記憶モジュールが前記記憶ブロック及び前記既存のパリティ情報を受信するのに応答して、前記記憶ブロックの前記データのための誤り訂正符号（「ＥＣＣ」）チェックビットを生成するＥＣＣ生成モジュールであって、前記記憶ブロックのための該ＥＣＣチェックビットをブロック符号及び畳み込み符号の一方を用いて生成するＥＣＣ生成モジュールと、
前記記憶ブロックの前記データと、前記既存のパリティ情報と、前記ＥＣＣチェックビットとを用いて、前記記憶ブロックの前記データ、前記既存のパリティ情報及び前記ＥＣＣチェックビットが整合しているか否かを判断する記憶前整合性モジュールと、
前記記憶前整合性モジュールが前記記憶ブロックの前記データ、前記既存のパリティ情報及び前記ＥＣＣチェックビットが整合していると判断するのに応答して、前記記憶ブロックの前記データと、前記記憶ブロックのための前記ＥＣＣチェックビットとを前記データ記憶デバイス上に格納するデータ記憶モジュールであって、前記記憶ブロックのための前記既存のパリティ情報は前記データ記憶デバイス上に格納されない、データ記憶モジュールと
を備えることを特徴とするデータ保護を拡張するためのシステム。
【請求項２０】
請求項１９記載のシステムにおいて、該システムは更に、１又は複数のシステムバス及びネットワークを備え、前記記憶コントローラは、システムバス又はネットワークのうちの少なくとも一方を介して、ＣＰＵ及びメモリのうちの一方からデータセグメントを受信し、該データセグメントは、１又は複数のデータパケットのデータを含み、前記データセグメントは、前記データセグメントを格納するための記憶要求と共に受信されることを特徴とするシステム。
【請求項２１】
請求項１９記載のシステムにおいて、該システムはさらに、前記システムによる前記データの受信から、前記データ記憶モジュールが前記データセグメントの前記データを格納するまで、誤り検出能力に隙間を生じることなく前記データの保護を保持する全体整合性モジュールを備え、該全体整合性モジュールは、１つのデータ保護方式から別のデータ保護方式への各移行に関連付けられるサブモジュールをさらに備えることを特徴とするシステム。
【請求項２２】
請求項２１記載のシステムにおいて、前記全体整合性モジュールは復号化モジュールをさらに備え、該復号化モジュールは、前記データが符号化された形になるときから、前記データがパリティ情報を含むときまで、誤り検出能力に隙間がないように単一のプロセスステップにおいて前記データセグメントのデータを復号し、その結果として、前記データセグメントのパリティ及び符号化されていないデータが生成されることを特徴とするシステム。
【請求項２３】
請求項２１記載のシステムにおいて、前記全体整合性モジュールは符号化モジュールをさらに備え、該符号化モジュールは、前記データがパリティ情報を含むときから、前記データが符号化された形になるまで、誤り検出能力に隙間がないように単一のプロセスステップにおいて、パリティ情報で保護された前記データセグメントのデータを符号化し、結果として、前記データセグメントの符号化されたデータが生成されることを特徴とするシステム。
【請求項２４】
請求項２１記載のシステムにおいて、前記全体整合性モジュールはパリティ整合性モジュールをさらに備え、該パリティ整合性モジュールは、前記データセグメントのデータのためのパリティ情報が生成されるときから、前記データ受信モジュールが前記既存のパリティ情報及び前記記憶ブロックの形のデータを受信するまで、及び、前記データ検索モジュールが前記記憶ブロックを検索すると共に、前記パリティ生成モジュールが前記データのためのパリティ情報を生成するときから、パリティ情報を用いて保護されるデータが、前記データセグメントのデータを符号化する符号化モジュールによって符号化されるまで、前記データセグメントのデータのためのパリティ情報を用いることによって、誤り検出能力に隙間がないように保持し、該パリティ整合性モジュールは、データの暗号化、データの圧縮、データの暗号解読、データの圧縮解除及びユーザ定義による用途特有の機能のうちの少なくとも１つを実施中にパリティを保持することを特徴とするシステム。
【請求項２５】
請求項２１記載のシステムにおいて、該システムはさらに、前記記憶コントローラが前記データセグメントを受信するＣＰＵ又はメモリのうちの少なくとも１つを備えることを特徴とする装置。
【請求項２６】
請求項２１記載のシステムにおいて、前記全体整合性モジュールはさらに、前記データが前記データ記憶デバイスから検索されるときから、前記データが前記システムから引き渡されるまで、誤り検出能力に隙間がないように前記データの保護を保持することを特徴とする装置。
【請求項２７】
データ保護を拡張するための動作を実行するためのコンピュータ使用可能プログラムコードを有するコンピュータ読取可能記憶媒体を含むコンピュータプログラム製品であって、該コンピュータプログラム製品は、
記憶ブロックと、該記憶ブロックのための既存のパリティ情報とを受信するステップであって、該記憶ブロックはデータ記憶デバイス上に一緒に格納されるデータを含み、該記憶ブロックは１又は複数のデータパケットの少なくとも一部を含み、前記既存のパリティ情報は前記記憶ブロックの前記データのために生成される、受信するステップと、
前記記憶ブロック及び前記既存のパリティ情報を受信するのに応答して、前記記憶ブロックのデータのための誤り訂正符号（「ＥＣＣ」）チェックビットを生成するステップであって、前記記憶ブロックのための該ＥＣＣチェックビットは、ブロック符号、畳み込み符号のうちの１つを用いて生成される、生成するステップと、
前記記憶ブロックの前記データと、前記既存のパリティ情報と、前記ＥＣＣチェックビットとを用いて、前記記憶ブロックの前記データ、前記既存のパリティ情報及び前記ＥＣＣチェックビットが整合しているか否かを判断するステップと、
前記記憶ブロックの前記データ、前記既存のパリティ情報及び前記ＥＣＣチェックビットが整合していると判断するのに応答して、前記データ記憶デバイス上に前記記憶ブロックのデータ及び前記記憶ブロックのための前記ＥＣＣチェックビットを格納するステップであって、前記記憶ブロックのための前記既存のパリティ情報は前記データ記憶デバイス上には格納されない、格納するステップと
を実行することを特徴とするコンピュータプログラム製品。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はデータを格納することに関し、より詳細には、データ記憶プロセスにおいてデータ妥当性を確保することに関する。
【０００２】
なお、本出願は、参照により本明細書に援用される、David Flynn等によって２００７年１２月６日に出願された「APPARATUS, SYSTEM, AND METHOD FOR MANAGING DATA USING A DATA PIPELINE」と題する米国特許出願第１１／９５２，０９１号の一部継続出願であり、その特許出願に対する優先権を主張する。
【背景技術】
【０００３】
コンピュータの中央処理装置（「ＣＰＵ」）又はメモリからデータ記憶デバイスにデータが移動されるとき、そのデータは多くの場合に異なるバス及びネットワークを介して伝送され、処理され、そして最終的にはデータ記憶デバイスに格納される。アドレス線障害、制御線障害、又は他のハードウエア障害のような縮退ビット誤りからデータを保護すると共に、α粒子、雑音、電圧変動等によって引き起こされるビット反転のような一時的な誤りからデータを保護するために、データは典型的には、或るタイプのデータ保護方式を用いて、各プロセス及び伝送中に保護される。たとえば、データが処理されている間に、そのデータは或るタイプのパリティ保護を用いて保護される場合がある。データが伝送されるとき、データを符号化することができ、それによりデータが受信され、復号されるときに、データ誤りを検出することができるようにし、場合によっては訂正することができるようにする。データが読み出されるときに、そのデータ内に誤りがあるか否かを判断し、そのデータ内の誤りを訂正するために、誤り訂正符号（「ＥＣＣ」）が用いられる。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
伝送又はプロセスの終了時にデータが検査及び／又は復号されるとき、データが保護されず、保護に隙間が生じるいくつかのプロセスステップ又は伝送ステップが存在する場合がある。多くの場合に、この保護の隙間は些細なことと見なされる場合がある。しかしながら、データ記憶システムの信頼性が高くなるにつれて、誤り検出及び訂正保護の隙間が重大となる場合がある。データ記憶プロセスにおいてデータ妥当性を高める方法が必要とされている。
【０００５】
これまでの検討から、データ記憶プロセスにおいてデータ妥当性を確保する装置、システム及び方法が必要とされていることが明らかであろう。そのような装置、システム及び方法は、誤り検出能力において隙間がないことを確実にするであろう。
【課題を解決するための手段】
【０００６】
本発明は現在の最新技術に応えて、そして特に、現時点で利用可能なデータ記憶システムではまだ十分には解決されていない当該技術分野における問題及び要求に応えて開発された。したがって、本発明は、当該技術分野における上記の短所の多く又は全てを克服する、データ保護を拡張するための装置、システム及び方法を提供するために開発された。
【０００７】
データ保護を拡張するための装置は、データ記憶プロセスにおいてデータ妥当性を確保するのに必要なステップを機能的に実行するように構成される複数のモジュールを備えている。記述される実施形態におけるこれらのモジュールは、データ受信モジュールと、ＥＣＣ生成モジュールと、記憶前整合性モジュールと、データ記憶モジュールとを含む。
【０００８】
データ受信モジュールは、記憶ブロックと、該記憶ブロックのための既存のパリティ情報とを受信する。該記憶ブロックはデータ記憶デバイス上に一緒に格納されるデータを含む。該記憶ブロックは１又は複数のデータパケットのうちの少なくとも一部を含む。既存のパリティ情報は記憶ブロックのデータのために生成される。ＥＣＣ生成モジュールは、データ記憶モジュールが記憶ブロック及び既存のパリティ情報を受信するのに応答して、記憶ブロックのデータのための誤り訂正符号（「ＥＣＣ」）チェックビットを生成する。記憶ブロックのための該ＥＣＣチェックビットは、ブロック符号、畳み込み符号等を用いて生成される。
【０００９】
記憶前整合性モジュールは、記憶ブロックのデータと、既存のパリティ情報と、ＥＣＣチェックビットとを用いて、記憶ブロックのデータ、既存のパリティ情報及びＥＣＣチェックビットが整合しているか否かを判断する。データ記憶モジュールは、記憶ブロックのデータと、記憶ブロックのためのＥＣＣチェックビットとをデータ記憶デバイス上に格納する。記憶ブロックのための既存のパリティ情報はデータ記憶デバイス上に格納されない。
【００１０】
一実施形態では、記憶前整合性モジュールはＥＣＣ生成モジュールから独立している。別の実施形態では、本装置は、ＥＣＣチェックビットを用いてＥＣＣチェックビットパリティ情報を生成するＥＣＣチェックビットパリティモジュールを備える。記憶前整合性モジュールはＥＣＣチェックビットパリティ情報を用いて、整合性を判断する。別の実施形態では、記憶前整合性モジュールは、ＥＣＣ生成モジュール及びＥＣＣチェックビットパリティモジュールから独立した機能において、記憶ブロックのデータ及び既存のパリティ情報を用いて、代替のパリティ情報を生成し、該代替のパリティ情報をＥＣＣチェックビットパリティ情報と照合して、整合性を判断する。
【００１１】
本装置は、特定の実施形態において、データ検索モジュールと、パリティ生成モジュールと、ＥＣＣ検出モジュールと、記憶整合性モジュールとを備える。データ検索モジュールは、読出し要求に応答して、データ記憶デバイス上に格納される１又は複数のデータパケットからのデータを有する記憶ブロックと、該記憶ブロックのためのＥＣＣチェックビットとを検索する。パリティ生成モジュールは、検索された記憶ブロックのデータ、及びＥＣＣチェックビットのためのパリティ情報を生成する。
【００１２】
ＥＣＣ検出モジュールは、記憶ブロックと共に格納されるＥＣＣチェックビットを用いてＥＣＣシンドロームを生成し、検索された記憶ブロックのデータ及び生成されたパリティが誤りを有するか否かを判断する。記憶後整合性モジュールは、検索された記憶ブロックからのデータと、パリティ生成モジュールによって生成される、生成されたパリティ情報と、ＥＣＣシンドロームとを用いて、該データ、該生成されたパリティ情報及び該ＥＣＣシンドロームが整合しているか否かを判断する。
【００１３】
別の実施形態では、本装置では、ＥＣＣ検出モジュールが、検索された記憶ブロックのデータ及び生成されたパリティが誤りを有するものと判断するのに応答して、記憶ブロックのデータ内の１又は複数の誤りを訂正し、パリティビットのうちの１又は複数を更新するＥＣＣ訂正モジュールを備える。別の実施形態では、記憶後整合性モジュールはＥＣＣ検出モジュールから独立している。別の実施形態では、本装置は、ＥＣＣシンドロームを用いてＥＣＣシンドロームパリティ情報を生成するＥＣＣシンドロームパリティモジュールをさらに備え、記憶後整合性モジュールはＥＣＣシンドロームパリティ情報を用いて整合性を判断する。さらなる実施形態では、記憶後整合性モジュールは、ＥＣＣ検出モジュール及びＥＣＣシンドロームパリティモジュールから独立した機能において、検索された記憶ブロックのデータ及び生成されたパリティ情報を用いて、代替のパリティ情報を生成し、該代替のパリティ情報をＥＣＣシンドロームパリティ情報と照合して、整合性を判断する。
【００１４】
一実施形態では、本装置は検索後パリティチェックモジュールを含み、該検索後パリティチェックモジュールは、ＥＣＣ検出モジュールが、検索された記憶ブロックのデータに誤りがないか否かを判断するのを完了するのに応答して、検索された記憶ブロック及びＥＣＣチェックビットから生成されるパリティ情報を用いて、検索された記憶ブロック及びＥＣＣチェックビットのパリティを検査する。別の実施形態では、本装置は記憶前パリティチェックモジュールを含み、該記憶前パリティチェックモジュールは、既存のパリティ情報及びＥＣＣチェックビットのパリティを用いて、データ受信モジュールによって受信される記憶ブロックのデータのパリティを検査する。パリティチェックモジュールは、データ記憶モジュールが記憶ブロック及びＥＣＣチェックビットを格納する前に、パリティを検査する。
【００１５】
一実施形態では、ＥＣＣ生成モジュールは、記憶ブロックの既存のパリティ情報のための誤り検査符号を生成することをさらに含み、誤り検査符号は記憶ブロックのためのＥＣＣチェックビットと共に格納される。関連する実施形態では、既存のパリティ情報のための誤り検査符号は、パリティチェックビット、検査符号及び／又はＥＣＣチェックビットを含む。さらに別の実施形態では、ＥＣＣ生成モジュールは、生成されたＥＣＣチェックビットがデータとパリティ情報とを区別しないように、既存のパリティ情報と合成される記憶ブロックのデータのためのＥＣＣチェックビットを生成することを含む。
【００１６】
一実施形態では、データパケットが記憶要求と共に受信されるデータセグメントの少なくとも一部を含み、本装置は復号化モジュールを含み、該復号化モジュールは、誤り検出能力に隙間がないように単一のプロセスステップにおいて、データセグメントのデータを復号し、結果としてデータセグメントのパリティ及び符号化されていないデータを生成する。別の実施形態では、本装置はパリティ整合性モジュールを含み、該パリティ整合性モジュールは、復号化モジュールがパリティを生成してから、データ受信モジュールがパリティ及び記憶ブロックの形のデータを受信するまで、データセグメントのデータのためのパリティ情報を用いることによって、データ検出能力に隙間がないように保持し、該パリティ整合性モジュールは、データの暗号化、データの圧縮、及びユーザ定義による用途特有の機能の少なくとも１つを実施中に、パリティを保持する。
【００１７】
一実施形態では、記憶ブロックのためのＥＣＣチェックビットは、ＢＣＨ符号、リード−ソロモン符号、及びターボ符号のうちの１つを用いて生成される。別の実施形態では、データ記憶モジュールは、ＥＣＣチェックビットのパリティ情報を格納しない。
【００１８】
本発明によるデータ保護を拡張するためのシステムも提示される。そのシステムは、データ記憶デバイス、及びデータ記憶デバイス内のデータの記憶を制御する記憶コントローラによって具現される場合がある。詳細には、そのシステムは、一実施形態において、データ受信モジュールと、ＥＣＣ生成モジュールと、記憶前整合性モジュールと、データ記憶モジュールとを含む。
【００１９】
データ記憶モジュールは、記憶ブロックと、記憶ブロックのための既存のパリティ情報とを含む。記憶ブロックは、データ記憶デバイス上に一緒に格納されるデータを含む。記憶ブロックは、１又は複数のデータパケットの少なくとも一部を含む。既存のパリティ情報は、その記憶ブロックのデータのために生成される。ＥＣＣ生成モジュールは、データ受信モジュールが記憶ブロック及び既存のパリティ情報を受信するのに応答して、その記憶ブロックのデータのためのＥＣＣチェックビットを生成する。記憶ブロックのためのＥＣＣチェックビットは、ブロック符号、畳み込み符号等を用いて生成される。
【００２０】
記憶前整合性モジュールは、データブロックのデータと、既存のパリティ情報と、ＥＣＣチェックビットとを用いて、該記憶ブロックのデータ、該既存のパリティ情報及び該ＥＣＣチェックビットが整合しているか否かを判断する。データ記憶モジュールは、データ記憶デバイス上に、記憶ブロックのデータと、記憶ブロックのためのＥＣＣチェックビットとを格納する。記憶ブロックのための既存のパリティ情報は、データ記憶デバイス上には格納されない。
【００２１】
一実施形態では、本システムは、１又は複数のシステムバス及びネットワークをさらに備える。記憶コントローラは、システムバス又はネットワークを介して、ＣＰＵ及び／又はメモリからデータセグメントを受信し、該データセグメントは、１又は複数のデータパケットのデータを含む。データセグメントは、データセグメントを格納するための記憶要求と共に受信される。別の実施形態では、本システムは、システムによるデータの受信から、データ記憶モジュールがデータセグメントのデータを格納するまで、誤り検出能力に隙間を生じることなくデータの保護を保持する全体整合性モジュールをさらに備える。該全体整合性モジュールは、１つのデータ保護方式から別のデータ保護方式への各移行に関連付けられるサブモジュールを備える。
【００２２】
別の実施形態では、全体整合性モジュールは復号化モジュールを備え、該復号化モジュールは、データが符号化された形になるときから、データがパリティ情報を含むときまで、誤り検出能力に隙間がないように単一のプロセスステップにおいてデータセグメントのデータを復号し、その結果として、データセグメントのパリティ及び符号化されていないデータが生成される。別の実施形態では、全体整合性モジュールは符号化モジュールを備え、該符号化モジュールは、データがパリティ情報を含むときから、データが符号化された形になるまで、誤り検出能力に隙間がないように単一のプロセスステップにおいて、パリティ情報で保護されたデータセグメントのデータを符号化し、結果として、データセグメントの符号化されたデータが生成される。
【００２３】
さらに別の実施形態では、全体整合性モジュールはパリティ整合性モジュールを含み、該パリティ整合性モジュールは、データセグメントのデータのためにパリティ情報が生成されるときに、データ受信モジュールが既存のパリティ情報及び記憶ブロックの形のデータを受信するまで、データセグメントのデータのためのパリティ情報を用いることによって、誤り検出能力に隙間がないように保持する。パリティ整合性モジュールは、データ検索モジュールが記憶ブロックを検索すると共に、パリティ生成モジュールがデータのためのパリティ情報を生成するときから、パリティ情報を用いて保護されるデータがデータセグメントのデータを符号化する符号化モジュールによって符号化されるまで、誤り訂正能力に隙間がないように保持する。パリティ整合性モジュールは、データの暗号化、データの圧縮、データの暗号解読、データの圧縮解除、及びユーザ定義による用途特有の機能の少なくとも１つを実施中に、パリティを保持する。
【００２４】
別の実施形態では、本システムは、システムは、記憶コントローラがデータセグメントを受信するＣＰＵ又はメモリのうちの少なくとも１つをさらに備える。別の実施形態では、全体整合性モジュールはまた、データがデータ記憶デバイスから検索されるときから、データがシステムから引き渡されるまで、誤り検出能力に隙間がないようにデータの保護を保持する。
【００２５】
本発明によるデータ保護を拡張するための方法も提示される。開示される実施形態における方法は、概ね、上記の装置及びシステムの動作に関して上記で提示された機能を実行するために必要とされるステップを含む。一実施形態では、本方法は、記憶ブロック、及び該記憶ブロックのための既存のパリティ情報を受信することを含む。記憶ブロックは、データ記憶デバイス上に一緒に格納されるデータである。記憶ブロックは、１又は複数のデータパケットの少なくとも一部を含む。既存のパリティ情報は、その記憶ブロックのデータのために生成される。本方法は、記憶ブロック及び既存のパリティ情報を受信するのに応答して、その記憶ブロックのデータのためのＥＣＣチェックビットを生成することを含む。その記憶ブロックのためのＥＣＣチェックビットは、ブロック符号、畳み込み符号等を用いて生成される。
【００２６】
本方法は、記憶ブロックのデータと、既存のパリティ情報と、ＥＣＣチェックビットとを用いて、該記憶ブロックのデータ、該既存のパリティ情報及び該ＥＣＣチェックビットが整合しているか否かを判断する。本方法は、記憶ブロックのデータ、既存のパリティ情報及びＥＣＣチェックビットが整合していると判断するのに応答して、データ記憶デバイス上に記憶ブロックのデータ及び該記憶ブロックのためのＥＣＣチェックビットを格納することを含み、その記憶ブロックのための既存のパリティ情報はデータ記憶デバイス上には格納されない。
【００２７】
本明細書全体を通じて、特徴、利点又は類似の文言への言及は、本発明で実現される場合がある特徴及び利点の全てが、本発明の任意の単一の実施形態の中にあるべきであること、又はあることを暗示しない。むしろ、特徴及び利点に言及する言葉は、１つの実施形態に関連して記述される具体的な特徴、利点又は特性が本発明の少なくとも１つの実施形態に含まれることを意味するものと理解されたい。したがって、本明細書全体を通じて、特徴、利点又は類似の言葉が検討される際に、同じ実施形態を参照する場合があるが、必ずしも同じ実施形態でなくてもよい。
【００２８】
さらに、本発明の上記の特徴、利点及び特性は、１又は複数の実施形態において任意の適切な方法で組み合わせられる場合がある。或る特定の実施形態の具体的な特徴又は利点のうちの１又は複数を用いることなく本発明が実施される場合があることは当業者には理解されよう。他の事例では、或る特定の実施形態において、さらなる特徴及び利点が認識される場合があるが、本発明の全ての実施形態の中に存在しない場合がある。
【００２９】
本発明のこれらの特徴及び利点は、以下の説明及び添付の特許請求の範囲からさらに十分に明らかになるか、又は以下に記述されるように本発明を実践することから習得される場合がある。
【図面の簡単な説明】
【００３０】
【図１】本発明による、データ記憶プロセスにおいてデータ保護を高めるためのシステムの一実施形態を示す概略ブロック図である。
【図２】本発明による、データ記憶プロセスにおいてデータ保護を高めるための装置の一実施形態を示す概略ブロック図である。
【図３】本発明による、データ記憶プロセスにおいてデータ保護を高めるための別の装置の一実施形態を示す概略ブロック図である。
【図４Ａ】本発明による、データ、パリティ及びＥＣＣが整合しているか否かを判断する一例の第１の部分を示す図である。
【図４Ｂ】本発明による、データ、パリティ及びＥＣＣが整合しているか否かを判断する一例の第２の部分を示す図である。
【図５】本発明による、データを格納しながら、データ保護を高めるための方法の一実施形態を示す概略フロー図である。
【図６】本発明による、データの受信からデータの記憶までのデータ保護を高めるための方法の一実施形態を示す概略フロー図である。
【図７】本発明による、データの検索からデータの引渡しまでのデータ保護を高めるための方法の一実施形態を示す概略フロー図である。
【発明を実施するための形態】
【００３１】
本発明の利点が容易に理解されるようにするために、上記で略述された本発明のさらに詳細な説明を、添付の図面において示される具体的な実施形態を参照しながら行なう。これらの図面が本発明の典型的な実施形態を示すにすぎないこと、それゆえ、その範囲を限定するものと見なされるべきでないことを理解した上で、添付の図面を用いて、本発明がさらに具体的、かつ詳細に記述され、説明される。
【００３２】
本明細書において記述される機能単位の多くは、それらの機能単位の実現の独立性を特に強調するために、モジュールと呼ばれている。たとえば、モジュールは、カスタムＶＬＳＩ回路又はゲートアレイを含むハードウエア回路、論理チップ、トランジスタのような既製の半導体、又は他の個別部品として実現される場合がある。また、モジュールは、フィールドプログラマブルゲートアレイ、プログラマブルアレイロジック、プログラマブル論理デバイス等のプログラマブルハードウエアデバイスにおいて実現される。
【００３３】
また、モジュールは、種々のタイプのプロセッサによって実行するために、ソフトウエアにおいて実現される場合もある。たとえば、実行可能コードからなる既知のモジュールが、コンピュータ命令から成る１又は複数の物理ブロック又は論理ブロックを含む場合があり、それらのブロックは、たとえば、オブジェクト、手順又は関数として編成される場合がある。それにもかかわらず、既知のモジュールの実行可能コードは物理的に一緒に配置される必要はなく、異なるロケーションに格納される異種の命令を含む場合があり、論理的に結合されるときに、それらの命令はモジュールを構成し、そのモジュールのための所定の目的を果たす。
【００３４】
実際には、実行可能コードのモジュールは単一の命令、又は多数の命令とすることができ、さらには、いくつかの異なるコードセグメントにわたって、異なるプログラム間で、及びいくつかのメモリデバイスにわたって分散される場合もある。同様に、本明細書において、モジュール内で演算データが特定され、示される場合があり、任意の適切な形において具現され、任意の適切なタイプのデータ構造内に編成される場合がある。それらの演算データは、単一のデータセットとして集められる場合があるか、又は異なる記憶デバイスを含む、異なるロケーションにわたって分散される場合があり、少なくとも部分的には、システム又はネットワーク上に単なる電子信号として存在する場合もある。１つのモジュール又は１つのモジュールの部分がソフトウエアにおいて実装される場合、そのソフトウエア部分は１又は複数のコンピュータ可読媒体上に格納される。
【００３５】
本明細書全体を通じて、「一実施形態」、「１つの実施形態」又は類似の言葉を参照することは、その実施形態に関連して記述される特定の特徴、構造又は特性が本発明の少なくとも１つの実施形態に含まれることを意味する。したがって、本明細書全体を通じて、「一実施形態において」、「１つの実施形態において」という言い回し又は類似の文言が現れるとき、全て同じ実施形態を参照する場合があるが、必ずしも同じ実施形態でなくてもよい。
【００３６】
コンピュータ可読媒体（コンピュータ読取可能記憶媒体）への参照は、デジタル処理装置上に機械可読命令を格納することができる任意の形をとることが可能である。コンピュータ可読媒体は、伝送線路、コンパクトディスク、デジタルビデオディスク、磁気テープ、ベルヌーイデバイス、磁気ディスク、パンチカード、フラッシュメモリ、集積回路、又は他のデジタル処理装置メモリデバイスによって具現される。
【００３７】
さらに、本発明の上記の特徴、構造又は特性は、１又は複数の実施形態において任意の適切な方法で組み合わせることができる。以下の説明において、本発明の実施形態を完全に理解してもらうために、プログラミング、ソフトウエアモジュール、ユーザ選択、ネットワークトランザクション、データベース問い合わせ、データベース構造、ハードウエアモジュール、ハードウエア回路、ハードウエアチップ等の例のような多数の具体的な細部が提供される。しかしながら、本発明が、それらの具体的な細部のうちの１又は複数を用いることなく、又は他の方法、構成要素、材料等を用いて実施される場合があることは、当業者には理解するであろう。また、本発明の態様を分かりにくくするのを避けるために、既知の構造、材料又は動作を詳しく示し説明するのを省略している。
【００３８】
本明細書に含まれる概略的なフロー図は、包括的には、論理フロー図として記述される。したがって、図示される順序及び表示されるステップは、提示される方法の一実施形態を示す。示される方法の１又は複数のステップ、又はその部分に対して機能、論理、又は効果に関して等価である他のステップ及び方法が考えられる。さらに、用いられるフォーマット及び記号は、その方法の論理ステップを説明するために提供されており、その方法の範囲を制限しないものと理解されたい。フロー図において種々の矢印タイプ及びラインタイプが用いられる場合があるが、それらは、対応する方法の範囲を制限しないものと理解されたい。実際には、いくつかの矢印及び他の結合子は、その方法の論理的な流れを指示するためにのみ用いられる。たとえば、矢印が、図示される方法の列挙されるステップ間の明示されていない持続時間の待機又は監視期間を指示する場合がある。さらに、特定の方法が行なわれる順序は、図示される対応するステップの順序に厳密に従う場合も、従わない場合もある。
【００３９】
図１は、本発明による、データ記憶プロセスにおけるデータ保護を高めるためのシステム１００の一実施形態を示す概略的なブロック図である。システム１００は記憶デバイス１０２を含み、該記憶デバイスは、記憶コントローラ１０４及びデータ記憶デバイス１０６を含む。記憶デバイス１０２は、コンピュータネットワーク１１２を通じて１又は複数のクライアント１１０に接続されるサーバ１０８内にある。
【００４０】
一実施形態では、システム１００は、記憶コントローラ１０４及びデータ記憶デバイス１０６を備える記憶デバイス１０２を含む。記憶コントローラ１０４及びデータ記憶デバイス１０６は単一の筐体内に収容され、その筐体は記憶デバイス１０２である。別の実施形態では、記憶コントローラ１０４及びデータ記憶デバイス１０６は離れて位置する。記憶コントローラ１０４は典型的には、データ記憶デバイス１０６のためのデータ記憶及びアクセスを制御する。データ記憶デバイス１０６は、一実施形態において、データ記憶デバイス１０６の全体にわたって、データへの実質的に同様のアクセス回数を有することができる。たとえば、データ記憶デバイス１０６は、フラッシュメモリ、ナノランダムアクセスメモリ（「ナノＲＡＭ又はＮＲＡＭ」）、磁気抵抗ＲＡＭ（「ＭＲＡＭ」）、ダイナミックＲＡＭ（「ＤＲＡＭ」）、相変化ＲＡＭ（「ＰＲＡＭ」）等の固体記憶デバイスとすることができる。また、データ記憶デバイス１０２は、ハードディスクドライブ、コンパクトディスク（「ＣＤ」）ドライブ、光ドライブ等とすることもできる。
【００４１】
図１において、データ記憶デバイス１０６は単一の記憶デバイスとして示されるが、データ記憶デバイス１０６は２つ以上の記憶デバイスを含む場合もある。データ記憶デバイス１０６は、ＲＡＩＤ（「redundant array of independent drive」）、ＪＢＯＤ（「just a bunch of disks」）等として構成される場合もある。データ記憶デバイス１０６は、固体記憶装置のような、高性能の短期記憶装置として構成される１又は複数のデータ記憶デバイス１０６、及びハードディスクドライブのような、低性能の長期記憶装置として構成される１又は複数のデータ記憶デバイス１０６で構成される。この実施形態では、記憶コントローラ１０４は、種々のタイプのデータ記憶デバイス１０６を管理することができる。当業者は、他のタイプ及び構成のデータ記憶デバイス１０６を利用可能であることを理解するであろう。
【００４２】
記憶コントローラ１０４は１又は複数のデータ記憶デバイス１０６を制御する場合があり、ＲＡＩＤコントローラ、ストレージエリアネットワーク（「ＳＡＮ」）のためのコントローラ等とすることができる。記憶コントローラ１０４は、１又は複数のサブコントローラを含む場合がある。記憶コントローラ１０４は、データ記憶デバイス１０６と一体に構成される場合があるか、又は離れて位置する場合がある。記憶コントローラ１０４は一緒に集積されるか、又は分散される。たとえば、記憶コントローラ１０４の一部はマスタコントローラとすることができ、記憶コントローラ１０４の他の部分はサブコントローラ又はスレーブコントローラとすることができる。マスタコントローラは、他のサブコントローラと通信するデバイスとすることができ、他のサブコントローラがさらにデータ記憶デバイス１０６を制御するか、又はマスタコントローラは、スレーブコントローラ及びデータ記憶デバイス１０６を制御するマスタコントローラとすることができる。当業者は、記憶コントローラ１０４の他の形及び機能が利用可能であることを理解するであろう。
【００４３】
一実施形態では、記憶デバイス１０２はサーバ１０８に含まれる。種々の実施形態において、記憶コントローラ１０４、若しくはデータ記憶デバイス１０６のいずれか一方、又はその両方がサーバ１０８の外部に配置される。ＰＣＩｅ（「peripheral component interconnect express」）バス、シリアルＡＴＡ（「Serial Advanced Technology Attachment」）バス等のシステムバスを介して、サーバ１０８が記憶コントローラ１０４に接続されるか、又は記憶コントローラ１０４がデータ記憶デバイス１０６に接続される。
【００４４】
別の実施形態では、固体記憶デバイス１０２はサーバ１０８の外部にあり、又は、該記憶デバイス１０２は、ＵＳＢ（「universal serial bus」）接続、ＩＥＥＥ（「Institute of Electrical and Electronics Engineers」）１３９４バス（「ファイアワイヤ」）等を通じてサーバに接続される。他の実施形態では、ＰＣＩ（「peripheral component interconnect」）エクスプレスバスを用いて、又はイーサネット（登録商標）、ファイバチャネル、インフィニバンド、若しくはＰＣＩｅ−ＡＳ（「PCI Express Advanced Switching」）等の外部の電気的若しくは光学的なバス延長又はネットワーキングソリューションを用いて、記憶デバイス１０２がサーバ１０８に接続されるか、又は記憶コントローラ１０４がデータ記憶デバイス１０６に接続される。当業者は、多種多様の実現可能な接続方法を理解するであろう。
【００４５】
サーバ１０８は、パーソナルコンピュータ、ラップトップコンピュータ、メインフレームコンピュータ、ワークステーション、電子デバイス等とすることもできる。サーバ１０８は、クライアント１１０を含むか、又はコンピュータネットワーク１１２を介してクライアント１１０に接続される。システム１００が記憶デバイス１０２に記憶要求を送信することができる限り、システム１００は、任意の数のコンピュータ、クライアント１１０、コンピュータネットワーク１１２又は他の電子デバイスを含むことができる。クライアント１１０は、サーバ１０８上で、或いは別のコンピュータ又は電子デバイス上で実行されるプロセスとすることができる。また、クライアント１１０は、パーソナルコンピュータ、ラップトップコンピュータ、メインフレームコンピュータ、ワークステーション、電子デバイス等とすることもできる。当業者は、記憶デバイス１０２に記憶要求を送信することができるシステム１００の他の構成要素及び構成を利用可能であることを理解するであろう。
【００４６】
図２は、本発明による、データ記憶プロセスにおけるデータ保護を高めるための装置２００の一実施形態を示す概略的なブロック図である。装置２００は、データ受信モジュール２０２と、ＥＣＣ生成モジュール２０４と、記憶前整合性モジュール２０６と、データ記憶モジュール２０８とを含み、それらのモジュールが以下に説明される。モジュール２０２〜２０８は記憶コントローラ内に示されるが、それらのモジュール２０２〜２０８の全て又はその一部が記憶コントローラ１０４の外部に位置する場合もある。たとえば、それらのモジュール２０２〜２０８の全て又はその一部がデータ記憶デバイス１０６内に位置する場合もある。
【００４７】
装置２００はデータ受信モジュール２０２を含み、データ受信モジュールは、記憶ブロックと、その記憶ブロックのための既存のパリティ情報とを受信する。記憶ブロックは、データ記憶デバイス１０６上に一緒に格納されるデータを含む。記憶ブロックは、その記憶ブロックのデータを格納するに都合のよい任意のサイズにすることができる。たとえば、記憶ブロックは、処理、暗号化及び圧縮等が実施された後に、データ記憶デバイス１０６上に記憶するのに適した都合のよいサイズに分割されたデータパケットのデータを含んでいる。
【００４８】
記憶ブロックは、１又は複数のデータパケットの少なくとも一部を含む。データパケットは、ファイル又はオブジェクトからのデータを含む。ファイル又はオブジェクトからのデータは、データセグメントとして記憶コントローラ１０４に送信され、データセグメントは、完全なファイル若しくはオブジェクト、又はファイル若しくはオブジェクトの一部を含む。記憶コントローラ１０４は、データセグメントのデータを均一なサイズのデータパケットに分割することができ、データパケットヘッダーを追加する。データパケットヘッダーは、ファイル又はオブジェクトの論理アドレス、オフセット及びデータ長のうちの１又は複数を含む。
【００４９】
記憶コントローラ１０４は、システムバス（図示せず）又はコンピュータネットワーク１１２（「ネットワーク」）のようないくつかのタイプの伝送手段を介して、典型的には、データを書き込むための記憶要求の一部としてデータセグメントを受信する。典型的には、データセグメントは、８ｂ１０ｂ保護のような或る誤り検出方法を用いて符号化される。記憶コントローラ１０４が符号化されたデータセグメントを受信すると、データセグメントは復号され、パリティ情報が生成される。基本的なパリティ保護は典型的には、排他的論理和（「ＸＯＲ」）関数を用いて、データセグメントのビットをまとめてＸＯＲ演算し、パリティビットを生成することを含む。
【００５０】
さらに複雑なパリティの場合、複数の次元においてパリティビットを生成して、パリティ情報を形成することができる。その後、そのパリティ情報を用いて、データを検査するか、又は任意のビット誤りが存在するか否かを判断することができる。当業者は、パリティ情報を生成する他の方法、及びパリティ情報を用いてデータ内のビット誤りを検査する他の方法を理解するであろう。データ受信モジュール２０２は、データ記憶デバイス１０６上にデータを格納する前のプロセスにおいて、記憶ブロックのデータに対して生成された既存のパリティ情報を受信する。
【００５１】
装置２００はＥＣＣ生成モジュール２０４を含み、ＥＣＣ生成モジュールは、データ受信モジュール２０２が記憶ブロック及び既存のパリティ情報を受信するのに応答して、記憶ブロックのデータのための誤り訂正符号（「ＥＣＣ」）チェックビットを生成する。記憶ブロックのためのＥＣＣチェックビットは、ＢＣＩＩ符号又はリードソロモン符号のようなブロック符号、ターボ符号のような畳み込み符号、又は他の標準的な符号を用いて、ＥＣＣ生成モジュール２０４によって生成される。
【００５２】
選択されるＥＣＣは、典型的には、或る特定の数のビット誤りを検出し、或る特定の数のビット誤りを訂正することができる。たとえば、或るＥＣＣは、５ビット誤りを検出することができ、２ビット誤りを訂正することができる。ＥＣＣ生成モジュール２０４は、記憶ブロックのデータと共に格納されるＥＣＣチェックビットを生成し、それにより、データ及びＥＣＣチェックビットと共に後に記憶ブロックが読み出されるときに、ＥＣＣチェックビットを用いて、記憶プロセスにおいて、読出しプロセスにおいて、又はデータ記憶デバイス１０６上にデータが格納される間に導入されていた場合があるビット誤りを検出及び訂正することができるようにする。当業者は他の誤り訂正符号を認識するはずであり、記憶ブロックのためのＥＣＣチェックビットを生成するために如何にＥＣＣを実現するかを理解するであろう。
【００５３】
装置２００は記憶前整合性モジュール２０６を含み、該記憶前整合性モジュールは、記憶ブロックのデータと、既存のパリティ情報と、ＥＣＣチェックビットとを用いて、記憶ブロックのデータ、既存のパリティ情報及びＥＣＣチェックビットが整合しているか否かを判断する。好ましい実施形態では、記憶前整合性モジュール２０６は、誤り検出プロセスにおいて冗長性を与えるＥＣＣ生成モジュール２０４から独立して動作する。記憶前整合性モジュール２０６及びＥＣＣ生成モジュール２０４は、異なる論理ハードウエア及び／又は異なる実行可能コードを用いて実現され、それによりＥＣＣ内の論理の誤りによって、記憶前整合性モジュール２０６内に同じ誤りが生じないようにすることが好ましい。都合のよいことに、この冗長性はロバストな誤り検出能力を提供し、その能力は誤り検出に隙間を生じることなく、データ誤り及び論理誤りの両方を検査する。
【００５４】
装置２００はデータ記憶モジュール２０８も含み、該データ記憶モジュールは、記憶ブロックのデータと、その記憶ブロックのためのＥＣＣチェックビットとをデータ記憶デバイス１０６上に格納するが、その記憶ブロックのための既存のパリティ情報はデータ記憶デバイス１０６上には格納されない。記憶前に、データ、既存のパリティ及びＥＣＣチェックビットが整合しているか否かを判断することによって、既存のパリティ情報は捨てることができる。その後、データが読み出されるときにパリティを再び生成することができ、ＥＣＣチェックビットを用いて、記憶前整合性モジュール２０６がデータ、既存のパリティ及びＥＣＣチェックビットの整合性を検査した後に生じている場合がある誤りを訂正することができる。
【００５５】
図３は、本発明による、データ記憶プロセスにおいてデータ保護を高めるための別の装置３００の一実施形態を示す概略ブロック図である。装置３００は、データ受信モジュール２０２と、ＥＣＣ生成モジュール２０４と、記憶前整合性モジュール２０６と、データ記憶モジュール２０８とを含み、それらのモジュールは、図２に関連して説明したモジュールと実質的に同じである。装置３００は、ＥＣＣチェックビットパリティモジュール３０２と、データ検索モジュール３０４と、パリティ生成モジュール３０６と、ＥＣＣ検出モジュール３０８と、記憶後整合性モジュール３１０と、ＥＣＣ訂正モジュール３１２と、ＥＣＣシンドロームパリティモジュール３１４と、記憶前パリティチェックモジュール３１６と、検索後パリティチェックモジュール３１８と、復号化モジュール３２２、符号化モジュール３２４及びパリティ整合性モジュール３２６を含む全体整合性モジュール３２０とを含み、それらのモジュールについては以下に説明する。図２の装置２００のモジュール２０２〜２０８の場合と同様に、モジュール３０２〜３２６は記憶コントローラ１０４の中に示されるが、それらのモジュール３０２〜３２６の全て又はその一部が、データ記憶デバイス１０６内、又はクライアント１１０若しくはサーバ１０８のドライバ内等の、記憶コントローラ１０４の外部に位置する場合もある。
【００５６】
一実施形態では、記憶前整合性モジュール２０６は、ＥＣＣパリティ情報を用いて整合性を判断する。一実施形態において、装置３００はＥＣＣチェックビットパリティモジュール３０２を含み、該ＥＣＣチェックビットパリティモジュールは、ＥＣＣチェックビットからＥＣＣパリティ情報を生成する。典型的には、ＥＣＣチェックビットパリティモジュール３０２は、ＥＣＣチェックビットをＸＯＲ演算することによって、ＥＣＣパリティ情報を生成する。ＥＣＣチェックビットが単一の列である場合には、ＥＣＣパリティ情報は、ＥＣＣチェックビットのパリティである１ビットのＥＣＣパリティビットまで削減することができる。記憶前整合性モジュール２０６は、そのＥＣＣパリティ情報が、記憶ブロックのデータ及びそのデータのための既存のパリティ情報から独立した論理を用いて導出される代替のパリティ情報と整合しているか否かを判断する。
【００５７】
記憶前整合性モジュール２０６は、ＥＣＣパリティ情報と代替のパリティ情報とのＸＯＲ演算を行うことによって、そのＥＣＣパリティ情報が代替のパリティ情報と整合しているか否かを判断することができる。１ビットのＥＣＣパリティビットが存在し、代替のパリティ情報が１ビットである場合、それらのビットのＸＯＲ演算は典型的には、ＸＯＲ関数の出力が０である場合に、整合しているという結果を表すであろう。ＸＯＲ関数の出力が１である場合には、データ、既存のパリティ及びＥＣＣチェックビットに整合性がなく、少なくとも１つのビットに誤りがある。
【００５８】
図４Ａ及び図４Ｂは合わせて、本発明による、データ、パリティ及びＥＣＣが整合しているか否かの一例４００を示す。例４００は、簡略化されたＢＣＨ（１５，７，５）符号及びシンドローム生成モジュールを表す。この例４００の場合、４行及び３列のビット（ｄ０〜ｄ１２）４０２を含む１２ビットデータブロックが選択される。列（ｐ０〜ｐ２）４０４毎に１つのパリティビットが与えられる。
【００５９】
そのＢＣＨ符号器は８チェックビットを生成し、これはデータブロック内の２ビット誤りを訂正するのに十分である。これは、実世界の応用例の場合に特に魅力的な選択ではない場合があるが、当業者が、さらに大きくさらに複雑な訂正符号を予測することができるだけの十分な説明を可能にする。
【００６０】
ＥｏｃｏｄｅｒＤａｔａＰｒｅｃａｌｃｕｌａｔｏｒモジュールは、Ｆｅｅｄｂａｃｋモジュールへの入力ｄ［０：８］として用いるための９個の中間解ＩＳ［０：８］を計算し、その計算はパイプラインのようにして実行される。ＥｏｃｏｄｅｒＤａｔａＰｒｅｃａｌｃｕｌａｔｏｒモジュールの多項式を用いて、ＩＳ［０：８］を計算する。データ４０２の１つの列が単一のクロックサイクル中にｉ［０：３］として入力され、パリティ４０４はｉ［４］として入力される。ＩＳ［８］は、中間解ＩＳ［０：７］のパリティである。
【００６１】
本発明の意図するところによれば、データ入力ｉ［０：３］及びパリティ入力ｉ［４］を用いてＩＳ［８］が計算されるが、いずれのチェックビット多項式のための中間解ＩＳ［０：７］も、又はそのための論理の如何なるサブセットも用いられない。これは、ＩＳ［０：７］のためのロジック内の障害に起因する誤りがＩＳ［８］に伝搬されず、それゆえ検出可能でないことを確実にする。
【００６２】
ＩＳ［０：７］のための多項式は汎用のソフトウエアから得ることができる。ＩＳ［８］のための多項式は以下のようにして導出される。
【００６３】
ＥｏｃｏｄｅｒＤａｔａＰｒｅＣａｌｃＤａｔａモジュール内のＩＳ［８］のための各多項式が、図４Ａ内の表１において、行２〜９及び列１３において表形式で繰り返される。ＩＳ［０：７］のための多項式がＸＯＲ演算される（行１０）。それらの多項式の結果の排他的論理和ＸＯＲは、それらの多項式のＸＯＲの結果に等しくなるので、これにより、中間解のパリティを独立して計算することができる。表１において、多項式の係数が「１」であるとき、その表のセル内に「１」が入れられ、係数が「０」であるとき、ブランクのままである。たとえば、ｉ［０］は偶数多項式（たとえば、ＩＳ［０，４，６，７］に対応する多項式）において用いられ、そのものと４回ＸＯＲ演算されたｉ［０］は「０」であるので、ＸＯＲ（ＩＳ［０：７］）多項式内のｉ［０］のための係数（行１０）は「０」である。ｉ［２］は奇数多項式（たとえば、ＩＳ［１，２，５，６，７］に対応する多項式）において用いられるので、ＸＯＲ（ＩＳ［０：７］）のための係数ｉ［２］は「１」である。入力データｉ［４］の列のパリティはこの計算には含まれないことに留意されたい。
【００６４】
Ｐａｒｉｔｙ＿１ａ多項式（行１１）は入力としてｉ［４］だけを含み、ｉ［４］のための恒等関数である。Ｐａｒｉｔｙ＿２ａ多項式（行１２）は入力ｉ［０：３］を有し、それは、ｉ［４］が当初に作成されたのと同じ関数（図示せず）である。Ｐａｒｉｔｙ＿１ａ＝Ｐａｒｉｔｙ＿２ａであるので、ＸＯＲ（Ｐａｒｉｔｙ＿１ａ，Ｐａｒｉｔｙ＿２ａ）＝０である。それゆえ、Ｐａｒｉｔｙ＿１ａ及びＰａｒｉｔｙ＿２ａ多項式は、ＸＯＲ（ＩＳ［０：７］）多項式（行１０）とＸＯＲ演算され、結果として、ＩＳ［８］（行１３）が生成される。これは、ＸＯＲ（ＩＳ［０：７］）多項式（行１０）の係数を反転することと等価である。
【００６５】
要求される度に、ＩＳ［８］が、中間解ＩＳ［０：７］ではなく、入力ｉ［０：４］から導出される。さらに、ＩＳ［８］のための計算は、入力としてパリティビットｉ［４］を含み、それにより、このモジュールを通じてデータ保護が実行されるのを確実にするのと同時に、誤り検出に悪影響を及ぼすことになる共用論理が存在しないのを確実にする。
【００６６】
この例は、列毎に１つのパリティビットを示すが、それは２ビット以上を用いるように簡単に拡張される。用いられるデータブロックが大きくなるほど、多項式への入力の数も多くなり、訂正能力を改善するためにさらに多くの多項式（チェックビット）が追加されるが、中間解のパリティのための多項式を導出するために用いられるプロセスは同じままである。
【００６７】
Ｆｅｅｄｂａｃｋモジュールでは、ｉ［０：８］が０に初期化され、その後、ＥｏｃｏｄｅｒＤａｔａＰｒｅｃａｌｃｕｌａｔｏｒモジュールからの中間解ＩＳ［０：８］が、上記のように、ｄ［０：８］として一度に１列ずつ入力される。Ｎ＋１サイクルでは、ｉＮ＋１［０：８］＝ｏＮ［０：８］である。
【００６８】
図４Ｂの表２では、ｄ［０：８］のための入力値が多項式のＸＯＲから外され、ここには表されない。それ以外については、その方式は上記の方式と同じである。ｏ［０：７］多項式（行２〜９）のＸＯＲが、ＸＯＲ（ｏ［０：７］）多項式（行１０）として表される。Ｐａｒｉｔｙ＿１ｂはｉ［８］のための恒等多項式である。Ｐａｒｉｔｙ＿２ｂは、入力ｉ［０：７］から生成される。これらの多項式（行１０〜１２）をＸＯＲ演算して、ｏ［８］多項式（行１３）を生成する。
【００６９】
この多項式の出力はチェックビット［０：７］のチェックサム＝ｏ［０：７］である。冗長性を保持することが要求される度に、チェックビット多項式を用いることなく、その多項式が生成され、ｉ［０］〜ｉ［８］としてパリティ情報入力を有する。これが当てはまるのを確実にするためには、ｏ［０：７］の計算に対するｏ［８］の計算の独立性を確保するために、この論理を合成しなければならない。
【００７０】
データを媒体にセーブする前に、パリティｏ［８］がチェックビットｏ［０：７］から生成されたパリティと一致することを検査することに加えて、各データ列のパリティが検査される。復号及びシンドロームモジュールは、上記の符号化と同じようにして機能する。これが例４００の結論である。
【００７１】
一実施形態では、装置３００は、データ検索モジュール３０４と、パリティ生成モジュール３０６と、ＥＣＣ検出モジュール３０８と、記憶後整合性モジュール３１０と、ＥＣＣ訂正モジュール３１２と、ＥＣＣシンドロームパリティモジュール３１４とを含み、それらのモジュールは、典型的には読出し要求に関して、以下のように動作する。
【００７２】
データ検索モジュール３０４は、読出し要求に応答して、データ記憶デバイス１０６上に格納される１又は複数のデータパケットからのデータを有する記憶ブロックと、その記憶ブロックのためのＥＣＣチェックビットとを検索する。検索されたデータブロック及び関連するＥＣＣチェックビットは、典型的には、ＥＣＣチェックビットがＥＣＣ生成モジュール２０４によって生成され、記憶前整合性モジュール２０６によって整合性を検査された後に、データ記憶モジュール２０８によって予め格納された。パリティ生成モジュール３０６は、検索されたデータブロックのデータのためのパリティ情報及びＥＣＣチェックビットのためのパリティ情報を生成する。典型的には、パリティ生成モジュール３０６は記憶前整合性モジュール２０６が整合していると判断した後に捨てられた既存のパリティ情報と同じ形のパリティ情報を生成する。さらに、パリティ生成モジュール３０６は、ＥＣＣチェックビットのためのパリティも生成する。
【００７３】
ＥＣＣ検出モジュール３０８は、記憶ブロックと共に格納されるＥＣＣチェックビットを用いて、ＥＣＣシンドロームを生成し、それにより、検索された記憶ブロックのデータ及び生成されたパリティが誤りを有するか否かを判断する。装置３００は、典型的には、ＥＣＣ訂正モジュール３１２を含み、該ＥＣＣ訂正モジュールは、ＥＣＣ検出モジュール３０８が、検索された記憶ブロックのデータ及び生成されたパリティが誤りを有するものと判断するのに応答して、記憶ブロックのデータ内の１又は複数の誤りを訂正し、パリティビットのうちの１又は複数を更新する。典型的なＥＣＣでは、生成されたＥＣＣシンドローム及びフィードバック機能を同時に用いて誤りの検出及び訂正を処理し、誤りを繰返し検出し、訂正する。
【００７４】
一実施形態では、ＥＣＣチェックビットは、記憶ブロックのデータのためのものであり、パリティビットを含まない。これは好都合である。なぜなら、ＥＣＣチェックビットがデータ及び既存のパリティ情報の両方を用いて生成される場合には、記憶ブロックがデータ検索モジュール３０４によって読み出された後にパリティ生成モジュール３０６がパリティ情報を生成すると、そのデータにおいて生じる任意の誤りがそのパリティの中に反映されてしまうためである。ＥＣＣシンドロームがデータ及び生成されるパリティに及ぶ場合には、データ内で１ビットが反転することによって、パリティ情報に変化が生じるので、ＥＣＣ検出モジュール３０８及びＥＣＣ訂正モジュール３１２は、そのシンドロームを用いて、２ビット；すなわち、データにおいて１ビット及びパリティにおいて１ビットを訂正しなければならない。
【００７５】
これは、ＥＣＣによって訂正可能なビットの数を半分に削減することができる。記憶前整合性モジュール２０６を使用して整合性を確実にし、その後、パリティを捨てることによって、ＥＣＣ生成モジュール２０４は、データに加えて、既存のパリティに及ぶ必要はないので、ＥＣＣ検出モジュール３０８がシンドロームを生成するとき、そのシンドロームはデータのみをカバーし、生成されたパリティはカバーしない。当然、データに対して任意の訂正を行うと、ＥＣＣ訂正モジュール３０８は、典型的には、少なくとも誤りが訂正されたデータの列に対して、パリティを再生成する。しかしながら、必ずしも好ましい実施形態とは言えないが、本発明は、ＥＣＣ生成モジュール２０４がデータと共に既存のパリティにも及ぶ実施形態も含んでいる。当業者は、ＥＣＣチェックビットを用いてデータ内のビット誤りを検出し訂正する他の方法を利用可能であることを理解するであろう。
【００７６】
記憶後整合性モジュール３１０は、検索された記憶ブロックからのデータと、パリティ生成モジュール３０６によって生成されるパリティ情報と、ＥＣＣシンドロームとを用いて、データ、生成されたパリティ情報、及びＥＣＣシンドロームが整合しているか否かを判断する。ここでもまた、好ましい実施形態では、記憶後整合性モジュール３１０は、ＥＣＣ検出モジュール３０８及びＥＣＣ訂正モジュール３１２から独立している。この冗長性は、さらにロバストな誤り検出を提供し、データ保全性、並びにＥＣＣの論理及び記憶後整合性モジュール３１０に関する検査を確実にするのを助ける。
【００７７】
一実施形態では、装置３００は、ＥＣＣシンドロームパリティモジュール３１４を含み、該ＥＣＣシンドロームパリティモジュールは、ＥＣＣシンドロームを用いて、ＥＣＣシンドロームパリティ情報を生成する。記憶後整合性モジュール３１０は、ＥＣＣシンドロームパリティ情報を用いて、整合性を判断する。これは、ＥＣＣチェックビットパリティモジュール３０２の機能、及び記憶前整合性モジュール２０６がＥＣＣチェックビットパリティ情報を如何に使用するかに類似している。記憶後整合性モジュール３１０は、検索された記憶ブロックのデータ、及びＥＣＣ検出モジュール３０８及びＥＣＣ訂正モジュール３１２並びにＥＣＣシンドロームパリティモジュール３１４から独立した機能において生成されるパリティ情報を用いて、代替のパリティ情報を生成する。代替のパリティ情報を、ＥＣＣシンドロームパリティ情報と照合して、整合性を判断する。一実施形態では、記憶後整合性モジュール３１０並びにＥＣＣ検出モジュール３０８及びＥＣＣ訂正モジュール３１２は、図４において示される例において記述されるプロセスと概ね同じプロセスを用いる。
【００７８】
一実施形態では、装置３００は記憶前パリティチェックモジュール３１６を含み、該記憶前パリティチェックモジュールは、既存のパリティ情報及びＥＣＣチェックビットのパリティを用いて、データ受信モジュール２０２によって受信される記憶ブロックのデータのパリティを検査する。記憶前パリティチェックモジュール３１６は、データ記憶モジュール２０８が記憶ブロック及びＥＣＣチェックビットを格納する前にパリティを検査する。記憶前パリティチェックモジュール３１６は典型的には、受信されたデータに誤りがないという別のチェックである。
【００７９】
パリティチェックのタイミングは、誤り訂正能力に隙間がないのを確実にするのを助けることができる。記憶前パリティチェックモジュール３１６は、ＥＣＣ生成モジュール２０４がＥＣＣチェックビットを生成した後に、又はＥＣＣチェックビット生成プロセスの一部として、パリティを検査することができることが好ましい。ＥＣＣチェックビット生成プロセス後、又はＥＣＣチェックビット生成プロセス中にパリティを検査することによって、記憶前パリティチェックモジュール３１６は、データが後にＥＣＣチェックビットによって保護されるＥＣＣチェックビットを生成するための処理まで、そしてその最中にビット誤りが生じていないことを確実にするのを助ける。
【００８０】
読出し側では、装置３００は、一実施形態において、検索後パリティチェックモジュール３１８を含み、該検索後パリティチェックモジュールは、ＥＣＣ検出モジュール３０８及びＥＣＣ訂正モジュール３１２が、検索された記憶ブロックのデータに誤りがあるか否かを判断し終えた後に、検索された記憶ブロック及びＥＣＣチェックビットから生成されるパリティ情報を用いて、検索された記憶ブロック及びＥＣＣチェックビットのパリティを検査する。ここでもまた、ＥＣＣ検出及び訂正後にパリティを検査することは、典型的には、誤り検出能力に隙間がないのを確実にする。
【００８１】
一実施形態では、装置３００は全体整合性モジュール３２０を含み、該全体整合性モジュールは、システム１００によるデータの受信から、データ記憶モジュール２０８がデータセグメントのデータを格納するまで、誤り検出能力に隙間を生じることなくデータの保護を保持する。全体整合性モジュール３２０は典型的には、１つのデータ保護から別のデータ保護への各移行に関連付けられるサブモジュールを含む。たとえば、そのシステムは、記憶コントローラ１０４及びデータ記憶モジュール１０６を備える記憶デバイス１０２を含む場合がある。その際、システム１００は、ネットワーク１１２又はシステムバス（図示せず）を介して、データセグメントを受信する。
【００８２】
典型的には、データセグメントは伝送中にデータを保護するために符号化される。たとえば、そのデータセグメントは、８ｂ／１０ｂ保護方式又は類似のデータ伝送保護方式を用いて保護される。符号化されたデータセグメントが受信されると、記憶コントローラ１０４は、データを復号し、そのデータのためのパリティを生成する。全体整合性モジュール３２０の一部が、復号／パリティ生成プロセスを通じて誤り検出能力に隙間がないのを確実にする。たとえば、全体整合性モジュール３２０は復号化モジュール３２２を含み、該復号化モジュールは、データが符号化された形にあるときからデータがパリティ情報を含むときまで誤り検出能力に隙間がないように単一のプロセスステップにおいて、データセグメントのデータを復号し、結果としてデータセグメントのパリティ及び符号化されていないデータを生成する。８ｂ／１０ｂの例の場合、復号化モジュール３２２は、保護において隙間がないようにパリティを同時に生成する復号器を含む。
【００８３】
別の実施形態では、全体整合性モジュール２３０は符号化モジュール３２４を含み、該符号化モジュールは、データがパリティ情報を含むときからデータが符号化された形になるときまで誤り検出能力に隙間がないように単一のプロセスステップにおいて、パリティ情報で保護されたデータセグメントのデータを符号化し、結果としてデータセグメントの符号化されたデータを生成する。たとえば、上記のように、パリティ生成モジュール３０６は、読み出されたデータのためのパリティ情報を生成する。処理した後に、そのデータは、クライアント１１０又はサーバ１０８のような要求側デバイスに送信される場合がある。典型的には、そのデータは符号化され、その後、８ｂ／１０ｂ符号化方式を用いて再び符号化される場合がある。符号化モジュール３２４は、生成されたパリティ情報を用いてパリティを検査し、誤り検出能力に隙間が存在しないように単一のステップにおいてデータを符号化する。
【００８４】
別の実施形態では、全体整合性モジュール３２０はパリティ整合性モジュール３２６を含み、該パリティ整合性モジュールは、データセグメントのデータのためのパリティ情報が生成されたときから、データ受信モジュール２０２が既存のパリティ情報及び記憶ブロックの形のデータを受信するまで、データセグメントのデータのためのパリティ情報を用いることによって、誤り検出能力に隙間がないように保持する。さらに、パリティ整合性モジュール３２６は、データ検索モジュール３０４が記憶ブロックを検索し、パリティ生成モジュール３０６がそのデータのためのパリティ情報を生成したときから、パリティ情報を用いて保護されるデータが符号化モジュール３２４によって符号化されるまで、誤り検出能力に隙間がないように保持する。別の実施形態では、パリティ整合性モジュール３２６は、データが受信され、符号化モジュール３２２によって復号された時点から、データ記憶デバイス１０６内への記憶、データ記憶デバイス１０６からの検索、その後、符号化モジュール３２４によって送信されるまでの間、データ保護に隙間がないように保持する。
【００８５】
パリティ整合性モジュール３２６は、データの暗号化、データの圧縮、データの暗号解読、データの圧縮解除及び／又はユーザ定義による用途特有の機能のような種々の処理ステップを通じて、パリティを保持する。たとえば、パリティ整合性モジュール３２６は、暗号化プロセスと共に機能して、暗号化中にデータ保護に隙間がないようにする。当業者は、パリティ整合性モジュール３２６が保護に隙間がないように保持することができる他の処理ステップを利用可能であることを理解するであろう。
【００８６】
他の実施形態では、システム１００はシステムバス、ネットワーク１１２、又は他のデバイス及び構成要素を含む。その際、全体整合性モジュール３２０は、他の復号化モジュール３２２、符号化モジュール３２４、パリティ整合性モジュール３２６に類似のモジュール、又はデータセグメントが配置されるサーバ１０８若しくは他のコンピュータ内のＣＰＵ若しくはメモリから、処理及び伝送全体を通じて、記憶中に、並びに、読み出され、処理され、送信される等の全体を通じて、ＣＰＵ又はメモリに戻るまで、誤り検出能力に隙間がないように保護の整合性を保持する他のモジュール又はサブモジュールを含む。ＣＰＵ及び／又はメモリは、ある誤り検出方式を含み、全体整合性モジュール３２０は、メモリ又はＣＰＵの内部からの保護を保持する。当業者は、システム１００内の他のプロセス、デバイス及び構成要素、並びに誤り検出能力に隙間がないように整合性を確保するために全体整合性モジュール３２０と共に機能することができるモジュール又はサブモジュールを理解するであろう。
【００８７】
図５は、本発明による、データを格納しながら、データ保護を高めるための方法５００の一実施形態を示す概略フロー図である。方法５００が開始すると、データ受信モジュール２０２が、記憶ブロックの形のデータ及び関連する既存のパリティ情報を受信する（５０２）。ＥＣＣ生成モジュール２０４が、記憶ブロックのデータのためのＥＣＣチェックビットを生成する（５０４）。ＥＣＣチェックビットは、ブロック符号又は畳み込み符号のような標準的な符号を用いて生成される。
【００８８】
記憶前整合性モジュール２０６が、記憶ブロックのデータ、既存のパリティ情報及びＥＣＣチェックビットを用いて、記憶ブロックのデータ、既存のパリティ情報及びＥＣＣチェックビット記憶ブロックのデータ、既存のパリティ情報及びＥＣＣチェックビットが整合しているか否かを判断する（５０６）。典型的には、ＥＣＣチェックビットパリティモジュール３０２がＥＣＣチェックビットパリティ情報を生成し、独立した論理回路がデータ及び既存のパリティ情報を用いて、代替のパリティ情報を生成し、それがＥＣＣチェックビットパリティ情報と照合される。
【００８９】
記憶前整合性モジュール２０６が、データ、既存のパリティ及びＥＣＣチェックビットが整合していると判断した場合には（５０８）、データ記憶モジュール２０８が、ＥＣＣチェックビットと共に、そのデータを１つの記憶ブロックとして格納する（５１０）。既存のパリティ情報は捨てられ、格納されない。記憶前整合性モジュール２０６が、データ、既存のパリティ及びＥＣＣチェックビットが整合していないと判断する場合には（５０８）、記憶前整合性モジュール２０６が適宜の誤りを生成し（５１２）、その方法５００は終了する。その際、記憶コントローラ１０４は、典型的には、誤りを訂正するか、又は記憶要求を拒否する（fail）のに相応しい動作を行なう。
【００９０】
図６は、本発明による、データの受信からデータの記憶までのデータ保護を高めるための方法６００の一実施形態を示す概略フロー図である。方法６００は、記憶コントローラ１０４及びデータ記憶デバイス１０６を備える記憶デバイス１０２を含むシステム１００により実行される。方法６００が開始すると、復号化モジュール３２２が、誤り検出能力に隙間がないように、データセグメントのためのデータを復号化し（６０２）、そのデータのためのパリティ情報を生成する。記憶コントローラ１０４がデータを処理し、データ及び既存のパリティがデータ受信モジュール２０２によって受信されるまで、暗号化、圧縮等を通じてデータのためのパリティ保護に隙間がないように、パリティ整合性モジュール３２６がパリティ保護を保持する（６０４）。
【００９１】
データ受信モジュール２０２が、データ及び既存のパリティ情報を受信し（６０４）、ＥＣＣ生成モジュール２０４が、ブロック符号、畳み込み符号等の標準的な符号を用いて、データのためのＥＣＣチェックビットを生成する（６０８）。記憶前整合性モジュール２０６が、データ、ＥＣＣチェックビット及び既存のパリティ情報を用いて、整合性を判断する。データ、パリティ情報及びＥＣＣチェックビットが整合している場合には、データ記憶モジュール２０８は、既存のパリティ情報を格納することなく、データ記憶デバイス１０６上にデータ及びＥＣＣチェックビットを格納し（６１２）、方法６００は終了する。当然、当業者は、ＥＣＣチェックビットの復号化、処理、生成中等の任意の誤り検出が記憶コントローラ１０４によって適切に取り扱われることを理解するであろう。
【００９２】
図７は、本発明による、データの記憶からデータを引渡しまでのデータ保護を高めるための方法７００の一実施形態を示す概略フロー図である。方法７００は、記憶コントローラ１０４及びデータ記憶デバイス１０６を備える記憶デバイス１０２を含むシステム１００において実行される。方法７００が開始すると、データ検索モジュール３０４が、読出し要求に応答して、データ記憶デバイス１０６上に格納される記憶ブロック、及びその記憶ブロックのためのＥＣＣチェックビットを検索する（７０２）。パリティ生成モジュール３０６が、検索された記憶ブロックのデータ、及びＥＣＣチェックビットのためのパリティ情報を生成する（７０４）。ＥＣＣ検出モジュール３０８が、検索された記憶ブロックのデータ及び対応するＥＣＣチェックビットを用いてＥＣＣシンドロームを生成し（７０６）、データ内に１又は複数の誤りがあるか否かを判断する。ＥＣＣ訂正モジュール３１２がＥＣＣ検出モジュール３０８と共に機能し、誤りを繰返し検出し訂正する。
【００９３】
記憶後整合性モジュール３１０が、ＥＣＣチェックビット、生成されたパリティ情報及びＥＣＣシンドロームを用いて、データ、パリティ及びＥＣＣシンドロームが整合しているか否かを判断する（７０８）。整合していない場合には、記憶コントローラ１０４が相応しい動作を行うか、又はＥＣＣ検出モジュール３０８及びＥＣＣ訂正モジュール３１２が、繰返し誤りを訂正し続ける。記憶コントローラ１０４が読み出されたデータを処理し、パリティ整合性モジュール３２６が、データが暗号解読及び圧縮解除される間等に、パリティ保護を保持する（７１０）。符号化モジュール３２４が、誤り検出能力に隙間がないように単一のステップにおいて、データを符号化すると共に、パリティをチェックし（７１２）、方法７００は終了する。ここでもまた、パリティチェック、ＥＣＣ誤り検出等を通じて検出される任意の誤りが記憶コントローラ１０４によって適切に取り扱われる。
【００９４】
本発明は、その精神又は不可欠な特徴から逸脱することなく、他の具体的な形で具現される場合もある。記述される実施形態は、あらゆる点において、例示にすぎず、限定するものではない。それゆえ、本発明の範囲は、これまでの説明によってではなく、添付の特許請求の範囲によって指示される。特許請求の範囲の均等の意味及び範囲内に入る全ての変更が、特許請求の範囲内に含まれるべきである。
【図１】
2011516984.tif 000003
【図２】
2011516984.tif 000004
【図３】
2011516984.tif 000005
【図４Ａ】
2011516984.tif 000006
【図４Ｂ】
2011516984.tif 000007
【図５】
2011516984.tif 000008
【図６】
2011516984.tif 000009
【図７】
2011516984.tif 000010
【国際調査報告】
2011516984.tif 000011
2011516984.tif 000012