(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B1)
(11)【特許番号】6227199
(24)【登録日】2017年10月20日
(45)【発行日】2017年11月8日
(54)【発明の名称】デマンドページングのための効率的な解凍ローカリティシステム
(51)【国際特許分類】
G06F 12/08 20160101AFI20171030BHJP
G06F 12/04 20060101ALI20171030BHJP
【FI】
G06F12/08 525Z
G06F12/08 513
G06F12/04 530
【請求項の数】30
【全頁数】30
(21)【出願番号】特願2017-522666(P2017-522666)
(86)(22)【出願日】2015年9月3日
(86)【国際出願番号】US2015048315
(87)【国際公開番号】WO2016069109
(87)【国際公開日】20160506
【審査請求日】2017年7月6日
(31)【優先権主張番号】14/526,850
(32)【優先日】2014年10月29日
(33)【優先権主張国】US
【早期審査対象出願】
(73)【特許権者】
【識別番号】507364838
【氏名又は名称】クアルコム,インコーポレイテッド
(74)【代理人】
【識別番号】100108453
【弁理士】
【氏名又は名称】村山 靖彦
(74)【代理人】
【識別番号】100163522
【弁理士】
【氏名又は名称】黒田 晋平
(72)【発明者】
【氏名】アンドレス・アレハンドロ・オポータス・ヴァレンズエラ
(72)【発明者】
【氏名】リチャード・シニア
(72)【発明者】
【氏名】ラグヴィール・ラガヴェンドラ
(72)【発明者】
【氏名】ニエヤン・ゲン
(72)【発明者】
【氏名】グルヴィンダル・シン・チャブラ
(72)【発明者】
【氏名】リチャード・アラン・スチュアート
【審査官】
後藤 彰
(56)【参考文献】
【文献】
特開2010−277495(JP,A)
【文献】
特開2003−330770(JP,A)
【文献】
特開平6−149665(JP,A)
【文献】
米国特許第5864859(US,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 12/08
G06F 12/04
(57)【特許請求の範囲】
【請求項1】
コンピューティングデバイス上で圧縮ページの解凍を実行するための方法であって、前記方法が、
ページの複数のコード命令の第1のコード命令をメモリデバイスから取り出すためのメモリアクセス要求を受信するステップと、
前記メモリアクセス要求の前記受信に応じて、
前記第1のコード命令を含む前記圧縮ページの第1の解凍ブロックを決定するステップと、
前記圧縮ページの第2の解凍ブロックを例外コードで置換するステップと、
前記第1の解凍ブロックを解凍するステップと、
前記第1の解凍ブロックの前記解凍の完了に応じて、前記圧縮ページの解凍を終了するステップと
を含む、方法。
【請求項2】
前記圧縮ページの複数の解凍ブロックの解凍ブロック境界を決定するステップと、
前記複数の解凍ブロックの各々に関する前記解凍ブロック境界を示す、前記圧縮ページと関連付けられた解凍ブロック境界メタデータを生成するステップと
をさらに含む、請求項1に記載の方法。
【請求項3】
前記第1のコード命令を含む前記圧縮ページの第1の解凍ブロックを前記決定するステップが、
前記メモリアクセス要求内に含まれる前記第1のコード命令のロケーションを前記圧縮ページと関連付けられた前記解凍ブロック境界メタデータと比較するステップと、
前記メモリアクセス要求内に含まれる前記第1のコード命令の前記ロケーションが前記第1の解凍ブロックの前記解凍ブロック境界のうちの1つまたはそれらの間に位置すると決定するステップと
を含む、請求項2に記載の方法。
【請求項4】
前記第1の解凍ブロックに対する第3の解凍ブロックのローカリティに基づいて、解凍のために前記圧縮ページの前記第3の解凍ブロックを決定するステップをさらに含み、前記第1の解凍ブロックの前記解凍の完了に応じて、前記圧縮ページの前記解凍を前記終了するステップが、前記第1の解凍ブロックおよび前記第3の解凍ブロックの解凍の完了に応じて、前記圧縮ページの前記解凍を前記終了するステップを含む、請求項1に記載の方法。
【請求項5】
前記方法がさらに、
前記圧縮ページの解凍を終了した後に前記第1のコード命令を実行するステップと、
前記圧縮ページの解凍を終了した後に前記第2の解凍ブロックを解凍するステップと
をさらに含む、請求項1に記載の方法。
【請求項6】
前記圧縮ページの解凍を終了した後に前記第2の解凍ブロックを前記解凍するステップが、前記第1のコード命令を前記実行した後に前記第2の解凍ブロックを解凍するステップを含む、請求項5に記載の方法。
【請求項7】
前記圧縮ページの解凍を終了した後に前記第2の解凍ブロックを前記解凍するステップ、および前記圧縮ページの前記解凍を前記終了した後に前記第1のコード命令を前記実行するステップが、互いとタイムスライスされた、前記第1のコード命令を実行することと前記第2の解凍ブロックを解凍することとを含む、請求項5に記載の方法。
【請求項8】
第1のプロセッサコア上で前記第1のコード命令の実行をスケジュールするステップと、
第2のプロセッサコア上で前記第2の解凍ブロックの解凍をスケジュールするステップと、
前記第1のコード命令の実行と前記第2の解凍ブロックの解凍とを並行して実行するようにスケジュールするステップと
をさらに含む、請求項5に記載の方法。
【請求項9】
プロセッサと、
前記プロセッサに通信可能に接続され、コード命令を記憶するように構成されたメモリデバイスと、
前記プロセッサと前記メモリデバイスとに通信可能に接続され、
ページの複数のコード命令の第1のコード命令を前記メモリデバイスから取り出すためのメモリアクセス要求を受信することと、
前記メモリアクセス要求の前記受信に応じて、
メモリアクセス要求内で要求された前記第1のコード命令を含む圧縮ページの第1の解凍ブロックを決定することと、
前記圧縮ページの第2の解凍ブロックを例外コードで置換することと、
前記第1の解凍ブロックを解凍することと、
前記第1の解凍ブロックの前記解凍の完了に応じて、前記圧縮ページの解凍を終了することと
を含む動作を実行するように構成された解凍エンジンと
を含む、コンピューティングデバイス。
【請求項10】
前記プロセッサ、前記メモリデバイス、および前記解凍エンジンに通信可能に接続され、
前記圧縮ページの複数の解凍ブロックの解凍ブロック境界を決定することと、
前記複数の解凍ブロックの各々に関する前記解凍ブロック境界を示す、前記圧縮ページと関連付けられた解凍ブロック境界メタデータを生成することと
を含む動作を実行するように構成された圧縮エンジンをさらに備える、請求項9に記載のコンピューティングデバイス。
【請求項11】
前記解凍エンジンが、前記第1のコード命令を含む前記圧縮ページの第1の解凍ブロックを前記決定することが、
前記メモリアクセス要求内に含まれる前記第1のコード命令のロケーションを前記圧縮ページと関連付けられた前記解凍ブロック境界メタデータと比較することと、
前記メモリアクセス要求内に含まれる前記第1のコード命令の前記ロケーションが前記第1の解凍ブロックの前記解凍ブロック境界のうちの1つまたはそれらの間に位置すると決定することと
を含むような動作を実行するようにさらに構成される、請求項10に記載のコンピューティングデバイス。
【請求項12】
前記解凍エンジンが、前記第1の解凍ブロックに対する第3の解凍ブロックのローカリティに基づいて、解凍のために前記圧縮ページの前記第3の解凍ブロックを決定することを含む動作を実行するようにさらに構成され、前記第1の解凍ブロックの前記解凍の完了に応じて、前記圧縮ページの前記解凍を前記終了することが、前記第1の解凍ブロックおよび前記第3の解凍ブロックの解凍の完了に応じて、前記圧縮ページの前記解凍を前記終了することを含む、請求項9に記載のコンピューティングデバイス。
【請求項13】
前記プロセッサが、前記圧縮ページの前記解凍が前記終了した後に前記第1のコード命令を実行することを含む動作を実行するためのプロセッサ実行可能命令で構成され、
前記解凍エンジンが、前記圧縮ページの解凍を終了した後に前記第2の解凍ブロックを解凍することをさらに含む動作を実行するように構成される
請求項9に記載のコンピューティングデバイス。
【請求項14】
前記解凍エンジンが、前記圧縮ページの解凍を終了した後に前記第2の解凍ブロックを前記解凍することが、前記第1のコード命令を実行した後に前記第2の解凍ブロックを解凍することを含むような動作を実行するように構成される、請求項13に記載のコンピューティングデバイス。
【請求項15】
前記解凍エンジンが、前記圧縮ページの解凍を終了した後に前記第2の解凍ブロックを前記解凍すること、および前記圧縮ページの解凍を終了した後に前記第1のコード命令を前記実行することが、互いとタイムスライスされた、前記第1のコード命令を実行することと、前記第2の解凍ブロックを解凍することとを含むような動作を実行するように構成される、請求項13に記載のコンピューティングデバイス。
【請求項16】
前記解凍エンジンが、
第1のプロセッサコア上で前記第1のコード命令の実行をスケジュールすることと、
第2のプロセッサコア上で前記第2の解凍ブロックの解凍をスケジュールすることと、
前記第1のコード命令の実行と前記第2の解凍ブロックの解凍とを並行して実行するようにスケジュールすることと
をさらに含む動作を実行するように構成される、請求項13に記載のコンピューティングデバイス。
【請求項17】
プロセッサ実行可能ソフトウェア命令を記憶した非一時的プロセッサ可読記憶媒体であって、前記プロセッサ実行可能ソフトウェア命令が、プロセッサに、
ページの複数のコード命令の第1のコード命令をメモリデバイスから取り出すためのメモリアクセス要求を受信することと、
前記メモリアクセス要求の前記受信に応じて、
前記第1のコード命令を含む圧縮ページの第1の解凍ブロックを決定することと、
前記圧縮ページの第2の解凍ブロックを例外コードで置換することと、
前記第1の解凍ブロックを解凍することと、
前記第1の解凍ブロックの前記解凍の完了に応じて、前記圧縮ページの解凍を終了することと
を含む動作を実行させる、非一時的プロセッサ可読記憶媒体。
【請求項18】
前記記憶されたプロセッサ実行可能ソフトウェア命令が、前記プロセッサに、
前記圧縮ページの複数の解凍ブロックの解凍ブロック境界を決定することと、
前記複数の解凍ブロックの各々に関する前記解凍ブロック境界を示す、前記圧縮ページと関連付けられた解凍ブロック境界メタデータを生成することと
をさらに含む動作を実行させるように構成される、請求項17に記載の非一時的プロセッサ可読記憶媒体。
【請求項19】
前記記憶されたプロセッサ実行可能ソフトウェア命令が、前記プロセッサに、前記第1のコード命令を含む前記圧縮ページの第1の解凍ブロックを前記決定することが、
前記メモリアクセス要求内に含まれる前記第1のコード命令のロケーションを前記圧縮ページと関連付けられた前記解凍ブロック境界メタデータと比較することと、
前記メモリアクセス要求内に含まれる前記第1のコード命令の前記ロケーションが前記第1の解凍ブロックの前記解凍ブロック境界のうちの1つまたはそれらの間に位置すると決定することと
を含むような動作を実行させるように構成される、請求項18に記載の非一時的プロセッサ可読記憶媒体。
【請求項20】
前記記憶されたプロセッサ実行可能ソフトウェア命令が、前記プロセッサに、前記第1の解凍ブロックの前記解凍の完了に応じて、前記圧縮ページの前記解凍を前記終了することが、前記第1の解凍ブロックおよび第3の解凍ブロックの解凍の完了に応じて、前記圧縮ページの前記解凍を前記終了することを含むように、前記第1の解凍ブロックに対する前記第3の解凍ブロックのローカリティに基づいて、解凍のために前記圧縮ページの前記第3の解凍ブロックを決定することをさらに含む動作を実行させるように構成される、請求項17に記載の非一時的プロセッサ可読記憶媒体。
【請求項21】
前記記憶されたプロセッサ実行可能命令が、前記プロセッサに、
前記圧縮ページの解凍を終了した後に前記第1のコード命令を実行することと、
前記圧縮ページの解凍を終了した後に前記第2の解凍ブロックを解凍することと
をさらに含む動作を実行させるように構成される、請求項17に記載の非一時的プロセッサ可読記憶媒体。
【請求項22】
前記記憶されたプロセッサ実行可能ソフトウェア命令が、前記プロセッサに、
前記圧縮ページの解凍を終了した後に前記第2の解凍ブロックを前記解凍することが、前記第1のコード命令を前記実行した後に前記第2の解凍ブロックを解凍することを含むか、または
前記圧縮ページの解凍を終了した後に前記第2の解凍ブロックを前記解凍すること、および前記圧縮ページの前記解凍を前記終了した後に前記第1のコード命令を前記実行することが、互いとタイムスライスされた、前記第1のコード命令を実行することと前記第2の解凍ブロックを解凍することとを含むような動作を実行させるように構成される、請求項21に記載の非一時的プロセッサ可読記憶媒体。
【請求項23】
前記記憶されたプロセッサ実行可能ソフトウェア命令が、前記プロセッサに、
第1のプロセッサコア上で前記第1のコード命令の実行をスケジュールすることと、
第2のプロセッサコア上で前記第2の解凍ブロックの解凍をスケジュールすることと、
前記第1のコード命令の実行と前記第2の解凍ブロックの解凍とを並行して実行するようにスケジュールすることと
をさらに含む動作を実行させるように構成される、請求項21に記載の非一時的プロセッサ可読記憶媒体。
【請求項24】
ページの複数のコード命令の第1のコード命令をメモリデバイスから取り出すためのメモリアクセス要求を受信するための手段と、
前記メモリアクセス要求の前記受信に応じて、前記第1のコード命令を含む圧縮ページの第1の解凍ブロックを決定するための手段と、
前記メモリアクセス要求の前記受信に応じて、前記圧縮ページの第2の解凍ブロックを例外コードに置換するための手段と、
前記メモリアクセス要求の前記受信に応じて、前記第1の解凍ブロックを解凍するための手段と、
前記第1の解凍ブロックの前記解凍の完了に応じて、前記圧縮ページの解凍を終了するための手段と
を含む、コンピューティングデバイス。
【請求項25】
前記圧縮ページの複数の解凍ブロックの解凍ブロック境界を決定するための手段と、
前記複数の解凍ブロックの各々に関する前記解凍ブロック境界を示す、前記圧縮ページと関連付けられた解凍ブロック境界メタデータを生成するための手段と
をさらに含む、請求項24に記載のコンピューティングデバイス。
【請求項26】
前記メモリアクセス要求を受信することに応じて前記第1のコード命令を含む前記圧縮ページの第1の解凍ブロックを前記決定するための手段が、
前記メモリアクセス要求内に含まれる前記第1のコード命令のロケーションを前記圧縮ページと関連付けられた前記解凍ブロック境界メタデータと比較するための手段と、
前記メモリアクセス要求内に含まれる前記第1のコード命令の前記ロケーションが前記第1の解凍ブロックの前記解凍ブロック境界のうちの1つまたはそれらの間に位置すると決定するための手段と
を含む、請求項25に記載のコンピューティングデバイス。
【請求項27】
前記第1の解凍ブロックに対する第3の解凍ブロックのローカリティに基づいて、解凍のために前記圧縮ページの前記第3の解凍ブロックを決定するための手段をさらに含み、前記第1の解凍ブロックの前記解凍の完了に応じて、前記圧縮ページの解凍を前記終了するための手段が、前記第1の解凍ブロックおよび前記第3の解凍ブロックの解凍の完了に応じて、前記圧縮ページの解凍を終了するための手段を含む、請求項24に記載のコンピューティングデバイス。
【請求項28】
前記コンピューティングデバイスが、
前記圧縮ページの解凍を終了した後に前記第1のコード命令を実行するための手段と、
前記圧縮ページの解凍を終了した後に前記第2の解凍ブロックを解凍するための手段と
をさらに含む、請求項24に記載のコンピューティングデバイス。
【請求項29】
前記圧縮ページの解凍を終了した後に前記第2の解凍ブロックを前記解凍するための手段が、前記第1のコード命令を前記実行した後に前記第2の解凍ブロックを解凍するための手段を含むか、または
前記圧縮ページの解凍を終了した後に前記第2の解凍ブロックを前記解凍するための手段、および前記圧縮ページの前記解凍を前記終了した後に前記第1のコード命令を前記実行するための手段が、互いとタイムスライスされた、前記第1のコード命令を実行することと前記第2の解凍ブロックを解凍することのための手段とを含む
請求項28に記載のコンピューティングデバイス。
【請求項30】
第1のプロセッサコア上で前記第1のコード命令の実行をスケジュールするための手段と、
第2のプロセッサコア上で前記第2の解凍ブロックの解凍をスケジュールするための手段と、
前記第1のコード命令の実行と前記第2の解凍ブロックの解凍とを並行して実行するようにスケジュールするための手段と
をさらに含む、請求項28に記載のコンピューティングデバイス。
【発明の詳細な説明】
【背景技術】
【0001】
コンピュータオペレーティングシステムにおいて、(先行ページングと対照的に)デマンドページングは仮想メモリ管理の方法である。デマンドページングを使用するシステムにおいて、オペレーティングシステムは、実行プロセスがページに対するアクセスを試み、そのページがすでにメモリ内にない場合(すなわち、ページフォールト/紛失が発生する場合)のみ、ディスクページを物理メモリ内に複写する。プロセスによって要求されるページは、2次ストレージから取り出されて、メインメモリにロードされる。実行プロセスによって要求されるページをロードすることによって、より少ない情報が2次ストレージからアクセスされ、より少ない情報がメインメモリ内に持ち込まれるため、プログラム起動時により少ないローディングレイテンシが生じる。さらに、メインメモリは2次メモリと比較して高価であるため、この技法は、必要とされるメインメモリの量を削減し、たとえば、スマートフォンの構成要素コストを低減する。
【0002】
2次メモリ内に記憶されたページは、あるサイズのものであってよく、2次メモリからページを要求することは、あるサイズのページをメインメモリに送信することを意味する。この転送は、データバス帯域幅および電力などのリソースの使用を必要とする。そのようなリソースの使用を低減するために、全圧縮ブロックを含むページは、メインメモリに複写されるのに先立って圧縮され得る。圧縮は、ページのサイズを低減し、したがって、圧縮されたページをメモリにロードするために必要とされるリソースを低減する。
【0003】
しかしながら、メインメモリにおいて受信された各ページの解凍時間は性能ボトルネックを生み出す。ページが解凍され得、ページ内の命令またはデータが使用され得るよりも早くページはメインメモリによって受信され得る。解凍作業のいくつかは、使用されないことになるコードまたはデータを含むページに関して行われ、他の命令およびデータの使用をさらに遅延させる。
【0004】
さらに、効率的な圧縮アルゴリズムは、残りのデータをより効率的に圧縮および解凍するために、前に圧縮されたデータのパターンが使用されることを可能にするルックバックを採用することが多い。しかしながら、圧縮アルゴリズムは、データのブロックを単独で圧縮する。ブロックサイズが小さくなるにつれて、ルックバックの機会も低減し、したがって、圧縮比が低下する。
【発明の概要】
【課題を解決するための手段】
【0005】
様々な態様の方法および装置は、コンピューティングデバイス上で圧縮ページの解凍を実行するための回路および方法を提供する。態様方法は、メモリアクセス要求内で要求されるコード命令を含む圧縮ページの第1の解凍ブロックを決定するステップと、圧縮ページの第2の解凍ブロックを例外コードで置換するステップと、第1の解凍ブロックを解凍するステップと、第1の解凍ブロックの解凍の完了に応じて、圧縮ページの解凍を終了するステップとを含み得る。
【0006】
一態様方法は、圧縮ページの複数の解凍ブロックの解凍ブロック境界を決定するステップと、複数の解凍ブロックの各々に関する解凍ブロック境界を示す、圧縮ページと関連付けられた解凍ブロック境界メタデータを生成するステップとをさらに含み得る。
【0007】
一態様では、メモリアクセス要求内で要求されるコード命令を含む圧縮ページの第1の解凍ブロックを決定するステップは、メモリアクセス要求内に含まれるコード命令のロケーションをその圧縮ページと関連付けられた解凍ブロック境界メタデータと比較するステップと、メモリアクセス要求内に含まれるコード命令のロケーションが第1の解凍ブロックの解凍ブロック境界のうちの1つまたはその間に位置すると決定するステップとを含み得る。
【0008】
一態様方法は、第1の解凍ブロックに対する第3の解凍ブロックのローカリティに基づいて、解凍のために圧縮ページの第3の解凍ブロックを決定するステップをさらに含むことができ、第1の解凍ブロックの解凍の完了に応じて、圧縮ページの解凍を終了するステップは、第1の解凍ブロックおよび第3の解凍ブロックの解凍の完了に応じて、圧縮ページの解凍を終了するステップを含み得る。
【0009】
一態様方法は、圧縮ページの解凍を終了した後にコード命令を実行するステップと、圧縮ページの解凍を終了した後に第2の解凍ブロックを解凍するステップとをさらに含み得る。
【0010】
一態様では、圧縮ページの解凍を終了した後に第2の解凍ブロックを解凍するステップは、コード命令を実行した後に第2の解凍ブロックを解凍するステップを含み得る。
【0011】
一態様では、圧縮ページの解凍を終了した後に第2の解凍ブロックを解凍するステップ、および圧縮ページの解凍を終了した後にコード命令を実行するステップは、互いとタイムスライスされた、コード命令を実行するステップと第2の解凍ブロックを解凍するステップとを含み得る。
【0012】
一態様方法は、第1のプロセッサコア上でコード命令の実行をスケジュールするステップと、第2のプロセッサコア上で第2の解凍ブロックの解凍をスケジュールするステップと、コード命令を実行すること、および第2の解凍ブロックを解凍することとを並行して実行するようにスケジュールするステップとをさらに含み得る。
【0013】
一態様は、プロセッサと、プロセッサに通信可能に接続され、コード命令を記憶するように構成されたメモリデバイスと、プロセッサとメモリデバイスとに通信可能に接続され、上で説明した態様方法のうちの1つまたは複数の動作を実行するように構成された解凍エンジンとを有するコンピューティングデバイスを含む。
【0014】
一態様は、上記で説明した態様方法のうちの1つまたは複数の動作をプロセッサに実行させるプロセッサ実行可能ソフトウェア命令を記憶した非一時的プロセッサ可読媒体を含む。
【0015】
一態様は、上記で説明した態様方法のうちの1つまたは複数の機能を実行するための手段を有するコンピューティングデバイスを含む。
【0016】
本明細書に組み込まれ、本明細書の一部を構成する添付図面は、本発明の例の態様を示し、上で与えた全般的説明および下で与える詳細な説明と一緒に、本発明の特徴を説明するように働く。
【図面の簡単な説明】
【0017】
【
図1】一態様を実装するのに適したコンピューティングデバイスを示す構成要素ブロック図である。
【
図2】一態様を実装するのに適した例示的なマルチコアプロセッサを示す構成要素ブロック図である。
【
図3】一態様を実装するのに適した例示的なシステムオンチップ(SoC)を示す構成要素ブロック図である。
【
図4】一態様による、解凍ブロック境界メタデータを実行し、それを含む圧縮メモリコンテンツの一部を示す図である。
【
図5】一態様による、非圧縮状態、圧縮状態、解凍状態のメモリコンテンツの一部を示す図である。
【
図6A】一態様による、解凍ブロック境界メタデータを使用した圧縮メモリコンテンツの一部に対する解凍計画を示す図である。
【
図6B】一態様による、解凍ブロック境界メタデータを使用した圧縮メモリコンテンツの一部に対する解凍計画を示す図である。
【
図6C】一態様による、解凍ブロック境界メタデータを使用した圧縮メモリコンテンツの一部に対する解凍計画を示す図である。
【
図6D】一態様による、解凍ブロック境界メタデータを使用した圧縮メモリコンテンツの一部に対する解凍計画を示す図である。
【
図7A】一態様による、圧縮メモリコンテンツの解凍のハードウェア処理を示す図である。
【
図7B】一態様による、圧縮メモリコンテンツの解凍のハードウェア処理を示す図である。
【
図7C】一態様による、圧縮メモリコンテンツの解凍のハードウェア処理を示す図である。
【
図7D】一態様による、圧縮メモリコンテンツの解凍のハードウェア処理を示す図である。
【
図8】解凍ブロック境界メタデータを使用して圧縮メモリコンテンツの解凍を実装するためのある態様方法を示すプロセスフロー図である。
【
図9】様々な態様とともに使用するのに適した例示的なモバイルコンピューティングデバイスを示す構成要素ブロック図である。
【
図10】様々な態様とともに使用するのに適した例示的なモバイルコンピューティングデバイスを示す構成要素ブロック図である。
【
図11】様々な態様とともに使用するのに適した例示的なサーバを示す構成要素ブロック図である。
【発明を実施するための形態】
【0018】
添付の図面を参照して、様々な態様について詳細に説明する。可能な限り、同じまたは同様の部分を指すために図面全体を通じて同じ参照番号が使用される。具体的な例および実装形態への言及は説明のためであり、本発明の範囲または特許請求の範囲を限定するものではない。
【0019】
「コンピューティングデバイス」および「モバイルコンピューティングデバイス」という用語は、セルラー電話、スマートフォン、パーソナルまたはモバイルマルチメディアプレーヤ、携帯情報端末(PDA)、ラップトップコンピュータ、タブレットコンピュータ、スマートブック、ウルトラブック、パームトップコンピュータ、ワイヤレス電子メール受信機、マルチメディアインターネット対応セルラー電話、ワイヤレスゲームコントローラ、ならびに、メモリおよびマルチコアプログラマブルプロセッサを含む同様のパーソナル電子デバイスのうちのいずれか1つまたはすべてを指すために本明細書で互換的に使用される。様々な態様は、限られたメモリおよびバッテリーリソースを有するスマートフォンなどのモバイルコンピューティングデバイスに特に有用であるが、本態様は一般に、複数のメモリデバイスおよび限られた電力バジェットを実装する任意の電子デバイスにおいて有用であり、この場合、プロセッサの電力消費を低減することは、モバイルコンピューティングデバイスのバッテリー動作時間を延ばすことができる。
【0020】
「システムオンチップ」(SoC)という用語は、一般に、限定はしないが、ハードウェアコア、メモリ、および通信インターフェースを含む相互接続された電子回路のセットを指すために本明細書で使用される。ハードウェアコアは、汎用プロセッサ、中央処理ユニット(CPU)、デジタル信号プロセッサ(DSP)、グラフィックス処理ユニット(GPU)、加速処理ユニット(APU)、補助プロセッサ、シングルコアプロセッサ、およびマルチコアプロセッサなどの様々な異なるタイプのプロセッサを含み得る。ハードウェアコアは、フィールドプログラマブルゲートアレイ(FPGA)、特定用途向け集積回路(ASIC)、他のプログラマブル論理デバイス、個別ゲート論理、トランジスタ論理、性能監視ハードウェア、ウォッチドッグハードウェア、および時間基準などの他のハードウェアおよびハードウェアの組合せをさらに具現化し得る。集積回路は、集積回路の構成要素がシリコンなどの単体の半導体材料上に存在するように構成され得る。
【0021】
態様は、解凍ブロックサイズからページサイズを分離させ、圧縮ページ内の様々な命令のロケーションを示すことによって、より小さい解凍ブロックを生じさせ、それらの表示に基づいて、ページの解凍を終了するための例外を生成することによって命令を含むページの部分を解凍し、後の時点において、ページの残余を解凍するための方法およびそのような方法を実装するコンピューティングデバイスを含む。
【0022】
ストレージメモリ内に記憶された命令は、ページ内で一緒にグループ化され、実行のためにメインメモリに転送され得る。上で論じたように、命令を含むページが圧縮され得る。しかしながら、ページを圧縮するとき、ページのコンテンツはより小さい個々の解凍ブロックとして指定され得る。ページのコンテンツを圧縮する結果として、ページは、各命令を個々に圧縮するか、またはより小さいグループに圧縮する場合よりも少量のデータを含み、圧縮されたページになる。命令を含むページの圧縮の一部として、ページ内の解凍ブロックのロケーションを示すためのメタデータを生成することができる。メタデータを使用して、圧縮ページ内のより小さい解凍ブロックの解凍をどこで終了するかを示すことを含めて、圧縮ページ内のより小さい解凍ブロックを示すための符号化ボーダーを定義することができる。メタデータは、圧縮ページの解凍中にアクセス可能なテーブル内に記憶され得る。異なる処理デバイスのアーキテクチャは、均一長の命令だけを可能にすることができるか、または可変長の命令も可能にし得る。均一の命令の場合、解凍ブロック内に1つまたは複数の全命令を包含する任意のボーダーを作成するためにメタデータが生成され得る。可変長の命令の場合、可変長の命令のサイズに応じて、1つまたは複数の可変長の命令を包含するようにメタデータが生成され得る。
【0023】
メインメモリ内で受け取られる、複数の独立解凍ブロックからなる圧縮ページは、そのコンテンツ、特に命令がアクセスされ、実行され得るように解凍され得る。圧縮ページの解凍は、圧縮ページの1つまたは複数の解凍ブロックが解凍されるときに生成される例外によって中断され得る。例外は、解凍プロセスが、解凍ブロックまたはメタデータによって示されるボーダーのうちの1つの終端に達するまで、圧縮ページの解凍に基づいて生成され得る。解凍ブロックは、実行のために指定された圧縮ページ内の命令と関連付けられ得る。この例外は、例外をトリガし、ページの解凍を終了させることになる命令またはデータで圧縮ページの残余をポピュレートすることによってトリガされ得る。ページの解凍部分が次いで実行され得る。例外は、ページの残余が、ページの解凍部分内の命令の実行の後など、後の時点で解凍されるのをさらにトリガすることができる。一態様では、例外は、プロセッサコア上の解凍命令の実行とタイムスライスされた方法で圧縮ページの残余が解凍されることをトリガし得る。一態様では、解凍命令または圧縮ページの残余のいずれかが、もう一方の実行または解凍と平行して、別のプロセッサコア上で実行または解凍されるように移動され得る。
【0024】
ページの解凍を完了する前に圧縮ページから命令を実行することが可能であることは、全ページが解凍されるのを待つ必要なしに、プログラムの進行を可能にする。圧縮ページの残余を解凍するために必要とされる時間は、プログラムの十分な進行後など、後の時間にシフトされ、プログラムを進行させるための命令を実行する際の遅延を低減することができる。一態様では、同様の遅延低減は、命令の実行を圧縮ページの残余の解凍とタイムスライスすること、または並列して命令を実行し、ページの残余を解凍することによって達成され得る。
【0025】
態様は、コード命令の複数の解凍ブロックを一緒に圧縮し、それによって、複数の解凍ブロックにわたってルックバック機会を可能にするための方法、おびそのような方法を実装するコンピューティングデバイスを含む。複数の解凍ブロックの解凍は、解凍ブロックのグループのいずれかの端から解凍することによってルックバック機会によって提供される圧縮の効率を利用することができる。
【0026】
上記のように、ページを圧縮する際、その解凍ブロック境界に基づいて、ページ内により小さい解凍ブロックが個々に指定され得る。ページ内の指定された解凍ブロックのコンテンツは、個々にではなく、一緒に圧縮され得るため、この圧縮は、複数の解凍ブロックにわたってルックバックを実装することができる。ページのコンテンツはページ境界に基づいて一緒に圧縮され得るが、解凍ブロックは、生成されたメタデータに従って、その解凍ブロック境界を維持することができる。
【0027】
メインメモリ内で受信される圧縮ページは、命令など、そのコンテンツがアクセスおよび実行され得るように解凍され得る。圧縮ページの解凍は、ルックバックを使用してページを圧縮することによって提供される効率を利用するために、圧縮ページのいずれかの端において開始することができる。たとえば、圧縮ページの中央からの解凍ブロックがページの他の解凍ブロックを解凍せずに解凍された場合、解凍は解凍ブロックのコンテンツを圧縮するために使用されたパターンに気づかない場合がある。この結果、前に使用されたパターンに整合させることによってではなく、標準解凍によって解凍ブロックを解凍しなければならなくなる。圧縮ページの解凍は、圧縮ページの1つまたは複数の解凍ブロックが解凍されるときに生成される例外によって中断され得る。上で説明したように、例外は、解凍ブロックまたはメタデータによって示されるボーダーのうちの1つの終端に達するまで圧縮ページの解凍に基づいて生成され得る。解凍ブロックは、実行のために指定された圧縮ページ内の命令と関連付けられ得る。この例外は、例外をトリガし、ページの解凍を終了させることになる命令で圧縮ページの残余をポピュレートすることによってトリガされ得る。ページの解凍部分が次いで実行され得る。例外は、ページの残余の解凍が、ページの解凍部分内の命令の実行の後など、後の時点で解凍されるのをさらにトリガすることができる。
【0028】
ページ内の複数の解凍ブロックを一緒に圧縮することが可能であることは、複数の圧縮ブロックにわたるルックバックを可能にし、解凍ブロックを個々に圧縮することと比較して、効率および圧縮比を改善する。一緒に圧縮された複数の圧縮ブロックを含む圧縮ページを解凍することは、ページの解凍をいずれかの端から開始することを可能にすることによって、効率を改善し得る。圧縮ページの逐次解凍は、解凍が、複数の圧縮ブロックを解凍するために圧縮ルックバックにおいて使用されるパターンを見出すことを可能にする。
【0029】
説明しやすいように、様々な態様は、4Kbページ、および1Kb解凍ブロックなど、あるサイズの点で説明される場合があるが、これらの態様は任意のサイズのメモリコンテンツに関して使用され得る。さらに、ページという用語は、メモリのある例示的な部分を意味し、態様に従って、ブロック、チャンク、ラインなど、メモリの部分を示す部分を示す多くの他の用語が使用され得る。
【0030】
図1は、様々な態様とともに使用するのに適した、リモートコンピューティングデバイス50と通信しているコンピューティングデバイス10を含むシステムを示す。コンピューティングデバイス10は、プロセッサ14、メモリ16、通信インターフェース18、およびストレージメモリインターフェース20を含むSoC12を含むことができる。コンピューティングデバイス10は、ワイヤードモデムまたはワイヤレスモデムなどの通信構成要素22、ストレージメモリ24、ワイヤレスネットワーク30へのワイヤレス接続32を確立するためのアンテナ26、および/またはインターネット40へのワイヤード接続44に接続するためのネットワークインターフェース28をさらに含み得る。プロセッサ14は、様々なハードウェアコアのいずれか、ならびにいくつかのプロセッサコアを含み得る。SoC12は、1つまたは複数のプロセッサ14を含むことができる。コンピューティングデバイス10は、2つ以上のSoC12を含み、それによって、プロセッサ14およびプロセッサコアの数を増加させることができる。コンピューティングデバイス10はまた、SoC12と関連付けられていないプロセッサ14を含み得る。個々のプロセッサ14は、
図2を参照しながら以下で説明するようなマルチコアプロセッサであり得る。プロセッサ14はそれぞれ、コンピューティングデバイス10の他のプロセッサ14と同じであってもよく、またはそれらとは異なっていてもよい特定の目的のために構成され得る。同じまたは異なる構成のプロセッサ14およびプロセッサコアのうちの1つまたは複数は、一緒にグループ化されてもよい。
【0031】
SoC12のメモリ16は、プロセッサ14によるアクセスのためにデータおよびプロセッサ実行可能コードを記憶するように構成された、揮発性または不揮発性のメモリとすることができる。一態様では、メモリ16は、プロセッサ14のうちの1つまたは複数によるアクセスのための圧縮または解凍されたプロセッサ実行可能コード命令などのデータを少なくとも一時的に記憶するように構成され得る。一態様では、メモリ16は、本明細書でさらに説明するように、解凍ブロック境界メタデータなど、圧縮メモリコンテンツに関する情報を記憶するように構成され得る。
【0032】
コンピューティングデバイス10および/またはSoC12は、様々な目的のために構成された1つまたは複数のメモリ16を含むことができる。一態様では、1つまたは複数のメモリ16は、ランダムアクセスメモリ(RAM)もしくはメインメモリ、またはキャッシュメモリなど、揮発性メモリを含み得る。これらのメモリ16は、不揮発性メモリから要求され、様々な要因に基づいて、将来のアクセスを予期して不揮発性メモリからメモリ16にロードされた、限られた量のデータおよび/またはプロセッサ実行可能コード命令、および/あるいはプロセッサ14によって作成され、不揮発性メモリ内に記憶されずに、将来の迅速なアクセスのために一時的に記憶された中間処理データおよび/またはプロセッサ実行可能コード命令を一時的に保持するように構成され得る。
【0033】
通信インターフェース18、通信構成要素22、アンテナ26、および/またはネットワークインターフェース28は、コンピューティングデバイス10がワイヤレス接続32を介してワイヤレスネットワーク30上でおよび/またはワイヤードネットワーク44上でリモートコンピューティングデバイス50と通信することが可能になるように、調和して動作し得る。ワイヤレスネットワーク30は、コンピューティングデバイス10にリモートコンピューティングデバイス50とデータを交換する場合の手段であるインターネット40への接続を提供するために、たとえば、ワイヤレス通信に使用される無線周波数スペクトルを含む様々なワイヤレス通信技術を使用して実装され得る。
【0034】
ストレージメモリインターフェース20およびストレージメモリ24は、コンピューティングデバイス10が不揮発性記憶媒体上にデータを記憶することが可能になるように、調和して動作し得る。ストレージメモリ24は、ストレージメモリ24がプロセッサ14のうちの1つまたは複数によってアクセスするための圧縮および解凍されたプロセッサ実行可能コード命令、および解凍ブロック境界メタデータを記憶することができるメモリ16の一態様とほとんど同じに構成され得る。不揮発性であるストレージメモリ24は、コンピューティングデバイス10の電源が切断された後でも情報を保持し得る。電源が再び投入され、コンピューティングデバイス10が再起動すると、コンピューティングデバイス10がストレージメモリ24上に記憶された情報を利用できるようになる。ストレージメモリインターフェース20は、ストレージデバイス24へのアクセスを制御し、プロセッサ14がストレージメモリ24からデータを読み取り、ストレージメモリ24にデータを書き込むことを可能にすることができる。
【0035】
コンピューティングデバイス10の構成要素のいくつかまたはすべては、依然として必要な機能を果たしながら、別様に配置および/または組み合わされ得る。その上、コンピューティングデバイス10は、構成要素の各々の1つに限定されなくてもよく、各構成要素の複数のインスタンスは、コンピューティングデバイス10の様々な構成に含まれ得る。
【0036】
図2は、一態様を実装するのに適したマルチコアプロセッサ14を示す。マルチコアプロセッサ14は、複数の同種または異種のプロセッサコア200、201、202、203を有し得る。単一のプロセッサ14のプロセッサコア200、201、202、203が同じ目的のために構成され、同じまたは同様の性能特性を有し得るという点で、プロセッサコア200、201、202、203は同種であり得る。たとえば、プロセッサ14は汎用プロセッサであってもよく、プロセッサコア200、201、202、203は同種の汎用プロセッサコアであってもよい。代替的に、プロセッサ14はグラフィックス処理ユニットまたはデジタル信号プロセッサであってもよく、プロセッサコア200、201、202、203はそれぞれ、同種のグラフィックスプロセッサコアまたはデジタル信号プロセッサコアであってもよい。参照しやすいように、「プロセッサ」および「プロセッサコア」という用語は、本明細書で交換可能に使用され得る。
【0037】
単一のプロセッサ14のプロセッサコア200、201、202、203が異なる目的のために構成され、および/または異なる性能特性を有し得るという点で、プロセッサコア200、201、202、203は異種であり得る。そのような異種のプロセッサコアの例は、低速で低電力のプロセッサコアがより強力で電力を大量に消費するプロセッサコアと結合され得る「big.LITTLE」アーキテクチャとして知られているものを含み得る。
【0038】
図2に示す例では、マルチコアプロセッサ14は、4つのプロセッサコア200、201、202、203(すなわち、プロセッサコア0、プロセッサコア1、プロセッサコア2、およびプロセッサコア3)を含む。説明を容易にするために、本明細書の例は、
図2に示す4つのプロセッサコア200、201、202、203を参照し得る。しかしながら、
図2に示し、本明細書で説明する4つのプロセッサコア200、201、202、203は単に一例として提供され、決して様々な態様を4コアプロセッサシステムに限定するものではない。コンピューティングデバイス10、SoC12、またはマルチコアプロセッサ14は、図示し本明細書で説明する4つのプロセッサコア200、201、202、203よりも少ないまたは多いプロセッサコアを個々にまたは組合せで含み得る。
【0039】
図3は、キャッシュメモリコントローラ300と、キャッシュメモリ302と、メインメモリコントローラ304と、メインメモリ306と、圧縮エンジン310と、解凍エンジン312と、上で説明したSoC12の構成要素など、他の構成要素とを含む例示的なSoC12を示す。SoCは、ストレージメモリコントローラ308およびストレージメモリ24を含むか、またはそれらに通信可能に接続されることも可能である。キャッシュメモリ302、メインメモリ306、およびストレージメモリ24の各々は、データおよび/またはコード命令など、圧縮および/解凍メモリコンテンツを記憶するように構成され得る。キャッシュメモリ302、メインメモリ306、およびストレージメモリ24は、記憶された圧縮メモリコンテンツに関する解凍ブロック境界メタデータを記憶することもできる。解凍ブロック境界メタデータは、本明細書でさらに説明するように、圧縮メモリコンテンツの1つまたは複数の全コード命令を含む解凍ブロックの開始および/または終了を示すことができる。
【0040】
キャッシュメモリ302は、メインメモリ306またはストレージメモリ24にアクセスするときよりも迅速にアクセスするために、データおよびコード命令を一時的に記憶するように構成され得る。キャッシュメモリ302は、単一のプロセッサ14が使用するための専用とされるか、または複数のプロセッサ14および/またはSoC12のサブシステム(図示せず)間で共有されてもよい。一態様では、キャッシュメモリ302は、プロセッサ14の一部であってもよく、単一のプロセッサコアが使用するための専用とされるか、またはプロセッサ14の複数のプロセッサコア間で共有されてもよい。キャッシュメモリコントローラ300は、SoC12の様々なプロセッサ14およびサブシステム(図示せず)によるキャッシュメモリ302へのアクセスを管理し得る。キャッシュメモリコントローラ300は、プロセッサ14によってキャッシュメモリ302から要求されるが、キャッシュメモリ302内には見出されず、キャッシュ紛失をもたらし得るデータを取り出すために、キャッシュメモリコントローラ300からメインメモリ306およびストレージメモリ24にアクセスするためのメモリアクセス要求を管理することもできる。
【0041】
メインメモリ306は、ストレージメモリ24にアクセスするときよりも迅速にアクセスするために、データおよびコード命令を一時的に記憶するように構成され得る。メインメモリ306は、1つまたは複数のSoC12のプロセッサ14および/またはSoC12のサブシステム(図示せず)によるアクセスのために利用可能であり得る。メインメモリコントローラ304は、様々なプロセッサ14、ならびにSoC12およびコンピューティングデバイスのサブシステム(図示せず)によるメインメモリ306へのアクセスを管理することができる。メインメモリコントローラ304は、プロセッサ14によってメインメモリ306からまたはキャッシュメモリコントローラ300から要求されるが、メインメモリ306内に見出されず、メインメモリ紛失をもたらし得るデータを取り出すために、メインメモリコントローラ304がストレージメモリ24にアクセスするためのメモリアクセス要求を管理することもできる。
【0042】
ストレージメモリ24は、コンピューティングデバイスが電源投入されていないとき、記憶されたデータおよびコード命令を保持するためのデータおよびコード命令を持続的に記憶するように構成され得る。ストレージメモリ24は、キャッシュメモリ302およびメインメモリ306よりも多くの量のデータおよびコード命令を記憶し、プロセッサ14またはSoC12のサブシステム(図示せず)によって使用されていないか、または近未来に使用されることが予測されていないデータおよびコード命令を記憶するように構成され得る。ストレージメモリ24は、1つまたは複数のSoC12のプロセッサ14および/またはSoC12のサブシステム(図示せず)によるアクセスのために利用可能であり得る。ストレージメモリコントローラ308は、SoC12およびコンピューティングデバイスの様々なプロセッサ14およびサブシステム(図示せず)によるストレージメモリ24へのアクセスを管理することができる。ストレージメモリコントローラ24は、プロセッサ14によってキャッシュメモリ302またはメインメモリ306から要求されるが、キャッシュメモリ302またはメインメモリ306内には見出されず、キャッシュメモリ紛失またはメインメモリ紛失をもたらし得るデータを取り出すために、キャッシュメモリコントローラ300およびメインメモリコントローラ304からストレージメモリ24にアクセスするためのメモリアクセス要求を管理することもできる。
【0043】
圧縮エンジン310は、キャッシュメモリ302、メインメモリ306、およびストレージメモリ24に記憶し、かつそれらから取り出すためのデータおよびコード命令を圧縮するように構成され得る。圧縮エンジン310によって圧縮されるデータおよびコード命令は、プロセッサ14および/またはSoC12のサブシステム(図示せず)によって提供され得る。データおよびコード命令を圧縮する際に、圧縮エンジン310は、様々な圧縮比に関する様々な知られている圧縮方式を採用することができる。一態様では、圧縮エンジン310は、本明細書で、ページと呼ばれる、メモリの連続ブロックに分割されたデータおよびコード命令を圧縮することができる。ページは、4Kbページなど、固定サイズのものであってよい。ページは、キャッシュメモリ302と、メインメモリ306と、ストレージメモリ24との間で送信され得るメモリのユニットであり得る。圧縮エンジン310は、メモリ302、306、および24のいずれかのあるページ内に含まれるか、またはそこに書き込まれることになるデータおよびコード命令を圧縮することができる。ページのデータおよびコード命令のすべては、単一のユニットとして圧縮され得る。言い換えると、ページのコンテンツは、ページ内のデータおよびコード命令の個々またはグループではなく、ページのサイズに基づいて圧縮され得る。
【0044】
圧縮エンジン310は、解凍ブロック境界メタデータを作成し、それを圧縮ページに追加することもできる。解凍ブロック境界メタデータを使用して、圧縮ページ内の解凍ブロックの開始および/または終了を示すことができる。解凍ブロックは、別個に、または圧縮ページの他の解凍ブロックとともに解凍され得る圧縮ページの部分であり得る。解凍ブロックは、単一のページ内に含まれてよく、圧縮ページよりも小さいサイズを有する。解凍ブロック境界メタデータは、圧縮ページの解凍が中断され得る圧縮ページ内のロケーションを解凍ブロックの開始または終了において示すこともでる。解凍ブロック境界メタデータは、全コード命令のみが解凍ブロック内に含まれるように構成され得る。言い換えれば、単一のコード命令は解凍ブロック境界に及ばない場合がある。一態様では、プロセッサ14は、固定長のコード命令に関して構成可能であり、したがって、解凍ブロック境界メタデータは、固定数のコード命令を含み得る均一長の解凍ブロックを示し得る。全コード命令のみが解凍ブロック内に含まれる限り、固定数のコード命令に関して可変長の解凍ブロックを使用することも可能であり得る。別の態様では、プロセッサ14は、可変長のコード命令に関して構成され得る。可変長のコード命令の場合、解凍ブロック境界メタデータは、可変数のコード命令を含み得る可変長の解凍ブロックを示し得る。ページのコード命令は同じ長さのものでない場合があるため、同数の全コード命令を含む解凍ブロック境界を決定することは可能でない場合がある。したがって、各解凍ブロックが全コード命令を含み、コード命令のいずれも解凍ブロック境界に及ばない限り、可変長の解凍ブロックを定義することができる。
【0045】
解凍エンジン312は、圧縮ページを解凍することができる。圧縮ページの解凍は、メモリ24、302、および306のうちの1つの中の特定のロケーションからコード命令を要求することができるプロセッサ14からのメモリアクセス要求に応じて生じ得る。解凍エンジン312は、メモリアクセス要求のメモリロケーションに関する圧縮ページと、その圧縮ページに関する解凍ブロック境界メタデータとを含む圧縮ストリームを受信することができる。メモリアクセス要求のメモリロケーションを解凍ブロック境界メタデータと比較することによって、解凍エンジン312は、要求されるコードが圧縮ページの解凍ブロックのうちのどの中にあるかを決定することができる。特定された解凍ブロックを使用して、解凍エンジン312は、圧縮ページのどの解凍ブロックを解凍すべきかを決定することができる。本明細書でさらに説明する、解凍エンジン312によって使用される解凍方式に応じて、要求されるコード命令にアクセスするために、解凍ブロックのうちの1つまたは複数が解凍され得る。解凍エンジン312は、残りの解凍ブロックを、特定のコード命令またはオールゼロを含み得る一連のデータなど、フォールトまたは例外コードに置換することができる。解凍コード命令は、実行のために要求側プロセッサ14によってアクセス可能であり得る。一態様では、残りの解凍ブロックは、後の時点における解凍のためにスケジュールされ得る。一態様では、残りの解凍ブロックは、解凍コード命令の実行と平行して解凍するために、異なるプロセッサコア、プロセッサ、またはハードウェア解凍エンジンなど、他のハードウェアに移動されてよい。一態様では、残りの解凍ブロックは、解凍コード命令の実行とともにタイムスライスされた方法で解凍され得る。
【0046】
圧縮エンジン310および解凍エンジン312は、プロセッサ14によって実行されるソフトウェアとして、プログラマブルプロセッサデバイス上でなど、専用ハードウェアとして、またはソフトウェアとハードウェアの組合せとして実装され得る。SoC12の構成要素のいくつかまたはすべては、依然として必要な機能を果たしながら、別様に配置および/または組み合わされ得る。その上、SoC12は、構成要素の各々の1つに限定されなくてもよく、各構成要素の複数のインスタンスは、SoC12の様々な構成に含まれ得る。
【0047】
図4および
図5に示す態様は、本明細書で説明する圧縮および解凍に関する態様による、圧縮および解凍の様々な段階におけるページの例を示す。
【0048】
図4は、解凍ブロック境界メタデータを除く圧縮ページ400、固定長の解凍ブロック境界メタデータを含む圧縮ページ402、および可変長の解凍ブロック境界メタデータを含む圧縮ページ404を示す。解凍ブロック境界メタデータを除く圧縮ページ400は、指定されたサイズ、たとえば、4Kbに圧縮されたメモリのうちの1つからのメモリコンテンツのページを表す。メモリコンテンツの全ページは、元のサイズがどんなものであろうと、単一のユニットとして一緒に圧縮され、したがって、ページのコンテンツすべてが単一の圧縮ページ400として圧縮される。同じことは圧縮ページ402および404に関しても当てはまる。この例では、圧縮ページ400、402、および404のメモリコンテンツは同じであり得るが、これらは、同じ圧縮方法および圧縮比を使用して、同じ方法で同じサイズに圧縮され得る。圧縮ページ400と圧縮ページ402および404の間の差異は、解凍ブロック境界メタデータ410a〜410eおよび414a〜414eの加算である。圧縮ページ402と404との間の差異は、圧縮ページ402は固定長の解凍ブロック境界メタデータ410a〜410eを含み、圧縮ページ404は可変長の解凍ブロック境界メタデータ414a〜414eを含むことである。解凍ブロック境界メタデータ410a〜410eおよび414a〜414eは、圧縮ページ402の解凍ブロック408a〜408d、および圧縮ページ404の解凍ブロック412a〜412dを定義する。
【0049】
各事例において、解凍エンジンは、完全な圧縮ページとして、各圧縮ページ400、402、および404を受け取り、閲覧することができる。しかしながら、解凍ブロック境界メタデータ410a〜410eおよび414a〜414eの追加は、解凍エンジンが解凍ブロック408a〜408dおよび412a〜412dを決定することを可能にし得る。一態様では、解凍ブロック境界メタデータ410a〜410eおよび414a〜414eは、圧縮ページ402および404内に埋め込まれてよい。一態様では、解凍ブロック境界メタデータ410a〜410eおよび414a〜414eは、圧縮ページ402および404内の解凍ブロック境界のロケーションに対するポインタをデータ命令内に提供するなど、圧縮ストリームの一部として、圧縮ページ402および404を添付することができる。
【0050】
固定長の解凍ブロック境界メタデータ410a〜410eにより、解凍ブロック408a〜408dは各々、等価長のものであり得る。4Kbの圧縮ページ402例を続けると、
図4に示した4つの解凍ブロック408a〜408dは各々、長さが1Kbであり得る。一態様では、これは、コード命令のすべてが同じ長さになるように、固定長のコード命令を使用するコンピューティングデバイスにおいて可能である。そのようなコンピューティングデバイスでは、非圧縮ページの長さは、概して、いくつかの固定長のコード命令によって等しく分割され得る。したがって、解凍エンジンは、各解凍ブロック408a〜408dが等しい数の固定長の全コード命令を含むように、圧縮ページを等しく分割する解凍ブロック境界メタデータ410a〜410eの数およびロケーションを選択することができる。一態様では、これは、可変長のコード命令を使用するコンピューティングデバイスにおいても可能であり得るが、これはどちらかというと、可変長の命令は、均一長の解凍ブロック408a〜408dを可能にする、上で説明した状態に適しているという偶然の問題である。
【0051】
可変長の解凍ブロック境界メタデータ414a〜414eにより、解凍ブロック412a〜412dは各々、可変長および/または等価長のものであり得る。4Kbの圧縮ページ404例を続けると、
図4に示した4つの解凍ブロック412a〜412dは各々、異なる長さであり得る。一態様では、これは、コード命令のすべてが異なる長さになり得るように、可変長のコード命令を使用するコンピューティングデバイスにおいて可能である。そのようなコンピューティングデバイスでは、非圧縮ページの長さは、概して、いくつかの可変長のコード命令によって不均等に分割され得る。したがって、解凍エンジンは、各解凍ブロック412a〜412dが可変長の全コード命令を含むように、圧縮ページを分割する解凍ブロック境界メタデータ414a〜414eの数およびロケーションを選択することができる。コード命令は等価長の解凍ブロックに容易に収まらない可能性があり、それにより、何の可変長のコード命令も任意の解凍ブロック境界に及ばないため、解凍エンジンは、可変長の解凍ブロック412a〜412dを定義した可変長の解凍ブロック境界メタデータ414a〜414eを選択することができる。上述のように、可変長のコード命令を使用するコンピューティングデバイスにおいて、可変長の解凍ブロック412a〜412dが等価長のものであり得る事例が生じ得ることが考えられる。固定長のコード命令を使用するコンピューティングデバイスにおいて、何の固定長のコード命令も任意の解凍ブロック境界に及ばない限り、可変長の解凍ブロック境界メタデータを適用することも可能である。
【0052】
様々な実装形態において、解凍ブロックの数は、これらの例におけるように4つに限定されなくてよく、ページ長、コード命令長、および解凍エンジンに関する設計選択など、様々な要因に応じて、4つより多くても、少なくてもよいことは明らかであろう。
【0053】
図5は、一態様による、非圧縮ページ500、解凍ブロックメタデータ508を備えた圧縮ページ502、および解凍ページ512を示す。非圧縮ページ500は、メモリのうちの1つの中に記憶されたコード命令を含み得る。非圧縮ページ500は、圧縮エンジンによって圧縮ページ502に圧縮され得る。圧縮エンジンは、圧縮プロセス中に、解凍ブロック境界メタデータ508を作成することができる。一態様では、解凍ブロック境界メタデータ508は、圧縮ブロック502とは別個のデータ構造内に含まれてよい。解凍ブロック境界メタデータ508は、解凍ブロック境界506a〜506eを決定するために解凍エンジンによって使用され得るポインタ510a〜510eなどの情報を含み得る。ポインタ510a〜510eは、非圧縮ページ500のアドレスに対応する圧縮ページ502内のアドレスに対応し得る。解凍ブロック境界メタデータ508は、ポインタ510a〜510eを非圧縮ページ500の対応するアドレスと関係付けることができる。ポインタ510a〜510eと非圧縮ページ500の対応するアドレスとの間のこの関係は、解凍エンジンが非圧縮ページ500内のメモリロケーションに関するメモリアクセス要求の要求されるコード命令を含む解凍ブロック504a〜504dを特定することを可能にし得る。
【0054】
非圧縮ページ500内に含まれるコード命令のうちの少なくとも1つに関するメモリアクセス要求に応じて、解凍エンジンは、関連する圧縮ページ502および解凍ブロック境界メタデータ508を受け取ることができる。メモリアクセス要求の非圧縮ページ500内のメモリロケーションに基づいて、解凍エンジンは、要求される圧縮コード命令が圧縮ページ502のどの解凍ブロック504a〜504d内にあるかを決定することができる。解凍エンジンは、メモリアクセス要求のメモリロケーションを解凍ブロック境界メタデータ508と比較することができる。メモリアクセス要求のメモリロケーションは、解凍エンジンによって等しいロケーションにある、すなわち、解凍ブロック境界メタデータ508内でポインタ510a〜510eによって示される2つの解凍ブロック境界506A〜506eの間に位置すると解釈され得る。
【0055】
圧縮コード命令を含むと決定される解凍ブロック504a〜504dに応じて、かつ、本明細書でさらに説明する解凍方式に応じて、解凍エンジンは、どの解凍ブロック504a〜504dを解凍するべきかを選択することができる。様々な状況において、解凍エンジンは、任意の1つのまたは任意の連続する解凍ブロック504a〜504dを解凍することができる。選択された解凍ブロック504a〜504dの後で、メモリアクセス要求に基づいて、解凍のために選択されていない任意の解凍ブロック504a〜504dを解凍することができる。解凍ページ512は、圧縮ページ502の完全に解凍されたバージョンを示す。解凍ページ512は、長さおよび内容の点で非圧縮ページ500と等価であり得、解凍ページ512は、異なる時点で、解凍ブロック504a〜504dに対応する様々な解凍ブロック514a〜514dを解凍して、段階的に解凍されている場合がある。
【0056】
図6A〜
図6Dは、一態様による、解凍ブロック境界メタデータを使用した圧縮ページ502に関する解凍方式を示す。
図5におけるように、解凍ブロック境界メタデータは、解凍ブロック境界506A〜506eおよび解凍ブロック504a〜504dを特定することができる。
図6Aは、解凍エンジンが要求される圧縮コード命令が解凍ブロック504b内にあると特定する一態様を示す。この態様で使用される解凍方式は、圧縮コード命令を含む解凍ブロック、解凍ブロック504bの解凍のみを要求する解凍方式であり得る。解凍エンジンは、解凍ブロック境界メタデータから解凍ブロック504bに関する解凍ブロック境界506Bおよび506Cを特定することができる。解凍エンジンは、解凍ブロック境界506Bを解凍開始点600と決定し、解凍ブロック境界506Cを解凍終点602と決定することができる。解凍エンジンは、残りの解凍ブロック504a、504c、および504dを、特定のコード命令またはオールゼロを含み得る一連のデータなど、フォールトまたは例外コードに置換することができる。
【0057】
図6Bは、解凍エンジンが、複数の要求される圧縮コード命令が解凍ブロック504bと504c両方の中にあること、または要求される圧縮コード命令が解凍ブロック504bまたは504cのいずれかの中にあることを特定する一態様を示す。複数の要求される圧縮コード命令が解凍ブロック504bと504cの両方の中にあるこの態様で使用される解凍方式は、
図6Aで説明した解凍方式と同様であり得る。類似性は、解凍方式は、圧縮縮コード命令を含む解凍ブロック、解凍ブロック504bおよび504cの解凍のみを要求し得ることである。解凍エンジンは、解凍ブロック境界メタデータから解凍ブロック504bおよび504cに関する解凍ブロック境界506B、506C、および506Dを特定することができる。解凍エンジンは、解凍ブロック境界506Bを解凍開始点604と決定し、解凍ブロック境界506Dを解凍終点606と決定することができる。解凍エンジンは、残りの解凍ブロック504aおよび504dをフォールトまたは例外コードに置換することができる。
【0058】
要求される圧縮コード命令が解凍ブロック504bまたは504cのいずれかの中にある
図6Bに示した一態様では、解凍方式は、他の解凍ブロック504bまたは504cの解凍を依然として求める場合がある。そのような態様では、解凍方式は、コード命令の解凍および実行の効率を改善し得る方法で、圧縮ページを解凍するためにコード命令のローカリティを利用するように構成され得る。要求されるコード命令に関するコード命令は、要求されるコード命令に近いアドレスにおいてメモリ内に記憶されてよく、同じページ内に位置特定され得る。関連するコード命令はまだ要求されていないが、そのような要求の可能性が存在する。したがって、解凍方式は、要求されるコード命令を含む解凍ブロックに近いいくつかの解凍ブロックの解凍を要求する場合がある。解凍関連のコード命令は、そのコード命令が別の圧縮ページを解凍せずに呼び出される場合、迅速なアクセスのために、キャッシュメモリなど、メモリのうちの1つの中に記憶され得る。要求されるコード命令は解凍ブロック504bまたは504cのうちの一方の中に位置特定されるため、ローカリティを使用する解凍方式は、解凍ブロック504bまたは504cのもう一方を解凍すべきであると決定することもできる。この態様の解凍方式は、1つの追加の解凍ブロックのみの解凍に限定されず、追加の解凍ブロックは要求されるコード命令を含む解凍ブロックの同じ側になくてもよいことを認識されたい。
【0059】
図6Cおよび
図6Dは、解凍方式が圧縮および解凍のパターンに関するルックバック機会を利用するように構成される態様を示す。これらの態様では、解凍エンジンが要求される圧縮コード命令が解凍ブロック504b内にあると特定する。これらの態様で使用される解凍方式は、圧縮ページ502の一端と、圧縮コード命令を含む解凍ブロック、解凍ブロック504bとの間で解凍ブロックの各々の解凍を必要とする解凍方式であり得る。解凍エンジンは、解凍ブロック境界メタデータから解凍ブロック504bに関する解凍ブロック境界506Bを特定することができる。解凍エンジンは、解凍ブロック境界506Bを解凍終点610と決定することができる。解凍エンジンは、
図6Cにおける残りの解凍ブロック504cおよび504dならびに
図6Dにおける解凍ブロック504aをフォールトまたは例外コードに置換することができる。
【0060】
これらの態様では、解凍エンジンが圧縮ページ502のいずれかの端から解凍ブロック504bの端まで伝搬すると、解凍エンジンは圧縮ページ502に関する解凍パターンのローカル辞書を構築し始める。この辞書は、圧縮ページ502のコード命令の圧縮フォームと解凍フォームとの間の関係を含み得る。解凍エンジンは、圧縮ページ502の前に圧縮されなかった部分のパターンに整合する、圧縮ページ502内のパターンを特定し、解凍アルゴリズムを介して解凍を決定しなければならないのではなく、この辞書を使用して、特定されたパターンを解凍することが可能であり得る。このプロセスは、時間およびコンピューティングデバイスリソースが圧縮ページ502の部分を解凍するために使用されることを省くことができる。
【0061】
図7A〜
図7Dは、圧縮メモリコンテンツの解凍および解凍コード命令の実行のハードウェア処理を示す。
図7A〜
図7Dに示す態様は、2つのハードウェア構成要素、プロセッサコア0 200およびプロセッサコア1 201のみを示す。これらのハードウェア構成要素は、
図2に関して、同じプロセッサの2つのプロセッサコアとして上で説明された。これらのハードウェア構成要素は単なる例であり、本明細書で説明する態様は、コンピューティングデバイス内で様々な構成および分布の様々なプロセッサコア、プロセッサ、および専用ハードウェアを使用して実装され得ることを理解されたい。
図7Aは、プロセッサコア0 200が圧縮ページの解凍700および704ならびに解凍コード命令の実行702のすべてを処理する一態様を示す。解凍700は、上で説明した解凍方式のうちのいずれかによる、解凍のために特定された圧縮ページの解凍ブロックの解凍を表し得る。解凍700は、したがって、特定された解凍開始点または圧縮ページのいずれかの終端のうちのいずれかから、特定された解凍終点までの圧縮ページのすべてに満たない解凍である。解凍700が解凍のために特定された解凍ブロックの解凍を完了すると、解凍700は終了する。実行702は、解凍700を催促したメモリアクセス要求の要求されるコード命令の実行を表し得る。コード命令は解凍700中に解凍されたので、実行702のためにアクセス可能である。実行702が完了すると、解凍704は、圧縮ページの解凍ブロックの残余を解凍することができる。一態様では、解凍704は、実行702の完了直後に生じなくてよく、様々な他のコード命令が実行されている後で生じてよい。
【0062】
図7Bは、プロセッサコア0 200が圧縮ページの解凍700および704のすべてを処理し、プロセッサコア1 201が解凍コード命令の実行702を処理する一態様を示す。解凍700は、上で説明したように生じ得る。一態様では、解凍700が完了すると、解凍700とは異なるプロセッサ上で生じるように実行702が移動またはスケジュールされ得る。したがって、実行702は、プロセッサコア1 201によって実装され得る。実行702と同時に、プロセッサコア0は、圧縮ページの解凍ブロックの残余を解凍するために解凍704を実装することができる。一態様では、実行702および解凍704は同時に開始しなくてよく、またはさらに同時に生じなくてよいが、各動作を同時に実装することはメモリアクセス要求の実行時間全体を増大する可能性があるため、有利であり得る。
【0063】
図7Cは、プロセッサコア0 200が圧縮ページの解凍700および解凍コード命令の実行702を処理し、プロセッサコア1 201が圧縮ページの解凍704を処理する一態様を示す。解凍700は、上で説明したように生じ得る。一態様では、解凍700が完了すると、プロセッサコア0 200によって解凍コード命令の実行702が実装され得る。実行702の前にまたはそれと同時に、解凍700および/または実行702とは異なるプロセッサ上で生じるように解凍704が移動またはスケジュールされ得る。したがって、圧縮ページの残りの解凍ブロックの解凍704はプロセッサコア1 201によって実装され得る。一態様では、実行702および解凍704は同時に開始しなくてよく、またはさらに同時に生じなくてよいが、各動作を同時に実装することはメモリアクセス要求の実行時間全体を増大する可能性があるため、有利であり得る。
【0064】
図7Cは、プロセッサコア0 200が圧縮ページの解凍700および704ならびに解凍コード命令の実行702のすべてを処理する一態様を示す。解凍700は、上で説明したように生じ得る。一態様では、解凍700が完了すると、プロセッサコア0 200など、同じハードウェア構成要素上でタイムスライスされた方法で圧縮ページの解凍ブロックの残余の実行702および解凍704が実装され得る。一態様では、実行702および解凍704のための時間の割振りは、等価時間スライスであっても、そうでなくてもよい。さらに、実行702または解凍704のうちの一方がもう一方に先立って完了する場合、継続的動作は完了まで続いてよい。
【0065】
図8は、解凍ブロック境界メタデータを使用して圧縮メモリコンテンツの解凍を実装するためのある態様方法800を示す。方法800は、ソフトウェア、プロセッサなど、汎用または専用のハードウェア、圧縮および/または解凍エンジン、キャッシュ、メイン、および/またはストレージメモリコントローラ、またはソフトウェアとハードウェアの組合せを使用するコンピューティングデバイスにおいて実行され得る。ブロック802において、コンピューティングデバイスは、メモリアクセス要求によって示されるロケーションにおいてメモリのうちの1つの中に記憶されたコード命令を含むページを圧縮することができる。一態様では、コード命令を含むページの圧縮は、コンピューティングデバイスの構成要素同士の間のページの送信コストを低減するためのコード命令に対するメモリアクセス要求に応じて生じ得る。一態様では、コード命令を含むページの圧縮は、メモリアクセス要求に先立って生じてよく、圧縮ページは、メモリ内に記憶され、メモリアクセス要求に応じてアクセスされ得る。ブロック804において、コンピューティングデバイスは、解凍ブロック境界メタデータを圧縮ページに追加することができる。上で論じたように、一態様では、解凍ブロック境界メタデータは圧縮ページ内に埋め込まれてよい。一態様では、解凍ブロック境界メタデータは、圧縮ページと関係付けられてよく、解凍ブロック境界メタデータを非圧縮ページ内のロケーションと関連付けることができる、テーブルなど、データ構造内に圧縮ページと一緒にまたは別個に記憶されてよい。コンピューティングデバイスの構成要素同士の間で送信されるとき、解凍ブロック境界メタデータは、圧縮ページとともに圧縮ストリーム内に含まれてよい。
【0066】
ブロック806において、コンピューティングデバイスは、メモリアクセス要求の要求されたコード命令を含む圧縮ページを取り出すことができる。一態様では、圧縮ページを取り出すことは、直接的または間接的に実行され得る。圧縮ページの取出しの直接的実行の一例は、プロセッサなど、コンピューティングデバイスのハードウェア構成要素が、圧縮ページがあるメモリからのアクセスを直接要求することを含み得る。圧縮ページの取出しの間接的実行の一例は、コンピューティングデバイスのハードウェア構成要素が、圧縮ページを現在含まないメモリからのアクセスを要求することを含み得る。このメモリ不在の結果、メモリのコントローラは圧縮ページがある別のメモリからのアクセスを要求することになる。上述のように、圧縮ページの取出しはまた、圧縮ページと関連付けられた解凍ブロック境界メタデータの取出しをもたらし得る。
【0067】
ブロック808において、コンピューティングデバイスは、圧縮ページのどの解凍ブロックがメモリアクセス要求のコード命令を含むかを決定することができる。解凍ブロック境界メタデータは、非圧縮ページ内のロケーションを圧縮ページの解凍ブロック境界ロケーションと関連付けるため、コンピューティングデバイスは、これらの関連性を使用して、圧縮ページ内のコード命令のロケーションを決定することができる。たとえば、圧縮ページの解凍ブロックは、解凍ブロック境界メタデータ内で特定された解凍ブロック境界同士の間のいずれかの端上にバインドされる場合がある。解凍ブロック境界メタデータを含むデータ構造は、これらのロケーションを非圧縮ページ内の等価ロケーションと関連付けることができる。メモリアクセス要求内に含まれるアドレスを非圧縮ページの等価ロケーションと比較して、等価ロケーションのうちのどのロケーションの間にメモリアクセスアドレスが位置するかを決定することができる。この情報を用いて、コンピューティングデバイスは、圧縮コード命令のロケーションがその間にメモリアクセスアドレスが位置する等価の非圧縮ページロケーションと関連付けられた解凍ブロック境界によって境界がつけられた解凍ブロック内にあると決定することができる。
【0068】
ブロック810において、コンピューティングデバイスは、圧縮ページの解凍ブロックのうちどれを解凍すべきかを決定することができる。一態様では、解凍すべき解凍ブロックは、メモリアクセス要求のコード命令を含む解凍ブロックを少なくとも含むことになる。様々な態様では、解凍すべき解凍ブロックは、実装されている解凍方式にも依存し得る。上で論じたように、解凍方式は、コード命令のローカリティを利用することを含むことが可能であり、これはメモリアクセス要求のコード命令を含む解凍ブロックに最近傍の解凍ブロックを選択することを含み得る。別の解凍方式は、解凍ブロックを解凍すると同時に作成されるルックバック機会を利用するために、圧縮ページの一端とメモリアクセス要求のコード命令を含む解凍ブロックとの間の解凍ブロックを選択することを含むことができる。
【0069】
ブロック812において、コンピューティングデバイスは、ブロック810において解凍のために予定されていない圧縮ページの解凍ブロックをフォールトまたは例外コードに置換することができる。フォールトまたは例外コードは、下で説明するように、エラー処理機能を誘導するように構成された特定のコードであり得る。一態様では、フォールトまたは例外コードは、ストリングもしくは定数、または、オールゼロ値など、データのあるパターンを解凍ブロックに置換することを含み得る。
【0070】
ブロック814において、コンピューティングデバイスは、メモリアクセス要求のコード命令にアクセスするために、ブロック810から決定された解凍ブロックを解凍することができる。決定された解凍ブロックの解凍が完了し、圧縮ページの残りの解凍ブロックがフォールトまたは例外コードによって置換されると、解凍は終了し得る。ブロック816において、コンピューティングデバイスは、ブロック812において解凍ブロックがフォールトまたは例外コードに置換されたことよってトリガされるフォールトまたは例外に遭遇し、これを処理することができる。一態様では、フォールトまたは例外の処理は、圧縮ページの残余を後の時点で解凍するようにスケジュールまたは遅延することに関連し得る。一態様では、フォールトまたは例外を処理することは、残りの解凍ブロックの解凍を、解凍コード命令を実行するためのハードウェア構成要素とは異なるハードウェア構成要素に移動またはスケジュールすることに関連し得る。一態様では、フォールトまたは例外を処理することは、解凍コード命令の実行を、残りの解凍ブロックを解凍するためのハードウェア構成要素とは異なるハードウェア構成要素に移動またはスケジュールすることに関連し得る。一態様では、フォールトまたは例外を処理することは、解凍コード命令の実行と残りの解凍ブロックの解凍とを同じハードウェア構成要素上でタイムスライスされた方法でスケジュールすることに関連し得る。
【0071】
ブロック818において、コンピューティングデバイスは、メモリアクセス要求の解凍コード命令を実行することができる。ブロック820において、コンピューティングデバイスは、圧縮ページ残りの解凍ブロックを解凍することができる。上述のように、解凍コード命令の実行は、圧縮ページの残りの解凍ブロックの解凍の前にまたはそれと同時に実装され得る。解凍と同時の実行は、別個のハードウェア構成要素上で並行して、または同じハードウェア構成要素上でタイムスライスされた方法で生じ得る。
【0072】
(
図1〜
図8を参照して上で論じた態様を含むが、それらに限定されない)様々な態様は、
図9に示す様々な態様とともに使用するのに適した例示的なモバイルコンピューティングデバイスを含み得る多種多様なコンピューティングデバイス内で実装され得る。モバイルコンピューティングデバイス900は、タッチスクリーンコントローラ904と内部メモリ906とに結合されたプロセッサ902を含み得る。プロセッサ902は、汎用または特定の処理タスクに指定された1つまたは複数のマルチコア集積回路であり得る。内部メモリ906は、揮発性メモリまたは不揮発性メモリであってもよく、また、セキュアおよび/もしくは暗号化メモリであっても、または非セキュアおよび/もしくは非暗号化メモリであっても、あるいはそれらの任意の組合せであってもよい。利用され得るメモリタイプの例は、限定はしないが、DDR、LPDDR、GDDR、WIDEIO、RAM、SRAM、DRAM、P-RAM、R-RAM、M-RAM、STT-RAM、および埋め込みDRAMを含む。タッチスクリーンコントローラ904およびプロセッサ902は、抵抗感知タッチスクリーン、容量感知タッチスクリーン、赤外線感知タッチスクリーンなどのタッチスクリーンパネル912に結合される場合もある。加えて、コンピューティングデバイス900のディスプレイは、タッチスクリーン能力を有する必要がない。
【0073】
モバイルコンピューティングデバイス900は、互いに結合されたおよび/またはプロセッサ902に結合された、通信を送信および受信するための1つまたは複数の無線信号トランシーバ908(たとえば、Peanut、Bluetooth(登録商標)、Zigbee、Wi-Fi、RF無線)と、アンテナ910とを有し得る。トランシーバ908およびアンテナ910は、様々なワイヤレス伝送プロトコルスタックおよびインターフェースを実装するために、上述した回路で使用されてもよい。モバイルコンピューティングデバイス900は、セルラーネットワークを介した通信を可能にし、プロセッサに結合されたセルラーネットワークワイヤレスモデムチップ916を含み得る。
【0074】
モバイルコンピューティングデバイス900は、プロセッサ902に結合された周辺デバイス接続インターフェース918を含み得る。周辺デバイス接続インターフェース918は、1つのタイプの接続を受け入れるように単独で構成され得るか、または、USB、FireWire、Thunderbolt、もしくはPCIeなどの共通もしくはプロプライエタリの様々なタイプの物理接続および通信接続を受け入れるように構成され得る。周辺デバイス接続インターフェース918はまた、同様に構成された周辺デバイス接続ポート(図示せず)に結合されてもよい。
【0075】
モバイルコンピューティングデバイス900はまた、オーディオ出力を提供するためのスピーカー914を含み得る。モバイルコンピューティングデバイス900はまた、本明細書で論じる構成要素のすべてまたはいくつかを収容するための、プラスチック、金属、または材料の組合せから構築されたハウジング920を含み得る。モバイルコンピューティングデバイス900は、使い捨てバッテリーまたは充電式バッテリーなどの、プロセッサ902に結合された電源922を含み得る。充電式バッテリーは、モバイルコンピューティングデバイス900の外部にある電源から充電電流を受けるために、周辺デバイス接続ポートに結合される場合もある。モバイルコンピューティングデバイス900はまた、ユーザ入力を受け取るための物理ボタン924を含み得る。モバイルコンピューティングデバイス900はまた、モバイルコンピューティングデバイス900をオンオフするための電源ボタン926を含み得る。
【0076】
(
図1〜
図8を参照して上で論じた態様を含むが、それらに限定されない)様々な態様は、
図10に示すラップトップコンピュータ1000など、様々なコンピューティングデバイスを含み得る多種多様なコンピューティングシステム内で実装され得る。多くのラップトップコンピュータは、コンピュータのポインティングデバイスとして働くタッチパッドのタッチ面1017を含み、したがって、タッチスクリーンディスプレイを装備した、上で説明したコンピューティングデバイス上で実装されるものと同様のドラッグジェスチャ、スクロールジェスチャ、およびフリックジェスチャを受け取ることができる。ラップトップコンピュータ1000は通常、揮発性メモリ1012、およびフラッシュメモリのディスクドライブ1013などの大容量不揮発性メモリに結合されたプロセッサ1011を含む。加えて、コンピュータ1000は、プロセッサ1011に結合されたワイヤレスデータリンクおよび/またはセルラー電話トランシーバ1016に接続され得る、電磁放射を送信および受信するための1つまたは複数のアンテナ1008を有し得る。コンピュータ1000はまた、プロセッサ1011に結合されたフロッピーディスクドライブ1014およびコンパクトディスク(CD)ドライブ1015を含み得る。ノートブック構成では、コンピュータ筐体は、すべてがプロセッサ1011に結合された、タッチパッド1017、キーボード1018、およびディスプレイ1019を含む。コンピューティングデバイスの他の構成は、よく知られているように、(たとえば、USB入力を介して)プロセッサに結合されたコンピュータマウスまたはトラックボールを含み得、それらはまた、様々な態様とともに使用され得る。
【0077】
(
図1〜
図8を参照して上で論じた態様を含むが、それらに限定されない)様々な態様は、サーバキャッシュメモリ内にデータを圧縮するための様々な市販のサーバのうちのいずれかを含み得る多種多様なコンピューティングシステム内で実装され得る。例示的なサーバ1100が、
図11に示されている。そのようなサーバ1100は通常、揮発性メモリ1102と、ディスクドライブ1104などの大容量不揮発性メモリとに結合された、1つまたは複数のマルチコアプロセッサアセンブリ1101を含む。
図11に示すように、マルチコアプロセッサアセンブリ1101は、それらをアセンブリのラックに挿入することによって、サーバ1100に追加され得る。サーバ1100は、プロセッサ1101に結合された、フロッピーディスクドライブ、コンパクトディスク(CD)またはDVDディスクドライブ1106も含み得る。サーバ1100はまた、他のブロードキャストシステムコンピュータおよびサーバに結合されたローカルエリアネットワーク、インターネット、公衆交換電話網、ならびに/またはセルラーデータネットワーク(たとえば、CDMA、TDMA、GSM(登録商標)、PCS、3G、4G、LTE、もしくは任意の他のタイプのセルラーデータネットワーク)など、ネットワーク1105とのネットワークインターフェース接続を確立するための、マルチコアプロセッサアセンブリ1101に結合されたネットワークアクセスポート1103を含み得る。
【0078】
様々な態様の動作を遂行するためにプログラマブルプロセッサ上で実行されるコンピュータプログラムコードまたは「プログラムコード」は、C、C++、C#、Smalltalk、Java(登録商標)、JavaScript(登録商標)、Visual Basic、Structured Query Language(たとえば、Transact-SQL)、Perlなどの高水準プログラミング言語で、または様々な他のプログラミング言語で書かれ得る。本出願で使用する、コンピュータ可読記憶媒体上に記憶されたプログラムコードまたはプログラムは、そのフォーマットがプロセッサによって理解可能である(オブジェクトコードなどの)機械言語コードを指し得る。
【0079】
多くのコンピューティングデバイスのオペレーティングシステムカーネルは、(非特権コードが動作する場合)ユーザ空間に編成され、(特権コードが動作する場合)カーネル空間に編成される。この分離は、カーネル空間の一部であるコードが一般公有使用許諾(GPL)を受けなければならない一方で、ユーザ空間内で動作するコードがGPLを受けなくてもよい、Androidおよび他のGPL環境において特に重要である。本明細書で論じる様々なソフトウェア構成要素/モジュールは、別段に明記されていない限り、カーネル空間またはユーザ空間のいずれかにおいて実装され得ることを理解されたい。
【0080】
上記の方法説明およびプロセスフロー図は、単に例示的な例として提供され、様々な態様の動作が提示された順序で実行されなければならないことを要求または暗示するものではない。当業者によって諒解されるように、上記の態様における動作の順序は、任意の順序で実行され得る。「その後」、「次いで」、「次に」などの語は、動作の順序を限定するものではなく、これらの語は単に、方法の説明を通して読者を導くために使用される。さらに、たとえば、冠詞「a」、「an」または「the」を使用する、単数形での請求項の要素へのいかなる言及も、その要素を単数形に限定するものとして解釈されるべきではない。
【0081】
様々な態様に関連して説明された様々な例示的な論理ブロック、モジュール、回路、およびアルゴリズム動作は、電子ハードウェア、コンピュータソフトウェア、またはその両方の組合せとして実施され得る。ハードウェアおよびソフトウェアのこの互換性を明確に示すために、様々な例示的なコンポーネント、ブロック、モジュール、回路、および動作は、上では全般的にそれらの機能に関して説明された。そのような機能がハードウェアとして実施されるか、それともソフトウェアとして実施されるのかは、特定の応用例と全体的なシステムに課された設計制約とに依存する。当業者は説明した機能を特定の適用例ごとに様々な方法で実施する場合があるが、そのような実装決定は、本発明の範囲からの逸脱を引き起こすと解釈されるべきではない。
【0082】
本明細書で開示する態様に関して説明する様々な例示的な論理、論理ブロック、モジュール、および回路を実装するために使用されるハードウェアは、汎用プロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)もしくは他のプログラマブル論理デバイス、個別ゲートもしくはトランジスタ論理、個別ハードウェア構成要素、または本明細書で説明する機能を実行するように設計されたそれらの任意の組合せを用いて実装または実行され得る。汎用プロセッサはマイクロプロセッサであり得るが、代替として、プロセッサは、任意の従来のプロセッサ、コントローラ、マイクロコントローラ、または状態機械であり得る。プロセッサはまた、コンピューティングデバイスの組合せ(たとえば、DSPとマイクロプロセッサの組合せ、複数のマイクロプロセッサ、DSPコアと連携した1つもしくは複数のマイクロプロセッサ、または任意の他のそのような構成)として実現される場合もある。代替案では、一部の動作または方法が、所与の機能に固有の回路網によって実行され得る。
【0083】
1つまたは複数の態様では、説明した機能は、ハードウェア、ソフトウェア、ファームウェア、またはそれらの任意の組合せとして実装されてもよい。ソフトウェアにおいて実装される場合、機能は、非一時的コンピュータ可読媒体または非一時的プロセッサ可読媒体上に1つまたは複数の命令またはコードとして記憶され得る。本明細書で開示する方法またはアルゴリズムの動作は、非一時的コンピュータ可読記憶媒体またはプロセッサ可読記憶媒体上に存在し得るプロセッサ実行可能ソフトウェアモジュールにおいて具現化され得る。非一時的コンピュータ可読記憶媒体またはプロセッサ可読記憶媒体は、コンピュータまたはプロセッサによってアクセスされ得る任意の記憶媒体であり得る。限定ではなく例として、そのような非一時的コンピュータ可読媒体またはプロセッサ可読媒体は、RAM、ROM、EEPROM、FLASHメモリ、CD-ROMもしくは他の光ディスクストレージ、磁気ディスクストレージもしくは他の磁気ストレージデバイス、または命令もしくはデータ構造の形態で所望のプログラムコードを記憶するために使用され得、コンピュータによってアクセスされ得る任意の他の媒体を含み得る。本明細書で使用するディスク(disk)およびディスク(disc)は、コンパクトディスク(disc)(CD)、レーザーディスク(登録商標)(disc)、光ディスク(disc)、デジタル多用途ディスク(disc)(DVD)、フロッピーディスク(disk)およびブルーレイディスク(disc)を含み、ディスク(disk)は通常、データを磁気的に再生し、ディスク(disc)は、レーザーを用いてデータを光学的に再生する。上記の組合せも、非一時的コンピュータ可読およびプロセッサ可読記憶媒体の範囲内に含まれる。加えて、方法またはアルゴリズムの動作は、コンピュータプログラム製品に組み込まれ得る、非一時的プロセッサ可読媒体および/またはコンピュータ可読媒体上のコードおよび/または命令の1つまたは任意の組合せまたはセットとして存在し得る。
【0084】
開示された態様の上記の説明は、任意の当業者が本発明を作成または使用することを可能にするように提供される。これらの態様に対する様々な修正は当業者には容易に明らかとなり、本明細書で定義された一般原理は、本発明の趣旨または範囲から逸脱することなく、他の態様に適用され得る。したがって、本発明は、本明細書に示される態様に限定されるものではなく、以下の特許請求の範囲、ならびに、本明細書で開示される原理および新規の特徴と一致する最も広い範囲を与えられるべきである。
【符号の説明】
【0085】
10 コンピューティングデバイス
12 SoC
14 プロセッサ
16 メモリ
18 通信インターフェース
20 ストレージメモリインターフェース
22 通信構成要素
24 ストレージメモリ
26 アンテナ
28 ネットワークインターフェース
30 ワイヤレスネットワーク
32 ワイヤレス接続
40 インターネット
44 ワイヤード接続
50 リモートコンピューティングデバイス
200 プロセッサコア、プロセッサコア0
201 プロセッサコア、プロセッサコア1
202 プロセッサコア
203 プロセッサコア
300 キャッシュメモリコントローラ
302 キャッシュメモリ
304 メインメモリコントローラ
306 メインメモリ
308 ストレージメモリコントローラ
310 圧縮エンジン
312 解凍エンジン
400 解凍ブロック境界メタデータを除く圧縮ページ、圧縮ページ
402 固定長の解凍ブロック境界メタデータを含む圧縮ページ、圧縮ページ
404 可変長の解凍ブロック境界メタデータを含む圧縮ページ、圧縮ページ
408a〜408d 解凍ブロック
410a〜410e 解凍ブロック境界メタデータ、固定長の解凍ブロック境界メタデータ
412a〜412d 解凍ブロック
414a〜414e 解凍ブロック境界メタデータ、可変長の解凍ブロック境界メタデータ
500 非圧縮ページ
502 圧縮ページ
504a〜504d 解凍ブロック
506a〜506e 解凍ブロック境界
508 解凍ブロックメタデータ
510a〜510e ポインタ
512 解凍ページ
700 解凍
702 実行
704 解凍
800 方法
900 モバイルコンピューティングデバイス、コンピューティングデバイス
902 プロセッサ
904 タッチスクリーンコントローラ
906 内部メモリ
908 トランシーバ
910 アンテナ
912 タッチスクリーンパネル
914 オーディオ出力を提供するためのスピーカー
916 セルラーネットワークワイヤレスモデムチップ
918 周辺デバイス接続インターフェース
920 ハウジング
922 電源
924 物理ボタン
926 電源ボタン
1000 ラップトップコンピュータ、コンピュータ
1008 アンテナ
1011 プロセッサ
1012 揮発性メモリ
1013 ディスクドライブ
1014 フロッピーディスクドライブ
1015 コンパクトディスク(CD)ドライブ
1016 セルラー電話トランシーバ
1017 タッチ面
1018 キーボード
1019 ディスプレイ
1100 サーバ
1101 マルチコアプロセッサアセンブリ
1102 揮発性メモリ
1103 ネットワークアクセスポート
1104 ディスクドライブ
1105 ネットワーク
1106 フロッピーディスクドライブ、コンパクトディスク(CD)またはDVDディスクドライブ
【要約】
態様は、圧縮ページの解凍の実行を実装するためのコンピューティングデバイス、システム、および方法を含む。コンピューティングデバイスは、メモリアクセス要求内で要求されるコード命令を含む圧縮ページに属する解凍ブロックを決定することができる。要求されるコード命令を含む解凍ブロック以外の解凍ブロックは、要求されるコード命令を含む解凍ブロックに対するそのローカリティに基づいて、解凍のために選択され得る。解凍のために特定されない解凍ブロックは、フォールトまた例外コードに置換され得る。コンピューティングデバイスは、解凍のために特定された解凍ブロックを解凍し、すべてのブロックを解凍ブロック、フォールト、または例外コードで充填するとすぐに、圧縮ページの解凍を終了する。圧縮ページに属する残りの解凍ブロックは、要求されるコード命令の実行後にまたはそれと同時に解凍され得る。