(57)【要約】  態様は、キャッシュバンク分散を使用して、圧縮データ用のキャッシュメモリアクセス要求を実装するためのコンピューティングデバイス、システム、および方法を含む。一態様では、キャッシュバンク分散は、キャッシュメモリアクセスの圧縮データが単一のキャッシュバンク上で適合するかどうかを判定することを含み得る。圧縮データが単一のキャッシュバンク上で適合するとの判定に応答して、データ圧縮中にクリアされ得るキャッシュメモリアクセス要求のキャッシュメモリのための物理アドレスのバンク選択ビットを置き換える/回復するために、キャッシュバンク分散値が計算され得る。キャッシュメモリの物理空間内のキャッシュバンク分散アドレスは、回復されたバンク選択ビットを加えた、キャッシュメモリアクセス要求の物理アドレスを含み得る。キャッシュバンク分散アドレスは、キャッシュメモリデバイスから圧縮データを読み取るか、またはキャッシュメモリデバイスに圧縮データを書き込むために使用され得る。
2017532657.tif 000002
【特許請求の範囲】
【請求項１】
コンピューティングデバイス上で圧縮データ用のキャッシュメモリアクセス要求を実行するための方法であって、
キャッシュバンク分散アドレスを生成するキャッシュメモリアクセス要求の物理アドレスの1つまたは複数のバンク選択ビットを回復するステップと、
前記キャッシュバンク分散アドレスにおいて前記キャッシュメモリアクセス要求を実行するステップと
を含む方法。
【請求項２】
圧縮データがキャッシュメモリデバイスの単一のキャッシュバンクのキャッシュライン上で適合するかどうかを判定するステップをさらに含み、
キャッシュバンク分散アドレスを生成するキャッシュメモリアクセス要求の物理アドレスの1つまたは複数のバンク選択ビットを回復するステップが、前記圧縮データが前記キャッシュメモリデバイスの前記単一のキャッシュバンク上で適合するとの判定に応答して、前記キャッシュバンク分散アドレスを生成する前記キャッシュメモリアクセス要求の前記物理アドレスの前記1つまたは複数のバンク選択ビットを回復するステップを含む、
請求項1に記載の方法。
【請求項３】
前記キャッシュメモリアクセス要求の前記圧縮データが前記キャッシュメモリデバイスの前記単一のキャッシュバンク上で適合するかどうかを判定するステップが、前記圧縮データの圧縮比が2:1圧縮比以上であるかどうかを判定するステップを含む、請求項2に記載の方法。
【請求項４】
前記キャッシュメモリアクセス要求の前記圧縮データが前記キャッシュメモリデバイスの前記単一のキャッシュバンク上で適合するかどうかを判定するステップが、前記圧縮データのサイズが前記キャッシュメモリデバイスのキャッシュラインのサイズ以下であるかどうかを判定するステップを含む、請求項2に記載の方法。
【請求項５】
前記圧縮データが前記キャッシュメモリデバイスの前記単一のキャッシュバンク上で適合するとの判定に応答して、前記キャッシュバンク分散アドレスを生成する前記キャッシュメモリアクセス要求の前記物理アドレスの前記1つまたは複数のバンク選択ビットを回復するステップが、
キャッシュバンク分散関数用の入力を選択するステップと、
前記キャッシュバンク分散関数を実行するステップと、
キャッシュバンク分散値を返すステップと、
前記1つまたは複数のバンク選択ビットを前記キャッシュバンク分散値に置き換えるステップと
を含む、請求項2に記載の方法。
【請求項６】
前記キャッシュバンク分散関数用の入力を選択するステップが、前記キャッシュバンク分散関数用のオペランドとして、前記キャッシュメモリアクセス要求の前記キャッシュメモリデバイスの前記物理アドレスの保護されたビットの複数の最下位ビットを選択するステップを含み、
前記キャッシュバンク分散関数を実行するステップが、前記オペランドとともに排他的OR演算子を使用するステップを含む、
請求項5に記載の方法。
【請求項７】
前記キャッシュバンク分散関数を実行するステップが、論理演算、算術演算のうちの1つを使用し、ランダム値を選択し、テーブルから前記キャッシュメモリアクセス要求の前記物理アドレスに関連付けられた前記キャッシュバンク分散アドレスを選択するステップを含む、請求項5に記載の方法。
【請求項８】
前記キャッシュバンク分散アドレスにおいて前記キャッシュメモリアクセス要求を実行するステップが、
圧縮データを、前記キャッシュメモリアクセス要求のキャッシュメモリデバイスの前記物理アドレスの前記1つまたは複数のバンク選択ビットによって示される第2のキャッシュバンクとは異なる、前記キャッシュバンク分散アドレスの前記1つまたは複数の回復されたバンク選択ビットによって示される第1のキャッシュバンクに書き込むステップと、
前記圧縮データを、前記キャッシュメモリアクセス要求の前記キャッシュメモリデバイスの前記物理アドレスの前記1つまたは複数のバンク選択ビットによって示される前記第2のキャッシュバンクとは異なる、前記キャッシュバンク分散アドレスの前記1つまたは複数の回復されたバンク選択ビットによって示される前記第1のキャッシュバンクから読み取るステップと
を含む、請求項1に記載の方法。
【請求項９】
前記キャッシュバンク分散アドレスにおいて前記キャッシュメモリアクセス要求を実行するステップが、前記キャッシュバンク分散アドレスによって示されるキャッシュメモリデバイスの物理アドレスにおいて前記圧縮データ用の前記キャッシュメモリアクセス要求を実行するステップを含む、請求項1に記載の方法。
【請求項１０】
プロセッサと、
前記プロセッサに通信可能に接続され、キャッシュバンク分散アドレスを生成するキャッシュメモリアクセス要求の物理アドレスの1つまたは複数のバンク選択ビットを回復することを含む動作を実行するように構成されたバンク分散関数構成要素と、
前記バンク分散関数構成要素に通信可能に接続され、前記キャッシュバンク分散アドレスにおいて前記キャッシュメモリアクセス要求を実行することを含む動作を実行するように構成されたキャッシュメモリコントローラと、
前記キャッシュメモリコントローラに通信可能に接続されたキャッシュメモリと
を備えるコンピューティングデバイス。
【請求項１１】
前記バンク分散関数構成要素は、圧縮データがキャッシュメモリの単一のキャッシュバンクのキャッシュライン上で適合するかどうかを判定することをさらに含む動作を実行するように構成され、
前記バンク分散関数構成要素は、キャッシュバンク分散アドレスを生成するキャッシュメモリアクセス要求の物理アドレスの1つまたは複数のバンク選択ビットを回復することが、前記圧縮データが前記キャッシュメモリの前記単一のキャッシュバンク上で適合するとの判定に応答して、前記キャッシュバンク分散アドレスを生成する前記キャッシュメモリアクセス要求の前記物理アドレスの前記1つまたは複数のバンク選択ビットを回復することを含むような動作を実行するように構成される、
請求項10に記載のコンピューティングデバイス。
【請求項１２】
前記バンク分散関数構成要素は、前記キャッシュメモリアクセス要求の前記圧縮データが前記キャッシュメモリの前記単一のキャッシュバンク上で適合するかどうかを判定することが、前記圧縮データの圧縮比が2:1圧縮比以上であるかどうかを判定することを含むような動作を実行するように構成される、請求項11に記載のコンピューティングデバイス。
【請求項１３】
前記バンク分散関数構成要素は、前記キャッシュメモリアクセス要求の前記圧縮データが前記キャッシュメモリの前記単一のキャッシュバンク上で適合するかどうかを判定することが、前記圧縮データのサイズが前記キャッシュメモリのキャッシュラインのサイズ以下であるかどうかを判定することを含むような動作を実行するように構成される、請求項11に記載のコンピューティングデバイス。
【請求項１４】
前記バンク分散関数構成要素は、前記圧縮データが前記キャッシュメモリの前記単一のキャッシュバンク上で適合するとの判定に応答して、前記キャッシュバンク分散アドレスを生成する前記キャッシュメモリアクセス要求の前記物理アドレスの前記1つまたは複数のバンク選択ビットを回復することが、
キャッシュバンク分散関数用の入力を選択することと、
前記キャッシュバンク分散関数を実行することと、
キャッシュバンク分散値を返すことと、
前記1つまたは複数のバンク選択ビットを前記キャッシュバンク分散値に置き換えることと
を含むような動作を実行するように構成される、請求項11に記載のコンピューティングデバイス。
【請求項１５】
前記バンク分散関数構成要素は、
前記キャッシュバンク分散関数を実行することが、論理演算、算術演算のうちの1つを使用し、ランダム値を選択し、テーブルから前記キャッシュメモリアクセス要求の前記物理アドレスに関連付けられた前記キャッシュバンク分散アドレスを選択することを含み、
前記キャッシュバンク分散関数用の入力を選択することが、前記キャッシュバンク分散関数用のオペランドとして、前記オペランドとともに排他的OR演算子を使用して、前記キャッシュメモリアクセス要求の前記キャッシュメモリの前記物理アドレスの保護されたビットの複数の最下位ビットを選択することを含む
ような動作を実行するように構成される、請求項14に記載のコンピューティングデバイス。
【請求項１６】
前記キャッシュメモリコントローラは、前記キャッシュメモリ内の前記キャッシュバンク分散アドレスにおいて前記キャッシュメモリアクセス要求を実行することが、
圧縮データを、前記キャッシュメモリアクセス要求の前記キャッシュメモリの前記物理アドレスの前記1つまたは複数のバンク選択ビットによって示される第2のキャッシュバンクとは異なる、前記キャッシュバンク分散アドレスの前記1つまたは複数の回復されたバンク選択ビットによって示される第1のキャッシュバンクに書き込むことと、
前記圧縮データを、前記キャッシュメモリアクセス要求の前記キャッシュメモリの前記物理アドレスの前記1つまたは複数のバンク選択ビットによって示される前記第2のキャッシュバンクとは異なる、前記キャッシュバンク分散アドレスの前記1つまたは複数の回復されたバンク選択ビットによって示される前記第1のキャッシュバンクから読み取ることと
を含むような動作を実行するように構成される、請求項10に記載のコンピューティングデバイス。
【請求項１７】
プロセッサ、バンク分散関数構成要素、およびキャッシュメモリコントローラに、
キャッシュバンク分散アドレスを生成するキャッシュメモリアクセス要求の物理アドレスの1つまたは複数のバンク選択ビットを回復することと、
前記キャッシュバンク分散アドレスにおいて前記キャッシュメモリアクセス要求を実行することと
を含む動作を実行させるように構成されたプロセッサ実行可能命令を記憶した非一時的プロセッサ可読媒体。
【請求項１８】
前記記憶されたプロセッサ実行可能命令は、前記プロセッサ、前記バンク分散関数構成要素、および前記キャッシュメモリコントローラに、圧縮データがキャッシュメモリデバイスの単一のキャッシュバンクのキャッシュライン上で適合するかどうかを判定することをさらに含む動作を実行させるように構成され、
前記記憶されたプロセッサ実行可能命令は、前記プロセッサ、前記バンク分散関数構成要素、および前記キャッシュメモリコントローラに、キャッシュバンク分散アドレスを生成するキャッシュメモリアクセス要求の物理アドレスの1つまたは複数のバンク選択ビットを回復することが、前記圧縮データが前記キャッシュメモリデバイスの前記単一のキャッシュバンク上で適合するとの判定に応答して、前記キャッシュバンク分散アドレスを生成する前記キャッシュメモリアクセス要求の前記物理アドレスの前記1つまたは複数のバンク選択ビットを回復することを含むような動作を実行させるように構成される、
請求項17に記載の非一時的プロセッサ可読媒体。
【請求項１９】
前記記憶されたプロセッサ実行可能命令は、前記プロセッサ、前記バンク分散関数構成要素、および前記キャッシュメモリコントローラに、前記キャッシュメモリアクセス要求の前記圧縮データが前記キャッシュメモリデバイスの前記単一のキャッシュバンク上で適合するかどうかを判定することが、前記圧縮データの圧縮比が2:1圧縮比以上であるかどうかを判定することを含むような動作を実行させるように構成される、請求項18に記載の非一時的プロセッサ可読媒体。
【請求項２０】
前記記憶されたプロセッサ実行可能命令は、前記プロセッサ、前記バンク分散関数構成要素、および前記キャッシュメモリコントローラに、前記キャッシュメモリアクセス要求の前記圧縮データが前記キャッシュメモリデバイスの前記単一のキャッシュバンク上で適合するかどうかを判定することが、前記圧縮データのサイズが前記キャッシュメモリデバイスのキャッシュラインのサイズ未満であるかどうかを判定することを含むような動作を実行させるように構成される、請求項18に記載の非一時的プロセッサ可読媒体。
【請求項２１】
前記記憶されたプロセッサ実行可能命令は、前記プロセッサ、前記バンク分散関数構成要素、および前記キャッシュメモリコントローラに、前記圧縮データが前記キャッシュメモリデバイスの前記単一のキャッシュバンク上で適合するとの判定に応答して、前記キャッシュバンク分散アドレスを生成する前記キャッシュメモリアクセス要求の前記物理アドレスの前記1つまたは複数のバンク選択ビットを回復することが、
キャッシュバンク分散関数用の入力を選択することと、
前記キャッシュバンク分散関数を実行することと、
キャッシュバンク分散値を返すことと、
前記1つまたは複数のバンク選択ビットを前記キャッシュバンク分散値に置き換えることと
を含むような動作を実行させるように構成される、請求項18に記載の非一時的プロセッサ可読媒体。
【請求項２２】
前記記憶されたプロセッサ実行可能命令は、前記プロセッサ、前記バンク分散関数構成要素、および前記キャッシュメモリコントローラに、
前記キャッシュバンク分散関数を実行することが、論理演算、算術演算のうちの1つを使用し、ランダム値を選択し、テーブルから前記キャッシュメモリアクセス要求の前記物理アドレスに関連付けられた前記キャッシュバンク分散アドレスを選択することを含み、
前記キャッシュバンク分散関数用の入力を選択することが、前記キャッシュバンク分散関数用のオペランドとして、前記オペランドとともに排他的OR演算子を使用して、前記キャッシュメモリアクセス要求の前記キャッシュメモリデバイスの前記物理アドレスの保護されたビットの複数の最下位ビットを選択することを含む
ような動作を実行させるように構成される、請求項21に記載の非一時的プロセッサ可読媒体。
【請求項２３】
前記記憶されたプロセッサ実行可能命令は、前記プロセッサ、前記バンク分散関数構成要素、および前記キャッシュメモリコントローラに、前記キャッシュバンク分散アドレスにおいて前記キャッシュメモリアクセス要求を実行することが、
圧縮データを、前記キャッシュメモリアクセス要求のキャッシュメモリデバイスの前記物理アドレスの前記1つまたは複数のバンク選択ビットによって示される第2のキャッシュバンクとは異なる、前記キャッシュバンク分散アドレスの前記1つまたは複数の回復されたバンク選択ビットによって示される第1のキャッシュバンクに書き込むことと、
前記圧縮データを、前記キャッシュメモリアクセス要求の前記キャッシュメモリデバイスの前記物理アドレスの前記1つまたは複数のバンク選択ビットによって示される前記第2のキャッシュバンクとは異なる、前記キャッシュバンク分散アドレスの前記1つまたは複数の回復されたバンク選択ビットによって示される前記第1のキャッシュバンクから読み取ることと
を含むような動作を実行させるように構成される、請求項17に記載の非一時的プロセッサ可読媒体。
【請求項２４】
キャッシュバンク分散アドレスを生成するキャッシュメモリアクセス要求の物理アドレスの1つまたは複数のバンク選択ビットを回復するための手段と、
前記キャッシュバンク分散アドレスにおいて前記キャッシュメモリアクセス要求を実行するための手段と
を備えるコンピューティングデバイス。
【請求項２５】
圧縮データがキャッシュメモリデバイスの単一のキャッシュバンクのキャッシュライン上で適合するかどうかを判定するための手段をさらに備え、
キャッシュバンク分散アドレスを生成するキャッシュメモリアクセス要求の物理アドレスの1つまたは複数のバンク選択ビットを回復するための手段が、前記圧縮データが前記キャッシュメモリデバイスの前記単一のキャッシュバンク上で適合するとの判定に応答して、前記キャッシュバンク分散アドレスを生成する前記キャッシュメモリアクセス要求の前記物理アドレスの前記1つまたは複数のバンク選択ビットを回復するための手段を備える、
請求項24に記載のコンピューティングデバイス。
【請求項２６】
前記キャッシュメモリアクセス要求の前記圧縮データが前記キャッシュメモリデバイスの前記単一のキャッシュバンク上で適合するかどうかを判定するための手段が、前記圧縮データの圧縮比が2:1圧縮比以上であるかどうかを判定するための手段を備える、請求項25に記載のコンピューティングデバイス。
【請求項２７】
前記キャッシュメモリアクセス要求の前記圧縮データが前記キャッシュメモリデバイスの前記単一のキャッシュバンク上で適合するかどうかを判定するための手段が、前記圧縮データのサイズが前記キャッシュメモリデバイスのキャッシュラインのサイズ以下であるかどうかを判定するための手段を備える、請求項25に記載のコンピューティングデバイス。
【請求項２８】
前記圧縮データが前記キャッシュメモリデバイスの前記単一のキャッシュバンク上で適合するとの判定に応答して、前記キャッシュバンク分散アドレスを生成する前記キャッシュメモリアクセス要求の前記物理アドレスの前記1つまたは複数のバンク選択ビットを回復するための手段が、
キャッシュバンク分散関数用の入力を選択するための手段と、
前記キャッシュバンク分散関数を実行するための手段と、
キャッシュバンク分散値を返すための手段と、
前記1つまたは複数のバンク選択ビットを前記キャッシュバンク分散値に置き換えるための手段と
を備える、請求項25に記載のコンピューティングデバイス。
【請求項２９】
前記キャッシュバンク分散関数を実行するための手段が、論理演算、算術演算のうちの1つを使用し、ランダム値を選択し、テーブルから前記キャッシュメモリアクセス要求の前記物理アドレスに関連付けられた前記キャッシュバンク分散アドレスを選択するための手段を備え、
前記キャッシュバンク分散関数用の入力を選択するための手段が、前記キャッシュバンク分散関数用のオペランドとして、前記オペランドとともに排他的OR演算子を使用して、前記キャッシュメモリアクセス要求の前記キャッシュメモリデバイスの前記物理アドレスの保護されたビットの複数の最下位ビットを選択するための手段を備える、
請求項28に記載のコンピューティングデバイス。
【請求項３０】
前記キャッシュバンク分散アドレスにおいて前記キャッシュメモリアクセス要求を実行するための手段が、
圧縮データを、前記キャッシュメモリアクセス要求のキャッシュメモリデバイスの前記物理アドレスの前記1つまたは複数のバンク選択ビットによって示される第2のキャッシュバンクとは異なる、前記キャッシュバンク分散アドレスの前記1つまたは複数の回復されたバンク選択ビットによって示される第1のキャッシュバンクに書き込むための手段と、
前記圧縮データを、前記キャッシュメモリアクセス要求の前記キャッシュメモリデバイスの前記物理アドレスの前記1つまたは複数のバンク選択ビットによって示される前記第2のキャッシュバンクとは異なる、前記キャッシュバンク分散アドレスの前記1つまたは複数の回復されたバンク選択ビットによって示される前記第1のキャッシュバンクから読み取るための手段と
を備える、請求項24に記載のコンピューティングデバイス。
【発明の詳細な説明】
【背景技術】
【０００１】
ロスレス圧縮は、圧縮された、構成可能なサイズのデータセグメントを使用する。次いで、この圧縮データは、メモリに再び書き込まれるまで、キャッシュに記憶される。しかしながら、データを圧縮することによって、物理アドレス空間内の未使用のホールが作成される。圧縮データがどのように物理アドレス空間に記憶されるかに応じて、キャッシュなどのシステムレベルリソースの不均一な使用があり得る。キャッシュは、キャッシュライン粒度でデータを記憶し、最も頻繁に使用されるビットを使用してデータをバンクにルーティングする。圧縮ブロックサイズとキャッシュラインサイズとの間の不一致は、キャッシュリソース(たとえば、バンク)の不規則な使用をもたらす可能性がある。この不規則な使用は、圧縮データがキャッシュインデックス付けにおいて使用される物理アドレス内の未使用のビットをクリアすることによって、生み出される。たとえば、そのようなケースは、256バイトのブロックを128バイトに圧縮するときに生じ、この圧縮は、物理アドレス内の圧縮データ用のアドレスビットをクリアする。下位アドレスビットは、通常、(アクセスが頻繁に変化するので)バランスのとれたアクセスを行うために、キャッシュ選択決定に使用される。通常、下位アドレスビットのビットWがキャッシュバンクを選択するために使用される場合、ビットWがクリアされるときの値は常に同じである(すなわち、圧縮の後、ビットW=0)ので、圧縮データは常にバンク/キャッシュの半分に配置される。同様に、通常、ビットWおよびビットYなどの2つのビットがキャッシュバンクを選択するために使用される場合、ビットYの値は変化し得る(すなわち、圧縮の後、ビットYは0または1に等しい)が、ビットWの値は変化しないままであり(すなわち、ビットW=0)、したがって、バンク選択ビットWおよびYは一緒に、4つのバンク選択オプションのうちの2つのみ(すなわち、ビットYおよびW=00、01、10、または11ではなく、ビットYおよびW=00または10)に対して組み合わさり得るので、圧縮データは常にバンク/キャッシュの半分に配置される。
【発明の概要】
【課題を解決するための手段】
【０００２】
様々な態様の方法および装置は、キャッシュバンク分散アドレスを生成するキャッシュメモリアクセス要求の物理アドレスの1つまたは複数のバンク選択ビットを回復するステップと、キャッシュバンク分散アドレスにおいてキャッシュメモリアクセス要求を実行するステップとを含み得る、コンピューティングデバイス上で圧縮データ用のキャッシュメモリアクセス要求を実行するための回路および方法を提供する。
【０００３】
一態様方法は、圧縮データがキャッシュメモリデバイスの単一のキャッシュバンクのキャッシュライン上で適合するかどうかを判定するステップをさらに含み得、キャッシュバンク分散アドレスを生成するキャッシュメモリアクセス要求の物理アドレスの1つまたは複数のバンク選択ビットを回復するステップが、圧縮データがキャッシュメモリデバイスの単一のキャッシュバンク上で適合するとの判定に応答して実行され得る。一態様では、キャッシュメモリアクセス要求の圧縮データがキャッシュメモリデバイスの単一のキャッシュバンク上で適合するかどうかを判定するステップは、圧縮データの圧縮比が2:1圧縮比以上であるかどうかを判定するステップを含み得る。一態様では、キャッシュメモリアクセス要求の圧縮データがキャッシュメモリデバイスの単一のキャッシュバンク上で適合するかどうかを判定するステップは、圧縮データのサイズがキャッシュメモリデバイスのキャッシュラインのサイズ以下であるかどうかを判定するステップを含み得る。
【０００４】
一態様では、圧縮データがキャッシュメモリデバイスの単一のキャッシュバンク上で適合するとの判定に応答して、キャッシュバンク分散アドレスを生成するキャッシュメモリアクセス要求の物理アドレスの1つまたは複数のバンク選択ビットを回復するステップは、キャッシュバンク分散関数用の入力を選択するステップと、キャッシュバンク分散関数を実行するステップと、キャッシュバンク分散値を返すステップと、1つまたは複数のバンク選択ビットをキャッシュバンク分散値に置き換えるステップとを含み得る。一態様では、キャッシュバンク分散関数用の入力を選択するステップは、キャッシュバンク分散関数用のオペランドとして、キャッシュメモリアクセス要求のキャッシュメモリデバイスの物理アドレスの保護されたビットの複数の最下位ビットを選択するステップを含み得、キャッシュバンク分散関数を実行するステップは、オペランドとともに排他的OR演算子を使用するステップを含み得る。一態様では、キャッシュバンク分散関数は、論理演算、算術演算のうちの1つを使用し、ランダム値を選択し、テーブルからキャッシュメモリアクセス要求の物理アドレスに関連付けられたキャッシュバンク分散アドレスを選択するステップを含み得る。
【０００５】
一態様では、キャッシュメモリデバイス内のキャッシュバンク分散アドレスにおいて圧縮データ用のキャッシュメモリアクセス要求を実行するステップは、圧縮データを、キャッシュメモリアクセス要求のキャッシュメモリデバイスの物理アドレスの1つまたは複数のバンク選択ビットによって示される第2のキャッシュバンクとは異なる、キャッシュバンク分散アドレスの1つまたは複数の回復されたバンク選択ビットによって示される第1のキャッシュバンクに書き込むステップと、圧縮データを、キャッシュメモリアクセス要求のキャッシュメモリデバイスの物理アドレスの1つまたは複数のバンク選択ビットによって示される第2のキャッシュバンクとは異なる、キャッシュバンク分散アドレスの1つまたは複数の回復されたバンク選択ビットによって示される第1のキャッシュバンクから読み取るステップとを含み得る。
【０００６】
一態様は、互いに通信可能に接続された、プロセッサと、バンク分散関数構成要素と、キャッシュメモリコントローラと、キャッシュメモリとを有するコンピューティングデバイスを含み、プロセッサ、バンク分散関数構成要素、キャッシュメモリコントローラは、上記で説明した態様方法のうちの1つまたは複数の動作を実行するように構成される。
【０００７】
一態様は、プロセッサ、バンク分散関数構成要素、およびキャッシュメモリコントローラに、上記で説明した態様方法のうちの1つまたは複数の動作を実行させるように構成されたプロセッサ実行可能命令を記憶した非一時的プロセッサ可読媒体を含む。
【０００８】
一態様は、上記で説明した態様方法のうちの1つまたは複数の機能を実行するための手段を有するコンピューティングデバイスを含む。
【０００９】
本明細書に組み込まれ、本明細書の一部を構成する添付の図面は、本発明の例示的な態様を示し、上記の概略的な説明および下記の詳細な説明とともに、本発明の特徴を説明するのに役立つ。
【図面の簡単な説明】
【００１０】
【図１】一態様を実装するのに適したコンピューティングデバイスを示す構成要素ブロック図である。
【図２】一態様を実装するのに適した例示的なマルチコアプロセッサを示す構成要素ブロック図である。
【図３Ａ】一態様による、キャッシュバンク分散を実装するように構成されたシステムオンチップ(SoC)の一例を示す構成要素ブロック図である。
【図３Ｂ】一態様による、キャッシュバンク分散を実装するように構成されたシステムオンチップ(SoC)の一例を示す構成要素ブロック図である。
【図４】一態様による、圧縮データを記憶する複数のキャッシュバンク上のキャッシュ空間から成るキャッシュラインを含むキャッシュメモリの一部分の図である。
【図５】一態様による、圧縮データを記憶する複数のキャッシュバンク上のキャッシュラインを含むキャッシュメモリの一部分の図である。
【図６】一態様による、圧縮データを記憶する複数のキャッシュバンク上のキャッシュラインを含むキャッシュメモリの一部分の図である。
【図７】一態様による、圧縮データまたは非圧縮データを記憶する複数のキャッシュバンク上のキャッシュラインを含むキャッシュメモリの一部分の図である。
【図８】一態様による、圧縮データ用のキャッシュメモリアクセス要求の物理アドレスと、キャッシュ内の関連するバンク分散物理アドレスとの間の関係を示す例示的なテーブルである。
【図９】圧縮データ用のキャッシュメモリアクセス要求のためのキャッシュバンク分散を実装するための一態様方法を示すプロセスフロー図である。
【図１０】圧縮データ用の書込みキャッシュメモリアクセス要求のためのキャッシュバンク分散を実装するための一態様方法を示すプロセスフロー図である。
【図１１】圧縮データ用の読取りキャッシュメモリアクセス要求のためのキャッシュバンク分散を実装するための一態様方法を示すプロセスフロー図である。
【図１２】様々な態様とともに使用するのに適した例示的なモバイルコンピューティングデバイスを示す構成要素ブロック図である。
【図１３】様々な態様とともに使用するのに適した例示的なモバイルコンピューティングデバイスを示す構成要素ブロック図である。
【図１４】様々な態様とともに使用するのに適した例示的なサーバを示す構成要素ブロック図である。
【発明を実施するための形態】
【００１１】
添付の図面を参照しながら、様々な態様について詳細に説明する。可能な限り、同じまたは同様の部分を指すために図面全体を通じて同じ参照番号が使用される。具体的な例および実装形態への言及は、説明を目的とし、本発明の範囲または特許請求の範囲を限定するものではない。
【００１２】
「コンピューティングデバイス」および「モバイルコンピューティングデバイス」という用語は、セルラー電話、スマートフォン、パーソナルまたはモバイルマルチメディアプレーヤ、携帯情報端末(PDA)、ラップトップコンピュータ、タブレットコンピュータ、スマートブック、ウルトラブック、パームトップコンピュータ、ワイヤレス電子メール受信機、マルチメディアインターネット対応セルラー電話、ワイヤレスゲームコントローラ、ならびに、メモリおよびマルチコアプログラマブルプロセッサを含む同様のパーソナル電子デバイスのうちのいずれか1つまたはすべてを指すために本明細書で互換的に使用される。様々な態様は、限られたメモリおよびバッテリーリソースを有するスマートフォンなどのモバイルコンピューティングデバイスに特に有用であるが、本態様は一般に、複数のメモリデバイスおよび限られた電力バジェットを実装する任意の電子デバイスにおいて有用であり、この場合、プロセッサの電力消費を低減することは、モバイルコンピューティングデバイスのバッテリー動作時間を延ばすことができる。
【００１３】
「システムオンチップ」(SoC)という用語は、一般に、限定はしないが、ハードウェアコア、メモリ、および通信インターフェースを含む相互接続された電子回路のセットを指すために本明細書で使用される。ハードウェアコアは、汎用プロセッサ、中央処理ユニット(CPU)、デジタル信号プロセッサ(DSP)、グラフィックス処理ユニット(GPU)、加速処理ユニット(APU)、補助プロセッサ、シングルコアプロセッサ、およびマルチコアプロセッサなどの様々な異なるタイプのプロセッサを含み得る。ハードウェアコアは、フィールドプログラマブルゲートアレイ(FPGA)、特定用途向け集積回路(ASIC)、他のプログラマブル論理デバイス、個別ゲート論理、トランジスタ論理、性能監視ハードウェア、ウォッチドッグハードウェア、および時間基準などの他のハードウェアおよびハードウェアの組合せをさらに具現化し得る。集積回路は、集積回路の構成要素がシリコンなどの単体の半導体材料上に存在するように構成され得る。
【００１４】
一態様では、キャッシュバンク分散は、データが圧縮されるときの圧縮データのブロックのサイズとキャッシュラインのサイズの不一致によって引き起こされる、圧縮データを物理アドレス空間に記憶するためのキャッシュリソースの不均一な使用を低減するために実装され得る。データブロックの低減されたサイズは、クリアされたビットによってアドレス指定されたキャッシュの部分を使用する必要がないので、算術関数または演算関数は、クリアされた圧縮データを記憶するためのアドレスのビットを置き換えるために、圧縮データブロックをキャッシュに記憶するためのアドレスのビットに適用され得る。一態様では、圧縮データのためのより多くのキャッシュバンクの使用を実装するために、その他のキャッシュバンクを指定するアドレスの部分は、データ圧縮中に保護されるアドレスのビットに適用された算術関数または演算関数によって再作成または回復され得る。言い換えれば、アドレスビットに対して算術演算を使用することによって、キャッシュバンクを指定するビット(すなわち、1または0)は、データ圧縮によってクリアされたビットを置き換えるために、アドレスに加えられ得る。圧縮アルゴリズムが、キャッシュバンクを決定するために少なくとも部分的に使用されたアドレスの一部分をクリアすると、算術演算は、アドレスのクリアされた部分内にバンク選択ビットを作成するために、保護されたアドレスビットのうちの2つ以上に適用され得る。
【００１５】
たとえば、256バイトの非圧縮データブロックがデータ圧縮によって128バイト以下にサイズを低減されると、圧縮データブロックは、非圧縮データが必要とするであろうキャッシュ空間の半分のみを必要とする。同じ例では、キャッシュメモリは、256バイトのデータブロックを128バイトのキャッシュラインに記憶し得る。この例では、別個のキャッシュバンク間で2つの128バイトのキャッシュラインが分割され得る。したがって、128ビットの圧縮データは、同じキャッシュの第2のキャッシュバンク上の第2のキャッシュラインの必要なしに、第1のキャッシュバンク上の第1のキャッシュラインに記憶され得る。そのような例では、データが圧縮されると、使用すべきキャッシュバンクを指定するアドレスの部分は圧縮によってクリアされ得る。上記で説明したように、これにより、アドレスのクリアされた部分はもはや別のキャッシュバンク(たとえば、第2のキャッシュバンク)を指定することができないので、圧縮データがキャッシュバンクの半分のみ(たとえば、第1のキャッシュバンク)に書き込まれることになり得る。キャッシュバンク分散は、バンク選択ビットに加算する算術関数または演算関数を用い得る。
【００１６】
様々な態様のキャッシュバンク分散動作は、様々なキャッシュバンクにわたる圧縮データのより頻繁な分配を達成するために、頻繁に値を交互に入れ替えるアドレスの部分を選択し得る。たとえば、キャッシュアドレスの保護された下位ビットは、キャッシュアドレスの保護された上位ビットよりも頻繁に交互になる。10の位の数字および1の位の数字を用いて演算を実行すると、100の位の数字および10の位の数字を使用する場合よりも頻繁な、アドレス指定されたキャッシュバンクの変動性をもたらし得る。
【００１７】
キャッシュバンクを決定するために少なくとも部分的にアドレスのクリアされた部分が使用される一態様では、クリアされた部分を再作成または回復するために、2つ以上の保護された部分が使用され得る。たとえば、バイナリビットを使用して、保護されたビットおよびクリアされたビットがキャッシュバンクを選択するために組み合わされ得る。クリアされたビットが一定(たとえば、クリアされたビット=0)であり、第1の保護されたビットが可変(すなわち、保護されたビット=0または1)である態様では、アドレスのキャッシュバンク選択部分は00または01であり得る。クリアされたビットがクリアされず可変のままである(たとえば、クリアされないビット=0または1)態様では、キャッシュバンク選択は00、01、10、または11であり得る。したがって、クリアされたビットは、キャッシュバンク選択をその潜在的な値の半分に制限する。第1の保護されたビットおよび同様に可変の第2の保護されたビットを使用して算術関数または演算関数を適用し、クリアされたビットを関数の結果に置き換えることは、キャッシュバンク選択のための一揃いの潜在的な値を復元し得る。一態様では、関数は、第1の保護されたビットおよび第2の保護されたビットの排他的OR(XOR)を含み得る。
【００１８】
アドレスビットに適用される関数は、ハードウェアおよび/またはソフトウェアにおいて実装され得る様々な算術関数または演算関数のうちのいずれかであり得る。関数用のオペランドは、圧縮データ用の保護されたアドレスの部分の様々な組合せのうちのいずれか、または圧縮データ用の保護されたアドレスの一部分および別の変数であり得る。たとえば、ハッシュ関数は、様々なオペランドを使用し、圧縮データ用のアドレスのクリアされた部分を置き換えるかまたは回復するための値の限定されたセットを出力するために実装され得る。一態様では、関数はまた、乱数発生器を含み得る。
【００１９】
図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つまたは複数は、一緒にグループ化されてもよい。
【００２０】
SoC12のメモリ16は、プロセッサ14がアクセスするためのデータおよびプロセッサ実行可能コードを記憶するように構成された揮発性または不揮発性メモリであり得る。一態様では、メモリ16は、プロセッサ14のうちの1つまたは複数によって出力された中間処理データなどのデータ構造を少なくとも一時的に記憶するように構成され得る。一態様では、メモリ16は、キャッシュバンク分散を使用する圧縮データ用のキャッシュメモリアクセス要求のための情報を記憶するように構成され得る。メモリ16は、キャッシュバンク分散のための情報を保持するために、不揮発性読取り専用メモリ(ROM)を含み得る。
【００２１】
コンピューティングデバイス10および/またはSoC12は、様々な目的のために構成された1つまたは複数のメモリ16を含み得る。一態様では、1つまたは複数のメモリ16は、キャッシュバンク分散のための情報を記憶することに特化するように構成され得る。メモリ16は、情報がキャッシュバンク分散を実装するためのプロセッサまたは専用コントローラによってアクセスされることを可能にする方法で、情報を記憶し得る。
【００２２】
通信インターフェース18、通信構成要素22、アンテナ26、および/またはネットワークインターフェース28は、コンピューティングデバイス10がワイヤレス接続32を介してワイヤレスネットワーク30上でおよび/またはワイヤードネットワーク44上でリモートコンピューティングデバイス50と通信することが可能になるように、調和して動作し得る。ワイヤレスネットワーク30は、コンピューティングデバイス10にリモートコンピューティングデバイス50とデータを交換する場合の手段であるインターネット40への接続を提供するために、たとえば、ワイヤレス通信に使用される無線周波数スペクトルを含む様々なワイヤレス通信技術を使用して実装され得る。
【００２３】
ストレージインターフェース20およびストレージ構成要素24は、コンピューティングデバイス10が不揮発性記憶媒体上にデータを記憶することが可能になるように、調和して動作し得る。ストレージ構成要素24は、情報が1つまたは複数のプロセッサ14によってアクセスされ得るように、ストレージ構成要素24がキャッシュバンク分散のための情報を記憶し得るメモリ16の一態様とほとんど同じように構成され得る。不揮発性であるストレージ構成要素24は、コンピューティングデバイス10の電源が切断された後でも情報を保持し得る。電源が再び投入され、コンピューティングデバイス10が再起動すると、コンピューティングデバイス10がストレージ構成要素24上に記憶された情報を利用できるようになる。ストレージインターフェース20は、ストレージデバイス24へのアクセスを制御し、プロセッサ14がストレージデバイス24からデータを読み取り、ストレージデバイス24にデータを書き込むことを可能にすることができる。
【００２４】
コンピューティングデバイス10の構成要素のいくつかまたはすべては、依然として必要な機能を果たしながら、別様に配置および/または組み合わされ得る。その上、コンピューティングデバイス10は、構成要素の各々の1つに限定されなくてもよく、各構成要素の複数のインスタンスは、コンピューティングデバイス10の様々な構成に含まれ得る。
【００２５】
図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はそれぞれ、同種のグラフィックスプロセッサコアまたはデジタル信号プロセッサコアであってもよい。
【００２６】
製造プロセスおよび材料のばらつきにより、同種のプロセッサコア200、201、202、203の性能特性は、同じマルチコアプロセッサ14内または同じ設計のプロセッサコアを使用する別のマルチコアプロセッサ14内のプロセッサコアによって異なる場合がある。
【００２７】
単一のプロセッサ14のプロセッサコア200、201、202、203が異なる目的のために構成され、および/または異なる性能特性を有し得るという点で、プロセッサコア200、201、202、203は異種であり得る。そのような異種のプロセッサコアの例は、低速で低電力のプロセッサコアがより強力で電力を大量に消費するプロセッサコアと結合され得る「big.LITTLE」アーキテクチャとして知られているものを含み得る。
【００２８】
図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よりも少ないまたは多いプロセッサコアを個々にまたは組合せで含み得る。
【００２９】
図3Aおよび図3Bは、一態様による、キャッシュバンク分散を実装するように構成された例示的なSoC12を示す。SoC12は、プロセッサ14と、キャッシュメモリコントローラ304と、キャッシュメモリ306と、上記で説明したSoC12の構成要素などの他の構成要素とを含み得る。キャッシュメモリ306は、図1のストレージ構成要素24またはメモリ16にアクセスするときよりも迅速にアクセスするために、データおよびプログラム命令を一時的に記憶するように構成され得る。キャッシュメモリ306は、単一のプロセッサ14が使用するための専用とされるか、または複数のプロセッサ14間で共有されてもよい。一態様では、キャッシュメモリ306は、プロセッサ14の一部であってもよく、単一のプロセッサコアが使用するための専用とされるか、またはプロセッサ14の複数のプロセッサコア間で共有されてもよい。
【００３０】
キャッシュメモリコントローラ304は、SoC12の様々なプロセッサ14およびサブシステム(図示せず)によるキャッシュメモリ306へのアクセスを管理し得る。キャッシュメモリのアクセス管理の一部は、プロセッサ14によって圧縮データ用のキャッシュメモリ36に発行された書込みおよび読取りキャッシュメモリアクセス要求のために、様々な態様に従ってキャッシュバンク分散を使用することを含み得る。キャッシュバンク分散は、圧縮データがキャッシュラインのサイズ以下であるような圧縮比またはデータサイズを有する圧縮データ用のキャッシュメモリアクセス要求に使用され得る。さらに、圧縮データはまた、キャッシュメモリのキャッシュバンクと同じくらいの大きさであってもよい。キャッシュバンク分散を圧縮データに適用することは、キャッシュメモリアクセス要求の物理アドレスから修正されたキャッシュメモリ306内の物理アドレスである、キャッシュバンク分散アドレスの使用をもたらし得る。書込みキャッシュメモリアクセス要求の場合、キャッシュメモリコントローラ304は、圧縮データを圧縮データ用のキャッシュバンク分散アドレスに書き込むことができる。読取りキャッシュメモリアクセス要求の場合、キャッシュメモリコントローラ304は、圧縮データを圧縮データ用のキャッシュバンク分散アドレスから読み取ることができる。
【００３１】
図3Aに示す一態様では、SoC12は、キャッシュバンク分散アドレス構成要素300と、キャッシュバンク分散を実装するように構成されたキャッシュバンク分散関数構成要素302とを含み得る。キャッシュメモリコントローラ304は、キャッシュメモリアクセス要求の物理アドレスをキャッシュバンク分散アドレス構成要素300に送ることによって、受信されたキャッシュメモリアクセス要求のためのキャッシュバンク分散を開始し得る。キャッシュメモリコントローラ304は、キャッシュメモリアクセス要求の物理アドレスに対応する変換されたバンク分散アドレスをキャッシュバンク分散アドレス構成要素300から受信し得る。キャッシュメモリアクセス要求の物理アドレスをキャッシュバンク分散アドレスに変換することについて、以下でさらに説明する。
【００３２】
キャッシュバンク分散アドレス構成要素300は、キャッシュメモリ306の1つまたは複数の物理アドレスを記憶し得るキャッシュメモリコントローラ304の一部であるかまたはそれとは別個のデータストレージ構成要素であり得る。キャッシュバンク分散アドレス構成要素300によって記憶された物理アドレスは、キャッシュメモリアクセス要求の物理アドレスおよび/またはキャッシュバンク分散アドレスを含み得る。一態様では、キャッシュバンク分散アドレス構成要素300は、キャッシュメモリアクセス要求の物理アドレスをキャッシュメモリコントローラ304またはプロセッサ14から受信し得る。キャッシュバンク分散アドレス構成要素300は、キャッシュメモリアクセス要求の物理アドレスを変換のためにキャッシュバンク分散関数構成要素302に提供し得る。キャッシュバンク分散アドレス構成要素300は、変換されたバンク分散アドレスをキャッシュバンク分散関数構成要素302から受信し、キャッシュメモリアクセス要求の物理アドレスをキャッシュバンク分散アドレスに置き換え得る。キャッシュバンク分散アドレス構成要素300は、キャッシュバンク分散アドレスをキャッシュメモリコントローラ304またはプロセッサ14に提供し得る。
【００３３】
一態様では、キャッシュバンク分散アドレス構成要素300は、キャッシュメモリアクセス要求の1つまたは複数の物理アドレスを対応するバンク分散アドレスと相関させる方法でデータを記憶し得る。一態様では、相関したアドレスは、テーブルなどの、相関したアドレスにリンクさせるのに適した任意のデータ構造にフォーマットされ得る。一態様では、相関したアドレスの各ペアは、必要な圧縮比および/またはサイズを有する圧縮データ用のキャッシュメモリアクセス要求に応答して、キャッシュバンク分散アドレス構成要素300に記憶され得る。
【００３４】
一態様では、相関したアドレスのいくつかまたはすべては、キャッシュの任意の物理アドレスに対するキャッシュメモリアクセス要求が受信される前に、キャッシュバンク分散アドレス構成要素300にロードされ得る。たとえば、キャッシュメモリ306の特定の部分は、キャッシュバンク分散を使用して記憶され得る圧縮データを記憶するために指定され得る。キャッシュメモリ306のこの部分に対するキャッシュバンク分散アドレスは、本明細書でさらに説明するように決定され、キャッシュメモリ306のこの部分の物理アドレスに対する任意のキャッシュメモリアクセス要求が受信される前に、キャッシュバンク分散アドレス構成要素300に記憶され得る。
【００３５】
キャッシュバンク分散関数構成要素302は、キャッシュメモリアクセス要求の物理アドレスを対応するバンク分散アドレスに変換するための、キャッシュメモリコントローラ304の一部であるかまたはそれとは別個の、ハードウェアまたはソフトウェアで実装される構成要素であり得る。キャッシュメモリアクセス要求の物理アドレスを対応するバンク分散アドレスに変換する際に使用されるキャッシュバンク分散関数は、任意の単一の既知の数学関数および/もしくは演算関数またはその組合せであり得る。
【００３６】
一態様では、キャッシュバンク分散関数構成要素302は、キャッシュメモリアクセス要求の物理アドレスのビットをキャッシュバンク分散関数用のオペランドとして選択することを使用して、排他的OR(XOR)演算などの論理演算を用い得る。キャッシュバンク分散関数の結果は、データ圧縮プロセスによってキャッシュメモリアクセス要求の物理アドレスからクリアされている場合があるビットを置き換えるために使用される置換ビットを含み得る。説明したように、圧縮中にクリアされたビットはキャッシュバンク選択ビットであり得、キャッシュバンク選択ビットをクリアした結果として、キャッシュメモリアクセス要求の物理アドレスは常に、クリアされたキャッシュバンク選択ビットの同じ値を示すことになる。キャッシュメモリコントローラ304は、キャッシュメモリ306のどのバンクを書込み先または読取り元とするかを決定するために、バンク選択ビットを使用し得る。
【００３７】
一態様では、キャッシュメモリアクセス要求の圧縮データはキャッシュラインのサイズ未満であり得、したがって、単一のキャッシュバンクに書き込まれ得る。キャッシュバンク選択ビットが常にそのような圧縮データの同じ値を示すとき、圧縮データは常に、同じキャッシュバンクまたはキャッシュバンクの全セット未満のキャッシュバンクのセット上に記憶され得る。たとえば、キャッシュメモリアクセス要求の物理アドレスは、1つのバンク選択ビットのみを含み得る。単一のバンク選択ビットは、各々が2つのキャッシュバンクのうちの1つを意味する2つの値、たとえば、0または1のうちの1つを示す。常に同じ値、たとえば0を示すバンク選択ビットの結果として、バンク選択ビットは、一方の対応するキャッシュバンクのみの使用を示し得る。これは、圧縮データ用のキャッシュバンクの使用をキャッシュバンクの半分に効果的に低減する。クリアされたビットの同様の例は、キャッシュメモリアクセス要求の物理アドレスのバンク選択ビットの任意の数のいくつかまたはすべてを含み得る。たとえば、4つのキャッシュバンクを含むキャッシュメモリ306は、物理アドレス内の2つのバンク選択ビットの使用を必要とし得る。データ圧縮から生じたクリアされたビットは、物理アドレスのバンク選択ビットの一方または両方を含み得る。その結果、その以前のサイズの少なくとも半分に圧縮されたデータに使用されるバンクは、キャッシュバンクの半分または4分の1に制限され得る。キャッシュバンク分散関数構成要素302は、十分に小さい圧縮データ用のキャッシュバンクのいくつかまたはすべての使用を元に戻すために使用され得る。
【００３８】
一態様では、キャッシュバンク分散関数構成要素302は、物理アドレスをキャッシュバンク分散アドレス構成要素300から受信し得る。上記で説明したように、物理アドレスはキャッシュメモリアクセス要求の物理アドレスであり得るか、または圧縮データを記憶するように指定されたキャッシュメモリの一部分に関連付けられた物理アドレスであり得る。キャッシュバンク分散関数構成要素302は、キャッシュバンク分散関数の結果を判定する際に物理アドレスの部分を使用し得る。結果は、物理アドレスのバンク選択ビットを置き換えて対応するバンク分散アドレスを生成するために使用され得る。キャッシュバンク分散関数構成要素302は、キャッシュバンク分散アドレスをキャッシュバンク分散アドレス構成要素300に提供し得る。
【００３９】
一態様では、プロセッサ14は、キャッシュメモリアクセス要求の物理アドレスをキャッシュバンク分散アドレス構成要素300に送ることによって、キャッシュバンク分散を開始し得る。プロセッサ14またはキャッシュメモリコントローラ304は、変換されたバンク分散アドレスをキャッシュバンク分散アドレス構成要素300から受信し得る。プロセッサ14がキャッシュバンク分散アドレスを受信する一態様では、プロセッサ14は、キャッシュメモリコントローラ304へのキャッシュメモリアクセス要求の中にキャッシュバンク分散アドレスを含み得る。キャッシュメモリコントローラ304がキャッシュメモリアクセス要求をプロセッサ14から受信し、キャッシュバンク分散アドレスをプロセッサ14またはキャッシュバンク分散アドレス構成要素300から受信する一態様では、キャッシュメモリコントローラ304は、キャッシュバンク分散アドレスを使用してキャッシュメモリアクセス要求を実装し得る。
【００４０】
図3Bに示す一態様では、SoC12は、キャッシュメモリ306に送られた書込みキャッシュメモリアクセス要求のためにプロセッサ14によって提供されたデータを圧縮するように構成された圧縮構成要素308を含み得る。圧縮構成要素308は、書込みキャッシュメモリアクセス要求のためにプロセッサ14によって提供されたデータの圧縮バージョンを出力し得る。プロセッサ14は、圧縮パラメータに従ってデータを圧縮するよう圧縮構成要素308に命令し得る。圧縮パラメータは、圧縮比、圧縮データサイズ、または圧縮データ品質を含み得る。一態様では、圧縮構成要素308は、プログラム命令をプロセッサ14から受信し得るプログラマブルハードウェア構成要素であり得るか、またはデータの圧縮を決定するための圧縮規則またはアルゴリズムで事前プログラムされ得る。一態様では、圧縮規則またはアルゴリズムは、静的な圧縮パラメータであり得る。一態様では、圧縮構成要素308は、データを圧縮するように構成されたプログラムソフトウェアであり得る。圧縮構成要素308は、圧縮パラメータとしての入力値を、プロセッサ14またはデータをどのように圧縮するかを圧縮構成要素308に命令するための他のプログラムソフトウェアから受信し得る。一態様では、プログラムソフトウェア圧縮構成要素308は、上記で説明したプログラマブルハードウェア圧縮構成要素308と同様に、圧縮規則またはアルゴリズムを含み得る。圧縮構成要素308は、データサイズ、圧縮比、および圧縮データの出力を伴う圧縮品質などの圧縮パラメータを含み得る。たとえば、圧縮パラメータは、圧縮データのメタデータに含まれ得る。
【００４１】
圧縮構成要素308の出力である圧縮データは、バンク分散関数構成要素302において受信され得る。上記で説明したように、キャッシュバンク分散関数構成要素302は、キャッシュメモリアクセス要求の物理アドレスを受信し、それを対応するバンク分散アドレスに変換し得る。キャッシュメモリアクセス要求の物理アドレスを対応するバンク分散アドレスに変換する際に使用されるキャッシュバンク分散関数は、任意の単一の既知の数学関数および/もしくは演算関数またはその組合せであり得る。
【００４２】
キャッシュバンク分散関数構成要素302はまた、圧縮データのための圧縮パラメータを受信し、物理アドレスをどのようにキャッシュバンク分散アドレスに変換するかを決定するために圧縮パラメータを使用し得る。本明細書でさらに詳細に説明するように、データの圧縮は、プロセッサ14によって発行されたキャッシュメモリアクセス要求の物理アドレスを修正し得る。物理アドレスに対する修正は、1つまたは複数のキャッシュメモリバンク選択ビットの値を変更することを含み得る。圧縮パラメータは、物理アドレスがデータの圧縮によってどのように修正され得るかと、物理アドレスの修正のうちのどれをさらに修正すべきかとをキャッシュバンク分散関数構成要素302に示し得る。
【００４３】
キャッシュバンク分散関数構成要素302は、たとえば、バンク選択ビットのうちの1つまたは複数を回復することによって、圧縮データの物理アドレスをさらに修正し得る。バンク選択ビットのうちの1つまたは複数を回復するキャッシュバンク分散関数構成要素302は、バンク選択ビットをその元の値に戻してもよい(または戻さなくてもよい)。しかしながら、バンク選択ビットを回復することは、バンク選択ビットの値を、同様に圧縮されたデータに対する同じバンク選択ビットのすべてについての静的な値から、物理アドレスからの保護されたビットに基づいて変化し得る動的な値に変更し得る。
【００４４】
一態様では、キャッシュバンク分散関数は、以下の擬似コードと同様の方法で実装され得る。
BankSpreading(BaseAddr, CompressionLevel){
PhysicalAddressShift = 0
if ( CompressionLevel == "4:1" or CompressionLevel == "4:2"){
Bit1 = (BaseAddr >> Bit1ToBeUsed) & 1
Bit2 = (BaseAddr >> Bit2ToBeUsed) & 1
PhysicalAddressShift = (Bit1 XOR Bit2) << W
}
return BaseAddr + PhysicalAddressShift
}
【００４５】
上記の擬似コード例では、BankSpreading関数へのBaseAddr入力は、キャッシュメモリアクセス要求の物理アドレスを含み得る。CompressionLevelは、キャッシュメモリアクセス要求の圧縮データの圧縮比などの圧縮パラメータを含み得る。PhysicalAddressShiftは、CompressionLevelが条件文の条件を満たすときに決定され得る。この例では、CompressionLevelは、圧縮データの4:1または4:2圧縮比と等価であり得る。PhysicalAddressShiftを決定するために、Bit1変数およびBit2変数は、BaseAddr入力の指定されたビットに設定され得る。Bit1変数およびBit2変数を使用して、PhysicalAddressShiftは、クリアされたビットを回復するようにシフトされたBit1 XOR Bit2に設定され得、たとえば、そのビットをW位置だけシフトし、ここで、Wは圧縮中にクリアされるアドレスビットの位置である。上記で説明したように、数学関数または演算関数は、この例ではXOR関数を置き換え得る。BankSpreading関数の出力は、PhysicalAddressShiftと組み合わせられたBaseAddr入力を含み得る。一態様では、これらの値の組合せは、物理アドレスの1つまたは複数のクリアされたバンク選択ビットを回復し、キャッシュメモリアクセス要求のためのキャッシュバンク分散アドレスを生成し得る。
【００４６】
バンク分散関数構成要素302は、キャッシュバンク分散アドレスおよび/またはキャッシュメモリアクセス要求をキャッシュメモリコントローラ304に転送し得る。上記で説明したように、キャッシュメモリコントローラ304は、キャッシュメモリ306でキャッシュメモリアクセス要求を実装するために、キャッシュバンク分散アドレスを使用し得る。
【００４７】
図4は、一態様による、圧縮データ412を記憶する複数のキャッシュバンク418、420、422、および424上のキャッシュライン408、410、414、および416から成るキャッシュ空間400、402、404、および406を含むキャッシュメモリの一部分を示す。この例に示すように、各キャッシュライン408、410、414、および416は、別個のキャッシュバンク418、420、422、および424上に配置され得る。圧縮データ412は、各キャッシュライン408、410、414、および416のほぼ2分の1を占めるように示されている。この例では、事前圧縮データならびにキャッシュ空間400、402、404、および406は、ほぼ256バイトであり得る。キャッシュライン408、410、414、および416はそれぞれ、ほぼ128バイトであり得る。事前圧縮データは、ほぼ64バイトに圧縮されて、圧縮データ412をもたらし得る。圧縮データ412の圧縮比は、4:1であり得る。言い換えれば、圧縮データ412は、事前圧縮データのサイズの4分の1すなわち25%であり得る。したがって、圧縮データ412の圧縮比は2:1圧縮比以上であるか、または圧縮データ412のサイズはキャッシュライン408、410、414、および416のサイズ以下であり得る。これにより、圧縮データ412は単一のキャッシュライン408、410、414、および416に適合するほど十分に小さくなる場合がある。
【００４８】
各キャッシュバンク418、420、422、および424は、キャッシュメモリアクセス要求の物理アドレス内のバンク選択ビットの特定の組合せに関連付けられ得る。この例では、物理アドレスは2つのバンク選択ビットを含み得る。バンク選択ビット値=00は、キャッシュバンク418に関連付けられ得る。同様に、バンク選択ビット値=01は、キャッシュバンク420に関連付けられ、バンク選択ビット値=10はキャッシュバンク422に関連付けられ、バンク選択ビット値=11はキャッシュバンク424に関連付けられ得る。圧縮がバンク選択ビットのすべてをクリアして、たとえば、常にバンク選択ビット値=00となる一態様では、キャッシュ空間400の場合、圧縮データ412を記憶するためにキャッシュバンク418のみが使用され得る。圧縮アルゴリズムが最下位のバンク選択ビットをクリアして、たとえば、常にバンク選択ビット値=00または10となる同様の態様では、キャッシュ空間400および406の場合、圧縮データ412を記憶するためにキャッシュバンク418および422のみが使用され得る。一態様では、クリアされたバンク選択ビットは、「0」ではなく「1」に設定され得る。したがって、キャッシュバンク分散がなければ、キャッシュバンク418、420、422、および424のうちのいくつかは、他のキャッシュバンク418、420、422、および424よりも低い頻度で使用され得、そうであるとしても、不均一な使用をもたらし得る。
【００４９】
通常は、キャッシュバンク418、420、422、および424の半分未満に記憶されるように制限され得る、圧縮データ412用のキャッシュメモリアクセス要求のためにキャッシュバンク分散が実装される一態様では、キャッシュバンク418、420、422、および424の限られた数よりも多くに記憶され得る。キャッシュバンク分散は、キャッシュメモリアクセス要求の物理アドレスのクリアされたバンク選択ビットのうちの1つまたは複数を回復するために使用され得る。バンク選択ビットのすべてがクリアされる、2つのバンク選択ビットを使用する一態様では、キャッシュバンク分散は、バンク選択ビットの一方または両方を回復するために使用され得る。一態様では、バンク選択ビットは、キャッシュバンク分散関数を完全に異なるまたは部分的に異なるオペランドとともに使用して回復され得る。たとえば、キャッシュメモリアクセス要求の物理アドレスの保護された(またはクリアされていない)ビットは、キャッシュバンク分散関数用のオペランドとして使用され得る。第1のクリアされたバンク選択ビットのためのキャッシュバンク分散関数の実装の場合、キャッシュバンク分散関数は、第1の保護されたビットおよび第2の保護されたビットを使用し得る。第2のクリアされたバンク選択ビットの場合、キャッシュバンク分散関数は、第1の保護されたビットもしくは第2の保護されたビットのいずれかと第3の保護されたビット、または第3の保護されたビットと第4の保護されたビットを使用し得る。
【００５０】
使用されるオペランドにかかわらず、キャッシュバンク分散関数は、キャッシュメモリアクセス要求のためのより多くのキャッシュバンク418、420、422、および424の使用をもたらし得る。上記で説明したように、圧縮アルゴリズムが2つのバンク選択ビットをクリアする一態様では、バンク選択ビット値は=00であり、キャッシュ空間400の場合はキャッシュバンク418のみの使用を可能にし得る。キャッシュバンク分散が2つのクリアされたバンク選択ビットのうちの1つを回復する態様では、バンク選択ビット値は=00および01または10のうちの1つであり、キャッシュ空間402の場合はキャッシュバンク420またはキャッシュ空間406の場合はキャッシュバンク422のうちの1つの追加の使用を可能にし得る。圧縮アルゴリズムが2つのバンク選択ビットのうちの1つをクリアする一態様では、バンク選択ビット値は=00および01または10のうちの1つであり、キャッシュ空間400の場合はキャッシュバンク418と、キャッシュ空間402の場合はキャッシュバンク420またはキャッシュ空間406の場合はキャッシュバンク422のうちの1つとの使用を可能にし得る。キャッシュバンク分散がクリアされたバンク選択ビットを回復する態様では、バンク選択ビット値は=00、01、10、および11であり、キャッシュ空間400、402、404、および406の場合はキャッシュバンク418、420、422、および424の使用を可能にし得る。
【００５１】
本明細書の例で使用されるキャッシュバンクの数は、いかなる形でも限定するものではない。キャッシュメモリは、本明細書の例で説明したものよりも多いまたは少ないキャッシュバンクを含む、様々なサイズのキャッシュラインを含み得る。キャッシュバンク分散は、任意の数のキャッシュバンクを有するキャッシュメモリにおいて同様に適用され得る。同様に、キャッシュメモリの物理アドレスのバンク選択ビットは変化し得る。一態様では、バンク選択ビットの数は、キャッシュメモリによって用いられるキャッシュバンクの数によって影響され得る。一態様では、回復されたバンク選択ビットの数も変化し、キャッシュバンクのいくつかまたはすべての使用をもたらし得る。
【００５２】
図5は、一態様による、圧縮データ512を記憶する複数のキャッシュバンク418、420、422、および424上のキャッシュライン408、410、414、および416から成るキャッシュ空間500、502、504、および506を含むキャッシュメモリの一部分を示す。図5に示す例は、図4に示す例と同様である。これらの例の間の差は、圧縮データ512が圧縮データ412よりも大きくてもよいということである。この例では、事前圧縮データならびにキャッシュ空間500、502、504、および506は、ほぼ256バイトであり得る。キャッシュライン408、410、414、および416はそれぞれ、ほぼ128バイトであり得る。事前圧縮データは、ほぼ128バイトに圧縮されて、圧縮データ512をもたらし得る。圧縮データ512の圧縮比は、2:1であり得る。言い換えれば、圧縮データ512は、事前圧縮データのサイズの半分すなわち50%であり得る。したがって、圧縮データ512の圧縮比は2:1圧縮比以上であるか、または圧縮データ512のサイズはキャッシュライン408、410、414、および416のサイズ以下であり得る。これにより、圧縮データ512は単一のキャッシュライン408、410、414、および416に適合するほど十分に小さくなる場合がある。
【００５３】
圧縮データ512は、圧縮データ412と同様に、単一のキャッシュライン408、410、414、および416に適合し得るので、圧縮データ412を使用して上記で説明した態様のすべては、圧縮データ512にも適用され得る。同様の例では、クリアされたバンク選択ビットは、圧縮データ512に使用されるバンク418、420、422、および424の数を制限し得る。図5に示す例では、クリアされたバンク選択ビットは、4つの利用可能なキャッシュバンク418、420、422、および424のうちの1つまたは2つのみの使用をもたらし得る。さらに、キャッシュバンク分散は、クリアされたバンク選択ビットのうちの1つまたは複数を回復するために使用され、使用可能なキャッシュバンク418、420、422、および424の数を増加し得る。
【００５４】
図6は、一態様による、圧縮データ612を記憶する複数のキャッシュバンク418、420、422、および424上のキャッシュライン408、410、414、および416から成るキャッシュ空間600、602、604、および606を含むキャッシュメモリの一部分を示す。図4および図5の前の例とは異なり、圧縮データ612は単一のキャッシュライン408、410、414、および416に適合しない。上記の例を続けると、事前圧縮データならびにキャッシュ空間600、602、604、および606は、ほぼ256バイトであり得る。キャッシュライン408、410、414、および416はそれぞれ、ほぼ128バイトであり得る。事前圧縮データは、ほぼ192バイトに圧縮されて、圧縮データ612をもたらし得る。圧縮データ612の圧縮比は、4:3であり得る。言い換えれば、圧縮データ612は、事前圧縮データのサイズの4分の3すなわち75%であり得る。したがって、圧縮データ612の圧縮比は2:1圧縮比未満であるか、または圧縮データのサイズはキャッシュライン408、410、414、および416よりも大きくなり得る。これにより、圧縮データ612は単一のキャッシュバンク418、420、422、および424上の単一のキャッシュライン408、410、414、および416に適合するには大きくなりすぎる場合がある。一態様では、圧縮データ612はそれぞれのキャッシュ空間600、602、604、および606の複数のキャッシュバンク418、420、422、および424上に記憶され得るので、圧縮データ612用のバンク選択ビットは無関係であってもよい。したがって、キャッシュバンク分散は、圧縮データ612に使用されない場合がある。
【００５５】
図7は、一態様による、圧縮データ712を記憶する複数のキャッシュバンク418、420、422、および424上のキャッシュライン408、410、414、および416から成るキャッシュ空間700、702、704、および706を含むキャッシュメモリの一部分を示す。図6の例と同様に、圧縮データ712は単一のキャッシュライン408、410、414、および416に適合しない。圧縮データ712の圧縮比にかかわらず、圧縮データ712は単一のキャッシュバンク418、420、422、および424上のキャッシュライン408、410、414、および416に適合しない場合があるので、バンク選択ビットは無関係であってもよい。一態様では、圧縮データ712はそれぞれのキャッシュ空間700、702、704、および706の複数のキャッシュバンク418、420、422、および424上に記憶され得るので、圧縮データ712用のバンク選択ビットは無関係であってもよい。したがって、キャッシュバンク分散は、圧縮データ712に使用されない場合がある。
【００５６】
図8は、一態様による、圧縮データ用のキャッシュメモリアクセス要求の物理アドレスと、キャッシュ内の関連するバンク分散物理アドレスとの間の関係の例示的なテーブル800を示す。テーブル800は、圧縮データ用のキャッシュメモリアクセス要求において使用され得るキャッシュメモリの物理アドレス802、物理アドレスの一部分のバイナリビット表現(または物理アドレスビット)804、物理アドレスバンク選択ビット806、キャッシュバンク分散アドレス808、バンク分散アドレスの一部分のバイナリビット表現(またはバンク分散アドレスビット)810、およびキャッシュバンク分散アドレスバンク選択ビット812の列を含み得る。テーブル800はまた、バンク分散を使用する圧縮データ用のキャッシュメモリアクセス要求に使用され得るキャッシュメモリの1つまたは複数の物理アドレスの行814〜830を含み得る。
【００５７】
一態様では、物理アドレス802は、1つまたは複数の最下位の数字に0値を含み得る。これらの0値は、データ圧縮によってクリアされた物理アドレスの部分を表し得る。物理アドレスビット804は、物理アドレス802のクリアされた部分の最上位の数字および物理アドレス802の保護された部分の最下位の数字を表し得る。物理アドレスバンク選択ビット806は、最下位ビットがクリアされ得、最上位ビットが保護され得る場合の物理アドレス802のバンク選択ビット、この例では2ビットを表し得る。上記で説明したように、行816、820、824、および828における半分の物理アドレス802について、物理アドレスバンク選択ビット806がすべて=00であり得ることは明らかであり得る。同様に、行818、822、823、および830における他方の半分の物理アドレス802について、物理アドレスバンク選択ビット806はすべて=10であり得る。したがって、バンク選択ビット組合せの半分のみが使用され、キャッシュバンクの使用を半分に制限し得る。
【００５８】
一態様では、キャッシュバンク分散アドレス808、キャッシュバンク分散アドレスビット810、およびキャッシュバンク分散アドレスバンク選択ビット812は、キャッシュバンク分散を実装することから生じる、同じ行814〜830の物理アドレス802と相関したデータを表し得る。一態様では、キャッシュバンク分散は、物理アドレスビット804に示す保護されたビットの最下位2ビットとともにXOR演算子を使用して実装され得る。キャッシュバンク分散は、最下位/クリアされた物理アドレスバンク選択ビット806を回復するために使用され得る。たとえば、行818において、物理アドレスバンク選択ビット806=10である。物理アドレスビット804に示す保護されたビットの最下位2ビット=01である。この例においてキャッシュバンク分散を実装することは、0 XOR 1=1を含み得る。キャッシュバンク分散の結果は、クリアされた物理アドレスバンク選択ビット806を、キャッシュバンク分散アドレスバンク選択ビット812=11を生成する値1を用いて回復している場合がある。これは、物理アドレス802の保護された部分の最下位の数字が同じままであり、物理アドレス802のクリアされた部分の最上位の数字が更新される、キャッシュバンク分散アドレスビット810において反映され得る。たとえば、物理アドレスビット804において、物理アドレス802のクリアされた部分の最上位の数字=0000である。キャッシュバンク分散を実装することは、キャッシュバンク分散アドレスビット810を生成する物理アドレスビット804を更新することをもたらし得、この場合、物理アドレス802のクリアされた部分の最上位の数字=1000である。物理アドレス802=0xABCD100は同様に更新されて、対応するバンク分散アドレス808=0xABCD180を生成し得る。
【００５９】
テーブル800は、物理アドレスバンク選択ビット806(00および10)よりも多くのバンク分散アドレスバンク選択ビット812の組合せ(00、01、10、および11)があるので、キャッシュバンク分散を実装することは圧縮データ用のキャッシュメモリアクセス要求に使用されるキャッシュバンクの数を増加し得ることを示す。テーブル800は、キャッシュバンク分散のすべての実装が、行824の例の場合のように、物理アドレスバンク選択ビット806とは異なるバンク分散アドレスバンク選択ビット812をもたらし得るとは限らないことも示す。
【００６０】
図9は、圧縮データ用のキャッシュメモリアクセス要求のためのキャッシュバンク分散を実装するための一態様方法900を示す。方法900は、ソフトウェア、プロセッサ、バンク分散関数構成要素、もしくはキャッシュメモリコントローラなどの汎用もしくは専用ハードウェア、またはソフトウェアとハードウェアの組合せを使用するコンピューティングデバイスにおいて実行され得る。ブロック902において、コンピューティングデバイスは、書込みまたは読取りキャッシュメモリアクセス要求を受信し得る。書込みキャッシュメモリアクセス要求は、圧縮済み書込みデータ、圧縮済み書込みデータを記憶するための物理アドレス、書込みデータが圧縮済みであるという指示および/または圧縮済み書込みデータの圧縮比の指示、ならびに/あるいは圧縮済み書込みデータのサイズの指示を含み得る。読取りキャッシュメモリアクセス要求は、圧縮済み読取りデータを取り出すための物理アドレス、読取りデータが圧縮済みであるという指示および/または圧縮済み読取りデータの圧縮比の指示、ならびに/あるいは圧縮済み読取りデータのサイズの指示を含み得る。
【００６１】
判定ブロック904において、コンピューティングデバイスは、キャッシュメモリアクセス要求が圧縮データ用であるかどうかを判定し得る。キャッシュメモリアクセス要求のデータが圧縮済みであるという指示および/または要求されたデータの圧縮比の指示は、キャッシュメモリアクセス要求が圧縮データ用であるかどうかを判定するために使用され得る。一態様では、これらの指示は、書込みキャッシュメモリアクセス要求のためのみに使用され得る。読取りキャッシュメモリアクセス要求が圧縮データ用であるかどうかを判定することは、読取りデータを取り出すための物理アドレスを、データが前の書込みキャッシュメモリアクセス要求の一部としてキャッシュメモリに記憶されたときにデータが圧縮されたかどうかを示す記録と比較することを伴い得る。キャッシュメモリアクセス要求が圧縮データ用ではない(すなわち、判定ブロック904=「No」)との判定に応答して、コンピューティングデバイスは、ブロック916において、バンク分散なしでキャッシュメモリアクセス要求を実行し得る。
【００６２】
キャッシュメモリアクセス要求が圧縮データ用である(すなわち、判定ブロック904=「Yes」)との判定に応答して、コンピューティングデバイスは、判定ブロック906において、キャッシュメモリアクセス要求が圧縮データを書き込むためのものであるか、または圧縮データを読み取るものであるかを判定し得る。各キャッシュメモリアクセス要求は、キャッシュメモリに書き込むか、またはキャッシュメモリから読み取るかのいずれかのための命令を含み得る。
【００６３】
キャッシュメモリアクセス要求が圧縮データを書き込むためのものである(すなわち、判定ブロック906=「書込み」)との判定に応答して、コンピューティングデバイスは、判定ブロック908において、圧縮データを書き込むためにキャッシュバンク分散を実装すべきかどうかを判定し得る。上記で説明したように、キャッシュバンク分散はすべての圧縮データに対して実装されない場合がある。キャッシュバンク分散を実装することは、圧縮データが指定されたサイズであること、すなわち、単一のキャッシュメモリバンク上で適応できること、および/または指定された圧縮比、すなわち、2:1以上であることを条件とし得る。一態様では、コンピューティングデバイスは、キャッシュメモリアクセス要求の圧縮データのサイズをキャッシュメモリバンクのサイズと比較し得る。圧縮データのサイズがキャッシュメモリバンクのサイズ以下であるとき、コンピューティングデバイスは、キャッシュメモリアクセス要求がキャッシュバンク分散を使用して実装され得ると判定し得る。同様に、キャッシュメモリアクセス要求が標準サイズ以下のデータ用に発行されるとき、標準サイズはキャッシュラインと同じサイズであり得る。コンピューティングデバイスは、キャッシュラインサイズ、および、一態様では、各キャッシュラインに使用されるキャッシュメモリバンクの数を認識していてもよい。通常のキャッシュメモリアクセス要求は、キャッシュラインサイズ以下であり、キャッシュラインのキャッシュメモリバンクのすべてを使用するデータ用であり得る。したがって、圧縮データ用のキャッシュメモリアクセス要求の圧縮比を知ることで、コンピューティングデバイスは、圧縮データがいくつのキャッシュメモリバンクを使用し得るかを判定し得る。一態様では、圧縮比が、圧縮データがキャッシュメモリバンクの半分または半分未満を使用するようなものであるとき、コンピューティングデバイスは、キャッシュメモリアクセス要求がキャッシュバンク分散を使用して実装され得ると判定し得る。
【００６４】
書込みキャッシュメモリアクセス要求がキャッシュバンク分散を使用して実装され得る(すなわち、判定ブロック908=「Yes」)との判定に応答して、コンピューティングデバイスは、本明細書で説明する様々な態様に従って、ブロック910において、キャッシュバンク分散を使用して圧縮データ用の書込みキャッシュメモリアクセス要求を実行し得る。書込みキャッシュメモリアクセス要求がキャッシュバンク分散を使用して実装され得ない(すなわち、判定ブロック908=「No」)との判定に応答して、コンピューティングデバイスは、ブロック916において、バンク分散なしでキャッシュメモリアクセス要求を実行し得る。
【００６５】
キャッシュメモリアクセス要求が圧縮データを読み取るためのものである(すなわち、判定ブロック906=「読取り」)との判定に応答して、コンピューティングデバイスは、判定ブロック912において、圧縮データを読み取るためにキャッシュバンク分散を実装すべきかどうかを判定し得る。圧縮データを読み取るためにキャッシュバンク分散を実装すべきかどうかを判定することは、判定ブロック908を参照しながら上記で説明したような圧縮データを書き込む方法と同様の方法で実装され得る。読取りキャッシュメモリアクセス要求がキャッシュバンク分散を使用して実装され得る(すなわち、判定ブロック912=「Yes」)との判定に応答して、コンピューティングデバイスは、本明細書でさらに説明するように、キャッシュバンク分散を使用して圧縮データ用の読取りキャッシュメモリアクセス要求を実行し得る。読取りキャッシュメモリアクセス要求がキャッシュバンク分散を使用して実装され得ない(すなわち、判定ブロック912=「No」)との判定に応答して、コンピューティングデバイスは、ブロック916において、バンク分散なしでキャッシュメモリアクセス要求を実行し得る。
【００６６】
一態様では、書込みキャッシュメモリアクセス要求と読取りキャッシュメモリアクセス要求を区別することが必要ではない場合がある。いずれの場合でも、キャッシュバンク分散を用いてキャッシュメモリアクセス要求を実行することは、以下で説明する方法と同じ方法で達成され得るかもしれない。
【００６７】
図10は、圧縮データ用の書込みキャッシュメモリアクセス要求のためのキャッシュバンク分散を実装するための一態様方法1000を示す。方法1000は、ソフトウェア、プロセッサ、バンク分散関数構成要素、もしくはキャッシュメモリコントローラなどの汎用もしくは専用ハードウェア、またはソフトウェアとハードウェアの組合せを使用するコンピューティングデバイスにおいて実行され得る。ブロック1002において、コンピューティングデバイスは、キャッシュバンク分散関数用の入力を選択し得る。上記で説明したように、キャッシュバンク分散関数は、任意の数の既知の数学関数および演算関数のうちの1つまたはその組合せであり得る。一態様では、キャッシュバンク分散関数は、キャッシュメモリアクセス要求の物理アドレスの2つの保護されたビットの論理排他的OR(XOR)演算であり得る。キャッシュバンク分散関数用の入力は、キャッシュメモリアクセス要求の物理アドレスの第1の保護されたビットおよび第2の保護されたビットを選択するなどの所定の規則に従って選択され得る。一態様では、キャッシュバンク分散関数用の入力は、キャッシュメモリアーキテクチャ、キャッシュラインサイズを含むキャッシュメモリサイズ、および/またはキャッシュラインごとのキャッシュバンクの数などの様々な要因のうちの1つまたは複数に基づいた適応アルゴリズムに従って選択され得る。
【００６８】
ブロック1004において、コンピューティングデバイスは、キャッシュバンク分散関数を選択された入力に適用し得る。ブロック1006において、キャッシュバンク分散関数は、キャッシュバンク分散値を戻し得る。キャッシュバンク分散値は、上記で説明したような1つまたは複数のクリアされたバンク選択ビットを回復するために使用され得る任意の値であり得る。たとえば、2つのバンク選択ビットを回復するとき、キャッシュバンク分散値は、00、01、10、および11などの、クリアされたバンク選択ビットを置き換えるための2つのビット値を含み得る。これらの値は、この例に示すバイナリ表現に限定されず、そのような値の代替表現を使用して実装され得る。
【００６９】
ブロック1008において、コンピューティングデバイスは、キャッシュバンク分散値を使用してクリアされたバンク選択ビットを回復することによって、圧縮データ用のキャッシュメモリアクセス要求の物理アドレスのクリアされた部分を更新し得る。
【００７０】
任意選択のブロック1010において、コンピューティングデバイスは、キャッシュバンク分散アドレス、すなわち更新された物理アドレスを記憶し得る。キャッシュバンク分散アドレスは、即時のキャッシュメモリアクセス要求において後で使用するために、一時的に記憶され得る。一態様では、キャッシュバンク分散アドレスは、物理アドレスとの相関とともに記憶され得、キャッシュバンク分散アドレスが再計算されなくてもよいように、その相関から、後のキャッシュメモリアクセス要求のためのキャッシュバンク分散アドレスが計算される。
【００７１】
ブロック1012において、コンピューティングデバイスは、キャッシュバンク分散アドレスを使用して圧縮データをキャッシュメモリに書き込み得る。一態様では、方法1000はまた、読取りメモリアクセス要求のために実装され得、ブロック1012において、コンピューティングデバイスは、代わりに、キャッシュバンク分散アドレスを使用して圧縮データをキャッシュメモリから読み取り得る。
【００７２】
図11は、圧縮データ用の読取りキャッシュメモリアクセス要求のためのキャッシュバンク分散を実装するための一態様方法1100を示す。方法1100は、ソフトウェア、プロセッサ、バンク分散関数構成要素、もしくはキャッシュメモリコントローラなどの汎用もしくは専用ハードウェア、またはソフトウェアとハードウェアの組合せを使用するコンピューティングデバイスにおいて実行され得る。ブロック1102において、コンピューティングデバイスは、圧縮データ用の読取りキャッシュメモリアクセス要求のためのキャッシュバンク分散アドレスを決定し得る。一態様では、コンピューティングデバイスは、圧縮データ用の読取りキャッシュメモリアクセス要求の物理アドレスを、物理アドレスをすでに決定されたバンク分散アドレスと相関させる記憶されたデータ構造と比較し得る。上記で説明したように、様々な状況は、キャッシュバンク分散アドレスが、圧縮データ用の書込みキャッシュメモリアクセス要求などの、圧縮データ用の読取りキャッシュメモリアクセス要求の前に決定されることをもたらし得る。一態様では、バンク分散アドレスは、圧縮データを記憶するために指定される物理アドレスのグループのためのキャッシュバンク分散アドレスを事前計算するなどのために、圧縮データ用の書込みキャッシュメモリアクセス要求の前でも決定され得る。一態様では、キャッシュバンク分散アドレスは、上記で説明したように、圧縮データ用の読取りキャッシュメモリアクセス要求に応答して決定され得る。
【００７３】
ブロック1104において、コンピューティングデバイスは、決定されたキャッシュバンク分散アドレスにおいて記憶された圧縮済み読取りデータを取り出し得る。ブロック1106において、コンピューティングデバイスは、圧縮済み読取りデータを、プロセッサまたはSoCのサブシステムのうちの1つなどの、圧縮済み読取りデータを要求したクライアントに返し得る。
【００７４】
様々な態様(限定はしないが、図1〜図3Bおよび図8〜図11に関して上記で説明した態様を含む)は、様々なコンピューティングデバイス上に実装され得、その例が図12〜図14に示されている。
【００７５】
図12は、様々な態様とともに使用するのに適した例示的なモバイルコンピューティングデバイスを示す。モバイルコンピューティングデバイス1200は、タッチスクリーンコントローラ1204と内部メモリ1206とに結合されたプロセッサ1202を含み得る。プロセッサ1202は、汎用または特定の処理タスクに指定された1つまたは複数のマルチコア集積回路であり得る。内部メモリ1206は、揮発性または不揮発性メモリであってもよく、また、セキュアおよび/もしくは暗号化メモリであっても、または非セキュアおよび/もしくは非暗号化メモリであっても、あるいはそれらの任意の組合せであってもよい。利用され得るメモリタイプの例は、限定はしないが、DDR、LPDDR、GDDR、WIDEIO、RAM、SRAM、DRAM、P-RAM、R-RAM、M-RAM、STT-RAM、および埋め込みDRAMを含む。タッチスクリーンコントローラ1204およびプロセッサ1202は、抵抗感知タッチスクリーン、容量感知タッチスクリーン、赤外線感知タッチスクリーンなどのタッチスクリーンパネル1212に結合される場合もある。加えて、モバイルコンピューティングデバイス1200のディスプレイは、タッチスクリーン機能を有する必要はない。
【００７６】
モバイルコンピューティングデバイス1200は、互いに結合されたおよび/またはプロセッサ1202に結合された、通信を送信および受信するための1つまたは複数の無線信号トランシーバ1208(たとえば、Peanut、Bluetooth（登録商標）、Zigbee、Wi-Fi、RF無線)と、アンテナ1210とを有し得る。トランシーバ1208およびアンテナ1210は、様々なワイヤレス送信プロトコルスタックおよびインターフェースを実装するために、上述の回路とともに使用され得る。モバイルコンピューティングデバイス1200は、セルラーネットワークを介した通信を可能にし、プロセッサに結合されたセルラーネットワークワイヤレスモデムチップ1216を含み得る。
【００７７】
モバイルコンピューティングデバイス1200は、プロセッサ1202に結合された周辺デバイス接続インターフェース1218を含み得る。周辺デバイス接続インターフェース1218は、1つのタイプの接続を受け入れるように単独で構成され得るか、または、USB、FireWire、Thunderbolt、もしくはPCIeなどの共通もしくはプロプライエタリの様々なタイプの物理接続および通信接続を受け入れるように構成され得る。周辺デバイス接続インターフェース1218は、同様に構成された周辺デバイス接続ポート(図示せず)に結合される場合もある。
【００７８】
モバイルコンピューティングデバイス1200はまた、オーディオ出力を提供するためのスピーカー1214を含み得る。モバイルコンピューティングデバイス1200はまた、本明細書で説明する構成要素のすべてまたはいくつかを収容するための、プラスチック、金属、または材料の組合せから構築されたハウジング1220を含み得る。モバイルコンピューティングデバイス1200は、使い捨てバッテリーまたは充電式バッテリーなどの、プロセッサ1202に結合された電源1222を含み得る。充電式バッテリーは、モバイルコンピューティングデバイス1200の外部にある電源から充電電流を受けるために、周辺デバイス接続ポートに結合される場合もある。モバイルコンピューティングデバイス1200はまた、ユーザ入力を受け取るための物理ボタン1224を含み得る。モバイルコンピューティングデバイス1200はまた、モバイルコンピューティングデバイス1200をオンオフするための電源ボタン1226を含み得る。
【００７９】
上記で説明した様々な態様は、図13に示すラップトップコンピュータ1300などの様々なモバイルコンピューティングデバイス内に実装される場合もある。多くのラップトップコンピュータは、コンピュータのポインティングデバイスとして働くタッチパッドのタッチ面1317を含み、したがって、タッチスクリーンディスプレイを装備した上記で説明したコンピューティングデバイス上で実装されるものと同様のドラッグジェスチャ、スクロールジェスチャ、およびフリックジェスチャを受け取ることができる。ラップトップコンピュータ1300は通常、揮発性メモリ1312と、フラッシュメモリのディスクドライブ1313などの大容量不揮発性メモリとに結合されたプロセッサ1311を含む。加えて、コンピュータ1300は、プロセッサ1311に結合されたワイヤレスデータリンクおよび/またはセルラー電話トランシーバ1316に接続され得る、電磁放射を送信および受信するための1つまたは複数のアンテナ1308を有し得る。コンピュータ1300はまた、プロセッサ1311に結合されたフロッピーディスクドライブ1314およびコンパクトディスク(CD)ドライブ1315を含み得る。ノートブック構成では、コンピュータハウジングは、すべてがプロセッサ1311に結合された、タッチパッド1317、キーボード1318、およびディスプレイ1319を含む。コンピューティングデバイスの他の構成は、よく知られているように、(たとえば、USB入力を介して)プロセッサに結合されたコンピュータマウスまたはトラックボールを含み得、それらはまた、様々な態様とともに使用され得る。
【００８０】
様々な態様はまた、サーバキャッシュメモリにおいてデータを圧縮するために、様々な市販のサーバのいずれにおいても実装され得る。例示的なサーバ1400が、図14に示されている。そのようなサーバ1400は通常、揮発性メモリ1402と、ディスクドライブ1404などの大容量不揮発性メモリとに結合された、1つまたは複数のマルチコアプロセッサアセンブリ1401を含む。図14に示すように、マルチコアプロセッサアセンブリ1401は、それらをアセンブリのラックに挿入することによって、サーバ1400に追加され得る。サーバ1400はまた、プロセッサ1401に結合されたフロッピーディスクドライブ、コンパクトディスク(CD)またはDVDディスクドライブ1406を含み得る。サーバ1400はまた、他のブロードキャストシステムコンピュータおよびサーバに結合されたローカルエリアネットワーク、インターネット、公衆交換電話網、ならびに/またはセルラーデータネットワーク(たとえば、CDMA、TDMA、GSM（登録商標）、PCS、3G、4G、LTE、または任意の他のタイプのセルラーデータネットワーク)など、ネットワーク1405とのネットワークインターフェース接続を確立するための、マルチコアプロセッサアセンブリ1401に結合されたネットワークアクセスポート1403を含み得る。
【００８１】
様々な態様の動作を遂行するためにプログラマブルプロセッサ上で実行されるコンピュータプログラムコードまたは「プログラムコード」は、C、C++、C#、Smalltalk、Java（登録商標）、JavaScript（登録商標）、Visual Basic、Structured Query Language(たとえば、Transact-SQL)、Perlなどの高水準プログラミング言語で、または様々な他のプログラミング言語で書かれ得る。本出願で使用する、コンピュータ可読記憶媒体上に記憶されたプログラムコードまたはプログラムは、そのフォーマットがプロセッサによって理解可能である(オブジェクトコードなどの)機械言語コードを指し得る。
【００８２】
多くのコンピューティングデバイスのオペレーティングシステムカーネルは、(非特権コードが動作する場合)ユーザ空間に編成され、(特権コードが動作する場合)カーネル空間に編成される。この分離は、カーネル空間の一部であるコードが一般公有使用許諾(GPL)を受けなければならない一方で、ユーザ空間内で動作するコードがGPLを受けなくてもよい、Androidおよび他のGPL環境において特に重要である。本明細書で説明する様々なソフトウェア構成要素/モジュールは、別段に明記されていない限り、カーネル空間またはユーザ空間のいずれかにおいて実装され得ることを理解されたい。
【００８３】
上記の方法説明およびプロセスフロー図は、単に例示的な例として提供され、様々な態様の動作が提示された順序で実行されなければならないことを要求または暗示するものではない。当業者によって諒解されるように、上記の態様における動作の順序は、任意の順序で実行され得る。「その後」、「次いで」、「次に」などの語は、動作の順序を限定するものではなく、これらの語は単に、方法の説明を通して読者を導くために使用される。さらに、たとえば、冠詞「a」、「an」または「the」を使用する、単数形での請求項の要素へのいかなる言及も、その要素を単数形に限定するものとして解釈されるべきではない。
【００８４】
様々な態様に関して説明する様々な例示的な論理ブロック、モジュール、回路、およびアルゴリズム動作は、電子ハードウェア、コンピュータソフトウェア、または両方の組合せとして実装され得る。ハードウェアとソフトウェアのこの互換性を明確に示すために、様々な例示的な構成要素、ブロック、モジュール、回路、および動作について、上記では概してそれらの機能に関して説明した。そのような機能がハードウェアとして実装されるか、ソフトウェアとして実装されるかは、特定の適用例および全体的なシステムに課された設計制約に依存する。当業者は、説明した機能を特定の適用例ごとに様々な方法で実装し得るが、そのような実装の決定は、本発明の範囲からの逸脱を引き起こすものと解釈されるべきではない。
【００８５】
本明細書で開示する態様に関して説明する様々な例示的な論理、論理ブロック、モジュール、および回路を実装するために使用されるハードウェアは、汎用プロセッサ、デジタルプロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)もしくは他のプログラマブル論理デバイス、個別ゲートもしくはトランジスタ論理、個別ハードウェア構成要素、または本明細書で説明する機能を実行するように設計されたそれらの任意の組合せを用いて実装または実行され得る。汎用プロセッサはマイクロプロセッサであり得るが、代替として、プロセッサは、任意の従来のプロセッサ、コントローラ、マイクロコントローラ、または状態機械であり得る。プロセッサはまた、コンピューティングデバイスの組合せ、たとえば、DSPとマイクロプロセッサの組合せ、複数のマイクロプロセッサ、DSPコアと連携する1つもしくは複数のマイクロプロセッサ、または任意の他のそのような構成として実装され得る。代替的に、いくつかの動作または方法は、所与の機能に固有の回路によって実行され得る。
【００８６】
1つまたは複数の態様では、説明した機能は、ハードウェア、ソフトウェア、ファームウェア、またはそれらの任意の組合せにおいて実装され得る。ソフトウェアにおいて実装される場合、機能は、非一時的コンピュータ可読媒体または非一時的プロセッサ可読媒体上に1つまたは複数の命令またはコードとして記憶され得る。本明細書で開示する方法またはアルゴリズムの動作は、非一時的コンピュータ可読記憶媒体またはプロセッサ可読記憶媒体上に存在し得るプロセッサ実行可能ソフトウェアモジュールにおいて具現化され得る。非一時的コンピュータ可読記憶媒体またはプロセッサ可読記憶媒体は、コンピュータまたはプロセッサによってアクセスされ得る任意の記憶媒体であり得る。限定ではなく例として、そのような非一時的コンピュータ可読媒体またはプロセッサ可読媒体は、RAM、ROM、EEPROM、FLASHメモリ、CD-ROMもしくは他の光ディスクストレージ、磁気ディスクストレージもしくは他の磁気ストレージデバイス、または命令もしくはデータ構造の形態で所望のプログラムコードを記憶するために使用され得、コンピュータによってアクセスされ得る任意の他の媒体を含み得る。本明細書で使用するディスク(disk)およびディスク(disc)は、コンパクトディスク(disc)(CD)、レーザーディスク（登録商標）(disc)、光ディスク(disc)、デジタル多用途ディスク(disc)(DVD)、フロッピーディスク(disk)、およびブルーレイディスク(disc)を含み、ディスク(disk)は通常、データを磁気的に再生し、ディスク(disc)は、レーザーを用いてデータを光学的に再生する。上記の組合せも、非一時的コンピュータ可読媒体およびプロセッサ可読媒体の範囲内に含まれる。加えて、方法またはアルゴリズムの動作は、コンピュータプログラム製品に組み込まれ得る、非一時的プロセッサ可読媒体および/またはコンピュータ可読媒体上のコードおよび/または命令の1つまたは任意の組合せまたはセットとして存在し得る。
【００８７】
開示した態様の前述の説明は、任意の当業者が本発明を作成または使用することを可能にするために提供される。これらの態様に対する様々な修正は、当業者に容易に明らかになり、本明細書で定義する一般原理は、本発明の趣旨または範囲から逸脱することなく、他の態様に適用され得る。したがって、本発明は、本明細書に示す態様に限定されるものではなく、以下の特許請求の範囲、ならびに、本明細書で開示する原理および新規の特徴と一致する最も広い範囲を与えられるべきである。
【符号の説明】
【００８８】
10  コンピューティングデバイス
12  SoC
14  プロセッサ、マルチコアプロセッサ
16  メモリ
18  通信インターフェース
20  ストレージインターフェース
22  通信構成要素
24  ストレージ構成要素
26  アンテナ
28  ネットワークインターフェース
30  ワイヤレスネットワーク
32  ワイヤレス接続
40  インターネット
44  ワイヤード接続
50  リモートコンピューティングデバイス
200、201、202、203  プロセッサコア
300  キャッシュバンク分散アドレス構成要素
302  キャッシュバンク分散関数構成要素
304  キャッシュメモリコントローラ
306  キャッシュメモリ
308  圧縮構成要素、プログラムソフトウェア圧縮構成要素、プログラマブルハードウェア圧縮構成要素
400、402、404、406、500、502、504、506、600、602、604、606、700、702、704、706  キャッシュ空間
408、410、414、416  キャッシュライン
412、512、612、712  圧縮データ
418、420、422、424  キャッシュバンク
800  テーブル
802  物理アドレス
804  バイナリビット表現(または物理アドレスビット)
806  物理アドレスバンク選択ビット
808  キャッシュバンク分散アドレス
810  バイナリビット表現(またはバンク分散アドレスビット)
812  キャッシュバンク分散アドレスバンク選択ビット
814〜830  物理アドレス
900、1000、1100  方法
1200  モバイルコンピューティングデバイス
1202  プロセッサ
1204  タッチスクリーンコントローラ
1206  内部メモリ
1208  無線信号トランシーバ、トランシーバ
1210  アンテナ
1212  タッチスクリーンパネル
1214  スピーカー
1216  セルラーネットワークワイヤレスモデムチップ
1218  周辺デバイス接続インターフェース
1220  ハウジング
1222  電源
1224  物理ボタン
1226  電源ボタン
1300  ラップトップコンピュータ、コンピュータ
1308  アンテナ
1311  プロセッサ
1312  揮発性メモリ
1313  ディスクドライブ
1314  フロッピーディスクドライブ
1315  コンパクトディスク(CD)ドライブ
1316  ワイヤレスデータリンクおよび/またはセルラー電話トランシーバ
1317  タッチパッドのタッチ面、タッチパッド
1318  キーボード
1319  ディスプレイ
1400  サーバ
1401  マルチコアプロセッサアセンブリ、プロセッサ
1402  揮発性メモリ
1403  ネットワークアクセスポート
1404  ディスクドライブ
1405  ネットワーク
1406  フロッピーディスクドライブ、コンパクトディスク(CD)またはDVDディスクドライブ
【図１】
2017532657.tif 000003
【図２】
2017532657.tif 000004
【図３Ａ】
2017532657.tif 000005
【図３Ｂ】
2017532657.tif 000006
【図４】
2017532657.tif 000007
【図５】
2017532657.tif 000008
【図６】
2017532657.tif 000009
【図７】
2017532657.tif 000010
【図８】
2017532657.tif 000011
【図９】
2017532657.tif 000012
【図１０】
2017532657.tif 000013
【図１１】
2017532657.tif 000014
【図１２】
2017532657.tif 000015
【図１３】
2017532657.tif 000016
【図１４】
2017532657.tif 000017
【手続補正書】
【提出日】平成29年3月14日(2017.3.14)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
コンピューティングデバイス上で圧縮データ用のキャッシュメモリアクセス要求を実行するための方法であって、
キャッシュバンク分散アドレスを生成するキャッシュメモリアクセス要求の物理アドレスの1つまたは複数のクリアされたバンク選択ビットを回復するステップと、
前記キャッシュバンク分散アドレスにおいて前記キャッシュメモリアクセス要求を実行するステップと
を含む方法。
【請求項２】
圧縮データがキャッシュメモリデバイスの単一のキャッシュバンクのキャッシュライン上で適合するかどうかを判定するステップをさらに含み、
キャッシュバンク分散アドレスを生成するキャッシュメモリアクセス要求の物理アドレスの1つまたは複数のクリアされたバンク選択ビットを回復するステップが、前記圧縮データが前記キャッシュメモリデバイスの前記単一のキャッシュバンク上で適合するとの判定に応答して、前記キャッシュバンク分散アドレスを生成する前記キャッシュメモリアクセス要求の前記物理アドレスの前記1つまたは複数のクリアされたバンク選択ビットを回復するステップを含む、
請求項1に記載の方法。
【請求項３】
前記キャッシュメモリアクセス要求の前記圧縮データが前記キャッシュメモリデバイスの前記単一のキャッシュバンク上で適合するかどうかを判定するステップが、前記圧縮データの圧縮比が2:1圧縮比以上であるかどうかを判定するステップを含む、請求項2に記載の方法。
【請求項４】
前記キャッシュメモリアクセス要求の前記圧縮データが前記キャッシュメモリデバイスの前記単一のキャッシュバンク上で適合するかどうかを判定するステップが、前記圧縮データのサイズが前記キャッシュメモリデバイスのキャッシュラインのサイズ以下であるかどうかを判定するステップを含む、請求項2に記載の方法。
【請求項５】
前記圧縮データが前記キャッシュメモリデバイスの前記単一のキャッシュバンク上で適合するとの判定に応答して、前記キャッシュバンク分散アドレスを生成する前記キャッシュメモリアクセス要求の前記物理アドレスの前記1つまたは複数のクリアされたバンク選択ビットを回復するステップが、
キャッシュバンク分散関数用の入力を選択するステップと、
前記キャッシュバンク分散関数を実行するステップと、
キャッシュバンク分散値を返すステップと、
前記1つまたは複数のクリアされたバンク選択ビットを前記キャッシュバンク分散値に置き換えるステップと
を含む、請求項2に記載の方法。
【請求項６】
前記キャッシュバンク分散関数用の入力を選択するステップが、前記キャッシュバンク分散関数用のオペランドとして、前記キャッシュメモリアクセス要求の前記キャッシュメモリデバイスの前記物理アドレスの保護されたビットの複数の最下位ビットを選択するステップを含み、
前記キャッシュバンク分散関数を実行するステップが、前記オペランドとともに排他的OR演算子を使用するステップを含む、
請求項5に記載の方法。
【請求項７】
前記キャッシュバンク分散関数を実行するステップが、論理演算、算術演算のうちの1つを使用し、ランダム値を選択し、テーブルから前記キャッシュメモリアクセス要求の前記物理アドレスに関連付けられた前記キャッシュバンク分散アドレスを選択するステップを含む、請求項5に記載の方法。
【請求項８】
前記キャッシュバンク分散アドレスにおいて前記キャッシュメモリアクセス要求を実行するステップが、
圧縮データを、前記キャッシュメモリアクセス要求のキャッシュメモリデバイスの前記物理アドレスの前記1つまたは複数のクリアされたバンク選択ビットによって示される第2のキャッシュバンクとは異なる、前記キャッシュバンク分散アドレスの前記1つまたは複数の回復されたクリアされたバンク選択ビットによって示される第1のキャッシュバンクに書き込むステップと、
前記圧縮データを、前記キャッシュメモリアクセス要求の前記キャッシュメモリデバイスの前記物理アドレスの前記1つまたは複数のクリアされたバンク選択ビットによって示される前記第2のキャッシュバンクとは異なる、前記キャッシュバンク分散アドレスの前記1つまたは複数の回復されたクリアされたバンク選択ビットによって示される前記第1のキャッシュバンクから読み取るステップと
を含む、請求項1に記載の方法。
【請求項９】
前記キャッシュバンク分散アドレスにおいて前記キャッシュメモリアクセス要求を実行するステップが、前記キャッシュバンク分散アドレスによって示されるキャッシュメモリデバイスの物理アドレスにおいて前記圧縮データ用の前記キャッシュメモリアクセス要求を実行するステップを含む、請求項1に記載の方法。
【請求項１０】
プロセッサと、
前記プロセッサに通信可能に接続され、キャッシュバンク分散アドレスを生成するキャッシュメモリアクセス要求の物理アドレスの1つまたは複数のクリアされたバンク選択ビットを回復することを含む動作を実行するように構成されたバンク分散関数構成要素と、
前記バンク分散関数構成要素に通信可能に接続され、前記キャッシュバンク分散アドレスにおいて前記キャッシュメモリアクセス要求を実行することを含む動作を実行するように構成されたキャッシュメモリコントローラと、
前記キャッシュメモリコントローラに通信可能に接続されたキャッシュメモリと
を備えるコンピューティングデバイス。
【請求項１１】
前記バンク分散関数構成要素は、圧縮データがキャッシュメモリの単一のキャッシュバンクのキャッシュライン上で適合するかどうかを判定することをさらに含む動作を実行するように構成され、
前記バンク分散関数構成要素は、キャッシュバンク分散アドレスを生成するキャッシュメモリアクセス要求の物理アドレスの1つまたは複数のクリアされたバンク選択ビットを回復することが、前記圧縮データが前記キャッシュメモリの前記単一のキャッシュバンク上で適合するとの判定に応答して、前記キャッシュバンク分散アドレスを生成する前記キャッシュメモリアクセス要求の前記物理アドレスの前記1つまたは複数のクリアされたバンク選択ビットを回復することを含むような動作を実行するように構成される、
請求項10に記載のコンピューティングデバイス。
【請求項１２】
前記バンク分散関数構成要素は、前記キャッシュメモリアクセス要求の前記圧縮データが前記キャッシュメモリの前記単一のキャッシュバンク上で適合するかどうかを判定することが、前記圧縮データの圧縮比が2:1圧縮比以上であるかどうかを判定することを含むような動作を実行するように構成される、請求項11に記載のコンピューティングデバイス。
【請求項１３】
前記バンク分散関数構成要素は、前記キャッシュメモリアクセス要求の前記圧縮データが前記キャッシュメモリの前記単一のキャッシュバンク上で適合するかどうかを判定することが、前記圧縮データのサイズが前記キャッシュメモリのキャッシュラインのサイズ以下であるかどうかを判定することを含むような動作を実行するように構成される、請求項11に記載のコンピューティングデバイス。
【請求項１４】
前記バンク分散関数構成要素は、前記圧縮データが前記キャッシュメモリの前記単一のキャッシュバンク上で適合するとの判定に応答して、前記キャッシュバンク分散アドレスを生成する前記キャッシュメモリアクセス要求の前記物理アドレスの前記1つまたは複数のクリアされたバンク選択ビットを回復することが、
キャッシュバンク分散関数用の入力を選択することと、
前記キャッシュバンク分散関数を実行することと、
キャッシュバンク分散値を返すことと、
前記1つまたは複数のクリアされたバンク選択ビットを前記キャッシュバンク分散値に置き換えることと
を含むような動作を実行するように構成される、請求項11に記載のコンピューティングデバイス。
【請求項１５】
前記バンク分散関数構成要素は、
前記キャッシュバンク分散関数を実行することが、論理演算、算術演算のうちの1つを使用し、ランダム値を選択し、テーブルから前記キャッシュメモリアクセス要求の前記物理アドレスに関連付けられた前記キャッシュバンク分散アドレスを選択することを含み、
前記キャッシュバンク分散関数用の入力を選択することが、前記キャッシュバンク分散関数用のオペランドとして、前記オペランドとともに排他的OR演算子を使用して、前記キャッシュメモリアクセス要求の前記キャッシュメモリの前記物理アドレスの保護されたビットの複数の最下位ビットを選択することを含む
ような動作を実行するように構成される、請求項14に記載のコンピューティングデバイス。
【請求項１６】
前記キャッシュメモリコントローラは、前記キャッシュメモリ内の前記キャッシュバンク分散アドレスにおいて前記キャッシュメモリアクセス要求を実行することが、
圧縮データを、前記キャッシュメモリアクセス要求の前記キャッシュメモリの前記物理アドレスの前記1つまたは複数のクリアされたバンク選択ビットによって示される第2のキャッシュバンクとは異なる、前記キャッシュバンク分散アドレスの前記1つまたは複数の回復されたクリアされたバンク選択ビットによって示される第1のキャッシュバンクに書き込むことと、
前記圧縮データを、前記キャッシュメモリアクセス要求の前記キャッシュメモリの前記物理アドレスの前記1つまたは複数のクリアされたバンク選択ビットによって示される前記第2のキャッシュバンクとは異なる、前記キャッシュバンク分散アドレスの前記1つまたは複数の回復されたクリアされたバンク選択ビットによって示される前記第1のキャッシュバンクから読み取ることと
を含むような動作を実行するように構成される、請求項10に記載のコンピューティングデバイス。
【請求項１７】
プロセッサ、バンク分散関数構成要素、およびキャッシュメモリコントローラに、
キャッシュバンク分散アドレスを生成するキャッシュメモリアクセス要求の物理アドレスの1つまたは複数のクリアされたバンク選択ビットを回復することと、
前記キャッシュバンク分散アドレスにおいて前記キャッシュメモリアクセス要求を実行することと
を含む動作を実行させるように構成されたプロセッサ実行可能命令を記憶した非一時的プロセッサ可読媒体。
【請求項１８】
前記記憶されたプロセッサ実行可能命令は、前記プロセッサ、前記バンク分散関数構成要素、および前記キャッシュメモリコントローラに、圧縮データがキャッシュメモリデバイスの単一のキャッシュバンクのキャッシュライン上で適合するかどうかを判定することをさらに含む動作を実行させるように構成され、
前記記憶されたプロセッサ実行可能命令は、前記プロセッサ、前記バンク分散関数構成要素、および前記キャッシュメモリコントローラに、キャッシュバンク分散アドレスを生成するキャッシュメモリアクセス要求の物理アドレスの1つまたは複数のクリアされたバンク選択ビットを回復することが、前記圧縮データが前記キャッシュメモリデバイスの前記単一のキャッシュバンク上で適合するとの判定に応答して、前記キャッシュバンク分散アドレスを生成する前記キャッシュメモリアクセス要求の前記物理アドレスの前記1つまたは複数のクリアされたバンク選択ビットを回復することを含むような動作を実行させるように構成される、
請求項17に記載の非一時的プロセッサ可読媒体。
【請求項１９】
前記記憶されたプロセッサ実行可能命令は、前記プロセッサ、前記バンク分散関数構成要素、および前記キャッシュメモリコントローラに、前記キャッシュメモリアクセス要求の前記圧縮データが前記キャッシュメモリデバイスの前記単一のキャッシュバンク上で適合するかどうかを判定することが、前記圧縮データの圧縮比が2:1圧縮比以上であるかどうかを判定することを含むような動作を実行させるように構成される、請求項18に記載の非一時的プロセッサ可読媒体。
【請求項２０】
前記記憶されたプロセッサ実行可能命令は、前記プロセッサ、前記バンク分散関数構成要素、および前記キャッシュメモリコントローラに、前記キャッシュメモリアクセス要求の前記圧縮データが前記キャッシュメモリデバイスの前記単一のキャッシュバンク上で適合するかどうかを判定することが、前記圧縮データのサイズが前記キャッシュメモリデバイスのキャッシュラインのサイズ未満であるかどうかを判定することを含むような動作を実行させるように構成される、請求項18に記載の非一時的プロセッサ可読媒体。
【請求項２１】
前記記憶されたプロセッサ実行可能命令は、前記プロセッサ、前記バンク分散関数構成要素、および前記キャッシュメモリコントローラに、前記圧縮データが前記キャッシュメモリデバイスの前記単一のキャッシュバンク上で適合するとの判定に応答して、前記キャッシュバンク分散アドレスを生成する前記キャッシュメモリアクセス要求の前記物理アドレスの前記1つまたは複数のクリアされたバンク選択ビットを回復することが、
キャッシュバンク分散関数用の入力を選択することと、
前記キャッシュバンク分散関数を実行することと、
キャッシュバンク分散値を返すことと、
前記1つまたは複数のクリアされたバンク選択ビットを前記キャッシュバンク分散値に置き換えることと
を含むような動作を実行させるように構成される、請求項18に記載の非一時的プロセッサ可読媒体。
【請求項２２】
前記記憶されたプロセッサ実行可能命令は、前記プロセッサ、前記バンク分散関数構成要素、および前記キャッシュメモリコントローラに、
前記キャッシュバンク分散関数を実行することが、論理演算、算術演算のうちの1つを使用し、ランダム値を選択し、テーブルから前記キャッシュメモリアクセス要求の前記物理アドレスに関連付けられた前記キャッシュバンク分散アドレスを選択することを含み、
前記キャッシュバンク分散関数用の入力を選択することが、前記キャッシュバンク分散関数用のオペランドとして、前記オペランドとともに排他的OR演算子を使用して、前記キャッシュメモリアクセス要求の前記キャッシュメモリデバイスの前記物理アドレスの保護されたビットの複数の最下位ビットを選択することを含む
ような動作を実行させるように構成される、請求項21に記載の非一時的プロセッサ可読媒体。
【請求項２３】
前記記憶されたプロセッサ実行可能命令は、前記プロセッサ、前記バンク分散関数構成要素、および前記キャッシュメモリコントローラに、前記キャッシュバンク分散アドレスにおいて前記キャッシュメモリアクセス要求を実行することが、
圧縮データを、前記キャッシュメモリアクセス要求のキャッシュメモリデバイスの前記物理アドレスの前記1つまたは複数のクリアされたバンク選択ビットによって示される第2のキャッシュバンクとは異なる、前記キャッシュバンク分散アドレスの前記1つまたは複数の回復されたクリアされたバンク選択ビットによって示される第1のキャッシュバンクに書き込むことと、
前記圧縮データを、前記キャッシュメモリアクセス要求の前記キャッシュメモリデバイスの前記物理アドレスの前記1つまたは複数のクリアされたバンク選択ビットによって示される前記第2のキャッシュバンクとは異なる、前記キャッシュバンク分散アドレスの前記1つまたは複数の回復されたクリアされたバンク選択ビットによって示される前記第1のキャッシュバンクから読み取ることと
を含むような動作を実行させるように構成される、請求項17に記載の非一時的プロセッサ可読媒体。
【請求項２４】
キャッシュバンク分散アドレスを生成するキャッシュメモリアクセス要求の物理アドレスの1つまたは複数のクリアされたバンク選択ビットを回復するための手段と、
前記キャッシュバンク分散アドレスにおいて前記キャッシュメモリアクセス要求を実行するための手段と
を備えるコンピューティングデバイス。
【請求項２５】
圧縮データがキャッシュメモリデバイスの単一のキャッシュバンクのキャッシュライン上で適合するかどうかを判定するための手段をさらに備え、
キャッシュバンク分散アドレスを生成するキャッシュメモリアクセス要求の物理アドレスの1つまたは複数のクリアされたバンク選択ビットを回復するための手段が、前記圧縮データが前記キャッシュメモリデバイスの前記単一のキャッシュバンク上で適合するとの判定に応答して、前記キャッシュバンク分散アドレスを生成する前記キャッシュメモリアクセス要求の前記物理アドレスの前記1つまたは複数のクリアされたバンク選択ビットを回復するための手段を備える、
請求項24に記載のコンピューティングデバイス。
【請求項２６】
前記キャッシュメモリアクセス要求の前記圧縮データが前記キャッシュメモリデバイスの前記単一のキャッシュバンク上で適合するかどうかを判定するための手段が、前記圧縮データの圧縮比が2:1圧縮比以上であるかどうかを判定するための手段を備える、請求項25に記載のコンピューティングデバイス。
【請求項２７】
前記キャッシュメモリアクセス要求の前記圧縮データが前記キャッシュメモリデバイスの前記単一のキャッシュバンク上で適合するかどうかを判定するための手段が、前記圧縮データのサイズが前記キャッシュメモリデバイスのキャッシュラインのサイズ以下であるかどうかを判定するための手段を備える、請求項25に記載のコンピューティングデバイス。
【請求項２８】
前記圧縮データが前記キャッシュメモリデバイスの前記単一のキャッシュバンク上で適合するとの判定に応答して、前記キャッシュバンク分散アドレスを生成する前記キャッシュメモリアクセス要求の前記物理アドレスの前記1つまたは複数のクリアされたバンク選択ビットを回復するための手段が、
キャッシュバンク分散関数用の入力を選択するための手段と、
前記キャッシュバンク分散関数を実行するための手段と、
キャッシュバンク分散値を返すための手段と、
前記1つまたは複数のクリアされたバンク選択ビットを前記キャッシュバンク分散値に置き換えるための手段と
を備える、請求項25に記載のコンピューティングデバイス。
【請求項２９】
前記キャッシュバンク分散関数を実行するための手段が、論理演算、算術演算のうちの1つを使用し、ランダム値を選択し、テーブルから前記キャッシュメモリアクセス要求の前記物理アドレスに関連付けられた前記キャッシュバンク分散アドレスを選択するための手段を備え、
前記キャッシュバンク分散関数用の入力を選択するための手段が、前記キャッシュバンク分散関数用のオペランドとして、前記オペランドとともに排他的OR演算子を使用して、前記キャッシュメモリアクセス要求の前記キャッシュメモリデバイスの前記物理アドレスの保護されたビットの複数の最下位ビットを選択するための手段を備える、
請求項28に記載のコンピューティングデバイス。
【請求項３０】
前記キャッシュバンク分散アドレスにおいて前記キャッシュメモリアクセス要求を実行するための手段が、
圧縮データを、前記キャッシュメモリアクセス要求のキャッシュメモリデバイスの前記物理アドレスの前記1つまたは複数のクリアされたバンク選択ビットによって示される第2のキャッシュバンクとは異なる、前記キャッシュバンク分散アドレスの前記1つまたは複数の回復されたクリアされたバンク選択ビットによって示される第1のキャッシュバンクに書き込むための手段と、
前記圧縮データを、前記キャッシュメモリアクセス要求の前記キャッシュメモリデバイスの前記物理アドレスの前記1つまたは複数のクリアされたバンク選択ビットによって示される前記第2のキャッシュバンクとは異なる、前記キャッシュバンク分散アドレスの前記1つまたは複数の回復されたクリアされたバンク選択ビットによって示される前記第1のキャッシュバンクから読み取るための手段と
を備える、請求項24に記載のコンピューティングデバイス。
【国際調査報告】
2017532657.tif 000018
2017532657.tif 000019