JP2021144427A - 演算器 - Google Patents

演算器 Download PDF

Info

Publication number
JP2021144427A
JP2021144427A JP2020042176A JP2020042176A JP2021144427A JP 2021144427 A JP2021144427 A JP 2021144427A JP 2020042176 A JP2020042176 A JP 2020042176A JP 2020042176 A JP2020042176 A JP 2020042176A JP 2021144427 A JP2021144427 A JP 2021144427A
Authority
JP
Japan
Prior art keywords
unit
multiplication
arithmetic
calculation
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
JP2020042176A
Other languages
English (en)
Other versions
JP7456205B2 (ja
Inventor
洋平 山田
Yohei Yamada
洋平 山田
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.)
Denso Corp
NSI Texe Inc
Original Assignee
Denso Corp
NSI Texe 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 Denso Corp, NSI Texe Inc filed Critical Denso Corp
Priority to JP2020042176A priority Critical patent/JP7456205B2/ja
Publication of JP2021144427A publication Critical patent/JP2021144427A/ja
Application granted granted Critical
Publication of JP7456205B2 publication Critical patent/JP7456205B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Complex Calculations (AREA)

Abstract

【課題】演算器の利用効率を大幅に低下しないようにしつつ、故障検出が可能な演算器を提供する。【解決手段】入力値に係数を乗ずる計算を行う演算器であって、係数の3倍値を記憶する記憶部2と、入力値に記憶部から読み出した3倍値を乗じる乗算部4と、乗算部による演算結果を1/3に除算する除算部8とを備える。乗算部による乗算結果が3の倍数か否かに基づいて、演算結果のエラーをチェックする。【選択図】図1

Description

