JP2016045721A - データ格納方法、三値内積演算回路、それを備えた半導体装置、及び、三値内積演算処理プログラム - Google Patents

データ格納方法、三値内積演算回路、それを備えた半導体装置、及び、三値内積演算処理プログラム Download PDF

Info

Publication number
JP2016045721A
JP2016045721A JP2014169635A JP2014169635A JP2016045721A JP 2016045721 A JP2016045721 A JP 2016045721A JP 2014169635 A JP2014169635 A JP 2014169635A JP 2014169635 A JP2014169635 A JP 2014169635A JP 2016045721 A JP2016045721 A JP 2016045721A
Authority
JP
Japan
Prior art keywords
ternary
data
ternary data
value
multiplication
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
JP2014169635A
Other languages
English (en)
Other versions
JP6324264B2 (ja
Inventor
俊介 奥村
Shunsuke Okumura
俊介 奥村
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.)
Renesas Electronics Corp
Original Assignee
Renesas Electronics Corp
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 Renesas Electronics Corp filed Critical Renesas Electronics Corp
Priority to JP2014169635A priority Critical patent/JP6324264B2/ja
Priority to US14/797,104 priority patent/US10133552B2/en
Publication of JP2016045721A publication Critical patent/JP2016045721A/ja
Application granted granted Critical
Publication of JP6324264B2 publication Critical patent/JP6324264B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/49Computations with a radix, other than binary, 8, 16 or decimal, e.g. ternary, negative or imaginary radices, mixed radix non-linear PCM
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/52Multiplying; Dividing

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Nonlinear Science (AREA)
  • Logic Circuits (AREA)

Abstract

【課題】複数の三値データ間の演算を効率よく処理することが可能なデータ格納方法、三値内積演算回路、それを備えた半導体装置、及び、三値内積演算処理プログラムを提供すること。【解決手段】一実施の形態によれば、データ格納方法は、下位ビットが1を示す場合に+1を表し、上位ビットが1を示す場合に−1を表し、下位及び上位ビットが何れも0を示す場合に0を表す、複数の2ビット幅の三値データX0〜X7を1つのワードに格納する。【選択図】図4

Description

