(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-12-10
(45)【発行日】2024-12-18
(54)【発明の名称】低電力キャッシュ
(51)【国際特許分類】
G06F 12/0877 20160101AFI20241211BHJP
G06F 12/0895 20160101ALI20241211BHJP
G11C 7/10 20060101ALI20241211BHJP
【FI】
G06F12/0877
G06F12/0895 100
G11C7/10 150
(21)【出願番号】P 2024537041
(86)(22)【出願日】2022-12-13
(86)【国際出願番号】 US2022052644
(87)【国際公開番号】W WO2023121914
(87)【国際公開日】2023-06-29
【審査請求日】2024-07-25
(32)【優先日】2021-12-20
(33)【優先権主張国・地域又は機関】US
【早期審査対象出願】
(73)【特許権者】
【識別番号】591016172
【氏名又は名称】アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド
【氏名又は名称原語表記】ADVANCED MICRO DEVICES INCORPORATED
(74)【代理人】
【識別番号】100108833
【氏名又は名称】早川 裕司
(74)【代理人】
【識別番号】100111615
【氏名又は名称】佐野 良太
(74)【代理人】
【識別番号】100162156
【氏名又は名称】村雨 圭介
(72)【発明者】
【氏名】ヴィドヒャナサン カリヤナスンダラム
(72)【発明者】
【氏名】ジョン ウー
(72)【発明者】
【氏名】チンタン エス. パテル
【審査官】後藤 彰
(56)【参考文献】
【文献】特表2015-506039(JP,A)
【文献】特開2006-191567(JP,A)
【文献】特開2004-310700(JP,A)
【文献】国際公開第97/11420(WO,A1)
【文献】国際公開第2010/137164(WO,A1)
【文献】特開2000-113677(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 12/0877
G06F 12/0895
G11C 7/10
(57)【特許請求の範囲】
【請求項1】
キャッシュであって、
上流ポートと、
各々がライン幅を有するキャッシュラインを記憶するためのキャッシュメモリと、
前記上流ポート及び前記キャッシュメモリに結合されたキャッシュコントローラであって、前記上流ポートは、前記ライン幅未満の転送幅を有するデータワードを転送し、前記キャッシュコントローラは、キャッシュラインフィルに応じて、
連続するデータワードの各ペアのデータビットの遷移数が前記転送幅の半分を超えるか否かに基づいて、前記転送幅を有するデータワードのシーケンスについてのデータバス反転情報を選択的に判定し、前記キャッシュラインフィルについての選択された反転データワードとともに、前記データバス反転情報を前記キャッシュメモリに記憶する、キャッシュコントローラと、を備える、
キャッシュ。
【請求項2】
前記キャッシュコントローラは、
前記上流ポートに結合されたデータ評価回路であって、
前記連続するデータワードの各ペアのデータビットの遷移数が前記転送幅の半分を超えるか否かを判定し、超える場合に、対応するデータバス反転ビットを前記キャッシュメモリに設定するデータ評価回路を備える、
請求項1のキャッシュ。
【請求項3】
前記データ評価回路は、第1のキャッシュラインの閾値数を超えるデータワードがゼロの値を有するか否かを判定し、
前記キャッシュコントローラは、前記閾値数を超えるデータワードがゼロの値を有する場合に、前記第1のキャッシュラインのゼロ値マスク状態と、各データワードがゼロの値を有するか否かを示す各データワードのゼロ値ビットと、を記憶する、
請求項2のキャッシュ。
【請求項4】
前記データ評価回路は、
前記ゼロ値マスク状態に応じて、前記データワードのシーケンスについての前記データバス反転情報を判定することと、前記キャッシュラインフィルについての前記選択された反転データワードとともに前記データバス反転情報を前記キャッシュメモリに記憶することと、を抑制する、
請求項3のキャッシュ。
【請求項5】
前記データ評価回路は、前記ゼロ値マスク状態に応じて、前記データワードのシーケンスについての前記データバス反転情報を判定することと、前記キャッシュラインフィルについての前記選択された反転データワードとともに前記データバス反転情報を前記キャッシュメモリに記憶することと、を抑制する、
請求項3のキャッシュ。
【請求項6】
データ処理システムであって、
複数のメモリアクセスリクエスタと、
複数のメモリアクセスレスポンダと、
前記複数のメモリアクセスリクエスタを前記複数のメモリアクセスレスポンダに選択的に結合するためのデータファブリックと、
前記データファブリックに結合されたキャッシュと、を備え、
前記キャッシュは、
各々がライン幅を有するキャッシュラインを記憶するためのキャッシュメモリと、
前記キャッシュメモリに結合され、前記ライン幅未満の転送幅を有するデータワードを転送するためのキャッシュコントローラであって、前記キャッシュコントローラは、キャッシュラインフィルに応じて、
連続するデータワードの各ペアのデータビットの遷移数が前記転送幅の半分を超えるか否かに基づいて、前記転送幅を有するデータワードのシーケンスについてのデータバス反転情報を選択的に判定し、前記キャッシュラインフィルについての選択された反転データワードとともに、前記データバス反転情報を前記キャッシュメモリに記憶する、キャッシュコントローラと、を備える、
データ処理システム。
【請求項7】
前記キャッシュコントローラは、
前記データファブリックに結合されたデータ評価回路であって、
前記連続するデータワードの各ペアのデータビットの遷移数が前記転送幅の半分を超えるか否かを判定し、超える場合に、前記キャッシュメモリ内の対応するデータバス反転ビットを設定するデータ評価回路を備える、
請求項
6のデータ処理システム。
【請求項8】
前記データ評価回路は、第1のキャッシュラインの閾値数を超えるデータワードがゼロの値を有するか否かを判定し、
前記キャッシュコントローラは、前記閾値数を超えるデータワードがゼロの値を有する場合に、前記第1のキャッシュラインのゼロ値マスク状態と、各データワードが前記ゼロの値を有するか否かを示す各データワードのゼロ値ビットと、を記憶する、
請求項
7のデータ処理システム。
【請求項9】
前記データ評価回路は、
前記ゼロ値マスク状態に応じて、前記データワードのシーケンスについての前記データバス反転情報を判定することと、前記キャッシュラインフィルについての前記選択された反転データワードとともに前記データバス反転情報を前記キャッシュメモリに記憶することと、を抑制する、
請求項
8のデータ処理システム。
【請求項10】
前記データ評価回路は、前記ゼロ値マスク状態に応じて、前記データワードのシーケンスについての前記データバス反転情報を判定することと、前記キャッシュラインフィルについての前記選択された反転データワードとともに前記データバス反転情報を前記キャッシュメモリに記憶することと、を抑制する、
請求項
8のデータ処理システム。
【請求項11】
前記データファブリックは、前記複数のメモリアクセスリクエスタの各々と前記複数のメモリアクセスレスポンダの各々との間のクロスバースイッチングを使用して仮想接続を確立する、
請求項
6のデータ処理システム。
【請求項12】
前記複数のメモリアクセスリクエスタは、各々が少なくとも1つのキャッシュを有する複数の中央処理ユニットコアを備え、前記キャッシュは、キャッシュ階層のラストレベルキャッシュ(LLC)である、
請求項
6のデータ処理システム。
【請求項13】
キャッシュを有するデータ処理システムのエネルギー消費を低減する方法であって、
キャッシュラインを受信することであって、前記キャッシュラインは複数のデータワードを含む、ことと、
前記キャッシュラインの状態をデータ反転マスク状態に設定することと、
各データワードについて、データワード内の複数のデータビットの半分超が前のデータワードと前記データワードとの間で遷移するか否かを判定することと、
遷移する場合に、反転データワードを前記キャッシュに記憶する前に前記データワード内の前記複数のデータビットの各々を反転し、対応するデータバス反転ビットを設定することと、
遷移しない場合に、前記複数のデータビットの何れも反転せずに前記データワードを前記キャッシュに記憶し、前記対応するデータバス反転ビットをクリアすることと、を含む、
方法。
【請求項14】
ゼロの値を有する前記キャッシュライン内のデータワードの数が閾値以上であるかどうかを判定することと、
前記ゼロの値を有する前記キャッシュライン内の前記データワードの数が前記閾値以上である場合に、
前記キャッシュラインの状態をゼロ値マスク状態に設定することと、
ゼロ以外の値を有する前記キャッシュラインの各データワードについて、対応する反転マスクビットをクリアし、前記データワードを前記キャッシュに書き込むことと、
ゼロの値を有する前記キャッシュラインの各データワードについて、対応する反転マスクビットを設定し、前記キャッシュへの前記データワードの書き込みを抑制することと、を含む、
請求項
13の方法。
【請求項15】
受信したキャッシュラインの何れかのデータワードがマスクされているか否かを判定することと、
前記受信したキャッシュラインの何れかのデータワードがマスクされている場合に、マスクされていないデータワードを前記キャッシュに書き込むことと、
前記マスクされていないデータワードを前記キャッシュに書き込んだ後に、前記キャッシュライン内の何れかのデータワードがマスクされたままであるかどうかを判定することと、
前記キャッシュライン内の少なくとも1つのデータワードがマスクされたままである場合に、前記キャッシュラインの状態を書き込みマスク状態に設定することと、
前記キャッシュライン内のデータワードがマスクされたままでない場合に、前記キャッシュラインの状態を通常状態に設定することと、を含む、
請求項
13の方法。
【発明の詳細な説明】
【背景技術】
【0001】
ラップトップ、ノートブック、スマートフォン、タブレット等のコンピュータシステムは、典型的には、単一の集積回路チップ上にコンピュータシステムの多くのコンポーネントを集積するシステムオンチップ(system-on-chip、SOC)を含む。例えば、SOCは、1つ以上の中央処理装置(central processing unit、CPU)コアと、グラフィックスコントローラと、外部メモリコンポーネントにインターフェースするための1つ以上メモリコントローラと、オフチップ入力/出力周辺回路にインターフェースするための入力/出力コントローラと、を含み得る。これらのデバイスの多くは、バッテリによって電力供給されるポータブルアプリケーションにおいて動作するので、低電力消費は、これらのSOCの重要な特徴となっている。
【0002】
SOC内の機能ブロックは、広い内部バスにわたって互いにデータを交換する。例えば、CPUは、メモリコントローラを介してデータをオンチップに運び、後のアクセスのためにコピーを保存しながら、データをCPUに回送するキャッシュを介して外部メモリに記憶されたデータを要求し得る。これらのアクセスは、典型的に、広い内部バスにわたって複数のサイクルで発生する。SOCが複数のサイクルにわたってバス上でデータを伝導する場合、平均して多くのデータラインが論理状態を切り替え、これは、高容量性バスラインを繰り返し記憶及び放電し、電力消費を増加させる。加えて、これらの信号ラインは、ほぼ同時に論理状態を切り替えるので、それらは、グリッチ、ノイズ、信号スキュー、及び、SOC内の隣接する信号ライン及び回路に対する他の望ましくない影響を引き起こし得る電力及び接地バウンスを引き起こす。
【図面の簡単な説明】
【0003】
【
図1】先行技術において既知のキャッシュラインのブロック図である。
【
図2】いくつかの実施形態による、データ処理システムのブロック図である。
【
図3】いくつかの実施形態による、
図2のキャッシュにおいて使用可能なキャッシュラインのブロック図である。
【
図4】いくつかの実施形態による、
図2のキャッシュの動作を示すフローのフローチャートである。
【
図5】いくつかの実施形態による、
図2のキャッシュのブロック図である。
【発明を実施するための形態】
【0004】
以下の説明において、異なる図面における同一の符号の使用は、同様のアイテム又は同一のアイテムを示す。別段の言及がなければ、「結合される(coupled)」という単語及びその関連する動詞形は、当該技術分野で周知の手段による直接接続及び間接電気接続の両方を含み、また、別段の言及がなければ、直接接続の任意の記述は、好適な形態の間接電気接続を使用する代替の実施形態も同様に意味する。
【0005】
キャッシュは、上流ポートと、各々がライン幅を有するキャッシュラインを記憶するためのキャッシュメモリと、キャッシュコントローラと、を含む。キャッシュコントローラは、上流ポート及びキャッシュメモリに結合される。上流ポートは、ライン幅未満の転送幅を有するデータワードを転送する。キャッシュラインフィルに応じて、キャッシュコントローラは、転送幅を有する一連のデータワードについてのデータバス反転情報を選択的に判定し、キャッシュラインフィルについての選択された反転データワードとともにデータバス反転情報をキャッシュメモリに記憶する。
【0006】
データ処理システムは、複数のメモリアクセスリクエスタと、複数のメモリアクセスレスポンダと、複数のメモリアクセスリクエスタを複数のメモリアクセスレスポンダに選択的に結合するためのデータファブリックと、キャッシュと、を含む。キャッシュは、データファブリックに結合され、キャッシュメモリ及びキャッシュコントローラを含む。キャッシュメモリは、各々がライン幅を有するキャッシュラインを記憶する。キャッシュコントローラは、キャッシュメモリに結合され、ライン幅未満の転送幅を有するデータワードを転送する。キャッシュラインフィルに応じて、キャッシュコントローラは、転送幅を有する一連のデータワードについてのデータバス反転情報を選択的に判定し、キャッシュラインフィルについての選択された反転データワードとともにデータバス反転情報をキャッシュメモリに記憶する。
【0007】
キャッシュを有するデータ処理システムのエネルギー消費を低減する方法は、キャッシュラインを受信することを含み、キャッシュラインは、複数のデータワードを含む。キャッシュラインの状態は、データ反転マスク状態に設定される。各データワードについて、データワード内の複数のデータビットの半分超が、前のデータワードとデータワードとの間で遷移するかどうかが判定される。遷移する場合、反転データワードをキャッシュに記憶する前にデータワード内の複数のデータビットの各々を反転し、対応するデータバス反転ビットが設定される。遷移しない場合、データワードは、複数のデータビットの何れも反転せずにキャッシュに記憶され、対応するデータバス反転biがクリアされる。
【0008】
図1は、先行技術において既知のキャッシュライン100のブロック図である。キャッシュライン100は、概して、ラインアドレス110、ライン状態120、最長時間未使用(least recently used、LRU)ビット130、及び、データフィールド140を含む。
【0009】
ラインアドレス110は、メインメモリ内のキャッシュラインの場所を指し示し、メモリアドレスの一部である。例えば、データフィールド140が64バイトのデータを記憶する場合、ラインアドレス110は、メモリアドレスの最下位6ビットを除く全てを含み、残りのアドレスビットは、データフィールド140内のデータ要素の順序で伴われる。
【0010】
ライン状態120及びLRUビット130は、キャッシュライン100用のメタデータを記憶する。ライン状態120は、システム内の他のキャッシュ間のライン交換及びコヒーレンシを含む様々な目的に有用なキャッシュラインの状態を指し示す。典型的な実施形態では、ライン状態120は、「MOESI」プロトコルを実装するためのビットのセットを記憶する。MOESIプロトコルによれば、ライン状態120は、キャッシュラインが変更されたこと(M)、キャッシュラインが排他的(E)若しくは共有(S)であること、又は、キャッシュラインが無効(I)であることを指し示すビットを含む、ラインが何れのMOESI状態にあるかを指し示す。所有(O)状態は、1つのキャッシュでラインが変更され、他のキャッシュに共有コピーが存在する可能性があり、メモリ内のデータが古くなっていることを指し示す。このプロトコルを使用して、キャッシュは、システム内の別のキャッシュ内で更新されたコピーを見つけるかどうかを判定することができる。MOESIプロトコル及びこれらの特定のビットは、使用され得るライン状態の単なる例である。LRUビット130は、キャッシュラインの古さを指し示す。キャッシュが満杯であり、別のラインからのデータを要求する場合、キャッシュコントローラは、新しいキャッシュラインを記憶する場所を見つけなければならず、LRUビット130を使用して、何れのラインを追い出す(エビクトする)かを判定する。
【0011】
データフィールド140は、キャッシュラインのデータを含む。上述した64Bキャッシュラインの例では、キャッシュは、典型的に、64Bのデータ全てをデータフィールド140に記憶するか、又は、64Bのデータ全てをそこから読み取るのに数サイクルを必要とする。例えば、キャッシュの外部データバスが32ビット幅である場合、キャッシュラインの別の場所への転送は、16サイクルかかる。そのような転送は、高い作業負荷の期間中に頻繁に発生し、バス転送中にかなりの量の電力を消費する可能性がある。
【0012】
図2は、いくつかの実施形態による、データ処理システム200のブロック図である。データ処理システム200は、SOC210の形態のデータプロセッサと、低電力ダブルデータレートシンクロナスダイナミックランダムアクセスメモリ(low-power Double Data Rate synchronous dynamic random-access memory、LPDDRx SDRAM)の形態の外部メモリ372,283と、を含む。実際のデータ処理システムの多くの他のコンポーネントが典型的に存在するが、本開示を理解することに関連せず、説明を容易にするために
図2には示されていない。
【0013】
SOC210は、概して、システム管理ユニット(system management unit、SMU)211と、システム管理ネットワーク(system management network、SMN)212と、「CCX」とラベル付けされた中央処理ユニット(CPU)コア複合体220と、「GFX」とラベル付けされたグラフィックスコントローラ230と、リアルタイムクライアントサブシステム240と、メモリ/クライアントサブシステム250と、データファブリック260と、メモリチャネル270及び280と、周辺コンポーネントインターフェースエクスプレス(Peripheral Component Interface Express、PCIe)サブシステム290と、最終レベルキャッシュとして動作し、「LLC」とラベル付けされたキャッシュ500と、を含む。当業者によって理解されるように、SOC210は、全ての実施形態に存在するこれらの要素の全てを有していなくてもよく、更に、その中に含まれる追加の要素を有してもよい。
【0014】
SMU211は、SMN212を介してSOC210内の主要コンポーネントに双方向に接続される。SMN212は、SOC210のための制御ファブリックを形成する。SMU211は、SOC210上のリソースの動作を制御してそれらの間の通信を同期させるローカルコントローラである。SMU211は、SOC210上の様々なプロセッサのパワーアップシーケンシングを管理し、リセット、イネーブル及び他の信号を介して複数のオフチップデバイスを制御する。SMU211は、SOC210のコンポーネントのそれぞれにクロック信号を与えるために、位相ロックループ(phase locked loop、PLL)等の1つ以上のクロックソース(図示せず)を含む。また、SMU211は、様々なプロセッサ及び他の機能ブロックのための電力を管理し、適切なP状態を判定するためにCPUコア複合体220内のCPUコア及びグラフィックスコントローラ230から測定された電力消費値を受信することができる。
【0015】
CPUコア複合体220は、CPUコアのセットを含み、その各々は、SMN212を介してSMU211に双方向に接続される。各CPUコアは、ラストレベルキャッシュのみを他のCPUコアと共有する単一コアであってもよいし、クラスタ内の他のコアの全てではないが一部と組み合わされてもよい。
【0016】
グラフィックスコントローラ230は、SMN212を介してSMU211に双方向に接続されている。グラフィックスコントローラ230は、頂点処理、フラグメント処理、シェーディング、テクスチャブレンディング等のグラフィックス処理を高度に統合された並列方式で実行することができる高性能グラフィックス処理ユニットである。グラフィックスコントローラ230は、その動作を実行するために、外部メモリへの周期的なアクセスを必要とする。
図2に示される実施形態では、グラフィックスコントローラ230は、統合メモリアーキテクチャとして知られるアーキテクチャである、CPUコア複合体220内のCPUコアと共通メモリサブシステムを共有する。SOC210は、CPUとGPUの両方を含むので、加速処理ユニット(accelerated processing unit、APU)とも呼ばれる。
【0017】
リアルタイムクライアントサブシステム240は、代表的なリアルタイムクライアント242及び243等のリアルタイムクライアントのセットと、「MM HUB」とラベル付けされたメモリ管理ハブ241と、を含む。各リアルタイムクライアントは、SMN212を介してSMU211に双方向接続され、メモリ管理ハブ241に双方向接続される。各リアルタイムクライアントは、画像信号プロセッサ(image signal processor、ISP)、オーディオコーダ-デコーダ(コーデック)、モニタ上に表示するためにグラフィックスコントローラ230によって生成されたオブジェクトをレンダリング及びラスタ化するディスプレイコントローラ等のように、データの周期的な移動を必要とする任意のタイプの周辺コントローラであり得る。
【0018】
メモリ/クライアントサブシステム250は、代表的なメモリ/クライアントデバイス252及び253等のメモリ要素又は周辺コントローラのセットと、「SYSHUB/IOHUB」とラベル付けされたシステム及び入力/出力ハブ251と、を含む。各メモリ/クライアントデバイスは、SMN212を介してSMU211に双方向に接続され、システム及び入力/出力ハブ251に双方向に接続される。メモリ/クライアントデバイスは、不揮発性メモリ、スタティックランダムアクセスメモリ(static random-access memory、SRAM)、シリアルアドバンストテクノロジーアタッチメント(Serial Advanced Technology Attachment、SATA)インターフェースコントローラ等の外部ディスクコントローラ、ユニバーサルシリアルバス(universal serial bus、USB)コントローラ、システム管理ハブ等のように、非周期的にデータを記憶するか又はデータへのアクセスを必要とする回路である。
【0019】
データファブリック260は、SOC210におけるトラフィックのフローを制御する相互接続である。データファブリック260は、SMN212を介してSMU211に双方向に接続され、CPUコア複合体220、グラフィックスコントローラ230、メモリ管理ハブ241、システム、及び、入力/出力ハブ251に双方向に接続される。データファブリック260は、SOC210における様々なデバイスの何れかの間にてメモリ・マップド・アクセスの要求と応答をルーティングするためのクロスバースイッチを含む。データファブリックは、システム構成に基づいてメモリアクセスの送信先を判定するために基本入出力システム(basic input/output system、BIOS)によって規定されるシステムメモリマップ、及び、各仮想接続のためのバッファも含む。
【0020】
メモリチャネル270及び280は、外部メモリ273及び283との間のデータの転送を制御する回路である。メモリチャネル270は、メモリコントローラ271と、外部メモリ273に接続された「PHY」とラベル付けされた物理インターフェース回路272と、によって形成される。メモリコントローラ271は、SMN212にわたってSMU211に双方向に接続され、上流ポートと、下流ポートと、を有する。物理インターフェース回路272は、メモリコントローラ271に双方向に接続される上流ポートと、外部メモリ273に双方向に接続される下流ポートと、を有する。同様に、メモリチャネル280は、メモリコントローラ281と、外部メモリ283に接続された物理インターフェース回路282と、によって形成される。メモリコントローラ281は、SMN212を介してSMU211に双方向に接続され、データファブリック260に双方向に接続された上流ポートと、下流ポートと、を有する。物理インターフェース回路282は、メモリコントローラ281に双方向に接続される上流ポートと、外部メモリ283に双方向に接続される下流ポートと、を有する。キャッシュ500は、SMN212にわたってSMU211に双方向に接続され、データファブリック260に双方向に接続された上流ポートと、メモリコントローラ271の上流ポートに接続された下流ポートと、を有する。
【0021】
周辺コンポーネントインターフェースエクスプレス(PCIe)サブシステム290は、PCIeコントローラ291及びPCIe物理インターフェース回路292を含む。PCIeコントローラ291は、SMN212を介してSMU211に双方向に接続され、システム及び入力/出力ハブ251に双方向に接続された上流ポートと、下流ポートと、を有する。PCIe物理インターフェース回路292は、PCIeコントローラ291に双方向に接続された上流ポートと、
図2に示されていないPCIeファブリックに双方向に接続された下流ポートと、を有する。PCIeコントローラ
291は、PCIeスイッチ、ルータ及びデバイスを含むPCIeネットワークへの接続のために、PCIeシステムのPCIeルート複合体を形成することができる。
【0022】
動作では、SOC210は、単一チップ上に、CPUコア複合体220及びグラフィックスコントローラ230を含む、コンピューティングデバイス及びストレージデバイスの複雑な取り合わせを統合する。これらのコントローラのほとんどは周知であり、これ以上説明しない。SOC210は、これらのデータ要素間でデータを高速で伝導するための複数の内部バスを含む。例えば、CPUコア複合体220は、データファブリック260の上流ポートを介して高速32ビットバスを介してデータにアクセスする。データファブリック260は、その上流ポートに接続された複数のメモリアクセスエージェントの何れかと、その下流ポートに接続されたメモリアクセスレスポンダとの間のアクセスを多重化する。多数のメモリアクセスエージェント及びメモリアクセスレスポンダのために、内部バスラインの数も非常に同様に多く、データファブリック260内のクロスバースイッチは、これらのワイドバスを多重化して、メモリアクセスリクエスタとメモリアクセスレスポンダとの間の仮想接続を形成する。
【0023】
また、様々な処理ノードは、それら自身のキャッシュ階層を維持する。典型的な構成では、CPUコア複合体220は、4つのCPUコアを含み、各CPUコアは、それ自体の専用のレベル1(L1)キャッシュ及びレベル2(L2)キャッシュを有し、クラスタ内の4つのCPUコア間で共有されるレベル3(L3)キャッシュを有する。この例では、キャッシュ500は、レベル4(L4)キャッシュを形成するが、CPUコア複合体220内のキャッシュ階層の内部編成にかかわらず、キャッシュ階層内の最終レベルキャッシュとして動作する。一例では、キャッシュ500は、SOC210内の任意のより高いレベルのキャッシュに記憶された任意のキャッシュラインがキャッシュ500にも記憶される、包含的キャッシュ(inclusive cache)を実装する。別の例では、キャッシュ500はビクティムキャッシュであり、キャッシュラインを含み、キャッシュラインの各々は、より早い時点でデータプロセッサによって要求されたデータを含有していたが、最終的には最長時間未使用キャッシュラインになり、全ての上位層キャッシュから追い出される。
【0024】
本明細書で説明する様々な実施形態によれば、キャッシュ500は、データが内部バスにわたって転送される場合の遷移数を低減するために、各キャッシュライン内のデータを反転フォーマットで選択的に記憶する。これは、連続するデータ要素間のバスビットレーン上の遷移数を分析し、転送において消費されるエネルギーの最小量に基づいて後続の遷移を反転させるかどうかを判定することによって行われる。この特徴を実施するかどうかの決定自体は、データの他の特性に基づいて選択される。全体として、ほんの数個の余分なメタデータビット及び少数のフォーマットビットに対して、SOC210を通じたデータの転送は、より電力効率の良い方式で行うことができ、典型的な作業負荷の下でSOC210の全体的な電力消費を大幅に低減する。電力節約は、高速で切り替わるキャッシュ500へのバスを有するデータ処理システムにおいてだけでなく、より遅い速度で切り替わる可能性があるが、より大きい及び/又はより長いバスを有するデータ処理システムにおいても重要であり得る。
【0025】
図3は、いくつかの実施形態による、
図2のキャッシュ500において使用できるキャッシュライン300のフォーマットのブロック図である。キャッシュライン300は、概して、ラインアドレス310、ライン状態320、データステータスフィールド330、LRUビット340、及び、データフィールド350を含む。ラインアドレス310、ライン状態320及びLRUビット340は、上述したラインアドレス110、ライン状態120及びLRUビット130と同様に機能する。
【0026】
データフィールド350は、データ、及び、関連するダブルワードの状態を指し示す「SF」とラベル付けされた追加の特殊機能ビットを記憶する。例えば、「SF
15」とラベル付けされた特殊機能ビットは、「DWORD
15」とラベル付けされたデータのダブルワード用の特殊機能ビットを記憶し、「SF
14」とラベル付けされた特殊機能ビットは、「DWORD
14」とラベル付けされたデータのダブルワード用の特殊機能ビットを記憶し、以下同様である。
図3に示す例では、キャッシュライン300は、各ダブルワードが32ビットを含有する16個のダブルワードに編成された64Bのデータを記憶する。したがって、各ダブルワードは、キャッシュラインがアクセスされ、ライトバック又は追い出し中にメインメモリにライトバックされる場合等に、そのビットがSOC210の内部バス上の同じバスサイクル中に送信されるデータ要素を記憶する。
【0027】
データステータスフィールド330は、ライン状態320及びLRUビット340とともに、キャッシュライン300のメタデータを記憶する。データステータスフィールド330は、データフィールド350にデータがどのように記憶されているかを指し示す。
図3に示す実施形態では、データステータスフィールド330は、4つの可能な状態のうち何れかを符号化する「DS[1]」及び「DS[0]」とラベル付けされた2つのビットを含む。
【0028】
DS[1:0]=00である第1の状態では、データはデータフィールド350に正常に、すなわち反転されずに記憶される。SFビットはドントケア(don’t-cares)であり、データは通常通りデータフィールド350に記憶され、そこから読み取られる。
【0029】
DS[1:0]=01である第2の状態では、データは、ダブルワードごとにゼロ値マスク(zero value mask、ZVM)ビットを含むSFビットとともに記憶される。典型的なデータ構造では、多くのデータ要素が0の値を有する。ダブルワードが0の値を有する場合、データフィールドに0を明示的に記憶し、転送中にバス上のビットを切り替える必要はない。したがって、余分なZVMビットが実際の値をドントケアにするので、キャッシュ500は、データの記憶及び読み出しを抑制することによって電力を節約する。
【0030】
DS[1:0]=10である第3の状態では、データは、ダブルワードごとにデータ反転マスク(data inversion mask、DIM)ビットを含むSFビットとともに記憶される。この場合、SFビットは、対応するダブルワードが反転形式で記憶されていることを指し示すために1であり、対応するダブルワードが非反転形式で記憶されていることを指し示すために0である。DIMモードにある場合、任意の特定のデータ要素を反転させるかどうかに関する決定は、データフィールド350によって指し示されるシーケンス内の所定のダブルワードと後続のダブルワードとの間の遷移数を分析することによって行われる。例えば、DWORD0からDWORD1への32ビットの遷移数が16ビットより大きい場合、SF1は1に設定され、DWORD1は反転フォーマットでそのキャッシュラインに記憶される。次いで、後続のアクセスにおいて、データバス上の遷移数が低減され、動作中の電力が節約される。
【0031】
DS[1:0]=11である第4の状態では、データは、ダブルワードごとに書き込みビットを含有するSFビットとともに記憶される。書き込みマスクモードでは、変更されないダブルワードは、バス上の値の状態を変更する必要がない。
【0032】
キャッシュ500は、データの値に応じて、DATA STATUS状態を選択的に設定する。次に、DATA STATUS状態を判定するアルゴリズムについて説明する。
【0033】
図4は、いくつかの実施形態による、
図2のキャッシュ500がデータステータスフィールドを設定することをどのように決定するかを反映するフロー400のフローチャートである。フローは、キャッシュラインの割り当てに対応するボックス410で開始する。アクションボックス420において、キャッシュ500は、メインメモリから(例えば、キャッシュラインフィル動作の場合)又はデータファブリック260から(例えば、ライトバック動作の場合)データ要素を受信する。決定ボックス430において、キャッシュ500は、例えば、特定のダブルワードのみが変更されるライトバックの場合に発生するであろう、何れかのダブルワードがマスクされているかどうかを判定する。
【0034】
何れかのダブルワードがマスクされている場合、アクションボックス440において、キャッシュ500は、マスクされていないダブルワードをキャッシュラインに書き込む。決定ボックス441において、キャッシュ500は、何れかのダブルワードが無効とマークされているかどうかを判定する。マークされている場合、フローは、ライン状態をWMに設定するアクションボックス442、次に、フロー400が終了するアクションボックス443に進む。マークされていない場合、フローは、ライン状態をNORMALに設定するアクションボックス444、次に、フロー400が終了するアクションボックス445に進む。
【0035】
ダブルワードがマスクされていない場合、決定ボックス450で、キャッシュ500は、それぞれのビットの全てが0に等しいダブルワードの数が7以上であるかどうかを判定する。7以上である場合、アクションボックス451において、全てゼロである各ダブルワードについて、キャッシュ500は、対応するSFビットを1に設定し、キャッシュラインのデータ部分へのデータワードの書き込みを抑制する。言い換えれば、n=0~15の場合、DWORDn=0x0である場合、SFn=1であり、キャッシュ500は、DWORDnのデータフィールド350への書き込みを抑制する。次に、アクションボックス452において、キャッシュ500は、ライン状態をZVMに設定し、アクションボックス453において、フロー400は終了する。
【0036】
そうでない場合、アクションボックス454において、キャッシュ500は、各データ遷移について、ダブルワードの各ペアの間の遷移数がデータバス幅の半分、この例では16より大きいかどうかを判定する。言い換えれば、すなわち、n=0~15の場合、DWORDnからDWORDn+1への遷移数≧16である場合、キャッシュ15は、ビットをデータフィールド350に記憶する前にビットを反転し、DWORDn+1用の対応するSFn+1ビットを1に設定し、そうでない場合、キャッシュ500は、DWORDn+1をデータフィールド350に記憶し、DWORDn+1用の対応するSFn+1ビットを0に設定する。次に、アクションボックス455において、キャッシュ500は、ライン状態をDIMに設定し、アクションボックス456において、フロー400は終了する。
【0037】
フロー400は、他のデータ記憶モードと組み合わされた選択的データ反転マスキングを使用するキャッシュ500内のデータ記憶のための1つの例示的なフローを表すにすぎないことが明らかであろう。他の実施形態では、フロー400は、より少ない又はより多い選択的データ記憶モードをサポートするように修正することができる。
【0038】
図5は、いくつかの実施形態による、
図2のキャッシュ500のブロック図である。キャッシュ500は、概して、コヒーレントスレーブポート510、マスタポート520、スタティックランダムアクセスメモリ(SRAM)530及び532、並びに、キャッシュコントローラ540を含む。
【0039】
コヒーレントスレーブポート510は、データファブリック260に双方向に接続された上流ポートであり、「CACHE RESPONSE(キャッシュ応答)」とラベル付けされた信号を受信するための第1の入力と、「CACHE RESPONSE DATA(キャッシュ応答データ)」とラベル付けされた信号を受信するための第2の入力と、「DATA FABRIC REQUESTS(データファブリック要求)」とラベル付けされた信号を提供するための第1の出力と、「DATA FABRIC WRITE DATA(データファブリック書き込みデータ)」とラベル付けされた信号を提供するための第2の出力と、を有する。マスタポート520は下流ポートであり、「CACHE REQUESTS(キャッシュ要求)」とラベル付けされた信号を受信するための第1の入力と、「CACHE WRITE DATA(キャッシュ書き込みデータ)」とラベル付けされた信号を受信するための第2の入力と、「UMC RESPONSE(UMC応答)」とラベル付けされた信号を提供するための第1の出力と、「UMC RESPONSE DATA(UMC応答データ)」とラベル付けされた信号を提供するための第2の出力と、メモリコントローラ271に接続された下流ポートと、を有する。SRAM530は、アドレス及びデータを受信するための入力と、データを提供するための出力と、を有する。マルチプレクサ531は、SRAM530に関連付けられ、第1の入力、第2の入力及びSRAM530の入力に接続された出力を有する。同様に、SRAM532は、アドレス及びデータを受信するための入力と、データを提供するための出力と、を有する。マルチプレクサ533は、SRAM532に関連付けられ、第1の入力、第2の入力、及び、SRAM532の入力に接続された出力を有する。
【0040】
キャッシュコントローラ540は、トランザクションキュー/スケジューラ541、ビクティムキュー542、マルチプレクサ543、データバッファ544、応答データバッファ545、ORゲート546、マルチプレクサ547、応答スケジューラ548、及び、データ評価回路550を含む。トランザクションキュー/スケジューラ541は、DATA FABRIC REQUESTSを受信するためのコヒーレントスレーブポート510の第1の出力に接続された第1の入力と、第2の入力と、「CACHE READ REQUESTS(キャッシュ読み取り要求)」とラベル付けされた信号を提供する第1の出力と、ビクティムキャッシュラインを提供する第2の出力と、応答を提供する第3の出力と、キャッシュラインのメタデータを提供する第4の出力と、を有する。ビクティムキュー542は、トランザクションキュー/スケジューラ541の第2の出力に接続された入力と、「VICTIMS(ビクティム)」とラベル付けされた値を提供するための出力と、を有する。マルチプレクサ543は、トランザクションキュー/スケジューラ540の第1の出力に接続されてCACHE READ REQUESTS(キャッシュ読み出し要求)を受信する第1の入力と、ビクティムキュー542の出力に接続されてVICTIMS(ビクティム)を受信する第2の入力と、マスタポート520の第1の入力に接続されてCACHE REQUESTS(キャッシュ要求)を供給する出力と、を有する。データバッファ544は、第1の入力と、コヒーレントスレーブポート510の第2の出力に接続されてDATA FABRIC WRITE DATA(データファブリック書き込みデータ)を受信する第2の入力と、マルチプレクサ531及び533の第1の入力に接続された第1の出力と、マスタポート520の第2の入力に接続されてCACHE WRITE DATA(キャッシュ書き込みデータ)を提供する第2の出力と、を有する。
【0041】
応答データバッファ545は、マスタポート520の第2の出力に接続されてUMC RESPONSE DATA(UMC応答データ)を受信する入力と、第1の出力と、マルチプレクサ531及び533の第2の入力に接続された第2の出力と、を有する。ORゲート546は、SRAM530の出力に接続された第1の入力と、SRAM532の出力に接続された第2の入力と、データバッファ544の第1の入力に接続された出力と、を有する。マルチプレクサ547は、データバッファ544の第1の出力に接続された第1の入力と、応答データバッファ545の第1の出力に接続された第2の入力と、コヒーレントスレーブポート510の第2の入力に接続されてCACHE RESPONSE DATA(キャッシュ応答データ)を提供する出力と、を有する。応答スケジューラ548は、マスタポート520の第1の出力に接続されてUMC RESPONSE(UMC応答)を受信する第1の入力と、トランザクションキュー/スケジューラ541の第3の出力に接続された第2の入力と、コヒーレントスレーブポート510の第1の入力にCACHE RESPONSE(キャッシュ応答)を提供する出力と、を有する。
【0042】
データ評価回路550は、コヒーレントスレーブポート510の第1の出力に接続された第1の入力と、コヒーレントスレーブポート510の第2の出力に接続された第2の入力と、トランザクションキュー/スケジューラ541の第2の入力に接続された出力と、を有する。
【0043】
キャッシュ500は、データ処理システム200における最終レベルキャッシュ(last-level cache、LLC)及びコヒーレンシポイントであるが、本明細書の原理によれば、キャッシュ500は、キャッシュ階層の別のレベルにあってもよい。それは、セットアソシアティブ包含LLCとして編成され、したがって、ルーティング遅延を容易にするために2つの部分に分離されるキャッシュメモリとしてSRAM530及び532を使用して実装される大きなデータストアを有する。例えば、一実施形態において、キャッシュ500は、4GB(4ギガバイト)のメインメモリを有するシステムにおける4MB(4メガバイト)の16ウェイセットアソシアティブキャッシュであってもよい。したがって、いつでも、キャッシュ500は、メインメモリの内容の1/1000以下を記憶する。
【0044】
データ評価回路550は、コヒーレントスレーブポート510からDATA FABRIC WRITE DATA(データファブリック書き込みデータ)を受信し、応答データバッファ545からUMC RESPONSE DATA(UMC応答データ)を受信し、
図4のフロー400に従ってDATA STATUS(データステータス)及びSFビットを選択的に設定するためにデータの評価を実行する。特に、データ評価回路550は、データ内にマスクされたダブルワードが存在するかどうか、0×0の値を有するダブルワードが存在するかどうか、及び、存在する場合にはその数を判定する。フローがデータ反転マスクレッグに進む場合、データ評価回路550は、連続するダブルワードの各ペアのデータビットの遷移数が転送幅の半分を超えるかどうかを判定し、超える場合、SRAM530及び532によって形成されるキャッシュメモリ内の対応するデータバス反転ビットを設定する。
【0045】
内部に記憶されたデータの選択的データ反転マスキングを実行することによって、キャッシュ500は、バス上の信号の論理状態を切り替えるためにかなりのエネルギーを必要とする大規模で高容量性のバスにわたって連続的に送信されるデータ信号の遷移をより少なくさせる。データは反転されるだけでなく、高速アクセスのために反転された形式で予め記憶される。ZVM、DIM及びSFビットは、キャッシュ500から要求側デバイス又はより高いレベルのキャッシュへのデータ経路の一部又は全部を介して送信されるが、最終的には、要求側デバイスによって読み取られ処理される前に通常のフォーマットに変換される。この技術は、現代の複雑なSOCにおける電力消費を低減し、それによって、バッテリ寿命を延ばし、それらが使用される最終製品のより良好なユーザエクスペリエンスに寄与する。
【0046】
SOC210又はキャッシュ500又はその一部を実装する集積回路は、プログラムによって読み取られ、直接的又は間接的に集積回路を製造するために使用できるデータベース又はその他のデータ構造の形式で、コンピュータがアクセス可能なデータ構造によって記述又は表現され得る。例えば、本データ構造は、ベリログ又はVHDL等の高位設計言語(high-level design language、HDL)におけるハードウェア機能の挙動レベル記述又はレジスタ転送レベル(register-transfer level、RTL)記述であってもよい。記述は、合成ライブラリからゲートのリストを含むネットリストを生成するために記述を合成することができる合成ツールによって読み取ることができる。ネットリストは、集積回路を含むハードウェアの機能も表すゲートのセットを含む。ネットリストは、次に、マスクに適用される幾何学的形状を記述するデータセットを生成するために配置され、ルーティングされてもよい。次に、マスクを、様々な半導体製造工程で使用して、集積回路を製造してもよい。代替的に、コンピュータアクセス可能記憶媒体上のデータベースは、所望の場合、ネットリスト(合成ライブラリの有無にかかわらず)若しくはデータセット、又は、グラフィック・データ・システム(Graphic Data System、GDS)IIデータであってもよい。
【0047】
特定の実施形態を説明してきたが、これらの実施形態に対する様々な修正が当業者には明らかであろう。例えば、キャッシュ500は、LLCであってもよいし、キャッシュ階層において上位の別のキャッシュであってもよい。加えて、選択的データ反転マスク状態は、データワードを特定の論理状態にバイアスするための選択的反転等の他の選択的符号化オプション、及び、サポートされる符号化オプションの他の組み合わせと組み合わせることができる。更に、データビットの数の半分より多くが論理状態を変化させた場合に反転が選択されたが、反転をトリガするデータビットの数は、反転を実行するために必要とされる余分なエネルギーを考慮に入れるためにより多くすることができる。開示された技術は初期キャッシュラインフィル動作に対して実行されたが、データ反転は、キャッシュに割り当てられている間にデータが変更された後に再び評価することができる。
【0048】
したがって、添付の特許請求の範囲は、開示された実施形態の範囲に含まれる開示された実施形態の全ての変更を網羅することを意図している。