本発明は、乗算部を備えた演算器に関する。
従来、演算器の故障検出にかかわる技術としては、演算器を二重化して並列動作させ、両者の演算結果を比較することで故障検出を行う手法(例えば、特許文献1)や、同一演算器で入力オペランドを入れ替えて複数回計算させ、両者の計算結果を比較することで故障検出を行う手法(例えば、特許文献2)等が知られていた。
特開平2−187821号公報 特開平3−68019号公報
上記した手法は、いずれも演算器の利用効率が50%に低下する手法であり、実装コストが高いという問題があった。また、演算器と並行してパリティプレディクション回路を設け、演算器の出力結果のパリティとパリティプレディクション回路の出力を比較して故障検出を行う手法が知られているが、これは加算器などパリティプレディクションが可能な演算器にしか適用が困難であった。
そこで、本開示は上記背景に鑑み、演算器の利用効率を大幅に低下しないようにしつつ、故障検出が可能な演算器を提供することを目的とする。
本開示は上記課題を解決するために以下の技術的手段を採用する。特許請求の範囲及びこの項に記載した括弧内の符号は、ひとつの態様として後述する実施の形態に記載の具体的手段との対応関係を示す一例であって、本発明の技術的範囲を限定するものではない。
本開示にかかる演算器は、入力値に係数を乗ずる計算を行う演算器であって、前記入力値に前記係数の3倍値を乗じる乗算部(4)と、前記乗算部による演算結果を1/3に除算する除算部(8)とを備え、前記乗算部による乗算結果が3の倍数か否かに基づいて、演算結果のエラーをチェックする。
本開示に係る演算器は、ニューラルネットワークにおける各レイヤでの演算に用いられる演算器であって、学習によって求めた係数の3倍値を記憶した記憶部と、入力値に前記記憶部から読み出した前記3倍値を乗じる乗算部と、前記乗算部による複数の演算結果を積算する積算部と、前記積算部による演算結果に対して後処理を行う後処理部であって、前記ニューラルネットワークの学習時に用いた乗算パラメータを1/3にして演算を行う後処理部(6)と、前記積算部による演算結果を3で割った余りを演算する剰余演算部(10)とを備え、前記余りが0か否かに基づいて演算結果のエラーをチェックする。
本開示の演算器は、ニューラルネットワークにおける各レイヤでの演算に用いられる演算器であって、前記ニューラルネットワークは、前記各レイヤへの入力として、前のレイヤから伝達された値の3倍値を用いて重み係数を学習したニューラルネットワークであり、学習によって求めた係数の3倍値を記憶した記憶部と、入力値に前記記憶部から読み出した前記3倍値を乗じる乗算部と、前記乗算部による複数の演算結果を積算する積算部と、前記積算部による演算結果を3で割った余りを演算する剰余演算部と、前記積算部による演算結果に対してスケーリングを行う後処理部とを備え、前記余りが0か否かに基づいて演算結果のエラーをチェックする。
本開示は、容易に演算器の故障を検出することができる。
第1の実施の形態の演算器の例を示す図である。 実施の形態の演算器によって演算を行うニューラルネットワークモデルの例を示す図である。 積算結果が16bit幅であった際のModulo3の計算方法の例を示す図である。 第2の実施の形態の演算器の例を示す図である。 第3の実施の形態の演算器の例を示す図である。 第4の実施の形態の演算器の例を示す図である。
以下、本開示の実施の形態にかかる演算器について、図面を参照しながら説明する。
(第1の実施の形態)
図1は、第1の実施の形態の演算器の構成を示す図である。本実施の形態の演算器は、画像認識、物体検知等に使用するニューラルネットワーク処理エンジン全般に適用することができる。
図2は、実施の形態の演算器によって演算を行うニューラルネットワークモデル(以下、「NNモデル」という)の例を示す図である。図2に示すNNモデルは、入力層と出力層との間に、2つの層を有している。第1層は、記載を簡略化している。
第2層は、第2層に対する入力αi(i=1〜3)に重みwi(i=1〜3)を乗じるニューロンと、ニューロンによる計算結果の後処理としてバッチノーマライゼーション(以下、「BN」という)を行うニューロンを有している。本実施の形態では、後処理としてBNを例として説明するが、後処理としては、ReLU、シグモイド関数による活性化処理、スケーリング処理等を行ってもよい。
図2では、一つのニューロンに着目しているが、NNモデルによる計算では各層の各ニューロンについて、入力と重みを乗ずる計算を行う。
図1に戻って、演算器の構成について説明する。第1の実施の形態の演算器は、メモリ1と、メモリ2と、メモリ3と、乗算回路4と、積算回路5と、後処理回路6と、3倍乗算回路7と、1/3除算回路8とを備えている。
メモリ1は、BN処理の係数データを格納するメモリである。メモリ2は重みデータを格納するメモリである。メモリ3はアクティベーションデータ(図2でいう「αi」)を格納するメモリである。乗算回路4は、重みとアクティベーションデータを乗じる乗算回路である。積算回路4の乗算器の出力を積算する積算回路である。後処理回路5は、積算結果に対して、後処理を行う回路である。本実施の形態では、後処理回路6はBN処理を行う。3倍乗算回路7は、入力データに3を乗じ、3倍した結果をメモリ2に対して出力する乗算回路である。1/3除算回路8は入力データを3で除し、1/3の結果を出力する除算回路である。
ここで、乗算回路、除算回路の実装例について説明する。
(3倍乗算回路の実装例)
入力の重みデータをWとすると、3倍した結果は(W<<1)+Wを計算することで容易に得られる。なお、「<<」は左シフトを示す。
(1/3除算回路の実装例)
積算結果をAccとすると、3で除する処理は、(Acc>>4)+(Acc>>6)+(Acc>>8)+・・・という計算を行うことで十分に精度の高い値が得られる。NNモデルの計算処理においては、スケーリングをして小さい数値に丸めることがあることからも分かるとおり、±1ULP程度の精度で計算ができれば十分である。
(3の剰余(Modulo3)計算回路の実装例)
図3は、積算結果が16bit幅であった際のModulo3の計算方法の例を示す図である。まず、計算対象を2bit毎に区切り、それぞれのModulo3を計算する。mod3(4×x)=mod3(mod3(4)×mod3(x))=mod3(1×mod3(x))=mod3(x)であるため、2bit毎に区切って計算したModulo3値が、そのままその2bitから生成される剰余となる。得られたModulo3値を、さらに隣接するModulo3値同士で加算し、その結果のModulo3を計算する。最終的に項が1つになるまで隣接Modulo3同士の加算を繰り返す。
以上のように構成された演算器は、次のように動作する。
(1)処理対象のネットワーク層のBN係数を外部よりロードし、メモリ1に書き込む。
(2)処理対象のネットワーク層の重みデータを外部よりロードし、3倍乗算回路7にて3を乗じた後、メモリ2に書き込む。
(3)処理対象のネットワーク層の入力アクティベーションデータを外部よりロードし、メモリ3に書き込む。
(4)重みとアクティベーションデータをそれぞれメモリ2、メモリ3から読み出し、乗算回路4に入力して両者を掛け合わせる。この乗算は複数の重みおよびアクティベーションデータデータに対して同時に並行して行われることもある。
(5)(4)で掛け合わせた結果を積算回路に入力して積算する。処理対象のネットワーク層の規模によって(4)と(5)の処理は繰り返し行われる。
(6)(5)の積算結果を1/3除算回路8により3で除すると同時に3で除した余り(Modulo3)を求める。積算結果のModulo3が0でなかった場合には、何らかの障害が発生したと判断し、外部にエラー発生を報告する。
(7)(6)の結果を後処理回路に入力し、後処理を行う。本実施の形態では、後処理としてバッチノーマライゼーションを行う。
(8)(6)の後処理結果をメモリ3に書き込む。
(9)処理対象のネットワーク層の構成に応じて(1)〜(7)の動作を繰り返し、得られたアクティベーションをメモリ3より外部に出力する。
第1の実施の形態の演算器は、演算器への入力値を元の値の3倍の値とし、常に演算結果が3の倍数となるようにすることで、容易に演算器の1bit反転エラー故障検出ができる。これはModulo3には、3の倍数同士の乗算、加減算結果も3の倍数となるという特性があるからである。そして、あるデータのModulo3値は、いずれの1bitが反転しても異なる値となるという特性もあるため、演算結果のModulo3が0でない場合には、エラーがあると判定できる。
本実施の形態の演算器は、NNモデルの演算に好適である。NNモデルの主要な演算は、多数の入力/出力チャネルの組み合わせに対して、各入力/出力チャネルの組み合わせに対応する重みと入力アクティベーションを乗じ、積算するという処理だからである。本実施の形態の演算器は、複数ビットが反転した場合にたまたまModulo3が0になることがあり、その場合にはエラーを検出しないが、例えば動画中の物体認識をニューラルネットワークで行う場合には、前後のフレームの認識結果と比較が可能であるので、一部のフレームの処理にエラーが生じても問題とならないことが多い。各フレームに対して繰り返し処理を行う中でエラーを判定できれば、演算器の故障を検出できる。
(第2の実施の形態)
図4は、第2の実施の形態の演算器の例を示す図である。第2の実施の形態の演算器の基本的な構成は第1の実施の形態と同じであるが、ハードウェアで3倍乗算回路を実装する代わりに、あらかじめ3の倍数であることを保証した重みデータを外部メモリ9に置く。これにより、3倍乗算回路を実装することなく、第1の実施の形態と同様の機能を実現することができる。
(第3の実施の形態)
図5は、第3の実施の形態の演算器の例を示す図である。第3の実施の形態の演算器において、後処理に含まれるバッチノーマライゼーション処理は、あらかじめ計算されたGradient(G)及びBias(B)の係数を用い、積算結果Accに対してG×Acc+Bの計算を行うことで行われる。第3の実施の形態の演算器では、バッチノーマライゼーションのGradientにあらかじめ1/3を乗じた値を外部メモリ9から読み出してメモリ1上に置いておく。これにより、後処理回路6でGraidentを乗じたときに演算結果が1/3されることになるから、除算回路を実装することなく第1の実施の形態の演算器と同様の機能を実現することができる。
ただし、第1の実施の形態においてModulo3を演算していた除算回路に代えて、第3の実施の形態の演算器は、積算回路5からの出力に対し、Modulo3を演算するModulo3回路10を備える。図3に示したように、Modulo3を演算する回路は容易に実装できる。
(第4の実施の形態)
図6は、第4の実施の形態の演算器の例を示す図である。本実施の形態では、後処理回路6は、積算結果を出力アクティベーションのbit幅に合わせるスケーリングという処理を行う。ここで、スケーリングについて説明する。積算回路5による積算結果は重みとアクティベーションの乗算結果を積算して得られるため、入力アクティベーションに比べて非常に大きな値となる。スケーリングとは、積算結果に小さな値を掛け、出力アクティベーションのbit幅に収まる範囲に縮小させる処理である。一般にスケーリングの係数は2のべき乗に限定され、積算結果の右シフトとして実装される。
第4の実施の形態の演算器では、NNモデルの学習時にあらかじめ重みが3倍されることを前提として重みおよびスケーリング係数を決定する。すなわち、学習を行う際に、各レイヤに入力する値として、前のレイヤから伝達された値を3倍した3倍値を用いる。これにより、後処理回路6のスケーリング係数が、重みを3倍した場合を前提とした係数となる。なぜなら、入力を3倍することと重みを3倍することは同じ結果になるからである。この構成により、推論時に重みを3倍したときに後処理回路6が適切に機能し、除算回路を実装することなく、第1の実施の形態の演算器と同様の機能を実現することができる。
本開示は、乗算を行う演算器として有用である。
1〜3・・・メモリ、4・・・乗算回路、5・・・積算回路、6・・・後処理回路、
7・・・3倍乗算回路、8・・・1/3除算回路、9・・・外部メモリ、
10・・・Modulo3回路。

