(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2025-04-16
(45)【発行日】2025-04-24
(54)【発明の名称】超並列処理アレイのためのキャッシュアーキテクチャ
(51)【国際特許分類】
G06F 12/0893 20160101AFI20250417BHJP
G06F 12/0842 20160101ALI20250417BHJP
【FI】
G06F12/0893 111
G06F12/0842
(21)【出願番号】P 2024538684
(86)(22)【出願日】2024-03-12
(86)【国際出願番号】 US2024019574
(87)【国際公開番号】W WO2024192030
(87)【国際公開日】2024-09-19
【審査請求日】2024-08-13
(32)【優先日】2023-03-15
(33)【優先権主張国・地域又は機関】US
【早期審査対象出願】
(73)【特許権者】
【識別番号】524239210
【氏名又は名称】コーナミ、インコーポレイテッド
(74)【代理人】
【識別番号】110001519
【氏名又は名称】弁理士法人太陽国際特許事務所
(72)【発明者】
【氏名】フランツ、マーティン アラン、セカンド
【審査官】後藤 彰
(56)【参考文献】
【文献】特開2014-38494(JP,A)
【文献】特表2011-517003(JP,A)
【文献】米国特許出願公開第2022/0398196(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 12/0893
G06F 12/0842
(57)【特許請求の範囲】
【請求項1】
グリッド内に配置された同一のコアのアレイのためのキャッシュアーキテクチャであって、
各コアは、前記グリッド内の隣接するコアへの相互接続、メモリ、およびアルゴリズム論理ユニットを含み、
前記キャッシュアーキテクチャは、
計算動作を実行するように構成されたコアの前記アレイの少なくとも1つのコアからデータに対するメモリアクセス要求を受信するように構成された前記アレイの第1コアと、
要求されたデータがキャッシュメモリ内に存在するか否かを、前記キャッシュメモリ内のアドレスを含むキャッシュインデックスを介して決定するように構成された前記アレイの第2コアと、
前記キャッシュメモリとして構成された前記アレイの第3コアと、
を含み、
前記第3コアの前記メモリが前記キャッシュメモリとして使用され、
前記キャッシュインデックスから要求された前記データのアドレスが前記第3コアに渡され、要求された前記データを出力する、
キャッシュアーキテクチャ。
【請求項2】
前記第3コアの前記メモリと組み合わせて、前記キャッシュメモリとして構成された前記アレイの第4コアのメモリをさらに含む、請求項1に記載のキャッシュアーキテクチャ。
【請求項3】
外部メモリを管理するように構成された前記アレイの第4コアをさらに含み、
要求された前記データが存在しないとき、要求された前記データが前記外部メモリから前記第3コアに書き込まれる、請求項1に記載のキャッシュアーキテクチャ。
【請求項4】
前記アドレスのサフィックスは、取り出される前記データが前記キャッシュメモリから取り出されるか、または前記外部メモリから取り出されるかを指定するために使用される、請求項3に記載のキャッシュアーキテクチャ。
【請求項5】
前記外部メモリは、高帯域メモリである、請求項3に記載のキャッシュアーキテクチャ。
【請求項6】
前記データは、調整可能なキャッシュライン長を有するキャッシュラインを介して取り出される、請求項1に記載のキャッシュアーキテクチャ。
【請求項7】
前記アレイ内の前記コアの各々は別のコアの対応する第1、第2、および第3チャネルにそれぞれ相互接続され得る前記第1チャネル、第2チャネル、および第3チャネルを有し、
前記第3コアは前記第1チャネル上で要求された前記データのアドレスを受け入れ、前記データが前記外部メモリから書き込まれる場合、要求された前記データを前記第2チャネル上に出力し、前記データが前記キャッシュメモリに記憶されている場合、要求された前記データを前記第3チャネル上に出力する、請求項3に記載のキャッシュアーキテクチャ。
【請求項8】
前記第3コアに結合された前記アレイの第4コアをさらに含み、
前記第4コアは、
前記計算動作のために構成された前記アレイ内の前記コアのうちの少なくとも前記1つに要求された前記データを返すように構成される、請求項1に記載のキャッシュアーキテクチャ。
【請求項9】
少なくとも前記1つのコアは、前記計算
動作を実行するように構成されていることに応答して、前記キャッシュメモリとして第4コアを構成する、請求項1に記載のキャッシュアーキテクチャ。
【請求項10】
グリッド内に配置されたコアのアレイに対してキャッシュメモリを提供する方法であって、
各コアは前記グリッド内の隣接するコアへの相互接続、メモリ、およびアルゴリズム論理ユニットを含み、
前記方法は、
計算動作を実行するように構成されたコアの前記アレイの少なくとも1つのコアからデータに対するメモリアクセス要求を受信するように前記アレイの第1コアを構成し、
要求された前記データがキャッシュメモリ内に存在するかどうかを、前記キャッシュメモリ内のアドレスを含むキャッシュインデックスを介して決定するように、前記アレイの第2コアを構成し、
前記アレイの第3コアを前記キャッシュメモリとして構成し、
前記第3コアの前記メモリを前記キャッシュメモリとして使用し、
要求された前記データのアドレスを、前記キャッシュインデックスから前記第3コアに渡して、要求された前記データを出力する、
方法。
【請求項11】
前記第3コアの前記メモリと組み合わせて、前記アレイの第4コアのメモリを前記キャッシュメモリとして構成することをさらに含む、請求項10に記載の方法。
【請求項12】
第4コアを介して外部メモリを管理し、
要求された前記データが存在しないとき、前記外部メモリから前記第3コアに外部データを書き込む、ことをさらに含む、請求項10に記載の方法。
【請求項13】
前記アドレスのサフィックスは、取り出される前記データが前記キャッシュメモリから取り出されるか、または前記外部メモリから取り出されるかを指定するために使用される、請求項12に記載の方法。
【請求項14】
前記外部メモリは、高帯域メモリである、請求項12に記載の方法。
【請求項15】
前記データは、調整可能なキャッシュライン長を有するキャッシュラインを介して取り出される、請求項10に記載の方法。
【請求項16】
前記アレイ内の前記コアの各々が別のコアの対応する第1、第2、および第3チャネルにそれぞれ相互接続され得る前記第1チャネル、第2チャネル、および第3チャネルを有し、
前記第3コアが前記第1チャネル上の要求された前記データのアドレスを受け入れ、前記データが前記外部メモリから書き込まれる場合、要求された前記データを前記第2チャネル上に出力し、前記データが前記キャッシュメモリに記憶されている場合、要求された前記データを前記第3チャネル上に出力する、請求項12に記載の方法。
【請求項17】
前記第3コアに結合された前記アレイの第4コアを介して、
前記計算動作のために構成された前記アレイ内の前記コアのうちの少なくとも前記1つに要求された前記データを返すことをさらに含む、請求項10に記載の方法。
【請求項18】
前記計算
動作を実行するように構成されていることに応答して、コアの前記アレイの少なくとも前記1つのコアを介して前記キャッシュメモリとして第4コアを構成することをさらに含む、請求項10に記載の方法。
【請求項19】
オンチップシステムであって、
高帯域幅メモリと、
相互接続ネットワークに結合されたコアのアレイを含むダイであって、
前記相互接続ネットワークが前記高帯域幅メモリへのアクセスを可能にし、
コアの前記アレイ内の前記コアの各々が、メモリおよびアルゴリズム論理ユニットを含む、ダイと、
を含み、
前記アレイの第1コアは、計算動作を実行するように構成されたコアの前記アレイの少なくとも1つのコアからデータに対するメモリアクセス要求を受信するように構成され、
前記アレイの第2コアは、要求された前記データがキャッシュメモリ内に存在するか否かを、前記キャッシュメモリ内のアドレスを含むキャッシュインデックスを介して判定するように構成され、
前記アレイの第3コアは、前記キャッシュメモリとして構成され、
前記第3コアの前記メモリは前記キャッシュメモリとして使用され、
前記キャッシュインデックスから要求された前記データのアドレスは前記第3コアに渡され、要求された前記データを出力する、
オンチップシステム。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、一般にキャッシュに関する。より詳細には、本開示の態様が超並列処理アレイにおいてコアを処理するためのキャッシュを提供するためのアーキテクチャに関する。
【背景技術】
【0002】
コンピューティングシステムは、異なる実行アプリケーションのために構成され得る均質なコアにますます基づいてきている。したがって、そのようなコアは、多くの異なる動作に適応され得、様々な並列プログラミングタスクのために意図され得る。コアは、典型的にはダイ上に製造される。そのようなダイは、必要な処理能力を割り当てるために分割され得るように製造され得る。したがって、そのようなダイによって実行される処理は、プログラム動作を分割するために使用されている多くのコアに依存する。そのような分割の一例は、異なるコアに割り当てられる異なるスレッドを使用する複数のコアをプログラミングするストリーミングモデルであり得る。
【0003】
したがって、そのようなダイは、超並列処理などの異なる動作のために選択的に使用され得るコアのアレイを有する。コアのグループは、そのような異なる動作のために選択される。効率的なレイアウトでは、操作を実行するためにできるだけ近くにあるコアを選択する。レイアウトは、異なる計算機能を実行するようにコアを構成することができる。典型的には、そのような機能が高帯域幅メモリなどのオフチップアクセス可能メモリに記憶されなければならないデータへのアクセスを必要とする。しかしながら、オフチップのメモリにアクセスすることは、多くの場合、時間のかかるタスクであり、それによって、計算タスクの迅速な実行を妨げる。従来のプロセッサは外部メモリからデータを取得した後に、必要なデータをキャッシュメモリに記憶することが多い。このようにして、プロセッサが次回データへのアクセスを必要とするとき、外部メモリへの比較的メモリアクセスを実行するのではなく、キャッシュ内のプロセッサによって迅速にアクセスされ得る。
【0004】
従来のハードウェアキャッシュ設計は、チップ製造中に決定される特定の使用事例に合わせて調整される。したがって、CPUキャッシュは例えば、GPUキャッシュとは異なるように動作する。具体的にはGPUキャッシュがグラフィックス処理のための三角レンダリングアクセスパターンのために調整され、一方、CPUキャッシュは汎用CPUアクセスパターンのために調整される。しかし、異なるタスクに対して構成可能なコアの均質なアレイでは、特にターゲットを絞ったキャッシュの提供は不可能である。したがって、キャッシュメモリは、一般に計算タスクのために構成されるアレイ内のコアに容易に利用可能ではない。したがって、そのようなコアの動作は、外部メモリへのメモリアクセス動作を実行する継続的な必要性のために妨げられる。
【発明の概要】
【発明が解決しようとする課題】
【0005】
したがって、キャッシュ機能のためにコアのアレイ上にコアを構成するためのアーキテクチャが必要とされている。キャッシュアドレスラインの長さを調整することができるフレキシブルなアーキテクチャが必要とされている。利用可能なキャッシュメモリサイズの量を調整することができるキャッシュアーキテクチャがさらに必要とされている。
【課題を解決するための手段】
【0006】
開示される一例は、グリッド内に配置された同一のコアのアレイのためのキャッシュアーキテクチャである。各コアは、前記グリッド内の隣接するコアへの相互接続、メモリ、およびアルゴリズム論理ユニットを含む。前記キャッシュアーキテクチャは、計算動作を実行するように構成されたコアの前記アレイの少なくとも1つのコアからデータに対するメモリアクセス要求を受信するように構成された前記アレイの第1コアを含む。アレイの第2コアは、要求されたデータがキャッシュメモリ内に存在するか否かを、前記キャッシュメモリ内のアドレスを含むキャッシュインデックスを介して決定するように構成されている。前記アレイの第3コアは、前記キャッシュメモリとして構成されている。前記第3コアの前記メモリが前記キャッシュメモリとして使用される。前記キャッシュインデックスから要求された前記データのアドレスが前記第3コアに渡され、要求された前記データを出力する。
【0007】
例のさらなる実装は、前記第3コアの前記メモリと組み合わせて、前記キャッシュメモリとして構成された前記アレイの第4コアのメモリをさらに含む。
【0008】
例の別の実装は、外部メモリを管理するように構成された前記アレイの第4コアをさらに含む。要求された前記データが存在しないとき、要求された前記データが前記外部メモリから前記第3コアに書き込まれる。
【0009】
別の実装では、前記アドレスのサフィックスは、取り出される前記データが前記キャッシュメモリから取り出されるか、または前記外部メモリから取り出されるかを指定するために使用される
【0010】
別の実装では、前記外部メモリは、高帯域メモリである。
【0011】
別の実装では、前記データは、調整可能なキャッシュライン長を有するキャッシュラインを介して取り出される。
【0012】
別の実装では、前記アレイ内の前記コアの各々は別のコアの前記対応する第1、第2、および第3チャネルにそれぞれ相互接続され得る第1チャネル、第2チャネル、および第3チャネルを有する。前記第3コアは前記第1チャネル上で要求された前記データのアドレスを受け入れ、前記データが前記外部メモリから書き込まれる場合、要求された前記データを前記第2チャネル上に出力し、前記データが前記キャッシュメモリに記憶されている場合、要求された前記データを前記第3チャネル上に出力する。
【0013】
例の別の実装は、前記第3コアに結合された前記アレイの第4コアをさらに含む。前記第4コアは、計算動作のために構成された前記アレイ内の前記コアのうちの少なくとも前記1つに要求された前記データを返すように構成される。
【0014】
別の例では、少なくとも前記1つのコアは、前記計算機能を実行するように構成されていることに応答して、前記キャッシュメモリとして第4コアを構成する。
【0015】
開示される別の例は、グリッド内に配置されたコアのアレイに対してキャッシュメモリを提供する方法である。各コアは前記グリッド内の隣接するコアへの相互接続、メモリ、およびアルゴリズム論理ユニットを含む。前記アレイの第1コアは、計算動作を実行するように構成されたコアの前記アレイの少なくとも1つのコアからデータに対するメモリアクセス要求を受信するように構成されている。前記アレイの第2コアは、要求された前記データがキャッシュメモリ内に存在するかどうかを、前記キャッシュメモリ内のアドレスを含むキャッシュインデックスを介して決定するように、構成されている。前記アレイの第3コアは前記キャッシュメモリとして構成されている。前記第3コアの前記メモリは前記キャッシュメモリとして使用される。要求された前記データのアドレスは、前記キャッシュインデックスから前記第3コアに渡され、要求された前記データを出力する。
【0016】
例の別の実装は、前記第3コアの前記メモリと組み合わせて、前記アレイの第4コアのメモリを前記キャッシュメモリとして構成することをさらに含む。
【0017】
例の別の実装は、第4コアを介して外部メモリを管理する。要求された前記データが存在しないとき、前記外部メモリから前記第3コアに前記外部データが書き込まれる。
【0018】
別の実装は、前記アドレスのサフィックスは、取り出される前記データが前記キャッシュメモリから取り出されるか、または前記外部メモリから取り出されるかを指定するために使用される。
【0019】
別の実装では、前記外部メモリは、高帯域メモリである。
【0020】
別の実装では、前記データは、調整可能なキャッシュライン長を有するキャッシュラインを介して取り出される。
【0021】
別の実装は、前記アレイ内の前記コアの各々が別のコアの対応する前記第1、第2、および第3チャネルにそれぞれ相互接続され得る第1チャネル、第2チャネル、および第3チャネルを有する。前記第3コアが前記第1チャネル上の要求された前記データのアドレスを受け入れ、前記データが前記外部メモリから書き込まれる場合、要求された前記データを前記第2チャネル上に出力し、前記データが前記キャッシュメモリに記憶されている場合、要求された前記データを前記第3チャネル上に出力する。
【0022】
例の別の実装は、前記第3コアに結合された前記アレイの第4コアを介して、計算動作のために構成された前記アレイ内の前記コアのうちの少なくとも前記1つに要求された前記データを返すことをさらに含む。
【0023】
例の別の実装は、前記計算機能を実行するように構成されていることに応答して、コアの前記アレイの少なくとも前記1つのコアを介して前記キャッシュメモリとして第4コアを構成することをさらに含む。
【0024】
開示される別の例は、オンチップシステムであり、高帯域幅メモリと、相互接続ネットワークに結合されたコアのアレイを含むダイと、を含む。前記相互接続ネットワークは前記高帯域幅メモリへのアクセスを可能にする。コアの前記アレイ内の前記コアの各々が、メモリおよびアルゴリズム論理ユニットを含む。前記アレイの第1コアは、計算動作を実行するように構成されたコアの前記アレイの少なくとも1つのコアからデータに対するメモリアクセス要求を受信するように構成されている。前記アレイの第2コアは、要求された前記データがキャッシュメモリ内に存在するか否かを、前記キャッシュメモリ内のアドレスを含むキャッシュインデックスを介して判定するように構成されている。前記アレイの第3コアは、前記キャッシュメモリとして構成されている。前記第3コアの前記メモリは前記キャッシュメモリとして使用されている。前記キャッシュインデックスから要求された前記データのアドレスは要求された前記データを出力するために前記第3コアに渡される。
【0025】
上記の発明の概要は、本開示の各実施形態またはすべての態様を表すことを意図するものではない。むしろ、前述の発明の概要は、本明細書に記載の新規な態様および特徴のいくつかの例を提供するに過ぎない。本開示の上記の特徴および利点、ならびに他の特徴および利点は、添付の図面および添付の特許請求の範囲と関連して、本発明を実施するための代表的な実施形態およびモードの以下の詳細な説明から容易に明らかになるのであろう。
【図面の簡単な説明】
【0026】
【
図1A】
図1Aは、各々が複数の処理コアを有する4つのダイを有するチップの図である。
【
図2C】
図2Cは、様々な動作の実施のための選択に適したコアの配列の3次元図である。
【
図3】
図3は、
図2Aのコアのアレイのコアのうちの1つのブロック図である。
【
図4】
図4は、
図2Aのコアのアレイのコアのためのキャッシュへのアクセスを可能にする例示的なキャッシュアーキテクチャのブロック図である。
【
図5】
図5は、
図4のキャッシュアーキテクチャを含むコアアレイの構成例を示すブロック図である。
【
図6】
図6は、例示的なキャッシュアーキテクチャ上に記憶されたデータにアクセスするプロセスのフロー図である。
【発明を実施するための形態】
【0027】
本開示は、添付の図面を参照して、例示的な実施形態の以下の説明からより良く理解されるであろう。
【0028】
本開示は、様々な修正および代替形態が可能である。いくつかの代表的な実施形態が例として図面に示されており、本明細書で詳細に説明される。しかしながら、本発明は、開示された特定の形態に限定されることを意図するものではないことを理解されたい。むしろ、本開示は、添付の特許請求の範囲によって定義される本発明の趣旨および範囲内に入るすべての修正形態、均等物、および代替形態を網羅するものである。
【0029】
本開示は、添付の図面を参照して、例示的な実施形態の以下の説明からより良く理解されるのであろう。
【0030】
図1Aは、各々が複数の処理コアを有する4つのダイを有するチップの図である。
【0031】
図1Bは、
図1Aに示されるチップ上のダイのうちの1つの簡略図である。
【0032】
図2Aは、異なる動作の実施のための選択に適した、
図1Bのダイ内のコアのアレイのブロック図である。
【0033】
【0034】
【0035】
図3は、
図2Aのコアのアレイのコアのうちの1つのブロック図である。
【0036】
図4は、
図2Aのコアのアレイのコアのためのキャッシュへのアクセスを可能にする例示的なキャッシュアーキテクチャのブロック図である。
【0037】
図5は、
図4のキャッシュアーキテクチャを含むコアアレイの構成例を示すブロック図である。
【0038】
図6は、例示的なキャッシュアーキテクチャ上に記憶されたデータにアクセスするプロセスのフロー図である。
【0039】
本開示は、様々な修正および代替形態が可能である。いくつかの代表的な実施形態が例として図面に示されており、本明細書で詳細に説明される。しかしながら、本発明は、開示された特定の形態に限定されることを意図するものではないことを理解されたい。むしろ、本開示は、添付の特許請求の範囲によって定義される本発明の趣旨および範囲内に入るすべての修正形態、均等物、および代替形態を網羅するものである。
詳細な説明
【0040】
本発明は、多くの異なる形態で実施することができる。代表的な実施形態が図面に示されており、本明細書において詳細に説明される。本開示は本開示の原理の例または例示であり、本開示の広範な態様を図示の実施形態に限定することを意図するものではない。その限りにおいて、例えば、要約書、概要、および詳細な説明のセクションに開示されているが、特許請求の範囲に明示的に記載されていない要素、および限定は含意、推論、またはその他によって、単独で、または集合的に、特許請求の範囲に組み込まれるべきではない。本発明の詳細な記載のために、特に放棄されない限り、単数は複数を含み、逆もまた同様であり、「含む」という手段を含む。さらに、「約」、「ほぼ」、「実質的に」、「およそ」などの近似語は例えば、「で」、「の近くで」、または「大体」、または「3~5%以内」、または「許容できる製造公差内」、またはそれらの任意の論理的組合せを意味するために本明細書で使用され得る。
【0041】
本開示は、コアの超並列アレイにおいて均質なコアを構成することから作成され得るアーキテクチャを対象とする。例示的なアーキテクチャは、アレイ内の他のコアのためのメモリアクセス、キャッシュアドレス指定、およびキャッシュストレージ機能を実行するように特定のコアを構成する。このように、アーキテクチャは、キャッシュアーキテクチャとして構成されたコアを介して、外部メモリから以前にアクセスされたデータへの迅速なメモリアクセスを可能にする。
【0042】
図1Aは、4つの同一のダイ102、104、106、および108に再分割される例示的なチップ100を示す。ダイ102、104、106、および108の各々は、複数のプロセッサコア、サポート回路、シリアル相互接続、およびシリアルデータ制御サブシステムを含む。たとえば、ダイ102、104、106、および108はそれぞれ、異なる通信プロトコルをサポートするために、4,096個の処理コアならびにSERDES相互接続レーンを有し得る。ダイ102、104、106、および108の間にダイツーダイ並列接続がある。したがって、この実施形態におけるダイ102、104、106、および108の各々は、インターラーケン接続点によって相互接続される。チップ100は、ダイ102、104、106、および108のうちの1つ、2つ、または4つすべてが使用されることを可能にするように設計される。未使用のダイに関連するパッケージのピンは、パッケージまたはボードに接続されずに残される。チップ100と同一の追加のチップがデバイスまたは回路基板に実装され得るので、ダイはスケーラブルである。この例では、チップ100にはイーサネット(登録商標)ポートなどの単一の通信ポートが設けられている。もちろん、ダイごとに1つまたは複数のポートなど、他のポートが提供されてもよい。
【0043】
図1Bは、ダイ102の一例のブロック図である。ダイ102は、処理コアのフラクタルアレイ130を含む。フラクタルアレイ130内の処理コアは、システム相互接続132を介して互いに相互接続される。コア130のアレイ全体が、ダイ102およびチップ100の主要な処理エンジンとして機能する。この例では、フラクタルアレイ130内に、グリッドに編成された4,096個のコアがある。
【0044】
システム相互接続132は、一連のメモリ入力/出力プロセッサ(MIOP)134に結合される。システム相互接続132は、制御ステータスレジスタ(CSR)136、ダイレクトメモリアクセス(DMA)138、割り込みコントローラ(IRQC)140、I2Cバスコントローラ142、および2つのダイツーダイ相互接続144に結合される。2つのダイ間相互接続144は、ダイ102の処理コア130のアレイと、
図1Aの2つの隣接するダイ104および108との間の通信を可能にする。
【0045】
チップは、外部メモリサブシステムを構成する高帯域メモリ148に結合された高帯域メモリコントローラ146を含む。また、このチップは、外部通信のためのイーサネット(登録商標)コントローラシステム150、インターラーケンコントローラシステム152、およびPCIeコントローラシステム154を含む。この例ではコントローラシステム150、152、および154の各々はメディアアクセスコントローラと、物理コーディングサブレイヤ(PCS)と、コアとの間のデータのための入力とを有する。それぞれの通信プロトコルシステム150、152、および154のそれぞれの制御装置はそれぞれの通信プロトコルにおけるデータを提供するために、コアとインターフェースする。この実施形態では、インターラーケン制御装置152が2つのインターラーケン制御装置と、それぞれのチャネルとを有する。SERDESアロケータ(Alocator)156は、クワッドM-PHYユニット158を介して通信システム150、152、および154にSERDESラインを割り当てることを可能にする。通信システム150、152、および154のコントローラの各々は、高帯域幅メモリ148にアクセスすることができる。
【0046】
この例では、直接相互接続されたコアのアレイ130が各タイル内に16個のコアを有するタイルに編成される。アレイ130は、メモリIOプロセッサ(MIOP)134および高帯域幅メモリコントローラ146を介してコアと外部DRAMとの間でデータストリームをルーティングするための高帯域幅相互接続を有することによって、メモリネットワークオンチップとして機能する。アレイ130は、「Array of Chips」ブリッジモジュールを介したチップ間通信を含む、離れたコア間の通信をサポートするためのリンクネットワークオンチップ相互接続として機能する。アレイ130は、アレイ130の全ての構成要素からの致命的なエラーメッセージを捕捉及びフィルタリングするエラーレポータ機能を有する。
【0047】
図2Aは、
図1Bのコア130のアレイの詳細図である。
図2Bは、
図1Bのコア130の配列の3次元像である。コア130のアレイは、
図2Aに示されるクラスタ200、210、220、および230などの4つのコアクラスタに編成される。たとえば、クラスタ200は、コア202a、202b、202c、および202dを含む。コア202a、202b、202c、および202dなどの各クラスタ200内の4つのコアの各々は、ルータ204によって互いに結合される。
図2Bは、対応するコア212a~212d、222a~212d、および232a~232d、ならびに対応するルータ214、224、および234を有する他のクラスタ210、220、および230を示す。
【0048】
図2Bに具体的に示され得るように、この例ではコア202a、202b、202c、および202dの各々は最大4組の3つの相互接続〔L、A、R〕を有する。例えば、コア202dのようなアレイの中心のコアは、各々が4つの隣接するコアのうちの1つに接続された4組の相互接続240、242、244、および246を含む。これにより、コア202bは相互接続240を介してコア202dに接続され、コア202cは相互接続242を介してコア202dに接続され、コア212bは相互接続244を介してコア202dに接続され、コア202cは相互接続246を介してコア202dに接続される。別個のコネクタ248が、クラスタ200のワイヤルータ204に結合される。したがって、アレイの中央の各コアは4組の相互接続を有し、一方、コア202cなどの境界コアは、それぞれのコア202a、202d、および212aに接続される3組の相互接続250、252、および246のみを有する。
【0049】
図2Cは、コアアレイ130のコアの斜視図である。アレイ上のコアの領域は、行列乗算などのプログラムまたは計算機能を実行する選択されたコアのレイアウトのために選択される。すべてのコアが機能していると仮定すると、プログラム機能のためのコアのレイアウトは、理想的にはできるだけ密にレイアウトされる。そのような理想的なトポロジーは、100%収率のMPPAフラクタルアレイチップのためのレイアウトとして定義され得る。しかし、理想的なトポロジレイアウトは、アレイ内に機能不全のコアを含めないように調整される必要がある。
【0050】
図3は、
図2Aのコア202aなどのアレイ130内のコアのうちの1つのブロック図である。コア130のアレイ内のコアの各々は、算術論理ユニット(ALU)または再構成可能算術エンジン310、スタティックランダムアクセスメモリ(SRAM)などのメモリ312、ならびにプログラムメモリおよび制御モジュール314を含む。再構成可能な算術エンジン310は、データ操作動作を実行する。プログラムメモリ及び制御モジュール314は、データフロープログラムを実行する。各コアは、隣接するコアへの内部接続性データ入力/出力と、コアのアレイ130の外側のデバイスへの外部接続性とを含む。この例では、コアが北(North)側の組の相互接続320と、東(East)側の組の相互接続322と、南(South)側の組の相互接続324と、西(West)側の組の相互接続326とを含む4組の相互接続(A、L、R)を含む。
【0051】
この例では、コアの各々が(a)数値演算、論理演算、および数学演算、(b)データルーティング演算、(c)条件分岐演算、および(d)ブール型、整数型、浮動小数点型、または固定小数点型などの任意のまたはすべてのデータ型におけるすべてのこれらの演算の実装を含む、様々な計算モードのために構成され得る。コアのアレイ内のコアの各々は、数値演算、論理演算、および数学演算、データルーティング演算、条件分岐演算、入力処理、出力処理、および他のコア間の「ワイヤ」(コネクタとしての役割を果たす)などの機能を実行するようにプログラムされ得る。データは、本明細書で説明されるコアとルータ構造との間の相互接続を介して、コア130のアレイ内のコア間で交換され得る。データは、ブール型、整数型、浮動小数点型、または固定小数点型などの任意のまたはすべてのデータ型を含むことができる。
【0052】
図4は、コアのアレイ130のタイルの16個のコアから構成される例示的なキャッシュアーキテクチャ400を示す。アーキテクチャ400内のコアは、コア130のアレイ内の他のコアの計算動作をサポートするためのメモリキャッシュとして機能するように構成される。アレイ130内の他のコアはそのようなコア上で実行される計算動作がデータを必要とするときに、コアアーキテクチャ400にアクセスし得る。データは最初に、
図1BのHBM148などの外部メモリに記憶され得る。データは、一旦アクセスされると、キャッシュメモリとして構成されるコアアーキテクチャ400内のコアのセットに記憶される。これにより、構成されたコアによるキャッシュされたデータへの後続のアクセスで、より迅速なアクセスが可能になる。キャッシュアーキテクチャ400は外部HBM148よりもアクセスが速い、ダイ上のメモリの小片である。キャッシュアーキテクチャはいくつかのチップ領域を必要とし、したがって、アーキテクチャ400に専用のコアの数は制限されるべきである。コアのアレイ上の他のコアによって実行される異なるアプリケーションは、異なるデータアクセスパターンを有し得る。例えば、ワードプロセッサメモリアクセスパターンは、3Dグラフィックレンダリングエンジンとは異なるように見える。したがって、キャッシュアーキテクチャ400はキャッシュヒット率およびミス率を調整するために、キャッシュ内に存在するデータを追跡するために使用されるキャッシュライン長およびビットを変更することを可能にする。
【0053】
例示的なキャッシュアーキテクチャ400は、キャッシュアドレスマネージャ412、リターンデータモジュール414、高帯域幅メモリ(HBM)マネージャ416、キャッシュモジュール418、およびアドレス作成モジュール420を含む5つの一次ブロックを含む。
【0054】
キャッシュアドレスマネージャ412は、キャッシュアドレスインデックスを作成および維持するように構成された第1コア430と、コア430によって維持されたキャッシュアドレスインデックス内のキャッシュアドレスをルックアップするように構成された第2コア432とを含む。計算動作のために構成されたコア130のアレイ内のコアがメモリからデータを読み取るか、またはメモリにデータを書き込むかのいずれかを必要とするとき、要求は、キャッシュアドレスマネージャ412によって受信される。コア434は、キャッシュアーキテクチャ400による要求に対する応答が完了するまで、現在の要求を格納する一定の循環バッファとして構成される。循環バッファ(Circular Buffer)コア434のL個の相互接続は、コア430のL個の相互接続に接続されている。コア430によって要求されたデータのキャッシュアドレスインデックスからのキャッシュアドレスは、コア430とコア432との間のL個の相互接続を介してコア432に渡される。入力アドレスは、L個の相互接続上で変更されずに渡される。コア430とコア432との間のR相互接続は、キャッシュされたデータが存在するか否かを決定するための、キャッシュモジュール418におけるルックアップのためのインデックスデータである。インデックスデータは、データのキャッシュヒットまたはキャッシュミスに対して設定されたサフィックスビットを有する。コア432は、キャッシュアドレスインデックスにおいてコア430から受信されたキャッシュアドレスをルックアップするように構成される。キャッシュアドレスインデックス内の各アドレスは、キャッシュアドレスラインの開始である。
【0055】
コア430および432は、キャッシュモジュール418に保持されているデータを追跡するためのアルゴリズムを実施する。要求されているアドレスは、キャッシュモジュール418のアドレスのためのテーブル内のキャッシュアドレスインデックスを介してトラッキングロケーションを作成するように操作される。アルゴリズムの目的は、キャッシュモジュール418に記憶された最も頻繁にアクセスされるデータを保持することである。アルゴリズムは、異なるアプリケーションのための異なるパターンに対するキャッシュアクセスの最適化を可能にする。したがって、アルゴリズムはキャッシュヒット率およびミス率を調整するために、キャッシュ内に存在するデータを追跡するために使用されるキャッシュライン長およびビットを変更する。例えば、メモリのための32ビットアドレスの場合、ビット31はアドレスの上位ビットであり、ビット0はアドレスの最下位ビットである。キャッシュインデックスは、アドレスの異なる順序ビットから作成され得る。例えば、ビット9:0を使用して1024エントリキャッシュテーブルを作成することができ、またはビット31:22を調べることができる。一般に、より大きいデータはより高い値ビットを有するアドレスインデックスを有するが、比較的小さいデータはより低い値ビットを有するアドレスインデックスを有する。これらは、非常に異なるキャッシュヒット/ミス比を有する。例示的なキャッシュインデックスは、データのアドレスのアドレスフィールド全体にわたって散在するビットから作成され得る。インデックスは、データのアドレスがインデックスのアドレスと一致するかどうかを決定することによって、データがキャッシュモジュール418に記憶されているかどうかを決定するために使用され得る。
【0056】
ルックアップされたキャッシュアドレスは、コア432とコア440との間のL個の相互接続を介して、コア432からリターンデータモジュール414内のコア440に渡される。コア432とコア440との間のR相互接続は、キャッシュ内のデータについてヒットまたはミスがあるかどうかについて設定されたサフィックスビット3を有するキャッシュインデックスを通過させる。コア440は、サフィックスビット3を読み出すことに基づいて、要求されたデータのキャッシュアドレスがキャッシュモジュール418に存在するかどうかを決定するように構成される。サフィックスビットが、データがキャッシュモジュール418に記憶されていないことを示すミスであることを示す場合、コア440は読み出し要求データ信号を送信するように構成されたコア442に、L個の相互接続上のキャッシュライン長に対するメモリランダムアクセス読み出し要求を送信する。この例ではキャッシュライン長は8バイトであるが、他のキャッシュライン長が使用されてもよい。コア442はデータがキャッシュモジュール418に記憶されていない場合、
図1BのMIOP134およびHBMサブシステム146への接続点のために構成されたコアを通してHBM148からデータを取り出すために、HBMマネージャ416に結合される。要求されたデータがキャッシュモジュール418に格納されている場合、後述するように、データはキャッシュモジュール418から取り出されるように要求される。
【0057】
HBMマネージャ416は、HBMコントローラ146を介して
図1BのHBM148などのオフチップメモリにメモリ要求を送信するためのワイヤコアとして構成されたコア450および452を含む。メモリ要求はコア442によって生成され、データはMIOPおよびHBMサブシステムへの接続点のために構成されたコアから返される。要求されたデータは、HBMマネージャ416を介してHBM148から返される。HBMマネージャ416のワイヤ(Wire)コア450および452は、R相互接続を介して互いに結合される。HBMから読み出されたデータは、ワイヤコア450のR相互接続を介して送られる。ワイヤコア450のR相互接続はバンクアドレステーブルを記憶し、データのためにキャッシュモジュール418内にカスケードバンクアドレスを作成するように構成されたコア454に結合される。L個の相互接続内のデータは、データがキャッシュモジュール418から読み出されているか、データが書き込まれているかを示すサフィックスビットを含む。コア454は、返されたデータを、R相互接続を介してHBM148からキャッシュモジュール418に渡す。コア454は、データがL相互接続を介して書き込まれる場所に対応するキャッシュモジュール418内の作成されたアドレスをキャッシュモジュール418に渡す。返されたデータは、キャッシュメモリモジュール418に書き込むためのアドレスのストリーミングとマージされる。キャッシュアドレスインデックスは、コア430上で更新される。コア432は、アドレスをキャッシュインデックスアドレステーブル内のアドレスと比較することによって、要求されたデータがキャッシュモジュール418内に存在するかどうかを判定する。データがキャッシュ内にない場合(キャッシュミス)、アドレスインデックスは、キャッシュモジュール418に入れられるデータの新しいアドレスに更新される。後続の要求は、キャッシュ内で同じアドレスを見つける(キャッシュヒット)。
【0058】
この例では、キャッシュモジュール418がコア460および462のそれぞれの内部RAMがキャッシュメモリを構成することを可能にするように構成された2つのコア460および462を含む。この例では、2つのコア460および462がそれぞれ4kバイトのキャッシュストレージを可能にする。しかしながら、キャッシュモジュール418内に、より大きなRAMまたはより多くのコアを有することによって、より多くのキャッシュストレージを利用可能にすることができる。この例では、コア460および462のL個の相互接続がアドレスデータを受け付け、書き込まれたデータがR個の相互接続を介して送信または受信され、読み出されたデータがA個の相互接続を介して送信または受信される。
【0059】
キャッシュモジュール418は、要求されたデータ(キャッシュRAMからの既存のデータ、または外部HBMからキャッシュRAMに新たに書き込まれたデータ)を、キャッシュ処理結果を出力するように構成されたコア464に返す。この例では、データメモリとして構成されたコア462からコア464へのL相互接続において、データにヒットしたか、データにミスしたかを示すサフィックスが渡される。外部HBMメモリへのデータアクセスを必要とするミスの場合、アクセスされたデータは、R相互接続を介してコア464に渡される。アクセスされたデータは、後続の計算メモリ要求のための利用可能性のためにキャッシュモジュール418に書き込まれる。ヒットの場合、キャッシュモジュール418からの読み出しデータは、A相互接続を介してコア464に渡される。したがって、データはコア464から、アーキテクチャ400へのデータアクセスを要求したコアにルーティングされる。コア464は、L個の相互接続から読み出されたアドレスのヒットまたはミスを示すサフィックスビットに基づいて、データをルーティングするためのAまたはR個の相互接続のいずれかを選択する。
【0060】
この例では特定のコア466、468、および480はテスト目的のために構成される。テスト目的のために、コア464は、それぞれのR相互接続を介してコア466およびコア468にデータを渡す。コア466は、キャッシュソリューションの出力を期待される出力と比較するように構成される。1の値は、期待される出力値が何であるかに対して、一致に対して設定され、または不一致に対して0の値が設定される。コア468はチェックサム演算を実行し、チェックサムが期待されるデータの適切な送信を示すかどうかを決定するように構成される。チェックサムの結果はコア470を介して、チェックサムの結果を出力するように構成されたコア480に、A相互接続を通過する。チェックサムは比較結果のものである。すべての値は、データ転送の成功を示すために一致することが期待される。コア466、468、および480によって実行されるテスト動作は一般に、アーキテクチャ400の通常のメモリアクセス動作では採用されない。
【0061】
アドレス戻りモジュール420は、キャッシュサフィックスを繰り返すように構成されたコア470と、キャッシュアドレスを繰り返すように構成されたコア472とを含む。したがって、アドレス戻りモジュール420は、キャッシュメモリモジュール418を構成するコア460および462内の位置に対応するアドレスを繰り返す。アドレスは、データがキャッシュヒットであるかキャッシュミスであるかのキャッシュサフィックスビットを含む。一連のアドレスは、キャッシュモジュール418からのデータの書き込みまたは読み出しのために繰り返される。繰り返されるアドレスの数は、キャッシュライン長に基づく。この例ではキャッシュライン長は8バイトであり、したがって、この例では例示的な8kbのキャッシュサイズのために最大1K個のアドレスが作成され得る。リクエストのタイプ(読み取りまたは書き込み)も繰り返される。この例では、サフィックスが、データがキャッシュモジュール418のコアのSRAMから読み出されるか、それともSRAMに書き込まれるかを決定する。
【0062】
要求されたデータ(読み出しまたは書き込みのいずれかのための)がすでにキャッシュモジュール418に記憶されているとコア440が判定した場合、コア440は、R相互接続を介してキャッシュサフィックスを繰り返すように構成されたコア470にアドレスを送信する。サフィックスビットは、コア470からL相互接続を介して、データのキャッシュアドレスを繰り返すように構成されたコア472に渡される。キャッシュインデックスアドレスは、コア470とコア472との間のR相互接続を介してパスされる。要求されたデータを格納するキャッシュモジュール418内のアドレスへのアクセスを可能にするために、サフィックスおよびアドレスの両方がコア470および472によって繰り返される。この例におけるリード(キャッシュヒット)を示すアドレスおよびサフィックスビットは、コア454とコア472との間のL個の相互接続を介してコア454に渡され、キャッシュモジュール418にアクセスする。次いで、所望のデータは、ヒットを示すA相互接続を介して送信され、要求されたデータがキャッシュモジュール418からコア464に読み出される。
【0063】
例示的なキャッシュアーキテクチャ400は、固定セットアップではない。アーキテクチャ400は、ソフトウェア開発者によって、コアのアレイ130内のコアの特定の使用事例および構成に合わせて調整することができる。キャッシュのサイズは、キャッシュモジュール418の一部として追加のコアを構成することによって変更することができる。キャッシュに保持されるデータを追跡する方法は、コア430によって実行されるインデックス計算を変更することによって変更され得る。キャッシュライン長は、追加のコアをキャッシュモジュール418に追加し、追加のコアを収容するためにコア470および472上のアドレス反復量を変更することによって変更することができる。コア454内のバンクアドレステーブルは、キャッシュモジュール418内の追加のコアごとにバンクアドレスを有するように更新される。キャッシュライン長は、HBMメモリ148から要求がどのくらい大きいかを決定する。キャッシュラインの長さを変更すると、アプリケーションのパフォーマンスを最適化できる。
【0064】
図5は、
図4のキャッシュアーキテクチャを含むコアのアレイの例示的な構成500のブロック図である。この例では、コアのアレイ130が第1計算動作のために構成されたコアの第1セット510を含む。コアの第2セット520は、第2計算動作のために構成されている。コア510および520の両方のセットは、上述のコア130のアレイ内の相互接続ネットワークを介してルーティングされた読取りおよび書込みメモリ要求を有し得る。コアのアレイ130は、コアのアレイ130の外部にある高帯域幅メモリ148へのアクセスを可能にする。コアの第1セット510またはコアの第2セット520のいずれかからのメモリアクセス要求は、キャッシュアーキテクチャ400として働くように構成された1つまたは複数のタイルを含み得るキャッシュアーキテクチャ400にルーティングされる。要求されたデータがキャッシュアーキテクチャのキャッシュメモリモジュール内で見つかった場合、コア510および520のそれぞれのセットによって実行されるいずれかの動作のためのデータへのより迅速なアクセスに基づいて、動作実行が合理化される。
【0065】
上記で説明したように、キャッシュアーキテクチャ400は、利用可能なキャッシュメモリのサイズを増加させるために拡張され得る。アクセスはまた、キャッシュライン長のサイズ決定によって増加され得る。これらのパラメータは、計算動作のために構成されるコアの要件に応じて調整され得る。これらのパラメータはまた、リアルタイムで計算機能のために構成されたコアの動作中に調整され得る。例えば、特定の計算機能がより速いメモリアクセスを必要とする場合、構成されたコアは、キャッシュメモリモジュールのための追加のコアを構成することによって、機能の実行中にキャッシュを拡張することができる。典型的にはアプリケーションが既知のタイプのデータに向けられている場合、キャッシュ設計構成はそのようなデータに向けて調整され得る。プログラムの実行の完了後、キャッシュアーキテクチャのコアは、別の目的のために構成され得る。代替的に、キャッシュアーキテクチャは、別のプログラムを実行する別のコアグループのためのキャッシュとして働くことができる。
【0066】
さらに、キャッシュアーキテクチャのために使用されるコアは、計算動作が変化するか、または計算動作のためのコアのセットがそれ自体で再構成されると、他の目的のために再構成され得る。計算動作のために構成されたコアの各セットは代替的に、キャッシュアーキテクチャ400と同様の独自の専用キャッシュアーキテクチャを有し得る。
【0067】
図6のフロー
図600は、コアのアレイ内の例示的なキャッシュアーキテクチャを使用してデータにアクセスするプロセスのための例示的な機械可読命令を表す。この例では、機械可読命令が(a)プロセッサ、(b)コントローラ、および/または(c)1つまたは複数の他の適切な処理デバイスによる実行のためのアルゴリズムを備える。アルゴリズムは、フラッシュメモリ、CD-ROM、フロッピー(登録商標)ディスク、ハードドライブ、デジタルビデオ(多用途)ディスク(DVD)、または他のメモリデバイスなどの有形媒体上に記憶されたソフトウェアで具現化され得る。しかしながら、当業者はアルゴリズム全体および/またはその一部が代替的に、プロセッサ以外のデバイスによって実行され得、および/またはファームウェアもしくは専用ハードウェアにおいてよく知られた方法で具現化され得ることを容易に理解するのであろう(たとえば、それは、特定用途向け集積回路〔ASIC〕、プログラマブル論理デバイス〔PLD〕、フィールドプログラマブル論理デバイス〔FPLD〕、フィールドプログラマブルゲートアレイ〔FPGA〕、ディスクリート論理などによって実装され得る)。例えば、インターフェースの構成要素のいずれか又は全ては、ソフトウエア、ハードウエア、及び/又はファームウエアによって実施することができる。また、フローチャートによって表される機械可読命令の一部または全部は、手動で実装され得る。さらに、例示的なアルゴリズムは
図6に示すフローチャートを参照して説明されるが、例示的な機械可読命令を実装する多くの他の方法が代替的に使用され得ることを、当業者は容易に諒解されよう。例えば、ブロックの実行順序は変更されてもよく、及び/又は、記載されたブロックの一部は変更、削除、又は組み合わせられてもよい。
【0068】
初期ダイレクトメモリアクセスは計算ユニット(600)から受信され、計算ユニットは計算動作を実行するように構成されたコアのアレイ130のコアのセットであり得る。キャッシュアドレスのセットは、データアクセス要求から決定される(612)。次いで、ルーチンは、要求されたデータがキャッシュモジュールに記憶されているかどうかを判定する(614)。データがキャッシュ内に見つからない場合、データはHBMなどの外部メモリから要求される(616)。次いで、データは外部メモリから取り出される(618)。検索されたデータにキャッシュアドレスが割り当てられる(620)。次いで、取り出されたデータは、キャッシュ内のアドレスに書き込まれる(622)。次いで、データは、要求に応答するために返される(624)。
【0069】
データがすでにキャッシュに記憶されている場合(614)、ルーチンはデータのアドレスを取り出す(626)。アドレスはキャッシュに渡され、要求されたデータがキャッシュから読み出される(628)。次いで、要求されたデータは、要求に応答するために出力される(624)。
【0070】
本明細書で使用される用語は特定の実施形態のみを説明するためのものであり、本発明を限定することを意図するものではない。本明細書で使用される場合、単数形「1つの」などは文脈が明らかにそうでないことを示さない限り、複数形も含むことが意図される。さらに、用語「包含する」、「有する」、「持つ」など、またはそれらの変形が詳細な説明および/または特許請求の範囲のいずれかにおいて使用される限りにおいて、そのような用語は、用語「含む」と同様である。
【0071】
別途定義されない限り、本明細書で使用されるすべての用語(技術用語および科学用語を含む)は、当業者によって一般に理解されるのと同じ意味を有する。さらに、一般的に使用される辞書で定義される用語などの用語は関連技術の文脈におけるそれらの意味と一致する意味を有すると解釈されるべきであり、本明細書で明示的に定義されない限り、理想化されたまたは過度に形式的な意味で解釈されない。
【0072】
以上、本発明の様々な実施形態について説明したが、これらは例としてのみ提示されたものであり、限定するものではないことを理解されたい。本発明の精神または範囲から逸脱することなく、本明細書の開示に従って、開示された実施形態に対する多数の変更を行うことができる。したがって、本発明の広さおよび範囲は、上述の実施形態のいずれによっても限定されるべきではない。むしろ、本発明の範囲は、以下の特許請求の範囲およびそれらの均等物に従って定義されるべきである。
【0073】
本発明は1つまたは複数の実装、同等の変更、および修正に関して図示および説明されてきたが、本明細書および添付の図面を読んで理解すると、他の当業者には思い浮かぶか、または知られるのであろう。加えて、本発明の特定の特徴はいくつかの実装形態のうちの1つのみに関して開示されている場合があるが、そのような特徴は任意の所与のまたは特定の用途に対して所望され、かつ有利であり得るように、他の実装形態の1つまたは複数の他の特徴と組み合わされてもよい。
【0074】
例示的な実装1は、グリッド内に配置された同一のコアのアレイのためのキャッシュアーキテクチャであって、各コアは、前記グリッド内の隣接するコアへの相互接続、メモリ、およびアルゴリズム論理ユニットを含み、前記キャッシュアーキテクチャは、計算動作を実行するように構成されたコアの前記アレイの少なくとも1つのコアからデータに対するメモリアクセス要求を受信するように構成された前記アレイの第1コアと、要求されたデータがキャッシュメモリ内に存在するか否かを、前記キャッシュメモリ内のアドレスを含むキャッシュインデックスを介して決定するように構成された前記アレイの第2コアと、前記キャッシュメモリとして構成された前記アレイの第3コアと、を含み、前記第3コアの前記メモリが前記キャッシュメモリとして使用され、前記キャッシュインデックスから要求された前記データのアドレスが前記第3コアに渡され、要求された前記データを出力する。
【0075】
実装2は、前記第3コアの前記メモリと組み合わせて、前記キャッシュメモリとして構成された前記アレイの第4コアのメモリをさらに含む、実装1のキャッシュアーキテクチャであってよい。
【0076】
実装3は、外部メモリを管理するように構成された前記アレイの第4コアをさらに含み、要求された前記データが存在しないとき、要求された前記データが前記外部メモリから前記第3コアに書き込まれる、実装1または2のキャッシュアーキテクチャであってよい。
【0077】
実装4は、前記アドレスのサフィックスは、取り出される前記データが前記キャッシュメモリから取り出されるか、または前記外部メモリから取り出されるかを指定するために使用される、実装3のキャッシュアーキテクチャであってよい。
【0078】
実装5は、前記外部メモリは、高帯域メモリである、実装3に記載のキャッシュアーキテクチャであってよい。
【0079】
実装6は、前記データは、調整可能なキャッシュライン長を有するキャッシュラインを介して取り出される、実装1~5のいずれか1つのキャッシュアーキテクチャであってよい。
【0080】
実装7は、前記アレイ内の前記コアの各々は別のコアの前記対応する第1、第2、および第3チャネルにそれぞれ相互接続され得る第1チャネル、第2チャネル、および第3チャネルを有し、前記第3コアは前記第1チャネル上で要求された前記データのアドレスを受け入れ、前記データが前記外部メモリから書き込まれる場合、要求された前記データを前記第2チャネル上に出力し、前記データが前記キャッシュメモリに記憶されている場合、要求された前記データを前記第3チャネル上に出力する、実装3のキャッシュアーキテクチャであってよい。
【0081】
実装8は、前記第3コアに結合された前記アレイの第4コアをさらに含み、前記第4コアは、計算動作のために構成された前記アレイ内の前記コアのうちの少なくとも前記1つに要求された前記データを返すように構成される、実装1~7のいずれか1つのキャッシュアーキテクチャであってよい。
【0082】
実装9は、少なくとも前記1つのコアは、前記計算機能を実行するように構成されていることに応答して、前記キャッシュメモリとして第4コアを構成する、実装1~8のいずれか1つのキャッシュアーキテクチャであってよい。
【0083】
実装10は、グリッド内に配置されたコアのアレイに対してキャッシュメモリを提供する方法であって、各コアは前記グリッド内の隣接するコアへの相互接続、メモリ、およびアルゴリズム論理ユニットを含み、前記方法は、計算動作を実行するように構成されたコアの前記アレイの少なくとも1つのコアからデータに対するメモリアクセス要求を受信するように前記アレイの第1コアを構成し、要求された前記データがキャッシュメモリ内に存在するかどうかを、前記キャッシュメモリ内のアドレスを含むキャッシュインデックスを介して決定するように、前記アレイの第2コアを構成し、前記アレイの第3コアを前記キャッシュメモリとして構成し、前記第3コアの前記メモリを前記キャッシュメモリとして使用し、要求された前記データのアドレスを、前記キャッシュインデックスから前記第3コアに渡して、要求された前記データを出力する。
【0084】
実装11は、前記第3コアの前記メモリと組み合わせて、前記アレイの第4コアのメモリを前記キャッシュメモリとして構成することをさらに含む、実装10の方法であってよい。
【0085】
実装12は、第4コアを介して外部メモリを管理し、要求された前記データが存在しないとき、前記外部メモリから前記第3コアに前記外部データを書き込む、ことをさらに含む、実装10または11の方法であってよい。
【0086】
実装13は、前記アドレスのサフィックスは、取り出される前記データが前記キャッシュメモリから取り出されるか、または前記外部メモリから取り出されるかを指定するために使用される、実装12の方法であってよい。
【0087】
実装14は、前記外部メモリは、高帯域メモリである、実装12の方法であってよい。
【0088】
実装15は、前記データは、調整可能なキャッシュライン長を有するキャッシュラインを介して取り出される、実装10~14のいずれか1つの方法であってよい。
【0089】
実装16は、前記アレイ内の前記コアの各々が別のコアの対応する前記第1、第2、および第3チャネルにそれぞれ相互接続され得る第1チャネル、第2チャネル、および第3チャネルを有し、前記第3コアが前記第1チャネル上の要求された前記データのアドレスを受け入れ、前記データが前記外部メモリから書き込まれる場合、要求された前記データを前記第2チャネル上に出力し、前記データが前記キャッシュメモリに記憶されている場合、要求された前記データを前記第3チャネル上に出力する、実装12の方法であってよい。
【0090】
実装17は、前記第3コアに結合された前記アレイの第4コアを介して、計算動作のために構成された前記アレイ内の前記コアのうちの少なくとも前記1つに要求された前記データを返すことをさらに含む、実装10~16のいずれか1つの方法であってよい。
【0091】
実装18は、前記計算機能を実行するように構成されていることに応答して、コアの前記アレイの少なくとも前記1つのコアを介して前記キャッシュメモリとして第4コアを構成することをさらに含む、請求項10~17のいずれか1つの方法であってよい。
【0092】
実装19は、オンチップシステムであって、高帯域幅メモリと、相互接続ネットワークに結合されたコアのアレイを含むダイであって、前記相互接続ネットワークが前記高帯域幅メモリへのアクセスを可能にし、コアの前記アレイ内の前記コアの各々が、メモリおよびアルゴリズム論理ユニットを含む、ダイと、を含み、前記アレイの第1コアは、計算動作を実行するように構成されたコアの前記アレイの少なくとも1つのコアからデータに対するメモリアクセス要求を受信するように構成され、前記アレイの第2コアは、要求された前記データがキャッシュメモリ内に存在するか否かを、前記キャッシュメモリ内のアドレスを含むキャッシュインデックスを介して判定するように構成され、前記アレイの第3コアは、前記キャッシュメモリとして構成され、前記第3コアの前記メモリは前記キャッシュメモリとして使用され、前記キャッシュインデックスから要求された前記データのアドレスは要求された前記データを出力するために前記第3コアに渡される。
【0093】
〔関連出願の相互参照〕
本出願は2023年3月15日に出願された米国特許出願第18/184,536号の優先権を主張し、その全体が参照により本明細書に組み込まれる。