(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-02-05
(54)【発明の名称】マルチコア処理およびメモリ配列
(51)【国際特許分類】
G06F 15/173 20060101AFI20240129BHJP
【FI】
G06F15/173 683E
G06F15/173 685M
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2023545945
(86)(22)【出願日】2022-01-29
(85)【翻訳文提出日】2023-08-14
(86)【国際出願番号】 US2022014461
(87)【国際公開番号】W WO2022165285
(87)【国際公開日】2022-08-04
(32)【優先日】2021-01-29
(33)【優先権主張国・地域又は機関】US
(32)【優先日】2022-01-28
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
(71)【出願人】
【識別番号】518363945
【氏名又は名称】ザ トラスティーズ オブ ダートマス カレッジ
(74)【代理人】
【識別番号】100087642
【氏名又は名称】古谷 聡
(74)【代理人】
【識別番号】100082946
【氏名又は名称】大西 昭広
(74)【代理人】
【識別番号】100195693
【氏名又は名称】細井 玲
(72)【発明者】
【氏名】ボーウェン,エリジャー,エフ.ダブリュー.
(72)【発明者】
【氏名】グランジャー,リチャード,エイチ.,ジュニア
【テーマコード(参考)】
5B045
【Fターム(参考)】
5B045BB17
5B045BB29
5B045DD03
5B045DD10
(57)【要約】
本発明は、複数のコア、コア間に分散されたメモリ(コア・ローカルメモリ)を有する一般化された電子コンピュータ・アーキテクチャを提供する。この構成は、予測可能な低遅延メモリ応答時間、並びに1つの特定の演算から別の演算へのメモリの適応性のあるコード供給の流れ(オペレーション・グラフを用いる)を提供する。一具体例において、オペレーション・グラフは、1つ又は複数の入力アドレスの順序付きリストがそれぞれ付随する、一組の数学操作からなる。入力アドレスは、メモリにおける特定のアドレス、グラフにおける他の数学操作に対する参照、又は特定のデータ・ストリームにおける次の項目に対する参照である場合があり、ここで、データ・ストリームは、メモリの連続したブロックにわたるイテレーターである。また、当該構成は、従来のフォン・ノイマン・アーキテクチャに従って、構築/構成されたホストサーバ/PCへ選択的にプラグ接続され得るPCIeドーターカードとしても、パッケージングされ得る。
【選択図】
図3
【特許請求の範囲】
【請求項1】
コンピューティング・システムであって、
複数の処理コアであって、複数の処理コアのそれぞれが、その処理コアと関連付けられたディスクリートの個別のコア・ローカルメモリを有し、そのコア・ローカルメモリは、複数の個別のコア・メモリ対を画定するように、当該処理コアと当該コア・ローカルメモリとの間でデータ転送するように相互接続されている、複数の処理コアと、
前記複数の処理コアのそれぞれとコア・ローカルメモリとの間でそれぞれデータ転送するように、前記コア・メモリ対を互いに相互接続する切り替え構成およびデータバスとを含み、前記コア・メモリ対がそれらの間で転送されるデータのためのキャッシュが実質的にない、コンピューティング・システム。
【請求項2】
前記コア・メモリ対の少なくとも1つが、単一のダイ上に位置する、請求項1に記載のコンピューティング・システム。
【請求項3】
前記処理コアは、オペレーション・グラフを用いて、1つの特定の演算から別の演算へのコア・メモリ対のコード供給の流れを操作するように構築および構成されている、請求項1に記載のコンピューティング・システム。
【請求項4】
前記オペレーション・グラフは、1つ又は複数の入力アドレスの順序付きリストがそれぞれ付随する、一組の数学操作を含む、請求項3に記載のコンピューティング・システム。
【請求項5】
前記入力アドレスは、メモリの特定のアドレス、前記グラフにおける他の数学操作に対する参照、データ・ストリームにおける次の項目に対する参照を含み、前記データ・ストリームは、前記コア・ローカルメモリの連続したブロックにわたって反復される、請求項4に記載のコンピューティング・システム。
【請求項6】
前記コア・メモリ対は、自律モジュール構成により画定される、請求項5に記載のコンピューティング・システム。
【請求項7】
前記コア・メモリ対の少なくとも1つは、別個のダイ上に位置する、請求項1に記載のコンピューティング・システム。
【請求項8】
複数のコア・メモリ対を含むダイは、PCIeドーターカード上に実装され、そのPCIeドーターカードは、従来のフォン・ノイマン・アーキテクチャに従って構築されたホスト・プロセッサを有するホスト・サーバ/PCへ選択的にプラグ接続されるように適合されている、請求項1に記載のコンピューティング・システム。
【請求項9】
前記コア・メモリ対により処理されるプログラム・データ用のコンパイラを更に含み、そのコンパイラは、(a)1つ又は複数の前記コア・メモリ対、及び(b)前記ホスト・プロセッサの少なくとも一方で動作する、請求項1に記載のコンピューティング・システム。
【請求項10】
コンパイル及び計算を開始するように適合された、前記ホスト・プロセッサに対して格納される且つ前記ホスト・プロセッサ上で動作するプログラム・データを更に含む、請求項9に記載のコンピューティング・システム。
【請求項11】
前記ホスト・プロセッサ及び前記コア・メモリ対により実行される演算は、既存のRISCベースの命令セットに基づく、請求項9に記載のコンピューティング・システム。
【請求項12】
オペレーション・グラフは、特定の予め予約された偽りのメモリ・アドレスに対するストア操作を通じて前記コア・メモリ対のそれぞれに伝達される、請求項11に記載のコンピューティング・システム。
【請求項13】
メモリ・コンテンツ及び演算は、標準バス・インターフェースを介して、ホスト・コンピュータ上のフォン・ノイマン・プロセッサからストア操作を通じて前記コア・メモリ対のそれぞれに伝達される、請求項1に記載のコンピューティング・システム。
【請求項14】
前記コア・メモリ対は、オペレーション・グラフに基づいて動作し、前記オペレーション・グラフのソースコードは、(a)SIMD演算を所定の命令セットに書き込まれた演算に変換するプログラム・データ、及び(b)オペレーション・グラフとして再作成される既存のAPIに基づいており、新たなAPIが前記既存のAPIの完全互換品として使用される、請求項1に記載のコンピューティング・システム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、マルチコア構成を用いるコンピュータ処理およびメモリ・アーキテクチャに関する。
【発明の背景】
【0002】
一般的なコンピューティング装置(サーバ、PC、ノート型パソコンなど)は、現状の従来の(例えば)フォン・ノイマン・アーキテクチャを用いて構築される。これは概して、Intel、AMD、Qualcommなどから市販されているような、従来のプロセッサ/CPUで構成される。CPUは、CPUにより実行されるデータ処理用の作業メモリを提供するダイナミックRAM(DRAM)又は同様の「メモリ」構成と相互接続される。初期のフォン・ノイマン設計において、これは、テープ・ドライブ又は磁気コアメモリにより提供された。また、CPUは、算術論理演算ユニット(ALU)及びプロセッサ・レジスタも内蔵する。より具体的には、係るアーキテクチャは、(a)命令レジスタ及びプログラム・カウンタを含む制御装置、(b)データ及び命令を格納するメモリ、(c)(一般に)CPUによって現在、処理されていないデータ用の外部大容量記憶装置、及び(d)入力および出力機構により、特徴付けられる。
【0003】
また、一般的な設計は、プロセッサ・コアが「レジスタ」と呼ばれる幾つかのメモリ・スロット、及び一組の不可分操作からなり、それらの間の関係(フォン・ノイマン・コードにおいて、当該関係は順序付きリストである)を有するコードを備えることも定義する。当該コードは、不可分操作の3つの重要なタイプからなる混合物である。即ち、
(a)「ロード」:メモリ(アドレスAにおける)をレジスタへコピー、
(b)「ストア」:レジスタをメモリへコピー、及び
(c)操作/「数学(計算、演算)」:データをレジスタで操作(例えば、2つの数字を合わせて合計する)
このタイプのアーキテクチャにおいて、操作(演算)は、一般に単一の大量の記憶貯蔵庫(又はアドレス空間)を使用するメモリからロードされなければならない。全ての操作に関して単一の記憶貯蔵庫(メモリ・ストア)を使用することを避けるため、操作がメモリを共用する場合がある制限を定義しなければならない(例えば、メモリを共用できない2つの操作が別個の記憶貯蔵庫を使用する場合がある)。従って、従来のフォン・ノイマン・アーキテクチャは、幾つかの理論的または実際の障害(ネック)に直面し、当該障害には、以下に限定されないが、(a)演算自体が、実質的な処理能力を占めるメモリからロードされなければならず;(b)必要なメモリ・アドレス空間が大量であるという理由で、コンテンツの単なる探索がプロセッサ時間の大きなブロックを消費し、(及びこの待ち時間/遅延中)このアドレスにおけるコンテンツが使用されることができず(米国議会図書館において、無作為に選択された本を棚から取り出すことに類似する);(c)メモリが大量であるという理由で、それがCPU構成と同じシリコンダイ上に適合することができず、従って、CPUとメモリ構成との間の物理的に制約のあるバス(例えば、銅のトレース)インターフェースを必要とする事実を含む。文字通りに最新のアーキテクチャは、高帯域幅の通信をサポートするために十分なワイヤー(配線)を適合させることができない。この一例は、市販されているGDDR6メモリより高い帯域幅である、(「HBM2」として知られている)高帯域幅メモリであり、その理由は、製造プロセスが配線インターフェースの物理的サイズを増大させるように修正されているからである。
【0004】
上記の欠点に基づいて、コンピューティング・プロセッサ/CPUは、スクラッチパッドを効果的に提供する能動的プロセスによって、またすぐに必要とされると予測されるメモリ・コンテンツのコピーを提供する、「キャッシュ」にそれらのトランジスタの実質的量(大抵>90%)を捧げる。特に、キャッシュから読み出すことは、メモリから読み出すことより、かなり速い。しかしながら、要求されたメモリ・コンテンツがキャッシュに無い場合、当該アーキテクチャは、キャッシュを検査するのに費やす時間に加えて、コンテンツを検索して取り出すための全メモリ待ち時間を費やさなければならない。メモリ待ち時間は、アクセスされているデータがキャッシュ中にあるか否かに基づいて異なるので、メモリ待ち時間は、可変となり、予測不可能になる。この予測ができないことは、更なる問題を、コードの書き込みに追加する。その理由は、メモリ・コンテンツが必要とされる際に正確にレジスタに到着するように設計されることができない(当該到着自体は正確に予測されることができないので)からである。キャッシュベースのアーキテクチャに対する欠点は、トランジスタの総数がプロセッサ製造コストにおける重要な要素である点であり、キャッシュは、トランジスタの総数を一桁増加させる。
【0005】
図1は、一例として、一般的なフォン・ノイマン処理構成100を示す。構成100は、データ・キャッシュ構造112により支配され、共通の又は単一のダイ120上に全て例示されている、複数のプロセッサ・コア/CPU110を提供する。コア110の数、及びキャッシュ112のサイズは、シリコンダイのパラメータ及び/又は製造技術の制限内で可変である。特に、メモリ(例えば、DRAM)130は、ダイ120から離れて位置し、適切なバス・アーキテクチャ140を介して相互接続される。
【0006】
非構造化並列処理(例えば、マルチコアCPU及びハイパースレッディング)が、コードの複数のセットを同時に実行し、モノリシックのメモリを共用する。非構造化並列処理は、複数のプロセッサ「コア」を組み合わせることにより、又はコード実行電子回路を単一の製品に統合することにより、1ドル当たりの性能を増大させる。しかしながら、係る非構造化並列処理は、単一のメモリが複数のコアにより使用されているので、メモリのネックから一層悪くなる。単一命令複数データ(「SIMD」)演算(操作、動作)は、複数のデータムに単一の命令を実行することにより、前述の問題を有利に低減する。動作中、SIMDは、メモリ・コンテンツの複数のアドレスに関して命令(単数)を取ってくるために単一のロードを実行する。多くの場合、単一のSIMDロード/ストア操作は、メモリの一層大きな連続した領域で動作し、アーキテクチャが、予測可能なロード/ストア・アドレスを利用することを可能にする(SIMD演算内のみ、演算間に制限された予測可能性がある)。単一のSIMD演算は、複数のコアにわたって並行して実行され得る。同じSIMD演算内でアドレス指定(例えば、アドレスA及びB)されたメモリ・コンテンツが、簡単に構造化された関係(例えば、AはBでのコンピューティングのプロセスにおいて読み出されない、逆もまた同じ)を有するとみなされる。SIMD命令セットの最近の例は、インテルのAVX-512、エヌビディアのCUDA、及びOpenCLである。
【0007】
特に、及び更なる背景として、CUDAは、CUDAが命令セット、コンパイラ、及びより高水準のプログラミング・インターフェースのリストからなるという点で、簡単な命令セットよりも適応性がある。更に、CUDAカーネルは、データの大きなリストで並行して実行され得る命令の長いストリングであり、CUDAは、簡単なSIMDモデルを越える構造化された並列処理を有するとして説明され得る。即ち、CUDAは、並行(パラレル)又は逐次(シーケンシャル)の並列処理(しかし、決して双方ではない)を有する。また、CUDAカーネルは、各入力において並行してN個の演算を実行することができ、CUDAカーネルは、入力Bで実行される後続の演算への入力として、入力Aにおける中間の演算の出力を渡すことができない。代わりに、中間の出力は、メインメモリに書き込まれて、次いで第2のカーネルにより再ロードされなければならない。留意される点は、エヌビディアは最近、低レベルのプログラマが演算を通してデータの任意の流れを指定することを可能にするCUDA Graphsを紹介した(並行または逐次の並列処理に制限されない)。しかしながら、様々な利点にも関わらず、CUDAを利用する、エヌビディアのグラフィックス・プロセッシング・ユニット(GPU)は、これらのグラフ(graphs)を最適に実行することができない。その理由は、それらが依然としてモノリシックのメモリを有するからである。また、不都合なほどに、SIMD(及びCUDA)命令は、簡単で適応性がなさ過ぎるので、最近の多くの並列処理可能なアルゴリズムを効率的に実行できず、コードベース(演算のセット)にわたるデータの流れにおける大部分の制限をキャプチャすることができない。例えば、演算の小さいセットが繰り返し実行する状態になっていることを、前述の任意のアーキテクチャに伝える方法がない。
【0008】
従って、従来技術のコンピューティング・アーキテクチャ及びスキームを扱う関連したデータは、様々な欠点を保有し、SIMDアーキテクチャでさえも、シリアル・プロセッサ(大きなキャッシュ、オフダイ・メモリ、・・)と同じ要素を含むことが多く、そのため、SIMDアーキテクチャは依然として、シリアル・プロセッサのマイナス面の大部分を有する。
【0009】
発明の概要
本発明は、シリコンダイにわたって処理機能およびメモリ機能を効率的に分散させるように、CUDA Graphsのような特定のプログラミング技術を用いた命令の実行を一層最適に可能にするように、コンピュータ・マルチコア分散型メモリ(Multi-Core Distributed Memory:MCDM)アーキテクチャを利用する、コンピュータ・プロセッサ・アーキテクチャ及び関連したメモリを提供することにより、従来技術の欠点を克服する。本技術により、低レベルのプログラマが演算を通してデータの任意の流れを指定することを可能にする(並行または逐次の並列処理に制限されない)。
【0010】
例示的な実施形態において、マルチコア処理システム、並びにプログラミング及び本明細書で使用するための方法は、マルチコア、コア間に分散されたメモリ(コア・ローカルメモリ)を有する汎用電子コンピュータ・アーキテクチャを提供する。この構成は、予測可能な低遅延(低い待ち時間(レイテンシ))メモリ応答時間、並びに1つの特定の演算から別の演算へのメモリの適応性のあるコード供給の流れ(オペレーション(Operation:動作、演算、操作)・グラフを用いる)を提供する。一具体例において、オペレーション・グラフは、1つ又は複数の入力アドレスの順序付きリストがそれぞれ付随する、一組の数学操作からなる。入力アドレスは、メモリにおける特定のアドレス、グラフにおける他の数学操作に対する参照、又は特定のデータ・ストリームにおける次の項目に対する参照である場合があり、ここで、データ・ストリームは、メモリの連続したブロックにわたるイテレーターである。より具体的には、例示的な実施形態に従って、システム及び方法は、コア・ローカルメモリが、上記で組み込まれる国際公開第2019/023500号に説明されるような、「自律モジュール(Autonomous Module)」であるように構成され得る。一実施形態において、当該構成は、キャッシュがなくてもよい。そのため、ローカルメモリは、L1キャッシュ・レイテンシで読み出される。また、当該構成は、従来のフォン・ノイマン・アーキテクチャに従って、構築/構成されたホストサーバ/PCへ選択的にプラグ接続され得るPCIeドーターカードとして、パッケージングされ得る。更に、当該構成のコンパイラは、ホストのプロセッサで動作することができる。ホストに格納され且つ実行されるコードは、コンパイル及び計算を開始するために使用される。また、演算は、既存の(例えば、RISC)命令セットに基づくことができる。そのため、数学操作は、IEEE754のような規格を用いて規定される。演算命令のセットを制限し、低いトランジスタの総数およびハイスループットに対して最適化することにより、ALUを簡略化することに有利であることができる。より小さいALUは明白に、特定のダイに取り付けるコアの数を増加させ、かくして総処理能力を増大させる。オペレーション・グラフは、特定の予め予約された偽りのメモリ・アドレスに対するストア操作を通じてコアに伝達され得る。また、メモリ・コンテンツ及び操作(演算、オペレーション)は、標準(例えば、PCIe)インターフェースを通じて、フォン・ノイマン・プロセッサからマルチコア処理構成に伝達され得る。
【0011】
オペレーション・グラフのソースコードは、変わることができる。例えば、ソフトウェアは、SIMD演算を互換性のある命令セットに書き込まれた演算に変換する。代案として、既存のAPI(例えば、マップリデュース、TensorFlow、NumPy)は、オペレーション・グラフとして再作成されることができ、ユーザは、既存のものの完全互換品としてシステム及び方法の自前のAPIを使用することができる。これら具現化形態は、2進等価数であることができるが、例示的なシステム及び方法の利点に起因して、より効率的に実行することができる。
【0012】
例示的な実施形態において、コンピューティング・システムは、複数の処理コアを含み、複数の処理コアのそれぞれが、その処理コアと関連付けられたディスクリートの個別のコア・ローカルメモリを有し、そのコア・ローカルメモリは、複数の個別のコア・メモリ対を画定するように、当該処理コアと当該コア・ローカルメモリとの間でデータ転送するために潜在的に無制限の帯域幅を提供するように相互接続されている。コア・メモリ対は更に、切り替え構成およびデータバスにより互いに相互接続され、そのデータバスは、全体的なアーキテクチャにおいて様々なコア・メモリ対の間でデータ転送を可能にする。本明細書で定義されたコア・メモリ対は、異なる物理的なインスタンスである必要はないが、むしろダイ上の異なる物理的な場所にあり、それらの間をバスにより相互接続され得る。また、コア・メモリ対は、処理コアのそれぞれとコア・ローカルメモリとの間でそれぞれ転送されるデータのためのキャッシュが実質的にない(現状の従来の(例えば、フォン・ノイマン)プロセッサ/メモリ構成と比べて)。係るキャッシュが実質的にないアーキテクチャは、従来のアーキテクチャと関連した専用の及び/又はより大量のキャッシュに依存せずに(しないで)、全般的に低い待ち時間(低遅延)とハイスループットのメモリI/Oを可能にする。それは更に、それを使用するために選択するアプリケーション・ソフトウェアに対する高い予測可能性のメモリ待ち時間を可能にする。例示的に、コア・メモリ対の少なくとも1つは、単一のダイ又は別個のダイの何れかに位置する。処理コアは、オペレーション・グラフを用いて、1つの特定の演算から別の演算へのコア・メモリ対のコード供給の流れを操作するように構築および構成され得る。オペレーション・グラフは、1つ又は複数の入力アドレスの順序付きリストがそれぞれ付随する、一組の数学操作を含むことができる。また、入力アドレスは、メモリの特定のアドレス、グラフにおける他の数学操作に対する参照、データ・ストリームにおける次の項目に対する参照も含むことができる。そのため、データ・ストリームは、コア・ローカルメモリの連続したブロックにわたって反復され得る。コア・メモリ対は、自律モジュール(以下を参照)構成により画定され得る。複数のコア・メモリ対を含むダイは、PCIeドーターカード上に実装されることができ、そのPCIeドーターカードは、従来のフォン・ノイマン・アーキテクチャに従って構築されたホスト・プロセッサを有するホスト・サーバ/PCへ選択的にプラグ接続されるように適合されている。プログラム・データ用のコンパイラは、コア・メモリ対により処理され得る。そのコンパイラは、(a)1つ又は複数のコア・メモリ対、及び(b)ホスト・プロセッサの少なくとも一方で動作することができる。ホスト・プロセッサに対して格納される且つホスト・プロセッサ上で動作するプログラム・データは、コンパイル及び計算を開始するように適合され得る。コア・メモリ対は、オペレーション・グラフに基づいて動作することができ、オペレーション・グラフのソースコードは、(a)SIMD演算を所定の命令セットに書き込まれた演算に変換するプログラム・データ、及び(b)オペレーション・グラフとして再作成される既存のAPIに基づくことができ、新たなAPIが既存のAPIの完全互換品として使用される。
【0013】
本発明の以下の説明は、添付図面を参照する。
【図面の簡単な説明】
【0014】
【
図1】従来技術のフォン・ノイマン・プロセッサ・アーキテクチャによる、オンダイ・キャッシュ及びオフダイ作業メモリを有する一般的なマルチコア・プロセッサ構成を示すブロック図である。
【0015】
【
図2】例示的な実施形態による、コンピュータ・マルチコア分散型メモリ(MCDM)オンダイ・プロセッサ・アーキテクチャを示すブロック図である。
【0016】
【
図3】単一のASICチップ上に構成された、
図2に示されたプロセッサの例示的な構成を示し、より具体的には、Hツリー・コア間ネットワーク構造を利用する例示的な実施形態を示す図である。
【0017】
【
図4】
図3に示されたような複数のASICチップを有するPCIe準拠のPCカードを示す図である。
【0018】
【
図5】例示的な実施形態のマルチコア処理構成と共に使用するための命令コンパイルの様々な例示的な経路を示す流れ図である。
【0019】
【
図6】擬似コードとして表わされた、例示的な実施形態のマルチコア処理アーキテクチャと共に使用するためのオペレーション・グラフである。
【
図7】代表的な演算におけるデータフローをグラフで示す、例示的な実施形態のマルチコア処理アーキテクチャと共に使用するためのオペレーション・グラフである。
【0020】
詳細な説明
I.設計留意事項。
【0021】
神経形態学的コンピュータは、人間の脳によりインスパイアされた非フォン・ノイマン・アーキテクチャである。脳は、最新のシリコン・プロセッサより実際に100,000倍遅い全身性「クロック速度」(即ち、神経(ニューロン)間のデータ転送)を使用しながら、極度の並列処理で動作する器官である。特に、脳は、計算の場所において別個にではなく、記憶を格納する。実際には、神経形態学的コンピュータは、脳の動作をエミュレートしようとして、様々な構成を利用する。幾つかの構成は、アナログ計算のためにデジタル・トランジスタを避ける。幾つかは、時間にわたってスイッチの従前の状態を格納するように、トランジスタの代わりにメモリスタ又は他の電子構成要素を利用し、及び幾つかは、従来のデジタル・トランジスタを使用するが、複数のコアが順々に/直列(並びに並列)に有線接続されるようにアーキテクチャを再設計する。
【0022】
神経形態学的コンピュータを設計することに関する文脈において、認識されるように、フィールド・プログラマブル・ゲート・アレイ(FPGA)が高性能の並列処理に関してGPUの代替としてますます使用されている。係るFPGAは、プログラム可能な回路であり、それは、多くのプロセス/アルゴリズムがカスタム・ハードウェアに再書き込みされることができ、且つ命令セットへコンパイルされてフォン・ノイマン・プロセッサで実行される代わりに、FPGAで実行されることを意味する。また、FPGAは最大限の柔軟性(適応性)も提供し、特定用途向け集積回路(ASIC)に比べて再設計するのが遙かに容易である。しかしながら、FPGAは、適応性をもたらすという点で、無駄が多く、FPGA回路は一般に、任意の特定の回路設計により使用されない多くの素子を含む。また、不都合なほどに、FPGAは、かなり大きなオンダイ・メモリを構築/可能にするための十分な予備のトランジスタを現時点で備えていない。
【0023】
様々な他の最新の代替のコンピュータ・アーキテクチャは、以下に限定されないが、以下のプラットフォーム、即ち、(a)実質的に安定している(堅固な)メモリ集積化をハイブリッド・アナログ及びデジタル計算に提供するMythic AI(このプラットフォームは、深層学習(例えば、従来のニューラル・ネットワーク(CNN))、訓練および/またはエンタープライズ・スケール・リアルタイム試験において、GPUの性能を上回るように設計される)、(b)Wave ComputingのTriton AI(MIPS/RISC)、(c)アマゾンのAWS Inferentia、(d)グーグルのTensor Processing Unit、(e)ARM Ethos Machine Learning Processor、(f)インテルのHabana(事前に訓練された深層回路網をリアルタイムの埋め込み設定で実行するように設計されている)、(g)インテルのMovidius Vision Processing Unit(Intel Neural Compute Stick 2)、(h)アップルのBionicチップ、及び(i)ARMのTrilliumを含む。同様に、以下の技術が本明細書で検討される問題での背景として提供され、それらは参照により本明細書に組み込まれ、即ち、「PARALLEL PROCESSING COMPUTERSYSTEMS WITH REDUCED POWER CONSUMPTION AND METHODS FOR PROVIDING THE SAME」と題する米国特許第8200992号、「SYSTEM AND METHOD FOR ACHIEVING IMPROVEDACCURACY FROM EFFICIENT COMPUTER ARCHITECTURES」と題する米国特許第8209597号、「PARALLEL PROCESSING COMPUTER SYSTEMS WITH REDUCED POWERCONSUMPTION AND METHODS FOR PROVIDING THE SAME」と題する米国特許第9281026号、及び「ENTITLED COMPUTER-IMPLEMENTED PERCEPTUAL APPARATUS」と題する国際公開第2019/023500号である。
【0024】
II.マルチコア・プロセッサ及びメモリ構成。
【0025】
図2を参照すると、
図2は、例示的な実施形態による、直接的に接続(バス212)されたメモリ230により、それぞれ支配される複数のCPUコア210を含み、それらの全てが同じディスクリートのシリコン(半導体)ダイ240上に製造されている、マルチコア分散型メモリ(MCDM)及び関連したプロセッサ・アーキテクチャのための一般化された構成200を示す。留意される点は、係るメモリ構成は、「コア・ローカルメモリ」とも呼ばれ得る。プロセッサとメモリの対210、230は、別個に提供される。後述されるように、当該対210、230は、ディスク・ドライブ及び/又はソリッド・ステート・ストレージのような外部記憶装置との相互接続を可能にするPCI Express(PCIe)のような、適切な外部バス・アーキテクチャに対する適切なオンダイ切り替え(スイッチング、交換)構成により、結合され得る。後述されるように、プロセッサとコア・ローカルメモリを対にすることは、バス相互接続に基づくことができ、ダイ上の物理的な近接性に基づかない。
【0026】
留意される点は、プロセッサ・コア及びメモリ構成は、例示的な実施形態において単一のダイ上に示されるが、代替の具現化形態において、プロセッサ・コア及びメモリは、別個のダイ又はチップに設けられ得ることが明確に企図されている。代替の具現化形態において、各コアは、チップ(単数)又はダイ(単数)上に設けられることができ、実質的に無制限の帯域幅を有する物理的な((例えば)バス212の形態のワイヤ・トレース)インターフェースが、コアとメモリとの間に有線接続され得る。従って、本説明は、係る構成を含むように広く解釈されるべきであり、用語「無制限の帯域幅」は、接続された構成要素が転送されたデータを処理することができる限り、コアとメモリとの間でデータを効果的に転送する、コアとメモリとの間のオンダイ接続またはオフダイ接続を意味するように解釈されるべきである。
【0027】
図3を参照すると、
図2の原理に従って構築された全体としてのマルチコアASIC300が更に詳細に示される。このASICは、製造のための単一のチップ又はダイを表わす。図示されたASIC300は、制限しない例として、(例えば)4つのクラスターに構成されて示され、それぞれがスイッチ・アーキテクチャ320により支配される複数の(例えば、32個)ディスクリートのCPU及びメモリの対310を含む。4個のCPU/コア・ローカルメモリ対からなるクラスターは、別の第2のレベルのスイッチ・アーキテクチャ330により支配される。当該スイッチにより、様々なコアが、演算の実行のために所定の順序でアクセスされることを可能にする。第2のレベルのスイッチ330は、コアデータをPCIeバス標準に適応させるPCIeブリッジ・アーキテクチャ340に相互接続され、バス350を介してオフチップの通信を可能にする。留意される点は、本明細書の例示的な実施形態は、Hツリー・コア間ネットワーク構造を利用する。代替の実施形態において、NoCスイッチを利用しない(NoCスイッチがない)構造を含む、他のネットワーク構造が利用され得る。
【0028】
ASIC300は、従来の技術またはカスタム技術に従って構築され、及び
図4に示された処理印刷回路(PC)ドーターカード400の一部であることができる。図示されたように、例示的なカードは、サードパーティのPCIe4.0スイッチを用いて、共通(銅)PCIバス接続により、全て接続された少なくとも20個のASIC300を保持する。当該スイッチは、従来の構成を用いて適切な(例えば)マザーボードベースのカード・スロットと相互接続する複数のコンタクト・パッド(図示せず)を有する接続タブ420に相互接続する。マザーボードは、全体的な処理動作を連係して働かせ且つ入力/出力装置(例えば、ディスプレイ、グラフィカル・ユーザ・インターフェース(GUI)など)と通信するメインプロセッサ又はCPUを含むことができる。このように、カード400は、従来のサーバ又はカスタム・サーバにおいて高オーバーヘッド動作を実行するためのプロセッサのバンクの1つであることができる。
【0029】
III.動作。
【0030】
図5を参照すると、
図5は、例示的な実施形態による、CPU及びプロセッサ構成と共に使用するための様々な命令コンパイルを示す。第1のコンパイル510は、既存のアーキテクチャ/ユーザ・アプリケーション・コード512からSIMD命令514を利用し、当該SIMD命令514は、オペレーション・グラフ・プラス・カスタム・コード540をカスタム・コアASIC544の一意のアーキテクチャに適合させるカスタム・コンパイラ542を用いて、当該カスタムコード540へ直接的に翻訳される。
【0031】
第2の変化形520において、ユーザ・アプリケーション・コード522に基づいて、サードパーティ・ライブラリ524が、カスタム・コード(ライブラリ)526に再実装される。これらの再実装は、コンパイラ542により作用される完全互換品としての機能を果たす。
【0032】
第3の変化形530において、プログラマのユーザは、特に例示的なマルチコア・アーキテクチャ544のためのプログラミング・ソフトウェア・コード532を書くことができ、ユーザ自身のカスタム・オペレーション・グラフ534を設計することができる。結果としてのコード・ライブラリ536及びグラフ534は、コンパイラ542に提供される。この手法は、最高の柔軟性(適応性)および性能を提供するが、競合アーキテクチャとのユーザ互換性が僅かに劣る。
【0033】
カスタムCPUコア544は、それらのデータを、バス・アーキテクチャ上のカスタム・デバイス・ドライバ560を通じて、ホスト・コンピュータのCPU570に転送し、当該CPU570は、コア544に関するデータを処理するように適合された関連ホスト・コード572を演算する。ホスト570は、ホスト・コード572の一部として、又はホスト・コード572と連係して、コンパイラ542を局所的に動作させることができる。
【0034】
図6及び
図7を簡単に参照すると、典型的な動作(演算)におけるコアを介したデータの基本的な流れが示される。従って、
図6は、擬似コード表現600を定義し、
図7は、データの流れの対応するデータ・グラフ700を定義する。特に、
図7において、2つのデータム、データ1(710)及びデータ2(712)がマルチプレクサ機能(関数)720に提供されるが、データ2はバッファ730にも提供される。次いで、マルチプレクサ720の値およびバッファの値が加算(740)されて、最終出力750を生成する。
【0035】
更なる考察として、及びまた上記の要約として、例示的な実施形態は、複数のコア、コア間に分散されたメモリ(コア・ローカルメモリ)を有する一般化された電子コンピュータ・アーキテクチャを提供する。この構成は、予測可能な低遅延メモリ応答時間、並びに1つの特定の演算から別の演算へのメモリの適応性のあるコード供給の流れ(オペレーション・グラフを用いる)を提供する。一具体例において、オペレーション・グラフは、1つ又は複数の入力アドレスの順序付きリストがそれぞれ付随する、一組の数学操作からなる。入力アドレスは、メモリにおける特定のアドレス、グラフにおける他の数学操作に対する参照、又は特定のデータ・ストリームにおける次の項目に対する参照である場合があり、ここで、データ・ストリームは、メモリの連続したブロックにわたるイテレーターである。より具体的には、例示的な実施形態に従って、システム及び方法は、コア・ローカルメモリが、上記で組み込まれる国際公開第2019/023500号に説明されるような、「自律モジュール(Autonomous Module)」である。一実施形態において、当該構成は、キャッシュが実質的になくてもよい。一般に、自律モジュール(AM)は、メモリバンクが、プロセッサ・コア演算に無関係に更新されることを可能にする処理構成である。メモリの値は、AMの自律型メモリ演算子(Autonomous Memory Operator:AMO)に入力を送ることにより、入力のコンテキストにおいて更新される得る。次いで、自律型メモリ演算子は、メモリバンクから関連データをフェッチし、入力値のコンテキストにおいてそれを更新し、その結果をメモリバンクに送り返す場合がある。更に、それは、計算の結果に応答して、メモリに保持された他のデータに対する更新を実行する場合がある。例えば、FPGAに具現化された自律モジュールは、無数の異なるタスクを実行し、且つGPUと異なり、データがメモリにまだ順序づけされていない場合でも良好に実行するようにプログラミングされ得る。
【0036】
本明細書で使用される限り、用語「キャッシュが実質的にない」は、処理コアと本明細書の個々のコア・ローカルメモリ(データメモリ)との間のバス(又は他のデータ転送導管)に沿った、有効な及び/又は専用のキャッシュデータ記憶装置を持っていないアーキテクチャを意図するように定義されることができ、より具体的には、現状の従来の処理および記憶アーキテクチャにおいて、プロセッサ(単数または複数)とメモリ(単数または複数)との間のデータ転送をサポートするために必要な量より、かなり低い記憶域を有する。留意する点は、本明細書で定義されたコア・メモリ対は、異なる物理的なインスタンスである必要はないが、むしろダイ上の異なる物理的な場所にあり、それらの間をバスにより相互接続され得る。多くの従来のコンピュータ処理アーキテクチャにおいて、オンダイのトランジスタの約90%がキャッシュメモリに割り当てられており、本実施形態(単数または複数)のキャッシュが実質的にない構成は、係る構造を取り除き、付随する電力需要を引き下げ、又はダイの所与の領域上により多くのコアを可能にする。より具体的には、キャッシュが実質的にない構成が、より少ない構成要素、及びシステムを介した、より予測可能なデータの流れと共に、概してより簡素/より容易な回路設計を提供するという点で、本明細書のアーキテクチャは有利に、コア当たりの製造コストを低減する。また、この予測可能性は、現状の従来のキャッシュ依存システムと比べた際に、本明細書のアーキテクチャに対する最適なプログラミング・コードのより容易な作成も可能にする。
【0037】
そのため、ローカルメモリは、L1キャッシュ・レイテンシで読み出される。また、当該構成は、従来のフォン・ノイマン・アーキテクチャに従って、構築/構成されたホストサーバ/PCへ選択的にプラグ接続され得るPCIeドーターカードとして、パッケージングされ得る。更に、当該構成のコンパイラは、ホストのプロセッサで動作することができる。代案として、コンパイラはインスタンス化されることができ、且つ本明細書のシステムを具体化するドーターカード(単数または複数)上で全体的に又は部分的に動作することができることが明確に意図されている。ホストに格納され且つ実行されるコードは、コンパイル及び計算を開始するために使用される。また、演算は、既存の(例えば、RISC)命令セットに基づくことができる。そのため、数学操作は、IEEE754のような規格を用いて規定される。オペレーション・グラフは、特定の予め予約された偽りのメモリ・アドレスに対するストア操作(演算)を通じてコアに伝達され得る。また、メモリ・コンテンツ及び演算(オペレーション)は、標準(例えば、PCIe)インターフェースを通じて、フォン・ノイマン・プロセッサからマルチコア処理構成に伝達され得る。
【0038】
例示的な実施形態において、オペレーション・グラフのソースコードは、変わることができる。例えば、ソフトウェアは、SIMD演算を我々の命令セットに書き込まれた演算に変換する。代案として、既存のAPI(例えば、マップリデュース、TensorFlow、NumPy)は、オペレーション・グラフとして再作成されることができ、ユーザは、既存のものの完全互換品としてシステム及び方法の自前のAPIを使用することができる。これら具現化形態は、2進等価数であることができるが、例示的なシステム及び方法の利点に起因して、より効率的に実行することができる。
【0039】
IV.結び。
【0040】
明らかであるように、上述したマルチコア及びメモリのアーキテクチャ、並びに関連したプログラム命令は、係る並列設計の利用可能な電力を完全に利用する高度に拡張可能で安定したコンピューティング環境を可能にする。この構成は、PCIeのような、利用可能な商用のバス・アーキテクチャ及びカードスロットを用いて、既存のホスト・コンピュータに適応可能であることができる。当該構成は、既存の半導体およびプリント基板製造技術を用いて製造され得る。
【0041】
上記は、本発明の例示的な実施形態の詳細な説明である。様々な変形態様および追加が、本発明の思想および範囲から逸脱せずに行われ得る。上述された様々な実施形態のそれぞれの特徴は、関連した新たな実施形態における特徴の組み合わせの多様性を提供するように、必要に応じて、他の説明された実施形態の特徴と組み合わされる場合がある。更に、上記は、本発明の装置および方法の多数の別個の実施形態を説明するが、本明細書で説明されたことは、本発明の原理に関する応用形態の単なる例示である。例えば、本明細書で使用される限り、用語「プロセス(処理)」及び/又は「プロセッサ」は、機能(関数)及び構成要素に基づいた様々な電子ハードウェア及び/又はソフトウェアを含むように広く解釈されるべきである(代替的に、機能「モジュール」又は「要素」と呼ばれ得る)。更に、図示されたプロセス又はプロセッサは、他のプロセス及び/又はプロセッサと組み合わされ得る、又は様々なサブプロセス又はサブプロセッサへ分割され得る。係るサブプロセス及び/又はサブプロセッサは、本明細書の実施形態に従って、様々に組み合わせられ得る。同様に、本明細書の任意の関数(機能)、プロセス及び/又はプロセッサは、電子ハードウェア、プログラム命令の持続性コンピュータ可読媒体からなるソフトウェア、又はハードウェアとソフトウェアの組み合わせを用いて、実現され得る。更に、本明細書で使用される限り、「垂直」、「水平」、「上」、「下」、「底部」、「頂部」、「側部」、「正面」、「背面」、「左側」、「右側」などのような様々な方向性および配置の用語は、重力の作用方向のような、固定座標空間に対して絶対的な方向/配置としてではなく、相対的な取り決めとしてのみ使用される。更に、用語「実質的に」又は「約」は、所与の測定値、値または特性に対して利用され、所望の結果を達成するための通常の動作範囲内にある数量を意味するが、システムの許容誤差(例えば、1%~5%)の範囲内にある固有の不正確さ及び誤差に起因した何らかのバラツキを含む。従って、本説明は、単なる例示として解釈されることが意図されており、その他の点で本発明の範囲を制限することは意図されていない。
【国際調査報告】