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

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

▶ インテル・コーポレーションの特許一覧

特許7581605メモリ内で計算操作を実行するためのスケーラブルなアーキテクチャを提供するための技術
<>
  • 特許-メモリ内で計算操作を実行するためのスケーラブルなアーキテクチャを提供するための技術 図1
  • 特許-メモリ内で計算操作を実行するためのスケーラブルなアーキテクチャを提供するための技術 図2
  • 特許-メモリ内で計算操作を実行するためのスケーラブルなアーキテクチャを提供するための技術 図3
  • 特許-メモリ内で計算操作を実行するためのスケーラブルなアーキテクチャを提供するための技術 図4
  • 特許-メモリ内で計算操作を実行するためのスケーラブルなアーキテクチャを提供するための技術 図5
  • 特許-メモリ内で計算操作を実行するためのスケーラブルなアーキテクチャを提供するための技術 図6
  • 特許-メモリ内で計算操作を実行するためのスケーラブルなアーキテクチャを提供するための技術 図7
  • 特許-メモリ内で計算操作を実行するためのスケーラブルなアーキテクチャを提供するための技術 図8
  • 特許-メモリ内で計算操作を実行するためのスケーラブルなアーキテクチャを提供するための技術 図9
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-11-05
(45)【発行日】2024-11-13
(54)【発明の名称】メモリ内で計算操作を実行するためのスケーラブルなアーキテクチャを提供するための技術
(51)【国際特許分類】
   G06F 9/34 20180101AFI20241106BHJP
   G06F 12/02 20060101ALI20241106BHJP
   G06F 12/04 20060101ALI20241106BHJP
   G06F 12/06 20060101ALI20241106BHJP
   G06F 9/38 20180101ALI20241106BHJP
   G06F 17/16 20060101ALI20241106BHJP
