(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-02-21
(45)【発行日】2022-03-02
(54)【発明の名称】ニューラルネットワークアクセラレータ
(51)【国際特許分類】
G06N 3/063 20060101AFI20220222BHJP
G06F 7/523 20060101ALI20220222BHJP
G06F 7/50 20060101ALI20220222BHJP
【FI】
G06N3/063
G06F7/523
G06F7/50
(21)【出願番号】P 2020096132
(22)【出願日】2020-06-02
【審査請求日】2020-06-02
(31)【優先権主張番号】10-2019-0070884
(32)【優先日】2019-06-14
(33)【優先権主張国・地域又は機関】KR
【新規性喪失の例外の表示】特許法第30条第2項適用 THE 2019 56TH ACM/EDAC/IEEE DESIGN AUTOMATION CONFERENCE 令和 1年 6月 2日公開
【前置審査】
(73)【特許権者】
【識別番号】506083693
【氏名又は名称】浦項工科大学校 産学協力団
(74)【代理人】
【識別番号】110000051
【氏名又は名称】特許業務法人共生国際特許事務所
(72)【発明者】
【氏名】柳成周
(72)【発明者】
【氏名】金亨俊
(72)【発明者】
【氏名】金載俊
【審査官】川▲崎▼ 博章
(56)【参考文献】
【文献】特開昭63-073472(JP,A)
【文献】特開2018-092377(JP,A)
【文献】特開昭59-194242(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06N 3/063
G06F 7/523
G06F 7/50
(57)【特許請求の範囲】
【請求項1】
複数のサブプロセッシング回路と、
前記複数のサブプロセッシング回路に対応する複数のシフターと、
前記複数のシフターの出力に基づいて出力の特徴データを生成するように構成されたアキュムレータと、を備え、
前記複数のサブプロセッシング回路の各々は、
入力の特徴データの第1の特徴ビット及び重みデータの第1の重みビットに対する乗算を遂行して、第1の乗算結果を生成するように構成された第1のビット演算器と、
前記入力の特徴データの第2の特徴ビット及び前記重みデータの第2の重みビットに対する乗算を遂行して、第2の乗算結果を生成し、
前記第2の乗算結果は前記第1の乗算結果と同一の桁数を有するように構成された第2のビット演算器と、
前記第1の乗算結果
及び前記第2の乗算結果
を桁数を
シフトさせずに加算して、加算結果を生成するように構成された加算器と、
を含み、
前記複数のシフターの各々は、前記複数のサブプロセッシング回路の各々から前記加算結果を受信してシフト値に応じて前記加算結果の桁数をシフトさせて、シフトされた加算結果を生成するように構成さ
れ、
前記アキュムレータは、前記複数のシフターの各々から前記シフトされた加算結果を受信して前記シフトされた加算結果に基づいて、
前記出力の特徴データを生成するように構成され
ていることを特徴とするニューラルネットワークアクセラレータ。
【請求項2】
前記シフト値は、前記入力の特徴データの前記第1の特徴ビットの桁数、及び前記重みデータの前記第1の重みビットの桁数に基づいて決定されるか、又は前記入力の特徴データの前記第2の特徴ビットの桁数、及び前記重みデータの前記第2の重みビットの桁数に基づいて決定されることを特徴とする請求項1に記載のニューラルネットワークアクセラレータ。
【請求項3】
前記入力の特徴データは、前記第1のビット演算器及び前記第2のビット演算器の動作ビット数に応じて、前記第1の特徴ビット及び前記第2の特徴ビットに分割され、
前記重みデータは、前記動作ビット数に応じて前記第1の重みビット及び前記第2の重みビットに分割されることを特徴とする請求項1に記載のニューラルネットワークアクセラレータ。
【請求項4】
前記第1の特徴ビットのビット数と前記第1の重みビットのビット数は、同一であることを特徴とする請求項1に記載のニューラルネットワークアクセラレータ。
【請求項5】
前記第1のビット演算器は、XNOR演算又はAND演算の中から、選択信号に応じて選択された1つに基づいて、前記第1の乗算結果を生成することを特徴とする請求項1に記載のニューラルネットワークアクセラレータ。
【請求項6】
前記出力の特徴データは、前記入力の特徴データ及び前記重みデータに対する乗算結果であることを特徴とする請求項1に記載のニューラルネットワークアクセラレータ。
【請求項7】
入力の特徴データの第1の特徴ビット及び重みデータの第1の重みビットに基づいて、第1の演算結果を生成するように構成された第1のプロセッシング回路と、
前記入力の特徴データの第2の特徴ビット及び前記重みデータの第2の重みビットに基づいて、第2の演算結果を生成するように構成された第2のプロセッシング回路と、
第1のシフト値に基づいて前記第1の演算結果の桁数をシフトさせて、第1のシフトされた演算結果を生成するように構成された第1のシフターと、
前記第1のシフト値とは異なる第2のシフト値に基づいて前記第2の演算結果の桁数をシフトさせて、第2のシフトされた演算結果を生成するように構成された第2のシフターと、
前記第1のシフトされた演算結果及び前記第2のシフトされた演算結果に基づいて、出力の特徴データを生成するように構成されたアキュムレータと、を備え
、
前記第1のプロセッシング回路は、
入力の特徴データの前記第1の特徴ビット及び重みデータの前記第1の重みビットに対する乗算を遂行して、第1の乗算結果を生成するように構成された第1のビット演算器と、
前記入力の特徴データの第3の特徴ビット及び前記重みデータの第3の重みビットに対する乗算を遂行して、第2の乗算結果を生成し、前記第2の乗算結果は前記第1の乗算結果と同一の桁数を有するように構成された第2のビット演算器と、
前記第1の乗算結果及び前記第2の乗算結果を桁数をシフトさせずに加算して、前記第1の演算結果を生成するように構成された第1の加算器と、を含み、
前記第2のプロセッシング回路は、
前記入力の特徴データの前記第2の特徴ビット及び前記重みデータの前記第2の重みビットに対する乗算を遂行して、第3の乗算結果を生成し、前記第3の乗算結果は前記第1の乗算結果と異なる桁数を有するように構成された第3のビット演算器と、
前記入力の特徴データの第4の特徴ビット及び前記重みデータの第4の重みビットに対する乗算を遂行して、第4の乗算結果を生成し、前記第4の乗算結果は前記第3の乗算結果と同一の桁数を有するように構成された第4のビット演算器と、
前記第3の乗算結果及び前記第4の乗算結果を桁数をシフトさせずに加算して、前記第2の演算結果を生成するように構成された第2の加算器と、を含むことを特徴とするニューラルネットワークアクセラレータ。
【請求項8】
前記第1のシフト値は、前記入力の特徴データの前記第1の特徴ビットの桁数、及び前記重みデータの前記第1の重みビットの桁数に基づいて決定され、
前記第2のシフト値は、前記入力の特徴データの前記第2の特徴ビットの桁数、及び前記重みデータの前記第2の重みビットの桁数に基づいて決定されることを特徴とする請求項7に記載のニューラルネットワークアクセラレータ。
【請求項9】
前記第1の特徴ビットのビット数と前記第1の重みビットのビット数は、同一であることを特徴とする請求項7に記載のニューラルネットワークアクセラレータ。
【請求項10】
前記出力の特徴データは、前記入力の特徴データ及び前記重みデータに対する乗算結果であることを特徴とする請求項7に記載のニューラルネットワークアクセラレータ。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、半導体装置に関し、より詳しくは、プレシジョンスケーラブル(precision scalable)ニューラルネットワークアクセラレータに関する。
【背景技術】
【0002】
ニューラルネットワークアクセラレータは、人間の頭脳を模倣してデータを処理するハードウェアである。ニューラルネットワークアクセラレータは、多様なニューラルネットワークアルゴリズムに基づいてデータを処理する。データを処理するために、ニューラルネットワークアクセラレータは、膨大な量のマトリックス乗算を行う。この場合、データを格納するための多くのメモリ使用量と、データ処理のための多くの演算量とが要求される。メモリ使用量と演算量を減少させるために、データのビット数を減少させるように、データのプレシジョン(precision)を下げる研究が進められている。データのプレシジョン(精度)が低くなると、メモリ使用量と演算量が減少する代わりに、ニューラルネットワーク演算の正確度(accuracy)が減少する。
【0003】
ニューラルネットワークの演算に必要とされる正確度は、アプリケーション(application)に応じて異なる。多様なアプリケーションをサポートするために、必要とされる正確度に応じたプレシジョンに基づいて演算を遂行できるニューラルネットワークアクセラレータが必要である。しかし、このようなプレシジョンスケーラブル(precision scalable)ニューラルネットワークアクセラレータが実装されると、ハードウェアの面積が大きくなり、演算で消費される電力が大きくなる。
【先行技術文献】
【特許文献】
【0004】
【発明の概要】
【発明が解決しようとする課題】
【0005】
本発明は、上述した技術的問題に鑑みてなされたものであって、本発明の目的は、ハードウェアの面積が小さく、演算における電力消費が低いプレシジョンスケーラブル(precision scalable)ニューラルネットワークアクセラレータを提供することにある。
【課題を解決するための手段】
【0006】
上記目的を達成するためになされた本発明の一態様によるニューラルネットワークアクセラレータは、入力の特徴データの第1の特徴ビット及び重みデータの第1の重みビットに対する乗算を遂行して、第1の乗算結果を生成するように構成された第1のビット演算器と、前記入力の特徴データの第2の特徴ビット及び前記重みデータの第2の重みビットに対する乗算を遂行して、第2の乗算結果を生成するように構成された第2のビット演算器と、前記第1の乗算結果と前記第2の乗算結果とを加算して、加算結果を生成するように構成された加算器と、シフト値に応じて前記加算結果の桁数をシフトさせて、シフトされた加算結果を生成するように構成されたシフターと、前記シフトされた加算結果に基づいて、出力の特徴データを生成するように構成されたアキュムレータと、を備えることを特徴とする。
【0007】
前記シフト値は、前記入力の特徴データの前記第1の特徴ビットの桁数、及び前記重みデータの前記第1の重みビットの桁数に基づいて決定されるか、又は前記入力の特徴データの前記第2の特徴ビットの桁数、及び前記重みデータの前記第2の重みビットの桁数に基づいて決定され得る。
前記入力の特徴データは、前記第1のビット演算器及び前記第2のビット演算器の動作ビット数に応じて、前記第1の特徴ビット及び前記第2の特徴ビットに分割され、前記重みデータは、前記動作ビット数に応じて、前記第1の重みビット及び前記第2の重みビットに分割され得る。
前記第1の特徴ビットのビット数と前記第1の重みビットのビット数は、同一であることが好ましい。
前記第1のビット演算器は、XNOR演算又はAND演算の中から、選択信号に応じて選択された1つに基づいて、前記第1の乗算結果を生成し得る。
前記出力の特徴データは、前記入力の特徴データ及び前記重みデータに対する乗算結果であり得る。
【0008】
上記目的を達成するためになされた本発明の他の態様によるニューラルネットワークアクセラレータは、入力の特徴データの第1の特徴ビット及び重みデータの第1の重みビットに基づいて、第1の演算結果を生成するように構成された第1のプロセッシング回路と、前記入力の特徴データの第2の特徴ビット及び前記重みデータの第2の重みビットに基づいて、第2の演算結果を生成するように構成された第2のプロセッシング回路と、第1のシフト値に基づいて前記第1の演算結果の桁数をシフトさせて、第1のシフトされた演算結果を生成するように構成された第1のシフターと、前記第1のシフト値とは異なる第2のシフト値に基づいて前記第2の演算結果の桁数をシフトさせて、第2のシフトされた演算結果を生成するように構成された第2のシフターと、前記第1のシフトされた演算結果及び前記第2のシフトされた演算結果に基づいて、出力の特徴データを生成するように構成されたアキュムレータと、を備えることを特徴とする。
【0009】
前記第1のシフト値は、前記入力の特徴データの前記第1の特徴ビットの桁数、及び前記重みデータの前記第1の重みビットの桁数に基づいて決定され、前記第2のシフト値は、前記入力の特徴データの前記第2の特徴ビットの桁数、及び前記重みデータの前記第2の重みビットの桁数に基づいて決定され得る。
前記第1のプロセッシング回路は、前記第1の特徴ビット及び前記第1の重みビットに対する第1の乗算結果と、前記入力の特徴データの第3の特徴ビット及び前記重みデータの第3の重みビットに対する第2の乗算結果とを加えて、前記第1の演算結果を生成し得る。
前記入力の特徴データの前記第1の特徴ビットの桁数、及び前記重みデータの前記第1の重みビットの桁数に基づいて決定される前記第1の乗算結果の桁数と、前記入力の特徴データの前記第3の特徴ビットの桁数、及び前記重みデータの前記第3の重みビットの桁数に基づいて決定される前記第2の乗算結果の桁数とは、同一であることが好ましい。
前記第1の特徴ビットのビット数と前記第1の重みビットのビット数とは同一であり得る。
前記出力の特徴データは、前記入力の特徴データ及び前記重みデータに対する乗算結果であり得る。
【発明の効果】
【0010】
本発明によれば、ハードウェアの面積が減少したプレシジョンスケーラブル(precision scalable)ニューラルネットワークアクセラレータを提供することができる。
また、ニューラルネットワーク演算における消費電力が最小化されたプレシジョンスケーラブル(precision scalable)ニューラルネットワークアクセラレータを提供することができる。
【図面の簡単な説明】
【0011】
【
図1】本発明の一実施形態によるニューラルネットワークアクセラレータのブロック図である。
【
図2】
図1のプロセッシング回路の一例を示すブロック図である。
【
図3A】
図2のプロセッシング回路が入力の特徴データ及び重みデータに基づいて、出力の特徴データを生成する一例を示す図である。
【
図3B】
図2のプロセッシング回路が入力の特徴データ及び重みデータに基づいて、出力の特徴データを生成する一例を示す図である。
【
図4】
図2のプロセッシング回路が入力の特徴データ及び重みデータに基づいて、出力の特徴データを生成する他の例を示す図である。
【
図5】
図2のプロセッシング回路の動作の一例を示すフローチャートである。
【
図6A】
図2のビット演算器を構成する電子回路の一例を示す図である。
【
図6B】
図6Aの電子回路と同じ動作を遂行する論理回路の一例を示す図である。
【発明を実施するための形態】
【0012】
以下、図面を参照しながら、本発明の実施形態を詳しく説明する。以下の説明では、詳しい構成及び構造のような細部的情報は、単に、本発明の実施形態の全体的な理解を助けるために提供される。したがって、本発明の思想及び技術的範囲から逸脱しない範囲で、本明細書に記載された実施形態の変形は、通常の技術者(当業者)によって遂行され得る。さらに、明確性と簡潔性のため、よく知られている機能と構造に対する説明は省略する。本明細書で使用される用語は、本発明の機能を考慮して定義された用語であり、特定の機能に限定されない。用語の定義は、詳しい説明に記載された事項をベースに決定される。
【0013】
以下の図面又は詳しい説明でのモジュールは、図面に示すか、又は詳しい説明に記載された構成要素に加えて、他のものと連結され得る。モジュール又は構成要素間の連結は、各々直接又は間接的であり得る。モジュール又は構成要素間の連結は、各々通信による連結であるか、又は物理的接続であり得る 。
【0014】
明らかに別のものを示していると定義しない限り、本明細書で使用される技術的又は科学的な意味を含むすべての用語は、本発明が属する技術分野における通常の知識を有する者によって理解される。一般的に、辞書に定義された用語は、関連技術分野における文脈的意味と同等の意味を有するように解釈され、本明細書で明確に定義されていない限り、理想的又は過度に形式的な意味を有するように解釈されない。
【0015】
図1は、本発明の一実施形態によるニューラルネットワークアクセラレータのブロック図である。ニューラルネットワークアクセラレータ1000は、ニューラルネットワークをベースに、入力の特徴データ(IF)を処理して出力の特徴データ(OF)を生成する。例えば、ニューラルネットワークアクセラレータ1000は、コンボリューショナルニューラルネットワーク(CNN:Convolutional Neural Network)をベースにして、入力の特徴データ(IF)を処理する。しかし、本発明はこれに限定されるものではなく、ニューラルネットワークアクセラレータ1000は、多様なニューラルネットワークアルゴリズムを利用し得る。
【0016】
図1に示すように、ニューラルネットワークアクセラレータ1000は、メモリ10及びプロセッシング回路100を含む。メモリ10は、重みデータ(WT)を格納する。例えば、重みデータ(WT)は、カーネル(kernel)のデータである。例えば、メモリ10は、DRAM、SRAMなどの揮発性メモリ又はフラッシュメモリ、MRAMなどの不揮発性メモリで実装される。
【0017】
プロセッシング回路100は、メモリ10から重みデータ(WT)を受信し、重みデータ(WT)及び入力の特徴データ(IF)に基づいて、演算を遂行する。プロセッシング回路100は、演算結果として出力の特徴データ(OF)を生成する。
【0018】
図1では、メモリ10がニューラルネットワークアクセラレータ1000の内部に含まれるものとして示したが、本発明はこれに限定されない。例えば、ニューラルネットワークアクセラレータ1000は、外部のメモリから重みデータ(WT)を受信してもよい。
【0019】
本発明の一実施形態によるニューラルネットワークアクセラレータ1000は、要求される正確度に応じて可変されたデータのプレシジョン(精度)に基づいて演算を行う。具体的には、要求される正確度に応じて、入力の特徴データ(IF)及び重みデータ(WT)のビット数が異なっても、ニューラルネットワークアクセラレータ1000は、多様なビット数を有する入力の特徴データ(IF)及び重みデータ(WT)に基づいて演算を行う。これにより、ニューラルネットワークアクセラレータ1000は、ニューラルネットワークをベースに、多様な正確度を必要とするアプリケーションに対して効率的な演算を遂行することができる。
【0020】
図2は、
図1のプロセッシング回路の一例を示すブロック図である。
図2に示すように、プロセッシング回路100は、第1~第nのサブプロセッシング回路(110~130)、第1~第nのシフター(140~160)、及びアキュムレータ170を含む。第1のサブプロセッシング回路110は、第1~第4のビット演算器(111~114)及び第1の加算器115を含む。第2のサブプロセッシング回路120は、第5~第8のビット演算器(121~124)及び第2の加算器125を含む。第nのサブプロセッシング回路130は、第(4n-3)~第4nのビット演算器(131~134)及び第nの加算器135を含む。
【0021】
ビット演算器の各々は、入力される2つのデータに対して乗算を遂行する。たとえば、入力の特徴データ(IF)の中の一部のビット、及び重みデータ(WT)の中の一部のビットが第1のビット演算器111に提供される。この場合、第1のビット演算器111は、提供された入力の特徴データ(IF)の中の一部のビット、及び重みデータ(WT)の中の一部のビットに対して乗算演算を遂行する。例えば、ビット演算器の各々は、2ビットずつ(つまり、ビット演算器の動作ビット数が2ビット)の乗算を行う。しかし、本発明はこれに限定されるものではない。
【0022】
加算器の各々は、対応するビット演算器から演算結果を受信し、受信した演算結果に対して加算を行う。例えば、第1の加算器115は、第1~第4のビット演算器(111~114)から提供される演算結果に対して加算を行う。
【0023】
シフターの各々は、対応するサブプロセッシング回路から提供された加算結果の桁数をシフトさせる。一実施形態として、シフターの各々は、予め決められたシフト値に基づいて加算結果の桁数をシフトさせるか、又は別の制御信号として入力されるシフト値に基づいて加算結果の桁数をシフトさせる。例えば、シフターはシフト値に基づいて加算結果に0(zero)のビットを追加して、加算結果の桁数をシフトさせる。
【0024】
一実施形態で、シフターは、異なるシフト値に基づいて加算結果の桁数をシフトさせる。例えば、第1のシフター140は、加算結果の桁数を4ビット程シフトさせ、第2のシフター150は、加算結果の桁数を2ビット程シフトさせる。しかし、本発明はこれに限定されるものではなく、異なるシフターが同じシフト値に基づいて加算結果の桁数をシフトさせてもよい。
【0025】
アキュムレータ170は、シフター(140~160)から、シフトされた加算結果を受信する。アキュムレータ170は、シフトされた加算結果に対して加算を行う。これにより、加算結果として、出力の特徴データ(OF)又は部分和(partial sum)が生成される。加算結果として出力の特徴データ(OF)が生成される場合、アキュムレータ170は、出力の特徴データ(OF)を出力する。加算結果として部分和が生成される場合には、アキュムレータ170は、生成された部分和を累積して出力の特徴データ(OF)を生成する。
【0026】
図2では、プロセッシング回路100が、n個のサブプロセッシング回路(110~130)を含むものとして示したが、本発明はこれに限定されない。例えば、プロセッシング回路100は、多様な数のサブプロセッシング回路を含み得る。この場合、サブプロセッシング回路の数に応じて対応するシフターの数が変わる。
【0027】
図2では、1つのサブプロセッシング回路が4つのビット演算器、及び1つの加算器を含むものとして示したが、本発明はこれに限定されない。例えば、1つのサブプロセッシング回路は、多様な数のビット演算器及び多様な数の加算器を含み得る。
【0028】
以下では、
図3A~
図5を参照して、
図2のプロセッシング回路100の動作を詳しく説明する。説明の便宜のために、ニューラルネットワークアクセラレータ1000が、4ビットの入力の特徴データ(IF)及び4ビットの重みデータ(WT)に基づいて、出力の特徴データ(OF)を算出すると仮定する。しかし、本発明はこれに限定されるものではなく、ニューラルネットワークアクセラレータ1000は、多様なビット数の入力の特徴データ(IF)及び重みデータ(WT)に対する演算をサポートし得る。つまり、ニューラルネットワークアクセラレータ1000は、多様なプレシジョン(精度)を有するデータに対する演算をサポートする。また、説明の便宜のために、ビット演算器の各々が2ビットずつの乗算を遂行すると仮定する。つまり、ビット演算器の動作ビット数が2ビットであると仮定するが、本発明はこれに限定されない。
【0029】
図3A及び
図3Bは、
図2のプロセッシング回路が入力の特徴データ及び重みデータに基づいて、出力の特徴データを生成する1つの例を示す図である。プロセッシング回路200は、第1~第2の入力の特徴データ(IF1、IF2)と、第1~第2の重みデータ(WT1、WT2)とに基づいて、出力の特徴データ(OF)を算出する。具体的には、プロセッシング回路200は、第1の入力の特徴データ(IF1)及び対応する第1の重みデータ(WT1)に対する乗算結果と、第2の入力の特徴データ(IF2)と対応する第2の重みデータ(WT2)に対する乗算結果とを加えて出力の特徴データ(OF)を算出する。出力の特徴データ(OF)を算出するために、
図3Aに示すように、プロセッシング回路200は、第1の部分和(PS1)を先に算出する。その次に、
図3Bに示すように、プロセッシング回路200は、第2の部分和(PS2)を算出する。この場合、第1の部分和(PS1)及び第2の部分和(PS2)は、所望の特徴の出力データ(OF)を算出するための中間データである。プロセッシング回路200は、第1の部分和(PS1)と第2の部分和(PS2)を加えて、出力の特徴データ(OF)を生成する。
【0030】
以下では、
図3Aを参照して、第1の部分和(PS1)の算出動作を説明した後、
図3Bを参照して、第2の部分和(PS2)の算出動作を説明する。
【0031】
まず、
図3Aに示すように、プロセッシング回路200は、第1及び第2の入力の特徴データ(IF1、IF2)と、第1及び第2の重みデータ(WT1、WT2)とを受信する。例えば、第1の入力の特徴データ(IF1)は、「1011」であり、第2の入力の特徴データ(IF2)は、「0111」である。第1の重みデータ(WT1)は、「0110」であり、第2の重みデータ(WT2)は「0011」である。
【0032】
第1及び第2の入力の特徴データ(IF1、IF2)と、第1及び第2の重みデータ(WT1、WT2)とは、ビット演算器の動作ビット数に応じて2ビットずつに分割される。例えば、第1の入力の特徴データ(IF1)は、特徴ビット(f11、f12)に分割され、第2の入力の特徴データ(IF2)は、特徴ビット(f21、f22)に分割される。第1の重みデータ(WT1)は、重みビット(w11、w12)に分割され、第2の重みデータ(WT2)は、重みビット(w21、w22)に分割される。この場合、特徴ビット(f11、f21)の桁数は、特徴ビット(f12、f22)の桁数よりも高い可能性があり、重みビット(w11、w21)の桁数は、重みビット(w12、w22)の桁数より高い可能性がある。
【0033】
分割されたビットは、分割されたビットの桁数に応じて、サブプロセッシング回路及びビット演算器に提供される。例えば、第1の部分和(PS1)を算出するために、特徴ビット(f11)及び重みビット(w11)は、第1のサブプロセッシング回路210の第1のビット演算器211に提供される。特徴ビット(f21)及び重みビット(w21)は、第1のサブプロセッシング回路210の第2のビット演算器212に提供される。この場合、出力の特徴データ(OF)を基準に、特徴ビット(f11)及び重みビット(w11)に対する第1の乗算結果(MR1)の桁数と、特徴ビット(f21)及び重みビット(w21)に対する第2の乗算結果(MR2)の桁数とは、同一である。特徴ビットの(f12)及び重みビット(w11)は、第2のサブプロセッシング回路220の第5のビット演算器221に提供される。特徴ビットの(f22)及び重みビット(w21)は、第2のサブプロセッシング回路220の第6のビット演算器222に提供される。この場合、出力の特徴データ(OF)を基準に、特徴ビット(f12)及び重みビット(w11)に対する第3の乗算結果(MR3)の桁数と、特徴ビット(f22)及び重みビット(w21)に対する第4の乗算結果(MR4)の桁数とは、同一である。
【0034】
ビット(特徴ビット及び重みビット)を受信したビット演算器は、受信したビットに基づいて乗算演算を遂行する。例えば、第1のビット演算器211は、特徴ビット(f11)及び重みビット(w11)に対する乗算を遂行して、第1の乗算結果(MR1)を算出する。
【0035】
加算器は、提供された乗算結果を加えて加算結果を生成する。例えば、第1の加算器215は、第1の乗算結果(MR1)に第2の乗算結果(MR2)を加えて、第1の加算結果(AR1)を生成する。生成された加算結果は、対応するシフターに提供される。例えば、第1の加算結果(AR1)は、対応する第1のシフター230に提供される。
【0036】
シフターは、シフト値に基づいて加算結果の桁数をシフトさせる。例えば、第1のシフター230は、4であるシフト値に基づいて、第1の加算結果(AR1)の桁数を4ビット程シフトさせる。この場合、シフト値「4」は、特徴ビット(f11、f21)及び重みビット(w11、w21)の桁数に基づいて定められる。第2のシフター240は、2であるシフト値に基づいて、第2の加算結果(AR2)の桁数を2ビット程シフトさせる。この場合、シフト値「2」は、特徴ビット(f12、f22)及び重みビット(w11、w21)の桁数に基づいて定められる。これにより、第1のシフター230から第1のシフトされた加算結果(SR1)が生成され、第2のシフター240から第2のシフトされた加算結果(SR2)が生成される。
【0037】
アキュムレータ250は、第1のシフトされた加算結果(SR1)と第2のシフトされた加算結果(SR2)を加えて、第1の部分和(PS1)を生成する。
【0038】
図3Bに示すように、第2の部分和(PS2)を算出するために、分割されたビットが、分割されたビットの桁数に応じてサブプロセッシング回路及びビット演算器に提供される。例えば、特徴ビット(f11)及び重みビット(w12)は、第1のサブプロセッシング回路210の第1のビット演算器211に提供される。特徴ビット(f21)及び重みビット(w22)は、第1のサブプロセッシング回路210の第2のビット演算器212に提供される。この場合、出力の特徴データ(OF)を基準に、特徴ビット(f11)及び重みビット(w12)に対する第5の乗算結果(MR5)の桁数と、特徴ビット(f21)及び重みビット(w22)に対する第6の乗算結果(MR6)の桁数とは、同一である。特徴ビット(f12)及び重みビット(w12)は、第2のサブプロセッシング回路220の第5のビット演算器221に提供される。特徴ビット(f22)及び重みビット(w22)は、第2のサブプロセッシング回路220の第6のビット演算器222に提供される。この場合、出力の特徴データ(OF)を基準に、特徴ビット(f12)及び重みビット(w12)に対する第7の乗算結果(MR7)の桁数と、特徴ビット(f22)及び重みビット(w22)に対する第8の乗算結果(MR8)の桁数とは、同一である。
【0039】
ビットを受信したビット演算器は、受信したビットに基づいて、乗算演算を遂行する。例えば、第1のビット演算器211は、特徴ビット(f11)及び重みビット(w12)に対する乗算を遂行して、第5の乗算結果(MR5)を算出する。
【0040】
加算器は、提供された乗算結果を加えて加算結果を生成する。例えば、第1の加算器215は、第5の乗算結果(MR5)に第6の乗算結果(MR6)を加えて、第3の加算結果(AR3)を生成する。生成された加算結果は、対応するシフターに提供される。
【0041】
シフターは、シフト値に基づいて加算結果の桁数をシフトさせる。例えば、第1のシフター230は、2であるシフト値に基づいて第3の加算結果(AR3)の桁数を2ビット程シフトさせる。この場合、シフト値「2」は、特徴ビット(f11、f21)及び重みビット(w12、w22)の桁数に基づいて定められる。第2のシフター240は、0であるシフト値に基づいて、第4の加算結果(AR4)の桁数をシフトさせない。この場合、シフト値「0」は、特徴ビット(f12、f22)及び重みビット(w12、w22)の桁数に基づいて定められる。これにより、第1のシフター230から第3のシフトされた加算結果(SR3)が生成され、第2のシフター240から第4のシフトされた加算結果(SR4)が生成される。
【0042】
アキュムレータ250は、第3のシフトされた加算結果(SR3)に第4のシフトされた加算結果(SR4)を加えて、第2の部分和(PS2)を生成する。アキュムレータ250は、予め格納された第1の部分和(PS1)と第2の部分和(PS2)を加えて、出力の特徴データ(OF)を生成する。
【0043】
図4は、
図2のプロセッシング回路が入力の特徴データ及び重みデータに基づいて、出力の特徴データを生成する他の例を示す図である。
図4に示すように、プロセッシング回路300は、第1及び第2の入力の特徴データ(IF1、IF2)と、第1及び第2の重みデータ(WT1、WT2)を受信する。例えば、第1の入力の特徴データ(IF1)は、「1011」であり、第2の入力の特徴データ(IF2)は、「0111」である。第1の重みデータ(WT1)は、「0110」であり、第2の重みデータ(WT2)は「0011」である。
【0044】
第1及び第2の入力の特徴データ(IF1、IF2)と、第1及び第2の重みデータ(WT1、WT2)とは、
図3A及び
図3Bを参照して説明したように、ビット演算器の動作ビット数に応じて2ビットずつに分割される。
【0045】
分割されたビットは、分割されたビットの桁数に応じて、サブプロセッシング回路及びビット演算器に提供される。例えば、特徴ビット(f11)及び重みビット(w11)は、第1のサブプロセッシング回路310の第1のビット演算器311に提供される。特徴ビット(f21)及び重みビット(w21)は、第1のサブプロセッシング回路310の第2のビット演算器312に提供される。この場合、出力の特徴データ(OF)を基準に、特徴ビット(f11)及び重みビット(w11)に対する第1の乗算結果(MR1)の桁数と、特徴ビット(f21)及び重みビット(w21)に対する第2の乗算結果(MR2)の桁数とは、同一である。特徴ビット(f12)及び重みビット(w11)は、第2のサブプロセッシング回路320の第5のビット演算器321に提供される。特徴ビット(f22)及び重みビット(w21)は、第2のサブプロセッシング回路320の第6のビット演算器322に提供される。特徴ビット(f11)及び重みビット(w12)は、第2のサブプロセッシング回路320の第7のビット演算器323に提供される。特徴ビット(f21)及び重みビット(w22)は、第2のサブプロセッシング回路320の第8のビット演算器324に提供される。この場合、出力の特徴データ(OF)を基準に、特徴ビット(f12)及び重みビット(w11)に対する第3の乗算結果(MR3)の桁数と、特徴ビット(f22)及び重みビット(w21)の第4の乗算結果(MR4)の桁数と、特徴ビット(f11)及び重みビット(w12)に対する第5の乗算結果(MR5)の桁数と、特徴ビット(f21)及び重みビット(w22)に対する第6の乗算結果(MR6)の桁数とは、すべて同一である。特徴ビット(f12)及び重みビット(w12)は、第3のサブプロセッシング回路330の第9のビット演算器331に提供される。特徴ビット(f22)及び重みビット(w22)は、第3のサブプロセッシング回路330の第10のビット演算器332に提供される。この場合、出力の特徴データ(OF)を基準に、特徴ビット(f12)及び重みビット(w12)に対する第7の乗算結果(MR7)の桁数と、特徴ビット(f22)及び重みビット(w22)に対する第8の乗算結果(MR8)の桁数とは、同一である。
【0046】
ビットを受信したビット演算器は、受信したビットに基づいて、乗算演算を遂行する。例えば、第1のビット演算器311は、特徴ビット(f11)及び重みビット(w11)に対する乗算を遂行して、第1の乗算結果(MR1)を算出する。
【0047】
加算器は、提供された乗算結果を加えて加算結果を生成する。例えば、第2の加算器325は、第3~第6の乗算結果(MR3~MR6)を加えて、第2の加算結果(AR2)を生成する。生成された加算結果は、対応するシフターに提供される。
【0048】
シフターは、シフト値に基づいて加算結果の桁数をシフトさせる。例えば、第1のシフター340は、4であるシフト値に基づいて、第1の加算結果(AR1)の桁数を4ビット程シフトさせる。この場合、シフト値「4」は、特徴ビット(f11、f21)及び重みビット(w11、w21)の桁数に基づいて定められる。第2のシフター350は、2であるシフト値に基づいて、第2の加算結果(AR2)の桁数を2ビット程シフトさせる。この場合、シフト値「2」は、特徴ビット(f11、f12、f21、f22)及び重みビット(w11、w12、w21、w22)の桁数に基づいて定められる。第3のシフター360は、0であるシフト値に基づいて第3の加算結果(AR3)の桁数を0ビット程シフトさせる。この場合、シフト値「0」は、特徴ビット(f12、f22)及び重みビット(w12、w22)の桁数に基づいて定められる。これにより、第1~第3のシフター(340~360)から第1~第3のシフトされた加算結果(SR1~SR3)が生成される。
【0049】
アキュムレータ370は、第1~第3のシフトされた加算結果(SR1~SR3)を加えて、出力の特徴データ(OF)を生成する。
【0050】
上述したように、本発明の一実施形態によるプロセッシング回路は、入力の特徴データ(IF)の特徴ビット及び重みデータ(WT)の重みビットの桁数に応じて、出力の特徴データ(OF)を算出するための演算を遂行する。この場合、1つのサブプロセッシング回路のビット演算器から算出される乗算結果の桁数が同一であるため、ビット演算器の各々から算出される乗算結果の桁数をシフトさせずに、乗算結果を加える。これにより、本発明の一実施形態によるプロセッシング回路は、ビット演算器の各々に対応するシフターを含まずに、サブプロセッシング回路の各々に対応するシフターだけが備えられる。したがって、本発明の一実施形態によるニューラルネットワークアクセラレータ1000のハードウェアの面積が減少する。また、シフト動作が減少するため、ニューラルネットワークアクセラレータ1000の演算量が減少する。
【0051】
図5は、
図2のプロセッシング回路の動作の一例を示すフローチャートである。
図2及び
図5を参照すると、S101段階で、プロセッシング回路100は、入力の特徴データ(IF)の特徴ビット及び重みデータ(WT)の重みビットを分割する。具体的には、プロセッシング回路100は、ビット演算器の動作ビット数に応じて特徴ビット及び重みビットを分割する。
【0052】
S102段階で、プロセッシング回路100は、分割された特徴ビット及び分割された重みビットに対する乗算演算を遂行する。この場合、乗算結果の桁数は、分割された特徴のビットの桁数及び分割された重みビットの桁数に応じて定められる。S103段階で、プロセッシング回路100は、同一の桁数を有する乗算結果に対して加算演算を遂行する。S104段階で、プロセッシング回路100は、シフト値に基づいて加算結果の桁数をシフトさせる。この場合、シフト値の桁数は、分割された特徴ビットの桁数及び分割された重みビットの桁数に応じて定められる。S105段階で、プロセッシング回路100は、シフトされた加算結果に基づいて、出力の特徴データを算出する。
【0053】
図6Aは、
図2のビット演算器を構成する電子回路の一例を示す図である。
図6Bは、
図6Aの電子回路と同じ動作を遂行する論理回路の一例を示す図である。具体的には、
図6Aの電子回路は、
図6Bに示すように、選択信号(SEL)に基づいて2入力信号(A、B)の排他的否定論理和(XNOR)の演算結果、又は2入力信号(A、B)の論理積(AND)の演算結果のいずれかを出力信号(OUT)として出力する。
【0054】
図6Aに示すように、ビット演算器101は、第1~第6のP-チャネルMOSFET(PM1~PM6)及び第1~第6のN-チャネルMOSFET(NM1~NM6)を含む。第1のP-チャネルMOSFET(PM1)の第1端子には電源電圧(VDD)が印加され、ゲート端子には入力信号(A)が印加される。第2のP-チャネルMOSFET(PM2)の第1端子には電源電圧(VDD)が印加され、ゲート端子には入力信号(B)が印加される。第3のP-チャネルMOSFET(PM3)の第1端子は、第1のP-チャネルMOSFET(PM1)の第2端子に連結され、第3のP-チャネルMOSFET(PM3)のゲート端子には、反転入力信号(A_b)が印加される。反転入力信号(A_b)は、入力信号(A)が反転された信号である。第4のP-チャネルMOSFET(PM4)の第1端子は、第2のP-チャネルMOSFET(PM2)の第2端子に連結され、第4のP-チャネルMOSFET(PM4)のゲート端子には、反転入力信号(B_b)が印加される。反転入力信号(B_b)は、入力信号(B)が反転された信号である。第5のP-チャネルMOSFET(PM5)のゲート端子には、選択信号(SEL)が印加される。第3のP-チャネルMOSFET(PM3)の第1端子、第4のP-チャネルMOSFET(PM4)の第1端子、及び第5のP-チャネルMOSFET(PM5)の第1端子は、共通に連結される。第6のP-チャネルMOSFET(PM6)の第1端子には電源電圧(VDD)が印加され、第2端子は、出力信号(OUT)が出力される出力端子に連結される。
【0055】
第1のN-チャネルMOSFET(NM1)の第1端子は、第3のP-チャネルMOSFET(PM3)の第2端子に連結され、ゲート端子には選択信号(SEL)が印加される。第2のN-チャネルMOSFET(NM2)の第1端子は、第4のP-チャネルMOSFET(PM4)の第2端子に連結され、ゲート端子には入力信号(A)が印加される。第3のN-チャネルMOSFET(NM3)の第1端子は、第6のP-チャネルMOSFET(PM6)の第2端子及び出力端子に連結され、第2端子には接地電圧(VSS)が印加される。第1のN-チャネルMOSFET(NM1)の第1端子、第2のN-チャネルMOSFET(NM2)の第1端子、第3のN-チャネルMOSFET(NM3)のゲート端子及び第6のP-チャネルMOSFET(PM6)のゲート端子は、共通に連結され得る。第4のN-チャネルMOSFET(NM4)の第1端子は、第1のN-チャネルMOSFET(NM1)の第2端子に連結され、ゲート端子には反転入力信号(A_b)が印加される。第5のN-チャネルMOSFET(NM5)の第1端子は、第2のN-チャネルMOSFET(NM2)の第2端子に連結され、第2端子には、接地電圧(VSS)が印加される。第5のN-チャネルMOSFET(NM5)のゲート端子には入力信号(B)が印加される。第6のN-チャネルMOSFET(NM6)の第1端子は、第4のN-チャネルMOSFET(NM4)の第2端子に連結され、第2端子には、接地電圧(VSS)が印加される。第6のN-チャネルMOSFET(NM6)のゲート端子には、反転入力信号(B_b)が印加される。
【0056】
図6Aのビット演算器101によると、選択信号(SEL)に基づいて2入力信号(A、B)に対するXNOR演算結果、又は2入力信号(A、B)に対するAND演算結果のいずれかが出力信号(OUT)として出力される。すなわち、
図6Aの電子回路は、
図6Bに示すように、2入力信号(A、B)を受けるXNORゲート及びANDゲートと、選択信号(SEL)に基づいてXNORゲートの出力又はANDゲートの出力のいずれかを出力信号(OUT)として出力するマルチプレクサ(MUL)と同じ役割を遂行する。
【0057】
図6Aに示すように、トランジスタをベースに、ビット演算器101が構成されると、
図6Bの論理回路と同じ機能を遂行するだけでなく、トランジスタの数が減少する。したがって、複数のビット演算器を含むニューラルネットワークアクセラレータ1000のハードウェアの面積と演算に要する電力が減少する。
【0058】
上述したように、本発明の一実施形態によるビット演算器101は、1ビットのXNOR演算又は1ビットのAND演算の両方をサポートする。これにより、ビット演算器101は、XNOR演算に基づいて乗算を遂行したり、AND演算に基づいて乗算を遂行する。例えば、マルチビットの入力の特徴データ(IF)及びマルチビットの重みデータ(WT)が、プレシジョン(精度)の減少のために、1ビットに変換される場合には、ビット演算器101は、XNOR演算に基づいて乗算を遂行する。この場合、ニューラルネットワークベースの推論過程での演算量が減少して消費される電力が減少する。
【0059】
上述した内容は、本発明を実施するための具体的な一実施形態である。本発明は、上述した実施形態だけでなく、単純に設計変更されたり、また容易に変更された実施形態を含む。さらに、本発明は、実施形態を用いて容易に変形して実施できる技術も含まれる。したがって、本発明の技術範囲は、上述した実施形態に限定して定めらるものではなく、特許請求の範囲、また特許請求の範囲と均等なものによって定められる。
【符号の説明】
【0060】
10 メモリ
100、200、300 プロセッシング回路
101、111~114、121~124、131~134、211~214、221~224、311、312、321、322、323、324、331、332 ビット演算器
110、120、130、210、220、310、320、330 サブプロセッシング回路
115、125、135、215、225 加算器
140、150、160、230、240、340、350、360 シフター
170、250、370 アキュムレータ
1000 ニューラルネットワークアクセラレータ