本発明はデータ格納方法、三値内積演算回路、それを備えた半導体装置、及び、三値内積演算処理プログラムに関する。
近年、車両に搭載された電子制御システムは、カメラ等によって取り込まれた画像を認識する画像認識用プロセッサを備えている。例えば、電子制御システムは、画像認識用プロセッサの認識結果に基づいて障害物が接近しているか否かを判断し、ブレーキの自動制御等を行う。
画像認識用プロセッサは、入力画像から得られた画素データの配列に基づいて、量子化されたデータ(所謂、特徴量データ)を作成する。例えば、画像認識用プロセッサは、入力画像から得られたエッジ画像の方向成分を角度ごとに表したヒストグラム(勾配方向ヒストグラム)を特徴量データとして作成する。そして、画像認識用プロセッサは、作成した特徴量データと、予め機械学習によって得られた辞書データと、の内積演算を行い、その演算結果に基づいて入力画像に検出対象が含まれるか否かの判断を行う。
ここで、画像認識用プロセッサは、電子制御システムの処理性能を向上させるため、内積演算を高精度かつ高速に処理することが求められている。
しかしながら、例えば、精度向上を目的として浮動小数点型データを用いて内積演算を行う構成とした場合、処理速度が低下してしまう。他方、処理速度向上を目的として1及び0で表される二値のデータ(以下、二値データとも称す)を用いて内積演算を行う構成とした場合、精度が低下してしまう。
そこで、近年では、+1,0,−1の三値で表されるデータ(以下、三値データとも称す)を用いて内積演算を行う画像認識用プロセッサの開発が進められている。三値データを用いて内積演算を行う構成は、二値データを用いて内積演算を行う場合よりも精度を向上させることでき、かつ、浮動小数点型データを用いて内積演算を行う場合よりも処理速度を向上させることができる。なお、三値データ間の演算については、例えば、特許文献1にも開示されている。
特開2002−14804号公報
しかしながら、三値データを用いて内積演算を行う関連技術の構成では、多ビット幅の1つのワードに対して、2ビットで表現可能な1個の三値データが多ビット幅で表現されたうえで格納されるのが一般的である。そのため、関連技術の構成では、複数の三値データ間の演算を効率よく処理することができない、という問題があった。
なお、特許文献2の構成は、キャリー信号の伝搬遅延に伴う処理速度低下を防ぐために複数の全加算器を用いて三値データ間の演算を行うものであって、複数の三値データからなるデータ間の内積演算を行うことを想定していない。そのため、特許文献2の構成でも、複数の三値データ間の演算を効率よく処理することができない、という問題があった。
その他の課題と新規な特徴は、本明細書の記述および添付図面から明らかになるであろう。
一実施の形態によれば、データ格納方法は、第1ビットが第1値を示す場合に+1を表し、第2ビットが第1値を示す場合に−1を表し、前記第1及び前記第2ビットが何れも第2値を示す場合に0を表す、複数の2ビット幅の三値データを1つのワードに格納する。
また、一実施の形態によれば、三値内積演算回路は、複数の2ビット幅の三値データを1つのワードに格納することで構成される第1及び第2入力データのそれぞれの複数の三値データ間の乗算を行う三値乗算部を備え、前記三値乗算部の乗算結果を構成する複数の三値データのうち+1を表す三値データの数から−1を表す三値データの数を減算した数が内積演算結果として出力される。
また、一実施の形態によれば、三値内積演算処理プログラムは、複数の2ビット幅の三値データを1つのワードに格納することで構成される第1及び第2入力データのそれぞれの複数の三値データ間の乗算を行う乗算処理と、前記乗算結果を構成する複数の三値データのうち+1を表す三値データの数をカウントする第1カウント処理と、前記乗算結果を構成する複数の三値データのうち−1を表す三値データの数をカウントする第2カウント処理と、+1を表す前記三値データの数から−1を表す前記三値データの数を減算する減算処理と、をコンピュータに実行させる。
前記一実施の形態によれば、複数の三値データ間の演算を効率よく処理することが可能なデータ格納方法、三値内積演算回路、それを備えた半導体装置、及び、三値内積演算処理プログラムを提供することができる。
実施の形態1に係る画像認識装置を示すブロック図である。 図1に示す画像認識装置に設けられた画像認識用プロセッサの動作を示すフローチャートである。 特徴量データを三値データに変換してワードに格納するまでの流れを説明するための図である。 実施の形態1に係る三値データ格納方法を示す図である。 実施の形態1に係る三値データ格納方法の具体例を示す図である。 実施の形態1に係る画像認識用プロセッサを示すブロック図である。 図6に示す画像認識用プロセッサに設けられた三値乗算器を示すブロック図である。 図6に示す画像認識用プロセッサに設けられた三値乗算器の具体例を示す回路図である。 図6に示す画像認識用プロセッサによる三値内積演算処理に関するアセンブリプログラムである。 図6に示す画像認識用プロセッサによる三値内積演算処理の具体例を示す図である。 図1に示す画像認識装置及びそれに設けられた画像認識用プロセッサのハードウエア構成の一例を示すブロック図である。 図1に示す画像認識装置の他の適用事例を示す図である。 実施の形態2に係る画像認識用プロセッサを示すブロック図である。 図13に示す画像認識用プロセッサに設けられた三値用ビットカウンタを示すブロック図である。 図13に示す画像認識用プロセッサによる三値内積演算処理に関するアセンブリプログラムである。 実施の形態3に係る画像認識用プロセッサを示すブロック図である。 図16に示す画像認識用プロセッサに設けられた三値用ビットカウンタを示すブロック図である。 図16に示す画像認識用プロセッサによる三値内積演算処理に関するアセンブリプログラムである。 関連技術の三値データ格納方法を示す図である。 関連技術の三値データ格納方法の具体例を示す図である。 関連技術の画像認識用プロセッサを示すブロック図である。 関連技術の三値内積演算処理に関するアセンブリプログラムである。
以下、図面を参照しつつ、実施の形態について説明する。なお、図面は簡略的なものであるから、この図面の記載を根拠として実施の形態の技術的範囲を狭く解釈してはならない。また、同一の要素には、同一の符号を付し、重複する説明は省略する。
以下の実施の形態においては便宜上その必要があるときは、複数のセクションまたは実施の形態に分割して説明するが、特に明示した場合を除き、それらはお互いに無関係なものではなく、一方は他方の一部または全部の変形例、応用例、詳細説明、補足説明等の関係にある。また、以下の実施の形態において、要素の数等(個数、数値、量、範囲等を含む)に言及する場合、特に明示した場合および原理的に明らかに特定の数に限定される場合等を除き、その特定の数に限定されるものではなく、特定の数以上でも以下でもよい。
さらに、以下の実施の形態において、その構成要素(動作ステップ等も含む)は、特に明示した場合および原理的に明らかに必須であると考えられる場合等を除き、必ずしも必須のものではない。同様に、以下の実施の形態において、構成要素等の形状、位置関係等に言及するときは、特に明示した場合および原理的に明らかにそうでないと考えられる場合等を除き、実質的にその形状等に近似または類似するもの等を含むものとする。このことは、上記数等(個数、数値、量、範囲等を含む)についても同様である。
<実施の形態1>
図1は、実施の形態1に係る画像認識装置(半導体装置)1を示す図である。
図1に示すように、画像認識装置1は、例えば車両に搭載され、ホストプロセッサ11と、画像認識用プロセッサ(三値内積演算回路)12と、メモリ13と、を少なくとも備える。
ホストプロセッサ11は、画像認識装置1における各種処理、画像認識用プロセッサ12及びメモリ13へのアクセス等、を制御する。例えば、ホストプロセッサ11は、カメラ等によって取り込まれた画像をメモリ13に記憶させたり、メモリ13に記憶された画像を画像認識用プロセッサ12によって認識させたりする。
画像認識用プロセッサ12は、カメラ等によって取り込まれた画像を認識するプロセッサである。
図2は、画像認識用プロセッサ12の動作を示すフローチャートである。
図2に示すように、まず、画像認識用プロセッサ12は、カメラ等によって取り込まれた画像を受け取る(ステップS101)。
その後、画像認識用プロセッサ12は、受け取った画像の中から特徴量データを作成する領域を選択する(ステップS102)。図2の例では、画像認識用プロセッサ12は、画像の一端から他端にかけて順に領域を選択しているが、これに限られず、例えば、あるアルゴリズムに基づいて領域を選択してもよい。
その後、画像認識用プロセッサ12は、選択領域の画像から得られた画素データの配列に基づいて、量子化されたデータ(所謂、特徴量データ)を作成する(ステップS103)。図2の例では、画像認識用プロセッサ12は、選択領域の画像から得られたエッジ画像の方向成分を角度ごとに表したヒストグラム(勾配方向ヒストグラム)を特徴量データとして作成する。
そして、画像認識用プロセッサ12は、作成した特徴量データと、予め機械学習によって得られた辞書データと、の内積演算を行い、その演算結果に基づいて入力画像に検出対象が含まれるか否かの判断を行う(ステップS104)。具体的には、例えば、障害物が接近しているか否かの判断を行う。
なお、f(x)を識別関数、xを特徴量データベクトル、wを辞書データベクトル、wを辞書データとすると、以下の式(1)が成り立つ。
画像認識用プロセッサ12の認識結果は、例えば、電子制御ユニット(ECU)に伝えられる(ステップS105)。電子制御ユニットは、画像認識用プロセッサ12の認識結果に基づいて障害物が接近しているか否かを判断し、ブレーキの自動制御等を行う。
ここで、画像認識用プロセッサ12は、実数で表される特徴量データの各要素(勾配方向ヒストグラムの各方向成分)を2ビット幅の三値データに変換した後、複数の2ビット幅の三値データを纏めて1つのワードに格納する。
なお、本実施の形態では、画像認識用プロセッサ12が、特徴量データの各要素を2ビット幅の三値データに変換した後、複数の2ビット幅の三値データを纏めて1つのワードに格納する場合を例に説明しているが、これに限られない。三値内積演算処理前に任意の手段で2ビット幅の三値データが纏めて1つのワードに格納されていればよい。
また、本実施の形態では、複数の2ビット幅の三値データが、1つのワードに対して割り当てられたレジスタ、に格納される場合について説明するが、これに限られない。例えば、アセンブリ等の言語レベルであれば、複数の2ビット幅の三値データは、各言語における任意のデータフォーマットに従い格納される。なお、ワードとは、画像認識用プロセッサ12にて同時に処理されるデータ量の最小単位のことである。ワード長とは、ワードのビット数(ビット幅)のことである。
図3は、特徴量データを三値データに変換してワードに格納するまでの流れを説明するための図である。
図3に示すように、画像認識用プロセッサ12は、実数で表される勾配方向ヒストグラムの各方向成分(特徴量データの各要素)と閾値th1,th2(但しth1<th2)とを比較して、閾値th2以上の方向成分を値“+1”、閾値th1以上閾値th2未満の方向成分を値“0”、閾値th1未満の方向成分を値“−1”に変換する。この三値データ+1,0,−1は、それぞれ2ビット幅の二進数値“01”,“00”,“10”で表現される。より詳細には、+1を示す三値データの場合、2ビット幅の二進数値の下位ビットは1(第1値)を示す。−1を示す三値データの場合、2ビット幅の二進数値の上位ビットは1(第1値)を示す。0を示す三値データの場合、2ビット幅の二進数値の上位及び下位ビットは何れも0(第2値)を示す。そして、画像認識用プロセッサ12は、複数の2ビット幅の三値データを纏めて1つのワードに格納する。
図3の例では、勾配方向ヒストグラムの方向成分が8個(要素数8個)、ワード長が16ビットとなっている。したがって、8個の方向成分は、何れも2ビット幅の三値データに変換された後、16ビット幅の1つのワードに纏めて格納される。
以下、本実施の形態に係る三値データ格納方法についてさらに詳細に説明する。
図4は、本実施の形態に係る三値データ格納方法を示す図である。
図4に示すように、入力データ(特徴量データ等)は、N(Nは1以上の整数)個の三値データ(要素)からなるデータ配列Xで表される。また、ワード長はL(Lは2以上の整数)ビットである。ここでは、2N≦Lである場合について説明する。
例えば、0番目の三値データXとして、値+1,0,−1に対応する2ビット幅の二進数値“01”,“00”,“10”の何れかが、ワードの0,1番目のビットb,bに格納される。1番目の三値データXとして、値+1,0,−1に対応する2ビット幅の二進数値“01”,“00”,“10”の何れかが、ワードの2,3番目のビットb,bに格納される。同様にして、2〜N−1番目の三値データX〜XN−1として、各々、値+1,0,−1に対応する2ビット幅の二進数値“01”,“00”,“10”の何れかが、ワードの対応する2ビットに格納される。このようにして、N個の2ビット幅の三値データがLビット幅の1つのワードに纏めて格納される。
このように、複数の2ビット幅の三値データ(要素)を1つのワードに格納することで、当該複数の三値データを画像認識用プロセッサ12にて同時に処理することが可能になる。それにより、画像認識用プロセッサ12は、複数の三値データ間の演算(具体的には内積演算)を効率よく処理することが可能となる。
図5は、本実施の形態に係る三値データ格納方法の具体例を示す図である。ここでは、要素数N=32、ワード長L=16、即ち、2N>Lである場合について説明する。
図5に示すように、入力データのデータ配列Xは、32個の三値データX〜X31からなる。この場合、32個の2ビット幅の三値データX〜X31は、4つの16ビット幅のワードに分割して格納される。より具体的には、8個の2ビット幅の三値データX〜Xが1つ目の16ビット幅のワードに格納され、8個の2ビット幅の三値データX〜X15が2つ目の16ビット幅のワードに格納され、8個の2ビット幅の三値データX16〜X23が3つ目の16ビット幅のワードに格納され、8個の2ビット幅の三値データX24〜X31が4つ目の16ビット幅のワードに格納される。
(関連技術のデータ格納方法)
図19は、関連技術の三値データ格納方法を示す図である。
図19に示すように、入力データは、N(Nは1以上の整数)個の三値データ(要素)からなるデータ配列Xで表される。また、ワード長はL(Lは2以上の整数)ビットである。
関連技術の構成では、i(iは0〜N−1の任意の整数)番目の三値データXiとして、値+1,0,−1に対応するLビット幅の値“00…00000001”,“00…00000000”,“11…11111111”の何れかが、Lビット幅の1つのワードに格納される。つまり、1つのワードに対して1つの三値データ(要素)のみが格納される。
図20は、関連技術の三値データ格納方法の具体例を示す図である。ここでは、要素数N=32、ワード長L=16である場合について説明する。
図20に示すように、入力データのデータ配列Xは、32個の三値データX〜X31からなる。この場合、32個の三値データX〜X31は、それぞれ32個のワードに個別に格納される。このような構成では、複数の三値データを同時に処理することができないため、複数の三値データ間の演算(具体的には内積演算)を効率よく処理することができない。
(画像認識用プロセッサ12の構成)
図6は、画像認識用プロセッサ12の構成を示すブロック図である。
図6に示すように、画像認識用プロセッサ12は、半導体基板上にCMOS製造プロセスを用いて形成され、メモリ13に記憶された入力データ(特徴量データ等)及び命令データに基づいて演算処理を実行して、演算結果(画像認識結果)を出力する。
具体的には、画像認識用プロセッサ12は、制御部121と、ALU(算術演算部)122と、三値乗算器(三値乗算部)123と、を少なくとも備える。また、制御部121は、複数のレジスタからなるレジスタ部124を有する。
制御部121は、メモリ13から受け取った命令データをデコードし、ALU122及び三値乗算器123の制御を行う。ALU122は、乗算、加算、論理演算、ビットカウント等の機能を有する回路である。三値乗算器123は、指定されたアドレスのレジスタに格納された複数の2ビット幅の三値データ(要素)と、指定された別のアドレスに格納された複数の2ビット幅の三値データ(要素)と、をそれぞれ乗算する回路である。ALU122及び三値乗算器123のそれぞれの演算結果は、レジスタ部124に書き込まれる。
(三値乗算器113の構成例)
図7は、三値乗算器123を示すブロック図である。ここでは、要素数N=8,ワード長L=16である場合について説明する。
図7に示すように、三値乗算器123は、8個の2ビット幅の三値データ(要素)X〜Xからなる16ビット幅のデータrd1と、8個の2ビット幅の三値データ(要素)Y〜Yからなる16ビット幅のデータrd2と、を受け取って、同じく8個の2ビット幅の三値データ(要素)Z〜Zからなる16ビット幅のデータrdoを出力する。
より具体的には、三値乗算器123は、L/2個の三値乗算回路を有する。ここでL=16であるから、三値乗算器123は、8個の三値乗算回路3mul2b_0〜3mul2b_7を有する。三値乗算回路3mul2b_0〜3mul2b_7は、それぞれ、データrd1を構成する2ビット幅の三値データX〜Xと、データrd2を構成する2ビット幅の三値データY〜Yと、を乗算して、データrdoを構成する2ビット幅の三値データZ〜Zを出力する。
図8は、三値乗算回路3mul2b_0の具体例を示す回路図である。なお、三値乗算回路3mul2b_1〜3mul2b_7については、三値乗算回路3mul2b_0と同じ構成であるため、その説明を省略する。
図8に示すように、三値乗算回路3mul2b_0は、データrd1に含まれる三値データXと、データrd2に含まれる三値データYと、を乗算して、データrdoに含まれる三値データZを出力する回路である。ここで、三値データXは、データrd1の第0ビット(rd1[0])及び第1ビット(rd1[1])により構成される。三値データYは、データrd2の第0ビット(rd2[0])及び第1ビット(rd2[1])により構成される。三値データZは、データrdoの第0ビット(rdo[0])及び第1ビット(rdo[1])により構成される。
具体的には、三値乗算回路3mul2b_0は、論理積回路(以下、AND回路と称す)151〜153と、論理和回路(以下、OR回路と称す)154と、排他的論理和回路(以下、EXOR回路と称す)155,156と、を有する。
AND回路151は、データrd1[0]と、データrd1[1]と、の論理積を出力する。AND回路152は、データrd2[0]と、データrd2[1]と、の論理積を出力する。OR回路154は、AND回路151,152のそれぞれの出力の論理和をデータrdo[0]として出力する。
EXOR回路155は、データrd1[0]と、データrd1[1]と、の排他的論理和を出力する。EXOR回路156は、データrd2[0]と、データrd2[1]と、の排他的論理和を出力する。AND回路153は、EXOR回路155,156のそれぞれの出力の論理積をデータrdo[1]として出力する。
かかる構成により、三値乗算回路3mul2b_0は、三値データ+1,0,−1をそれぞれ2ビット幅の2進数の値“01”,“00”,“10”で表した乗算結果を出力することが可能となる。
なお、各三値乗算回路3mul2b_0〜3mul2b_7は、上記構成に限られず、同等の機能を有する他の構成に適宜変更可能である。
(画像認識用プロセッサ12の動作)
次に、図9及図10を用いて、画像認識用プロセッサ12の動作について説明する。
図9は、三値内積演算処理に関するアセンブリプログラムである。
制御部121は、メモリ13に記憶された命令コードの一つである図9に示すアセンブリプログラムに基づいて、ALU122及び三値乗算器123の処理を制御する。本例では、要素数N=128、ワード長L=16である場合について説明する。したがって、1ワード当たり8個の2ビット幅の三値データを格納することができる。なお、レジスタ部124に設けられた各レジスタは、1ワード(即ち16ビット)分のデータを格納することができるものとする。
図9に示すように、1サイクル目では、ロード命令によって、一方の入力データ(例えば特徴量データ)を構成する128個の要素のうちの8個の要素がメモリ13から読み出されレジスタ部114に格納される。具体的には、レジスタr1に記憶されたメモリ13の先頭アドレスに、レジスタr2に記憶されたアドレスオフセットを加算することで指定されたメモリ13のアドレス、に記憶されている8個の2ビット幅の三値データ(例えば特徴量データの要素)が、レジスタアドレスr0のレジスタ(レジスタr0と称す)に格納される。
2サイクル目では、ロード命令によって、他方の入力データ(例えば辞書データ)を構成する128個の要素のうちの8個の要素がメモリ13から読み出されレジスタ部114に格納される。具体的には、レジスタr4に記憶されたメモリ13の先頭アドレスに、レジスタr2に記憶されたアドレスオフセットを加算することで指定されたメモリ13のアドレス、に記憶されている8個の2ビット幅の三値データ(例えば辞書データの要素)が、レジスタアドレスr3のレジスタ(レジスタr3と称す)に格納される。
3サイクル目では、専用の三値乗算命令(mult3)によって、三値乗算器123による乗算が実行される。三値乗算器123は、一方の入力データの8要素と、他方の入力データの8要素と、をそれぞれ乗算する。具体的には、三値乗算器123は、レジスタr0に記憶された8個の2ビット幅の三値データと、レジスタr3に記憶された8個の2ビット幅の三値データと、をそれぞれ並列に乗算する。三値乗算器123の乗算結果(8個の2ビット幅の三値データ)は、レジスタr5に格納される。
4サイクル目では、レジスタr5に格納された三値乗算器123の乗算結果(8個の2ビット幅の三値データ)と、0b0101010101010101(=0x5555)と、の論理積が実行され、その結果がレジスタr6に格納される。この論理演算は、各三値データの下位ビット(偶数ビット)の値をそのまま出力させて、上位ビット(奇数ビット)の値を0にマスクする、ビットマスク処理に相当する。ここで、+1の二進数値は“01”、0の二進数値は“00”、−1の二進数値は“10”と表されていることから、+1を示す三値データのみレジスタr6に格納されることになる。
5サイクル目では、レジスタr5に格納された三値乗算器123の乗算結果(8個の2ビット幅の三値データ)と、0b1010101010101010(=0xAAAA)と、の論理積が実行され、その結果がレジスタr7に格納される。この論理演算は、各三値データの上位ビット(奇数ビット)の値をそのまま出力させて、下位ビット(偶数ビット)の値を0にマスクする、ビットマスク処理に相当する。ここで、+1の二進数値は“01”、0の二進数値は“00”、−1の二進数値は“10”と表されていることから、−1を示す三値データのみレジスタr7に格納されることになる。
6サイクル目では、ビットカウント命令によって、レジスタr6に格納された+1を示す三値データの数がカウントされる。具体的な処理としては、レジスタr6に格納されたデータを構成する16ビットのうち1を示すビットの数がカウントされる。カウント結果は、レジスタr8に格納される。
7サイクル目では、ビットカウント命令によって、レジスタr7に格納された−1を示す三値データの数がカウントされる。具体的な処理としては、レジスタr7に格納されたデータを構成する16ビットのうち1を示すビットの数がカウントされる。カウント結果は、レジスタr9に格納される。
8サイクル目では、レジスタr8に格納された+1を示す三値データの数から、レジスタr9に格納された−1を示す三値データの数が、減算される。この減算結果は、要素8個分の内積演算結果に相当し、レジスタr10に格納される。
図10は、三値内積演算処理の具体例を示す図である。
図10を参照すると、
1サイクル目にて、レジスタr0に
(+1,+1, 0, 0, 0,−1,−1,−1)
=(01,01,00,00,00,10,10,10)が格納され、
2サイクル目にて、レジスタr3に
(−1,+1,−1, 0,+1,−1, 0,+1)
=(10,01,10,00,01,10,00,01)が格納される。
この場合、3サイクル目の三値乗算器113の乗算結果は、
(−1,+1, 0, 0, 0,+1, 0,−1)
=(10,01,00,00,00,01,00,10)となる。
したがって、4サイクル目のビットマスク処理の結果は、
(00,01,00,00,00,01,00,00)となる。
また、5サイクル目のビットマスク処理の結果は、
(10,00,00,00,00,00,00,10)となる。
したがって、6サイクル目のビットカウントの結果、即ち、+1を示す三値データの数は2個となる。7サイクル目のビットカウントの結果、即ち、−1を示す三値データの数は2個となる。
したがって、8サイクル目の減算結果、即ち、要素8個分の内積演算結果は、「+1を示す三値データの数」−「−1を示す三値データの数」=2−2=0となる。
図9に戻り、9サイクル目では、レジスタr10に格納された要素8個分の内積演算結果が、レジスタr11の値(初期値は0)に累積加算される。
10サイクル目では、レジスタr2に記憶されたオフセット値に1が加算される。それにより、次の8個の要素の読み出しが可能となる。
11サイクル目では、レジスタr2に記憶されたオフセット値が所定値に達したか否かが判定される。つまり、各入力データを構成する128個の要素の全てについて内積が行われたか否かが判定される。全てについて内積が行われていなければ、1サイクル目に戻り、全てについて内積が行われていれば、次の処理に進む。本例では、要素数=128,ワード長L=16であって、1ワード当たり8個の要素が格納されることから、合計16(=128/8))回、1〜11サイクル目の処理が繰り返される。最終的に、レジスタr11には、要素128個分の内積演算結果が格納されることとなる。
ここで、1〜11サイクル目の処理が16回繰り返されることから、合計サイクル数は、11×16=176サイクルとなる。
(関連技術の構成)
図21は、関連技術の画像認識用プロセッサ52の構成を示すブロック図である。
図21に示すように、画像認識用プロセッサ52は、制御部521,ALU522と、を備える。また、制御部521は、複数のレジスタからなるレジスタ部524を有する。
制御部521は、外部メモリから受け取った命令データをデコードし、ALU522の制御を行う。ALU522の演算結果は、レジスタ部524に書き込まれる。
(関連技術の動作)
次に、関連技術の画像認識用プロセッサ52の動作について説明する。図22は、関連技術の三値内積演算処理に関するアセンブリプログラムである。本例では、要素数N=128、ワード長L=16である場合について説明する。ここで、関連技術の構成では、上述のように1ワード当たり1つの三値データのみ格納される。
図22に示すように、1サイクル目では、ロード命令によって、一方の入力データ(例えば特徴量データ)を構成する128個の要素のうち1個の要素が外部メモリから読み出されレジスタ部524に格納される。具体的には、レジスタr1に記憶された外部メモリの先頭アドレスに、レジスタr2に記憶されたアドレスオフセットを加算することで指定された外部メモリのアドレス、に記憶されている1個の16ビット幅の三値データ(例えば特徴量データの要素)が、レジスタr0に格納される。
2サイクル目では、ロード命令によって、他方の入力データ(例えば辞書データ)を構成する128個の要素のうち1個の要素が外部メモリから読み出されレジスタ部524に格納される。具体的には、レジスタr4に記憶された外部メモリの先頭アドレスに、レジスタr2に記憶されたアドレスオフセットを加算することで指定された外部メモリのアドレス、に記憶されている1個の16ビット幅の三値データ(例えば辞書データの要素)が、レジスタr3に格納される。
3サイクル目では、一方の入力データの1要素と、他方の入力データの1要素と、の乗算が実行される。具体的には、レジスタr0に記憶された1個の三値データと、レジスタr3に記憶された1個の三値データと、の乗算が実行される。この乗算結果(1個の16ビット幅の三値データ)は、要素1個分の内積演算結果に相当し、レジスタr5に格納される。
4サイクル目では、レジスタr5に格納された要素1個分の内積演算結果が、レジスタr6の値(初期値は0)に累積加算される。
5サイクル目では、レジスタr2に記憶されたオフセット値に1が加算される。それにより、次の1個の要素の読み出しが可能となる。
6サイクル目では、レジスタr2に記憶されたオフセット値が所定値に達したか否かがが判定される。つまり、各入力データを構成する128個の要素の全てについて内積が行われたか否かが判定される。全てについて内積が行われていなければ、1サイクル目に戻り、全てについて内積が行われていれば、次の処理に進む。本例では、要素数=128,ワード長L=16であって、1ワード当たり1個の要素のみ格納されることから、合計128回、1〜6サイクル目の処理が繰り返される。最終的に、レジスタr6には、要素128個分の内積演算結果が格納されることとなる。
ここで、1〜6サイクル目の処理が128回繰り返されることから、合計サイクル数は、6×128=768サイクルとなる。
このように、画像認識用プロセッサ12は、関連技術の画像認識用プロセッサ52の場合よりも、少ないサイクル数で効率よく2入力データ間の三値内積演算を実行することができる。
(画像認識用プロセッサ及び画像認識装置のハードウエア構成)
なお、画像認識用プロセッサ12及びそれを備えた画像認識装置1は、例えば、汎用的なコンピュータシステムにより実現可能である。以下、図11を用いて簡単に説明する。
図11は、画像認識用プロセッサ12及びそれを備えた画像認識装置1のハードウエア構成の一例を示すブロック図である。コンピュータ100は、例えば、制御装置であるCPU(Central Processing Unit;画像認識用プロセッサ12及びホストプロセッサ11に相当)101と、RAM(Random Access Memory)102と、ROM(Read Only Memory)103と、外部とのインターフェースであるIF(Inter Face)104と、不揮発性記憶装置の一例であるHDD(Hard Disk Drive)105と、を備える。さらに、コンピュータ100は、その他図示しない構成として、キーボードやマウス等の入力装置やディスプレイ等の表示装置を備えていても良い。
HDD105には、OS(Operating System)(不図示)と、三値内積演算処理プログラム106と、が記憶されている。三値内積演算処理プログラム106は、本実施の形態に係る三値内積演算処理が実装されたコンピュータプログラムである。
CPU101は、コンピュータ100における各種処理、RAM102,ROM103,IF104及びHDD105へのアクセス等を制御する。コンピュータ100は、CPU101がHDD105に記憶されたOS及び三値内積演算処理プログラム106を読み込み、実行する。これにより、コンピュータ100は、本実施の形態にかかる画像認識用プロセッサ12及びそれを備えた画像認識装置1を実現する。
(画像認識装置1の他の適用事例)
続いて、画像認識装置1の他の適用事例について説明する。
図12は、画像認識装置1の適用事例を示す図である。
図12に示すように、画像認識装置1は、車両に搭載される場合に限られず、ビデオ等で撮影された画像をパーソナルコンピュータに取り込む場合などにも適用可能である。
<実施の形態2>
図13は、実施の形態2に係る画像認識用プロセッサ22を示すブロック図である。
図13に示すように、画像認識用プロセッサ22は、制御部221と、ALU222と、三値乗算器223と、三値用ビットカウンタ225と、を少なくとも備える。また、制御部221は、複数のレジスタからなるレジスタ部224を有する。なお、制御部221、ALU222、三値乗算器223及びレジスタ部224は、それぞれ、制御部121、ALU122、三値乗算器123及びレジスタ部124に対応する。
制御部211は、メモリ13から受け取った命令データをデコードし、ALU222、三値乗算器223及び三値用ビットカウンタ225の制御を行う。三値用ビットカウンタ225は、指定されたアドレスのレジスタに格納された複数の2ビット幅の三値データ(要素)のうち、+1を示す三値データの数、及び、−1を示す三値データの数、を選択的にカウントする回路である。ALU222及び三値乗算器223については、ALU122及び三値乗算器123と同様であるため、その説明を省略する。ALU222、三値乗算器223及び三値用ビットカウンタ225のそれぞれの演算結果は、レジスタ部224に書き込まれる。
(三値用ビットカウンタ225)
図14は、三値用ビットカウンタ225を示すブロック図である。ここでは、要素数N=8,ワード長L=16である場合について説明する。
図14に示すように、三値用ビットカウンタ225は、8個の2ビット幅の三値データ(要素)X〜Xからなる16ビット幅のデータrdinを受け取って、+1を示す三値データの数、及び、−1を示す三値データの数、を選択的にカウントしてデータrdoutとして出力する。
より具体的には、三値用ビットカウンタ225は、L/2個のセレクタと、ビットカウント回路BC1と、を有する。ここでL=16であるから、三値用ビットカウンタ225は、8個のセレクタSEL0〜SEL7を有する。セレクタSEL0〜SEL7は、それぞれ、三値データX〜Xの下位ビット(偶数ビット)、又は、三値データX〜Xの上位ビット(奇数ビット)、を選択して出力する。ここで、+1の二進数値は“01”、0の二進数値は“00”、−1の二進数値は“10”と表されていることから、三値データX〜Xの下位ビット(偶数ビット)の値に基づいて当該三値データX〜Xが+1を示すか否か判別することができ、三値データX〜Xの上位ビット(奇数ビット)の値に基づいて当該三値データX〜Xが−1を示すか否か判別することができる。
ビットカウント回路BC1は、セレクタSEL0〜SEL7のそれぞれの出力結果のうち1を示す出力結果の数をカウントする。つまり、セレクタSEL0〜SEL7により三値データX〜Xの下位ビットが選択されている場合には、ビットカウント回路BC1は、+1を示す三値データX〜Xの数をカウントする。他方、セレクタSEL0〜SEL7により三値データX〜Xの上位ビットが選択されている場合には、ビットカウント回路BC1は、−1を示す三値データX〜Xの数をカウントする。そして、ビットカウント回路BC1は、カウント結果をデータrdoutとして出力する。
かかる構成により、三値用ビットカウンタ225は、8個の三値データのうち、+1を示す三値データの数、及び、−1を示す三値データの数、を選択的にカウントして出力することができる。なお、三値用ビットカウンタ225は、上記構成に限られず、同等の機能を有する他の構成に適宜変更可能である。
(画像認識用プロセッサ22の動作)
次に、図15を用いて、画像認識用プロセッサ22の動作について説明する。
図15は、三値内積演算処理に関するアセンブリプログラムである。
制御部221は、メモリ13に記憶された命令コードの一つである図15に示すアセンブリプログラムに基づいて、ALU222、三値乗算器223及び三値用ビットカウンタ225の処理を制御する。本例では、要素数N=128、ワード長L=16である場合について説明する。したがって、1ワード当たり8個の2ビット幅の三値データを格納することができる。なお、レジスタ部224に設けられた各レジスタは、1ワード(即ち16ビット)分のデータを格納することができるものとする。
図15に示すように、1サイクル目では、8個の2ビット幅の三値データ(例えば特徴量データの要素)がレジスタr0に格納される。2サイクル目では、8個の2ビット幅の三値データ(例えば辞書データの要素)がレジスタr3に格納される。
3サイクル目では、専用の三値乗算命令(mult3)によって、三値乗算器223による乗算が実行される。具体的には、三値乗算器223は、レジスタr0に記憶された8個の2ビット幅の三値データと、レジスタr3に記憶された8個の2ビット幅の三値データと、をそれぞれ並列に乗算する。三値乗算器223の乗算結果(8個の2ビット幅の三値データ)は、レジスタr5に格納される。
4サイクル目では、専用のビットカウント命令(bcountE)によって、+1を示す三値データの数が三値用ビットカウンタ225によりカウントされる。具体的には、三値用ビットカウンタ225は、レジスタr5に記憶された三値乗算器223の乗算結果のうち1を示す偶数ビットの数をカウントする。このカウント結果は、レジスタr6に格納される。
5サイクル目では、専用のビットカウント命令(bcountO)によって、−1を示す三値データの数が三値用ビットカウンタ225によりカウントされる。具体的には、三値用ビットカウンタ225は、レジスタr5に記憶された三値乗算器223の乗算結果のうち1を示す奇数ビットの数をカウントする。このカウント結果は、レジスタr7に格納される。
6サイクル目では、レジスタr6に格納された+1を示す三値データの数から、レジスタr7に格納された−1を示す三値データの数が、減算される。この減算結果は、要素8個分の内積演算結果に相当し、レジスタr8に格納される。
7サイクル目では、レジスタr8に格納された要素8個分の内積演算結果が、レジスタr9の値(初期値は0)に累積加算される。
8サイクル目では、レジスタr2に記憶されたオフセット値に1が加算される。それにより、次の8個の要素の読み出しが可能となる。
9サイクル目では、レジスタr2に記憶されたオフセット値が所定値に達したか否かが判定される。つまり、各入力データを構成する128個の要素の全てについて内積が行われたか否かが判定される。全てについて内積が行われていなければ、1サイクル目に戻り、全てについて内積が行われていれば、次の処理に進む。本例では、要素数=128,ワード長L=16であって、1ワード当たり8個の要素が格納されることから、合計16(=128/8))回、1〜9サイクル目の処理が繰り返される。最終的に、レジスタr9には、要素128個分の内積演算結果が格納されることとなる。
ここで、1〜9サイクル目の処理が16回繰り返されることから、合計サイクル数は、9×16=144サイクルとなる。
このように、画像認識用プロセッサ22は、画像認識用プロセッサ12の場合よりも、さらに少ないサイクル数で効率よく2入力データ間の三値内積演算を実行することができる。
<実施の形態3>
図16は、実施の形態3に係る画像認識用プロセッサ32を示すブロック図である。
図16に示すように、画像認識用プロセッサ32は、制御部321と、ALU322と、三値乗算器323と、三値用ビットカウンタ(乗算結果処理部)325と、を少なくとも備える。また、制御部321は、複数のレジスタからなるレジスタ部324を有する。なお、制御部321、ALU322、三値乗算器323及びレジスタ部324は、それぞれ、制御部121、ALU122、三値乗算器123及びレジスタ部124に対応する。
制御部311は、メモリ13から受け取った命令データをデコードし、ALU322、三値乗算器323及び三値用ビットカウンタ325の制御を行う。三値用ビットカウンタ325は、指定されたアドレスのレジスタに格納された複数の2ビット幅の三値データ(要素)のうち、+1を示す三値データの数、及び、−1を示す三値データの数、をそれぞれカウントした後、+1を示す三値データの数から−1を示す三値データの数を減算した結果を出力する回路である。ALU322及び三値乗算器323については、ALU122及び三値乗算器123と同様であるため、その説明を省略する。ALU322、三値乗算器323及び三値用ビットカウンタ325のそれぞれの演算結果は、レジスタ部324に書き込まれる。
(三値用ビットカウンタ325)
図17は、三値用ビットカウンタ325を示すブロック図である。ここでは、要素数N=8,ワード長L=16である場合について説明する。
図17に示すように、三値用ビットカウンタ325は、8個の2ビット幅の三値データ(要素)X〜Xからなる16ビット幅のデータrdinを受け取って、+1を示す三値データの数、及び、−1を示す三値データの数、をそれぞれカウントした後、これらの差を算出してデータrdout2として出力する。
より具体的には、三値用ビットカウンタ325は、ビットカウント回路(第1及び第2カウンタ)BC2,BC3と、減算回路SUB1と、を有する。ビットカウント回路BC2は、三値データX〜Xの上位ビット(奇数ビット)のうち1を示すビットの数をカウントする。ビットカウント回路BC3は、三値データX〜Xの下位ビット(偶数ビット)のうち1を示すビットの数をカウントする。
ここで、+1の二進数値は“01”、0の二進数値は“00”、−1の二進数値は“10”と表されていることから、三値データX〜Xの上位ビット(奇数ビット)のうち1を示すビットの数に基づいて、−1を示す三値データX〜Xの数を特定することができ、また、三値データX〜Xの下位ビット(偶数ビット)のうち1を示すビットの数に基づいて、+1を示す三値データX〜Xの数を特定することができる。
そして、減算回路SUB1は、+1を示す三値データの数から、−1を示す三値データの数を減算して、減算結果をデータrdout2として出力する。この減算結果は、要素8個分の内積演算結果に相当する。
かかる構成により、三値用ビットカウンタ325は、8個の三値データのうち、+1を示す三値データの数、及び、−1を示す三値データの数、をそれぞれカウントした後、これらの差を要素8個分の内積演算結果として出力することができる。なお、三値用ビットカウンタ325は、上記構成に限られず、同等の機能を有する他の構成に適宜変更可能である。
(画像認識用プロセッサ32の動作)
次に、図18を用いて、画像認識用プロセッサ32の動作について説明する。
図18は、三値内積演算処理に関するアセンブリプログラムである。
制御部321は、メモリ13に記憶された命令コードの一つである図18に示すアセンブリプログラムに基づいて、ALU322、三値乗算器323及び三値用ビットカウンタ325の処理を制御する。本例では、要素数N=128、ワード長L=16である場合について説明する。したがって、1ワード当たり8個の2ビット幅の三値データを格納することができる。なお、レジスタ部324に設けられた各レジスタは、1ワード(即ち16ビット)分のデータを格納することができるものとする。
図18に示すように、1サイクル目では、8個の2ビット幅の三値データ(例えば特徴量データの要素)がレジスタr0に格納される。2サイクル目では、8個の2ビット幅の三値データ(例えば辞書データの要素)がレジスタr3に格納される。
3サイクル目では、専用の三値乗算命令(mult3)によって、三値乗算器323による乗算が実行される。具体的には、三値乗算器323は、レジスタr0に記憶された8個の2ビット幅の三値データと、レジスタr3に記憶された8個の2ビット幅の三値データと、をそれぞれ並列に乗算する。三値乗算器323の乗算結果(8個の2ビット幅の三値データ)は、レジスタr5に格納される。
4サイクル目では、専用のビットカウント命令(bcount3)によって、三値用ビットカウンタ325による処理が行われる。具体的には、三値用ビットカウンタ325は、レジスタr5に記憶された三値乗算器323の乗算結果のうち、1を示す偶数ビットの数、及び、1を示す奇数ビットの数、をそれぞれカウントした後、1を示す偶数ビットの数から1を示す奇数ビットの数を減算する。この減算結果は、要素8個分の内積演算結果に相当し、レジスタr6に格納される。
5サイクル目では、レジスタr6に格納された要素8個分の内積演算結果が、レジスタr7の値(初期値は0)に累積加算される。
6サイクル目では、レジスタr2に記憶されたオフセット値に1が加算される。それにより、次の8個の要素の読み出しが可能となる。
7サイクル目では、レジスタr2に記憶されたオフセット値が所定値に達したか否かが判定される。つまり、各入力データを構成する128個の要素の全てについて内積が行われたか否かが判定される。全てについて内積が行われていなければ、1サイクル目に戻り、全てについて内積が行われていれば、次の処理に進む。本例では、要素数=128,ワード長L=16であって、1ワード当たり8個の要素が格納されることから、合計16(=128/8))回、1〜7サイクル目の処理が繰り返される。最終的に、レジスタr7には、要素128個分の内積演算結果が格納されることとなる。
ここで、1〜7サイクル目の処理が16回繰り返されることから、合計サイクル数は、7×16=112サイクルとなる。
このように、画像認識用プロセッサ32は、画像認識用プロセッサ22の場合よりも、さらに少ないサイクル数で効率よく2入力データ間の三値内積演算を実行することができる。
以上、本発明者によってなされた発明を実施の形態に基づき具体的に説明したが、本発明は既に述べた実施の形態に限定されるものではなく、その要旨を逸脱しない範囲において種々の変更が可能であることはいうまでもない。
例えば、上記の実施の形態に係る半導体装置では、半導体基板、半導体層、拡散層(拡散領域)などの導電型(p型もしくはn型)を反転させた構成としてもよい。そのため、n型、及びp型の一方の導電型を第1の導電型とし、他方の導電型を第2の導電型とした場合、第1の導電型をp型、第2の導電型をn型とすることもできるし、反対に第1の導電型をn型、第2の導電型をp型とすることもできる。
1 画像認識装置
11 ホストプロセッサ
12 画像認識用プロセッサ
13 メモリ
121 制御部
122 ALU
123 三値乗算器
124 レジスタ部
3mul2b_0〜3mul2b_7 三値乗算回路
151,152,153 AND回路
154 OR回路
155 EXOR回路
22 画像認識用プロセッサ
221 制御部
222 ALU
223 三値乗算器
224 レジスタ部
225 三値用ビットカウンタ
32 画像認識用プロセッサ
321 制御部
322 ALU
323 三値乗算器
324 レジスタ部
325 三値用ビットカウンタ
BC1〜BC3 ビットカウント回路
SEL0〜SEL7 セレクタ
SUB1 減算回路

