(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-08-06
(45)【発行日】2024-08-15
(54)【発明の名称】キャッシュメモリの階層内のキャッシュメモリに記憶するデータの圧縮
(51)【国際特許分類】
G06F 12/0897 20160101AFI20240807BHJP
G06F 12/04 20060101ALI20240807BHJP
【FI】
G06F12/0897
G06F12/04 530
(21)【出願番号】P 2021535743
(86)(22)【出願日】2019-06-19
(86)【国際出願番号】 US2019037901
(87)【国際公開番号】W WO2020139418
(87)【国際公開日】2020-07-02
【審査請求日】2022-05-20
(32)【優先日】2018-12-26
(33)【優先権主張国・地域又は機関】US
【前置審査】
(73)【特許権者】
【識別番号】591016172
【氏名又は名称】アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド
【氏名又は名称原語表記】ADVANCED MICRO DEVICES INCORPORATED
(74)【代理人】
【識別番号】100108833
【氏名又は名称】早川 裕司
(74)【代理人】
【識別番号】100111615
【氏名又は名称】佐野 良太
(74)【代理人】
【識別番号】100162156
【氏名又は名称】村雨 圭介
(72)【発明者】
【氏名】マシュー トメイ
(72)【発明者】
【氏名】フィリップ ベドウキアン
(72)【発明者】
【氏名】ショーミ ダス
【審査官】松平 英
(56)【参考文献】
【文献】特表2018-522457(JP,A)
【文献】特開平07-210324(JP,A)
【文献】特開2011-170403(JP,A)
【文献】米国特許出願公開第2013/0311722(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 3/06-3/08
12/00-12/128
13/16-13/18
H03M 3/00-9/00
(57)【特許請求の範囲】
【請求項1】
キャッシュメモリに記憶するためにデータを圧縮する電子デバイスであって、
第1のキャッシュメモリ及び第2のキャッシュメモリを含むキャッシュメモリの階層であって、前記第1のキャッシュメモリは、前記階層において前記第2のキャッシュメモリよりも下位にある、階層と、
少なくとも1つの圧縮・解凍機能ブロックと、を備え、
前記少なくとも1つの圧縮・解凍機能ブロックは、
非圧縮状態のデータを受信することと、
第1の圧縮又は第2の圧縮の何れかを使用して前記データを圧縮することであって、前記第2の圧縮を使用して前記データを圧縮することを試みたが前記データが圧縮されない場合に、前記第1の圧縮を使用する、ことと、
前記データを圧縮した後に、前記データを前記第1のキャッシュメモリに提供して記憶することと、
前記データが前記第1のキャッシュメモリから読み出されて前記第2のキャッシュメモリに記憶される場合であって、前記データが前記第1の圧縮を使用して圧縮されている場合に、前記データを解凍して前記データに対する前記第1の圧縮の効果を逆転させることによって、前記データを前記非圧縮状態に復元することと、
前記第2の圧縮を使用して圧縮されたデータ又は前記非圧縮状態のデータを、前記第2のキャッシュメモリに提供して記憶することと、
を行うように構成されている、
電子デバイス。
【請求項2】
キャッシュメモリの階層内の第3のキャッシュメモリであって、前記第2のキャッシュメモリは、前記階層において前記第3のキャッシュメモリよりも下位にある、第3のキャッシュメモリをさらに備え、
前記少なくとも1つの圧縮・解凍機能ブロックは、前記データが前記第2のキャッシュメモリから読み出されて前記第3のキャッシュメモリに記憶される場合であって、前記データが前記第2の圧縮を使用して圧縮されている場合に、
前記データを解凍して前記データに対する前記第2の圧縮の効果を逆転させることによって、前記データを前記非圧縮状態に復元することと、
前記データを前記第3のキャッシュメモリに提供して記憶することと、
を行うように構成されている、
請求項1の電子デバイス。
【請求項3】
前記第1の圧縮は、より重い圧縮であり、前記第2の圧縮は、より軽い圧縮であり、
前記より軽い圧縮を使用して前記データを解凍することは、前記より重い圧縮を使用して前記データを解凍するよりも高速である、
請求項2の電子デバイス。
【請求項4】
前記第1の圧縮又は前記第2の圧縮の何れかを使用して前記データを圧縮することは、
前記データに対して前記第2の圧縮の1つ以上の第2の圧縮動作を実行することであって、前記1つ以上の第2の圧縮動作は、第2の特性を有するデータを圧縮する、ことと、
前記データが前記第2の特性を有していないために前記第2の圧縮の前記1つ以上の圧縮動作が前記データの圧縮をもたらさない場合に、前記データに対して前記第1の圧縮の1つ以上の第1の圧縮動作を実行することであって、前記1つ以上の第1の圧縮動作は、第1の特性を有するデータを圧縮する、ことと、を含む、
請求項1の電子デバイス。
【請求項5】
前記第1の圧縮動作及び前記第2の圧縮動作の一方又は両方は、パターンマッチング圧縮、値マッチング圧縮、ゼロコンテンツ圧縮、Lempel-Zivベースの圧縮、マルコフ圧縮、及び、デルタ圧縮のうち少なくとも1つを含む、
請求項4の電子デバイス。
【請求項6】
前記第1の特性及び前記第2の特性の両方が前記データに存在せず、前記第1の圧縮及び前記第2の圧縮の何れも前記データの圧縮をもたらさない場合に、前記データを非圧縮状態で前記第1のキャッシュメモリ及び前記第2のキャッシュメモリに記憶する、
請求項4の電子デバイス。
【請求項7】
前記第1の圧縮又は前記第2の圧縮の何れかを使用して前記データを圧縮した後に、前記少なくとも1つの圧縮・解凍機能ブロックは、
前記データに関連するメタデータを更新して、前記データが前記第1の圧縮又は前記第2の圧縮の何れかを使用して圧縮されたことを示すように構成されている、
請求項1の電子デバイス。
【請求項8】
前記少なくとも1つの圧縮・解凍機能ブロックは、
前記非圧縮状態の他のデータを受信することと、
前記第2の圧縮及び前記第1の圧縮のシーケンスを使用して前記他のデータを圧縮することであって、前記第1の圧縮は可変入力フォーマットをサポートする、ことと、
前記他のデータを圧縮した後に、前記他のデータを前記第1のキャッシュメモリに提供して記憶することと、
前記他のデータが前記第1のキャッシュメモリから読み出されて前記第2のキャッシュメモリに記憶される場合に、前記他のデータを解凍して前記他のデータに対する前記第1の圧縮の効果を逆転させることによって、前記他のデータを、前記第2の圧縮のみを使用して圧縮された状態に復元することと、
前記第2の圧縮を使用して圧縮された前記他のデータを、前記第2のキャッシュメモリに提供して記憶することと、
を行うように構成されている、
請求項1の電子デバイス。
【請求項9】
前記少なくとも1つの圧縮・解凍機能ブロックは、メモリから前記データを受信する、
請求項1の電子デバイス。
【請求項10】
前記メモリに記憶された前記データは、第3の圧縮を使用して圧縮され、前記データが前記圧縮・解凍機能ブロックに転送される前に、前記データを前記非圧縮状態に復元するために解凍される、
請求項9の電子デバイス。
【請求項11】
前記データは、前記メモリと前記少なくとも1つの圧縮・解凍機能ブロックとの間の1つ以上の通信リンクを介して通信するために第3の圧縮を使用して圧縮される、
請求項9の電子デバイス。
【請求項12】
第1のキャッシュメモリ及び第2のキャッシュメモリを含むキャッシュメモリの階層であって、前記第1のキャッシュメモリは前記階層において前記第2のキャッシュメモリよりも下位にある、階層と、少なくとも1つの圧縮・解凍機能ブロックと、を備える電子デバイスのキャッシュメモリに記憶するためにデータを圧縮する方法であって、
前記少なくとも1つの圧縮・解凍機能ブロックによって、非圧縮状態のデータを受信することと、
前記少なくとも1つの圧縮・解凍機能ブロックによって、
第1の圧縮又は第2の圧縮の何れかを使用して前記データを圧縮することであって、前記第2の圧縮を使用して前記データを圧縮することを試みたが前記データが圧縮されない場合に、前記第1の圧縮を使用する、ことと、
前記少なくとも1つの圧縮・解凍機能ブロックによって、前記データを圧縮した後に、前記データを前記第1のキャッシュメモリに提供して記憶することと、
前記少なくとも1つの圧縮・解凍機能ブロックによって、前記データが前記第1のキャッシュメモリから読み出されて前記第2のキャッシュメモリに記憶される場合であって、前記データが前記第1の圧縮を使用して圧縮されている場合に、前記データを解凍して前記データに対する前記第1の圧縮の効果を逆転させることによって、前記データを前記非圧縮状態に復元することと、
前記少なくとも1つの圧縮・解凍機能ブロックによって、前記第2の圧縮を使用して圧縮されたデータ又は前記非圧縮状態のデータを、前記第2のキャッシュメモリに提供して記憶することと、を含む、
方法。
【請求項13】
前記電子デバイスは、キャッシュメモリの前記階層内の第3のキャッシュメモリをさらに備え、前記第2のキャッシュメモリは、前記階層において前記第3のキャッシュメモリよりも下位にあり、
前記方法は、
前記データが前記第2のキャッシュメモリから読み出されて前記第3のキャッシュメモリに記憶される場合であって、前記データが前記第2の圧縮を使用して圧縮されている場合に、
前記少なくとも1つの圧縮・解凍機能ブロックによって、前記データを解凍して前記データに対する前記第2の圧縮の効果を逆転させることによって、前記データを前記非圧縮状態に復元することと、
前記少なくとも1つの圧縮・解凍機能ブロックによって、前記データを前記第3のキャッシュメモリに提供して記憶することと、をさらに含む、
請求項12の方法。
【請求項14】
前記第1の圧縮は、より重い圧縮であり、前記第2の圧縮は、より軽い圧縮であり、
前記より軽い圧縮を使用して前記データを解凍することは、前記より重い圧縮を使用して前記データを解凍するよりも高速である、
請求項13の方法。
【請求項15】
前記第1の圧縮又は前記第2の圧縮の何れかを使用して前記データを圧縮することは、
前記データに対して前記第2の圧縮の1つ以上の第2の圧縮動作を実行することであって、前記1つ以上の第2の圧縮動作は、第2の特性を有するデータを圧縮する、ことと、
前記データが前記第2の特性を有していないために前記第2の圧縮の前記1つ以上の圧縮動作が前記データの圧縮をもたらさない場合に、前記データに対して前記第1の圧縮の1つ以上の第1の圧縮動作を実行することであって、前記1つ以上の第1の圧縮動作は、第1の特性を有するデータを圧縮する、ことと、を含む、
請求項12の方法。
【請求項16】
前記第1の圧縮動作及び前記第2の圧縮動作の一方又は両方は、パターンマッチング圧縮、値マッチング圧縮、ゼロコンテンツ圧縮、Lempel-Zivベースの圧縮、マルコフ圧縮、及び、デルタ圧縮のうち少なくとも1つを含む、
請求項15の方法。
【請求項17】
前記第1の特性及び前記第2の特性の両方がデータに存在せず、前記第1の圧縮及び前記第2の圧縮の何れも前記データの圧縮をもたらさない場合に、前記方法は、
前記データを前記非圧縮状態で前記第1のキャッシュメモリ及び前記第2のキャッシュメモリに記憶することをさらに含む、
請求項15の方法。
【請求項18】
前記方法は、前記第1の圧縮又は前記第2の圧縮の何れかを使用してデータを圧縮した後に、
前記圧縮・解凍機能ブロックによって、前記データに関連するメタデータを更新して、前記データが前記第1の圧縮又は前記第2の圧縮の何れかを使用して圧縮されたことを示すことをさらに含む、
請求項12の方法。
【請求項19】
前記方法は、
前記少なくとも1つの圧縮・解凍機能ブロックによって、前記非圧縮状態の他のデータを受信することと、
前記少なくとも1つの圧縮・解凍機能ブロックによって、前記第2の圧縮及び前記第1の圧縮のシーケンスを使用して前記他のデータを圧縮することであって、前記第1の圧縮は可変入力フォーマットをサポートする、ことと、
前記少なくとも1つの圧縮・解凍機能ブロックによって、前記他のデータを圧縮した後に、前記データを前記第1のキャッシュメモリに提供して記憶することと、
前記データが前記第1のキャッシュメモリから読み出されて前記第2のキャッシュメモリに記憶される場合に、前記他のデータを解凍して前記他のデータに対する前記第1の圧縮の効果を逆転させることによって、前記他のデータを、前記第2の圧縮のみを使用して圧縮された状態に復元することと、
前記少なくとも1つの圧縮・解凍機能ブロックによって、前記第2の圧縮を使用して圧縮された前記データを、前記第2のキャッシュメモリに提供して記憶することと、をさらに含む、
請求項12の方法。
【請求項20】
前記少なくとも1つの圧縮・解凍機能ブロックによって、メモリから前記データを受信することであって、前記データは、前記メモリに記憶するために第3の圧縮を使用して圧縮され、前記少なくとも1つの圧縮・解凍機能ブロックに通信するために解凍される、ことをさらに含む、
請求項12の方法。
【発明の詳細な説明】
【技術分野】
【0001】
(政府の権利)
本発明は、米国エネルギー省(DOE)から授与されたローレンスリバモアナショナルセキュリティ(主契約番号:DE-AC52-07NA27344、下請契約番号:B620717)とのPathForwardプロジェクトの下で政府の支援を受けて行われたものである。米国政府は、本発明において一定の権利を有している。
【背景技術】
【0002】
(関連技術)
一部の電子デバイスは、様々な動作を実行するためのプログラムコードを実行するプロセッサを含む。例えば、電子デバイスは、ソフトウェアアプリケーションやオペレーティングシステム等のプログラムコードを実行する1つ以上の中央処理装置コア(CPUコア)又はグラフィックス処理装置コア(GPUコア)を含む場合がある。これらの電子デバイスの多くは、メモリ(例えば、「メイン」メモリ)及び大容量記憶装置とともに、プログラムコード及び/又はデータを記憶するための1つ以上のキャッシュメモリを含む。キャッシュメモリは、プログラムコード及び/又はデータのコピーをローカルに記憶し、プログラムコードの実行や他の動作の実行時に使用するプロセッサによる迅速な読み出しを可能にするために使用される高速アクセスメモリである。キャッシュメモリ内のプログラムコード及び/又はデータのコピーへのアクセスは、通常、メモリ及び大容量記憶装置内のプログラムコード及び/又はデータへのアクセスよりも少なくとも1桁高速である。
【0003】
キャッシュメモリは、通常、プログラムコード及び/又はデータのコピーを記憶するための限られた容量しか有しておらず、通常、メモリや大容量記憶装置よりも大幅に小さい容量を有する。例えば、一部の電子デバイスは、最上位又は第1レベルのキャッシュメモリ(つまり、「L1」キャッシュ)の容量が32~64キロバイト(kB)であり、中間又は第2レベルのキャッシュメモリ(つまり、「L2」キャッシュ)の容量が512~1024kBであり、最下位又は第3レベルのキャッシュメモリ(つまり、「L3」キャッシュ)の容量が2~4メガバイト(MB)である、キャッシュメモリの階層を含む。このような電子デバイスでは、メモリの容量は32~64ギガバイト(GB)であり、大容量記憶装置の容量は4~8テラバイト(TB)である場合がある。キャッシュメモリの記憶容量が限られているので、動作中、プロセッサは、コピーを同時に記憶するためにキャッシュメモリの容量を超えるプログラムコード及び/又はデータの十分なコピーの記憶を定期的に要求する。したがって、キャッシュメモリは、プログラムコード及び/又はデータの既存の記憶されたコピーを除去するか別の方法で破棄して、プログラムコード及び/又はデータの着信コピーを記憶するためのスペースを解放することを強制され得る。例えば、キャッシュメモリは、変更されたデータのコピーをメモリ又は低レベルのキャッシュメモリに書き戻し、及び/又は、変更されていないデータのコピーを無効にして、データの着信コピー用のスペースを確保することができる。
【0004】
キャッシュメモリの利用可能な記憶容量をより良く使用するために、設計者は、キャッシュメモリに記憶されたプログラムコード及び/又はデータの配置を改善するための多数の技術を提案してきた。例えば、一部の設計者は、プログラムコード及び/又はデータをキャッシュメモリ内のより少ないスペースに記憶できるように、プログラムコード及び/又はデータを圧縮することを提案している。この技術では、プログラムコード及び/又はデータをキャッシュメモリに記憶する前に、プログラムコード及び/又はデータを圧縮してデータのサイズを縮小する。次に、圧縮されたプログラムコード及び/又はデータがキャッシュメモリから要求側プロセッサに提供されると、プログラムコード及び/又はデータが解凍され、プログラムコード及び/又はデータが非圧縮状態に復元される。
【0005】
圧縮によって、キャッシュメモリに記憶されているプログラムコード及び/又はデータのサイズが小さくなるが、圧縮は、必ずしも理想的な解決策ではない。これは、プログラムコード、及び/又は、キャッシュメモリに記憶されるデータの圧縮に使用される様々なタイプの圧縮の特性によるものである。例えば、より重い圧縮(つまり、比較的多く、遅く、及び/又は、より複雑な圧縮動作を行う圧縮)を使用すると、プログラムコードやデータの圧縮率が高くなるが、圧縮と解凍にかかる時間がより長くなる可能性がある。したがって、応答レイテンシが重要な考慮事項である高レベルのキャッシュメモリでは、より重い圧縮が望ましくない。別の例として、より軽い圧縮は、比較的単純な圧縮動作を使用してプログラムコード及び/又はデータを迅速に圧縮することができるが、限られたパターン又は値のセットを含むプログラムコード及び/又はデータしか圧縮することができない。より長い圧縮レイテンシを生じることなく、プログラムコード及び/又はデータのサイズを少なくとも僅かに縮小する一方で、より軽い圧縮では、より大きいキャッシュメモリ内のかなりのスペースを解放するのに十分なデータを圧縮することができない場合がある。キャッシュメモリの階層内の様々なキャッシュメモリに関連する様々なパフォーマンス要件を考えると、設計者は、全てのキャッシュメモリのプログラムコード及び/又はデータを圧縮するために機能する単一の圧縮を見つけることができなかった。
【図面の簡単な説明】
【0006】
【
図1】いくつかの実施形態による、電子デバイスを示すブロック図である。
【
図2】いくつかの実施形態による、データがキャッシュメモリの階層内のキャッシュメモリを介して上位にコピーされる場合にデータの圧縮及び解凍を実行することを示すブロック図である。
【
図3】いくつかの実施形態による、データがキャッシュメモリの階層内のキャッシュメモリを介して下位にコピーされる場合にデータの圧縮及び解凍を実行することを示すブロック図である。
【
図4】いくつかの実施形態による、データを圧縮してキャッシュメモリに記憶するためのプロセスを示すフローチャートである。
【
図5】いくつかの実施形態による、データを圧縮してキャッシュメモリに記憶するためのプロセスを示すフローチャートである。
【発明を実施するための形態】
【0007】
図面及び説明を通して、同様の符号は、同じ図面要素を指す。
【0008】
以下の説明は、当業者が、説明する実施形態を作成及び使用することを可能にするために提示され、特定の用途及びその要件に照らして提供される。説明する実施形態に対する様々な変更は、当業者には容易に明らかであり、本明細書で定義される一般的な原理は、他の実施形態及び用途に適用されてもよい。したがって、説明する実施形態は、示された実施形態に限定されず、本明細書で開示される原理及び特徴と一致する最も広い範囲が与えられるべきである。
【0009】
(用語)
以下の説明では、様々な用語が、実施形態を説明するために使用される。以下に、これらの用語のいくつかを簡単且つ一般的に説明する。用語は、明確さ及び簡潔さのために、本明細書に記載されていない重要な追加的態様を有してもよい。したがって、説明は、用語を限定することを意図しないことに留意されたい。
【0010】
機能ブロック:機能ブロックは、集積回路要素、ディスクリート回路要素等の1つ以上の相互に関連する回路要素のグループ、集合、及び/又は、セットを指す。回路要素は、回路要素が少なくとも1つの特性を共有するという点で「相互に関連」している。例えば、相互に関連する回路要素は、特定の集積回路チップ又はその一部に含まれていてもよいし、その上に製造されてもよいし、他の方法で結合されてもよいし、所定の機能(計算又は処理機能、メモリ機能等)の実行に関与してもよいし、共通の制御要素によって制御されてもよい。機能ブロックは、単一の回路要素(例えば、単一の集積回路論理ゲート)から数百万又は数十億の回路要素(例えば、集積回路メモリ)までの任意の数の回路要素を含むことができる。
【0011】
データ:データとは、キャッシュメモリやメモリ(例えば、メインメモリ)に記憶可能な情報や値を指す。例えば、データは、計算動作、制御動作、検知又は監視動作、メモリアクセス動作、入出力デバイス通信等の動作に使用されるか、これらによって生成される情報又は値であるか、これらを含むことができる。別の例として、データは、コンピュータ可読記憶媒体、大容量記憶装置、ネットワークインタフェース、メモリ等から取得されるか、これらに向けられたプログラムコード命令又はプログラムコードからの値(例えば、変数値、定数等)であるか、これらを含むことができる。別の例として、データは、入出力デバイス、センサ、ヒューマンインタフェースデバイス等の機能ブロックから取得されるか、これらに向けられた情報であるか、これらを含むことができる。
【0012】
(概要)
説明する実施形態では、電子デバイスは、第1のキャッシュメモリと第2のキャッシュメモリとを有するキャッシュメモリの階層を含む。第1のキャッシュメモリは、第2のキャッシュメモリよりも階層が下位であり、このため、第2のキャッシュメモリと比較してアクセスが遅く、容量が大きく、及び/又は、キャッシュメモリの階層内のデータにアクセスする実行回路から遠くに配置されていてもよい。例えば、いくつかの実施形態では、第1のキャッシュメモリは、レベル3(L3)キャッシュメモリであり、第2のキャッシュメモリは、レベル2(L2)キャッシュメモリである。説明する実施形態では、データは、データのサイズを縮小し、利用可能なキャッシュメモリの容量をより効率的に使用するために、圧縮されてキャッシュメモリに記憶される(「データ」は、上述したように、キャッシュメモリに記憶され得る値又は情報を記述する一般的な用語であることを想起されたい)。キャッシュメモリ及びデータアクセスエンティティ(例えば、CPUコア、GPUコア等)は、データの圧縮及び解凍に関連する遅延に対して異なる許容範囲を有しているため、説明する実施形態では、キャッシュメモリに記憶されるデータの圧縮の組み合わせを使用する。各キャッシュメモリのデータを圧縮するために使用される特定の圧縮(複数可)は、データアクセス要求への応答を望ましくないほど遅延させる解凍動作を回避しながら、そのキャッシュメモリのデータサイズを縮小するという利点を提供するために選択される。
【0013】
階層のより上位にある第2のキャッシュメモリは、より少ない数の制御クロックサイクル(例えば、12~15クロックサイクル)でアクセス要求に応答することが期待される。したがって、第2のキャッシュメモリの応答時間に数クロックサイクルを超える遅延を追加することは望ましくない。このため、いくつかの実施形態では、第2のキャッシュメモリ内のデータは、少ない、単純な、及び/又は、高速の圧縮動作を含む、より軽い圧縮を使用して圧縮される。これらの実施形態では、第2のキャッシュメモリ内のデータに対してより軽い圧縮のみが使用されるため、圧縮データを第2のキャッシュメモリから取得し、解凍し、比較的短時間でアクセスエンティティに戻すことができる。階層のより下位にある第1のキャッシュメモリは、アクセス要求に迅速に応答することが期待されるが、第1のキャッシュメモリへのアクセスには、多数の制御クロックサイクル(例えば、30~40クロックサイクル)が必要である。したがって、第1のキャッシュメモリの応答時間に数クロックサイクルの遅延を追加しても、影響が比較的小さくなり、アクセスエンティティは、解凍に関連する追加のレイテンシを許容することができる。このため、いくつかの実施形態では、第1のキャッシュメモリ内のデータは、より軽い圧縮と比較して、より多くの、より複雑な、及び/又は、より遅い圧縮動作を含む、より重い圧縮を使用して圧縮される。より重い圧縮を第2のキャッシュメモリのデータに使用すると、より軽い圧縮を使用した場合よりも多くのデータのパターン及び/又は値を圧縮することができるが、データの圧縮及び解凍に比較的長い時間がかかる。
【0014】
いくつかの実施形態では、第1のキャッシュメモリ内のデータを、より重い圧縮を使用して圧縮することができるが、第1のキャッシュメモリ内のデータは、より軽い圧縮又はより重い圧縮の何れかを使用して圧縮される。これらの実施形態では、データは、第1のキャッシュメモリに記憶するためにより軽い圧縮を使用して優先的に圧縮され、データがより軽い圧縮を使用して圧縮できない場合には、より重い圧縮を使用して圧縮される。言い換えれば、(例えば、より軽い圧縮を使用して圧縮される可能性のあるパターン又は値がないデータのために)より軽い圧縮を使用してデータを圧縮する試みが失敗した場合には、これらの実施形態は、より重い圧縮を使用してデータを圧縮することを試みる。これらの実施形態は、より軽い圧縮を使用して圧縮されたデータを、第1のキャッシュメモリから第2のキャッシュメモリにそのまま、中間の解凍無しに、したがってより迅速にコピーすることができるので、より軽い圧縮を優先的に使用する。さらに、より重い圧縮を使用すると、データを第2のキャッシュメモリに記憶する前に解凍する必要があるが、より重い圧縮を行うと、より軽い圧縮を使用して圧縮することができなかったデータを第1のキャッシュメモリに記憶するのに有益なサイズ縮小をもたらすことができる。
【0015】
いくつかの実施形態では、第1のキャッシュメモリ内のデータは、より軽い圧縮とより重い圧縮の両方のシーケンス(したがって、その組み合わせ)を使用して圧縮される。これらの実施形態では、データは、最初に、より軽い圧縮を使用して圧縮され、次に、得られた圧縮されたデータは、より重い圧縮を使用して再び圧縮される。圧縮のシーケンスから出力されるデータを完全に解凍するには、より重い解凍とその後のより軽い解凍との逆のシーケンスを使用して実行される。これらの実施形態では、第1のキャッシュメモリから第2のキャッシュメモリにコピーされる前に、データが解凍され、より重い圧縮の効果を逆転させ、データをより軽い圧縮で圧縮されたままにして、第2のキャッシュメモリに記憶する。これは、第2のキャッシュメモリに記憶するためのデータを準備するためにデータを解凍するというコストがかかるが、第1のキャッシュメモリ内のデータのより重い圧縮の有益なサイズ縮小を利用するために行われる。しかしながら、データを第1のキャッシュメモリから第2のキャッシュメモリにコピーする場合には、データを解凍するだけで、より重い圧縮の効果を逆転させることができ、結果として得られる解凍されたデータは、より軽い圧縮の効果を保持することに留意されたい。これにより、第2のキャッシュメモリにコピーを記憶する際により軽い圧縮を実行する場合よりも、第1のキャッシュメモリから第2のキャッシュメモリにデータをコピーする動作が速くなる。
【0016】
本明細書で説明するように、第1のキャッシュメモリ及び第2のキャッシュメモリのデータを圧縮するために、より軽い圧縮及びより重い圧縮を使用することにより、説明する実施形態は、キャッシュメモリに記憶するデータのサイズを縮小する。さらに、各キャッシュメモリに対して指定された圧縮を使用することにより、データの圧縮及び解凍のレイテンシがキャッシュメモリ間で調整され、アクセスエンティティがアクセス要求への応答において許容できない遅延にさらされることが少なくなる。したがって、説明する実施形態は、キャッシュメモリにより多くのデータを記憶することができるが、データアクセス要求への応答において許容できない遅延をもたらすことがない。より多くのデータをキャッシュメモリに記憶することは、アクセスエンティティがキャッシュメモリ内のより多くのデータにアクセスできることを意味し、メモリ又は大容量記憶装置のデータにアクセスする必要性及び遅延を回避するのに役立つ。そのため、キャッシュメモリ内のより多くのデータにアクセスすると、アクセスエンティティのパフォーマンスが向上し、したがって、電子デバイスの全体的なパフォーマンスが向上し、ユーザの満足度が向上する。
【0017】
(電子デバイス)
図1は、いくつかの実施形態による、電子デバイス100を示すブロック図である。
図1に示すように、電子デバイス100は、プロセッサ102及びメモリ104を含む。一般に、プロセッサ102及びメモリ104は、ハードウェア、すなわち、様々な回路要素及びデバイスを使用して実装される。例えば、プロセッサ102及びメモリ104は、1つ以上の別個の半導体チップを含む1つ以上の半導体チップ上にその全てを製造することができ、ディスクリート回路要素と組み合わせた半導体チップから製造することができ、ディスクリート回路要素のみから製造することができる。本明細書で説明するように、プロセッサ102及びメモリ104は、キャッシュメモリに記憶するためにデータを圧縮することに関連する動作を実行する。
【0018】
プロセッサ102は、電子デバイス100において計算及び他の動作(例えば、制御動作、構成動作等)を実行する機能ブロックである。例えば、プロセッサ102は、1つ以上のマイクロプロセッサ、中央処理装置(CPU)、グラフィカル処理装置(GPU)、加速処理装置(APU)、及び/又は、他の処理機能ブロックであってもよいし、これらを含んでもよい。
図1に示すように、プロセッサ102は、コア106~108を含み、各コアは、計算及び他の動作を実行するマイクロプロセッサコア、グラフィックプロセッサコア、特定用途向け集積回路(ASIC)等の機能ブロックである。コア106~108内で、実行サブシステム110~112は、命令フェッチ/デコードユニット、命令スケジューリングユニット、算術論理演算ユニット(ALU)、浮動小数点演算ユニット、計算ユニット、プログラマブルゲートアレイ等の機能ブロック及び回路要素を含み、これらはプログラムコード命令の実行や他の動作を行う。
【0019】
プロセッサ102は、キャッシュメモリの階層を含み、階層の最下位レベルから最上位レベルに向かって、各コア106~108内のレベル1キャッシュメモリ(L1キャッシュ)114~116と、レベル2キャッシュメモリ(L2キャッシュ)118~120と、コアによって共有されるレベル3キャッシュメモリ(L3キャッシュ)122と、を有する。各キャッシュメモリは、データのコピーを記憶するためのスタティックランダムアクセスメモリ(SRAM)回路等の揮発性メモリ回路と、データへのアクセスなどの動作を処理するための制御回路と、を含む機能ブロックである。階層の各レベルにおいて、各キャッシュメモリは、データのコピーを記憶するための容量(より小さいキャッシュメモリが階層のより上位にある)と、アクセス要求に応答するための応答時間(階層のより上位にあるキャッシュメモリの応答時間がより短い)と、によって少なくとも部分的に特徴付けることができる。例えば、いくつかの実施形態では、L1キャッシュ114~116は、32kBの容量及び(制御クロックの)4~8サイクルの応答時間を有し、L2キャッシュ118~120は、512kBの容量及び12~15サイクルの応答時間を有し、L3キャッシュ122は、4MBの容量及び35~40サイクルの応答時間を有する。したがって、第1レベルでは、64Bキャッシュラインを想定すると、L1キャッシュ114~116は、それぞれ最大512のキャッシュラインを同時に記憶することができ、制御クロックの4~8サイクルでデータアクセス要求に応答することが期待される。
【0020】
上述した実施形態では、データのサイズを縮小するために、データを、当該データが少なくともいくつかのキャッシュメモリに記憶される前に圧縮し、これにより、キャッシュメモリ内に同時に記憶することができるデータの量(例えば、キャッシュラインの数)を増加させる。例えば、64Bのキャッシュラインは、所定のキャッシュメモリに使用される圧縮に応じて、48B、32B、又は、別の値に圧縮することができる。これらの実施形態では、キャッシュメモリは、圧縮データと非圧縮データの両方及びこれらの組み合わせで動作可能な制御メカニズム、ルックアップメカニズム等を含む。例えば、これらのメカニズムは、異なるサイズのデータをキャッシュメモリ内に記憶し(例えば、64Bの非圧縮キャッシュラインと32Bの圧縮キャッシュライン等)、圧縮データと非圧縮データの両方のルックアップを実行し、アクセスエンティティに提供される圧縮データ及び非圧縮データの両方をキャッシュメモリ内から取得すること等を行う。一般に、説明する実施形態では、キャッシュメモリは、圧縮データと非圧縮データの両方及びこれらの組合せで動作可能である。
【0021】
いくつかの実施形態では、キャッシュメモリの階層の各レベルのキャッシュメモリに対して(又は、個々のキャッシュメモリに対して)、異なる圧縮が使用される。これらの実施形態では、各キャッシュメモリに使用可能な特定の圧縮(つまり、最も重い圧縮)が、階層の各レベルのキャッシュメモリ(又は、各キャッシュメモリ)に対して、これらのキャッシュメモリの要求にアクセスするための望ましい応答時間に少なくとも部分的に基づいて選択される。一般に、階層の下位にあるため応答時間が長いキャッシュメモリの応答時間は、より重い圧縮を解凍するレイテンシを追加することによって、比較的影響を受けにくくなる。例えば、所定のキャッシュメモリの40クロックサイクルの応答時間にデータ解凍用の8クロックサイクルを追加すると、応答時間が20%増加するが、応答時間の短縮に対する影響がより顕著である。したがって、階層の下位のキャッシュメモリには、より重い圧縮を使用することができる。例えば、いくつかの実施形態では、階層が最も上位にあり、応答時間が最も短いL1キャッシュ114~116内のデータは圧縮されず、すなわち、データは非圧縮形式でこれらのキャッシュメモリに記憶される。これらの実施形態では、中間の応答時間を有するL2キャッシュ118~120内のデータは、応答時間に対してより少ない解凍レイテンシを追加する、より軽い圧縮のみを使用して圧縮することができる。これらの実施形態では、応答時間が最も長いL3キャッシュ122内のデータは、応答時間に対してより多い解凍レイテンシを追加する、より重い圧縮を使用して圧縮することができる(ただし、本明細書で説明するように圧縮されない場合もある)。
【0022】
いくつかの実施形態では、データの圧縮及び/又は解凍は、キャッシュメモリの階層内のキャッシュメモリに対してローカルに実行される。これらの実施形態では、キャッシュメモリの一部又は全ては、圧縮・解凍機能ブロックに関連付けられており、この近くに配置されてもよい。例えば、圧縮・解凍機能ブロックは、データがキャッシュメモリによって受信され、それを介してデータが他のキャッシュメモリに提供されるデータ信号ルート又はバスのためのインタフェースに組み込まれてもよいし、さもなければ関連付けられてもよい。これらの実施形態では、圧縮・解凍機能ブロックは、対応するキャッシュメモリ内のデータに使用される圧縮(複数可)のための圧縮及び解凍動作を実行するための回路要素を含む。
図1に示す実施形態では、圧縮・解凍機能ブロックは、L2キャッシュ118~120にそれぞれ関連付けられた圧縮・解凍(COM-DECOM)機能ブロック124~126と、L3キャッシュ122に関連付けられた圧縮・解凍機能ブロック128と、を含む。これらの実施形態では、データが対応するキャッシュメモリによって受信されるか提供されると、圧縮・解凍機能ブロックは、必要に応じて、キャッシュメモリに記憶するために受信データを圧縮するか、別のキャッシュメモリ(又は、他のアクセスエンティティ)に提供されるキャッシュメモリからのデータを解凍するための動作を実行する。上記の例を続けると、非圧縮データがL2キャッシュ118によってL1キャッシュ114から受信されて記憶される場合(例えば、実行サブシステム110からのデータがキャッシュメモリの階層を伝播している場合等)、圧縮・解凍機能ブロック124は、より軽い圧縮を使用してデータを圧縮し、次に、圧縮データを提供してL2キャッシュ118に記憶する。さらに、この例を続けると、圧縮データがL1キャッシュ114によってL2キャッシュ118から要求されると、圧縮・解凍機能ブロック124は、L2キャッシュ118から圧縮データを受信し、そのデータをより軽い圧縮から非圧縮状態に解凍し、次に、非圧縮データをL1キャッシュ114に提供する。
【0023】
メモリ104は、電子デバイス100用のメモリ(例えば、「メイン」メモリ)の動作を実行する機能ブロックである。メモリ104は、第4世代ダブルデータレート同期DRAM(DDR4 SDRAM)等の揮発性メモリ回路、及び/又は、他のタイプのメモリ回路を含み、電子デバイス100内の機能ブロックや、メモリ回路に記憶されたデータ及び命令へのアクセスを処理し、他の制御又は構成動作を実行するための制御回路によって使用されるデータ及び命令を記憶する。
【0024】
いくつかの実施形態では、データは、キャッシュメモリの階層内のキャッシュメモリに記憶するために圧縮されるとともに、メモリ104に記憶するために圧縮される。いくつかの実施形態では、データは、圧縮状態で1つ以上の機能ブロック間で通信され、通信のために圧縮されてもよい。いくつかの実施形態では、データは、通信のために圧縮状態のままにされ、宛先キャッシュメモリ又はアクセスエンティティで解凍される。例えば、L2キャッシュ118から取得された圧縮データは、上述したより軽い圧縮の影響を取り除くために(すなわち、圧縮・解凍機能ブロック124において)直ちに解凍されなくてもよく、代わりに、解凍前にL1キャッシュ114に通信されてもよい。これらの実施形態では、圧縮・解凍機能ブロックの配置は、電子デバイス100内の1つ以上の他の場所(例えば、L1キャッシュ114等)におけるローカルな圧縮及び/又は解凍メカニズムとは異なっていてもよい。例えば、L1キャッシュ114からL2キャッシュ118宛てのデータは、L2キャッシュ118に通信される前にL1キャッシュ114で圧縮されてもよく、したがって、圧縮状態(より軽い圧縮が既に適用されている)でL2キャッシュ118に到達してもよい。
【0025】
図1には、キャッシュメモリの特定の構成が示されているが、いくつかの実施形態では、異なる数及び/又は構成のキャッシュメモリが存在する。例えば、いくつかの実施形態では、L1キャッシュ114~116の各々は、コア106~108の各々において2つの別々のキャッシュメモリに分割され、1つのキャッシュメモリは、プログラムコード命令を記憶するためのものであり、1つのキャッシュメモリは、データを記憶するためのものである。一般に、説明する実施形態は、本明細書で説明するデータ圧縮動作を実行することができるキャッシュメモリの任意の構成で動作可能である。さらに、
図1には、複数の圧縮・解凍機能ブロックが示されているが、いくつかの実施形態では、本明細書で説明するようなデータの圧縮及び解凍を実行するために、異なる構成の機能ブロックが使用される。例えば、キャッシュメモリの一部又は全てにおけるキャッシュコントローラは、圧縮及び/又は解凍を実行するための回路要素を組み込むように変更されてもよい。
【0026】
電子デバイス100は、説明のために簡略化されている。しかしながら、いくつかの実施形態では、電子デバイス100は、追加の又は異なる機能ブロック及び要素を含む。例えば、電子デバイス100は、表示サブシステム、電力サブシステム、入出力(I/O)サブシステム等を含むことができる。通常、電子デバイス100は、本明細書で説明する動作を実行するのに十分な機能ブロック及び要素を含む。
【0027】
電子デバイス100は、コンピュータ動作を実行する任意のデバイスであってもよいし、任意のデバイスに含まれてもよい。例えば、電子デバイス100は、デスクトップコンピュータ、ラップトップコンピュータ、ウェアラブルコンピューティングデバイス、タブレットコンピュータ、仮想現実若しくは拡張現実機器、スマートフォン、人工知能(AI)デバイス若しくは機械学習デバイス、サーバ、ネットワークアプライアンス、おもちゃ、オーディオビジュアル機器、家電製品、車両等、及び/又は、これらの組み合わせであってもよいし、これらに含まれてもよい。
【0028】
(データ圧縮)
説明する実施形態では、データは、キャッシュメモリの階層内のキャッシュメモリに記憶するために圧縮され、キャッシュメモリにデータを記憶するため又はデータを使用するために必要に応じて解凍される(本明細書で使用される「データ」は、キャッシュ又はメモリに記憶され得る任意の情報又は値を指すことを想起されたい)。一般に、データの「圧縮」は、データの記憶、様々な通信メカニズムを介したデータの通信、及び、他の動作のために、データのサイズ(例えば、ビット数やバイト数)を可逆的に縮小する動作を含む。データが可逆圧縮されているため、圧縮されたデータを「解凍」して、非圧縮のデータの値を完全に復元することができる。
【0029】
当技術分野で知られている多くのタイプのデータ圧縮及び各タイプの圧縮の様々な実装が存在する。例えば、パターンマッチング圧縮、値マッチング圧縮、ゼロコンテンツ圧縮、Lempel-Ziv(LZ)(及び、変形(variants))圧縮、マルコフ圧縮、並びに、デルタ圧縮は、多くのタイプの圧縮の一部であり、様々な実装が、一部又は全てのタイプの圧縮について提案されている。説明する実施形態は、特定のタイプの圧縮に限定されず、代わりに、キャッシュメモリに記憶されるデータに対して実行可能な圧縮の任意の組み合わせで動作可能である。
【0030】
本明細書で説明するように、いくつかの実施形態では、「より軽い」圧縮と「より重い」圧縮の組み合わせが使用される。一般に、より軽い圧縮は、より重い圧縮の1つ以上のタイプの圧縮よりも圧縮及び/又は解凍がより速い(そして、おそらく非常に速い)1つ以上のタイプの圧縮であるか、又は、それを含む。例えば、いくつかの実施形態では、より軽い圧縮は、(制御クロックの)1~3サイクルで圧縮及び/又は解凍することができるタイプの圧縮であってもよいし、又は、これを含んでもよいのに対して、より重い圧縮は、6~10サイクルで圧縮及び/又は解凍することができる圧縮のタイプであってもよいし、又は、これを含んでもよい。より軽い圧縮とより重い圧縮との違いは、実行される圧縮動作の数、圧縮動作の複雑さ、及び/又は、圧縮動作が実行される速度のうち1つ以上の違いに起因するものであり得る。
【0031】
いくつかの実施形態では、データを圧縮する試みがなされているが、圧縮可能なパターン、値等が、データに存在しない場合がある。例えば、いくつかの実施形態では、先頭の0又は1は、圧縮のために削除されてもよく、データは、先頭の0又は1を有しなくてもよい。この場合、圧縮が機能しない可能性があり、したがって、データは、データの圧縮を試みる前に存在していた初期状態のままである可能性がある(つまり、同じビット数又は同じ値のバイト数を持つ可能性がある)。これらの実施形態では、データは、非圧縮状態でキャッシュメモリの一部又は全てに記憶されてもよい。例えば、上記の例を続けると、より軽い圧縮が所定のデータの縮小/圧縮をもたらさない場合、そのデータは、非圧縮状態でL2キャッシュ118に記憶されてもよい。
【0032】
いくつかの実施形態では、圧縮・解凍機能ブロックは、データが圧縮されるまで、又は、シーケンス内の最後の圧縮が試みられるまで、シーケンス内のデータに対して2つ以上の圧縮を試みることができる。上記の例を続けると、圧縮・解凍機能ブロック128は、最初に、より軽い圧縮を使用して、L3キャッシュ122に記憶するために所定のデータを圧縮しようと試みることができる。より軽い圧縮を使用して所定のデータを圧縮する試みが成功した場合、圧縮されたデータは、より軽い圧縮のみが適用された状態でL3キャッシュ122に記憶され得る。この場合、圧縮された所定のデータがL3キャッシュ122からL2キャッシュ(例えば、L2キャッシュ118)に提供されると、より軽い圧縮がL2キャッシュ内のデータ用に使用されるため、所定のデータが解凍無しに提供され得る。しかしながら、より軽い圧縮が失敗した場合(したがって、データが圧縮されないままの場合)、圧縮・解凍機能ブロック128は、より重い圧縮を使用して所定のデータを圧縮しようと試みることができる。次に、より重い圧縮を使用して圧縮されたか、又は、(より重い圧縮が失敗した場合)圧縮されていない所定のデータがL3キャッシュ122に記憶される。所定のデータがより重い圧縮を使用して圧縮されると、圧縮・解凍機能ブロック128は、所定のデータをL2キャッシュに提供する前に、所定のデータを解凍して、より重い圧縮の効果を逆転させる。
【0033】
いくつかの実施形態では、前の段落の例とは異なり、圧縮・解凍機能ブロックは、シーケンス内のデータに2つ以上の圧縮を適用することができる。一般に、これらの実施形態では、所定のデータは、より軽い圧縮を使用して圧縮され、次に、所定のデータ(より軽い圧縮の影響を含む)は、より重い圧縮を使用して再び圧縮される。複合圧縮は、より重い圧縮とより軽い圧縮の両方を使用可能なキャッシュメモリに記憶されるデータに対して実行される。例えば、これらの実施形態のいくつかでは、複合圧縮をL3キャッシュ122で使用することができる。これらの実施形態では、複合圧縮を実行する圧縮・解凍機能ブロックは、各圧縮の可変長データを処理するように構成されてもよい。言い換えると、より軽い圧縮では、特定のデータが圧縮される場合とされない場合があるため、より重い圧縮では、圧縮されていないデータと、より軽い圧縮を使用して圧縮されたデータの両方を処理できる必要がある。
【0034】
(キャッシュメモリの階層内のキャッシュメモリに記憶するためのデータの圧縮)
上述した実施形態では、データは、キャッシュメモリの階層(例えば、L1キャッシュ114~116、L2キャッシュ118~120、及び、L3キャッシュ122)内のキャッシュメモリに記憶するために圧縮される。圧縮・解凍機能ブロック(例えば、圧縮・解凍機能ブロック124~128)は、データがメモリ(例えば、メモリ104)からキャッシュメモリの階層内のキャッシュメモリを介して上位にコピーされる場合に、データが所定の圧縮を使用してキャッシュメモリに記憶されるように、データを圧縮及び解凍するための動作を実行する。さらに、データが、キャッシュメモリの階層内のキャッシュメモリを介してコア(例えば、コア106)によって下位に提供される場合に、圧縮・解凍機能ブロックは、データが所定の圧縮を使用してキャッシュメモリに記憶されるように、データを圧縮及び解凍するための動作を実行する。
図2は、いくつかの実施形態による、データが、キャッシュメモリの階層内のキャッシュメモリを介して上位にコピーされる場合に、データに対して実行される圧縮及び解凍を示すブロック図である。
図3は、いくつかの実施形態による、データが、キャッシュメモリの階層内のキャッシュメモリを介して下位にコピーされる場合に、データに対して実行される圧縮及び解凍を示すブロック図である。
図2~
図3に示す動作は、いくつかの実施形態によって実行される機能の一般的な例として提示されていることに留意されたい。他の実施形態によって実行される動作は、異なる動作、異なる順序で実行される動作、及び/又は、異なるエンティティ若しくは機能ブロックによって実行される動作を含む。
【0035】
図2~
図3の例では、一度に1つの圧縮のみがデータに適用されると想定している。本明細書の他の箇所で説明するように、いくつかの実施形態では、特定のキャッシュメモリ(例えば、L3キャッシュ122)において、2つの圧縮のシーケンスをデータに適用することができ、その結果、データは、第1の圧縮(例えば、より軽い圧縮)を使用して1回圧縮され、次に、既に圧縮されたデータは、第2の圧縮(例えば、より重い圧縮)を使用して再度圧縮される。圧縮の組み合わせの例が提供されていないが、動作は同様である。ただし、両方の圧縮をシーケンス内のデータに適用でき、対応する解凍動作を使用してデータを解凍する点が異なる。
【0036】
図2~
図3の例では、様々な圧縮と解凍が、データがメモリとの間で伝播される場合に、所定の時間に/各キャッシュメモリ内でデータに適用されることを説明している。いくつかの実施形態では、圧縮及び/又は解凍の一部又は全ては、データに適用されず、及び/又は、圧縮及び/又は解凍は、異なる方法でデータに適用される。例えば、いくつかの実施形態では、特定のタイプのデータアクセス(例えば、より優先度の高いデータアクセス等)について、非圧縮データは、キャッシュメモリに記憶されることなく、要求エンティティ(例えば、コア等)に直接提供される。別の例として、いくつかの実施形態では、メモリから取得された非圧縮データは、要求エンティティにバイパスされる(したがって、要求エンティティは、できるだけ早くデータが提供される)が、コピーもキャッシュメモリの一部又は全てに(おそらく並行して)提供され、そこに記憶される前に圧縮される。
【0037】
図3の例では、メモリに記憶されるコア106等のデータソースによって提供されるデータのコピーは、キャッシュメモリの階層を介して下位に(すなわち、ライトスルーキャッシュメモリのように)キャッシュメモリに記憶されると想定している。したがって、この例では、データのコピーが階層を下位にメモリに向かって進むにつれて、コピーが各キャッシュメモリに記憶される。いくつかの実施形態では、データのコピーは、このように階層を介して下位に伝播されずに、代わりに、最初に階層の最上位のキャッシュ(例えば、L1キャッシュ114~116)に書き込まれ、その後、キャッシュメモリからのエビクトを介して下方に(つまり、ライトバックキャッシュメモリのように)伝播される。しかしながら、
図3で説明した圧縮・解凍動作は、これらの実施形態において同様であり、データのコピーが各キャッシュメモリに記憶されている場合に実行される。
【0038】
図2の動作は、L3キャッシュ122に記憶される非圧縮状態のデータのコピー(例えば、メモリ内の指定されたアドレスからの64Bキャッシュライン)が、メモリ104から取得されるときに開始する。データがL3キャッシュ122に記憶される前に、圧縮・解凍機能ブロック128は、最初に、より軽い圧縮200を使用してデータを圧縮しようと試みる。この動作のために、圧縮・解凍機能ブロック128は、使用中の特定のより軽い圧縮に従って、パターンマッチング、値置換等の圧縮動作を行う。より軽い圧縮が成功した場合、圧縮・解凍機能ブロック128は、データに関連するメタデータを更新して、データを、より軽い圧縮を使用して圧縮されたものとしてマークし、圧縮されたデータをL3キャッシュ122に提供して記憶する(これは、より重い圧縮202をバイパスする線で示されている)。
【0039】
より軽い圧縮を使用してデータを圧縮する試みが失敗し、したがって、データが圧縮されないままである場合(つまり、データに、より軽い圧縮が適用されるパターンや値等が存在しない場合)、圧縮・解凍機能ブロック128は、より重い圧縮202を使用してデータを圧縮しようと試みる。この動作のために、圧縮・解凍機能ブロック128は、使用中の特定のより重い圧縮に従って、パターンマッチング、値置換等の圧縮動作を行う。より重い圧縮が成功した場合、圧縮・解凍機能ブロック128は、データに関連するメタデータを更新して、データを、より重い圧縮を使用して圧縮されたものとしてマークし、圧縮されたデータをL3キャッシュ122に提供して記憶する。そうではなく、より重い圧縮を使用してデータを圧縮する試みが失敗し、したがって、データが圧縮されないままである場合(つまり、データに、より重い圧縮が適用されるパターン、値等が存在しない場合)、圧縮・解凍機能ブロック128は、データに関連するメタデータを更新して、データを非圧縮としてマークし、非圧縮データをL3キャッシュ122に提供して記憶する。
【0040】
データのコピーをL2キャッシュ118に提供する要求を受信すると、データがより重い圧縮を使用して圧縮されたものとしてマークされている場合、L3キャッシュ122は、そのデータを圧縮・解凍機能ブロック128に提供する。圧縮・解凍機能ブロック128は、より重い解凍204を適用して、データに対するより重い圧縮を逆転させ、それによって、データを非圧縮状態に復元する。次に、圧縮・解凍機能ブロック128は、データに関連するメタデータを更新して、データを非圧縮としてマークし、非圧縮状態のデータをL2キャッシュ118に転送するためにL3キャッシュ122に提供する。そうではなく、データがより軽い圧縮を使用して圧縮されているものとしてマークされているか、圧縮されていない場合、L3キャッシュ122は、圧縮・解凍機能ブロック128を使用せずに、データをL2キャッシュ118に直ちに提供する(より重い解凍204をバイパスする線によって示されている)。L2キャッシュ118は、非圧縮状態のデータか、より軽い圧縮を使用して圧縮されたデータを受信すると、そのデータを記憶する。
【0041】
データのコピーをL1キャッシュ114に提供する要求を受信すると、データがより軽い圧縮を使用して圧縮されたものとしてマークされている場合、L2キャッシュ118は、データを圧縮・解凍機能ブロック124に提供する。圧縮・解凍機能ブロック124は、より軽い解凍206を適用して、データに対するより軽い圧縮を逆転させ、それによって、データを非圧縮状態に復元する。次に、圧縮・解凍機能ブロック124は、データに関連するメタデータを更新して、データを非圧縮としてマークし、非圧縮状態のデータを、L1キャッシュ114に転送するためにL2キャッシュ118に提供する。そうではなく、データが非圧縮としてマークされている場合、L2キャッシュ118は、圧縮・解凍機能ブロック124を使用せずに、データをL1キャッシュ114に直ちに提供する(より軽い解凍206をバイパスする線によって示されている)。L1キャッシュ114は、非圧縮状態のデータを受信すると、そのデータを記憶する。次に、L1キャッシュ114は、コア106等のアクセスエンティティにデータを提供することができ、このアクセスエンティティは、データのコピーをL1キャッシュ114に記憶する要求を生成することができる。
【0042】
図3の動作は、メモリ104に記憶される非圧縮状態のデータのコピーが、コア106等のデータソースからL1キャッシュ114に提供される場合に開始する。L1キャッシュ114は、データのコピーを(例えば、データを含む64Bキャッシュラインに)非圧縮状態でL1キャッシュ114に記憶し、データセットに関連するメタデータは、データが非圧縮状態にあることを示す。また、L1キャッシュ114は、非圧縮状態のデータのコピーをL2キャッシュ118に転送して記憶する。
【0043】
L2キャッシュ118は、データのコピーを受信すると、データを圧縮・解凍機能ブロック124に提供する。圧縮・解凍機能ブロック124は、より軽い圧縮300を使用してデータを圧縮しようと試みる。この動作のために、圧縮・解凍機能ブロック124は、使用中の特定のより軽い圧縮に従って、パターンマッチング、値置換等の圧縮動作を行う。より軽い圧縮が成功した場合、圧縮・解凍機能ブロック124は、データに関連するメタデータを更新して、データがより軽い圧縮を使用して圧縮されたものとしてマークし、圧縮されたデータをL2キャッシュ118に提供して記憶する。より軽い圧縮を使用してデータを圧縮する試みが失敗し、したがって、データが圧縮されないままである場合(つまり、データに、より軽い圧縮が適用されるパターンや値等が存在しない場合)、圧縮・解凍機能ブロック124は、圧縮されていないデータをL2キャッシュ118に提供して記憶する。また、L2キャッシュ118は、非圧縮状態にあるか、より軽い圧縮を使用して圧縮されたデータのコピーをL3キャッシュ122に転送して記憶する。
【0044】
L3キャッシュ122は、データのコピーを受信すると、データに関連するメタデータが、データがより軽い圧縮を使用して圧縮されていることを示す場合に、圧縮データを記憶する(これは、より重い圧縮302をバイパスする線によって示されている)。そうではなく、データに関連するメタデータが、データが非圧縮であることを示している場合に、L3キャッシュ122は、データを圧縮・解凍機能ブロック128に提供する。圧縮・解凍機能ブロック128は、より重い圧縮302を使用してデータを圧縮しようと試みる。この動作のために、圧縮・解凍機能ブロック128は、使用中の特定のより軽い圧縮に従って、パターンマッチング、値置換等の圧縮動作を行う。より重い圧縮が成功した場合、圧縮・解凍機能ブロック128は、データに関連するメタデータを更新して、データをより重い圧縮を使用して圧縮されたものとしてマークし、圧縮されたデータをL3キャッシュ122に提供して記憶する。より重い圧縮を使用してデータを圧縮する試みが失敗し、したがって、データが圧縮されないままである場合(つまり、データに、より軽い圧縮が適用されるパターン、値等が存在しない場合)、圧縮・解凍機能ブロック128は、圧縮されていないデータをL3キャッシュ122に提供して記憶する。
【0045】
また、L3キャッシュ122は、データのコピーをメモリ104に提供する。いくつかの実施形態では、データは、非圧縮状態でメモリ104に記憶される。これらの実施形態では、より軽い圧縮を使用するデータがL2キャッシュ118から受信されると、L3キャッシュ122は、データを圧縮・解凍機能ブロック128に提供する。圧縮・解凍機能ブロック128は、より軽い解凍動作304を適用して、データに対するより軽い圧縮を逆転させ、それによって、データを非圧縮状態に復元する。次に、L3キャッシュ122は、非圧縮状態のデータをメモリに提供する。そうでなければ、L3キャッシュ122が非圧縮データを受信すると、L3キャッシュ122は、データを解凍するために圧縮・解凍機能ブロック128を使用せずに、データを直ちにメモリに提供する(これは、より軽い解凍304をバイパスする線によって示されている)。非圧縮状態のデータを受信すると、メモリはそのデータを記憶する。いくつかの実施形態では、データは、圧縮状態でメモリに記憶される。これらの実施形態では、メモリで使用される特定の圧縮に応じて、L3キャッシュ122は、圧縮状態のデータをメモリ104に提供して記憶することができ、又は、L3キャッシュ122は、説明したように非圧縮状態のデータを提供することができ、メモリ内の圧縮・解凍メカニズムは、データがメモリ104に記憶される前に、対応する圧縮を使用してデータを圧縮することができる。
【0046】
(キャッシュメモリに記憶するためにデータを圧縮するプロセス)
上述した実施形態では、電子デバイスは、電子デバイス内のキャッシュメモリの階層内のキャッシュメモリに記憶するために、所定の圧縮を使用してデータを圧縮する動作を実行する。
図4は、いくつかの実施形態による、データを圧縮してキャッシュメモリに記憶するためのプロセスを示すフローチャートである。
図4に示す動作は、いくつかの実施形態によって実行される動作の一般的な例として示されていることに留意されたい。他の実施形態により実行される動作は、異なる動作、異なる順序で実行される動作、及び/又は、異なるエンティティ若しくは機能ブロックによって実行される動作を含む。
【0047】
図4の例では、第1のキャッシュメモリ(例えば、L3キャッシュ122)は、第1の圧縮(例えば、より重い圧縮)及び第2の圧縮(例えば、より軽い圧縮)の何れかを使用して圧縮されたデータを(非圧縮データと共に)記憶することができると想定され、したがって、対応する圧縮・解凍機能ブロック(例えば、圧縮・解凍機能ブロック128)は、第1の圧縮及び第2の圧縮を使用してデータを圧縮及び解凍することができる。さらに、第2のキャッシュメモリ(例えば、L2キャッシュ118)は、第2の圧縮を使用して圧縮されたデータのみを(非圧縮データと共に)記憶することができると想定され、したがって、対応する圧縮・解凍機能ブロック(例えば、圧縮・解凍機能ブロック124)は、第2の圧縮のみを使用してデータを圧縮及び解凍することができる。この例では、第2のキャッシュメモリは、第1の圧縮を使用して圧縮されたデータを記憶することができない。さらに、第3のキャッシュメモリ(例えば、L1キャッシュ114)は、非圧縮データのみを記憶するものと想定している。
【0048】
また、
図4の例では、第1の圧縮及び第2の圧縮のうち一方のみが、第1のキャッシュメモリに記憶されるデータに適用される。ただし、これは要件ではない。
図5は、第1のキャッシュメモリに記憶されるデータに圧縮シーケンスが適用される実施形態を示すフローチャートである。
【0049】
図4の動作は、圧縮・解凍機能ブロックが非圧縮状態のデータを受信した場合に開始する(ステップ400)。この動作のために、圧縮・解凍機能ブロックは、非圧縮状態でメモリ(例えば、メモリ104)又は別のソース(例えば、ネットワークインタフェース、プロセッサなど)から64Bキャッシュライン等のデータを受信する。「非圧縮」状態では、データのタイプに応じたデータのビット/バイトのフルセットが存在し、データの値を表すように構成されており、データは未だ圧縮されていない。例えば、データが1つ以上の32ビット浮動小数点値を含む場合、1つ以上の値(符号、指数、小数等)の各々を表す全ての32ビットが存在する。
【0050】
次に、圧縮・解凍機能ブロックは、第1の圧縮及び第2の圧縮のうち何れかを使用してデータを圧縮する(ステップ402)。第1の圧縮及び第2の圧縮の各々は、非圧縮データのビット/バイトの一部又は全てが削除、縮小、置換又は他の方法で変更される、1つ以上の圧縮動作を含む。第1の圧縮及び第2の圧縮の各々に対する特定の1つ以上の圧縮動作、つまり、各々の圧縮中に非圧縮データに加えられる変更は、圧縮のタイプによって異なる。例えば、第1の圧縮及び/又は第2の圧縮は、パターンマッチング圧縮、値マッチング圧縮、ゼロコンテンツ圧縮、Lempel-Ziv(LZ)(及び、変形)圧縮、マルコフ圧縮、デルタ圧縮等のうち1つ以上であってもよいし、これらを含んでもよい。
【0051】
ステップ402の動作では、圧縮・解凍機能ブロックは、第1の圧縮及び第2の圧縮の何れかを使用してデータを圧縮する場合、最初に第2の圧縮(例えば、より軽い圧縮)を使用してデータを圧縮しようと試みる。第1のキャッシュメモリ及び第2のキャッシュメモリの両方が第2の圧縮を使用して圧縮されたデータを記憶することができ、そして解凍することができるので、第2の圧縮は、第1の圧縮(例えば、より重い圧縮)の前に試みられる。したがって、データが第1のキャッシュメモリから第2のキャッシュメモリにコピーされる場合に、データを解凍せずにデータをコピーすることができ、これにより、圧縮・解凍機能ブロックが、対応する解凍動作を実行する必要がない。データが第2の圧縮を使用して圧縮される場合、圧縮・解凍機能ブロックは、データに関連するメタデータ(例えば、1つ以上のビット)を設定して、データが第2の圧縮を使用して圧縮されたことを示し、圧縮されたデータを第1のキャッシュメモリに提供して記憶する(ステップ404)。
【0052】
第2の圧縮を試みても、対応するパターンや値などが不足しているため、第2の圧縮ではデータが圧縮される結果にならず、したがって、データが非圧縮状態のままになる可能性がある。この場合、圧縮・解凍機能ブロックは、第1の圧縮を使用してデータを圧縮しようと試みる。圧縮・解凍機能ブロックが第1の圧縮を試みる理由は、第1の圧縮を使用して圧縮されたデータを第1のキャッシュメモリから第2のキャッシュメモリにコピーする際にデータを解凍する必要があるにもかかわらず、データを第1のキャッシュメモリに記憶するために圧縮して、第1のキャッシュメモリで使用可能なストレージをより有効に使用することが望ましいからである。データが第1の圧縮を使用して圧縮されると、圧縮・解凍機能ブロックは、データに関連するメタデータを設定して、データが第1の圧縮を使用して圧縮されたことを示し、圧縮されたデータを第1のキャッシュメモリに提供して記憶する(ステップ404)。
【0053】
図4の例では、データは、第1の圧縮及び第2の圧縮の何れかを使用して正常に圧縮されたものと想定されている。第1の圧縮及び第2の圧縮を使用してデータを圧縮しようとしたにもかかわらず、データを圧縮できなかった場合には、データは、非圧縮状態で第1のキャッシュメモリに記憶される。この場合、圧縮されていないデータは、ステップ408において、第1のキャッシュメモリから第2のキャッシュメモリに単にコピーされる。
【0054】
データが第1のキャッシュメモリから読み出されて第2のキャッシュメモリに記憶される場合、データが第1の圧縮を使用して圧縮されていると、圧縮・解凍機能ブロックは、データを解凍してデータに対する第1の圧縮の効果を逆転させることによって、データを非圧縮状態に復元する(ステップ406)。この動作の場合、圧縮・解凍機能ブロックは、1つ以上の解凍動作を実行し、その間に、以前に削除、縮小、置換、又は、他の方法で変更されたデータのビット/バイトの一部又は全てが元の完全な値に復元される。圧縮と同様に、実行される特定の1つ以上の解凍動作は、第1の圧縮のタイプによって異なる。この動作中、圧縮・解凍機能ブロックは、データを第2のキャッシュメモリに記憶可能な状態(非圧縮)にする。次に、データは、第2の圧縮を使用して圧縮された(ステップ402で圧縮された)か非圧縮状態の何れかの状態で、第2のキャッシュメモリに提供され、記憶される(ステップ408)。
【0055】
データが第2のキャッシュメモリから読み出されて第3のキャッシュメモリに記憶される場合、データが第2の圧縮を使用して圧縮されていると、圧縮・解凍機能ブロックは、データを解凍してデータに対する第2の圧縮の効果を逆転させることによって、データを非圧縮状態に復元する(ステップ410)。この動作の場合、圧縮・解凍機能ブロックは、1つ以上の解凍動作を実行し、その間に、以前に削除、縮小、置換、又は、他の方法で変更されたデータのビット/バイトの一部又は全てが元の完全な値に復元される。圧縮と同様に、実行される特定の1つ以上の解凍動作は、第2の圧縮のタイプによって異なる。この動作中、圧縮・解凍機能ブロックは、データを第3のキャッシュメモリに記憶可能な状態(非圧縮)にする。次に、データは、非圧縮状態で、第2のキャッシュメモリに提供され、記憶される(ステップ412)。
【0056】
図5を参照すると、
図5は、いくつかの実施形態による、データを圧縮してキャッシュメモリに記憶するためのプロセスを示すフローチャートである。
図5に示す動作は、いくつかの実施形態によって実行される動作の一般的な例として示されていることに留意されたい。他の実施形態によって実行される動作は、異なる動作、異なる順序で実行される動作、及び/又は、異なるエンティティ若しくは機能ブロックによって実行される動作を含む。
【0057】
図5の例では、第1のキャッシュメモリ(例えば、L3キャッシュ122)は、第2の圧縮(例えば、より軽い圧縮)及び第1の圧縮(例えば、より重い圧縮)のシーケンスを使用して圧縮されたデータを(非圧縮データと共に)記憶することができると想定されており、したがって、対応する圧縮・解凍機能ブロック(例えば、圧縮・解凍機能ブロック128)は、第1の圧縮及び第2の圧縮を使用してデータを圧縮及び解凍することができる。さらに、第2のキャッシュメモリ(例えば、L2キャッシュ118)は、第2の圧縮を使用して圧縮されたデータのみを(非圧縮データと共に)記憶することができると想定されており、したがって、対応する圧縮・解凍機能ブロック(例えば、圧縮・解凍機能ブロック124)は、第2の圧縮のみを使用してデータを圧縮及び解凍することができる。この例では、第2のキャッシュメモリは、第1の圧縮を使用して圧縮されたデータを記憶することができない。さらに、第3のキャッシュメモリ(例えば、L1キャッシュ114)は、非圧縮データのみを記憶するものと想定されている。
【0058】
また、
図4の例とは異なり、
図5の例では、第2の圧縮と第1の圧縮の両方のシーケンスが、第1のキャッシュメモリに記憶されるデータに適用される。つまり、データは、第2の圧縮を使用して圧縮され、既に圧縮されたデータが、第1の圧縮を使用して再度圧縮される。この圧縮の組み合わせにより、何れかの圧縮のみを行う場合よりもデータサイズをさらに縮小することができる。いくつかの実施形態では、後者の圧縮、すなわち第1の圧縮は、異なる長さのデータを処理するための1つ以上の動作を含むが、これは、データが、第2の圧縮を使用して正常に圧縮されている可能性もあるし、圧縮されていない(データに第2の圧縮で圧縮可能なパターン、値等が存在しない場合)可能性もあるためである。
【0059】
また、
図5の例では、データは、第2の圧縮及び第1の圧縮のシーケンスを使用して正常に圧縮されているものと想定されている。第1の圧縮及び/又は第2の圧縮を使用してデータを圧縮しようとしたにもかかわらず、データを圧縮できなかった場合には、データは、非圧縮状態又は他の何らかの1回圧縮の状態で、第1のキャッシュメモリに記憶される。この場合、
図5の動作は、1回圧縮の圧縮データを使用して動作するように変更されている(
図4と同様)。
【0060】
図5の動作は、圧縮・解凍機能ブロックが非圧縮状態のデータを受信した場合に開始する(ステップ500)。この動作のために、圧縮・解凍機能ブロックは、非圧縮状態でメモリ(例えば、メモリ104)又は別のソース(例えば、ネットワークインタフェース、プロセッサ等)から64Bキャッシュライン等のデータを受信する。「非圧縮」状態では、データのタイプに応じたデータのビット/バイトのフルセットが存在し、データの値を表すように構成されており、データは未だ圧縮されていない。例えば、データに1つ以上の32ビット浮動小数点値が含まれている場合、各々の値(符号、指数、小数等)を表す全ての32ビットが存在する。
【0061】
次に、圧縮・解凍機能ブロックは、第2の圧縮の次に第1の圧縮というシーケンスを使用して、データを圧縮する(ステップ502)。第1の圧縮及び第2の圧縮の各々は、データのビット/バイトの一部又は全てが削除、縮小、置換、又は、他の方法で変更される、1つ以上の圧縮動作を含む。第1の圧縮及び第2の圧縮の各々に対する特定の1つ以上の圧縮動作、つまり各々の圧縮中にデータに加えられる変更は、圧縮のタイプによって異なる。例えば、第1の圧縮及び/又は第2の圧縮は、パターンマッチング圧縮、値マッチング圧縮、ゼロコンテンツ圧縮、Lempel-Ziv(LZ)(及び、変形)圧縮、マルコフ圧縮、デルタ圧縮等のうち1つ以上であってもよいし、これらを含んでもよい。
【0062】
ステップ502の動作では、データに対して第2の圧縮と第1の圧縮の両方が実行される。第2の圧縮が最初に実行され、したがって、データは、最初に第2の圧縮を使用して圧縮されるが、その理由は、第2のキャッシュメモリは、第2の圧縮を使用して圧縮されたデータを記憶すること及び解凍することの両方が可能であるからである。次に、データサイズをさらに縮小する試みにおいて、第1の圧縮が実行される。この圧縮順序により、データを解凍して第1の圧縮の効果を逆転させ、コピーを第2のキャッシュメモリに記憶する準備として、データを、第2の圧縮の効果のみを有するように復元することができる。第2の圧縮及び第1の圧縮のシーケンスを使用してデータを圧縮した後に、圧縮・解凍機能ブロックは、データに関連するメタデータ(例えば、1つ以上のビット)を設定して、データが、第2の圧縮及び第1の圧縮のシーケンスを使用して圧縮されたことを示し、圧縮されたデータを第1のキャッシュメモリに提供して記憶する(ステップ504)。
【0063】
データが第1のキャッシュメモリから読み出されて第2のキャッシュメモリに記憶される場合、圧縮・解凍機能ブロックは、データを解凍してデータに対する第1の圧縮の効果を逆転させることによって、データを、データが第2の圧縮のみを使用して圧縮されている状態に復元する(ステップ506)。この動作の場合、圧縮・解凍機能ブロックは、1つ以上の解凍動作を実行し、その間に、以前に削除、縮小、置換、又は、他の方法で変更されたデータのビット/バイトの一部又は全てが、第2の圧縮の後の値に復元される。圧縮と同様に、実行される特定の1つ以上の解凍動作は、第1の圧縮のタイプによって異なる。この動作中、圧縮・解凍機能ブロックは、データを第2のキャッシュメモリに記憶可能な状態(第2の圧縮のみを使用して圧縮)にし、データに関連するメタデータを更新して、データが第2の圧縮のみを使用して圧縮されていることを示す。次に、第2の圧縮(ステップ502で圧縮される)を使用して圧縮されたデータは、第2のキャッシュメモリに提供され、記憶される(ステップ508)。
【0064】
データが第2のキャッシュメモリから読み出されて第3のキャッシュメモリに記憶される場合、圧縮・解凍機能ブロックは、データを解凍してデータに対する第2の圧縮の効果を逆転させることによって、データを非圧縮状態に復元する(ステップ510)。この動作の場合、圧縮・解凍機能ブロックは、1つ以上の解凍動作を実行し、その間に、以前に削除、縮小、置換、又は、他の方法で変更されたデータのビット/バイトの一部又は全てが元の完全な値に復元される。圧縮と同様に、実行される特定の1つ以上の解凍動作は、第2の圧縮のタイプによって異なる。この動作中、圧縮・解凍機能ブロックは、データを第3のキャッシュメモリに記憶可能な状態(非圧縮)にする。次に、非圧縮状態のデータは、第2のキャッシュメモリに提供され、記憶される(ステップ512)。
【0065】
いくつかの実施形態では、電子デバイス(例えば、電子デバイス100及び/又はその一部)は、非一時的なコンピュータ可読記憶媒体に記憶されたコード及び/又はデータを使用して、本明細書で説明する動作の一部又は全てを実行する。より具体的には、電子デバイスは、コンピュータ可読記憶媒体からコード及び/又はデータを読み出し、説明した動作を実行する際にコードを実行し及び/又はデータを使用する。コンピュータ可読記憶媒体は、電子デバイスによって使用されるコード及び/又はデータを記憶する任意のデバイス、媒体又はこれらの組み合わせであってもよい。例えば、コンピュータ可読記憶媒体は、フラッシュメモリ、ランダムアクセスメモリ(例えば、eDRAM、RAM、SRAM、DRAM、DDR4 SDRAM等)、読み出し専用メモリ(ROM)、及び/又は、磁気若しくは光学記憶媒体(例えば、ディスクドライブ、磁気テープ、CD、DVD等)を含む揮発性メモリ及び/又は不揮発性メモリを含むことができるが、これらに限定されない。
【0066】
いくつかの実施形態では、1つ以上のハードウェアモジュールが、本明細書で説明する動作を実行する。例えば、ハードウェアモジュールは、1つ以上のプロセッサ/コア/中央処理装置(CPU)、特定用途向け集積回路(ASIC)チップ、ニューラルネットワークプロセッサ若しくはアクセラレータ、フィールドプログラマブルゲートアレイ(FPGA)、計算ユニット、組み込みプロセッサ、グラフィックプロセッサ(GPU)/グラフィックコア、パイプライン、加速処理ユニット(APU)、機能ブロック、コントローラ、圧縮・解凍機能ブロック、及び/又は、他のプログラマブルロジックデバイスを含むことができるが、これらに限定されない。このようなハードウェアモジュールが起動されると、ハードウェアモジュールは、動作の一部又は全てを実行する。いくつかの実施形態では、ハードウェアモジュールは、命令(プログラムコード、ファームウェア等)を実行することによって動作を実行するように構成された1つ以上の汎用回路を含む。
【0067】
いくつかの実施形態では、本明細書で説明する構造及びメカニズム(例えば、電子デバイス100、圧縮・解凍機能ブロック124~128、キャッシュメモリの階層内のキャッシュメモリ、及び/又は、これらの一部)の一部又は全てを表すデータ構造は、データベース、又は、電子デバイスによって読み出すことができ、構造及びメカニズムを含むハードウェアを製造するために直接的又は間接的に使用することができる他のデータ構造を含む、非一時的なコンピュータ可読記憶媒体に記憶されている。例えば、データ構造は、Verilog又はVHDL等の高レベル設計言語(HDL)におけるハードウェア機能の動作レベル記述又はレジスタトランスファレベル(RTL)記述であってもよい。記述は、合成ツールによって読み出されてもよく、合成ツールは、記述を合成して、上述した構造及びメカニズムを含むハードウェアの機能を表すゲート/回路要素のリストを含むネットリストを、合成ライブラリから生成することができる。次に、ネットリストは、配置され、ルーティングされ、マスクに適用される幾何学的形状を記述するデータセットが生成され得る。次いで、上述した構造及びメカニズムに対応する1つ以上の半導体回路(例えば、集積回路)を製造するために、様々な半導体製造ステップでマスクが使用され得る。或いは、コンピュータアクセス可能記憶媒体上のデータベースは、必要に応じて、ネットリスト(合成ライブラリの有無にかかわらず)若しくはデータセット又はグラフィックデータシステム(GDS)IIデータであってもよい。
【0068】
この説明では、変数又は不特定の値(すなわち、値の特定のインスタンスを持たない、値の一般的な説明)は、N等の文字で表されている。同様の文字が本説明の他の箇所で使用され得るが、本明細書で使用されるように、各場合における変数及び不特定の値は、必ずしも同じではなく、すなわち、一般的な変数及び不特定値の一部又は全てに対して、異なる変数量及び値が存在してもよい。言い換えると、この説明において変数及び不特定値を表すために使用されるN及び他の文字は、必ずしも互いに関連するわけではない。
【0069】
本明細書で使用される「等(et cetra)」又は「等(etc.)」という表現は、「及び/又は」のケース、すなわち、「等」が関連するリスト内の要素のうち「少なくとも1つ」に相当するものを提示することを意図している。例えば、「電子デバイスは、第1の動作、第2の動作等を実行する」という文において、電子デバイスは、第1の動作、第2の動作、及び、他の動作のうち少なくとも1つを実行する。さらに、「等」に関連するリスト内の要素は、一組の実施例の中の単なる例であり、実施例の少なくともいくつかは、いくつかの実施形態では現れない場合がある。
【0070】
実施形態の上記の説明は、例示及び説明のためにのみ提示されている。これらは、網羅的であること、又は、実施形態を開示された形態に限定することを、意図していない。したがって、当業者は、多くの変更及び変形が明らかであろう。さらに、上記の開示は、実施形態を限定することを意図していない。実施形態の範囲は、添付の特許請求の範囲によって定義される。