JP2022544132A - 乗算のための計算ユニット、方法及びコンピュータプログラム - Google Patents

乗算のための計算ユニット、方法及びコンピュータプログラム Download PDF

Info

Publication number
JP2022544132A
JP2022544132A JP2022507493A JP2022507493A JP2022544132A JP 2022544132 A JP2022544132 A JP 2022544132A JP 2022507493 A JP2022507493 A JP 2022507493A JP 2022507493 A JP2022507493 A JP 2022507493A JP 2022544132 A JP2022544132 A JP 2022544132A
Authority
JP
Japan
Prior art keywords
multiplicand
bit
result
exponent
value
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.)
Granted
Application number
JP2022507493A
Other languages
English (en)
Other versions
JP7247418B2 (ja
Inventor
フォーゲル ゼバスティアン
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Robert Bosch GmbH
Original Assignee
Robert Bosch GmbH
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 Robert Bosch GmbH filed Critical Robert Bosch GmbH
Publication of JP2022544132A publication Critical patent/JP2022544132A/ja
Application granted granted Critical
Publication of JP7247418B2 publication Critical patent/JP7247418B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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
    • 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
    • G06F7/5235Multiplying only using indirect methods, e.g. quarter square method, via logarithmic domain
    • 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/483Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
    • G06F7/4833Logarithmic number system
    • 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/483Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
    • G06F7/487Multiplying; Dividing
    • G06F7/4876Multiplying
    • 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
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Nonlinear Science (AREA)
  • Complex Calculations (AREA)

Abstract

本発明は、第1の値xと第1の被乗数wとの乗算のための、又は、第1の値xとそれぞれ1つの第2の被乗数及び第3の被乗数との乗算のための計算ユニット(4)に関する。計算ユニットは、第1の対数数値フォーマットの被乗数を受け取り、これにより、被乗数がそれぞれ、設定可能な底に対する少なくとも1つの指数として生じる。計算ユニット(4)は、第1の被乗数の2つの指数TIFF2022544132000027.tif6150又は第2の被乗数の指数及び第3の被乗数の指数が格納される第1のレジスタ(43)を含む。セットされたコンフィギュレーションビット(40)は、第1の被乗数の2つの指数TIFF2022544132000028.tif6150又は第2の被乗数の指数及び第3の被乗数の指数のいずれが第1のレジスタ(43)に格納されているかを示す。計算ユニットは、少なくとも2つのビットシフト演算子(31,32)を含む。本発明はさらに、値xと被乗数との乗算のための方法及びコンピュータプログラムにも関する。

Description

本発明は、ビットシフト演算子を用いた乗算を計算するための計算ユニットに関する。同様に、本発明は、ビットシフト演算子を用いた乗算を実行するようにそれぞれ構成された方法及びコンピュータプログラムにも関する。
従来技術
ニューラルネットワークをリアルタイムで実行可能とするために、専用のハードウェアアクセラレータが開発されてきた。ハードウェアアクセラレータは、ハードウェア実装された、乗算のためのMACユニット(Multiply-Accumulateユニット)を使用する。ニューラルネットワークにおける作業負荷は、ほぼ乗算及び加算のみから成ることが認識されている。従って、ハードウェアアクセラレータは、MACユニットの大規模な並列使用により、高い計算スループットを達成する。一般に、ネットワークは、GPU(Graphical Processing Unit)上においてトレーニングされ、これにより、ネットワーク重みと中間結果との表現フォーマットは、Float32に対応する。こうした数値フォーマットは、対応するエンベデッドシステムが、大きい必要スペース及び必要エネルギを生じさせるFloat32‐MACユニットを利用しなければならないため、エンベデッドシステムにおける使用にはあまり適さない。
発明の利点
以下において、数値フォーマットの利用と共に低減された語幅(例えば、4ビット)を可能にし、これにより、有利にはハードウェア内の乗算器を省略してその代わりにビットシフトを使用し得る計算ユニットを提案する。なぜなら、ビットシフトは、ASIC構成において、著しく(10~20x)小さいチップ面積しか必要としないからである。故に、こうしたビットシフトは、コストの点において、より都合が良い。また、ビットシフトの使用は、乗算に比較して低減された必要エネルギをもたらす。提案している計算ユニットは、さらに、分解能精度に関してのフレキシビリティ及び大きい計算スループットも提供する。ニューラルネットワークは、特に、画像分類器の一部であるものとするとよい。相応に、計算ユニットは、画像分類器の構成に特に適した計算ユニットであるものとするとよい。
さらに、当該計算ユニットは、ニューラルネットワークの種々の層からの種々の量子化された重みを取り扱うことができる。なぜなら、当該計算ユニットは、使用されている重みの語幅に依存して種々に動作させることができるからである。
上述したアクセラレータの公知のMACユニットは、線形量子化された重みを使用しており、このため、提案している計算ユニットと同等の規模においては、単純なビットシフトによる費用、エネルギ及びチップ面積の節約を享受することができない。
従って、提案している計算ユニットによれば、数値フォーマットの精度、エネルギ消費及び計算スループットについての要求に応じてフレキシブルに構成可能なアクセラレータが提案される。
発明の開示
第1の態様においては、第1の値xと第1の被乗数wとの乗算のための、又は、第1の値xとそれぞれ1つの第2の被乗数及び第3の被乗数との乗算のための計算ユニットが提案される。計算ユニットは、値xと、被乗数の対数数値フォーマットの指数とを受け取る。対数数値フォーマットでは、被乗数は、それぞれ、設定可能な底に対する少なくとも1つの指数によって表される。計算ユニットは、第1の被乗数の第1の対数数値フォーマット(例えば、“two‐hot”数値フォーマット)の少なくとも2つの指数
Figure 2022544132000002
又は第2の被乗数及び第3の被乗数の第2の対数数値フォーマット(例えば、“power‐of‐two(「2の冪乗、累乗」)”数値フォーマット)のそれぞれ1つの指数を受け取る。ここで、指数は、第1の被乗数又は第2の被乗数及び第3の被乗数のいずれかに対応付けられているということができる。指数及び第1の値xは、例えば、2ビット、4ビット若しくは8ビットによって又は8ビット超によって量子化されており、2進数として存在し得る。
計算ユニットは、第1の被乗数の2つの指数
Figure 2022544132000003
又は第2の被乗数の指数及び第3の被乗数の指数のいずれかが格納される第1のレジスタを含む。コンフィギュレーションビットが設けられており、当該コンフィギュレーションビットは、第1の被乗数の2つの指数
Figure 2022544132000004
又は第2の被乗数の指数及び第3の被乗数の指数のいずれが第1のレジスタに格納されているかを示す。また、第1のレジスタに格納された指数が1つの被乗数に対応付けられているか若しくは複数の被乗数に対応付けられているか又は当該指数が第1の対数数値フォーマットで使用されるか若しくは第2の対数数値フォーマットで使用されるかを、コンフィギュレーションビットが示すことも可能である。コンフィギュレーションビットは、レジスタ内又は計算ユニットのメモリ内、好ましくは第1のレジスタにセットされたビットであるものとしてよい。
さらに、計算ユニットは、第1のビットシフト演算子及び第2のビットシフト演算子を含む。ビットシフト演算子は、設定可能な(2進)値に依存して、2進数を、設定可能な値の桁数だけ左方へ(好適には、ハードウェア内において)シフトさせるように構成されている。第1のビットシフト演算子は、第1の値xを、第1のレジスタに格納されている指数のうち第1の指数の値に対応する桁数だけシフトさせる。第2のビットシフト演算子は、第1の値xを、第1のレジスタの指数のうち第2の指数の値に対応する桁数だけシフトさせる。計算ユニットはさらに、第1のビットシフト演算子及び第2のビットシフト演算子の結果を加算する加算器を含む。計算ユニットはさらに、第1の被乗数が第1のレジスタに格納されていることをコンフィギュレーションビットが示す場合に、加算器の結果(B)を出力し、第2の被乗数及び第3の被乗数が第1のレジスタに格納されていることをコンフィギュレーションビットが示す場合に、第2のビットシフト演算子の結果(A)及び第1のビットシフト演算子の結果(C)を出力するように構成されている。結果(B)は、加算器がその計算演算を実行した後、その出力側に生じる。結果(B)は、値xと第1の被乗数との乗算結果に対応する。結果(A)は、値xと、第2のビットシフト演算子のビットシフトに使用された指数に対応付けられた被乗数との乗算結果に対応する。相応のことが、結果(C)にも当てはまる。
計算ユニットの利点は、1つには、提案しているハードウェアが好適には分解能/数値表示に関して線形量子化に近似し、そのため、極めて精密に計算可能である上、ビットシフト演算子に基づいて必要面積及び必要エネルギが小さい第1のモード(例えば、“two‐hot”数値フォーマット)を維持することである。もう1つは、計算ユニットが、計算スループットに関する効率を優先する他のモード(例えば、“power‐of‐two”数値フォーマット)を提供することである。全作業負荷が一定に留まる場合には、回路は、後者のモードにおいては、特に小さいエネルギしか消費しない。全作業負荷が可変である場合には、後者のモードにおいては、計算スループットが2倍の大きさとなる。従って、当該計算ユニットは、エネルギ節約が可能であるだけでなく、より大きいデータスループットのために使用することもできる。また、当該計算ユニットは、2つのモードによって分解能精度を調整可能であり、よって、ニューラルネットワークの種々の層の種々の語幅をサポートするという利点を有する。
計算ユニットが、第1のビットシフト演算子の結果を設定可能な桁数だけ左方へシフトさせる、さらなるビットシフト演算子を含むことが提案される。当該設定可能な数は、第1の被乗数の2つの指数の異なる分解能を表す設定可能な値ζに対応する。加算器は、第2のビットシフト演算子の結果とさらなるビットシフト演算子とを加算する。
さらに、第1のレジスタ内の指数には、それぞれ符号ビット(英語:sign-bit)が対応付けられており、加算器が、当該符号ビットに依存してビットシフト演算子の結果を加算又は減算することが提案される。符号ビットは、それぞれの被乗数、特に当該被乗数に対応付けられた指数が正の数であるか又は負の数であるかを表す。
さらに、計算ユニットが第1の累算器及び第2の累算器を含むことが提案される。第1の被乗数が第1のレジスタに格納されていることをコンフィギュレーションビットが示す場合、累算器の一方のみが加算器の結果(B)を累算する。第2の被乗数の指数及び第3の被乗数の指数が第1のレジスタに格納されていることをコンフィギュレーションビットが示す場合、第1の累算器が第2のビットシフト演算子の結果(A)を累算し、第2の累算器が第1のビットシフト演算子の結果(C)を累算する。
累算とは、複数の乗算が実行され、個々の乗算の結果が積算されるということであり、例えば、
a←a+(w*x)
であると理解することができる。
累算器は、それぞれ、2つのレジスタ、1つの累算レジスタ及び1つの加算器を含み得る。第1のレジスタには、結果A,B又はCのうち1つが格納される。第2のレジスタには、第1のレジスタからの結果の算定に使用される、対応する被乗数に対応付けられたそれぞれの指数の符号ビットが格納されている。加算器は、第1のレジスタの内容を、累算レジスタにより、第2のレジスタからの符号ビットに依存して加算又は減算し、結果を累算レジスタに格納する。この場合、有利には、極めて効率的なベクトル行列乗算が実行可能となる。
さらに、第1の累算器が、第2のビットシフト演算子に対して使用される指数に対応付けられた符号ビットに依存して結果(A)を加算又は減算し、第2の累算器が、第1のビットシフト演算子に対して使用される指数に対応付けられた符号ビットに依存して結果(C)を加算又は減算することが提案される。好適には、符号ビットは、上述した場合と同様に第1のレジスタに格納されている。
さらに、計算ユニットがさらに、コンフィギュレーションビットが変化した場合に、第1の累算器及び第2の累算器がリセット(英語:reset)されるように構成されることが提案される。リセットとは、累算器(累算レジスタ)の記憶された値又は内容が、設定可能な初期値へ、好適には値ゼロへセットされることであると理解することができる。
さらに、第1の対数数値フォーマット及び第2の対数数値フォーマットの被乗数の底が値2に対応することが提案される。第1の被乗数の2つの指数の全語幅は、第1の被乗数及び第2の被乗数の全語幅に対応し、また、他の場合も同様である。
第2の態様においては、特にコンピュータ実装された、第1の態様に記載の計算ユニットを動作させる方法が提案される。方法は、2つの指数及び値x並びにコンフィギュレーションビットを供給するステップを含み、コンフィギュレーションビットは、指数が厳密に1つの被乗数に対応付けられているか又はそれぞれ1つの被乗数に対応付けられているかを示す。次いで、値xを第1の指数の桁数だけビットシフトさせる第1のビットシフトを行い、かつ、値xを第2の指数の桁数だけビットシフトさせる第2のビットシフトを行うステップが続く。次いで、コンフィギュレーションビットに依存してビットシフト演算子の結果を出力するステップが続き、ここで、2つの指数が1つの被乗数に対応付けられていることをコンフィギュレーションビットが示す場合には、ビットシフト演算子の結果が加算されて乗算の結果として出力され、2つの指数がそれぞれ1つの被乗数に対応付けられていることをコンフィギュレーションビットが示す場合には、ビットシフト演算子の結果がそれぞれ、値とそれぞれ1つの被乗数との乗算の結果として出力される。
他の態様においては、コンピュータプログラムが提案される。コンピュータプログラムは、第2の態様の方法を実施するために構成されている。コンピュータプログラムは、当該コンピュータプログラムがコンピュータ上において実行されるときに、当該コンピュータに上記方法のうちの1つの総てのステップを実施させるための命令を含む。また、当該コンピュータプログラムを記憶した機械可読メモリモジュールも提案される。
上述した態様の実施例を添付の図面に示し、以下の説明において詳細に説明する。
ニューラルネットワークの層のフィルタの線形量子化値及び線形非量子化値の分布を示す2つの概略的なグラフである。 ニューラルネットワークの層のフィルタの対数量子化値及び対数非量子化値の分布を示す概略的なグラフである。 ニューラルネットワークの層のフィルタの他の対数量子化値及び対数非量子化値の分布を示す概略的なグラフである。 乗算器を示す概略図である。 他の乗算器を示す概略図である。 種々の対数量子化値を乗算する方法の一実施形態を示す図である。
図1には、訓練されたニューラルネットワークの層のフィルタ(conv3_3)の値、特に重みの分布(10)を示す第1の概略的なグラフ(1)が示されている。分布(10)は、Float32‐数値表示の量子化値の頻度分布である。第1の概略的なグラフ(1)においては、値がモノモーダル分布に追従することに注意されたい。さらに、第1の概略的なグラフ(1)においては、量子化値(11)は、4ビットの分解能により表示されている。この場合、4ビットの分解能を有する当該量子化値(11)は、線形量子化されており、値0を中心として配置されている。
なお、フィルタ値、特にニューラルネットワークの重みが不均一な頻度分布(第2の概略的なグラフ(2)を参照)に追従することが観察されている。従って、小さいビット幅で、不均一な分布においてフィルタ値を最良に量子化するには、線形量子化は不適当である。なぜなら、第2の概略的なグラフ(2)に示されているように、小さいビット幅での線形量子化においては、第1のモード(12a)のみが有意に量子化可能であり、これに対して、第2のモード(12b)に沿ったフィルタ値は、線形量子化においては、そもそも考慮されないからである。このことは、大きな量子化誤差を生じさせ得る。
以下においては、ニューラルネットワークの層の値が追従する分布(10,12a,12b)を不等分布の量子化フォーマットによって取り扱うことを提案する。好適には、対数数値表示が量子化に使用される。対数数値表示は、ある数の値に代えて、指数の値のみを設定された底に使用することであると理解される。例えば、値64は、対数数値表示では2=64となることから、値6として記憶される。
好ましくは、以下においては、底2に対する数値表示が使用され、“power‐of‐two”数値フォーマットと称される。
ニューラルネットワークの重みw又はフィルタ値が“power‐of‐two”値である
Figure 2022544132000005
として量子化される場合、それぞれの層又は当該層のニューロンの活性化xと重みとの乗算は、活性化xのビットシフトによって、
Figure 2022544132000006
桁だけ左方へ行うことができ、即ち、
Figure 2022544132000007
となる。
以下においては、指数は、
Figure 2022544132000008
により表示される。値x及び指数
Figure 2022544132000009
がそれぞれ量子化されており、好ましくは2進数として存在することに注意されたい。
特にバイモーダル分布のケースにおいては、第2のモード(第2の概略的なグラフ(2)を参照)につき僅かなサンプリング点しか提供されないので、ニューラルネットワークの重みの対数表示は、制限された状態においてしか適当とならないことが認識されてきた。このことについては、図2bを参照されたい。
従って、ニューラルネットワークの重みwを2つの“power‐of‐two”値によって表す、量子化に関する数値フォーマットを使用することが提案され、即ち、
Figure 2022544132000010
となる。
2つの“power‐of‐two”値により式(2)に従って得られる数値フォーマットを、以下においては、“two‐hot”数値フォーマットと称する。
乗算につき、“two‐hot”数値フォーマットでは、
Figure 2022544132000011
が得られる。
第1の概略的なグラフ(1)及び第2の概略的なグラフ(2)における“power‐of‐two”数値フォーマット及び“two‐hot”数値フォーマットによる、対応する量子化値は、図2に例示的に示されている。
図2においては、バイモーダル分布の“two‐hot”数値フォーマットが第2のモードにおける有意なサンプリング値(21)を提供することが見て取れる。
“two‐hot”数値表現において、ハードウェアにこれ以上のコスト又は大きい付加コストを生じさせずに自由度を導入するために、パラメータζを挿入することができる。パラメータζは、2つの値w及びwの異なる分解能を表し、即ち、
Figure 2022544132000012
である。
図3には、“two‐hot”数値フォーマットでの少なくとも2つの数を乗算するための計算ユニット(3)が概略的に示されている。
計算ユニット(3)は、当該実施形態においては、乗算器(30)及び任意手段としての累算器(35)を含む。
乗算器(30)は、入力値として、値x又は活性化xと、“two‐hot”数値フォーマットでの重み、即ち、重み
Figure 2022544132000013
及び
Figure 2022544132000014
の指数とを受け取る。さらに、指数
Figure 2022544132000015
及び
Figure 2022544132000016
には、それぞれ1つずつの符号ビット(英語:sign-bit)s,sが対応付けられる。指数
Figure 2022544132000017
及び
Figure 2022544132000018
並びに好ましくは符号ビットが、第1のレジスタ(43)に格納されている。
好適には、入力値は、8ビットの分解能を有する。任意の他の分解能、好適には16ビットの分解能又は4ビット未満の分解能も可能である。
乗算器(30)は、指数
Figure 2022544132000019
及び
Figure 2022544132000020
と、活性化xとに依存して、式(4)に従って、ビットシフト演算子(31,32)によって乗算結果を計算する。パラメータζが与えられている場合、式(4)に示されているように、ビットシフト演算子(31)の結果は、さらなるビットシフト演算子(33)によって、パラメータζが記述している桁数だけ左方へシフトさせることができる。
第1の指数
Figure 2022544132000021
の符号ビットsに依存して、2つのビットシフト演算子(31,32)の結果は、好適には加算器(34)によって加算又は減算され、中間結果pとして出力される。
活性化xが多重に種々の重みwで乗算され、続いて個々の乗算の総ての結果にわたる合計が行われるケースにおいては、累算器(35)を使用することができる。乗算器(30)が中間結果(p)を算定すると直ちに、当該中間結果(p)を累算器(35)によってさらに処理することができる。この場合、累算器(35)は、中間結果pと、指数
Figure 2022544132000022
の符号ビットsと、累算レジスタ(acc_reg)に記憶された結果とに依存して、最終結果qを算定する。
好適には、累算器(35)は、中間結果pをレジスタ(reg)に記憶する。次いで、他のレジスタ(37)から符号ビット(sign_2)が読み出され、加算器(36)により、当該符号ビット(sign_2)に依存して、レジスタ(reg)の中間結果pと累算レジスタ(acc_reg)の内容とが加算又は減算される。次いで、加算器(36)の結果が、累算レジスタ(acc_reg)に記憶され、任意手段ではあるが結果qとして出力される。
図4には、有利には“two‐hot”数値フォーマットでの乗算も“power‐of‐two”数値フォーマットでの乗算も実行可能な他の計算ユニット(4)の概略図が示されている。
計算ユニット(4)は、コンフィギュレーションビット(40)により、第1のモードへ、即ち、“two‐hot”数値フォーマットでの重みwへ移行可能であるように、又は、第2のモードにおいて2つの重みを“power‐of‐two”数値フォーマットで処理するように、構成することができる。
この場合、“two‐hot”モード(第1のモード)で2つのビットシフトの結果が加算(又は第1の符号ビット(sign_1)に依存して減算)される。乗算結果は、出力Bとして供給され、第1の累算器(35a)において第2の符号ビット(sign_2)に依存して累算される。第2の累算器(35b)の出力は、0であり、及び/又は、使用されない。当該モードにおいては、重みの数値表示の分解能は、第2のモードにおける場合より大きい。
乗算器(30)の結果(出力A,B,C)の転送は、スイッチ(41,42)により行われる。当該スイッチは、乗算器(30)の結果(出力A,B,C)を、コンフィギュレーションビット(40)に依存してそれぞれの累算器(35a,35b)へ導通する。スイッチは、それぞれがマルチプレクサであるものとしてよい。
代替的に、第1のモードに対して、コンフィギュレーションビット(40)は、第2の累算器(35b)を不活性化し、又は、出力側A及び出力側Cにおける結果を破棄する。
“power‐of‐two”モード(第2のモード)においては、2つの異なる重みが入力値xで並列に2つのビットシフトにより乗算される。2回の乗算結果は、出力側A及び出力側Cに供給される。
各結果は、対応する符号ビット(sign_1,sign_2)に依存して第1の累算器(35a)及び第2の累算器(35b)の累算レジスタ上において加算又は減算される。続いて、2つの結果が2つの累算出力に供給される。当該モードにおいては、数値フォーマットは、重みをより粗く分解する。これに対して、計算ユニット(4)は、2倍の計算スループットを達成する。
好適には、“power‐of‐two”モード(第2のモード)においては、第1の累算器(35a)及び第2の累算器(35b)の結果は、他の加算器によって加算されるが、このことは図4には示されていない。このことは、好適には、総ての結果が加算器により計算され、総ての乗算結果にわたる合計が出力される場合に実行される。
図5には、特に、値xと“two‐hot”数値フォーマットでの被乗数との乗算のために、又は、値xと“power‐of‐two”数値フォーマットでの2つの被乗数との乗算のために、計算ユニット(4)を動作させるためのフローチャート(5)が概略的に示されている。
第1のステップ500において、値x、“two‐hot”数値フォーマットでの被乗数の指数、又は、“power‐of‐two”数値フォーマットでの2つの被乗数の指数が供給される。付加的に、2つの指数が“two‐hot”数値フォーマットでの1つの被乗数に対応付けられているか又は“power‐of‐two”数値フォーマットの2つの被乗数に対応付けられているかを示すコンフィギュレーションビットがセット可能となる。
ステップ500において、コンフィギュレーションビットに依存して、又は、いずれの数値フォーマットで被乗数が存在するかに依存して、第1のモード又は第2のモードのいずれに従って乗算が実行されるかが決定される。
乗算が第1のモードに従って実行されることが決定された場合には、ステップ500の後に、ステップ510aが実行される。ステップ500において、乗算が第2のモードに従って実行されることが決定された場合には、ステップ510bが続く。
ステップ510aにおいては、“two‐hot”数値フォーマットの被乗数の指数が式(3)に従って使用され、ビットシフト演算子及び加算によって乗算結果が算定される。
ステップ510aが終了した後、ステップ520aが続く。この場合、ステップ510aの結果が出力される。付加的に又は代替的に、ステップ520aにおいては、ステップ510aの結果についての累算を行うことができる。
ステップ510bにおいては、“power‐of‐two”数値フォーマットの2つの被乗数の指数が、値xをそれぞれ指数の桁数だけ、例えば、2つのビットシフト演算子
Figure 2022544132000023
及び
Figure 2022544132000024
を用いたシフト演算によって、左方へシフトさせるために使用される。
ステップ510bが終了した後に、ステップ520bが続く。ここで、ステップ510bのそれぞれのシフト演算の結果は、互いに別個に出力される。付加的に又は代替的に、ステップ520bにおいて、それぞれステップ510bの2つの結果について別個に累算を行うことができる。

Claims (10)

  1. 第1の値xと少なくとも1つの被乗数との乗算のための計算ユニット(4)であって、
    前記計算ユニット(4)は、第1の被乗数の第1の対数数値フォーマットの2つの指数
    Figure 2022544132000025
    又は第2の被乗数及び第3の被乗数の第2の対数数値フォーマットのそれぞれ1つの指数を格納し得る第1のレジスタ(43)を含み、
    前記計算ユニットは、前記第1の被乗数の前記2つの指数
    Figure 2022544132000026
    又は前記第2の被乗数の指数及び前記第3の被乗数の指数のいずれが前記第1のレジスタ(43)に格納されているかを示すコンフィギュレーションビット(40)をセットするように構成されており、
    前記計算ユニット(4)は、第1のビットシフト演算子(31)及び第2のビットシフト演算子(32)を含み、
    前記第1のビットシフト演算子(31)は、前記第1の値xを、前記第1のレジスタ(43)に格納されている前記指数のうち第1の指数の値に対応する第1の桁数だけシフトさせるように構成されており、
    前記第2のビットシフト演算子(32)は、前記第1の値xを、前記第1のレジスタ(43)の前記指数のうち第2の指数の値に対応する第2の桁数だけシフトさせるように構成されており、
    前記計算ユニット(4)はさらに、前記第1のビットシフト演算子及び前記第2のビットシフト演算子の結果を加算するように構成された加算器(34)を含み、
    前記計算ユニット(4)は、前記第1の被乗数が前記第1のレジスタ(43)に格納されていることを前記コンフィギュレーションビットが示す場合に、前記加算器(34)の結果(B)を出力し、前記第2の被乗数及び前記第3の被乗数が前記第1のレジスタ(43)に格納されていることを前記コンフィギュレーションビットが示す場合に、前記第2のビットシフト演算子の結果(A)及び前記第1のビットシフト演算子の結果(C)を出力するように構成されている、
    計算ユニット(4)。
  2. 前記計算ユニット(4)は、さらなるビットシフト演算子を含み、
    前記さらなるビットシフト演算子は、前記第1のビットシフト演算子の結果を第3の桁数だけ左方へシフトさせるように構成されており、
    前記計算ユニットは、設定可能な値ζを受信するように構成されており、前記第3の数は、前記第1の被乗数の2つの指数のそれぞれ異なる分解能を表す設定可能な値ζに対応し、
    前記加算器(34)は、前記第2のビットシフト演算子(32)の結果及び前記さらなるビットシフト演算子の結果を加算するように構成されている、
    請求項1に記載の計算ユニット(4)。
  3. 前記第1のレジスタ(43)には、格納されているそれぞれ1つの指数に対応付けられた付加的な符号ビット(英語:sign-bit)が格納可能であり、
    前記加算器(34)は、前記符号ビットに依存して、前記ビットシフト演算子の結果を加算又は減算するように構成されている、
    請求項1又は2に記載の計算ユニット(4)。
  4. 前記計算ユニットはさらに、第1の累算器(35a)及び第2の累算器(35b)を含み、
    前記計算ユニットはさらに、前記第1の被乗数が前記第1のレジスタに格納されていることを前記コンフィギュレーションビット(40)が示す場合に、前記累算器(35a,35b)の一方のみが前記加算器(34)の結果(B)を累算するように構成されており、
    前記計算ユニットは、前記第2の被乗数の指数及び前記第3の被乗数の指数が前記第1のレジスタ(43)に格納されていることを前記コンフィギュレーションビットが示す場合に、前記第1の累算器(35a)が前記第2のビットシフト演算子の結果(A)を累算し、前記第2の累算器(35b)が前記第1のビットシフト演算子の結果(C)を累算するように構成されている、
    請求項1乃至3のいずれか一項に記載の計算ユニット(4)。
  5. 前記第1の累算器(35a)は、前記第2のビットシフト演算子に対して使用される指数に対応付けられた符号ビット(図4:sign_2)に依存して前記結果(A)を加算又は減算するように構成されており、前記第2の累算器(35b)は、前記第1のビットシフト演算子に対して使用される指数に対応付けられた符号ビット(図4:sign_1)に依存して前記結果(C)を加算又は減算するように構成されている、
    請求項3及び4に記載の計算ユニット(4)。
  6. 前記計算ユニット(4)はさらに、前記コンフィギュレーションビット(40)が変化した場合に、前記第1の累算器(35a)及び前記第2の累算器(35b)をリセット(英語:reset)するように構成されている、
    請求項4又は5に記載の計算ユニット(4)。
  7. 請求項1乃至6のいずれか一項に記載の計算ユニット(4)を動作させる方法であって、
    2つの指数及び値x並びにコンフィギュレーションビットを供給するステップであって、前記コンフィギュレーションビットは、指数が厳密に1つの被乗数に対応付けられているか又はそれぞれ1つの被乗数に対応付けられているかを示す、ステップと、
    前記値xを第1の指数の第1の桁数だけビットシフトさせる第1のビットシフトを行い、かつ、前記値xを第2の指数の第2の桁数だけビットシフトさせる第2のビットシフトを行うステップと、
    前記コンフィギュレーションビットに依存してビットシフト演算子の結果を出力するステップと、
    を含み、
    2つの指数が1つの被乗数に対応付けられていることを前記コンフィギュレーションビットが示す場合に、前記ビットシフト演算子の結果を加算して乗算の結果として出力し、
    2つの指数がそれぞれ1つの被乗数に対応付けられていることを前記コンフィギュレーションビットが示す場合に、前記ビットシフト演算子の結果を、それぞれ、前記値とそれぞれ1つの前記被乗数との乗算の結果として出力する、
    方法。
  8. 第1の対数数値フォーマット及び第2の対数数値フォーマットの被乗数の底が、値2に対応する、
    請求項7に記載の方法。
  9. コンピュータ上において実行されるときに、請求項7又は8に記載の方法の各ステップを実施させるための命令を含むコンピュータプログラム。
  10. 請求項9に記載のコンピュータプログラムを記憶した機械可読メモリ素子。
JP2022507493A 2019-08-07 2020-07-14 乗算のための計算ユニット、方法及びコンピュータプログラム Active JP7247418B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
DE102019211829.1 2019-08-07
DE102019211829.1A DE102019211829A1 (de) 2019-08-07 2019-08-07 Recheneinheit, Verfahren und Computerprogramm zur Multiplikation
PCT/EP2020/069872 WO2021023482A1 (de) 2019-08-07 2020-07-14 Recheneinheit, verfahren und computerprogramm zur multiplikation

Publications (2)

Publication Number Publication Date
JP2022544132A true JP2022544132A (ja) 2022-10-17
JP7247418B2 JP7247418B2 (ja) 2023-03-28

Family

ID=71670229

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2022507493A Active JP7247418B2 (ja) 2019-08-07 2020-07-14 乗算のための計算ユニット、方法及びコンピュータプログラム

Country Status (6)

Country Link
US (1) US20220291899A1 (ja)
JP (1) JP7247418B2 (ja)
KR (1) KR20220038173A (ja)
CN (1) CN114174982A (ja)
DE (1) DE102019211829A1 (ja)
WO (1) WO2021023482A1 (ja)

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4864529A (en) * 1986-10-09 1989-09-05 North American Philips Corporation Fast multiplier architecture
US10410098B2 (en) * 2017-04-24 2019-09-10 Intel Corporation Compute optimizations for neural networks

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
SYED SHAKIB SARWAR ET AL: "Multiplier-less Artificial Neurons Exploiting Error Resiliency for Energy-Efficient Neural Computing", 2016 DESIGN, AUTOMATION & TEST IN EUROPE CONFERENCE & EXHIBITION, JPN6023008614, 27 February 2016 (2016-02-27), pages 145 - 150, ISSN: 0005008675 *
VOGEL SEBASTIAN ET AL: "Efficient Hardware Acceleration of CNNs using Logarithmic Data Representation with Arbitrary log-bas", 2018 IEEE/ACM INTERNATIONAL CONFERENCE ON COMPUTER-AIDED DESIGN (ICCAD), JPN6023008613, 5 November 2018 (2018-11-05), pages 1 - 8, XP033487878, ISSN: 0005008674, DOI: 10.1145/3240765.3240803 *
VOGEL SEBASTIAN ET AL: "Self-Supervised Quantization of Pre-Trained Neural Networks for Multiplierless Acceleration", DESIGN, AUTOMATION AND TEST IN EUROPE (DATE 2019), JPN6023008612, 25 March 2019 (2019-03-25), pages 1094 - 1099, XP033550047, ISSN: 0005008673, DOI: 10.23919/DATE.2019.8714901 *

Also Published As

Publication number Publication date
DE102019211829A1 (de) 2021-02-11
KR20220038173A (ko) 2022-03-25
WO2021023482A1 (de) 2021-02-11
CN114174982A (zh) 2022-03-11
US20220291899A1 (en) 2022-09-15
JP7247418B2 (ja) 2023-03-28

Similar Documents

Publication Publication Date Title
JP7476175B2 (ja) 乗算累積回路
CN110852434B (zh) 基于低精度浮点数的cnn量化方法、前向计算方法及硬件装置
WO2022170809A1 (zh) 一种适用于多精度计算的可重构浮点乘加运算单元及方法
CN113282273A (zh) 用于多种格式的浮点运算的硬件
US8751555B2 (en) Rounding unit for decimal floating-point division
WO2013109532A1 (en) Algebraic processor
CN112241291A (zh) 用于指数函数实施的浮点单元
US20230056304A1 (en) Using a low-bit-width dot product engine to sum high-bit-width numbers
JP2006060703A5 (ja)
JP7247418B2 (ja) 乗算のための計算ユニット、方法及びコンピュータプログラム
JP4965711B2 (ja) 符号対称の丸め誤差を有する2進分数による積の高速計算
CN113419779B (zh) 可扩展多精度数据流水线系统和方法
Lewis Complex logarithmic number system arithmetic using high-radix redundant CORDIC algorithms
RU2666285C1 (ru) Способ организации выполнения операции умножения двух чисел в модулярно-логарифмическом формате представления с плавающей точкой на гибридных многоядерных процессорах
JP6863907B2 (ja) 演算回路
US8788560B2 (en) Decimal elementary functions computation
Hass Synthesizing optimal fixed-point arithmetic for embedded signal processing
Gonzalez-Navarro et al. A binary integer decimal-based multiplier for decimal floating-point arithmetic
JP2023000142A (ja) 演算装置
JP2023161967A (ja) 演算装置、演算方法及びプログラム
EP4004710A1 (en) Matrix multiplication in hardware using modular math
CN118034642A (zh) 浮点运算方法、装置、电子设备及存储介质
CN116610284A (zh) 用于计算点积的方法和系统
CN115374902A (zh) 执行SoftMax的计算机实现方法
THUAN A NOVEL QUOTIENT PREDICTION FOR FLOATING-POINT DIVISION

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20220204

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20220204

TRDD Decision of grant or rejection written
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20230228

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20230307

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20230315

R150 Certificate of patent or registration of utility model

Ref document number: 7247418

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150