(57)【要約】  データを格納するためのデバイスは、疑似乱数列である第１の数列を生成するように構成された数列生成器と、第１の数列と第３の数列との相互相関である第２の数列を生成するように構成された相互相関ユニットと、第２の数列をメモリ内に書き込み、メモリから第２の数列を読み出すように構成された書き込み／読み出しユニットとを備え、相互相関ユニットは、第１の数列とメモリから読み出された第２の数列との相互相関を求めることによって第３の数列を再構築するようにさらに構成される。
2013539149.tif 000002
【特許請求の範囲】
【請求項１】
疑似乱数列を含む第１の数列を生成するように構成された数列生成器と、
前記第１の数列と第３の数列との相互相関を含む第２の数列を生成するように構成された相互相関ユニットと、
前記第２の数列をメモリ内に書き込み、前記メモリから前記第２の数列を読み出すように構成された書き込み／読み出しユニットとを備え、
前記相互相関ユニットは、前記第１の数列と前記メモリから読み出された前記第２の数列との相互相関を求めることによって、および２つの閾値と、前記第１の数列と前記メモリから読み出された前記第２の数列との前記相互相関とを比較することによって、前記第３の数列を再構築するようにさらに構成され、
前記数列生成器は、第１の数列として使用される、最大長数列を生成するように構成されたシフトレジスタを備え、前記数列生成器は、１つまたは複数のタップ位置および前記シフトレジスタのいくつかのカスケード接続されたレジスタのうちの少なくとも１つを変更し、それにより、制御データに応答して前記第１の数列の長さおよびパターンを変更するように構成され、
前記書き込み／読み出しユニットは、前記メモリから読み出された前記第２の数列を前記相互相関ユニットによって生成される第５の数列に加えることによって第４の数列を生成するように構成された加算器を備え、前記書き込み／読み出しユニットは、前記第４の数列を前記メモリに書き込み、前記メモリ内の前記第２の数列を置き換えるようにさらに構成され、
前記相互相関ユニットは、
前記第３の数列を第１のビット系列として格納するように構成された入力レジスタと、
前記第１の数列をシフトするように構成されたカスケード接続されたレジスタを備えるシフトレジスタと、
前記入力レジスタ内に格納されている前記第１のビット系列と前記シフトレジスタ内に格納されている第２のビット系列とのビット毎の乗算を実行するように構成された乗算ユニットと、
前記ビット毎の乗算から結果として得られる乗算されたすべてのビットの総和を求めるように構成された加算ユニットとを備え、
前記乗算ユニットは、前記シフトレジスタ内に格納されている各ビットと前記メモリから読み出された単一の数との乗算を実行して乗算の複数の積を生成するようにさらに構成され、前記相互相関ユニットは、前記複数の乗算の積との一対一対応関係を持つように形成される複数の第２の加算ユニットをさらに備え、前記第２の加算ユニットのうちの少なくとも１つは、前記複数の乗算の積のうちの対応する１つと前記第２の加算ユニットの前記少なくとも１つによって生成される直前の和との総和を生成するように構成され、
前記書き込み／読み出しユニットは、前記第２の数列の第１の部分を第１のストレージデバイス内に書き込み、前記第２の数列の第２の部分を第２のストレージデバイス内に書き込むようにさらに構成され、前記第１のストレージデバイスおよび前記第２のストレージデバイスは、前記メモリの少なくとも一部を含み、
前記書き込み／読み出しユニットは、前記第２の数列の前記第１の部分および前記第２の数列の前記第２の部分をネットワーク経由で前記第１のストレージデバイスおよび前記第２のストレージデバイスに送信するようにさらに構成されるデータを格納するためのデバイス。
【請求項２】
疑似乱数列を含む第１の数列を生成するように構成された数列生成器と、
前記第１の数列と第３の数列との相互相関を含む第２の数列を生成するように構成された相互相関ユニットと、
前記第２の数列をメモリに書き込み、前記メモリから前記第２の数列を読み出すように構成された書き込み／読み出しユニットとを備え、
前記相互相関ユニットは、前記第１の数列と前記メモリから読み出された前記第２の数列との相互相関を求めることによって前記第３の数列を再構築するようにさらに構成されるデータを格納するためのデバイス。
【請求項３】
前記数列生成器は、最大長数列を生成するように構成されたシフトレジスタを備え、前記最大長数列は、前記第１の数列を含む請求項２に記載のデバイス。
【請求項４】
前記数列生成器は、制御データに応答して前記第１の数列の長さおよびパターンを変更するように構成される請求項２に記載のデバイス。
【請求項５】
前記数列生成器は、制御データに応答して１つまたは複数のタップ位置および前記シフトレジスタのいくつかのカスケード接続されたレジスタのうちの少なくとも１つを変更するように構成される請求項３に記載のデバイス。
【請求項６】
前記書き込み／読み出しユニットは、前記メモリから読み出された前記第２の数列を前記相互相関ユニットによって生成される第５の数列に加えることによって第４の数列を生成するように構成された加算器を備え、前記書き込み／読み出しユニットは、前記第４の数列を前記メモリに書き込み、前記メモリ内の前記第２の数列を置き換えるようにさらに構成される請求項２に記載のデバイス。
【請求項７】
前記相互相関ユニットは、２つの閾値と、前記第１の数列と前記メモリから読み出された前記第２の数列との前記相互相関とを比較することによって、前記第３の数列を再構築するように構成される請求項２に記載のデバイス。
【請求項８】
前記相互相関ユニットは、
前記第３の数列を第１のビット系列として格納するように構成された入力レジスタと、
前記第１の数列をシフトするように構成されたカスケード接続されたレジスタを備えるシフトレジスタと、
前記入力レジスタ内に格納されている前記第１のビット系列と前記シフトレジスタ内に格納されている第２のビット系列とのビット毎の乗算を実行するように構成された乗算ユニットと、
前記ビット毎の乗算から結果として得られる乗算されたすべてのビットの総和を求めるように構成された加算ユニットとを備える請求項２に記載のデバイス。
【請求項９】
前記乗算ユニットは、前記シフトレジスタ内に格納されている各ビットと前記メモリから読み出された単一の数との乗算を実行して乗算の複数の積を生成するようにさらに構成され、前記相互相関ユニットは、前記複数の乗算の積との一対一対応関係で構成される複数の第２の加算ユニットをさらに備え、前記第２の加算ユニットのうちの少なくとも１つは、前記複数の乗算の積のうちの対応する１つと前記第２の加算ユニットの前記少なくとも１つによって生成される直前の和との総和を生成するように構成される請求項８に記載のデバイス。
【請求項１０】
前記メモリとして使用されるストレージユニットをさらに備える請求項２に記載のデバイス。
【請求項１１】
前記書き込み／読み出しユニットは、前記第２の数列の第１の部分を第１のストレージデバイス内に書き込み、前記第２の数列の第２の部分を第２のストレージデバイス内に書き込むようにさらに構成され、前記第１のストレージデバイスおよび前記第２のストレージデバイスは、前記メモリの少なくとも一部を含む請求項２に記載のデバイス。
【請求項１２】
前記書き込み／読み出しユニットは、前記第２の数列の前記第１の部分および前記第２の数列の前記第２の部分をネットワーク経由で前記第１のストレージデバイスおよび前記第２のストレージデバイスに送信するようにさらに構成される請求項１１に記載のデバイス。
【請求項１３】
疑似乱数列を含む第１の数列を生成することと、
前記第１の数列と第３の数列との相互相関である第２の数列を生成することと、
前記第２の数列をメモリに書き込むことと、
前記第２の数列を前記メモリから読み出すことと、
前記第１の数列と前記メモリから読み出された前記第２の数列との相互相関を求めることによって前記第３の数列を再構築することとを含むデータを書き込み、読み出す方法。
【請求項１４】
第１の数列を前記生成することは、最大長数列を生成するように構成されたシフトレジスタを使用し、前記最大長数列は、前記第１の数列を含む請求項１３に記載の方法。
【請求項１５】
制御データに応答して前記第１の数列の長さおよびパターンを変更することをさらに含む請求項１３に記載の方法。
【請求項１６】
前記メモリから読み出された前記第２の数列を前記相互相関ユニットによって生成される第５の数列に加えることによって第４の数列を生成ことと、
前記第４の数列を前記メモリに書き込んで、前記メモリ内の前記第２の数列を置き換えることとをさらに含む請求項１３に記載の方法。
【請求項１７】
前記第３の数列を再構築することは、２つの閾値と、前記第１の数列と前記メモリから読み出された前記第２の数列との前記相互相関とを比較することによって、前記第３の数列を再構築することを含む請求項１３に記載の方法。
【請求項１８】
前記第２の数列をメモリに書き込むことは、
前記第２の数列の第１の部分を第１のストレージデバイスに書き込むことと、
前記第２の数列の第２の部分を第２のストレージデバイスに書き込むこととを含み、前記第１のストレージデバイスおよび前記第２のストレージデバイスは、前記メモリの少なくとも一部を含む請求項１３に記載の方法。
【請求項１９】
前記第２の数列をメモリに書き込むことは、前記第２の数列の前記第１の部分および前記第２の数列の前記第２の部分をネットワーク経由で前記第１のストレージデバイスおよび前記第２のストレージデバイスに送信することを含む請求項１８に記載の方法。
【請求項２０】
疑似乱数列を含む第１の数列を生成することと、
前記第１の数列と第３の数列との相互相関を含む第２の数列を生成することと、
前記第２の数列をメモリに書き込み、前記第２の数列の格納位置を示すインデックスが前記メモリ内に存在しないようにすることとを含むデータを格納する方法。
【請求項２１】
前記第２の数列が前記メモリに書き込まれる位置を識別することと、
前記第２の数列を前記メモリから読み出すことを、前記メモリ内の前記位置にアクセスすることによって行うことと、
前記第１の数列と前記メモリから読み出された前記第２の数列との相互相関を求めることによって、前記第３の数列を再構築することとをさらに含む請求項２０に記載の方法。
【請求項２２】
第２の数列が前記メモリに書き込まれる前記位置を暗号化することと、
前記暗号化された位置を前記メモリ内に格納することとをさらに含み、
位置を識別することは、
前記暗号化された位置を前記メモリから取り出すことと、
前記取り出された暗号化された位置を復号して前記位置を識別することとを含む請求項２１に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本出願は、一般的にデータを格納するためのデバイスに関係する。
【背景技術】
【０００２】
本明細書において別段の指示のない限り、この節で説明するアプローチは、本出願の請求項に対する従来技術ではなく、またこの節に含めることによって従来技術であると認められることはない。
【０００３】
メモリデバイスの記憶容量を増大させると、さまざまな技術的問題が生じるだけでなく、アプリケーションにも問題が生じる。たとえば、メモリデバイスの高い生産収率を達成するのが次第に困難になって行くことが挙げられる。妥当なコストでメモリデバイスを製造するために、デバイス１つ当たりの誤りビットの割合増加が許容されなければならない場合がある。
【０００４】
さらに、記憶容量を増やすことは、ストレージデバイスが故障したときに、データ損失が高まり、したがって損害が大きくなる可能性があることを意味する。ポータブルストレージデバイスの場合、このようなデバイスが盗まれると、結果として、機密保護違反のより大きなリスクを負う可能性がある。膨大な量のデータを単一のストレージデバイス内に局在させることを回避するのがよいと思われる。
【発明の概要】
【課題を解決するための手段】
【０００５】
データを格納するためのデバイスは、疑似乱数列である第１の数列を生成するように構成された数列生成器と、第１の数列と第３の数列との相互相関である第２の数列を生成するように構成された相互相関ユニットと、第２の数列をメモリ内に書き込み、メモリから第２の数列を読み出すように構成された書き込み／読み出しユニットとを備え、相互相関ユニットは、第１の数列とメモリから読み出された第２の数列との相互相関を求めることによって第３の数列を再構築するようにさらに構成される。
【０００６】
前述の説明は、例示的なものにすぎず、いっさい制限することを意図されていない。上述の例示的な態様、実施形態、および特徴に加えて、図面を参照し、以下の詳細な説明を参照することによってさらなる態様、実施形態、および特徴も明らかになるであろう。
【０００７】
本開示の発明対象は、明細書の結びのところで特に指摘され、明確に主張される。本開示の前記の特徴および他の特徴は、付属の図面を参照することで、以下の説明および付属の請求項からより完全に明らかになるであろう。これらの図面は本開示による複数の実施形態のみを示し、したがって本開示の範囲を制限するものであると考えるべきでないことを理解してもらい、そのうえで、付属の図面を用いてさらに具体的に、詳細に本開示を説明する。
【図面の簡単な説明】
【０００８】
【図１】一実施形態によりデータを格納するための例示的なデバイスを示す図面である。
【図２】相互相関ユニットおよび書き込みオペレーションに関係する書き込み／読み出しユニットの例示的な構成を示す図面である。
【図３】相互相関ユニットおよび読み出しオペレーションに関係する書き込み／読み出しユニットの例示的な構成を示す図面である。
【図４】最大長数列を生成するための線形フィードバックシフトレジスタの一例を示す図面である。
【図５】調節可能な長さとパターンとを持つ線形フィードバックシフトレジスタの構成の一例を示す図面である。
【図６Ａ】最大長数列の一例を示す図面である。
【図６Ｂ】最大長数列の一例を示す図面である。
【図６Ｃ】最大長数列の一例を示す図面である。
【図７Ａ】相互相関の例示的な計算の概略示す図面である。
【図７Ｂ】図７Ａの例示的な相互相関をグラフ形式で示す図面である。
【図８】読み出しオペレーションのときに計算される相互相関の一例を示す図面である。
【図９Ａ】最大長数列の別の例を示す図面である。
【図９Ｂ】最大長数列の別の例を示す図面である。
【図１０Ａ】読み出しオペレーションのときに計算される相互相関の例を示す図面である。
【図１０Ｂ】読み出しオペレーションのときに計算される相互相関の例を示す図面である。
【図１０Ｃ】読み出しオペレーションのときに計算される相互相関の例を示す図面である。
【図１１】データを格納するための例示的なデバイスを示す図面である。
【図１２】ホログラフィックデータを格納するために複数のストレージデバイスを使用する一例を示す図である。
【図１３】ホログラムメモリを使用する例示的なコンピュータシステムを示す図面である。
【図１４】安全な方法でホログラフィックデータを格納するための例示的なプロセスを示すフローチャートである。
【図１５】図１４に示されているプロセスによって格納されるホログラフィックデータを復元するための例示的なプロセスを示すフローチャートである。
【発明を実施するための形態】
【０００９】
これ以降、実施形態は、図面を参照しつつ説明される。
【００１０】
以下の説明では、請求項に記載の発明対象を完全に理解できるように具体的詳細とともにさまざまな実施例を述べる。しかし、当業者であれば、請求項に記載の発明対象は本明細書で開示されている具体的詳細が多少省かれていても実施されうることを理解するであろう。さらに、いくつかの状況において、よく知られている方法、手順、システム、コンポーネント、および／または回路については、請求項に記載の発明対象をいたずらにわかりにくくしないために、細部にわたって説明することはしていない。以下の詳細な説明では、詳細な説明の一部をなす、添付図面が参照される。図面中の類似の記号は、典型的には、文脈上別のものを示していない限り類似のコンポーネントを明示する。詳細な説明、図面、および請求項で説明されている例示的な実施形態は、制限することを意図されていない。他の実施形態も利用することができ、また本明細書に提示されている発明対象の精神または範囲から逸脱することなく、他の変更を加えることができる。本明細書で一般的に説明され、また図に例示されているような本開示の実施形態は、さまざまな異なる構成による配置、置換、組み合わせ、設計が可能であり、すべて明示的に考察され、本開示の一部をなすことは容易に理解されるであろう。
【００１１】
図１は、一実施形態によりデータを格納するための例示的なデバイスを示す図面である。図１に示されている構成は、乱数列生成器１０、相互相関ユニット１１、書き込み／読み出しユニット１２、制御ユニット１３、およびストレージユニット１４を備える。データを格納するためのデバイスは、コンピュータに内蔵することができるか、または外付けハードディスクドライブ、ＵＳＢフラッシュドライブ、メモリカード、コンパクトディスク、デジタル多用途ディスクなどの個別のデータストレージユニットであってよい、ストレージユニット１４にデータを格納することができる、データＩ／Ｏ（つまり、データ入出力）インターフェースユニットなどの、コンピュータの一部とすることができる。データを格納するためのデバイスは、ホスト装置から分離可能なポータブルストレージユニットとすることができる。このような場合、図１に示されているすべての要素はデバイス内に備えることができ、これは外付けハードディスクドライブ、ＵＳＢフラッシュドライブ、メモリカードなどであってよい。
【００１２】
乱数列生成器１０は、疑似乱数列であってよい第１の数列を生成することができる。乱数列生成器１０は、生成された数列が十分に鋭い自己相関を示しうる限り、線形合同法、混合線形合同法、平方採中法、線形フィードバックシフトレジスタ法、または同様の方法などの乱数生成法を使用することができる。つまり、生成された数列の自己相関は、原点のところにピークを有するが（つまり、ゼロシフト）、残りの点における自己相関の値は、ゼロに近いものとしてよい。このような自己相関により、後で説明されるように数列を再構築することが可能になりうる。
【００１３】
相互相関ユニット１１は、第１の数列と第３の数列との相互相関である第２の数列を生成することができる。第３の数列は、ストレージユニット１４に格納するために外部ソースから入力されるデータとして供給される入力数列であってよい。書き込み／読み出しユニット１２は、第２の数列を書き込みオペレーションでストレージユニット１４に書き込みおよび／またはストレージユニット１４内に書き込むことができる。読み出しオペレーションでは、書き込み／読み出しユニット１２は、ストレージユニット１４から第２の数列を読み出すことができる。読み出しオペレーション時に、相互相関ユニット１１は、第１の数列とストレージユニット１４から読み出された第２の数列との相互相関を求めることによって第３の数列を再構築することができる。
【００１４】
書き込みオペレーションに対する第１の相互相関の後の読み出しオペレーションに対するこの第２の相互相関は、第１の数列の自己相関を計算するために使用することができ、したがって再構築された数列はデータ入力列と第１の数列の自己相関との間の相互相関となりうる。第１の数列は、自己相関が衝撃関数（つまり、ディラックのデルタ関数）に似た鋭いピークを持ちうる疑似乱数列であってよいため、データ入力列と読み出しオペレーション時の第１の数列の自己相関との間の相互相関は、データ入力列を再構築するために使用することができる。この再構築プロセスについて以下で詳細に説明する。
【００１５】
データを格納するこの方法において、データ入力列（つまり、第３の数列）に含まれる情報は、より長いより冗長な数列（つまり、第２の数列）として分散され、分配され、ストレージユニット１４内に格納されうる。格納されているデータの一部が破損もしくは喪失している可能性があるとしても、上で説明されている再構築プロセスを通じてデータ入力列全体を再構築することができる。いくつかの状況において、本明細書でさらに詳しく説明されるように、データ入力列全体を格納されている数列の断片から再構築することができる。以下では、便宜上、このデータ格納方式は、光学的ホログラムの類推から「ホログラムメモリ」と称されうる。さらに、ホログラムメモリ内に格納されているデータは、ホログラフィックデータと称されうる。
【００１６】
制御ユニット１３は、乱数列生成器１０、相互相関ユニット１１、および書き込み／読み出しユニット１２のオペレーションを制御することができる。制御ユニット１３は、外部ソースから制御データを受け取ることができる。制御データは、乱数列生成器１０によって生成される第１の数列（つまり、疑似乱数列）の長さおよびパターンを指定することができる。たとえば、乱数列生成器１０は、第１の数列として使用されうる最大長数列を生成するためのシフトレジスタ（つまり、線形フィードバックシフトレジスタ）とすることができる。そのような場合、制御ユニット１３は、制御データに従って乱数列生成器１０を制御することができ、したがって１つまたは複数のタップ位置および最大長数列を生成するために効果的に使用されるシフトレジスタのいくつかのカスケード接続されたレジスタのうちの少なくとも１つが乱数列生成器１０内で変更されうる。つまり、乱数列生成器１０は、制御データに応答して第１の数列の長さおよびパターンを変更することができる。線形フィードバックシフトレジスタが乱数列生成器１０として使用される場合、制御ユニット１３は、初期状態を線形フィードバックシフトレジスタに設定することができ、したがって、線形フィードバックシフトレジスタのいくつかのレジスタは、初期状態ですべてゼロに設定されなくてもよい。
【００１７】
制御ユニット１３は、外部ソースから、読み出しオペレーション（「Ｒ」）、書き込みオペレーション（「Ｗ」）、または追加の書き込みオペレーション（「ＡＷ」）を示すデータ、ならびに書き込み／読み出し開始アドレスを示すアドレスデータをさらに受信することができる。書き込みオペレーションでは、制御ユニット１３により、相互相関ユニット１１がデータ入力（つまり、上述の第３の数列）をデータ入力列より著しく長いデータ列（つまり、上述の第２の数列）に変換することになる可能性がある。次いで、制御ユニット１３により、外部から供給される書き込みアドレスによって指定されたアドレスから開始することによって書き込み／読み出しユニット１２が得られた第２の数列をストレージユニット１４に書き込むことができる。第２の数列は、長い数列とすることができ、ストレージユニット１４内の多数の連続するアドレスに格納することができる。
【００１８】
読み出しオペレーションでは、制御ユニット１３により、外部から供給される読み出しアドレスから開始することによって書き込み／読み出しユニット１２が第２の数列をストレージユニット１４から読み出すことができる。第２の数列は、長い数列とすることができ、ストレージユニット１４内の多数の連続するアドレスから連続的に読み出すことができる。次いで、制御ユニット１３により、第２の数列と乱数列生成器１０によって生成される第１の数列との間の相互相関を計算することによって相互相関ユニット１１が第２の数列を第２の数列より著しく短いデータ列（つまり、再構築されたデータ入力列）に変換することができる。第２の数列は、第１の数列とデータ入力列（つまり、第３の数列）との間の相互相関であってよく、ストレージユニット１４からデータを取り出した後、第２の数列と第１の数列との相互相関を再度求めることができる。その結果得られた数列は、データ入力列と第１の数列の自己相関との間の相互相関となりうる。第１の数列の自己相関は鋭いピークを持ちうるため、データ入力列と読み出しオペレーション時の第１の数列の自己相関との間の相互相関は、データ入力列を再構築するために使用することができる。
【００１９】
追加の書き込みオペレーションでは、制御ユニット１３により、相互相関ユニット１１は、新しいデータ入力と第１の数列との間の相互相関を書き込みオペレーションと同様にして計算することができる。次いで、書き込み／読み出しユニット１２は、ストレージユニット１４から読み出された第２の数列を新しいデータ入力に対する相互相関ユニット１１によって生成される第５の数列に加えることによって第４の数列を生成することができる。さらに、書き込み／読み出しユニット１２は、第４の数列をストレージユニット１４に書き込み、ストレージユニット１４内の第２の数列を置き換えることができる。この追加の書き込みオペレーションについて以下で詳細に説明する。
【００２０】
制御ユニット１３は、クロック信号およびタイミング信号を乱数列生成器１０、相互相関ユニット１１、および書き込み／読み出しユニット１２に供給することによって乱数列生成器１０、相互相関ユニット１１、および書き込み／読み出しユニット１２の間のデータ交換タイミングをさらに調整することができる。このようにして、制御ユニット１３は、乱数列生成器１０、相互相関ユニット１１、および書き込み／読み出しユニット１２の間の同期を維持することができる。乱数列生成器１０は、長い数列であってよい第１の数列を生成し、この数列内の数を相互相関ユニット１１に順次供給してゆくことができる。書き込みオペレーションにおいて、相互相関ユニット１１は、乱数列生成器１０から供給される第１の数列に関して適切なタイミングで第２の数列を生成することを開始することができる。次いで、書き込み／読み出しユニット１２が、制御ユニット１３によって指示された適切なタイミングでストレージユニット１４に第２の数列を書き込むことを開始することができる。追加の書き込みオペレーションにおいて、書き込み／読み出しユニット１２は、相互相関ユニット１１から供給された第４の数列のタイミングと一致するような適切なタイミングでストレージユニット１４から第２の数列を読み出すことを開始することができる。読み出しオペレーションにおいて、書き込み／読み出しユニット１２は、乱数列生成器１０から相互相関ユニット１１に供給される第１の数列のタイミングと一致するような適切なタイミングでストレージユニット１４から読み出された第２の数列を相互相関ユニット１１に供給することができる。
【００２１】
図２は、相互相関ユニット１１および書き込みオペレーションに関係する書き込み／読み出しユニット１２の構成の一例を示す図面である。図２では、図１のと同じ要素は、同じ参照番号で参照され、その説明が省かれている場合がある。
【００２２】
図２に示されている構成は、図１にすでに示されている乱数列生成器１０およびストレージユニット１４に加えて、レジスタ２１、カスケード接続されたレジスタ２２−１から２２−Ｌ−１からなるシフトレジスタ、乗算ユニット２３−１から２３−Ｌ、および加算ユニット２４を備えることができ、相互相関ユニット１１の一部をなすものとしてよい。図２に示されている構成は、書き込み／読み出し制御ユニット３１、バッファ−＆−加算器ユニット３２、およびアドレス生成器３３をさらに備えることができ、書き込み／読み出しユニット１２の少なくとも一部をなすものとしてよい。
【００２３】
レジスタ２１は、第３の数列（つまり、データ入力列）をビット系列Ｓ［０］からＳ［Ｌ−１］として格納することができる。乱数列生成器１０によって生成される第１の数列は、この例においてビット列とすることができる。このビット列は、制御ユニット１３から供給されるクロック信号と同期してカスケード接続されたレジスタ２２−１から２２−Ｌ−１へシフトして通過しうる。乗算ユニット２３−２から２３−Ｌは、それぞれ、レジスタ２１に格納されているビット系列Ｓ［Ｌ−２］からＳ［０］とカスケード接続されたレジスタ２２−１から２２−Ｌ−１に格納されているビット系列とのビット毎の乗算を実行することができる。乗算ユニット２３−１は、レジスタ２１に格納されているビットＳ［Ｌ−１］と乱数列生成器１０から直接出力されるビットとの乗算を実行することができる。乗算ユニット２３−１に入力されるビットを格納するために乱数列生成器１０とレジスタ２２−１との間に追加のレジスタを備えることができる。あるいは、乱数列生成器１０の出力段のところの内部レジスタをカスケード接続されたレジスタのうちの１つと見なすことができる。このような場合、乗算ユニット２３−２から２３−Ｌは、それぞれ、レジスタ２１に格納されているビット系列Ｓ［Ｌ−１］からＳ［０］とカスケード接続されたレジスタに格納されているビット系列とのビット毎の乗算を実行することができると言って差し支えない。さらに、加算ユニット２４は、ビット毎の乗算から結果として得られる乗算されたすべてのビットの総和を求めることができる。
【００２４】
書き込み／読み出し制御ユニット３１は、図１の制御ユニット１３から書き込みオペレーション「Ｗ」または読み出しオペレーション「Ｒ」を示すデータを受信することができ、ストレージユニット１４にデータを書き込み、ストレージユニット１４からデータを読み出すようにストレージユニット１４を制御することができる。制御ユニット１３からのこの指示データは、追加の書き込みオペレーションにおいて読み出しオペレーション「Ｒ」および書き込みオペレーション「Ｗ」を交互に示すことができる。バッファ−＆−加算器ユニット３２は、図１の制御ユニット１３から書き込みオペレーション「Ｗ」または追加の書き込みオペレーション「ＡＷ」を示すデータを受信することができる。書き込みオペレーションの場合、バッファ−＆−加算器ユニット３２は、加算ユニット２４の出力データをそのままストレージユニット１４に供給し、中に格納することができる。バッファ−＆−加算器ユニット３２内の何らかのデータバッファリングを必要に応じて実行することができる。追加の書き込みオペレーションの場合、バッファ−＆−加算器ユニット３２は、ストレージユニット１４から取り出されたデータを加算ユニット２４の出力データに加算し、その後、その結果得られた総和をストレージユニット１４に供給し、中に格納することができる。この総和は、ストレージユニット１４内の取り出されたデータを置き換えることができる。
【００２５】
アドレス生成器３３は、図１の制御ユニット１３からアドレスデータを受け取り、アドレス生成器３３は、アドレスデータによって指定されたアドレスから開始するアドレスをカウントアップするカウンターとして使用される。したがって、書き込みオペレーションまたは追加の書き込みオペレーションにおいて連続する書き込みデータは、ストレージユニット１４内のアドレス生成器３３よって生成される連続するアドレスに格納されうる。アドレス生成器３３によるそれぞれのアドレスのインクリメントと同期して、乱数列生成器１０は、新規ビットを生成し、カスケード接続されたレジスタ２２−１から２２−Ｌ−１に格納されているビット系列を右シフトすることができる。読み出しオペレーションでは、連続する読み出しデータは、アドレス生成器３３によって生成された連続するアドレスから取り出すことができる。
【００２６】
図３は、相互相関ユニット１１および読み出しオペレーションに関係する書き込み／読み出しユニット１２の構成の一例を示す図面である。図３では、図２のと同じ要素は、同じ参照番号で参照され、その説明が省かれている場合がある。
【００２７】
図３に示されている構成は、図２にすでに示されているものに加えて、複数の加算ユニット２５−１から２５−Ｌを備えることができ、これは相互相関ユニット１１の一部であってよい。乗算ユニット２３−１から２３−Ｌは、図２に示されている場合のものと異なる入力を受け取ることができる。図２の構成と図３の構成との間の入力の切り替えは、乗算ユニット２３−１から２３−Ｌの入力ノードにスイッチを備えることによって実行されうる。あるいは、図２の構成で使用される乗算ユニットに加えて図３の構成用に別の乗算ユニットを備えることができる。
【００２８】
乗算ユニット２３−１から２３−Ｌは、シフトレジスタ（たとえば、カスケード接続されたレジスタ２２−１から２２−Ｌ−１および乱数列生成器１０内の１つの追加レジスタ）内に格納されている各ビットとストレージユニット１４から読み出された単一の数との乗算を実行することができる。加算ユニット２５−１から２５−Ｌは、乗算の結果である複数の積との一対一対応関係を持つように形成されうる。加算ユニット２５−１から２５−Ｌの１つは、複数の積のうちの対応する１つと加算ユニット２５−１から２５−Ｌのうちの１つによって生成される直前の和との総和を生成することができる。つまり、それぞれの加算ユニットは、現在の出力を現在の入力に加えて、更新された出力を生成することができる。
【００２９】
加算ユニット２５−１から２５−Ｌの出力が得られる毎に、次の計算が開始する。つまり、書き込み／読み出し制御ユニット３１は、ストレージユニット１４から次の数を読み出すことができる。乱数列生成器１０は、次のビットを生成することができ、したがってカスケード接続されたレジスタ２２−１から２２−Ｌ−１に格納されているビット列を１ビット右にシフトすることができる。乗算ユニット２３−１から２３−Ｌは、乗算を実行し、次いで、加算ユニット２５−１から２５−Ｌによって実行される加算オペレーションを実行することができる。これは、ストレージユニット１４に格納されている第２の数列の系列全体がストレージユニット１４から読み出され、乗算ユニット２３−１から２３−Ｌによる乗算が適用されるまで続けられる。第２の数列の系列全体が読み出され、乗算が適用された後、加算ユニット２５−１から２５−１の出力をそれぞれＳ［０］からＳ［Ｌ−１］からなる再構築されたビット系列としてレジスタ２１内に格納することができる。
【００３０】
図４は、最大長数列を生成するための線形フィードバックシフトレジスタの一例を示す図面である。最大長数列生成器は、１つまたは複数の排他的ＯＲゲートとカスケード接続されたレジスタからなるシフトレジスタとを備えることができる。所定のレジスタからのタップ出力を排他的ＯＲゲートに供給し、すべてのタップ出力の排他的ＯＲによる総和を初段レジスタの入力にフィードバックすることができる。図２の例では、第２および第３のレジスタからのタップ出力を排他的ＯＲゲートに供給することができる。フィードバックにどのタップ出力を使用できるかによって、与えられた線形フィードバックシフトレジスタが最大長数列を生成できるかどうかが決まる。
【００３１】
Ｎ個のレジスタからなる最大長数列生成器は、長さ２Ｎ−１の数列を生成することができる。最大長数列の統計的特性は十分に研究されている。便宜上、ビット値「１」は「１」として取り扱い、ビット値「０」は「−１」として取り扱うものとすることができる。「１」と「１」との乗算は「１」であり、「１」と「−１」との乗算は「−１」であり、「−１」と「−１」との乗算は「１」である。このような配置構成により、「２Ｎ−１」の最大自己相関値は、ゼロビットシフトに関して観察されうるが、１ビットまたはそれ以上の位相シフトの結果、自己相関値は「−１」となる。
【００３２】
図５は、調節可能な長さとパターンとを持つ線形フィードバックシフトレジスタの構成の一例を示す図面である。図５に例示されている線形フィードバックシフトレジスタは、レジスタ４１−１から４１−ｎ、ＡＮＤゲート４２−１から４２−ｎ、および排他的ＯＲゲート４３−１から４３−ｎ−１を備えることができる。レジスタ４１−ｉ（ｉ＝１、２、．．．、またはｎ）の出力をＡＮＤゲート４２−ｉの２つの出力のうちの１つに印加することができる。ＡＮＤゲート４２−ｉの他の入力は、係数ａｉを受け取ることができる。ＡＮＤゲート４２−ｉの出力を排他的ＯＲゲート４３−ｉに供給することができる。
【００３３】
係数ａ１からａｎ−１を「０」または「１」のいずれかに設定することで、線形フィードバックシフトレジスタの所望の構成を形成することが可能になる。たとえば、ａ２およびａ３を「１」に設定し、残りすべての係数ａ１およびａ４からａｎ−１を「０」に設定することで、最大長数列生成器を図４に例示されているようにすることができる。制御ユニット１３は、タップ位置、および最大長数列を生成するために事実上使用されるカスケード接続されたレジスタの数を選択するためにこれらの係数を設定することができる。このようにして、図１の乱数列生成器１０は、制御データに応答して第１の数列の長さおよびパターンを変更することができる。図４および図５に例示されている線形フィードバックシフトレジスタは、フィボナッチ構成の線形フィードバックシフトレジスタとすることができるけれども、ガロア構成の線形フィードバックシフトレジスタを代わりに使用することもできる。
【００３４】
以下では、書き込みオペレーションおよび読み出しオペレーションについて詳細に説明する。２Ｎ−１ビットの長さを有する最大長数列は、ｍ［ｊ］（ｊ＝０、１、２、３、．．．、２Ｎ−２）で表すことができる。データ入力列は、Ｓ［ｉ］（ｉ＝０、１、２、．．．、Ｌ−１）で表すことができる。これらの列のそれぞれの要素は、すでに説明されているように「１」または「−１」のいずれかとすることができる。データ格納列Ｍ［ｊ］（ｊ＝０、１、２、３、．．．、２Ｎ−２）」は、以下のように表すことができる。
［数式１］
【００３５】
【数１】
2013539149.tif 000003
【００３６】
これは、ｍ［０］からｍ［２Ｎ−２］とＳ［０］からＳ［Ｌ−１］との相互相関である。最大長数列は循環していてもよい、つまり、最後の数ｍ［２Ｎ−２］の後に、ｍ［１］からｍ［２Ｎ−２］の別の系列が続きうることを意味していることに留意されたい。
【００３７】
与えられたｊに対する上記の公式（１）によって表される相互相関は、図２に例示されている構成によって単一クロックサイクルで並列計算することができる。この場合、乗算ユニット２３−１から２３−Ｌは、排他的ＮＯＲゲートとして実装されうる。排他的ＮＯＲゲートは、２つの入力が同じである場合に「１」を生成し、２つの入力が互いに異なる場合に「０」を生成することができる。図２の構成において、ｍ［ｊ］およびＳ［ｉ］は、典型的なビット列と同様に「０」または「１」のいずれかをとることができ、したがって、乗算ユニット２３−１から２３−Ｌとして機能する排他的ＮＯＲゲートは、「０」または「１」のいずれかである積を生成することができる。加算ユニット２４は、「０」の入力値を「−１」として、「１」の入力値を「１」として取り扱うことによって０および１の総和が計算できるように構成されうる。その結果得られる総和は、最初から「−１」または「１」のいずれかをとるｍ［ｊ］およびＳ［ｉ］を使用することによって得られる総和に等しいものとしてよい。
【００３８】
さらに、Ｌは、２Ｎ−１より小さく、したがって、Ｌの長さを有するデータは、２Ｎ−１の長さを有するデータ上に分散されうることに留意されたい。Ｌは、２Ｎ−１より小さい場合があるので、任意のｊに対するＭ［ｊ］の値は、少なくとも−（２Ｎ−１）から２Ｎ−１までの範囲内とすることができる。このようにして計算された相互相関は、少なくともＮビットワード幅を有するメモリデバイス内に格納されうる。
【００３９】
データ入力列Ｓ［０］からＳ［Ｌ−１］の一部が変更されうる場合、差のみをストレージユニット１４に格納することができる。たとえば、Ｓ［１］のみがＳ’［１］に変更される場合、「ｍ［０］、ｍ［１］、．．．、［２Ｎ−２］」と「０、Ｓ’［１］−Ｓ［１］、０．．．、０」との相互相関が計算されうる。次いで、この相互相関を、ストレージユニット１４にすでに格納されている可能性のあるｍ［０］からｍ［２Ｎ−２］とＳ［０］からＳ［Ｌ−１］との相互相関に加えることができる。この加算オペレーションの結果をストレージユニット１４に格納し、元の相互相関を置き換えることができる。これは、すでに説明されている追加の書き込みオペレーション「ＡＷ」に対応しうる。
【００４０】
追加の書き込みオペレーション「ＡＷ」は、元のデータ入力列に対して加えられた変更を書き込むために使用されるだけでなく、追加のデータ入力列を書き込むためにも使用されうる。たとえば、ｍ［０］からｍ［２Ｎ−２］とＳ［０］からＳ［Ｌ−１］はすべてゼロに設定されうるＳ［０］からＳ［２Ｌ−１］との相互相関は、元の数列Ｓ［０］からＳ［Ｌ−１］を書き込むために使用されるのと同じ最大長数列ｍ［０］からｍ［２Ｎ−２］を使用することによってストレージユニット１４に追加書き込みすることができる。このような追加の書き込みオペレーションの結果、データ入力列Ｓ［０］からＳ［２Ｌ−１］、つまり、元の数列Ｓ［０］からＳ［Ｌ−１］および追加の数列Ｓ［Ｌ］からＳ［２Ｌ−１］を１つの列としてまとめて格納することができる。
【００４１】
さらに、追加の書き込みオペレーション「ＡＷ」は、同じ最大長数列を使用するだけでなく、異なる最大長数列を使用して新規データ入力列を書き込むこともできる。たとえば、ｍ’［０］からｍ’［２Ｎ−２］と新規入力列Ｓ’［０］からＳ’［Ｌ−１］との相互相関は、ストレージユニット１４に追加書き込みすることができ、ただし、最大長数列ｍ’［０］からｍ’［２Ｎ−２］は、入力列Ｓ［０］からＳ［Ｌ−１］を書き込むために使用される最大長数列ｍ［０］からｍ［２Ｎ−２］と異なっていてもよい。このような追加の書き込みオペレーションの結果、同じメモリロケーションに、数列Ｓ［０］からＳ［Ｌ−１］に加えて新規数列Ｓ’［０］からＳ’［Ｌ−１］を格納することができる。ｍ［０］からｍ［２Ｎ−２］とｍ’［０］からｍ’［２Ｎ−２］との相互相関は、鋭いピークを持ちえないため、再構築プロセスは、それでも、互いに別々に２つのデータ入力列を再構築することができる。このような異なる最大長数列は、タップ位置を変更することよって生成されうる。データ格納列の１つを削除するために、このデータ格納列をストレージユニット１４内に格納されている値から差し引くことができる。
【００４２】
再構築されたデータ列Ｏ［０］からＯ［２Ｎ−２］は、以下のように表すことができる。
［数式２］
【００４３】
【数２】
2013539149.tif 000004
【００４４】
たとえば、Ｏ［０］は、以下のように計算することができる。
［数式３］
【００４５】
【数３】
2013539149.tif 000005
ここで、上記の式中に出現するｍ［ｉ＋ｊ］ｍ［ｊ］の総和は、ｉ＝０については２Ｎ−１に等しく、ｉ＜＞０については−１に等しい。そこで、Ｏ［０］は、以下のように表すことができる。
Ｏ［０］＝（２Ｎ−１）Ｓ［０］−（Ｓ［１］＋Ｓ［２］＋．．．＋Ｓ［Ｌ−１］）
同様にして、０からＬ−１までの範囲の与えられた任意のｋについて、Ｏ［ｋ］は以下のように表すことができる。
Ｏ［ｋ］＝（２Ｎ−１）Ｓ［ｋ］−（Ｓ［０］＋Ｓ［１］＋．．．＋Ｓ［Ｌ−１］−Ｓ［ｋ］）
Ｌ−１より大きい与えられた任意のｋについて、Ｏ［ｋ］は以下のように表すことができる。
Ｏ［ｋ］＝−Ｓ［０］−Ｓ［１］−．．．−Ｓ［Ｌ−１］
Ｌは、２Ｎ−１より小さくてもよいので、適切な閾値を使用することで、誤りなくＯ［ｋ］を再構築することが可能である。
【００４６】
図６Ａから６Ｃは、最大長数列の実際の例を示す図面である。線形フィードバックシフトレジスタのレジスタの数が５である場合、第２のタップ出力および第５のタップ出力をフィードバックに使用することで、３１の長さを有する最大長数列を生成することができる。図６Ａは、このような線形フィードバックシフトレジスタによって生成される最大長数列を示す。この表現では、「１」は「１」として示され、「０」は「−１」として示される。図６Ｂは、最大長数列をグラフ形式で示している。横軸は連続番号を表し、縦軸は「−１」または「１」のいずれかのビット値を表す。図６Ｃは、最大長数列の自己相関を例示している。図示されているように、自己相関は、ゼロシフト点で最大値を有し、これは原点と３２番目毎の数列位置に対応する。ピークの値は３１であり、残りの点の値は−１である。
【００４７】
図７Ａは、相互相関の計算の概略示す図面である。この例で、図６Ａおよび図６Ｂに例示されている最大長数列は、データ入力列（１，１，−１，１，−１，−１，１，−１）を分散するために使用される。図７Ａでは、第１の行の一番左の桁５１は、データ入力列の最初の数であるものとしてよい。第１の行の数列５２は、図６Ａに例示されている最大長数列であってよい。第２の行の一番左の桁５３は、データ入力列の第２の数であるものとしてよい。第２の行の数列５４は、１ビットだけ左にシフトされた図６Ａに例示されている最大長数列であってよい。同様に、ｉ番目の行の一番左の桁は、データ入力列のｉ番目の数であってよく、ｉビットだけ左にシフトされた最大長数例は、ｉ番目の行上に例示されうる。与えられた行内の最大長数列のそれぞれの要素に同じ行の一番左の桁を乗算することができる。その結果得られる数列は、最下段に示されている相互相関５５を生成するためにビット毎に足し合わせることができる。図７Ｂは、相互相関をグラフ形式で示している。横軸は連続番号を表し、縦軸は相互相関の値を表す。相互相関のこれらの値は、ホログラフィックデータとしてメモリ（つまり、ストレージユニット１４）内に格納することができる。
【００４８】
図８は、読み出しオペレーションのときに計算される相互相関の一例を示す図面である。図６Ｂに例示されている最大長数列は、図７Ｂに例示されているホログラフィックデータと相互相関しているものとしてよい。結果として得られる数列が図８に例示されている。例示されているように、結果として得られる数列は、「＋３０」を中心とする大きな正の値、「−３０」を中心とする大きな負の値、またはゼロに近い中間値を有する。第１の閾値は、０から３０までの間の中点に設定され、第２の閾値は、０から−３０までの間の中点に設定されうる。結果として得られる数列をこれら２つの閾値と比較することによって、データ入力列を再構築することが可能になる。図８を見るとわかるように、結果として得られる数列の一番左の８個の数は、データ入力列（１，１，−１，１，−１，−１，１，−１）の８桁に対応している。この方法で、データ入力列は、読み出しオペレーションのときに相互相関を計算することによって再構築されうる。
【００４９】
図９Ａおよび９Ｂは、最大長数列の別の実際の例を示す図面である。図９Ａは、７個のレジスタからなる線形フィードバックシフトレジスタによって生成される最大長数列を示す。横軸は連続番号を表し、縦軸は「−１」または「１」のいずれかのビット値を表す。この場合、数列の長さは１２７（＝２７−１）である。図９Ｂは、図９Ａに例示されている最大長数列がデータ入力列（１，１，−１，１，−１，−１，１，−１）を分散するために使用されるときに得られる相互相関を示している。横軸は連続番号を表し、縦軸は相互相関の値を表す。相互相関のこれらの値は、ホログラフィックデータとしてメモリ（つまり、ストレージユニット１４）内に格納することができる。
【００５０】
図１０Ａから１０Ｃは、読み出しオペレーションのときに計算される相互相関の例を示す図面である。図９Ａに例示されている最大長数列は、図９Ｂに例示されているホログラフィックデータと相互相関しているものとしてよい。結果として得られる数列が図１０Ａに例示されている。結果として得られる数列の一番左の８個の数は、データ入力列（１，１，−１，１，−１，−１，１，−１）の８桁に対応している。この方法で、データ入力列は、読み出しオペレーションのときに相互相関を計算することによって再構築されうる。
【００５１】
図１０Ｂは、合計１２７個のデータ点のうちの４０個のデータ点でデータが失われる（つまり、この例では「０」に設定される）場合を示している。この場合、読み出しオペレーションのときに相互相関を計算することによって得られる数列は、図１０Ｂに例示されているような誤りを含みうる。点線で示されているような適切な閾値を使用することで、それでもデータ入力列（１，１，−１，１，−１，−１，１，−１）を再構築することが可能になりうる。
【００５２】
図１０Ｃは、合計１２７個のデータ点のうちの８０個のデータ点でデータが失われる（つまり、この例では「０」に設定される）場合を示している。この場合は、適切な閾値を使用することで、それでもデータ入力列（１，１，−１，１，−１，−１，１，−１）が再構築されうる閾値の場合であるものとしてよい。
【００５３】
ホログラムメモリでは、データ入力列に含まれる情報を、冗長的な方法で長いデータ格納列の上に分散し分配することができる。すでに説明されているように、「ホログラムメモリ」という言い回しは、光学的ホログラムの類推から便宜上使用されているにすぎない。この表現は、決して本開示の範囲を制限することを意図していない。データ格納列の長さが増加すると、冗長性も増大する可能性がある。言い換えると、最大長数列の長さとデータ入力列の長さとの比が大きければ大きいほど、ホログラムメモリのロバスト性が高まりうる。たとえば、１５個のレジスタからなる線形フィードバックシフトレジスタは、３２，７６７ビット長である最大長数列を生成することができる。この最大長数列を使用することによって２７３ビットの長さを有するデータ入力列がホログラムメモリ内に格納された場合、データ点の９８．５％が破壊されてもデータ再構築が可能であった。
【００５４】
図１１は、図１に例示されているデータを格納するためのデバイスの変更形態を示す図面である。図１１では、図２のと同じ要素は、同じ参照番号で参照され、その説明が省かれている場合がある。図１１では、ストレージシステムは、複数のストレージユニット１４−１から１４−４を備えることができる。ストレージユニット１４−１から１４−４の数は、図１１に非限定的な例として示されている構成では４である。ストレージユニットの数は、任意の数であってよく、これはさまざまな要因を考慮して選択することができる。
【００５５】
書き込み／読み出しユニット１２は、たとえば、ストレージユニット１４−１内にデータ格納列（つまり、第２の数列）の第１の部分を書き込むことができ、またたとえば、ストレージユニット１４−２内にデータ格納列の第２の部分を書き込むことができる。このようにして、データ格納列を各ロケーションに置かれている複数のストレージデバイス上に分配することができる。ストレージユニット１４−１から１４−４は、ネットワーク１５を通じて書き込み／読み出しユニット１２に接続されうる。このような場合、書き込み／読み出しユニット１２は、データ格納列の第１の部分およびデータ格納列の第２の部分をネットワーク１５に送信することができ、このネットワーク１５を通じてストレージユニット１４−１から１４−４に到達することができる。ネットワーク１５は、イントラネット、インターネット、または単一のロケーションからアクセス可能な異なるロケーションにストレージデバイスを有することができる任意の種類のネットワークとすることができる。
【００５６】
図１２は、ホログラフィックデータを格納するために世界中の複数のストレージデバイスを使用することを示す図である。すでに説明されているように、「ホログラフィックデータ」という言い回しは、光学的ホログラムの類推から便宜上使用されているにすぎない。この表現は、決して本開示の範囲を制限することを意図していない。図１２では、ホログラフィックデータは、データブロック６０−１から６０−８を含むことができる。これらのデータブロック６０−１から６０−８は、インターネットを通じて、たとえば、各データセンターに送信され、そこに格納されうる。データセンターは、世界中に散らばっているものとしてよい。データセンターのうちのどれか１つからデータが盗まれたとしても、ホログラフィックデータを作成するために使用されている最大長数列は知りえない。そのような最大長数列は、可能な最大長数列の数が天文学的に大きなものとなりうるため識別が困難であると思われる。さらに、データブロックは、ホログラフィックデータ全体の一部だけ提供されるので、１つのデータブロックからデータを再構築することが防止されうる。このような場合、最大長数列が識別されたとしても、データの盗まれた部分のみからデータ全体を再構築することはできない。さらに、ホログラフィックデータの一部がテロリストの攻撃、火災、ウイルスの攻撃、自然災害、または同様のものによって破壊されたとしても、残りのデータから元のデータを復元することができる。
【００５７】
図１３は、ホログラムメモリを使用するコンピュータシステムの一例を示す図面である。図１３に例示されているコンピュータシステムは、ＣＰＵ  ７１、ＲＡＭ  ７２、ＲＯＭ  ７３、ＩＯ  Ｉ／Ｆ（つまり、入出力インターフェース）７４、キーボードおよびマウス７５、ディスプレイ７６、バス７７、ＩＯ  Ｉ／Ｆ  ７８、およびハードディスクドライブ７９を備えることができる。キーボードおよびマウス７５は、ユーザインターフェースを備え、コンピュータシステムを操作するためのさまざまなコマンドおよびデータ要求または同様の要求に応えるユーザ応答を受け取ることができる。ディスプレイ７６は、液晶ディスプレイまたは同様のものとすることができる。ディスプレイ７６は、コンピュータシステムによって実行される処理の結果を表示することができる。ディスプレイ７６は、ユーザがコンピュータシステムと通信することを可能にするさまざまなデータを表示することもできる。ハードディスクドライブ７９は、ストレージデバイスの一例にすぎず、代わりに、ＵＳＢフラッシュドライブ、メモリカード、コンパクトディスク用のディスクドライブ、デジタル多用途ディスクなどの他の種類のストレージデバイスとすることもできる。
【００５８】
ホログラフィックデータを作成して、ハードディスクドライブ７９に格納するために使用されるコンピュータプログラムをハードディスクドライブ７９に用意することができる。キーボードおよびマウス７５を通じてプログラム実行のためユーザ命令が入力された後、ＣＰＵ  ７１は、プログラムをハードディスクドライブ７９からＲＡＭ  ７２にロードすることができる。ＣＰＵ  ７１は、作業領域としてＲＡＭ  ７２の利用可能なメモリ空間を使用することによってＲＡＭ  ７２にロードされたプログラムを実行することができ、そのような必要性が生じたときにユーザと通信しながら処理を続けることができる。ＲＯＭ  ７３は、そこに、コンピュータシステムの基本オペレーションを制御することを目的とする制御プログラムを格納することができる。
【００５９】
Ｉ／Ｏ  ＩＦ  ７８は、乱数列生成器１０に対応するホログラムユニット８１、相互相関ユニット１１、書き込み／読み出しユニット１２、および図１に例示されている制御ユニット１３を備えることができる。ホログラムユニット８１が備えられていないとしても、ホログラムデータは、ＣＰＵ  ７１によって生成され、ＣＰＵ  ７１は計算により最大長数列などの乱数列を生成することができ、相互相関を計算する。ホログラムユニット８１またはＣＰＵ  ７１によって生成されるホログラフィックデータは、ハードディスクドライブ７９に格納することができる。
【００６０】
図１４は、安全な方法でホログラフィックデータを格納するプロセスを示すフローチャートである。ステップＳ１において、ＣＰＵ  ７１は、Ｉ／Ｏ  ＩＦ  ７８を通じてハードディスクドライブ７９にホログラフィックデータ８５を格納することができる。ホログラフィックデータ８５は、ＦＡＴ（ファイルアロケーションテーブル）８２を使用するオペレーティングシステムの制御の下で管理されうるデータファイルとして格納されうる。ステップＳ２において、ＣＰＵ  ７１は、Ｉ／Ｏ  ＩＦ  ７８を通じてハードディスクドライブ７９のＦＡＴ  ８２からホログラフィックデータ８５のＦＡＴエントリを読み出すことができる。ホログラフィックデータ８５のＦＡＴエントリは、ホログラフィックデータ８５が格納されうるクラスタ位置を示すことができる。この構成で使用されるＦＡＴは、非限定的な例であり、別の種類のインデックスをＦＡＴの代わりに使用することができる。
【００６１】
ステップＳ３において、ホログラフィックデータ８５のＦＡＴエントリが、暗号化プロセスを使用してＣＰＵ  ７１によって暗号化されうる。十分なセキュリティを確保できる限り、どのような種類の暗号化プロセスをも使用できる。ステップＳ４において、ＣＰＵ  ７１は、Ｉ／Ｏ  ＩＦ  ７８を通じてハードディスクドライブ７９に暗号化されたＦＡＴエントリを格納することができる。ステップＳ４において、ＣＰＵ  ７１は、ステップＳ１で作成されうるホログラフィックデータファイルを削除することができる。つまり、オペレーティングシステムが、ＦＡＴ  ８２内のホログラフィックデータ８５のＦＡＴエントリを削除することができるが、この時点ではホログラフィックデータ８５を削除することはできない。この後、ＦＡＴ  ８２は、他のデータ８３および８４のクラスタ位置を示すことができるが、ホログラフィックデータ８５のクラスタ位置を示すことはできない。
【００６２】
上で説明されている例では、ＦＡＴ  ８２におけるホログラフィックデータ８５のＦＡＴエントリは、ホログラフィックデータ８５を書き込んだ後に削除されうる。あるいは、ホログラフィックデータ８５を、ＦＡＴ内に対応するエントリを作らずにハードディスクドライブ７９に書き込むことができる。つまり、ホログラフィックデータ８５は、特別な書き込みコマンド、システムコール、または同様のものを使用することによって格納され、ホログラフィックデータファイルは、ＦＡＴ  ８２を使用するファイルシステムの下では作成されない。ホログラフィックデータをこのようにして書き込むときに、ホログラフィックデータを格納するために使用される記憶領域がオペレーティングシステムによって現在使用されていないことを保証するためにＦＡＴにそれでもアクセスできる。
【００６３】
図１４に示されているプロセスの後に、ホログラフィックデータファイルが存在しえないためホログラフィックデータ８５にアクセスする直接的な手段はありえない。オペレーティングシステムは、ホログラフィックデータ８５の存在を認識できないため、オペレーティングシステムは、ホログラフィックデータ８５が格納されうるハードディスクドライブ７９のいくつかの記憶領域を上書きすることがある。このような上書きオペレーションは、ホログラフィックデータ８５の一部を破壊する可能性がある。一定期間の経過後、ホログラフィックデータ８５の多くの部分が喪失する可能性がある。しかし、ホログラフィックデータ８５はロバスト性を有しているため、ホログラフィックデータ８５を、それでも、残りの部分から再構築することができる場合がある。
【００６４】
図１５は、図１４に例示されているプロセスによって格納されるホログラフィックデータ８５を復元するためのプロセスを示すフローチャートである。ステップＳ１において、ＣＰＵ  ７１は、Ｉ／Ｏ  ＩＦ  ７８を通じてハードディスクドライブ７９から暗号化されたデータを取り出すことができる。つまり、図１４のステップＳ４で格納されている暗号化されたＦＡＴエントリを取り出すことができる。ステップＳ２において、ＣＰＵ  ７１は、暗号化されたデータを復号してホログラフィックデータ８５のＦＡＴエントリを取得することができる。ＦＡＴエントリは、ホログラフィックデータ８５が格納されうるクラスタ位置を示すことができる。ステップＳ３において、ＣＰＵ  ７１は、ＦＡＴエントリによって指示されたクラスタ位置にアクセスして、ハードディスクドライブ７９からホログラフィックデータ８５を読み出すことができる。取り出されたホログラフィックデータ８５は、すでに説明されている再構築プロセス（つまり、相互相関プロセス）を使用することによって再構築されうる。
【００６５】
上で説明されている配置構成をとることで、ハッカーおよびコンピュータウイルスは、ホログラムデータが存在する場所を見つけ出すことができない。これは、ハッキングおよびコンピュータウイルスからの保護対策となりうる。上で説明されたように、ホログラフィックデータの一部は、時間の経過とともに破壊されることがある。この点を考慮して、定期的データリフレッシュオペレーションを実行するとよい。つまり、図１５のプロセスを実行し、その後、元のデータを再構築し、その再構築されたデータを再びホログラフィックデータに変換し、次いで、図１４のプロセスを実行することによって安全に格納することができる。このようなリフレッシュオペレーションは、一定間隔で実行するとよい。図１４よび図１５のプロセスを、ホログラフィックデータが図１１または図１２に例示されているような複数のデータストレージデバイス上に分配されうる構成に適用することができる。
【００６６】
図１３に例示されているコンピュータシステムは、より高い誤り率を有するストレージデバイスに使用されうる。つまり、ハードディスクドライブ７９は、より高い誤り率を有するそのようなストレージデバイスであるか、またはそのようなストレージデバイスによって置き換えられうる。ストレージデバイスの例は、ウルトラファイン（ultra-fine capacitor）ＤＲＡＭ、磁気記録および読取ヘッドのギャップが狭いＨＤＤ、および誤りの確率がメモリ容量の増加とともに高くなりうる他のすべてのデバイスを含みうる。ホログラフィックデータをデータ格納形式として使用することにより、誤り率の増大に対してロバストなデータストレージを実現することが可能になりうる。誤りは、パリティチェック、チェックサム、または他の従来の技術を使用することによって検出されうる。誤りが検出されうるデータは、ロストデータとして取り扱うことができる。ホログラフィックデータのロバスト性は、ホログラフィックデータ列の長さとデータ入力列の長さとの比を変化させることによって動的に変えることができる。
【００６７】
本発明は、実施形態に関して説明されているけれども、本発明はこれらの実施形態に限定されず、付属の請求項で述べられているように本発明の範囲から逸脱することなく、さまざまな変更および修正を加えられる。
【００６８】
本開示で「応答する」または「応答して」という言い回しを使用している場合、これは、特定の特徴および／または構造のみへの応答性に限定されない。特徴は、別の特徴および／または構造に応答性を有していることもあり、またその特徴および／または構造内に配置される場合もある。さらに、「結合される」または「応答する」または「応答して」または「通信する」などの言い回しまたは語句は、本明細書で、または請求項において使用されている場合、これらの言い回しまたは語句は、広い意味で解釈すべきである。たとえば、「に結合されている」という言い回しは、この言い回しが使用される文脈に適した形で通信可能なように、電気的に、および／または動作可能に結合されることを指す。
【００６９】
前記の詳細な説明のいくつかの部分は、コンピュータのメモリなどの、コンピューティングシステムのメモリ内に格納されているデータビットまたは２値デジタル信号に対するオペレーションのアルゴリズムまたはシンボル表現に関して提示されている。これらのアルゴリズムによる記述または表現は、作業の内容を当業者に伝えるためにデータ処理の技術者によって使用される技術のいくつかの例である。アルゴリズムは、本明細書では、また一般的に、所望の結果をもたらす自己矛盾のない一連のオペレーションもしくは類似の処理であると考えられる。この文脈において、オペレーションもしくは処理は、物理的量の物理的操作を伴う。典型的には、必ずというわけではないけれども、このような量は、格納、転送、組み合わせ、比較、および他の何らかの形の操作が可能な電気的または磁気的信号の形態をとることができる。主に共通使用の理由から、このような信号をビット、データ、値、要素、記号、文字、語、数、数詞、または同様のものとして参照することがときには都合がよいことが実証されている。しかし、これらの語および類似の語はすべて、適切な物理的量に関連付けられ、単に便利なラベルにすぎないことは理解されるべきである。以下の説明から明らかなように特に断りのない限り、本明細書全体を通して、「処理」、「コンピューティング」、「計算」、「決定（判定）」、または同様の語句などの語を使用する説明では、コンピューティングデバイスのメモリ、レジスタ、または他の情報ストレージデバイス、送信デバイス、もしくは表示デバイス内の物理的、電子的、または磁気的な量として表されるデータを操作もしくは変換する、コンピューティングデバイスのアクションもしくはプロセスを指すことは理解される。
【００７０】
前述の詳細な説明では、ブロック図、フローチャート、および／または例の使用によって、装置および／またはプロセスのさまざまな実施形態を説明してきた。そのようなブロック図、フローチャート、および／または例が１つまたは複数の機能および／または動作を含む限りにおいて、そのようなブロック図、フローチャート、または例の中のそれぞれの機能および／または動作は、広範囲のハードウェア、ソフトウェア、ファームウェア、または実質上それらのすべての組み合わせにより、個別におよび／または集合的に実装可能であることが、当業者には理解されるであろう。ある実施形態では、本明細書に記載された主題のいくつかの部分は、特定用途向け集積回路（ＡＳＩＣ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、デジタルシグナルプロセッサ（ＤＳＰ）、または他の集積化方式によって実装することができる。しかし、本明細書で開示された実施形態のいくつかの態様が、全体においてまたは一部において、１つまたは複数のコンピュータ上で動作する１つまたは複数のコンピュータプログラムとして（たとえば、１つまたは複数のコンピュータシステム上で動作する１つまたは複数のプログラムとして）、１つまたは複数のプロセッサ上で動作する１つまたは複数のプログラムとして（たとえば、１つまたは複数のマイクロプロセッサ上で動作する１つまたは複数のプログラムとして）、ファームウェアとして、あるいは実質上それらの任意の組み合わせとして、等価に集積回路に実装することができることを、当業者は認識するであろうし、電気回路の設計ならびに／またはソフトウェアおよび／もしくはファームウェアのコーディングが、本開示に照らして十分当業者の技能の範囲内であることを、当業者は認識するであろう。さらに、本明細書に記載された主題のメカニズムをさまざまな形式のプログラム製品として配布することができることを、当業者は理解するであろうし、本明細書に記載された主題の例示的な実施形態が、実際に配布を実行するために使用される信号伝達媒体の特定のタイプにかかわらず適用されることを、当業者は理解するであろう。信号伝達媒体の例には、フレキシブルディスク、ハードディスクドライブ（ＨＤＤ）、コンパクトディスク（ＣＤ）、デジタル多用途ディスク（ＤＶＤ）、デジタルテープ、コンピュータメモリ、などの記録可能なタイプの媒体、ならびに、デジタル通信媒体および／またはアナログ通信媒体（たとえば、光ファイバケーブル、導波管、有線通信リンク、無線通信リンクなど）の通信タイプの媒体が含まれるが、それらには限定されない。
【００７１】
本明細書で説明したやり方で装置および／またはプロセスを記載し、その後そのように記載された装置および／またはプロセスを、データ処理システムに統合するためにエンジニアリング方式を使用することは、当技術分野で一般的であることを当業者は認識するであろう。すなわち、本明細書に記載された装置および／またはプロセスの少なくとも一部を、妥当な数の実験によってデータ処理システムに統合することができる。通常のデータ処理システムは、一般に、システムユニットハウジング、ビデオディスプレイ装置、揮発性メモリおよび不揮発性メモリなどのメモリ、マイクロプロセッサおよびデジタル信号プロセッサなどのプロセッサ、オペレーティングシステムなどの計算実体、ドライバ、グラフィカルユーザインターフェース、およびアプリケーションプログラムのうちの１つもしくは複数、タッチパッドもしくはスクリーンなどの１つもしくは複数の相互作用装置、ならびに／またはフィードバックループおよびコントロールモータを含むコントロールシステム（たとえば、位置検知用および／もしくは速度検知用フィードバック、コンポーネントの移動用および／もしくは数量の調整用コントロールモータ）を含み得ることを、当業者は理解するであろう。通常のデータ処理システムは、データコンピューティング／通信システムおよび／またはネットワークコンピューティング／通信システムの中に通常見られるコンポーネントなどの、市販の適切なコンポーネントを利用して実装することができる。
【００７２】
本明細書に記載された主題は、さまざまなコンポーネントをしばしば例示しており、これらのコンポーネントは、他のさまざまなコンポーネントに包含されるか、または他のさまざまなコンポーネントに接続される。そのように図示されたアーキテクチャは、単に例示にすぎず、実際には、同じ機能を実現する多くの他のアーキテクチャが実装可能であることが理解されよう。概念的な意味で、同じ機能を実現するコンポーネントの任意の構成は、所望の機能が実現されるように効果的に「関連付け」される。したがって、特定の機能を実現するために組み合わされた、本明細書における任意の２つのコンポーネントは、アーキテクチャまたは中間のコンポーネントにかかわらず、所望の機能が実現されるように、お互いに「関連付け」されていると見ることができる。同様に、そのように関連付けされた任意の２つのコンポーネントは、所望の機能を実現するために、互いに「動作可能に接続」または「動作可能に結合」されていると見なすこともでき、そのように関連付け可能な任意の２つのコンポーネントは、所望の機能を実現するために、互いに「動作可能に結合できる」と見なすこともできる。動作可能に結合できる場合の具体例には、物理的にかみ合わせ可能な、および／もしくは物理的に相互作用するコンポーネント、ならびに／またはワイヤレスに相互作用可能な、および／もしくはワイヤレスに相互作用するコンポーネント、ならびに／または論理的に相互作用する、および／もしくは論理的に相互作用可能なコンポーネントが含まれるが、それらに限定されない。
【００７３】
本明細書における実質的にすべての複数形および／または単数形の用語の使用に対して、当業者は、状況および／または用途に適切なように、複数形から単数形に、および／または単数形から複数形に変換することができる。さまざまな単数形／複数形の置き換えは、理解しやすいように、本明細書で明確に説明することができる。
【００７４】
通常、本明細書において、特に添付の特許請求の範囲（たとえば、添付の特許請求の範囲の本体部）において使用される用語は、全体を通じて「オープンな（ｏｐｅｎ）」用語として意図されていることが、当業者には理解されよう（たとえば、用語「含む（ｉｎｃｌｕｄｉｎｇ）」は、「含むがそれに限定されない（ｉｎｃｌｕｄｉｎｇ  ｂｕｔ  ｎｏｔ  ｌｉｍｉｔｅｄ  ｔｏ）」と解釈されるべきであり、用語「有する（ｈａｖｉｎｇ）」は、「少なくとも有する（ｈａｖｉｎｇ  ａｔ  ｌｅａｓｔ）」と解釈されるべきであり、用語「含む（ｉｎｃｌｕｄｅｓ）」は、「含むがそれに限定されない（ｉｎｃｌｕｄｅｓ  ｂｕｔ  ｉｓ  ｎｏｔ  ｌｉｍｉｔｅｄ  ｔｏ）」と解釈されるべきである、など）。導入される請求項で具体的な数の記載が意図される場合、そのような意図は、当該請求項において明示的に記載されることになり、そのような記載がない場合、そのような意図は存在しないことが、当業者にはさらに理解されよう。たとえば、理解の一助として、添付の特許請求の範囲は、導入句「少なくとも１つの（ａｔ  ｌｅａｓｔ  ｏｎｅ）」および「１つまたは複数の（ｏｎｅ  ｏｒ  ｍｏｒｅ）」を使用して請求項の記載を導くことを含む場合がある。しかし、そのような句の使用は、同一の請求項が、導入句「１つまたは複数の」または「少なくとも１つの」および「ａ」または「ａｎ」などの不定冠詞を含む場合であっても、不定冠詞「ａ」または「ａｎ」による請求項の記載の導入が、そのように導入される請求項の記載を含む任意の特定の請求項を、単に１つのそのような記載を含む実施形態に限定する、ということを示唆していると解釈されるべきではない（たとえば、「ａ」および／または「ａｎ」は、通常、「少なくとも１つの」または「１つまたは複数の」を意味すると解釈されるべきである）。同じことが、請求項の記載を導入するのに使用される定冠詞の使用にも当てはまる。また、導入される請求項の記載で具体的な数が明示的に記載されている場合でも、そのような記載は、通常、少なくとも記載された数を意味すると解釈されるべきであることが、当業者には理解されよう（たとえば、他の修飾語なしでの「２つの記載（ｔｗｏ  ｒｅｃｉｔａｔｉｏｎｓ）」の単なる記載は、通常、少なくとも２つの記載、または２つ以上の記載を意味する）。さらに、「Ａ、ＢおよびＣ、などの少なくとも１つ」に類似の慣例表現が使用されている事例では、通常、そのような構文は、当業者がその慣例表現を理解するであろう意味で意図されている（たとえば、「Ａ、Ｂ、およびＣの少なくとも１つを有するシステム」は、Ａのみ、Ｂのみ、Ｃのみ、ＡおよびＢを共に、ＡおよびＣを共に、ＢおよびＣを共に、ならびに／またはＡ、Ｂ、およびＣを共に、などを有するシステムを含むが、それに限定されない）。「Ａ、Ｂ、またはＣ、などの少なくとも１つ」に類似の慣例表現が使用されている事例では、通常、そのような構文は、当業者がその慣例表現を理解するであろう意味で意図されている（たとえば、「Ａ、Ｂ、またはＣの少なくとも１つを有するシステム」は、Ａのみ、Ｂのみ、Ｃのみ、ＡおよびＢを共に、ＡおよびＣを共に、ＢおよびＣを共に、ならびに／またはＡ、Ｂ、およびＣを共に、���どを有するシステムを含むが、それに限定されない）。２つ以上の代替用語を提示する事実上いかなる離接する語および／または句も、明細書、特許請求の範囲、または図面のどこにあっても、当該用語の一方（ｏｎｅ  ｏｆ  ｔｈｅ  ｔｅｒｍｓ）、当該用語のいずれか（ｅｉｔｈｅｒ  ｏｆ  ｔｈｅ  ｔｅｒｍｓ）、または両方の用語（ｂｏｔｈ  ｔｅｒｍｓ）を含む可能性を企図すると理解されるべきであることが、当業者にはさらに理解されよう。たとえば、句「ＡまたはＢ」は、「Ａ」または「Ｂ」あるいは「ＡおよびＢ」の可能性を含むことが理解されよう。
【００７５】
また、「最適化する」という言い回しは、最大化および／または最小化を含みうることも理解されるであろう。本明細書で使用されているような「最小化」および／または同様の言い回しは、大域的最小、極小、近似的な大域的最小、および／または近似的な極小を含みうる。同様に、本明細書で使用されているような「最大化」および／または同様の言い回しは、大域的最大、極大、近似的な大域的最大、および／または近似的な極大を含みうることも理解されるであろう。
【００７６】
本明細書において「実装形態」、「一実装形態」、「いくつかの実装形態」、または「他の実装形態」と記述されている場合、これは、１つまたは複数の実装に関して説明されている特定の特徴、構造、または特性が少なくともいくつかの実装に含まれうるが、すべての実装形態に必ずしも含まれるわけではないことを意味するものとすることができる。前記の説明に「実装形態」、「一実装形態」、または「いくつかの実装形態」とさまざまな形で記載されている場合も、必ずしも同じ実装形態をすべて指しているわけではない。
【００７７】
本明細書ではいくつかの例示的な技術がさまざまな方法およびシステムを使用して説明され図示されているが、当業者であれば、請求項に記載の発明対象範囲から逸脱することなく、さまざまな他の修正を加え、同等物を代用することができることを理解するであろう。それに加えて、本明細書で説明されている中心的概念から逸脱することなく、さまざまな修正を行って、特定の状況を請求項に記載の発明対象の教示に適合させることができる。したがって、請求項に記載の発明対象は、開示されている特定の例に限定されないことが意図されているが、そのような請求項に記載の発明対象は、付属の請求項、およびその同等物の範囲内にあるすべての実装形態も含むことが意図されている。
【図１】
2013539149.tif 000006
【図２】
2013539149.tif 000007
【図３】
2013539149.tif 000008
【図４】
2013539149.tif 000009
【図５】
2013539149.tif 000010
【図６Ａ】
2013539149.tif 000011
【図６Ｂ】
2013539149.tif 000012
【図６Ｃ】
2013539149.tif 000013
【図７Ａ】
2013539149.tif 000014
【図７Ｂ】
2013539149.tif 000015
【図８】
2013539149.tif 000016
【図９Ａ】
2013539149.tif 000017
【図９Ｂ】
2013539149.tif 000018
【図１０Ａ】
2013539149.tif 000019
【図１０Ｂ】
2013539149.tif 000020
【図１０Ｃ】
2013539149.tif 000021
【図１１】
2013539149.tif 000022
【図１２】
2013539149.tif 000023
【図１３】
2013539149.tif 000024
【図１４】
2013539149.tif 000025
【図１５】
2013539149.tif 000026
【国際調査報告】
2013539149.tif 000027