(58)【調査した分野】(Int.Cl.,DB名)
少なくとも1つのキャッシュラインを再取得するストア命令を、前記少なくとも1つのキャッシュラインの状態によって示される前記ストア命令の状態と、前記ストア命令の実行段階と、前記ストア命令の少なくとも1つの以前の再生が、前記少なくとも1つのキャッシュラインの状態を、前記ストア命令がコミットするのを許可する書込み可能な状態により近くなるように変更したかどうかの決定と、に基づいて再生するかどうかを決定することと、
前記ストア命令を再生すると決定したことに応じて、前記ストア命令を再生することと、を含む、方法。
前記ストア命令の状態は、前記書込み可能な状態、前記ストア命令に対する前記少なくとも1つのキャッシュラインが、キャッシュに存在しないが、取得されるプロセスに存在する保留状態、又は、前記ストア命令に対する前記少なくとも1つのキャッシュラインが、キャッシュに存在せず、取得されるプロセスにも存在しない再生状態を含む、請求項1に記載の方法。
前記ストア命令を再生するかどうかを決定することは、前記少なくとも1つのキャッシュラインの状態を前記書込み可能な状態により近くなるように変更する前記ストア命令の、前記実行段階の間での良好な再生の構成可能な数に基づいて、前記ストア命令を再生するかどうかを決定することを含む、請求項1に記載の方法。
前記ストア命令が完了したが、前記ストア命令が退避しておらず、且つ、前記ストア命令の完了後に前記ストア命令が構成可能な数の再生を実行していないと決定したことに応じて、前記ストア命令を再生することを含む、請求項3に記載の方法。
前記ストア命令が退避したが、前記ストア命令がストアキュー内で最も古いストア命令ではなく、且つ、前記ストア命令が退避してから前記ストア命令が、前記少なくとも1つのキャッシュラインの状態を前記書込み可能な状態により近くなるように変更する再生を実行していないと決定したことに応じて、前記ストア命令を再生することを含む、請求項4に記載の方法。
前記ストア命令が前記ストアキュー内で最も古いストア命令であるが、前記ストア命令がコミットしていないと決定したことに応じて、前記少なくとも1つのキャッシュラインが前記書込み可能な状態になるまで、前記ストア命令を再生することを含む、請求項5に記載の方法。
前記ストア命令を再生することは、フェアネスアルゴリズム、ラウンドロビン調停、経時調停又は実装時固有アルゴリズムを用いて、再生の資格がある複数のストア命令から前記ストア命令を選択することを含む、請求項4に記載の方法。
少なくとも1つのキャッシュラインを再取得するストア命令を、前記少なくとも1つのキャッシュラインの状態によって示される前記ストア命令の状態と、前記ストア命令の実行段階と、前記ストア命令の少なくとも1つの以前の再生が、前記少なくとも1つのキャッシュラインの状態を、前記ストア命令がコミットするのを許可する書込み可能な状態により近くなるように変更したかどうかの決定と、に基づいて再生するべきかどうかを決定するように構成可能なストアキュー回路を備える、装置。
前記ストアキュー回路は、前記ストア命令の前記状態を決定するように構成可能な状態機械を備え、前記ストア命令の状態は、前記書込み可能な状態、前記ストア命令に対する前記少なくとも1つのキャッシュラインが前記キャッシュ内に存在しないが、取得されるプロセスにある保留状態、または、前記ストア命令に対する前記少なくとも1つのキャッシュラインが前記キャッシュ内に存在しないが、取得されるプロセスにはない再生状態を含む、請求項8に記載の装置。
前記ストアキュー回路は、前記少なくとも1つのキャッシュラインの状態を前記書込み可能な状態により近くなるように変更する前記ストア命令の、前記実行段階の間での再生の構成可能な数に基づいて、前記ストア命令を再生するかどうかを決定するように構成可能である、請求項8に記載の装置。
再生論理であって、前記ストア命令が完了したが、前記ストア命令が退避しておらず、且つ、前記ストア命令の完了後に、前記再生論理が前記ストア命令の構成可能な数の再生を実行していないと前記ストアキュー回路が決定したことに応じて、前記ストア命令を再生するように構成可能な再生論理を備える、請求項10に記載の装置。
前記再生論理は、前記ストア命令が退避したが、前記ストア命令が前記ストアキュー回路内のストアキュー内で最も古いストア命令ではなく、且つ、前記ストア命令が退避してから前記再生論理が、前記少なくとも1つのキャッシュラインの状態を前記書込み可能な状態により近くなるように変更する前記ストア命令の良好な再生を実行していないと前記ストアキュー回路が決定したことに応じて、前記ストア命令を再生するように構成可能である、請求項11に記載の装置。
前記再生論理は、前記ストア命令が前記ストアキュー内で最も古いストア命令であるが、前記ストア命令がコミットしていないと前記ストアキュー回路が決定したことに応じて、前記少なくとも1つのキャッシュラインが前記書込み可能な状態になるまで、前記ストア命令を再生するように構成可能である、請求項12に記載の装置。
調停ユニットと、フェアネスアルゴリズム、ラウンドロビン調停、経時調停又は実装時固有アルゴリズムを用いて、再生の資格がある複数のストア命令から前記ストア命令を選択するように構成可能なマルチプレクサと、を備える、請求項11に記載の装置。
【発明を実施するための形態】
【0008】
本明細書の実施形態は、様々な変更および代替形態が可能であるが、これらの特定の実施形態は、図面において実施例として示されており、本明細書に詳細に記載されている。しかしながら、本明細書における特定の説明は、開示された実施形態を、開示された特定の形態に限定することを意図するものではなく、逆に、添付の特許請求の範囲によって定義された、開示された実施形態の範囲に含まれる全ての変更、均等物および代替を包含することが意図されることが理解されるべきである。
【0009】
本願の例示的な実施形態が以下に説明される。明確さのために、実際の実装形態の全ての特徴が本明細書に記載されるわけではない。当然のことながら、かかる実際の実施形態の開発において、1つの実装形態から別の実装形態まで様々となり得る開発者の特定の目的(例えば、システム関連および/または事業関連の制約の順守など)を達成するために、多くの実装形態特有の決定が行われ得ることが理解されるであろう。さらに、このような開発努力は、複雑で、且つ、時間がかかり得るが、それにもかかわらず本開示の利益を得る当業者にとっては日常的な作業となり得ることが理解される。
【0010】
本出願の実施形態は、添付の図面を参照して説明される。様々な構造、接続、システムおよびデバイスは、単に説明のために図面に概略的に示されており、開示された発明が、当業者に周知の詳細事項によって不明瞭にならないように示されている。それでもなお、添付の図面は、本実施形態の例示的な実施例を記載および説明するために含まれている。本明細書に使用される用語および語句は、当業者によるこれらの用語および語句の理解と一致する意味を有するものとして理解され、解釈されるべきである。用語または語句の何れかの特有の定義、すなわち、当業者によって理解される通常かつ慣習的意味と異なる定義も、本明細書の用語または語句の一貫した使用によって含意されることが意図されるものではない。用語または語句が特有の意味、すなわち、当業者によって理解されるもの以外の意味を有することが意図される限りでは、このような特有の定義は、その用語または語句に対する特有の定義を直接的かつ明白に提供する定義的様式で本明細書に明示的に記載される。
【0011】
本明細書で使用される「実質的に」および「おおよそ」という用語は、85%、90%、95%、98%および/または99%以内を意味することができる。場合によっては、当業者によって理解されるように、「実質的に」および「おおよそ」という用語は、差を認識できるが、その差が軽視できるか、または、無視されるほど十分に小さいものであり得ることを示し得る。また、「おおよそ」という用語は、1つの値が別の値にほぼ等しい文脈で使用される場合に、これらの値が互いに「ほぼ」等しいことを意味することができる。例えば、測定の場合に、これらの値は、当業者によって等しいと判断されるほど十分に近い場合がある。
【0012】
本明細書で述べられるように、データは、キュー、メモリ、キャッシュ、バッファ、レジスタ、フリップフロップなど(これらに限定されない)を含む様々なデータ記憶構造に「維持され」、「保持され」、「保たれ」および/または「記憶され」得る。「維持され」、「保持され」、「保たれ」および/または「記憶され」という用語は、本明細書において同義的かつ交換可能に使用され得る。
【0013】
本明細書で述べられるように、「キャッシュ可能なストア」は、処理デバイス(例えば、シングルおよびマルチコアマイクロプロセッサ(CPU)ならびにグラフィックプロセッサ(GPU)、または、それらの個々の処理コア)のキャッシュ(例えば、限定されないが、L1データキャッシュまたはL2データキャッシュ)に記憶される1つ以上のデータまたはデータ要素のグループであり得る。本明細書で述べられるように、「キャッシュ可能なストア」は、記憶されるキャッシュにコミットされ、または書き込まれ得る。本明細書で述べられるように、「キャッシュ可能なストア」は、キャッシュ内のストアを完了するように1回以上実行され得る。キャッシュ可能なストアのキャッシュラインを取得するための後続の実行は、「再生」または「再実行」と呼ばれ得る。キャッシュ可能なストアの実行は、キャッシュ可能なストアが選択される間の「ピック(pick)」とも呼ばれ、本開示の利益を得る当業者に明らかであるように、CPUなどの実行パイプラインを通じて処理され得る。
【0014】
本明細書に示される実施形態は、概して、処理デバイス内のキャッシュ可能なストアの再生ポリシーを実装するための方法および装置に関する。上述したように、処理デバイス(例えば、シングルおよびマルチコアマイクロプロセッサ(CPU)ならびにグラフィックプロセッサ(GPU)、または、それらの個々の処理コア)は、新たなデータをキャッシュに書き込むためにキャッシュ可能なストアを実行することができる。そうするために、キャッシュ可能なストアは、キャッシュラインがキャッシュ(例えば、データキャッシュ)内に存在し、書き込み可能な状態になることを必要とし得る。しかしながら、キャッシュ可能なストアが実行を開始するときに存在したキャッシュラインは、キャッシュ可能なストアが新たなデータをキャッシュに書き込むことによってキャッシュラインをコミットしようとするときに、キャッシュ内に存在しない可能性がある。例えば、キャッシュ可能なストアのキャッシュラインは、キャッシュ可能なストアの実行中に、他のCPU、他のCPUコア、および/または、システム内の他のデバイスによってキャッシュ外からプローブ(probe)され得る。キャッシュ可能なストアは、データをキャッシュに書き込むために、キャッシュラインを再取得することが必要とされてもよく、このことは、再生を実行することとして既に知られている。キャッシュ可能なストアの初期の実行または再生中に、キャッシュ可能なストアは、例えば、そのデータ、そのメモリアドレス、実行または再生の結果などのような、キャッシュ可能なストアの様々な状態および/または属性が追跡され得るストアキュー(SQ)内に保たれ得る。さらに、キャッシュ可能なストアの再生は、本明細書にさらに詳細に述べられるように、1つ以上の再生ポリシーに従って実行され得る。
【0015】
本明細書に述べられる実施形態では、システム競合要因に対してキャッシュラインの早期取得の平衡を保つ再生ポリシーに従って実行および再生を実行することによって、キャッシュ可能なストアの効率的な実行および再生が可能になる。いくつかの実施形態では、特定の再生ポリシーは、キャッシュ可能なストアの実行の様々な段階と関連するか、それに依存する。いくつかの実施形態では、システムは、キャッシュラインの状態およびストアの実行段階に基づいて、ストアに対する少なくとも1つのキャッシュラインを再取得するストアを再生するべきか否かを決定する。例えば、システムは、ストアが完了し、退避し、または、ストアキュー内の最も古いストアになったかどうかに応じて、ストアを再生するべきか否かを決定することができる。また、システムは、ストアの少なくとも1つの以前の再生の少なくとも1つの結果に基づいて、ストアを再生するべきか否かを決定することができる。例えば、再生によって、キャッシュラインの状態が、ストアがコミットするのを許可する書き込み可能な状態により近い状態に変更される場合には、当該再生は「良好な再生」とみなされ得る。再生によって、キャッシュラインの状態が、書き込み可能な状態により近い状態に変更されない場合には、当該再生は「不良再生」とみなされ得る。ストアは、構成可能な数の良好な再生を有するまで再生され得る。また、ストアは、例えば、キャッシュラインが書き込み可能な状態になるまで、必要に応じて再生され得る。しかしながら、ストアを再生するべきかを決定するために、他のポリシーが代替的に使用され得る。
【0016】
ここで
図1を参照すると、いくつかの実施形態によるコンピュータシステム100のブロック図が示されている。様々な実施形態では、コンピュータシステム100は、パーソナルコンピュータ、ラップトップコンピュータ、ハンドヘルドコンピュータ、タブレットコンピュータ、モバイルデバイス、電話、携帯情報端末(「PDA」)、サーバ、メインフレーム、作業端末、音楽プレーヤ、スマートテレビなどであってもよく、これらの全ては、処理デバイスと総称され得る。コンピュータシステム100は、コンピュータのマザーボード、回路基板またはプリント回路基板、デスクトップコンピュータの筐体および/またはタワー、ラップトップコンピュータベース、サーバ筐体、モバイルデバイスの一部、携帯情報端末(「PDA」)などであり得る主構造110を含む。いくつかの実施形態では、主構造110は、グラフィックカード120を含む。グラフィックカード120は、Advanced Micro Devices(「AMD」)製のRadeon(商標)グラフィックカードであってもよいし、メモリを使用する任意の他のグラフィックカードであってもよい。グラフィックカード120は、周辺構成要素相互接続(「PCI」)バス(図示せず)、PCIエクスプレスバス(図示せず)、アクセラレイティッドグラフィックポート(「AGP」)バス(図示せず)、または、任意の他のコンピュータシステム接続に接続され得る。本願の実施形態は、メインコンピュータ構造110へのグラフィックカード120の接続によって限定されないことに留意すべきである。いくつかの実施形態では、コンピュータシステム100は、Linux(登録商標)、UNIX(登録商標)、Windows(登録商標)、Mac OS(登録商標)などのオペレーティングシステムを実行する。1つ以上の実施形態では、コンピュータシステム100は、様々な動作中にコンピュータシステム100によって使用される値を記憶するように適合された1つ以上のシステムレジスタ(図示せず)を含むことができる。
【0017】
いくつかの実施形態では、グラフィックカード120は、グラフィックデータを処理する際に使用されるグラフィック処理ユニット(GPU)125などの処理デバイスを含む。GPU125は、例えば1つ以上のキャッシュ130などの、1つ以上の組み込まれたメモリ、または、組み込まれていないメモリを含むことができる。GPUのキャッシュ130は、L1、L2、または、より高いレベルのグラフィック固有/関連の命令、データなどであってもよい。様々な実施形態では、組み込まれたメモリは、組み込まれたたランダムアクセスメモリ(「RAM」)、組み込まれたスタティックランダムアクセスメモリ(「SRAM」)、または、組み込まれたダイナミックランダムアクセスメモリ(「DRAM」)であってもよい。いくつかの実施形態では、メモリは、例えば、
図1に示されるようなグラフィックカード120のDRAM155としてGPU125内に組み込まれてもよいし、および/または、グラフィックカード120上にあってもよい。様々な実施形態では、グラフィックカード120は、回路基板もしくはプリント回路基板、または、ドーターカードなどと呼ばれてもよい。
【0018】
いくつかの実施形態では、コンピュータシステム100は、中央処理装置(「CPU」)140などの処理デバイスを含む。処理デバイスは、ノースブリッジ145に接続され得る。様々な実施形態では、CPU140は、シングルもしくはマルチコアプロセッサであってもよく、または、単一のダイ/チップ(AMD Fusion(商標)APUデバイスなど)上の1つ以上のCPUコアとGPUコアとの組み合わせであってもよい。CPU140は、x86型アーキテクチャ、RISC型アーキテクチャなどであってもよい。いくつかの実施形態では、CPU140は、これらに限定されないが、L1、L2、レベル3以上のデータ、命令、および/または、他のキャッシュタイプなどの、1つ以上のキャッシュ130を含む。いくつかの実施形態では、CPU140は、パイプライン型プロセッサである。CPU140およびノースブリッジ145は、マザーボード(図示せず)またはコンピュータシステム100のいくつかの他の構造上に収容され得る。いくつかの実施形態では、グラフィックカード120は、ノースブリッジ145またはいくつかの他のコンピュータシステム接続を介してCPU140に接続される。例えば、CPU140、ノースブリッジ145、GPU125は、単一のパッケージ内に、または、単一のダイもしくは「チップ」(図示せず)の一部もしくはパッケージの組み合わせとして含まれ得る。主構造110の一部を形成するように示される様々な構成要素の配列を変更した、いくつかの実施形態も企図される。いくつかの実施形態では、ノースブリッジ145は、システムRAM(またはDRAM)155に接続されてもよく、いくつかの実施形態では、システムRAM155は、CPU140に直接接続されてもよい。システムRAM155は、当該技術分野において周知の任意のRAMタイプであってもよく、1つ以上のメモリモジュールを備えることができ、RAM155のタイプは、本願の実施形態を限定しない。例えば、RAM155は、1つ以上のDIMMを含むことができる。この説明に言及されるように、メモリのタイプは、RAM、キャッシュまたは本明細書に言及される任意の他のデータ記憶構造であってもよい。
【0019】
いくつかの実施形態では、ノースブリッジ145は、サウスブリッジ150に接続される。いくつかの実施形態では、ノースブリッジ145およびサウスブリッジ150は、コンピュータシステム100内の同じチップ上に存在する。いくつかの実施形態では、ノースブリッジ145およびサウスブリッジ150は、異なるチップ上に存在する。いくつかの実施形態では、サウスブリッジ150は、コンピュータシステム100内の他の部分にある任意の他のI/Oインターフェース131に加えて、1つ以上のI/Oインターフェース131を有する。様々な実施形態では、サウスブリッジ150は、データ接続またはバス199を用いた、1つ以上のデータ記憶ユニット160に接続され得る。データ記憶ユニット160は、ハードドライブ、ソリッドステートドライブ、磁気テープ、または、データを記憶するために使用される任意の他の書き込み可能な媒体であり得る。いくつかの実施形態では、データ記憶ユニットのうち1つ以上は、USB記憶ユニットであり、データ接続199は、USBバス/接続である。加えて、データ記憶ユニット160は、1つ以上のI/Oインターフェース131を含むことができる。様々な実施形態では、中央処理装置140、ノースブリッジ145、サウスブリッジ150、グラフィック処理ユニット125、DRAM155、および/または、組み込まれたRAMは、コンピュータチップもしくはシリコンベースのコンピュータチップであってもよいし、コンピュータチップもしくはシリコンベースのコンピュータチップの一部であってもよい。1つ以上の実施形態では、コンピュータシステム100の様々な構成要素は、バス195もしくは2つ以上のバス195と動作可能に、電気的に、および/または、物理的に接続されてもよいし、連動されてもよい。
【0020】
いくつかの実施形態では、コンピュータシステム100は、ストアキュー(SQ)回路135を含むことができる。いくつかの実施形態では、SQ回路135は、コンピュータシステム100、CPU140、GPU125、および/または、それらの個々のコア内のキャッシュ可能なストアを実行および再生するための機能を提供するように適合され、または構成されたストアキュー(SQ)および関連した構成要素を含む。いくつかの実施形態では、強要および再生を決定および実行するための機能を提供するように適合された構成要素は、例えば、退避ユニット、リオーダバッファ(ROB)ユニット、欠損アドレスバッファ(MAB)、トランスレーションルックアサイドバッファ(TLB)、ロードストア(LS)ユニット、アドレス生成ユニット(AGU)などの他のシステムブロック、または、SQ回路135および他のシステムブロックの組み合わせによって存在する。SQ回路135の構成要素は、
図5でさらに詳細に示される。SQ回路135は、シリコンダイ/チップを備え、ソフトウェア、ハードウェアおよび/またはファームウェア構成要素を含む。いくつかの実施形態では、SQ回路135は、シリコンダイパッケージまたは電子部品パッケージにパッケージ化される。いくつかの実施形態では、SQ回路135は、これらに限定されないが、CPU140、ノースブリッジ145、グラフィックカード120、および/または、GPU125(もしくはこれらの構成要素の任意のそれぞれのコア)などの既存のコンピュータ部品内に含まれる回路である。いくつかの実施形態では、SQ回路135は、CPU140、GPU125、ノースブリッジ145、RAM/DRAM155、および/または、それらの個々の接続195に通信可能に接続される。本明細書で使用される「SQ回路」または「SQ」(例えば、SQ回路135)という用語は、コンピュータ部品に含まれる物理的SQチップもしくはSQ回路、SQ回路135の回路、または、SQによって実装された機能を指すために使用され得る。SQ回路135は、処理デバイスの一部として機能を果たし、および/または、処理デバイスの一部と呼ばれ得る。いくつかの実施形態では、GPU125、CPU140、SQ回路135、および/または、これらの各々と関連付けられた任意のハードウェア/ソフトウェアコンピュータ100ユニットのいくつかの組み合わせは、処理デバイスとして集合的に機能を果たし、および/または、集合的に処理デバイスと呼ばれ得る。いくつかの実施形態では、CPU140およびSQ回路135、GPU125およびSQ回路135、または、CPU140、ノースブリッジ145およびSQ回路135、ならびに、それらの各々の相互接続部は、処理デバイスとして機能を果たすことができる。
【0021】
いくつかの実施形態では、コンピュータシステム100は、1つ以上の表示ユニット170、入力デバイス180、出力デバイス185、および/または、他の周辺デバイス190に接続される。様々な実施形態では、これらの要素は、コンピュータシステム100の内部または外部であってもよく、本願の実施形態の範囲に影響を与えることなく、有線または無線で接続されてもよいことが企図される。表示ユニット170は、内部または外部モニタ、テレビの画面、ハンドヘルドデバイスのディスプレイなどであってもよい。入力デバイス180は、キーボード、マウス、トラックボール、スタイラス、マウスパッド、マウスボタン、ジョイスティック、スキャナなどのうち何れか1つであってもよい。出力デバイス185は、モニタ、プリンタ、プロッタ、コピー機または他の出力デバイスのうち何れか1つであってもよい。周辺デバイス190は、対応する物理的デジタル媒体に読み込み、および/または、書き込むことができるCD/DVDドライブ、ユニバーサルシリアルバス(「USB」)デバイス、不揮発性メモリ、ジップドライブ、外部フロッピー(登録商標)ドライブ、外部ハードドライブ、電話および/または広帯域モデム、ルータ/ゲートウェイ、アクセスポイントなどの、コンピュータに接続され得る任意の他のデバイスであってもよい。本明細書に記載される入力、出力、表示、周辺デバイス/ユニットは、いくつかの実施形態においてUSB接続を有することができる。コンピュータシステム100の例示的な態様が本明細書に記載されないある程度まで、かかる例示的な態様は、当業者に理解されるように本願の実施形態の趣旨および範囲を限定することなく様々な実施形態に含まれてもよいし、含まれなくてもよい。
【0022】
ここで
図2を参照すると、いくつかの実施形態による、例示的なSQ回路135、CPU140および/またはノースブリッジ145のブロック図が示されている。いくつかの実施形態では、SQ回路135、CPU140および/またはノースブリッジ145は、1つ以上のキャッシュ130を含む。SQ回路135、CPU140および/またはノースブリッジ145は、いくつかの実施形態では、L1、L2または他のレベルのキャッシュ130を含む。SQ回路135、CPU140および/もしくはノースブリッジ145、ならびに/または、1つ以上のキャッシュ130の例示的な態様は、本明細書に記載されないある程度まで、当業者に理解されるように本願の実施形態の範囲を限定することなく様々な実施形態に含まれてもよいし、含まれなくてもよい。
【0023】
ここで
図3を参照すると、いくつかの実施形態では、SQ回路135、CPU140および/もしくはノースブリッジ145、ならびに、キャッシュ130は、シリコンチップ/ダイ340上に、および/または、
図1に示されるコンピュータシステム100部品内に存在することができる。シリコンチップ340は、マザーボード(例えば、110)またはコンピュータシステム100の他の構造上に収容され得る。いくつかの実施形態では、各シリコンチップ/ダイ340上に2つ以上のSQ回路135、CPU140および/もしくはノースブリッジ145、ならびに/または、キャッシュ130があり得る。上述したように、SQ回路135、CPU140および/またはノースブリッジ145の様々な実施形態は、多種多様の電子デバイスに使用され得る。
【0024】
ここで
図4を参照すると、いくつかの実施形態によれば、上述したように、SQ回路135、CPU140および/またはノースブリッジ145のうち1つ以上は、シリコンダイ/チップ340(またはコンピュータチップ)上に含まれ得る。シリコンダイ/チップ340は、SQ回路135、CPU140および/またはノースブリッジ145の1つ以上の異なる構成を含むことができる。シリコンチップ340は、製造設備(またはファブ)390内のシリコンウェハ330上に製造され得る。すなわち、シリコンウェハ330およびシリコンダイ/チップ340は、ファブ390の生産物または製品と呼ばれ得る。シリコンダイ/チップ340は、本開示に上述したような電子デバイスに使用され得る。
【0025】
ここで
図5を参照すると、いくつかの実施形態による、SQ回路135および付随する回路の図形表現が示されている。様々な実施形態では、付随する回路(例えば、ストアキュー(SQ)410、選択ユニット430、再生ユニット440、調停ユニット475など、および、それらの各々の相互接続部)は、SQ回路135の一部として含まれ、SQ回路135の一部と呼ばれ得る。いくつかの実施形態では、SQ回路135は、CPU140、GPU125、および/または、それらの各々のコアの一部であり得る。SQ回路135は、キャッシュ130(例えば、L1データキャッシュおよび/またはL2データキャッシュ)、TLB485、ならびに、リオーダバッファ495(ROB)に通信可能に接続され得る。キャッシュ130、TLB485およびROB495、ならびに、キャッシュ可能なストアの実行に関する追加のCPU140および/またはGPU125部品(図示せず)は、本明細書に詳細に記載されていないが、概して、本開示の利益を有する当業者によって理解される。
【0026】
SQ回路135は、いくつかの実施形態においてストアキュー(SQ)410を含むことができる。SQ410は、実行中に1つ以上のキャッシュ可能なストアを保持または維持するように構成された1つ以上のエントリ413a〜nを含むことができる。SQ410は、エントリ413a〜nの各々が選択ユニット430の入力に接続され得るような様式で選択ユニット430に接続されてもよく、選択ユニット430によって実行される選択の制御は、調停ユニット475から受信した入力信号に応じて実行されてもよい。各SQエントリ413a〜nは、1つ以上の状態ユニット415a〜nと、1つ以上の段階ユニット420a〜nと、1つ以上の再生結果ユニット423a〜nと、1つ以上の再生ポリシーユニット425a〜nと、を含むことができる。
図5に示されるように、状態ユニット415a〜nと、段階ユニット420a〜nと、再生結果ユニット423a〜nとは、それぞれの再生ポリシーユニット425a〜nに接続されてもよいし、それらの個々のデータを再生ポリシーユニット425a〜nに提供するように構成されてもよい。
【0027】
状態ユニット415は、キャッシュ可能なストアと関連付けられた現在および/または過去の状態データを維持するように構成され得る。いくつかの実施形態では、キャッシュ可能なストアの状態は、ストアが書き込むことを意図するキャッシュライン(または複数のライン)の状態によって決定される。例えば、状態は、キャッシュラインが書き込み可能であるか、充填されるか、または未知であることを示すことができるため、対応するキャッシュ可能なストアは、再生される必要があり得る。書き込み可能な状態では、キャッシュ可能なストアのキャッシュラインは、書き込み可能な状態でL1データキャッシュに存在する。充填保留状態では、ストアのキャッシュラインは、書き込み可能な状態ではないが、取得されるプロセスにある。例えば、キャッシュ可能なストアのキャッシュラインが、キャッシュ130において書き込み可能な状態で存在せず、またはその状態にない場合には、欠損アドレスバッファ(MAB)499は、キャッシュラインを取得するように割り当てられ得る。未知の状態では、ストアのキャッシュラインは、恐らくキャッシュラインが書き込み可能であることをキャッシュ可能なストアが認識しないので、書き込み可能な状態で存在せず、積極的に取得されない。例えば、キャッシュ可能なストアのキャッシュラインは、キャッシュ130において書き込み可能な状態で存在せず、またはその状態になくてもよく、欠損アドレスバッファ(MAB)499は、キャッシュラインを取得するように割り当てられなくてもよい。この状態では、キャッシュ可能なストアは、再生される必要があり得る。状態は、再生またはプローブ424からの何れかかで更新され得る。状態415で示されるものは、いくつかの実施形態によるキャッシュ可能なストアの状態を決定するために使用される状態機械を実装することができる。
【0028】
図8は、
図5に示される状態ユニット415内に実装され得る状態機械700の一例を概念的に示す図である。状態機械700は、書き込み可能な状態705と、保留状態710と、再生状態715と、を含む。書き込み可能な状態705でのキャッシュ可能なストアは、キャッシュ可能なストアと関連付けられたキャッシュラインのプローブに応じて、再生状態715に移行(720)することができる。保留状態710でのキャッシュ可能なストアは、キャッシュ可能なストアと関連付けられたキャッシュラインの成功した充填に応じて、書き込み可能な状態705に移行(725)することができる。充填保留状態710でのキャッシュ可能なストアは、書き込み可能なキャッシュラインを戻さない充填返答に応じて、再生状態715に移行(730)することができる。再生状態715でのキャッシュ可能なストアは、キャッシュ可能なストアの再生の結果に応じて、書き込み可能な状態705、保留状態710または再生状態715に移行(735、740または745)することができる。再生状態715から書き込み可能な状態705または保留状態710の何れかへの移行(735または740)を引き起こす再生は、この再生がそれ以前の状態よりも良い状態でキャッシュ可能なストアを配置した(例えば、キャッシュ可能なストアがコミットされるのに近くなり得る)ことにより、「良好な再生」と呼ばれ得る。「不良再生」は、それ以前の状態よりも良い状態でキャッシュ可能なストアを配置しない(例えば、キャッシュ可能なストアがコミットされるのに近くない場合であり得る)。再生が「不良再生」をもたらす場合には、後続の再生が必要とされ、および/または、後続の再生がキャッシュ可能なストアで実行され得る。
【0029】
図5に戻ると、段階ユニット420は、キャッシュ可能なストアと関連付けられた現在の実行段階を維持するように構成され得る。キャッシュ可能なストアの実行と関連付けられる異なる段階は、後述する
図6に関してさらに詳細に説明される。再生結果ユニット423は、例示的に上述したように、キャッシュ可能なストアの実行と関連付けられた1つ以上の再生結果を維持するように構成され得る。再生が完了する間および/または完了後、状態ユニット415、段階ユニット420および再生結果ユニット423内のデータは、再生結果および/またはキャッシュ可能なストアの実行に関する他の情報に従って更新され得る。更新されたデータは、例えば、SQ回路135の要素、TLB485、キャッシュ130、ロードストアユニット(例えば、LS/AGU498)、または、プロセッサ内の任意の他の適切な要素(例えば、CPU140/GPU125/コアもしくはシステム(例えば、コンピュータシステム100))によってSQ410に送信され得る。
【0030】
さらに
図5を参照すると、1つ以上の実施形態では、再生ポリシーユニット425は、キャッシュ可能なストアの再生または再実行を実行するための再生ポリシーを記憶するように構成され得る。状態ユニット415a〜n、段階ユニット420a〜nおよび再生結果ユニット423a〜nからのデータは、所定のエントリ413と関連付けられたキャッシュ可能なストアが本明細書に記載される再生ポリシーに従って再生または再実行される資格があるかどうかを決定するために、当該データを使用する再生ポリシーユニット425a〜nに提供され得る。キャッシュ可能なストアが再生の資格があると決定される場合には、再生ポリシーユニット425は、この決定を示す信号を選択ユニット430に出力することができ、決定が行われたエントリ413と関連付けられたキャッシュ可能なストアが、選択ユニット430を用いて選択され得る。
【0031】
単一の再生ポリシーユニット425a(1つ以上のキャッシュ可能なストア再生ポリシーを実装するように構成される)が1つ以上のSQエントリ413a〜nによって利用され得ることが理解されるべきである。すなわち、1つ以上のエントリ413a〜nの各々は、独自の再生ポリシーユニット425aを有することができるし、再生ポリシーユニット425aを1つ以上の他のエントリ413a〜nと共有することができる。複数の再生ポリシーユニット425a〜nが1つ以上の異なる再生ポリシーを並行して実行し得ることも企図される。1つ以上の実施形態では、実装された1つ以上の再生ポリシーは、システムソフトウェアによって選択可能であってもよいし、再生ポリシーユニット425a〜nに配線で接続されてもよいし、本開示の利益を得る当業者によって理解されるように別の方法で実装されてもよい。様々な実施形態においては、1つ以上の再生ポリシーは、設計および/または操作上の配慮により、システム起動時に動的に変更されてもよいし、他の適切なタイミングで変更されてもよい。
【0032】
1つ以上の実施形態によれば、SQ410は、不整列のキャッシュ可能なストア(すなわち、キャッシュラインの境界を超えるキャッシュ可能なストア)を維持するように構成され得る。このような場合、SQ410は、各エントリ413の記憶能力を効果的に倍にする各エントリ413a〜n(例えば、不整列のキャッシュ可能なストアの半分ごとのエントリ413a,413a
2)で分類される重複エントリ413a
2〜n
2(図示せず)を含むことができる。不整列のキャッシュ可能なストアの実行は、本明細書の整列した(正常な)キャッシュ可能なストアに関して記載されるような釣り合った様式で形成され得る。不整列のキャッシュ可能なストアの半分の各々は、ともに、独立して、実質的に並行して、もしくは、重複様式で、実行および/または再生され得ることに留意されるべきである。同様に、半分の各々のコミットは、同時に、並行して、または、非重複間隔もしくはサイクルで実行され得る。
【0033】
選択ユニット430は、1つ以上の選択可能な入力を有するマルチプレクサであってもよいし、当該マルチプレクサを含んでもよいし、選択信号に基づいてSQ410からの入力を選択するように構成された回路であってもよい。いくつかの実施形態では、選択信号は、調停ユニット475によって選択ユニット430に提供される。調停ユニット475は、これらに限定されないが、フェアネスアルゴリズム(例えば、ラウンドロビン調停)、経時調停または実装時固有アルゴリズムを含む1つ以上の調停アルゴリズムに基づいて、選択信号を提供することができる。いくつかの実施形態では、1つ以上の調停アルゴリズムは、システムソフトウェアによって選択可能であってもよいし、調停ユニット475に配線で接続されてもよいし、本開示の利益を得る当業者によって理解されるように別の方法で実装されてもよい。様々な実施形態においては、1つ以上の調停アルゴリズムは、設計および/または操作上の配慮により、システム起動時に動的に変更されてもよいし、他の適切なタイミングで変更されてもよい。
【0034】
再生論理ユニット440は、キャッシュ可能なストアの実行および/または再生を実行および/または容易にするロジック(logic)で構成され得る。様々な実施形態では、これは、本明細書に記載される1つ以上の再生ポリシーによって実行され得る。再生論理ユニット440は、選択ユニット430から入力(例えば、実行および/または再生されるキャッシュ可能なストア)を受信することができる。また、再生論理ユニット440は、後述するように、キャッシュ130、MAB499および/またはROB495、ならびに、プロセッサ内の他の適切な要素(例えば、CPU140/GPU125/コア)もしくはシステム(例えば、コンピュータシステム100)と通信するように構成され得る。
【0035】
ここで
図6を参照すると、1つ以上の実施形態のようなキャッシュ可能なストアの実行の単純化されたタイムラインが示されている。キャッシュ可能なストアの実行は、1つ以上の段階を含むことができる。段階は、実行中の異なる事象によって定義され得る実行の一部であり得る。このように限定されないが、一実施形態による、段階による例示的な実行が記載されている。キャッシュ可能なストアの実行は、キャッシュ可能なストアがロードストアユニット(例えば、LS/AGU498)に最初に発送されるとき、第1段階510から開始することができる。第1段階510の間、キャッシュ可能なストアは、例えば、アドレス生成ユニット(AGU)(図示せず)によって生成される当該ストアの線形アドレスを待つことができる。第2段階520は、キャッシュ可能なストアがアドレスを有する時点で開始することができ、キャッシュ可能なストアがROB495に完了の信号を送るまで続くことができる。第2段階520の間、キャッシュ可能なストアは、その「初期のピック」を行うことができ、そのとき、キャッシュ可能なストアは、その関連したキャッシュラインが存在するか否かを決定する。第3段階530は、TLB485のルックアップの完了後に開始することができ、キャッシュ可能なストアが退避したことをROB495が示すまで続くことができる。第3段階530の間、キャッシュ可能なストアは、依然として、不確かなものとみなされ得る。第4段階540は、キャッシュ可能なストアの退避と、キャッシュ可能なストアがシステム内で絶対的に最も古いキャッシュ可能なストアになるときと、の間に生じ得る。SQ410は、上述したように、この退避後の状態(例えば、第4段階540の開始後)で多くのキャッシュ可能なストアを保持または維持するように構成されてもよく、構成の理由で、キャッシュ可能なストアは、順にコミットされることが必要とされ得る。この目的を達成するために、第4段階540の間、キャッシュ可能なストアは、システム内で最も古いキャッシュ可能なストアになるまで待つことができる。より古いキャッシュ可能なストアがシステム内に存在しない場合には、キャッシュ可能なストアは、第3段階530から第5段階550に直接スキップすることができることが企図される。第5段階550は、キャッシュ可能なストアが最も古いキャッシュ可能なストアである時点で開始することができ、キャッシュ可能なストアがコミットする(データをキャッシュに書き込む)まで続くことができ、その時点で、キャッシュ可能なストアがSQ410から削除され得る。
【0036】
図6に示されるタイムラインは、必ずしも一定の比率の縮尺で描かれておらず、実行または再生の異なる段階が図示されるより短くてもよいし、長くなってもよいことに留意すべきである。しかしながら、いくつかの実施形態では、段階の相対的な継続時間は、
図6に示されるものとほぼ等しくてもよい。加えて、実行の異なる段階は、プロセッサの構成規則および要件に従ってスキップされてもよいし、繰り返されてもよい。
【0037】
ここで
図7を参照すると、いくつかの実施形態におけるキャッシュ可能なストアの実行および再生を示す例示的なフローチャート600が示されている。キャッシュ可能なストアの実行および再生は、
図7に示されるように、本明細書に記載される実施形態および再生ポリシーによって実行され得る。さらに、上述したように、本開示の利益を得る当業者であれば、本明細書に記載されるフローおよび実施形態が不整列のキャッシュ可能なストアに対して同様に適応されるように変更され得ることを実現するであろう。
【0038】
602では、キャッシュ可能なストアが実行のために処理デバイス内に受信され得る。キャッシュ可能なストアは、
図5に記載されたSQ410、および/または、キャッシュ可能なストアの実行を実施するのに必要な処理デバイスの他の要素で受信され得る。いくつかの実施形態では、SQ410は、処理デバイスまたは処理デバイスの実行パイプラインによって実行中のキャッシュ可能なストアを保持または維持することができる。605では、キャッシュ可能なストアの実行を開始することができる。このフローは、キャッシュ可能なストアの線形アドレスが615でアドレス生成ユニット(例えば、LS/AGUユニット498)によって生成され得るロードストアユニット(例えば、LS/AGUユニット498)に対して、キャッシュ可能なストアが発送され得る610に移行し得る。このフローは、線形アドレスが例えばSQ410に受信される620に移行し得る。625では、TLBは、TLBエントリがキャッシュ可能なストアの線形アドレスのために存在するか否かを決定することができる。TLBルックアップが630で完了すると、実行フローは、ROB(例えば、ROB495)が、キャッシュ可能なストアが退避されたことを示し得る635に移行することができる。あるいは、このフローは、630から、1つ以上の再生が本明細書に記載される様々な再生ポリシーによって実行され得る675aに移行することができる。いくつかの実施形態では、675aでの再生は、構成可能な数の良好な再生を実行するまで、初期のピック(第2段階における)が不良再生であることに応じて繰り返さ得る。例えば、この段階におけるストアは、1つの良好な再生を実行するまで再生され得る。1つの良好な再生を実行した後、ストアは、退避するまでは再度再生することが許可され得ない。
【0039】
このフローは、675aから、キャッシュ可能なストアの退避のための635に移行することができる。
【0040】
このフローは、635から、キャッシュ可能なストアがシステム内で最も古いキャッシュ可能なストアになるまで待つ640に移行することができる。また、このフローは、635から、1つ以上の再生が実行され得る675bに移行することができる。いくつかの実施形態では、675bでの再生は、ストアが退避される前に試みられた再生に対するあらゆる再生結果にかかわらず、構成可能な数の良好な再生を実行するまで繰り返され得る。例えば、この段階におけるストアは、1つの良好な再生を実行するまで再生され得る。1つの良好な再生を実行した後、ストアは、最も古いストアストアキューになるまで再度再生されることが許可され得ない。
【0041】
このフローは、675bから、キャッシュ可能なストアがシステム内で最も古いキャッシュ可能なストアになるまで待つ640に移行することができる。
【0042】
このフローは、キャッシュ可能なストアが最も古いキャッシュ可能なストアである場合に、640から、キャッシュ可能なストアと関連付けられたデータがキャッシュ(例えば、キャッシュ130)にコミットまたは書き込まれる645に移行することができる。また、このフローは、640から、1つ以上の再生が実行され得る675cに移行することができる。いくつかの実施形態では、675cでの再生は、例えば、キャッシュラインが書き込み可能な状態になるまで、必要に応じて繰り返される。このフローは、675cから、キャッシュ可能なストアと関連付けられたデータがキャッシュにコミットまたは書き込まれる645に移行することができる。他のキャッシュ可能なストアが存在しない場合には、このフローは、640で最も古いキャッシュ可能なストアになるのを待つキャッシュ可能なストアがない状態で、635から645に移行することができる。上述したように、640をスキップする場合には、このフローは、645に移行する前に675dに進むことができることも企図される。675dでは、本明細書に記載される様々な再生ポリシーまたは他の再生ポリシーによって1つ以上の再生が実行され得る。675dでの再生は、再生ポリシーによって必要に応じて繰り返され得る。このフローは、データがキャッシュにコミットされると、645から、キャッシュ可能なストアがSQ(例えば、SQ410)から削除される650に移行することができる。
【0043】
いくつかの実施形態では、再生ポリシーの態様は、ストアキュー内のビットまたはレジスタなどの記憶された情報を用いて構成され得る。例えば、再生675a〜dの間で許可された構成可能な数の再生は、1つ以上のビットまたはレジスタ内に記憶され得る。構成可能な数の再生は、再生675a〜dの各々に対して同じであってもよいし、1つ以上の再生675a〜dごとに異なってもよい。ビットまたはレジスタは、ソフトウェアによって読み込まれまたは変更され得るように、ソフトウェアを可視的にさせ得る。本開示の利益を得る当業者であれば、本明細書に記載される再生675a〜dが例示であることが意図されていることを理解すべきである。代替の実施形態は、1つ以上のキャッシュラインの状態、および、ストアの実行段階によって示されるストアの状態に基づいてストア命令を再生するべきかを決定するために他の再生ポリシーを使用することができる。
【0044】
図7に示される要素は、上述した順序に限定され得ないことが企図される。いくつかの実施形態によれば、
図7に示される要素は、本明細書に示された実施形態の趣旨および範囲から逸脱することなく、連続して、並行して、または、別の順序で実行され得る。フローチャートは、本明細書に示された1つ以上の実施形態に従って、全体または一部が実行され得ることも企図される。すなわち、図示したフローチャートにおいて、1つ以上の実施形態に記載される全ての要素を実行する必要はない。
図7に示した方法のいくつかの実施形態は、ハードウェア、ファームウェア、ソフトウェアまたはこれらの組み合わせで実装され得る。一時的(transitory)または非一時的(non−transitory)なコンピュータ可読媒体は、実行されると、本明細書に記載される方法のいくつかの実施形態を実装または実行するように処理システムを構成し得る命令を記憶するために使用され得る。例えば、本明細書に記載される方法のいくつかの実施形態を表す符号化された命令は、例えば、データ記憶ユニットや、組み込まれたRAM、SRAMもしくはDRAMを含むRAMや、キャッシュや、コンパクトディスクや、DVDや、ソリッドステート記憶デバイスや、他の記憶媒体などの、非一時的なコンピュータ可読記憶デバイスに記憶され得る。
【0045】
さらに、いくつかの実施形態では、異なる種類のハードウェア記述言語(HDL)が、半導体製品およびデバイス、ならびに/または、他のタイプの半導体デバイスなどの超大規模集積回路(VLSI回路)を設計および製造する過程で使用され得ることも企図される。HDLのいくつかの例は、VHDLおよびVerilog/Verilog−XLであるが、列挙されない他のHDL形式が使用されてもよい。一実施形態では、HDLコード(例えば、レジスタ転送レベル(RTL)コード/データ)は、GDSデータ、GDSIIデータなどを生成するために使用され得る。例えば、GDSIIデータは、記述的ファイル形式であり、半導体製品またはデバイスの3次元モデルを表すために異なる実施形態に使用され得る。このようなモデルは、半導体製品および/またはデバイスを作り出すために半導体製造設備によって使用され得る。GDSIIデータは、データベースまたは他のプログラム記憶構造として記憶され得る。また、このデータは、コンピュータ可読記憶デバイス(例えば、データ記憶ユニット160、RAM155(組み込まれたRAM、SRAMおよび/またはDRAM)、キャッシュ130、コンパクトディスク、DVD、ソリッドステート記憶デバイスなど)に記憶され得る。いくつかの実施形態では、GDSIIデータ(または他の類似のデータ)は、本願において本明細書に記載される様々な態様を具現化することができるデバイスを製造するための製造設備(例えば、マスク作業を用いる)を構成するように適合され得る。換言すれば、様々な実施形態では、このGDSIIデータ(または他の類似のデータ)は、コンピュータ、プロセッサまたはコントローラにプログラムされてもよく、これは次に、全体または一部において、半導体製品およびデバイスを製造するために半導体製造設備(またはファブ)の動作を制御することができる。例えば、一実施形態では、1つ以上のCPU140、GPU125、SQ回路135、ハードウェア状態機械および/またはアルゴリズム(図示せず)、キャッシュ130などを含むシリコンウェハが、GDSIIデータ(または他の類似のデータ)を用いて製造され得る。
【0046】
様々な実施形態がSQ回路に関連する様々なプロセッサまたはキャッシュ可能なストア再生に関して記載され得るが、本明細書に記載される実施形態は、本開示の利益を得る当業者に明らかであるように、例えば、処理デバイスを含む様々なデバイスにおいて幅広い適用性を有し得ることが企図されることにも留意されるべきである。
【0047】
上記の特定の実施形態は単なる例示であって、本明細書の実施形態が、本明細書の教示の利益を得る当業者にとって明確なように、異なってはいるが同等な様式で変更および実践されてもよい。さらに、特許請求の範囲に記載された事項以外の、本明細書に示された構築または設計の詳細に対する限定は、意図されない。したがって、開示される実施形態は、変更または修正されてもよく、全てのこのような変形は、開示される実施形態の範囲内とみなされることが明らかである。
【0048】
したがって、本明細書に求められる保護は、特許請求の範囲に記載される通りである。