IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ ネクスト シリコン リミテッドの特許一覧

特許7126136再構成可能なキャッシュアーキテクチャおよびキャッシュコヒーレンシの方法
<>
  • 特許-再構成可能なキャッシュアーキテクチャおよびキャッシュコヒーレンシの方法 図1
  • 特許-再構成可能なキャッシュアーキテクチャおよびキャッシュコヒーレンシの方法 図2
  • 特許-再構成可能なキャッシュアーキテクチャおよびキャッシュコヒーレンシの方法 図3A
  • 特許-再構成可能なキャッシュアーキテクチャおよびキャッシュコヒーレンシの方法 図3B
  • 特許-再構成可能なキャッシュアーキテクチャおよびキャッシュコヒーレンシの方法 図3C
  • 特許-再構成可能なキャッシュアーキテクチャおよびキャッシュコヒーレンシの方法 図4
  • 特許-再構成可能なキャッシュアーキテクチャおよびキャッシュコヒーレンシの方法 図5
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-08-18
(45)【発行日】2022-08-26
(54)【発明の名称】再構成可能なキャッシュアーキテクチャおよびキャッシュコヒーレンシの方法
(51)【国際特許分類】
   G06F 12/084 20160101AFI20220819BHJP
   G06F 12/0842 20160101ALI20220819BHJP
