(57)【要約】  畳み込みニューラルネットワークを実装するためのハードウェアアーキテクチャ。【選択図】図３０
2021517702.tif 000002
【特許請求の範囲】
【請求項１】
装置であって、
次式の３×４データ記憶要素アレイを含む２次元シフトレジスタであって、
【数１】
2021517702.tif 000011
最初の時点で、
データ記憶要素ｄ1,1がデータ値ｘ1,1を記憶し、
データ記憶要素ｄ1,2がデータ値ｘ1,2を記憶し、
データ記憶要素ｄ1,3がデータ値ｘ1,3を記憶し、
データ記憶要素ｄ1,4がデータ値ｘ1,4を記憶し、
データ記憶要素ｄ2,1がデータ値ｘ2,1を記憶し、
データ記憶要素ｄ2,2がデータ値ｘ2,2を記憶し、
データ記憶要素ｄ2,3がデータ値ｘ2,3を記憶し、
データ記憶要素ｄ2,4がデータ値ｘ2,4を記憶し、
データ記憶要素ｄ3,1がデータ値ｘ3,1を記憶し、
データ記憶要素ｄ3,2がデータ値ｘ3,2を記憶し、
データ記憶要素ｄ3,3がデータ値ｘ3,3を記憶し、
データ記憶要素ｄ3,4がデータ値ｘ3,4を記憶する、
２次元シフトレジスタと、
第１の複数の乗算器ｍ11,1、ｍ11,2、ｍ11,3、ｍ12,1、ｍ12,2、ｍ12,3、ｍ13,1、ｍ13,2、ｍ13,3を含む第１の畳み込み器ユニットであって、
前記乗算器ｍ11,1が前記データ記憶要素ｄ1,1に電気的に結合され、前記データ値ｘ1,1に重みｗ1を乗算して積ｗ1ｘ1,1を生成するように構成され、
前記乗算器ｍ11,2が前記データ記憶要素ｄ1,2に電気的に結合され、前記データ値ｘ1,2に重みｗ2を乗算して積ｗ2ｘ1,2を生成するように構成され、
前記乗算器ｍ11,3が前記データ記憶要素ｄ1,3に電気的に結合され、前記データ値ｘ1,3に重みｗ3を乗算して積ｗ3ｘ1,3を生成するように構成され、
前記乗算器ｍ12,1が前記データ記憶要素ｄ2,1に電気的に結合され、前記データ値ｘ2,1に重みｗ4を乗算して積ｗ4ｘ2,1を生成するように構成され、
前記乗算器ｍ12,2が前記データ記憶要素ｄ2,2に電気的に結合され、前記データ値ｘ2,2に重みｗ5を乗算して積ｗ5ｘ2,2を生成するように構成され、
前記乗算器ｍ12,3が前記データ記憶要素ｄ2,3に電気的に結合され、前記データ値ｘ2,3に重みｗ6を乗算して積ｗ6ｘ2,3を生成するよう構成され、
前記乗算器ｍ13,1が前記データ記憶要素ｄ3,1に電気的に結合され、前記データ値ｘ3,1に重みｗ7を乗算して積ｗ7ｘ3,1を生成するように構成され、
前記乗算器ｍ13,2が前記データ記憶要素ｄ3,2に電気的に結合され、前記データ値ｘ3,2に重みｗ8を乗算して積ｗ8ｘ3,2を生成するように構成され、
前記乗算器ｍ13,3が前記データ記憶要素ｄ3,3に電気的に結合され、前記データ値ｘ3,3に重みｗ9を乗算して積ｗ9ｘ3,3を生成するように構成された、
第１の畳み込み器ユニットと、
第２の複数の乗算器ｍ21,1、ｍ21,2、ｍ21,3、ｍ22,1、ｍ22,2、ｍ22,3、ｍ23,1、ｍ23,2、ｍ23,3を含む第２の畳み込み器ユニットであって、
前記乗算器ｍ21,1が前記データ記憶要素ｄ1,2に電気的に結合され、前記データ値ｘ1,2に重みｗ1を乗算して積ｗ1ｘ1,2を生成するように構成され、
前記乗算器ｍ21,2が前記データ記憶要素ｄ1,3に電気的に結合され、前記データ値ｘ1,3に重みｗ2を乗算して積ｗ2ｘ1,3を生成するように構成され、
前記乗算器ｍ21,3が前記データ記憶要素ｄ1,4に電気的に結合され、前記データ値ｘ1,4に重みｗ3を乗算して積ｗ3ｘ1,4を生成するように構成され、
前記乗算器ｍ22,1が前記データ記憶要素ｄ2,2に電気的に結合され、前記データ値ｘ2,2に重みｗ4を乗算して積ｗ4ｘ2,2を生成するように構成され、
前記乗算器ｍ22,2が前記データ記憶要素ｄ2,3に電気的に結合され、前記データ値ｘ2,3に重みｗ5を乗算して積ｗ5ｘ2,3を生成するように構成され、
前記乗算器ｍ22,3が前記データ記憶要素ｄ2,4に電気的に結合され、前記データ値ｘ2,4に重みｗ6を乗算して積ｗ6ｘ2,4を生成するように構成され、
前記乗算器ｍ23,1が前記データ記憶要素ｄ3,2に電気的に結合され、前記データ値ｘ3,2に重みｗ7を乗算して積ｗ7ｘ3,2を生成するように構成され、
前記乗算器ｍ23,2が前記データ記憶要素ｄ3,3に電気的に結合され、前記データ値ｘ3,3に重みｗ8を乗算して積ｗ8ｘ3,3を生成するように構成され、
前記乗算器ｍ23,3が前記データ記憶要素ｄ3,4に電気的に結合され、前記データ値ｘ3,4に重みｗ9を乗算して積ｗ9ｘ3,4を生成するように構成された、
第２の畳み込み器ユニットと、
を備える、装置。
【請求項２】
前記第１の畳み込み器ユニットは、少なくとも、前記積ｗ1ｘ1,1、前記積ｗ2ｘ1,2、前記積ｗ3ｘ1,3、前記積ｗ4ｘ2,1、前記積ｗ5ｘ2,2、前記積ｗ6ｘ2,3、前記積ｗ7ｘ3,1、前記積ｗ8ｘ3,2、前記積ｗ9ｘ3,3、及びバイアス値であるｂ1を含む項の和を生成するように構成される、ことを特徴とする請求項１に記載の装置。
【請求項３】
前記第２の畳み込み器ユニットは、少なくとも、前記積ｗ1ｘ1,2、前記積ｗ2ｘ1,3、前記積ｗ3ｘ1,4、前記積ｗ4ｘ2,2、前記積ｗ5ｘ2,3、前記積ｗ6ｘ2,4、前記積ｗ7ｘ3,2、前記積ｗ8ｘ3,3、前記積ｗ9ｘ3,4、及びバイアス値であるｂ1を含む項の和を生成するように構成される、ことを特徴とする請求項１に記載の装置。
【請求項４】
前記データ記憶要素ｄ1,1は、前記データ記憶要素ｄ2,1に電気的に結合され、
前記データ記憶要素ｄ2,1は、前記データ記憶要素ｄ3,1に電気的に結合され、
前記データ記憶要素ｄ1,2は、前記データ記憶要素ｄ2,2に電気的に結合され、
前記データ記憶要素ｄ2,2は、前記データ記憶要素ｄ3,2に電気的に結合され、
前記データ記憶要素ｄ1,3は、前記データ記憶要素ｄ2,3に電気的に結合され、
前記データ記憶要素ｄ2,3は、前記データ記憶要素ｄ3,3に電気的に結合され、
前記データ記憶要素ｄ1,4は、前記データ記憶要素ｄ2,4に電気的に結合され、
前記データ記憶要素ｄ2,4は、前記データ記憶要素ｄ3,4に電気的に結合される、
ことを特徴とする請求項１に記載の装置。
【請求項５】
装置であって、
次式の４×４データ記憶要素アレイを含む２次元シフトレジスタであって、
【数２】
2021517702.tif 000012
最初の時点で、
データ記憶要素ｄ1,1がデータ値ｘ1,1を記憶し、
データ記憶要素ｄ1,2がデータ値ｘ1,2を記憶し、
データ記憶要素ｄ1,3がデータ値ｘ1,3を記憶し、
データ記憶要素ｄ1,4がデータ値ｘ1,4を記憶し、
データ記憶要素ｄ2,1がデータ値ｘ2,1を記憶し、
データ記憶要素ｄ2,2がデータ値ｘ2,2を記憶し、
データ記憶要素ｄ2,3がデータ値ｘ2,3を記憶し、
データ記憶要素ｄ2,4がデータ値ｘ2,4を記憶し、
データ記憶要素ｄ3,1がデータ値ｘ3,1を記憶し、
データ記憶要素ｄ3,2がデータ値ｘ3,2を記憶し、
データ記憶要素ｄ3,3がデータ値ｘ3,3を記憶し、
データ記憶要素ｄ3,4がデータ値ｘ3,4を記憶し、
データ記憶要素ｄ4,1がデータ値ｘ4,1を記憶し、
データ記憶要素ｄ4,2がデータ値ｘ4,2を記憶し、
データ記憶要素ｄ4,3がデータ値ｘ4,3を記憶し、
データ記憶要素ｄ4,4がデータ値ｘ4,4を記憶する、
２次元シフトレジスタと、
第１の複数の乗算器ｍ11,1、ｍ11,2、ｍ11,3、ｍ12,1、ｍ12,2、ｍ12,3、ｍ13,1、ｍ13,2、及びｍ13,3を含む第１の畳み込み器ユニットであって、
前記乗算器ｍ11,1が前記データ記憶要素ｄ1,1に電気的に結合され、前記データ値ｘ1,1に重みｗ1を乗算して積ｗ1ｘ1,1を生成するように構成され、
前記乗算器ｍ11,2が前記データ記憶要素ｄ1,2に電気的に結合され、前記データ値ｘ1,2に重みｗ2を乗算して積ｗ2ｘ1,2を生成するように構成され、
前記乗算器ｍ11,3が前記データ記憶要素ｄ1,3に電気的に結合され、前記データ値ｘ1,3に重みｗ3を乗算して積ｗ3ｘ1,3を生成するように構成され、
前記乗算器ｍ12,1が前記データ記憶要素ｄ2,1に電気的に結合され、前記データ値ｘ2,1に重みｗ4を乗算して積ｗ4ｘ2,1を生成するように構成され、
前記乗算器ｍ12,2が前記データ記憶要素ｄ2,2に電気的に結合され、前記データ値ｘ2,2に重みｗ5を乗算して積ｗ5ｘ2,2を生成するように構成され、
前記乗算器ｍ12,3が前記データ記憶要素ｄ2,3に電気的に結合され、前記データ値ｘ2,3に重みｗ6を乗算して積ｗ6ｘ2,3を生成するように構成され、
前記乗算器ｍ13,1が前記データ記憶要素ｄ3,1に電気的に結合され、前記データ値ｘ3,1に重みｗ7を乗算して積ｗ7ｘ3,1を生成するように構成され、
前記乗算器ｍ13,2が前記データ記憶要素ｄ3,2に電気的に結合され、前記データ値ｘ3,2に重みｗ8を乗算して積ｗ8ｘ3,2を生成するように構成され、
前記乗算器ｍ13,3が前記データ記憶要素ｄ3,3に電気的に結合され、前記データ値ｘ3,3に重みｗ9を乗算して積ｗ9ｘ3,3を生成するように構成された、
第１の畳み込み器ユニットと、
第２の複数の乗算器ｍ21,1、ｍ21,2、ｍ21,3、ｍ22,1、ｍ22,2、ｍ22,3、ｍ23,1、ｍ23,2、及びｍ23,3を含む第２の畳み込み器ユニットであって、
前記乗算器ｍ21,1が前記データ記憶要素ｄ1,2に電気的に結合され、前記データ値ｘ1,2に重みｗ1を乗算して積ｗ1ｘ1,2を生成するように構成され、
前記乗算器ｍ21,2が前記データ記憶要素ｄ1,3に電気的に結合され、前記データ値ｘ1,3に重みｗ2を乗算して積ｗ2ｘ1,3を生成するように構成され、
前記乗算器ｍ21,3が前記データ記憶要素ｄ1,4に電気的に結合され、前記データ値ｘ1,4に重みｗ3を乗算して積ｗ3ｘ1,4を生成するように構成され、
前記乗算器ｍ22,1が前記データ記憶要素ｄ2,2に電気的に結合され、前記データ値ｘ2,2に重みｗ4を乗算して積ｗ4ｘ2,2を生成するように構成され、
前記乗算器ｍ22,2が前記データ記憶要素ｄ2,3に電気的に結合され、前記データ値ｘ2,3に重みｗ5を乗算して積ｗ5ｘ2,3を生成するように構成され、
前記乗算器ｍ22,3が前記データ記憶要素ｄ2,4に電気的に結合され、前記データ値ｘ2,4に重みｗ6を乗算して積ｗ6ｘ2,4を生成するように構成され、
前記乗算器ｍ23,1が前記データ記憶要素ｄ3,2に電気的に結合され、前記データ値ｘ3,2に重みｗ7を乗算して積ｗ7ｘ3,2を生成するように構成され、
前記乗算器ｍ23,2が前記データ記憶要素ｄ3,3に電気的に結合され、前記データ値ｘ3,3に重みｗ8を乗算して積ｗ8ｘ3,3を生成するように構成され、
前記乗算器ｍ23,3が前記データ記憶要素ｄ3,4に電気的に結合され、前記データ値ｘ3,4に重みｗ9を乗算して積ｗ9ｘ3,4を生成するように構成された、
第２の畳み込み器ユニットと、
第３の複数の乗算器ｍ31,1、ｍ31,2、ｍ31,3、ｍ32,1、ｍ32,2、ｍ32,3、ｍ33,1、ｍ33,2、及びｍ33,3を含む第３の畳み込み器ユニットであって、
前記乗算器ｍ31,1が前記データ記憶要素ｄ2,1に電気的に結合され、前記データ値ｘ2,1に重みｗ10を乗算して積ｗ10ｘ2,1を生成するように構成され、
前記乗算器ｍ31,2が前記データ記憶要素ｄ2,2に電気的に結合され、前記データ値ｘ2,2に重みｗ11を乗算して積ｗ11ｘ2,2を生成するように構成され、
前記乗算器ｍ31,3が前記データ記憶要素ｄ2,3に電気的に結合され、前記データ値ｘ2,3に重みｗ12を乗算して積ｗ12ｘ2,3を生成するように構成され、
前記乗算器ｍ32,1が前記データ記憶要素ｄ3,1に電気的に結合され、前記データ値ｘ3,1に重みｗ13を乗算して積ｗ13ｘ3,1を生成するように構成され、
前記乗算器ｍ32,2が前記データ記憶要素ｄ3,2に電気的に結合され、前記データ値ｘ3,2に重みｗ14を乗算して積ｗ14ｘ3,2を生成するように構成され、
前記乗算器ｍ32,3が前記データ記憶要素ｄ3,3に電気的に結合され、前記データ値ｘ3,3に重みｗ15を乗算して積ｗ15ｘ3,3を生成するように構成され、
前記乗算器ｍ33,1が前記データ記憶要素ｄ4,1に電気的に結合され、前記データ値ｘ4,1に重みｗ16を乗算して積ｗ16ｘ4,1を生成するように構成され、
前記乗算器ｍ33,2が前記データ記憶要素ｄ4,2に電気的に結合され、前記データ値ｘ4,2に重みｗ17を乗算して積ｗ17ｘ4,2を生成するように構成され、
前記乗算器ｍ33,3が前記データ記憶要素ｄ4,3に電気的に結合され、前記データ値ｘ4,3に重みｗ18を乗算して積ｗ18ｘ4,3を生成するように構成された、
第３の畳み込み器ユニットと、
第４の複数の乗算器ｍ41,1、ｍ41,2、ｍ41,3、ｍ42,1、ｍ42,2、ｍ42,3、ｍ43,1、ｍ43,2、及びｍ43,3を含む第４の畳み込み器ユニットであって、
前記乗算器ｍ41,1が前記データ記憶要素ｄ2,2に電気的に結合され、前記データ値ｘ2,2に重みｗ10を乗算して積ｗ10ｘ2,2を生成するように構成され、
前記乗算器ｍ41,2が前記データ記憶要素ｄ2,3に電気的に結合され、前記データ値ｘ2,3に重みｗ11を乗算して積ｗ11ｘ2,3を生成するように構成され、
前記乗算器ｍ41,3が前記データ記憶要素ｄ2,4に電気的に結合され、前記データ値ｘ2,4に重みｗ12を乗算して積ｗ12ｘ2,4を生成するように構成され、
前記乗算器ｍ42,1が前記データ記憶要素ｄ3,2に電気的に結合され、前記データ値ｘ3,2に重みｗ13を乗算して積ｗ13ｘ3,2を生成するように構成され、
前記乗算器ｍ42,2が前記データ記憶要素ｄ3,3に電気的に結合され、前記データ値ｘ3,3に重みｗ14を乗算して積ｗ14ｘ3,3を生成するように構成され、
前記乗算器ｍ42,3が前記データ記憶要素ｄ3,4に電気的に結合され、前記データ値ｘ3,4に重みｗ15を乗算して積ｗ15ｘ3,4を生成するように構成され、
前記乗算器ｍ43,1が前記データ記憶要素ｄ4,2に電気的に結合され、前記データ値ｘ4,2に重みｗ16を乗算して積ｗ16ｘ4,2を生成するように構成され、
前記乗算器ｍ43,2が前記データ記憶要素ｄ4,3に電気的に結合され、前記データ値ｘ4,3に重みｗ17を乗算して積ｗ17ｘ4,3を生成するように構成され、
前記乗算器ｍ43,3が前記データ記憶要素ｄ4,4に電気的に結合され、前記データ値ｘ4,4に重みｗ18を乗算して積ｗ18ｘ4,4を生成するように構成された、
第４の畳み込み器ユニットと、
を備える、装置。
【請求項６】
前記第１の畳み込み器ユニットは、少なくとも、前記積ｗ1ｘ1,1、前記積ｗ2ｘ1,2、前記積ｗ3ｘ1,3、前記積ｗ4ｘ2,1、前記積ｗ5ｘ2,2、前記積ｗ6ｘ2,3、前記積ｗ7ｘ3,1、前記積ｗ8ｘ3,2、前記積ｗ9ｘ3,3、及びバイアス値であるｂ1を含む項の和を生成するように構成される、ことを特徴とする請求項５に記載の装置。
【請求項７】
前記第２の畳み込み器ユニットは、少なくとも、前記積ｗ1ｘ1,2、前記積ｗ2ｘ1,3、前記積ｗ3ｘ1,4、前記積ｗ4ｘ2,2、前記積ｗ5ｘ2,3、前記積ｗ6ｘ2,4、前記積ｗ7ｘ3,2、前記積ｗ8ｘ3,3、前記積ｗ9ｘ3,4、及びバイアス値であるｂ1を含む項の和を生成するように構成される、ことを特徴とする請求項５に記載の装置。
【請求項８】
前記第３の畳み込み器ユニットは、少なくとも、前記積ｗ10ｘ2,1、前記積ｗ11ｘ2,2、前記積ｗ12ｘ2,3、前記積ｗ13ｘ3,1、前記積ｗ14ｘ3,2、前記積ｗ15ｘ3,3、前記積ｗ16ｘ4,1、前記積ｗ17ｘ4,2、前記積ｗ18ｘ4,3、及びバイアス値であるｂ2を含む項の和を生成するように構成される、ことを特徴とする請求項５に記載の装置。
【請求項９】
前記第４の畳み込み器ユニットは、少なくとも、前記積ｗ10ｘ2,2、前記積ｗ11ｘ2,3、前記積ｗ12ｘ2,4、前記積ｗ13ｘ3,2、前記積ｗ14ｘ3,3、前記積ｗ15ｘ3,4、前記積ｗ16ｘ4,2、前記積ｗ17ｘ4,3、前記積ｗ18ｘ4,4、及びバイアス値であるｂ2を含む項の和を生成するように構成される、ことを特徴とする請求項５に記載の装置。
【請求項１０】
前記データ記憶要素ｄ1,1は、前記データ記憶要素ｄ2,1に電気的に結合され、
前記データ記憶要素ｄ2,1は、前記データ記憶要素ｄ3,1に電気的に結合され、
前記データ記憶要素ｄ3,1は、前記データ記憶要素ｄ4,1に電気的に結合され、
前記データ記憶要素ｄ1,2は、前記データ記憶要素ｄ2,2に電気的に結合され、
前記データ記憶要素ｄ2,2は、前記データ記憶要素ｄ3,2に電気的に結合され、
前記データ記憶要素ｄ3,2は、前記データ記憶要素ｄ4,2に電気的に結合され、
前記データ記憶要素ｄ1,3は、前記データ記憶要素ｄ2,3に電気的に結合され、
前記データ記憶要素ｄ2,3は、前記データ記憶要素ｄ3,3に電気的に結合され、
前記データ記憶要素ｄ3,3は、前記データ記憶要素ｄ4,3に電気的に結合され、
前記データ記憶要素ｄ1,4は、前記データ記憶要素ｄ2,4に電気的に結合され、
前記データ記憶要素ｄ2,4は、前記データ記憶要素ｄ3,4に電気的に結合され、
前記データ記憶要素ｄ3,4は、前記データ記憶要素ｄ4,4に電気的に結合される、
ことを特徴とする請求項５に記載の装置。
【請求項１１】
装置であって、
次式のｐ×ｑデータ記憶要素アレイを含む２次元同期シフトレジスタであって、
【数３】
2021517702.tif 000013
最初のデータ記憶要素行ｄ1,1、…、ｄ1,qが、各クロックサイクルにおいてｑ個のデータ値を受け取り、１＜ｋ≦ｐに関して、各データ記憶要素行ｄk,1、…、ｄk,qが、各クロックサイクルにおいて直前のデータ記憶要素行ｄk-1,1、…、ｄk-1,qからｑ個のデータ値を受け取る、
２次元同期シフトレジスタと、
前記２次元同期シフトレジスタ内に記憶された前記データ値を処理するように構成された畳み込み器アレイであって、前記畳み込み器アレイが、ｐ−２×ｑ畳み込み器ユニットアレイを含み、畳み込み器ユニットＣＵi,j、１≦ｉ≦ｐ−２及び２≦ｊ≦ｑ−１に関して、
（ｘ）前記ＣＵi,jの第１の入力がデータ記憶要素ｄi,j-1に電気的に結合され、
（ｘｉ）前記ＣＵi,jの第２の入力がデータ記憶要素ｄi+1,j-1に電気的に結合され、
（ｘｉｉ）前記ＣＵi,jの第３の入力がデータ記憶要素ｄi+2,j-1に電気的に結合され、
（ｘｉｉｉ）前記ＣＵi,jの第４の入力がデータ記憶要素ｄi,jに電気的に結合され、
（ｘｉｖ）前記ＣＵi,jの第５の入力がデータ記憶要素ｄi+1,jに電気的に結合され、
（ｘｖ）前記ＣＵi,jの第６の入力がデータ記憶要素ｄi+2,jに電気的に結合され、
（ｘｖｉ）前記ＣＵi,jの第７の入力がデータ記憶要素ｄi,j+1に電気的に結合され、
（ｘｖｉｉ）前記ＣＵi,jの第８の入力がデータ記憶要素ｄi+1,j+1に電気的に結合され、
（ｘｖｉｉｉ）前記ＣＵi,jの第９の入力がデータ記憶要素ｄi+2,j+1に電気的に結合された、
畳み込み器アレイと、
を備える、装置。
【請求項１２】
前記畳み込み器ユニットＣＵi,1、１≦ｉ≦ｐ−２に関して、
（ｘ）ＣＵi,1の第１の入力又は該第１の入力に関連付けられた重みのうちの少なくとも一方が論理ゼロに設定され、
（ｘｉ）ＣＵi,1の第２の入力又は該第２の入力に関連付けられた重みのうちの少なくとも一方が論理ゼロに設定され、
（ｘｉｉ）ＣＵi,1の第３の入力又は該第３の入力に関連付けられた重みのうちの少なくとも一方が論理ゼロに設定され、
（ｘｉｉｉ）ＣＵi,1の第４の入力がデータ記憶要素ｄi,1に電気的に結合され、
（ｘｉｖ）ＣＵi,1の第５の入力がデータ記憶要素ｄi+1,1に電気的に結合され、
（ｘｖ）ＣＵi,1の第６の入力がデータ記憶要素ｄi+2,1に電気的に結合され、
（ｘｖｉ）ＣＵi,1の第７の入力がデータ記憶要素ｄi,2に電気的に結合され、
（ｘｖｉｉ）ＣＵi,1の第８の入力がデータ記憶要素ｄi+1,2に電気的に結合され、
（ｘｖｉｉｉ）ＣＵi,1の第９の入力がデータ記憶要素ｄi+2,2に電気的に結合される、
ことを特徴とする請求項１１に記載の装置。
【請求項１３】
前記畳み込み器ユニットＣＵi,q、１≦ｉ≦ｐ−２に関して、
（ｘ）ＣＵi,qの第１の入力がデータ記憶要素ｄi,q-1に電気的に結合され、
（ｘｉ）ＣＵi,qの第２の入力がデータ記憶要素ｄi+1,q-1に電気的に結合され、
（ｘｉｉ）ＣＵi,qの第３の入力がデータ記憶要素ｄi+2,q-1に電気的に結合され、
（ｘｉｉｉ）ＣＵi,qの第４の入力がデータ記憶要素ｄi,qに電気的に結合され、
（ｘｉｖ）ＣＵi,qの第５の入力がデータ記憶要素ｄi+1,qに電気的に結合され、
（ｘｖ）ＣＵi,qの第６の入力がデータ記憶要素ｄi+2,qに電気的に結合され、
（ｘｖｉ）少なくともＣＵi,qの第７の入力又は該第７の入力に関連付けられた重みが論理ゼロに設定され、
（ｘｖｉｉ）少なくともＣＵi,qの第８の入力又は該第８の入力に関連付けられた重みが論理ゼロに設定され、
（ｘｖｉｉｉ）少なくともＣＵi,qの第９の入力又は該第９の入力に関連付けられた重みが論理ゼロに設定される、
ことを特徴とする請求項１１に記載の装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、畳み込みエンジンに向けたハードウェアアーキテクチャに関し、より具体的には畳み込みエンジンの計算ユニット（畳み込み器ユニット又は機能ユニットと呼ぶ）にデータ値を提供する効率的な手法に関する。
【０００２】
本出願は、２０１８年３月１３日に出願された米国仮出願第６２／６４２，５７８号及び２０１８年７月５日に出願された米国仮出願第６２／６９４，２９０号に対して優先権を主張する。
【背景技術】
【０００３】
現在、ニューラルネットワーク（特に畳み込みニューラルネットワーク）は、画像認識／分類、物体認識／分類、及び画像セグメント化を実施するために広く用いられている。数多くの用途（例えば、自動運転車用に向けた物体識別、ソーシャルネットワークに向けた顔認識等）を有するが、ニューラルネットワークは、集中的な計算処理及び頻繁なメモリアクセスを必要とする。本明細書では、畳み込みニューラルネットワークを実装するための効率的なハードウェアアーキテクチャが記載される。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】米国仮出願第６２／６４２，５７８号広報
【特許文献２】米国仮出願第６２／６９４，２９０号広報
【非特許文献】
【０００５】
【非特許文献１】Ｄａｉｓｕｋｅ  Ｍｉｙａｓｈｉｔａ他著「Ｃｏｎｖｏｌｕｔｉｏｎａｌ  Ｎｅｕｒａｌ  Ｎｅｔｗｏｒｋｓ  ｕｓｉｎｇ  Ｌｏｇａｒｉｔｈｍｉｃ  Ｄａｔａ  Ｒｅｐｒｅｓｅｎｔａｔｉｏｎ」、ａｒＸｉｖ  ｐｒｅｐｒｉｎｔ  ａｒＸｉｖ：１６０３．０１０２５、２０１６年
【図面の簡単な説明】
【０００６】
【図１】ニューラルネットワークにおけるモデルトレーニング及びモデル適用の概要を示す図である。
【図２】畳み込み演算の入力、単一の２次元フィルタを含むモデルパラメータ、及び出力の図である。
【図３】２次元フィルタを用いた畳み込み演算の計算を説明する図である。
【図４】畳み込み演算の入力、複数の２次元フィルタを含むモデルパラメータ、及び出力の図である。
【図５】畳み込み演算の入力、単一の３次元フィルタを含むモデルパラメータ、及び出力の図である。
【図６】３次元フィルタを用いた畳み込み演算の計算を説明する図である。
【図７】畳み込み演算の入力、複数の３次元フィルタを含むモデルパラメータ、及び出力の図である。
【図８】本発明の１つの実施形態による、２Ｄシフトレジスタと畳み込み器ユニットアレイとを含む畳み込みエンジンを示す図である。
【図９Ａ】本発明の１つの実施形態による、畳み込みエンジンへのデータ値のロードを示す図である。
【図９Ｂ】本発明の１つの実施形態による、畳み込みエンジンへのデータ値のロードを示す図である。
【図９Ｃ】本発明の１つの実施形態による、畳み込みエンジンへのフィルタ重みのロードを示す図である。
【図９Ｄ】本発明の１つの実施形態による、畳み込みエンジンへのフィルタ重みのロードを示す図である。
【図１０Ａ】本発明の１つの実施形態による、２Ｄシフトレジスタへのゼロパディング行のロードを示す図である。
【図１０Ｂ】本発明の１つの実施形態による、２Ｄシフトレジスタへのゼロパディング行のロードを示す図である。
【図１０Ｃ】本発明の１つの実施形態による、２Ｄシフトレジスタへのデータ値のロードを示す図である。
【図１０Ｄ】本発明の１つの実施形態による、２Ｄシフトレジスタへのデータ値のロードを示す図である。
【図１１Ａ】本発明の１つの実施形態による、図１０Ｄに示すデータ値の空間的な方向に関する２つの畳み込み器ユニットの処理を記載した図である。
【図１１Ｂ】本発明の１つの実施形態による、図１０Ｄに示すデータ値の空間的な方向に関する２つの畳み込み器ユニットの処理を記載した図である。
【図１１Ｃ】本発明の１つの実施形態による、図１０Ｄに示すデータ値の空間的な方向に関する全ての活性畳み込み器ユニットの処理に続いて結果として得られる部分和を示す図である。
【図１２】図１０Ｄに示すデータ値の空間的な方向と比較して、２Ｄシフトレジスタ１行分下方にシフトされた後のデータ値を示す図である。
【図１３Ａ】本発明の１つの実施形態による、図１２に示すデータ値の空間的な方向に関する４つの畳み込み器ユニットの処理を記載した図である。
【図１３Ｂ】本発明の１つの実施形態による、図１２に示すデータ値の空間的な方向に関する４つの畳み込み器ユニットの処理を表す図である。
【図１３Ｃ】本発明の１つの実施形態による、図１２に示すデータ値の空間的な方向に関する４つの畳み込み器ユニットの処理を表す図である。
【図１３Ｄ】本発明の１つの実施形態による、図１２に示すデータ値の空間的な方向に関する４つの畳み込み器ユニットの処理を表す図である。
【図１３Ｅ】本発明の１つの実施形態による、図１２に示すデータ値の空間的な方向に関する全ての活性畳み込み器ユニットの処理に続いて結果として得られる部分和を示す図である。
【図１４Ａ】本発明の１つの実施形態による、畳み込みエンジンへのデータ値のロードを示す図である。
【図１４Ｂ】本発明の１つの実施形態による、畳み込みエンジンへのデータ値のロードを示す図である。
【図１４Ｃ】本発明の１つの実施形態による、畳み込みエンジンへのフィルタ重みのロードを示す図である。
【図１４Ｄ】本発明の１つの実施形態による、畳み込みエンジンへのフィルタ重みのロードを示す図である。
【図１５Ａ】本発明の１つの実施形態による、２Ｄシフトレジスタへのゼロパディング行のロードを示す図である。
【図１５Ｂ】本発明の１つの実施形態による、２Ｄシフトレジスタへのゼロパディング行のロードを示す図である。
【図１５Ｃ】本発明の１つの実施形態による、２Ｄシフトレジスタへのデータ値のロードを示す図である。
【図１５Ｄ】本発明の１つの実施形態による、２Ｄシフトレジスタへのデータ値のロードを示す図である。
【図１６Ａ】本発明の１つの実施形態による、図１５Ｄに示すデータ値の空間的な方向に関する２つの畳み込み器ユニットの処理を示す図である。
【図１６Ｂ】本発明の１つの実施形態による、図１５Ｄに示すデータ値の空間的な方向に関する２つの畳み込み器ユニットの処理を示す図である。
【図１６Ｃ】本発明の１つの実施形態による、図１５Ｄに示すデータ値の空間的な方向に関する全ての活性畳み込み器ユニットの処理に続いて結果として得られる部分和を示す図である。
【図１７】図１５Ｄに示すデータ値の空間的な方向と比較して２Ｄシフトレジスタ１行分下方にシフトされた後のデータ値を示す図である。
【図１８Ａ】本発明の１つの実施形態による、図１７に示すデータ値の空間的な方向に関する２つの畳み込み器ユニットの処理を示す図である。
【図１８Ｂ】本発明の１つの実施形態による、図１７に示すデータ値の空間的な方向に関する２つの畳み込み器ユニットの処理を示す図である。
【図１８Ｃ】本発明の１つの実施形態による、図１７に示すデータ値の空間的な方向に関する全ての活性畳み込み器ユニットの処理に続いて結果として得られる部分和を示す図である。
【図１９Ａ】本発明の１つの実施形態による、畳み込みエンジンへのバイアス値のロードを示す図である。
【図１９Ｂ】本発明の１つの実施形態による、畳み込みエンジンへのバイアス値のロードを示す図である。
【図２０】本発明の１つの実施形態による、部分和がバイアス値でバイアスされた後の畳み込み器ユニットの各々の出力を示す図である。
【図２１】本発明の１つの実施形態による、畳み込み器ユニットの内部構成要素を示す図である。
【図２２】本発明の１つの実施形態による、畳み込み演算のストライドを制御するための制御回路を示す図である。
【図２３】本発明の１つの実施形態による、２Ｄシフトレジスタと機能ユニットアレイとを含む汎用畳み込みエンジンを示す図である。
【図２４】本発明の１つの実施形態による、機能ユニットの内部構成要素を示す図である。
【図２５】本発明の１つの実施形態による、入力チャネルからｍ個の畳み込み器ユニット列を有する畳み込みエンジンにデータ値をロードする３つのシナリオ、すなわち、ｍ個のデータ値列を有する入力チャネルを例示するシナリオ（ａ）、３ｍ−４個のデータ値列を有する入力チャネルを例示するシナリオ（ｂ）、及びｍ／２個のデータ値列を有する入力チャネルを例示するシナリオ（ｃ）を示す図である。
【図２６Ａ】本発明の１つの実施形態による、シナリオ（ａ）に関する畳み込みエンジンへのデータ値のロードを示す図である。
【図２６Ｂ】本発明の１つの実施形態による、シナリオ（ａ）に関する畳み込みエンジンへのデータ値のロードを示す図である。
【図２７Ａ】本発明の１つの実施形態による、シナリオ（ｂ）に関する畳み込みエンジンへのデータ値のロードを示す図である。
【図２７Ｂ】本発明の１つの実施形態による、シナリオ（ｂ）に関する畳み込みエンジンへのデータ値のロードを示す図である。
【図２７Ｃ】本発明の１つの実施形態による、シナリオ（ｂ）に関する畳み込みエンジンへのデータ値のロードを示す図である。
【図２８】本発明の１つの実施形態による、シナリオ（ｃ）に関する畳み込みエンジンへのデータ値のロードを示す図である。
【図２９Ａ】本発明の１つの実施形態による、畳み込みエンジン内にデータ値をロードするためのシナリオ（ｃ）に関する別のスキームを示す図である。
【図２９Ｂ】本発明の１つの実施形態による、畳み込みエンジン内にデータ値をロードするためのシナリオ（ｃ）に関する別のスキームを示す図である。
【図３０】本発明の１つの実施形態による、畳み込みエンジンを大型システムの１つの構成要素として示す図である。
【図３１】本発明の１つの実施形態による、重みを畳み込み器ユニットに提供する前にフィルタ重みを伸長するための構成要素のブロック図である。
【発明を実施するための形態】
【０００７】
好ましい実施形態に関する以下の詳細な説明では、本明細書の一部を形成する添付図面を参照し、これらの図面には、本発明を実施することができる特定の実施形態が例証として示されている。本発明の範囲から逸脱することなく、他の実施形態を利用することができ、また構造的な変更を加えることができる点を理解されたい。図のうちの何れか１つに関連する説明は、類似の又は同様の構成要素／ステップを含む異なる図に適用することができる。
【０００８】
図１は、ニューラルネットワーク内のトレーニングフェーズ及びインターフェースフェーズの概要を提供する図を示している。トレーニングフェーズでは、分類モデル１０４のモデルパラメータ（「重み」とも呼ぶ）をトレーニングするために、入力及び既知の（又は所望の）出力のペアを提供することができる。簡潔にするために、図１には、入力及び出力の１つのペア（１０２、１０６）のみが描かれているが、実際には、分類モデル１０４をトレーニングするために多くの既知の入力及び出力ペアが用いられる。図１の実施例では、入力１０２は、数字の行列（画像のピクセルを表すことができる）であり、既知の出力１０６は、分類確率（例えば、入力画像が猫である確率は１であり、入力画像が犬である確率は０であり、入力画像が人間である確率は０である）のベクトルである。１つの実施可能なトレーニングプロセスでは、分類確率は、人間が与えることができる（例えば、人間は、入力画像が猫を描画していることを認識し、それに応じて分類確率を割り当てることができる）。モデルトレーニングプロセスの完結時には、モデルパラメータは推定済みであることになる（例えば、Ｗ１＝１．２、Ｗ２＝３．８、Ｗ３＝２．７）。場合によってはモデルパラメータを解釈する直感的な手法が存在する可能性はあるが、多くの場合、直観がモデルパラメータと関連付けられることはなく、モデルパラメータは、単純に、所与の入力セットのモデルの分類（又はモデルの分類確率）と既知の分類（又は既知の分類確率）との間の誤差を最小化し、それと同時に「モデル過剰適合」を回避するパラメータとすることができる。
【０００９】
推測（或いは予測又はフィードフォワード）フェーズでは、トレーニング済みパラメータ（すなわち、トレーニングフェーズ中にトレーニングされたパラメータ）を有する分類モデル１０４を用いて、入力セットを分類する。本出願では、トレーニング済み分類モデル１０４は、入力１０８に応答して確率（例えば、入力画像が猫である確率は０．３であり、入力画像が犬である確率は０．６であり、入力画像が人間である確率は０．１である）のベクトルの分類出力１１０を与える。
【００１０】
分類モデル１０４の１つの実施形態は、畳み込みニューラルネットワークである。畳み込みニューラルネットワークの基本構成単位は、図２〜図７にて説明される畳み込み演算である。下記でより詳しく説明するように、畳み込み演算は、２次元入力と２次元フィルタとを用いる２次元畳み込み演算、３次元入力と３次元フィルタとを用いる３次元畳み込み演算等を指すことができる。
【００１１】
図２は、２次元畳み込み演算の入力、モデルパラメータ、及び出力の図を示している。図２に記載の実施例では、入力は、数値（数値の各々を「・」で抽象的に表す）の２次元行列を含む。図２に記載の実施例における行列は４×４行列であるが、他の入力は、異なる次元を有することができる（例えば、１００×１００正方行列、２０×７０長方行列等とすることができる）。後に示す実施例は、入力を３次元物体とさえすることができることを例示することになる。実際には、入力は、あらゆる次元数の物体とすることができる。入力は、画像のピクセル値を表すことができ、又は過去の畳み込み演算の出力を表すことができる。
【００１２】
モデルパラメータは、フィルタ及びバイアスを含むことができる。図２の実施例では、フィルタは、値（「重み」とも呼ぶ）の３×３行列であり、バイアスはスカラー値である。典型的には、各フィルタに関連付けられた１つのバイアスが存在する。図２に記載の実施例は、１つのフィルタを含み、従って１つの対応するバイアスが存在する。しかしながらある特定の実施形態では、５つのフィルタが存在する場合に、フィルタの各々に対して１つ、５つの関連のバイアスが存在することになる。
【００１３】
畳み込み演算子２０８（「ｃｏｎｖ」と略記する）は、入力２０２とモデルパラメータ２０４、２０６とを受け取って、活性化マップ又は特徴マップと呼ばれる出力２１０を生成する。活性化マップの各値は、入力２０２及びフィルタ２０４（入力２０２と相対的なある特定の空間的場所にある）とバイアス２０６との間のドット積の和として生成される。活性化マップ２１０に到達するための計算は、図３において下記でより詳細に説明される。
【００１４】
図３の一行目は、活性化マップ２１０の位置（ｘ＝１，ｙ＝１）における要素の計算を表している。一行目に示すように、フィルタ２０４の中心は、入力２０２の位置（１，１）における要素と空間的に位置合わせされる。かかる計算は、入力２０２がゼロ境界によって暗示的に囲まれる「ゼロパディング」の使用を仮定している。ゼロパディングを用いる利点は、３×３フィルタを用いる時に入力２０２及び出力活性化マップ２１０の次元が一定のままであることである。フィルタ２０４と、該フィルタ２０４と空間的に位置合わせされた入力２０２の４つの値との間のドット積が計算される。次いで、ドット積は、バイアスｂと加算されて活性化マップ２１０の位置（１，１）における要素に到達する。
【００１５】
図３の二行目は、活性化マップ２１０の位置（１，２）における要素の計算を表している。二行目に示すように、フィルタ２０４の中心は、入力２０２の位置（１，２）における要素と空間的に位置合わせされる。フィルタ２０４と、該フィルタ２０４と空間的に位置合わせされた入力２０２の６つの値との間のドット積が計算される。次いで、ドット積は、バイアスｂと加算されて活性化マップ２１０の位置（１，２）における要素に到達する。
【００１６】
図３の三行目は、活性化マップ２１０の位置（１，３）における要素の計算を表している。三行目に示すように、フィルタ２０４の中心は、入力２０２の位置（１，３）における要素と空間的に位置合わせされる。フィルタ２０４と、該フィルタ２０４と空間的に位置合わせされた入力２０２の６つの値との間のドット積が計算される。次いで、ドット積は、バイアスｂと加算されて活性化マップ２１０の位置（１，３）における要素に到達する。
【００１７】
図３の四行目は、活性化マップ２１０の位置（４，４）における要素の計算を表している。四行目に示すように、フィルタ２０４の中心は、入力２０２の位置（４，４）における要素と空間的に位置合わせされる。フィルタ２０４と、該フィルタ２０４と空間的に位置合わせされた入力２０２の４つの値との間のドット積が計算される。次いで、ドット積は、バイアスｂと加算されて活性化マップ２１０の位置（４，４）における要素に到達する。一般的に、畳み込み演算は、複数のシフト（又は位置合わせ）ステップと、ドット積ステップと、バイアス（又は加算）ステップとを含む。この実施例では、ドット積計算同士の間でフィルタを空間位置（ステップサイズ又はストライドと呼ぶ）１つ分シフトしたが、２、３等の他のステップサイズが可能である。
【００１８】
図４は、単一のフィルタ２０４、単一のバイアス２０６、及び単一の活性化マップ２１０の代わりに、Ｆ個のフィルタ４０４、Ｆ個のバイアス４０６、及びＦ個の活性化マップ４１０が存在することを除いては、図２と同様である。Ｆ個のフィルタ４０４、Ｆ個のバイアス４０６及びＦ個の活性化マップ４１０の間の関係は、フィルタｆ1、バイアスｂ1、及び入力４０２が活性化マップｙ1を計算するのに用いられ（図２においてフィルタ２０４、バイアス２０６、及び入力２０２が活性化マップ２１０を計算するのに用いられたのとほぼ同じ手法で）、フィルタｆ2、バイアスｂ2、及び入力４０２が活性化マップｙ2を計算するのに用いられ、以降同様に続くというものである。
【００１９】
図５は、２次元入力２０２及び２次元フィルタ２０４の代わりに、３次元入力５０２及び３次元フィルタ５０４が用いられることを除いて、図２と同様である。活性化マップ５１０に到達するための計算については、図６において下記でより詳細に説明する。図６の関連する説明でより明確になるように、入力５０２及びフィルタ５０４は３次元であるが、活性化マップ５１０は２次元である。フィルタ５０４の各「スライス」（入力５０２の「チャネル」に似ている）は、カーネルと呼ばれる場合がある。図５では、フィルタ５０４は、５つのカーネルで構成され、入力５０２は、５つのチャネルで構成される。まだ明らかでない場合には、フィルタ５０４のカーネルの個数（又はフィルタ５０４の「ｚ」次元のサイズ）は、入力５０２のチャネルの個数（又は入力５０２の「ｚ」次元のサイズ）に一致しなければならない。畳み込み演算中に、入力５０２のチャネル１は、フィルタ５０４のカーネル１と位置合わせし、入力５０２のチャネル２は、フィルタ５０４のカーネル２と位置合わせし、以降同様に続く。典型的には、畳み込み演算中に、入力５０２に対するフィルタ５０４のｚ次元の変換はない。
【００２０】
図６の一行目は、活性化マップ５１０の位置（ｘ＝１，ｙ＝１）における要素の計算を表している。一行目に示すように、フィルタ５０４の中心軸５０６（中心軸はｚ軸に対して平行に描いている）は、入力５０２のｚ∈｛１，…，５｝に対する位置（１，１，ｚ）における要素と位置合わせされる。フィルタ５０４と、該フィルタ５０４と空間的に位置合わせされた入力５０２の２０個の値（チャネルあたりに４つの位置合わせされた値×５つのチャネル）との間のドット積が計算される。次いで、ドット積は、バイアスｂと加算されて活性化マップ５１０の位置（１，１）における要素に到達する。
【００２１】
図６の二行目は、活性化マップ５１０の位置（１，２）における要素の計算を表している。二行目に示すように、フィルタ５０４の中心軸５０６は、入力５０２のｚ∈｛１，…，５｝に対する位置（１，２，ｚ）における要素と位置合わせされる。フィルタ５０４と、該フィルタ５０４と空間的に位置合わせされた入力５０２の３０個の値（チャネルあたりに６つの位置合わせされた値×５つのチャネル）との間のドット積が計算される。次いで、ドット積は、バイアスｂと加算されて活性化マップ５１０の位置（１，２）における要素に到達する。
【００２２】
図６の三行目は、活性化マップ５１０の位置（１，３）における要素の計算を表している。三行目に示すように、フィルタ５０４の中心軸５０６は、入力５０２のｚ∈｛１，…，５｝に対する位置（１，３，ｚ）における要素と位置合わせされる。フィルタ５０４と、該フィルタ５０４と空間的に位置合わせされた入力５０２の３０個の値（チャネルあたりに６つの位置合わせされた値×５つのチャネル）との間のドット積が計算される。次いで、ドット積は、バイアスｂと加算されて活性化マップ５１０の位置（１，３）における要素に到達する。
【００２３】
図６の四行目は、活性化マップ５１０の位置（４，４）における要素の計算を表している。四行目に示すように、フィルタ５０４の中心軸５０６は、入力５０２のｚ∈｛１，…，５｝に対する位置（４，４，ｚ）における要素と位置合わせされる。フィルタ５０４と、該フィルタ５０４と空間的に位置合わせされた入力５０２の２０個の値（チャネルあたりに４つの位置合わせされた値×５つのチャネル）との間のドット積が計算される。次いで、ドット積は、バイアスｂと加算されて活性化マップ５１０の位置（４，４）における要素に到達する。
【００２４】
図７は、単一の３次元フィルタ５０４、単一のバイアス５０６、及び単一の活性化マップ５１０の代わりに、Ｆ個の３次元フィルタ７０４、Ｆ個のバイアス７０６、及びＦ個の活性化マップ７１０（Ｆ＞１）が存在することを除いて図５と同様である。Ｆ個の３次元フィルタ７０４、Ｆ個のバイアス７０６及びＦ個の活性化マップ７１０の間の関係は、フィルタｆ1、バイアスｂ1、及び入力７０２が活性化マップｙ1を計算するのに用いられ（図５においてフィルタ５０４、バイアス５０６、及び入力５０２が活性化マップ５１０を計算するのに用いられたのとほぼ同じ手法で）、フィルタｆ2、バイアスｂ2、及び入力７０２が活性化マップｙ2を計算するのに用いられ、以降同様に続くというものである。
【００２５】
後に続く図は、図７の畳み込み演算を実施するためのハードウェアアーキテクチャを表している。これらの実施例のうちの多くは、簡略化の目的で２つのフィルタＦ＝２の使用を仮定している。これらの実施例は更に、フィルタ７０４が３×３カーネル（すなわち、各カーネルは９つの重みで構成される）を用いて構築されることを仮定している。しかしながら、本明細書で記載される設計概念／アーキテクチャは、他の次元を有するカーネルに対応するように改変することができる。
【００２６】
図８は、本発明の１つの実施形態による、畳み込みエンジン７０８を示している。畳み込みエンジン７０８（図８に示される）は、畳み込み演算子（「ｃｏｎｖ」）７０８（図７に示される）のハードウェアアーキテクチャである。畳み込みエンジン７０８は、次式のデータ記憶要素アレイを有する２Ｄシフトレジスタを含むことができる。
【数１】
2021517702.tif 000003
図８に記載の簡素化された実施例では、アレイは４×４アレイである。データ記憶要素の各々は、複数のＤフリップフロップによって形成することができる（すなわち、１つのＤフリップフロップが、データ信号の各ビットを記憶する）。従って、データ記憶要素ｄ1,1が８ビットを記憶するとした場合、ｄ1,1は、８つのＤフリップフロップから形成することができる。データ記憶要素のペア間の矢印の各々は、電気接続部を表す（すなわち、配線として実装することができる）。例えば、データ記憶要素ｄ1,1（参照番号８０２）は、記憶要素ｄ2,1（参照番号８０２）に電気接続部８０４を介して電気結合することができる。更に、この矢印は、データの一方向の流れを表すことができる（すなわち、データは、データ記憶要素ｄ1,1からデータ記憶要素ｄ2,1に伝送されるが、ｄ2,1からデータ記憶要素ｄ1,1には伝送されない）。以下の検討では、データ記憶要素の最初の行を「ヘッダー」と呼ぶ場合があり、データ記憶要素の最後の行を「フッター」と呼ぶ場合がある。
【００２７】
畳み込みエンジン７０８は、次式の畳み込み器ユニットアレイを更に含むことができる。
【数２】
2021517702.tif 000004
【００２８】
簡潔にするために、畳み込み器ユニットアレイを「畳み込み器アレイ」と呼ぶ場合がある。図８の簡素化された実施例では、畳み込み器アレイは、２×４アレイである。畳み込み器ユニットＣＵ1,2は、参照番号８０６で標記している（後の検討を容易にするため）。より典型的な実施形態は、図３０に記載の例示的な実施形態などと同様に、より多くの畳み込み器ユニットを含むことになることを理解されたい。２Ｄシフトレジスタの演算及び畳み込み器ユニットの演算について、以下の図において詳細に説明する。
【００２９】
図９Ａは、本発明の１つの実施形態による、畳み込みエンジン７０８へのデータ値のロードを示している。入力の各チャネルは、畳み込みエンジン７０８内に逐次方式でロードすることができる。図９Ａは、畳み込みエンジン７０８への入力７０２の第１のチャネル７０２ａのロードを示している（チャネルには、左から右の方向で１から５の番号が付与されたとする）。図１０Ｂ〜図１０Ｄにおいて説明されるように、特定のチャネルの行は、畳み込みエンジン７０８内に逐次方式でロードすることができる。「行」及び「列」等の用語は、便宜的に且つ図において要素がどのように示されているかに関して用いられることに留意されたい。しかしながら、かかる用語の意味は、チップ上で回路要素がどのようにレイアウトされているかに言い換えることができ、又はそうでない場合もあり、この場合、観察者のチップに対する向きに応じて、行を列として解釈することができ、その逆もまた同様である。
【００３０】
簡略化の目的で、畳み込みエンジンのハードウェアアーキテクチャを説明する第１の実施例は、入力チャネルの列数が畳み込み器アレイの列数に等しい場合を扱うことにする。図９Ｂでは、入力チャネル７０２ａの列数は、畳み込み器アレイの列数に等しいと仮定する。例えば、入力チャネル７０２ａは、データ値の１０×４行列とすることができる。図２７Ａ〜図２７Ｃは、入力チャネル列数が畳み込み器アレイの列数よりも多いシナリオをどのように扱うかを表している。図２８、図２９Ａ、及び図２９Ｂは、入力チャネルの列数が畳み込み器アレイの列数よりも少ない場合を扱うための２つのスキームを表している。
【００３１】
典型的には、各畳み込み器ユニットのメモリ制約条件に起因して、畳み込みエンジン７０８は、出力を保存する（畳み込み器ユニットとは別個の記憶場所に複写される。図３０に記載のメモリ３００２を参照）ことが必要になる前に、データ値のある一定数の隣接行に対してのみ畳み込み演算を計算することができる。出力が保存されると、畳み込みエンジン７０８は、隣接行の次のセットに進むことができる。詳細には、各畳み込み器ユニットがｎ個のアキュムレータを有するように構築された場合には、畳み込みエンジン７０８は、ｎ個の隣接入力行（これに加えて、下記で説明する２つのパディング行）の出力を計算することができる。説明を簡略化する目的で、ｎ個の隣接入力行は、データの「水平ストライプ」と呼ぶことにする。図９Ｂの簡素化された実施例では、２つの水平ストライプ９０２ａ、９０２ｂが存在する（しかしながら、実際にはあらゆる個数の水平ストライプが存在してもよいことを理解されたい）。畳み込み器ユニットのメモリ制約条件に起因して、畳み込みエンジン７０８は、水平ストライプを逐次的に処理することができる。図９Ｂの実施例では、水平ストライプ９０２ａが最初に処理され、その後水平ストライプ９０２ｂが処理される。
【００３２】
以下でより明確になる理由から、外側エッジである先頭行（すなわち、ロードすべき水平ストライプの最初の行）は、ゼロパディング行のロードの後になることができ（水平ストライプ９０２ａの行ｎの場合のように）、外側エッジである後尾行（すなわち、ロードすべき水平ストライプの最後の行）のロードの後に、ゼロパディング行のロードが続くことができ（水平ストライプ９０２ｂの行１の場合のように）、内側エッジである先頭行のロードは、データパディング行のロードの後になることができ（水平ストライプ９０２ｂの行ｎの場合のように）、内側エッジである後尾行のロードの後に、データパディング行のロードが続くことができる（水平ストライプ９０２ａの行１の場合のように）。まだ明らかでない場合には、「外側エッジ」は、入力チャネルの外側境界を形成する水平ストライプの先頭行又は後尾行を指し、他方、内側エッジは、入力チャネルの外側境界の一部分ではない水平ストライプの先頭行又は後尾行を指す。ゼロパディング行又はデータパディング行の理由は、３×３フィルタが畳み込み出力を計算するために対象行の上側の行又は下側の行からのデータを必要とすることに結び付けられる。５×５フィルタでは、２つのパディング行（ストライプの最上位行に対する）及び２つのパディング行（ストリップの最下位行に対する）又は合計で４つのパディング行が必要とされたであろう。
【００３３】
図９Ｂの特定の実施例では、太線及び破線の矩形内にあるｎ＋２個の行が、畳み込みエンジン７０８にロードされる。ｎ＋２個の行は、ゼロパディング行、水平ストライプ９０２ａのｎ個の行、及びデータパディング行（水平ストライプ９０２ｂの行ｎに等しい）を含む。
【００３４】
図９Ｃ〜図９Ｄは、本発明の１つの実施形態による、畳み込みエンジン７０８へのフィルタ重みのロードを示している。より具体的には、図９Ｃは、畳み込み器アレイの最初の行の畳み込み器ユニット（すなわち、ＣＵ1,1、ＣＵ1,2、ＣＵ1,3、及びＣＵ1,4）の各々へのカーネル７０４ａの９つの重みのロードを示しており、図９Ｄは、畳み込み器アレイの２番目の行の畳み込み器ユニット（すなわち、ＣＵ2,1、ＣＵ2,2、ＣＵ2,3、及びＣＵ2,4）の各々へのカーネル７０４ｂの９つの重みのロードを示している。カーネル７０４ａは、フィルタｆ1の最初のカーネルであり、その重みの各々は、（フィルタｆ1、カーネル１）に対する略記である、上付き文字「１，１」で標記されている。カーネル７０４ｂは、フィルタｆ2の最初のカーネルであり、その重みの各々は、（フィルタｆ2、カーネル１）に対する略記である上付き文字「２，１」で標記されている。
【００３５】
図１０Ａ〜図１０Ｂは、２Ｄシフトレジスタへのゼロ値の行のロードを示している。図１０Ｂ〜図１０Ｄは、最初の入力チャネル７０２ａから２Ｄシフトレジスタへのデータ値の行毎のロード及び２Ｄシフトレジスタを通したデータ値の行毎のシフトを示している。データ値ｘn,1、ｘn,2、ｘn,3、及びｘn,4は、入力チャネル７０２ａの水平ストライプ９０２ａの行ｎからの値を表すことができる。データ値ｘn-1,1、ｘn-1,2、ｘn-1,3、及びｘn-1,4は、入力チャネル７０２ａの水平ストライプ９０２ａの行ｎ−１からの値を表すことができる。データ値ｘn-2,1、ｘn-2,2、ｘn-2,3、及びｘn-2,4は、入力チャネル７０２ａの水平ストライプ９０２ａの行ｎ−２からの値を表すことができる。
【００３６】
水平ストライプ９０２ａの行ｎがデータ記憶要素の２番目の行（すなわち、ｄ2,1、ｄ2,2、ｄ2,3、及びｄ2,4）内にロードされると、データ記憶要素の２番目の行に対応する畳み込み器ユニットの最初の行（すなわち、ＣＵ1,1、ＣＵ1,2、ＣＵ1,3、及びＣＵ1,4）を活性化することができる。「対応する」とは、畳み込み器ユニットＣＵ1,1とデータ記憶要素ｄ2,1との間、畳み込み器ユニットＣＵ1,2とデータ記憶要素ｄ2,2との間などに論理的対応関係が存在することを意味する。データ記憶要素と畳み込み器ユニットとの間の対応関係は、データ記憶要素が対応する畳み込み器ユニットの内部に描かれることにより図示される。多数の畳み込み器ユニットを有するより典型的な実施形態では、畳み込み器ユニットのほとんどは、その対応するデータ記憶要素及びこのデータ記憶要素の８つの空間的隣接要素（すなわち隣接のデータ記憶要素）からデータ値を受け取ることになる。かかる関係は、少数の畳み込み器ユニットが存在する図１１Ａの例示的な畳み込みエンジンからは理解するのがより困難である。
【００３７】
図１１Ａにおいて、活性畳み込み器ユニットが太線で描かれ、不活性畳み込み器ユニットが非太線を用いて描かれている。１つの実施形態では、「活性」は、畳み込み器ユニットに電源がオンにされることを意味し、一方、「不活性」は、節電のため畳み込み器ユニットの電源がオフにされることを意味する。コントローラ（図２２にコントローラ２２０２として、図３０にコントローラ３００６として示しているが、提示を簡潔にするために、他の図には示されていない）は、畳み込み器ユニットの電源をオン及びオフにする役割を担うことができる。コントローラは、水平ストライプの行ｎからのデータが畳み込み器ユニットの行に対応するデータ記憶要素内にロードされると、畳み込み器ユニットの当該行に電源オンすることができる。コントローラは、水平ストライプの行１からのデータが畳み込み器ユニットの行に対応するデータ記憶要素から転送されると、畳み込み器ユニットの当該行を電源オンすることができる。
【００３８】
図１１Ａ及び図１１Ｂは、図１０Ｄに示されるデータ値の空間的な方向に関する４つの活性畳み込み器ユニットのうちの２つの活性畳み込み器ユニットの処理を表している。２つの別の図において２つの畳み込み器ユニットの処理が記載されているが、かかる処理は通常、クロックサイクル当たりの計算数を増加させるために並列して（すなわち同時に）行われることを理解されたい。
【００３９】
図１１Ａに示すように、畳み込み器ユニットＣＵ1,1（典型的には、畳み込み器アレイの左右のエッジに位置する畳み込み器ユニットに対して）は、５つの隣接データ記憶要素から複数のデータ値及び／又はゼロ値を受け取り、畳み込み器ユニットＣＵ1,1に対応するデータ記憶要素から１つのデータ値を受け取る。より具体的には、畳み込み器ユニットＣＵ1,1は、
データ記憶要素ｄ1,1から電気接続部１１００ａを介してデータ値ｘn-1,1、
データ記憶要素ｄ1,2から電気接続部１１００ｂを介してデータ値ｘn-1,2、
データ記憶要素ｄ2,1から電気接続部（示していない）を介してデータ値ｘn,1、
データ記憶要素ｄ2,2から電気接続部１１００ｃを介してデータ値ｘn,2、
データ記憶要素ｄ3,1から電気接続部１１００ｄを介してゼロ値、及び
データ記憶要素ｄ3,2から電気接続部１１００ｅを介してゼロ値、
を受け取る。描写を明瞭にするために、畳み込み器ユニットとデータ記憶要素との間の電気相互接続部（すなわち太線矢印）は、検討に必要とされる時にのみ示されている。
【００４０】
データ値及び／又はゼロ値が受け取られると、畳み込み器ユニットＣＵ1,1は、ｗ21,1ｘn-1,1＋ｗ31,1ｘn-1,2＋ｗ51,1ｘn,1＋ｗ61,1ｘn,2（式中のｗ21,1、ｗ31,1、ｗ51,1、及びｗ61,1は、図９Ｃに示されるカーネル７０４ａの９つの重みのうちの４つである）によって定義される部分和ｙ1を計算して、部分和ｙ1を畳み込み器ユニットＣＵ1,1のアキュムレータ１１０２ａ内に記憶することができる。アキュムレータ１１０２ａは、ｎ個のアキュムレータの線形アレイの一部とすることができ、この場合ｎは、水平ストライプ９０２ａの内部の行数である。アキュムレータ１１０２ａは、水平ストライプの行ｎに対応する部分和を記憶するように構成することができ、アキュムレータ１１０２ｂは、水平ストライプの行ｎ−１に対応する部分和を記憶するように構成することができ、以降同様である。説明を明瞭にするために、畳み込み器ユニットＣＵ1,1の最下位インスタンスと最上位インスタンスとは１つの同じ畳み込み器ユニットであり、最下位インスタンスは、最上位インスタンスの更なる詳細を示すことに留意されたい。
【００４１】
図１１Ｂに示すように、畳み込み器ユニットＣＵ1,2は、８つの隣接データ記憶要素から複数のデータ値及び／又はゼロ値を受け取り、畳み込み器ユニットＣＵ1,2に対応するデータ記憶要素から１つのデータ値を受け取る。より具体的には、畳み込み器ユニットＣＵ1,2は、
データ記憶要素ｄ1,1から電気接続部１１００ｆを介してデータ値ｘn-1,1、
データ記憶要素ｄ1,2から電気接続部１１００ｇを介してデータ値ｘn-1,2、
データ記憶要素ｄ1,3から電気接続部１１００ｈを介してデータ値ｘn-1,3、
データ記憶要素ｄ2,1から電気接続部１１００ｉを介してデータ値ｘn,1、
データ記憶要素ｄ2,2から電気接続部（示していない）を介してデータ値ｘn,2、
データ記憶要素ｄ2,3から電気接続部１１００ｊを介してデータ値ｘn,3、
データ記憶要素ｄ3,1から電気接続部１１００ｋを介してゼロ値、
データ記憶要素ｄ3,2から電気接続部１１００ｌを介してゼロ値、及び
データ記憶要素ｄ3,3から電気接続部１１００ｍを介してゼロ値、
を受け取る。
【００４２】
データ値が受け取られると、畳み込み器ユニットＣＵ1,2は、ｗ11,1ｘn-1,1＋ｗ21,1ｘn-1,2＋ｗ31,1ｘn-1,3＋ｗ41,1ｘn,1＋ｗ51,1ｘn,2＋ｗ61,1ｘn,3（式中のｗ11,1、ｗ21,1、ｗ31,1、ｗ41,1、ｗ51,1、及びｗ61,1は、図９Ｃに示されるカーネル７０４ａの９つの重みのうちの６つである）によって定義される部分和ｙ2を計算して、部分和ｙ2を畳み込み器ユニットＣＵ1,2のアキュムレータ１１０４ａ内に記憶することができる。
【００４３】
同様の処理が、ＣＵ1,3及びＣＵ1,4によって実施され、従って、簡潔化の目的でこれらの計算の詳細は省略した。図１０Ｄに示されるデータ値の空間的な方向に関して４つの活性畳み込み器ユニットによる処理の完結時には、４つの部分和が計算され、図１１Ｃに示すように、アキュムレータ１１０２ａ、１１０４ａ、１１０６ａ、及び１１０８ａ内に記憶される。
【００４４】
図１２は、データ値及び／又はゼロ値がデータ記憶要素１行だけ下方にシフトされ、水平ストライプ９０２ａのｎ−２行からのデータ値ｘn-2,1、ｘn-2,2、ｘn-2,3、及びｘn-2,4が２Ｄシフトレジスタ内にロードされた後の２Ｄシフトレジスタを示している。水平ストライプ９０２ａの行ｎがデータ記憶要素ｄ3,1、ｄ3,2、ｄ3,3、及びｄ3,4内にロードされると、ＣＵ1,1、ＣＵ1,2、ＣＵ1,3、及びＣＵ1,4に加えて、対応する畳み込み器ユニットＣＵ2,1、ＣＵ2,2、ＣＵ2,3、及びＣＵ2,4が活性化される（図１３Ａに示されるように）。
【００４５】
図１３Ａ〜図１３Ｄは、本発明の１つの実施形態による、８つの活性畳み込み器ユニットのうちの４つの活性畳み込み器ユニットの処理を表している。４つの別個の図において４つの畳み込み器ユニットの処理が記載されているが、かかる処理は通常、クロックサイクル当たりの計算数を増加させるために並列して（すなわち同時に）行われることを理解されたい。
【００４６】
図１３Ａに示すように、畳み込み器ユニットＣＵ1,1は、５つの隣接データ記憶要素及び１つの対応するデータ記憶要素からデータ値を受け取ることができる。畳み込み器ユニットＣＵ1,1は、ｗ21,1ｘn-2,1＋ｗ31,1ｘn-2,2＋ｗ51,1ｘn-1,1＋ｗ61,1ｘn-1,2＋ｗ81,1ｘn,1＋ｗ91,1ｘn,2によって定義される部分和ｙ5を計算し、該部分和ｙ5を畳み込み器ユニットＣＵ1,1のアキュムレータ１１０２ｂ内に記憶することができる。
【００４７】
図１３Ｂに示すように、畳み込み器ユニットＣＵ1,2は、８つの隣接データ記憶要素及び１つの対応するデータ記憶要素からデータ値を受け取ることができる。畳み込み器ユニットＣＵ1,2は、ｗ11,1ｘn-2,1＋ｗ21,1ｘn-2,2＋ｗ31,1ｘn-2,3＋ｗ41,1ｘn-1,1＋ｗ51,1ｘn-1,2＋ｗ61,1ｘn-1,3＋ｗ71,1ｘn,1＋ｗ81,1ｘn,2＋ｗ91,1ｘn,3によって定義される部分和ｙ6を計算し、該部分和ｙ6を畳み込み器ユニットＣＵ1,2のアキュムレータ１１０４ｂ内に記憶することができる。
【００４８】
図１３Ｃに示すように、畳み込み器ユニットＣＵ1,3は、８つの隣接データ記憶要素及び１つの対応するデータ記憶要素からデータ値を受け取ることができる。畳み込み器ユニットＣＵ1,3は、ｗ11,1ｘn-2,2＋ｗ21,1ｘn-2,3＋ｗ31,1ｘn-2,4＋ｗ41,1ｘn-1,2＋ｗ51,1ｘn-1,3＋ｗ61,1ｘn-1,4＋ｗ71,1ｘn,2＋ｗ81,1ｘn,3＋ｗ91,1ｘn,4によって定義される部分和ｙ7を計算し、該部分和ｙ7を畳み込み器ユニットＣＵ1,3のアキュムレータ１１０６ｂ内に記憶することができる。
【００４９】
図１３Ｄに示すように、畳み込み器ユニットＣＵ2,1は、５つの隣接データ記憶要素及び１つの対応するデータ記憶要素からデータ値及び／又はゼロ値を受け取ることができる。次いで、畳み込み器ユニットＣＵ2,1は、ｗ22,1ｘn-1,1＋ｗ32,1ｘn-1,2＋ｗ52,1ｘn,1＋ｗ62,1ｘn,2（式中のｗ22,1、ｗ32,1、ｗ52,1、及びｗ62,1は、図９Ｄに示されるカーネル７０４ｂの９つの重みのうちの４つである）によって定義される部分和ｙ9を計算し、該部分和ｙ9を畳み込み器ユニットＣＵ2,1のアキュムレータ１１１０ａ内に記憶することができる。
【００５０】
同様の処理をＣＵ1,4、ＣＵ2,2、ＣＵ2,3、及びＣＵ2,4によって実施することができ、従って、簡潔化の目的でこれらの計算の詳細は省略した。図１２に示されるデータ値の空間的な方向に関する活性畳み込み器ユニットによる処理の完結時には、８つの（更なる）部分和が計算されて、図１３Ｅに示されるように、アキュムレータ１１０２ｂ、１１０４ｂ、１１０６ｂ、１１０８ｂ、１１１０ａ、１１１２ａ、１１１４ａ、及び１１１６ａ内に記憶されている。
【００５１】
水平ストライプ９０２ａの行１が２Ｄシフトレジスタを通してシフトされ終わるまで、２Ｄシフトレジスタ及び複数の畳み込みユニットの処理が同様の方式で続行される。この時点で、次の入力チャネルのデータ値及びこのチャネルに対応するカーネルのパラメータ（すなわち重み）が、図１４Ａ〜図１４Ｄに示されるように畳み込みエンジン内にロードすることができる。
【００５２】
図１４Ａは、本発明の１つの実施形態による、第２の入力チャネル７０２ｂから畳み込みエンジン７０８へのデータ値のロードを示している。図１４Ｂに詳細に示すように、第２の入力チャネル７０２ｂは、水平ストライプ９０４ａ及び９０４ｂを含むことができ、水平ストライプ９０４ａは、水平ストライプ９０２ａがロードされたのと同様の方式で畳み込みエンジン７０８内にロードすることができる。
【００５３】
図１４Ｃ〜図１４Ｄは、本発明の１つの実施形態による、畳み込みエンジン７０８へのフィルタ重みのロードを示している。より具体的には、図１４Ｃは、畳み込み器アレイの最初の行の畳み込み器ユニット（すなわち、ＣＵ1,1、ＣＵ1,2、ＣＵ1,3、及びＣＵ1,4）の各々へのカーネル７０４ｃの９つの重みのロードを示しており、図１４Ｄは、畳み込み器アレイの２番目の行の畳み込み器ユニット（すなわち、ＣＵ2,1、ＣＵ2,2、ＣＵ2,3、及びＣＵ2,4）の各々へのカーネル７０４ｂの９つの重みのロードを示している。カーネル７０４ｃは、フィルタｆ1の第２のカーネルであり、その重みの各々は、（フィルタｆ1、カーネル２）に対する略記である上付き文字「１，２」で標記されている。カーネル７０４ｄは、フィルタｆ2の第２のカーネルであり、その重みの各々は、（フィルタｆ2、カーネル２）に対する略記である上付き文字「２，２」で標記されている。
【００５４】
図１５Ａ〜図１５Ｂは、２Ｄシフトレジスタへのゼロ値行のロードを示している。図１５Ｂ〜図１５Ｄは、第２の入力チャネル７０２ｂから２Ｄシフトレジスタへのデータ値の行毎のロードと、２Ｄシフトレジスタを通したデータ値の行毎のシフトとを示している。データ値ｘ′n,1、ｘ′n,2、ｘ′n,3、及びｘ′n,4は、入力チャネル７０２ｂの水平ストライプ９０４ａの行ｎからの値を表すことができる。データ値ｘ′n-1,1、ｘ′n-1,2、ｘ′n-1,3、及びｘ′n-1,4は、入力チャネル７０２ｂの水平ストライプ９０４ａの行ｎ−１からの値を表すことができる。データ値ｘ′n-2,1、ｘ′n-2,2、ｘ′n-2,3、及びｘ′n-2,4は、入力チャネル７０２ｂの水平ストライプ９０４ａの行ｎ−２からの値を表すことができる。水平ストライプ９０４ａの行ｎがデータ記憶要素の２番目の行内にロードされると、畳み込み器ユニットの最初の行を活性化することができる（図１６Ａに示されるように）。
【００５５】
図１６Ａ及び図１６Ｂは、図１５Ｄに示されるデータ値の空間的な方向に関する４つの活性畳み込み器ユニットのうちの２つの活性畳み込み器ユニットの処理を表している。図１６Ａに示すように、畳み込み器ユニットＣＵ1,1は、５つの隣接データ記憶要素から複数のデータ値及び／又はゼロ値を受け取り、畳み込み器ユニットＣＵ1,1に対応するデータ記憶要素から１つのデータ値を受け取ることができる。データ値が受け取られると、畳み込み器ユニットＣＵ1,1は、ｗ21,2ｘ′n-1,1＋ｗ31,2ｘ′n-1,2＋ｗ51,2ｘ′n,1＋ｗ61,2ｘ′n,2（式中のｗ21,2、ｗ31,2、ｗ51,2、及びｗ61,2は、図１４Ｃに示されるカーネル７０４ｃの９つの重みのうちの４つである）によって定義される部分和ｙ13を計算することができる。部分和ｙ13は、ｙ1（行ｎに関して畳み込み器ユニットＣＵ1,1によって先に計算された部分和）と加算することができ、新しい部分和ｙ1＋ｙ13をアキュムレータ１１０２ａ内に記憶することができる。
【００５６】
図１６Ｂに示すように、畳み込み器ユニットＣＵ1,2は、８つの隣接データ記憶要素から複数のデータ値及び／又はゼロ値を受け取り、畳み込み器ユニットＣＵ1,2に対応するデータ記憶要素から１つのデータ値を受け取ることができる。データ値及び／又はゼロ値が受け取られると、畳み込み器ユニットＣＵ1,2は、ｗ11,2ｘ′n-1,1＋ｗ21,2ｘ′n-1,2＋ｗ31,2ｘ′n-1,3＋ｗ41,2ｘ′n,1＋ｗ51,2ｘ′n,2＋ｗ61,2ｘ′n,3（式中のｗ11,2、ｗ21,2、ｗ31,2、ｗ41,2、ｗ51,2、及びｗ61,2は、図１４Ｃに示されるカーネル７０４ｃの９つの重みのうちの６つである）によって定義される部分和ｙ14を計算することができる。部分和ｙ14は、ｙ2（行ｎに関して畳み込み器ユニットＣＵ1,2によって先に計算された部分和）と加算することができ、新しい部分和ｙ2＋ｙ14をアキュムレータ１１０４ａ内に記憶することができる。
【００５７】
同様の処理が、ＣＵ1,3及びＣＵ1,4によって実施され、従って、簡潔化の目的でこれらの計算の詳細は省略した。図１５Ｄに示されるデータ値の空間的な方向に関する４つの活性畳み込み器ユニットによる処理の完結時には、４つの部分和が更新され、図１６Ｃに示されるようにアキュムレータ１１０２ａ、１１０４ａ、１１０６ａ、及び１１０８ａ内に記憶されている。
【００５８】
図１７は、データ値及び／又はゼロ値がデータ記憶要素１行分だけ下方にシフトされ、水平ストライプ９０４ａのｎ−２行からのデータ値ｘ′n-2,1、ｘ′n-2,2、ｘ′n-2,3、及びｘ′n-2,4が２Ｄシフトレジスタ内にロードされた後の２Ｄシフトレジスタを示している。水平ストライプ９０４ａの行ｎがデータ記憶要素ｄ3,1、ｄ3,2、ｄ3,3、及びｄ3,4内にロードされると、ＣＵ1,1、ＣＵ1,2、ＣＵ1,3、及びＣＵ1,4に加えて、対応する畳み込み器ユニットＣＵ2,1、ＣＵ2,2、ＣＵ2,3、及びＣＵ2,4が活性化される（図１８Ａに示されるように）。
【００５９】
図１８Ａ〜図１８Ｂは、本発明の１つの実施形態による、８つの活性畳み込み器ユニットのうちの２つの活性畳み込み器ユニットの処理を表している。図１８Ａに示すように、畳み込み器ユニットＣＵ1,1は、５つの隣接データ記憶要素及び１つの対応するデータ記憶要素からデータ値を受け取ることができる。次いで、畳み込み器ユニットＣＵ1,1は、ｗ21,2ｘ′n-2,1＋ｗ31,2ｘ′n-2,2＋ｗ51,2ｘ′n-1,1＋ｗ61,2ｘ′n-1,2＋ｗ81,2ｘ′n,1＋ｗ91,2ｘ′n,2によって定義される部分和ｙ17を計算することができる。部分和ｙ17は、ｙ5（行ｎ−１に関して畳み込み器ユニットＣＵ1,1によって先に計算された部分和）と加算することができ、新しい部分和ｙ5＋ｙ17をアキュムレータ１１０２ｂ内に記憶することができる。
【００６０】
図１８Ｂに示すように、畳み込み器ユニットＣＵ1,2は、８つの隣接データ記憶要素及び１つの対応するデータ記憶要素からデータ値を受け取ることができる。次いで、畳み込み器ユニットＣＵ1,2は、ｗ11,2ｘ′n-2,1＋ｗ21,2ｘ′n-2,2＋ｗ31,2ｘ′n-2,3＋ｗ41,2ｘ′n-1,1＋ｗ51,2ｘ′n-1,2＋ｗ61,2ｘ′n-1,3＋ｗ71,2ｘ′n,1＋ｗ81,2ｘ′n,2＋ｗ91,2ｘ′n,3によって定義される部分和ｙ18を計算することができる。部分和ｙ18は、ｙ6（行ｎ−１に関して畳み込み器ユニットＣＵ1,2によって先に計算された部分和）と加算することができ、新しい部分和ｙ6＋ｙ18をアキュムレータ１１０４ｂ内に記憶することができる。
【００６１】
同様の処理が、畳み込み器ユニットＣＵ1,3、ＣＵ1,4、ＣＵ2,1、ＣＵ2,2、ＣＵ2,3、及びＣＵ2,4によって実施され、従って、簡潔化の目的でこれらの計算の詳細は省略した。図１７に示されるデータ値の空間的な方向に関する活性畳み込み器ユニットによる処理の完結時には、８つの（更なる）部分和が更新されて、図１８Ｃに示されるように、アキュムレータ１１０２ｂ、１１０４ｂ、１１０６ｂ、１１０８ｂ、１１１０ａ、１１１２ａ、１１１４ａ、及び１１１６ａ内に記憶されている。
【００６２】
水平ストライプ９０４ａの行１が２Ｄシフトレジスタを通してシフトされ終わるまで、２Ｄシフトレジスタ及び複数の畳み込みユニットの処理が同様の方式で続行される。次いで、２Ｄシフトレジスタ及び複数の畳み込みユニットの処理は、残りの入力チャネルの全てが最初の２つの入力チャネルの処理と同様の方式で処理され終わるまで続行される。
【００６３】
この時点（又はプロセス中のより早い時点）で、畳み込みユニット内にバイアス値をロードすることができる。より具体的には、図１９Ａは、畳み込み器ユニット（ＣＵ1,1、ＣＵ1,2、ＣＵ1,3、ＣＵ1,4）の最初の行へのバイアス値ｂ1のロードを示し、図１９Ｂは、畳み込み器ユニット（ＣＵ2,1、ＣＵ2,2、ＣＵ2,3、ＣＵ2,4）の２番目の行へのバイアス値ｂ2のロードを示している。畳み込み器ユニットの最初の行によって計算された部分和は、バイアス値ｂ1によってバイアスすることができ、畳み込み器ユニットの２番目の行によって計算された部分和は、バイアス値ｂ2によってバイアスすることができ（図２０に示されるように）、畳み込み演算の出力が得られる。
【００６４】
これまでの実施例において、畳み込み器アレイの行数はフィルタの個数に等しいと仮定していた。しかしながら、この関係は常に成り立つわけではない。フィルタの個数が、畳み込み器アレイの行数よりも少ない場合には、畳み込み器アレイの未使用の行を不活性化することができる。フィルタの個数が、畳み込み器アレイの行数よりも多い場合には、本質的には、畳み込み演算を繰り返すことが必要となる。例えば、６つのフィルタと、３つの畳み込み器ユニット行だけが存在する場合には、フィルタ１〜３に対して畳み込み演算を実施することができ、幾つかの畳み込み演算は、フィルタ１〜３がフィルタ４〜６で置き換えられることになることを除いて繰り返されることになる。
【００６５】
次に、上記で説明した畳み込みエンジンのアーキテクチャに対するある動機付けが提示される。本質的に、このアーキテクチャは、データ記憶要素の論理出力数（回路構成要素のサイズ決定に関連する）と、クロックサイクル当たりの計算数（計算速度に関連する）とを上手く均衡を取ることを試みる。単にクロックサイクル当たりの計算数を最大化するだけの１つの極端な場合には、ＣＵ1,1、ＣＵ2,1、ＣＵ3,1、…、が同じ６つのデータ記憶要素に結線され、ＣＵ1,2、ＣＵ2,2、ＣＵ3,2が同じ９つのデータ記憶要素に結線される等して、２Ｄシフトレジスタは、３つのデータ記憶要素行へと低減することができる。クロックサイクル当たりの計算数は、上記で説明したアーキテクチャよりも多くはなるが、データ記憶要素の論理出力数はかなり多くなる（高い出力キャパシタンスを駆動するためにより大きい回路構成要素を必要とする）。単に論理出力数を最小限に抑える他方の極端な場合には、２Ｄシフトレジスタの３つの隣接行は、専らフィルタ１に対して用いることができ、２Ｄシフトレジスタの３つの隣接行は、専らフィルタ２に対して用いることができ、以降同様である。論理出力数は、上記で説明したアーキテクチャよりも少なくなるが、クロックサイクル当たりの計算数は、上記で説明したアーキテクチャと比較して、本質的に３分の２だけ低減されることになる。この説明を踏まえると、上記で説明したアーキテクチャに対する動機付けは、データ記憶要素の論理出力数とクロックサイクル当たりの計算数との間で均衡を取るものであることがここで明らかになろう。
【００６６】
図２１は、本発明の１つの実施形態による、畳み込み器ユニット８０６（すなわちＣＵ1,2）の内部構成要素を示している。畳み込み器ユニット８０６は、９つの乗算器（２１０２ａ，…，２１０２ｉ）を含むことができる。乗算器の各々は、データ記憶要素（すなわち、２Ｄシフトレジスタのデータ記憶要素のうちの１つ）に電気結合することができ、また、対応するデータ記憶要素内に記憶されたデータ値を受け取るように構成することができる。詳細には、乗算器２１０２ａ、２１０２ｂ、２１０２ｃ、２１０２ｄ、２１０２ｅ、２１０２ｆ、２１０２ｇ、２１０２ｈ、及び２１０２ｉは、データ記憶要素ｄ1,1、ｄ1,2、ｄ1,3、ｄ2,1、ｄ2,2、ｄ2,3、ｄ3,1、ｄ3,2、及びｄ3,3に電気的に結合され、データ記憶要素２１０２ａ、２１０２ｂ、２１０２ｃ、２１０２ｄ、２１０２ｅ、２１０２ｆ、２１０２ｇ、２１０２ｈ、及び２１０２ｉからデータ値ｘ1、ｘ2、ｘ3、ｘ4、ｘ5、ｘ6、ｘ7、ｘ8、及びｘ9をそれぞれ受け取るように構成される。データ記憶要素内に記憶されたデータ値は通常、各クロックサイクルと共に変化する。例えば、図１０Ｃの関連において、ｘ1はｘn,1に等しくなり、図１０Ｄでは、ｘ1は図１０Ｄに記載のｘn-1,1に等しくなり、以降同様に続く。他のデータ値に対しても同じことが言える。
【００６７】
乗算器の各々は更に、重みを受け取るように構成される。詳細には、乗算器２１０２ａ、２１０２ｂ、２１０２ｃ、２１０２ｄ、２１０２ｅ、２１０２ｆ、２１０２ｇ、２１０２ｈ、及び２１０２ｉは、それぞれ重みｗ1、ｗ2、ｗ3、ｗ4、ｗ5、ｗ6、ｗ7、ｗ8、及びｗ9を受け取るように構成される。入力データ７０２の各チャネルに対して異なる重みセットをロードすることができる。例えば、図９Ｃの関連では、ｗ1はｗ11,1に等しくなり、図１４Ｃの関連では、ｗ1はｗ11,2に等しくなり、以降同様に続く。
【００６８】
乗算器の各々は、２つの値を乗算して、２つの値の積を生成することができる。詳細には、乗算器２１０２ａ、２１０２ｂ、２１０２ｃ、２１０２ｄ、２１０２ｅ、２１０２ｆ、２１０２ｇ、２１０２ｈ、及び２１０２ｉは、データ値ｘ1、ｘ2、ｘ3、ｘ4、ｘ5、ｘ6、ｘ7、ｘ8、及びｘ9と重みｗ1、ｗ2、ｗ3、ｗ4、ｗ5、ｗ6、ｗ7、ｗ8、及びｗ9とを乗算して、それぞれｗ1ｘ1、ｗ2ｘ2、ｗ3ｘ3、ｗ4ｘ4、ｗ5ｘ5、ｗ6ｘ6、ｗ7ｘ7、ｗ8ｘ8、及びｗ9ｘ9を生成することができる。信号値（データ値と重みとを含む）が対数領域で表される実施形態では、ビットシフターと加算器とを用いて特殊乗算器を実装することができる（この特殊乗算器は、対数から真数への変換を更に実施する）。かかる実装についての更なる詳細に関しては、例えば、Ｄａｉｓｕｋｅ  Ｍｉｙａｓｈｉｔａ他著「Ｃｏｎｖｏｌｕｔｉｏｎａｌ  Ｎｅｕｒａｌ  Ｎｅｔｗｏｒｋｓ  ｕｓｉｎｇ  Ｌｏｇａｒｉｔｈｍｉｃ  Ｄａｔａ  Ｒｅｐｒｅｓｅｎｔａｔｉｏｎ」、ａｒＸｉｖ  ｐｒｅｐｒｉｎｔ  ａｒＸｉｖ：１６０３．０１０２５、２０１６年を参照されたい。従って、明瞭化の目的で、積が生成されると述べる時には、かかる計算は、乗算器又はビットシフターと加算器との組み合わせを用いて実装することができることを理解されたい。
【００６９】
畳み込み器ユニット８０６は更に、複数の加算器を含むことができ、加算器によって加算される値は、制御信号ｓ１に依存することができる。データ値ｘ1，…，ｘ9が第１の入力チャネル７０２ａからのものである時には、制御信号ｓ１を０に設定することができ、これにより出力選択器２１０６がゼロ値を加算器２１０４ｈに供給するようになる。この演算モードでは、部分和ｗ1ｘ1＋ｗ2ｘ2＋ｗ3ｘ3＋ｗ4ｘ4＋ｗ5ｘ5＋ｗ6ｘ6＋ｗ7ｘ7＋ｗ8ｘ8＋ｗ9ｘ9が計算され、この部分和は、何れかの以前の部分和に基づくものではない。次いで、部分和は、データ値が水平ストライプのどの行からのものであるかに依存してアキュムレータ１１０４ａ、１１０４ｂ等のうちの１つに記憶される。データ値が行ｎからのものである場合には、部分和はアキュムレータ１１０４ａ内に記憶されることになり、データ値が行ｎ−１からのものである場合には、部分和はアキュムレータ１１０４ｂ内に記憶されることになり、以降同様に続く。
【００７０】
データ値ｘ1，…，ｘ9が後続の入力チャネルのうちの１つ（例えば７０２ｂ等）からのものである場合には、制御信号ｓ１を１に設定することができ、これにより出力選択器２１０６が、先に計算された部分和を加算器２１０４ｈに供給するようになる。詳細には、データ値が水平ストライプの行ｎからのものである場合には、先に計算されてアキュムレータ１１０４ａ内に記憶された部分和が、加算器２１０４ｈに提供されることになり、データ値が行ｎ−１からのものである場合には、先に計算されてアキュムレータ１１０４ｂ内に記憶された部分和が、加算器２１０４ｈに提供されることになり、以降同様に続く。
【００７１】
制御信号ｓ１が２に設定されると、出力選択器２１０６は、部分和をバイアスｂkと加算する加算器２１０４ｊにアキュムレータからの部分和を供給するように構成することができる。結果として得られる和は、部分和が読み出されたアキュムレータ内に戻して記憶することができる。効率的な実装では、部分和のベクトル全体をアキュムレータアレイ（１１０４ａ、１１０４ｂ、…）から読み出して、バイアスｂkと加算することができ、次いで、ベクトル（現在ではバイアスが付けられている）をアキュムレータアレイ内に戻して記憶することができる。かかる計算は、図２０においてＣＵ1,2に関して説明したバイアス演算を実施することができる。
【００７２】
更に、信号値が対数領域で表される実施形態では、特殊加算器（比較器、ビットシフター及び加算器を用いて構築された）が、２つの値を線形領域で（先行する特殊乗算器が対数−線形変換を実施済みであることから）受け取り、結果として得られる和を対数領域で返すことができる点に留意されたい。かかる特殊加算器の詳細はまた、Ｄａｉｓｕｋｅ  Ｍｉｙａｓｈｉｔａ他著「Ｃｏｎｖｏｌｕｔｉｏｎａｌ  Ｎｅｕｒａｌ  Ｎｅｔｗｏｒｋｓ  ｕｓｉｎｇ  Ｌｏｇａｒｉｔｈｍｉｃ  Ｄａｔａ  Ｒｅｐｒｅｓｅｎｔａｔｉｏｎ」、ａｒＸｉｖ  ｐｒｅｐｒｉｎｔ  ａｒＸｉｖ：１６０３．０１０２５、２０１６年に見出すことができる。
【００７３】
９つのデータ値（及び９つの重み）を受け取る畳み込み器ユニットの何れもが、畳み込み器ユニットＣＵ1,2と同様のハードウェアアーキテクチャを有することができ、従ってこれらについては簡潔化の目的で説明しないことにする。９つよりも少ないデータ値を受け取る畳み込み器ユニットに関しては、ハードウェアアーキテクチャは、乗算器への入力のうちの幾つかをゼロ値に結線接続することができる（データ入力又は重みをゼロ値に設定することができる）ことを除いて、畳み込み器ユニットＣＵ1,2のハードウェアアーキテクチャと依然として同様とすることができる。例えば、ＣＵ1,1はデータ値ｘ1、ｘ4、及びｘ7を受け取らないので、重みｗ1、ｗ4、ｗ7をゼロに設定することができる。別の実施形態では、乗算器のうちの幾つかを省くこともできる。例えば、ＣＵ1,1はデータ値ｘ1、ｘ4、及びｘ7を受け取らないので、乗算器２１０２ａ、２１０２ｄ、及び２１０２ｇを省くことができる。
【００７４】
本発明の１つの実施形態では、全ての９つの乗算器（又は対数領域における均等物）及び９つの加算器（又は対数領域における均等物）の計算は、全て１つのクロックサイクル内で行われる。すなわち、クロックサイクルｎにおいてデータ値が９つのデータ記憶要素内に記憶される場合には、クロックサイクルｎ＋１において部分和がアキュムレータ内に記憶される。更に、高いスループットを求めて、クロックサイクルｎ＋１において部分和が記憶される間に新しいデータ値を９つのデータ記憶要素内に記憶することができる。従って、新しい部分和の計算は、全てのクロックサイクル中に実施することができる。
【００７５】
次に、本ハードウェアアーキテクチャを用いて畳み込み演算のストライドをどのように設定することができるかに関する詳細を示す。ストライド（又はステップサイズ）は、フィルタがドット積演算の間にシフトされるピクセル又はデータ値の個数であることを想起されたい。図２２は、畳み込み器ユニットの全ての奇数行と全ての奇数列とを活性に設定し、畳み込み器ユニットの全ての偶数行と全ての偶数列とを不活性に設定することによって（コントローラ２２０２によって提供される制御信号を用いて）、２というストライドを得ることができることを例示している。他のストライド値をどのように設定することができるかは明らかであろう。３というストライドでは、ｘ∈｛０，１，２，…｝の場合の畳み込み器ユニットの行３ｘ＋１及びｘ∈｛０，１，２，…｝の場合の畳み込み器ユニットの列３ｘ＋１を活性に設定することができ、他の全ての行及び列を不活性に設定することができる。１よりも小さいストライドでも実施可能である。例えば、１／２のストライドでは、入力７０２は、畳み込みエンジン７０８内にロードされる前に補間することができる。
【数３】
2021517702.tif 000005
の２×２入力行列では、１／２というストライドを得るために、次式の３×３補間行列を入力として畳み込みエンジン７０８に設けることができる。
【数４】
2021517702.tif 000006
この実施例では線形補間を用いたが、他の形態の補間（例えば、多項式補間、スプライン補間等）も実施可能であることを理解されたい。
【００７６】
これまでの検討は畳み込み演算に主眼を置いたが、畳み込みニューラルネットワークは通常、最大プール及び調整演算子等の他の種類の演算を含む。最初に理解を容易にするために、畳み込み器ユニットが提示されたが、畳み込み演算に加えて、畳み込みニューラルネットワークにおいて一般的な他の種類の演算を扱うための「機能ユニット」と呼ばれるより一般化形式の畳み込み器ユニットについて説明することにする。
【００７７】
図２３は、本発明の１つの実施形態による、２Ｄシフトレジスタ及び機能ユニットアレイを含む畳み込みエンジン２３００を示している。畳み込みエンジン２３００は、畳み込み器ユニットが機能ユニットによって置き換えられていることを除いて、上記で説明した畳み込みエンジン７０８と同様である。機能ユニットのうちの１つＦＵ1,2を２３０２と標記し、ハードウェアアーキテクチャを図２３において下記で説明する。
【００７８】
図２４は、本発明の１つの実施形態による、機能ユニット２３０２の内部構成要素を示している。機能ユニット２３０２と畳み込み器ユニット８０６との間には、２つの主な相違点がある。第１に、機能ユニット２３０２は、最大和（最大プール演算を実施するのに必要な）を計算する能力を有する。第２に、機能ユニット２３０２は、値の調整を計算する能力を有する。最大和を計算するために、畳み込み器ユニットの９つの加算器（２１０４ａ，…，２１０４ｉ）の各々を、機能選択器（２４０４ａ，…，２４０４ｉ）で置き換えることができる。機能選択器は、制御信号ｓ２を受け取り、加算器と比較器との間の選択を可能にする（図２４に記載の挿入図を参照されたい）。加算器が選択されると、機能ユニットは、ほとんどの部分が畳み込み器ユニット８０６のハードウェアアーキテクチャへと変換して戻され、機能ユニット２３０２は、上記で説明した畳み込み演算を実施するように構成される。比較器が選択されると、機能ユニット２３０２は、制御信号ｓ１が０に設定された時にｍａｘ（ｗ1ｘ1，ｗ2ｘ2，ｗ3ｘ3，ｗ4ｘ4，ｗ5ｘ5，ｗ6ｘ6，ｗ7ｘ7，ｗ8ｘ8，ｗ9ｘ9）を計算し、制御信号ｓ１が１に設定された時にｍａｘ（ｗ1ｘ1，ｗ2ｘ2，ｗ3ｘ3，ｗ4ｘ4，ｗ5ｘ5，ｗ6ｘ6，ｗ7ｘ7，ｗ8ｘ8，ｗ9ｘ9，直前の部分和）を計算するように構成される。従って、比較器が選択されることを除いて図８〜図１８Ｃと同様の方式で畳み込みエンジン２３０２を動作させる時には、３次元フィルタ（例えばｆ１）と３次元入力体積（すなわち、図６において説明したようにフィルタと位置合わせする入力の体積）との点毎の乗算の最大値を計算することができる。この時点で、最大プール演算子は、選択された機能ユニットの比較器と、フィルタのカーネルの１つの次元の大きさに等しいように設定されたストライド（例えば３×３カーネルでは、ストライドは３であるように設定されることになる）とを用いて実装することができる。
【００７９】
制御信号ｓ１が２に設定される時には、機能ユニットは、調整演算を実施するように構成される。２に設定された制御信号ｓ１によって、出力選択器２４０６は、アキュムレータ１１０４ａ、１１０４ｂ、…のうちの１つ又は２つ以上に記憶された値を調整器２４０８に提供し、調整器２４０８は、次式の調整演算を実施する。
【数５】
2021517702.tif 000007
【００８０】
データ値がゼロビット（データ値が０であるか否かを示す）と、符号ビット（データ値が正又は負のどちらかであるかを示す）と、大きさ（データ値の大きさを示す）とによって表されるデータ表現では、調整器２４０８は、符号ビットが負数を示す時には必ず又はゼロビットが設定された場合には０を返し、その他の場合には大きさを返すように構成することができる。
【００８１】
制御信号ｓ１が３に設定される時には、機能ユニットは、畳み込み器ユニット８０６の演算と同様に、アキュムレータ１１０４ａ、１１０４ｂ等に記憶されたデータにバイアス値を加算するように構成される。
【００８２】
図２５は、本発明の１つの実施形態による、データ値が入力チャネル７０２ａからｍ個の列の畳み込み器ユニットを有する畳み込みエンジン７０８内にロードされる３つのシナリオを示し、すなわち、シナリオ（ａ）が、ｍ個のデータ値列を有する入力チャネル７０２ａを例示し、シナリオ（ｂ）が、３ｍ−４個のデータ値列を有する入力チャネル７０２ａを例示し、及びシナリオ（ｃ）が、ｍ／２個のデータ値列を有する入力チャネル７０２ａを例示している。シナリオ（ａ）については図９Ｂにおいて先に説明したが、図２６Ａ〜図２６Ｂにおいて更に十分に検討することにする。シナリオ（ｂ）は、入力チャネル７０２ａの列数が畳み込み器アレイの列数よりも多い実施例を検討している。シナリオ（ｃ）は、入力チャネル７０２ａの列数が畳み込み器アレイの列数よりも少ない実施例を検討している。畳み込みエンジンは抽象的に示されているが、畳み込みエンジンのアーキテクチャは、２Ｄシフトレジスタ及び畳み込み器アレイを有し、先に説明した実施例と同様とすることができることを理解されたい。
【００８３】
図２６Ａは、畳み込みエンジン７０８へのゼロパディング行、水平ストライプ９０２ａ、及びデータパディング行（水平ストライプ９０２ｂの行ｎに対応する）のロードを示している（まだ明らかでない場合には、太い破線の矩形は、畳み込みエンジン７０８内にロードされる入力チャネル７０２ａの部分を表す）。より具体的には、最初に、畳み込みエンジン７０８の２Ｄシフトレジスタ内にゼロパディング行がロードされ、これに続いて、水平ストライプ９０２ａの行ｎ、水平ストライプ９０２ａの行ｎ−１、…水平ストライプ９０２ａの行１及びデータパディング行がロードされる。上記で説明したように、データ記憶要素行が水平ストライプの行ｎを記憶する度に、当該データ記憶要素行に対応する畳み込み器ユニットが活性化される。水平ストライプの行１がデータ記憶要素行からシフトされる度に、当該データ記憶要素行に対応する畳み込み器ユニットが不活性化される。
【００８４】
図２６Ｂは、畳み込みエンジン７０８への１つのデータパディング行（水平ストライプ９０２ａの行１に対応する）、水平ストライプ９０２ｂ、及びゼロパディング行のロードを示している。より具体的には、最初にデータパディング行が畳み込みエンジン７０８の２Ｄシフトレジスタ内にロードされ、それに続いて水平ストライプ９０２ｂの行ｎ、水平ストライプ９０２ｂの行ｎ−１、…水平ストライプ９０２ｂの行１、更にゼロパディング行がロードされる。
【００８５】
入力チャネル７０２ａは、入力データを通る単一の「水平カットライン」（概念的に水平ストライプ９０２ａと９０２ｂとの境界に位置する）の概念を例示するために、２つの水平ストライプを含むものであったが、より多くの水平カットラインが存在する場合には、入力チャネルは、より多くの水平ストライプを有することになることを理解されたい。上下で他の水平ストライプによって境界を接する水平ストライプでは、該水平ストライプのロードにデータパディング行が先行し、別のデータパディング行が続くことになる。
【００８６】
図２７Ａ〜図２７Ｃは、入力チャネル７０２ａを通る「垂直カットライン」が必要とされるシナリオと、垂直カットラインをどのように扱うべきかを例示している。一般的には、垂直カットラインは、入力チャネルの列数が畳み込み器アレイの列数よりも多い時には必ず必要とされる。この実施例は、ｍが畳み込み器アレイの列数である時に入力チャネルの列数が３ｍ−４に等しいシナリオを検討している。入力チャネルの列数がｍ−２の倍数よりも２つ多い数に等しい（この実施例でそうであるように）時には必ず、畳み込み器アレイは効率的な（未使用畳み込み器ユニットのない）方式で利用されるが、この関係が成り立たない場合でも、畳み込み器アレイはそれ程効率的な方式で利用されないことになる（未使用畳み込み器ユニットを有することになる）ものの、下記で説明する設計概念がなおも当てはまる。更に、例示及び説明を明瞭にするために、図２７Ａ〜図２７Ｃの実施例では、水平カットライン、ゼロパディング行、データパディング行は検討しない。それにも関わらず、当業者であれば、水平と垂直との両方のカットラインが存在するシナリオを扱うために、図２６Ａ〜図２６Ｂ及び図２７Ａ〜図２７Ｂによる概念を組み合わせることが可能である。
【００８７】
図２７Ａでは、入力チャネル７０２ａは、垂直ストライプ９０６ａ、９０６ｂ、及び９０６ｃに分割されている。概念的に、垂直ストライプ９０６ａを垂直ストライプ９０６ｂから分離する第１の垂直カットラインと、垂直ストライプ９０６ｂを垂直ストライプ９０６ｃから分離する第２の垂直カットラインとを考えることができる。畳み込みエンジンの効率的な使用において、内側垂直ストライプ（９０６ｂ等）はｍ−２個の列を含み、他方、外側垂直ストライプ（９０６ａ及び９０６ｃ等）はｍ−１個の列を含む。図２７Ａは、畳み込みエンジン７０８内にロードされるｍ個の列（垂直ストライプ９０６ａのｍ−１個の列と１つのデータパディング列とを含む）を示している。最も右の畳み込み器ユニット列（データパディング列と位置合わせする）は、その出力がデータパディング列を外部列（現在のシナリオでは当てはまらない）として処理する畳み込み出力を生成したことから、不活性である。残りのｍ−１個の畳み込み器ユニット列は、先に説明した畳み込み器ユニットと同様の方式で動作する。
【００８８】
図２７Ｂは、畳み込みエンジン７０８内にロードされるｍ個の列（データパディング列が左右の側で境界を接する垂直ストライプ９０６ｂのｍ−２個の列を含む）を示している。最も左及び最も右の畳み込み器ユニット列（データパディング列と位置合わせする）は、上記で提示したものと同様の理由から不活性である。残りのｍ−２個の畳み込み器ユニット列は、先に説明した畳み込み器ユニットと同様の方式で動作する。
【００８９】
図２７Ｃは、畳み込みエンジン７０８内にロードされるｍ個の列（１つのデータパディング列と垂直ストライプ９０６ｃのｍ−１個の列とを含む）を示している。最も左の畳み込み器ユニット列（データパディング列と位置合わせする）は、上記で提示したものと同様の理由から不活性である。残りのｍ−１個の畳み込み器ユニット列は、先に説明した畳み込み器ユニットと同様の方式で動作する。
【００９０】
図２８は、ｍが畳み込みエンジンの列数である場合に、入力チャネル７０２ａの列数がｍ／２に等しいシナリオを表している。図２８の実施例では、変数ｍが偶数であると仮定しているが、一般的には偶数である必要はない。入力チャネルの列数がｍの除数に等しい（この実施例では当てはまるように））時には必ず、畳み込み器アレイは効率的な方式で利用される（すなわち、未使用畳み込み器ユニットを有さないことになる）が、この関係が成り立たない場合でも、畳み込み器アレイはそれ程効率的な方式で利用されないことになる（未使用畳み込み器ユニットを有することになる）ものの、下記で説明する設計概念がなおも当てはまる。
【００９１】
図２８の実施例は、領域７０８ａ（畳み込みエンジンの「列」のうちの前半分を含む）と領域７０８ｂ（畳み込みエンジンの「列」のうちの後半分を含む）との間にデータの移動がない、畳み込みエンジン７０８を通る「垂直カットライン」の概念を例示している。畳み込みエンジンの状況で用いる場合には、列という用語は、２Ｄシフトレジスタ列と、対応する畳み込み器ユニット列とを含む。概念的に、領域７０８ａを領域７０８ｂから分離する垂直カットラインを考えることができる。領域７０８ａは、本質的に領域７０８ｂとは独立して機能し、それによって領域７０８ａを、第１のフィルタセット（例えば、フィルタ１からフィルタ１０まで）を用いて畳み込みを実施するように構成し、領域７０８ｂを、第２のフィルタセット（例えば、フィルタ１１からフィルタ２０まで）を用いて畳み込みを実施するように構成することが可能になる。説明を明瞭にするようにフィルタの個数（各領域内に１０個）を選んだが、２つの領域の片方又は両方に異なる個数のフィルタが存在することが可能であったことを理解されたい。独立した領域（この場合には２つの領域であるが、他の場合にはより多くの領域が可能である）への畳み込みエンジンの区分化は、畳み込みエンジンに対する高いスループット（この場合には２倍のスループット）を可能にする。
【００９２】
具体例として、畳み込みエンジンが１４個の畳み込み器ユニット列を有すると仮定する。フィルタ１の重みが、最初の畳み込み器ユニット行の畳み込み器ユニット１〜７の各々にロードされることになり、フィルタ１１の重みが、最初の畳み込み器ユニット行の畳み込み器ユニット８〜１４の各々にロードされることになる。
【００９３】
「垂直カットライン」を用いて動作するように畳み込みエンジン７０８を構成するために、領域７０８ａの最も右の列内の畳み込み器ユニットは、ゼロに設定された重みｗ3、6、及び9を有し（フィルタカーネルからの重みがどのようなものであるかに関わらず）、領域７０８ｂの最も左の列内の畳み込み器ユニットは、ゼロに設定された重みｗ1、ｗ4、及びｗ7を有する（フィルタカーネルからの重みがどのようなものであるかに関わらず）。このような重みの設定は、図２８の差し込み図に示されるデータフローを生じ、ここでは、領域７０８ａの最も右の列内の畳み込み器ユニットは、その「右隣」からデータ値を受け取らず、領域７０８ｂの最も左の列内の畳み込み器ユニットは、その「左隣」からデータ値を受け取らない。
【００９４】
入力チャネル７０２ａは、畳み込みエンジン７０８内にロードされた時に、領域７０８ａ内に行毎にロードされると同時に、領域７０８ｂ内に行毎にロードされる。畳み込みエンジン７０８を通したデータの伝搬が、垂直方向に通過するティッカー時間として概念的に捉えることができる場合には、領域７０８ａを下方に通過する１つのティッカーテープが存在することになり、更に領域７０８ｂを下方に通過するこのティッカーテープの鏡像が存在することになる。
【００９５】
図２８は、畳み込みエンジンを通る１つの垂直カットラインを有する実施例を示したが、複数の垂直カットラインを有するように畳み込みエンジンを改変できることは明らかであろう。更に、例示及び説明を明瞭にするために、図２８の実施例では水平カットライン、ゼロパディング行、データパディング行については検討しない。それにも関わらず、当業者であれば、図２６Ａ〜図２６Ｂ及び図２８からの概念を互いに組み合わせて、水平及び垂直の両方のカットラインが存在するシナリオを扱うことが可能になると期待される。
【００９６】
図２９Ａ〜図２９Ｂは、ｍが畳み込みエンジン７０８の列数である場合に、入力チャネル７０２ａの列数がｍ／２に等しいシナリオを扱うための別のスキームを例示している。このスキームは、入力データを通る水平カットラインの概念（図２６Ａ〜図２６Ｂにおいて説明した）と、畳み込み器アレイを通る垂直カットラインの概念（図２８において説明した）とを組み合わせるステップを含む。図２６Ａ〜図２６Ｂでは、２つの水平ストライプが１つずつ（すなわち順次的に）処理された。しかしながら、図２９Ａ〜図２９Ｂの実施例では、水平ストライプ９０８ａと９０８ｂとが並列に処理され、水平ストライプ９０８ａは領域７０８ａ内で処理され、水平ストライプ９０８ｂは領域７０８ｂ内で処理される。図２８に記載のスキームとは対照的に、領域７０８ａ及び７０８ｂ内に同じフィルタが追加される。
【００９７】
図２９Ａには複数の重なり合う矩形があるので、このスキームは、領域７０８ａ及び領域７０８ｂにロードされたデータをより明瞭に示す図２９Ｂにおいて概念的に描き直している。まだ明らかでない場合には、水平ストライプ９０８ａの行１が、水平ストライプ９０８ｂに先行するデータパディング行に一致し、水平ストライプ９０８ａに続くデータパディング行が水平ストライプ９０８ｂの行ｎに一致することに留意されたい。
【００９８】
図２８のスキームと同様に、図２９Ａ〜図２９Ｂのスキームもまた、スループットを２倍にする効果を有する。この時点では、ｍ／２シナリオを扱うための２つの可能なスキームが存在するので、どちらのスキームが好ましいか思案される可能性がある。図２８のスキームと図２９Ａ〜図２９Ｂのスキームとの間の１つの考慮すべき点は、入力チャネルの行数に対するフィルタの個数である。入力チャネルの行数よりも多くのフィルタが存在する場合には、図２８のスキームが好ましい可能性があり、それに対してフィルタの個数よりも多くの入力チャネル行が存在する場合には、図２９Ａ〜図２９Ｂに記載のスキームが好ましい可能性がある。直感的には、前者の事例は、細長いフィルタ列に似たものになり、この場合、細長いフィルタ列を半分に分断する（半分を領域７０８ａに入れ、もう一方の半分を領域７０８ｂに入れる）ことが有利となり、一方、後者の事例では、細長い入力データ列に似たものになり、この場合、細長い入力データ列を半分に分断して、入力データの２つの半部分を並列に処理することが有利となる。
【００９９】
一方のスキームが別のスキームよりも好ましいことに関する他の考慮事項は、畳み込み器ユニットの行数に対する相対的なフィルタの個数を含むこともできる。フィルタの個数が畳み込み器ユニットの行数よりも少ない場合には、図２９Ａ〜図２９Ｂのスキームが好ましい可能性があり、それに対してフィルタの個数が畳み込み器ユニットの行数よりも多い場合には、図２８に記載のスキームが好ましい可能性がある。
【０１００】
図３０は、本発明の１つの実施形態による、畳み込みエンジン７０８をシステム３０００の１つの構成要素として示している。システム３０００は、メモリ３００２と、シフト・フォーマットモジュール３００４と、畳み込みエンジン７０８と、コントローラ３００６とを含むことができる。
【０１０１】
メモリ３００２は、スタティックランダムアクセスメモリ（ＳＲＡＭ）を用いて実装することができ、入力データ７０２と、畳み込みエンジン７０８の出力（例えば、畳み込み出力、最大プール出力、調整済み出力等）とを記憶することができる。
【０１０２】
シフト・フォーマットモジュール３００４は、メモリ３００２と畳み込みエンジン７０８との間のインターフェースであり、データをシフトさせてフォーマットするように構成される。例えば、図２９Ａの実施例では、水平ストライプ９０８ｂを畳み込みエンジンの領域７０８ｂ内に提供するステップは、シフト・フォーマットモジュール３００４によって実施される１つのタスクとなる。１／２というストライド（又は１よりも小さいストライド）を得るステップはまた、シフト・フォーマットモジュール３００４を必要とする場合があり、この場合、上記で説明した補間は、シフト・フォーマットモジュール３００４によって実施することができる。
【０１０３】
図３０の実施形態では、畳み込みエンジン７０８は、より典型的な個数のデータ記憶要素及び畳み込み器ユニットを含む。図３０は、畳み込み器ユニットの８０６の６４×２５６アレイと、２Ｄシフトレジスタとして構成されたデータ記憶要素の６６×２５６アレイとを示している。これまでに説明した実施形態と同様に、畳み込み器ユニットの最初の行は、データ記憶要素の２番目の行に論理的に対応し、畳み込み器ユニットの最後の行は、データ記憶要素の最後から２番目の行に論理的に対応する。
【０１０４】
コントローラ３００６は、上記で説明した制御動作のうちの多くを実施する役割を担うことができる。例えば、コントローラ３００６は、畳み込み器ユニットを活性及び不活性に設定する制御信号を提供することができる（従って、上記で説明したコントローラ２２０２をコントローラ３００６の一部とすることができる）。コントローラ３００６は、出力選択器２１０６及び２４０６の出力を制御するための制御信号ｓ１（図２１及び図２４において説明した）を提供する役割を担うことができる。コントローラ３００６は、畳み込み出力又は最大プール出力のどちらを出力するように機能ユニットをプログラミングするかを制御するための制御信号ｓ２（図２４において説明した）を提供する役割を担うことができる。コントローラ３００６は、畳み込み器アレイの次元に対して相対的な入力チャネルの次元に基づいて、入力チャネルを水平ストライプ、垂直ストライプ（垂直カットライン及び水平カットラインが存在する時にはより適切にチャンクと呼ぶ）に論理的に区分化することができる。コントローラ３００６は、必要なシフト及びフォーマットの動作を実施するようにシフト・フォーマットモジュール３００４を制御することができる。コントローラ３００６は、どのような重みをどの畳み込みユニットにロードすべきかを決定することができる。コントローラ３００６は、畳み込みエンジンを複数の独立した領域へと論理的に区分化する（図２８、図２９Ａ、及び図２９Ｂに示されるように）ためにフィルタ重みをゼロ値でオーバーライドするか否かを決定することができる。コントローラ３００６はまた、畳み込みエンジンへの水平ストライプのロードに関して、水平ストライプにゼロパディング行又はデータパディング行のどちらを先行させるべきか、水平ストライプの後にゼロパディング行又はデータパディング行のどちらを続けるべきかを決定するロジックを含むことができる。これらは、コントローラ３００６が実施することができる機能の幾つかの実施例にすぎない。
【０１０５】
図３１は、本発明の１つの実施形態による、畳み込み器ユニットにフィルタ重みが提供される前にフィルタ重みを伸長するための重み伸長器３１００のブロック図を示している。重み伸長器３１００は、重みを伸長するために辞書３１０２を利用することができる。１つの実施形態では、圧縮重みは、参照テーブル（辞書の１つの実施形態）への鍵であり、参照テーブル内で鍵に対応する記録が伸長重みである。２５６個の畳み込み器ユニットは、１６個のグループへと論理的及び／又は物理的にグループ化することができ、各グループは１６個の畳み込み器ユニットを含む。伸長された重みは、１６個の畳み込み器ユニットグループの各々に提供することができる。
【０１０６】
上記のように、効率的な畳み込みエンジンを説明した。１つの実施形態では、畳み込みエンジンは、次式の３×４のデータ記憶要素アレイを有する２次元シフトレジスタであって、
【数６】
2021517702.tif 000008
最初の時点で、
データ記憶要素ｄ1,1がデータ値ｘ1,1を記憶し、
データ記憶要素ｄ1,2がデータ値ｘ1,2を記憶し、
データ記憶要素ｄ1,3がデータ値ｘ1,3を記憶し、
データ記憶要素ｄ1,4がデータ値ｘ1,4を記憶し、
データ記憶要素ｄ2,1がデータ値ｘ2,1を記憶し、
データ記憶要素ｄ2,2がデータ値ｘ2,2を記憶し、
データ記憶要素ｄ2,3がデータ値ｘ2,3を記憶し、
データ記憶要素ｄ2,4がデータ値ｘ2,4を記憶し、
データ記憶要素ｄ3,1がデータ値ｘ3,1を記憶し、
データ記憶要素ｄ3,2がデータ値ｘ3,2を記憶し、
データ記憶要素ｄ3,3がデータ値ｘ3,3を記憶し、
データ記憶要素ｄ3,4がデータ値ｘ3,4を記憶する、
２次元シフトレジスタを含む。
畳み込みエンジンは更に、第１の複数の乗算器ｍ11,1、ｍ11,2、ｍ11,3、ｍ12,1、ｍ12,2、ｍ12,3、ｍ13,1、ｍ13,2、及びｍ13,3を有する第１の畳み込み器ユニットであって、
乗算器ｍ11,1がデータ記憶要素ｄ1,1に電気的に結合され、データ値ｘ1,1に重みｗ1を乗算して積ｗ1ｘ1,1を生成するように構成され、
乗算器ｍ11,2がデータ記憶要素ｄ1,2に電気的に結合され、データ値ｘ1,2に重みｗ2を乗算して積ｗ2ｘ1,2を生成するように構成され、
乗算器ｍ11,3がデータ記憶要素ｄ1,3に電気的に結合され、データ値ｘ1,3に重みｗ3を乗算して積ｗ3ｘ1,3を生成するように構成され、
乗算器ｍ12,1がデータ記憶要素ｄ2,1に電気的に結合され、データ値ｘ2,1に重みｗ4を乗算して積ｗ4ｘ2,1を生成するように構成され、
乗算器ｍ12,2がデータ記憶要素ｄ2,2に電気的に結合され、データ値ｘ2,2に重みｗ5を乗算して積ｗ5ｘ2,2を生成するように構成され、
乗算器ｍ12,3がデータ記憶要素ｄ2,3に電気的に結合され、データ値ｘ2,3に重みｗ6を乗算して積ｗ6ｘ2,3を生成するように構成され、
乗算器ｍ13,1がデータ記憶要素ｄ3,1に電気的に結合され、データ値ｘ3,1に重みｗ7を乗算して積ｗ7ｘ3,1を生成するように構成され、
乗算器ｍ13,2がデータ記憶要素ｄ3,2に電気的に結合され、データ値ｘ3,2に重みｗ8を乗算して積ｗ8ｘ3,2を生成するように構成され、
乗算器ｍ13,3がデータ記憶要素ｄ3,3に電気的に結合され、データ値ｘ3,3に重みｗ9を乗算して積ｗ9ｘ3,3を生成するように構成された、
第１の畳み込み器ユニットを含む。
また、畳み込みエンジンは更に、第２の複数の乗算器ｍ21,1、ｍ21,2、ｍ21,3、ｍ22,1、ｍ22,2、ｍ22,3、ｍ23,1、ｍ23,2、及びｍ23,3を含む第２の畳み込み器ユニットであって、
乗算器ｍ21,1がデータ記憶要素ｄ1,2に電気的に結合され、データ値ｘ1,2に重みｗ1を乗算して積ｗ1ｘ1,2を生成するように構成され、
乗算器ｍ21,2がデータ記憶要素ｄ1,3に電気的に結合され、データ値ｘ1,3に重みｗ2を乗算して積ｗ2ｘ1,3を生成するように構成され、
乗算器ｍ21,3がデータ記憶要素ｄ1,4に電気的に結合され、データ値ｘ1,4に重みｗ3を乗算して積ｗ3ｘ1,4を生成するように構成され、
乗算器ｍ22,1がデータ記憶要素ｄ2,2に電気的に結合され、データ値ｘ2,2に重みｗ4を乗算して積ｗ4ｘ2,2を生成するように構成され、
乗算器ｍ22,2がデータ記憶要素ｄ2,3に電気的に結合され、データ値ｘ2,3に重みｗ5を乗算して積ｗ5ｘ2,3を生成するように構成され、
乗算器ｍ22,3がデータ記憶要素ｄ2,4に電気的に結合され、データ値ｘ2,4に重みｗ6を乗算して積ｗ6ｘ2,4を生成するように構成され、
乗算器ｍ23,1がデータ記憶要素ｄ3,2に電気的に結合され、データ値ｘ3,2に重みｗ7を乗算して積ｗ7ｘ3,2を生成するように構成され、
乗算器ｍ23,2がデータ記憶要素ｄ3,3に電気的に結合され、データ値ｘ3,3に重みｗ8を乗算して積ｗ8ｘ3,3を生成するように構成され、
乗算器ｍ23,3がデータ記憶要素ｄ3,4に電気的に結合され、データ値ｘ3,4に重みｗ9を乗算して積ｗ9ｘ3,4を生成するように構成された、
第２の畳み込み器ユニットを含む。
【０１０７】
様々な実施形態において、第１の畳み込み器ユニットは、少なくとも、積ｗ1ｘ1,1、積ｗ2ｘ1,2、積ｗ3ｘ1,3、積ｗ4ｘ2,1、積ｗ5ｘ2,2、積ｗ6ｘ2,3、積ｗ7ｘ3,1、積ｗ8ｘ3,2、積ｗ9ｘ3,3、及びバイアス値であるｂ1を含む項の和を生成するように構成することができる。更に、第２の畳み込み器ユニットは、少なくとも、積ｗ1ｘ1,2、積ｗ2ｘ1,3、積ｗ3ｘ1,4、積ｗ4ｘ2,2、積ｗ5ｘ2,3、積ｗ6ｘ2,4、積ｗ7ｘ3,2、積ｗ8ｘ3,3、積ｗ9ｘ3,4、及びバイアス値であるｂ1を含む項の和を計算するように構成することができる。
【０１０８】
幾つかの事例では、
データ記憶要素ｄ1,1は、データ記憶要素ｄ2,1に電気的に結合され、
データ記憶要素ｄ2,1は、データ記憶要素ｄ3,1に電気的に結合され、
データ記憶要素ｄ1,2は、データ記憶要素ｄ2,2に電気的に結合され、
データ記憶要素ｄ2,2は、データ記憶要素ｄ3,2に電気的に結合され、
データ記憶要素ｄ1,3は、データ記憶要素ｄ2,3に電気的に結合され、
データ記憶要素ｄ2,3は、データ記憶要素ｄ3,3に電気的に結合され、
データ記憶要素ｄ1,4は、データ記憶要素ｄ2,4に電気的に結合され、
データ記憶要素ｄ2,4は、データ記憶要素ｄ3,4に電気的に結合される。
【０１０９】
本発明の更なる実施形態は、次式の４×４データ記憶要素アレイを有する２次元シフトレジスタであって、
【数７】
2021517702.tif 000009
最初の時点で、
データ記憶要素ｄ1,1がデータ値ｘ1,1を記憶し、
データ記憶要素ｄ1,2がデータ値ｘ1,2を記憶し、
データ記憶要素ｄ1,3がデータ値ｘ1,3を記憶し、
データ記憶要素ｄ1,4がデータ値ｘ1,4を記憶し、
データ記憶要素ｄ2,1がデータ値ｘ2,1を記憶し、
データ記憶要素ｄ2,2がデータ値ｘ2,2を記憶し、
データ記憶要素ｄ2,3がデータ値ｘ2,3を記憶し、
データ記憶要素ｄ2,4がデータ値ｘ2,4を記憶し、
データ記憶要素ｄ3,1がデータ値ｘ3,1を記憶し、
データ記憶要素ｄ3,2がデータ値ｘ3,2を記憶し、
データ記憶要素ｄ3,3がデータ値ｘ3,3を記憶し、
データ記憶要素ｄ3,4がデータ値ｘ3,4を記憶し、
データ記憶要素ｄ4,1がデータ値ｘ4,1を記憶し、
データ記憶要素ｄ4,2がデータ値ｘ4,2を記憶し、
データ記憶要素ｄ4,3がデータ値ｘ4,3を記憶し、
データ記憶要素ｄ4,4がデータ値ｘ4,4を記憶する、
２次元シフトレジスタを含む装置を提供する。
本装置はまた、
第１の複数の乗算器ｍ11,1、ｍ11,2、ｍ11,3、ｍ12,1、ｍ12,2、ｍ12,3、ｍ13,1、ｍ13,2、及びｍ13,3を含む第１の畳み込み器ユニットであって、
乗算器ｍ11,1がデータ記憶要素ｄ1,1に電気的に結合され、データ値ｘ1,1に重みｗ1を乗算して積ｗ1ｘ1,1を生成するように構成され、
乗算器ｍ11,2がデータ記憶要素ｄ1,2に電気的に結合され、データ値ｘ1,2に重みｗ2を乗算して積ｗ2ｘ1,2を生成するように構成され、
乗算器ｍ11,3がデータ記憶要素ｄ1,3に電気的に結合され、データ値ｘ1,3に重みｗ3を乗算して積ｗ3ｘ1,3を生成するように構成され、
乗算器ｍ12,1がデータ記憶要素ｄ2,1に電気的に結合され、データ値ｘ2,1に重みｗ4を乗算して積ｗ4ｘ2,1を生成するように構成され、
乗算器ｍ12,2がデータ記憶要素ｄ2,2に電気的に結合され、データ値ｘ2,2に重みｗ5を乗算して積ｗ5ｘ2,2を生成するように構成され、
乗算器ｍ12,3がデータ記憶要素ｄ2,3に電気的に結合され、データ値ｘ2,3に重みｗ6を乗算して積ｗ6ｘ2,3を生成するように構成され、
乗算器ｍ13,1がデータ記憶要素ｄ3,1に電気的に結合され、データ値ｘ3,1に重みｗ7を乗算して積ｗ7ｘ3,1を生成するように構成され、
乗算器ｍ13,2がデータ記憶要素ｄ3,2に電気的に結合され、データ値ｘ3,2に重みｗ8を乗算して積ｗ8ｘ3,2を生成するように構成され、
乗算器ｍ13,3がデータ記憶要素ｄ3,3に電気的に結合され、データ値ｘ3,3に重みｗ9を乗算して積ｗ9ｘ3,3を生成するように構成された、
第１の畳み込み器ユニットを含む。
本装置はまた、
第２の複数の乗算器ｍ21,1、ｍ21,2、ｍ21,3、ｍ22,1、ｍ22,2、ｍ22,3、ｍ23,1、ｍ23,2、及びｍ23,3を含む第２の畳み込み器ユニットであって、
乗算器ｍ21,1がデータ記憶要素ｄ1,2に電気的に結合され、データ値ｘ1,2に重みｗ1を乗算して積ｗ1ｘ1,2を生成するように構成され、
乗算器ｍ21,2がデータ記憶要素ｄ1,3に電気的に結合され、データ値ｘ1,3に重みｗ2を乗算して積ｗ2ｘ1,3を生成するように構成され、
乗算器ｍ21,3がデータ記憶要素ｄ1,4に電気的に結合され、データ値ｘ1,4に重みｗ3を乗算して積ｗ3ｘ1,4を生成するように構成され、
乗算器ｍ22,1がデータ記憶要素ｄ2,2に電気的に結合され、データ値ｘ2,2に重みｗ4を乗算して積ｗ4ｘ2,2を生成するように構成され、
乗算器ｍ22,2がデータ記憶要素ｄ2,3に電気的に結合され、データ値ｘ2,3に重みｗ5を乗算して積ｗ5ｘ2,3を生成するように構成され、
乗算器ｍ22,3がデータ記憶要素ｄ2,4に電気的に結合され、データ値ｘ2,4に重みｗ6を乗算して積ｗ6ｘ2,4を生成するように構成され、
乗算器ｍ23,1がデータ記憶要素ｄ3,2に電気的に結合され、データ値ｘ3,2に重みｗ7を乗算して積ｗ7ｘ3,2を生成するように構成され、
乗算器ｍ23,2がデータ記憶要素ｄ3,3に電気的に結合され、データ値ｘ3,3に重みｗ8を乗算して積ｗ8ｘ3,3を生成するように構成され、
乗算器ｍ23,3がデータ記憶要素ｄ3,4に電気的に結合され、データ値ｘ3,4に重みｗ9を乗算して積ｗ9ｘ3,4を生成するように構成された、
第２の畳み込み器ユニットと、
第３の複数の乗算器ｍ31,1、ｍ31,2、ｍ31,3、ｍ32,1、ｍ32,2、ｍ32,3、ｍ33,1、ｍ33,2、及びｍ33,3を備える第３の畳み込み器ユニットであって、
乗算器ｍ31,1がデータ記憶要素ｄ2,1に電気的に結合され、データ値ｘ2,1に重みｗ10を乗算して積ｗ10ｘ2,1を生成するように構成され、
乗算器ｍ31,2がデータ記憶要素ｄ2,2に電気的に結合され、データ値ｘ2,2に重みｗ11を乗算して積ｗ11ｘ2,2を生成するように構成され、
乗算器ｍ31,3がデータ記憶要素ｄ2,3に電気的に結合され、データ値ｘ2,3に重みｗ12を乗算して積ｗ12ｘ2,3を生成するように構成され、
乗算器ｍ32,1がデータ記憶要素ｄ3,1に電気的に結合され、データ値ｘ3,1に重みｗ13を乗算して積ｗ13ｘ3,1を生成するように構成され、
乗算器ｍ32,2がデータ記憶要素ｄ3,2に電気的に結合され、データ値ｘ3,2に重みｗ14を乗算して積ｗ14ｘ3,2を生成するように構成され、
乗算器ｍ32,3がデータ記憶要素ｄ3,3に電気的に結合され、データ値ｘ3,3に重みｗ15を乗算して積ｗ15ｘ3,3を生成するように構成され、
乗算器ｍ33,1がデータ記憶要素ｄ4,1に電気的に結合され、データ値ｘ4,1に重みｗ16を乗算して積ｗ16ｘ4,1を生成するように構成され、
乗算器ｍ33,2がデータ記憶要素ｄ4,2に電気的に結合され、データ値ｘ4,2に重みｗ17を乗算して積ｗ17ｘ4,2を生成するように構成され、
乗算器ｍ33,3がデータ記憶要素ｄ4,3に電気的に結合され、データ値ｘ4,3に重みｗ18を乗算して積ｗ18ｘ4,3を生成するように構成された、
第３の畳み込み器ユニットと、
を含む。
また、本装置は、第４の複数の乗算器ｍ41,1、ｍ41,2、ｍ41,3、ｍ42,1、ｍ42,2、ｍ42,3、ｍ43,1、ｍ43,2、及びｍ43,3を含む第４の畳み込み器ユニットであって、
乗算器ｍ41,1がデータ記憶要素ｄ2,2に電気的に結合され、データ値ｘ2,2に重みｗ10を乗算して積ｗ10ｘ2,2を生成するように構成され、
乗算器ｍ41,2がデータ記憶要素ｄ2,3に電気的に結合され、データ値ｘ2,3に重みｗ11を乗算して積ｗ11ｘ2,3を生成するように構成され、
乗算器ｍ41,3がデータ記憶要素ｄ2,4に電気的に結合され、データ値ｘ2,4に重みｗ12を乗算して積ｗ12ｘ2,4を生成するように構成され、
乗算器ｍ42,1がデータ記憶要素ｄ3,2に電気的に結合され、データ値ｘ3,2に重みｗ13を乗算して積ｗ13ｘ3,2を生成するように構成され、
乗算器ｍ42,2がデータ記憶要素ｄ3,3に電気的に結合され、データ値ｘ3,3に重みｗ14を乗算して積ｗ14ｘ3,3を生成するように構成され、
乗算器ｍ42,3がデータ記憶要素ｄ3,4に電気的に結合され、データ値ｘ3,4に重みｗ15を乗算して積ｗ15ｘ3,4を生成するように構成され、
乗算器ｍ43,1がデータ記憶要素ｄ4,2に電気的に結合され、データ値ｘ4,2に重みｗ16を乗算して積ｗ16ｘ4,2を生成するように構成され、
乗算器ｍ43,2がデータ記憶要素ｄ4,3に電気的に結合され、データ値ｘ4,3に重みｗ17を乗算して積ｗ17ｘ4,3を生成するように構成され、
乗算器ｍ43,3がデータ記憶要素ｄ4,4に電気的に結合され、データ値ｘ4,4に重みｗ18を乗算して積ｗ18ｘ4,4を生成するように構成された、
第４の畳み込み器ユニットを含む。
【０１１０】
幾つかの実施形態では、第１の畳み込み器ユニットは、少なくとも、積ｗ1ｘ1,1、積ｗ2ｘ1,2、積ｗ3ｘ1,3、積ｗ4ｘ2,1、積ｗ5ｘ2,2、積ｗ6ｘ2,3、積ｗ7ｘ3,1、積ｗ8ｘ3,2、積ｗ9ｘ3,3、及びバイアス値であるｂ1を含む項の和を生成するように構成することができる。また、第２の畳み込み器ユニットは、少なくとも、積ｗ1ｘ1,2、積ｗ2ｘ1,3、積ｗ3ｘ1,4、積ｗ4ｘ2,2、積ｗ5ｘ2,3、積ｗ6ｘ2,4、積ｗ7ｘ3,2、積ｗ8ｘ3,3、積ｗ9ｘ3,4、及びバイアス値であるｂ1を含む項の和を計算するように構成することができる。
【０１１１】
更に別の実施形態では、第３の畳み込み器ユニットは、少なくとも、積ｗ10ｘ2,1、積ｗ11ｘ2,2、積ｗ12ｘ2,3、積ｗ13ｘ3,1、積ｗ14ｘ3,2、積ｗ15ｘ3,3、積ｗ16ｘ4,1、積ｗ17ｘ4,2、積ｗ18ｘ4,3、及びバイアス値であるｂ2を含む項の和を生成するように構成することができる。また、第４の畳み込み器ユニットは、少なくとも、積ｗ10ｘ2,2、積ｗ11ｘ2,3、積ｗ12ｘ2,4、積ｗ13ｘ3,2、積ｗ14ｘ3,3、積ｗ15ｘ3,4、積ｗ16ｘ4,2、積ｗ17ｘ4,3、積ｗ18ｘ4,4、及びバイアス値であるｂ2を含む項の和を計算するように構成することができる。
【０１１２】
様々な実施形態において、
データ記憶要素ｄ1,1は、データ記憶要素ｄ2,1に電気的に結合され、
データ記憶要素ｄ2,1は、データ記憶要素ｄ3,1に電気的に結合され、
データ記憶要素ｄ3,1は、データ記憶要素ｄ4,1に電気的に結合され、
データ記憶要素ｄ1,2は、データ記憶要素ｄ2,2に電気的に結合され、
データ記憶要素ｄ2,2は、データ記憶要素ｄ3,2に電気的に結合され、
データ記憶要素ｄ3,2は、データ記憶要素ｄ4,2に電気的に結合され、
データ記憶要素ｄ1,3は、データ記憶要素ｄ2,3に電気的に結合され、
データ記憶要素ｄ2,3は、データ記憶要素ｄ3,3に電気的に結合され、
データ記憶要素ｄ3,3は、データ記憶要素ｄ4,3に電気的に結合され、
データ記憶要素ｄ1,4は、データ記憶要素ｄ2,4に電気的に結合され、
データ記憶要素ｄ2,4は、データ記憶要素ｄ3,4に電気的に結合され、
データ記憶要素ｄ3,4は、データ記憶要素ｄ4,4に電気的に結合される。
【０１１３】
本発明の更に別の実施形態は、次式のｐ×ｑデータ記憶要素アレイを備えた２次元同期シフトレジスタであって、
【数８】
2021517702.tif 000010
最初のデータ記憶要素行ｄ1,1、…、ｄ1,qが、各クロックサイクルにおいてｑ個のデータ値を受け取り、１＜ｋ≦ｐに関して、各データ記憶要素行ｄk,1、…、ｄk,qが、各クロックサイクルにおいて直前のデータ記憶要素行ｄk-1,1、…、ｄk-1,qからｑ個のデータ値を受け取る２次元同期シフトレジスタと、
２次元同期シフトレジスタ内に記憶されたデータ値を処理するように構成された畳み込み器アレイであって、畳み込み器アレイが、ｐ−２×ｑ畳み込み器ユニットアレイを備え、畳み込み器ユニットＣＵi,j、１≦ｉ≦ｐ−２及び２≦ｊ≦ｑ−１に関して、
（ｉ）ＣＵi,jの第１の入力がデータ記憶要素ｄi,j-1に電気的に結合され、
（ｉｉ）ＣＵi,jの第２の入力がデータ記憶要素ｄi+1,j-1に電気的に結合され、
（ｉｉｉ）ＣＵi,jの第３の入力がデータ記憶要素ｄi+2,j-1に電気的に結合され、
（ｉｖ）ＣＵi,jの第４の入力がデータ記憶要素ｄi,jに電気的に結合され、
（ｖ）ＣＵi,jの第５の入力がデータ記憶要素ｄi+1,jに電気的に結合され、
（ｖｉ）ＣＵi,jの第６の入力がデータ記憶要素ｄi+2,jに電気的に結合され、
（ｖｉｉ）ＣＵi,jの第７の入力がデータ記憶要素ｄi,j+1に電気的に結合され、
（ｖｉｉｉ）ＣＵi,jの第８の入力がデータ記憶要素ｄi+1,j+1に電気的に結合され、
（ｉｘ）ＣＵi,jの第９の入力がデータ記憶要素ｄi+2,j+1に電気的に結合された、
畳み込み器アレイと、
を含む装置を提供する。
【０１１４】
幾つかの実施形態では、畳み込み器ユニットＣＵi,1、１≦ｉ≦ｐ−２に関して、
（ｉ）ＣＵi,1の第１の入力又は第１の入力に関連付けられた重みのうちの少なくとも一方が論理ゼロに設定され、
（ｉｉ）ＣＵi,1の第２の入力又は第２の入力に関連付けられた重みのうちの少なくとも一方が論理ゼロに設定され、
（ｉｉｉ）ＣＵi,1の第３の入力又は第３の入力に関連付けられた重みのうちの少なくとも一方が論理ゼロに設定され、
（ｉｖ）ＣＵi,1の第４の入力がデータ記憶要素ｄi,1に電気的に結合され、
（ｖ）ＣＵi,1の第５の入力がデータ記憶要素ｄi+1,1に電気的に結合され、
（ｖｉ）ＣＵi,1の第６の入力がデータ記憶要素ｄi+2,1に電気的に結合され、
（ｖｉｉ）ＣＵi,1の第７の入力がデータ記憶要素ｄi,2に電気的に結合され、
（ｖｉｉｉ）ＣＵi,1の第８の入力がデータ記憶要素ｄi+1,2に電気的に結合され、
（ｉｘ）ＣＵi,1の第９の入力がデータ記憶要素ｄi+2,2に電気的に結合される。
【０１１５】
更に幾つかの実施形態では、畳み込み器ユニットＣＵi,q、１≦ｉ≦ｐ−２に関して、
（ｉ）ＣＵi,qの第１の入力がデータ記憶要素ｄi,q-1に電気的に結合され、
（ｉｉ）ＣＵi,qの第２の入力がデータ記憶要素ｄi+1,q-1に電気的に結合され、
（ｉｉｉ）ＣＵi,qの第３の入力がデータ記憶要素ｄi+2,q-1に電気的に結合され、
（ｉｖ）ＣＵi,qの第４の入力がデータ記憶要素ｄi,qに電気的に結合され、
（ｖ）ＣＵi,qの第５の入力がデータ記憶要素ｄi+1,qに電気的に結合され、
（ｖｉ）ＣＵi,qの第６の入力がデータ記憶要素ｄi+2,qに電気的に結合され、
（ｖｉｉ）少なくともＣＵi,qの第７の入力又は第７の入力に関連付けられた重みが論理ゼロに設定され、
（ｖｉｉｉ）少なくともＣＵi,qの第８の入力又は第８の入力に関連付けられた重みが論理ゼロに設定され、
（ｉｘ）少なくともＣＵi,qの第９の入力又は第９の入力に関連付けられた重みが論理ゼロに設定される。
【０１１６】
上記の説明は例証の目的のものであり、限定的ではないことを理解されたい。上記の説明を精査すると、当業者には多くの他の実施形態があることが明らかになろう。従って、本発明の種々の実施形態の範囲は、添付の請求項並びに請求項が権利を与えられる完全な範囲の均等物を基準として定められるべきである。
【符号の説明】
【０１１７】
７０８  畳み込みエンジン
８０２  データ記憶要素
８０４  電気接続部
８０６  畳み込み器ユニット
３０００  システム
３００２  メモリ（ＳＲＡＭ）
３００４  シフト・フォーマット
３００６  コントローラ
【図１】
2021517702.tif 000014
【図２】
2021517702.tif 000015
【図３】
2021517702.tif 000016
【図４】
2021517702.tif 000017
【図５】
2021517702.tif 000018
【図６】
2021517702.tif 000019
【図７】
2021517702.tif 000020
【図８】
2021517702.tif 000021
【図９Ａ】
2021517702.tif 000022
【図９Ｂ】
2021517702.tif 000023
【図９Ｃ】
2021517702.tif 000024
【図９Ｄ】
2021517702.tif 000025
【図１０Ａ】
2021517702.tif 000026
【図１０Ｂ】
2021517702.tif 000027
【図１０Ｃ】
2021517702.tif 000028
【図１０Ｄ】
2021517702.tif 000029
【図１１Ａ】
2021517702.tif 000030
【図１１Ｂ】
2021517702.tif 000031
【図１１Ｃ】
2021517702.tif 000032
【図１２】
2021517702.tif 000033
【図１３Ａ】
2021517702.tif 000034
【図１３Ｂ】
2021517702.tif 000035
【図１３Ｃ】
2021517702.tif 000036
【図１３Ｄ】
2021517702.tif 000037
【図１３Ｅ】
2021517702.tif 000038
【図１４Ａ】
2021517702.tif 000039
【図１４Ｂ】
2021517702.tif 000040
【図１４Ｃ】
2021517702.tif 000041
【図１４Ｄ】
2021517702.tif 000042
【図１５Ａ】
2021517702.tif 000043
【図１５Ｂ】
2021517702.tif 000044
【図１５Ｃ】
2021517702.tif 000045
【図１５Ｄ】
2021517702.tif 000046
【図１６Ａ】
2021517702.tif 000047
【図１６Ｂ】
2021517702.tif 000048
【図１６Ｃ】
2021517702.tif 000049
【図１７】
2021517702.tif 000050
【図１８Ａ】
2021517702.tif 000051
【図１８Ｂ】
2021517702.tif 000052
【図１８Ｃ】
2021517702.tif 000053
【図１９Ａ】
2021517702.tif 000054
【図１９Ｂ】
2021517702.tif 000055
【図２０】
2021517702.tif 000056
【図２１】
2021517702.tif 000057
【図２２】
2021517702.tif 000058
【図２３】
2021517702.tif 000059
【図２４】
2021517702.tif 000060
【図２５（ａ）】
2021517702.tif 000061
【図２５（ｂ）】
2021517702.tif 000062
【図２５（ｃ）】
2021517702.tif 000063
【図２６Ａ】
2021517702.tif 000064
【図２６Ｂ】
2021517702.tif 000065
【図２７Ａ】
2021517702.tif 000066
【図２７Ｂ】
2021517702.tif 000067
【図２７Ｃ】
2021517702.tif 000068
【図２８】
2021517702.tif 000069
【図２９Ａ】
2021517702.tif 000070
【図２９Ｂ】
2021517702.tif 000071
【図３０】
2021517702.tif 000072
【図３１】
2021517702.tif 000073
【手続補正書】
【提出日】令和2年11月17日(2020.11.17)
【手続補正１】
【補正対象書類名】明細書
【補正対象項目名】０００３
【補正方法】変更
【補正の内容】
【０００３】
現在、ニューラルネットワーク（特に畳み込みニューラルネットワーク）は、画像認識／分類、物体認識／分類、及び画像セグメント化を実施するために広く用いられている。数多くの用途（例えば、自動運転車用に向けた物体識別、ソーシャルネットワークに向けた顔認識等）を有するが、ニューラルネットワークは、集中的な計算処理及び頻繁なメモリアクセスを必要とする。本明細書では、畳み込みニューラルネットワークを実装するための効率的なハードウェアアーキテクチャが記載される。
Ｓａｂｒｅｅｔａｌ他に付与された米国特許公開第２０１７／００１１００６号では、データを受信して格納するように構成された入力バッファ、入力バッファからデータ内のカーネルに相応するカーネルデータを抽出するように構成されたデータ抽出器、抽出されたカーネルデータに畳み込み係数を乗算するように構成された乗算器、及び乗算器からの乗算結果の和を計算するように構成された加算器を含むプロセッサが開示される。「Ｇｏｉｎｇ  Ｄｅｅｐｅｒ  ｗｉｔｈ  Ｅｍｂｅｄｄｅｄ  ＦＰＧＡ  Ｐｌａｔｆｏｒｍ  ｆｏｒ  Ｃｏｎｖｏｌｕｔｉｏｎａｌ  Ｎｅｕｒａｌ  Ｎｅｔｗｏｒｋ」、Ｐｒｏｃｅｅｄｉｎｇｓ  ｏｆ  ｔｈｅ  ２０１６  ＡＣＭ／ＳＩＧＤＡ  Ｉｎｔｅｒｎａｔｉｏｎａｌ  Ｓｙｍｐｏｓｉｕｍ  ｏｎ  Ｆｉｅｌｄ−Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙｓ，  ＦＰＧＡ  ’１６，  １  Ｊａｎｕａｒｙ  ２０１６，  ｐａｇｅｓ  ２６−３５，において、Ｑｕｉ他は、Ｉｍａｇｅ−Ｎｅｔ大規模画像分類のための組み込みＦＰＧＡ上の畳み込みニューラルネットワーク（ＣＮＮ）アクセラレータ設計について記載している。「Ａ  Ｍａｓｓｉｖｅｌｙ  Ｐａｒａｌｌｅｌ  Ｃｏｐｒｏｃｅｓｓｏｒ  ｆｏｒ  Ｃｏｎｖｏｌｕｔｉｏｎａｌ  Ｎｅｕｒａｌ  Ｎｅｔｗｏｒｋｓ」、２００９  ２０ｔｈ  ＩＥＥＥ  Ｉｎｔｅｒｎａｔｉｏｎａｌ  Ｃｏｎｆｅｒｅｎｃｅ  ｏｎ  Ａｐｐｌｉｃａｔｉｏｎ−Ｓｐｅｃｉｆｉｃ  Ｓｙｓｔｅｍｓ，  Ａｒｃｈｉｔｅｃｔｕｒｅｓ  ａｎｄ  Ｐｒｏｃｅｓｓｏｒｓ，  １  Ｊｕｌｙ  ２００９，  ｐａｇｅｓ  ５３−６０では、Ｓａｎｋａｒａｄａｓ他は、畳み込みニューラルネットワーク（ＣＮＮ）を高速化するための超並列コプロセッサーについて記載している。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】０１１３
【補正方法】変更
【補正の内容】
【０１１３】
本発明の更に別の実施形態は、次式のｐ×ｑデータ記憶要素アレイを備えた２次元同期シフトレジスタであって、
【数８】
2021517702.tif 000074
最初のデータ記憶要素行ｄ1,1、…、ｄ1,qが、各クロックサイクルにおいてｑ個のデータ値を受け取り、１＜ｋ≦ｐに関して、各データ記憶要素行ｄk,1、…、ｄk,qが、各クロックサイクルにおいて直前のデータ記憶要素行ｄk-1,1、…、ｄk-1,qからｑ個のデータ値を受け取る２次元同期シフトレジスタと、
２次元同期シフトレジスタ内に記憶されたデータ値を処理するように構成された畳み込み器アレイであって、畳み込み器アレイが、ｐ−２×ｑ畳み込み器ユニットアレイを備え、畳み込み器ユニットＣＵi,j、１≦ｉ≦ｐ−２及び２≦ｊ≦ｑ−１に関して、
（ｉ）ＣＵi,jの第１の入力がデータ記憶要素ｄi,j-1に電気的に結合され、
（ｉｉ）ＣＵi,jの第２の入力がデータ記憶要素ｄi+1,j-1に電気的に結合され、
（ｉｉｉ）ＣＵi,jの第３の入力がデータ記憶要素ｄi+2,j-1に電気的に結合され、
（ｉｖ）ＣＵi,jの第４の入力がデータ記憶要素ｄi,jに電気的に結合され、
（ｖ）ＣＵi,jの第５の入力がデータ記憶要素ｄi+1,jに電気的に結合され、
（ｖｉ）ＣＵi,jの第６の入力がデータ記憶要素ｄi+2,jに電気的に結合され、
（ｖｉｉ）ＣＵi,jの第７の入力がデータ記憶要素ｄi,j+1に電気的に結合され、
（ｖｉｉｉ）ＣＵi,jの第８の入力がデータ記憶要素ｄi+1,j+1に電気的に結合され、
（ｉｘ）ＣＵi,jの第９の入力がデータ記憶要素ｄi+2,j+1に電気的に結合された、
畳み込み器アレイと、
を含む装置を提供する。
【手続補正３】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
装置であって、
次式の３×４データ記憶要素アレイを含む２次元シフトレジスタであって、
【数１】
2021517702.tif 000075
最初の時点で、
データ記憶要素ｄ1,1がデータ値ｘ1,1を記憶し、
データ記憶要素ｄ1,2がデータ値ｘ1,2を記憶し、
データ記憶要素ｄ1,3がデータ値ｘ1,3を記憶し、
データ記憶要素ｄ1,4がデータ値ｘ1,4を記憶し、
データ記憶要素ｄ2,1がデータ値ｘ2,1を記憶し、
データ記憶要素ｄ2,2がデータ値ｘ2,2を記憶し、
データ記憶要素ｄ2,3がデータ値ｘ2,3を記憶し、
データ記憶要素ｄ2,4がデータ値ｘ2,4を記憶し、
データ記憶要素ｄ3,1がデータ値ｘ3,1を記憶し、
データ記憶要素ｄ3,2がデータ値ｘ3,2を記憶し、
データ記憶要素ｄ3,3がデータ値ｘ3,3を記憶し、
データ記憶要素ｄ3,4がデータ値ｘ3,4を記憶する、
２次元シフトレジスタと、
第１の複数の乗算器ｍ11,1、ｍ11,2、ｍ11,3、ｍ12,1、ｍ12,2、ｍ12,3、ｍ13,1、ｍ13,2、ｍ13,3を含む第１の畳み込み器ユニットであって、
前記乗算器ｍ11,1が前記データ記憶要素ｄ1,1に電気的に結合され、前記データ値ｘ1,1に重みｗ1を乗算して積ｗ1ｘ1,1を生成するように構成され、
前記乗算器ｍ11,2が前記データ記憶要素ｄ1,2に電気的に結合され、前記データ値ｘ1,2に重みｗ2を乗算して積ｗ2ｘ1,2を生成するように構成され、
前記乗算器ｍ11,3が前記データ記憶要素ｄ1,3に電気的に結合され、前記データ値ｘ1,3に重みｗ3を乗算して積ｗ3ｘ1,3を生成するように構成され、
前記乗算器ｍ12,1が前記データ記憶要素ｄ2,1に電気的に結合され、前記データ値ｘ2,1に重みｗ4を乗算して積ｗ4ｘ2,1を生成するように構成され、
前記乗算器ｍ12,2が前記データ記憶要素ｄ2,2に電気的に結合され、前記データ値ｘ2,2に重みｗ5を乗算して積ｗ5ｘ2,2を生成するように構成され、
前記乗算器ｍ12,3が前記データ記憶要素ｄ2,3に電気的に結合され、前記データ値ｘ2,3に重みｗ6を乗算して積ｗ6ｘ2,3を生成するよう構成され、
前記乗算器ｍ13,1が前記データ記憶要素ｄ3,1に電気的に結合され、前記データ値ｘ3,1に重みｗ7を乗算して積ｗ7ｘ3,1を生成するように構成され、
前記乗算器ｍ13,2が前記データ記憶要素ｄ3,2に電気的に結合され、前記データ値ｘ3,2に重みｗ8を乗算して積ｗ8ｘ3,2を生成するように構成され、
前記乗算器ｍ13,3が前記データ記憶要素ｄ3,3に電気的に結合され、前記データ値ｘ3,3に重みｗ9を乗算して積ｗ9ｘ3,3を生成するように構成された、
第１の畳み込み器ユニットと、
第２の複数の乗算器ｍ21,1、ｍ21,2、ｍ21,3、ｍ22,1、ｍ22,2、ｍ22,3、ｍ23,1、ｍ23,2、ｍ23,3を含む第２の畳み込み器ユニットであって、
前記乗算器ｍ21,1が前記データ記憶要素ｄ1,2に電気的に結合され、前記データ値ｘ1,2に重みｗ1を乗算して積ｗ1ｘ1,2を生成するように構成され、
前記乗算器ｍ21,2が前記データ記憶要素ｄ1,3に電気的に結合され、前記データ値ｘ1,3に重みｗ2を乗算して積ｗ2ｘ1,3を生成するように構成され、
前記乗算器ｍ21,3が前記データ記憶要素ｄ1,4に電気的に結合され、前記データ値ｘ1,4に重みｗ3を乗算して積ｗ3ｘ1,4を生成するように構成され、
前記乗算器ｍ22,1が前記データ記憶要素ｄ2,2に電気的に結合され、前記データ値ｘ2,2に重みｗ4を乗算して積ｗ4ｘ2,2を生成するように構成され、
前記乗算器ｍ22,2が前記データ記憶要素ｄ2,3に電気的に結合され、前記データ値ｘ2,3に重みｗ5を乗算して積ｗ5ｘ2,3を生成するように構成され、
前記乗算器ｍ22,3が前記データ記憶要素ｄ2,4に電気的に結合され、前記データ値ｘ2,4に重みｗ6を乗算して積ｗ6ｘ2,4を生成するように構成され、
前記乗算器ｍ23,1が前記データ記憶要素ｄ3,2に電気的に結合され、前記データ値ｘ3,2に重みｗ7を乗算して積ｗ7ｘ3,2を生成するように構成され、
前記乗算器ｍ23,2が前記データ記憶要素ｄ3,3に電気的に結合され、前記データ値ｘ3,3に重みｗ8を乗算して積ｗ8ｘ3,3を生成するように構成され、
前記乗算器ｍ23,3が前記データ記憶要素ｄ3,4に電気的に結合され、前記データ値ｘ3,4に重みｗ9を乗算して積ｗ9ｘ3,4を生成するように構成された、
第２の畳み込み器ユニットと、
を備え、
前記第１の畳み込み器ユニットは、少なくとも、前記積ｗ1ｘ1,1、前記積ｗ2ｘ1,2、前記積ｗ3ｘ1,3、前記積ｗ4ｘ2,1、前記積ｗ5ｘ2,2、前記積ｗ6ｘ2,3、前記積ｗ7ｘ3,1、前記積ｗ8ｘ3,2、及び前記積ｗ9ｘ3,3、を含む項の第１の和を生成するように構成され、
前記第２の畳み込み器ユニットは、少なくとも、前記積ｗ1ｘ1,2、前記積ｗ2ｘ1,3、前記積ｗ3ｘ1,4、前記積ｗ4ｘ2,2、前記積ｗ5ｘ2,3、前記積ｗ6ｘ2,4、前記積ｗ7ｘ3,2、前記積ｗ8ｘ3,3、及び前記積ｗ9ｘ3,4を含む項の第２の和を生成するように構成され、
前記項の第１の和及び前記項の第２の和が、同じクロックサイクル中に計算される、
ことを特徴とする、装置。
【請求項２】
前記項の第１の和が、バイアス値であるｂ１を含む、請求項１に記載の装置。
【請求項３】
前記項の第２の和が、バイアス値であるｂ１を含む、請求項１に記載の装置。
【請求項４】
前記データ記憶要素ｄ1,1は、前記データ記憶要素ｄ2,1に電気的に結合され、
前記データ記憶要素ｄ2,1は、前記データ記憶要素ｄ3,1に電気的に結合され、
前記データ記憶要素ｄ1,2は、前記データ記憶要素ｄ2,2に電気的に結合され、
前記データ記憶要素ｄ2,2は、前記データ記憶要素ｄ3,2に電気的に結合され、
前記データ記憶要素ｄ1,3は、前記データ記憶要素ｄ2,3に電気的に結合され、
前記データ記憶要素ｄ2,3は、前記データ記憶要素ｄ3,3に電気的に結合され、
前記データ記憶要素ｄ1,4は、前記データ記憶要素ｄ2,4に電気的に結合され、
前記データ記憶要素ｄ2,4は、前記データ記憶要素ｄ3,4に電気的に結合される、
ことを特徴とする請求項１に記載の装置。
【請求項５】
装置であって、
次式の４×４データ記憶要素アレイを含む２次元シフトレジスタであって、
【数２】
2021517702.tif 000076
最初の時点で、
データ記憶要素ｄ1,1がデータ値ｘ1,1を記憶し、
データ記憶要素ｄ1,2がデータ値ｘ1,2を記憶し、
データ記憶要素ｄ1,3がデータ値ｘ1,3を記憶し、
データ記憶要素ｄ1,4がデータ値ｘ1,4を記憶し、
データ記憶要素ｄ2,1がデータ値ｘ2,1を記憶し、
データ記憶要素ｄ2,2がデータ値ｘ2,2を記憶し、
データ記憶要素ｄ2,3がデータ値ｘ2,3を記憶し、
データ記憶要素ｄ2,4がデータ値ｘ2,4を記憶し、
データ記憶要素ｄ3,1がデータ値ｘ3,1を記憶し、
データ記憶要素ｄ3,2がデータ値ｘ3,2を記憶し、
データ記憶要素ｄ3,3がデータ値ｘ3,3を記憶し、
データ記憶要素ｄ3,4がデータ値ｘ3,4を記憶し、
データ記憶要素ｄ4,1がデータ値ｘ4,1を記憶し、
データ記憶要素ｄ4,2がデータ値ｘ4,2を記憶し、
データ記憶要素ｄ4,3がデータ値ｘ4,3を記憶し、
データ記憶要素ｄ4,4がデータ値ｘ4,4を記憶する、
２次元シフトレジスタと、
第１の複数の乗算器ｍ11,1、ｍ11,2、ｍ11,3、ｍ12,1、ｍ12,2、ｍ12,3、ｍ13,1、ｍ13,2、及びｍ13,3を含む第１の畳み込み器ユニットであって、
前記乗算器ｍ11,1が前記データ記憶要素ｄ1,1に電気的に結合され、前記データ値ｘ1,1に重みｗ1を乗算して積ｗ1ｘ1,1を生成するように構成され、
前記乗算器ｍ11,2が前記データ記憶要素ｄ1,2に電気的に結合され、前記データ値ｘ1,2に重みｗ2を乗算して積ｗ2ｘ1,2を生成するように構成され、
前記乗算器ｍ11,3が前記データ記憶要素ｄ1,3に電気的に結合され、前記データ値ｘ1,3に重みｗ3を乗算して積ｗ3ｘ1,3を生成するように構成され、
前記乗算器ｍ12,1が前記データ記憶要素ｄ2,1に電気的に結合され、前記データ値ｘ2,1に重みｗ4を乗算して積ｗ4ｘ2,1を生成するように構成され、
前記乗算器ｍ12,2が前記データ記憶要素ｄ2,2に電気的に結合され、前記データ値ｘ2,2に重みｗ5を乗算して積ｗ5ｘ2,2を生成するように構成され、
前記乗算器ｍ12,3が前記データ記憶要素ｄ2,3に電気的に結合され、前記データ値ｘ2,3に重みｗ6を乗算して積ｗ6ｘ2,3を生成するように構成され、
前記乗算器ｍ13,1が前記データ記憶要素ｄ3,1に電気的に結合され、前記データ値ｘ3,1に重みｗ7を乗算して積ｗ7ｘ3,1を生成するように構成され、
前記乗算器ｍ13,2が前記データ記憶要素ｄ3,2に電気的に結合され、前記データ値ｘ3,2に重みｗ8を乗算して積ｗ8ｘ3,2を生成するように構成され、
前記乗算器ｍ13,3が前記データ記憶要素ｄ3,3に電気的に結合され、前記データ値ｘ3,3に重みｗ9を乗算して積ｗ9ｘ3,3を生成するように構成された、
第１の畳み込み器ユニットと、
第２の複数の乗算器ｍ21,1、ｍ21,2、ｍ21,3、ｍ22,1、ｍ22,2、ｍ22,3、ｍ23,1、ｍ23,2、及びｍ23,3を含む第２の畳み込み器ユニットであって、
前記乗算器ｍ21,1が前記データ記憶要素ｄ1,2に電気的に結合され、前記データ値ｘ1,2に重みｗ1を乗算して積ｗ1ｘ1,2を生成するように構成され、
前記乗算器ｍ21,2が前記データ記憶要素ｄ1,3に電気的に結合され、前記データ値ｘ1,3に重みｗ2を乗算して積ｗ2ｘ1,3を生成するように構成され、
前記乗算器ｍ21,3が前記データ記憶要素ｄ1,4に電気的に結合され、前記データ値ｘ1,4に重みｗ3を乗算して積ｗ3ｘ1,4を生成するように構成され、
前記乗算器ｍ22,1が前記データ記憶要素ｄ2,2に電気的に結合され、前記データ値ｘ2,2に重みｗ4を乗算して積ｗ4ｘ2,2を生成するように構成され、
前記乗算器ｍ22,2が前記データ記憶要素ｄ2,3に電気的に結合され、前記データ値ｘ2,3に重みｗ5を乗算して積ｗ5ｘ2,3を生成するように構成され、
前記乗算器ｍ22,3が前記データ記憶要素ｄ2,4に電気的に結合され、前記データ値ｘ2,4に重みｗ6を乗算して積ｗ6ｘ2,4を生成するように構成され、
前記乗算器ｍ23,1が前記データ記憶要素ｄ3,2に電気的に結合され、前記データ値ｘ3,2に重みｗ7を乗算して積ｗ7ｘ3,2を生成するように構成され、
前記乗算器ｍ23,2が前記データ記憶要素ｄ3,3に電気的に結合され、前記データ値ｘ3,3に重みｗ8を乗算して積ｗ8ｘ3,3を生成するように構成され、
前記乗算器ｍ23,3が前記データ記憶要素ｄ3,4に電気的に結合され、前記データ値ｘ3,4に重みｗ9を乗算して積ｗ9ｘ3,4を生成するように構成された、
第２の畳み込み器ユニットと、
第３の複数の乗算器ｍ31,1、ｍ31,2、ｍ31,3、ｍ32,1、ｍ32,2、ｍ32,3、ｍ33,1、ｍ33,2、及びｍ33,3を含む第３の畳み込み器ユニットであって、
前記乗算器ｍ31,1が前記データ記憶要素ｄ2,1に電気的に結合され、前記データ値ｘ2,1に重みｗ10を乗算して積ｗ10ｘ2,1を生成するように構成され、
前記乗算器ｍ31,2が前記データ記憶要素ｄ2,2に電気的に結合され、前記データ値ｘ2,2に重みｗ11を乗算して積ｗ11ｘ2,2を生成するように構成され、
前記乗算器ｍ31,3が前記データ記憶要素ｄ2,3に電気的に結合され、前記データ値ｘ2,3に重みｗ12を乗算して積ｗ12ｘ2,3を生成するように構成され、
前記乗算器ｍ32,1が前記データ記憶要素ｄ3,1に電気的に結合され、前記データ値ｘ3,1に重みｗ13を乗算して積ｗ13ｘ3,1を生成するように構成され、
前記乗算器ｍ32,2が前記データ記憶要素ｄ3,2に電気的に結合され、前記データ値ｘ3,2に重みｗ14を乗算して積ｗ14ｘ3,2を生成するように構成され、
前記乗算器ｍ32,3が前記データ記憶要素ｄ3,3に電気的に結合され、前記データ値ｘ3,3に重みｗ15を乗算して積ｗ15ｘ3,3を生成するように構成され、
前記乗算器ｍ33,1が前記データ記憶要素ｄ4,1に電気的に結合され、前記データ値ｘ4,1に重みｗ16を乗算して積ｗ16ｘ4,1を生成するように構成され、
前記乗算器ｍ33,2が前記データ記憶要素ｄ4,2に電気的に結合され、前記データ値ｘ4,2に重みｗ17を乗算して積ｗ17ｘ4,2を生成するように構成され、
前記乗算器ｍ33,3が前記データ記憶要素ｄ4,3に電気的に結合され、前記データ値ｘ4,3に重みｗ18を乗算して積ｗ18ｘ4,3を生成するように構成された、
第３の畳み込み器ユニットと、
第４の複数の乗算器ｍ41,1、ｍ41,2、ｍ41,3、ｍ42,1、ｍ42,2、ｍ42,3、ｍ43,1、ｍ43,2、及びｍ43,3を含む第４の畳み込み器ユニットであって、
前記乗算器ｍ41,1が前記データ記憶要素ｄ2,2に電気的に結合され、前記データ値ｘ2,2に重みｗ10を乗算して積ｗ10ｘ2,2を生成するように構成され、
前記乗算器ｍ41,2が前記データ記憶要素ｄ2,3に電気的に結合され、前記データ値ｘ2,3に重みｗ11を乗算して積ｗ11ｘ2,3を生成するように構成され、
前記乗算器ｍ41,3が前記データ記憶要素ｄ2,4に電気的に結合され、前記データ値ｘ2,4に重みｗ12を乗算して積ｗ12ｘ2,4を生成するように構成され、
前記乗算器ｍ42,1が前記データ記憶要素ｄ3,2に電気的に結合され、前記データ値ｘ3,2に重みｗ13を乗算して積ｗ13ｘ3,2を生成するように構成され、
前記乗算器ｍ42,2が前記データ記憶要素ｄ3,3に電気的に結合され、前記データ値ｘ3,3に重みｗ14を乗算して積ｗ14ｘ3,3を生成するように構成され、
前記乗算器ｍ42,3が前記データ記憶要素ｄ3,4に電気的に結合され、前記データ値ｘ3,4に重みｗ15を乗算して積ｗ15ｘ3,4を生成するように構成され、
前記乗算器ｍ43,1が前記データ記憶要素ｄ4,2に電気的に結合され、前記データ値ｘ4,2に重みｗ16を乗算して積ｗ16ｘ4,2を生成するように構成され、
前記乗算器ｍ43,2が前記データ記憶要素ｄ4,3に電気的に結合され、前記データ値ｘ4,3に重みｗ17を乗算して積ｗ17ｘ4,3を生成するように構成され、
前記乗算器ｍ43,3が前記データ記憶要素ｄ4,4に電気的に結合され、前記データ値ｘ4,4に重みｗ18を乗算して積ｗ18ｘ4,4を生成するように構成された、
第４の畳み込み器ユニットと、
を備え、
前記第１、前記第２、前記第３、及び前記第４の複数の乗算器からの全ての乗算器が互いに異なっており、その結果、前記装置が少なくとも３６個の別個の乗算器を備える、
ことを特徴とする、装置。
【請求項６】
前記第１の畳み込み器ユニットは、少なくとも、前記積ｗ1ｘ1,1、前記積ｗ2ｘ1,2、前記積ｗ3ｘ1,3、前記積ｗ4ｘ2,1、前記積ｗ5ｘ2,2、前記積ｗ6ｘ2,3、前記積ｗ7ｘ3,1、前記積ｗ8ｘ3,2、前記積ｗ9ｘ3,3、及びバイアス値であるｂ1を含む項の和を生成するように構成される、ことを特徴とする請求項５に記載の装置。
【請求項７】
前記第２の畳み込み器ユニットは、少なくとも、前記積ｗ1ｘ1,2、前記積ｗ2ｘ1,3、前記積ｗ3ｘ1,4、前記積ｗ4ｘ2,2、前記積ｗ5ｘ2,3、前記積ｗ6ｘ2,4、前記積ｗ7ｘ3,2、前記積ｗ8ｘ3,3、前記積ｗ9ｘ3,4、及びバイアス値であるｂ1を含む項の和を生成するように構成される、ことを特徴とする請求項５に記載の装置。
【請求項８】
前記第３の畳み込み器ユニットは、少なくとも、前記積ｗ10ｘ2,1、前記積ｗ11ｘ2,2、前記積ｗ12ｘ2,3、前記積ｗ13ｘ3,1、前記積ｗ14ｘ3,2、前記積ｗ15ｘ3,3、前記積ｗ16ｘ4,1、前記積ｗ17ｘ4,2、前記積ｗ18ｘ4,3、及びバイアス値であるｂ2を含む項の和を生成するように構成される、ことを特徴とする請求項５に記載の装置。
【請求項９】
前記第４の畳み込み器ユニットは、少なくとも、前記積ｗ10ｘ2,2、前記積ｗ11ｘ2,3、前記積ｗ12ｘ2,4、前記積ｗ13ｘ3,2、前記積ｗ14ｘ3,3、前記積ｗ15ｘ3,4、前記積ｗ16ｘ4,2、前記積ｗ17ｘ4,3、前記積ｗ18ｘ4,4、及びバイアス値であるｂ2を含む項の和を生成するように構成される、ことを特徴とする請求項５に記載の装置。
【請求項１０】
前記データ記憶要素ｄ1,1は、前記データ記憶要素ｄ2,1に電気的に結合され、
前記データ記憶要素ｄ2,1は、前記データ記憶要素ｄ3,1に電気的に結合され、
前記データ記憶要素ｄ3,1は、前記データ記憶要素ｄ4,1に電気的に結合され、
前記データ記憶要素ｄ1,2は、前記データ記憶要素ｄ2,2に電気的に結合され、
前記データ記憶要素ｄ2,2は、前記データ記憶要素ｄ3,2に電気的に結合され、
前記データ記憶要素ｄ3,2は、前記データ記憶要素ｄ4,2に電気的に結合され、
前記データ記憶要素ｄ1,3は、前記データ記憶要素ｄ2,3に電気的に結合され、
前記データ記憶要素ｄ2,3は、前記データ記憶要素ｄ3,3に電気的に結合され、
前記データ記憶要素ｄ3,3は、前記データ記憶要素ｄ4,3に電気的に結合され、
前記データ記憶要素ｄ1,4は、前記データ記憶要素ｄ2,4に電気的に結合され、
前記データ記憶要素ｄ2,4は、前記データ記憶要素ｄ3,4に電気的に結合され、
前記データ記憶要素ｄ3,4は、前記データ記憶要素ｄ4,4に電気的に結合される、
ことを特徴とする請求項５に記載の装置。
【請求項１１】
前記第１の畳み込み器ユニットは、少なくとも、前記積ｗ1ｘ1,1、前記積ｗ2ｘ1,2、前記積ｗ3ｘ1,3、前記積ｗ4ｘ2,1、前記積ｗ5ｘ2,2、前記積ｗ6ｘ2,3、前記積ｗ7ｘ3,1、前記積ｗ8ｘ3,2、及び前記積ｗ9ｘ3,3、を含む項の第１の和を生成するように構成され、
前記第２の畳み込み器ユニットは、少なくとも、前記積ｗ1ｘ1,2、前記積ｗ2ｘ1,3、前記積ｗ3ｘ1,4、前記積ｗ4ｘ2,2、前記積ｗ5ｘ2,3、前記積ｗ6ｘ2,4、前記積ｗ7ｘ3,2、前記積ｗ8ｘ3,3、及び前記積ｗ9ｘ3,4を含む項の第２の和を生成するように構成され、
前記第３の畳み込み器ユニットは、少なくとも、前記積ｗ10ｘ2,1、積ｗ11ｘ2,2、積ｗ12ｘ2,3、積ｗ13ｘ3,1、積ｗ14ｘ3,2、積ｗ15ｘ3,3、積ｗ16ｘ4,1、積ｗ17ｘ4,2、及び積ｗ18ｘ4,3を含む項の第３の和を生成するように構成され、
前記第４の畳み込み器ユニットは、少なくとも、積ｗ10ｘ2,2、積ｗ11ｘ2,3、積ｗ12ｘ2,4、積ｗ13ｘ3,2、積ｗ14ｘ3,3、積ｗ15ｘ3,4、積ｗ16ｘ4,2、積ｗ17ｘ4,3、及び積ｗ18ｘ4,4を含む項の第４の和を生成するように構成され、
前記項の第１の和、前記項の第２の和、前記項の第３の和及び前記項の第４の和が、同じクロックサイクル中に計算される、
ことを特徴とする、請求項５に記載の装置。
【請求項１２】
前記乗算器ｍ11,1が前記データ記憶要素ｄ1,1に恒久的に電気的に結合され、
前記乗算器ｍ11,2が前記データ記憶要素ｄ1,2に恒久的に電気的に結合され、
前記乗算器ｍ11,3が前記データ記憶要素ｄ1,3に恒久的に電気的に結合され、
前記乗算器ｍ12,1が前記データ記憶要素ｄ2,1に恒久的に電気的に結合され、
前記乗算器ｍ12,2が前記データ記憶要素ｄ2,2に恒久的に電気的に結合され、
前記乗算器ｍ12,3が前記データ記憶要素ｄ2,3に恒久的に電気的に結合され、
前記乗算器ｍ13,1が前記データ記憶要素ｄ3,1に恒久的に電気的に結合され、
前記乗算器ｍ13,2が前記データ記憶要素ｄ3,2に恒久的に電気的に結合され、
前記乗算器ｍ13,3が前記データ記憶要素ｄ3,3に恒久的に電気的に結合され、
前記乗算器ｍ21,1が前記データ記憶要素ｄ1,2に恒久的に電気的に結合され、
前記乗算器ｍ21,2が前記データ記憶要素ｄ1,3に恒久的に電気的に結合され、
前記乗算器ｍ21,3が前記データ記憶要素ｄ1,4に恒久的に電気的に結合され、
前記乗算器ｍ22,1が前記データ記憶要素ｄ2,2に恒久的に電気的に結合され、
前記乗算器ｍ22,2が前記データ記憶要素ｄ2,3に恒久的に電気的に結合され、
前記乗算器ｍ22,3が前記データ記憶要素ｄ2,4に恒久的に電気的に結合され、
前記乗算器ｍ23,1が前記データ記憶要素ｄ3,2に恒久的に電気的に結合され、
前記乗算器ｍ23,2が前記データ記憶要素ｄ3,3に恒久的に電気的に結合され、
前記乗算器ｍ23,3が前記データ記憶要素ｄ3,4に恒久的に電気的に結合され、
前記乗算器ｍ31,1が前記データ記憶要素ｄ2,1に恒久的に電気的に結合され、
前記乗算器ｍ31,2が前記データ記憶要素ｄ2,2に恒久的に電気的に結合され、
前記乗算器ｍ31,3が前記データ記憶要素ｄ2,3に恒久的に電気的に結合され、
前記乗算器ｍ32,1が前記データ記憶要素ｄ3,1に恒久的に電気的に結合され、
前記乗算器ｍ32,2が前記データ記憶要素ｄ3,2に恒久的に電気的に結合され、
前記乗算器ｍ32,3が前記データ記憶要素ｄ3,3に恒久的に電気的に結合され、
前記乗算器ｍ33,1が前記データ記憶要素ｄ4,1に恒久的に電気的に結合され、
前記乗算器ｍ33,2が前記データ記憶要素ｄ4,2に恒久的に電気的に結合され、
前記乗算器ｍ33,3が前記データ記憶要素ｄ4,3に恒久的に電気的に結合され、
前記乗算器ｍ41,1が前記データ記憶要素ｄ2,2に恒久的に電気的に結合され、
前記乗算器ｍ41,2が前記データ記憶要素ｄ2,3に恒久的に電気的に結合され、
前記乗算器ｍ41,3が前記データ記憶要素ｄ2,4に恒久的に電気的に結合され、
前記乗算器ｍ42,1が前記データ記憶要素ｄ3,2に恒久的に電気的に結合され、
前記乗算器ｍ42,2が前記データ記憶要素ｄ3,3に恒久的に電気的に結合され、
前記乗算器ｍ42,3が前記データ記憶要素ｄ3,4に恒久的に電気的に結合され、
前記乗算器ｍ43,1が前記データ記憶要素ｄ4,2に恒久的に電気的に結合され、
前記乗算器ｍ43,2が前記データ記憶要素ｄ4,3に恒久的に電気的に結合され、
前記乗算器ｍ43,3が前記データ記憶要素ｄ4,4に恒久的に電気的に結合される、
ことを特徴とする、請求項５に記載の装置。
【国際調査報告】
2021517702.tif 000077
2021517702.tif 000078
2021517702.tif 000079