[著作権表示]
本特許文書の開示の一部は、著作権保護が与えられた内容を含む。本特許文書もしくは特許開示は、特許商標庁の特許ファイルもしくはレコードに記録されているので、著作権所有者は、本特許文書もしくは特許開示が何者によりファクシミリ複製されようと異議を唱えないが、その他の著作権等のいかなる権利も放棄しない。
本明細書には、階層的キャッシュ設計においてキャッシュ間で効率的な通信を行うためのシステムおよび方法が記載される。たとえば、一実施形態では、このような手段は、データバス、データバスに通信可能にインターフェースされた低レベルキャッシュ、データバスに通信可能にインターフェースされた高レベルキャッシュ、1つ以上のデータバッファ、および1つ以上のデータレスバッファ(dataless buffer)を備えてよい。このような実施形態のデータバッファは、データバスに通信可能にインターフェースされており、1つ以上のデータバッファのそれぞれが、キャッシュライン全体をバッファリングするバッファメモリと、データバッファの状態を示す1つ以上の制御ビットと、キャッシュライン全体と対応付けられたアドレスとを有する。このような実施形態のデータレスバッファは、キャッシュライン全体をバッファリングすることは不可能であり、データレスバッファの状態示す1つ以上の制御ビットと、データレスバッファに対応付けられたキャッシュ間転送ライン用アドレスを有する。このような実施形態では、キャッシュ間転送ロジックは、データバスを介して高レベルキャッシュからキャッシュ間転送ラインを要求し、データバスから低レベルキャッシュにキャッシュラインを書き込むというものである。
一般的に、CPUにメモリが近いほど、より高速にメモリはアクセスされる。CPU内のメモリはキャッシュと呼ばれ、たとえば、レベル1キャッシュ(L1キャッシュ)およびレベル2キャッシュ(L2キャッシュ)のように、異なる階層レベルでアクセスされうる。マザーボードに接続されるメモリモジュールのようなシステムメモリも利用可能であり、たとえば、CPUから分離されているがCPUがアクセスできる外部で利用可能なメモリは、オフチップキャッシュもしくはレベル3キャッシュ(L3キャッシュ)等と呼んでよいが、これは必ずしも一貫しない。なぜなら、第3階層レベルのキャッシュ(たとえば、L3キャッシュ)は、オンチップもしくは「オンダイ」である場合もあり、CPUにとって内部である場合もあるからである。
L1キャッシュ等のCPUキャッシュは、メモリにアクセスする平均時間を減らすべくコンピューターの中央演算処理装置により使用される。L1キャッシュは、最も頻繁に使用されるメインメモリ位置からのデータのコピーを記憶する小容量かつ高速のメモリである。L2キャッシュは、より大容量であるが、アクセスは遅くなる。追加的なメモリは、オンチップであろうと、キャッシュとして使用される外部利用システムメモリであろうと、さらに大容量であるが、より近いCPUキャッシュレベルに比べてアクセスは遅い。大抵のメモリアクセスがキャッシュメモリ位置に対するものである限り、メモリアクセスの平均待ち時間は、メインメモリの待ち時間よりもキャッシュの待ち時間に近い。
プロセッサーは、メインメモリに対する読み出しもしくは書き込みが必要であるとき、当該データのコピーがキャッシュ(たとえば、L1およびL2キャッシュ等)のうち1つに存在するかをまず確認し、存在するのであれば、システムのメインメモリからデータを探すかわりに、キャッシュに対して読み出しもしくは書き込みを行うので、システムのメインメモリに対して読み出しもしくは書き込みを行う場合よりもより高速に結果が得られる。
従来のメカニズムでは、バッファのライフタイムが長いので、キャッシュのスループットが制限される。置換動作を実施する対象のメカニズムを改良することによりスループットを向上させることができる。たとえば、CPUのL1キャッシュとL2キャッシュとの間、またはCPUのL2キャッシュと外部アクセスL3キャッシュとの間のスループットおよび通信の効率が向上すると、CPUおよび関連チップセットの全体的な動作効率が改善する。
従来の解決法では、ラインをキャッシュ内に置換するとき、ミスしたキャッシュ(たとえば、このキャッシュには該当データが存在しない)に対するバッファの割り当てが求められ、当該データに対する要求は、高レベルのキャッシュに、たとえば、L1キャッシュよりはL2キャッシュに、もしくはL2キャッシュよりはL3キャッシュに、というように進む。要求は、高レベルキャッシュに進み、それに応答して、要求されたデータが返され、割り当てられたバッファに格納され、スケジューラーが、現在バッファリングされている取得されたデータに対する置換動作をスケジューリングし、取得されたデータを低レベルキャッシュに挿入する。この置換動作を実行するべく、キャッシュに対するストアおよびロードがストールして読み出し・書き込みポートが解放され、このとき、高レベルキャッシュから取得されたデータが置換動作により低レベルキャッシュに挿入され、必要ならば追い出し(eviction)が実行される。
したがって、このようなキャッシュ間転送を実行するのに必要なバッファのライフタイムもしくはステップ数を少なくすることが望ましく、ステップ数が減ることによって効率が増大する。また、高レベルから低レベルへとデータを移すあらゆるキャッシュ間要求は、必ずストアおよびロードを中断させるので、その他の処理フローおよび動作を中断させることによりシステムの低下が生じる。したがって、キャッシュに対して実行中のストアおよびロードを停止させることなく、このようなデータを移動させるキャッシュ間データ転送を可能にすることが望ましい。
以下の記載では、特定のシステム、言語、要素等についての例など、多くの特定的詳細事項を述べて、多様な実施形態の完全な理解を促す。しかし、本明細書に開示する実施形態を実施するのにこれらの特定的詳細事項を採用する必要はないことは、当業者には明らかであろう。別の例では、開示される実施形態が不必要に曖昧になることを回避するべく、周知の材料もしくは方法については詳細に記載しなかった。
図面に示され、かつ本明細書に記載される多様なハードウェアコンポーネントに加えて、実施形態は、以下に記載される多様な動作をさらに含む。これら実施形態にしたがって記載される動作は、ハードウェアコンポーネントにより実行してよく、もしくは機械実行可能な命令として実施してよく、このような命令は、それらをプログラムされた汎用もしくは特殊目的用プロセッサーにこれら動作を実行させるべく用いられる。または、これら動作は、ハードウェアおよびソフトウェアの組み合わせにより実行してもよい。
実施形態は、本明細書に記載される動作を実行する装置にも関連する。この装置は、要求される目的のために専用に製造されたものでよく、または、コンピューターに格納されたコンピュータープログラムにより選択的にアクティベートもしくは再設定される汎用コンピューターでもよい。このようなコンピュータープログラムは、それぞれコンピューターシステムバスに接続されるフロッピー(登録商標)ディスク、光ディスク、CD−ROM、および磁気光ディスクを含む任意の種類のディスク、読み出し専用メモリ(ROM)、ランダムアクセスメモリ(RAM)、EPROM、EEPROM、磁気もしくは光カード、もしくは、電子的命令を格納するのに適した任意の種類の媒体等(これらに限定されない)のコンピューター読み出し可能記憶媒体に記憶してよい。「接続される」という文言は、直接的な接触状態(物理的、電気的、磁気的、光学的等)にある2つ以上の要素、もしくは、互いに直接的な接触状態にはないが、互いに協働および/またはやり取りする2つ以上の要素を表してよい。
本明細書に提示されるアルゴリズムおよびディスプレイは、いずれか特定のコンピューターもしくはその他の装置に本来的に関連するものではない。本明細書の教示に従って多様な汎用システムをプログラムを用いて使用してよく、または、必要な方法の段階を実行するべくより専用化された装置を構成することが便利であるかもしれない。これら多様なシステムに必要な構成は、以下の記載において明記されて明らかになるであろう。さらに、実施形態は、いずれかの特定的なプログラミング言語に関して記載されるものではない。本明細書に記載されるように、実施形態の教示を実施するべく多様なプログラミング言語を使用してよいことが理解されよう。
開示される実施形態のいずれも、それ自体で、もしくはどのような組み合わせでも互いに一緒に用いてよい。多様な実施形態は、本明細書においていくつか記載もしくは示唆される従来技術および方法の欠点により部分的に動機付けられてはいるが、必ずしもこれらの欠点のいずれかに関して対処法もしくは解決法を示すものでなく、むしろこれら欠点のいくつかだけに対処し、これら欠点のいずれにも対処せず、もしくは、直接には述べられない別の欠点および問題点に関連する場合もある。
図1は、実施形態が動作する例示的なアーキテクチャ100を示す。記載される実施形態によると、図示されたアーキテクチャ100によって、階層的キャッシュ設計においてキャッシュ間で効率的な通信が行われる。
効率は、バッファリングされているキャッシュラインをキャッシュに書き込まなければならないスケジューラーによって、書き込みポートが無理やり奪取されるイベントをなくすことにより向上させることができる。キャッシュの書き込みポート奪取をなくす単純な方法は、別のキャッシュ書き込みポートを追加することである。しかし、これは、集積回路上の面積、および集積回路上の電力という観点から非常にコスト高である。
開示される実施形態によると、メモリセルもしくは「ラムセル(ram cell)」等の、キャッシュデータのキャッシュラインを記憶するためのセルは、グループ化されてよい。エージェントにより、マルチプレクサー(mux)を介してグループに対して書き込みもしくは読み出しを実行することができる。たとえば、同時の置換もしくは格納動作によって、muxを介してセットアソシエイティブキャッシュに、2回目の同時置換もしくは格納動作をサポートする第2の書き込みポートを追加する必要なく、同時に書き込んでよい。
別々のグループに対して同時に書き込み動作を多重化することで、たとえば追加的な書き込みポートを加えることによってハードウェアを増やす必要なく、スループットを高めることが可能になる。グループ数を増やすと、複数グループのラムセルに対する同時の書き込み/書き込み動作、読み出し/読み出し動作、もしくは書き込み/読み出し動作をもっと増やすことができるが、グループ化する毎に、グループ当たりにさらにmuxを導入することが必要である。
図示されるように、アーキテクチャ100は、ウェイ当たり4個のグループをサポートする。たとえば、ウェイ0 120Aは、低レベルキャッシュもしくはレベル1キャッシュ(L1キャッシュ)であってよく、ウェイ1 120Bは、より高レベルのキャッシュもしくはレベル2キャッシュ(L2キャッシュ)であってよい。
ウェイ0およびウェイ1 120A、120Bのそれぞれは、キャッシュラインを格納する4グループのラムセルを含む。ウェイ0 120Aは、ラムセルのグループ105A、106A、107A、および108Aを含む。同様に、ウェイ1 120Bは、4個のラムセルグループ105B、106B、107B、および108Bを含む。ウェイ0およびウェイ1のそれぞれのラムセルグループは、マルチプレクサー、つまりmux130を介して接続され、muxはエージェントにより管理される。エージェント0 110Aおよびエージェント1 115Aは、ウェイ0 120Aに対する入出力動作を管理する。たとえば、2つの同時的な書き込み、更新、挿入、ロード、ストア、もしくは読み出し動作は、図示されるように各グループに接続されたmux130を介して別々のラムセルグループ105A−108Aに書き込むとき、mux130を介して2つのエージェント110Aおよび115Aによりサポートされる。
同様に、ウェイ1 120Bのエージェント0 110B及びエージェント1 115Bは、図示されるように各ラムセルグループにそれぞれ接続されたmux130を介して、ウェイ1 120Bのラムセルグループ105B−108Bに対する入出力動作をサポートする。
ウェイ0およびウェイ1は、ラムセルグループ105A−108Aおよび105B−108Bのそれぞれに、また別々のウェイ120A−Bに、別々の書き込みイネーブルを送るミニデコーダー125を介して相互接続されているので、たとえば書き込み動作のソースの両方が、別々のラムセルグループおよびウェイに同時に書き込むことができる。たとえば、2つのデータソースは、各セット(ラムセル)のグループの手前で多重化されるので、ソースの両方を別々のセット(ラムセル)のグループに同時に書き込むことができる。
図2は、実施形態が動作する代替的な例示的アーキテクチャ200を示す。ここでは、2つの例示的キャッシュレベル間の相互通信は、開示される実施形態にしたがって図示される。たとえば、L1キャッシュ210(たとえば、ウェイ0)およびL2キャッシュ215(たとえば、ウェイ1)が図示されており、データバッファ235はアドレス220Aのブロックおよび制御225Aのブロックもしくはビットを有する。特筆すべきであるが、データバッファ235は、キャッシュラインの全体を格納することができるデータブロック230を含む。データブロック230は、データバッファ235のなかで最も資源集約的な部分であり、それに比例して、実装される集積回路の電力および面積の両方をより多く必要とする。導入するデータバッファ235の数を増やすと、このような集積回路上でより多くの電力および面積を割り当てることが必要となり、この追加的な電力および面積の大半は、各データバッファ235のデータブロック230部により、キャッシュラインの全体を格納もしくはバッファするべく消費される。
データレスバッファ234がさらに図示されている。データレスバッファ234も、アドレス220Bのブロックおよび制御225Bのブロックもしくはビットを有する。特筆すべきであるが、データレスバッファ234は、データバッファ235のデータブロック230を持たない。データレスバッファ234は、データブロック230が必要でないので、実装される回路上での面積としてはずっと小さく、さらにそれに比例して、図示のデータバッファ235とは対照的に、消費する電力は少ない。しかし、データレスバッファ234は、単純に、キャッシュラインの全体を格納することが不可能である。データレスバッファは、キャッシュラインを収容、格納、バッファリング、もしくは保有するためのデータブロック230を持たないので、「バッファ」との命名にも拘らず、キャッシュラインをバッファリングすることができない。したがって、データバッファ235およびデータレスバッファ234のそれぞれは、以下により詳細に記載するように、異なる役割を果たす。
キャッシュからの要求の大半について、データは単一のかたまりで到着し、制御225A−Bのブロックに格納されるライン状態ビットは、要求されたデータに対応するキャッシュラインについて、排他的状態または共有状態を示す。ライン状態ビットは、高レベルキャッシュから低レベルへのデータの要求動作の完了を示すべく使用される。ライン状態ビットによってキャッシュライン要求の完了が示されていることが認識されると、データ到着に応答して置換動作が開始され、データが到着すると直ちに置換動作が実行され、したがって、データバッファ235が迂回され、さらに、データバッファ235をスケジューラーによって監視する必要がなくなり、その後にデータバッファ235のデータブロック230からキャッシュラインを取得して、キャッシュ、たとえばL1キャッシュ210に移動させるロジックであってよい。または、アドレス220Bおよび制御225Bの情報が適切に追跡されるようにデータレスバッファ234を割り当てることができるが、高レベルキャッシュ、たとえばL2キャッシュ215から取得されるキャッシュラインはデータバッファ235にバッファリングされないので、データレスバッファ234はデータブロック230を必要としないかわりに直ちに割り当てから解放され、取得したキャッシュラインがL1キャッシュ210に方向付けられ、中間のバッファリング動作が回避される。このようなスキームは、より効率的であり、キャッシュラインのキャッシュ間転送のパイプラインライフタイムが短縮される。
したがって、データレスバッファ234は、高レベルキャッシュから受け取ったキャッシュラインを低レベルキャッシュに置換させるいずれの要求にも使用される。必要ならば、依然としてデータバッファ235を、各キャッシュに直接かつ直ちに書き込むことができないキャッシュラインを受け入れてバッファリングするべく用いてよい。たとえば、要求されたキャッシュラインを特定のアドレスに方向付けなければならず、かつキャッシュとのやり取りが競合する場合には、データブロック230を介して各データ格納要素を有するデータバッファ235にキャッシュラインを一時的にバッファリングして、バッファリングされたキャッシュラインがキャッシュの適切なアドレス空間に書き込まれるよう、スケジューラーが必要な書き込みポートへのアクセスを確保するべく調整を行えるようにしてよい。
置換動作は特定アドレス向け書き込みよりも柔軟であるので、要求されたキャッシュラインを低レベルキャッシュに書き込む場所についてキャッシュ間転送ロジックは制限されず、したがって、キャッシュの一部、たとえば、競合状態にない低レベルもしくはL1キャッシュ210内の図1に示すラムセルグループ105A−108Aのうち1つが、取得したキャッシュラインを受け取り次第キャッシュに挿入するべく選択され得る。
したがって、一実施形態によると、特定アドレス向け書き込み動作241は、キャッシュラインを格納するのに十分なデータブロック230要素を有するデータバッファ235に提示され、置換動作242は、キャッシュラインをバッファリングする機能は必要ないので、データブロック230要素を持たないデータレスバッファ234に提示される。要求243がL2キャッシュ215に送信される様子が示されており、その後、L2キャッシュ215からL1キャッシュ210に通信されるキャッシュ間転送ライン244に示されるように、L1キャッシュ210へと直接にデータ、状態、および到着完了の置換が処理される。
図3は、実施形態が動作する別の代替的な例示的アーキテクチャ300を示す。たとえば、一実施形態にしたがって集積回路301が図示されており、集積回路は、データバス315、データバス315に通信可能にインターフェースされた低レベルキャッシュ305、データバス315に通信可能にインターフェースされた高レベルキャッシュ310、データバス315に通信可能にインターフェースされた1つ以上のデータバッファ235、データバス315に通信可能にインターフェースされた1つ以上のデータレスバッファ234、およびキャッシュ間転送ロジック325を備える。さらに、アドレス220Aおよび制御225A並びにキャッシュラインを格納するためのデータブロック230要素を含むデータバッファ235のサブ要素と、アドレス220Bおよび制御225Bを含むデータレスバッファ234のサブ要素とが示されているが、特筆すべきことに、データレスバッファ234は、キャッシュラインを格納するためのデータブロック230要素を有さない。最後に、キャッシュ間転送ライン244は、高レベルキャッシュ310から低レベルキャッシュ305へと転送されるように示されている。
一実施形態によると、1つ以上のデータバッファ235のそれぞれは、キャッシュライン全体をバッファリングするためのバッファメモリ(データブロック230)と、データバッファ235の状態を示す1つ以上の制御225Aビットと、キャッシュライン全体に対応付けられたアドレス220Aとを有する。
一実施形態では、1つ以上のデータレスバッファ234のそれぞれは、キャッシュライン全体を格納することが不可能である。データレスバッファ234は、データレスバッファ234の状態を示す1つ以上の制御225Bビットと、データレスバッファ234に対応するキャッシュ間転送ライン244のアドレス220Bとを有する。追加的なデータフロック230要素(たとえば、バッファメモリ)を有するデータバッファ235とは対照的に、各データレスバッファ234に制御225Bおよびアドレス220Bだけを備えることで、このようなデータブロック230要素を有するデータバッファ235をさらに集積回路301に組み込んだ場合に必要とされる集積回路301の実質的な電力および面積を割り当てる必要なく、バッファの数を大幅に増やすことができる。キャッシュ間転送ライン244を待ち行列に入れたりバッファリングしたりする必要がないのは、転送の実行が、データを要求し、要求されたキャッシュ間転送ライン244をデータバス315からバッファもしくは待ち行列ではなく、直接に低レベルキャッシュ305に方向付けることによるオンザフライによるからであり、したがって、キャッシュ間転送ライン244のデータ到着時に低レベルキャッシュ305にライトバックされる。キャッシュ間転送機能を支持するべくデータレスバッファ234を割り当ててもよいが、データレスバッファ234に必要な制御225Bおよびアドレス220Bのリソースコストが、キャッシュ間転送の一環としてキャッシュ間転送ライン244をバッファリングすることが可能なデータバッファ235に比べて小さい。
一実施形態では、キャッシュ間転送ロジック325は、データバス315を介して高レベルキャッシュ310からキャッシュ間転送ライン244を要求し、キャッシュ間転送ロジック325は、さらに、データバス315から低レベルキャッシュ305にキャッシュ間転送ライン244を書き込む。
一実施形態では、キャッシュ間転送の要求には、(1)低レベルキャッシュ305でのキャッシュミスに反応して、キャッシュ間転送ロジック325が1つ以上のデータレスバッファ234のうちの1つをキャッシュ間転送ライン244に割り当てること、(2)キャッシュ間転送ロジック325が、割り当てられたデータレスバッファを迂回して、データバス315からキャッシュ間転送ライン244を直接に低レベルキャッシュ305に方向付けること、が含まれる。たとえば、キャッシュ間転送ライン244は、要求に応答してデータバス315に載せられ、その後は、キャッシュ間転送ライン244はバッファメモリに方向付けられるのではなく、かわりにキャッシュ間転送ライン244は、データバス315から低レベルキャッシュ305に直接に送信される。
一実施形態では、キャッシュ間転送ロジック325は、低レベルキャッシュ305でのキャッシュミスに反応してキャッシュ間転送ライン244を要求する。たとえば、このようなキャッシュミスによって、要求されるキャッシュラインを調達可能な高レベルキャッシュ、たとえば、図示されるL2キャッシュ310、もしくは、集積回路301に対してオンチップであるかオフチップであるかに拘わらずより高レベルな、たとえばL3キャッシュにおいて、キャッシュ間転送機能がトリガーされて機能する。一実施形態では、低レベルキャッシュ305は、集積回路301に組み込まれたオンチップレベル1キャッシュ(L1キャッシュ)であり、高レベルキャッシュ310は集積回路301に組み込まれたオンチップレベル2キャッシュ(L2キャッシュ)である。代替的な実施形態では、オンチップレベル1キャッシュまたはオンチップレベル2キャッシュは、さらにオフチップレベル3キャッシュ(L3キャッシュ)と通信してL3キャッシュからオンチップレベル1キャッシュまたはオンチップレベル2キャッシュにキャッシュ間転送を実行する。
一実施形態によると、キャッシュ間転送ライン244を低レベルキャッシュ305に直接に方向付ける動作には、キャッシュ間転送ロジック325が置換動作を開始してキャッシュ間転送ライン244を低レベルキャッシュ305挿入することがさらに含まれる。一実施形態では、置換動作は、高レベルキャッシュ310からのキャッシュ間転送ライン244を要求することと同時に開始される。キャッシュ間転送機能のライフタイムを従来から入手可能であったメカニズムに比べて短縮するべく、特定の機能的動作をなくすことが望ましい。これらの動作の1つは、上記の通り、バッファリングである。効率を改善するべくなくしてよいその他の動作は、要求したキャッシュ間転送ライン244の受領とその後の置換動作のスケジューリングとの間に発生する待ち時間である。開示する実施形態によると、置換動作は、キャッシュ間転送ライン244に対する要求の開始と同時にトリガーされるので、従来の技術の問題点であったタイミングのずれが減る。キャッシュ間転送ライン244の要求と同時に置換動作をトリガーすることにより、置換動作は、返されたキャッシュ間転送ライン244がデータバス315に載せられるとそれを取得し、かつ単純に低レベルキャッシュ310に方向付けるので、この両方によってキャッシュ間転送機能パイプラインの全体的なライフタイムが短縮し、さらに、バッファリング段階もしくは動作の必要が無くなる。このような技術を用いると、キャッシュ間転送ライン244がバッファメモリに置かれることがないので、バッファメモリを監視するスケジューラーでさえ必要なくなる。しかし、実際には、キャッシュ間転送機能の全てにとって、バッファレス動作が可能であるわけではない。たとえば、対象キャッシュにおける競合によって、その特殊な場合に対処するべくバッファリングもしくは余分な時間が必要となる場合には、相変わらずバッファリングを用いてよく、バッファリングされたキャッシュラインをバッファメモリ(たとえば、データバッファ235のデータブロック230)から対象キャッシュに転送する必要とされる作業をスケジューラーによって監視し、かつその後に実行してよい。
一実施形態では、置換作業には、低レベルキャッシュ305から追い出される(eviction)キャッシュラインを、追い出されるキャッシュラインが、低レベルキャッシュ305の、現在競合が存在しない箇所に存在することに少なくとも部分的に基づいて、選択することと、キャッシュラインの追い出しにより利用可能になった位置にキャッシュ間転送ライン244を方向付けることが含まれる。このような置換作業では、キャッシュ間転送ライン244に対応付けられたデータレスバッファ234のアドレス220Bを用いてよい。さらに、たとえば低レベルキャッシュ305等の対象キャッシュ内の目標とする宛て先に対するマッピングを、対応するアドレス220Bを使用して提供してよい。キャッシュ間転送ロジック325は、対象キャッシュの目標とする部分に競合が存在するかを判定してよい。たとえば、以前に、ラムセルグループ105A−108Aについて記載した。それらのうちいくつかは、入出力動作に利用不可能であり、その他は利用可能である場合がある。キャッシュ間転送ロジック325は、競合が存在する場所、しない場所を判定し、読み出し/書き込みポートを確保し(たとえば、エージェント110Aおよび115Aの一方を介して)、キャッシュラインを追い出し、要求され取得されたキャッシュ間転送ライン244をキャッシュラインの追い出しにより解放された位置に格納させる。このような競合の判定は、基準、リアルタイムの監視、アドレス範囲等に基づいて行ってよい。一実施形態では、キャッシュ間転送ロジック325は、追い出し基準(たとえば、ダーティビットを除去する、同期化(syncing)等)に基づいて、追い出されたキャッシュラインをバッファリングするべく複数のデータバッファ235のうち1つを割り当て、最終的処遇として、追い出されたキャッシュラインを割り当てたデータバッファに方向付ける。
一実施形態では、低レベルキャッシュ305は、2つ以上のグループに配置された複数のメモリセルを含み、2つ以上のグループのそれぞれは、各グループ内の2つの別々のメモリセルに対する同時の書き込み/書き込み、読み出し/読み出し、もしくは書き込み/読み出し動作を可能にするマルチプレクサー(mux)を介してアクセスされる。たとえば、メモリセル(たとえば、ラムセル等)は、8個、16個、もしくは64個等のグループに分割してよい。グループ分けの数が大きすぎると、競合が増える。グループ分けの数が小さすぎると、オーバーヘッドが増え、要求されるmuxのためにハードウェア要件が追加される。したがって、所定の回路実施環境における適切なグループ分けの数をモデル化するべくなんらかの分析を行うことが適切である。グループ分けが行われると、書き込み/書き込み、読み出し/読み出し、もしくは読み出し/書き込み動作は、両動作が2つの別々のグループを対象としている限り、mux(および、必要ならばエージェント)を介してメモリセルに方向付けることができる。たとえば、2つの置換動作、2つのロード動作、2つのストア動作等は、単一グループ内のメモリセルを対象としていない限り、実行可能である。
一実施形態では、データバス315から低レベルキャッシュ305にキャッシュ間転送ライン244を書き込むキャッシュ間転送ロジック325は、キャッシュ間転送ライン325が、(1)2つ以上のグループのうち書き込み動作が可能な1つを識別すること、(2)識別したグループを選択すること、および(3)選択したグループを担当するエージェントに、キャッシュ間転送ライン244をデータバス315から選択したグループに書き込ませること、を含む。したがって、競合の判定では、利用可能なグループを識別し、それに応答して、置換動作を実行するべく当該グループを選択してよい。
代替的な実施形態では、データバス315から低レベルキャッシュ305にキャッシュ間転送ライン244を書き込むキャッシュ間転送ロジック325は、キャッシュ間転送ライン325が、(1)2つ以上のグループの全てにおいて競合を識別し、(2)これらのグループのうち1つに対する書き込み動作をストールさせ、(2)ストールされた書き込み動作に対応するグループを担当するエージェントに、キャッシュ間転送ライン244をデータバス315から当該グループに書き込ませること、を含む。
書き込み動作のストールは、読み出し/書き込みポートの強制的な奪取とも言い表すことができる。選択された位置、たとえば、対象低レベルキャッシュ305内のグループの中のメモリセル、に対して読み出し/書き込みポートを利用可能にすることが必要であり、バッファレスキャッシュ間転送モードで操作するべく、選択された位置は、レディ状態となって、キャッシュ間転送ライン244を高レベルキャッシュ310から受領次第、受け取れるよう待機状態となる。高レベルキャッシュからデータが到着すると、直ちにライトバック可能なように待機している位置が存在していなければならず、したがって、必要ならば、到着に備えて、ロードポートもしくは読み出し/書き込みポートをストールさせる。いくつかの実施形態によると、ストールが発生する場合があるが、このようなストールは、キャッシュ間転送ライン244の要求と同時にトリガーされて単一サイクルに組み合わされるので、要求、バッファ、スケジュール、ストール、およびバッファリングされたデータの移動を実行し、同じ結果に到達するのに1サイクルより多くが必要な従来のメカニズムに比べると、時間的にずっと短い。
一実施形態では、低レベルキャッシュ305または高レベルキャッシュ310に格納された既存のキャッシュラインについてのキャッシュ更新は、1つ以上のデータバッファ235のうちの1つにバッファリングされ、1つ以上のデータバッファ235を監視するスケジューラーは、当該既存のキャッシュラインに対応する低レベルキャッシュ305または高レベルキャッシュ310に対して利用可能な書き込みポートを確保し、キャッシュ更新を低レベルキャッシュ305または高レベルキャッシュ310に書き込み、既存のキャッシュラインを置換する。
一実施形態では、高レベルキャッシュ310から返されたキャッシュ間転送ライン244は、キャッシュライン全体と制御データとを含む。このような実施形態では、データレスバッファ234は、制御データを、1つ以上の制御225Bビットにより記憶する。一実施形態では、各データレスバッファは、制御データと一緒に帰されたキャッシュライン全体を格納しない。
一実施形態では、集積回路301は、タブレットコンピューティング装置またはスマートホンのいずれか一方の中央演算処理装置を含む。
図4は、実施形態が動作し、インストールされ、集積され、もしくは設定されるシステム499の図を示す。
一実施形態では、システム499は、メモリ495、および1つもしくは複数のプロセッサー496を備える。たとえば、メモリ495は、実行すべき命令を格納してよく、1つもしくは複数のプロセッサー496は、この命令を実行してよい。システム499は、1つもしくは複数の通信バス465を備え、システム499内で1つもしくは複数の通信バス465および/または1つもしくは複数のインターフェース475に通信可能にインターフェースされた複数の周辺装置470間でトランザクション、命令、要求、およびデータを転送する。システム499内には表示ユニット480がさらに示されている。
システム499内で注目すべきは、集積回路301であり、これは規格が適合するシステム499に組み込まれて構成されてよく、または、別個に製造および提供されてシステム499の適切なコンポーネントと連動して動作してよい。
一実施形態によると、システム499は、少なくとも表示ユニット480と、集積回路301とを備える。集積回路301は、たとえば、システム499のプロセッサーもしくは別のコンピューティング要素として動作してよい。このような実施形態では、システム499の集積回路301は、少なくとも、データバス、データバスに通信可能にインターフェースされた低レベルキャッシュ、データバスに通信可能にインターフェースされた高レベルキャッシュ、およびデータバスに通信可能にインターフェースされた1つ以上のデータバッファを有し、1つ以上のデータバッファのそれぞれは、キャッシュライン全体をバッファリングするためのバッファメモリと、データバッファの状態を示す1つ以上の制御ビットと、キャッシュライン全体に対応するアドレスとを有する。このような実施形態では、システム499の集積回路301は、キャッシュライン全体を格納することが不可能な1つ以上のデータレスバッファをさらに有し、データレスバッファは、自身の状態を示す1つ以上の制御ビットと、自身に対応するキャッシュ間転送ラインのアドレスとを有する。システム499の集積回路301は、データバスを介して高レベルキャッシュからキャッシュ間転送ラインを要求し、データバスから低レベルキャッシュにキャッシュ間転送ラインを書き込むキャッシュ間転送ロジックをさらに有する。
一実施形態では、システム499はタブレットもしくはスマートホンを実現しており、表示ユニット480は、タブレットもしくはスマートホンのタッチスクリーンインターフェースである。このような実施形態では、集積回路301は、たとえば、タブレットもしくはスマートホンのプロセッサーもしくはその他のコンピューティング要素としてタブレットもしくはスマートホンに組み込まれている。
図5は、記載する実施形態に係る、階層的キャッシュ設計においてキャッシュ間で効率的な通信を行うための方法を示すフロー図である。方法500は、ハードウェア(たとえば、回路、専用ロジック、プログラマブルロジック、マイクロコード等)が組み込まれてよい処理ロジックによって実行されてよい。示されるブロックの番号割り振りは、明確性を期すべく提示されており、これらのブロックが登場すべき動作順序を規定することは意図されていない。
方法500は、低レベルキャッシュにおけるキャッシュミスを受け付ける処理ロジックにより開始され(ブロック505)、当該キャッシュミスに対応するデータは、低レベルキャッシュにデータバスを介して通信可能にインターフェースされた高レベルキャッシュに存在する。
ブロック510で、処理ロジックは、低レベルキャッシュでのキャッシュミスに応答して、高レベルキャッシュからキャッシュ間転送ラインを要求する。
ブロック515で、処理ロジックは、キャッシュ間転送ラインにデータレスバッファを割り当てる。
ブロック520で、処理ロジックは、キャッシュ間転送ラインを低レベルキャッシュに挿入する置換動作を開始する。
ブロック525で、処理ロジックは、低レベルキャッシュから追い出すキャッシュラインを、低レベルキャッシュにおいて現在競合が存在していない部分に追い出すキャッシュラインが存在することに少なくとも部分的に基づいて、選択する。
ブロック530で、処理ロジックは、キャッシュラインの追い出しにより利用可能になった位置に、キャッシュ間転送ラインを方向付ける。
ブロック535で、処理ロジックは、データバス上でキャッシュ間転送ラインを受け取り、データバスから低レベルキャッシュにキャッシュ間転送ラインを書き込むことで、全てのキャッシュバッファを迂回することにより、キャッシュ間転送ラインを高レベルキャッシュから低レベルキャッシュに転送する。
図6を参照すると、本発明の一実施形態に係るシステム600のブロック図が示されている。システム600は、グラフィックスメモリコントローラーハブ(GMCH)620に接続された1つ以上のプロセッサー610および615を備えてよい。図6において破線により追加的プロセッサー615の任意性が示されている。
各プロセッサー610および615は、上記の回路、集積回路、プロセッサー、および/またはシリコン集積回路のなんらかのバージョンであってよい。しかし、集積グラフィックスロジックおよび集積メモリ制御ユニットがプロセッサー610および615に設けられている可能性はないことに注意するべきである。図6は、GMCH620が、たとえばダイナミックランダムアクセスメモリ(DRAM)であってよいメモリ640に接続されていることを示す。DRAMは、少なくとも1つの実施形態では、不揮発性キャッシュに対応付けられている。
GMCH620は、チップセット、もしくはチップセットの一部であってよい。GMCH620は、プロセッサー610および615と通信し、プロセッサー610および615とメモリ640とのやり取りを制御する。GMCH620は、プロセッサー610および615と、システム600のその他の要素との間の高速バスインターフェース(accelerated bus interface)として機能してもよい。少なくとも1つの実施形態では、GMCH620は、たとえばフロントサイドバス(FSB)695等のマルチドロップバスを介してプロセッサー610および615と通信する。
さらに、GMCH620は、ディスプレイ645(たとえば、フラットパネルディスプレイまたはタッチスクリーンディスプレイ)に接続されている。GMCH620は、集積グラフィックスアクセラレーターを含んでよい。GMCH620は、多様な周辺装置をシステム600に接続するべく用いられる入出力(I/O)コントローラーハブ(ICH)650にさらに接続されている。図6の実施形態で例として示されているのは、ICH650に接続された別個のグラフィックス装置であってよい外部グラフィックス装置660と、別の周辺装置670とである。
または、システム600には、追加的な、または別の、プロセッサーが存在してもよい。たとえば、追加的プロセッサー615は、プロセッサー610と同種である1つ以上の追加的プロセッサー、プロセッサー610とは異種もしくは非対称の1つ以上の追加的プロセッサー、アクセラレーター(たとえば、グラフィックスアクセラレーター、デジタル信号処理(DSP)ユニット等)、フィールドプログラマブルゲートアレイ、またはその他の任意のプロセッサーを含んでよい。プロセッサー610と615との間には、アーキテクチャ、マイクロアーキテクチャ、熱特性、電力消費特性等の様々な計量項目において多様な相違がある。これらの相違は、プロセッサー610と615との間で、非対称性および異種性として効果的に現れるであろう。少なくとも1つの実施形態では、これらの多様なプロセッサー610および615は、同一のダイパッケージに存在してよい。
図7を参照すると、本発明の実施形態に係る第2のシステム700のブロック図が示されている。図7に示すように、マルチプロセッサーシステム700は、ポイントツーポイント相互接続システム(point−to−point interconnect system)であり、第1のプロセッサー770と、ポイントツーポイントインターフェース750を介して接続された第2のプロセッサー780とを備える。各プロセッサー770および780は、上記したプロセッサーもしくは集積回路のなんらかのバージョンであってよく、または、プロセッサー610および615のうちの1つ以上であってよい。
2つのプロセッサー770および780だけが示されているが、本発明の範囲は限定されないことは理解されるべきである。別の実施形態では、所定のプロセッサーにおいて1つ以上の追加的プロセッサーが存在してもよい。
プロセッサー770および780は、それぞれ、集積メモリコントローラーユニット772および782を含んで図示されている。プロセッサー770は、バスコントローラーユニットの一部としてポイントツーポイント(P−P)インターフェース776および778を含み、同様に第2のプロセッサー780は、P−Pインターフェース786および788を含む。プロセッサー770および780は、P−Pインターフェース778および788を使用するポイントツーポイント(P−P)インターフェース750を介して情報交換してよい。図7に示すように、IMC772および782は、プロセッサーをそれぞれのメモリ、つまり、メモリ732およびメモリ734に接続し、これらのメモリは、それぞれのプロセッサーに対してローカルに取り付けられたメインメモリの一部であってよい。
プロセッサー770および780は、ポイントツーポイントインターフェース回路776、794、786、および798を使用するそれぞれのP−Pインターフェース752および754を介してチップセット790と情報交換してよい。チップセット790は、高性能グラフィックスインターフェース739を介して高性能グラフィックス回路738とも情報交換してよい。
共有キャッシュ(不図示)を、プロセッサー内に設けて、または両プロセッサー外にP−P相互接続を介して両プロセッサーに接続されるように設けて、プロセッサーが低電力モードに設定されたときに、プロセッサーのいずれか又は両方のローカルなキャッシュ情報が当該共有キャッシュ格納されるようにしてよい。
チップセット790を、インターフェース796を介して第1のバス716と接続してよい。一実施形態では、第1のバス716は、ペリフェラルコンポーネントインターコネクト(PCI)バス、またはPCIエクスプレスもしくはその他の第3世代I/Oインターコネクトバスであってよいが、本発明の範囲は限定されない。
図7に示すように、第1のバス716には、第1のバス716を第2のバス720に接続するバスブリッジ718とともに多様なI/O装置714を接続してよい。一実施形態では、第2のバス720は、低ピンカウント(LPC)バスであってよい。たとえば、キーボードおよび/またはマウス722、通信装置727、および、一実施形態では命令/コードおよびデータ730を含むディスクドライブまたはその他の大容量記憶装置等の記憶ユニット728等の多様な装置を第2のバス720に接続してよい。さらに、オーディオI/O724を第2のバス720に接続してよい。その他のアーキテクチャも可能であることに注意されたい。たとえば、図7のポイントツーポイントアーキテクチャのかわりに、システムは、マルチドロップバスもしくはその他のアーキテクチャを実装してよい。
図8を参照すると、本発明の実施形態に係るシステム800のブロック図が示されている。図8では、プロセッサー870および880が、集積メモリ並びにI/O制御ロジック(「CL」)872および882をそれぞれ含み、ポイントツーポイント(P−P)インターフェース878と888との間のポイントツーポイント相互接続850を介して互いに通信することを示す。プロセッサー870および880は、図示するように、それぞれP−Pインターフェース876−894間および886−898間のポイントツーポイント相互接続852および854を介してチップセット890とそれぞれ通信する。少なくとも1つの実施形態では、CL872および882は、集積メモリコントローラーユニットを含んでよい。CL872および882は、I/O制御ロジックを含んでよい。図示するように、メモリ832および834がCL872および882に接続されており、I/O装置814も制御ロジック872および882に接続されている。レガシーI/O装置815がインターフェース896を介してチップセット890に接続されている。
図9は、本実施形態にしたがって記載されたようにそれぞれ回路を集積したタブレットコンピューティング装置901およびハンドヘルドスマートホン902を示す。図示するように、タブレットコンピューティング装置901およびハンドヘルドスマートホン902のそれぞれは、開示された実施形態に係るタッチスクリーンインターフェース903および集積プロセッサー904を備える。
たとえば、一実施形態では、システムは、タブレットコンピューティング装置901またはハンドへルドスマートホン902を実現しており、システムの表示ユニットは、タブレットもしくはスマートホンのタッチスクリーンインターフェース903を有し、メモリと、集積プロセッサーとして動作する集積回路とがタブレットもしくはスマートホンに組み込まれており、集積プロセッサーは、階層的キャッシュ設計においてキャッシュ間で効率的な通信を行うべく本明細書に記載された実施形態の1つ以上を実施する。一実施形態では、タブレットもしくはスマートホンの上記の集積回路もしくは図示の集積プロセッサーは、タブレットコンピューティング装置もしくはスマートホンの中央演算処理装置として機能する集積シリコンプロセッサーである。
図10は、内部でタッチスクリーンインターフェースコネクターが使用されているタブレットコンピューティング装置、スマートホン、もしくはその他の移動体装置の実施形態のブロック図1000である。プロセッサー1010は、一次処理動作を実行する。オーディオシステム1020は、コンピューティング装置に対するオーディオ機能の提供に関連するハードウェア(たとえば、オーディオハードウェアおよびオーディオ回路)およびソフトウェア(たとえば、ドライバー、コーデック等)要素を表す。一実施形態では、ユーザーは、プロセッサー1010により受信され処理されるオーディオコマンドを与えることによりタブレットコンピューティング装置もしくはスマートホンとやり取りする。
表示サブシステム1030は、ユーザーがタブレットコンピューティング装置もしくはスマートホンとやり取りするための視覚的および/または触覚的な表示を提供するハードウェア(たとえば、表示装置)およびソフトウェア(たとえば、ドライバー)要素を表す。表示サブシステム1030は、ユーザーに表示を与えるべく使用される特定のスクリーンもしくはハードウェア装置を含む表示インターフェース1032を有する。一実施形態では、表示サブシステム1030は、ユーザーに対して出力および入力の両方を提供するタッチスクリーンを有する。
I/Oコントローラー1040は、ユーザーとのやり取りに関連するハードウェア装置およびソフトウェア要素を表す。I/Oコントローラー1040は、オーディオサブシステム1020および/または表示サブシステム1030の一部のハードウェアを管理するべく動作することができる。さらに、I/Oコントローラー1040は、タブレットコンピューティング装置もしくはスマートホンに接続され、それを使用することでユーザーがやり取りできる追加的装置用の接続ポイントを図示する。一実施形態では、I/Oコントローラー1040は、タブレットコンピューティング装置もしくはスマートホンに含めることができる加速度計、カメラ、光センサー、もしくはその他の環境センサー、またはその他のハードウェア等の装置を管理する。入力は、直接的なユーザーインターフェースの一部であってよく、また、タブレットコンピューティング装置もしくはスマートホンに環境的な入力を与えるものであってもよい。
一実施形態では、タブレットコンピューティング装置もしくはスマートホンは、バッテリー電力の利用、バッテリーの充電、および、節電動作に関連する特性を管理する電力管理1050を備える。メモリサブシステム1060は、タブレットコンピューティング装置もしくはスマートホンに情報を記憶するためのメモリ装置を有する。接続性1070は、外部装置と通信するべく、タブレットコンピューティング装置もしくはスマートホンに、ハードウェア装置(たとえば、無線および/または有線のコネクターおよび通信ハードウェア)およびソフトウェア要素(たとえば、ドライバー、プロトコルスタック等)を与える。セルラー接続性(cellular connectivity)1072は、たとえば、GSM(登録商標)(グローバル・システム・フォー・モバイル・コミュニケーションズ)、CDMA(符号分割多重アクセス)、TDM(時分割多重化)、またはその他のセルラーサービス規格等の無線キャリアを含んでよい。無線接続性1074は、たとえば、セルラーでない活動、たとえば、パーソナルエリアネットワーク(たとえば、ブルートゥース)、ローカルエリアネットワーク(たとえば、ワイファイ)、および/またはワイドエリアネットワーク(たとえば、ワイマックス)、またはその他の無線通信等を含んでよい。
周辺接続1080は、その他のコンピューティング装置に周辺装置(「to」1082)として周辺接続を行うための、また周辺装置(「from」1084)をタブレットコンピューティング装置もしくはスマートホンに接続するためのハードウェアインターフェースおよびコネクターを含み、これらとしては、たとえばその他のコンピューティング装置に接続するための「ドッキング」コネクターが挙げられる。周辺接続1080は、たとえば、ユニバーサルシリアルバス(USB)コネクター、ミニディスプレイポート(MDP)を含むディスプレイポート、高解像度マルチメディアインターフェース(HDMI(登録商標))、ファイヤーワイヤー等の共通のコネクター、もしくは規格に準拠したコネクターを含む。
図11は、一実施形態に係るIPコア開発を示すブロック図である。記憶媒体1130は、シミュレーションソフトウェア1120、および/またはハードウェアもしくはソフトウェアのモデル1110を含む。一実施形態では、メモリ1140(たとえば、ハードディスク)、有線接続(たとえば、インターネット)1150、もしくは無線接続1160を介してIPコア設計を表すデータを記憶媒体1130に提供することができる。シミュレーションツールおよびモデルにより生成されたIPコア情報を製造設備1165に送ることができ、製造設備では、第三者によって、少なくとも1つの実施形態に係る少なくとも1つの命令を実行するよう製造することができる。
いくつかの実施形態では、1つ以上の命令を第1の種類または第1のアーキテクチャ(たとえば、×86)に対応させて、異なる種類または異なるアーキテクチャ(たとえば、ARM)のプロセッサー上に翻訳もしくはエミュレートしてよい。したがって、一実施形態に係る命令は、ARM、×86、MIPS、GPU、またはその他のプロセッサー種類もしくはアーキテクチャを含む、任意のプロセッサーもしくはプロセッサー種類上で実行してよい。
図12は、一実施形態にしたがって、第1の種類の命令を異なる種類のプロセッサーによりエミュレートする方法を示す。図12では、プログラム1205は、一実施形態に係る命令と同一もしくは実質的に同一の機能を果たすいくつかの命令を含む。しかし、プログラム1205の命令は、プロセッサー1215とは異なる、もしくはプロセッサー1215とは相容れない種類および/またはフォーマットのものである場合があり、プログラム1205に含まれる種類の命令は、プロセッサー1215によりネイティブ実行できないかもしれない。しかし、エミュレーションロジック1210による補助があれば、プログラム1205の命令は、プロセッサー1215によりネイティブ実行可能な命令に翻訳される。一実施形態では、エミュレーションロジックは、ハードウェアにより実現される。別の実施形態では、エミュレーションロジックは、プログラム1205に含まれる種類の命令を、プロセッサー1215によりネイティブ実行可能な種類に翻訳するためのソフトウェアを含む有形の機械読出し可能媒体により実現される。別の実施形態では、エミュレーションロジックは、機能が固定したハードウェアもしくはプログラマブルなハードウェアと、有形の機械読出し可能媒体に格納されたプログラムとの組み合わせである。一実施形態では、プロセッサーがエミュレーションロジックを含むが、別の実施形態では、エミュレーションロジックはプロセッサーの外に存在し、第三者により提供される。一実施形態では、プロセッサーは、プロセッサーに含まれる、もしくはプロセッサーに関連するマイクロコードもしくはファームウェアを実行することにより、ソフトウェアを含む有形の機械読出し可能媒体により実現されるエミュレーションロジックをロードすることができる。
図13は、本発明の実施形態に係る、ソース命令セットに含まれるバイナリ命令を対象命令セットのバイナリ命令に変換するためのソフトウェア命令変換機の使用を対比するブロック図である。図示の実施形態では、命令変換機はソフトウェアによる命令変換機であるが、命令変換機は、ソフトウェア、ファームウェア、ハードウェア、またはこれらの多様な組み合わせにより実装してよい。図13では、高水準言語1302のプログラムを×86コンパイラー1304によりコンパイルして、少なくとも1つの×86命令セットコアを含むプロセッサー1316によりネイティブ実行される×86バイナリコード1306を生成する様子を示す。少なくとも1つの×86命令セットコアを含むプロセッサー1316は、少なくとも1つの×86命令セットコアを含むインテル社製のプロセッサーと実質的に同一の結果を達成するべく、(1)インテル社製の×86命令セットコアの命令セットの実質的な部分、または(2)少なくとも1つの×86命令セットコアを含むインテル社製のプロセッサー上で実行されるべく意図されたオブジェクトコード型のアプリケーションもしくはその他のソフトウェア、を互換的に実行または処理することにより、少なくとも1つの×86命令セットコアを含むインテル社製のプロセッサーと実質的に同一の機能を実行することができる任意のプロセッサーを表す。×86コンパイラー1304は、少なくとも1つの×86命令セットコアを含むプロセッサー1316上で追加的なリンケージ処理の有無に拘らず実行できる×86バイナリコード1306(たとえば、オブジェクトコード)を生成するべく動作するコンパイラーを示す。同様に、図13では、高水準言語1302のプログラムを別の命令セットコンパイラー1308を使用してコンパイルして、少なくとも1つの×86命令セットコアを含まないプロセッサー1314(たとえば、カリフォルニア州サニーベールのMIPSテクノロジー社製のMIPS命令セットを実行する、および/またはカリフォルニア州サニーベールのARMホールディングス社製のARM命令セットを実行するコアを含むプロセッサー)によりネイティブ実行される別の命令セットバイナリコード1310を生成する様子を示す。命令変換機1312は、×86バイナリコード1306を、少なくとも1つの×86命令セットコアを含まないプロセッサー1314によりネイティブ実行されるコードに変換するべく使用される。変換されたこのコードは、別の命令セットバイナリコード1310と同一となることはほぼなく、それは、それが可能な命令変換機を作成するのが困難であるからであるが、しかし、変換されたコードは一般的な動作を実行するであろうし、別の命令セットからの命令により構成されるであろう。したがって、命令変換機1312は、エミュレーション、シミュレーション、またはその他の処理により、×86命令セットプロセッサーもしくはコアを含まないプロセッサーもしくはその他の電子デバイスが×86バイナリコード1306を実行できるようにするソフトウェア、ファームウェア、ハードウェア、もしくはそれらの組み合わせを表す。
本明細書に開示された内容は、例示として、特定の実施形態の観点から記載されたが、権利請求される実施形態は、明示的に列挙され開示された実施形態に限定されないことは理解されるべきである。反対に、開示内容は、当業者には明白な多様な変形および類似の構成を含むことを意図されている。したがって、添付の特許請求の範囲は、これらの変形および類似の構成を全て包含するよう最も広い解釈が与えられるべきである。上記の記載は、限定ではなく例示であることが意図されていることは理解されるべきである。上記の記載を読み理解することで当業者にはその他多くの実施形態が明らかになるであろう。したがって、開示された内容の範囲は、添付の特許請求の範囲、および特許請求の範囲に与えられる均等の全範囲を参照して決定されるべきである。本願によれば、以下の構成もまた開示される。
(項目1)
データバスと、
前記データバスに通信可能にインターフェースされた低レベルキャッシュと、
前記データバスに通信可能にインターフェースされた高レベルキャッシュと、
前記データバスに通信可能にインターフェースされた1つ以上のデータバッファであって、それぞれ、キャッシュライン全体をバッファリングするバッファメモリ、前記データバッファのそれぞれの状態を示す1つ以上の制御ビット、および前記キャッシュライン全体に対応付けられたアドレスを有する1つ以上のデータバッファと、
1つ以上のデータレスバッファであって、キャッシュライン全体を格納することが不可能であり、前記データレスバッファのそれぞれの状態を示す1つ以上の制御ビット、および前記データレスバッファのそれぞれに対応付けられるキャッシュ間転送ラインのアドレスを有する1つ以上のデータレスバッファと、
前記データバスを介して前記高レベルキャッシュから前記キャッシュ間転送ラインを要求し、前記データバスから前記低レベルキャッシュに前記キャッシュ間転送ラインを書き込むキャッシュ間転送ロジックと
を備える集積回路。
(項目2)
前記キャッシュ間転送ロジックが前記キャッシュ間転送ラインを要求することは、
前記キャッシュ間転送ロジックが、前記低レベルキャッシュでのキャッシュミスに応答して、前記キャッシュ間転送ラインに前記1つ以上のデータレスバッファのうち1つを割り当てることと、
前記キャッシュ間転送ロジックが、割り当てた前記データレスバッファを迂回して、前記データバスから前記低レベルキャッシュに直接的に前記キャッシュ間転送ラインを方向付けることと
を有する項目1に記載の集積回路。
(項目3)
前記キャッシュ間転送ロジックは、前記低レベルキャッシュでの前記キャッシュミスに応答して、前記キャッシュ間転送ラインを要求することをさらに有する項目2に記載の集積回路。
(項目4)
前記キャッシュ間転送ロジックが、割り当てた前記データレスバッファを迂回して、前記データバスから前記低レベルキャッシュに直接的に前記キャッシュ間転送ラインを方向付けることは、前記キャッシュ間転送ロジックが、前記キャッシュ間転送ラインを前記低レベルキャッシュに挿入するための置換動作を開始することを含む項目2または3に記載の集積回路。
(項目5)
前記置換動作は、前記高レベルキャッシュから前記キャッシュ間転送ラインの要求と同時に開始される項目4に記載の集積回路。
(項目6)
前記置換動作は、
前記低レベルキャッシュから追い出されるキャッシュラインを、追い出される前記キャッシュラインが、前記低レベルキャッシュにおいて現在競合が存在しない部分に存在することに少なくとも部分的に基づいて選択することと、
前記キャッシュラインの前記追い出しにより利用可能となった位置に前記キャッシュ間転送ラインを方向付けることと
を含む項目4または5に記載の集積回路。
(項目7)
前記キャッシュ間転送ロジックは、さらに、追い出された前記キャッシュラインをバッファリングするべく、複数の前記データバッファのうち1つを割り当て、追い出された前記キャッシュラインを、割り当てた前記データバッファに方向付ける項目6に記載の集積回路。
(項目8)
前記低レベルキャッシュは、2つ以上のグループに配置された複数のメモリセルを有し、
前記2つ以上のグループのそれぞれは、前記グループのそれぞれにおける2つの別々のメモリセルに対する同時の書き込み/書き込み動作、読み出し/読み出し動作、もしくは書き込み/読み出し動作を可能にするマルチプレクサー(mux)を介してアクセスされる
項目1から7のいずれか1項に記載の集積回路。
(項目9)
前記キャッシュ間転送ロジックが、前記データバスから前記低レベルキャッシュに前記キャッシュ間転送ラインを書き込むことは、前記キャッシュ間転送ロジックが、
前記2つ以上のグループのうち、書き込み動作が可能な1つを識別し、
識別した前記グループを選択し、
選択された前記グループを担当するエージェントに、前記データバスから選択された前記グループに前記キャッシュ間転送ラインを書き込ませる
ことを含む項目8に記載の集積回路。
(項目10)
前記キャッシュ間転送ロジックが、前記データバスから前記低レベルキャッシュに前記キャッシュ間転送ラインを書き込むことは、前記キャッシュ間転送ロジックが、
前記2つ以上のグループの全てで競合を識別し、
前記グループのうち1つに対する書き込み動作をストールし、
ストールされた前記書き込み動作に対応する前記グループを担当するエージェントに、前記データバスから当該グループに前記キャッシュ間転送ラインを書き込ませる
ことを含む項目8または9に記載の集積回路。
(項目11)
前記低レベルキャッシュは、前記集積回路の内部に組み込まれたオンチップレベル1キャッシュ(L1キャッシュ)であり、
前記高レベルキャッシュは、前記集積回路の内部に組み込まれたオンチップレベル2キャッシュ(L2キャッシュ)である
項目1から10のいずれか1項に記載の集積回路。
(項目12)
前記オンチップレベル1キャッシュまたはオンチップレベル2キャッシュは、さらに、オフチップレベル3キャッシュ(L3キャッシュ)と通信して、前記L3キャッシュから、前記オンチップレベル1キャッシュおよび前記オンチップレベル2キャッシュの一方に対するキャッシュ間転送を実行する項目11に記載の集積回路。
(項目13)
前記低レベルキャッシュまたは前記高レベルキャッシュに格納された既存のキャッシュラインについてのキャッシュ更新は、前記1つ以上のデータバッファのうち1つにバッファリングされ、
前記1つ以上のデータバッファを監視するスケジューラーは、前記既存のキャッシュラインに対応する前記低レベルキャッシュまたは前記高レベルキャッシュに対する利用可能な書き込みポートを確保し、前記既存のキャッシュラインを置換するべく、前記低レベルキャッシュまたは前記高レベルキャッシュに前記キャッシュ更新を書き込む
項目1から12のいずれか1項に記載の集積回路。
(項目14)
前記高レベルキャッシュから返された前記キャッシュ間転送ラインは、キャッシュライン全体と、制御データとを含み、
前記1つ以上のデータレスバッファのうち1つは、前記1つ以上の制御ビットにより前記制御データを記憶し、
前記データレスバッファのそれぞれは、前記制御データとともに返された前記キャッシュライン全体を格納しない
項目1から13のいずれか1項に記載の集積回路。
(項目15)
タブレットコンピューティング装置およびスマートホンのうち一方用の中央演算処理装置を備える項目1から14のいずれか1項に記載の集積回路。
(項目16)
表示ユニットと、
集積回路と
を備えるシステムであって、
前記集積回路は、
データバスと、
前記データバスに通信可能にインターフェースされた低レベルキャッシュと、
前記データバスに通信可能にインターフェースされた高レベルキャッシュと、
前記データバスに通信可能にインターフェースされた1つ以上のデータバッファであって、それぞれ、キャッシュライン全体をバッファリングするバッファメモリ、前記データバッファのそれぞれの状態を示す1つ以上の制御ビット、および前記キャッシュライン全体に対応付けられたアドレスを有する1つ以上のデータバッファと、
1つ以上のデータレスバッファであって、キャッシュライン全体を格納することが不可能であり、前記データレスバッファのそれぞれの状態を示す1つ以上の制御ビット、および前記データレスバッファのそれぞれに対応付けられるキャッシュ間転送ラインのアドレスを有する1つ以上のデータレスバッファと、
前記データバスを介して前記高レベルキャッシュから前記キャッシュ間転送ラインを要求し、前記データバスから前記低レベルキャッシュに前記キャッシュ間転送ラインを書き込むキャッシュ間転送ロジックと
を有するシステム。
(項目17)
前記システムは、タブレットもしくはスマートホンを実現し、
前記表示ユニットは、前記タブレットもしくは前記スマートホンのタッチスクリーンインターフェースを有し、
前記集積回路は、前記タブレットもしくは前記スマートホンに組み込まれている
項目16に記載のシステム。
(項目18)
前記キャッシュ間転送ロジックが前記キャッシュ間転送ラインを要求することは、
前記キャッシュ間転送ロジックが、前記低レベルキャッシュでのキャッシュミスに応答して前記キャッシュ間転送ラインに前記1つ以上のデータレスバッファのうち1つを割り当てることと、
前記キャッシュ間転送ロジックが、割り当てた前記データレスバッファを迂回して、前記データバスから前記低レベルキャッシュに直接的に前記キャッシュ間転送ラインを方向付けることと
を有する項目16または17に記載のシステム。
(項目19)
前記キャッシュ間転送ロジックが、割り当てた前記データレスバッファを迂回して、前記データバスから前記低レベルキャッシュに直接的に前記キャッシュ間転送ラインを方向付けることは、前記キャッシュ間転送ロジックが、前記低レベルキャッシュに前記キャッシュ間転送ラインを挿入するための置換動作を開始することを含む項目18に記載のシステム。
(項目20)
前記置換動作は、前記高レベルキャッシュから前記キャッシュ間転送ラインの要求と同時に開始される項目19に記載のシステム。
(項目21)
前記置換動作は、
前記低レベルキャッシュから追い出されるキャッシュラインを、追い出される前記キャッシュラインが、前記低レベルキャッシュにおいて現在競合が存在しない部分に存在することに少なくとも部分的に基づいて選択することと、
前記キャッシュラインの前記追い出しにより利用可能となった位置に前記キャッシュ間転送ラインを方向付けることと
を含む項目19または20に記載のシステム。
(項目22)
データバスを介して低レベルキャッシュに通信可能にインターフェースされた高レベルキャッシュに対応データが存在する前記低レベルキャッシュでのキャッシュミスを受け付ける段階と、
前記低レベルキャッシュでの前記キャッシュミスに応答して前記高レベルキャッシュからキャッシュ間転送ラインを要求する段階と、
前記キャッシュ間転送ラインを格納することが不可能であり、データレスバッファの状態を示す制御ビット、および前記データレスバッファに対応付けられるキャッシュ間転送ラインのアドレスを有する前記データレスバッファを前記キャッシュ間転送ラインに割り当てる段階と、
前記キャッシュ間転送ラインを前記データバス上で受け取り、全キャッシュバッファを迂回して前記データバスから前記低レベルキャッシュに前記キャッシュ間転送ラインを書き込むことにより、前記高レベルキャッシュから前記低レベルキャッシュに前記キャッシュ間転送ラインを転送する段階と
を備える集積回路で用いられる方法。
(項目23)
キャッシュ間転送ロジックが、前記キャッシュ間転送ラインを要求し、
前記キャッシュ間転送ロジックは、さらに、前記低レベルキャッシュでの前記キャッシュミスに応答して前記キャッシュ間転送ラインに前記データレスバッファを割り当て、
前記キャッシュ間転送ロジックは、割り当てた前記データレスバッファを迂回して前記データバスから前記低レベルキャッシュに直接的に前記キャッシュ間転送ラインを方向付ける
項目22に記載の方法。
(項目24)
前記キャッシュ間転送ロジックが、割り当てた前記データレスバッファを迂回して前記データバスから前記低レベルキャッシュに直接的に前記キャッシュ間転送ラインを方向付けることは、前記キャッシュ間転送ロジックが、前記低レベルキャッシュに前記キャッシュ間転送ラインを挿入するための置換動作を開始することを含む項目23に記載の方法。
(項目25)
前記置換動作は、前記高レベルキャッシュから前記キャッシュ間転送ラインの要求と同時に開始される項目24に記載の方法。
(項目26)
前記置換動作は、
前記低レベルキャッシュから追い出されるキャッシュラインを、追い出される前記キャッシュラインが、前記低レベルキャッシュにおいて現在競合が存在しない部分に存在することに少なくとも部分的に基づいて選択することと、
前記キャッシュラインの前記追い出しにより利用可能となった位置に前記キャッシュ間転送ラインを方向付けることと
を含む項目24または25に記載の方法。