Claims (12)

  1. 第1ビットが第1値を示す場合に+1を表し、第2ビットが第1値を示す場合に−1を表し、前記第1及び前記第2ビットが何れも第2値を示す場合に0を表す、複数の2ビット幅の三値データを1つのワードに格納する、データ格納方法。
  2. 請求項1に記載のデータ格納方法を用いて第1及び第2入力データを構成し、
    前記第1入力データを構成する複数の三値データと、前記第2入力データを構成する複数の三値データと、をそれぞれ乗算して複数の2ビット幅の三値データにより構成される乗算結果を出力し、
    前記乗算結果を構成する前記複数の三値データのうち+1を表す三値データの数から−1を表す三値データの数を減算した数を内積演算結果として出力する、三値内積演算方法。
  3. 前記乗算結果を構成する前記複数の三値データのうち第1ビットが第1値を示す三値データの数をカウントすることで、+1を表す前記三値データの数を特定し、
    前記乗算結果を構成する前記複数の三値データのうち第2ビットが第1値を示す三値データの数をカウントすることで、−1を表す前記三値データの数を特定し、
    +1を表す前記三値データの数から−1を表す前記三値データの数を減算した数を前記内積演算結果として出力する、請求項2に記載の三値内積演算方法。
  4. 第1ビットが第1値を示す場合に+1を表し、第2ビットが第1値を示す場合に−1を表し、前記第1及び前記第2ビットが何れも第2値を示す場合に0を表す、複数の2ビット幅の三値データを1つのワードに格納することで構成される第1及び第2入力データのそれぞれの複数の三値データ間の乗算を行う三値乗算部を備え、
    前記三値乗算部の乗算結果を構成する複数の三値データのうち+1を表す三値データの数から−1を表す三値データの数を減算した数が内積演算結果として出力される、三値内積演算回路。
  5. 前記三値乗算部の乗算結果を構成する前記複数の三値データのうち、+1を表す前記三値データの数、及び、−1を表す前記三値データの数、を選択的にカウントするカウンタをさらに備え、
    前記カウンタによりカウントされた+1を表す前記三値データの数から−1を表す前記三値データの数を減算した数が内積演算結果として出力される、請求項4に記載の三値内積演算回路。
  6. 前記カウンタは、前記三値乗算部の乗算結果を構成する前記複数の三値データのうち第1ビットが第1値を示す三値データの数をカウントすることで、+1を表す前記三値データの数を特定するとともに、第2ビットが第1値を示す三値データの数をカウントすることで、−1を表す前記三値データの数を特定する、請求項5に記載の三値内積演算回路。
  7. 前記三値乗算部の乗算結果を構成する前記複数の三値データのうち+1を表す前記三値データの数から−1を表す前記三値データの数を減算した数を内積演算結果として出力する乗算結果処理部をさらに備えた、請求項4に記載の三値内積演算回路。
  8. 前記乗算結果処理部は、
    前記三値乗算部の乗算結果を構成する前記複数の三値データのうち+1を表す前記三値データの数をカウントする第1カウンタと、
    前記三値乗算部の乗算結果を構成する前記複数の三値データのうち−1を表す前記三値データの数をカウントする第2カウンタと、
    前記第1カウンタのカウント結果から前記第2カウンタのカウント結果を減算する減算回路と、を有する、請求項7に記載の三値内積演算回路。
  9. 前記第1カウンタは、前記三値乗算部の乗算結果を構成する前記複数の三値データのうち第1ビットが第1値を示す三値データの数をカウントすることで、+1を表す前記三値データの数を特定し、
    前記第2カウンタは、前記三値乗算部の乗算結果を構成する前記複数の三値データのうち第2ビットが第1値を示す三値データの数をカウントすることで、−1を表す前記三値データの数を特定する、請求項8に記載の三値内積演算回路。
  10. 請求項4に記載の三値内積演算回路と、
    前記三値内積演算回路に入力される前記第1及び前記第2入力データが記憶されるメモリと、を少なくとも備えた半導体装置。
  11. 第1ビットが第1値を示す場合に+1を表し、第2ビットが第1値を示す場合に−1を表し、前記第1及び前記第2ビットが何れも第2値を示す場合に0を表す、複数の2ビット幅の三値データを1つのワードに格納することで構成される第1及び第2入力データのそれぞれの複数の三値データ間の乗算を行う乗算処理と、
    前記乗算処理による乗算結果を構成する複数の三値データのうち+1を表す三値データの数をカウントする第1カウント処理と、
    前記乗算処理による乗算結果を構成する複数の三値データのうち−1を表す三値データの数をカウントする第2カウント処理と、
    +1を表す前記三値データの数から−1を表す前記三値データの数を減算する減算処理と、をコンピュータに実行させる三値内積演算処理プログラム。
  12. 前記第1カウント処理は、前記乗算結果を構成する前記複数の三値データのうち第1ビットが第1値を示す三値データの数をカウントすることで、+1を表す前記三値データの数を特定し、
    前記第2カウント処理は、前記乗算結果を構成する前記複数の三値データのうち第2ビットが第1値を示す三値データの数をカウントすることで、−1を表す前記三値データの数を特定する、請求項11に記載の三値内積演算処理プログラム。
