(57)【要約】ニューラルプロセッサ。いくつかの実施形態では、プロセッサは第１のタイル（ｔｉｌｅ）、第２のタイル、メモリ、及びバスを含む。バスはメモリ、第１のタイル、及び第２のタイルに接続される。第１のタイルは、第１のウェイト（ｗｅｉｇｈｔ）レジスタ、第２のウェイトレジスタ、活性化バッファ、第１の乗算器、及び第２の乗算器を含み得る。活性化バッファは、第１の乗算器と接続された第１のキュー（ｑｕｅｕｅ）、及び第２の乗算器と接続された第２のキューを含むように構成される。第１のキューは、第１のレジスタ及び前記第１のレジスタと隣接した第２のレジスタを含み、第１のレジスタは、第１のキューの出力レジスタであり得る。第１のタイルは、第１の状態では、第１の乗算器で、第１のウェイトに第１のキューの前記出力レジスタからの活性化を乗じ、そして第２の状態では、第１の乗算器で、第１のウェイトに第１のキューの第２のレジスタからの活性化を乗じるように構成される。【選択図】  図１Ａ
2021528764.tif 000002
【特許請求の範囲】
【請求項１】
第１のタイル（ｔｉｌｅ）と、
第２のタイルと、
メモリと、
バスと、を備え、
前記バスは、前記メモリと、前記第１のタイルと、前記第２のタイルと、に接続され、
前記第１のタイルは、第１のウェイト（ｗｅｉｇｈｔ）レジスタと、第２のウェイトレジスタと、活性化バッファと、第１の乗算器と、第２の乗算器と、を含み、
前記活性化バッファは、前記第１の乗算器に接続される第１のキュー（ｑｕｅｕｅ）と、前記第２の乗算器に接続される第２のキューと、を含むように構成され、
前記第１のキューは、第１のレジスタ、及び前記第１のレジスタに隣接した第２のレジスタを含み、
前記第１のレジスタは、前記第１のキューの出力レジスタであり、
前記第１のタイルは、第１の状態では、前記第１の乗算器で、第１のウェイトに前記第１のキューの前記出力レジスタからの活性化を乗じ、
第２の状態では、前記第１の乗算器で、第１のウェイトに前記第１のキューの前記第２のレジスタからの活性化を乗じるように構成されることを特徴とするプロセッサ。
【請求項２】
前記第２の状態では、前記第１のキューの前記出力レジスタは、ゼロ（ｚｅｒｏ）を含むことを特徴とする請求項１に記載のプロセッサ。
【請求項３】
第１の加算器をさらに備え、
前記第１の加算器は、前記第１の状態で、前記第１の乗算器の出力及び前記第２の乗算器の出力と接続され、前記第１の乗算器の前記出力から受信した積と、前記第２の乗算器の前記出力から受信した積と、を加算するように構成されることを特徴とする請求項１に記載のプロセッサ。
【請求項４】
前記第２の状態では、前記第１の乗算器の前記出力に接続されるように構成される第２の加算器をさらに備えることを特徴とする請求項３に記載のプロセッサ。
【請求項５】
前記第１の加算器に接続される第１のアキュムレータ（ａｃｃｕｍｕｌａｔｏｒ）と、
前記第２の加算器に接続される第２のアキュムレータと、をさらに備え、
前記第１のアキュムレータは、レジスタを含み、
前記第１の状態で、前記第１の加算器から受信した合計を前記第１のアキュムレータの前記レジスタ内の値に加えて、前記第１のアキュムレータの累積された値を形成し、前記第１のアキュムレータの前記レジスタに、前記第１のアキュムレータの前記累積された値を格納するように構成されることを特徴とする請求項４に記載のプロセッサ。
【請求項６】
前記第２のアキュムレータは、レジスタを含み、
前記第２の状態で、前記第２の加算器から受信した合計を前記第２のアキュムレータの前記レジスタ内の値に加えて、前記第２のアキュムレータの累積された値を形成し、前記第２のアキュムレータの前記レジスタに前記第２のアキュムレータの前記累積された値を格納するように構成されることを特徴とする請求項５に記載のプロセッサ。
【請求項７】
活性化ゼロスキップ制御回路をさらに備え、
前記活性化ゼロスキップ制御回路は、前記第１のキューの前記出力レジスタがゼロを含むか否かを決定し、
前記第１のキューの前記出力レジスタがゼロを含むと決定したことに応答して、前記第１のタイルが前記第２の状態で演算するように構成される請求項５に記載のプロセッサ。
【請求項８】
マルチプレクサをさらに備え、
前記マルチプレクサは、前記マルチプレクサの単一のポート側で、前記第１の乗算器に接続される入力と、
前記マルチプレクサのマルチポート側で、前記第１の加算器に接続される第１の出力と、
前記マルチプレクサの前記マルチポート側で、前記第２の加算器に接続される第２の出力と、を含むことを特徴とする請求項７に記載のプロセッサ。
【請求項９】
前記活性化ゼロスキップ制御回路は、前記第１の状態では、前記入力を前記第１の出力に接続するように前記マルチプレクサを制御し、
前記第２の状態では、前記入力を前記第２の出力に接続するように前記マルチプレクサを制御するように構成されることを特徴とする請求項８に記載のプロセッサ。
【請求項１０】
前記第２のキューは、第１のレジスタと、前記第１のレジスタに隣接した第２のレジスタと、を含み、
前記第１のレジスタは、前記第２のキューの出力レジスタであり、
前記第１のタイルは、第３の状態では、前記第１の乗算器で、第１のウェイトに前記第２のキューの前記第２のレジスタからの活性化を乗じるように構成されることを特徴とする請求項１に記載のプロセッサ。
【請求項１１】
プロセッシング回路の計算方法であって、
前記プロセッシング回路は、第１のタイル（ｔｉｌｅ）と、第２のタイルと、メモリと、バスと、を備え、
前記バスは、前記メモリと、前記第１のタイルと、前記第２のタイルと、に接続され、
前記第１のタイルは、第１のウェイト（ｗｅｉｇｈｔ）レジスタと、第２のウェイトレジスタと、活性化バッファと、第１の乗算器と、第２の乗算器と、を含み、
前記活性化バッファは、前記第１の乗算器に接続される第１のキュー（ｑｕｅｕｅ）と、前記第２の乗算器に接続される第２のキューと、を含むように構成され、
前記第１のキューは、第１のレジスタと、前記第１のレジスタに隣接した第２のレジスタと、を含み、前記第１のレジスタは、前記第１のキューの出力レジスタであり、
前記計算方法は、第１の状態では、前記第１の乗算器により第１のウェイトに前記第１のキューの前記出力レジスタからの活性化を乗じる段階と、
第２の状態では、前記第１の乗算器により第１のウェイトに前記第１のキューの前記第２のレジスタからの活性化を乗じる段階と、を有することを特徴とする方法。
【請求項１２】
前記第２の状態では、前記第１のキューの前記出力レジスタは、ゼロ（ｚｅｒｏ）を含むことを特徴とする請求項１１に記載の方法。
【請求項１３】
前記プロセッシング回路は、第１の加算器をさらに備え、
前記計算方法は、前記第１の状態で、前記第１の加算器を前記第１の乗算器の出力及び前記第２の乗算器の出力に接続する段階と、
前記第１の加算器により、前記第１の乗算器の前記出力から受信した積と、前記第２の乗算器の前記出力から受信した積と、を加算する段階と、をさらに有することを特徴とする請求項１１に記載の方法。
【請求項１４】
前記プロセッシング回路は、第２の加算器をさらに備え、
前記計算方法は、前記第２の状態では、前記第２の加算器を前記第１の乗算器の前記出力に接続する段階をさらに有することを特徴とする請求項１３に記載の方法。
【請求項１５】
前記プロセッシング回路は、前記第１の加算器に接続される第１のアキュムレータ（ａｃｃｕｍｕｌａｔｏｒ）と、前記第２の加算器に接続される第２のアキュムレータと、をさらに備え、
前記第１のアキュムレータは、レジスタを含み、
前記計算方法は、前記第１の状態で、前記第１のアキュムレータにより、前記第１の加算器から受信した合計を前記第１のアキュムレータの前記レジスタ内の値に加えて、前記第１のアキュムレータの累積された値を形成する段階と、
前記第１のアキュムレータにより、前記第１のアキュムレータの前記レジスタに前記第１のアキュムレータの前記累積された値を格納する段階と、をさらに有することを特徴とする請求項１４に記載の方法。
【請求項１６】
前記第２のアキュムレータは、レジスタを含み、
前記計算方法は、前記第２の状態で、前記第２のアキュムレータにより、前記第２の加算器から受信した合計を前記第２のアキュムレータの前記レジスタ内の値に加えて、前記第２のアキュムレータの累積された値を形成する段階と、
前記第２のアキュムレータにより、前記第２のアキュムレータの前記レジスタに前記第２のアキュムレータの前記累積された値を格納する段階と、をさらに有することを特徴とする請求項１５に記載の方法。
【請求項１７】
前記プロセッシング回路は、活性化ゼロスキップ制御回路をさらに備え、
前記計算方法は、前記活性化ゼロスキップ制御回路により、前記第１のキューの前記出力レジスタがゼロを含むか否かを決定する段階と、
前記第１のキューの前記出力レジスタがゼロを含むと決定したことに応答して、前記第１のタイルが前記第２の状態で演算するようにする段階と、をさらに有することを特徴とする請求項１５に記載の方法。
【請求項１８】
前記プロセッシング回路は、マルチプレクサをさらに備え、
前記マルチプレクサは、前記マルチプレクサの単一ポート側で、前記第１の乗算器に接続される入力と、
前記マルチプレクサのマルチポート側で、前記第１の加算器に接続される第１の出力と、
前記マルチプレクサの前記マルチポート側で、前記第２の加算器に接続される第２の出力と、を備えることを特徴とする請求項１７に記載の方法。
【請求項１９】
前記計算方法は、前記活性化ゼロスキップ制御回路により、前記マルチプレクサを制御する段階をさらに有し、
前記マルチプレクサは、前記第１の状態では、前記入力を前記第１の出力に接続するように制御され、前記第２の状態では、前記入力を前記第２の出力に接続するように制御されることを特徴とする請求項１８に記載の方法。
【請求項２０】
プロセッシングのための手段の計算方法であって、
前記プロセッシングのための手段は、第１のタイル（ｔｉｌｅ）と、第２のタイルと、メモリと、バスと、を備え、
前記バスは、前記メモリと、前記第１のタイルと、前記第２のタイルと、に接続され、
前記第１のタイルは、第１のウェイト（ｗｅｉｇｈｔ）レジスタと、第２のウェイトレジスタと、活性化バッファと、第１の乗算器と、第２の乗算器と、を含み、
前記活性化バッファは、前記第１の乗算器に接続される第１のキュー（ｑｕｅｕｅ）と、前記第２の乗算器に接続される第２のキューと、を含むように構成され、
前記第１のキューは、第１のレジスタと、前記第１のレジスタに隣接した第２のレジスタと、を含み、前記第１のレジスタは、前記第１のキューの出力レジスタであり、
前記計算方法は、第１の状態では、前記第１の乗算器で第１のウェイトに前記第１のキューの前記出力レジスタからの活性化を乗じる段階と、
第２の状態では、前記第１の乗算器で第１のウェイトに前記第１のキューの前記第２のレジスタからの活性化を乗じる段階と、を有することを特徴とする方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示の実施形態の１つ以上の態様は、プロセッシング回路に関し、特に、乗算及び加算の組み合わせを実行するためのプロセッシング回路に関する。
【背景技術】
【０００２】
ニューラルネットワークは、演算上、多くの乗算及び加算を伴うテンソル演算（例えば、テンソル乗算及びコンボリューションの）を実行され得る。
汎用中央プロセッシング装置、あるいは、その上にグラフィックスプロセッシング装置（このようなタスクに適してもよい）により実行される、これらの演算の実行は、比較的遅く、演算当たりのエネルギーコストが比較的高くなる可能性がある。
【０００３】
特に、電力予算を厳しく制限する小型装置（例えば、携帯電話、ハンドヘルド装置）において、汎用中央プロセッシング装置やグラフィックスプロセッシング装置の使用に関連する消費電力が重大な欠点になる可能性がある。
したがって、ニューラルネットワーク計算のための改善されたプロセッシング回路の開発が課題となっている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】米国特許出願公開第２０１７３１６３１２号明細書
【特許文献２】米国特許出願公開第２０１７３５７８９１号明細書
【特許文献３】米国特許出願公開第２０１８０３２８５９号明細書
【特許文献４】米国特許出願公開第２０１８０４６９０６号明細書
【特許文献５】米国特許出願公開第２０１８０４６９１３号明細書
【発明の概要】
【発明が解決しようとする課題】
【０００５】
本発明は、上記従来のニューラルネットワーク計算技術に鑑みてなされたものであって、本発明の目的は、向上したテンソル演算の速度と減少した消費電力を有するニューラルプロセッサを提供することにある。
【課題を解決するための手段】
【０００６】
上記目的を達成するためになされた本発明の一実施形態によれば、プロセッサが提供される。プロセッサは、第１のタイル（ｔｉｌｅ）、第２のタイル、メモリ、及びバスを含む。前記バスは、前記メモリ、前記第１のタイル、及び前記第２のタイルに接続される。前記バスは、前記メモリ、前記第１のタイル、及び前記第２のタイルに接続される。前記第１のタイルは、第１のウェイト（ｗｅｉｇｈｔ、重み）レジスタ及び第２のウェイトレジスタ、第１の乗算器及び第２の乗算器、並びに活性化バッファを含む。前記第１のタイルは、ウェイトカーネルにより、活性化配列のコンボリューションを実行するように構成される。
【０００７】
前記コンボリューションを実行する方法は、活性化配列の第１のサブアレイと前記カーネルとのテンソル積を形成する段階と、活性化アレイの第２のサブアレイと前記カーネルとのテンソル積（Ｔｅｎｓｏｒ  Ｐｒｏｄｕｃｔ）を形成する段階と、活性化アレイの第３のサブアレイと前記カーネルとのテンソル積を形成する段階とを順に備える。前記第２のサブアレイは、第１の方向にｎ個の要素により前記第１のサブアレイからオフセットされ、ｎは正の整数である。前記第３のサブアレイは、前記第１の方向に垂直である第２の方向に１つの要素により前記第２のサブアレイからオフセットされる。
【０００８】
いくつかの一実施形態によれば、前記第３のサブアレイを用いて前記カーネルのテンソル積を形成した後、前記コンボリューションを実行する方法は、前記活性化アレイの第４のサブアレイと前記カーネルとのテンソル積を形成する段階と、活性化アレイの第５のサブアレイと前記カーネルとのテンソル積を形成する段階とを順に備える。第４のサブアレイは、第１の方向に反対である第３の方向にｍ個のアレイ要素により第３のサブアレイからオフセットされる。ｍは正の整数である。第５のサブアレイは、第２の方向に１つのアレイ要素により第４のサブアレイからオフセットされる。
【０００９】
いくつかの実施形態によれば、ｍはｎと同じである。
いくつかの実施形態によれば、ｎは１と同じである。
【００１０】
いくつかの実施形態によれば、前記第１のサブアレイと前記カーネルとの積を形成する段階後に、前記コンボリューションを実行する方法は、活性化アレイの（ｎ−１）個のそれぞれのサブアレイとカーネルとの（ｎ−１）積（ｐｒｏｄｕｃｔｓ）を形成する段階を順にさらに備える。（ｎ−１）積の中のｋ番目の積のサブアレイは、１番目の方向で（ｋ＋１）アレイ要素により１番目のサブアレイからオフセットされる。
【００１１】
いくつかの実施形態によれば、前記プロセッサは、前記活性化バッファに接続されて、活性化バッファに活性化を供給するように構成されるキャッシュをさらに含む。前記キャッシュは、「Ｈ＋（Ｈ＋ｎ）×（Ｗ−１）−１」の活性化を格納するのに十分なサイズを有する。Ｈは、第１の方向のカーネルのサイズであり、Ｗは、第２の方向のカーネルのサイズである。
【００１２】
いくつかの実施形態によれば、前記活性化バッファは、第１の乗算器に接続される第１のキュー（ｑｕｅｕｅ）、及び第２の乗算器に接続される第２のキューを含む。第１のキューは、第１のレジスタ、及び第１のレジスタに隣接した第２のレジスタを含む。第１のレジスタは、第１のキューの出力レジスタである。第１のタイルは、第１の状態において、第１の乗算器により第１のキューの出力レジスタからの活性化と第１のウェイトとを乗じ、第２の状態において、第１の乗算器により第１のウェイトと第１のキューの第２のレジスタからの活性化とを乗じるように、さらに構成される。
いくつかの実施形態によれば、前記第２の状態では、前記第１のキューの出力レジスタは、ゼロ（ｚｅｒｏ）を含む。
【００１３】
いくつかの実施形態によれば、前記プロセッサは、第１の加算器をさらに含む。前記第１の加算器は、前記第１の状態では、前記第１の乗算器の出力、及び前記第２の乗算器の出力に接続され、前記第１の乗算器の出力から受信された積と前記第２の乗算器の出力から受信された積とを加算する。
いくつかの実施形態によれば、前記プロセッサは、第２の加算器をさらに含む。前記第２の加算器は、前記第２の状態では、前記第１の乗算器の出力に接続されるように構成される。
【００１４】
上記目的を達成するためになされた本発明の実施形態によれば、プロセッシング回路を用いて計算するための方法が提供される。前記プロセッシング回路は、第１のタイルと、第２のタイルと、メモリと、バスとを備える。前記バスは、前記メモリ、前記第１のタイル、及び前記第２のタイルに接続される。前記第１のタイルは、第１のウェイトレジスタ、第２のウェイトレジスタ、活性化バッファ、第１の乗算器、及び第２の乗算器を含む。前記方法は、ウェイトカーネル使用して活性化配列のコンボリューションを実行する方法を含む。前記コンボリューションを実行する方法は、活性化アレイの第１のサブアレイと前記カーネルとの前記テンソル積を形成する段階と、活性化アレイの第２のサブアレイと前記カーネルとの前記テンソル積を形成する段階と、活性化アレイの第３のサブアレイと前記カーネルの前記テンソル積を形成する段階とを順に含む。前記第２のサブアレイは、第１の方向にｎ個の要素により前記第１のサブアレイからオフセットされ、ｎは正の整数である。前記第３のサブアレイは、前記第１の方向に垂直である第２の方向へ１つの要素により前記第２のサブアレイからオフセットされる。
【００１５】
いくつかの実施形態によれば、前記第３のサブアレイと前記カーネルとのテンソル積を形成した後、前記コンボリューションを実行する方法は、前記活性化アレイの第４のサブアレイと前記カーネルとのテンソル積を形成する段階と、活性化アレイの第５のサブアレイと前記カーネルのテンソル積を形成する段階とを順に含む。第４のサブアレイは、第１の方向に反対である第３の方向へｍ個のアレイ要素だけ第３のサブアレイからオフセットされる。ｍは正の整数である。第５のサブアレイは、第２の方向に１つのアレイ要素だけ第４のサブアレイからオフセットされる。
いくつかの実施形態によれば、ｍはｎと同じである。
いくつかの実施形態によれば、ｎは１と同じである。
【００１６】
いくつかの実施形態によれば、前記第１のサブアレイと前記カーネルとの積を形成する段階後に、前記コンボリューションを実行する方法は、活性化アレイの（ｎ−１）個のそれぞれのサブアレイと前記カーネルとの（ｎ−１）個の積（ｐｒｏｄｕｃｔｓ）を形成する段階を順にさらに含む。（ｎ−１）個の積の中のｋ番目の積のサブアレイは、１番目の方向で（ｋ＋１）個のアレイ要素だけ１番目のサブアレイからオフセットされる。
【００１７】
いくつかの実施形態によれば、前記プロセッシング回路は、前記活性化バッファに接続されて、活性化バッファに活性化を供給するように構成されるキャッシュをさらに含む。前記キャッシュは、「Ｈ＋（Ｈ＋ｎ）×（Ｗ−１）−１」個の活性化を格納するのに十分なサイズを有する。Ｈは、第１の方向のカーネルのサイズであり、Ｗは、第２の方向のカーネルのサイズである。
【００１８】
いくつかの実施形態によれば、前記活性化バッファは、第１の乗算器に接続される第１のキュー（ｑｕｅｕｅ）、及び第２の乗算器に接続される第２のキューを含む。第１のキューは、第１のレジスタ、及び第１のレジスタに隣接した第２のレジスタを含む。第１のレジスタは、第１のキューの出力レジスタである。第１のタイルは、第１の状態において、第１の乗算器により第１のキューの出力レジスタからの活性化と第１のウェイトとを乗じ、第２の状態において、第１の乗算器により第１のウェイトを第１のキューの第２のレジスタからの活性化とを乗じるように、さらに構成される。
いくつかの実施形態によれば、前記第２の状態では、前記第１のキューの出力レジスタは０（ｚｅｒｏ）含む。
【００１９】
いくつかの実施形態によれば、前記プロセッシング回路は、第１の加算器をさらに含む。前記方法は、前記第１の状態で、前記第１の加算器を前記第１の乗算器の出力、及び前記第２の乗算器の出力に接続し、前記第１の加算器が前記第１の乗算器の出力から受信した結果と、前記第２の乗算器の出力から受信した結果とを加算する段階をさらに含む。
【００２０】
上記目的を達成するためになされた本発明の実施形態によれば、プロセッシングのための手段として計算するための方法が提供される。プロセッシングのための前記手段は、第１のタイル、第２のタイル、メモリ、及びバスを含む。前記バスは、前記メモリ、前記第１のタイル及び前記第２のタイルに接続される。前記第１のタイルは、第１のウェイトレジスタ、第２のウェイトレジスタ、活性化バッファ、第１の乗算器、及び第２の乗算器を含む。前記方法は、ウェイトカーネルと活性化配列とのコンボリューションを実行する方法を含む。前記コンボリューションを実行する方法は、活性化アレイの第１のサブアレイと前記カーネルとの前記テンソル積を形成する段階と、活性化アレイの第２のサブアレイと前記カーネルとのテンソル積を形成する段階と、活性化アレイの第３のサブアレイと前記カーネルとのテンソル積を形成する段階とを順に含む。前記第２のサブアレイは、第１の方向にｎ個の要素だけ前記第１のサブアレイからオフセットされ、ｎは正の整数である。前記第３のサブアレイは、前記第１の方向に垂直である第２の方向へ１つの要素だけ前記第２のサブアレイからオフセットされる。
【００２１】
上記目的を達成するためになされた本発明の実施形態によれば、プロセッサが提供される。前記プロセッサは、第１のタイル、第２のタイル、メモリ、及びバスを含む。前記バスは、前記メモリ、前記第１のタイル、及び前記第２のタイルに接続される。前記第１のタイルは、第１のウェイトレジスタ、第２のウェイトレジスタ、活性化バッファ、第１の乗算器、及び第２の乗算器を含む。前記プロセッサは、第１のカーネルウェイトと活性化アレイとの第１のコンボリューションを実行するように構成される。前記第１のコンボリューションを実行する方法は、前記活性化アレイの第１のサブアレイを前記第１のタイル及び前記第２のタイルにブロードキャストする段階と、第１のテンソル積形成する段階と、前記メモリ内に前記第１のテンソル積を格納する段階と、前記活性化アレイの第２のサブアレイを前記第１のタイル、及び前記第２のタイルにブロードキャストする段階と、第２のテンソル積を形成する段階とを備える。前記第１のテンソル積は、前記活性化アレイの前記第１のサブアレイと前記第１のカーネルウェイトの第１のサブアレイとのテンソル積である。前記第２のテンソル積は、前記活性化アレイの前記第２のサブアレイと前記第１のカーネルウェイトの第２のサブアレイとのテンソル積である。
【００２２】
いくつかの実施形態によれば、前記第１のタイルは、複数のウェイトが圧縮された形態でエンコードされたデータワードを圧縮解除して、第１のウェイト及び第２のウェイトを抽出し、第１のウェイトを第１のウェイトレジスタにフィード（ｆｅｅｄ）し、そして第２のウェイトを第２のウェイトレジスタにフィードするように構成されたウェイト圧縮解除ユニットをさらに含む。
【００２３】
いくつかの実施形態によれば、第１のタイルは、第２のカーネルウェイトと活性化アレイとの第２のコンボリューションを実行するように、さらに構成される。前記第２のコンボリューションを実行する方法は、活性化アレイの第１のサブアレイと第２のカーネルの第１の部分とのテンソル積を形成する段階と、活性化アレイの第１のサブアレイと第２のカーネルの第２の部分とのテンソル積形成する段階と、活性化アレイの第２のサブアレイと第２のカーネルの第１の部分とのテンソル積を形成する段階とを順に含む。第２のカーネルの第１の部分は、第１のウェイトレジスタに格納されたウェイトを含み、第２のカーネルの第２の部分は、第２のウェイトレジスタに格納されたウェイトを含み、前記第２のカーネルの第１の部分は、第１のウェイトレジスタに格納されたウェイトを含む。
【００２４】
いくつかの実施形態によれば、前記活性化バッファは、第１の乗算器に接続される第１のキュー（ｑｕｅｕｅ）と、第２の乗算器に接続される第２のキューとを含む。第１のキューは、第１のレジスタと、及び第１のレジスタに隣接した第２のレジスタを含む。第１のレジスタは、第１のキューの出力レジスタである。第１のタイルは、第１の状態において、第１の乗算器により第１のキューの出力レジスタからの活性化と第１のウェイトとを乗じ、第２の状態において第１の乗算器により第１のウェイトに第１のキューの第２のレジスタからの活性化を乗じるように、さらに構成される。
いくつかの実施形態によれば、前記第２の状態では、前記第１のキューの出力レジスタは、０（ゼロ）を含む。
【００２５】
いくつかの実施形態によれば、前記プロセッサは、第１の加算器をさらに含む。前記第１の加算器は、前記第１の状態において、前記第１の乗算器の出力及び前記第２の乗算器の出力に接続され、前記第１の乗算器の出力から受信した結果と前記第２の乗算器の出力から受信した結果を加算する。
いくつかの実施形態によれば、前記プロセッサは、第２の加算器をさらに含む。前記第２の加算器は、前記第２の状態では、前記第１の乗算器の出力に接続されるように構成される。
【００２６】
いくつかの実施形態によれば、前記プロセッサは、第１の加算器に接続される第１のアキュムレータ（ａｃｃｕｍｕｌａｔｏｒ）と、第２の加算器に接続される第２のアキュムレータとをさらに含む。第１のアキュムレータは、レジスタを含む。第１の状態では、前記第１のアキュムレータは、前記第１の加算器から受信した合計を前記第１のアキュムレータのレジスタの値に加えて、第１のアキュムレータの累積された値を形成し、そして第１のアキュムレータのレジスタに第１のアキュムレータの累積された値を格納する。
【００２７】
いくつかの実施形態によると、第２のアキュムレータは、レジスタを含む。第２の状態では、前記第２のアキュムレータは、前記第２の加算器から受信した合計を前記第２のアキュムレータのレジスタの値に加えて、第２のアキュムレータの累積された値を形成し、そして第２のアキュムレータのレジスタに第２のアキュムレータの累積された値を格納する。
【００２８】
いくつかの実施形態によれば、前記プロセッサは、第１のキューの出力レジスタがゼロを含むか否かを決定し、第１のキューの出力レジスタがゼロを含むとの決定に応答して、第１のタイルが、第２の状態で、演算されるようにする活性化ゼロのスキップ制御回路をさらに含む。
【００２９】
上記目的を達成するためになされた本発明の実施形態によれば、プロセッシング回路を使用して計算する方法が提供される。前記プロセッシング回路は、第１のタイル、第２のタイル、メモリ、及びバスを含む。前記バスは、前記メモリ、前記第１のタイル、及び前記第２のタイルに接続される。前記第１のタイルは、第１のバッファモジュールは、第２のバッファモジュールは、活性化バッファ、第１の乗算器、及び第２の乗算器を含む。前記方法は、第１のカーネルウェイトと活性化アレイとの第１のコンボリューションを実行するように構成される。前記第１のコンボリューションを実行する方法は、前記活性化アレイの第１のサブアレイを前記第１のタイル、及び前記第２のタイルにブロードキャストする段階と、第１のテンソル積を形成する段階と、前記メモリ内に前記第１のテンソル積を格納する段階と、前記活性化アレイの第２のサブアレイを前記第１のタイル、及び前記第２のタイルにブロードキャストする段階と、第２のテンソル積を形成する段階と、第１のテンソル積と第２のテンソル積を加算する段階とを含む。前記第１のテンソル積は、前記活性化アレイの前記第１のサブアレイと第１のカーネルウェイトの第１のサブアレイとのテンソル積である。前記第２のテンソル積は、前記活性化アレイの前記第２のサブアレイと第１のカーネルウェイトの第２のサブアレイとのテンソル積である。
【００３０】
いくつかの実施形態によれば、前記第１のタイルは、ウェイトの圧縮解除ユニットをさらに含む。前記方法は、前記ウェイトの圧縮解除ユニットにより圧縮された複数のウェイトの形態でエンコードされたデータワードを圧縮解除して、第１のウェイト及び第２のウェイトを抽出する段階と、第１のウェイトを第１のウェイトレジスタにフィードする段階と、第２のウェイトを第２のウェイトレジスタにフィードする段階とをさらに含む。
【００３１】
いくつかの実施形態によれば、前記方法は、ウェイトの第２のカーネルと活性化アレイとの第２のコンボリューションを実行する段階をさらに含む。前記第２のコンボリューションを実行する方法は、活性化アレイの第１のサブアレイと第２のカーネルの第１の部分とのテンソル積を形成する段階と、活性化アレイの第１のサブアレイと第２のカーネルの第２の部分とのテンソル積形成する段階と、活性化アレイの第２のサブアレイと第２のカーネルの第１の部分とのテンソル積を形成する段階とを順に含む。第２のカーネルの第１の部分は、第１のウェイトレジスタに格納されるウェイトを含み、第２のカーネルの第２の部分は、第２のウェイトレジスタに格納されるウェイトを含み、前記第２のカーネルの第１の部分は、第１のウェイトレジスタに格納されるウェイトを含む。
【００３２】
いくつかの実施形態によれば、前記活性化バッファは、第１の乗算器に接続された第１のキュー（ｑｕｅｕｅ）、及び第２の乗算器に接続された第２のキューを含む。第１のキューは、第１のレジスタ、及び第１のレジスタに隣接した第２のレジスタを含む。第１のレジスタは、第１のキューの出力レジスタである。第１のタイルは、第１の状態では、第１の乗算器により第１のキューの出力レジスタからの活性化と第１のウェイトとを乗じ、第２の状態では、第１の乗算器により第１のウェイトと第１のキューの第２のレジスタからの活性化とを乗算するように、さらに構成される。
いくつかの実施形態によれば、前記第２の状態では、前記第１のキューの出力レジスタは、ゼロを含む。
【００３３】
いくつかの実施形態によれば、前記プロセッシング回路は、第１の加算器をさらに含む。前記方法は、前記第１の状態では、前記第１の加算器を前記第１の乗算器の出力、及び前記第２の乗算器の出力に接続する段階と、前記第１の加算器が前記第１の乗算器の出力から受信した結果、及び前記第２の乗算器の出力から受信した結果を加算する段階とをさらに含む。
いくつかの実施形態によれば、前記プロセッシング回路は、第２の加算器をさらに含む。前記方法は、前記第２の状態では、前記第２の加算器を前記第１の乗算器の出力に接続する段階をさらに含む。
【００３４】
いくつかの実施形態によれば、前記プロセッシング回路は、第１の加算器に接続される第１のアキュムレータ（ａｃｃｕｍｕｌａｔｏｒ）と、第２の加算器に接続される第２のアキュムレータとをさらに含む。第１のアキュムレータはレジスタを含む。前記方法は、第１の状態では、前記第１のアキュムレータにより前記第１の加算器から受信した合計を前記第１のアキュムレータのレジスタの値に加算する段階と、第１のアキュムレータの累積された値を形成する段階と、前記第１のアキュムレータにより第１のアキュムレータのレジスタに第１のアキュムレータの累積された値を格納する段階とをさらに含む。
【００３５】
いくつかの実施形態によれば、第２のアキュムレータはレジスタを含む。前記方法は、第２の状態では、前記第２のアキュムレータにより前記第２の加算器から受信した合計を前記第２のアキュムレータのレジスタの値に加算する段階と、第２のアキュムレータの累積された値を形成する段階と、前記第２のアキュムレータにより第２のアキュムレータのレジスタに第２のアキュムレータの累積された値を格納する段階とをさらに含む。
【００３６】
上記目的を達成するためになされた本発明の実施形態によれば、プロセッシングのための手段を用いて計算する方法が提供される。前記プロセッシングのための手段は、第１のタイル、第２のタイル、メモリ、及びバスを含む。前記バスは、前記メモリ、前記第１のタイル、及び前記第２のタイルに接続される。前記第１のタイルは、第１のバッファモジュール、第２のバッファモジュール、活性化バッファ、第１の乗算器、及び第２の乗算器を含む。前記方法は、第１のカーネルウェイトと活性化アレイとの第１のコンボリューションを実行するように構成される。前記第１のコンボリューションを実行する方法は、前記活性化アレイの第１のサブアレイを前記第１のタイル及び前記第２のタイルにブロードキャストする段階と、第１のテンソル積を形成する段階と、前記メモリ内に前記第１のテンソル積を格納する段階と、前記活性化アレイの第２のサブアレイを前記第１のタイル及び前記第２のタイルにブロードキャストする段階と、第２のテンソル積を形成する段階と、前記第１のテンソル積と前記第２のテンソル積を加算する段階とを含む。前記第１のテンソル積は、前記活性化アレイの前記第１のサブアレイと第１のカーネルウェイトの第１のサブアレイとのテンソル積である。前記第２のテンソル積は、前記活性化アレイの前記第２のサブアレイと第１のカーネルウェイトの第２のサブアレイとのテンソル積である。
【００３７】
上記目的を達成するためになされた本発明の実施形態によれば、プロセッサが提供される。前記プロセッサは、第１のタイル、第２のタイル、メモリ、入力バス、及び出力バスを含む。前記入力バスはメモリ、第１のタイル及び第２のタイルに接続される。前記第１のタイルは、第１のウェイトレジスタ、第２のウェイトレジスタ、活性化バッファ、第１の乗算器及び第２の乗算器を含む。前記第１のタイルは、ウェイトのカーネルと活性化アレイとの第１のコンボリューションを実行するように構成される。前記メモリは、第１のメモリバンクのセット、及び第２のメモリバンクのセットを含む。前記入力バスは、第１の方向にデータを伝播するための第１のセグメントバスと、第１の方向と反対方向である第２の方向にデータを伝播するための第２のセグメントバスとを含む。前記第１のセグメントバスは、第１のスイッチブロック及び第２のスイッチブロックを含む。前記第１のスイッチブロックは、第１のタイルと、第１のメモリバンクのセットとに接続される。前記第２のスイッチブロックは、第２のタイルと、第２のメモリバンクのセットとに接続される。前記第２のセグメントバスは、第３のスイッチブロック、及び第４のスイッチブロックを含む。前記第３のスイッチブロックは、第１のタイルと、第１のメモリバンクのセットとに接続される。前記第４のスイッチブロックは、第２のタイルと、第２のメモリバンクのセットとに接続される。前記第１のスイッチブロックの入力は、第２のスイッチブロックの出力に接続される。前記第３のスイッチブロックの出力は、第４のスイッチブロックの入力に接続される。
【００３８】
いくつかの実施形態によれば、第１のバス状態では、第１のセグメントバスは、第１のメモリバンクのセットを、第１のスイッチブロックを介して第１のタイルに接続し、第２のスイッチブロックを介して第２のメモリバンクのセットを第２のタイルに接続するように構成される。
いくつかの実施形態によれば、第２のバスの状態では、第１のセグメントバスは、第２のメモリバンクのセットを第１のスイッチブロック、及び第２のスイッチブロックを介して、第１のタイルに接続し、第２のスイッチブロックを介して第２のメモリバンクのセットを第２のタイルに接続するように、さらに構成される。
【００３９】
いくつかの実施形態によれば、前記活性化バッファは、第１の乗算器に接続される第１のキュー（ｑｕｅｕｅ）及び第２の乗算器に接続される第２のキューを含む。第１のキューは、第１のレジスタ、及び第１のレジスタに隣接した第２のレジスタを含む。第１のレジスタは、第１のキューの出力レジスタである。第１のタイルは、第１の状態では、第１の乗算器により第１のキューの出力レジスタからの活性化と第１のウェイトとを乗じ、第２の状態では、第１の乗算器により第１のウェイトを第１のキューの第２のレジスタからの活性化に乗算するように、さらに構成される。
いくつかの実施形態によれば、前記第２の状態では、前記第１のキューの出力レジスタは、ゼロを含む。
【００４０】
いくつかの実施形態によれば、前記プロセッサは、第１の加算器をさらに含む。前記第１の加算器は、第１の状態では、前記第１の乗算器の出力及び前記第２の乗算器の出力に接続され、前記第１の乗算器の出力から受信した積と、前記第２の乗算器の出力から受信した積とを加算する。
いくつかの実施形態によれば、前記プロセッサは、第２の加算器をさらに含む。前記第２の加算器は、前記第２の状態では前記第１の乗算器の出力に接続されるように構成される。
【００４１】
いくつかの実施形態によれば、前記プロセッサは、第１の加算器に接続される第１のアキュムレータ（ａｃｃｕｍｕｌａｔｏｒ）と、第２の加算器に接続される第２のアキュムレータとをさらに含む。第１のアキュムレータはレジスタを含む。第１の状態では、前記第１のアキュムレータは、前記第１の加算器から受信した合計を前記第１のアキュムレータのレジスタの値に加えて、第１のアキュムレータの累積された値を形成し、そして第１のアキュムレータのレジスタに第１のアキュムレータの累積された値を格納する。
【００４２】
いくつかの実施形態によれば、第２のアキュムレータはレジスタを含む。第２の状態では、前記第２のアキュムレータは、前記第２の加算器から受信した合計を前記第２のアキュムレータのレジスタの値に加えて、第２のアキュムレータの累積された値を形成し、そして第２のアキュムレータのレジスタに第２のアキュムレータの累積された値を格納する。
【００４３】
いくつかの実施形態によれば、前記プロセッサは、第１のキューの出力レジスタがゼロを含むか否かを決定し、第１のキューの出力レジスタがゼロを含むとの決定に応答して、第１のタイルが第２の状態で演算されるようにする活性化ゼロのスキップ制御回路をさらに含む。
【００４４】
いくつかの実施形態によれば、前記プロセッサは、マルチプレクサ（ｍｕｌｔｉｐｌｅｘｅｒ）をさらに含む。前記マルチプレクサは、マルチプレクサのシングルポート側から第１の乗算器に接続される入力を有し、マルチプレクサのマルチポート側から第１の加算器に接続される第１の出力を有し、そしてマルチプレクサのマルチポート側から第２の加算器に接続される第２の出力を有する。
【００４５】
上記目的を達成するためになされた本発明の実施形態によれば、プロセッシング回路を用いて計算する方法が提供される。前記プロセッシング回路は、第１のタイル、第２のタイル、メモリ、入力バス及び出力バスを含む。前記入力バスはメモリ、第１のタイル及び第２のタイルに接続される。前記第１のタイルは、第１のウェイトレジスタ、第２のウェイトレジスタ、活性化バッファ、第１の乗算器及び第２の乗算器を含む。前記第１のタイルは、ウェイトのカーネルと活性化のアレイとの第１のコンボリューションを実行するように構成される。前記メモリは、第１のメモリバンクのセット及び第２のメモリバンクのセットを含む。前記入力バスは、第１の方向にデータを伝播するための第１のセグメントバスと、第１の方向とは反対方向である第２の方向にデータを伝播するための第２のセグメントバスとを含む。前記第１のセグメントバスは、第１のスイッチブロック、及び第２のスイッチブロックを含む。前記第１のスイッチブロックは、第１のタイルと、第１のメモリバンクのセッとに接続される。前記第２のスイッチブロックは、第２のタイルと、第２のメモリバンクのセットとに接続される。前記第２のセグメントバスは、第３のスイッチブロック、及び第４のスイッチブロックを含む。前記第３のスイッチブロックは、第１のタイルと、第１のメモリバンクのセットとに接続される。前記第４のスイッチブロックは、第２のタイルと、第２のメモリバンクのセットとに接続される。前記第１のスイッチブロックの入力は、第２のスイッチブロックの出力に接続される。前記第１のスイッチブロックの入力は、第２のスイッチブロックの出力に接続される。前記第３のスイッチブロックの出力は、第４のスイッチブロックの入力に接続される。前記方法は、第１のバスの状態では、第１のスイッチブロックにより、第１のタイルに第１のメモリバンクのセットを接続する段階と、第２のスイッチブロックにより第２のメモリバンクのセットを第２のタイルに接続する段階とを含む。
【００４６】
いくつかの実施形態によれば、前記方法は、第２のバスの状態では、第１のスイッチブロック及び第２のスイッチブロックにより、第１のタイルに第２のメモリバンクのセットを接続する段階と、第２のスイッチブロックにより第２のメモリバンクのセットを第２のタイルに接続する段階をさらに含む。
【００４７】
いくつかの実施形態によれば、前記活性化バッファは、第１の乗算器に接続される第１のキュー（ｑｕｅｕｅ）及び第２の乗算器に接続される第２のキューを含む。第１のキューは、第１のレジスタ、及び第１のレジスタに隣接した第２のレジスタを含む。第１のレジスタは、第１のキューの出力レジスタである。第１のタイルは、第１の状態では、第１の乗算器により第１のキューの出力レジスタからの活性化と第１のウェイトとを乗じ、第２の状態では、第１の乗算器により第１のウェイトと第１のキューの第２のレジスタからの活性化とを乗じるように、さらに構成される。
いくつかの実施形態によれば、前記第２のキューでは、前記第１のキューの出力はゼロを含む。
【００４８】
いくつかの実施形態によれば、前記プロセッシング回路は、第１の加算器をさらに含む。前記方法は、第１の状態では、前記第１の加算器を前記第１の乗算器の出力及び前記第２の乗算器の出力に接続する段階と、前記第１の加算器が前記第１の乗算器の出力から受信した結果と前記第２の乗算器の出力から受信した結果とを加算する段階と、をさらに含む。
いくつかの実施形態によれば、前記プロセッシング回路は、第２の加算器をさらに含む。前記方法は、前記第２の状態では、前記第２の加算器を前記第１の乗算器の出力に接続する段階をさらに含む。
【００４９】
いくつかの実施形態によれば、前記プロセッシング回路は、第１の加算器に接続される第１のアキュムレータ（ａｃｃｕｍｕｌａｔｏｒ）と、第２の加算器に接続される第２のアキュムレータとをさらに含む。第１のアキュムレータはレジスタを含む。前記方法は、第１の状態では、前記第１のアキュムレータが前記第１の加算器から受信した合計を前記第１のアキュムレータのレジスタの値に加算する段階と、第１のアキュムレータの累積された値を形成する段階と、前記第１のアキュムレータが第１のアキュムレータのレジスタに第１のアキュムレータの累積された値を格納する段階と、をさらに含む。
【００５０】
いくつかの実施形態によれば、第２のアキュムレータはレジスタを含む。前記方法は、第２の状態では、前記第２のアキュムレータにより前記第２の加算器から受信した合計を前記第２のアキュムレータのレジスタの値に加算する段階と、第２のアキュムレータの累積された値を形成する段階と、前記第２のアキュムレータにより第２のアキュムレータのレジスタに第２のアキュムレータの累積された値を格納する段階と、をさらに含む。
【００５１】
上記目的を達成するためになされた本発明の実施形態によれば、プロセッシングのための手段を用いて計算する方法が提供される。前記プロセッシングのための手段は、第１のタイル、第２のタイル、メモリ、入力バス、及び出力バスを含む。前記入力バスはメモリ、第１のタイル及び第２のタイルに接続される。前記第１のタイルは、第１のウェイトレジスタ、第２のウェイトレジスタ、活性化バッファ、第１の乗算器、及び第２の乗算器を含む。前記第１のタイルは、ウェイトのカーネルと活性化のアレイとの第１のコンボリューションを実行するように構成される。前記メモリは、第１のメモリバンクのセット、及び第２のメモリバンクのセットを含む。前記入力バスは、第１の方向にデータを伝播するための第１のセグメントバスと、第１の方向とは反対方向である第２の方向にデータを伝播するための第２のセグメントバスと、を含む。前記第１のセグメントバスは、第１のスイッチブロック及び第２のスイッチブロックを含む。前記第１のスイッチブロックは、第１のタイルと第１のメモリバンクのセットとに接続される。前記第２のスイッチブロックは、第２のタイルと、第２のメモリバンクのセットと、に接続される。前記第２のセグメントバスは、第３のスイッチブロック及び第４のスイッチブロックを含む。前記第３のスイッチブロックは、第１のタイルと、第１のメモリバンクのセットと、に接続される。前記第４のスイッチブロックは、第２のタイルと、第２のメモリバンクのセットと、に接続される。前記第１のスイッチブロックの入力は、第２のスイッチブロックの出力に接続される。前記第３のスイッチブロックの出力は、第４のスイッチブロックの入力に接続される。前記方法は、第１のバス状態では、第１のスイッチブロックにより第１のタイルに設定された第１のメモリバンクを接続する段階と、第２のスイッチブロックにより第２のメモリバンクを第２のタイルに接続する段階と、を含む。
【００５２】
上記目的を達成するためになされたいくつかの実施形態によれば、プロセッサが提供される。前記プロセッサは、第１のタイル、第２のタイル、メモリ、及びバスを含む。前記バスは、メモリ、第１のタイル及び第２のタイルに接続される。前記第１のタイルは、第１のウェイトレジスタ、第２のウェイトレジスタ、活性化バッファ、第１の乗算器、及び第２の乗算器を含む。前記活性化バッファは、第１の乗算器に接続される第１のキュー（ｑｕｅｕｅ）と、第２の乗算器に接続される第２のキューと、を含む。第１のキューは、第１のレジスタ、及び第１のレジスタに隣接した第２のレジスタを含む。第１のレジスタは、第１のキューの出力レジスタである。第１のタイルは、第１の状態では、第１の乗算器により第１のキューの出力レジスタからの活性化と第１のウェイトとを乗じ、第２の状態では、第１の乗算器により第１のウェイトと、第１のキューの第２のレジスタからの活性化と、を乗じるように構成される。
【００５３】
いくつかの実施形態によれば、前記第２のキューでは、前記第１のキューの出力はゼロを含む。
【００５４】
いくつかの実施形態によれば、前記プロセッサは、第１の加算器をさらに含む。前記第１の加算器は、第１の状態では、前記第１の乗算器の出力、及び前記第２の乗算器の出力に接続され、前記第１の乗算器の出力から受信した結果と、前記第２の乗算器の出力から受信した結果と、を加算する。
いくつかの実施形態によれば、前記プロセッサは、第２の加算器をさらに含む。前記第２の加算器は、前記第２の状態では前記第１の乗算器の出力に接続されるように構成される。
【００５５】
いくつかの実施形態によれば、前記プロセッサは、第１の加算器に接続される第１のアキュムレータ（ａｃｃｕｍｕｌａｔｏｒ）と、第２の加算器に接続される第２のアキュムレータと、をさらに含む。第１のアキュムレータはレジスタを含む。第１の状態では、前記第１のアキュムレータは、前記第１の加算器から受信した合計を前記第１のアキュムレータのレジスタの値に加えて、第１のアキュムレータの累積された値を形成し、そして第１のアキュムレータのレジスタに第１のアキュムレータの累積された値を格納する。
【００５６】
いくつかの実施形態によれば、第２のアキュムレータレジスタを含む。第２の状態では、前記第２のアキュムレータは、前記第２の加算器から受信した合計を前記第２のアキュムレータのレジスタの値に加えて、第２のアキュムレータの累積された値を形成し、そして第２のアキュムレータのレジスタに第２のアキュムレータの累積された値を格納する。
【００５７】
いくつかの実施形態によれば、前記プロセッサは、第１のキューの出力レジスタがゼロを含むか否かを決定し、第１のキューの出力レジスタがゼロを含むとの決定に応答して、第１のタイルが第２の状態で演算されるようにする活性化ゼロのスキップ制御回路をさらに含む。
【００５８】
いくつかの実施形態によれば、前記プロセッサは、マルチプレクサ（ｍｕｌｔｉｐｌｅｘｅｒ）をさらに含む。前記マルチプレクサは、マルチプレクサのシングルポート側から第１の乗算器に接続される入力を有し、マルチプレクサのマルチポート側から第１の加算器に接続される第１の出力を有し、そしてマルチプレクサのマルチポート側から第２の加算器に接続される第２の出力を有している。
【００５９】
いくつかの実施形態によれば、前記活性化ゼロスキップ制御回路は、第１の状態では、マルチプレクサを制御して前記入力を第１の出力に接続し、第２の状態では、前記入力を第２の出力に接続するように構成される。
【００６０】
いくつかの実施形態によれば、前記第２のキューは、第１のレジスタ、及び第１のレジスタに隣接した第２のレジスタを含む。第１のレジスタは、第２のキューの出力レジスタである。前記第１のタイルは、第３の状態では、第１の乗算器により第１のウェイトと、第２のキューの第２のレジスタからの活性化と、を乗じるように、さらに構成される。
【００６１】
上記目的を達成するためになされた実施形態によれば、プロセッシング回路を用いて計算する方法が提供される。前記プロセッシング回路は、第１のタイル、第２のタイル、メモリ、及びバスを含む。前記バスは、メモリは、第１のタイル及び第２のタイルに接続される。前記第１のタイルは、第１のウェイトレジスタ、第２のウェイトレジスタ、活性化バッファ、第１の乗算器、及び第２の乗算器を含む。前記活性化バッファは、第１の乗算器に接続される第１のキュー（ｑｕｅｕｅ）と、第２の乗算器に接続される第２のキューをと、を含む。第１のキューは、第１のレジスタ、及び第１のレジスタに隣接した第２のレジスタを含む。第１のレジスタは、第１のキューの出力レジスタである。前記方法は、第１の状態では、第１の乗算器により第１のキューの出力レジスタからの活性化と第１のウェイトとを乗算する段階と、第２の状態では第１の乗算器により第１のウェイトと第１のキューの第２のレジスタからの活性化とを乗じる段階と、を含む。
いくつかの実施形態によれば、前記第２のキューでは、前記第１のキューの出力はゼロを含む。
【００６２】
いくつかの実施形態によれば、前記プロセッシング回路は、第１の加算器をさらに含む。前記方法は、第１の状態で、前記第１の加算器を前記第１の乗算器の出力及び前記第２の乗算器の出力に接続する段階と、前記第１の加算器により前記第１の乗算器の出力から受信した結果と前記第２の乗算器の出力から受信した結果とを加算する段階と、をさらに含む。
いくつかの実施形態によれば、前記プロセッシング回路は、第２の加算器をさらに含む。前記方法は、前記第２の状態では、前記第２の加算器を前記第１の乗算器の出力に接続する段階をさらに含む。
【００６３】
いくつかの実施形態によれば、前記プロセッシング回路は、第１の加算器に接続される第１のアキュムレータ（ａｃｃｕｍｕｌａｔｏｒ）と、第２の加算器に接続される第２のアキュムレータとをさらに含む。第１のアキュムレータはレジスタを含む。前記方法は、第１の状態では、前記第１のアキュムレータにより前記第１の加算器から受信した合計を前記第１のアキュムレータのレジスタの値に加算する段階と、第１のアキュムレータの累積された値を形成する段階と、前記第１のアキュムレータにより第１のアキュムレータのレジスタに第１のアキュムレータの累積された値を格納する段階と、をさらに含む。
【００６４】
いくつかの実施形態によれば、第２のアキュムレータレジスタを含む。前記方法は、第２の状態では、前記第２のアキュムレータが前記第２の加算器から受信した合計を前記第２のアキュムレータのレジスタの値に加算する段階と、第２のアキュムレータの累積された値を形成する段階と、前記第２のアキュムレータにより第２のアキュムレータのレジスタに第２のアキュムレータの累積された値を格納する段階と、をさらに含む。
【００６５】
いくつかの実施形態によれば、前記プロセッシング回路は、活性化ゼロのスキップ制御回路をさらに含む。前記方法は、活性化ゼロのスキップ制御回路により、第１のキューの出力レジスタがゼロを含むか否かを決定する段階と、第１のキューの出力レジスタがゼロを含むという決定に応答して、第１のタイルが第２の状態で演算されるようにする段階と、をさらに含む。
【００６６】
いくつかの実施形態によれば、前記プロセッシング回路は、マルチプレクサをさらに含む。前記マルチプレクサは、マルチプレクサのシングルポート側から第１の乗算器に接続される入力を有し、マルチプレクサのマルチポート側から第１の加算器に接続される第１の出力を有し、そしてマルチプレクサのマルチポート側から第２の加算器に接続される第２の出力を有する。
【００６７】
いくつかの実施形態によれば、前記方法は、前記活性化ゼロのスキップ制御回路によりマルチプレクサを制御する段階と、第１の状態では、前記入力を第１の出力に接続する段階と、第２の状態では前記入力を第２の出力に接続する段階と、をさらに含む。
【００６８】
上記目的を達成するためになされた実施形態によれば、プロセッシングのための手段を用いて計算する方法が提供される。前記プロセッシングのための手段は、第１のタイル、第２のタイル、メモリ、及びバスを含む。前記バスは、メモリは、第１のタイル及び第２のタイルに接続される。前記第１のタイルは、第１のウェイトレジスタ、第２のウェイトレジスタ、活性化バッファ、第１の乗算器、及び第２の乗算器を含む。前記活性化バッファは、第１の乗算器に接続される第１のキュー（ｑｕｅｕｅ）と、第２の乗算器に接続される第２のキューと、を含む。第１のキューは、第１のレジスタ、及び第１のレジスタに隣接した第２のレジスタを含む。第１のレジスタは、第１のキューの出力レジスタである。前記方法は、第１の状態では、第１の乗算器により第１のキューの出力レジスタからの活性化と第１のウェイトとを乗算する段階と、第２の状態では、第１の乗算器により第１のウェイトを第１のキューの第２のレジスタからの活性化に乗じる段階と、を含む。
【発明の効果】
【００６９】
本発明に係るニューラルプロセッサによれば、テンソル演算の速度が向上し、減少された消費電力を有するニューラルプロセッサが提供される。
【図面の簡単な説明】
【００７０】
本明細書の特徴及び利点は、下記の明細書、特許請求の範囲及び添付された図面を参照して理解されるだろう。前記添付された図面は、以下の通りである。
【００７１】
【図１Ａ】本発明の実施形態によるニューラルプロセッサの概略構成を示すブロック図である。
【図１Ｂ】本発明の実施形態によるニューラルプロセッサの一部を示すブロック図である。
【図１Ｃ】本発明の実施形態によるニューラルプロセッサの一部のデータフロー（ｄａｔａ  ｆｌｏｗ）を示す図である。
【図１Ｄ】本発明の実施形態によるニューラルプロセッサの一部のデータフローを示す図である。
【図１Ｅ】本発明の実施形態によるニューラルプロセッサの一部のデータフローを示す図である。
【図１Ｆ】本発明の実施形態によるニューラルプロセッサの一部のデータフローを示す図である。
【図１Ｇ】本発明の実施形態によるニューラルプロセッサの一部のデータフローを示す図である。
【図１Ｈ】本発明の実施形態によるニューラルプロセッサの一部のデータフローを示す。
【図１Ｉ】本発明の実施形態によるニューラルプロセッサの一部を示すブロック図である。
【図１Ｊ】本発明の実施形態による３つの場合に関するニューラルプロセッサの一部を示すブロック図である。
【図１Ｋ】本発明の実施形態によるニューラルプロセッサの一部の概略図である。
【図１Ｌ】本発明の実施形態によるニューラルプロセッサの一部を示すブロック図である。
【図１ＭＡ】本発明の実施形態によるニューラルプロセッサの一部を示すブロック図である。
【図１ＭＢ】本発明の実施形態によるニューラルプロセッサの一部を示すブロック図である。
【図１Ｎ】本発明の実施形態によるニューラルプロセッサの一部を示すブロック図である。
【図１Ｏ】本発明の実施形態によるニューラルプロセッサを示すブロック図である。
【図１Ｐ】本発明の実施形態によるニューラルプロセッサの一部を示すブロック図である。
【図１Ｑ】本発明の実施形態によるサイズテーブルの表である。
【図１Ｒ】本発明の実施形態によるテンソル図（ｔｅｎｓｏｒ  ｄｉａｇｒａｍ）である。
【図１Ｓ】本発明の実施形態によるテンソル図である。
【図１Ｔ】本発明の実施形態によるニューラルプロセッサの一部のデータフローを示す図である。
【図１Ｕ】本発明の実施形態によるニューラルプロセッサの一部のデータフローを示す図である。
【図１Ｖ】本発明の実施形態によるニューラルプロセッサの一部を示すブロック図である。
【図１ＷＡ】本発明の実施形態によるニューラルプロセッサの一部を示すブロック図である。
【図１ＷＢ】本発明の実施形態によるニューラルプロセッサの一部のデータフローを示す図である。
【図１ＷＣ】本発明の実施形態によるニューラルプロセッサの一部のデータフロー図である。
【図１ＷＤ】本発明の実施形態によるニューラルプロセッサの一部のデータフローを示す図である。
【図１ＷＥ】本発明の実施形態によるニューラルプロセッサの一部のデータフローを示す図である。
【図１Ｘ】本発明の実施形態によるニューラルプロセッサの一部を示すブロック図である。
【図２ＡＡ】本発明の実施形態によるコンボリューション図（ｃｏｎｖｏｌｕｔｉｏｎ  ｄｉａｇｒａｍ）である。
【図２ＡＢ】本発明の実施形態によるコンボリューション図である。
【図２ＡＣ】本発明の実施形態によるコンボリューション図である。
【図２ＡＤ】本発明の実施形態によるコンボリューション図である。
【図２ＢＡ】本発明の実施形態によるコンボリューション図である。
【図２ＢＢ】本発明の実施形態によるコンボリューション図である。
【図２ＢＣ】本発明の実施形態によるコンボリューション図である。
【図２ＢＤ】本発明の実施形態によるコンボリューション図である。
【図２ＢＥ】本発明の実施形態によるコンボリューション図である。
【図２ＢＦ】本発明の実施形態によるコンボリューション図である。
【図２ＢＧ】本発明の実施形態によるコンボリューション図である。
【図２ＢＨ】本発明の実施形態によるコンボリューション図である。
【図２ＢＩ】本発明の実施形態によるコンボリューション図である。
【図２ＢＪ】本発明の実施形態によるコンボリューション図である。
【図２ＢＫ】本発明の実施形態によるコンボリューション図である。
【図２ＢＬ】本発明の実施形態によるコンボリューション図である。
【図２ＢＭ】本発明の実施形態によるコンボリューション図である。
【図２Ｃ】本発明の実施形態によるコンボリューション図である。
【図２ＤＡ】本発明の実施形態によるコンボリューション図である。
【図２ＤＢ】本発明の実施形態によるコンボリューション図である。
【図２ＤＣ】本発明の実施形態によるコンボリューション図である。
【図２ＤＤ】本発明の実施形態によるコンボリューション図である。
【図２ＤＥ】本発明の実施形態によるコンボリューション図である。
【図２ＤＦ】本発明の実施形態によるコンボリューション図である。
【図２ＤＧ】本発明の実施形態によるコンボリューション図である。
【図２ＤＨ】本発明の実施形態によるコンボリューション図である。
【図２ＤＩ】本発明の実施形態によるコンボリューション図である。
【図２ＤＪ】本発明の実施形態によるコンボリューション図である。
【図２ＤＫ】本発明の実施形態によるコンボリューション図である。
【図２ＤＬ】本発明の実施形態によるコンボリューション図である。
【図２ＤＭ】本発明の実施形態によるコンボリューション図である。
【図２ＤＮ】本発明の実施形態によるコンボリューション図である。
【図２ＤＯ】本発明の実施形態によるコンボリューション図である。
【図２ＤＰ】本発明の実施形態によるコンボリューション図である。
【図２ＤＱ】本発明の実施形態によるコンボリューション図である。
【図２ＤＲ】本発明の実施形態によるコンボリューション図である。
【図２ＤＳ】本発明の実施形態によるコンボリューション図である。
【図２ＤＴ】本発明の実施形態によるコンボリューション図である。
【図２ＤＶ】本発明の実施形態によるコンボリューション図である。
【図２ＤＷ】本発明の実施形態によるコンボリューション図である。
【図２ＤＸ】本発明の実施形態によるコンボリューション図である。
【図２Ｅ】本発明の実施形態によるリードテーブル（ｒｅａｄ  ｔａｂｌｅ）である。
【図２Ｆ】本発明の実施形態によるリードテーブルである。
【図２ＧＡ】本発明の実施形態によるコンボリューション図である。
【図２ＧＢ】図２ＧＢは、本発明の実施形態によるコンボリューション図である。
【図２ＨＡ】本発明の実施形態によるコンボリューション図である。
【図２ＨＢ】本発明の実施形態によるコンボリューション図である。
【図２ＨＣ】本発明の実施形態によるコンボリューション図である。
【図２ＨＤ】本発明の実施形態によるコンボリューション図である。
【図３ＡＡ】本発明の実施形態によるニューラルプロセッサの一部を示すブロック図である。
【図３ＡＢ】本発明の実施形態によるデータフローを示す図である。
【図３ＡＣ】本発明の実施形態によるデータフローを示す図である。
【図３ＡＤ】本発明の実施形態によるデータフローを示す図である。
【図３ＡＥ】本発明の実施形態によるデータフローを示す図である。
【図３ＡＦ】本発明の実施形態によるデータフローを示す図である。
【図３ＡＧ】本発明の実施形態によるデータフローを示す図である。
【図３ＡＨ】本発明の実施形態によるデータフローを示す図である。
【図３ＡＩ】本発明の実施形態によるデータフローを示す図である。
【図３ＡＪ】本発明の実施形態によるデータフローを示す図である。
【図３ＡＫ】本発明の実施形態によるデータフローを示す図である。
【図３ＢＡ】本発明の実施形態によるニューラルプロセッサの一部のブロック図を示す。
【図３ＢＢ】本発明の実施形態によるデータ図（ｄａｔａ  ｄｉａｇｒａｍ）である。
【図３ＢＣ】本発明の実施形態によるデータ図である。
【図３ＣＡ】本発明の実施形態によるニューラルプロセッサの一部を示すブロック図である。
【図３ＣＢ】図３ＣＢは、本発明の実施形態によるニューラルプロセッサの一部を示すブロック図である。
【図３ＤＡ】本発明の実施形態によるデータ図である。
【図３ＥＡ】本発明の実施形態によるニューラルプロセッサの一部を示すブロック図である。
【図３ＥＢ】本発明の実施形態によるニューラルプロセッサの一部を示すブロック図である。
【図３ＦＡ】本発明の実施形態によるニューラルプロセッサの一部を示すブロック図である。
【図３ＦＢ】本発明の実施形態によるデータ図である。
【図３ＦＣ】本発明の実施形態によるニューラルプロセッサの一部を示すブロック図である。
【図３ＧＡ】本発明の実施形態によるデータ図である。
【図３ＧＢ】本発明の実施形態によるニューラルプロセッサの一部を示すブロック図である。
【図３ＧＣ】本発明の実施形態によるニューラルプロセッサの一部を示すブロック図である。
【図３ＧＤ】本発明の実施形態によるニューラルプロセッサの一部を示すブロック図である。
【図３ＨＡ】本発明の実施形態によるデータ図である。
【図３ＨＢ】本発明の実施形態によるニューラルプロセッサの一部を示すブロック図である。
【図３ＨＣ】本発明の実施形態によるニューラルプロセッサの一部を示すブロック図である。
【図３ＨＤ】本発明の実施形態によるデータ図である。
【図３ＩＡ】本発明の実施形態によるニューラルプロセッサの一部を示すブロック図である。
【図３ＩＢ】本発明の実施形態によるニューラルプロセッサの一部を示すブロック図である。
【図３ＩＣ】本発明の実施形態によるニューラルプロセッサの一部を示すブロック図である。
【図３ＩＤ】本発明の実施形態によるニューラルプロセッサの一部を示すブロック図である。
【図３ＩＥ】本発明の実施形態によるデータ図である。
【図３ＩＦ】本発明の実施形態によるデータ図である。
【図３ＪＡ】本発明の実施形態によるデータフローを示す図である。
【図３ＪＢ】本発明の実施形態によるデータフローを示す図である。
【図３ＪＣ】本発明の実施形態によるデータフローを示す図である。
【図３ＪＤ】本発明の実施形態によるデータフローを示す図である。
【図３ＫＡ】本発明の実施形態によるニューラルプロセッサの一部を示すブロック図である。
【図３ＫＢ】本発明の実施形態によるデータ図である。
【図３ＬＡ】本発明の実施形態によるニューラルプロセッサの一部を示すブロック図である。
【図３ＬＢ】本発明の実施形態によるニューラルプロセッサの一部を示すブロック図である。
【図３ＬＣ】本発明の実施形態によるニューラルプロセッサの一部を示すブロック図である。
【図３ＬＤ】本発明の実施形態によるニューラルプロセッサの一部を示すブロック図である。
【図３ＭＡ】本発明の実施形態によるニューラルプロセッサの一部を示すブロック図である。
【図３ＭＢ】本発明の実施形態によるニューラルプロセッサの一部を示すブロック図である。
【図３ＮＡ】本発明の実施形態によるニューラルプロセッサの一部を示すブロック図である。
【図３ＯＡ】本発明の実施形態によるニューラルプロセッサの一部を示すブロック図である。
【図３ＯＢ】本発明の実施形態によるニューラルプロセッサの一部を示すブロック図である。
【図３ＯＣ】本発明の実施形態によるニューラルプロセッサの一部を示すブロック図である。
【図３ＰＡ】本発明の実施形態によるニューラルプロセッサの一部を示すブロック図である。
【図３ＰＢ】本発明の実施形態によるニューラルプロセッサの一部を示すブロック図である。
【図３ＰＣ】本発明の実施形態によるニューラルプロセッサの一部を示すブロック図である。
【図４ＡＡ】本発明の実施形態によるニューラルプロセッサの一部を示すブロック図である。
【図４ＡＢ】本発明の実施形態によるニューラルプロセッサの一部を示すブロック図である。
【図４ＡＣ】本発明の実施形態によるニューラルプロセッサの一部を示すブロック図である。
【図４ＡＤ】本発明の実施形態によるニューラルプロセッサの一部を示すブロック図である。
【図４ＡＥ】本発明の実施形態によるニューラルプロセッサの一部を示すブロック図である。
【図４ＡＦ】本発明の実施形態によるニューラルプロセッサの一部を示すブロック図である。
【図４ＡＧ】本発明の実施形態によるニューラルプロセッサの一部を示すブロック図である。
【図４ＡＨ】本発明の実施形態によるニューラルプロセッサの一部を示すブロック図である。
【図４ＡＪ】本発明の実施形態によるニューラルプロセッサの一部を示すブロック図である。
【図４ＡＫ】本発明の実施形態によるニューラルプロセッサの一部を示すブロック図である。
【図４ＡＬ】本発明の実施形態によるニューラルプロセッサの一部を示すブロック図である。
【図４ＡＭ】本発明の実施形態によるニューラルプロセッサの一部を示すブロック図である。
【図４ＡＮ】本発明の実施形態によるニューラルプロセッサの一部を示すブロック図である。
【図４ＢＡ】本発明の実施形態によるニューラルプロセッサの一部を示すブロック図である。
【図４ＢＢ】本発明の実施形態によるニューラルプロセッサの一部を示すブロック図である。
【図４ＢＣ】本発明の実施形態によるニューラルプロセッサの一部を示すブロック図である。
【図４ＢＤ】本発明の実施形態によるニューラルプロセッサの一部を示すブロック図である。
【図４ＣＡ】本発明の実施形態によるニューラルプロセッサの一部を示すブロック図である。
【図４ＣＢ】本発明の実施形態によるニューラルプロセッサの一部を示すブロック図である。
【図４ＣＣ】本発明の実施形態によるニューラルプロセッサの一部を示すブロック図である。
【図４ＤＡ】本発明の実施形態によるニューラルプロセッサの一部を示すブロック図である。
【図４ＤＢ】本発明の実施形態によるニューラルプロセッサの一部を示すブロック図である。
【図４ＤＣ】本発明の実施形態によるニューラルプロセッサの一部を示すブロック図である。
【図４ＥＡ】本発明の実施形態によるニューラルプロセッサの一部を示すブロック図である。
【図４ＥＢ】本発明の実施形態によるニューラルプロセッサの一部を示すブロック図である。
【図４ＥＣ】本発明の実施形態によるニューラルプロセッサの一部を示すブロック図である。
【図４ＦＡ】本発明の実施形態によるニューラルプロセッサの一部を示すブロック図である。
【図４ＦＢ】本発明の実施形態によるニューラルプロセッサの一部を示すブロック図である。
【図４Ｇ】本発明の実施形態によるニューラルプロセッサの一部を示すブロック図である。
【図４Ｈ】本発明の実施形態によるニューラルプロセッサの一部を示すブロック図である。
【図５Ａ】本発明の実施形態によるニューラルプロセッサの一部を示すブロック図である。
【図５Ｂ】本発明の実施形態によるニューラルプロセッサの一部を示すブロック図である。
【図５Ｃ】本発明の実施形態によるニューラルプロセッサの一部を示すブロック図である。
【図５Ｄ】本発明の実施形態によるニューラルプロセッサの一部を示すブロック図である。
【図５Ｅ】本発明の実施形態によるニューラルプロセッサの一部を示すブロック図である。
【図５Ｆ】本発明の実施形態によるニューラルプロセッサの一部を示すブロック図である。
【図５Ｇ】本発明の実施形態によるニューラルプロセッサの一部を示すブロック図である。
【図６】本発明の実施形態によるニューラルプロセッサの一部を示すブロック図である。
【発明を実施するための形態】
【００７２】
添付された図面と関連して、以下に説明される詳細な説明は、本開示に基づいて提供されるニューラルプロセッサの例としての実施形態の説明として意図され、本開示が構成されたり利用されたりできる唯一の形態を表すようには意図しない。
本説明は、図に示した実施形態に関連して、本開示の特徴を説明する。
しかし、同一又は同等の機能と構造は、本開示の範囲内に含まれるように意図した異なる実施形態による、生み出されるよう意図され得る。
本明細書の他の部分で引用されたように、類似のコンポーネントの符号は、類似のコンポーネント又は特徴を示すように意図する。
【００７３】
図１Ａは、本発明の実施形態によるニューラルプロセッサ１００の概略構成を示すブロック図である。
出力の特徴マップ（ｏｕｔｐｕｔ  ｆｅａｔｕｒｅ  ｍａｐ：ＯＦＭ）を形成するために、ニューラルプロセッサは、ウェイト（ｗｅｉｇｈｔ）の多次元的アレイ（又はテンソル）と入力特徴マップ（Ｉｎｐｕｔ  Ｆｅａｔｕｒｅ  Ｍａｐ：ＩＦＭ）（又は、「活性化」のテンソル）とのコンボリューション、又はテンソル積を効率的に計算するように構成される。
ニューラルプロセッサは、また、特徴マッププーリング（ｐｏｏｌｉｎｇ）及び／又は活性化関数を計算するように構成されてもよいが、明確性と簡潔性のために、プーリングと活性化関数は、本開示では多くは議論しない。
【００７４】
複数のＳＲＡＭバンクセット１０９（それぞれは、複数の、例えば、図４ＡＢ及び４ＡＣでの４つのＳＲＡＭバンク１０８を含む）は、後続の計算のためにＳＲＡＭバンクセット１０９に格納された入力活性化マップをタイル１０２に持ってくるＩＦＭ（ｉｎｐｕｔ  ｆｅａｔｕｒｅ  ｍａｐ）伝達ファブリック１０４を介してマルティプライ・アンド・リデュース（Ｍｕｌｔｉｐｌｙ−ａｎｄ−Ｒｅｄｕｃｅ、乗算−そして−縮小、又は「ＭＲ」）のタイル１０２（以下で、より詳細に説明される）に接続する。
以下で、より詳細に議論するように、タイル１０２は、乗算器ユニット（Ｍｕｌｔｉｐｌｉｅｒ  Ｕｎｉｔ：ＭＵ）１０３のアレイを含む。
また、タイル１０２は、格納のためにタイル１０２からＳＲＡＭバンクセット１０９へ計算された結果を伝送するＯＦＭ（ｏｕｔｐｕｔ  ｆｅａｔｕｒｅ  ｍａｐ）伝達ファブリック１０６を介して、ＳＲＡＭバンクセット１０９に接続される。
【００７５】
ＩＦＭ伝達ファブリック１０４は、セグメント（ｓｅｇｍｅｎｔ、分割）されたバスであり、（以下で、議論するように）、結果的には、ＳＲＡＭバンクセット１０９のそれぞれは、以下で、より詳細に議論するように、タイル１０２の中のいずれか１つと関連付けられる。
中央コントローラ１１０は、ユーティリティバス１１２を介してシステム内のレジスタを制御する制御ワードを供給する。
データは、ＡＸＩ（Ａｄｖａｎｃｅｄ  Ｅｘｔｅｎｓｉｂｌｅ  Ｉｎｔｅｒｃｏｎｎｅｃｔ  ｂｙ  ＡＲＭ  Ｌｔｄ）インターコネクト１１４を介してニューラルプロセッサに伝送される。
ニューラルプロセッサにより実行されたプロセッシング演算の結果は、ＡＸＩインターコネクト１１４を介して同様に回収（ｒｅｔｒｉｅｖｅ）される。
マイクロコントローラ（ｍｉｃｒｏ−ｃｏｎｔｒｏｌｌｅｒ：ＭＣＵ）１１６は、ＤＭＡコントローラ１１８を使用してニューラルプロセッサと外部メモリ１２０との間のデータ伝送を調整及び実行するだけではなく、中央コントローラを適切にタイミング良く構成することにより、計算を調整するのに使用され得る。
【００７６】
各タイル１０２は、ＭＲ（ｍｕｌｔｉｐｌｙ−ａｎｄ−ｒｅｄｕｃｅ）列１３３のＭＲ（ｍｕｌｔｉｐｌｙ−ａｎｄ−ｒｅｄｕｃｅ）アレイ１２２を含む。
図１Ｂは、いくつかの実施形態での、ＭＲアレイ１２２を示す。
それぞれのＭＲアレイは、８つのＭＲ列１３３を含む。
それぞれのＭＲ列１３３は、１６個の乗算器ユニット（ＭＵ：ｍｕｌｔｉｐｌｉｅｒ  ｕｎｉｔ）１０３を含み、２つの加算器ツリー（１２８Ａ及び１２８Ｂ）をさらに含む。
明確性のために図１Ｂは、１６個のＭＵ１０３の内の４つだけを図示したことに留意しなければならない。
【００７７】
各ＭＵ１０３は、複数のレジスタ、例えば「ウェイト（重み）レジスタ（ｗｅｉｇｈ  ｒｅｇｉｓｔｅｒ）」と呼ばれる１８個の９ビットのレジスタを含むレジスタファイル１２７、及び乗算器１２６を含む。
乗算器１２６は、入力活性化（ｉｎｐｕｔ  ａｃｔｉｖａｔｉｏｎ）にウェイトを乗じる。
続いて、それぞれのＭＲ列１３３での加算器ツリー（１２８Ａ及び１２８Ｂ）は、列（ｃｏｌｕｍｎ）内で１６個のＭＵからの結果の積を合算することにより、ドット積（ｄｏｔ  ｐｒｏｄｕｃｔ）を形成する。
合算（要約）は、以下で、より詳細に説明する特定の方式により実行される。
【００７８】
また、それぞれのタイル１０２は、ＩＦＭキャッシュ１３９、及び活性化ブロードキャストユニット（Ａｃｔｉｖａｔｉｏｎ  Ｂｒｏａｄｃａｓｔ  Ｕｎｉｔ：ＡＢＵ）１４１を含む。
ＩＦＭキャッシュ１３９は、ＳＲＡＭから受信したＩＦＭ値をキャッシュ（ｃａｃｈｉｎｇ）することにより、入力特徴マップのＳＲＡＭリード（ｒｅａｄ）を減少させることを目的とする。
それぞれのＭＲ列１３３が１６個のＭＵ１０３を含むように、ＩＦＭキャッシュ１３９は、１６個の並列「活性化レーン（ａｃｔｉｖｅ  ｌａｎｅｓ）」を含む。
各活性化レーン１３７は、ＭＲアレイ１２２で乗算器ユニットの「行（ｒｏｗ）」に効果的に対応する。
【００７９】
活性化ブロードキャストユニットは、入力活性化の準備を担当する。
準備プロセスでは、第１の段階は、必要なコンボリューションシーケンスにしたがって、ＩＦＭキャッシュ１３９からＩＦＭ活性化バッファ１２４へ入力活性化をフェッチすると同時に、スパース活性化計算機能（ｓｐａｒｓｅ  ａｃｔｉｖａｔｉｏｎ  ｃｏｍｐｕｔａｔｉｏｎ  ｆｕｎｃｔｉｏｎａｌｉｔｙ）を実装できるとき、ゼロ値の活性化（ｚｅｒｏ−ｖａｌｕｅｄ  ａｃｔｉｖａｔｉｏｎ）を省略する段階を含む。
スパース活性化計算の特徴は、選択的に非活性化されることにあり、それにより「デンス（ｄｅｎｓｅ）」テンソルの計算モードになる。
準備プロセスでは、第２の段階は、数字タイプの活性化を「サイン・アンド・８ビット・マグニチュード」（ｓｉｇｎ−ａｎｄ−８ｂｉｔ−ｍａｇｎｉｔｕｄｅ）のフォーマット（ｆｏｒｍａｔ）に変換する段階を含む。
これは、タイプ変換器１３５を用いて、８ビットを超えるビット幅を有するデータタイプを一連の「サイン・アンド・８ビット・マグニチュード」の値に分割（ｐａｒｔｉｔｉｏｎｉｎｇ）する段階を含む。
活性化が、グーグルテンソルフロー（Ｇｏｏｇｌｅ  ＴｅｎｓｏｒＦｌｏｗ）によりサポートされる「ゼロポイント（ｚｅｒｏ  ｐｏｉｎｔ）」を使用してエンコードされると、活性化が、「サイン・アンド・８ビット・マグニチュード」のフォーマットに変換される前に、ゼロポイントの定数値Ｚが活性化に追加され得る。
【００８０】
それぞれのＭＲ列１３３が１６個のＭＵ１０３を含むように、ＡＢＵ１４１、ＩＦＭバッファ１２４、及びタイプ変換器１３５は、それぞれ１６個のレーンを含む。
結果的に変換された１６個の活性化値は、ＭＲアレイ１２２と並列にブロードキャスト（ｂｒｏａｄｃａｓｔ）され、それぞれの活性化レーンは８つの乗算器ユニットの対応する行に入力の活性化値を持ってくる。
また、それぞれのＭＲ列は、加算器ツリー（１２８Ａ及び１２８Ｂ）のそれぞれについて、１つずつアキュムレータ（１３０Ａ及び１３０Ｂ）を含む。
本明細書で使用するように、「アキュムレータ（ａｃｃｕｍｕｌａｔｏｒ）」は、レジスタのコンテンツ（ｃｏｎｔｅｎｔ）に入力値を合算して、レジスタのコンテンツを合算した合計によってオーバーライト（ｏｖｅｒｗｒｉｔｅ）するように構成された加算器とレジスタの組合せである。
【００８１】
上述したように、ＭＲアレイ１２２内の乗算器ユニットは、複数の行、例えば、１６個の行に配列される。
図１Ｂは、明確性のために、１６個の内の４つの行だけを図に示し、列（又は「ＯＦＭチャンネル」）、例えば、図１Ｂに示した８つの列（この中で２つのラベルされた（ｌａｂｅｌｅｄ）「００」及び「０７」が示される）に配列される。
【００８２】
１６の長さを有するＩＦＭベクトルは「ＩＦＭスライス」と呼ばれる。
ＩＦＭスライスは、関連するＩＦＭテンソル、例えば、ＩＦＭ［ｘ，ｙ，ｄ：ｄ＋１５］のインデックスとしてのそれと関連するデプス（深さ、ｄｅｐｔｈ）チャンネルインデックス（ｄ）と、関連付けられた平面座標（ｘ，ｙ）と、を有する。
一般的な場合では、タイル１０２は、３ＤのＩＦＭテンソルを含むオン・チップＳＲＡＭから一度に１つのＩＦＭスライスを受信する。
それぞれの入力ＩＦＭスライスは、入力レイヤー（ｉｎｐｕｔ  ｌａｙｅｒ）の平面位置（ｘ，ｙ）でのインデックス（ｄ）からインデックス（ｄ＋１５）までの１６個のデプスチャンネルに対する値を含む。
【００８３】
同様に、８の長さを有するＯＦＭベクトルは「ＯＦＭスライス」と呼ばれる。
ＯＦＭスライスは、関連付けられＯＦＭテンソル（例えば、ＯＦＭ［ｘ，ｙ，ｄ：ｄ＋７］）に対するインデックスとして関連付けられたデプスチャンネルインデックス（ｄ）と、平面座標（ｘ，ｙ）を有する。
一般的な場合では、タイル１０２は、ＯＦＭスライスを出力として生成する。
以下で見られるように、タイルが停止され（ｓｔａｌｌｅｄ）ない場合は、いくつかの実施形態では、出力レートは、クロックあたり１つのＯＦＭスライスから、例えば、クロックあたり最大２つのＯＦＭスライスにまで変化する。
ＳＲＡＭに格納するためにＯＦＭ伝達ファブリック１０６を介してエンドＯＦＭベクトルの結果を伝送する前に、ＯＦＭベクトル計算を完了するためにタイル１０２からのタイル１０２のＯＦＭ出力ベクトル（ＯＦＭスライス）は、減少ファブリック１１１によって、さらに減少される必要があることに留意しなければならない。
【００８４】
ＩＦＭ及びＯＦＭのテンソルは、全て第４の「バッチ（ｂａｔｃｈ）」のディメンションを有し得ることもあることに留意しなければならないものの、ニューラルプロセッサの目的は、ニューラルネットワークモデルのリアルタイム推論を加速化することであり、ニューラルネットワークモデルのトレーニングとは異なり、リアルタイム推論は、一般的に、１のバッチサイズ（ｂａｔｃｈ  ｓｉｚｅ）に対して実行される。
説明の便宜のために、配置ディメンション（次元）（ｂａｔｃｈ  ｄｉｍｅｎｓｉｏｎ）は、以下の説明では、ほとんど省略するものであり、配置ディメンションの詳細に対しては、後で個別に説明するものである。
【００８５】
ニューラルプロセッサ１００は、同期ロジック内で実装され得、それぞれのＭＲ列１３３は、全体的に１つのクロックドメイン内にある。
いくつかの実施形態では、演算のときに、それぞれの演算サイクル（ｃｙｃｌｅ）の間（例えば、それぞれのクロックサイクルの間）、１６個の乗算器１２６のそれぞれは、それの入力での２つの要素からそれぞれの積（ｐｒｏｄｕｃｔ）を形成する。
加算器１２８のそれぞれは、その入力において、これら１６個の積の一部の合算を形成する（図１Ｂにおいて４つのレーンにについて示しているように）。
それぞれのアキュムレータ１３０の加算器は、
（ｉ）アキュムレータ１３０のレジスタの現在値に
（ｉｉ）対応する加算器１２８の出力を加えた合計を形成する。
次のクロックサイクルの開始のときに、各アキュムレータ１３０の各加算器の出力は、アキュムレータ１３０のレジスタにライト（ｗｒｉｔｅ）される。
【００８６】
いくつかの実施形態では、計算は、パイプラインでプロセッシングされ得る。
追加のレジスタ（つまり、フリップフロップのアレイ）は、例えば、回路が動作するクロック速度で適切なタイミングマージンを提供するために、図１Ｂに示した要素の間に存在する。
これらの実施形態では、スループットは、同一であり得るが（つまり、追加のレジスタがない場合と同一であるが、例えば、クロックサイクルあたり１つの乗算及び加算）、
（ｉ）乗算器１２６にフィード（ｆｅｅｄ）される入力データと
（ｉｉ）アキュムレータ１３０のレジスタにライト（ｗｒｉｔｅ）される乗算及び加算の最終的な結果との間のレイテンシは、さらに大きい可能性がある（例えば、複数のクロックサイクル）。
【００８７】
図１Ｃ〜図１Ｈは、演算の例を示す。
上記演算では、ニューラルプロセッサは、ＩＦＭの要素がゼロのとき、ゼロにより乗算を別の方法で実行する乗算器を利用するためには、特定の乗算と加算の演算を、順序を変えて先に進行させることにより、ＩＦＭでのスパーシティ（ｓｐａｒｓｉｔｙ）を活用して計算の完了を加速化させ得る。
ＩＦＭは、ＳＲＡＭバンクセット１０９に格納される。
ＳＲＡＭバンクセット１０９からのデータのフェッチ（ｆｅｔｃｈｉｎｇ）は、活性化バッファ１２４が複数のキューとして動作するようにスケジュールする。
それぞれのキューは、図１Ｂに示したデータの１つの行に対応し、ＭＲアレイ１２２のそれぞれのレーンをフィーディング（ｆｅｅｄｉｎｇ）する。
【００８８】
説明の明確性のために、ＳＲＡＭと活性化バッファ１２４との間のＩＦＭキャッシュ１３９は、ディセーブル（ｄｉｓａｂｌｅ）及びバイパス（ｂｙｐａｓｓ）したものと仮定する。
活性化データタイプは、ｕｎｉｔ８であり、ウェイト（重み）データタイプは、ｉｎｔ８である。
この場合、タイプの変換器１３５は、変更されずに活性化値を通過させるように動作し、ＭＵ１０３での乗算は、１クロック（つまり、１クロックサイクル）を取ると仮定する。
ＳＲＡＭバンクセット１０９は、例としての演算の開始から図１Ｂに示したいくつかのサンプルのＩＦＭ値を含み、ひたすら１つのタイルを使用すると仮定する。
【００８９】
また、１６個のＩＦＭレーンに、８つのＯＦＭ列、及び１０個の（ａ〜ｊ）のＩＦＭ入力ベクトルに対応するウェイトテンソルＷ［０…１５，０…７，ａ…ｊ］が対応するＭＵレジスタファイルにプリロード（ｐｒｅ−ｌｏａｄ）されたと仮定する。
【００９０】
いったん例としての演算がスタートすると、図１Ｃに示したように、例としての実施形態では、２つのＩＦＭベクトルのａ［］及びｂ［］（図１Ｃの右端にある２つの列）は活性化バッファ１２４内にフェッチされる。
したがって活性化バッファ１２４の第１の列（すなわち、図示された右側の列ａ［］）は、ＩＦＭの第１のベクトル（要素のａ０〜ａ３で構成される）を含み、活性化バッファ１２４の第２の列（つまり、図示された左の列ｂ［］）は、ＩＦＭの第２のベクトル（要素ｂ０〜ｂ３で構成され、ＩＦＭを形成するアレイを識別するために用いられる表記法でｂ１＝０）を含む。
図１Ｃにおいて、第２のキューは、第１の要素（ＭＲアレイ１２２に最も近い）としてａ１を含み、第２の要素（つまり、ｂ１＝０）としてゼロ０を含む。
【００９１】
活性化バッファ１２４の前面にあるＩＦＭベクトルのａ［０…３］は、ＭＲアレイ１２２にブロードキャスト（ｂｒｏａｄｃａｓｔ）され、つまり、ＩＦＭ値（ａ０）は、最上位行の８つの乗算器１２６のそれぞれの入力として、最上位の活性化レーンを介してブロードキャストされる。
同時に、０〜７列の最上段の行の乗算器は、それぞれの乗算器１２６に対する第２の入力として、それぞれのローカルレジスタファイルからウェイトのＷ［０，００…７，ａ］を受信する。
【００９２】
同様に、値（ａ１）は、上から２番目の活性化レーンを介して乗算器の上段から２番目の行に対する入力としてブロードキャストされる。
同時に、（０〜７）列の上段から２番目の行の乗算器は、それぞれの乗算器に対する第２の入力として、それらのそれぞれのローカルレジスタファイルからのウェイトＷ［１，０…７，ａ］をそれぞれ受信する。
【００９３】
演算では、それぞれのウェイトとＩＦＭの第１のベクトル（要素ａ０〜ａ３で構成される）の積は、乗算器１２６の（１６×８）アレイのそれぞれで形成される。
必要なドット積に対応する乗算の合計は、第１の加算器と１２８Ａに形成され、第１のアキュムレータに１３０Ａに格納される。
所望のドット積に対応する乗算は、次の通りである。
【００９４】
（数１）
ΣＡ，０＝ａ０×Ｗ０，０，ａ＋ａ１×Ｗ１，０，ａ＋ａ２×Ｗ２，０，ａ＋ａ３×Ｗ３，０，ａ
．．．
ΣＡ，７＝ａ０×Ｗ０，７，ａ＋ａ１×Ｗ１，７，ａ＋ａ２×Ｗ２，７，ａ＋ａ３×Ｗ３，７，ａ
【００９５】
このとき、ＩＦＭａ［］に対応するＯＦＭ出力ベクトルの計算が、アキュムレータ１３０Ａで利用可能な結果（図１ＣにおいてΣＡ，０．．．７で示される）とともに完了され、ＯＦＭ伝達ファブリック１０６に出力されるように備えられる（その次に、それぞれの列のアキュムレータ１３０Ａは、クリア（ｃｌｅａｒ）され得る）。
【００９６】
図１Ｄでは、ＩＦＭの第１のベクトルがプロセッシングされた後、ＩＦＭの第３のベクトル（要素ｃ０〜ｃ３で構成され、ｃ２＝０）は、活性化バッファ１２４内にリード（ｒｅａｄ）される。
ＩＦＭの第２のベクトル（要素ｂ０〜ｂ３で構成され、ｂ１＝０）のすべての要素とウェイトとの積を形成する代わりに、（これは第２のレーンのそれぞれの乗算器１２６で、ゼロ０とそれぞれのウェイトとの積を形成することを伴う）、ＩＦＭの第３のベクトルの第２の要素（つまり、要素ｃ１）は、順序を変えて、先に行われて第２のレーンのそれぞれの乗算器１２６でのそれぞれのウェイトによりかけられる。
【００９７】
同時に、レーン０、レーン２、及びレーン３での乗算器は、それらのそれぞれのローカルレジスタファイルから対応するウェイトのＷ［０，０…７，ｂ］、Ｗ［２，０…７，ｂ］、及びＷ［３，０…７，ｂ］を受信する。
しかし、活性化ｂ１＝０はスキップ（ｓｋｉｐ）されてレーン１は順序を変えて演算するため、レーン１の乗算器は、ＩＦＭベクトル（「ピクセル」）ｂに関連したものではなく、ＩＦＭベクトル（「ピクセル」）ｃに関連したウェイトＷ［０，０…７，ｃ］を受信する。
【００９８】
タイル１２２は、今、２つのピクセルを同時にプロセッシングするため（ピクセルｂ及びピクセルｃの一部）、列で乗算の積を加算することは、誤った結果を誘導する可能性がある。
正確な結果を得るために、２つの加算器ツリーの１つは、ピクセルｂに対するドット積を計算するのに使用される一方で、他の加算器ツリーをピクセルｃに対するドット積の計算を開始するために使用する。
【００９９】
第２のレーンの各乗算器１２６により形成された積は、各第２の加算器１２８Ｂ（図１Ｃにおいて、Ｂ，０…７で示される）にフィードされる一方、他のレーンの乗算器１２６により形成された積は、それぞれの第１の加算器１２８Ａにフィードされる。
事前に要素（ｃ１）の順序を変えた移動は、活性化バッファ１２４で「ホール（ｈｏｌｅ）」を形成する。
このことは、後続のクロックサイクルで事前に他の要素の順序を変えて進行できるという利点がある（図１Ｅに示したように、要素（ｄ１）が予め順序を変えて進行される）。
【０１００】
したがって、それぞれのウェイトとＩＦＭの第２のベクトルの非ゼロ（ｎｏｎｚｅｒｏ）の要素の積が計算される。
それらの合計が、各列の第１のアキュムレータ１３０Ａにあれば、各列の第１のアキュムレータ１３０Ａは、列のウェイトベクトルとＩＦＭの第２のベクトル（ｂ［］）とのドット積を含み、ＯＦＭ伝達ファブリック１０６に出力する（その次に、各列の第１のアキュムレータ１３０Ａは、クリアされることがある）。
【０１０１】
（数２）
ΣＡ，０＝ｂ０×Ｗ０，０，ｂ＋ｂ２×Ｗ２，０，ｂ＋ｂ３×Ｗ３，０，ｂ
．．．
ΣＡ，７＝ｂ０×Ｗ０，７，ｂ＋ｂ２×Ｗ２，７，ｂ＋ｂ３×Ｗ３，７，ｂ
【０１０２】
このとき、各列の第２のアキュムレータ１３０Ｂは、それぞれのウェイトベクトルとＩＦＭの第３のベクトル（ｃ１）とのドット積の１つの項（ｔｅｒｍ）だけを含む。
【０１０３】
（数３）
ΣＢ，０＝ｃ１×Ｗ１，０，ｃ
．．．
ΣＢ，７＝ｃ１×Ｗ１，７，ｃ
【０１０４】
図１Ｅを参照すると、後続の演算で（例えば、次のクロックサイクルの間）、ウェイトベクトルとＩＦＭの第３のベクトルの要素（ｃ０、ｃ３）との残りの積が形成される（ＭＲアレイ１２２の各列の第１及び第４の乗算器１２６により）。
そして第２のアキュムレータ１３０Ｂにおいて、第２のアキュムレータ１３０Ｂに既に格納された１つの積に加えられ、それぞれのウェイトベクトルとＩＦＭの第３のベクトル（ｃ［］）とのドット積が完成する。
【０１０５】
（数４）
ΣＢ，０＝ｃ０×Ｗ０，０，ｃ＋ｃ２×Ｗ１，０，ｃ＋ｃ３×Ｗ３，０，ｃ
．．．
ΣＢ，７＝ｃ０×Ｗ０，７，ｃ＋ｃ２×Ｗ１，７，ｃ＋ｃ３×Ｗ３，７，ｃ
【０１０６】
ウェイトベクトルとＩＦＭの第４のベクトル（要素ｄ０〜ｄ３で構成され、ｄ０＝ｄ４＝０）とのドット積は、ｄ１（ｃ１に関連付けられた積が、以前のサイクルに対して実行されたため、活性化バッファ１２４に「ホール（ｈｏｌｅ）」を残す）、及びｄ２（ｃ２＝０であるため）の両方の順序をあらかじめ変えて進行することにより、同時に計算される。
【０１０７】
（数５）
ΣＡ，０＝ｄ１×Ｗ１，０，ｄ＋ｄ２×Ｗ２，０，ｄ
．．．
ΣＡ，７＝ｄ１×Ｗ１，７，ｄ＋ｄ２×Ｗ２，７，ｄ
【０１０８】
この時点で、ＩＦＭベクトルｃ［］及びＩＦＭベクトルｄ［］の両方に対するＯＦＭの計算が完了する。
【０１０９】
同様に、図１Ｆに示したように、活性化バッファが相補的スパーシティ（ｃｏｍｐｌｅｍｅｎｔａｒｙ  ｓｐａｒｓｉｔｙ）を有する２つのベクトルのｅ［］及びｆ［］を含むと、ＭＲ列１２２の各列は、同時に２つのドット積を形成する。
図１Ｆの例では、例えば、各重み（ウェイト）ベクトルとＩＦＭの第５のベクトル（要素ｅ０〜ｅ３で構成され、ｅ０＝ｅ１＝０）とのドット積は、各重みベクトルとＩＦＭの第６のベクトル（要素ｆ０〜ｆ３で構成され、ｆ２＝ｆ３＝０）とのドット積と共に形成されてもよいし、第６のベクトルの非ゼロ（ｎｏｎ−ｚｅｒｏ）の要素は、すべて順序を変えて、先に進行させてもよい。
【０１１０】
図１Ｇは、ＩＦＭの第７のベクトルｇ［］（要素ｇ０〜ｇ３で構成され、ｇ１＝ｇ２＝ｇ３＝０）が活性化バッファ１２４の第１の列にあり、ＩＦＭの第８のベクトル（要素ｈ０〜ｈ３で構成され、ｈ２＝ｈ３＝０）が活性化バッファ１２４の第２の列にある状態を示す。
図１Ｇは、ＩＦＭの第８のベクトルの（非ゼロ）要素の順序を変えて先に進めすることにより、それぞれの対応するウェイトとＩＦＭの第８のベクトルｈ［］とのドット積がそれぞれの対応するウェイトとＩＦＭの第７ベクトルのドット積と同時に形成され、ＩＦＭの第７のベクトルの（非ゼロ）の要素と共に、それらがプロセッシングされる方法を示す。
ＩＦＭの第８のベクトルの（非ゼロ）要素のいずれか１つ（ｈ０）が、ＩＦＭの第７のベクトルの（非ゼロ）要素（ｇ０）と同じレーンにあるため、ＩＦＭの第８のベクトルの（非ゼロ）要素のそれぞれは、このような要素が先に順序を変えて進行するようにＭＲ列１２２の隣接のレーンにシフト（ｓｈｉｆｔ）される。
【０１１１】
このように、各列の上段から２番目の乗算器１２６（これは、この位置には、ゼロ要素を有するため、ＩＦＭの第７のベクトルｇ［］には、使用されずに）にＩＦＭの第８のベクトルｈ［］の第１の要素（ｈ０）がフィードされる。
そして各列の第３の乗算器１２６（これは、また、ＩＦＭの第７のベクトルｇ［］にも使用されずに）にＩＦＭの第８のベクトルｈ［］の第２の要素（ｈ１）をフィードするのは、ＩＦＭの第８のベクトルの（非ゼロ）要素がＩＦＭの第７のベクトルの（非ゼロ）の要素と共にプロセッシングされるようにする。
また、ウェイトベクトルの対応する要素もシフトされる。
具体的には、最上段レーンと関連付けられている各乗算器ユニットは、２つのウェイトをフェッチし、１つのウェイトは、図１Ｇで（ｗ０，０…７，ｇ）とラベル付けされたｇ０と関連付けられ、ここで、（０…７）は、対応する列を指し、そして他のウェイトは、図１Ｇで（ｗ０，０…７，ｈ）でラベリングされたｈ０と関連付けられる。
各ウェイト（ｗ０，０…７，ｇ）は、ｇ０を受信する最上段レーン内に、それのそれぞれの乗算器１２６にフィードされる。
しかし、各ウェイト（ｗ０，０…７，ｈ）は、１つのレーンの下にシフトされ、そしてｈ０を受信する上段から２番目のレーンの関連付けられた乗算器１２６にフィードされる。
最後に、上段から２番目のレーンでの乗算器ユニットは、それぞれｈ１に関連付けられたウェイト（ｗ１，０…７，ｈ）をフェッチし、このようなウェイトを１つのレーンの下に、ｈ１を受信する上段から三番目のレーンにずらす。
【０１１２】
図１Ｇに示した状態で、下段レーン内の各ＭＲ列１２２の各乗算器１２６は、１サイクルの間に使用されない。
各活性化レーンが同じチャネルから選択できる、より多くの（例えば、３）値を有し得るようになり、より深い（例えば、３−デプス（ｄｅｐｔｈ））活性化バッファ１２４を有するようにＭＲタイル１０２を構成する。
これにより、いくつかの実施形態では、すべての乗算器１２６を完全に利用できない、このような失敗の可能性を減少させることができる。
レーンから１つよりもっと遠い距離から非ゼロ活性化を持ってくること（シフトすること）は、またゼロ値の活性化を非ゼロ値の活性化に代替するのにより多くの柔軟性を提供する。
２つのセット以上の加算器ツリー及び関連付けられたアキュムレータがあれば乗算器の活用度を増加させることができる。
【０１１３】
図１Ｈは、図１Ｇに示したものに対する後続のサイクルを示し、後続のサイクルの内、活性化バッファ１２４の第１の列は、ＩＦＭの第９のベクトル（完全にゼロで構成される）を含み、活性化バッファ１２４の第２の列は、ＩＦＭの第１０のベクトル（要素ｊ０〜ｊ３で構成される）を含む。
図１Ｈに示した状態では、ＩＦＭの第１０のベクトルのすべての要素は、順序を変えて、先に進行され得る。
それぞれのウェイトベクトルとＩＦＭの第１０のベクトルｊ［］のドット積は、ＩＦＭの第９のベクトルのプロセッシングのための１サイクルの遅延を発生させずに計算されてもよい。
【０１１４】
上述した例で示したように、乗算器ユニット１２６の出力は、一部のクロックサイクルの間に、加算器ツリー１２８Ａにフィードされてもよいし、他のクロックサイクルの間に加算ツリー１２８Ｂにフィードされてもよい。
乗算器ユニット１２６の出力が加算器ツリー（１２８Ａ又は１２８Ｂ）にフィードされないとき、対応する加算器ツリー入力はゼロに設定される。
図１Ｉは、例えば、図１Ｄ〜図１Ｈの演算をサポートするために、任意の乗算器１２６の出力を第１の加算器１２８Ａ又は第２の加算器１２８Ｂに伝送するためにマルチプレクサ１３２を使用する構成を示す。
ここで、以下のようなことを含むマルチプレクサの制御信号（ｓｅｌ＿ａｄｄｅｒ＿ｔｒｅｅ［０…１５］）は、タイル内で計算を調整するタイル制御ロジック１４４から来る。
１．キャッシュからＩＦＭベクトルをフェッチすること。
２．活性化バッファから活性化レーンへの非ゼロ活性化の選択、及び多重化を行うこと。
３．各ＩＦＭベクトルと共に使用する加算器ツリーの選択、及び正しい加算器ツリーに乗算器ユニットの出力を多重化すること。
４．列アキュムレータをクリア（ｃｌｅａｒ）すること。
【０１１５】
乗算器出力は、常に加算器ツリー１２８Ａ又は加算器ツリー１２８Ｂにフィードされるが、同時に加算器ツリー（１２８Ａ及び１２８Ｂ）の両方にフィードされないため、より少ないロジックにより加算器ツリー（１２８Ａ及び１２８Ｂ）の両方を実装することが可能である。
図１Ｊは、第１の加算器１２８Ａ及び第２の加算器１２８Ｂの両方が１つの物理的加算器ツリーと適切なマルチプレクサ（図示せず）を使用して実装される論理概念であり得る方法を示す。
説明の明確性のために、それぞれが４つの入力を有する２つの加算器ツリーを構成することを考慮する。
４入力加算器ツリーは、３つの加算器を使用して実装され得る。
簡単（単純）な場合には、各加算器ツリーは、３つの加算器の要素を必要とするため、２つの４入力加算器ツリーを構成するには、６つの加算器の下位要素（ｓｕｂ−ｅｌｅｍｅｎｔ）が必要である。
少ない追加のマルチプレクサとともに３つの加算器の要素だけを使用して、２つの４入力加算器ツリーを構成する。
考慮すべき重要な３つの場合がある。
（ｉ）第１の場合では、４つの入力のすべては、第１の論理加算器１２８Ａにより合算される（そして第２の論理加算器１２８Ｂの出力はゼロである）。
（ｉｉ）第２の場合では、３つの入力は、第１の論理加算器１２８Ａにより合算される（そして第２の論理加算器１２８Ｂの出力は、残りの入力と同じである）。
（ｉｉｉ）第３の場合では、２つの入力は、第１の論理加算器１２８Ａにより合算され、そして２つの入力は、第２の論理加算１２８Ｂにより合算される。
２つの追加の場合（図示せず）で、第２の論理加算器１２８Ｂは、３つ又は４つの入力を合算し、そして第１の論理加算器１２８Ａは、それぞれ、残りの入力又はゼロと同じである。
本明細書で使用するように、「加算器（ａｄｄｅｒ）」は、図１Ｊの例示のように物理的加算器及びマルチプレクサの組み合わせで形成された複数の論理加算器の１つであるか、又は合計を形成する少なくとも２つの数字を加えるための物理的な回路である。
図１Ｊに示したように、６個ではなく、もっぱら３つの加算器要素（一部の追加的なマルチプレクサとともに、図示せず）は、すべての可能な場合を実装するのに十分である。
【０１１６】
図１Ｋは、いくつかの実施形態での乗算器ユニット１０３の内部回路図を示す。
乗算器ユニット１０３は、符号なし８ビット×符号なし８ビットの乗算器１２６と、ローカルウェイトを保有（ｈｏｌｄ）するレジスタファイル１２７と、乗算器１２６に対する入力ウェイトを選択するロジック１４３と、ローカルウェイトを隣接したレーンに「シフト（ｓｈｉｆｔ）」するロジック（１４９、１５１）と、動的（ｄｙｎａｍｉｃ）消費電力を低減させるためにマルティプライ・バイ・ゼロ（ｍｕｌｔｉｐｌｙ−ｂｙ−ｚｅｒｏ）の状況を検出し、乗算器をアイドルダウン（ｉｄｌｅ  ｄｏｗｎ）するロジック（１４５、１３６、１５７、１５５、１５９）及びウェイトローディングロジック１５７と、を備える。
【０１１７】
レジスタファイル１２７は、ウェイトを保有する。
１つのレジスタは、単一のｉｎｔ８又はｕｉｎｔ８ウェイトに対応する。
大きなビット幅を有するウェイトは、１つ以上のレジスタを占有し、例えば、ｉｎｔ１６又はｕｉｎｔ１６ウェイトは２つのレジスタを占有する。
レジスタファイル１２７は、１８個のｉｎｔ８又はｕｉｎｔ８重み値を保有するか、又は対応する９つのｉｎｔ１６又はｕｉｎｔ１６の重み値を保有する。
後述するように、レジスタの数は、部分結果の生成に依存せずに１６ビットのウェイトを使用する３−バイ−３（３−ｂｙ−３）のコンボリューションを計算できるように選択され得る。
【０１１８】
レジスタファイル１２７は、バーティカルウェイトロードバス（ｖｅｒｔｉｃａｌ  ｗｅｉｇｈｔ  ｌｏａｄ  ｂｕｓ）１０１｛ｓｗｔ＿ｉｎ［Ｃ］、ｗｔ＿ａｂｓ＿ｌｄ＿ｉｎ［７：０］［Ｃ］｝を介してウェイトをロードするための単一の入力ポートを含む。
それぞれのＭＲ列１３３のＣは、Ｃが０（ゼロ）から７までの範囲である独自のウェイトロードバスを受信する。
バーティカルウェイトロードバス１０１｛ｓｗｔ＿ｉｎ［Ｃ］、ｗｔ＿ａｂｓ＿ｌｄ＿ｉｎ［７：０］［Ｃ］｝上でウェイト値を設定し、ウェイトレジスタインデックスバス（ｗｅｉｇｈｔ  ｒｅｇｉｓｔｅｒ  ｉｎｄｅｘ  ｂｕｓ）（ｗｔ＿ｌｄ＿ｉｄｘ［４：０］）上でデスティネーションレジスタのインデックス（ゼロから１７まで）を指定する。
そしてウェイトをレーン（Ｌ）にロードするためにレーンウェイトロードイネーブル（ｌａｎｅ  ｗｅｉｇｈｔ  ｌｏａｄ  ｅｎａｂｌｅ）（ｗｔ＿ｌｄ＿ｅｎ＿ｌａｎｅ［Ｌ］）をアサート（ａｓｓｅｒｔ）することにより、ウェイトはウェイトデコンプレッションユニット（Ｗｅｉｇｈｔ  Ｄｅｃｏｍｐｒｅｓｓｉｏｎ  Ｕｎｉｔ）１３８（図１Ｋを参照）から、一度に１つの全体のレーンにロードされる。
【０１１９】
図１Ｋに示すように、単一のレーン内ですべてのウェイトをロードするために１８サイクルがかかり、全体のＭＵアレイ１２２内ですべてのウェイトをロードするために１８×１６＝２８８クロックサイクルがかかる。
一部の状況では、特に完全接続された（ｆｕｌｌｙ−ｃｏｎｎｅｃｔｅｄ：ＦＣ）レイヤー（ｌａｙｅｒ）を計算する際、ウェイトのロードの速度が十分でないことが有り得る。
コンボリューションレイヤー計算とは異なり、ＦＣレイヤーの計算中に、各ウェイトは一度だけ使用された後に廃棄される。
したがって、ＦＣレイヤーを計算する際に、乗算器１２６の最大活用を維持するためには、すべてのクロックごとにそれぞれの乗算器ユニット１０３で１つのウェイトをロードする必要があり、これは、図１Ｋに示したものよりも１６倍速い。
この場合での実施形態は、例えば、ウェイトのロードを高速化するために追加のウェイトロードバス１０１｛ｓｗｔ＿ｉｎ［Ｃ０］、ｗｔ＿ａｂｓ＿ｌｄ＿ｉｎ［７：０］［Ｃ０］｝、｛ｓｗｔ＿ｉｎ［Ｃ１］、ｗｔ＿ａｂｓ＿ｌｄ＿ｉｎ［７：０］［Ｃ１］｝などを含むように修正されてもよい。
【０１２０】
図１Ｋで、ウェイトの中のいずれかが１つのレーン上にシフトされているうちに、第２のウェイトが１つのレーンの下にシフトされる。
第３のウェイトが地域的（ローカル）に（ｌｏｃａｌｌｙ）に消費される場合には、ウェイトレジスタファイル１２７は、３つのウェイトを同時にフェッチさせる３つの出力ポートを含む。
【０１２１】
ローカル（局部）消費（ｌｏｃａｌ  ｃｏｎｓｕｍｐｔｉｏｎ）のために、ローカルレジスタファイル（ｌｏｃａｌ  ｒｅｇｉｓｔｅｒ  ｆｉｌｅ）からウェイトをフェッチすることは、マルチプレクサ１４７を使用して達成される。
例えば、図１Ｃにおいて、マルチプレクサ１４７は、ＩＦＭ値（ａ０）と乗じられるローカルに格納されたウェイト（Ｗ０，０，ａ）を選択する。
また、図１Ｄにおいて、マルチプレクサ１４７は、ＩＦＭ値（ｃ１）と乗じられるローカルに格納されたウェイト（Ｗ１，０，ｃ）を選択する。
【０１２２】
ローカルレジスタファイル１２７からウェイトをフェッチすること、並びに、そのウェイトを下位レーンにシフトさせることは、マルチプレクサ１４９を使用して達成される。
例えば、図１Ｇでは、ローカルに格納されたウェイト（Ｗ０，０，ｈ）は、ｈ０と乗じられるように１つのレーンの下にシフトされる。
【０１２３】
最後に、ローカルレジスタファイル１２７からウェイトをフェッチすること、並びに、該当するウェイトを上位レーンにシフトさせることは、マルチプレクサ１５１を使用して達成される。
【０１２４】
ＡＢＵ（活性化ブロードキャストユニット）１４１は、各活性化レーンのシフト及びブロードキャストされる（活性化レーンに）各ＩＦＭ値に関連付けられた活性化バッファへのオフセット（ｏｆｆｓｅｔ）に関する完全な情報を有する。
そのため、活性化ブロードキャストユニット１４１は、信号（ｓｅｌ＿ｗｔ＿ｓｅｌｆ［４：０］、ｓｅｌ＿ｗｔ＿ｄｎ１［４：０］）、及び信号（ｓｅｌ＿ｗｔ＿ｕｐ１［４：０］）をそれぞれ使用してすべての３つのレジスタファイルフェッチマルチプレクサ（１４７、１４９、及び１５１）を制御する。
【０１２５】
ＭＲ列１３３の領域を減少させるために、例えば、同じレジスタファイルからウェイトを、同時に上及び下にシフトすることを許容しないことにより、レジスタファイル１２７からの出力ポートの数は、３個から２個に減らせる。
たとえば、すべてのウェイトのシフトを許容しないか、又は１つのシフトを許容するかして、ローカルにウェイトを消費することで、レジスタファイル１２７内の出力ポートの数は、さらに１つに減らせる。
しかし、シフト、及び最大のシフト距離を限定することは、乗算器の利用率を多少減らすことができる。
ＭＲ列と活性化ブロードキャストユニットの複雑性、面積、及び消費電力を低減させながらも、活性化バッファデプス（ａｃｔｉｖａｔｉｏｎ  ｂｕｆｆｅｒ  ｄｅｐｔｈ）を有するシフトターゲットレーン選択の多様な変形及び組み合わせが、乗算器の利用率を最適化するように考案され得る。
関連付けられた開始で記述されたように、これを達成するための、特に効果的な方法及び装置は、擬似ランダム（ｐｓｅｕｄｏ−ｒａｎｄｏｍ）方式で活性化レーンをシャッフリング（ｓｈｕｆｆｌｉｎｇ）又はパーミューティング（ｐｅｒｍｕｔｉｎｇ）すること（関連付けられたウェイトをそれに応じてロードしながら）を含む。
【０１２６】
図１Ｋでは、マルチプレクサ１４３は、乗算器１２６により乗算に使用される入力ウェイトを選択する。
前述したように、入力ウェイトは、ローカルウェイトレジスタファイル１２７から来ることができるか、隣接した上部レーン（そして、いくつかの実施形態で同じ列）でのウェイトレジスタファイルから「ダウンシフト（ｓｈｉｆｔｅｄ  ｄｏｗｎ）」されるか、又は隣接した下部レーン（そして、いくつかの実施形態で同じ列）でのウェイトレジスタファイルから「アップシフト（ｓｈｉｆｔｅｄ  ｕｐ）」される。
これにより、信号の「｛ｓｗｔ＿ｓｅｌｆ、ｗｔ＿ａｂｓ＿ｓｅｌｆ［７：０］｝、｛ｓｗｔ＿ｄｎ１、ｗｔ＿ａｂｓ＿ｄｎ１［７：０］｝、及び｛ｓｗｔ＿ｕｐ１、ｗｔ＿ａｂｓ＿ｕｐ１［７：０］｝」により表示される。
ＡＢＵ１４１は、各活性化レーンのシフト及びブロードキャストされる（活性化レーンに）各ＩＦＭ値に関連付けられた活性化バッファのオフセットに関する完全な情報を有するため、活性化ブロードキャストユニット１４１は、信号の（ｓｅｌ＿ｍｕｌｔ＿ｗｔ［１：０］）を用いて、マルチプレクサ１４３を制御する。
【０１２７】
例えば、図１Ｃにおいて、マルチプレクサ１４３は、ＩＦＭの値（ａ１）と乗算されるウェイト（Ｗ０，０，ａ）を伴う（伝達する、運ぶ）「｛ｓｗｔ＿ｓｅｌｆ、ｗｔ＿ａｂｓ＿ｓｅｌｆ［７：０］｝」を選ぶだろう。
図１Ｄにおいて、マルチプレクサ１４３は、ＩＦＭ値（ｃ１）と乗算されるウェイト（Ｗ１，０，ｃ）を伴う「｛ｓｗｔ＿ｓｅｌｆ、ｗｔ＿ａｂｓ＿ｓｅｌｆ［７：０］｝」を選ぶだろう。
図１Ｇでは、マルチプレクサ１４３は、列ゼロ０内の上段から第２の乗算器によりＩＦＭ値（ｈ０）と乗算されるウェイト（Ｗ０，０，ｈ）を伴う「｛ｓｗｔ＿ｄｎ、ｗｔ＿ａｂｓ＿ｄｎ［７：０］｝」を選ぶだろう。
【０１２８】
図１Ｋに示すように、それぞれのレジスタファイル１２７は、９ビット幅を有する。
ここで８つのビットは、ウェイトのサイズを保有し、１つのビットはウェイト符号を保有する。
適用可能な場合は、「ゼロ点（ｚｅｒｏ−ｐｏｉｎｔ）」の定数Ｚが事前に追加された（ｐｒｅ−ａｄｄｅｄ）、サイン・アンド・８ビット・マグニチュードのフォーマットで格納される。
レジスタファイル１２７からウェイトがフェッチされるとき、符号付きｉｎｔ８タイプをサイン・アンド・８ビット・マグニチュードの表現（適用可能な場合ゼロポイントの追加を含む）にオン・ザ・フライ（ｏｎ−ｔｈｅ−ｆｌｙ、即時）変換するロジックを追加することで、レジスタファイル１２７のビット幅は、８ビットに減らせる。
レジスタファイル１３４のサイズが、記述された領域の節約をもたらすのに十分に大きく選択されると、このようなオン・ザ・フライ変換は重要であり得る。
【０１２９】
活性化ブロードキャストユニット（ＡＢＵ）１４１は、乗算器１２６への入力として使用される活性化「｛ｓａｃｔ、ａｃｔ＿ａｂｓ［７：０］｝」をブロードキャスト（ｂｒｏａｄｃａｓｔ）する。
ロジックゲート（１４５及び１５９）は、信号（ｗｔ＿ｚｅｒｏ及びａｃｔ＿ｚｅｒｏ）（ＡＢＵからの補助信号）を使用してウェイト（乗算に使用される）がゼロであるか、活性化（乗算に使用される）はゼロであるか、又は両方であるマルティプライ・バイ・ゼロ（ｍｕｌｔｉｐｌｙ−ｂｙ−ｚｅｒｏ）の状況であるかをチェックする。
マルティプライ・バイ・ゼロの状況が発生すれば、結果信号（ｍｕｌｔ＿ｂｙ＿ｚｅｒｏ）がアサート（ａｓｓｅｒｔ）され、「ｍｕｌｔ＿ｉｎ＿ｃｅ」の信号を使用してウェイトと活性化乗算器入力レジスタに対するクロックがゲート（ｇａｔｅ）されるようにする。
入力乗算器レジスタのクロックをゲートすることは、乗算器入力及び乗算器の内部信号が、それの以前の状態を維持する（固定）させるようにし、これにより、スイッチング活動を防止することにより、動的消費電力を低減させる。
このような活動と並行して、フリップフロップのゲート１５７は、１サイクルだけ（ｍｕｌｔ＿ｉｎ＿ｃｅ）信号を遅延させて（ｍｕｌｔ＿ｏｕｔ＿ｚｅｒｏ）の信号を生成する。
これは論理ゲート１５５がゼロとの乗算に対応する乗算器出力の（ｍｕｌｔ＿ｒｅｓｕｌｔ［１５：０］）をゼロ化（ｚｅｒｏ  ｏｕｔ）させる。
後述するように、全体のタイルの計算が中断（ｓｔａｌｌ）する必要があるたびに、ＡＢＵはまた、すべての乗算器をアイドル（ｉｄｌｅ）するために、信号（ｅｎ＿ｍｕｌｔ）を伝送することに留意しなければならない。
【０１３０】
図１Ｋの信号名は、次の規則に従うことに留意しなければならない。
「ａｃｔ」は、活性化を示す。
「ｗｔ」は、ウェイトを示す。
「ｓａｃｔ」、「ｓｗｔ」、「ｍｕｌｔ＿ｏｕｔ＿ｓ」、「ｓ＿ｉｎ＿ａ」などでの「ｓ」は、「ｓｉｇｎ」を示す。
そして「ｗｔ＿ａｂｓ」、「ａｃｔ＿ａｂｓ」などの「ａｂｓ」は、絶対値（大きさ）を示す。
【０１３１】
ＡＢＵは、サイン・アンド・８ビット・マグニチュード（ｓｉｇｎ−ａｎｄ−８ｂｉｔ−ｍａｇｎｉｔｕｄｅ）のフォーマットで活性化「｛ｓａｃｔ、ａｃｔ＿ａｂｓ［７：０］｝」をブロードキャストする。
同様に、選択された（乗算のための）ウェイト「｛ｍｕｌｔ＿ｓｗｔ、ｍｕｌｔ＿ｗｔ＿ａｂｓ［７：０］｝」は、またサイン・アンド・８ビット・マグニチュードのフォーマットで提供される。
乗算器１２６に対する入力信号「｛ｓ＿ｉｎ＿ａ、ｍｕｌｔ＿ｉｎ＿ａ［７：０］｝、｛ｓ＿ｉｎ＿ｂ、ｍｕｌｔ＿ｉｎ＿ｂ［７：０］｝」を作成するために、レジスタ１３６は、乗算されるウェイトと活性化をラッチ（ｌａｔｃｈ）する。
いくつかの実施形態では、乗算器は２つの８ビットの絶対値を乗算し、そして２つの符号の排他的論理和（ｅｘｃｌｕｓｉｖｅ−ｏｒ−ｉｎｇ）を実行することにより、積を計算し、結果的にサイン・アンド・１６ビット・マグニチュード（ｓｉｇｎ−  ａｎｄ−１６ｂｉｔ−ｍａｇｎｉｔｕｄｅ）の出力「｛ｍｕｌｔ＿ｏｕｔ＿ｓ、ｍｕｌｔ＿ｏｕｔ＿ａｂｓ［１５：０］｝」が生成される。
信号（ｍｕｌｔ＿ｏｕｔ［１５：０］）を生成するために、積の符号がアサート（ａｓｓｅｒｔ）されるとき、積の絶対値（ｍｕｌｔ＿ｏｕｔ＿ａｂｓ［１５：０］）を負数化することにより（つまり、積の結果が負数）、ロジック１５３は、サイン・アンド・１６ビット・マグニチュードの結果を加算器ツリーにフィードされる１６ビットの符号付き出力に変換する。
最後に、すでに述べたように、ロジック１５５は、マルティプライ・バイ・ゼロの場合において、「ｍｕｌｔ＿ｏｕｔ［１５：０］」をゼロ化する。
【０１３２】
乗算制御において、ＡＢＵの役割を要約すると、ＡＢＵ１４１は、サイン・アンド・８ビット・マグニチュードのフォーマットの入力ＩＦＭ、レーンアップ及びレーンダウンのシフトを含むウェイト選択制御、並びにブロードキャストされる現在の活性化がゼロであることを示す補助信号（ａｃｔ−ｚｅｒｏ）を提供する。
「ａｃｔ＿ｚｅｒｏ」信号がアサートされると、「｛ｓａｃｔ、ａｃｔ＿ａｂｓ［７：０］｝」の実際の値は、活性化レーンのスイッチング活動を低減させるために変更されないことがあることに留意しなければならない。
ゼロ値の活性化（ｚｅｒｏ−ｖａｌｕｅｄ  ａｃｔｉｖａｔｉｏｎ）がブロードキャストされる場合が発生することがあるにもかかわらず、いくつかの実施形態は、このような発生を最小限に抑えることを目的とする。
【０１３３】
図１Ｂ〜図１Ｈは、いつでも可能な限り、ＡＢＵ１４１の内部のＩＦＭバッファ１２４から非ゼロ値の（ｎｏｎ−ｚｅｒｏ−ｖａｌｕｅｄ）活性化をフェッチする。
正しいドット積を獲得するために、関連付けられたウェイトを乗算器に多重化することにより、スパース活性化（ｓｐａｒｓｅ  ａｃｔｉｖａｔｉｏｎｓ）をサポートする計算を示す。
ＩＦＭバッファ１２４は、キャッシュ１３９からＩＦＭをフェッチし、活性化ステージング（ａｃｔｉｖａｔｉｏｎ  ｓｔａｇｉｎｇ）ＦＩＦＯ１６５でフェッチされたＩＦＭ値をステージングする（図１Ｌ及び図１ＭＡを参照）。
その後、複数の活性化マルチプレクサ１６３は、ＩＦＭステージングＦＩＦＯ１６５から非ゼロ活性化をフェッチするために動作し（可能であれば）、その結果、活性化は、順序を変えて活性化をフェッチするだけでなく、隣接したレーンから上又は下に「シフト（ｓｈｉｆｔ）」され得る。
【０１３４】
図１ＭＡと図１ＭＢでは（以下で説明される）、「ルックアヘッド（ｌｏｏｋ−ａｈｅａｄ）」の距離（ｈ）は、同じチャネルに応じた検索（ｓｅａｒｃｈ）の距離であり、「ルックアサイド（ｌｏｏｋ−ａｓｉｄｅ）」の距離（ｄ）は、側面への検索距離であり、そしてＦＩＦＯのデプス（Ｆ）は、活性化ＦＩＦＯ１６５のデプスを示す。
用語の明確性のために、複数の活性化マルチプレクサ１６３は、ＩＦＭステージングＦＩＦＯ１６５からの入力としてＩＦＭチャンネルを受け入れ、ルックアヘッド及びルックアサイドを適用して活性化をフェッチし、そして結果である値を活性化「レーン」（チャンネルではない）に出力する。
このような用語は、テンソル内のデプス「チャンネル」の論理的インデックス対（ｖｓ．）物理的ハードウェアの「レーン」に沿って流れる活性化概念を区別することを助ける。
【０１３５】
ＩＦＭステージングＦＩＦＯ１６５の内部のレジスタ１６１は、選択的であってもよいし、説明の明確性のために示されるものであることに留意しなければならない。
ある場合では、活性化ステージングＦＩＦＯレジスタ１６１が除去され、ＩＦＭマルチプレクサ１６３が多重ポートのキャッシュ出力に直接接続される。
そしてキャッシュ１３９からＩＦＭを、正しい順序でマルチプレクサ１６３に直接フェッチするために、ＩＦＭキャッシュのリードロジック（ｒｅａｄ  ｌｏｇｉｃ）を修正することにより、面積と消費電力の低減が可能である。
【０１３６】
図１ＭＡは、同じレーンの値と他のレーンの値を含む、活性化ＦＩＦＯ１６５に格納された、いくつかの可能な値のいずれか１つから、タイルの複数のレーン（例えば、タイルで総１６個のレーン）のいずれか１つにおいて乗算器１２６にフィードされ、そして（タイプ変換器１３５を介して）ＭＲアレイ１２２にブロードキャストされる活性化ステージングＦＩＦＯレジスタ１６１から活性化を選択するのに使用されるマルチプレクサ１６３の構成を示す。
より一般的な場合には、各セルは、２×ｄのマルチプレクサに行くことができ、そして末端（ｅｎｄ）にあるため、ｈ×（ｄ＋１）のソース（ｓｏｕｒｃｅ）を有する第１のレーン及び第１６のレーンを除いては、各デスティネーションは、ソースの同一の数（２×ｈ×ｄ）を有し得る。
【０１３７】
図１Ｎで示したそれぞれのＭＲ列のＡＲＵ（Ａｃｃｕｍｕｌａｔｅ  ａｎｄ  Ｒｅｔｕｒｎ  Ｕｎｉｔ）１６７に常駐する出力キャッシュのサイズとしては、出力キャッシュサイズ（Ｃ）をさらに定義する。
そして入力帯域幅（Ｉ）は、ＩＦＭストリーミング帯域幅（クロックサイクル当たり１６バイト長さのＩＦＭベクトルの数）であり、出力帯域幅（Ｏ）はＯＦＭ伝達ファブリック帯域幅（クロックサイクル当たり８バイト長さのＯＦＭベクトル結果の数）である。
なお、生のスパーシティ（ｒａｗ  ｓｐａｒｓｉｔｙ）（ｓｒ％）は、活性化テンソルでゼロ要素をカウントすることに基づいて、観察されたスパーシティである（活性化テンソルでの総活性化の数に比例して）。
実際のスパーシティ（ａｃｔｕａｌ  ｓｐａｒｓｉｔｙ）（ｓａ％）は、コンボリューションストライド（ｃｏｎｖｏｌｕｔｉｏｎ  ｓｔｒｉｄｅ）を考慮し（例えば、コンボリューションストライディング（ｓｔｒｉｄｉｎｇ）は、特定のゼロ値の活性化を使用しないか、又は特定のゼロ値の活性化を複数回含むことがある）、コンボリューションパディング（ｃｏｎｖｏｌｕｔｉｏｎ  ｐａｄｄｉｎｇ）を考慮する、活性化テンソルに対する２次元コンボリューション（ｃｏｎｖ２ｄ）のプロセス中に適用されたゼロ要素の実際の数である（活性化テンソルでの総活性化の数に比例して）。
そして乗算器の利用率（ＵＭ）は、乗算器が有効な乗算の（非ゼロ活性化を乗じる）を実行している間のサイクルのパーセンテージとして定義され得る。
例えば、１×１のコンボリューションについて、活性化テンソルがｓｒ％の生のスパーシティを有すれば、「ナイーブ（ｎａｉｖｅ、単純）」アプローチ（ゼロスキップがない「密度が高い（ｄｅｎｓｅ）」の計算モード）を使用する場合の乗算器の利用率は（１−ｓｒ％）であり、そしてノン（ｎｏｎ）１×１コンボリューションに対し、ナイーブ（密度が高い）計算を使用すると、乗算器の利用率は（１−ｓａ％）である。
【０１３８】
図１ＭＢは、
（ｉ）図１ＭＡで示された第１の構成で図１ＭＡの回路の４つの行の拡大図、
（ｉｉ）第２の構成で図１ＭＡの回路の４つの行の拡大図、及び
（ｉｉｉ）第３の構成で図１ＭＡの回路の４つの行の拡大図を示す。
第１の構成では、マルチプレクサの入力は上及び下の行からからくるが、同じ行からは来ない。
第１の構成は、より少ないワイヤ（ｗｉｒｅ）を有し、検索を他のチャンネル（つまり、より少ない行）に分散させるため、これは１つのチャネルが連続的なゼロを有する傾向がある場合に有利であり得る。
なお、２倍のスピードアップを目標とすれば、２つの位置は十分であり、チャネル（１及び１６）は、構成（ｈ＝２、ｄ＝１）で、同じ数の候補を有する。
第２の構成は、「フルマルチプレックススキーム（ｆｕｌｌ  ｍｕｌｔｉｐｌｅｘ  ｓｃｈｅｍｅ）」と呼ばれることがある。
このような構成では、マルチプレクサの入力は、上及び下のチャンネルから来るし、次のデプスの同じチャネルから来る。
第３の構成では、マルチプレクサの入力は、同じチャネルからのみ来る（つまり、ルックアサイド（ｌｏｏｋ−ａｓｉｄｅ）ｄ＝０）。
第３の構成は、低い複雑度を有し（つまり、マルチプレクサ及びワイヤの半分より少なく要求される）、そしてやや減少した乗算器の利用率の犠牲を払って、単純なウェイトスキップ（スキップ）のサポートを許容する。
【０１３９】
図１Ｎは、８つのＭＲ列１３３及び１６個の行からなる乗算器ユニット１２６のグリッド（ｇｒｉｄ）を含むＭＲアレイ１２２を有するタイル１０２の最上位レベルを示す図である。
ＭＵとラベルされた、それぞれの乗算器ユニット１２６の要素は、ＭＲアレイ１２２内で乗算器ユニットの行及び列の座標に対応する添字（ＭＵｒｏｗ、ｃｏｌ）を含む。
ウェイト圧縮解除ユニット（ｗｅｉｇｈｔ  ｄｅｃｏｍｐｒｅｓｓｉｏｎ  ｕｎｉｔ）１３８は、タイルに対しローカル（ｌｏｃａｌ）に位置したＳＲＡＭバンクセット１０９から圧縮されたウェイトを受信するために使用され、ウェイトレジスタ１３４にウェイトを記録するプロセス中にウェイトを圧縮解除する。
ウェイトはウェイトのスパーシティを利用するために圧縮されることがあり、これらを格納するために必要とされるメモリ及び乗算器ユニット１２６にこれらを伝送するのに必要なバス帯域幅を減少させる。
代替的に、ウェイトは圧縮されず、ＳＲＡＭに格納されてもよい。
ＩＦＭ伝達ファブリック１０４のボトルネックを減少させるために、ＩＦＭキャッシュ１３９は、データをキャッシュ（ｃａｃｈｅ）するために使用され得る。
そして例えば、図１Ｄ〜図１Ｈのコンテキスト（ｃｏｎｔｅｘｔ）で説明したように、ゼロ値の活性化スキップ（又は「活性化スキップ（ａｃｔｉｖａｔｉｏｎ  ｓｋｉｐｐｉｎｇ）」）を実装するために、活性化ブロードキャストユニット（ＡＢＵ：ａｃｔｉｖａｔｉｏｎ  ｂｒｏａｄｃａｓｔ  ｕｎｉｔ）１４１が使用され得る。
【０１４０】
図１Ｏは、ニューラルプロセッサ制御のヒエラルキー（ｈｉｅｒａｒｃｈｙ）を示す。
ニューラルプロセッサは、図１Ａに示した多様な要素を制御できる状態マシン（ｓｔａｔｅ  ｍａｃｈｉｎｅ）、「制御有限状態マシン（ｃｏｎｔｒｏｌ  ｆｉｎｉｔｅ  ｓｔａｔｅ  ｍａｃｈｉｎｅ）」（制御ＦＳＭ）、又は「制御ロジック（ｃｏｎｔｒｏｌ  ｌｏｇｉｃ）  」を含み得る。
制御ヒエラルキーは、「グローバル（ｇｌｏｂａｌ）」及び「ローカル（ｌｏｃａｌ）」を有する２つのレベルを含み得る。
演算では、グローバル制御（ｇｌｏｂａｌ  ｃｏｎｔｒｏｌ：ＧＣ）ＦＳＭ１４０は、ウェイトロード段階（ｗｅｉｇｈｔ  ｌｏａｄ  ｐｈａｓｅ）を開始すること、及び計算段階（ｃｏｍｐｕｔａｔｉｏｎ  ｐｈａｓｅ）を開始・制御することを含むローカル制御ステートマシン（ｌｏｃａｌ  ｃｏｎｔｒｏｌ  ｓｔａｔｅ  ｍａｃｈｉｎｅ）（１４２、１４４）の演算を調整（ｏｒｃｈｅｓｔｒａｔｅ）する。
タイル１０２は、ゼロ値の活性化スキップをサポートするため、タイル１０２の出力レートは、それぞれのタイル１０２により受信されるＩＦＭスライスの実際のスパーシティに依存して多少変化することができる。
従って、タイル１０２での計算は、いくつかのクロックの前又は後で実行され得る。
したがって、グローバル制御ロジック１４０は、ローカルタイルの制御ロジック１４４の動作を調整し、複数のタイル１０２からの出力を再び同期化し、減少ファブリック１１１を使用して減少を完了し、そしてＯＦＭ伝達ファブリック１０６を介して最終のＯＦＭ結果をＳＲＡＭバンクセット１０９に伝送する。
複数のタイルの出力の同期化は、例えば、ＡＲＵ内部で小さな出力ＦＩＦＯ１９８（又は、１７９）を使用し、そしてタイルの出力ＦＩＦＯ１９８がフル（ｆｕｌｌ）になる極端な場合には、出力ＦＩＦＯがフルのタイルをスロットリング（ｔｈｒｏｔｔｌｉｎｇ）（又は中止（ｓｔａｌｌｉｎｇ））して、他のタイルが追いつくことができるようにすることで達成される。
【０１４１】
複数のＳＲＡＭ制御（ＳＣ）ＦＳＭの１４２のそれぞれは、ＳＲＡＭバンクセット１０９内のそれぞれのＳＲＡＭバンクに対するＳＲＡＭアドレス及びリード／ライト（ｒｅａｄ／ｗｒｉｔｅ）信号を生成することができる。
複数のタイル制御（ｔｉｌｅ  ｃｏｎｔｒｏｌ：ＴＣ）ＦＳＭの１４４のそれぞれは、活性化をスキップ（ｓｋｉｐ）することができる（例えば、それらがゼロの値を有するとき）。
演算を準備するためには、ホストＣＰＵは、それぞれのＩＦＭ及びＯＦＭのテンソルの開始アドレス、並びにサイズ（高さ、幅、深さ、又はバッチサイズ（ｂａｔｃｈ  ｓｉｚｅ））をＳＲＡＭ制御ＦＳＭ１４２にロードし、そして演算タイプ（完全接続された（ＦＣ：ｆｕｌｌｙ  ｃｏｎｎｅｃｔｅｄ）又はコンボリューション）、ＩＦＭ、ＯＦＭ、及びウェイトデータタイプをグローバル制御ＦＳＭ１４０にロードする。
ホストＣＰＵは、ＩＦＭ及びＯＦＭのウェイトサイクリングの設定、ＩＦＭトラバーサル（ｔｒａｖｅｒｓａｌ）の順序、ＩＦＭ通過回数（後で詳細に説明される）、他の計算マッピングの設定、活性化関数、並びにプーリングの選択（もしあれば）をロードし、部分結果の生成を活性化又は非活性化にし、ウェイトテンソルサイズ（高さ、幅、又は入力及び出力のデプスチャンネルの数）をロードする。
ホストＣＰＵは、ジグザグＺの高さをロードし（以下で、より詳細に説明する）、そしてコンボリューションパディング及びコンボリューションストライドに対するオプションをロードする。
それぞれのＳＲＡＭバンクセット１０９内のＩＦＭ及びＯＦＭのテンソルのアドレスを含む演算パラメータにより要求される接続性を構成するために、ホストＣＰＵは、ＩＦＭ伝達ファブリック、ＯＦＭ伝達ファブリック、及び減少ファブリック（ＲＦ）に関連付けられたレジスタにさらにライト（ｗｒｉｔｅ）する。
演算を開始するためには、ホストＣＰＵは、グローバル制御ＦＳＭ１４０のレジスタにライトする。
その後、グローバル制御ＦＳＭ１４０は、開始するためにＳＲＡＭ制御ＦＳＭ１４２及びタイル制御ＦＳＭ１４４に信号を送る。
【０１４２】
いくつかの実施形態では、グローバル制御ＦＳＭ１４０は、コンボリューションウィンドウ内でスキャンを制御し、コンボリューションウィンドウを変換し、そしてＩＦＭテンソルをトラバース（ｔｒａｖｅｒｓｅ）して（横切りながら）ＩＦＭスライスのストリームを生成する。
グローバル制御ＦＳＭ１４０は、平面ピクセル（ｘ、ｙ）の座標、デプスチャンネルインデックス（ｄ）、ＩＦＭスライス、及びリード信号をＳＲＡＭ制御ＦＳＭ１４２に伝送する。
それぞれのＳＲＡＭ制御ＦＳＭ１４２は、開始アドレスを追加し、適切なＩＦＭデータをフェッチし、そしてデータをＩＦＭ伝達ファブリック１０４に出力する。
一般的に、ＩＦＭ（及びＯＦＭ）テンソルのサイズが大きすぎて、単一のＳＲＡＭバンクセット１０９に適合しないため、ＩＦＭ（及びＯＦＭ）テンソルが部分で小さく分けられて複数のＳＲＡＭバンクセット１０９に格納されるようにする。
計算中に、正しいＳＲＡＭバンクセット１０９からＩＦＭをフェッチしてＯＦＭをライトするためにＩＦＭ及びＯＦＭの伝達ファブリックのオン・ザ・フライの再構成にも影響をまた与えながら、グローバル制御ＦＳＭ１４０は、トラバースされる（特定の順序でフェッチされたり、格納されたりする）ＩＦＭ及び（該当する）ＯＦＭのテンソルを調節する。
【０１４３】
すべてのタイルキャッシュ１３９は、実質的に同時に該当するデータを受信することができる。
グローバル制御ＦＳＭ１４０は、
（ｉ）入ってくるデータを格納するＩＦＭキャッシュ１３９のレジスタファイルに対するアドレスと、
（ｉｉ）ＩＦＭ伝達ファブリック１０４からキャッシュ１３９にデータをライトするためのライトイネーブル（ｗｒｉｔｅ  ｅｎａｂｌｅ）信号と、を用いて、すべてのタイル制御ＦＳＭ１４４を計算して提供する。
ＩＦＭスライスがＩＦＭ伝達ファブリック１０４を介してＳＲＡＭバンクセット１０９から来る場合には、ライトイネーブル信号は活性化され、ＩＦＭスライスがすでにキャッシュ（ｃａｃｈｅ）された場合には、ライトイネーブル信号は非活性化される。
グローバル制御ＦＳＭ１４０が特定の順序でＩＦＭレイヤー（テンソル）をトラバース（ｔｒａｖｅｒｓｅ）するにつれ、グローバル制御ＦＳＭ１４０は、また計算のために必要なＩＦＭスライスがキャッシュされたかを追跡し、ＩＦＭキャッシュ１３９にすでに存在しないデータをリードするときに、ＳＲＡＭ制御ＦＳＭ１４２に信号を送る。
データがタイルキャッシュ１３９に既にキャッシュされた場合は、グローバル制御ＦＳＭ１４０は、ＳＲＡＭ制御ＦＳＭ１４２がＳＲＡＭリードをスキップするようにリード信号を非活性化に維持する。
ＩＦＭキャッシュの管理を単純化するためには、ＩＦＭ伝達ファブリックからの各ＩＦＭスライスは、すべての関連付けられたデスティネーショタイル（後で説明し、マッピングにより規定される）とデスティネーショタイルの数に関係なく、ＩＦＭキャッシュに１３９内の同じアドレスにおいてそれら（すべての関連付けられたデスティネーショタイル）のそれぞれのＩＦＭキャッシュにライトされることに留意しなければならない。
しかし、不均一な活性化のスパーシティにより、タイルの計算は、多少異なる速度（レート）で実行されるため、各タイルの制御ロジックは、他のタイルとは独立してＩＦＭキャッシュ１３９リーディング（ｒｅａｄｉｎｇ）をローカルに管理する。
【０１４４】
いくつかの実施形態では、ＯＦＭ結果をライトするプロセスは類似している。
しかし、活性化スキップのために、計算の遅延は変化し得る。
各タイル制御ＦＳＭ１４４は、そのタイル内のすべての列が計算を完了した時点を指す情報を含む。
各タイルのタイル制御ＦＳＭ１４４は、「ｏｆｍ＿ｒｅａｄｙ」の信号をグローバル制御ＦＳＭ１４０に伝送し、このグローバル制御ＦＳＭ１４０は、ＳＲＡＭ制御ＦＳＭ１４２をしてＯＦＭ伝達ファブリック１０６からのＯＦＭスライスをＯＦＭテンソルに適切な（ｘ、ｙ、ｄ）インデックスでＳＲＡＭバンクにライトするように指示する。
ＯＦＭテンソルトラバーサルのうち、グローバル制御ＦＳＭ１４０は、ＩＦＭテンソルトラバーサルのうち、ＩＦＭ（ｘ、ｙ、ｄ）スライス座標の生成と類似した方法でＯＦＭ（ｘ、ｙ、ｄ）のＯＦＭスライス座標を生成する。
計算が完了すると、グローバル制御ＦＳＭ１４０は、ホストＣＰＵに割り込みを伝送する。
【０１４５】
上述したように、活性化スキップにより、例えば、タイルはクロックあたり最大２つの出力結果を生成することができる。
したがって、乗算器の利用率の減少を避けるためにＩＦＭ伝達ファブリック１０４は、クロック当たり最大２つのＩＦＭスライスを供給できなければならない。
したがって、ローカルタイル制御ＦＳＭ１０２は、キャッシュ内のプロセッシングされる残りのデータの量に対しグローバル制御ＦＳＭ１４０に知らせることで、グローバル制御ＦＳＭ１４０は、ＩＦＭキャッシュアンダーフロー（ＩＦＭ  ｃａｃｈｅｓ  ｕｎｄｅｒｆｌｏｗ）を避けるためにＳＲＡＭ制御ロジック１４０がＩＦＭデータのフェッチを再開（ｒｅｓｕｍｅ）するように指示することができる。
タイルＩＦＭキャッシュの中のいずれかがフル（ｆｕｌｌ）になると、グローバル制御ＦＳＭ１４０は、ＳＲＡＭ制御ＦＳＭ１４２に指示して、ＳＲＡＭからＩＦＭスライスをリードすることと、タイルキャッシュにＩＦＭスライスをライトすることと、を含むＩＦＭテンソルトラバーサルを一時停止（ｐａｕｓｅ）させる。
【０１４６】
図１Ｐを参照すると、いくつかの実施形態では、ＩＦＭキャッシュ１３９は、１６個のレーン１７０を含む。
各レーンは、デュアル入力ポート及びデュアル出力ポートを有するレジスタファイル１６９を含む。
活性化スキップ（そしてＭＵ列当たり２つの加算器ツリーを含む）により、システムタイル１０２がクロック当たり最大２つの活性化をプロセッシングすることができるため（ゼロ活性化が十分であるとき）デュアルポートが使用されてもよい。
活性化をより迅速にプロセッシングするために、例えば、クロック当たり３つのＩＦＭスライス、３つの入力ポート、３つの出力ポート、３つのＩＦＭ伝達ファブリック帯域幅、３つのＯＦＭ伝達ファブリック帯域幅、及びＭＵ列当たり３つの加算器ツリーが使用され得る。
【０１４７】
活性化は、最大２倍の速度でＩＦＭ伝達ファブリックを介してＳＲＡＭから入って来る。
タイル制御ＦＳＭ１４４は、それぞれのキャッシュレーン１４６でプロセッシングされる残りのＩＦＭデータの量を追跡する。
キャッシュレーンの中のいずれかがフル（ｆｕｌｌ）になろうとすると、タイル制御ＦＳＭ１４４は、少なくとも１つのレーンキャッシュがすぐにフル（ｆｕｌｌ）になることをグローバル制御ＦＳＭ１４０に知らせる。
そしてキャッシュ空間が確保されるまで、タイルキャッシュレーンのオーバーフロー（ｏｖｅｒｆｌｏｗ）を防止するために、グローバル制御ＦＳＭ１４０は、ＳＲＡＭ制御ＦＳＭ１４２により制御されるＩＦＭリード（ｒｅａｄ）をスロットル（ｔｈｒｏｔｔｌｅ）（又は中止（ｓｔａｌｌ））することができる。
【０１４８】
コンボリューションウィンドウスキャンが完了し（及びウィンドウは、次の位置に移される）、そしてＩＦＭサイクリングが完了すると、グローバル制御ＦＳＭ１４０は、また、タイル制御ＦＳＭ１４４に知らせる。
これにより、タイルは、列アキュムレータを正しくリセットし、ある位置のコンボリューションの実行と、次の位置でのコンボリューションの実行とを混合しない。
ＩＦＭサイクリングの概念は、後でより詳細に定義・説明する。
【０１４９】
タイル制御ＦＳＭ１４４は、それぞれのレジスタファイルの出力ポートに対するリードアドレス（ｒｅａｄ  ａｄｄｒｅｓｓ）及びリードイネーブル（ｒｅａｄ  ｅｎａｂｌｅ）を含む各キャッシュレーンレジスタファイル１６９からＩＦＭデータをリードために必要な信号を生成する。
各クロックサイクルでは、タイルがプロセッシングを完了し、他のタイルがそれらのプロセッシングの完了を待っていない限り、タイル制御ＦＳＭ１４４は、１つ又は２つのデータ値（対応する１つのポート又は２つのキャッシュのポートから）をリードする（これにより、結果は、減少ファブリックにより減少するように利用可能になる）。
単一のクロック当たり１つ又は２つのバイトが読み取られるか否かは、活性化スパーシティに依存する。
活性化ブロードキャストユニット１４１内のＩＦＭバッファ１２４は、活性化がスパースであるか否かをチェックし、タイル制御ＦＳＭ１４４に知らせる。
この知らせにより、タイル制御ＦＳＭ１４４は、「ＡＢＵ  ＩＦＭステージングＦＩＦＯ」１６５が１つのスロットを空ける場合に、１つのバイトをロードし、そして「ＡＢＵ  ＩＦＭステージングＦＩＦＯ」１６５が２つのスロットを空ける場合には、２バイトをロードする。
【０１５０】
図１Ｑの表は、コンボリューションウィンドウが、ある位置（ｘ、ｙ）から、次の位置まで平面方向（ｐｌａｎａｒ−ｗｉｓｅ）にスライディングすることにより、ＳＲＡＭ１０９から重複されるリード（ｒｅａｄ）を避けるために、１×１、２×２、３×３、及び４×４のコンボリューションウィンドウサイズでコンボリューション演算を実行する間、すべてのＩＦＭスライスを保持するのに十分なキャッシュサイズを示す。
ＳＲＡＭからのシングル読み取り（リード）は、一般的に、ローカルレジスタファイル１６９からのシングル読み出しに比べてかなり多くの電力を消費する。
このことから「ジグザグ（ｚｉｇ−ｚａｇ）」のスキャンシーケンスは、ＩＦＭのキャッシュの使用を最大化してＳＲＡＭからのリードと消費電力を最小限に抑えるように働くことができる。
そのため、以下でより詳細に議論するように、表のデータは、乗算器ユニットのレジスタファイル１３４が１８個のウェイトレジスタが含み、そしてそのコンボリューションウィンドウが入力テンソルを「ジグザグ」のシーケンスでスキャンすると仮定する。
【０１５１】
例えば、ジグザグのスキャンパラメータＺ（以下でより詳細に説明される）を「２」に設定し、そしてＭＵが１８個のウェイトを保有すれば（２つの３×３の８ビットコンボリューションカーネル又は１つの３×３の１６ビットコンボリューションカーネルを保持するのに十分であること）、レジスタファイル１６９は、２０バイトのサイズを含むべきである。
【０１５２】
ニューラルネットワークは、少なくとも１つの乗算引数（活性化及び／又はウェイト）がゼロである乗算器を５０％と９０％との間で有し得る。
たとえば、これはウェイトプルーニング（ｗｅｉｇｈｔ  ｐｒｕｎｉｎｇ）を適用した後、Ｉｎｃｅｐｔｉｏｎ（インセプション）ｖ３ニューラルネットワークの場合であり得る。
ＭＲ１０２がマルティプライ・バイ・ゼロ（ｍｕｌｔｉｐｌｙ−ｂｙ−ｚｅｒｏ）の発生を効率的にスキップすることができれば、ＭＲ１０２は、例えば、スキップのない時間の（１００％−８０％＝２０％）内にデータをプロセッシングすることができ、これは５倍以上速い。
これに対応して、前述したように、いくつかの実施形態では、ＭＲ実装は、キャッシュが２つ以上の入力を使用して十分に速くデータ（乗算される、又はスキップされる）を伝送するように構成されてもよい。
本明細書の一部のブロック図において、説明の簡潔性及び明確性のためにダブル入力帯域幅（そして、対応する、ただ２つの深さである活性化バッファ１２４）のみ示す。
しかし、ＩＦＭ活性化バッファ１２４のデプスは、２よりも大きい可能性があり、対応する速度の増加（ゼロにより乗算をスキップしない構成に比べる）は、十分なスパースデータについて、２倍よりも大きい可能性があることが理解されるだろう。
【０１５３】
図１Ｂ〜図１Ｈのところの記載で上述したように、そして次のパラグラフにおいてより詳細に説明するように、ＩＦＭキャッシュとＡＢＵの適切な演算により、データスパーシティはプロセッシングのスループット（ｔｈｒｏｕｇｈｐｕｔ）を大幅に向上させるために使用され得る。
図１Ｒは、入力レイヤーコンボリューションを開始するために、ＳＲＡＭに格納された、ＩＦＭテンソル内の開始位置にポジションされた３×３のコンボリューションウィンドウを示す。
レイヤーコンボリューション演算を開始するために、９つのＩＦＭスライスの（ａ０［０…１５］〜ｉ０［０…１５］）がＳＲＡＭからリードされ、ＩＦＭファブリックを介してデスティネーショタイルに伝達され、そしてそれぞれのデスティネーショタイルのＩＦＭキャッシュ１３９にライトされる。
図１Ｓは、いくつかの要素がゼロである、このようなデータの他の例を示す。
【０１５４】
図１Ｔは、レイヤーコンボリューション演算が開始する直前に、（ＳＲＡＭから）到着順にソートされた値を用いて、データがＩＦＭキャッシュ１３９に論理的に格納される方法を示し、そして値の実際の格納アドレスによりそれらの配列を必ずしも示すものではない。
本例では、３×３のコンボリューションが行われ、たとえキャッシュは、コンボリューションウィンドウの動きを収容するため、より格納することができるにもかかわらず、明確性のために図では９つ（３×３＝９）の８ビット活性化値を示す。
同様に、図１Ｕは、ゼロ値を有するいくつかの活性化を明示的に含む図１Ｔからの本例示を示す。
【０１５５】
図１Ｖは、いくつかの実施形態による活性化ブロードキャストユニット１４１の単一レーン１７１を示す。
それぞれのＡＢＵレーン１７１は、レジスタファイルを使用して実装され得るＩＦＭレーンステージングＦＩＦＯ１７３、レーンマルチプレクサ１６３、レーン制御ロジックモジュール１４６、及び活性化レーン数字タイプの変換回路１４８を含む。
それぞれのＡＢＵレーン１７１は、（タイル制御ＦＳＭ１４４と、他のＡＢＵレーンとともに）該当するレーンで活性化スキップ、すなわち、ゼロ値を有する活性化要素のスキップを制御する。
【０１５６】
乗算器回路のｕｉｎｔ８、ｉｎｔ８、ｕｉｎｔ１６、ｉｎｔ１６、ｕｉｎｔ２４、ｉｎｔ２４、ｕｉｎｔ３２、ｉｎｔ３２などを含む多様なビット幅の符号付き及び符号なしのデータプロセッシングを単純化するために、それ（それぞれのＡＢＵレーン１７１）は、符号付きの２の補数の数字エンコーディングからサイン・アンド・８ビット・マグニチュードのフォーマットで活性化をさらに変換する。
また、信号の活性化レーン１３７のセットの一部として、それぞれのＡＢＵレーン１７１は、ＭＲ列１３３内の乗算器ユニット１２６の関連付けられた行に活性化をブロードキャストする。
【０１５７】
ＩＦＭレーンステージングのＦＩＦＯ１７３は、２つの入力ポート及び２つの出力ポートを有し、ツー・バリューディープ（ｔｗｏ−ｖａｌｕｅ  ｄｅｅｐ、２値の深さ（デプス））であり得る。
２つの入力ポートは、クロックサイクル当たり最大２つの活性化（バイト）の速度で、ＩＦＭキャッシュから活性化をフェッチするのに使用される。
このように、ゼロ活性化が十分であれば、ＭＵの列内で、２つの加算器ツリー、２つの入力ポート、及び２つの出力ポートを有するレーンキャッシュ、並びに２のデプスを有するステージングバッファ１７３を含む結果として、クロックサイクル当たり最大２つの活性化をプロセッシングすることができる。
いくつかの実施形態では、クロック当たり、より多くの数の活性化、例えば、クロック当たり３つの活性化を正当化（ｊｕｓｔｉｆｙ）するのに十分にスパース（ｓｐａｒｓｅ）であると予想される場合には、ＭＵ列当たり３つの加算器ツリー、３つのレーンのキャッシュ入力／出力ポート、３つのステージングＦＩＦＯ入力ポート、及び３つのステージングＦＩＦＯデプス（ここで「ステージングＦＩＦＯ」は、明細書内容から、ＩＦＭレーンステージングＦＩＦＯ１７３を指す）を有する回路を使用して活性化がプロセッシングされ得る。
【０１５８】
活性化がゼロか否か、そして活性化がゼロであれば、どのようなレーンから、ステージングＦＩＦＯでどのくらい深いか（深さの中へのオフセット）を含む、ゼロを置き換えるために、どのような非ゼロの活性化が多重化されるかを乗算器ユニット１２６に知らせるために、レーン制御ロジック１４６は、信号の活性化レーン１３７のセットの一部として、乗算器ユニット１２６の関連付けられた行に制御信号のセットをブロードキャストすることができ、その結果、それぞれの乗算器は、乗算に使用する適切なウェイト及び加算器ツリーを選択することができる。
同様に、正しい隣接のＩＦＭチャンネルに位置され、正しいステージングＦＩＦＯ１７３のデプスオフセットから活性化レーン１３７に活性化を多重化するために、レーン制御ロジック１４６は、また、レーンマルチプレクサ１６３を制御する。
【０１５９】
図１Ｖは、２つのバッファ（ｂｕｆｆｅｒ）された活性化の中のいずれかを、隣接したレーンの上に提供し、２つのバッファされた活性化の中のいずれかを、隣接したレーンの下に提供し、そして２つのバッファされた活性化をレーン活性化マルチプレクサ１６３に提供するのに十分な、４つの出力の論理的接続を含むＩＦＭレーンステージングＦＩＦＯ１７３を示す。
たとえば、図１Ｖは、４つの出力の論理的接続を含むステージングＦＩＦＯ１７３を示しているが、図に示した実施形態では、ＦＩＦＯ１７３は、単に２値の深さ（ｔｗｏ−ｖａｌｕｅ−ｄｅｅｐ）であり、したがって、同時出力をするために利用可能な２つの値だけを保持するため、ＦＩＦＯ１７３は、２つの物理的出力ポートだけを有する。
【０１６０】
図１ＷＡは、ＩＦＭの最初の２つのベクトルがリードされた後（図１Ｃでも示しているように）、４つの個別のＩＦＭレーンステージングＦＩＦＯ１７３（説明の明確性のために、１６ではない）を有する、ＩＦＭステージングＦＩＦＯ１６５のコンテンツを示す。
この状態では、ＦＩＦＯは、どんな活性化値がゼロであるか、どんな活性化値がゼロではないかをチェックすることができる。
いくつかの実施形態では、各ＦＩＦＯレジスタはゼロ検出器（例えば、８入力ＮＯＲロジック）を含む。
各レーンステージングＦＩＦＯ１７３は、該当するレーンでどのような活性化が使い果たされたか（例えば、ボロー（ｂｏｒｒｏｗ）されて、図１Ｄに示すように、「ホール（ｈｏｌｅ）」を生成するようになる）を追跡する、各レーン制御ロジック１４６にどのような活性化がゼロであるかを報告する。
各レーン制御ロジック１４６は、どんな活性化がゼロであるかを含む、レーンステージングＦＩＦＯの占有に対する情報をタイル制御ＦＳＭ１４４に伝達する。
活性化（ａ０、ａ１、ａ２、ａ３）は、数字のフォーマット変換（活性化がｉｎｔ８又はｉｎｔ１６のような符号付き活性化の場合）を経て、８ビットの値（活性化ビット幅が８を超える場合には、例えば、ｕｉｎｔ１６、ｉｎｔ１６、ｕｉｎｔ２４、ｉｎｔ２４、ｕｉｎｔ３２、ｉｎｔ３２、など）に細分化され、そして乗算器ユニット１２６のそれぞれの行にブロードキャストされる。
【０１６１】
次のクロックサイクルでは、ＩＦＭステージングＦＩＦＯ１６５は、図１ＷＢ（及び図１Ｄ）で示した値を含み得る。
この時点では、活性化（ａ０…ａ３）がプロセッシングされており、ｂ０、ｂ２、及びｂ３は、乗算器ユニット１２６のそれぞれの行にブロードキャストされている。
ｂ１が「０」なので、ｂ１のレーンは使用されない。
各レーン制御ロジック１４６は、このような情報（どんな活性化がゼロ又は「ホール（ｈｏｌｅ）」であるか）をタイル制御ＦＳＭ１４４に伝達する。
その後、タイル制御ＦＳＭ１４４は、
（ｉ）多重化して出力するデータ（図１ＷＢ及び図１Ｄでは、レーン０のｂ０、レーン１のｃ１、レーン２のｂ２、レーン３のｂ３等）、及び
（ｉｉ）すべてのレーン制御ロジック１４６からの入力を使用して、全体のＦＩＦＯ列がホール及び／又はゼロで構成されたかを検出し、したがってスキップできるものに関して決定する。
後者が発生すると、タイル制御ＦＳＭ１４４は、
（ｉ）２つの値（１つの代わりに）をフェッチするキャッシュ
（ｉｉ）これらの２つの値（１つの代わりに）を収容するＦＩＦＯを引き起こすことにより、全体のホール及び／又はゼロ（ｈｏｌｅ−ａｎｄ／ｏｒ−ｚｅｒｏ）のＦＩＦＯ列をスキップすることができる。
また、当該するレーン（全体の列と対照的に）に関連付けられたＩＦＭレーンステージングＦＩＦＯ１７３内の複数の値がゼロ及び／又はホールを含む場合には、レーン制御ロジックは、また、キャッシュが２つの値をフェッチするようにする。
【０１６２】
例えば、レーン１（ｃ１出力する）は、出力する６つの選択を有し得る。
つまり、ｃ０、ｃ１、ｃ２（ｃ２はゼロ）、ｂ０、ｂ１（ｂ１はまた、ゼロ）、及びｂ２である。
マルチプレクサ１６３は、これらの６つの選択肢の中のいずれかを出力する。
出力する選択は、タイル制御ＦＳＭ１４４により決定される。
これを達成するため、マルチプレクサ１６３は、１つのレーンの上の２つのＦＩＦＯ列は、１つのレーンの下の２つのＦＩＦＯ列、及びマルチプレクサ１６３と同じレーン内の２つのＦＩＦＯ列からデータを回収（ｒｅｔｒｉｅｖｅ）できるように構成される。
この能力は、例えば、図１ＭＡ及び図１ＭＢに示したものと類似した回路を使用して実装してもよい。
これらの図での説明で上述したように、上及び下のレーンからデータを回収（および多重化）する能力を「「１」のルックアサイド（ｌｏｏｋ−ａｓｉｄｅ  ｏｆ  １）」と呼ばれ、そして右から２番目のＦＩＦＯの列までのデータを回収（および多重化）する能力を「「２」のルックアヘッド（ｌｏｏｋ−ａｈｅａｄ  ｏｆ  ２）」と呼ばれる。
それぞれのＩＦＭステージングＦＩＦＯ１６５の列とレーンの組み合わせは、これと関連付けられた別のルックアヘッド及び／又はルックアサイド値を有し得るが、説明の明確性のためにＩＦＭステージングＦＩＦＯ１６５内のすべての列とレーンは、同じ関連のルックアサイド値及び同じルックアヘッド値を有すると仮定する。
また、ルックアヘッド及びルックアサイドの概念によりカバーされておらず、例えば、ステージングＦＩＦＯからの入力を同じ活性化レーンに伝達することと、レーン（０及び１５）は、２つの隣接したレーンの中のいずれかを有さないこと、とが補償される。
その補償のため、レーン（０及び１５）をより柔軟な方法で接続することを防止することを含み、それぞれのマルチプレクサ１６３がどのように多くの入力を有しているかと、その入力がどこに接続されているかと、に対する他の変形が採用され得る。
【０１６３】
ルックアサイド及び／又はルックアヘッドは、「２」よりも大きくしてもよい。
より大きい数は、より良い性能を引き出す−−ゼロ活性化をより最適にスキップすることにより、タイルの計算時間が減少される。
ルックアサイド及び／又はルックアヘッドの数がより大きくなるとき、各レーンは、非ゼロの活性化を回収する位置に関するより多くの選択肢を有するため、この利点は、達成され得る。
非ゼロ活性化のより多くの選択は、すべてのレーンにおいて非ゼロ活性化をより均等に分散させることである。
最大の活性化を有するレーンが計算を完了するまでタイルプロセッシングの完了を待たせることを潜在的に引き起こし、いくつかのレーンは多く、かつ他のレーンは少ないのとは対照的に、各レーンは、ほぼ同じ数の非ゼロ活性化を有する。
前述したように、非ゼロ活性化の拡散は、別の関連した開示で説明したように、活性化レーン及び関連ウェイトを擬似ランダムにシャッフリング（ｓｈｕｆｆｌｉｎｇ）することにより達成され得る。
【０１６４】
図１ＷＣでは、ルックアヘッドは「２」であり、ルックアサイドは「２」であり、それぞれのＦＩＦＯ列に対して、マルチプレクサ１６３は、１０個の入力を有する構成を示す。
このような実施形態では、ＦＩＦＯは、「２」の深さ（ｔｗｏ−ｄｅｅｐ）であり得るし、これにより、２つの出力ポートを有し得る。
【０１６５】
図１ＷＤでは、ルックアヘッドが「３」であり、ルックアサイドが「１」であり、マルチプレクサ１６３が９つの入力を有する構成を示す。
このような実施形態では、ＦＩＦＯは、「３」の深さであり得、３つの出力ポートを有し得る。
【０１６６】
図１ＷＥでは、ルックアヘッド及びルックアサイドの両方が「３」であり、マルチプレクサ１６３は１５個の入力を有する構成を示す。
このような実施形態では、ＦＩＦＯは、「３」の深さであり得、３つの出力ポートを有し得る。
【０１６７】
活性化ブロードキャストユニット１４１及びタイル制御ＦＳＭ１４４は、図１Ｅ〜図１Ｇに示した動作と同様に関連付けされ得る。
例えば、図１Ｅは、以前のクロックサイクルでｃ１をボロー（ｂｏｒｒｏｗ）した（最も右で２番目の列から多重化される）場合には、レーン制御ロジック１４６（ｃ１が元来あったレーンで）が追跡する「ホール（ｈｏｌｅ）」の生成を示す。
それぞれのレーン制御ロジック１４６は、タイル制御ＦＳＭ１４４に、ＩＦＭステージングＦＩＦＯ１６５内のどんなデータセルがゼロであるか、又は空であるか（ｅｍｐｔｙ）を知らせることで、タイル制御ＦＳＭ１４４は、活性化マルチプレクサ１６３を適切に制御することができる。
タイル制御ＦＳＭ１４４は、マルチプレクサの制御を決定して活性化を拡散させることで、スループットを増加させたり最適化したりする。
他のレーン（同じタイルで）は、主にゼロを有しながら、いくつかのレーンは、多くの非ゼロ活性化を有するように不均衡にするのとは対照的に、すべてのレーンが同じ数の非ゼロ活性化を有していれば、最適なスループットが達成される。
このような不均衡な場合には、主にゼロを有するレーンは、多くの非ゼロ活性化を有するレーンよりも早く（つまり、すべての非ゼロ活性化をより迅速に出力することができる）計算を完了することができ、これは、そのタイルの計算の終了を遅延させることができ、ゼロリッチ（ｚｅｒｏ−ｒｉｃｈ）レーンでの乗算器の利用率を減少させることができる。
【０１６８】
他の例示として、図１Ｇに示した状態では、レーン制御ロジック１４６は、また、タイル制御ＦＳＭ１４４からマルチプレクサ選択信号を受信して、
（ｉ）生成されたホール、及び
（ｉｉ）任意の活性化がどこから多重化されたかを追跡する。
その後、レーン制御ロジック１４６は、このような情報を乗算器ユニット１２６の関連付けられた行にブロードキャストする。
活性化が非順次的に（例えば、図１Ｇでは、「順序に（ｉｎ  ｏｒｄｅｒ）」は、活性化バッファからｇ０がｇ０にマークされた活性化レーンに出力されることを意味する）多重化されるとき、その行のそれぞれの乗算器ユニット１２６は、該当する非順次的（ｏｕｔ−ｏｆ−ｏｒｄｅｒ）活性化に、それの対応するウェイトを乗じることができる。
【０１６９】
例えば、活性化が、最も右から２番目のステージングＦＩＦＯ列から、１つのレーンの上から多重された場合には、このような活性化を乗算のための対応するウェイトは、図に示したように、（各列に対して）１つのレーンの上の乗算器ユニットに位置する。
【０１７０】
ルックアヘッドが「２」より大きく（例えば、「３」）、最も右から３番目の列から活性化が回収されると、回収される対応するウェイトは、「３−１＝２」アヘッドであり、もし順次的活性化がウェイト「ｗ［ｒｏｗ、ｃｏｌ、ｉ］」と乗じられると、乗算に適切なウェイトは、「ｗ［ｒｏｗ、ｃｏｌ、ｉ＋２］」であることを意味する。
【０１７１】
図１Ｈは、活性化が多重化されたとき（非順次に前進されたとき）、全体のＦＩＦＯ列（１６レーンのすべて）が空くようになる（ゼロ又はホールだけを含む）（スループットの観点から有利な）状況を図に示す。
タイル制御ＦＳＭ１４４は、このような条件を検出し、そしてＩＦＭキャッシュ１３９に指示して２つの値をＦＩＦＯにロードする。
これは２つのＦＩＦＯ列が同時に消費されるからである−−最も右にあるすべてのゼロ列はスキップ（削除）され、そして最も右から２番目の列は、計算のためにブロードキャストされて使い果たされる。
これはタイル内で計算遅延を１クロックサイクルだけ減少させる。
【０１７２】
図１Ｘは、アキュムレート・アンド・リターン（ａｃｃｕｍｕｌａｔｅ−ａｎｄ−ｒｅｔｕｒｎ）ユニット（ＡＲＵ）１６７を示す。ＡＲＵの役割は、ドット積の計算を完了し、活性化関数を適用して（適用可能な場合）を格納のためのＳＲＡＭに再びＯＦＭ伝達ファブリックを介して、伝送を準備する完了された出力特徴マップ（ＯＦＭ）を生成する。図１Ｎで示されるように、それぞれのＭＲ列１３３は、加算器ツリー（１２８Ａ及び１２８Ｂ）当たり１つずつ、２つのＡＲＵ１６７を含む。
【０１７３】
ＡＲＵ１６７は２つの入力を含み、１つは、ローカル加算ツリー（１２８Ａ又は１２８Ｂ）からの入力であり、１つは減少ファブリック１１１からの入力である。
それぞれのＡＲＵの中央には、加算器１８１及びアキュムレータレジスタ１３０Ａがあり、後述するように、これは累積（時間とともに）に基づいてドット積の計算を完了することができる。
ＯＦＭ計算を完了するには、完全に減少されたドット積は、ユニット１８７を使用して（選択的に）切断されることがあり（ラウンドを通して）、乗算器１８９を使用するファクター（ｆａｃｔｏｒ）１９１によりスケーリングされ、加算器１９３を用いてＯＦＭバイアス項（ＯＦＭ  ｂｉａｓ  ｔｅｒｍ）１９５と合算されることがあり、そして活性化関数１９７を通過することができる。
活性化関数モジュール１９７は、整流された線形ユニット（ｒｅｃｔｉｆｉｅｄ  ｌｉｎｅａｒ  ｕｎｉｔ：ＲｅＬＵ）、シグモイド（ｓｉｇｍｏｉｄ）、双曲線タンジェント（ｈｙｐｅｒｂｏｌｉｃ  ｔａｎｇｅｎｔ）などのような活性化関数をサポートすることができる。
ドット積の減少を完了できない場合（この理由は、後で詳しく説明する）、アキュムレータ１３０Ａ（又は１３０Ｂ）からの部分ドット積、又は単に「部分積」は、マルチプレクサ１９９と出力ＦＩＦＯ１９８を介してＯＦＭ伝達ファブリックに向かう途中で、スケーリング、バイアス、及び活性化関数をバイパスすることができる。
加算器１８１をバイパスするマルチプレクサ１８３は、例えば、累積を開始するためには、加算器ツリーの値をアキュムレータ１３０Ａに直接ローディングできるようにする。
【０１７４】
マルチプレクサ１７４は、
（ｉ）ＡＲＵ１６７が位置した、同じ（ローカル）タイル内の加算器ツリー、そして
（ｉｉ）ローカル（「イントラタイル（ｉｎｔｒａ−ｔｉｌｅ）」）加算器ツリー（１２８Ａ及び１２８Ｂ）を複数のタイルから（例えば、３２、６４、１２８、２５６の乗算器ユニットから）乗算器ユニットの積を減少させることができる、より大きな（「インタータイル（ｉｎｔｅｒ−ｔｉｌｅ）」）加算器ツリーに結合する構成可能な加算器ツリーを含む減少ファブリックの間の（適用可能な場合には、部分的パスとともにスケール、バイアス、及び活性化アプリケーション）「変換（ｒｅｔｕｒｎ）」のためにＡＲＵに対する入力ソースを選択する。
【０１７５】
タイル制御ＦＳＭ１４４は、それぞれのＭＲ列１３３でのどのようなレーンと加算器ツリーが、それぞれの部分ＩＦＭ減少を得るために使用されたかを追跡するため、タイルＡＲＵに１６７は、タイル制御ＦＳＭ１４４により制御される。
ＡＲＵ１６７は、２つの出力を含み、２つの出力は、ＦＩＦＯ１９８とオン・ザ・フライのプーリングロジック１９６を介してＯＦＭ伝達ファブリック１０６（図１Ａ）を接続する１つを含み、ＦＩＦＯ１７９を介して減少ファブリック１１１に接続される１つを含む。
また、タイル制御ＦＳＭ１４４は、出力ＦＩＦＯ（１９８、１７９）の状態を追跡する。
それぞれのタイル１０２は、わずかに異なる速度で計算を実行するため（ゼロ活性化スキップの予測不可能性により）、他のタイルより先に（高速）実行されるようになるタイルからの出力を遅延させることで、出力ＦＩＦＯ（１９８及び１７９）のそれぞれは、タイルの出力の同期化を復元する役割をする。
ＦＩＦＯ１７９によりタイル出力を同期化されるようにするのは、タイルの出力は減少ファブリック１１１により追加の減少を経ることができるからであり、これは追加の加算器ツリーステージのセットと見なされることがあり、したがって、（タイルから）それ（追加の加算器ツリーステージのセット）の入力が並列に同期化されて到着することを要求することができる。
同様に、ＯＦＭスライスのすべてのチャンネルを同時にＯＦＭ伝達ファブリックに出力するために、ＦＩＦＯ１７９により同期化されたタイルの出力になるようにすることが要求され得る。
多くの場合では、４つ以下のエントリの出力ＦＩＦＯ（１９８、１７９）のサイズは、それぞれ十分であり得る。
出力ＦＩＦＯ（１９８、又は１７９）が、１つ以上のタイル内でほぼオーバーフローされる場合には、タイル制御ＦＳＭ１４４は、出力ＦＩＦＯ（１９８、又は１７９）が空になるまで計算を中断することができる。
出力ＦＩＦＯ（１９８、又は１７９）は、２つの加算器ツリー（Ａ及びＢ）のパスからの結果を併合するために２つの入力ポートを含み得る。
【０１７６】
最後に、タイル制御ＦＳＭ１４４及びＳＲＡＭ制御１４２は、出力ＦＩＦＯ１９８からデータを読み取り、減少ファブリックプロセッシングを実行し、ＯＦＭ伝達ファブリックを介して結果を伝送し、そしてＳＲＡＭに格納するために共に動作する。
【０１７７】
以下で、「混合データタイプの」と呼ばれる、活性化のために１つのデータタイプとウェイトのために、他のデータタイプを任意に使用できることを含め、多様なビット幅の符号付き及び符号なしの入力及び出力データタイプをサポートするために、活性化数字タイプの変換器（Ａｃｔｉｖａｔｉｏｎ  Ｎｕｍｅｒｉｃ  Ｔｙｐｅ  Ｃｏｎｖｅｒｔｅｒ）１３５がアキュムレート・アンド・リターンユニット１６７とともに作動する方法を検討する。
【０１７８】
いくつかの実施形態では、次のデータタイプが使用される。
つまり、ＩＦＭ、ＯＦＭ、及びウェイトのためのｉｎｔ８、ｕｉｎｔ８、ｉｎｔ１６、ｕｉｎｔ１６、ｉｎｔ２４、ｕｉｎｔ２４、ｉｎｔ３２、及びｕｉｎｔ３２である。
以下で詳細に説明するように、ＩＦＭとウェイトのデータタイプは、自由に混合してもよい。
たとえば、ｕｉｎｔ８活性化及びｉｎｔ８ウェイト、又はｉｎｔ８活性化及びｉｎｔ８ウェイト、又はｉｎｔ１６活性化及びｉｎｔ８ウェイト、又はｉｎｔ１６活性化及びｉｎｔ１６ウェイトなどを使用してコンボリューション又は完全に接続された（ｆｕｌｌｙ−ｃｏｎｎｅｃｔｅｄ）レイヤーの計算を行うことができる。
スケーリング、ラウンディング、及び活性化関数の選択の組み合わせを適用することにより、ｕｉｎｔ８、ｉｎｔ８、ｕｉｎｔ１６、ｉｎｔ１６、ｕｉｎｔ２４、ｉｎｔ２４、ｕｉｎｔ３２、ｉｎｔ３２などを含め、ＯＦＭデータタイプは、自由に選択され得る。
【０１７９】
活性化は、次のように演算のために準備され得る。
活性化は、例えば、ユーザにより指定されたように、ｉｎｔ８、ｕｉｎｔ８、ｉｎｔ１６又はｕｉｎｔ１６で、ＳＲＡＭ内に格納される。
図１Ｌに示したように、これらのＩＦＭデータは、キャッシュ（つまり、ＩＦＭキャッシュ１３９）にフェッチされた後、活性化数値タイプの変換器１３５を含む活性化ブロードキャストユニット１４１を介して通過する。
第１の段階として、グーグルテンソルフロー（Ｇｏｏｇｌｅ  ＴｅｎｓｏｒＦｌｏｗ）で使用したように、活性化が「ゼロポイント（ｚｅｒｏ  ｐｏｉｎｔ）」のオフセットを使用して量子化されれば、タイプ変換器１３５は、「ゼロポイント」のオフセットを活性化に追加する。
その後、数タイプの変換器１３５は、適切な変換（ｔｒａｎｓｆｏｒｍ又はｔｒａｎｓｆｏｒｍａｔｉｏｎ）を適用することにより、活性化を準備し、これは８ビットの符号なし乗算器１２６を用いて実行される、例えば、符号付き又は符号なしの１６ビットウェイト及び／又は１６ビット活性化のような、８ビットよりも広いデータタイプを使用する乗算を可能にする。
図１Ｋに示すように、各レーン、活性化ブロードキャストユニット１４１は、１ビットの符号サクト（ｓａｃｔ）が伴われる活性化の８ビット絶対値（ａｃｔ＿ａｂｓ［７：０］）をブロードキャストする。
活性化数字タイプの変換器１３５により適用された変換は、ｉｎｔ８／ｕｉｎｔ８を「符号及び８ビットの絶対値（ｓｉｇｎ  ａｎｄ  ８−ｂｉｔ  ａｂｓｏｌｕｔｅ  ｖａｌｕｅ）」に変換する。
入力の活性化がｕｉｎｔ８であれば、タイプ変換器１３５は、出力ブロードキャスト８ビットの絶対値を入力ｕｉｎｔ８値と同一に設定し（つまり、変換なし）、ブロードキャスト符号をゼロに設定する（これは、負数ではない（ｎｏｎ−ｎｅｇａｔｉｖｅ）の値が表示されることを意味する）。
【０１８０】
入力活性化データタイプがｉｎｔ８であれば、活性化数字タイプの変換器１３５は、出力の絶対値を活性化の絶対値に設定し、活性化が負数であれば、出力符号を１に設定し、そうではなければ出力符号を０に設定する。
【０１８１】
ウェイトは、演算のためには、次のように備えられる。
ユーザにより指定されたように、ウェイトは、ｉｎｔ８、ｕｉｎｔ８、ｉｎｔ１６、又はｕｉｎｔ１６でＳＲＡＭに格納される。
ウェイトがＭＵレジスタにロードされるにつれて、ウェイトはウェイト圧縮解除ユニット１３８内で変換される（活性化を変換するために活性化数字タイプの変換器１４１により使用されたのと同じ変換を使用する）。
ウェイトは、８ビットの絶対値と１ビットの符号で格納される。
図１Ｋ及び図１Ｎを参照すると、ウェイトがＳＲＡＭからＭＵレジスタにロードされ、バーティカルウェイトロードバス（ｖｅｒｔｉｃａｌ  ｗｅｉｇｈｔ  ｌｏａｄ  ｂｕｓｅｓ）１０１を介して乗算器ユニットにフィードされるにつれて、ｉｎｔ８とｕｉｎｔ８で表示された値は、８ビット絶対値（ｗｔ＿ａｂｓ＿ｌｄ＿ｉｎ［７：０］［Ｃ］）と１ビットの符号表現（ｓｗｔ＿ｉｎ［Ｃ］）に変換される。
【０１８２】
８ビット乗算は、次のように実行されてもよい。
乗算器は、符号なしの８ビット乗算（Ｘ）符号なしの８ビットの乗算器であり得る。
乗算の演算は、活性化及びウェイトの両方を８ビット絶対値と１ビット符号表現である入力として受け取る。
この後、乗算器は、２つの８ビット絶対値を乗じ、２つの符号に対し排他的論理和（ｅｘｃｌｕｓｉｖｅ−ｏｒ）を行う。
２つの８ビット絶対値の積がゼロであれば、出力符号はゼロに設定される。
以後、乗算器結果（それの符号を伴う１６ビットの絶対値）は、ｉｎｔ１７に変換され加算器ツリーに伝達される。
続いて、加算器ツリーは、列の乗算器ユニットから受信された符号付きｉｎｔ１７値を減少させ、加算器ツリーと関連付けられたＡＲＵ１６７に符号付きの合計を伝達する。
【０１８３】
いくつかの実施形態では、１６ビット及び８ビットの入力データタイプは、次のように混合されてもよい。
８ビットウェイト及び８ビットの活性化は、１つのサイクル内で乗じられる。
いくつかの実施形態では、例えば、ｕｉｎｔ８活性化×ｉｎｔ８ウェイト、ｉｎｔ８活性化×ｉｎｔ８ウェイト、ｕｉｎｔ８活性化×ｕｉｎｔ８ウェイト、及びｉｎｔ８活性化×ｉｎｔ８ウェイトのような、８ビットの数値データタイプのすべての可能な組み合わせがサポートされる。
（ｉ）１６ビットウェイトと８ビットの活性化との積、又は
（ｉｉ）１６ビット活性化と８ビットウェイトとの積は、２つのサイクルを使用して計算され得る。
１６ビットの活性化と１６ビットウェイトとの積は、４つのサイクルを使用して計算される。
たとえば、ｕｉｎｔ１６活性化×ｉｎｔ８ウェイト、ｉｎｔ１６活性化×ｉｎｔ８ウェイト、ｕｉｎｔ１６活性化×ｉｎｔ１６ウェイト、ｕｉｎｔ８活性化×ｉｎｔ１６ウェイト、及びｉｎｔ１６活性化×ｉｎｔ１６ウェイトのような８ビット及び１６ビットの数値のデータタイプのすべての可能な組み合わせがサポートされ得る。
【０１８４】
いくつかの実施形態では、１６ビット活性化は、次のようにプロセッシングされる。
活性化がｕｉｎｔ１６又はｉｎｔ１６であれば、タイプの変換器１３５は、変換（上述された８ビットの変換と類似する）を適用してデータを準備する。
ｕｉｎｔ１６又はｉｎｔ１６のフォーマットでの値は、１６ビットの絶対値と符号のフォーマットに変換される。
８ビット（ｕｉｎｔ８又はｉｎｔ８）のウェイトが使用される場合は、活性化ブロードキャストユニット１４１の第１のサイクルの出力は、変換により発生した符号と１６ビット絶対値の最下位バイト（ｌｅａｓｔ  ｓｉｇｎｉｆｉｃａｎｔ  ｂｙｔｅ：ＬＳＢ）であり得（８ビットウェイトとの乗算のための）、そして活性化ブロードキャストユニット１４１の第２のサイクルの出力は、変換により発生した符号と１６ビット絶対値の最上位バイト（ＭＳＢ：ｍｏｓｔ  ｓｉｇｎｉｆｉｃａｎｔ  ｂｙｔｅ）で有り得る（また、８ビットウェイトとの乗算のための）。
それぞれ符号付きのｉｎｔ１７に変換される２つの部分積の結果は、以後、列のアキュムレータ（１３０Ａ又は１３０Ｂ）に伝送され得（通常、列の加算器ツリー（１２８Ａ、又は１２８Ｂ）を介して列のアキュムレート・アンド・リターンユニット１６７に）、そしてアキュムレータ１３０Ａ（又は１３０Ｂ）により共に加算され得る（ただし、加算される前に、最上位バイト積が符号拡張シフト（ｓｉｇｎ  ｅｘｔｅｎｄｅｄ  ｓｈｉｆｔ）１７５（及び、マルチプレクサ１７７）を用いて、８ビットのシフトアップも、また可能であることを除いてから）。
【０１８５】
ウェイトが１６ビット（ｕｉｎｔ１６、又はｉｎｔ１６）であれば、その後、４つのクロックサイクルが（１６ビット）活性化とウェイトとの乗算を実行するために使用される。
活性化ブロードキャストユニット１４１の第１のサイクルの出力は、活性化の変換から発生する符号と１６ビットの絶対値の最下位バイト（ｌｅａｓｔ  ｓｉｇｎｉｆｉｃａｎｔ  ｂｙｔｅ）であり得、乗算器にウェイトの１６ビットの絶対値の最下位バイトが同時にフィードされることがあり得、そして第１の乗算が実行され得る。
第２のサイクルの間に、活性化の同じ部分の積（つまり、活性化の変換から発生した符号と１６ビット絶対値の最下位バイト）がウェイトの１６ビットの絶対値の最上位バイトとともに、乗算器に再びフィードされることがあり得、そして第２の乗算が実行され得る。
【０１８６】
活性化ブロードキャストユニット１４１の第３のサイクルの出力は、活性化の変換から発生する符号と１６ビットの絶対値の最上位バイト（ｍｏｓｔ  ｓｉｇｎｉｆｉｃａｎｔ  ｂｙｔｅ）であり、乗算器にウェイトの１６ビットの絶対値の最下位バイト（ｌｅａｓｔ  ｓｉｇｎｉｆｉｃａｎｔ  ｂｙｔｅ）が同時にフィードされ、そして第３の乗算が実行される。
第４のサイクルの間に、活性化の同じ部分の積（つまり、活性化の変換から発生した符号と１６ビット絶対値の最上位バイト）がウェイトの１６ビット絶対値の最上位バイトとともに、乗算器に再びフィードされ、そして第４の乗算が実行される。
符号拡張されたアップシフター１７５とマルチプレクサ１７７を使用して第４の部分積に対して８ビットほど、そして１６ビットほど加算前の第２の及び第３の部分積がそれぞれプレシフト（ｐｒｅ−ｓｈｉｆｔ）されることがあることを除き、すべての４つの部分積の結果は、それぞれ列のアキュムレータ１３０Ａ（又は１３０Ｂ）に伝送され得（通常、関連付けられている列の加算器ツリー（１２８Ａ、又は１２８Ｂ）を介して、その列のアキュムレート・アンド・リターンユニットに）、そして共に加算され得る。
【０１８７】
コンボリューション演算を実行するのは、ＳＲＡＭ１０９に格納されたＩＦＭテンソルをトラバース（ｔｒａｖｅｒｓｅ、横切る）すること、ＩＦＭ伝達ファブリック１０４を介して伝達される一連のＩＦＭスライスとしてＩＦＭテンソルのコンテンツを１つ以上のタイル１０２にストリームすることと関連する。
ＩＦＭテンソルは、（ｘ、ｙ、ｚ）（そして、説明の明確性のために、今は省略するバッチインデックス（ｂａｔｃｈ  ｉｎｄｅｘ））で表現された座標を有する３次元を含み、ここで、ｘとｙのインデックスは、活性化の平面座標に対応し、インデックスｄは、デプスチャンネルに対応する。
ニューラルプロセッサは、特定のシーケンス内で（ｘ、ｙ、ｄ）インデックス値を介してサイクリング（ｃｙｃｌｉｎｇ）することにより、ＩＦＭテンソルをトラバースする（ｘ、ｙ）座標を介したサイクリングを「平面（ｐｌａｎａｒ）」トラバーサル（ｔｒａｖｅｒｓａｌ）と呼び、ｄ座標を介したサイクリングを「デプス方向（ｄｅｐｔｈ−ｗｉｓｅ）」のトラバーサルと称することにする。
【０１８８】
以下のいくつかのパラグラフは、ＩＦＭキャッシュ１３９の使用を含む平面トラバーサルを説明する。
図１Ｎを参照すると、ＩＦＭ伝達ファブリック１０４は、ＩＦＭキャッシュ１３９を介してＩＦＭタイル１０２に接続され得る。
それぞれのタイル当たり１つのＩＦＭキャッシュ１３９があり、関連したタイルにローカルにそれぞれ位置する。
ＩＦＭキャッシュ１３９を（各タイルごとに）利用することは、ＳＲＡＭ１０９からのリード（ｒｅａｄ）の数を減少させるのに役に立つ。
ＳＲＡＭ１０９からのリードの数を減らすのは、
（ｉ）ニューラルプロセッサの全体の消費電力に対するＳＲＡＭの寄与を減少させること、
（ｉｉ）ＳＲＡＭの読み取りや書き込みの中断の機会を減少させること、及び
（ｉｉｉ）ＩＦＭ伝達ファブリック１０４を介して流れるトラフィックの量を減少させること、を含む３つの側面で有利であり得る。
【０１８９】
実際に発生し得る、フリップフロップレジスタの消費電力と比較してＳＲＡＭ１０９がかなり高い電力を消費すると、ＳＲＡＭの消費電力の減少側面は重要であり得る。
各ＳＲＡＭユニット１０９に位置された、ＳＲＡＭバンクの数が、実行される入出力（Ｉ／Ｏ、リード又はライト）動作の数に比べて小さい場合には、ＳＲＡＭ中断（ｓｔａｌｌ）の側面が特に重要であり得る。
例えば、後述するように、それぞれのＳＲＡＭバンクセットユニット１０９は、４つのＳＲＡＭバンクを含み得るため、最大４つのＩ／Ｏの動作を（各クロックサイクルごとに）同時に実行することができる。
このようなＩ／Ｏの動作は、ＩＦＭスライスリード、１つ又は２つのＯＦＭスライスのライト、部分結果リード又はライト、及びＡＸＩインターコネクト１１４により要請されたスライスリード又はライトであり得る。
【０１９０】
４つ以上の、このようなＩ／Ｏ動作が同じＳＲＡＭバンクに在住する（ｒｅｓｉｄｉｎｇ）データに同時にアクセスしなければならないか、又は１つ以上のＩ／Ｏ演算が同じバンク内のデータに必ずアクセスしなければならないときに、バンクアクセスの衝突が発生する可能性がある。
これは、ＳＲＡＭバンク調停ロジック（ＳＲＡＭ  ｂａｎｋ  ａｒｂｉｔｒａｔｉｏｎ  ｌｏｇｉｃ）がＡＸＩアクセス、ＩＦＭフェッチ、ＯＦＭライト、又は部分結果のＩ／Ｏを停止させることがあり得、潜在的に計算中断を引き起こす可能性がある。
したがって、ＳＲＡＭユニット１０９からＩＦＭリードを減少させるＩＦＭキャッシュ１３９は、このようなタイプの中断（ｓｔａｌｌ）を含む機会を減少させる役割をする。
【０１９１】
後で、より詳細に説明するはずであるが、ウェイトカーネルのサイズが特に大きい場合において、計算は、いくつかの部分に分けられるか、又は分けるべきであり、そして部分的に完了された計算結果（「部分結果（ｐａｒｔｉａｌ  ｒｅｓｕｌｔｓ  ）」又は「部分（ｐａｒｔｉａｌｓ）」）は、ＳＲＡＭに格納される。
収容可能な計算精度を維持するためには、部分結果は、一般的にＩＦＭ及びＯＦＭと比較してかなり長いビット幅（例えば、４又は６バイト）を有する。
ＳＲＡＭへの（又は、ＳＲＡＭからの）長いビット幅を有する部分結果をライトすること及びリードすることは、対応する高いＳＲＡＭ帯域幅を消費し、これはＳＲＡＭバンクのアクセス衝突の機会を増加させることができるため、ＡＸＩ又は計算が中断され得る。
したがって、ＩＦＭキャッシュ１３９を含むことは、部分結果を使用する計算に対して、特にＳＲＡＭのＩ／Ｏのボトルネックを緩和するのに役立つことができる。
【０１９２】
通信バス領域がプレミアムで来ると、ＩＦＭ伝達ファブリックのトラフィックを減らすことは重要であり得る。
図１Ｐに示すように、ＩＦＭ伝達ファブリックは、クロックあたり最大２つのＩＦＭスライスをＩＦＭキャッシュ１３９に伝達できることを想起できる。
ＩＦＭ伝達ファブリックが、同時に、例えば、すべての単一のクロッごとに、Ｎ個のスライスをＩＦＭキャッシュ１３９に伝達できれば、ＩＦＭ伝達ファブリックは「Ｎ個のスライスの幅」を有すると称される。
ＩＦＭスライスを（各タイルに）ローカルにキャッシュすることで、計算に要求されるＩＦＭスライスが、すでにタイルによりローカルにキャッシュされており、プロセッシングのために容易に利用可能になると、ＩＦＭ伝達ファブリック１０４は、アイドル（ｉｄｌｅ）を維持することができる。
アイドルサイクルを含むＩＦＭ伝達ファブリック１０４（１００％よりも少ない利用率を有する）は、アイドルサイクルを使用して、余分のＩＦＭスライスを伝送することを可能にし、したがって、全体の「効果的な」ＩＦＭ伝達帯域幅が２倍を超えるようにする。
従って、ＩＦＭ伝達ファブリック領域が重要であれば、全体のＩＦＭ伝達帯域幅を１倍以上に、時には２倍以上に達するように相変わらずに維持しながらも、ＩＦＭ伝達ファブリック１０４の幅は、例えば、２つのスライスから１つに減少され得る。
【０１９３】
以下に示すように、ＩＦＭキャッシュ１３９は、「１」よりも大きいカーネル平面幅及び／又は高さを有するコンボリューション演算に対して最大の利点を提供する。
「デプス方向（ｄｅｐｔｈ−ｗｉｓｅ）」のコンボリューション（カーネル幅と高さがすべて「１」であるもの）、及び完全に接続された計算は、またＩＦＭキャッシュから利点を得ることができるが、一般的にまれな状況でしかメリットを得ることができない。
【０１９４】
ＩＦＭキャッシュヒット率を増加させるために設計された、「ジグザグ」プラナートラバーサルと呼ばれる一実施形態の解決策を理解する（認識）するために、図２ＡＡ〜図２ＡＤで示すように、２×２×１６×１のウェイトカーネルを使用する、「ナイーブ」方式でＩＦＭテンソルプラナー方向（ｐｌａｎａｒ−ｗｉｓｅ）をトラバースすることをまず考慮する。
ここで、２×２は、ウェイトカーネルの平面の高さ及び幅を指し、１６はＩＦＭデプス（つまり、１つのスライス）を指し、そして「１」は、ＯＦＭデプスを指す。
しかし、説明の明確性のために、我らはコンボリューションを、純粋な平面、すなわち、２×２×１×１として扱うことができる。
図２ＡＡは、ＩＦＭテンソルの左上隅に位置したコンボリューション（カーネルウェイト）ウィンドウとともに開始するコンボリューション演算を示す。
該当する場所で２×２コンボリューションを計算した後、ウィンドウは、右に１ピクセルほどスライディングする。
ウィンドウがＩＦＭテンソルの右上隅に到達するまで、スライド過程が続く計算が繰り返される。
右上隅で、一度コンボリューションが計算され、図２ＡＢで示すように、コンボリューションウィンドウは、現在１行の下に（右の代わりに）スライディングする。
続いて、コンボリューションウィンドウがＩＦＭテンソルの左側エッジ（ｅｄｇｅ）（図２ＡＤに示すように、ここでウィンドウは、１行の下に再びスライディングする）に到達するまで、コンボリューションウィンドウが現在、左側に継続的にスライディングすることを除いて、図２ＡＣに示すように、同一のコンピュート・アンド・スライド（ｃｏｍｐｕｔｅ−ａｎｄ−ｓｌｉｄｅ）の段階がさらに繰り返される。
このような段階を繰り返すと、最終的にはＩＦＭテンソルの完全な平面スキャン（トラバーサル）が発生する。
ウィンドウは、主に水平的に（ｈｏｒｉｚｏｎｔａｌｌｙ）スライディングするため、つまり、内部ループのサイクルは、ｘ座標を介してスライディングするため、このようなスキャンは、水平的（垂直的（ｖｅｒｔｉｃａｌ）の反対）と称する。
【０１９５】
図２ＢＡ〜図２ＢＬに示すように、ナイーブ「水平的」スキャンとともにＩＦＭキャッシュ１３９を使用することを考慮する。
コンボリューション演算の開始からＩＦＭキャッシュ１３９がクリアされ、２×２コンボリューションウィンドウは、ＩＦＭテンソルの左上隅に位置した後、該当する開始位置でコンボリューション計算に要求される４つのＩＦＭ値を回収する。
図２ＢＡに示すように、４つのＩＦＭ値の中の１番目は、ＩＦＭセンサー内で最も左上の位置から回収される。
該当する位置は、行０、列０にあると称する。
キャッシュがクリアされたため、行０、列０でＩＦＭ値は、ＩＦＭキャッシュではなく、ＳＲＡＭから回収されるべきで、図２ＢＡで「Ｍ」とマークしたように、キャッシュミスが発生する。
いったん回収されると、ＩＦＭ値がキャッシュされる。
図２ＢＢは、行０、列１から回収された第２のＩＦＭ値（上記４つのＩＦＭ値の中からの）を示す。
キャッシュは、その位置に関連した値が含んでいないため、「Ｍ」でマークされた他のキャッシュミスが発生する。
行０、列０にある位置の列は、薄い陰影（ｌｉｇｈｔ  ｓｈａｄｉｎｇ）は、以前の段階から回収されたＩＦＭ値がキャッシュされたことを指す。
図２ＢＣ及び図２ＢＤは、それぞれキャッシュミスを発生させる、残りの２つのＩＦＭ値の回収を示す。
この時点では、すべての４つのＩＦＭ値は回収されており、現在の位置でのコンボリューション計算が完了され、すべての４つのＩＦＭ値は、またキャッシュされ、そしてコンボリューションウィンドウは１つの列ほど右にスライディングすることができる。
【０１９６】
図２ＢＥ〜図２ＢＨは、新しい位置でのコンボリューションを計算するための４つの追加ＩＦＭ値の回収を示す。
図２ＢＥでは、行０、列１でのＩＦＭ値を回収することは、キャッシュヒットを発生させるため、ＳＲＡＭのリードを排除する。
同様に、図２ＢＧは、行１、列２での他のキャッシュヒットを示しており、一方、他の２つのＩＦＭ値を回収することは、キャッシュミスを誘発する。
【０１９７】
コンボリューションウィンドウが、スライディングし続けるにつれて、図２ＢＩ〜図２ＢＬ（及び図２ＢＥ〜図２ＢＨ）での暗い陰影（ｄａｒｋ  ｓｈａｄｉｎｇ）で表示したように、コンボリューションウィンドウがＩＦＭテンソルの一番右のエッジまでずっとスライディングし、１つの行の下にスライディングする。
そしてキャッシュされた値に戻り、最後までスライディングするまで、一番左の最近キャッシュされたＩＦＭ値は、長い期間又はまったく計算に参加していない。
従って、コンボリューションウィンドウがスライディングすると、このような値は、キャッシュサイズを小さく維持するために、キャッシュから除去され得る。
【０１９８】
図２ＢＩ〜図２ＢＬは、２つのキャッシュヒット及び２つのキャッシュミスを発生させる、次の位置（右にした段階）でのコンボリューションを計算するための次の４つのＩＦＭ値を回収することを示す。
図２ＢＭに示すように、コンボリューションウィンドウが右に一段階ずつスライディングするたびに、４つのＩＦＭ値のうち２つ（淡い陰影としてマーク）が一度再び使用されるため、２×２コンボリューション中に、ＩＦＭ値を水平的にキャッシュするのは、大略、５０％のキャッシュヒット率（割合）を発生させる。
より一般的には、水平キャッシュとともにＨ×Ｗ平面カーネルサイズを使用し、十分なサイズのキャッシュを仮定するコンボリューションは、Ｈ×（Ｗ−１）／（Ｈ×Ｗ）のキャッシュヒット率を発生させる。
このようなコンボリューションに十分なキャッシュのサイズは、タイル当たり、レーン当たり、（Ｗ−１）のバイトであり得る。
しかし、後述するように、ニューラルプロセッサは、また「ＩＦＭウェイトサイクリング」（乗算器ユニットのウェイトを順次サイクリングすることにより、複数のＩＦＭチャンネルをドット積に累積させるため）をドット積の計算中に使用することができる。
したがって、後で明確になるだろうが、最も一般的な場合では、最大キャッシュのサイズは、タイル当たり、レーン当たり、ＭＵウェイトレジスタファイル１２７に格納されたウェイトの数（８ビットウェイトのデータタイプの場合、１８と同じ）と同じである。
【０１９９】
図２ＢＡ〜図２ＢＭでは、キャッシュのサイズを比較的小さく維持するには、キャッシュの値を積極的に除去しなければならない。
図２ＢＭを参照すると、コンボリューションウィンドウが行Ｒ（行２）を介してスライディングするため、以前の行Ｒ−１（行１）からのＩＦＭ値は、キャッシュから長い間除去されていた（行１、列２でキャッシュミス「Ｍ」として表示される）。
キャッシュヒット率を、Ｈ×（Ｗ−１）／（Ｈ×Ｗ）以上で高めるために、例えば、ＩＦＭテンソルの１つ以上の行の値をキャッシュすることを考慮することができる。
しかし、全体のＩＦＭテンソル行をキャッシュするには、キャッシュのサイズを増加させなければならないため、一般的には、キャッシュのサイズは、ＩＦＭテンソル幅の関数である。
ＩＦＭテンソル幅は、通常、ＡＳＩＣ設計時に知ることができず、ＩＦＭテンソル幅は比較的大きい可能性があるため、ＩＦＭ行をキャッシュすることは、シリコン面積の側面からコストがかかるから好ましくない。
コンボリューションウィンドウが水平の代わりに垂直に（平面座標の内部ループは、行番号に沿って繰り返し）主にスキャンする対称的な場合では、同じ推論が適用される。
【０２００】
ナイーブ平面スキャンとは対照的に、いくつかの実施形態は、コンボリューション演算中に「ジグザグ」の形でＩＦＭテンソルの平面トラバーサルを実行する。
キャッシュサイズを小さく維持しながらも、ジグザグの平面トラバーサルは、キャッシュヒット率を高めるのに役に立つ。
このような実施形態では、図２Ｃは、コンボリューションウィンドウが変位（ｄｉｓｐｌａｃｅ）（又はスライド）されるダウン・ライト・アップ・ライトのジグザグのパスを示す。
ナイーブ水平トラバーサルとは異なり、１つではない、２つのコンボリューション（垂直に隣接した位置での）を計算した後、図２Ｃのコンボリューションウィンドウは、右にスライディングする。
従って、ナイーブ水平トラバーサルにより結果の１つの行（１つの行の結果）とは対照的に、コンボリューションウィンドウによりＩＦＭテンソルの単一の完全なレフト・ツー・ライト（ｌｅｆｔ−ｔｏ−ｒｉｇｈｔ）エッジ・ツー・エッジ（ｅｄｇｅ−ｔｏ−ｅｄｇｅ）のスイープ（ｓｗｅｅｐ）は、コンボリューション結果の２つの行（２つの行のコンボリューション結果）を生成する。
【０２０１】
より一般的な場合では、ジグザグのトラバーサルは、単一の水平ＩＦＭテンソルのスイープでプロセッシングされた出力行の数に対応する「Ｚ番号」を使用してパラメータ化され得る。
例えば、図２ＣでＺ番号は２と同じである。
後述するように、高いＺ番号は高いキャッシュヒット率をもたらす。
【０２０２】
図２Ｃでは、単一の水平スイープあたりの結果の２つの行を生成するジグザグのトラバーサルは、幅は２倍であるが、高さは半分であるＩＦＭテンソルで上のナイーブ水平トラバーサルを実行することとして考えられる。
より一般的には、ＩＦＭテンソルコンボリューションを完了するために、総Ｈ／Ｚスイープを要求する、Ｈ×Ｚ列の長さの単一の（水平）スイープで「アンロール（ｕｎｒｏｌｌｅｄ）」されている（広がった）ジグザグのトラバーサルパスを見ることができ、ここでＨ及びＷは、それぞれＩＦＭテンソルの高さ及び幅である。
例えば、図２Ｃで、Ｚ＝２である場合には、ナイーブスキャンにより、（Ｈ×Ｗ）ＩＦＭのレイヤーをトラバースする代わりに、矢印のパスの長さは約Ｈ×Ｚ＝Ｗ×２であるため、論理ＩＦＭレイヤーの高さがＨ／Ｚ＝Ｈ／２となる一方で、論理的ＩＦＭレイヤーの幅はＷ×Ｚ＝２Ｗとなる。
ナイーブ水平は、Ｚ＝１であるジグザグのトラバーサルと同じである。
【０２０３】
図２ＤＡ〜図２ＤＤは、コンボリューションウィンドウの第１の位置については、キャッシュミスをもたらす全ての４つのＩＦＭ値を回収すること、及び４つのＳＲＡＭリードを発生させることを示す。
コンボリューションウィンドウの次の位置については、２つのＩＦＭ値をさらにフェッチすると、キャッシュミスが発生する反面、他の２つのＩＦＭのフェッチ位置がコンボリューションウィンドウの以前の位置とオーバーラップ（ｏｖｅｒｌａｐ）するため、図２ＤＥ〜図２ＤＨに示したように、２つのキャッシュのヒットを発生させる。
【０２０４】
図２ＤＩ〜図２ＤＬに示すように、コンボリューションウィンドウの次の位置については、２つのＩＦＭの値はキャッシュミスであり、２つのＩＦＭの値は、コンボリューションウィンドウの以前の位置と重なり、それぞれはキャッシュヒットを発生させる。
コンボリューションウィンドウの次の位置に対し、１つのＩＦＭ値はキャッシュミスであり、３つのＩＦＭの値は、コンボリューションウィンドウの以前の位置と重なり、図２ＤＭ〜図２ＤＰに示すように、キャッシュヒットである。
このように、図２ＤＱ〜図２ＤＸをより参照すると、ジグザグパスの使用は、キャッシュミスに対するキャッシュヒット率を大幅に向上させる。
【０２０５】
図２Ｅは、ジグザグトラバーサル効率の尺度である理想的なキャッシュ内でＳＲＡＭリードの数を参照して、ジグザグトラバーサルと関連付けられているＳＲＡＭリードの実際の数を示すテーブルである。
テーブルは、単一のスイープを実行するうちに与えられたＺに対してキャッシュサイズが十分であると仮定し、すなわち、以前スイープからの値は除去される。
テーブルで、より低い数字は、より高い効率に対応し、「１．０」は理想的な場合である。
コンボリューションのサイズは、正方形ウェイトカーネルの平面ディメンション（ｐｌａｎａｒ  ｄｉｍｅｎｓｉｏｎｓ）を示す。
たとえば、Ｚ＝２であるジグザグトラバーサルを有する３×３コンボリューションは、理想的なキャッシュ（つまり、無限の容量を有し、いかなる値も除去しない）を使用している３×３コンボリューションに比べて２倍のＳＲＡＭリードを発生させる。
しかし、Ｚ＝１であるジグザグトラバーサルを使用する３×３コンボリューション、すなわち、ナイーブ（例えば、水平）トラバーサルは、理想的なキャッシュを使用する場合に比べ、３倍以上のＳＲＡＭリードを発生させる。
したがって、この場合では、Ｚ＝２であるジグザグトラバーサルは、ナイーブトラバーサルに比べてＳＲＡＭリード回数を、（３／２）＝１．５倍に減少させる一方で、以下で説明する公式により計算されるように、両方のジグザグＺ＝２、及びＺ＝１ナイーブトラバーサルに対するキャッシュサイズはほとんど変更されない。
Ｚの数が大きいほど、ＳＲＡＭリード回数が大幅に節約される。
たとえば、キャッシュＺを「４」に増加させると、３×３コンボリューションについて（３／１．５）＝２倍のＳＲＡＭリードが節約される。
【０２０６】
図２Ｆは、各クロック当たり１つのＩＦＭスライスがプロセッシングされると仮定するとき、ＩＦＭキャッシュを提供するのに必要な、クロック当たり、平均的に予想されるＩＦＭ  ＳＲＡＭリードのテーブルを示す。
たとえば、キャッシュのない１００％（つまり、すべてのクロック）と比較すれば、そしてキャッシュＺ＝１（すなわち、ナイーブトラバーサル方式）を使用する時間の２０％と比較すれば、キャッシュＺ＝４を使用する５×５コンボリューションは、平均的に、時間の８％だけのＳＲＡＭリードを実行する。
【０２０７】
図２ＧＡ〜図２ＧＢは、キャッシュのヒット／ミスカウント及びキャッシュサイズの導出を示す。
ジグザグトラバーサルは、コンボリューションウィンドウ（Ｚ−１）行だけ垂直にスライディングした後、１つの列だけ横にスライディングする、２つの段階（ｔｗｏ−ｓｔｅｐ）のシーケンスの繰り返しを含む。
単純化のためＩＦＭテンソルエッジでの特別な場合を無視すれば、１つの列だけ横に（図２ＧＡで、右に）スライディングする平面サイズのＷ×Ｈのコンボリューションウィンドウは、Ｈのキャッシュミス（「ｍ」でマーク）とＨ×（Ｗ−１）個のヒットを発生させる。
（Ｚ−１）個の行を垂直に（図２ＧＢで、下へ）スライディングする次の段階は、（Ｚ−１）個のキャッシュミス及び（Ｚ−１）＊（Ｈ×Ｗ−１）個のキャッシュヒットを発生させる。
【０２０８】
これにより、コンボリューションウィンドウが水平的に１列だけスライディングすると、コンボリューションウィンドウは、現在の計算のためのカーネルのウィンドウ内で、以前にキャッシュされた値（図２ＧＡで「ｃ」でマークされ、以前の垂直変換中にキャッシュされた）を使用することができる。
ウィンドウが（下の図２ＧＡで）垂直にスライディングし始めるため、カーネルのウィンドウの外部（下の図２ＧＡで）で、「ｃ」でマークされた、以前のキャッシュされた値は、また使用されるよう、キャッシュに残っている必要がある。
また、ＳＲＡＭからフェッチされた値（「ｍ」としてマーク）は、キャッシュに追加される必要がある。
それは、現在の位置だけでなく、コンボリューションウィンドウが（Ｚ−１）行の下にスライディングし、１列だけ右にスライディングし、そして再び上に行った後に、計算に使用されるためである。
次に、コンボリューションウィンドウが１行の下にスライディングするたびに、１つのキャッシュ値（左上）は、除去され得、そしてＳＲＡＭからの１つの値は、追加され得る（「ｍ」でマークされる）。
したがって、図２ＧＢで「ｃ」マークの数をカウントするには、要求されるキャッシュサイズは、「（Ｈ＋（Ｈ＋Ｚ−１）×（Ｗ−１））」である。
【０２０９】
後述するように、ウェイトサイクリング（ｗｅｉｇｈｔ  ｃｙｃｌｉｎｇ）が使用されると、キャッシュサイズは、任意のタイルに同時に格納されたカーネルの数と同じ因子（ｆａｃｔｏｒ）だけ増加され得る。
上述したように、コンボリューションカーネルが小さければ、システムは、複数の平面カーネルを各ＭＵに格納される。
例えば、ＭＵが１８個のウェイトレジスタを含み、コンボリューションが２×２であれば、４つの２×２のカーネルがＭＵウェイトレジスタに格納され得る。
例えば、６４個のチャンネル（０…６３）を含むＩＦＭのドット積は、時間に応じて、４つの格納されたカーネルをサイクリングすることにより、ＯＦＭ…７に計算される。
システムは、チャネル（０…１５）を保有するＩＦＭスライスをフェッチし、（４つのうち）第１のカーネルを乗じ、そしてタイルのアキュムレータ内に結果を格納することができ、チャンネル（１６…３１）を含むＩＦＭスライスをフェッチし、（４つのうち）第２の２×２カーネルを乗じ、そして結果をすでに格納されたアキュムレータ値に加え、そして第３の及び第４のカーネルについて繰り返す。
これらのＩＦＭは、またキャッシュされることがあり、これにより、キャッシュサイズを増加させる。
しかし、平面変換する方法（ナイーブ、ジグザグ又は他の）の選択にかかわらず、ＩＦＭキャッシュサイズは上限を有し、これ（上限）は、乗算器ユニットウェイトレジスタファイルのサイズの関数である。
これは、それぞれのキャッシュされたＩＦＭが乗算されるウェイトレジスタファイル内で対応するウェイトを有しなければならないためであり、ウェイトレジスタファイルそのものは、例えば、１８ウェイトに限定される。
同じ理由により、またウェイトレジスタファイルサイズと同じ下限（ｌｏｗｅｒ  ｂｏｕｎｄ）を有するＩＦＭキャッシュサイズに変換されることに留意しなければならない。
【０２１０】
したがって、ＩＦＭキャッシュサイズは、すべての可能なサポートされるＨ及びＷの組み合わせを引き継ぎ、最大の「（Ｈ＋（Ｈ＋Ｚ−１）×（Ｗ−１）−１）」及び「ＭＵ＿ＷＥＩＧＨＴＳ」に設定されるべきであり、ここで「ＭＵ＿ＷＥＩＧＨＴＳ」は、乗算器ユニットウェイトレジスタファイルサイズ、例えば、１８と同じである。
例えば、ニューラルプロセッサが乗算器ユニットあたり１８個のウェイトを含み、Ｚ＝２であるジグザグトラバーサル及び「Ｈ×Ｗ＜＝１８」、例えば、１×１、１×２、２×１、…４×４，９×２，２×９となるように、カーネルウェイト平面サイズに対するすべての自然数Ｈ及びＷをサポートすれば、ＩＦＭキャッシュサイズは、（１＋（１＋２−１）×（１−１）−１）＝０、（１＋（１＋２−１）×（２−１）−１）＝２、（２＋（２＋２−１）×（１−１）−１）＝１、…（４＋（４＋２−１）×（４−１）−１）＝１８、（２＋（２＋２−１）×（９−１）−１）＝２５、（９＋（２＋２−１）×（２−１）−１）＝１１、及び１８で、最大、すなわち、「２５」である。
【０２１１】
いくつかの実施形態では、ＭＵウェイトレジスタファイルの容量は、１８個の８ビットウェイト（ｕｉｎｔ８又はｉｎｔ８）と同一であるか、又は、同等に、９つの１６ビットウェイト（ｕｉｎｔ１６又はｉｎｔ１６）と同一である。
ＩＦＭデータが１６ビット（ｕｉｎｔ１６又はｉｎｔ１６）であれば、ＩＦＭキャッシュは、１つの１６ビットＩＦＭ当たり２バイトを割り当てることにより、１６ビットＩＦＭデータを格納することができる。
従って、ＭＵウェイトレジスタが９つの１６ビットウェイトを格納できるのと同様に、ＩＦＭキャッシュは、９つの１６ビットＩＦＭ値を格納することができる。
ジグザグ（ナイーブだけでなく）プラナー（平面）トラバーサルは、８ビット値に適用される方法と同様に、１６ビットのＩＦＭ値に適用され得る。
このような場合において、上述されたキャッシュサイズは、また「（Ｈ＋（Ｈ＋Ｚ−１）×（Ｗ−１）−１）×ｓｉｚｅ＿ｏｆ（ＩＦＭ＿ＤＡＴＡ＿ＴＹＰＥ）」のような、最大の関数内での追加的なＷ及びＨの項を含まなければならず、ここで「ｓｉｚｅ＿ｏｆ」（ＩＦＭ＿ＤＡＴＡ＿ＴＹＰＥ）は、ＩＦＭ値のデータタイプのサイズ（バイトのサイズで）を示す（例えば、２４ビットＩＦＭ値の場合は３バイト、３２ビットＩＦＭ値の場合は４バイト）。
ＩＦＭデータタイプが２４ビット、３２ビット、又はそれ以上の場合においてジグザグ（及び、ナイーブ）キャッシュが使用されることがあるが、ＭＵウェイトレジスタファイル１２７サイズ（そして、ＩＦＭキャッシュサイズ）を３×３×「ｓｉｚｅ＿ｏｆ」（ＩＦＭ＿ＤＡＴＡ＿ＴＹＰＥ）に増加させることが推奨される。
後で詳細に説明するように、これは、望ましくない可能性がある、部分結果の使用に頼ることなく、頻繁に使用される３×３平面サイズのウェイトカーネルがコンボリューションされるようにできる。
【０２１２】
先に説明したように、ＳＲＡＭ  ＩＦＭフェッチ、ＩＦＭ伝達ファブリックを介したＩＦＭスライスの伝送、ローカルタイル内でＩＦＭ値をキャッシュすること、（一般的には、各活性化レーンごとに多少異なる割合に）キャッシュされたＩＦＭ値を回収すること、並びにタイルの間でＯＦＭ結果を再同期化（ｒｅ−ｓｙｎｃｈｒｏｎｉｚｉｎｇ）することに対する適切な制御を実行するためには、グローバル、ＳＲＡＭ、タイル、及びレーン制御ロジックユニット（１４０、１４２、１４４、１４６）が共に動作する。
ＩＦＭ及びＯＦＭプラナートラバーサルを構成するために、ホストＣＰＵは、ジグザグの高さＺを含んで、計算パラメータをグローバル制御ＦＳＭ１４０及びＳＲＡＭ制御ロジック１４２にロードする。
その後、グローバル制御ＦＳＭ１４０は、ＳＲＡＭ制御ＦＳＭの１４２及びタイル制御ＦＳＭ１４４を調整して計算を開始・実行する。
【０２１３】
コンボリューションウィンドウが、ジグザグプラナー方向方式で入力及び出力レイヤーをトラバースすれば、それぞれのアキュムレート・アンド・リターン（ａｃｃｕｍｕｌａｔｅ−ａｎｄ−ｒｅｔｕｒｎ）ユニット１６７は、フリプーリング（ｐｒｅ−ｐｏｏｌｉｎｇ）結果をＳＲＡＭに格納せずに、そしてプーリング（ｐｏｏｌｉｎｇ）を適用するために、後でそれらをリードすることなく有利に、オン・ザ・フライでプーリングを計算するために必要なＯＦＭ値を受信する。
ＡＲＵは、図２ＨＡ〜図２ＨＤに示すように、各コンボリューションＯＦＭ結果を伝送しない代わりに、各プーリングの出力が完了されるまでＡＲＵのプーリングロジック１９６のレジスタでコンボリューション結果を維持することで、プーリングウィンドウが重ならない場合においてプーリングを実行する。
各プーリングの出力が完了された後にのみ、ＡＲＵはプーリングの出力をＳＲＡＭ１０９にライトする。
最大プーリングの場合は、ＡＲＵ出力レジスタは最大値を維持することができ、この値はコンボリューションの出力と比較され、最新のＯＦＭ出力が現在の最大値を超えるときにアップデートされる。
プーリングウィンドウがスライディングすると、ＡＲＵ出力レジスタは、最大の動作を新たに開始するためにリセットされる。
平均プーリングの場合、ＡＲＵアキュムレータは、プーリングウィンドウがスライディングしようとしているまでＯＦＭ出力を追加することを維持する。
その後、平均を計算するためにアキュムレータに「１／（ＰＯＯＬＩＮＧ＿ＷＩＤＴＨ×ＰＯＯＬＩＮＧ＿ＨＥＩＧＨＴ）」が乗じられ、平均がラウンド（ｒｏｕｎｄ）されてＳＲＡＭにライトされる。
プーリングウィンドウがスライドされると、アキュムレータは、再び平均化を開始するためにリセットされる。
【０２１４】
例えば、図２ＨＡは、２×２プラナープーリングとともに実行されたＺ＝２であるジグザ平面トラバーサルを示し、ここでＩＦＭレイヤーは、ＯＦＭ値（それぞれのプーリングウィンドウで）が順次計算されるようにする、このような方式でトラバースされる。
ＡＲＵ出力は、それぞれの４つのＯＦＭ値（それぞれのプーリングを計算するために必要）を順番に生成するため、ＡＲＵプーリングロジック１９６は、最大のプーリングを計算するために、４つの連続の結果のうち、最大値をとる。
図２ＨＢは、３×３プラナープーリングと「Ｚ＝３」を有するジグザグ平面トラバーサルを示す。
Ｚ値がプーリングのカーネルの高さと同一であるため、ジグザグの方法でＩＦＭレイヤーをトラバースすれば、最大及び平均ポーリングに適した順序で生成された各プーリングウィンドウでのＯＦＭが自然に発生する。
図２ＨＣは、「Ｚ＝Ｈ＝４」の追加の例示を提供し、ここで、Ｈはプーリングカーネルの高さを示す。
【０２１５】
図２ＨＤは、Ｚ＝４で、プーリングのカーネルの高さが「２」になるように、Ｚ値がプーリングのカーネルの高さと一致しない場合を示す。
この場合には、プーリングロジック１９６は、プーリングを２つの領域（図に示したように、上位２×２及び下位２×２）に細分化し、追加のレジスタを使用して、２つのプーリング領域のいずれか（図２ＨＤで、下位２×２）からの未完了の結果を一時的に格納する。
より一般的には、ジグザグプーリングウィンドウの高さは、ジグザグのトラバーサルの高さの自然数の倍数であり得る。
合理的な数字は「２」、「３」、及び「４」を含み得る。
前に述べたように、ジグザグプーリング垂直ストライド（ｓｔｒｉｄｅ）は、ジグザグトラバーサルの高さと同一ではなければならず、これはオン・ザ・フライプーリングをこのような場合にのみ可能となるように限定する。
しかし、出力プーリングロジック１９６がプーリングのロジックの十分なコピー（ｃｏｐｙ）を有する限りプーリングウィンドウは、水平的に重なることができ、プーリングロジックの十分なコピー（ｃｏｐｙ）のそれぞれは、すべてのこのような水平的に重なるプーリングウィンドウに対して並列的にそれぞれの水平的に重複されるプーリングウィンドウをプロセッシングすることができる。
ジグザグプーリングウィンドウの幅及びストライドは、例えば、「２」、「３」、及び「４」を含む、合理的なプーリングのウィンドウ幅の数値のように、一般的に任意であり得る。
【０２１６】
プーリングウィンドウが垂直に重なる場合において、それに応じてオン・ザ・フライプーリングの問題が発生し、そして／又はカスタムプーリング（ｃｕｓｔｏｍ  ｐｏｏｌｉｎｇ、最大値及び平均ではない）が必要な場合には、プーリングは、
（ｉ）ＳＲＡＭバンクの近くにリード・モディファイ・ライト（ｒｅａｄ−ｍｏｄｉｆｙ−ｗｒｉｔｅ）のロジックを配置すること（現在の発明で開示されずに）、及び／又は
（ｉｉ）ＡＸＩを介して外部ＣＰＵ、ＧＰＵ、ＤＳＰ、又はコンピューティングコアの他のタイプでＳＲＡＭを読み出す（ｒｅａｄ  ｏｕｔ）こと、プーリングを実行すること、及びＡＸＩを介してＮＰＵ  ＳＲＡＭに再び結果をライトすることにより実行され得る。
また、ＳＲＡＭバンクに近くのカスタムリード・モディファイ・ライトのロジックは、部分結果をタイルに再び伝送せず、部分結果を効率的に合算するために再使用されてもよい。
【０２１７】
ニューラルプロセッサが、特定の演算（例えば、コンボリューション又は完全接続されたレイヤーの計算）を実行するように構成するためには、ＩＦＭ及びＯＦＭのテンソルサイズを考慮する必要があり、そして演算のパラメータ（例えば、演算タイプ、ストライド、など）とともに利用可能なハードウェアに計算を「マッピング（ｍａｐｐｉｎｇ）」する必要がある。
個々のタイルは、単に固定された数字の１６個のＩＦＭデプスチャンネル入力、及び８つのＯＦＭデプスチャンネル出力を有し得る反面、ディープラーニングニューラルネットワークモデルのレイヤーでのデプスチャンネルの数は、多様で一般的に「１６」及び「８」をはるかに超えている。
「マッピングアルゴリズム（ｍａｐｐｉｎｇ  ａｌｇｏｒｉｔｈｍ）」は、オフラインで実行されて（ランタイムとは対照的に、コンパイル時間の間）このような大規模なＩＦＭ及びＯＦＭのテンソルを部分（下位テンソルＳ）に細分化し、このような部分を計算のための利用可能なタイルに割り当て、そして利用可能なタイルからの出力がどのように計算を完了するために再組立（ｒｅ−ａｓｓｅｍｂｌｅ）されるかについての説明（構成）を生成する。
以下で、より詳細に説明するように、マッピングアルゴリズムは、またＩＦＭ（及び対応するＯＦＭ）テンソルトラバーサルの順序をプラナー方向と特にデプス方向の両方に決定することができる。
特定のマッピングの問題、つまり、与えられたＩＦＭ、ＯＦＭ、ウェイトテンソルサイズ、並びに演算パラメータに対する多様なソリューションが有り得る。
そのため、マッピングアルゴリズムは、また、最低電力、最低ＳＲＡＭサイズ、（乗算器の利用率を最大化することにより達成された）最低計算レイテンシ、又はそれらの組み合わせ（例えば、使用可能な固定されたＳＲＡＭのサイズが指定された低消費電力）に対するソリューションを最適化するかを示すパラメータを収容する。
【０２１８】
些細なことから、より高度の場合への進行としては、いくつかの実施形態のマッピング演算の実施態様は、例示のセットから理解され得る。
活性化スキップは、マッピングに大きく影響を与えないため、説明の明確性のために、ゼロ活性化スキップに関連付けられた特徴を無視することにし、それぞれのＯＦＭ列は１つの加算器ツリー及びアキュムレータのみ（つまり、計算が「デンス（ｄｅｎｓｅ、密集した）」である）を含むと仮定する。
キャッシュは、マッピングに大きく影響を与えないため、ジグザグ平面変換方法を含むキャッシュを無視することにし、そしてコンボリューションウィンドウは、ラスタ（ｒａｓｔｅｒ）方式で移動（プラナー方向にスライド）すると仮定する。
図３ＡＡ〜図３ＡＫで示した、第１の例示では、単一のタイルを使用して、３×３×１６×８のコンボリューションが計算される。
図３ＡＡは、入力として１６個のデプスチャンネルを有するＩＦＭ（１つのＩＦＭスライス）を収容し、そして８つのデプスチャンネルを有するＯＦＭ（１つのＯＦＭスライス）を生成するためにタイルを示す。
図３ＡＢで示すように、ＩＦＭテンソル３０４のサイズは、６４×６４×１６であり、ＯＦＭテンソルのサイズは、６４×６４×８であり、そしてウェイトテンソルのサイズは、３×３×１６×８である。
【０２１９】
最初は、図３ＡＣに示すように、ウェイトは、ＳＲＡＭからＭＵウェイトレジスタファイル１２７にプリロード（ｐｒｅｌｏａｄ）される。
ウェイトカーネル３０２のサイズは、３×３×１６×８である。
３×３の平面サイズを有すれば、ウェイトカーネルは「３×３＝０」プラナー「位置」を有して、図３ＡＣでは、Ａ〜Ｉに表示される。
それぞれの平面位置は、単一のＯＦＭチャンネルに対して１６長さのＩＦＭ値ベクトルを有するドット積を計算するのに使用される１６長さのウェイトベクトルと関連付けられる。
８つのＯＦＭチャンネルがあるため、図３ＡＣで示すように、ウェイトカーネルは、それぞれのＯＦＭに対して１つの３Ｄテンソルを有すると考えられる。
【０２２０】
具体的には、ウェイトは、次のようにＭＵウェイトレジスタファイル１２７にロードされる。
全体のＭＲアレイ１２２内の複数のＭＵウェイトレジスタファイルは、ディメンション１８×１６×８（ＭＵ当たり１８個のウェイト、１６個のＭＵ行及び８つのＭＵ列）を含むテンソルとして考えられ、テンソルは、サイズ３×３×１６×８の全体ウェイトカーネルを保有するのに十分である。
１８×１６×８のウェイトレジスタファイルテンソルのサイズは、また（３×３）×１６×８としてリライト（ｒｅ−ｗｒｉｔｅ）されることがあり、ここで行（Ｒ）、列（Ｃ）でそれぞれのＭＵウェイトレジスタファイルは、ウェイトテンソル（Ｗ×Ｈ×Ｒ×Ｃ）での３×３＝９平面の位置（ｘ、ｙ）のすべての９つのウェイトを格納することができ、ここで、Ｗ及びＨはウェイトカーネル平面の幅と高さ、すなわち、Ｗ＝３及びＨ＝３である。
例えば、図３ＡＣを参照すると、行０、列０でウェイトレジスタファイルは、ウェイト「｛Ａ０［０］、Ｂ０［０］、Ｃ０［０］、Ｄ０［０］、Ｅ０［０］、Ｆ０［０］、Ｇ０［０］、Ｈ０［０］、Ｉ０［０］｝」を格納し、ここでの表記法は、「Ａ…Ｉ」の次にＯＦＭ列「０…７」及びＩＦＭ行「［０…１５］」である。
これにより、行１５、列０でウェイトレジスタファイルは、ウェイト「｛Ａ０［１５］、Ｂ０［１５］、Ｃ０［１５］、Ｄ０［１５］、Ｅ０［１５］、Ｆ０［１５］、Ｇ０［１５］、Ｈ０［１５］、Ｉ０［１５］｝」を格納し、行１５、列７でウェイトレジスタファイルは、ウェイト「｛Ａ７［１５］、Ｂ７［１５］、Ｃ７［１５］、Ｄ７［１５］、Ｅ７［１５］、Ｆ７［１５］、Ｇ７［１５］、Ｈ７［１５］、Ｉ７［１５］｝」を格納する（その他等々である）。
タイルは、ドット積を「垂直に」計算するため（列ワイズ（方向）（ｃｏｌｕｍｎ−ｗｉｓｅ）の加算器ツリーを使用して）、ロードされウェイトの記述された順序は、それぞれの平面位置（Ａ…Ｉ）でＩＦＭ入力のドット積計算を許容することを見ることができる。
【０２２１】
図３ＡＤを参照すると、以後のコンボリューションウィンドウは、開始位置に位置され得、そして８つのアキュムレータ（前述されたように、マッピングの説明の明確性のために、８つのＯＦＭチャネルのそれぞれに対して１つずつ存在）がクリアされ得る。
【０２２２】
図３ＡＥを参照すると、以後のタイルは、ＳＲＡＭからＩＦＭ  ａ［０…１５］（ここで、「ａ…ｚ」は、ＩＦＭの平面位置を示し、「０…１５」は、ＩＦＭデプスチャンネルを表す）をリード（ｒｅａｄ）し、そして、このような値をタイルの８つの列にブロードキャストする。
第１の列は、「ａ［０…１５］」を要素別（ｅｌｅｍｅｎｔ−ｗｉｓｅ）でプリロードされたウェイト「Ａ０［０］…Ａ０［１５］」に乗じ、第２の列は「ａ［０…１５］」を要素別にプリロードされたウェイト「Ａ１［０］…Ａ１［１５］」に乗じ得る（等々）。
結果積は、垂直的に（それぞれの列の加算器ツリーを使用して）加算（又は減算）され得、そしてそのアキュムレータに加わり得る。
単一の位置で３×３コンボリューションを完了するためには、８個以上（３×３＝９の中で）の平面位置がプロセッシングされるために残っているため、結果のドット積はまだ完成された結果ではない。
【０２２３】
図３ＡＦを参照すると、その後のタイルは、ＳＲＡＭからＩＦＭ  ｂ［０…１５］をリードすることができ、そしてこのような値をタイルの８つの列々にブロードキャストすることができる。
第１の列は、「ｂ［０…１５］」を要素別にプリロードされたウェイトの「Ｂ０［０］…Ｂ０［１５］」に乗じ、第２の列は、「ｂ［０…１５］」を要素別にプリロードされたウェイトの「Ｂ１［０］…Ｂ１［１５］」に乗じ得る（等々）。
結果積は、垂直的に合算され得、そしてそのアキュムレータに加わり得る。
図３ＡＧを参照すると、その後のタイルは、ＳＲＡＭからＩＦＭｃ［０…１５］をリードし、そして、このような値をタイルの８つの列々にブロードキャストする。
第１の列は、「ｃ［０…１５］」を要素別にプリロードされたウェイトの「Ｃ０［０］…Ｃ０［１５］」に乗じ、第２の列は、「ｃ［０…１５］」を要素別にプリロードされたウェイトの「Ｃ１［０］…Ｃ１［１５］」に乗じ得る（等々）。
結果積は、垂直的に合算され得、そしてそのアキュムレータに加わり得る。
【０２２４】
図３ＡＨを参照すると、その後のタイルは、ＳＲＡＭからＩＦＭｇ［０…１５］をリードし、そして、このような値をタイルの８つの列々にブロードキャストする。
第１の列は、「ｇ［０…１５］」を要素別にプリロードされたウェイトの「Ｄ０［０］…Ｄ０［１５］」に乗じ、第２の列は、「ｇ［０…１５］」を要素別にプリロードされたウェイトの「Ｄ１［０］…Ｄ１［１５］」に乗じ得る（等々）。
結果積、は垂直的に合算され得、そしてそのアキュムレータに加わり得る。
図３ＡＩを参照すると、その後のタイルは、ＳＲＡＭからＩＦＭ  ｈ［０…１５］をリードし、そしてこれらの値をタイルの８つの列々にブロードキャストする。
第１の列は、「ｈ［０…１５］」を要素別にプリロードされたウェイトの「Ｅ０［０］…Ｅ０［１５］」に乗じ、第２の列は、「ｈ［０…１５］」を要素別にプリロードされたウェイトの「Ｅ１［０］…Ｅ１［１５］」に乗じ得る（等々）。
結果積は、垂直的に合算され得、そしてそのアキュムレータに加わり得る。
【０２２５】
図３ＡＪを参照すると、「ａ」〜「ｏ」にラベルされた、カーネルの９つの位置のうち残りの位置に対して類似の動作が実行され得る。
以後、アキュムレータに格納された値は、８ビットの出力のＯＦＭを形成するためにラウンドされ得、すべての８つのＯＦＭ結果は、ＳＲＡＭにライトされ得る。
これは１つのコンボリューションの計算を完了する。
図３ＡＫに示すように、以後、コンボリューションウィンドウは、１つの列ごとにプラナーワイズに移され得、そしてその動作は繰り返され得る。
【０２２６】
図３ＢＡ〜図３ＢＣに示した、第２の例では、３×３×１６×１２８コンボリューションは、単一のタイルを使用して計算される。
前述したように、利便性のために、図３ＢＡで示すように、用語「ＩＦＭスライス」は、１６個のＩＦＭデプスチャンネル、ＩＦＭリードの単位（そしてタイル入力）を意味するように定義され、用語の「ＯＦＭスライス」は、８つのＩＦＭデプスチャンネル、ＯＦＭタイル出力の単位を意味するように定義され得る。
動作マッピングを長方形で説明することが便利な場合があり、ここで図３ＢＢに示すように、長方形の高さはＩＦＭチャンネルの数に対応し、そして長方形の幅は、ＯＦＭチャンネルの数を示す。
３×３×１６×１２８コンボリューションは、それを１６個の３×３×１６×８コンボリューションに分割することにより、実行されることがあるため、３×３×１６×８コンボリューションを実行する以前の例が１６回繰り返されてもよい。
第１の段階では、ＯＦＭ［０…７］に対する３×３×１６×８コンボリューションが計算され得、第２の段階では、ＯＦＭ［８…１５］に対する３×３×１６×８コンボリューションが計算され得、等々続いて、第１６の段階では、ＯＦＭ［１２０…１２７］に対する３×３×１６×８コンボリューションまで計算され得る。
ＯＦＭチャンネルの次の下位セットをプロセッシングするのは、「ＯＦＭをステッピングすること（ｓｔｅｐｐｉｎｇ  ｔｈｅ  ＯＦＭ）」と称され得る。
１６個の段階は、１６個の長方形に対応され得、長方形の中で第１の、第２の、及び第１６の長方形は、図３ＢＣに示され、そして１６段階が完了されると、３×３×１６×１２８コンボリューションが計算されることを図３ＢＢ及び図３ＢＣから見ることができる。
【０２２７】
仮説的に、ＯＦＭを十分に小さいピース（ｐｉｅｃｅ、断片）に簡単に分割することにより、このような方法で無限定のＯＦＭのチャネルは、プロセッシングされ得る。
システムが「ＯＦＭのステップ（ｓｔｅｐｓ  ｔｈｅ  ＯＦＭ）」を実行するたびに、ＩＦＭは、全体的に再びリードされる（この例では、１６回）。
（全体）ＩＦＭのそれぞれのリードは、「ＩＦＭパス（ｐａｓｓ）」と呼ばれ、そして、このようなそれぞれのＩＦＭパスはかなりの量のエネルギー（又は、パワー、演算が繰り返し実行される場合）を消費する可能性がある。
特にモバイルのスマートフォンのようなバッテリー駆動（ｂａｔｔｅｒｙ−ｐｏｗｅｒｅｄ）装置の場合には、消費電力を低減させることが非常に望ましい。
次の例は、このようなエネルギーコストの中の一部を回避するためのアプローチを示す。
【０２２８】
図３ＣＡ及び図３ＣＢに示した、第３の例では、３×３×１６×１２８コンボリューションが計算され、この場合、１６個のタイル（１つのタイルとは対照的）を使用する。
それぞれのタイルは「１６×８＝２８」の乗算器を含んでいるため、１６個のタイルは、総「１２９×１６＝２０４８」の乗算器を含む。
ＩＦＭ［０…１５］は、すべての１６個のタイルにブロードキャストされることがあるため、タイル１は、ＯＦＭ［０…７］を計算するはずであり、タイル２は、ＯＦＭ［８…１５］を計算するはずであり、等々続いて、タイル１６は、ＯＦＭ［１２０…１２７］を計算するはずである。
本明細書で使用するように、ブロードキャストは、単一のタイルを有するすべてのＭＵ列々にＡＢＵ出力をフィードすることを意味するタイル１０２の説明とは対照的に、ＩＦＭ「ブロードキャスト」は、複数のＭＲタイル１０２に同時にＩＦＭをフィードすることを意味することに留意しなければならない。
【０２２９】
ニューラルプロセッサは、複数のＳＲＡＭバンクセット１０９（図１Ａ及び図３ＡＣ）を含む。
このように、図３ＣＢを参照すると、入力「ＩＦＭ［０…１５］」は、ＳＲＡＭバンクセット０からフィードされ得る。
タイル１の出力（ＯＦＭ［０…７］）は、タイル２の出力（ＯＦＭ［８…１５］）とともに１６チャンネル「ＯＦＭ［０…１５］」に接続されてＳＲＡＭバンクセット１に格納され得る。
同様に、タイル２の出力は、タイル３の出力と接続されてＳＲＡＭバンクセット２に格納され得、等々続いて、タイル１５の出力は、タイル１６の出力と接続されてＳＲＡＭバンクセット８に格納される。
第３の例では、ＩＦＭブロードキャストを使用した結果として、ＩＦＭデータが一度だけリードされるため、すべてのＯＦＭが単一の「パス」内で計算され（すなわち、全体のＩＦＭを一度リードする）、そして複数のＩＦＭパスを実行することにより、第２の例で発生した大部分のエネルギー消費を避けることを見ることができる。
【０２３０】
図３ＤＡに示した、第４の例示では、３×３×１６×２５６コンボリューションが計算され、１６個のタイルを使用する。
１６個のタイルは、シングルパスで最大「１６×８＝１２８」のＯＦＭチャンネルだけ生成し得、このような例では、２５６個のＯＦＭチャンネルが生成され得る。
従って、ＯＦＭ［０…１２７］を計算するために使用される第１の段階と、ＯＦＭ［１２８…２５５］を計算するのに使用される第２の段階とを有する、２つのＯＦＭ段階が実行され得る。
２つのＩＦＭパスが使用され得る（ＩＦＭを完全に２回リードする）。
２つの段階でＯＦＭを形成することは、図３ＤＡで示す。
【０２３１】
図３ＥＡ及び図３ＥＢに示した、第５の例では、３×３×３２×６４コンボリューションが計算され、１６個のタイルを使用する。
１６個のＩＦＭチャンネルを有していた先立つ例示とは異なり、この例示は、３２個のＩＦＭチャンネルを含む。
すべての３２個のＩＦＭチャンネル（２つのスライス）は、ＳＲＡＭから同時にリードされ得る。
ニューラルプロセッサは、複数のＳＲＡＭバンクセットを含み得る。
それぞれのバンクセットは（マッピング例示において）クロックサイクル当たり１つのスライスをストリーム（ｓｔｒａｍ）することができる。
したがって、２つのスライス（３２個のＩＦＭチャンネル）を同時にリード（又はストリーム）するためには、２つのバンクセットが使用され得、この中で、第１のバンクセットはＩＦＭ［０…１５］をストリームすることができ、そして、この中で、第２のバンクセットはＩＦＭ［１６…３１］をストリームすることができる。
【０２３２】
図３ＥＢを参照すると、ＯＦＭ［０…７］の計算は、タイル１とタイル９にかけて分割（ｓｐｌｉｔ）され得る。
タイル１は、ＩＦＭ［０…１５］を未完了ＯＦＭ［０…７］へ減少させる（又は増加させる）。
タイル２は、ＩＦＭ［１６…３１］を未完了ＯＦＭ［０…７］に減少させる。
以後、ＯＦＭ［０…７］の計算は、タイル１及びタイル２の出力を合算することにより（そしてバイアス、活性化関数などを適用することにより）、完了され得る。
このような合計を実行するために、タイル１及びタイル２の加算器ツリーは、１つ以上の追加のハードウェア加算器ステージを使用して、「結合（ｊｏｉｎ）」され得る。
減少ファブリック１１１は、このような追加のハードウェア加算器ステージを提供する。
ＯＦＭ［８…１５］（タイル２及びタイル１０の追加）、…ＯＦＭ［５６…６３］（タイル８とタイル１６の追加）について類似の動作が使用され得る。
図３ＥＢを参照すると、この例では、タイル（１…８）からＳＲＡＭへの出力がなく、後述されるように、タイル（９…１６）だけがＯＦＭをＳＲＡＭに格納する。
【０２３３】
図３ＦＡ〜図３ＦＣに示した、第６の例では、３×３×３２×５１２コンボリューションが計算され、１６個のタイルを使用する。
図３ＦＡを参照すると、第５の例のように、２つのＩＦＭスライス（ＩＦＭ［０…３１］）が２つのＳＲＡＭバンクからリードされ得、そして２つのＩＦＭスライスの各々は、８つのタイルにブロードキャストされ得る。
２つのこのような８つのタイルのセットは、共にＯＦＭ［０…６３］を計算することができ、このような結果は、４つのＳＲＡＭバンクセットに格納され得る。
図３ＦＢを参照すると、ＩＦＭパスあたり６４個のＯＦＭが計算され得る（つまり、６４個のＯＦＭを計算するために、全体のＩＦＭがリードされる）。
このように、第４の例示の方式と類似した方法で、５１２個のＯＦＭが８つのＩＦＭパス（そして、同等に、８つのＯＦＭの「段階」）で計算され得る。
ＯＦＭ［０…６３］は、第１のＩＦＭパスのうち計算され得、ＯＦＭ［６４…１２７］は、第２のＩＦＭパスのうち計算され得、等々続いて、ＯＦＭ［４４８…５１１］は、第８のＩＦＭパスのうちに計算し得る。
このような例示では、「６４個のＯＦＭスライスにより２つのＩＦＭスライス（２つのＩＦＭスライス×６４個のＯＦＭスライス）」の演算が８つのＯＦＭの段階に分割（ｓｐｌｉｔ）された。
各ＯＦＭ段階は、「８つのＯＦＭスライスにより２つのＩＦＭスライス（２つのＩＦＭスライスに×８つのＯＦＭスライス）」をコンボリューションする。
図３ＦＣを参照すると、いくつかの実施形態では、仮想ＳＲＡＭバンクは、ＳＲＡＭバンク（約３２ＫＢの容量を有し得る）にＩＦＭデータが使い果たされるか、又はＯＦＭデータがいっぱいになる場合をプロセッシングするために使用され得る。
【０２３４】
このような場合では、ニューラルプロセッサのデータファブリックは、透明な（ＩＦＭストリームを受信するタイルに）切り替え（ｓｗｉｔｃｈ）て、他のＳＲＡＭバンクのセットを接続することができる。
前述されたように、ＩＦＭ及びＯＦＭのテンソルは、単一のＳＲＡＭバンクセットに格納されるには大きすぎることがあり、したがって、格納のためのＳＲＡＭバンクのセットに適合するように十分に小さい下位テンソルに分割される必要がある。
グローバル制御ロジック１４０は、各下位テンソルが関連付けられているＳＲＡＭバンクセット内に格納されるアドレスだけでなく、ＩＦＭ及びＯＦＭの下位テンソルインデックス、サイズ、各下位テンソルを格納するＳＲＡＭバンクのセットのインデックスを含み、ＩＦＭ及びＯＦＭのテンソルが分割されてＳＲＡＭバンクセットに格納される方法を指定する構成レジスタを含む。
【０２３５】
計算が行われてＩＦＭ（ＯＦＭ）トラバーサルが１つのＳＲＡＭバンクセット１０９に格納された下位テンソルから、他のＳＲＡＭバンクセット１０９に格納された他の下位テンソルに移動するにつれ、グローバル制御ＦＳＭ１４０は、ＩＦＭ及びＯＦＭの伝達ファブリックのオン・ザ・フライの再構成を調整し、ＩＦＭソース（及びＯＦＭデスティネーション）ＳＲＡＭバンクセットを現在のものから次のものに転換する。
いくつかの実施形態では、再構成は、ＩＦＭを消費するタイル（及び出力を生成するタイル）に透明な方式で実行され、そしてバススイッチオーバー（ｂｕｓ  ｓｗｉｔｃｈ−ｏｖｅｒ）のうちに計算を停止（ｓｔａｌｌ）したり、スローダウンしたりしない。
【０２３６】
先に記載したように、「マッパー（ｍａｐｐｅｒ）」と呼ばれる、ソフトウェアの一部は、ウェイトのカーネルを格納（ストレージ）と部分結果だけでなく、ＳＲＡＭバンクセット及び物理的ＳＲＡＭバンクに渡って全体のＩＦＭ及びＯＦＭのストレージを分割する方法を静的に（コンパイル時に）決定することができる。
マッピングの説明の明確性のために、複数のＳＲＡＭバンクセットにおいて、物理的ＩＦＭ及びＯＦＭのストレージの詳細は無視し、そして図３ＦＣで示すように、ＳＲＡＭバンクセットは、ＩＦＭ及びＯＦＭに対する「仮想」又は「論理的」ビュー（ｖｉｅｗ）３０６であるものとしてみなす。
【０２３７】
図３ＧＡ〜図３ＧＤに示した、第７の例では、３×３×３２×５１２コンボリューションが計算され、１６個のタイルが使用される。
このような例では、エネルギーを節約するために、より少ないＩＦＭパスを使用して、第６の例示と同じコンボリューションが計算される。
図３ＧＡを参照すると、それぞれの乗算器ユニットウェイトレジスタファイル１２７は、１８個のウェイトを有することができ、３×３コンボリューションに対して、これらの中の９つのウェイトが第６の例で使用された。
このように、３×３ウェイトの２つのセット（１つとは対照的）が格納され得、そして時間が経つにつれて「サイクル（ｃｙｃｌｅ）」され得る。
特に、３×３×３２×５１２コンボリューションは、時間的にインターリーブ（ｉｎｔｅｒｌｅａｖｅ）された２つの３×３×１６×５１２コンボリューションに分割され得る。
図３ＧＢを参照すると、第３の例の方式と類似した方法で、３×３×１６×５１２コンボリューションが１６個の物理タイルにマッピングされ得る。
それぞれのＩＦＭパスについては、１つのＩＦＭスライスはリード（ＳＲＡＭバンクセットから）され、そして（８つのＳＲＡＭバンクセットに）１２８個のＯＦＭチャンネルを出力する１６個の物理的タイルにブロードキャストする。
このような例では、ＯＦＭ計算を完了するために、４つのＩＦＭのパス（そして４つのＯＦＭ段階）が必要である。
【０２３８】
図３ＧＣを参照すると、いくつかの実施形態では、第１の段階では、ＯＦＭ位置（ｘ、ｙ）でＯＦＭ［０…１２７］に対するコンボリューションを計算するためにＩＦＭ［０…１５］がフィードされ得るが、ＯＦＭ結果がＳＲＡＭにライトされる代わりに、アキュムレータに格納され得る。
図３ＧＤを参照すると、第２の段階では、以後、各乗算器ユニットウェイトレジスタファイル１２７は、ＯＦＭ［０…１２７］の計算を完了するために３×３ウェイトの第２のセットに切り替え、そしてＩＦＭ［１６…３１］にフィード（提供）する。
このようなプロセスは、「ＩＦＭウェイトサイクリング」と称される。
以後、第３の段階では、ＯＦＭ［０…１２７］は、ＳＲＡＭに格納され得、そしてアキュムレータはクリアされ得る。
このような３つの段階は、計算が完了するまで繰り返される。
【０２３９】
図３ＧＡを参照すると、いくつかの実施形態では、論理的なタイルは、複数のウェイトのセットを格納する物理的タイルとして定義される。
本例示（第７の例示）で、ウェイトの３×３セットの２つを格納することにより、１６個のこのような論理タイル（時間に応じてインターリーブされた）のセットの２つ（つまり、３２個の論理タイル）が形成されるのを見ることができる。
第７の例では、３２個の論理タイルは、それぞれのＩＦＭのパスで、より多くの（例えば、より広い）ＯＦＭを物理的に計算することができるので、ＩＦＭパスの数（そしてＳＲＡＭ  ＩＦＭリードエネルギー）は、第６の例に比べて２倍減少される。
【０２４０】
図３ＨＡ〜図３ＨＣに示した、第８の例では、３×３×５１２×２５６コンボリューションが先に計算され、１６個の物理タイルが使用される。
この例では、ＩＦＭ及びＯＦＭのチャンネルの数（それぞれ５１２及び２５６）は、すべて非常に大きいということに留意しなければならない。
以下で、より詳細に説明するように、コンボリューションカーネルが大きすぎて計算できない場合の部分結果、又は「部分」が使用される。
しかし、この例は、部分を使用せずに大きなウェイトカーネルを使用してコンボリューションを実行し続けることができる方法を示す。
３×３×５１２×２５６コンボリューションは、図３ＨＢで示したように計算される。
３×３の８ビットコンボリューションの場合、３×３の８ビットウェイトのセットの２つは、各乗算器ユニットに格納されるため、（ウェイトの２個セットに）×（１６個の物理的タイル＝３２個の論理タイルがある。
３２個の論理タイルは、３２個のＩＦＭスライスを減少させることができるので、部分を使用せずにプロセッシングすることができるＩＦＭチャンネルの最大数は、（３２個のスライスに）×（スライス当たり１６個のＩＦＭチャンネル）＝５１２個のＩＦＭチャンネルである。
したがって、部分を使用せずに、３×３×５１２×Ｎコンボリューションを計算することが可能であり、ここでＮは、任意の正の整数である。
【０２４１】
図３ＨＢ及び図３ＨＣを参照すると、クロックあたり２５６個のＩＦＭチャンネルが、減少ファブリックと結合されたタイルの加算器ツリーを使用して減らされる。
すべての５１２個のＩＦＭチャンネルを減少させるために（そして８つのＯＦＭチャンネルを生成するために）、２つのウェイトサイクルを実行する。
ウェイトサイクル１で、図３ＨＢに示すように、ＩＦＭ［０…１５］は、タイル１にフィードされ得、ＩＦＭ［１６…３１］は、タイル２にフィードされ得、等々続いて、ＩＦＭ［２４０…２５５］は、タイル１６にフィードされ得る。
ハードウェアツリーは、減少ファブリックにより提供されるハードウェアの加算器ステージを使用して、すべての１６個のタイル（各列当たり）に渡って結合され得る。
加算器ツリーのルート（ｒｏｏｔ）は、タイル１６で終了されるため、（後で、より詳細に議論するように、減少ファブリック、ＯＦＭ伝達ファブリック、及び加算器ツリーのコンテキストで）、タイル１６だけが結果を生成する一方、タイル（１…１５）のアキュムレータは、この構成では使用されない。
図３ＨＣに示した、ウェイトサイクル２において、ＩＦＭ［２５６…２７１］は、タイル１にフィードされ得、ＩＦＭ［２７２…２８７］は、タイル２にフィードされ得、等々続いて、ＩＦＭ［４９６…５１１］は、タイル１６にフィードされ得る。
以後、タイル１６は、完了したＯＦＭ［０…７］（ｘ、ｙ）の結果をＳＲＡＭバンク１６にライトする。
最後に、ＯＦＭ［０…７］、次にＯＦＭ［８…１５］、等々続いて、ＯＦＭ［２４８…・２５５］を計算するためには、３２個のＩＦＭパス（３２個のＯＦＭの段階）が実行され得る。
これらの特定の例では、ＩＦＭパス及びＯＦＭ段階の個数は同じであるが、以後の例においてＩＦＭパスとＯＦＭ段階との間の差は、より明確になることに留意しなければならない。
【０２４２】
図３ＨＤは、３２個のＩＦＭパス（３２個のＯＦＭ段階）の代わりに、６４個のＩＦＭパス（６４個のＯＦＭ段階）を実行することにより、図３ＨＡ〜図３ＨＣに示した３×３×５１２×２５６コンボリューションが３×３×５１２×５１２コンボリューションに簡単に変更される方法をさらに示す。
【０２４３】
図３ＩＡ〜図３ＩＦに示した、第９の例では、３×３×５１２×２５６コンボリューションは、１６個のタイルを使用し、そして部分結果を使用して計算される。
一部の場合において、ＳＲＡＭの読み取りの数を減少させることで（例えば、第８の例と比較して）、部分を使用することは、省エネルギーを可能にできる。
部分を使用すれば、マッピングアルゴリズムは、ウェイトテンソルを複数の部分に分割することができ、特にデプスチャンネルワイズ（ｃｈａｎｎｅｌ−ｗｉｓｅ）で、単一のコンボリューション演算（ウェイトテンソルをロードすること、ＩＦＭをトラバースすること、ＯＦＭをライトすることを含む。）を２つ以上に変換することができる。
これらの２つ以上の結果コンボリューションの出力は、最終的な結果を生成するために後で結合される。
【０２４４】
まず、部分なしで計算された３×３×５１２×２５６コンボリューションを示す図３ＨＢ〜図３ＨＣを想起する。
図３ＩＡ〜図３ＩＢ、及び図３ＩＣ〜図３ＩＤは、ウェイトテンソル（そして対応するＩＦＭ及びＯＦＭ）５１２ＩＦＭチャンネルが、それぞれ３×３×２５６×２５６サイズの、２つの個別のコンボリューションに対応する２５６と２５６に分割された後、関連したハードウェアリソースのマッピングを示す。
【０２４５】
図３ＩＡ〜図３ＩＢは、２つの３×３×２５６×２５６コンボリューションの内の１番目を示す。
ウェイトカーネル平面サイズが３×３＝９であるため、１８個の８ビットウェイトを保有できる個々のＭＵウェイトレジスタファイルは、３×３ウェイトの２個セットを格納するのに十分な容量を有するため、３２個の論理タイルが計算に使用される。
【０２４６】
以後、８つのＩＦＭスライスがロードされ得る。
以後、それぞれのＩＦＭスライスは、２つの物理タイルにブロードキャストされ得る。
１６個のＯＦＭ段階（１６個のＩＦＭパスに）が実行され得る。
図３ＩＡに示すように、第１のウェイトサイクルの間に、３×３ＩＦＭ［０…１２７］がフィードされ、３×３ウェイトの第１のセットとコンボリューションされ、加算器ツリーを使用して減少され、そしてタイル（８及び１６）のアキュムレータレジスタに累積され得る。
図３ＩＢを参照すると、第２のウェイトサイクルの間に、３×３ＩＦＭ［１２８…２５５］がフィードされ、３×３ウェイトの第２のセットとコンボリューションされ、加算器ツリーを使用して減少され、そしてタイル（８及び１６）内のアキュムレータレジスタにさらに累積され得る。
この時点で、対応する３×３×２５６×１６ウェイトカーネルと３×３ＩＦＭ［０…２５５］とのコンボリューションがＯＦＭチャンネル（０…１５）に対して完了され、そして部分結果として、仮想ＳＲＡＭバンクセット（８及び９）ライトされる。
これは部分結果であるため、完了された結果とは対照的に、アキュムレータ１３０の値は、ＳＲＡＭに向かう途中で活性化関数モジュール１９７をバイパスする。
選択的に、ＳＲＡＭサイズの要件と消費電力を低減させるため、ビット範囲選択モジュール１８７は、例えば、８ビット活性化及びウェイトを使用するとき４バイトまで、又は１６ビットの活性化及びウェイトを使用するとき６バイトまでラウンディングすることにより、部分結果のビット幅を減少させることができる。
【０２４７】
全体のＩＦＭ［０…２５５］がプロセッシングされるまで、すなわち、すべての必要な平面（ｘ、ｙ）の位置に対して、上の段階は繰り返され、ＩＦＭ［０…２５５］を介した１つのパス（経路）に対応して、ＯＦＭ［０…１５］に対し計算された部分結果の対応するセットを発生させる。
残りのＯＦＭチャンネル［１６…２５５］の部分結果は、ＩＦＭ［０…２５５］を介した１５個以上のパスに（１５個以上のＯＦＭ段階に対応する）を実行することにより、計算される。
【０２４８】
このマッピングの例では、２つの部分パスの使用は、物理的に、かつ同時に生成されるＯＦＭが、１つのパスで、２倍に（１つのＯＦＭスライスから２つに）、広くなるように（又は拡張されるように）する。
また、各部分のパスの間にプロセッシングされたＩＦＭテンソルのサイズは、Ｈ×Ｗ×５１２からＨ×Ｗ×２５６に、２倍に減少される。
【０２４９】
図３ＩＣ及び図３ＩＤにそれぞれ示しているように、ＩＦＭ［２５６…３８３］が第１のウェイトサイクルの間にフィードすることがあり、そしてＩＦＭ［３８４…５１１］が第２のウェイトサイクルの間にフィードされることを除いては、第２の部分のＩＦＭパスは、１番目と同一であり得る。
【０２５０】
オリジナル３×３×５１２×２５６コンボリューションを完了するのは、部分結果（要素別に、２つの３×３×２５６×２５６コンボリューションからの）を加えること、及びＡＲＵと同様にスケーリング、バイアス及び活性化関数を適用することを要求する。
このような最後の段階を達成するためのいくつかの方法があるが、次のものを含む。
つまり、
（ｉ）ＡＲＵが第２の部分コンボリューション中、最終の結果を生成するように、第１の部分コンボリューションにより生成された部分結果をリードし、要素別に、部分結果の第２のセットと合算されるように、ＩＦＭ伝達ファブリックを介してタイルＡＲＵに部分を伝送すること、及び
（ｉｉ）両部分のコンボリューション中、ＡＲＵが部分結果を出力するようにする一方、部分を追加し、そして活性化関数を適用するためにＳＲＡＭバンクセットに追加のロジックがリード・モディファイ・ライトを実行するようにすることである。
より具体的には、部分を完了するための追加のロジックは、第２の部分コンボリューション中に部分結果を受信し、第１の部分コンボリューションの結果をＳＲＡＭからリードし、このような結果を合算して活性化関数をオン・ザ・フライに適用して、最終的な結果をＳＲＡＭに再びライトし、そして
（ｉｉｉ）活性化関数を適用することなく、要素別に、２つ以上の部分演算から部分結果を追加し続けるために、部分に対するリード・アド・ライト（ｒｅａｄ−ａｄｄ−ｗｒｉｔｅ）演算が可能なＳＲＡＭバンクセット内で追加のロジックを含み、続いて最後の部分演算ラウンドのうちに完了されるため、部分結果をタイルＡＲＵへ読み込まれ、かつ伝送する。
【０２５１】
部分が使用されていない場合とは異なり、部分が使用されると、コンボリューション演算を配列するとき、ＯＦＭの高さ及び幅が考慮される必要が有り得る。
図３ＩＥを参照すると、４つのバイトがそれぞれの部分結果を格納するために使用され得る（ＩＦＭ及びＯＦＭの両方が８ビットであると仮定）。
この場合では部分結果に対するＳＲＡＭストレージサイズは、「（ＯＦＭ高さ）×（ＯＦＭ幅）×（ＯＦＭデプス）×（４バイト）」と同じである。
部分結果のためのＳＲＡＭ（オン・チップ（ｏｎ−ｃｈｉｐ））ストレージ容量が不足すると、図に示したように、ＯＦＭは、下位ウィンドウに分割され得、一度に１つずつプロセッシングされる。
しかし、下位−ウィンドウがプロセッシングされるたびに、カーネルウェイトの全体のセットをロード（又はリロード（ｒｅ−ｌｏａｄ））する必要が有り得るし、これは、エネルギー消費を増加させる可能性がある。
例えば、ＯＦＭ平面サイズが１０×１０に設定され、ＩＦＭ平面サイズがＯＦＭ平面サイズと同一に設定されると仮定する。
この場合では、カーネルウェイトサイズは、「３×３×５１２×２５６＝１．２ＭＢ」であり、比較的大きい。
全体の部分結果（全体の部分結果をプラナー（平面）下位ウィンドウに細分化せずに、全体のＩＦＭ平面サイズについて）を格納するためのＳＲＡＭのサイズは、「１０×１０×２５６×４＝１０２，４００バイト」である。
単純化のために、下位ウィンドウの使用が必要としないように、ＳＲＡＭは、十分な容量を有するとさらに仮定する。
【０２５２】
図３ＩＦは、この例では、コンボリューションを計算するプロセスを要約するが、ＩＦＭ［０…２５５］及びすべてのＯＦＭ部分［０…２５５］に対する部分の第１のセットは、計算・格納され、ＩＦＭ［０…２５５］及びすべてのＯＦＭ［０…２５５］に対する部分の第２のセットは、計算され（ただし、これが最後の部分のラウンドであるため、ＳＲＡＭにライトされずに）、そして第２の部分コンボリューションが計算されることにより要素別に部分が加えられ、活性化関数がすぐに（ｏｎ−ｔｈｅ−ｆｌｙ）適用され、ＳＲＡＭにライトされる。
【０２５３】
先に述べたように、活性化関数の適用と要素別部分の追加のためにＭＲを使用するのは、選択的である。
代わりに、要素別、プラナー（チャンネルを通じた減少なし）演算専用のＡＰＡＰ（Ａｕｘｉｌｉａｒｙ  Ｐｌａｎａｒ  ａｎｄ  Ａｃｔｉｖａｔｉｏｎ  Ｐｒｏｃｅｓｓｉｎｇ）ユニットが使用され得る。
このようなユニットは、ＳＲＡＭバンクセットに内に配置することができ、ＳＲＡＭバンクセットに到達する部分だけでなく、ＳＲＡＭにローカルに格納されたこのような部分へのアクセスを行うことができる。
以後、ＡＰＡＰユニットは、完了された結果をＳＲＡＭにライトする。
【０２５４】
このような第９の例に基づいて実行された計算は、２つのパスを実行することにより、かなりの量のエネルギーを節約することができる。
ＩＦＭパスの数が「３２」から「１６」に減少したため、ＩＦＭデータリードの量「（ＩＦＭ高さ）＊（ＩＦＭ幅）＊（ＩＦＭチャンネル）＊（ＩＦＭパス）＝１０×１０×５１２×（３２−１６）＝８１９，２００バイト」（キャッシュ無視）であり、ＳＲＡＭにライトされた部分データの量は、「（ＯＦＭ高さ）×（ＯＦＭ幅）×（ＯＦＭチャンネル）×（部分コンボリューションの数−１）×（４バイト）＝１０×１０×２５６×（２−１）×４＝１０２，４００バイト」である。
言い換えると、第２の部分パスが、結果をプラナー（平面）／活性化ユニットに直接フィードする代わりに、結果をＳＲＡＭに格納した場合、２倍の量が発生するはずである。
なお、ＳＲＡＭからリードされた部分データの量は、「（ＯＦＭ高さ）×（ＯＦＭ幅）×（部分コンボリューションの数−１）×（４バイト）＝１０×１０×２５６×（２−１）×４＝１０２，４００バイト」である。
言い換えると、第２の部分パスが結果をプラナー／活性化ユニットに直接フィードする代わりに結果をＳＲＡＭに格納した場合、２倍の量が発生するはずである。
このように、本例では部分対（ｖｓ．）部分なしを使用する３×３×５１２×２５６（８ビット）コンボリューションを実行するのは、ＳＲＡＭからリードされた、少ない８１９，０００ＩＦＭバイトが発生する一方で、ＳＲＡＭに部分をライトするために、追加の１０２，４００バイトが発生し、ＳＲＡＭから部分をリードするために、別の１０２，４００バイトが発生する。
【０２５５】
１つのＳＲＡＭライトのエネルギーが、１つのＳＲＡＭリードのエネルギーの約２倍であると仮定すると、全体に節約されたＳＲＡＭのエネルギーは、「８１９，０００−２×１０２，４００−１０２，４００＝５１１，８００×（ＳＲＡＭリードあたりのエネルギー）」と同一である。
【０２５６】
図３ＪＡ〜図３ＪＤに示した、第１０の例では、８×８×１６×６４コンボリューションが計算され、４つのタイルが使用される。
８×８コンボリューションは、「８×８＝６４」ウェイトを有し、これは、単一の乗算器ユニットに適していない可能性があり、例えば、１８個のウェイトだけ格納することができる。
したがって、図３ＪＡに示すように、６４個のウェイトは、４つのタイルに分割され得るため、タイル１は、「Ｗ［０…１，０…７，＊，＊］」を格納し、タイル２は、「Ｗ［２…３，０…７，＊，＊］」を格納し、タイル３は、「Ｗ［４…５，０…７，＊，＊］」を格納し、そしてタイル４は、「Ｗ［６…７，０…７，＊，＊］」を格納する。
ここで、ウェイトカーネルの表記法は、「Ｗ［行、列、ＩＦＭチャンネル、ＯＦＭチャンネル］」であり、「＊」は、全体の適用可能な範囲を示す。
この後、ＯＦＭ［０…７］を計算するためには、システムがタイルを追加（又は減少）でき、したがって、効果的に、各タイルは２×８×１６×６４コンボリューションを行い、そして４つのタイルを使用して、同時に実行される、４つの２×８×１６×６４コンボリューションは、１つの８×８×１６×６４コンボリューションに集計（ａｇｇｒｅｇａｔｅ）される。
各２×８×１６×６４コンボリューションは、ＩＦＭウェイトサイクリング（ＩＦＭ  ｗｅｉｇｈｔ  ｃｙｃｌｉｎｇ）を使用して共に結合された、２つの１×８×１６×６４コンボリューションとしてさらに構成される。
【０２５７】
図３ＪＢは、ＩＦＭウェイトサイクリングの第１の段階を示し、ここでコンボリューションウィンドウ内の偶数（まだ奇数ではなく）行がコンボリューションされる。
ここでタイル１は、ＩＦＭ値「ａ０、ｂ０、ｃ０、ｄ０、ｅ０、ｆ０、ｇ０、ｈ０」とコンボリューションウィンドウの行０「Ｗ［０、＊、＊、＊］」をコンボリューションする一方、タイル２は、ＩＦＭ値「ａ２、ｂ２、ｃ２、ｄ２、ｅ２、ｆ２、ｇ２、ｈ２」とコンボリューションウィンドウの行２「Ｗ［２、＊、＊、＊］」をコンソリューションし、タイル３は、ＩＦＭ値「ａ４、ｂ４、ｃ４、ｄ４、ｅ４、ｆ４、ｇ４、ｈ４」とコンボリューションウィンドウの行４「Ｗ［４、＊、＊、＊］」をコンソリューションし、タイル４は、ＩＦＭ値「ａ６、ｂ６、ｃ６、ｄ６、ｅ６、ｆ６、ｇ６、ｈ６」とコンボリューションウィンドウの行６「Ｗ［６、＊、＊、＊］」をコンボリューションする。
乗算器ユニットの積は、リダクション（減少）ファブリックにより提供される追加の加算器ツリーステージを使用し、また、タイル内のタイル加算器ツリーを使用して減少され、また、タイル４のアキュムレータレジスタ１３０内に累積（ＩＦＭ値「ａ＊、ｂ＊、…ｈ＊」）が、ＩＦＭ伝達ファブリックを介して４つのタイルにストリームされる。
【０２５８】
図３ＪＣは、ＩＦＭウェイトサイクリングの第２の段階を示し、ここでコンボリューションウィンドウ内の奇数行がコンボリューションされる。
ここでタイル１は、ＩＦＭ値「ａ１、ｂ１、ｃ１、ｄ１、ｅ１、ｆ１、ｇ１、ｈ１」とコンボリューションウィンドウの行１「Ｗ［１、＊、＊、＊］」をコンボリューションする一方、タイル２は、ＩＦＭ値「ａ３、ｂ３、ｃ３、ｄ３、ｅ３、ｆ３、ｇ３、ｈ３」とコンボリューションウィンドウの行３「Ｗ［３、＊、＊、＊］」をコンソリューションし、タイル３は、ＩＦＭ値「ａ５、ｂ５、ｃ５、ｄ５、ｅ５、ｆ５、ｇ５、ｈ５」とコンボリューションウィンドウの行５「Ｗ［５、＊、＊、＊］」をコンソリューションし、タイル４は、ＩＦＭ値「ａ７、ｂ７、ｃ７、ｄ７、ｅ７、ｆ７、ｇ７、ｈ７」とコンボリューションウィンドウの行７「Ｗ［７、＊、＊、＊］」をコンボリューションする。
第１のＩＦＭウェイトサイクリング段階と同様に、乗算器ユニットの積はリダクション（減少）ファブリックにより提供された追加の加算器ツリーステージを使用し、またタイル内のタイル加算器ツリーを使用して減少され、タイル４のアキュムレータレジスタ１３０内累積（ＩＦＭ値「ａ＊、ｂ＊、…ｈ＊」は、ＩＦＭ伝達ファブリック１０４を介して４つのタイルにストリームされることにより）される。
しかし、第１のＩＦＭウェイトサイクリング段階の間と異なり、アキュムレータレジスタ１３０は、第２のＩＦＭウェイトサイクル段階のスタートでクリアされないため、一応、両ＩＦＭウェイトサイクリング段階が完了すると、アキュムレータレジスタ１３０は、偶数及び奇数の行全体に対するドット積を含む。
【０２５９】
以後、結果ＯＦＭ［０…７］は、ＳＲＡＭ１０９にライトするため、１つのＯＦＭ位置に対する８×８×１６×８ウィンドウのコンボリューションすること（ｃｏｎｖｏｌｖｉｎｇ）を完了する。
図３ＪＤに示すように、計算を継続するためには、以後のコンボリューションウィンドウは、次の８×８コンボリューションを計算するように変換され得、そしてＯＦＭ全体が完了されるまでプロセスが繰り返され得る。
【０２６０】
図３ＫＡ〜図３ＫＢに示した、第１１の例では、８×８×６４×６４コンボリューションが計算され、１６個のタイルが使用される。
８×８コンボリューションが１６個のタイルに適用され得、より多くのＩＦＭ及びＯＦＭのチャンネルが使用され得る。
８×８コンボリューションを４つの物理的タイルに分割すると、図３ＫＡに示すように、「論理的」タイルの数が４倍減少（例えば、（１６個の物理的タイル）／（演算当たり４つの物理的タイル）＝４つの論理タイル）する。
本明細書で使用しているように、物理的タイルの「物理的グループ化（ｐｈｙｓｉｃａｌ  ｇｒｏｕｐｉｎｇ）」は、単一の物理的タイルについて大きすぎる演算を実行するためにタイルの加算器ツリーを単一の加算器ツリー（列（ｃｏｌｕｍｎ）当たり）に接続することにより、定義される。
【０２６１】
図３ＫＡを参照すると、８×８コンボリューションが、大きすぎて単一のタイル１０２に合わないことがあるため、８×８コンボリューションは、４つのタイルに分割され得る。
４つのタイルから加算器ツリーを単一の加算器ツリーに接続することで、４つのタイルは、単一の論理タイルとして物理的にグループ化され得る。
図３ＫＢを参照すると、「８×８×６４×６４」を１６個の物理的なタイルにマッピングするのは、「８×８×６４×６４」を４つの論理タイルにマッピングすることに論理的に変換され、ここで、各論理タイルは、「８×８＝６４」コンボリューションウェイトに十分適した、「１８×４＝７２」ウェイトを含む。
【０２６２】
図３ＫＢは「８×８×６４×６４「コンボリューション演算を４つの論理（したがって、１６個の物理的）タイルにマッピングすることを示す。
変換された演算は、次のように実行される。
１番目に、４つのＩＦＭスライスがリードされ、そして部分を避けるために、すべてのＩＦＭのチャネルが一度にリードされる。
２番目に、各ＩＦＭスライスは、単一の論理タイルに「ブロードキャスト」される。
３番目に、８つのＯＦＭ（１つのＯＦＭスライス）は、１つのＩＦＭのパスで計算される。
これは繰り返されることがあるため、すべてのＯＦＭチャンネルを計算するために、「（６４個のＯＦＭ）／（パス当たり８つのＯＦＭ）＝８個のＩＦＭパス（８つのＯＦＭ段階）」が実行され得る。
【０２６３】
いくつかの状況において、例えば、「８×８×６４×１０２４」コンボリューションを計算するためには、より多くのＯＦＭチャンネルが必要であり得る。
ＩＦＭを再びリード（ｒｅ−ｒｅａｄ）するために、より多くのＩＦＭパスを実行することにより、より多くのＯＦＭの段階を追加することで、部分を使用せずに、これは可能である。
いくつかの状況において、例えば、「８×８×１２８×６４」コンボリューションを計算するために、より多くのＩＦＭチャンネルが必要になり得る。
このような場合では、
（ｉ）物理的タイルの数が増加しないか、又は
（ｉｉ）の乗算器あたりウェイトの数が増加していなければ、部分を使用する必要が有り得る。
しかし、いくつかのアプリケーションでは、８×８のような大きなサイズのコンボリューションが、ＩＦＭチャンネルが少ないイメージ又はＲＧＢイメージのみに適用され得る。
Ｎ個のウェイトを保有しているＭＵウェイトレジスタファイルは、最大「Ｈ×Ｗ＜Ｎ」までコンボリューションカーネルを収容することができ、ここで、Ｈ及びＷは、ウェイトカーネルの平面の高さ及び幅を示す。
例えば、１８個の８ビットウェイトの容量を有するＭＵは、「４×４、５×３、３×５、６×２、２×６、７×２、２×７、８×２、２×８、９×２、２×９、１８×１、及び１×１８」を含むコンボリューションカーネルを保有し得る。
実際には、「８×８×１２８×６４」コンボリューションを計算する必要性は低い可能性があるため、ニューラルプロセッサの代わりにＣＰＵにより実行されることがあり得、したがって、関連したニューラルプロセッサの追加のハードウェアロジックは選択的になされる。
明確性のために、この例で説明したように、ＩＦＭ、ＯＦＭ、及び減少ファブリックの説明は、「Ｈ×Ｗ＞Ｎ」の接続が要求される場合を省略する。
【０２６４】
図３ＬＡ〜図３ＬＤに示した、第１２の例では、１×１×１０２４×６４コンボリューションが計算され、１６個のタイルが使用される。
各ＭＵは、１８個のウェイトを含み得る。
１×１コンボリューションは、わずか「１×１＝１」ウェイトを要求するため、「（乗算器あたり１８個のウェイト）／（コンボリューションウィンドウあたり１つのウェイト）＝１×１コンボリューションウェイトの１８個のセット」は、各タイルに適合することができる。
論理タイルの数は、「（１６個の物理タイル）×（乗算器あたり１８個のコンボリューションウェイトセットに）＝２８８個の論理タイル」として計算される。
１６個の物理的タイルを使用する１×１×１０２４×１６コンボリューションの計算は、２８８個の論理タイルを使用する１×１×１０２４×１６コンボリューションの計算に変換される。
部分を避けるために、すべての（１，０２４）ＩＦＭチャンネルは、１つのＩＦＭのパスでリードされる。
２８８個の論理タイルを使用して、「（ＩＦＭスライスあたり１６個のＩＦＭチャンネル）×（２８８個の論理タイル）＝４，６０８個のチャンネル」のサイズまでのＩＦＭを収容することが可能である。
１×１×１０２４×６４コンボリューションは、部分を使用せずに利用可能な４，６０８個の中から１，０２４個のＩＦＭチャンネルだけを要求する。
従って、ＩＦＭパスあたり計算されるＯＦＭスライスの数は、「ｆｌｏｏｒ（（４，６０８個の最大ＩＦＭチャンネル）／（１，０２４個のＩＦＭチャンネル））＝４つのＯＦＭスライス」である。
【０２６５】
計算は、次のように実行され得る。
最初に、１×１ウェイトの１６個のセットは、各ＭＵに格納される。
各ＯＦＭ段階（ＩＦＭパス）の間に、６４個のスライス（すべて１，０２４個のＩＦＭチャンネル）がリードされる。
物理的には、これは、「（６４個のＩＦＭスライス）／（ＭＵ当たり１×１ウェイトの１６個のセット）＝４つのＩＦＭスライス」を一度にリードすることに対応する。
１つのＯＦＭ段階（１つのＩＦＭパス）で、４つのＯＦＭスライスを計算するためには、４つのＩＦＭスライスのそれぞれは、「（１６の物理的タイル）／（４つのＩＦＭスライス）＝４つのタイル」にブロードキャストされ得る。
ＯＦＭは「（８つのＯＦＭスライス）／（４つのタイルを介したブロードキャスト）＝２つのＯＦＭ段階（そして２つのＩＦＭのパス）」を使用して計算され得る。
ＩＦＭウェイトは、１６回循環（ｃｙｃｌｅ）され得る。
【０２６６】
具体的には、図３ＬＡを参照すると、コンボリューションの計算は、以下の手順に従って行われる。
第１の段階では、アキュムレータはクリアされる。
第２の段階では、ＩＦＭ［０…１５］、ＩＦＭ［１６…３１］、ＩＦＭ［３２…４７］、及びＩＦＭ［４８…６３］は、フェッチされ、それぞれのタイル（１、５、９、１３）、タイル（２、６、１０、１４）、タイル（３、７、１１、１５）、及びタイル（４、８、１２、１６）にブロードキャストされる。
第３の段階では、タイル（４、８、１２、１６）のアキュムレータレジスタ内に中間（未完了の）結果として、システムはタイル（１…４）により計算されたドット積をＯＦＭ［０…７］に、タイル（５…８）により計算されたドット積をＯＦＭ［８…１５］に、タイル（９…１２）により計算されたドット積をＯＦＭ［１６…２３］に、及びタイル（１３…１６）により計算されたドット積をＯＦＭ［２４…３１］にそれぞれ累積する。
【０２６７】
図３ＬＢを参照すると、第４の段階では、アキュムレータはクリアされず、そしてＭＵは、ＩＦＭウェイトサイクリングでの段階に対応する１×１ウェイトの次のセットを使用するように転換される。
第５の段階では、ＩＦＭ［６４…７９］、ＩＦＭ［８０…９５］、ＩＦＭ［９６…１１１］、及びＩＦＭ［１１２…１２７］はフェッチされて、タイル（１、５、９、１３）、タイル（２、６、１０、１４）、タイル（３、７、１１、１５）、及びタイル（４、８、１２、１６）にそれぞれブロードキャストされる。
第１２段階で、タイル（４、８、１２、１６）のアキュムレータレジスタ内に中間（未完了の）結果として、システムはタイル（１…４）により計算されたドット積をＯＦＭ［０…７］に、タイル（５…８）により計算されたドット積をＯＦＭ［８…１５］に、タイル（９…１２）により計算されたドット積をＯＦＭ［１６…２３］に、及びタイル（１３…１６）により計算されたドット積をＯＦＭ［２４…３１］にそれぞれ累積する。
【０２６８】
図３ＬＣを参照すると、計算が行われ、ＩＦＭウェイトを循環し続け（総計１６個のＩＦＭウェイトサイクリング段階について）、ＩＦＭをフェッチ及びブロードキャストし、最後のＩＦＭのスライス（チャンネル９６０〜１０２３）に到達するまでドット積を計算及び累積する。
この段階では、アキュムレータがクリアされず、ＭＵは、ＩＦＭウェイトサイクリング内の最後の段階に対応する１×１ウェイトの次（最後の第１６）のセットに転換される。
次の段階では、ＩＦＭ［９６０…９７５］、ＩＦＭ［９７６…９９１］、ＩＦＭ［９９２…１００７］、及びＩＦＭ［１００８…１０２３］は、タイル（１、５、９、１３）、タイル（２、６、１０、１４）、タイル（３、７、１１、１５）は、タイル（４、８、１２、１６）にそれぞれフェッチされてブロードキャストされる。
次の段階では、システムは、完了したドット積結果をそれぞれ獲得するために、タイル（１…４）により計算されたドット積をＯＦＭ［０…７］に、タイル（５…８）により計算されたドット積をＯＦＭ［８…１５］に、タイル（９…１２）により計算されたドット積をＯＦＭ［１６…２３］に、そしてタイル（１３…１６）により計算されたドット積をＯＦＭ［２４…３１］に、タイル（４、８、１２、１６）のアキュムレータレジスタ内にそれぞれ累積する。
次の段階では、活性化がタイル（４、８、１２、１６）のアキュムレータレジスタに累積されたドット積の結果に適用され、４つの結果ＯＦＭスライスは、ＳＲＡＭにライトされる。
これでＯＦＭ［０…３１］の計算が完了する。
【０２６９】
図３ＬＤを参照すると、以後、システムは、次のＯＦＭの段階を進行し（他のＩＦＭのパスを実行することにより）、計算を繰り返し、今度はＯＦＭ［３２…６３］に関する。
システムは、次のＯＦＭの段階のためにウェイトのスライスをロードする。
つまり、（Ｗ［０，０，０…１０２３，３２…６３］）である。
ウェイトのロード（Ｗｅｉｇｈｔ  ｌｏａｄｉｎｇ）は、図１Ｋ及び図１Ｎに示すように、垂直ウェイトロードバス（ｖｅｒｔｉｃａｌ  ｗｅｉｇｈｔ  ｌｏａｄｉｎｇ  ｂｕｓｅｓ）１０１を使用して計算と同時に発生することができ、この場合、ウェイトのロードプロセスにより発生される追加の遅延はない。
システムは、アキュムレータをクリアし、そしてＭＵを１×１ウェイトの第１のセットに切り替える。
以後、システムは、ＯＦＭ［３２…６３］を計算するために図３ＬＡ〜図３ＬＣのコンテキストで説明したように演算（動作）を繰り返す。
【０２７０】
図３ＬＤに示すように（図３ＬＣの場合と同様）、システムが１６個のＩＦＭウェイトサイクルの中で１５個を通過し、対応するＩＦＭスライスをフェッチし、中間ドット積の結果を計算及び累積すると、システムはＩＦＭウェイトサイクリングの最後（第１６の）ラウンドに到達する。
このラウンドでは、アキュムレータがクリアされず、ＭＵは、１×１ウェイトの次（最後の第１６の）のセット（最後の、第１６のＩＦＭウェイトサイクリング段階）に転換される。
システムは、ＩＦＭ［９６０…９７５］、ＩＦＭ［９７６…９９１］、ＩＦＭ［９９２…１００７］、及びＩＦＭ［１００８…１０２３］をフェッチしてタイル（１、５、９、１３）、タイル（２、６、１０、１４）、タイル（３、７、１１、１５）、及びタイル（４、８、１２、１６）にそれぞれブロードキャストする。
次に、システムは、タイル（１…４）により計算されたドット積をＯＦＭ［３２…３９］に、タイル（５…８）により計算されたドット積をＯＦＭ［４０…４７］に、タイル（９…１２）により計算されたドット積をＯＦＭ［４８…５５］に、そしてタイル（１３…１６）により計算されたドット積をＯＦＭ［５６…６３］に累積する。
このプロセスの終わりで、システムは、活性化関数１９７（タイル（４、８、１２、１６）内で）をアキュムレータ１３０（タイル（４、８、１２、１６）内で）に格納された完了されたドット積に適用し、そしてコンボリューション演算を完了するために、最終のＯＦＭ［３２…６３］の結果をＳＲＡＭにライトする。
【０２７１】
今、完全接続された（ＦＣ）レイヤーの計算（コンボリューションとは対照的）を考慮する。
まず、単一のタイル、単一のＩＦＭのサンプルを使用する１６×８ＦＣ計算の些細な場合を考慮する。
ウェイトがＩＦＭと乗じられた後に捨てられることを除いて、ＦＣレイヤーの計算は、１×１コンボリューション（以前の例で説明された）と類似していることに留意しなければならない。
１つのウェイトを各ＭＵにロードし、シングルＩＦＭ［０…１５］スライスをフェッチし、タイルの加算器ツリーを使用してドット積を計算し、結果ドット積に活性化関数を適用し、そして完了されたＯＦＭ［０…７］の結果をＳＲＡＭにライトすることにより、単一の１６×８ＦＣ計算が達成され得る。
【０２７２】
単一のタイル、及び単一のＩＦＭサンプルにより１６×１６ＦＣを計算する場合を考える。
２つのウェイトを各ＭＵにロードし、シングルＩＦＭ［０…１５］をフェッチし、乗算のための２つの事前ロードされたウェイトの内の最初のをＭＵが選択することにし、上述したようにＯＦＭ［０…７］を計算し、乗算のための２つの事前ロードされたウェイトのうちの２番目のＭＵが選択することにし、そしてＯＦＭ［８…１５］を計算することにより、単一の１６×１６ＦＣ計算が達成される。
同じＩＦＭから複数のＯＦＭを計算するための、ＭＵウェイトを介したサイクリングのこのようなプロセスを「ＯＦＭウェイトサイクリング」という。
【０２７３】
１６×１６ＦＣ計算は、単一のＩＦＭパスを使用するが、２つのＯＦＭ段階（２つのＯＦＭウェイトサイクルに対応）を使用して実行されたことに留意しなければならない。
従って、他の例において観察されたように、ＯＦＭ段階の数は、ＯＦＭウェイトサイクリングが使用されない限り、一般的にＩＦＭパスの数と同じである。
【０２７４】
単一のタイル、及び単一のＩＦＭのサンプルを使用する１６×１２８ＦＣを計算する他の簡単な場合を考える。
１６個のウェイトを各ＭＵにロードし、単一のＩＦＭスライスをフェッチし、ＯＦＭウェイトサイクリングを介して、すなわち、ＯＦＭ［０…７］、ＯＦＭ［８…１５］、…ＯＦＭ［１２０…１２７］の順に計算するためにＭＵウェイトを介してサイクリングすることにより、１６個のＯＦＭの段階を実行することで、これが達成され得る。
【０２７５】
１８個のＩＦＭのサンプルのバッチ（ｂａｔｃｈ）に対して単一のタイルを使用する１６×８ＦＣを計算する簡単な場合を考慮する（つまり、ＩＦＭテンソルの形状は１×１６×１８として表現されることがある）。
ちなみに、ニューラルプロセッサが推論（訓練ではなく）を実行するため、マッピング例は、推論アプリケーションに対して一般的な、「１」のＩＦＭバッチサイズを暗黙的に仮定する。
「１」よりも大きいＩＦＭバッチサイズを有する計算もまた、ハードウェアにマッピングされることがある。
たとえば、ＩＦＭ配置でそれぞれのサンプルについて、すでに説明したように、計算が繰り返される。
しかし、１８個のＩＦＭのサンプルのバッチ（ｂａｔｃｈ）の１６×８ＦＣシングルタイルの計算は、ＭＵウェイトレジスタファイルの容量を活用して、それぞれのＩＦＭサンプルに対して１つのウェイトずつ、それぞれのＭＵに１８個のウェイトを事前ロードすることができる。
【０２７６】
以後、１番目の（１８の配置（ｂａｔｃｈ）から）ＩＦＭ［０…１５］［０］のサンプルをフェッチし、それぞれのＭＵで１８個のウェイトのうち１番目とフェッチされたＩＦＭサンプルとのドット積を計算し、活性化関数を適用し、そして結果のＯＦＭ［０…７］［０］をＳＲＡＭにライトすることで、計算が達成される。
次に、活性化関数を適用した後、ＯＦＭ［０…７］［１］を得るために、ＩＦＭ［０…１５］［１］サンプルはフェッチされ、そして各ＭＵで１８個のウェイトのうち２番目と乗じられる。
ＩＦＭ［０…１５］［０…１７］サンプル（総１８個）の全体配置がプロセッシングされるまで、この手順は継続されてＯＦＭ［０…７］［０…１７］サンプルの配置を生成する。
ＩＦＭ［０…１５］［０…１７］サンプル（合計１８個）の全体バッチがプロセッシングされるまでは、このような順序は、続いて、ＯＦＭ［０…７］［０…１７］サンプルのバッチを生成する。
ＩＦＭサンプルのバッチ（ｂａｔｃｈ）をプロセッシングするために、ＭＵウェイトを介したサイクリングを「ＩＦＭバッチ配置サイクリング」と呼ばれる。
ＭＵウェイトレジスタファイルの容量が十分であれば、ＩＦＭウェイトサイクリング、ＯＦＭサイクリング、及びＩＦＭ配置サイクリングは、計算を実行するために結合され得る。
【０２７７】
図３ＭＡ及び図３ＭＢに示した、第１３例では、２８８×８完全接続された（ｆｕｌｌｙ  ｃｏｎｎｅｃｔｅｄ）の計算は、単一のタイルを使用して実行される。
図３ＭＡを参照すると、前に述べたように、完全接続された計算は、１×１コンボリューションと類似し、ここでコンボリューションウィンドウは変換されず、そしてウェイトは再利用されず、一度の使用後に廃棄されるべきである。
１つのタイルは、８つのＯＦＭチャンネルを並列に（つまり、１つのＯＦＭスライス）計算する。
２８８個のＩＦＭのチャネルは、「２８８／（ＭＲあたり１６個の行）＝１８個のスライス」に対応する。
システムは、各ＭＵで１８個のウェイトを使用してＦＣウェイトのすべての１８個のスライスを格納する。
【０２７８】
完全接続された計算を実行するためには、システムは、次の段階（これは、ある程度、同時に実行できること、つまり、時間的に重なることがある）を実行する。
第１の段階では、ウェイトはＳＲＡＭからロードされ得る。
例えば、図１Ｋ及び図１Ｎに示した垂直ウェイトロードバス１０１を使用して、ウェイトは計算と同時にロードされ得る。
このように、システムは、ＦＣウェイトがＳＲＡＭに位置するようになることを保障することができる。
第２の段階では、ＯＦＭ［０…７］に対するアキュムレータがクリアされることがあり得る。
第３の段階では、ＩＦＭ［０…１５］の１つのサンプルがタイルにフィードされ得、そして結果は、中間（未完了）の結果を形成するために、ＯＦＭ［０…７］アキュムレータ１３０に加わり得る。
【０２７９】
第４の段階では、ＯＦＭ［０…７］アキュムレータは、クリアされずに残り得、そしてシステムは、ＦＣウェイトの次のセット（ＩＦＭウェイトを循環する（サイクリング））に転換され得る。
第５の段階では、ＩＦＭ［１６…３１］がタイルにフィードされ得、その結果は、ＯＦＭ［０…７］アキュムレータに加えられる。
図３ＭＢを参照すると、すべてのＩＦＭチャンネル（及び関連ウェイト）がサイクルされるまで、このような手順は、最後のスライスであるＩＦＭ［２８０…２８７］まで繰り返される。
最後に、活性化関数は、累積されたドット積に適用されることがあり、そして、最終のＯＦＭ［０…７］の結果は、ＳＲＡＭにライトされ得る。
これで完全に接続された計算が完了する。
【０２８０】
図３ＮＡに示した、第１４例では、２８８×６４完全接続された計算が行われる。
この例では、ＯＦＭチャンネルカウントは、「８」（第１３の例で）から「６４」に増加させる。
システムが、ＦＣ２８８×６４計算を２８８×８サイズの８つのより小さいＦＣ計算に分割し、分割された計算を１つずつ実行すると（例えば、８つのＯＦＭ段階で）、これは第１３例と同じである。
これは８つのＩＦＭパスを発生させる。
【０２８１】
図３ＯＡ〜図３ＯＣに示した、第１５例では、１０２４×３２完全接続された計算は、単一のＩＦＭサンプル（すなわち、１のバッチサイズ）に対して実行される。
図３ＯＡを参照すると、ＦＣは１×１コンボリューションと類似するため、それぞれ１×１コンボリューションを実行する「（ＭＵ当たり１８個のウェイト）×（１６個の物理的タイル）＝最大２８８個の論理タイル」が存在し得る。
このように、システムは、部分を避けるために、単一のラウンドですべての１０２４個のＩＦＭチャンネル（１０２４／１６＝３２個のＩＦＭスライス）をリードし得る。
【０２８２】
すべての３２個のＩＦＭスライスをリードするためには、３２個の論理タイルが使用される。
この計算は、３２個のＯＦＭ（４つのＯＦＭスライス）の計算を含み得る。
１つのパスでこれを行うために（一度にすべてのＯＦＭを計算）、「（３２個のＩＦＭスライス）×（４つのＯＦＭスライス）＝１２８個の論理タイル」が使用され得る。
このように、利用可能な論理タイルの数（２８８）は、十分である。
各ＭＵで８つのウェイトを格納することにより、（ＭＵ当たり最大１８個のウェイトを格納する代わりに）、論理タイルの数は、必要な１２８個に減少され得る。
【０２８３】
計算は、次のように進行され得る。
システムは、ＭＵ当たりＩＦＭ  ＦＣウェイトの８つのセットを格納し、１２８個の論理タイルを使用（上述されたように）する。
４つのＯＦＭスライスを計算することにより、全体の計算は、単一のＩＦＭのパスで完了され得る。
４つのＩＦＭスライスの各々は、フェッチされ得、４つのタイルにブロードキャストされ得る。
各ＭＵの８つのＩＦＭウェイトセットが格納されるため、ウェイトは８回サイクルされ得る。
シーケンスは、次の段階を含み得る。
第１の段階では、ＯＦＭアキュムレータがクリアされ得る。
第２の段階では、ＩＦＭ［０…６３］（４つのＩＦＭスライス）がフェッチされ得、各スライスは、４つのタイルにブロードキャストされ得る。
第３の段階では、まだ完了していないＯＦＭ［０…３１］（４つのＯＦＭスライス）が計算され、ＯＦＭアキュムレータに加えられる。
【０２８４】
図３ＯＢを参照すると、第４の段階では、ＯＦＭアキュムレータはクリアされずに残り、そしてウェイトの次のセットが使用され得る。
第５の段階では、ＩＦＭ［６４…１２７］（４つのＩＦＭスライス）がフェッチされ得る。
第６の段階では、サム・オブ・プロダクト（ｓｕｍ−ｏｆ−ｐｒｏｄｕｃｔｓ、積和）をＯＦＭアキュムレータに加えることにより、システムは、ＯＦＭ［０…３１］（４つのＯＦＭスライス）計算を続け得る（まだ完了されていない）。
図３ＯＣを参照すると、すべてのＩＦＭがプロセッシングされるまで、システムは、ウェイトのサイクリング及びＯＦＭ結果の累積を継続する。
最後の段階では、システムは、ＩＦＭ［９６０…１０２３］をフェッチしてＯＦＭ［０…３１］に累積した後、活性化関数を累積されたＯＦＭ［０…３１］に適用し、そして結果をＳＲＡＭにライトする。
【０２８５】
図３ＰＡ〜図３ＰＣに示した、第１６例では、４０９６×１０２４完全接続された計算が行われ、１６個のタイル及び１のバッチサイズが使用される。
この計算は、「（タイルあたり４０９６／１６  ＩＦＭチャンネル）＝２５６個のＩＦＭスライス」、及び「（タイルあたり１０２４／８  ＯＦＭチャンネル）＝１２８個のＯＦＭスライス」を使用する。
上述した他の例示の中の一部のように、部分を避けるために、全体のＩＦＭをリードすることが有利であり得る。
最大「（ＭＵ当たり１８個のウェイト）×（１６個の物理的タイル）＝２８８個の論理タイル」が計算の実行時に利用可能である。
全体のＩＦＭをリードするためには、２５６個の論理タイルが使用され得る。
このように、利用可能な論理タイルの数（２８８）は、十分である。
システムは、各ＭＵへウェイトの１６個のセットをロードすることにより、２５６個の論理タイルを使用するように構成され得る。
１つのラウンドで（部分なしで）２５６ＩＦＭスライスをリードするためには、すべての２５６の論理タイルが使用され得る。
したがって、「（２５６個の論理タイル／２５６  ＩＦＭスライス）＝１つのＯＦＭスライス」がＩＦＭパスあたり生成されるはずであり、そして計算を完了するために、「（１２８  ＯＦＭスライス）／（ＩＦＭパスあたり１つのＯＦＭスライス）＝１２８個のＯＦＭ段階（つまり、１２８個のＩＦＭパス）」が実行される。
【０２８６】
物理的構成を図３ＰＡに示す。
減少ファブリックは、すべての１６個のタイルの出力を単一のＯＦＭスライスに減少させるように構成され得る。
１６個のＩＦＭスライス（１６個の仮想ＳＲＡＭバンクからの）がフェッチされ、そしてそれぞれは、単に１つのタイルのみに「ブロードキャスト」する。
【０２８７】
計算は、次のように、いくつかの段階で行われる。
第１の段階では、ＯＦＭ［０…７］アキュムレータがクリアされる。
第２の段階では、１６個のＩＦＭスライス（ＩＦＭ［０…２５５］）がフェッチされ、そして中間（未完了）の結果としてＯＦＭ［０…７］アキュムレータに減少される。
【０２８８】
第３の段階では、ＯＦＭ［０…７］アキュムレータはクリアされずに残り、そしてシステムはＭＵの内に設定された、次のＩＦＭウェイトに転換される。
第４の段階では、次の１６個のＩＦＭスライス（ＩＦＭ［２５６…５１１］）がフェッチされ、ＯＦＭ［０…７］アキュムレータに減少し、追加される。
図３ＰＢに示すように、すべてのＩＦＭ（ＩＦＭ［４０８０…４０９５］までを含む）がプロセッシングされるまで、このような段階は、続けられる。
活性化関数は、累積されたドット積（タイル１６内での）に適用され得、そして最終的な結果は、ＳＲＡＭにライトされ得る。
これは、ＯＦＭ［０…７］の計算を完了する。
図３ＰＣを参照すると、次のＯＦＭの段階を実行するためには、システムは、ウェイト「Ｗ［０…４０９５，８…１５］」をロードするＯＦＭ［８…１５］に対する以前の計算を繰り返すことができ、そして全体のＦＣ計算を完了するためには、ＯＦＭ［１０１６…１０２３］までに、すべてのＯＦＭが計算されるまでＯＦＭをステッピング（ｓｔｅｐｐｉｎｇ）し続ける。
【０２８９】
ＩＦＭが「（１８個のウェイト）×（ＩＦＭスライスあたり１６個のＩＦＭチャンネル）×（１６個の物理タイル）＝４，６０８個のチャンネル」を超えるＦＣ計算の場合がありうる。
この場合には、ＩＦＭのチャンネルを部分（既存の物理的ハードウェアにマッピングされるのに十分なサイズの）に分割し、各部分に対するＦＣを個別に計算し、前述したように、要素別に部分結果（ＳＲＡＭに格納された）を追加（合算）し続け、そして活性化関数を適用して計算を完了することで、部分を使用するように強制される。
【０２９０】
ウェイトが１６ビットである場合には、ＭＵウェイトレジスタファイルの容量は、１８（８ビットウェイト）の代わりに９（１６ビットウェイト）になり、そして計算は先に説明したように、多重サイクリング（ｍｕｌｔｉ−ｃｙｃｌｉｎｇ）を使用して実行される。
より大きなウェイトビットの長さ、例えば、２４ビット又は３２ビットについても、類似した推論が適用され、ここで、例えば、ＭＵウェイトレジスタファイルは、６つの２４ビットウェイトを保有するか、又は４つの３２ビットウェイトを保有するのに十分な容量を有する。
【０２９１】
選択的に、演算をすべての使用可能な物理的タイルにマッピングすることに加えて、ニューラルプロセッサは、それぞれ、より少ない数のタイルを有する複数のニューラルプロセッサに論理的に細分化される。
例えば、１６個の物理的なタイルを含むニューラルプロセッサは、論理的に２つのニューラルプロセッサとして見えることがあり、それぞれは、元のタイルの数の半分、例えば、それぞれ８つのタイルを含み、あるいは４つのニューラルプロセッサとして見えることがあり、それぞれは、元のタイルの数の４分の１、例えば、それぞれ４つのタイルを含み得る（その他等々）。
分割後に残った物理的タイルの数を考慮するとき、このような細分化により各ニューラルプロセッサは、上述したものと実質的に同じマッピング原理に従う。
ニューラルプロセッサを複数のより小さな複数のニューラルプロセッサに細分化するのは、比較的少ないＩＦＭ減少及び比較的少ない生成されたＯＦＭチャネル（より具体的に、それの積）を要求する演算に望ましい可能性がある。
たとえば、１×１×３２×３２コンボリューションマッピングは、４つのタイルだけを要求する。
もし１６個のタイルにマッピングされると、１×１×３２×３２コンボリューションにより、１６個のタイルのうち１２個が使用されないため、乗算器の利用率が大幅に低減される。
このような場合において、１６個の物理的なタイルを含むニューラルプロセッサは、４つのニューラルプロセッサに細分化され得、それぞれは４つのタイルを含み、１×１×３２×３２コンボリューションを４つの結果ニューラルプロセッサのそれぞれにマッピングし、ＩＦＭテンソル（例えば、Ｈ×Ｗ×３２サイズの）を４つのオーバーラップしない（ｎｏｎ−ｏｖｅｒｌａｐｐｉｎｇ）サイズ（Ｈ／２×Ｗ／２×３２）のＩＦＭテンソルに細分化し、このようなクォーターサイズ（１／４サイズ）ＩＦＭテンソルを４つの小さなニューラルプロセッサのいずれか１つに割り当て、そして並列的にすべての４つのＩＦＭの下位テンソルに対するコンボリューションを計算する。
このような小さなウェイトテンソルサイズは、比較的に稀なことであり、このような演算モードは、ＩＦＭ、ＯＦＭ、及び減少ファブリックにより適切なサポートを必要とすることに留意しなければならない。
【０２９２】
利用可能なハードウェアへのニューラルネットワークレイヤーの演算の多様なマッピングは、ＩＦＭ伝達ファブリック１０４、ＯＦＭ伝達ファブリック１０６、及び減少ファブリック１１１のサポートを必要とする。
図４ＡＡは、１６個のハードウェアタイル１０２、及び１６個のＳＲＡＭバンクセット１０９を含むニューラルプロセッサの物理的なレイアウトスケッチを示す。
一実施形態では、ＳＲＡＭバンクセット１０９のメモリは、分散方式で配置され得、ここで、各ＳＲＡＭバンクセット１０９は、タイル・アンド・エスラム・バンク・セットのユニット（ｔｉｌｅ−ａｎｄ−ＳＲＡＭ−ｂａｎｋ−ｓｅｔ  ｕｎｉｔ）４０１を形成する正確に１つのタイル１０２に隣接する（ローカル的である）。
これは、すべてのタイルとそのローカルＳＲＡＭ１０９との間でのＩＦＭ及びＯＦＭデータを非常に並列的な方法で（つまり、最大１６個のＩＦＭ及び／又はストリーミングが並列的に実行されるようにする）ストリーミングすることを許容する。
これは、もしＳＲＡＭがより大きなストレージアレイに集計（ａｇｇｒｅｇａｔｅ）されて（合算されて）タイルから更に遠くに離れる場合（つまり、メモリが分散されていない場合）に存在するコンピューティングタイルとＳＲＡＭとの間の帯域幅のボトルネックを避けるためである。
【０２９３】
図４ＡＢ及び図４ＡＣは、ＳＲＡＭバンクセット１０９のコンテンツだけではなく、タイル１０２とそれのローカルＳＲＡＭバンクセット１０９との間の接続を示す。
ＩＦＭ、ＯＦＭ伝達ファブリック、ＡＸＩポートを介したＣＰＵアクセス（図示せず）、部分結果のリード及びライト、並びにウェイトグロードを提供するために同時リード・ライト演算のための十分な帯域幅を提供するために、各ＳＲＡＭバンクセット１０９は、４つのＳＲＡＭバンク（Ｂ０、Ｂ１、Ｂ２、Ｂ３）を含み得る。
図４ＡＢは、マルチプレクサ４０３を介したバンク（Ｂ０、Ｂ１、Ｂ２、Ｂ３）とＩＦＭ伝達ファブリック１０４との間の経路を示す。
ゼロスキップを活性化することができるタイルに十分なＩＦＭデータを供給するために、このパスは、計算クロック当たり最大２つのＩＦＭスライスを伝達することができる。
ＩＦＭ伝達ファブリック１０４は、タイル１０２に接続されて他の１５個のＳＲＡＭバンクセットだけではなく、ローカルＳＲＡＭバンクセットからＩＦＭデータを持って来る。
また、各ＳＲＡＭバンクセット１０９は、それのローカルタイル１０２に、特にローカルタイル１３９の内部のウェイト圧縮解除ユニット１３８にウェイトを直接供給する。
ウェイトのロードを高速化するためには、すべての４つのＳＲＡＭバンク（Ｂ０〜Ｂ３）は、ＷＤＵ１３９にウェイトを並列にフェッチ及びフィードすることができる。
コンボリューションとは異なり、ＦＣウェイトは、各乗算後に廃棄されなけばならないため、完全接続されたレイヤーの計算のうちに、可能なかぎり速くタイルにウェイトをロードすることが特に重要である。
【０２９４】
各ＭＲ１０２内の複数のＭＵウェイトレジスタファイルは、「１８×１６×８＝２，３０４バイト＝１４４個のワード」サイズのウェイトカーネルを収容することができ、ここで、各ワードは、１２８ビットを有する。
例えば、もしニューラルプロセッサに利用可能な総ＳＲＡＭ容量が２ＭＢであれば、各ＳＲＡＭバンクセットは「（２ＭＢ）／（１６個のＳＲＡＭバンクセット）＝１２８ＫＢ」を有する。
また、もし各ＳＲＡＭバンクセットが４つのＳＲＡＭバンクを含めると、各ＳＲＡＭバンクのサイズは、「（ＳＲＡＭバンクセットサイズ）／（ＳＲＡＭバンクセットあたりＳＲＡＭバンク）＝１２８ＫＢ／４＝３２ＫＢ」である。
従って、４つのローカルＳＲＡＭバンクの各々は、「１４４／４＝３６個のワード（利用可能な２０４８個のうち）」を格納することができる。
【０２９５】
図４ＡＣは、タイルとそれのローカルＳＲＡＭバンクセットとの間のローカルＯＦＭ接続を示す。
タイル１０２は、完了された結果又は部分結果をＯＦＭ伝達ファブリックに出力し、ＯＦＭ伝達ファブリックは、そのデータをその他の他のＳＲＡＭバンクセットだけでなく、ローカルＳＲＡＭバンクセットに伝送し、そのデータをデマルチプレクサ（ｄｅ−ｍｕｌｔｉｐｌｅｘｅｒ）４０５を介してＳＲＡＭバンクに（Ｂ０〜Ｂ３）に利用可能にする。
【０２９６】
次のいくつかのパラグラフは、ＩＦＭ及びＯＦＭのデータ伝送ファブリックを議論する。
ＩＦＭ伝達ファブリックは、ＳＲＡＭバンクセット１０９からタイル１０２に接続を形成してデータを伝送する一方で、ＯＦＭ伝達ファブリック１０６は、タイル１０２から逆にＳＲＡＭバンクセット１０９に接続を形成してデータを伝送する。
【０２９７】
ＩＦＭをＳＲＡＭバンクセットからタイルに持って来て、ＯＦＭをタイルからＳＲＡＭに再び持ってくる作業を考慮すると、ＳＲＡＭバンクセットとタイルとの間の接続は、オール・ツー・オール（ａｌｌ−ｔｏ−ａｌｌ）でなければならず、タイルとＳＲＡＭバンクセットとの間の接続も、またオール・ツー・オール（ａｌｌ−ｔｏ−ａｌｌ）である必要がある。
オール・ツー・オールの接続を行うには、クロスバー（ｃｒｏｓｓ−ｂａｒ）スイッチ（例えば、１６・ツー・１６）の使用が必要になり、これは、このような場合では非常に大きなシリコン面積を消費する可能性があり、したがって、かなり望ましくない。
より具体的には、完全（ｆｕｌｌ）クロスバースイッチの面積は、Ｏ（ＮＭ）に比例し、ここで、Ｎはスイッチ入力の数であり、Ｍはスイッチ出力の数である。
Ｎ＝Ｍ＝Ｔ＝１６の場合では、ここで、Ｔは、物理的タイルの数であり、したがってタイルの数で、２次（ｑｕａｄｒａｔｉｃ）である「Ｏ（ＮＭ）＝Ｏ（Ｔ２）」を作り、シリコン面積については特に高額なタイルの数を増加（又はスケーリングアップ）させる（例えば、３２から３２に又は６４に）。
【０２９８】
しかし、以下で、より詳細に説明するように、タイルとＳＲＡＭバンクセットとの間のオール・ツー・オールの接続は必要ない。
通信ファブリックのサイズと複雑さを低減させるため、いくつかの実施形態は、ＳＲＡＭをオーバーラップしない（ｎｏｎ−ｏｖｅｒｌａｐｐｉｎｇ）ストレージに分割することで、ＯＦＭが生成される位置に（それぞれの物理的なタイルにより）ＯＦＭをローカルに格納することを目標とする。
ＩＦＭデータは、多様なＳＲＡＭバンクセットから各タイルに相変わらず伝達されるが、ＩＦＭ伝達ファブリック構成は、タイル間の減少の５つの主要なパターンに対応する５つの必須パターンに減らされる。
ＯＦＭをローカルに格納して分散された（グローバル）方式でＩＦＭをフェッチする代わりに、ＯＦＭ結果を分散された（グローバル）方式でライトしながら、ＩＦＭをローカルにフェッチするようにＩＦＭ及びＯＦＭの伝達ファブリックを構成することが可能であることに留意しなければならない。
【０２９９】
一般的に、コンボリューション又は完全に接続されたレイヤーの計算は、インタータイル（ｉｎｔｅｒ−ｔｉｌｅ）の減少について、このような５つの構成のいずれか１つに分解され得る。
つまり、
（１）図４ＡＤに示すように、１６個のＯＦＭスライスをすべて共に生成するすべての１６個のタイルにＩＦＭスライスをブロードキャストすることにより、１つのＩＦＭスライスをフィードし、
（２）図４ＡＥに示すように、２つのＩＦＭスライスのそれぞれを８つのタイルにブロードキャストすることにより、２つのＩＦＭスライスを並列的にフィードし、
（３）図４ＡＧに示すように、４つのＩＦＭスライスのそれぞれを４つのタイルにブロードキャストすることで、４つのＩＦＭスライスを並列的にフィードし、
（４）図４ＡＪに示すように、４つのＩＦＭスライスのそれぞれを２つのタイルにブロードキャストすることで、８つのＩＦＭスライスを並列的にフィードし、
（５）図４ＡＬに示すように、１６個のＩＦＭスライスのそれぞれを１つのタイルにブロードキャストすることで、１６個のＩＦＭスライスを並列的にフィードする。
【０３００】
完成された（又は部分）結果を得るために、それぞれのＩＦＭスライスが８つのタイルにブロードキャストされ、２つのタイルの出力が減少（減少ファブリック１１１により）されるため、場合（２）を「ブロードキャスト８減少２」の場合と称する。
同様に、それぞれのＩＦＭスライスが４つのタイルにブロードキャストされ、４つのタイルの出力が減少されるため、場合（３）を「ブロードキャスト４減少４」の場合と称し、それぞれのＩＦＭスライスが２つのタイルにブロードキャストされ、８つのタイルの出力が減少されるため、場合（４）を「ブロードキャスト２減少８」の場合と称し、それぞれのＩＦＭスライスが１つのタイルにブロードキャストされ（つまり、ブロードキャストなし）、１６個のタイルの出力が減少されるため、場合（５）を「ブロードキャスト１減少１６」の場合と称し、そしてＩＦＭスライスが１６個のタイルにブロードキャストされ、１つのタイルの出力が減少されるため、（つまり、減少なし）、場合（１）は、「ブロードキャスト１６減少１」の場合と称される。
【０３０１】
５つのインタータイルの減少の構成をより詳細に考慮し、５つの減少の構成の場合のそれぞれでＩＦＭ及びＯＦＭの伝達ファブリックがサポートすべきな接続パターンが正確に何であるかを考える。
より明確にするために、「イントラタイル（ｉｎｔｒａ−ｔｉｌｅ）」の減少が、タイルの内部に加算器ツリー（１２８Ａ及び１２８Ｂ）を使用して乗算器ユニットの積の減少を指定すると称したのと対照的に、「インタータイル（ｉｎｔｅｒ−ｔｉｌｅ）」の減少は、タイルの出力の減少（減少ファブリック１１１により提供される再構成可能な加算器ツリーを使用）を指定すると称する。
【０３０２】
インターコネクトファブリック（ｉｎｔｅｒｃｏｎｎｅｃｔ  ｆａｂｒｉｃ）が使用される場合を識別するために、次の表記法が使用され得る。
表記法「Ｂｍ−Ｒｎ−」は、各ＩＦＭスライスがｍ個のタイルにブロードキャストされ、結果を得るために、ｎ個のタイルの出力が減少する（インタータイル減少ファブリック１１１により）場合を示す。
１６個の物理的なタイルが利用可能になることから、５つのインタータイルの減少の場合は、図４ＡＤに示したＢ１６−Ｒ１、図４ＡＦに示したＢ８−Ｒ２、図４ＡＨに示したＢ４−Ｒ４、図４ＡＫに示したＢ２−Ｒ８、及び図４ＡＭに示したＢ１−Ｒ１６を含む。
【０３０３】
インタータイルの減少の場合の最大数は、ＬＯＧ２（Ｎ）と同一であり、ここで、Ｎはニューラルプロセッサ内での物理的なタイルの個数である。
Ｎ個のタイルを有するニューラルプロセッサにおいて使用可能なインタータイルの減少の構成は、構成（ＢＮ−Ｒ１）（ｍ＝Ｎ及びｎ＝１）から開始して、次いで、ｍが１に達するまで、次の各構成ごとにｍを「２」で割り、そしてｎに「２」を乗じることにより構成される。
例えば、もしニューラルプロセッサが８つのタイルだけを有する場合には、Ｂ８−Ｒ１、Ｂ４−Ｒ２、Ｂ２−Ｒ４、及びＢ１−Ｒ８を含む、４つのインタータイルの構成が利用可能である。
３２個のタイルを有するニューラルプロセッサは、Ｂ３２−Ｒ１、Ｂ１６−Ｒ２、Ｂ８−Ｒ４、Ｂ４−Ｒ８、Ｂ２−Ｒ１６、及びＢ１−Ｒ３２を含む最大６つのインタータイル構成を提供することができる。
【０３０４】
計算は、部分結果だけでなく、最終的な結果（例えば、活性化関数が適用される）を生成することができるため、各インタータイルの構成は、ＯＦＭ伝達経路について考慮すべき２つの場合を有し得る。
最終的な結果を生成する場合を「Ｂｍ−Ｒｎ−Ｆ」と称し、そして部分結果を生成する場合を「Ｂｍ−Ｒｎ−Ｐ」と称する。
【０３０５】
図４ＡＥ、図４ＡＧ、図４ＡＪ、図４ＡＬ、及び図４ＡＮは、５つの減少の構成の各々において減少ファブリック１１１により共に加えられたタイル出力をさらに示す。
例えば、図４ＡＬは、１つの加算器ツリー（図４ＡＫで左の加算器ツリー）により合算された８つのタイル（Ｔ０、Ｔ８、Ｔ４、Ｔ１２、Ｔ１０、Ｔ２、Ｔ１４、Ｔ６）の出力を有するＢ２−Ｒ８構成を示しているが、８つのタイル（Ｔ７、Ｔ１５、Ｔ３、Ｔ１１、Ｔ１３、Ｔ５、Ｔ９、Ｔ１）の出力は、他の加算器ツリー（図４ＡＫで右の加算器ツリー）により合算される。
【０３０６】
互いに離れて広がったタイルの出力を追加するのと対照的に、減少ファブリック１１１の構成可能な加算器ツリーは、隣接したタイルの出力を加えるように設計されているため、減少ファブリックの構成可能な加算器ツリー配線を簡潔に作成してツリー自体を「分散（ｄｉｓｔｒｉｂｕｔｅ）」されるようにする。
また、前の例示での場合と違って、１６個のタイルは、ここでＴ０〜Ｔ１５として識別され、そして以下の例示において表記法を単純化するために、識別子の順序が変更（マッピング例において使用した表記法と比較して）した。
【０３０７】
各々のインタータイルの減少の構成が１つずつ詳しく検討される。
第１の例の場合は、Ｂ１６−Ｒ１演算を含む。
「（任意のＳＲＡＭバンクセットから）ＩＦＭをグローバルに（ｇｌｏｂａｌｌｙ、全域的に）フェッチする一方、ストア・オーエフエム・アズ・ローカリー・アズ・ポッシブル（ｓｔｏｒｅ−ＯＦＭ−ａｓ−ｌｏｃａｌｌｙ−ａｓ−ｐｏｓｓｉｂｌｅ、可能な限りローカルにＯＦＭを貯蔵）の原則）」により、この構成では、入力ＩＦＭは、任意のＳＲＡＭバンクセット（Ｓ０…Ｓ１５）からストリームする。
図４ＢＡに示すように、ＳＲＡＭバンクセットＳ１０は、ＩＦＭ伝達ファブリック１０４を介してすべての１６個のタイル（Ｔ０〜Ｔ１５）にＩＦＭスライスのストリームを提供（図４ＡＤに示すように、すべての１６個のタイルに１つのＩＦＭスライスをブロードキャスト）する。
例えば、１つのＳＲＡＭバンクセット（例えば、Ｓ１０）がＩＦＭデータを使い果たした場合、他のＳＲＡＭバンクセット（例えば、Ｓ１１）がデータソースになってＩＦＭデータをタイルにストリームすし続けることができる。このような段階は、全体ＩＦＭテンソルがストリームされるまで続けられる。複数のＩＦＭパスが要求される場合には、ＩＦＭテンソルストリーミングシーケンスは必要に応じて繰り返される。
【０３０８】
Ｂ１６−Ｒ１の構成でインタータイルの減少がなく、これにより、各タイルの加算器ユニットは、該当するタイルの結果だけを累積し、そしてＯＦＭ完了又は部分結果は、後述するように、近くのＳＲＡＭにライトされる。
したがって、Ｂ１６−Ｒ１で１６個のタイルの各々は、「部分結果のストリーム」又は結果が「最終のときには、ＯＦＭスライスのストリーム」を生成する。
特に、部分の場合では、各値は、８ビットＩＦＭ及びＯＦＭで作業する場合、３２ビット幅（３２−ｂｉｔｓ−ｗｉｄｅ）又は１６ビットＩＦＭ及びＯＦＭを仮定すると、４８ビット幅まである可能性あり、そして図４ＢＢで、矢印１０６により表示したように、各部分の結果は、ローカルに格納される。
この場合、各ＳＲＡＭバンクセットは、部分結果を格納するデスティネーションとして作用する。
なお、各ＳＲＡＭバンクセット１０９は、それ（各ＳＲＡＭバンクセット１０９）のローカルタイルからデータを受信し、例えば、ＳＲＡＭバンクセットＳ８は、タイルＴ８からデータを受信し、ＳＲＡＭバンクセットＳ０は、タイルＴ０からデータを受信する。
そしてそれぞれのＳＲＡＭバンクセット１０９は、４つのＳＲＡＭバンク１０８を含むため、それぞれのＳＲＡＭバンクセット１０９は、一般的にクロックあたり１６個の４バイトの部分の結果を格納することができる。
しかし、現在のソースＳＲＡＭバンクセットは、部分結果をまたライトしつつ、ＩＦＭを同時にフェッチしなければならないが、これは一部の場合においてＳＲＡＭバンクセットの利用可能な総帯域幅を超過する可能性がある。
このような場合において、コンボリューションプラナーカーネルサイズが１×１よりも大きいとき、ソースＳＲＡＭバンクセットからＩＦＭリードを減少させるＩＦＭキャッシュ１３９が役に立つ。
また、１×１よりも大きいコンボリューションプラナーカーネルサイズ及び／又はＩＦＭウェイトサイクリングを使用する演算は、複数のクロックにおいて一度出力を生成するので、（毎クロック当たり１つの結果とは対照的に）、ＯＦＭ帯域幅に対する要求を減少させてＳＲＡＭアクセスのボトルネックを防止する。
【０３０９】
最終結果を生成するときには、それぞれの最終値は、８ビット（又は１６ビットなど）に量子化されるものであり、そして、その値はＳＲＡＭバンクセット「［Ｓ０…Ｓ７］又は［Ｓ８…Ｓ１５］」にライトされ得る。
図４ＢＣ及び図４ＢＤは、ＯＦＭ伝達ファブリック接続及び設定の選択を示す。
ＯＦＭスライス幅は、ＩＦＭスライス幅の半分であるため（８つのデプスチャンネル対１６）、２つの垂直に隣接したタイル（「タイル列」）の出力は、短いローカル接続を介して上位ＳＲＡＭバンクセット又は下位ＳＲＡＭバンクセットに伝送され得る。
各ＳＲＡＭバンクセットは、１６個のチャンネルを含むスライスをプロセッシングすることができるため（１６個のチャンネルを含むＩＦＭスライスにより）、それぞれのＳＲＡＭバンクセットは、また２つのＯＦＭスライスを収容することができる。
たとえば、タイルの列を共に含む（構成する）タイル（Ｔ０及びＴ８）の出力は、共にグループ化され得、短いローカル接続１０６を介して、図４ＢＣに示したＴ８のすぐ下に位置したＳＲＡＭバンクセットＳ８、又は図４ＢＤに示したＴ０のすぐ下に位置したＳＲＡＭバンクセットＳ０に伝送され得る。
同様に、タイル列（Ｔ４又はＴ１２）の出力は、グループ化されてＳＲＡＭバンクセット（Ｓ４又はＳ１２）にローカルに伝送され得、タイル列（Ｔ１０又はＴ２）の出力は、ＳＲＡＭバンクセット（Ｓ１０又はＳ２）に、タイル列（Ｔ１４又はＴ６）の出力は、ＳＲＡＭバンクセット（Ｓ１４又はＳ６）に、タイル列（Ｔ７又はＴ１５）の出力は、ＳＲＡＭバンクセット（Ｓ７又はＳ１５）に、タイル列（Ｔ３又はＴ１１）の出力は、ＳＲＡＭバンクセット（Ｓ３又はＳ１１）に、タイル列（Ｔ１３又はＴ５）の出力は、ＳＲＡＭバンクセット（Ｓ１３又はＳ５）に、そしてタイル列（Ｔ９又はＴ１）の出力は、ＳＲＡＭバンクセット（Ｓ９又はＳ１）にグループ化されてローカルに伝送され得る。
【０３１０】
第２の例の場合は、Ｂ８−Ｒ２の演算を示す。
図４ＣＡに示すように、１つのＩＦＭスライスは、上位ＳＲＡＭバンクセットに１０９から供給され、ここで「上位（ｕｐｐｅｒ）」は、「Ｓ０、Ｓ４、Ｓ１０、Ｓ１４、Ｓ７、Ｓ３、Ｓ１３、Ｓ９」を含むように定義され、１つのＩＦＭスライスは、下位ＳＲＡＭバンクセット１０９から供給され、ここで「下位（ｌｏｗｅｒ）」は、「Ｓ８、Ｓ１２、Ｓ２、Ｓ６、Ｓ１５、Ｓ１１、Ｓ５、Ｓ１」を含むように定義される。
より具体的には、任意の上位ＳＲＡＭバンクセット１０９は、すべての上位タイル（Ｔ０、Ｔ４、Ｔ１０、Ｔ１４、Ｔ７、Ｔ３、Ｔ１３、Ｔ９）にＩＦＭスライスを伝送（ブロードキャスト）するソースとして作用する。
たとえば、ＩＦＭ伝達ファブリックは、Ｓ１０からＩＦＭスライスをリードし、そして対応するＩＦＭスライスを、Ｔ０、Ｔ４、Ｔ１０、Ｔ１４、Ｔ７、Ｔ３、Ｔ１３、Ｔ９にブロードキャストするように構成される。
代替的には、例えば、ＩＦＭ伝達ファブリックは、Ｓ３からＩＦＭスライスをリードし、そして該当するＩＦＭスライスを、Ｔ０、Ｔ４、Ｔ１０、Ｔ１４、Ｔ７、Ｔ３、Ｔ１３、Ｔ９にブロードキャストするように構成される。
【０３１１】
同様に、任意の下位ＳＲＡＭバンクセット１０９は、すべての下位タイル（Ｔ８、Ｔ１２、Ｔ２、Ｔ６、Ｔ１５、Ｔ１１、Ｔ５、Ｔ１）にＩＦＭスライスを伝送（ブロードキャスト）するソースとして作用する。
たとえば、ＩＦＭ伝達ファブリックは、Ｓ１１からＩＦＭスライスをリードし、そして該当するＩＦＭスライスを、Ｔ８、Ｔ１２、Ｔ２、Ｔ６、Ｔ１５、Ｔ１１、Ｔ５、Ｔ１にブロードキャストするように構成される。
代替的には、例えば、ＩＦＭ伝達ファブリックは、Ｓ８からＩＦＭスライスをリードし、そして該当するＩＦＭスライスを、Ｔ８、Ｔ１２、Ｔ２、Ｔ６、Ｔ１５、Ｔ１１、Ｔ５、Ｔ１にブロードキャストするように構成される。
【０３１２】
追加的に、図４ＣＡを参照すると、１つの（クロック）サイクルでデータが、次のペア（ｐａｉｒｓ）「［Ｓ０、Ｓ１］、［Ｓ２、Ｓ３］、［Ｓ４，Ｓ５，］、［Ｓ６，Ｓ７］、［Ｓ８，Ｓ９］、［Ｓ１０，Ｓ１１］、［Ｓ１２，Ｓ１３］、及び［Ｓ１４、Ｓ１５］」のいずれかから受信されるように、ＳＲＡＭバンクセットはＩＦＭスライスを伝送するためにペア（ｐａｉｒ）され得る。
例えば、図４ＣＡでは、ＩＦＭスライスは、ＳＲＡＭバンクセットのペア「［Ｓ１０、Ｓ１１］」から供給される。
【０３１３】
図４ＣＢは、２つのＩＦＭスライスをフィードすること示し、各ＩＦＭスライスは、８つのタイルにブロードキャストされ、そして２つのタイルの出力が列ワイズ（方向）方式で減少する。
例えば、図４ＡＦに沿って行ってみると、Ｔ０の出力は、Ｔ８の出力とともに減少されて１つの結果を生成し、Ｔ４及びＴ１２の出力が減少されて他の結果を生成し、Ｔ１０及びＴ２の出力が減少されてまた他の結果を生成し、Ｔ１４及びＴ６の出力が減少されてまた他の結果を生成し、Ｔ７及びＴ１５の出力が減少されてまた他の結果を生成し、そしてＴ３及びＴ１１の出力が減少されてまた他の結果を生成する。
【０３１４】
部分結果の場合では、８つの減少結果は、ＳＲＡＭバンクセット（［Ｓ０…Ｓ７］及び［Ｓ８…Ｓ１５］）の２つのグループのいずれかに格納される。
例えば、図４ＣＢは、ＳＲＡＭバンクセット（［Ｓ０…Ｓ７］）に格納された８つの部分結果を示す。
最終的結果の場合に、ＯＦＭ伝達ファブリック１０６は、「［Ｓ０…Ｓ３］、［Ｓ４…Ｓ７］、［Ｓ８…Ｓ１１］、及び［Ｓ１２…Ｓ１５］」を含む、４つのＳＲＡＭバンクセットグループのいずれかに格納された、２つの隣接したタイル列の結果をマージすることができる。
例えば、図４ＣＣは、ＳＲＡＭバンクセット（［Ｓ４…Ｓ７］）に格納された８つの最終的な結果を示す。
【０３１５】
第３の例の場合は、Ｂ４−Ｒ４の演算を示す。
図４ＤＡに示すように、１つのＩＦＭスライスが平面図（ｆｌｏｏｒｐｌａｎ）の各クォーター（ｑｕａｒｔｅｒ）から供給される。
図４ＤＢを参照すると、演算は、４つのＩＦＭスライスをブロードキャストすること、及び減少後に４つの結果を生成することを含み得る。
ＩＦＭ伝達ファブリック及びＯＦＭ伝達ファブリックは、次の場合が満足される限り、１つの（クロック）サイクル内で入力を伝送し、そして出力を受信するように管理することができる。
ｉ）ＩＦＭスライスが、「［Ｓ０…Ｓ３］、［Ｓ４…Ｓ７］、［Ｓ８…Ｓ１１］、及び［Ｓ１２…Ｓ１５］」を含む、４つのグループのいずれかから来た場合、そして
ｉｉ）出力が、図４ＤＢに示すように、結果が部分であれば、４つのグループ「［Ｓ０…Ｓ３］、［Ｓ４…Ｓ７］、［Ｓ８…Ｓ１１］、及び［Ｓ１２…Ｓ１５］」のいずれか１つに、図４ＤＣに示すように、結果が最終であれば、８つのグループ「［Ｓ０Ｓ１］、［Ｓ２Ｓ３］、［Ｓ４Ｓ５］、［Ｓ６Ｓ７］、［Ｓ８Ｓ９］、［Ｓ１０Ｓ１１］、［Ｓ１２Ｓ１３］、及び［Ｓ１４Ｓ１５］」のいずれか１つにライトされる場合である。
【０３１６】
図４ＡＪを参照すると、それぞれの減少グループ４０７は、１つの出力を生成することに留意しなければならない。
２つの結果が上部（ｔｏｐ  ｐａｒｔ）に格納されるはずであり、そして２つの結果が下部（ｂｏｔｔｏｍ  ｐａｒｔ）に格納されるはずである。
最終的結果を含むＯＦＭスライスは、８バイトのサイズを有するため、ＯＦＭ伝達ファブリックは、２つの隣接した列の結果をマージする。
図４ＡＨ、減少後、４つの出力結果を形成するためにブロードキャストされる４つのＩＦＭスライスを示す。
【０３１７】
第４の例示の場合は、Ｂ２−Ｒ８の演算を示す。
図４ＥＡに示すように、１つのＩＦＭスライスは、平面図のそれぞれの８分の１から供給され得る。
図４ＥＢを参照すると、演算は、減少後に２つの結果を生成するために、８つのＩＦＭスライスをブロードキャストすることを含み得る。
【０３１８】
ｉ）入力が、［Ｓ０…Ｓ７］及び［Ｓ８…Ｓ１５］を含む２つのグループのいずれかから来る限り、そして
ｉｉ）出力が、結果が部分的であれば、８つのグループ「［Ｓ０Ｓ１］、［Ｓ２Ｓ３］、［Ｓ４Ｓ５］、［Ｓ６Ｓ７］、［Ｓ８Ｓ９］、［Ｓ１０Ｓ１１］、［Ｓ１２Ｓ１３］、及び［Ｓ１４Ｓ１５］」のいずれか１つに、その結果が最終的であれば、任意のＳＲＡＭバンクセットにライトされる限り、ＩＦＭ伝達ファブリック及びＯＦＭ伝達ファブリックは、単一の（クロック）サイクルで入力を伝送し、そして出力を受信するように管理することができる。
【０３１９】
第４の例示の場合について、図４ＥＡはブロードキャストされるソースデータを示し、図４ＥＢは形成される部分の結果を示し、そして図４ＥＣは形成される最終的な結果を示す。
図４ＡＪを参照すると、各セクション４０７は、減少後の１つの結果を生成する。
２つの結果の中の１つは、上部に格納され得、一方で、他の結果は、下部に格納され得る。
最終的な結果を含むＯＦＭスライスは、８バイトのサイズを有するため、ＯＦＭ伝達ファブリックは、２つの隣接した列の結果をマージする。
また、図４ＡＫは減少後に、２つの出力結果を形成するためにブロードキャストされる４つのＩＦＭスライスを示す。
【０３２０】
第５の例の場合は、Ｂ１−Ｒ１６の演算を示す。
図４ＦＡに示すように、１つのブロードキャストＢ１に対応して、１つのＩＦＭスライスがそれぞれのＳＲＡＭバンクセットから供給される。
図４ＦＢを参照すると、演算はすべての１６個のタイルの出力を減少させて１つの結果を生成することを含み、１つの結果は、その結果が部分的場合及び最終的場合の両方で、任意のＳＲＡＭバンクセットに格納され得る。
【０３２１】
最終的な結果を含むＯＦＭスライスは、８バイトのサイズを有するため、ＯＦＭ伝達ファブリックは、２つの隣接した列の結果をマージする。
また、図４ＡＭは減少後に、単一の出力を形成するためにフィードされた１６個のＩＦＭスライスを示す。
【０３２２】
現在及び後続の演算の減少構成のすべての順列（ｐｅｒｍｕｔａｔｉｏｎ）に対して、後続の演算（以前の演算の結果を消費する）が、該当する結果をフェッチすることが可能なこのような方法では、１つの演算で計算とＳＲＡＭへの格納が常に可能にする、上述された例を含む方法でＩＦＭ及びＯＦＭの伝達ファブリックが設計され得る。
たとえば、現在の演算は、Ｂ４−Ｒ４を使用し、Ｂ４−Ｒ４と関連付けられているＯＦＭ伝達ファブリック接続の選択に応じて、それ（現在の演算）の結果をＳＲＡＭバンクセットに格納する。
以前のＢ４−Ｒ４の演算により計算されて格納されたデータを成功的にフェッチすることができながらも、後続の（又は次の）演算は、ＩＦＭ伝達ファブリック接続のための関連付けられた選択とともにＢ２−Ｒ８の減少構成を使用することができる。
【０３２３】
図４Ｇは、先に説明した、すべての減少構成に対するすべてのＩＦＭ伝達ファブリック接続のオプションをサポートするＩＦＭ伝達ファブリック１０４の１つの可能な実装を示す。
このファブリックは、４つのツーウェイ（ｔｗｏ−ｗａｙ）のマルチドロップ（ｍｕｌｔｉ−ｄｒｏｐ）バスで構成され、ツーウェイバスの中の２つは、上位（ｕｐｐｅｒ）ＳＲＡＭバンクセットと上位タイルとの間に位置し、そして他の２つのツーウェイバスは、下位（ｌｏｗｅｒ）ＳＲＡＭバンクセットと下位タイルとの間に位置する。
バスは、レジスタ４１１により円形方式（ｃｉｒｃｕｌａｒ  ｆａｓｈｉｏｎ）で接続されるため、上位バスからのデータは、下位バスに流れることができ、再びリターンすることができる。
説明の明確性のために、ＩＦＭ伝達ファブリック１０４内に存在できる追加のパイプライン（ｐｉｐｅｌｉｎｉｎｇ）レジスタが、図４Ｇでは省略したことに留意しなければならない。
【０３２４】
図４Ｈは、先に説明した、すべての減少構成に対するすべてのＯＦＭ伝達ファブリック接続のオプションをサポートするＯＦＭ伝達ファブリック１０６の１つの可能な実装を示す。
ファブリックは、減少構成（Ｂ２−Ｒ８及びＢ１−Ｒ１６）をサポートするために、４つのツーウェイ１６バイト・ワイドマルチ・ドロップ（１６−ｂｙｔｅ−ｗｉｄｅ  ｍｕｌｔｉ−ｄｒｏｐ）のバスで構成される。
説明の明確性のために、ＯＦＭ伝達ファブリック１０６内に存在できるパイプラインレジスタが、図４Ｈでは省略したことに留意しなければならない。
【０３２５】
減少ファブリック１１１は、Ｒ１（インタータイルの減少がない場合）を除くすべての構成は、例えば、Ｂ８−Ｒ２、Ｂ４−Ｒ４、Ｂ２−Ｒ８、及びＢ１−Ｒ１６について「インタータイル（ｉｎｔｅｒ−ｔｉｌｅ）」の減少（加算器ツリー（１２８Ａ及び１２８Ｂ）により達成されたイントラタイルの減少とは対照的に）を実行することができる。
減少ファブリック１１１は、図５Ａに示したＲＡＡ（ｒｅｄｕｃｅ−ａｎｄ−ａｃｃｕｍｕｌａｔｅ）ノード５２０で構成された再構成可能な加算器ツリーで構成される。
各ＲＡＡノードは、部分的に減少された結果、すなわち、活性化関数のアプリケーション（適用）前の線形結果上で動作（演算）する。
ＲＡＡノードは、そのＲＡＡノードが位置した、同じタイル列ＡＲＵ１６７からの入力又は他のＲＡＡノードからの入力を受信する。
ＲＡＡは、加算器ツリー内で、より上のＲＡＡノードに、又は再びＡＲＵに出力を伝送する。
その後、結果が最終的であれば、ＡＲＵは活性化関数を適用し、そして最終的な結果をＯＦＭ伝達ファブリックに伝送する。
代替的に、結果が部分であれば、ＡＲＵは活性化関数をバイパスしながら、部分結果をＯＦＭ伝達ファブリックに伝送する。
【０３２６】
図５Ｂは、Ｒ１６の構成のために構成された減少ファブリック１１１を示す。
ここで、ＡＲＵモジュール１６７は、部分的に減少された結果（イントラタイル加算器ツリー（１２８Ａ及び１２８Ｂ）からの）を生成し、図１Ｘに示すように、「減少ファブリックに（Ｔｏ  ｒｅｄｕｃｔｉｏｎ  ｆａｂｒｉｃ）」出力を介してこのような部分的に減少された結果をＲＡＡノード５０２の第１のレベルにストリームする。
ＲＡＡノード５０２は、部分的に減少されたデータの１６個のＡＲＵストリームを部分的に減少されたデータの８つのストリームにペア別に（ｐａｉｒｗｉｓｅ）減少させる。
ＲＡＡの第２のレベルのノード５０４は、ＲＡＡノード５０２により生成された８つのストリームを部分的に減少されたデータの４つのストリームにペア別にさらに減少させる。
第３及び第４のレベルのＲＡＡノードは、（最終的な結果を生成するときに）活性化関数アプリケーションのためにタイル（Ｔ１４）のＡＲＵに伝達される、完全に減少されたデータの１つのストリームを生成する減少プロセスを完了し、そしてＯＦＭ伝達ファブリックに出力する。
タイル（Ｔ１４）は、物理的にツリールート（ｔｒｅｅ  ｒｏｏｔ）のＲＡＡノード５０８の近くに位置し、そして図４ＦＢでのタイル（Ｔ１４）のＡＲＵ１６７に対応することを留意しなければならない。
【０３２７】
図５Ｃは、Ｒ８の構成のために構成された減少ファブリック１１１を示す。
Ｒ１６の構成とは異なり、Ｒ８の構成は、２つの加算器ツリー（１つではなく）を含み、各加算器ツリーは、３つのレベル（４つではない）を含む。
第１の加算器ツリーは、タイル（Ｔ０，Ｔ８，Ｔ４，Ｔ１２，Ｔ１０，Ｔ２，Ｔ１４及びＴ６）のＡＲＵからの部分的に減少されたデータを減少させ、そして完全に減少された結果をタイル（Ｔ１２）のＡＲＵに伝達してデータのリターンを完了する。第２の加算器ツリータイル（Ｔ７，Ｔ１５，Ｔ２，Ｔ１１，Ｔ１３，Ｔ５，Ｔ９及びＴ１）のＡＲＵからの部分的に減ら減少されたデータを減少させ、そして完全に減少された結果をタイル（Ｔ１３）のＡＲＵに伝達してデータのリターンを完了する。タイル（Ｔ１２及びＴ１３）は、それぞれ物理的にそれぞれのツリールートのＲＡＡノード５０６の近くに位置し、そして図４ＦＢでのタイル（Ｔ１２及びＴ１３）のＡＲＵ１６７にそれぞれ対応することに留意しなければならない。
【０３２８】
図５Ｄは、４つの加算器ツリーを含む構成Ｒ４を示し、各加算器ツリーの４つのタイルからの部分的に減少された出力を減少させる。
図４ＤＢは、４つのツリールートのノードと関連付けられているＡＲＵの物理的位置を示す。
【０３２９】
図５Ｅは、８つの加算器ツリーを含む構成Ｒ２を示し、各加算器ツリー２つのタイルからの部分的に減少された出力を減少させる。
図４ＣＢは、８つのツリールートのノードと関連付けられているＡＲＵの物理的位置を示す。
【０３３０】
最後に、図５Ｆは、減少ファブリック１１１を必要とせず、ＯＦＭ伝達ファブリックに直接に結果を出力するタイルＡＲＵを含んでいるが、どのような加算器ツリーも含めていない構成Ｒ１を示す。
図４ＢＢは、この場合では、ＡＲＵの物理的位置を示す。
図４ＢＢ、図４ＢＣ、図４ＢＤ、図４ＣＢ、図４ＣＣ、図４ＤＢ、図４ＤＣ、図４ＥＢ、図４ＥＣ、及び図４ＤＢでは、ＡＲＵ１６７の内部の数字は、図５Ｂ〜図５Ｆに示したように、ＲＡＡツリーノードのレベルを示し、ここでレベル０は、構成Ｒ１に対応する（減少ファブリックを使用せずに）。
アキュムレータ１３０Ａ（又は１３０Ｂ）から活性化関数と部分パスに（ビットの範囲の選択ユニット１８７とともに開始）にデータを直接伝送するＡＲＵにおいてＡＲＵマルチプレクサ１７４により構成Ｒ１が実装されるため、図１Ｘに示すように、減少ファブリックをバイパスする。
スパース活性化サポート（ｓｐａｒｓｅ  ａｃｔｉｖａｔｉｏｎ  ｓｕｐｐｏｒｔ）の場合で、減少ファブリックを適切にバイパスするために要求される、いくつかの補助ロジックが一般的な説明の明確性のために図に示していなかったことに留意しなければならない。
【０３３１】
図５Ｇは、ＲＡＡノード（５０２、５０４、５０６、５０８）で構成された減少ファブリック１１１を示す。
それぞれのＲＡＡノードは、物理的に正確に１つのタイルの近くに位置することに再び留意しなければならない。
それぞれのＲＡＡノード５０２は、ノード５０２が位置したタイル列の両タイルから入力を受信する。
タイル列当たり正確に１つのＲＡＡノード５０２がある。
ＲＡＡノード５０８は、ノード５０６からそれの入力を受信し、ノード５０６は、順番にノード５０４からそれの入力を受信し、ノード５０４は順番にノード５０２から入力を受信する。
物理的タイルの数は、「１６」である一方で、１５個のツリーノードがあるため、タイル（Ｔ１２）は、これに関連付けられたＲＡＡノードを含んでいないことに留意しなければならない。
【０３３２】
図５Ａに示すように、各ＲＡＡノードは、アキュムレータ５１８及び加算器５１４を使用して減少された結果を累積することだけでなく、加算器５１２を使用して、２つの入力（Ａ及びＢ）を減少させることを含む２つの機能を有する。
たとえばＩＦＭウェイトサイクリングを開始するために、マルチプレクサ５１６は、累積の開始のときに加算器５１２から減少された結果をアキュムレータ５１８に直接ロードさせる。
マルチプレクサ５１６は、また、例えば、ＩＦＭウェイトサイクリングが、時間に応じて進行するにつれて減少した結果を累積できるようにする。
【０３３３】
圧縮されたフォーマットでのウェイトを格納するのは、特に完全に接続されたレイヤーの計算の間に、ウェイトを格納するのに必要なＳＲＡＭ（及びオフチップＤＤＲ）ストレージの量を減少させ、ウェイトをフェッチすることと関連付けられたＳＲＡＭ（及びオフチップＤＤＲ）の消費電力を低減させ、そしてウェイトローディングの速度を高めるのに役に立つ。
いくつかの実施形態では、アイドル（ｉｄｌｅ）サイクルは、乗算器ユニットウェイトをロードするために使用され得る。
また、一部の実施形態では、ＭＲ列当たりただ１つのウェイトロードバスを示す図１Ｋとは対照的に、複数の垂直ウェイトロードバス１０１は、ウェイトロードを加速化するために使用され得る。
【０３３４】
より具体的には、図４ＡＢで以前に示したように、ウェイトは、各タイル１０２にローカルである４つのＳＲＡＭバンク１０８に格納され、各タイルはすべての４つのバンクを並列的にリードする。
各ＳＲＡＭバンクは、１６個の８ビットウェイトをフェッチする。
各タイルは、８つのＭＲ列を有するため、ウェイトが圧縮されていない場合で活性化レーン当たり１つの８ビットウェイトをロードするために、「（タイル当たり８つのＭＲ列々）／（タイル当たり４つのローカルＳＲＡＭバンク）＝２つのクロックの」が必要である。
各タイルは、また、タイル当たりウェイト圧縮解除ユニット１３８を含み、これは、ＦＣ及びコンボリューションウェイトを圧縮解除するために使用され得る。
例えば、各乗算器ユニットは、１８個のウェイトを含み得、すべてのＭＵウェイトをロードするために、「（ＭＵ当たり１８個のウェイト）×（ウェイトロード当たり２つのクロック）＝３６個のクロックサイクルの」が必要であり得る。
１８個のウェイトをすべて使用していない、より小さなカーネルは、より迅速にロードされ得る。
【０３３５】
ＦＣ計算と同時に行われるウェイトストリーミングは、完全に接続された計算において、スループットを向上させるのに使用されることがあるため、大規模なＦＣの計算中、乗算器の利用率を高く維持することができる。
前述したように、ＦＣ計算は、ウェイトを再使用しない。
従って、このように、ＦＣの計算中、ウェイトを速くストリームする必要がある。
具体的には、すべての乗算器を完全に利用するためには、１のＩＦＭウェイトサイクリングを有するＦＣ計算は、各ＭＵにクロック当たり１つのウェイトを提供することを要求する。
すべての乗算器を完全に利用するためには、２のＩＦＭウェイトサイクリングは、各ＭＵに２つのクロック当たり１つのウェイトを提供することを要求する。
より一般的には、すべての乗算器を完全に利用するためには、ＮのＩＦＭウェイトサイクリングは、各ＭＵ当たりＮクロック当たり１つのウェイトを提供することを要求する。
【０３３６】
多様なディープラーニング研究刊行物によると、完全に接続されたレイヤーのウェイトは、時には２倍以上に圧縮され得る。
このような場合において、２つのクロックに当たり、各ＭＵに１つの圧縮されていないウェイトをロードすることとは対照的に、１つの圧縮されていないウェイトは、単一のクロック当たり、各ＭＵにロードされ得る。
【０３３７】
しかし、追加的に、ＩＦＭデータは、また、ウェイトとともにＳＲＡＭからフェッチされなければならないため、ウェイトをフェッチするのに利用可能なＳＲＡＭの帯域幅を減少させる。
ＳＲＡＭからフェッチされるＩＦＭデータの量は、結局、マッピング減少構成に依存する。
大きな減少数字は、例えば、Ｒ１６は、小さな減少の構成には、例えば、Ｒ１に比べて、より多くのチャンネルを用いてＩＦＭをフェッチすることを要求する。
【０３３８】
すべての６４個のＳＲＡＭバンクが、ＦＣウェイトをフェッチするのに忙しいため、ＳＲＡＭからＩＦＭを同時にリードすることは不可能である。
乗算器の利用率を増加させるためには、ＩＦＭは、すべての６４個のバンクに渡ってスプライス（ｓｐｌｉｃｅ、継がれて）されて格納され得る。
いくつかの実施形態では、ＩＦＭをフェッチするためには、１つのクロックサイクルの間にウェイトリードが停止され、すべての６４個のバンクは、１つのＩＦＭをＳＲＡＭ出力の隣に位置したワンディープ（１−ｄｅｅｐ）キャッシュレジスタ（ｃａｃｈｅ  ｒｅｇｉｓｔｅｒ）にリードさせる。
この後、ＩＦＭは、キャッシュされた６４個の１６バイトのラインからストリームする。
より具体的には、６４個のすべてのバンクから並列に１つのＩＦＭをフェッチすると、ＩＦＭリードの数「Ｒ＝（６４個のＳＲＡＭバンク）×（ブロードキャスト構成番号Ｂ）／（物理的タイルの数）」と同一になるように、一度に十分なデータがフェッチされる。
したがって、図６に示したように、いくつかの実施形態については、完全に接続されたレイヤーの計算のための最大の乗算器の利用率は、ブロードキャスト構成番号Ｂの関数として「Ｒ／（１＋Ｒ）」に基づいて計算される。
【０３３９】
先に述べたように、ローカル制御ユニット（１４２、１４４）だけではなく、グローバル制御１４０は、多様な構成レジスタを含み得る。
いくつかの実施形態では、例えば、ニューラルプロセッサが１つの演算から他の演算に遷移（ｔｒａｎｓｉｔｉｏｎ）するか、又は１つのＳＲＡＭバンクのセットがデータを消尽し、そしてＩＦＭ伝達ファブリックが、他のＳＲＡＭバンクセットからＩＦＭデータをオン・ザ・フライ（遅延なし）ストリームするように切り替えなければならないように、このような構成レジスタの中の一部のコンテンツは、ニューラルプロセッサ構成を即時に変更するためにオン・ザ・フライに切り替えることができる。
一般的に知られているデザインの慣行（実務）に応じて、このようなオン・ザ・フライの再構成は、構成レジスタをダブルバッファ（ｄｏｕｂｌｅ−ｂｕｆｆｅｒｅｄ）されるようにすることにより、達成されることがあり、２つのバッファの間を切り替えることで、新しい構成を適用することができる。
図１Ａに示したように、中央制御１１０は、ＡＸＩバスを介してＣＰＵから構成データを受信することができ、その構成データをユーティリティバス１１２に伝達することができ、ユーティリティバス１１２は、ＡＲＵバイアスレジスタ１９５、スケールレジスタ１９１、活性化関数１９７の構成レジスタなどを含む多様な他のレジスタだけでなく、制御ロジック（１４０、１４２、及び１４４のような）の構成レジスタにＣＰＵからの構成値を伝送及びロードすることができる。
必要に応じて、多様な時間で多数のダブルバッファ（ｄｏｕｂｌｅ−ｂｕｆｆｅｒ）されたレジスタの切り替えを伴うオン・ザ・フライ構成の変更を調整するために、ユーティリティバス１１２は、構成レジスタの値だけでなく、ダブルバッファされたレジスタが、その構成を有効に転換しなければならない時間（クロックカウント）をロードすることができる。
【０３４０】
図１Ａは、ＡＸＩスレーブインターフェースをそれぞれ含むＳＲＡＭバンクセット１０９を示し、ＡＸＩスレーブインターフェースは、ＣＰＵがＩＦＭ及びウェイトテンソルをライトさせ、そしてＯＦＭ結果を再びリードできるようにする。
ＳＲＡＭバンクセットは、ローカルウェイトロードの接続だけでなく、ＩＦＭ及びＯＦＭの伝達ファブリックから来るＩ／Ｏ要請をプロセッシングするため、ＣＰＵが結果を待っている間に、遅延なくニューラルネットワークの計算が持続されるようにするためには、ＡＸＩインターフェースを介してＣＰＵ  Ｉ／Ｏ要請は、調停され（ａｒｂｉｔｒａｔｅｄ）、そしてより低い優先順位に割り当てられる。
【０３４１】
本明細書で使用するように、用語「マルチプレクサ（ｍｕｌｔｉｐｌｅｘｅｒ）」及び「デマルチプレクサ（ｄｅｍｕｌｔｉｐｌｅｘｅｒ）」は、相互交換的に使用される。
各用語は、一側（「マルチポート（ｍｕｌｔｉ−ｐｏｒｔ）」側）上で複数のデータ端子（例えば、データ入力又はデータ出力）、及び他側（「シングルポート（ｓｉｎｇｌｅ−ｐｏｒｔ）」側）上で、単一のデータ端子（例えば、データ出力又はデータ入力）を有する切替可能な装置を意味し、その装置は、その装置の制御入力で受信された制御信号に応じて選択された、一側に複数のデータ端子を接続し、他側に単一のデータ端子を接続するように構成される。
【０３４２】
用語「プロセッシングユニット」は、本明細書では、データ又はデジタル信号をプロセッシングするのに使用されるハードウェア、ファームウェア、及びソフトウェアの任意の組み合わせを含むように使用される。
プロセッシングユニットのハードウェアは、例えば、ＡＳＩＣ（ａｐｐｌｉｃａｔｉｏｎ  ｓｐｅｃｉｆｉｃ  ｉｎｔｅｇｒａｔｅｄ  ｃｉｒｃｕｉｔ）、一般的な、又は特別な目的の中央処理装置（ＣＰＵ）、デジタル信号プロセッサ（ＤＳＰ）、グラフィックスプロセッシングユニット（ＧＰＵ）、及びフィールドプログラマブルゲートアレイ（ＦＰＧＡ）のようなプログラム可能なロジック装置を含み得る。
本明細書で使用する、プロセッシングユニットでは、それぞれの機能は、その機能を実行するように構成、すなわち、ハードワイヤ（ｈａｒｄ−ｗｉｒｅ）されたハードウェア、又は非一時記憶媒体に格納された命令語を実行するように構成されたＣＰＵのような、より一般的な目的のハードウェアにより実行される。
プロセッシングユニットは、単一のプリント回路基板（ＰＣＢ）上に製造されるか、又は複数の相互接続されたＰＣＢにわたって分散され得る。
プロセッシングユニットは、他のプロセッシングユニットを含み得る。
例えば、プロセッシングユニットは、ＰＣＢ上で互いに接続された２つのプロセッシングユニット、ＦＰＧＡ、及びＣＰＵを含み得る。
【０３４３】
たとえば、用語である「第１の」、「第２の」、「第３の」などは、本明細書で多様な要素、コンポーネント、領域、レイヤー、及び／又はセクションを説明するために使用するとしても、このような要素、コンポーネント、領域、レイヤー、及び／又はセクションは、このような用語により限定されてはいけないと理解されるだろう。
このような用語は、１つの要素、コンポーネント、領域、レイヤー又はセクションを他の要素、コンポーネント、領域、レイヤー、又はセクションと区別するためにだけに使用する。
したがって、本発明の思想及び範囲を逸脱せずに、本明細書で議論されている第１の要素、コンポーネント、領域、レイヤー、又はセクションは、第２の要素、コンポーネント、領域、レイヤー、又はセクションと称され得る。
【０３４４】
図面に示すように、１つの要素又は特徴と他の要素又は特徴との関係を説明するために「下（ｂｅｎｅａｔｈ）」、「以下（ｂｅｌｏｗ）」、「低（ｌｏｗｅｒ）」、「真下（ｕｎｄｅｒ）」、「上（ａｂｏｖｅ）」、「上部（ｕｐｐｅｒ）」などのような空間的に相対的な用語は、本明細書で説明の便宜のために使用する。
図面に示した方向に加えて、このような空間的に相対的な用語は、使用中又は演算中の装置の他の方向を含むように意図されたものと理解されるだろう。
たとえば、図面内の装置が裏返されたら、他の要素又は特徴の「下」又は「以下」又は「真下」に記述された要素は、他の要素又は特徴の「上」に指向されるだろう。
つまり、「以下」及び「下」という例としての用語は、上及び下の方向の両方を含み得る。
装置は、別の方法で配向（例えば、９０度回転又は他の方向に回転）され得る。
したがって、本明細書で使用される空間的に相対的な説明は、それに応じて解釈されるべきである。
さらに、１つのレイヤーが２つのレイヤー「の間」と言及されるとき、それは２つのレイヤーの間のレイヤーであり得るか、又は１つ以上の介在する（ｉｎｔｅｒｖｅｎｉｎｇ）レイヤーが存在できることを、また理解するだろう。
【０３４５】
本明細書で使用する用語は、単に特定の実施形態を説明するために使用したものであり、本発明の概念を限定することは意図されない。
本明細書で使用したように、用語の「実質的に（ｓｕｂｓｔａｎｔｉａｌｌｙ）」、「約（ａｂｏｕｔ）」、及びこれに類似した用語は、程度の用語ではなく、推定（ａｐｐｒｏｘｉｍａｔｉｏｎ）の用語として使用する。
用語は、本発明が属する技術分野における通常の技術者により認識される測定又は計算された値の固有のばらつきを説明するためのものである。
【０３４６】
文脈上明らかに別の方法で指示していると認定されない限り、単数の表現は、複数の表現を含む。
本明細書で使用するとき、「含む（ｃｏｍｐｒｉｓｅｓ）」及び／又は「含む（ｃｏｍｐｒｉｓｉｎｇ）」という用語は、言及された特徴、整数、段階、演算、要素、及び／又はコンポーネントの存在を特定するが、１つ以上の他の特徴、整数、段階、演算、要素、コンポーネント、及び／又はこれらのグループの存在若しくは追加を排除しない。
本明細書で使用した、用語の「及び／又は」は、１つ以上の関連・列挙された項目の任意かつすべての組み合わせを含む。
要素のリストの前にあるときに、「少なくとも１つ」のような表現は、全要素のリストを修正し、リストの個々の要素を変更しない。
なお、本発明の要旨の実施形態を説明するとき、「できる（ｍａｙ）」の使用は、「本開示の１つ以上の実施形態」を意味する。
また、「例としての（ｅｘｅｍｐｌａｒｙ）」という用語は、例示又は図示を意味するものと意図される。
本明細書で使用したように、用語の「使用する（ｕｓｅ）」、「使用している（ｕｓｉｎｇ）」、及び「使用された（ｕｓｅｄ）」は、それぞれ用語の「利用する（ｕｔｉｌｉｚｅ）」、「利用している（ｕｔｉｌｉｚｉｎｇ  ）」、及び「利用された（ｕｔｉｌｉｚｅｄ）」と同義語であるとそれぞれみなされる。
【０３４７】
要素又はレイヤーが、他の要素又はレイヤーの「上に」、「に接続された」、「に結合された」又は「に隣接した」と述べられるとき、他の要素又はレイヤーに直接接続されたり、接続されたり、結合されたり、又は隣接することができたりして、１つ以上の介在要素又はレイヤーが存在しているものと理解され得る。
対照的に、要素又はレイヤーが他の要素又はレイヤーの「上に直接」、「に直接接続されて」、「に直接結合されて」又は「に直接隣接した」ものとして言及されるとき、介在要素又はレイヤーが存在しない。
【０３４８】
本明細書で引用した任意の数値範囲は、引用した範囲内に含まれている同じ数値精度のすべてのサブ範囲（ｓｕｂ−ｒａｎｇｅ）を含むものと意図される。
たとえば、「１．０〜１０．０」の範囲は、記載された最小値１．０と記載されて最大値１０．０との間の、すなわち、最小値が１．０以上であり、最大値が１０．０以下である、例えば、２．４〜７．６のすべてのサブ範囲を含むように意図される。
ここで引用した任意の最大値の限定は、その中に含まれているすべての下位数値限定を含むように意図され、本明細書に引用された任意の最小の数値の制限は、それに含まれているすべてのより高い数値限定を含むように意図される。
【０３４９】
いくつかの実施形態は、次のナンバリングされた条項（ｃｌａｕｓｅ）の第１セットの特徴を含む。
第１セットの第１の条項）プロセッサが提供される。前記プロセッサは第１のタイル（ｔｉｌｅ）、第２のタイル、メモリ、及びバスを含む。前記バスは前記メモリ、前記第１のタイルと前記第２のタイルに接続される。前記第１のタイルは第１のウェイトレジスタ、第２のウェイトレジスタ、活性化バッファ、第１の乗算器、及び第２の乗算器を含む。前記第１のタイルはウェイトカーネルを用いて活性化配列のコンボリューションを実行するように構成される。前記コンボリューションを実行する方法は、活性化配列の第１のサブアレイと前記カーネルとのテンソル積を形成する段階と、活性化アレイの第２のサブアレイと前記カーネルとのテンソル積（ｔｅｎｓｏｒ  ｐｒｏｄｕｃｔ）を形成する段階と、活性化アレイの第３のサブアレイと前記カーネルとのテンソル積を形成する段階と、を順に備える。前記第２のサブアレイは、第１の方向にｎ個の要素により前記第１のサブアレイからオフセットされ、ｎは正の整数である。前記第３のサブアレイは、前記第１の方向と垂直である第２の方向に１つの要素により前記第２のサブアレイからオフセットされる。
【０３５０】
第１セットの第２の条項）前記第１の条項の前記プロセッサで、前記第３のサブアレイを用いて前記カーネルのテンソル積を形成した後、前記コンボリューションを実行する方法は、前記活性化アレイの第４のサブアレイと前記カーネルとのテンソル積を形成する段階と、活性化アレイの第５のサブアレイと前記カーネルとのテンソル積を形成する段階と、を順に備える。第４のサブアレイは、第１の方向と反対である第３の方向にｍ個のアレイ要素により第３のサブアレイからオフセットされる。ｍは正の整数である。第５のサブアレイは、第２の方向に１つのアレイ要素により第４のサブアレイからオフセットされる。
【０３５１】
第１セットの第３の条項）前記第２の条項の前記プロセッサで、ｍはｎと同じである。
第１セットの第４の条項）前記第３の条項の前記プロセッサで、ｎは１と同じである。
第１セットの第５の条項）前記第１の条項の前記プロセッサで、前記第１のサブアレイと前記カーネルとの積を形成する段階後、前記コンボリューションを実行する方法は、活性化アレイの（ｎ−１）個それぞれのサブアレイを用いてカーネルの（ｎ−１）積（ｐｒｏｄｕｃｔｓ）を形成する段階と、を順に含む。（ｎ−１）積の中でｋ番目の積のサブアレイは、１番目の方向で（ｋ＋１）アレイ要素により１番目のサブアレイからオフセットされる。
【０３５２】
第１セットの第６の条項）前記第５の条項の前記プロセッサで、前記プロセッサは、前記活性化バッファに接続され、そして活性化バッファに活性化を供給するように構成されたキャッシュをさらに含む。前記キャッシュは活性化「Ｈ＋（Ｈ＋ｎ）×（Ｗ−１）−１」を格納するのに十分なサイズを有する。Ｈは第１の方向のカーネルのサイズであり、Ｗは第２の方向のカーネルのサイズである。
第１セットの第７の条項）前記第１の条項の前記プロセッサで、前記活性化バッファは、第１の乗算器に接続された第１のキュー（ｑｕｅｕｅ）及び第２の乗算器に接続された第２のキューを含む。第１のキューは、第１のレジスタ、及び第１のレジスタに隣接した第２のレジスタを含む。第１のレジスタは、第１のキューの出力レジスタである。第１のタイルは、第１の状態において、第１の乗算器で第１のキューの出力レジスタからの活性化と第１のウェイトとを乗じ、第２の状態において、第１の乗算器で第１のウェイトを第１のキューの第２のレジスタからの活性化により乗じるように、さらに構成される。
【０３５３】
第１セットの第８の条項）前記第７の条項の前記プロセッサにおいて、前記第２の状態では、前記第１のキューの出力レジスタは、ゼロ（ｚｅｒｏ）を含む。
第１セットの第９の条項）前記第７の条項の前記プロセッサにおいて、前記プロセッサは、第１の加算器をさらに含む。前記第１の加算器は、前記第１の状態で、前記第１の乗算器の出力及び前記第２の乗算器の出力に接続され、前記第１の乗算器の出力から受信した積及び前記第２の乗算器の出力から受信した積を加算する。
第１セットの第１０の条項）前記第９の条項の前記プロセッサにおいて、前記プロセッサは、第２の加算器をさらに含む。前記第２の加算器は、前記第２の状態で前記第１の乗算器の出力に接続されるように構成される。
【０３５４】
第１セットの第１１の条項）プロセッシング回路を用いて計算するための方法が提供される。前記プロセッシング回路は、第１のタイル、第２のタイル、メモリ、及びバスを含む。前記バスは、前記メモリ、前記第１のタイル及び前記第２のタイルに接続される。前記第１のタイルは、第１のウェイトレジスタ、第２のウェイトレジスタ、活性化バッファ、第１の乗算器、及び第２の乗算器を含む。前記方法は、ウェイトカーネルと活性化配列とのコンボリューションを実行する方法を含む。前記コンボリューションを実行する方法は、活性化アレイの第１のサブアレイと前記カーネルとの前記テンソル積を形成する段階と、活性化アレイの第２のサブアレイと前記カーネルとのテンソル積を形成する段階と、活性化アレイの第３のサブアレイと前記カーネルとのテンソル積を形成する段階と、を順に備える。前記第２のサブアレイは、第１の方向にｎ個の要素により前記第１のサブアレイからオフセットされ、ｎは正の整数である。前記第３のサブアレイは、前記第１の方向と垂直である第２の方向に１つの要素により前記第２のサブアレイからオフセットされる。
【０３５５】
第１セットの第１２の条項）前記第１１条項の前記方法では、前記第３のサブアレイと前記カーネルとのテンソル積を形成した後、前記コンボリューションを実行する方法は、前記活性化アレイの第４のサブアレイと前記カーネルとのテンソル積を形成する段階と、活性化アレイの第５のサブアレイとカーネルとのテンソル積を形成する段階と、を順に備える。第４のサブアレイは、第１の方向と反対である第３の方向にｍ個のアレイ要素だけ第３のサブアレイからオフセットされる。ｍは正の整数である。第５のサブアレイは、第２の方向に１つのアレイ要素だけ第４のサブアレイからオフセットされる。
第１セットの第１３の条項）前記第１２の条項の前記方法では、ｍはｎと同じである。
第１セットの第１４の条項）前記第１３の条項の前記方法では、ｎは１と同じである。
【０３５６】
第１セットの第１５の条項）前記第１１の条項の前記方法では、前記第１のサブアレイと前記カーネルとの積を形成する段階後、前記コンボリューションを実行する方法は、活性化アレイの（ｎ−１）個のそれぞれのサブアレイと前記カーネルとの（ｎ−１）個の積（ｐｒｏｄｕｃｔｓ）を形成する段階と、を順に含む。（ｎ−１）積の中でｋ番目の積のサブアレイは、１番目の方向で（ｋ＋１）アレイ要素だけ１番目のサブアレイからオフセットされる。
第１セットの第１６の条項）前記第１５の条項の前記方法では、前記プロセッシング回路は、前記活性化バッファに接続され、そして活性化バッファに活性化を供給するように構成されたキャッシュをさらに含む。前記キャッシュは活性化「Ｈ＋（Ｈ＋ｎ）×（Ｗ−１）−１」を格納するのに十分なサイズを有する。Ｈは第１の方向のカーネルのサイズであり、Ｗは第２の方向のカーネルのサイズである。
【０３５７】
第１セットの第１７の条項）前記第１１の条項の前記方法では、前記活性化バッファは、第１の乗算器に接続された第１のキュー（ｑｕｅｕｅ）及び第２の乗算器に接続された第２のキューを含む。第１のキューは、第１のレジスタ、及び第１のレジスタに隣接した第２のレジスタを含む。第１のレジスタは、第１のキューの出力レジスタである。第１のタイルは、第１の状態において、第１の乗算器で第１のキューの出力レジスタからの活性化と第１のウェイトとを乗じ、第２の状態において第１の乗算器で第１のウェイトを第１のキューの第２のレジスタからの活性化に乗じるように、さらに構成される。
第１セットの第１８の条項）前記第１７の条項の前記方法において、前記第２の状態では、前記第１のキューの出力レジスタはゼロ（ｚｅｒｏ）を含む。
第１セットの第１９の条項）前記第１７の条項の前記方法では、前記プロセッシング回路は、第１の加算器をさらに含む。前記方法は、前記第１の状態で、前記第１の加算器を前記第１の乗算器の出力及び前記第２の乗算器の出力に接続し、前記第１の加算器が前記第１の乗算器の出力から受信した結果と、前記第２の乗算器の出力から受信した結果と、を加算する段階をさらに含む。
【０３５８】
第１セットの第２０の条項）プロセッシングのための手段として計算するための方法が提供される。プロセッシングのための前記手段は、第１のタイル、第２のタイル、メモリ、及びバスを含む。前記バスは、前記メモリ、前記第１のタイル及び前記第２のタイルに接続される。前記第１のタイルは、第１のウェイトレジスタ、第２のウェイトレジスタ、活性化バッファ、第１の乗算器、及び第２の乗算器を含む。前記方法は、ウェイトカーネルと活性化アレイとのコンボリューションを実行する方法を含む。前記コンボリューションを実行する方法は、活性化アレイの第１のサブアレイと前記カーネルとの前記テンソル積を形成する段階と、活性化アレイの第２のサブアレイと前記カーネルとのテンソル積を形成する段階と、活性化アレイの第３のサブアレイと前記カーネルとのテンソル積を形成する段階と、を順に備える。前記第２のサブアレイは、第１の方向にｎ個の要素だけ前記第１のサブアレイからオフセットされ、ｎは正の整数である。前記第３のサブアレイは、前記第１の方向と垂直である第２の方向に１つの要素だけ前記第２のサブアレイからオフセットされる。
【０３５９】
いくつかの実施形態は、次のナンバリングされた条項（ｃｌａｕｓｅ）の第２セットの特徴を含む。
第２セットの第１の条項）プロセッサが提供される。前記プロセッサは、第１のタイル、第２のタイル、メモリ、及びバスを含む。前記バスは、前記メモリ、前記第１のタイル、及び前記第２のタイルに接続される。前記第１のタイルは、第１のウェイトレジスタ、第２のウェイトレジスタ、活性化バッファ、第１の乗算器、及び第２の乗算器を含む。前記プロセッサは、第１のカーネルウェイトと活性化アレイとの第１のコンボリューションを実行するように構成される。前記第１のコンボリューションを実行する方法は、前記活性化アレイの第１のサブアレイを前記第１のタイル及び前記第２のタイルにブロードキャストする段階と、第１のテンソル積を形成する段階と、前記メモリ内に前記第１のテンソル積を格納する段階と、前記活性化アレイの第２のサブアレイを前記第１のタイル及び前記第２のタイルにブロードキャストする段階と、第２のテンソル積を形成する段階と、を備える。前記第１のテンソル積は前記活性化アレイの前記第１のサブアレイと前記第１のカーネルウェイトの第１のサブアレイとのテンソル積である。前記第２のテンソル積は前記活性化アレイの前記第２のサブアレイと前記第１のカーネルウェイトの第２のサブアレイとのテンソル積である。
【０３６０】
第２セットの第２の条項）前記第１の条項の前記プロセッサにおいて、前記第１のタイルは、複数のウェイトが圧縮された形でエンコードされたデータワードを圧縮解除して、第１のウェイト及び第２のウェイトを抽出し、第１のウェイトを第１のウェイトレジスタにフィード（ｆｅｅｄ）し、そして第２のウェイトを第２のウェイトレジスタにフィードするように構成されたウェイト圧縮解除ユニットと、をさらに含む。
第２セットの第３の条項）前記第１の条項の前記プロセッサにおいて、第１のタイルはまた、第２のカーネルウェイトと活性化アレイとの第２のコンボリューションを実行するように、さらに構成される。前記第２のコンボリューションを実行する方法は、活性化アレイの第１のサブアレイと第２のカーネルの第１の部分とのテンソル積を形成する段階と、活性化アレイの第１のサブアレイと第２のカーネルの第２の部分とのテンソル積を形成する段階と、活性化アレイの第２のサブアレイと第２のカーネルの第１の部分とのテンソル積を形成する段階と、を順に備える。第２のカーネルの第１の部分は、第１のウェイトレジスタに格納されたウェイトを含み、第２のカーネルの第２の部分は、第２のウェイトレジスタに格納されたウェイトを含み、そして前記第２のカーネルの第１の部分は、第１のウェイトレジスタに格納されたウェイトを含む。
【０３６１】
第２セットの第４の条項）前記第１の条項の前記プロセッサにおいて、前記活性化バッファは、第１の乗算器に接続された第１のキュー（ｑｕｅｕｅ）及び第２の乗算器に接続された第２のキューを含む。第１のキューは、第１のレジスタ及び第１のレジスタに隣接した第２のレジスタを含む。第１のレジスタは、第１のキューの出力レジスタである。第１のタイルは、第１の状態において、第１の乗算器で第１のキューの出力レジスタからの活性化と第１のウェイトとを乗じ、第２の状態において第１の乗算器で第１のウェイトを第１のキューの第２のレジスタからの活性化に乗じるように、さらに構成される。
第２セットの第５の条項）前記第４の条項の前記プロセッサにおいて、前記第２の状態では、前記第１のキューの出力レジスタは、ゼロを含む。
第２セットの第６の条項）前記第４の条項の前記プロセッサにおいて、前記プロセッサは、第１の加算器をさらに含む。前記第１の加算器は、前記第１の状態で、前記第１の乗算器の出力及び前記第２の乗算器の出力に接続され、前記第１の乗算器の出力から受信した結果と前記第２の乗算器の出力から受信した結果とを加算する。
【０３６２】
第２セットの第７の条項）前記第６の条項の前記プロセッサにおいて、前記プロセッサは、第２の加算器をさらに含む。前記第２の加算器は、前記第２の状態で前記第１の乗算器の出力に接続されるように構成される。
第２セットの第８の条項）前記第７の条項の前記プロセッサにおいて、前記プロセッサは、第１の加算器に接続された第１のアキュムレータ（ａｃｃｕｍｕｌａｔｏｒ）と、第２の加算器に接続された第２のアキュムレータと、をさらに備える。第１のアキュムレータはレジスタを含む。第１の状態では、前記第１のアキュムレータは、前記第１の加算器から受信した合計を前記第１のアキュムレータのレジスタの値に加えて、第１のアキュムレータの累積された値を形成し、そして第１のアキュムレータのレジスタに第１のアキュムレータの累積された値を格納する。
【０３６３】
第２セットの第９の条項）前記第８の条項の前記プロセッサにおいて、第２のアキュムレータはレジスタを含む。第２の状態では、前記第２のアキュムレータは、前記第２の加算器から受信した合計を前記第２のアキュムレータのレジスタの値に加えて、第２のアキュムレータの累積された値を形成し、そして第２のアキュムレータのレジスタに第２のアキュムレータの累積された値を格納する。
第２セットの第１０の条項）前記第８の条項の前記プロセッサにおいて、前記プロセッサは、第１のキューの出力レジスタがゼロを含むか否かを決定し、第１のキューの出力レジスタがゼロを含むという決定に応答して、第１のタイルが第２の状態で演算するようにする活性化ゼロスキップ制御回路をさらに含む。
【０３６４】
第２セットの第１１の条項）プロセッシング回路で計算する方法が提供される。前記プロセッシング回路は、第１のタイル、第２のタイル、メモリ、及びバスを含む。前記バスは、前記メモリ、前記第１のタイル、及び前記第２のタイルに接続される。前記第１のタイルは、第１のバッファモジュール、第２のバッファモジュール、活性化バッファ、第１の乗算器、及び第２の乗算器を含む。前記方法は、第１のカーネルウェイトと活性化アレイとの第１のコンボリューションを実行するように構成される。前記第１のコンボリューションを実行する方法は、前記活性化アレイの第１のサブアレイを前記第１のタイル及び前記第２のタイルにブロードキャストする段階と、第１のテンソル積を形成する段階と、前記メモリ内に前記第１のテンソル積を格納する段階と、前記活性化アレイの第２のサブアレイを前記第１のタイル及び前記第２のタイルにブロードキャストする段階と、第２のテンソル積を形成する段階と、第１のテンソル積と第２のテンソル積と加算する段階と、を備える。前記第１のテンソル積は前記活性化アレイの前記第１のサブアレイと、第１のカーネルウェイトの第１のサブアレイとのテンソル積である。前記第２のテンソル積は前記活性化アレイの前記第２のサブアレイと、第１のカーネルウェイトの第２のサブアレイとのテンソル積である。
【０３６５】
第２セットの第１２の条項）前記第１１の条項の前記方法では、前記第１のタイルは、ウェイトの圧縮解除ユニットをさらに含む。前記方法は、前記ウェイト圧縮解除ユニットは、複数のウェイトが圧縮された形でエンコードされたデータワードを圧縮解除して、第１のウェイト及び第２のウェイトを抽出する段階と、第１のウェイトを第１のウェイトレジスタにフィードする段階と、第２のウェイトを第２のウェイトレジスタにフィードする段階と、をさらに備える。
第２セットの第１３の条項）前記第１１の条項の前記方法では、前記方法は、ウェイトの第２のカーネルと活性化アレイとの第２のコンボリューションを実行する方法をさらに含む。前記第２のコンボリューションを実行する方法は、活性化アレイの第１のサブアレイと第２のカーネルの第１の部分とのテンソル積を形成する段階と、活性化アレイの第１のサブアレイと第２のカーネルの第２の部分とのテンソル積形成する段階と、活性化アレイの第２のサブアレイと第２のカーネルの第１の部分とのテンソル積を形成する段階と、を順に備える。第２のカーネルの第１の部分は、第１のウェイトレジスタに格納されたウェイトを含み、第２のカーネルの第２の部分は、第２のウェイトレジスタに格納されたウェイトを含み、そして前記第２のカーネルの第１の部分は、第１のウェイトレジスタに格納されたウェイトを含む。
【０３６６】
第２セットの第１４の条項）前記第１１の条項の前記方法では、前記活性化バッファは、第１の乗算器に接続された第１のキュー（ｑｕｅｕｅ）及び第２の乗算器に接続された第２のキューを含む。第１のキューは、第１のレジスタ、及び第１のレジスタに隣接した第２のレジスタを含む。第１のレジスタは、第１のキューの出力レジスタである。第１のタイルは、第１の状態で、第１の乗算器で第１のキューの出力レジスタからの活性化と第１のウェイトとを乗じ、第２の状態で第１の乗算器で第１のウェイトと、第１のキューの第２のレジスタからの活性化とを乗じるように、さらに構成される。
第２セットの第１５の条項）前記第１４の条項の前記方法において、前記第２の状態では、前記第１のキューの出力レジスタは、ゼロを含む。
第２セットの第１６の条項）前記第１４の条項の前記方法では、前記プロセッシング回路は、第１の加算器をさらに含む。前記方法は、前記第１の状態で、前記第１の加算器を前記第１の乗算器の出力及び前記第２の乗算器の出力に前記第１のキューから接続する段階と、前記第１の加算器が前記第１の乗算器の出力から受信した結果及び前記第２の乗算器の出力から受信した結果を加算する段階と、をさらに備える。
【０３６７】
第２セットの第１７の条項）前記第１６の条項の前記方法では、前記プロセッシング回路は、第２の加算器をさらに含む。前記方法は、前記第２の状態で前記第２の加算器を前記第１の乗算器の出力に接続する段階とをさらに含む。
第２セットの第１８の条項）前記第１７の条項の前記方法では、前記プロセッシング回路は、第１の加算器に接続された第１のアキュムレータ（ａｃｃｕｍｕｌａｔｏｒ）、及び第２の加算器に接続された第２のアキュムレータをさらに含む。第１のアキュムレータはレジスタを含む。前記方法は、第１の状態では、前記第１のアキュムレータが前記第１の加算器から受信した合計を前記第１のアキュムレータのレジスタの値に加算する段階と、第１のアキュムレータの累積された値を形成する段階と、前記第１のアキュムレータが第１のアキュムレータのレジスタに第１のアキュムレータの累積された値を格納する段階と、をさらに備える。
第２セットの第１９の条項）前記第１８の条項の前記方法では、第２のアキュムレータはレジスタを含む。前記方法は、第２の状態では、前記第２のアキュムレータが前記第２の加算器から受信した合計を前記第２のアキュムレータのレジスタの値に加算する段階と、第２のアキュムレータの累積された値を形成する段階と、前記第２のアキュムレータが第２のアキュムレータのレジスタに第２のアキュムレータの累積された値を格納する段階と、をさらに備える。
【０３６８】
第２セットの第２０の条項）プロセッシングのための手段を用いて計算する方法が提供される。前記プロセッシングのための手段は、第１のタイル、第２のタイル、メモリ、及びバスを含む。前記バスは、前記メモリ、前記第１のタイル、及び前記第２のタイルに接続される。前記第１のタイルは、第１のバッファモジュール、第２のバッファモジュール、活性化バッファ、第１の乗算器、及び第２の乗算器を含む。前記方法は、第１のカーネルウェイトと活性化アレイとの第１のコンボリューションを実行するように構成される。前記第１のコンボリューションを実行する方法は、前記活性化アレイの第１のサブアレイを前記第１のタイル及び前記第２のタイルにブロードキャストする段階と、第１のテンソル積を形成する段階と、前記メモリ内に前記第１のテンソル積を格納する段階と、前記活性化アレイの第２のサブアレイを前記第１のタイル及び前記第２のタイルにブロードキャストする段階と、第２のテンソル積を形成する段階と、前記第１のテンソル積と前記第２のテンソル積を加算する段階と、を備える。前記第１のテンソル積は前記活性化アレイの前記第１のサブアレイと第１のカーネルウェイトの第１のサブアレイとのテンソル積である。前記第２のテンソル積は前記活性化アレイの前記第２のサブアレイと第１のカーネルウェイトの第２のサブアレイとのテンソル積である。
【０３６９】
いくつかの実施形態は、次のナンバリングされた条項（ｃｌａｕｓｅ）の第３セットの特徴を含む。
第３セットの第１の条項）プロセッサが提供される。前記プロセッサは、第１のタイル、第２のタイル、メモリ、入力バス及び出力バスを含む。前記入力バスはメモリ、第１のタイル及び第２のタイルに接続される。前記第１のタイルは、第１のウェイトレジスタ、第２のウェイトレジスタ、活性化バッファ、第１の乗算器及び第２の乗算器を含む。前記第１のタイルは、ウェイトのカーネルで活性化アレイの第１のコンボリューションを実行するように構成される。前記メモリは、第１のメモリバンクのセット及び第２のメモリバンクのセットを含む。前記入力バスは、第１の方向にデータを伝播するための第１のセグメントバスと、第１の方向とは反対方向である第２の方向にデータを伝播するための第２のセグメントバスと、を備える。前記第１のセグメントバスは、第１のスイッチブロック及び第２のスイッチブロックを含む。前記第１のスイッチブロックは、第１のタイル及び第１のメモリバンクのセットに接続される。前記第２のスイッチブロックは、第２のタイル及び第２のメモリバンクのセットに接続される。前記第２のセグメントバスは、第３のスイッチブロック及び第４のスイッチブロックを含む。前記第３のスイッチブロックは、第１のタイル及び第１のメモリバンクのセットに接続される。前記第４のスイッチブロックは、第２のタイル及び第２のメモリバンクのセットに接続される。前記第１のスイッチブロックの入力は、第２のスイッチブロックの出力に接続される。前記第３のスイッチブロックの出力は、第４のスイッチブロックの入力に接続される。
【０３７０】
第３セットの第２の条項）前記第１の条項の前記プロセッサにおいて、第１のバスの状態では、第１のセグメントバスは、第１のメモリバンクのセットを、第１のスイッチブロックを介して、第１のタイルに接続し、第２のスイッチブロックを介して第２のメモリバンクのセットを第２のタイルに接続するように構成される。
第３セットの第３の条項）前記第２の条項の前記プロセッサにおいて、第２のバスの状態では、第１のセグメントバスは、第２のメモリバンクのセットを第１のスイッチブロック及び第２のスイッチブロックを介して、第１のタイルに接続し、第２のスイッチブロックを介して、第２のメモリバンクのセットを第２のタイルに接続するようにさらに構成される。
第３セットの第４の条項）前記第１の条項の前記プロセッサにおいて、前記活性化バッファは、第１の乗算器に接続された第１のキュー（ｑｕｅｕｅ）及び第２の乗算器に接続された第２のキューを含む。第１のキューは、第１のレジスタ、及び第１のレジスタに隣接した第２のレジスタを含む。第１のレジスタは、第１のキューの出力レジスタである。第１のタイルは、第１の状態で、第１の乗算器で第１のキューの出力レジスタからの活性化と第１のウェイトとを乗じ、第２の状態において第１の乗算器で第１のウェイトを第１のキューの第２のレジスタからの活性化と乗じるように、さらに構成される。
【０３７１】
第３セットの第５の条項）前記第４の条項の前記プロセッサにおいて、前記第２の状態では、前記第１のキューの出力レジスタは、ゼロを含む。
第３セットの第６の条項）前記第４の条項の前記プロセッサにおいて、前記プロセッサは、第１の加算器をさらに含む。前記第１の加算器は、第１の状態で、前記第１の乗算器の出力及び前記第２の乗算器の出力に接続され、前記第１の乗算器の出力から受信した積、及び前記第２の乗算器の出力から受信した積を加算する。
第３セットの第７の条項）前記第６の条項の前記プロセッサにおいて、前記プロセッサは、第２の加算器をさらに含む。前記第２の加算器は、前記第２の状態で前記第１の乗算器の出力に接続されるように構成される。
【０３７２】
第３セットの第８の条項）前記第７の条項の前記プロセッサにおいて、前記プロセッサは、第１の加算器に接続された第１のアキュムレータ（ａｃｃｕｍｕｌａｔｏｒ）、及び第２の加算器に接続された第２のアキュムレータをさらに含む。第１のアキュムレータレジスタを含む。第１の状態では、前記第１のアキュムレータは、前記第１の加算器から受信した合計を前記第１のアキュムレータのレジスタの値に加えて、第１のアキュムレータの累積された値を形成し、そして第１のアキュムレータのレジスタに第１のアキュムレータの累積された値を格納する。
第３セットの第９の条項）前記第８の条項の前記プロセッサにおいて、第２のアキュムレータはレジスタを含む。第２の状態では、前記第２のアキュムレータは、前記第２の加算器から受信した合計を前記第２のアキュムレータのレジスタの値に加えて、第２のアキュムレータの累積された値を形成し、そして第２のアキュムレータのレジスタに第２のアキュムレータの累積された値を格納する。
【０３７３】
第３セットの第１０の条項）前記第８の条項の前記プロセッサにおいて、前記プロセッサは、第１のキューの出力レジスタがゼロを含むか否かを決定し、第１のキューの出力レジスタがゼロを含むという決定に応答して、第１のタイルが第２の状態で演算するようにする活性化ゼロスキップ制御回路をさらに含む。
第３セットの第１１の条項）前記第１０の条項の前記プロセッサにおいて、前記プロセッサは、マルチプレクサ（ｍｕｌｔｉｐｌｅｘｅｒ）をさらに含む。前記マルチプレクサは、マルチプレクサのシングルポート側で第１の乗算器に接続された入力を有し、マルチプレクサのマルチポート側で第１の加算器に接続された第１の出力を有し、そしてマルチプレクサのマルチポート側で第２の加算器に接続された第２の出力を有する。
【０３７４】
第３セットの第１２の条項）プロセッシング回路でを用いて計算する方法が提供される。前記プロセッシング回路は、第１のタイル、第２のタイル、メモリ、入力バス及び出力バスを含む。前記入力バスはメモリ、第１のタイル及び第２のタイルに接続される。前記第１のタイルは、第１のウェイトレジスタ、第２のウェイトレジスタ、活性化バッファ、第１の乗算器及び第２の乗算器を含む。前記第１のタイルは、ウェイトのカーネルで活性化アレイの第１のコンボリューションを実行するように構成される。前記メモリは、第１のメモリバンクのセット及び第２のメモリバンクのセットを含む。前記入力バスは、第１の方向にデータを伝播するための第１のセグメントバスと、第１の方向とは反対方向である第２の方向にデータを伝播するための第２のセグメントバスと、を備える。前記第１のセグメントバスは、第１のスイッチブロック及び第２のスイッチブロックを含む。前記第１のスイッチブロックは、第１のタイル及び第１のメモリバンクのセットに接続される。前記第２のスイッチブロックは、第２のタイル及び第２のメモリバンクのセットに接続される。前記第２のセグメントバスは、第３のスイッチブロック及び第４のスイッチブロックを含む。前記第３のスイッチブロックは、第１のタイル及び第１のメモリバンクのセットに接続される。前記第４のスイッチブロックは、第２のタイル及び第２のメモリバンクのセットに接続される。前記第１のスイッチブロックの入力は、第２のスイッチブロックの出力に接続される。前記第３のスイッチブロックの出力は、第４のスイッチブロックの入力に接続される。前記方法は、第１のバスの状態では、第１のスイッチブロックにより、第１のタイルに第１のメモリバンクのセットを接続する段階と、第２のスイッチブロックにより第２のメモリバンクのセットを第２のタイルに接続する段階と、を備える。
【０３７５】
第３セットの第１３の条項）前記第１２の条項の前記方法では、第２のバスの状態では、第１のスイッチブロック及び第２のスイッチブロックにより、第１のタイルに第２のメモリバンクのセットを接続する段階と、第２のスイッチブロックにより第２のメモリバンクセットを第２のタイルに接続する段階と、をさらに備える。
第３セットの第１４の条項）前記第１２の条項の前記方法では、前記活性化バッファは、第１の乗算器に接続された第１のキュー（ｑｕｅｕｅ）及び第２の乗算器に接続された第２のキューを含む。第１のキューは、第１のレジスタ、及び第１のレジスタに隣接した第２のレジスタを含む。第１のレジスタは、第１のキューの出力レジスタである。第１のタイルは、第１の状態で、第１の乗算器で第１のキューの出力レジスタからの活性化により第１のウェイトを乗じ、第２の状態において第１の乗算器で第１のウェイトを第１のキューの第２のレジスタからの活性化により乗じるように、さらに構成される。
第３セットの第１５の条項）前記第１４の条項の前記方法では、前記第２のキューでは、前記第１のキューの出力はゼロを含む。
第３セットの第１６の条項）前記第１４の条項の前記方法では、前記プロセッシング回路は、第１の加算器をさらに含む。前記方法は、前記第１の加算器を前記第１の乗算器の出力及び前記第２の乗算器の出力に前記第１のキューから接続する段階と、前記第１の加算器が前記第１の乗算器の出力から受信した結果及び前記第２の乗算器の出力から受信した結果を加算する段階と、をさらに備える。
【０３７６】
第３セットの第１７の条項）前記第１６の条項の前記方法では、前記プロセッシング回路は、第２の加算器をさらに含む。前記方法は、前記第２の状態で前記第２の加算器を前記第１の乗算器の出力に接続する段階と、をさらに含む。
第３セットの第１８の条項）前記第１７の条項の前記方法では、前記プロセッシング回路は、第１の加算器に接続された第１のアキュムレータ（ａｃｃｕｍｕｌａｔｏｒ）、及び第２の加算器に接続された第２のアキュムレータをさらに含む。第１のアキュムレータはレジスタを含む。前記方法は、第１の状態では、前記第１のアキュムレータが前記第１の加算器から受信した合計を前記第１のアキュムレータのレジスタの値に加算する段階と、第１のアキュムレータの累積された値を形成する段階と、前記第１のアキュムレータが第１のアキュムレータのレジスタに第１のアキュムレータの累積された値を格納する段階と、をさらに備える。
第３セットの第１９の条項）前記第１８の条項の前記方法では、第２のアキュムレータはレジスタを含む。前記方法は、第２の状態では、前記第２のアキュムレータが前記第２の加算器から受信した合計を前記第２のアキュムレータのレジスタの値に加算する段階と、第２のアキュムレータの累積された値を形成する段階と、前記第２のアキュムレータが第２のアキュムレータのレジスタに第２のアキュムレータの累積された値を格納する段階と、をさらに備える。
【０３７７】
第３セットの第２０の条項）プロセッシングのための手段を用いて計算する方法が提供される。前記プロセッシングのための手段は、第１のタイル、第２のタイル、メモリ、入力バス及び出力バスを含む。前記入力バスはメモリ、第１のタイル及び第２のタイルに接続される。前記第１のタイルは、第１のウェイトレジスタ、第２のウェイトレジスタ、活性化バッファ、第１の乗算器及び第２の乗算器を含む。前記第１のタイルは、ウェイトのカーネルで活性化アレイの第１のコンボリューションを実行するように構成される。前記メモリは、第１のメモリバンクのセット及び第２のメモリバンクのセットを含む。前記入力バスは、第１の方向にデータを伝播するための第１のセグメントバス、及び第１の方向とは反対方向である第２の方向にデータを伝播するための第２のセグメントバスを含む。前記第１のセグメントバスは、第１のスイッチブロック及び第２のスイッチブロックを含む。前記第１のスイッチブロックは、第１のタイル及び第１のメモリバンクのセットに接続される。前記第２のスイッチブロックは、第２のタイル及び第２のメモリバンクのセットに接続される。前記第２のセグメントバスは、第３のスイッチブロック及び第４のスイッチブロックを含む。前記第３のスイッチブロックは、第１のタイルと第１のメモリバンクのセットに接続される。前記第４のスイッチブロックは、第２のタイル及び第２のメモリバンクのセットに接続される。前記第１のスイッチブロックの入力は、第２のスイッチブロックの出力に接続される。前記第３のスイッチブロックの出力は、第４のスイッチブロックの入力に接続される。前記方法は、第１のバス状態では、第１のスイッチブロックにより第１のタイルに設定された第１のメモリバンクを接続する段階と、第２のスイッチブロックにより第２のメモリバンクを第２のタイルに接続する段階と、を備える。
【０３７８】
ニューラルプロセッサの例としての実施形態が本明細書で具体的に説明し例示したが、多くの修正及び変形が、本発明が属する技術分野における通常の技術者（当業者）にとっては明らかになるだろう。
したがって、本開示の原理に基づいて構成されたニューラルプロセッサは、本明細書で具体的に説明されたものとは異なるように実現されることがあることを理解しなければならない。
また、本発明は、特許請求の範囲、及びそれらの均等な範囲内で定義される。
【符号の説明】
【０３７９】
１０２    タイル
１０３    乗算器ユニット（ＭＵ）
１０４    ＩＦＭ伝達ファブリック
１０６    ＯＦＭ伝達ファブリック
１０９    ＳＲＡＭバンクセット
１１０    中央コントローラ
１１１    減少ファブリック
１１２    ユーティリティバス
１１４    ＡＸＩインターコネクト
１１６    マイクロコントローラ（ＭＣＵ）
１１８    ＤＭＡコントローラ
１２０    外部メモリ
１２２    ＭＲアレイ
１２４    ＩＦＭ活性化バッファ
１２６    乗算器
１２７    レジスタファイル
１２８Ａ、１２８Ｂ  加算器ツリー
１３０Ａ、１３０Ｂ    アキュムレータ
１３３    ＭＲ列
１３５    タイプ変換器
１３７    信号の活性化レーン
１３９    ＩＦＭキャッシュ
１４０    グローバル制御ロジック、グローバル制御ＦＳＭ
１４１    活性化ブロードキャストユニット（ＡＢＵ）
１４２    ＳＲＡＭ制御ＦＳＭ
【図１Ａ】
2021528764.tif 000003
【図１Ｂ】
2021528764.tif 000004
【図１Ｃ】
2021528764.tif 000005
【図１Ｄ】
2021528764.tif 000006
【図１Ｅ】
2021528764.tif 000007
【図１Ｆ】
2021528764.tif 000008
【図１Ｇ】
2021528764.tif 000009
【図１Ｈ】
2021528764.tif 000010
【図１Ｉ】
2021528764.tif 000011
【図１Ｊ】
2021528764.tif 000012
【図１Ｋ】
2021528764.tif 000013
【図１Ｌ】
2021528764.tif 000014
【図１ＭＡ】
2021528764.tif 000015
【図１ＭＢ】
2021528764.tif 000016
【図１Ｎ】
2021528764.tif 000017
【図１Ｏ】
2021528764.tif 000018
【図１Ｐ】
2021528764.tif 000019
【図１Ｑ】
2021528764.tif 000020
【図１Ｒ】
2021528764.tif 000021
【図１Ｓ】
2021528764.tif 000022
【図１Ｔ】
2021528764.tif 000023
【図１Ｕ】
2021528764.tif 000024
【図１Ｖ】
2021528764.tif 000025
【図１ＷＡ】
2021528764.tif 000026
【図１ＷＢ】
2021528764.tif 000027
【図１ＷＣ】
2021528764.tif 000028
【図１ＷＤ】
2021528764.tif 000029
【図１ＷＥ】
2021528764.tif 000030
【図１Ｘ】
2021528764.tif 000031
【図２ＡＡ】
2021528764.tif 000032
【図２ＡＢ】
2021528764.tif 000033
【図２ＡＣ】
2021528764.tif 000034
【図２ＡＤ】
2021528764.tif 000035
【図２ＢＡ】
2021528764.tif 000036
【図２ＢＢ】
2021528764.tif 000037
【図２ＢＣ】
2021528764.tif 000038
【図２ＢＤ】
2021528764.tif 000039
【図２ＢＥ】
2021528764.tif 000040
【図２ＢＦ】
2021528764.tif 000041
【図２ＢＧ】
2021528764.tif 000042
【図２ＢＨ】
2021528764.tif 000043
【図２ＢＩ】
2021528764.tif 000044
【図２ＢＪ】
2021528764.tif 000045
【図２ＢＫ】
2021528764.tif 000046
【図２ＢＬ】
2021528764.tif 000047
【図２ＢＭ】
2021528764.tif 000048
【図２Ｃ】
2021528764.tif 000049
【図２ＤＡ】
2021528764.tif 000050
【図２ＤＢ】
2021528764.tif 000051
【図２ＤＣ】
2021528764.tif 000052
【図２ＤＤ】
2021528764.tif 000053
【図２ＤＥ】
2021528764.tif 000054
【図２ＤＦ】
2021528764.tif 000055
【図２ＤＧ】
2021528764.tif 000056
【図２ＤＨ】
2021528764.tif 000057
【図２ＤＩ】
2021528764.tif 000058
【図２ＤＪ】
2021528764.tif 000059
【図２ＤＫ】
2021528764.tif 000060
【図２ＤＬ】
2021528764.tif 000061
【図２ＤＭ】
2021528764.tif 000062
【図２ＤＮ】
2021528764.tif 000063
【図２ＤＯ】
2021528764.tif 000064
【図２ＤＰ】
2021528764.tif 000065
【図２ＤＱ】
2021528764.tif 000066
【図２ＤＲ】
2021528764.tif 000067
【図２ＤＳ】
2021528764.tif 000068
【図２ＤＴ】
2021528764.tif 000069
【図２ＤＶ】
2021528764.tif 000070
【図２ＤＷ】
2021528764.tif 000071
【図２ＤＸ】
2021528764.tif 000072
【図２Ｅ】
2021528764.tif 000073
【図２Ｆ】
2021528764.tif 000074
【図２ＧＡ】
2021528764.tif 000075
【図２ＧＢ】
2021528764.tif 000076
【図２ＨＡ】
2021528764.tif 000077
【図２ＨＢ】
2021528764.tif 000078
【図２ＨＣ】
2021528764.tif 000079
【図２ＨＤ】
2021528764.tif 000080
【図３ＡＡ】
2021528764.tif 000081
【図３ＡＢ】
2021528764.tif 000082
【図３ＡＣ】
2021528764.tif 000083
【図３ＡＤ】
2021528764.tif 000084
【図３ＡＥ】
2021528764.tif 000085
【図３ＡＦ】
2021528764.tif 000086
【図３ＡＧ】
2021528764.tif 000087
【図３ＡＨ】
2021528764.tif 000088
【図３ＡＩ】
2021528764.tif 000089
【図３ＡＪ】
2021528764.tif 000090
【図３ＡＫ】
2021528764.tif 000091
【図３ＢＡ】
2021528764.tif 000092
【図３ＢＢ】
2021528764.tif 000093
【図３ＢＣ】
2021528764.tif 000094
【図３ＣＡ】
2021528764.tif 000095
【図３ＣＢ】
2021528764.tif 000096
【図３ＤＡ】
2021528764.tif 000097
【図３ＥＡ】
2021528764.tif 000098
【図３ＥＢ】
2021528764.tif 000099
【図３ＦＡ】
2021528764.tif 000100
【図３ＦＢ】
2021528764.tif 000101
【図３ＦＣ】
2021528764.tif 000102
【図３ＧＡ】
2021528764.tif 000103
【図３ＧＢ】
2021528764.tif 000104
【図３ＧＣ】
2021528764.tif 000105
【図３ＧＤ】
2021528764.tif 000106
【図３ＨＡ】
2021528764.tif 000107
【図３ＨＢ】
2021528764.tif 000108
【図３ＨＣ】
2021528764.tif 000109
【図３ＨＤ】
2021528764.tif 000110
【図３ＩＡ】
2021528764.tif 000111
【図３ＩＢ】
2021528764.tif 000112
【図３ＩＣ】
2021528764.tif 000113
【図３ＩＤ】
2021528764.tif 000114
【図３ＩＥ】
2021528764.tif 000115
【図３ＩＦ】
2021528764.tif 000116
【図３ＪＡ】
2021528764.tif 000117
【図３ＪＢ】
2021528764.tif 000118
【図３ＪＣ】
2021528764.tif 000119
【図３ＪＤ】
2021528764.tif 000120
【図３ＫＡ】
2021528764.tif 000121
【図３ＫＢ】
2021528764.tif 000122
【図３ＬＡ】
2021528764.tif 000123
【図３ＬＢ】
2021528764.tif 000124
【図３ＬＣ】
2021528764.tif 000125
【図３ＬＤ】
2021528764.tif 000126
【図３ＭＡ】
2021528764.tif 000127
【図３ＭＢ】
2021528764.tif 000128
【図３ＮＡ】
2021528764.tif 000129
【図３ＯＡ】
2021528764.tif 000130
【図３ＯＢ】
2021528764.tif 000131
【図３ＯＣ】
2021528764.tif 000132
【図３ＰＡ】
2021528764.tif 000133
【図３ＰＢ】
2021528764.tif 000134
【図３ＰＣ】
2021528764.tif 000135
【図４ＡＡ】
2021528764.tif 000136
【図４ＡＢ】
2021528764.tif 000137
【図４ＡＣ】
2021528764.tif 000138
【図４ＡＤ】
2021528764.tif 000139
【図４ＡＥ】
2021528764.tif 000140
【図４ＡＦ】
2021528764.tif 000141
【図４ＡＧ】
2021528764.tif 000142
【図４ＡＨ】
2021528764.tif 000143
【図４ＡＪ】
2021528764.tif 000144
【図４ＡＫ】
2021528764.tif 000145
【図４ＡＬ】
2021528764.tif 000146
【図４ＡＭ】
2021528764.tif 000147
【図４ＡＮ】
2021528764.tif 000148
【図４ＢＡ】
2021528764.tif 000149
【図４ＢＢ】
2021528764.tif 000150
【図４ＢＣ】
2021528764.tif 000151
【図４ＢＤ】
2021528764.tif 000152
【図４ＣＡ】
2021528764.tif 000153
【図４ＣＢ】
2021528764.tif 000154
【図４ＣＣ】
2021528764.tif 000155
【図４ＤＡ】
2021528764.tif 000156
【図４ＤＢ】
2021528764.tif 000157
【図４ＤＣ】
2021528764.tif 000158
【図４ＥＡ】
2021528764.tif 000159
【図４ＥＢ】
2021528764.tif 000160
【図４ＥＣ】
2021528764.tif 000161
【図４ＦＡ】
2021528764.tif 000162
【図４ＦＢ】
2021528764.tif 000163
【図４Ｇ】
2021528764.tif 000164
【図４Ｈ】
2021528764.tif 000165
【図５Ａ】
2021528764.tif 000166
【図５Ｂ】
2021528764.tif 000167
【図５Ｃ】
2021528764.tif 000168
【図５Ｄ】
2021528764.tif 000169
【図５Ｅ】
2021528764.tif 000170
【図５Ｆ】
2021528764.tif 000171
【図５Ｇ】
2021528764.tif 000172
【図６】
2021528764.tif 000173
【国際調査報告】
2021528764.tif 000174
2021528764.tif 000175