JP7476175B2 - 乗算累積回路 - Google Patents

乗算累積回路 Download PDF

Info

Publication number
JP7476175B2
JP7476175B2 JP2021514561A JP2021514561A JP7476175B2 JP 7476175 B2 JP7476175 B2 JP 7476175B2 JP 2021514561 A JP2021514561 A JP 2021514561A JP 2021514561 A JP2021514561 A JP 2021514561A JP 7476175 B2 JP7476175 B2 JP 7476175B2
Authority
JP
Japan
Prior art keywords
exponent
circuit
point
output
floating
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
JP2021514561A
Other languages
English (en)
Other versions
JP2021536076A (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.)
Xilinx Inc
Original Assignee
Xilinx Inc
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 Xilinx Inc filed Critical Xilinx Inc
Publication of JP2021536076A publication Critical patent/JP2021536076A/ja
Application granted granted Critical
Publication of JP7476175B2 publication Critical patent/JP7476175B2/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/499Denomination or exception handling, e.g. rounding or overflow
    • G06F7/49905Exception handling
    • G06F7/4991Overflow or underflow
    • G06F7/49915Mantissa overflow or underflow in handling floating-point numbers
    • 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/483Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G06F9/3887Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple data lanes [SIMD]

Landscapes

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

Description

本開示は、一般に、乗算累積(MAC:multiply and accumulate)回路に関する。
ニューラルネットワークは、計算集約的アプリケーションである。VGG-16畳み込みニューラルネットワーク(CNN:convolutional neural network)など、いくつかの大規模ニューラルネットワークは、単一の画像の画像分類を実行するために30Gflopsを必要とする。計算の大部分は乗算および累積演算に向けられる。乗算および累積演算は、たとえばドット積およびスカラー積を計算する際に使用される。
計算時間を短縮するためにハードウェアアクセラレータが使用されている。例示的なハードウェアアクセラレータは、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、およびグラフィックス処理ユニット(GPU)など専用プロセッサを含む。ハードウェアアクセラレータによって与えられたパフォーマンス改善は大きいが、電力消費およびデータ帯域幅要件の増加も大きい。重みおよび入力アクティブ化は、しばしば、32ビット単精度浮動小数点(single precision floating point)値として記憶され、ハードウェアアクセラレータは、32ビットのオペランドに対してMAC演算を実行する。
ニューラルネットワークの計算要件を低減するためのいくつかの手法が提案されている。いくつかの手法では、重みと入力アクティブ化とを表すために使用されるビットの数が低減され、それにより計算要件と帯域幅要件の両方が低減される。しかしながら、これらの手法はレイヤ固有のアーキテクチャおよび/または特定のトレーニングプロシージャを必要とし得る。いくつかの以前の手法はまた、複雑な分類タスクでは十分に機能しないことがある。
開示される回路構成は、第1の指数と第2の指数とを合計し、出力指数を生成するように構成された指数(exponent)加算器回路を含む。仮数(mantissa)乗算器回路は、第1の仮数と第2の仮数とを乗算し、出力仮数を生成するように構成される。第1の変換回路は、指数加算器回路の出力と仮数乗算器回路の出力とに結合される。変換回路は、出力指数と出力仮数とを固定小数点数(fixed point number)に変換するように構成される。回路構成は、累積レジスタと、アキュムレータ回路とをさらに含む。アキュムレータ回路は、変換回路と累積レジスタとに結合される。アキュムレータ回路は、累積レジスタの内容と固定小数点数の内容とを合計して累積値にし、累積値を累積レジスタに記憶するように構成される。
開示する方法は、第1の共有指数および第2の共有指数をそれぞれ第1の共有指数レジスタおよび第2の共有指数レジスタに記憶することを含む。本方法は、第1の指数と第2の指数とを合計し、出力指数を生成する。本方法はさらに、第1の仮数と第2の仮数とを乗算し、出力仮数を生成する。累積レジスタの内容と、出力指数および出力仮数に基づく値の内容とは合計されて累積値になる。累積値は、累積レジスタに記憶され、累積値の指数は、第1の共有指数と第2の共有指数と累積値の指数とに基づいて、拡張された指数に更新される。
他の特徴は、以下の発明を実施するための形態および特許請求の範囲の検討から認識されよう。
回路および方法の様々な態様および特徴は、以下の詳細な説明を検討し、図面を参照すると明らかになろう。
乗算器が浮動小数点値に対して演算を行い、アキュムレータが固定小数点値に対して演算を行う、MAC回路を示す図である。 浮動小数点重み値と入力アクティブ化値とから共有指数をくくり出す(factor out)ことによってビット幅が縮小された、入力オペランドに対して演算を行うMAC回路を示す図である。 浮動小数点乗算器と変換回路とを実装するプログラマブル論理回路と、部分累積を実装する単一命令複数データ(SIMD:single instruction multiple data)デジタル信号プロセッサ(DSP)回路と、加算器回路を実装するさらなるプログラマブル論理回路とを有する、ターゲットプログラマブル集積回路上のMAC回路のアレイまたはアレイの一部分の例示的な実装形態を示す図である。 浮動小数点乗算器と変換回路とを実装するプログラマブル論理回路と、単一命令複数データ(SIMD)デジタル信号プロセッサ(DSP)回路と、加算器回路を実装するさらなるプログラマブル論理回路とを有する、ターゲットプログラマブル集積回路上のMAC回路のアレイまたはアレイの一部分の例示的な実装形態を示す図である。 浮動小数点重み値と入力アクティブ化値とから共有指数をくくり出すことによってビット幅が縮小された、入力オペランドに対して演算を行うMAC回路を示す図である。 指数の一部分がMAC回路中の浮動小数点オペランドからくくり出されており、仮数を乗算する回路が、いくつかの低ビット幅乗算を実行する大ビット乗算器として実装される、回路構成を示す図である。 オペランドを量子化することによってオペランドのビット幅を縮小し、MAC回路によって乗算および累積演算を実行するプロセスのフローチャートを示す図である。 開示される回路およびプロセスが実装され得る、プログラマブル集積回路(IC)を示す図である。
以下の説明では、本明細書で提示される具体的な例について説明するために、多数の具体的な詳細が記載される。しかしながら、1つまたは複数の他の例および/またはこれらの例の変形例が、以下で与えられるすべての具体的な詳細なしに実施され得ることは、当業者には明らかであるべきである。他のインスタンスでは、本明細書での例の説明を不明瞭にしないように、よく知られている特徴については詳細に説明していない。説明しやすいように、同じ要素または同じ要素の追加のインスタンスを指すために、同じ参照番号が異なる図において使用され得る。
開示される手法は、特殊なトレーニングまたはネットワークアーキテクチャへの修正を必要とすることなしに低精度の演算を実行する。小ビット幅計算は、浮動小数点乗算と固定小数点加算とを実行するMAC回路、および/またはMAC回路への浮動小数点入力値の量子化などの特徴の組合せによって達成され得る。MAC回路中のオペランドのビット幅を縮小するための1つの手法では、乗算演算が、浮動小数点乗算を使用して実行され、加算が、固定小数点加算を使用して実行される。オペランドの浮動小数点表現では、指数は、指数を常に正にする量によってバイアスされる。たとえば、浮動小数点表現では、1ビットは、符号、NE=指数を表すビットの数と、NM=仮数を表すビットの数とを表し、指数は2NE-1-1によってバイアスされる。このフォーマットは、各浮動小数点数が(-1)*(1.M*2E-bias)に等しい値を有するような隠れビットを暗示し、ここで、Sは符号の値であり、Eは指数の値であり、Mは仮数の値である。
別の特徴では、浮動小数点オペランドのビット幅は、オペランドを量子化することによって縮小される。共有指数は、たとえば、重みと入力アクティブ化とのセットを含むことができるオペランドからくくり出される。重みと入力アクティブ化とのための共有指数を生成することは、オペランドを表すために使用されるビットの数を、たとえば、1符号ビット、3指数ビット、および3仮数ビットに低減することができる。MAC回路中の乗算器は、それによって小ビット幅乗算器に縮小され得る。代替的に、大ビット幅乗算器は、いくつかの小ビット幅乗算を同時に実行するために使用され得る。乗算器は、たとえば、フィールドプログラマブルゲートアレイ(FPGA)中にルックアップテーブルによって安価に実装され得る。MAC回路内の累積は、浮動小数点値または固定小数点演算のいずれかを使用して実行され得る。
図1は、乗算器が浮動小数点値に対して演算を行い、アキュムレータが固定小数点値に対して演算を行う、MAC回路100を示す。パイプライン化に関連する制限と、浮動小数点加算器実装における多数の論理レベルとを克服するために、1つの手法では、乗算が、浮動小数点乗算器を使用して実行され、乗算器の出力は固定小数点値に変換され、累積が、最終結果を変換して所望のフォーマットに戻すオプションとともに、固定小数点加算を使用して実行される。
例示的なアプリケーションでは、MAC回路100は、ニューラルネットワーク中で使用されるMAC回路のアレイ(図示せず)中のMAC回路の1つのインスタンスであり得る。入力浮動小数点重み値はレジスタ102中に与えられ、入力浮動小数点入力アクティブ化値はレジスタ104中に与えられる。重み値および入力アクティブ化値は、XOR回路108と加算器回路110と乗算器回路112とを含む、浮動小数点乗算器回路106に入力される。
各浮動小数点値の1つのビットは符号(「符号ビット」)を示し、ビットの1つのセットは指数(「指数ビット」)を表し、ビットの別のセットは仮数(「仮数ビット」)を表す。重みオペランドの符号ビットおよび入力アクティブ化オペランドの符号ビットはXOR回路108に入力され、指数ビットは加算器回路110に入力され、仮数ビットは乗算器回路112に入力される。
浮動小数点固定小数点変換回路114は、XOR回路108からの出力符号ビットと、加算器回路110からの得られた指数と、乗算器回路112からの積とを入力する。変換回路は、浮動小数点乗算器によって出力された符号ビットと指数ビットと仮数ビットとによって表される浮動小数点値を固定小数点値に変換する。アキュムレータ回路116は、変換回路114からの固定小数点値を、レジスタ118に記憶された累積値に加算し、次いで累積レジスタを新しい値で更新する。
例示的なアプリケーションでは、重み値と入力アクティブ化値とのセットが乗算され、累積されると、固定小数点浮動小数点変換回路120は、累積レジスタ118からの結果を読み取り、固定小数点値を浮動小数点値に変換することを可能にされ得る。出力値は、たとえば、ニューラルネットワーク中の次のレイヤへの入力値であり得る。
図2は、浮動小数点重み値と入力アクティブ化値とから共有指数をくくり出すことによってビット幅が縮小された、入力オペランドに対して演算を行うMAC回路200を示す。共有指数は、最後に累積された値に復元され得る。
例示的なアプリケーションでは、MAC回路200は、ニューラルネットワーク中で使用されるMAC回路のアレイ(図示せず)中のMAC回路の1つのインスタンスであり得る。入力浮動小数点重み値はレジスタ102中に与えられ、入力浮動小数点入力アクティブ化値はレジスタ104中に与えられる。各入力重み値および入力アクティブ化値は、共有指数がそれに対してくくり出された、元の重み値および元の入力アクティブ化値の量子化されたバージョンである。重み値のための共有指数はレジスタ202に記憶され得、入力アクティブ化値のための共有指数はレジスタ204に記憶され得る。重みオペランドの符号ビットおよび入力アクティブ化オペランドの符号ビットはXOR回路108に入力され、指数ビットは加算器回路110に入力され、仮数ビットは乗算器回路112に入力される。
浮動小数点累積または固定小数点累積のいずれかは、XOR回路108と加算器回路110と乗算器回路112とからの浮動小数点結果を累積するために使用され得る。例示的なMAC回路200は、固定小数点累積を実行し、浮動小数点値を固定小数点値に変換するための浮動小数点固定小数点変換回路114を含む。浮動小数点累積を伴う実装形態が図5に示されていることに留意されたい。
アキュムレータ回路116は、変換回路114からの固定小数点値をレジスタ118に記憶された累積値に加算し、次いで累積レジスタを新しい値で更新する。
重み値と入力アクティブ化値とのセットが乗算され、累積されると、固定小数点浮動小数点変換回路120は、累積レジスタ118からの結果を読み取り、固定小数点値を浮動小数点値に変換することを可能にされ得る。指数復元(restoration)回路206は、変換回路120からの浮動小数点結果値を入力し、共有指数レジスタ202および204からの共有指数を含むように結果値の指数を復元する。指数復元回路206からの出力値は、たとえば、ニューラルネットワーク中の次のレイヤへの入力値であり得る。
図3は、浮動小数点乗算器および変換回路を実装するプログラマブル論理回路と、単一命令複数データ(SIMD)デジタル信号プロセッサ(DSP)回路と、加算器回路および累積を実装するさらなるプログラマブル論理回路とを有する、ターゲットプログラマブル集積回路上のMAC回路300のアレイまたはアレイの一部分の例示的な実装形態を示す。
浮動小数点乗算回路106、変換回路306、308、310、312、314、316、318、および320、SIMD DSP回路302および304、ならびに加算器回路324、326、および328は、MAC回路のアレイまたはアレイの一部分を実装することができる。SIMD DSP回路302は、異なるサイズのオペランドに対して様々な算術関数を実行するように構成可能である。SIMD DSP回路の例示的な実装形態は、XILINX(登録商標),Inc.製のフィールドプログラマブルゲートアレイ(FPGA)において見られるDSP48E1スライスである。
図3の例示的な実装形態では、各SIMD DSP回路302および304はクワッド12ビット加算器として構成される。SIMD DSP回路302は浮動小数点固定小数点変換回路306、308、310、および312からの固定小数点オペランドを累積する。SIMD DSP回路304は浮動小数点固定小数点変換回路314、316、318、および320からの固定小数点オペランドを累積する。SIMD DSP回路は、それによって、複数のMACの累積機能を並列に実行する。例示的なXILINX SIMD回路はまた、デュアル24ビットモードにおいて加算器を実装することができる。
例示的な構成では、SIMD DSP回路302は、変換器306および308によって与えられた値を合計し、並行して、変換器310および312によって与えられた値を合計し、2つの出力値を並列に生成する。同様に、SIMD DSP回路304は、変換器314および316によって与えられた値を合計し、並行して、変換器318および320によって与えられた値を合計し、2つの出力値を並列に生成する。SIMD DSP回路302からの2つの出力値は、1つの値を生成する加算器回路324に入力され、SIMD DSP回路304からの2つの出力値は、1つの値を生成する加算器回路326に入力される。加算器回路によって出力された値は、変換器306、308、310、312、314、316、318、および320によって出力された値の最後の和を生成する加算器回路328に入力される。
図4は、浮動小数点乗算器および変換回路を実装するプログラマブル論理回路と、部分累積を実装する単一命令複数データ(SIMD)デジタル信号プロセッサ(DSP)回路と、加算器回路を実装するさらなるプログラマブル論理回路とを有する、ターゲットプログラマブル集積回路上のMAC回路400のアレイまたはアレイの一部分の例示的な実装形態を示す。図3の加算器回路324および326は、デュアル24ビット加算器として構成されるSIMD DSP回路402によって交換される。
例示的な構成では、SIMD DSP回路302は、変換器306および308によって与えられた値を合計し、並行して、変換器310および312によって与えられた値を合計し、2つの出力値を並列に生成する。同様に、SIMD DSP回路304は、変換器314および316によって与えられた値を合計し、並行して、変換器318および320によって与えられた値を合計し、2つの出力値を並列に生成する。SIMD DSP回路302からの2つの出力値およびSIMD DSP回路304からの2つの出力値はSIMD DSP回路402に入力される。SIMD DSP回路402は、SIMD DSP回路302によって与えられた2つの値を合計し、並行して、SIMD DSP回路304によって与えられた値を合計し、2つの出力値を並列に生成する。SIMD DSP回路402によって出力された値は、変換器306、308、310、312、314、316、318、および320によって出力された値の最後の和を生成する加算器回路328に入力される。
図5は、浮動小数点重み値と入力アクティブ化値とから共有指数をくくり出すことによってビット幅が縮小された、入力オペランドに対して演算を行うMAC回路500を示す。共有指数は、最後に累積された値に復元され得る。
例示的なアプリケーションでは、MAC回路500は、ニューラルネットワーク中で使用されるMAC回路のアレイ(図示せず)中のMAC回路の1つのインスタンスであり得る。入力浮動小数点重み値はレジスタ102中に与えられ、入力浮動小数点入力アクティブ化値はレジスタ104中に与えられる。各入力重み値および入力アクティブ化値は、共有指数がそれに対してくくり出された、元の重み値および元の入力アクティブ化値の量子化されたバージョンである。重み値のための共有指数はレジスタ202に記憶され得、入力アクティブ化値のための共有指数はレジスタ204に記憶され得る。重みオペランドの符号ビットおよび入力アクティブ化オペランドの符号ビットはXOR回路108に入力され、指数ビットは加算器回路110に入力され、仮数ビットは乗算器回路112に入力される。
アキュムレータ回路502は、XOR回路108、加算器回路110、および乗算器回路112からの浮動小数点値と、レジスタ504に記憶された累積値との浮動小数点累積を実行し、次いで累積レジスタを新しい値で更新する。
重み値と入力アクティブ化値とのセットが乗算され、累積されると、指数復元回路206は、累積レジスタ504からの浮動小数点結果値を入力し、共有指数レジスタ202および204からの共有指数を含むように結果値の指数を復元することを可能にされ得る。指数復元回路206からの出力値は、たとえば、ニューラルネットワーク中の次のレイヤへの入力値であり得る。
図6は、指数の一部分がMAC回路中の浮動小数点オペランドからくくり出され、仮数を乗算する回路が、いくつかの低ビット幅乗算を実行する大ビット乗算器として実装される、回路構成600を示す。記憶回路602は、重みなど、複数の浮動小数点被乗数(multiplicand)(オペランド)を記憶し、記憶回路604は、入力アクティブ化など、複数の浮動小数点乗数(オペランド)を記憶する。記憶回路は、たとえば、レジスタバンクまたはランダムアクセスメモリ(RAM)であり得る。
オペランドフォーマッティング回路606は、複数の被乗数の仮数を入力し、仮数を組み合わせて、マルチ被乗数オペランドと呼ばれることがある、単一の被乗数にするように構成される。マルチ被乗数オペランドはレジスタ608に記憶される。オペランドフォーマッティング回路はまた、複数の乗数の仮数を入力し、乗数を組み合わせて、マルチ乗数オペランドと呼ばれることがある、単一の乗数にするように構成される。マルチ乗数オペランドはレジスタ610に記憶される。
例示的なマルチ被乗数オペランドおよびマルチ乗数オペランドが、それぞれレジスタ608および610中に示されている。マルチ被乗数オペランドおよびマルチ乗数オペランドは、それぞれ2つの仮数を含み、各仮数は「1.zzz」と示されている。表記法は、リーディングビット値1が挿入され、zzzが、2進小数点の後に位置し、オペランドフォーマッタ回路606によって抽出される、仮数のビット値を表す、4ビット値を示す。レジスタ608中の仮数はブロック612および614によって示され、レジスタ610中の仮数は破線ブロック616および618によって示されている。0のビット値は、乗算器回路620の出力からの積の抽出を許可するように、仮数間でのパディングのために挿入される。
乗算器回路620は、レジスタ608中のマルチ被乗数オペランドにレジスタ610中のマルチ乗数オペランドを乗算し、得られた値をレジスタ622に記憶するように構成される。マルチ被乗数オペランドは2つの仮数を有し、マルチ乗数オペランドは2つの仮数を有するので、乗算器回路620からの出力は、「仮数積(mantissa product)」と呼ばれることがある、4つの積を含む。重みはwと示され得、入力アクティブ化はxと示され得る。重みの仮数はw(m)と示され得、入力アクティブ化の仮数はx(m)と示され得る。ブロック618および616によって示された重み仮数は、それぞれw(m)およびw(m)であり得る。ブロック614および612によって示された入力アクティブ化仮数は、それぞれx(m)およびx(m)であり得る。
乗算器回路は、レジスタ622中に示される以下の仮数積を生成する。
(m)(m)=mm.mmmmmm
(m)(m)=nn.nnnnnn
(m)(m)=pp.pppppp
(m)(m)=qq.qqqqqq
各仮数積の2進小数点は、2つの最上位ビットに続き、例示の目的で含まれている。
4つの仮数積が示されているが、有用である積はアプリケーションに依存することが認識されよう。たとえば、いくつかのアプリケーションにおいて有用であり得る積は、すべての4つの積よりも少ない。
各有用な仮数積について、回路624のインスタンスは、浮動小数点オペランドの指数を処理し、累積を実行し、共有指数の値を累積値に復元するために与えられる。したがって、4つの仮数積が乗算器回路620によって生成され、すべての4つの仮数積がアプリケーションにおいて有用である場合、回路624の4つのインスタンスが与えられる。
回路624の各インスタンスは、仮数積がそこから生成された、仮数に関連する浮動小数点オペランドの指数を入力する、加算器回路626を含む。浮動小数点オペランドの指数はw(e)およびx(e)と示されている。したがって、w(m)(m)から生じる仮数積について、オペランドフォーマッティング回路606によって抽出され、加算器回路のインスタンスに入力される指数はw(e)およびx(e)である。加算器回路626の(合計された指数)出力は左シフタ回路628に入力され、左シフタ回路628は、レジスタ622によって与えられた仮数積のうちの1つを、合計された指数によって示されたビットの数だけ左シフトする。ビット値0は、連結(concatenation)回路630によって示されているように左シフタ回路の出力にプリペンドされる。追加のビットは、連結回路630から出力された値中の最上位ビットである。
オペランドフォーマッタ回路606はまた、仮数積がそこから生成された、仮数に関連する浮動小数点オペランドの符号ビットをルーティングする。浮動小数点オペランドの符号ビットはw(s)およびx(s)と示されている。したがって、w(m)(m)から生じる仮数積について、オペランドフォーマッティング回路606によって抽出され、加算器回路のインスタンスに入力される符号ビットはw(s)およびx(s)である。符号ビットはXOR回路632に入力される。複製回路634は、XOR回路632によって出力された1ビットの値を複製し、nビット値を出力し、ここで、nは連結回路630の出力のビット幅である。複製回路634からのnビット値および連結回路からのnビット値はXOR回路636に入力され、XOR回路636はw の浮動小数点積の固定小数点表現を出力する。
アキュムレータ回路638は、XOR回路636からの出力を、累積レジスタ640中に保持された値と合計し、XOR回路632からのビット出力はキャリーイン(carry-in)ビットとしてアキュムレータ638に入力される。符号ビットの積が0(XOR回路632の出力)であるとき、キャリービットは0であり、XOR回路636は0のベクトルを出力し、効果的に、アキュムレータへの入力は連結回路630の出力と同じであり、アキュムレータ回路は加算を実行する。符号ビットの積が1(XOR回路632の出力)であるとき、アキュムレータ回路は減算を実行する。XOR回路636、およびXOR回路632からのキャリービットは、連結回路630の出力を反転し、キャリービット(+1)をアキュムレータ回路への入力として与えることによって、2の補数(complement)減算を可能にする。アキュムレータ回路は、結果を累積レジスタ中に戻して記憶する。すべての所望の乗算および累積が完了すると、固定小数点浮動小数点変換回路642は、累積された固定小数点値結果を浮動小数点値に変換し、浮動小数点値はレジスタ644に記憶される。
加算器回路646は、量子化された重みの共有指数を量子化された入力アクティブ化の共有指数に加算し、得られた値は加算器回路648によってレジスタ644中の指数に加算される。復元された指数は、符号ビットおよびレジスタ644からの仮数とともに、レジスタ650に記憶される。
図7は、オペランドを量子化し、MAC回路によって乗算および累積演算を実行することによって、オペランドのビット幅を縮小するプロセスのフローチャートを示す。重みおよび入力アクティブ化は、以下の説明において縮小されるビット幅をもつオペランドである。
ブロック702において、プロセスは、ニューラルネットワークのレイヤ中で使用される重みのセットなど、重みのセットの最大絶対値wmaxを決定する。絶対値wmaxは、数値表現において使用される(基数2における)最も大きい指数を決定する。ブロック704において、プロセスは、ニューラルネットワークのレイヤ中で使用される入力アクティブ化のセットなど、入力アクティブ化のセットの最大絶対値xmaxを決定する。入力アクティブ化の最大絶対値は、たとえば、入力としてトレーニングデータセットのごく一部分または合成画像を使用して、所与のレイヤのアクティブ化を登録した後に見つけられ得る。絶対値xmaxは、数値表現において使用される(基数2における)最も大きい指数を決定する。
ブロック706において、プロセスは、各重みおよび入力アクティブ化の指数のために割り振られるビットの数である、αのための値を選択する。αの値は、重みおよび入力アクティブ化の範囲を決定し、wmaxとxmaxとによって定義された最も大きい指数に固定される。たとえば、wmax=-0.6である場合、最大指数は-1である。したがって、表され得る最も大きい2のべき乗は2-1=0.5である。α=2である場合、2=4であり、2のべき乗の異なる絶対値は、量子化された値、2-4、2-3、2-2および2-1によって表され得る。最も小さい指数が知られると、値はレイヤのための共有指数として使用され得る。各重みについて、全指数と共有指数との差のみが符号化される必要があり、各入力アクティブ化について、全指数と共有指数との差のみが符号化される必要がある。
ブロック708において、プロセスは、重みの仮数と入力アクティブ化の仮数とを表すために使用されるビットの数である、βを選択する。ビットの数は、各表現可能な2のべき乗のためのスケーリングファクタを決定する。言い換えれば、βは、量子化された重みの精度と入力アクティブ化の精度とを決定する。たとえば、2ビットの仮数はスケーリングファクタ1、1.25、1.5、および1.75を表すことが可能になる。標準的な浮動小数点表現におけるように、スケーリングファクタは、暗黙的なリーディング1の値+(全分数符号なし固定小数点数に対応する)仮数で表される数値を有する。
α、β、および共有指数のための値は、重みのためと入力アクティブ化のためとで異なり得ることに留意されたい。
量子化されていない重みおよび入力アクティブ化はブロック710および712において量子化された値に変換される。重みおよび入力アクティブ化は、量子化された値として表現可能である最も近い値にマッピングされる。絶対値が表現可能な最も小さい非ゼロ絶対値をわずかに下回る場合、値は0の値にマッピングされ得る(このルールの詳細は、以下で与えられるアルゴリズムを研究することから分かり得る)。重みまたは入力アクティブ化が表現可能な最大絶対値を超える場合、値はその最大値にマッピングされ得る。標準的な浮動小数点表現とは対照的に、開示される量子化手法は、非数(not-a-number)、無限大、および非正規数(sub-normal number)など、多くの特殊なケースの表現を回避することに留意されたい。サポートされる唯一の例外は値0であり、値0は、1)符号ビットにかかわらず、すべての指数および仮数ビットが0であるときに表される特殊なケースとして、または2)可変長符号化とともに、まばらなレイヤを圧縮するために有用であり得る、追加の0ビットを使用して、の2つの方法のうちの1つで表され得る。
所与のレイヤの重みを変換するためのプロシージャは、以下の例1に示されたアルゴリズムによってさらに説明される。
入力:α、β、およびwmax
初期化:
Figure 0007476175000001
および
Figure 0007476175000002
Figure 0007476175000003
lowよりも小さい絶対値をもつすべての重みに0の値を割り当てる。
i=0,1,…,n-nの場合、
Figure 0007476175000004
を行う
j=0,1,…,2β-1の場合、
up=tlow+γ2-βを行う。
j==0の場合,tup=tup-γ2-β-2である。
low(両端値を含む)とtupとの間の絶対値をもつすべての重みにρ=(1+j*2-beta)*γの絶対値を割り当てる。修正された重みの符号を保存する。
low=tup
up以上の絶対値をもつすべての重みにρの絶対値を割り当てる。修正された重みの符号を保存する。
例1
例1のアルゴリズムは、wmaxの代わりにxmaxを使用することによって入力アクティブ化を変換するように修正され得る。
ブロック714において、量子化された重みの共有指数、および量子化された入力アクティブ化の共有指数は、乗算および累積から生成された最終値が適切な大きさに復元され得るように記憶される。ブロック716において、MAC回路は、量子化されたオペランドを使用して乗算および累積演算を実行し、ブロック718において、たとえば、図2、図5、および図6の回路によって図示され、説明されるように、結果の指数が更新される。
図8は、開示される回路およびプロセスが実装され得るプログラマブル集積回路(IC)800を示す。プログラマブルICは、他のプログラマブルリソースとともにフィールドプログラマブルゲートアレイ論理(FPGA)を含む、システムオンチップ(SOC)と呼ばれることもある。FPGA論理はアレイ中にいくつかの異なるタイプのプログラマブル論理ブロックを含み得る。たとえば、図8は、たとえば、マルチギガビットトランシーバ(MGT)801、構成可能な論理ブロック(CLB)802、ランダムアクセスメモリブロック(BRAM)803、入出力ブロック(IOB)804、構成およびクロッキング論理(CONFIG/CLOCK)805、デジタル信号処理ブロック(DSP)806、専用入出力ブロック(I/O)807、クロックポート、およびデジタルクロックマネージャ、アナログデジタル変換器、システム監視論理など他のプログラマブル論理808などを含む、多数の異なるプログラマブルタイルを含むプログラマブルIC800を示す。FPGA論理を有するいくつかのプログラマブルICはまた、専用プロセッサブロック(PROC)810と、内部および外部再構成ポート(図示せず)とを含む。
あるFPGA論理では、各プログラマブルタイルは、各隣接するタイル中の対応する相互接続要素との間の標準化された接続を有するプログラマブル相互接続要素(INT)811を含む。したがって、まとめられたプログラマブル相互接続要素は、示されているFPGA論理のためのプログラマブル相互接続構造を実装する。プログラマブル相互接続要素INT811はまた、図8の上部に含まれた例によって示されるように、同じタイル内でプログラマブル論理要素との間の接続を含む。
たとえば、CLB802は、ユーザ論理を実装するようにプログラムされ得る構成可能論理要素CLE812+単一のプログラマブル相互接続要素INT811を含むことができる。BRAM803は、1つまたは複数のプログラマブル相互接続要素に加えて、BRAM論理要素(BRL)813を含むことができる。一般に、タイル中に含まれる相互接続要素の数はタイルの高さに依存する。示されているBRAMタイルは5つのCLBと同じ高さを有するが、他の数(たとえば、4つ)も使用され得る。DSPタイル806は、適切な数のプログラマブル相互接続要素に加えて、DSP論理要素(DSPL)814を含むことができる。IOB804は、たとえば、プログラマブル相互接続要素INT811の1つのインスタンスに加えて、入出力論理要素(IOL)815の2つのインスタンスを含むことができる。当業者に明らかになるように、たとえば、I/O論理要素815に接続された実際のI/Oボンドパッドは、様々な示されている論理ブロックの上方に積層された金属を使用して製造され、一般に、入出力論理要素815のエリアに限定されない。
(図8において影付きで示されている)ダイの中心に近い柱状のエリアは、構成、クロック、および他の制御論理のために使用される。この列から延びる水平エリア809は、プログラマブルICの幅にわたってクロックと構成信号とを分散させるために使用される。「柱状」エリアおよび「水平」エリアへの言及は、図面を縦向きに見ることに関係することに留意されたい。
図8に示されたアーキテクチャを利用するいくつかのプログラマブルICは、プログラマブルICの大部分を構成する一定の柱状構造を分断する追加の論理ブロックを含む。追加の論理ブロックはプログラマブルブロックおよび/または専用論理であり得る。たとえば、図8に示されたプロセッサブロックPROC810はCLBおよびBRAMのいくつかの列にわたる。
図8は例示的なプログラマブルICアーキテクチャのみを示すものであることに留意されたい。図8の上部に含まれる、列中の論理ブロックの数、列の相対幅、列の数および順序、列中に含まれる論理ブロックのタイプ、論理ブロックの相対サイズ、および相互接続/論理実装は例にすぎない。たとえば、実際のプログラマブルICでは、ユーザ論理の効率的な実装を促進するために、一般に、CLBの2つ以上の隣接する列が、CLBが現れる所はどこでも含まれる。
開示される回路構成は、累積レジスタからの固定小数点出力を浮動小数点出力に変換するように構成された第2の変換回路と、第1の共有指数と第2の共有指数との記憶のために構成された共有指数レジスタと、第1の共有指数と第2の共有指数と浮動小数点出力の指数とに基づいて、浮動小数点出力の指数を拡張された指数に更新するように構成された指数復元回路とをさらに含むことができる。
開示される回路構成は、累積レジスタの出力に結合された第2の変換回路をさらに含むことができる。第2の変換回路は、累積レジスタからの固定小数点値を浮動小数点値に変換するように構成され得る。
開示される回路構成は、指数加算器回路の複数のインスタンスと、仮数乗算器回路の複数のインスタンスと、第1の変換回路の複数のインスタンスとをさらに含むことができる。アキュムレータ回路は、第1の変換回路の複数のインスタンスに結合され得、複数の第1の変換回路の第1のペアからのオペランドの第1のペアを、複数の変換回路の第2のペアからのオペランドの第2のペアを合計することと並行して、合計するように構成された単一命令複数データ加算器回路を含むことができる。
開示される回路構成は、ニューラルネットワークをさらに含むことができる。ニューラルネットワークは乗算累積(MAC)回路のアレイを含むことができ、各MAC回路は、指数加算器回路と、仮数乗算器回路と、第1の変換回路と、累積レジスタと、アキュムレータ回路とのそれぞれのインスタンスを含むことができる。
開示される回路構成は、2つ以上の浮動小数点被乗数を組み合わせてマルチ被乗数オペランドにし、2つ以上の浮動小数点乗数を組み合わせてマルチ乗数オペランドにするように構成された、オペランドフォーマッティング回路をさらに含むことができる。仮数乗算器回路は、マルチ被乗数オペランドにマルチ乗数オペランドを乗算し、4つ以上の仮数積を有する値を出力するように構成され得る。開示される回路構成は、指数加算器回路の4つ以上のインスタンスをさらに含むことができ、各インスタンスは、2つ以上の浮動小数点被乗数のうちの1つの指数と2つ以上の浮動小数点乗数のうちの1つの指数とを合計し、出力指数を生成するように構成され得る。開示される回路構成は、それぞれ指数加算器回路のインスタンスの出力と、それぞれ仮数乗算器回路のインスタンスとに結合された第1の変換回路の4つ以上のインスタンスをさらに含むことができる。第1の変換回路の各インスタンスは、出力指数と仮数積のうちの1つとを固定小数点数に変換するように構成され得る。開示される回路構成は、累積レジスタの4つ以上のインスタンスと、アキュムレータ回路の4つ以上のインスタンスとをさらに含むことができる。アキュムレータ回路の各インスタンスは、アキュムレータレジスタのインスタンスのうちの1つの内容と固定小数点数の内容とを合計して累積値にし、累積値を累積レジスタのインスタンスのうちの1つに記憶するように構成され得る。開示される回路構成は、第2の変換回路の4つ以上のインスタンスをさらに含むことができる。第2の変換回路の各インスタンスは、累積レジスタのインスタンスのうちの1つからの固定小数点出力を浮動小数点出力に変換するように構成され得る。開示される回路構成は、指数復元回路の4つ以上のインスタンスをさらに含むことができる。指数復元回路の各インスタンスは、第1の共有指数と第2の共有指数と浮動小数点出力の指数とに基づいて、第1の変換回路のインスタンスのうちの1つからの浮動小数点出力の指数を拡張された指数に更新するように構成され得る。
開示される回路構成は、第1の共有指数が2つ以上の浮動小数点被乗数の共有指数である回路をさらに含むことができる。
開示される回路構成は、第2の共有指数が2つ以上の浮動小数点乗数の共有指数である回路をさらに含むことができる。
開示される回路構成は、第1の共有指数と第2の共有指数とを合計するように構成された共有指数加算器回路をさらに含むことができる。
開示される回路構成は、第1の共有指数と第2の共有指数とを合計するように構成された共有指数加算器回路をさらに含むことができる。
開示される回路構成は、ニューラルネットワークが乗算累積(MAC)回路のアレイを含み、各MAC回路が、指数加算器回路と、仮数乗算器回路と、累積レジスタと、アキュムレータ回路と、第1および第2の共有指数レジスタと、指数復元回路とのそれぞれのインスタンスを含む、回路をさらに含むことができる。
開示される方法は、オペランドフォーマッティング回路によって、2つ以上の浮動小数点被乗数を組み合わせてマルチ被乗数オペランドにすることと、オペランドフォーマッティング回路によって、2つ以上の浮動小数点乗数を組み合わせてマルチ乗数オペランドにすることとをさらに含むことができる。乗算することは、マルチ被乗数オペランドにマルチ乗数オペランドを乗算することと、4つ以上の仮数積を有する値を出力することを含むことができる。開示される方法は、指数加算器回路の4つ以上のインスタンスの各インスタンスによって2つ以上の浮動小数点被乗数のうちの1つ指数と2つ以上の浮動小数点乗数のうちの1つの指数とを合計し、出力指数を生成することをさらに含むことができる。開示される方法は、第1の変換回路の4つ以上のインスタンスの各インスタンスによって出力指数と仮数積のうちの1つとを固定小数点数に変換することと、アキュムレータ回路の4つ以上のインスタンスによってアキュムレータレジスタの4つ以上のインスタンスのうちの1つの内容と固定小数点数の内容とを合計して累積値にし、累積値を累積レジスタのインスタンスのうちの1つに記憶することとをさらに含むことができる。開示される方法は、第2の変換回路の4つ以上のインスタンスによって累積レジスタのインスタンスのうちの1つからの固定小数点出力を浮動小数点出力に変換することと、指数復元回路の4つ以上のインスタンスによって、第1の共有指数と第2の共有指数と浮動小数点出力の指数とに基づいて、第2の変換回路のインスタンスのうちの1つからの浮動小数点出力の指数を拡張された指数に更新することとをさらに含むことができる。
開示される方法は、2つ以上の浮動小数点被乗数の共有指数である第1の共有指数をさらに含むことができる。
開示される方法は、2つ以上の浮動小数点乗数の共有指数である第2の共有指数をさらに含むことができる。
開示される方法は、共有指数加算器回路によって第1の共有指数と第2の共有指数とを合計することをさらに含むことができる。
開示される方法は、共有指数加算器回路によって第1の共有指数と第2の共有指数とを合計することをさらに含むことができる。
開示される方法は、指数復元回路の各インスタンスによって、浮動小数点出力の指数と共有指数加算器回路の出力とを合計することをさらに含むことができる。
開示される方法は、第1の変換回路によって、出力指数と出力仮数とを固定小数点値に変換することであって、固定小数点値が、出力指数と出力仮数とに基づく値である、固定小数点値に変換することと、第2の変換回路によって、累積レジスタからの固定小数点値を浮動小数点値に変換することとをさらに含むことができる。
態様および特徴は、場合によっては、個々の図において説明され得るが、組合せが明示的に示されていないか、または組合せとして明示的に説明されないとしても、1つの図からの特徴は別の図の特徴と組み合わせられ得ることが諒解されよう。
回路および方法は、乗算および累積演算を実行するための様々なシステムに適用可能であると考えられる。他の態様および特徴は本明細書の考察から当業者に明らかになろう。回路および方法は、特定用途向け集積回路(ASIC)としてまたはプログラマブル論理デバイス上の論理として実装され得る。本明細書および図面は例にすぎないと考えられ、本発明の真の範囲は以下の特許請求の範囲によって示されることが意図される。

