(57)【要約】【課題】ハードウェア面積が小さく、演算の電力消費が低いプレシジョンスケーラブル（ｐｒｅｃｉｓｉｏｎ  ｓｃａｌａｂｌｅ）ニューラルネットワークアクセラレータを提供する。【解決手段】本発明のニューラルネットワークアクセラレータは、入力の特徴データの第１の特徴ビット、及び重みデータの第１の重みビットに対する乗算を遂行して第１の乗算結果を生成するように構成された第１のビット演算器と、入力の特徴データの第２の特徴ビット、及び重みデータの第２の重みビットに対する乗算を遂行して第２の乗算結果を生成するように構成された第２のビット演算器と、第１の乗算結果及び第２の乗算結果を加算して、加算結果を生成するように構成された加算器と、シフト値に応じて加算結果の桁数をシフトさせて、シフトされた加算結果を生成するように構成されたシフターと、シフトされた加算結果に基づいて、出力の特徴データを生成するように構成されたアキュムレータと、を備える。【選択図】図２
2020205045.tif 000002
【特許請求の範囲】
【請求項１】
入力の特徴データの第１の特徴ビット及び重みデータの第１の重みビットに対する乗算を遂行して、第１の乗算結果を生成するように構成された第１のビット演算器と、
前記入力の特徴データの第２の特徴ビット及び前記重みデータの第２の重みビットに対する乗算を遂行して、第２の乗算結果を生成するように構成された第２のビット演算器と、
前記第１の乗算結果と前記第２の乗算結果とを加算して、加算結果を生成するように構成された加算器と、
シフト値に応じて前記加算結果の桁数をシフトさせて、シフトされた加算結果を生成するように構成されたシフターと、
前記シフトされた加算結果に基づいて、出力の特徴データを生成するように構成されたアキュムレータと、を備えることを特徴とするニューラルネットワークアクセラレータ。
【請求項２】
前記シフト値は、前記入力の特徴データの前記第１の特徴ビットの桁数、及び前記重みデータの前記第１の重みビットの桁数に基づいて決定されるか、又は前記入力の特徴データの前記第２の特徴ビットの桁数、及び前記重みデータの前記第２の重みビットの桁数に基づいて決定されることを特徴とする請求項１に記載のニューラルネットワークアクセラレータ。
【請求項３】
前記入力の特徴データは、前記第１のビット演算器及び前記第２のビット演算器の動作ビット数に応じて、前記第１の特徴ビット及び前記第２の特徴ビットに分割され、
前記重みデータは、前記動作ビット数に応じて前記第１の重みビット及び前記第２の重みビットに分割されることを特徴とする請求項１に記載のニューラルネットワークアクセラレータ。
【請求項４】
前記第１の特徴ビットのビット数と前記第１の重みビットのビット数は、同一であることを特徴とする請求項１に記載のニューラルネットワークアクセラレータ。
【請求項５】
前記第１のビット演算器は、ＸＮＯＲ演算又はＡＮＤ演算の中から、選択信号に応じて選択された１つに基づいて、前記第１の乗算結果を生成することを特徴とする請求項１に記載のニューラルネットワークアクセラレータ。
【請求項６】
前記出力の特徴データは、前記入力の特徴データ及び前記重みデータに対する乗算結果であることを特徴とする請求項１に記載のニューラルネットワークアクセラレータ。
【請求項７】
入力の特徴データの第１の特徴ビット及び重みデータの第１の重みビットに基づいて、第１の演算結果を生成するように構成された第１のプロセッシング回路と、
前記入力の特徴データの第２の特徴ビット及び前記重みデータの第２の重みビットに基づいて、第２の演算結果を生成するように構成された第２のプロセッシング回路と、
第１のシフト値に基づいて前記第１の演算結果の桁数をシフトさせて、第１のシフトされた演算結果を生成するように構成された第１のシフターと、
前記第１のシフト値とは異なる第２のシフト値に基づいて前記第２の演算結果の桁数をシフトさせて、第２のシフトされた演算結果を生成するように構成された第２のシフターと、
前記第１のシフトされた演算結果及び前記第２のシフトされた演算結果に基づいて、出力の特徴データを生成するように構成されたアキュムレータと、を備えることを特徴とするニューラルネットワークアクセラレータ。
【請求項８】
前記第１のシフト値は、前記入力の特徴データの前記第１の特徴ビットの桁数、及び前記重みデータの前記第１の重みビットの桁数に基づいて決定され、
前記第２のシフト値は、前記入力の特徴データの前記第２の特徴ビットの桁数、及び前記重みデータの前記第２の重みビットの桁数に基づいて決定されることを特徴とする請求項７に記載のニューラルネットワークアクセラレータ。
【請求項９】
前記第１のプロセッシング回路は、前記第１の特徴ビット及び前記第１の重みビットに対する第１の乗算結果と、前記入力の特徴データの第３の特徴ビット及び前記重みデータの第３の重みビットに対する第２の乗算結果とを加えて、前記第１の演算結果を生成することを特徴とする請求項７に記載のニューラルネットワークアクセラレータ。
【請求項１０】
前記入力の特徴データの前記第１の特徴ビットの桁数、及び前記重みデータの前記第１の重みビットの桁数に基づいて決定される前記第１の乗算結果の桁数と、前記入力の特徴データの前記第３の特徴ビットの桁数、及び前記重みデータの前記第３の重みビットの桁数に基づいて決定される前記第２の乗算結果の桁数とは、同一であることを特徴とする請求項９に記載のニューラルネットワークアクセラレータ。
【請求項１１】
前記第１の特徴ビットのビット数と前記第１の重みビットのビット数は、同一であることを特徴とする請求項７に記載のニューラルネットワークアクセラレータ。
【請求項１２】
前記出力の特徴データは、前記入力の特徴データ及び前記重みデータに対する乗算結果であることを特徴とする請求項７に記載のニューラルネットワークアクセラレータ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、半導体装置に関し、より詳しくは、プレシジョンスケーラブル（ｐｒｅｃｉｓｉｏｎ  ｓｃａｌａｂｌｅ）ニューラルネットワークアクセラレータに関する。
【背景技術】
【０００２】
ニューラルネットワークアクセラレータは、人間の頭脳を模倣してデータを処理するハードウェアである。ニューラルネットワークアクセラレータは、多様なニューラルネットワークアルゴリズムに基づいてデータを処理する。データを処理するために、ニューラルネットワークアクセラレータは、膨大な量のマトリックス乗算を行う。この場合、データを格納するための多くのメモリ使用量と、データ処理のための多くの演算量とが要求される。メモリ使用量と演算量を減少させるために、データのビット数を減少させるように、データのプレシジョン（ｐｒｅｃｉｓｉｏｎ）を下げる研究が進められている。データのプレシジョン（精度）が低くなると、メモリ使用量と演算量が減少する代わりに、ニューラルネットワーク演算の正確度（ａｃｃｕｒａｃｙ）が減少する。
【０００３】
ニューラルネットワークの演算に必要とされる正確度は、アプリケーション（ａｐｐｌｉｃａｔｉｏｎ）に応じて異なる。多様なアプリケーションをサポートするために、必要とされる正確度に応じたプレシジョンに基づいて演算を遂行できるニューラルネットワークアクセラレータが必要である。しかし、このようなプレシジョンスケーラブル（ｐｒｅｃｉｓｉｏｎ  ｓｃａｌａｂｌｅ）ニューラルネットワークアクセラレータが実装されると、ハードウェアの面積が大きくなり、演算で消費される電力が大きくなる。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開平５−３４６９１４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
本発明は、上述した技術的問題に鑑みてなされたものであって、本発明の目的は、ハードウェアの面積が小さく、演算における電力消費が低いプレシジョンスケーラブル（ｐｒｅｃｉｓｉｏｎ  ｓｃａｌａｂｌｅ）ニューラルネットワークアクセラレータを提供することにある。
【課題を解決するための手段】
【０００６】
上記目的を達成するためになされた本発明の一態様によるニューラルネットワークアクセラレータは、入力の特徴データの第１の特徴ビット及び重みデータの第１の重みビットに対する乗算を遂行して、第１の乗算結果を生成するように構成された第１のビット演算器と、前記入力の特徴データの第２の特徴ビット及び前記重みデータの第２の重みビットに対する乗算を遂行して、第２の乗算結果を生成するように構成された第２のビット演算器と、前記第１の乗算結果と前記第２の乗算結果とを加算して、加算結果を生成するように構成された加算器と、シフト値に応じて前記加算結果の桁数をシフトさせて、シフトされた加算結果を生成するように構成されたシフターと、前記シフトされた加算結果に基づいて、出力の特徴データを生成するように構成されたアキュムレータと、を備えることを特徴とする。
【０００７】
前記シフト値は、前記入力の特徴データの前記第１の特徴ビットの桁数、及び前記重みデータの前記第１の重みビットの桁数に基づいて決定されるか、又は前記入力の特徴データの前記第２の特徴ビットの桁数、及び前記重みデータの前記第２の重みビットの桁数に基づいて決定され得る。
前記入力の特徴データは、前記第１のビット演算器及び前記第２のビット演算器の動作ビット数に応じて、前記第１の特徴ビット及び前記第２の特徴ビットに分割され、前記重みデータは、前記動作ビット数に応じて、前記第１の重みビット及び前記第２の重みビットに分割され得る。
前記第１の特徴ビットのビット数と前記第１の重みビットのビット数は、同一であることが好ましい。
前記第１のビット演算器は、ＸＮＯＲ演算又はＡＮＤ演算の中から、選択信号に応じて選択された１つに基づいて、前記第１の乗算結果を生成し得る。
前記出力の特徴データは、前記入力の特徴データ及び前記重みデータに対する乗算結果であり得る。
【０００８】
上記目的を達成するためになされた本発明の他の態様によるニューラルネットワークアクセラレータは、入力の特徴データの第１の特徴ビット及び重みデータの第１の重みビットに基づいて、第１の演算結果を生成するように構成された第１のプロセッシング回路と、前記入力の特徴データの第２の特徴ビット及び前記重みデータの第２の重みビットに基づいて、第２の演算結果を生成するように構成された第２のプロセッシング回路と、第１のシフト値に基づいて前記第１の演算結果の桁数をシフトさせて、第１のシフトされた演算結果を生成するように構成された第１のシフターと、前記第１のシフト値とは異なる第２のシフト値に基づいて前記第２の演算結果の桁数をシフトさせて、第２のシフトされた演算結果を生成するように構成された第２のシフターと、前記第１のシフトされた演算結果及び前記第２のシフトされた演算結果に基づいて、出力の特徴データを生成するように構成されたアキュムレータと、を備えることを特徴とする。
【０００９】
前記第１のシフト値は、前記入力の特徴データの前記第１の特徴ビットの桁数、及び前記重みデータの前記第１の重みビットの桁数に基づいて決定され、前記第２のシフト値は、前記入力の特徴データの前記第２の特徴ビットの桁数、及び前記重みデータの前記第２の重みビットの桁数に基づいて決定され得る。
前記第１のプロセッシング回路は、前記第１の特徴ビット及び前記第１の重みビットに対する第１の乗算結果と、前記入力の特徴データの第３の特徴ビット及び前記重みデータの第３の重みビットに対する第２の乗算結果とを加えて、前記第１の演算結果を生成し得る。
前記入力の特徴データの前記第１の特徴ビットの桁数、及び前記重みデータの前記第１の重みビットの桁数に基づいて決定される前記第１の乗算結果の桁数と、前記入力の特徴データの前記第３の特徴ビットの桁数、及び前記重みデータの前記第３の重みビットの桁数に基づいて決定される前記第２の乗算結果の桁数とは、同一であることが好ましい。
前記第１の特徴ビットのビット数と前記第１の重みビットのビット数とは同一であり得る。
前記出力の特徴データは、前記入力の特徴データ及び前記重みデータに対する乗算結果であり得る。
【発明の効果】
【００１０】
本発明によれば、ハードウェアの面積が減少したプレシジョンスケーラブル（ｐｒｅｃｉｓｉｏｎ  ｓｃａｌａｂｌｅ）ニューラルネットワークアクセラレータを提供することができる。
また、ニューラルネットワーク演算における消費電力が最小化されたプレシジョンスケーラブル（ｐｒｅｃｉｓｉｏｎ  ｓｃａｌａｂｌｅ）ニューラルネットワークアクセラレータを提供することができる。
【図面の簡単な説明】
【００１１】
【図１】本発明の一実施形態によるニューラルネットワークアクセラレータのブロック図である。
【図２】図１のプロセッシング回路の一例を示すブロック図である。
【図３Ａ】図２のプロセッシング回路が入力の特徴データ及び重みデータに基づいて、出力の特徴データを生成する一例を示す図である。
【図３Ｂ】図２のプロセッシング回路が入力の特徴データ及び重みデータに基づいて、出力の特徴データを生成する一例を示す図である。
【図４】図２のプロセッシング回路が入力の特徴データ及び重みデータに基づいて、出力の特徴データを生成する他の例を示す図である。
【図５】図２のプロセッシング回路の動作の一例を示すフローチャートである。
【図６Ａ】図２のビット演算器を構成する電子回路の一例を示す図である。
【図６Ｂ】図６Ａの電子回路と同じ動作を遂行する論理回路の一例を示す図である。
【発明を実施するための形態】
【００１２】
以下、図面を参照しながら、本発明の実施形態を詳しく説明する。以下の説明では、詳しい構成及び構造のような細部的情報は、単に、本発明の実施形態の全体的な理解を助けるために提供される。したがって、本発明の思想及び技術的範囲から逸脱しない範囲で、本明細書に記載された実施形態の変形は、通常の技術者（当業者）によって遂行され得る。さらに、明確性と簡潔性のため、よく知られている機能と構造に対する説明は省略する。本明細書で使用される用語は、本発明の機能を考慮して定義された用語であり、特定の機能に限定されない。用語の定義は、詳しい説明に記載された事項をベースに決定される。
【００１３】
以下の図面又は詳しい説明でのモジュールは、図面に示すか、又は詳しい説明に記載された構成要素に加えて、他のものと連結され得る。モジュール又は構成要素間の連結は、各々直接又は間接的であり得る。モジュール又は構成要素間の連結は、各々通信による連結であるか、又は物理的接続であり得る  。
【００１４】
明らかに別のものを示していると定義しない限り、本明細書で使用される技術的又は科学的な意味を含むすべての用語は、本発明が属する技術分野における通常の知識を有する者によって理解される。一般的に、辞書に定義された用語は、関連技術分野における文脈的意味と同等の意味を有するように解釈され、本明細書で明確に定義されていない限り、理想的又は過度に形式的な意味を有するように解釈されない。
【００１５】
図１は、本発明の一実施形態によるニューラルネットワークアクセラレータのブロック図である。ニューラルネットワークアクセラレータ１０００は、ニューラルネットワークをベースに、入力の特徴データ（ＩＦ）を処理して出力の特徴データ（ＯＦ）を生成する。例えば、ニューラルネットワークアクセラレータ１０００は、コンボリューショナルニューラルネットワーク（ＣＮＮ：Ｃｏｎｖｏｌｕｔｉｏｎａｌ  Ｎｅｕｒａｌ  Ｎｅｔｗｏｒｋ）をベースにして、入力の特徴データ（ＩＦ）を処理する。しかし、本発明はこれに限定されるものではなく、ニューラルネットワークアクセラレータ１０００は、多様なニューラルネットワークアルゴリズムを利用し得る。
【００１６】
図１に示すように、ニューラルネットワークアクセラレータ１０００は、メモリ１０及びプロセッシング回路１００を含む。メモリ１０は、重みデータ（ＷＴ）を格納する。例えば、重みデータ（ＷＴ）は、カーネル（ｋｅｒｎｅｌ）のデータである。例えば、メモリ１０は、ＤＲＡＭ、ＳＲＡＭなどの揮発性メモリ又はフラッシュメモリ、ＭＲＡＭなどの不揮発性メモリで実装される。
【００１７】
プロセッシング回路１００は、メモリ１０から重みデータ（ＷＴ）を受信し、重みデータ（ＷＴ）及び入力の特徴データ（ＩＦ）に基づいて、演算を遂行する。プロセッシング回路１００は、演算結果として出力の特徴データ（ＯＦ）を生成する。
【００１８】
図１では、メモリ１０がニューラルネットワークアクセラレータ１０００の内部に含まれるものとして示したが、本発明はこれに限定されない。例えば、ニューラルネットワークアクセラレータ１０００は、外部のメモリから重みデータ（ＷＴ）を受信してもよい。
【００１９】
本発明の一実施形態によるニューラルネットワークアクセラレータ１０００は、要求される正確度に応じて可変されたデータのプレシジョン（精度）に基づいて演算を行う。具体的には、要求される正確度に応じて、入力の特徴データ（ＩＦ）及び重みデータ（ＷＴ）のビット数が異なっても、ニューラルネットワークアクセラレータ１０００は、多様なビット数を有する入力の特徴データ（ＩＦ）及び重みデータ（ＷＴ）に基づいて演算を行う。これにより、ニューラルネットワークアクセラレータ１０００は、ニューラルネットワークをベースに、多様な正確度を必要とするアプリケーションに対して効率的な演算を遂行することができる。
【００２０】
図２は、図１のプロセッシング回路の一例を示すブロック図である。図２に示すように、プロセッシング回路１００は、第１〜第ｎのサブプロセッシング回路（１１０〜１３０）、第１〜第ｎのシフター（１４０〜１６０）、及びアキュムレータ１７０を含む。第１のサブプロセッシング回路１１０は、第１〜第４のビット演算器（１１１〜１１４）及び第１の加算器１１５を含む。第２のサブプロセッシング回路１２０は、第５〜第８のビット演算器（１２１〜１２４）及び第２の加算器１２５を含む。第ｎのサブプロセッシング回路１３０は、第（４ｎ−３）〜第４ｎのビット演算器（１３１〜１３４）及び第ｎの加算器１３５を含む。
【００２１】
ビット演算器の各々は、入力される２つのデータに対して乗算を遂行する。たとえば、入力の特徴データ（ＩＦ）の中の一部のビット、及び重みデータ（ＷＴ）の中の一部のビットが第１のビット演算器１１１に提供される。この場合、第１のビット演算器１１１は、提供された入力の特徴データ（ＩＦ）の中の一部のビット、及び重みデータ（ＷＴ）の中の一部のビットに対して乗算演算を遂行する。例えば、ビット演算器の各々は、２ビットずつ（つまり、ビット演算器の動作ビット数が２ビット）の乗算を行う。しかし、本発明はこれに限定されるものではない。
【００２２】
加算器の各々は、対応するビット演算器から演算結果を受信し、受信した演算結果に対して加算を行う。例えば、第１の加算器１１５は、第１〜第４のビット演算器（１１１〜１１４）から提供される演算結果に対して加算を行う。
【００２３】
シフターの各々は、対応するサブプロセッシング回路から提供された加算結果の桁数をシフトさせる。一実施形態として、シフターの各々は、予め決められたシフト値に基づいて加算結果の桁数をシフトさせるか、又は別の制御信号として入力されるシフト値に基づいて加算結果の桁数をシフトさせる。例えば、シフターはシフト値に基づいて加算結果に０（ｚｅｒｏ）のビットを追加して、加算結果の桁数をシフトさせる。
【００２４】
一実施形態で、シフターは、異なるシフト値に基づいて加算結果の桁数をシフトさせる。例えば、第１のシフター１４０は、加算結果の桁数を４ビット程シフトさせ、第２のシフター１５０は、加算結果の桁数を２ビット程シフトさせる。しかし、本発明はこれに限定されるものではなく、異なるシフターが同じシフト値に基づいて加算結果の桁数をシフトさせてもよい。
【００２５】
アキュムレータ１７０は、シフター（１４０〜１６０）から、シフトされた加算結果を受信する。アキュムレータ１７０は、シフトされた加算結果に対して加算を行う。これにより、加算結果として、出力の特徴データ（ＯＦ）又は部分和（ｐａｒｔｉａｌ  ｓｕｍ）が生成される。加算結果として出力の特徴データ（ＯＦ）が生成される場合、アキュムレータ１７０は、出力の特徴データ（ＯＦ）を出力する。加算結果として部分和が生成される場合には、アキュムレータ１７０は、生成された部分和を累積して出力の特徴データ（ＯＦ）を生成する。
【００２６】
図２では、プロセッシング回路１００が、ｎ個のサブプロセッシング回路（１１０〜１３０）を含むものとして示したが、本発明はこれに限定されない。例えば、プロセッシング回路１００は、多様な数のサブプロセッシング回路を含み得る。この場合、サブプロセッシング回路の数に応じて対応するシフターの数が変わる。
【００２７】
図２では、１つのサブプロセッシング回路が４つのビット演算器、及び１つの加算器を含むものとして示したが、本発明はこれに限定されない。例えば、１つのサブプロセッシング回路は、多様な数のビット演算器及び多様な数の加算器を含み得る。
【００２８】
以下では、図３Ａ〜図５を参照して、図２のプロセッシング回路１００の動作を詳しく説明する。説明の便宜のために、ニューラルネットワークアクセラレータ１０００が、４ビットの入力の特徴データ（ＩＦ）及び４ビットの重みデータ（ＷＴ）に基づいて、出力の特徴データ（ＯＦ）を算出すると仮定する。しかし、本発明はこれに限定されるものではなく、ニューラルネットワークアクセラレータ１０００は、多様なビット数の入力の特徴データ（ＩＦ）及び重みデータ（ＷＴ）に対する演算をサポートし得る。つまり、ニューラルネットワークアクセラレータ１０００は、多様なプレシジョン（精度）を有するデータに対する演算をサポートする。また、説明の便宜のために、ビット演算器の各々が２ビットずつの乗算を遂行すると仮定する。つまり、ビット演算器の動作ビット数が２ビットであると仮定するが、本発明はこれに限定されない。
【００２９】
図３Ａ及び図３Ｂは、図２のプロセッシング回路が入力の特徴データ及び重みデータに基づいて、出力の特徴データを生成する１つの例を示す図である。プロセッシング回路２００は、第１〜第２の入力の特徴データ（ＩＦ１、ＩＦ２）と、第１〜第２の重みデータ（ＷＴ１、ＷＴ２）とに基づいて、出力の特徴データ（ＯＦ）を算出する。具体的には、プロセッシング回路２００は、第１の入力の特徴データ（ＩＦ１）及び対応する第１の重みデータ（ＷＴ１）に対する乗算結果と、第２の入力の特徴データ（ＩＦ２）と対応する第２の重みデータ（ＷＴ２）に対する乗算結果とを加えて出力の特徴データ（ＯＦ）を算出する。出力の特徴データ（ＯＦ）を算出するために、図３Ａに示すように、プロセッシング回路２００は、第１の部分和（ＰＳ１）を先に算出する。その次に、図３Ｂに示すように、プロセッシング回路２００は、第２の部分和（ＰＳ２）を算出する。この場合、第１の部分和（ＰＳ１）及び第２の部分和（ＰＳ２）は、所望の特徴の出力データ（ＯＦ）を算出するための中間データである。プロセッシング回路２００は、第１の部分和（ＰＳ１）と第２の部分和（ＰＳ２）を加えて、出力の特徴データ（ＯＦ）を生成する。
【００３０】
以下では、図３Ａを参照して、第１の部分和（ＰＳ１）の算出動作を説明した後、図３Ｂを参照して、第２の部分和（ＰＳ２）の算出動作を説明する。
【００３１】
まず、図３Ａに示すように、プロセッシング回路２００は、第１及び第２の入力の特徴データ（ＩＦ１、ＩＦ２）と、第１及び第２の重みデータ（ＷＴ１、ＷＴ２）とを受信する。例えば、第１の入力の特徴データ（ＩＦ１）は、「１０１１」であり、第２の入力の特徴データ（ＩＦ２）は、「０１１１」である。第１の重みデータ（ＷＴ１）は、「０１１０」であり、第２の重みデータ（ＷＴ２）は「００１１」である。
【００３２】
第１及び第２の入力の特徴データ（ＩＦ１、ＩＦ２）と、第１及び第２の重みデータ（ＷＴ１、ＷＴ２）とは、ビット演算器の動作ビット数に応じて２ビットずつに分割される。例えば、第１の入力の特徴データ（ＩＦ１）は、特徴ビット（ｆ１１、ｆ１２）に分割され、第２の入力の特徴データ（ＩＦ２）は、特徴ビット（ｆ２１、ｆ２２）に分割される。第１の重みデータ（ＷＴ１）は、重みビット（ｗ１１、ｗ１２）に分割され、第２の重みデータ（ＷＴ２）は、重みビット（ｗ２１、ｗ２２）に分割される。この場合、特徴ビット（ｆ１１、ｆ２１）の桁数は、特徴ビット（ｆ１２、ｆ２２）の桁数よりも高い可能性があり、重みビット（ｗ１１、ｗ２１）の桁数は、重みビット（ｗ１２、ｗ２２）の桁数より高い可能性がある。
【００３３】
分割されたビットは、分割されたビットの桁数に応じて、サブプロセッシング回路及びビット演算器に提供される。例えば、第１の部分和（ＰＳ１）を算出するために、特徴ビット（ｆ１１）及び重みビット（ｗ１１）は、第１のサブプロセッシング回路２１０の第１のビット演算器２１１に提供される。特徴ビット（ｆ２１）及び重みビット（ｗ２１）は、第１のサブプロセッシング回路２１０の第２のビット演算器２１２に提供される。この場合、出力の特徴データ（ＯＦ）を基準に、特徴ビット（ｆ１１）及び重みビット（ｗ１１）に対する第１の乗算結果（ＭＲ１）の桁数と、特徴ビット（ｆ２１）及び重みビット（ｗ２１）に対する第２の乗算結果（ＭＲ２）の桁数とは、同一である。特徴ビットの（ｆ１２）及び重みビット（ｗ１１）は、第２のサブプロセッシング回路２２０の第５のビット演算器２２１に提供される。特徴ビットの（ｆ２２）及び重みビット（ｗ２１）は、第２のサブプロセッシング回路２２０の第６のビット演算器２２２に提供される。この場合、出力の特徴データ（ＯＦ）を基準に、特徴ビット（ｆ１２）及び重みビット（ｗ１１）に対する第３の乗算結果（ＭＲ３）の桁数と、特徴ビット（ｆ２２）及び重みビット（ｗ２１）に対する第４の乗算結果（ＭＲ４）の桁数とは、同一である。
【００３４】
ビット（特徴ビット及び重みビット）を受信したビット演算器は、受信したビットに基づいて乗算演算を遂行する。例えば、第１のビット演算器２１１は、特徴ビット（ｆ１１）及び重みビット（ｗ１１）に対する乗算を遂行して、第１の乗算結果（ＭＲ１）を算出する。
【００３５】
加算器は、提供された乗算結果を加えて加算結果を生成する。例えば、第１の加算器２１５は、第１の乗算結果（ＭＲ１）に第２の乗算結果（ＭＲ２）を加えて、第１の加算結果（ＡＲ１）を生成する。生成された加算結果は、対応するシフターに提供される。例えば、第１の加算結果（ＡＲ１）は、対応する第１のシフター２３０に提供される。
【００３６】
シフターは、シフト値に基づいて加算結果の桁数をシフトさせる。例えば、第１のシフター２３０は、４であるシフト値に基づいて、第１の加算結果（ＡＲ１）の桁数を４ビット程シフトさせる。この場合、シフト値「４」は、特徴ビット（ｆ１１、ｆ２１）及び重みビット（ｗ１１、ｗ２１）の桁数に基づいて定められる。第２のシフター２４０は、２であるシフト値に基づいて、第２の加算結果（ＡＲ２）の桁数を２ビット程シフトさせる。この場合、シフト値「２」は、特徴ビット（ｆ１２、ｆ２２）及び重みビット（ｗ１１、ｗ２１）の桁数に基づいて定められる。これにより、第１のシフター２３０から第１のシフトされた加算結果（ＳＲ１）が生成され、第２のシフター２４０から第２のシフトされた加算結果（ＳＲ２）が生成される。
【００３７】
アキュムレータ２５０は、第１のシフトされた加算結果（ＳＲ１）と第２のシフトされた加算結果（ＳＲ２）を加えて、第１の部分和（ＰＳ１）を生成する。
【００３８】
図３Ｂに示すように、第２の部分和（ＰＳ２）を算出するために、分割されたビットが、分割されたビットの桁数に応じてサブプロセッシング回路及びビット演算器に提供される。例えば、特徴ビット（ｆ１１）及び重みビット（ｗ１２）は、第１のサブプロセッシング回路２１０の第１のビット演算器２１１に提供される。特徴ビット（ｆ２１）及び重みビット（ｗ２２）は、第１のサブプロセッシング回路２１０の第２のビット演算器２１２に提供される。この場合、出力の特徴データ（ＯＦ）を基準に、特徴ビット（ｆ１１）及び重みビット（ｗ１２）に対する第５の乗算結果（ＭＲ５）の桁数と、特徴ビット（ｆ２１）及び重みビット（ｗ２２）に対する第６の乗算結果（ＭＲ６）の桁数とは、同一である。特徴ビット（ｆ１２）及び重みビット（ｗ１２）は、第２のサブプロセッシング回路２２０の第５のビット演算器２２１に提供される。特徴ビット（ｆ２２）及び重みビット（ｗ２２）は、第２のサブプロセッシング回路２２０の第６のビット演算器２２２に提供される。この場合、出力の特徴データ（ＯＦ）を基準に、特徴ビット（ｆ１２）及び重みビット（ｗ１２）に対する第７の乗算結果（ＭＲ７）の桁数と、特徴ビット（ｆ２２）及び重みビット（ｗ２２）に対する第８の乗算結果（ＭＲ８）の桁数とは、同一である。
【００３９】
ビットを受信したビット演算器は、受信したビットに基づいて、乗算演算を遂行する。例えば、第１のビット演算器２１１は、特徴ビット（ｆ１１）及び重みビット（ｗ１２）に対する乗算を遂行して、第５の乗算結果（ＭＲ５）を算出する。
【００４０】
加算器は、提供された乗算結果を加えて加算結果を生成する。例えば、第１の加算器２１５は、第５の乗算結果（ＭＲ５）に第６の乗算結果（ＭＲ６）を加えて、第３の加算結果（ＡＲ３）を生成する。生成された加算結果は、対応するシフターに提供される。
【００４１】
シフターは、シフト値に基づいて加算結果の桁数をシフトさせる。例えば、第１のシフター２３０は、２であるシフト値に基づいて第３の加算結果（ＡＲ３）の桁数を２ビット程シフトさせる。この場合、シフト値「２」は、特徴ビット（ｆ１１、ｆ２１）及び重みビット（ｗ１２、ｗ２２）の桁数に基づいて定められる。第２のシフター２４０は、０であるシフト値に基づいて、第４の加算結果（ＡＲ４）の桁数をシフトさせない。この場合、シフト値「０」は、特徴ビット（ｆ１２、ｆ２２）及び重みビット（ｗ１２、ｗ２２）の桁数に基づいて定められる。これにより、第１のシフター２３０から第３のシフトされた加算結果（ＳＲ３）が生成され、第２のシフター２４０から第４のシフトされた加算結果（ＳＲ４）が生成される。
【００４２】
アキュムレータ２５０は、第３のシフトされた加算結果（ＳＲ３）に第４のシフトされた加算結果（ＳＲ４）を加えて、第２の部分和（ＰＳ２）を生成する。アキュムレータ２５０は、予め格納された第１の部分和（ＰＳ１）と第２の部分和（ＰＳ２）を加えて、出力の特徴データ（ＯＦ）を生成する。
【００４３】
図４は、図２のプロセッシング回路が入力の特徴データ及び重みデータに基づいて、出力の特徴データを生成する他の例を示す図である。図４に示すように、プロセッシング回路３００は、第１及び第２の入力の特徴データ（ＩＦ１、ＩＦ２）と、第１及び第２の重みデータ（ＷＴ１、ＷＴ２）を受信する。例えば、第１の入力の特徴データ（ＩＦ１）は、「１０１１」であり、第２の入力の特徴データ（ＩＦ２）は、「０１１１」である。第１の重みデータ（ＷＴ１）は、「０１１０」であり、第２の重みデータ（ＷＴ２）は「００１１」である。
【００４４】
第１及び第２の入力の特徴データ（ＩＦ１、ＩＦ２）と、第１及び第２の重みデータ（ＷＴ１、ＷＴ２）とは、図３Ａ及び図３Ｂを参照して説明したように、ビット演算器の動作ビット数に応じて２ビットずつに分割される。
【００４５】
分割されたビットは、分割されたビットの桁数に応じて、サブプロセッシング回路及びビット演算器に提供される。例えば、特徴ビット（ｆ１１）及び重みビット（ｗ１１）は、第１のサブプロセッシング回路３１０の第１のビット演算器３１１に提供される。特徴ビット（ｆ２１）及び重みビット（ｗ２１）は、第１のサブプロセッシング回路３１０の第２のビット演算器３１２に提供される。この場合、出力の特徴データ（ＯＦ）を基準に、特徴ビット（ｆ１１）及び重みビット（ｗ１１）に対する第１の乗算結果（ＭＲ１）の桁数と、特徴ビット（ｆ２１）及び重みビット（ｗ２１）に対する第２の乗算結果（ＭＲ２）の桁数とは、同一である。特徴ビット（ｆ１２）及び重みビット（ｗ１１）は、第２のサブプロセッシング回路３２０の第５のビット演算器３２１に提供される。特徴ビット（ｆ２２）及び重みビット（ｗ２１）は、第２のサブプロセッシング回路３２０の第６のビット演算器３２２に提供される。特徴ビット（ｆ１１）及び重みビット（ｗ１２）は、第２のサブプロセッシング回路３２０の第７のビット演算器３２３に提供される。特徴ビット（ｆ２１）及び重みビット（ｗ２２）は、第２のサブプロセッシング回路３２０の第８のビット演算器３２４に提供される。この場合、出力の特徴データ（ＯＦ）を基準に、特徴ビット（ｆ１２）及び重みビット（ｗ１１）に対する第３の乗算結果（ＭＲ３）の桁数と、特徴ビット（ｆ２２）及び重みビット（ｗ２１）の第４の乗算結果（ＭＲ４）の桁数と、特徴ビット（ｆ１１）及び重みビット（ｗ１２）に対する第５の乗算結果（ＭＲ５）の桁数と、特徴ビット（ｆ２１）及び重みビット（ｗ２２）に対する第６の乗算結果（ＭＲ６）の桁数とは、すべて同一である。特徴ビット（ｆ１２）及び重みビット（ｗ１２）は、第３のサブプロセッシング回路３３０の第９のビット演算器３３１に提供される。特徴ビット（ｆ２２）及び重みビット（ｗ２２）は、第３のサブプロセッシング回路３３０の第１０のビット演算器３３２に提供される。この場合、出力の特徴データ（ＯＦ）を基準に、特徴ビット（ｆ１２）及び重みビット（ｗ１２）に対する第７の乗算結果（ＭＲ７）の桁数と、特徴ビット（ｆ２２）及び重みビット（ｗ２２）に対する第８の乗算結果（ＭＲ８）の桁数とは、同一である。
【００４６】
ビットを受信したビット演算器は、受信したビットに基づいて、乗算演算を遂行する。例えば、第１のビット演算器３１１は、特徴ビット（ｆ１１）及び重みビット（ｗ１１）に対する乗算を遂行して、第１の乗算結果（ＭＲ１）を算出する。
【００４７】
加算器は、提供された乗算結果を加えて加算結果を生成する。例えば、第２の加算器３２５は、第３〜第６の乗算結果（ＭＲ３〜ＭＲ６）を加えて、第２の加算結果（ＡＲ２）を生成する。生成された加算結果は、対応するシフターに提供される。
【００４８】
シフターは、シフト値に基づいて加算結果の桁数をシフトさせる。例えば、第１のシフター３４０は、４であるシフト値に基づいて、第１の加算結果（ＡＲ１）の桁数を４ビット程シフトさせる。この場合、シフト値「４」は、特徴ビット（ｆ１１、ｆ２１）及び重みビット（ｗ１１、ｗ２１）の桁数に基づいて定められる。第２のシフター３５０は、２であるシフト値に基づいて、第２の加算結果（ＡＲ２）の桁数を２ビット程シフトさせる。この場合、シフト値「２」は、特徴ビット（ｆ１１、ｆ１２、ｆ２１、ｆ２２）及び重みビット（ｗ１１、ｗ１２、ｗ２１、ｗ２２）の桁数に基づいて定められる。第３のシフター３６０は、０であるシフト値に基づいて第３の加算結果（ＡＲ３）の桁数を０ビット程シフトさせる。この場合、シフト値「０」は、特徴ビット（ｆ１２、ｆ２２）及び重みビット（ｗ１２、ｗ２２）の桁数に基づいて定められる。これにより、第１〜第３のシフター（３４０〜３６０）から第１〜第３のシフトされた加算結果（ＳＲ１〜ＳＲ３）が生成される。
【００４９】
アキュムレータ３７０は、第１〜第３のシフトされた加算結果（ＳＲ１〜ＳＲ３）を加えて、出力の特徴データ（ＯＦ）を生成する。
【００５０】
上述したように、本発明の一実施形態によるプロセッシング回路は、入力の特徴データ（ＩＦ）の特徴ビット及び重みデータ（ＷＴ）の重みビットの桁数に応じて、出力の特徴データ（ＯＦ）を算出するための演算を遂行する。この場合、１つのサブプロセッシング回路のビット演算器から算出される乗算結果の桁数が同一であるため、ビット演算器の各々から算出される乗算結果の桁数をシフトさせずに、乗算結果を加える。これにより、本発明の一実施形態によるプロセッシング回路は、ビット演算器の各々に対応するシフターを含まずに、サブプロセッシング回路の各々に対応するシフターだけが備えられる。したがって、本発明の一実施形態によるニューラルネットワークアクセラレータ１０００のハードウェアの面積が減少する。また、シフト動作が減少するため、ニューラルネットワークアクセラレータ１０００の演算量が減少する。
【００５１】
図５は、図２のプロセッシング回路の動作の一例を示すフローチャートである。図２及び図５を参照すると、Ｓ１０１段階で、プロセッシング回路１００は、入力の特徴データ（ＩＦ）の特徴ビット及び重みデータ（ＷＴ）の重みビットを分割する。具体的には、プロセッシング回路１００は、ビット演算器の動作ビット数に応じて特徴ビット及び重みビットを分割する。
【００５２】
Ｓ１０２段階で、プロセッシング回路１００は、分割された特徴ビット及び分割された重みビットに対する乗算演算を遂行する。この場合、乗算結果の桁数は、分割された特徴のビットの桁数及び分割された重みビットの桁数に応じて定められる。Ｓ１０３段階で、プロセッシング回路１００は、同一の桁数を有する乗算結果に対して加算演算を遂行する。Ｓ１０４段階で、プロセッシング回路１００は、シフト値に基づいて加算結果の桁数をシフトさせる。この場合、シフト値の桁数は、分割された特徴ビットの桁数及び分割された重みビットの桁数に応じて定められる。Ｓ１０５段階で、プロセッシング回路１００は、シフトされた加算結果に基づいて、出力の特徴データを算出する。
【００５３】
図６Ａは、図２のビット演算器を構成する電子回路の一例を示す図である。図６Ｂは、図６Ａの電子回路と同じ動作を遂行する論理回路の一例を示す図である。具体的には、図６Ａの電子回路は、図６Ｂに示すように、選択信号（ＳＥＬ）に基づいて２入力信号（Ａ、Ｂ）の排他的否定論理和（ＸＮＯＲ）の演算結果、又は２入力信号（Ａ、Ｂ）の論理積（ＡＮＤ）の演算結果のいずれかを出力信号（ＯＵＴ）として出力する。
【００５４】
図６Ａに示すように、ビット演算器１０１は、第１〜第６のＰ−チャネルＭＯＳＦＥＴ（ＰＭ１〜ＰＭ６）及び第１〜第６のＮ−チャネルＭＯＳＦＥＴ（ＮＭ１〜ＮＭ６）を含む。第１のＰ−チャネルＭＯＳＦＥＴ（ＰＭ１）の第１端子には電源電圧（ＶＤＤ）が印加され、ゲート端子には入力信号（Ａ）が印加される。第２のＰ−チャネルＭＯＳＦＥＴ（ＰＭ２）の第１端子には電源電圧（ＶＤＤ）が印加され、ゲート端子には入力信号（Ｂ）が印加される。第３のＰ−チャネルＭＯＳＦＥＴ（ＰＭ３）の第１端子は、第１のＰ−チャネルＭＯＳＦＥＴ（ＰＭ１）の第２端子に連結され、第３のＰ−チャネルＭＯＳＦＥＴ（ＰＭ３）のゲート端子には、反転入力信号（Ａ＿ｂ）が印加される。反転入力信号（Ａ＿ｂ）は、入力信号（Ａ）が反転された信号である。第４のＰ−チャネルＭＯＳＦＥＴ（ＰＭ４）の第１端子は、第２のＰ−チャネルＭＯＳＦＥＴ（ＰＭ２）の第２端子に連結され、第４のＰ−チャネルＭＯＳＦＥＴ（ＰＭ４）のゲート端子には、反転入力信号（Ｂ＿ｂ）が印加される。反転入力信号（Ｂ＿ｂ）は、入力信号（Ｂ）が反転された信号である。第５のＰ−チャネルＭＯＳＦＥＴ（ＰＭ５）のゲート端子には、選択信号（ＳＥＬ）が印加される。第３のＰ−チャネルＭＯＳＦＥＴ（ＰＭ３）の第１端子、第４のＰ−チャネルＭＯＳＦＥＴ（ＰＭ４）の第１端子、及び第５のＰ−チャネルＭＯＳＦＥＴ（ＰＭ５）の第１端子は、共通に連結される。第６のＰ−チャネルＭＯＳＦＥＴ（ＰＭ６）の第１端子には電源電圧（ＶＤＤ）が印加され、第２端子は、出力信号（ＯＵＴ）が出力される出力端子に連結される。
【００５５】
第１のＮ−チャネルＭＯＳＦＥＴ（ＮＭ１）の第１端子は、第３のＰ−チャネルＭＯＳＦＥＴ（ＰＭ３）の第２端子に連結され、ゲート端子には選択信号（ＳＥＬ）が印加される。第２のＮ−チャネルＭＯＳＦＥＴ（ＮＭ２）の第１端子は、第４のＰ−チャネルＭＯＳＦＥＴ（ＰＭ４）の第２端子に連結され、ゲート端子には入力信号（Ａ）が印加される。第３のＮ−チャネルＭＯＳＦＥＴ（ＮＭ３）の第１端子は、第６のＰ−チャネルＭＯＳＦＥＴ（ＰＭ６）の第２端子及び出力端子に連結され、第２端子には接地電圧（ＶＳＳ）が印加される。第１のＮ−チャネルＭＯＳＦＥＴ（ＮＭ１）の第１端子、第２のＮ−チャネルＭＯＳＦＥＴ（ＮＭ２）の第１端子、第３のＮ−チャネルＭＯＳＦＥＴ（ＮＭ３）のゲート端子及び第６のＰ−チャネルＭＯＳＦＥＴ（ＰＭ６）のゲート端子は、共通に連結され得る。第４のＮ−チャネルＭＯＳＦＥＴ（ＮＭ４）の第１端子は、第１のＮ−チャネルＭＯＳＦＥＴ（ＮＭ１）の第２端子に連結され、ゲート端子には反転入力信号（Ａ＿ｂ）が印加される。第５のＮ−チャネルＭＯＳＦＥＴ（ＮＭ５）の第１端子は、第２のＮ−チャネルＭＯＳＦＥＴ（ＮＭ２）の第２端子に連結され、第２端子には、接地電圧（ＶＳＳ）が印加される。第５のＮ−チャネルＭＯＳＦＥＴ（ＮＭ５）のゲート端子には入力信号（Ｂ）が印加される。第６のＮ−チャネルＭＯＳＦＥＴ（ＮＭ６）の第１端子は、第４のＮ−チャネルＭＯＳＦＥＴ（ＮＭ４）の第２端子に連結され、第２端子には、接地電圧（ＶＳＳ）が印加される。第６のＮ−チャネルＭＯＳＦＥＴ（ＮＭ６）のゲート端子には、反転入力信号（Ｂ＿ｂ）が印加される。
【００５６】
図６Ａのビット演算器１０１によると、選択信号（ＳＥＬ）に基づいて２入力信号（Ａ、Ｂ）に対するＸＮＯＲ演算結果、又は２入力信号（Ａ、Ｂ）に対するＡＮＤ演算結果のいずれかが出力信号（ＯＵＴ）として出力される。すなわち、図６Ａの電子回路は、図６Ｂに示すように、２入力信号（Ａ、Ｂ）を受けるＸＮＯＲゲート及びＡＮＤゲートと、選択信号（ＳＥＬ）に基づいてＸＮＯＲゲートの出力又はＡＮＤゲートの出力のいずれかを出力信号（ＯＵＴ）として出力するマルチプレクサ（ＭＵＬ）と同じ役割を遂行する。
【００５７】
図６Ａに示すように、トランジスタをベースに、ビット演算器１０１が構成されると、図６Ｂの論理回路と同じ機能を遂行するだけでなく、トランジスタの数が減少する。したがって、複数のビット演算器を含むニューラルネットワークアクセラレータ１０００のハードウェアの面積と演算に要する電力が減少する。
【００５８】
上述したように、本発明の一実施形態によるビット演算器１０１は、１ビットのＸＮＯＲ演算又は１ビットのＡＮＤ演算の両方をサポートする。これにより、ビット演算器１０１は、ＸＮＯＲ演算に基づいて乗算を遂行したり、ＡＮＤ演算に基づいて乗算を遂行する。例えば、マルチビットの入力の特徴データ（ＩＦ）及びマルチビットの重みデータ（ＷＴ）が、プレシジョン（精度）の減少のために、１ビットに変換される場合には、ビット演算器１０１は、ＸＮＯＲ演算に基づいて乗算を遂行する。この場合、ニューラルネットワークベースの推論過程での演算量が減少して消費される電力が減少する。
【００５９】
上述した内容は、本発明を実施するための具体的な一実施形態である。本発明は、上述した実施形態だけでなく、単純に設計変更されたり、また容易に変更された実施形態を含む。さらに、本発明は、実施形態を用いて容易に変形して実施できる技術も含まれる。したがって、本発明の技術範囲は、上述した実施形態に限定して定めらるものではなく、特許請求の範囲、また特許請求の範囲と均等なものによって定められる。
【符号の説明】
【００６０】
１０    メモリ
１００、２００、３００    プロセッシング回路
１０１、１１１〜１１４、１２１〜１２４、１３１〜１３４、２１１〜２１４、２２１〜２２４、３１１、３１２、３２１、３２２、３２３、３２４、３３１、３３２    ビット演算器
１１０、１２０、１３０、２１０、２２０、３１０、３２０、３３０    サブプロセッシング回路
１１５、１２５、１３５、２１５、２２５    加算器
１４０、１５０、１６０、２３０、２４０、３４０、３５０、３６０    シフター
１７０、２５０、３７０    アキュムレータ
１０００    ニューラルネットワークアクセラレータ
【図１】
2020205045.tif 000003
【図２】
2020205045.tif 000004
【図３Ａ】
2020205045.tif 000005
【図３Ｂ】
2020205045.tif 000006
【図４】
2020205045.tif 000007
【図５】
2020205045.tif 000008
【図６Ａ】
2020205045.tif 000009
【図６Ｂ】
2020205045.tif 000010