(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-01-29
(45)【発行日】2024-02-06
(54)【発明の名称】神経網加速装置及びその動作方法
(51)【国際特許分類】
G06N 3/063 20230101AFI20240130BHJP
G11C 11/54 20060101ALI20240130BHJP
【FI】
G06N3/063
G11C11/54
(21)【出願番号】P 2019187521
(22)【出願日】2019-10-11
【審査請求日】2022-08-31
(31)【優先権主張番号】10-2019-0031611
(32)【優先日】2019-03-20
(33)【優先権主張国・地域又は機関】KR
(73)【特許権者】
【識別番号】310024033
【氏名又は名称】エスケーハイニックス株式会社
【氏名又は名称原語表記】SK hynix Inc.
【住所又は居所原語表記】2091, Gyeongchung-daero,Bubal-eub,Icheon-si,Gyeonggi-do,Korea
(74)【代理人】
【識別番号】100118913
【氏名又は名称】上田 邦生
(74)【代理人】
【識別番号】100142789
【氏名又は名称】柳 順一郎
(74)【代理人】
【識別番号】100163050
【氏名又は名称】小栗 眞由美
(74)【代理人】
【識別番号】100201466
【氏名又は名称】竹内 邦彦
(72)【発明者】
【氏名】ジャン, ジェ ヒョク
【審査官】円子 英紀
(56)【参考文献】
【文献】特開2014-093085(JP,A)
【文献】特開平07-131786(JP,A)
【文献】国際公開第2017/214728(WO,A1)
【文献】国際公開第2018/080624(WO,A1)
【文献】米国特許出願公開第2016/0358069(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06N 3/00-99/00
G06F 18/00-18/40
G06F 17/00-17/18
G11C 11/54
(57)【特許請求の範囲】
【請求項1】
第1及び第2の入力信号を既定の条件によって変換し、変換された第1及び第2の演算入力信号の各々に対応するゼロフラッグ信号及びワンフラッグ信号を生成して、前記第1及び第2の演算入力信号と共に出力する信号感知器と、
前記信号感知器から伝達された複数のフラッグ信号によって前記第1及び第2の演算入力信号を格納するスクラッチパッドのリード、並びに前記第1及び第2の演算入力信号に対する演算処理手順を変更するPEクラスターと、
を備え、
前記信号感知器が、
既定の基準によって前記第1及び第2の入力信号を変換又は維持するが、前記第1及び第2の入力信号の少なくとも一つが0でなく、前記第2の入力信号が1又は-1である場合、前記第2の演算入力信号を1に統一させ、前記第1の入力信号が1又は-1である場合、前記第1の演算入力信号を1に統一させることを特徴とする神経網加速装置。
【請求項2】
前記PEクラスターが、
前記信号感知器から伝達された前記ゼロフラッグ信号のロジック値が第1の値である場合、前記第1及び第2の演算入力信号を格納するスクラッチパッドのリード、並びに前記第1及び第2の演算入力信号に対する演算を全部スキップし、
前記ワンフラッグ信
号のロジック値の少なくとも一つが第1の値である場合、前記スクラッチパッドのリードアクセスを一部スキップし、乗算をスキップし、加算を遂行することを特徴とする請求項1に記載の神経網加速装置。
【請求項3】
前記PEクラスターが、
前記ワンフラッグ信
号のロジック値の一つが第1の値である場合、前記ワンフラッグ信号が発生した前記スクラッチパッドのリードアクセスをスキップし、乗算をスキップし、加算を遂行することを特徴とする請求項2に記載の神経網加速装置。
【請求項4】
前記PEクラスターが、
前記第1及び第2の入力信号の少なくとも一つが0である場合、前記第1及び第2の演算入力信号を格納するスクラッチパッドのリード、並びに前記第1及び第2の演算入力信号に対する演算を全部スキップすることを特徴とする請求項1に記載の神経網加速装置。
【請求項5】
前記第1の入力信号がフィーチャー値であり、第2の入力信号が加重値であり、
前記信号感知器は、第1の基準から第4の基準によって前記第1及び第2の入力信号を変換又は維持する信号変換器を備え、
前記信号変換器が、前記第1の基準によって前記第1及び第2の入力信号の少なくとも一つが0である場合、前記第1及び第2の演算入力信号を前記第1及び第2の入力信号と同一に維持し、第2の基準によって前記第2の演算入力信号が1に統一されるように前記第1及び第2の入力信号を変換し、第3の基準によって前記第1の演算入力信号が1に統一されるように前記第1及び第2の入力信号を変換し、前記第4の基準によって前記第1及び第2の入力信号が他の整数である場合、前記第1及び第2の演算入力信号を前記第1及び第2の入力信号と同一に維持することを特徴とする請求項1に記載の神経網加速装置。
【請求項6】
前記信号感知器が、
前記信号変換器から伝達された前記第1の演算入力信号に対する第1のゼロフラッグ信号及び第1のワンフラッグ信号を生成して、各々ルックアップテーブル及び前記PEクラスターに伝達する第1の信号感知器と、
前記信号変換器から伝達された前記第2の演算入力信号に対する第2のゼロフラッグ信号及び第2のワンフラッグ信号を生成して、各々前記ルックアップテーブル及び前記PEクラスターに伝達する第2の信号感知器と、
前記第1のゼロフラッグ信号及び前記第2のゼロフラッグ信号に対応する第3のゼロフラッグ信号を前記PEクラスターに出力するルックアップテーブルと、
を備えることを特徴とする請求項5に記載の神経網加速装置。
【請求項7】
前記ルックアップテーブルが、
前記第1のゼロフラッグ信号及び前記第2のゼロフラッグ信号のロジック値の少なくとも一つが第1の値であれば、前記第3のゼロフラッグ信号のロジック値を第1の値として出力し、残りは第2の値として出力することを特徴とする請求項6に記載の神経網加速装置。
【請求項8】
前記PEクラスターが、
前記第1及び第2の演算入力信号を区分して格納する第1及び第2のスクラッチパッドと、
前記第3のゼロフラッグ信号、並びに第1及び第2のワンフラッグ信号を各々区分して格納するレジスタアレイと、
前記レジスタアレイに格納されたフラッグ信号を参考して、前記第1及び第2のスクラッチパッドのリード又は演算器の演算処理手順を制御するPEコントローラと、
前記PEコントローラから伝達される制御信号によって乗算及び加算を処理する演算器と、を備えることを特徴とする、請求項7に記載の神経網加速装置。
【請求項9】
前記PEコントローラが、
前記第3のゼロフラッグ信号のロジック値が第1の値である場合、前記第1及び第2のスクラッチパッドのリードをスキップし、前記第1及び第2の演算入力信号に対する乗算及び加算をスキップするように、乗算入力維持信号及び乗算出力維持信号を前記演算器に出力し、
前記ワンフラッグ信
号のロジック値の少なくとも一つが第1の値である場合、ワンフラッグ信号のロジック値が第1の値である第1又は第2のスクラッチパッドのリードをスキップし、演算入力信号に対する乗算をスキップするように、乗算入力維持信号を前記演算器に出力することを特徴する請求項8に記載の神経網加速装置。
【請求項10】
前記演算器が、
前記PEコントローラから乗算入力維持信号がイネーブルされれば、前記第1及び第2の演算入力信号の乗算をスキップし、以前の乗算結果を維持させて、現在の乗算結果として出力する乗算回路と、
前記PEコントローラから加算出力維持信号がイネーブルされれば、前記現在の乗算結果と以前の加算結果との加算をスキップし、前記以前の加算結果を現在の加算結果として出力する加算回路と、
を備えることを特徴とする請求項9に記載の神経網加速装置。
【請求項11】
前記乗算回路が、前記乗算入力維持信号がディセーブルされれば、前記第1及び第2の演算入力信号を乗算して前記現在の乗算結果として出力することを特徴とする請求項10に記載の神経網加速装置。
【請求項12】
前記加算回路が、前記加算出力維持信号がディセーブルされれば、前記現在の乗算結果及び前記以前の加算結果を加算して、前記現在の加算結果として出力することを特徴とする請求項10に記載の神経網加速装置。
【請求項13】
第1及び第2の入力信号を既定の条件によって変換して、第1及び第2の演算入力信号を生成するステップと、
前記第1及び第2の演算入力信号の各々に対応するゼロフラッグ信号及びワンフラッグ信号を生成するステップと、
前記ゼロフラッグ信号及び前記ワンフラッグ信号に基づき、前記第1及び第2の演算入力信号を格納するスクラッチパッドのリード、並びに前記第1及び第2の演算入力信号に対する演算処理手順を変更するステップと、
を含み、
前記第1及び第2の演算入力信号を生成するステップにおいて、
前記第1及び第2の入力信号の少なくとも一つが0であるか否かを優先的に確認し、前記第1及び第2の入力信号の少なくとも一つが0でなく、前記第2の入力信号が1又は-1である場合、前記第2の演算入力信号を1に統一させ、前記第1の入力信号が1又は-1である場合、前記第1の演算入力信号を1に統一させることを特徴とする神経網加速装置の動作方法。
【請求項14】
前記演算処理手順を変更するステップが、
前記ゼロフラッグ信号のロジック値が第1の値である場合、前記第1及び第2の演算入力信号を格納するスクラッチパッドのリード、並びに前記第1及び第2の演算入力信号に対する演算を全部スキップし、
前記ワンフラッグ信
号のロジック値の少なくとも一つが第1の値である場合、前記スクラッチパッドのリードアクセスを一部スキップし、乗算をスキップし、加算を遂行することを特徴とする請求項13に記載の神経網加速装置の動作方法。
【請求項15】
前記ワンフラッグ信
号のロジック値の一つが第1の値である場合、該ワンフラッグ信号が発生した前記スクラッチパッドのリードアクセスをスキップし、乗算をスキップし、加算を遂行することを特徴とする請求項14に記載の神経網加速装置の動作方法。
【請求項16】
前記ゼロフラッグ信号及びワンフラッグ信号を生成するステップが、
前記第1の演算入力信号に対応する第1のゼロフラッグ信号と、第1のワンフラッグ信号とを生成するが、第1の演算入力信号のロジック値が第2の値であれば、第1のゼロフラッグ信号のロジック値を第1の値、第1のワンフラッグ信号のロジック値を第2の値として生成するステップと、
前記第2の演算入力信号に対応する第2のゼロフラッグ信号と、第2のワンフラッグ信号とを生成するが、第2の演算入力信号のロジック値が第2の値であれば、第2のゼロフラッグ信号のロジック値を第1の値、第2のワンフラッグ信号のロジック値を第2の値として生成するステップと、
を含むことを特徴とする請求項13に記載の神経網加速装置の動作方法。
【請求項17】
前記第1のゼロフラッグ信号及び前記第2のゼロフラッグ信号のロジック値の少なくとも一つが第1の値であれば
、第3のゼロフラッグ信号のロジック値を第1の値として出力し、残りは第2の値として出力するステップを含む請求項16に記載の神経網加速装置の動作方法。
【請求項18】
前記第1の入力信号がフィーチャー値であり、第2の入力信号が加重値であり、
前記第1及び第2の演算入力信号を生成するステップが、
前記第1及び第2の入力信号の少なくとも一つが0であるか否かを優先的に確認し、前記第1及び第2の入力信号の少なくとも一つが0である場合、前記第1及び第2の演算入力信号を前記第1及び第2の入力信号と同一に維持するステップと、
前記第2の入力信号が1又は-1である場合、前記第2の演算入力信号が1に統一されるように、前記第1及び第2の入力信号を変換するステップと、
前記第1の入力信号が1又は-1である場合、前記第1の演算入力信号が1に統一されるように、前記第1及び第2の入力信号を変換するステップと、
前記第1及び第2の入力信号が他の整数である場合、前記第1及び第2の演算入力信号を前記第1及び第2の入力信号と同一に維持するステップと、
を含む請求項13に記載の神経網加速装置の動作方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、神経網加速装置及びその動作方法に関する。
【背景技術】
【0002】
ANN(Artificial Neural Network)分野のFPGA加速器(Field Programmable Gate Array Accelerator)は、ソフトウェアで処理しているMLP(Multi-Layer Perceptron)やCNN(Convolutional Neural Network)などを独立的なハードウェアモジュールで具現できる。これにより、FPGA加速器は、CPU(Central Processing Unit)の負担を低減しながら、関連演算の性能が極大化できるアプリケーションであり得る。このようなアプリケーションは、主にシストリックアレイ(Systolic Array)構造又はPEアレイ(Processing Elements Array)構造で具現できる。
【0003】
前述のシストリックアレイ構造は、格子状のアレイを配列し、クロックサイクルごとに行列積(Matrix Multiplication)を順次進行するアレイ構造であり得る。また、PEアレイ構造は、各処理要素セル(Processing Elements Cell)に多様なセルが連結し得るポート(Port)を備えてデータを転送する構造であり得る。
【発明の概要】
【発明が解決しようとする課題】
【0004】
本発明の目的は、演算能力が向上した神経網加速装置及びその動作方法を提供することにある。
【課題を解決するための手段】
【0005】
本発明の実施例に係る神経網加速装置は、第1及び第2の入力信号を既定の条件によって変換し、変換された第1及び第2の演算入力信号の各々に対応するゼロ(Zero)フラッグ信号及びワン(One)フラッグ信号を生成して、前記第1及び第2の演算入力信号と共に出力する信号感知器と、前記信号感知器から伝達された複数のフラッグ信号によって前記第1及び第2の演算入力信号を格納するスクラッチパッドのリード、並びに前記第1及び第2の演算入力信号に対する演算処理手順を変更するPEクラスターと、を備え、前記信号感知器は、既定の基準によって前記第1及び第2の入力信号を変換又は維持するが、前記第1及び第2の入力信号の少なくとも一つが0(Zero)でなく、前記第2の入力信号が1又は-1である場合、前記第2の演算入力信号を1に統一させ、前記第1の入力信号が1又は-1である場合、前記第1の演算入力信号を1に統一させる。
【0006】
本発明の実施例に係る神経網加速装置の動作方法は、第1及び第2の入力信号を既定の条件によって変換して、第1及び第2の演算入力信号を生成するステップと、前記第1及び第2の演算入力信号の各々に対応するゼロ(Zero)フラッグ信号及びワン(One)フラッグ信号を生成するステップと、前記ゼロフラッグ信号及び前記ワンフラッグ信号に基づき、前記第1及び第2の演算入力信号を格納するスクラッチパッドのリード、並びに前記第1及び第2の演算入力信号に対する演算処理手順を変更するステップと、を含み、前記第1及び第2の演算入力信号を生成するステップにおいて、前記第1及び第2の入力信号の少なくとも一つが0(Zero)であるか否かを優先的に確認し、前記第1及び第2の入力信号の少なくとも一つが0でなく、前記第2の入力信号が1又は-1である場合、前記第2の演算入力信号を1に統一させ、前記第1の入力信号が1又は-1である場合、前記第1の演算入力信号を1に統一させる。
【発明の効果】
【0007】
本発明によれば、特定値に対するデータ経路ゲーティング(Data Path Gating)、MAC(Multiplier-Accumulator)演算スキップ及びメモリリードスキップにより低電力モードで駆動することで、電力消耗量の節減を図ることができる。
【0008】
また、本発明の低電力モード演算技術は、通常のCNN(Convolutional Neural Network)だけでなく、BNN(Binarized Neural Network)などのようなネットワークにも適用できるため、MAC演算の効率性が向上できる。
【図面の簡単な説明】
【0009】
【
図1】本発明の実施例に係る神経網加速装置の周辺構成図を示す図である。
【
図2】本発明の実施例に係る神経網加速装置の構成を示す図である。
【
図3】本発明の実施例に係る信号感知器の構成を示す詳細図である。
【
図4】本発明の実施例に係る信号感知器の動作を説明するための図である。
【
図5】
図4のルックアップテーブルの動作を説明するための例示図である。
【
図6】本発明の実施例に係るPEクラスターの構成を示す図である。
【
図7】本発明の実施例に係るPEクラスターの動作を説明するための図である。
【
図8】本発明の実施例に係る神経網加速装置の動作を説明するための真理表を示す図である。
【
図9】本発明の実施例に係る神経網加速装置の動作を説明するための真理表を示す図である。
【
図10】本発明の実施例に係る神経網加速装置の動作を説明するための真理表を示す図である。
【
図11】本発明の実施例に係る神経網加速装置の動作方法を示すフローチャートである。
【
図12】本発明の実施例に係る信号変換方法を説明するためのフローチャートである。
【
図13】本発明の実施例に係るフラッグ信号を生成する方法を説明するためのフローチャートである。
【
図14】本発明の実施例に係るスクラッチパッドのリード及び演算処理手順を制御する方法を説明するためのフローチャートである。
【発明を実施するための形態】
【0010】
以下、添付図面に基づき、本発明の好適な実施例を詳細に説明する。
【0011】
図1は、本発明の実施例に係る神経網加速装置の周辺構成図を示す図である。
【0012】
図1に示されるように、本発明の実施例に係る神経網加速装置100は、ホスト110を支援するための構成であって、ホスト110から高速インターフェース120を介して伝達される信号によって内部メモリ160から伝達される第1及び第2の入力信号(Feature、Weight)を受信して演算を遂行した後、結果値を出力フィーチャー生成器(Output Feature Generator)170に伝達できる。
【0013】
このとき、ホスト110から伝達される信号は、外部メモリ130、メモリインターフェース140、バスインターフェース150及び内部メモリ160を介して神経網加速装置100に伝達されたり、或いは、高速インターフェース120、バスインターフェース150及び内部メモリ160を介して伝達されたりする。ここで、ホスト110から伝達される信号が外部メモリ130に格納される時も、高速インターフェース120及びバスインターフェース150を介して伝達されることは自明である。
【0014】
前述の外部メモリ130はDRAM(Dynamic Random Access Memory)で具現でき、内部メモリ160はSRAM(Static Random Access Memory)で具現できるが、これに限定されない。また、高速インターフェース120はPCIeで具現できるが、これに限定されない。
【0015】
前述の神経網加速装置100は、第1及び第2の入力信号を感知して、PEクラスター(Processing Element Cluster)300におけるメモリリードアクセス及び演算処理を全部又は部分的にスキップできるように決定するためのフラッグ信号を生成する信号感知器200と、信号感知器200から伝達されるフラッグ信号を参照して、メモリリードアクセス及び演算処理手順を制御するPEクラスター300とを備えることができる。
【0016】
前記PEクラスター300は、入力(Input)が変化すれば、スイッチング電流(Switching Current)が発生するが、入力が変化しないようにしてスイッチング電流の発生を抑制するために、スイッチングPEクラスター300の演算パワー消耗量が低減されることがある。すなわち、入力段にゼロフラッグ信号のロジック値が第1の値として入力されるとき、PEクラスター300のパワー消耗量が低減される。例えば、第1の値はロジック値1(One)の場合を意味し、これに限定されないことは当然である。
【0017】
具体的には、神経網加速装置100に入力信号として0(Zero)が入力される場合、信号感知器200で入力信号が0であることを示すフラッグ信号が生成される。このとき、入力信号が0であることを示すフラッグ信号は、PEクラスター300の演算器における演算をスキップするか否かを決定するのに活用できる。また、神経網加速装置100は、入力信号として0(Zero)が入力されない場合、演算器における乗算及び加算が遂行できる。これに関する詳細な説明は後述する。
【0018】
図2は、本発明の実施例による神経網加速装置の構成を示す図である。
【0019】
図2に示されるように、神経網加速装置100は、信号感知器200と、PEクラスター300と、出力フィーチャー生成器170とを備えることができる。
【0020】
信号感知器200は、低電力(Low-Power)PE(Processing Element)動作のためのデータ変換及びフラッグ信号生成を遂行する前処理構成であり得る。
【0021】
信号感知器200は、第1及び第2の入力信号を既定の条件によって変換し、変換された第1及び第2の演算入力信号の各々に対応するゼロ(Zero)フラッグ信号及びワン(One)フラッグ信号を生成して、前記第1及び第2の演算入力信号と共にPEクラスター300に出力できる。
【0022】
PEクラスター300は、信号感知器200から伝達される複数のフラッグ信号によって、第1及び第2の演算入力信号を格納するスクラッチパッド(
図6の310)のリード、並びに第1及び第2の演算入力信号に対する演算処理手順を変更できる。
【0023】
PEクラスター300は、信号感知器200から伝達されるゼロフラッグ信号のロジック値が第1の値である場合、第1及び第2の演算入力信号を格納するスクラッチパッド(
図6の310)のリード、並びに第1及び第2の演算入力信号に対する演算を全部スキップできる。例えば、第1の値はロジック値1(One)である場合を意味し、これに限定されないことは当然である。
【0024】
また、PEクラスター300は、ワンフラッグ信号等のロジック値の少なくとも一つが第1の値である場合、スクラッチパッド(
図6の310)のリードアクセスを一部スキップし、乗算をスキップし、加算を遂行できる。例えば、第1の値はロジック値1(One)である場合を意味し、これに限定されないことは当然である。
【0025】
また、PEクラスター300は、ワンフラッグ信号等のロジック値の一つが第1の値である場合、該ワンフラッグ信号が発生したスクラッチパッド(
図6の310)のリードアクセスをスキップし、乗算をスキップし、加算を遂行できる。
【0026】
また、PEクラスター300は、第1及び第2の入力信号の少なくとも一つが0(Zero)である場合、第1及び第2の演算入力信号を格納するスクラッチパッド(
図6の310)のリード、並びに第1及び第2の演算入力信号に対する演算を全部スキップできる。
【0027】
出力フィーチャー生成器170は、第1及び第2の入力信号(Feature、Weight)を受信して演算を遂行した後、結果値をPEクラスター300から受信し、結果値に対する活性化関数(Activation Function)を適用して非線形値に変更し、プーリング(pooling)処理して内部メモリ1600に伝達したり、或いは、ホスト110に伝達したりする。このとき、出力フィーチャー生成器170が演算の結果値を内部メモリ160又はホスト110に伝達することに限定されず、必要に応じて他の構成によって伝達することもできる。
【0028】
前述の信号感知器200及びPEクラスター300の詳細な説明は後述する。
【0029】
図3は、本発明の実施例に係る信号感知器の構成を示す詳細図である。
【0030】
図3を、本発明の実施例による信号感知器の動作を説明するための
図4と、
図4のルックアップテーブルの動作を説明するための例示図である
図5と、本発明の実施例による神経網加速装置の動作を説明するための真理表を示す
図8とを参照して説明する。
【0031】
図3に示されるように、信号感知器200は、信号変換器211と、第1の信号感知器213と、第2の信号感知器215と、ルックアップテーブル(Lookup Table;LUT)217とを備えることができる。
【0032】
信号変換器211は、第1の基準によって第1及び第2の入力信号の少なくとも一つが0(Zero)である場合、第1及び第2の演算入力信号を前記第1及び第2の入力信号と同一に維持できる。前記第1の入力信号はフィーチャー(Feature)値であり、第2の入力信号は加重値(Weight)であり、以下でも同様に適用できる。
【0033】
前記第1及び第2の演算入力信号は、第1及び第2の入力信号が信号変換器211によって変換された信号を意味するものと定義する。
【0034】
図8に示されるように、信号変換器211は、フィーチャー(Feature)値と加重値(Weight)とが、(0、-1)、(-1、0)、(0、0)、(1、0)、(他の整数値、0)、(-(他の整数値)、0)、(0、1)、(0、他の整数値)、(0、-(他の整数値))である場合、第1及び第2の演算入力信号(cf、cw)を第1及び第2の入力信号としてそのまま維持できる。このとき、他の整数値を1、0、-1を除いた整数値を意味するものと定義する。
図8のcfは変換されたフィーチャー値を意味するもので、第1の演算入力信号であり得、cwは変換された加重値を意味するもので、第2の演算入力信号であり得る。
【0035】
また、信号変換器211は、第2の基準によって第2の入力信号が1又は-1である場合、第2の演算入力信号が1に統一されるように前記第1及び第2の入力信号を変換できる。
【0036】
図8に示されるように、信号変換器211は、フィーチャー値と加重値とが(-1、-1)、(1、-1)、(他の整数値、-1)、(-(他の整数値)、-1)、(-1、1)、(1、1)、(他の整数値、1)、(-(他の整数値)、1)である場合、加重値が-1であるフィーチャー値及び加重値の対を各々変換して加重値を1に統一させ、加重値が1であるフィーチャー値及び加重値の対は以前値をそのまま維持して、第1及び第2の演算入力信号を生成できる。
【0037】
このとき、信号変換器211が1又は-1の形態の入力信号を1に統一された形態の演算入力信号に変換するため、PEクラスター300における関連演算の活用が極大し得るという効果が期待できる。
【0038】
例えば、BNN(Binarized Neural Network)は、加重値として-1又は1を使用したり、或いは、-1、0又は1を使用したりするが、信号変換器211が1又は-1のような形態の入力信号を1に単純化できる。これにより、BNN(Binarized Neural Network)の場合には、PEクラスター300で1値に対するメモリリードアクセススキップ及び演算スキップの効果が期待できる。具体的に、 BNN(Binarized Neural Network)は、他のネットワークよりも絶対値が1であるパケットが多数発生するネットワークであるが、1又は-1のような形態の入力信号を1に単純化するため、0だけでなく1に対するスキップ効果も期待できる。
【0039】
また、信号変換器211は、第3の基準によって第1の入力信号が1又は-1である場合、第1の演算入力信号が1に統一されるように、第1及び第2の入力信号を変換できる。
【0040】
図8に示すように、信号変化器211は、フィーチャー値と加重値とが(-1、他の整数値)、(1、他の整数値)、(-1、-(他の整数値))、(1、-(他の整数値))である場合、フィーチャー値が1に統一されるように、フィーチャー値が1であるフィーチャー値及び加重値の対は以前値をそのまま維持し、フィーチャー値が-1であるフィーチャー値及び加重値の対は各々変換し、フィーチャー値が1に統一されるように変換して、第1及び第2の演算入力信号を生成できる。
【0041】
また、信号変換器211は、第4の基準によって第1及び第2の入力信号が他の整数である場合、第1及び第2の演算入力信号を第1及び第2の入力信号と同一に維持するように変換できる。
【0042】
図8に示されるように、信号変換器211は、フィーチャー値と加重値とが(他の整数値、他の整数値)、(-(他の整数値)、他の整数値)、(他の整数値、-(他の整数値))、(-(他の整数値)、-(他の整数値))である場合、フィーチャー値及び加重値の以前値をそのまま維持して、第1及び第2の演算入力信号を生成できる。
【0043】
前述の第1の基準、第2の基準、第3の基準及び第4の基準は、第1の基準の優先順位が最も高く、第2の基準、第3基準及び第4の基準の順に優先順位が高い。すなわち、信号変換器211は、フィーチャー値及び加重値の条件が前述の基準のうちで多数の条件に満足する場合、優先順位が高い基準によって信号変換を遂行できる。
【0044】
図3及び
図4に示されるように、信号変換器211は、第1の演算入力信号(cf)を第1の信号感知器213及びPEクラスター300に伝達でき、第2の演算入力信号(cw)を第2の信号感知器215及びPEクラスター300に伝達できる。
【0045】
第1の信号感知器213は、信号変換器211から伝達された第1の演算入力信号(cf)に対する第1のゼロフラッグ信号(zff)及び第1のワンフラッグ信号(off)を生成して、各々ルックアップテーブル217及びPEクラスター300に伝達できる。
【0046】
例えば、第1の信号感知器213は、第1の演算入力信号が0(Zero)である場合、第1のゼロフラッグ信号のロジック値を第1の値、第1のワンフラッグ信号を第2の値として生成し、第1のゼロフラッグ信号はルックアップテーブル217に伝達でき、第1のワンフラッグ信号はPEクラスター300に伝達できる。このとき、第1の演算入力信号が0でない場合、第1の信号感知器213は、第1のゼロフラッグ信号及び第1のワンフラッグ信号のロジック値を前記と反対に生成できる。前記第2の値は0(Zero)を意味し、これに限定されない。
【0047】
第2の信号感知器215は、信号変換器211から伝達された第2の演算入力信号(cw)に対する第2のゼロフラッグ信号(zfw)及び第2のワンフラッグ信号(ofw)を生成し、各々ルックアップテーブル217及びPEクラスター300に伝達できる。
【0048】
例えば、第2の信号感知器215は、第2の演算入力信号が0(Zero)である場合、第2のゼロフラッグ信号のロジック値を第1の値、第2のワンフラッグ信号を第2の値として生成し、第2のゼロフラッグ信号はルックアップテーブル217に伝達でき、第2のワンフラッグ信号はPEクラスター300に伝達できる。このとき、第2の演算入力信号が0でない場合、第2の信号感知器215は、第2のゼロフラッグ信号のロジック値を第2の値、第2のワンフラッグ信号のロジック値を第1の値として生成し、第2のゼロフラッグ信号はルックアップテーブル217に伝達でき、第2のワンフラッグ信号はPEクラスター300に伝達できる。このとき、第1の値は1(One)、第2の値は0(Zero)であり、これに限定されない。
【0049】
ルックアップテーブル217は、第1のゼロフラッグ信号及び第2のゼロフラッグ信号に対応する第3のゼロフラッグ信号をPEクラスター300に出力できる。
【0050】
図5に示されるように、ルックアップテーブル217は、第1のゼロフラッグ信号及び第2のゼロフラッグ信号のロジック値の少なくとも一つが第1の値であれば、第3のゼロフラッグ信号のロジック値を第1の値として出力し、残りは第2の値として出力できる。このとき、第1の値は1(One)、第2の値は0(Zero)であり、これに限定されない。
【0051】
図6は、本発明の実施例に係るPEクラスターの構成を示す図である。
【0052】
図6を、本発明の実施例に係るPEクラスターの動作を説明するための
図7、及び本発明の実施例による神経網加速装置の動作を説明するための真理表を示す
図8~
図10を参照して説明する。
【0053】
図6に示されるように、PEクラスター300は、スクラッチパッド310と、レジスタアレイ(register array)330と、PEコントローラ350と、演算器370と、を備えることができる。
【0054】
スクラッチパッド310は、信号変換器211から伝達される第1及び第2の演算入力信号(cf、cw)をPEクラスター300内で仮に格納することで、オフチップメモリ(Off chip memory)にアクセスするレイテンシ(Latency)及びパワー(Power)の消耗を低減できる。このとき、オフチップメモリは
図1に示す外部メモリ130であり得る。
【0055】
このとき、スクラッチパッド310は、SRAM(Static Random Access Memory)で具現され、第1及び第2の演算入力信号を仮に格納するが、SRAMに限定されない。SRAMの特性上、チップイネーブル(chip enable)を印加しなければ格納の値が確認できない。
【0056】
図6及び
図7に示されるように、スクラッチパッド310は、第1及び第2の演算入力信号(cf、cw)を区分して格納するために、第1及び第2の演算入力信号を各々格納する第1のスクラッチパッド(Scratch pad(Feature))311及び第2のスクラッチパッド(Scratch pad(Weight))313を備えることができる。
【0057】
レジスタアレイ330は、第1及び第2の信号感知器213、215と、ルックアップテーブル217とから伝達される第1及び第2のワンフラッグ信号(off、ofw)と、第3のゼロフラッグ信号(zf)とを格納できる。
【0058】
図6及び
図7に示されるように、レジスタアレイ330は、第3のゼロフラッグ信号(zf)と、第1及び第2のワンフラッグ信号(off、ofw)とを各々区分して格納するために、ゼロフラッグレジスタアレイ(Register array for zero-value flag)331、第1のワンフラッグレジスタアレイ(Register array for one-value flag(Feature))333及び第2のワンフラッグレジスタアレイ(Register array for one-value flag(Weight))335を備えることができる。
【0059】
レジスタアレイ330は、ゼロフラッグ信号又はワンフラッグ信号をアレイに別途に格納するため、PEコントローラ350の制御によってパワーの消耗量が大きいスクラッチパッド310のリードアクセス(
図7のMem read)を省略しても、第1及び第2のスクラッチパッド311、313に格納された第1及び第2の演算入力信号の値が0又は1であるか否かを確認できる。
【0060】
すなわち、レジスタアレイ330が演算器370で必要な第1及び第2の演算入力信号の値が0又は1であるか否かのようなデータを提供できるため、スクラッチパッド310のチップイネーブル及びアドレスなどの信号によってメモリに接近しなければならない回数を低減することで、エネルギーの消費量を減少させるという効果が期待できる。
【0061】
PEコントローラ350は、レジスタアレイ330に格納されたフラッグ信号を参考して、第1及び第2のスクラッチパッド311、313のリード又は演算器370の演算処理手順を制御できる。すなわち、PEコントローラ350は、レジスタアレイ330の値を確認して、第1及び第2のスクラッチパッド311、313でデータをリードするか否か、及び演算器370のデータ経路をゲーティング(gating)するか否かを決定する。
【0062】
PEコントローラ350は、第3のゼロフラッグ信号のロジック値が第1の値である場合、第1及び第2のスクラッチパッド311、313のリードをスキップし、第1及び第2の演算入力信号に対する乗算及び加算をスキップするように、乗算入力維持信号及び乗算出力維持信号を演算器370に出力できる。
【0063】
図9に示されるように、PEコントローラ350は、優先的にゼロフラッグレジスタアレイ331に格納された第3のゼロフラッグ信号(zf)のロジック値を確認し、ロジック値が第1の値である場合(
図9の丸囲み数字の1)、第1及び第2のスクラッチパッド311、313のリード及び演算器370の演算処理をスキップするように、乗算器(Multiplier)373の前段に位置した第1及び第2のフリップフロップ371、372に第1及び第2のフリップフロップ(ff0、ff1)371、372の動作をオフ(off)するように制御する信号(
図9の丸囲み数字の2)(c0)を転送できる。また、PEコントローラ350は、乗算器373の後段に位置したMUX375に以前の乗算結果を維持させる信号(
図9の丸囲み数字3)(c1)を転送し、加算器(Adder)377の後段に位置した第3のフリップフロップ(ff2)379に第3のフリップフロップ379の動作をオフするように制御する信号(
図9の丸囲み数字4)(c2)を転送できる。
図9において、c0の論理値0はoffを意味し、1はonを意味し、c2の論理値0はoffを意味し、1はonを意味するものと定義する。
【0064】
また、PEコントローラ350は、ワンフラッグ信号等のロジック値の少なくとも一つが第1の値である場合、ワンフラッグ信号のロジック値が第1の値である第1又は第2のスクラッチパッド311、313のリードをスキップし、第1及び第2の演算入力信号に対する乗算をスキップするように乗算入力維持信号を演算器370に出力できる。このとき、PEコントローラ350は、第1及び第2のワンフラッグ信号(off、ofw)のロジック値を確認する前に、ゼロフラッグ信号(zf)のロジック値を優先的に確認できる。例えば、第1の値はロジック値1(One)である場合を意味し、これに限定されないことは当然である。
【0065】
図10に示されるように、PEコントローラ350は、第1及び第2のワンフラッグレジスタアレイ333、335に格納された第1及び第2のワンフラッグ信号(off、ofw)(
図10の丸囲み数字の5)のロジック値を確認して、その中で少なくとも一つが1(off又はofw:1)である場合、ワンフラッグ信号のロジック値が第1の値であるスクラッチパッドのリードをスキップし、乗算をスキップするように制御できる。
【0066】
例えば、第2のワンフラッグ信号(ofw)のロジック値が第1の値(例えば、1)(
図10の丸囲み数字の6)である場合、PEコントローラ350は、第2のスクラッチパッド313のメモリリードアクセスをスキップし、乗算をスキップし、加算を遂行させるために、乗算器373の前段に位置した第1及び第2のフリップフロップ371、372に第1及び第2のフリップフロップ371、372の動作をオフ(off)するように制御する信号(c0:0)を転送できる。また、PEコントローラ350は、乗算器373の後段に位置したMUX375に第1の演算入力信号(cf)を出力させる信号(c1:0)を転送し、加算器377の後段に位置した第3のフリップフロップ(ff2)379に第3のフリップフロップ379の動作を遂行するように制御する信号(c2:1)を転送できる。
図10において、c0の論理値0はoffを意味し、c2の論理値1はonを意味するものと定義する。
【0067】
演算器370は、PEコントローラ350から伝達される制御信号によって乗算及び加算を処理できる。
【0068】
演算器370は、ニューラルネットワーク(Neural Network)で主に使用される畳み込み(Convolution)演算を遂行するための構成であり、これに限定されない。
【0069】
具体的に、演算器370は、乗算回路及び加算回路を備えることができる。
【0070】
乗算回路(
図7のA)は、PEコントローラ350から乗算入力維持信号がイネーブルされれば、第1及び第2の演算入力信号の乗算をスキップし、以前の乗算結果を維持させて現在の乗算結果として出力できる。
【0071】
乗算回路(A)は、乗算入力維持信号がディセーブルされれば、第1及び第2の演算入力信号の乗算を遂行して、現在の乗算結果が出力できる。
【0072】
加算回路(
図7のB)は、PEコントローラ350から加算出力維持信号がイネーブルされれば、現在の乗算結果と以前の加算結果との加算をスキップし、以前の加算結果を現在の加算結果として出力できる。
【0073】
加算回路(B)は、加算出力維持信号がディセーブルされれば、現在の乗算結果と以前の加算結果とを加算して、現在の加算結果として出力できる。
【0074】
図11は、本発明の実施例に係る神経網加速装置の動作方法を示すフローチャートである。
【0075】
図11に示されるように、神経網加速装置100は、第1及び第2の入力信号を受信すれば(S101)、これを既定の条件によって変換して、第1及び第2の演算入力信号を生成できる(S103)。
【0076】
次に、神経網加速装置100は、第1及び第2の演算入力信号の各々に対応するゼロ(Zero)フラッグ信号及びワン(One)フラッグ信号を生成できる(S105)。
【0077】
次に、神経網加速装置100は、ゼロフラッグ信号及びワンフラッグ信号に基づき、第1及び第2の演算入力信号を格納するスクラッチパッド310のリード、並びに第1及び第2の演算入力信号に対する演算処理手順を変更できる(S107)。
【0078】
図12は、本発明の実施例に係る信号変換方法を説明するためのフローチャートである。
【0079】
以下において、
図11の第1及び第2の演算入力信号を生成する方法(S103)をより具体的に説明する。
【0080】
図12に示すように、神経網加速装置100は、第1及び第2の入力信号を受信すれば(S201)、第1及び第2の入力信号の少なくとも一つが0(Zero)であるか否かを優先的に確認できる(S203)。このとき、第1の入力信号はフィーチャー(Feature)値であり、第2の入力信号は加重値(Weight)である。
【0081】
ステップS203の確認結果、第1及び第2の入力信号の少なくとも一つが0でない場合、神経網加速装置100は、第2の入力信号が1又は-1であるか否かを確認できる(S205)。
【0082】
ステップS205の確認結果、第2の入力信号が1又は-1でない場合、神経網加速装置100は、第1の入力信号が1又は-1であるか否かを確認できる(S207)。
【0083】
ステップS207の確認結果、第1の入力信号が1又は-1でない場合、神経網加速装置100は、第1及び第2の演算入力信号を第1及び第2の入力信号と同一に維持できる(S209)。ステップS209において第1の入力信号が1又は-1でない場合は、第1及び第2の入力信号が1、0及び-1でない他の整数である場合であり得る。
【0084】
一方、ステップS203の確認結果、第1及び第2の入力信号の少なくとも一つが0である場合、神経網加速装置100は、第1及び第2の演算入力信号を前記第1及び第2の入力信号と同一に維持できる(S211)。
【0085】
一方、ステップS205の確認結果、第2の入力信号が1又は-1である場合、第2の演算入力信号を1に変換できる(S213)。
【0086】
図8に示されるように、神経網加速装置100の信号変換器211は、フィーチャー値と加重値とが(-1、-1)、(1、-1)、(他の整数値、-1)、(-(他の整数値)、-1)、(-1、1)、(1、1)、(他の整数値、1)、(-(他の整数値)、1)である場合、加重値が-1であるフィーチャー値及び加重値の対を各々変換して加重値を1に統一させ、加重値が1であるフィーチャー値及び加重値の対は以前値をそのまま維持させ、第1及び第2の演算入力信号を生成できる。
【0087】
一方、ステップS207の確認結果、第1の入力信号が1又は-1である場合、神経網加速装置100は、第1の演算入力信号が1に統一されるように、第1及び第2の入力信号を変換できる(S215)。
【0088】
図8に示されるように、神経網加速装置100の信号変換器211は、フィーチャー値と加重値とが(-1、他の整数値)、(1、他の整数値)、(-1、-(他の整数値))、(1、-(他の整数値))である場合、フィーチャー値が1に統一されるように、フィーチャー値が1であるフィーチャー値及び加重値の対は以前値をそのまま維持し、フィーチャー値が-1であるフィーチャー値及び加重値の対は各々変換して、加重値が1に統一させ、第1及び第2の演算入力信号を生成できる。
【0089】
図13は、本発明の実施例に係るフラッグ信号を生成する方法を説明するためのフローチャートである。
【0090】
以下において、
図11のフラッグ信号を生成する方法(S105)をより具体的に説明する。
【0091】
図13に示されるように、神経網加速装置100の第1の信号感知器213は、信号変換器211から伝達された第1の演算入力信号(cf)に対する第1のゼロフラッグ信号(zff)及び第1のワンフラッグ信号(off)を生成して(S301~S305)、各々ルックアップテーブル217及びPEクラスター300に伝達できる(S307)。
【0092】
具体的には、第1の信号感知器213は、第1の演算入力信号に対応する第1のゼロフラッグ信号及び第1のワンフラッグ信号を生成するが、第1の演算入力信号の値が0(Zero)であれば、第1のゼロフラッグ信号のロジック値を第1の値、第1のワンフラッグ信号のロジック値を第2の値として生成できる。次に、第1の信号感知器213は、第1のゼロフラッグ信号はルックアップテーブル217に伝達でき、第1のワンフラッグ信号はPEクラスター300に伝達できる。このとき、第1の演算入力信号が0でない場合、第1の信号感知器213は、第1のゼロフラッグ信号及び第1のワンフラッグ信号のロジック値を前記と反対に生成できる。例えば、第1の値は1(One)であり、第2の値は0(Zero)であり、これに限定されない。
【0093】
次に、神経網加速装置100の第2の信号感知器215は、信号変換器211から伝達された第2の演算入力信号(cw)に対する第2のゼロフラッグ信号(zfw)及び第2のワンフラッグ信号(ofw)を生成して(S309)、各々ルックアップテーブル217及びPEクラスター300に伝達できる(S311)。
【0094】
具体的には、第2の信号感知器215は、第2の演算入力信号に対応する第2のゼロフラッグ信号及び第2のワンフラッグ信号を生成するが、第2の演算入力信号値が0(Zero)であれば、第2のゼロフラッグ信号のロジック値を第1の値、第2のワンフラッグ信号のロジック値を第2の値として生成できる。第2の信号感知器215は、第2のゼロフラッグ信号をルックアップテーブル217に伝達でき、第2のワンフラッグ信号をPEクラスター300に伝達できる。このとき、第2の演算入力信号が0でない場合、第2の信号感知器215は、第2のゼロフラッグ信号及び第2のワンフラッグ信号のロジック値を前記と反対に生成できる。例えば、第1の値は1(One)であり、第2の値は0(Zero)であり、これに限定されない。
【0095】
次に、ルックアップテーブル217は、第1のゼロフラッグ信号及び第2のゼロフラッグ信号に対応する第3のゼロフラッグ信号をPEクラスター300に出力できる(S313)。
【0096】
図5に示されるように、ルックアップテーブル217は、第1のゼロフラッグ信号及び第2のゼロフラッグ信号のロジック値の少なくとも一つが第1の値であれば、第3のゼロフラッグ信号のロジック値を第1の値として出力し、残りは第2の値として出力できる。例えば、第1の値は1(One)であり、第2の値は0(Zero)であり、これに限定されない。
【0097】
図14は、本発明の実施例に係るスクラッチパッドリード及び演算処理手順を制御する方法を説明するためのフローチャートである。
【0098】
以下において、
図11のステップS107をより具体的に説明する。
【0099】
図14に示されるように、神経網加速装置100のPEクラスター300は、信号感知器200から伝達された演算入力信号、ゼロフラッグ信号及びワンフラッグ信号を各々スクラッチパッド310又はレジスタアレイ330に格納できる(S401)。
【0100】
具体的には、神経網加速装置100は、第1及び第2の演算入力信号(cf、cw)の各々を第1及び第2のスクラッチパッド311、313に格納し、ゼロフラッグ信号(zf)をゼロフラッグレジスタアレイ331に格納し、第1及び第2のワンフラッグ信号(off、ofw)を第1及び第2のワンフラッグレジスタアレイ333、335に格納できる。
【0101】
次に、神経網加速装置100のPEコントローラ350は、優先的にレジスタアレイ330をチェックして、ゼロフラッグ信号又はワンフラッグ信号のロジック値が第1の値であるか否かを確認できる(S403、S405)。例えば、第1の値はロジック値1(One)である場合を意味し、これに限定されないことは当然である。
【0102】
ステップS405の確認結果、ゼロフラッグ信号又はワンフラッグ信号が感知される場合、神経網加速装置100は、ゼロフラッグ信号のロジック値が第1の値であるか否かを確認できる(S407)。すなわち、神経網加速装置100は、ゼロフラッグ信号又はワンフラッグ信号のロジック値が第1の値である場合、ゼロフラッグ信号又はワンフラッグ信号が感知されると判断するものである。
【0103】
ステップS407の確認結果、ゼロフラッグ信号のロジック値が第1の値である場合、神経網加速装置100は、第1及び第2の演算入力信号を格納するスクラッチパッド310のリード、並びに前記第1及び第2の演算入力信号に対する演算を全部スキップできる(S409、S411)。
【0104】
ステップS407の確認結果、ゼロフラッグ信号のロジック値が第1の値でなく、ワンフラッグ信号等のロジック値の少なくとも一つが第1の値である場合、神経網加速装置100は、スクラッチパッド310のリードアクセスを一部スキップし、乗算をスキップし、加算を遂行できる(S413、S415)。例えば、第1の値はロジック値1(One)である場合を意味し、これに限定されないことは当然である。
【0105】
具体的に、神経網加速装置100は、ワンフラッグ信号等のロジック値の一つが第1の値である場合、該ワンフラッグ信号が発生したスクラッチパッド310のリードアクセスをスキップし、乗算をスキップし、加算を遂行できる。
【0106】
一方、ステップS405の確認結果、ゼロフラッグ信号又はワンフラッグ信号が感知されない場合、神経網加速装置100は、スクラッチパッド310のリード及び演算動作を全部遂行できる(S417)。
【0107】
本実施例に係る神経網加速装置100は、入力信号(Feature、Weight)に0が入力される場合、信号感知器200によってゼロフラッグ信号のロジック値を1として生成し、PEクラスター300内のMUX375に伝達されるMUX選択信号(mux selection signal)をフィードバックループ経路(feedback loop path)を選択できるようにする。
【0108】
フィードバックループ経路が選択された場合、演算器370には、以前のクロックサイクルで演算した値と同じ値(フィードバックされた値)が入力されるため、演算器370内の値は変化しない。このような場合が1回発生する場合、信号入力に対するスイッチング周波数(switching frequency)は1/2に低減され、各セルのダイナミック電流(dynamic current)は1/2だけ低減される。ゼロフラッグ信号のロジック値が第1の値に2回連続入力される場合、信号入力に対するスイッチング周波数は1/3に低減され、ダイナミック電流は1/3だけ低減される。
【0109】
前述したように、本発明の実施例は、0値が多数生成されるローデータ(raw data)であるほど、低電力(low-power)で動作できるという効果が期待でき、これに限定されない。
【0110】
本発明の属する技術分野における通常の技術者は、本発明がその技術的思想や必須特徴から逸脱しない範囲内において、他の具体的な形態で実施できるので、前述した実施例は全ての面において例示的なものであり、限定的なものでないと理解しなければならない。本発明の範囲は前記詳細な説明よりも後述する特許請求の範囲により示され、特許請求の範囲の意味及び範囲、その等価概念から導出される全ての変更又は変形された形態が、本発明の範囲に含まれるものと解析しなければならない。
【符号の説明】
【0111】
100 神経網加速装置
200 信号感知器
211 信号変換器
213 第1の信号感知器
215 第2の信号感知器
217 ルックアップテーブル
300 PEクラスター
310 スクラッチパッド
330 レジスタアレイ
350 PEコントローラ
370 演算器