(57)【要約】      （修正有）【課題】重いコンピューティング負荷でのＩ／Ｏボトルネックを回避する方法及び装置を提供する。【解決手段】生データを符号化し、復号するためのシステム及び方法。符号化するための方法は、暗号化されていないデータのブロックを受け取ることと、暗号化されていないデータのブロックを複数のデータベクトルに分解することと、複数のデータベクトルの各々をビットマーカにマッピングすることと、暗号化されていないデータの符号化された表現を作り出すためにメモリにビットマーカを記憶することを含む。符号化は、暗号化されていないデータのブロックをデフォルトデータ及び非デフォルトデータに分解すること、及び非デフォルトデータだけをマッピングすることをさらに含む。ビットマーカはシード値及び複製規則、又はフラクタル化されたパターンを含む。【選択図】図３Ａ
2018050301.tif 000002
【特許請求の範囲】
【請求項１】
暗号化されていないデータのブロックを受け取ることと、
暗号化されていないデータの前記ブロックを複数のデータベクトルに分解することと、
前記暗号化されていないデータの特徴からビットマーカを引き出すことと、
前記複数のデータベクトルのそれぞれをそれぞれの引き出されたビットマーカにマッピングすることと、
前記暗号化されていないデータの符号化された表現を作り出すために、メモリに前記引き出されたビットマーカを記憶することと
を含む、符号化方法。
【請求項２】
暗号化されていないデータのブロックを受け取ることと、
暗号化されていないデータの前記ブロックをデフォルトデータ及び非デフォルトデータに分解することと、
前記非デフォルトデータを複数のデータベクトルにマッピングすることと、
前記複数のデータベクトルの各々をそれぞれのビットマーカにマッピングすることと、
前記暗号化されていないデータの符号化された表現を作り出すために、メモリに前記ビットマーカを記憶することと
を含む、符号化方法。
【請求項３】
暗号化されていないデータのブロックを受け取ることと、
暗号化されていないデータの前記ブロックを複数のデータベクトルに分解することと、
前記複数のデータベクトルの各々をそれぞれのビットマーカにマッピングすることと、
前記暗号化されていないデータの符号化された表現を作り出すために、メモリに前記ビットマーカを記憶することと
を含み、
前記複数のデータベクトルの内の少なくともいくつかが、暗号化されていないデータの前記ブロックを表すときに互いに重複することを特徴とする
符号化方法。
【請求項４】
暗号化されていないデータのブロックを受け取ることと、
暗号化されていないデータの前記ブロックを複数のデータベクトルに分解することと、
前記複数のデータベクトルの各々をそれぞれのビットマーカにマッピングすることと、
前記暗号化されていないデータの符号化された表現を作り出すために、メモリに前記ビットマーカを記憶することと
を含み、
前記ビットマーカがシード値及び複製規則を含むことを特徴とする
符号化方法。
【請求項５】
暗号化されていないデータのブロックを受け取ることと、
暗号化されていないデータの前記ブロックを複数のデータベクトルに分解することと、
前記複数のデータベクトルの各々をそれぞれのビットマーカにマッピングすることと、
前記暗号化されていないデータの符号化された表現を作り出すために、メモリに前記ビットマーカを記憶することと
を含み、
前記ビットマーカが複数の他のビットマーカ及び結合規則を含むことを特徴とする
符号化方法。
【請求項６】
暗号化されていないデータのブロックを受け取ることと、
暗号化されていないデータの前記ブロックを複数のデータベクトルに分解することと、
前記複数のデータベクトルの各々をそれぞれのビットマーカにマッピングすることと、
前記暗号化されていないデータの符号化された表現を作り出すために、メモリに前記ビットマーカを記憶することと
を含み、
前記データベクトルがフラクタル化されたパターンを含むことを特徴とする
符号化方法。
【請求項７】
暗号化されていないデータの前記ブロックが合成オブジェクトを表すことを特徴とする、請求項１から６のいずれかに記載の符号化方法。
【請求項８】
暗号化されていないデータの前記ブロックが多次元データオブジェクトを表すことを特徴とする、請求項１から６のいずれかに記載の符号化方法。
【請求項９】
メモリから複数のビットマーカを取り出すことと、
前記複数のビットマーカのビットマーカをそれぞれのデータベクトルにマッピングすることと、
暗号化されていない複合データブロックを作り出すために前記それぞれのデータベクトルを暗号化されていないデータのブロックと結合することと、
前記復号されたデータを作り出すために前記暗号化されていない複合データブロックをデフォルトデータと結合することと
を含む、復号方法。
【請求項１０】
メモリから複数のビットマーカを取り出すことと、
前記複数のビットマーカのビットマーカをそれぞれのデータベクトルにマッピングすることと、
暗号化されていない複合データブロックを作り出すために前記それぞれのデータベクトルを暗号化されていないデータのブロックと結合することと、
前記暗号化されていない複合データブロックを前記復号されたデータとして作り出すことと
を含み、
前記複数のデータベクトルの内の少なくともいくつかが、前記復号されたデータを形成するときに互いと重複することを特徴とする
復号方法。
【請求項１１】
メモリから複数のビットマーカを取り出すことと、
前記複数のビットマーカのビットマーカをそれぞれのデータベクトルにマッピングすることと、
暗号化されていない複合データブロックを作り出すために前記それぞれのデータベクトルを暗号化されていないデータのブロックと結合することと、
前記暗号化されていない複合データブロックを前記復号されたデータとして作り出すことと
を含み、
ビットマーカがシード値及び複製規則を含むことを特徴とする
復号方法。
【請求項１２】
メモリから複数のビットマーカを取り出すことと、
前記複数のビットマーカのビットマーカをそれぞれのデータベクトルにマッピングすることと、
暗号化されていない複合データブロックを作り出すために前記それぞれのデータベクトルを暗号化されていないデータのブロックと結合することと、
前記暗号化されていない複合データブロックを前記復号されたデータとして作り出すこと
を含み、
ビットマーカが複数の他のビットマーカ及び結合規則を含むことを特徴とする
復号方法。
【請求項１３】
メモリから複数のビットマーカを取り出すことと、
前記複数のビットマーカのビットマーカをそれぞれのデータベクトルにマッピングすることと、
暗号化されていない複合データブロックを作り出すために前記それぞれのデータベクトルを暗号化されていないデータのブロックと結合することと、
前記暗号化されていない複合データブロックを前記復号されたデータとして作り出すこと
を含み、
前記データベクトルがフラクタル化されたパターンを含むことを特徴とする
復号方法。
【請求項１４】
前記復号されたデータが合成オブジェクトを表すことを特徴とする、請求項９から１３のいずれかに記載の復号方法。
【請求項１５】
前記復号されたデータが多次元データオブジェクトを表すことを特徴とする、請求項９から１３のいずれかに記載の復号方法。
【請求項１６】
暗号化されていないデータのブロックを受け取るためのデータインタフェースと、
メモリに結合されたプロセッサと
を含み、前記プロセッサは、
暗号化されていないデータの前記ブロックを複数のデータベクトルに分解し、
前記暗号化されていないデータの特徴から複数のビットマーカを引き出し、
前記複数のビットマーカの内の１つに前記複数のデータベクトルの各々をマッピングし、
前記暗号化されていないデータの符号化された表現を作り出すために、前記メモリに前記複数のビットマーカを記憶するように構成されることを特徴とする、
データを符号化するためのシステム。
【請求項１７】
暗号化されていないデータのブロックを受け取るためのデータインタフェースと、
メモリに結合されたプロセッサと
を含み、前記プロセッサは、
暗号化されていないデータの前記ブロックをデフォルトデータ及び非デフォルトデータに分解し、
前記非デフォルトデータを複数のデータベクトルにマッピングし、
前記複数のデータベクトルの各々をそれぞれのビットマーカにマッピングし、
前記暗号化されていないデータの符号化された表現を作り出すために、前記メモリに前記複数のビットマーカを記憶するように構成されることを特徴とする
データを符号化するためのシステム。
【請求項１８】
暗号化されていないデータのブロックを受け取るためのデータインタフェースと、
メモリに結合されたプロセッサと
を含み、前記プロセッサは、
暗号化されていないデータの前記ブロックを複数のデータベクトルに分解し、
前記複数のデータベクトルの各々をそれぞれのビットマーカにマッピングし、
前記暗号化されていないデータの符号化された表現を作り出すために、前記メモリに前記それぞれのビットマーカを記憶するように構成され、
前記複数のデータベクトルの内の少なくともいくつかが、暗号化されていないデータの前記ブロックを表すときに互いに重複することを特徴とする
データを符号化するためのシステム。
【請求項１９】
暗号化されていないデータの前記ブロックが合成オブジェクトを表すことを特徴とする、請求項１６から１８のいずれかに記載のシステム。
【請求項２０】
暗号化されていないデータの前記ブロックが多次元データオブジェクトを表すことを特徴とする、請求項１６から１８のいずれかに記載のシステム。
【請求項２１】
前記ビットマーカがシード値及び複製規則を含むことを特徴とする、請求項１６から１８のいずれかに記載のシステム。
【請求項２２】
前記ビットマーカが複数の他のビットマーカ及び結合規則を含むことを特徴とする、請求項１６から１８のいずれかに記載のシステム。
【請求項２３】
前記データベクトルがフラクタル化されたパターンを含むことを特徴とする、請求項１６から１８のいずれかに記載のシステム。
【請求項２４】
メモリから複数のビットマーカを引き出すためのデータインタフェースと、
メモリに結合されたプロセッサと
を含み、前記プロセッサは、
前記複数のビットマーカのビットマーカをそれぞれのデータベクトルにマッピングし、
暗号化されていない複合データブロックを作り出すために前記それぞれのデータベクトルを暗号化されていないデータのブロックと結合し、
前記暗号化されていない複合データブロックを前記復号されたデータとして作り出すように構成され、
前記ビットマーカが複数の他のビットマーカ及び結合規則を含むことを特徴とする
データを復号するためのシステム。
【請求項２５】
メモリから複数のビットマーカを引き出すためのデータインタフェースと、
メモリに結合されたプロセッサと
を含み、前記プロセッサは、
前記複数のビットマーカのビットマーカをそれぞれのデータベクトルにマッピングし、
暗号化されていない複合データブロックを作り出すために前記それぞれのデータベクトルを暗号化されていないデータのブロックと結合し、
前記暗号化されていない複合データブロックを前記復号されたデータとして作り出すように構成され、
前記データベクトルがフラクタル化されたパターンを含むことを特徴とする
データを復号するためのシステム。
【請求項２６】
メモリから複数のビットマーカを引き出すためのデータインタフェースと、
メモリに結合されたプロセッサと
を含み、前記プロセッサは、
前記複数のビットマーカのビットマーカをそれぞれのデータベクトルにマッピングし、
暗号化されていない複合データブロックを作り出すために前記それぞれのデータベクトルを暗号化されていないデータのブロックと結合し、
前記暗号化されていない複合データブロックを前記復号されたデータとして作り出す
ように構成され、
前記複数のデータベクトルの内の少なくともいくつかが、前記復号されたデータを形成するときに互いに重複することを特徴とする
データを復号するためのシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
（関連出願の相互参照）
本願は、全体の内容がその全体として参照することにより本明細書に組み込まれる、２０１５年４月１５日に出願された米国仮特許出願第６２／１４８，１６０号の利益を主張する。
【０００２】
１９８０年代初頭、新興コンピュータ業界が、数学者で物理学者であるＪｏｈｎ  Ｖｏｎ  Ｎｅｕｍａｎｎの分散型理論化計算モデルを取り入れた。ＶｏｎＮｅｕｍａｎｎの理論は彼の時代のはるかに先を行くものであり、パーソナルコンピューティング時代が現実になるよりかなり前に着想された。Ｖｏｎ  Ｎｅｕｍａｎｎモデルは、多くのより小型のコンピュータが拡大し、単一の高価な集中コンピュータ（例えば、メインフレーム）よりも高いコンピュータパワーを生じさせることができるという考えを可能にした。デジタル時代が始まると、パーソナルコンピュータは強力になるだけではなく、家庭とオフィスでその存在が増し、アプリケーションの利便性をもたらした。時間が経つにつれて、パーソナルコンピュータ（ＰＣ）は成長し、単にデスクトップ装置ではなくなり、データセンタに拡大し、サーバに変貌を遂げた。データセンタのサーバはクライアント‐サーバ市場に姿を変え、Ｊｏｈｎ  Ｖｏｎ  Ｎｅｕｍａｎｎが４５年前に理論化した周知の分散型計算モデルは現実のものになった。
【背景技術】
【０００３】
数十年に亘り、ＰＣ、ラップトップ、及びサーバは、処理能力（ＣＰＵ）、限られたメモリ（例えば、ランダムアクセスメモリＲＡＭ）、及び記憶媒体用のハードディスク（ＨＤＡ）装置のためにＲＩＳＣ、ＰｏｗｅｒＰＣ、ＡＲＭ（登録商標）、及びｘ８６アーキテクチャを使用していることが知られている。デジタル時代が拡大を続けるにつれ、作り出されたコンテンツコンピュータはよりリッチに、より高密度になり続け、コンピュータの処理能力（ＣＰＵ）、ＲＡＭの容量、及びハードドライブ密度において年々イノベーションとアップグレードを進めてきた。このアプローチには以下のいくつかの不利益が未だにある。つまり、（１）密度が拡大する一方、すべての構成要素の性能が向上しているわけではない［ムーアの法則］。（２）これらの要素のＩ／Ｏインタフェースは同じ速度ではなく、Ｉ／Ｏボトルネックを生じさせている［クライダーの法則］。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
コンピュータ業界で周知のアップグレード技術は、コンピュータメモリ（ＲＡＭ）をアップグレードして機械からより多くの性能を得ることであった。逆に、メモリ（ＲＡＭ）容量はいくつかの重大な要因、つまりＣＰＵプロセッサ、シリコンのナノメートル密度の制限、及びワット損によって制限されてきた。今日の規格によって、利用可能な最大のメモリモジュールの容量は１２８ＧＢにすぎず、最大コンピュータとは対照的に、ハードドライブの容量は６ＴＢである。この例では、ハードドライブはメモリモジュールより９３．７５倍大きく、これが密度の問題である。反対に、メモリモジュール（つまり、ＲＡＭ）の最大入出力（Ｉ／Ｏ）転送速度は現在毎秒５６．７ＧＢであり、シリアルアタッチドＳＣＳＩ（ＳＡＳ−ＩＩ）インタフェースの最大入出力転送速度は現在毎秒７５０ＭＢである。したがって、メモリモジュールは今日のＳＡＳ−ＩＩハードドライブよりも７６．８倍速い。
【０００５】
軽いコンピューティング負荷では、このアンバランス、つまり密度対性能の戦いに気が付かない可能性がある。しかし、重いコンピューティング負荷では、密度対性能のこの主要なアンバランスを一様化することはできず、Ｉ／Ｏボトルネックの発生は不可避である。これらにより、全体的なコンピューティング動作は最終的にハードドライブの速度まで減速する。これを回避しようとする無駄な努力は、問題となるより多くのシステムを加え、より多くのプロセッサコア上でアプリケーションをさらに分散するためにアプリケーションを再び書き込むことである。
【０００６】
この典型的な問題に対する答えは、より多くのメモリ（ＲＡＭ）を追加し、アプリケーションアルゴリズムを書き込み、ボトルネックを軽減することだろう。
【０００７】
それにも関わらず、次の問題、つまりコストの問題がある。メモリ（ＲＡＭ）は、一般にＲＡＭモジュールの密度に応じて非常に高価になることがある。ＲＡＭがどれほど高価であるのかの現実の世界の例は、現在利用可能な最大メモリモジュールが６４ＧＢであることである。単一の６４ＧＢ  ＲＡＭモジュールは、現在モジュールあたり約＄１０００．００米ドルで販売されている。平均的なｘ８６のサーバマザーボードは、現在約＄７００．００米ドルで販売されており、最大１６又は２４のＲＡＭモジュールを使用できる。現在、安価なｘ８６マザーボードに１６個のモジュールを完全に取り付けると、約＄１６，０００．００米ドルの費用がかかり、これによりＲＡＭは、安価なマザーボードよりも２０倍高価になり、１ＴＢのＲＡＭしか生じさせないだろう。
【０００８】
欠陥のない世界では、コンピュータはメモリ（ＲＡＭ）及び高速プロセッサだけを必要とするだろう。密度及びコストの課題が存在しないならば、記憶装置のないコンピュータが可能になるだろう。障害は、メモリモジュール（ＲＡＭ）がどのように機能するのかになる。今日、すべてのメモリモジュールは揮発性技術であると考えられており、つまり、コンピュータシステムの電源を切ると、メモリ電力損失が起こり、メモリは消去されてしまう。今日の記憶装置はこの問題を有さない、つまり電力が取り除かれても、記憶装置媒体は、記憶装置媒体に書き込まれた情報を保持する。密度、性能、コスト、及び揮発性のすべてを組み合わせると、ＣＰＵ及びＲＡＭだけを備えたコンピュータの現実が達成不可能であることをすぐに推論できる。
【０００９】
必要とされているのは、上述された従来の技術の欠点を克服するための改善されたコンピューティングシステムである。
【課題を解決するための手段】
【００１０】
本開示に係る実施形態は、従来の回転式ハードドライブ等の磁気記憶装置を必要とすることなく、ＣＰＵ及びＲＡＭに依存する安価なコンピュータの計算記憶装置を提供する。実施形態は、計算及び記憶を取り囲む上述された障害を超える飛躍的進歩を提供する計算記憶装置を提供する。本開示に係る実施形態は、今日存在しているいずれのｘ８６及び高性能コンピュータよりも７６．８倍速い５７．６ＧＢの一定Ｉ／Ｏレベルを有し得るコンピュータを可能にする。
【００１１】
本開示に係る実施形態は、生データを符号化し、復号するシステム及び方法を提供する。符号化するための方法は、暗号化されていないデータのブロックを受け取ること、暗号化されていないデータのブロックを複数のデータベクトルに分解すること、複数のデータベクトルのそれぞれをビットマーカにマッピングすること、及び暗号化されていないデータの符号化された表現を作り出すためにビットマーカをメモリに記憶することを含む。復号するための方法は、メモリから複数のビットマーカを取り出すこと、複数のビットマーカのビットマーカをそれぞれのデータベクトルにマッピングすること、暗号化されていない複合データブロックを作り出すために、それぞれのデータベクトルを暗号化されていないデータのブロックと結合させること、及び暗号化されていない複合データブロックを復号されたデータとして作り出すことを含む。
【００１２】
上記は、本開示のいくつかの態様を理解するための本開示の実施形態の簡略な概要である。この概要は本開示及びその多様な実施形態の広範囲な概要でもなく、包括的な概要でもない。本開示の重要な要素又は重大な要素を識別することも、本開示の範囲を説明することも意図されているのではなく、以下に提示される発明を実施するための形態に対する導入部として簡略化された形で本開示の選択された概念を提示することが意図される。理解されるように、本開示の他の実施形態は、上述の又は以下に詳細に説明される特徴の内の１つ又は複数を単独で又は組み合わせて活用して可能となる。
【００１３】
本発明の上記の及びさらに追加の特徴及び利点は、特に、多様な図中の類似した数字が類似した構成要素を示すために活用される添付の図面と併せて解釈されるときに、本発明の実施形態の以下の発明を実施するための形態を考慮すると明らかになる。
【図面の簡単な説明】
【００１４】
【図１】技術で既知のパーソナルコンピュータ（ＰＣ）システムの機能ブロック図である。
【図２】本開示の実施形態に係るＰＣシステムの機能ブロック図である。
【図３Ａ】本開示の実施形態に従ってデータを符号化するための方法を示す図である。
【図３Ｂ】本開示の実施形態に従ってデータを復号するための方法を示す図である。
【００１５】
本明細書に使用される見出しは編成のためだけであり、明細書又は特許請求の範囲の範囲を制限するために使用されるように意図されていない。本願を通して使用されるように、単語「よい」は、強制の意味（つまり、しなければならないを意味する）よりむしろ、許容の意味（つまり、する可能性を有することを意味する）で使用される。同様に、単語「含む（主語が複数）」、「含んでいる」、及び「含む（主語が単数）」は含むを意味するが、これに限定されるものではない。理解を容易にするために、可能な場合は、図に共通する類似する要素を示すために類似する参照数字が使用されている。図の任意選択の部分は、使用の文脈上他の意味を示す場合を除いて破線又は点線を使用して示されてもよい。
【発明を実施するための形態】
【００１６】
以下の発明を実施するための形態では、本明細書に説明される実施形態又は他の例の完全な理解のために多数の特定の詳細が説明される。いくつかの例では、以下の説明をわかりにくくしないように周知の方法、手順、構成要素、及び回路は詳細に説明されていない。さらに、開示されている例は例示のためだけであり、他の例は開示されている例の代わりに、又は開示されている例と組み合わせて利用されてよい。他の等しく効果的な例も可能であり、見込みがあるため、本明細書に提示される例が本発明の実施形態の範囲を制限すると解釈されるべきではないことにも留意するべきである。
【００１７】
本明細書に使用されるように、用語「モジュール」は、概してステップ、プロセス、又は構成要素の論理的なシーケンス又は関連を指す。例えば、ソフトウェアモジュールはコンピュータプログラム内部の関連付けられたルーチン又はサブルーチンのセットを含んでよい。代わりに、モジュールは実質的に自己内蔵型のハードウェア装置を含んでよい。また、モジュールはいかなるソフトウェア又はハードウェアの実装にも関わりなくプロセスの論理的なセットを含んでよい。
【００１８】
また、機能を実行するモジュールは機能を実行するように構成されているとして参照されてもよく、例えば、データを受け取るデータモジュールは、データを受け取るように構成されているとして説明されてもよい。機能を実行するための構成は、例えば、機能を実行するコンピュータコードを提供し、実行すること、モジュールの能力を制御する、制限する、有効にする、又は無効にするプロビジョニング可能な構成パラメータを提供すること（例えば、フラグをセットすること、許可を設定すること、決定点で使用される閾値レベルを設定すること等）、オプションを選択するため、又はオプションを有効にする／無効にするためのジャンパー等の物理接続を提供すること、物理通信リンクを取り付けること、無線通信リンクを有効にすること、機能を実行する回路を励起すること（例えば、データを受け取るためにトランシーバ回路に電力を供給すること）等を含んでよい。
【００１９】
図１は、技術で既知の従来のコンピュータシステム１００の機能ブロック図を示す。システム１００は、例えばＩｎｔｅｌ（登録商標）互換アーキテクチャをベースにしたコンピュータシステムで使用されてよい。製作技術が進歩するにつれ、チップセットの生成、ターゲットのカスタマの価格対性能比、ターゲットとなるアプリケーション（例えば、モバイル機器、サーバ等）等の要因に応じて、多様な機能構成要素が異なる集積回路（ＩＣ）構成で製作されてよい。特定の機能は、ＩＣ  １１６等の単一のＩＣで等、多様な構成に結合されてよい。
【００２０】
システム１００は、Ｘｅｏｎ（登録商標）、Ｉｎｔｅｌ  Ｃｏｒｅ  ｉ７（登録商標）、ｉ５（登録商標）、ｉ３（登録商標）等の汎用プロセッサ、又はＡｔｈｌｏｎ６４（登録商標）等のＡｄｖａｎｃｅｄ  Ｍｉｃｒｏ  Ｄｅｖｉｃｅｓ（登録商標）（ＡＭＤ）のプロセッサであってよいプロセッサ１０２を含む。他の実施形態では、プロセッサ１０２はグラフィックスプロセシングユニット（ＧＰＵ）であってよい。図１の機能ブロック図では、本明細書に使用されるようなプロセッサ１０２は、プロセッサの機能を指してよい、及び／又はプロセッサの１つ又は複数のハードウェアコアを指してよい。プロセッサ１０２は、マルチＧＨｚ速度で動作する複数の処理コアを含んでよい。プロセッサ１０２はキャッシュメモリ１０３（例えば、Ｌ１キャッシュ又はＬ２キャッシュ）を含んでよい。また、プロセッサ１０２は、オペレーティングシステム１０４を含むようにプログラミング又は構成されてもよい。オペレーティングシステム１０４の例は、Ｗｉｎｄｏｗｓ（登録商標）、Ｍａｃ  ＯＳ（登録商標）、Ｌｉｎｕｘ（登録商標）、及び／又は本開示の実施形態に係るオペレーティングシステム又はオペレーティングシステム拡張部等の多様なバージョンを含む。登録商標Ｗｉｎｄｏｗｓは、Ｍｉｃｒｏｓｏｆｔ  Ｉｎｃ．の登録商標である。登録商標Ｍａｃ  ＯＳはＡｐｐｌｅ  Ｉｎｃ．の登録商標である。登録商標Ｌｉｎｕｘは、ＬＭＩ、つまり世界的な規模でのマークの所有者であるＬｉｎｕｓ  Ｔｏｒｖａｌｄｓの専用実施権からの再実施権に従って使用される。オペレーティングシステム１０４は、（図１に示されない）アプリケーションプログラムの実行を含む従来の機能を実行する。機能上、オペレーティングシステム１０４は、プロセッサ１０２の一部として示されているが、オペレーティングシステム１０４の部分は、図１に示されていない不揮発性メモリ（例えば、ハードディスク）に物理的に常駐してよく、オペレーティングシステム１０４の少なくとも部分が、プロセッサ１０２による実行のために必要に応じてＲＡＭメモリの中に読み込まれてよい。
【００２１】
プロセッサ１０２は、さまざまな機能構成要素とインタフェースで接続するためにいくつかの内部バス及び外部バスを使用してよい。システム１００は、プロセッサ１０２をメモリコントローラ１０６にリンクする通信バス１０５を含む。また、メモリコントローラ１０６は、ノースブリッジとも称されてよい。通信バス１０５はフロントサイドバス（ＦＳＢ）、不均等メモリアクセス（ＮＵＭＡ）バス、ＥＶ６バス、ペリフェラルコンポーネントインターコネクト（ＰＣＩ）バス等の内の１つとして実装されてよい。
【００２２】
システム１００は、プロセッサ１０２に結合された不揮発性メモリ１２２（例えば、ＣＭＯＳメモリ）をさらに含む。ＣＭＯＳメモリ１２２は、コンピュータ構成要素の間の低レベルの通信を管理するのに役立つ基本入出力システム（ＢＩＯＳ）１２４を含んでよく、パワーオンセルフテストを実行するためにコンピュータコードの記憶を含んでよい。従来、パワーオンセルフテストは、設置されているＲＡＭのデータ完全性のテストを含んでよい。
【００２３】
メモリコントローラハブ１０６は、通常、プロセッサ１０２と、通信バス１０７を介してデュアルインラインメモリモジュール（ＤＩＭＭ）スロット１０８ａ、１０８ｂ、及び通信バス１０９を介してビデオグラフィックスカード１１０に設置された外部ＲＡＭメモリ等の多様な高速機能構成要素との間の通信を処理する。通信バス１０７及び１０９は、ペリフェラルコンポーネントインターコネクトエクスプレス（ＰＣＩｅ）又はアクセラレーテッドグラフィックスポート（ＡＧＰ）等の高速インタフェースであってよい。また、メモリコントローラハブ１０６は、通信バス１１２を介してプロセッサ１０２とコントローラハブ１１４との間の通信を処理してもよい。コントローラハブ１１４は、サウスブリッジ、Ｉ／Ｏコントローラハブ（ＩＣＨ）、フュージョンコントローラハブ（ＦＣＨ）、プラットフォームコントローラハブ（ＰＣＨ）等の他の名前で知られていることもある。そして、コントローラハブ１１４は、ＵＳＢポート１３１、標準インタフェース（例えば、ＡＴＡ／ＳＡＴＡ、ｍＳＡＴＡ、ＳＡＳ等）付きのディスクドライブ１３２、イーサネットトランシーバ１３３、オーディオポート１３４、他のＰＣＩデバイス１３５等の追加の及び／又はより低速のＩ／Ｏ装置又はインタフェースとの通信もさらに管理する。
【００２４】
システム１００（不図示）のいくつかの構成では、プロセッサ１０２はメモリコントローラ１０６を迂回し、ダイレクトメディアインタフェース（ＤＭＩ）を介してコントローラハブ１１４と直接的に通信するように設計される。係る構成は、プロセッサ１０２及びメモリコントローラ１０６の機能を単一のＩＣ  １１６に統合してもよい。係る構成では、コントローラハブ１１４は、通常プラットフォームコントローラハブ（ＰＣＨ）である。
【００２５】
ＤＩＭＭスロット１０８ａ、１０８ｂに設置されたＲＡＭメモリを構成するメモリチップは非常に高い最大アクセス速度（例えば、約５７ＧＢｙｔｅｓ／秒）を有してよいが、通信バス１０９は、通常、係る高速速度をサポートできない。例えば、１６レーンスロットのＰＣＩｅ４．０の速度は３１．５０８Ｇｂｙｔｅｓ／秒に制限される。ＡＧＰはさらにＰＣＩｅよりも低速である。したがって、通信バス１０７がより高速のメモリアクセスを妨げるボトルネックである。
【００２６】
メモリアクセスのボトルネックは従来技術の１つの欠点である。従来のコンピュータの上述された他の欠点は、ＲＡＭメモリのサイズ（通常、約数Ｇｂｙｔｅｓ）と従来のハードディスクの記憶サイズ（通常、約数Ｔｂｙｔｅｓ）との間の記憶サイズの不一致、及び従来のハードディスクの記憶サイズに対して相対的に小さいＲＡＭメモリの記憶サイズを含む。従来の技術の別の欠点は、ＲＡＭメモリの揮発性の性質である。
【００２７】
本開示に係る実施形態は、今日ＲＡＭが有する密度の問題を打ち砕く。本開示に係る実施形態は、記憶ユニットに新規のハードウェアインタフェースを提供し、ハードウェアインタフェースに新規のドライバインタフェースを提供することによって従来の技術のこれらの欠点に対処する。
【００２８】
ＣＰＵを別とすれば、ＲＡＭはｘ８６コンピューティングシステム及びｘ６４コンピューティングシステムで最速の要素であるため、実施形態は、今日の高速ＲＡＭ性能を密度を獲得する新しい方法に合わせることを可能にする。この効果が適用されると、効果はコストの枠組みを完全に変え、低コストのメモリモジュールが高密度高コストのメモリモジュールに対する必要性に代わることを可能にする。
【００２９】
残っている問題は、標準メモリモジュールの揮発性である。すべてのＲＡＭは揮発性であるので、ＲＡＭは長期の記憶媒体になることに役立たない。実施形態は、標準的なＤＩＭＭ装置に見られる揮発性の問題を回避する不揮発性ＲＡＭ（ＮＶＲＡＭ）技術に類似しているが、不揮発性ＲＡＭ（ＮＶＲＡＭ）技術とは異なっている。
【００３０】
本開示に係る実施形態は、Ｉｎｔｅｌ（登録商標）又はＡＭＤ（登録商標）のＣＰＵプロセッサによって電力を供給できる基本的な安価なｘ６４マザーボードを使用する。マザーボードは改良されたＣＭＥ、及びそれに、不揮発性メモリを認識するために必要とされるインテリジェンスを与えるＢＩＯＳを有する。さらに、マザーボードは各メモリモジュールに、環境上安全な低負荷スロードレインキャパシタを充電するために使用され得るＤＣ供給電圧（例えば、１．２ｖ、１．３５ｖ、１．５ｖ等）を提供する。この設計は、停止状態（例えば、電力の損失又は安全な停止）がメモリモジュール内でデータ永続性を維持し、よってメモリモジュールを実行可能な長期記憶装置にすることを可能にする。
【００３１】
図２は、本開示の実施形態に係るコンピュータシステム２００の機能ブロック図を示す。図１ですでに説明された機能構成要素は、図２で図１に示された参照番号と同じ参照番号を割り当てられている。システム２００は、Ｍｏｌｅｘ（登録商標）コネクタ等のコネクタ２０８を使用することによってＤＩＭＭスロット（例えば、ＤＩＭＭスロット１０８ｂ）に物理的に結合され得るメモリインタフェース２１８を含む。メモリインタフェース２１８は、通信バス１０７上の従来のプロトコルを使用することによってＤＩＭＭスロット１０８ｂを通してプロセッサ２０２と通信する。メモリインタフェース２１８は、ＲＡＭ記憶ユニット２２０に物理的に且つ通信可能にＲＡＭ記憶ユニット２２０に結合される。メモリインタフェース２１８の機能は、通信バス１０７にＲＡＭ記憶ユニット２２０を通信可能に結合すること、ＲＡＭ記憶ユニット２２０に関係する健康の状態のような特定のイベントについて他のハードウェアイベントを監視すること、検出された信号又はハードウェアイベントに基づいて特定の処置を講じること等を含む。また、メモリインタフェース２１８の機能は、メモリアドレスを決定すること、メモリサイズを報告すること、Ｉ／Ｏ制御、総パワーサイクル、１時間内の実行時間を追跡し、報告すること、ＤＩＭＭの数を報告すること、ウルトラキャパシタ（ｃａｐ）電流電圧、バス準備完了、前回復元の成功又は失敗、装置準備完了、ＮＡＮＤ領域のフラッシュステータス、ｃａｐ接続済み、ｃａｐ充電ステータス、有効画像存在、ＤＩＭＭイニット実行済み、読取りレジスタ等のステータスを報告すること等の単純な処理機能及びハウスキーピング機能も含んでよい。ＮＡＮＤは、データを保持するために電力を必要としない一種の不揮発性ＩＣベース記憶技術として知られてよい。
【００３２】
システム２００は、プロセッサ２０２に結合される不揮発性メモリ２２２（例えば、ＣＭＯＳメモリ）をさらに含む。ＣＭＯＳメモリ２２２は、コンピュータ構成要素の間の低レベル通信の管理を助ける基本入出力システム（ＢＩＯＳ）２２４を含んでよく、パワーオンセルフテストを実行するためにコンピュータコードの記憶を含んでよい。従来、パワーオンセルフテストは、設置されているＲＡＭのデータ完全性のテストを含んでよい。本開示に係る実施形態は、（ＢＩＯＳ１２４のパワーオンセルフテストに比較して）修正されたパワーオンセルフテストを含んでよく、これによりパワーオンセルフテストは、例えばテストが所定のメモリモジュールに記憶されるデータの性質と互換性がないであろう場合に、少なくともいくつかの所定のメモリモジュールのテストを省略してよい。
【００３３】
また、本開示に係る実施形態は、エネルギー源２１９をＲＡＭ記憶ユニット２２０に結合することによって既知の技術のＲＡＭ揮発性欠点に対処する。エネルギー源２１９は、メモリインタフェース２１８と組み込まれてよい。エネルギー源２１９はバックアップ電力のソースであり、これによりＲＡＭ記憶ユニット２２０に対する外部電源が（例えば、コンピューティングシステム２００に影響を及ぼすＡＣ電源異常、可動システム２００に電力を供給するバッテリの取外し、マザーボード故障等を介して）失われる場合、エネルギー源２１９は、ＲＡＭ記憶ユニット２２０に記憶されたデータの完全性を維持するために十分な電力を提供してよい。
【００３４】
デステージプロセスは、物理媒体の間でデータを転送することを伴う。本開示に係る実施形態は、ハードウェア構成要素とソフトウェア構成要素の両方を使用することによってデステージプロセスを実装する。ハードウェア構成要素は、コネクタ２０８、メモリインタフェース２１８、エネルギー源２１９、及びＲＡＭ記憶ユニット２２０を含む。コネクタ２０８は、メモリインタフェース２１８に動作電力を供給するために使用される所定のピンを含んでよい。メモリインタフェース２１８は、エネルギー源２１９の充電ステータス、異常検出のため、及びＬＥＤ光（例えば、緑、黄、赤）のため等、検出プロセス及び通知プロセスを管理するために限られた処理能力（例えば、小型ＣＰＵ）を含んでよい。電力損失が示される場合、スイッチがシステム動作（例えば、構成情報、システム状態等）に重大なメモリインタフェース２１８でのデータの保護されている記憶への転送を開始するために始動されてよい。いったんデステージが完了すると、メモリインタフェース２１８は削減電力モード及び／又は電源オフに入ってよい。デステージプロセスを実行するための電力は、少なくとも部分的にエネルギー源２１９によって供給されてよい。データ完全性は、エネルギー源２１９からの電力を使用することによって維持される。
【００３５】
コネクタ２０８がそのそれぞれのＤＩＭＭスロット１０８から取り外される場合、コネクタ２０８及び／又はメモリインタフェース２１８は、コネクタ２０８が所定のＤＩＭＭスロット１０８から取り外される場合／とき、そのコネクタ２０８が、再挿入時に、同じそれぞれのＤＩＭＭスロット１０８の中に再挿入されることを保証するのに役立てるための機能を含んでよい。これらの機能はセキュリティ機能として機能してよく、これにより間違った再挿入が発生すると、実際上記憶されているビットがスクランブルをかけられ、読取り不可にされる。
【００３６】
本開示に係る実施形態は、復元手順も提供する。復元手順は、完全なシステム故障又は電力損失からの回復のために役立つ。例えば、マザーボードが故障すると、実施形態は、システムの低電力モード及びシステムの修理（例えば、マザーボード交換）又は構成要素の回収（例えば、新規ユニットでの配置のためのコネクタ２０８、メモリインタフェース２１８、エネルギー源２１９、及びＲＡＭ記憶ユニット２２０の取外し）に入る。復元プロセスは、メモリモジュールを、メモリモジュールが欠陥のあるユニットで専有していたのと同じそれぞれのスロット場所に再設置することを含む。メモリモジュールは、メモリモジュールが交換ユニット内部の異なるスロット場所に設置される場合使用不能になるように物理的なキーイング又は論理的なキーイングを含んでよい。例えば、異なるスロット場所に設置されたメモリモジュールは、このように挿入されたメモリモジュールからデータを読み取ろうと試みる場合にスクランブルをかけられたビット（つまり、「ビットスクランブリング」）を生じさせてよい。シグナチャは、スロットのモジュールと関連付けられる。したがって、例えばＢ１スロットに最初に設置されたメモリモジュールを有し、Ｅ１スロットに再設置しようとすると、又はその逆の場合、そのときは機械は起動しないだろう。データモジュールは、スロット番号に一致させられる。メモリモジュールとスロット番号間の困難な関連付けのための論理的根拠は、間違ったスロットに設置されたメモリモジュールを用いてデータを復元しようと試みると、データが破壊される可能性があるということであり、したがって実施形態は間違ったスロット状況を検出し、データアクセスを妨げる。
【００３７】
バックアップ手順及び復元手順は、モジュールＡＰＩ（つまり、「チップコール」）を介して実装されてよい。ＡＰＩ機能は、バックアップ及び復元を含んでよい。ＡＰＩ機能は、例えば「オントリガ」ＡＰＩコール等の特定の所定イベントの発生時にトリガされてよい。例えば、アプリケーションプログラムは、システムが、データに対してリスクを呈する可能性がある状況又はイベントの発生がないかチェックするチェックポイントを含んでよい。係る検出時、バックアップＡＰＩはトリガされてよく、このことが特定の重大なデータ、構成情報、メタデータ等をＮＡＮＤメモリ等の保護された不揮発性メモリの中にコピーしてよい。バックアップをトリガしてよいイベントの例は、ブートプロセスの開始、ハードウェア又はソフトウェアの障害からの回復等を含む。
【００３８】
システムの初期化時、回路電力が供給され、システム構成要素は電力を受け取る。エネルギー源２１９は再充電を開始する。ステータスインジケータ（例えば、緑、黄、赤等の多様な色のＬＥＤ）は、ユーザに視覚的に役立つために設けられてよい。ステータスインジケータは、第１の段階（例えば、チェックサムの実行）での進行を示してよい。問題が示されることがある場合、実施形態は、例えばあらゆるビット及びバイトを注意深く比較するためにデータ画像をチェックする等、代替手順及び／又はより包括的な手順に進んでよい。従来の方法を使用すると、これはＮＡＮＤの速度制限のために、例えば１０分ブート等、非常に遅いことがある。障害状況が検出され、システム停止、モジュール紛失、モジュール不一致等を引き起こすことがある。上述されたように、メモリインタフェース２１８及びＲＡＭ記憶ユニット２２０が正しく置換されていない（例えば、間違ったスロットもしくは間違った順序）、又は間違ったシステムに設置されている（つまり、必要とされているビットマーカがないシステム）場合、データを回復することはできない。この挙動は、厳重なセキュリティを提供するために必要とされる。別個のインジケータが、いつＡＰＩ機能が完了するのかを示してよい。
【００３９】
電圧及び電力の流れ（例えば、１．２ｖ、１．３５ｖ、１．５ｖ等）がコネクタ２０８を通して指定されたＤＩＭＭピン又は代替の要素に印加され、このことは同様に通常の動作ではエネルギー源２１９を励起する。メモリインタフェース２１８の熱的な設計は、例えばヒートシンクを使用することによってエネルギー源２１９を冷却するための要素を含んでよい。
【００４０】
エネルギー源２１９は、少なくとも数カ月の期間、データ完全性を維持するために十分なエネルギーを有してよい。エネルギー源２１９は、例えば、少なくとも６００ファラド等「スーパーキャパ」として知られている大容量のキャパシタであってよい。代わりに、エネルギー源２１９はバッテリであってよい。ただし、リチウムバッテリ等のバッテリベースのエネルギー源は、損傷を受けた場合又は内部短絡が発生する場合、突発故障（例えば、アーク放電、火災）を起こしやすい。エネルギー源２１９は、エネルギー源２１９がＲＡＭ記憶ユニット２２０に電力を供給していないとき、システム２００への主電力によって通常の状況下で連続的に充電されてよい。
【００４１】
システム状態は、システム状態がＲＡＭ記憶ユニット２２０に記憶されている限り復元され得る。いくつかの実施形態では、別個のバックアップエネルギー源は、コンピューティングシステムの他の部分（例えば、プロセッサ及びキャッシュ）にエネルギーを提供してよく、これによりシステム状態又は他の追加の状態は停電中保存され得る。外部電源が復元されると、コンピューティングシステムは永続的な状態又はステートフル状態から再起動又は復元してよい。いくつかの実施形態では、システムは、システム状態がバックアップエネルギー源によって保たれる間、電力消費削減状態に入ってよく、又は電力消費削減状態で存在してよい。
【００４２】
メモリインタフェース２１８の機能は、電圧レベルが継時的に又は障害より先に低下することがあるので、エネルギー源２１９の健康の状態、例えば電圧レベルを監視することをさらに含んでよい。係る健康の状態は、通信バス１０７を介して監視システムに送り返されてよい。メモリインタフェース２１８及びＲＡＭ記憶ユニット２２０は、キャッシュメモリ１０３に対する修正を必要とすることなく動作し得る。
【００４３】
システム２００は、ＲＡＭ記憶ユニット２２０に／ＲＡＭ記憶ユニット２２０からデータを記憶し、取り出すように適応されるオペレーティングシステム２０４をさらに含む。オペレーティングシステム２０４は、新規のドライバインタフェースの一部としてデータ適応化モジュール２１１を含む。データ適応化モジュール２１１は、本明細書に説明されるデータ適応化モジュール２１１の機能を提供するビットジェネレータソフトウェアを実行する。ビット生成ソフトウェアは、プロセッサ２０２の初期化プロセス中にリアルタイムでロードされてよい。従来のＲＡＭメモリ（例えば、ＤＩＭＭスロット１０８ａに結合されたメモリ）及び／又はキャッシュメモリ１０３は、データ適応化モジュール２１１の機能をサポートするために使用されてよい。データを記憶するとき、データ適応化モジュール２１１は、生データを符号化されたデータに符号化し、次いで符号化されたデータをＲＡＭ記憶ユニット２２０に記憶することによって、ＲＡＭ記憶ユニット２２０に記憶されるようにデータを適応させる。通常、所定のサイズの生データ（つまり、所定数の生データビット）の場合、符号化されたデータはより小さい、つまり符号化されたデータは、生データビットの数よりも少ない数の符号化されたデータビットによって表されてよい。データ適応化モジュール２１１は、ＲＡＭ記憶ユニット２２０の中に、その未処理の形で表される場合、ＲＡＭ記憶ユニット２２０の記憶容量を超えるだろうデータの量を記憶してよい。例えば、同等数の生データビットによって測定されるようなＲＡＭ記憶ユニット２２０の有効記憶容量は、ＲＡＭ記憶ユニット２２０の物理記憶容量を超えてよい。プロセッサ２０２は、例えばサーバとして等、従来の機能のためにプロセッサ２０２の動作をサポートするために従来のＲＡＭメモリ及び／又はキャッシュメモリ１０３を活用してよい。
【００４４】
データ適応化モジュール２１１による符号化されたデータのＲＡＭ記憶ユニット２２０への転送は、同等な生データビットの転送によって表される場合、プロセッサ、ＲＡＭ記憶ユニット２２０、及びプロセッサをＲＡＭ記憶ユニット２２０にリンクする通信バスの最大データ転送速度を超えるだろう転送速度で起こってよい。
【００４５】
同様に、ＲＡＭ記憶ユニット２２０から記憶されたデータを取り出すとき、データ適応化モジュール２１１は、符号化されたデータを生データに復号し、次いで例えばプロセッサ２０２又はプロセッサ２０２上で実行中のアプリケーションプログラムによって他の使用にその生データを提供することによって、ＲＡＭ記憶ユニット２２０から読み取られたデータを適応させる。
【００４６】
データ適応化モジュール２１１は、データ符号化に費やしたリソース（例えば、プロセッサ２０２による処理時間）が、生データよりむしろ符号化されたデータのＲＡＭ記憶ユニット２２０への送信により保存されたリソース（例えば、通信バス１０７上での送信時間）よりも少なるように十分に高速でデータを適応させる。同様に、データ復号に費やした処理時間は、ＲＡＭ記憶ユニット２２０からの生データよりむしろ、符号化されたデータの送信から生じる節約時間よりも少ない。
【００４７】
本開示に係る実施形態は、生成中、プラットフォームをハイブリッドの計算及び記憶システムとすることができるデータ適応化モジュール２１１で特殊化されたシンＯＳを実行してよい。また、ＯＳは、いくつかの仮想マシンがプラットフォーム上で同時に実行できるようにするために埋込みサーバ仮想化プラットフォームも提供する。これらの多くの例の内の１つは、すべてが、さもなければ従来の既知のバーチャル計算プラットフォームに固有だろうＩ／Ｏ遅延を一度も経験することなく、１０台から１５台以上のＭｉｃｒｏｓｏｆｔ  Ｗｉｎｄｏｗｓインスタンスを個別に且つ同時に実行する単一のシステムだろう。
【００４８】
本開示に係る実施形態は、複雑なデータベースシステムに見られる極端に高性能のトランザクション処理を実行するときにも使用されてよい。係るアプリケーションは、純粋にＲＡＭ内のシステムデータベースの大きな部分又は全体を実行する可能性を可能にする。
【００４９】
実施形態の予備的な試験及び／又はシミュレーションは、適切に構成されたシステムが４８  ＧＢもの少ないＮＶＲＡＭで４  ＴＢを超える極端に高速度のＲＡＭ記憶を達成できるだろうことを示す。
【００５０】
本明細書に説明される生データを符号化するためのプロセス及び処理されたデータを復号して生データを作り出すプロセスは、データ適応化モジュール２１１の中でモジュールを呼び出すことによって実行されてよい。これらのモジュールは、オペレーティングシステム２０４、又はプロセッサ２０２で実行中の別のアプリケーションプログラムによって呼び出されてよい。
【００５１】
生データの符号化の一実施形態は、本願の同一出願人による、及びその全体的な内容が参照することにより本明細書に組み込まれるＩｇｎｏｍｉｒｅｌｌｏに対する米国特許出願公報第２０１４／０２２３１１８号（「第‘１１８号公報」）に説明される。
【００５２】
他の実施形態は、第‘１１８号公報に説明される等、ＲＡＭ記憶ユニット２２０の有効記憶容量がよりしなやかになることを可能にするビットマーカ方法を使用すること、並びに有効記憶容量及び密度が非常に迅速に増加することを可能にするによって生データを符号化してよい。記憶容量は、記憶できる生データの同等量が固定値ではなく、生データの特徴、例えば生データがどれほどよくビットマーカに一致するのかに応じて変化してよいという意味でしなやかであってよい。生データ容量は、オペレーティングシステム又は基本入出力システム（ＢＩＯＳ）等のより低レベルのソフトウェアによって制御されていない、又は事前に知られていない。実施形態は、非常に高い物理容量のＲＡＭチップ、及び付随する非常に高密度のナノメータ特徴設計の必要性を削減し、このようにしてより低い密度の及び／又はより旧い世代のＲＡＭチップのＲＡＭ記憶ユニット２２０に対する使用を可能にする。
【００５３】
ビットマーカは、生データの特徴もしくは生データに由来する特徴から由来してよい、又は少なくとも部分的に生データの特徴もしくは生データに由来する特徴から基づいてよい。生データの特徴は、例えば、（例えば、音声ファイル、グラフィックファイル、ビデオファイル、ＺＩＰファイル、Ｗｏｒｄファイル、ＰＤＦ等の）生データのタイプ、（例えば、グラフィックファイル、ビットマップ化、ＧＩＦ、ＴＩ、ＪＰＥＧ等の）ファイルフォーマット、（例えば、それがクラシック音楽のＭＰ３なのか、ジャズのＭＰ３なのか、ラップのＭＰ３なのか、ロックミュージックのＭＰ３なのか、オーディオブック等の話された言葉等であるのかに関わりなく、ＭＰ３音声ファイル用の）ファイルのコンテンツ、（例えば、ＭＰ３音声ファイル、ビットレート、モノ又はステレオ、メタデータ、総長、使用されている符号化、ダイナミックレンジ、時間長等の）ファイルの属性、（例えば、サイズ、年齢、修正日、ファイル内部でのバイトの又はバイトのシーケンスの確率分布等の）ファイルの統計などであってよい。例えば、ＭＰ３ファイルは異なるタイプのファイル（例えば、ＪＰＧファイル）よりもより頻繁に特定の生データビット（つまり、バイトのシーケンス）を含んでよいため、ファイルがＭＰ３ファイルであるという知識が選択されたビットマーカ、及び各ビットマーカが表す生データビットに影響を及ぼすことがある。データ適応化モジュール２１１は、経時的に又は処理された生データの量を超えて、例えば、生データの特徴がよりよく知られるようになる、又は統計的な意味で静止していない場合等、生データの特徴の変化に応えて生データを表すために使用されるビットマーカを適応的に変更してよい。
【００５４】
ビットマーカは、生データのベクトル、つまり生データビットの所定のシーケンスを表してよい。また、生データのベクトルは、データセグメントと称してもよい。異なるビットマーカは、異なる長さのベクトルを表してよい。生データは生データのベクトルに分解されてよく、ベクトルは次いでビットマーカにマッピングされてよい。いくつかの実施形態では、連結ベクトルは生データを表してよい。他の実施形態では、ベクトルは、ベクトルの組合せ（例えば、ブールのＡＮＤ、ＯＲ、ＸＯＲ、ＮＡＮＤ等）が生データを表し得るように重複してよい。生データは、複数の層（例えば、グラフィックファイルの場合、Ｒ、Ｇ、ＢもしくはＣ、Ｙ、Ｍ、Ｋ等の色成分ごとの別々の層、又は他の論理層等）によって表されてよく、ビットマーカは、各色層内の生データビットを別々に表すために使用されてよい。いくつかの実施形態では、生データは多次元データ構造（例えば、２次元アレイ、３次元立方体、Ｎ次元構造等）として表されてよく、ベクトルは多次元データ構造の隣接部分（例えば、生データの２次元アレイの矩形部分）を表してよい。ビットマーカは、ベクトルポインタと生ベクトルデータ自体の間で変換する変換関数と見なされてよい。
【００５５】
いくつかの実施形態では、ビットマーカ（例えば、生データに由来する特徴）の知識は、生データに一致するためのモデルベクトルを生成するのに十分であり得る。例えば、未処理ビットのセット（例えば、通信リンクから受け取られるファイル又は情報）がビデオストリーミング媒体を表すと仮定する。未処理ビットが特定の特徴（例えば、フレームレート、解像度、ピクセル次元、カラーパレット等）を有するビデオストリーミング媒体を表し、ビットマーカが、データがそれらの特徴のビットストリーミング媒体であることを示すために選択されてよいことが推量、推測、又はそれ以外の場合設定されてよい。ビットマーカがそれらの特徴のビデオストリーミング媒体を表す旨の知識は、例えばフレームレート、解像度、ピクセル次元、カラーパレット等のビデオストリーミング媒体の特徴に予測的に一致されたモデルベクトルを生成するために使用されてよい。係る実施形態の利点は、ビットマーカがいったん知られると、符号化は、例えばリアルタイムでストリーミング媒体を処理することによってオンザフライで達成できる点である。ファイル（例えば、ＭＰ３ファイル、ＤＶＤビデオディスク等）を処理する場合、処理はファイル全体で（例えば、セクション単位で）読み取る必要なく、相対的に程よいサイズのバッファだけを必要として達成され得る。符号化されたデータは、それが作り出されるにつれ、ＲＡＭ記憶ユニット２２０に記憶されてよい。
【００５６】
いくつかの実施形態では、オブジェクトは合成オブジェクト、つまり１つのファイルタイプのオブジェクトであってよく、しかも別のファイルタイプを含んでよい。例えば、ｅメールオブジェクトはその中に、添付ＰＤＦ、添付ＺＩＰファイル、添付Ｗｏｒｄ文書、別のｅメールオブジェクト等の埋込みオブジェクトを含んでよい。オブジェクトが合成オブジェクトである旨の知識は、埋込みタイプのオブジェクトにとって、及び合成オブジェクトの別々の部分にとって適切なベクトル及びビットマーカを選択するのに役立つために有用であり得る。
【００５７】
いくつかの実施形態では、生データは、生データを分析して、分割の前に多様なセクション間で有用な境界を決定することによって１次元構造から多次元構造に変換されてよい。分割後の多様なセクションが多次元構造を形成する。いくつかの実施形態では、例えば、分析は、分析が迅速に実行できることを保証するのを支援するよう、使用可能なプロセッサキャッシュサイズを考慮に入れてよい。
【００５８】
いくつかの実施形態では、ビットマーカは、例えば任意に多数の生データビットに中核部を拡大するために、どのようにしてシードから追加のデータを作り出すのかの複製規則とともに、中核部（つまり、シード生データビット、開始値、開始パターン等の相対的に小さい集合）を表してよい。追加データを作り出すための規則は、例えば、複製所定の回数又は所定の長さまでの複製、フラクタルベースの複製、実行長複製等を含んでよい。例えば、２次元多次元生データ構造の部分がフラクタルパターンで表すことができる場合、係る表現は、生データビットの、特定のサイズでレンダリングされたフラクタルパターンへのフラクタルベースのマッピングのために役立つことがある。実施形態によって使用されるように、データ符号化及びデータ復号のためのフラクタルパターンは、他の次元性、例えば１次元（線形パターン）、３次元等での生データに対して存在してよい。
【００５９】
いくつかの実施形態では、ビットマーカは、ＤＮＡサブマーカを結合するための規則とともに１つ又は複数のＤＮＡサブマーカを表してよい。例えば、ビットマーカは、Ｖ３及びＶ１のＸＯＲ積と連結されたベクトルＶ４を表してよい。結果として生じるビットマーカは、次いで、他のサブマーカと結合して別のマーカを形成するためのサブマーカの機能を果たしてよい。
【００６０】
当初、ベクトル及びベクトルの対応するビットマーカはベクトルフィールドに記憶されてよい。ベクトルフィールドは、通常、ＲＡＭ記憶ユニット２２０から離れた別個のメモリに記憶される。例えば、ＲＡＭ記憶ユニット２２０がＤＩＭＭソケット１０８ｂに結合される場合、次いでベクトルフィールドは、ＤＩＭＭソケット１０８ａに結合された従来のＤＩＭＭメモリに、又はキャッシュメモリ１０３等に記憶されてよい。生データビットのグループは、データ適応化モジュール２１１に送信され、次いでベクトルフィールドのベクトルに生データビット又は生データビットの部分をマッピングする又は相互に関連付けされてよい。対応するビットマーカは、次いでベクトルフィールドから取り出され、同等な生データビットの代わりにＲＡＭ記憶ユニット２２０に記憶されてよい。ビットマーカは再利用つまり「増幅」されてよく、これにより生データが生データビットの複数のインスタンスを含む場合、対応するビットマーカは、それが生データバイトの複数のインスタンスのために使用される旨の表示とともにＲＡＭ記憶ユニット２２０に記憶されてよい。増幅は、（例えば、ビットもしくはバイトの数で測定されるような）ビットマーカのサイズとビットマーカの使用のインスタンスによって置換された同等な生データビット（又はバイト）のサイズの比率を指す。
【００６１】
いくつかの実施形態で、ＲＡＭ記憶ユニット２２０は論理的に分割されてよく、これによりＲＡＭ記憶ユニット２２０の一部分（例えば、物理的にアドレス指定可能な１つの部分）はビットマーカを記憶してよく、一方、ＲＡＭ記憶ユニット２２０の別の部分は従来のメモリとして動作してよい。いくつかの実施形態では、ＤＩＭＭスロットの内の１つ（例えば、ＤＩＭＭスロット１０８ｂ）に結合されたＲＡＭ記憶ユニット２２０はビットマーカを記憶するために動作してよく、別のＤＩＭＭスロット（例えば、ＤＩＭＭスロット１０８ａ）に結合されたＲＡＭモジュールは従来のメモリとして動作してよい。
【００６２】
本開示に係る他の実施形態は、データ投入中に長い形式のデータを短い形式のビットマーカに符号化し、要求時に短い形式のビットマーカを長い形式のデータにオンザフライで復号するビットジェネレータを含む。
【００６３】
いくつかの実施形態では、１つ又は複数のパターンが生データのセットで識別されてよい。生データが「０」及び「１」の線形列として表されるときには、パターンは、例えば、未処理ビットの周期性であってよい。また、パターンは、生データがバイトの線形列として表されるときは生データの周期性、又は生データが生データの多次元セットとして表されるときは多次元周期性の形であってもよい。周期性は、生データの所定のパターンの頻度として表されてよい。周期性の特徴は、周波数と位相を含んでよい。多次元データは、各次元とは関係なく特徴付けられてよい。期間（又は逆に周波数）は、例えば、毎サイクル２５６ビット、毎サイクル６５，５３６ビット等、所定のパターンの反復するサイクルごとの未処理ビットとして表されてよい。位相は、所定のパターンの基準コピー（例えば、ディクショナリコピー）に関してパターンの開始点を示してよい。実施形態は、識別する特徴（例えば、ビットマーカ、指紋等）として周波数及び位相の特徴を使用してよい。
【００６４】
いくつかの実施形態では、１次元の生データでの周期性は多次元生データとしてモデル化又は分析されてよい。例えば、心電図を表すデータトレースは、心拍速度で表される固有の周期性を含む。周波数（例えば、毎分拍動）は経時的に変化し、心電図の正確な形状はある拍動から別の拍動で変化することがあるため、周期性は完全ではない。それにも関わらず、心電図トレースは、１拍動（例えば、第１の拍動、つまり基準拍動、又は理想的な拍動等）の心電図が電圧対時間の１つの平面（つまり、２軸）を表し、３次元が拍動順序数を表す、多次元構造としてモデル化されてよい。データは、上述された周波数等の要因の変化を考えてから、３次元の差異を分析することによって部分的に符号化されてよい。
【００６５】
いくつかの実施形態では、パターンは１つ又は複数の基底関数又は基底ベクトルの線形結合を表してよい。数学では、基底関数は、関数空間のための特定の基底の要素である。関数空間内のあらゆる連続関数は、基底関数の線形結合として表すことができる。同様に、ベクトル空間内のあらゆるベクトルは、基底ベクトルの線形結合として表すことができる。基底ベクトルはベクトル空間内の線形独立ベクトルの集合として知られ、ベクトル空間内のあらゆる他のベクトルはこれらのベクトルに線形従属である。
【００６６】
例えば、生データは基底ベクトルの結合に分解されてよい。各基底ベクトルは、測定可能なバイナリパターンである。好ましくは、基底ベクトルは、基底ベクトルを参照するために使用されるビットマーカ（つまり、ベクトルマップでの基底ベクトルに対するポインタ）に比較して非常に長くなくてはならないが、基底ベクトルは生データ全体よりも短くてよい。基底ベクトルとしての生データの表現は、（ａ）基底ベクトルのビットマーカ、及び（ｂ）基底ベクトルの生データの開始位置の１つ又は複数のデータ対を含んでよい。遺伝子プールがベクトルから生データを再構築する方法に関する情報を含んでよいという点で、遺伝子プールはベクトルマップに関係している。例えば、遺伝子プールは再構築されるファイルのタイプ（例えば、ＭＰ３ファイル）を示してよく、それを知っていることはファイルを再構築する際に有用となるだろう。ジグソーパズルに類推すると、ベクトルはジグソーパズルの個々のピースを表してよく、遺伝子プールは、ジグソーパズル全体が完了時に見えるはずである写真を表してよい。
【００６７】
いくつかの実施形態では、基底ベクトルによって表されていない生データは、例えば０ｘ００又は０ｘＦＦバイト等の所定値であると見なされてよい。これは、生データが例えば、多数の連続０ｘ００バイト等、所定の値の多数の連続ビット又はバイトを有する場合、有用であり得る。
【００６８】
いくつかの実施形態では、生データは、少なくとも部分的に重複してよい基底ベクトルに分解されてよい。重複する基底ベクトルはブールＯＲとしてデフォルトによって結合されてよいが、他のブール関数も使用されてよい（例えば、ＡＮＤ、ＸＯＲ、ＮＡＮＤ等）。
【００６９】
いくつかの実施形態では、ベクトルディクショナリは、生データの統計での変化に適応し得る。例えば、記憶されている情報のタイプが（例えば、ビデオからＭＰ３に）変化する場合、生データの統計も変化し得る。係る変化は、特定の基底ベクトルがそれほど頻繁に使用されず、他の基底ベクトルがより頻繁に使用されてよいことを意味し得る。実施形態は、使用の変化を認識し、基底ディクショナリを、例えばいくつかの基底ベクトルを間引きし、他の基底ベクトルを追加することによって等、適切に更新してよい。デコーダは、例えばディクショナリ更新の包含によって、ベクトルディクショナリの変化を認識する。
【００７０】
いくつかの実施形態では、ベクトルディクショナリのエントリは、異なっているが、固定された長さを有してよい。長さは、生データの統計に依存してよい。例えば、ビットマーカは異なる長さを有してよく、これにより生データでより一般的に発生するベクトルに対応するビットマーカは、生データでのそれほど一般的に発生しないベクトルに対応するビットマーカよりも短くてよい（つまり、ビットマーカはより少ないビットを含む）。代わりに、ビットマーカは等しい長さを有してよいが、いくつかのビットマーカは、生データのより短いが、より一般的には発生しないベクトルを表す他のビットマーカよりも、生データのより長いが、より一般的に発生するベクトルに対応してよい。
【００７１】
いくつかの実施形態では、ビットマーカは、本質的に階層的であってよい木及び葉の枠組みで表されてよい。この枠組みでは、各ビットマーカは葉によって表され、木の中の葉のサイズ及び／又は位置が、それが表すビットマーカの特徴に対応する。例えば、より一般的に発生するビットマーカはより小さい葉又は木の根により近い葉として表されてよい。逆に、そえほど一般的に発生しないビットマーカは、より大きな葉又は木の根からより遠い葉として表されてよい。目標は、可能な限り小さい葉を使用すること、又は可能な限り根に近い葉を使用すること、又は葉のサイズと葉が使用される回数の積等の数学関数を最小限に抑える傾向がある葉を使用することであってよい。
【００７２】
データを復号することは、ＲＡＭ記憶ユニット２２０から符号化されたデータを読み取り、次いで符号化プロセスを反転するための関数を実行することを伴う。復号関数は、データ適応化モジュール２１１内のモジュールによって提供されてよい。例えば、データを復元するために、符号化されたデータのブロックはＲＡＭ記憶ユニット２２０から読み取られてよい。符号化されたデータのブロックは、復号プロセスが実行される間、高速メモリに一時的に記憶されてよい。復号プロセスは、データ適応化モジュール２１１内のモジュールによって提供される。これらのモジュールは、オペレーティングシステム２０４によって呼び出されてよい。
【００７３】
より詳細には、ＲＡＭ記憶ユニット２２０からデータを取り出し、それを復号するとき、データ適応化モジュール２１１は、復号されたデータに生データを復号することによってＲＡＭ記憶ユニット２２０に記憶されるようにデータを適応させる。従来のＲＡＭメモリ（例えば、ＤＩＭＭスロット１０８ａに結合されたメモリ）及び／又はキャッシュメモリ１０３は、データ適応化モジュール２１１の復号関数をサポートするために使用されてよい。
【００７４】
図３Ａは、本開示の実施形態に係る符号化プロセス３００を示す。プロセス３００は、オペレーティングシステム２０４及びデータ適応化モジュール２１１によって実行されてよい。
【００７５】
プロセス３００はステップ３０１で開始し、ステップ３０１で、記憶される生データのブロックが、生データを記憶することを意図するアプリケーションプログラムから受け取られる。生データは、ファイル、ストリーミング媒体、固定サイズ又は可変サイズのデータのブロック等の形をとってよい。
【００７６】
次に、プロセス３００はステップ３０３に遷移し、ステップ３０３で、ステップ３０１で受け取られた生データの部分は、生データの候補ベクトルにマッピング又は一致されてよい。候補ベクトルは、従来のメモリで（マーカ、ベクトル）対のテーブルとして記憶されてよい。目標は、少なくとも１つのベクトルによって生データの各ビット又はバイトを表すことである。０ｘ００又は０ｘＦＦ等の特定の生データバイトは、デフォルト値であると見なされてよく、デフォルト値に等しい任意の生データバイトの場合、ベクトルでデフォルトバイトを表すことは任意選択である。
【００７７】
次に、プロセス３００はステップ３０５に遷移し、ステップ３０５で、ステップ３０３で決定されたベクトルが、（マーカ、ベクトル）対のテーブルからそれぞれのビットマーカにマッピングされてよい。ビットマーカは、関連付けられたベクトルを参照する近道である。
【００７８】
次に、プロセス３００はステップ３０７に遷移し、ステップ３０７で、（マーカ、ベクトル）対のテーブルからのビットマーカは、ＲＡＭ記憶ユニット２２０等のメモリに記憶される。
【００７９】
図３Ｂは、本開示の実施形態に係る復号プロセス３５０を示す。プロセス３５０は、オペレーティングシステム２０４及びデータ適応化モジュール２１１によって実行され得る。
【００８０】
プロセス３５０はステップ３５１で開始し、ステップ３５１で、復号される符号化データのブロックが、ＲＡＭ記憶ユニット２２０等のメモリから読み取られる。アドレスは、当業者に既知であるように、仮想アドレス調整方法及びテーブルによって管理されてよい。
【００８１】
次に、プロセス３５０はステップ３５３に遷移し、ステップ３５３で、ビットマーカが、符号化データから抽出される。
【００８２】
次に、プロセス３５０はステップ３５５に遷移し、ステップ３５５で、ステップ３５３からの抽出されたビットマーカが（マーカ、ベクトル）対のテーブルで検索される。
【００８３】
次に、プロセス３５０はステップ３５７に遷移し、ステップ３５７で、生データベクトルが、ステップ３５３からの抽出されたビットマーカに対応する（マーカ、ベクトル）対のテーブルのエントリから抽出される。
【００８４】
次に、プロセス３５０はステップ３５９に遷移し、ステップ３５９で、ステップ３５７からの抽出された生データが結合されて、再構築された復号データを形成する。結合された生データベクトルが再構築された復号データの予想されるアドレス範囲全体の中のすべてのアドレスをカバーしない場合、カバーされていないアドレスは、例えば０ｘ００バイト又は０ｘＦＦバイト等の復号されたデータの中のデフォルト値を取ると見なされてよい。
【００８５】
Ｉ／Ｏ機能を分析するとき、従来のシステムは、毎秒５７．６  ＧＢまでの連続Ｉ／Ｏ速度を可能にし得る。対照的に、本開示の実施形態に係るシステム、つまりＩｎｔｅｌ  Ｉｖｙ  Ｂｒｉｄｇｅ  ２６９７  ｖ２プロセッサで試験されたシステムの場合、実施形態は、すべて７．６ＧＨｚのブースト機能を備えて５．４ＧＨｚで、２４の物理プロセスコア及び最高４０のハイパースレッドコア、６１４４ＫＢのＬ２プロセッサキャッシュ、６０ＭＢのＬ３プロセッサキャッシュを有してよい。任意の他のＩｖｙ  Ｂｒｉｄｇｅ  ２６９７  ｖ２サーバに対して実施形態の性能を比較すると、７６．８倍高速のＩ／Ｏ増加を示す。同等の性能利得は、Ｈａｓｗｅｌｌマザーボードアーキテクチャ及びＤＤＲ４メモリを含んだ他のコンピューティング環境で達成可能である。
【００８６】
前記は本発明の実施形態を対象といているが、本開示の他の実施形態及び追加の実施形態は、本発明の基本的な範囲を逸脱することなく考案されてよい。本明細書に説明される多様な実施形態は、本明細書に含まれる範囲を逸脱することなく説明される任意の他の実施形態と組み合わせて活用されてよいことが理解される。さらに、上記説明は、包括的になること、又は開示されている正確な形式に本発明を制限することを目的としていない。修正形態及び変形は上記教示を鑑みて可能である、又は本発明の実践から取得されてよい。特定の例示的な実施形態は、リスト項目が実施形態を表していること、及びリストが追加の実施形態を除外する閉鎖されたリストを表すことを目的としていないことを示すための言い回しを含むオープンエンドリストの使用によって特定されてよい。係る言い回しは「例えば」、「等」、「等」、「例えば」、「等」、「等」等、及び周囲の文脈から明らかとなる他の言い回しを含んでよい。
【００８７】
本願の明細書で使用される要素、行為、又は命令は、そのように明示的に説明されていない限り本発明に対して重大又は必須として解釈されるべきではない。また、本明細書に使用されるように、冠詞「ある」は、１つ又は複数の品目を含むことを目的とする。ただ１つの品目が意図される場合、用語「１つ」又は類似した言葉が使用される。さらに、本明細書で使用されるように、複数の品目及び／又は複数のカテゴリの品目のリストが後に続く用語「のいずれか」は、個別に、又は他の品目及び／又は他のカテゴリの品目と併せて、品目及び／又はカテゴリの品目「のいずれか」、「のいずれかの組合せ」、「のいずれかの複数」、及び／又は「の複数のいずれかの組合せ」を含むことを目的とする。
【００８８】
さらに、特許請求の範囲は、その旨が記載されない限り、説明された順序又は要素に制限されるとして読まれるべきではない。さらに、いずれの請求項においての用語「手段」の使用も、特許法第１１２条、第６項を行使することを意図され、単語「手段」のないいかなる請求項もそのように意図されていない。
【図１】
2018050301.tif 000003
【図２】
2018050301.tif 000004
【図３Ａ】
2018050301.tif 000005
【図３Ｂ】
2018050301.tif 000006