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

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

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

特許7581579複数次元のビジュアルアナリティクスのための空間的にスパースなニューラルネットワークアクセラレータ
<>
  • 特許-複数次元のビジュアルアナリティクスのための空間的にスパースなニューラルネットワークアクセラレータ 図1
  • 特許-複数次元のビジュアルアナリティクスのための空間的にスパースなニューラルネットワークアクセラレータ 図2
  • 特許-複数次元のビジュアルアナリティクスのための空間的にスパースなニューラルネットワークアクセラレータ 図3A
  • 特許-複数次元のビジュアルアナリティクスのための空間的にスパースなニューラルネットワークアクセラレータ 図3B
  • 特許-複数次元のビジュアルアナリティクスのための空間的にスパースなニューラルネットワークアクセラレータ 図3C
  • 特許-複数次元のビジュアルアナリティクスのための空間的にスパースなニューラルネットワークアクセラレータ 図4
  • 特許-複数次元のビジュアルアナリティクスのための空間的にスパースなニューラルネットワークアクセラレータ 図5
  • 特許-複数次元のビジュアルアナリティクスのための空間的にスパースなニューラルネットワークアクセラレータ 図6
  • 特許-複数次元のビジュアルアナリティクスのための空間的にスパースなニューラルネットワークアクセラレータ 図7
  • 特許-複数次元のビジュアルアナリティクスのための空間的にスパースなニューラルネットワークアクセラレータ 図8
  • 特許-複数次元のビジュアルアナリティクスのための空間的にスパースなニューラルネットワークアクセラレータ 図9
  • 特許-複数次元のビジュアルアナリティクスのための空間的にスパースなニューラルネットワークアクセラレータ 図10
  • 特許-複数次元のビジュアルアナリティクスのための空間的にスパースなニューラルネットワークアクセラレータ 図11
  • 特許-複数次元のビジュアルアナリティクスのための空間的にスパースなニューラルネットワークアクセラレータ 図12
  • 特許-複数次元のビジュアルアナリティクスのための空間的にスパースなニューラルネットワークアクセラレータ 図13
  • 特許-複数次元のビジュアルアナリティクスのための空間的にスパースなニューラルネットワークアクセラレータ 図14
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-11-05
(45)【発行日】2024-11-13
(54)【発明の名称】複数次元のビジュアルアナリティクスのための空間的にスパースなニューラルネットワークアクセラレータ
(51)【国際特許分類】
   G06F 17/10 20060101AFI20241106BHJP
   G06N 3/04 20230101ALI20241106BHJP
   G06N 3/10 20060101ALI20241106BHJP