Claims (11)

  1. 第1の指数と第2の指数とを合計し、出力指数を生成するように構成された指数加算器回路と、
    第1の仮数と第2の仮数とを乗算し、出力仮数を生成するように構成された仮数乗算器回路と、
    前記指数加算器回路の出力と前記仮数乗算器回路の出力とに結合された第1の変換回路であって、前記出力指数と前記出力仮数とを固定小数点数に変換するように構成された第1の変換回路と、
    累積レジスタと、
    前記変換回路と前記累積レジスタとに結合されたアキュムレータ回路であって、前記累積レジスタの内容と前記固定小数点数の内容とを合計して累積値にし、前記累積値を前記累積レジスタに記憶するように構成されたアキュムレータ回路と
    前記累積レジスタからの固定小数点出力を浮動小数点出力に変換するように構成された第2の変換回路と、
    第1の共有指数と第2の共有指数との記憶のために構成された共有指数レジスタと、
    前記第1の共有指数と前記第2の共有指数と前記浮動小数点出力の指数とに基づいて、前記浮動小数点出力の前記指数を拡張された指数に更新するように構成された指数復元回路と
    を備える、回路構成。
  2. 前記第1の共有指数は第1の浮動小数点オペランドからくくり出されたものであり、前記第2の共有指数は第2の浮動小数点オペランドからくくり出されたものである、請求項1に記載の回路構成。
  3. 前記指数加算器回路の複数のインスタンスと、
    前記仮数乗算器回路の複数のインスタンスと、
    前記第1の変換回路の複数のインスタンスと
    をさらに備え、
    前記アキュムレータ回路が、前記第1の変換回路の前記複数のインスタンスに結合され、前記複数の第1の変換回路の第1のペアからのオペランドの第1のペアを、前記複数の第1の変換回路の第2のペアからのオペランドの第2のペアを合計することと並行して、合計するように構成された単一命令複数データ加算器回路を含む、請求項1または2に記載の回路構成。
  4. 乗算累積(MAC)回路のアレイを含むニューラルネットワークをさらに備え、各MAC回路が、前記指数加算器回路の前記複数のインスタンスの内の1つのインスタンスと、前記仮数乗算器回路の前記複数のインスタンスの内の1つのインスタンスと、前記第1の変換回路の前記複数のインスタンスの内の1つのインスタンスと、前記累積レジスタのインスタンスと、前記アキュムレータ回路のインスタンスを含む、請求項に記載の回路構成。
  5. 第1の共有指数および第2の共有指数をそれぞれ第1の共有指数レジスタおよび第2の共有指数レジスタに記憶することであって、前記第1の共有指数は第1の浮動小数点オペランドからくくり出された第1の全指数の一部分であり、前記第2の共有指数は第2のオペランドからくくり出された第2の全指数の一部分である、第1の共有指数および第2の共有指数をそれぞれ第1の共有指数レジスタおよび第2の共有指数レジスタに記憶することと、
    前記第1の全指数と前記第1の共有指数との差を、第1の縮小した指数として符号化し、前記第2の全指数と前記第2の共有指数との差を、第2の縮小した指数として符号化することと、
    前記第1の縮小した指数と前記第2の縮小した指数とを加算器回路によって合計し、出力指数を生成することと、
    第1の仮数と第2の仮数とを乗算器回路によって乗算し、出力仮数を生成することと、
    累積レジスタの内容と、前記出力指数および前記出力仮数に基づく値の内容とをアキュムレータ回路によって合計して累積値にすることと、
    前記累積値を前記累積レジスタに記憶することと、
    前記第1の共有指数と前記第2の共有指数と前記累積値の指数とに基づいて、前記累積値の前記指数を拡張された指数に加算器回路によって更新することと
    を含む、方法。
  6. オペランドフォーマッティング回路によって、2つ以上の浮動小数点被乗数を組み合わせてマルチ被乗数オペランドにすることと、
    前記オペランドフォーマッティング回路によって、2つ以上の浮動小数点乗数を組み合わせてマルチ乗数オペランドにすることであって、
    前記乗算することが、前記マルチ被乗数オペランドに前記マルチ乗数オペランドを乗算すること、および4つ以上の仮数積を有する値を出力することを含む、2つ以上の浮動小数点乗数を組み合わせてマルチ乗数オペランドにすることと、
    指数加算器回路の4つ以上のインスタンスの各インスタンスによって、前記2つ以上の浮動小数点被乗数のうちの1つの指数と前記2つ以上の浮動小数点乗数のうちの1つの指数とを合計し、出力指数を生成することと、
    第1の変換回路の4つ以上のインスタンスの各インスタンスによって、前記出力指数と前記仮数積のうちの1つとを固定小数点数に変換することと、
    アキュムレータ回路の4つ以上のインスタンスによって、アキュムレータレジスタの4つ以上のインスタンスのうちの1つの内容と前記固定小数点数の内容とを合計して累積値にし、前記累積値を前記累積レジスタの前記インスタンスのうちの1つに記憶することと、
    第2の変換回路の4つ以上のインスタンスによって、前記累積レジスタの前記インスタンスのうちの1つからの固定小数点出力を浮動小数点出力に変換することと、
    指数復元回路の4つ以上のインスタンスによって、前記第1の共有指数と前記第2の共有指数と前記浮動小数点出力の指数とに基づいて、前記第2の変換回路の前記インスタンスのうちの1つからの前記浮動小数点出力の前記指数を拡張された指数に更新することと
    をさらに含む、請求項に記載の方法。
  7. 前記第1の共有指数が、前記2つ以上の浮動小数点被乗数の共有指数である、請求項に記載の方法。
  8. 前記第2の共有指数が、前記2つ以上の浮動小数点乗数の共有指数である、請求項に記載の方法。
  9. 共有指数加算器回路によって、前記第1の共有指数と前記第2の共有指数とを合計することをさらに含む、請求項6からのいずれか一項に記載の方法。
  10. 前記指数復元回路の各インスタンスによって、前記浮動小数点出力の前記指数と前記共有指数加算器回路の出力とを合計することをさらに含む、請求項に記載の方法。
  11. 第1の変換回路によって、前記出力指数と前記出力仮数とを固定小数点値に変換することであって、前記固定小数点値が、前記出力指数と前記出力仮数とに基づく値である、固定小数点値に変換することと、
    第2の変換回路によって、前記累積レジスタからの固定小数点値を浮動小数点値に変換することと
    をさらに含む、請求項に記載の方法。
