(57)【要約】キャッシュ可能なストアを実行するための方法が提供される。本方法は、キャッシュラインの状態およびストア命令の実行段階に基づいて、１つ以上のキャッシュライン（１３０）を再取得するストア命令を再生するべきかどうかを決定することを含む。ストア命令は、ストア命令を再生すると決定したことに応じて再生される。キャッシュラインの状態およびストア命令の実行段階に基づいて、１つ以上のキャッシュラインを再取得するストア命令を再生するべきかどうかを決定するように構成可能なストアキュー（ＳＱ）（１３５）を含む装置が提供される。本装置を製造するために製造設備を適合させるためのコンピュータ可読記憶デバイスが提供される。【選択図】図７
2015533442.tif 000002
【特許請求の範囲】
【請求項１】
少なくとも１つのキャッシュラインを再取得するストア命令を、前記少なくとも１つのキャッシュラインの状態によって示される前記ストア命令の状態と、前記ストア命令の実行段階とに基づいて再生するかどうかを決定することと、
前記ストア命令を再生すると決定したことに応じて、前記ストア命令を再生することと、を含む、方法。
【請求項２】
前記ストア命令を再生するかどうかを決定することは、前記ストア命令の少なくとも１つの以前の再生の少なくとも１つの結果に基づいて、前記ストア命令を再生するかどうかを決定することを含む、請求項１に記載の方法。
【請求項３】
前記ストア命令の前記少なくとも１つの以前の再生の前記少なくとも１つの結果が、前記少なくとも１つのキャッシュラインの状態を、前記ストア命令がコミットするのを許可する書き込み可能な状態により近くなるように変更した良好な再生であったか、または、前記少なくとも１つのキャッシュラインの状態を、前記書き込み可能な状態により近くなるように変更しなかった不良再生であったかを決定することを含む、請求項２に記載の方法。
【請求項４】
前記ストア命令を再生するかどうかを決定することは、前記実行段階の間の前記ストア命令の構成可能な数の良好な再生に基づいて、前記ストア命令を再生するかどうかを決定することを含む、請求項３に記載の方法。
【請求項５】
前記ストア命令が完了したが、前記ストア命令が退避しておらず、且つ、前記ストア命令の完了後に前記ストア命令が構成可能な数の良好な再生を実行していないと決定したことに応じて、前記ストア命令を再生することを含む、請求項４に記載の方法。
【請求項６】
前記ストア命令が退避したが、前記ストア命令がストアキュー内で最も古いストア命令ではなく、且つ、前記ストア命令が退避してから前記ストア命令が良好な再生を実行していないと決定したことに応じて、前記ストア命令を再生することを含む、請求項５に記載の方法。
【請求項７】
前記ストア命令が前記ストアキュー内で最も古いストア命令であるが、前記ストア命令がコミットしていないと決定したこと応じて、前記少なくとも１つのキャッシュラインが前記書き込み可能な状態になるまで、前記ストア命令を再生することを含む、請求項６に記載の方法。
【請求項８】
少なくとも１つのキャッシュラインを再取得するストア命令を、前記少なくとも１つのキャッシュラインの状態によって示される前記ストア命令の状態と、前記ストア命令の実行段階とに基づいて再生するべきかどうかを決定するように構成可能なストアキュー回路を備える、装置。
【請求項９】
前記ストアキュー回路は、前記ストア命令の少なくとも１つの以前の再生の少なくとも１つの結果に基づいて、前記ストア命令を再生するかどうかを決定するように構成可能である、請求項８に記載の装置。
【請求項１０】
前記ストアキュー回路は、前記ストア命令の前記少なくとも１つの以前の再生の前記少なくとも１つの結果が、前記少なくとも１つのキャッシュラインの状態を、前記ストア命令がコミットするのを許可する書き込み可能な状態により近くなるように変更した良好な再生であったか、または、前記少なくとも１つのキャッシュラインの状態を、前記書き込み可能な状態により近くなるように変更しなかった不良再生であったかを決定するように構成可能である、請求項９に記載の装置。
【請求項１１】
前記ストアキュー回路は、前記ストア命令の前記状態を決定するように構成可能な状態機械を備え、前記ストア命令の状態は、前記書き込み可能な状態、前記ストア命令に対する前記少なくとも１つのキャッシュラインが前記キャッシュ内に存在しないが、取得されるプロセスにある保留状態、または、前記ストア命令に対する前記少なくとも１つのキャッシュラインが前記キャッシュ内に存在しないが、取得されるプロセスにはない再生状態を含む、請求項１０に記載の装置。
【請求項１２】
前記ストアキュー回路は、前記実行段階の間の前記ストア命令の構成可能な数の良好な再生に基づいて、前記ストア命令を再生するかどうかを決定するように構成可能である、請求項１０に記載の装置。
【請求項１３】
再生論理であって、前記ストア命令が完了したが、前記ストア命令が退避しておらず、且つ、前記ストア命令の完了後に、前記再生論理が前記ストア命令の構成可能な数の良好な再生を実行していないと前記ストアキュー回路が決定したことに応じて、前記ストア命令を再生するように構成可能な再生論理を備える、請求項１２に記載の装置。
【請求項１４】
前記再生論理は、前記ストア命令が退避したが、前記ストア命令が前記ストアキュー回路内のストアキュー内で最も古いストア命令ではなく、且つ、前記ストア命令が退避してから前記再生論理が前記ストア命令の良好な再生を実行していないと前記ストアキュー回路が決定したことに応じて、前記ストア命令を再生するように構成可能である、請求項１３に記載の装置。
【請求項１５】
前記再生論理は、前記ストア命令が前記ストアキュー内で最も古いストア命令であるが、前記ストア命令がコミットしていないと前記ストアキュー回路が決定したことに応じて、前記少なくとも１つのキャッシュラインが前記書き込み可能な状態になるまで、前記ストア命令を再生するように構成可能である、請求項１４に記載の装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本明細書に示される実施形態は、概して、コンピューティングシステムおよび処理デバイスに関し、より具体的には、処理デバイスにおいてキャッシュ可能なストア再生ポリシーを実装するための方法および装置に関する。
【背景技術】
【０００２】
命令を実行するとともにデータを処理する電気回路およびデバイスは、より高速に且つより複雑に進化している。最新のデータプロセッサのアーキテクチャ（例えば、マルチコアプロセッサ）の性能の向上および低電力要求に伴って、新たなデータ（すなわち、キャッシュ可能なストア）をデータキャッシュにコミットする（すなわち、書き込む）ことは、より複雑になっている。競合およびライブロック状態、ならびに、例えば異なるプロセッサコアによって繰り返し取得されるキャッシュラインなどの電力消費イベントを含む問題状態を回避しながら、新たなデータを効率的にコミットすることの可能なプロセッサを設計することが特に問題となる。
【０００３】
いくつかの従来のソリューションでは、キャッシュラインの取得およびキャッシュ可能なストアのコミットは、キャッシュ可能なストアがシステム内の最も古いキャッシュ可能なストアになるまで、単に待機してから試みられていた。他の場合には、キャッシュラインの取得およびキャッシュ可能なストアのコミットは、キャッシュ可能なストアが退避された後に試みられていた。特定の回数の試みの後にキャッシュ可能なストアがシステム内の最も古いキャッシュ可能なストアとなった後にのみ、キャッシュ可能なストアの取得およびコミットのさらなる試みが実行されるように、カウンタが実装されていた。しかしながら、これらの従来のソリューションは、性能不良および非効率な電力利用に悩まされている。
【０００４】
本明細書に示される実施形態は、上述した最新技術における固有の問題を、排除または軽減する。
【発明の概要】
【課題を解決するための手段】
【０００５】
いくつかの実施形態では方法が提供される。本方法は、キャッシュ可能なストアを実行することを含む。本方法のいくつかの実施形態は、キャッシュラインの状態によって示されるストア命令の状態と、ストア命令の実行段階とに基づいて、１つ以上のキャッシュラインを再取得するストア命令を再生するか否かを決定することを含む。ストア命令は、ストア命令を再生すると決定したことに応じて再生される。キャッシュラインの状態によって示されるストア命令の状態と、ストア命令の実行段階とに基づいて、１つ以上のキャッシュラインを再取得するストア命令を再生するか否かを決定するように構成可能なストアキュー（ＳＱ）を含む装置が提供される。装置を製造する製造設備を適合させるためのコンピュータ可読記憶デバイスが提供される。
【０００６】
本明細書の実施形態は、添付の図面と併せて以下の説明を参照することによって理解することができ、この図面では、参照番号の最も左の桁の値は、各参照番号が最初に現れる図を示している。
【図面の簡単な説明】
【０００７】
【図１】いくつかの実施形態による、コンピュータシステムの単純化されたブロック図を概略的に示す図である。
【図２】いくつかの実施形態による、中央処理装置（ＣＰＵ）およびストアキュー（ＳＱ）を含む回路の単純化されたブロック図である。
【図３】いくつかの実施形態による、図２に示された１つ以上の回路を含むシリコンダイ／チップを示す図である。
【図４】いくつかの実施形態による、製造設備で製造され得る１つ以上のダイ／チップを含むシリコンウェハの外観を示す図である。
【図５】いくつかの実施形態による、コンピュータプロセッサにおける図２のストアキュー（ＳＱ）回路の単純化されたブロック図である。
【図６】いくつかの実施形態による、キャッシュ可能なストアの実行の単純化されたタイムラインを示す図である。
【図７】いくつかの実施形態による、再生ポリシーに従ってキャッシュ可能なストアを実行することを示すフローチャートである。
【図８】図５に示されたストアキューで実装され得る状態機械の一実施例を概念的に示す図である。
【発明を実施するための形態】
【０００８】
本明細書の実施形態は、様々な変更および代替形態が可能であるが、これらの特定の実施形態は、図面において実施例として示されており、本明細書に詳細に記載されている。しかしながら、本明細書における特定の説明は、開示された実施形態を、開示された特定の形態に限定することを意図するものではなく、逆に、添付の特許請求の範囲によって定義された、開示された実施形態の範囲に含まれる全ての変更、均等物および代替を包含することが意図されることが理解されるべきである。
【０００９】
本願の例示的な実施形態が以下に説明される。明確さのために、実際の実装形態の全ての特徴が本明細書に記載されるわけではない。当然のことながら、かかる実際の実施形態の開発において、１つの実装形態から別の実装形態まで様々となり得る開発者の特定の目的（例えば、システム関連および／または事業関連の制約の順守など）を達成するために、多くの実装形態特有の決定が行われ得ることが理解されるであろう。さらに、このような開発努力は、複雑で、且つ、時間がかかり得るが、それにもかかわらず本開示の利益を得る当業者にとっては日常的な作業となり得ることが理解される。
【００１０】
本出願の実施形態は、添付の図面を参照して説明される。様々な構造、接続、システムおよびデバイスは、単に説明のために図面に概略的に示されており、開示された発明が、当業者に周知の詳細事項によって不明瞭にならないように示されている。それでもなお、添付の図面は、本実施形態の例示的な実施例を記載および説明するために含まれている。本明細書に使用される用語および語句は、当業者によるこれらの用語および語句の理解と一致する意味を有するものとして理解され、解釈されるべきである。用語または語句の何れかの特有の定義、すなわち、当業者によって理解される通常かつ慣習的意味と異なる定義も、本明細書の用語または語句の一貫した使用によって含意されることが意図されるものではない。用語または語句が特有の意味、すなわち、当業者によって理解されるもの以外の意味を有することが意図される限りでは、このような特有の定義は、その用語または語句に対する特有の定義を直接的かつ明白に提供する定義的様式で本明細書に明示的に記載される。
【００１１】
本明細書で使用される「実質的に」および「おおよそ」という用語は、８５％、９０％、９５％、９８％および／または９９％以内を意味することができる。場合によっては、当業者によって理解されるように、「実質的に」および「おおよそ」という用語は、差を認識できるが、その差が軽視できるか、または、無視されるほど十分に小さいものであり得ることを示し得る。また、「おおよそ」という用語は、１つの値が別の値にほぼ等しい文脈で使用される場合に、これらの値が互いに「ほぼ」等しいことを意味することができる。例えば、測定の場合に、これらの値は、当業者によって等しいと判断されるほど十分に近い場合がある。
【００１２】
本明細書で述べられるように、データは、キュー、メモリ、キャッシュ、バッファ、レジスタ、フリップフロップなど（これらに限定されない）を含む様々なデータ記憶構造に「維持され」、「保持され」、「保たれ」および／または「記憶され」得る。「維持され」、「保持され」、「保たれ」および／または「記憶され」という用語は、本明細書において同義的かつ交換可能に使用され得る。
【００１３】
本明細書で述べられるように、「キャッシュ可能なストア」は、処理デバイス（例えば、シングルおよびマルチコアマイクロプロセッサ（ＣＰＵ）ならびにグラフィックプロセッサ（ＧＰＵ）、または、それらの個々の処理コア）のキャッシュ（例えば、限定されないが、Ｌ１データキャッシュまたはＬ２データキャッシュ）に記憶される１つ以上のデータまたはデータ要素のグループであり得る。本明細書で述べられるように、「キャッシュ可能なストア」は、記憶されるキャッシュにコミットされ、または書き込まれ得る。本明細書で述べられるように、「キャッシュ可能なストア」は、キャッシュ内のストアを完了するように１回以上実行され得る。キャッシュ可能なストアのキャッシュラインを取得するための後続の実行は、「再生」または「再実行」と呼ばれ得る。キャッシュ可能なストアの実行は、キャッシュ可能なストアが選択される間の「ピック（ｐｉｃｋ）」とも呼ばれ、本開示の利益を得る当業者に明らかであるように、ＣＰＵなどの実行パイプラインを通じて処理され得る。
【００１４】
本明細書に示される実施形態は、概して、処理デバイス内のキャッシュ可能なストアの再生ポリシーを実装するための方法および装置に関する。上述したように、処理デバイス（例えば、シングルおよびマルチコアマイクロプロセッサ（ＣＰＵ）ならびにグラフィックプロセッサ（ＧＰＵ）、または、それらの個々の処理コア）は、新たなデータをキャッシュに書き込むためにキャッシュ可能なストアを実行することができる。そうするために、キャッシュ可能なストアは、キャッシュラインがキャッシュ（例えば、データキャッシュ）内に存在し、書き込み可能な状態になることを必要とし得る。しかしながら、キャッシュ可能なストアが実行を開始するときに存在したキャッシュラインは、キャッシュ可能なストアが新たなデータをキャッシュに書き込むことによってキャッシュラインをコミットしようとするときに、キャッシュ内に存在しない可能性がある。例えば、キャッシュ可能なストアのキャッシュラインは、キャッシュ可能なストアの実行中に、他のＣＰＵ、他のＣＰＵコア、および／または、システム内の他のデバイスによってキャッシュ外からプローブ（ｐｒｏｂｅ）され得る。キャッシュ可能なストアは、データをキャッシュに書き込むために、キャッシュラインを再取得することが必要とされてもよく、このことは、再生を実行することとして既に知られている。キャッシュ可能なストアの初期の実行または再生中に、キャッシュ可能なストアは、例えば、そのデータ、そのメモリアドレス、実行または再生の結果などのような、キャッシュ可能なストアの様々な状態および／または属性が追跡され得るストアキュー（ＳＱ）内に保たれ得る。さらに、キャッシュ可能なストアの再生は、本明細書にさらに詳細に述べられるように、１つ以上の再生ポリシーに従って実行され得る。
【００１５】
本明細書に述べられる実施形態では、システム競合要因に対してキャッシュラインの早期取得の平衡を保つ再生ポリシーに従って実行および再生を実行することによって、キャッシュ可能なストアの効率的な実行および再生が可能になる。いくつかの実施形態では、特定の再生ポリシーは、キャッシュ可能なストアの実行の様々な段階と関連するか、それに依存する。いくつかの実施形態では、システムは、キャッシュラインの状態およびストアの実行段階に基づいて、ストアに対する少なくとも１つのキャッシュラインを再取得するストアを再生するべきか否かを決定する。例えば、システムは、ストアが完了し、退避し、または、ストアキュー内の最も古いストアになったかどうかに応じて、ストアを再生するべきか否かを決定することができる。また、システムは、ストアの少なくとも１つの以前の再生の少なくとも１つの結果に基づいて、ストアを再生するべきか否かを決定することができる。例えば、再生によって、キャッシュラインの状態が、ストアがコミットするのを許可する書き込み可能な状態により近い状態に変更される場合には、当該再生は「良好な再生」とみなされ得る。再生によって、キャッシュラインの状態が、書き込み可能な状態により近い状態に変更されない場合には、当該再生は「不良再生」とみなされ得る。ストアは、構成可能な数の良好な再生を有するまで再生され得る。また、ストアは、例えば、キャッシュラインが書き込み可能な状態になるまで、必要に応じて再生され得る。しかしながら、ストアを再生するべきかを決定するために、他のポリシーが代替的に使用され得る。
【００１６】
ここで図１を参照すると、いくつかの実施形態によるコンピュータシステム１００のブロック図が示されている。様々な実施形態では、コンピュータシステム１００は、パーソナルコンピュータ、ラップトップコンピュータ、ハンドヘルドコンピュータ、タブレットコンピュータ、モバイルデバイス、電話、携帯情報端末（「ＰＤＡ」）、サーバ、メインフレーム、作業端末、音楽プレーヤ、スマートテレビなどであってもよく、これらの全ては、処理デバイスと総称され得る。コンピュータシステム１００は、コンピュータのマザーボード、回路基板またはプリント回路基板、デスクトップコンピュータの筐体および／またはタワー、ラップトップコンピュータベース、サーバ筐体、モバイルデバイスの一部、携帯情報端末（「ＰＤＡ」）などであり得る主構造１１０を含む。いくつかの実施形態では、主構造１１０は、グラフィックカード１２０を含む。グラフィックカード１２０は、Ａｄｖａｎｃｅｄ  Ｍｉｃｒｏ  Ｄｅｖｉｃｅｓ（「ＡＭＤ」）製のＲａｄｅｏｎ（商標）グラフィックカードであってもよいし、メモリを使用する任意の他のグラフィックカードであってもよい。グラフィックカード１２０は、周辺構成要素相互接続（「ＰＣＩ」）バス（図示せず）、ＰＣＩエクスプレスバス（図示せず）、アクセラレイティッドグラフィックポート（「ＡＧＰ」）バス（図示せず）、または、任意の他のコンピュータシステム接続に接続され得る。本願の実施形態は、メインコンピュータ構造１１０へのグラフィックカード１２０の接続によって限定されないことに留意すべきである。いくつかの実施形態では、コンピュータシステム１００は、Ｌｉｎｕｘ（登録商標）、ＵＮＩＸ（登録商標）、Ｗｉｎｄｏｗｓ（登録商標）、Ｍａｃ  ＯＳ（登録商標）などのオペレーティングシステムを実行する。１つ以上の実施形態では、コンピュータシステム１００は、様々な動作中にコンピュータシステム１００によって使用される値を記憶するように適合された１つ以上のシステムレジスタ（図示せず）を含むことができる。
【００１７】
いくつかの実施形態では、グラフィックカード１２０は、グラフィックデータを処理する際に使用されるグラフィック処理ユニット（ＧＰＵ）１２５などの処理デバイスを含む。ＧＰＵ１２５は、例えば１つ以上のキャッシュ１３０などの、１つ以上の組み込まれたメモリ、または、組み込まれていないメモリを含むことができる。ＧＰＵのキャッシュ１３０は、Ｌ１、Ｌ２、または、より高いレベルのグラフィック固有／関連の命令、データなどであってもよい。様々な実施形態では、組み込まれたメモリは、組み込まれたたランダムアクセスメモリ（「ＲＡＭ」）、組み込まれたスタティックランダムアクセスメモリ（「ＳＲＡＭ」）、または、組み込まれたダイナミックランダムアクセスメモリ（「ＤＲＡＭ」）であってもよい。いくつかの実施形態では、メモリは、例えば、図１に示されるようなグラフィックカード１２０のＤＲＡＭ１５５としてＧＰＵ１２５内に組み込まれてもよいし、および／または、グラフィックカード１２０上にあってもよい。様々な実施形態では、グラフィックカード１２０は、回路基板もしくはプリント回路基板、または、ドーターカードなどと呼ばれてもよい。
【００１８】
いくつかの実施形態では、コンピュータシステム１００は、中央処理装置（「ＣＰＵ」）１４０などの処理デバイスを含む。処理デバイスは、ノースブリッジ１４５に接続され得る。様々な実施形態では、ＣＰＵ１４０は、シングルもしくはマルチコアプロセッサであってもよく、または、単一のダイ／チップ（ＡＭＤ  Ｆｕｓｉｏｎ（商標）ＡＰＵデバイスなど）上の１つ以上のＣＰＵコアとＧＰＵコアとの組み合わせであってもよい。ＣＰＵ１４０は、ｘ８６型アーキテクチャ、ＲＩＳＣ型アーキテクチャなどであってもよい。いくつかの実施形態では、ＣＰＵ１４０は、これらに限定されないが、Ｌ１、Ｌ２、レベル３以上のデータ、命令、および／または、他のキャッシュタイプなどの、１つ以上のキャッシュ１３０を含む。いくつかの実施形態では、ＣＰＵ１４０は、パイプライン型プロセッサである。ＣＰＵ１４０およびノースブリッジ１４５は、マザーボード（図示せず）またはコンピュータシステム１００のいくつかの他の構造上に収容され得る。いくつかの実施形態では、グラフィックカード１２０は、ノースブリッジ１４５またはいくつかの他のコンピュータシステム接続を介してＣＰＵ１４０に接続される。例えば、ＣＰＵ１４０、ノースブリッジ１４５、ＧＰＵ１２５は、単一のパッケージ内に、または、単一のダイもしくは「チップ」（図示せず）の一部もしくはパッケージの組み合わせとして含まれ得る。主構造１１０の一部を形成するように示される様々な構成要素の配列を変更した、いくつかの実施形態も企図される。いくつかの実施形態では、ノースブリッジ１４５は、システムＲＡＭ（またはＤＲＡＭ）１５５に接続されてもよく、いくつかの実施形態では、システムＲＡＭ１５５は、ＣＰＵ１４０に直接接続されてもよい。システムＲＡＭ１５５は、当該技術分野において周知の任意のＲＡＭタイプであってもよく、１つ以上のメモリモジュールを備えることができ、ＲＡＭ１５５のタイプは、本願の実施形態を限定しない。例えば、ＲＡＭ１５５は、１つ以上のＤＩＭＭを含むことができる。この説明に言及されるように、メモリのタイプは、ＲＡＭ、キャッシュまたは本明細書に言及される任意の他のデータ記憶構造であってもよい。
【００１９】
いくつかの実施形態では、ノースブリッジ１４５は、サウスブリッジ１５０に接続される。いくつかの実施形態では、ノースブリッジ１４５およびサウスブリッジ１５０は、コンピュータシステム１００内の同じチップ上に存在する。いくつかの実施形態では、ノースブリッジ１４５およびサウスブリッジ１５０は、異なるチップ上に存在する。いくつかの実施形態では、サウスブリッジ１５０は、コンピュータシステム１００内の他の部分にある任意の他のＩ／Ｏインターフェース１３１に加えて、１つ以上のＩ／Ｏインターフェース１３１を有する。様々な実施形態では、サウスブリッジ１５０は、データ接続またはバス１９９を用いた、１つ以上のデータ記憶ユニット１６０に接続され得る。データ記憶ユニット１６０は、ハードドライブ、ソリッドステートドライブ、磁気テープ、または、データを記憶するために使用される任意の他の書き込み可能な媒体であり得る。いくつかの実施形態では、データ記憶ユニットのうち１つ以上は、ＵＳＢ記憶ユニットであり、データ接続１９９は、ＵＳＢバス／接続である。加えて、データ記憶ユニット１６０は、１つ以上のＩ／Ｏインターフェース１３１を含むことができる。様々な実施形態では、中央処理装置１４０、ノースブリッジ１４５、サウスブリッジ１５０、グラフィック処理ユニット１２５、ＤＲＡＭ１５５、および／または、組み込まれたＲＡＭは、コンピュータチップもしくはシリコンベースのコンピュータチップであってもよいし、コンピュータチップもしくはシリコンベースのコンピュータチップの一部であってもよい。１つ以上の実施形態では、コンピュータシステム１００の様々な構成要素は、バス１９５もしくは２つ以上のバス１９５と動作可能に、電気的に、および／または、物理的に接続されてもよいし、連動されてもよい。
【００２０】
いくつかの実施形態では、コンピュータシステム１００は、ストアキュー（ＳＱ）回路１３５を含むことができる。いくつかの実施形態では、ＳＱ回路１３５は、コンピュータシステム１００、ＣＰＵ１４０、ＧＰＵ１２５、および／または、それらの個々のコア内のキャッシュ可能なストアを実行および再生するための機能を提供するように適合され、または構成されたストアキュー（ＳＱ）および関連した構成要素を含む。いくつかの実施形態では、強要および再生を決定および実行するための機能を提供するように適合された構成要素は、例えば、退避ユニット、リオーダバッファ（ＲＯＢ）ユニット、欠損アドレスバッファ（ＭＡＢ）、トランスレーションルックアサイドバッファ（ＴＬＢ）、ロードストア（ＬＳ）ユニット、アドレス生成ユニット（ＡＧＵ）などの他のシステムブロック、または、ＳＱ回路１３５および他のシステムブロックの組み合わせによって存在する。ＳＱ回路１３５の構成要素は、図５でさらに詳細に示される。ＳＱ回路１３５は、シリコンダイ／チップを備え、ソフトウェア、ハードウェアおよび／またはファームウェア構成要素を含む。いくつかの実施形態では、ＳＱ回路１３５は、シリコンダイパッケージまたは電子部品パッケージにパッケージ化される。いくつかの実施形態では、ＳＱ回路１３５は、これらに限定されないが、ＣＰＵ１４０、ノースブリッジ１４５、グラフィックカード１２０、および／または、ＧＰＵ１２５（もしくはこれらの構成要素の任意のそれぞれのコア）などの既存のコンピュータ部品内に含まれる回路である。いくつかの実施形態では、ＳＱ回路１３５は、ＣＰＵ１４０、ＧＰＵ１２５、ノースブリッジ１４５、ＲＡＭ／ＤＲＡＭ１５５、および／または、それらの個々の接続１９５に通信可能に接続される。本明細書で使用される「ＳＱ回路」または「ＳＱ」（例えば、ＳＱ回路１３５）という用語は、コンピュータ部品に含まれる物理的ＳＱチップもしくはＳＱ回路、ＳＱ回路１３５の回路、または、ＳＱによって実装された機能を指すために使用され得る。ＳＱ回路１３５は、処理デバイスの一部として機能を果たし、および／または、処理デバイスの一部と呼ばれ得る。いくつかの実施形態では、ＧＰＵ１２５、ＣＰＵ１４０、ＳＱ回路１３５、および／または、これらの各々と関連付けられた任意のハードウェア／ソフトウェアコンピュータ１００ユニットのいくつかの組み合わせは、処理デバイスとして集合的に機能を果たし、および／または、集合的に処理デバイスと呼ばれ得る。いくつかの実施形態では、ＣＰＵ１４０およびＳＱ回路１３５、ＧＰＵ１２５およびＳＱ回路１３５、または、ＣＰＵ１４０、ノースブリッジ１４５およびＳＱ回路１３５、ならびに、それらの各々の相互接続部は、処理デバイスとして機能を果たすことができる。
【００２１】
いくつかの実施形態では、コンピュータシステム１００は、１つ以上の表示ユニット１７０、入力デバイス１８０、出力デバイス１８５、および／または、他の周辺デバイス１９０に接続される。様々な実施形態では、これらの要素は、コンピュータシステム１００の内部または外部であってもよく、本願の実施形態の範囲に影響を与えることなく、有線または無線で接続されてもよいことが企図される。表示ユニット１７０は、内部または外部モニタ、テレビの画面、ハンドヘルドデバイスのディスプレイなどであってもよい。入力デバイス１８０は、キーボード、マウス、トラックボール、スタイラス、マウスパッド、マウスボタン、ジョイスティック、スキャナなどのうち何れか１つであってもよい。出力デバイス１８５は、モニタ、プリンタ、プロッタ、コピー機または他の出力デバイスのうち何れか１つであってもよい。周辺デバイス１９０は、対応する物理的デジタル媒体に読み込み、および／または、書き込むことができるＣＤ／ＤＶＤドライブ、ユニバーサルシリアルバス（「ＵＳＢ」）デバイス、不揮発性メモリ、ジップドライブ、外部フロッピー（登録商標）ドライブ、外部ハードドライブ、電話および／または広帯域モデム、ルータ／ゲートウェイ、アクセスポイントなどの、コンピュータに接続され得る任意の他のデバイスであってもよい。本明細書に記載される入力、出力、表示、周辺デバイス／ユニットは、いくつかの実施形態においてＵＳＢ接続を有することができる。コンピュータシステム１００の例示的な態様が本明細書に記載されないある程度まで、かかる例示的な態様は、当業者に理解されるように本願の実施形態の趣旨および範囲を限定することなく様々な実施形態に含まれてもよいし、含まれなくてもよい。
【００２２】
ここで図２を参照すると、いくつかの実施形態による、例示的なＳＱ回路１３５、ＣＰＵ１４０および／またはノースブリッジ１４５のブロック図が示されている。いくつかの実施形態では、ＳＱ回路１３５、ＣＰＵ１４０および／またはノースブリッジ１４５は、１つ以上のキャッシュ１３０を含む。ＳＱ回路１３５、ＣＰＵ１４０および／またはノースブリッジ１４５は、いくつかの実施形態では、Ｌ１、Ｌ２または他のレベルのキャッシュ１３０を含む。ＳＱ回路１３５、ＣＰＵ１４０および／もしくはノースブリッジ１４５、ならびに／または、１つ以上のキャッシュ１３０の例示的な態様は、本明細書に記載されないある程度まで、当業者に理解されるように本願の実施形態の範囲を限定することなく様々な実施形態に含まれてもよいし、含まれなくてもよい。
【００２３】
ここで図３を参照すると、いくつかの実施形態では、ＳＱ回路１３５、ＣＰＵ１４０および／もしくはノースブリッジ１４５、ならびに、キャッシュ１３０は、シリコンチップ／ダイ３４０上に、および／または、図１に示されるコンピュータシステム１００部品内に存在することができる。シリコンチップ３４０は、マザーボード（例えば、１１０）またはコンピュータシステム１００の他の構造上に収容され得る。いくつかの実施形態では、各シリコンチップ／ダイ３４０上に２つ以上のＳＱ回路１３５、ＣＰＵ１４０および／もしくはノースブリッジ１４５、ならびに／または、キャッシュ１３０があり得る。上述したように、ＳＱ回路１３５、ＣＰＵ１４０および／またはノースブリッジ１４５の様々な実施形態は、多種多様の電子デバイスに使用され得る。
【００２４】
ここで図４を参照すると、いくつかの実施形態によれば、上述したように、ＳＱ回路１３５、ＣＰＵ１４０および／またはノースブリッジ１４５のうち１つ以上は、シリコンダイ／チップ３４０（またはコンピュータチップ）上に含まれ得る。シリコンダイ／チップ３４０は、ＳＱ回路１３５、ＣＰＵ１４０および／またはノースブリッジ１４５の１つ以上の異なる構成を含むことができる。シリコンチップ３４０は、製造設備（またはファブ）３９０内のシリコンウェハ３３０上に製造され得る。すなわち、シリコンウェハ３３０およびシリコンダイ／チップ３４０は、ファブ３９０の生産物または製品と呼ばれ得る。シリコンダイ／チップ３４０は、本開示に上述したような電子デバイスに使用され得る。
【００２５】
ここで図５を参照すると、いくつかの実施形態による、ＳＱ回路１３５および付随する回路の図形表現が示されている。様々な実施形態では、付随する回路（例えば、ストアキュー（ＳＱ）４１０、選択ユニット４３０、再生ユニット４４０、調停ユニット４７５など、および、それらの各々の相互接続部）は、ＳＱ回路１３５の一部として含まれ、ＳＱ回路１３５の一部と呼ばれ得る。いくつかの実施形態では、ＳＱ回路１３５は、ＣＰＵ１４０、ＧＰＵ１２５、および／または、それらの各々のコアの一部であり得る。ＳＱ回路１３５は、キャッシュ１３０（例えば、Ｌ１データキャッシュおよび／またはＬ２データキャッシュ）、ＴＬＢ４８５、ならびに、リオーダバッファ４９５（ＲＯＢ）に通信可能に接続され得る。キャッシュ１３０、ＴＬＢ４８５およびＲＯＢ４９５、ならびに、キャッシュ可能なストアの実行に関する追加のＣＰＵ１４０および／またはＧＰＵ１２５部品（図示せず）は、本明細書に詳細に記載されていないが、概して、本開示の利益を有する当業者によって理解される。
【００２６】
ＳＱ回路１３５は、いくつかの実施形態においてストアキュー（ＳＱ）４１０を含むことができる。ＳＱ４１０は、実行中に１つ以上のキャッシュ可能なストアを保持または維持するように構成された１つ以上のエントリ４１３ａ〜ｎを含むことができる。ＳＱ４１０は、エントリ４１３ａ〜ｎの各々が選択ユニット４３０の入力に接続され得るような様式で選択ユニット４３０に接続されてもよく、選択ユニット４３０によって実行される選択の制御は、調停ユニット４７５から受信した入力信号に応じて実行されてもよい。各ＳＱエントリ４１３ａ〜ｎは、１つ以上の状態ユニット４１５ａ〜ｎと、１つ以上の段階ユニット４２０ａ〜ｎと、１つ以上の再生結果ユニット４２３ａ〜ｎと、１つ以上の再生ポリシーユニット４２５ａ〜ｎと、を含むことができる。図５に示されるように、状態ユニット４１５ａ〜ｎと、段階ユニット４２０ａ〜ｎと、再生結果ユニット４２３ａ〜ｎとは、それぞれの再生ポリシーユニット４２５ａ〜ｎに接続されてもよいし、それらの個々のデータを再生ポリシーユニット４２５ａ〜ｎに提供するように構成されてもよい。
【００２７】
状態ユニット４１５は、キャッシュ可能なストアと関連付けられた現在および／または過去の状態データを維持するように構成され得る。いくつかの実施形態では、キャッシュ可能なストアの状態は、ストアが書き込むことを意図するキャッシュライン（または複数のライン）の状態によって決定される。例えば、状態は、キャッシュラインが書き込み可能であるか、充填されるか、または未知であることを示すことができるため、対応するキャッシュ可能なストアは、再生される必要があり得る。書き込み可能な状態では、キャッシュ可能なストアのキャッシュラインは、書き込み可能な状態でＬ１データキャッシュに存在する。充填保留状態では、ストアのキャッシュラインは、書き込み可能な状態ではないが、取得されるプロセスにある。例えば、キャッシュ可能なストアのキャッシュラインが、キャッシュ１３０において書き込み可能な状態で存在せず、またはその状態にない場合には、欠損アドレスバッファ（ＭＡＢ）４９９は、キャッシュラインを取得するように割り当てられ得る。未知の状態では、ストアのキャッシュラインは、恐らくキャッシュラインが書き込み可能であることをキャッシュ可能なストアが認識しないので、書き込み可能な状態で存在せず、積極的に取得されない。例えば、キャッシュ可能なストアのキャッシュラインは、キャッシュ１３０において書き込み可能な状態で存在せず、またはその状態になくてもよく、欠損アドレスバッファ（ＭＡＢ）４９９は、キャッシュラインを取得するように割り当てられなくてもよい。この状態では、キャッシュ可能なストアは、再生される必要があり得る。状態は、再生またはプローブ４２４からの何れかかで更新され得る。状態４１５で示されるものは、いくつかの実施形態によるキャッシュ可能なストアの状態を決定するために使用される状態機械を実装することができる。
【００２８】
図８は、図５に示される状態ユニット４１５内に実装され得る状態機械７００の一例を概念的に示す図である。状態機械７００は、書き込み可能な状態７０５と、保留状態７１０と、再生状態７１５と、を含む。書き込み可能な状態７０５でのキャッシュ可能なストアは、キャッシュ可能なストアと関連付けられたキャッシュラインのプローブに応じて、再生状態７１５に移行（７２０）することができる。保留状態７１０でのキャッシュ可能なストアは、キャッシュ可能なストアと関連付けられたキャッシュラインの成功した充填に応じて、書き込み可能な状態７０５に移行（７２５）することができる。充填保留状態７１０でのキャッシュ可能なストアは、書き込み可能なキャッシュラインを戻さない充填返答に応じて、再生状態７１５に移行（７３０）することができる。再生状態７１５でのキャッシュ可能なストアは、キャッシュ可能なストアの再生の結果に応じて、書き込み可能な状態７０５、保留状態７１０または再生状態７１５に移行（７３５、７４０または７４５）することができる。再生状態７１５から書き込み可能な状態７０５または保留状態７１０の何れかへの移行（７３５または７４０）を引き起こす再生は、この再生がそれ以前の状態よりも良い状態でキャッシュ可能なストアを配置した（例えば、キャッシュ可能なストアがコミットされるのに近くなり得る）ことにより、「良好な再生」と呼ばれ得る。「不良再生」は、それ以前の状態よりも良い状態でキャッシュ可能なストアを配置しない（例えば、キャッシュ可能なストアがコミットされるのに近くない場合であり得る）。再生が「不良再生」をもたらす場合には、後続の再生が必要とされ、および／または、後続の再生がキャッシュ可能なストアで実行され得る。
【００２９】
図５に戻ると、段階ユニット４２０は、キャッシュ可能なストアと関連付けられた現在の実行段階を維持するように構成され得る。キャッシュ可能なストアの実行と関連付けられる異なる段階は、後述する図６に関してさらに詳細に説明される。再生結果ユニット４２３は、例示的に上述したように、キャッシュ可能なストアの実行と関連付けられた１つ以上の再生結果を維持するように構成され得る。再生が完了する間および／または完了後、状態ユニット４１５、段階ユニット４２０および再生結果ユニット４２３内のデータは、再生結果および／またはキャッシュ可能なストアの実行に関する他の情報に従って更新され得る。更新されたデータは、例えば、ＳＱ回路１３５の要素、ＴＬＢ４８５、キャッシュ１３０、ロードストアユニット（例えば、ＬＳ／ＡＧＵ４９８）、または、プロセッサ内の任意の他の適切な要素（例えば、ＣＰＵ１４０／ＧＰＵ１２５／コアもしくはシステム（例えば、コンピュータシステム１００））によってＳＱ４１０に送信され得る。
【００３０】
さらに図５を参照すると、１つ以上の実施形態では、再生ポリシーユニット４２５は、キャッシュ可能なストアの再生または再実行を実行するための再生ポリシーを記憶するように構成され得る。状態ユニット４１５ａ〜ｎ、段階ユニット４２０ａ〜ｎおよび再生結果ユニット４２３ａ〜ｎからのデータは、所定のエントリ４１３と関連付けられたキャッシュ可能なストアが本明細書に記載される再生ポリシーに従って再生または再実行される資格があるかどうかを決定するために、当該データを使用する再生ポリシーユニット４２５ａ〜ｎに提供され得る。キャッシュ可能なストアが再生の資格があると決定される場合には、再生ポリシーユニット４２５は、この決定を示す信号を選択ユニット４３０に出力することができ、決定が行われたエントリ４１３と関連付けられたキャッシュ可能なストアが、選択ユニット４３０を用いて選択され得る。
【００３１】
単一の再生ポリシーユニット４２５ａ（１つ以上のキャッシュ可能なストア再生ポリシーを実装するように構成される）が１つ以上のＳＱエントリ４１３ａ〜ｎによって利用され得ることが理解されるべきである。すなわち、１つ以上のエントリ４１３ａ〜ｎの各々は、独自の再生ポリシーユニット４２５ａを有することができるし、再生ポリシーユニット４２５ａを１つ以上の他のエントリ４１３ａ〜ｎと共有することができる。複数の再生ポリシーユニット４２５ａ〜ｎが１つ以上の異なる再生ポリシーを並行して実行し得ることも企図される。１つ以上の実施形態では、実装された１つ以上の再生ポリシーは、システムソフトウェアによって選択可能であってもよいし、再生ポリシーユニット４２５ａ〜ｎに配線で接続されてもよいし、本開示の利益を得る当業者によって理解されるように別の方法で実装されてもよい。様々な実施形態においては、１つ以上の再生ポリシーは、設計および／または操作上の配慮により、システム起動時に動的に変更されてもよいし、他の適切なタイミングで変更されてもよい。
【００３２】
１つ以上の実施形態によれば、ＳＱ４１０は、不整列のキャッシュ可能なストア（すなわち、キャッシュラインの境界を超えるキャッシュ可能なストア）を維持するように構成され得る。このような場合、ＳＱ４１０は、各エントリ４１３の記憶能力を効果的に倍にする各エントリ４１３ａ〜ｎ（例えば、不整列のキャッシュ可能なストアの半分ごとのエントリ４１３ａ，４１３ａ２）で分類される重複エントリ４１３ａ２〜ｎ２（図示せず）を含むことができる。不整列のキャッシュ可能なストアの実行は、本明細書の整列した（正常な）キャッシュ可能なストアに関して記載されるような釣り合った様式で形成され得る。不整列のキャッシュ可能なストアの半分の各々は、ともに、独立して、実質的に並行して、もしくは、重複様式で、実行および／または再生され得ることに留意されるべきである。同様に、半分の各々のコミットは、同時に、並行して、または、非重複間隔もしくはサイクルで実行され得る。
【００３３】
選択ユニット４３０は、１つ以上の選択可能な入力を有するマルチプレクサであってもよいし、当該マルチプレクサを含んでもよいし、選択信号に基づいてＳＱ４１０からの入力を選択するように構成された回路であってもよい。いくつかの実施形態では、選択信号は、調停ユニット４７５によって選択ユニット４３０に提供される。調停ユニット４７５は、これらに限定されないが、フェアネスアルゴリズム（例えば、ラウンドロビン調停）、経時調停または実装時固有アルゴリズムを含む１つ以上の調停アルゴリズムに基づいて、選択信号を提供することができる。いくつかの実施形態では、１つ以上の調停アルゴリズムは、システムソフトウェアによって選択可能であってもよいし、調停ユニット４７５に配線で接続されてもよいし、本開示の利益を得る当業者によって理解されるように別の方法で実装されてもよい。様々な実施形態においては、１つ以上の調停アルゴリズムは、設計および／または操作上の配慮により、システム起動時に動的に変更されてもよいし、他の適切なタイミングで変更されてもよい。
【００３４】
再生論理ユニット４４０は、キャッシュ可能なストアの実行および／または再生を実行および／または容易にするロジック（ｌｏｇｉｃ）で構成され得る。様々な実施形態では、これは、本明細書に記載される１つ以上の再生ポリシーによって実行され得る。再生論理ユニット４４０は、選択ユニット４３０から入力（例えば、実行および／または再生されるキャッシュ可能なストア）を受信することができる。また、再生論理ユニット４４０は、後述するように、キャッシュ１３０、ＭＡＢ４９９および／またはＲＯＢ４９５、ならびに、プロセッサ内の他の適切な要素（例えば、ＣＰＵ１４０／ＧＰＵ１２５／コア）もしくはシステム（例えば、コンピュータシステム１００）と通信するように構成され得る。
【００３５】
ここで図６を参照すると、１つ以上の実施形態のようなキャッシュ可能なストアの実行の単純化されたタイムラインが示されている。キャッシュ可能なストアの実行は、１つ以上の段階を含むことができる。段階は、実行中の異なる事象によって定義され得る実行の一部であり得る。このように限定されないが、一実施形態による、段階による例示的な実行が記載されている。キャッシュ可能なストアの実行は、キャッシュ可能なストアがロードストアユニット（例えば、ＬＳ／ＡＧＵ４９８）に最初に発送されるとき、第１段階５１０から開始することができる。第１段階５１０の間、キャッシュ可能なストアは、例えば、アドレス生成ユニット（ＡＧＵ）（図示せず）によって生成される当該ストアの線形アドレスを待つことができる。第２段階５２０は、キャッシュ可能なストアがアドレスを有する時点で開始することができ、キャッシュ可能なストアがＲＯＢ４９５に完了の信号を送るまで続くことができる。第２段階５２０の間、キャッシュ可能なストアは、その「初期のピック」を行うことができ、そのとき、キャッシュ可能なストアは、その関連したキャッシュラインが存在するか否かを決定する。第３段階５３０は、ＴＬＢ４８５のルックアップの完了後に開始することができ、キャッシュ可能なストアが退避したことをＲＯＢ４９５が示すまで続くことができる。第３段階５３０の間、キャッシュ可能なストアは、依然として、不確かなものとみなされ得る。第４段階５４０は、キャッシュ可能なストアの退避と、キャッシュ可能なストアがシステム内で絶対的に最も古いキャッシュ可能なストアになるときと、の間に生じ得る。ＳＱ４１０は、上述したように、この退避後の状態（例えば、第４段階５４０の開始後）で多くのキャッシュ可能なストアを保持または維持するように構成されてもよく、構成の理由で、キャッシュ可能なストアは、順にコミットされることが必要とされ得る。この目的を達成するために、第４段階５４０の間、キャッシュ可能なストアは、システム内で最も古いキャッシュ可能なストアになるまで待つことができる。より古いキャッシュ可能なストアがシステム内に存在しない場合には、キャッシュ可能なストアは、第３段階５３０から第５段階５５０に直接スキップすることができることが企図される。第５段階５５０は、キャッシュ可能なストアが最も古いキャッシュ可能なストアである時点で開始することができ、キャッシュ可能なストアがコミットする（データをキャッシュに書き込む）まで続くことができ、その時点で、キャッシュ可能なストアがＳＱ４１０から削除され得る。
【００３６】
図６に示されるタイムラインは、必ずしも一定の比率の縮尺で描かれておらず、実行または再生の異なる段階が図示されるより短くてもよいし、長くなってもよいことに留意すべきである。しかしながら、いくつかの実施形態では、段階の相対的な継続時間は、図６に示されるものとほぼ等しくてもよい。加えて、実行の異なる段階は、プロセッサの構成規則および要件に従ってスキップされてもよいし、繰り返されてもよい。
【００３７】
ここで図７を参照すると、いくつかの実施形態におけるキャッシュ可能なストアの実行および再生を示す例示的なフローチャート６００が示されている。キャッシュ可能なストアの実行および再生は、図７に示されるように、本明細書に記載される実施形態および再生ポリシーによって実行され得る。さらに、上述したように、本開示の利益を得る当業者であれば、本明細書に記載されるフローおよび実施形態が不整列のキャッシュ可能なストアに対して同様に適応されるように変更され得ることを実現するであろう。
【００３８】
６０２では、キャッシュ可能なストアが実行のために処理デバイス内に受信され得る。キャッシュ可能なストアは、図５に記載されたＳＱ４１０、および／または、キャッシュ可能なストアの実行を実施するのに必要な処理デバイスの他の要素で受信され得る。いくつかの実施形態では、ＳＱ４１０は、処理デバイスまたは処理デバイスの実行パイプラインによって実行中のキャッシュ可能なストアを保持または維持することができる。６０５では、キャッシュ可能なストアの実行を開始することができる。このフローは、キャッシュ可能なストアの線形アドレスが６１５でアドレス生成ユニット（例えば、ＬＳ／ＡＧＵユニット４９８）によって生成され得るロードストアユニット（例えば、ＬＳ／ＡＧＵユニット４９８）に対して、キャッシュ可能なストアが発送され得る６１０に移行し得る。このフローは、線形アドレスが例えばＳＱ４１０に受信される６２０に移行し得る。６２５では、ＴＬＢは、ＴＬＢエントリがキャッシュ可能なストアの線形アドレスのために存在するか否かを決定することができる。ＴＬＢルックアップが６３０で完了すると、実行フローは、ＲＯＢ（例えば、ＲＯＢ４９５）が、キャッシュ可能なストアが退避されたことを示し得る６３５に移行することができる。あるいは、このフローは、６３０から、１つ以上の再生が本明細書に記載される様々な再生ポリシーによって実行され得る６７５ａに移行することができる。いくつかの実施形態では、６７５ａでの再生は、構成可能な数の良好な再生を実行するまで、初期のピック（第２段階における）が不良再生であることに応じて繰り返さ得る。例えば、この段階におけるストアは、１つの良好な再生を実行するまで再生され得る。１つの良好な再生を実行した後、ストアは、退避するまでは再度再生することが許可され得ない。
【００３９】
このフローは、６７５ａから、キャッシュ可能なストアの退避のための６３５に移行することができる。
【００４０】
このフローは、６３５から、キャッシュ可能なストアがシステム内で最も古いキャッシュ可能なストアになるまで待つ６４０に移行することができる。また、このフローは、６３５から、１つ以上の再生が実行され得る６７５ｂに移行することができる。いくつかの実施形態では、６７５ｂでの再生は、ストアが退避される前に試みられた再生に対するあらゆる再生結果にかかわらず、構成可能な数の良好な再生を実行するまで繰り返され得る。例えば、この段階におけるストアは、１つの良好な再生を実行するまで再生され得る。１つの良好な再生を実行した後、ストアは、最も古いストアストアキューになるまで再度再生されることが許可され得ない。
【００４１】
このフローは、６７５ｂから、キャッシュ可能なストアがシステム内で最も古いキャッシュ可能なストアになるまで待つ６４０に移行することができる。
【００４２】
このフローは、キャッシュ可能なストアが最も古いキャッシュ可能なストアである場合に、６４０から、キャッシュ可能なストアと関連付けられたデータがキャッシュ（例えば、キャッシュ１３０）にコミットまたは書き込まれる６４５に移行することができる。また、このフローは、６４０から、１つ以上の再生が実行され得る６７５ｃに移行することができる。いくつかの実施形態では、６７５ｃでの再生は、例えば、キャッシュラインが書き込み可能な状態になるまで、必要に応じて繰り返される。このフローは、６７５ｃから、キャッシュ可能なストアと関連付けられたデータがキャッシュにコミットまたは書き込まれる６４５に移行することができる。他のキャッシュ可能なストアが存在しない場合には、このフローは、６４０で最も古いキャッシュ可能なストアになるのを待つキャッシュ可能なストアがない状態で、６３５から６４５に移行することができる。上述したように、６４０をスキップする場合には、このフローは、６４５に移行する前に６７５ｄに進むことができることも企図される。６７５ｄでは、本明細書に記載される様々な再生ポリシーまたは他の再生ポリシーによって１つ以上の再生が実行され得る。６７５ｄでの再生は、再生ポリシーによって必要に応じて繰り返され得る。このフローは、データがキャッシュにコミットされると、６４５から、キャッシュ可能なストアがＳＱ（例えば、ＳＱ４１０）から削除される６５０に移行することができる。
【００４３】
いくつかの実施形態では、再生ポリシーの態様は、ストアキュー内のビットまたはレジスタなどの記憶された情報を用いて構成され得る。例えば、再生６７５ａ〜ｄの間で許可された構成可能な数の再生は、１つ以上のビットまたはレジスタ内に記憶され得る。構成可能な数の再生は、再生６７５ａ〜ｄの各々に対して同じであってもよいし、１つ以上の再生６７５ａ〜ｄごとに異なってもよい。ビットまたはレジスタは、ソフトウェアによって読み込まれまたは変更され得るように、ソフトウェアを可視的にさせ得る。本開示の利益を得る当業者であれば、本明細書に記載される再生６７５ａ〜ｄが例示であることが意図されていることを理解すべきである。代替の実施形態は、１つ以上のキャッシュラインの状態、および、ストアの実行段階によって示されるストアの状態に基づいてストア命令を再生するべきかを決定するために他の再生ポリシーを使用することができる。
【００４４】
図７に示される要素は、上述した順序に限定され得ないことが企図される。いくつかの実施形態によれば、図７に示される要素は、本明細書に示された実施形態の趣旨および範囲から逸脱することなく、連続して、並行して、または、別の順序で実行され得る。フローチャートは、本明細書に示された１つ以上の実施形態に従って、全体または一部が実行され得ることも企図される。すなわち、図示したフローチャートにおいて、１つ以上の実施形態に記載される全ての要素を実行する必要はない。図７に示した方法のいくつかの実施形態は、ハードウェア、ファームウェア、ソフトウェアまたはこれらの組み合わせで実装され得る。一時的（ｔｒａｎｓｉｔｏｒｙ）または非一時的（ｎｏｎ−ｔｒａｎｓｉｔｏｒｙ）なコンピュータ可読媒体は、実行されると、本明細書に記載される方法のいくつかの実施形態を実装または実行するように処理システムを構成し得る命令を記憶するために使用され得る。例えば、本明細書に記載される方法のいくつかの実施形態を表す符号化された命令は、例えば、データ記憶ユニットや、組み込まれたＲＡＭ、ＳＲＡＭもしくはＤＲＡＭを含むＲＡＭや、キャッシュや、コンパクトディスクや、ＤＶＤや、ソリッドステート記憶デバイスや、他の記憶媒体などの、非一時的なコンピュータ可読記憶デバイスに記憶され得る。
【００４５】
さらに、いくつかの実施形態では、異なる種類のハードウェア記述言語（ＨＤＬ）が、半導体製品およびデバイス、ならびに／または、他のタイプの半導体デバイスなどの超大規模集積回路（ＶＬＳＩ回路）を設計および製造する過程で使用され得ることも企図される。ＨＤＬのいくつかの例は、ＶＨＤＬおよびＶｅｒｉｌｏｇ／Ｖｅｒｉｌｏｇ−ＸＬであるが、列挙されない他のＨＤＬ形式が使用されてもよい。一実施形態では、ＨＤＬコード（例えば、レジスタ転送レベル（ＲＴＬ）コード／データ）は、ＧＤＳデータ、ＧＤＳＩＩデータなどを生成するために使用され得る。例えば、ＧＤＳＩＩデータは、記述的ファイル形式であり、半導体製品またはデバイスの３次元モデルを表すために異なる実施形態に使用され得る。このようなモデルは、半導体製品および／またはデバイスを作り出すために半導体製造設備によって使用され得る。ＧＤＳＩＩデータは、データベースまたは他のプログラム記憶構造として記憶され得る。また、このデータは、コンピュータ可読記憶デバイス（例えば、データ記憶ユニット１６０、ＲＡＭ１５５（組み込まれたＲＡＭ、ＳＲＡＭおよび／またはＤＲＡＭ）、キャッシュ１３０、コンパクトディスク、ＤＶＤ、ソリッドステート記憶デバイスなど）に記憶され得る。いくつかの実施形態では、ＧＤＳＩＩデータ（または他の類似のデータ）は、本願において本明細書に記載される様々な態様を具現化することができるデバイスを製造するための製造設備（例えば、マスク作業を用いる）を構成するように適合され得る。換言すれば、様々な実施形態では、このＧＤＳＩＩデータ（または他の類似のデータ）は、コンピュータ、プロセッサまたはコントローラにプログラムされてもよく、これは次に、全体または一部において、半導体製品およびデバイスを製造するために半導体製造設備（またはファブ）の動作を制御することができる。例えば、一実施形態では、１つ以上のＣＰＵ１４０、ＧＰＵ１２５、ＳＱ回路１３５、ハードウェア状態機械および／またはアルゴリズム（図示せず）、キャッシュ１３０などを含むシリコンウェハが、ＧＤＳＩＩデータ（または他の類似のデータ）を用いて製造され得る。
【００４６】
様々な実施形態がＳＱ回路に関連する様々なプロセッサまたはキャッシュ可能なストア再生に関して記載され得るが、本明細書に記載される実施形態は、本開示の利益を得る当業者に明らかであるように、例えば、処理デバイスを含む様々なデバイスにおいて幅広い適用性を有し得ることが企図されることにも留意されるべきである。
【００４７】
上記の特定の実施形態は単なる例示であって、本明細書の実施形態が、本明細書の教示の利益を得る当業者にとって明確なように、異なってはいるが同等な様式で変更および実践されてもよい。さらに、特許請求の範囲に記載された事項以外の、本明細書に示された構築または設計の詳細に対する限定は、意図されない。したがって、開示される実施形態は、変更または修正されてもよく、全てのこのような変形は、開示される実施形態の範囲内とみなされることが明らかである。
【００４８】
したがって、本明細書に求められる保護は、特許請求の範囲に記載される通りである。
【図１】
2015533442.tif 000003
【図２】
2015533442.tif 000004
【図３】
2015533442.tif 000005
【図４】
2015533442.tif 000006
【図５】
2015533442.tif 000007
【図６】
2015533442.tif 000008
【図７】
2015533442.tif 000009
【図８】
2015533442.tif 000010
【国際調査報告】
2015533442.tif 000011
2015533442.tif 000012