(57)【要約】  インデックスと、スレッド識別子と、キャッシュフィルラインデータとを含むキャッシュフィルラインを受信する。キャッシュは、潜在的な複製キャッシュラインに関して、インデックスおよび異なるスレッド識別子を使用してプローブされる。潜在的な複製キャッシュラインは、キャッシュラインデータと異なるスレッド識別子とを含む。キャッシュフィルラインデータがキャッシュラインデータとマッチするとすぐに、複製が識別される。潜在的な複製キャッシュラインが共有常駐キャッシュラインとして設定され、スレッド共有許可タグが許可状態に設定される。
2018533135.tif 000002
【特許請求の範囲】
【請求項１】
キャッシュの複製解除のための方法であって、
インデックスと、第1のスレッド識別子と、キャッシュフィルラインデータとを含むキャッシュフィルラインを受信するステップと、
常駐キャッシュラインデータを含み、かつ第2のスレッド識別子でタグ付けされた潜在的な複製常駐キャッシュラインに対して、前記第2のスレッド識別子を使用して、前記インデックスに対応するキャッシュアドレスをプローブするステップと、
前記常駐キャッシュラインデータに対する前記キャッシュフィルラインデータのマッチに少なくとも部分的に基づいて、複製を決定するステップと、
前記複製の前記決定に応じて、共有常駐キャッシュラインとして前記潜在的な複製常駐キャッシュラインを割り当て、前記共有常駐キャッシュラインのスレッド共有許可タグを許可状態に設定するステップであって、前記許可状態が、第1のスレッドが前記共有常駐キャッシュラインに対する共有許可を有することを示す、設定するステップと
を含む、方法。
【請求項２】
前記プローブの結果が前記潜在的な複製常駐キャッシュラインの非存在の指示であることに応じて、新しい常駐キャッシュラインをロードするステップであって、前記新しい常駐キャッシュラインが前記キャッシュ内にあり、前記キャッシュフィルラインデータと前記第1のスレッド識別子とを含む、ロードするステップをさらに含む、請求項1に記載の方法。
【請求項３】
前記潜在的な複製常駐キャッシュラインの前記スレッド共有許可タグが、非共有状態と前記許可状態との間で切り替え可能であり、前記方法が、前記新しい常駐キャッシュラインを前記ロードするステップに関連して、前記新しい常駐キャッシュラインの前記スレッド共有許可タグを前記非共有状態に設定するステップをさらに含む、請求項2に記載の方法。
【請求項４】
キャッシュリセットするステップをさらに含み、前記キャッシュリセットするステップが、前記スレッド共有許可タグを前記非共有状態に切り替えるステップを含む、請求項3に記載の方法。
【請求項５】
前記プローブの結果が前記潜在的な複製常駐キャッシュラインを識別することに応じて、前記キャッシュフィルラインデータが前記常駐キャッシュラインデータとマッチしないことと組み合わせて、前記新しい常駐キャッシュラインを前記キャッシュ内にロードするステップをさらに含む、請求項2に記載の方法。
【請求項６】
前記潜在的な複製常駐キャッシュラインが前記スレッド共有許可タグを含み、前記スレッド共有許可タグが非共有状態であり、前記方法が、前記新しい常駐キャッシュラインを前記キャッシュ内に前記ロードするステップに関連して、前記潜在的な複製常駐キャッシュラインの前記スレッド共有許可タグを前記非共有状態に維持するステップをさらに含む、請求項5に記載の方法。
【請求項７】
前記複製が第1の複製であり、前記キャッシュフィルラインが第1のキャッシュフィルラインであり、前記共有常駐キャッシュラインが第1のスレッド共有常駐キャッシュラインであり、前記許可状態が第1のスレッド許可状態であり、前記方法が、
第3のスレッドによるキャッシュミスに関連して、前記インデックスと、前記第3のスレッドに関連する第3のスレッド識別子と、第2のキャッシュフィルラインデータとを含む第2のキャッシュフィルラインを受信するステップと、
前記第1のスレッド共有常駐キャッシュラインの前記常駐キャッシュラインデータに対する前記第2のキャッシュフィルラインデータのマッチに少なくとも部分的に基づいて、第2の複製を決定するステップと、
前記第2の複製の前記決定時に、第1のスレッド-第3のスレッド共有常駐キャッシュラインとして前記第1のスレッド共有常駐キャッシュラインを割り当て、前記第1のスレッド-第3のスレッド共有常駐キャッシュラインの前記スレッド共有許可タグを第1のスレッド-第3のスレッド許可状態に設定するステップであって、前記第1のスレッド-第3スレッド許可状態が、前記第1のスレッドおよび前記第3のスレッドが前記第1のスレッド-第3のスレッド共有常駐キャッシュラインに対する共有許可を有することを示すように構成される、設定するステップと
をさらに含む、請求項1に記載の方法。
【請求項８】
前記共有常駐キャッシュラインの前記スレッド共有許可タグを前記許可状態に設定するステップが、前記共有常駐キャッシュラインの前記スレッド共有許可タグを非共有から前記許可状態に切り替えるステップを含む、請求項1に記載の方法。
【請求項９】
前記スレッド共有許可タグを前記許可状態に設定するステップの後で、前記第1のスレッドからのキャッシュ読取り要求を用いて前記キャッシュに対するアクセスを試みるステップであって、前記第1のスレッドからの前記キャッシュ読取り要求が、前記インデックスと前記第1のスレッド識別子とを含む、試みるステップと、それに応じて、前記スレッド共有許可タグの前記許可状態に少なくとも部分的に基づいて、前記共有常駐キャッシュラインの少なくとも前記常駐キャッシュラインデータを取り出すステップと
をさらに含む、請求項8に記載の方法。
【請求項１０】
前記共有常駐キャッシュラインの前記スレッド共有許可タグを非共有状態にリセットするステップと、
前記第1のスレッドからのキャッシュ読取り要求を用いて前記キャッシュに対するアクセスを試みるステップであって、前記第1のスレッドからの前記キャッシュ読取り要求が、前記インデックスと前記第1のスレッド識別子とを含む、試みるステップと、
前記第1のスレッド識別子が前記第2のスレッド識別子とマッチしないことと、前記スレッド共有許可タグの前記非共有状態の組合せに少なくとも部分的に基づいて、ミスを示すステップと
をさらに含む、請求項1に記載の方法。
【請求項１１】
前記スレッド共有許可タグがビットを含み、前記許可状態が論理「1」値の前記ビットであり、非共有状態が論理「0」値の前記ビットである、請求項1に記載の方法。
【請求項１２】
前記ビットが第1のビットであり、前記スレッド共有許可タグが第2のビットをさらに含み、前記非共有状態が、前記第2のビットに関する「0」の論理値と組み合わせた、前記第1のビットに関する「0」の論理値である、請求項11に記載の方法。
【請求項１３】
キャッシュシステムであって、
各々が常駐キャッシュラインデータを含み、かつ常駐キャッシュラインスレッド識別子およびスレッド共有許可タグでタグ付けされた複数の常駐キャッシュラインを、各々、インデックスに対応するロケーションにおいて取出し可能に記憶するように構成されたキャッシュと、
キャッシュフィルラインインデックスと、キャッシュフィルラインスレッド識別子と、キャッシュフィルラインデータとを含むキャッシュフィルラインを受信するように構成されたキャッシュラインフィルバッファと、
前記キャッシュフィルラインスレッド識別子が第1のスレッド識別子であることに応じて、潜在的な複製キャッシュラインを識別することであって、前記潜在的な複製キャッシュラインが前記常駐キャッシュラインの中にあり、かつ第2のスレッド識別子でタグ付けされる、識別することと、
前記キャッシュフィルラインデータに対する前記潜在的な複製キャッシュラインのキャッシュラインデータのマッチと組み合わせて、前記潜在的な複製キャッシュラインに少なくとも部分的に基づいて、前記潜在的な複製キャッシュラインの前記スレッド共有許可タグを許可状態に設定することと
を行うように構成された
キャッシュ制御論理と
を備える、キャッシュシステム。
【請求項１４】
前記キャッシュ制御論理が、前記潜在的な複製キャッシュラインを識別するために、
前記キャッシュフィルラインインデックスに対応するキャッシュアドレスをプローブし、前記プローブの結果が前記潜在的な複製キャッシュラインを識別することであるとすぐに、前記潜在的な複製キャッシュラインの常駐キャッシュラインデータを前記キャッシュフィルラインと比較し、前記比較の結果に少なくとも部分的に基づいて、前記キャッシュフィルラインデータに対する前記潜在的な複製キャッシュラインデータの前記マッチを決定する
ようにさらに構成される、請求項13に記載のキャッシュシステム。
【請求項１５】
前記キャッシュ制御論理が、
プローブ論理と、
キャッシュラインデータ比較論理と
を備え、
前記プローブ論理が、前記キャッシュフィルラインの前記受信時にまたはそれに応じて、前記第2のスレッド識別子を使用して、前記キャッシュをプローブする動作を実行するように構成され、
前記キャッシュラインデータ比較論理が、前記潜在的な複製キャッシュラインの前記常駐キャッシュラインデータを前記キャッシュフィルラインデータと比較するように構成される、請求項14に記載のキャッシュシステム。
【請求項１６】
前記キャッシュ制御論理が、
前記潜在的な複製キャッシュラインの前記スレッド共有許可タグを前記許可状態に設定するように構成されたスレッド共有許可タグ更新論理
をさらに備える、請求項15に記載のキャッシュシステム。
【請求項１７】
前記スレッド共有許可タグ更新論理が、前記潜在的な複製キャッシュラインの前記スレッド共有許可タグを非共有状態から共有状態に切り替えることによって、前記潜在的な複製キャッシュラインの前記スレッド共有許可タグを前記許可状態に設定するようにさらに構成される、請求項16に記載のキャッシュシステム。
【請求項１８】
前記キャッシュ制御論理が、前記キャッシュフィルラインデータに対する前記潜在的な複製キャッシュラインのキャッシュラインデータのマッチに応じて、新しい常駐キャッシュラインを前記キャッシュ内にロードし、前記新しい常駐キャッシュラインを前記キャッシュフィルラインインデックスに対応するアドレスにロードするようにさらに構成され、新しい常駐キャッシュラインが前記キャッシュフィルラインスレッド識別子と前記キャッシュフィルラインデータとを含む、請求項13に記載のキャッシュシステム。
【請求項１９】
前記キャッシュ制御論理が、前記新しい常駐キャッシュラインの前記スレッド共有許可タグを非共有状態に設定するようにさらに構成される、請求項18に記載のキャッシュシステム。
【請求項２０】
前記潜在的な複製常駐キャッシュラインの前記スレッド共有許可タグが前記非共有状態であり、前記キャッシュ制御論理が、前記新しい常駐キャッシュラインの前記ロードに関連して、前記潜在的な複製常駐キャッシュラインの前記スレッド共有許可タグを前記非共有状態に維持するようにさらに構成される、請求項19に記載のキャッシュシステム。
【請求項２１】
前記スレッド共有許可タグがビットを含み、前記許可状態が論理「1」値の前記ビットであり、前記非共有状態が論理「0」値の前記ビットである、請求項20に記載のキャッシュシステム。
【請求項２２】
前記スレッド共有許可タグが、設定されると、共有常駐キャッシュラインとして前記潜在的な複製キャッシュラインを示すように構成され、前記許可状態が、第1のスレッドが前記共有常駐キャッシュラインにアクセスするための許可を有することを示すように構成され、前記キャッシュ制御論理が、前記スレッド共有許可タグを前記許可状態に設定した後で、キャッシュ読取り要求を受信することであって、前記第1のスレッドからの前記キャッシュ読取り要求が、前記インデックスと前記第1のスレッド識別子とを含む、受信することと、それに応じて、前記スレッド共有許可タグの前記許可状態に少なくとも部分的に基づいて、前記共有常駐キャッシュラインの少なくとも前記常駐キャッシュラインデータを取り出すこととを行うようにさらに構成される、請求項14に記載のキャッシュシステム。
【請求項２３】
システムであって、
常駐キャッシュラインデータを含み、かつ第1のスレッド識別子およびスレッド共有許可タグでタグ付けされた常駐キャッシュラインをインデックスに対応するアドレスにおいて取出し可能に記憶するように構成された、キャッシュであって、前記スレッド共有許可タグが非共有状態であり、かつ少なくとも1つの許可状態に切り替え可能である、キャッシュと、
キャッシュフィルラインインデックスとキャッシュフィルラインデータとを含み、かつ第2のスレッド識別子でタグ付けされたキャッシュフィルラインを受信するように構成されたキャッシュラインフィルバッファと、
前記常駐キャッシュラインデータが前記キャッシュフィルラインデータとマッチすることと組み合わせて、前記キャッシュフィルラインインデックスが前記インデックスとマッチすることに基づいて、前記常駐キャッシュラインの前記スレッド共有許可タグを許可状態に設定するように構成されたキャッシュ制御論理と
を備える、システム。
【請求項２４】
前記キャッシュ制御論理が、
前記常駐キャッシュラインデータが前記キャッシュフィルラインデータとマッチしないことに応じて、新しい常駐キャッシュラインを前記キャッシュ内にロードするようにさらに構成され、前記新しい常駐キャッシュラインが前記第1のスレッド識別子と前記キャッシュフィルラインデータとを含む、請求項23に記載のシステム。
【請求項２５】
前記キャッシュ制御論理が、前記新しい常駐キャッシュラインの前記スレッド共有許可タグを前記非共有状態に設定するようにさらに構成される、請求項24に記載のシステム。
【請求項２６】
前記キャッシュ制御論理が、前記新しい常駐キャッシュラインの前記ロードと、前記キャッシュフィルラインが受信されるとき、前記常駐キャッシュラインの前記スレッド共有許可タグが前記非共有状態であることとに関連して、前記常駐キャッシュラインのスレッド共有許可タグを非共有状態に維持するようにさらに構成される、請求項25に記載のシステム。
【請求項２７】
キャッシュの複製解除のための装置であって、
インデックスとキャッシュフィルラインデータとを含み、かつ第1のスレッド識別子でタグ付けされたキャッシュフィルラインを受信するための手段と、
常駐キャッシュラインデータを含み、かつ第2のスレッド識別子でタグ付けされた潜在的な複製常駐キャッシュラインに対して、前記第2のスレッド識別子を使用して、前記インデックスに対応するキャッシュアドレスをプローブするための手段と、
前記常駐キャッシュラインデータに対する前記キャッシュフィルラインデータのマッチに少なくとも部分的に基づいて、複製を決定するための手段と、
前記複製の前記決定時に、前記潜在的な複製常駐キャッシュラインを共有常駐キャッシュラインとして割り当て、前記共有常駐キャッシュラインのスレッド共有許可タグを許可状態に設定するための手段であって、前記許可状態が、第1のスレッドが前記共有常駐キャッシュラインに対する共有許可を有することを示す、設定するための手段と
を備える、装置。
【請求項２８】
指示に応じて、潜在的な複製常駐キャッシュラインの非存在を示す、前記キャッシュアドレスの前記プローブの結果に基づいて、新しい常駐キャッシュラインをキャッシュ内にロードするための手段であって、前記新しい常駐キャッシュラインが前記キャッシュフィルラインデータと前記第1のスレッド識別子とを含む、ロードするための手段
をさらに含む、請求項27に記載の装置。
【請求項２９】
前記潜在的な複製常駐キャッシュラインの前記スレッド共有許可タグが、非許可状態と前記許可状態との間で切り替え可能であり、前記装置が、
前記キャッシュ内への前記新しい常駐キャッシュラインの前記ロードに関連して、前記新しい常駐キャッシュラインの前記スレッド共有許可タグを非共有状態に設定するための手段
をさらに含む、請求項28に記載の装置。
【請求項３０】
前記キャッシュフィルラインが受信されるとき、前記常駐キャッシュラインの前記スレッド共有許可タグが前記非共有状態であることと組み合わせて前記新しい常駐キャッシュラインの前記ロードに関連して、前記常駐キャッシュラインの前記スレッド共有許可タグを前記非共有状態に維持するための手段をさらに含む、請求項29に記載の装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本出願は、一般に、キャッシュおよびキャッシュ管理に関する。
【背景技術】
【０００２】
キャッシュは、メモリの特定のブロック、たとえば、最近使用されたデータまたは命令のコピーを記憶する高速アクセスプロセッサメモリである。これは、メインメモリからデータおよび命令をフェッチするオーバーヘッドおよび遅延を回避することができる。
【０００３】
キャッシュコンテンツは、一般に、「キャッシュライン」と呼ばれるブロックとして配置およびアクセスされ得る。
【０００４】
キャッシュ容量が大きければ大きいほど、すなわち、キャッシュラインの数が多ければ多いほど、キャッシュ読取りが「ミス」の代わりに「ヒット」をもたらすことになる確率は高まる。一般に、低いミス率が望まれるが、これは、ミスは処理を中断および遅延し得るためである。遅延はかなりなものであり得るが、これは、プロセッサは、より遅いメインメモリを探索して、所望のコンテンツを見出して取り出し、次いで、そのコンテンツをキャッシュ内にロードしなければならないためである。しかしながら、キャッシュ容量は、電力消費およびチップエリアにおいてかなりコストがかかる場合がある。その理由には、より高いエリア/より高い電力メモリを必要とし得るキャッシュ速度要件が含まれる。キャッシュ要件は、したがって、パフォーマンスと電力/エリアコストとの間の妥協であり得る。
【０００５】
プロセッサは、多くの場合、複数のスレッドを同時に実行することができ、スレッドの各々はキャッシュにアクセスすることができる。結果は、キャッシュスペースの競合であり得る。例として、複数のスレッドが、たとえば、同じ仮想アドレスインデックスを使用して、ダイレクトマッピングされたキャッシュにアクセスする場合、結果は、各キャッシュラインロードが、仮想インデックスがマッピングするキャッシュスロット内のいずれかの既存のキャッシュラインを除去またはフラッシュすることであり得る。タグとしてスレッド識別子を使用する様々な技法では、異なるスレッド識別タグを除いて、互いと同一である複製キャッシュラインが作成され得る。
【発明の概要】
【課題を解決するための手段】
【０００６】
この発明の概要は、いくつかの例示的な態様の特徴および態様を特定するものであり、開示する主題の排他的または包括的な説明ではない。特徴または態様がこの発明の概要に含まれるか、またはこの発明の概要から省略されるかは、そのような特徴の相対的重要性を示すものとして意図されていない。以下の詳細な説明を読み、その一部を形成する図面を見ることによって、追加の特徴および態様が説明され、当業者に明示的になるであろう。
【０００７】
キャッシュを複製解除するための様々な方法が開示され、様々な例示的な態様によれば、動作の例示的な組合せは、インデックスとキャッシュフィルラインデータとを含み、かつ第1のスレッド識別子でタグ付けされたキャッシュフィルラインを受信するステップと、常駐キャッシュラインデータを含み、かつ第2のスレッド識別子でタグ付けされた潜在的な複製常駐キャッシュラインに対して、第2のスレッド識別子を使用して、インデックスに対応するキャッシュアドレスをプローブするステップとを含み得る。態様では、例示的な動作はまた、常駐キャッシュラインデータに対するキャッシュフィルラインデータのマッチに少なくとも部分的に基づいて、複製を決定するステップと、それに応じて、潜在的な複製常駐キャッシュラインを共有常駐キャッシュラインとして割り当て、共有常駐キャッシュラインのスレッド共有許可タグを許可状態に設定するステップであって、許可状態が、第1のスレッドが共有常駐キャッシュラインに対する共有許可を有することを示すように構成される、設定するステップとを含み得る。
【０００８】
様々なキャッシュシステムが開示され、様々な例示的な態様によれば、特徴の例示的な組合せは、各々が常駐キャッシュラインデータを含み、かつ、常駐キャッシュラインスレッド識別子およびスレッド共有許可タグでタグ付けされた複数の常駐キャッシュラインを、各々、インデックスに対応するロケーションにおいて取出し可能に記憶するように構成されたキャッシュを含み得る。一態様では、特徴の組合せはまた、キャッシュフィルラインインデックスと、キャッシュフィルラインスレッド識別子と、キャッシュフィルラインデータとを含むキャッシュフィルラインを受信するように構成されたキャッシュラインフィルバッファを備えてよく、かつキャッシュ制御論理を含み得る。一態様では、キャッシュ制御論理は、キャッシュフィルラインスレッド識別子が第1のスレッド識別子であることに応じて、常駐キャッシュラインのうち、第2のスレッド識別子でタグ付けされた潜在的な常駐キャッシュラインを識別するように構成され得る。一態様では、キャッシュ制御論理は、潜在的な複製キャッシュラインデータがキャッシュフィルラインデータとマッチすることと組み合わせて、プロービングが潜在的な複製キャッシュラインを識別にすることに少なくとも部分的に基づいて、共有常駐キャッシュラインのスレッド共有許可タグを許可状態に設定するように構成され得る。
【０００９】
他のシステムが開示され、様々な例示的な態様によれば、特徴の例示的な組合せは、常駐キャッシュラインデータを含み、かつ第1のスレッド識別子およびスレッド共有許可タグでタグ付けされた常駐キャッシュラインをインデックスに対応するアドレスにおいて取出し可能に記憶するように構成されたキャッシュを含み得る。一態様では、特徴の例示的な組合せは、スレッド共有許可タグが「非共有」状態にあり、かつ少なくとも1つの許可状態に切り替え可能であることを含み得る。一態様では、特徴の組合せはまた、キャッシュ制御論理と通信している、キャッシュフィルラインインデックスとキャッシュフィルラインデータとを含み、かつ第2のスレッド識別子でタグ付けされたキャッシュフィルラインを受信するように構成されたキャッシュラインフィルバッファを含み得る。一態様では、キャッシュ制御論理は、特徴の様々な組合せによれば、常駐キャッシュラインデータがキャッシュフィルラインデータとマッチすることと組み合わせて、キャッシュラインフィルインデックスがインデックスとマッチすることに基づいて、共有常駐キャッシュラインのスレッド共有許可タグを許可状態に設定するように構成され得る。
【００１０】
キャッシュの複製解除のための装置が開示され、様々な例示的な態様によれば、特徴の例示的な組合せは、常駐キャッシュラインデータに対するキャッシュフィルラインデータのマッチに少なくとも部分的に基づいて、複製を決定するための手段と組み合わせて、常駐キャッシュラインデータを含み、かつ第2のスレッド識別子でタグ付けされた潜在的な複製常駐キャッシュラインに対して、第2のスレッド識別子を使用して、インデックスに対応するキャッシュアドレスをプローブするための手段と、潜在的な複製常駐キャッシュラインを共有常駐キャッシュラインとして割り当て、複製の決定時に、共有常駐キャッシュラインのスレッド共有許可タグを許可状態に設定するための手段であって、許可状態が、第1のスレッドが共有常駐キャッシュラインに対する共有許可を有することを示す、設定するための手段とを含み得る。
【００１１】
添付の図面は、例示的な態様の説明を助けるために提示され、実施形態の限定ではなく実施形態の例示のためのみに提供される。
【図面の簡単な説明】
【００１２】
【図１】様々な例示的な態様による、1つの例示的な動的マルチスレッド共有許可タグ(「動的MTS許可タグ」)キャッシュシステムの機能ブロック図である。
【図２】様々な例示的な態様による、1つの動的MTS許可タグキャッシュプロセスの一部分における例示的な動作の流れ図である。
【図３】様々な例示的な態様による、1つの動的MTS許可タグキャッシュのアクセス回路の一部分の論理図である。
【図４】様々な例示的な態様による、1つの動的MTS許可タグキャッシュの探索および許可更新内の例示的な動作の流れ図である。
【図５】本開示の1つまたは複数の態様が有利に採用され得る例示的なワイヤレスデバイスを示す図である。
【発明を実施するための形態】
【００１３】
様々な実施および適用の態様および特徴、ならびに例が以下の説明および関連する図面において開示される。開示される概念の範囲から逸脱することなく、開示される例の代替が考案され得る。さらに、いくつかの例は、いくつかの構成要素および動作に関して、知られている従来の技法を使用して説明される。関連する詳細をあいまいにするのを避けるために、例示的な特徴および動作に付随する場合を除いて、そのような構成要素および動作は、詳細に説明されないか、または省略されることになる。
【００１４】
「例示的」という単語は、本明細書では、「例、実例、または例証として機能する」を意味するために使用される。「例示的」として本明細書で説明するいずれの態様も、必ずしも他の態様よりも好ましいか、または有利であると解釈されるべきでない。さらに、態様のある例示的な組合せに関する動作の特徴、利点、またはモードの説明は、その組合せによるすべての実施が論じられる動作の特徴、利点、またはモードを含むことを必要としない。
【００１５】
本明細書で使用される用語は、特定の例について説明するためのものであり、添付の特許請求の範囲に何らかの限定を負わせるものではない。本明細書で使用される単数形「a」、「an」、および「the」は、文脈が別段に明確に示さない限り、複数形も含むものとする。さらに、「備える」、「備えている」、「含む」および/または「含んでいる」という用語は、本明細書で使用される場合、言及されている特徴、整数、ステップ、動作、要素および/または構成要素の存在を明示しているが、1つまたは複数の他の特徴、整数、ステップ、動作、要素、構成要素および/またはそれらのグループの存在または追加を排除するものではない。
【００１６】
さらに、様々な例示的な態様およびそれを有する例示的な実装形態が、たとえば、コンピューティングデバイスの要素によって実行されるアクションのシーケンスの点から説明される。説明するそのようなアクションは、特定の回路(たとえば、特定用途向け集積回路(ASIC))によって実行されるか、1つまたは複数のプロセッサによって実行されるプログラム命令によって実行されるか、またはその両方の組合せによって実行されることが可能であることが認識されよう。さらに、本明細書で説明するそのようなアクションのシーケンスは、実行時に関連するプロセッサに本明細書で説明する機能を実行させる、対応するコンピュータ命令セットがその中に記憶された任意の形態のコンピュータ可読記憶媒体内で完全に実装されると見なすことができる。したがって、様々な態様は複数の異なる形で実装可能であり、そのすべてが、請求される主題の範囲内であることが企図されている。さらに、本明細書で説明するアクションおよび動作について、例示的な形態および実装形態が、たとえば、説明するアクションを実行する「ように構成された論理」として説明される場合がある。
【００１７】
図1は、様々な態様による、たとえば、ローカルバス104または均等物を通して、キャッシュ106に結合された中央処理装置(CPU)102を備えたプロセッサシステム100のブロック図を示す。CPU102は、たとえば、プロセッサバス108を通して、プロセッサメインメモリ110と論理的に相互接続されてもよい。
【００１８】
図1を参照すると、キャッシュ106は、キャッシュラインにアクセスするための、そのラインをインスタンス化するスレッド以外のスレッドに対する許可の動的な、たとえば、ランタイムの付与の特徴、ならびに複数のスレッドが付与された許可に従ってキャッシュラインにアクセスする特徴で構成され得る。説明のために、開示する、キャッシュラインにアクセスするための、そのラインをインスタンス化するスレッド以外のスレッドに対する許可の動的な、たとえば、ランタイムの付与の特徴、ならびに複数のスレッドが付与された許可に従ってキャッシュラインにアクセスする特徴の様々な配置および構成、組合せおよび部分的組合せは、「動的MTS許可タグキャッシュ」と省略される「動的マルチスレッド共有許可タグキャッシュ」と集合的に呼ばれる。一態様では、キャッシュ106は、知られている従来のキャッシュ機能と組み合わせて、動的MTS許可タグキャッシュ機能を提供するように構成され得る。
【００１９】
プロセッサシステム100は、第2のレベルキャッシュ112を含むマルチレベルキャッシュ配置(可視であるが、別々にラベル付けされない)の最低レベルキャッシュなどのキャッシュ106で構成され得る。この構成は、例のためだけであり、開示する概念によるキャッシュラインのマルチスレッド動的キャッシュライン許可タグ共有のいずれかの態様または特徴を2レベルキャッシュリソースの低レベルキャッシュ部分に限定することを意図しない。代わりに、本開示を読むと当業者が諒解するように、開示する概念による、キャッシュラインのマルチスレッド動的キャッシュライン許可タグ共有は、たとえば、シングルレベルキャッシュ内で、もしくは2レベルキャッシュシステムの2レベルキャッシュ内で、またはいずれかのマルチレベルキャッシュシステムのいずれかの1つまたは複数のキャッシュレベル内で実施され得る。
【００２０】
図1を参照すると、キャッシュ106は、動的スレッド許可タグ付きキャッシュデバイス114と、キャッシュフィルバッファ116と、キャッシュ制御論理118とを含み得る。一態様では、キャッシュフィルバッファ116およびキャッシュ制御論理118は、後でより詳細に説明するように、知られている従来のキャッシュフィルバッファおよびキャッシュコントローラの機能に加えて、マルチスレッド動的キャッシュライン許可タグ機能を含むように構成され得る。動的スレッド許可タグ付きキャッシュデバイス114のマルチスレッドキャッシュライン共有機能は、様々なアドレス指定方式に従って構成されたキャッシュ内でまたはそれらとともに実装され得る。たとえば、動的スレッド許可タグ付きキャッシュデバイス114の仮想インデックス/仮想タグ(VIVT)実装形態は、この態様に対して、本開示において後の部分でより詳細に説明される。様々な態様による例示的な動作について、VIVTアドレス指定方式を参照して本明細書で説明する。しかしながら、これは、開示する様々な態様による実施の範囲をVIVTキャッシュに限定することを意図しない。むしろ、当業者は、過度の実験を行うことなく、開示する実施を、限定することなく、たとえば、物理的にインデックス付けされた、物理的にタグ付けされたまたは仮想的にインデックス付けされた、開示する実施を他のキャッシュアドレス指定技法に適応することができる。
【００２１】
図1を参照すると、動的スレッド許可タグ付きキャッシュデバイス114は、例示的なキャッシュライン120-1、120-2...120-nなど、複数のキャッシュラインを記憶することができる。便宜上、キャッシュライン120-1、120-2...120-nは、代わりに、「常駐キャッシュライン120」と呼ばれ、総称単数で、「常駐キャッシュライン120」と呼ばれることになる(ラベル「120」は図1に明示的に出現しない)。常駐キャッシュライン120は、様々な組合せで、様々な態様による動的MTS許可タグ機能の特徴を提供するように構成され得、その例についてより詳細に説明する。
【００２２】
図1の拡大図EXを参照すると、常駐キャッシュライン120は、常駐キャッシュラインデータ122と、タグとして、キャッシュラインスレッド識別子124およびスレッド共有許可タグ126とを含み得る。随意に、常駐キャッシュライン120は、アドレススペース識別子(図1では明示的に可視ではない)と、仮想タグ(図1では明示的に可視ではない)と、モードビット(図1では明示的に可視ではない)とを含み得る。キャッシュラインスレッド識別子124、および使用される場合、アドレススペース識別子、仮想タグ、およびモードビットは、たとえば、知られている従来技法に従って構成され得る。
【００２３】
一態様では、スレッド共有許可タグ126は、「非共有」状態から1つまたは複数の「共有許可」状態に切り替え可能であり得る。一態様では、スレッド共有許可タグ126は、ビットの量で構成され得る。量は、常駐キャッシュライン120を共有することができる同時スレッドの量を確定または制限し得る。たとえば、設計目標が、最高で2つのスレッドが常駐キャッシュライン120を共有できることである場合、スレッド共有許可タグ126はシングルビットであり得る(図1では明示的に可視ではない)。シングルビットは、常駐キャッシュライン120が共有されていないことを示す第1の論理状態(たとえば、論理「0」)と2つのスレッドの他方がその常駐キャッシュライン120に対する共有許可を有することを示す第2の論理状態(たとえば、論理「1」)との間で切り替えることができる。
【００２４】
Table I(表1)は、スレッド共有許可タグ126に関するシングルビット構成の一例を示す。
【００２５】
【表１】
2018533135.tif 000003
【００２６】
Table I(表1)を参照すると、一態様では、他のスレッドがそれに対するスレッド共有許可を有するスレッド共有許可タグ126の対応またはマッピングは、常駐キャッシュラインスレッドIDに依存し得る。たとえば、常駐キャッシュラインスレッドIDが第1のスレッドIDである場合、スレッド共有許可タグ126に関するビット値「1」は、第2のスレッドがその常駐キャッシュラインに対してスレッド共有許可を有することを示し得る。その常駐キャッシュラインスレッドIDとして第1のスレッドIDを有する例示的な常駐キャッシュラインは、第2のスレッド共有常駐キャッシュラインであり得、ビット値「1」は、スレッド共有許可タグ126に関する第2のスレッド共有許可状態であり得る。常駐キャッシュラインスレッドIDが第2のスレッドIDである場合、スレッド共有許可タグ126に関する同じビット値「1」は、第1のスレッドがその常駐キャッシュラインに対してスレッド共有許可を有することを示し得る。その常駐キャッシュラインスレッドIDとして第2のスレッドIDを有する例示的な常駐キャッシュラインは、第1のスレッド共有常駐キャッシュラインであり得、ビット値「1」は、スレッド共有許可タグ126に関する第1のスレッド共有許可状態であり得る。
【００２７】
スレッド共有許可タグ126は、1つの代替態様では、2つ以上のビットで構成され得る(図1では明示的に可視ではない)。下記のTable II(表2)は、最右ビットとして任意に設定され得る第1のビットと、最左ビットとして任意に設定され得る第2のビットとを有する、スレッド共有許可タグ126のそのような構成の一例を示す。2ビットである第1のビットおよび第2のビットは、常駐キャッシュライン120が3つのスレッドによって共有されることを可能にし得る。3つのスレッドは、(常駐キャッシュラインスレッドIDによって示される)常駐キャッシュライン120をインスタンス化したスレッド、および他の2つのスレッドのうちの1つまたは両方のスレッドである。
【００２８】
【表２】
2018533135.tif 000004
【００２９】
Table II(表2)を参照すると、一態様では、他のスレッドがそれに対するスレッド共有許可を有するスレッド共有許可タグ126の対応またはマッピングは、常駐キャッシュラインスレッドIDに依存し得る。たとえば、常駐キャッシュラインスレッドIDが第1のスレッドIDである場合、スレッド共有許可タグ126に関するビット値「01」は、第2のスレッドがその常駐キャッシュラインに対してスレッド共有許可を有することを示し得る。常駐キャッシュラインスレッドIDが第2のスレッドIDである場合、スレッド共有許可タグ126に関する同じビット値「01」は、第1のスレッドがその常駐キャッシュラインに対してスレッド共有許可を有することを示し得る。常駐キャッシュラインスレッドIDが第1のスレッドIDである場合、スレッド共有許可タグ126に関するビット値「11」は、第2のスレッドおよび第3のスレッドがその常駐キャッシュラインに対してスレッド共有許可を有することを示し得る。とはいえ、常駐キャッシュラインスレッドIDが第2のスレッドIDである場合、スレッド共有許可タグ126に関する同じビット値「11」は、第1のスレッドおよび第3のスレッドがその常駐キャッシュラインに対してスレッド共有許可を有することを示し得る。第2のスレッドIDを有する例示的な常駐キャッシュラインは、その場合、第1のスレッド-第3のスレッド共有常駐キャッシュラインであり得、スレッド共有許可タグ126の「11」値は、第1のスレッド-第3のスレッド許可状態であり得る。
【００３０】
Table II(表2)は、単なる一例であり、いずれかの態様の範囲を限定しない。むしろ、本開示を読めば、当業者は、同等の機能を提供し得るスレッド共有許可タグ126の様々な代替的な2ビット構成を特定することができる。そのような当業者は、過度の実験を行うことなく、Table II(表2)が示す概念をスレッド共有許可タグ126の3つ以上のビット構成に拡張することもできる。
【００３１】
図1を参照すると、一態様では、キャッシュフィルバッファ116は、キャッシュフィルライン128を受信するように構成され得る。「CX」とラベル付けされる、拡大されたエリアを参照すると、キャッシュフィルライン128は、インデックス130(図1では「RVI」とラベル付けされる)とキャッシュフィルラインデータ134とを含むことができ、キャッシュフィルラインスレッド識別子132(図1では「CTI」とラベル付けされる)でタグ付けされ得る。一態様では、キャッシュフィルライン128はまた、キャッシュフィルライン仮想タグ135(図1では「CVT」とラベル付けされる)を含み得る。キャッシュフィルライン128は、たとえば、キャッシュフィルラインスレッド識別子132によって識別されるスレッドによるキャッシュフィルライン128のキャッシュ読取りに対するキャッシュミスに続いて受信され得る。キャッシュフィルライン128は、たとえば、動的スレッド許可タグ付きキャッシュデバイス114と第2のレベルキャッシュ112との間の論理経路129を介して受信され得る。キャッシュフィルライン128を生成するための手段、ならびにキャッシュフィルライン128、そのインデックス130、キャッシュフィルラインスレッド識別子132、およびキャッシュフィルラインデータ134のフォーマットおよび構成は、知られている従来のキャッシュラインフィル技法に従ってよい。したがって、例示的な態様またはそれによる動作の説明に付随的な場合を除いて、キャッシュフィルライン128を生成することのさらなる詳細な説明は省略する。
【００３２】
一態様では、キャッシュ制御論理118は、プローブ論理136(図1では「PB論理」とラベル付けされる)と、キャッシュラインデータ比較論理138(図1では「CMP論理」とラベル付けされる)と、スレッド共有許可タグ更新論理140(図1では「TSPタグ論理」とラベル付けされる)とを備え得る。プローブ論理136は、キャッシュフィルバッファ116がキャッシュフィルライン128を受信して、一時的に保持するとすぐに、またはそれに応じて、キャッシュフィルライン128のインデックス130と、キャッシュフィルラインスレッド識別子132以外のすべてのスレッド識別子とを使用して、動的スレッド許可タグ付きキャッシュデバイス114をプローブする動作を実行するように構成され得る。一態様では、プローブは、他のスレッド識別子の各々に関して、動的スレッド許可タグ付きキャッシュデバイス114が、キャッシュフィルバッファ116内のキャッシュフィルライン128のインデックス130に関連して、有効である常駐キャッシュライン120を保持するかどうかを決定することができる。例示的な動作を説明する際の好都合な参照として、プローブ動作によって見出された有効な常駐キャッシュライン(もしあれば)は、「潜在的な複製キャッシュライン」(図1では別々にラベル付けされていない)と呼ばれることになる。
【００３３】
一態様では、キャッシュラインデータ比較論理138は、各(もしれあば)潜在的な複製キャッシュラインに関して、キャッシュフィルバッファ116内に保持されているキャッシュフィルライン128のキャッシュフィルラインデータ134に対するその常駐キャッシュラインデータ122の比較を実行するように構成され得る。キャッシュラインデータ比較論理138はまた、一態様では、その潜在的な複製キャッシュラインの常駐キャッシュラインデータ122がキャッシュフィルラインデータ134とマッチするとの決定に応じて、いずれかの潜在的な複製キャッシュラインを「複製キャッシュライン」(図1では別々にラベル付けされていない)として識別するように構成され得る。一態様では、スレッド共有許可タグ更新論理140は、複製キャッシュラインのスレッド共有許可タグ126を、キャッシュフィルスレッド識別子132に対応するスレッドが複製キャッシュラインにアクセスする許可を有することを示す許可状態に更新するように構成され得る。
【００３４】
図1を参照すると、一態様では、キャッシュ制御論理118は、後により詳細に説明するように、複製キャッシュラインの存在の決定時に、キャッシュフィルライン128を破棄するようにさらに構成され得る。
【００３５】
さらに、一態様では、キャッシュ制御論理118は、少なくとも2つのイベント時に、新しいキャッシュライン(図1では別々にラベル付けされていない)としてキャッシュフィルライン128を動的スレッド許可タグ付きキャッシュデバイス114内にロードするように構成され得る。2つのイベントのうちの1つは、プローブ論理136が潜在的な複製キャッシュラインを見出さないことであり得る。プローブ論理136は、潜在的な複製キャッシュラインを見出さないとすぐに、潜在的な複製キャッシュラインの非存在の指示(Indication)を生成するように構成され得る。少なくとも2つのイベントのうちのもう1つは、キャッシュラインデータ比較論理138が、キャッシュフィルラインデータ134が潜在的な複製キャッシュラインの常駐キャッシュラインデータ122とマッチしないことを見出すことであり得る。スレッド共有許可タグ更新論理140は、一態様では、新しい常駐キャッシュラインのスレッド共有許可タグ126が「非共有」状態に初期化されるように構成され得る。スレッド共有許可タグの初期化を除いて、新しい常駐キャッシュラインのロードは、新しい常駐キャッシュラインをロードする、知られている従来の技法に従ってよく、したがって、さらなる詳細な説明は省略する。潜在的な複製キャッシュラインの常駐キャッシュラインデータ122とマッチしないキャッシュフィルラインデータ134に関して、一態様では、キャッシュ制御論理118は、新しい常駐キャッシュラインをロードすることに関連して、潜在的な複製常駐キャッシュラインのスレッド共有許可タグを非共有状態に維持するように構成され得る。言い換えれば、キャッシュ制御論理118は、キャッシュ106内に新しい常駐キャッシュラインをロードすることに関連して、新しい常駐キャッシュラインのスレッド共有許可タグを非共有状態に設定するための手段の一例であり得る。一態様では、キャッシュ制御論理118はまた、指示に応じて、潜在的な複製常駐キャッシュラインの非存在を示す、キャッシュアドレスのプローブの結果に基づいて、新しい常駐キャッシュラインをキャッシュ106内にロードするための手段であって、新しい常駐キャッシュラインがキャッシュフィルラインデータと第1のスレッド識別子とを含む、ロードするための手段の一例であり得る。
【００３６】
図1を参照すると、第2のレベルキャッシュ112によってプロセッサメインメモリ110から論理的に分離された、第1のレベルキャッシュとしてキャッシュ106で構成されたプロセッサシステム100を示す。これは例のためであり、いずれの態様による実施の範囲を制限することを意図しないことが理解されよう。企図される実施は、たとえば、キャッシュ106を使用するシングルレベルキャッシュ配置(図1では明示的に可視ではない)、または1つまたは複数の態様によれば、CPU102とプロセッサメインメモリ110との間で論理的に配置された同等の機能を有する動的MTS許可タグキャッシュを含む。企図される実施はまた、3レベル以上のキャッシュ、たとえば、プロセッサシステム100に類似するが、第2のレベルキャッシュ112とプロセッサメインメモリ110との間に、もしくはCPU102とキャッシュ106との間に、または両方に配置された別のキャッシュ(図1では明示的に可視ではない)を有する構成を含む。
【００３７】
図2は、様々な例示的な態様による、1つの例示的な動的MTS許可タグキャッシュプロセス内の例示的な動作のフロー200を示す。態様については図1を参照して説明する。これは、動作の例示的な実施に対する単なる好都合な参照のためであり、実装形態または環境を図1に限定することを意図しない。フロー200は、任意の開始点202、たとえば、プログラムを実行しているCPU102の通常の動作において開始することができる。プログラムのための命令は、たとえば、プロセッサメインメモリ110内に記憶され得る。命令の部分のコピーは、常駐キャッシュライン120として動的スレッド許可タグ付きキャッシュデバイス114内に(最初のキャッシュミスにより)すでにロードされていると仮定される。プログラムは、各々がキャッシュ106にアクセスする、第1のスレッドと第2のスレッドとを含むと仮定される。追加のスレッドが存在し得るが、当業者は、本開示を読めば、過度の実験を行うことなく、説明する概念を3つ以上のスレッドに容易に適用し得るため、説明は省略する。最初に、スレッド共有許可タグ126を「非共有」状態から共有許可状態に切り替える態様に説明の焦点を当てるために、例示的な動作は、常駐キャッシュライン120に関するスレッド共有許可タグ126は「非共有」状態、たとえば、論理「0」であると仮定する。
【００３８】
図2を参照すると、動作は、204において、第1のスレッドによるキャッシュミスに関連して、インデックスと、第1のスレッド識別子と、キャッシュフィルラインデータとを含むキャッシュラインの受信を開始し得る。図1を参照すると、204における動作の一例は、インデックス130と、キャッシュフィルラインスレッド識別子132と、キャッシュフィルラインデータ134とを有するキャッシュフィルライン128を受信することを含み得る。図2を参照すると、204における動作の後、フロー200は206に進み、第2のスレッド識別子を使用して、キャッシュフィルラインインデックスに対応するキャッシュアドレスをプローブする動作を適用することができる。キャッシュアドレスをプローブする206の動作は、第2のスレッド識別子でタグ付けされ、常駐キャッシュラインデータを含む、キャッシュフィルラインインデックスに対応する常駐キャッシュラインが存在するかどうかを決定することができる。図1を参照すると、206における動作の一例は、プローブ論理136が、そのキャッシュフィルラインスレッド識別子132として第1のスレッド識別子でタグ付けされたキャッシュフィルライン128の受信に応じて、第2のスレッド識別子を使用して、動的スレッド許可タグ付きキャッシュデバイス114をプローブすることを含み得る。フローブロック206内のラベル付けにおいて、第2のスレッド識別子でタグ付けされた常駐キャッシュライン120は、「第2の常駐スレッドキャッシュライン」とラベル付けされる(図1ではラベルは別々に出現しない)。
【００３９】
図2を参照すると、206におけるプローブ動作の完了時に、フロー200は判定ブロック208に進むことができる。判定ブロック208の「NO」分岐によって示すように、206における動作がキャッシュフィルラインインデックスに関連する第2の常駐キャッシュラインを見出さない場合、フロー200は、210に進み、204において受信されたキャッシュフィルラインを新しい常駐キャッシュラインとしてキャッシュ内にロードする動作を適用することができる。210における動作は、新しい常駐キャッシュラインのスレッド共有許可タグを「非共有」状態にリセットまたは初期化することを含み得る。210の後で、フロー200は、204に対する入力に戻り、次のキャッシュミスおよび結果として生じるキャッシュフィルラインを待つことができる。210から204に対する入力に戻ることは、先に第1のスレッドキャッシュミスをもたらし、結果として、204において第1のスレッドキャッシュフィルラインを受信させた第1のスレッドアクセス(図2では明示的に可視ではない)の反復を含み得る。第1のスレッドキャッシュアクセスの反復動作は、知られている従来の技法に従ってよく、したがって、さらなる詳細な説明は省略する。
【００４０】
図1を参照すると、210における動作の一例は、キャッシュ制御論理118が新しい常駐キャッシュラインの動的スレッド許可タグ付きキャッシュデバイス114内へのロードを開始することを含み得、新しい常駐キャッシュラインは、第1のスレッドキャッシュフィルラインと第1のスレッド識別子とを含む。
一態様では、判定ブロック208の「YES」分岐によって示すように、206における動作が、キャッシュフィルラインインデックスに関連する第2の常駐スレッドキャッシュラインが存在すると決定した場合、フロー200は212に進むことができる。206において識別された常駐キャッシュライン(もしあれば)は、上記で説明したように、「潜在的な複製キャッシュライン」と呼ばれる場合がある。212において、動作は、204において受信されたキャッシュフィルラインデータを潜在的な複製キャッシュラインの常駐キャッシュラインデータと比較することを含み得る。判定ブロック214の「YES」分岐によって示すように、潜在的な複製キャッシュラインの常駐キャッシュラインデータに対するキャッシュフィルラインデータのマッチ時に、フロー200は、216に進み、複製を決定し、常駐キャッシュラインのスレッド共有許可タグを許可状態に設定する動作を適用することができ、許可状態は、第1のスレッドが常駐キャッシュラインに対する共有許可を有することを示す。
【００４１】
図2を参照すると、判定ブロック214の「NO」分岐によって示すように、212における比較が、キャッシュフィルラインインデックスに関連する第2の常駐キャッシュラインを見出さないと決定した場合、フロー200は、上記で説明したように210に進み、204の入力に戻ることができる。
【００４２】
キャッシュ制御論理118は、図2のフロー200に関する動作を実行する際に上記で説明したように、指示(Indication)に応じて、潜在的な複製常駐キャッシュラインの非存在を示す、キャッシュアドレスのプローブの結果に基づいて新しい常駐キャッシュラインをキャッシュ106内にロードするための手段であって、新しい常駐キャッシュラインがキャッシュフィルラインデータと第1のスレッド識別子とを含む、ロードするための手段を提供する。
【００４３】
図3は、様々な態様による、動的スレッド共有キャッシュ300の論理図を示す。動的スレッド共有キャッシュ300は、たとえば、図1の動的スレッド許可タグ付きキャッシュデバイス114を実装し得る。図3を参照すると、動的スレッド共有キャッシュ300は、スレッド許可タグ付きキャッシュメモリ302と許可タグ付けアクセス回路304とを含み得る。スレッド許可タグ付きキャッシュメモリ302は、仮想タグ/仮想インデックス(VIVT)デバイスとして構成され得る。開示する概念によるマルチスレッド動的キャッシュライン許可タグ機能およびその態様以外に、スレッド許可タグ付きキャッシュメモリ302は、知られている従来の関連VIVTキャッシュ技法に従って構成および実装され得る。スレッド許可タグ付きキャッシュメモリ302は、そのうちの1つが参照番号「306P」でラベル付けされ、他の2つが参照番号「306S」でラベル付けされる、図3に示す3つのキャッシュラインなど、複数のキャッシュラインを記憶することができる。便宜上、図3内のキャッシュラインは、「キャッシュライン306」と集合的に呼ばれる場合がある(ラベルは図3では別々に可視ではない)。キャッシュライン306は、図1を参照して説明した常駐キャッシュライン120に従ってよい。キャッシュライン306は、したがって、説明した常駐キャッシュライン120など、機能および構成を有する、MTS許可タグ付きキャッシュラインとして構成され得る。
【００４４】
各キャッシュライン306は、キャッシュラインタグ(可視であるが、別々にラベル付けされていない)を含んでよく、キャッシュラインタグは、次に、キャッシュライン有効性フラグ308(図3では「V」とラベル付けされている)と、キャッシュライン仮想タグ310(図3では「VTG」とラベル付けされる)と、キャッシュラインスレッド識別子312(図3では「TID」とラベル付けされる)と、キャッシュラインスレッド共有許可タグ314(図3では「SB」とラベル付けされる)とを含み得る。キャッシュラインスレッド共有許可タグ314については、後でより詳細に説明する。キャッシュラインスレッド識別子312およびキャッシュラインスレッド共有許可タグ314は、それぞれ、図1のキャッシュラインスレッド識別子124およびスレッド共有許可タグ126の例示的な実装形態であり得る。一態様では、キャッシュライン有効性フラグ308、キャッシュライン仮想タグ310、およびキャッシュラインスレッド識別子312は、知られている従来のキャッシュライン有効性フラグ、キャッシュライン仮想タグ、およびキャッシュラインスレッド識別子技法に従って構成されてよく、したがって、例示的な動作および特徴の説明に付随する場合を除いて、さらなる詳細な説明は省略する。
【００４５】
動的スレッド共有キャッシュ300は、キャッシュ読取り要求316を受信するように構成され得る。一態様では、キャッシュ読取り要求316は、たとえば、図1のCPU102、またはメインメモリとメインメモリの部分のコピーを記憶するキャッシュとを含む環境内の別の従来型プロセッサによって、知られている従来の仮想アドレスフェッチ技法に従って生成およびフォーマットされ得る。キャッシュ読取り要求316は、読取り要求仮想インデックス318に加えて、キャッシュ読取り要求スレッド識別子320(図3で「TH ID」とラベル付けされる)と、読取り要求仮想タグ322(図3で「VT」とラベル付けされる)とを含み得る。読取り要求仮想インデックス318およびキャッシュ読取り要求スレッド識別子320は、それぞれ、図1のキャッシュフィルラインスレッド識別子132およびキャッシュフィルライン仮想タグ135の実装形態であり得る。一態様では、読取り要求仮想インデックス318およびキャッシュ読取り要求スレッド識別子320は、知られている従来のマルチスレッド仮想アドレス読取り技法に従って構成されてよく、したがって、例示的な動作および特徴の説明に付随する場合を除いて、さらなる詳細な説明は省略する。
【００４６】
図3を参照すると、動的スレッド共有キャッシュ300は、それをロードしたキャッシュフィル要求(図3では明示的に可視ではない)の仮想インデックス(図3では明示的に可視ではない)に対応するスレッド許可タグ付きキャッシュメモリ302内のそれぞれのロケーション内に各キャッシュライン306を記憶するための手段(図3では明示的に可視ではない)を含み得る。動的スレッド共有キャッシュ300は、読取り要求仮想インデックス318に対応するロケーションにおいて有効キャッシュライン306が存在するかどうかを決定するために、キャッシュ読取り要求316に応じて、スレッド許可タグ付きキャッシュメモリ302を探索するための同様の手段(図3では明示的に可視ではない)を含み得る。スレッド許可タグ付きキャッシュメモリ302内のそれぞれのロケーション内に各キャッシュライン306を記憶するための手段。スレッド許可タグ付きキャッシュメモリ302を探索するための手段は、当業者に知られている、知られている従来のインデックスベースの復号技法、ローディング技法、および読取り技法に従ってよい。したがって、態様による特徴、実装形態、および動作の説明に付随する場合を除いて、さらなる詳細な説明は省略する。
【００４７】
スレッド共有許可タグ126に関して説明したように、キャッシュラインスレッド共有許可タグ314は、「非共有」状態と1つまたは複数の共有許可状態(図3に明示的に可視ではない)との間で切り替え可能であり得る。上記で説明したように、キャッシュラインスレッド共有許可タグ314内のビットの量は、キャッシュライン306を共有することができるスレッドの数を決定するか、または少なくとも限定する。キャッシュラインスレッド共有許可タグ314の状態を決定するための手段は、その成分ビットの量に部分的に基づいて構成され得る。1つの例示的な例では、キャッシュラインスレッド共有許可タグ314が1ビットである場合、ビット状態自体が、所与のキャッシュライン306のキャッシュラインスレッド識別子312とは異なるキャッシュ読取り要求スレッド識別子320を有するキャッシュ読取り要求316がキャッシュライン306にアクセスするためのスレッド共有許可を有するかどうかを決定するための手段であり得る。したがって、キャッシュラインスレッド共有許可タグ314の1ビット構成を仮定すると、所与のキャッシュライン306のキャッシュラインスレッド識別子312とは異なるキャッシュ読取り要求スレッド識別子320を有するキャッシュ読取り要求316がキャッシュライン306にアクセスするためのスレッド共有許可を有するかどうかを決定するための手段。
【００４８】
図3を参照すると、許可タグ付けアクセス回路304は仮想タグ比較器328を含み得る。仮想タグ比較器328は、読取り要求仮想タグ322がキャッシュライン仮想タグ310とマッチすることを決定するための1つの例示的な手段であり得る。仮想タグ比較器328は、知られている従来のVIVT仮想タグ比較技法に従って構成されてよく、したがって、さらなる詳細な説明は省略する。
【００４９】
一態様では、許可タグ付けアクセス回路304はスレッド識別子比較器330を含み得る。スレッド識別子比較器330は、キャッシュ読取り要求スレッド識別子320がキャッシュラインスレッド識別子312とマッチすることを決定するための1つの例示的な手段であり得る。スレッド識別子比較器330は、知られている従来のVIVTスレッド識別子比較技法に従って構成されてよく、したがって、さらなる詳細な説明は省略する。
【００５０】
図3を参照すると、許可タグ付けアクセス回路304は2入力論理ORゲート332を含み得る。2入力論理ORゲート332は、第1の入力として、スレッド識別子比較器330の出力を受信することができる。2入力論理ORゲート332は、キャッシュライン306が、第2の入力として、動的スレッド共有キャッシュ300内で、所与のキャッシュ読取り要求316の読取り要求仮想インデックス318に対応するロケーションに記憶されたどちらからの(もしあれば) キャッシュラインスレッド共有許可タグ314を受信することができる。したがって、2つのイベントは2入力論理ORゲート332から肯定的論理出力334をもたらし得る。1つは、スレッド識別子比較器330からの肯定的論理出力である。もう1つは、共有許可状態(たとえば、論理「1」)にあるキャッシュライン共有許可タグ314である。したがって、3入力論理ANDゲートのすべての3つの入力を論理「1」状態に入れることができる2つのシナリオが存在する。両方のシナリオは、読取り要求仮想インデックス318に対応するロケーションにおいて動的スレッド共有キャッシュ300内の有効なキャッシュライン306を必要とする。例示的な動作を説明する際の好都合な参照として、これは「潜在的なヒットキャッシュライン」(図3では、ラベルは別々に出現しない)と呼ばれる場合がある。第1のシナリオは、キャッシュ読取り要求スレッド識別子320が潜在的なヒットキャッシュラインのキャッシュラインスレッド識別子312とマッチすることである。第2は、潜在的なヒットキャッシュラインのキャッシュラインスレッド共有許可タグ314がスレッド共有許可状態(たとえば、論理「1」)にあることである。
【００５１】
図1および図2を参照して、態様による別のプロセスにおける例示的な動作について説明する。この例は、3つのスレッドが実行している状態のフロー200によるプロセスを仮定する。スレッドは、「第1のスレッド」、「第2のスレッド」、および「第3のスレッド」と呼ばれることになる。この例は、キャッシュフィルライン128により、第1のキャッシュフィルラインが常駐キャッシュラインとの複製を検出させたと仮定する。複製は「第1の複製」と呼ばれることになる。第1のキャッシュフィルラインのキャッシュフィルラインスレッド識別子132は、第1のスレッドのものであると仮定され、したがって、「第1のスレッド識別子」と呼ばれる。第1の複製の検出に関連する常駐キャッシュラインは、「第1の常駐キャッシュライン」と呼ばれることになる。第1の常駐キャッシュラインは第2のスレッドによってロードされたと仮定されることになる。第1の複製の検出に応じて、フロー200によるプロセスはまた、第1の常駐キャッシュラインのスレッド共有許可タグ126を第1のスレッド許可状態に設定すると仮定することになる。説明した第1の常駐キャッシュラインは、したがって、「第1のスレッド共有常駐キャッシュライン」と呼ばれることになる。
【００５２】
この例を続けると、動作は、キャッシュフィルライン128に従って構成された第2のキャッシュフィルラインをキャッシュフィルバッファ116において受信することを含み得る。第2のキャッシュフィルラインのキャッシュフィルラインスレッド識別子132は、例のために、第3のスレッドのものになると仮定されることになる。キャッシュフィルラインスレッド識別子132のこの値は、「第3のスレッド識別子」と呼ばれることになる。第2のキャッシュフィルラインは、インデックス、たとえば、インデックス130と、キャッシュフィルラインデータ134などの第2のキャッシュフィルラインデータとを含むと仮定されることになる。第2のキャッシュフィルラインデータは、たとえば、第3のスレッドによるキャッシュミスに関連して取り出されている場合がある。この例のために、第2のキャッシュフィルラインのインデックスは上記で説明した第1のスレッド共有常駐キャッシュラインにマップすると仮定されることになる。一態様では、フロー200によるプロセスにおける動作は、次いで、第2のキャッシュフィルラインデータが第1のスレッド共有常駐キャッシュラインの常駐キャッシュラインデータとマッチするかどうかを決定することができる。マッチが検出された場合、同じ常駐キャッシュラインの第2の複製が存在する。一態様では、第2の複製の決定時に、動作は別のまたは第2の複製を実行することができる。
【００５３】
一態様では、第2の複製は、第3のスレッドによってさらに共有されるように第1のスレッド共有常駐キャッシュラインを設定または割り当てることを含み得る。設定または割当ては、前に第1のスレッド許可状態に設定されたスレッド共有許可タグを第1のスレッド-第3のスレッド許可状態に設定することを含み得る。Table II(表2)の中間列を参照すると、前に第1のスレッド許可状態に設定された、スレッド共有許可タグを第1のスレッド-第3のスレッド許可状態に設定する例は、中間列の中間行から最終行への遷移、すなわち、「01」状態から「11」状態へのスレッド共有許可タグ126の切替えであり得る。「11」は、上記で説明した例示的な第1のスレッド共有常駐キャッシュラインを第1のスレッド-第3のスレッド共有常駐キャッシュラインに設定または割り当てる。
【００５４】
図4は、様々な例示的な態様による、読取り/スレッド共有許可タグ更新プロセス内の例示的な動作のフロー400を示す。フロー400は、基本的に、フロー200によって表された特徴を動的スレッド共有キャッシュ300によって提供されるマルチスレッド読取り特徴と組み合わせる。フロー400は、任意の開始402において開始し、次いで、404に進むことができ、ここで、所与のスレッドがフェッチを発行する。404における例示的な動作は、図1のCPU102が、仮想アドレス(図1では明示的に可視ではない)と所与のスレッドIDとを含むメモリフェッチ要求(図1では明示的に可視ではない)を発行することであり得る。フェッチ要求が仮想アドレス/仮想タグ付けアドレス指定方式に従うと仮定すると、フロー400は、次いで、406に進み、特に構成されたキャッシュメモリデバイス、たとえば、図1の動的スレッド許可タグ付きキャッシュデバイス114または図3の動的スレッド共有キャッシュ300の探索を実行することができる。一態様では、406における探索は、スレッド識別子タグ付きキャッシュラインを探索するための知られている従来の技法とは異なり得る。より具体的には、スレッド識別子タグ付きキャッシュラインを探索するための従来の技法では、探索は、キャッシュ探索要求のスレッド識別子タグであるスレッド識別子のみを使用することができる。406における探索は、対照的に、スレッド識別子の所与のまたは確定されたセットの各々を探索することができる。
【００５５】
図4を参照すると、406における探索が何の考えられるヒットも見出さない場合、判定ブロック408は、ミスを検出し、フロー400は、後でより詳細に説明される410に進む。406における探索が少なくとも1つの考えられるヒットを見出した場合、フロー400は408における判定ブロックから412に進み、ここで、考えられるヒットのうちのいずれかが、404において発行されたフェッチのスレッドIDとマッチするスレッドIDを有するかどうかを決定するための動作が適用される。412における回答がYESである場合、マッチするスレッドIDを有する考えられるヒットは実際のヒットであり、その後、フロー400は414に進み、そのヒットの常駐キャッシュラインデータを出力する。図3を参照すると、412において決定するための例示的な手段は、仮想タグ比較器328およびキャッシュラインスレッド識別子312と組み合わせて、論理的な矢印324によって示す、マッチするキャッシュライン306Pにマップする読取り要求仮想インデックス318である。3つの状態の同時発生は、すべての「1」をスレッド入力論理ANDゲート326の入力に入れる。
【００５６】
図4を参照すると、412における動作が、考えられるヒットのいずれも404において発行されたフェッチのスレッドIDとマッチするスレッドIDを有さないことを見出す場合、フロー400は416に進み、考えられるヒットのうちのいずれかが(キャッシュ読取り要求スレッド識別子320に対応する)所与のスレッドが共有許可を有することを示す状態にあるかどうかを決定する。回答が、414からの「ヒット」分岐によって示されるようにYESである場合、実際のヒットが検出される。それに応じて、フロー400は414に進み、そのヒットの常駐キャッシュラインデータを出力して、404に戻る。
【００５７】
図3および図4を一緒に参照すると、408、412、および414において上記で説明した動作は、並行して、すなわち、図3の仮想タグ比較器328、スレッド識別子比較器338、2入力論理ORゲート332、および3入力論理ANDゲート326によって実行され得ることを理解されよう。
【００５８】
図1および図4を参照すると、402から412までの動作の一例は、少なくとも第1のスレッドおよび第2のスレッドが実行しており、第2のスレッドが常駐キャッシュライン120のうちの1つをロードしたと仮定して説明されることになる。常駐キャッシュラインは共有常駐キャッシュラインであり、そのスレッド共有許可タグが第1のスレッド共有許可を与える許可状態に設定されていることがやはり仮定されることになる。動作の例は、スレッド共有許可タグを、第1のスレッド共有許可を与える許可状態に設定した後で、第1のスレッドからのキャッシュ読取り要求を用いてキャッシュに対するアクセスを試みることを含み得る。この試みは、第1のスレッドからのキャッシュ要求を含み、キャッシュ読取り要求は、特定の常駐キャッシュライン120のインデックスと第1のスレッド識別子とを含む。動作は、次いで、第1のスレッドが共有許可を有することを示すスレッド共有許可タグの共有状態に少なくとも部分的に基づいて、共有常駐キャッシュラインの少なくとも常駐キャッシュラインデータを取り出すことを含み得る。
【００５９】
図4を参照し、フロー400の説明を続けると、408または416における動作がミスを検出する場合、フロー400は410に進むことができる。418における動作を適用して、プロセッサメインメモリ110から所望のキャッシュラインを取り出す。418における動作は、キャッシュミスに応じたメインメモリの知られている従来の検索に従ってよく、したがって、さらなる詳細な説明は省略する。418における動作が所望のキャッシュラインを見出すと仮定すると、フロー400は420に進み、フロー200によるプロセスを適用することができる。動作は、上記で説明したように、複製キャッシュラインがキャッシュ内にあるかどうかを決定し、「YES」である場合、その複製キャッシュラインのスレッド共有許可タグをスレッド共有許可状態に設定し、そうでなければ、410において受信されたキャッシュラインをロードする。動作、およびその実装形態は、フロー200、および上記で説明したその例示的な実装形態に従ってよい。
【００６０】
図5は、本開示の1つまたは複数の態様が有利に採用され得るワイヤレスデバイス500を示す。図5を参照すると、ワイヤレスデバイス500は、CPU504と、プロセッサメモリ506と、キャッシュ106とを有するプロセッサ502を含む。CPU 504は、プロセッサメモリ506または外部メモリ510にアクセスするための仮想アドレスを生成することができる。仮想アドレスは、専用ロードカップリング507を介して、図4を参照して説明したように、たとえばキャッシュ106に通信され得る。
【００６１】
ワイヤレスデバイス500は、図2および図4を参照して説明した様々な方法を実行するように構成され得、図2および図4を参照して説明した方法のうちのいずれかを実行するために、プロセッサメモリ506または外部メモリ510から取り出された命令を実行するようにさらに構成され得る。
【００６２】
図5は、プロセッサ502およびディスプレイ528に結合されたディスプレイコントローラ526も示す。コーダ/デコーダ(コーデック)534(たとえば、オーディオおよび/または音声コーデック)が、プロセッサ502に結合されてよい。ワイヤレスコントローラ540(モデムを含む場合がある)など、他の構成要素も示されている。たとえば、スピーカー536およびマイクロフォン538が、コーデック534に結合され得る。図5は、ワイヤレスコントローラ540がワイヤレスアンテナ542に結合され得ることをも示す。特定の態様では、プロセッサ502、ディスプレイコントローラ526、プロセッサメモリ506、外部メモリ510、コーデック534、およびワイヤレスコントローラ540は、システムインパッケージまたはシステムオンチップデバイス522内に含まれ得る。
【００６３】
特定の態様では、入力デバイス530および電源544は、システムオンチップデバイス522に結合され得る。さらに、特定の態様では、図5に示すように、ディスプレイ528、入力デバイス530、スピーカー536、マイクロフォン538、ワイヤレスアンテナ542、および電源544は、システムオンチップデバイス522の外部に位置する。しかしながら、ディスプレイ528、入力デバイス530、スピーカー536、マイクロフォン538、ワイヤレスアンテナ542、および電源544の各々は、インターフェースまたはコントローラなどの、システムオンチップデバイス522の構成要素に結合され得る。キャッシュ106はプロセッサ502の一部分であり得ることを理解されよう。
【００６４】
図5はワイヤレス通信デバイスを示しているが、プロセッサ502は、セットトップボックス、音楽プレーヤ、ビデオプレーヤ、娯楽ユニット、ナビゲーションデバイス、携帯情報端末(PDA)、固定ロケーションデータユニット、コンピュータ、ラップトップ、タブレット、モバイルフォン、または同様のデバイスに組み込まれてもよいことにも留意されたい。
【００６５】
情報および信号が、様々な異なる技術および技法のいずれを使用しても表現できることは、当業者は理解されよう。たとえば、上記の説明全体にわたって言及される場合があるデータ、命令、コマンド、情報、信号、ビット、シンボル、およびチップは、電圧、電流、電磁波、磁場もしくは磁性粒子、光場もしくは光学粒子、またはそれらの任意の組合せによって表現される場合がある。
【００６６】
さらに、本明細書で開示した実施形態との関連で記述される様々な例証的な論理ブロック、モジュール、回路、およびアルゴリズムステップが、電子ハードウェア、コンピュータソフトウェア、または両方の組合せとして実装される場合があることを、当業者なら理解するであろう。この、ハードウェアとソフトウェアの交換可能性をはっきりと示すために、様々な例証的な構成要素、ブロック、モジュール、回路、およびステップを、上記では概してそれらの機能の点から述べた。そのような機能が、ハードウェアとして実施されるか、ソフトウェアとして実施されるのかは、特定の適用例と、システム全体に課される設計制約とによって決まる。当業者は、説明された機能を特定の適用例ごとに様々な方法で実施することができるが、そのような実施態様決定は、本発明の範囲からの逸脱を引き起こすものと解釈されるべきではない。
【００６７】
本明細書で開示した実施形態との関連で説明した方法、シーケンス、および/またはアルゴリズムのステップは、ハードウェアにおいて直接に、または、プロセッサによって実行されるソフトウェアモジュールにおいて、またはこの2つの組合せにおいて具現化される場合がある。ソフトウェアモジュールは、RAMメモリ、フラッシュメモリ、ROMメモリ、EPROMメモリ、EEPROMメモリ、レジスタ、ハードディスク、取外し可能ディスク、CD-ROM、または、当技術分野で知られている他の任意の形の記憶媒体の中に存在する場合がある。例示的な記憶媒体はプロセッサに結合され、したがって、プロセッサは、記憶媒体に対して情報を読み書きすることができる。代替では、記憶媒体は、プロセッサに一体化されている場合もある。
【００６８】
したがって、開示した態様による実装形態および実施は、キャッシュの複製解除のための方法を採用するコンピュータ可読媒体を含み得る。したがって、本発明は、示された例に限定されず、本明細書で記述される機能を実施するためのどんな手段も、本発明の実施形態に含まれる。
【００６９】
前述の開示は本発明の例証的な実施形態を示すが、添付の特許請求の範囲によって定義される本発明の範囲を逸脱することなく、様々な変更および修正が本明細書に加えられてもよいことに留意されたい。本明細書で説明した本発明の実施形態による方法請求項の機能、ステップ、および/またはアクションは、いずれかの特定の順序で実施される必要はない。さらに、本発明の要素が単数形で記述または特許請求される場合があるが、単数形への限定が明示的に記載されていない限り、複数形も企図される。
【符号の説明】
【００７０】
100  プロセッサシステム
102  中央処理装置(CPU)
104  ローカルバス
106  キャッシュ
108  プロセッサバス
110  プロセッサメインメモリ
112  第2のレベルキャッシュ
114  動的スレッド許可タグ付きキャッシュデバイス
116  キャッシュフィルバッファ
118  キャッシュ制御論理
120  常駐キャッシュライン
120-1  キャッシュライン
120-2  キャッシュライン
120-n  キャッシュライン
122  常駐キャッシュラインデータ
124  キャッシュラインスレッド識別子
126  スレッド共有許可タグ
128  キャッシュフィルライン
129  論理経路
130  インデックス
132  キャッシュフィルラインスレッド識別子
134  キャッシュフィルラインデータ
135  キャッシュフィルライン仮想タグ
136  プローブ論理
138  キャッシュラインデータ比較論理
140  スレッド共有許可タグ更新論理
200  フロー
202  開始点
300  動的スレッド共有キャッシュ
302  スレッド許可タグ付けキャッシュメモリ
304  許可タグ付けアクセス回路
306  キャッシュライン
306P  キャッシュライン
306S  キャッシュライン
308  キャッシュライン有効性フラグ
310  キャッシュライン仮想タグ
312  キャッシュラインスレッド識別子
314  キャッシュラインスレッド共有許可タグ
316  キャッシュ読取り要求
318  読取り要求仮想インデックス
320  キャッシュ読取り要求スレッド識別子
322  読取り要求仮想タグ
326 3入力論理ANDゲート
328  仮想タグ比較器
330  スレッド識別子比較器
332 2入力論理ORゲート
334  肯定的論理出力
400  フロー
500  ワイヤレスデバイス
502  プロセッサ
504  CPU
506  プロセッサメモリ
507  専用ロードカップリング
510  外部メモリ
522  システムインパッケージまたはシステムオンチップデバイス
526  ディスプレイコントローラ
528  ディスプレイ
530  入力デバイス
534  コーダ/デコーダ(コーデック)
536  スピーカー
538  マイクロフォン
540  ワイヤレスコントローラ
544  電源
【図１】
2018533135.tif 000005
【図２】
2018533135.tif 000006
【図３】
2018533135.tif 000007
【図４】
2018533135.tif 000008
【図５】
2018533135.tif 000009
【国際調査報告】
2018533135.tif 000010
2018533135.tif 000011
2018533135.tif 000012