JP2021514561A 2018-09-19 2019-09-05 乗算累積回路 Active JP7476175B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/136,041 2018-09-19
US16/136,041 US10747502B2 (en) 2018-09-19 2018-09-19 Multiply and accumulate circuit
PCT/US2019/049760 WO2020060769A1 (en) 2018-09-19 2019-09-05 Multiply and accumulate circuit

Publications (2)

Publication Number Publication Date
JP2021536076A JP2021536076A (ja) 2021-12-23
JP7476175B2 true JP7476175B2 (ja) 2024-04-30

Family

ID=67998738

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2021514561A Active JP7476175B2 (ja) 2018-09-19 2019-09-05 乗算累積回路

Country Status (6)

Country Link
US (1) US10747502B2 (ja)
EP (1) EP3853713A1 (ja)
JP (1) JP7476175B2 (ja)
KR (1) KR20210057158A (ja)
CN (1) CN112740171B (ja)
WO (1) WO2020060769A1 (ja)

Families Citing this family (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2580171B (en) * 2018-12-21 2021-02-17 Imagination Tech Ltd Methods and systems for selecting quantisation parameters for deep neural networks using back-propagation
US11562247B2 (en) 2019-01-24 2023-01-24 Microsoft Technology Licensing, Llc Neural network activation compression with non-uniform mantissas
FR3097992B1 (fr) * 2019-06-25 2021-06-25 Kalray Opérateur d’addition et multiplication fusionnées pour nombres à virgule flottante de précision mixte réalisant un arrondi correct
FR3097993B1 (fr) * 2019-06-25 2021-10-22 Kalray Opérateur de produit scalaire de nombres à virgule flottante réalisant un arrondi correct
US11615301B2 (en) * 2019-09-03 2023-03-28 Microsoft Technology Licensing, Llc Lossless exponent and lossy mantissa weight compression for training deep neural networks
US20220229633A1 (en) 2020-01-07 2022-07-21 SK Hynix Inc. Multiplication and accumulation(mac) operator and processing-in-memory (pim) device including the mac operator
US11983508B2 (en) 2020-01-07 2024-05-14 SK Hynix Inc. Processing-in-memory (PIM) system and operating methods of the PIM system
US11635911B2 (en) 2020-01-07 2023-04-25 SK Hynix Inc. Processing-in-memory (PIM) system and operating methods of the PIM system
US11908541B2 (en) 2020-01-07 2024-02-20 SK Hynix Inc. Processing-in-memory (PIM) systems
US11704052B2 (en) 2020-01-07 2023-07-18 SK Hynix Inc. Processing-in-memory (PIM) systems
US11720354B2 (en) 2020-01-07 2023-08-08 SK Hynix Inc. Processing-in-memory (PIM) system and operating methods of the PIM system
US11385837B2 (en) 2020-01-07 2022-07-12 SK Hynix Inc. Memory system
US11500629B2 (en) 2020-01-07 2022-11-15 SK Hynix Inc. Processing-in-memory (PIM) system including multiplying-and-accumulating (MAC) circuit
US11847451B2 (en) 2020-01-07 2023-12-19 SK Hynix Inc. Processing-in-memory (PIM) device for implementing a quantization scheme
US11829760B2 (en) 2020-01-07 2023-11-28 SK Hynix Inc. Processing-in-memory device and processing-in-memory system including the same
US11663000B2 (en) 2020-01-07 2023-05-30 SK Hynix Inc. Multiplication and accumulation(MAC) operator and processing-in-memory (PIM) device including the MAC operator
TW202141290A (zh) 2020-01-07 2021-11-01 韓商愛思開海力士有限公司 記憶體中處理(pim)系統和pim系統的操作方法
US11275562B2 (en) * 2020-02-19 2022-03-15 Micron Technology, Inc. Bit string accumulation
KR20210154502A (ko) * 2020-06-12 2021-12-21 삼성전자주식회사 부동 소수점 연산을 수행하는 뉴럴 네트워크 장치 및 그의 동작 방법
CN111767025B (zh) * 2020-08-04 2023-11-21 腾讯科技(深圳)有限公司 包括乘累加器的芯片、终端及浮点运算的控制方法
CN112558918B (zh) * 2020-12-11 2022-05-27 北京百度网讯科技有限公司 用于神经网络的乘加运算方法和装置
WO2022178339A1 (en) * 2021-02-21 2022-08-25 Redpine Signals Inc Floating point dot product multiplier-accumulator
CN113138748B (zh) * 2021-04-09 2023-08-29 广东工业大学 一种基于FPGA的支持8bit和16bit数据的可配置的CNN乘法累加器
US20210326116A1 (en) * 2021-06-25 2021-10-21 Intel Corporation High precision decomposable dsp entity
CN113778523B (zh) * 2021-09-14 2024-04-09 北京升哲科技有限公司 一种数据处理方法、装置、电子设备及存储介质
WO2023068489A1 (ko) * 2021-10-18 2023-04-27 삼성전자 주식회사 상이한 데이터 타입들을 지원하는 npu를 포함하는 전자 장치 및 그 제어 방법
CN114237550B (zh) * 2021-11-10 2023-10-13 电子科技大学 一种基于Wallace树的多输入移位求和累加器
US20220113940A1 (en) * 2021-12-22 2022-04-14 Martin Langhammer Systems and Methods for Structured Mixed-Precision in a Specialized Processing Block
KR102635978B1 (ko) * 2023-06-27 2024-02-13 주식회사 하이퍼엑셀 생성형 거대 언어 모델의 연산 가속을 위해 메모리대역폭 사용을 극대화하기 위한 혼합정밀도 mac 트리 구조

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007079696A (ja) 2005-09-12 2007-03-29 Hitachi Kokusai Electric Inc 浮動小数点数のベクトル演算方法
JP2018010618A (ja) 2016-05-03 2018-01-18 イマジネイション テクノロジーズ リミテッド 畳み込みニューラルネットワークハードウエア構成

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE3144015A1 (de) * 1981-11-05 1983-05-26 Ulrich Prof. Dr. 7500 Karlsruhe Kulisch "schaltungsanordnung und verfahren zur bildung von skalarprodukten und summen von gleitkommazahlen mit maximaler genauigkeit"
US4615013A (en) * 1983-08-02 1986-09-30 The Singer Company Method and apparatus for texture generation
US4991131A (en) 1987-10-06 1991-02-05 Industrial Technology Research Institute Multiplication and accumulation device
US5247471A (en) * 1991-12-13 1993-09-21 International Business Machines Corporation Radix aligner for floating point addition and subtraction
JPH11212768A (ja) * 1998-01-23 1999-08-06 Sanyo Electric Co Ltd 対数値算出回路
KR100917862B1 (ko) 2007-12-14 2009-09-18 한국전자통신연구원 다중입력 다중출력 시스템에서 qr 분해 장치 및 그 방법
CN102520906A (zh) * 2011-12-13 2012-06-27 中国科学院自动化研究所 支持定浮点可重构的向量长度可配置的向量点积累加网络
US9575725B1 (en) * 2014-03-18 2017-02-21 Altera Corporation Specialized processing block with embedded pipelined accumulator circuitry
CN105607889A (zh) * 2015-10-29 2016-05-25 中国人民解放军国防科学技术大学 Gpdsp共享乘法器结构的定点浮点运算部件

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007079696A (ja) 2005-09-12 2007-03-29 Hitachi Kokusai Electric Inc 浮動小数点数のベクトル演算方法
JP2018010618A (ja) 2016-05-03 2018-01-18 イマジネイション テクノロジーズ リミテッド 畳み込みニューラルネットワークハードウエア構成

Also Published As

Publication number Publication date
US20200089472A1 (en) 2020-03-19
EP3853713A1 (en) 2021-07-28
KR20210057158A (ko) 2021-05-20
US10747502B2 (en) 2020-08-18
CN112740171B (zh) 2024-03-08
JP2021536076A (ja) 2021-12-23
WO2020060769A1 (en) 2020-03-26
CN112740171A (zh) 2021-04-30

Similar Documents

Publication Publication Date Title
JP7476175B2 (ja) 乗算累積回路
US9916131B2 (en) Techniques and devices for performing arithmetic
US6697832B1 (en) Floating-point processor with improved intermediate result handling
US9519460B1 (en) Universal single instruction multiple data multiplier and wide accumulator unit
US5280439A (en) Apparatus for determining booth recoder input control signals
US11816448B2 (en) Compressing like-magnitude partial products in multiply accumulation
US11106431B2 (en) Apparatus and method of fast floating-point adder tree for neural networks
Mehta et al. Implementation of single precision floating point multiplier using karatsuba algorithm
TWI776213B (zh) 用於將輸入集相乘之硬體電路及方法,以及非暫時性機器可讀儲存裝置
US9720648B2 (en) Optimized structure for hexadecimal and binary multiplier array
US9134958B2 (en) Bid to BCD/DPD converters
Prasanna et al. An Efficient Fused Floating-Point Dot Product Unit Using Vedic Mathematics
THUAN A NOVEL QUOTIENT PREDICTION FOR FLOATING-POINT DIVISION
US20220075598A1 (en) Systems and Methods for Numerical Precision in Digital Multiplier Circuitry
Cardarilli et al. RNS implementation of high performance filters for satellite demultiplexing
EP4231134A1 (en) Method and system for calculating dot products
Essam et al. Design and Implementation of Low Power Posit Arithmetic Unit for Efficient Hardware Accelerators
CN116610284A (zh) 用于计算点积的方法和系统
Deepika et al. Low power FIR filter design using truncated multiplier
JP2024517707A (ja) 半導体ハードウェアにおいてニューラルネットワークを処理するための実装および方法
Chittaluri Implementation of area efficient IEEE-754 double precision floating point arithmetic unit using Verilog
Srinu et al. Implementation of high speed signed multiplier using compressor
JYOTHI et al. Implementation of Modified Booth Algorithm for Power Critical Applications
Castellanos Analysis and implementation of decimal arithmetic hardware in nanometer CMOS technology
Mehta et al. Performance Analysis of Floating Point MAC Unit

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20220902

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20230926

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20231017

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20240117

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: 20240417

R150 Certificate of patent or registration of utility model

Ref document number: 7476175

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150