【FI】
G06F9/34 350Z
G06F12/02 580H
G06F12/04 520B
G06F12/06 520D
G06F9/38 370C
G06F17/16 B
G06F17/16 K
【請求項の数】 26
【外国語出願】
(21)【出願番号】P 2020013821
(22)【出願日】2020-01-30
(65)【公開番号】P2020166828
(43)【公開日】2020-10-08
【審査請求日】2023-01-25
(31)【優先権主張番号】16/368,983
(32)【優先日】2019-03-29
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】591003943
【氏名又は名称】インテル・コーポレーション
(74)【代理人】
【識別番号】110000877
【氏名又は名称】弁理士法人RYUKA国際特許事務所
(72)【発明者】
【氏名】冨嶋 茂樹
(72)【発明者】
【氏名】スリカンス スリニバサン
(72)【発明者】
【氏名】チェタン チャウハン
(72)【発明者】
【氏名】ラジェシュ サンダラム
(72)【発明者】
【氏名】ジャワド ビー. ハン
【審査官】坂東 博司
(56)【参考文献】
【文献】米国特許出願公開第2015/0199266(US,A1)
【文献】国際公開第2017/171769(WO,A1)
【文献】米国特許出願公開第2018/0150372(US,A1)
【文献】米国特許出願公開第2012/0208619(US,A1)
【文献】米国特許出願公開第2016/0156855(US,A1)
【文献】米国特許出願公開第2007/0192571(US,A1)
【文献】特開2001-043198(JP,A)
【文献】特開2011-048834(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 9/34
G06F 12/02
G06F 12/04
G06F 12/06
G06F 9/38
G06F 17/16
(57)【特許請求の範囲】
【請求項1】
メモリ媒体に結合された媒体アクセス回路を備えるメモリであって、
前記媒体アクセス回路は、前記メモリ媒体の異なるパーティションと関連付けられた複数の計算論理ユニットを含み、
前記複数の計算論理ユニットのうちの一つによって、要求された演算を実行するために前記メモリ媒体の対応する前記パーティションからデータにアクセスし、
前記複数の計算論理ユニットのうちの前記一つによって、アクセスされた前記データを前記複数の計算論理ユニットのうちの他の計算論理ユニットにブロードキャストし、
前記媒体アクセス回路に含まれる前記複数の計算論理ユニットの各々を用いて、前記アクセスされたデータに対して、前記要求された演算の異なる部分並行して実行し、かつ
前記複数の計算論理ユニットの各々によって実行された前記要求された演算の前記異なる部分の実行から生成されたそれぞれの結果データを前記メモリ媒体に書き込む、
メモリ。
【請求項2】
前記媒体アクセス回路は、前記複数の計算論理ユニットに接続され、各々が複数の前記パーティションの一つに対応して設けられた複数のスクラッチパッドを含み、
前記複数の計算論理ユニットのうちの前記一つは、アクセスされた前記データを複数のスクラッチパッドのうち、前記複数の計算論理ユニットのうちの前記他の計算論理ユニットに接続されたスクラッチパッドにブロードキャストすることによって、アクセスされた前記データを前記他の計算論理ユニットにブロードキャストし、
前記複数の計算論理ユニットは、前記要求された演算の前記異なる部分の実行から生成されたそれぞれの結果データを自身に対応するスクラッチパッドに書き込む、
請求項1に記載のメモリ。
【請求項3】
複数の計算論理ユニットの各々を用いて前記要求された演算を実行することは、ダイまたはパッケージ内に配置された複数の計算論理ユニットの各々を用いて、前記要求された演算を実行することを含む、請求項1または2に記載のメモリ。
【請求項4】
複数の計算論理ユニットの各々を用いて前記要求された演算を実行することは、デュアルインラインメモリモジュールの複数のダイまたはパッケージ内に配置された複数の計算論理ユニットの各々を用いて、前記要求された演算を実行することを含む、請求項1から3の何れか一項に記載のメモリ。
【請求項5】
複数の計算論理ユニットの各々を用いて前記要求された演算を実行することは、複数のデュアルインラインメモリモジュールに亘って分散された複数の計算論理ユニットの各々を用いて、前記要求された演算を実行することを含む、請求項1から4の何れか一項に記載のメモリ。
【請求項6】
前記メモリ媒体からデータにアクセスすることは、前記メモリ媒体の複数のパーティションから前記データを読み出すことを含む、請求項1から5の何れか一項に記載のメモリ。
【請求項7】
前記メモリ媒体からデータにアクセスすることは、前記複数のパーティションの各々と関連付けられたスクラッチパッドに前記データを読み込むことを含む、請求項6に記載のメモリ。
【請求項8】
前記データをスクラッチパッドに読み込むことは、前記データを前記媒体アクセス回路のレジスタファイルまたはスタティックランダムアクセスメモリに読み込むことを含む、請求項7に記載のメモリ。
【請求項9】
前記メモリ媒体からデータにアクセスすることは、3次元クロスポイントアーキテクチャを有するメモリ媒体からデータにアクセスすることを含む、請求項1から8の何れか一項に記載のメモリ。
【請求項10】
前記要求された演算を実行することは、テンソル演算を実行することを含む、請求項1から9の何れか一項に記載のメモリ。
【請求項11】
前記要求された演算を実行することは、行列乗算演算を実行することを含む、請求項1から10の何れか一項に記載のメモリ。
【請求項12】
アクセスされた前記データは、入力行列内の行列データ及び重み行列内の行列データを含み、
前記結果データは、前記入力行列を前記重み行列で乗じることで得られる出力行列内の行列データを含む、請求項10または11に記載のメモリ。
【請求項13】
前記要求された演算を実行することは、前記アクセスされたデータに対してビット単位の演算を実行することを含む、請求項1から12の何れか一項に記載のメモリ。
【請求項14】
前記媒体アクセス回路は更に、前記要求された演算の完了を示すデータを提供する、請求項1から13の何れか一項に記載のメモリ。
【請求項15】
メモリであって、
前記メモリに含まれる媒体アクセス回路が有する、メモリ媒体の異なるパーティションと関連付けられた複数の計算論理ユニットのうちの一つによって、要求された演算を実行するために、前記媒体アクセス回路に結合された前記メモリ媒体の対応する前記パーティションからデータにアクセスするための手段と、
前記複数の計算論理ユニットのうちの前記一つによって、アクセスされた前記データを前記複数の計算論理ユニットのうちの他の計算論理ユニットにブロードキャストするための手段と、
前記媒体アクセス回路内の前記複数の計算論理ユニットの各々が、前記アクセスされたデータに対して、前記要求された演算の異なる部分並行して実行するための手段と、
前記媒体アクセス回路が、前記複数の計算論理ユニットの各々によって実行された前記要求された演算の前記異なる部分の実行から生成されたそれぞれの結果データを前記メモリ媒体に書き込むための手段と
を備えるメモリ。
【請求項16】
複数の計算論理ユニットの各々が、前記要求された演算を実行するための前記手段は、
前記メモリ媒体の異なるパーティションと関連付けられた複数の計算論理ユニットが、前記要求された演算を実行するための手段
を有する、請求項15に記載のメモリ。
【請求項17】
複数の計算論理ユニットの各々が、前記要求された演算を実行するための前記手段は、
ダイまたはパッケージ内に配置された複数の計算論理ユニットの各々が、前記要求された演算を実行するための手段
を有する、請求項15または16に記載のメモリ。
【請求項18】
複数の計算論理ユニットの各々が、前記要求された演算を実行するための前記手段は、
デュアルインラインメモリモジュールの複数のダイまたはパッケージ内に配置された複数の計算論理ユニットの各々が、前記要求された演算を実行するための手段
を有する、請求項15から17の何れか一項に記載のメモリ。
【請求項19】
複数の計算論理ユニットの各々が、前記要求された演算を実行するための前記手段は、
複数のデュアルインラインメモリモジュールに亘って分散された複数の計算論理ユニットの各々が、前記要求された演算を実行するための手段
を有する、請求項15から18の何れか一項に記載のメモリ。
【請求項20】
前記メモリ媒体からデータにアクセスするための前記手段は、
前記メモリ媒体の複数のパーティションから前記データを読み出すための手段
を有する、請求項15から19の何れか一項に記載のメモリ。
【請求項21】
前記メモリ媒体からデータにアクセスするための前記手段は、
前記複数のパーティションの各々と関連付けられたスクラッチパッドに前記データを読み込むための手段
を有する、請求項20に記載のメモリ。
【請求項22】
スクラッチパッドに前記データを読み込むための前記手段は、
前記媒体アクセス回路のレジスタファイルまたはスタティックランダムアクセスメモリに前記データを読み込むための手段
を含む、請求項21に記載のメモリ。
【請求項23】
前記メモリ媒体からデータにアクセスするための前記手段は、
3次元クロスポイントアーキテクチャを有するメモリ媒体からデータにアクセスするための手段
を有する、請求項15から22の何れか一項に記載のメモリ。
【請求項24】
前記要求された演算を実行するための前記手段は、
テンソル演算を実行するための手段
を有する、請求項15から23の何れか一項に記載のメモリ。
【請求項25】
メモリ媒体に含まれる媒体アクセス回路に、
前記媒体アクセス回路が有する、前記メモリ媒体の異なるパーティションと関連付けられた複数の計算論理ユニットのうちの一つによって、要求された演算を実行するために前記メモリ媒体の対応する前記パーティションからデータにアクセスする手順と、
前記複数の計算論理ユニットのうちの前記一つによって、アクセスされた前記データを前記複数の計算論理ユニットのうちの他の計算論理ユニットにブロードキャストする手順と、
前記媒体アクセス回路に含まれる前記複数の計算論理ユニットの各々を用いて、前記アクセスされたデータに対して、前記要求された演算の異なる部分並行して実行する手順と、
前記複数の計算論理ユニットの各々によって実行された前記要求された演算の前記異なる部分の実行から生成されたそれぞれの結果データを前記メモリ媒体に書き込む手順と
を実行させるためのプログラム。
【請求項26】
請求項25に記載のプログラムを記憶する機械可読記憶媒体。
【発明の詳細な説明】
【背景技術】
【0001】
ニューラルネットワークをトレーニングする、および/または推論(例えば、画像中のオブジェクトを識別すること、音声認識を実行すること等)を行うためにニューラルネットワークを使用するアプリケーションなどの人工知能アプリケーションは、典型的には、行列データに対するテンソル演算(例えば、行列乗算などの行列計算)を実行するために、比較的大量の計算能力を使用する。いくつかの計算装置においては、人工知能アプリケーションをサポートするための計算操作は、汎用プロセッサから画像処理装置(GPU)などのアクセラレータ機器にオフロードされ得る。しかしながら、GPUはプロセッサより高速にテンソル演算を実行できる場合があるものの、演算されるデータ(例えば、行列データ)がメモリに常駐し、メモリからバスを介して計算操作を実行する装置(例えば、GPU)に送信され、時間およびエネルギーを消費するという事実によって、計算装置がその演算を実行できる効率(例えば、エネルギー使用および速度)は依然として損なわれる。演算されるデータの複雑さおよび量が増すにつれて(例えば、ますます複雑化する人工知能アプリケーションに伴い)、既存のシステムのエネルギー使用および速度の観点からの非効率性は、それに対応して増大し得る。
【図面の簡単な説明】
【0002】
本明細書で説明される概念は、添付図面において限定としてではなく例として示される。例示の簡潔さおよび明確さのため、図に示される要素は必ずしも縮尺どおりに描かれていない。適切と考えられる場合、参照ラベルは、対応するまたは類似の要素を示すために複数の図で繰り返されている。
【0003】
図1】メモリ内で効率的に計算操作を実行するためのスケーラブルなアーキテクチャを有する計算装置の、少なくとも1つの実施形態の簡略図である。
【0004】
図2図1の計算装置に含まれるメモリ媒体の、少なくとも1つの実施形態の簡略図である。
【0005】
図3図1の計算装置に含まれるメモリ媒体のパーティションおよびメモリの媒体アクセス回路の構成要素の、少なくとも1つの実施形態の簡略図である。
【0006】
図4図1の計算装置に含まれ得る1組のデュアルインラインメモリモジュールの、少なくとも1つの実施形態の簡略図である。
【0007】
図5図1の計算装置のメモリで実行され得るテンソル演算の、少なくとも1つの実施形態の簡略図である。
【0008】
図6図1の計算装置によって実行され得るメモリ内の効率的な計算操作を実行するための方法の、少なくとも1つの実施形態の簡略図である。
図7図1の計算装置によって実行され得るメモリ内の効率的な計算操作を実行するための方法の、少なくとも1つの実施形態の簡略図である。
図8図1の計算装置によって実行され得るメモリ内の効率的な計算操作を実行するための方法の、少なくとも1つの実施形態の簡略図である。
【0009】
図9】パッケージに統合された図1の計算装置のメモリの、2つのダイの簡略図である。
【発明を実施するための形態】
【0010】
本開示の概念は様々な修正形態および代替形態を受け入れる余地があるが、その具体的な実施形態は図面において例として示されており、本明細書で詳細に説明される。しかしながら、本開示の概念を、開示される特定の形式に限定する意図はなく、逆に、その意図は本開示および添付の特許請求の範囲と矛盾しないすべての修正形態、均等物、および代替形態をカバーすることにあることが理解されるべきである。
【0011】
本明細書における「1つの実施形態」、「ある実施形態」、「例示的な実施形態」等への言及は、説明される実施形態が特定の特徴、構造、または特性を含み得るが、あらゆる実施形態がその特定の特徴、構造、または特性を含んでもよいし、必ずしも含まなくてもよいことを示す。また、そのような語句は、必ずしも同じ実施形態を指すものではない。更に、特定の特徴、構造、または特性がある実施形態と関連して説明される場合、明示的に説明されているか否かにかかわらず、他の実施形態と関連してそのような特徴、構造、または特性を達成することは当業者の知識の範囲内であると考えられる。更に、「少なくとも1つのA、B、およびC」の形式で列挙に含まれる項目は、(A)、(B)、(C)、(AおよびB)、(AおよびC)、(BおよびC)、または(A、B、およびC)を意味することがあることが十分理解されるべきである。同様に、「A、B、またはCのうちの少なくとも1つ」の形式で列挙された項目は、(A)、(B)、(C)、(AおよびB)、(AおよびC)、(BおよびC)、または(A、B、およびC)を意味することがある。
【0012】
開示される実施形態は、いくつかの場合、ハードウェア、ファームウェア、ソフトウェア、またはそれらの任意の組み合わせで実施され得る。開示される実施形態は、一時的または非一時的な機械可読(例えば、コンピュー可読)記憶媒体によって保持または記憶された命令として実施されてもよく、命令は1つまたは複数のプロセッサで読み出され実行され得る。機械可読記憶媒体は、機械によって読み取り可能な形式で情報を記憶または伝送するための任意の記憶装置、機構、または他の物理的構造(例えば、揮発性または不揮発性メモリ、媒体ディスク、または他の媒体装置)として具現化され得る。
【0013】
図面において、いくつかの構造的な特徴または方法の特徴が、特定の配置および/または順序で示されることがある。しかしながら、そのような特定の配置および/または順序が必要とされないことがあることが十分理解されるべきである。むしろ、いくつかの実施形態では、そのような特徴は、例示的な図に示されるものとは異なる方法および/または順序で配置され得る。また、特定の図に構造的な特徴または方法の特徴を含めることは、そのような特徴がすべての実施形態で必要とされることを示唆しているわけではなく、いくつかの実施形態では含まれなくてもよく、または他の特徴と組み合わされてもよい。
【0014】
ここで図1を参照すると、メモリ内で人工知能の演算(例えば、テンソル演算)を効率的に実行するための計算装置100は、プロセッサ102、メモリ104、入出力(I/O)サブシステム112、データ記憶装置114、および通信回路122を含む。もちろん、他の実施形態では、計算装置100は、コンピュータで一般的にみられるもののような他のまたは追加の構成要素(例えば、ディスプレイ、周辺装置等)を含んでよい。また、いくつかの実施形態では、これらの例示的な構成要素のうちの1つまたは複数が、別の構成要素に組み込まれるか、または別の構成要素の一部を形成してよい。本明細書で説明されるように、計算装置100、特に計算装置100のメモリ104は、コンピュータ装置100に着脱可能に接続される(例えば、挿入される)よう適合された1つまたは複数の回路基板(例えば、デュアルインラインメモリモジュール(DIMM)160)が各々、メモリ104内に存在するデータに対してテンソル演算(例えば、行列計算)などの計算操作を実行するように構成された計算論理ユニット(例えば、計算論理ユニット136)を有するパッケージ(例えば、各々が1つまたは複数の半導体ダイ190、192の組である)150、152の組を含む、スケーラブルなアーキテクチャを有する。バス経由で他の構成要素(例えば、プロセッサ102)にデータを送信してデータを演算するのではなく、データのより近くで(例えば、メモリ104で)計算操作を実行することによって、計算装置100は演算をより効率的に実行し得る。更に、計算論理ユニット136を有する追加のDIMMまたは同様の回路基板をメモリ104に追加することによって、メモリ104内のデータに対してより複雑な計算操作(例えば、より複雑な人工知能の演算)を実行するための計算装置100の能力は、それに対応して拡張され得る。
【0015】
本明細書でより詳細に説明されるように、例示的な実施形態では、メモリ104は、計算操作を実行するためにメモリ媒体110にアクセスするように構成された媒体アクセス回路108を含む。例示的な実施形態では、メモリ媒体110は、タイルごとに1ビットのアクセスを可能にし、かつ、同じパーティションまたは他のパーティションに対する読み込みまたは書き込み間の時間遅延を招くような、他のメモリアーキテクチャ(例えば、ダイナミックランダムアクセスメモリ(DRAM))とは異なるデータアクセス特性を有する、3次元クロスポイントアーキテクチャを有する。例示的な実施形態では、128ビットが、一度に1つのパーティションから読み出され得る。
【0016】
プロセッサ102は、アプリケーション(例えば、ニューラルネットワークまたは他の機械学習構造を使用して学習および推論し得る人工知能関連のアプリケーション)の実行など、本明細書で説明される演算を実行できる任意の装置または回路(例えば、マルチコアプロセッサ、マイクロコントローラ、もしくは他のプロセッサ、または処理/制御回路)として具現化され得る。いくつかの実施形態では、プロセッサ102は、FPGA、特定用途向け集積回路(ASIC),再構成可能なハードウェアもしくはハードウェア回路、または本明細書で説明される機能の実行を容易にするための他の専門ハードウェアとして具現化されてもよく、それらを含んでもよく、またはそれらに結合されてもよい。
【0017】
メモリ104は、不揮発性メモリ(例えば、2レベルメモリスキームのファーメモリ)を含んでよいが、メモリ媒体110と、メモリ媒体110の下部(例えば、より下の位置)にありメモリ媒体110に結合されている媒体アクセス回路108(例えば、相補型金属酸化膜半導体(CMOS)または他の材料で構成される集積回路などの装置または回路)とを含む。媒体アクセス回路108は、メモリコントローラ106にも接続されるが、メモリコントローラ106は、メモリ媒体110から選択的に読み出しおよび/またはメモリ媒体110に選択的に書き込み、ならびにメモリ媒体110に存在するデータ(例えば、行列データ)に対して計算操作(例えば、テンソル演算)を実行する(例えば、ニューラルネットワークをトレーニングするためおよび/または推論を行うためにテンソル演算に依存する人工知能関連アプリケーションを実行していることがある、プロセッサ102からの要求に応答して)よう構成された任意の装置または回路(例えば、プロセッサ、コプロセッサ、専用回路等)として具現化され得る。図2を簡単に参照すると、例示的な実施形態では、メモリ媒体110は、本明細書ではクロスポイントアーキテクチャ(例えば、メモリセルがワード線とビット線との交差部にあって個々にアドレス可能であり、かつビットストレージがバルク抵抗の変化に基づいているアーキテクチャ)とも呼ばれるタイルアーキテクチャを含み、タイルアーキテクチャでは、各タイル(例えば、メモリセル)は、xパラメータおよびyパラメータ(例えば、行および列)によってアドレス可能である。メモリ媒体110は、複数のパーティションを含み、その各々はタイルアーキテクチャを含む。パーティションは、層202、204、206として積層されて、3次元クロスポイントアーキテクチャ(例えば、インテル3D XPoint(商標)メモリ)を形成してよい。固定サイズの複数ビットデータ構造(例えば、バイト、ワード等)のみがアドレス可能である、典型的なメモリ装置とは異なり、媒体アクセス回路108は、メモリコントローラ106の要求を受けてメモリ媒体110から個々のビットまたは他の単位のデータを読み出すよう構成され、メモリコントローラ106はプロセッサ102からの対応する要求の受信に応答して要求を生成してよい。例示的な実施形態では、128ビットが、所与のパーティションにおいて同時にアクセス(例えば、読み出しまたは書き込み)され得る。
【0018】
図1に戻って参照すると、例示的な実施形態では、媒体アクセス回路108はテンソル論理ユニット130を含み、テンソル論理ユニット130は、テンソル演算などの計算操作の実行を媒体アクセス回路108の他の部分からオフロードするように構成された任意の装置または回路(例えば、CMOS回路)として具現化され得る。例示的な実施形態では、テンソル論理ユニット130は複数のメモリスクラッチパッド132を含み、その各々は、メモリ媒体110から読み出された行列データなどのデータへの比較的高速な(例えば、低レイテンシ)アクセスを提供するために使用可能な任意の装置または回路(例えば、スタティックランダムアクセスメモリ(SRAM)、レジスタファイル等)として具現化され得る。例示的な実施形態では、スクラッチパッド132は、比較的低速なアクセス時間およびより大きな容量を有するメモリ媒体110より高速な、読み込みおよび書き込みアクセス時間を提供する。テンソル論理ユニット130は、誤り訂正符号(ECC)論理ユニット134を更に含んでよく、誤り訂正符号論理ユニット134は、メモリ媒体110から読み出されたデータが誤りを含むか否かを決定し、リード・ソロモン符号またはボーズ・チョードリ・オッケンジェム(BCH)符号などの誤り訂正アルゴリズムを用いていかなる誤りも訂正するように構成された、任意の装置または回路(例えば、再構成可能回路、特定用途向け集積回路(ASIC)等)として具現化され得る。また、例示的な実施形態では、テンソル論理ユニット130は複数の計算論理ユニット136を含み、その各々は、対応するスクラッチパッド132の組内のデータ(例えば、行列データ)に対する計算操作(例えば、テンソル演算)を実行するように構成された任意の装置または回路(例えば、再構成可能回路、ASIC等)として具現化され得る。
【0019】
図3を簡単に参照すると、例示的な実施形態では、メモリ104の構成要素はクラスタ310、320、330に分割される。クラスタ310は、メモリ媒体110の複数のパーティション311と、各々が図1のスクラッチパッド132と同様であるスクラッチパッド312、314、316の組と、図1の計算論理ユニット136と同様である対応する計算論理ユニット318とを有している。同様に、クラスタ320は、メモリ媒体110の別の組のパーティション321と、対応するスクラッチパッド322、324、326の組と、対応する計算論理ユニット328とを含む。クラスタ330も、メモリ媒体110のパーティション331の組と、対応するスクラッチパッド332、334、336の組と、計算論理ユニット338とを含む。いくつかの実施形態では、計算論理ユニット136(例えば、計算論理ユニット318)は、その計算論理ユニット318と関連付けられたパーティション(例えば、パーティション311のうちの1つ)から1つまたは複数の他の計算論理ユニット136に(例えば、これらの他の計算論理ユニット136と関連付けられたスクラッチパッド132に)データの組をブロードキャスト(例えば、提供)してよい。メモリ媒体110の、対応するパーティションの組から読み出されたデータを他のスクラッチパッドにブロードキャストすることによって、媒体アクセス回路108は、行列データを取得するためにメモリ媒体110の所与のセクション(例えば、パーティションの組)がアクセスされなければならない回数を減らす(例えば、読み出し行列データは、同じ行列データをメモリ媒体110から複数回読み出すのではなく、メモリ媒体110から1回読み出された後に複数のスクラッチパッドにブロードキャストされてよい)。更に、対応するスクラッチパッド312、314、316、322、324、326、332、334、336と各々関連付けられた、複数の計算論理ユニット318、328、338を使うことによって、媒体アクセス回路108は、テンソル演算(例えば、行列乗算および累算)の部分を同時に(例えば、並行して)実行し得る。簡略化のため、図3では3つのクラスタ310、320、330が示されているが、クラスタおよび対応するパーティション、スクラッチパッド、ならびに計算論理ユニットの実数は、個々の実施形態に応じて異なってよいことが理解されるべきである。図9を簡単に参照すると、メモリ媒体110はダイ190上に含まれてよく、媒体アクセス回路108はもう1つのダイ192上に含まれてよい。各ダイ190、192は、1組の機能を実行するための回路を定義する半導体ウェハ上のパターンとして具現化され得る。図9に示すように、両ダイ192、192はパッケージ150に一体化されてもよい。パッケージ150は、ダイ190、192を収納する筐体(例えば、金属筐体、プラスチック筐体、ガラス筐体、セラミック筐体等)を含んでよい。他の実施形態では、メモリ媒体110および媒体アクセス回路108は同じダイ上に配置される。
【0020】
図4を簡単に参照すると、デュアルインラインメモリモジュール(DIMM)420、430の組400が示されている。DIMM420は、複数のパッケージ402、404、406、408、410、412、414、および416を含み、各々は図1および図9のパッケージ150と同様である。更に、例示的な実施形態では、各パッケージは64のパーティションを含み、1つの計算論理ユニット136は4つのパーティションの各組に割り当てられる。したがって、8つのパッケージを備えるDIMM(例えば、DIMM420)では、DIMMは128の計算論理ユニット136を有している。メモリ104にもう1つのDIMM(例えば、DIMM430)を追加することによって、更に128の計算論理ユニット136が備えられ、メモリ内の計算能力は2倍になる。したがって、DIMMをメモリ104に連続して追加することによって、メモリ内の計算能力は拡張されることができ、人工知能の演算(例えば、テンソル演算)を効率的に実行するための計算装置100の能力を著しく増大させる。いくつかの実施形態では、DIMM(例えば、DIMM420)は、DIMM420全体がパッケージ(例えば、パッケージ150)と同様の構成要素(例えば、ダイ)の組を有するよう、媒体アクセス回路108を有する1つのダイおよびメモリ媒体110の複数の他のダイを含んでよい。他の実施形態では、1つまたは複数のパッケージ(例えば、パッケージ402、404、406、408、410、412、414、416)はDIMM以外の別の種類の回路基板上に配置されてよい。例えば、パッケージは、計算装置100のユニバーサルシリアルバス(USB)インタフェースに挿入可能な比較的小型の回路基板上に含められ得る。
【0021】
図5を簡単に参照すると、メモリ104によって実行され得る行列乗算(例えば、行列乗法および塁算)演算500の一例が示されている。例示の通り、入力行列A内の行列データは、別の行列B内の行列データ(例えば、畳み込みニューラルネットワークの層のための重みデータ)で乗算され、結果データは出力行列Cに書き込まれる。図5に示す各行列は、媒体アクセス回路108のスクラッチパッド132内に行列データとして一時的に記憶される。いくつかの実施形態では、出力行列Cは、後続のテンソル演算のための入力行列として(例えば、畳み込みニューラルネットワークの後続の層のための出力行列として)使われ得る。
【0022】
図1に戻って参照すると、メモリ104は不揮発性メモリおよび揮発性メモリを含んでよい。不揮発性メモリは、(不揮発メモリに電源が遮断されたとしても)永続的な方法でデータを記憶できる任意の種類のデータストレージとして具現化され得る。例えば、不揮発性メモリは1つまたは複数の不揮発性メモリ装置として具現化され得る。不揮発性メモリ装置は、ビットレベルのアドレス指定能力(例えば、データのバイトまたはそれより大きな他の単位ではなく、データの個々のビットに対し読み出すおよび/または書き込む能力)を可能にするクロスポイントアーキテクチャで構成される1つまたは複数の記憶装置を含んでもよく、3次元(3D)クロスポイントメモリとして例示的に具現化される。いくつかの実施形態では、不揮発性メモリは、カルコゲナイド相変化材料(例えば、カルコゲナイドガラス)を用いる記憶装置、強誘電トランジスタランダムアクセスメモリ(FeTRAM)、ナノワイヤベースの不揮発性メモリ、相変化メモリ(PCM),メモリスタ技術を組み込んだメモリ、磁気抵抗ランダムアクセスメモリ(MRAM)、またはスピン移動トルク(STT)-MRAMの任意の組合せを含む、他の種類のメモリを更に含んでもよい。揮発性メモリは、電力が揮発性メモリに供給される間にデータを記憶することができる、任意の種類のデータストレージとして具現化され得る。例えば、揮発性メモリは1つまたは複数の揮発性記憶装置として具現化され得るし、他の実施形態では他の種類の非持続性データストレージとして具現化され得るという理解のもとに、以降、周期的に揮発性メモリと呼ばれる。揮発性メモリは、上述のアーキテクチャと同様の、ビットレベルのアドレス指定能力を可能にするアーキテクチャを有してもよい。
【0023】
プロセッサ102およびメモリ104は、I/Oサブシステム112を介して計算装置100の他の構成要素に通信可能に結合され、I/Oサブシステム112は、プロセッサ102および/または主メモリ104と計算装置100の他の構成要素との入出力演算を容易にするための回路および/または構成要素として具現化され得る。例えば、I/Oサブシステム112は、メモリコントローラハブ、入出力制御ハブ、集積センサハブ、ファームウェア装置、通信リンク(例えば、ポイントツーポイントリンク、バスリンク、ワイヤ、ケーブル、ライトガイド、プリント回路基板トレース等)、および/または入出力演算を容易にするための他の構成要素およびサブシステムとして具現化され得る、またはそれらを含み得る。いくつかの実施形態では、I/Oサブシステム112はシステムオンチップ(SoC)の一部を形成してもよく、プロセッサ102、主メモリ104、および計算装置100の他の構成要素のうちの1つまたは複数と共に、単一のチップ内に組み込まれてもよい。
【0024】
データ記憶装置114は、例えば、記憶装置および回路、メモリカード、ハードディスクドライブ、ソリッドステートドライブ、または他のデータ記憶装置などの、データの短期または長期の記憶のために構成された任意の種類の装置として具現化され得る。例示的な実施形態では、データ記憶装置114は、メモリコントローラ106と同様のメモリコントローラ116、メモリ媒体110と同様の記憶媒体120、ならびにテンソル論理ユニット130と同様のテンソル論理ユニット140、スクラッチパッド132と同様のスクラッチパッド142、ECC論理ユニット134と同様のECC論理ユニット144、および計算論理ユニット136と同様の計算論理ユニット146を含む、媒体アクセス回路108と同様の媒体アクセス回路118を含む。更に、メモリ104と同様に、記憶媒体120および媒体アクセス回路118は、複数のパッケージ170、172(例えば、各々が1つまたは複数のダイ194、196の組を有する)および複数のDIMM180内に存在してもよい。したがって、例示的な実施形態では、データ記憶装置114(例えば、媒体アクセス回路118)は、記憶媒体120に記憶されたデータ(例えば、行列データ)に対する計算操作(例えば、テンソル演算)を効率的に実行することができ、計算容量は、追加のDIMM180を追加することによって容易に拡張され得る。データ記憶装置114は、データ記憶装置114のためにデータおよびファームウェアコードを記憶するシステムパーティションと、オペレーティングシステムのためにデータファイルおよび実行ファイルを記憶する1つまたは複数のオペレーティングシステムパーティションを含んでもよい。
【0025】
通信回路122は、計算装置100ともう1つの装置との間の、ネットワークを介した通信を可能にできる任意の通信回路、装置、またはその集合として具現化され得る。通信回路122は、そのような通信を達成するために、任意の1つまたは複数の通信技術(例えば、有線または無線通信)および関連するプロトコル(例えば、イーサネット(登録商標)、ブルートゥース(登録商標)、Wi-fi(登録商標)、WiMAX等)を使うよう構成されてもよい。
【0026】
例示的な通信回路122は、ネットワークインタフェースコントローラ(NIC)122を含むが、ネットワークインタフェースコントローラ122はホストファブリックインタフェース(HFI)とも呼ばれることがある。NIC124は、1つまたは複数のアドインボード、ドータカード、ネットワークインタフェースカード、コントローラチップ、チップセット、または別の計算装置と接続するために計算装置100によって使われ得る他の装置として具現化され得る。いくつかの実施形態では、NIC124は、1つまたは複数のプロフェッサを含むシステムオンチップ(SoC)の一部として具現化されても、また、1つまたは複数のプロフェッサを同様に含むマルチチップパッケージに含まれてもよい。いくつかの実施形態では、NIC124は、両方ともNIC124に対してローカルであるローカルプロセッサ(図示せず)および/またはローカルメモリ(図示せず)を含んでもよい。そのような実施形態では、NIC124のローカルプロセッサは、プロセッサ102の機能のうちの1つまたは複数を実行できることがある。追加的または代替的に、そのような実施形態では、NIC124のローカルメモリは、基板レベル、ソケットレベル、チップレベル、および/または他のレベルで、計算装置100の1つまたは複数の構成要素に統合され得る。
【0027】
ここで図6を参照すると、計算装置100は、演算中に、効率的なメモリ内(例えば、メモリ104内)の計算操作を実行するための方法600を実行し得る。方法600は、メモリ104を参照して説明される。しかしながら、方法600は、データ記憶装置114のメモリを使用して追加的または代替的に実行され得ることが理解されるべきである。方法600はブロック602で開始するが、ブロック602では、計算装置100(例えば、メモリ104)は、メモリ104内の効率的な計算操作(例えば、テンソル演算)の実行を可能にするか否かを決定する。計算装置100は、メモリ内の効率的な計算操作の実行を可能にするために構成設定(例えば、構成ファイル内の)が示す決定に応答した、および/または他の要因に基づいた、媒体アクセス回路108がテンソル論理ユニット130を含むという決定に応答して、メモリ104内の効率的な計算操作の実行を可能にし得る。
【0028】
それに関わらず、効率的なメモリ内の計算操作の実行を可能にするという決定に応答して、方法600はブロック604に進み、ブロック604では、計算装置100は、メモリ104内のデータに対して1つまたは複数の演算を実行する要求を取得し得る。例えば、ブロック606に示すように、メモリ104(例えば、媒体クセス回路108)は、プロセッサ(例えば、プロフェッサ102)から要求を受信し得るが、このプロフェッサは人工知能関連アプリケーション(例えば、学習および推論を行うためにニューラルネットワークまたは他の機械学習構造を使用し得るアプリケーション)を実行していることがある。ブロック608に示すように、メモリ104(例えば、媒体アクセス回路108)は、メモリ104内で演算されるデータの位置(例えば、アドレス)を示す記述子(例えば、パラメータまたは他のデータ)を含む要求を受信し得る。ブロック610に示すように、メモリ104は、メモリ104内で演算される行列の次元を示す記述子を含む要求を受信し得る。
【0029】
続いて、方法600はブロック612に進み、ブロック612では、計算装置100は、メモリ104に含まれる媒体アクセス回路(例えば、媒体アクセス回路108)を用いて、メモリ104に含まれるメモリ媒体(例えば、メモリ媒体110)から、要求された演算と関連付けられたデータ(例えば、演算されるデータ)にアクセスする。ブロック614に示すように、例示的な実施形態では、計算装置100は、相補型金属酸化膜半導体(CMOS)を用いて(例えば、媒体アクセス回路108はCMOSから形成されてもよい)データに(例えば、メモリ媒体110から)アクセスする。また、ブロック616に示すように、例示的な実施形態では、メモリ104(例えば、媒体アクセス回路108)は、クロスポイントアーキテクチャ(例えば、メモリセルがワード線とビット線との交差部にあって個々にアドレス可能であり、かつビットストレージがバルク抵抗の変化に基づいているアーキテクチャ)を有するメモリ媒体(例えば、メモリ媒体110)からデータを読み出す。更に、ブロック618に示すように、媒体アクセス回路108は、3次元クロスポイントアーキテクチャ(例えば、図2を参照して説明されたように、タイルの組が層として積層されているアーキテクチャ)を有するメモリ媒体(例えば、メモリ媒体110)から行列データを読み出し得る。他の実施形態では、計算装置100は、異なるアーキテクチャを有するメモリ媒体からデータを読み出してもよい。
【0030】
ブロック620に示すように、計算装置100(例えば、媒体アクセス回路108)は、メモリ媒体110の複数のパーティションからデータを読み出し得る(例えば、同時に)。そうすることで、ブロック622に示すように、計算装置100は、各パーティションから予め定義された数のビット(例えば、128ビット)を読み出し得る。ブロック624に示すように、計算装置100(例えば、媒体アクセス回路108)は、対応するパーティションと関連付けられたスクラッチパッドにデータを読み込み得る。例えば、媒体アクセス回路108は、パーティション311のうちの1つからスクラッチパッド312へのデータ、パーティション321のうちの1つからスクラッチパッド322へのデータなどを読み込み得る。データをスクラッチパッドに読み込む際に、計算装置100(例えば、媒体アクセス回路108)は、データを夫々レジスタファイル(例えば、レジスタの配列)またはスタティックランダムアクセスメモリ(SRAM)に読み込み得る。続いて、方法600は図7のブロック630に進むが、ブロック630では、計算装置100は、媒体アクセス回路108を用いて、メモリ媒体110からアクセスされたデータに対し、要求された演算の少なくとも一部を実行する。
【0031】
ここで図7を参照すると、ブロック632に示すように、要求された演算の少なくとも一部を実行する際に、計算装置100(例えば、媒体アクセス回路108)は、媒体アクセス回路108内の計算論理ユニット136を使用して演算を実行する。ブロック634に示すように、例示的な実施形態では、計算装置100は、演算(例えば、1つまたは複数の行列の部分に対して演算するような、要求された演算のサブ演算)を、複数の計算論理ユニット136に亘って同時に実行する。ブロック636に示すように、計算装置100は、データが読み出されたパーティションと関連付けられた計算論理ユニットを用いて、演算(例えば、要求された演算のサブ演算)を実行し得る。例示的な実施形態では、ブロック638に示すように、計算装置100は、データが読み込まれたパーティションと関連付けられたスクラッチパッド(例えば、パーティション311と関連付けられたスクラッチパッド312、314、316、パーティション321と関連付けられたスクラッチパッド322、324、326等)に読み込まれたデータに対して演算を実行する。ブロック640に示すように、計算装置100は、ダイまたはパッケージ(例えば、パッケージ402)に配置された複数の計算論理ユニット(例えば、計算論理ユニット318、328、338)を用いて、演算を実行し得る。更に、ブロック642に示すように、計算装置100は、DIMM(例えば、DIMM420)の複数のダイまたはパッケージ(例えば、パッケージ402、404、406、408、410、412、414、416)に亘って分散された複数の計算論理ユニットを用いて、演算を実行し得る。更に、ブロック644に示すように、計算装置100は、複数のDIMM(例えば、DIMM420、430)に亘って分散された複数の計算論理ユニットを用いて、演算を実行し得る。
【0032】
ブロック646に示すように、演算を実行する際に、計算装置100(例えば、媒体アクセス回路108)は、メモリ媒体110からアクセスされたデータに対して1つまたは複数のテンソル演算を実行し得る。そうすることで、ブロック648に示すように、計算装置100(例えば、媒体アクセス回路108)は、1つまたは複数の行列乗算演算(例えば、入力行列Aを重み行列Bで乗じて出力行列Cを得ること)を実行し得る。ブロック650に示すように、1つまたは複数の行列乗算演算を実行する際に、計算装置100(例えば、媒体アクセス回路108)は、1つまたは複数の行列乗累算演算を実行し得る。ブロック652に示すように、他の実施形態では、計算装置100(例えば、媒体アクセス回路108)は、データに対して他の種類の演算(例えば、テンソル演算以外)を実行し得る。例えば、ブロック654に示すように、計算装置100(例えば、媒体アクセス回路108)は、メモリ媒体110からアクセスされたデータに対して、1つまたは複数のビット単位の演算(例えば、AND,OR,XOR,NORのような個々のビットに対する論理演算)を実行し得る。
【0033】
続いて、方法600はブロック656に進み、ブロック656では、計算装置100は、要求された演算の実行を継続するために追加のデータにアクセスするか否かを決定する。例えば、テンソル演算が要求され、そのテンソル演算と関連付けられた行列データの一部のみ(例えば、行および/または列のすべてより少ない)が演算された場合、計算装置100は、要求された演算を完了するために追加のデータ(例えば、追加の行列データ)がアクセスされるべきかを決定し得る。計算装置100が追加のデータにアクセスすることを決定したら、方法600は、追加のデータにアクセスするために図6のブロック612にループバックする。そうでなければ、方法600は図8のブロック658に進み、ブロック658では、計算装置100(例えば、媒体アクセス回路108)は、要求された演算の実行から生成された結果データをメモリ(例えば、メモリ媒体110)に書き込み得る。
【0034】
ここで図8を参照すると、ブロック660に示すように、結果データを書き込む際に、媒体アクセス回路108は最初に結果データを、メモリ媒体110のパーティションの組と各々関連付けられた1つまたは複数のスクラッチパッドに書き込み得る(例えば、スクラッチパッド312からの入力行列Aとスクラッチパッド314からの重み行列Bとの乗算の結果をスクラッチパッド316に追加すること、スクラッチパッド322からの入力行列Aとスクラッチパッド324からの重み行列Bとの乗算の結果等をスクラッチパッド326に追加すること等)。ブロック662に示すように、媒体アクセス回路108は、畳み込みニューラルネットワークの層(例えば、後続の層)のための入力行列として使用される出力行列(例えば、行列C)を各々保持するスクラッチパッド(例えば、スクラッチパッド316、326、336)に結果データを書き込み得る。ブロック664に示すように、媒体アクセス回路108は、スクラッチパッド316、326、336からの結果データをメモリ媒体110(例えば、対応するパーティション)に書き込み得る。続いてブロック666では、メモリ104は、計算装置100の別の構成要素に、要求された演算の完了を示すデータを提供し得る。そうすることで、ブロック668に示すように、メモリ104は結果データ(例えば、ブロック658からの)を、アプリケーション(例えば、メモリ104内で実行される演算に対する要求を生成したアプリケーション)を実行しているプロセッサ(例えば、プロセッサ102)に提供し得る。ブロック670に示すように、メモリ104は、計算装置100の他の構成要素(例えば、プロセッサ102)に、人工知能の演算を示す結果データを提供し得る。例えば、ブロック672に示すように、メモリ104は、推論(例えば、画像中のオブジェクトの識別等)を示すデータを提供し得る。続いて、方法600は、図6のブロック602にループバックし、ブロック602では、計算装置100は、継続して効率的なメモリ内の計算操作を可能にするか否かを決定する。
【0035】
[実施例]
本明細書で開示される技術の例示的な例が、以下で提供される。これらの技術のある実施形態は、以下で説明される実施例の何れか1つまたは複数、および任意の組み合わせを含み得る。
【0036】
実施例1は、メモリ媒体に結合された媒体アクセス回路を備えるメモリを含み、媒体アクセス回路は、要求された演算を実行するためにメモリ媒体からデータにアクセスし、媒体アクセス回路に含まれる複数の計算論理ユニットの各々を用いて、アクセスされたデータに対して、要求された演算を同時に実行し、かつ、要求された演算の実行から生成された結果データをメモリ媒体に書き込む。
【0037】
実施例2は、実施例1の主題を含み、複数の計算論理ユニットの各々を用いて要求された演算を実行することは、メモリ媒体の異なるパーティションと関連付けられた複数の計算論理ユニットを用いて、要求された演算を実行することを含む。
【0038】
実施例3は、実施例1および2の何れかの主題を含み、複数の計算論理ユニットの各々を用いて要求された演算を実行することは、ダイまたはパッケージ内に配置された複数の計算論理ユニットの各々を用いて、要求された演算を実行することを含む。
【0039】
実施例4は、実施例1から3の何れかの主題を含み、複数の計算論理ユニットの各々を用いて要求された演算を実行することは、デュアルインラインメモリモジュールの複数のダイまたはパッケージ内に配置された複数の計算論理ユニットの各々を用いて、要求された演算を実行することを含む。
【0040】
実施例5は、実施例1から4の何れかの主題を含み、複数の計算論理ユニットの各々を用いて要求された演算を実行することは、複数のデュアルインラインメモリモジュールに亘って分散された複数の計算論理ユニットの各々を用いて、要求された演算を実行することを含む。
【0041】
実施例6は、実施例1から5の何れかの主題を含み、メモリ媒体からデータにアクセスすることは、メモリ媒体の複数のパーティションからデータを読み出すことを含む。
【0042】
実施例7は、実施例1から6の何れかの主題を含み、メモリ媒体からデータにアクセスすることは、複数のパーティションの各々と関連付けられたスクラッチパッドにデータを読み込むことを含む。
【0043】
実施例8は、実施例1から7の何れかの主題を含み、データをスクラッチパッドに読み込むことは、データを媒体アクセス回路のレジスタファイルまたはスタティックランダムアクセスメモリに読み込むことを含む。
【0044】
実施例9は、実施例1から8の何れかの主題を含み、メモリ媒体からデータにアクセスすることは、3次元クロスポイントアーキテクチャを有するメモリ媒体からデータにアクセスすることを含む。
【0045】
実施例10は、実施例1から9の何れかの主題を含み、要求された演算を実行することは、テンソル演算を実行することを含む。
【0046】
実施例11は、実施例1から10の何れかの主題を含み、要求された演算を実行することは、行列乗算演算を実行することを含む。
【0047】
実施例12は、実施例1から11の何れかの主題を含み、要求された演算を実行することは、アクセスされたデータに対してビット単位の演算を実行することを含む。
【0048】
実施例13は、実施例1から12の何れかの主題を含み、媒体アクセス回路は更に、要求された演算の完了を示すデータを計算装置の構成要素に提供する。
【0049】
実施例14は、要求された演算を実行するために、メモリに含まれる媒体アクセス回路が、媒体アクセス回路に結合されたメモリ媒体からデータにアクセスすることと、媒体アクセス回路内の複数の計算論理ユニットの各々が、アクセスされたデータに対して、要求された演算を同時に実行することと、媒体アクセス回路が、要求された演算の実行から生成された結果データをメモリ媒体に書き込むこととを含む方法を含む。
【0050】
実施例15は、実施例14の主題を含み、複数の計算論理ユニットの各々が、要求された演算を実行することは、メモリ媒体の異なるパーティションと関連付けられた複数の計算論理ユニットが、要求された演算を実行することを含む。
【0051】
実施例16は、実施例14および15の何れかの主題を含み、複数の計算論理ユニットの各々が、要求された演算を実行することは、ダイまたはパッケージ内に配置された複数の計算論理ユニットの各々が、要求された演算を実行することを含む。
【0052】
実施例17は、実施例14から16の何れかの主題を含み、複数の計算論理ユニットの各々が、要求された演算を実行することは、デュアルインラインメモリモジュールの複数のダイまたはパッケージ内に配置された複数の計算論理ユニットの各々が、要求された演算を実行することを含む。
【0053】
実施例18は、実施例14から17の何れかの主題を含み、複数の計算論理ユニットの各々が、要求された演算を実行することは、複数のデュアルインラインメモリモジュールに亘って分散された複数の計算論理ユニットの各々が、要求された演算を実行することを含む。
【0054】
実施例19は、実施例14から18の何れかの主題を含み、メモリ媒体からデータにアクセスすることは、メモリ媒体の複数のパーティションからデータを読み出すことを含む。
【0055】
実施例20は、要求された演算を実行するために、実行されていることに応答して、メモリに含まれる媒体アクセス回路をメモリ媒体からデータにアクセスさせ、媒体アクセス回路に含まれる複数の計算論理ユニットの各々を用いて、アクセスされたデータに対して、要求された演算を同時に実行させ、かつ、要求された演算の実行から生成された結果データをメモリ媒体に書き込ませる、保存された複数の命令を備える、1つまたは複数の機械可読記憶媒体を含む。
[考えられる他の項目]
(項目1)
メモリ媒体に結合された媒体アクセス回路を備えるメモリであって、
上記媒体アクセス回路は、
要求された演算を実行するために上記メモリ媒体からデータにアクセスし、
上記媒体アクセス回路に含まれる複数の計算論理ユニットの各々を用いて、上記アクセスされたデータに対して、上記要求された演算を同時に実行し、かつ
上記要求された演算の実行から生成された結果データを上記メモリ媒体に書き込む、
メモリ。
(項目2)
複数の計算論理ユニットの各々を用いて上記要求された演算を実行することは、上記メモリ媒体の異なるパーティションと関連付けられた複数の計算論理ユニットを用いて、上記要求された演算を実行することを含む、項目1に記載のメモリ。
(項目3)
複数の計算論理ユニットの各々を用いて上記要求された演算を実行することは、ダイまたはパッケージ内に配置された複数の計算論理ユニットの各々を用いて、上記要求された演算を実行することを含む、項目1に記載のメモリ。
(項目4)
複数の計算論理ユニットの各々を用いて上記要求された演算を実行することは、デュアルインラインメモリモジュールの複数のダイまたはパッケージ内に配置された複数の計算論理ユニットの各々を用いて、上記要求された演算を実行することを含む、項目1に記載のメモリ。
(項目5)
複数の計算論理ユニットの各々を用いて上記要求された演算を実行することは、複数のデュアルインラインメモリモジュールに亘って分散された複数の計算論理ユニットの各々を用いて、上記要求された演算を実行することを含む、項目1に記載のメモリ。
(項目6)
上記メモリ媒体からデータにアクセスすることは、上記メモリ媒体の複数のパーティションから上記データを読み出すことを含む、項目1に記載のメモリ。
(項目7)
上記メモリ媒体からデータにアクセスすることは、上記複数のパーティションの各々と関連付けられたスクラッチパッドに上記データを読み込むことを含む、項目6に記載のメモリ。
(項目8)
上記データをスクラッチパッドに読み込むことは、上記データを上記媒体アクセス回路のレジスタファイルまたはスタティックランダムアクセスメモリに読み込むことを含む、項目7に記載のメモリ。
(項目9)
上記メモリ媒体からデータにアクセスすることは、3次元クロスポイントアーキテクチャを有するメモリ媒体からデータにアクセスすることを含む、項目1に記載のメモリ。
(項目10)
上記要求された演算を実行することは、テンソル演算を実行することを含む、項目1に記載のメモリ。
(項目11)
上記要求された演算を実行することは、行列乗算演算を実行することを含む、項目1に記載のメモリ。
(項目12)
上記要求された演算を実行することは、上記アクセスされたデータに対してビット単位の演算を実行することを含む、項目1に記載のメモリ。
(項目13)
上記媒体アクセス回路は更に、上記要求された演算の完了を示すデータを上記計算装置の構成要素に提供する、項目1に記載のメモリ。
(項目14)
要求された演算を実行するために、メモリに含まれる媒体アクセス回路が、上記媒体アクセス回路に結合されたメモリ媒体からデータにアクセスする段階と、
上記媒体アクセス回路内の複数の計算論理ユニットの各々が、上記アクセスされたデータに対して、上記要求された演算を同時に実行する段階と、
上記媒体アクセス回路が、上記要求された演算の上記実行から生成された結果データを上記メモリ媒体に書き込む段階と
を含む方法。
(項目15)
複数の計算論理ユニットの各々が、上記要求された演算を実行する段階は、上記メモリ媒体の異なるパーティションと関連付けられた複数の計算論理ユニットが、上記要求された演算を実行する段階を含む、項目14に記載の方法。
(項目16)
複数の計算論理ユニットの各々が、上記要求された演算を実行する段階は、ダイまたはパッケージ内に配置された複数の計算論理ユニットの各々が、上記要求された演算を実行する段階を含む、項目14に記載の方法。
(項目17)
複数の計算論理ユニットの各々が、上記要求された演算を実行する段階は、デュアルインラインメモリモジュールの複数のダイまたはパッケージ内に配置された複数の計算論理ユニットの各々が、上記要求された演算を実行する段階を含む、項目14に記載の方法。
(項目18)
複数の計算論理ユニットの各々が、上記要求された演算を実行する段階は、複数のデュアルインラインメモリモジュールに亘って分散された複数の計算論理ユニットの各々が、上記要求された演算を実行する段階を含む、項目14に記載の方法。
(項目19)
上記メモリ媒体からデータにアクセスする段階は、上記メモリ媒体の複数のパーティションから上記データを読み出す段階を含む、項目14に記載の方法。
(項目20)
記憶された複数の命令を含む1つまたは複数の機械可読記憶媒体であって、実行されていることに応答して、メモリに含まれる媒体アクセス回路に、
要求された演算を実行するために上記メモリ媒体からデータにアクセスさせ、
上記媒体アクセス回路に含まれる複数の計算論理ユニットの各々を用いて、上記アクセスされたデータに対して、上記要求された演算を同時に実行させ、かつ、
上記要求された演算の実行から生成された結果データを上記メモリ媒体に書き込ませる、
機械可読記憶媒体。
図1
図2
図3
図4
図5
図6
図7
図8
図9