(57)【特許請求の範囲】
【請求項１】
インデックスユニット、ストレージオペレーション（ｓｔｏｒａｇｅ ｏｐｅｒａｔｉｏｎ）ユニット、冗長値から２の補数（ｒｅｄｕｎｄａｎｔ ｔｏ ２’ｓ ｃｏｍｐｌｅｍｅｎｔ、ＲＴＣ）への変換器、マッピングテーブル、及び積和演算モジュールを有し、
前記インデックスユニットは、複数のインデックス値を保存され、それぞれ前記インデックス値に対応して並行設置される複数本のワード線に接続され、順に複数のカウント値を受信し、各前記カウント値に対応する前記インデックス値をマッピング値とし、順に各前記カウント値に対応する前記マッピング値を出力することで、前記マッピング値に対応する前記ワード線を有効化させ、
前記ストレージオペレーションユニットは、複数のメモリーセル、前記ワード線、及び並行設置される複数本のビット線を有し、
各前記ワード線は、前記メモリーセルを介して前記ビット線に接続され、
前記メモリーセルは、それぞれ論理「１」又は論理「０」を含む複数のデータ値を保存され、
前記ストレージオペレーションユニットは、有効化された前記ワード線に対応する各前記ビット線に対応する前記データ値を累計することで、それぞれ前記ビット線に対応する複数の累計結果を生成し、
前記冗長値から２の補数への変換器は、前記ストレージオペレーションユニットに接続され、前記累計結果を受信してシフト加算することで、前記累計結果を２の補数形式の合計データ値に変換し、
前記マッピングテーブルは、前記インデックスユニットに接続され、前記インデックス値に対応する複数の係数を保存され、前記マッピング値を受信して前記マッピング値に対応する前記係数を出力し、
前記積和演算モジュールは、前記冗長値から２の補数への変換器及び前記マッピングテーブルに接続され、各前記カウント値に対応する前記合計データ値及び前記係数を受信して、分配法則（ｄｉｓｔｒｉｂｕｔｉｖｅ ｌａｗ）に基づいて各前記カウント値に対応する前記合計データ値及び前記係数に対して乗算、累計を行うことで、内積値を生成することを特徴とする、
内積計算装置。
【請求項２】
前記インデックスユニットに接続され、順に前記カウント値を生成するインデックスカウンターをさらに有することを特徴とする、請求項１に記載の内積計算装置。
【請求項３】
前記インデックスユニットは連想メモリ（ｃｏｎｔｅｎｔ ａｄｄｒｅｓｓａｂｌｅｍｅｍｏｒｙ）であることを特徴とする、請求項１に記載の内積計算装置。
【請求項４】
前記ストレージオペレーションユニットはメモリ内計算アーキテクチャ（ｃｏｍｐｕｔｉｎｇ−ｉｎ−ｍｅｍｏｒｙ ａｒｃｈｉｔｅｃｔｕｒｅ）であることを特徴とする、請求項１に記載の内積計算装置。
【請求項５】
前記ストレージオペレーションユニットが生成した各前記累計結果は、対応する前記論理「１」の総数であることを特徴とする、請求項１に記載の内積計算装置。
【請求項６】
前記積和演算モジュールは、乗算器及びアキュムレータを有し、
前記乗算器は、前記冗長値から２の補数への変換器及び前記マッピングテーブルに接続され、各前記カウント値に対応する前記合計データ値及び前記係数を受信、乗算することで、複数の乗積値を生成し、
前記アキュムレータは、前記乗算器に接続され、前記乗積値を累計することで、前記内積値を生成することを特徴とする、
請求項１に記載の内積計算装置。
【請求項７】
前記アキュムレータは、さらに前記内積値に対して活性化（ａｃｔｉｖａｔｉｏｎ）関数、ルーディング（ｒｏｕｎｄｉｎｇ）関数、及び飽和（ｓａｔｕｒａｔｉｏｎ）関数の演算を行う関数処理装置に接続されることを特徴とする、請求項６に記載の内積計算装置。
【請求項８】
ピンポンモード演算を行うために、もう１つの前記インデックスユニット及びもう１つの前記ストレージオペレーションユニットをさらに有することを特徴とする、請求項７に記載の内積計算装置。
【請求項９】
前記カウント値及び対応する前記インデックス値は同じ値であることを特徴とする、請求項１に記載の内積計算装置。
【請求項１０】
前記内積値は、ニューラルネットワーク、フィルター又は相関計算に利用されることを特徴とする、請求項１に記載の内積計算装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、計算装置、特に内積計算装置に関する。
【背景技術】
【０００２】
大量に繰り返した重み又係数を含む信号処理及びニューラルネットワーク等の計算において、ベクトルの内積（ｉｎｎｅｒ  ｐｒｏｄｕｃｔ）は最も重要な要素である。図１は、従来技術の全結合（ｆｕｌｌｙ−ｃｏｎｎｅｃｔｅｄ）ニューラルネットワークの模式図である。図１において、ニューラルネットワークは、左から順に入力ノード、多層ニューロン、出力ノードを示す複数の小円を有する。ｘｉ，ｊは、第ｉ層の第ｊ個のニューロンを示す。図２は、従来技術である図１のニューラルネットワークに用いられる内積計算装置のブロック図である。図２において、内積計算装置５０は、重みユニット５２、ストレージオペレーションユニット５４、乗算器５６、加算器５８、及び関数処理装置６０を有する。重みユニット５２及びストレージオペレーションユニット５４が乗算器５６に接続され、乗算器５６が加算器５８に接続され、加算器５８が関数処理装置６０に接続される。重みユニット５２及びストレージオペレーションユニット５４は、それぞれ重みデータｗｉ，ｊ，ｋ、及び入力される判断待ちのデータｘｉ，ｊを保存される。内積計算装置５０において、第ｉ層の第ｊ個のニューロンｘｉ，ｊに関する計算は、第ｉ−１層の第ｋ個のニューロンｘｉ−１，ｋの出力と対応する重みデータｗｉ，ｊ，ｋとのベクトル内積に、第ｉ層の第ｊ個のニューロンｘｉ，ｊに対応するバイアス（ｂｉａｓ）ｂｉ，ｊを掛け、さらに活性化（ａｃｔｉｖａｔｉｏｎ）関数で計算した結果である。即ち、
0006944733.tif 000002
そのうち、Ｎｉ−１は、第ｉ−１層のニューロンに対応する入力データの数である。
【０００３】
図２に示すように、ベクトル内積の計算において、最も直接的な方法は、「積和演算器（ｍｕｌｔｉｐｌｙ−ａｃｃｕｍｕｌａｔｏｒ、ＭＡＣ）」による方法である。乗算器５６によって２つのベクトルに対応する要素（例えば、前記ニューラルネットワークの前の層の全てのニューロン出力ｘｉ，ｊ、及び対応重みデータｗｉ，ｊ，ｋ）をそれぞれ乗算し、加算器５８によって乗積値を加算することで、内積計算結果を得る。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、上記計算は、入力ベクトルの数値及び重みに対して一々内積の積和演算を行わなければならないので、必要な計算量が膨大であり、より多くのメモリによって演算を行う必要がある。そのため、大きな時間とエネルギーを消費する。
【０００５】
図３は、式（１）に基づいて動作する従来技術の内積計算装置のブロック図である。
0006944733.tif 000003
そのうち、ｗｉ，ｊ，ｋは、第ｉ−１層の第ｋ個のニューロンが第ｉ層の第ｊ個のニューロンに接続される重みである。ｘｉ−１，ｋは、第ｉ−１層の第ｋ個のニューロンの出力である。ｋは、第ｉ−１層のニューロンの番号である。Ｎｉ−１は、第ｉ−１層のニューロンの総数である。そのため、前記演算において、第ｉ−１層の全てのニューロンの出力に、対応の重みを掛けて累計する。Ｗｍは、番号ｍの代表的な重みである。
0006944733.tif 000004
は、ｗｉ，ｊ，ｋ＝Ｗｍの場合のｘｉ−１，ｋの累計値である。ｍは、代表的な重みの番号である。Ｋは、代表的な重みの総数である。そのため、代表的な重みに、対応の累計値を掛ける場合、同じ結果を得る。内積計算装置は、インデックスユニット６２、ストレージオペレーションユニット６４、アキュムレータ６６、加算器６８、マッピングテーブル７０、乗算器７２、加算器７４、及び関数処理装置７６を有する。前記内積計算装置は、アキュムレータ６６及び加算器７４を利用して累積演算を行う。分配法則によって計算量を減少できるが、アキュムレータ６６及び加算器７４によってＮ回（Ｎは数値の数を示す）累計し、乗算器７２によってＫ回の係数の積和演算を行う。そのため、内積計算装置の計算量のバランスを取り難く、アーキテクチャの使用頻度が低く、演算アーキテクチャの浪費となる。
【０００６】
本発明は、上記問題点を鑑みて、従来課題を解決するための内積計算装置を提出する。
【０００７】
本発明は、アーキテクチャの使用頻度が高く、計算量を減少できる内積計算装置を提供する。
【課題を解決するための手段】
【０００８】
このような課題を解決するために、本発明に係る内積計算装置は、インデックスユニット、ストレージオペレーション（ｓｔｏｒａｇｅ  ｏｐｅｒａｔｉｏｎ）ユニット、冗長値から２の補数（ｒｅｄｕｎｄａｎｔ  ｔｏ  ２’ｓ  ｃｏｍｐｌｅｍｅｎｔ、ＲＴＣ）への変換器、マッピングテーブル、及び積和演算モジュールを有する。インデックスユニットは、複数のインデックス値を保存され、それぞれインデックス値に対応して並行設置される複数本のワード線に接続され、順に複数のカウント値を受信し、各カウント値に対応するインデックス値をマッピング値とし、順に各カウント値に対応するマッピング値を出力することで、マッピング値に対応するワード線を有効化させる。ストレージオペレーションユニットは、複数のメモリーセル、全てのワード線、及び並行設置される複数本のビット線を有する。各ワード線は、メモリーセルを介して全てのビット線に接続される。全てのメモリーセルは、それぞれ論理「１」又は論理「０」を含む複数のデータ値を保存される。ストレージオペレーションユニットは、有効化されたワード線に対応する各ビット線に対応するデータ値を累計することで、それぞれ全てのビット線に対応する複数の累計結果を生成する。冗長値から２の補数への変換器は、ストレージオペレーションユニットに接続され、全ての累計結果Ｒを受信してシフト加算することで、全ての累計結果を２の補数形式の合計データ値に変換される。マッピングテーブルは、インデックスユニットに接続され、全てのインデックス値に対応する複数の係数を保存され、マッピング値を受信してマッピング値に対応する係数を出力する。積和演算モジュールは、冗長値から２の補数への変換器及びマッピングテーブルに接続され、各カウント値に対応する合計データ値及び係数を受信して、分配法則（ｄｉｓｔｒｉｂｕｔｉｖｅ  ｌａｗ）に基づいて各カウント値に対応する合計データ値及び係数に対して乗算、累計を行うことで、内積値を生成する。
【０００９】
本発明の１つの実施例において、内積計算装置は、インデックスユニットに接続され、順に全てのカウント値を生成するインデックスカウンターをさらに有する。
【００１０】
本発明の１つの実施例において、インデックスユニットは連想メモリ（ｃｏｎｔｅｎｔ  ａｄｄｒｅｓｓａｂｌｅ  ｍｅｍｏｒｙ）である。
【００１１】
本発明の１つの実施例において、ストレージオペレーションユニットはメモリ内計算アーキテクチャ（ｃｏｍｐｕｔｉｎｇ−ｉｎ−ｍｅｍｏｒｙ  ａｒｃｈｉｔｅｃｔｕｒｅ）である。
【００１２】
本発明の１つの実施例において、ストレージオペレーションユニットが生成した各累計結果は、対応する論理「１」の総数である。
【００１３】
本発明の１つの実施例において、積和演算モジュールは、乗算器及びアキュムレータを有する。乗算器は、冗長値から２の補数への変換器及びマッピングテーブルに接続され、各カウント値に対応する合計データ値及び係数を受信、乗算することで、複数の乗積値を生成する。アキュムレータは、乗算器に接続され、全ての乗積値を累計することで、内積値を生成する。
【００１４】
本発明の１つの実施例において、アキュムレータは、さらに内積値に対して活性化（ａｃｔｉｖａｔｉｏｎ）関数、ルーディング（ｒｏｕｎｄｉｎｇ）関数、及び飽和（ｓａｔｕｒａｔｉｏｎ）関数の演算を行う関数処理装置に接続される。
【００１５】
本発明の１つの実施例において、内積計算装置は、ピンポンモード演算を行うために、もう１つの前記インデックスユニット及びもう１つの前記ストレージオペレーションユニットをさらに有する。
【００１６】
本発明の１つの実施例において、カウント値及び対応するインデックス値は同じ値である。
【００１７】
本発明の１つの実施例において、内積値は、ニューラルネットワーク、フィルター又は相関計算に利用される。
【発明の効果】
【００１８】
上記内容によれば、本発明の実施例の内積計算装置は、インデックス値を利用して計算量を大幅に低減すると共に、ストレージオペレーションユニットの並行累積加算能力を利用して、計算量のバランス、高いハードウェアアーキテクチャの使用頻度を達成できる。よって、高効率、低エネルギーの効果を達成できる。
【００１９】
以下、具体的な実施例、図面を開示しながら本発明の目的、技術的な特徴、効果を詳しく説明する。
【図面の簡単な説明】
【００２０】
【図１】従来技術の全結合（ｆｕｌｌｙ−ｃｏｎｎｅｃｔｅｄ）ニューラルネットワークの模式図である。
【図２】従来技術に用いられる図１のニューラルネットワークの内積計算装置のブロック図である。
【図３】従来技術の内積計算装置のブロック図である。
【図４】本発明の実施例の内積計算装置のブロック図である。
【図５】図４の内積計算装置をニューラルネットワークに利用するシーケンス図である。
【発明を実施するための形態】
【００２１】
以下、図面を開示しながら本発明の実施例を説明する。図面及び明細書において、同じ符号は同じ又は類似な部材を示す。図面において、簡単化又は表示の便宜上で、その形状及び厚さを拡大表示する場合もある。留意すべきことは、図面に開示されていない、又は明細書に記載されていない素子は、当業者が自明であるものである。当業者は、本発明の内容に基づいて様々な変更、改良を行うことができる。
【００２２】
特に明記されていない限り、条件を示す文言又は単語、例えば「できる（ｃａｎ）」、「可能（ｃｏｕｌｄ）」、「してもよい（ｍｉｇｈｔ）」、又は「かもしれない（ｍａｙ）」は、普通、本願の実施例が有する、又は有しなくてもよい特徴、素子、又は工程を示す。その他の実施例において、それらの特徴、素子、又は工程は、省略される可能性がある。
【００２３】
明細書及び請求の範囲において、第１素子が第２素子上に位置する、第１素子が第２素子の上方にある、第１素子が第２素子に接続、接合、又は連結される、第１素子が第２素子に接する等の文言は、第１素子がそのまま第２素子上に位置する、第１素子がそのまま第２素子上に接続、接合、又は連結される、又は第１素子と第２素子との間にその他の素子を有する場合を示す。逆に、第１素子がそのまま第２素子上に位置する、又は第１素子がそのまま第２素子上に接続、接合、連結、接する等の文言は、第１素子と第２素子との間にその他の素子を有しない場合を示す。
【００２４】
本明細書において、「１つの実施例」又は「実施例」等は、少なくとも１つの実施例に関する特定な素子、構造又は特徴を示す。そのため、本明細書に記載の「１つの実施例」又は「実施例」の文言は、同じ実施例に対するとは限らない。なお、１つの又は複数の実施例に記載の特定な部材、構造、及び特徴を適切に組み合わせることができる。
【００２５】
図４は、本発明の実施例の内積計算装置のブロック図である。図４において、内積計算装置１００は、インデックスユニット１１０、ストレージオペレーションユニット１２０、冗長値から２の補数（ｒｅｄｕｎｄａｎｔ  ｔｏ  ２’ｓ  ｃｏｍｐｌｅｍｅｎｔ、ＲＴＣ）への変換器１３０、マッピングテーブル１４０、インデックスカウンター１５０、及び積和演算モジュール１６０を有する。インデックスユニット１１０は、連想メモリ（ｃｏｎｔｅｎｔ  ａｄｄｒｅｓｓａｂｌｅ  ｍｅｍｏｒｙ）であってもよい。ストレージオペレーションユニット１２０は、メモリ内計算アーキテクチャ（ｃｏｍｐｕｔｉｎｇ−ｉｎ−ｍｅｍｏｒｙ  ａｒｃｈｉｔｅｃｔｕｒｅ）であってもよい。メモリ内計算アーキテクチャは、メモリ及び演算回路を有する。例えば、ストレージオペレーションユニット１２０は、デュアル  ８Ｔ  ＳＲＡＭのアーキテクチャ（ＩＳＳＣＣ２０１９／ＳＥＳＳＩＯＮ２４／ＳＲＡＭ＆ＣＯＭＰＵＴＡＴＩＯＮ−ＩＮ−ＭＥＭＯＲＹ／２４．５“Ａ  Ｔｗｉｎ−８Ｔ  ＳＲＡＭ  Ｃｏｍｐｕｔａｔｉｏｎ−Ｉｎ−Ｍｅｍｏｒｙ  Ｍａｃｒｏ  ｆｏｒ  Ｍｕｌｔｉｐｌｅ−Ｂｉｔ  ＣＮＮ−Ｂａｓｅｄ  Ｍａｃｈｉｎｅ  Ｌｅａｒｎｉｎｇ”を参照）であってもよい。インデックスカウンター１５０は、順に複数のカウント値Ｎを生成する。インデックスユニット１１０は、複数のインデックス値を保存され、インデックスカウンター１５０及び並行設置される複数本のワード線ＷＬに接続される。全てのワード線ＷＬは、それぞれ全てのインデックス値に対応する。インデックスユニット１１０は、順に全てのカウント値Ｎを受信し、各カウント値Ｎに対応するインデックス値をマッピング値Ｍとし、順に各カウント値Ｎに対応するマッピング値Ｍを出力することで、マッピング値Ｍに対応するワード線ＷＬを有効化（ｅｎａｂｌｅ）させる。例えば、カウント値Ｎ及び対応するインデックス値は同じ値である。ストレージオペレーションユニット１２０は、複数のメモリーセル、全てのワード線ＷＬ、及び並行設置される複数本のビット線ＢＬを有する。全てのワード線ＷＬは、全てのビット線ＢＬに垂直交差してもよい。各ワード線ＷＬは、メモリーセルを介して全てのビット線ＢＬに接続される。全てのメモリーセルは、それぞれ論理「１」又は論理「０」を含む複数のデータ値を保存される。ストレージオペレーションユニット１２０は、有効化されたワード線ＷＬに対応する各ビット線ＢＬに対応するデータ値を累計することで、それぞれ全てのビット線ＢＬに対応する複数の累計結果Ｒを生成する。例えば、ストレージオペレーションユニット１２０によって生成した各累計結果Ｒは、対応する論理「１」の総数である。
【００２６】
冗長値から２の補数への変換器１３０は、ストレージオペレーションユニット１２０に接続される。また、冗長値から２の補数への変換器１３０は加算器を有してもよい。また、冗長値から２の補数への変換器１３０は、前記加算器に接続される２の補数変更回路を有してもよい。冗長値から２の補数への変換器１３０は、全ての累計結果Ｒを受信し、全ての累計結果Ｒをシフト加算することで、全ての累計結果Ｒを２の補数形式の合計データ値Ｔに変換される。マッピングテーブル１４０は、インデックスユニット１１０に接続され、全てのインデックス値に対応する複数の係数Ｃを保存される。マッピングテーブル１４０は、マッピング値Ｍを受信して、マッピング値Ｍに対応する係数Ｃを出力する。積和演算モジュール１６０は、冗長値から２の補数への変換器１３０及びマッピングテーブル１４０に接続される。積和演算モジュール１６０は、各カウント値Ｎに対応する合計データ値Ｔ及び係数Ｃを受信して、分配法則（ｄｉｓｔｒｉｂｕｔｉｖｅｌａｗ）に基づいて各カウント値Ｎに対応する合計データ値Ｔ及び係数Ｃに対して乗算、累計を行うことで、内積値Ｄを生成する。
【００２７】
本発明の１つの実施例において、積和演算モジュール１６０は、乗算器１６１及びアキュムレータ１６２を有してもよい。乗算器１６１は、冗長値から２の補数への変換器１３０及びマッピングテーブル１４０に接続される。乗算器１６１は、各カウント値Ｎに対応する合計データ値Ｔ及び係数Ｃを受信して乗算することで、複数の乗積値Ｐを生成する。アキュムレータ１６２は、乗算器１６１に接続され、全ての乗積値Ｐを累計することで、内積値Ｄを生成する。
【００２８】
以下、本発明の内積計算装置の動作を説明する。例えば、カウント値Ｎが第１カウント値Ｎ１及び第２カウント値Ｎ２を有し、マッピング値Ｍが第１マッピング値Ｍ１又は第２マッピング値Ｍ２を有し、全てのワード線ＷＬが第１ワード線及び第２ワード線を有し、累計結果Ｒが第１累計結果Ｒ１又は第２累計結果Ｒ２であり、合計データ値Ｔが第１合計データ値Ｔ１又は第２合計データ値Ｔ２であり、係数Ｃが第１係数Ｃ１及び第２係数Ｃ２を有し、乗積値Ｐが第１乗積値Ｐ１及び第２乗積値Ｐ２を有する。
【００２９】
インデックスカウンター１５０は、順に第１カウント値Ｎ１及び第２カウント値Ｎ２を生成する。インデックスユニット１１０は、順に第１カウント値Ｎ１及び第２カウント値Ｎ２を受信し、それぞれ第１カウント値Ｎ１及び第２カウント値Ｎ２に対応するインデックス値をそれぞれ第１マッピング値Ｍ１及び第２マッピング値Ｍ２とし、順に第１マッピング値Ｍ１及び第２マッピング値Ｍ２を出力することで、第１マッピング値Ｍ１及び第２マッピング値Ｍ２に対応するワード線を有効化させる。例えば、インデックスユニット１１０は、第１マッピング値Ｍ１を出力した場合、第１マッピング値Ｍ１に対応する第１ワード線を有効化させ、第２マッピング値Ｍ２を出力した場合、第２マッピング値Ｍ２に対応する第２ワード線を有効化させる。ストレージオペレーションユニット１２０は、有効化された第１ワード線に対応する各ビット線ＢＬに対応するデータ値を累計することで、それぞれ全てのビット線ＢＬに対応する複数の第１累計結果Ｒ１を生成する。同じように、ストレージオペレーションユニット１２０は、有効化された第２ワード線に対応する各ビット線ＢＬに対応するデータ値を累計することで、それぞれ全てのビット線ＢＬに対応する複数の第２累計結果Ｒ２を生成する。冗長値から２の補数への変換器１３０は、全ての第１累計結果Ｒ１を受信し、全ての第１累計結果Ｒ１を２の補数形式の第１合計データ値Ｔ１に変換させる。冗長値から２の補数への変換器１３０は、全ての第２累計結果Ｒ２を受信し、全ての第２累計結果Ｒ２を２の補数形式の第２合計データ値Ｔ２に変換させる。マッピングテーブル１４０は、第１マッピング値Ｍ１を受信し、第１マッピング値Ｍ１に対応する第１係数Ｃ１を出力する。マッピングテーブル１４０は、第２マッピング値Ｍ２を受信し、第２マッピング値Ｍ２に対応する第２係数Ｃ２を出力する。乗算器１６１は、第１合計データ値Ｔ１及び第１係数Ｃ１を受信して乗算することで、第１乗積値Ｐ１を生成すると共に、第２合計データ値Ｔ２及び第２係数Ｃ２を受信して乗算することで、第２乗積値Ｐ２を生成する。最後に、アキュムレータ１６２は、第１乗積値Ｐ１及び第２乗積値Ｐ２を累計することで、内積値Ｄを生成する。本発明の内積計算装置によれば、インデックス値を利用して計算量を大幅に低減すると共に、ストレージオペレーションユニット１２０の並行累積加算能力を利用して、計算量のバランス、簡単化を達成できる。よって、高いハードウェアアーキテクチャの使用頻度、低エネルギー等の効果を達成できる。
【００３０】
本発明の１つの実施例において、内積値Ｄは、ニューラルネットワークに利用できる。アキュムレータ１６２は、さらに内積値Ｄに対して活性化（ａｃｔｉｖａｔｉｏｎ）関数、ルーディング（ｒｏｕｎｄｉｎｇ）関数、及び飽和（ｓａｔｕｒａｔｉｏｎ）関数の演算を行う関数処理装置１７０に接続される。例えば、活性化関数は、正規化線形ユニット（ｒｅｃｔｉｆｉｅｄ  ｌｉｎｅａｒ  ｕｎｉｔｓ、ＲｅＬＵ）関数であってもよいが、それらに限定されない。また、他の実施例において、内積値Ｄは、ニューラルネットワークの他に、フィルター又は相関計算等他の内積計算が必要とする応用に利用できる。
【００３１】
また、ニューラルネットワークにおける１層からの出力ニューロンは、次の演算において、次の層からの出力ニューロンの入力となる状況、即ち、役割の交換という状況がある。そのため、内積計算装置１００は、インデックスユニット１１０と同じ他のインデックスユニット、及びストレージオペレーションユニット１２０と同じ他のストレージオペレーションユニットを更に有してもよい。それらを利用してインデックス値及びデータ値を保存することで、２つのインデックスユニットと、２つのストレージオペレーションユニットとを組み合わせてピンポンモード（ｐｉｎｇ  ｐｏｎｇ  ｍｏｄｅ）演算を行うことができる。図５は、図４の実施例の内積計算装置をニューラルネットワークに利用するシーケンス図である。以下、図５を開示しながら内積計算及びニューラルネットワークにおけるピンポンモード演算を説明する。図４及び図５において、ＩＡ０及びＩＡ１は、それぞれ２つのインデックスユニット１１０を示す。ＤＡ０及びＤＡ１は、それぞれ２つのストレージオペレーションユニット１２０を示す。ＲＴＣ／ＭＡＣは、冗長値から２の補数への変換器１３０及び積和演算モジュール１６０を示す。ＡＲＳは、関数処理装置１７０を示す。以下、詳しい工程を説明する。
【００３２】
工程１：シーケンス１ａ及びシーケンス１ｂに示すように、上記データ値及びインデックス値をそれぞれ「データベクトル」及び「インデックスベクトル」によって実現される。また、内積計算をしようとする「データベクトル」及び「インデックスベクトル」をストレージオペレーションユニットＤＡ０及びインデックスユニットＩＡ０に保存される。
【００３３】
工程２：インデックスカウンター１５０は、０からＫ−１までカウントする。そのうち、Ｋは、係数の数である。シーケンス２ａに示すように、連想メモリの設計を利用して、インデックスユニットＩＡ０におけるインデックスカウンター１５０が生成したカウント値と等しいインデックス値を検索する。その同時、選ばれたインデックス値に対応するストレージオペレーションユニットＤＡ０のデータ値をメモリ内計算技術によって累計し、ストレージオペレーションユニットＤＡ０の各ビット線ＢＬにおけるデータ値が論理１であるメモリーセルの数を読み込む。そして、シーケンス２ｂに示すように、前記多値化ビット線（ｍｕｌｔｉ−ｖａｌｕｅｄｅｄ  ｂｉｔ−ｌｉｎｅｓ）ＢＬの読取値を冗長値から２の補数への変換器１３０によって２の補数形式の合計データ値に変更される。最後、乗算器１６１は、数学分配法則に基づいて同じ係数を対応する合計データ値に乗算することで、乗積値を得る。さらに、シーケンス２ｃに示すように、加算器１６２によって全ての乗積値を累計することで、ベクトル内積を得る。留意すべきことは、２の補数への変更及びその後の乗算計算は、使用及び実際に必要なデータの長さに応じて最適化することができる。本発明は、上記実施例の説明に制限されない。
【００３４】
以上工程において、２つのベクトルの内積計算を行う。前記内積計算をニューラルネットワーク計算に利用する場合、下記工程を追加する必要がある。
【００３５】
工程３：上記ベクトル内積を関数処理装置１７０に入力して、活性化関数、飽和関数、及びルーディング関数の演算を行う。そのうち、活性化関数は、例えばＲｅＬＵ関数であり、即ち、計算結果が負数である場合に０を出力し、正数である場合に元の値を出力する。飽和関数は、計算結果が表示できる最大値を超えた場合に、その最大値を表示する。シーケンス３に示すように、ルーディング関数は、計算結果における重要ではない端数部分を除去した後、計算結果を元のデータの表示形式に正規化させる。
【００３６】
工程４：シーケンス４に示すように、工程３で正規化したニューロン計算結果をストレージオペレーションユニットＤＡ１に書き込む。アーキテクチャの使用頻度を高くして、ニューロン計算を流暢に行うために、インデックスユニットＩＡ０、ＩＡ１及びストレージオペレーションユニットＤＡ０、ＤＡ１を利用してピンポンモード動作を実現できる。また、パイプラインの方法によって複数のニューロン計算を実行できる。図５において、本実施例において、数学分配法則に基づいて不必要な乗算演算を除去すると共に、その流暢な動作モードによれば、高いハードウェアアーキテクチャの使用頻度を維持できる。
【００３７】
また、本発明及び従来技術の相違を示すために、表１を例として計算量及びメモリアクセス量の比較を説明する。そのうち、ＦＣ＿ＤＮＮ（ｆｕｌｌｙ−ｃｏｎｎｅｃｔｅｄ  ｄｅｅｐ  ｎｅｕｒａｌ  ｎｅｔｗｏｒｋ）は、全結合ディープニューラルネットワークを示す。
【００３８】
0006944733.tif 000005
【００３９】
表１から分かるように、本発明が必要とするメモリの大きさは、従来技術の１／４であり、また、必要とする計算量は、従来技術の１／１７である。そのため、本発明の内積計算装置によれば、必要なメモリ及び計算量を有効に減少できる。
【００４０】
上記をまとめると、上記内容によれば、本発明の実施例の内積計算装置は、インデックス値を利用して計算量を大幅に低減すると共に、ストレージオペレーションユニットの並行累積加算能力を利用して、計算量のバランス、高いハードウェアアーキテクチャの使用頻度を達成できる。よって、高効率、低エネルギーの効果を達成できる。
【００４１】
以上の実施例において、当業者が本発明の内容を理解できるように本発明の技術的な思想及び特徴を説明するが、本発明は、それらに限定されない。本発明の精神に基づいてなされた均等的な変更及び改良は、いずれも本発明に含む。
【符号の説明】
【００４２】
５０  内積計算装置
５２  重みユニット
５４  ストレージオペレーションユニット
５６  乗算器
５８  加算器
６０  関数処理装置
６２  インデックスユニット
６４  ストレージオペレーションユニット
６６  アキュムレータ
６８  加算器
７０  マッピングテーブル
７２  乗算器
７４  加算器
７６  関数処理装置
１００  内積計算装置
１１０  インデックスユニット
１２０  ストレージオペレーションユニット
１３０  冗長値から２の補数への変換器
１４０  マッピングテーブル
１５０  インデックスカウンター
１６０  積和演算モジュール
１６１  乗算器
１６２  アキュムレータ
１７０  関数処理装置
ｘｉ，ｊニューロン
Ｎ  カウント値
Ｍ  マッピング値
Ｒ  累計結果
Ｔ  合計データ値
Ｃ  係数
Ｄ  内積値
ＢＬ  ビット線
ＷＬ  ワード線
【要約】
【課題】アーキテクチャの使用頻度が高く、計算量を減少できる内積計算装置を提供する。
【解決手段】インデックスユニットは、複数のインデックス値を保存され、それぞれインデックス値に対応するワード線に接続される。ストレージオペレーションユニットは、ワード線及びビット線を有し、複数のデータ値を保存される。マッピングテーブルは、インデックス値に対応する複数の係数を保存される。インデックスユニットは、カウント値及びインデックス値に基づいてワード線を有効化させる。ストレージオペレーションユニットは、有効化されたワード線に対応する各ビット線に対応するデータ値を累計することで、ビット線に対応する累計結果を生成する。冗長値から２の補数への変換器は、累計結果を２の補数形式の合計データ値に変換される。積和演算モジュールは、分配法則に基づいて合計データ値及び係数に対して演算を行うことで、内積値を生成する。
【選択図】図４【図１】
0006944733.tif 000006
【図２】
0006944733.tif 000007
【図３】
0006944733.tif 000008
【図４】
0006944733.tif 000009
【図５】
0006944733.tif 000010