Claims (8)

  1. 入力値に係数を乗ずる計算を行う演算器であって、
    前記入力値に前記係数の3倍値を乗じる乗算部(4)と、
    前記乗算部による演算結果を1/3に除算する除算部(8)と、
    を備え、
    前記乗算部による乗算結果が3の倍数か否かに基づいて、演算結果のエラーをチェックする演算器。
  2. 前記乗算部による複数の演算結果を積算する積算部(5)を備え、
    前記除算部は、前記積算部による演算結果を1/3に除算する請求項1に記載の演算器。
  3. 前記係数を3倍にする3倍乗算部(7)を備え、
    前記乗算部は、前記3倍乗算部による出力を前記入力値に乗ずる請求項1または2に記載の演算器。
  4. あらかじめ演算された前記係数の3倍値を記憶部(2)に記憶しておき、
    前記乗算部は、前記記憶部に記憶された前記3倍値を前記入力値に乗ずる請求項1または2に記載の演算器。
  5. 前記演算器は、ニューラルネットワークの各レイヤでの演算において、前記各レイヤへの入力値に重み係数を乗じて積算する演算に用いられる請求項1から4のいずれかに記載の演算器。
  6. ニューラルネットワークにおける各レイヤでの演算に用いられる演算器であって、
    学習によって求めた係数の3倍値を記憶した記憶部と、
    入力値に前記記憶部から読み出した前記3倍値を乗じる乗算部と、
    前記乗算部による複数の演算結果を積算する積算部と、
    前記積算部による演算結果に対して後処理を行う後処理部であって、前記ニューラルネットワークの学習時に用いた乗算パラメータを1/3にして演算を行う後処理部(6)と、
    前記積算部による演算結果を3で割った余りを演算する剰余演算部(10)と、
    を備え、
    前記余りが0か否かに基づいて演算結果のエラーをチェックする演算器。
  7. ニューラルネットワークにおける各レイヤでの演算に用いられる演算器であって、前記ニューラルネットワークは、前記各レイヤへの入力として、前のレイヤから伝達された値の3倍値を用いて重み係数を学習したニューラルネットワークであり、
    学習によって求めた係数の3倍値を記憶した記憶部と、
    入力値に前記記憶部から読み出した前記3倍値を乗じる乗算部と、
    前記乗算部による複数の演算結果を積算する積算部と、
    前記積算部による演算結果を3で割った余りを演算する剰余演算部と、
    前記積算部による演算結果に対してスケーリングを行う後処理部と、
    を備え、
    前記余りが0か否かに基づいて演算結果のエラーをチェックする演算器。
  8. 入力値に係数を乗ずる計算を行う演算器において、
    3の倍数の係数を記憶する記憶部と、
    前記入力値に前記記憶部から読み出した係数を乗じる乗算部と、
    演算結果が3の倍数か否かに基づいて、演算結果のエラーをチェックするエラー検出部と、
    を備えた演算器。