【FI】
G06F17/10 A
G06N3/04
G06N3/10
【請求項の数】 4
【外国語出願】
(21)【出願番号】P 2021131382
(22)【出願日】2021-08-11
(65)【公開番号】P2022059564
(43)【公開日】2022-04-13
【審査請求日】2023-06-19
(31)【優先権主張番号】202041042682
(32)【優先日】2020-10-01
(33)【優先権主張国・地域又は機関】IN
(31)【優先権主張番号】17/131,121
(32)【優先日】2020-12-22
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】591003943
【氏名又は名称】インテル・コーポレーション
(74)【代理人】
【識別番号】110000877
【氏名又は名称】弁理士法人RYUKA国際特許事務所
(72)【発明者】
【氏名】カムレシュ ピレイ
(72)【発明者】
【氏名】ガープリート シン カルシ
(72)【発明者】
【氏名】スリーニバス サブラモニー
(72)【発明者】
【氏名】プラシャント ラッダ
(72)【発明者】
【氏名】オム ジ オマー
【審査官】田中 幸雄
(56)【参考文献】
【文献】特開2019-204436(JP,A)
【文献】特開2020-140507(JP,A)
【文献】特表2020-513637(JP,A)
【文献】特表2022-523762(JP,A)
【文献】特表2020-537786(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 17/10
G06N 3/04
G06N 3/10
(57)【特許請求の範囲】
【請求項1】
メモリと、
マイクロコントローラ回路と、を備え、
前記マイクロコントローラ回路は、
スパース性フォーマットに基づいてアクティベーション値を再配置することであって、再配置された前記アクティベーション値はアクティベーションバッファに格納されることと、
前記スパース性フォーマットの情報をエンコードするビットマスクに基づいて重みバッファからの第1の重みと、前記アクティベーションバッフからの第1の特徴とを、MAC回路のシストリックアレイ内の第1の積和(MAC)回路であって、第1のMAC演算を実行して第1の部分的な結果を生成する第1のMAC回路に割り当てることと、
前記ビットマスクに基づいて前記重みバッファからの第2の重みと、前記アクティベーションバッファからの第2の再配置されたアクティベーション値とを、MAC回路の前記シストリックアレイ内の第2の積和(MAC)回路であって、第2のMAC演算を実行して第2の部分的な結果を生成する第2のMAC回路に割り当てることと、
前記第1の部分的な結果と、前記第2の部分的な結果とを加算することと、
を行う、畳み込みニューラルネットワーク(CNN)ハードウェアアクセラレータ。
【請求項2】
前記マイクロコントローラ回路は、前記重み、および、前記再配置されたアクティベーション値MAC回路の前記シストリックアレイに割り当て、
前記重み、および、前記再配置されたアクティベーションは、第1の時間に処理される第1のグループと、第2の時間に処理される第2のグループとを有する、請求項1に記載のCNNハードウェアアクセラレータ。
【請求項3】
前記第1のグループおよび前記第2のグループは、異なる非ゼロの要素数を有する、請求項2に記載のCNNハードウェアアクセラレータ。
【請求項4】
MAC回路の前記シストリックアレイは、メモリアクセスの回数を減らすべく前記重みバッファおよび前記アクティベーションバッファ内の値を共有する、請求項1に記載のCNNハードウェアアクセラレータ。
【発明の詳細な説明】
【技術分野】
【0001】
[関連出願の相互参照]
本願は、2020年10月1日に出願されたインド仮特許出願番号第202041042682号の優先権を主張する。
【0002】
実施形態は、概して、ニューラルネットワークアクセラレータに関する。より具体的には、実施形態は、複数次元のビジュアルアナリティクスのための空間的にスパースなニューラルネットワークアクセラレータに関する。
【背景技術】
【0003】
セマンティックセグメンテーション及び現実世界のシーンの完成は、ロボット工学、医用画像、自動運転及びナビゲーション等の高レベルのアプリケーションに広く用いられる3次元(3D)視覚の基本的なプリミティブである。しかしながら、3Dビジュアルアナリティクスの計算及びメモリ要件は、ボクセルの解像度で3次元の複雑さで増大し得、リアルタイムのエネルギー効率の良い展開を実現の障害となる。
【図面の簡単な説明】
【0004】
以下の明細書及び添付の特許請求の範囲を読むことによって、且つ、以下の図面を参照することによって、実施形態の様々な利点が当業者に明らかになるだろう。
【0005】
図1】実施形態による、ルールブックのラインフォーマットの例を示す図である。
【0006】
図2】実施形態による、ルールブック作成手順の例を示す図である。
【0007】
図3A】実施形態による、異なるタイルオプションの例を示す図である。
図3B】実施形態による、異なるタイルオプションの例を示す図である。
図3C】実施形態による、異なるタイルオプションの例を示す図である。
【0008】
図4】実施形態による、ハードウェアアクセラレータ(HWA)及びメモリレイアウトの例のブロック図である。
【0009】
図5】実施形態による、重みプレーンがアクティブなボクセル実行スケジューラの例のブロック図である。
【0010】
図6】実施形態による、固定リソースベースのインデックスキュー及びリンクリストベースのインデックスキューを示す比較図である。
【0011】
図7】実施形態による、シストリック及びマルチキャストベースの積和計算(MAC)ハードウェアの例のブロック図である。
【0012】
図8】実施形態による、性能強化コンピューティングシステムを操作する方法の例のフローチャートである。
【0013】
図9】実施形態による、性能強化コンピューティングシステムを操作するより詳細な方法の例のフローチャートである。
【0014】
図10】実施形態による、特徴ストレージを管理する方法の例のフローチャートである。
【0015】
図11】実施形態による、性能強化コンピューティングシステムの例のブロック図である。
【0016】
図12】実施形態による、半導体装置の例を示す図である。
【0017】
図13】実施形態による、プロセッサの例のブロック図である。
【0018】
図14】実施形態による、マルチプロセッサベースのコンピューティングシステムの例のブロック図である。
【発明を実施するための形態】
【0019】
3Dビジュアルアナリティクスシナリオにおいて、データ処理に関与する計算リソースを減少させるべく、できる限りデータのスパース性を活用することがますます重要になる。従来の畳み込みネットワークの実装及び対応するアクセラレータは、密集したグリッドに存在するデータに最適化され得る。
【0020】
テンソルプロセッシングユニット(TPU、GOOGLE社)及びテンソルコア(NVIDIA社)等の商用のディープニューラルネットワーク(DNN又はDeNN)アクセラレータは、非常に規則正しいデータフローに最適化された高密度の2次元アレイを使用し得る。市販のスパースなアクセラレータは、2次元(2D)アレイに特化し得、要素の重複の決定を加速し得る。しかしながら、そのようなアクセラレータを用いるスパースな畳み込み処理は、非常に非効率的である場合がある。
【0021】
例えば、従来のアプリケーションが、中央演算処理装置(CPU、例えば、ホストプロセッサ)及びグラフィックス処理ユニット(GPU、例えば、グラフィックスプロセッサ)上にマッピングされ得るが、性能が依然としてリアルタイムの使用の要件をはるかに下回っている場合がある。実際に、空間的なスパース性に対処する試みは、CPU及びGPUのコンパイラ拡張であり得る。1つの従来のアプローチは、空間的にスパースなデータに対する効率的なデータ構造への高レベルのインタフェースを提供し得、CPU及びGPU上でスパースな計算のためのコードを生成し得る。他の従来のアプローチは、改善されたループタイル及びベクトル化を有するデータレイアウト及びカーネルテンプレートを用いるスパースな畳み込みのCPU実装を生成し得る。
【0022】
これらの従来の畳み込みネットワークの実装は、密集したグリッドに格納されているデータに最適化され得、スパースなデータを効率的に処理できない。さらに最近では、スパースなデータに効率的に動作するように適合され得るいくつかの畳み込みネットワークの実装が提示されている。数学的には、これらの実装の一部は、規則正しい畳み込みネットワークと同一であるが、それらは、毎秒の浮動小数点演算(FLOP)及び/又はメモリの観点から、より少ない計算リソースを要求する。以前の動作は、計算及びストレージを「アクティブ」なサイトに制限する「im2col」演算のスパース版を用いる、又は、ゼロによる不必要な乗算を削除する投票手順を用いる。
【0023】
他の解決手段は、ゼロ検出ブロックを用いてスパースなデータを処理し、処理要素(PE)ステージへのエントリの演算をスキップする固定機能のTMUL(tile matrix multiply)ユニットを用い得る。ストレージのために、解決手段は、CSR(Compression Sparse Row)及び/又はCSC(Compression Sparse Column)等のスパース圧縮アルゴリズムを用い得る。解決手段はまた、スパースなデータを処理するためのゼロ検出ロジックに依存し得る。しかしながら、解決手段は、2Dのスパース性に応じ得、3D視覚的理解アプリケーションの基本的な特性である、現実世界の3D空間的なスパース性に適合しない。端的に言えば、基本的な3Dスパースな畳み込み演算を加速させるハードウェアアクセラレータが提案されていない。
【0024】
それに応じて、畳み込みネットワークの以前のスパースの実装の重要な欠点は、それらが、完全な畳み込みを適用することによって、全ての層においてスパースなデータを拡張させることである。ゼロ検出ロジックの使用は、ハードウェアの不十分な利用率をもたらし得、これは、例えば、アレイ内で検出された各ゼロが(1/アレイサイズ)%の不十分な利用率を引き起こし得ることを考えると重要である。
【0025】
そのような3D視覚アプリケーションについて、実施形態は、領域及びパワーペナルティに大きな負担を課すことなく、効率的で拡張可能なハードウェア解決手段を提供する。より具体的には、実施形態は、ルールブックのフォーマットでエンコードされた3Dスパースなデータ(例えば、重みプレーンに対応する入力特徴マップ/IFMと出力特徴マップ/OFMとの間の関係)をデコードし得、効率的に処理し得るSSpNNA(Spatially Sparse Neural Network Accelerator)を含む。本明細書で説明される技術は、N次元のビジュアルアナリティクスに対するエンドトゥーエンドのハードウェア解決手段を提供する。実施形態はまた、ハードウェアを駆動する新しい命令を含む。ハードウェアは、1)空間的に分散されたボクセルOFMを再配置するためのフォーマットを実行するWAVES(Weight plane based Active Voxel Execution Scheduler)、及び、2)チャネル毎の計算及び出力要素の収集を実行するSyMAC(Systolic and Multicast based MAC Computation)の2つの主要なブロックを含み得る。提案された命令は、シームレスな処理のためにSSpNNAへの全ての要求されるポインタを提供し得る。SSpNNAアクセラレータアーキテクチャの利点は、それが、3Dビジュアルアナリティクスアプリケーションの実行の計算及びメモリ要件を著しく減少させ得ることである。
【0026】
図1は、ルールブックのラインフォーマット20を示す。示される例において、第1のルールブックライン22は、第1の入力チャネルインデックス(例えば、入力受容フィールド/IRF内の第1の入力ボクセルに対応する「IC-1」)の重みマスク(「101011――――110」)及び(例えば、出力応答フィールド/ORF内の有効な出力ボクセルに対応する)出力特徴インデックスのセットを指定する。重みマスク内の1の位置は、各出力特徴への第1の入力ボクセルの寄与を決定するために用いられる重みを指定する。例えば、左端位置の1値は、重みwが、左端の出力特徴インデックス(「OC6」)へのIC-1の寄与を決定するために用いられることを示し、左から3番目の位置の1値は、重みwが、出力特徴インデックス「OC9」に用いられること等を示す。同様に、第2のルールブック24は、第2の入力チャネルインデックス(「IC-2」)の重みマスク(「001010――――001」)及び出力特徴インデックスのセットを指定し得、第3のルールブックのライン26は、第3の入力チャネルインデックス(「IC-3」)の重みマスク(「100010――――000」)及び出力特徴インデックスのセットを指定し得る。
【0027】
示される例において、例えば、重みwが3つのルールブックのライン22、24、26の全てにわたって一様に用いられないので、重みごとの非対称性が存在する。さらに、例えば、第1のルールブックライン22における出力特徴の数が、第2のルールブック24における出力特徴の数とは異なるので、ルールブックのライン22、24、26ごとの非対称性が存在する。
【0028】
本明細書で説明されるSSpNNAは、従来の解決手段と比較してN次元(例えば、2より大きい次元の変数)のスパース処理を加速させ得、計算リソースの全体の利用率を約90%にまで増加させ得る。スパース処理をサポートすると共に、本明細書で説明されるハードウェアはまた、高密度の作業負荷に効率的に動作し得る。例えば、39層を有するScanNet(SCN)の作業負荷について、ハードウェアの利用率の範囲は、78.8%から98.7%までであるが、約93.20%の平均利用率を実現する。ハードウェアはまた、設定されるビットマスク(例えば、重みマスク)における全てのビットを処理することによって、高密度のニューラルネットワーク(NN)の作業負荷をサポートし得る。このより高い利用率は、以下のように要約されるマイクロアーキテクチャの強化によって実現される。
【0029】
[WAVES]
【0030】
N次元の空間的にスパースな畳み込み-機能ブロック領域のバジェットに基づいて一度に処理されるいくつかのプレーンを選択し、マイクロアーキテクチャが重みプレーンを階層的に処理するよう定義される。この特徴は、固定の畳み込みを超えて演算する設計を可能にする。例えば、32個の重みプレーンを有するハードウェアについて、3×3×3の畳み込み(27個の重みプレーン)が一緒に処理され得、5×5×5の畳み込み(125個の重みプレーン)が反復して処理され得る。
【0031】
動的リソース割り当て-スパース性に基づくメモリのより小さいチャンクの動的割り当ては、重みプレーンごとに固定リソースとしてマッピングされるストレージの代わりに、約1.5倍多くのルールブック(RB)のライン(rbライン)を収容するのに役立ち得る。
【0032】
重複エントリを減少させるためにインデックスを用いる入力チャネル(IC)ストレージ-入力から出力まで(i2o)又は出力から入力まで(o2i)の特徴マッピングが、重みストレージごとにペアとして格納され得る。ストレージの幅を減少させるため、特徴(例えば、32ビットの浮動小数点/FP数)が静的バッファに格納され得、対応するインデックス(例えば、8ビット)がデータストレージ(例えば、インデックスキュー)に格納され得、これは、特徴ストレージを約75%減少させるのに役立つ。
【0033】
同一のインデックスバッファを用いて異なるタイプのルールブック(i2o、o2i)の有効化-ルールブックのタイプ(例えば、i2oタイプ及びo2iタイプ)がアプリケーションに基づいて動的に選択され得る。例えば、本明細書で説明されるインデックスベースのストレージ技術は、インデックスキューの出力でデータを交換することによって、スケジューリングされる両方のタイプを有効にする(例えば、両方のRBタイプについて全体のWAVES設計を同一に保持する)。
【0034】
[SyMAC]
【0035】
3Dスパースな畳み込みのマイクロアーキテクチャ-実施形態は、動的なシストリックアレイ(例えば、強固に結合されたデータ処理ユニットDPU、セル、及び/又はノードの同種のネットワーク)として重みデータを共有するマイクロアーキテクチャを含む。さらに、入力特徴が(例えば、ドット積の結果の加算を実行する)複数の処理要素にマルチキャストされ得、出力特徴が部分的に加算され得る。これらの強化は、技術を異なるタイル次元に適用可能にする。
【0036】
ICデータバッファの最大限の再利用のための再循環バッファ- 複数のOFMにわたってIFMの再利用を増加させるために、ICデータバッファが、DeNN内の複数のPEにIC値を提供する再循環バッファとして実装され得る。
【0037】
特徴衝突検出及び加算-レベル1(L1)キャッシュの帯域幅を減少させるための出力特徴のキャッシング及び局所的な加算。
【0038】
[実装の詳細]
【0039】
図2は、ルールブック32のdrbラインの生成手順30を示す。実施形態において、ルールブック32のエンコードは、2つのタイプ-i2o(入力から出力までの関係)又はo2i(出力から入力までの関係)であり得る。示される例において、ルールブック32は、i2oデータ構造としてエンコードされる。タイルが、入力ボクセル若しくは出力ボクセル及び入力若しくは出力チャネルのサブセット(例えば、「タイル」として知られる各サブセット)がグループ化され得、次に、ステージで処理され得ることによって処理されて、メモリ及びデータアクセスを節約する。タイルは、パラメータdrb、dic及びdocのセットによって定義され得る。ここで、drbは、タイル内のrbラインの数を指し、dic及びdocはそれぞれ、タイル内の入力チャネル及び出力チャネルの数を指す。IFMタイルは、各ボクセルが要素(例えば、チャネル)のdic数を有する、di入力ボクセルで構成されている。同様に、OFMタイルは、do出力ボクセル及びボクセルごとのdoc要素(例えば、チャネル)を含む。i2oルールブック32について、drbはdiに等しく、doはスパース性に基づいてタイルにわたって変化し得る。o2iルールブックについて、drbはdoに等しく、diはスパース性に基づいてタイルにわたって変化し得る。
【0040】
説明の目的で、3×3のフィルタを有する2Dスパースの畳み込みが用いられ得る。位置(x;y)での入力がインデックスi=10で格納され、重み{w1;w2;w4;w6}を用いてアクティブな出力のセットORF10={7;5;10;8}に寄与する。ORF10={oj}及び対応する重みのビットマスクは、i2oルールブック32内の第1のラインを形成する。同様に、o2iルールブック32内の各ラインは、各出力インデックスoに対する重みのビットマスクと共にIRF={ij}を有する。網掛けのボックスは、drbラインの間のインデックスの重複を示す。
【0041】
図3A図3Cは、ハードウェアアクセラレータ(HWA)に対する主要要件がタイルで動作することを示す。ここで、IFMとOFMとの間の関係がルールブックのラインを用いて定義され、重みプレーンにわたるスパース性が重みプレーンのマスクにエンコードされる。これらのタイル間変形を有する効果的な計算オペレーションを実行することは、次元ごとの可変データのフェッチを含むが、内部データの局所性を最大限に活用する。
【0042】
より具体的には、図3Aは、OCがタイルにわたって共有される第1のタイルオプション40を示す。それに応じて、より多くのdic及び最小のdocを有するより少ない数のrbラインが存在し得る。図3Bは、ICがタイルにわたって共有される第2のタイルオプション42を示す。そのような場合、より多くのdoc及び最小のdicを有するより少ない数のrbラインが存在し得る。図3Cは、重みがタイルにわたって共有される第3のタイルオプション44を示す。それに応じて、より少ないdic及びdocを有するより多くの数のrbラインが存在し得る。示されるタイルの順序は、アプリケーションデータに基づいてソフトウェアによって動的に選択され得る。さらに、HWAは、限定されたメモリ帯域幅を有する全てのオプション40、42、44の下で加速することが可能であり得る。
【0043】
既に留意されたように、SSpNNA(Spatially Sparse Neural Network Accelerator)ハードウェアアクセラレータは、(a)WAVES-重みプレーンベースのアクティブボクセル実行スケジューラ、及び(b)SyMAC-シストリック及びマルチキャストベースのMAC計算の2つの主要ブロックを含み得る。実施形態において、SSpNNAは、シストリック及びブロードキャストアプローチを自動的に組み合わせるが、部分データをローカルに加算する。
【0044】
図4は、SSpNNAのHWA50及びメモリレイアウト52を示す。示される例において、設定及び制御ブロック54は、全体の実行を制御し、メモリアービター56は、メモリリクエストを仲裁し、インタフェースプロトコルを処理する。グローバルイベントコントローラ(不図示)は、L1キャッシュをロードし、新しく提案された命令に基づいてHWA50を設定した後、実行を開始し得る。起動時に、WAVESスケジューラ58は、RBヘッダのフェッチを開始し、重みプレーンに従って作業負荷の再フォーマットを実行する。WAVESスケジューラ58は、チャネル毎の計算及び出力要素の収集を実行するSyMAC計算ブロック60への動作をスケジューリングし得る。タイルデータ機構は、例えば、16Bインタフェースを有するスクラッチパッドとして用いられ得るL1メモリ内にある。i2oのRBの場合を考慮すれば、RBヘッダマスク及びヘッダのOインデックス(出力特徴インデックス/Idx)は、OFMインデックス及び対応するRB重みマスクのリストにインデックスを与える。IFMへのインデックスは、直線的に格納され得る重みマスクフィールドのインデックスである。RBヘッダのOFMインデックスは、OFMデータフィールドに格納されるOFM要素データにインデックスを与える。RBごとのOFMデータフィールド内のインデックスの数は、対応する重みマスク内の1の数からデコードされ得る。実施形態において、全てのメモリビットを利用するために、これらの要素が密集して圧縮される。要素のベースアドレスが、新しい命令にエンコードされ得、ハードウェアが対応する値を読み取ることに応じてデコードされ得る。RBヘッダがインデックスを正確にキャプチャするという条件で、IFMデータ、重みデータ、及びOFMデータは、任意順序で格納され得る。1つの例において、メモリポートの帯域幅に適合するために、要素が4の倍数に圧縮される。
【0045】
図5は、IFMと重みプレーンに対応するOFMとの間の関係をエンコードするルールブック作成手順の出力に基づいて演算するWAVESスケジューラ70を示す。すでに説明されたように、WAVESスケジューラ70は、WAVESスケジューラ58(図4)に容易に置換され得る。実施形態において、WAVESスケジューラ70は、RBヘッダ(HDR)プロセッサ72(72a-72c)、HDRフォーマット74(74a-74c)、及び、リンクリストバッファ76(76a-76d)を含む。WAVESスケジューラ70の演算は、マスク及びO-Idxデータをフェッチする第1のフェッチブロック72aから開始し得、これは、重み毎のOFM分配及びOFMインデックスのリストへのポインタを提供する。マスクアナライザ72bによって計算される重みマスク内の1の数に基づいて、OFMインデックスのそれぞれの数が、第2のフェッチブロック72cによってフェッチされる。
【0046】
メモリ読み取り遅延に適合するために、フェッチされたOFMインデックスがFIFO(first in first out、例えば静的バッファ)74cに格納され得、対応するヘッダ情報がFIFO74a(例えば、静的バッファ)に格納され得る。1つの例において、タプル形成ブロック74bは、同一の重みプレーンを共有する複数のIFM-OFMペアを組み合わせる。サイクルごとの4つのFP(Floating Point)要素のメモリ帯域幅に適合するために、タプル形成ブロック74bは、サイクルごとに4つのタプルを生成し得る。示されるリンクリストバッファ76は、インデックスキュー76a、76cを有し、計算のためのスケジューリングの前にタプルを保持し、マルチプレクサ76dを介して出力する。例えば、第2のインデックスキュー77cがフォーマット化されたルールブックを収集している間、第1のインデックスキュー76aがアクティブであり、計算の作業負荷をスケジューリングしているように(例えば、その逆のように)、インデックスキュー76a、76cは、ヘッダ形成ロジックを隠すよう複製される。インデックスキュー76a、76cは、キューコントローラ76bによって制御され得る。
【0047】
図6は、例えば、WAVESスケジューラ70(図5)等のスケジューラのリンクリストデータ構造80を示す。示される例において、固定リソースベースのインデックス-Q82は、受容フィールド内でアクティブボクセルの動的な分配を示す波状ラインを含む。フィルタ特性は重みプレーン13の周囲に対称性につながるが、SSpNNAは任意の分配をサポートし得る。マッピングがプレーンごとに固定型のハードウェアリソースを介して行われた場合、固定リソースベースのインデックス-Q82における垂直なラインは、作業負荷におけるスパース性の影響として活用されていないことを表す。SSpNNAにおいて、リンクリストベースのストレージアプローチが、リソースを動的に割り当て、ハードウェアの未活用を回避するよう適用される。したがって、リンクリストデータ構造80は、リンクリストベースの重みプレーン割り当てを用いる。ストレージをさらに減少させるべく、IFMインデックスがIFMインデックスバッファ84に格納され、当該情報へのインデックスがポインタテーブル86に格納される。
【0048】
より多くのリソースをより多くのアクティブな隣接するボクセルを有するプレーンに割り当てることによって、1.5-2倍多くのルールブックペンシルがSSpNNAの内部の同一サイズのメモリに収容されることが可能になり得る。既に留意されたように、入力から出力まで(i2o)及び出力から入力まで(o2i)のルールブックのタイプは、アプリケーションに基づいて動的に選択され得る。示されるインデックスベースのストレージ機構は、インデックスキュー76a、76c(図5)の出力でデータを交換することによって、スケジューリングされる両方のルールブックのタイプを有効にし、両方のRBタイプについて全体のWAVES設計を同一に保持する。N次元の課題について、WAVESは、重みプレーンの固定のタイルサイズで動作し得、依然として、完全なエンドトゥーエンド要件をサポートすることが可能である。さらに、高密度の作業負荷(例えば、重みビットマスク内の全てのビットセット)の利用率の低下が存在せず、WAVESは、任意の修正なしに解決手段をサポートする。
【0049】
図7は、異なるシストリックグループ92に操作する能力があるSyMAC計算ブロック90を示す。すでに説明されたように、SyMAC計算ブロック90は、SyMAC計算ブロック60(図4)に容易置換され得る。実施形態において、シストリックグループの選択が動的に行われ、スケジューラは、より大きなDeNNでグループを形成し、L1への重み要求を減少させようと常に試みる。より大きいシストリックグループを形成するために十分なタプルが利用可能でない重みプレーンの境界で、次の重みプレーンが他のグループとしてスケジューリングされる。DeNNブロック94内の全ての処理要素(PE)は、同一のIFMに直列で動作し、それぞれの重みは、パイプライン型の演算として4つの32ビット浮動小数点MACを実行して、部分的なOFMデータを生成する。全てのデータバスは、例えば、4つのIEEE754完全浮動小数点数を収容するために128ビット幅であり得る。実施形態において、各DeNNブロック94は、キューを用いるDeNN-Qを有し、リソースが送る準備が整う前にデータをバッファする。各DeNN-Qはまた、IFM及び重みデータのメモリフェッチをスケジューリングし得る。ICデータバッファ(例えば、再循環バッファ)及び重み(WT)ブロックは、PEにスケジューリングする前にメモリリクエストを配置し、データをバッファするロジックを含み得る。OC(出力チャネル)値が増加すると、ICデータバッファ内のIFMデータは、複数回再使用され得、IC(入力チャネル)値が増加すると、部分データの局所的な加算の割合は、PEが同一のOFMで動作することに応じて増加する。これらのモードは、IC及びOCの値に基づいて、自動的に有効にされ得る。これらの設計の選択は、内部データの再利用を増加させて、L1のアクセスを減少させる。
【0050】
加算(ACC)OFMブロック96は、複数のDeNNから生成された部分的なOFMを加算し得、重複するOFMを発見するためにタグ検索を実行し、重複するOFMをローカルにマージする。実施形態において、ACC OFMブロック96はまた、生成されたOFMでマージされるメモリから関連するOFMを要求する。DeNNごとに4つのPEを有する4つのDeNN構成は、サイクルごとのPEごとに4つの要素を計算し、SSpNNAがサイクルごとに64MUL演算をサポートすることを可能にする。SSpNNA構成を8つのDeNNに変更し、4つのDeNNの2つのシストリックグループで動作すると、サイクルごとの128MUL演算に性能をそれぞれ倍増させ、重みのために任意の追加メモリポートを要求しない。
【0051】
SSpNNAは、任意の利用可能な解決手段と比較してN次元のスパース処理を加速させ、計算リソースの全体の利用率を約90%まで押し上げる。このHWAは、以下の命令がSSpNNAのハードウェアを駆動するために用いられ得る、スタンドアロンのアクセラレータ又はコプロセッサとして用いられ得る。
【0052】
新しい命令は、SSXRBLNIFMOF「N」の入力特徴を有し、「M」の出力特徴を有する「X」のルールブックのラインを有する空間的なスパース性(Spatial Sparse with 'X' Rule Book lines having 'N' input Feature and 'M' Output Feature)」である。ここで、「X」は処理されるべきルールブックのラインの数を示し、「N」及び「M」はそれぞれ、入力特徴サイズ及び出力特徴サイズを表す。例えば、16個の入力及び出力特徴マップで処理されるべき32個のルールブックのラインが存在する場合、命令はSS32RBL16IF16OFである。IFM及びOFMのサイズは、ルールブック全体に対して同一のままであり得、メモリ帯域幅に適合するために4の倍数であり得る。
【0053】
実施形態において、命令のフォーマットは、SSXRBLNIFMOF tsrcdest、tsrc1、tsrc2、tsrc3である。ここで、tsrcdestは、部分的/処理されたデータを読み取り、ライトバックするためのOFMベースアドレスを指し、tsrc1は、ルールブックのラインのベースアドレスを表し、tsrc2及びtsrc3はそれぞれ、IFM及びOFMのベースアドレスを表す。
【0054】
図8は、性能強化コンピューティングシステムを操作する方法100を示す。すでに説明されたように、方法100は、概して、例えば、HWA50(図4)等のハードウェアアクセラレータに実装され得る。より具体的には、方法100は、ランダムアクセスメモリ(RAM)、リードオンリーメモリ(ROM)、プログラマブルROM(PROM)、ファームウェア、フラッシュメモリ等の機械又はコンピュータ可読記憶媒体に格納されているロジック命令のセット、例えば、プログラマブルロジックアレイ(PLA)、フィールドプログラマブルゲートアレイ(FPGA)、コンプレックスプログラマブルロジックデバイス(CPLD)等の設定可能なロジック、例えば、特定用途向け集積回路(ASIC)、相補的金属酸化膜半導体(CMOS)若しくはトランジスタ-トランジスタロジック(TTL)技術等の回路技術を用いる機能固定型ロジックハードウェア、又はそれらの任意の組み合わせとして、1又は複数のモジュールに実装され得る。
【0055】
例えば、方法100に示されるオペレーションを実行するコンピュータプログラムコードは、JAVA(登録商標)、SMALLTALK(登録商標)、C++、又は同様のもの等のオブジェクト指向プログラミング言語、及び、「C」プログラミング言語又は同様のプログラミング言語等の従来の手続き型プログラミング言語を含む、1又は複数のプログラミング言語の任意の組み合わせで記述され得る。さらに、ロジック命令は、アセンブラ命令、命令セットアーキテクチャ(ISA)命令、マシン命令、マシン依存命令、マイクロコード、状態設定データ、集積回路用の設定データ、電子回路をパーソナライズする状態情報、及び/又は、ハードウェア固有の他の構造コンポーネント(例えば、ホストプロセッサ、中央演算処理装置/CPU、マイクロコントローラ等)を含み得る。
【0056】
示される処理ブロック102は、処理されるべきルールブックの数、入力特徴サイズ、出力特徴サイズ、及び、複数の特徴マップベースアドレスを示す命令を用いてデータをデコードする。実施形態において、ブロック104は、重みプレーンに基づいて、空間的に分散されたボクセルOFMをデコードされたデータに再配置する。1つの例において、ブロック104は、OFMアドレスの最下位ビット(LSB)ハッシュに基づいて、OFMを配置する。したがって、たとえ、処理要素が任意の順序で実行している場合でも、一旦次のブロックが到達すると、OFMは、最初に、ハッシュ値(例えば、LSBビット)に基づいて、次に、OFMが加算される対応するチャネルに基づいて、再配置される。
【0057】
ブロック106は、出力を取得するために、再配置された空間的に分散されたボクセルOFMにチャネル毎のMAC演算を実行する。ここで、チャネル毎のMAC演算は、コンピューティングシステム内の複数の処理要素によって部分的な加算として実行される。実施形態において、ブロック106は、データのスパース性に基づいて、複数の処理要素を割り当てる。さらに、チャネル毎のMAC演算は、重複するOFMを(例えば、タグ検索を用いて)識別し得、重複するOFMを(例えば、グローバルではなく)ローカルにマージし得る。示される方法100は、少なくとも、命令がよりシームレスで効率的な実行を容易にし、重みプレーンに基づいて空間的に分散されたボクセルを再配置することによって計算及びメモリ要件を減少させ、及び/又は、複数の処理要素による部分的な加算としてチャネル毎のMAC演算を実行することによってサイクルごとの演算の数を増加させる程度にまで性能を強化する。
【0058】
図9は、性能強化コンピューティングシステムを操作するより詳細な方法110を示す。すでに説明されたように、方法110は、概して、例えば、HWA50(図4)等のハードウェアアクセラレータに実装され得る。より具体的には、方法110は、RAM、ROM、PROM、ファームウェア、フラッシュメモリ等のマシン又はコンピュータ可読記憶媒体に格納されているロジック命令のセット、例えば、PLA、FPGA、CPLD等の設定可能なロジック、例えば、ASIC、CMOS、若しくはTTL技術等の回路技術を用いる機能固定型ロジックハードウェア、又はそれらの任意の組み合わせとして、1又は複数のモジュールに実装され得る。
【0059】
示される処理ブロック112は、アプリケーション情報に基づいて、ルールブックのタイプを選択する。ここで、ルールブックのタイプは、i2oタイプ又はo2iタイプのうちの1つである。ブロック114は、データのスパース性に基づいて、メモリを割り当て得る。例えば、ブロック114は、スパース性に基づいて、メモリのより小さいチャンクの動的割り当てを提供し得、これは、重みプレーンごとに固定リソースとしてマッピングされるストレージと比較して、約1.5倍多いルールブックのラインを収容するのに役立ち得る。実施形態において、ブロック116は、L1キャッシュからデータを読み取る。ここで、データは、2より大きい次元の変数を有し、データは、ルールブックのタイプと関連しているルールブックのラインフォーマットにある。したがって、ブロック116は、機能ブロック領域のバジェットに基づいて、一度にいくつかのプレーンを選択することによって、アーキテクチャが重みプレーンを階層的に処理することを可能にする。1つの例において、ブロック118は、処理されるべきルールブックの数、入力特徴サイズ、出力特徴サイズ、及び、複数の特徴マップベースアドレスを示す命令を用いてデータをデコードする。
【0060】
さらに、ブロック120は、重みプレーンに基づいて、空間的に分散されたボクセルOFMをデコードされたデータに再配置し得る。実施形態において、ブロック122は、ルールブックのタイプに基づいて、インデックスキューからの出力データを交換する。したがって、ブロック122は、i2oタイプ及びo2iタイプのルールブックの両方が同一のスケジューラアーキテクチャでスケジューリングされることを可能にする。示されるブロック124は、出力を取得するために、再配置された空間的に分散されたボクセルOFMにチャネル毎のMAC演算を実行する。ここで、チャネル毎のMAC演算は、複数の処理要素によって部分的な加算として実行される。それに応じて、ブロック112、114、116及び122は、性能をさらに強化する。
【0061】
図10は、特徴ストレージを管理する方法130を示す。すでに説明されたように、方法130は、概して、例えば、HWA50(図4)等のハードウェアアクセラレータに実装され得る。より具体的には、方法130は、RAM、ROM、PROM、ファームウェア、フラッシュメモリ等のマシン又はコンピュータ可読記憶媒体に格納されているロジック命令のセット、例えば、PLA、FPGA、CPLD等の設定可能なロジック、例えば、ASIC、CMOS若しくはTTL技術等の回路技術を用いる機能固定型ロジックハードウェア、又はそれらの任意の組み合わせとして、1又は複数のモジュールに実装され得る。
【0062】
示される処理ブロック132は、特徴ペア情報(例えば、IFM-OFM)を静的バッファに格納することを提供する。実施形態において、ブロック134は、特徴マッピングペア情報に対応するインデックス情報をデータストレージ位置に格納する。方法130は、用いられるストレージの幅を著しく減少させ得る。
【0063】
ここで、図11を参照すると、性能強化コンピューティングシステム140が示される。システム140は、概して、コンピューティング機能(例えば、携帯情報端末/PDA、ノート型コンピュータ、タブレット型コンピュータ、コンバーチブル型タブレット、サーバ)、通信機能(例えば、スマートフォン)、撮像機能(例えば、カメラ、カムコーダ)、メディア再生機能(例えば、スマートテレビジョン/TV)、ウェアラブル機能(例えば、腕時計、眼鏡、帽子、履き物、宝石)、車両機能(例えば、車、トラック、バイク)、ロボット機能(例えば、自律ロボット)、モノのインターネット(IoT)機能等、又はそれらの任意の組み合わせを有する電子デバイス/プラットフォームの一部であり得る。示される例において、システム140は、システムメモリ146に結合されている統合メモリコントローラ(IMC)144を有するホストプロセッサ142(例えば、中央演算処理装置/CPU)を含む。
【0064】
示されるシステム140はまた、システムオンチップ(SoC)として半導体ダイ152上にホストプロセッサ142、アクセラレータ151、及びグラフィックスプロセッサ150(例えば、グラフィックス処理ユニット/GPU)と共に実装される入出力(IO)モジュール148を含む。示されるIOモジュール148は、例えば、ディスプレイ154(例えば、タッチスクリーン、液晶ディスプレイ/LCD、発光ダイオード/LEDディスプレイ)、ネットワークコントローラ156(例えば、有線及び/又は無線)、及び大容量ストレージ158(例えば、ハードディスクドライブ/HDD、光ディスク、ソリッドステートドライブ/SSD、フラッシュメモリ)と通信する。
【0065】
実施形態において、すでに説明されたように、アクセラレータ151は、方法100(図8)、方法110(図9)、及び/又は方法130(図10)のうちの1又は複数の態様を実行するためのロジック160(例えば、ロジック命令、設定可能なロジック、機能固定型ハードウェアロジック等、又はそれらの任意の組み合わせ)を含む。したがって、ロジック160は、処理されるべきルールブックの数、入力特徴サイズ、出力特徴サイズ、及び、複数の特徴マップベースアドレスを示す命令を用いてデータをデコードすることを行い得る。ロジック160はまた、重みプレーンに基づいて、空間的に分散されたボクセルの出力特徴マップをデコードされたデータに再配置することと、出力を取得するために、再配置された空間的に分散されたボクセル出力特徴マップにチャネル毎のMAC演算を実行することとを行い得る。実施形態において、チャネル毎のMAC演算は、アクセラレータ151、ホストプロセッサ142、グラフィックスプロセッサ150、IOモジュール148、及び/又は半導体ダイ152内の複数の処理要素によって部分的な加算として実行される。
【0066】
コンピューティングシステム140は、少なくとも、命令がよりシームレスで効率的な実行を容易にし、重みプレーンに基づいて空間的に分散されたボクセルを再配置することによって計算及びメモリ要件を減少させ、及び/又は、複数の処理要素による部分的な加算としてチャネル毎のMAC演算を実行することによってサイクルごとの演算の数を増加させる程度にまで性能強化されているとみなされる。
【0067】
図12は、半導体パッケージ装置170を示す。示される装置170は、1又は複数の基板172(例えば、シリコン、サファイア、ヒ化ガリウム)と、基板172に結合されているロジック174(例えば、トランジスタアレイ及び他の集積回路/ICコンポーネント)とを含む。ロジック174は、設定可能なロジック又は機能固定型ロジックハードウェアに少なくとも部分的に実装され得る。すでに説明されたように、1つの例において、ロジック174は、方法100(図8)、方法110(図9)、及び/又は方法130(図10)のうちの1又は複数の態様を実装する。したがって、ロジック174は、処理されるべきルールブックの数、入力特徴サイズ、出力特徴サイズ、及び、複数の特徴マップベースアドレスを示す命令を用いてデータをデコードすることを行い得る。ロジック174はまた、重みプレーンに基づいて、空間的に分散されたボクセルの出力特徴マップをデコードされたデータに再配置することと、出力を取得するために、再配置された空間的に分散されたボクセル出力特徴マップにチャネル毎のMAC演算を実行することとを行い得る。実施形態において、チャネル毎のMAC演算は、1又は複数の基板172に結合されているロジック174内の複数の処理要素によって部分的な加算として実行される。
【0068】
装置170は、少なくとも、命令がよりシームレスで効率的な実行を容易にし、重みプレーンに基づいて空間的に分散されたボクセルを再配置することによって計算及びメモリ要件を減少させ、及び/又は、複数の処理要素による部分的な加算としてチャネル毎のMAC演算を実行することによってサイクルごとの演算の数を増加させる程度まで性能強化されているとみなされる。
【0069】
1つの例において、ロジック174は、基板172内に配置される(例えば、埋め込まれる)トランジスタチャネル領域を含む。したがって、ロジック174と基板172との間のインタフェースは、階段結合でない場合がある。ロジック174はまた、基板172の初期のウェハ上に成長するエピタキシャル層を含むとみなされ得る。
【0070】
図13は、一実施形態による、プロセッサコア200を示す。プロセッサコア200は、マイクロプロセッサ、埋め込み型プロセッサ、デジタル信号プロセッサ(DSP)、ネットワークプロセッサ、又は、コードを実行する他のデバイス等の任意のタイプのプロセッサに対するコアであり得る。1つのプロセッサコア200のみが図13に示されているが、処理要素は、代替的に、図13に示されるプロセッサコア200の1より多くのものを含み得る。プロセッサコア200は、シングルスレッドコアであってもよく、又は、少なくとも一実施形態について、プロセッサコア200は、それが、コアごとに1つより多のハードウェアスレッドコンテキスト(若しくは「論理プロセッサ」)を含み得る、という点でマルチスレッドであってもよい。
【0071】
図13はまた、プロセッサコア200に結合されているメモリ270を示す。メモリ270は、当業者によって既知か、そうでなければ当業者に利用可能な(メモリ階層の様々な層を含む)多種多様なメモリのいずれかであり得る。メモリ270は、プロセッサコア200によって実行される1又は複数のコード213の命令を含み得る。ここで、すでに説明されたように、コード213は、方法100(図8)、方法110(図9)、及び/又は、方法130(図10)のうちの1又は複数の態様を実装し得る。プロセッサコア200は、コード213によって示される命令のプログラムシーケンスに従う。各命令は、フロントエンド部210に入り得、1又は複数のデコーダ220によって処理され得る。デコーダ220は、予め定義されたフォーマットの固定幅マイクロオペレーション等のマイクロオペレーションをその出力として生成してもよく、又は、元のコード命令を反映する他の命令、マイクロ命令、若しくは制御信号を生成してもよい。示されるフロントエンド部210はまた、レジスタリネーミングロジック225と、スケジューリングロジック230とを含み、それらは概して、リソースを割り当て、変換命令に対応するオペレーションを実行のためにキューに入れる。
【0072】
プロセッサコア200は、実行ユニット255-1から255-Nまでのセットを有する実行ロジック250を含むように示される。いくつかの実施形態は、特定の機能又は機能のセット専用の複数の実行ユニットを含み得る。他の実施形態は、1つの実行ユニットのみを含んでもよく、特定の機能を実行できる1つの実行ユニットを含んでもよい。示される実行ロジック250は、コード命令によって指定されるオペレーションを実行する。
【0073】
コード命令によって指定されるオペレーションの実行を完了した後、バックエンドロジック260は、コード213の命令をリタイアさせる。一実施形態において、プロセッサコア200は、アウトオブオーダの実行を可能にするが、命令のインオーダリタイアメントを要求する。リタイアメントロジック265は、当業者に既知の様々な形態をとり得る(例えば、リオーダバッファ又は同様のもの)。このようにして、プロセッサコア200は、少なくとも、デコーダによって生成される出力、レジスタリネーミングロジック225によって利用されるハードウェアレジスタ及びテーブル、並びに、実行ロジック250によって修正される任意のレジスタ(不図示)の観点から、コード213の実行中に変換される。
【0074】
図13に示されていないが、処理要素は、プロセッサコア200を有するチップ上に他の要素を含み得る。例えば、処理要素は、プロセッサコア200と共にメモリ制御ロジックを含み得る。処理要素は、I/O制御ロジックを含み得、及び/又は、メモリ制御ロジックと一体化されているI/O制御ロジックを含み得る。処理要素はまた、1又は複数のキャッシュを含み得る。
【0075】
ここで、図14を参照すると、実施形態に従うコンピューティングシステム1000の実施形態のブロック図が示される。図14に示されるものは、第1の処理要素1070及び第2の処理要素1080を含むマルチプロセッサシステム1000である。2つの処理要素1070及び1080が示されているが、システム1000の実施形態はまた、1つのそのような処理要素のみを含み得ることが理解される。
【0076】
システム1000は、ポイントツーポイントインターコネクトシステムとして示される。ここで、第1の処理要素1070及び第2の処理要素1080が、ポイントツーポイントインターコネクト1050を介して結合されている。図14に示される任意又は全てのインターコネクトは、ポイントツーポイントインターコネクトではなくマルチドロップバスとして実装され得ることが理解されるべきである。
【0077】
図14に示されるように、処理要素1070及び1080のそれぞれは、第1のプロセッサコア及び第2のプロセッサコア(すなわち、プロセッサコア1074a及び1074b、並びに、プロセッサコア1084a及び1084b)を含むマルチコアプロセッサであり得る。そのようなコア1074a、1074b、1084a、1084bは、図13に関連して上述したものと同様の態様で、命令コードを実行するよう構成され得る。
【0078】
各処理要素1070、1080は、少なくとも1つの共有キャッシュ1896a、1896bを含み得る。共有キャッシュ1896a、1896bは、コア1074a、1074b及び1084a、1084b等のプロセッサの1又は複数のコンポーネントによって利用されるデータ(例えば、命令)をそれぞれ格納し得る。例えば、共有キャッシュ1896a、1896bは、プロセッサのコンポーネントによるより高速なアクセスのために、メモリ1032、1034に格納されたデータをローカルにキャッシュし得る。1又は複数の実施形態において、共有キャッシュ1896a、1896bは、レベル2(L2)、レベル3(L3)、レベル4(L4)若しくは他のレベルのキャッシュ等の1又は複数の中間レベルキャッシュ、ラストレベルキャッシュ(LLC)、及び/又はそれらの組み合わせを含み得る。
【0079】
2つの処理要素1070、1080のみが示されているが、実施形態の範囲がそのように限定されないことが理解されるべきである。他の実施形態において、1又は複数の追加の処理要素が所与のプロセッサに存在し得る。代替的に、1又は複数の処理要素1070、1080は、アクセラレータ又はフィールドプログラマブルゲートアレイ等のプロセッサ以外の要素であり得る。例えば、追加の処理要素は、第1のプロセッサ1070と同一である追加のプロセッサ、第1のプロセッサ1070と異種又は非対称である追加のプロセッサ、アクセラレータ(例えば、グラフィックスアクセラレータ又はデジタル信号処理(DSP)ユニット等)、フィールドプログラマブルゲートアレイ、又は任意の他の処理要素を含み得る。アーキテクチャ特性、マイクロアーキテクチャ特性、熱特性、電力消費特性、及び同様のものを含む、多種多様の価値基準の観点から、処理要素1070、1080間に様々な差異が存在し得る。これらの差異は、処理要素1070、1080の間の非対称性及び異種性として、自身を効果的に表し得る。少なくとも一実施形態について、様々な処理要素1070、1080は、同一のダイパッケージに存在し得る。
【0080】
第1の処理要素1070は、メモリコントローラロジック(MC)1072、並びに、ポイントツーポイント(P-P)インタフェース1076及び1078をさらに含み得る。同様に、第2の処理要素1080は、MC1082、並びに、P-Pインタフェース1086及び1088を含み得る。図14に示されるように、MC1072及び1082は、プロセッサをそれぞれのメモリ、すなわち、メモリ1032及びメモリ1034に結合する。これらのメモリは、それぞれのプロセッサにローカルに取り付けられたメインメモリの一部であり得る。MC1072及び1082が処理要素1070、1080に統合されているものとして示されているが、代替の実施形態について、MCロジックは、それらに統合されているものではなく、処理要素1070、1080の外部の個別のロジックであり得る。
【0081】
第1の処理要素1070及び第2の処理要素1080は、それぞれ、P-Pインターコネクト1076、1086を介して、I/Oサブシステム1090に結合され得る。図14に示されるように、I/Oサブシステム1090は、P-Pインタフェース1094及び1098を含む。さらに、I/Oサブシステム1090は、I/Oサブシステム1090を高性能グラフィックスエンジン1038と結合するインタフェース1092を含む。一実施形態において、バス1049は、グラフィックスエンジン1038をI/Oサブシステム1090に結合するために用いられ得る。代替的に、ポイントツーポイントインターコネクトは、これらのコンポーネントを結合し得る。
【0082】
次に、I/Oサブシステム1090は、インタフェース1096を介して、第1のバス1016に結合され得る。一実施形態において、第1のバス1016は、ペリフェラルコンポーネントインターコネクト(PCI)バス、又は、PCIエクスプレスバス、若しくは他の第3世代のI/Oインターコネクトバス等のバスであり得るが、実施形態の範囲がそれらに限定されない。
【0083】
図14に示されるように、様々なI/Oデバイス1014(例えば、生体スキャナ、スピーカ、カメラ、センサ)は、第1のバス1016を第2のバス1020に結合し得るバスブリッジ1018と共に、第1のバス1016に結合され得る。一実施形態において、第2のバス1020は、ローピンカウント(LPC)バスであり得る。一実施形態において、例えば、キーボード/マウス1012、通信デバイス1026、及び、コード1030を含み得るディスクドライブ又は他の大容量ストレージデバイス等のデータストレージユニット1019を含む様々なデバイスは、第2のバス1020に結合され得る。すでに説明されたように、示されるコード1030は、方法100(図8)、方法110(図9)、及び/又は、方法130(図10)のうちの1又は複数の態様を実装し得る。さらに、オーディオI/O1024が第2のバス1020に結合され得、バッテリ1010がコンピューティングシステム1000に電力を供給し得る。
【0084】
他の実施形態が考えられることに留意されたい。例えば、図14のポイントツーポイントアーキテクチャではなく、システムは、マルチドロップバス又は他のそのような通信トポロジーを実装し得る。また、図14の要素は、代替的に、図14に示されるものより多い又は少ない統合チップを用いて分割され得る。
【0085】
[追加の注記及び例]
【0086】
(例1)性能強化コンピューティングシステムであって、ネットワークコントローラと、上記ネットワークコントローラに結合されているプロセッサと、上記プロセッサに結合されているメモリとを備え、上記メモリは、上記プロセッサによって実行されるときに、上記コンピューティングシステムに、処理されるべきルールブックの数、入力特徴サイズ、出力特徴サイズ、及び、複数の特徴マップベースアドレスを示す命令を用いてデータをデコードすることと、重みプレーンに基づいて、空間的に分散されたボクセルの出力特徴マップを上記デコードされたデータに再配置することと、出力を取得するために、再配置された上記空間的に分散されたボクセル出力特徴マップにチャネル毎の積和(MAC)演算を実行することであって、上記チャネル毎のMAC演算は、上記プロセッサ内の複数の処理要素によって部分的な加算として実行される、MAC演算を実行することを行わせる実行可能プログラム命令のセットを含む、性能強化コンピューティングシステムを含む。
【0087】
(例2)上記実行可能プログラム命令のセットは、実行されるとき、上記コンピューティングシステムに、アプリケーション情報に基づいて、ルールブックのタイプを選択することをさらに行わせ、上記ルールブックのタイプは、入力から出力までのタイプ又は出力から入力までのタイプのうちの1つである、例1のコンピューティングシステムを含む。
【0088】
(例3)上記実行可能プログラム命令のセットは、実行されるとき、上記コンピューティングシステムにレベル1(L1)キャッシュから上記データを読み取ることをさらに行わせ、上記データは、2より大きい次元の変数を有し、上記データは、上記ルールブックのタイプと関連しているルールブックのラインフォーマットにある、例2のコンピューティングシステムを含む。
【0089】
(例4)上記実行可能プログラム命令のセットは、実行されるとき、上記コンピューティングシステムに、上記ルールブックのタイプに基づいて、インデックスキューからの出力データを交換することをさらに行わせる、例2のコンピューティングシステムを含む。
【0090】
(例5)上記実行可能プログラム命令のセットは、実行されるとき、上記コンピューティングシステムに、上記データのスパース性に基づいて、メモリ及び上記複数の処理要素を割り当てることをさらに行わせ、上記チャネル毎のMAC演算は、重複する出力特徴マップを識別し、上記重複する出力特徴マップをローカルにマージする、例1のコンピューティングシステムを含む。
【0091】
(例6)静的バッファとデータストレージとをさらに含み、上記実行可能プログラム命令のセットは、実行されるとき、上記コンピューティングシステムに、特徴マッピングペア情報を上記静的バッファに格納することと、上記特徴マッピングペア情報に対応するインデックス情報を上記データストレージ内の位置に格納することとをさらに行わせる、例1から例5のいずれか1つのコンピューティングシステムを含む。
【0092】
(例7)1又は複数の基板と、上記1又は複数の基板に結合されているロジックとを備え、上記ロジックは、1又は複数の設定可能なロジック又は機能固定型ハードウェアロジックに少なくとも部分的に実装され、上記1又は複数の基板に結合されている上記ロジックは、処理されるべきルールブックの数、入力特徴サイズ、出力特徴サイズ、及び、複数の特徴マップベースアドレスを示す命令を用いてデータをデコードすることと、重みプレーンに基づいて、空間的に分散されたボクセルの出力特徴マップを上記デコードされたデータに再配置することと、出力を取得するために、再配置された上記空間的に分散されたボクセル出力特徴マップにチャネル毎の積和(MAC)演算を実行することであって、上記チャネル毎のMAC演算は、上記1又は複数の基板に結合されている上記ロジック内の複数の処理要素によって部分的な加算として実行される、MAC演算を実行することとを行う、半導体装置を含む。
【0093】
(例8)上記1又は複数の基板に結合されている上記ロジックは、アプリケーション情報に基づいて、ルールブックのタイプを選択することを行い、上記ルールブックのタイプは、入力から出力までのタイプ又は出力から入力までのタイプのうちの1つである、例7の装置を含む。
【0094】
(例9)上記1又は複数の基板に結合されている上記ロジックは、レベル1(L1)キャッシュから上記データを読み取ることを行い、上記データは、2より大きい次元の変数を有し、上記データは、上記ルールブックのタイプと関連しているルールブックのラインフォーマットにある、例8の装置を含む。
【0095】
(例10)上記1又は複数の基板に結合されている上記ロジックは、上記ルールブックのタイプに基づいて、インデックスキューからの出力データを交換することを行う、例8の装置を含む。
【0096】
(例11)上記1又は複数の基板に結合されている上記ロジックは、上記データのスパース性に基づいて、メモリ及び上記複数の処理要素を割り当てることを行い、上記チャネル毎のMAC演算は、重複する出力特徴マップを識別し、上記重複する出力特徴マップをローカルにマージする、例7の装置を含む。
【0097】
(例12)上記1又は複数の基板に結合されている上記ロジックは、特徴マッピングペア情報を静的バッファに格納することと、上記特徴マッピングペア情報に対応するインデックス情報をデータストレージ位置に格納することとを行う、例7から例11までのいずれか1つの装置を含む。
【0098】
(例13)上記1又は複数の基板に結合されている上記ロジックは、上記1又は複数の基板内に位置しているトランジスタチャネル領域を含む、例7から例11までのいずれか1つの装置を含む。
【0099】
(例14)コンピューティングシステムによって実行されるとき、上記コンピューティングシステムに、処理されるべきルールブックの数、入力特徴サイズ、出力特徴サイズ、及び、複数の特徴マップベースアドレスを示す命令を用いてデータをデコードすることと、重みプレーンに基づいて、空間的に分散されたボクセルの出力特徴マップを上記デコードされたデータに再配置することと、出力を取得するために、再配置された上記空間的に分散されたボクセル出力特徴マップにチャネル毎の積和(MAC)演算を実行することであって、上記チャネル毎のMAC演算は、上記コンピューティングシステム内の複数の処理要素によって部分的な加算として実行される、MAC演算を実行することとを行わせる、実行可能プログラム命令のセットを備える、少なくとも1つのコンピュータ可読記憶媒体を含む。
【0100】
(例15)上記実行可能プログラム命令のセットは、実行されるとき、上記コンピューティングシステムに、アプリケーション情報に基づいて、ルールブックのタイプを選択することをさらに行わせ、上記ルールブックのタイプは、入力から出力までのタイプ又は出力から入力までのタイプのうちの1つである、例14の少なくとも1つのコンピュータ可読記憶媒体を含む。
【0101】
(例16)上記実行可能プログラム命令のセットは、実行されるとき、上記コンピューティングシステムに、レベル1(L1)キャッシュから上記データを読み取ることをさらに行わせ、上記データは、2より大きい次元の変数を有し、上記データは、上記ルールブックのタイプと関連しているルールブックのラインフォーマットにある、例15の少なくとも1つのコンピュータ可読記憶媒体を含む。
【0102】
(例17)上記実行可能プログラム命令のセットは、実行されるとき、上記コンピューティングシステムに、上記ルールブックのタイプに基づいて、インデックスキューからの出力データを交換することをさらに行わせる、例15の少なくとも1つのコンピュータ可読記憶媒体を含む。
【0103】
(例18)上記実行可能プログラム命令のセットは、実行されるとき、上記コンピューティングシステムに、上記データのスパース性に基づいて、メモリ及び上記複数の処理要素を割り当てることをさらに行わせ、上記チャネル毎のMAC演算は、重複する出力特徴マップを識別し、上記重複する出力特徴マップをローカルにマージする、例14の少なくとも1つのコンピュータ可読記憶媒体を含む。
【0104】
(例19)上記実行可能プログラム命令のセットは、実行されるとき、上記コンピューティングシステムに、特徴マッピングペア情報を静的バッファに格納することと、上記特徴マッピングペア情報に対応するインデックス情報をデータストレージ位置に格納することとをさらに行わせる、例14から例18のいずれか1つの少なくとも1つのコンピュータ可読記憶媒体を含む。
【0105】
(例20)性能強化コンピューティングシステムを操作する方法であって、処理されるべきルールブックの数、入力特徴サイズ、出力特徴サイズ、及び、複数の特徴マップベースアドレスを示す命令を用いてデータをデコードする段階と、重みプレーンに基づいて、空間的に分散されたボクセルの出力特徴マップを上記デコードされたデータに再配置する段階と、出力を取得するために、再配置された上記空間的に分散されたボクセル出力特徴マップにチャネル毎の積和(MAC)演算を実行する段階であって、上記チャネル毎のMAC演算は、複数の処理要素によって部分的な加算として実行される、段階とを備える、方法を含む。
【0106】
(例21)アプリケーション情報に基づいて、ルールブックのタイプを選択する段階をさらに含み、上記ルールブックのタイプは、入力から出力までのタイプ又は出力から入力までのタイプのうちの1つである、例20の方法を含む。
【0107】
(例22)レベル1(L1)キャッシュから上記データを読み取る段階をさらに含み、上記データは、2より大きい次元の変数を有し、上記データは、上記ルールブックのタイプと関連しているルールブックのラインフォーマットにある、例21の方法を含む。
【0108】
(例23)上記ルールブックのタイプに基づいて、インデックスキューからの出力データを交換する段階をさらに含む、例21の方法を含む。
【0109】
(例24)上記データのスパース性に基づいて、メモリ及び上記複数の処理要素を割り当てる段階をさらに含み、上記チャネル毎のMAC演算は、重複する出力特徴マップを識別し、上記重複する出力特徴マップをローカルにマージする、例20の方法を含む。
【0110】
(例25)特徴マッピングペア情報を静的バッファに格納する段階と、上記特徴マッピングペア情報に対応するインデックス情報をデータストレージ位置に格納する段階とをさらに含む、例20から例24のいずれか1つの方法を含む。
【0111】
(例26)例20から例25のいずれか1つの方法を実行するための手段を含む。
【0112】
実施形態は、全てのタイプの半導体集積回路(「IC」)チップでの使用に適用可能である。これらのICチップの例は、プロセッサ、コントローラ、チップセットコンポーネント、プログラマブルロジックアレイ(PLA)、メモリチップ、ネットワークチップ、システムオンチップ(SoC)、SSD/NANDコントローラASIC、及び同様のものを含むがこれらに限定されない。さらに、いくつかの図において、信号導線が線で表される。この一部は、より多くの成分信号パスを示すべく異なっていてよく、複数の成分信号パスを示すべく番号ラベルを有してよく、及び/又は、主要情報の流れ方向を示すべく、1又は複数の端部に矢印を有してよい。しかしながら、このことは、限定的に解釈されるべきでない。むしろ、このような追加の詳細は、回路のより容易な理解を促進すべく、1又は複数の例示的な実施形態に関連して用いられ得る。追加の情報を有しているか否かにかかわらず、表わされる任意の信号線は、実際には、複数の方向に伝搬し得る1又は複数の信号を備え得、任意の適切なタイプの信号方式、例えば、差動ペアで実装されるデジタル線又はアナログ線、光ファイバ線、及び/又は、シングルエンド線、で実装され得る。
【0113】
例示的なサイズ/モデル/値/範囲が与えられている場合があるが、実施形態は同一のものに限定されない。時間とともに製造技術(例えば、フォトリソグラフィ)が成熟するにつれて、より小型のデバイスが製造され得ることが予期される。さらに、例示及び説明を簡潔にするために、且つ、実施形態の特定の態様を不明瞭にしないために、ICチップ及び他のコンポーネントへの周知の電源/グラウンド接続が、図面内に示されてもよく、図面内に示されていなくてもよい。さらに、実施形態を不明瞭にすることを回避すべく、構成がブロック図の形態で示され得、また、このようなブロック図の構成の実装に関する詳細は実施形態が実装されるコンピューティングシステムに大きく依存する、という事実を鑑みれば、すなわち、このような詳細は、当業者の十分知見の範囲内であるべきである。例示的な実施形態を説明すべく、具体的な詳細(例えば、回路)が説明される場合、これらの具体的な詳細なしで、又はこれらの具体的な詳細の変形を用いて、実施形態が実施され得ることが当業者に明らかであるはずである。したがって、説明は、限定的なものではなく、例示的なものとみなされるべきである。
【0114】
「結合」という用語は、対象となっているコンポーネント間の任意のタイプの直接的又は間接的な関係を指すために本明細書で用いられ得、電気的、機械的、流体的、光学的、電磁的、電子機械的、又は他の接続に適用され得る。さらに、「第1の」、「第2の」等の用語は、説明を容易にするためにのみ本明細書で用いられ得、別段の記載がない限り、特定の時間的又は経時的な意味を含まない。
【0115】
本願及び特許請求の範囲で用いられるように、「のうちの1又は複数」という用語によって結合される項目の列挙は、列挙された用語の任意の組み合わせを意味し得る。例えば、「A、B、又はCのうちの1又は複数」という文言は、A、B、C、A及びB、A及びC、B及びC、又は、A、B、及びCを意味し得る。
【0116】
当業者であれば、上述の説明から、実施形態の広範な技術が様々な形態で実装され得ることを理解するだろう。したがって、実施形態がそれらの特定の例に関連して説明されてきたが、実施形態の真の範囲は、このように限定されるべきでない。なぜなら、図面、明細書、及び以下の特許請求の範囲を検討すれば、他の修正が当業者には明らかになるからである。
図1
図2
図3A
図3B
図3C
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14