(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-10-08
(45)【発行日】2024-10-17
(54)【発明の名称】3Dニューラル推論処理ユニット・アーキテクチャ
(51)【国際特許分類】
G06N 3/063 20230101AFI20241009BHJP
【FI】
G06N3/063
(21)【出願番号】P 2022521155
(86)(22)【出願日】2020-10-01
(86)【国際出願番号】 EP2020077486
(87)【国際公開番号】W WO2021078486
(87)【国際公開日】2021-04-29
【審査請求日】2023-03-24
(32)【優先日】2019-10-24
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】390009531
【氏名又は名称】インターナショナル・ビジネス・マシーンズ・コーポレーション
【氏名又は名称原語表記】INTERNATIONAL BUSINESS MACHINES CORPORATION
【住所又は居所原語表記】New Orchard Road, Armonk, New York 10504, United States of America
(74)【代理人】
【識別番号】100112690
【氏名又は名称】太佐 種一
(72)【発明者】
【氏名】キャシディ、アンドリュー
(72)【発明者】
【氏名】アコプヤン、フィリップ
(72)【発明者】
【氏名】アップスワミー、ラシナクマール
(72)【発明者】
【氏名】アーサー、ジョン
(72)【発明者】
【氏名】ダッタ、パラブ
(72)【発明者】
【氏名】デボール、マイケル
(72)【発明者】
【氏名】エッサー、スティーブ
(72)【発明者】
【氏名】フリックナー、マイロン
(72)【発明者】
【氏名】モダ、ダルメンドラ
(72)【発明者】
【氏名】オルテガ オテロ、カルロス
(72)【発明者】
【氏名】澤田 潤
【審査官】大倉 崚吾
(56)【参考文献】
【文献】特表2015-520432(JP,A)
【文献】米国特許出願公開第2016/0379686(US,A1)
【文献】米国特許出願公開第2019/0164038(US,A1)
【文献】米国特許出願公開第2019/0123024(US,A1)
【文献】特開2017-138867(JP,A)
【文献】米国特許出願公開第2018/0365553(US,A1)
【文献】KIM, Duckhwan et al.,"Neurocube: A Programmable Digital Neuromorphic Architecture with High-Density 3D Memory",2016 ACM/IEEE 43rd Annual International Symposium on Computer Architecture (ISCA) [online],2016年06月25日,p. 380-392,[2024年03月01日検索],インターネット<URL:https://ieeexplore.ieee.org/document/7551408>,DOI: 10.1109/ISCA.2016.41
【文献】GAO, Mingyu et al.,"TETRIS: Scalable and Efficient Neural Network Acceleration with 3D Memory",ASPLOS '17: Proceedings of the Twenty-Second International Conference on Architectural Support for Programming Languages and Operating Systems [online],2017年04月04日,p. 751-764,[2024年03月01日検索],インターネット<URL:https://dl.acm.org/doi/10.1145/3037697.3037702>
(58)【調査した分野】(Int.Cl.,DB名)
G06N 3/063-3/065
G06F 12/00
(57)【特許請求の範囲】
【請求項1】
チップ・レイアウトが、シリコン3Dダイと、複数のシリコン層を含むウェーハのスタッキングとを使用する、ニューラル推論チップであって、
複数のニューラル・コアを備える第1のシリコン層であって、各コアが、複数の入力アクティベーションに複数のシナプス重みを適用して複数の出力アクティベーションを生成するように適合されるニューラル計算ユニットを備える、前記第1のシリコン層と、
前記複数のシナプス重みを記憶するように適合される第1のニューラル・ネットワーク・モデル・メモリを備える第2のシリコン層と、
前記第1のニューラル・ネットワーク・モデル・メモリおよび前記複数のニューラル・コアの各々に動作可能に結合され、前記第1のニューラル・ネットワーク・モデル・メモリから前記複数のニューラル・コアの各々に前記シナプス重みを提供するように適合される通信ネットワークと
を備え、前記通信ネットワークが、前記第1のシリコン層と前記第2のシリコン層との間の接続性を提供する複数の貫通シリコン・ビアを備え、前記通信ネットワークが少なくとも3つの次元を有し、前記少なくとも3つの次元のうちの第1の次元が前記ニューラル推論チップのシリコン層同士の間を延び、前記少なくとも3つの次元のうちの第2の次元が前記ニューラル推論チップのシリコン層内を延び
、前記第1のニューラル・ネットワーク・モデル・メモリから前記複数のニューラル・コアの各々に前記シナプス重みを提供するための該複数のニューラル・コアの各々への専用のバスを提供するように構成される、ニューラル推論チップ。
【請求項2】
少なくとも1つの追加ニューラル・ネットワーク・モデル・メモリを備える少なくとも1つの追加シリコン層をさらに備え、
前記通信ネットワークが、前記少なくとも1つの追加ニューラル・ネットワーク・モデル・メモリにさらに動作可能に結合され、前記少なくとも1つの追加ニューラル・ネットワーク・モデル・メモリから前記複数のニューラル・コアの各々にシナプス重みを提供するように適合される、
請求項1に記載のニューラル推論チップ。
【請求項3】
ニューラル・ネットワーク・モデルが、前記第1のニューラル・ネットワーク・モデル・メモリおよび前記少なくとも1つの追加ニューラル・ネットワーク・モデル・メモリにわたって記憶される、請求項2に記載のニューラル推論チップ。
【請求項4】
複数のニューラル・ネットワーク・モデルが、前記第1のニューラル・ネットワーク・モデル・メモリおよび前記少なくとも1つの追加ニューラル・ネットワーク・モデル・メモリにわたって記憶される、請求項2に記載のニューラル推論チップ。
【請求項5】
各コアが、
前記入力アクティベーションおよび前記出力アクティベーションを記憶するように適合されるアクティベーション・メモリと、
前記入力アクティベーションを前記アクティベーション・メモリから前記ニューラル計算ユニットにロードし、前記複数の出力アクティベーションを前記ニューラル計算ユニットから前記アクティベーション・メモリに記憶するように適合されるローカル・コントローラと
をさらに備える、請求項1に記載のニューラル推論チップ。
【請求項6】
アクティベーション・メモリを備える第3のシリコン層をさらに備え、
前記通信ネットワークが、前記アクティベーション・メモリにさらに動作可能に結合さ
れ、前記アクティベーション・メモリから前記複数のニューラル・コアの各々にアクティ
ベーションを生成するように適合される、
請求項1に記載のニューラル推論チップ。
【請求項7】
アクティベーション・メモリを備える第3のシリコン層をさらに備え、
追加通信ネットワークが、前記アクティベーション・メモリに動作可能に結合され、前記アクティベーション・メモリから前記複数のニューラル・コアの各々にアクティベーションを生成するように適合される、
請求項1に記載のニューラル推論チップ。
【請求項8】
複数のニューラル・コアを備える第3のシリコン層をさらに備え、
前記通信ネットワークが、前記第3のシリコン層に動作可能に結合され、前記第1のニューラル・ネットワーク・モデル・メモリから前記第3のシリコン層の複数のニューラル・コアの各々に前記シナプス重みを提供するように適合される、
請求項1に記載のニューラル推論チップ。
【請求項9】
前記第1のシリコン層および前記第3のシリコン層の両方に第1のニューラル・ネットワーク・モデルを提供するように構成される、請求項8に記載のニューラル推論チップ。
【請求項10】
前記第1のシリコン層および前記第3のシリコン層の各々に異なるニューラル・ネットワーク・モデルを提供するように構成される、請求項8に記載のニューラル推論チップ。
【請求項11】
前記通信ネットワークが、前記コアの各々に同じシナプス重みを提供するように適合される、請求項1に記載のニューラル推論チップ。
【請求項12】
前記通信ネットワークが、前記コアのサブセットに同じシナプス重みを提供するように適合される、請求項1に記載のニューラル推論チップ。
【請求項13】
チップ・レイアウトが、シリコン3Dダイと、複数のシリコン層を含むウェーハのスタッキングとを使用する、ニューラル推論チップであって、
複数のニューラル・コアを備える第1のシリコン層であって、各コアが、複数の入力アクティベーションに複数のシナプス重みを適用して複数の出力アクティベーションを生成するように適合されるニューラル計算ユニットを備える、前記第1のシリコン層と、
前記複数のシナプス重みを記憶するように適合される第1のニューラル・ネットワーク・モデル・メモリを備える第2のシリコン層と、
前記第1のニューラル・ネットワーク・モデル・メモリおよび前記複数のニューラル・コアの各々に動作可能に結合され、前記第1のニューラル・ネットワーク・モデル・メモリから前記複数のニューラル・コアの各々に前記シナプス重みを提供するように適合される通信ネットワークと
を備え、前記通信ネットワークが、前記第1のシリコン層と前記第2のシリコン層との間の接続性を提供する複数の貫通シリコン・ビアを備え、前記通信ネットワークが少なくとも3つの次元を有し、前記少なくとも3つの次元のうちの第1の次元が前記ニューラル推論チップのシリコン層同士の間を延び、前記少なくとも3つの次元のうちの第2の次元が前記ニューラル推論チップのシリコン層内を延び、
アクティベーション・メモリを備える第3のシリコン層をさらに備え、
追加通信ネットワークが、前記アクティベーション・メモリに動作可能に結合され、前記アクティベーション・メモリから前記複数のニューラル・コアの各々にアクティベーションを生成するように適合される、ニューラル推論チップ。
【発明の詳細な説明】
【技術分野】
【0001】
本開示の実施形態はニューラル・ネットワーク処理に関し、より詳細には三次元ニューラル推論処理ユニット・アーキテクチャに関する。
【発明の概要】
【0002】
本開示によれば、請求項1に記載のニューラル推論チップが提供される。
【0003】
請求項に記載のニューラル推論処理のための方法およびコンピュータ・プログラム製品がさらに提供される。
【図面の簡単な説明】
【0004】
【
図1】本開示の実施形態によるニューラル・コアを示す図である。
【
図2】本開示の実施形態による例示的な推論処理ユニット(IPU)を示す図である。
【
図3】本開示の実施形態によるマルチコア推論処理ユニット(IPU)を示す図である。
【
図4】本開示の実施形態によるマルチコア推論処理ユニット(IPU)の単一層レイアウトを示す図である。
【
図5】本開示の実施形態によるマルチコア推論処理ユニット(IPU)の2層レイアウトを示す図である。
【
図6】本開示の実施形態によるマルチコア推論処理ユニット(IPU)の多層レイアウトを示す図である。
【
図7】本開示の実施形態によるマルチコア推論処理ユニット(IPU)の多層レイアウトを示す図である。
【
図8】本開示の実施形態によるマルチコア推論処理ユニット(IPU)の多層レイアウトを示す図である。
【
図9A】本開示の実施形態に従って相互接続された三次元グローバル・メモリを示す図である。
【
図9B】本開示の実施形態に従って相互接続された三次元グローバル・メモリを示す図である。
【
図9C】本開示の実施形態に従って相互接続された三次元グローバル・メモリを示す図である。
【
図9D】本開示の実施形態に従って相互接続された三次元グローバル・メモリを示す図である。
【
図9E】本開示の実施形態に従って相互接続された三次元グローバル・メモリを示す図である。
【
図9F】本開示の実施形態に従って相互接続された三次元グローバル・メモリを示す図である。
【
図9G】本開示の実施形態に従って相互接続された三次元グローバル・メモリを示す図である。
【
図10】本開示の実施形態による計算ノードを示す図である。
【発明を実施するための形態】
【0005】
人工ニューロンは数学関数であり、その出力は、その入力の一次結合の非線形関数である。一方の出力が他方への入力である場合、2つのニューロンが接続される。重みは、1つのニューロンの出力と別のニューロンの入力との間の接続の強度を符号化しているスカラ値である。
【0006】
ニューロンは、非線形活性化関数をその入力の重み付き合計に適用することにより、アクティベーション(activation)と呼ばれるその出力を計算する。重み付き合計は、個々の入力に対応する重みを掛け合わせ、その積を累積することによって計算される中間結果である。部分合計は入力のサブセットの重み付き合計である。すべての入力の重み付き合計は、1つまたは複数の部分合計を累積することにより、複数のステージで計算することができる。
【0007】
ニューラル・ネットワークは1つまたは複数のニューロンの集合である。ニューラル・ネットワークは、しばしば、レイヤと呼ばれるニューロンのグループに分割される。レイヤは、すべてが同じレイヤから入力を受け取り、また、すべてが同じレイヤに出力を送る1つまたは複数のニューロンの集合であり、典型的には同様の機能を実施する。入力レイヤは、ニューラル・ネットワークの外部のソースから入力を受け取るレイヤである。出力レイヤは、ニューラル・ネットワークの外部のターゲットに出力を送るレイヤである。すべての他のレイヤは中間処理レイヤである。マルチレイヤ・ニューラル・ネットワークは、2つ以上のレイヤを有するニューラル・ネットワークである。深層ニューラル・ネットワークは、多くのレイヤを有するマルチレイヤ・ニューラル・ネットワークである。
【0008】
テンソルは数値の多次元アレイである。テンソル・ブロックは、テンソル中の要素の連続サブアレイである。
【0009】
個々のニューラル・ネットワーク・レイヤは、パラメータ・テンソルV、重みテンソルW、入力データ・テンソルX、出力データ・テンソルYおよび中間データ・テンソルZと関連付けられる。パラメータ・テンソルは、レイヤの中のニューロン活性化関数σを制御するパラメータのすべてを含む。重みテンソルは、レイヤに入力を接続する重みのすべてを含む。入力データ・テンソルは、レイヤが入力として消費するデータのすべてを含む。出力データ・テンソルは、レイヤが出力として計算するデータのすべてを含む。中間データ・テンソルは、レイヤが中間計算として生成する、部分合計などのあらゆるデータを含む。
【0010】
レイヤのためのデータ・テンソル(入力、出力および中間)は3次元であってもよく、最初の2つの次元は、空間位置を符号化するものとして解釈することができ、また、第3の次元は、異なる特徴を符号化するものとして解釈することができる。例えばデータ・テンソルが色画像を表している場合、最初の2つの次元は、画像内の垂直および水平座標を符号化し、また、第3の次元は、個々の位置における色を符号化する。入力データ・テンソルXのすべての要素は、個別の重みによってすべてのニューロンに接続することができ、したがって重みテンソルWは、通常、入力データ・テンソルの3つの次元(入力行a、入力列b、入力特徴c)を出力データ・テンソルの3つの次元(出力行i、出力列j、出力特徴k)と連結する6つの次元を有する。中間データ・テンソルZは出力データ・テンソルYと同じ形を有する。パラメータ・テンソルVは、3つの出力データ・テンソル次元を、活性化関数σのパラメータを指示する追加次元οと連結する。
【0011】
レイヤの出力データ・テンソルYの要素は式1のように計算することができ、ニューロン活性化関数σは活性化関数パラメータV[i,j,k,:]のベクトルによって構成され、重み付き合計Z[i,j,k]は式2のように計算することができる。
Y[i,j,k]=σ(V[i,j,k,:];Z[i,j,k])
式1
【数1】
【0012】
表記を単純にするために、式2における重み付き合計は出力と呼ぶことも可能であり、これは、線形活性化関数Y[i,j,k]=σ(Z[i,j,k])=Z[i,j,k]を使用することと等価であり、異なる活性化関数が使用される場合にも、一般性を失うことなく、同じことが言えることが理解される。
【0013】
様々な実施形態では、上で説明した出力データ・テンソルの計算はもっと小さい問題に分解される。次に個々の問題を1つまたは複数のニューラル・コア上で、あるいは従来のマルチコア・システムの1つまたは複数のコア上で並行して解くことができる。
【0014】
ここで
図1を参照すると、本開示の実施形態によるニューラル・コアが示されている。ニューラル・コア100は、出力テンソルの1つのブロックを計算する、タイル構成可能な計算ユニットである。ニューラル・コア100はM個の入力およびN個の出力を有している。様々な実施形態ではM=Nである。出力テンソル・ブロックを計算するために、ニューラル・コアは、M×1個の入力テンソル・ブロック101にM×N個の重みテンソル・ブロック102を掛け合わせ、その積を累積して、1×N個の中間テンソル・ブロック103の中に記憶される重み付き合計にする。O×N個のパラメータ・テンソル・ブロックは、1×N個の出力テンソル・ブロック105を得るために中間テンソル・ブロック103に適用されるN個のニューロン活性化関数の各々を規定するO個のパラメータを含む。
【0015】
複数のニューラル・コアをタイル張りしてニューラル・コア・アレイにすることができる。いくつかの実施形態では、アレイは2次元である。
【0016】
ニューラル・ネットワーク・モデルは、ニューロンならびに重みと、すべてのニューロンのための活性化関数パラメータとの間の接続のグラフを含む、ニューラル・ネットワークによって実施される計算全体を集合的に規定する一組の定数である。訓練は、ニューラル・ネットワーク・モデルを修正して所望の機能を実施するプロセスである。推論は、ニューラル・ネットワークを入力に適用して、ニューラル・ネットワーク・モデルを修正することなく出力を生成するプロセスである。
【0017】
推論処理ユニットは、ニューラル・ネットワーク推論を実施するプロセッサのカテゴリである。ニューラル推論チップは推論処理ユニットの特定の物理的実例である。
【0018】
図2を参照すると、本開示の実施形態による例示的な推論処理ユニット(IPU)が示されている。IPU200はニューラル・ネットワーク・モデルのためのメモリ201を含む。上で説明したように、ニューラル・ネットワーク・モデルは、計算されるニューラル・ネットワークのためのシナプス重みを含むことができる。IPU200は、一過性であってもよいアクティベーション・メモリ202を含む。アクティベーション・メモリ202は入力領域および出力領域に分割することができ、また、処理のためにニューロン・アクティベーションを記憶する。IPU200は、モデル・メモリ201からニューラル・ネットワーク・モデルがロードされるニューラル計算ユニット203を含む。入力アクティベーションは、個々の計算ステップに先立ってアクティベーション・メモリ202から提供される。ニューラル計算ユニット203からの出力は、同じニューラル計算ユニットまたは別のニューラル計算ユニット上で処理するためにアクティベーション・メモリ202に書き戻される。
【0019】
様々な実施形態では、マイクロエンジン204はIPU200の中に含まれている。このような実施形態では、IPUにおけるすべての操作はマイクロエンジンによって指示される。以下で示されるように、様々な実施形態では、中央マイクロエンジンまたは分散マイクロエンジンあるいはその両方を提供することができる。グローバル・マイクロエンジンはチップ・マイクロエンジンと呼ぶことができ、一方、ローカル・マイクロエンジンはコア・マイクロエンジンまたはローカル・コントローラと呼ぶことができる。様々な実施形態では、マイクロエンジンは、1つまたは複数のマイクロエンジン、マイクロコントローラ、状態マシン、CPUまたは他のコントローラを備えている。
【0020】
図3を参照すると、本開示の実施形態によるマルチコア推論処理ユニット(IPU)が示されている。IPU300は、ニューラル・ネットワーク・モデルおよび命令のためのメモリ301を含む。いくつかの実施形態では、メモリ301は重み部分311および命令部分312に分割される。上で説明したように、ニューラル・ネットワーク・モデルは、計算されるニューラル・ネットワークのためのシナプス重みを含むことができる。IPU300は、一過性であってもよいアクティベーション・メモリ302を含む。アクティベーション・メモリ302は入力領域および出力領域に分割することができ、また、処理のためにニューロン・アクティベーションを記憶する。IPU300は複数のコア303を含む。各コア303は、モデル・メモリ301からニューラル・ネットワーク・モデルがロードされるニューラル計算ユニット333を含む。各コアはローカル・アクティベーション・メモリ332をさらに含む。入力アクティベーションは、個々の計算ステップに先立ってローカル・アクティベーション・メモリ332から提供される。ニューラル計算ユニット333からの出力は、同じニューラル計算ユニットまたは別のニューラル計算ユニット上で処理するためにアクティベーション・メモリ332に書き戻される。
【0021】
IPU300はニューラル・コア303のアレイ306を含む。各コア303は、モデル・メモリ301からニューラル・ネットワーク・モデルがロードされる計算ユニット333を含み、また、ベクトル計算を実施するように動作する。各コアはローカル・アクティベーション・メモリ332をさらに含む。入力アクティベーションは、個々の計算ステップに先立ってローカル・アクティベーション・メモリ332から提供される。計算ユニット333からの出力は、同じ計算ユニットまたは別の計算ユニット上で処理するためにアクティベーション・メモリ332に書き戻される。
【0022】
IPU300は1つまたは複数のネットワーク-オン-チップ(NoC)305を含む。いくつかの実施形態では、部分合計NoC351はコア303を相互接続し、また、部分合計をそれらの間で輸送する。いくつかの実施形態では、個別のパラメータ分配NoC352は、重みおよび命令をコア303に分配するためにコア303をメモリ301に接続する。NoC351および352の様々な構成を本開示に従って適切に使用することができることは認識されよう。例えばブロードキャスト・ネットワーク、行ブロードキャスト(row broadcast)・ネットワーク、ツリー・ネットワークおよび交換ネットワークを使用することができる。
【0023】
様々な実施形態では、グローバル・マイクロエンジン304はIPU300の中に含まれている。様々な実施形態では、ローカル・コア・コントローラ334は各コア303の上に含まれている。このような実施形態では、操作の指示はグローバル・マイクロエンジン(チップ・マイクロエンジン)とローカル・コア・コントローラ(コア・マイクロエンジン)との間で共有される。詳細には、312で、計算命令がグローバル・マイクロエンジン304によってモデル・メモリ301から各コア303上のニューラル計算ユニット333にロードされる。311で、パラメータ(例えばニューラル・ネットワーク/シナプス重み)がグローバル・マイクロエンジン304によってモデル・メモリ301から各コア303上のニューラル計算ユニット333にロードされる。313で、ニューラル・ネットワーク・アクティベーション・データがローカル・コア・コントローラ334によって活性化ローカル・アクティベーション・メモリ332から各コア303上のニューラル計算ユニット333にロードされる。上で言及したように、アクティベーションは、モデルによって定義される特定のニューラル・ネットワークの軸索に提供され、同じニューラル計算ユニットまたは別のニューラル計算ユニットから生じ、あるいはシステムの外部から生じ得る。314で、ニューラル計算ユニット333は、計算を実施して、ローカル・コア・コントローラ334によって指示されたように出力ニューロン・アクティベーションを生成する。詳細には、計算は、入力シナプス重みを入力アクティベーションに適用することを含む。ベクトル乗算ユニットに加え、コンピュータでの樹状突起を含むこのような計算を実施するために様々な方法が利用可能であることは認識されよう。315で、計算の結果がローカル・コア・コントローラ334によって指示されたようにローカル・アクティベーション・メモリ332に記憶される。上で説明したように、これらのステージは、各コア上のニューラル計算ユニットの有効な使用を提供するためにパイプライン化することができる。入力および出力は、所与のニューラル・ネットワークの要求事項に従ってローカル・アクティベーション・メモリ332からグローバル・アクティベーション・メモリ302に転送することができることも認識されよう。
【0024】
計算ユニット333は、計算を実施して、ローカル・コア・コントローラ334によって指示されたように出力ニューロン・アクティベーションを生成する。詳細には、計算は、入力シナプス重みを入力アクティベーションに適用することを含む。ベクトル乗算ユニットに加え、コンピュータでの樹状突起を含むこのような計算を実施するために様々な方法が利用可能であることは認識されよう。計算の結果は、ローカル・コア・コントローラ334によって指示されたようにローカル・アクティベーション・メモリ332に記憶される。これらのステージは、各コア上の計算ユニットの有効な使用を提供するためにパイプライン化することができる。入力および出力は、所与のニューラル・ネットワークの要求事項に従ってローカル・アクティベーション・メモリ332からグローバル・アクティベーション・メモリ302に転送することができることも認識されよう。
【0025】
したがって本開示は、推論処理ユニット(IPU)における操作の実行時間制御を提供する。いくつかの実施形態では、マイクロエンジンは集中化される(単一マイクロエンジン)。いくつかの実施形態では、IPU計算は分散される(コアのアレイによって実施される)。いくつかの実施形態では、操作の実行時間制御は、中央マイクロエンジンおよび関係する分散マイクロエンジンの両方で階層的である。
【0026】
1つまたは複数のマイクロエンジンは、IPUにおけるすべての操作の実行を指示する。個々のマイクロエンジン命令は、いくつかの副操作(例えばアドレス生成、ロード、計算、記憶、等々)に対応する。分散事例では、コア・マイクロコードがコア・マイクロエンジン(例えば334)上で実行される。コア・マイクロコードは、完全単一テンソル操作(a full, single tensor operation)、例えば重みテンソルとデータ・テンソルとの間の畳込みを実行するための命令を含む。単一コアの文脈では、コア・マイクロコードは、ローカルに記憶されたデータ・テンソルのサブセット(および部分合計)に対する単一テンソル操作を実行するための命令を含む。チップ・マイクロコードはチップ・マイクロエンジン(例えば304)上で実行される。マイクロコードは、ニューラル・ネットワークにおけるすべてのテンソル操作を実行するための命令を含む。
【0027】
次に
図4を参照すると、本開示の実施形態によるマルチコア推論処理ユニット(IPU)の例示的な単一レイヤ・レイアウトが示されている。
図3の場合と同様、IPU400は、ニューラル・ネットワーク・モデルおよび命令のためのメモリ401を含む。上で説明したように、ニューラル・ネットワーク・モデルは、計算されるニューラル・ネットワークのためのシナプス重みを含むことができる。IPU400は、一過性であってもよいアクティベーション・メモリ402を含む。アクティベーション・メモリ402は入力領域および出力領域に分割することができ、また、処理のためにニューロン・アクティベーションを記憶する。
【0028】
IPU400はニューラル・コア403のアレイ406を含む。各コア403は、モデル・メモリ401からニューラル・ネットワーク・モデルがロードされる計算ユニットを含み、また、ベクトル計算を実施するように動作する。様々な実施形態では、各コアはローカル・アクティベーション・メモリをさらに含む。このような実施形態では、入力アクティベーションは、個々の計算ステップに先立ってローカル・アクティベーション・メモリから提供される。計算ユニットからの出力は、同じ計算ユニットまたは別の計算ユニット上で処理するためにアクティベーション・メモリに書き戻される。様々な実施形態では、各コア403は、ローカル・モデル・メモリ、命令メモリ、コントローラまたはアクティベーション・メモリあるいはその組合せを含む。
【0029】
IPU400は1つまたは複数のネットワーク-オン-チップ(NoC)を含む。いくつかの実施形態では、部分合計NoC451はコア403を相互接続し、また、部分合計をそれらの間で輸送する。いくつかの実施形態では、個別のパラメータ分配NoC452は、重みおよび命令をコア403に分配するためにコア403をメモリ401に接続する。いくつかの実施形態では、アクティベーションNoC453はコアをアクティベーション・メモリ402に接続する。NoC451、452および453の様々な構成を本開示に従って適切に使用することができることは認識されよう。例えばブロードキャスト・ネットワーク、行ブロードキャスト・ネットワーク、ツリー・ネットワークおよび交換ネットワークを使用することができる。
【0030】
様々な実施形態では、グローバル・マイクロエンジン404はIPU400の中に含まれている。様々な実施形態では、ローカル・コア・コントローラは各コア403の上に含まれている。このような実施形態では、操作の指示はグローバル・マイクロエンジン(チップ・マイクロエンジン)とローカル・コア・コントローラ(コア・マイクロエンジン)との間で共有される。詳細には、計算命令がグローバル・マイクロエンジン404によってモデル・メモリ401から各コア403上のニューラル計算ユニットにロードされる。パラメータ(例えばニューラル・ネットワーク/シナプス重み)がグローバル・マイクロエンジン404によってモデル・メモリ401から各コア403上のニューラル計算ユニットにロードされる。ニューラル・ネットワーク・アクティベーション・データがローカル・コア・コントローラによって活性化ローカル・アクティベーション・メモリから各コア403上のニューラル計算ユニットにロードされる。上で言及したように、アクティベーションは、モデルによって定義される特定のニューラル・ネットワークの軸索に提供され、同じニューラル計算ユニットまたは別のニューラル計算ユニットから生じ、あるいはシステムの外部から生じ得る。
【0031】
ニューラル計算ユニットは、計算を実施して、ローカル・コア・コントローラによって指示されたように出力ニューロン・アクティベーションを生成する。詳細には、計算は、入力シナプス重みを入力アクティベーションに適用することを含む。ベクトル乗算ユニットに加え、コンピュータでの樹状突起を含むこのような計算を実施するために様々な方法が利用可能であることは認識されよう。計算の結果は、ローカル・コア・コントローラによって指示されたようにローカル・アクティベーション・メモリに記憶される。上で説明したように、これらのステージは、各コア上のニューラル計算ユニットの有効な使用を提供するためにパイプライン化することができる。入力および出力は、所与のニューラル・ネットワークの要求事項に従ってローカル・アクティベーション・メモリからグローバル・アクティベーション・メモリ402に転送することができることも認識されよう。
【0032】
図4では、IPU400の構成要素は単一レイヤ上にレイアウトされている。例示的な実施形態では、このレイアウトは、総チップ面積の5%がアクティベーションI/Oに当てられ、60%がコア・アレイに当てられ、25%がグローバル・メモリに当てられ、5%がグローバル・メモリ相互接続(IC)に当てられ、また、5%がコントローラに当てられるように概ね配分されている。所与のコア内では、約25%がアクティベーション・メモリに当てられ、25%が重みメモリに当てられ、25%が計算に当てられ、また、25%が制御に当てられる。
【0033】
性能に対する様々な制限がこのアーキテクチャによって課される。例えばメモリ容量はネットワークサイズに制限を課す。詳細には、計算することができる最大ニューラル・ネットワーク・モデル・サイズはグローバル重みメモリのサイズで決まる。計算することができる最大ネットワーク・レイヤはアクティベーション・メモリのサイズで決まる。同様に、ワイヤ帯域幅はネットワーク分配(重み分配)を制限し、また、最大計算並列性(maximum compute parallelism)を決定する。データ移動距離はエネルギー効率を制限する。
【0034】
所与のチップの物理的レイアウトによって課されるこれらの制限に対処するために、様々な実施形態では、様々なチップ構成要素が複数のレイヤすなわち層にわたって展開される3Dレイアウトが採用されている。様々な実施形態では、この3Dレイアウトは、シリコン3Dダイおよびウェーハのスタッキングによって達成される。いくつかの実施形態では、層間接続性は貫通シリコン・ビアによって提供される。
【0035】
貫通シリコン・ビア(TSV)または貫通チップ・ビアは、シリコン・ウェーハすなわちダイを完全に貫通する垂直方向の電気接続(ビア)である。TSVは、3Dパッケージおよび3D集積回路を作り出すためのワイヤ-ボンドおよびフリップ・チップに対する代替として使用される高性能相互接続技術である。パッケージ-オン-パッケージなどの代替と比較すると、相互接続およびデバイス密度が実質的により高く、また、接続の長さがより短くなる。
【0036】
様々な実施形態では、TSVは、約100万~300万相互接続/cm2の高相互接続密度を可能にする6~10μmの相互接続ピッチを有している。500μm×500μmの面積(250,000μm2)が与えられると、10μmピッチは2500相互接続(250,000μm2/(10μm×10μm))をもたらし、また、6μmピッチは6944相互接続(250,000μm2/(6μm×6μm))をもたらす。代替実施態様は、6~10umの深さで1.6~3.0μmピッチを有することができる。
【0037】
TSVは、例えば14nmプロセスに基づいて、銅で実現することができる。このような例示的な実施形態は、約10μmの直径および約40μmのピッチを有することができる。TSVは、例えばタングステンで実現することができる。このような例示的な実施形態は、約1.2μmの直径および約2.5μmのピッチを有することができる。別のこのような例示的な実施形態は、約1.0μmの直径および2.0μmのピッチを有することができる。
【0038】
様々な実施形態では、3Dレイアウトは2Dグローバル重み分配バスと結合される。この方法によれば、コアに対する固有帯域幅(および潜在的にコアに対する総帯域幅)が広くなる。
【0039】
以下で示されるように、3Dレイアウトは2つ以上のレイヤにわたって拡張可能であり、大きい容量および層間ワイヤの長さの最短化を達成することができる。
【0040】
図5は例示的な2層レイアウトを示したものである。このレイアウトでは第1の層501はコア・アレイおよびアクティベーションI/O構成要素を含む。第2の層502は、グローバル・メモリ、グローバル・メモリ相互接続およびコントローラを含む。パラメータ分配NoC452は、パラメータを分配するために各コアを接続するメッシュ・ネットワークとして構成されている。
【0041】
図6は例示的なn層レイアウトを示したものである。このレイアウトでは第1の層601はコア・アレイおよびアクティベーションI/O構成要素を含む。第2の層602はグローバル・メモリ相互接続を含む。追加層603...604はグローバル・メモリを含む。グローバル・メモリは任意の数のレイヤにわたって展開させることができ、それにより個々の層の物理的総フットプリントを変更することなく容量を拡張することができることは認識されよう。
【0042】
図7は例示的なn層レイアウトを示したものである。このレイアウトでは第1の層701は、アクティベーション・メモリおよびネットワーク453を含むアクティベーションI/O構成要素を含む。第2の層702はコア・アレイを含む。追加層(図示せず)は、グローバル・メモリ、グローバル・メモリ相互接続およびコントローラ(例えば
図5~
図6に示されているような)を含む。
【0043】
図8は例示的なn層レイアウトを示したものである。このレイアウトではコアは複数の層の間で分割される。層801はコア毎にアクティベーション・メモリを含む。層802はコア毎に計算、重みメモリおよびコントローラを含む。追加レイヤ(図示せず)はアクティベーションI/O構成要素(
図7に示されているような)を含む。追加層(図示せず)は、グローバル・メモリ、グローバル・メモリ相互接続およびコントローラ(例えば
図5~
図6に示されているような)を含む。この例では、コア・アクティベーション・メモリ・サイズは、自身の層を有することにより2~4倍に拡張することができる(他のすべてを一定に保持して)。
【0044】
上記の例に鑑みて、追加多層化レイアウトは様々な実施形態に採用することができることは認識されよう。例えばメモリ・アレイは2つのコア・アレイの間にはさむことができる。このような実施形態ではモデルは中央に存在し、上下のコア・アレイ層に重みを分配する。このような実施形態は、2のバッチ・サイズ(a batch size of two)を有する場合にとりわけ有用である。詳細には、所与のモデルに対して、第1のイメージは頂部コア・アレイ層上で処理され、第2のイメージは底部コア・アレイ層上で処理される。この実施形態は、信頼性が高い設定における冗長計算の場合にも有用である。頂部層および底部層上で単一のイメージを同時に処理することができる。両方の層からの結果を比較することができる。それらが一致すると、ニューラル推論計算は成功である。一致しない場合は計算を繰り返すことができ、あるいは不良システムを診断することができる。
【0045】
ニューラル・ネットワーク・レイヤは2つの層の間で分割することができる。例えば底部層上でニューラル・ネットワーク・レイヤ1~5を処理し、また、頂部層上でニューラル・ネットワーク・レイヤ6~10を処理することができる。同様に、異なる層上で、異なるニューラル・ネットワークを同じ(または異なる)イメージ上で同時に実行させることができる。
【0046】
上で説明した多層手法は、単一層アーキテクチャにわたって帯域幅改善をもたらす。詳細には、ワイヤ面積1Dから2Dに広くなる。ワイヤ・ピッチが最小ワイヤ間隔からTSV間隔に狭くなる。コア・アレイ重み分配バスが共有から個別になる。TSV伝搬距離(深さに対応する)が短いため、バス周波数が高くなる。したがってアクティベーション・メモリ帯域幅および重み分配帯域幅が広くなる。
【0047】
次に
図9A~
図9Gを参照すると、本開示の実施形態による3Dグローバル・メモリ相互接続が示されている。次元順序付け経路指定を許容する3Dメッシュ通信ネットワーク901(
図9Aを参照されたい)が提供されている。詳細には、メッセージは、層内の第1の次元および第2の次元(例えばXおよびY)上で経路指定され、次に、層同士の間の第3の次元(例えばZ)上で経路指定される。層宛先ノード(例えば911)は、メッセージを受け取ると、第3の次元に沿って別の層(例えばすぐ下の)上のコア・アレイに送る。例えば通信ネットワーク452は、
図5~
図6に示されているようにこの方法で実現することができる。本明細書において説明されている他のNoC、例えば
図7に示されている通信ネットワーク453もこの方法で実現することができることは認識されよう。
【0048】
図9Bを参照すると、個別のバンク分配が通信ネットワーク901上に示されている。この例では、通信ネットワーク901における個々のノードは、個別化された重みブロックを1つのメモリ・バンクから1つのコアへ第3の次元に沿って送る。
【0049】
図9Cを参照すると、行ブロードキャストが通信ネットワーク901上に示されている。この例では、重みブロックは、行メモリ・バンクから個々のノードに行に沿って分配され、次に、第3の次元に沿ってコアへ経路指定される。この方法によれば、所与の行の各コアが同じデータを受け取る。
【0050】
図9Dを参照すると、列ブロードキャストが通信ネットワーク901上に示されている。この例では、重みブロックは、列メモリ・バンクから個々のノードに列に沿って分配され、次に、第3の次元に沿ってコアへ経路指定される。この方法によれば、所与の列の各コアが同じデータを受け取る。
【0051】
図9Eを参照すると、単一バンクブロードキャストが通信ネットワーク901上に示されている。この例では、重みブロックは、1つの単一メモリ・バンクからアレイ中のすべての他のノードに分配され、次に、第3の次元に沿ってコアへ経路指定される。この方法によれば、各コアが同じデータを受け取る。
【0052】
図9Fを参照すると、単一バンクブロードキャストが通信ネットワーク901上に示されている。この例では、重みブロックは、単一の内部メモリ・バンクからアレイ中のすべての他のノードに分配され、次に、第3の次元に沿ってコアへ経路指定される。この方法によれば、各コアが同じデータを受け取る。
【0053】
図9Gを参照すると、マルチバンクブロードキャストが通信ネットワーク901上に示されている。この例では、ある重みブロックはノード971から分配され、一方、異なる重みブロックはノード972から分配される。それぞれのブロックは、行および列に沿ってコアのそれぞれのサブセットへ経路指定される。この方法によれば同時マルチキャストが達成される。
【0054】
様々な実施形態では、シリコンの個々の層はワイヤ・スタックを有している。ワイヤ・スタックおよびワイヤ・ピッチは、層内に製造することができるワイヤの最大数を定義する。これは、周波数と共に、層内で達成することができる最大帯域幅を定義する。複数の層を使用することにより、層の数に正比例してワイヤの有効数が増加し、また、有効帯域幅が広くなる。
【0055】
上で説明した様々な実施形態では、第2の層はグローバル・メモリ通信ネットワークのために使用されている。これは、第2の層におけるグローバル・メモリ通信ネットワークのためのより多くの配線容量を与える。さらに、これは、第1の層における他の通信ネットワーク(例えば部分合計NoCおよびアクティベーションNoC)のためのより多くの配線容量を解放する。
【0056】
様々な実施形態は拡張可能な容量を提供する。詳細には、メモリのすべての追加層は容量を追加する。これは、さらに、モジュール式の製造を許容し、例えば同じ基本論理層を使用して、メモリ容量が異なる複数の生産ラインを許容する。
【0057】
様々な実施形態では、DRAM、FLASH、SRAMまたは他のメモリ技術が標準論理処理層と共に個別の層上で統合される。
【0058】
様々な実施形態では、総合エネルギー低減は、式3を使用して計算することができ、N
wiresはワイヤの数、Cは総ライン・キャパシタンス、Vddは電源電圧、bは(0→1または1→0)を切り換えるパケットにおける平均ビット・フラクション(average fraction of bits)、U
wiresはワイヤ利用率(wire utilization)、fはクロック周波数である。例示的な実施形態ではb=0.5およびf=10
9Hzである。キャパシタンスは距離に比例し、したがって4mmから10~100μmの平均距離まで変化すると、重み分配NoCエネルギー消費における40~400倍の低減が得られる。
【数2】
【0059】
本明細書において説明されているように、様々な実施形態では、IPUは複数の層の間で分割される。詳細には、コア・アレイおよびメモリが異なるシリコン層上で実現されるニューラル推論チップが提供される。様々な実施形態では、メモリ層を追加する(または取り除く)ことによってメモリ容量を変えることができる。様々な実施形態では、重みメモリまたはパラメータ・メモリは専用のメモリ層の上に提供される。様々な実施形態では、アクティベーション・メモリは専用のメモリ層の上に提供される。
【0060】
様々な実施形態では、共有行バスとは対照的に、専用のメモリ・バスが各コアに提供される。様々な実施形態では、重みは、各コアへの専用のバスを介してコア・アレイに分配される。様々な実施形態では、専用のバスは、異なるシリコン層を介して各コアに経路指定される。
【0061】
様々な実施形態ではグローバル・メモリ相互接続が提供される。このようなシステムは、メモリ・バンクの2Dアレイと、異なるシリコン層上の計算コアの2Dアレイとの間のデータの構成可能なブロードキャストを提供する。様々な実施形態では、データは異なるシリコン層を介してコア・アレイに経路指定される。
【0062】
次に
図10を参照すると、計算ノードの例の略図が示されている。計算ノード10は適切な計算ノードの一例にすぎず、本明細書において説明されている実施形態の使用の範囲または機能性に対する何らかの制限を示唆することは意図されていない。とにかく計算ノード10は、上で示した機能性のうちのいずれかを実現することができ、および/または上で示した機能性のうちのいずれかを実施することができる。
【0063】
計算ノード10には、多数の他の汎用または専用計算システム環境または構成と共に動作するコンピュータ・システム/サーバ12が存在している。コンピュータ・システム/サーバ12と共に使用するために適切であり得る、よく知られている計算システム、環境または構成あるいはその組合せの例には、それらに限定されないが、パーソナル・コンピュータ・システム、サーバ・コンピュータ・システム、シン・クライアント、シック・クライアント、ハンドヘルド・デバイスまたはラップトップ・デバイス、マルチプロセッサ・システム、マイクロプロセッサ-ベース・システム、セット・トップ・ボックス、プログラム可能消費者電子工学、ネットワークPC、ミニコンピュータ・システム、本体コンピュータ・システム、および上記システムまたはデバイスのうちのいずれかを含む分散クラウド計算環境、等々がある。
【0064】
コンピュータ・システム/サーバ12は、コンピュータ・システムによって実行されるプログラム・モジュールなどのコンピュータ・システム実行可能命令の一般文脈で記述することができる。通常、プログラム・モジュールは、特定のタスクを実施し、あるいは特定の抽象データ・タイプを実現するルーチン、プログラム、オブジェクト、コンポーネント、論理、データ構造、等々を含むことができる。コンピュータ・システム/サーバ12は、通信ネットワークを介してリンクされている遠隔処理デバイスによってタスクが実施される分散クラウド計算環境で実践することができる。分散クラウド計算環境では、プログラム・モジュールは、メモリ記憶デバイスを含むローカル・コンピュータ・システム記憶媒体および遠隔コンピュータ・システム記憶媒体の両方に配置することができる。
【0065】
図10に示されているように、計算ノード10の中のコンピュータ・システム/サーバ12は汎用計算デバイスの形態で示されている。コンピュータ・システム/サーバ12の構成要素は、それらに限定されないが、1つまたは複数のプロセッサすなわち処理ユニット16、システム・メモリ28、およびシステム・メモリ28を含む様々なシステム構成要素をプロセッサ16に結合するバス18を含むことができる。
【0066】
バス18は、メモリ・バスまたはメモリ・コントローラ、周辺バス、加速図形ポート、および様々なバス・アーキテクチャのうちのいずれかを使用したプロセッサまたはローカル・バスを含むいくつかのタイプのバス構造のうちの任意の1つまたは複数を表している。非制限の一例として、このようなアーキテクチャは、ISA(Industry Standard Architecture)バス、MCA(Micro Channel Architecture)バス、EISA(Enhanced ISA)バス、VESA(Video Electronics Standards Association)ローカル・バス、PCI(Peripheral Component Interconnect)バス、PCIe(Peripheral Component Interconnect Express)およびAMBA(Advanced Microcontroller Bus Architecture)を含む。
【0067】
様々な実施形態では、1つまたは複数の推論処理ユニット(図示せず)がバス18に結合される。このような実施形態では、IPUはバス18を介してメモリ28からデータを受け取ることができ、あるいはメモリ28にデータを書き込むことができる。同様に、IPUは、本明細書において説明されているように、バス18を介して他の構成要素と対話することができる。
【0068】
コンピュータ・システム/サーバ12は、典型的には様々なコンピュータ・システム可読媒体を含む。このような媒体は、コンピュータ・システム/サーバ12がアクセスすることができる利用可能な任意の媒体であってもよく、また、このような媒体は、揮発性媒体および不揮発性媒体の両方、取外し可能媒体および非取外し可能媒体の両方を含む。
【0069】
システム・メモリ28は、ランダム・アクセス・メモリ(RAM)30またはキャッシュ・メモリ32あるいはその両方などの揮発性メモリの形態のコンピュータ・システム可読媒体を含むことができる。コンピュータ・システム/サーバ12は、他の取外し可能/非取外し可能、揮発性/不揮発性コンピュータ・システム記憶媒体をさらに含むことができる。ほんの一例として、記憶システム34は、非取外し可能、不揮発性磁気媒体(図示せず、また、典型的には「ハード・ドライブ」と呼ばれる)から読み出し、かつ、書き込むために提供することができる。図には示されていないが、取外し可能、不揮発性磁気ディスク(例えば「フロッピー(R)・ディスク」)から読み出し、かつ、書き込むための磁気ディスク・ドライブ、およびCD-ROM、DVD-ROMまたは他の光媒体などの取外し可能、不揮発性光ディスクから読み出し、かつ、書き込むための光ディスク・ドライブを提供することができる。このような実例では、1つまたは複数のデータ媒体インタフェースによってそれぞれバス18に接続することができる。以下でさらに示され、かつ、説明されるように、メモリ28は、本開示の実施形態の機能を実施するように構成される一組の(例えば少なくとも1つの)プログラム・モジュールを有する少なくとも1つのプログラム製品を含むことができる。
【0070】
一組の(少なくとも1つの)プログラム・モジュール42を有するプログラム/ユーティリティ40、ならびにオペレーティング・システム、1つまたは複数のアプリケーション・プログラム、他のプログラム・モジュールおよびプログラム・データは、一例として、それには限定されないがメモリ28に記憶することができる。オペレーティング・システム、1つまたは複数のアプリケーション・プログラム、他のプログラム・モジュールおよびプログラム・データ、またはそれらのいくつかの組合せの各々は、ネットワーク化環境の実施態様を含むことができる。プログラム・モジュール42は、通常、本明細書において説明されている実施形態の機能または方法あるいはその両方を実施する。
【0071】
また、コンピュータ・システム/サーバ12は、キーボード、位置決め装置、ディスプレイ24、等々などの1つまたは複数の外部デバイス14、ユーザによるコンピュータ・システム/サーバ12との対話を可能にする1つまたは複数のデバイス、および/またはコンピュータ・システム/サーバ12による1つまたは複数の他の計算デバイスとの通信を可能にする任意のデバイス(例えばネットワーク・カード、モデム、等々)と通信することも可能である。このような通信は入力/出力(I/O)インタフェース22を介して生じ得る。さらに、コンピュータ・システム/サーバ12は、ローカル・エリア・ネットワーク(LAN)、汎用広域ネットワーク(WAN)、またはネットワーク・アダプタ20を介した公衆ネットワーク(例えばインターネット)あるいはその組合せなどの1つまたは複数のネットワークと通信することができる。示されているように、ネットワーク・アダプタ20は、バス18を介してコンピュータ・システム/サーバ12の他の構成要素と通信している。図には示されていないが、他のハードウェア構成要素またはソフトウェア構成要素あるいはその両方をコンピュータ・システム/サーバ12と共に使用することができることを理解されたい。例は、それらに限定されないが、マイクロコード、デバイス・ドライバ、冗長処理ユニット、外部ディスク・ドライブ・アレイ、RAIDシステム、テープ・ドライブおよびデータ・アーカイバル記憶システム、等々を含む。
【0072】
本開示は、システム、方法またはコンピュータ・プログラム製品あるいはその組合せとして具体化することができる。コンピュータ・プログラム製品は、プロセッサが本開示の態様を実施することになるコンピュータ可読プログラム命令をその上に有する1つまたは複数のコンピュータ可読記憶媒体を含むことができる。
【0073】
コンピュータ可読記憶媒体は、命令実行デバイスが使用するための命令を保持し、記憶することができる有形デバイスであってもよい。コンピュータ可読記憶媒体は、例えば、それらに限定されないが、電子記憶デバイス、磁気記憶デバイス、光記憶デバイス、電磁記憶デバイス、半導体記憶デバイスまたはそれらの任意の適切な組合せであってもよい。コンピュータ可読記憶媒体のより特定の例の非網羅的リストは、携帯型コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ(RAM)、リード-オンリ・メモリ(ROM)、消去可能プログラマブル・リード-オンリ・メモリ(EPROMまたはフラッシュ・メモリ)、スタティック・ランダム・アクセス・メモリ(SRAM)、携帯型コンパクト・ディスク・リード-オンリ・メモリ(CD-ROM)、デジタル・バーサタイル・ディスク(DVD)、メモリ・スティック、フロッピー(R)・ディスク、パンチ-カードまたは命令がその上に記録された溝の中の隆起構造などの機械符号化デバイス、およびそれらの任意の適切な組合せを含む。本明細書において使用されているコンピュータ可読記憶媒体は、それ自体、無線波または他の自由に伝搬する電磁波、導波路または他の伝送媒体を通って伝搬する電磁波(例えば光ファイバ・ケーブルを通過する光パルス)、またはワイヤを介して伝送される電気信号などの一過性信号として解釈してはならない。
【0074】
本明細書において説明されているコンピュータ可読プログラム命令は、コンピュータ可読記憶媒体からそれぞれの計算/処理デバイスにダウンロードすることができ、あるいはネットワーク、例えばインターネット、ローカル・エリア・ネットワーク、広域ネットワークまたは無線ネットワークあるいはその組合せを介して外部コンピュータまたは外部記憶デバイスにダウンロードすることができる。ネットワークは、銅伝送ケーブル、光伝送ファイバ、無線伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータまたはエッジ・サーバあるいはその組合せを備えることができる。個々の計算/処理デバイス中のネットワーク・アダプタ・カードまたはネットワーク・インタフェースは、ネットワークからコンピュータ可読プログラム命令を受け取り、かつ、それぞれの計算/処理デバイス内のコンピュータ可読記憶媒体に記憶するためにそのコンピュータ可読プログラム命令を転送する。
【0075】
本開示の操作を実施するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令-セット-アーキテクチャ(ISA)命令、機械命令、機械依存命令、マイクロコード、ファームウェア命令、状態設定データ、あるいはSmalltalk(R)、C++、等々などのオブジェクト指向プログラミング言語、および「C」プログラミング言語または同様のプログラミング言語などの従来の手続き形プログラミング言語を含む1つまたは複数のプログラミング言語の任意の組合せで作成されたソース・コードまたはオブジェクト・コードのいずれかであってもよい。コンピュータ可読プログラム命令は、その全体をユーザのコンピュータ上で実行し、一部を独立型ソフトウェア・パッケージとしてユーザのコンピュータ上で実行し、一部をユーザのコンピュータ上で、また、一部を遠隔コンピュータ上で実行し、あるいはその全体を遠隔コンピュータまたはサーバ上で実行することができる。後者のシナリオでは、遠隔コンピュータは、ローカル・エリア・ネットワーク(LAN)または広域ネットワーク(WAN)を含む任意のタイプのネットワークを介してユーザのコンピュータに接続することができ、あるいはこの接続は外部のコンピュータに対して実施することができる(例えばインターネット・サービス・プロバイダを使用してインターネットを介して)。いくつかの実施形態では、本開示の態様を実施するために、コンピュータ可読プログラム命令の状態情報を利用して電子回路機構をパーソナライズすることにより、例えばプログラマブル論理回路機構、書換え可能ゲート・アレイ(FPGA)またはプログラマブル論理アレイ(PLA)を含む電子回路機構がコンピュータ可読プログラム命令を実行することができる。
【0076】
本開示の態様は、本明細書においては、本開示の実施形態による方法、装置(システム)およびコンピュータ・プログラム製品のフローチャート図またはブロック図あるいはその両方を参照して説明されている。フローチャート図またはブロック図あるいはその両方の個々のブロック、およびフローチャート図またはブロック図あるいはその両方におけるブロックの組合せは、コンピュータ可読プログラム命令によって実現することができることは理解されよう。
【0077】
これらのコンピュータ可読プログラム命令は、コンピュータまたは他のプログラマブル・データ処理装置のプロセッサを介して実行する命令が、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックに指定されている機能/動作を実施するための手段を作り出すように、汎用コンピュータ、専用コンピュータまたは他のプログラマブル・データ処理装置のプロセッサに提供されてマシンを作り出すものであってよい。これらのコンピュータ可読プログラム命令は、命令を記憶したコンピュータ可読記憶媒体が、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックに指定されている機能/動作の態様を実施する命令を含む製造品を含むように、コンピュータ可読記憶媒体に記憶され、コンピュータ、プログラマブル・データ処理装置または他のデバイスあるいはその組合せに特定の方式で機能するように指示することができるものであってもよい。
【0078】
コンピュータ可読プログラム命令は、コンピュータ、他のプログラマブル装置または他のデバイス上で実行される命令が、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックに指定されている機能/動作を実施するように、コンピュータ実装プロセスを生成すべく、コンピュータ、他のプログラマブル・データ処理装置または他のデバイスにロードされ、コンピュータ、他のプログラマブル装置または他のデバイス上で一連の操作ステップを実行させるものであってもよい。
【0079】
図のフローチャートおよびブロック図は、本開示の様々な実施形態によるシステム、方法およびコンピュータ・プログラム製品の可能な実施態様のアーキテクチャ、機能性および操作を例証している。この点に関し、フローチャートまたはブロック図における個々のブロックは、指定されている1つまたは複数の論理機能を実現するための1つまたは複数の実行可能命令を含む、命令のモジュール、セグメントまたは部分を表すことができる。いくつかの代替実施態様では、ブロックの中で言及されている機能は、図の中で言及されている順序から外れて生じ得る。例えば連続して示されている2つのブロックは、実際、実質的に同時に実行することができ、あるいはこれらのブロックは、時によっては、含まれている機能性に応じて逆の順序で実行することも可能である。ブロック図またはフローチャート図あるいはその両方の個々のブロック、およびブロック図またはフローチャート図あるいはその両方におけるブロックの組合せは、指定された機能または動作を実施し、あるいは専用ハードウェアとコンピュータ命令の組合せを実施する専用ハードウェア・ベース・システムによって実現することができることにも留意されよう。