JP2014169635A 2014-08-22 2014-08-22 三値内積演算回路、三値内積演算処理プログラム、及び、三値内積演算回路による演算処理方法 Active JP6324264B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2014169635A JP6324264B2 (ja) 2014-08-22 2014-08-22 三値内積演算回路、三値内積演算処理プログラム、及び、三値内積演算回路による演算処理方法
US14/797,104 US10133552B2 (en) 2014-08-22 2015-07-11 Data storage method, ternary inner product operation circuit, semiconductor device including the same, and ternary inner product arithmetic processing program

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2014169635A JP6324264B2 (ja) 2014-08-22 2014-08-22 三値内積演算回路、三値内積演算処理プログラム、及び、三値内積演算回路による演算処理方法

Publications (2)

Publication Number Publication Date
JP2016045721A true JP2016045721A (ja) 2016-04-04
JP6324264B2 JP6324264B2 (ja) 2018-05-16

Family

ID=55348372

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014169635A Active JP6324264B2 (ja) 2014-08-22 2014-08-22 三値内積演算回路、三値内積演算処理プログラム、及び、三値内積演算回路による演算処理方法

Country Status (2)

Country Link
US (1) US10133552B2 (ja)
JP (1) JP6324264B2 (ja)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6324264B2 (ja) * 2014-08-22 2018-05-16 ルネサスエレクトロニクス株式会社 三値内積演算回路、三値内積演算処理プログラム、及び、三値内積演算回路による演算処理方法
CN108363559B (zh) * 2018-02-13 2022-09-27 北京旷视科技有限公司 神经网络的乘法处理方法、设备和计算机可读介质
CN111555751A (zh) * 2020-06-02 2020-08-18 杭州电子科技大学 基于忆阻器的三值异或和同或逻辑门电路

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS593550A (ja) * 1982-06-30 1984-01-10 Yokogawa Hokushin Electric Corp 演算処理装置
JPH0793545A (ja) * 1993-09-22 1995-04-07 Mitsubishi Electric Corp 画像処理装置
JP2001265779A (ja) * 2000-03-16 2001-09-28 Hitachi Ltd 音響検索方法

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2536879A1 (fr) * 1982-11-26 1984-06-01 Efcis Multiplieur binaire rapide
JPH01195574A (ja) * 1988-01-29 1989-08-07 Nec Corp ディジタル信号処理装置
JP3421933B2 (ja) * 1994-10-31 2003-06-30 弘之 河▲崎▼ 演算処理装置及び電子計算機
US5931893A (en) * 1997-11-11 1999-08-03 Ericsson, Inc. Efficient correlation over a sliding window
US6232894B1 (en) * 1998-05-15 2001-05-15 Kokochi Sangyo Co., Ltd. Reproducible data conversion and/or compression method of digital signals and a data converter and a digital computer
JP3418595B2 (ja) 2000-06-29 2003-06-23 新日本無線株式会社 三値ディジタル回路
EP1617324B1 (en) * 2004-07-13 2007-09-12 STMicroelectronics S.r.l. System for digital signal processing using the CSD representation
US7562106B2 (en) * 2004-08-07 2009-07-14 Ternarylogic Llc Multi-value digital calculating circuits, including multipliers
JP6055391B2 (ja) * 2012-11-05 2016-12-27 株式会社デンソーアイティーラボラトリ 関連性判定装置、関連性判定プログラム、及び関連性判定方法
JP6324264B2 (ja) * 2014-08-22 2018-05-16 ルネサスエレクトロニクス株式会社 三値内積演算回路、三値内積演算処理プログラム、及び、三値内積演算回路による演算処理方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS593550A (ja) * 1982-06-30 1984-01-10 Yokogawa Hokushin Electric Corp 演算処理装置
JPH0793545A (ja) * 1993-09-22 1995-04-07 Mitsubishi Electric Corp 画像処理装置
JP2001265779A (ja) * 2000-03-16 2001-09-28 Hitachi Ltd 音響検索方法

