JP3096387B2 - 数値演算処理装置 - Google Patents

数値演算処理装置

Info

Publication number
JP3096387B2
JP3096387B2 JP06008777A JP877794A JP3096387B2 JP 3096387 B2 JP3096387 B2 JP 3096387B2 JP 06008777 A JP06008777 A JP 06008777A JP 877794 A JP877794 A JP 877794A JP 3096387 B2 JP3096387 B2 JP 3096387B2
Authority
JP
Japan
Prior art keywords
address
numerical
data
processing
numerical data
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.)
Expired - Fee Related
Application number
JP06008777A
Other languages
English (en)
Other versions
JPH07219919A (ja
Inventor
由和 近藤
裕 有馬
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.)
Mitsubishi Electric Corp
Original Assignee
Mitsubishi Electric 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 Mitsubishi Electric Corp filed Critical Mitsubishi Electric Corp
Priority to JP06008777A priority Critical patent/JP3096387B2/ja
Priority to US08/306,300 priority patent/US5532938A/en
Publication of JPH07219919A publication Critical patent/JPH07219919A/ja
Application granted granted Critical
Publication of JP3096387B2 publication Critical patent/JP3096387B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • G06F15/8007Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors single instruction multiple data [SIMD] multiprocessors
    • G06F15/8015One dimensional arrays, e.g. rings, linear arrays, buses
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G06F9/3887Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple data lanes [SIMD]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • Complex Calculations (AREA)
  • Image Processing (AREA)

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】この発明は数値データを処理する
ための数値演算処理装置に関し、特に、膨大な量の数値
演算を高速で処理するための装置に関する。より特定的
には、たとえば神経回路網数理モデルで用いられる積和
演算および荷重値更新処理など膨大な量の演算処理を繰
返し実行することが要求される数値演算処理を高速かつ
効率的に行なうための数値演算処理装置に関する。
【0002】
【従来の技術】
〔発明の背景〕半導体集積回路製造技術の進歩に伴って
数値演算処理装置は、その処理速度が高速化されてきて
いる。すなわち、素子および素子を電気的に相互接続す
る配線の微細加工技術の進展に伴って、半導体集積回路
の高集積化および高速化が実現されることにより、数値
演算処理装置が高速化されてきている。しかしながら、
半導体素子の微細化も、物理的限界に近づいてきてお
り、今後さらに飛躍的に半導体集積回路の高集積化およ
び高速化をこのような加工技術のみによって実現するの
が極めて困難になってきている。
【0003】そこで、最近、演算処理を並列に実行する
ことにより全体の演算処理を高速化する手法が注目され
てきている。
【0004】一般に、従来の並列化処理手法において
は、直列逐次処理手続の形式で記述されているプログラ
ムから並列に処理可能な処理だけを抽出して複数の演算
処理装置を分配する方法がとられる。複数の演算処理装
置への並列処理可能な処理の分配手法としては、処理内
容が互いに異なる複数の処理をそれぞれ演算処理装置に
分配して並列処理するMIMD(マルチ・インストラク
ション・マルチ・データ・ストリーム:Multi Instruct
ion Multi Data stream)方式および処理内容が共通であ
る多くの処理を複数の演算処理装置に分配して並列に処
理するSIMD(シングル・インストラクション・マル
チ・データ・ストリーム:Single Instruction Multi D
ata stream) 方式などが開発されている。
【0005】MIMD方式は、多様な応用に対し平均的
な効果を期待することができ、また処理手続の記述方法
による並列化効率の変動が少なくプログラム記述が容易
であるという利点を有するものの、一般に、並列化効率
が低い。処理内容が異なる処理を並列に処理するため、
並列に実行することのできる処理を数多く抽出するのは
困難であり、複数の演算処理装置のうち実際に並列に動
作する演算処理装置の数(並列化効率)が低くなる。
【0006】一方、SIMD方式は、共通の命令を複数
の演算処理装置が実行するためハードウェア構成が比較
的単純でありしたがって設計が容易となる利点を有する
ものの、処理の内容によって並列化効率が大きく左右さ
れる。並列に処理されるデータの組を効率的に準備でき
るかどうかにより並列化効率が決定されるためである。
しかしながら自然現象のシミュレーションおよび神経回
路網の数理モデル表現に従う処理などでは、膨大な数の
数値を繰返し演算する(同一演算を繰返し実行する)こ
とが必要とされるため、このような分野においては、S
IMD方式による処理分散の割付が容易でありかつ有効
であり、高い並列化効率を実現することができる。この
ような膨大な数値演算処理を高速に実行する装置は、今
後多くの高度情報処理分野の発展に必要不可欠であり、
このため、SIMD方式の並列演算処理装置の高性能化
が期待されている。
【0007】一方、ニューラルネットワーク(神経回路
網の数理モデル表現)は、生体神経細胞の動作原理を模
倣した情報処理手法として注目されている。ニューラル
ネットワークを利用すると、従来のプログラム方式情報
処理システムでは実現が困難であった柔軟かつ耐故障性
の高いシステムを構築することが可能である。特に、ニ
ューラルネットワークは、プログラム記述が困難な画
像、文字、および音声などの認識システムや多自由度制
御システム等において高い効力を発揮する。しかしなが
らニューラルネットワークの実現技術は、未だ発展過程
にあり、多くのニューラルネットワーク利用者は汎用マ
イクロコンピュータを利用した低速かつ小規模なシステ
ムの実現にとどまっている。そのため、高速かつ大規模
なニューラルネットワークに対応する並列プロセッサア
ーキテクチャが望まれていた。
【0008】この流れの中で、SIMD方式の並列処理
技術は、ニューラルネットワークに最も適したアーキテ
クチャと言える。その理由は、ニューラルネットワーク
の演算構造にある。
【0009】すなわち、ニューラルネットワークにおい
ては、全演算要素(ニューロン)が、後にその内容につ
いては説明するが、荷重平均処理および非線形処理を行
なう。各演算要素における被処理データ(シナプス荷重
値およびニューロン状態出力値など)が異なる。したが
って、すべての演算要素(ニューロン)に対し共通に命
令を与えることができる。この条件は、SIMD方式の
要件である単一命令性および多重データ性に合致してい
る。
【0010】〔先行技術の説明〕図52は、ニューラル
ネットワークにおいて用いられる演算要素、すなわちニ
ューロンの概念的構成を示す図である。図52におい
て、ニューロン950は、他のニューロンから与えられ
る出力状態値Sp、Sq、…、Srに対し所定の重み
(シナプス荷重値)を重み付けするシナプス荷重部95
2と、シナプス荷重部952から与えられる荷重信号の
総和を求める総和部954と、総和部954の出力を非
線形処理する非線形変換部956を含む。
【0011】シナプス荷重部952は、関連のニューロ
ンそれぞれに対して重み値Wia(a=p、q、…、
r)を格納しており、与えられた出力状態値Sp、S
q、…、Srを対応の荷重値Wiaにより重み付けして
総和部954へ与える。このシナプス荷重Wiaは、ニ
ューロンaとニューロン950(ニューロンi)との結
合強度を示す。
【0012】総和部954は、シナプス荷重部952か
ら与えられた荷重状態値Wia・Saの総和を求める。
総和部954が出力する総和値ΣWia・Saは、この
ニューロン950(ニューロンi)の膜電位uiを与え
る。ここで総和Σは、関連のニューロンユニットaすべ
てに対して実行される。
【0013】非線形変換部956は、総和部954から
与えられた膜電位uiに所定の非線形関数fを適用して
ニューロン950の出力状態値Si(=f(ui))を
生成する。非線形変換部956で用いられる非線形関数
f()としては、ステップ関数およびシグモイド関数な
どの単調非減少関数が用いられることが多い。
【0014】ニューラルネットワークにおいては、図5
2に示す機能を備えるニューロンが複数個用いられる。
階層型ニューラルネットワークでは、これらの複数のニ
ューロンがグループ化され、各グループが層をなし、ニ
ューラルネットワークが階層構造を有するようにニュー
ロンが接続される。
【0015】図53に3層ニューラルネットワークの構
成の一例を示す。階層構造ニューラルネットワークは、
入力層、中間層(隠れ層)および出力層を含む。中間層
に含まれる層の数は任意である。図53においては、I
層、J層およびK層を示す。これらの層I、JおよびK
層は、ニューラルネットワークにおける隣接する層とい
う条件を満足する任意の層である。I層は、ニューロン
X1、X2、X3およびX4を含み、J層は、ニューロ
ンY1、Y2、Y3およびY4を含み、K層は、ニュー
ロンZ1、Z2およびZ3を含む。I層のニューロンX
a(a=1〜4)とJ層のニューロンYb(b=1〜
4)は重みWbajで結合される。J層のニューロンY
bとK層のニューロンZc(c=1〜3)とは重みWc
bkで結合される。
【0016】ニューラルネットワークの特徴の1つは、
ニューロン間の結合強度を示す重みを「学習」により最
適値に設定することができることである。このような学
習の方法の1つに「バックプロパゲーション法」と呼ば
れる教師付学習方法がある。このバックプロパゲーショ
ン法について以下に簡単に説明する。
【0017】まず、ある入力パターンPが与えられる
と、この入力パターンPに従って各ニューロンは非同期
的に動作してその出力状態値を変化させていく。階層構
造ニューラルネットワークにおいては、入力層→中間層
→出力層という順序でニューロン出力状態値が伝達され
る(フィードフォアード構成)。すなわち、I層のニュ
ーロンX1〜X4の出力状態値Xa(便宜のため、ニュ
ーロンと対応の出力状態値とを同一符号で示す)が出力
されると、J層のニューロンYbの膜電位ubは ub=ΣWbaj・Xa となり、その出力状態値Ybは、 Yb=f(ub) となる。このJ層のニューロンY1〜Y4の出力状態値
がK層のニューロンZ1〜Z3へ伝達されると、K層の
ニューロンZcの膜電位ucは、 uc=ΣWcbk・Yb となり、その出力状態値Zcは、 Zc=f(uc) となる。ここで、総和Σは、下位層に含まれるニューロ
ンのすべてに対して行なわれる。
【0018】学習時においては、出力層ニューロンから
出力される出力パターンS(S1〜Sk:kは出力層に
含まれるニューロンの数)と教師パターンとの誤差が求
められる。教師パターンは、入力パターンPに対して期
待される出力パターンを示す。今、図53に示すK層を
出力層とすると、ニューロンZcの出力状態値の誤差e
kは、 ek=T−S(=Tc−Zc) で与えられる。この誤差ekから効(有効)誤差δkが
次式により求められる。
【0019】δk=ek・d(Zc)/duc ここで、d()/ducは、ニューロンZcの出力状態
値の膜電位ucによる微分を示す。この効果誤差δkが
J層のニューロンYbへ伝達され、J層のニューロンY
bの出力状態値の誤差ebが次式に従って求められる。
【0020】eb=ΣWcbk・δc ここで総和ΣはK層のニューロンすべてに対して行なわ
れる。誤差ebから、J層のニューロンYbに対する効
果誤差δbが次式に従って求められる。
【0021】δb=eb・d(Yb)/dub 誤差eが上位層から下位層へ順次伝搬され、この誤差に
従ってニューロン間の結合強度を示す重みWの修正が行
なわれる。J層のニューロンZcとK層のニューロンY
bとの間の重みWcbkは、 ΔWcbk=α・ΔWcbk(t−1)+η・δc・Y
b Wcbk=ΔWcbk+Wcbk(t−1) に従って修正される。ここで、ΔWcbk(t−1)お
よびWcbk(t−1)は、前の重み修正サイクルによ
り得られた重み修正量および重み値を示し、αおよびη
は、所定の係数である。同様に、I層のニューロンXa
とJ層のニューロンYbとの間の結合強度を示す重みW
bajは次式に従って修正される。
【0022】ΔWbaj=α・ΔWbak(t−1)+
η・δb・Xa Wbaj=ΔWbaj+Wbaj(t−1) バックプロパゲーション法においては、誤差が上位層か
ら下位層へ順次伝搬されてこの誤差に従って各層のニュ
ーロンの重みの修正が実行される。教師パターンTに対
する誤差が最小となるように重みWの修正が繰返し実行
される。
【0023】このようなニューラルネットワークにおい
ては、入力パターン識別動作時においては、出力状態値
が下位層から上位層へ順次伝達される。このとき、各ニ
ューロンにおいて膜電位の算出および出力状態値の算出
が行なわれる。これはそれぞれ荷重平均処理および非線
形変換処理に対応する。また重み修正動作時において
も、各ニューロンにおいて重みの修正のために同じ演算
処理が実行される。重み修正動作時においては、教師パ
ターンと出力パターンとの誤差が最小値または所定のし
きい値以下となるまで繰返し上述のフィードフォアード
処理および誤差逆伝搬処理および重み修正処理が実行さ
れる。したがってこれらの処理に対しては、ニューロン
を演算要素(単位)としてSIMD方式に従って並列に
処理を実行することができる。
【0024】図54に、従来のSIMD方式演算処理装
置の構成の一例を示す。図54に示す構成は、たとえ
ば、プロシーディングズ・オブ・ICNN(神経回路網
国際会議)’88、IEEE、第II巻の第165頁な
いし第172頁における「人工神経回路網のための並列
アーキテクチャ(Parallel Architectures for Artific
ial Neural Nets )」と題されたS・Y・カング(Kun
g) 等による論文に示されている。
【0025】図54において、並列処理装置は、3つの
処理ユニットP♯1〜P♯3を含む。処理ユニットP♯
1〜P♯3は同じ構成を備え、重みデータを格納するロ
ーカルメモリLM1〜LM3と、処理されるべき数値デ
ータ(出力状態値)を格納するためのレジスタR1〜R
3と、ローカルメモリLM1〜LM3から読出された重
みデータとレジスタR1〜R3に格納された数値データ
とに対し、コントロールバスCBを介して与えられる命
令により決定される演算を実行する演算部AU1〜AU
3を含む。
【0026】レジスタR1〜R3はカスケード接続さ
れ、レジスタR3の出力部はレジスタR4を介してレジ
スタR1の入力部に接続される。レジスタR1〜R4は
データ転送機能を備えており、リングレジスタを構成す
る。
【0027】この処理ユニットP♯1〜P♯3へは、図
示しないコントローラからローカルメモリLM1〜LM
3のアドレス指定のためのアドレス信号がアドレスバス
ABを介して共通に与えられる。また図示しないコント
ローラから実行すべき演算処理を指定する命令がコント
ロールバスCBを介して処理ユニットP♯1〜P♯3へ
与えられる。図54においては、コントロールバスCB
を介して与えられる命令は演算部AU1〜AU3へ与え
られるように示される。したがって、図54に示す構成
においては、ローカルメモリLM1〜LM3は同じアド
レス位置が指定され、処理ユニットP♯1〜P♯3と同
じ命令を実行する。
【0028】この図54に示す演算処理装置は図53に
示すK層のニューロンZ1、Z2およびZ3を等価的に
表現する。処理ユニットP♯1〜P♯3がニューロンZ
1〜Z3に対応する。ローカルメモリLM1〜LM3に
は、それぞれ重みデータが所定の順序で格納される。レ
ジスタR1〜R3に格納される出力状態値が順次シフト
されるため、それに合わせてローカルメモリLM1〜L
M3に格納される重みデータの格納位置も調整される
(同一アドレスが指定されるため)。次に動作について
説明する。
【0029】図55に第1サイクルの状態を示す。図5
5において、レジスタR1〜R3に出力状態値S1〜S
3がそれぞれ格納される。ローカルメモリLM1〜LM
3からは重みデータW11、W22およびW33がそれ
ぞれ読出される。演算部AU1〜AU3は対応のローカ
ルメモリから読出された重みデータと対応のレジスタに
格納された出力状態値との積演算を実行する。したがっ
て、演算部AU1〜AU3は、それぞれ荷重値W11・
S1、W22・S2、およびW33・S3が生成する。
演算部AU1〜AU3により算出された荷重値は図示し
ない内部のレジスタに格納される。
【0030】図53に第2サイクルの状態を示す。第2
サイクルにおいては、レジスタR1〜R4に格納された
出力状態値S1〜S4が反時計方向にシフトされる。し
たがってレジスタR1〜R3には出力状態値S2〜S4
がそれぞれ格納される。アドレスバスABに与えられる
アドレスが1増分され、ローカルメモリLM1〜LM3
からは次の重みデータW12、W23およびW34が読
出される。演算部AU1〜AU3においては、荷重値W
12・S2、W23・S3、およびW34・S4が算出
されて先に算出された荷重値に加算される。この動作を
第3サイクルにおいても繰返し行ない、第4サイクルに
おいては、図57に示す様にレジスタR1〜R4には出
力状態値S4、S1およびS2が格納される。ローカル
メモリLM1〜LM3からは重みデータW14、W21
およびW32が読出される。演算部AU1、AU2およ
びAU3は荷重値W14・S4、W21・S1、および
W32・S2を算出し、それまでのサイクルで算出され
た荷重値の和に累算する。これにより、第4サイクル完
了後、先に図54に示したように、演算部AU1、AU
2およびAU3においては、膜電位ΣW1j・Sj、Σ
W2j・Sj、ΣW3j・Sjが算出される。
【0031】上述の処理は、ニューラルネットワークの
各ニューロンに対し実行する。各ニューロンに対し求め
られた膜電位uに非線形変換処理を施すことによりこの
1つの層におけるニューロンの出力状態値が決定され
る。上述の動作をニューラルネットワークの各層に対し
繰返し実行することによりニューロンのすべての出力状
態値が決定される。出力層の出力状態値が決定された
後、学習時には誤差を逆伝搬して各ニューロンの重みデ
ータを修正する必要がある。重みデータの修正のために
用いられる誤差の伝搬は以下のようにして行なわれる。
【0032】まず上位層のニューロンユニットに対する
誤差δが計算されてそれぞれが演算部AU1〜AU3へ
与えられる。第1サイクルにおいては、図58に示すよ
うにローカルメモリLM1〜LM3から重みデータW1
1、W22およびW33が読出される。演算部AU1〜
AU3においては、積演算W11・δ1、W22・δ
2、およびW33・δ3が行なわれる。この積結果は対
応のレジスタR1〜R3へ伝達される。これにより誤差
e1〜e3の1つの項が求められる。
【0033】次のサイクルにおいては、図59に示す様
に、レジスタR1〜R4に格納された誤差成分を反時計
方向にシフトさせる。これと同期して、ローカルメモリ
から次の重みデータW12、W23およびW34を読出
す。演算部AU1〜AU3において積演算が行なわれ、
W12・δ1、W23・δ2およびW34・δ3が求め
られ、この求められた積は対応のレジスタR1〜R3に
格納された誤差成分と加算されて再び対応のレジスタR
1〜R3へ格納される。これにより誤差の次の成分が求
められる。第4サイクルにおいて、図60に示すよう
に、ローカルメモリLM1〜LM3から読出された重み
データW14、W21およびW32を用いて演算部AU
1〜AU3において積演算を行ない、W14・δ1、W
21・δ2、およびW32・δ3を求める。この求めた
積結果を対応のレジスタR1〜R3に格納されている誤
差成分に加算し、再び対応のレジスタR1〜R3に格納
する。4つのサイクルが完了すると、図61に示すよう
に、レジスタR1〜R4には、ΣWj1・δj、ΣWj
2・δj、ΣWj3・δj、およびΣWj4・δjが格
納される。各総和は添字jについて行なわれる。これに
より下位層のニューロンに対する誤差e1、e2、e3
およびe4が求められる。この誤差を用いて効果誤差
(有効誤差)を算出し、ニューロンのシナプス荷重値、
すなわち重みデータの修正を前述の重み修正を示す式に
従って修正する。
【0034】このような従来のSIMD方式の演算処理
装置においては、コントロールバスCBに1つの命令を
与え、処理ユニットP♯1、P♯2およびP♯3で同一
の演算処理を行なうことにより、ニューロンの膜電位の
算出および荷重修正量の算出を並列に行なう。処理ユニ
ットP♯1〜P♯3は各演算サイクルにおいてすべて動
作しており、効率的に演算を実行することができる。
【0035】
【発明が解決しようとする課題】従来から提案されてい
る処理方式および/または処理機構では、与えられた資
源(演算処理装置)の使用効率をいかに高くするかに重
点をおいて様々な工夫がなされているが、実行される演
算処理の内容を考慮せず、すべての演算処理を実行する
ことが前提とされている。たとえば、上で説明した並列
演算処理装置では、処理ユニットP♯に共通にローカル
メモリアドレスが与えられて重みデータが読出され、す
べての出力状態値Sおよびすべての有効誤差δに対して
演算が実行されている。したがって、従来の並列化方法
では、すべての資源が並列に動作するときの処理能力を
示すいわゆる「ピーク性能」を超える高速処理が原理的
に不可能である。
【0036】このような個々の演算処理の内容に対する
非依存性は、処理内容の汎用性を保証するとともに、ま
た、処理機構の規格化による設計容易性を確保するため
にも必要とされていた。
【0037】しかしながら、演算処理の内容がある程度
予測できる場合には、個々の処理内容において有効に処
理効率を改善するための工夫を施せる場合がある。ここ
で、「処理内容」はたとえば「全ニューロンの膜電位の
算出」のような「1つのまとまった処理の内容」を意味
し、「演算処理内容」は、たとえば膜電位算出における
1つの重みデータ(シナプス荷重値)と出力状態値の積
における個々の入力データおよび演算結果データのよう
な「ある処理において実行される個々の演算の内容」を
意味する。
【0038】すなわち、予測された演算処理内容がその
処理において無視できる影響しか持たないことが判別で
きたときには、この演算処理およびその演算処理結果を
利用する演算処理を省略することができ、処理時間を短
縮することができる。しかしながら、個々の演算処理内
容を考慮して処理における以後の手続を変更する構成は
未だ実現されていない。
【0039】たとえば、図54に示す先行技術におい
て、出力状態値Sおよび有効誤差δはリングレジスタに
格納されて順次シフトされて演算処理が実行されてい
る。ある出力状態値Siまたはある有効誤差δiが膜電
位算出および誤差算出に影響を及ぼさない微小値であれ
ば、これらの数値データに関連する演算処理を省略する
ことにより演算処理回数を低減して処理時間を短縮する
ことができる。しかしながら、この先行技術の構成にお
いては、ローカルメモリに対し共通にアドレスが与えら
れて順次重みデータが読出されている。したがって、リ
ングレジスタに微小な数値データを省略して格納した場
合、リングレジスタに格納された数値データに対応して
ローカルメモリから重みデータを読出すことができず、
正確な演算処理を行なうことができない。またこの先行
技術においては、このような出力状態値または有効誤差
が処理過程において微小値となった場合にそのような微
小値データを省略して演算する構成については何ら考察
していない。
【0040】それゆえ、この発明の目的は、高い処理効
率を有する数値演算処理装置を提供することである。
【0041】この発明の他の目的は、処理時間を短縮す
ることのできる数値演算処理装置を提供することであ
る。
【0042】この発明のさらに他の目的は、演算処理内
容を考慮して以後の処理手続を変更することのできる数
値演算処理装置を提供することである。
【0043】この発明のさらに他の目的は、高い処理効
率および短い処理時間を有するSIMD方式数値演算処
理装置を提供することである。
【0044】
【課題を解決するための手段】請求項1に係る数値演算
処理装置は、数値データを格納する格納手段と、この格
納手段から読出された数値データの数値に従ってこの数
値データ読出に続いて実行されるべき処理を設定する設
定手段とを含む。
【0045】記憶手段は、好ましくは、各々が数値デー
タとして数値部分と、この数値部分に対して実行される
べき処理を指定する数値コード部分とをリンクして格納
する複数のエントリを含む。
【0046】数値コード部分は、好ましくは、関連の数
値部分が演算処理されるべきデータであるのか、次に実
行されるべき処理を指定するものであるのかを指定す
る。
【0047】設定手段は、好ましくは、この数値コード
部分に従って次に実行される処理を設定する手段を含
む。
【0048】数値コード部分は、また好ましくは、関連
の数値部分が処理されるべき数値データであるのか、次
に格納手段から数値データを読出すエントリの位置を示
すアドレスであるのかを指定する。
【0049】請求項2に係る数値演算処理装置は、請求
項1の設定手段が、数値コード部分が、対応の数値部分
が演算処理されるべきデータであることを示すとき、格
納手段のエントリの位置を示すアドレスを1増分しかつ
数値コード部分が対応の数値部分が格納手段のアドレス
を示すとき、対応の数値部分に対する実行手段による演
算処理を無効化しかつ対応の数値部分を格納手段の次に
読出されるべきエントリ位置を示すアドレスとして設定
する手段を含む。実行手段は、この設定されたアドレス
に従って、格納手段をアクセスして対応の数値データを
読出す手段を含む。
【0050】請求項3に係る数値演算処理装置は、格納
手段が第1のアドレスのエントリに第1の数値データを
格納し、かつ第1のアドレスに連続して隣接する第2の
アドレスに第2の数値データを格納する。設定手段はこ
の第2の数値データの数値コード部分の値に従って次に
実行されるべき処理を設定する。
【0051】請求項4に係る数値演算処理装置において
は、実行手段が2入力演算手段を含む。設定手段は、格
納手段の第1のアドレスのエントリから読出された第1
の数値データを保持しかつ演算手段の一方入力に与える
第1の保持手段と、この第1のアドレスに隣接する第2
のアドレスのエントリから読出された第2の数値データ
を保持する第2の保持手段と、第2の数値データの数値
コード部分の数値に従って、第2の保持手段の保持する
数値データおよび予め定められた定数の一方を演算手段
の他方入力へ与える選択手段とを備える。
【0052】
【0053】請求項5に係る数値演算処理装置は、請求
項4の2入力演算手段の出力を第1のアドレスのエント
リへ書込む手段をさらに備える。請求項6に係る数値演
算処理装置は、格納手段が第1のアドレスに第1の数値
データを格納し、かつ第1のアドレスに連続して隣接す
る第2のアドレスに第1のアドレスに格納された第1の
数値データに加算すべき数値データまたは加算を行なわ
ずに次にアクセスすべき格納手段のアドレスを示すジャ
ンプ先アドレスのいずれかを格納する。数値コード部分
は、この第2のアドレスの第2の数値データがジャンプ
先アドレスであるのか第2の数値データであるのかを特
定する。
【0054】請求項7に係る数値演算処理装置は、請求
項6の設定手段が、第2のアドレスから読出された数値
データが所定値以下のとき、この第2のアドレスに、次
にアクセスすべきエントリを示すジャンプ先アドレスを
生成して対応の第2のアドレスに格納し、かつ対応の数
値コード部分を第2の数値データに代えてジャンプ先ア
ドレスが格納されたことを示す値に設定する。
【0055】請求項8に係る数値演算処理装置は、請求
項1の装置が、さらに、現サイクルで読出されている数
値データを格納するエントリを示す現アドレスを格納す
る第1のレジスタと、最も最近演算処理を受けた数値デ
ータを格納するエントリを示すアドレスの次のアドレス
を前アドレスとして格納する第2のレジスタと、最も最
近処理された数値データが所定の処理と異なる処理を受
けたか否かを示す第1のフラグを生成する第1のフラグ
生成手段と、現サイクルで読出された数値データが所定
の処理と異なる処理を受けたか否かを示す第2のフラグ
を生成する第2のフラグ生成手段と、第2のレジスタに
格納された前アドレスと第1のレジスタに格納された現
アドレスの差が1より大きいか否かを示す第3のフラグ
を生成する第3のフラグ生成手段と、第1のフラグ、第
2のフラグ、現アドレス、前アドレスおよび外部から与
えられるアドレス飛び越し指示信号に従って、数値デー
タを書込むアドレスを決定するアドレス決定手段をさら
に備える。
【0056】請求項9の数値演算処理装置は、請求項8
のアドレス決定手段が、第1および第2のフラグに従っ
て、(a)最も最近および現サイクルにおいてアクセス
された数値データが共に所定の演算処理を受けたこと、
(b)現サイクルにアクセスされた数値データの処理が
所定の演算と異なりかつ最も最近アクセスされた数値デ
ータが所定の演算処理を受けたこと、および(c)現サ
イクルの数値データが所定の演算処理を受けかつ最も最
近アクセスされた数値データが所定の演算と異なる処理
を受けたことの3状態のいずれの状態であるかを判定す
る状態判定手段と、この状態判定手段の前記状態(a)
の判定に従って、現アドレスを格納手段の前アドレスが
示すエントリへ格納する第1の書込手段と、この状態判
定手段の状態(b)の判定に従ってアドレス飛び越し信
号と第3のフラグとに従って現アドレスと前アドレスの
一方を第4のレジスタに格納する手段と、状態判定手段
の状態(c)の判定に従って現アドレスを第4のレジス
タに格納されたアドレスが示す格納手段のエントリへ格
納する第2の書込手段とを含む。
【0057】請求項10の数値演算処理装置は、請求項
1の装置が、次に所定の演算処理を受ける数値データが
格納されるエントリの位置を示す飛び越し先アドレスを
格納する第1のレジスタと、最も最近所定の演算処理を
受けた数値データが格納されているエントリの位置を示
す前アドレスと現在アクセスされている数値データのエ
ントリの位置を示す現アドレスとの差が1より大きいこ
とを示す第1のフラグを生成する第1のフラグ生成手段
と、外部から与えられるアドレス生成指示信号に応答し
て格納手段のアドレスに対する飛び越しが行なわれてい
ることを示す第2のフラグを生成する第2のフラグ生成
手段と、格納手段から読出された数値データのコード部
分に従ってこの読出された数値データが所定の演算を受
けるべき数値データであるか否かを示す第3のフラグを
生成する第3のフラグ生成手段と、数値データ書込時、
所定の演算処理を受ける数値データを書込むべきか所定
の演算処理と異なる処理を受ける数値データを書込むべ
きかを示す第4のフラグを生成する第4のフラグ生成手
段と、前の演算実行サイクルにおける第4のフラグを現
演算実行サイクルの書込制御を示す第5のフラグとして
出力する第5のフラグ生成手段と、前の演算実行サイク
ルの第1のフラグを現演算実行サイクルの書込禁止を示
す第6のフラグとして出力する第6のフラグ生成手段
と、現アドレスが所定のアドレスに到達したか否かに従
って格納手段に対する数値データの書込動作が完了した
ことを示す第7のフラグを生成する第7フラグ生成手段
をさらに備える。
【0058】請求項11に係る数値演算処理装置は、請
求項10の装置が、さらに、外部から与えられる制御信
号をデコードし、そのデコード結果に従って第1ないし
第7のフラグ生成手段が生成するフラグの更新タイミン
グを設定するデコード手段を備える。
【0059】
【0060】請求項12に係る数値演算処理装置は、請
求項1の装置が、さらに、外部から与えられる制御信号
に応答して格納手段へのアクセス禁止を強制的に解除さ
せる手段を備える。
【0061】請求項13に係る数値演算処理装置は、請
求項1の装置が、内部演算処理不実行を示す制御信号に
応答して、この格納手段へのアクセスを強制的に禁止す
る手段をさらに備える。
【0062】請求項14に係る数値演算処理装置は、請
求項1の装置が、さらに、格納手段へのアクセスの中止
を示す中止フラグを生成する中止フラグ生成手段と、格
納手段へのアクセスの完了を示す完了フラグを生成する
完了フラグ生成手段と、中止フラグおよび完了フラグに
応答して、格納手段へのアクセス可能を示す信号を生成
して外部へ出力する手段をさらに備える。
【0063】請求項15に係る数値演算処理装置は、各
々が、演算器と、この演算器に利用される数値データを
格納するローカルメモリと、数値データが所定の条件を
満足するとき数値データに対する演算処理を省略するよ
うに演算器の演算処理を制御する制御手段とを含み、か
つ互いに並列に設けられる複数の演算ユニットと、これ
ら複数の演算ユニットに共通に設けられ、複数の演算ユ
ニットに対し共通の命令を発行して複数の演算ユニット
に共通の命令を並列に実行させるための制御ユニット
と、これら複数の演算ユニットの出力を受けて順次非線
形処理を施す非線形処理ユニットとを含む。複数の演算
ユニットの各々は、演算器の演算結果出力を格納するた
めの演算結果格納レジスタと、この演算結果出力が複数
の可能な状態のうちのどの状態にあるかを示すステータ
スフラグを格納する状態レジスタと、このステータスフ
ラグに従って演算結果格納レジスタへの演算器の演算結
果出力の格納を制御する手段を備える。請求項15に係
る数値演算処理装置は、さらに、複数の演算ユニットの
各々が、入出力ポートとしては、少なくとも2つの数値
情報入力ポートと、少なくとも2つの数値情報出力ポー
トを含む。複数の演算ユニットはカスケード接続され
る。
【0064】請求項16に係る数値演算処理装置は、請
求項15の複数の演算ユニットの各々は、少なくとも2
つの数値情報入力ポートと、少なくとも2つの数値情報
出力ポートとを含む。複数の演算ユニットはカスケード
接続される。
【0065】請求項16に係る数値演算処理装置は、請
求項15の少なくとも2つの数値情報入力ポートは、ロ
ーカルメモリのアドレスを指定するアドレスデータを入
力するアドレス入力ポートと、演算ユニットにより演算
処理されるべき数値データを入力するデータ入力ポート
とを含む。少なくとも2つの出力ポートは、アドレスデ
ータ出力ポートと、数値データ出力ポートとを含む。
【0066】請求項17に係る数値演算処理装置は、請
求項15の数値演算処理装置が、複数の演算ユニットに
共通に設けられ、制御ユニットからのローカルメモリに
対するアドレスデータおよび数値データを複数のユニッ
トへ同時に伝達するための共通バスをさらに備える。
【0067】請求項18に係る数値演算処理装置は、請
求項15の数値演算処理装置において、カスケード接続
の特定の演算ユニットの出力ポートとそのカスケード接
続における特定の演算ユニットに隣接する演算ユニット
の入力ポートとの間に設けられ、特定の演算ユニットの
出力と非線形処理ユニットの出力の一方を選択して隣接
する演算ユニットの入力ポートに伝達するための選択手
段をさらに含む。
【0068】請求項19に係る数値演算処理装置は、請
求項15の複数の演算ユニットの入力ポートおよび出力
ポートは、複数の演算ユニットがリング状に相互接続さ
れるように順次接続される。
【0069】請求項20に係る数値演算処理装置は、請
求項15の装置において、カスケード接続の初段の演算
ユニットの入力ポートに設けられ、与えられた数値デー
タを初段の演算ユニットの入力ポートと制御ユニットの
入力ポートの一方へ伝達する入力手段と、カスケード接
続の最終段の出力ポートに設けられ、この最終段の演算
ユニットの出力と制御ユニットからの数値データの一方
を伝達する出力手段とをさらに備える。
【0070】
【0071】請求項21に係る数値演算処理装置は、請
求項15の装置のステータスフラグがマルチビットフラ
グであり、複数の演算ユニットの各々は、対応の状態レ
ジスタに格納されたマルチビットフラグの特定のビット
を選択して制御ユニットへ通報する手段をさらに備え
る。
【0072】請求項22に係る数値演算処理装置は、請
求項15の数値演算処理装置において1つの半導体チッ
プ上に集積化され、複数の演算ユニットは制御ユニット
および非線形変換ユニットを挟むようにチップ上に配置
されかつ複数の演算ユニットにおいてローカルメモリが
制御ユニットから離れたチップ外側に配置される。
【0073】請求項23に係る並列演算処理装置は、各
々が(i)数値データを格納するためのメモリと、(i
i)このメモリから読出された数値データの数値に従っ
て予め設定された複数の処理から実行すべき処理を選択
する手段を備え、かつ互いに並列に与えられた命令に従
って動作する複数の演算ユニットと、これら複数の演算
ユニットに対して同時に共通の命令を与え、この共通の
命令に従って複数の演算ユニットを並列に動作させる制
御ユニットとを含む。
【0074】
【0075】
【0076】
【0077】
【作用】請求項1の装置においては、数値コード部分が
関連の数値部分が演算処理されるべきデータであるの
か、次にアクセスされる数値データの格納位置を示すア
ドレスであるのかを示しており、この数値コードにより
演算処理の不必要な数値データを飛び越して処理を進め
ることができ、処理時間が短縮される。
【0078】請求項2の装置においては、設定手段が数
値コード部分に従って格納手段に対するアドレスの値を
決定しており、所定の演算処理を受けるべき数値データ
のみに対し演算処理を行なうことができ、処理時間を短
縮することができる。
【0079】
【0080】請求項3の装置においては、第2のアドレ
ス位置の数値データの数値のみに従って次に実行すべき
処理過程を設定しているため、第1および第2のアドレ
スの数値データに対する演算処理の内容を第2のアドレ
スの数値データの数値に従って変更することができ、容
易に2入力演算処理の内容を変更することができる。
【0081】請求項4の装置においては、選択手段が、
第2の保持手段の保持する数値データおよび定数の一方
と第1の保持手段の保持する数値データとの加算を第2
の数値データの数値コードに従って決定しており、演算
処理されるべき数値のみに対し演算処理を行なうことが
でき、処理効率が改善される。
【0082】請求項5の装置においては、演算結果が元
のアドレスに格納されるため、同一処理を繰返し正確に
実行することができる。
【0083】請求項6および7の発明においては、格納
手段の連続するエントリの一方に、数値データまたはジ
ャンプ先アドレスが格納され、数値コードが、ジャンプ
先アドレスであるのか演算処理すべき数値データである
のかを示しており、同一エントリに、アドレスおよび数
値データを格納することができ、格納手段の容量増加を
防止することができ、またジャンプ先アドレスにより、
不要な数値データの演算処理を省略することができ、処
理効率が改善される。
【0084】請求項8の装置においては、第1および第
2のフラグ、現アドレス、前アドレスならびにアドレス
飛び越し指示信号に従って飛び越し開始アドレスおよび
ジャンプ先アドレスを決定して格納手段へジャンプ先ア
ドレスを書込んでおり、不必要な数値データに対する演
算処理を確実に省略することができる。
【0085】請求項9の装置においては、状態判定手段
が処理の進行状態を判定し、この状態判定手段の判定結
果に従って次に演算処理するべき数値データのアドレス
およびそのアドレスの格納位置を決定して格納手段に書
込んでいるため、正確に演算処理すべき数値データを識
別して必要な数値データに対してのみ演算処理を行なう
ことができ、処理時間を大幅に短縮することができる。
【0086】請求項10の装置においては、第1ないし
第7のフラグを生成し、これらのフラグに従って演算ユ
ニットにおける処理の進行状況を把握して格納手段への
数値データの書込動作の制御および省略すべき数値デー
タを識別することができる。
【0087】請求項11の装置においては、第1ないし
第7のフラグ生成手段のフラグの更新タイミングは、外
部制御信号により与えられており、所望のフラグのみを
更新することができる。
【0088】請求項12の装置においては、外部から格
納手段へのアクセス禁止を強制的に解除させることがで
き、演算ユニットにおける数値データの数値を変更する
ことなく外部から必要なデータを所望のタイミングで格
納手段へ書込むことができる。
【0089】請求項13の装置においては、演算処理不
実行時に格納手段へのアクセスを禁止しているため、不
必要な数値データの更新を確実に防止することができ
る。
【0090】請求項14の装置においては、アクセス中
止フラグおよびアクセス完了フラグに従ってアクセス可
能フラグを生成して外部へ出力しているため、外部制御
装置は、演算ユニットの処理動作と衝突することなく格
納手段へアクセスすることができる。
【0091】請求項15の装置においては、複数の演算
ユニットが数値データの数値に従って処理を省略してお
り、制御ユニットは共通の命令を複数の演算ユニットへ
与えており、また非線形処理ユニットが複数の演算ユニ
ットの出力を非線形変換処理しており、不必要な演算処
理を省略して演算処理を行なうことのできる高効率かつ
高速で処理を実行することのできるSIMD方式ニュー
ラルネットワークを実現することができる。
【0092】また、この請求項15の装置においては、
複数の演算ユニットの各々が、ステータスフラグに従っ
て結果レジスタに演算ユニットの演算結果出力を格納す
るように構成しているため、たとえば最大または最小の
ような特定の条件を満足する演算結果出力を容易に求め
ることができる。また、演算ユニットの各々は、少なく
とも2つの数値情報入力ポートおよび少なくとも2つの
数値情報出力ポートを含んでおり、かつカスケード接続
されており、これら複数の演算ユニットの各々において
利用される数値データは相互関連性を有することなく必
要な数値データのみを用いて演算ユニットへ与えること
ができ、効率的に処理を実行することができる。
【0093】請求項16の装置においては、入力ポート
および出力ポートはともに処理データを受ける入力ポー
トとアドレスデータを受けるアドレスデータ入力ポート
とを有しており、演算ユニットの格納手段に対するアド
レスはそれぞれ独立にこのアドレスポートから与えられ
るアドレスにより設定することができ、必要な処理デー
タのみを演算ユニットへ与えて格納手段から対応の数値
データを読出して演算処理を行なうことができ、不必要
な数値データに対する演算処理を省略することができ
る。
【0094】請求項17の装置においては、複数の演算
ユニットへ同時にアドレスデータおよび処理データを通
報するため、共通の処理データを容易にすべての演算ユ
ニットのメモリへ書込むことができる。
【0095】請求項18の装置においては、特定の演算
ユニットの出力と非線形処理ユニットの出力の一方が選
択手段により選択されて隣接演算ユニットへ伝達される
ため、ニューラルネットワーク動作時において出力状態
値算出時に必要とされるときのみ非線形処理ユニットを
演算ユニットのリング接続に挿入することができ、効率
的に処理を行なうことができる。
【0096】請求項19の装置においては、演算処理ユ
ニットはリング状に接続されるため、順次数値データを
演算ユニット間をシフトさせて効率的に処理を実行する
ことができる。
【0097】請求項20の装置においては、入出力手段
により演算ユニットをバイパスして制御ユニットが入力
数値データを授受することができ、制御ユニットは入力
数値データに必要な加工を行なうことができる。また、
装置を複数個カスケード接続した場合には、複数の制御
ユニット間で数値データを伝達することができ、必要な
数値データを制御ユニット間で伝達して必要な加工を行
なうことができる。
【0098】請求項21の装置においては、マルチビッ
トのステータスフラグに従って結果レジスタに演算結果
出力が格納されるため、たとえば最大または最小のよう
な特定の条件を満足する演算結果出力を求めることがで
きる。
【0099】請求項22の装置においては、ステータス
フラグの特定のビットが選択されて各演算ユニットから
制御ユニットへ通報されているため、制御ユニットは複
数の演算ユニットの演算結果出力から特定の条件を満足
する演算結果出力を選択することができる。このときま
た、特定のビットのみが選択されて通報されているた
め、この特定の条件を満足する演算結果出力選択のため
に必要とされるフラグビットの伝達信号線の数を少なく
することができ、配線占有面積を低減することができ
る。
【0100】請求項22の装置においでは、制御ユニッ
トおよび非線形処理ユニットを間に挟むように演算ユニ
ットが半導体チップ上に配置されているため、制御ユニ
ットと演算ユニットの間の配線の長さを最小とすること
ができ、高速で信号を伝達することができ、高速動作が
可能となる。また、演算ユニットにおいては、メモリが
チップ外周側に配置されるため、演算ユニット内の演算
器群およびレジスタと制御ユニットとの間の配線長を最
小とすることができ、高速で信号を伝搬させることがで
きる。また、メモリをチップ外周側に配置することによ
り、該演算ユニット内の配線レイアウトを複雑化するこ
となくメモリと演算器群/レジスタ群との間の信号伝搬
を高速で行なうことができる。
【0101】請求項23の装置においては、複数の演算
ユニットの各々は、数値データの数値に従って実行され
るべき処理過程の内容を選択する機能を備え、かつ互い
に並列に制御ユニットから与えられる共通の命令に従っ
て動作しており、複数の演算ユニットの各々は、必要な
数値データに対してのみ演算処理を行なうことができ、
効率的に処理を行なうことのできるSIMD方式の演算
処理装置を実現することができる。
【0102】
【実施例】
〔動作原理〕まず、本発明が依拠する動作原理につい
て、ニューラルネットワークを1つの適用例として説明
する。
【0103】神経回路網の数理モデル表現であるニュー
ラルネットワークにおいては、演算処理内容に次のよう
な特徴がある。
【0104】(a) 階層型ニューラルネットワークに
おいて、中間層のニューロンの発火率は学習が進むにつ
れてスパースになる。すなわち、階層型ニューラルネッ
トワークにおいては、学習が進むにつれて、各ニューロ
ンの出力状態値がそれぞれ期待されるべき状態に近づ
く。出力層のニューロンの出力状態は期待パターン(教
師信号)により決定される状態に近づき、一方、中間層
においては発火状態のニューロンの数が少なくなる(一
般に、学習の繰返し回数の対数に比例して中間層のニュ
ーロンの発火率は低下する)。
【0105】(b) 相互結合型ニューラルネットワー
クにおいては、入力パターン印加時の初期状態から時間
が経過するとニューラルネットワーク全体のエネルギー
が極小値をとるような状態に各ニューロンの出力状態が
近づく。すなわち、時間の経過とともにニューロンの出
力状態値の変動が小さくなる。
【0106】(c) 誤差逆伝搬学習(エラーバックプ
ロパゲーション法学習)においては、学習が進むに従っ
て各荷重値の修正量は微小量に収束する。
【0107】これらの特徴(a)〜(c)から以下に述
べる演算処理を省略することができる可能性が生じる。
すなわち、演算処理内容または演算処理結果を考慮し
て、処理手続を変更することにより全体の処理に対し影
響のない演算処理を省略し、これにより全体の処理時間
を短くすることができる。
【0108】(1) 上記特徴(a)および(b)か
ら、出力状態値が変化しないニューロンの伝達演算を省
略することができる。すなわち、膜電位uj(t)の演
算: uj(t)=uj(t−1)−ΣWji(t)・ΔSi
(t) において、ΔSi(t)=0に関する積を省略すること
ができる。ここで、uj(t)は時刻tにおける膜電位
を示し、uj(t−1)は前のサイクルにおける膜電位
を示し、Wji(t)は時刻tにおけるシナプス荷重値
(重み)を示し、ΔSi(t)=(Si(t)−Si
(t−1))は、出力状態値Siの変化量を示す。また
総和Σは添字iに関して行なわれる。
【0109】(2) 上記特徴(a)から、階層型ニュ
ーラルネットワークにおいては、出力状態値Siが0で
ある演算を省略することができる。すなわち、膜電位u
j(t)の演算、 uj(t)=ΣWji(t)・Si(t) の演算処理において、Si(t)=0に関する積算を省
略することができる。
【0110】(3) 上記特徴(c)から誤差逆伝搬学
習時の荷重修正処理において、荷重値修正量ΔWjiが
0の荷重値更新処理を省略することができる。すなわ
ち、 ΔWji(t)=α・ΔWji(t−1)+η・ej
(t)・(dSj(t)/duj)・Si=0の場合に
は、Wji(t)=Wji(t−1)+ΔWji(t)
という重み更新処理を省略することができる。ここで、
ej(t)は、ニューロンjへの逆伝搬誤差を示し、α
は慣性係数を示し、ηは学習係数を示す。
【0111】上述の説明においては、それぞれの演算処
理を省略する条件を理想状態、すなわち変動量0(ΔS
i(t)=0、Si(t)=0、およびΔWji(t)
=0)としている。しかしながら現実的には、それぞれ
の省略条件を微小値ε以下とすることも可能であり(Δ
Si(t)≦εa、Si(t)≦εb、ΔWji(t)
≦εc)、それぞれの省略条件、すなわちしきい値ε
a、εb、およびεcの値を適当に調整することによ
り、省略される演算処理の比率、すなわち処理全体の高
速化と許容される演算精度とを設定することが可能であ
る。これにより、効率的に処理を実行する数値演算処理
装置、特にSIMD方式の数値演算処理装置を実現する
ことができる。以下、本発明の数値演算処理装置の構成
について、全体の構成、概略動作、各部分の詳細構成の
順に説明する。
【0112】[全体の構成]図1は、この発明の一実施
例である数値演算処理装置の全体の構成を概略的に示す
図である。図1において、数値演算処理装置は、互いに
並列に動作する複数個(図1においてはn個)の演算ユ
ニット10−1〜10−nと、これら複数の演算ユニッ
ト10−1〜10−nに共通に命令を与える制御ユニッ
ト20と、複数の演算ユニット10−1〜10−nが出
力する処理結果データに非線形変換処理を施す非線形変
換ユニット30を含む。
【0113】演算ユニット10−1〜10−nの各々
は、与えられた数値データの演算処理を行なうための複
数の演算器を有する演算器群12と、処理動作時に必要
とされる数値データおよびステータスフラグなどの一時
的に利用されるデータを格納する複数のレジスタを含む
レジスタ群13と、演算器群12の演算処理に必要とさ
れる数値データなどの処理データを格納するローカルメ
モリ11とを含む。
【0114】演算ユニット10−1〜10−nの各々
は、さらに、数値データを入力するための2つの入力ポ
ート14および15、ならびに数値データを出力するた
めの2つの出力ポート16および17を含む。入力ポー
ト14は、処理されるべき数値を含むデータを入力し、
入力ポート15は、ローカルメモリ11のアドレスを指
定するアドレスデータを入力する構成とすることができ
る。以下の説明においては、処理されるべき数値を含む
データを「処理データ」と称し、また「数値データ」は
アドレスデータおよび処理データ両者を含むものとして
用いる。
【0115】出力ポート16は、処理データを出力し、
出力ポート17は、アドレスデータを出力する構成とす
ることができる。図1においては、演算ユニット10
(演算ユニット10−1〜10−nを総称的に示す)は
2つの入力ポート14および15ならびに2つの出力ポ
ート16および17を有するように示される。入力ポー
トおよび出力ポートの数は3以上であってもよい。
【0116】演算ユニット10−1〜10−nはカスケ
ード接続される。すなわち、演算ユニット10−i(i
=1〜n−1)の出力ポート16および17は、次段の
演算ユニット10−(i+1)の入力ポート14および
15に接続される。カスケード接続の最終段の演算ユニ
ット10−nのアドレスデータ出力ポート17は、カス
ケード接続の初段の演算ユニット10−1の入力ポート
15に環状通信経路19aを介して接続される。演算ユ
ニット10−nの処理データ出力ポート16は、非線形
変換ユニット30の入力ポート31に接続されるととも
に2入力1出力のセレクタ33の一方入力に接続され
る。セレクタ33の他方入力は非線形変換ユニット30
の出力ポート32に接続され、セレクタ33の出力は環
状通信経路19bを介して演算ユニット10−1の処理
データ入力ポート14に接続される。
【0117】セレクタ33は、制御ユニット20の制御
(この制御経路は図示せず)の下に、演算ユニット10
−nの出力ポート16から出力される処理データを非線
形変換ユニット30から出力ポート32を介して出力さ
れる処理データの一方を選択して環状通信経路19b上
に出力する。したがって、セレクタ33の入力選択状況
に応じて、演算ユニット10−nがリング状に接続され
るかまたは演算ユニット10−1〜10−nおよび非線
形変換ユニット30がリング状に接続される。環状通信
経路19aおよび19bは演算ユニット10を相互接続
する経路を含む。
【0118】制御ユニット20は、演算ユニット10−
1〜10−nに共通に接続される命令ブロードキャスト
バス21を介して演算ユニット10−1〜10−nに共
通の命令を通報する。演算ユニット10−1〜10−n
は、この命令ブロードキャストバス21を介して与えら
れる命令に従って演算処理を実行する。したがって、こ
の図1に示す配置により、SIMD方式処理装置に要求
される1制御部/多演算部という要件が満たされ、さら
にニューラルネットワークに不可欠な非線形変換処理を
取り込んだ並列数値演算処理装置を実現することができ
る。
【0119】演算ユニット10−1〜10−nに共通
に、さらにアドレスブロードキャストバス22およびデ
ータブロードキャストバス23が設けられる。制御ユニ
ット20は、アドレスブロードキャストバス22および
データブロードキャストバス23を介して演算ユニット
10−1〜10−nに同時にアドレスデータおよび処理
データ(または定数データ)を通報することにより、演
算ユニット10−1〜10−nのローカルメモリ11の
同一アドレス位置または特定のレジスタに同じ処理デー
タ(または定数データ)を書込むことができる。
【0120】図2は、演算ユニットの内部構成を概略的
に示す図である。図2において、演算ユニット10は、
命令ブロードキャストバス21を介して与えられる命令
を入力する命令入力ポート18aと、アドレスブロード
キャストバス22およびデータブロードキャストバス2
3を介して与えられるアドレスデータおよび処理データ
(または定数データ)を入力する入力ポート18bおよ
び18cと、入力ポート18aを介して与えられた命令
に従って演算ユニット10における必要な動作を実行す
るシーケンスコントローラ25と、シーケンスコントロ
ーラ25の制御の下に入力ポート14および15または
入力ポート18bおよび18c上に与えられた数値デー
タを内部バス28bに伝達するバス接続回路26と、シ
ーケンスコントローラ25の制御の下に、内部バス28
b上の数値データを出力ポート16および17へ伝達す
るバス接続回路27を含む。
【0121】シーケンスコントローラ25は、ローカル
メモリ11、演算器群12およびレジスタ群13と内部
バス28aとの接続、ローカルメモリ11、演算器群1
2およびレジスタ群13への数値データの書込および読
出などのアクセス動作など演算ユニット10において行
なわれる動作の制御を行なう制御回路およびそれらの動
作を実行する書込/読出回路、セレクタなどをすべて含
む。
【0122】図2に概念的に示す演算ユニット10の構
成は、積和演算を高速に実行するディジタルシグナルプ
ロセッサ(DSP)において利用されているものと類似
する。しかしながらこの図2に示す演算ユニット10に
おいては、シーケンスコントローラ25に含まれる回路
(その構成については後に詳細に説明する)は、数値デ
ータの数値に従って以後の処理手続を変更する機能を備
える。
【0123】すなわち、図3に示すように、シーケンス
コントローラ25は、制御ユニットから与えられた命令
をデコードし、その命令に従って必要な制御信号を発生
して命令実行に必要な制御信号を発生するとともに、各
演算ユニット内の各構成要素とバス接続などを実行する
制御部25aと、演算処理実行時に与えられた数値デー
タの数値を識別する数値識別部25bと、この数値識別
部25bにより識別された数値に従って以後の処理手順
を変更すべきか否かを判定する処理手順変更判定部25
cと、この処理手順変更判定部25cの判定結果に従っ
て以後の演算処理の処理過程を設定して設定された演算
処理を実行する演算処理制御部25dを含む。
【0124】演算処理制御部25dへは、制御部25a
から制御信号が与えられるように示される。演算処理制
御部25dは、ローカルメモリ11、演算器群12また
はレジスタ群13に対するアクセス制御および数値デー
タの伝達などを実行する。ここで、取扱かわれる数値デ
ータは、一般にプロセッサにおいて用いられるステータ
スフラグと異なり、演算処理されるべき処理データであ
り、演算器群で演算処理される処理データと同じく演算
処理部(たとえば演算器群)へ与えられるデータであ
る。
【0125】この数値データの数値に従って以後の処理
手順を変更する機能を設けることにより、不必要な演算
処理を省略することができ、効率的に処理を実行するこ
とができる。これらの処理手順変更の具体的構成につい
ては後に詳細に説明する。
【0126】図4は、図1に示す制御ユニットの概略構
成を示す図である。図4において、制御ユニット20
は、命令発行/実行部20aと、演算器群20bと、メ
モリ群20cと、入出力選択回路20dを含む。命令発
行/実行部20aは、命令メモリを含み、処理の進行に
従って命令メモリに格納された命令を順次入出力選択回
路20dを介して命令ブロードキャストバス21へ伝達
するとともに、命令を実行して、必要な処理データまた
は定数データを生成して入出力選択回路20dを介して
アドレスブロードキャストバス22およびデータブロー
ドキャストバス23上へ伝達する機能を備える。命令発
行/実行部20aは、さらに命令メモリに格納された命
令に従って、演算器群20bおよびメモリ群20cを利
用して必要な演算処理を行なう機能を備える。この命令
発行/実行部20aは、また入出力選択回路20dを介
して環状通信経路19aおよび19b(または演算ユニ
ット10の入力ポート14および15)と双方向的にデ
ータの通信を行なうことができる。
【0127】図1を再び参照して、前述のように、演算
ユニット10−1〜10−nはそれぞれ処理データ入力
ポート14およびアドレスデータ入力ポート15を含
む。隣接する演算ユニット間で、入力ポート14および
15と出力ポート16および17が相互接続される。し
たがって、演算ユニット10−1〜10−nそれぞれに
おける、ローカルメモリ11に対するアドレスはそのと
きに同時に与えられる処理データに従って別々に設定す
ることができる。この構成は、ニューラルネットワーク
が要求する積和演算uj=ΣWji・Siを高速に実行
することができるだけでなく、後に詳細に説明する無駄
演算削除機能の実現にも役立つ。まずニューラルネット
ワークにおける膜電位を算出する積和演算がどのように
実現されるかについて説明する。
【0128】図5に示すように、I層のニューロンから
の出力状態値S0〜S3に従って、J層のニューロンN
0〜N3が生成する膜電位u0〜u3を算出する動作に
ついて説明する。ニューロンN1〜N4をそれぞれ1つ
の演算ユニットに対応させる。
【0129】図6に、膜電位uj算出のための積和演算
実行時における数値データの配置を示す。図6におい
て、4つの演算ユニット10−1〜10−4がリング状
に相互接続される。演算ユニット10−1〜10−4各
々において、処理データ入力ポート14はレジスタ41
に結合され、アドレスデータ入力ポート15はレジスタ
42に結合される。レジスタ41および42は、またそ
の格納データが処理データ出力ポート16およびアドレ
スデータ出力ポート17に伝達されるように接続され
る。この接続形態により、演算ユニット10−1〜10
−4のレジスタ41および42がリング状に接続され
る。演算ユニット10−1〜10−4各々においてレジ
スタ41にはニューロンの出力状態値Si(i=0〜
3)が格納され、レジスタ42に、レジスタ41に格納
された出力状態値を生成するニューロンを識別するアド
レスiが格納される。
【0130】演算ユニット10−1〜10−4各々にお
いて、ローカルメモリ11には、出力状態値Siを生成
するニューロン識別アドレスiと対応するアドレス位置
に対応の重みデータ(シナプス荷重値)Wjiが格納さ
れる。すなわち、演算ユニット10−1のローカルメモ
リ11には、アドレスiにシナプス荷重値W0iが格納
される。演算ユニット10−2のローカルメモリ11に
おいては、アドレスiにシナプス荷重値W1iが格納さ
れる。演算ユニット10−3においては、ローカルメモ
リ11のアドレスiにシナプス荷重値W2iが格納され
る。演算ユニット10−4においては、ローカルメモリ
11のアドレスiにシナプス荷重値W3iが格納され
る。演算ユニット10−1〜10−4各々において、レ
ジスタ42が保持するアドレスデータはまたローカルメ
モリ11に設けられたアドレスデコーダ45へ与えられ
る。演算ユニット10−1〜10−4各々において、ロ
ーカルメモリ11から読出されたシナプス荷重値Wji
は、対応のレジスタ41に格納された出力状態値Siと
ともに図示しない演算部へ伝達されて積演算が実行さ
れ、その積結果が累算される。
【0131】図6に示す接続形態は、図2に示すシーケ
ンスコントローラ25が積演算開始命令に従って確立す
る。出力状態値および対応のアドレスデータのレジスタ
への格納は、制御ユニット20から順次伝達されてもよ
く、また図示しない外部の制御装置から順次ロードされ
る構成が利用されてもよい。図6に示す状態を初期状態
として、1サイクルごとにレジスタ41および42の保
持する数値データを時計方向にシフトさせて順次隣接す
る演算ユニットのレジスタ41および42へ伝達する。
【0132】次の状態では、図7に示すように、演算ユ
ニット10−1においては、出力状態値S3およびアド
レス3が与えられ、演算ユニット10−2においては、
出力状態値S0およびアドレス0が与えられ、演算ユニ
ット10−3においては、出力状態値S1およびアドレ
ス1が与えられ、演算ユニット10−4においては、出
力状態値S2およびアドレス2が与えられる。それぞれ
のアドレスに従って対応のローカルメモリからシナプス
荷重値を読出し、積演算および加算演算を実行する。こ
れにより、演算ユニット10−1〜10−4それぞれに
おいて2つの積項の加算が行なわれて格納される。
【0133】図8に示すように、3回シフト動作を実行
すると、演算ユニット10−1においては、出力状態値
S1およびアドレス1が格納され、演算ユニット10−
2においては、出力状態値S2およびアドレス2が与え
られ、演算ユニット10−3においては、出力状態値S
3およびアドレス3が与えられ、演算ユニット10−4
においては、出力状態値S0およびアドレス0が与えら
れる。これらのアドレスに従って、演算ユニット10−
1〜10−4においてローカルメモリ11から対応のシ
ナプス荷重値を読出し、出力状態値S1との積演算を行
ない、累算する。演算ユニット10−1においては、
(シナプス荷重値、出力状態値)の組として、(W0
0,S0)、(W01,S1)、(W02,S2)、
(W03,S3)が順次供給されて積和演算が実行され
る。演算ユニット10−2においては、(W11,S
1)、(W12,S2)、(W13,S3)、(W1
0,S0)という処理データ対が順次供給されて積和演
算が実行される。
【0134】演算ユニット10−3においては、(W2
2,S2)、(W23,S3)、(W20,S0)、お
よび(W21,S1)の処理データ対による積和演算が
順次実行される。演算ユニット10−4においては、
(W33,S3)、(W30,S0)、(W31,S
1)、および(W32,S2)の処理データ対が順次供
給されて積和演算が実行される。したがって、これらの
サイクル完了後、演算ユニット10−1〜10−4それ
ぞれにおいては、膜電位ujが算出されて格納される。
演算ユニット10−1〜10−4はいずれのクロックサ
イクルにおいても、出力状態値およびアドレスが与えら
れており積和演算を実行する。したがって演算ユニット
10−1〜10−4すべてがアイドル状態となることな
く演算処理を実行しており、高速で処理を完了すること
ができる。
【0135】また出力状態値とこの出力状態値を出力す
るニューロンを識別するアドレスiをともに与えること
により、ローカルメモリ11においては、従来の構成と
異なりニューロン識別アドレス位置に対応のシナプス荷
重値データを格納するだけでよく、出力状態値の循環サ
イクルを考慮してシナプス荷重値を格納する必要がな
く、容易にシナプス荷重値をローカルメモリ内に格納す
ることができる。
【0136】また、演算ユニット10の数および処理デ
ータ(シナプス荷重値)が増加しても、上述の動作特性
はそのまま維持されるため、数百〜数千要素(ニューロ
ン)の処理を要求する大規模なニューラルネットワーク
においても容易に拡張して対応することができ、効率的
に演算処理を実行することができる。この出力状態値と
対応のアドレスとをともに伝達することにより演算ユニ
ットそれぞれにおいてローカルメモリに異なったアドレ
ス指定を行なう構成は、上述のようなネットワークの拡
張の容易性(シナプス荷重値の格納順序や出力状態値の
伝達順序に応じて変更する必要がないこと等による)を
もたらすとともに、0または微小値の乗算というような
無駄演算を容易に削除することができる。このような無
駄演算は、後に具体的に説明するが、非線形処理後のニ
ューロンの出力状態値に多数発生する。特に、動作の最
終局面においては、80ないし90%の出力状態値が計
算不要になることが珍しくない。したがって、このよう
な無駄演算要素を演算ユニット10へ供給しなければ、
無駄な演算が省略されるため、より高速で処理を実行す
ることができる。以下、この無駄演算処理の構成につい
て説明する。
【0137】今、4つの演算ユニット10−1〜10−
4を用いて0≦i≦7の範囲の積和演算uj=ΣWji
・Siを並列実行する場合に、4つのニューロンの出力
状態値S2、S3、S5およびS7が0または微小値に
なったと仮定する。従来の装置においては、ニューロン
の出力状態値がS0〜S7と8個存在するため、8クロ
ックサイクル(演算サイクル)が必要とされる。
【0138】一方、本発明においては、図9に示すよう
に、演算処理が必要とされる出力状態値S0、S1、S
4およびS6のみを演算ユニット10−1〜10−4に
供給する。このとき出力状態値S0、S1、S4および
S6それぞれに対応してアドレス0、1、4および6を
演算ユニット10−1〜10−4へ供給する。演算ユニ
ット10−1〜10−4それぞれにおいて、ローカルメ
モリ11から読出されるシナプス荷重値はレジスタ42
に格納されたアドレスが指定する格納位置に格納された
シナプス荷重値である。したがって、4クロックサイク
ル(演算サイクル)で積和演算が終了する。
【0139】すなわち、演算ユニット10−1において
は、処理データ(W00,S0)、(W01,S1)、
(W04,S4)、および(W06,S6)に対する積
和演算が実行される。演算ユニット10−2において
は、処理データ(W11,S1)、(W14,S4)、
(W16,S6)、および(W10,S0)が順次供給
されて積和演算が実行される。
【0140】演算ユニット10−3においては、処理デ
ータ(W24,S4)、(W26,S6)、(W20,
S0)、および(W21,S1)が順次供給されて積和
演算が実行される。演算ユニット10−4においては、
処理データ(W36,S6)、(W30,S0)、(W
31,S1)、および(W34,S4)が順次供給され
て積和演算が実行される。
【0141】すなわち、無駄演算を発生させる4つの出
力状態値S2、S3、S5およびS7に関連する処理デ
ータについての演算は実行されないため、高速で演算処
理を行なうことができる。このような無駄演算削減機能
は、1つの入出力用ポートのみを有する従来の装置また
はそれぞれの演算ユニットに対し共通にローカルメモリ
11のアドレス情報を与える構成では得られない性質で
ある。次にこの無駄演算削減による処理効率の向上につ
いてシミュレーションにより求めた結果について具体的
に説明する。
【0142】[無駄演算省略のシミュレーション結果]
図10は、階層型ニューラルネットワークにおける誤差
逆伝搬法に従った学習時のシナプス荷重値修正量、総二
乗誤差およびシナプス荷重値の学習繰返し回数による変
化をソフトウェアを用いたシミュレーションにより求め
た結果を示す図である。ニューラルネットワークは、入
力層I、中間層Hおよび出力層Oの3層構造を備える。
入力層I、隠れ層H、および出力層Oは、それぞれ1
6、8、および16のニューロンを含む。学習係数ηは
0.3であり、慣性係数αは0.8である。図10の横
軸は学習繰返し回数を示し、縦軸は学習曲線(単位は任
意)を示す。
【0143】W(I−H)は入力層ニューロンと隠れ層
ニューロンの間のシナプス荷重値Whiの絶対値の平均
値〈|Whi|〉を示し、W(H−O)は隠れ層ニュー
ロンと出力層ニューロンの間のシナプス荷重値Wohの
絶対値の平均値〈|Woh|〉を示す。ΔW(I−H)
は、入力層ニューロンと隠れ層ニューロンの間のシナプ
ス荷重値の修正量の絶対値の平均値〈|ΔWhi|〉を
示し、ΔW(H−O)は隠れ層ニューロンと出力層ニュ
ーロンの間のシナプス荷重値の修正量の絶対値の平均値
〈|ΔWoh|〉を示す。総二乗誤差は、すべてのニュ
ーロンの誤差eの総和Σe2 を示す。図10に示すシミ
ュレーション結果においては、演算は省略せずにすべて
行なわれている。学習が進むにつれて、パラメータW
(I−H)、W(H−O)、ΔW(I−H)、ΔW(H
−O)およびΣe2 の変化量が小さくなっているのが見
られる。
【0144】図11は、階層型ニューラルネットワーク
における誤差逆伝搬法に従った学習時のシナプス荷重
値、シナプス荷重値修正量、および総二乗誤差の学習繰
返し回数による変化をソフトウェアを用いたシミュレー
ションにより求めた結果を示す図である。図11に示す
シミュレーションでは、入力層、隠れ層、および出力層
は256、64および256のニューロンをそれぞれ含
む。学習係数ηおよび慣性係数αはそれぞれ0.3およ
び0.8である。図11に示す各パラメータの定義は、
図10に示すものと同じである。図11に示すシミュレ
ーションにおいても、すべての演算処理が実行されてい
る。用いられたサンプル数は256である。この図11
に示すシミュレーション結果においても、学習が進むに
つれて、各パラメータの変化量は少なくなっている。
【0145】図12は、誤差逆伝搬法による学習時にお
ける入力層ニューロンと隠れ層ニューロン間の、しきい
値ε(ΔW)より大きいシナプス荷重値修正量の割合の
変化を示す図である。
【0146】図12においては、しきい値ε(ΔW)と
して2・10-5を用いる。学習係数ηおよび慣性係数α
はそれぞれ0.3および0.8である。また図12にお
いては、入力層I、隠れ層Hおよび出力層Oのニューロ
ン数が16、8および16のニューラルネットワーク、
64、32および64のニューラルネットワーク、およ
び256、64および256のニューラルネットワーク
各々についての有効重み修正量(しきい値ε(ΔW)以
上のシナプス荷重値修正量を有するニューロンの数/シ
ナプス荷重値の修正を受けるニューロンの数)を縦軸で
パーセントで示し、横軸に学習繰返し回数を示す。図1
2から見られるように、いずれのニューラルネットワー
クの構成においても、学習が進むにつれて、有効重み修
正が小さくなっている。すなわち学習が進むにつれて、
シナプス荷重値修正量ΔWhiがしきい値ε(ΔW)よ
り小さくなるニューロンの数が増大している。
【0147】図13は、3層ニューラルネットワークに
おける誤差逆伝搬法による学習時の隠れ層ニューロンお
よび出力層ニューロン間の有効重み修正を示す図であ
る。図13に示す有効重み修正(図13に縦軸でパーセ
ントで示す)は、図12に示す有効重み修正を求める場
合と同様の条件を用いてソフトウェアにより求められて
いる。図13の横軸に学習繰返し回数(単位は任意)を
示す。隠れ層ニューロンと出力層ニューロン間のシナプ
ス荷重値修正演算処理においても、学習が進むにつれて
(繰返し回数が増大するにつれて)、シナプス荷重値修
正量ΔWohがしきい値ε(ΔW)よりも大きいニュー
ロンの数が少なくなっている。
【0148】図14は、最終学習誤差と処理される演算
数との関係をソフトウェアシミュレーションにより求め
た結果を示す図である。図14における学習の条件は、
図12および図13に示すシミュレーションに用いられ
たものと同じである。横軸に最終学習誤差Efin(出
力パターンと教師パターンとの誤差)を示し、縦軸に省
略される演算数の全演算数に対する割合(パーセント)
を示す。最終学習誤差Efinすなわち許容される演算
誤差が大きい場合には、学習が十分に行なわれない状態
で学習が終了するため(学習繰返し回数が小さい状
態)、シナプス荷重値Wおよびシナプス荷重値修正量が
比較的大きい状態であり、省略できる演算(しきい値ε
(ΔW)より小さなシナプス荷重値修正量が関係する演
算)の数は小さくなる。
【0149】一方、最終学習誤差Efinが小さい場合
には、シナプス荷重値Wおよびシナプス荷重値修正量の
値は小さくなり、すなわち有効重み修正が小さくなる。
したがって最終学習誤差Efinが小さくなると、省略
できる演算の数が増大し、処理速度が増大する。たとえ
ば入力層、隠れ層、および出力層のニューロン数が25
6、64および256のニューラルネットワークにおい
ては、最終学習誤差Efinが2-8の場合には、約70
%の演算処理を省略することができる。
【0150】図14から明らかなように、本発明のよう
に、入力ポートおよび出力ポートを2つ設け、それぞれ
に処理データおよびアドレスデータを与えて各演算ユニ
ットで別々のアドレス指定を行なえる構成とすることに
より、不必要な演算処理を省略することができ、処理速
度を大幅に改善することができる。シナプス荷重値修正
量ΔWに対するしきい値ε(ΔW)のみならず、出力状
態値Sおよび出力状態値変化量ΔSそれぞれに対しても
しきい値ε(S)およびε(ΔS)を設けることにより
処理精度および処理速度を調整してもよい。
【0151】図1に示す構成は上述の演算処理削減効果
に加えて、以下の利点を与える。図1に示すように、演
算ユニット10−1〜10−nは共通にアドレスブロー
ドキャストバス22およびデータブロードキャストバス
23に接続され、制御ユニット20は、これらのバス2
2および23を介して演算ユニット10−1〜10−n
に対し同時にアドレスデータおよび処理データまたは定
数データを通報することができる。すなわち演算ユニッ
ト10−1〜10−nが共通に必要とする定数データお
よびアドレスは制御ユニット20から演算ユニット10
−1〜10−nすべてに対して通報することができる。
制御ユニット20においてのみ演算ユニット10−1〜
10−nすべてが共通に必要とする数値データ(たとえ
ば定数データ)を格納しておき、必要に応じて制御ユニ
ット20から演算ユニット10−1〜10−nへ共通数
値データを通報する。演算ユニット10−1〜10−n
個々にこのような共通数値データを常時格納する必要が
なく、演算ユニット10−1〜10−nにおけるローカ
ルメモリ11の記憶容量の低減およびアドレス情報保持
用レジスタの節約を実現することができ、装置規模を低
減することができる。
【0152】またセレクタ33により、必要なときのみ
非線形変換ユニット30を環状通信経路19bに挿入す
ることができる。非線形変換ユニット30は、複雑な非
線形変換処理を行なうため、一般に装置規模は大きい。
セレクタ33を設けることにより、1つの非線形変換ユ
ニット30を演算ユニット10−1〜10−nすべてが
共通に利用することができる。演算ユニット10−1〜
10−nすべてに非線形変換ユニットを設ける必要がな
く、小占有面積の装置を実現することができる。非線形
変換Sj=f(uj)の処理はたとえば以下のように実
行される。
【0153】演算ユニット10−1〜10−n各々にお
いて積和演算ΣWji・Siより求められた膜電位uj
を、データ入力ポート14およびデータ出力ポート16
に接続されたレジスタ41内に格納する(図6参照)。
続いて、セレクタ33の接続経路を切換えて、非線形変
換ユニット30を環状通信経路19bに挿入する。積和
演算値と同様にして、クロックに従ってレジスタ41に
格納された膜電位ujを環状通信経路19bに移動させ
る。非線形変換ユニット30は、各クロックごとに入力
ポート31に与えられた膜電位ujに非線形変換処理を
施して出力ポート32を介してセレクタ33へ与える。
演算ユニット10−nに格納された膜電位unから順次
非線形変換処理されてセレクタ33および環状通信経路
19bを介して初段の演算ユニット10−1のレジスタ
41へ非線形変換後の出力状態値Snが格納される。演
算ユニット10−1〜10−nの数と等しい数のクロッ
クを与えて各演算ユニット10−1〜10−n内のレジ
スタ41の格納データをシフトさせることにより、演算
ユニット10−1〜10−nのレジスタ41内に出力状
態値Siが格納される。
【0154】また、非線形変換ユニット30内に出力状
態値Sjを逐次加工する機能を設けることもできる。た
とえば、出力状態値Sjがしきい値Δε(S)以上であ
るか否かを比較器を用いて非線形変換処理後に判定し、
0または微小値の出力状態値Sjの環状通信経路19b
への送出を防止することができ、また演算を省略するこ
とができる。
【0155】[変更例1]図15は、この発明による数
値演算処理装置の変更例の構成を示す図である。図15
に示す配置においては、環状通信経路19aおよび19
bにセレクタ50および51が挿入される。セレクタ5
0は、演算ユニット10−nの出力ポート17からの出
力データと入力端子53aから与えられるデータ(数値
データとは限らない)の一方を選択して環状通信経路1
9aを介して演算ユニット10−1の入力ポート15へ
与える。セレクタ51は、演算ユニット10−nの出力
ポート16から与えられる出力データと入力端子53b
を介して与えられるデータの一方を選択して環状通信経
路19bを介して演算ユニット10−1の入力ポート1
4へ与える。演算ユニット10−nの出力ポート16お
よび17は、また出力端子52bおよび52aに接続さ
れる。入力端子53a、53b、および出力端子52a
および52bは、この数値演算処理装置が形成される半
導体チップに設けられる信号(データ)入出力用端子で
ある。
【0156】セレクタ50および51の接続経路の設定
は外部から行なわれるか(特定のピン端子の電位を制御
する)またはチップ上の特定のパッドを固定的に所定電
位に接続することにより行なうのが好ましい。セレクタ
50および51は、後に説明するように、主としてこの
図1に示す数値演算処理装置が形成されたチップを複数
個相互接続してニューラルネットワークの規模を拡張す
るために用いられるためである。ニューラルネットワー
クが1つの数値演算処理装置(チップ)で構成される場
合には、セレクタ50および51は制御ユニット20
(図1参照)の制御の下にその接続経路が確立されるよ
うに構成されてもよい(外部から処理すべきデータをロ
ードするときに都合がよい)。
【0157】次にセレクタ50および51を用いたニュ
ーラルネットワークの規模の拡張について説明する。
【0158】通常、現在の利用可能な製造技術の制約か
ら1つの半導体チップ上に集積することのできる演算ユ
ニットの数は1制御ユニットに対し数個ないし数十個に
とどまっている(Griffin M. et al.,“An 11-Million
Transistor Neural NetworkExecution Engine”,ISSCC
Digest of Technical Papers, 1991, pp.180-181参照)
。したがって、数百ないし数千個の演算ユニットを相
互接続した大規模のニューラルネットワークを構成する
ためには、複数の半導体チップ(各チップに数値演算処
理装置が形成されている)を相互接続することが必要と
なる。セレクタ50および51を設けることにより、半
導体チップを相互接続して大規模ニューラルネットワー
クを容易に実現することができる。
【0159】図16にm(m≧2の整数)個の半導体チ
ップを相互接続した接続態様を示す。半導体チップ54
−1ないし54−mの各々は同一構造を有し、図1に示
す構成と同様制御ユニット20、非線形変換ユニット3
0、および演算ユニット10−1〜10−nを含む。セ
レクタ50および51は示していないが、入力端子53
aおよび53bに与えられたデータを選択する状態に設
定される。半導体チップ54−k(k=1〜m−1)の
出力端子52aおよび52bは次段の半導体チップ54
−(k+1)の入力端子53aおよび53bに接続され
る。半導体チップ54−mの出力端子52aおよび53
bは環状通信経路55aおよび55bを介して半導体チ
ップ54−1の入力端子53aおよび53bに接続され
る。したがってn・m個の演算ユニットをリング状に接
続する大きな環状通信経路が作成され、大規模なニュー
ラルネットワークが実現される。
【0160】半導体チップ54−1〜54−m各々にお
いて、処理動作時には、演算ユニット10−1〜10−
nへは、出力状態値を示す処理データと対応のニューロ
ンを示すアドレスが与えられる。したがって、この大き
な環状通信経路55aおよび55bを介して出力状態値
が順次伝達される場合においても、各演算ユニットにお
いて対応のシナプス荷重値データを読出すことができる
ため、演算ユニット各々において、ローカルメモリ内に
は、その実現されるニューラルネットワークに含まれる
ニューロンを識別するアドレスとこのアドレスに対応し
てシナプス荷重値データを格納しておけばよいため、容
易に先の無駄演算削減機能を有する大規模ニューラルネ
ットワークを実現することができる。
【0161】また半導体チップ54−1〜54−m各々
において非線形変換ユニット30が設けられているた
め、半導体チップ54−1〜54−mそれぞれにおいて
非線形変換処理を並列に実行することができる。図15
に示すセレクタ50の次段に図1に示すセレクタ33を
設けることにより、半導体チップ54−1〜54−mそ
れぞれにおいて、そこに含まれる演算ユニット10−1
〜10−nが表現するニューロンの出力状態値を算出
し、その算出結果をそれぞれの半導体チップ内に保持す
ることができるとともに隣接チップへ転送することがで
きる。
【0162】[変更例2]図4に示すように、制御ユニ
ット20は、演算ユニットの入力ポート14および15
とデータの授受を行なうことができる。この場合、さら
に半導体チップ内において入出力端子とデータの授受を
行なうように構成を拡張することができる。
【0163】図17は、この発明における数値演算処理
装置の他の変更例の構成を示す図である。図17におい
ては、1つの半導体チップ54に形成された数値演算処
理装置の構成を概略的に示す。図17に示す構成におい
て、制御ユニット20は、入出力端子53aおよび53
bに与えられたデータを入力経路81aおよび81bを
介して受ける入力ポート20eと、出力端子52aおよ
び52bへデータを出力経路82aおよび82bを介し
て伝達する出力ポート20fを含む。入力ポート20e
および出力ポート20fはそれぞれ図4に示す入出力選
択回路の拡張構成として含まれる。
【0164】図17に示す構成においては、制御ユニッ
ト20は入力端子53aおよび53bへ与えられたデー
タを入力経路81(81aおよび81b)を介して入力
ポート20eに受け、さらに必要な加工を施して出力ポ
ート20fから出力経路82を介して出力端子52aお
よび52bへ伝達することができる。この構成は、演算
ユニット10−1〜10−nによる処理を受ける必要の
ないデータの処理を制御ユニット20で行なうことがで
きるとともに、以下の利点を与える。なお、図17に示
す配置においては、図15に示すセレクタ50および5
1が設けられており、入力経路81および出力経路82
は、たとえば、これらのセレクタ50および51の入力
部前段に設けられ、制御ユニット20は、入力端子53
aおよび53bならびに出力端子52aおよび52bへ
セレクタ50および51を介さずにデータの伝達を行な
う。伝達経路を切換えるセレクタが設けられてもよい。
【0165】図18に図17に示す半導体チップ54を
複数個(m個)リング状に接続した状態を示す。図18
において、半導体チップ54−1〜54−m各々におい
て、入力端子53aおよび53bは入力経路81を介し
て制御ユニット20の入力ポート(図18には示さず)
に接続され、出力端子52aおよび52bは制御ユニッ
ト20の出力ポート(図18には示さず)に接続され
る。したがって、入力経路81、出力経路82および環
状通信経路55aおよび55bを介して制御ユニット2
0がリング状に接続され、制御ユニット間の通信が可能
となる。隣接半導体チップ54−kおよび54−(k+
1)に含まれる制御ユニット20の間の通信には1クロ
ックサイクルが必要とされるだけであり、演算ユニット
10−1〜10−nのレジスタ41および42(たとえ
ば図9参照)を用いた通信に比べて高速でデータ転送を
行なうことができる。すなわち、1クロックサイクルに
おいて、制御ユニット20に含まれる任意のレジスタ
(図4に示す制御ユニットの構成において明確には示し
ているように制御ユニットは、必要なレジスタ群を含ん
でおり、演算処理に必要なデータを一時的に格納してい
る)の内容を出力経路82を介して出力端子52aおよ
び/または52bに転送するとともに、入力端子53a
および/または53bに与えられる隣接する半導体チッ
プ内の制御ユニット20から与えられたデータを入力経
路81を介して取込む。これにより、1クロックサイク
ルで隣接する半導体チップ内の制御ユニットへデータを
転送することができる。さらに離れた半導体チップに含
まれる制御ユニットへは、上述の動作を複数クロックサ
イクル繰返すことによりデータを転送することができ
る。
【0166】以上のように、図17に示すように、入出
力端子を制御ユニットへ接続する経路を設けることによ
り、高速の制御ユニット間通信を実現することができ
る。
【0167】[変更例3]演算ユニット10は、図2に
示すように、演算器群12およびレジスタ群13を含ん
でおり、シーケンスコントローラ25の制御の下に様々
な演算を実行する。ある種のニューラルネットワーク
(LVQモデル:学習ベクトル量子化モデル)において
は、最大の出力状態値を出力する出力ニューロンを識別
する必要がある。レジスタ群13に含まれるレジスタを
利用して演算を実行することにより、このような最大値
検出処理は容易に実現することができる。以下に、演算
結果を参照して演算結果格納用レジスタの演算結果デー
タ格納動作を制御する演算処理(状態レジスタ参照演
算)の方法について説明する。
【0168】図19は、演算ユニットにおける状態レジ
スタ参照演算を行なうための配置を示す図である。図1
9においては、演算結果データを格納するための演算結
果格納用レジスタ68と、ローカルメモリ11から読出
された数値データWi(i=0〜4)と演算結果格納用
レジスタ68に格納された演算結果データの減算器69
と、減算器69の演算結果の状態を反映するステータス
ビット(負N、0Zおよび桁溢れC等)を格納する状態
レジスタ61と、状態レジスタ61に格納された負ビッ
トNに従ってクロック信号66を通過させるゲート回路
67を含む。減算器69は、図2に示す配置において演
算器群12に含まれており、演算結果格納用レジスタ6
8および状態レジスタ61は、レジスタ群13に含まれ
る。ゲート回路67は、動作制御の構成要素であり、図
2に示すシーケンスコントローラ25の構成要素として
含まれる。演算結果格納用レジスタ68は、ゲート回路
67からクロック信号が与えられたときにローカルメモ
リ11から読出された数値データを格納する。ローカル
メモリ11に格納される数値データWiは、最大値検出
処理を受けるべき数値データであり、たとえば出力状態
値である。
【0169】状態レジスタ61において、減算器69の
減算結果が負の場合には負ビットNがアサートされ、0
の場合には0ビットZがアサートされる。桁溢れが生じ
た場合には桁溢れビットCがアサートされる。この状態
レジスタ61からは負ビットNの状態を表わす信号65
が取出されてゲート回路67へ与えられる。ゲート回路
67は、この信号65が負状態を示すとき、すなわち負
ビットNがアサートされたときにクロック信号66を通
過させる。状態レジスタ61は、減算器69の演算結果
の符号ビット62の値に従ってビットN、ZおよびCの
いずれかをアサートする。状態レジスタ61は、その出
力信号65が負ビットNの状態を表現する信号であるた
め、この場合特にビットZおよびCは利用する必要はな
く、減算器69の演算結果の符号ビット62のみを用い
ることにより最大値検出を行なう。ここで、減算器69
はレジスタ68の保持データからローカルメモリ11か
ら読出された数値データの減算を行なう。
【0170】上述の構成において、ローカルメモリ11
へ与えられるアドレス情報70を増加させながらデコー
ダ45へ与え、ローカルメモリ11から数値データWi
を順次読出し、減算器69の負入力へ与えるとともに、
クロック信号66をゲート回路67へ与えることによ
り、演算結果格納用レジスタ68は、最終的にローカル
メモリ11に格納された数値データWiのうちの最大値
を与える数値データを格納する。レジスタ68の内容が
書換えられるのは、ゲート回路67からクロック信号が
与えられたときである。ゲート回路67は、状態レジス
タ61に格納された負ビットNがアサートされたときに
クロック信号をレジスタ68へ与える。負ビットNがア
サートされるのは、減算器69の演算結果が負であり、
符号ビット62が負状態を示すときである。すなわちロ
ーカルメモリ11から与えられた数値データが状態レジ
スタ68に保持された数値データよりも大きい場合であ
る。したがって、演算ユニット10において、ローカル
メモリ11に格納された数値データWiの最大値を検出
することができる。この上述の動作は後に全体の装置に
おける最大値検出動作を示すフロー図において詳細に説
明するが、以下に述べるC言語記述と等価である。
【0171】 reg=0; for(i=0;i<MAXARRAY;i++){ sreg=sgn(w[i]−reg); reg=sreg?w[i]:reg; } 上述のC言語記述において、変数sregは、状態レジ
スタ61を示し、変数regは演算結果を格納するレジ
スタ68を示し、配列w[i]はローカルメモリ11に
格納された数値データWiを示す。定数MAXARRA
Yは、ローカルメモリ11に格納された数値データの数
(図19においては5個)を示す。関数sgn()は減
算器69からの演算結果の符号ビットを与える関数であ
る。このC言語記述の内容は、以下のとおりである。ま
ず変数regを0に初期設定する。次いでiを0に初期
設定し、次いでiを定数MAXARRAYまで順次1ず
つ増分して以下の動作を実行する。配列w[i]と変数
regの差の符号を求め、その符号を変数sregとす
る。変数sregの値に従って配列w[i]および変数
regの一方を選択して新たに変数regとする。した
がって、このiが定数MAXARRAYまで到達したと
きには演算ユニット10においてローカルメモリ11に
格納された数値データのうちの最大値が求められる。
【0172】数値演算処理装置においては、演算ユニッ
トが複数個設けられている。したがって演算ユニット1
0のレジスタ68に格納された数値データは最大値の候
補である。次に、複数の演算ユニットのそれぞれのレジ
スタ68に格納された数値データから最大値を求める動
作について説明する。
【0173】図20は、最大値を求める際の1つの演算
ユニット内部の接続形態を示す図である。図20におい
て、演算ユニット10においては、(入力ポート14と
出力ポート16の間にデータレジスタ44が接続され
る。残りの演算部の構成は図19に示すものと同じであ
る。レジスタ44に格納された数値データが減算器69
およびレジスタ68へ与えられる。この図20に示す接
続配置は、図2に示すシーケンスコントローラ25の制
御の下に実現される。データレジスタ44には、演算結
果格納用レジスタ68に格納された最大値候補の数値デ
ータが格納される。動作時においては、データレジスタ
44に格納された数値データが演算結果格納用レジスタ
68に格納された数値データよりも大きい場合に、演算
結果格納用レジスタ68にはデータレジスタ44に格納
された数値データが格納される。データレジスタ44に
格納された数値データを順次隣接演算ユニットへ伝達し
て減算および格納動作を実行する。これは、次のC言語
記述と等価である。
【0174】 for(i=0;i<MAXPU;i++){ sreg=sgn(dreg−reg); reg=sreg?dreg:reg; } 新しい変数dregは、データ入力ポート14およびデ
ータ出力ポート16に接続されたデータレジスタ44を
示し、定数MAXPUは、環状通信経路に接続される演
算ユニットの数である。レジスタ44に格納された最大
値候補は環状通信経路を順次転送されて各演算ユニット
における最大値候補と比較される。最終的には、演算ユ
ニット10のレジスタ68(reg)には最大値候補か
ら選ばれた最終的な最大値が共通に保持され、またデー
タレジスタ44(dreg)に保持された最大値候補は
対応の演算ユニット内に戻る。この一連の動作について
具体的に以下に説明する。
【0175】今図21(a)に示すように、4つの演算
ユニットに格納された数値データA0〜A3のうちの最
大値を求める動作について考える。数値データA0〜A
3は、A0<A1<A2<A3の関係を満足するものと
する。第1サイクルにおいては、レジスタ44−1〜4
4−4においては、数値データA3、A0、A1、およ
びA2が格納される。対応のレジスタ68−1〜68−
4には、数値データA0、A1、A2およびA3が格納
される。減算処理を行なうと、数値データA3は数値デ
ータA0より大きいため、レジスタ68−1の保持デー
タが数値データA0から数値データA3に変わる。残り
のレジスタ68−2〜68−4においては保持データは
更新されない。
【0176】次の演算サイクルにおいては、図21
(b)に示すように、データレジスタ44−1〜44−
4に、数値データA2、A3、A0およびA1がそれぞ
れ格納される。減算処理を実行すると、レジスタ68−
2に格納された数値データA1がレジスタ44−2に格
納された数値データA3で置換えられる。他のレジスタ
68−1、68−3および68−4においては、その保
持データの更新は行なわれない。
【0177】次の演算サイクルにおいては、図21
(c)に示すように、データレジスタ44−1〜44−
4の保持データが1つシフトされており、数値データA
1、A2、A3およびA0がそれぞれ格納される。レジ
スタ44−3に格納された数値データA3によりレジス
タ68−3に格納された数値データA2が更新される。
残りのレジスタ68−1、68−2、および68−4に
おいてはその保持データの更新は行なわれない。
【0178】したがって、次の演算サイクルにおいて
は、図21(d)に示すように、レジスタ44−1〜4
4−4に最初の数値データA0〜A3がそれぞれ格納さ
れると、レジスタ68−1〜68−4には、数値データ
A3が共通に格納される。これにより最大値を検出する
ことができる。この図21(d)に示す状態において、
レジスタ44−1〜44−4と対応のレジスタ68−1
〜68−4の保持データの減算を行なう。最大の数値デ
ータA3を格納するデータレジスタ44−4に対応する
演算ユニットにおいてのみ減算器の符号ビットが0であ
り、残りの演算ユニットにおいては符号ビットは正とな
る。したがってこの符号ビットを状態レジスタ61(図
20参照)に格納することによりいずれの演算ユニット
が最大値を生成したかを識別することができる。
【0179】ここで、減算器69の出力する符号ビット
62は、正および負の場合に負ビットNをアサートし、
正の場合には符号ビット62は負ビット61をデアサー
トする。減算器69の演算結果が正または0のときにそ
の符号ビットが0であり、減算器69の演算結果が負の
ときのみその符号ビットが1となるような数値データの
表示が用いられる場合には、0ビットZを観察してもよ
い。0ビットZの生成は、減算器69の演算結果の全ビ
ットのNANDをとることにより生成することができ
る。またこれに代えて、最終段階の演算においては、減
算器69は、データレジスタ44の保持データからレジ
スタ68の保持データを減算するように構成されてもよ
い。いずれの場合であっても、数値データの表示形態に
応じてその演算処理形態を適当に調節することにより最
大値を生成する演算ユニットにおける状態レジスタ61
の特定のビットを残りの演算ユニットにおける状態レジ
スタに対応の状態ビットの値と異ならせることができ
る。
【0180】この最終的に行なわれる操作は以下のC言
語記述に対応する。 sreg=sgn(dreg−reg); 図22に上述の最大値検出動作のフロー図を示す。図2
2に示すフロー図の詳細説明は説明が重複するため省略
するが、処理ステップ群(a)は、1つの演算ユニット
内において最大値候補を求める演算処理動作に対応す
る。処理ステップ群(b)は演算ユニットのレジスタ6
8内の保持データを最大値の保持データに更新する演算
処理ステップ(図20参照)に対応する。処理ステップ
(c)は最大の数値データを生成して演算ユニットを識
別する処理ステップに対応する。
【0181】最大の数値データを生成した演算ユニット
の識別は制御ユニット20において行なわれる。演算ユ
ニット各々から状態レジスタ61の全ビットを制御ユニ
ット20へ通報すると、信号配線の本数が増大し、配線
占有面積が増大するため、集積化の観点から好ましくな
い。
【0182】そこで、図23に示すように、演算ユニッ
ト10−1〜10−n各々において、状態レジスタ61
の特定のビットのみを信号線73を介して並列に制御ユ
ニット20へ伝達する。演算ユニット10−1〜10−
nは制御ユニット20からの命令に従って並列に動作し
ている。セレクタ72は、図2に示すシーケンスコント
ローラ25の制御の下に状態レジスタ61の特定のステ
ータスビット(最大値検出の場合にはたとえば負ビット
N)を選択して信号線73を介して制御ユニット20へ
与える。演算ユニット10−1〜10−nからは1ビッ
トのステータスビットが信号線73を介して制御ユニッ
ト20へ与えられるため、配線本数を低減することがで
きるとともに、制御ユニット20が参照するビット数を
大幅に圧縮することができ、制御ユニット20における
検出処理に関係する回路部分の設計を簡単化することが
できる。
【0183】なお、上述の状態レジスタ参照演算におい
ては、最大値検出動作について説明したが、これは最小
値検出処理動作であってもよく、また他の処理動作であ
ってもよい。特定の条件を満足する数値データを生成す
る演算ユニットを識別する処理動作であればよい。また
制御ユニット20においては、この信号線73は、図1
4に示す入出力選択回路20dへ付加的に与えられても
よく、また他の専用のポートが利用される構成が利用さ
れてもよい。
【0184】[チップレイアウト]図24は、この発明
による数値演算処理装置のチップ上のレイアウトを示す
図である。図24において、半導体チップ54の中央部
に制御ユニット20および非線形変換ユニット30が配
置される。これら制御ユニット20および非線形変換部
30を挟むように、半導体チップ54の外周部に演算ユ
ニット10が配置される。この演算ユニットの数は特に
限定されないが、図24においては12個の演算ユニッ
ト10を例示的に示す。制御ユニット20は、すべての
演算ユニット10に対し命令、アドレスデータおよび数
値データを伝達する。すなわち制御ユニット20はすべ
ての演算ユニット10と通報する。したがって制御ユニ
ット20をチップ54の中央部に配置しこの制御ユニッ
ト20を囲むように演算ユニット10を配置することに
より、制御ユニット20と演算ユニット10それぞれの
間の信号配線の長さを短くすることができるとともに信
号配線が容易となる(信号配線が錯綜することはなくな
る)。信号配線が短くなると、この信号配線における信
号伝搬遅延を小さくすることができ、高速で信号を伝搬
させることができ、高速動作が可能になる。
【0185】制御ユニット20と非線形変換ユニット3
0を隣接してチップ54中央部に配置するのは、制御ユ
ニット20と非線形変換ユニット30とでまた相互に信
号の授受が行なわれるためである。制御ユニット20
は、非線形変換ユニットにおける変換処理動作の制御を
行なうための命令を発行して非線形変換ユニット30へ
与える。非線形変換ユニット30が、たとえば前述のご
とく無駄演算削減のための所定の条件を満足する演算処
理結果を省略する機能を有する場合、このような処理結
果は制御ユニット20へ通報される。制御ユニット20
および非線形変換ユニット30の間では比較的相互作用
が強く命令および数値データの授受が行なわれるため、
両者を近接して配置することにより、信号配線の容易化
および信号伝搬遅延の低減を図る。
【0186】非線形変換ユニット30を挟んで演算ユニ
ット10を配置することにより、演算ユニット10すべ
てを環状通信経路を介して接続する場合と環状通信経路
内に非線形変換ユニット30を挿入する接続とを容易に
実現することができる。たとえば図24において半導体
チップ54の右外周部に図1に示すセレクタ33を配置
することにより、容易に環状通信経路の接続形態を変更
することができ、信号配線の容易化を図ることができ
る。
【0187】また半導体チップ54の両辺に沿って演算
ユニット10を配置することにより、チップを相互接続
して大規模ニューラルネットワークを構築する場合、チ
ップ相互接続が容易となる。たとえば図24において、
半導体チップ54の左側の上下の演算ユニット10に対
し入力端子および出力端子を設け、同様に半導体チップ
54の右側の上部の演算ユニット10に対応してそれぞ
れ出力端子および入力端子を設ける。半導体チップ単体
で用いる場合は、一方側の入出力端子を相互接続するこ
とにより環状通信経路を容易に接続することができる。
複数の半導体チップ54を相互接続する場合には、一方
の入力端子および出力端子を隣接半導体チップ間で相互
接続する。これにより複数の半導体チップ54にわたっ
て演算ユニット10が相互接続される大規模な環状通信
経路55aおよび55bを形成することができる。制御
ユニットおよび非線形変換ユニット各々に対応して入出
力端子が設けられてもよい。
【0188】演算ユニット10においては、ローカルメ
モリ11が半導体チップ54の外周側に設けられる。演
算ユニット10における演算器群およびレジスタ群と制
御ユニット20との間のデータ通信を高速で行なうため
に、これらの間の信号配線を短くするとともに、両者の
配線を容易にするためである。
【0189】また演算ユニット10においてローカルメ
モリ11を半導体チップ54の外周部に配置することに
より、演算ユニット10内における演算器群およびレジ
スタ群(図2参照)とローカルメモリ11の間の配線レ
イアウトが容易となるとともに、これらの演算器群およ
びレジスタ群とローカルメモリ11との間の配線長を短
くすることができる(ローカルメモリを演算器群とレジ
スタ群の間に配置すると演算器群とレジスタ群の間での
直接のデータの授受を行なうための配線が錯綜する)。
【0190】[演算省略のための具体的構成]次に無駄
演算を省略するための具体的構成すなわち演算ユニット
内の具体的構成について説明する。無駄演算を省略する
方法としては実行される処理に応じて種々存在する。以
下、各演算処理内容に応じて順次演算制御ウニまたはユ
ニット内において実現される構成について説明する。以
下の説明においても、特に断らないが、内部回路要素の
接続配置は図2に示すシーケンスコントローラ25の制
御の下にセレクタの接続経路などを適当に調節すること
により実現される。
【0191】[第1の無駄演算省略方式]図25にこの
発明に従う第1の無駄演算省略方式の構成を概念的に示
す。図25に示す無駄演算省略は、図1に示す制御ユニ
ット20において実行される。制御ユニット20内に、
有効出力状態値Siを格納するステートメモリ100
と、この有効出力状態値Siを生成するニューロンを識
別するアドレスを格納するタグメモリ102が設けられ
る。非線形変換ユニットによる非線形変換処理で生成さ
れた出力状態値Siが順次環状通信経路を介して制御ユ
ニット20へ与えられる。制御ユニット20は、与えら
れた出力状態値Siから省略することのできる出力状態
値を識別する。図25においては、出力状態値S1、S
2およびS3が省略できる出力状態値である場合を一例
として示す。この省略することのできる出力状態値の識
別は、所定のしきい値εと非線形変換ユニットから与え
られた出力状態値Siを比較することにより行なわれ
る。この識別結果に従って、ステートメモリ100に
は、有効出力状態値S0、S4、S5、S6、…が格納
され、タグメモリ102には各出力状態値に関連するア
ドレス0、4、5、6、…が格納される。1つの層につ
いての演算処理が完了すると、このステートメモリ10
0に格納された有効出力状態値Si(e)と関連のアド
レスがステートメモリ100およびタグメモリ102か
ら読出されて環状通信経路へ与えられ、順次演算ユニッ
トへ与えられて演算処理が実行される(通常処理動作
時:学習時には後に詳細に示す様に出力方法は異な
る)。
【0192】図25に概念的に示す方式に従えば、膜電
位算出時におけるSi(t)=0に関連する積算を省略
することができる。また同様にして、ステートメモリ1
00およびタグメモリ102を利用することによりΣW
ij(t)・ΔSj(t)の演算において、ΔSj
(t)=0に関連する積算を省略することができる。次
に具体的構成について説明する。
【0193】図26は、第1の無駄演算省略方式を実現
するための具体的構成を示す図である。図26に示す構
成は図1に示す制御ユニット20内において実現され
る。演算ユニット10個々に設けるとローカルメモリの
記憶容量を大きくする必要が生じるため、制御ユニット
20にこの無駄演算省略のための構成を設けることによ
り、メモリ資源の節約を図る。
【0194】図26において、ステートメモリ100に
は、複数のニューロンの出力状態値Sk−jが格納され
る。添字kは、階層型ニューラルネットワークにおける
層を識別し、添字jは、1つの層におけるニューロンを
識別する。
【0195】タグメモリ102には、各層ごとに、ステ
ートメモリ100において有効出力状態値が格納された
ロケーションを示すアドレスが格納される。タグメモリ
102において各層に割当てられたアドレス領域を識別
するためのアドレスはレジスタファイル104に格納さ
れる。図26においては、アドレス「aaaa」、「b
ddc」、および「eefd」が格納された状態を示
す。レジスタファイル104に格納されたアドレスは、
タグメモリ102において、各層における最初のニュー
ロンに関連する情報を格納するためのロケーションを示
す。後に詳細に説明するように、タグメモリ102に
は、有効出力状態値を格納するアドレス情報が格納され
る。ステートメモリ100のアドレスは、各ニューロン
と1対1に対応している。ステートメモリ100のアド
レス「aaa」〜「eeb」には出力状態値S1−1〜
S1−nが格納される。図26においては、ステートメ
モリ100のアドレスとして、有効出力状態値が格納さ
れたアドレスのみを示す。これらのアドレスがタグメモ
リ102に格納される。
【0196】ステートメモリ100のアドレス指定はア
ドレスポインタ106により行なわれ、タグメモリ10
2のアドレス指定はアドレスポインタ108により行な
われる。アドレスポインタ106は、タグメモリ102
から読出されたアドレス情報に従ってステートメモリ1
00のアドレス情報を発生する。アドレスポインタ10
8は、増分器114およびレジスタファイル104の一
方から与えられたアドレス情報をマルチプレクサ116
を介して受けてタグメモリ102のアドレス指定を行な
う。ステートメモリ100から読出された出力状態値は
レジスタ110に格納され、タグメモリ102から読出
されたアドレス情報(後に説明する様に相対アドレスに
変換された後)はまたレジスタ112に格納される。レ
ジスタ110および112に格納された出力状態値およ
びアドレスデータがたとえば環状通信経路上へ伝達され
る。次に出力状態値読出動作について説明する。
【0197】まずレジスタファイル104から層を識別
するためのアドレスが読出され、マルチプレクサ116
を介してアドレスポインタ108へ与えられる。アドレ
スポインタ108は、まずレジスタファイル104から
与えられたアドレス(たとえばaaaa)に従ってアド
レス指定する。タグメモリ102のアドレスaaaaに
は、アドレスデータaaaが格納されており、このアド
レスデータaaaが読出されてアドレスポインタ106
へ与えられるとともに相対アドレスaaa−aaaaに
変換された後レジスタ112に格納される。アドレスポ
インタ106は、このタグメモリ102から与えられた
アドレスデータaaaに従ってステートメモリ100に
対するアドレス選択を行なう。ステートメモリ100か
らは、このアドレスaaaに格納された出力状態値S1
−1が読出されてレジスタ110に格納される。したが
ってレジスタ110には出力状態値S1−1が格納さ
れ、レジスタ112には(相対)アドレスデータ(aa
a−aaaa)が格納される。
【0198】次いで、アドレスポインタ108のアドレ
スデータが増分器114により1増分されてマルチプレ
クサ116を介して再びアドレスポインタ108へ与え
られる。したがって、タグメモリ102からは次のアド
レス位置に格納されたアドレスデータaabが読出され
る。アドレスポインタ106が再びステートメモリ10
0のアドレスaabを指定し、出力状態値S1−2が読
出される。次のサイクルでは、タグメモリ102からア
ドレスデータaafが読出される。この場合には、ステ
ートメモリ100のアドレスaafから出力状態値S1
−7が読出される。出力状態値S1−3〜S1−7は所
定のしきい値εより小さいため、演算処理が省略され
る。以降同様の動作を繰返すことにより、タグメモリ1
02には、ステートメモリ100における有効出力状態
値を格納するロケーションを示すアドレスデータが格納
されているため、ステートメモリ100からは有効出力
状態値(演算処理を受けるべき出力状態値)のみが読出
される。
【0199】すなわちタグメモリ102には、ステート
メモリから読出されるべき出力状態値格納位置を示すア
ドレスのみが格納されており、タグメモリ102に格納
されていないアドレスデータが示す出力状態値について
の演算処理が省略される。全体としての演算処理数を低
減することができ、演算処理を高速に終了させることが
できる。ステートメモリ100には、非線形変換ユニッ
トから順次与えられる出力状態値が順次格納される。タ
グメモリ102には、有効出力状態値を格納するステー
トメモリ100のロケーションを示すアドレスデータの
みを格納する必要がある。以下タグメモリ102にアド
レスデータを書込むための構成について説明する。
【0200】図27は、ステートメモリおよびタグメモ
リへのデータ書込を行なうための構成を示す図である。
図27において、書込制御系は、内部データバス122
および123上に与えられたデータの一方を選択するマ
ルチプレクサ(MUX)124と、所定のしきい値ε
(si)を格納するレジスタファイル120と、マルチ
プレクサ124から与えられた出力状態値をその一方入
力aに受け、レジスタファイル120から読出されたし
きい値ε(si)をその他方入力(b)に受ける比較器
121を含む。内部データバス122には、一般の数値
データが伝達され、内部データバス123に、環状通信
経路を介して非線形変換処理を受けた出力状態値が伝達
される。マルチプレクサ124は、出力状態値更新時に
は内部データバス123上に伝達された数値データを選
択する状態に設定される(図4に示す命令発行/実行部
20aの制御の下に行なわれる)。比較器121は、入
力aに与えられた数値データが入力bに与えられた数値
データ(しきい値ε(si))よりも大きいときに活性
化信号を発生する。
【0201】ステートメモリ100のアドレスポインタ
106へは、増分器115を介してアドレスデータが与
えられる。タグメモリ102に対するアドレスポインタ
108へは、増分器115の出力がマルチプレクサ11
6を介して与えられる。初期設定時にはレジスタファイ
ル104から読出されたアドレスデータがマルチプレク
サ116を介してアドレスポインタ108へ与えられ
る。増分器115は、比較器121の出力信号が活性状
態のときにアドレスポインタ108から与えられたアド
レスを1増分する。この増分器115は、図26に示す
増分器114と同じであってもよいが、この増分器11
5は、比較器121の出力信号が非活性状態のときには
その増分動作が禁止され、アドレスポインタ108から
与えられたアドレスを増分することなくマルチプレクサ
116を介して再びアドレスポインタ108へ与える。
【0202】書込制御回路125は、アドレスポインタ
106が発生するアドレスデータが所定値に到達したと
き(1つの層についての処理が完了したとき)、アドレ
スポインタ108が出力するアドレスデータに1加算し
てレジスタファイル104の所定のレジスタに加算後の
アドレスを書込む。これによりレジスタファイル104
にはタグメモリ102における各層に割当てられたアド
レス領域の先頭アドレスが格納される。次に動作につい
て説明する。
【0203】まずアドレスポインタ106および108
が初期値にセットされる。この初期値設定時において
は、アドレスポインタ108の生成するアドレスデータ
が書込制御回路125の制御の下にレジスタファイル1
04の所定のレジスタに格納される(逆にレジスタファ
イル104から初期アドレスがポインタ108にセット
されてもよい)。図27においては、レジスタファイル
104において、タグメモリ102の初期アドレスaa
aaが格納された状態を示す。
【0204】マルチプレクサ124から出力状態値が与
えられると、ステートメモリ100は、アドレスポイン
タ106が生成するアドレスに対応する位置にこの出力
状態値を格納する。このアドレスポインタ106が生成
するアドレスは、ステートメモリ100へのデータ格納
後増分器122により1増分されて再びアドレスポイン
タ106へ与えられる。またアドレスポインタ106が
生成するアドレスデータはタグメモリ102へ与えら
れ、アドレスポインタ108が指定するアドレス位置に
格納される。この格納動作と並行して、比較器121が
比較動作を行なう。マルチプレクサ124から与えられ
た出力状態値が所定のしきい値ε(si)よりも大きい
場合には、増分器115はアドレスポインタ108の生
成するアドレスを1増分して再びアドレスポインタ10
8へ与える。マルチプレクサ124が出力する出力状態
値が所定のしきい値ε(si)よりも小さい場合には、
比較器121から出力される信号は非活性状態であり、
増分器115は、アドレスポインタ108が生成するア
ドレスを増分することなく再びアドレスポインタ108
へ伝達する。したがって、タグメモリ102において
は、比較器121の出力信号が非活性状態の場合には、
同じアドレス位置が指定されてアドレスポインタ106
が生成するアドレスデータを重ね書きすることになる。
この動作をアドレスポインタ106が生成するアドレス
が所定のアドレスに到達するまで繰返し実行する。ステ
ートメモリ100においては、マルチプレクサ124か
ら与えられた出力状態値が順次格納される。タグメモリ
102においては、マルチプレクサ124から与えられ
る出力状態値がしきい値ε(si)よりも小さい場合に
は、対応のアドレスデータは重ね書き処理のために消去
されて新しいアドレスデータで書換えられる。したがっ
て、タグメモリ102においては、しきい値ε(si)
よりも大きい値を有する有効出力状態値に関連するアド
レスデータのみが格納される。アドレスポインタ106
が生成するアドレスが所定のアドレスに到達したときに
は、1つの層のニューロンの出力状態値が全て求められ
る。このときには、書込制御回路125は、増分器11
5が出力するアドレスデータをレジスタファイル104
の対応のレジスタに格納する。これにより、レジスタフ
ァイル104には、タグメモリ102における各層の最
初の有効出力状態値に関連するアドレスデータが格納さ
れる。書込制御回路125は、アドレスポインタ106
およびアドレスポインタ108の初期アドレスの設定を
行なうように構成されてもよい。
【0205】なお、図26および図27に示す構成にお
いては、適当な位置にデータを一時的に格納するラッチ
レジスタを設けることによりパイプライン的に処理を実
行することができる。すなわち、図26に示すデータ読
出動作においては、タグメモリからのアドレスデータの
読出、ステートメモリからの出力状態値データの読出、
および演算ユニットへの出力状態値およびアドレスデー
タの転送をパイプライン的に実行することができ、タグ
メモリからのアドレスデータの読出と並行して演算ユニ
ットへ出力状態値データを転送することができ、高速で
処理を行なうことができる。また図27に示す構成にお
いては、ステートメモリ100への出力状態値の格納、
タグメモリ102へのアドレスデータの書込、および比
較器出力によるアドレスの更新をパイプライン的に処理
することにより、ステートメモリ100への数値データ
の書込とタグメモリ102へのアドレスデータの書込を
並行に実行することができ、高速でデータ書込を行なう
ことができる。
【0206】[第2の演算省略方式]図28は、第2の
演算省略方式を実現するための概念的構成を示す図であ
る。図28においては、ローカルメモリ11に、有効誤
差を格納した状態を示す。シナプス荷重値修正動作時に
おいては、有効誤差が必要となる(ΔWij=α・ΔW
ij(t−1)+η・δi・Sjの式を参照)。シナプ
ス荷重値修正量ΔWijは演算ユニットそれぞれにおい
て計算される。またこのシナプス荷重値修正量ΔWij
を用いてシナプス荷重Wijの修正が各演算ユニットに
おいて実行される。各ニューロンユニットに関連する有
効誤差がローカルメモリ11の各ニューロンに関連する
アドレス位置に格納される。ローカルメモリ11のアド
レスの最下位ビットLSBが“0”の位置に有効誤差デ
ータが格納され、最下位ビットLSBが“1”の位置に
次に実行されるべき有効誤差を格納するアドレス位置を
示すアドレスデータが格納される。ニューロンを識別す
るためのアドレス(たとえばaaa)は、したがって対
応の有効誤差と次に実行されるべき有効誤差の格納位置
を示すアドレスデータとを指定する。有効誤差データと
アドレスデータの識別はこのローカルメモリ11の最下
位ビットLSBの値により区別される。この1つのメモ
リ内の規則的な位置に演算処理に用いられる数値データ
または数値データのアドレスを示すアドレスデータを格
納することにより、図20および図27に示すようなス
テートメモリおよびタグメモリを1つのメモリで実現す
ることができ、回路構成を簡略化することができるとと
もに、メモリ占有面積を低減することができる。
【0207】図29は、有効誤差データを読出すための
回路構成を概略的に示す図である。図29において、デ
ータ読出制御系は、ローカルメモリ11の最下位アドレ
スビットLSBを発生するLSB発生回路139と、ニ
ューロン識別用アドレス(たとえばaaa)を発生する
アドレスポインタ138と、LSB発生回路139の発
生するビットをラッチイネーブル信号LEAとして受け
てローカルメモリ11から読出された数値データをラッ
チし保持するアドレスラッチレジスタ130と、LSB
発生回路139の発生するアドレスビットをインバータ
133を介してラッチイネーブル信号LEDとして受け
てローカルメモリ11から読出された数値データをラッ
チするデータラッチレジスタ132を含む。アドレスポ
インタ138へは、セレクタ136を介してアドレスラ
ッチレジスタ130に格納されたアドレスデータまたは
レジスタファイル134から読出されたアドレスデータ
が与えられる。アドレスラッチレジスタ130は、LS
B発生回路139が発生するアドレスビットが“1”の
ときに、ローカルメモリ11から読出された数値データ
をラッチする。ローカルメモリ11には、最下位ビット
LSBが“1”の奇数アドレスには次にアクセスされる
べきロケーションを示すアドレスデータが格納されてお
り、したがってアドレスラッチレジスタ130は、常に
次にアクセスされるべきロケーションを示すアドレスデ
ータを格納する。データラッチレジスタ132は、ラッ
チイネーブル信号LEDが“1”のときに与えられた数
値データをラッチし保持する。ラッチイネーブル信号L
EDが“1”となるのは、LSB発生回路139が発生
するアドレスビットが“0”のときである。すなわち、
ローカルメモリ11の最下位アドレスビットが“0”の
偶数アドレスには有効誤差データが格納されており、デ
ータラッチレジスタ132には、このローカルメモリ1
1から読出された有効誤差データがラッチされる。アド
レスポインタ138が発生するアドレスデータおよびL
SB発生回路139が発生するアドレスビットがローカ
ルメモリ11に対するアドレスデータとして与えられ
る。次に動作について説明する。
【0208】アドレスポインタ138に初期アドレスを
セットする。これはレジスタファイル134からアドレ
スデータSSSを読出してセレクタ136を介してアド
レスポインタ138へ与えることにより実現される。初
期状態において、ローカルメモリ11のアドレスSSS
1には最初にアクセスされるべきロケーションを示すア
ドレスaaaが格納されており、LSB発生回路139
は、まず最初に“1”のアドレスビットを発生する。こ
れにより、アドレスSSS1のアドレスデータaaaが
読出され、アドレスラッチレジスタ130がこれをラッ
チする(ラッチイネーブル信号ADAは活性状態にあ
る)。ついでセレクタ136がアドレスラッチレジスタ
130の保持するアドレスを選択してアドレスポインタ
138へ与える。このときLSB発生回路139が発生
するアドレスビットは“0”とされる。アドレスaaa
に格納された有効誤差データδi+nが読出される。イ
ンバータ133から出力されるラッチイネーブル信号L
EDが活性状態となり、データラッチレジスタ132
は、このローカルメモリ11から読出された有効誤差デ
ータを保持する。このデータラッチレジスタ132に格
納された有効誤差データは関連の演算ユニット内の演算
器へ与えられ、シナプス荷重修正量ΔWij算出のため
に用いられる。
【0209】次いでLSB発生回路139が発生するア
ドレスビットを“1”とし、アドレスaaa1から次に
アクセスされるべきロケーションを示すアドレスデータ
cccを読出す。このローカルメモリ11から読出され
たアドレスデータcccはアドレスラッチレジスタ13
0に格納される(ラッチイネーブル信号LEAは活性状
態)。以下この動作を所定のアドレスに到達するまで繰
返し実行する。
【0210】LSB発生回路139の構成としては、ク
ロック信号が与えられるごとにその出力データ値が反転
するT型フリップフロップなどを利用することができ
る。
【0211】また、規定のアドレスに到達したか否か、
すなわち1つの層における演算処理されるべき有効誤差
データが全て読出された否かの識別は、その層における
ニューロンを指定するアドレスの最大値(ddd)とア
ドレスラッチレジスタ130に格納されたアドレスの大
小を比較することにより識別することができる。または
レジスタファイル134に格納された層識別アドレス
(SSS2)とアドレスラッチレジスタ130に格納さ
れたアドレスのデータの大小を比較することにより1つ
の層におけるニューロン全ての処理が完了したか否かは
識別することができる。
【0212】ローカルメモリ11への有効誤差データの
格納は、たとえば以下のようにして行なわれる。有効誤
差δiは、ei・(d(Si)/dui)に従って算出
される。この算出動作は制御ユニット内において実行さ
れる。
【0213】誤差eiは、ニューロンiが出力層でない
場合には、先に求められた有効誤差δkを用いてΣWk
i・δkにより算出される。誤差eiは、制御ユニット
から各演算ユニットへ有効誤差を順次伝播させることに
より膜電位算出と同様にして求めることができる。この
後、再び制御ユニット内で有効誤差が求められる。この
有効誤差を求めるとき、制御ユニット内においてしきい
値との比較動作が行なわれ、演算処理すべきか否かの判
別が行なわれる。制御ユニット内において、1つの層に
ついてのニューロンの有効誤差が求められると、演算処
理する必要のないニューロンが識別され、演算処理すべ
き有効誤差を求めるニューロンのアドレスがたとえばレ
ジスタに格納される。このレジスタに格納されたアドレ
スを参照して、有効誤差データそれぞれに対してリンク
されるべきアドレスを決定する。これは各ニューロンを
識別するアドレスとレジスタに格納されたアドレスの大
小比較を行ない、レジスタに格納された1つのアドレス
にニューロン識別アドレスが到達するまで各有効誤差デ
ータにこのレジスタの特定のアドレスをリンクさせる。
ニューロン識別アドレスがレジスタに格納されたこの特
定のアドレスに等しくなったときは、レジスタのアドレ
スを更新し、同じ動作を繰返す。これにより演算ユニッ
トそれぞれに対し有効誤差データとそれにリンクしてア
ドレスデータを伝達してローカルメモリ内に格納するこ
とができる。
【0214】なお図28および図29に示す構成におい
ては、偶数アドレス(最下位アドレスビットが“0”)
の位置(ロケーション)に有効誤差データが格納され、
奇数アドレス位置に次にアクセスされるべきロケーショ
ンを示すジャンプ先アドレスが格納されている。最下位
アドレスビットLSBを用いずに、最上位アドレスビッ
トMSBが用いられてもよい。またローカルメモリ11
に格納されるデータとしては、有効誤差データでなくて
もよい。
【0215】[第3の演算処理省略方式]図30は、こ
の発明に従う第3の演算処理省略方式の概念を示す。図
30においては、シナプス荷重修正データΔWijが一
例として示される。図30の(a)に示すように、演算
処理を省略することのできるシナプス荷重修正データ
(ΔWi1、ΔWi2、およびΔWi3)はメモリ(ロ
ーカルメモリ)内に格納される。別に設けられたメモリ
領域(図30(a)には示さず)の格納アドレスに従っ
て演算処理の省略が行なわれる(アドレス0からアドレ
ス4へのジャンプ)。第3の演算省略方式の構成におい
ては、図30の(b)に示すょうに、このシナプス荷重
修正データ格納領域に、次に演算処理されるべきシナプ
ス荷重修正データ格納位置を示すアドレスデータを格納
する。メモリから読出された数値データがアドレスデー
タであるか演算処理されるべきデータであるかを識別し
て、以後の処理手順を変えて、演算を省略して次のアド
レス位置へ飛越す。この図30(b)に示す構成の場
合、メモリ内には必要な情報のみが保持されるため(ジ
ャンプ先アドレスを格納するためのメモリ領域が別に必
要とされない)、メモリ空間を節約することができる。
以下このようなメモリから読出された数値データの内容
に従って処理手順を変更する方式について、シナプス荷
重修正データを一例として説明する。
【0216】図31は、第3の演算省略方式に従うシナ
プス荷重値修正のための回路構成を概略的に示す図であ
る。図31において、ローカルメモリ11には、偶数ア
ドレスのエントリにシナプス荷重デーWij(Wi0〜
Win)が格納され、奇数アドレスのエントリにはシナ
プス荷重修正データΔWij(ΔWi0〜ΔWin)が
格納される。ここで、奇数アドレスはアドレスの最下位
ビットLSBが“1”のアドレスを示し、偶数アドレス
はアドレスの最下位ビットLSBが“0”のアドレスを
示す。ローカルメモリ11の最下位アドレスビットLS
Bを除く上位アドレスが結合先ニューロンを識別する。
シナプス荷重修正データΔWijが所定のしきい値εΔ
Wよりも小さい場合には、そのロケーションに次にアク
セスされるべきアドレス位置(ニューロン識別アドレ
ス)が格納される。
【0217】このローカルメモリ11の奇数アドレスに
格納された数値データが次にアクセスされるべきニュー
ロン識別アドレス(以下、ジャンプ先アドレスと称す)
であるのか、有効シナプス荷重修正データであるのかの
識別は、このローカルメモリ11の奇数アドレス領域に
格納されたデータの最下位ビットを用いて行なう。ロー
カルメモリ11の奇数アドレスに格納されたデータの最
下位ビットLSBが“1”の場合には、そこに格納され
た数値データはジャンプ先アドレスデータであり、最下
位ビットLSBが“0”の場合には、シナプス荷重修正
データである。このローカルメモリ11に格納された数
値データの数値、すなわち奇数アドレスに格納されたデ
ータの最下位ビットの値に従って、そのデータの読出し
後の処理手順を変更する。
【0218】シナプス荷重変更処理系は、ローカルメモ
リ11に対する上位アドレスを発生するアドレスポイン
タ150と、ローカルメモリ11の奇数アドレスおよび
偶数アドレスを示す最下位ビットLSBを発生するLS
B発生回路155とを含む。アドレスポインタ150が
生成するアドレスおよびLSB発生回路155が発生す
るアドレスビットをそれぞれ上位アドレスおよび最下位
アドレスビットとしてローカルメモリ11に対するアド
レス指定が行なわれ、データの読出しが行なわれる。
【0219】変更処理系は、さらにローカルメモリ11
から読出されたデータをLSB発生回路155が発生す
るアドレスビットの値に従って格納するレジスタ16
0、162および164を含む。レジスタ160は、L
SB発生回路155が発生するアドレスビットが“1”
のときにローカルメモリ11から読出された数値データ
を格納する。このレジスタ160は、ローカルメモリ1
1から読出された数値データの最下位ビットLSBを無
視して(切り捨てて)格納する。たとえばローカルメモ
リ11から読出される数値データが10ビットの場合
は、レジスタ160は、その上位9ビットのみを格納す
る。レジスタ162は、LSB発生回路155が発生す
るアドレスビットが“1”のときに、ローカルメモリ1
1から読出されたデータを格納する。レジスタ162
は、その最下位ビットLSBを“0”に強制的に設定す
る。レジスタ164は、LSB発生回路155が発生す
るアドレスビットが“0”のときに、ローカルメモリ1
1から読出されたデータを格納する。したがって、レジ
スタ160および162には、ローカルメモリ11の奇
数アドレスに格納された数値データすなわちジャンプ先
アドレスまたはシナプス荷重修正データが格納される。
レジスタ164には、ローカルメモリ11の偶数アドレ
スに格納された数値データ、すなわちシナプス荷重デー
タが格納される。
【0220】演算処理系は、レジスタ162に格納され
た数値データ(シナプス荷重修正データΔWij)と固
定値“0”の一方をローカルメモリ11から読出された
数値データの最下位ビットLSBに従って通過させるマ
ルチプレクサ168と、マルチプレクサ168が通過さ
せた数値データとレジスタ164から読出された数値デ
ータ(シナプス荷重データWij)を加算する加算器1
70を含む。加算器170の演算結果は、ローカルメモ
リ11の元のアドレス位置に格納される。たとえば、ロ
ーカルメモリ11のアドレスaaa0からシナプス荷重
データWi0が読出されたとき、加算器170の演算結
果は再びこのアドレスaaa0に格納される。
【0221】アドレス変更系は、アドレスポインタ15
0が生成するアドレスを1増分する増分器152と、ロ
ーカルメモリ11の奇数アドレスから読出された数値デ
ータの最下位ビットLSBに従って増分器152の出力
またはレジスタ160の格納データを通過させるマルチ
プレクサ153と、マルチプレクサ153の出力とレジ
スタファイル151から読出されたアドレスの一方を通
過させるマルチプレクサ154を含む。マルチプレクサ
154の出力はアドレスポインタ150へ与えられる。
マルチプレクサ153は、ローカルメモリ11の奇数ア
ドレスから読出された数値データの最下位ビットLSB
が“0”のときには増分器152の出力を選択し、この
最下位ビットLSBが“1”のときにはレジスタ160
に格納された数値データ(最下位ビットを除く)を通過
させる。レジスタ160には、ローカルメモリ11の奇
数アドレスから読出された数値データがジャンプ先アド
レスの場合には、このジャンプ先アドレス(ローカルメ
モリ11の最下位アドレスビットを除く上位ビットアド
レス)が格納される。したがって、マルチプレクサ15
3は、ローカルメモリ11の奇数アドレスから読出され
た数値データがシナプス荷重修正データΔWijの場合
には、増分器152の出力を選択し、この数値データが
ジャンプ先アドレスを示す場合には、マルチプレクサ1
53は、レジスタ160の格納するデータを選択する。
次に動作について説明する。
【0222】(i) まずアドレスポインタ150に初
期アドレスをセットする。この初期アドレスのセット
は、レジスタファイル151から先頭アドレスを読出
し、マルチプレクサ154を介してアドレスポインタ1
50へ与えることにより行なわれる。
【0223】(ii) LSB発生回路155が発生す
るアドレスビットを“0”に設定し、アドレスポインタ
150が生成するアドレスデータとともにローカルメモ
リ11へ与える。これにより、ローカルメモリ11から
は、最初のシナプス荷重データΔWi0(アドレスポイ
ンタ150に初期設定されたアドレスがaaaと仮定す
る)が、レジスタ160、162および164へ与えら
れる。LSB発生回路155が発生するアドレスビット
の値は“0”であり、レジスタ164がこのローカルメ
モリ11から読出された数値データ(シナプス荷重修正
データ)を格納する。
【0224】(iii) アドレスポインタ150が発
生するアドレスデータをそのままとし、LSB発生回路
155が発生するアドレスビットを“1”とする。これ
によりアドレスaaa1からシナプス荷重修正データΔ
Wi0が読出される。この読出されたシナプス荷重修正
データΔWi0は、LSB発生回路155が発生するア
ドレスビットが“1”であるため、レジスタ160およ
び162に格納される。マルチプレクサ168は、この
ローカルメモリ11から読出されたシナプス荷重修正デ
ータΔWi0の最下位ビットLSBが“0”であるた
め、レジスタ162に格納されたシナプス荷重修正デー
タΔWi0を選択して加算器170へ与える。加算器1
70の他方入力へはレジスタ164の格納されたシナプ
ス荷重データΔWijが格納されている。したがって、
加算器170からは、新たなシナプス荷重値Wij+Δ
Wijが生成される。
【0225】(iv) この加算器170による加算動
作と並行して、LSB発生回路155が発生するアドレ
スビットを“0”とし、この加算器170の出力する加
算結果データWij+ΔWijをローカルメモリ11の
対応のアドレス位置に書込む。これにより、シナプス荷
重値Wi0がWi0+ΔWi0に修正される。
【0226】(v) 一方、アドレス更新部において
は、マルチプレクサ168の選択動作と並行して、マル
チプレクサ153が増分器152の出力を選択してマル
チプレクサ154へ与える。アドレスポインタ150
は、更新されたシナプス荷重データのローカルメモリ1
1への書込み完了後このマルチプレクサ154から新た
に与えられたアドレスを取込み、次のアクセスすべき位
置を示すアドレスを生成する。LSB発生回路155
は、シナプス荷重データ書込時にその発生されたアドレ
スビットを“0”としている。したがって、次いでロー
カルメモリ11からは次のシナプス荷重データが読出さ
れてレジスタ164に格納される。上述の動作を繰返
し、ローカルメモリ11の奇数アドレスから読出された
データがジャンプ先アドレスの場合には、以下の動作が
実行される。
【0227】ローカルメモリ11の奇数アドレスから数
値データが読出された場合、この読出された数値データ
はレジスタ160および162に格納される。この読出
された数値データすなわちジャンプ先アドレスの最下位
ビットLSBは“1”であり、マルチプレクサ168は
定数“0”を選択して加算器170の一方入力へ与え
る。加算器170の他方入力へはレジスタ164に格納
されたシナプス荷重データWijが与えられている。し
たがって、加算器170からは演算結果Wij+“0”
が出力される。すなわちシナプス荷重修正データΔWi
jが無視された状態となる。この加算回路170の演算
結果は、先の動作と同様にして、ローカルメモリ11の
元のアドレス位置に格納される。
【0228】アドレス更新部においては、マルチプレク
サ153がレジスタ160に格納されたジャンプ先アド
レスを選択する。アドレスポインタ150が生成するア
ドレスは、ローカルメモリ11へのシナプス荷重データ
書込後このマルチプレクサ154から与えられたアドレ
スに更新される。したがって、ローカルメモリ11の次
にアドレス指定されるロケーションは、レジスタ160
に格納されたジャンプ先アドレスが指定するロケーショ
ンとなる。上述の動作を必要なシナプス荷重データが全
て読出されて処理されるまで繰返し実行する。
【0229】上述のようにローカルメモリ11から読出
された数値データの数値に従って以後の処理手順を変更
することにより、不必要な演算処理を省略し、必要な数
値データすなわち修正されるべきシナプス荷重値のみに
所定の演算処理を行なうことができる。ジャンプ先アド
レスがリンクして格納されたシナプス荷重値に対する加
算演算は実行されるが、アドレス変更手順が変更される
ため、このようなシナプス荷重データについても、関連
のシナプス荷重変更データが読出された後の処理手順が
変更されている。
【0230】なおこの図31に示すレジスタ群および加
算器の接続形態は、図2に示すシーケンサコントローラ
25の制御の下に実現され、また各回路の動作タイミン
グもシーケンスコントローラ25が設定する。なお、レ
ジスタ160、162および164は、ローカルメモリ
11から数値データが読出されたときにそのLSB発生
回路155の発生するアドレスビット値に従ってラッチ
動作を実行しており、ローカルメモリ11へのデータ書
込時にはラッチ動作は行なっていない。またアドレスポ
インタ150のアドレスの更新タイミングは、加算器1
70の演算結果データがローカルメモリ11に格納され
た後である。
【0231】またレジスタ160および162は、1つ
のレジスタのみを用いて構成してもよい。ジャンプ先ア
ドレスが読出された場合には、マルチプレクサ168は
定数“0”を選択し、またマルチプレクサ153がジャ
ンプ先アドレスを選択するため、このレジスタ160お
よび162を1つのレジスタで構成しても確実に不要な
演算処理を省略することができる。
【0232】また、適当な箇所にラッチ用レジスタを設
けることにより、アドレスの設定、数値データの読出
し、数値の演算、演算結果の書込みおよびアドレスの更
新をパイプライン的に実行することができる。
【0233】上述のように、演算処理すべきデータと、
次にアクセスされるべきロケーションを示すアドレスと
を共通のアドレス領域に格納するように構成し、この一
方のみをメモリ内に格納することにより、処理に必要な
情報のみをメモリ内に保持することができ、メモリ空間
を節約することができる。またこのメモリから読出され
た数値データの数値すなわち図31に示す構成において
は、数値データの最下位ビットの値に従って以後の処理
手順を変更することにより、演算処理数を省略すること
ができ、高速で全体の処理を完了させることができる。
【0234】なお上述の説明では、シナプス荷重修正処
理時におけるジャンプ先アドレスの更新について説明し
ている。しかしながら、数値データ格納領域において、
この数値データが特定の条件を満足するときに、次に実
行されるべき処理内容を規定するデータを数値データ格
納領域の数値データに代えて格納することにより、必要
な処理手順のみを実行して高速で処理を行なうことがで
きる。処理内容を示す数値データであるか演算処理され
るべき数値データであるかの識別はその読出された数値
データの数値を識別することにより行なわれ、その識別
結果に従って以後の処理手順の調整が行なわれればよ
い。この機能は図3に示すシーケンサコントローラの各
機能ブロックに対応する。
【0235】[ローカルメモリへのアドレスデータの書
込]上述の演算省略手法を正しく実行するためには、省
略されるべき演算処理が正しくスキップされるように、
一連の処理(繰返し学習処理など)が繰返されるごと
に、次にアクセスされるべきアドレス(ジャンプ先アド
レス)を正確に更新する必要がある。このジャンプ先ア
ドレスの更新は、本来のシナプス荷重修正処理と並行し
て実行することにより、演算処理削減の効果が十分に得
られる。以下この構成について説明する。まず言葉の定
義を行なう。図32に示すようにローカルメモリ11に
は、複数のニューロンユニットについてのシナプス荷重
値およびシナプス荷重修正データが格納される。図32
においては、ローカルメモリ11に、ニューロンN♯
a、N♯bおよびN♯cのシナプス荷重およびシナプス
荷重修正データを格納する状態を概略的に示す。ニュー
ロンN♯a、N♯b、N♯cを識別するために、ローカ
ルメモリ11においては、ニューロンN♯a〜N♯cそ
れぞれに割当てられたアドレス領域の先頭アドレス♯
a、♯bおよび♯cが必要とされる。ニューロンN♯
a、N♯bおよびN♯cを識別するためのアドレス♯
a、♯bおよび♯cを以下の説明ではiアドレスと称
す。ニューロンN♯a、N♯bおよびN♯cは、階層型
ニューラルネットワークにおいては、それぞれ別の層の
ニューロンと相互接続されている。各ニューロンに対す
るシナプス荷重およびシナプス荷重修正データがローカ
ルメモリ11に格納される。この相手方のニューロンを
識別するためのアドレス(図32においては、アドレス
0〜n)を以下の説明においてはjアドレスと称す。た
とえば図31に示すローカルメモリ11のアドレス構成
において、たとえばシナプス荷重データWijの添字j
がjアドレスに対応する。iアドレスとjアドレスの和
がアドレスaaa、bbbなどのローカルメモリ11の
絶対アドレスに対応する。
【0236】図33にシナプス荷重修正のためのデータ
書込制御系の構成を示す。この図33に示す構成は各演
算ユニットに設けられる。
【0237】図33において、書込制御系は、ローカル
メモリ11に対するアドレスを発生するアドレスポイン
タ200と、定数データおよび演算処理の進行状況を示
す状態フラグなどを格納するレジスタファイル220
と、演算処理の進行状況に応じたローカルメモリ11へ
のデータの書込みの制御(書込アドレスの更新、ジャン
プ先アドレスの更新、ジャンプ開始アドレスの更新、数
値データの書込み等)を行なうための制御信号を発生す
る状態表現回路210とを含む。
【0238】レジスタファイル220は、1つの処理の
終了を示す限界アドレスADDR、定数“1”、iアド
レス、各種アドレスF、T、S、A、および(A+1)
を格納する。各種アドレスは以下の意味を有する。
【0239】T:ジャンプ先アドレスを示す。このジャ
ンプ先アドレスTは、次に演算処理されるべき数値デー
タの格納位置を示し、ローカルメモリ11から読出され
たアドレスデータ(図31に示すレジスタ160に格納
されたアドレスデータ)に対応する。
【0240】S:ローカルメモリ11における絶対アド
レスを示し、iアドレスとjアドレスの和(i+j)で
表される。jアドレスは、出力状態値Sjとともに外部
から与えられる。
【0241】A:現アドレスを示す。ローカルメモリ1
1において現在アクセスされているアドレスを示す。T
>SのときにはA=S(=i+j)とされ、T≦Sのと
きにはA=Tに設定される。
【0242】F:ジャンプ起点アドレス示す。省略され
るべき演算処理のローカルメモリ11における開始位置
を示す。
【0243】なおこれらのアドレスT、S、AおよびF
は、すべてニューロン識別アドレス(図31において、
たとえばアドレスaaa)を示し、シナプス荷重データ
格納ロケーションおよびシナプス荷重修正データ格納ロ
ケーション両者を指定する。
【0244】各種アドレスT、S、AおよびFの更新、
状態表現回路210が発生するコントロール信号(ステ
ータスフラグ)の更新ならびに所定の演算処理を行なう
ために、演算器202、加算器(ADD)204、およ
び比較器(CMP)206が設けられる。
【0245】演算器202は、前述のシナプス荷重修正
値更新のための演算などを実行する。加算器204は、
ローカルメモリ11の絶対アドレス(i+j)の生成、
シナプス荷重値およびシナプス荷重修正値の更新のため
の加算および後に説明する前アドレスの算出等を実行す
る。
【0246】比較器206は、T>S、|ΔWij|≦
|ε(ΔW)|、およびA>A(t−1)+1の比較演
算を実行する。ε(ΔW)はシナプス荷重修正値ΔWi
jに対するしきい値を示す。A(t−1)は、最も最近
(前のアクセスサイクルで)所定の演算処理を受けたま
たはアクセスされた数値データの格納位置を示す。すな
わち、アドレスA(t−1)は、しきい値ε(ΔW)よ
りも大きいシナプス荷重値修正データが最も最近(前の
アクセスサイクルで)格納されたローカルメモリ11の
アドレスを示す。
【0247】これらの機能ユニットを相互接続して必要
なデータの転送を行なうために、内部データバスINN
0およびINN1が設けられる。図32においては、図
面を簡略化するために、2つの内部データバスINN0
およびINN1を示すが、この内部データバスの数はさ
らに多くてもよい。内部データバスINN0には外部出
力状態値データSjが与えられ、内部データバスINN
1にはこの出力状態値Sjを識別するためのjアドレス
が伝達される。
【0248】状態表現回路210は、比較器206から
の出力信号CMPLA、外部から与えられる信号SJS
ig、ローカルメモリ11から読出された数値データの
最下位ビットLMDLSに従って後に詳細に説明するス
テータスフラグの更新を実行する。信号SJSigは、
活性化時、現在与えられている出力状態値データSjの
jアドレスと1つ前のサイクルに与えられた出力状態値
データSj(t−1)のjアドレスとが連続していない
ことを示す。すなわち、信号SJSigは、出力状態値
Sjについてスキップ(演算省略)が行なわれたことを
示す。この信号SJSigは、図27に示す構成を利用
して生成することができる。
【0249】すなわち、図34に示すように、ステート
メモリ100への出力状態値データSj格納時におい
て、ステートメモリ100の数値データ格納領域の所定
のビット位置(図34においては最下位ビットLSBの
位置)に比較器121の出力信号を対応の出力状態値デ
ータSjとリンクして書込む。比較器121は、出力状
態値Sjがしきい値ε(ΔW)よりも大きいとき(|S
j|>|ε(ΔW)|のとき)、“0”の出力信号を生
成し、そうでないときには“1”の出力信号を生成す
る。したがって、このステートメモリ100に出力状態
値データSjとリンクして格納されたスキップビットS
Bj(比較器121の出力に対応)が“1”であれば、
その関連の出力状態値データSjは演算処理が省略され
るべきであることを示す。したがってステートメモリ1
00から演算ユニットへ出力状態値Sjを伝達するとき
に、併わせてこの最下位ビットLSBに格納されたスキ
ップビットSBjを演算ユニットへ伝達すれば、信号S
JSigが容易に生成される。スキップビットSBj
は、最下位ビット位置ではなく、最上位ビット位置に格
納されてもよい。
【0250】図35は、図33に示す状態表現回路21
0の構成を示す図である。図35において、状態表現回
路210は、処理情報書込処理操作を規定するために必
要とされる演算処理状態を表現する状態フラグを格納す
るフラグレジスタ214と、このフラグレジスタ214
に格納された状態フラグを更新するための状態フラグ設
定回路212とを含む。状態フラグ設定回路212は、
図33に示すローカルメモリ11から読出される数値デ
ータの最下位ビットLMDLS、図33に示す比較器2
06の出力信号CMPLAおよび図33に示すスキャン
指示信号SJSigとフラグレジスタ214に格納され
た各状態フラグとを受け、各状態フラグの更新を行なう
状態フラグ設定回路212を含む。状態フラグ設定回路
212は、制御ユニット(図1参照)から与えられるフ
ラグ更新制御信号BOSCntに従って指定された状態
フラグの更新を実行する。制御ユニットからの命令に従
って演算ユニット各々における動作処理ステップが進行
する。制御ユニットから各演算ユニットへ状態フラグ更
新用の制御信号BOSCntを与えることにより、演算
ユニットおける処理ステップ(たとえば外部から与えら
れる出力状態値信号Sjのラッチ、ローカルメモリから
の数値データの読み出し等)に従って対応の状態フラグ
を正確に更新することができる。
【0251】図36は、フラグレジスタに格納される状
態フラグの定義を一覧にして示す図である。以下、順次
各フラグの定義について説明する。
【0252】フラグAS:ローカルメモリ11の現在指
定されているアドレスS(=i+j)がまだジャンプ先
アドレスTに到達していないときに“1”となる。すな
わち、演算処理が省略されるときにはフラグASが
“1”となる。
【0253】フラグFA:最も最近(前のアクセスサイ
クルで)所定の演算処理を受けたまたはアクセスされた
アドレスA(t−1)と現アドレスAの差が1より大き
いときフラグFAは“1”となる。すなわち、フラグF
Aは、ローカルメモリ11のアドレスのスキップがあっ
たこと(演算が省略されたこと)を示す。
【0254】フラグSJ:外部から与えられる出力状態
値データSjのアドレスがジャンプしているときにフラ
グSJが“1”となる。
【0255】フラグDM:フラグDMはローカルメモリ
(LM)から読出された数値データの最下位ビットの値
を示す。すなわち、フラグDMは、読出された数値デー
タが次の処理内容を示すアドレスデータであるのか演算
処理されるべき数値データであるのかを示す。
【0256】フラグW:フラグWは、シナプス荷重修正
値ΔWijが所定のしきい値ε(ΔW)以下のとき、す
なわち|ΔWij|≦|ε(ΔW)|ときに“1”とな
る。すなわち、フラグWは、シナプス荷重修正データΔ
Wijに代えて次の処理内容を指定するアドレスデータ
をローカルメモリへ書込むべきことを示す。
【0257】フラグJ:フラグJは、1演算処理(最も
最近アクセスされた)サイクル前のフラグWの値W(t
−1)に等しい。
【0258】フラグSTOP:1演算処理(最も最近ア
クセスされた)サイクル前のフラグASの値AS(t−
1)に等しい。
【0259】フラグEND:ローカルメモリにアクセス
されるアドレスS(i+j)が所定の限界アドレスAD
DR以上となったときに“1”となる。すなわちフラグ
ENTは全ての処理が終了したことを示す。
【0260】これらの状態フラグの値に従って図33に
示す制御回路222が必要な制御動作を実行する。
【0261】次に、図33および図35を参照してフラ
グ発生/更新手法について説明する。
【0262】フラグAS:内部データバスINN0およ
びINN1に出力状態値データSjおよびjアドレスが
与えられる。レジスタ220に格納されたiアドレスが
読出され、加算器204がiアドレスとjアドレスとを
加算してローカルメモリ11の絶対アドレスS(=i+
j)を生成する。加算器204の出力する絶対アドレス
Sは再びレジスタ220に格納される。次いでレジスタ
220から新たに生成された絶対アドレスSおよび既に
格納されているジャンプ先アドレスTが読出されて比較
器206へ与えられる。この場合、加算器204の出力
が比較器206へ与えられ、レジスタ220への新たに
生成された絶対アドレスSの格納前にレジスタ220か
らジャンプ先アドレスAが読出されて比較器206へ与
えられる構成が用いられてもよい。比較器206の出力
信号CMPLAに従って図35に示す状態フラグ設定回
路がフラグASを新たに生成して状態レジスタ214に
この新たに生成したフラグASを書込む。
【0263】フラグFA:フラグASの値が確定すると
レジスタ220の現アドレスAは、ジャンプ先アドレス
Tまたは絶対アドレスSのいずれかに更新される。次い
でレジスタ220からこの新たに生成された現アドレス
Aおよび既に格納されているアドレスA(t−1)+1
が読出されて比較器206へ与えられる。比較器206
は、このアドレスAおよびA(t−1)+1を比較し、
その比較結果に従って信号CMPLAを発生する。状態
フラグ設定回路212(図35参照)はこの比較器20
6からの出力信号CMPLAに従ってフラグFAの値を
設定し、フラグレジスタ214におけるフラグFAを更
新する。
【0264】フラグSJ:フラグSJは、信号SJSi
gに従って更新される。
【0265】フラグDM:ローカルメモリ11から数値
データが読出されたとき(先の実施例においてはローカ
ルメモリ11の奇数アドレスから読出された数値デー
タ)の最下位ビットLSBの値に従って状態フラグ設定
回路212において更新され、フラグレジスタ214に
おける状態フラグDMが更新される。 フラグW:演算器202によりシナプス荷重修正値ΔW
ijが算出されると、レジスタ(明確には示さず)に格
納されたしきい値ε(ΔW)が読出される。比較器20
6は、この算出されたシナプス荷重修正値ΔWijとし
きい値ε(ΔW)とを比較し、比較結果に従って出力信
号CMPLAを発生する。状態フラグ設定回路212が
この比較器出力信号CMPLAに従ってフラグWを更新
する。
【0266】フラグJ:フラグJは、1演算サイクル前
のフラグが状態フラグ設定回路212により選択されて
フラグJの更新が行なわれる。状態フラグ設定回路21
2の入力部へフラグレジスタ214が出力するフラグを
与えることにより、1つ前の演算処理サイクルのフラグ
値に従って現サイクルのフラグ値の更新を容易に行なう
ことができる。
【0267】フラグSTOP:フラグSTOPは、後に
更新タイミングは詳細に説明するが、1つ前の演算処理
サイクルにおけるフラグASを状態フラグ設定回路21
2が選択してフラグSTOPを更新する。フラグSTO
Pは、その演算処理サイクルにおける演算結果は無視す
べきであり、ローカルメモリの数値データを更新すべき
でないことまたは演算処理すべきでないことを示してい
る。フラグSTOPが“1”のときにはローカルメモリ
11への数値データの書込みおよび数値データの演算処
理は禁止される。
【0268】フラグEND:新たに算出された絶対アド
レスSと限界アドレスADDRがレジスタ220から読
出されて比較器206へ与えられる。比較器206は両
アドレスSおよびADDRを比較し、該比較結果に従っ
て出力信号CMPLAを発生する。状態フラグ設定回路
212は、この信号CMPLAがS=ADDRを示すと
きにはその演算処理サイクル完了後フラグENDを
“1”とする。フラグENDが“1”となると、ローカ
ルメモリ11に格納された有効数値データ(演算処理す
べき数値データであり、シナプス荷重値およびシナプス
荷重修正値)の演算処理が全て終了したことを示す。
【0269】なお、図33においては、マルチプレクサ
208を介してアドレスポインタ200のアドレスが設
定されている。これは後に説明するように、アドレスデ
ータをローカルメモリ11へ書込むときのアドレスは現
アドレスAまたはジャンプ開始アドレスFにより与えら
れる。このアドレスデータを書込むためのアドレスを選
択するためにマルチプレクサ208が設けられる。次に
具体的動作について説明する。
【0270】フラグSTOPは、次に演算処理されるべ
き出力状態値データSjが与えられるときには制御ユニ
ットの制御の下に一旦リセットされる。新たに与えられ
た出力状態値Sjおよびjアドレスに従って絶対アドレ
スSの生成、ジャンプ先アドレスTとの比較演算、フラ
グASの生成を行なう必要があるためである。フラグS
TOPは、リセット状態とされるまで前のサイクルのフ
ラグAS(t−1)を保持する。現サイクルにおいて、
フラグASの値がジャンプ先アドレスTと絶対アドレス
Sの比較により決定されると、応じてフラグSTOPも
決定される。T>Sのときには、新たに与えられた出力
状態値データSjに対する演算処理を行なう必要がな
く、以後の処理は停止される。通常、演算ユニットに出
力状態値Sjを与えられた後にリセット信号が与えられ
る。したがってフラグSTOPは、出力状態値Sjが与
えられたとき、前のサイクルのフラグASを保持してい
る。これにより、フラグSTOP=フラグAS(t−
1)と表現している。
【0271】また、シナプス荷重値修正量ΔWijをロ
ーカルメモリから読出してシナプス荷重値修正量の更新
を行なうときに、シナプス荷重値修正データΔWijに
代えてアドレスデータが読出された場合は、この新たに
読出されたアドレスデータはジャンプ先アドレスTとし
てレジスタ220に格納される。
【0272】フラグWは、条件|ΔWij|≦|ε(Δ
W)|を示し、フラグJは前のサイクルのフラグW、す
なわちシナプス荷重値修正量としきい値との関係を示
す。演算省略を行なうために、|ΔWij|≦|ε(Δ
W)|の場合には、シナプス荷重修正データΔWijに
代えてアドレスデータが書込まれる。2つのフラグJお
よびWの値により、以下に説明するように処理の進行状
態を知ることができる。
【0273】(i) J=W=0 この状態は、図37(a)に示すように、2つの連続す
る演算処理サイクルT1およびT2においてシナプス荷
重修正データΔWが計算され、それらはしきい値ε(Δ
W)よりも大きいことが示されたサイクルである。2つ
の連続する演算サイクルにおいて演算が行なわれる状態
としては以下の状態の組合せが考えられる。
【0274】図38(a)に示すように、サイクルT1
およびT2のjアドレスが連続している場合には、スキ
ップ指示ビットSJが0である。この場合には、アドレ
スデータをローカルメモリに格納する必要はない。した
がって、この場合には、特にジャンプ先アドレスの更新
に関する特別な処理は行なわれない。
【0275】図38(b)に示すように、iアドレスが
連続する場合にはフラグFAが0となる。ローカルメモ
リにおける連続したアドレスのロケーションに格納され
たデータが演算処理されているためである。この場合に
も、ジャンプ先アドレス更新のための処理は何ら行なわ
れない。
【0276】図38(c)に示すように、サイクルT1
において演算処理された数値データと続いてサイクルT
2において演算処理された数値データが格納される現ア
ドレスとの間に1より大きい差がある場合には、フラグ
SJおよびFAはともに1となる。jアドレスもxから
yへと飛んでいる(ローカルメモリの各アドレスは相手
先ニューロンに対応しており、隣接するロケーションは
隣接するjアドレスを有する)。この場合には、アドレ
スA(t−1)の次のアドレスA(t−1)+1に格納
された数値データは演算処理を省略することのできる数
値データである。したがってこのアドレスA(t−1)
+1に現アドレスAを書込む。このとき、アドレスA
(t−1)+1からアドレスA−1のロケーションに現
アドレスAを書込むように構成すれば、図29に示す有
効誤差データ格納時におけるアドレスデータの格納を実
現することができる。
【0277】ここでjアドレスが、連続する2つの演算
処理サイクルにおいてジャンプをしているのは、出力状
態値Sjが先に第1の演算処理方式で示した方式に従っ
て有効出力状態値データのみが演算ユニットへ与えられ
るためである。
【0278】(ii) J=0、W=1 この状態は、図39に示すように前のサイクルT1にお
ける演算処理結果は有効であり、現サイクルT2におけ
る演算処理結果は省略することのできる演算処理結果で
あることを示している。したがって現サイクルにおいて
アクセスされたアドレス位置にアドレスデータを書込む
必要がある。このとき、図38(a)および(b)から
明らかなようにフラグSJおよびFAの一方が“0”の
場合には、現アドレスAがジャンプ開始位置であるた
め、現アドレスAが図33に示すレジスタ220にジャ
ンプ起点アドレスFとして格納される。
【0279】一方、フラグFAおよびSJがともに1の
場合には、図38(c)の類推から、ジャンプ起点アド
レスはアドレスA(t−1)+1である。したがってこ
の場合には、アドレスA(t−1)+1をジャンプ起点
アドレスFとしてレジスタ220に格納する。
【0280】(iii) J=1かつW=0 この場合には、図40に示すように現アドレスAに格納
された数値データは有効数値データであり、その前のサ
イクルT1で演算処理された数値データは省略すること
のできる数値データである。すなわち現アドレスAはア
ドレスジャンプの終了地点を示している。したがって現
アドレスAをジャンプ開始アドレス位置に格納すること
が要求される。すなわちレジスタ220(図33参照)
からジャンプ開始アドレスFを読出し、ローカルメモリ
のジャンプ開始アドレスFに現アドレスAを書込む。こ
のローカルメモリへのジャンプ先アドレスの書込みは、
フラグSJおよびFAの状態にかかわらず実行される。
【0281】(iv) J=W=1 この状態は、図41に示すように、2つの連続するサイ
クルT1およびT2において演算処理された数値データ
はともに省略することのできる数値データ(シナプス荷
重修正データ)であることを示している。すなわちアド
レスジャンプを継続すべきことを示している。したがっ
てアドレスジャンプのためのアドレス更新処理は何ら行
なわれない。
【0282】上述のように、フラグJおよびWの値を見
ることにより、現サイクルにおいてアドレスジャンプが
終了したか否か、アドレスジャンプが開始するのか否か
およびジャンプが継続しているのか、などを判別し、フ
ラグSJおよびFAの値に従ってジャンプ先アドレス、
ジャンプ開始アドレスおよびジャンプ先アドレス格納位
置を正確に識別してローカルメモリに格納することがで
き、有効数値データに対してのみ演算処理を実行するこ
とができる。
【0283】またこの処理では、シナプス荷重修正デー
タΔWの算出結果に従ってジャンプ先アドレスの書込み
が行なわれているため、シナプス荷重修正演算処理とは
並列にジャンプ先アドレスを決定してローカルメモリ内
に書込むことができ、学習の進行とともに増加する無効
数値データを省略して演算を行なうことができ、高速か
つ効率的に処理を実行することができる。
【0284】図42は、図35に示す状態フラグ設定回
路212の具体的構成を示す図である。図42におい
て、状態フラグ設定回路212は、合計10個のセレク
タ251〜260を含む。セレクタ251は、制御信号
BS1に従って比較器の出力信号CMPLAとフラグレ
ジスタ214(図35参照)から与えられる状態フラグ
AS−の一方を選択して現サイクルにおける状態フラグ
ASを生成する。セレクタ252は、制御信号BS2に
従って比較器出力信号CMPLAと状態レジスタに格納
されたフラグFA−の一方を選択して現サイクルのフラ
グFAを生成する。セレクタ253は、制御信号BS3
に従ってローカルメモリから読出された数値データの最
下位ビット値LMDLSと状態レジスタに格納されたフ
ラグDM−の一方を選択して現サイクルにおけるフラグ
DMを生成する。
【0285】セレクタ254は、制御信号BS4に従っ
て比較器出力信号CMPLAとフラグレジスタから出力
される状態フラグW−の一方を選択して現サイクルのフ
ラグWを生成する。
【0286】セレクタ255は、制御信号BS5に従っ
て状態フラグW−とレジスタとフラグレジスタから出力
される状態フラグJ−の一方を選択して現サイクルのフ
ラグJを生成する。セレクタ258は、制御信号BS8
に従ってアドレススキップ指示信号SJSigとフラグ
レジスタから出力された状態フラグSJ−の一方を選択
して現サイクルのフラグSJを生成する。
【0287】フラグSTOPおよびENDには2つのセ
レクタがそれぞれ設けられる。フラグSTOPには2つ
のセレクタ256および259が設けられる。セレクタ
256は、制御信号BS6に従って状態フラグAS−お
よびSTOP−の一方を選択する。セレクタ259は、
制御信号BS9に従って接地電位(“0”)とセレクタ
256の出力信号の一方を選択して現サイクルのフラグ
STOPを生成する。フラグENDに対してはセレクタ
257および260が設けられる。セレクタ257は、
制御信号BS7に従って比較器出力信号CMPLAとフ
ラグレジスタから出力される状態フラグEND−の一方
を選択する。セレクタ260は、制御信号BS10に従
って接地電位(“0”)とセレクタ257の出力信号の
一方を選択して現サイクルのフラグENDを生成する。
セレクタ259および260が設けられているのは、フ
ラグSTOPおよびENDを外部から強制的にリセット
するためである。これらのフラグSTOPおよびEND
を強制的にリセットすることにより得られる利点につい
ては後に詳細に説明する。ここでは、簡単に、制御ユニ
ットが全ての演算ユニットに対し共通の数値データを与
えるときに各演算ユニット全てに対し同期してこの数値
データを通報することができるということのみを述べ
る。
【0288】制御信号BS1〜BS10は制御ユニット
から各演算ユニットに対し共通に与えられる。必要なフ
ラグのみが更新される。図35に示すフラグレジスタ2
14は、全て同じタイミングで与えられたデータをラッ
チする。フラグレジスタの出力信号は制御信号として図
35に示す制御回路へ与えられるとともにこの状態フラ
グ設定回路212へもフィードバックして与えられる。
したがってフラグレジスタを同期的に動作させてもセレ
クタ251〜260を制御信号BS1〜BS10により
選択的に動作させることにより必要な状態フラグのみを
更新することができる。フラグレジスタにおいて特定の
レジスタのみラッチ動作を制御する必要はなく全てのレ
ジスタを同期的に動作させるため、フラグレジスタの動
作制御が容易となる。
【0289】制御信号BS1〜BS10は制御ユニット
から与えられるが、制御ユニットと演算ユニットとの間
の制御信号通報のための信号線の本数はできるだけ少な
くするのが配線占有面積の観点からは好ましい。そこ
で、図43に示すように、状態フラグ設定回路212
に、制御ユニットから通報される複数ビットの制御信号
BOSCntをデコードするデコーダ270を設ける。
図43においては、制御信号BOSCntが3ビットの
制御ビットBOS0〜BOS2を含み、デコーダ270
がこれらの制御ビットBOS0〜BOS2に従って各制
御信号を発生する。図43には、制御ビットBOS0〜
BOS2の各状態に従って更新されるフラグを併わせて
示す。制御ビットBOS0〜BOS2が全て0の場合に
は、デコーダ270はデコード動作を実行しない。した
がって制御信号の組合わせとしては7つの状態が実現さ
れる。この制御ビットBOS0〜BOS2の状態と更新
される状態フラグの対応関係は任意であり、別の組合わ
せが用いられてもよい。
【0290】図43に示す構成においては、制御信号B
OS0〜BOS2が“110”のときには、フラグA
S、FAおよびJが更新される。この場合、制御信号B
S1、BS5が発生されてこれらのフラグの更新が行な
われる。フラグASはT−Sに対応し、フラグFAは、
A−A(t−1)−1に対応する。したがって、この図
43に示すデコーダ270を用いる場合には、セレクタ
251および252へは、別々の比較器の出力信号が与
えられる。比較器を2つ用いれば容易にこの構成は実現
される。1つの比較器を用いる場合には制御信号BOS
Cntのビットの数を増やせばよい。
【0291】図43に示すようにデコーダを用いて制御
ユニットから与えられる制御信号BOSCntをデコー
ドして状態フラグ更新用の制御信号を発生することによ
り、制御ユニットと演算ユニットの間の制御フラグ更新
用の制御信号を通報するための信号線の本数を低減する
ことができ、配線占有面積を低減することができる。
【0292】[加減算/比較複合回路]図44は、加減
算/比較複合回路の構成を示す図である。図44に示す
複合回路は図33に示す加算器204および比較器20
6の機能を実現する。図44において、複合回路は、制
御信号CNTと入力データINaを受けるEXOR回路
280と、EXOR回路280の出力データをその一方
入力aに受け、入力データINbを他方入力bに受ける
演算器282と、制御信号CNTを反転するインバータ
回路284と、インバータ回路284の出力信号と演算
器282の出力信号(符号ビット)Coutを受けるN
OR回路286を含む。演算器282はまた入力aおよ
びbに与えられたデータに対して行なった演算の結果を
示す出力データOUTを生成する。
【0293】制御信号CNTが“0”の場合、EXOR
回路280はバッファ回路として機能する。したがって
EXOR回路280は、入力データINaを反転させず
に通過させる。演算器282は、その制御入力Cinに
与えられる制御信号CNTに従って入力aおよびbに与
えられたデータの加算を行なう。したがってこの場合出
力データOUTとして入力aおよびbに与えられたデー
タの加算結果が出力される。すなわちOUT=a+bと
なる。制御信号CNTが“0”の場合には、インバータ
回路284の出力が“1”であり、NOR回路286の
出力信号LAGaは“0”である。比較動作は行なう必
要がないため、この出力信号LAGaは無視される。
【0294】制御信号CNTが“1”の場合には、EX
OR回路280はインバータ回路として機能し、入力デ
ータINaを反転する。演算器282は、この制御信号
CNTに従って加算を行なう。したがって、演算器28
2の出力信号OUTはb−aとなる。そのときの符号ビ
ットCoutがNOR回路286へ与えられる。インバ
ータ回路284の出力信号は“0”であり、NOR回路
286はインバータとして機能する。演算器282から
出力される符号ビットCoutは出力OUTがb−a<
0の場合には0となり、b−a≧0の場合には1とな
る。したがって、NOR回路286の出力信号LAGa
は、a>bのときに“1”となる。
【0295】なお、EXOR回路280をインバータ回
路として機能させ、演算器282において演算を行なう
場合、2の補数表示の数値データが用いられる場合には
演算器282において、制御信号CNTに従って入力a
に与えられた数値に対し“1”が加算される。なお、2
の補数表示の数値データの場合、符号ビットCoutは
b−a<0のときに“1”となる。この場合は制御信号
CNTと符号ビットCoutを受けるAND回路を用い
て比較結果信号LAGaを発生する構成を利用すればよ
い。
【0296】図44に示す複合回路を用いることによ
り、1つの演算器を用いて加算器/比較器/減算器と3
つの機能を選択的に実現することができ、回路規模を低
減することができる。
【0297】[書込制御系の変更例]図45は演算ユニ
ットにおける数値データ書込制御系の変更例を示す図で
ある。図45において、書込制御系は、フラグレジスタ
214から出力されるフラグSTOPおよびENDを受
けるNOR回路300を含む。NOR回路300から、
ローカルメモリへのデータ書込みを許可するローカルメ
モリライトイネーブル信号およびレジスタファイルへの
数値データの書込みを許可するレジスタファイルライト
イネーブル信号が発生される。このNOR回路300か
ら発生されるイネーブル信号は図33に示す制御回路2
22へ与えられる。NOR回路300の出力信号が
“1”となったときにローカルメモリおよびレジスタフ
ァイルへの数値データの書込みが許可される。NOR回
路300の出力信号が“1”となるのは、フラグSTO
PおよびENDがともに“0”のときである。すなわち
演算ユニットおいて数値演算処理が実行されるときであ
る。フラグSTOPおよびENDの少なくとも一方が
“1”の場合には、この演算ユニットにおいては、数値
演算処理は中断すべき(省略すべき)であるか全て完了
している状態であり、この状態においてはローカルメモ
リおよびレジスタファイルへの数値データの書込みは禁
止される。このNOR回路300を用いて数値データの
書込みを許可/禁止する構成は以下の利点を与える。
【0298】先に述べた演算処理省略方式は演算ユニッ
トが1つの場合でも適用することができる。演算ユニッ
ト内のローカルメモリにおけるiアドレスのアドレス値
を複数個利用できるようにすれば、1つの演算ユニット
は複数のニューロンを表現することができる。しかしな
がら、大規模ニューラルネットワークを構成するために
は、また並列処理による処理の効率化を図るために、本
発明に従う数値演算処理装置は複数の演算ユニットを備
える。これらの演算ユニットが1つの制御ユニットの制
御の下に並列に動作する。複数の演算ユニットへは、制
御ユニットから共通に制御信号および命令が与えられる
(SIMD方式に従うため)。
【0299】シナプス荷重値の修正時には複数の演算ユ
ニットに共通に数値データSjおよびj(jアドレス)
が与えられる。演算ユニットは個々の内部状態に従って
与えられた数値データSjおよびjに対する演算処理の
省略または実行をする。このとき制御ユニットからは複
数の演算ユニットに対し共通に、演算処理遂行のための
命令/制御信号が与えられる。したがって、演算処理を
省略すべき演算ユニットにおいては、不要な制御信号が
発生されるか(フラグ更新制御信号BOSCntは全演
算ユニットに共通に与えられる)、ローカルメモリおよ
びレジスタファイルに格納された数値データの誤った更
新が行なわれる可能性がある。
【0300】しかしながら、図45に示す構成において
は、フラグSTOPおよびENDの少なくとも一方が
“1”の場合には、NOR回路300からレジスタファ
イル(図33に示すレジスタファイルは220)および
ローカルメモリ11への数値のデータの書込みが禁止さ
れるため、全ての演算ユニットに対し共通に与えられて
いる各種制御信号/命令にかかわらず、処理中断/完了
状態の演算ユニット内においては処理操作が一時的に停
止し、フラグSTOPまたはENDのリセット信号が与
えられるまで待機状態となる。
【0301】上述のように、演算処理を省略すべき演算
ユニットを待機状態とすると、以下に述べる構成と組合
わせて利用することにより全ての演算ユニットの演算処
理サイクルの開始および終了を同期させることができ、
全ての演算ユニットにおける処理対象となるアドレスが
外部(制御ユニット)から与えられるjアドレスに従っ
て同期して変化し、処理対象アドレスの演算ユニット間
の不一致の発生を防止することができ、全ての演算ユニ
ットを並列態様で動作させることができる。
【0302】図47に数値データ更新のための構成を示
す。図47において、制御ユニット20は、演算ユニッ
ト10−1−10−n全てから通報されるフラグSTO
Pの論理積を求めるAND回路321と、AND回路3
21の出力信号に応答して(同期して)新たな数値デー
タSjおよびjをデータブロードキャストバス23およ
びアドレスブロードキャストバス22に通報する数値デ
ータ更新発行部322と、AND回路322の出力信号
に応答してフラグSTOPをリセットするための制御信
号を発生するリセット信号発生回路333とを含む。リ
セット信号発生回路333からのリセット信号BOSC
ntは、図43に一例として示すように、3ビットBO
S2,BOS1,BOS0=“0,0,1”の形態で演
算ユニット10−1〜10−nの状態表現回路210
(より正確にいえば状態フラグ設定回路212)へ与え
られ、フラグSTOPを“0”にリセットする。
【0303】数値データ更新発行部322がブロードキ
ャストバス22および23に新しい数値データSjおよ
びjを通報した後(または同時)に、リセット信号発生
回路333からフラグSTOPをリセットするための制
御信号BOSCntが発生される。各演算ユニット10
−1〜10−nへ数値データSjおよびjが与えられて
かつフラグSTOPがリセットされた後、演算ユニット
10−1〜10−n各々において数値データSjおよび
jが内部のレジスタに格納されて演算処理が実行または
省略される。
【0304】フラグSTOPは、ジャンプ先アドレスT
が絶対アドレスS(=i+j)よりも大きいときは
“1”となる。演算処理を省略することなく実行する演
算ユニットにおいて所定の演算処理が行なわれる場合に
はフラグSTOPは“0”である。処理過程において、
ΔWijの値が所定値よりも小さくなると、そのシナプ
ス荷重修正量ΔWijに代えてジャンプ先アドレスデー
タが格納される。この書込まれたジャンプ先アドレスが
利用されるのは次の処理サイクルにおいてである(現在
の処理サイクルにおいては演算処理が行なわれており、
書込時アドレスデータが書込まれるか演算処理結果デー
タが書込まれるかが異なるだけである)。
【0305】演算処理を実行する演算ユニットにおいて
は、アドレスデータをローカルメモリに書込んだ場合、
そのサイクルにおいて特に以後の処理を実行する必要は
ない(後にフロー図を参照して詳細に説明する)。アド
レスポインタへの新しいアドレスデータの設定および新
しいアドレスデータに従ったローカルメモリへのアクセ
スが実行される。ローカルメモリから次の演算処理内容
を示すアドレスデータが読出されるときに状態レジスタ
内にジャンプ先アドレスTとして次の演算処理内容を指
定するアドレスデータ(読出されたアドレスデータ)が
格納される。また、演算処理が省略されることなく終了
するとアドレスが1増分される。増分されたアドレスは
ジャンプ先アドレスとしてレジスタに格納される。ジャ
ンプ先アドレスTの更新が行なわれたとき、そのサイク
ルは以後の演算処理を実行する必要はない。したがって
1つの演算処理完了時(たとえばシナプス荷重値データ
Wijまたはシナプス荷重修正データΔWijのローカ
ルメモリへの書込命令が与えられた後)、制御信号BO
SCntによりフラグSTOPを更新する。演算処理を
実行していた演算ユニットにおいては、必要な演算処理
が完了した後フラグSTOPが“1”となる(AS=T
−SよりAS>0となり、0のフラグSTOPが1とな
る)。したがって全ての演算ユニット10−1〜10−
nのフラグSTOPが“1”となると、演算ユニット1
0−1〜10−nは全て次の数値データを待機する状態
になる。したがってこの図46に示すように、AND回
路321の出力信号に従って演算ユニット10−1〜1
0−nへ数値データSjおよびjを与えることにより、
全ての演算ユニット10−1〜10−nを同期して動作
させることができるとともに、演算ユニット10−1〜
10−nにおけるアドレス(絶対アドレスi+jおよび
iアドレス)の進行状況は全て同一となる。
【0306】またリセット信号発生回路333から演算
ユニット10−1〜10−nすべてに対しフラグSTO
Pをリセットするための信号を同時に与えることによ
り、演算ユニット10−1〜10−nの動作開始タイミ
ングを全て同一とすることができ、全ての演算ユニット
10−1〜10−nを並列に同期して動作させることが
できる。
【0307】またフラグSTOPの代わりにフラグEN
Dを用いれば、演算ユニット10−1〜10−nの全て
が必要な演算処理を完了した後に必要な数値データを演
算ユニット10−1〜10−nへ与えることができる。
【0308】上述のフラグSTOPおよびENDを用い
る場合、数値データではなく、演算ユニット10−1〜
10−nに共通に与える必要のあるたとえば定数データ
などの数値データを全ての演算ユニット10−1〜10
−nに対して正確に通報することができる。
【0309】[数値データ更新実行部の具体的構成]図
26に示す構成においては、タグメモリ102から読出
されるアドレスをニューラルネットワークの各層におけ
るニューロンを識別するjアドレスに変換する手法は明
確には示していない。ステートメモリ100からは、タ
グメモリ102に格納されたアドレスに従ってアドレス
ポインタ106を介して順次有効出力状態値が読出され
ている。したがってアドレスポインタ106は、このス
テートメモリ106における絶対アドレスを指定してい
る。すなわち、タグメモリ102には、有効出力状態値
のステートメモリ100に格納された位置を示す絶対ア
ドレスが格納されている。レジスタファイル104に
は、このタグメモリ102におけるニューラルネットワ
ークの各層の最初のアドレスが格納されている。このス
テートメモリ100およびタグメモリ102のアドレス
の対応関係は、単に制御ユニット内部においてのみであ
る。演算ユニットにおけるローカルメモリのアドレスと
の対応関係は存在していないことも考えられる。ローカ
ルメモリに有効誤差データを格納する場合特にこのアド
レスの対応関係は存在する可能性は低くなる。そこで、
図47に示すように、タグメモリ102から読出された
アドレスとレジスタファイル104に格納されたニュー
ラルネットワーク層の開始アドレスとの減算を行なう減
算器350によりjアドレスを生成する。これにより、
減算器350からはニューラルネットワークのある層に
おいて何番目のニューロンの出力状態値が与えられてい
るかを示すjアドレスが正確に生成される。これにより
各演算ユニット10−1〜10−nは、ステートメモリ
100およびタグメモリ102において格納された出力
荷重値Sjの格納アドレスとかかわりなく自身のローカ
ルメモリにおける対応の数値データを正確に読出すこと
ができる。
【0310】なお図47に示す構成においても、適当な
箇所にレジスタラッチを設けてクロック信号に同期して
レジスタ間の数値データの転送を行なうことにより、パ
イプライン態様でタグメモリ102およびステートメモ
リ100のアクセスおよび数値データSjおよびjの生
成を行なうことができる。
【0311】[シナプス荷重修正フローの一例]図48
に、1つの演算ユニットにおけるローカルメモリに格納
された有効誤差データδおよびシナプス荷重Wijおよ
びシナプス荷重修正データΔWijの格納状態の一例を
示す。図48において、ローカルメモリ11aには、ニ
ューロンp、qおよびrの有効誤差δp、δqおよびδ
rが格納される(有効誤差データの格納態様は図29参
照)。ローカルメモリ11bには、ニューロンp、qお
よびrそれぞれに対するシナプス荷重データWijおよ
びシナプス荷重修正データΔWijが格納される。有効
誤差δp、δqおよびδrの格納のためには3つのアド
レス(3つのエントリ)が必要とされるだけである。図
48においては、ローカルメモリ11bにおいて格納さ
れるシナプス荷重値Wijおよびシナプス荷重修正値Δ
Wijとの対応関係を明瞭に示すために、有効誤差デー
タ格納領域を拡大して示す。
【0312】ニューロンp、qおよびrそれぞれに対
し、外部から相手先ニューロンの出力状態値Sj(j=
0〜nが与えられてシナプス荷重の修正が行なわれる。
図48に斜線で示す領域が演算処理を省略することので
きる領域の場合には、その領域に格納された数値データ
を利用する演算処理は省略される。たとえば有効誤差デ
ータδpを利用する演算η・δp・Sjの演算は省略す
ることができる。したがってシナプス荷重修正データΔ
Wpjが、α・ΔWpj(t−1)で与えられるため、
高速でシナプス荷重修正値を算出することができる。さ
らにΔWpj(t−1)が省略することのできる演算で
ある場合、このシナプス荷重修正値ΔWpjの演算は完
全に省略することができる。また同様にWpj=Wpj
(t−1)+ΔWpjの演算も併わせて省略することが
できる。
【0313】図49は、シナプス荷重修正時における各
演算ユニットにおける有効誤差データおよびシナプス荷
重およびシナプス荷重修正量データの格納状態の一例を
示す図である。図49においては、演算ユニット10−
1〜10−15が一例として示される。演算ユニット1
0−1〜10−15の各々は一例として、3つのニュー
ロンをそれぞれ表現する。図49においては、外部(制
御ユニット)から与えられる出力状態値Sjの状態も併
わせて示す。出力状態値データSjはローカルメモリL
Mには格納されていない。有効誤差データδiは、ロー
カルメモリLMの所定の領域に格納されてもよく、また
レジスタファイル内の特定のレジスタに対応のiアドレ
スとともに格納されてもよい。演算ユニット10−1〜
10−15へ共通に制御ユニットから数値データSjお
よびjが与えられる。演算ユニット10−1〜10−1
5それぞれにおける処理ブロックPBL1〜PBL15
が必要な処理を実行する。処理ブロックPBL1〜PB
L15もまたフラグSTOPおよびENDを制御ユニッ
トへ与える。これらのフラグは制御ユニットからの制御
信号によりリセットされる。
【0314】図50は図49に示す処理ブロックの具体
的構成を示す図である。図50において、処理ブロック
PBLは、有効誤差データδiを一時的に格納するレジ
スタ401と、ローカルメモリLMから逃がされた得た
を一時的に格納するためのレジスタ群402と、レジス
タ群402に格納されたiアドレスをラッチするための
レジスタ405と、ブロードキャストバス22および2
3を介して与えられた数値データjおよびSjをそれぞ
れラッチするためのレジスタ404および403と、レ
ジスタ404および405に格納された数値データjお
よびiを加算する加算器406と、加算器406の演算
結果出力とレジスタ群402に格納される状態フラグに
従ってローカルメモリLMに対する絶対アドレス(現ア
ドレスA)を発生する現アドレス発生器407と、対応
の演算ユニットにおける演算処理の進行状態を表現する
状態表現回路210を含む。レジスタ群402は、処理
に必要な上述のさまざまなレジスタを含んでおり、処理
データを一時的に格納するためのレジスタ、およびジャ
ンプ先アドレスT、絶対アドレスS、現アドレスA、前
アドレスA+1、限界アドレスADDR、しきい値εΔ
W、εデータとを格納する。次にシナプス荷重修正動作
のフローの一例について図51に示すフロー図を参照し
て説明する。
【0315】まず学習パラメータηおよびαが演算ユニ
ット10−1〜10−14それぞれにおいて設定され
る。定数データηおよびαの設定は、前述のように演算
ユニット10−1〜10−14それぞれをリセット状態
とし(フラグSTOPおよびENDのリセット)、次い
でデータブロードキャストバス23を介して学習パラメ
ータηおよびαを演算ユニット10−1〜10−14へ
与えて命令ブロードキャストバス21(図1参照)から
の命令により所定のレジスタに書込むことにより行なわ
れる。また、ローカルメモリLMの初期アドレスを設定
するためにアドレスポインタに初期値が設定される。こ
のアドレスポインタの初期値の設定も同様にして行なわ
れ、さらにしきい値ε(ΔW)およびεδが演算ユニッ
ト10−1〜10−14それぞれにおいて設定される
(制御ユニット20の制御の下)。これらのパラメータ
η、α、ε(ΔW)、およびεδおよびアドレスポイン
タの初期値の設定は任意の順序で実行されてもよい。以
上の処理により、演算ユニット10−1〜10−14の
初期設定が完了する(ステップSTP1)。
【0316】演算ユニット10−1〜10−14(以下
の説明において演算ユニットは符号PUで示す)は、レ
ジスタに格納されたiアドレスを初期値に設定する(ス
テップSTP2)。
【0317】iアドレスに初期値を設定することによ
り、図29に示すように、次いでローカルメモリLMか
ら演算処理されるべき数値データが格納されるアドレス
データが読出される。この読出されたiアドレスに従っ
てジャンプ先アドレスが指定されるとともにローカルメ
モリから有効誤差データδiが読出され、図50に示す
レジスタ401に格納される。このレジスタ401への
有効誤差データδiの格納時に、演算処理が省略される
べき有効誤差データはスキップされている(たとえば図
49において有効誤差データδ0はスキップされる)
(ステップSTP3)。
【0318】次いで制御ユニット20(以下の説明にお
いては制御ユニットは符号CUで示す)は、数値データ
Sjおよびjをそれぞれデータブロードキャストバス2
3(DB)およびアドレスブロードキャストバス22
(AB)へ伝達する。この制御ユニットCUからの数値
データの各演算ユニット10−1〜10−15への通報
時においても、演算処理が省略されるべき数値データは
スキップされている。制御ユニットCUから数値データ
Sjおよびjが演算ユニットPUへ通報されると、演算
ユニットPUは、与えられた数値データSjおよびjを
ラッチし、また加算器406によりi+jが計算されて
アドレスSが得られ、レジスタ群402に格納される
(この経路は図示せず)とともに図50に示す現アドレ
ス発生回路407へ与えられる。現アドレス発生回路4
07は、このアドレスSとレジスタ群402に格納され
たフラグASに従って現アドレスAを発生する(ステッ
プSTP4)。
【0319】フラグSTOPが“0”の演算ユニットP
Uにおいては、まずδi・Sj・ηの演算処理を行な
い、この演算処理結果を特定のレジスタにパラメータa
として格納する。次いで、ローカルメモリLMから現ア
ドレスAに従ってシナプス荷重修正データΔWijを読
出す。読出したシナプス荷重修正データΔWijと先に
算出されたパラメータaとから、演算α・ΔWij+a
を行ない、この演算結果をパラメータΔWij+として
特定のレジスタへ格納する。この算出された新しいシナ
プス荷重修正データΔWij+が所定のしきい値ε(Δ
W)以上の場合には、ローカルメモリLMの現アドレス
位置にこの算出されたシナプス荷重修正データΔWij
+が書込まれる。算出されたシナプス荷重修正データΔ
Wij+がしきい値ε(ΔW)よりも小さい場合には、
ローカルメモリへは、現アドレスAの位置に先に図31
ならびに図37ないし図41において説明した手法に従
ってアドレスデータが書込まれるかまたはその書込みが
待機状態とされる。なおローカルメモリLMからシナプ
ス荷重修正データΔWijを読出すときに読出されたシ
ナプス荷重データΔWijの代わりにアドレスデータが
読出されたときには、演算処理がその時点で終了し、ジ
ャンプ先アドレスTが更新されて次に新しい数値データ
Sjおよびjが与えられるのを待ち合わせる。
【0320】次いでローカルメモリLMからシナプス荷
重データWijを読出し、先に算出されたシナプス荷重
修正データΔWij+を用いてWij+ΔWij+の演
算を行ない、新たなシナプス荷重値Wij+を生成し、
ローカルメモリLMの現アドレス位置に書込む。シナプ
ス荷重Wijの修正動作時においては、図31に示す一
連の処理動作が実行される。以上の処理によりステップ
STP5が終了する。
【0321】いずれかの処理過程が終了すると、制御ユ
ニットCUは、演算ユニットの状態表現回路210から
与えられるフラグSTOPにより、全ての演算ユニット
PUがこの必要な演算処理が完了したか否かを識別する
(ステップSTP6)。演算ユニットPU全てからのフ
ラグSTOPが全て“1”となっていない場合には、少
なくとも1つの演算ユニットPUが演算処理を実行して
いるため、制御ユニットCUは、この全ての演算ユニッ
トPUからのフラグSTOPが“1”となるまで待つ
(ステップSTP6)。
【0322】演算ユニットPUからのフラグSTOPが
全て“1”となると、制御ユニットCUは、発生したア
ドレスjが最後のアドレスend jであるか否かの判
別を行なう(ステップSTP7)。j<end jの場
合には次に演算処理されるべき数値データSjおよびj
を読出し再び制御ユニットPUへ通報する(ステップS
TP4へ戻る)。このステップSTP7からステップS
TP4へ戻るときに先に図46および図47を参照して
説明したリセット手法が用いられる。演算ユニットPU
は新たに与えられた数値データSjおよびjに従って演
算処理を実行する。このステップSTP5においてもシ
ナプス荷重修正値ΔWijにおいて演算を省略すること
ができる場合には、その演算処理は省略されており、対
応の数値データSjおよびjが制御ユニットCUから通
報されるまでその演算ユニットが処理を停止している
(フラグSTOPが“1”)。
【0323】ステップSTP7において、j=end
jであると判別されると、各演算ユニットにおいて1つ
のニューロンのシナプス荷重の修正操作が終了したと判
別され、制御ユニットCUはjアドレスを初期値に設定
する(ステップSTP8)。次いで制御ユニットCU
は、演算ユニットPUが全て必要な処理を完了したか否
かをフラグENDを見ることにより識別する。すなわち
全ての演算ユニットにおいて、iアドレスが所定の限界
アドレスADDRに到達しているか否かの識別が行なわ
れ、その識別結果に従ってフラグENDが“1”または
“0”に設定される。演算ユニットPU全てにおいてi
=end i(=ADDR)となっていない場合には、
再びステップSTP3へ戻り、次に演算処理されるべき
ニューロンの対応の有効誤差データδiが読出され、ス
テップSTP4ないしSTP8の一連の処理ステップが
実行される。
【0324】ステップSTP9において、全ての演算ユ
ニットPUが必要な処理を完了したと判別されると、制
御ユニットCUは、1つの層についてのシナプス荷重の
修正が完了したと判別し、次の層についてのシナプス荷
重修正動作に移る。
【0325】なお図51に示すシナプス荷重修正動作フ
ローは一例であり、演算ユニットPUへ順次数値データ
Sjおよびjを膜電位算出時と同様にして与えて各演算
ユニットおいてシナプス荷重修正が実行されるようにし
てもよい。この場合には、環状通信経路を介して順次必
要な数値データSjおよびjが演算ユニットPUのフラ
グSTOPが全て“1”となったときにシフトされる。
環状通信経路に格納された数値データSjおよびjの処
理が全て完了したときにステップSTP7の判別が行な
われ、新たな数値データSjおよびjの環状通信経路へ
の通報が行なわれる。このような処理フローに従ってシ
ナプス荷重修正が実行されてもよい。また、シナプス荷
重修正データΔWijの全ての算出が行なわれた後、シ
ナプス荷重Wijの修正動作が行なわれてもよい(第3
の演算省略方式をそのまま適用できる)。
【0326】以上本発明の数値演算処理装置の構成、動
作原理および具体的動作について説明してきたが、本発
明の数値演算処理装置は階層型ニューラルネットワーク
のみならず相互結合型ニューラルネットワークにも適用
可能であり、また、ニューラルネットワークに限らず、
一般にSIMD方式に従って演算処理を行なう装置に適
用可能である。
【0327】
【発明の効果】以上説明したように、この発明に従え
ば、省略することのできる演算処理は省略して処理を進
めていくため、効率的かつ高速で処理を行なうことので
きる数値演算処理装置を得ることができ、またSIMD
方式の演算処理装置においても共通の命令に従って処理
を実行する場合においても、省略することのできる演算
処理は省略することができ、処理効率の優れたSIMD
方式数値演算処理装置を実現することができる。
【0328】
【0329】
【0330】
【0331】
【0332】
【0333】
【0334】
【0335】
【0336】
【0337】
【0338】
【0339】
【0340】
【0341】
【0342】
【0343】
【0344】
【0345】
【0346】
【0347】
【0348】
【0349】
【0350】
【0351】
【0352】
【0353】
【0354】
【0355】
【0356】
【0357】
【図面の簡単な説明】
【図1】この発明に従う数値演算処理装置の全体の構成
を概略的に示す図である。
【図2】図1に示す演算ユニットの内部構成を概略的に
示す図である。
【図3】図2に示すシーケンスコントローラの機能的構
成を示す図である。
【図4】図1に示す制御ユニットの内部構成を概略的に
示す図である。
【図5】この発明に従う数値演算処理装置の動作を説明
するために利用されるニューラルネットワークの構成を
示す図である。
【図6】この発明による数値演算処理装置における演算
処理動作を説明するための図である。
【図7】この発明に従う数値演算処理装置の動作を説明
するための図である。
【図8】この発明の数値演算処理装置の動作を説明する
ための図である。
【図9】この発明の数値演算処理装置の動作を説明する
ための図である。
【図10】ニューラルネットワークにおける演算省略の
効果を説明するためのシミュレーション結果を示す図で
ある。
【図11】ニューラルネットワークにおける演算処理削
減効果を説明するためのシミュレーション結果を示す図
である。
【図12】ニューラルネットワークににおける演算省略
の効果を示すためのシミュレーション結果を示す図であ
る。
【図13】ニューラルネットワークにおける演算省略の
効果を説明するためのシミュレーション結果を示す図で
ある。
【図14】ニューラルネットワークにおける省略演算数
と演算精度との対応関係をシミュレーションにより求め
た結果を示す図である。
【図15】この発明に従う数値演算処理装置の第1の変
更例を示す図である。
【図16】図15に示す数値演算処理装置の効果を説明
するための図である。
【図17】この発明に従う数値演算処理装置の第2の変
更例を示す図である。
【図18】図17に示す構成の利点を説明するための図
である。
【図19】この発明に従う数値演算処理装置の第3の変
更例を示す図である。
【図20】図19に示す配置に続いて実現される演算処
理装置内の構成を示す図である。
【図21】図19および図20に示す構成の動作を説明
するための図である。
【図22】図19および図20の動作を示すフロー図で
ある。
【図23】この発明に従う数値演算処理装置の第4の変
更例を示す図である。
【図24】この発明に従う数値演算処理装置の半導体チ
ップ上のレイアウトを示す図である。
【図25】演算省略のための概念的方法を示す図であ
る。
【図26】図25に示す構成を実現するための具体的配
置を示す図である。
【図27】図26に示す構成においてステートメモリお
よびタグメモリへデータを書込むための構成を示す図で
ある。
【図28】演算省略のための第2の方式を説明するため
の図である。
【図29】図28に示す構成に従って演算処理を行なう
ための構成を示す図である。
【図30】第3の演算省略方式を概念的に示す図であ
る。
【図31】図30に示す構成を具体的に実現するための
配置を示す図である。
【図32】図31に示すローカルメモリのアドレスの割
付けの一例を示す図である。
【図33】図31に示すローカルメモリへの数値データ
書込みを行なうための構成を示す図である。
【図34】図33に示す構成と共同して用いられる制御
ユニット内の構成の一例を示す図である。
【図35】図33に示す状態表現回路の構成を概略的に
示す図である。
【図36】図35に示す状態フラグの定義を一覧にして
示す図である。
【図37】図35および図36に示す状態フラグWおよ
びJの状態と演算処理状態の対応関係を示す図である。
【図38】図35および図36に示す状態フラグWおよ
びJの状態とそのときに示される演算処理の状態を示す
図である。
【図39】図35および図36に示す状態フラグWおよ
びJとそのときに実行された演算処理の状態を示す図で
ある。
【図40】状態フラグWおよびJとそのときに実行され
る処理の対応関係を示す図である。
【図41】状態フラグWおよびJとそのときの演算処理
の状態を示す図である。
【図42】図35に示す状態フラグ設定回路の構成の一
例を示す図である。
【図43】図42に示すセレクタ制御信号を発生するた
めの構成の一例および外部からの制御信号とセレクタ制
御信号との対応関係を示す図である。
【図44】図33に示す加算器および比較器の変更例を
示す図である。
【図45】図33に示す状態表現回路の第1の変更例を
示す図である。
【図46】図45に示す構成を利用する数値演算処理装
置の全体の構成を概略的に示す図である。
【図47】図31に示す配置と共同して用いられる制御
ユニットの数値データ発生部の構成を示す図である。
【図48】シナプス荷重修正時におけるローカルメモリ
の記憶する数値データと外部から与えられる数値データ
との対応関係の一例を示す図である。
【図49】この発明に従う数値演算処理装置におけるシ
ナプス荷重修正時の動作を説明するための図である。
【図50】図49に示す処理ブロックの構成を示す図で
ある。
【図51】この発明に従うシナプス荷重修正の動作を示
すフロー図である。
【図52】一般に用いられるニューロンの数理モデルを
概略的に示す図である。
【図53】階層型ニューラルネットワークの構成の一例
を示す図である。
【図54】従来の数値演算処理装置の構成の一例を示す
図である。
【図55】従来の数値演算処理装置の動作を説明するた
めの図である。
【図56】従来の数値演算処理装置の動作を説明するた
めの図である。
【図57】従来の数値演算処理装置の動作を説明するた
めの図である。
【図58】従来の数値演算処理装置の動作を説明するた
めの図である。
【図59】従来の数値演算処理装置の動作を説明するた
めの図である。
【図60】従来の数値演算処理装置の動作を説明するた
めの図である。
【図61】図60に示す動作完了時における数値演算処
理装置における数値データ格納状況を示す図である。
【符号の説明】
10、10−1〜10−n 演算ユニット 11 ローカルメモリ 12 演算器群 13 レジスタ群 14 処理データ入力ポート 15 アドレスデータ入力ポート 16 処理データ出力ポート 17 アドレスデータ出力ポート 20 制御ユニット 21 命令ブロードキャストバス 22 アドレスブロードキャストバス 23 データブロードキャストバス 30 非線形変換ユニット 31 入力ポート 32 出力ポート 33 セレクタ 19a アドレスデータ環状通信経路 19b 処理データ環状通信経路 41 レジスタ 42 レジスタ 45 アドレスデコーダ 50 セレクタ 51 セレクタ 52a 出力端子 52b 出力端子 53a 入力端子 53b 入力端子 55a アドレスデータ環状通信経路 55b 処理データ環状通信経路 20e 入力ポート 20f 出力ポート 81 入力経路 82 出力経路 61 状態レジスタ 67 ゲート回路 68 演算結果レジスタ 69 演算器 44 レジスタ 72 セレクタ 73 特定ビット通報信号線 54 半導体チップ 100 ステートメモリ 102 タグメモリ 104 レジスタファイル 120 レジスタファイル 121 比較器 130 アドレスラッチレジスタ 132 データラッチレジスタ 138 アドレスポインタ 139 LSB発生回路 150 アドレスポインタ 151 レジスタファイル 152 増分器 153 マルチプレクサ 154 マルチプレクサ 155 LSB発生回路 160 レジスタ 162 レジスタ 164 レジスタ 168 マルチプレクサ 170 加算器 200 アドレスポインタ 202 演算器 204 加算器 206 比較器 208 マルチプレクサ 210 状態表現回路 220 レジスタファイル 212 状態フラグ設定回路 214 フラグレジスタ 270 デコーダ 300 NOR回路 321 AND回路 322 数値データ更新発行部 333 リセット信号発生回路
フロントページの続き (56)参考文献 特開 平4−259085(JP,A) 特開 平4−367084(JP,A) 特開 平5−61680(JP,A) 特開 平5−242065(JP,A) 特開 平3−44758(JP,A) 特開 平2−292689(JP,A) 特開 平2−181257(JP,A) 特開 平5−324694(JP,A) 特開 平4−43472(JP,A) 特開 昭62−166463(JP,A) 特開 平5−346914(JP,A) 特開 平5−189471(JP,A) 特開 平4−280386(JP,A) 特開 平4−237364(JP,A) 特開 平2−294777(JP,A) (58)調査した分野(Int.Cl.7,DB名) G06F 15/18 520 G06F 15/16 610 JICSTファイル(JOIS) WPI(DIALOG)

Claims (23)

    (57)【特許請求の範囲】
  1. 【請求項1】 数値データからなる数値部分と、該数値
    データが演算処理すべきデータであるのか次に実行され
    るべき処理を指示するのかを特定する数値コードからな
    る数値コード部分とを含む数値データを格納するための
    格納手段と、 前記格納手段から読出された数値データの前記数値コー
    ド部分の数値に従って数値データ読出に続いて実行すべ
    き処理を設定する設定手段と、 前記設定手段により設定された処理を前記読出された数
    値データに対し実行する実行手段とを備え、 前記格納手段は、各々が、前記数値データとして前記数
    値部分と対応の数値コード部分とをリンクして格納する
    複数のエントリを含み、 前記数値コード部分は、対応の数値部分が演算処理され
    るべきデータであるのか、次に前記格納手段から数値デ
    ータを読出すエントリの位置を示すアドレスであるのか
    を指定する、数値演算処理装置。
  2. 【請求項2】 前記設定手段は、前記数値コード部分
    が、対応の数値部分が演算処理されるべきデータである
    ことを示すとき、前記格納手段のエントリの位置を示す
    アドレスを1増分しかつ前記数値コード部分が対応の数
    値部分が前記格納手段のアドレスを示すとき、前記対応
    の数値部分に対する前記実行手段による演算処理を無効
    化しかつ前記対応の数値部分を前記格納手段の次に読出
    されるべきエントリ位置を示すアドレスとして設定する
    手段を含み、 前記実行手段は、設定されたアドレスに従って、前記格
    納手段をアクセスして対応の数値データを読出す手段を
    含む、請求項1記載の数値演算処理装置。
  3. 【請求項3】 前記格納手段は、第1のアドレスのエン
    トリに第1の数値データを格納し、かつ前記第1のアド
    レスに連続して隣接する第2のアドレスに第2の数値デ
    ータを格納し、 前記設定手段は、前記第2の数値データの数値コード部
    分の値に従って次に実行されるべき処理を設定する、請
    求項1記載の数値演算処理装置。
  4. 【請求項4】 前記実行手段は、2入力演算手段を含
    み、 前記設定手段は、前記格納手段の第1のアドレスのエン
    トリから読出された第1の数値データを保持しかつ前記
    演算手段の一方入力に与える第1の保持手段と、前記第
    1のアドレスに隣接する第2のアドレスのエントリから
    読出された第2の数値データを保持する第2の保持手段
    と、 前記第2の数値データの数値コード部分の数値に従っ
    て、前記第2の保持手段の保持する数値データおよび予
    め定められた定数の一方を前記演算手段の他方入力へ与
    える選択手段とを備える、請求項1記載の数値演算処理
    装置。
  5. 【請求項5】 前記2入力演算手段の出力を前記第1の
    アドレスのエントリへ書込む手段をさらに備える、請求
    項4記載の数値演算処理装置。
  6. 【請求項6】 前記格納手段は、第1のアドレスに第1
    の数値データを格納し、かつ前記第1のアドレスに連続
    して隣接する第2のアドレスに上記第1のアドレスに格
    納された第1の数値データに加算すべき数値データまた
    は加算を行なわずに次にアクセスすべき前記格納手段の
    アドレスを示すジャンプ先アドレスのいずれかを格納
    し、前記数値コード部分は、該第2のアドレスの第2の
    数値データが、ジャンプ先アドレスであるのか第2の数
    値データであるのかを特定する、請求項1記載の数値演
    算処理装置。
  7. 【請求項7】 前記設定手段は、前記第2のアドレスか
    ら読出された数値データが所定値以下のとき、前記第2
    のアドレスに、次にアクセスすべきエントリを示すジャ
    ンプ先アドレスを生成して、対応の第2のアドレスに格
    納し、かつ対応の数値コード部分を第2の数値データに
    代えてジャンプ先アドレスが格納されたことを示す値に
    設定する、請求項6記載の数値演算処理装置。
  8. 【請求項8】 現サイクルで読出されている数値データ
    を格納するエントリを示す現アドレスを格納する第1の
    レジスタと、 最も最近演算処理を受けた数値データを格納するエント
    リを示すアドレスの次のアドレスを前アドレスとして格
    納する第2のレジスタと、 前記最も最近処理された数値データが所定の処理と異な
    る処理を受けたか否かを示す第1のフラグ(J)を生成
    する第1のフラグ生成手段と、 現サイクルで読出された数値データが前記所定の処理と
    異なる処理を受けたか否かを示す第2のフラグ(W)を
    生成する第2のフラグ生成手段と、 前記第2のレジスタに格納された前アドレスと前記第1
    のレジスタに格納された現アドレスの差が1より大きい
    か否かを示す第3のフラグ(FA)を生成する第3のフ
    ラグ生成手段と、 前記第1のフラグ、前記第2のフラグ、前記現アドレ
    ス、前記前アドレスおよび外部から与えられるアドレス
    飛び越し指示信号に従って、前記数値データを書込むア
    ドレスを決定するアドレス決定手段をさらに備える、請
    求項1記載の数値演算処理装置。
  9. 【請求項9】 前記アドレス決定手段は、 前記第1および第2のフラグに従って、(a)前記最も
    最近および現サイクルにおいてアクセスされた数値デー
    タが共に前記所定の演算処理を受けたこと、(b)現サ
    イクルにアクセスされた数値データの処理が前記所定の
    演算と異なりかつ最も最近アクセスされた数値データが
    前記所定の演算処理を受けたこと、および(c)現サイ
    クルの数値データが前記所定の演算処理を受けかつ前記
    最も最近アクセスされた数値データが前記所定の演算と
    異なる処理を受けたことの3状態のいずれの状態である
    かを判定する状態判定手段と、 前記状態判定手段の前記状態(a)の判定に従って、前
    記現アドレスを前記格納手段の前記前アドレスが示すエ
    ントリへ格納する第1の書込手段と、 前記状態判定手段の前記状態(b)の判定に従って、前
    記アドレス飛び越し信号と前記第3のフラグに従って前
    記現アドレスと前記前アドレスの一方を第4のレジスタ
    に格納する手段と、 前記状態判定手段の前記状態(c)の判定に従って、前
    記現アドレスを前記第4のレジスタに格納されたアドレ
    スが示す前記格納手段のエントリへ格納する第2の書込
    手段とを含む、請求項8記載の数値演算処理装置。
  10. 【請求項10】 次に所定の演算処理を受ける数値デー
    タが格納されるエントリの位置を示す飛び越し先アドレ
    ス(T)を格納する第1のレジスタと、 最も最近前記所定の演算処理を受けた数値データが格納
    されているエントリの位置を示す前アドレスと現在アク
    セスされている数値データのエントリの位置を示す現ア
    ドレスとの差が1より大きいことを示す第1のフラグ
    (FA)を生成する第1のフラグ生成手段と、 外部から与えられるアドレス生成指示信号に応答して、
    前記格納手段のアドレスに対する飛び越しが行なわれて
    いることを示す第2のフラグ(ST)を生成する第2の
    フラグ生成手段と、 前記格納手段から読出された数値データのコード部分に
    従って、該読出された数値データが前記所定の演算を受
    けるべき数値データであるか否かを示す第3のフラグ
    (DM)を生成する第3のフラグ生成手段と、 数値データ書込時、前記所定の演算処理を受ける数値デ
    ータを書込むべきか前記所定の演算処理と異なる処理を
    受ける数値データを書込むべきかを示す第4のフラグ
    (W)を生成する第4のフラグ生成手段と、 前の演算実行サイクルにおける前記第4のフラグ(W
    (t−1))を現演算実行サイクルの書込制御を示す第
    5のフラグ(A)として出力する第5のフラグ生成手段
    と、 前の演算実行サイクルの前記第1のフラグを現演算実行
    サイクルの書込禁止を示す第6のフラグ(STOP)と
    して出力する第6のフラグ生成手段と、 前記現アドレスが所定のアドレスに到達したか否かに従
    って、前記格納手段に対する数値データの書込動作が完
    了したことを示す第7のフラグ(END)を生成する第
    7のフラグ生成手段をさらに備える、請求項1記載の数
    値演算処理装置。
  11. 【請求項11】 外部から与えられる制御信号をデコー
    ドし、該デコード結果に従って前記第1ないし第7のフ
    ラグ生成手段が生成するフラグの更新タイミングを設定
    するデコード手段をさらに備える、請求項10記載の数
    値演算処理装置。
  12. 【請求項12】 外部から与えられる制御信号に応答し
    て、前記格納手段へのアクセス禁止を強制的に解除させ
    る手段をさらに備える、請求項1記載の数値演算処理装
    置。
  13. 【請求項13】 内部演算処理不実行を示す制御信号に
    応答して、前記格納手段へのアクセスを強制的に禁止す
    る手段をさらに備える、請求項1記載の数値演算処理装
    置。
  14. 【請求項14】 前記格納手段へのアクセスの中止を示
    す中止フラグ(STOP)を生成する中止フラグ生成手
    段と、 前記格納手段へのアクセスの完了を示す完了フラグ(E
    ND)を生成する完了フラグ生成手段と、 前記中止フラグおよび完了フラグに応答して、前記格納
    手段へのアクセス可能を示す信号を生成して外部へ出力
    する手段をさらに備える、請求項1記載の数値演算処理
    装置。
  15. 【請求項15】 各々が、演算器と、前記演算器に利用
    される数値データを格納するローカルメモリと、前記数
    値データが所定の条件を満足するとき該数値データに対
    する演算処理を省略するように前記演算器の演算処理を
    制御する制御手段と、前記演算器の演算結果出力を格納
    するための演算結果格納レジスタと、前記演算結果出力
    が複数の可能な状態のうちのどの状態にあるかを示すス
    テータスフラグを格納する状態レジスタと、前記ステー
    タスフラグに従って、前記演算結果格納レジスタへの前
    記演算器の演算結果出力の格納を制御する手段とを含
    み、かつ互いに並列に設けられる複数の演算ユニットと
    を備え、 前記複数の演算ユニットの各々は、さらに、少なくとも
    2つの数値情報入力ポートを含む入力ポートと、少なく
    とも2つの数値情報出力ポートを含む出力ポートとを備
    え、かつ前記複数の演算ユニットは前記数値情報入力ポ
    ートおよび数値情報出力ポートを介してカスケード接続
    され、さらに 前記複数の演算ユニットに共通に設けら
    れ、前記複数の演算ユニットに対し共通の命令を発行し
    て前記複数の演算ユニットに前記共通の命令を並列に実
    行させるための制御ユニットと、 前記複数の演算ユニットの出力を受けて順次非線形変換
    処理を施す非線形処理ユニットとを含む、数値演算処理
    装置。
  16. 【請求項16】 前記少なくとも2つの数値情報入力ポ
    ートは、前記ローカルメモリのアドレスを指定するアド
    レスデータを入力するアドレス入力ポートと、前記演算
    ユニットにより演算処理されるべき数値データを入力す
    るデータ入力ポートとを含み、 かつ前記少なくとも2つの数値情報出力ポートは、アド
    レスデータ出力ポートと、数値データ出力ポートとを含
    む、請求項15記載の数値演算処理装置。
  17. 【請求項17】 前記複数の演算ユニットに共通に設け
    られ、前記制御ユニットからのアドレスデータおよび数
    値データを前記複数の演算ユニットへ同時に伝達するた
    めの共通バスをさらに備える、請求項15記載の数値演
    算処理装置。
  18. 【請求項18】 前記カスケード接続の特定の演算ユニ
    ットの出力ポートと前記カスケード接続における前記特
    定の演算ユニットに隣接する演算ユニットの入力ポート
    との間に設けられ、前記特定の演算ユニットの出力と前
    記非線形処理ユニットの出力の一方を選択して前記隣接
    する演算ユニットの入力ポートに伝達するための選択手
    段をさらに含む、請求項15記載の数値演算処理装置。
  19. 【請求項19】 前記複数の演算ユニットの入力ポート
    および出力ポートは、前記複数の演算ユニットがリング
    状に相互接続されるように順次接続される、請求項15
    記載の数値演算処理装置。
  20. 【請求項20】 前記カスケード接続の初段の演算ユニ
    ットの入力ポートに設けられ、与えられた数値データを
    前記初段の演算ユニットの入力ポートと前記制御ユニッ
    トの入力ポートの一方へ伝達する入力手段と、 前記カスケード接続の最終段の出力ポートに設けられ、
    前記最終段の演算ユニットの出力と前記制御ユニットか
    らの数値データの一方を伝達する出力手段とをさらに備
    える、請求項15記載の数値演算処理装置。
  21. 【請求項21】 前記ステータスフラグはマルチビット
    フラグであり、前記複数の演算ユニットの各々は、対応
    の状態レジスタに格納されたマルチビットフラグの特定
    のビットを選択して前記制御ユニットへ通報する手段を
    さらに備える、請求項15記載の数値演算処理装置。
  22. 【請求項22】 前記数値演算処理装置は1つの半導体
    チップ上に集積化され、かつ複数の演算ユニットは前記
    制御ユニットおよび前記非線形処理ユニットを挟むよう
    に前記チップ上に配置されかつ前記複数の演算ユニット
    において前記ローカルメモリが前記制御ユニットから離
    れたチップ外側に配置される、請求項15記載の数値演
    算処理装置。
  23. 【請求項23】 各々が(i)数値データを格納するた
    めのメモリと、(ii)前記メモリから読出された数値
    データの数値に従って予め設定された複数の処理から実
    行すべき処理を選択する手段を備え、かつ、与えられた
    命令に従って互いに並列に動作する複数の演算ユニット
    と、 前記複数の演算ユニットに対して同時に共通の命令を与
    え、該共通の命令に従って前記複数の演算ユニットを並
    列に動作させる制御ユニットとを含む、並列演算処理装
    置。
JP06008777A 1994-01-28 1994-01-28 数値演算処理装置 Expired - Fee Related JP3096387B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP06008777A JP3096387B2 (ja) 1994-01-28 1994-01-28 数値演算処理装置
US08/306,300 US5532938A (en) 1994-01-28 1994-09-15 Numerical arithmetic processing unit

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP06008777A JP3096387B2 (ja) 1994-01-28 1994-01-28 数値演算処理装置

Publications (2)

Publication Number Publication Date
JPH07219919A JPH07219919A (ja) 1995-08-18
JP3096387B2 true JP3096387B2 (ja) 2000-10-10

Family

ID=11702320

Family Applications (1)

Application Number Title Priority Date Filing Date
JP06008777A Expired - Fee Related JP3096387B2 (ja) 1994-01-28 1994-01-28 数値演算処理装置

Country Status (2)

Country Link
US (1) US5532938A (ja)
JP (1) JP3096387B2 (ja)

Families Citing this family (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH11338844A (ja) * 1998-05-22 1999-12-10 Nec Corp 発火数制御型神経回路装置
US6859872B1 (en) 1999-05-12 2005-02-22 Analog Devices, Inc. Digital signal processor computation core with pipeline having memory access stages and multiply accumulate stages positioned for efficient operation
US7107302B1 (en) 1999-05-12 2006-09-12 Analog Devices, Inc. Finite impulse response filter algorithm for implementation on digital signal processor having dual execution units
US7111155B1 (en) 1999-05-12 2006-09-19 Analog Devices, Inc. Digital signal processor computation core with input operand selection from operand bus for dual operations
US6820189B1 (en) 1999-05-12 2004-11-16 Analog Devices, Inc. Computation core executing multiple operation DSP instructions and micro-controller instructions of shorter length without performing switch operation
JP2001188767A (ja) * 1999-12-28 2001-07-10 Fuji Xerox Co Ltd ニューラルネットワーク演算装置及びニューラルネットワークの演算方法
JP3719509B2 (ja) * 2002-04-01 2005-11-24 株式会社ソニー・コンピュータエンタテインメント シリアル演算パイプライン、演算装置、算術論理演算回路およびシリアル演算パイプラインによる演算方法
US7035834B2 (en) * 2002-05-15 2006-04-25 Caterpillar Inc. Engine control system using a cascaded neural network
JP4692956B2 (ja) * 2004-11-22 2011-06-01 株式会社ソニー・コンピュータエンタテインメント 描画処理装置および描画処理方法
JP4650381B2 (ja) * 2006-09-08 2011-03-16 日本ビクター株式会社 電子機器
US7958181B2 (en) * 2006-09-21 2011-06-07 Intel Corporation Method and apparatus for performing logical compare operations
FR2910144A1 (fr) * 2006-12-18 2008-06-20 St Microelectronics Sa Procede et dispositif de detection errones au cours de l'execution d'un programme.
JP4913685B2 (ja) * 2007-07-04 2012-04-11 株式会社リコー Simd型マイクロプロセッサおよびsimd型マイクロプロセッサの制御方法
US8127075B2 (en) * 2007-07-20 2012-02-28 Seagate Technology Llc Non-linear stochastic processing storage device
JP4868607B2 (ja) * 2008-01-22 2012-02-01 株式会社リコー Simd型マイクロプロセッサ
JP4513865B2 (ja) * 2008-01-25 2010-07-28 セイコーエプソン株式会社 並列演算装置および並列演算方法
US8775341B1 (en) 2010-10-26 2014-07-08 Michael Lamport Commons Intelligent control with hierarchical stacked neural networks
US9015093B1 (en) 2010-10-26 2015-04-21 Michael Lamport Commons Intelligent control with hierarchical stacked neural networks
JP5739779B2 (ja) 2011-09-26 2015-06-24 ルネサスエレクトロニクス株式会社 Simdプロセッサ及びコントロールプロセッサ並びにプロセッサ要素
CN106973118B (zh) * 2017-05-12 2021-04-27 京东方科技集团股份有限公司 生成和订阅通知的方法和装置
US20190332924A1 (en) * 2018-04-27 2019-10-31 International Business Machines Corporation Central scheduler and instruction dispatcher for a neural inference processor
US10991445B2 (en) * 2018-09-06 2021-04-27 Micron Technology, Inc. Memory sub-system including an in-package sequencer to perform error correction and memory testing operations
US10432436B1 (en) 2018-12-11 2019-10-01 Globalfoundries Inc. Feed forward equalizer with power-optimized distributed arithmetic architecture and method
KR20200072307A (ko) 2018-12-12 2020-06-22 삼성전자주식회사 뉴럴 네트워크에서의 부하 균형을 위한 장치 및 방법
JP7174243B2 (ja) * 2018-12-21 2022-11-17 富士通株式会社 情報処理装置、ニューラルネットワークプログラム、ニューラルネットワークの処理方法
KR102399197B1 (ko) * 2020-01-17 2022-05-18 경희대학교 산학협력단 이상치 인지 근사적 코딩을 수행하는 전자 장치 그리고 그것의 동작 방법
CN112270413B (zh) * 2020-10-22 2024-02-27 北京百度网讯科技有限公司 算子合并方法、装置、电子设备及存储介质
US20240038726A1 (en) * 2021-02-10 2024-02-01 Panasonic Intellectual Property Management Co., Ltd. Ai module
US11947462B1 (en) * 2022-03-03 2024-04-02 Apple Inc. Cache footprint management

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5999575A (ja) * 1982-11-29 1984-06-08 Mitsubishi Electric Corp パイプライン演算装置
JPS62166463A (ja) * 1986-01-20 1987-07-22 Fujitsu Ltd デ−タ転送方式
JP2765903B2 (ja) * 1989-01-06 1998-06-18 株式会社日立製作所 情報処理装置
JPH02292689A (ja) * 1989-05-02 1990-12-04 Nippon Telegr & Teleph Corp <Ntt> 学習型神経回路
JPH02294777A (ja) * 1989-05-10 1990-12-05 Oki Electric Ind Co Ltd ディジタル信号処理プロセッサ
JPH0344758A (ja) * 1989-07-12 1991-02-26 Matsushita Electric Ind Co Ltd 並列演算回路と並列演算装置
JPH0443472A (ja) * 1990-06-11 1992-02-13 Fujitsu Ltd 神経回路網型計算装置
US5038311A (en) * 1990-08-10 1991-08-06 General Electric Company Pipelined fast fourier transform processor
JP2959104B2 (ja) * 1990-10-31 1999-10-06 日本電気株式会社 信号処理プロセッサ
JPH04237364A (ja) * 1991-01-21 1992-08-25 Fujitsu Ltd ニューロコンピュータ
JP3237858B2 (ja) * 1991-01-30 2001-12-10 沖電気工業株式会社 演算装置
JPH04259085A (ja) * 1991-02-14 1992-09-14 Mitsubishi Electric Corp データ駆動形プロセッサのメモリアクセス制御方法
US5175858A (en) * 1991-03-04 1992-12-29 Adaptive Solutions, Inc. Mechanism providing concurrent computational/communications in SIMD architecture
JP2912933B2 (ja) * 1991-03-08 1999-06-28 日本電信電話株式会社 データ変換装置
JPH04367084A (ja) * 1991-06-13 1992-12-18 Mitsubishi Electric Corp データ駆動形計算機
JPH0520283A (ja) * 1991-07-11 1993-01-29 Mitsubishi Electric Corp 並列データ処理装置
JPH0561680A (ja) * 1991-08-30 1993-03-12 Omron Corp フアジイ推論における適合値算出方法
JPH05242065A (ja) * 1992-02-28 1993-09-21 Hitachi Ltd 情報処理装置及びシステム
JPH05324694A (ja) * 1992-05-19 1993-12-07 Tomochika Fujioka 再構成可能並列プロセッサ
JPH05346914A (ja) * 1992-06-16 1993-12-27 Matsushita Electron Corp ニューロプロセッサ

Also Published As

Publication number Publication date
US5532938A (en) 1996-07-02
JPH07219919A (ja) 1995-08-18

Similar Documents

Publication Publication Date Title
JP3096387B2 (ja) 数値演算処理装置
Imani et al. Floatpim: In-memory acceleration of deep neural network training with high precision
US5524175A (en) Neuro-computer system for executing a plurality of controlling algorithms
CN110415157B (zh) 一种矩阵乘法的计算方法及装置
WO2022046570A1 (en) Vector processor architectures
KR20220157377A (ko) 인메모리 컴퓨팅을 위한 확장 가능한 어레이 아키텍처
JPH0652132A (ja) 並列演算半導体集積回路装置およびそれを用いたシステム
WO2021089009A1 (zh) 数据流重构方法及可重构数据流处理器
JP2575565B2 (ja) Spin:順次パイプライン式ニューロコンピュータ
EP0664516B1 (en) Neural network with reduced calculation amount
Song et al. BRAHMS: Beyond conventional RRAM-based neural network accelerators using hybrid analog memory system
CN111930681A (zh) 一种计算装置及相关产品
CN115437602A (zh) 任意精度计算加速器、集成电路装置、板卡及方法
CN111178492B (zh) 计算装置及相关产品、执行人工神经网络模型的计算方法
CN116050492A (zh) 一种扩展单元
He et al. An LSTM acceleration engine for FPGAs based on caffe framework
CN113887730A (zh) 量子模拟器实现方法、装置、相关设备以及量子模拟方法
CN111368987B (zh) 一种神经网络计算装置和方法
CN112906877A (zh) 用于执行神经网络模型的存储器架构中的数据布局有意识处理
WO2020051918A1 (zh) 神经元电路、芯片、***及其方法、存储介质
US20230297824A1 (en) Programmable non-linear activation engine for neural network acceleration
Duan et al. DDC-PIM: Efficient Algorithm/Architecture Co-Design for Doubling Data Capacity of SRAM-Based Processing-in-Memory
CN111198714A (zh) 重训练方法及相关产品
CN111047024A (zh) 一种计算装置及相关产品
CN111368990A (zh) 一种神经网络计算装置和方法

Legal Events

Date Code Title Description
A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 19990309

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20000725

LAPS Cancellation because of no payment of annual fees