JP2020042176A 2020-03-11 2020-03-11 演算器 Active JP7456205B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2020042176A JP7456205B2 (ja) 2020-03-11 2020-03-11 演算器

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2020042176A JP7456205B2 (ja) 2020-03-11 2020-03-11 演算器

Publications (2)

Publication Number Publication Date
JP2021144427A true JP2021144427A (ja) 2021-09-24
JP7456205B2 JP7456205B2 (ja) 2024-03-27

Family

ID=77766705

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2020042176A Active JP7456205B2 (ja) 2020-03-11 2020-03-11 演算器

Country Status (1)

Country Link
JP (1) JP7456205B2 (ja)

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003241659A (ja) 2002-02-22 2003-08-29 Hitachi Ltd 情報処理方法

Also Published As

Publication number Publication date
JP7456205B2 (ja) 2024-03-27

Similar Documents

Publication Publication Date Title
US11216721B2 (en) Method for calculating a neuron layer of a multi-layer perceptron model with simplified activation function
US11475284B2 (en) Information processing apparatus, neural network program, and processing method for neural network
CN111695671B (zh) 训练神经网络的方法及装置、电子设备
JP7231731B2 (ja) 適応量子化方法及び装置、デバイス、媒体
US20220004884A1 (en) Convolutional Neural Network Computing Acceleration Method and Apparatus, Device, and Medium
EP3782019B1 (en) Multi-input floating-point adder
KR100398859B1 (ko) 데이터 연산 처리 장치
KR20210070262A (ko) 파이프라인 구조를 가지는 인공신경망용 연산 가속 장치
WO2021041139A1 (en) Signed multiword multiplier
Kaloorazi et al. Randomized truncated pivoted QLP factorization for low-rank matrix recovery
JP2021144427A (ja) 演算器
CN116070474B (zh) 一种面向ai浮点融合运算单元的验证激励产生方法
Ahlbrandt et al. Floquet theory for time scales and Putzer representations of matrix logarithms
US20230401420A1 (en) Compiling asymmetrically-quantized neural network models for deep learning acceleration
US20220291899A1 (en) Processing unit, method and computer program for multiplication
US20220156567A1 (en) Neural network processing unit for hybrid and mixed precision computing
JP6734938B2 (ja) ニューラルネットワーク回路
CN113672196B (zh) 一种基于单数字信号处理单元的双乘法计算装置和方法
CN110770696B (zh) 基于贡献估计的处理核心操作抑制
JP7136937B2 (ja) 少なくとも2つの被乗数を乗算するための計算ユニット、方法及びコンピュータプログラム
EP4336344A1 (en) Calculation unit for multiplication and accumulation operations
CN112860218A (zh) 用于fp16浮点数据和int8整型数据运算的混合精度运算器
JP3659408B2 (ja) データ演算処理装置及びデータ演算処理プログラム
JP2013069000A (ja) パリティ予測器、キャリーレス乗算器、及び演算処理装置
US20230367356A1 (en) Digital signal processing device and method of calculating softmax performed by the same

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20230308

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20231205

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20231206

A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A712

Effective date: 20240201

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20240202

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20240226

R151 Written notification of patent or utility model registration

Ref document number: 7456205

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151