JP7485396B2 - 内積計算装置 - Google Patents

内積計算装置 Download PDF

Info

Publication number
JP7485396B2
JP7485396B2 JP2022195665A JP2022195665A JP7485396B2 JP 7485396 B2 JP7485396 B2 JP 7485396B2 JP 2022195665 A JP2022195665 A JP 2022195665A JP 2022195665 A JP2022195665 A JP 2022195665A JP 7485396 B2 JP7485396 B2 JP 7485396B2
Authority
JP
Japan
Prior art keywords
data
values
weight
value
memory
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2022195665A
Other languages
English (en)
Other versions
JP2024059535A (ja
Inventor
泰吉 林
Original Assignee
國立中正大學
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 國立中正大學 filed Critical 國立中正大學
Publication of JP2024059535A publication Critical patent/JP2024059535A/ja
Application granted granted Critical
Publication of JP7485396B2 publication Critical patent/JP7485396B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/52Multiplying; Dividing
    • G06F7/523Multiplying only
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/544Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation
    • G06F7/5443Sum of products
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/50Adding; Subtracting
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/38Indexing scheme relating to groups G06F7/38 - G06F7/575
    • G06F2207/48Indexing scheme relating to groups G06F7/48 - G06F7/575
    • G06F2207/4802Special implementations
    • G06F2207/4818Threshold devices
    • G06F2207/4824Neural networks

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Complex Calculations (AREA)
  • Superconductors And Manufacturing Methods Therefor (AREA)
  • Supplying Of Containers To The Packaging Station (AREA)
  • Container Filling Or Packaging Operations (AREA)

Description

本発明は計算装置に関し、特に、内積計算装置に関する。
ベクトルの内積(inner product)は、信号処理やニューラルネットワークなどの計算において最も重要な核心部の一つである。ニューラルネットワークや信号処理などの応用におけるベクトルの内積計算には大量に重複する同じ重み又は係数〔例えば、線形位相(linear-phase)有限インパルス応答(FIR:Finite Impulse Response)フィルターの対称的な係数又は高量子化のニューラルネットワークの重み〕が多くあり、線形位相FIRにおいて、係数が完全に対称であるため、数学的分配法則(distributive law)を利用して対照的な係数を有する2つの入力データを先に加算し、その和に当該係数値を乗じれば乗算計算を効果的に半減できる。しかしニューラルネットワーク又はその他の一般的な応用においては、重複する重み又は係数はほぼランダムに発生するため、これまでの文献では、重みをインデックス方式で保存することにより重みメモリーの保存及び読み出しの複雑度を低減するにとどまっていた。つまり、当該内積計算はK種類の異なる重みがある場合、もとはそれぞれnビットの重みが必要であったが、logKビットのインデックスを用いて示せば重みのビット数を効果的に低減できる。
図1は先行技術の完全接続(fully-connected)ニューラルネットワークを示す図である。図1を参照すると、ニューラルネットワークは複数の小円を有し、それらの小円は左から右に向かってそれぞれ、入力層に位置する入力ノード、隠れ層に位置する多層ニューロン及び出力層に位置する出力ノードを表し、その中のxi,jは第i層j個目のニューロンであることを示す。第i層j個目のニューロンxi,jの計算は、第i-1層の第k個目のニューロンxi-1,k出力と対応する重みデータwi,j,kのベクトルの内積に、第i層のj個目のニューロンxi,jに対応するバイアスbi,jを加えるとともに、活性化(activation)関数の計算を行った結果であり、その式は次の(1)式となる。
(1)式の中のNi-1は第i-1層のニューロンに対応する入力データの個数である。ベクトルの内積の最も直接的な実現方法は、「積和演算器(MAC:multiply-accumulator)」により2つのベクトルに対応する要素(すなわち、ニューラルネットワークの前の層のニューロン出力と対応する重み)をそれぞれ乗算した後、順次乗累算して内積計算の結果を得る方法である。図2は、先行技術の図1のニューラルネットワークに用いられる内積計算装置のブロック図である。図2を参照すると、内積計算装置はマイクロ命令生成装置10、データバッファー12、重みメモリー14、乗算器16、加算器18及び活性化関数処理装置20を備える。以下、図2の操作ステップを簡単に説明する。ステップ1.まず入力データをデータバッファー12に入れる。ステップ2.データバッファー12の入力データ及び対応する重み係数を順次読み出し、その内積を計算し、内積値にバイアスを加算し、活性化関数を経て、ニューラルネットワークは計算結果を出力してデータバッファー12に保存する。ステップ3.第1隠れ層の全てのニューロン計算が終わるまでステップ2のニューロン計算を繰り返し、結果をデータバッファー12に保存する。ステップ4.データバッファー12における第1隠れ層の出力及び対応する重み係数を順次読み出し、その内積を計算し、内積値にバイアスを加算し、活性化関数を経て、ニューラルネットワークは計算結果を出力してデータバッファー12に保存する。ステップ5.第2隠れ層の全てのニューロン計算が終わるまでステップ4のニューロン計算を繰り返し、結果をデータバッファー12に保存する。ステップ6.全ての隠れ層の計算が終わるまでステップ5を繰り返す。ステップ7.データバッファー12における最後の隠れ層の出力及び対応する重み係数を順次読み出し、その内積を計算し、内積値にバイアスを加算した後、データバッファー12に保存する。ステップ8.出力層の計算が終わるまでステップ7の出力計算を繰り返し、結果をデータバッファー12に保存する。
図3は先行技術の内積計算装置のブロック図であり、内積計算装置はマイクロ命令生成装置10、データバッファー12、乗算器16、加算器18、活性化関数処理装置20、インデックスメモリー22及び重みマッピングテーブル24を備える。図3ではインデックスメモリー22及び重みマッピングテーブル24を使用しているが、重複する係数と数学的分配法則の特性を十分に利用して複雑な乗算計算を減らしていないのが残念である。
図4は先行技術の別の内積計算装置のブロック図である。図4は当業者が容易に実現できる構造である。この内積計算装置はマイクロ命令生成装置26、データバッファー28、インデックスメモリー30、重みマッピングテーブル32、加算器34、プレアキュムレーターレジスタアレイ36、乗算器38、加算器40及び活性化関数処理装置42を備える。プレアキュムレーターレジスタアレイ36はK個の異なるプレアキュムレーターを含む。各インデックス値(0からK-1)に基づいてK個の異なるプレアキュムレーターにより、対応する入力値をそれぞれ累積し、全ての入力値がそれに対応するインデックス値に従って対応するプレアキュムレーターに累積された後、対応する係数を乗算して最終的な累積を完了し、ベクトルの内積が算出される。つまり、もとはN個の要素の内積計算にはN回の乗算及びN-1回の加算が必要であったが、数学的分配法則に従えば、重複する係数による余分な計算であるN-K回の乗算を完全に省略できる。この構造は直感的ではあるが、膨大な数のプレアキュムレーターを必要とし、K=16で、512個のニューロンの隠れ層及び16ビットの演算には、25ビットのプレアキュムレーターが16個必要であり、実現するための面積は16ビットの乗算器よりも大きい可能性があり、相当のアクセス消費電力になる。
そこで、本発明は、従来技術から生じる上述の問題を解決するための内積計算装置を提案する。
本発明は、高性能で低消費電力という目的を達成する内積計算装置を提供する。
本発明の内積計算装置はデータメモリー、転置インデックスメモリー(IIM:inverted index memory)、重みマッピングテーブル、コントローラー、プレアキュムレーター及び積和演算モジュールを備える。コントローラーは、データメモリー、転置インデックスメモリー及び重みマッピングテーブルに電気的に接続する。プレアキュムレーターはデータメモリーに電気的に接続し、積和演算モジュールはプレアキュムレーター及び重みマッピングテーブルに電気的に接続する。データメモリーは複数のデータグループを保存し、各データグループは複数のデータ値を含む。転置インデックスメモリーは各データグループのデータメモリーにおけるデータアドレス及びそれに対応する重みインデックス値を保存する。重みマッピングテーブルは重みインデックス値に対応する重み値(weight values)を保存する。コントローラーは、転置インデックスメモリーから全てのデータグループのデータアドレス及びそれに対応する重みインデックス値を順次取得するとともに、それらに基づいてデータメモリーを駆動して全てのデータグループの全てのデータ値を順次出力し、かつ、重みマッピングテーブルを駆動して重みインデックス値に対応する重み値を順次出力する。プレアキュムレーターは、各データグループの全てのデータ値を受信して累積することにより、複数の累積値を生成する。積和演算モジュールは、各データグループに対応する累積値及び重み値を受信するとともに、分配法則(distributive law)に基づき各データグループに対応する累積値と重み値の乗算及び累積を行うことにより、内積値を生成する。
本発明の一実施形態において、転置インデックスメモリーは、可変長符号化(variable length coding)方式により各データグループの当該データアドレス及びそれに対応する重みインデックス値を保存する。
本発明の一実施形態において、全てのデータグループに対応する重み値は正の値及び負の値を含み、転置インデックスメモリーは正の値から負の値の順序でそれに対応するデータアドレスを順次保存する。
本発明の一実施形態において、転置インデックスメモリーは、最小の負の値から最大の負の値の順序でそれに対応するデータアドレスを順次保存し、かつ、最小の負の値に対応するデータアドレスは最大の負の値に対応するデータアドレスと比較して正の値に対応するデータアドレスに近い。
本発明の一実施形態において、積和演算モジュールは乗算器及びアキュムレーターを備える。乗算器はプレアキュムレーター及び重みマッピングテーブルに電気的に接続する。乗算器は各データグループに対応する累積値と重み値を受信して乗算することにより、複数の乗算値を生成する。アキュムレーターは、乗算器に電気的に接続し、全ての乗算値を受信して累積することにより、内積値を生成する。
本発明の一実施形態において、アキュムレーターはさらに、関数処理装置に電気的に接続し、内積値について活性化(activation)関数、ラウンド関数又は飽和(saturation)関数の演算を行う。
本発明の一実施形態において、内積計算装置はデータメモリー、転置インデックスメモリー、コントローラー、プレアキュムレーター及び積和演算モジュールを備える。データメモリーは複数のデータグループを保存し、各データグループは複数のデータ値を含む。転置インデックスメモリーは各データグループのデータメモリーにおけるデータアドレス及びそれに対応する重み値を保存する。コントローラーはデータメモリー及び転置インデックスメモリーに電気的に接続する。コントローラーは転置インデックスメモリーから全てのデータグループのデータアドレス及びそれに対応する重み値を順次取得するとともに、それらに基づいてデータメモリーを駆動して全てのデータグループの全てのデータ値を順次出力し、かつ、全てのデータグループに対応する重み値を順次出力する。プレアキュムレーターは、データメモリーに電気的に接続し、各データグループの全てのデータ値を受信して累積することにより、複数の累積値を生成する。積和演算モジュールはプレアキュムレーター及びコントローラーに電気的に接続する。積和演算モジュールは各データグループに対応する累積値と重み値を受信するとともに、分配法則に基づき各データグループに対応する累積値と重み値の乗算及び累積を行うことにより、内積値を生成する。
本発明の一実施形態において、転置インデックスメモリーは、可変長符号化方式により各データグループのデータアドレス及びそれに対応する重み値を保存する。
本発明の一実施形態において、積和演算モジュールは乗算器及びアキュムレーターを備える。乗算器は、プレアキュムレーター及びコントローラーに電気的に接続し、各データグループに対応する累積値と重み値を受信して乗算することにより、複数の乗算値を生成する。アキュムレーターは、乗算器に電気的に接続し、全ての乗算値を受信して累積することにより、内積値を生成する。
上述の内容によれば、内積計算装置は、転置インデックスメモリーから各データグループのデータメモリーにおけるデータアドレス及びそれに対応する重みインデックス値を取得し、それらに基づいて単一のプレアキュムレーターにより各データグループの全てのデータ値を累積すると同時に、数学的分配法則に従って複数の重複する重み値の乗算計算の量を削減することにより、高性能で低消費電力にするという目的を達成する。
本発明の目的、技術内容、特徴および達成される効果を理解しやすくするため、添付の図面と併せて具体的な実施形態について以下に詳細に説明する。
先行技術の完全接続(fully-connected)ニューラルネットワークを示す図である。 先行技術の図1のニューラルネットワークに用いられる内積計算装置のブロック図である。 先行技術の内積計算装置のブロック図である。 先行技術の別の内積計算装置のブロック図である。 本発明の第1実施例における内積計算装置のブロック図である。 本発明の一実施形態における重み値、バイアス、データアドレス、重みインデックス値及びデータ値の数量の転置インデックスメモリーへの保存を示す図である。 本発明の第2実施例における内積計算装置のブロック図である。
本考案の実施形態について、関連する図を合わせて以下にさらなる説明を加える。図面及び明細書においては、可能な限り、同じ符号で同一又は同様の部材を示す。図面においては、簡潔性及び利便性のため、形状及び厚さが拡大表示されることがある。特に図中で表示されていない、或いは明細書に記載されていない素子は、当業者が知る形態であると解釈できる。当業者であれば本発明の内容に基づき、様々な変更や修正を加えることが可能である。
1つの素子が『・・・上にある』と記述されている場合、一般的には当該素子が直接その他の素子上にあることを指し、その他素子が両者の中間に存在するという場合もある。それに反し、1つの素子が『直接』別の素子にあるという記述の場合、その他素子は両者の中間に存在することはできない。本文で用いられる「及び/又は」は列挙された関連項目中の1つ又は複数のいかなる組み合わせも含む。
以下の文中における「一つの実施形態」又は「一実施形態」という記述は少なくとも1つの実施形態内において関連する特定の素子、構造又は特徴のことを指す。したがって、以下の文中において多くの箇所にある「一つの実施形態」又は「一実施形態」といった複数の記述は同一実施形態に対するものではない。さらに、1つ又は複数の実施形態における特定の部材、構造及び特徴は適切な方式に基づいて組み合わせることができる。
以下に具体例を挙げて説明を加えるが、これらの例は説明のために用いられるに過ぎない。当業者であれば、本開示内容の精神と領域を逸脱しない範囲内で各種の変更や潤色を加えることができる。本開示内容の保護範囲は、特許請求の範囲で指定した内容を基準とする。本明細書及び特許請求の範囲において、明確な指定がない限り、「1つ」及び「前記」という用語は、「1つまたは少なくとも1つ」の意味を含む。また、本開示にもあるように、特定の文脈から複数であることが明らかである以外に、単数表記は複数の意味も含む。さらに、本明細書及び特許請求の範囲における内容に明確な指定がない限り、「その中」という用語は、「その中」及び「その上」という意味を含むことがある。本明細書及び特許請求の範囲で使用される用語(terms)は、明確な説明がない限り、その用語が当該分野、本開示の内容及び特殊な内容において通常用いられるのと同じ意味を有する。本開示を説明するための用語については、以下の段落または明細書で別途説明し、当業者(practitioner)が本開示の説明をより明確に理解できるようにする。本明細書のいかなる部分の例示も、ここに述べる用語の例示の使用に含まれ、これらの例示は説明のために用いられるに過ぎず、本開示又は例示されるいかなる用語の範囲及び意味を限定するものではない。同様に、本開示は本明細書で提案される各種実施形態に限定されない。
また、本明細書において「電気的に結合(電気結合)」又は「電気的に接続(電気接続)」という語句を使用する場合は、いかなる直接的及び間接的な電気接続手段も含まれる。例えば、文中で第1装置が第2装置に電気的結合するという記載がある場合、当該第1装置は当該第2装置に直接的に接続できる、或いはその他の装置又は接続手段により当該第2装置に間接的に接続できることを示す。さらに、電気信号の伝送、提供についての記載がある場合は、電気信号の伝送過程において減衰又はその他非理想的な変化が伴う可能性はあるが、電気信号の伝送又は提供の供給源及び受信端について特に説明がない場合は、実質上同一信号であると見なされることを、当業者は理解できるはずである。例えば、電子回路の端点Aから電気信号Sを電子回路の端点Bに伝送(又は提供)する場合、トランジスタースイッチのソース、ドレイン両端及び/又は可能な寄生容量により電圧を低下させる可能性があるが、この設計の目的によれば、意図せずに伝送(又は提供)時に生じる減衰又はその他の非理想的な変化を利用してある特定の技術効果を達成する場合、電気信号Sは電子回路の端点Aと端点Bにおいて実質的な同一信号と見なすことができるはずである。
特に説明がない限り、いくつかの条件句或いは語句、例えば「できる(can)」、「可能性がある(could)」、「かもしれない(might)」、或いは「してよい(may)」等は、通常は本発明の実施形態を表現するが、不要な可能性もある特徴、部材或いは工程と解釈してもよい。その他の実施形態において、これらの特徴、部材、或いは工程は不要な場合もある。
本明細書で使用する「含む、備える(comprising、including、involving)」、「有する(having)」、「含有する(containing)」などの用語は、オープンエンド形式であり、つまり、列挙されたものに限定されないことを意図している。また、本発明のいずれの実施形態又は特許請求の範囲も、本発明が開示した目的、長所又は特徴の全てを達成する必要はない。さらに、要約と発明の名称は、特許文献を検索するのに用いられるものであり、本発明の特許請求の範囲を限定するものではない。
以下の説明で提供する内積計算装置は、転置インデックスメモリーから各データグループのデータメモリーにおけるデータアドレス及びそれに対応する重みインデックス値を取得するとともに、それらに基づいて単一のプレアキュムレーターにより各データグループの全てのデータ値を累積すると同時に、数学的分配法則に従って複数の重複する重み値の乗算計算の量を削減することにより、高性能で低消費電力にするという目的を達成する。
図5は本発明の第1実施例における内積計算装置のブロック図である。以下に内積計算装置100の第1実施例を紹介するので、図5を参照されたい。内積計算装置100はデータメモリー110、転置インデックスメモリー120、重みマッピングテーブル130、コントローラー140、プレアキュムレーター150及び積和演算モジュール160を備える。データメモリー110はレジスタであってもよいが、これに限定されない。コントローラー140は、データメモリー110、転置インデックスメモリー120及び重みマッピングテーブル130に電気的に接続する。プレアキュムレーター150はデータメモリー110に電気的に接続し、積和演算モジュール160はプレアキュムレーター150及び重みマッピングテーブル130に電気的に接続する。
データメモリー110は複数のデータグループを保存し、各データグループは複数のデータ値Dを含む。転置インデックスメモリー120は各データグループのデータメモリー110におけるデータアドレスA及びそれに対応する重みインデックス値WIを保存する。重みマッピングテーブル130は重みインデックス値WIに対応する重み値Wを保存する。重みインデックス値WIとそれに対応する重み値Wは同じ値であってもよいが、本発明はこれに限定されない。コントローラー140は、転置インデックスメモリー120から全てのデータグループのデータアドレスA及びそれに対応する重みインデックス値WIを順次取得するとともに、それらに基づいてデータメモリー110を駆動して全てのデータグループの全てのデータ値Dを順次出力し、かつ、重みマッピングテーブル130を駆動して重みインデックス値WIに対応する重み値Wを順次出力する。プレアキュムレーター150は、各データグループの全てのデータ値Dを受信して累積することにより、複数の累積値AVを生成する。積和演算モジュール160は、各データグループに対応する累積値AV及び重み値Wを受信するとともに、分配法則に基づき各データグループに対応する累積値AVと重み値Wの乗算及び累積を行うことにより、内積値Pを生成する。数学的分配法則によれば複数の重複する重み値の乗算計算を削減することで、高性能で低消費電力にするという目的を達成することができる。
すべてのデータグループが第1データグループ及び第2データグループを含み、第1データグループが複数の第1データ値D1を含み、第2データグループが複数の第2データ値D2を含むと仮定する。データメモリー110には、第1データグループの第1データアドレスA1及びそれに対応する第1重みインデックス値WI1を保存するとともに、第2データグループの第2データアドレスA2及びそれに対応する第2重みインデックス値WI2を保存する。第1重みインデックス値WI1は第1重み値W1に対応し、第2重みインデックス値WI2は第2重み値W2に対応する。全ての累積値AVは第1累積値AV1及び第2累積値AV2を含む。まず、コントローラー140は、転置インデックスメモリー120から第1データグループの第1データアドレスA1及びそれに対応する第1重みインデックス値WI1を取得するとともに、それらに基づいてデータメモリー110を駆動して第1データグループの全ての第1データ値D1を出力し、かつ、重みマッピングテーブル130を駆動して第1重みインデックス値WI1に対応する第1重み値W1を出力する。プレアキュムレーター150は、第1データグループの全ての第1データ値D1を受信して累積することにより、第1累積値AV1を生成する。次に、コントローラー140は、転置インデックスメモリー120から第2データグループの第2データアドレスA2及びそれに対応する第2重みインデックス値WI2を取得するとともに、それらに基づいてデータメモリー110を駆動して第2データグループの全ての第2データ値D2を出力し、かつ、重みマッピングテーブル130を駆動して第2重みインデックス値WI2に対応する重み値W2を出力する。プレアキュムレーター150は、第2データグループの全ての第2データ値D2を受信して累積することにより、第2累積値AV2を生成する。積和演算モジュール160は、数式(2)により第1累積値AV1、第2累積値AV2、第1重み値W1及び第2重み値W2を計算し、内積値Pを得る。
[数2]
AV1×W1+AV2×W2=P・・・(2)
本発明のいくつかの実施形態では、積和演算モジュール160は乗算器161及びアキュムレーター162を含んでもよい。乗算器161はプレアキュムレーター150及び重みマッピングテーブル130に電気的に接続する。アキュムレーター162は乗算器161に電気的に接続する。乗算器161は各データグループに対応する累積値AVと重み値Wを受信して乗算することにより、複数の乗算値Mを生成する。アキュムレーター162は全ての乗算値Mを受信して累積することにより、内積値Pを生成する。
本発明の一実施形態において、内積値Pはニューラルネットワークに用いることができ、アキュムレーター162はさらに関数処理装置170に電気的に接続し、内積値Pについて活性化関数、ラウンド関数又は飽和関数の演算を行う。例えば、活性化関数は正規化線形ユニット(ReLU:rectified linear units)関数であってもよいが、これに限定されない。また、別の一実施形態において、内積値Pはニューラルネットワークだけでなく、フィルターや相関計算などの内積計算を必要とするその他の応用にも用いることができる。データグループに対応する重み値Wは正の値及び負の値を含むことができる。活性化関数がReLU関数である場合、転置インデックスメモリー120は重み値Wの正の値から負の値の順序でそれに対応するデータアドレスAを保存する。また、転置インデックスメモリー120は、最小の負の値から最大の負の値の順序でそれに対応するデータアドレスAを順次保存し、かつ、最小の負の値に対応するデータアドレスAは最大の負の値に対応するデータアドレスAと比較して正の値に対応するデータアドレスAに近い。したがって、積和演算モジュール160はまず対応する正の重み値Wのデータを計算してから、対応する負の重み値Wのデータを計算する。対応する負の重み値Wのデータを計算する時、積和演算モジュール160は重み値Wの最小の負の値から最大の負の値の順序で、対応する負の重み値Wのデータを計算する。アキュムレーター162の計算結果が正から負に変わった場合、内積値Pは0であると見なされ、早期に計算が終了する。
図6は本発明の一実施例における重み値、バイアス、データアドレス、重みインデックス値及びデータ値の数量の転置インデックスメモリーへの保存を示す図である。図6及び図5を参照すると、転置インデックスメモリー120は、可変長符号化方式により各データグループのデータアドレスA及びそれに対応する重みインデックス値WIを保存することができる。図6は音声変換に応用される完全接続ニューラルネットワークであり、このニューラルネットワークは129個の入力ノードと、512個のニューロンを含む3つの隠れ層と、129個の出力ノードを含み、その中の重み値Wの数量はKであり、データ精度は16ビットである。上述の計算の早期終了を支援するために、各ニューロンと出力計算に関わる各パラメータを全て新しいハーフワード(16ビット)にアラインメントする。つまり、各ニューロンや出力のパラメータが16ビットの倍数でない場合、スラッシュで表すようなフラグメントが発生する。iptは転置インデックスメモリー120における現在のニューロンのアドレスを表し、ipt+Δiptは転置インデックスメモリー120における次のニューロンのアドレスを表す。Δiptは転置インデックスメモリー120におけるニューロンのトアドレスのオフセットを表し、単位はフラグメントを含むハーフワードであり、長さは9ビットである。オフセットは、次のニューロンのパラメータの開始アドレスを計算するのに用いられ、計算が早く終わった場合、迅速に次のニューロンの計算を迅速に開始することができる。widx0及びwidxは重みインデックス値を表し、K=16なので、重みインデックス値の長さは4ビットである。N0はwidx0に対応するデータグループのデータ値の数量を表し、N1はwidxに対応するデータグループのデータ値の数量を表し、N0及びN1のそれぞれの長さはいずれも9ビットである。dpt0、dpt1、dpt2、dpt3、dptNo-1及びdptN(K-1)-1はそれぞれ複数のデータ値のデータアドレスAを表す。隠れ層は512個のニューロンを有するため、各データアドレスAの長さは9ビットである。また、必要に応じて、転置インデックスメモリー120は重み値とバイアスを有してもよい。太枠は、1つの重みインデックス値WIに対応する全てのデータアドレスAのエンコードを表し、コントローラー140によって動的アライメント及びデコードが行われる。本発明は転置インデックスメモリー120のデータの幅や、各データのエンコード方式、配置及び長さに限定されない。
チップの面積を節約するために、重みマッピングテーブル130は転置インデックスメモリー120に統合されてもよい。図7は本発明の第2実施例における内積計算装置のブロック図である。内積計算装置100の第2実施例を以下に紹介するので、図7を参照されたい。内積計算装置100はデータメモリー110、転置インデックスメモリー120、コントローラー140、プレアキュムレーター150及び積和演算モジュール160を備える。データメモリー110はレジスタであってもよいが、これに限定されない。コントローラー140はデータメモリー110及び転置インデックスメモリー120に電気的に接続し、プレアキュムレーター150はデータメモリー110に電気的に接続し、積和演算モジュール160はプレアキュムレーター150及びコントローラー140に電気的に接続する。
データメモリー110は複数のデータグループを保存し、各データグループは複数のデータ値Dを含む。転置インデックスメモリー120は各データグループのデータメモリー110におけるデータアドレスA及びそれに対応する重み値Wを保存する。コントローラー140は、転置インデックスメモリー120から全てのデータグループのデータアドレスA及びそれに対応する重み値Wを順次取得するとともに、それらに基づいてデータメモリー110を駆動して全てのデータグループの全てのデータ値Dを順次出力し、かつ、全てのデータグループに対応する重み値Wを順次出力する。プレアキュムレーター150は、各データグループの全てのデータ値Dを受信して累積することにより、複数の累積値AVを生成する。積和演算モジュール160は、各データグループに対応する累積値AV及び重み値Wを受信するとともに、分配法則に基づき各データグループに対応する累積値AVと重み値Wの乗算及び累積を行うことにより、内積値Pを生成する。
すべてのデータグループが第1データグループ及び第2データグループを含み、第1データグループが複数の第1データ値D1を含み、第2データグループが複数の第2データ値D2を含むと仮定する。データメモリー110には、第1データグループの第1データアドレスA1及びそれに対応する第1重み値W1を保存するとともに、第2データグループの第2データアドレスA2及びそれに対応する第2重み値W2を保存する。全ての累積値AVは第1累積値AV1及び第2累積値AV2を含む。まず、コントローラー140は、転置インデックスメモリー120から第1データグループの第1データアドレスA1及びそれに対応する第1重み値W1を取得するとともに、それらに基づいてデータメモリー110を駆動して第1データグループの全ての第1データ値D1を出力し、かつ第1重み値W1を出力する。プレアキュムレーター150は、第1データグループの全ての第1データ値D1を受信して累積することにより、第1累積値AV1を生成する。次に、コントローラー140は、転置インデックスメモリー120から第2データグループの第2データアドレスA2及びそれに対応する第2重み値W2を取得するとともに、それらに基づいてデータメモリー110を駆動して第2データグループの全ての第2データ値D2を出力し、かつ、第2重み値W2を出力する。プレアキュムレーター150は、第2データグループの全ての第2データ値D2を受信して累積することにより、第2累積値AV2を生成する。積和演算モジュール160は、数式(2)により第1累積値AV1、第2累積値AV2、第1重み値W1及び第2重み値W2を計算し、内積値Pを得る。
積和演算モジュール160は乗算器161及びアキュムレーター162を含んでもよい。乗算器161はプレアキュムレーター150及びコントローラー140に電気的に接続する。アキュムレーター162は乗算器161に電気的に接続する。乗算器161は各データグループに対応する累積値AVと重み値Wを受信して乗算することにより、複数の乗算値Mを生成する。アキュムレーター162は全ての乗算値Mを受信して累積することにより、内積値Pを生成する。
第2実施例のアキュムレーター162も関数処理装置170に電気的に接続でき、内積値Pについて活性化関数、ラウンド関数又は飽和関数の演算を行う。例えば、活性化関数はReLU関数であってもよいが、これに限定されない。また、別の一実施形態において、内積値Pはニューラルネットワークだけでなく、フィルターや相関計算などの内積計算を必要とするその他の応用にも用いることができる。データグループに対応する重み値Wは正の値及び負の値を含むことができる。活性化関数がReLU関数である場合、転置インデックスメモリー120は重み値Wの正の値から負の値の順序でそれに対応するデータアドレスAを保存する。また、転置インデックスメモリー120は、最小の負の値から最大の負の値の順序でそれに対応するデータアドレスAを順次保存し、かつ、最小の負の値に対応するデータアドレスAは最大の負の値に対応するデータアドレスAと比較して正の値に対応するデータアドレスAに近い。したがって、積和演算モジュール160はまず対応する正の重み値Wのデータを計算してから、対応する負の重み値Wのデータを計算する。対応する負の重み値Wのデータを計算する時、積和演算モジュール160は重み値Wの最小の負の値から最大の負の値の順序で、対応する負の重み値Wのデータを計算する。アキュムレーター162の計算結果が正から負に変わった場合、内積値Pは0であると見なされ、早期に計算が終了する。
図7及び図6に示すように、転置インデックスメモリー120は、可変長符号化方式により各データグループのデータアドレスA及びそれに対応する重み値Wを保存することができる。
上述の実施形態によれば、内積計算装置は、転置インデックスメモリーから各データグループのデータメモリーにおけるデータアドレス及びそれに対応する重みインデックス値を取得し、それらに基づいて単一のプレアキュムレーターにより各データグループの全てのデータ値を累積すると同時に、数学的分配法則に従って複数の重複する重み値の乗算計算の量を削減することにより、高性能で低消費電力にするという目的を達成する。
以上に記載した実施形態は本発明の技術的思想や特徴の説明に過ぎず、その目的は、この技術分野を熟知する者が本発明の内容を理解して実施できるようにすることであり、本発明の特許範囲を限定するものではない。したがって、本発明の精神に基づいて加えた均等な変更や修飾は全て、本発明の特許保護範囲内に含まれる。
10 マイクロ命令生成装置
12 データバッファー
14 重みメモリー
16 乗算器
18 加算器
20 活性化関数処理装置
22 インデックスメモリー
24 重みマッピングテーブル
26 マイクロ命令生成装置
28 データバッファー
30 インデックスメモリー
32 重みマッピングテーブル
34 加算器
36 プレアキュムレーターレジスタアレイ
38 乗算器
40 加算器
42 活性化関数処理装置
100 内積計算装置
110 データメモリー
120 転置インデックスメモリー
130 重みマッピングテーブル
140 コントローラー
150 プレアキュムレーター
160 積和演算モジュール
161 乗算器
162 アキュムレーター
170 関数処理装置
i,j ニューロン
A データアドレス
WI 重みインデックス値
W 重み値
D データ値
AV 累積値
P 内積値
M 乗算値

Claims (10)

  1. データメモリー、転置インデックスメモリー(IIM:inverted index memory)、重みマッピングテーブル、コントローラー、プレアキュムレーター及び積和演算モジュールを備え、
    前記データメモリーは複数のデータグループを保存し、各前記データグループは複数のデータ値を含み、
    前記転置インデックスメモリーは各前記データグループの前記データメモリーにおけるデータアドレス及びそれに対応する重みインデックス値を保存し、
    前記重みマッピングテーブルは、前記重みインデックス値に対応する重み値を保存し、
    前記コントローラーは、前記データメモリー、前記転置インデックスメモリー及び前記重みマッピングテーブルに電気的に接続し、前記転置インデックスメモリーから前記複数のデータグループの前記データアドレス及びそれに対応する前記重みインデックス値を順次取得するとともに、それらに基づいて前記データメモリーを駆動して前記複数のデータグループの前記複数のデータ値を順次出力し、かつ、前記重みマッピングテーブルを駆動して前記重みインデックス値に対応する前記重み値を順次出力し、
    前記プレアキュムレーターは、前記データメモリーに電気的に接続し、各前記データグループの前記複数のデータ値を受信して累積することにより、複数の累積値を生成し、
    前記積和演算モジュールは、前記プレアキュムレーター及び前記重みマッピングテーブルに電気的に接続し、各前記データグループに対応する前記累積値及び前記重み値を受信するとともに、分配法則(distributive law)に基づき各前記データグループに対応する前記累積値及び前記重み値の乗算及び累積を行うことにより、内積値を生成し、
    前記複数のデータグループに対応する前記重み値は正の値及び負の値を含み、前記転置インデックスメモリーは前記正の値から前記負の値の順序でそれに対応する前記データアドレスを保存し、
    前記転置インデックスメモリーは、最小の前記負の値から最大の前記負の値の順序でそれに対応する前記データアドレスを順次保存し、かつ、前記最小の前記負の値に対応する前記データアドレスは前記最大の前記負の値に対応する前記データアドレスと比較して前記正の値に対応する前記データアドレスに近い、内積計算装置。
  2. 前記転置インデックスメモリーは、可変長符号化(variable length coding)方式により各前記データグループの前記データアドレス及びそれに対応する前記重みインデックス値を保存する、請求項1に記載の内積計算装置。
  3. 前記積和演算モジュールは乗算器及びアキュムレーターを備え、
    前記乗算器は、前記プレアキュムレーター及び前記重みマッピングテーブルに電気的に接続し、各前記データグループに対応する前記累積値と前記重み値を受信して乗算することにより、複数の乗算値を生成し、
    前記アキュムレーターは、前記乗算器に電気的に接続し、前記複数の乗算値を受信して累積することにより、前記内積値を生成する、請求項1に記載の内積計算装置。
  4. 前記アキュムレーターはさらに、関数処理装置に電気的に接続し、前記内積値について活性化(activation)関数、ラウンド関数又は飽和(saturation)関数の演算を行う、請求項3に記載の内積計算装置。
  5. 前記内積値はニューラルネットワーク、フィルター又は相関計算に利用される、請求項1に記載の内積計算装置。
  6. データメモリー、転置インデックスメモリー、コントローラー、プレアキュムレーター及び積和演算モジュールを備え、
    前記データメモリーは複数のデータグループを保存し、各前記データグループは複数のデータ値を含み、
    前記転置インデックスメモリーは各前記データグループの前記データメモリーにおけるデータアドレス及びそれに対応する重み値を保存し、
    前記コントローラーは、前記データメモリー及び前記転置インデックスメモリーに電気的に接続し、前記転置インデックスメモリーから前記複数のデータグループの前記データアドレス及びそれに対応する前記重み値を順次取得するとともに、それらに基づいて前記データメモリーを駆動して前記複数のデータグループの前記複数のデータ値を順次出力し、かつ、前記複数のデータグループに対応する前記重み値を順次出力し、
    前記プレアキュムレーターは、前記データメモリーに電気的に接続し、各前記データグループの前記複数のデータ値を受信して累積することにより、複数の累積値を生成し、
    前記積和演算モジュールは、前記プレアキュムレーター及び前記コントローラーに電気的に接続し、各前記データグループに対応する前記累積値及び前記重み値を受信するとともに、分配法則に基づき各前記データグループに対応する前記累積値及び前記重み値の乗算及び累積を行うことにより、内積値を生成し、
    前記複数のデータグループに対応する前記重み値は正の値及び負の値を含み、前記転置インデックスメモリーは前記正の値から前記負の値の順序でそれに対応する前記データアドレスを保存し、
    前記転置インデックスメモリーは、最小の前記負の値から最大の前記負の値の順序でそれに対応する前記データアドレスを保存し、かつ、前記最小の前記負の値に対応する前記データアドレスは前記最大の前記負の値に対応する前記データアドレスと比較して前記正の値に対応する前記データアドレスに近い、内積計算装置。
  7. 前記転置インデックスメモリーは、可変長符号化方式により各前記データグループの前記データアドレス及びそれに対応する前記重み値を保存する、請求項6に記載の内積計算装置。
  8. 前記積和演算モジュールは乗算器及びアキュムレーターを備え、
    前記乗算器は、前記プレアキュムレーター及び前記コントローラーに電気的に接続し、各前記データグループに対応する前記累積値と前記重み値を受信して乗算することにより、複数の乗算値を生成し、
    前記アキュムレーターは、前記乗算器に電気的に接続し、前記複数の乗算値を受信して累積することにより、前記内積値を生成する、請求項6に記載の内積計算装置。
  9. 前記アキュムレーターはさらに、関数処理装置に電気的に接続し、前記内積値について活性化関数、ラウンド関数又は飽和関数の演算を行う、請求項8に記載の内積計算装置。
  10. 前記内積値はニューラルネットワーク、フィルター又は相関計算に利用される、請求項6に記載の内積計算装置。
JP2022195665A 2022-10-18 2022-12-07 内積計算装置 Active JP7485396B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
TW111139529A TWI805511B (zh) 2022-10-18 2022-10-18 內積計算裝置
TW111139529 2022-10-18

Publications (2)

Publication Number Publication Date
JP2024059535A JP2024059535A (ja) 2024-05-01
JP7485396B2 true JP7485396B2 (ja) 2024-05-16

Family

ID=87803065

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2022195665A Active JP7485396B2 (ja) 2022-10-18 2022-12-07 内積計算装置

Country Status (3)

Country Link
US (1) US20240126508A1 (ja)
JP (1) JP7485396B2 (ja)
TW (1) TWI805511B (ja)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011511597A (ja) 2008-02-05 2011-04-07 トムソン ライセンシング ビデオ符号化および復号におけるインプリシットなブロック分割のための方法および装置
CN110928576A (zh) 2018-09-20 2020-03-27 中兴通讯股份有限公司 一种卷积神经网络的卷积处理方法、装置及存储介质

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10762164B2 (en) * 2016-01-20 2020-09-01 Cambricon Technologies Corporation Limited Vector and matrix computing device
TWI763975B (zh) * 2019-01-31 2022-05-11 國立成功大學 降低類神經網路之運算複雜度的系統與方法
TWI696129B (zh) * 2019-03-15 2020-06-11 華邦電子股份有限公司 可執行人工智慧運算的記憶體晶片及其運算方法
CN111723924B (zh) * 2020-05-28 2022-07-12 西安交通大学 一种基于通道共享的深度神经网络加速器
TWI746038B (zh) * 2020-07-02 2021-11-11 阿證科技股份有限公司 類神經網路人工智慧決策核心系統

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011511597A (ja) 2008-02-05 2011-04-07 トムソン ライセンシング ビデオ符号化および復号におけるインプリシットなブロック分割のための方法および装置
CN110928576A (zh) 2018-09-20 2020-03-27 中兴通讯股份有限公司 一种卷积神经网络的卷积处理方法、装置及存储介质

Also Published As

Publication number Publication date
TWI805511B (zh) 2023-06-11
US20240126508A1 (en) 2024-04-18
JP2024059535A (ja) 2024-05-01

Similar Documents

Publication Publication Date Title
Samimi et al. Res-DNN: A residue number system-based DNN accelerator unit
US5880981A (en) Method and apparatus for reducing the power consumption in a programmable digital signal processor
Sysel et al. Goertzel algorithm generalized to non-integer multiples of fundamental frequency
US10997272B2 (en) Apparatus and method for generating efficient convolution
CN100573440C (zh) 一种并行-串行乘加器
US4598266A (en) Modulo adder
Baghel et al. FPGA implementation of Fast Block LMS adaptive filter using Distributed Arithmetic for high throughput
NL8601183A (nl) Discrete cosinus transformatie-inrichting.
Lee et al. A new hardware-efficient architecture for programmable FIR filters
JP7485396B2 (ja) 内積計算装置
Gardezi et al. Design and VLSI Implementation of CSD based DA Architecture for 5/3 DWT
CN109740740A (zh) 卷积计算的定点加速方法及装置
Ye et al. Static error analysis and optimization of faithfully truncated adders for area-power efficient FIR designs
CN111222090A (zh) 卷积计算模块、神经网络处理器、芯片和电子设备
US20200026998A1 (en) Information processing apparatus for convolution operations in layers of convolutional neural network
TW202418064A (zh) 內積計算裝置
US11567731B2 (en) Device for computing an inner product
KR20210126506A (ko) 부동 소수점의 내적을 계산하는 컴퓨팅 유닛 아키텍쳐 및 그에 따른 방법
Persson et al. Forward and reverse converters and moduli set selection in signed-digit residue number systems
Mehendale et al. DA-based circuits for inner-product computation
US4584563A (en) Method of residue to analog conversion
Shirakol et al. Architectural Design and Optimization of Distributed Arithmetic based 2-D Discrete Cosine Transform
US20240028665A1 (en) Apparatus and method for computing a matrix vector product of a certain matrix and a vector
Muhammad et al. A Computational Redundancy Reduction Approach for High performaice and Low Power DSP Algorithm Implementation
US4584562A (en) Method of residue to analog conversion

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20221207

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20231114

RD03 Notification of appointment of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7423

Effective date: 20240122

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20240126

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20240409

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20240424

R150 Certificate of patent or registration of utility model

Ref document number: 7485396

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150