【FI】
G06F12/084
G06F12/0842
【請求項の数】 13
(21)【出願番号】P 2020529107
(86)(22)【出願日】2018-08-03
(65)【公表番号】
(43)【公表日】2020-10-15
(86)【国際出願番号】 US2018045131
(87)【国際公開番号】W WO2019028327
(87)【国際公開日】2019-02-07
【審査請求日】2021-08-02
(31)【優先権主張番号】62/540,854
(32)【優先日】2017-08-03
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】520039124
【氏名又は名称】ネクスト シリコン リミテッド
【氏名又は名称原語表記】Next Silicon Ltd
【住所又は居所原語表記】33 Derech Yitshak Rabin Street, Givatayim, Israel
(74)【代理人】
【識別番号】110002952
【氏名又は名称】特許業務法人鷲田国際特許事務所
(72)【発明者】
【氏名】ラズ エラド
【審査官】後藤 彰
(56)【参考文献】
【文献】米国特許出願公開第2017/0091111(US,A1)
【文献】国際公開第2016/010705(WO,A1)
【文献】特表2017-527883(JP,A)
【文献】米国特許出願公開第2004/034750(US,A1)
【文献】米国特許出願公開第2016/0103767(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 12/084
G06F 12/0842
(57)【特許請求の範囲】
【請求項1】
再構成可能なキャッシュアーキテクチャ(300)におけるキャッシュコヒーレンシの方法であって、
メモリアクセス命令を受信するステップ(S510)であって、前記メモリアクセス命令が、アクセスするメモリ(220)のアドレスを少なくとも含む、ステップと、
前記メモリアクセス命令に基づいて少なくとも1つのアクセスパラメータを求めるステップ(S520)と、
前記メモリアクセス命令に応じるための対象のキャッシュビンを、前記少なくとも1つのアクセスパラメータおよび前記アドレスに部分的に基づいて決定するステップ(S530)と、
を含
前記再構成可能なキャッシュアーキテクチャは、複数の個別の物理キャッシュノード(225-1…225-n)に分配されており、実質的に独立して動作し、前記メモリに電気的に結合されており、各キャッシュノードは、複数のキャッシュビン(310-1…310-8)にパーティション化でき、前記対象のキャッシュビンは、前記複数のキャッシュビンの1つであり、前記複数のキャッシュノードの少なくとも2つ以内の前記複数のキャッシュビンのパーティショニングは、再構成可能であり、
前記メモリアクセス命令は、
処理コア、および前記メモリの共有部分で構成されるグループから選択される、物理エンティティと、
プロセスとスレッドから構成されるグループから選択される、論理エンティティと
のいずれか一方の単一の識別情報を含み、
前記少なくとも1つのアクセスパラメータが、プロセスID、処理コアID、スレッドID、またはキャッシュビット、の少なくとも1つを含み、
前記少なくとも1つのアクセスパラメータを決定することが、さらに、
前記メモリアクセス命令が論理エンティティに関連して決定されるように、前記アクセスパラメータを論理エンティティ識別情報として設定し、
前記メモリアクセス命令が物理エンティティに関連して決定されるように、前記アクセスパラメータを物理エンティティ識別情報として設定する、
方法。
【請求項2】
前記対象のキャッシュビンが、少なくとも1つのキャッシュノードの少なくとも一部分である、請求項1に記載の方法。
【請求項3】
各キャッシュビンが、前記複数のキャッシュノードのうちのそれぞれのキャッシュノードに含まれている、請求項に記載の方法。
【請求項4】
各キャッシュノードを、前記キャッシュノードのそれぞれの複数のキャッシュビンの使用率に基づいて、少なくとも2つのキャッシュビンに動的にパーティション化するステップ、
をさらに含む、請求項に記載の方法。
【請求項5】
最初に各キャッシュノードを所定の数のキャッシュビン(310-1、310-2、310-3、310-4)にパーティション化するステップと、
各キャッシュビンの使用に関する統計情報を集めるステップと、
前記集められた統計情報に基づいて、各キャッシュノードの前記最初のパーティショニング(310-1…310-8)を再構成するステップと、
をさらに含む、請求項に記載の方法。
【請求項6】
各キャッシュノードの前記パーティショニングを再構成する前記ステップが、複数の実行の反復の実行の各反復の後に行われる、請求項に記載の方法。
【請求項7】
前記キャッシュビン(310-8)の少なくとも1つに、より多くのキャッシュ記憶域を動的に割り当てるステップ、
をさらに含む、請求項に記載の方法。
【請求項8】
少なくとも1つのキャッシュ属性を求めるステップであって、前記少なくとも1つのキャッシュ属性が、特定の値をキャッシュしない、特定の値を常にキャッシュする、および特定の値を常にチェックする、の少なくとも1つを含む、ステップ、
をさらに含む、請求項に記載の方法。
【請求項9】
前記メモリアクセス命令に応じるための前記対象のキャッシュビンを決定する前記ステップが、
前記少なくとも1つのアクセスパラメータおよび前記アドレスを通じて確定関数を計算するステップ、
をさらに含む、請求項1に記載の方法。
【請求項10】
前記再構成可能なキャッシュアーキテクチャが、処理回路(210)によるプログラムの実行を加速させるために利用される、請求項1に記載の方法。
【請求項11】
前記処理回路が、
中央処理装置、フィールドプログラマブルゲートアレイ、グラフィック処理装置、粗粒度再構成可能アーキテクチャ、特定用途向け集積回路、マルチコアプロセッサ、および量子コンピュータ、
のいずれか1つである、
請求項10に記載の方法。
【請求項12】
命令を格納している非一時的なコンピュータ可読媒体であって、前記命令が、少なくとも1つの処理回路に実行されたとときに、前記少なくとも1つの処理回路に請求項1に記載の前記方法を実行させる、
非一時的なコンピュータ可読媒体。
【請求項13】
ソフトウェアプログラムを実行するシステムであって、
処理回路と、
前記処理回路に接続された再構成可能なキャッシュと、
を備え、
前記再構成可能なキャッシュ
メモリと、
複数の個別の物理キャッシュノードであって、実質的に独立して動作し、前記メモリに結合されており、各キャッシュノードが複数のキャッシュビンにパーティション化されており、前記複数のキャッシュビンのうちのいずれかのキャッシュビンへのアクセスがアクセスパラメータに基づいて決定される、前記複数のキャッシュノードと、
含み
前記複数のキャッシュノードの少なくとも2つ内の前記複数のキャッシュビンのパーティショニングは、再構成可能であり、
前記処理回路は、再構成可能なキャッシュアーキテクチャ中のキャッシュコヒーレンシにために適合され、
前記処理回路は、
メモリアクセス命令を受信し、前記メモリアクセス命令は、アクセスされるメモリの少なくともアドレスを含み、
前記メモリアクセス命令に基づいて、少なくとも1つのアクセスパラメータを決定し、
前記少なくとも1つのアクセスパラメータと前記アドレスとの一部に基づいて、前記メモリアクセス命令に応じるための対象キャッシュビンを決定し、
前記メモリアクセス命令は、
処理コア、および前記メモリの共有部分で構成されるグループから選択される、物理エンティティと、
プロセスおよびスレッドから構成されるグループから選択される、論理エンティティと
のいずれか一方の単一の識別情報を含み、
前記少なくとも1つのアクセスパラメータが、プロセスID、処理コアID、スレッドID、およびキャッシュビット、の少なくとも1つを含み、
前記少なくとも1つのアクセスパラメータを決定することが、さらに、
前記メモリアクセス命令が論理エンティティに関連して決定されるように、前記アクセスパラメータを論理エンティティ識別情報として設定し、
前記メモリアクセス命令が物理エンティティに関連して決定されるように、前記アクセスパラメータを物理エンティティ識別情報として設定する、
再構成可能なキャッシュアーキテクチャ。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、全般的には、メモリアーキテクチャに関し、より詳細には、埋め込み型の計算アーキテクチャおよび構成可能な計算アーキテクチャに関する。
【0002】
(関連出願の相互参照)
本出願は、米国仮特許出願第62/540,854号(出願日:2017年8月3日)の優先権の利益を主張し、この文書の内容は参照により本明細書に組み込まれている。
【背景技術】
【0003】
各プロセッサ用の個別のキャッシュメモリを有する共有メモリ型マルチコアプロセッサにおいては、共有データの多数のコピー(メインメモリ内の1つのコピーと、データのコピーを要求した各プロセッサのローカルキャッシュ内の1つのコピー)を有することが可能である。データのコピーの1つが変更されると、他のコピーもその変更を反映しなければならない。
【0004】
キャッシュコヒーレンス(Cache coherence)とは、複数のローカルキャッシュを必要とする共有リソースデータの一貫性(uniformity)である。システム内のクライアント(例:プロセッサコア)が共通メモリリソースのローカルキャッシュを維持するときには、一貫性のない(incoherent)データ(例:複数のローカルキャッシュが、1つのアドレス位置の複数の異なる値を有する)という問題が生じうる。
【0005】
図1には、キャッシュコヒーレンスを実装するための、例としての従来のアーキテクチャ100を示してある。各プロセッサコア110-1~110-M(以下では簡潔さを目的として、個々をプロセッサコア110と称し、いくつかを一括して1つ以上のプロセッサコア110と称する)には、対応するローカルキャッシュ120-1~120-M(以下では簡潔さを目的として、個々をローカルキャッシュ120と称し、いくつかを一括して1つ以上のローカルキャッシュ120と称する)が関連付けられている。すべてのコアプロセッサ110およびそれぞれの対応するローカルキャッシュ120が、共有メモリ130にアクセスする。
【0006】
メモリ130が複数のプロセッサコア110(およびそれぞれのローカルキャッシュ120)によって共有されているとき、プロセッサコア(例:コア110-1)は、共有メモリ130にアクセスするとき、一般には、データアクセスを加速させる目的で、共有メモリ130からのデータブロックを自身のキャッシュ(例:キャッシュ120-1)にコピーする必要がある。複数のプロセッサコア110が共有メモリ130にアクセスするとき、すべてのこのようなプロセッサコア110のローカルキャッシュ120内に、共有メモリ130内のデータブロックのコピーが存在する。コピーのコヒーレンス(一貫性)を維持するためには、キャッシュコヒーレンスメカニズム(CCM)125がデータの共有を管理する必要がある。
【0007】
具体的には、共有データブロック、または共有データブロックのコピーに対して書き込み(またはストア)動作を実行するときには、データの非一貫性の問題を回避する目的で、共有データブロックのコピーを格納するプロセッサコア110にライトインバリデート動作(write invalidate operation)が送られる。キャッシュコヒーレンスを維持するため、メカニズム125は、データブロック(またはデータブロック区間(data block interval))のキャッシュステータスを記録する。データブロック(またはデータブロック区間)のキャッシュステータスは、データブロック(またはデータブロック区間)のアクセスタイプおよび共有エンティティ(sharer:シェア)を含むことができる。
【0008】
従来のアーキテクチャにおいて利用されるキャッシュコヒーレンスメカニズム125は、パイプライン方式で動作する。したがって、処理時間の大部分が、メモリ130の1つの領域から(1つまたは複数の)ローカルキャッシュ120へのデータの移動と、1つのローカルキャッシュ120から別のローカルキャッシュ120へのデータの移動とに消費される。これに加えて、図1に示したキャッシングの従来のアーキテクチャは、本質的に静的であり、したがってある程度の非効率性が生じ、なぜなら静的なパイプライン動作は必ずしもあらゆるユースケースに適合しないためである。
【0009】
共有メモリリソースの制約は、再構成可能なキャッシュアーキテクチャを使用して解決することもできる。このようなアーキテクチャは、一般に、ハードウェアレベルにおけるキャッシュの動的なパーティショニング(partitioning)をサポートする。再構成可能なキャッシュアーキテクチャは、一般には、コアプロセッサがキャッシュリソースを動的に割り当てることができる一方で、リアルタイムタスクの間で厳密なキャッシュ分離が保証されるように設計されている。
【0010】
再構成可能なキャッシュアーキテクチャは、アドレッシングの直接的なマッピングを使用することによる電力低減を主として目標としている。しかしながら、このようなアーキテクチャでは、メモリアクセスのレイテンシが改善されない。
【0011】
したがって、上述した欠陥を克服する処理アーキテクチャを提供することは有利であろう。
【発明の概要】
【0012】
以下では、いくつかの例としての実施形態の要約を開示する。この要約は、そのような実施形態を読み手が基本的に理解できるように便宜的に提供されるものであり、本開示の範囲を完全に定義するものではない。この要約は、考えられるあらゆる実施形態の広範な概要ではなく、すべての実施形態の主要または重要な要素を識別することも、いずれかの態様またはすべての態様の範囲を示すことも意図していない。その唯一の目的は、1つまたは複数の実施形態のいくつかのコンセプトを、後から提示するさらに詳細な説明の導入部として簡略的な形で提示することである。本明細書では、本開示の1つの実施形態または複数の実施形態を指す目的で、便宜上、語「いくつかの実施形態」を使用することがある。
【0013】
本明細書に開示されているいくつかの実施形態は、再構成可能なキャッシュアーキテクチャにおけるキャッシュコヒーレンシの方法を含む。本方法は、メモリアクセス命令を受信するステップであって、メモリアクセス命令が、アクセスするメモリのアドレスを少なくとも含む、ステップと、メモリアクセス命令に基づいて少なくとも1つのアクセスパラメータを求めるステップと、メモリアクセス命令に応じるための対象のキャッシュビン(cache bin)を、少なくとも1つのアクセスパラメータおよびアドレスに部分的に基づいて決定するステップと、を含む。
【0014】
本明細書に開示されているいくつかの実施形態は、再構成可能なキャッシュアーキテクチャであって、メモリと、メモリに結合されている複数のキャッシュノードであって、各キャッシュノードが複数のキャッシュビンにパーティション化されており、複数のキャッシュビンのうちのいずれかのキャッシュビンへのアクセスがアクセスパラメータに基づいて決定される、複数のキャッシュノードと、を備えている、再構成可能なキャッシュアーキテクチャ、を含む。
【0015】
本明細書に開示されている主題は、本明細書の最後における請求項に具体的に示され、明確に特許請求されている。本発明の上記およびそれ以外の目的、特徴、および利点は、添付の図面を参照しながら行われる以下の詳細な説明から明らかであろう。
【図面の簡単な説明】
【0016】
図1】従来のキャッシュコヒーレンスメカニズムを実例で示す概略図である。
図2】一実施形態に係る再構成可能なシステムアーキテクチャの概略図である。
図3A】一実施形態に係る再構成可能なキャッシュアーキテクチャの概略図である。
図3B】一実施形態に係る再構成可能なキャッシュアーキテクチャの概略図である。
図3C】一実施形態に係る再構成可能なキャッシュアーキテクチャの概略図である。
図4】一実施形態に係る再構成可能なキャッシュアーキテクチャに結合されているI/O周辺装置の概略図である。
図5】一実施形態に係る、再構成可能なキャッシュにおけるキャッシュコヒーレンシの方法を示している流れ図である。
【発明を実施するための形態】
【0017】
本出願の明細書の中で行われている記述は、一般的に、特許請求されるさまざまな実施形態のいずれも必ずしも制限しない。さらに、いくつかの記述は、いくつかの独創的な特徴にあてはまるが、それ以外の特徴にはあてはまらないことがある。一般には、特に明記しない限り、一般性を失うことなく、単数形の要素は複数でもよく、逆も同様である。図面においては、類似する数字は、いくつかの図を通じて類似する部分を指している。
【0018】
図2は、一実施形態による再構成可能なキャッシュの動作を実例で示す、処理アーキテクチャ200の例としての概略図を示している。
【0019】
一実施形態においては、処理アーキテクチャ200は、インタフェースまたはバス240を介してメモリ220に結合されている処理回路210を含む。特殊な機能、外部要素へのアクセス、または両方を可能にするため、入力/出力(IO)および周辺装置230もインタフェースまたはバス240に結合されている。I/Oおよび周辺装置230は、周辺機器相互接続(PCI:peripheral component interconnect)バスまたはPCI Express(PCIe)バス、コプロセッサ、ネットワークコントローラなど(図示していない)をインタフェース接続することができる。なお、PCIeバスは、別の周辺装置との接続性を可能にすることを理解されたい。
【0020】
メモリ220は、複数のキャッシュノード225-1~225-n(以下では簡潔さを目的として、個々をキャッシュノードと称し、いくつかを一括して1つ以上のキャッシュノードと称する)に結合されている。各キャッシュノード225は、処理回路210によって処理されるデータを格納するようにと、処理回路210にデータをロードするように構成されている。キャッシュノード225へのアクセスは、一般に、メモリアクセス命令(ストア(または書き込み(write:ライト))、ロード(または読み取り(read:リード))など)を通じて実行される。各キャッシュノード225は、高速スタティックRAM(SRAM)、ダイナミックRAM(DRAM)などを使用して実施することができる。一実施形態においては、後から詳しく説明するように、各キャッシュノード225を複数のキャッシュビン(図2には示していない)に論理的にパーティション化することができる。
【0021】
処理回路210は、任意の処理装置または計算装置、例えば、中央処理装置(CPU)、フィールドプログラマブルゲートアレイ(FPGA)、グラフィック処理装置(GPU)、粗粒度再構成可能アーキテクチャ(CGRA)、特定用途向け集積回路(ASIC)、量子コンピュータなど(ただしこれらに限定されない)とすることができる。処理回路210は、一般にはマルチコアプロセッサである。なお、処理アーキテクチャ200は、複数の処理装置210(例:複数のCPU、ハイブリッドCPU(hybrid CPU)など)をさらにサポートできることに留意されたい。
【0022】
一実施形態においては、処理回路210は、再構成可能な処理アーキテクチャとして実施することができる。このようなアーキテクチャは、論理素子のアレイおよびマルチプレクサ(MUX)として実施することができる。論理素子は、演算論理装置(ALU)、および計算機能を実行するように構成されている機能ユニット(FU)を含むことができる。
【0023】
処理回路210は、キャッシュ225-1~225-nの間でキャッシュコヒーレンシを維持する構成可能なキャッシュアーキテクチャを提供するためのさまざまなプロセスを実行するように構成されている。したがって、構成可能なキャッシュアーキテクチャは、何らの追加の専用ハードウェアなしに使用可能になる。構成可能なキャッシュを提供する処理回路210は、処理アーキテクチャ200のために設計されているメインプログラムをさらに実行する。例えば、処理回路210は、計算的機械学習プロセスを実行することができ、キャッシュコヒーレンシを維持することができる。
【0024】
なお、専用のハードウェアを使用することなく、処理アーキテクチャ200によって、低レイテンシのキャッシュアクセスおよび低い電力使用率が確保されることを理解されたい。したがって、本明細書に開示されている再構成可能なキャッシュアーキテクチャを利用して、処理回路210(例:CPU、FPGA、GPU、ASICなど)の動作を加速させることができる。
【0025】
開示されている実施形態によれば、ノードおよびそのキャッシュビンのいずれかにおけるデータの位置を、少なくとも1つのアクセスパラメータを通じて計算される確定関数を使用して求めることによって、キャッシュコヒーレンシが達成される。アクセスパラメータは、処理回路210によって求められる。アクセスパラメータは、例えば、物理エンティティを表す単一の識別情報(ID)および論理エンティティを表す単一の識別情報(ID)の少なくとも一方を含むことができる。このようなエンティティの例としては、プロセスID、スレッドID、コアID、キャッシュビット、ソース命令点(source instruction point)、メモリポートID、メモリアクセスアドレス、またはこれらの組合せ、が挙げられる。アクセスパラメータのタイプを、アクセスされるメモリのタイプに基づいて割り当てることができる。例えば、共有メモリのビンには、例えば少なくとも1つのキャッシュビットを通じてアクセスすることができ、ローカルメモリのビンには、少なくとも1つのプロセスIDを通じてアクセスすることができる。アクセスパラメータのタイプは、コンパイル時または実行時に判定することができる。
【0026】
一実施形態においては、処理回路210は、メモリアクセス命令を受信し、アクセスパラメータを求め、アクセスパラメータと、メモリアクセス命令内で指定されるアドレスとに基づいて対象のキャッシュビンを決定するように、構成されている。非限定的な例として、キャッシュノード225のどのキャッシュビンがデータを保持するかを決定するため、確定関数(例:ハッシュ関数)、三値連想メモリ(TCAM:ternary content-addressable memory)の合致規則のセット、これらの組合せなどがアドレスを通じて計算され、アクセスパラメータが呼び出される。
【0027】
例えば、処理回路210において、I/Oおよび周辺装置230を通じてストア命令が受信されることがある。このような命令は、データブロックと、そのデータブロックを保存するメモリのアドレスとを含むことができる。処理回路210は、命令が例えば特定のプロセスに関連付けられているかを判定するように構成されている。関連付けられている場合、そのプロセスのプロセスIDがアクセスパラメータとして使用される。アドレスおよびプロセスID(アクセスパラメータの役割を果たす)を通じて計算される関数を使用して、データブロックを格納するための対象のキャッシュビンを決定する。なお、スレッドID、コアID、キャッシュビットなどもアクセスパラメータとして使用できることに留意されたい。例えば、受信されたストア命令が特定のスレッドに関連付けられている場合、スレッドIDが使用される。
【0028】
なお、上に説明したシステムアーキテクチャ200では、簡潔さのため1つの計算装置を描いてあるが、アーキテクチャ200は、複数の計算装置(例:複数のCPU、複数のGPU、これらの組合せなど)を使用して等しく実施できることを理解されたい。
【0029】
一実施形態においては、処理回路210は、どのキャッシュノード225をパーティション化するべきかを決定するように構成されており、各ノード225をパーティション化するようにさらに構成されている。すなわち処理回路210は、キャッシュノード225をいくつのビンにパーティション化するかと、各パーティションのサイズとを決定するように構成されている。一実施形態においては、パーティショニングを静的とする(例:等しいサイズを有する事前定義された数のビンにパーティション化する)ことができる。別の実施形態においてはパーティション化を動的とすることができ、この場合、割当ては各キャッシュビンの使用率に基づく。この目的のため、実行の各反復の後、各ビンの使用率を測定し、測定された使用率に基づいて、そのビンの割当てを修正するべきかを判定する。なお測定は、プログラムの終了後、または実行中に行うことができることに留意されたい。例えば、使用頻度の高いビンのサイズを増大させることができ、一方で、使用頻度の低いビンのサイズを低減することができる。さらにはビンの数を、測定された使用率に基づいて増やす、または減らすことができる。
【0030】
特定の実施形態においては、いくつかのキャッシュノード225を静的にパーティション化することができ、一方で、それ以外のキャッシュノード225を動的にパーティション化することができる。なお、最初はキャッシュを静的にパーティション化し、プログラムが実行されるにつれてビンの割当てを動的に修正してもよいことに留意されたい。
【0031】
一実施形態においては、キャッシュアドレスが複数のキャッシュビンの間でパーティション化される。キャッシュノード225の各キャッシュパーティションに異なる論理エンティティまたは物理エンティティを割り当てることができる。例えば、キャッシュノード225-1を2つのキャッシュビンにパーティション化することができ、一方のキャッシュビンがプログラムの第1のプロセス専用であり、他方のキャッシュビンが第2のプロセス専用である。これに代えて、キャッシュビンを、処理回路210のプロセッサコアに割り当てることができる。キャッシュビンを割り当てることのできるエンティティの別の例としては、スレッドが挙げられる。ビンへのキャッシュノードのパーティション化は、図3にさらに図解してある。
【0032】
なお、上に挙げたエンティティは説明を目的としているにすぎず、キャッシュビンに割り当てることのできる多数のタイプの論理エンティティおよび物理エンティティすべてを網羅してはいないことを理解されたい。さらには、キャッシュビンはキャッシュノードの任意の部分でよいことを理解されたい。
【0033】
図3A図3Cは、一実施形態に係る再構成可能なキャッシュアーキテクチャ300の、例としての概略図を示している。図3A図3Cに示した例においては、1つのキャッシュノード225-nが、複数のビン310に動的にパーティション化されるものとして示してある。
【0034】
具体的には、図3Aに示したように、キャッシュノード225-nは、最初に、同程度のサイズを有する4つのキャッシュビン310-1,310-2,310-3,310-4にパーティション化される。実行の最初の反復後、実行中または実行間に、ノード225-nのパーティション化が、同程度のサイズを有する8つのキャッシュビン310-1~310-8を含むように変更される(図3B)。実行がもう一度反復された後、実行中または実行間に、ノード225-nのパーティション化が、複数の異なるサイズを有する8つのビン310-1~310-8を含むように変更される。図3Cに示したように、ビン310-1に割り当てられるメモリは、310-8に割り当てられるメモリとは異なる。
【0035】
一実施形態によれば、キャッシュアーキテクチャ300を、複数の物理ノードに分散させることができ、この場合、各ノードが1つまたは複数の論理ビンにさらにパーティション化される。各物理ノードの処理回路は、キャッシュノードのすべてまたは一部にアクセスすることができる。
【0036】
図3A図3Cに示したように、確定ハッシュ関数225(deterministic hash function)を利用して対象のキャッシュを決定する。関数325は、処理回路210によって計算される。再構成可能なキャッシュアーキテクチャ300は、メモリを細かい粒度で使用することを可能にし、したがってシステムの動作を向上させ、実行時の性能を改善することを理解されたい。
【0037】
さらには、再構成可能なキャッシュアーキテクチャ300には、単に簡潔さを目的として、1つのキャッシュノード225-nと、4つまたは8つのビン310を描いてあることを理解されたい。一般には、アーキテクチャ300は、任意の数のキャッシュビンにパーティション化することのできる複数のキャッシュノードを含む。
【0038】
一実施形態においては、メモリキャッシュビン310は、アトミックメモリアクセス命令(atomic memory access command)を実行することができる。このような命令は、1つの動作として、ある位置におけるメモリの値をロードし、条件付で修正し、その後に格納することができる。なお、複数のメモリポートからの複数のアトミックアクセス命令が並列に実行されて、キャッシュビンにおいて順次実行されるときには、これらの命令の結果として、すべてのメモリポートにおいて一貫性が維持されることを理解されたい。
【0039】
図4は、一実施形態に係る、I/O周辺装置(I/O P)410に結合されている再構成可能なキャッシュアーキテクチャ400の、例としての概略図を示している。この構成においては、入力/出力(IO)および周辺装置410-1~410-k(kは1以上の整数)は、PCIバス、PCI Express(PCIe)、1つまたは複数のコプロセッサ、1つまたは複数のネットワークコントローラなどを含むことができる。
【0040】
この図に示したように、メモリアクセス命令がI/O周辺装置410によって発行される。処理回路210は、確定ハッシュ関数425を使用して、受信した命令にある程度基づいて対象のキャッシュビンを決定する。
【0041】
この構成においては、対象のキャッシュビンから受け取るデータまたは制御信号(例:ACK信号)が、受信した命令を発行したI/O周辺装置410にマッピングされる。マッピングはマッピング関数427によって実行され、マッピング関数427は、確定ハッシュ関数として、または三値連想メモリ(TCAM)の合致規則のセットとして、またはこれらの組合せなどとして、実施することができる。なお、メモリアクセスは、メモリ操作を実行する目的で、ローカルキャッシュ120に向けられることに留意されたい。
【0042】
図5は、一実施形態に係る、再構成可能なキャッシュアーキテクチャにおけるキャッシュコヒーレンシの方法の、例としての流れ図500を示している。再構成可能なキャッシュアーキテクチャは、メモリに結合されている複数のキャッシュノードを含み、各キャッシュノードが複数のキャッシュビンにパーティション化されている。
【0043】
S510においては、メモリアクセス命令を受信する。上述したように、この命令は、処理アーキテクチャのメモリにデータを格納する(書き込む)命令、または処理アーキテクチャのメモリからデータをロードする(読み取る)命令とすることができる。命令は、例えばI/O周辺装置230などのインタフェースを介して受信することができる。受信される命令は、少なくとも、データが格納される先、またはデータをロードする元の対象のアドレスを含む。ストア命令では、格納されるデータも、受信される命令に含まれる。メモリアドレスは、メインプログラムのコードのコンパイル時に決定されるアドレス境界の範囲内であるべきである。
【0044】
S520においては、少なくとも1つのアクセスパラメータを求める。アクセスパラメータは、前に述べたように、プロセスID、スレッドID、キャッシュビット、格納ポインタ、プロセスコアIDなどを含むことができる。一実施形態においては、求めるステップは、受信した命令が関連付けられる論理エンティティまたは物理エンティティを求めるステップを含む。物理エンティティの例は、前に詳しく説明してある。
【0045】
一実施形態においては、受信した命令が、専用プロセスまたは専用スレッド(いずれも論理エンティティとみなす)の一部として実行される場合、プロセスIDまたはスレッドIDがアクセスパラメータとみなされる。別の実施形態においては、受信した命令が、専用の処理コア(物理エンティティとみなす)上で実行される場合、コアIDがアクセスパラメータとみなされる。さらに別の実施形態においては、受信した命令が、共有メモリ(物理エンティティとみなす)にアクセスする命令である場合、キャッシュビットがアクセスパラメータとみなされる。
【0046】
いくつかの実施形態においては、ロード/ストアの属性を求める。このような属性としては、例えば、特定の値をキャッシュしない、特定の値を常にキャッシュする、特定の値を常にチェックするなどが挙げられる。さらには、割当ての順序付けと、グリッドにおけるアクセスの同期によって、より大きいパイプラインおよびより高いスループットが可能になり、その一方でメカニズムが単純化される。このような属性は、揮発性メモリの場合、およびロッキングメカニズム(locking mechanism)の場合に有利である。
【0047】
S530においては、アクセスする対象のキャッシュビンを決定する。一実施形態においては、この決定は、アクセスパラメータと、受信した要求に指定されているアドレスを通じて計算される確定関数を使用して実行される。別の実施形態においては、同じインタフェースを使用して決定が行われるように、確定関数がグリッドに関連付けられる。
【0048】
なお、データは、確定関数によって決定される対象のキャッシュビンに格納される、または対象のキャッシュビンからロードされることに留意されたい。
【0049】
一実施形態においては、S530は、アクセスされる対象のキャッシュビンに関する統計情報を集めるステップを含む。例えば、ビンの数、同じビンにアクセスする頻度、書き込まれるデータまたは読み取られるデータのサイズ、を求める。これらの集められた統計情報を利用して、ビンのパーティションを動的に変更することができる。
【0050】
S540においては、さらなるシステムコールが受信されているかをチェックし、受信されている場合、実行はS510に続き、そうでない場合、実行は終了する。
【0051】
本明細書に開示されている実施形態は、ハードウェア、ファームウェア、ソフトウェア、またはこれらの任意の組合せとして実施することができる。任意の適切なアーキテクチャを備えたマシンに、アプリケーションプログラムをアップロードして実行することができる。マシンは、1つまたは複数の中央処理装置(「CPU」)、メモリ、および入力/出力インタフェースなどのハードウェアを有するコンピュータプラットフォーム上に実施されることが好ましい。
【0052】
コンピュータプラットフォームは、オペレーティングシステムおよびマイクロ命令コードをさらに含むことができる。本明細書に記載されているさまざまなプロセスおよび関数は、CPU(そのようなコンピュータまたはプロセッサが明示的に示されているか否かを問わない)によって実行することのできるマイクロ命令コードの一部またはアプリケーションプログラムの一部のいずれか、またはこれらの任意の組合せとすることができる。
【0053】
これに加えて、コンピュータプラットフォームには、追加のデータ記憶装置など、さまざまな他の周辺装置を接続することができる。さらに、非一時的なコンピュータ可読媒体は、一時的な伝搬信号を除く任意のコンピュータ可読媒体である。
【0054】
本明細書に記載されているすべての例、および条件を表す語(conditional language)は、この技術分野を発展させるために本発明者によって提供される本開示およびコンセプトの原理を読み手が理解できるように支援するための教示目的を意図しており、そのような具体的に記載されている例および条件に限定されないものと解釈されたい。
図1
図2
図3A
図3B
図3C
図4
図5