(57)【要約】  再構成可能なキャッシュアーキテクチャにおけるキャッシュコヒーレンシの方法を提供する。本方法は、メモリアクセス命令を受信するステップであって、メモリアクセス命令が、アクセスするメモリのアドレスを少なくとも含む、ステップと、メモリアクセス命令に基づいて少なくとも１つのアクセスパラメータを求めるステップと、メモリアクセス命令に応じるための対象のキャッシュビンを、少なくとも１つのアクセスパラメータおよびアドレスに部分的に基づいて決定するステップと、を含む。【選択図】  図２
2020530176.tif 000002
【特許請求の範囲】
【請求項１】
再構成可能なキャッシュアーキテクチャにおけるキャッシュコヒーレンシの方法であって、
メモリアクセス命令を受信するステップであって、前記メモリアクセス命令が、アクセスするメモリのアドレスを少なくとも含む、ステップと、
前記メモリアクセス命令に基づいて少なくとも１つのアクセスパラメータを求めるステップと、
前記メモリアクセス命令に応じるための対象のキャッシュビンを、前記少なくとも１つのアクセスパラメータおよび前記アドレスに部分的に基づいて決定するステップと、
を含む、方法。
【請求項２】
前記対象のキャッシュビンが、少なくとも１つのキャッシュノードの少なくとも一部分である、請求項１に記載の方法。
【請求項３】
前記再構成可能なキャッシュアーキテクチャが、前記メモリに結合されている複数のキャッシュノードを含み、各キャッシュノードが複数のキャッシュビンにパーティション化されており、前記対象のキャッシュビンが前記複数のキャッシュビンの１つである、請求項１に記載の方法。
【請求項４】
各キャッシュビンが、前記複数のキャッシュノードのうちのそれぞれのキャッシュノードに含まれている、請求項３に記載の方法。
【請求項５】
各キャッシュノードを、前記キャッシュノードのそれぞれの複数のキャッシュビンの使用率に基づいて、少なくとも２つのキャッシュビンに動的にパーティション化するステップ、
をさらに含む、請求項３に記載の方法。
【請求項６】
最初に各キャッシュノードを所定の数のキャッシュビンにパーティション化するステップと、
各キャッシュビンの使用に関する統計情報を集めるステップと、
前記集められた統計情報に基づいて、各キャッシュノードの前記最初のパーティショニングを再構成するステップと、
をさらに含む、請求項５に記載の方法。
【請求項７】
各キャッシュノードの前記パーティショニングを再構成する前記ステップが、実行の各反復の後に行われる、請求項６に記載の方法。
【請求項８】
前記キャッシュビンの少なくとも１つに、より多くのキャッシュ記憶域を動的に割り当てるステップ、
をさらに含む、請求項６に記載の方法。
【請求項９】
前記少なくとも１つのアクセス命令が、物理エンティティおよび論理エンティティのいずれか一方の単一の識別情報を含む、請求項１に記載の方法。
【請求項１０】
前記物理エンティティが、処理コア、またはメモリの共有部分、のいずれか一方である、請求項９に記載の方法。
【請求項１１】
前記論理エンティティが、プロセス、またはスレッド、のいずれか一方である、請求項１０に記載の方法。
【請求項１２】
前記少なくとも１つのアクセスパラメータが、プロセスＩＤ、処理コアＩＤ、スレッドＩＤ、またはキャッシュビット、の少なくとも１つを含む、請求項９に記載の方法。
【請求項１３】
前記求めるステップが、
前記メモリアクセス命令が論理エンティティに関連付けられるかを判定するステップと、
前記メモリアクセス命令が論理エンティティに関連付けられると判定されるとき、前記アクセスパラメータを論理エンティティの識別子として設定するステップと、
をさらに含む、請求項１２に記載の方法。
【請求項１４】
前記求めるステップが、
前記メモリアクセス命令が物理エンティティに関連付けられるかを判定するステップと、
前記メモリアクセス命令が物理エンティティに関連付けられると判定されるとき、前記アクセスパラメータを物理エンティティの識別子として設定するステップと、
をさらに含む、請求項１２に記載の方法。
【請求項１５】
少なくとも１つのキャッシュ属性を求めるステップであって、前記少なくとも１つのキャッシュ属性が、特定の値をキャッシュしない、特定の値を常にキャッシュする、特定の値を常にチェックする、の少なくとも１つを含む、ステップ、
をさらに含む、請求項１３に記載の方法。
【請求項１６】
前記メモリアクセス命令に応じるための前記対象のキャッシュビンを決定する前記ステップが、
前記少なくとも１つのアクセスパラメータおよび前記アドレスを通じて確定関数を計算するステップ、
をさらに含む、請求項１に記載の方法。
【請求項１７】
前記再構成可能なキャッシュアーキテクチャが、処理回路によるプログラムの実行を加速させるために利用される、請求項１に記載の方法。
【請求項１８】
前記処理回路が、
中央処理装置（ＣＰＵ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、グラフィック処理装置（ＧＰＵ）、粗粒度再構成可能アーキテクチャ（ＣＧＲＡ）、特定用途向け集積回路（ＡＳＩＣ）、マルチコアプロセッサ、量子コンピュータ、
のいずれか１つである、
請求項１７に記載の方法。
【請求項１９】
命令を格納している非一時的なコンピュータ可読媒体であって、前記命令が、再構成可能なキャッシュアーキテクチャにおけるキャッシュコヒーレンシのプロセスを少なくとも１つの処理回路に実行させ、前記プロセスが、
メモリアクセス命令を受信するステップであって、前記メモリアクセス命令が、アクセスするメモリのアドレスを少なくとも含む、ステップと、
前記メモリアクセス命令に基づいて少なくとも１つのアクセスパラメータを求めるステップと、
前記メモリアクセス命令に応じるための対象のキャッシュビンを、前記少なくとも１つのアクセスパラメータおよび前記アドレスに部分的に基づいて決定するステップと、
を含む、
非一時的なコンピュータ可読媒体。
【請求項２０】
再構成可能なキャッシュアーキテクチャであって、
メモリと、
前記メモリに結合されている複数のキャッシュノードであって、各キャッシュノードが複数のキャッシュビンにパーティション化されており、前記複数のキャッシュビンのうちのいずれかのキャッシュビンへのアクセスがアクセスパラメータに基づいて決定される、前記複数のキャッシュノードと、
を備えている、再構成可能なキャッシュアーキテクチャ。
【請求項２１】
前記アクセスパラメータが、プロセスＩＤ、処理コアＩＤ、スレッドＩＤ、およびキャッシュビット、の少なくとも１つを含む、請求項２０に記載の再構成可能なキャッシュアーキテクチャ。
【請求項２２】
各キャッシュビンが、前記各キャッシュノードの任意の部分である、請求項２０に記載の再構成可能なキャッシュアーキテクチャ。
【請求項２３】
前記再構成可能なキャッシュアーキテクチャが処理回路に結合されており、前記処理回路が、
各キャッシュノードを、それぞれの複数のキャッシュビンの使用率に基づいて、少なくとも２つのキャッシュビンに動的にパーティション化する、
ように構成されている、
請求項２０に記載の再構成可能なキャッシュアーキテクチャ。
【請求項２４】
前記処理回路が、
最初に各キャッシュノードを所定の数のキャッシュビンにパーティション化し、
各キャッシュビンの使用に関する統計情報を集め、
前記集められた統計情報に基づいて、各キャッシュノードの前記最初のパーティショニングを再構成する、
ように構成されている、
請求項２３に記載の再構成可能なキャッシュアーキテクチャ。
【請求項２５】
前記キャッシュノードの前記パーティションの前記再構成が、実行の各反復の後に行われる、請求項２３に記載の再構成可能なキャッシュアーキテクチャ。
【請求項２６】
前記処理回路が、
前記キャッシュビンの少なくとも１つに、より多くのキャッシュ記憶域を動的に割り当てる、
ように構成されている、
請求項２３に記載の再構成可能なキャッシュアーキテクチャ。
【請求項２７】
前記再構成可能なキャッシュアーキテクチャが、処理回路によるプログラムの実行を加速させるために利用される、請求項２０に記載の再構成可能なキャッシュアーキテクチャ。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、全般的には、メモリアーキテクチャに関し、より詳細には、埋め込み型の計算アーキテクチャおよび構成可能な計算アーキテクチャに関する。
【０００２】
（関連出願の相互参照）
本出願は、米国仮特許出願第６２／５４０，８５４号（出願日：２０１７年８月３日）の優先権の利益を主張し、この文書の内容は参照により本明細書に組み込まれている。
【背景技術】
【０００３】
各プロセッサ用の個別のキャッシュメモリを有する共有メモリ型マルチコアプロセッサにおいては、共有データの多数のコピー（メインメモリ内の１つのコピーと、データのコピーを要求した各プロセッサのローカルキャッシュ内の１つのコピー）を有することが可能である。データのコピーの１つが変更されると、他のコピーもその変更を反映しなければならない。
【０００４】
キャッシュコヒーレンス（Ｃａｃｈｅ  ｃｏｈｅｒｅｎｃｅ）とは、複数のローカルキャッシュを必要とする共有リソースデータの一貫性（ｕｎｉｆｏｒｍｉｔｙ）である。システム内のクライアント（例：プロセッサコア）が共通メモリリソースのローカルキャッシュを維持するときには、一貫性のない（ｉｎｃｏｈｅｒｅｎｔ）データ（例：複数のローカルキャッシュが、１つのアドレス位置の複数の異なる値を有する）という問題が生じうる。
【０００５】
図１には、キャッシュコヒーレンスを実装するための、例としての従来のアーキテクチャ１００を示してある。各プロセッサコア１１０−１〜１１０−Ｍ（以下では簡潔さを目的として、個々をプロセッサコア１１０と称し、いくつかを一括して１つ以上のプロセッサコア１１０と称する）には、対応するローカルキャッシュ１２０−１〜１２０−Ｍ（以下では簡潔さを目的として、個々をローカルキャッシュ１２０と称し、いくつかを一括して１つ以上のローカルキャッシュ１２０と称する）が関連付けられている。すべてのコアプロセッサ１１０およびそれぞれの対応するローカルキャッシュ１２０が、共有メモリ１３０にアクセスする。
【０００６】
メモリ１３０が複数のプロセッサコア１１０（およびそれぞれのローカルキャッシュ１２０）によって共有されているとき、プロセッサコア（例：コア１１０−１）は、共有メモリ１３０にアクセスするとき、一般には、データアクセスを加速させる目的で、共有メモリ１３０からのデータブロックを自身のキャッシュ（例：キャッシュ１２０−１）にコピーする必要がある。複数のプロセッサコア１１０が共有メモリ１３０にアクセスするとき、すべてのこのようなプロセッサコア１１０のローカルキャッシュ１２０内に、共有メモリ１３０内のデータブロックのコピーが存在する。コピーのコヒーレンス（一貫性）を維持するためには、キャッシュコヒーレンスメカニズム（ＣＣＭ）１２５がデータの共有を管理する必要がある。
【０００７】
具体的には、共有データブロック、または共有データブロックのコピーに対して書き込み（またはストア）動作を実行するときには、データの非一貫性の問題を回避する目的で、共有データブロックのコピーを格納するプロセッサコア１１０にライトインバリデート動作（ｗｒｉｔｅ  ｉｎｖａｌｉｄａｔｅ  ｏｐｅｒａｔｉｏｎ）が送られる。キャッシュコヒーレンスを維持するため、メカニズム１２５は、データブロック（またはデータブロック区間（ｄａｔａ  ｂｌｏｃｋ  ｉｎｔｅｒｖａｌ））のキャッシュステータスを記録する。データブロック（またはデータブロック区間）のキャッシュステータスは、データブロック（またはデータブロック区間）のアクセスタイプおよび共有エンティティ（ｓｈａｒｅｒ：シェア）を含むことができる。
【０００８】
従来のアーキテクチャにおいて利用されるキャッシュコヒーレンスメカニズム１２５は、パイプライン方式で動作する。したがって、処理時間の大部分が、メモリ１３０の１つの領域から（１つまたは複数の）ローカルキャッシュ１２０へのデータの移動と、１つのローカルキャッシュ１２０から別のローカルキャッシュ１２０へのデータの移動とに消費される。これに加えて、図１に示したキャッシングの従来のアーキテクチャは、本質的に静的であり、したがってある程度の非効率性が生じ、なぜなら静的なパイプライン動作は必ずしもあらゆるユースケースに適合しないためである。
【０００９】
共有メモリリソースの制約は、再構成可能なキャッシュアーキテクチャを使用して解決することもできる。このようなアーキテクチャは、一般に、ハードウェアレベルにおけるキャッシュの動的なパーティショニング（ｐａｒｔｉｔｉｏｎｉｎｇ）をサポートする。再構成可能なキャッシュアーキテクチャは、一般には、コアプロセッサがキャッシュリソースを動的に割り当てることができる一方で、リアルタイムタスクの間で厳密なキャッシュ分離が保証されるように設計されている。
【００１０】
再構成可能なキャッシュアーキテクチャは、アドレッシングの直接的なマッピングを使用することによる電力低減を主として目標としている。しかしながら、このようなアーキテクチャでは、メモリアクセスのレイテンシが改善されない。
【００１１】
したがって、上述した欠陥を克服する処理アーキテクチャを提供することは有利であろう。
【発明の概要】
【００１２】
以下では、いくつかの例としての実施形態の要約を開示する。この要約は、そのような実施形態を読み手が基本的に理解できるように便宜的に提供されるものであり、本開示の範囲を完全に定義するものではない。この要約は、考えられるあらゆる実施形態の広範な概要ではなく、すべての実施形態の主要または重要な要素を識別することも、いずれかの態様またはすべての態様の範囲を示すことも意図していない。その唯一の目的は、１つまたは複数の実施形態のいくつかのコンセプトを、後から提示するさらに詳細な説明の導入部として簡略的な形で提示することである。本明細書では、本開示の１つの実施形態または複数の実施形態を指す目的で、便宜上、語「いくつかの実施形態」を使用することがある。
【００１３】
本明細書に開示されているいくつかの実施形態は、再構成可能なキャッシュアーキテクチャにおけるキャッシュコヒーレンシの方法を含む。本方法は、メモリアクセス命令を受信するステップであって、メモリアクセス命令が、アクセスするメモリのアドレスを少なくとも含む、ステップと、メモリアクセス命令に基づいて少なくとも１つのアクセスパラメータを求めるステップと、メモリアクセス命令に応じるための対象のキャッシュビン（ｃａｃｈｅ  ｂｉｎ）を、少なくとも１つのアクセスパラメータおよびアドレスに部分的に基づいて決定するステップと、を含む。
【００１４】
本明細書に開示されているいくつかの実施形態は、再構成可能なキャッシュアーキテクチャであって、メモリと、メモリに結合されている複数のキャッシュノードであって、各キャッシュノードが複数のキャッシュビンにパーティション化されており、複数のキャッシュビンのうちのいずれかのキャッシュビンへのアクセスがアクセスパラメータに基づいて決定される、複数のキャッシュノードと、を備えている、再構成可能なキャッシュアーキテクチャ、を含む。
【００１５】
本明細書に開示されている主題は、本明細書の最後における請求項に具体的に示され、明確に特許請求されている。本発明の上記およびそれ以外の目的、特徴、および利点は、添付の図面を参照しながら行われる以下の詳細な説明から明らかであろう。
【図面の簡単な説明】
【００１６】
【図１】従来のキャッシュコヒーレンスメカニズムを実例で示す概略図である。
【図２】一実施形態に係る再構成可能なシステムアーキテクチャの概略図である。
【図３Ａ】一実施形態に係る再構成可能なキャッシュアーキテクチャの概略図である。
【図３Ｂ】一実施形態に係る再構成可能なキャッシュアーキテクチャの概略図である。
【図３Ｃ】一実施形態に係る再構成可能なキャッシュアーキテクチャの概略図である。
【図４】一実施形態に係る再構成可能なキャッシュアーキテクチャに結合されているＩ／Ｏ周辺装置の概略図である。
【図５】一実施形態に係る、再構成可能なキャッシュにおけるキャッシュコヒーレンシの方法を示している流れ図である。
【発明を実施するための形態】
【００１７】
本出願の明細書の中で行われている記述は、一般的に、特許請求されるさまざまな実施形態のいずれも必ずしも制限しない。さらに、いくつかの記述は、いくつかの独創的な特徴にあてはまるが、それ以外の特徴にはあてはまらないことがある。一般には、特に明記しない限り、一般性を失うことなく、単数形の要素は複数でもよく、逆も同様である。図面においては、類似する数字は、いくつかの図を通じて類似する部分を指している。
【００１８】
図２は、一実施形態による再構成可能なキャッシュの動作を実例で示す、処理アーキテクチャ２００の例としての概略図を示している。
【００１９】
一実施形態においては、処理アーキテクチャ２００は、インタフェースまたはバス２４０を介してメモリ２２０に結合されている処理回路２１０を含む。特殊な機能、外部要素へのアクセス、または両方を可能にするため、入力／出力（ＩＯ）および周辺装置２３０もインタフェースまたはバス２４０に結合されている。Ｉ／Ｏおよび周辺装置２３０は、周辺機器相互接続（ＰＣＩ：ｐｅｒｉｐｈｅｒａｌ  ｃｏｍｐｏｎｅｎｔ  ｉｎｔｅｒｃｏｎｎｅｃｔ）バスまたはＰＣＩ  Ｅｘｐｒｅｓｓ（ＰＣＩｅ）バス、コプロセッサ、ネットワークコントローラなど（図示していない）をインタフェース接続することができる。なお、ＰＣＩｅバスは、別の周辺装置との接続性を可能にすることを理解されたい。
【００２０】
メモリ２２０は、複数のキャッシュノード２２５−１〜２２５−ｎ（以下では簡潔さを目的として、個々をキャッシュノードと称し、いくつかを一括して１つ以上のキャッシュノードと称する）に結合されている。各キャッシュノード２２５は、処理回路２１０によって処理されるデータを格納するようにと、処理回路２１０にデータをロードするように構成されている。キャッシュノード２２５へのアクセスは、一般に、メモリアクセス命令（ストア（または書き込み（ｗｒｉｔｅ：ライト））、ロード（または読み取り（ｒｅａｄ：リード））など）を通じて実行される。各キャッシュノード２２５は、高速スタティックＲＡＭ（ＳＲＡＭ）、ダイナミックＲＡＭ（ＤＲＡＭ）などを使用して実施することができる。一実施形態においては、後から詳しく説明するように、各キャッシュノード２２５を複数のキャッシュビン（図２には示していない）に論理的にパーティション化することができる。
【００２１】
処理回路２１０は、任意の処理装置または計算装置、例えば、中央処理装置（ＣＰＵ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、グラフィック処理装置（ＧＰＵ）、粗粒度再構成可能アーキテクチャ（ＣＧＲＡ）、特定用途向け集積回路（ＡＳＩＣ）、量子コンピュータなど（ただしこれらに限定されない）とすることができる。処理回路２１０は、一般にはマルチコアプロセッサである。なお、処理アーキテクチャ２００は、複数の処理装置２１０（例：複数のＣＰＵ、ハイブリッドＣＰＵ（ｈｙｂｒｉｄ  ＣＰＵ）など）をさらにサポートできることに留意されたい。
【００２２】
一実施形態においては、処理回路２１０は、再構成可能な処理アーキテクチャとして実施することができる。このようなアーキテクチャは、論理素子のアレイおよびマルチプレクサ（ＭＵＸ）として実施することができる。論理素子は、演算論理装置（ＡＬＵ）、および計算機能を実行するように構成されている機能ユニット（ＦＵ）を含むことができる。
【００２３】
処理回路２１０は、キャッシュ２２５−１〜２２５−ｎの間でキャッシュコヒーレンシを維持する構成可能なキャッシュアーキテクチャを提供するためのさまざまなプロセスを実行するように構成されている。したがって、構成可能なキャッシュアーキテクチャは、何らの追加の専用ハードウェアなしに使用可能になる。構成可能なキャッシュを提供する処理回路２１０は、処理アーキテクチャ２００のために設計されているメインプログラムをさらに実行する。例えば、処理回路２１０は、計算的機械学習プロセスを実行することができ、キャッシュコヒーレンシを維持することができる。
【００２４】
なお、専用のハードウェアを使用することなく、処理アーキテクチャ２００によって、低レイテンシのキャッシュアクセスおよび低い電力使用率が確保されることを理解されたい。したがって、本明細書に開示されている再構成可能なキャッシュアーキテクチャを利用して、処理回路２１０（例：ＣＰＵ、ＦＰＧＡ、ＧＰＵ、ＡＳＩＣなど）の動作を加速させることができる。
【００２５】
開示されている実施形態によれば、ノードおよびそのキャッシュビンのいずれかにおけるデータの位置を、少なくとも１つのアクセスパラメータを通じて計算される確定関数を使用して求めることによって、キャッシュコヒーレンシが達成される。アクセスパラメータは、処理回路２１０によって求められる。アクセスパラメータは、例えば、物理エンティティを表す単一の識別情報（ＩＤ）および論理エンティティを表す単一の識別情報（ＩＤ）の少なくとも一方を含むことができる。このようなエンティティの例としては、プロセスＩＤ、スレッドＩＤ、コアＩＤ、キャッシュビット、ソース命令点（ｓｏｕｒｃｅ  ｉｎｓｔｒｕｃｔｉｏｎ  ｐｏｉｎｔ）、メモリポートＩＤ、メモリアクセスアドレス、またはこれらの組合せ、が挙げられる。アクセスパラメータのタイプを、アクセスされるメモリのタイプに基づいて割り当てることができる。例えば、共有メモリのビンには、例えば少なくとも１つのキャッシュビットを通じてアクセスすることができ、ローカルメモリのビンには、少なくとも１つのプロセスＩＤを通じてアクセスすることができる。アクセスパラメータのタイプは、コンパイル時または実行時に判定することができる。
【００２６】
一実施形態においては、処理回路２１０は、メモリアクセス命令を受信し、アクセスパラメータを求め、アクセスパラメータと、メモリアクセス命令内で指定されるアドレスとに基づいて対象のキャッシュビンを決定するように、構成されている。非限定的な例として、キャッシュノード２２５のどのキャッシュビンがデータを保持するかを決定するため、確定関数（例：ハッシュ関数）、三値連想メモリ（ＴＣＡＭ：ｔｅｒｎａｒｙ  ｃｏｎｔｅｎｔ−ａｄｄｒｅｓｓａｂｌｅ  ｍｅｍｏｒｙ）の合致規則のセット、これらの組合せなどがアドレスを通じて計算され、アクセスパラメータが呼び出される。
【００２７】
例えば、処理回路２１０において、Ｉ／Ｏおよび周辺装置２３０を通じてストア命令が受信されることがある。このような命令は、データブロックと、そのデータブロックを保存するメモリのアドレスとを含むことができる。処理回路２１０は、命令が例えば特定のプロセスに関連付けられているかを判定するように構成されている。関連付けられている場合、そのプロセスのプロセスＩＤがアクセスパラメータとして使用される。アドレスおよびプロセスＩＤ（アクセスパラメータの役割を果たす）を通じて計算される関数を使用して、データブロックを格納するための対象のキャッシュビンを決定する。なお、スレッドＩＤ、コアＩＤ、キャッシュビットなどもアクセスパラメータとして使用できることに留意されたい。例えば、受信されたストア命令が特定のスレッドに関連付けられている場合、スレッドＩＤが使用される。
【００２８】
なお、上に説明したシステムアーキテクチャ２００では、簡潔さのため１つの計算装置を描いてあるが、アーキテクチャ２００は、複数の計算装置（例：複数のＣＰＵ、複数のＧＰＵ、これらの組合せなど）を使用して等しく実施できることを理解されたい。
【００２９】
一実施形態においては、処理回路２１０は、どのキャッシュノード２２５をパーティション化するべきかを決定するように構成されており、各ノード２２５をパーティション化するようにさらに構成されている。すなわち処理回路２１０は、キャッシュノード２２５をいくつのビンにパーティション化するかと、各パーティションのサイズとを決定するように構成されている。一実施形態においては、パーティショニングを静的とする（例：等しいサイズを有する事前定義された数のビンにパーティション化する）ことができる。別の実施形態においてはパーティション化を動的とすることができ、この場合、割当ては各キャッシュビンの使用率に基づく。この目的のため、実行の各反復の後、各ビンの使用率を測定し、測定された使用率に基づいて、そのビンの割当てを修正するべきかを判定する。なお測定は、プログラムの終了後、または実行中に行うことができることに留意されたい。例えば、使用頻度の高いビンのサイズを増大させることができ、一方で、使用頻度の低いビンのサイズを低減することができる。さらにはビンの数を、測定された使用率に基づいて増やす、または減らすことができる。
【００３０】
特定の実施形態においては、いくつかのキャッシュノード２２５を静的にパーティション化することができ、一方で、それ以外のキャッシュノード２２５を動的にパーティション化することができる。なお、最初はキャッシュを静的にパーティション化し、プログラムが実行されるにつれてビンの割当てを動的に修正してもよいことに留意されたい。
【００３１】
一実施形態においては、キャッシュアドレスが複数のキャッシュビンの間でパーティション化される。キャッシュノード２２５の各キャッシュパーティションに異なる論理エンティティまたは物理エンティティを割り当てることができる。例えば、キャッシュノード２２５−１を２つのキャッシュビンにパーティション化することができ、一方のキャッシュビンがプログラムの第１のプロセス専用であり、他方のキャッシュビンが第２のプロセス専用である。これに代えて、キャッシュビンを、処理回路２１０のプロセッサコアに割り当てることができる。キャッシュビンを割り当てることのできるエンティティの別の例としては、スレッドが挙げられる。ビンへのキャッシュノードのパーティション化は、図３にさらに図解してある。
【００３２】
なお、上に挙げたエンティティは説明を目的としているにすぎず、キャッシュビンに割り当てることのできる多数のタイプの論理エンティティおよび物理エンティティすべてを網羅してはいないことを理解されたい。さらには、キャッシュビンはキャッシュノードの任意の部分でよいことを理解されたい。
【００３３】
図３Ａ〜図３Ｃは、一実施形態に係る再構成可能なキャッシュアーキテクチャ３００の、例としての概略図を示している。図３Ａ〜図３Ｃに示した例においては、１つのキャッシュノード２２５−ｎが、複数のビン３１０に動的にパーティション化されるものとして示してある。
【００３４】
具体的には、図３Ａに示したように、キャッシュノード２２５−ｎは、最初に、同程度のサイズを有する４つのキャッシュビン３１０−１，３１０−２，３１０−３，３１０−４にパーティション化される。実行の最初の反復後、実行中または実行間に、ノード２２５−ｎのパーティション化が、同程度のサイズを有する８つのキャッシュビン３１０−１〜３１０−８を含むように変更される（図３Ｂ）。実行がもう一度反復された後、実行中または実行間に、ノード２２５−ｎのパーティション化が、複数の異なるサイズを有する８つのビン３１０−１〜３１０−８を含むように変更される。図３Ｃに示したように、ビン３１０−１に割り当てられるメモリは、３１０−８に割り当てられるメモリとは異なる。
【００３５】
一実施形態によれば、キャッシュアーキテクチャ３００を、複数の物理ノードに分散させることができ、この場合、各ノードが１つまたは複数の論理ビンにさらにパーティション化される。各物理ノードの処理回路は、キャッシュノードのすべてまたは一部にアクセスすることができる。
【００３６】
図３Ａ〜図３Ｃに示したように、確定ハッシュ関数２２５（ｄｅｔｅｒｍｉｎｉｓｔｉｃ  ｈａｓｈ  ｆｕｎｃｔｉｏｎ）を利用して対象のキャッシュを決定する。関数３２５は、処理回路２１０によって計算される。再構成可能なキャッシュアーキテクチャ３００は、メモリを細かい粒度で使用することを可能にし、したがってシステムの動作を向上させ、実行時の性能を改善することを理解されたい。
【００３７】
さらには、再構成可能なキャッシュアーキテクチャ３００には、単に簡潔さを目的として、１つのキャッシュノード２２５−ｎと、４つまたは８つのビン３１０を描いてあることを理解されたい。一般には、アーキテクチャ３００は、任意の数のキャッシュビンにパーティション化することのできる複数のキャッシュノードを含む。
【００３８】
一実施形態においては、メモリキャッシュビン３１０は、アトミックメモリアクセス命令（ａｔｏｍｉｃ  ｍｅｍｏｒｙ  ａｃｃｅｓｓ  ｃｏｍｍａｎｄ）を実行することができる。このような命令は、１つの動作として、ある位置におけるメモリの値をロードし、条件付で修正し、その後に格納することができる。なお、複数のメモリポートからの複数のアトミックアクセス命令が並列に実行されて、キャッシュビンにおいて順次実行されるときには、これらの命令の結果として、すべてのメモリポートにおいて一貫性が維持されることを理解されたい。
【００３９】
図４は、一実施形態に係る、Ｉ／Ｏ周辺装置（Ｉ／Ｏ  Ｐ）４１０に結合されている再構成可能なキャッシュアーキテクチャ４００の、例としての概略図を示している。この構成においては、入力／出力（ＩＯ）および周辺装置４１０−１〜４１０−ｋ（ｋは１以上の整数）は、ＰＣＩバス、ＰＣＩ  Ｅｘｐｒｅｓｓ（ＰＣＩｅ）、１つまたは複数のコプロセッサ、１つまたは複数のネットワークコントローラなどを含むことができる。
【００４０】
この図に示したように、メモリアクセス命令がＩ／Ｏ周辺装置４１０によって発行される。処理回路２１０は、確定ハッシュ関数４２５を使用して、受信した命令にある程度基づいて対象のキャッシュビンを決定する。
【００４１】
この構成においては、対象のキャッシュビンから受け取るデータまたは制御信号（例：ＡＣＫ信号）が、受信した命令を発行したＩ／Ｏ周辺装置４１０にマッピングされる。マッピングはマッピング関数４２７によって実行され、マッピング関数４２７は、確定ハッシュ関数として、または三値連想メモリ（ＴＣＡＭ）の合致規則のセットとして、またはこれらの組合せなどとして、実施することができる。なお、メモリアクセスは、メモリ操作を実行する目的で、ローカルキャッシュ１２０に向けられることに留意されたい。
【００４２】
図５は、一実施形態に係る、再構成可能なキャッシュアーキテクチャにおけるキャッシュコヒーレンシの方法の、例としての流れ図５００を示している。再構成可能なキャッシュアーキテクチャは、メモリに結合されている複数のキャッシュノードを含み、各キャッシュノードが複数のキャッシュビンにパーティション化されている。
【００４３】
Ｓ５１０においては、メモリアクセス命令を受信する。上述したように、この命令は、処理アーキテクチャのメモリにデータを格納する（書き込む）命令、または処理アーキテクチャのメモリからデータをロードする（読み取る）命令とすることができる。命令は、例えばＩ／Ｏ周辺装置２３０などのインタフェースを介して受信することができる。受信される命令は、少なくとも、データが格納される先、またはデータをロードする元の対象のアドレスを含む。ストア命令では、格納されるデータも、受信される命令に含まれる。メモリアドレスは、メインプログラムのコードのコンパイル時に決定されるアドレス境界の範囲内であるべきである。
【００４４】
Ｓ５２０においては、少なくとも１つのアクセスパラメータを求める。アクセスパラメータは、前に述べたように、プロセスＩＤ、スレッドＩＤ、キャッシュビット、格納ポインタ、プロセスコアＩＤなどを含むことができる。一実施形態においては、求めるステップは、受信した命令が関連付けられる論理エンティティまたは物理エンティティを求めるステップを含む。物理エンティティの例は、前に詳しく説明してある。
【００４５】
一実施形態においては、受信した命令が、専用プロセスまたは専用スレッド（いずれも論理エンティティとみなす）の一部として実行される場合、プロセスＩＤまたはスレッドＩＤがアクセスパラメータとみなされる。別の実施形態においては、受信した命令が、専用の処理コア（物理エンティティとみなす）上で実行される場合、コアＩＤがアクセスパラメータとみなされる。さらに別の実施形態においては、受信した命令が、共有メモリ（物理エンティティとみなす）にアクセスする命令である場合、キャッシュビットがアクセスパラメータとみなされる。
【００４６】
いくつかの実施形態においては、ロード／ストアの属性を求める。このような属性としては、例えば、特定の値をキャッシュしない、特定の値を常にキャッシュする、特定の値を常にチェックするなどが挙げられる。さらには、割当ての順序付けと、グリッドにおけるアクセスの同期によって、より大きいパイプラインおよびより高いスループットが可能になり、その一方でメカニズムが単純化される。このような属性は、揮発性メモリの場合、およびロッキングメカニズム（ｌｏｃｋｉｎｇ  ｍｅｃｈａｎｉｓｍ）の場合に有利である。
【００４７】
Ｓ５３０においては、アクセスする対象のキャッシュビンを決定する。一実施形態においては、この決定は、アクセスパラメータと、受信した要求に指定されているアドレスを通じて計算される確定関数を使用して実行される。別の実施形態においては、同じインタフェースを使用して決定が行われるように、確定関数がグリッドに関連付けられる。
【００４８】
なお、データは、確定関数によって決定される対象のキャッシュビンに格納される、または対象のキャッシュビンからロードされることに留意されたい。
【００４９】
一実施形態においては、Ｓ５３０は、アクセスされる対象のキャッシュビンに関する統計情報を集めるステップを含む。例えば、ビンの数、同じビンにアクセスする頻度、書き込まれるデータまたは読み取られるデータのサイズ、を求める。これらの集められた統計情報を利用して、ビンのパーティションを動的に変更することができる。
【００５０】
Ｓ５４０においては、さらなるシステムコールが受信されているかをチェックし、受信されている場合、実行はＳ５１０に続き、そうでない場合、実行は終了する。
【００５１】
本明細書に開示されている実施形態は、ハードウェア、ファームウェア、ソフトウェア、またはこれらの任意の組合せとして実施することができる。任意の適切なアーキテクチャを備えたマシンに、アプリケーションプログラムをアップロードして実行することができる。マシンは、１つまたは複数の中央処理装置（「ＣＰＵ」）、メモリ、および入力／出力インタフェースなどのハードウェアを有するコンピュータプラットフォーム上に実施されることが好ましい。
【００５２】
コンピュータプラットフォームは、オペレーティングシステムおよびマイクロ命令コードをさらに含むことができる。本明細書に記載されているさまざまなプロセスおよび関数は、ＣＰＵ（そのようなコンピュータまたはプロセッサが明示的に示されているか否かを問わない）によって実行することのできるマイクロ命令コードの一部またはアプリケーションプログラムの一部のいずれか、またはこれらの任意の組合せとすることができる。
【００５３】
これに加えて、コンピュータプラットフォームには、追加のデータ記憶装置など、さまざまな他の周辺装置を接続することができる。さらに、非一時的なコンピュータ可読媒体は、一時的な伝搬信号を除く任意のコンピュータ可読媒体である。
【００５４】
本明細書に記載されているすべての例、および条件を表す語（ｃｏｎｄｉｔｉｏｎａｌ  ｌａｎｇｕａｇｅ）は、この技術分野を発展させるために本発明者によって提供される本開示およびコンセプトの原理を読み手が理解できるように支援するための教示目的を意図しており、そのような具体的に記載されている例および条件に限定されないものと解釈されたい。
【図１】
2020530176.tif 000003
【図２】
2020530176.tif 000004
【図３Ａ】
2020530176.tif 000005
【図３Ｂ】
2020530176.tif 000006
【図３Ｃ】
2020530176.tif 000007
【図４】
2020530176.tif 000008
【図５】
2020530176.tif 000009
【国際調査報告】
2020530176.tif 000010