Also Published As

Publication number Publication date
US20160054979A1 (en) 2016-02-25
JP6324264B2 (ja) 2018-05-16
US10133552B2 (en) 2018-11-20

Similar Documents

Publication Publication Date Title
Nguyen et al. A high-throughput and power-efficient FPGA implementation of YOLO CNN for object detection
CN110036368B (zh) 用于执行算术运算以累加浮点数的装置及方法
US20180107630A1 (en) Processor and method for executing matrix multiplication operation on processor
US20210089871A1 (en) Processing system and method for binary weight convolutional neural network
JP6225687B2 (ja) データ処理装置、およびデータ処理方法
TW201104569A (en) Microprocessors and methods for executing instruction
US10908877B2 (en) Median value determination in a data processing system
US9678716B2 (en) Apparatus and method for performing absolute difference operation
CN109863476A (zh) 动态变量精度计算
CN108733347B (zh) 一种数据处理方法及装置
JP6324264B2 (ja) 三値内積演算回路、三値内積演算処理プログラム、及び、三値内積演算回路による演算処理方法
CN107851007B (zh) 宽数据类型的比较的方法和装置
Venkatachalam et al. Approximate sum-of-products designs based on distributed arithmetic
CN111936965A (zh) 随机舍入逻辑
US20220156043A1 (en) Apparatus and Method for Processing Floating-Point Numbers
CN108364298B (zh) 用于将像素识别为局部极值点的方法和布置
WO2019023910A1 (zh) 数据处理方法和设备
JP6925823B2 (ja) データを抽出する装置及び方法
US8140608B1 (en) Pipelined integer division using floating-point reciprocal
CN111445016B (zh) 加速非线性数学计算的系统及方法
US20180032336A1 (en) Processor and method for executing instructions on processor
Gaihua et al. Instance segmentation convolutional neural network based on multi-scale attention mechanism
CN116306610A (zh) 模型训练方法及装置、自然语言处理方法及装置
Eusse et al. A flexible ASIP architecture for connected components labeling in embedded vision applications
Gan et al. Parallel array histogram architecture for embedded implementations

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20170524

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20180116

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20180123

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180314

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20180410

R150 Certificate of patent or registration of utility model

Ref document number: 6324264

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150