【解決手段】生データを符号化し、復号するためのシステム及び方法。符号化するための方法は、暗号化されていないデータのブロックを受け取ることと、暗号化されていないデータのブロックを複数のデータベクトルに分解することと、複数のデータベクトルの各々をビットマーカにマッピングすることと、暗号化されていないデータの符号化された表現を作り出すためにメモリにビットマーカを記憶することを含む。符号化は、暗号化されていないデータのブロックをデフォルトデータ及び非デフォルトデータに分解すること、及び非デフォルトデータだけをマッピングすることをさらに含む。ビットマーカはシード値及び複製規則、又はフラクタル化されたパターンを含む。
【発明を実施するための形態】
【0016】
以下の発明を実施するための形態では、本明細書に説明される実施形態又は他の例の完全な理解のために多数の特定の詳細が説明される。いくつかの例では、以下の説明をわかりにくくしないように周知の方法、手順、構成要素、及び回路は詳細に説明されていない。さらに、開示されている例は例示のためだけであり、他の例は開示されている例の代わりに、又は開示されている例と組み合わせて利用されてよい。他の等しく効果的な例も可能であり、見込みがあるため、本明細書に提示される例が本発明の実施形態の範囲を制限すると解釈されるべきではないことにも留意するべきである。
【0017】
本明細書に使用されるように、用語「モジュール」は、概してステップ、プロセス、又は構成要素の論理的なシーケンス又は関連を指す。例えば、ソフトウェアモジュールはコンピュータプログラム内部の関連付けられたルーチン又はサブルーチンのセットを含んでよい。代わりに、モジュールは実質的に自己内蔵型のハードウェア装置を含んでよい。また、モジュールはいかなるソフトウェア又はハードウェアの実装にも関わりなくプロセスの論理的なセットを含んでよい。
【0018】
また、機能を実行するモジュールは機能を実行するように構成されているとして参照されてもよく、例えば、データを受け取るデータモジュールは、データを受け取るように構成されているとして説明されてもよい。機能を実行するための構成は、例えば、機能を実行するコンピュータコードを提供し、実行すること、モジュールの能力を制御する、制限する、有効にする、又は無効にするプロビジョニング可能な構成パラメータを提供すること(例えば、フラグをセットすること、許可を設定すること、決定点で使用される閾値レベルを設定すること等)、オプションを選択するため、又はオプションを有効にする/無効にするためのジャンパー等の物理接続を提供すること、物理通信リンクを取り付けること、無線通信リンクを有効にすること、機能を実行する回路を励起すること(例えば、データを受け取るためにトランシーバ回路に電力を供給すること)等を含んでよい。
【0019】
図1は、技術で既知の従来のコンピュータシステム100の機能ブロック図を示す。システム100は、例えばIntel(登録商標)互換アーキテクチャをベースにしたコンピュータシステムで使用されてよい。製作技術が進歩するにつれ、チップセットの生成、ターゲットのカスタマの価格対性能比、ターゲットとなるアプリケーション(例えば、モバイル機器、サーバ等)等の要因に応じて、多様な機能構成要素が異なる集積回路(IC)構成で製作されてよい。特定の機能は、IC 116等の単一のICで等、多様な構成に結合されてよい。
【0020】
システム100は、Xeon(登録商標)、Intel Core i7(登録商標)、i5(登録商標)、i3(登録商標)等の汎用プロセッサ、又はAthlon64(登録商標)等のAdvanced Micro Devices(登録商標)(AMD)のプロセッサであってよいプロセッサ102を含む。他の実施形態では、プロセッサ102はグラフィックスプロセシングユニット(GPU)であってよい。
図1の機能ブロック図では、本明細書に使用されるようなプロセッサ102は、プロセッサの機能を指してよい、及び/又はプロセッサの1つ又は複数のハードウェアコアを指してよい。プロセッサ102は、マルチGHz速度で動作する複数の処理コアを含んでよい。プロセッサ102はキャッシュメモリ103(例えば、L1キャッシュ又はL2キャッシュ)を含んでよい。また、プロセッサ102は、オペレーティングシステム104を含むようにプログラミング又は構成されてもよい。オペレーティングシステム104の例は、Windows(登録商標)、Mac OS(登録商標)、Linux(登録商標)、及び/又は本開示の実施形態に係るオペレーティングシステム又はオペレーティングシステム拡張部等の多様なバージョンを含む。登録商標Windowsは、Microsoft Inc.の登録商標である。登録商標Mac OSはApple Inc.の登録商標である。登録商標Linuxは、LMI、つまり世界的な規模でのマークの所有者であるLinus Torvaldsの専用実施権からの再実施権に従って使用される。オペレーティングシステム104は、(
図1に示されない)アプリケーションプログラムの実行を含む従来の機能を実行する。機能上、オペレーティングシステム104は、プロセッサ102の一部として示されているが、オペレーティングシステム104の部分は、
図1に示されていない不揮発性メモリ(例えば、ハードディスク)に物理的に常駐してよく、オペレーティングシステム104の少なくとも部分が、プロセッサ102による実行のために必要に応じてRAMメモリの中に読み込まれてよい。
【0021】
プロセッサ102は、さまざまな機能構成要素とインタフェースで接続するためにいくつかの内部バス及び外部バスを使用してよい。システム100は、プロセッサ102をメモリコントローラ106にリンクする通信バス105を含む。また、メモリコントローラ106は、ノースブリッジとも称されてよい。通信バス105はフロントサイドバス(FSB)、不均等メモリアクセス(NUMA)バス、EV6バス、ペリフェラルコンポーネントインターコネクト(PCI)バス等の内の1つとして実装されてよい。
【0022】
システム100は、プロセッサ102に結合された不揮発性メモリ122(例えば、CMOSメモリ)をさらに含む。CMOSメモリ122は、コンピュータ構成要素の間の低レベルの通信を管理するのに役立つ基本入出力システム(BIOS)124を含んでよく、パワーオンセルフテストを実行するためにコンピュータコードの記憶を含んでよい。従来、パワーオンセルフテストは、設置されているRAMのデータ完全性のテストを含んでよい。
【0023】
メモリコントローラハブ106は、通常、プロセッサ102と、通信バス107を介してデュアルインラインメモリモジュール(DIMM)スロット108a、108b、及び通信バス109を介してビデオグラフィックスカード110に設置された外部RAMメモリ等の多様な高速機能構成要素との間の通信を処理する。通信バス107及び109は、ペリフェラルコンポーネントインターコネクトエクスプレス(PCIe)又はアクセラレーテッドグラフィックスポート(AGP)等の高速インタフェースであってよい。また、メモリコントローラハブ106は、通信バス112を介してプロセッサ102とコントローラハブ114との間の通信を処理してもよい。コントローラハブ114は、サウスブリッジ、I/Oコントローラハブ(ICH)、フュージョンコントローラハブ(FCH)、プラットフォームコントローラハブ(PCH)等の他の名前で知られていることもある。そして、コントローラハブ114は、USBポート131、標準インタフェース(例えば、ATA/SATA、mSATA、SAS等)付きのディスクドライブ132、イーサネットトランシーバ133、オーディオポート134、他のPCIデバイス135等の追加の及び/又はより低速のI/O装置又はインタフェースとの通信もさらに管理する。
【0024】
システム100(不図示)のいくつかの構成では、プロセッサ102はメモリコントローラ106を迂回し、ダイレクトメディアインタフェース(DMI)を介してコントローラハブ114と直接的に通信するように設計される。係る構成は、プロセッサ102及びメモリコントローラ106の機能を単一のIC 116に統合してもよい。係る構成では、コントローラハブ114は、通常プラットフォームコントローラハブ(PCH)である。
【0025】
DIMMスロット108a、108bに設置されたRAMメモリを構成するメモリチップは非常に高い最大アクセス速度(例えば、約57GBytes/秒)を有してよいが、通信バス109は、通常、係る高速速度をサポートできない。例えば、16レーンスロットのPCIe4.0の速度は31.508Gbytes/秒に制限される。AGPはさらにPCIeよりも低速である。したがって、通信バス107がより高速のメモリアクセスを妨げるボトルネックである。
【0026】
メモリアクセスのボトルネックは従来技術の1つの欠点である。従来のコンピュータの上述された他の欠点は、RAMメモリのサイズ(通常、約数Gbytes)と従来のハードディスクの記憶サイズ(通常、約数Tbytes)との間の記憶サイズの不一致、及び従来のハードディスクの記憶サイズに対して相対的に小さいRAMメモリの記憶サイズを含む。従来の技術の別の欠点は、RAMメモリの揮発性の性質である。
【0027】
本開示に係る実施形態は、今日RAMが有する密度の問題を打ち砕く。本開示に係る実施形態は、記憶ユニットに新規のハードウェアインタフェースを提供し、ハードウェアインタフェースに新規のドライバインタフェースを提供することによって従来の技術のこれらの欠点に対処する。
【0028】
CPUを別とすれば、RAMはx86コンピューティングシステム及びx64コンピューティングシステムで最速の要素であるため、実施形態は、今日の高速RAM性能を密度を獲得する新しい方法に合わせることを可能にする。この効果が適用されると、効果はコストの枠組みを完全に変え、低コストのメモリモジュールが高密度高コストのメモリモジュールに対する必要性に代わることを可能にする。
【0029】
残っている問題は、標準メモリモジュールの揮発性である。すべてのRAMは揮発性であるので、RAMは長期の記憶媒体になることに役立たない。実施形態は、標準的なDIMM装置に見られる揮発性の問題を回避する不揮発性RAM(NVRAM)技術に類似しているが、不揮発性RAM(NVRAM)技術とは異なっている。
【0030】
本開示に係る実施形態は、Intel(登録商標)又はAMD(登録商標)のCPUプロセッサによって電力を供給できる基本的な安価なx64マザーボードを使用する。マザーボードは改良されたCME、及びそれに、不揮発性メモリを認識するために必要とされるインテリジェンスを与えるBIOSを有する。さらに、マザーボードは各メモリモジュールに、環境上安全な低負荷スロードレインキャパシタを充電するために使用され得るDC供給電圧(例えば、1.2v、1.35v、1.5v等)を提供する。この設計は、停止状態(例えば、電力の損失又は安全な停止)がメモリモジュール内でデータ永続性を維持し、よってメモリモジュールを実行可能な長期記憶装置にすることを可能にする。
【0031】
図2は、本開示の実施形態に係るコンピュータシステム200の機能ブロック図を示す。
図1ですでに説明された機能構成要素は、
図2で
図1に示された参照番号と同じ参照番号を割り当てられている。システム200は、Molex(登録商標)コネクタ等のコネクタ208を使用することによってDIMMスロット(例えば、DIMMスロット108b)に物理的に結合され得るメモリインタフェース218を含む。メモリインタフェース218は、通信バス107上の従来のプロトコルを使用することによってDIMMスロット108bを通してプロセッサ202と通信する。メモリインタフェース218は、RAM記憶ユニット220に物理的に且つ通信可能にRAM記憶ユニット220に結合される。メモリインタフェース218の機能は、通信バス107にRAM記憶ユニット220を通信可能に結合すること、RAM記憶ユニット220に関係する健康の状態のような特定のイベントについて他のハードウェアイベントを監視すること、検出された信号又はハードウェアイベントに基づいて特定の処置を講じること等を含む。また、メモリインタフェース218の機能は、メモリアドレスを決定すること、メモリサイズを報告すること、I/O制御、総パワーサイクル、1時間内の実行時間を追跡し、報告すること、DIMMの数を報告すること、ウルトラキャパシタ(cap)電流電圧、バス準備完了、前回復元の成功又は失敗、装置準備完了、NAND領域のフラッシュステータス、cap接続済み、cap充電ステータス、有効画像存在、DIMMイニット実行済み、読取りレジスタ等のステータスを報告すること等の単純な処理機能及びハウスキーピング機能も含んでよい。NANDは、データを保持するために電力を必要としない一種の不揮発性ICベース記憶技術として知られてよい。
【0032】
システム200は、プロセッサ202に結合される不揮発性メモリ222(例えば、CMOSメモリ)をさらに含む。CMOSメモリ222は、コンピュータ構成要素の間の低レベル通信の管理を助ける基本入出力システム(BIOS)224を含んでよく、パワーオンセルフテストを実行するためにコンピュータコードの記憶を含んでよい。従来、パワーオンセルフテストは、設置されているRAMのデータ完全性のテストを含んでよい。本開示に係る実施形態は、(BIOS124のパワーオンセルフテストに比較して)修正されたパワーオンセルフテストを含んでよく、これによりパワーオンセルフテストは、例えばテストが所定のメモリモジュールに記憶されるデータの性質と互換性がないであろう場合に、少なくともいくつかの所定のメモリモジュールのテストを省略してよい。
【0033】
また、本開示に係る実施形態は、エネルギー源219をRAM記憶ユニット220に結合することによって既知の技術のRAM揮発性欠点に対処する。エネルギー源219は、メモリインタフェース218と組み込まれてよい。エネルギー源219はバックアップ電力のソースであり、これによりRAM記憶ユニット220に対する外部電源が(例えば、コンピューティングシステム200に影響を及ぼすAC電源異常、可動システム200に電力を供給するバッテリの取外し、マザーボード故障等を介して)失われる場合、エネルギー源219は、RAM記憶ユニット220に記憶されたデータの完全性を維持するために十分な電力を提供してよい。
【0034】
デステージプロセスは、物理媒体の間でデータを転送することを伴う。本開示に係る実施形態は、ハードウェア構成要素とソフトウェア構成要素の両方を使用することによってデステージプロセスを実装する。ハードウェア構成要素は、コネクタ208、メモリインタフェース218、エネルギー源219、及びRAM記憶ユニット220を含む。コネクタ208は、メモリインタフェース218に動作電力を供給するために使用される所定のピンを含んでよい。メモリインタフェース218は、エネルギー源219の充電ステータス、異常検出のため、及びLED光(例えば、緑、黄、赤)のため等、検出プロセス及び通知プロセスを管理するために限られた処理能力(例えば、小型CPU)を含んでよい。電力損失が示される場合、スイッチがシステム動作(例えば、構成情報、システム状態等)に重大なメモリインタフェース218でのデータの保護されている記憶への転送を開始するために始動されてよい。いったんデステージが完了すると、メモリインタフェース218は削減電力モード及び/又は電源オフに入ってよい。デステージプロセスを実行するための電力は、少なくとも部分的にエネルギー源219によって供給されてよい。データ完全性は、エネルギー源219からの電力を使用することによって維持される。
【0035】
コネクタ208がそのそれぞれのDIMMスロット108から取り外される場合、コネクタ208及び/又はメモリインタフェース218は、コネクタ208が所定のDIMMスロット108から取り外される場合/とき、そのコネクタ208が、再挿入時に、同じそれぞれのDIMMスロット108の中に再挿入されることを保証するのに役立てるための機能を含んでよい。これらの機能はセキュリティ機能として機能してよく、これにより間違った再挿入が発生すると、実際上記憶されているビットがスクランブルをかけられ、読取り不可にされる。
【0036】
本開示に係る実施形態は、復元手順も提供する。復元手順は、完全なシステム故障又は電力損失からの回復のために役立つ。例えば、マザーボードが故障すると、実施形態は、システムの低電力モード及びシステムの修理(例えば、マザーボード交換)又は構成要素の回収(例えば、新規ユニットでの配置のためのコネクタ208、メモリインタフェース218、エネルギー源219、及びRAM記憶ユニット220の取外し)に入る。復元プロセスは、メモリモジュールを、メモリモジュールが欠陥のあるユニットで専有していたのと同じそれぞれのスロット場所に再設置することを含む。メモリモジュールは、メモリモジュールが交換ユニット内部の異なるスロット場所に設置される場合使用不能になるように物理的なキーイング又は論理的なキーイングを含んでよい。例えば、異なるスロット場所に設置されたメモリモジュールは、このように挿入されたメモリモジュールからデータを読み取ろうと試みる場合にスクランブルをかけられたビット(つまり、「ビットスクランブリング」)を生じさせてよい。シグナチャは、スロットのモジュールと関連付けられる。したがって、例えばB1スロットに最初に設置されたメモリモジュールを有し、E1スロットに再設置しようとすると、又はその逆の場合、そのときは機械は起動しないだろう。データモジュールは、スロット番号に一致させられる。メモリモジュールとスロット番号間の困難な関連付けのための論理的根拠は、間違ったスロットに設置されたメモリモジュールを用いてデータを復元しようと試みると、データが破壊される可能性があるということであり、したがって実施形態は間違ったスロット状況を検出し、データアクセスを妨げる。
【0037】
バックアップ手順及び復元手順は、モジュールAPI(つまり、「チップコール」)を介して実装されてよい。API機能は、バックアップ及び復元を含んでよい。API機能は、例えば「オントリガ」APIコール等の特定の所定イベントの発生時にトリガされてよい。例えば、アプリケーションプログラムは、システムが、データに対してリスクを呈する可能性がある状況又はイベントの発生がないかチェックするチェックポイントを含んでよい。係る検出時、バックアップAPIはトリガされてよく、このことが特定の重大なデータ、構成情報、メタデータ等をNANDメモリ等の保護された不揮発性メモリの中にコピーしてよい。バックアップをトリガしてよいイベントの例は、ブートプロセスの開始、ハードウェア又はソフトウェアの障害からの回復等を含む。
【0038】
システムの初期化時、回路電力が供給され、システム構成要素は電力を受け取る。エネルギー源219は再充電を開始する。ステータスインジケータ(例えば、緑、黄、赤等の多様な色のLED)は、ユーザに視覚的に役立つために設けられてよい。ステータスインジケータは、第1の段階(例えば、チェックサムの実行)での進行を示してよい。問題が示されることがある場合、実施形態は、例えばあらゆるビット及びバイトを注意深く比較するためにデータ画像をチェックする等、代替手順及び/又はより包括的な手順に進んでよい。従来の方法を使用すると、これはNANDの速度制限のために、例えば10分ブート等、非常に遅いことがある。障害状況が検出され、システム停止、モジュール紛失、モジュール不一致等を引き起こすことがある。上述されたように、メモリインタフェース218及びRAM記憶ユニット220が正しく置換されていない(例えば、間違ったスロットもしくは間違った順序)、又は間違ったシステムに設置されている(つまり、必要とされているビットマーカがないシステム)場合、データを回復することはできない。この挙動は、厳重なセキュリティを提供するために必要とされる。別個のインジケータが、いつAPI機能が完了するのかを示してよい。
【0039】
電圧及び電力の流れ(例えば、1.2v、1.35v、1.5v等)がコネクタ208を通して指定されたDIMMピン又は代替の要素に印加され、このことは同様に通常の動作ではエネルギー源219を励起する。メモリインタフェース218の熱的な設計は、例えばヒートシンクを使用することによってエネルギー源219を冷却するための要素を含んでよい。
【0040】
エネルギー源219は、少なくとも数カ月の期間、データ完全性を維持するために十分なエネルギーを有してよい。エネルギー源219は、例えば、少なくとも600ファラド等「スーパーキャパ」として知られている大容量のキャパシタであってよい。代わりに、エネルギー源219はバッテリであってよい。ただし、リチウムバッテリ等のバッテリベースのエネルギー源は、損傷を受けた場合又は内部短絡が発生する場合、突発故障(例えば、アーク放電、火災)を起こしやすい。エネルギー源219は、エネルギー源219がRAM記憶ユニット220に電力を供給していないとき、システム200への主電力によって通常の状況下で連続的に充電されてよい。
【0041】
システム状態は、システム状態がRAM記憶ユニット220に記憶されている限り復元され得る。いくつかの実施形態では、別個のバックアップエネルギー源は、コンピューティングシステムの他の部分(例えば、プロセッサ及びキャッシュ)にエネルギーを提供してよく、これによりシステム状態又は他の追加の状態は停電中保存され得る。外部電源が復元されると、コンピューティングシステムは永続的な状態又はステートフル状態から再起動又は復元してよい。いくつかの実施形態では、システムは、システム状態がバックアップエネルギー源によって保たれる間、電力消費削減状態に入ってよく、又は電力消費削減状態で存在してよい。
【0042】
メモリインタフェース218の機能は、電圧レベルが継時的に又は障害より先に低下することがあるので、エネルギー源219の健康の状態、例えば電圧レベルを監視することをさらに含んでよい。係る健康の状態は、通信バス107を介して監視システムに送り返されてよい。メモリインタフェース218及びRAM記憶ユニット220は、キャッシュメモリ103に対する修正を必要とすることなく動作し得る。
【0043】
システム200は、RAM記憶ユニット220に/RAM記憶ユニット220からデータを記憶し、取り出すように適応されるオペレーティングシステム204をさらに含む。オペレーティングシステム204は、新規のドライバインタフェースの一部としてデータ適応化モジュール211を含む。データ適応化モジュール211は、本明細書に説明されるデータ適応化モジュール211の機能を提供するビットジェネレータソフトウェアを実行する。ビット生成ソフトウェアは、プロセッサ202の初期化プロセス中にリアルタイムでロードされてよい。従来のRAMメモリ(例えば、DIMMスロット108aに結合されたメモリ)及び/又はキャッシュメモリ103は、データ適応化モジュール211の機能をサポートするために使用されてよい。データを記憶するとき、データ適応化モジュール211は、生データを符号化されたデータに符号化し、次いで符号化されたデータをRAM記憶ユニット220に記憶することによって、RAM記憶ユニット220に記憶されるようにデータを適応させる。通常、所定のサイズの生データ(つまり、所定数の生データビット)の場合、符号化されたデータはより小さい、つまり符号化されたデータは、生データビットの数よりも少ない数の符号化されたデータビットによって表されてよい。データ適応化モジュール211は、RAM記憶ユニット220の中に、その未処理の形で表される場合、RAM記憶ユニット220の記憶容量を超えるだろうデータの量を記憶してよい。例えば、同等数の生データビットによって測定されるようなRAM記憶ユニット220の有効記憶容量は、RAM記憶ユニット220の物理記憶容量を超えてよい。プロセッサ202は、例えばサーバとして等、従来の機能のためにプロセッサ202の動作をサポートするために従来のRAMメモリ及び/又はキャッシュメモリ103を活用してよい。
【0044】
データ適応化モジュール211による符号化されたデータのRAM記憶ユニット220への転送は、同等な生データビットの転送によって表される場合、プロセッサ、RAM記憶ユニット220、及びプロセッサをRAM記憶ユニット220にリンクする通信バスの最大データ転送速度を超えるだろう転送速度で起こってよい。
【0045】
同様に、RAM記憶ユニット220から記憶されたデータを取り出すとき、データ適応化モジュール211は、符号化されたデータを生データに復号し、次いで例えばプロセッサ202又はプロセッサ202上で実行中のアプリケーションプログラムによって他の使用にその生データを提供することによって、RAM記憶ユニット220から読み取られたデータを適応させる。
【0046】
データ適応化モジュール211は、データ符号化に費やしたリソース(例えば、プロセッサ202による処理時間)が、生データよりむしろ符号化されたデータのRAM記憶ユニット220への送信により保存されたリソース(例えば、通信バス107上での送信時間)よりも少なるように十分に高速でデータを適応させる。同様に、データ復号に費やした処理時間は、RAM記憶ユニット220からの生データよりむしろ、符号化されたデータの送信から生じる節約時間よりも少ない。
【0047】
本開示に係る実施形態は、生成中、プラットフォームをハイブリッドの計算及び記憶システムとすることができるデータ適応化モジュール211で特殊化されたシンOSを実行してよい。また、OSは、いくつかの仮想マシンがプラットフォーム上で同時に実行できるようにするために埋込みサーバ仮想化プラットフォームも提供する。これらの多くの例の内の1つは、すべてが、さもなければ従来の既知のバーチャル計算プラットフォームに固有だろうI/O遅延を一度も経験することなく、10台から15台以上のMicrosoft Windowsインスタンスを個別に且つ同時に実行する単一のシステムだろう。
【0048】
本開示に係る実施形態は、複雑なデータベースシステムに見られる極端に高性能のトランザクション処理を実行するときにも使用されてよい。係るアプリケーションは、純粋にRAM内のシステムデータベースの大きな部分又は全体を実行する可能性を可能にする。
【0049】
実施形態の予備的な試験及び/又はシミュレーションは、適切に構成されたシステムが48 GBもの少ないNVRAMで4 TBを超える極端に高速度のRAM記憶を達成できるだろうことを示す。
【0050】
本明細書に説明される生データを符号化するためのプロセス及び処理されたデータを復号して生データを作り出すプロセスは、データ適応化モジュール211の中でモジュールを呼び出すことによって実行されてよい。これらのモジュールは、オペレーティングシステム204、又はプロセッサ202で実行中の別のアプリケーションプログラムによって呼び出されてよい。
【0051】
生データの符号化の一実施形態は、本願の同一出願人による、及びその全体的な内容が参照することにより本明細書に組み込まれるIgnomirelloに対する米国特許出願公報第2014/0223118号(「第‘118号公報」)に説明される。
【0052】
他の実施形態は、第‘118号公報に説明される等、RAM記憶ユニット220の有効記憶容量がよりしなやかになることを可能にするビットマーカ方法を使用すること、並びに有効記憶容量及び密度が非常に迅速に増加することを可能にするによって生データを符号化してよい。記憶容量は、記憶できる生データの同等量が固定値ではなく、生データの特徴、例えば生データがどれほどよくビットマーカに一致するのかに応じて変化してよいという意味でしなやかであってよい。生データ容量は、オペレーティングシステム又は基本入出力システム(BIOS)等のより低レベルのソフトウェアによって制御されていない、又は事前に知られていない。実施形態は、非常に高い物理容量のRAMチップ、及び付随する非常に高密度のナノメータ特徴設計の必要性を削減し、このようにしてより低い密度の及び/又はより旧い世代のRAMチップのRAM記憶ユニット220に対する使用を可能にする。
【0053】
ビットマーカは、生データの特徴もしくは生データに由来する特徴から由来してよい、又は少なくとも部分的に生データの特徴もしくは生データに由来する特徴から基づいてよい。生データの特徴は、例えば、(例えば、音声ファイル、グラフィックファイル、ビデオファイル、ZIPファイル、Wordファイル、PDF等の)生データのタイプ、(例えば、グラフィックファイル、ビットマップ化、GIF、TI、JPEG等の)ファイルフォーマット、(例えば、それがクラシック音楽のMP3なのか、ジャズのMP3なのか、ラップのMP3なのか、ロックミュージックのMP3なのか、オーディオブック等の話された言葉等であるのかに関わりなく、MP3音声ファイル用の)ファイルのコンテンツ、(例えば、MP3音声ファイル、ビットレート、モノ又はステレオ、メタデータ、総長、使用されている符号化、ダイナミックレンジ、時間長等の)ファイルの属性、(例えば、サイズ、年齢、修正日、ファイル内部でのバイトの又はバイトのシーケンスの確率分布等の)ファイルの統計などであってよい。例えば、MP3ファイルは異なるタイプのファイル(例えば、JPGファイル)よりもより頻繁に特定の生データビット(つまり、バイトのシーケンス)を含んでよいため、ファイルがMP3ファイルであるという知識が選択されたビットマーカ、及び各ビットマーカが表す生データビットに影響を及ぼすことがある。データ適応化モジュール211は、経時的に又は処理された生データの量を超えて、例えば、生データの特徴がよりよく知られるようになる、又は統計的な意味で静止していない場合等、生データの特徴の変化に応えて生データを表すために使用されるビットマーカを適応的に変更してよい。
【0054】
ビットマーカは、生データのベクトル、つまり生データビットの所定のシーケンスを表してよい。また、生データのベクトルは、データセグメントと称してもよい。異なるビットマーカは、異なる長さのベクトルを表してよい。生データは生データのベクトルに分解されてよく、ベクトルは次いでビットマーカにマッピングされてよい。いくつかの実施形態では、連結ベクトルは生データを表してよい。他の実施形態では、ベクトルは、ベクトルの組合せ(例えば、ブールのAND、OR、XOR、NAND等)が生データを表し得るように重複してよい。生データは、複数の層(例えば、グラフィックファイルの場合、R、G、BもしくはC、Y、M、K等の色成分ごとの別々の層、又は他の論理層等)によって表されてよく、ビットマーカは、各色層内の生データビットを別々に表すために使用されてよい。いくつかの実施形態では、生データは多次元データ構造(例えば、2次元アレイ、3次元立方体、N次元構造等)として表されてよく、ベクトルは多次元データ構造の隣接部分(例えば、生データの2次元アレイの矩形部分)を表してよい。ビットマーカは、ベクトルポインタと生ベクトルデータ自体の間で変換する変換関数と見なされてよい。
【0055】
いくつかの実施形態では、ビットマーカ(例えば、生データに由来する特徴)の知識は、生データに一致するためのモデルベクトルを生成するのに十分であり得る。例えば、未処理ビットのセット(例えば、通信リンクから受け取られるファイル又は情報)がビデオストリーミング媒体を表すと仮定する。未処理ビットが特定の特徴(例えば、フレームレート、解像度、ピクセル次元、カラーパレット等)を有するビデオストリーミング媒体を表し、ビットマーカが、データがそれらの特徴のビットストリーミング媒体であることを示すために選択されてよいことが推量、推測、又はそれ以外の場合設定されてよい。ビットマーカがそれらの特徴のビデオストリーミング媒体を表す旨の知識は、例えばフレームレート、解像度、ピクセル次元、カラーパレット等のビデオストリーミング媒体の特徴に予測的に一致されたモデルベクトルを生成するために使用されてよい。係る実施形態の利点は、ビットマーカがいったん知られると、符号化は、例えばリアルタイムでストリーミング媒体を処理することによってオンザフライで達成できる点である。ファイル(例えば、MP3ファイル、DVDビデオディスク等)を処理する場合、処理はファイル全体で(例えば、セクション単位で)読み取る必要なく、相対的に程よいサイズのバッファだけを必要として達成され得る。符号化されたデータは、それが作り出されるにつれ、RAM記憶ユニット220に記憶されてよい。
【0056】
いくつかの実施形態では、オブジェクトは合成オブジェクト、つまり1つのファイルタイプのオブジェクトであってよく、しかも別のファイルタイプを含んでよい。例えば、eメールオブジェクトはその中に、添付PDF、添付ZIPファイル、添付Word文書、別のeメールオブジェクト等の埋込みオブジェクトを含んでよい。オブジェクトが合成オブジェクトである旨の知識は、埋込みタイプのオブジェクトにとって、及び合成オブジェクトの別々の部分にとって適切なベクトル及びビットマーカを選択するのに役立つために有用であり得る。
【0057】
いくつかの実施形態では、生データは、生データを分析して、分割の前に多様なセクション間で有用な境界を決定することによって1次元構造から多次元構造に変換されてよい。分割後の多様なセクションが多次元構造を形成する。いくつかの実施形態では、例えば、分析は、分析が迅速に実行できることを保証するのを支援するよう、使用可能なプロセッサキャッシュサイズを考慮に入れてよい。
【0058】
いくつかの実施形態では、ビットマーカは、例えば任意に多数の生データビットに中核部を拡大するために、どのようにしてシードから追加のデータを作り出すのかの複製規則とともに、中核部(つまり、シード生データビット、開始値、開始パターン等の相対的に小さい集合)を表してよい。追加データを作り出すための規則は、例えば、複製所定の回数又は所定の長さまでの複製、フラクタルベースの複製、実行長複製等を含んでよい。例えば、2次元多次元生データ構造の部分がフラクタルパターンで表すことができる場合、係る表現は、生データビットの、特定のサイズでレンダリングされたフラクタルパターンへのフラクタルベースのマッピングのために役立つことがある。実施形態によって使用されるように、データ符号化及びデータ復号のためのフラクタルパターンは、他の次元性、例えば1次元(線形パターン)、3次元等での生データに対して存在してよい。
【0059】
いくつかの実施形態では、ビットマーカは、DNAサブマーカを結合するための規則とともに1つ又は複数のDNAサブマーカを表してよい。例えば、ビットマーカは、V
3及びV
1のXOR積と連結されたベクトルV
4を表してよい。結果として生じるビットマーカは、次いで、他のサブマーカと結合して別のマーカを形成するためのサブマーカの機能を果たしてよい。
【0060】
当初、ベクトル及びベクトルの対応するビットマーカはベクトルフィールドに記憶されてよい。ベクトルフィールドは、通常、RAM記憶ユニット220から離れた別個のメモリに記憶される。例えば、RAM記憶ユニット220がDIMMソケット108bに結合される場合、次いでベクトルフィールドは、DIMMソケット108aに結合された従来のDIMMメモリに、又はキャッシュメモリ103等に記憶されてよい。生データビットのグループは、データ適応化モジュール211に送信され、次いでベクトルフィールドのベクトルに生データビット又は生データビットの部分をマッピングする又は相互に関連付けされてよい。対応するビットマーカは、次いでベクトルフィールドから取り出され、同等な生データビットの代わりにRAM記憶ユニット220に記憶されてよい。ビットマーカは再利用つまり「増幅」されてよく、これにより生データが生データビットの複数のインスタンスを含む場合、対応するビットマーカは、それが生データバイトの複数のインスタンスのために使用される旨の表示とともにRAM記憶ユニット220に記憶されてよい。増幅は、(例えば、ビットもしくはバイトの数で測定されるような)ビットマーカのサイズとビットマーカの使用のインスタンスによって置換された同等な生データビット(又はバイト)のサイズの比率を指す。
【0061】
いくつかの実施形態で、RAM記憶ユニット220は論理的に分割されてよく、これによりRAM記憶ユニット220の一部分(例えば、物理的にアドレス指定可能な1つの部分)はビットマーカを記憶してよく、一方、RAM記憶ユニット220の別の部分は従来のメモリとして動作してよい。いくつかの実施形態では、DIMMスロットの内の1つ(例えば、DIMMスロット108b)に結合されたRAM記憶ユニット220はビットマーカを記憶するために動作してよく、別のDIMMスロット(例えば、DIMMスロット108a)に結合されたRAMモジュールは従来のメモリとして動作してよい。
【0062】
本開示に係る他の実施形態は、データ投入中に長い形式のデータを短い形式のビットマーカに符号化し、要求時に短い形式のビットマーカを長い形式のデータにオンザフライで復号するビットジェネレータを含む。
【0063】
いくつかの実施形態では、1つ又は複数のパターンが生データのセットで識別されてよい。生データが「0」及び「1」の線形列として表されるときには、パターンは、例えば、未処理ビットの周期性であってよい。また、パターンは、生データがバイトの線形列として表されるときは生データの周期性、又は生データが生データの多次元セットとして表されるときは多次元周期性の形であってもよい。周期性は、生データの所定のパターンの頻度として表されてよい。周期性の特徴は、周波数と位相を含んでよい。多次元データは、各次元とは関係なく特徴付けられてよい。期間(又は逆に周波数)は、例えば、毎サイクル256ビット、毎サイクル65,536ビット等、所定のパターンの反復するサイクルごとの未処理ビットとして表されてよい。位相は、所定のパターンの基準コピー(例えば、ディクショナリコピー)に関してパターンの開始点を示してよい。実施形態は、識別する特徴(例えば、ビットマーカ、指紋等)として周波数及び位相の特徴を使用してよい。
【0064】
いくつかの実施形態では、1次元の生データでの周期性は多次元生データとしてモデル化又は分析されてよい。例えば、心電図を表すデータトレースは、心拍速度で表される固有の周期性を含む。周波数(例えば、毎分拍動)は経時的に変化し、心電図の正確な形状はある拍動から別の拍動で変化することがあるため、周期性は完全ではない。それにも関わらず、心電図トレースは、1拍動(例えば、第1の拍動、つまり基準拍動、又は理想的な拍動等)の心電図が電圧対時間の1つの平面(つまり、2軸)を表し、3次元が拍動順序数を表す、多次元構造としてモデル化されてよい。データは、上述された周波数等の要因の変化を考えてから、3次元の差異を分析することによって部分的に符号化されてよい。
【0065】
いくつかの実施形態では、パターンは1つ又は複数の基底関数又は基底ベクトルの線形結合を表してよい。数学では、基底関数は、関数空間のための特定の基底の要素である。関数空間内のあらゆる連続関数は、基底関数の線形結合として表すことができる。同様に、ベクトル空間内のあらゆるベクトルは、基底ベクトルの線形結合として表すことができる。基底ベクトルはベクトル空間内の線形独立ベクトルの集合として知られ、ベクトル空間内のあらゆる他のベクトルはこれらのベクトルに線形従属である。
【0066】
例えば、生データは基底ベクトルの結合に分解されてよい。各基底ベクトルは、測定可能なバイナリパターンである。好ましくは、基底ベクトルは、基底ベクトルを参照するために使用されるビットマーカ(つまり、ベクトルマップでの基底ベクトルに対するポインタ)に比較して非常に長くなくてはならないが、基底ベクトルは生データ全体よりも短くてよい。基底ベクトルとしての生データの表現は、(a)基底ベクトルのビットマーカ、及び(b)基底ベクトルの生データの開始位置の1つ又は複数のデータ対を含んでよい。遺伝子プールがベクトルから生データを再構築する方法に関する情報を含んでよいという点で、遺伝子プールはベクトルマップに関係している。例えば、遺伝子プールは再構築されるファイルのタイプ(例えば、MP3ファイル)を示してよく、それを知っていることはファイルを再構築する際に有用となるだろう。ジグソーパズルに類推すると、ベクトルはジグソーパズルの個々のピースを表してよく、遺伝子プールは、ジグソーパズル全体が完了時に見えるはずである写真を表してよい。
【0067】
いくつかの実施形態では、基底ベクトルによって表されていない生データは、例えば0x00又は0xFFバイト等の所定値であると見なされてよい。これは、生データが例えば、多数の連続0x00バイト等、所定の値の多数の連続ビット又はバイトを有する場合、有用であり得る。
【0068】
いくつかの実施形態では、生データは、少なくとも部分的に重複してよい基底ベクトルに分解されてよい。重複する基底ベクトルはブールORとしてデフォルトによって結合されてよいが、他のブール関数も使用されてよい(例えば、AND、XOR、NAND等)。
【0069】
いくつかの実施形態では、ベクトルディクショナリは、生データの統計での変化に適応し得る。例えば、記憶されている情報のタイプが(例えば、ビデオからMP3に)変化する場合、生データの統計も変化し得る。係る変化は、特定の基底ベクトルがそれほど頻繁に使用されず、他の基底ベクトルがより頻繁に使用されてよいことを意味し得る。実施形態は、使用の変化を認識し、基底ディクショナリを、例えばいくつかの基底ベクトルを間引きし、他の基底ベクトルを追加することによって等、適切に更新してよい。デコーダは、例えばディクショナリ更新の包含によって、ベクトルディクショナリの変化を認識する。
【0070】
いくつかの実施形態では、ベクトルディクショナリのエントリは、異なっているが、固定された長さを有してよい。長さは、生データの統計に依存してよい。例えば、ビットマーカは異なる長さを有してよく、これにより生データでより一般的に発生するベクトルに対応するビットマーカは、生データでのそれほど一般的に発生しないベクトルに対応するビットマーカよりも短くてよい(つまり、ビットマーカはより少ないビットを含む)。代わりに、ビットマーカは等しい長さを有してよいが、いくつかのビットマーカは、生データのより短いが、より一般的には発生しないベクトルを表す他のビットマーカよりも、生データのより長いが、より一般的に発生するベクトルに対応してよい。
【0071】
いくつかの実施形態では、ビットマーカは、本質的に階層的であってよい木及び葉の枠組みで表されてよい。この枠組みでは、各ビットマーカは葉によって表され、木の中の葉のサイズ及び/又は位置が、それが表すビットマーカの特徴に対応する。例えば、より一般的に発生するビットマーカはより小さい葉又は木の根により近い葉として表されてよい。逆に、そえほど一般的に発生しないビットマーカは、より大きな葉又は木の根からより遠い葉として表されてよい。目標は、可能な限り小さい葉を使用すること、又は可能な限り根に近い葉を使用すること、又は葉のサイズと葉が使用される回数の積等の数学関数を最小限に抑える傾向がある葉を使用することであってよい。
【0072】
データを復号することは、RAM記憶ユニット220から符号化されたデータを読み取り、次いで符号化プロセスを反転するための関数を実行することを伴う。復号関数は、データ適応化モジュール211内のモジュールによって提供されてよい。例えば、データを復元するために、符号化されたデータのブロックはRAM記憶ユニット220から読み取られてよい。符号化されたデータのブロックは、復号プロセスが実行される間、高速メモリに一時的に記憶されてよい。復号プロセスは、データ適応化モジュール211内のモジュールによって提供される。これらのモジュールは、オペレーティングシステム204によって呼び出されてよい。
【0073】
より詳細には、RAM記憶ユニット220からデータを取り出し、それを復号するとき、データ適応化モジュール211は、復号されたデータに生データを復号することによってRAM記憶ユニット220に記憶されるようにデータを適応させる。従来のRAMメモリ(例えば、DIMMスロット108aに結合されたメモリ)及び/又はキャッシュメモリ103は、データ適応化モジュール211の復号関数をサポートするために使用されてよい。
【0074】
図3Aは、本開示の実施形態に係る符号化プロセス300を示す。プロセス300は、オペレーティングシステム204及びデータ適応化モジュール211によって実行されてよい。
【0075】
プロセス300はステップ301で開始し、ステップ301で、記憶される生データのブロックが、生データを記憶することを意図するアプリケーションプログラムから受け取られる。生データは、ファイル、ストリーミング媒体、固定サイズ又は可変サイズのデータのブロック等の形をとってよい。
【0076】
次に、プロセス300はステップ303に遷移し、ステップ303で、ステップ301で受け取られた生データの部分は、生データの候補ベクトルにマッピング又は一致されてよい。候補ベクトルは、従来のメモリで(マーカ、ベクトル)対のテーブルとして記憶されてよい。目標は、少なくとも1つのベクトルによって生データの各ビット又はバイトを表すことである。0x00又は0xFF等の特定の生データバイトは、デフォルト値であると見なされてよく、デフォルト値に等しい任意の生データバイトの場合、ベクトルでデフォルトバイトを表すことは任意選択である。
【0077】
次に、プロセス300はステップ305に遷移し、ステップ305で、ステップ303で決定されたベクトルが、(マーカ、ベクトル)対のテーブルからそれぞれのビットマーカにマッピングされてよい。ビットマーカは、関連付けられたベクトルを参照する近道である。
【0078】
次に、プロセス300はステップ307に遷移し、ステップ307で、(マーカ、ベクトル)対のテーブルからのビットマーカは、RAM記憶ユニット220等のメモリに記憶される。
【0079】
図3Bは、本開示の実施形態に係る復号プロセス350を示す。プロセス350は、オペレーティングシステム204及びデータ適応化モジュール211によって実行され得る。
【0080】
プロセス350はステップ351で開始し、ステップ351で、復号される符号化データのブロックが、RAM記憶ユニット220等のメモリから読み取られる。アドレスは、当業者に既知であるように、仮想アドレス調整方法及びテーブルによって管理されてよい。
【0081】
次に、プロセス350はステップ353に遷移し、ステップ353で、ビットマーカが、符号化データから抽出される。
【0082】
次に、プロセス350はステップ355に遷移し、ステップ355で、ステップ353からの抽出されたビットマーカが(マーカ、ベクトル)対のテーブルで検索される。
【0083】
次に、プロセス350はステップ357に遷移し、ステップ357で、生データベクトルが、ステップ353からの抽出されたビットマーカに対応する(マーカ、ベクトル)対のテーブルのエントリから抽出される。
【0084】
次に、プロセス350はステップ359に遷移し、ステップ359で、ステップ357からの抽出された生データが結合されて、再構築された復号データを形成する。結合された生データベクトルが再構築された復号データの予想されるアドレス範囲全体の中のすべてのアドレスをカバーしない場合、カバーされていないアドレスは、例えば0x00バイト又は0xFFバイト等の復号されたデータの中のデフォルト値を取ると見なされてよい。
【0085】
I/O機能を分析するとき、従来のシステムは、毎秒57.6 GBまでの連続I/O速度を可能にし得る。対照的に、本開示の実施形態に係るシステム、つまりIntel Ivy Bridge 2697 v2プロセッサで試験されたシステムの場合、実施形態は、すべて7.6GHzのブースト機能を備えて5.4GHzで、24の物理プロセスコア及び最高40のハイパースレッドコア、6144KBのL2プロセッサキャッシュ、60MBのL3プロセッサキャッシュを有してよい。任意の他のIvy Bridge 2697 v2サーバに対して実施形態の性能を比較すると、76.8倍高速のI/O増加を示す。同等の性能利得は、Haswellマザーボードアーキテクチャ及びDDR4メモリを含んだ他のコンピューティング環境で達成可能である。
【0086】
前記は本発明の実施形態を対象といているが、本開示の他の実施形態及び追加の実施形態は、本発明の基本的な範囲を逸脱することなく考案されてよい。本明細書に説明される多様な実施形態は、本明細書に含まれる範囲を逸脱することなく説明される任意の他の実施形態と組み合わせて活用されてよいことが理解される。さらに、上記説明は、包括的になること、又は開示されている正確な形式に本発明を制限することを目的としていない。修正形態及び変形は上記教示を鑑みて可能である、又は本発明の実践から取得されてよい。特定の例示的な実施形態は、リスト項目が実施形態を表していること、及びリストが追加の実施形態を除外する閉鎖されたリストを表すことを目的としていないことを示すための言い回しを含むオープンエンドリストの使用によって特定されてよい。係る言い回しは「例えば」、「等」、「等」、「例えば」、「等」、「等」等、及び周囲の文脈から明らかとなる他の言い回しを含んでよい。
【0087】
本願の明細書で使用される要素、行為、又は命令は、そのように明示的に説明されていない限り本発明に対して重大又は必須として解釈されるべきではない。また、本明細書に使用されるように、冠詞「ある」は、1つ又は複数の品目を含むことを目的とする。ただ1つの品目が意図される場合、用語「1つ」又は類似した言葉が使用される。さらに、本明細書で使用されるように、複数の品目及び/又は複数のカテゴリの品目のリストが後に続く用語「のいずれか」は、個別に、又は他の品目及び/又は他のカテゴリの品目と併せて、品目及び/又はカテゴリの品目「のいずれか」、「のいずれかの組合せ」、「のいずれかの複数」、及び/又は「の複数のいずれかの組合せ」を含むことを目的とする。
【0088】
さらに、特許請求の範囲は、その旨が記載されない限り、説明された順序又は要素に制限されるとして読まれるべきではない。さらに、いずれの請求項においての用語「手段」の使用も、特許法第112条、第6項を行使することを意図され、単語「手段」のないいかなる請求項もそのように意図されていない。