(57)【特許請求の範囲】
【請求項１】
データバスと、
前記データバスに通信可能にインターフェースされた低レベルキャッシュと、
前記データバスに通信可能にインターフェースされた高レベルキャッシュと、
前記データバスに通信可能にインターフェースされた１つ以上のデータバッファであって、それぞれ、キャッシュライン全体をバッファリングするバッファメモリ、前記データバッファのそれぞれの状態を示す１つ以上の制御ビット、および前記キャッシュライン全体に対応付けられたアドレスを有する１つ以上のデータバッファと、
１つ以上のデータレスバッファであって、キャッシュライン全体を格納することが不可能であり、前記データレスバッファのそれぞれの状態を示す１つ以上の制御ビット、および前記データレスバッファのそれぞれに対応付けられるキャッシュ間転送ラインのアドレスを有する１つ以上のデータレスバッファと、
前記データバスを介して前記高レベルキャッシュから前記キャッシュ間転送ラインを要求し、前記データバスから前記低レベルキャッシュに前記キャッシュ間転送ラインを書き込むキャッシュ間転送ロジックと
を備える集積回路。
【請求項２】
前記キャッシュ間転送ロジックが前記キャッシュ間転送ラインを要求することは、
前記キャッシュ間転送ロジックが、前記低レベルキャッシュでのキャッシュミスに応答して、前記キャッシュ間転送ラインに前記１つ以上のデータレスバッファのうち１つを割り当てることと、
前記キャッシュ間転送ロジックが、割り当てた前記データレスバッファを迂回して、前記データバスから前記低レベルキャッシュに直接的に前記キャッシュ間転送ラインを方向付けることと
を有する請求項１に記載の集積回路。
【請求項３】
前記キャッシュ間転送ロジックは、前記低レベルキャッシュでの前記キャッシュミスに応答して、前記キャッシュ間転送ラインを要求することをさらに有する請求項２に記載の集積回路。
【請求項４】
前記キャッシュ間転送ロジックが、割り当てた前記データレスバッファを迂回して、前記データバスから前記低レベルキャッシュに直接的に前記キャッシュ間転送ラインを方向付けることは、前記キャッシュ間転送ロジックが、前記キャッシュ間転送ラインを前記低レベルキャッシュに挿入するための置換動作を開始することを含む請求項２または３に記載の集積回路。
【請求項５】
前記置換動作は、前記高レベルキャッシュから前記キャッシュ間転送ラインの要求と同時に開始される請求項４に記載の集積回路。
【請求項６】
前記置換動作は、
前記低レベルキャッシュから追い出されるキャッシュラインを、追い出される前記キャッシュラインが、前記低レベルキャッシュにおいて現在競合が存在しない部分に存在することに少なくとも部分的に基づいて選択することと、
前記キャッシュラインの前記追い出しにより利用可能となった位置に前記キャッシュ間転送ラインを方向付けることと
を含む請求項４または５に記載の集積回路。
【請求項７】
前記キャッシュ間転送ロジックは、さらに、追い出された前記キャッシュラインをバッファリングするべく、複数の前記データバッファのうち１つを割り当て、追い出された前記キャッシュラインを、割り当てた前記データバッファに方向付ける請求項６に記載の集積回路。
【請求項８】
前記低レベルキャッシュは、２つ以上のグループに配置された複数のメモリセルを有し、
前記２つ以上のグループのそれぞれは、前記グループのそれぞれにおける２つの別々のメモリセルに対する同時の書き込み/書き込み動作、読み出し/読み出し動作、もしくは書き込み/読み出し動作を可能にするマルチプレクサー（ｍｕｘ）を介してアクセスされる
請求項１から７のいずれか１項に記載の集積回路。
【請求項９】
前記キャッシュ間転送ロジックが、前記データバスから前記低レベルキャッシュに前記キャッシュ間転送ラインを書き込むことは、前記キャッシュ間転送ロジックが、
前記２つ以上のグループのうち、書き込み動作が可能な１つを識別し、
識別した前記グループを選択し、
選択された前記グループを担当するエージェントに、前記データバスから選択された前記グループに前記キャッシュ間転送ラインを書き込ませる
ことを含む請求項８に記載の集積回路。
【請求項１０】
前記キャッシュ間転送ロジックが、前記データバスから前記低レベルキャッシュに前記キャッシュ間転送ラインを書き込むことは、前記キャッシュ間転送ロジックが、
前記２つ以上のグループの全てで競合を識別し、
前記グループのうち１つに対する書き込み動作をストールし、
ストールされた前記書き込み動作に対応する前記グループを担当するエージェントに、前記データバスから当該グループに前記キャッシュ間転送ラインを書き込ませる
ことを含む請求項８または９に記載の集積回路。
【請求項１１】
前記低レベルキャッシュは、前記集積回路の内部に組み込まれたオンチップレベル１キャッシュ（Ｌ１キャッシュ）であり、
前記高レベルキャッシュは、前記集積回路の内部に組み込まれたオンチップレベル２キャッシュ（Ｌ２キャッシュ）である
請求項１から１０のいずれか１項に記載の集積回路。
【請求項１２】
前記オンチップレベル１キャッシュまたはオンチップレベル２キャッシュは、さらに、オフチップレベル３キャッシュ（Ｌ３キャッシュ）と通信して、前記Ｌ３キャッシュから、前記オンチップレベル１キャッシュおよび前記オンチップレベル２キャッシュの一方に対するキャッシュ間転送を実行する請求項１１に記載の集積回路。
【請求項１３】
前記低レベルキャッシュまたは前記高レベルキャッシュに格納された既存のキャッシュラインについてのキャッシュ更新は、前記１つ以上のデータバッファのうち１つにバッファリングされ、
前記１つ以上のデータバッファを監視するスケジューラーは、前記既存のキャッシュラインに対応する前記低レベルキャッシュまたは前記高レベルキャッシュに対する利用可能な書き込みポートを確保し、前記既存のキャッシュラインを置換するべく、前記低レベルキャッシュまたは前記高レベルキャッシュに前記キャッシュ更新を書き込む
請求項１から１２のいずれか１項に記載の集積回路。
【請求項１４】
前記高レベルキャッシュから返された前記キャッシュ間転送ラインは、キャッシュライン全体と、制御データとを含み、
前記１つ以上のデータレスバッファのうち１つは、前記１つ以上の制御ビットにより前記制御データを記憶し、
前記データレスバッファのそれぞれは、前記制御データとともに返された前記キャッシュライン全体を格納しない
請求項１から１３のいずれか１項に記載の集積回路。
【請求項１５】
タブレットコンピューティング装置およびスマートホンのうち一方用の中央演算処理装置を備える請求項１から１４のいずれか１項に記載の集積回路。
【請求項１６】
表示ユニットと、
集積回路と
を備えるシステムであって、
前記集積回路は、
データバスと、
前記データバスに通信可能にインターフェースされた低レベルキャッシュと、
前記データバスに通信可能にインターフェースされた高レベルキャッシュと、
前記データバスに通信可能にインターフェースされた１つ以上のデータバッファであって、それぞれ、キャッシュライン全体をバッファリングするバッファメモリ、前記データバッファのそれぞれの状態を示す１つ以上の制御ビット、および前記キャッシュライン全体に対応付けられたアドレスを有する１つ以上のデータバッファと、
１つ以上のデータレスバッファであって、キャッシュライン全体を格納することが不可能であり、前記データレスバッファのそれぞれの状態を示す１つ以上の制御ビット、および前記データレスバッファのそれぞれに対応付けられるキャッシュ間転送ラインのアドレスを有する１つ以上のデータレスバッファと、
前記データバスを介して前記高レベルキャッシュから前記キャッシュ間転送ラインを要求し、前記データバスから前記低レベルキャッシュに前記キャッシュ間転送ラインを書き込むキャッシュ間転送ロジックと
を有するシステム。
【請求項１７】
前記システムは、タブレットもしくはスマートホンを実現し、
前記表示ユニットは、前記タブレットもしくは前記スマートホンのタッチスクリーンインターフェースを有し、
前記集積回路は、前記タブレットもしくは前記スマートホンに組み込まれている
請求項１６に記載のシステム。
【請求項１８】
前記キャッシュ間転送ロジックが前記キャッシュ間転送ラインを要求することは、
前記キャッシュ間転送ロジックが、前記低レベルキャッシュでのキャッシュミスに応答して前記キャッシュ間転送ラインに前記１つ以上のデータレスバッファのうち１つを割り当てることと、
前記キャッシュ間転送ロジックが、割り当てた前記データレスバッファを迂回して、前記データバスから前記低レベルキャッシュに直接的に前記キャッシュ間転送ラインを方向付けることと
を有する請求項１６または１７に記載のシステム。
【請求項１９】
前記キャッシュ間転送ロジックが、割り当てた前記データレスバッファを迂回して、前記データバスから前記低レベルキャッシュに直接的に前記キャッシュ間転送ラインを方向付けることは、前記キャッシュ間転送ロジックが、前記低レベルキャッシュに前記キャッシュ間転送ラインを挿入するための置換動作を開始することを含む請求項１８に記載のシステム。
【請求項２０】
前記置換動作は、前記高レベルキャッシュから前記キャッシュ間転送ラインの要求と同時に開始される請求項１９に記載のシステム。
【請求項２１】
前記置換動作は、
前記低レベルキャッシュから追い出されるキャッシュラインを、追い出される前記キャッシュラインが、前記低レベルキャッシュにおいて現在競合が存在しない部分に存在することに少なくとも部分的に基づいて選択することと、
前記キャッシュラインの前記追い出しにより利用可能となった位置に前記キャッシュ間転送ラインを方向付けることと
を含む請求項１９または２０に記載のシステム。
【請求項２２】
データバスを介して低レベルキャッシュに通信可能にインターフェースされた高レベルキャッシュに対応データが存在する前記低レベルキャッシュでのキャッシュミスを受け付ける段階と、
前記低レベルキャッシュでの前記キャッシュミスに応答して前記高レベルキャッシュからキャッシュ間転送ラインを要求する段階と、
前記キャッシュ間転送ラインを格納することが不可能であり、データレスバッファの状態を示す制御ビット、および前記データレスバッファに対応付けられるキャッシュ間転送ラインのアドレスを有する前記データレスバッファを前記キャッシュ間転送ラインに割り当てる段階と、
前記キャッシュ間転送ラインを前記データバス上で受け取り、全キャッシュバッファを迂回して前記データバスから前記低レベルキャッシュに前記キャッシュ間転送ラインを書き込むことにより、前記高レベルキャッシュから前記低レベルキャッシュに前記キャッシュ間転送ラインを転送する段階と
を備える集積回路で用いられる方法。
【請求項２３】
キャッシュ間転送ロジックが、前記キャッシュ間転送ラインを要求し、
前記キャッシュ間転送ロジックは、さらに、前記低レベルキャッシュでの前記キャッシュミスに応答して前記キャッシュ間転送ラインに前記データレスバッファを割り当て、
前記キャッシュ間転送ロジックは、割り当てた前記データレスバッファを迂回して前記データバスから前記低レベルキャッシュに直接的に前記キャッシュ間転送ラインを方向付ける
請求項２２に記載の方法。
【請求項２４】
前記キャッシュ間転送ロジックが、割り当てた前記データレスバッファを迂回して前記データバスから前記低レベルキャッシュに直接的に前記キャッシュ間転送ラインを方向付けることは、前記キャッシュ間転送ロジックが、前記低レベルキャッシュに前記キャッシュ間転送ラインを挿入するための置換動作を開始することを含む請求項２３に記載の方法。
【請求項２５】
前記置換動作は、前記高レベルキャッシュから前記キャッシュ間転送ラインの要求と同時に開始される請求項２４に記載の方法。
【請求項２６】
前記置換動作は、
前記低レベルキャッシュから追い出されるキャッシュラインを、追い出される前記キャッシュラインが、前記低レベルキャッシュにおいて現在競合が存在しない部分に存在することに少なくとも部分的に基づいて選択することと、
前記キャッシュラインの前記追い出しにより利用可能となった位置に前記キャッシュ間転送ラインを方向付けることと
を含む請求項２４または２５に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本明細書に記載される内容は、一般的に、コンピューティング分野に関し、特に、階層的キャッシュ設計においてキャッシュ間で効率的な通信を行うためのシステムおよび方法に関する。
【背景技術】
【０００２】
背景項目において記載される内容は、単に背景項目で言及されるというだけで先行技術と見なされるべきでない。同様に、背景項目で言及される問題、または背景項目の内容に関連する問題は、先行技術においてすでに認識されていたと見なされるべきでない。背景項目の内容は、権利請求される内容の実施形態にそれ自体で対応し得る多様なアプローチを単に示すだけである。
【０００３】
従来の階層的キャッシュ設計では、まず、高レベルキャッシュに対するキャッシュ要求にバッファを割り当て、次に、要求される特定のキャッシュラインに対する要求を当該高レベルキャッシュに発行することが必要とされる。その後、要求されたキャッシュラインが到着すると、先に割り当てたバッファに書き込まれる。高レベルキャッシュに対する要求が終了し、必要な要求属性の全てが、要求されたキャッシュラインを現在含む割り当てバッファに返されると、バッファは置換動作を実行されるべくレディ状態となり、割り当てバッファに現在格納されている要求されたキャッシュラインが、低レベルキャッシュに挿入もしくは置換される。この段階では、要求されたキャッシュラインは、それを要求する低レベルキャッシュにはなく、バッファリングされて、低レベルキャッシュに組み込まれようとしている。
【０００４】
後に、スケジューラーが、要求されたキャッシュラインを含む割り当てバッファを、レディ状態の既存の全バッファから取り出し、要求されたキャッシュラインは、置換（たとえば、別のキャッシュラインの追い出し（ｅｖｉｃｔｉｏｎ））または挿入によって低レベルキャッシュに移される。割り当てバッファは、それ以降は必要とされなくなって割り当てから解放され、この段階では、要求されたキャッシュラインは、低レベルキャッシュ内で、キャッシュラインを必要とするどのような要素（ｅｎｔｉｔｙ）、演算、要求元セッション（ｒｅｑｕｅｓｔｏｒ）にとっても利用可能となる。
【０００５】
要求されたキャッシュラインの低レベルキャッシュへの置換もしくは挿入動作は、それを挿入するべく、非使用の読み出し・書き込みポート（ｆｒｅｅ  ｒｅａｄ  ａｎｄ  ｗｒｉｔｅ  ｐｏｒｔ）を用いなければならないので、必要な読み出し・書き込みポートを解放するべくキャッシュに対するその他全てのストアおよびロード動作がストールされるので、当該要求されたキャッシュラインの低レベルキャッシュへの挿入の進行が可能になる。
【０００６】
したがって、高レベルキャッシュからキャッシュラインを、それを必要とする低レベルキャッシュへと取り込むべく従来実装されているプロトコルには、少なくとも２つの大きな問題がある。第一に、バッファのライフタイムが長いために、このような要求に関するスループットが低くなることである。第二に、読み出し・書き込みポートが容赦なく強制的に奪取されるので、あらゆる場合に必要とされる性能が低下してしまうことである。
【０００７】
したがって、現在の技術水準においては、本明細書に記載されるような、階層的キャッシュ設計においてキャッシュ間で効率的な通信を行うためのシステムおよび方法は有益である。
【図面の簡単な説明】
【０００８】
実施形態は、限定としてではなく例示として示され、図面と関連付けて以下の詳細な記載を参照することでより深く理解されるであろう。
【０００９】
【図１】実施形態が動作する例示的アーキテクチャを示す。
【００１０】
【図２】実施形態が動作する代替的な例示的アーキテクチャを示す。
【００１１】
【図３】実施形態が動作する別の代替的な例示的アーキテクチャを示す。
【００１２】
【図４】実施形態が動作し、インストールされ、集積され、設定されるシステムの図を示す。
【００１３】
【図５】記載される実施形態に従って、階層的キャッシュ設計においてキャッシュ間で効率的な通信を行うための方法を示すフロー図である。
【００１４】
【図６】一実施形態に係るコンピューターシステムのブロック図である。
【００１５】
【図７】一実施形態に係るコンピューターシステムのブロック図である。
【００１６】
【図８】一実施形態に係るコンピューターシステムのブロック図である。
【００１７】
【図９】実施形態に従って記載されるように回路がそれぞれ集積されたタブレットコンピューティング装置およびハンドヘルドスマートホンを示す。
【００１８】
【図１０】タッチスクリーン・インターフェース・コネクターが使用されたタブレットコンピューティング装置、スマートホン、もしくはその他の移動体装置の実施形態のブロック図である。
【００１９】
【図１１】一実施形態に係るＩＰコア開発システムのブロック図である。
【００２０】
【図１２】一実施形態に係るアーキテクチャ・エミュレーションシステムを示す。
【００２１】
【図１３】一実施形態に係る命令変換システムを示す。
【発明を実施するための形態】
【００２２】
［著作権表示］
本特許文書の開示の一部は、著作権保護が与えられた内容を含む。本特許文書もしくは特許開示は、特許商標庁の特許ファイルもしくはレコードに記録されているので、著作権所有者は、本特許文書もしくは特許開示が何者によりファクシミリ複製されようと異議を唱えないが、その他の著作権等のいかなる権利も放棄しない。
【００２３】
本明細書には、階層的キャッシュ設計においてキャッシュ間で効率的な通信を行うためのシステムおよび方法が記載される。たとえば、一実施形態では、このような手段は、データバス、データバスに通信可能にインターフェースされた低レベルキャッシュ、データバスに通信可能にインターフェースされた高レベルキャッシュ、１つ以上のデータバッファ、および１つ以上のデータレスバッファ（ｄａｔａｌｅｓｓ  ｂｕｆｆｅｒ）を備えてよい。このような実施形態のデータバッファは、データバスに通信可能にインターフェースされており、１つ以上のデータバッファのそれぞれが、キャッシュライン全体をバッファリングするバッファメモリと、データバッファの状態を示す１つ以上の制御ビットと、キャッシュライン全体と対応付けられたアドレスとを有する。このような実施形態のデータレスバッファは、キャッシュライン全体をバッファリングすることは不可能であり、データレスバッファの状態示す１つ以上の制御ビットと、データレスバッファに対応付けられたキャッシュ間転送ライン用アドレスを有する。このような実施形態では、キャッシュ間転送ロジックは、データバスを介して高レベルキャッシュからキャッシュ間転送ラインを要求し、データバスから低レベルキャッシュにキャッシュラインを書き込むというものである。
【００２４】
一般的に、ＣＰＵにメモリが近いほど、より高速にメモリはアクセスされる。ＣＰＵ内のメモリはキャッシュと呼ばれ、たとえば、レベル１キャッシュ（Ｌ１キャッシュ）およびレベル２キャッシュ（Ｌ２キャッシュ）のように、異なる階層レベルでアクセスされうる。マザーボードに接続されるメモリモジュールのようなシステムメモリも利用可能であり、たとえば、ＣＰＵから分離されているがＣＰＵがアクセスできる外部で利用可能なメモリは、オフチップキャッシュもしくはレベル３キャッシュ（Ｌ３キャッシュ）等と呼んでよいが、これは必ずしも一貫しない。なぜなら、第３階層レベルのキャッシュ（たとえば、Ｌ３キャッシュ）は、オンチップもしくは「オンダイ」である場合もあり、ＣＰＵにとって内部である場合もあるからである。
【００２５】
Ｌ１キャッシュ等のＣＰＵキャッシュは、メモリにアクセスする平均時間を減らすべくコンピューターの中央演算処理装置により使用される。Ｌ１キャッシュは、最も頻繁に使用されるメインメモリ位置からのデータのコピーを記憶する小容量かつ高速のメモリである。Ｌ２キャッシュは、より大容量であるが、アクセスは遅くなる。追加的なメモリは、オンチップであろうと、キャッシュとして使用される外部利用システムメモリであろうと、さらに大容量であるが、より近いＣＰＵキャッシュレベルに比べてアクセスは遅い。大抵のメモリアクセスがキャッシュメモリ位置に対するものである限り、メモリアクセスの平均待ち時間は、メインメモリの待ち時間よりもキャッシュの待ち時間に近い。
【００２６】
プロセッサーは、メインメモリに対する読み出しもしくは書き込みが必要であるとき、当該データのコピーがキャッシュ（たとえば、Ｌ１およびＬ２キャッシュ等）のうち１つに存在するかをまず確認し、存在するのであれば、システムのメインメモリからデータを探すかわりに、キャッシュに対して読み出しもしくは書き込みを行うので、システムのメインメモリに対して読み出しもしくは書き込みを行う場合よりもより高速に結果が得られる。
【００２７】
従来のメカニズムでは、バッファのライフタイムが長いので、キャッシュのスループットが制限される。置換動作を実施する対象のメカニズムを改良することによりスループットを向上させることができる。たとえば、ＣＰＵのＬ１キャッシュとＬ２キャッシュとの間、またはＣＰＵのＬ２キャッシュと外部アクセスＬ３キャッシュとの間のスループットおよび通信の効率が向上すると、ＣＰＵおよび関連チップセットの全体的な動作効率が改善する。
【００２８】
従来の解決法では、ラインをキャッシュ内に置換するとき、ミスしたキャッシュ（たとえば、このキャッシュには該当データが存在しない）に対するバッファの割り当てが求められ、当該データに対する要求は、高レベルのキャッシュに、たとえば、Ｌ１キャッシュよりはＬ２キャッシュに、もしくはＬ２キャッシュよりはＬ３キャッシュに、というように進む。要求は、高レベルキャッシュに進み、それに応答して、要求されたデータが返され、割り当てられたバッファに格納され、スケジューラーが、現在バッファリングされている取得されたデータに対する置換動作をスケジューリングし、取得されたデータを低レベルキャッシュに挿入する。この置換動作を実行するべく、キャッシュに対するストアおよびロードがストールして読み出し・書き込みポートが解放され、このとき、高レベルキャッシュから取得されたデータが置換動作により低レベルキャッシュに挿入され、必要ならば追い出し（ｅｖｉｃｔｉｏｎ）が実行される。
【００２９】
したがって、このようなキャッシュ間転送を実行するのに必要なバッファのライフタイムもしくはステップ数を少なくすることが望ましく、ステップ数が減ることによって効率が増大する。また、高レベルから低レベルへとデータを移すあらゆるキャッシュ間要求は、必ずストアおよびロードを中断させるので、その他の処理フローおよび動作を中断させることによりシステムの低下が生じる。したがって、キャッシュに対して実行中のストアおよびロードを停止させることなく、このようなデータを移動させるキャッシュ間データ転送を可能にすることが望ましい。
【００３０】
以下の記載では、特定のシステム、言語、要素等についての例など、多くの特定的詳細事項を述べて、多様な実施形態の完全な理解を促す。しかし、本明細書に開示する実施形態を実施するのにこれらの特定的詳細事項を採用する必要はないことは、当業者には明らかであろう。別の例では、開示される実施形態が不必要に曖昧になることを回避するべく、周知の材料もしくは方法については詳細に記載しなかった。
【００３１】
図面に示され、かつ本明細書に記載される多様なハードウェアコンポーネントに加えて、実施形態は、以下に記載される多様な動作をさらに含む。これら実施形態にしたがって記載される動作は、ハードウェアコンポーネントにより実行してよく、もしくは機械実行可能な命令として実施してよく、このような命令は、それらをプログラムされた汎用もしくは特殊目的用プロセッサーにこれら動作を実行させるべく用いられる。または、これら動作は、ハードウェアおよびソフトウェアの組み合わせにより実行してもよい。
【００３２】
実施形態は、本明細書に記載される動作を実行する装置にも関連する。この装置は、要求される目的のために専用に製造されたものでよく、または、コンピューターに格納されたコンピュータープログラムにより選択的にアクティベートもしくは再設定される汎用コンピューターでもよい。このようなコンピュータープログラムは、それぞれコンピューターシステムバスに接続されるフロッピー（登録商標）ディスク、光ディスク、ＣＤ−ＲＯＭ、および磁気光ディスクを含む任意の種類のディスク、読み出し専用メモリ（ＲＯＭ）、ランダムアクセスメモリ（ＲＡＭ）、ＥＰＲＯＭ、ＥＥＰＲＯＭ、磁気もしくは光カード、もしくは、電子的命令を格納するのに適した任意の種類の媒体等（これらに限定されない）のコンピューター読み出し可能記憶媒体に記憶してよい。「接続される」という文言は、直接的な接触状態（物理的、電気的、磁気的、光学的等）にある２つ以上の要素、もしくは、互いに直接的な接触状態にはないが、互いに協働および/またはやり取りする２つ以上の要素を表してよい。
【００３３】
本明細書に提示されるアルゴリズムおよびディスプレイは、いずれか特定のコンピューターもしくはその他の装置に本来的に関連するものではない。本明細書の教示に従って多様な汎用システムをプログラムを用いて使用してよく、または、必要な方法の段階を実行するべくより専用化された装置を構成することが便利であるかもしれない。これら多様なシステムに必要な構成は、以下の記載において明記されて明らかになるであろう。さらに、実施形態は、いずれかの特定的なプログラミング言語に関して記載されるものではない。本明細書に記載されるように、実施形態の教示を実施するべく多様なプログラミング言語を使用してよいことが理解されよう。
【００３４】
開示される実施形態のいずれも、それ自体で、もしくはどのような組み合わせでも互いに一緒に用いてよい。多様な実施形態は、本明細書においていくつか記載もしくは示唆される従来技術および方法の欠点により部分的に動機付けられてはいるが、必ずしもこれらの欠点のいずれかに関して対処法もしくは解決法を示すものでなく、むしろこれら欠点のいくつかだけに対処し、これら欠点のいずれにも対処せず、もしくは、直接には述べられない別の欠点および問題点に関連する場合もある。
【００３５】
図１は、実施形態が動作する例示的なアーキテクチャ１００を示す。記載される実施形態によると、図示されたアーキテクチャ１００によって、階層的キャッシュ設計においてキャッシュ間で効率的な通信が行われる。
【００３６】
効率は、バッファリングされているキャッシュラインをキャッシュに書き込まなければならないスケジューラーによって、書き込みポートが無理やり奪取されるイベントをなくすことにより向上させることができる。キャッシュの書き込みポート奪取をなくす単純な方法は、別のキャッシュ書き込みポートを追加することである。しかし、これは、集積回路上の面積、および集積回路上の電力という観点から非常にコスト高である。
【００３７】
開示される実施形態によると、メモリセルもしくは「ラムセル（ｒａｍ  ｃｅｌｌ）」等の、キャッシュデータのキャッシュラインを記憶するためのセルは、グループ化されてよい。エージェントにより、マルチプレクサー（ｍｕｘ）を介してグループに対して書き込みもしくは読み出しを実行することができる。たとえば、同時の置換もしくは格納動作によって、ｍｕｘを介してセットアソシエイティブキャッシュに、２回目の同時置換もしくは格納動作をサポートする第２の書き込みポートを追加する必要なく、同時に書き込んでよい。
【００３８】
別々のグループに対して同時に書き込み動作を多重化することで、たとえば追加的な書き込みポートを加えることによってハードウェアを増やす必要なく、スループットを高めることが可能になる。グループ数を増やすと、複数グループのラムセルに対する同時の書き込み/書き込み動作、読み出し/読み出し動作、もしくは書き込み/読み出し動作をもっと増やすことができるが、グループ化する毎に、グループ当たりにさらにｍｕｘを導入することが必要である。
【００３９】
図示されるように、アーキテクチャ１００は、ウェイ当たり４個のグループをサポートする。たとえば、ウェイ０  １２０Ａは、低レベルキャッシュもしくはレベル１キャッシュ（Ｌ１キャッシュ）であってよく、ウェイ１  １２０Ｂは、より高レベルのキャッシュもしくはレベル２キャッシュ（Ｌ２キャッシュ）であってよい。
【００４０】
ウェイ０およびウェイ１  １２０Ａ、１２０Ｂのそれぞれは、キャッシュラインを格納する４グループのラムセルを含む。ウェイ０  １２０Ａは、ラムセルのグループ１０５Ａ、１０６Ａ、１０７Ａ、および１０８Ａを含む。同様に、ウェイ１  １２０Ｂは、４個のラムセルグループ１０５Ｂ、１０６Ｂ、１０７Ｂ、および１０８Ｂを含む。ウェイ０およびウェイ１のそれぞれのラムセルグループは、マルチプレクサー、つまりｍｕｘ１３０を介して接続され、ｍｕｘはエージェントにより管理される。エージェント０  １１０Ａおよびエージェント１  １１５Ａは、ウェイ０  １２０Ａに対する入出力動作を管理する。たとえば、２つの同時的な書き込み、更新、挿入、ロード、ストア、もしくは読み出し動作は、図示されるように各グループに接続されたｍｕｘ１３０を介して別々のラムセルグループ１０５Ａ−１０８Ａに書き込むとき、ｍｕｘ１３０を介して２つのエージェント１１０Ａおよび１１５Ａによりサポートされる。
【００４１】
同様に、ウェイ１  １２０Ｂのエージェント０  １１０Ｂ及びエージェント１  １１５Ｂは、図示されるように各ラムセルグループにそれぞれ接続されたｍｕｘ１３０を介して、ウェイ１  １２０Ｂのラムセルグループ１０５Ｂ−１０８Ｂに対する入出力動作をサポートする。
【００４２】
ウェイ０およびウェイ１は、ラムセルグループ１０５Ａ−１０８Ａおよび１０５Ｂ−１０８Ｂのそれぞれに、また別々のウェイ１２０Ａ−Ｂに、別々の書き込みイネーブルを送るミニデコーダー１２５を介して相互接続されているので、たとえば書き込み動作のソースの両方が、別々のラムセルグループおよびウェイに同時に書き込むことができる。たとえば、２つのデータソースは、各セット（ラムセル）のグループの手前で多重化されるので、ソースの両方を別々のセット（ラムセル）のグループに同時に書き込むことができる。
【００４３】
図２は、実施形態が動作する代替的な例示的アーキテクチャ２００を示す。ここでは、２つの例示的キャッシュレベル間の相互通信は、開示される実施形態にしたがって図示される。たとえば、Ｌ１キャッシュ２１０（たとえば、ウェイ０）およびＬ２キャッシュ２１５（たとえば、ウェイ１）が図示されており、データバッファ２３５はアドレス２２０Ａのブロックおよび制御２２５Ａのブロックもしくはビットを有する。特筆すべきであるが、データバッファ２３５は、キャッシュラインの全体を格納することができるデータブロック２３０を含む。データブロック２３０は、データバッファ２３５のなかで最も資源集約的な部分であり、それに比例して、実装される集積回路の電力および面積の両方をより多く必要とする。導入するデータバッファ２３５の数を増やすと、このような集積回路上でより多くの電力および面積を割り当てることが必要となり、この追加的な電力および面積の大半は、各データバッファ２３５のデータブロック２３０部により、キャッシュラインの全体を格納もしくはバッファするべく消費される。
【００４４】
データレスバッファ２３４がさらに図示されている。データレスバッファ２３４も、アドレス２２０Ｂのブロックおよび制御２２５Ｂのブロックもしくはビットを有する。特筆すべきであるが、データレスバッファ２３４は、データバッファ２３５のデータブロック２３０を持たない。データレスバッファ２３４は、データブロック２３０が必要でないので、実装される回路上での面積としてはずっと小さく、さらにそれに比例して、図示のデータバッファ２３５とは対照的に、消費する電力は少ない。しかし、データレスバッファ２３４は、単純に、キャッシュラインの全体を格納することが不可能である。データレスバッファは、キャッシュラインを収容、格納、バッファリング、もしくは保有するためのデータブロック２３０を持たないので、「バッファ」との命名にも拘らず、キャッシュラインをバッファリングすることができない。したがって、データバッファ２３５およびデータレスバッファ２３４のそれぞれは、以下により詳細に記載するように、異なる役割を果たす。
【００４５】
キャッシュからの要求の大半について、データは単一のかたまりで到着し、制御２２５Ａ−Ｂのブロックに格納されるライン状態ビットは、要求されたデータに対応するキャッシュラインについて、排他的状態または共有状態を示す。ライン状態ビットは、高レベルキャッシュから低レベルへのデータの要求動作の完了を示すべく使用される。ライン状態ビットによってキャッシュライン要求の完了が示されていることが認識されると、データ到着に応答して置換動作が開始され、データが到着すると直ちに置換動作が実行され、したがって、データバッファ２３５が迂回され、さらに、データバッファ２３５をスケジューラーによって監視する必要がなくなり、その後にデータバッファ２３５のデータブロック２３０からキャッシュラインを取得して、キャッシュ、たとえばＬ１キャッシュ２１０に移動させるロジックであってよい。または、アドレス２２０Ｂおよび制御２２５Ｂの情報が適切に追跡されるようにデータレスバッファ２３４を割り当てることができるが、高レベルキャッシュ、たとえばＬ２キャッシュ２１５から取得されるキャッシュラインはデータバッファ２３５にバッファリングされないので、データレスバッファ２３４はデータブロック２３０を必要としないかわりに直ちに割り当てから解放され、取得したキャッシュラインがＬ１キャッシュ２１０に方向付けられ、中間のバッファリング動作が回避される。このようなスキームは、より効率的であり、キャッシュラインのキャッシュ間転送のパイプラインライフタイムが短縮される。
【００４６】
したがって、データレスバッファ２３４は、高レベルキャッシュから受け取ったキャッシュラインを低レベルキャッシュに置換させるいずれの要求にも使用される。必要ならば、依然としてデータバッファ２３５を、各キャッシュに直接かつ直ちに書き込むことができないキャッシュラインを受け入れてバッファリングするべく用いてよい。たとえば、要求されたキャッシュラインを特定のアドレスに方向付けなければならず、かつキャッシュとのやり取りが競合する場合には、データブロック２３０を介して各データ格納要素を有するデータバッファ２３５にキャッシュラインを一時的にバッファリングして、バッファリングされたキャッシュラインがキャッシュの適切なアドレス空間に書き込まれるよう、スケジューラーが必要な書き込みポートへのアクセスを確保するべく調整を行えるようにしてよい。
【００４７】
置換動作は特定アドレス向け書き込みよりも柔軟であるので、要求されたキャッシュラインを低レベルキャッシュに書き込む場所についてキャッシュ間転送ロジックは制限されず、したがって、キャッシュの一部、たとえば、競合状態にない低レベルもしくはＬ１キャッシュ２１０内の図１に示すラムセルグループ１０５Ａ−１０８Ａのうち１つが、取得したキャッシュラインを受け取り次第キャッシュに挿入するべく選択され得る。
【００４８】
したがって、一実施形態によると、特定アドレス向け書き込み動作２４１は、キャッシュラインを格納するのに十分なデータブロック２３０要素を有するデータバッファ２３５に提示され、置換動作２４２は、キャッシュラインをバッファリングする機能は必要ないので、データブロック２３０要素を持たないデータレスバッファ２３４に提示される。要求２４３がＬ２キャッシュ２１５に送信される様子が示されており、その後、Ｌ２キャッシュ２１５からＬ１キャッシュ２１０に通信されるキャッシュ間転送ライン２４４に示されるように、Ｌ１キャッシュ２１０へと直接にデータ、状態、および到着完了の置換が処理される。
【００４９】
図３は、実施形態が動作する別の代替的な例示的アーキテクチャ３００を示す。たとえば、一実施形態にしたがって集積回路３０１が図示されており、集積回路は、データバス３１５、データバス３１５に通信可能にインターフェースされた低レベルキャッシュ３０５、データバス３１５に通信可能にインターフェースされた高レベルキャッシュ３１０、データバス３１５に通信可能にインターフェースされた１つ以上のデータバッファ２３５、データバス３１５に通信可能にインターフェースされた１つ以上のデータレスバッファ２３４、およびキャッシュ間転送ロジック３２５を備える。さらに、アドレス２２０Ａおよび制御２２５Ａ並びにキャッシュラインを格納するためのデータブロック２３０要素を含むデータバッファ２３５のサブ要素と、アドレス２２０Ｂおよび制御２２５Ｂを含むデータレスバッファ２３４のサブ要素とが示されているが、特筆すべきことに、データレスバッファ２３４は、キャッシュラインを格納するためのデータブロック２３０要素を有さない。最後に、キャッシュ間転送ライン２４４は、高レベルキャッシュ３１０から低レベルキャッシュ３０５へと転送されるように示されている。
【００５０】
一実施形態によると、１つ以上のデータバッファ２３５のそれぞれは、キャッシュライン全体をバッファリングするためのバッファメモリ（データブロック２３０）と、データバッファ２３５の状態を示す１つ以上の制御２２５Ａビットと、キャッシュライン全体に対応付けられたアドレス２２０Ａとを有する。
【００５１】
一実施形態では、１つ以上のデータレスバッファ２３４のそれぞれは、キャッシュライン全体を格納することが不可能である。データレスバッファ２３４は、データレスバッファ２３４の状態を示す１つ以上の制御２２５Ｂビットと、データレスバッファ２３４に対応するキャッシュ間転送ライン２４４のアドレス２２０Ｂとを有する。追加的なデータフロック２３０要素（たとえば、バッファメモリ）を有するデータバッファ２３５とは対照的に、各データレスバッファ２３４に制御２２５Ｂおよびアドレス２２０Ｂだけを備えることで、このようなデータブロック２３０要素を有するデータバッファ２３５をさらに集積回路３０１に組み込んだ場合に必要とされる集積回路３０１の実質的な電力および面積を割り当てる必要なく、バッファの数を大幅に増やすことができる。キャッシュ間転送ライン２４４を待ち行列に入れたりバッファリングしたりする必要がないのは、転送の実行が、データを要求し、要求されたキャッシュ間転送ライン２４４をデータバス３１５からバッファもしくは待ち行列ではなく、直接に低レベルキャッシュ３０５に方向付けることによるオンザフライによるからであり、したがって、キャッシュ間転送ライン２４４のデータ到着時に低レベルキャッシュ３０５にライトバックされる。キャッシュ間転送機能を支持するべくデータレスバッファ２３４を割り当ててもよいが、データレスバッファ２３４に必要な制御２２５Ｂおよびアドレス２２０Ｂのリソースコストが、キャッシュ間転送の一環としてキャッシュ間転送ライン２４４をバッファリングすることが可能なデータバッファ２３５に比べて小さい。
【００５２】
一実施形態では、キャッシュ間転送ロジック３２５は、データバス３１５を介して高レベルキャッシュ３１０からキャッシュ間転送ライン２４４を要求し、キャッシュ間転送ロジック３２５は、さらに、データバス３１５から低レベルキャッシュ３０５にキャッシュ間転送ライン２４４を書き込む。
【００５３】
一実施形態では、キャッシュ間転送の要求には、（１）低レベルキャッシュ３０５でのキャッシュミスに反応して、キャッシュ間転送ロジック３２５が１つ以上のデータレスバッファ２３４のうちの１つをキャッシュ間転送ライン２４４に割り当てること、（２）キャッシュ間転送ロジック３２５が、割り当てられたデータレスバッファを迂回して、データバス３１５からキャッシュ間転送ライン２４４を直接に低レベルキャッシュ３０５に方向付けること、が含まれる。たとえば、キャッシュ間転送ライン２４４は、要求に応答してデータバス３１５に載せられ、その後は、キャッシュ間転送ライン２４４はバッファメモリに方向付けられるのではなく、かわりにキャッシュ間転送ライン２４４は、データバス３１５から低レベルキャッシュ３０５に直接に送信される。
【００５４】
一実施形態では、キャッシュ間転送ロジック３２５は、低レベルキャッシュ３０５でのキャッシュミスに反応してキャッシュ間転送ライン２４４を要求する。たとえば、このようなキャッシュミスによって、要求されるキャッシュラインを調達可能な高レベルキャッシュ、たとえば、図示されるＬ２キャッシュ３１０、もしくは、集積回路３０１に対してオンチップであるかオフチップであるかに拘わらずより高レベルな、たとえばＬ３キャッシュにおいて、キャッシュ間転送機能がトリガーされて機能する。一実施形態では、低レベルキャッシュ３０５は、集積回路３０１に組み込まれたオンチップレベル１キャッシュ（Ｌ１キャッシュ）であり、高レベルキャッシュ３１０は集積回路３０１に組み込まれたオンチップレベル２キャッシュ（Ｌ２キャッシュ）である。代替的な実施形態では、オンチップレベル１キャッシュまたはオンチップレベル２キャッシュは、さらにオフチップレベル３キャッシュ（Ｌ３キャッシュ）と通信してＬ３キャッシュからオンチップレベル１キャッシュまたはオンチップレベル２キャッシュにキャッシュ間転送を実行する。
【００５５】
一実施形態によると、キャッシュ間転送ライン２４４を低レベルキャッシュ３０５に直接に方向付ける動作には、キャッシュ間転送ロジック３２５が置換動作を開始してキャッシュ間転送ライン２４４を低レベルキャッシュ３０５挿入することがさらに含まれる。一実施形態では、置換動作は、高レベルキャッシュ３１０からのキャッシュ間転送ライン２４４を要求することと同時に開始される。キャッシュ間転送機能のライフタイムを従来から入手可能であったメカニズムに比べて短縮するべく、特定の機能的動作をなくすことが望ましい。これらの動作の１つは、上記の通り、バッファリングである。効率を改善するべくなくしてよいその他の動作は、要求したキャッシュ間転送ライン２４４の受領とその後の置換動作のスケジューリングとの間に発生する待ち時間である。開示する実施形態によると、置換動作は、キャッシュ間転送ライン２４４に対する要求の開始と同時にトリガーされるので、従来の技術の問題点であったタイミングのずれが減る。キャッシュ間転送ライン２４４の要求と同時に置換動作をトリガーすることにより、置換動作は、返されたキャッシュ間転送ライン２４４がデータバス３１５に載せられるとそれを取得し、かつ単純に低レベルキャッシュ３１０に方向付けるので、この両方によってキャッシュ間転送機能パイプラインの全体的なライフタイムが短縮し、さらに、バッファリング段階もしくは動作の必要が無くなる。このような技術を用いると、キャッシュ間転送ライン２４４がバッファメモリに置かれることがないので、バッファメモリを監視するスケジューラーでさえ必要なくなる。しかし、実際には、キャッシュ間転送機能の全てにとって、バッファレス動作が可能であるわけではない。たとえば、対象キャッシュにおける競合によって、その特殊な場合に対処するべくバッファリングもしくは余分な時間が必要となる場合には、相変わらずバッファリングを用いてよく、バッファリングされたキャッシュラインをバッファメモリ（たとえば、データバッファ２３５のデータブロック２３０）から対象キャッシュに転送する必要とされる作業をスケジューラーによって監視し、かつその後に実行してよい。
【００５６】
一実施形態では、置換作業には、低レベルキャッシュ３０５から追い出される（ｅｖｉｃｔｉｏｎ）キャッシュラインを、追い出されるキャッシュラインが、低レベルキャッシュ３０５の、現在競合が存在しない箇所に存在することに少なくとも部分的に基づいて、選択することと、キャッシュラインの追い出しにより利用可能になった位置にキャッシュ間転送ライン２４４を方向付けることが含まれる。このような置換作業では、キャッシュ間転送ライン２４４に対応付けられたデータレスバッファ２３４のアドレス２２０Ｂを用いてよい。さらに、たとえば低レベルキャッシュ３０５等の対象キャッシュ内の目標とする宛て先に対するマッピングを、対応するアドレス２２０Ｂを使用して提供してよい。キャッシュ間転送ロジック３２５は、対象キャッシュの目標とする部分に競合が存在するかを判定してよい。たとえば、以前に、ラムセルグループ１０５Ａ−１０８Ａについて記載した。それらのうちいくつかは、入出力動作に利用不可能であり、その他は利用可能である場合がある。キャッシュ間転送ロジック３２５は、競合が存在する場所、しない場所を判定し、読み出し/書き込みポートを確保し（たとえば、エージェント１１０Ａおよび１１５Ａの一方を介して）、キャッシュラインを追い出し、要求され取得されたキャッシュ間転送ライン２４４をキャッシュラインの追い出しにより解放された位置に格納させる。このような競合の判定は、基準、リアルタイムの監視、アドレス範囲等に基づいて行ってよい。一実施形態では、キャッシュ間転送ロジック３２５は、追い出し基準（たとえば、ダーティビットを除去する、同期化（ｓｙｎｃｉｎｇ）等）に基づいて、追い出されたキャッシュラインをバッファリングするべく複数のデータバッファ２３５のうち１つを割り当て、最終的処遇として、追い出されたキャッシュラインを割り当てたデータバッファに方向付ける。
【００５７】
一実施形態では、低レベルキャッシュ３０５は、２つ以上のグループに配置された複数のメモリセルを含み、２つ以上のグループのそれぞれは、各グループ内の２つの別々のメモリセルに対する同時の書き込み/書き込み、読み出し/読み出し、もしくは書き込み/読み出し動作を可能にするマルチプレクサー（ｍｕｘ）を介してアクセスされる。たとえば、メモリセル（たとえば、ラムセル等）は、８個、１６個、もしくは６４個等のグループに分割してよい。グループ分けの数が大きすぎると、競合が増える。グループ分けの数が小さすぎると、オーバーヘッドが増え、要求されるｍｕｘのためにハードウェア要件が追加される。したがって、所定の回路実施環境における適切なグループ分けの数をモデル化するべくなんらかの分析を行うことが適切である。グループ分けが行われると、書き込み/書き込み、読み出し/読み出し、もしくは読み出し/書き込み動作は、両動作が２つの別々のグループを対象としている限り、ｍｕｘ（および、必要ならばエージェント）を介してメモリセルに方向付けることができる。たとえば、２つの置換動作、２つのロード動作、２つのストア動作等は、単一グループ内のメモリセルを対象としていない限り、実行可能である。
【００５８】
一実施形態では、データバス３１５から低レベルキャッシュ３０５にキャッシュ間転送ライン２４４を書き込むキャッシュ間転送ロジック３２５は、キャッシュ間転送ライン３２５が、（１）２つ以上のグループのうち書き込み動作が可能な１つを識別すること、（２）識別したグループを選択すること、および（３）選択したグループを担当するエージェントに、キャッシュ間転送ライン２４４をデータバス３１５から選択したグループに書き込ませること、を含む。したがって、競合の判定では、利用可能なグループを識別し、それに応答して、置換動作を実行するべく当該グループを選択してよい。
【００５９】
代替的な実施形態では、データバス３１５から低レベルキャッシュ３０５にキャッシュ間転送ライン２４４を書き込むキャッシュ間転送ロジック３２５は、キャッシュ間転送ライン３２５が、（１）２つ以上のグループの全てにおいて競合を識別し、（２）これらのグループのうち１つに対する書き込み動作をストールさせ、（２）ストールされた書き込み動作に対応するグループを担当するエージェントに、キャッシュ間転送ライン２４４をデータバス３１５から当該グループに書き込ませること、を含む。
【００６０】
書き込み動作のストールは、読み出し/書き込みポートの強制的な奪取とも言い表すことができる。選択された位置、たとえば、対象低レベルキャッシュ３０５内のグループの中のメモリセル、に対して読み出し/書き込みポートを利用可能にすることが必要であり、バッファレスキャッシュ間転送モードで操作するべく、選択された位置は、レディ状態となって、キャッシュ間転送ライン２４４を高レベルキャッシュ３１０から受領次第、受け取れるよう待機状態となる。高レベルキャッシュからデータが到着すると、直ちにライトバック可能なように待機している位置が存在していなければならず、したがって、必要ならば、到着に備えて、ロードポートもしくは読み出し/書き込みポートをストールさせる。いくつかの実施形態によると、ストールが発生する場合があるが、このようなストールは、キャッシュ間転送ライン２４４の要求と同時にトリガーされて単一サイクルに組み合わされるので、要求、バッファ、スケジュール、ストール、およびバッファリングされたデータの移動を実行し、同じ結果に到達するのに１サイクルより多くが必要な従来のメカニズムに比べると、時間的にずっと短い。
【００６１】
一実施形態では、低レベルキャッシュ３０５または高レベルキャッシュ３１０に格納された既存のキャッシュラインについてのキャッシュ更新は、１つ以上のデータバッファ２３５のうちの１つにバッファリングされ、１つ以上のデータバッファ２３５を監視するスケジューラーは、当該既存のキャッシュラインに対応する低レベルキャッシュ３０５または高レベルキャッシュ３１０に対して利用可能な書き込みポートを確保し、キャッシュ更新を低レベルキャッシュ３０５または高レベルキャッシュ３１０に書き込み、既存のキャッシュラインを置換する。
【００６２】
一実施形態では、高レベルキャッシュ３１０から返されたキャッシュ間転送ライン２４４は、キャッシュライン全体と制御データとを含む。このような実施形態では、データレスバッファ２３４は、制御データを、１つ以上の制御２２５Ｂビットにより記憶する。一実施形態では、各データレスバッファは、制御データと一緒に帰されたキャッシュライン全体を格納しない。
【００６３】
一実施形態では、集積回路３０１は、タブレットコンピューティング装置またはスマートホンのいずれか一方の中央演算処理装置を含む。
【００６４】
図４は、実施形態が動作し、インストールされ、集積され、もしくは設定されるシステム４９９の図を示す。
【００６５】
一実施形態では、システム４９９は、メモリ４９５、および１つもしくは複数のプロセッサー４９６を備える。たとえば、メモリ４９５は、実行すべき命令を格納してよく、１つもしくは複数のプロセッサー４９６は、この命令を実行してよい。システム４９９は、１つもしくは複数の通信バス４６５を備え、システム４９９内で１つもしくは複数の通信バス４６５および/または１つもしくは複数のインターフェース４７５に通信可能にインターフェースされた複数の周辺装置４７０間でトランザクション、命令、要求、およびデータを転送する。システム４９９内には表示ユニット４８０がさらに示されている。
【００６６】
システム４９９内で注目すべきは、集積回路３０１であり、これは規格が適合するシステム４９９に組み込まれて構成されてよく、または、別個に製造および提供されてシステム４９９の適切なコンポーネントと連動して動作してよい。
【００６７】
一実施形態によると、システム４９９は、少なくとも表示ユニット４８０と、集積回路３０１とを備える。集積回路３０１は、たとえば、システム４９９のプロセッサーもしくは別のコンピューティング要素として動作してよい。このような実施形態では、システム４９９の集積回路３０１は、少なくとも、データバス、データバスに通信可能にインターフェースされた低レベルキャッシュ、データバスに通信可能にインターフェースされた高レベルキャッシュ、およびデータバスに通信可能にインターフェースされた１つ以上のデータバッファを有し、１つ以上のデータバッファのそれぞれは、キャッシュライン全体をバッファリングするためのバッファメモリと、データバッファの状態を示す１つ以上の制御ビットと、キャッシュライン全体に対応するアドレスとを有する。このような実施形態では、システム４９９の集積回路３０１は、キャッシュライン全体を格納することが不可能な１つ以上のデータレスバッファをさらに有し、データレスバッファは、自身の状態を示す１つ以上の制御ビットと、自身に対応するキャッシュ間転送ラインのアドレスとを有する。システム４９９の集積回路３０１は、データバスを介して高レベルキャッシュからキャッシュ間転送ラインを要求し、データバスから低レベルキャッシュにキャッシュ間転送ラインを書き込むキャッシュ間転送ロジックをさらに有する。
【００６８】
一実施形態では、システム４９９はタブレットもしくはスマートホンを実現しており、表示ユニット４８０は、タブレットもしくはスマートホンのタッチスクリーンインターフェースである。このような実施形態では、集積回路３０１は、たとえば、タブレットもしくはスマートホンのプロセッサーもしくはその他のコンピューティング要素としてタブレットもしくはスマートホンに組み込まれている。
【００６９】
図５は、記載する実施形態に係る、階層的キャッシュ設計においてキャッシュ間で効率的な通信を行うための方法を示すフロー図である。方法５００は、ハードウェア（たとえば、回路、専用ロジック、プログラマブルロジック、マイクロコード等）が組み込まれてよい処理ロジックによって実行されてよい。示されるブロックの番号割り振りは、明確性を期すべく提示されており、これらのブロックが登場すべき動作順序を規定することは意図されていない。
【００７０】
方法５００は、低レベルキャッシュにおけるキャッシュミスを受け付ける処理ロジックにより開始され（ブロック５０５）、当該キャッシュミスに対応するデータは、低レベルキャッシュにデータバスを介して通信可能にインターフェースされた高レベルキャッシュに存在する。
【００７１】
ブロック５１０で、処理ロジックは、低レベルキャッシュでのキャッシュミスに応答して、高レベルキャッシュからキャッシュ間転送ラインを要求する。
【００７２】
ブロック５１５で、処理ロジックは、キャッシュ間転送ラインにデータレスバッファを割り当てる。
【００７３】
ブロック５２０で、処理ロジックは、キャッシュ間転送ラインを低レベルキャッシュに挿入する置換動作を開始する。
【００７４】
ブロック５２５で、処理ロジックは、低レベルキャッシュから追い出すキャッシュラインを、低レベルキャッシュにおいて現在競合が存在していない部分に追い出すキャッシュラインが存在することに少なくとも部分的に基づいて、選択する。
【００７５】
ブロック５３０で、処理ロジックは、キャッシュラインの追い出しにより利用可能になった位置に、キャッシュ間転送ラインを方向付ける。
【００７６】
ブロック５３５で、処理ロジックは、データバス上でキャッシュ間転送ラインを受け取り、データバスから低レベルキャッシュにキャッシュ間転送ラインを書き込むことで、全てのキャッシュバッファを迂回することにより、キャッシュ間転送ラインを高レベルキャッシュから低レベルキャッシュに転送する。
【００７７】
図６を参照すると、本発明の一実施形態に係るシステム６００のブロック図が示されている。システム６００は、グラフィックスメモリコントローラーハブ（ＧＭＣＨ）６２０に接続された１つ以上のプロセッサー６１０および６１５を備えてよい。図６において破線により追加的プロセッサー６１５の任意性が示されている。
【００７８】
各プロセッサー６１０および６１５は、上記の回路、集積回路、プロセッサー、および/またはシリコン集積回路のなんらかのバージョンであってよい。しかし、集積グラフィックスロジックおよび集積メモリ制御ユニットがプロセッサー６１０および６１５に設けられている可能性はないことに注意するべきである。図６は、ＧＭＣＨ６２０が、たとえばダイナミックランダムアクセスメモリ（ＤＲＡＭ）であってよいメモリ６４０に接続されていることを示す。ＤＲＡＭは、少なくとも１つの実施形態では、不揮発性キャッシュに対応付けられている。
【００７９】
ＧＭＣＨ６２０は、チップセット、もしくはチップセットの一部であってよい。ＧＭＣＨ６２０は、プロセッサー６１０および６１５と通信し、プロセッサー６１０および６１５とメモリ６４０とのやり取りを制御する。ＧＭＣＨ６２０は、プロセッサー６１０および６１５と、システム６００のその他の要素との間の高速バスインターフェース（ａｃｃｅｌｅｒａｔｅｄ  ｂｕｓ  ｉｎｔｅｒｆａｃｅ）として機能してもよい。少なくとも１つの実施形態では、ＧＭＣＨ６２０は、たとえばフロントサイドバス（ＦＳＢ）６９５等のマルチドロップバスを介してプロセッサー６１０および６１５と通信する。
【００８０】
さらに、ＧＭＣＨ６２０は、ディスプレイ６４５（たとえば、フラットパネルディスプレイまたはタッチスクリーンディスプレイ）に接続されている。ＧＭＣＨ６２０は、集積グラフィックスアクセラレーターを含んでよい。ＧＭＣＨ６２０は、多様な周辺装置をシステム６００に接続するべく用いられる入出力（Ｉ/Ｏ）コントローラーハブ（ＩＣＨ）６５０にさらに接続されている。図６の実施形態で例として示されているのは、ＩＣＨ６５０に接続された別個のグラフィックス装置であってよい外部グラフィックス装置６６０と、別の周辺装置６７０とである。
【００８１】
または、システム６００には、追加的な、または別の、プロセッサーが存在してもよい。たとえば、追加的プロセッサー６１５は、プロセッサー６１０と同種である１つ以上の追加的プロセッサー、プロセッサー６１０とは異種もしくは非対称の１つ以上の追加的プロセッサー、アクセラレーター（たとえば、グラフィックスアクセラレーター、デジタル信号処理（ＤＳＰ）ユニット等）、フィールドプログラマブルゲートアレイ、またはその他の任意のプロセッサーを含んでよい。プロセッサー６１０と６１５との間には、アーキテクチャ、マイクロアーキテクチャ、熱特性、電力消費特性等の様々な計量項目において多様な相違がある。これらの相違は、プロセッサー６１０と６１５との間で、非対称性および異種性として効果的に現れるであろう。少なくとも１つの実施形態では、これらの多様なプロセッサー６１０および６１５は、同一のダイパッケージに存在してよい。
【００８２】
図７を参照すると、本発明の実施形態に係る第２のシステム７００のブロック図が示されている。図７に示すように、マルチプロセッサーシステム７００は、ポイントツーポイント相互接続システム（ｐｏｉｎｔ−ｔｏ−ｐｏｉｎｔ  ｉｎｔｅｒｃｏｎｎｅｃｔ  ｓｙｓｔｅｍ）であり、第１のプロセッサー７７０と、ポイントツーポイントインターフェース７５０を介して接続された第２のプロセッサー７８０とを備える。各プロセッサー７７０および７８０は、上記したプロセッサーもしくは集積回路のなんらかのバージョンであってよく、または、プロセッサー６１０および６１５のうちの１つ以上であってよい。
【００８３】
２つのプロセッサー７７０および７８０だけが示されているが、本発明の範囲は限定されないことは理解されるべきである。別の実施形態では、所定のプロセッサーにおいて１つ以上の追加的プロセッサーが存在してもよい。
【００８４】
プロセッサー７７０および７８０は、それぞれ、集積メモリコントローラーユニット７７２および７８２を含んで図示されている。プロセッサー７７０は、バスコントローラーユニットの一部としてポイントツーポイント（Ｐ−Ｐ）インターフェース７７６および７７８を含み、同様に第２のプロセッサー７８０は、Ｐ−Ｐインターフェース７８６および７８８を含む。プロセッサー７７０および７８０は、Ｐ−Ｐインターフェース７７８および７８８を使用するポイントツーポイント（Ｐ−Ｐ）インターフェース７５０を介して情報交換してよい。図７に示すように、ＩＭＣ７７２および７８２は、プロセッサーをそれぞれのメモリ、つまり、メモリ７３２およびメモリ７３４に接続し、これらのメモリは、それぞれのプロセッサーに対してローカルに取り付けられたメインメモリの一部であってよい。
【００８５】
プロセッサー７７０および７８０は、ポイントツーポイントインターフェース回路７７６、７９４、７８６、および７９８を使用するそれぞれのＰ−Ｐインターフェース７５２および７５４を介してチップセット７９０と情報交換してよい。チップセット７９０は、高性能グラフィックスインターフェース７３９を介して高性能グラフィックス回路７３８とも情報交換してよい。
【００８６】
共有キャッシュ（不図示）を、プロセッサー内に設けて、または両プロセッサー外にＰ−Ｐ相互接続を介して両プロセッサーに接続されるように設けて、プロセッサーが低電力モードに設定されたときに、プロセッサーのいずれか又は両方のローカルなキャッシュ情報が当該共有キャッシュ格納されるようにしてよい。
【００８７】
チップセット７９０を、インターフェース７９６を介して第１のバス７１６と接続してよい。一実施形態では、第１のバス７１６は、ペリフェラルコンポーネントインターコネクト（ＰＣＩ）バス、またはＰＣＩエクスプレスもしくはその他の第３世代Ｉ/Ｏインターコネクトバスであってよいが、本発明の範囲は限定されない。
【００８８】
図７に示すように、第１のバス７１６には、第１のバス７１６を第２のバス７２０に接続するバスブリッジ７１８とともに多様なＩ/Ｏ装置７１４を接続してよい。一実施形態では、第２のバス７２０は、低ピンカウント（ＬＰＣ）バスであってよい。たとえば、キーボードおよび/またはマウス７２２、通信装置７２７、および、一実施形態では命令/コードおよびデータ７３０を含むディスクドライブまたはその他の大容量記憶装置等の記憶ユニット７２８等の多様な装置を第２のバス７２０に接続してよい。さらに、オーディオＩ/Ｏ７２４を第２のバス７２０に接続してよい。その他のアーキテクチャも可能であることに注意されたい。たとえば、図７のポイントツーポイントアーキテクチャのかわりに、システムは、マルチドロップバスもしくはその他のアーキテクチャを実装してよい。
【００８９】
図８を参照すると、本発明の実施形態に係るシステム８００のブロック図が示されている。図８では、プロセッサー８７０および８８０が、集積メモリ並びにＩ/Ｏ制御ロジック（「ＣＬ」）８７２および８８２をそれぞれ含み、ポイントツーポイント（Ｐ−Ｐ）インターフェース８７８と８８８との間のポイントツーポイント相互接続８５０を介して互いに通信することを示す。プロセッサー８７０および８８０は、図示するように、それぞれＰ−Ｐインターフェース８７６−８９４間および８８６−８９８間のポイントツーポイント相互接続８５２および８５４を介してチップセット８９０とそれぞれ通信する。少なくとも１つの実施形態では、ＣＬ８７２および８８２は、集積メモリコントローラーユニットを含んでよい。ＣＬ８７２および８８２は、Ｉ/Ｏ制御ロジックを含んでよい。図示するように、メモリ８３２および８３４がＣＬ８７２および８８２に接続されており、Ｉ/Ｏ装置８１４も制御ロジック８７２および８８２に接続されている。レガシーＩ/Ｏ装置８１５がインターフェース８９６を介してチップセット８９０に接続されている。
【００９０】
図９は、本実施形態にしたがって記載されたようにそれぞれ回路を集積したタブレットコンピューティング装置９０１およびハンドヘルドスマートホン９０２を示す。図示するように、タブレットコンピューティング装置９０１およびハンドヘルドスマートホン９０２のそれぞれは、開示された実施形態に係るタッチスクリーンインターフェース９０３および集積プロセッサー９０４を備える。
【００９１】
たとえば、一実施形態では、システムは、タブレットコンピューティング装置９０１またはハンドへルドスマートホン９０２を実現しており、システムの表示ユニットは、タブレットもしくはスマートホンのタッチスクリーンインターフェース９０３を有し、メモリと、集積プロセッサーとして動作する集積回路とがタブレットもしくはスマートホンに組み込まれており、集積プロセッサーは、階層的キャッシュ設計においてキャッシュ間で効率的な通信を行うべく本明細書に記載された実施形態の１つ以上を実施する。一実施形態では、タブレットもしくはスマートホンの上記の集積回路もしくは図示の集積プロセッサーは、タブレットコンピューティング装置もしくはスマートホンの中央演算処理装置として機能する集積シリコンプロセッサーである。
【００９２】
図１０は、内部でタッチスクリーンインターフェースコネクターが使用されているタブレットコンピューティング装置、スマートホン、もしくはその他の移動体装置の実施形態のブロック図１０００である。プロセッサー１０１０は、一次処理動作を実行する。オーディオシステム１０２０は、コンピューティング装置に対するオーディオ機能の提供に関連するハードウェア（たとえば、オーディオハードウェアおよびオーディオ回路）およびソフトウェア（たとえば、ドライバー、コーデック等）要素を表す。一実施形態では、ユーザーは、プロセッサー１０１０により受信され処理されるオーディオコマンドを与えることによりタブレットコンピューティング装置もしくはスマートホンとやり取りする。
【００９３】
表示サブシステム１０３０は、ユーザーがタブレットコンピューティング装置もしくはスマートホンとやり取りするための視覚的および/または触覚的な表示を提供するハードウェア（たとえば、表示装置）およびソフトウェア（たとえば、ドライバー）要素を表す。表示サブシステム１０３０は、ユーザーに表示を与えるべく使用される特定のスクリーンもしくはハードウェア装置を含む表示インターフェース１０３２を有する。一実施形態では、表示サブシステム１０３０は、ユーザーに対して出力および入力の両方を提供するタッチスクリーンを有する。
【００９４】
Ｉ/Ｏコントローラー１０４０は、ユーザーとのやり取りに関連するハードウェア装置およびソフトウェア要素を表す。Ｉ/Ｏコントローラー１０４０は、オーディオサブシステム１０２０および/または表示サブシステム１０３０の一部のハードウェアを管理するべく動作することができる。さらに、Ｉ/Ｏコントローラー１０４０は、タブレットコンピューティング装置もしくはスマートホンに接続され、それを使用することでユーザーがやり取りできる追加的装置用の接続ポイントを図示する。一実施形態では、Ｉ/Ｏコントローラー１０４０は、タブレットコンピューティング装置もしくはスマートホンに含めることができる加速度計、カメラ、光センサー、もしくはその他の環境センサー、またはその他のハードウェア等の装置を管理する。入力は、直接的なユーザーインターフェースの一部であってよく、また、タブレットコンピューティング装置もしくはスマートホンに環境的な入力を与えるものであってもよい。
【００９５】
一実施形態では、タブレットコンピューティング装置もしくはスマートホンは、バッテリー電力の利用、バッテリーの充電、および、節電動作に関連する特性を管理する電力管理１０５０を備える。メモリサブシステム１０６０は、タブレットコンピューティング装置もしくはスマートホンに情報を記憶するためのメモリ装置を有する。接続性１０７０は、外部装置と通信するべく、タブレットコンピューティング装置もしくはスマートホンに、ハードウェア装置（たとえば、無線および/または有線のコネクターおよび通信ハードウェア）およびソフトウェア要素（たとえば、ドライバー、プロトコルスタック等）を与える。セルラー接続性（ｃｅｌｌｕｌａｒ  ｃｏｎｎｅｃｔｉｖｉｔｙ）１０７２は、たとえば、ＧＳＭ（登録商標）（グローバル・システム・フォー・モバイル・コミュニケーションズ）、ＣＤＭＡ（符号分割多重アクセス）、ＴＤＭ（時分割多重化）、またはその他のセルラーサービス規格等の無線キャリアを含んでよい。無線接続性１０７４は、たとえば、セルラーでない活動、たとえば、パーソナルエリアネットワーク（たとえば、ブルートゥース）、ローカルエリアネットワーク（たとえば、ワイファイ）、および/またはワイドエリアネットワーク（たとえば、ワイマックス）、またはその他の無線通信等を含んでよい。
【００９６】
周辺接続１０８０は、その他のコンピューティング装置に周辺装置（「ｔｏ」１０８２）として周辺接続を行うための、また周辺装置（「ｆｒｏｍ」１０８４）をタブレットコンピューティング装置もしくはスマートホンに接続するためのハードウェアインターフェースおよびコネクターを含み、これらとしては、たとえばその他のコンピューティング装置に接続するための「ドッキング」コネクターが挙げられる。周辺接続１０８０は、たとえば、ユニバーサルシリアルバス（ＵＳＢ）コネクター、ミニディスプレイポート（ＭＤＰ）を含むディスプレイポート、高解像度マルチメディアインターフェース（ＨＤＭＩ（登録商標））、ファイヤーワイヤー等の共通のコネクター、もしくは規格に準拠したコネクターを含む。
【００９７】
図１１は、一実施形態に係るＩＰコア開発を示すブロック図である。記憶媒体１１３０は、シミュレーションソフトウェア１１２０、および/またはハードウェアもしくはソフトウェアのモデル１１１０を含む。一実施形態では、メモリ１１４０（たとえば、ハードディスク）、有線接続（たとえば、インターネット）１１５０、もしくは無線接続１１６０を介してＩＰコア設計を表すデータを記憶媒体１１３０に提供することができる。シミュレーションツールおよびモデルにより生成されたＩＰコア情報を製造設備１１６５に送ることができ、製造設備では、第三者によって、少なくとも１つの実施形態に係る少なくとも１つの命令を実行するよう製造することができる。
【００９８】
いくつかの実施形態では、１つ以上の命令を第１の種類または第１のアーキテクチャ（たとえば、×８６）に対応させて、異なる種類または異なるアーキテクチャ（たとえば、ＡＲＭ）のプロセッサー上に翻訳もしくはエミュレートしてよい。したがって、一実施形態に係る命令は、ＡＲＭ、×８６、ＭＩＰＳ、ＧＰＵ、またはその他のプロセッサー種類もしくはアーキテクチャを含む、任意のプロセッサーもしくはプロセッサー種類上で実行してよい。
【００９９】
図１２は、一実施形態にしたがって、第１の種類の命令を異なる種類のプロセッサーによりエミュレートする方法を示す。図１２では、プログラム１２０５は、一実施形態に係る命令と同一もしくは実質的に同一の機能を果たすいくつかの命令を含む。しかし、プログラム１２０５の命令は、プロセッサー１２１５とは異なる、もしくはプロセッサー１２１５とは相容れない種類および/またはフォーマットのものである場合があり、プログラム１２０５に含まれる種類の命令は、プロセッサー１２１５によりネイティブ実行できないかもしれない。しかし、エミュレーションロジック１２１０による補助があれば、プログラム１２０５の命令は、プロセッサー１２１５によりネイティブ実行可能な命令に翻訳される。一実施形態では、エミュレーションロジックは、ハードウェアにより実現される。別の実施形態では、エミュレーションロジックは、プログラム１２０５に含まれる種類の命令を、プロセッサー１２１５によりネイティブ実行可能な種類に翻訳するためのソフトウェアを含む有形の機械読出し可能媒体により実現される。別の実施形態では、エミュレーションロジックは、機能が固定したハードウェアもしくはプログラマブルなハードウェアと、有形の機械読出し可能媒体に格納されたプログラムとの組み合わせである。一実施形態では、プロセッサーがエミュレーションロジックを含むが、別の実施形態では、エミュレーションロジックはプロセッサーの外に存在し、第三者により提供される。一実施形態では、プロセッサーは、プロセッサーに含まれる、もしくはプロセッサーに関連するマイクロコードもしくはファームウェアを実行することにより、ソフトウェアを含む有形の機械読出し可能媒体により実現されるエミュレーションロジックをロードすることができる。
【０１００】
図１３は、本発明の実施形態に係る、ソース命令セットに含まれるバイナリ命令を対象命令セットのバイナリ命令に変換するためのソフトウェア命令変換機の使用を対比するブロック図である。図示の実施形態では、命令変換機はソフトウェアによる命令変換機であるが、命令変換機は、ソフトウェア、ファームウェア、ハードウェア、またはこれらの多様な組み合わせにより実装してよい。図１３では、高水準言語１３０２のプログラムを×８６コンパイラー１３０４によりコンパイルして、少なくとも１つの×８６命令セットコアを含むプロセッサー１３１６によりネイティブ実行される×８６バイナリコード１３０６を生成する様子を示す。少なくとも１つの×８６命令セットコアを含むプロセッサー１３１６は、少なくとも１つの×８６命令セットコアを含むインテル社製のプロセッサーと実質的に同一の結果を達成するべく、（１）インテル社製の×８６命令セットコアの命令セットの実質的な部分、または（２）少なくとも１つの×８６命令セットコアを含むインテル社製のプロセッサー上で実行されるべく意図されたオブジェクトコード型のアプリケーションもしくはその他のソフトウェア、を互換的に実行または処理することにより、少なくとも１つの×８６命令セットコアを含むインテル社製のプロセッサーと実質的に同一の機能を実行することができる任意のプロセッサーを表す。×８６コンパイラー１３０４は、少なくとも１つの×８６命令セットコアを含むプロセッサー１３１６上で追加的なリンケージ処理の有無に拘らず実行できる×８６バイナリコード１３０６（たとえば、オブジェクトコード）を生成するべく動作するコンパイラーを示す。同様に、図１３では、高水準言語１３０２のプログラムを別の命令セットコンパイラー１３０８を使用してコンパイルして、少なくとも１つの×８６命令セットコアを含まないプロセッサー１３１４（たとえば、カリフォルニア州サニーベールのＭＩＰＳテクノロジー社製のＭＩＰＳ命令セットを実行する、および/またはカリフォルニア州サニーベールのＡＲＭホールディングス社製のＡＲＭ命令セットを実行するコアを含むプロセッサー）によりネイティブ実行される別の命令セットバイナリコード１３１０を生成する様子を示す。命令変換機１３１２は、×８６バイナリコード１３０６を、少なくとも１つの×８６命令セットコアを含まないプロセッサー１３１４によりネイティブ実行されるコードに変換するべく使用される。変換されたこのコードは、別の命令セットバイナリコード１３１０と同一となることはほぼなく、それは、それが可能な命令変換機を作成するのが困難であるからであるが、しかし、変換されたコードは一般的な動作を実行するであろうし、別の命令セットからの命令により構成されるであろう。したがって、命令変換機１３１２は、エミュレーション、シミュレーション、またはその他の処理により、×８６命令セットプロセッサーもしくはコアを含まないプロセッサーもしくはその他の電子デバイスが×８６バイナリコード１３０６を実行できるようにするソフトウェア、ファームウェア、ハードウェア、もしくはそれらの組み合わせを表す。
【０１０１】
本明細書に開示された内容は、例示として、特定の実施形態の観点から記載されたが、権利請求される実施形態は、明示的に列挙され開示された実施形態に限定されないことは理解されるべきである。反対に、開示内容は、当業者には明白な多様な変形および類似の構成を含むことを意図されている。したがって、添付の特許請求の範囲は、これらの変形および類似の構成を全て包含するよう最も広い解釈が与えられるべきである。上記の記載は、限定ではなく例示であることが意図されていることは理解されるべきである。上記の記載を読み理解することで当業者にはその他多くの実施形態が明らかになるであろう。したがって、開示された内容の範囲は、添付の特許請求の範囲、および特許請求の範囲に与えられる均等の全範囲を参照して決定されるべきである。
【図１】
0005643903.tif 000002
【図２】
0005643903.tif 000003
【図３】
0005643903.tif 000004
【図４】
0005643903.tif 000005
【図５】
0005643903.tif 000006
【図６】
0005643903.tif 000007
【図７】
0005643903.tif 000008
【図８】
0005643903.tif 000009
【図９】
0005643903.tif 000010
【図１０】
0005643903.tif 000011
【図１１】
0005643903.tif 000012
【図１２】
0005643903.tif 000013
【図１３】
0005643903.tif 000014