(57)【要約】  中央処理ユニット(CPU)ベースのシステム内の圧縮メモリコントローラ(CMC)による連続読取り動作を使用するメモリ帯域幅圧縮を提供することを開示する。この点について、いくつかの態様では、CMCは、システムメモリ内の物理アドレスへのメモリ読取り要求を受信すること、および、物理アドレスに関連付けられたメモリライン内の第1のメモリブロックの誤り訂正符号(ECC)ビットから、物理アドレスのための圧縮インジケータ(CI)を読み取ることを行うように構成される。CIに基づいて、CMCは、第1のメモリブロックが圧縮データを備えるか否かを決定する。そうでない場合、CMCは、第1のメモリブロックを返すことと並行して、メモリラインの1つまたは複数の追加のメモリブロックの連続読取りを実行する。いくつかの態様は、第1のメモリブロックのみにではなく、メモリラインの複数のメモリブロックの各々に圧縮データを書き込むことによって、メモリアクセスレイテンシをさらに改善することができる。
2018503924.tif 000002
【特許請求の範囲】
【請求項１】
システムバスを介してシステムメモリにアクセスするように構成されたメモリインターフェースを備える、圧縮メモリコントローラ(CMC)であって、
前記CMCは、
前記システムメモリ内の複数のメモリブロックを備える第1のメモリラインの物理アドレスを備える、メモリ読取り要求を受信すること、
前記第1のメモリラインの前記複数のメモリブロックのうちの第1のメモリブロックを読み取ること、
前記第1のメモリブロックの圧縮インジケータ(CI)に基づいて、前記第1のメモリブロックが圧縮データを備えるか否かを決定すること、ならびに
前記第1のメモリブロックが前記圧縮データを備えていないとの決定に応答して、
前記第1のメモリラインの前記複数のメモリブロックのうちの1つまたは複数の追加のメモリブロックの連続読取りを実行すること、および
前記連続読取りと並行して、
読取りメモリブロックがデマンドワードを備えるか否かを決定すること、および
前記読取りメモリブロックが前記デマンドワードを備えるとの決定に応答して、前記読取りメモリブロックを返すこと
を行うように構成される、CMC。
【請求項２】
前記第1のメモリブロックが前記圧縮データを備えるとの決定に応答して、
前記第1のメモリブロックの前記圧縮データを1つまたは複数の復元メモリブロックに復元すること、および
前記デマンドワードを備える、前記1つまたは複数の復元メモリブロックのうちの復元メモリブロックを決定すること、および
残りの前記1つまたは複数の復元メモリブロックを返すより前に、前記デマンドワードを備える前記復元メモリブロックを返すこと
を行うようにさらに構成される、請求項1に記載のCMC。
【請求項３】
非圧縮書込みデータと、前記システムメモリ内の複数のメモリブロックを備える第2のメモリラインの物理アドレスとを備える、メモリ書込み要求を受信すること、
前記非圧縮書込みデータを圧縮書込みデータに圧縮すること、
前記圧縮書込みデータのサイズが、前記第2のメモリラインの前記複数のメモリブロックのうちの各メモリブロックのサイズよりも大きいか否かを決定すること、
前記圧縮書込みデータの前記サイズが、前記第2のメモリラインの前記複数のメモリブロックのうちの各メモリブロックの前記サイズよりも大きくないとの決定に応答して、前記圧縮書込みデータを、前記第2のメモリラインの第1のメモリブロックに書き込むこと、
前記圧縮書込みデータの前記サイズが、前記第2のメモリラインの前記複数のメモリブロックのうちの各メモリブロックの前記サイズよりも大きいとの決定に応答して、前記非圧縮書込みデータを、前記第2のメモリラインの前記複数のメモリブロックのうちの複数に書き込むこと、および
前記第1のメモリブロックの圧縮状態を示すために、前記第2のメモリラインの前記複数のメモリブロックのうちの前記第1のメモリブロックの前記CIを設定すること
を行うようにさらに構成される、請求項1に記載のCMC。
【請求項４】
前記圧縮データの読取りの数、読取り動作の総数、前記圧縮データの書込みの数、および書込み動作の総数のうちの少なくとも1つに基づいて、圧縮比を追跡するように構成された、圧縮モニタをさらに備える、請求項1に記載のCMC。
【請求項５】
前記圧縮モニタが、非限定的な例として、中央処理ユニット(CPU)ごと、作業負荷ごと、仮想マシン(VM)ごと、コンテナごと、およびサービス品質(QoS)識別子(QoSID)ごとのうちの1つまたは複数で、前記圧縮比を追跡するように構成される、請求項4に記載のCMC。
【請求項６】
前記圧縮モニタが、前記圧縮データの前記読取りの数、前記読取り動作の前記総数、前記圧縮データの前記書込みの数、および前記書込み動作の前記総数のうちの前記少なくとも1つを追跡するための1つまたは複数のカウンタを備える、請求項4に記載のCMC。
【請求項７】
前記メモリ読取り要求の受信に応答して、前記圧縮比がしきい値を下回るか否かを決定すること、ならびに
前記圧縮比が前記しきい値を下回るとの決定に応答して、
前記第1のメモリラインの前記複数のメモリブロックを読み取ること、
前記第1のメモリラインの前記複数のメモリブロックのうちの前記第1のメモリブロックの前記CIに基づいて、前記第1のメモリブロックが前記圧縮データを備えるか否かを決定すること、
前記第1のメモリブロックが前記圧縮データを備えるとの決定に応答して、
前記第1のメモリブロックの前記圧縮データを1つまたは複数の復元メモリブロックに復元すること、
前記デマンドワードを含む、前記1つまたは複数の復元メモリブロックのうちの復元メモリブロックを識別すること、および
前記復元メモリブロックを返すこと、および
前記第1のメモリブロックが前記圧縮データを備えていないとの決定に応答して、前記複数のメモリブロックを返すこと
を行うようにさらに構成され、
前記CMCが、前記圧縮比が前記しきい値に等しいかまたは前記しきい値を超えるとの決定に応答して、前記第1のメモリラインの前記複数のメモリブロックのうちの前記第1のメモリブロックを読み取るように構成される、請求項4に記載のCMC。
【請求項８】
集積回路(IC)に組み込まれる、請求項1に記載のCMC。
【請求項９】
セットトップボックス、エンターテインメントユニット、ナビゲーションデバイス、通信デバイス、固定ロケーションデータユニット、モバイルロケーションデータユニット、モバイルフォン、セルラーフォン、コンピュータ、ポータブルコンピュータ、デスクトップコンピュータ、携帯情報端末(PDA)、モニタ、コンピュータモニタ、テレビジョン、チューナー、ラジオ、衛星ラジオ、音楽プレーヤ、デジタル音楽プレーヤ、ポータブル音楽プレーヤ、デジタルビデオプレーヤ、ビデオプレーヤ、デジタルビデオディスク(DVD)プレーヤ、およびポータブルデジタルビデオプレーヤからなる群から選択されるデバイスに組み込まれる、請求項1に記載のCMC。
【請求項１０】
システムバスを介してシステムメモリにアクセスするように構成されたメモリインターフェースを備える、圧縮メモリコントローラ(CMC)であって、
前記CMCは、
メモリ読取り要求を受信することであって、前記メモリ読取り要求が、
前記システムメモリ内の複数のメモリブロックを備える第1のメモリラインの物理アドレスと、
デマンドワードを含む、前記第1のメモリラインの前記複数のメモリブロックの中のメモリブロックを示す、デマンドワードインジケータと
を備える、こと、
前記デマンドワードインジケータによって示された前記メモリブロックを読み取ること、
前記メモリブロックの圧縮インジケータ(CI)に基づいて、前記メモリブロックが圧縮データを備えるか否かを決定すること、および
前記メモリブロックが前記圧縮データを備えていないとの決定に応答して、前記メモリブロックを返すことと並行して、前記第1のメモリラインの前記複数のメモリブロックのうちの1つまたは複数の追加のメモリブロックの連続読取りを実行すること
を行うように構成される、CMC。
【請求項１１】
前記メモリブロックが前記圧縮データを備えるとの決定に応答して、
前記メモリブロックの前記圧縮データを1つまたは複数の復元メモリブロックに復元すること、
前記デマンドワードを備える、前記1つまたは複数の復元メモリブロックのうちの復元メモリブロックを識別すること、および
残りの前記1つまたは複数の復元メモリブロックを返すより前に、前記デマンドワードを備える前記復元メモリブロックを返すこと
を行うようにさらに構成される、請求項10に記載のCMC。
【請求項１２】
非圧縮書込みデータと、前記システムメモリ内の複数のメモリブロックを備える第2のメモリラインの物理アドレスとを備える、メモリ書込み要求を受信すること、
前記非圧縮書込みデータを圧縮書込みデータに圧縮すること、
前記圧縮書込みデータのサイズが、前記第2のメモリラインの前記複数のメモリブロックのうちの各メモリブロックのサイズよりも大きいか否かを決定すること、
前記圧縮書込みデータの前記サイズが、前記第2のメモリラインの前記複数のメモリブロックのうちの各メモリブロックの前記サイズよりも大きくないとの決定に応答して、前記圧縮書込みデータを、前記第2のメモリラインの前記複数のメモリブロックのうちの各メモリブロックに書き込むこと、
前記圧縮書込みデータの前記サイズが、前記第2のメモリラインの前記複数のメモリブロックのうちの各メモリブロックの前記サイズよりも大きいとの決定に応答して、前記非圧縮書込みデータを、前記第2のメモリラインの前記複数のメモリブロックのうちの複数に書き込むこと、および
前記第2のメモリラインの前記複数のメモリブロックのうちの各メモリブロックの圧縮状態を示すために、前記第2のメモリラインの前記複数のメモリブロックのうちの各メモリブロックの対応するCIを設定すること
を行うようにさらに構成される、請求項10に記載のCMC。
【請求項１３】
前記圧縮データの読取りの数、読取り動作の総数、前記圧縮データの書込みの数、および書込み動作の総数のうちの少なくとも1つに基づいて、圧縮比を追跡するように構成された、圧縮モニタをさらに備える、請求項10に記載のCMC。
【請求項１４】
前記圧縮モニタが、非限定的な例として、中央処理ユニット(CPU)ごと、作業負荷ごと、仮想マシン(VM)ごと、コンテナごと、およびサービス品質(QoS)識別子(QoSID)ごとのうちの1つまたは複数で、前記圧縮比を追跡するように構成される、請求項13に記載のCMC。
【請求項１５】
前記圧縮モニタが、前記圧縮データの前記読取りの数、前記読取り動作の前記総数、前記圧縮データの前記書込みの数、および前記書込み動作の前記総数のうちの前記少なくとも1つを追跡するための1つまたは複数のカウンタを備える、請求項13に記載のCMC。
【請求項１６】
前記メモリ読取り要求の受信に応答して、前記圧縮比がしきい値を下回るか否かを決定すること、ならびに
前記圧縮比が前記しきい値を下回るとの決定に応答して、
前記第1のメモリラインの前記複数のメモリブロックを読み取ること、
前記第1のメモリラインの前記複数のメモリブロックのうちの第1のメモリブロックのCIに基づいて、前記第1のメモリブロックが前記圧縮データを備えるか否かを決定すること、
前記複数のメモリブロックのうちの前記第1のメモリブロックが前記圧縮データを備えるとの決定に応答して、
前記第1のメモリブロックの前記圧縮データを1つまたは複数の復元メモリブロックに復元すること、および
前記デマンドワードを含む、前記1つまたは複数の復元メモリブロックのうちの復元メモリブロックを識別すること、および
前記復元メモリブロックを返すこと、および
前記第1のメモリブロックが前記圧縮データを備えていないとの決定に応答して、前記複数のメモリブロックを返すこと
を行うようにさらに構成され、
前記CMCが、前記圧縮比が前記しきい値に等しいかまたは前記しきい値を超えるとの決定に応答して、前記デマンドワードインジケータによって示された前記メモリブロックを読み取るように構成される、請求項13に記載のCMC。
【請求項１７】
メモリ帯域幅圧縮を提供するための方法であって、
システムメモリ内の複数のメモリブロックを備える第1のメモリラインの物理アドレスを備える、メモリ読取り要求を受信するステップと、
前記第1のメモリラインの前記複数のメモリブロックのうちの第1のメモリブロックを読み取るステップと、
前記第1のメモリブロックの圧縮インジケータ(CI)に基づいて、前記第1のメモリブロックが圧縮データを備えるか否かを決定するステップと、
前記第1のメモリブロックが前記圧縮データを備えていないとの決定に応答して、
前記第1のメモリラインの前記複数のメモリブロックのうちの1つまたは複数の追加のメモリブロックの連続読取りを実行するステップと、
前記連続読取りと並行して、
読取りメモリブロックがデマンドワードを備えるか否かを決定するステップと、
前記読取りメモリブロックが前記デマンドワードを備えるとの決定に応答して、前記読取りメモリブロックを返すステップと
含む方法。
【請求項１８】
前記第1のメモリブロックが前記圧縮データを備えるとの決定に応答して、
前記第1のメモリブロックの前記圧縮データを1つまたは複数の復元メモリブロックに復元するステップと、
前記デマンドワードを備える、前記1つまたは複数の復元メモリブロックの中の復元メモリブロックを識別するステップと、
残りの前記1つまたは複数の復元メモリブロックを返すより前に、前記デマンドワードを備える前記復元メモリブロックを返すステップと
をさらに含む、請求項17に記載の方法。
【請求項１９】
非圧縮書込みデータと、前記システムメモリ内の複数のメモリブロックを備える第2のメモリラインの物理アドレスとを備える、メモリ書込み要求を受信するステップと、
前記非圧縮書込みデータを圧縮書込みデータに圧縮するステップと、
前記圧縮書込みデータのサイズが、前記第2のメモリラインの前記複数のメモリブロックのうちの各メモリブロックのサイズよりも大きいか否かを決定するステップと、
前記圧縮書込みデータの前記サイズが、前記第2のメモリラインの前記複数のメモリブロックのうちの各メモリブロックの前記サイズよりも大きくないとの決定に応答して、前記圧縮書込みデータを、前記第2のメモリラインの第1のメモリブロックに書き込むステップと、
前記圧縮書込みデータの前記サイズが、前記第2のメモリラインの前記複数のメモリブロックのうちの各メモリブロックの前記サイズよりも大きいとの決定に応答して、前記非圧縮書込みデータを、前記第2のメモリラインの前記複数のメモリブロックのうちの複数に書き込むステップと、
前記第1のメモリブロックの圧縮状態を示すために、前記第2のメモリラインの前記複数のメモリブロックのうちの前記第1のメモリブロックのCIを設定するステップと
をさらに含む、請求項17に記載の方法。
【請求項２０】
圧縮モニタを使用して、前記圧縮データの読取りの数、読取り動作の総数、前記圧縮データの書込みの数、および書込み動作の総数のうちの少なくとも1つに基づいて、圧縮比を追跡するステップをさらに含む、請求項17に記載の方法。
【請求項２１】
前記圧縮モニタが、前記圧縮データの前記読取りの数、前記読取り動作の前記総数、前記圧縮データの前記書込みの数、および前記書込み動作の前記総数のうちの前記少なくとも1つを追跡するための1つまたは複数のカウンタを備える、請求項20に記載の方法。
【請求項２２】
前記方法が、
前記メモリ読取り要求の受信に応答して、前記圧縮比がしきい値を下回るか否かを決定するステップと、
前記圧縮比が前記しきい値を下回るとの決定に応答して、
前記第1のメモリラインの前記複数のメモリブロックを読み取るステップと、
前記第1のメモリラインの前記複数のメモリブロックのうちの前記第1のメモリブロックの前記CIに基づいて、前記第1のメモリブロックが前記圧縮データを備えるか否かを決定するステップと、
前記第1のメモリブロックが前記圧縮データを備えるとの決定に応答して、
前記第1のメモリブロックの前記圧縮データを1つまたは複数の復元メモリブロックに復元するステップと、
前記デマンドワードを含む、前記1つまたは複数の復元メモリブロックのうちの復元メモリブロックを識別するステップと、
前記復元メモリブロックを返すステップと、
前記第1のメモリブロックが前記圧縮データを備えていないとの決定に応答して、前記複数のメモリブロックを返すステップと
をさらに含み、
前記第1のメモリラインの前記複数のメモリブロックのうちの前記第1のメモリブロックを読み取るステップが、前記圧縮比が前記しきい値に等しいかまたは前記しきい値を超えるとの決定に応答するものである、請求項20に記載の方法。
【請求項２３】
メモリ帯域幅圧縮を提供するための方法であって、
メモリ読取り要求を受信するステップであって、前記メモリ読取り要求が、
システムメモリ内の複数のメモリブロックを備える第1のメモリラインの物理アドレスと、
デマンドワードを含む、前記第1のメモリラインの前記複数のメモリブロックの中のメモリブロックを示す、デマンドワードインジケータと
を備える、ステップと、
前記デマンドワードインジケータによって示された前記メモリブロックを読み取るステップと、
前記メモリブロックの圧縮インジケータ(CI)に基づいて、前記メモリブロックが圧縮データを備えるか否かを決定するステップと、
前記メモリブロックが前記圧縮データを備えていないとの決定に応答して、前記メモリブロックを返すことと並行して、前記第1のメモリラインの前記複数のメモリブロックのうちの1つまたは複数の追加のメモリブロックの連続読取りを実行するステップと
を含む方法。
【請求項２４】
前記メモリブロックが前記圧縮データを備えるとの決定に応答して、
前記メモリブロックの前記圧縮データを1つまたは複数の復元メモリブロックに復元するステップと、
前記デマンドワードを含む、前記1つまたは複数の復元メモリブロックのうちの復元メモリブロックを識別するステップと、
前記復元メモリブロックを返すステップと
をさらに含む、請求項23に記載の方法。
【請求項２５】
非圧縮書込みデータと、前記システムメモリ内の複数のメモリブロックを備える第2のメモリラインの物理アドレスとを備える、メモリ書込み要求を受信するステップと、
前記非圧縮書込みデータを圧縮書込みデータに圧縮するステップと、
前記圧縮書込みデータのサイズが、前記第2のメモリラインの前記複数のメモリブロックのうちの各メモリブロックのサイズよりも大きいか否かを決定するステップと、
前記圧縮書込みデータの前記サイズが、前記第2のメモリラインの前記複数のメモリブロックのうちの各メモリブロックの前記サイズよりも大きくないとの決定に応答して、前記圧縮書込みデータを、前記第2のメモリラインの前記複数のメモリブロックのうちの各メモリブロックに書き込むステップと、
前記圧縮書込みデータの前記サイズが、前記第2のメモリラインの前記複数のメモリブロックのうちの各メモリブロックの前記サイズよりも大きいとの決定に応答して、前記非圧縮書込みデータを、前記第2のメモリラインの前記複数のメモリブロックのうちの複数に書き込むステップと、
前記第2のメモリラインの前記複数のメモリブロックのうちの各メモリブロックの圧縮状態を示すために、前記第2のメモリラインの前記複数のメモリブロックのうちの各メモリブロックのCIを設定するステップと
をさらに含む、請求項23に記載の方法。
【請求項２６】
圧縮モニタを使用して、前記圧縮データの読取りの数、読取り動作の総数、前記圧縮データの書込みの数、および書込み動作の総数のうちの少なくとも1つに基づいて、圧縮比を追跡するステップをさらに含む、請求項23に記載の方法。
【請求項２７】
前記圧縮モニタを使用して、前記圧縮比を追跡するステップが、非限定的な例として、中央処理ユニット(CPU)ごと、作業負荷ごと、仮想マシン(VM)ごと、コンテナごと、およびサービス品質(QoS)識別子(QoSID)ごとのうちの1つまたは複数で追跡するステップを含む、請求項26に記載の方法。
【請求項２８】
前記圧縮モニタが、前記圧縮データの前記読取りの数、前記読取り動作の前記総数、前記圧縮データの前記書込みの数、および前記書込み動作の前記総数のうちの前記少なくとも1つを追跡するための1つまたは複数のカウンタを備える、請求項26に記載の方法。
【請求項２９】
前記方法が、
前記メモリ読取り要求の受信に応答して、前記圧縮比がしきい値を下回るか否かを決定するステップと、
前記圧縮比が前記しきい値を下回るとの決定に応答して、
前記第1のメモリラインの前記複数のメモリブロックを読み取るステップと、
前記第1のメモリラインの前記複数のメモリブロックのうちの第1のメモリブロックのCIに基づいて、前記第1のメモリブロックが前記圧縮データを備えるか否かを決定するステップと、
前記複数のメモリブロックのうちの前記第1のメモリブロックが前記圧縮データを備えるとの決定に応答して、
前記第1のメモリブロックの前記圧縮データを1つまたは複数の復元メモリブロックに復元するステップと、
前記デマンドワードを含む、前記1つまたは複数の復元メモリブロックのうちの復元メモリブロックを識別するステップと、
前記復元メモリブロックを返すステップと、
前記第1のメモリブロックが前記圧縮データを備えていないとの決定に応答して、前記複数のメモリブロックを返すステップと
をさらに含み、
前記デマンドワードインジケータによって示された前記メモリブロックを読み取るステップが、前記圧縮比が前記しきい値に等しいかまたは前記しきい値を超えるとの決定に応答するものである、請求項26に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
優先権出願
本出願は、その全体が参照により本明細書に組み込まれている、2015年2月3日に出願した「MEMORY CONTROLLERS EMPLOYING MEMORY BANDWIDTH COMPRESSION EMPLOYING BACK-TO-BACK READ OPERATIONS FOR IMPROVED LATENCY, AND RELATED PROCESSOR-BASED SYSTEMS AND METHODS」と題する米国仮特許出願第62/111,347号の優先権を主張するものである。
【０００２】
本出願はまた、その全体が参照により本明細書に組み込まれている、2015年9月3日に出願した、「PROVIDING MEMORY BANDWIDTH COMPRESSION USING BACK-TO-BACK READ OPERATIONS BY COMPRESSED MEMORY CONTROLLERS (CMCs) IN A CENTRAL PROCESSING UNIT (CPU)-BASED SYSTEM」と題する、米国特許出願第14/844,516号の優先権を主張するものである。
【０００３】
本開示の技術は、一般に、コンピュータメモリシステムに関し、詳細には、メモリに対するメモリアクセスインターフェースを有する中央処理ユニット(CPU)を提供するためのコンピュータメモリシステム内のメモリコントローラに関する。
【背景技術】
【０００４】
マイクロプロセッサは、多種多様なアプリケーションにおいて計算タスクを実行する。典型的なマイクロプロセッサアプリケーションは、ソフトウェア命令を実行する1つまたは複数の中央処理ユニット(CPU)を含む。ソフトウェア命令は、メモリ内のロケーションからデータをフェッチするようにCPUに命令し、フェッチしたデータを使用して1つまたは複数のCPU動作を実行し、結果を生成することができる。結果は、次いで、メモリ内に記憶され得る。非限定的な例として、このメモリは、CPUローカルなキャッシュ、CPUブロック内のCPU間で共有されるローカルキャッシュ、複数のCPUブロック間で共有されるキャッシュ、またはマイクロプロセッサのメインメモリであり得る。
【０００５】
この点について、図1は、CPUベースのシステム12を含む、例示的なシステムオンチップ(SoC)10の概略図である。CPUベースのシステム12は、この例では、複数のCPUブロック14(1)〜14(N)を含み、ただし、「N」は、所望のCPUブロック14(1)〜14(N)の任意の数に等しい。図1の例では、CPUブロック14(1)〜14(N)の各々は、2つのCPU16(1)、CPU16(2)を含む。CPUブロック14(1)〜14(N)は、それぞれ、共有レベル2(L2)キャッシュ18(1)〜18(N)をさらに含む。共有レベル3(L3)キャッシュ20もまた、CPUブロック14(1)〜14(N)の各々のいずれかによって使用される、またはCPUブロック14(1)〜14(N)の各々の間で共有される、キャッシュされたデータを記憶するために設けられる。内部システムバス22は、CPUブロック14(1)〜14(N)の各々が共有L3キャッシュ20ならびに他の共有リソースにアクセスすることを可能にするために設けられる。内部システムバス22を介してCPUブロック14(1)〜14(N)によってアクセスされる他の共有リソースは、メイン外部メモリ(たとえば、非限定的な例として、ダブルレートダイナミックランダムアクセスメモリ(DRAM)(DDR))にアクセスするためのメモリコントローラ24、周辺機器26、他のストレージ28、エクスプレス周辺構成要素相互接続(PCI)(PCI-e)インターフェース30、ダイレクトメモリアクセス(DMA)コントローラ32、および/または統合メモリコントローラ(IMC)34を含み得る。
【０００６】
図1のCPUベースのシステム12内で実行するCPUベースのアプリケーションの複雑さおよび性能が増加するにつれて、共有L2キャッシュ18(1)〜18(N)および共有L3キャッシュ20、ならびにメモリコントローラ24を介してアクセス可能な外部メモリのメモリ容量要件も、増加し得る。データ圧縮は、物理メモリ容量を増加させることなく、CPUベースのシステム12の有効メモリ容量を増加させるために採用され得る。しかしながら、データ圧縮の使用は、データが圧縮されているか圧縮されていないかに応じて、データを取り出すために複数のメモリアクセス要求が必要とされ得るとき、メモリアクセスレイテンシを増加させ、追加のメモリ帯域幅を消費し得る。したがって、メモリアクセスレイテンシおよびメモリ帯域幅への影響を軽減しながら、データ圧縮を使用するCPUベースのシステム12のメモリ容量を増加させることが望ましい。
【発明の概要】
【課題を解決するための手段】
【０００７】
本明細書で開示する態様は、中央処理ユニット(CPU)ベースのシステム内の圧縮メモリコントローラ(CMC)による連続読取り動作を使用するメモリ帯域幅圧縮を提供することを含む。この点について、いくつかの態様では、CMCは、メモリ読取り要求および/またはメモリ書込み要求のためのメモリ帯域幅圧縮を提供するように構成される。いくつかの態様によれば、システムメモリ内の物理アドレスへのメモリ読取り要求を受信すると、CMCは、システムメモリ内の物理アドレスに関連付けられたメモリライン内の第1のメモリブロックの誤り訂正符号(ECC)ビットから、物理アドレスのための圧縮インジケータ(CI)を読み取ることができる。CIに基づいて、CMCは、第1のメモリブロックが圧縮データを備えるか否かを決定する。第1のメモリブロックが圧縮データを備えていない場合、CMCは、(第1のメモリブロックがデマンドワードを備える場合)第1のメモリブロックを返すことと並行して、メモリラインの1つまたは複数の追加のメモリブロックの連続読取りを実行することによって、メモリアクセスレイテンシを改善することができる。いくつかの態様では、CMCによって読み取られるメモリブロックは、メモリ読取り要求のデマンドワードインジケータによって示されるようなデマンドワードを含むメモリブロックであり得る。いくつかの態様は、第1のメモリブロックのみにではなく、メモリラインの複数のメモリブロックの各々に圧縮データを書き込むことによって、さらなるメモリアクセスレイテンシの改善を提供することができる。そのような態様では、CMCは、デマンドワードインジケータによって示されたメモリブロックを読み取り、読取りメモリブロックが(圧縮データを含むか、非圧縮データを含むかにかかわらず)デマンドワードを提供することになると確信することができる。このようにして、CMCは、圧縮データおよび非圧縮データをより効率的に読み書きし、減少したメモリアクセスレイテンシおよび改善されたシステム性能をもたらすことができる。
【０００８】
別の態様では、CMCが提供され、CMCは、システムバスを介してシステムメモリにアクセスするように構成されたメモリインターフェースを備える。CMCは、システムメモリ内の複数のメモリブロックを備える第1のメモリラインの物理アドレスを備える、メモリ読取り要求を受信するように構成される。CMCは、第1のメモリラインの複数のメモリブロックのうちの第1のメモリブロックを読み取るようにさらに構成される。CMCはまた、第1のメモリブロックのCIに基づいて、第1のメモリブロックが圧縮データを備えるか否かを決定するようにも構成される。CMCは、追加として、第1のメモリブロックが圧縮データを備えていないとの決定に応答して、第1のメモリラインの複数のメモリブロックのうちの1つまたは複数の追加のメモリブロックの連続読取りを実行するように構成される。CMCは、連続読取りと並行して、読取りメモリブロックがデマンドワードを備えるか否かを決定すること、および、読取りメモリブロックがデマンドワードを備えるとの決定に応答して、読取りメモリブロックを返すことを行うようにさらに構成される。
【０００９】
別の態様では、CMCが提供され、CMCは、システムバスを介してシステムメモリにアクセスするように構成されたメモリインターフェースを備える。CMCは、システムメモリ内の複数のメモリブロックを備える第1のメモリラインの物理アドレスと、デマンドワードを含む、第1のメモリラインの複数のメモリブロックの中のメモリブロックを示す、デマンドワードインジケータとを備える、メモリ読取り要求を受信するように構成される。CMCは、デマンドワードインジケータによって示されたメモリブロックを読み取るようにさらに構成される。CMCはまた、メモリブロックのCIに基づいて、メモリブロックが圧縮データを備えるか否かを決定するようにも構成される。CMCは、追加として、メモリブロックが圧縮データを備えていないとの決定に応答して、メモリブロックを返すことと並行して、第1のメモリラインの複数のメモリブロックのうちの1つまたは複数の追加のメモリブロックの連続読取りを実行するように構成される。
【００１０】
別の態様では、メモリ帯域幅圧縮を提供するための方法が提供される。この方法は、システムメモリ内の複数のメモリブロックを備える第1のメモリラインの物理アドレスを備える、メモリ読取り要求を受信するステップを含む。この方法は、第1のメモリラインの複数のメモリブロックのうちの第1のメモリブロックを読み取るステップをさらに含む。この方法はまた、第1のメモリブロックのCIに基づいて、第1のメモリブロックが圧縮データを備えるか否かを決定するステップを含む。この方法は、追加として、第1のメモリブロックが圧縮データを備えていないとの決定に応答して、第1のメモリラインの複数のメモリブロックのうちの1つまたは複数の追加のメモリブロックの連続読取りを実行するステップを含む。この方法は、連続読取りと並行して、読取りメモリブロックがデマンドワードを備えるか否かを決定するステップと、読取りメモリブロックがデマンドワードを備えるとの決定に応答して、読取りメモリブロックを返すステップとをさらに含む。
【００１１】
別の態様では、メモリ帯域幅圧縮を提供するための方法が提供される。この方法は、システムメモリ内の複数のメモリブロックを備える第1のメモリラインの物理アドレスと、デマンドワードを含む、第1のメモリラインの複数のメモリブロックの中のメモリブロックを示す、デマンドワードインジケータとを備える、メモリ読取り要求を受信するステップを含む。この方法は、デマンドワードインジケータによって示されたメモリブロックを読み取るステップをさらに含む。この方法はまた、メモリブロックのCIに基づいて、メモリブロックが圧縮データを備えるか否かを決定するステップを含む。この方法は、追加として、メモリブロックが圧縮データを備えていないとの決定に応答して、メモリブロックを返すことと並行して、第1のメモリラインの複数のメモリブロックのうちの1つまたは複数の追加のメモリブロックの連続読取りを実行するステップを含む。
【００１２】
他の態様では、小さいデータブロック圧縮に好適であり得る圧縮の方法およびフォーマットが開示される。これらの圧縮の方法およびフォーマットは、本明細書で開示するメモリ帯域幅圧縮態様のために採用され得る。
【００１３】
これらのCMCおよび圧縮機構の一部または全部の態様では、物理メモリサイズの増加を軽減し、システム性能への影響を最小限に抑えながら、メモリアクセスレイテンシを減少させ、CPUベースのシステムのメモリ帯域幅を効果的に増加させることが可能であり得る。
【図面の簡単な説明】
【００１４】
【図１】中央処理ユニット(CPU)ベースのシステムを含む、例示的なシステムオンチップ(SoC)の概略図である。
【図２】複数のCPUと、メモリ帯域幅圧縮を提供するように構成された圧縮メモリコントローラ(CMC)とを有する、例示的なCPUベースのシステムを含む、SoCの概略図である。
【図３】CMCが、メモリ帯域幅圧縮を提供するために採用され得るオプションの内部メモリにさらに通信可能に結合される、図2のCMCのより詳細な概略図である。
【図４】図3のCMCによって実装され得る例示的なメモリ帯域幅圧縮機構の概略図である。
【図５】CMCにおけるアドレス変換による性能損失を補償するためにオプションのレベル4(L4)キャッシュを含む、図1のSoCの一例を示す図である。
【図６Ａ】連続読取り、早期リターン、および/または複数圧縮データ書込みを使用して、メモリ帯域幅圧縮を提供するために、図3のCMCによってアクセスされ得るシステムメモリの、メモリ読取り動作中の例示的な通信フローと例示的な要素とを示す図である。
【図６Ｂ】連続読取り、早期リターン、および/または複数圧縮データ書込みを使用して、メモリ帯域幅圧縮を提供するために、図3のCMCによってアクセスされ得るシステムメモリの、メモリ書込み動作中の例示的な通信フローと例示的な要素とを示す図である。
【図７Ａ】連続読取りおよび早期リターンを使用して、メモリ帯域幅圧縮を提供する際に、読取り動作を実行するための、図3のCMCの例示的な動作を示すフローチャートである。
【図７Ｂ】連続読取りおよび早期リターンを使用して、メモリ帯域幅圧縮を提供する際に、読取り動作を実行するための、図3のCMCの例示的な動作を示すフローチャートである。
【図７Ｃ】連続読取りおよび早期リターンを使用して、メモリ帯域幅圧縮を提供する際に、読取り動作を実行するための、図3のCMCの例示的な動作を示すフローチャートである。
【図８】連続読取りおよび早期リターンを使用して、メモリ帯域幅圧縮を提供する際に、書込み動作を実行するための、図3のCMCの例示的な動作を示すフローチャートである。
【図９Ａ】連続読取りおよび複数圧縮データ書込みを使用して、メモリ帯域幅圧縮を提供する際に、読取り動作を実行するための、図3のCMCの例示的な動作を示すフローチャートである。
【図９Ｂ】連続読取りおよび複数圧縮データ書込みを使用して、メモリ帯域幅圧縮を提供する際に、読取り動作を実行するための、図3のCMCの例示的な動作を示すフローチャートである。
【図９Ｃ】連続読取りおよび複数圧縮データ書込みを使用して、メモリ帯域幅圧縮を提供する際に、読取り動作を実行するための、図3のCMCの例示的な動作を示すフローチャートである。
【図１０】連続読取りおよび複数圧縮データ書込みを使用して、メモリ帯域幅圧縮を提供する際に、書込み動作を実行するための、図3のCMCの例示的な動作を示すフローチャートである。
【図１１】そのいずれかがメモリブロックを圧縮および復元するために図3のCMCによって使用され得る、例示的なデータブロック圧縮フォーマットおよび機構を示す図である。
【図１２】そのいずれかがメモリブロックを圧縮および復元するために図3のCMCによって使用され得る、例示的なデータブロック圧縮フォーマットおよび機構を示す図である。
【図１３】そのいずれかがメモリブロックを圧縮および復元するために図3のCMCによって使用され得る、例示的なデータブロック圧縮フォーマットおよび機構を示す図である。
【図１４】そのいずれかがメモリブロックを圧縮および復元するために図3のCMCによって使用され得る、例示的なデータブロック圧縮フォーマットおよび機構を示す図である。
【図１５】そのいずれかがメモリブロックを圧縮および復元するために図3のCMCによって使用され得る、例示的なデータブロック圧縮フォーマットおよび機構を示す図である。
【図１６】そのいずれかがメモリブロックを圧縮および復元するために図3のCMCによって使用され得る、例示的なデータブロック圧縮フォーマットおよび機構を示す図である。
【図１７】そのいずれかがメモリブロックを圧縮および復元するために図3のCMCによって使用され得る、例示的なデータブロック圧縮フォーマットおよび機構を示す図である。
【図１８】図2のCMCを採用する図1のSoCを含み得る、例示的なコンピューティングデバイスのブロック図である。
【発明を実施するための形態】
【００１５】
次に図面を参照しながら、本開示のいくつかの例示的態様について説明する。「例示的」という語は、本明細書において「一例、事例、または例示としての役割を果たすこと」を意味するために使用される。「例示的」として本明細書で説明するいずれの態様も、必ずしも他の態様よりも好ましい、または有利であるものとして解釈されるべきであるとは限らない。
【００１６】
本明細書で開示する態様は、中央処理ユニット(CPU)ベースのシステム内の圧縮メモリコントローラ(CMC)による連続読取り動作を使用するメモリ帯域幅圧縮を提供することを含む。この点について、いくつかの態様では、CMCは、メモリ読取り要求および/またはメモリ書込み要求のためのメモリ帯域幅圧縮を提供するように構成される。いくつかの態様によれば、システムメモリ内の物理アドレスへのメモリ読取り要求を受信すると、CMCは、システムメモリ内の物理アドレスに関連付けられたメモリライン内の第1のメモリブロックの誤り訂正符号(ECC)ビットから、物理アドレスのための圧縮インジケータ(CI)を読み取ることができる。CIに基づいて、CMCは、第1のメモリブロックが圧縮データを備えるか否かを決定する。第1のメモリブロックが圧縮データを備えていない場合、CMCは、(第1のメモリブロックがデマンドワードを備える場合)第1のメモリブロックを返すことと並行して、メモリラインの1つまたは複数の追加のメモリブロックの連続読取りを実行することによって、メモリアクセスレイテンシを改善することができる。いくつかの態様では、CMCによって読み取られるメモリブロックは、メモリ読取り要求のデマンドワードインジケータによって示されるようなデマンドワードを含むメモリブロックであり得る。いくつかの態様は、第1のメモリブロックのみにではなく、メモリラインの複数のメモリブロックの各々に圧縮データを書き込むことによって、さらなるメモリアクセスレイテンシの改善を提供することができる。そのような態様では、CMCは、デマンドワードインジケータによって示されたメモリブロックを読み取り、読取りメモリブロックが(圧縮データを含むか、非圧縮データを含むかにかかわらず)デマンドワードを提供することになると確信することができる。このようにして、CMCは、圧縮データおよび非圧縮データをより効率的に読み書きし、減少したメモリアクセスレイテンシおよび改善されたシステム性能をもたらすことができる。
【００１７】
この点について、図2は、図1のCPUベースのシステム12と同様の複数のCPUブロック14(1)〜14(N)を有する例示的なCPUベースのシステム12'を含む、SoC10'の概略図である。図2のCPUベースのシステム12'は、図1のCPUベースのシステム12と共通のいくつかの構成要素を含み、それらは、図1と図2との間で共通の要素番号によって示される。簡潔のために、これらの要素については再び説明しない。しかしながら、図2のCPUベースのシステム12'では、CMC36が設けられる。CMC36は、システムメモリ38へのアクセスを制御する。システムメモリ38は、非限定的な例として、1つまたは複数のダブルデータレート(DDR)ダイナミックランダムアクセスメモリ(DRAM)40(1)〜40(R)(以下、「DRAM40(1)〜40(R)」と呼ぶ)を備え得る。この例におけるCMC36は、本明細書および以下で開示する態様によるメモリ帯域幅圧縮を採用する。図1のCPUベースのシステム12のメモリコントローラ24と同様に、図2のCPUベースのシステム12'内のCMC36は、内部システムバス22を介してCPUブロック14(1)〜14(N)によって共有される。
【００１８】
図2中のCMC36の例示的な内部構成要素のより詳細な概略図を示すために、図3が提供される。この例では、CMC36は、図2中のCPUブロック14(1)〜14(N)を含む半導体ダイ46(1)、46(2)とは別個の半導体ダイ44上に設けられる。代替的には、いくつかの態様では、CMC36は、CPUブロック14(1)〜14(N)と共通の半導体ダイ(図示せず)内に含まれ得る。ダイ構成に関係なく、CMC36は、CPUブロック14(1)〜14(N)が内部システムバス22を介してCMC36へメモリアクセス要求を行い得、CMC36を介してメモリからデータを受信し得るように設けられる。
【００１９】
引き続き図3を参照すると、CMC36は、DRAM40(1)〜40(R)を備えるものとして図2および図3に示されたシステムメモリ38へのメモリアクセスのための動作を制御する。CMC36は、メモリアクセス要求(図示せず)にサービスするために使用される複数のメモリインターフェース(MEM I/F)48(1)〜48(P)(たとえば、DDR DRAMインターフェース)を含む。この点について、この例におけるCMC36は、圧縮コントローラ50を含む。圧縮コントローラ50は、図2のCPUブロック14(1)〜14(N)からのメモリアクセス要求に応答して、システムメモリ38に記憶されたデータを圧縮すること、およびシステムメモリ38から取り出されたデータを復元することを制御する。このようにして、CPUブロック14(1)〜14(N)は、CMC36によってアクセスされるメモリの実際の容量よりも大きい仮想メモリアドレス空間を提供され得る。圧縮コントローラ50はまた、内部システムバス22を介してCPUブロック14(1)〜14(N)に提供される情報の帯域幅圧縮を実行するように構成され得る。
【００２０】
以下でより詳細に論じるように、圧縮コントローラ50は、メモリ帯域幅圧縮を提供するために、任意の数の圧縮技術およびアルゴリズムを実行し得る。ローカルメモリ52は、そのような圧縮技術およびアルゴリズムを実行するために圧縮コントローラ50によって必要とされるデータ構造および他の情報のために設けられる。この点について、ローカルメモリ52は、スタティックランダムアクセスメモリ(SRAM)54の形態で設けられる。ローカルメモリ52は、圧縮技術およびアルゴリズムを実行するために圧縮コントローラ50のために必要とされ得るデータ構造および他のデータ記憶のために使用されるのに十分なサイズである。ローカルメモリ52はまた、CMC36内の内部使用のための追加のキャッシュメモリを提供するために、レベル4(L4)キャッシュなどのキャッシュを含むように区分され得る。したがって、L4コントローラ55もまた、L4キャッシュへのアクセスを提供するために、CMC36内に設けられ得る。拡張圧縮技術およびアルゴリズムは、以下でより詳細に論じるように、より大きい内部メモリを必要とし得る。たとえば、ローカルメモリ52は、128キロバイト(kB)のメモリを提供し得る。
【００２１】
さらに、図3に示し、以下でより詳細に説明するように、オプションの追加の内部メモリ56もまた、CMC36のために設けられ得る。追加の内部メモリ56は、一例として、DRAMとして設けられ得る。以下でより詳細に論じるように、追加の内部メモリ56は、CPUベースのシステム12'のメモリ帯域幅圧縮を増加させるために、追加の、またはメモリ圧縮および復元機構を提供するCMC36のためのローカルメモリ52内よりも大量のデータ構造および他のデータの記憶を容易にし得る。内部メモリコントローラ58は、圧縮で使用するための追加の内部メモリ56へのメモリアクセスを制御するために、CMC36内に設けられる。内部メモリコントローラ58は、CPUブロック14(1)〜14(N)にとってアクセス可能または可視ではない。
【００２２】
上述したように、図3のCMC36は、いくつかの態様では、ゼロライン圧縮を含む、メモリ帯域幅圧縮を実行することができる。ローカルメモリ52は、そのような圧縮のために使用される、より大きいデータ構造を記憶するために使用され得る。以下でより詳細に論じるように、メモリ帯域幅圧縮は、メモリアクセスレイテンシを低減することができ、メモリアクセスレイテンシへの影響を最小限に抑えながら、より多くのCPU16(1)、16(2)またはそれらのそれぞれのスレッドが同じ数のメモリチャネルにアクセスすることを可能にすることができる。いくつかの態様では、メモリチャネルの数は、そのような圧縮がCMC36によって実行されなかった場合のより多数のメモリチャネルと比較して、同様のレイテンシ結果を達成しながら、低減され得、それによって、低減されたシステムレベルの電力消費がもたらされ得る。
【００２３】
ローカルメモリ52および追加の内部メモリ56を含む、図3のCMC36内のメモリ帯域幅圧縮のために提供されるリソースの各々は、リソースおよびエリアの間の所望のバランス、電力消費、メモリ容量圧縮を通して増加したメモリ容量、ならびにメモリ帯域幅圧縮を通して増加した性能を達成するために、独立して、または互いとともに使用され得る。メモリ帯域幅圧縮は、必要に応じて有効化または無効化され得る。さらに、CMC36による使用のための上記で説明したリソースは、メモリ容量および/または帯域幅の圧縮効率と、消費電力と、性能との間の所望のトレードオフを達成するために有効化または無効化され得る。CMC36にとって利用可能なこれらのリソースを使用する例示的なメモリ帯域幅圧縮技法について、次に説明する。
【００２４】
この点について、図4は、メモリ帯域幅圧縮を提供するために図3のCMC36によって実装され得る、例示的なメモリ帯域幅圧縮機構60の概略図である。図4のメモリ帯域幅圧縮機構60では、システムメモリ38は、複数のメモリライン62を備え、メモリライン62の各々は、物理アドレスに関連付けられる。複数のメモリライン62の各々は、メモリ読取りまたは書込み要求(図示せず)の物理アドレスを使用して、CMC36によってアクセスされ得る。データ(図示せず)は、圧縮形態または非圧縮形態のいずれかにおいて、システムメモリ38内のメモリライン62の各々内に記憶され得る。いくつかの態様では、CI64を備える1つまたは複数の誤り訂正符号(ECC)ビットが、メモリライン62が圧縮形態で記憶されているか否かを示すために、各メモリライン62に関連して記憶され得る。このようにして、システムメモリ38へのメモリアクセス要求を実行するとき、CMC36は、メモリライン62がメモリアクセス要求の処理の一部として圧縮されているか否かを決定するために、アドレス指定されるべき物理アドレスに対応するメモリライン62に関連付けられたCI64をチェックすることができる。
【００２５】
マスタディレクトリ66もまた、システムメモリ38内に設けられる。マスタディレクトリ66は、物理アドレスに対応するシステムメモリ38内のメモリライン62ごとに1つのエントリ68を含む。マスタディレクトリ66はまた、メモリライン62が圧縮形態で記憶されているか否かを示すために、エントリ68ごとに1つのCI64を含み、そうである場合、複数の圧縮長さがサポートされる態様では、データの圧縮長さを示す圧縮パターンが提供される。たとえば、メモリライン62が128バイトの長さであり、そこに記憶されたデータが64バイト以下に圧縮され得る場合、システムメモリ38内に記憶されたデータに対応するマスタディレクトリ66内のCI64は、データが128バイトのメモリライン62の最初の64バイト内に記憶されることを示すように設定され得る。
【００２６】
引き続き図4を参照すると、書込み動作中、CMC36は、システムメモリ38内に書き込まれるべきメモリブロックを圧縮することができる。たとえば、データ(たとえば、128バイトまたは256バイト)が圧縮される。圧縮されたメモリブロックが、システムメモリ38のメモリブロックサイズ(たとえば、64バイト)以下である場合、64バイトが書き込まれ得、そうでない場合、128バイトが書き込まれる。256バイトは、圧縮されたデータサイズに応じて、64、128、192、または256バイトとして書き込まれ得る。システムメモリ38内のメモリライン62に関連付けられた1つまたは複数のECCビット内に記憶されたCI64はまた、メモリライン62におけるデータが圧縮されているか否かを示すように設定され得る。
【００２７】
たとえば、読取り動作中に、CMC36は、読み取られるべきデータがシステムメモリ38内で圧縮されたか否かを決定するために、マスタディレクトリ66からCI64を読み取ることができる。CI64に基づいて、CMC36は、システムメモリ38からアクセスされるべきデータを読み取ることができる。読み取られるべきデータが、CI64によって示されるようにシステムメモリ38内で圧縮された場合、CMC36は、1つのメモリ読取り動作で、圧縮メモリブロック全体を読み取ることができる。読み取られたデータの部分がシステムメモリ38内で圧縮されなかった場合、読み取られるべきメモリライン62の追加の部分もシステムメモリ38から読み取られなければならないので、メモリアクセスレイテンシが悪影響を受ける場合がある。いくつかの態様では、いくつかのアドレス範囲について、トレーニング機構が採用され得、トレーニング機構では、CMC36は、所与のセットの状況においてシステムメモリ38から2つのアクセスにおいてデータを読み取ることの方が良いか否か、または、レイテンシの影響を回避するためにシステムメモリ38から全量のデータを読み取ることの方が良いか否かを「学習」するように構成され得る。
【００２８】
図4の例では、CIキャッシュ70もまた、システムメモリ38の外部の別個のキャッシュ内に設けられ得る。CIキャッシュ70は、システムメモリ38内のメモリライン62が圧縮形態で記憶されているか否かを示すために、システムメモリ38内のメモリライン62ごとに1つのキャッシュエントリ72を提供する。このようにして、システムメモリ38へのメモリアクセス要求を実行するとき、CMC36は、メモリライン62を読み取る必要なしに、システムメモリ38内の物理アドレスにおけるメモリライン62がメモリアクセス要求の処理の一部として圧縮されているか否かを決定するために、アドレス指定されるべき物理アドレスに対応するCIキャッシュ70内のキャッシュエントリ72を最初にチェックすることができる。したがって、CIキャッシュ70が、メモリライン62が圧縮されて記憶されていることを示す場合、CMC36は、メモリライン62全体を読み出す必要はなく、したがって、レイテンシを低減する。CIキャッシュ70が、メモリライン62が圧縮されずに記憶されていることを示す場合、CMC36は、メモリライン62全体を読み出すことができる。ミスがCIキャッシュ70において発生した場合、マスタディレクトリ66内に記憶された対応するCI64が、同じ物理アドレスへの後続のメモリアクセス要求のために調べられ、CIキャッシュ70内にロードされ得る。
【００２９】
いくつかの態様では、CIキャッシュ70は、従来のキャッシュとして編成され得る。CIキャッシュ70は、非限定的な例として、タグアレイ(図示せず)を含み得、nウェイの連想キャッシュとして編成され得る。CMC36は、CIキャッシュ70に関する追い出しポリシーを実装し得る。図4中に示すCIキャッシュ70では、各キャッシュライン74は、複数のキャッシュエントリ72を記憶し得る。各キャッシュエントリ72は、キャッシュエントリ72に関連付けられたシステムメモリ38内のメモリライン62が圧縮されているか否かを示すため、かつ/または、キャッシュエントリ72に対応するデータの圧縮サイズを示す圧縮パターンを表すために、CI76を含み得る。たとえば、CI76は、4つの可能性のある圧縮サイズ(たとえば、32、64、96、または128バイト)を表す2ビットを備え得る。この例では、この情報は、キャッシュエントリ72内のCI76内にも記憶されるので、CI64は、冗長であることに留意されたい。たとえば、メモリライン62が128バイトの長さであり、そこに記憶されたデータが64バイト以下に圧縮され得る場合、システムメモリ38内のメモリライン62に対応するCIキャッシュ70内のキャッシュエントリ72内のCI76は、データが128バイトのメモリライン62の最初の64バイト内に記憶されること示すように設定され得る。
【００３０】
図4のメモリ帯域幅圧縮機構60のための追加のキャッシュを設けることも望ましい場合がある。この点について、図5は、図2のSoC10'のような、代替的SoC10''の一例を示す。しかしながら、図5のSoC10''は、この例ではL4キャッシュである、オプションのキャッシュ78をさらに含む。CMC36は、レイテンシを最小化するために、L4キャッシュ78とCIキャッシュ70の両方における物理アドレスを同時にルックアップすることができる。L4キャッシュ78内のアドレスは、圧縮されていない物理アドレスである。L4キャッシュ78内の物理アドレスのヒットに際し、CIキャッシュ70における物理アドレスルックアップは、冗長である。L4キャッシュ78内の物理アドレスのミスに際し、CIキャッシュ70における物理アドレスルックアップは、システムメモリ38からデータを取得するために必要とされる。また、L4キャッシュ78とCIキャッシュ70の両方にアクセスするCPU16(1)、16(2)の追加のレイテンシを回避するために、L4キャッシュ78およびCIキャッシュ70は、プライミングされ得る。
【００３１】
図6Aおよび図6Bは、メモリ帯域幅圧縮を提供するために、図3のCMC36によってアクセスされ得る、図2のシステムメモリ38の例示的な通信フローおよび例示的な要素を示すために提供される。具体的には、図6Aは、連続読取りおよび早期リターンを含む、メモリ読取り動作中の例示的な通信フローを示し、図6Bは、メモリ書込み動作中の例示的な通信フローを示す。図6Aおよび図6Bについて説明する際に、明快のために、図3および図4の要素を参照する。
【００３２】
図6Aおよび図6Bでは、システムメモリ38は、圧縮データと非圧縮データとを記憶するための複数のメモリライン80(0)〜80(X)を含む。メモリライン80(0)〜80(X)は、各々、システムメモリ38の基礎となるメモリアーキテクチャによって決定されるように、それぞれのメモリブロック82(0)〜82(Z)、84(0)〜84(Z)、および86(0)〜86(Z)に細分される。いくつかの態様では、メモリブロック82(0)〜82(Z)、84(0)〜84(Z)、86(0)〜86(Z)の各々のサイズは、メモリ読取り動作においてシステムメモリ38から読み取られ得るデータの最小量を表す。たとえば、いくつかの例示的なメモリアーキテクチャでは、メモリライン80(0)〜80(X)の各々は、2つの64バイトのメモリブロック82(0)〜82(Z)、84(0)〜84(Z)、86(0)〜86(Z)に細分された128バイトのデータを備え得る。いくつかの態様は、メモリライン80(0)〜80(X)の各々がより多いまたはより少ないバイトのデータ(非限定的な例として、たとえば、256バイトまたは64バイト)を備え得ることを提供し得る。同様に、いくつかの態様によれば、メモリライン80(0)〜80(X)内のメモリブロック82(0)〜82(Z)、84(0)〜84(Z)、86(0)〜86(Z)は、より大きくまたはより小さくなり得る(非限定的な例として、たとえば、128バイトまたは32バイト)。いくつかの態様では、メモリ読取り動作は、メモリブロック82(0)〜82(Z)、84(0)〜84(Z)、86(0)〜86(Z)の各々のサイズよりも少ないバイトを読み取り得るが、依然としてメモリブロック82(0)〜82(Z)、84(0)〜84(Z)、86(0)〜86(Z)のうちの1つと同じ量のメモリ帯域幅を消費し得る。
【００３３】
メモリブロック82(0)〜82(Z)、84(0)〜84(Z)、86(0)〜86(Z)の各々は、1つまたは複数の対応するECCビット88(0)〜88(Z)、90(0)〜90(Z)、92(0)〜92(Z)に関連付けられる。ECCビット88(0)〜88(Z)、90(0)〜90(Z)、92(0)〜92(Z)などのECCビットは、従来、メモリブロック82(0)〜82(Z)、84(0)〜84(Z)、86(0)〜86(Z)内の一般的に遭遇するタイプの内部データ破壊を検出し、修正するために使用されている。図6Aおよび図6Bの例では、ECCビット88(0)〜88(Z)、90(0)〜90(Z)、92(0)〜92(Z)のうちの1つまたは複数は、それぞれのメモリブロック82(0)〜82(Z)、84(0)〜84(Z)、86(0)〜86(Z)のためのCI94(0)〜94(Z)、96(0)〜96(Z)、98(0)〜98(Z)を記憶するために再利用される。図6Aおよび図6BのECCビット88(0)〜88(Z)、90(0)〜90(Z)、92(0)〜92(Z)は、それらのそれぞれのメモリブロック82(0)〜82(Z)、84(0)〜84(Z)、86(0)〜86(Z)に隣接するものとして示されているが、ECCビット88(0)〜88(Z)、90(0)〜90(Z)、92(0)〜92(Z)は、システムメモリ38内の他の場所に配置され得ることを理解されたい。
【００３４】
CI94(0)〜94(Z)、96(0)〜96(Z)、98(0)〜98(Z)は、各々、システムメモリ38の対応するメモリブロック82(0)〜82(Z)、84(0)〜84(Z)、86(0)〜86(Z)において記憶されたデータの圧縮状態を示す1つまたは複数のビットを備え得る。いくつかの態様では、CI94(0)〜94(Z)、96(0)〜96(Z)、98(0)〜98(Z)の各々は、対応するメモリブロック82(0)〜82(Z)、84(0)〜84(Z)、86(0)〜86(Z)内のデータが圧縮されているか圧縮されていないかを示す単一のビットを備え得る。いくつかの態様によれば、CI94(0)〜94(Z)、96(0)〜96(Z)、98(0)〜98(Z)の各々は、対応するメモリブロック82(0)〜82(Z)、84(0)〜84(Z)、86(0)〜86(Z)の各々のための圧縮パターン(たとえば、非限定的な例として、圧縮データによって占有されるメモリブロック82(0)〜82(Z)、84(0)〜84(Z)、86(0)〜86(Z)の数)を示すために使用され得る複数のビットを備え得る。
【００３５】
図6Aの例では、物理アドレス102を指定するメモリ読取り要求100は、矢印104によって示されるように、CMC36によって受信される。メモリ読取り要求100は、デマンドワードを含むメモリブロック82(0)〜82(Z)、84(0)〜84(Z)、86(0)〜86(Z)を示す、デマンドワードインジケータ106をさらに含む。例示の目的のために、最初に、物理アドレス102がメモリライン80(0)に対応すると仮定する。メモリ読取り要求100が受信されるとき、CMC36は、メモリライン80(0)のメモリブロック82(0)〜82(Z)内に記憶されたデータが圧縮されているか否かに気づいていない。CMC36は、メモリライン80(0)全体を読み取ることを続けることができるが、要求されたデータがメモリブロック82(0)内のみに圧縮形態で記憶されている場合、メモリブロック82(Z)の読取りは不要になり、増加したメモリアクセスレイテンシをもたらすことになる。
【００３６】
したがって、CMC36は、第1のメモリブロック82(0)(本明細書では「読取りメモリブロック82(0)」とも呼ぶ)を読み取る。CMC36は、ECCビット88(0)内に記憶されたCI94(0)に基づいて、第1のメモリブロック82(0)が圧縮データを記憶しているか否かを決定する。図6Aに見られるように、メモリブロック82(0)〜82(Z)は、圧縮データを記憶しているのではなく、非圧縮データ108(0)〜108(Z)を記憶している。したがって、第1のメモリブロック82(0)が圧縮データを記憶していないと決定すると、CMC36は、メモリライン80(0)の追加のメモリブロック82(Z)の連続読取りを実行する。メモリブロック82(Z)の連続読取りと並行して、CMC36は、デマンドワードインジケータ106に基づいて、読取りメモリブロック82(0)がデマンドワードに対応するか否かを決定する。そうである場合、CMC36は、メモリブロック82(Z)の連続読取りを同時に実行しながら、読取りメモリブロック82(0)を返す(すなわち、「早期リターン」)。このようにして、メモリブロック82(0)にアクセスするためのメモリアクセスレイテンシが低減され得る。
【００３７】
引き続き図6Aを参照すると、次に、物理アドレス102がメモリライン80(1)に対応すると仮定する。この場合、CMC36は、いくつかの態様では、メモリライン80(1)の第1のメモリブロック84(0)を読み取り、ECCビット90(0)内に記憶されたCI96(0)に基づいて、第1のメモリブロック84(0)が圧縮データ110を含むと決定する。したがって、CMC36は、第1のメモリブロック84(0)の圧縮データ110を復元メモリブロック112(0)〜112(Z)に復元する。次いで、CMC36は、デマンドワードインジケータ106に基づいて、デマンドワードを含む、復元メモリブロック112(0)〜112(Z)のうちの1つ(たとえば、復元メモリブロック112(0))を識別し、残りの復元メモリブロック112(0)〜112(Z)を返すより前に、復元メモリブロック112(0)を返すことができる。
【００３８】
CMC36のいくつかの態様は、本明細書では「複数圧縮データ書込み」と呼ぶものを採用することができ、複数圧縮データ書込みでは、圧縮データ110は、たとえば、第1のメモリブロック84(0)のみではなく、メモリライン80(1)のメモリブロック84(0)〜84(Z)の各々において記憶され得る。そのような態様では、CMC36は、第1のメモリブロック82(0)または84(0)を読み取るのではなく、デマンドワードインジケータ106によって示される、メモリブロック82(Z)または84(Z)などのメモリブロックのうちの1つを読み取ることによって、メモリアクセスレイテンシを改善することができる。CMC36によって読み取られたメモリライン80(0)〜80(X)が、非圧縮データ108(0)〜108(Z)を含むと決定される場合(たとえば、メモリライン80(0))、CMC36は、最初に、デマンドワードを含むメモリブロック82(Z)を読み取ることになり、上記で説明したように、1つまたは複数の追加のメモリブロック82(0)〜82(Z)を読み取るために、連続読取り動作を実行することと並行して、デマンドワードを返すことができる。これによって、非圧縮データ108(0)〜108(Z)を読み取り、返すとき、改善されたメモリ読取りアクセス時間が生じ得る。CMC36によって読み取られたメモリライン80(0)〜80(X)が、圧縮データ110を含むと決定される場合(たとえば、メモリライン80(1))、デマンドワードインジケータ106によって示され、CMC36によって読み取られるメモリブロック84(Z)は、圧縮データ110を含むことになる。したがって、どのメモリブロック84(0)〜84(Z)がデマンドワードインジケータ106によって示されるかにかかわらず、CMC36は、圧縮データ110を復元メモリブロック112(0)〜112(Z)に復元することを進めることができる。次いで、CMC36は、上記で説明したように、デマンドワードを含む復元メモリブロック112(0)〜112(Z)を識別し、返すことができる。
【００３９】
いくつかの態様では、CMC36は、適応モードを提供することによって、メモリアクセスレイテンシをさらに改善することができ、適応モードでは、読取りおよび/または書込みの総数と比較した圧縮データ110の読取りおよび/または書込みの数が追跡され得、読取り動作を実行するための動作が、そのような追跡に基づいて選択的に修正され得る。いくつかの態様によれば、そのような追跡は、非限定的な例として、CPUごと、作業負荷ごと、仮想マシン(VM)ごと、コンテナごと、および/またはサービス品質(QoS)識別子(QoSID)ごとに実行され得る。この点について、CMC36は、いくつかの態様では、圧縮モニタ114を設けるように構成され得る。圧縮モニタ114は、非限定的な例として、圧縮データ110の読取りの数、読取り動作の総数、圧縮データ110の書込みの数、および書込み動作の総数のうちの少なくとも1つに基づいて、圧縮比116を追跡するように構成される。いくつかの態様では、圧縮モニタ114は、CMC36によって実行される圧縮データ110の読取りの数、読取り動作の総数、圧縮データ110の書込みの数、および/または、書込み動作の総数を追跡するための、1つまたは複数のカウンタ118を設けることができる。次いで、圧縮比116が、合計の読取り動作の圧縮読取り動作に対する比、および/または、合計の書込み動作の圧縮書込み動作に対する比として決定され得る。
【００４０】
CMC36は、それとともに圧縮比116が圧縮モニタ114によって比較され得るしきい値120をさらに設けることができる。圧縮比116がしきい値120を下回らない場合、CMC36は、読み取られるべきデータが圧縮されている可能性が高いと結論付けることができ、上記で説明したように読取り動作を実行することができる。しかしながら、圧縮比116がしきい値120を下回る場合、CMC36は、読み取られるべきデータが圧縮されている可能性が低いと決定することができる。そのような場合、CMC36が、メモリブロック82(0)〜82(Z)、84(0)〜84(Z)、86(0)〜86(Z)から非圧縮データを取り出すために、複数の読取り動作を実行しなければならない見込みがより高くなり得る。したがって、上記の例のように、メモリライン80(0)の第1のメモリブロック82(0)のみを読み取るのではなく、CMC36は、メモリブロック82(0)〜82(Z)のすべてを読み取ることができる。次いで、CMC36は、第1のメモリブロック82(0)のECCビット88(0)のCI94(0)に基づいて、第1のメモリブロック82(0)が圧縮データ110を含むか否かを決定することができる。第1のメモリブロック82(0)が圧縮データ110を含まない場合、CMC36は、メモリライン80(0)内に記憶されたすべての非圧縮データを取り出すために、追加の読取りを実行する必要なしに、メモリブロック82(0)〜82(Z)のすべてを即時に返すことができる。第1のメモリブロック82(0)が圧縮データ110を含む場合、CMC36は、上記で説明したように、データを復元し、返すことができる。
【００４１】
次に図6Bを参照すると、CMC36は、いくつかの態様では、矢印124によって示されるように、メモリ書込み要求122を受信することができる。メモリ書込み要求122は、システムメモリ38に書き込まれるべき非圧縮書込みデータ126、ならびに、非圧縮書込みデータ126が書き込まれるべきシステムメモリ38の物理アドレス102の両方を含む。例示の目的のために、最初に、物理アドレス102がメモリライン80(0)に対応すると仮定する。メモリ書込み要求122を受信すると、CMC36は、最初に、非圧縮書込みデータ126を圧縮書込みデータ128に圧縮する。次いで、CMC36は、圧縮書込みデータ128のサイズがメモリライン80(0)の各メモリブロック82(0)〜82(Z)のサイズよりも大きいか否かを決定する。この例では、圧縮書込みデータ128は、メモリブロック82(0)〜82(Z)のうちの単一のものの中に記憶するには大きすぎる。結果として、圧縮書込みデータ128の後続の読取りには、複数の読取り動作、ならびに復元動作が必要になる。複数の読取り動作と復元動作とによって受けるオーバーヘッドは、圧縮書込みデータ128を圧縮形態で記憶することによって実現されるいかなる性能利益をもなくすことがある。したがって、CMC36は、非圧縮書込みデータ126をメモリブロック82(0)〜82(Z)内に非圧縮データ130(0)〜130(Z)として記憶する。CMC36はまた、第1のメモリブロック82(0)の圧縮状態(たとえば、非圧縮)を示すために、メモリライン80(0)の第1のメモリブロック82(0)のCI94(0)を設定する。
【００４２】
引き続き図6Bを参照すると、次に、物理アドレス102がメモリライン80(1)に対応すると仮定し、非圧縮書込みデータ126を圧縮すると、CMC36は、圧縮書込みデータ128のサイズがメモリライン80(1)の各メモリブロック84(0)〜84(Z)のサイズ以下であると決定する。この場合、CMC36は、圧縮書込みデータ128をメモリライン80(1)の第1のメモリブロック84(0)に圧縮データ132として書き込む。CMC36は、第1のメモリブロック84(0)の圧縮状態(たとえば、圧縮)を示すために、メモリライン80(1)の第1のメモリブロック84(0)のCI96(0)をさらに設定する。
【００４３】
上述のように、いくつかの態様では、CMC36は、複数圧縮データ書込みをサポートすることができる。図6Bの例では、複数圧縮データ書込みを採用するCMC36は、圧縮データ132を第1のメモリブロック84(0)のみに書き込むのではなく、圧縮データ132をメモリライン80(1)のメモリブロック84(0)〜84(Z)の各々に書き込むことができる。これによって、CMC36は、デマンドワードインジケータ106の値にかかわらず、圧縮データ132が適切に読み取られることを保証しながら、非圧縮データ130(0)〜130(Z)のためのデマンドワードを読み取るために、図6Aのデマンドワードインジケータ106を使用することによって、メモリ読取りアクセス時間をさらに改善することが可能になり得る。
【００４４】
図7A〜図7Cは、連続読取りと読取りデータの早期リターンとを使用して、メモリ帯域幅圧縮を提供する際に、読取り動作を実行するための、図3のCMC36の例示的な動作を示すフローチャートである。図7A〜図7Cについて説明する際に、明快のために、図2、図3、および図6A〜図6Bの要素を参照する。図7Aでは、CMC36は、いくつかの態様では、圧縮モニタ114を使用して、圧縮比116を追跡することができる(ブロック134)。いくつかの態様によれば、圧縮比116は、圧縮データ110の読取りの数、読取り動作の総数、圧縮データ110の書込みの数、および書込み動作の総数のうちの少なくとも1つに基づき得る。次いで、CMC36は、システムメモリ38内の複数のメモリブロック82(0)〜82(Z)、84(0)〜84(Z)を備える第1のメモリライン80(0)、80(1)の物理アドレス102を備える、メモリ読取り要求100を受信する(ブロック136)。CMC36が圧縮モニタ114を採用する態様では、CMC36は、圧縮比116がしきい値120を下回るか否かを決定することができる(ブロック138)。CMC36が、判定ブロック138で、圧縮比116がしきい値120を下回らないと決定する場合、または、CMC36が圧縮モニタ114を採用していない場合、処理は図7Bのブロック140で再開する。しかしながら、CMC36が、判定ブロック138で、圧縮比116がしきい値120を下回ると決定する場合、処理は図7Cのブロック142で再開する。
【００４５】
次に図7Bを参照すると、CMC36は、第1のメモリライン80(0)、80(1)の複数のメモリブロック82(0)〜82(Z)、84(0)〜84(Z)のうちの第1のメモリブロック82(0)、84(0)を読み取る(ブロック140)。CMC36は、第1のメモリブロック82(0)、84(0)のCI94(0)、96(0)に基づいて、第1のメモリブロック82(0)、84(0)が圧縮データ110を備えるか否かを決定する(ブロック144)。CMC36が、判定ブロック144で、第1のメモリブロック82(0)、84(0)が圧縮データ110を備えていないと決定する場合、CMC36は、第1のメモリライン80(0)の複数のメモリブロック82(0)〜82(Z)のうちの1つまたは複数の追加のメモリブロック82(Z)の連続読取りを実行する(ブロック146)。連続読取りと並行して、CMC36はまた、読取りメモリブロック82(0)がデマンドワードを備えるか否かを決定する(ブロック148)。そうである場合、CMC36は、連続読取りと並行して、読取りメモリブロック82(0)を返す(ブロック150)。読取りメモリブロック82(0)がデマンドワードを備えていない場合、処理はブロック148に戻る。
【００４６】
CMC36が、図7Bの判定ブロック144で、第1のメモリブロック82(0)、84(0)が圧縮データ110を備えると決定する場合、CMC36は、第1のメモリブロック84(0)の圧縮データ110を1つまたは複数の復元メモリブロック112(0)〜112(Z)に復元する(ブロック154)。CMC36は、次に、デマンドワードを備える、1つまたは複数の復元メモリブロック112(0)〜112(Z)のうちの復元メモリブロック112(0)を識別する(ブロック156)。次いで、復元メモリブロック112(0)が、CMC36によって、残りの復元メモリブロック112(0)〜112(Z)を返すより前に返される(ブロック158)。次いで、デマンドワードを備えていない残りの復元メモリブロック112(0)〜112(Z)が、CMC36によって後で返されることを理解されたい。
【００４７】
上述のように、CMC36が、図7Aの判定ブロック138で、圧縮比116がしきい値120を下回ると決定する場合、処理は図7Cのブロック142で再開する。次に図7Cを参照すると、CMC36は、それぞれ、第1のメモリライン80(0)、80(1)の、メモリブロック82(0)〜82(Z)、84(0)〜84(Z)など、複数のメモリブロックを読み取る(ブロック142)。CMC36は、第1のメモリライン80(0)、80(1)の複数のメモリブロック82(0)〜82(Z)、84(0)〜84(Z)のうちの第1のメモリブロック82(0)、84(0)のCI94(0)、96(0)に基づいて、第1のメモリブロック82(0)、84(0)が圧縮データ110を備えるか否かを決定する(ブロック160)。第1のメモリブロック82(0)、84(0)が圧縮データ110を備えていない場合、CMC36は、複数のメモリブロック82(0)〜82(Z)を返す(ブロック162)。しかしながら、CMC36が、判定ブロック160で、第1のメモリブロック82(0)、84(0)が圧縮データ110を備えると決定する場合、CMC36は、第1のメモリブロック84(0)の圧縮データ110を1つまたは複数の復元メモリブロック112(0)〜112(Z)に復元する(ブロック164)。CMC36は、次に、デマンドワードを備える、1つまたは複数の復元メモリブロック112(0)〜112(Z)のうちの復元メモリブロック112(0)を識別する(ブロック166)。次いで、復元メモリブロック112(0)が、CMC36によって、残りの復元メモリブロック112(0)〜112(Z)を返すより前に返される(ブロック168)。
【００４８】
連続読取りと読取りデータの早期リターンとを使用して、メモリ帯域幅圧縮を提供する際に、書込み動作を実行するための、図3のCMC36の例示的な動作を示すために、図8を提供する。明快のために、図8について説明する際に、図2、図3、および図6A〜図6Bの要素を参照する。いくつかの態様では、図8の動作は、CMC36が、非圧縮書込みデータ126と、システムメモリ38内の複数のメモリブロック82(0)〜82(Z)、84(0)〜84(Z)を備える第2のメモリライン80(0)、80(1)の物理アドレス102とを備える、メモリ書込み要求122を受信することから開始する(ブロック152)。CMC36は、非圧縮書込みデータ126を圧縮書込みデータ128に圧縮することができる(ブロック170)。次に、CMC36は、圧縮書込みデータ128のサイズが、第2のメモリライン80(0)、80(1)の複数のメモリブロック82(0)〜82(Z)、84(0)〜84(Z)のうちの各メモリブロック82(0)〜82(Z)、84(0)〜84(Z)のサイズよりも大きいか否かを決定することができる(ブロック172)。圧縮書込みデータ128のサイズが、各メモリブロック82(0)〜82(Z)、84(0)〜84(Z)のサイズよりも大きくない場合、CMC36は、圧縮書込みデータ128を、第2のメモリライン80(1)の第1のメモリブロック84(0)に書き込む(ブロック174)。しかしながら、CMC36が、判定ブロック172で、圧縮書込みデータ128のサイズが各メモリブロック82(0)〜82(Z)、84(0)〜82(Z)のサイズよりも大きいと決定する場合、CMC36は、非圧縮書込みデータ126を、第2のメモリライン80(0)の複数のメモリブロック82(0)〜82(Z)のうちの複数に書き込む(ブロック176)。次いで、CMC36は、第1のメモリブロック82(0)、84(0)の圧縮状態を示すために、第2のメモリライン80(0)、80(1)の第1のメモリブロック82(0)、84(0)のCI94(0)、96(0)を設定する(ブロック178)。
【００４９】
図9A〜図9Cは、連続読取りおよび複数圧縮データ書込みを使用して、メモリ帯域幅圧縮を提供する際に、読取り動作を実行するための、図3のCMC36の例示的な動作を示すフローチャートである。明快のために、図9A〜図9Cについて説明する際に、図2、図3、および図6A〜図6Bの要素を参照する。図9Aでは、いくつかの態様による動作は、CMC36が、圧縮モニタ114を使用して、圧縮比116を追跡することから開始する(ブロック180)。いくつかの態様は、圧縮比116が、圧縮データ110の読取りの数、読取り動作の総数、圧縮データ110の書込みの数、および書込み動作の総数のうちの少なくとも1つに基づくことを提供することができる。次いで、CMC36は、システムメモリ38内の複数のメモリブロック82(0)〜82(Z)、84(0)〜84(Z)を備える第1のメモリライン80(0)、80(1)の物理アドレス102と、デマンドワードを含む、第1のメモリライン80(0)、80(1)の複数のメモリブロック82(0)〜82(Z)、84(0)〜84(Z)の中のメモリブロック82(0)、84(0)を示す、デマンドワードインジケータ106とを備える、メモリ読取り要求100を受信する(ブロック182)。
【００５０】
CMC36が圧縮モニタ114を採用する態様では、CMC36は、圧縮比116がしきい値120を下回るか否かを決定することができる(ブロック184)。圧縮比116がしきい値120を下回らない場合、または、CMC36が、圧縮モニタ114を採用していない場合、処理は図9Bのブロック186で再開する。しかしながら、CMC36が、判定ブロック184で、圧縮比116がしきい値120を下回ると決定する場合、処理は図9Cのブロック188で再開する。
【００５１】
次に図9Bを参照すると、CMC36は、デマンドワードインジケータ106によって示されたメモリブロック82(Z)、84(Z)を読み取る(ブロック186)。CMC36は、次に、メモリブロック82(Z)、84(Z)のCI94(Z)、96(Z)に基づいて、メモリブロック82(Z)、84(Z)が圧縮データ110を備えるか否かを決定する(ブロック190)。メモリブロック82(Z)、84(Z)が圧縮データ110を備えていないと決定される場合、CMC36は、メモリブロック82(Z)を返すことと並行して、第1のメモリライン80(0)の複数のメモリブロック82(0)〜82(Z)のうちの1つまたは複数の追加のメモリブロック82(0)〜82(Z)の連続読取りを実行する(ブロック192)。
【００５２】
しかしながら、CMC36が、判定ブロック190で、メモリブロック82(Z)、84(Z)が圧縮データ110を備えると決定する場合、CMC36は、メモリブロック84(Z)の圧縮データ110を1つまたは複数の復元メモリブロック112(0)〜112(Z)に復元する(ブロック196)。CMC36は、デマンドワードを含む、1つまたは複数の復元メモリブロック112(0)〜112(Z)のうちの復元メモリブロック112(Z)を識別する(ブロック198)。次いで、復元メモリブロック112(Z)が、CMC36によって、残りの復元メモリブロック112(0)〜112(Z)を返すより前に返される(ブロック200)。
【００５３】
上述のように、CMC36が、図9Aの判定ブロック184で、圧縮比116がしきい値120を下回ると決定する場合、処理は図9Cのブロック188で再開する。図9Cでは、CMC36は、第1のメモリライン80(0)、80(1)の複数のメモリブロック82(0)〜82(Z)、84(0)〜84(Z)を読み取る(ブロック188)。次いで、CMC36は、第1のメモリライン80(0)、80(1)の複数のメモリブロック82(0)〜82(Z)、84(0)〜84(Z)のうちの第1のメモリブロック82(0)、84(0)のCI94(0)、96(0)に基づいて、第1のメモリブロック82(0)、84(0)が圧縮データ110を備えるか否かを決定する(ブロック202)。第1のメモリブロック82(0)、84(0)が圧縮データ110を備えていない場合、CMC36は、複数のメモリブロック82(0)〜82(Z)を返す(ブロック204)。
【００５４】
CMC36が、判定ブロック202で、メモリブロック82(0)、84(0)が圧縮データ110を備えると決定する場合、CMC36は、第1のメモリブロック84(0)の圧縮データ110を1つまたは複数の復元メモリブロック112(0)〜112(Z)に復元する(ブロック206)。CMC36は、デマンドワードを含む、1つまたは複数の復元メモリブロック112(0)〜112(Z)のうちの復元メモリブロック112(0)を識別する(ブロック208)。次いで、復元メモリブロック112(0)が、CMC36によって、残りの復元メモリブロック112(0)〜112(Z)を返すより前に返される(ブロック210)。
【００５５】
連続読取りおよび複数圧縮データ書込みを使用して、メモリ帯域幅圧縮を提供する際に、書込み動作を実行するための、図3のCMC36の例示的な動作を示すために、図10を提供する。明快のために、図10について説明する際に、図2、図3、および図6A〜図6Bの要素を参照する。いくつかの態様では、図10の動作は、CMC36が、非圧縮書込みデータ126と、システムメモリ38内の複数のメモリブロック82(0)〜82(Z)、84(0)〜84(Z)を備える第2のメモリライン80(0)、80(1)の物理アドレス102とを備える、メモリ書込み要求122を受信することから開始する(ブロック194)。CMC36は、非圧縮書込みデータ126を圧縮書込みデータ128に圧縮することができる(ブロック212)。次いで、CMC36は、圧縮書込みデータ128のサイズが、第2のメモリライン80(0)、80(1)の複数のメモリブロック82(0)〜82(Z)、84(0)〜84(Z)のうちの各メモリブロック82(0)〜82(Z)、84(0)〜84(Z)のサイズよりも大きいか否かを決定することができる(ブロック214)。圧縮書込みデータ128のサイズが、各メモリブロック82(0)〜82(Z)、84(0)〜84(Z)のサイズよりも大きい場合、CMC36は、非圧縮書込みデータ126を、第2のメモリライン80(1)の複数のメモリブロック84(0)〜84(Z)のうちの複数に書き込むことができる(ブロック216)。しかしながら、CMC36が、判定ブロック214で、圧縮書込みデータ128のサイズが各メモリブロック82(0)〜82(Z)、84(0)〜84(Z)のサイズよりも大きくないと決定する場合、CMC36は、圧縮書込みデータ128を、第2のメモリライン80(1)の複数のメモリブロック84(0)〜84(Z)のうちの各メモリブロック84(0)〜84(Z)に書き込むことができる(ブロック218)。次いで、CMC36は、各メモリブロック82(0)〜82(Z)、84(0)〜84(Z)の圧縮状態を示すために、第2のメモリライン80(0)、80(1)の複数のメモリブロック82(0)〜82(Z)、84(0)〜84(Z)のうちの各メモリブロック82(0)〜82(Z)、84(0)〜84(Z)のCI94(0)〜94(Z)、96(0)〜96(Z)を設定する(ブロック220)。
【００５６】
いくつかの態様では、複数のビットを備えるCIの値は、メモリブロック82(0)〜82(Z)のうちの1つなどのメモリブロック内に記憶された圧縮状態および/または固定データパターンを示し得る。非限定的な例として、2ビットのCIについて、「00」の値は、対応するメモリブロックが圧縮されていないことを示し得、「01」の値は、対応するメモリブロックが圧縮されていることを示し得る。「11」の値は、固定パターン(たとえば、すべて0またはすべて1)が対応するメモリブロック内に記憶されていることを示し得る。
【００５７】
この点について、図11は、頻出パターン圧縮データ圧縮機構222を示す。この点について、圧縮されるべきソースデータフォーマット224内のソースデータは、例として128バイトとして示されている。圧縮データフォーマット226を以下に示す。圧縮データフォーマット226は、プレフィックス符号Pxと、Dataxとしてのプレフィックスの後ろのデータとのフォーマットにおいて提供される。プレフィックスは、3ビットである。プレフィックス符号は、頻出パターン符号化テーブル230内のプレフィックス符号列228において示されており、頻出パターン符号化テーブル230は、プレフィックス符号列228内の所与のプレフィックス符号のためのパターン符号化列232において符号化されたパターンを示す。符号化されたパターンのためのデータサイズは、頻出パターン符号化テーブル230のデータサイズ列234において提供される。
【００５８】
図12は、32ビット頻出パターン圧縮データ圧縮機構236を示す。この点について、圧縮されるべきソースデータフォーマット238内のソースデータは、例として128バイトとして示されている。圧縮データフォーマット240を以下に示す。圧縮データフォーマット240は、プレフィックスPxと、Dataxとしてのプレフィックスの直後のデータとのフォーマットにおいて提供される。新しい圧縮データフォーマット242は、効率の目的のために一緒にグループ化されるように編成される、プレフィックス符号Pxと、データのDataxと、フラグと、パターンとの異なるフォーマットにおいて提供される。プレフィックス符号は、3ビットである。プレフィックス符号は、頻出パターン符号化テーブル246内のプレフィックス符号列244において示されており、頻出パターン符号化テーブル246は、プレフィックス符号列244内の所与のプレフィックス符号のためのパターン符号化列248において符号化されたパターンを示す。符号化されたパターンのためのデータサイズは、頻出パターン符号化テーブル246のデータサイズ列250において提供される。プレフィックス符号000は、非圧縮パターンを示し、非圧縮パターンは、新しい圧縮データフォーマット242内の32ビットのフルサイズのデータとなる。プレフィックス符号001は、全0のデータブロックを示し、全0のデータブロックは、新しい圧縮データフォーマット242のデータ内の0ビットとして提供され得る。3ビットプレフィックスでは、プレフィックス符号010〜111は、この例では、それぞれ、0、4、8、12、16、および24ビットのパターンである、ソースデータ内で認識される他の特定のパターンを符号化するために使用され得る。
【００５９】
図13は、32ビット頻出パターン圧縮データ圧縮機構252の一例を示す。この点について、圧縮されるべきソースデータフォーマット254内のソースデータは、例として128バイトとして示されている。圧縮データフォーマット256を以下に示す。圧縮データフォーマット256は、プレフィックスPxと、Dataxとしてのプレフィックスの後ろのデータとのフォーマットにおいて提供される。新しい圧縮データフォーマット258は、効率の目的のために一緒にグループ化されるように編成される、プレフィックス符号Pxと、データのDataxと、フラグと、パターンとの異なるフォーマットにおいて提供される。プレフィックス符号は、3ビットである。プレフィックス符号は、頻出パターン符号化テーブル262内のプレフィックス符号列260において示されており、頻出パターン符号化テーブル262は、プレフィックス符号列260内の所与のプレフィックス符号のためのパターン符号化列264において符号化されたパターンを示す。符号化されたパターンのためのデータサイズは、頻出パターン符号化テーブル262のデータサイズ列266において提供される。プレフィックス符号000は、非圧縮パターンを示し、非圧縮パターンは、新しい圧縮データフォーマット258内の32ビットのフルサイズのデータとなる。プレフィックス符号001は、全0のデータブロックを示し、全0のデータブロックは、新しい圧縮データフォーマット258のデータ内の0ビットとして提供され得る。プレフィックス符号010は、特定のパターンであり、したがって、新しい圧縮データフォーマット258による圧縮データにおいて0ビットのデータサイズを必要とする、パターン0xFFFFFFFFを示す。他のパターンは、プレフィックス符号011〜111について頻出パターン符号化テーブル262内に示されている。新しい圧縮データフォーマット258内のフラグフィールドは、プレフィックス符号001〜111のためのどのパターンが圧縮データのデータ部分(すなわち、Datax)内に存在するかを示す。パターンが圧縮データ内に存在する場合、パターンは、次いで非圧縮データを再作成するために調べられ得る新しい圧縮データフォーマット258内に記憶される。データフィールドは、新しい圧縮データフォーマット258内のデータフィールドに関連付けられたプレフィックス符号による圧縮データを含む。
【００６０】
図14は、64ビット頻出パターン圧縮データ圧縮機構268の別の例を示す。この点について、圧縮されるべきソースデータフォーマット270内のソースデータは、例として128バイトとして示されている。新しい圧縮データフォーマット272は、効率の目的のために一緒にグループ化されるように編成される、プレフィックス符号Pxと、データのDataxと、フラグと、パターンとの異なるフォーマットにおいて提供される。プレフィックス符号は、4ビットである。プレフィックス符号は、頻出パターン符号化テーブル278内のプレフィックス符号列274、276において示されており、頻出パターン符号化テーブル278は、プレフィックス符号列274、276内の所与のプレフィックス符号のためのパターン符号化列280、282において符号化されたパターンを示す。符号化されたパターンのためのデータサイズは、頻出パターン符号化テーブル278のデータサイズ列284、286において提供される。プレフィックス符号0000は、全0のデータブロックを示し、全0のデータブロックは、新しい圧縮データフォーマット272のデータ内の0ビットとして提供され得る。他のパターンは、ASCIIパターンを頻繁に生じるためのASCIIパターンを含めて、プレフィックス符号0001〜1111について頻出パターン符号化テーブル278内に示されている。新しい圧縮データフォーマット272内のフラグフィールドは、プレフィックス符号0001〜1111のためのどのパターンが圧縮データのデータ部分(すなわち、Datax)内に存在するかを示す。パターンが圧縮データ内に存在する場合、パターンは、次いで非圧縮データを再作成するために調べられ得る新しい圧縮データフォーマット272内に記憶される。データフィールドは、新しい圧縮データフォーマット272内のデータフィールドに関連付けられたプレフィックス符号による圧縮データを含む。
【００６１】
図15は、64ビット頻出パターン圧縮データ圧縮機構288の別の例を示す。この点について、圧縮されるべきソースデータフォーマット290内のソースデータは、例として128バイトとして示されている。新しい圧縮データフォーマット292は、効率の目的のために一緒にグループ化されるように編成される、プレフィックス符号Pxと、データのDataxと、フラグと、パターンとの異なるフォーマットにおいて提供される。プレフィックス符号は、4ビットである。プレフィックス符号は、頻出パターン符号化テーブル298内のプレフィックス符号列294、296において示されており、頻出パターン符号化テーブル298は、プレフィックス符号列294、296内の所与のプレフィックス符号のためのパターン符号化列300、302において符号化されたパターンを示す。符号化されたパターンのためのデータサイズは、頻出パターン符号化テーブル298のデータサイズ列304、306において提供される。プレフィックス符号0000は、全0のデータブロックを示し、全0のデータブロックは、新しい圧縮データフォーマット292のデータ内の0ビットとして提供され得る。他のパターンは、プレフィックス符号0001〜1111について頻出パターン符号化テーブル298内に示されており、固定パターンの組合せを含み得る。新しい圧縮データフォーマット292内のフラグフィールドは、プレフィックス符号0001〜1111のためのどのパターンが圧縮データ内のデータ部分(すなわち、Datax)内に存在するかを示す。パターンが圧縮データ内に存在する場合、パターンは、次いで非圧縮データを再作成するために、データ圧縮中に調べられ得る、新しい圧縮データフォーマット292内に記憶される。プリフィックス符号P0〜P31は、非圧縮フォーマットにおいて全長データを再作成するために対応するデータ(Datax)とともに使用されるパターンにリンクすることができる。データフィールドは、新しい圧縮データフォーマット292内のデータフィールドに関連付けられたプレフィックス符号による圧縮データを含む。
【００６２】
図15の頻出パターン圧縮データ圧縮機構288とともに使用され得る固定パターンの例は、図16のテーブル308に示されており、そこで、固定パターンは、パターン列310内で提供され、その長さは、長さ列312内で提供され、パターンの定義は、パターン定義列314内で提供されている。フラグ定義は、CMC36がプレフィックス符号にリンクされた所与のパターンを、非圧縮データを作成するために使用される定義に相関させることを可能にするために、フラグ定義テーブル316内に示されている。フラグ定義テーブル316は、フラグ列318内の所与のフラグのためのビットと、フラグ値列320内の所与のフラグのためのビットの値と、フラグ定義列322内の所与のフラグのためのフラグ定義とを含む。
【００６３】
図17は、64ビット頻出パターン圧縮データ圧縮機構324の別の例を示す。この点について、圧縮されるべきソースデータフォーマット326内のソースデータは、例として128バイトとして示されている。新しい圧縮データフォーマット328は、効率の目的のために一緒にグループ化されるように編成される、プレフィックス符号Pxと、データのDataxと、フラグと、パターンとの異なるフォーマットにおいて提供される。プレフィックス符号は、4ビットである。プレフィックス符号は、頻出パターン符号化テーブル334内のプレフィックス符号列330、332において示されており、頻出パターン符号化テーブル334は、プレフィックス符号列330、332内の所与のプレフィックス符号のための符号化されたパターンをパターン符号化列336、338において示す。符号化されたパターンのためのデータサイズは、頻出パターン符号化テーブル334のデータサイズ列340、342において提供される。プレフィックス符号0000は、全0のデータブロックを示し、全0のデータブロックは、新しい圧縮データフォーマット328のデータ内の0ビットとして提供され得る。プレフィックス符号1111は、新しい圧縮データフォーマット328において圧縮されていないデータブロックを示す。他のパターンは、プレフィックス符号0001〜1110について頻出パターン符号化テーブル334内に示されており、そこに示されているように定義されたパターンの組合せを含み得る。新しい圧縮データフォーマット328内のフラグフィールドは、プレフィックス符号0000〜1110のためのどのパターンが圧縮データのデータ部分(すなわち、Datax)内に存在するかを示す。パターンが圧縮データ内に存在する場合、パターンは、次いで非圧縮データを再作成するために調べられ得る新しい圧縮データフォーマット328内に記憶される。新しい圧縮データフォーマット328は、パターン0〜5のみを含むものとして示され、その理由は、この例では、これらのパターンのみが、ソースデータ内に存在するプレフィックス符号0000〜1110内で考慮されるパターンであったからである。データフィールドは、新しい圧縮データフォーマット328内のデータフィールドに関連付けられたプレフィックス符号による圧縮データを含む。
【００６４】
本明細書で開示する態様によるCPUベースのシステム内のCMCによる連続読取り動作を使用するメモリ帯域幅圧縮を提供することは、任意のプロセッサベースのデバイス内で提供され得るか、または任意のプロセッサベースのデバイス内に統合され得る。例としては、限定はしないが、セットトップボックス、エンターテインメントユニット、ナビゲーションデバイス、通信デバイス、固定ロケーションデータユニット、モバイルロケーションデータユニット、モバイルフォン、セルラーフォン、コンピュータ、ポータブルコンピュータ、デスクトップコンピュータ、携帯情報端末(PDA)、モニタ、コンピュータモニタ、テレビジョン、チューナー、ラジオ、衛星ラジオ、音楽プレーヤ、デジタル音楽プレーヤ、ポータブル音楽プレーヤ、デジタルビデオプレーヤ、ビデオプレーヤ、デジタルビデオディスク(DVD)プレーヤ、およびポータブルデジタルビデオプレーヤが含まれる。
【００６５】
この点について、図18は、図2のCMC36とともに図1のSoC10を採用することができる、プロセッサベースのシステム344の一例を示す。この例では、プロセッサベースのシステム344は、1つまたは複数のプロセッサ348を各々が含む、1つまたは複数のCPU346を含む。CPU346は、一時的に記憶されたデータへの高速アクセスのためにプロセッサ348に結合されたキャッシュメモリ350を有し得る。CPU346は、システムバス352に結合され、システムバス352は、プロセッサベースのシステム344内に含まれるデバイスを相互結合することができる。よく知られているように、CPU346は、システムバス352を介してアドレス情報、制御情報、およびデータ情報を交換することによって、これらの他のデバイスと通信する。たとえば、CPU346は、スレーブデバイスの一例として、メモリコントローラ354にバストランザクション要求を通信することができる。図18に示されていないが、複数のシステムバス352が設けられ得る。
【００６６】
他のデバイスは、システムバス352に接続され得る。図18に示されているように、これらのデバイスは、例として、メモリシステム356、1つまたは複数の入力デバイス358、1つまたは複数の出力デバイス360、1つまたは複数のネットワークインターフェースデバイス362、および1つまたは複数のディスプレイコントローラ364を含み得る。入力デバイス358は、限定はしないが、入力キー、スイッチ、音声プロセッサなどを含む、任意のタイプの入力デバイスを含み得る。出力デバイス360は、限定はしないが、オーディオインジケータ、ビデオインジケータ、他の視覚インジケータなどを含む、任意のタイプの出力デバイスを含み得る。ネットワークインターフェースデバイス362は、ネットワーク366との間のデータ交換を可能にするように構成される任意のデバイスであり得る。ネットワーク366は、限定はしないが、ワイヤードまたはワイヤレスネットワーク、プライベートまたはパブリックネットワーク、ローカルエリアネットワーク(LAN)、ワイドローカルエリアネットワーク、ワイヤレスローカルエリアネットワーク、BLUETOOTH（登録商標）(BT)、およびインターネットを含む、任意のタイプのネットワークであり得る。ネットワークインターフェースデバイス362は、所望の任意のタイプの通信プロトコルをサポートするように構成され得る。メモリシステム356は、1つまたは複数のメモリユニット368(0)〜368(N)を含み得る。
【００６７】
CPU346はまた、1つまたは複数のディスプレイ370に送られる情報を制御するために、システムバス352を介してディスプレイコントローラ364にアクセスするように構成され得る。ディスプレイコントローラ364は、1つまたは複数のビデオプロセッサ372を介して、表示されるべき情報をディスプレイ370に送り、ビデオプロセッサ372は、表示されるべき情報を、ディスプレイ370に適したフォーマットになるように処理する。ディスプレイ370は、限定はしないが、陰極線管(CRT)、液晶ディスプレイ(LCD)、発光ダイオード(LED)ディスプレイ、プラズマディスプレイなどを含む、任意のタイプのディスプレイを含み得る。
【００６８】
当業者は、本明細書で開示する態様に関して説明する様々な例示的な論理ブロック、モジュール、回路、およびアルゴリズムが、電子ハードウェア、メモリもしくは別のコンピュータ可読媒体に記憶され、プロセッサもしくは他の処理デバイスによって実行される命令、または両方の組合せとして実装される場合があることをさらに諒解されよう。本明細書で説明するデバイスは、例として、任意の回路、ハードウェア構成要素、集積回路(IC)、またはICチップにおいて採用され得る。本明細書で開示するメモリは、任意のタイプおよびサイズのメモリであり得、所望の任意のタイプの情報を記憶するように構成され得る。この互換性を明確に説明するために、様々な例示的な構成要素、ブロック、モジュール、回路、およびステップについて、上記では概してそれらの機能に関して説明した。そのような機能がどのように実装されるかは、特定の適用例、設計選択、および/または全体的なシステムに課される設計制約によって決まる。当業者は、説明した機能を特定の適用例ごとに様々な方法で実装してもよいが、そのような実装の決定は、本開示の範囲からの逸脱を引き起こすものと解釈されるべきではない。
【００６９】
本明細書で開示する態様に関して説明する様々な例示的な論理ブロック、モジュール、および回路は、プロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)もしくは他のプログラマブル論理デバイス、個別ゲートもしくはトランジスタ論理、個別ハードウェア構成要素、または本明細書で説明する機能を実行するように設計されたそれらの任意の組合せとともに実装または実行されてもよい。プロセッサはマイクロプロセッサであってよいが、代替では、プロセッサは、任意の従来型プロセッサ、コントローラ、マイクロコントローラ、またはステートマシンであってもよい。プロセッサはまた、コンピューティングデバイスの組合せ、たとえば、DSPとマイクロプロセッサの組合せ、複数のマイクロプロセッサ、DSPコアと連携した1つもしくは複数のマイクロプロセッサ、または任意の他のそのような構成として実装されてもよい。
【００７０】
本明細書で開示する態様は、ハードウェアにおいて、および、ハードウェアに記憶された命令において具現化される場合があり、命令は、たとえば、ランダムアクセスメモリ(RAM)、フラッシュメモリ、読取り専用メモリ(ROM)、電気的プログラマブルROM(EPROM)、電気的消去可能プログラマブルROM(EEPROM)、レジスタ、ハードディスク、リムーバブルディスク、CD-ROM、または当技術分野において知られている任意の他の形態のコンピュータ可読媒体内に存在する場合がある。例示的な記憶媒体は、プロセッサが記憶媒体から情報を読み取り、記憶媒体に情報を書き込むことができるように、プロセッサに結合される。代替として、記憶媒体は、プロセッサに一体化され得る。プロセッサおよび記憶媒体は、ASICに存在し得る。ASICは、リモート局内に存在し得る。代替として、プロセッサおよび記憶媒体は、個別構成要素として、リモート局、基地局、またはサーバ内に存在し得る。
【００７１】
本明細書の例示的な態様のいずれかにおいて説明される動作ステップは、例および検討を提供するために説明されることにも留意されたい。説明される動作は、図示されるシーケンス以外の多数の異なるシーケンスにおいて実行される場合がある。さらに、単一の動作ステップにおいて説明される動作は、実際にはいくつかの異なるステップにおいて実行される場合がある。さらに、例示的な態様において論じられる1つまたは複数の動作ステップが組み合わせられる場合がある。当業者には容易に明らかになるように、フローチャート図に示される動作ステップは、多数の異なる変更を受ける場合があることを理解されたい。当業者は、情報および信号が様々な異なる技術および技法のいずれかを使用して表される場合があることも理解されよう。たとえば、上記の説明全体を通して参照される場合があるデータ、命令、コマンド、情報、信号、ビット、シンボル、およびチップは、電圧、電流、電磁波、磁場もしくは磁性粒子、光場もしくは光学粒子、またはそれらの任意の組合せによって表される場合がある。
【００７２】
本開示の上記の説明は、当業者が本開示を実施するかまたは使用することを可能にするために提供される。本開示に対する種々の変更が、当業者には容易に明らかになり、本明細書において規定される一般原理は、本開示の趣旨または範囲を逸脱することなく、他の変形形態に適用される場合がある。したがって、本開示は、本明細書で説明する例および設計に限定されるものではなく、本明細書で開示する原理および新規の特徴と一致する最も広い範囲を与えられるべきである。
【符号の説明】
【００７３】
10  システムオンチップ、SoC
10'、10''  SoC
12、12'  CPUベースのシステム
14(1)〜14(N)  CPUブロック
16(1)、16(2)、346  CPU
18(1)〜18(N)  共有レベル2(L2)キャッシュ
20  共有レベル3(L3)キャッシュ
22  内部システムバス
24、354  メモリコントローラ
26  周辺機器
28  他のストレージ
30  エクスプレス周辺構成要素相互接続(PCI)(PCI-e)インターフェース
32  ダイレクトメモリアクセス(DMA)コントローラ
34  統合メモリコントローラ(IMC)
36  CMC
38  システムメモリ
40(1)〜40(R)  ダブルデータレート(DDR)ダイナミックランダムアクセスメモリ、DRAM
44、46(1)、46(2)  半導体ダイ
48(1)〜48(P)  メモリインターフェース(MEM I/F)
50  圧縮コントローラ
52  ローカルメモリ
54  スタティックランダムアクセスメモリ(SRAM)
55  L4コントローラ
56  内部メモリ
58  内部メモリコントローラ
60  メモリ帯域幅圧縮機構
62、80(0)〜80(X)  メモリライン
64、76、94(0)〜94(Z)、96(0)〜96(Z)、98(0)〜98(Z)  CI
66  マスタディレクトリ
68  エントリ
70  CIキャッシュ
72  キャッシュエントリ
74  キャッシュライン
78  オプションのキャッシュ、L4キャッシュ
80(0)、80(1)  第1のメモリライン、第2のメモリライン
82(0)〜82(Z)、84(0)〜84(Z)、86(0)〜86(Z)  メモリブロック
82(0)  第1のメモリブロック、読取りメモリブロック
84(0)  第1のメモリブロック
88(0)〜88(Z)、90(0)〜90(Z)、92(0)〜92(Z)  ECCビット
100  メモリ読取り要求
102  物理アドレス
106  デマンドワードインジケータ
108(0)〜108(Z)、130(0)〜130(Z)  非圧縮データ
110、132  圧縮データ
112(0)〜112(Z)  復元メモリブロック
114  圧縮モニタ
116  圧縮比
118  カウンタ
120  しきい値
122  メモリ書込み要求
126  非圧縮書込みデータ
128  圧縮書込みデータ
222  頻出パターン圧縮データ圧縮機構
224、238、254、270、290、326  ソースデータフォーマット
226、240、256  圧縮データフォーマット
228、244、260、274、276、294、296、330、332  プレフィックス符号列
230、246、262、278、298、334  頻出パターン符号化テーブル
232、248、264、280、282、300、302、336、338  パターン符号化列
234、250、266、284、286、304、306、340、342  データサイズ列
236、252  32ビット頻出パターン圧縮データ圧縮機構
242、258、272、292、328  新しい圧縮データフォーマット
268、324  64ビット頻出パターン圧縮データ圧縮機構
288  64ビット頻出パターン圧縮データ圧縮機構、頻出パターン圧縮データ圧縮機構
308  テーブル
310  パターン列
312  長さ列
314  パターン定義列
316  フラグ定義テーブル
318  フラグ列
320  フラグ値列
322  フラグ定義列
344  プロセッサベースのシステム
348  プロセッサ
350  キャッシュメモリ
352  システムバス
356  メモリシステム
358  入力デバイス
360  出力デバイス
362  ネットワークインターフェースデバイス
364  ディスプレイコントローラ
366  ネットワーク
368(0)〜368(N)  メモリユニット
370  ディスプレイ
372  ビデオプロセッサ
【図１】
2018503924.tif 000003
【図２】
2018503924.tif 000004
【図３】
2018503924.tif 000005
【図４】
2018503924.tif 000006
【図５】
2018503924.tif 000007
【図６Ａ】
2018503924.tif 000008
【図６Ｂ】
2018503924.tif 000009
【図７Ａ】
2018503924.tif 000010
【図７Ｂ】
2018503924.tif 000011
【図７Ｃ】
2018503924.tif 000012
【図８】
2018503924.tif 000013
【図９Ａ】
2018503924.tif 000014
【図９Ｂ】
2018503924.tif 000015
【図９Ｃ】
2018503924.tif 000016
【図１０】
2018503924.tif 000017
【図１１】
2018503924.tif 000018
【図１２】
2018503924.tif 000019
【図１３】
2018503924.tif 000020
【図１４】
2018503924.tif 000021
【図１５】
2018503924.tif 000022
【図１６】
2018503924.tif 000023
【図１７】
2018503924.tif 000024
【図１８】
2018503924.tif 000025
【国際調査報告】
2018503924.tif 000026
2018503924.tif 000027
2018503924.tif 000028