(57)【要約】  マルチユーザの省電力コードブックの最適化を実現するためのシステムおよび方法が開示される。1つのそのような方法は、複数のコンピューティングデバイスのための一意のコードブックを生成することであって、各一意のコードブックが対応するコンピューティングデバイス内のメモリデータを符号化するために構成される、生成することと、通信ネットワークを介して対応するコンピューティングデバイスに一意のコードブックを供給することと、通信ネットワークを介してコンピューティングデバイスのうちの1つまたは複数から圧縮統計データを受信することであって、圧縮統計データが対応する一意のコードブックに関係する、受信することと、受信された圧縮統計データに基づいてコンピューティングデバイスのうちの少なくとも1つのための最適化されたコードブックを生成することとを含む。
2017502539.tif 000002
【特許請求の範囲】
【請求項１】
省電力コードブックの最適化を実現するための方法であって、
複数のコンピューティングデバイスのための一意のコードブックを生成するステップであって、各一意のコードブックが前記対応するコンピューティングデバイス内のメモリデータを符号化するために構成される、ステップと、
通信ネットワークを介して前記対応するコンピューティングデバイスに前記一意のコードブックを供給するステップと、
前記通信ネットワークを介して前記コンピューティングデバイスのうちの1つまたは複数から圧縮統計データを受信するステップであって、前記圧縮統計データが前記対応する一意のコードブックに関係する、ステップと、
前記受信された圧縮統計データに基づいて前記コンピューティングデバイスのうちの少なくとも1つのための最適化されたコードブックを生成するステップと
を含む、方法。
【請求項２】
前記通信ネットワークを介して前記コンピューティングデバイスのうちの1つまたは複数に前記最適化されたコードブックを供給するステップをさらに含む、請求項1に記載の方法。
【請求項３】
前記一意のコードブックを生成する前記ステップが、
前記コンピューティングデバイスの仮想メモリイメージを構築するステップと、
前記仮想メモリイメージに関連付けられた複数の頻度の高いソースシンボルを特定するステップと、
各ソースシンボルに対応するコードワードを割り当てるステップと
を含む、請求項1に記載の方法。
【請求項４】
前記仮想メモリイメージを構築する前記ステップが、前記コンピューティングデバイスから情報を受信し、前記情報を相互参照してデータベース内の1つまたは複数のソフトウェア構成要素を識別するステップを含み、前記方法が、サーバ上で動作する仮想デバイス上に前記仮想メモリイメージをロードし、実行するステップをさらに含む、請求項3に記載の方法。
【請求項５】
前記一意のコードブックが、エントロピー符号化アルゴリズムに従って前記メモリデータを符号化するように構成された、請求項1に記載の方法。
【請求項６】
前記エントロピー符号化アルゴリズムが、複数のプログラマブル係数を含む簡略化されたハフマン方式を含む、請求項5に記載の方法。
【請求項７】
前記圧縮統計データが、前記対応するコンピューティングデバイス内のエンコーダによって生成されたCビットデータを含む、請求項1に記載の方法。
【請求項８】
前記通信ネットワークを介して前記コンピューティングデバイスのうちの1つまたは複数から、前記対応するコンピューティングデバイスまたはユーザに関連付けられたデバイスメトリックを受信するステップ
をさらに含み、
前記最適化されたコードブックを生成する前記ステップが、前記受信された圧縮統計データおよび前記受信されたデバイスメトリックのうちの1つまたは複数に基づく、
請求項1に記載の方法。
【請求項９】
前記デバイスメトリックが、ハードウェアバージョン、ソフトウェアバージョン、オペレーティングシステムバージョン、プロセスタイムスタンプ、プロセス平均実行時間、およびCPU稼働率データのうちの1つまたは複数を含む、請求項8に記載の方法。
【請求項１０】
前記コンピューティングデバイスがポータブル通信デバイスを含む、請求項1に記載の方法。
【請求項１１】
マルチユーザの省電力コードブックの最適化を実現するためのシステムであって、
複数のコンピューティングデバイスのための一意のコードブックを生成するための手段であって、各一意のコードブックが対応するコンピューティングデバイス内のメモリデータを符号化するために構成される、手段と、
通信ネットワークを介して前記対応するコンピューティングデバイスに前記一意のコードブックを供給するための手段と、
前記通信ネットワークを介して前記コンピューティングデバイスのうちの1つまたは複数から圧縮統計データを受信するための手段であって、前記圧縮統計データが前記対応する一意のコードブックに関係する、手段と、
前記受信された圧縮統計データに基づいて前記コンピューティングデバイスのうちの少なくとも1つのための最適化されたコードブックを生成するための手段と
を備える、システム。
【請求項１２】
前記通信ネットワークを介して前記コンピューティングデバイスのうちの1つまたは複数に前記最適化されたコードブックを供給するための手段をさらに備える、請求項11に記載のシステム。
【請求項１３】
前記一意のコードブックを生成するための前記手段が、
前記コンピューティングデバイスの仮想メモリイメージを構築するための手段と、
前記仮想メモリイメージに関連付けられた複数の頻度の高いソースシンボルを特定するための手段と、
各ソースシンボルに対応するコードワードを割り当てるための手段と
を備える、請求項11に記載のシステム。
【請求項１４】
前記仮想メモリイメージを構築するための前記手段が、前記コンピューティングデバイスから情報を受信し、前記情報を相互参照してデータベース内の1つまたは複数のソフトウェア構成要素を識別するための手段を備え、前記システムが、サーバ上で動作する仮想デバイス上に前記仮想メモリイメージをロードし、実行するための手段をさらに備える、請求項13に記載のシステム。
【請求項１５】
前記一意のコードブックが、エントロピー符号化アルゴリズムに従って前記メモリデータを符号化するように構成された、請求項11に記載のシステム。
【請求項１６】
前記エントロピー符号化アルゴリズムが、複数のプログラマブル係数を含む簡略化されたハフマン方式を含む、請求項15に記載のシステム。
【請求項１７】
前記圧縮統計データが、前記対応するコンピューティングデバイス内のエンコーダによって生成されたCビットデータを含む、請求項11に記載のシステム。
【請求項１８】
前記通信ネットワークを介して前記コンピューティングデバイスのうちの1つまたは複数から、前記対応するコンピューティングデバイスまたはユーザに関連付けられたデバイスメトリックを受信するための手段
をさらに備え、
前記最適化されたコードブックが、前記受信された圧縮統計データおよび前記受信されたデバイスメトリックのうちの1つまたは複数に基づいて生成される、
請求項11に記載のシステム。
【請求項１９】
前記デバイスメトリックが、ハードウェアバージョン、ソフトウェアバージョン、オペレーティングシステムバージョン、プロセスタイムスタンプ、プロセス平均実行時間、およびCPU稼働率データのうちの1つまたは複数を含む、請求項18に記載のシステム。
【請求項２０】
前記コンピューティングデバイスがポータブル通信デバイスを含む、請求項11に記載のシステム。
【請求項２１】
マルチユーザの省電力コードブックの最適化を実現するための、コンピュータ可読媒体内で具現化され、プロセッサによって実行可能なコンピュータプログラムであって、
複数のコンピューティングデバイスのための一意のコードブックを生成することであって、各一意のコードブックが対応するコンピューティングデバイス内のメモリデータを符号化するために構成される、生成することと、
通信ネットワークを介して前記対応するコンピューティングデバイスに前記一意のコードブックを供給することと、
前記通信ネットワークを介して前記コンピューティングデバイスのうちの1つまたは複数から圧縮統計データを受信することであって、前記圧縮統計データが前記対応する一意のコードブックに関係する、受信することと、
前記受信された圧縮統計データに基づいて前記コンピューティングデバイスのうちの少なくとも1つのための最適化されたコードブックを生成することと
を行うように構成された論理を含む、コンピュータプログラム。
【請求項２２】
前記通信ネットワークを介して前記コンピューティングデバイスのうちの1つまたは複数に前記最適化されたコードブックを供給するように構成された論理をさらに含む、請求項21に記載のコンピュータプログラム。
【請求項２３】
前記一意のコードブックを生成するように構成された前記論理が、
前記コンピューティングデバイスの仮想メモリイメージを構築することと、
前記仮想メモリイメージに関連付けられた複数の頻度の高いソースシンボルを特定することと、
各ソースシンボルに対応するコードワードを割り当てることと
を行うように構成された論理をさらに含む、請求項21に記載のコンピュータプログラム。
【請求項２４】
前記仮想メモリイメージを構築するように構成された前記論理が、前記コンピューティングデバイスから情報を受信し、前記情報を相互参照してデータベース内の1つまたは複数のソフトウェア構成要素を識別するように構成された論理を含み、前記コンピュータプログラムが、サーバ上で動作する仮想デバイス上に前記仮想メモリイメージをロードし、実行するように構成された論理をさらに含む、請求項23に記載のコンピュータプログラム。
【請求項２５】
前記一意のコードブックが、エントロピー符号化アルゴリズムに従って前記メモリデータを符号化するように構成された、請求項21に記載のコンピュータプログラム。
【請求項２６】
前記エントロピー符号化アルゴリズムが、複数のプログラマブル係数を含む簡略化されたハフマン方式を含む、請求項25に記載のコンピュータプログラム。
【請求項２７】
前記圧縮統計データが、前記対応するコンピューティングデバイス内のエンコーダによって生成されたCビットデータを含む、請求項21に記載のコンピュータプログラム。
【請求項２８】
前記通信ネットワークを介して前記コンピューティングデバイスのうちの1つまたは複数から、前記対応するコンピューティングデバイスまたはユーザに関連付けられたデバイスメトリックを受信すること
を行うように構成された論理をさらに含み、
前記最適化されたコードブックが、前記受信された圧縮統計データおよび前記受信されたデバイスメトリックのうちの1つまたは複数に基づいて生成される、
請求項21に記載のコンピュータプログラム。
【請求項２９】
前記デバイスメトリックが、ハードウェアバージョン、ソフトウェアバージョン、オペレーティングシステムバージョン、プロセスタイムスタンプ、プロセス平均実行時間、およびCPU稼働率データのうちの1つまたは複数を含む、請求項28に記載のコンピュータプログラム。
【請求項３０】
前記コンピューティングデバイスがポータブル通信デバイスを含む、請求項21に記載のコンピュータプログラム。
【請求項３１】
通信ネットワークを介して複数のコンピューティングデバイスと通信しているサーバを備えるコンピュータシステムであって、前記サーバが、前記コンピューティングデバイスによって実行されるメモリデータの符号化を最適化するように構成されたエンコーダ最適化モジュールを備え、前記エンコーダ最適化モジュールが、
前記複数のコンピューティングデバイスの各々のための一意のコードブックを生成するように構成された論理であって、前記一意のコードブックが対応するコンピューティングデバイス内のメモリデータを符号化するために使用される、論理と、
前記通信ネットワークを介して前記コンピューティングデバイスに前記一意のコードブックを供給するように構成された論理と、
前記通信ネットワークを介して前記コンピューティングデバイスのうちの1つまたは複数から圧縮統計データを受信するように構成された論理であって、前記圧縮統計データが前記対応する一意のコードブックに関係する、論理と、
前記受信された圧縮統計データに基づいて前記コンピューティングデバイスのうちの少なくとも1つのための最適化されたコードブックを生成するように構成された論理と
を含む、コンピュータシステム。
【請求項３２】
前記エンコーダ最適化モジュールが、前記通信ネットワークを介して前記コンピューティングデバイスのうちの1つまたは複数に前記最適化されたコードブックを供給するように構成された論理をさらに含む、請求項31に記載のコンピュータシステム。
【請求項３３】
前記一意のコードブックを生成するように構成された前記論理が、
前記コンピューティングデバイスの仮想メモリイメージを構築するように構成された論理と、
前記仮想メモリイメージに関連付けられた複数の頻度の高いソースシンボルを特定するように構成された論理と、
各ソースシンボルに対応するコードワードを割り当てるように構成された論理と
を含む、請求項31に記載のコンピュータシステム。
【請求項３４】
前記仮想メモリイメージを構築するように構成された前記論理が、前記コンピューティングデバイスから情報を受信し、前記情報を相互参照してデータベース内の1つまたは複数のソフトウェア構成要素を識別するように構成された論理を含み、前記エンコーダ最適化モジュールが、サーバ上で動作する仮想デバイス上に前記仮想メモリイメージをロードし、実行するように構成された論理をさらに含む、請求項33に記載のコンピュータシステム。
【請求項３５】
前記一意のコードブックが、エントロピー符号化アルゴリズムに従って前記メモリデータを符号化するように構成された、請求項31に記載のコンピュータシステム。
【請求項３６】
前記エントロピー符号化アルゴリズムが、複数のプログラマブル係数を含む簡略化されたハフマン方式を含む、請求項35に記載のコンピュータシステム。
【請求項３７】
前記圧縮統計データが、前記対応するコンピューティングデバイス内のエンコーダによって生成されたCビットデータを含む、請求項31に記載のコンピュータシステム。
【請求項３８】
前記エンコーダ最適化モジュールが、
前記通信ネットワークを介して前記コンピューティングデバイスのうちの1つまたは複数から、前記対応するコンピューティングデバイスに関連付けられたデバイスメトリックを受信するように構成された論理
をさらに含み、
前記最適化されたコードブックが、前記受信された圧縮統計データおよび前記受信されたデバイスメトリックのうちの1つまたは複数に基づいて生成される、
請求項31に記載のコンピュータシステム。
【請求項３９】
前記デバイスメトリックが、ハードウェアバージョン、ソフトウェアバージョン、オペレーティングシステムバージョン、プロセスタイムスタンプ、プロセス平均実行時間、およびCPU稼働率データのうちの1つまたは複数を含む、請求項38に記載のコンピュータシステム。
【請求項４０】
前記コンピューティングデバイスがポータブル通信デバイスを含む、請求項31に記載のコンピュータシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願の陳述
本出願は、2013年10月24日に出願された、「SYSTEM AND METHOD FOR CONSERVING POWER CONSUMPTION IN A MEMORY SYSTEM」と題する、同時係属米国特許出願第14/062,859号(Qualcomm参照番号133990U1)に関する。
【背景技術】
【０００２】
ダイナミックランダムアクセスメモリ(DRAM)は、様々なコンピューティングデバイス(たとえば、パーソナルコンピュータ、ラップトップ、ノートブック、ビデオゲームコンソール、ポータブルコンピューティングデバイス、モバイルフォンなど)において使用されている。DRAMは、データの各ビットを集積回路内の個別のコンデンサに記憶するタイプの揮発性メモリである。コンデンサは充電または放電のいずれかを行うことができる。これらの2つの状態は、慣例的に0および1と呼ばれるビットの2つの値を表すように解釈される。コンデンサは電荷を漏電するので、コンデンサの電荷が周期的にリフレッシュされない限り、情報は最終的に減衰する。このリフレッシュ要件のために、DRAMは、SRAMおよび他のスタティックメモリとは対照的にダイナミックメモリと呼ばれる。
【０００３】
DRAMの利点は、その構造の単純さ（ビット当たり1つのトランジスタとコンデンサのみが必要とされる）であり、それにより、DRAMが非常に高い密度に達することが可能になる。しかしながら、DRAMの密度および速度の要件が増大し続けるにつれて、メモリの電力消費が重要な問題になっている。
【０００４】
DRAM内の電力は、一般に、コアメモリアレイの電力および非コアの電力として分類される。コアメモリアレイの電力は、ビットセル/アレイ内のすべてのデータを保持し、漏電およびリフレッシュ動作を管理するための電力を指す。非コアの電力は、すべてのデータをメモリデバイスに、およびメモリデバイスから転送し、アンペアを検知し、かつ周辺論理、マルチプレクサ、内部バス、バッファ、入力/出力(I/O)ドライバ、および受信機を管理するための電力を指す。非コアの電力を削減することが重要な問題である。
【０００５】
非コアの電力を削減する既存の解決策は、通常、性能が要求されないときはいつでも動作電圧を下げること、負荷キャパシタンスを削減すること、または動作周波数を一時的に低減することに関与している。しかしながら、これらの解決策は、必要な帯域幅の集約的な使用ケースに対処することができない。他の解決策は、メモリシステムに関連するデータ活動係数を低減するように試みてきた。データ活動係数kは、固定期間にわたるメモリアクセスシステムにおける、0から1へのトグルまたは遷移の数を指す。たとえば、単線にわたる以下の8個のビートシーケンス0、1、0、1、0、1、0、1では、k=0.5である。データ活動係数を低減することへの試みは、画像圧縮を使用する表示フレームバッファなどの特定のタイプのデータに対して提案されている。これは、通常、ソース(すなわち、表示ハードウェアエンジン)において実行される。しかしながら、そのような解決策は、通常、全DRAM使用量の比較的ごく一部しか占めないこのタイプの表示データに、かなり専門化され限定される。したがって、当技術分野では、DRAMメモリシステムにおいて電力消費を節約するための改善されたシステムおよび方法が依然として必要とされている。
【発明の概要】
【課題を解決するための手段】
【０００６】
マルチユーザの省電力コードブックの最適化を実現するためのシステムおよび方法が開示される。1つのそのような方法は、複数のコンピューティングデバイスのための一意のコードブックを生成することであって、各一意のコードブックが対応するコンピューティングデバイス内のメモリデータを符号化するために構成される、生成することと、通信ネットワークを介して対応するコンピューティングデバイスに一意のコードブックを供給することと、通信ネットワークを介してコンピューティングデバイスのうちの1つまたは複数から圧縮統計データを受信することであって、圧縮統計データが対応する一意のコードブックに関係する、受信することと、受信された圧縮統計データに基づいてコンピューティングデバイスのうちの少なくとも1つのための最適化されたコードブックを生成することとを含む。
【０００７】
別の実施形態は、通信ネットワークを介して複数のコンピューティングデバイスと通信しているサーバを備えるコンピュータシステムである。サーバは、コンピューティングデバイスによって実行されるメモリデータの符号化を最適化するように構成された、エンコーダ最適化モジュールを備える。エンコーダ最適化モジュールは、複数のコンピューティングデバイスの各々のための一意のコードブックを生成するように構成された論理であって、一意のコードブックが対応するコンピューティングデバイス内のメモリデータを符号化するために使用される、論理と、通信ネットワークを介してコンピューティングデバイスに一意のコードブックを供給するように構成された論理と、通信ネットワークを介してコンピューティングデバイスのうちの1つまたは複数から圧縮統計データを受信するように構成された論理であって、圧縮統計データが対応する一意のコードブックに関係する、論理と、受信された圧縮統計データに基づいてコンピューティングデバイスのうちの少なくとも1つのための最適化されたコードブックを生成するように構成された論理とを備える。
【０００８】
図において、別段の指示がない限り、同様の参照番号は、様々な図の全体を通して同様の部分を指す。「102A」または「102B」などの文字指定を伴う参照番号の場合、文字指定は、同じ図に存在する2つの同様の部分または要素を区別することができる。参照番号がすべての図において同じ参照番号を有するすべての部分を包含することが意図されるとき、参照番号の文字指定は省略される場合がある。
【図面の簡単な説明】
【０００９】
【図１】SoCに結合されたDRAMメモリシステムにおいて電力消費を節約するためのシステムの一実施形態のブロック図である。
【図２】図1のSoCとDRAMメモリシステムを結合するデータバスの例示的な実施形態を示す図である。
【図３】DRAMメモリシステムによって規定された例示的な最小アクセス長(MAL)トランザクションについて、図1のエンコーダへの非圧縮データ入力、および図1のエンコーダからの圧縮データ出力を示すデータ図である。
【図４】電力消費を節約するために図1のシステムにおいて実施される方法の一実施形態を示すフローチャートである。
【図５】図1のシステムのデータ活動係数を低減するための圧縮アルゴリズムの一実施形態を実装するための簡略化されたハフマンツリーを示す図である。
【図６】図1のDRAMメモリシステム用の例示的なMALトランザクションについての第1の圧縮使用事例を示す図である。
【図７】図1のDRAMメモリシステム用の例示的なMALトランザクションについての第2の圧縮使用事例を示す図である。
【図８】図1のSoC内のエンコーダの一実施形態を示すブロック図である。
【図９】図1のDRAMメモリシステム内のデコーダの一実施形態を示すブロック図である。
【図１０】図8のエンコーダにおける3ビットサイズの出力用の例示的な値を示す表である。
【図１１】図1のシステム用の圧縮統計データを追跡するための表の一実施形態を示す図である。
【図１２】図1のシステムを備えるポータブルコンピューティングデバイスの一実施形態のブロック図である。
【図１３】複数のユーザのエンコーダの圧縮性能を最適化するためのシステムの一実施形態のブロック図である。
【図１４】図13のシステム内のエンコーダ最適化モジュールによって生成されるサーバデータベースの一実施形態を示すデータ図である。
【図１５】コンピューティングデバイスのメモリイメージに関連付けられた例示的なコードブックの一実施形態を示す図である。
【図１６】図13のシステム内のサーバエンコーダ最適化モジュールの一実施形態のアーキテクチャ、動作、および/または機能を示すフローチャートである。
【図１７】図13のシステム内の1人または複数のユーザのための最適化されたコードブックを生成するために使用される様々な例示的なデバイスメトリックを示す表である。
【発明を実施するための形態】
【００１０】
「例示的」という言葉は、本明細書では、「一例、事例、または例示として役立つ」ことを意味するように使用される。「例示的」として本明細書に記載されるいずれの態様も、必ずしも他の態様よりも好ましいか、または有利であると解釈されるとは限らない。
【００１１】
本明細書では、「アプリケーション」という用語は、オブジェクトコード、スクリプト、バイトコード、マークアップ言語ファイル、およびパッチなどの、実行可能なコンテンツを有するファイルを含む場合もある。加えて、本明細書で言及される「アプリケーション」は、開封される必要があり得るドキュメント、またはアクセスされる必要がある他のデータファイルなどの、本質的に実行可能ではないファイルを含む場合もある。
【００１２】
「コンテンツ」という用語は、オブジェクトコード、スクリプト、バイトコード、マークアップ言語ファイル、およびパッチなどの、実行可能なコンテンツを有するファイルを含む場合もある。加えて、本明細書で言及される「コンテンツ」は、開封される必要があり得るドキュメント、またはアクセスされる必要がある他のデータファイルなどの、本質的に実行可能ではないファイルを含む場合もある。
【００１３】
本明細書において使用する「構成要素」、「データベース」、「モジュール」、「システム」などの用語は、ハードウェア、ファームウェア、ハードウェアとソフトウェアの組合せ、ソフトウェア、または実行中のソフトウェアのいずれかである、コンピュータ関連のエンティティを指すものとする。たとえば、構成要素は、限定はしないが、プロセッサ上で動作するプロセス、プロセッサ、オブジェクト、実行ファイル、実行スレッド、プログラム、および/またはコンピュータであり得る。例として、コンピューティングデバイス上で動作するアプリケーションと、コンピューティングデバイスの両方は、構成要素であり得る。1つまたは複数の構成要素は、プロセスおよび/または実行スレッド内に存在する場合があり、1つの構成要素は、1つのコンピュータに局所化され、かつ/または、2つ以上のコンピュータ間で分散される場合がある。加えて、これらの構成要素は、様々なデータ構造を記憶した様々なコンピュータ可読媒体から実行することができる。構成要素は、1つまたは複数のデータパケット(たとえば、信号によって、ローカルシステム、分散システム内の別の構成要素と対話し、かつ/または、インターネットなどのネットワークにわたって他のシステムと対話する、1つの構成要素からのデータ)を有する信号に従うなどして、ローカルプロセスおよび/またはリモートプロセスによって通信することができる。
【００１４】
本明細書では、「通信デバイス」、「ワイヤレスデバイス」、「ワイヤレス電話」、「ワイヤレス通信デバイス」、および「ワイヤレスハンドセット」という用語は、互換的に使用される。第3世代(「3G」)ワイヤレス技術および第4世代(「4G」)の出現により、利用可能な帯域幅が拡大されたので、より多様なワイヤレス機能を備える、より携帯が容易なコンピューティングデバイスが利用可能になっている。したがって、ポータブルコンピューティングデバイスは、携帯電話、ページャ、PDA、スマートフォン、ナビゲーションデバイス、またはワイヤレス接続もしくはワイヤレスリンクを有するハンドヘルドコンピュータを含む場合がある。
【００１５】
図1は、DRAMメモリシステム104において電力消費を節約するためのシステム100を示す。システム100は、パーソナルコンピュータと、ワークステーションと、サーバと、携帯電話、携帯情報端末(PDA)、ポータブルゲームコンソール、パームトップコンピュータ、またはタブレットコンピュータなどのポータブルコンピューティングデバイス(PCD)とを含む、任意のコンピューティングデバイスに実装される場合がある。図1の実施形態に示されたように、システム100は、DRAMメモリシステム104に結合されたシステムオンチップ(SoC)102を備える。SoC102は、DRAMメモリシステム104にメモリリソースを要求する1つまたは複数のメモリクライアント106を含む、様々なオンチップ構成要素を備える。メモリクライアント106は、1つまたは複数の処理装置(たとえば、中央処理装置(CPU)、グラフィックス処理装置(GPU)、デジタル信号プロセッサ(DSP)、表示プロセッサなど)、ビデオエンコーダ、またはDRAMメモリシステム104への読取り/書込みアクセスを要求する他のクライアントを備える場合がある。メモリクライアント106は、SoCバス105を介してエンコーダ108に接続される。
【００１６】
下記により詳細に記載されるように、エンコーダ108は、DRAMメモリシステム104へのデータ入力のデータ活動係数kを低減することによって、DRAMメモリシステム104の電力消費を削減するように構成される。DRAMメモリシステム104内の電力は、コアメモリアレイの電力および非コアの電力として分類される場合がある。当技術分野で知られているように、コアメモリアレイの電力は、コアメモリアレイ124内のすべてのデータを保持し、漏電およびリフレッシュ動作を管理するための電力を指す。非コアの電力は、すべてのデータをメモリデバイスに、およびメモリデバイスから転送し、アンペアを検知し、かつ周辺論理、マルチプレクサ、内部バス、バッファ、入力/出力(I/O)ドライバ、および受信機を管理するための電力を指す。エンコーダ108は、たとえば、エントロピーベースの圧縮を介して、メモリデータ入力のデータ活動係数を低減することによって、非コアの電力を削減する。
【００１７】
DRAMメモリシステム104内の動的または非コアの電力は、式1によって表される場合がある。
動的電力=kCV2f*密度、ここで
k=データ活動係数
C=負荷キャパシタンス
V=電圧
f=周波数またはトグルレート
密度=ギガバイト(GB)単位の総容量
式1
【００１８】
データ活動係数kは、固定期間にわたる、0から1へのトグルまたは遷移の数として定義される場合がある。たとえば、8個のビートシーケンス01010101では、k=0.5である。DRAMメモリシステム104への最小のアクセスは、1つのDRAM最小アクセス長(MAL)トランザクションと呼ばれる。32ビットの並列LPDDR3 DRAMバスの場合、MAL=32ビット*8ビート=256ビット=32バイト(8ビート、32ビット幅)である。MALトランザクションは、次から次へと連続して発生する場合がある。
【００１９】
密度および周波数の需要が増大しているので、非コアの電力を削減することは、負荷キャパシタンスを削減すること、電圧を下げること、ビートからビートへのビットごとのkを最小化すること、またはMALからMALへのビットごとのkを最小化することを必要とする。非コアの電力を削減する既存の方法は、一般に、性能が要求されないときはいつでも動作電圧を下げること、負荷キャパシタンスを削減すること、または動作周波数を一時的に低減することに関与している(必要とする帯域幅の集約的な使用ケースに対処することができない)。データ活動係数kを低減することへの試みは、画像圧縮を使用する表示フレームバッファなどの特定のタイプのデータに対して提案されている。しかしながら、これは、通常、ソース(すなわち、表示ハードウェアエンジン)において実行される。しかしながら、そのような解決策は、通常、全DRAM使用量の比較的ごく一部しか占めないこのタイプの表示データに、かなり専門化され限定される。
【００２０】
図1のシステム100は、すべてのメモリクライアント106用のメモリデータ入力のデータ活動係数kを低減することによって、DRAMメモリシステム104全体の非コアの電力消費を節約または最適化することができる。SoC102とDRAMメモリシステム104は、1つまたは複数の接続、インターフェース、またはバスを介して通信する。図1の実施形態では、SoC102は、物理レイヤまたは入力/出力デバイス(PHY/IO)110a、110b、および110cを備える。DRAMメモリシステム104は、PHY/IO112a、112b、および112cを備える。PHY/IO110aとPHY/IO112aは接続114を介して結合され、接続114は、(「cビット」と呼ばれる)メタデータ圧縮ビットを通信してデータが圧縮されているか否かを示すためのチャネルを備える場合がある。PHY/IO110bとPHY/IO112bは接続116を介して結合され、接続116はnビットのデータバスを備える場合がある。PHY/IO110cとPHY/IO112cは接続118を介して結合され、接続118は制御/アドレスバスを備える場合がある。
【００２１】
動作中、SoC102内のメモリクライアント106からのメモリデータは、エンコーダ108を通過する。エンコーダ108は、たとえば、データを圧縮しゼロパディングする簡略化されたハフマン方式を介してメモリデータを圧縮することができ、次いで、それらは接続114および116を介してDRAMメモリシステム104に供給される。DRAMメモリシステム104は、PHY/IO112a、112b、および/または112cの中にデータを受信する。周辺インターフェース120は、圧縮データをデコーダ122に供給し、デコーダ122は、データを元の非圧縮形式に逆変換し、次いでコアメモリアレイ124に記憶するように構成される。DRAMメモリシステム104は、任意の望ましいタイプ、サイズ、およびメモリ構成の任意の数のDRAMメモリデバイスを備える場合があることを諒解されたい。
【００２２】
図2は、SoC102とDRAMメモリシステム104との間の例示的な32ビット並列LPDDR3 DRAMバス116を示す。例示のために使用されるこの実施形態では、MALトランザクション204は、クロック202の8ビート(すなわち、t=0、1、2、3、4、5、6、7)用の32ビットを備える。各MAL=32ビット*8ビート=256ビット=32バイトである。エンコーダ108は、各MALトランザクション204を圧縮することによって、データ活動係数kを低減する。図3は、MALトランザクション204についての例示的な符号化例を示す。非圧縮データ302は、圧縮データ304を生成するために、たとえば、エントロピーベースの圧縮を介して処理される場合がある。非圧縮データ302は、たとえば、32バイトの生の非圧縮データを含む場合がある。エンコーダ108において具現化される圧縮アルゴリズムは、たとえば、その後にグレー表示されたビート(すなわち、T=4、5、6、7)によって表されたゼロパディングが続く16バイトに非圧縮データ302を圧縮することができ、それにより、MALトランザクション204に関連付けられたデータ活動係数kが低減される。
【００２３】
図4は、DRAMメモリシステム104の非コアの電力を削減するために、図1のシステム100によって実施される方法400を示す。ブロック402において、エンコーダ108が、DRAMメモリシステム104にアクセスするために、SoC102に存在する1つまたは複数のメモリクライアント106からメモリデータを受信する。ブロック404において、エンコーダ108が、圧縮方式に従って受信されたメモリデータを符号化することによって、受信されたメモリデータによって規定されたデータ活動係数kを低減する。一実施形態では、データ活動係数kはMALごとに低減される。圧縮方式の様々な実施形態が実装され得ることを諒解されたい。一実施形態では、圧縮方式は、たとえば、ゼロパディングを伴う簡略化されたハフマン方式を介するエントロピーベースの圧縮を含む。ブロック406において、符号化または圧縮されたメモリデータが、DRAMメモリシステム104に供給される。下記により詳細に記載されるように、エンコーダ108は、MALごとに圧縮アルゴリズムの有効性を評価するための論理を含む場合がある。このようにして、エンコーダ108は、圧縮ビットまたはCビットを生成して、データが圧縮されているか否かを識別することができる。ブロック408において、DRAMメモリシステム104内のデコーダ122は、圧縮方式に従って、符号化されたメモリデータを元の受信されたメモリデータに復号することができる。このようにして、DRAMメモリシステム104の非コアの電力は、低電力の使用事例に適応するために、選択的に削減される場合がある。
【００２４】
図5は、エンコーダ108によって実施され得るエントロピーベースの圧縮アルゴリズムの一実施形態を示す。ハフマン符号化方式は、ソースシンボルを符号化するためのコード表を含む場合がある。コード表は、推定される発生確率に基づいて、所定の数のソースシンボルを含む場合がある。簡略化されたハフマンツリー500は、圧縮されるべき最も頻度の高いシンボルまたは「パターン」を符号化することができる。一実施形態では、アルゴリズムはバイトごとに動作する。メモリデータ(たとえば、MALビート)に関連付けられたソースシンボルまたはパターンが、ハフマンツリー500の左半分の「葉」のうちのいずれかに適合する場合、バイト圧縮が行われる。図において、プレフィックス「0x」は16進(hex)数が後続することを意味し、「b」のサフィクスはバイナリ数(ビット)が先行することを意味することを諒解されたい。ブロック504は、パターン「00」hexがコードワード(CW=01b)に適合されたことを表す。ブロック506は、パターン「FF」hexがコードワード(CW=001b)に適合されたことを表す。ブロック508は、パターン「0F」hexがコードワード(CW=0001b)に適合されたことを表す。ブロック510は、パターン「F0」hexがコードワード(CW=00001b)に適合されたことを表す。ブロック512は、パターン「55」hexがコードワード(CW=000001b)に適合されたことを表す。ブロック514は、パターン「AA」hexがコードワード(CW=000000b)に適合されたことを表す。パターンはプログラムされ得ることを諒解されたい。図5にさらに示されたように、適合がない場合、ハフマンツリーの右半分は、バイトごとに余分なビットペナルティを招く可能性がある。たとえば、ブロック502は、パターン「XX」がビットペナルティを招き、9ビットのコードワード長をもたらすコードワード(CW=1b+0x「XX」)を用いて符号化される場合があることを示す。
【００２５】
図6は、ハフマンツリー500を使用して圧縮されるMALトランザクションについての第1の圧縮使用事例の一例を示す。非圧縮MAL602は、32バイトの生データを含む。8ビートの各々は、コードワード(CW=01b)を用いて符号化され得るソースパターン「00」hexを含む。この「最良の場合」の例では、得られた圧縮MAL604は、その後にゼロパディングが続く圧縮された8バイトを含む。図6の例では、非圧縮MAL602内の行の各々は、ソースパターン「00」を表す。非圧縮MAL602内の各行は、対応するコードワード(CW=01b)を用いて符号化される。圧縮MAL604は、非圧縮MAL602内の行ごとの符号化の結果を示す。
【００２６】
図7は、非圧縮MAL702の各ビートが、圧縮されず、バイトごとに余分なビットペナルティを招くソースパターン「XX」hexを含む「最悪の場合」の例を示す。得られた圧縮MAL704は、36バイトを含む。図7の例では、非圧縮MAL702内の行の各々は、ソースパターン「XX」を表す。圧縮MAL704は、非圧縮MAL702内の行ごとの符号化の結果を示す。言い換えれば、各ソースパターン「XX」は、コードワード(CW=1b+0xXX)を用いて符号化される。圧縮がより大きいサイズをもたらすこの例では、エンコーダ108は、圧縮データ704の代わりに非圧縮データ702を送ることができる。この点について、エンコーダ108は、余分な圧縮ビットまたはCビットを生成して、データが圧縮されたか否かを定義することができることを諒解されたい。
【００２７】
いくつかの実施形態では、Cビットは、(たとえば、図1のインターフェース114を介して)個別に送信され、DRAMメモリシステム104内の個別のメモリデバイスに記憶される場合がある。他の実施形態では、Cビットは、データバス(たとえば、図1のインターフェース116)上で送信されるデータと連結され、同じDRAMチップに記憶される場合がある。Cビットは、それをDRAMメモリシステム104に記憶する必要なしに、インターフェースのみに使用される場合があることをさらに諒解されたい。CビットがDRAMメモリに記憶されない場合、一実施形態では、デコーダ122は、図1に示されたように各メモリに組み込まれる場合がある。CビットがDRAMメモリに記憶される場合、一実施形態では、たとえば、32バイトのデータごとに1つのCビットを記憶するためにさらなるDRAM空間が使用される場合があり、デコーダ122は、DRAMメモリシステム104ではなくSoC102内に配置される場合があることを諒解されたい。
【００２８】
システム100は、たとえば、システム100内のクライアント、または、たとえばクラウドベースのサーバなどの外部構成要素上で動作する最適化プログラムを使用して、圧縮係数セット(すなわち、Cビット)の統計データの有効性を分析するための論理を用いて強化される場合がある。一実施形態では、エンコーダ108は、圧縮統計データを記録するカウンタを備え、多数のエンドユーザにわたって改善を行うことができる。エンコーダ108は、特定のクライアント106に対して圧縮をオフにする能力を有して構成される場合がある。
【００２９】
一実施形態では、DRAMメモリシステム104は、SoC102上のすべてのメモリクライアント106によって使用される場合がある。このようにして、エンコーダ108は、メモリクライアント106のすべてからのトラフィックのすべての経路内にある。いくつかのクライアント106からのデータを符号化することが望ましくない場合があるときの事例があり得る。たとえば、表示プロセッサがすでにDRAMデータを圧縮している場合、エンコーダ108に圧縮を再試行させると、電力が浪費される筈である。したがって、エンコーダ108は個別のイネーブルビットを有し、また、クライアント106ごとにCビットの統計データを収集する。あらゆるDRAMトランザクションの間の各メモリクライアント106は、そのクライアントを一意に識別するマスタID(MID)を含む場合がある。メモリクライアント106ごとに、圧縮が有効にされると、エンコーダ108は圧縮するように試みることができ、トランザクションの総数および非圧縮トランザクションの数をカウントすることができる。これらのカウンタ/統計データは、CPUが利用可能であり得る。デフォルトは、すべてのメモリクライアント106に対して圧縮を常に有効にすることであり得る。
【００３０】
圧縮を無効にするために、CPUは特定のメモリクライアント106用のイネーブルビットをクリアすることができ、それ以降、DRAMメモリシステム104に対するいかなる書込みもエンコーダ108をバイパスすることができるが、Cビットはまだゼロとして送信され得るし、それはデータが圧縮されていないことを意味する。DRAMメモリシステム104からのいかなる読取りも、圧縮または非圧縮のいずれかのデータを含んでいる場合があり、Cビットは、解凍が必要とされるか否かを正しく示すことができる。たとえば、読取りデータの解凍は、CPUが特定のメモリクライアント106用の圧縮イネーブルビットをクリアした後でも、まだ行われる場合がある。
【００３１】
図11は、CPUによってアクセス可能であり得る例示的な表1100を示す。表1100は、クライアント名フィールド1102と、マスタID(MID)フィールド1104と、圧縮イネーブルビットフィールド1106と、トランザクションの総数フィールド1108と、非圧縮トランザクションの総数フィールド1109とを含む。各メモリクライアント106は、一意のMIDを有する。CPUは、クライアントごとに圧縮を有効または無効にすることができる。有効にされると、エンコーダ108は、クライアントごとに圧縮統計データの更新された記録を保持することができ、各クライアントは、独立して、それぞれのクライアントごとのトラフィックの「圧縮可能性」に基づいて、圧縮を有効または無効にすることができる。たとえば、一実施形態では、特定のクライアントがプログラム可能しきい値を超える十分な非圧縮トラフィック(Cビット=0)を有する場合、そのクライアント用の圧縮は無効にされる場合がある。
【００３２】
図8および図9は、それぞれエンコーダ108およびデコーダ122の一実施形態を示す。エンコーダ108は、プログラマブルハフマン係数表804と、連結/バッファ810と、ゼロパディング構成要素814と、カウンタ818と、Cビット生成器820とを備える場合がある。エンコーダ108は、接続802上で非圧縮データ入力を受信する。この例では、非圧縮データは、上述されたように、32バイト(8ビット)を含む。表804は、たとえば、ハフマンツリー500(図5)を実装するために使用され得るプログラマブルエンコーダ係数を含む。エンコーダ係数は、たとえば再起動中に、CPUからロードされる場合がある。CPUは、ROMまたは2次ローダに存在する非圧縮コードを実行することができる。ハフマン出力(9ビット)が接続806上で連結/バッファ810に供給され、連結/バッファ810は、接続812を介してゼロパディング構成要素814に連結出力(8ビット)を供給する。ゼロパディング構成要素814は、接続816にデコーダ122(図9)への圧縮出力(8ビット)を供給する。
【００３３】
サイズ(3ビット)は、接続808を介してカウンタ818に供給される。図10は、3ビット表現(値0〜7)およびそれらのそれぞれの定義を示す表1000である。Cビット生成器820は、所定のバイトサイズにいつ達するかを判定するように構成される場合がある。Cビット生成器820は、接続816上のデータ入力が圧縮されているか否かを識別するために、Cビットを生成し、接続822を介して供給する。上述されたように、圧縮がより大きいサイズをもたらす場合、CビットはC=0に設定され、生のデータ入力が圧縮データよりも小さい(たとえば、圧縮サイズ>非圧縮サイズ)ので、生のデータ入力が出力されることを示す場合がある。
【００３４】
図9を参照すると、圧縮データおよびCビットは、それぞれ接続816および822を介して、バッファ&左シフト構成要素902によって受信される場合がある。シフト出力(8ビット)は、接続904を介して、プログラマブル逆ハフマン係数表905に供給される場合があり、プログラマブル逆ハフマン係数表905は、CPUによってロードされた逆係数を含む。非圧縮データ出力は、接続908を介して、コアメモリアレイ124に供給される場合がある。
【００３５】
上述されたように、システム100は、任意の望ましいコンピューティングシステムに組み込まれる場合がある。図12は、例示的なポータブルコンピューティングデバイス(PCD)1200に組み込まれたシステム100を示す。システム100のいくつかの構成要素(たとえば、エンコーダ108)は、SoC322(図12)に含まれるが、他の構成要素(たとえば、DRAMメモリシステム104)は、SoC322に結合された外部構成要素であることが容易に諒解されよう。SoC322は、マルチコアCPU1202を含む場合がある。マルチコアCPU 1202は、第0のコア410、第1のコア412、および第Nのコア414を含む場合がある。コアのうちの1つは、たとえば、グラフィックス処理装置(GPU)を備え、他のコアのうちの1つまたは複数は、CPUを備える場合がある。
【００３６】
ディスプレイコントローラ328およびタッチスクリーンコントローラ330は、CPU1202に結合される場合がある。一方、オンチップシステム322の外部にあるタッチスクリーンディスプレイ1206は、ディスプレイコントローラ328およびタッチスクリーンコントローラ330に結合される場合がある。
【００３７】
図12は、ビデオエンコーダ334、たとえば位相反転線(PAL)エンコーダ、順次式カラーメモリ(SECAM)エンコーダ、または全米テレビジョン方式委員会(NTSC)エンコーダが、マルチコアCPU1202に結合されることをさらに示す。さらに、ビデオ増幅器336は、ビデオエンコーダ334およびタッチスクリーンディスプレイ1206に結合される。また、ビデオポート338は、ビデオ増幅器336に結合される。図12に示されたように、ユニバーサルシリアルバス(USB)コントローラ340は、マルチコアCPU1202に結合される。また、USBポート342は、USBコントローラ340に結合される。メモリ1204および加入者識別モジュール(SIM)カード346も、マルチコアCPU 1202に結合される場合がある。メモリ1204は、SoC322に存在するか、または(図1に示されたように)SoC322に結合される場合がある。メモリ1204は、上述されたDRAMメモリシステム104(図1)を含む場合がある。
【００３８】
さらに、図12に示されたように、デジタルカメラ348は、マルチコアCPU 1202に結合される場合がある。例示的な態様では、デジタルカメラ348は、電荷結合デバイス(CCD)カメラまたは相補型金属酸化物半導体(CMOS)カメラである。
【００３９】
図12にさらに示されたように、ステレオオーディオコーダ-デコーダ(コーデック)350は、マルチコアCPU1202に結合される場合がある。その上、オーディオ増幅器352は、ステレオオーディオコーデック350に結合される場合がある。例示的な態様では、第1のステレオスピーカ354および第2のステレオスピーカ356は、オーディオ増幅器352に結合される。図12は、マイクロフォン増幅器358もステレオオーディオコーデック350に結合される場合があることを示している。加えて、マイクロフォン360は、マイクロフォン増幅器358に結合される場合がある。特定の態様では、周波数変調(「FM」)ラジオチューナ362は、ステレオオーディオコーデック350に結合される場合がある。また、FMアンテナ364は、FMラジオチューナ362に結合される。さらに、ステレオヘッドフォン366は、ステレオオーディオコーデック350に結合される場合がある。
【００４０】
図12はさらに、無線周波数(RF)トランシーバ368がマルチコアCPU1202に結合される場合があることを示す。RFスイッチ370は、RFトランシーバ368およびRFアンテナ372に結合される場合がある。図12に示されたように、キーパッド374は、マルチコアCPU 1202に結合される場合がある。また、マイクロフォン付きモノヘッドセット376は、マルチコアCPU 1202に結合される場合がある。さらに、バイブレータデバイス378は、マルチコアCPU 1202に結合される場合がある。
【００４１】
図12はまた、電源380がオンチップシステム322に結合される場合があることを示す。特定の態様では、電源380は電力を必要とするPCD1200の様々な構成要素に電力を供給する直流(DC)電源である。さらに、特定の態様では、電源は、充電式DCバッテリー、または交流(AC)電源に接続されたAC-DC変換器から導出されるDC電源である。
【００４２】
図12はさらに、PCD1200がデータネットワーク、たとえばローカルエリアネットワーク、パーソナルエリアネットワーク、または任意の他のネットワークにアクセスするために使用され得る、ネットワークカード388を含む場合もあることを示す。ネットワークカード388は、Bluetooth(登録商標)ネットワークカード、WiFiネットワークカード、パーソナルエリアネットワーク(PAN)カード、パーソナルエリアネットワーク超低電力技術(PeANUT)ネットワークカード、テレビジョン/ケーブル/衛星チューナ、または当技術分野でよく知られている任意の他のネットワークカードであり得る。さらに、ネットワークカード388はチップに組み込まれる場合があり、すなわち、ネットワークカード388は、チップ内のフルソリューションであり得るし、別個のネットワークカード388ではない場合がある。
【００４３】
図12に描写されたように、タッチスクリーンディスプレイ1206、ビデオポート338、USBポート342、カメラ348、第1のステレオスピーカ354、第2のステレオスピーカ356、マイクロフォン360、FMアンテナ364、ステレオヘッドフォン366、RFスイッチ370、RFアンテナ372、キーパッド374、モノヘッドセット376、バイブレータ378、および電源380は、オンチップシステム322の外部にある場合がある。
【００４４】
本明細書に記載された方法ステップのうちの1つまたは複数は、上述されたモジュールなどのコンピュータプログラム命令としてメモリに記憶される場合があることを諒解されたい。これらの命令は、本明細に記載された方法を実施するために、対応するモジュールと組合せまたは協働して、任意の適切なプロセッサによって実行される場合がある。
【００４５】
上述されたように、システム100によって実装される圧縮方式は、クラウドベースのサーバによって最適化される場合がある。図13は、複数のコンピューティングデバイス1302に組み込まれたシステム100に実装された圧縮アルゴリズム(たとえば、コード表、圧縮係数など)を最適化するためのコンピュータシステム1300の一実施形態を示す。コンピュータシステム1300は、通信ネットワーク1308を介して複数のコンピューティングデバイス1302と通信しているサーバ1306を備える。各コンピューティングデバイス1302は、対応するユーザ1304によって操作される場合がある。通信ネットワーク1308は、たとえば、インターネット、公衆交換電話網(PSTN)、ワイドエリアネットワーク、ローカルエリアネットワーク、ワイヤレスアクセスポイント、または任意の他の適切な通信基盤を含む、任意の適切なプロトコルを介して、有線および/またはワイヤレスの通信をサポートすることができる。
【００４６】
コンピューティングデバイス1302は、パーソナルコンピュータ、ラップトップ、ノートブック、ビデオゲームコンソール、ポータブルコンピューティングデバイス、モバイルフォンなどを含む場合がある。図13に示されたように、コンピューティングデバイス1302は、圧縮方式に従ってメモリデータを符号化することによって、メモリシステム内の電力消費を節約するための上述されたシステム100を含む。サーバ1306は、通信ネットワーク1308を介してコンピューティングデバイス1302の各々と通信する。
【００４７】
一般には、コンピュータシステム1300はエンコーダ最適化モジュールを備え、エンコーダ最適化モジュールは、コンピューティングデバイス1302に提供され、対応するエンコーダ108によって実装されるコードブックを生成し最適化するための論理および/または機能を含む。エンコーダ最適化モジュールのいくつかの態様はコンピューティングデバイス1302に配置される場合があり、他の態様はサーバ1306に配置される場合があることを諒解されたい。クライアント側の機能は、クライアントエンコーダ最適化モジュール1310によって提供される場合があり、サーバ側の機能は、サーバエンコーダ最適化モジュール1314によって提供される場合がある。一実施形態では、クライアントエンコーダ最適化モジュール1310は、サーバ1306とのデータ通信およびデータ同期、ならびにユーザインターフェースの機能および制御を提供するモバイルアプリケーションを含む場合がある。たとえば、ユーザ1304は、コードブックの最適化を選択的に有効および無効にすることができる。下記により詳細に記載されるように、クライアントエンコーダ最適化モジュール1310は、サーバ1306へのコードブック最適化データ(たとえば、圧縮統計データならびに様々なデバイスおよび/またはユーザのメトリック)の送信を制御することができる。一般には、サーバエンコーダ最適化モジュール1314は、コンピューティングデバイス1302からコードブック最適化データを受信し、コードブックを生成し各コンピューティングデバイス1302に供給し、データベース1316を介して複数のユーザ1304のネットワークにわたってコードブックを最適化するための論理および/または機能を含む。
【００４８】
図14は、サーバデータベース1316の一実施形態を示す。サーバデータベース1316は、ユーザ1304および/または対応するコンピューティングデバイス1302に関連付けられた以下の情報:デバイスメモリイメージ1404、コンピューティングデバイス1302に供給されるコードブック1406、コンピューティングデバイス1302から受信されるコードブック圧縮統計データ1407およびデバイス/ユーザメトリック1408のうちの1つまたは複数を有する、コンピュータシステム1300内のユーザ1304ごとの様々なタイプのデータを記憶する。データベース1316内の各行は、コンピュータシステム1300内の異なるユーザ1304に関連付けられたデータに対応する。1番目の行はユーザ1304aに対応する。2番目の行はユーザ1304bに対応する。3番目の行はユーザ1304cに対応する。最後の行はユーザ1304nに対応する。任意の数のユーザに適応するように、任意の数の行が記憶され得ることを諒解されたい。
【００４９】
図16は、サーバエンコーダ最適化モジュール1314の一実施形態のアーキテクチャ、動作、および/または機能を示す。ブロック1602において、コンピュータシステム1300内のユーザ1304ごとに一意のコードブックが生成される場合がある。各コードブックは、コンピューティングデバイス1302のうちの1つに関連付けられ、上述されたように、圧縮方式に従って対応するコンピューティングデバイス1302内のメモリデータを符号化するために構成される。圧縮方式は、図5に示されたハフマン符号化方式などの、エントロピーベースの圧縮アルゴリズムを含む場合がある。図15に示されたように、コードブック1406は、対応するコードワード1504を割り当てられている各パターンを用いて圧縮されるべき、頻度の高いシンボルまたは「パターン」を識別するコード表を含む。
【００５０】
コンピューティングデバイス1302用の最初のコードブック1406は、コンピューティングデバイス1302の仮想メモリイメージ1404を構築することによって生成される場合がある。サーバ1306は、様々なソフトウェア構成要素(たとえば、アプリケーション、アプリケーションフレームワーク、サービス/ランタイム環境、ライブラリ、カーネル、オペレーティングシステムなど)についての様々なタイプの情報(たとえば、図17の情報1700)を受信することができる。サーバ1306は、アプリケーションおよび他の事前に圧縮された構造を解凍し、仮想メモリイメージ1404を構築することができる。
【００５１】
コードブック1406が様々な方法で生成され得ることを諒解されたい。一実施形態では、サーバ1306は段階的コードブック生成プロセスを採用する。第1の段階は、各ソフトウェア構成要素内のパターンの静的分布に基づいて、1次静的コードブックを生成することに関与する。サーバ1306は、最も反復するコードパターン1502を求めて仮想メモリイメージ1404内の各構成要素を検索し、これらに最短コードワード1504を割り当てる。頻繁に動作するプロセスも、最短コードワード1504を割り当てられる場合がある。第2の段階は、動的コードブックの生成および検証に関与する場合がある。仮想メモリイメージ1404は、サーバ1306上で動作する仮想デバイス上にロードされ、スクリプト記述/実行される場合がある。メモリトランザクションは、ロギングされ、記録されたトラフィックを読取り/書込みされる場合がある。静的分布パターンの代わりに動的分布パターンに基づいて、同様のパターン検索が実行される場合がある。
【００５２】
再び図16を参照すると、ブロック1604において、サーバ1306は、通信ネットワーク1308を介して対応するコンピューティングデバイス1302に一意のコードブック1406を供給する。コンピューティングデバイス1302は、コードブック1406を受信し、上述されたように、メモリデータを圧縮するためにコードブック1406を使用することを開始することができる。ブロック1606において、サーバ1306は、コンピューティングデバイス1302から圧縮統計データおよび/またはデバイスメトリックを受信することができる。圧縮統計データは、たとえば、図11に示されたCビット統計データを含む場合がある。
【００５３】
図17は、たとえば、コードブック1406を最適化する際に有用であり得る、デバイスメトリック1702、ならびに値1704、1706および1708などの情報1700の様々な例を示す。圧縮統計データおよびデバイスメトリックは、データベース1316に記憶される場合がある。第1のデバイスメトリック1702は、メモリリソースを要求する特定のプロセスまたはタスクを識別するプロセス識別子(Process_IDx)を含む場合があり、プロセス識別子は、タイムスタンプ、プロセスまたはタスクが動作する平均時間(%avg_time_running)、およびプロセスまたはタスクに関連付けられたバージョン情報についての値を含む場合がある。第2のデバイスメトリック1702は、ハードウェア識別子(Phone_Hardware_ID)を含む場合があり、ハードウェア識別子は、ハードウェアモデル(Hardware_model)および任意の電話レビジョン(Phone_revision)を識別するための値を含む場合がある。第3のデバイスメトリック1702は、追跡タイムスタンプおよび平均CPU稼働率についての値を有するCPU稼働率を含む場合がある。第4のデバイスメトリック1702は、マスタID1104(図11)に従って識別される特定のクライアントについての圧縮統計データを含む場合がある。第5のデバイスメトリック1702は、ソフトウェア識別子(Phone_Software_ID)を含む場合があり、ソフトウェア識別子は、バージョン情報を識別するための値を含む場合がある。
【００５４】
複数のプロセスが同時に動作している場合があり、コンピューティングデバイス1302に関連付けられた多数のさらなるメトリックが受信される場合があることを諒解されたい。一実施形態では、電話ハードウェアIDおよび電話ソフトウェアIDなどのメトリックは、個別に相互参照し、デフォルトの工場ソフトウェアをデータベース1316からローカルに取得して、デフォルトの仮想メモリイメージ1404を作成するために使用される場合があり、プロセスIDおよびバージョンなどのメトリックは、個別に相互参照し、ユーザ1304によってインストールされた任意のさらなるソフトウェアをデータベース1316からローカルに取得し、次いで工場の仮想メモリイメージ1404を改訂してユーザ固有の仮想メモリイメージ1404を作成するために使用される場合がある。一実施形態では、ユーザ1304のコンピューティングデバイス1302上の実際のイメージ1404がサーバ1306に直接送られないので、これは、通信ネットワーク1308の帯域幅を大幅に削減して行われ得る。ローカルデータベース1316は、新しいソフトウェア構成要素を用いて周期的に更新される場合がある。
【００５５】
ブロック1608において、サーバ1306は、コンピュータシステム1300内のユーザ1304の各々からの圧縮統計データおよび/またはデバイスメトリックを処理し、コンピューティングデバイス1302のうちの1つまたは複数のための最適化されたコードブック1406を生成することができる。一実施形態では、サーバ1306は、改善された省電力につながる場合がある、圧縮に成功した最大の割合を有するCビット統計データについて、同様のデバイスメトリックを有するすべてのユーザ1304を見渡すことができる。ブロック1610において、最適化されたコードブック1406が、コンピューティングデバイス1302のうちの1つまたは複数に供給される場合がある。
【００５６】
本発明が記載されたように機能するために、本明細書に記載されたプロセスまたはプロセスフロー内の特定のステップが他のステップよりも先行することは当然である。しかしながら、そのような順序またはシーケンスが本発明の機能を変えない場合、本発明は、記載されたステップの順序に限定されない。すなわち、本発明の範囲および趣旨から逸脱することなく、いくつかのステップは、他のステップの前に実行されるか、後に実行されるか、または他のステップと並行して(実質的に同時に)実行される場合があることを認識されたい。場合によっては、本発明から逸脱することなく、いくつかのステップは、省略されてもよく、または実行されなくてもよい。さらに、「その後」、「次いで」、「次に」などの単語は、ステップの順序を限定するものではない。これらの単語は、単に例示的な方法の説明を通して読者を導くために使用される。
【００５７】
加えて、プログラミングにおける当業者は、たとえば、本明細書内のフローチャートおよび関連する説明に基づいて、開示された発明を容易に実施するために、コンピュータのコードを書くこと、または適切なハードウェアおよび/もしくは回路を識別することができる。
【００５８】
したがって、特定の1組のプログラムコード命令または詳細なハードウェアデバイスの開示は、本発明をどのように製作および使用すべきかについて適切に理解するために必要であるとは見なされない。特許請求されるコンピュータ実施プロセスの発明性のある機能は、上記の説明において、かつ様々なプロセスフローを示すことができる図面とともに、より詳細に説明される。
【００５９】
1つまたは複数の例示的な態様では、記載された機能は、ハードウェア、ソフトウェア、ファームウェア、またはそれらの任意の組合せに実装される場合がある。ソフトウェアに実装される場合、機能は、1つまたは複数の命令またはコードとして、コンピュータ可読媒体上に記憶されるか、またはコンピュータ可読媒体上で送信される場合がある。コンピュータ可読媒体は、ある場所から別の場所へのコンピュータプログラムの転送を容易にする任意の媒体を含む、コンピュータ記憶媒体と通信媒体の両方を含む。記憶媒体は、コンピュータによってアクセスされ得る任意の利用可能な媒体であり得る。限定ではなく例として、そのようなコンピュータ可読媒体は、RAM、ROM、EEPROM、NANDフラッシュ、NORフラッシュ、M-RAM、P-RAM、R-RAM、CD-ROMもしくは他の光ディスクストレージ、磁気ディスクストレージもしくは他の磁気ストレージデバイス、または命令もしくはデータ構造の形態で所望のプログラムコードを搬送もしくは記憶するために使用され得るし、コンピュータによってアクセスされ得る任意の他の媒体を含む場合がある。
【００６０】
また、任意の接続は、適切にコンピュータ可読媒体と呼ばれる。たとえば、ソフトウェアが、同軸ケーブル、光ファイバケーブル、ツイストペア、デジタル加入者回線(「DSL」)、または、赤外線、無線、およびマイクロ波などのワイヤレス技術を使用して、ウェブサイト、サーバ、または他のリモートソースから送信される場合、同軸ケーブル、光ファイバケーブル、ツイストペア、DSL、または、赤外線、無線、およびマイクロ波などのワイヤレス技術は、媒体の定義に含まれる。
【００６１】
本明細書で使用されるディスク(disk)およびディスク(disc)は、コンパクトディスク(disc)(CD)、レーザディスク(disc)、光ディスク(disc)、デジタル多用途ディスク(disc)(DVD)、フロッピーディスク(disk)、およびブルーレイディスク(disc)を含み、ディスク(disk)は通常、データを磁気的に再生し、ディスク(disc)は、データをレーザで光学的に再生する。上記の組合せも、コンピュータ可読媒体の範囲内に含まれるべきである。
【００６２】
本発明の趣旨および範囲から逸脱することなく、本発明が関係する代替の実施形態は、当業者には明かになるであろう。したがって、選択された態様が詳細に図示および記載されているが、以下の特許請求の範囲によって定義されるように、本発明の趣旨および範囲から逸脱することなく、各態様において様々な置換および改変が行われ得ることが理解されよう。
【符号の説明】
【００６３】
100  システム
102  システムオンチップ(SoC)
104  DRAMメモリシステム
105  SoCバス
106  メモリクライアント
108  エンコーダ
110a  物理レイヤまたは入力/出力デバイス(PHY/IO)
110b  物理レイヤまたは入力/出力デバイス(PHY/IO)
110c  物理レイヤまたは入力/出力デバイス(PHY/IO)
112a  物理レイヤまたは入力/出力デバイス(PHY/IO)
112b  物理レイヤまたは入力/出力デバイス(PHY/IO)
112c  物理レイヤまたは入力/出力デバイス(PHY/IO)
114  接続
116  接続
118  接続
120  周辺インターフェース
122  デコーダ
124  コアメモリアレイ
202  クロック
204  MALトランザクション
302  非圧縮データ
304  圧縮データ
322  SoC
328  ディスプレイコントローラ
330  タッチスクリーンコントローラ
334  ビデオエンコーダ
336  ビデオ増幅器
338  ビデオポート
340  ユニバーサルシリアルバス(USB)コントローラ
342  USBポート
346  加入者識別モジュール(SIM)カード
348  デジタルカメラ
350  ステレオオーディオコーダ-デコーダ(コーデック)
352  オーディオ増幅器
354  第1のステレオスピーカ
356  第2のステレオスピーカ
358  マイクロフォン増幅器
360  マイクロフォン
362  周波数変調(「FM」)ラジオチューナ
364  FMアンテナ
366  ステレオヘッドフォン
368  無線周波(RF)トランシーバ
370  RFスイッチ
372  RFアンテナ
374  キーパッド
376  マイクロフォン付きモノヘッドセット
378  バイブレータデバイス
380  電源
388  ネットワークカード
400  方法
402  ブロック
404  ブロック
406  ブロック
408  ブロック
410  第0のコア
412  第1のコア
414  第Nのコア
500  ハフマンツリー
502  ブロック
504  ブロック
506  ブロック
508  ブロック
510  ブロック
512  ブロック
514  ブロック
602  非圧縮MAL
604  圧縮MAL
702  非圧縮MAL
704  圧縮MAL
802  接続
804  プログラマブルハフマン係数表
806  接続
808  接続
810  連結/バッファ
812  接続
814  ゼロパディング構成要素
816  接続
818  カウンタ
820  Cビット生成器
822  接続
902  バッファ&左シフト構成要素
904  接続
905  プログラマブル逆ハフマン係数表
906  接続
908  接続
1000  表
1100  表
1102  クライアント名フィールド
1104  マスタID(MID)フィールド
1106  圧縮イネーブルビットフィールド
1108  トランザクションの総数フィールド
1109  非圧縮トランザクションの総数フィールド
1200  ポータブルコンピューティングデバイス(PCD)
1202  マルチコアCPU
1204  メモリ
1206  タッチスクリーンディスプレイ
1300  コンピュータシステム
1302  コンピューティングデバイス
1304  ユーザ
1304a  ユーザ
1304b  ユーザ
1304c  ユーザ
1304n  ユーザ
1306  サーバ
1308  通信ネットワーク
1310  クライアントエンコーダ最適化モジュール
1312  ネットワークインターフェースデバイス
1314  サーバエンコーダ最適化モジュール
1316  サーバデータベース
1402  ユーザID
1404  デバイスメモリイメージ
1406  コードブック
1407  コードブック圧縮統計データ
1408  デバイス/ユーザメトリック
1502  コードパターン
1504  コードワード
1602  ブロック
1604  ブロック
1606  ブロック
1608  ブロック
1610  ブロック
1700  情報
1702  デバイスメトリック
1704  値
1706  値
1708  値
【図１】
2017502539.tif 000003
【図２】
2017502539.tif 000004
【図３】
2017502539.tif 000005
【図４】
2017502539.tif 000006
【図５】
2017502539.tif 000007
【図６】
2017502539.tif 000008
【図７】
2017502539.tif 000009
【図８】
2017502539.tif 000010
【図９】
2017502539.tif 000011
【図１０】
2017502539.tif 000012
【図１１】
2017502539.tif 000013
【図１２】
2017502539.tif 000014
【図１３】
2017502539.tif 000015
【図１４】
2017502539.tif 000016
【図１５】
2017502539.tif 000017
【図１６】
2017502539.tif 000018
【図１７】
2017502539.tif 000019
【手続補正書】
【提出日】平成28年4月26日(2016.4.26)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
省電力コードブックの最適化を実現するための方法であって、
複数のコンピューティングデバイスの各々のための一意のコードブックを生成するステップであって、各一意のコードブックが対応するコンピューティングデバイス内のメモリデータを符号化するために構成され、各コードブックが、
各コンピューティングデバイス上のアプリケーションおよび前記アプリケーションによって生成されたデータを分析して、前記アプリケーションおよび前記生成されたデータの中の複数のソースシンボルの頻度を判断すること、
前記複数のソースシンボルの各々を対応するコードワードに割り当てること、ならびに
特定のコンピューティングデバイスごとの前記コードワードの割当てを、前記特定のコンピューティングデバイスのための前記一意のコードブックに含めること
によって生成される、ステップと、
通信ネットワークを介して前記対応するコンピューティングデバイスに前記一意のコードブックを供給するステップと、
前記通信ネットワークを介して前記コンピューティングデバイスのうちの1つまたは複数から圧縮統計データを受信するステップであって、前記圧縮統計データが前記対応する一意のコードブックに関係し、圧縮が行われたかどうかを示す、ステップと、
前記受信された圧縮統計データが前記圧縮の有効性を示す場合、前記コンピューティングデバイスのうちの少なくとも1つのための最適化されたコードブックを生成するステップと、
前記通信ネットワークを介して前記コンピューティングデバイスのうちの1つまたは複数に前記最適化されたコードブックを供給するステップと
を含む、方法。
【請求項２】
各一意のコードブックを生成するステップが、
前記コンピューティングデバイスの仮想メモリイメージを構築するステップと、
前記仮想メモリイメージに関連付けられた複数の頻度の高いソースシンボルを特定するステップと、
各ソースシンボルに対応するコードワードを割り当てるステップと
をさらに含む、請求項1に記載の方法。
【請求項３】
前記仮想メモリイメージを構築するステップが、前記コンピューティングデバイスから情報を受信し、前記情報を相互参照してデータベース内の1つまたは複数のソフトウェア構成要素を識別するステップを含み、前記方法が、サーバ上で動作する仮想デバイス上に前記仮想メモリイメージをロードし、実行するステップをさらに含む、請求項２に記載の方法。
【請求項４】
前記一意のコードブックが、エントロピー符号化アルゴリズムに従って前記メモリデータを符号化するように構成された、請求項1に記載の方法。
【請求項５】
前記エントロピー符号化アルゴリズムが、複数のプログラマブル係数を含む簡略化されたハフマン方式を含む、請求項4に記載の方法。
【請求項６】
前記圧縮統計データが、前記対応するコンピューティングデバイス内のエンコーダによって生成されたCビットデータを含む、請求項1に記載の方法。
【請求項７】
前記通信ネットワークを介して前記コンピューティングデバイスのうちの1つまたは複数から、前記対応するコンピューティングデバイスまたはユーザに関連付けられたデバイスメトリックを受信するステップ
をさらに含み、
前記最適化されたコードブックを生成する前記ステップが、前記受信された圧縮統計データおよび前記受信されたデバイスメトリックのうちの1つまたは複数に基づく、
請求項1に記載の方法。
【請求項８】
前記デバイスメトリックが、ハードウェアバージョン、ソフトウェアバージョン、オペレーティングシステムバージョン、プロセスタイムスタンプ、プロセス平均実行時間、およびCPU稼働率データのうちの1つまたは複数を含む、請求項7に記載の方法。
【請求項９】
前記コンピューティングデバイスがポータブル通信デバイスを含む、請求項1に記載の方法。
【請求項１０】
マルチユーザの省電力コードブックの最適化を実現するためのシステムであって、
複数のコンピューティングデバイスの各々のための一意のコードブックを生成するための手段であって、各一意のコードブックが対応するコンピューティングデバイス内のメモリデータを符号化するために構成され、各コードブックが、
各コンピューティングデバイス上のアプリケーションおよび前記アプリケーションによって生成されたデータを分析して、前記アプリケーションおよび前記生成されたデータの中の複数のソースシンボルの頻度を判断すること、
前記複数のソースシンボルの各々を対応するコードワードに割り当てること、ならびに
特定のコンピューティングデバイスごとの前記コードワードの割当てを、前記特定のコンピューティングデバイスのための前記一意のコードブックに含めること
によって生成される、手段と、
通信ネットワークを介して前記対応するコンピューティングデバイスに前記一意のコードブックを供給するための手段と、
前記通信ネットワークを介して前記コンピューティングデバイスのうちの1つまたは複数から圧縮統計データを受信するための手段であって、前記圧縮統計データが前記対応する一意のコードブックの前記圧縮の有効性に関係し、圧縮が行われたかどうかを示す、手段と、
前記圧縮の前記有効性を示す前記受信された圧縮統計データに基づいて前記コンピューティングデバイスのうちの少なくとも1つのための最適化されたコードブックを生成するための手段と、
前記通信ネットワークを介して前記コンピューティングデバイスのうちの1つまたは複数に前記最適化されたコードブックを供給するための手段と
を備える、システム。
【請求項１１】
各一意のコードブックを生成するための前記手段が、
前記コンピューティングデバイスの仮想メモリイメージを構築するための手段と、
前記仮想メモリイメージに関連付けられた複数の頻度の高いソースシンボルを特定するための手段と、
各ソースシンボルに対応するコードワードを割り当てるための手段と
をさらに備える、請求項10に記載のシステム。
【請求項１２】
前記仮想メモリイメージを構築するための前記手段が、前記コンピューティングデバイスから情報を受信し、前記情報を相互参照してデータベース内の1つまたは複数のソフトウェア構成要素を識別するための手段を備え、前記システムが、サーバ上で動作する仮想デバイス上に前記仮想メモリイメージをロードし、実行するための手段をさらに備える、請求項11に記載のシステム。
【請求項１３】
前記一意のコードブックが、エントロピー符号化アルゴリズムに従って前記メモリデータを符号化するように構成された、請求項10に記載のシステム。
【請求項１４】
前記エントロピー符号化アルゴリズムが、複数のプログラマブル係数を含む簡略化されたハフマン方式を含む、請求項13に記載のシステム。
【請求項１５】
前記圧縮統計データが、前記対応するコンピューティングデバイス内のエンコーダによって生成されたCビットデータを含む、請求項10に記載のシステム。
【請求項１６】
前記通信ネットワークを介して前記コンピューティングデバイスのうちの1つまたは複数から、前記対応するコンピューティングデバイスまたはユーザに関連付けられたデバイスメトリックを受信するための手段
をさらに備え、
前記最適化されたコードブックが、前記受信された圧縮統計データおよび前記受信されたデバイスメトリックのうちの1つまたは複数に基づいて生成される、
請求項10に記載のシステム。
【請求項１７】
前記デバイスメトリックが、ハードウェアバージョン、ソフトウェアバージョン、オペレーティングシステムバージョン、プロセスタイムスタンプ、プロセス平均実行時間、およびCPU稼働率データのうちの1つまたは複数を含む、請求項16に記載のシステム。
【請求項１８】
前記コンピューティングデバイスがポータブル通信デバイスを含む、請求項10に記載のシステム。
【請求項１９】
マルチユーザの省電力コードブックの最適化を実現するための、コンピュータ可読媒体内で具現化され、プロセッサによって実行可能なコンピュータプログラムであって、
複数のコンピューティングデバイスの各々のための一意のコードブックを生成することであって、各一意のコードブックが対応するコンピューティングデバイス内のメモリデータを符号化するために構成され、各一意のコードブックが、
各コンピューティングデバイス上のアプリケーションおよび前記アプリケーションによって生成されたデータを分析して、前記アプリケーションおよび前記生成されたデータの中の複数のソースシンボルの頻度を判断すること、
前記複数のソースシンボルの各々を対応するコードワードに割り当てること、ならびに
特定のコンピューティングデバイスごとの前記コードワードの割当てを、前記特定のコンピューティングデバイスのための前記一意のコードブックに含めること
によって生成される、生成することと、
通信ネットワークを介して前記対応するコンピューティングデバイスに前記一意のコードブックを供給することと、
前記通信ネットワークを介して前記コンピューティングデバイスのうちの1つまたは複数から圧縮統計データを受信することであって、前記圧縮統計データが前記対応する一意のコードブックの前記圧縮の有効性に関係する、受信することと、
前記圧縮の有効性を含む前記受信された圧縮統計データに基づいて前記コンピューティングデバイスのうちの少なくとも1つのための最適化されたコードブックを生成することと、
前記通信ネットワークを介して前記コンピューティングデバイスのうちの1つまたは複数に前記最適化されたコードブックを供給することと
を行うように構成された論理を含む、コンピュータプログラム。
【請求項２０】
各一意のコードブックを生成するように構成された前記論理が、
前記コンピューティングデバイスの仮想メモリイメージを構築することと、
前記仮想メモリイメージに関連付けられた複数の頻度の高いソースシンボルを特定することと、
各ソースシンボルに対応するコードワードを割り当てることと
を行うように構成された論理をさらに含む、請求項19に記載のコンピュータプログラム。
【請求項２１】
前記仮想メモリイメージを構築するように構成された前記論理が、前記コンピューティングデバイスから情報を受信し、前記情報を相互参照してデータベース内の1つまたは複数のソフトウェア構成要素を識別するように構成された論理を含み、前記コンピュータプログラムが、サーバ上で動作する仮想デバイス上に前記仮想メモリイメージをロードし、実行するように構成された論理をさらに含む、請求項20に記載のコンピュータプログラム。
【請求項２２】
前記一意のコードブックが、エントロピー符号化アルゴリズムに従って前記メモリデータを符号化するように構成された、請求項19に記載のコンピュータプログラム。
【請求項２３】
前記エントロピー符号化アルゴリズムが、複数のプログラマブル係数を含む簡略化されたハフマン方式を含む、請求項22に記載のコンピュータプログラム。
【請求項２４】
前記圧縮統計データが、前記対応するコンピューティングデバイス内のエンコーダによって生成されたCビットデータを含む、請求項19に記載のコンピュータプログラム。
【請求項２５】
前記通信ネットワークを介して前記コンピューティングデバイスのうちの1つまたは複数から、前記対応するコンピューティングデバイスまたはユーザに関連付けられたデバイスメトリックを受信すること
を行うように構成された論理をさらに含み、
前記最適化されたコードブックが、前記受信された圧縮統計データおよび前記受信されたデバイスメトリックのうちの1つまたは複数に基づいて生成される、
請求項19に記載のコンピュータプログラム。
【請求項２６】
前記デバイスメトリックが、ハードウェアバージョン、ソフトウェアバージョン、オペレーティングシステムバージョン、プロセスタイムスタンプ、プロセス平均実行時間、およびCPU稼働率データのうちの1つまたは複数を含む、請求項25に記載のコンピュータプログラム。
【請求項２７】
前記コンピューティングデバイスがポータブル通信デバイスを含む、請求項19に記載のコンピュータプログラム。
【請求項２８】
通信ネットワークを介して複数のコンピューティングデバイスと通信しているサーバを備えるコンピュータシステムであって、前記サーバが、前記コンピューティングデバイスによって実行されるメモリデータの符号化を最適化するように構成されたエンコーダ最適化モジュールを備え、前記エンコーダ最適化モジュールが、
前記複数のコンピューティングデバイスの各々のための一意のコードブックを生成するように構成された論理であって、前記一意のコードブックが対応するコンピューティングデバイス内のメモリデータを符号化するために使用され、前記論理が、各コンピューティングデバイス上のアプリケーションおよび前記アプリケーションによって生成されたデータを分析して、前記アプリケーションおよび前記生成されたデータの中の複数のソースシンボルの頻度を判断すること、前記複数のソースシンボルの各々を対応するコードワードに割り当てること、ならびに特定のコンピューティングデバイスごとの前記コードワードの割当てを、前記特定のコンピューティングデバイスのための前記一意のコードブックに含めることによって、各一意のコードブックを生成する、論理と、
前記通信ネットワークを介して前記コンピューティングデバイスに前記一意のコードブックを供給するように構成された論理と、
前記通信ネットワークを介して前記コンピューティングデバイスのうちの1つまたは複数から圧縮統計データを受信するように構成された論理であって、前記圧縮統計データが対応する一意のコードブックごとの前記圧縮の有効性に関係する、論理と、
前記圧縮の有効性を含む前記受信された圧縮統計データに基づいて前記コンピューティングデバイスのうちの少なくとも1つのための最適化されたコードブックを生成するように構成された論理と、
前記通信ネットワークを介して前記コンピューティングデバイスのうちの1つまたは複数に前記最適化されたコードブックを供給するように構成された論理と
を含む、コンピュータシステム。
【請求項２９】
各一意のコードブックを生成するように構成された前記論理が、
前記コンピューティングデバイスの仮想メモリイメージを構築するように構成された論理と、
前記仮想メモリイメージに関連付けられた複数の頻度の高いソースシンボルを特定するように構成された論理と、
各ソースシンボルに対応するコードワードを割り当てるように構成された論理と
をさらに含む、請求項28に記載のコンピュータシステム。
【請求項３０】
前記仮想メモリイメージを構築するように構成された前記論理が、前記コンピューティングデバイスから情報を受信し、前記情報を相互参照してデータベース内の1つまたは複数のソフトウェア構成要素を識別するように構成された論理を含み、前記エンコーダ最適化モジュールが、サーバ上で動作する仮想デバイス上に前記仮想メモリイメージをロードし、実行するように構成された論理をさらに含む、請求項29に記載のコンピュータシステム。
【請求項３１】
前記一意のコードブックが、エントロピー符号化アルゴリズムに従って前記メモリデータを符号化するように構成された、請求項28に記載のコンピュータシステム。
【請求項３２】
前記エントロピー符号化アルゴリズムが、複数のプログラマブル係数を含む簡略化されたハフマン方式を含む、請求項31に記載のコンピュータシステム。
【請求項３３】
前記圧縮統計データが、前記対応するコンピューティングデバイス内のエンコーダによって生成されたCビットデータを含む、請求項28に記載のコンピュータシステム。
【請求項３４】
前記エンコーダ最適化モジュールが、
前記通信ネットワークを介して前記コンピューティングデバイスのうちの1つまたは複数から、前記対応するコンピューティングデバイスに関連付けられたデバイスメトリックを受信するように構成された論理
をさらに含み、
前記最適化されたコードブックが、前記受信された圧縮統計データおよび前記受信されたデバイスメトリックのうちの1つまたは複数に基づいて生成される、
請求項28に記載のコンピュータシステム。
【請求項３５】
前記デバイスメトリックが、ハードウェアバージョン、ソフトウェアバージョン、オペレーティングシステムバージョン、プロセスタイムスタンプ、プロセス平均実行時間、およびCPU稼働率データのうちの1つまたは複数を含む、請求項34に記載のコンピュータシステム。
【請求項３６】
前記コンピューティングデバイスがポータブル通信デバイスを含む、請求項28に記載のコンピュータシステム。
【国際調査報告】
2017502539.tif 000020