JP2000514230A - ニューラル・プロセッサ、飽和ユニット、計算ユニットおよび加算器回路 - Google Patents
ニューラル・プロセッサ、飽和ユニット、計算ユニットおよび加算器回路Info
- Publication number
- JP2000514230A JP2000514230A JP11556597A JP55659799A JP2000514230A JP 2000514230 A JP2000514230 A JP 2000514230A JP 11556597 A JP11556597 A JP 11556597A JP 55659799 A JP55659799 A JP 55659799A JP 2000514230 A JP2000514230 A JP 2000514230A
- Authority
- JP
- Japan
- Prior art keywords
- input
- bit
- vector
- output
- gate
- 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.)
- Pending
Links
- 230000001537 neural effect Effects 0.000 title claims abstract description 125
- 238000004364 calculation method Methods 0.000 title claims abstract description 78
- 239000013598 vector Substances 0.000 claims abstract description 596
- 238000013528 artificial neural network Methods 0.000 claims abstract description 25
- 238000009738 saturating Methods 0.000 claims abstract description 21
- 230000015654 memory Effects 0.000 claims description 146
- 239000011159 matrix material Substances 0.000 claims description 100
- 230000006870 function Effects 0.000 claims description 37
- 238000011068 loading method Methods 0.000 claims description 23
- 230000003190 augmentative effect Effects 0.000 claims description 10
- 238000012937 correction Methods 0.000 claims description 4
- 238000012545 processing Methods 0.000 abstract description 20
- 210000004027 cell Anatomy 0.000 description 108
- 238000000034 method Methods 0.000 description 44
- 210000002569 neuron Anatomy 0.000 description 33
- 230000008569 process Effects 0.000 description 25
- 238000010586 diagram Methods 0.000 description 15
- 238000004422 calculation algorithm Methods 0.000 description 12
- 239000012634 fragment Substances 0.000 description 12
- 238000012546 transfer Methods 0.000 description 10
- 230000000295 complement effect Effects 0.000 description 9
- 238000002360 preparation method Methods 0.000 description 8
- 238000012856 packing Methods 0.000 description 5
- 229920006395 saturated elastomer Polymers 0.000 description 3
- XEEYBQQBJWHFJM-UHFFFAOYSA-N Iron Chemical compound [Fe] XEEYBQQBJWHFJM-UHFFFAOYSA-N 0.000 description 2
- 238000009825 accumulation Methods 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 238000006243 chemical reaction Methods 0.000 description 2
- 238000007906 compression Methods 0.000 description 2
- 230000006835 compression Effects 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 210000003128 head Anatomy 0.000 description 2
- 230000009467 reduction Effects 0.000 description 2
- 240000007594 Oryza sativa Species 0.000 description 1
- 235000007164 Oryza sativa Nutrition 0.000 description 1
- 229910004444 SUB1 Inorganic materials 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 230000001186 cumulative effect Effects 0.000 description 1
- 239000003292 glue Substances 0.000 description 1
- 238000003780 insertion Methods 0.000 description 1
- 230000037431 insertion Effects 0.000 description 1
- 229910052742 iron Inorganic materials 0.000 description 1
- 206010023497 kuru Diseases 0.000 description 1
- 230000004751 neurological system process Effects 0.000 description 1
- 238000010899 nucleation Methods 0.000 description 1
- 238000004806 packaging method and process Methods 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
- 230000035484 reaction time Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 235000009566 rice Nutrition 0.000 description 1
- 230000011664 signaling Effects 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
- 238000009331 sowing Methods 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
- 238000009966 trimming Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/544—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/048—Activation functions
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Artificial Intelligence (AREA)
- Evolutionary Computation (AREA)
- Data Mining & Analysis (AREA)
- General Health & Medical Sciences (AREA)
- Computational Linguistics (AREA)
- Mathematical Physics (AREA)
- Molecular Biology (AREA)
- Software Systems (AREA)
- Neurology (AREA)
- Mathematical Analysis (AREA)
- Computational Mathematics (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Complex Calculations (AREA)
- Nitrogen And Oxygen Or Sulfur-Condensed Heterocyclic Ring Systems (AREA)
Abstract
(57)【要約】
本発明のグループは、コンピュータ・サイエンスの分野に関し、そしてニューラル・ネットワークのエミュレーションおよびディジタル信号処理のために使うことができる。ニューラル・プロセッサの性能の増加は、プログラム・モードにおいて結果のワード長を変更するための機能の手段によって達成される。このニューラル・プロセッサは、6つのレジスタと、シフト・レジスタと、ANDゲートと、2つのFIFOと、スイッチと、マルチプレクサと、2つの飽和ユニットと、計算ユニットと、そしてプログラム可能なワード長のデータのベクトルについての演算を実行するための加算器回路とを含む。飽和ユニットの性能の増加は、プログラム可能なワード長の入力オペランド・ベクトルを一度に処理するための機能の手段によって達成される。前記ユニットは、キャリー・ルック・アヘッド回路と、キャリー伝播回路とを含み、また、2つのマルチプレクサによって、1つの排他的ORゲートと、1つの等価ゲートと、1つのNANDゲートと、1つの反転入力付きANDゲートとを各ビットの中に含む。計算ユニットの機能が拡張されている。この計算ユニットは遅延要素と、N/2個の反転入力付きANDゲートと、N/2個の乗算ビットのデコーダと、Nビットのシフト・レジスタとを含み、シフト・レジスタは、各ビットが反転入力付きANDゲートと、マルチプレクサおよびトリガと、乗算器アレイとから構成され、乗算器アレイはNカラム×N/2のセルを含み、各セルが2つのトリガ、反転入力付きANDゲート、1ビット部分積発生回路と、1ビット加算器と、マルチプレクサとから構成されている。加算器回路の性能の向上はプログラム可能なワード長の入力オペランドの2つのベクトルを加算するための機能の手段によって達成される。その加算器回路はキャリー・ルック・アヘッド回路と、また、2つの反転入力付きANDゲートによって、1つの半加算器と、1つの排他的ORゲートとを各ビットの中に含む。
Description
【発明の詳細な説明】
ニューラル・プロセッサ、飽和ユニット、計算ユニット
および加算器回路
発明の属する技術分野
本発明のグループは、コンピュータ・サイエンスの分野に関し、ニューラル・
ネットワークのエミュレーションおよびリアルタイムのディジタル信号処理のた
めに使うことができる。
発明の背景
一つのニューラル・プロセッサが知られており[Principal Dir
ections of Hardware Development of N
eural Network Algorithms Implementat
ion(ニューラル・ネットワーク・アルゴリズムの実装のハードウェア開発の
基本的方向)/Y.P.イワノフ(Ivanov)他、第2ロシア学会《Neu
ral Computers And Their Application》
(ニューラル・コンピュータおよびそれらの応用)、モスクワ,1996年2月
14日のレポートからのもの)Neurocomputer(ニューロコンピュ
ータ)‐1996‐1,2‐pp.47‐49]、それは入力データ・レジスタ
および4つのニューラル・ユニットを含み、各ニューラル・ユニットはシフト・
レジスタ、重み係数レジスタ、4つの乗算器、マルチオペランド合計演算回路お
よび、しきい値関数計算のためのブロックから構成されている。
そのようなニューラル・プロセッサは入力データ値の実際の範囲およびそれら
の重み係数には関係なく、各クロック・サイクルにおいて固定の数のニューロン
に対して固定の量の入力データの重み付けられた合計演算を実行する。この場合
、すべての重み係数以外に、すべての入力データがニューラル・プロセッサのハ
ードウェア・ユニットのビット長によって決定される固定のワード長のオペラン
ドの形式で示される。
その最も近いものは3つのレジスタ、マルチプレクサ、FIFO、累積された
結果の加算を伴う、プログラム可能なワード長データの2つのベクトルのドット
積を計算するための計算ユニット、および非線形ユニットを含んでいる[米国特
許第5278
945号、U.S.Cl.395/27,1994]である。
入力データ・ベクトルおよびそれらの重み係数がそのようなニューラル・プロ
セッサの入力に対して印加される。各クロック・サイクルにおいて、ニューラル
・プロセッサは、その重み係数ベクトルによる入力データのドット積を計算する
手段によって、1つのニューロンに対していくつかの入力データの重み付けられ
た合計演算を実行する。さらに、そのニューラル・プロセッサは、別々の要素の
ワード長をプログラム・モードにおいて固定された値の集合から選択することが
できるベクトルの処理をサポートする。入力データおよび重み係数のワード長を
減らすことによって、各ベクトル内のそれらの数が増加し、したがって、ニュー
ラル・プロセッサの性能が改善される。しかし、得られる結果のワード長は固定
されており、そのニューラル・プロセッサのハードウェア・ユニットのビット長
によって決定される。
ある数値の絶対値によって決定される飽和領域を伴う飽和のための一つのディ
ジタル・ユニットが知られており[ロシア特許第690477号,Int.Cl
.G 06 F 7/38,1979]、3つのレジスタ、1つの加算器、2つ
のコード変換器、2つの符号解析ブロック、補正ブロック、2グループのAND
ゲートおよび1グループのORゲートを含んでいる。そのようなユニットによっ
て2Nクロック・サイクル当たりにN個の入力オペランドを伴うベクトルに対す
る飽和関数を計算することができる。
最も近いものはマルチプレクサ、コンパレータおよび2つの飽和の指示子を含
んでいる飽和ユニット[米国特許第5644519号、U.S.Cl.364/
736.02,1997]である。そのようなユニットによってNサイクル当た
りにN個の入力オペランドを伴うベクトルに対する飽和関数を計算することがで
きる。
乗算器、加算器、レジスタ、マルチプレクサおよびFIFOを含んでいる一つ
の計算ユニットが知られている[米国特許第5278945号、U.S.Cl.
395/27,1994]。前記ユニットは2つのベクトルのドット積を計算す
ることができ、そのベクトルはそれぞれM個のオペランドを1クロック・サイク
ル当たりに含み、Nサイクル当たりにM個のオペランドから構成されているベク
トルによってN×M個のオペランドを含んでいる行列の乗算を行うことができる
。
それに最も近いものは、3N/2個のANDゲート、ブースのアルゴリズムの
ベー
スで乗算器をデコードするためのN/2個のデコーダ、乗算のためのNカラム×
N/2セルのセル・アレイ(ここで、各セルはブースのアルゴリズムのベースで
、そして1ビット加算器のベースで1ビットの部分積を発生するための回路から
構成される)、2Nビット加算器、N/2乗算器、ブースのアルゴリズムのベー
スで1ビットの部分積を発生するためのN/2個の追加の回路およびN/2個の
インプリケータを含んでいる計算ユニット[米国特許第4825401号、U.
S.Cl.364/760,1989]である。前記ユニットによって2つのN
ビットのオペランドを乗算すること、あるいは2つの(N/2)ビットのオペラ
ンドの要素ごとの乗算をそれぞれ1クロック・サイクルで実行することができる
。
ワード長がプログラム可能なオペランドでのベクトルの合計演算のためのユニ
ットが知られており[米国特許第5047975号、U.S.Cl.364/7
86,1991]、加算器およびインバート入力のANDゲートを含んでいる。
それに最も近いものは、キャリー論理およびそのすべてのビットに、半加算器
および排他的ORゲートを含んでいる加算器[米国特許第4675837号、U
.S.Cl.364/788,1987]である。前記加算器によって、それぞ
れN個のオペランドで構成されている二つのベクトルをNサイクルで加算するこ
とができる。
発明の開示
本発明のニューラル・プロセッサは第1、第2、第3、第4、第5および第6
のレジスタと、シフト・レジスタと、ANDゲートと、第1および第2のFIF
Oと、第1および第2の飽和ユニットと、計算ユニットと、加算器回路と、1つ
の3から2へのスイッチと、マルチプレクサとを含み、計算ユニットは、第1オ
ペランド・ベクトルのビットの入力と、第2オペランド・ベクトルのビットの入
力と、第3オペランド・ベクトルのビットの入力と、第1オペランド・ベクトル
および結果のベクトルに対するデータ境界設定の入力と、第2オペランド・ベク
トルに対するデータ境界設定の入力と、第3オペランド・ベクトルに対するデー
タ境界設定の入力と、第1メモリ・ブロックへの第3オペランド・ベクトルのロ
ード制御の第1および第2の入力と、第1メモリ・ブロックから第2メモリ・ブ
ロックへの第3オペランド行列の再ロードの入力と、第2メモリ・ブロックの中
に格納されている第3オペランド行列による第2オペランド・ベクトルの乗算の
積と第1オペランド・ベクトルの加算の結果の
第1および第2の加算されたベクトルのビットの出力の再ロード制御の入力とを
組み込んでおり、そして3から2へのスイッチのビットの第1データ入力と、第
1のFIFOのデータ入力と、第1、第2、第3および第4のレジスタの入力と
、シフト・レジスタの並列データ入力とが結合されて、ニューラル・プロセッサ
の第1入力バスのそれぞれのビットに対してビットごとに接続され、ニューラル
・プロセッサは、第2入力バスの各ビットが3から2へのスイッチのそれぞれの
ビットの第2データ入力に接続され、3から2へのスイッチは、各ビットの第1
出力が第1飽和ユニットの入力オペランド・ベクトルのそれぞれのビットの入力
に接続され、第1飽和ユニットは、すべてのビットの制御入力が第2レジスタの
対応しているビットの出力に接続され、3から2へのスイッチの各ビットの第2
出力が第2飽和ユニットの入力オペランド・ベクトルのそれぞれのビットの入力
に接続され、第2飽和ユニットは、各ビットの制御入力が第3レジスタのそれぞ
れのビットの出力に接続され、第1レジスタの各ビットの出力がマルチプレクサ
のそれぞれのビットの第1データ入力に接続され、マウチプレクサは、各ビット
の第2データ入力が第1飽和ユニットの結果ベクトルのそれぞれのビットの出力
に接続され、マルチプレクサの各ビットの出力が計算ユニットの第1オペランド
・ベクトルのそれぞれのビットの入力に接続され、計算ユニットは、第2オペラ
ンド・ベクトルの各ビットの入力が第2飽和ユニットの結果ベクトルのそれぞれ
のビットの出力に接続され、第1のFIFOのデータ出力が計算ユニットの第3
オペランド・ベクトルのそれぞれの入力に接続され、計算ユニットは、第1オペ
ランド・ベクトルと第2オペランド・ベクトルの第2メモリ・ブロックの中に格
納されている第3オペランド行列による乗算の積との加算の結果の第1の被加算
値ベクトルの各ビットの出力が、加算器回路の第1の被加算値ベクトルのそれぞ
れのビットの入力に接続され、加算器回路は、第2の被加算値ベクトルの各ビッ
トの入力が、第1オペランド・ベクトルと、第2オペランド・ベクトルの、計算
ユニットの第2メモリ・ブロックの中に格納されている第3オペランド行列によ
る乗算の積との加算の結果の第2被加算値ベクトルのそれぞれのビットの出力に
接続され、計算ユニットは、第1オペランド・ベクトルおよび結果ベクトルに対
するデータ境界設定の各入力が、第5レジスタのそれぞれのビットの出力に対し
て、そして加算器回路の被加算値ベクトルと和のベクトルに対するデータ境界設
定のそれぞれの入力に接続され、加算器回
路は、和のベクトルの各ビットの出力が第2のFIFOのそれぞれのデータ入力
に接続され、第2のFIFOは各データ出力がニューラル・プロセッサの出力バ
スのそれぞれのビットに対して、そして3から2へのスイッチのそれぞれのビッ
トの第3入力に接続され、第4レジスタの各ビットの出力が第5レジスタのそれ
ぞれのビットのデータ入力に対して、そして計算ユニットの第3オペランド・ベ
クトルに対するデータ境界設定のそれぞれの入力に接続され、計算回路は、第2
オペランド・ベクトルに対するデータ境界設定の各入力が第6レジスタのそれぞ
れのビットの出力に接続され、第6レジスタは、各ビットのデータ入力がシフト
・レジスタのそれぞれのビットの出力に接続され、シフト・レジスタは、シーケ
ンシャル・データの入力および出力が結合されて、計算ユニットの第1メモリ・
ブロックの中への第3オペランド・ベクトルのロード制御の第1入力に対して、
そしてANDゲートの第1入力に対して接続され、ANDゲートは、出力が第1
のFIFOの読出し制御入力に接続され、ANDゲートの第2入力と、シフト・
レジスタのシフト制御入力と、計算ユニットの第1メモリ・ブロックへの第3オ
ペランド・ベクトルのロード制御の第2入力とが結合されて、ニューラル・プロ
セッサのそれぞれの制御入力に対して接続され、計算ユニットの第1メモリ・ブ
ロックから第2メモリ・ブロックへの第3オペランド行列の再ロード制御の入力
と、第5および第6のレジスタの制御入力とが結合されて、ニューラル・プロセ
ッサのそれぞれの制御入力に対して接続され、3から2へのスイッチの、マルチ
プレクサの、そして第1、第2、第3および第4のレジスタの制御入力と、シフ
ト・レジスタの、そして第1のFIFOの書込み制御入力と、第2のFIFOの
読出しおよび書込み制御入力とが、ニューラル・プロセッサのそれぞれの制御入
力であり、第1および第2のFIFOの状態出力がニューラル・プロセッサの状
態出力である。
ニューラル・プロセッサはすべてのNビット・ベクトル・オペランド上でJビ
ットの算術的左シフトを実行して記憶するシフト・レジスタ(ここで、Jは計算
ユニットの第2オペランド・ベクトルにおけるデータのワード長の整除部分であ
る最小限の値)と、1つの遅延要素と、シーケンシャルな入力ポートおよびNビ
ットのデータを格納するためのN/J個のセルを含んでいる第1メモリ・ブロッ
クと、Nビットのデータを格納するためのN/J個のセルを含んでいる第2メモ
リ・ブロックと、プログラム可能なワード長のデータのNビット・ベクトルをJ
ビットの乗数でそれぞれ乗算する
N/J個の乗算器ブロックと、N/J+1個のプログラム可能なワード長のデー
タ・ベクトルの合計演算の部分積を発生するベクトル加算回路とを含んでいる計
算ユニットを含むことができ、そして計算ユニットの第3オペランド・ベクトル
のビットの入力がシフト・レジスタのデータ入力に接続され、シフト・レジスタ
は、出力が第1メモリ・ブロックのデータ入力に接続され、第1メモリ・ブロッ
クは、各セルの出力が第2メモリ・ブロックのそれぞれのセルのデータ入力に接
続され、第2メモリ・ブロックは、各セルの出力がそれぞれの乗算器ブロックの
被乗数ベクトルのビットの入力に接続され、乗算器ブロックは乗数入力ビットが
計算ユニットの第2オペランド・ベクトルのそれぞれのJビット・グループの入
力に接続され、各乗算器ブロックの出力がベクトル加算回路のそれぞれの被加算
値ベクトルのビットの入力に接続され、ベクトル加算回路は、(N/J+1)番
目の被加算値ベクトルの入力が計算ユニットの第1オペランド・ベクトルのビッ
トの入力に接続され、計算ユニットは、第3オペランド・ベクトルに対するデー
タ境界設定の入力がシフト・レジスタのオペランド・ベクトルに対するデータ境
界設定のそれぞれの入力に接続され、シフト・レジスタは、モード選択入力が計
算ユニットの第1メモリ・ブロックへの第3オペランド・ベクトルのロード制御
の第1入力に接続され、計算ユニットは、第1メモリ・ブロックへの第3オペラ
ンドのロード制御の第2入力がシフト・レジスタのクロック入力に対して、そし
て遅延要素の入力に対して接続され、遅延要素は、出力が第1メモリ・ブロック
の書込み制御入力に接続され、第2メモリ・ブロックの書込み制御入力が計算ユ
ニットの第1メモリ・ブロックから第2メモリ・ブロックへの第3オペランド行
列の再ロード制御の入力に接続され、計算ユニットは、第2オペランド・ベクト
ルに対するデータ境界設定のすべての入力がそれぞれの乗算器ブロックの符号訂
正の入力に接続され、計算ユニットの第1オペランド・ベクトルに対する、そし
て結果ベクトルに対するデータ境界設定の入力が、各乗算器ブロックの被乗数ベ
クトルに対する、そしてデータ境界設定の入力に対して、結果ベクトルに対する
、そしてベクトル加算回路の被加算値ベクトルおよび結果ベクトルに対するデー
タ境界設定の入力に接続され、ベクトル加算回路の結果の第1および第2の被加
算値ベクトルのビットの出力が計算ユニットのそれぞれの出力である。
上記ニューラル・プロセッサにおいて、各飽和ユニットは、データ入力が前記
ユニ
ットの入力オペランド・ベクトルのそれぞれのビットの入力である1つの入力デ
ータ・レジスタを含むことができ、計算ユニットは、データ入力が計算ユニット
の第1および第2のオペランド・ベクトルのそれぞれのビットの入力である1つ
の入力データ・レジスタを含むことができ、加算器回路は、データ入力が加算器
回路のそれぞれの入力の入力である1つの入力データ・レジスタを含むことがで
きる。
飽和ユニットはキャリー伝播回路と、キャリー・ルック・アヘッド回路とを含
み、そして前記ユニットのN個の各ビットは、第1および第2のマルチプレクサ
と、排他的ORゲートと、等価(EQUIVALENCE)ゲートと、NAND
ゲートと、反転入力付きANDゲートとを含み、第1および第2のマルチプレク
サの第2データ入力と、前記ユニットの各ビットの排他的ORゲートの第1入力
とが結合されて、前記ユニットの入力オペランド・ベクトルのそれぞれの入力に
接続され、前記ユニットは、結果ベクトルの各ビットの出力が前記ユニットのそ
れぞれのビットの第1マルチプレクサの出力に接続され、前記ユニットの各ビッ
トの反転入力付きANDゲートの非反転入力と、NANDゲートおよび等価ゲー
トの第1入力とが結合されて、前記ユニットのそれぞれの制御入力に接続され、
等価ORゲートの第1入力と前記ユニットのq番目のビットの反転入力付きAN
Dゲートの非反転入力とが、それぞれ前記ユニットの(q−1)番目のビットの
排他的ORゲートの第2入力に対して、そして反転入力付きANDゲートの反転
入力に対してそれぞれ接続され、その第2マルチプレクサの第1データ入力がキ
ャリー伝播回路の(N−q+2)番目のビット(ここで、q=2,3,...,
N)に対するキャリーの出力に接続され、前記ユニットのn番目のビットのNA
NDゲートの出力がキャリー・ルック・アヘッド回路の(N−n+1)番目のビ
ットを通してキャリー伝播の入力に接続され、キャリー・ルック・アヘッド回路
は、(N−n+2)番目のビットに対するキャリーの出力が前記ユニットのn番
目の第1マルチプレクサの制御入力に接続され、その反転入力付きANDゲート
の出力が前記ユニットの同じビットの第2マルチプレクサの制御入力に対して、
キャリー・ルック・アヘッド回路の(N−n+1)番目のキャリー発生入力に対
して、そしてキャリー伝播回路の(N−n+1)番目のビットを通してキャリー
伝播の反転入力に接続され、キャリー伝播回路は、(N−n+1)番目のビット
からのキャリー入力が前記ユニットのn番目の(ここで、n=1,2,...,
N)ビットの第2マ
ルチプレクサの出力に接続され、キャリー伝播回路の、そしてキャリー・ルック
・アヘッド回路の初期キャリー入力と、排他的ORゲートの第2入力と、反転入
力付きANDゲートの反転入力と、前記ユニットのN番目のビットの第2マルチ
プレクサの第1データ入力とが結合されて「0」に接続され、前記ユニットの各
ビットにおいて、第2マルチプレクサの出力が等価ゲートの第2入力に接続され
、等価ゲートは、出力が第1マルチプレクサの第1データ入力に接続され、排他
的ORゲートの出力が前記ユニットの同じビットのNANDゲートの第2入力に
接続されている。
飽和ユニットの使用の特定のケースにおいては、ハードウエアの費用を最小化
するための厳しい要求がある時、q番目のビットに対するキャリーの出力がキャ
リー伝播回路の中の(q−1)番目のビットからのキャリー入力に接続され(こ
こで、q=1,2,...N)、そしてキャリー・ルック・アヘッド回路は両方
ともN個のANDゲートおよびORゲートを含み、そしてキャリー・ルック・ア
ヘッド回路のそれぞれのビットを通してキャリー伝播の各ビットがそれぞれのA
NDゲートの第1入力に接続され、ANDゲートは、出力がそれぞれのORゲー
トの第1入力に接続され、ORゲートは、第2の入力および出力がそれぞれ、キ
ャリー・ルック・アヘッド回路のそれぞれのビットのキャリー発生入力に対して
、そしてキャリー・ルック・アヘッド回路の同じビットに対するキャリーの出力
に対してそれぞれ接続され、第1のANDゲートの第2入力はキャリー・ルック
・アヘッド回路の初期キャリー入力であり、q番目のANDゲートの第2入力が
(q−1)番目のORゲートの出力に接続されている(ここで、q=2,3,.
..,N)である。
計算ユニットはN/2個の乗数ビットのデコーダと、N/2個の反転入力付き
ANDゲートと、1つの遅延要素と、1つのNビット・シフト・レジスタとを含
み、シフト・レジスタは、各ビットが1つの反転入力付きANDゲートと、マル
チプレクサおよびトリガと、およびNカラム×N/2セルの乗算器アレイから構
成され、各セルは、1つの反転入力付きANDゲートと、1つの1ビット部分積
発生回路と、1つの1ビット加算器と、1つのマルチプレクサと、第1および第
2のトリガとから構成されていて、前記ユニットのそれぞれ第1および第2のメ
モリ・ブロックのメモリ・セルとして機能し、そして、前記ユニットの第1オペ
ランド・ベクトルの各ビットの入力が乗算器アレイのそれぞれのカラムの第1セ
ルの1ビット加算器の第2入力に接続され、
その各セルの1ビット加算器の第1入力が乗算器アレイの同じセルの1ビット部
分積発生回路の出力に接続され、その各カラムのすべてのセルのマルチプレクサ
の制御入力および反転入力付きANDゲートの反転入力の制御入力が結合されて
、前記ユニットの第1オペランド・ベクトルに対する、そして結果ベクトルに対
するデータ境界設定のそれぞれの入力に接続され、前記ユニットは、第2オペラ
ンド・ベクトルに対するデータ境界設定の各入力がそれぞれの反転入力付きAN
Dゲートの反転入力に接続され、その出力が乗数ビットのそれぞれのデコーダの
第1入力に接続され、乗算器アレイのすべてのカラムのi番目のセルの1ビット
部分積発生回路のそれぞれの制御入力が乗数ビットのi番目のデコーダのそれぞ
れの出力に結合されて接続され、その第2および第3の入力が前記ユニットの第
2オペランド・ベクトルの(2i−1)番目および(2i)番目のビットのそれ
ぞれの入力に接続され(ここで、i=1,2,...,N/2)、j番目の反転
入力付きのANDゲートの非反転入力が乗数ビットの(j−1)番目のデコーダ
の第3入力に接続され(ここで、j=2,3,...N/2)、前記ユニットの
第3オペランド・ベクトルの各ビットの入力がシフト・レジスタのそれぞれのビ
ットの乗算器の第2入力データに接続され、シフト・レジスタは、第1データ入
力がシフト・レジスタの同じビットの反転入力付きANDゲートの出力に接続さ
れ、その第1の反転入力が前記ユニットの第3オペランド・ベクトルに対するデ
ータ境界設定のそれぞれの入力に接続され、シフト・レジスタのq番目のビット
の反転入力付きANDゲートの第2反転入力がシフト・レジスタの(q−1)番
目のビットの反転入力付きANDゲートの第1の反転入力に接続され(ここで、
q=2,3,...N)、シフト・レジスタのr番目のビットの反転入力付きA
NDゲートの非反転入力がシフト・レジスタの(r−2)番目のビットのトリガ
出力に接続され(ここで、r=3,4,...,N)、すべてのシフト・レジス
タのビットのマルチプレクサの制御入力が結合されて前記ユニットの第1メモリ
・ブロックへの第3オペランド・ベクトルのロード制御の第1入力に接続され、
すべてのシフト・レジスタのビットのトリガのクロック入力、および遅延要素の
入力が第1メモリ・ブロックへの第3オペランドのロード制御の第2入力に対し
て結合されて接続され、各シフト・レジスタのビットのマルチプレクサの出力が
そのシフト・レジスタの同じビットのトリガのデータ入力に接続され、シフト・
レジスタは、出力が乗算器アレイのそれぞれのカラムの最後
のセルの第1のトリガのデータ入力に接続され、各乗算器アレイのカラムのj番
目の第1のトリガの出力が同じ乗算器アレイのカラムの(j−1)番目のセルの
第1のトリガのデータ入力に接続され(ここで、j=2,3,...,N/2)
、すべての乗算器アレイ・セルの第1のトリガがのクロック入力が遅延要素の出
力に接続され、すべての乗算器アレイのセルの第2のトリガのクロック入力が結
合されて、第1メモリ・ブロックから第2メモリ・ブロックへの第3オペランド
行列の再ロード制御の入力に接続され、乗算器アレイのq番目のカラムのi番目
のセルの1ビット部分積発生回路の第2データ入力が、乗算器アレイの(q−1
)番目のカラムのi番目のセルの反転入力付きANDゲートの出力に接続され(
ここで、i=1,2,...,N/2、そしてq=2.3,...,N)、乗算
器アレイの各カラムのj番目のセルの1ビット加算器の第2入力が同じ乗算器ア
レイのカラムの(j−1)番目のセルの1ビット加算器の和の出力に接続され(
ここで、j=2,3....,N/2)、乗算器アレイのq番目のカラムのj番
目のセルの1ビット加算器の第3入力が乗算器アレイの(q−1)番目のカラム
の(j−1)番目のセルの乗算器の出力に接続され(ここで、j=2,3,..
.,N/2,そしてq=2,3,...,N)、乗算器アレイの第1カラムのj
番目のセルの1ビット加算器の第3入力が乗数ビットの(j−1)番目のデコー
ダの第3出力に接続され(ここで、j=2,3,...,N/2)、乗算器アレ
イの各カラムの最後のセルの1ビット加算器の和の出力が前記ユニットの結果の
第1の被加算値ベクトルのそれぞれのビットの出力であり、乗算器アレイの(q
−1)番目のカラムの最後のセルのマルチプレクサの出力が前記ユニットの結果
の第2の被加算値ベクトルのq番目のビットの出力であり(ここで、q=2,3
,...N)、前記ユニットは、結果の第2の被加算値ベクトルの第1のビット
が乗数ビットの(N/2)番目のデコーダの第3出力に接続され、第1ビットの
反転入力付きANDゲートの第2の反転入力および非反転入力と、シフト・レジ
スタの第2ビットの反転入力付きANDゲートの非反転入力と、乗算器アレイの
第1カラムのすべてのセルの1ビット部分積発生回路の第2データ入力と、乗算
器アレイのすべてのカラムの第1セルの1ビット加算器の第3入力と、第1の反
転入力付きANDゲートの非反転入力とが結合されて「0」に接続され、そして
各乗算器アレイにおいて、第1のトリガの出力が第2のトリガのデータ入力に接
続され、第2のトリガは、出力が反転入力付きAN
Dゲートの非反転入力に対して、そして1ビット部分積発生回路の第1データ入
力に接続され、1ビット部分積発生回路は、第3制御入力がマルチプレクサの第
2データ入力に接続され、マルチプレクサは、第1データ入力が乗算器アレイの
同じセルの1ビット加算器のキャリー出力に接続されている。
加算器回路はキャリー・ルック・アヘッド回路と、そのN個の各ビットにおい
て、1つの半加算器と、1つの排他的ORゲートと、第1および第2の反転入力
付きANDゲートとを含み、加算器回路の第1の被加算値ベクトルの各ビットの
入力と、加算器回路の第2の被加算値ベクトルのそれぞれのビットの入力とが、
加算器回路のそれぞれのビットの半加算器の第1および第2の入力に対してそれ
ぞれ接続され、加算器回路の各ビットの第1および第2の反転入力付きANDゲ
ートの反転入力が結合されて、被加算値ベクトルに対するデータ境界設定のそれ
ぞれの入力に対して接続され、加算器回路の各ビットの排他的ORゲートの出力
が加算器回路の和のベクトルのそれぞれのビットの出力であり、加算器回路の各
ビットの第1の反転入力付きANDゲートの出力が、キャリー・ルック・アヘッ
ド回路のそれぞれのビットを通じてキャリー伝播入力に接続され、キャリー・ル
ック・アヘッド回路は、各ビットのキャリー伝播入力が加算器回路のそれぞれの
ビットの第2の反転入力付きANDゲートの出力に接続され、加算器回路のq番
目のビットの排他的ORゲートの第2の入力がキャリー・ルック・アヘッド回路
のq番目のビットの出力に接続され(ここで、q=2,3,...,N)、その
初期キャリー入力と加算器回路の第1ビットの排他的ORゲートの第2入力とが
「0」に接続され、そして加算器回路の各ビットにおいて、半加算器の和の出力
が排他的ORゲートの第1入力に対して、そして第1の反転入力付きANDゲー
トの非反転入力に接続され、そして半加算器のキャリー出力が加算器回路の同じ
ビットの第2の反転入力付きANDゲートの非反転入力に接続されている。
図面の簡単な説明
図1は、ニューラル・プロセッサのブロック図である。
図2は、飽和ユニットの機能を示している。
図3は、ニューラル・プロセッサによってエミュレートされる、ニューラル・
ネットワーク層のモデルである。
図4は、計算ユニットのブロック図である。
図5は、プログラム可能なワード長のデータのベクトルの飽和ユニットのブロ
ック図である。
図6は、飽和ユニットの中で適用することができる、キャリー・ルック・アヘ
ッド回路のブロックである。
図7は、計算ユニットのブロック図である。
図8は、計算ユニットの中で適用されるブースのアルゴリズムのベースでの乗
数ビットのデコーダおよび1ビット部分積発生回路の実施形態を示している。
図9は、プログラム可能なワード長のデータのベクトルの加算器回路のブロッ
ク図である。
発明を実施するための最良の形態
ブロック図が図1に示されているニューラル・プロセッサは、第1(1)、第
2(2)、第3(3)、第4(4)、第5(5)および第6(6)のレジスタと
、シフト・レジスタ7と、ANDゲート8と、第1(9)および第2(10)の
FIFOと、3から2へのスイッチ11と、マルチプレクサ12と、第1(13
)および第2(14)の飽和ユニット(それぞれが入力のオペランド・ベクトル
15のビットの入力と、制御入力16と、結果ベクトルのビットの出力17とを
備えている)と、計算ユニット18(第1(19)の、第2(20)の、そして
第3(21)のオペランド・ベクトルのビットの入力と、第1オペランド・ベク
トルおよび結果のベクトルに対する入力(22)、第2オペランド・ベクトルに
対する入力(23)、そして第3オペランド・ベクトルに対する入力(24)デ
ータ境界設定の入力と、第1メモリ・ブロックへの第3オペランド・ベクトルの
ロード制御の第1(25)および第2(26)の入力と、第1メモリ・ブロック
から第2メモリ・ブロックへの第3オペランド行列の再ロード制御の入力27と
、第1オペランド・ベクトルと、第2メモリ・ブロックの中に格納されている第
3オペランド行列による第2オペランド・ベクトルの乗算の積との加算の結果の
第1(28)および第2(29)の被加算値ベクトルのビットの出力とを含んで
いる)と、加算器回路30(第1(31)および第2(32)の被加算値ベクト
ルのビットの入力と、被加算値ベクトルに対する、そして和のベクトルに対する
データ境界設定の入力(33)と、和のベクトルのビットの出力34とを含んで
いる)とを含む。ニューラル・プロセッサは第1(35)および第2(36)の
入力バスと、出力バス37とを備えている。3から2へのスイッチ11の制御入
力38と、マルチプレクサ12の制御入力39と、第1レジスタ1の制御入力4
0と、第2レジスタ2の制御入力41と、第3レジスタ3の制御入力42と、第
4レジスタの制御入力43と、シフト・レジスタ7の書込み制御入力44と、第
1のFIFO 9の書込み制御入力45と、第2のFIFO 10の書込み(4
6)および読出し(47)の制御入力と、計算ユニット18の上記の制御入力2
6および27が、ニューラル・プロセッサのそれぞれの制御入力であり、そして
第2のFIFO 10の状態出力49がニューラル・プロセッサの状態出力であ
る。
ニューラル・プロセッサによって実施される、飽和機能の一般的な概念が図2
に示されている。
ニューラル・プロセッサによって実施される、ニューラル・ネットワーク層の
モデルが図3に示されている。
図4は、プログラム可能なワード長のデータのベクトルに対して演算を実行す
るための計算ユニット18の可能な実装のブロック図を示しており、それはシフ
ト・レジスタ50(その中に格納されているNビットのすべてのベクトル・オペ
ランドについてJビットの算術的左シフトが実行され、ここで、Jは計算ユニッ
ト18の第2オペランド・ベクトルにおけるデータ・ワード長の整除部分である
最小限の値)と、遅延要素51と、第1のメモリ・ブロック52(シーケンシャ
ルな入力ポートと、Nビットのデータを格納するためのN/J個のセルとを含ん
でいる)と、第2のメモリ・ブロック53(Nビットを格納するためのN/J個
のセルを含んでいる)と、N/J個の乗算器ブロック54(各乗算器がプログラ
ム可能なワード長データのNビットのベクトルをJビットの乗数で乗算する)と
、ベクトル加算回路55(N/J+1個のプログラム可能なワード長のデータ・
ベクトルの加算演算の部分積を発生する)とを含んでいる。
ブロック図が図5に示されている飽和ユニットは、入力オペランド・ベクトル
15のビットの入力と、制御入力16と、結果ベクトルの出力17のビットとを
備えている。前記ユニットのN個の各ビット56は、第1(57)および第2(
58)のマルチプレクサと、排他的ORゲート59と、等価ゲート60と、NA
NDゲート61と、反転入力付きANDゲート66とを含む。また、前記ユニッ
トはキャリー伝播回路6
3(初期キャリー入力64と、別のビットによるキャリー伝播の反転入力65と
、別のビットからのキャリー入力66と、別の入力に対するキャリーの出力67
とを含んでいる)と、キャリー・ルック・アヘッド回路68(初期キャリー入力
69と、別のビットによるキャリー伝播の入力70と、別のビットのキャリー発
生入力71と、別のビットへのキャリーの出力72とを含んでいる)とを含む。
飽和ユニットの中の回路63および68として、並列乗算器において応用され
る各種のキャリー伝播回路およびキャリー・ルック・アヘッド回路を使うことが
できる。
キャリー伝播回路63の最も単純な変形版の実装においては、q番目のビット
67に対するキャリーの出力が(q−1)番目のビット66からのキャリー入力
に接続される(ここで、q=1,2,...,N)。
図6は、ANDゲート73およびORゲート74を両方ともN個を含んでいる
最も単純なキャリー・ルック・アヘッド回路を開示している。前記回路のそれぞ
れのビットを通してのキャリー伝播の各入力70がそれぞれのANDゲート73
の第1入力に接続され、ANDゲート73の出力がそれぞれのORゲート74の
第1入力に接続され、ORゲート74の第2入力および出力がそれぞれのビット
のキャリー発生入力71に対して、および前記回路の同じビットに対するキャリ
ーの出力72に接続されている。第1のANDゲート73の第2入力は、前記回
路の初期キャリー入力69であり、q番目のANDゲート73の第2入力は、(
q−1)番目のORゲート74(ここで、q=2,3,...,N)の出力に接
続されている。
ブロック図が図7に示されている計算ユニットは、第1(19)、第2(20
)および第3(21)のオペランド・ベクトルのビットの入力と、第1オペラン
ド・ベクトルおよび結果ベクトルに対する(22)、第2オペランド・ベクトル
に対する(23)、そして第3オペランド・ベクトルに対する(24)境界設定
の入力とを、第1のメモリ・ブロックへの第3オペランド・ベクトルのロード制
御の第1(25)および第2(26)の入力と、結果の第1の被加算値ベクトル
の(28)および結果の第2の被加算値ベクトルの値(29)のビットの出力と
を含む。前記ユニットはシフト・レジスタ50と、遅延要素51と、N/2個の
反転入力付きANDゲート75と、N/2個の乗数ビットのデコーダ76と、N
カラム×各カラム内のN/2個のセルの乗算器アレイ77とを含む。シフト・レ
ジスタ50のどのビットも反転入力付きAN
Dゲート78と、マルチプレクサ79と、トリガ80とから構成されている。乗
算器アレイ77の各セルは、前記ユニットのそれぞれ第1および第2のメモリ・
ブロックのメモリ・セルとして機能する第1(81)および第2(82)のトリ
ガと、反転入力付きANDゲート83と、1ビット部分積発生回路84と、1ビ
ット乗算器85と、マルチプレクサ86とから構成されている。図7において、
乗算器アレイ77のセルのカラムは右から左へ番号が付けられており、乗算器ア
レイ77のカラムのセルは、トップから下の方に向かって番号が付けられている
。
図8は、乗数ビットのデコーダ76およびブースのアルゴリズムのベースでの
1ビット部分積発生回路84の実施形態を示している。乗数ビットのデコーダ7
6は排他的ORゲート87と、等価ゲート88と、NORゲート89とを含む。
1ビット部分積発生回路84はANDゲート90および91と、ORゲート92
と、排他的ORゲート93とを含む。
ブロック図が図9に示されている加算器回路は、第1の被加算値ベクトルの(
31)、そして第2の被加算値ベクトルの(32)ビットの入力と、被加算値ベ
クトルおよび和のベクトルに対するデータ境界設定の入力33と、和のベクトル
のビットの出力34とを備えている。加算器回路のN個の各ビット94は半加算
器95と、排他的ORゲート96と、第1(97)および第2(98)の反転入
力付きANDゲートとを含む。また、加算器回路はキャリー・ルック・アヘッド
回路99を含む。
本発明の実行の変形版
ブロック図が図1に示されているニューラル・プロセッサは、第1(1)、第
2(2)、第3(3)、第4(4)、第5(5)および第6(6)のレジスタと
、シフト・レジスタ7と、ANDゲート8と、第1(9)および第2(10)の
FIFOと、3から2へのスイッチ11と、マルチプレクサ12と、それぞれが
入力オペランド・ベクトルの入力15と、制御入力16および結果ベクトルの出
力17とを備えている第1(13)および第2(14)の飽和ユニットと、計算
ユニット18(第1(19)、第2(20)および第3(21)のオペランド・
ベクトルのビットの入力と、第1オペランド・ベクトルおよび結果ベクトル22
に対する、第2オペランド・ベクトル23に対する、そして第3オペランド・ベ
クトル24に対するデータ境界設定の入力と、第1のメモリ・ブロックへの第3
オペランド・ベクトルのロード制御の第1(25)
および第2(26)の入力と、第1のメモリ・ブロックから第2のメモリ・ブロ
ックへの第3オペランド行列の再ロード制御の入力27と、第2のメモリ・ブロ
ックに格納されている、第1オペランド・ベクトルと第3オペランド行列による
第2オペランド・ベクトルの乗算の積との加算の結果の第1(28)および第2
(29)の被加算値ベクトルの出力とを含んでいる)と、加算器回路30(第1
(31)および第2(32)の被加算値ベクトルのビットの入力と、被加算値ベ
クトルおよび和のベクトルに対するデータ境界設定入力33と、和のベクトルの
ビットの出力34とを含んでいる)とを含む。ニューラル・プロセッサは第1(
35)および第2(36)の入力バスと、出力バス37とを備えている。3から
2へのスイッチ11の制御入力38と、マルチプレクサ12の制御入力39と、
第1レジスタ1の制御入力40と、第2レジスタ2の制御入力41と、第3レジ
スタ3の制御入力42と、第4レジスタの制御入力43と、シフト・レジスタ7
の書込み制御入力44と、第1のFIFO 9の制御入力45と、第2のFIF
O 10の書込み(46)および読出し(47)の制御入力と、計算ユニット1
8の上記の制御入力26および27とがそれぞれニューラル・プロセッサの制御
入力である。第1のFIFO 9の状態出力48と、第2のFIFO 10の状
態出力49がニューラル・プロセッサの状態出力である。
3から2へのスイッチ11のビットの第1データ入力と、第1のFIFO 9
のデータ入力と、第1(1)、第2(2)、第3(3)および第4(4)のレジ
スタのデータ入力と、シフト・レジスタ7の並列データ入力とが結合されて、ニ
ューラル・プロセッサの第1入力バス35に接続され、ニューラル・プロセッサ
は、第2入力バス36のビットが3から2へのスイッチ11のそれぞれのビット
の第2データ入力に接続されている。3から2へのスイッチ11のビットの第1
出力が第1の飽和ユニット13の入力オペランド・ベクトルのそれぞれのビット
の入力15に接続され、そのビットの制御入力16が対応している第2レジスタ
2のビットの出力に接続されている。3から2へのスイッチ11のビットの第2
出力が第2飽和ユニット14の入力オペランド・ベクトルのそれぞれのビットの
入力15に接続され、そのビットの制御入力16が第3レジスタ3のそれぞれの
出力に接続されている。第1レジスタ1のビットの出力がマルチプレクサ12の
それぞれのビットの第1データ入力に接続され、そのビットの第2データ入力が
第1の飽和ユニットの13のそれぞれの結果ベクトル
の出力17に接続されている。マルチプレクサ12のビットの出力が計算ユニッ
ト18の第1オペランド・ベクトルのそれぞれビットの入力19に接続され、そ
の第2オペランド・ベクトルのビットの入力20が第2の飽和ユニット14の結
果ベクトルのそれぞれのビットの出力17に接続されている。第1のFIFO
9のデータ出力は計算ユニット18の第3オペランド・ベクトルのそれぞれのビ
ットの入力21に接続され、その結果の第1の被加算値ベクトルのビットの出力
28が加算器回路30の第1の被加算値ベクトルのそれぞれのビットの入力31
に接続され、その第2の加算されるの値のベクトルのビットの入力32が計算ユ
ニット18の結果の第2の被加算値ベクトルのそれぞれのビットの出力29に接
続され、その第1オペランド・ベクトルおよび結果ベクトルに対するデータ境界
設定の入力22が第5レジスタ5のそれぞれのビットの出力に対して、そして、
加算器回路30の被加算値ベクトルおよび和のベクトルに対するデータ境界設定
のそれぞれの入力33に接続され、その和のベクトルのビットの出力34が第2
のFIFO 10のそれぞれのデータ入力に接続され、そのデータ出力がニュー
ラル・プロセッサの出力バス37のそれぞれのビットに対して、そして3から2
へのスイッチ11のそれぞれのビットの第3入力に接続されている。第4レジス
タ4のビットの出力が、第5レジスタ5のそれぞれのビットのデータ入力に対し
て、そして計算ユニット18の第3オペランド・ベクトルに対するデータ境界設
定のそれぞれの入力24に接続され、その第2オペランド・ベクトルに対するデ
ータ境界設定の入力23が第6レジスタ6のそれぞれのビットの出力に接続され
、第6レジスタは、データ入力がシフト・レジスタ7のそれぞれのビットの出力
に接続され、シフト・レジスタ7は、シーケンシャルなデータ入力および出力が
計算ユニット18の第1メモリ・ブロックへの第3オペランド・ベクトルのロー
ド制御の第1入力25に対して、そしてANDゲート8の第1入力に対して結合
されて接続され、ゲート8の出力が第1のFIFO 9の読出し制御入力に接続
されている。シフト・レジスタ7のシフト制御入力がANDゲート8の第2入力
に対して、そして計算ユニット18の第1メモリ・ブロックへの第3オペランド
・ベクトルのロード制御の入力26に接続され、計算ユニットは、第1メモリ・
ブロックから第2メモリ・ブロックへの第3オペランド行列の再ロード制御の入
力27が、第5(5)および第6(6)のレジスタの制御入力に接続されている
。
ニューラル・プロセッサの実行ユニットは第1(13)および第2(14)の
飽和ユニット、計算ユニット18および加算器回路30である。これらの各ユニ
ットはプログラム可能なワード長のデータのベクトルについて2の補数での演算
を実行する。
ニューラル・プロセッサの動作の各クロック・サイクルにおいて、計算ユニッ
ト18はベクトルY=(Y1 Y2 Λ YK)の乗算の部分積を発生し、その部
分積のビットが計算ユニット18の入力20に対して、
第2メモリ・ブロックの中に以前にロードされて格納され、これが
ベクトルX=(X1 X2 Λ XM)の得られた積に対する加算を伴い、ベクト
ルXのビットが計算ユニット18の入力19に対して供給される。そして、計算
ユニット18の出力28および29において、A=(A1 A2 Λ AM)およ
びB(B1 B2 Λ BM)のベクトルのビットが発生され、その和がX+Y×
Zの演算の結果である。すなわち、ベクトルAおよびBのm番目の要素の和が次
の式によって定義される。
ベクトルXは2の補数表示でのこのベクトルの要素であるM個のパックされた
データの1つのNビット・ワードである。そしてベクトルXの最下位ビットは第
1のデータX1のビットであり、その次に第2データX2のビットが続く。以下同
様である。ベクトルXの最上位ビットはM番目のXMのビットである。そのよう
なパッキングに
のビットであり、ここで、NmはベクトルXのn番目のデータXmのワード長であ
り、V=1,2,...,Nm(m=1,2,...,M)である。
ベクトルXの中のデータMの数およびこのベクトルのm番目のXmの中のビット
Nmの数は1からNまでの任意の整数値であってよい。ここで、m=1,2,.
..,Mである。唯一の制限は1つのベクトルXの中にパックされているすべて
のデータの合計のワード長がそのワード長に等しくなければならないことである
。
ベクトルYはこのベクトルの要素であるK個のパックされたデータの2の補数
表示でのNビット・ワードである。ベクトルYのフォーマットはベクトルXのフ
ォーマットと同じである。しかし、これらのベクトルは、これらのベクトルの中
にパックされている要素の数および別々のデータのワード長において異なる可能
性がある。ベクトルYの中にパックされている各データの最小限のワード長Jは
、計算ユニット18の中の乗算のハードウェア実装によって定義される。部分積
のアルゴリズムが実装されている時、Jは1に等しく、修正されたブースのアル
ゴリズムが実装されている時は、Jは2に等しい。ベクトルYのk番目のデータ
YKの中のビットN’kの数はJの倍数であるJからNまでの任意の整数値であっ
てよい。ここで、k=1,2,...,Kである。ベクトルYの中のデータの数
Kは1からN/Jまでの任意の整数であってよい。しかし、1つのベクトルYの
中にパックされるすべてのデータの合計ワード長はそのワード長に等しくなけれ
ばならない。
行列Zのk番目のロウはデータ・ベクトルZK=(ZK,1 ZK,2 K Zk,M)
であり、ここで、k=1,2,...,Kである。そして、Z1,Z2,...,
ZKの各ベクトルは、フォーマットがベクトルXのフォーマットと同じでなけれ
ばならない。
計算ユニット18の出力28および29において発生されるベクトルAおよび
BのフォーマットはベクトルXのフォーマットと同じである。
必要なフォーマットのベクトルを処理するための計算ユニット18のハードウ
ェア
のチューニングは、第5レジスタ5に対してNビットの制御ワードHをロードす
る手段によって行われ、レジスタ5の出力は計算ユニット18の入力22に接続
され、そして(N/J)ビットの制御ワードEは第6レジスタ6に接続され、レ
ジスタ6の出力は計算ユニット18の入力26に接続されている。
ワードHのn番目のビットhnの値が1であることは、計算ユニット18が各
ベクトルX,Z1,Z2,...,ZKのn番目のビットを、このベクトルの対応
している要素の最上位(符号)ビットとみなすことを意味する。ワードhの中で
値が1であるビットの数は各ベクトルX,Z1,Z2,...,ZKの中の要素の
数に等しい。
ワードEのi番目のビットe1の値が1であることは、計算ユニット18がベ
クトルYのi番目のJビット・グルーブを、このベクトルの対応している要素の
最下位ビットのグルーブとみなすことを意味する。ワードEの中の値が1である
ビットの数はベクトルYの中の要素の数に等しい。
計算ユニット18が上記のように動作できる前に、マトリックスZを計算ユニ
ット18の第2メモリブロックへの挿入と制御ワードHおよびEの第5および第
6のレジスタへの挿入の手順がそれぞれ実行されなければならない。
この手順はいくつかの段に対して実行される。
最初、ベクトルZ1,Z2,...,ZKが、ニューラル・プロセッサの第1入
力バス35から第1のFIFO 9に対して順次書き込まれる。行列Zの全体が
Kクロック・サイクルで第1のFIFO 9に対してロードされ、それらの各々
において、第1のFIFO 9の書込み制御のアクティブ信号がニューラル・プ
ロセッサの入力45に対して印加される。
次に、制御ワードHがニューラル・プロセッサの第1入力バス35から第4レ
ジスタ4へロードされ、そしてそれを行うために、第4レジスタ4に対する書込
みをイネ
ーブルするアクティブ信号が1クロック・サイクルの間、ニューラル・プロセッ
サの入力43に対して印加される。次のクロック・サイクルにおいて、制御ワー
ドEがニューラル・プロセッサの第1入力バス35からシフト・レジスタ7へロ
ードされ、それを行うために、シフト・レジスタ7に対する書込みをイネーブル
するアクティブ信号が1クロック・サイクルの間、ニューラル・プロセッサの入
力44に印加される。
次のN/J個のクロック・サイクルの間に行列Zが第1のFIFO 9から計
算ユニット18の第1メモリ・ブロックに対して転送される。これらのN/J個
の各クロック・サイクルにおいて、アクティブな制御信号がニューラル・プロセ
ッサの制御入力に対して、シフト・レジスタ7のシフト制御入力に対して、AN
Dゲート8の入力の1つに対して、そして計算ユニット18の入力26に接続さ
れる。各クロック・サイクルにおいて、この信号はシフト・レジスタ7の内容の
1ビット右シフトを起動し、したがって、制御ワードEの次のビットをそのシリ
アル出力へ送り出す。シフト・レジスタのシリアル出力からの信号が、計算ユニ
ット18の制御入力25に対して、そしてANDゲート8の入力の1つに対して
印加される。この信号の値が1である場合、アクティブな信号がANDゲート8
の出力において発生され、それは第1のFIFO 9の読出し制御入力を供給す
る。その結果として、ベクトルZ1,Z2,...,Zkのうちの1つが第1のF
IFO 9から計算ユニット18の入力21に対して印加され、そしてこのベク
トルが計算ユニット18の第1メモリ・ブロックに対して書き込られる。1つの
ベクトルZKをロードするのに必要なクロック・サイクルの数は、ベクトルYの
中に含まれているオペランドYkのワード長N’kに依存し、そしてN’k/J(
k=1,2,...,K)に等しい。計算ユニット18の第1メモリ・ブロック
への行列Zのローディングの間に、第4レジスタ4の中にこの時常に記憶されて
いる制御ワードHが、必要なフォーマットのベクトルZ1,Z2,...,Zkを
受信するためのそのハードウェアをチューニングする目的で、計算ユニット18
の入力24に対して印加される。シフト・レジスタ7のシリアル出力からの信号
はそのシリアル・データ入力に対しても印加されるので、そしてシフト・レジス
タ7のワード長がN/J個に等しいので、計算ユニット18の第1メモリ・ブロ
ックへの行列Zのローディングのプロセスが完了した時、シフト・レジスタ7は
この手順の前と同じデータ、すなわち、制御ワードEを含んでいることになる。
その後、アクティブ信号が計算ユニットの制御入力27に対して印加され、そ
して第5および第6レジスタの制御入力に対して、そしてニューラル・プロセッ
サの制御入力に対して接続される。その結果として、行列Zが計算ユニットの第
1メモリ・ブロックから第2メモリ・ブロックへロードされ、制御ワードHが第
4レジスタ4から第5レジスタ5に対して再び書き込まれ、制御ワードEがシフ
ト・レジスタ7から第6レジスタ6へ1クロック・サイクルで再び書き込まれる
。
次のクロック・サイクルからスタートして、計算ユニット18が上記の演算を
毎クロック・サイクルにおいて実行する。
A+B=X+Y×Z
加算器回路30は計算ユニット18の出力28および29からその入力31お
よび32に対して印加されているベクトルAとBとの加算を各クロック・サイク
ルにおいて実行する。そして加算器回路30の出力34において、ベクトルS=
(S1 S2 Λ SM)が発生され、そのm番目の要素がベクトルAとBのm番
目の要素の和に等しい。
Sm=Am+Bm (m=1,2,...,M)
そしてベクトルSのフォーマットはベクトルAおよびBのフォーマットと同じ
になる。所望のフォーマットのベクトルを処理するための加算器回路30のハー
ドウェアのチューニングは第5レジスタ5の中に格納されている制御ワードHを
、加算器回路30の入力33に対して供給する手段によって提供される。
したがって、計算ユニット18と加算器回路30とのシーケンシャルな接続に
よって、プログラム可能なワード長のデータのベクトルについての演算S=X+
Y×Zを、各クロック・サイクルにおいて実行することができる。異なる組の入
力オペランド・ベクトルについてのこの演算の結果が、中間結果のアキュムレー
タとして機能する第2のFIFO 10に対して書き込まれ、そしてそれを行う
ために、第2のFIFO 10に対する書込みをイネーブルする信号がニューラ
ル・プロセッサの入力46に印加される。
計算ユニット18および加算器回路30は、計算ユニット18の入力20に印
加されている1つのNビット・ベクトルYの中にパックされているK個のデータ
の、加算器回路30の出力34において発生されるNビット・ベクトルSの中に
パックされて
いるM個のデータに対する1サイクル・スイッチとして使うことができる。その
ようなスイッチングは演算S=X+Y×Zの実行の手段によって行われ、ここで
、ベクトルXは計算ユニット18の入力19に対して印加され、このベクトルの
すべてのビットの値は0であり、そして計算ユニット18の第2メモリ・ブロッ
クの中に行列Zが格納され、それがスイッチングの規則を定義する。また、行列
Zは次の条件を満足する必要がある。すなわち、行列Zのk番目のロウとm番目
のカラムの交点にある要素Zk,mが、ベクトルSのm番目の要素Smがベクトル
Yのk番目の要素Ykに等しいことが要求される場合に、値が1‐00...0
1)bでなければならず、それ以外の場合はその値は0‐00...00)bで
なければならないこと;行列Zのk番目のロウであるZkのフォーマットがベク
トルSのフォーマットと同じであること;そして行列Zの各カラムが、値が1で
ある要素を2つ以上は含まないこと(k=1,2,...,K;m=1,2,.
..,M)である。ベクトルSの必要なフォーマットを定義している制御ワード
Hを第5のレジスタ5に対して、ベクトルYの必要なフォーマットを定義してい
る制御ワードEを第6レジスタ6に対して、そして交換規則を定義している行列
Zを計算ユニット18の第2メモリ・ブロックに対してロードする上記手順がス
イッチング動作の前に前もって行われる必要がある。
演算S=X+Y×Zは1クロック・サイクルで実行され、一方、計算ユニット
18の第1メモリ・ブロックへの行列Zのローディングのプロセスは、N/J個
のクロック・サイクル以上を占める。したがって、ニューラル・プロセッサのコ
ンピューティング・リソースの効果的な使用は、データ・ベクトルのパッケージ
が処理される時、そしてそれをサポートするために、第2メモリ・ブロックが計
算ユニット18に対して組み込まれ、1つのレジスタではなく、2ポートのFI
FOが中間結果のアキュムレータの10として使われている時だけ達成される。
パッケージ処理において、計算ユニット18の入力19および20のそれぞれ
に対してシーケンシャルに印加される入力オペランド・ベクトルの組が、次々に
処理されるサブセット(パッケージ)に分割される。計算ユニット18の入力1
9および20のそれぞれに対してシーケンシャルに印加され、そしてτ番目のパ
ッケージに対して含められる入力オペランド・ベクトルの組を次のデータ・ベク
トルの形式で表すことができる。
ここで、Tτはすべてのτ番目のパッケージの中に含められているベクトルの
数である。また、1つのパッケージの中のすべてのベクトルのフォーマットが同
じである必要がある。すなわち、第5および第6のレジスタの内容は1つのパッ
ケージの処理中には変化せずに残っている必要がある。
τ番目のパッケージXτおよびYτの処理はTτクロック・サイクルで実行さ
れる。そしてt番目のクロック・サイクルにおいて、計算ユニット18および加
算器回路30は次の演算を実行する。
ここで、Zτは計算ユニット18の第2メモリ・ブロックの内容であり、それは
τ番目のパッケージXτおよびYτの処理の間、変わらずに残っている必要があ
る。τ番目のパッケージXτおよびYτの処理の全体プロセスは、結果の累積を
伴うデータ行列Zτによるデータ行列Yτの乗算の手順とみなすことができる。
τ番目のベクトルのパッケージ処理と同時に、(τ+1)番目のパッケージXτ+1
のベクトルのフォーマットを定義している制御ワードHτ1の第4レジスタ
4へのローディング、(τ+1)番目のパッケージYτ+1のベクトルのフォーマ
ットを定義している制御ワードEτ+1のシフト・レジスタ7に対するローディン
グ、および第1のFIFO 9から計算ユニット18の第1メモリ・ブロックへ
の行列Zτ+1の転送の上記の手順が次々に実行される。(τ+1)番目のパッケ
ージXτ+1のベクトルのフォーマットがτ番目のパッケージXτのフォーマット
と異なっている時だけ第4レジスタ4に対して新しい値をロードすることが必要
であり、そして(τ+1)番目のパッケージYτ+1のベクトルのフォーマットが
τ番目のパッケージYτのベクトルのフォーマットと異なっている場合にのみ、
シフト・レジスタ7に対して新しい値をロードする必要がある。この手順はN/
J+2より多いクロック・サイクルは占有しない。
上記のプロセスの両方が完了すると、第4レジスタ4から第5レジスタ5への
ワードHτ+1の転送、シフト・レジスタ7から第6レジスタ6へのワードEτ+1
の転送、そして計算ユニット18の第1メモリ・ブロックから第2メモリ・ブロ
ックへの行列Zτ+1の転送を同時に開始するアクティブ信号が、ニューラル・プ
ロセッサの制御入力27に印加される。これらの転送はすべて1クロック・サイ
クルで実行される。
すべてのτ番目のパッケージにおけるベクトルTτの数はプログラム・モード
において決定されるが、それは第2のFIFO 10の中のセルの数に等しい値
Tmaxを超えてはならない。他方、TτがN/J+2より小さいベクトルのパッ
ケージを使うことは得策ではない。というのは、この場合、ニューラル・プロセ
ッサのコンピューティング・ファシリティが効率的に使われないからである。
第1のFIFO 9から計算ユニット18の第1メモリ・ブロックへの行列Zτ+1
の転送と同時に、ニューラル・プロセッサ第1入力バス35から第1のFI
FO 9への行列Zτ+2,Zτ+3などを構成する第3オペランド・ベクトルの次
々のローディングを実行することができる。
その同時プロセスはすべてニューラル・プロセッサの出力48および49に対
して印加される第1(9)および第2(10)のFIFOの状態の信号を解析す
る手段によって、そしてニューラル・プロセッサの対応している入力に対して印
加される制御信号の手段によって同期化される。
3から2へのスイッチ11およびマルチプレクサ12は交換システムを形成し
、そのために、第2のFIFO 10の内容またはニューラル・プロセッサの入
力バス35または36の1つから供給されるデータを、計算ユニット18の第2
オペランド・ベクトルの入力20に対するように、第1オペランド・ベクトルの
入力19に対して印加することができる。さらに、ニューラル・プロセッサの制
御入力40に対するアクティブ信号の供給によって、ニューラル・プロセッサの
第1入力バス35から以前に書き込まれたレジスタ1の内容を、計算ユニット1
8の入力19に印加することができる。計算ユニット18の入力19および20
に対して印加されるデータのソースの選択は、ニューラル・プロセッサの制御入
力38および39上に信号のある種の組合せを設定する手段によって行われる。
そしてデータのソースが第2のFIFO 10であった場合、第2のFIFO
10から読み出すことをイネーブルする信号が
ニューラル・プロセッサの制御入力47に印加される必要がある。
計算ユニット18の入力19および20に対して、第2のFIFO 10から
、あるいはニューラル・プロセッサの入力バス35または36のうちの1つから
印加されるデータのベクトルは飽和ユニット13および14を通過する。ユニッ
ト13および14はそれぞれ1クロック・サイクルにおいて、このデバイスの入
力15に印加されるベクトルD=(D1 D2 Λ DL)の各要素から飽和関数
を計算する。
ベクトルDはこのベクトルの要素であるL個のパックされたデータの2の補数
表示でのNビットのワードである。ベクトルDのフォーマットは上記のベクトル
Xのフォーマットと同じである。しかし、これらのベクトルはそれらの中にパッ
クされている要素の個数および別々のデータのワード長において異なる可能性が
ある。ベクトルDを構成しているデータの最小限のワード長は2に等しい。ベク
トルDの中のデータの数Lは1からN/2までの任意の整数値であってよい。し
かし、1つのベクトルDの中にパックされるすべてのデータの合計ワード長は、
次の式で示されるようにそのワード長に等しい必要がある。
飽和ユニット13または14の出力17において、ベクトルF=(F1 F2
Λ FL)が発生され、そのフォーマットはベクトルDのフォーマットと同じで
ある。そしてベクトルFのλ番目の要素FλはベクトルDのλ番目のオペランド
Dλについて次のように飽和関数を計算した結果である。
ここで、Qλはオペランド・ベクトルDλ(λ=1,2,...,L)に対して
計算される飽和関数のパラメータである。ユニット13および14によって計算
される飽和関数の一般的な概念が図2に示されており、次の式によって記述する
ことができる。
符号ビットを考慮しない場合のベクトルFの要素Fλの中の意味のあるビット
の数はパラメータQλ(λ=1,2,...,L)の値に等しい。値Qλはオペ
ランドDλおよびFλのワード長N”λより小さい必要がある。
ベクトルDおよびFの必要なフォーマットに対して、また、実装されている飽
和関数のパラメータの必要な値に対して飽和ユニット13または14のそれぞれ
のハードウェアをチューニングすることは、前記ユニットの制御入力16に対し
てNビットの制御ワードUを設定する手段によって行われる。
そしてワードUのビットは次の値を有する必要がある。第1ビットから(Q1
)番目のビットまではそれぞれ値が0であり、(Q1+1)番目から(N1”)番
目のビットまではそれぞれ値が1であり、(N1”+1)番目から(N1”+Q2
)番目までのビットはそれぞれ値が0であり、(N1”+Q2+1)番目から(N1
”+N2”)番目までのビットはそれぞれ値が1であり、以下同様である。一般
的なケースにおいては、までのビットは、それぞれ値が1でなければならない(λ=1,2,...,L
)。
ワードUのn番目のビットの値が1に等しく(un=1)、そして(n+1)
番目のビットの値が0に等しい(un+1=0)場合、飽和ユニット13または1
4はベクトルDのn番目のビットをこのベクトルの対応している要素の最上位(
符号)ビットとみなす。ワードUの中の0のビットの数は結果のベクトルFのす
べての要素の中の意味のあるビットの合計数に等しい。
U=(100...0)bであった場合、飽和ユニット13または14の入力
15からのデータは変化せずに出力17へ通過する(F=D)。
第1の飽和ユニット13の制御ワードはニューラル・プロセッサの第1入力バ
ス35から第2レジスタ2にロードされる。レジスタ2の出力は飽和ユニット1
3の制御入力16に接続されている。このロードは第2レジスタ2の制御入力4
1に印加されるアクティブ信号の手段によって1クロック・サイクルで実行され
る。
第2の飽和ユニット14の制御ワードはニューラル・プロセッサの第1入力バ
ス35から第3レジスタ3へロードされ、レジスタ3の出力は飽和ユニット14
の制御入力16に接続されている。このロードは第3レジスタ3の制御入力42
に印加されるアクティブ信号の手段によって1クロック・サイクルで実行される
。
飽和ユニット13および14は、入力のオペランド・ベクトルが処理される時
に算術的オーバフローを防止するために有効な媒体である。
13または14の各飽和ユニットによって、処理されるデータ・ベクトルの要
素の中の意味のあるビットの数だけを減らすことができる。そのデータ・ベクト
ルの別々の要素のワード長およびそのフォーマットは不変のままである。同時に
、ある場合には、この要素の符号ビットの拡張であるすべての上位ビットを捨て
る手段によって、結果ベクトルのすべての要素のワード長を減らしてデータ・ベ
クトルの要素に対する飽和関数を計算することが得策である。飽和ユニット14
の出力17において発生される、ベクトルF=(F1 F2 Λ FL)の要素の
そのようなワード長の削減および、この削減によるベクトル内での要素の再パッ
ケージ化は、計算ユニット18および加算器回路30の手段によって1クロック
・サイクルで実行することができ、それは2LのダイレクションからL+1への
データのスイッチとして動作する。一例として、加算器回路30の出力34にお
いて発生されるベクトルFのベクトルS=(S1 S2 Λ SL+1)への変換が
以下に説明される。ここで、λ番目の要素SλはベクトルFのλ番目(λ=1,
2,...,L)の要素Fλの下位(意味のある)ビットのQλ+1であり、ベ
クトルSの最上位ビットにある(L+1)番目の要素SL+1は(00...0)
bに等しい。ユニット14の出力17において発生されるベクトルFは、計算ユ
ニット18の入力20に対して印加されるベクトルY=(Y1 Y2 Λ Y2L)
の形式で表すことができ、ここで、要素のλ番目のペアの第1の要素
Y2 λ-1および第2の要素Y2 λは、それぞれベクトルFのλ番目の要素Nλ”と
の要素Fλの下位のQλ+1および最上位のNλ”−Qλ−1のビットである(
λ=1,2,...,L)。データ・スイッチング・モードにおいては、0の値
が計算ユニット18の入力19に対して印加され、そしてこのことによって計算
ユニット18の第2メモリ・ブロックの中に格納されるベクトルYに行列Zを乗
算した結果が、加算器回路30の出力34において発生される。この結果は、上
記のベクトルSのフォーマットを定義している制御ワードHが第5レジスタ5の
中に格納され、上記のベクトルYのフォーマットを定義している制御ワードEが
第6レジスタ6の中に格納され、そして2L個のロウのそれぞれの中にL+1個
の要素お含んでいる行列Zが計算ユニット18の第2メモリ・ブロックの中に格
納されている場合、要求されたフォーマットのベクトルSとなる。また、行列Z
は次の条件を満足する必要がある。すなわち、行列Zのλ番目のカラムの各要素
のワード長はQλ+1に等しくなければならない;行列Zの(2λ−1)番目のロ
ウとλ番目のカラムとの交点にある要素Z2 λ-1、λの値は1‐(00...01
)bでなければならず、そして行列Zの残りの要素の値は0‐(00...00
)b(λ=1,2,...,L)でなければならない。
飽和ユニット14の出力17において発生される、ベクトルFの転送の上記の
動作の実行において、ベクトルX=(X1 X2 Λ XM+1)が計算ユニット1
8の入力19に印加され、その第1要素X1が0に等しく、そのワード長が
出力34において発生され、ここで、λ番目の要素SλはベクトルFのλ番目の
(λ=1,2,...,L)要素Fλの下位(意味のある)ビットのQλ+1で
あり、(L+m)番目の要素はベクトルXのm+1番目の要素Xm+1(m=1,
2,...,M)に等しい。したがって、ニューラル・プロセッサによって入力
データ・ベクトルの要素についての飽和を実行すること、そしてその得られた結
果を別の入力データ・ベクトルに対して1クロック・サイクルでパックすること
ができる。
ニューラル・プロセッサの主な機能は各種のニューラル・ネットワークのエミ
ュレーションである。一般の場合において、1つのニューラル・ネットワーク層
は、Ω個
のニューロンから構成され、Θ個のニューラル入力を備えている。そしてω番目
のニューロンはそのニューロンのバイアスVωを考慮に入れて、それぞれのニュ
ーラル入力に対して印加されるΘ個のデータC1,C2,...,CΘの重み付け
られた合計演算を次の式のように実行する。
2,...,Θ;ω1,2,...,Ω)である。次に、ω番目のニューロンは
重み付けられた合計演算の結果Gωについて飽和関数ΨQ ωを次のように計算す
る。
ニューラル・プロセッサによって実施される飽和関数の一般的な概念が図2に
示されている。入力データ、重み係数バイアス値および結果はすべて2の補数と
して表されている。
提案されているニューラル・プロセッサの特異性は、ブログラム・モードにお
いて次のニューラル・ネットワーク・パラメータをユーザが設定できることであ
る。それらは、層の数、各層におけるニューロンおよびニューラル入力の数、各
ニューラル入力におけるデータのワード長、各重み係数のワード長、各ニューロ
ンの出力値のワード長および、各ニューロンに対する飽和関数のパラメータであ
る。
1つのニューラル・プロセッサが、実際的に無制限のサイズのニューラル・ネ
ットワークをエミュレートすることができる。ニューラル・ネットワークは層ご
とに(層から層へシーケンシャルに)エミュレートされる。
各ニューラル・ネットワーク層は順次処理されるフラグメントに分割されてい
る。この分割は次の方法で行われる。1つの層のニューラル入力の集合がグルー
プに分けられ、各グループの入力のすべての入力に対して印加されるデータの合
計ワード長が、そのニューラル・プロセッサのワード長Nに等しいようにされる
。1つの層のニューロンの集合は、ニューロンのグループに分けられ、各ニュー
ロン・グループに対する
すべての入力データの重み付けられた合計演算の結果の合計ワード長が、そのニ
ューラル・プロセッサのワード長Nに等しいようにされる。また、ニューラル・
ネットワーク層全体が機能の異なる2つのタイプのフラグメントに分割される。
第1のタイプの各フラグメントは、1つのニューロン・グループからのすべての
ニューロンに対して、入力の1つのグループの中に含められるすべてのニューラ
ル入力に対して印加されたデータの重み付けられた合計演算を実行する。第2の
タイプの各フラグメントはすべての入力データの重み付けられた合計演算の結果
についての飽和関数の計算の手段によって、1つのニューロン・グループからの
すべてのニューロンに対する出力値を発生する。
図3は上記のニューラル・ネットワーク層のフラグメントへの分割の例として
使うことができる。このために、図3に示されている各ブロックが、Nビットの
データ・ベクトルについて演算を実行すると考えること、そしてこの図の中の指
定を次のように扱うことが必要である。
印加されるデータのベクトル。
Vω‐ω番目のニューロン・グループ(ω=1,2,...,Ω)のバイアス
値のベクトル。
入力データの重み係数の行列。
Gω‐ω番目のニューロン・グループ(ω=1,2,...,Ω)の中の入力
データの重み付けられた合計演算の結果のベクトル。
Rω‐ω番目のニューロン・グループ(ω=1,2,...,Ω)の出力値の
ベクトル。
図3において、乗算および加算を実行している一対のデバイスは、第1のタイプ
の各フラグメントに対応し、そして1つの飽和ユニットが第2タイプの各フラグ
メントに対応する。
1つのニューラル・プロセッサ上でのニューラル・ネットワーク全体のエミュ
レーションのプロセスはΩ個の連続的に実行される手順の形式で示すことができ
、それら
の各手順は1つのニューロン・グループをエミュレートし、Θ+1個の次々に実
行されるマクロ演算から構成され、それらの各演算は1つのニューラル・ネット
ワーク層目のグループに対して印加されたデータの、結果の累積を伴う重み付けられた合
計演
のタイプのフラグメントをエミュレートし、それは対応しているニューロン・グ
ループに対して、すべてのニューラル入力に対して印加されたデータの重み付け
られた合計値について飽和関数を実行する。
ニューラル・ネットワーク層のエミュレーションの間に実行される各マクロ演
算は、準備のフェーズおよび実行のフェーズを有している。ニューラル入力に対
して印加されたデータは、パッケージ・モードで、各パッケージにおいてT個の
入力データごとに処理される。
ニューロンのエミュレーション手順のω番目のグループの最初のマクロ演算の
準備フェーズの間に、次の演算が次々に実行される。ベクトルVωがニューラル
・プロセッサの第1入力バス35から第1レジスタ1へロードされる。ニューラ
ル・プロセッサの第1入力バス35から第4レジスタ4へ制御ワードがロードさ
れ、それはすべて
ベクトルVωとすべての部分和のフォーマットを定義する。1つの制御ワードが
ニューラル・プロセッサの第1入力バス35からシフト・レジスタ7へロードさ
れ、それはニューラル入力の第1グループに印加されるデータ・ベクトルのフォ
ーマットを定義する。行列W1, ωが第1のFIFO 9から転送され、ここで、
この行列はニューラル・プロセッサの第1入力バス35から、計算ユニット18
の第1メモリ・ブロックへ以前にロードされていなければならない。
ω番目のニューロン・グループのエミュレーション手順の第1のマクロ演算の
実行フェーズのt番目のクロック・サイクルごとに、Vωが第1レジスタ1から
計算ユニット18の第1オペランド・ベクトル19の入力に印加され、そして、
入力データのt番目の組であるベクトルCt 1が、その層のニューラル入力の第1
グループから供給されてニューラル・プロセッサの第2入力バス36から計算ユ
ニット18の第2オペ
ランド・ベクトル20の入力に対して印加される(t=1,2,...,T)。
また、計算ユニット18および加算器回路30は次の部分積ベクトルを発生する
。
これは第2のFIFO 10へ書き込まれる。そして、第2のニューロン・グル
ープのエミュレーションの手順かスタートして、この演算と同時にニューラル・
プロセッサの出力バス37経由で第2のFIFO 10のセルの1つの内容の外
部メモリへの転送が各クロック・サイクルにおいて実行される。
ω番目のニューロンのエミュレーション手順のθ番目のマクロ演算(θ=2,
3,....,Θ)の準備のフェーズの間に、次の演算が次々に実行される。1
つの制御ワードがニューラル・プロセッサの第1入力バス35からシフト・レジ
スタ7へロードされ、それはニューラル入力のθ番目のグループに対して印加さ
れるデータ・ベクトルのフォーマットを定義する。行列Wθ,ωが第1のFIF
O 9から転送され、ここで、この行列はニューラル・プロセッサの第1入力バ
ス35から、計算ユニット18の第1メモリ・ブロックへ以前にロードされてい
なければならない。
ω番目のニューロン・グループのエミュレーション手順のθ番目のマクロ演算
(θ=2,3,...,Θ)の実行フェーズのt番目のクロック・サイクルごと
に、前のマクロ演算の結果として発生された部分積ベクトルGt θ-1,ωが第2の
FIFO 10から計算ユニット18の第1オペランド・ベクトルの入力19へ
印加され、そして入力データのt番目の組であるベクトルCt θが、その層のニ
ューロン入力のθ番目のグループを提供し、ニューラル・プロセッサの第2入力
バス36から計算ユニット18の第2オペランド・ベクトルの入力20へ印加さ
れる(t=1,2,...,T)。また、計算ユニット18および加算器回路3
0は次の部分積ベクトルを形成する。これが第2のFIFO 10へ書き込まれる。
ニューロン・グループのすべてのエミュレーション手順のうちのΘ個の第1の
マク
ロ演算の実行において、入力データの重み付けられた合計演算の間の算術的オー
バフローの可能性を排除するため、部分和の値を制限するために、飽和ユニット
13を使うことができる。この場合、マクロ演算の準備のフェーズはニューラル
・プロセッサの第1入力バス35からの第2レジスタ2への制御ワードのロード
を含む必要がある。
ω番目のニューロン・グループのエミュレーション手順の(Θ+1)番目のマ
クロ演算(θ=2,3,...,Θ)の準備フェーズの間に次の演算が次々に実
行される。1つの制御ワードがニューラル・プロセッサの第1入力バス35から
第3レジスタ3へロードされ、それはω番目のニューロン・グループに対して計
算される飽和関数のパラメータを定義する。次に、その飽和関数の計算の結果の
圧縮およびパッキグングの実行のために必要な制御データが、第4レジスタ4に
対して、シフト・レジスタ7に対して、そして計算ユニット18の第1メモリ・
ブロックに対してロードされる。
ω番目のニューロン・グループのエミュレーションの手順の(Θ+1)番目の
マクロ演算の実行フェーズのt番目のクロック・サイクルごとに、部分和ベクト
ルGt Θ,ωが飽和ユニット14の入力15に対して第2のFIFO 10から印
加され、そして、この結果として、次のベクトルが飽和ユニット14の出力17
において発生される。
これは次に計算ユニット18の入力20に印加される。計算ユニット18および
加算器回路30はベクトルRt ωのすべての要素から、符号ビットの拡張である
すべてのビットを除去する手段によって、ベクトルRt ωを圧縮する。この場合
、0のベクトルが計算ユニット18の入力19に印加されるのではなく、ニュー
ラル・プロセッサの入力バス35または36のうちの1つからデータ・ベクトル
が印加された場合、ベクトルRt ωの圧縮の結果はその入力データ・ベクトルに
対してパックされることになる。(ω−1)番目のニューロン・グループのエミ
ュレーション手順の(Θ+1)番目のマクロ演算の実行フェーズのt番目のクロ
ック・サイクルにおいて得られ、そして外部メモリに格納された結果を、そのよ
うなベクトルとして使うことができる。その結果が第2のFIFO 10へ記録
される。
ニューラル・ネットワークのフラグメントのエミュレーションの任意のマクロ
演算が実行中である時、準備フェーズから実行フェーズへの切り換わりが、実行
フェーズの第1クロック・サイクルに先立って1クロック・サイクルにおいてニ
ューラル・プロセッサの制御入力27に対してアクティブ信号を供給することに
よって発生する。そして、第4レジスタ4の内容が第5レジスタ5へ書き直され
、シフト・レジスタ7の内容が第6レジスタ6へ書き直され、そして計算ユニッ
ト18の第1メモリ・ブロックの内容がその第2メモリ・ブロックへ転送される
。
マクロ演算の次々の実行がパイプライン・モードでニューラル・プロセッサに
よって実行され、その中で現在のマクロ演算の実行フェーズが次のマクロ演算の
準備フェーズと同時に実行される。マクロ演算の準備フェーズのすべての動作の
実行に必要なクロック・サイクルの数は、ニューラル・プロセッサのレジスタに
ロードされている制御ワードの数に依存して、N/JからN/J+4までの範囲
内にある。任意のマクロ演算の実行フェーズに対して必要なクロック・サイクル
の数は、ユーザによって割り当てられた処理された入力データ・セットTの数に
等しい。したがって、マクロ演算の実行の最小限の周期は準備フェーズの持続時
間によって決定され、N/J個のプロセッサ・クロック・サイクルの持続時間に
等しい。N/Jに等しい値を選択するのが得策である。というのは、Tより小さ
い値では、ニューラル・プロセッサ・ユニットは効率的には使われず、Tより大
きい値では、ニューラル入力における次のデータ・セットに対するニューラル・
プロセッサの反応時間が増加し、そのことはリアルタイムのニューラル・ネット
ワークのエミュレーションにとっては望ましくない。
一般のケースにおいては、ニューラル・ネットワーク層のエミュレーションの
プロセスはΩ×(Θ+1)個のフラグメントに分割され、T個の入力データ・セ
ットに対してΩ×(Θ+1)×T個のクロック・サイクルで、ただし、Ω×(Θ
+1)×N/J個のクロック・サイクルより少なくないサイクルで、1つのニュ
ーラル・プロセッサ上で実行される。
すべてのニューラル入力に対して印加されるデータの合計ワード長、およびす
べてのニューロンに対する重み付けられた合計演算の結果の合計ワード長が、そ
のニューラル・プロセッサのビット長Nをそれぞれ超えないような小規模なニュ
ーラル・ネットワークは、2つのマクロ演算の実行によってエミュレートされる
。第1のマクロ演
算はその層のすべてのニューロンに対するすべての入力データの重み付けられた
合計演算をエミュレートし、そして第2のマクロ演算は、その層のすべてのニュ
ーロンに対する飽和関数の計算をエミュレートする。
ニューラル・プロセッサにおいて2つの入力バス35おび36と、1つの出力
バス37が存在することによって、それに基づいて効果的なマルチプロセッサ・
システムを生成することができる。Ξ個のニューラル・プロセッサから構成され
ているシステムは1つのニューラル・プロセッサのシステムおりΞ倍速くニュー
ラル・ネットワーク層をエミュレートする。極端なケースにおいては、すべての
層のすべてのフラグメントを別々のニューラル・プロセッサによってエミュレー
トすることができる。
ニューラル・プロセッサのメインのユニットは計算ユニット18である。
図4はプログラム可能なワード長のデータについて演算を実行するための計算
ユニット18の可能な実装の1つのブロック図を開示しており、すべてのNビッ
ト・ベクトル・オペランド上でJビットの算術的左シフトを実行してそれをその
中に格納するシフト・レジスタ50(その中に格納されているすべてのNビット
のベクトル・オペランドについてJビットの算術的左シフトを実行し、ここで、
Jは計算ユニット18の第2オペランド・ベクトルの中のデータ・ワード長の整
除部分である最小限の値である)と、遅延要素51と、第1メモリ・ブロック5
2(シーケンシャル入力ポートと、Nビットのデータを格納するためのN/J個
のセルとを含んでいる)と、第2メモリ・ブロック53(Nビットのデータを格
納するためのN/J個のセルを含んでいる)と、N/Jの乗算器ブロック54(
その各乗算器がブログラム可能なワード長のデータのNビットのベクトルをJビ
ットの乗数で乗算する)と、ベクトル加算回路55(N/J個のプログラム可能
なワード長のデータ・ベクトルの合計値の部分積を発生する)とを含んでいる。
計算ユニット18の第3オペランド・ベクトルの入力21は、シフト・レジス
タ50のデータ入力に接続され、シフト・レジスタ50の出力は第1メモリ・ブ
ロック52のデータ入力に接続され、第1メモリ・ブロック52は、各セルの出
力が、第2メモリ・ブロック53のそれぞれのセルのデータ入力に接続され、第
2メモリ・ブロック53の各セルの出力がそれぞれの乗算器ブロック54の被乗
数ベクトルのビットの入力に接続され、乗算器ブロック54の乗数ビットの入力
が計算ユニット18の第2
オペランド・ベクトルのビットのそれぞれのJビット・グループの入力20に接
続されている。各乗算器ブロック54の出力がベクトル加算回路55のそれぞれ
の被加算値ベクトルのビットの入力に接続され、ベクトル加算回路55は被加算
値ベクトルのビットの(N/J+1)番目の入力が計算ユニット18の第1オペ
ランド・ベクトルの入力19に接続され、計算ユニット18の第3オペランド・
ベクトルに対するデータ境界設定の入力24がシフト・レジスタ50のオペラン
ド・ベクトルに対するデータ境界設定のそれぞれの入力に接続され、シフト・レ
ジスタ50は、モード選択入力が計算ユニット18の第1メモリ・ブロックへの
第3オペランド・ベクトルのロード制御の第1入力25に接続され、計算ユニッ
ト18は、第1メモリ・ブロックへの第3オペランド・ベクトルのロード制御の
第2入力26がシフト・レジスタ50のクロック入力に対して、そして遅延要素
51の入力に接続され、遅延要素51の出力が第1メモリ・ブロック52の書込
み制御入力に接続されている。第2メモリ・ブロック53の書込み制御入力が、
計算ユニット18の第1メモリ・ブロックから第2メモリ・ブロックへの第3オ
ペランド行列の再ロード制御の入力27に接続され、計算ユニット18の第2オ
ペランド・ベクトルに対するデータ境界設定のすべての入力23が、それぞれの
乗算器ブロック54の符号訂正の入力に接続されている。計算ユニット18の第
1オペランド・ベクトルに対する、そして結果ベクトルに対するデータ境界設定
の入力22が、各乗算器ブロック54の被乗数ベクトルに対する、そして結果ベ
クトルに対するデータ境界設定の入力に対して、そしてベクトル加算回路55の
被加算値ベクトルおよび結果ベクトルに対するデータ境界設定の入力に接続され
、ベクトル加算回路55は、結果の第1および第2の被加算値ベクトルのビット
の出力がそれぞれ計算ユニット18の出力28および29となっている。
計算ユニット18は次のように動作する。
計算ユニット18の第2メモリ・ブロック53に対する行列Zのローディング
の手順は、2つのステージにおいて実行される。
最初に、N/J個のクロック・サイクルごとに、行列Zが
メモリ・ブロック52に対してロードされる。そして行列Z’のi番目のロウは
データ・ベクトルZ’i=(Z’i,1,Z’i,2K Z’i,M)であり、それは次に
ベクトルYのビットのi番目のJビット・グループによって乗算される(i=1
,2,...,N/J)。すべてのベクトルZ’1,Z’2,...,Z’N/Jの
フォーマットはベクトルZ1,Z2,...,Zkのすべてのフォーマットと同じ
である。行列Zは、行列Zのk番目のロウZk(k=1,2,...,K)を、
次の式に従って発生される行列Z’のN’k/J個のロウZ’Ik-1+1,Z’Ik-1
+2,...,Z’Ik-1+N'k/Jで置き換えることによって、行列Z’に変換され
る。
ここで、Ikは、ベクトルYのk個の第1オペランドの中のビットのJビット・
グループの合計数であり、N’kはベクトルYのk番目の要素Ykのワード長であ
る。
上記の式から、Z’1=Z1,Z’N,k/J+1=Z2,Z’(N'1+N'2)/J+1=Z3、な
どの関係がある。それは行列Zのすべてのロウが行列Z’の中に存在するが、規
則として他の位置に存在することを意味する。
行列Zはシフト・レジスタ50の手段によって、N/J個のクロック・サイク
ルごとに行列Z’に変換される。これらのN/J個の各クロック・サイクルにお
いて、クロック信号が計算ユニット18の制御入力26に印加され、そしてこの
クロック信号がシフト・レジスタ50のクロック入力を供給し、そして上記のN
ビットの制御ワードHが計算ユニット18の入力24に対して連続的に印加され
、そしてこの制御ワードがシフト・レジスタ50のオペランド・ベクトルに対す
るデータ境界設定の入力を供給する。i番目のクロック・サイクル(i=1,2
,...,N/J)において、上記の(N/J)ビットの制御ワードEのi番目
のビットeiが計算ユニット18の
制御入力25に印加される。この信号はシフト・レジスタ50のモード選択入力
を供給する。
(Ik-1+1)番目のクロック・サイクルにおいて(k=1,2,...,K
)、ワードEの値が1であるビットが計算ユニット18の入力25に対して印加
されると、シフト・レジスタ50はそのモードを計算ユニット18の入力21に
対して印加されているベクトルZkのロードへ変更する。残りのN/J−K個の
各クロック・サイクルにおいて、ワードEの値が0であるビットが計算ユニット
18の入力25に対して印加され、シフト・レジスタ50は、その中に格納され
ているデータ・ベクトルについてJビットの算術的左シフトを実行する。
したがって、行列Zを行列Z’に変換するブロセスのi番目のクロック・サイ
クル(i=1,2,...,N/J)が終了すると、ベクトルz’iがシフト・
レジスタ50の中に格納される。シフト・レジスタ50の出力からのデータが、
シーケンシャル入力ポートを含んでいる第1メモリ・ブロック52のデータ入力
に対して印加される。
行列Zを行列Z’へ変換するプロセス全体の間の各クロック・サイクルにおい
て計算ユニット18の入力26に印加されるクロック信号は、遅延要素51(普
通のインバート・ゲートであってよい)を通過して、計算ユニット18の第1メ
モリ・ブロック52の書込み制御入力に入る。したがって、行列Z’の計算ユニ
ット18の第1メモリ・ブロック52に対するローディングが、行列Zの行列Z
’の変換と同時に発生する。そのローディングのプロセスの終わりにおいて、ベ
クトルZ’i(i=1,2,...,N/J)が計算ユニット18の第1メモリ
・ブロック52のi番目のセルの中に格納される。
その後、クロック信号が1クロック・サイクルごとに計算ユニット18の制御
入力27に印加され、この信号によって第1メモリ・ブロック52のすべてのセ
ルの内容が計算ユニット18の第2メモリ・ブロック53の対応しているセルに
対して再書込みされる。したがって、行列Z’は計算ユニット18の第1メモリ
・ブロック52から第2メモリ・ブロック53へ1クロック・サイクルで転送さ
れる。
次のクロック・サイクルからスタートして、計算ユニット18の実行ユニット
(それらは乗算器ブロック54およびベクトル加算回路55である)が、演算X
+Y×Z
の部分積を各クロック・サイクルにおいて発生する。そしてi番目の乗算器ブロ
ック54は、計算ユニット18の第2メモリ・ブロック53のi番目のセルの中
に格納されているベクトルZ’iの、計算ユニット18の入力20に対して印加
されているベクトルYのビットY’iのi番目のグループによる乗算の部分積を
発生するために使用する。
制御ワードEが計算ユニット18の入力23に印加され、そしてこのワードの
j番目のビットejが(j−1)番目の乗算器ブロック54(j==1,2,.
..,N/J)の符号訂正入力を供給する。制御ワードEの最下位ビットe1が
(N/J)番目の乗算器ブロック54の符号訂正入力に印加される。したがって
、ベクトルYの要素の1つの最上位ビットのグループが乗数ビットの入力に対し
て印加される、各乗算器ブロック54がその乗算を2の補数表示で実行すること
になる。残りのN/J−K個の乗算器ブロック54は、符号および絶対値の表示
で動作する。
ベクトル加算回路55は部分積P1,P2,...,PN/Jの、そして計算ユニ
ット18の入力19に印加されているベクトルXの合計演算の部分積を発生する
。この回路はキャリー・セーブ加算器回路のベースで設計することができる。
制御ワードHが計算ユニット18の入力22に印加され、そしてこの制御ワー
ドは、すべての乗算器ブロック54の被乗数ベクトルに対するデータ境界設定の
入力および、ベクトル加算回路55の被加算値ベクトルに対するデータ境界設定
の入力を供給する。この場合、計算ユニット18の各実行ユニットにおいて、入
力ベクトルの異なる要素を処理するこれらのユニットのビット間のキャリー伝播
がロックされる。
ベクトル加算回路55の出力において、ベクトルAおよびBが発生され、それ
らの和が次の式で与えられる。
部分積をグループ化し、ベクトルYの別々の要素を参照して、最後の式は次の
形式で示すことができる。
入れて、前の式は次のように変換される。
したがって、演算X+Y×Zの部分積が、計算ユニットの出力28および29
において発生される。
一般的なケースにおいて、クロック・サイクル・タイムは3から2へのスイッ
チ11、飽和ユニット14、計算ユニット18および加算器回路30を次々に接
続した合計の伝播遅延時間によって定義される。飽和ユニット13および14(
データ入力がこれらのユニットの入力15に接続されている、入力データ・レジ
スタを含んでいる)と、計算ユニット18(データ入力が、計算ユニットの入力
19および20に接続されている、入力データ・レジスタを含んでいる)と、加
算器回路30(データ入力がその加算器回路の入力31、32および33に接続
されている、入力データ・レジスタを含んでいる)とを使う場合に、ニューラル
・プロセッサの性能を本質的に増大させることができる。ニューラル・プロセッ
サの実行ユニットの中にそのようなレジスタが存在することによって、データを
パイプライン・モードで処理することができ、そのモードは各クロック・サイク
ルにおいて次の3つのプロセス、すなわち、現在のデータ・セットの重み付けら
れた合計値の部分積を計算ユニット18によって発生するプロセス、加算器回路
30において前のデータ・セットの重み付けられた合計値の部分積を加算するプ
ロセス、そしてユニット13および14において入力オペランドの次の組に対し
て飽和関数を計算するプロセスの並列実行を提供する。飽和ユニット13および
14の、計算ユニット18の、そして加算器回路30の最大限の
伝播遅延時間がほぼ等しいので、パイプライン・レジスタを組み込むことによっ
て、ニューラル・プロセッサのクロック・レートを実質的に3倍増加させること
ができる。
ブロック図が図5に示されている飽和ユニットは、入力オペランド・ベクトル
15のビットの入力と、制御入力16および結果ベクトルの出力17のビットと
を備えている。前記ユニットのN個の各ビット56は、第1(57)および第2
(58)のマルチプレクサを、排他的ORゲート59と、等価ゲート60と、N
ANDゲート61と、反転入力付きANDゲート66とを含む。また、前記ユニ
ットは、キャリー伝播回路63(初期キャリー入力64と、別々のビット65か
らのキャリー伝播の反転入力と、別々のビット66からのキャリー入力と、別々
のビットに対するキャリーの出力67とを含んでいる)と、キャリー・ルック・
アヘッド回路68(初期キャリー入力69と、別々のビットからのキャリー伝播
の入力70と、別々のビット71のキャリー発生入力と、別々のビットに対する
キャリーの出力72とを含んでいる)とを含む。
第1(57)および第2(58)のマルチプレクサの第2データ入力および前
記ユニットの各ビット56の排他的ORゲート59の第1入力が結合されて、前
記ユニットの入力オペランド・ベクトルのそれぞれのビットの入力15に接続さ
れ、そのユニットの結果ベクトルの各ビットの出力17が、前記ユニットのそれ
ぞれのビット56の第1マルチプレクサの出力57に接続されている。反転入力
付きANDゲート62の非反転入力および前記ユニットの各ビット56のNAN
Dゲート61および等価ゲート60の第1入力が結合されて、前記ユニットのそ
れぞれの制御入力16に対して接続されている。前記ユニットのq番目のビット
56の排他的ORゲート59の第1入力および反転入力付きANDゲートの非反
転入力62は、それぞれ前記ユニットの(q−1)番目のビットの排他的ORゲ
ート59の第2入力に対して、そして反転入力付きANDゲート62の反転入力
に対して接続され、その第2マルチプレクサ58の第1データがキャリー伝播回
路63の(N−q+2)番目のビットに対するキャリーの出力67(ここで、q
=2,3,...,N)に接続されている。前記ユニットのn番目のビット56
のNANDゲート61の出力がキャリー・ルック・アヘッド回路68の(N−n
+1)番目のビットを通じてのキャリー伝播の入力70に接続され、(N−n+
2)番目のビットに対するキャリーの出力72が前記ユニットのn番目の
ビット56の第1マルチプレクサの制御入力57に接続され、前記ユニットの反
転入力付きANDゲート62の出力が前記ユニットの同じビット56の第2マル
チプレクサ58の制御出力に対して、キャリー・ルック・アヘッド回路68の(
N−n+1)番目のビットのキャリー発生入力71に対して、そしてキャリー伝
播回路63の(N−n+1)番目のビットからのキャリー伝播の反転入力65に
接続され、キャリー伝播回路の、(N−n+1)番目のビットからのキャリー入
力66が前記ユニットのn番目のビット56の第2マルチプレクサ58の出力に
接続されている(ここで、n=1,2,...,N)。前記ユニットの各ビット
56において、第2マルチプレクサ58の出力が等価ゲート60の第2入力に接
続され、等価ゲート60の出力が第1マルチプレクサ57の第1データ入力に接
続され、そして排他的ORゲート59の出力がNANDゲート61の第2入力に
接続されている。排他的ORゲート59の第2入力と、反転入力付きANDゲー
ト62の反転入力と、前記ユニットのN番目のビット56の第2マルチプレクサ
58の第1データ入力と、キャリー伝播回路63の初期キャリー入力64と、キ
ャリー・ルック・アヘッド回路の初期キャリー入力69とが結合されて「0」に
接続されている。
飽和ユニットの中の回路63および68ととして、並列加算器に適用される各
種のキャリー伝播回路およびキャリー・ルック・アヘッド回路を使うことができ
る。
キャリー伝播回路63の最も単純な変形版の実装においては、q番目のビット
に対するキャリーの出力67が(q−1)番目のビットからのキャリー入力66
に接続されている(ここで、q=1,2,...,N)。
飽和ユニットは次のように動作する。
入力オペランド・ベクトルD=(D1 D2 Λ DL)のビットが、前記ユニ
ットの入力15に印加される。ベクトルDはこのベクトルの要素であるL個のパ
ックされたデータの2の補数表示でのNビット・ワードである。そしてベクトル
Dの最下位ビットが第1データD1のビットであり、次に第2データD2のビット
が続き、以下同様である。ベクトルDの最上位ビットはL番目のデータDLのビ
ットである。そのようなパッキングによって、λ番目のデータDλのv番目のビ
ットは、
のλ番目のデータDλのワード長であり、v=1,2,...,Nλ(λ=1,
2,...,L)である。
ベクトルDを構成しているデータの最小限のワード長は2に等しい。一般的な
ケースにおいては、ベクトルDのλ番目のデータDλの中のビットの数Nλは2
からNまでの任意の整数であってよく(λ=1,2,...,L)、そして、こ
のベクトルの中にパックされるデータの数Lは1からN/2までの数であってよ
い。唯一の制限は1つのベクトルDの中パックされるすべてのデータの合計ワー
ド長がそのワード長に等しくなければならないことである。
そのユニットは出力17上にベクトルF=(F1 F2 Λ FL)を発生する
ことを目的しており、Fはλ番目の要素FλがベクトルDのλ番目のオペランド
Dλの飽和関数の結果であるベクトルである。
ここで、Qλは、オペランドDλ(λ=1,2,...,L)に対して計算され
る飽和関数のパラメータである。
前記ユニットによって計算される飽和関数の一般的な概念が図2に示されてお
り、次の式によって記述することができる。
ベクトルFのフォーマットはベクトルDのフォーマットと同じである。ベクト
ルFの要素Fλの中の符号ビットを考慮しない意味のあるビットの数はパラメー
タQλの値
に等しく、それはオペランドDλおよびFλのワード長Nλより小さくなければ
ならない(λ=1,2,...,L)。
前記ユニットのハードウェアをベクトルDおよびFの必要なフォーマットに対
して、そして実装されている飽和関数のパラメータの必要な値に対してチューニ
ングすることは、前記ユニットの制御ユニット16に対してNビットの制御ワー
ドUを設定する手段によって行われる。
また、ワードUの値は次のようになっていなければならない。すなわち、最初
からQ1番目までのビットの値はそれぞれ0であり、(Q1+1)番目からN1番
目までのビットの値はそれぞれ1であり、(N1+1)番目から(N1+Q2)番
目までのビットの値はそれぞれ0であり、(N1+Q2+1)番目から(N1+N2
)番目までのビットの値はそれぞれ1であり、以下同様である。一般的なケース
においては
番目までの値はそれぞれ1でなければならない(λ=1,2,...,L)。
ワードUのn番目のビットの値が1に等しく(un=1)、そして(n+1)
番目の値が0に等しい(un+1=0)場合、前記ユニットはベクトルDのn番目
のビットをこのベクトルの対応している要素の最上位(符号)ビットとみなす。
ワードUの中の0のビットの数は結果のベクトルFのすべての要素の中の意味の
あるビットの合計数に等しい。
前記ユニットのn番目のビット56の反転入力付きANDゲート62は信号
Dを構成している入力オペランドの1つの符号ビットを処理することの指示子で
ある(これ以降ではn=1,2,...,N)。前記ユニットのn番目のビット
56の
入力オペランドの符号(最上位)ビットの値を有し、そのビットは、ベクトルD
のn番目のビットdnである。
前記ユニットのすべてのビット56に対する信号vnの発生を加速する目的で
、キャリー伝播回路63が使われ、この回路は通常の並列加算器に適用される、
シーケンシャルまたはルック・アヘッドのキャリーを備えた任意の既知の回路で
あってよい。信号vnが入力および出力のキャリー信号として使われ、そして信
号gnの反転された値が別々のビットを通してキャリー伝播の信号として使われ
ることは、この提案されているユニットにおけるキャリー伝播回路63の特性で
ある。この場合、キャリーは前記ユニットの最上位ビットから最下位ビットヘ伝
播される。
前記ユニットのn番目のビット56の排他的ORゲート59およびNANDゲ
ート
ルDのn番目のビットdnの値がその入力オペランドに対するワードUによって
決定されている飽和領域の超過につながらないことを示し、そのビットはベクト
ルDのn番目のビットdnである。
キャリー・ルック・アヘッド回路68は前記ユニットのn番目のすべてのビッ
ト56に対して信号cn=cn+1∧pn∨gnを発生し、その信号はn番目のビット
dnから入力オペランドの最上位ビットまでのベクトルDのすべてのビットの値
(そのビットはベクトルDのn番目のビットdnである)が、この入力オペラン
ドに対してワードUによって決定されている飽和領域の超過につながらないこと
を示す。通常の並列加算器において適用される任意の既知のシーケンシャルな、
あるいはグループ・キャリー発生回路を回路68として使うことができる。信号
gnが入力71に印加されるキャリー発生信号として使われ、信号pnが入力70
に対して印加されるキャリー伝播信号として使われ、そして信号cnがキャリー
出力72において発生されることは、この提案されているユニットの中のキャリ
ー・ルック・アヘッド回路68の特性である。この場合、そのキャリーは前記回
路の最上位ビットから最下位ビットへ向かって伝播される。
前記ユニットのn番目のビット56の等価ゲート60および第1マルチプレク
サ5
の値を発生する。cn=1の場合、第1マルチプレクサ57の出力において、ベ
クトルDのビットdnの値が設定される。Cn=0であって、un=1の場合、第
1のマルチプレクサ57の出力において、ベクトルDの対応しているオペランド
の符号ビット
(vn)の反転されていない値がセットされ、cn=0であって、un=0の場合
、第1のマルチプレクサ57の出力において、ベクトルDの対応しているオペラ
ンドの
において得られる結果ベクトルのビットが前記ユニットの出力17を供給する。
制御ワードU=(100...0)bが前記ユニットの入力16に印加された
場合、前記ユニットの入力15からのデータが変化せずに(F=D)その出力を
通過することに注意する必要がある。
したがって、提案されている飽和ユニットは2つのNビットの数値の通常の並
列加算器の伝播遅延時間にほぼ等しい伝播遅延時間を有する。この場合、前記ユ
ニットによって、ワード長をユーザがプログラムできるいくつかのデータに対す
る飽和関数を同時に計算することができる。
ブロック図が図7に示されている計算ユニットは、第1(19)、第2(20
)および第3(21)のオペランド・ベクトルのビットの入力と、第1オペラン
ド・ベクトルおよび結果ベクトル22に対する、第2オペランド・ベクトル23
に対する、そして第3オペランド・ベクトル24に対する境界設定の入力と、第
1メモリ・ブロックへの第3オペランド・ベクトルのロード制御の第1(25)
および第2(26)の入力と、第1のメモリ・ブロックから第2のメモリ・ブロ
ックへの第3オペランド行列の再ロード制御の入力27と、結果の第1の被加算
値ベクトルのビットの出力28と、結果の第2の被加算値ベクトルの出力29と
を含む。前記のユニットはシフト・レジスタ50と、遅延要素51と、N/2個
の反転入力付きANDゲート75と、N/2個の乗数ビットのデコーダ76と、
Nカラム×各カラム内のN/2個のセルの乗算器アレイ77とを含む。シフト・
レジスタ50のどのビットも、反転入力付きANDゲート78と、マルチプレク
サ79と、トリガ80とから構成されている。乗算器アレイ77の各セルは第1
(81)および第2(82)のトリガ(前記ユニットの第1および第2のメモリ
・ブロックのそれぞれのメモリ・セルとして機能する)と、反転入力付きAND
ゲート83と、1ビット部分積発生回路84と、1ビット加算器85と、マルチ
プレクサ86とから構成されている。図7において、乗算器アレイ77のセルの
カラムには右から左へ番号が付けられており、そして乗算器アレイ77のカラム
のセルには上から下へ番号が付けられている。
前記ユニットの第1オペランド・ベクトル19の各ビットの入力が乗算器アレ
イ77のそれぞれのカラムの第1セルの1ビット加算器85の第2入力に接続さ
れ、乗算器アレイ77の各セルの1ビット加算器85の第1入力が乗算器アレイ
77の同じセルの1ビット部分積発生回路84の出力に接続され、乗算器アレイ
77の各カラムのすべてのセルのマルチプレクサ86の制御入力および反転入力
付きANDゲート83の反転入力が、前記ユニットの第1オペランド・ベクトル
に対する、そして結果ベクトルに対するデータ境界設定のそれぞれの入力22に
接続されている。前記ユニットの第2オペランド・ベクトルに対するデータ境界
設定の各入力23がそれぞれの反転入力付きANDゲート75の反転入力に接続
され、ゲート75の出力が乗数ビットのそれぞれのデコーダ76の第1入力に接
続されている。乗算器アレイ77のすべてのカラムのi番目のセルの1ビット部
分積発生回路84のそれぞれの制御入力が結合されて乗数ビットのi番目のデコ
ーダのそれぞれの出力76に接続され、デコーダ76の第2および第3の入力は
前記ユニットの第2オペランド・ベクトル20の(2i−1)番目および(2i
)番目のビットのそれぞれの入力に接続されている(ここで、i=1,2,..
.,N/2)。j番目の反転入力付きANDゲート75の非反転入力が乗数ビッ
ト76の(j−1)番目のデコーダの第3入力に接続されている(j=2,3,
...,N/2)。前記ユニットの第3オペランド・ベクトルの各ビットの入力
21が、シフト・レジスタ50のそれぞれのビットのマルチプレクサ79の第2
データ入力に接続され、シフト・レジスタ50の第1データ入力がシフト・レジ
スタ50の同じビットの反転入力付きANDゲート78の出力に接続されている
。ANDゲート78の第1の反転入力は前記ユニットの第3オペランド・ベクト
ルに対するデータ境界設定のそれぞれの入力24に接続されている。シフト・レ
ジスタ50のq番目のビットの反転入力付きANDゲート78の第2の反転入力
が、シフト・レジスタ50の(q−1)番目のビットの反転入力付きANDゲー
トの第1の反転入力に接続されている(ここで、q=2,3,...,N)。シ
フト・レジスタ50のr番目のビットの反転入力付きANDゲート78の非反転
入力が、シフト・レジスタ50の(r−2)番目のトリガ80の出力に接続され
ている(ここで、r=3,4,...,N)。すべてのシフト・レジスタ50の
ビットのマルチプレクサ79の制御入力が結合されて、前記ユニットの第1メモ
リ・ブロックへの第3オペランド・ベクト
ルのロード制御の第1入力25に接続されている。すべてのシフト・レジスタ5
0のビットのトリガ80のクロック入力および遅延要素51の入力が結合されて
、前記ユニットの第1メモリ・ブロックへの第3オペランド・ベクトルのロード
制御の第2入力26に接続されている。各シフト・レジスタ50のマルチプレク
サ79の出力が、シフト・レジスタ50の同じビットのトリガ80のデータ入力
に接続され、トリガ80の出力は乗算器アレイ77のそれぞれのカラムの最後の
セルの第1のトリガ81のデータ入力に接続されている。各乗算器アレイ77の
カラムのj番目のセルの第1のトリガ81の出力が同じ乗算器アレイ77のカラ
ムの(j−1)番目のセルの第1のトリガ81のデータ入力に接続されている(
ここで、j=2,3,...,N/2)。乗算器アレイ77のすべてのセルの第
1のトリガ81のクロック入力が結合されて遅延要素51の出力に接続されてい
る。乗算器アレイ77のすべてのセルの第2のトリガ82のクロック入力が結合
されて、前記ユニットの第1メモリ・ブロックから第2メモリ・ブロックへの第
3オペランド行列の再ロード制御の入力27に接続されている。乗算器アレイ7
7のq番目のカラムのi番目のセルの1ビット部分積発生回路84の第2データ
入力が、乗算器アレイ77の(q−1)番目のカラムのi番目のセルの反転入力
付きANDゲート83の出力に接続されている(ここで、i=1,2,...,
N/2)、そしてq=2,3,...,N)。乗算器アレイ77の各カラムのj
番目のセルの1ビット加算器85の第2入力が、乗算器アレイ77の同じカラム
の(j−1)番目のセルの1ビット加算器85の和の出力に接続されている(こ
こで、j=2,3,...,N/2)。乗算器アレイ77のq番目のカラムのj
番目のセルの1ビット加算器85の第3入力が、乗算器アレイ77の(q−1)
番目のカラムの(j−1)番目のセルのマルチプレクサ86の出力に接続され(
ここで、j=2,3,...,N/2、q=2,3,...,N)、そして乗算
器アレイ77の第1カラムのj番目のセルの1ビット加算器85の第3入力が乗
数ビット76の(j−1)番目のデコーダの第3入力に接続されている(ここで
、j=2,3,...,N/2)。
乗算器アレイ77の各カラムの最後のセルの1ビット加算器85の和の出力が
前記ユニットの結果の第1の被加算値ベクトルのそれぞれのビットの出力28で
ある。乗算器アレイ77の(q−1)番目のカラムの最後のセルのマルチプレク
サ86の出力が、前記ユニットの結果の第2の被加算値ベクトルのq番目のビッ
トの出力であ
り(ここで、q=2,3,...,N)、その結果の第2の被加算値ベクトル2
9の第1ビットが乗数ビット76の(N/2)番目のデコーダの第3出力に接続
されている。シフト・レジスタの第1ビットの反転入力付きANDゲート78の
第2の反転入力および非反転入力およびシフト・レジスタの第2ビットの反転入
力付きANDゲート78の非反転入力と、乗算器アレイ77の第1カラムのすべ
てのセルの1ビット部分積発生回路84の第2データ入力と、乗算器アレイ77
のすべてのカラムの第1セルの1ビット加算器85の第3入力と、第1の反転入
力付きANDゲート75の非反転入力とが結合されて「0」に接続されている。
乗算器アレイ77の各セルにおいて、第1のトリガ81の出力が第2のトリガ8
2のデータ入力に接続され、第2のトリガ82の出力が反転入力付きANDゲー
ト83の非反転入力に対して、そして1ビット部分積発生回路84の第1データ
入力に接続され、その第3制御入力がマルチプレクサ85の第2データ入力に接
続され、マルチプレクサ86の第1データ入力が乗算器アレイ77の同じセルの
1ビット加算器85のキャリー出力に接続されている。
計算ユニットは第2オペランド・ベクトルY=(Y1 Y2 Λ YK)の乗算
の部分積を発生することを目的としており、このベクトルのビットは、前記ユニ
ットの第2メモリ・ブロックの中に以前にロードされて格納されていた
対して供給され、第1のオペランド・ベクトルX=(X1 X2 Λ XM)の得
られた積に対する加算を伴い、Xのビットは前記ユニットの入力19に対して供
給されている。各クロック・サイクルにおいて、前記ユニットの出力28および
29上で、ベクトルA=(A1 A2 Λ AM)およびB=(B1 B2 Λ BM
)が発生され、その和が演算X+Y×Zの結果である。すなわち、ベクトルAお
よびBのm番目の要素の和は次の式によって定義される。
ベクトルXはこのベクトルの要素であるM個のパックされたデータの2の、補
数表示でのNビット・ワードである。そしてベクトルXの最下位ビットは第1デ
ータX1のビットであり、次に第2データX2のビットが続き、以下同様である。
ベクトルXの最上位ビットはM番目のデータXMのビットである。そのようなパ
ッキングによっ
ビットであり、ここで、NmはベクトルXのm番目のデータXmのワード長であり
、v=1,2,...,Nm(m=1,2,...,M)である。ベクトルXの
中のデータの数Mおよびこのベクトルの各m番目のデータXmの中のビットの数
Nm(m=1,2,...,M)は、1からNまでの任意の整数値であってよい
。唯一の制限は、1つのベクトルXの中にパックされるすべてのデータの合計ワ
ード長が、そのワード長に等しくなければならないということである。 ベクトルYはこのベクトルの要素であるK個のパックされたデータの2の補数
表示でのNビット・ワードである。ベクトルYのフォーマットはベクトルXのフ
ォーマットと同じである。しかし、これらのベクトルは、要素の数およびこれら
のベクトルの中にパックされている別々のデータのワード長において異なる可能
性がある。ベクトルYのk番目のデータYk(k=1,2,...,K)の中の
ビットの数N’kは、2からNまでの任意の整数値であってよい。ベクトルYの
中のデータの数Kは、1からN/2までの任意の整数値であってよい。しかし、
1つのベクトルYの中にパックされるすべてのデータの合計ワード長がそのワー
ド長に等しくなければならない。
行列Zのk番目のロウは、データ・ベクトルZk=(ZK,1 ZK,2 K ZK,M
)であり、ここで、k=1,2,...,Kである。また、Z1,Z2,...,
ZKの各ベクトルのフォーマットは、ベクトルXのフォーマットと同じでなけれ
ばならない。
前記ユニットの出力28および29において発生されるベクトルAおよびBの
フォーマットは、ベクトルXのフォーマットと同じである。
必要なフォーマット乗算ベクトル処理するための計算ユニットのハードウェア
のチューニングは、前記ユニットの第1オペランド・ベクトルおよび結果ベクト
ルに対するデータ境界設定の入力22に対するNビットの制御ワードHのローデ
ィングおよび、前記ユニットの第2オペランド・ベクトルに対するデータ境界設
定の入力23に対する(N/2)ビットの制御ワードEのローディングの手段に
よって行われる。
ワードHのn番目のビットhnの値が1であることは、前記ユニットがベクト
ルX,Z1,Z2,...,ZKのそれぞれのn番目のビットをこのベクトルのそ
れぞれの要素の最上位ビットとみなすことを意味する。ワードHの中で値が1で
あるビットの個数はX,Z1,Z2,...,ZKの各ベクトルの中の要素の数に
等しい。
ワードEのi番目のeiの値が1であることは、前記ユニットがベクトルYの
i番目のペアのビットを、このベクトルのそれぞれの要素の最下位ビットのグル
ープとみなすことを意味する。ワードEの中で値が1であるビットの数は、ベク
トルYの中の要素の数に等しい。
上記の演算が実行される前に、前記ユニットの第2メモリ・ブロックへの行列
Zのローディングの手順(前記ユニットのメモリ・セルの機能は、乗算器アレイ
77のセルの第2のトリガ82によって実行される)が先に行われなければなら
ない。前記手順は2つのステージにおいて実行される。
先ず最初に、N/2個のクロック・サイクルごとに、行列Zが
メモリ・ブロックへロードされる。
そして、行列Z’のi番目のロウは、データ・ベクトルZ’i=(Z’i,1 Z’i,2
K Z’iM)であり、これはベクトルYのビットのi番目のペア(i=1,
2,...,N/2)で乗算される。すべてのベクトルZ’1,Z’2,...,
Z'N/2のフォーマットは任意のベクトルZ1,Z2,...,ZKのフォーマット
と同じである。行列Zは、行列Zのk番目のロウZk(k=1,2,...,K
)の、次の式に従って発生される、行列Z’のN’k/2個のロウZ’Ik-1+1,
Z’Ik-1+2,...,Z’Ik-1+N'k/2での置き換えによって、行列Z’に変換
される。ここで、Ikは、ベクトルYの最初のk個のオペランドの中のビットのJビット
・ペアの合計数であり、それは次の式の値に等しい。
上記の式から、Z’1=Z1,Z’N'1/2+1=Z2、Z’(N'1+N'2)/2+1=Z3であ
り、以下同様である。すなわち、行列Zのすべてのロウが行列Z’の中に存在す
ることになるが、規則として他の位置にある。
行列Zは、シフト・レジスタ50の手段によって行列Z’に変換される。シフ
ト・レジスタ50は、2つの動作モードを備えている。ロード・モードにおいて
は、値1が前記ユニットの制御入力25に印加され、シフト・レジスタ50のす
べてのマルチプレクサ79が、前記ユニットの入力21に印加されているデータ
・ベクトルのビットをシフト・レジスタ50のトリガ80のデータ入力に対して
渡し始める。シフト・モードにおいては、値0が前記ユニットの制御入力25に
印加され、そしてシフト・レジスタ50のすべてのマルチプレクサ79がシフト
・レジスタ50の対応している反転入力付きANDゲート78の出力からのデー
タをシフト・レジスタ50のトリガ80のデータ入力に対して渡し始める。シフ
ト・レジスタ50のr番目のビット
(r=3,4,...,N)の反転入力付きANDゲート78の出力において、
信号
番目のビットのトリガ80の中に格納されているデータであり、そしてhrは、
Nビットの制御ワードHのr番目のビットの値であり、制御ワードHは前記ユニ
ットの入力24に印加されていて、処理中のベクトルの中のデータ境界を設定す
る。反転入力付きANDゲート78は、シフト・レジスタ50に以前にロードさ
れたデータ・ベクトルの異なる要素のビットを格納していて、シフト・レジスタ
50のビット間のデータの伝播を防止する。シフト・レジスタ2つの下位ビット
の反転入力付きANDゲート78の出力において、0の値の信号が一定して発生
される。というのは、それぞれの非反転入力が「0」に接続されているからであ
る。したがって、シフト・モードにあるシフト・レジスタ50はその中に格納さ
れているデータ・ベクトルについて2ビットの算術的左シフトを実行する。それ
はこのベクトルの4による乗算と等価である。
行列ZはN/2個のクロック・サイクルごとに行列Z’に変換される。これら
のN/2個の各クロック・サイクルにおいて、クロック信号が前記ユニットの制
御入力26に印加され、そしてこのクロック信号がシフト・レジスタ50のトリ
ガ80のクロック入力を供給し、そして上記のNビットの制御ワードHが前記ユ
ニットの第3オペランド・ベクトルに対するデータ境界設定の入力24に対して
連続して印加されており、そしてこの制御ワードが行列Zのロード後のX+Y×
Z演算の実行時に前記ユニットの入力22を供給する。i番目のクロック・サイ
クル(i=1,2,...,N/2)において、上記の(N/2)ビットの制御
ワードEのi番目のビットeiが前記ユニットの制御入力25に対して印加され
、この制御ワードが行列Zの変換およびロードの後のX+Y×Zの演算の実行時
に前記ユニットの入力23を供給する。
(Ik-1+1)番目のクロック・サイクル(k=1,2,...,K)におい
て、ワードEの1の値のビットが前記ユニットの入力25に印加されると、ベク
トルZkのビットが前記ユニットの入力21に印加され、そしてこのベクトルが
変更なしにシフト・レジスタ50のトリガ80に対して書き込まれる。残りのN
/2−K個の各クロック・サイクルにおいて、ワードEの0の値のビットが前記
ユニットの入力25に印加され、シフト・レジスタ50の中に格納されているデ
ータ・ベクトルの要素の
4倍に増加した値がシフト・レジスタ50のトリガ80に対して書き込まれる。
したがって、行列Zの行列Z’への変換のプロセスのi番目のクロック・サイ
クル(i=1,2,...,N/2)が終了すると、ベクトルz’iがシフト・
レジスタ50のトリガ80の中に格納される。
シフト・レジスタ50の出力からのデータが前記ユニットの第1メモリ・ブロ
ック52(乗算器アレイ77のセルの第1のトリガ81によって実装されている
)のデータ入力に対して印加される。N×N/2のトリガ81の行列は、N個の
並列接続された(N/2)ビットのシフト・レジスタを含み、それらの各々が乗
算器アレイ77のカラムの1つのセルの中に含まれているN/2個の直列に接続
されたトリガ81から構成されている。したがって、トリガ81の行列は、それ
ぞれがNビット・ワードの記憶を提供するN/2個のメモリ・セルを含んでいる
、シーケンシャル入力ポート付きのメモリ・ブロックとみなすことができる。第
1メモリ・ブロックのi番目のセルの機能が、乗算器アレイ77のi番目のセル
のトリガ81によって実行される(i=1,2,...,N/2)。
行列Zの行列Z’への変換のプロセス全体の間に、各クロック・サイクルにお
いて前記ユニットの入力26に印加されるクロック信号は、遅延要素51(これ
は通常のインバート・ゲートであってよい)を通過し、乗算器アレイ77のすべ
てのセルの第1のトリガ81のクロック入力に達する。したがって、前記ユニッ
トの第1メモリ・ブロックへの行列Z’のローディングが、行列Zの行列Z’へ
の変換と同時に発生する。そのローディング・プロセスの終りにおいて、Z’i
が乗算器アレイ77のi番目のロウの第1のトリガ81の中に格納される(i=
1,2,...,N/J)。
その後、クロック信号が1クロック・サイクルごとに前記ユニットの制御入力
27に印加され、そしてこの信号によって、乗算器アレイ77のすべてのセルの
第1のトリガ81の内容が乗算器アレイ77の同じセルの第2のトリガ82に書
き換えられる。N×N/2のトリガ82の行列はそれぞれがNビット・ワードの
記憶を提供するN/2個のメモリ・セルを含んでいる第2メモリ・ブロックとみ
なすことができる。第2メモリ・ブロックのi番目のセルの機能が、乗算器アレ
イ77のi番目のロウ(i=1,2,...,N/2)のトリガ82によって実
行される。したがって、行列Z’は、1クロック・サイクルごとに前記ユニット
の第1メモリ・ブロックから
第2メモリ・ブロックへ転送される。
次のクロック・サイクルからスタートして、計算ユニットの実行ユニット(そ
れは反転入力付きANDゲート75、乗数ビット76のデコーダ、およびこれも
乗算器アレイ77のセルの中に含まれている反転入力付きANDゲート83、1
ビット部分積発生回路84、1ビット加算器85およびマルチプレクサ86であ
る)が上記の演算を各クロック・サイクルにおいて実行する。
A+B=X+Y×Z
この場合、乗数ビットのi番目のデコーダ76と、i番目反転入力付きAND
ゲート75と、乗算器アレイ77のi番目のロウのセルに含まれている反転入力
付きANDゲート83と、回路84とが、乗算器アレイのi番目ロウのセルの第
2のトリガ82の中に格納されているベクトルZ’iの、ベクトルYのi番目の
ペアのビットY’iによる乗算の部分積(これ以降ではi=1,2,...,N
/2)のビットを発生するために使われる。
すべての部分積は修正されたブースのアルゴリズムのベースで計算され、それ
に従って、ベクトルYの2i番目および(2i−1)番目のビットの値および隣
接している低位のペアの乗数ビットからのキャリー信号ciの値が次のように部
分積Piの値を決定する。
y2i=0,y2i-1=0そしてci=0の場合、あるいはy2i=1,y2i-1=1
そしてci=1の場合、Pi=0;
y2i=0,y2i-1=0そしてci=1の場合、あるいはy2i=0,y2i-1=1
そしてci=0の場合、Pi=Z’i;
y2i=0,y2i-1=1の場合、そしてci=1の場合、Pi=2×Z’i;
y2i=1,y2i-1=0そしてci=0の場合,Pi=−2×Z’i;
y2i=1,y2i-1=0そしてci=1の場合、あるいはy2i=1、y2i-1=1
、そしてci=0の場合、Pi=−Z’i
ブースのアルゴリズムのベースで動作している普通の2オペランド乗算器にお
いて
は、(2i−2)番目の乗数ビットがキャリー信号ciとして使われる。提案さ
れているユニットにおいては、被乗数はプログラム可能なワード長のオペランド
・ベクトルであり、そのキャリー信号ciは次に記述されるように、i番目の反
転入力付きANDゲート75の出力において発生され、次のように記述される。
ここで、y2i−2はベクトルYの(2i−2)番目のビットであり、eiは制
御ワードEのi番目のビットである。反転入力付きANDゲート75を使うこと
によって、そのベクトルの異なる要素に対して含まれているベクトルYのビット
のペア間のキャリー伝播をロックすることができる。
乗算ビットのi番目のデコーダ76において、次の信号が発生される。
これらの信号は乗算器アレイ77のi番目のロウのセルの1ビット部分積発生
回路84を制御し、乗算器アレイ77の第1データ入力に対して、乗算器アレイ
77のi番目のロウのセルの第2のトリガ82の出力から、Z’iのビットが印
加され、そして乗算器アレイ77のセルの反転入力付きANDゲート83の出力
から第2データ入力に対してZ”のビットが印加される。乗算器アレイ77のn
番目のカラムのi番目のセルの反転入力付きANDゲート83が次の式に従って
ベクトルZ”iの(n+1)番目のZ”i.n+1を発生する。
ここで、Z’i,nは、乗算器アレイ77のn番目のカラムのi番目のセルのトリ
ガ82の中に格納されているベクトルZ’iのn番目のビットであり、hnは制御
ワードHのn番目のビットである(i=1,2,...,N/2、n=1,2,
...,N)。前記の式から、ベクトルZ”iが2×Z’iに等しく、そしてその
フォーマットはベク
トルz’iのフォーマットと同じであることになる。
乗算器アレイ77のi番目のロウのセルの1ビット部分積発生回路84の要素
であるANDゲート90および91およびORゲート92はNビットのスイッチ
として動作し、その出力に対して、onei=1そしてtwoi=0の時にベクト
ルz’iが通過し、onei=1そしてtwoi=0の時、ベクトルZ”iが通過し
、そしてonei=0そしてtwoi=0の時は、その各ビットにおいて値が0の
ベクトルが通過する。したがって、前記スイッチの出力において、ベクトルP’i
が発生され、そのベクトルはsubi=0の時は、部分積のベクトルP’iに等
しく、subi=0の時は−Piに等しい。
subi=1の時にベクトルPiを得るために必要なベクトルP’iの各要素の
符号の変更は、ベクトルP’iの各ビットを反転し、そして反転されたベクトル
の各要素に対して値1を加算する手段によって実行することができる。乗算器ア
レイ77のi番目のセルの1ビット部分積発生回路84の要素である、排他的O
Rゲート93は、信号subiによって制御されるインバータとして動作する。
subi=0の時、ベクトルP’iは排他的ORゲート93を通って変更なしに乗
算器アレイ77のi番目のロウのセルの1ビット部分積発生回路84の出力まで
通過する。subi=1の時、排他的ORゲート93は、このベクトルの各ビッ
トを反転する。したがって、乗算器アレイ77のi番目のロウのセルの1ビット
部分積発生回路84の出力において、NビットのベクトルP”が発生され、その
フォーマットはベクトルX,Z’1,Z’2,...,Z’N/2のフォーマットに
等しく、次の式を満足する。
ここで、SUBiは、Nビットのベクトルであり、そのm番目の要素がNmビット
のオペランド(00...0 subi)bであり、その最下位ビットがsubi
に等しく、そして残りのビットの値はそれぞれ0である。
乗算器アレイ77のセルの1ビット加算器85およびマルチプレクサ86は、
ベクトルX,P”1,P”2,...,P”N/2,SUB1,SUB2,...,S
UBN/2の合計値の部分積を発生するために使われる。前記ユニットにおいて、
キャリー・セー
ブ加算器のベースで設計されている通常のN/2+1オペランドの合計演算回路
と同様に、1ビット加算器85の手段によって合計演算だけが実行される。マル
チプレクサ86は信号sub1,sub2,..., subN/2によってベクト
ルの異なる要素の実行された合計演算の1ビット加算器85のカラム間のキャリ
ー信号を置き換えるために使われる。制御ワードHの(q−1)番目のビットhq-1
の値が0に等しかった場合、乗算器アレイ77の(q−1)番目のカラムの
セルのマルチプレクサ86が乗算器アレイ77の(q−1)番目のカラムのセル
の1ビット加算器85のキャリー出力からの信号を乗算器アレイ77のq番目の
カラムのセルの1ビット加算器85のそれぞれの入力に対して渡す(q=2,3
,...,N)。制御ワードHの(q−1)番目のビットhq-1の値が1に等し
かった場合、乗算器アレイ77の(q−1)番目のカラムのセルのマルチプレク
サ86は乗数ビット76のデコーダの出力から信号sub1,sub2,...,
subN/2を乗算器アレイ77のq番目のカラムのセルの1ビット加算器85の
それぞれの入力に対して渡す(q=2,3,...,N)。この結果として、前
記ユニットの出力28および29においてベクトルAおよびBが発生され、そし
てそれらの和は次の値に等しい。
ベクトルYの別々の要素を参照して、部分積をグループ化し、前記の式は次の
形式で表すことができる。
事実を考慮に入れて、前の式は次のように変換される。
したがって、演算X+Y×Zの部分積は前記ユニットの出力28および29に
おいて発生される。
計算ユニットはデータのベクトルのパッケージ処理に向けられている。それに
よって、前記ユニットの各入力19および20に対して順次印加される入力オペ
ランド・ベクトルの組が、次々に処理されるサブセット(パッケージ)に分割さ
れる。前記ユニットの19および20の各入力に対して印加される、そしてτ番
目のパッケージに対して含められる入力オペランド・ベクトルの組をデータ・ベ
クトルのベクトルの形式で次のように示すことができる。
ここで、Tτはすべてのτ番目のパッケージの中に含められるベクトルの数であ
る。また、1つのパッケージの中のすべてのベクトルのフォーマットは、同じで
なければならない。すなわち、前記ユニットの制御入力22および23に対して
印加される情報は、1つのパッケージの処理の間中不変のままでなければならな
い。
τ番目のパッケージXτおよびYτの処理は、Tτクロック・サイクルごとに
実行される。そして、t番目のクロック・サイクルにおいて、計算ユニットは次
の演算を実行する。
ここで、Zτは、前記ユニットの第2メモリ・ブロックの内容であり、それはτ
番目のパッケージXτおよびYτの処理の間不変のままでなければならない。
τ番目のベクトル・パッケージの処理と同時に、前記ユニットの入力21から
前記ユニットの第1メモリ・ブロックへのベクトルZ1 τ+1,Z2 τ+1,...,
Zk τ+1の次々のローディングの前記手順が実行される。この手順はN/2個の
クロック・サイクルを占める。
上記のプロセスの両方が完了すると、前記ユニットの第1メモリ・ブロックか
ら第2メモリ・ブロックへの行列Zτ+1の転送を起動するアクティブな信号がニ
ューラル・プロセッサの制御入力27に印加される。前記転送は、1クロック・
サイクルで実行される。その後、前記ユニットはベクトルXτ+1およびYτ+1の
(τ+1)番目のパッケージとを処理し、行列Zτ+2をロードする。
各τ番目のパッケージの中のベクトルの数Tτをブログラム・モードにおいて
設定することができる。また、ベクトルの数がN/J+2より少ないベクトルの
パッケージを使うことは得策ではない。というのは、この場合、ニューラル・プ
ロセッサのコンピューティング・ファシリティが有効に使われないからである。
ブロック図が図9に示されている加算器回路は、第1の被加算値ベクトル31
および第2の被加算値ベクトル32の入力と、被加算値ベクトルと、和のベクト
ルに対するデータ境界設定の入力33と、和のベクトルのビットの出力34とを
備えている。この加算器回路のN個の各ビット94は、半加算器95と排他的O
Rゲート96と、第1(97)および第2(98)の反転入力付きANDゲート
98とを含む。また、この加算器回路はキャリー・ルック・アヘッド回路99を
含む。
加算器回路の第1の被加算値ベクトルの入力31および加算器回路の第2の被
加算値ベクトルのビットの入力32は、それぞれ加算器回路のビット94の半加
算器95の第1および第2の入力にそれぞれ接続されている。加算器回路の各ビ
ット94の第1の(97)および第2の(98)の反転入力付きANDゲートの
反転入力が結合されて、加算器回路の被加算値ベクトルおよび和のベクトルに対
するデータ境界設定のそれぞれの入力33に接続されている。加算器回路のビッ
ト94の排他的ORゲート96の出力は、加算器回路の和のベクトルの出力34
である。加算器回路の各ビット94の第1の反転入力付きANDゲート97の出
力が、キャリー・ルック・アヘッド回路99のそれぞれのビットを通してキャリ
ー伝播入力に接続され、キャリー・ルック・アヘッド回路の各ビットにおけるキ
ャリー生入力が加算器回路のそれぞれのビット94の第2の反転入力付きAND
ゲートの出力に接続されている。加算器回路のq番目のビット94の排他的OR
ゲート96の第2入力が、キャリー・ルック・アヘッド回路99に接続され、こ
こで、q=1,2,...,N)、キャリー・ルック・アヘッド回路99の初期
キャリー入力および加算器回路の第1のビット94
の排他的ORゲート96の第2入力が「0」に接続されている。加算器回路の各
ビット94において、半加算器95の和の出力が排他的ORゲート96の第1入
力に対して、そして第1の反転入力付きANDゲート97の非反転入力に接続さ
れ、そして半加算器95のキャリー出力が第2の反転入力付きANDゲート98
の非反転入力に接続されている。
加算器回路は次のように動作する。
第1の被加算値ベクトルA=(A1 A2 Λ AM)のビットが加算器回路の
入力31に印加される。ベクトルAはこのベクトルの要素であるM個のパックさ
れたデータの2の補数表現でのNビット・ワードである。そしてベクトルAの最
下位ビットが第1データA1のビットであり、次に第2データA2のビットが続き
、以下同様である。ベクトルAの最上位ビットは、M番目のデータAMのビット
である。そのようなパッキングによって、m番目のデータAMのv番目のビット
が
m番目のデータAM、v=1,2,...,Nm(m=1,2,...,M)であ
る。ベクトルAの中のデータの数Mおよびこのベクトルのm番目の各データAm
の中のビットの数Nmは、1からNまでの任意の整数値であってよい(m=1,
2,...,M)。唯一の制限は1つのベクトルAの中にパックされるすべての
データの合計ワード長がそのワード長に等しくなければならないということであ
る。
第2の被加算値ベクトルB(B1 B2 Λ BM)のビットが、加算器回路の
入力32に印加され、このベクトルのフォーマットはベクトルAのフォーマット
と同じである。
必要なフォーマットのベクトルを処理するための加算器回路のハードウェアの
チューニングは、その入力33に対してNビットの制御ワードHをロードする手
段によって行われる。そして、ワードHのn番目のhnの値が1であることは、
その加算器回
路がAおよびBの各ベクトルのn番目のビットをこのベクトルの対応している要
素の最上位ビットとみなすことを意味する。ワードHの中の1の値のビットの個
数はAおよびBの各ベクトルの中の要素の個数に等しい(これ以降ではn=1,
2,...,N)。
前記回路のn番目のビット94において、ベクトルAのn番目のanおよびベ
クトルBのn番目のビットbnが半加算器95の入力に印加される。この半加算
器95の和およびキャリーの出力において、加算器回路のこのビットに対してキ
ャリー伝播pnおよびキャリー発生gnの補助的信号が発生される。
信号pnおよびgnは第1(97)および第2(98)の反転入力付きANDゲ
ートのそれぞれの非反転入力を供給し、これらのANDゲートの反転入力に対し
て制御ワードHのn番目のビットhnが印加される。ベクトルAおよびBのn番
目のビットanおよびbnが、これらのベクトルを構成している次々の要素の符号
ビットでない場合、hn=0であり、そして信号pnおよびgnは変化せずに反転
入力付きANDゲート97および98の出力へ通過する。ベクトルAおよびBの
n番目のビットanおよびbnが、これらのベクトルの要素の符号ビットである場
合、hn=1であり、0の値の信号が反転入力付きANDゲート97および98
の出力に対して設定される。したがって、反転入力付きANDゲート97および
98は、前記回路のこれらのビット94の中にキャリー伝播の、そしてキャリー
発生の信号をロックするために使われ、前記回路は入力ベクトルAおよびBの次
々の要素の最上位ビットを処理する。
反転入力付きANDゲート97および98の出力からの信号が、加算器回路の
次々のビットに対するキャリー信号発生を加速するために使われる回路99のキ
ャリー伝播およびキャリー発生の入力に対して印加される。通常の2オペランド
加算器に適用される任意の既知のシーケンシャル、グループ、またはルック・ア
ヘッドのキャリー
発生回路を回路99として使うことができる。回路99の出力において、加算器
回路の次々のビットに対するキャリーの信号が、式cn+1=gn∨pn∧cnに従っ
て発生される。したがって、hn=1の場合、pn=gn=0であり、回路99は
信号cn+1=0を発生する。
回路99によって発生されたキャリー信号は、加算器回路のそれぞれのビット
94の排他的ORゲート96の入力に対して印加され、ゲート96の他の入力に
対しては半加算器95の和の出力からキャリー伝播の信号が印加される。加算器
回路のn番目
れる。したがって、加算器回路の出力34において、ベクトルS=(S1 S2
Λ SM)が発生され、このベクトルの各要素はベクトルAおよびBのそれぞれ
の要素の和に等しい。
そしてベクトルSのフォーマットは、ベクトルAおよびBのフォーマットと同じ
になる。
産業上の利用可能性
本発明の達成可能な技術的結果は入力オペランドのワード長として、結果のワ
ード長として、プログラム・モードにおいて変更する機能の手段によってニュー
ラル・プロセッサの性能を増加させることにある。
提案されているニューラル・プロセッサの特異性は次のニューラル・ネットワ
ークのパラメータをブログラム・モードでユーザが設定できることである。それ
らは層の数、各層におけるニューロンおよびニューラル入力の数、各ニューラル
入力におけるデータのワード長、各重み係数のワード長、各ニューロンの出力値
のワード長、各ニューロンに対する飽和関数のパラメータである。
1つのニューラル・プロセッサは、実際的に無制限のサイズのニューラル・ネ
ットワークをエミュレートすることができる。ニューラル・ネットワークは層ご
とに(層ごとにシーケンシャルに)エミュレートされる。
すべてのニューラル・ネットワーク層はシーケンシャルに処理されるフラグメ
ント
に分割される。各フラグメントは1クロック・サイクルで実行される。入力デー
タの、そして重み係数のワード長を減らすことによって、より大きいニューラル
・ネットワークのフラグメントが1クロック・サイクルで実行される。少数のニ
ューラル・プロセッサを使って1つのニューラル・ネットワークをエミュレート
することができる。そのニューラル・ネットワークによって、エミュレーション
・プロセスの持続時間を何分の1かに減らすことができる。
実現可能な技術的な結果は各飽和ユニットの中に、計算ユニットの中に、そし
て加算器回路の中に、入力データ・レジスタを挿入することによって、クロック
・サイクル・タイムを減らす手段によって強化することができる。これらのレジ
スタはパイプライン・レジスタとして動作し、それによってニューラル・プロセ
ッサのクロック・サイクル・タイムを実際的に3分の1に減らすことができる。
ニューラル・プロセッサの実行ユニットは、飽和ユニット、計算ユニットおよ
び加算器回路である。各実行ユニットはプログラム可能なワード長のデータのベ
クトルについて演算を実行する。さらに、これらの実行ユニットを提案されてい
るニューラル・プロセッサの中でのように、そしてベクトル・データの処理の他
のユニットの中で使うことができる。
本発明の実現可能な技術的結果はプログラム可能なワード長の入力オペランド
・ベクトルを一度に処理するための機能の手段によって飽和ユニットの性能を増
加させることにある。飽和ユニットにおいて、キャリー・ルック・アヘッドおよ
びキャリー伝播回路が使われ、そしてその結果として、前記ユニットの伝播遅延
時間が通常の2オペランド加算器回路の伝播遅延時間にほぼ等しくなる。
本発明の実現可能な技術的結果は計算ユニットの機能の拡張にある。前記ユニ
ットはプログラム可能なワード長のデータのベクトルによるデータの行列の乗算
を実行することができる。この演算は、1クロック・サイクルで実行され、その
周期は普通の2オペランドのアレイ乗算器の伝播遅延時間に等しい。
本発明の実現可能な技術的結果は、その演算セットの中にプログラム可能なワ
ード長のデータのベクトルについての算術演算を含める手段によって加算器回路
の性能を増加させることにある。既知のデータ・ベクトル加算回路と対照区別し
て、提案されている加算器回路においては、入力ベクトルの隣接しているオペラ
ンドを処理した加
算器回路のビット間のキャリーの信号のロックがキャリー発生およびキャリー伝
播の補助機能の形成のレベルにおいて実施されることである。これによって、加
算器回路において普通の2オペランド加算器回路の中で適用されるキャリー伝播
回路を使うことができる。したがって、プログラム可能なワード長のベクトルの
合計演算を目的とした提案されている加算器回路は、2オペランド加算器と同じ
伝播遅延時間を実質的に有する。
提案されているニューラル・プロセッサは、再帰的および非再帰的畳み込みの
計算のため、アダマール(Hadamard)変換、高速およびディスクリート
のフーリエ変換の実行のため、そしてまた他のディジタル信号処理アルゴリズム
の実行のために効率的に使うことができる。
このニューラル・プロセッサは、独立のマイクロ回路として、あるいはコンピ
ュータ・システムにおけるコプロセッサとして実装することができる。
─────────────────────────────────────────────────────
フロントページの続き
(81)指定国 EP(AT,BE,CH,CY,
DE,DK,ES,FI,FR,GB,GR,IE,I
T,LU,MC,NL,PT,SE),EA(AM,AZ
,BY,KG,KZ,MD,RU,TJ,TM),AT
,AU,BY,CA,CH,CN,CZ,DE,DK,
EE,ES,FI,GB,HU,IL,JP,KR,L
T,LU,LV,NO,NZ,PT,RO,SE,SG
,TR,UA,US
(72)発明者 ヴィクスネ パベル エブゲンヤヴィッチ
ロシア 111396 モスクワ ゼレニー ピ
ーアール ディー64 ケーダブリュー148
(72)発明者 フォミン ドミトリー ヴィクトロヴィッ
チ
ロシア 115547 モスクワ ユーエル バ
ーユレブスカヤ ディー58―3 ケーダブ
リュー1270
(72)発明者 シェブチェンコ パベル アレクサンドロ
ヴィッチ
ロシア 125167 モスクワ ユーエル プ
ラネトナヤ ディー14 ケーダブリュー8
(72)発明者 ヤフラコブ ミハイル フェドロヴィッチ
ロシア 123622 モスクワ プヤトニトス
コー ショッセ ディー42 ケーダブリュ
ー64
【要約の続き】
この計算ユニットは遅延要素と、N/2個の反転入力付
きANDゲートと、N/2個の乗算ビットのデコーダ
と、Nビットのシフト・レジスタとを含み、シフト・レ
ジスタは、各ビットが反転入力付きANDゲートと、マ
ルチプレクサおよびトリガと、乗算器アレイとから構成
され、乗算器アレイはNカラム×N/2のセルを含み、
各セルが2つのトリガ、反転入力付きANDゲート、1
ビット部分積発生回路と、1ビット加算器と、マルチプ
レクサとから構成されている。加算器回路の性能の向上
はプログラム可能なワード長の入力オペランドの2つの
ベクトルを加算するための機能の手段によって達成され
る。その加算器回路はキャリー・ルック・アヘッド回路
と、また、2つの反転入力付きANDゲートによって、
1つの半加算器と、1つの排他的ORゲートとを各ビッ
トの中に含む。
Claims (1)
- 【特許請求の範囲】 1.第1、第2および第3のレジスタと、第1のFIFOと、マルチプレクサ とを含んでいるニューラル・プロセッサであって、前記マルチプレクサの第1デ ータ入力のすべてのビットが、前記第1レジスタのそれぞれのビットの出力に接 続され、前記第2レジスタのすべてのビットのデータ入力が、前記ニューラル・ プロセッサの第1入力バスのそれぞれのビットに接続され、第1、第2および第 3のレジスタの制御入力が、前記ニューラル・プロセッサのそれぞれの制御入力 であるニューラル・プロセッサにおいて、 第4、第5および第6のレジスタと、シフト・レジスタと、ANDゲートと、 第2のFIFOと、3から2へのスイッチと、2つの飽和ユニットと、加算器回 路と、計算回路とを組み込んでいて、前記計算回路は第1オペランド・ベクトル のビットの入力と、第2オペランド・ベクトルのビットの入力と、第3オペラン ド・ベクトルのビットの入力と、第1オペランド・ベクトルおよび結果ベクトル に対するデータ境界設定の入力と、第2オペランド・ベクトルに対するデータ境 界設定の入力と、第3オペランド・ベクトルに対するデータ境界設定の入力と、 第1メモリ・ブロックへの第3オペランド・ベクトルのロード制御の第1および 第2の入力と、第1メモリ・ブロックから第2メモリ・ブロックへの第3オペラ ンド行列の再ロード制御の入力と、第2メモリ・ブロックの中に格納されている 第3オペランド行列による第2オペランド・ベクトルの乗算の結果と第1オペラ ンド・ベクトルとの加算の結果の第1および第2の被加算値ベクトルの出力とを 含んでいて、前記3から2へのスイッチのビットの第1データ入力と、前記FI FOの、第1、第3および第4のレジスタのデータ入力およびシフト・レジスタ の並列データ入力がビットごとに結合されて前記ニューラル・プロセッサの第1 入力バスのそれぞれのビットに接続され、前記ニューラル・プロセッサの第2入 力バスの各ビットが前記3から2へのスイッチのそれぞれのビットの第2データ 入力に接続され、前記スイッチの各ビットの第1出力が前記第1の飽和ユニット の入力オペランド・ベクトルのそれぞれのビットの入力に接続され、前記第1の 飽和ユニットがすべてのビットの制御入力が前記第2レジスタの対応しているビ ットの出力に接続され、前記3から2へのスイッチの各ビットの第2出力が 前記第2の飽和ユニットの入力オペランド・ベクトルのそれぞれのビットの入力 に接続され、前記第2の飽和ユニットはその各ビットの制御入力が前記第3レジ スタのそれぞれのビットの出力に接続され、前記第1の飽和ユニットの結果ベク トルの各ビットの出力が、前記マルチプレクサのそれぞれのビットの第2データ 入力に接続され、前記マルチプレクサは各ビットの出力が前記計算ユニットの第 1オペランド・ベクトルのそれぞれのビットの入力に接続され、前記計算ユニッ トは、第2オペランド・ベクトルの各ビットの入力が前記第2飽和ユニットの結 果ベクトルのそれぞれのビットの出力に接続され、前記第1のFIFOの出力が 前記計算ユニットの第3オペランド・ベクトルのそれぞれのビットの入力に接続 され、前記計算ユニットは、第1オペランド・ベクトルと、第2メモリ・ブロッ クの中に格納されている第3オペランド行列による第2オペランド・ベクトルの 乗算の積との加算の結果の第1の被加算値の各ビットの出力が前記加算器回路の 第1の被加算値ベクトルのそれぞれのビットの入力に接続され、前記加算器回路 は、第2の被加算値ベクトルの各ビットが、第2メモリ・ブロックの中に格納さ れる、第1オペランド・ベクトルと、第3オペランド行列による第2オペランド ・ベクトルの乗算の積との加算の結果の第2の被加算値ベクトルのそれぞれのビ ットの出力に接続され、計算ユニットは、第1オペランド・ベクトルおよび結果 ベクトルに対するデータ境界設定の各入力が第5レジスタのそれぞれのビットの 出力に対して、そして前記加算器回路の被加算値ベクトルおよび和のベクトルに 対するデータ境界設定のそれぞれの入力に接続され、加算器回路は和のベクトル の各ビットの出力が第2のFIFOのそれぞれのデータ入力に接続され、第2の FIFOは各データ出力がニューラル・プロセッサの出力バスのそれぞれのビッ トに対して、そして3から2へのスイッチのそれぞれのビットの第3入力に接続 され、第4レジスタの各ビットの出力が、第5レジスタのそれぞれのビットのデ ータ入力に対して、そして計算ユニットの第3オペランド・ベクトルに対するデ ータ境界設定のそれぞれの入力に接続され、計算ユニットは第2オペランド・ベ クトルに対するデータ境界設定の各入力が前記第6レジスタのそれぞれのビット の出力に接続され、前記第6レジスタは各ビットのデータ入力が前記シフト・レ ジスタのそれぞれのビットの出力に接続され、前記シフト・レジスタはシーケン シャル・データ入力および出力が結合されて第3オペランド・ベクトルのロード 制御の第1入力に接続されて前記計算ユニット の前記第1メモリ・ブロックの中に入り、そして前記ANDゲートの第1入力に 接続され、前記ANDゲートは出力が前記第1のFIFOの読出し制御入力に接 続され、前記ANDゲートの第2入力と前記シフト・レジスタのシフト制御入力 と、前記計算ユニットの前記第1メモリ・ブロックへの第3オペランド・ベクト ルのロード制御の第2入力とが結合されて前記ニューラル・プロセッサのそれぞ れの制御入力に接続され、前記計算ユニットの前記第1メモリ・ブロックから前 記第2メモリ・ブロックへの第3オペランド行列の再ロード制御の入力と、第5 および第6のレジスタの制御入力とが結合されてニューラル・プロセッサのそれ ぞれの制御入力に接続され、前記3から2へのスイッチの、前記マルチプレクサ の、そして第4レジスタの制御入力、前記シフト・レジスタの、そして前記第1 のFIFOの書込み制御入力と、前記第2のFIFOの読出しおよび書込み制御 入力とが前記ニューラル・プロセッサのそれぞれの制御入力であり、第1および 第2のFIFOの状態出力が前記ニューラル・プロセッサの状態出力であるよう になっていることを特徴とするニューラル・プロセッサ。 2.請求項1に記載のニューラル・プロセッサにおいて、 前記計算ユニットがシフト・レジスタを含み、前記シフト・レジスタは、その 中に格納されているすべてのNビットのベクトル・オペランドについてJビット の算術的左シフトを実行し、ここで、Jは前記計算ユニットの第2オペランド・ ベクトルの中のデータのワード長の整除部分である最小限の値であり、前記計算 ユニットはさらに遅延要素と、Nビットのデータを格納するためのシーケンシャ ル入力ポートと、N/J個のセルとを含んでいる第1メモリ・ブロックと、Nビ ットのデータを格納するためのN/J個のセルを含んでいる第2メモリ・ブロッ クと、N/J個の乗算器ブロックとを含み、各乗算器がプログラム可能なワード 長のデータのNビットのベクトルをJビットの乗数で乗算し、前記計算ユニット はさらにベクトル加算回路を含み、前記ベクトル加算回路はN/J+1個のプロ グラム可能なワード長のデータ・ベクトルの合計値の部分積を発生し、そして前 記計算ユニットの第3オペランド・ベクトルのビットの入力が前記シフト・レジ スタのデータ入力に接続され、前記シフト・レジスタは出力が前記第1メモリ・ ブロックのデータ入力に接続され、前記第1メモリ・ブロックは各セルの出力が 前記第2メモリ・ブロックのそれぞれのセルのデータ入力に接続され、前記第2 メモリ・ブロックは、各セルの出力がそれぞれの乗算器ブロックの 被乗数ベクトルのビットの入力に接続され、前記乗算器ブロックは乗数ビットの 入力が前記計算ユニットの第2オペランド・ベクトルのビットのそれぞれのJビ ット・グループの入力に接続され、各乗算器ブロックの出力が前記ベクトル加算 回路のそれぞれの被加算値ベクトルのビットの入力に接続され、前記ベクトル加 算回路は、(N/J+1)番目の被加算値ベクトルのビットの入力が前記計算ユ ニットの第1オペランド・ベクトルのビットの入力に接続され、前記計算ユニッ トは第3オペランド・ベクトルに対するデータ境界設定の入力が前記シフト・レ ジスタのオペランド・ベクトルに対するデータ境界設定のそれぞれの入力に接続 され、前記シフト・レジスタは、モード選択入力が前記計算ユニットの前記第1 メモリ・ブロックへの第3オペランド・ベクトルのロード制御の第1入力に接続 され、、前記計算ユニットは、前記第1メモリ・ブロックへの第3オペランド・ ベクトルのロード制御の第2入力が前記シフト・レジスタのクロック入力に対し て、そして前記遅延要素の入力に接続され、前記遅延要素は出力が前記第1メモ リ・ブロックの書込み制御入力に接続され、前記第2メモリ・ブロックの書込み 制御入力が前記計算ユニットの前記第1メモリ・ブロックから前記第2メモリ・ ブロックへの第3オペランド行列の再ロード制御の入力に接続され、前記計算ユ ニットは第2オペランド・ベクトルに対するデータ境界設定のすべての入力がそ れぞれの乗算器ブロックの符号訂正の入力に接続され、前記計算ユニットの第1 オペランド・ベクトルに対する、そして結果ベクトルに対するデータ境界設定の 入力が各乗算器ブロックの被乗数ベクトルに対する、そして結果ベクトルに対す る入力に対して、そして前記ベクトル加算回路の被加算値ベクトルおよび結果ベ クトルに対するデータ境界設定の入力に接続され、前記ベクトル加算回路は結果 の第1および第2の被加算値ベクトルのビットの出力がそれぞれ前記計算ユニッ トの出力となっていることを特徴とするニューラル・プロセッサ。 3.請求項1に記載のニューラル・プロセッサにおいて、 各飽和ユニットが入力データ・レジスタを含み、この入力データ・レジスタの データ入力が前記ユニットの入力オペランド・ベクトルのそれぞれのビットの入 力であり、前記演算ユニットは入力データ・レジスタを含み、この入力データ・ レジスタのデータ入力が前記ユニットの第1および第2のオペランド・ベクトル のそれぞれのビットの入力であり、前記加算器回路は入力データ・レジスタを含 み、この入力データ・ レジスタのデータ入力が前記加算器回路のそれぞれの入力の入力であることを特 徴とするニューラル・プロセッサ。 4.飽和ユニットであって、N個の各ビットにおいて第1の乗算器を含み、前 記第1乗算器は第2データ入力が前記ユニットの入力オペランド・ベクトルのそ れぞれのビットの入力に接続され、前記ユニットは結果ベクトルの各ビットの出 力が前記ユニットのそれぞれのビットの第1乗算器の出力に接続されていて、前 記ユニットはキャリー伝播回路およびキャリー・ルック・アヘッド回路を組み込 んでいて、その各ビットが第2のマルチプレクサと排他的ORゲートと、等価ゲ ートと、NANDゲートと、反転入力付きANDゲートとを組み込んでいて、前 記ユニットの各ビットの前記反転入力付きANDゲートの非反転入力および前記 等価ゲートの第1入力が結合されて前記ユニットのそれぞれの制御入力に接続さ れ、前記ユニットのn番目のビットのNANDゲートの出力が前記キャリー・ル ック・アヘッド回路の(N−n+1)番目のビットを通じてキャリー伝播の入力 に接続され、前記キャリー・ルック・アヘッド回路は(N−n+2)番目のビッ トに対するキャリーの出力が前記ユニットのn番目のビットの第1マルチプレク サの制御入力に接続され、前記反転入力付きANDゲートの出力が前記ユニット の同じビットの第2マルチプレクサの制御入力に対して、前記キャリー・ルック ・アヘッド回路の(N−n+1)番目のキャリー発生入力に対して、そして前記 キャリー伝播回路の(N−n+1)番目のビットを通じてキャリー伝播の反転入 力に接続され、前記キャリー伝播回路は、(N−n+1)番目のビットからのキ ャリー入力が前記ユニットのn番目のビットの第2マルチプレクサの出力に接続 され(ここで、N=1,2,...,N)、前記ユニットの排他的ORゲートの 第1入力および反転入力付きANDゲートの非反転入力が前記ユニットの(q− 1)番目のビットの排他的ORゲートの第2入力に対して、そして反転入力付き ANDゲートの反転入力に対してそれぞれ接続され、前記ユニットの前記第2マ ルチプレクサの第1データ入力が前記キャリー伝播回路の(N−q+2)番目の ビットに接続され(ここで、q=2,3,...,N)、前記キャリー伝播回路 の、そしてキャリー・ルック・アヘッド回路の初期キャリー入力、前記排他的O Rゲートの第2入力、前記反転入力付きANDゲートの反転入力および前記ユニ ットのN番目のビットの前記第2マルチプレクサの第1データ入力が結合されて 「0」に接続され、そして前記ユニットの 各ビットにおいて、前記第2マルチプレクサの出力が前記等価ゲートの第2入力 に接続され、前記等価ゲートの出力が前記第1マルチプレクサの第1データ入力 に接続され、前記第1マルチプレクサは、第2データ入力が前記第2マルチプレ クサの第2データ入力に対して、そして前記排他的ORゲートの第1入力に接続 され、前記排他的ORゲートは出力が前記ユニットの同じビットのNANDゲー トの第2入力に接続されていることを特徴とする飽和ユニット。 5.請求項4に記載のユニットにおいて、 q番目のビットに対するキャリーの出力が前記キャリー伝播回路の中の(q− 1)番目のビットからのキャリー入力に接続されている(ここで、q=1,2, ...,N)ことを特徴とするユニット。 6.請求項4に記載のユニットにおいて、 前記キャリー・ルック・アヘッド回路がANDゲートおよびORゲートを両方 ともN個を含み、そして前記回路のそれぞれのビットを通して前記キャリーの伝 播の各入力がそれぞれのANDゲートの第1入力に接続され、前記ANDゲート は出力がそれぞれのORゲートの第1入力に接続され、前記ORゲートは、第2 入力および出力がそれぞれ前記回路のそれぞれのビットのキャリー発生入力に対 して、そして前記回路の同じビットに対するキャリーの出力に接続され、前記第 1のANDゲートの第2入力が前記回路の初期キャリー入力であり、q番目のA NDゲートの第2入力が(q−1)番目のORゲートの出力に接続されている( ここで、q=2,3,...,N)ことを特徴とするユニット。 7.計算ユニットであって、乗数ビットのN/2のデコーダと、Nカラム×N /2セルの乗算器アレイとを含んでいて、各乗算器が1ビット部分積発生回路と 1ビット加算器とから構成され、前記乗算器アレイのすべてのカラムのi番目の セルの前記1ビット部分積発生回路のそれぞれの制御入力が結合されて、乗数ビ ットのi番目のデコーダのそれぞれの出力に接続され(ここで、i=1,2,. ..,N/2)、前記乗算器アレイの各セルの前記1ビット加算器の第1入力が 前記乗算器アレイの同じセルの前記1部分積発生回路の出力に接続されていて、 それはN/2個の反転入力付きANDゲートと、遅延要素と、Nビットのシフト ・レジスタとを組込みんでいて、前記シフト・レジスタの各ビットは反転入力付 きANDゲートと、乗算器と、トリガと から構成され、そして前記乗算器アレイの各セルが前記ユニットの第1および第 2のメモリ・ブロックのそれぞれのメモリ・セルとして機能し、反転入力付きA NDゲートと、マルチプレクサとを含み、そして前記ユニットの第1オペランド ・ベクトルの各ビットの入力が前記乗算器アレイのそれぞれのカラムの第1セル の前記1ビット加算器の第2入力に接続され、マルチプレクサの制御入力および 前記乗算器アレイの各カラムのすべてのセルの反転入力付きANDゲートの反転 入力が結合されて、前記ユニットの第1オペランド・ベクトルに対する、そして 結果ベクトルに対するデータ境界設定のそれぞれの入力に接続され、前記ユニッ トは第2オペランド・ベクトルに対するデータ境界設定の各入力がそれぞれの反 転入力付きANDゲートの反転入力に接続され、前記反転入力付きANDゲート は、出力が乗算器のビットのそれぞれのデコーダの第1入力に接続され、乗数ビ ットのi番目のデコーダの第2および第3の入力が前記ユニットのそれぞれ(2 i−1)番目および(2i)番目のビットの入力に接続され(ここで、i=1, 2,...,N/2)、j番目の反転入力付きANDゲートの非反転入力が乗数 ビットの(j−1)番目のデコーダの第3入力に接続され(ここで、j=2,3 ,...,N/2)、前記ユニットの第3オペランド・ベクトルの各ビットの入 力が前記シフト・レジスタのそれぞれのビットのマルチプレクサの第2データ入 力に接続され、前記シフト・レジスタは第1データ入力が前記シフト・レジスタ の同じビットの反転入力付きANDゲートの出力に接続され、前記シフト・レジ スタは第1の反転入力が前記ユニットの第3オペランド・ベクトルに対するデー タ境界設定のそれぞれの入力に接続され、前記シフト・レジスタのq番目のビッ トの反転入力付きANDゲートの第2の反転入力が、前記シフト・レジスタの( q−1)番目のビットの反転入力付きANDゲートの第1の反転入力に接続され (ここで、q=2,3,...,N)、前記シフト・レジスタのr番目のビット の反転入力付きANDゲートの非反転入力が前記シフト・レジスタの(r−2) 番目のビットのトリガ出力に接続され(ここで、r=3,4,...,N)、シ フト・レジスタのすべてのビットのマルチプレクサの制御入力が結合されて前記 ユニットの第1メモリ・ブロックへの第3オペランド・ベクトルのロード制御の 第1入力に接続され、シフト・レジスタのすべてのビットのトリガのクロック入 力および前記遅延要素の入力が結合されて前記第1メモリ・ブロックへの第3オ ペランド・ベクトルのロード制御の第2入 力に接続され、各シフト・レジスタのビットの前記マルチプレクサの出力が前記 シフト・レジスタの同じビットの前記トリガのデータ入力に接続され、シフト・ レジスタは出力が前記乗算器アレイのそれぞれのカラムの最後のセルの第1のト リガのデータ入力に接続され、各乗算器アレイのカラムのj番目のセルの第1の トリガの出力が同じ乗算器アレイのカラムの(j−1)番目のセルの第1のトリ ガのデータ入力に接続され(ここで、j=2,3,...,N/2)、乗算器ア レイのすべてのセルの第1のトリガのクロック入力が結合されて前記遅延要素の 出力に接続され、乗算器アレイのすべてのセルの第2のトリガのクロック入力が 結合されて第1メモリ・ブロックから第2メモリ・ブロックへの第3オペランド 行列の再ロード制御の入力に接続され、乗算器アレイのq番目のカラムのi番目 のセルの前記1ビット部分積発生回路の第2データ入力が乗算器アレイの(q− 1)番目のカラムのi番目のセルの反転入力付きANDゲートの出力に接続され (ここで、i=1,2,...,N/2、q=2,3,...,N)、乗算器ア レイの各カラムのj番目のセルの前記1ビット加算器の第2入力が乗算器アレイ の同じカラムの(j−1)番目のセルの前記1ビット加算器の和の出力に接続さ れ(ここで、j=2,3,...,N/2)、乗算器アレイのq番目のカラムの j番目のセルの前記1ビット加算器の第3入力が、乗算器アレイの(q−1)番 目のカラムの(j−1)番目のセルの前記マルチプレクサの出力に接続され(こ こで、j=2,3,...,N/2、q=2,3,...,N)、乗算器アレイ の第1カラムのj番目のセルの前記1加算器の第3入力が(j−1)番目の乗数 ビットのデコーダの第3入力に接続され(ここで、j=2,3,...,N/2 )、乗算器アレイの各カラムの最後のセルの前記1加算器の和の出力が前記ユニ ットの結果の第1の被加算値ベクトルのそれぞれのビットの出力であり、乗算器 アレイの(q−1)番目のカラムの最後のセルの前記マルチプレクサの出力が前 記ユニットの結果の第2の被加算値ベクトルの出力であり(ここで、q=2,3 ,...,N)、結果の第2の被加算値ベクトルの第1ビットが乗数ビットの( N/2)番目のデコーダの第3出力に接続され、前記シフト・レジスタの、第1 ビットの反転入力付きANDゲートの第2の反転および非反転入力および、第2 ビットの反転入力付きANDゲートの非反転入力と、前記乗算器アレイの第1カ ラムのすべてのセルの前記1ビット部分積発生回路の第2データ入力と、乗算器 アレイのすべてのカラムの第1セルの1ビット加算器の 第3入力と、第1の反転入力付きANDゲートの非反転入力とが結合されて「0 」に接続され、そして各乗算器アレイにおいて、第1のトリガが第2のトリガの データ入力に接続され、第2のトリガが出力が前記1ビット部分積発生回路の反 転入力付きANDゲートの非反転入力に対して、そして第1のデータ入力に接続 され、前記1ビット部分積発生回路は第3制御入力が前記マルチプレクサの第2 データ入力に接続され、前記マルチプレクサは、第1データ入力が前記乗算器ア レイの同じセルの前記1ビット加算器のキャリー出力に接続されていることを特 徴とする計算回路。 8.加算器回路であって、N個のその各ビットの中にキャリー・ルック・アヘ ッド回路と、半加算器と、排他的ORゲートとを含み、前記加算器回路の第1の 被加算値ベクトルの各ビットの入力と、前記加算器回路の第2の被加算値ベクト ルのそれぞれのビットの入力とが、それぞれ前記加算器回路のそれぞれのビット の半加算器の第1および第2の入力に対して接続され、前記加算器回路は、和の 出力が前記加算器回路の同じビットの排他的ORゲートの第1入力に接続され、 前記加算器回路は出力が前記加算器回路の和のベクトルのそれぞれのビットの出 力であり、前記加算器回路のq番目のビットの排他的ORゲートの第2入力が前 記キャリー・ルック・アヘッド回路のq番目のビットに対するキャリーの出力に 接続され(ここで、q=2,3,...,N)、前記キャリー・ルック・アヘッ ド回路は、前記加算器回路の第1ビットの排他的ORゲートの初期キャリー入力 および第2入力が「0」に接続されている加算器回路において、 第1および第2の反転入力付きANDゲートが、その各ビットの中に組み込ま れており、そして前記加算器回路の各ビットの前記半加算器の和の出力が前記加 算器回路の同じビットの第1の反転入力付きANDゲートの非反転入力に接続さ れ、前記加算器回路は出力が前記キャリー・ルック・アヘッド回路のそれぞれの ビットを通してキャリー伝播入力に接続され、前記加算器回路の各ビットの前記 半加算器のキャリー出力が前記加算器回路の同じビットの第2の反転入力付きA NDゲートの非反転入力に接続され、前記加算器回路は、出力が前記キャリー・ ルック・アヘッド回路のそれぞれのビットのキャリー発生入力に接続され、前記 加算器回路の各ビットの第1および第2の反転入力付きANDゲートの反転入力 が結合されて、被加算値ベクトルおよび和のベクトルに対するデータ境界設定の それぞれの入力に接続されていることを特徴 とする加算器回路。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
RU98110876/09A RU2131145C1 (ru) | 1998-06-16 | 1998-06-16 | Нейропроцессор, устройство для вычисления функций насыщения, вычислительное устройство и сумматор |
RU98110876 | 1998-06-16 | ||
PCT/RU1998/000449 WO1999066419A1 (en) | 1998-06-16 | 1998-12-31 | Neuroprocessor, device for calculating saturation functions, calculation device and adder |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2000514230A true JP2000514230A (ja) | 2000-10-24 |
Family
ID=20206976
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP11556597A Pending JP2000514230A (ja) | 1998-06-16 | 1998-12-31 | ニューラル・プロセッサ、飽和ユニット、計算ユニットおよび加算器回路 |
Country Status (7)
Country | Link |
---|---|
US (1) | US6539368B1 (ja) |
EP (1) | EP1014274A4 (ja) |
JP (1) | JP2000514230A (ja) |
KR (1) | KR100336266B1 (ja) |
AU (1) | AU2191999A (ja) |
RU (1) | RU2131145C1 (ja) |
WO (1) | WO1999066419A1 (ja) |
Families Citing this family (48)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE60138145D1 (de) * | 2000-01-07 | 2009-05-07 | Nippon Telegraph & Telephone | Funktionsrekonfigurierbare Halbleitervorrichtung und integrierte Schaltung zum Konfigurieren der Halbleitervorrichtung |
RU2192037C2 (ru) * | 2000-06-26 | 2002-10-27 | Беллавин Михаил Сергеевич | Электронно-вычислительное устройство |
RU2198421C2 (ru) * | 2000-09-28 | 2003-02-10 | Акционерное общество открытого типа "НИИ молекулярной электроники и завод "Микрон" | Устройство сложения с ускоренным переносом |
US6836767B2 (en) * | 2001-10-03 | 2004-12-28 | International Business Machines Corporation | Pipelined hardware implementation of a neural network circuit |
RU2205444C1 (ru) * | 2002-03-04 | 2003-05-27 | Курский государственный технический университет | Сумматор-вычитатель старшими разрядами вперед на нейронах |
DE10311323A1 (de) * | 2003-03-14 | 2004-09-30 | Infineon Technologies Ag | Vorrichtung zur Synchronisation eines Mobilfunkempfängers auf eine Rahmenstruktur eines empfangenen Funksignals |
RU2246752C1 (ru) * | 2003-07-30 | 2005-02-20 | Курский государственный технический университет | Параллельный сумматор-вычитатель на нейронах |
US8190863B2 (en) * | 2004-07-02 | 2012-05-29 | Intel Corporation | Apparatus and method for heterogeneous chip multiprocessors via resource allocation and restriction |
RU2287855C2 (ru) * | 2004-12-10 | 2006-11-20 | Александр Николаевич Сычёв | Программируемая нейроматрица |
RU2408053C2 (ru) * | 2006-06-13 | 2010-12-27 | Геннадий Филиппович Нестерук | Способ обработки информации в нейронных сетях |
US7600104B2 (en) * | 2006-08-15 | 2009-10-06 | Peter Neumann | Method and system for parallel vector data processing of vector data having a number of data elements including a defined first bit-length |
US8429107B2 (en) * | 2009-11-04 | 2013-04-23 | International Business Machines Corporation | System for address-event-representation network simulation |
FR2980586A1 (fr) * | 2011-09-22 | 2013-03-29 | St Microelectronics Grenoble 2 | Dispositif et procede de determination de la distance a un objet |
RU2473126C1 (ru) * | 2011-10-28 | 2013-01-20 | Федеральное государственное унитарное предприятие "Научно-производственное объединение автоматики имени академика Н.А. Семихатова" | Нейропроцессор |
US9235799B2 (en) | 2011-11-26 | 2016-01-12 | Microsoft Technology Licensing, Llc | Discriminative pretraining of deep neural networks |
RU2486576C1 (ru) * | 2012-04-17 | 2013-06-27 | Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования Вятский государственный университет ФГБОУ ВПО "ВятГУ" | Однородная вычислительная среда для конвейерных вычислений суммы m n-разрядных чисел |
US9477925B2 (en) * | 2012-11-20 | 2016-10-25 | Microsoft Technology Licensing, Llc | Deep neural networks training for speech and pattern recognition |
RU2553098C2 (ru) * | 2013-08-23 | 2015-06-10 | Федеральное государственное унитарное предприятие "Научно-производственное объединение автоматики имени академика Н.А. Семихатова" | Нейровычислитель |
RU2595906C1 (ru) * | 2015-03-13 | 2016-08-27 | Федеральное государственное бюджетное образовательное учреждение высшего образования "Кубанский государственный технологический университет" (ФГБОУ ВО "КубГТУ") | Устройство для вычисления функций |
CN106485315B (zh) * | 2015-10-08 | 2019-06-04 | 上海兆芯集成电路有限公司 | 具有输出缓冲器反馈与遮蔽功能的神经网络单元 |
JP6890615B2 (ja) * | 2016-05-26 | 2021-06-18 | タータン エーアイ リミテッド | ディープニューラルネットワークについての加速器 |
KR102656190B1 (ko) | 2016-11-24 | 2024-04-11 | 삼성전자주식회사 | 불휘발성 메모리 장치를 포함하는 스토리지 장치 및 불휘발성 메모리 장치의 액세스 방법 |
KR102224510B1 (ko) | 2016-12-09 | 2021-03-05 | 베이징 호라이즌 인포메이션 테크놀로지 컴퍼니 리미티드 | 데이터 관리를 위한 시스템들 및 방법들 |
CN108241484B (zh) * | 2016-12-26 | 2021-10-15 | 上海寒武纪信息科技有限公司 | 基于高带宽存储器的神经网络计算装置和方法 |
US11663450B2 (en) | 2017-02-28 | 2023-05-30 | Microsoft Technology Licensing, Llc | Neural network processing with chained instructions |
US10261786B2 (en) | 2017-03-09 | 2019-04-16 | Google Llc | Vector processing unit |
US11544545B2 (en) | 2017-04-04 | 2023-01-03 | Hailo Technologies Ltd. | Structured activation based sparsity in an artificial neural network |
US11551028B2 (en) | 2017-04-04 | 2023-01-10 | Hailo Technologies Ltd. | Structured weight based sparsity in an artificial neural network |
US11238334B2 (en) | 2017-04-04 | 2022-02-01 | Hailo Technologies Ltd. | System and method of input alignment for efficient vector operations in an artificial neural network |
US10387298B2 (en) | 2017-04-04 | 2019-08-20 | Hailo Technologies Ltd | Artificial neural network incorporating emphasis and focus techniques |
US11615297B2 (en) | 2017-04-04 | 2023-03-28 | Hailo Technologies Ltd. | Structured weight based sparsity in an artificial neural network compiler |
JP7315317B2 (ja) | 2018-11-09 | 2023-07-26 | 株式会社Preferred Networks | プロセッサおよびプロセッサのデータ転送方法 |
US12169769B2 (en) * | 2019-01-26 | 2024-12-17 | Mipsology SAS | Generic quantization of artificial neural networks |
US11625583B2 (en) * | 2019-02-13 | 2023-04-11 | Mipsology SAS | Quality monitoring and hidden quantization in artificial neural network computations |
RU2708501C1 (ru) * | 2019-05-21 | 2019-12-09 | Федеральное государственное бюджетное образовательное учреждение высшего образования "Юго-Западный государственный университет" (ЮЗГУ) | Параллельно-последовательный сумматор-вычитатель старшими разрядами вперед на нейронах |
RU2715177C1 (ru) * | 2019-06-13 | 2020-02-25 | Федеральное государственное бюджетное образовательное учреждение высшего образования "Юго-Западный государственный университет" (ЮЗГУ) | Сумматор-вычислитель на элементах нейронной логики |
US11604972B2 (en) | 2019-06-28 | 2023-03-14 | Microsoft Technology Licensing, Llc | Increased precision neural processing element |
CN111176582A (zh) * | 2019-12-31 | 2020-05-19 | 北京百度网讯科技有限公司 | 矩阵存储方法、矩阵访问方法、装置和电子设备 |
RU201114U1 (ru) * | 2020-07-20 | 2020-11-27 | Владислав Сергеевич Емельянов | Устройство для расчета рационального количества изделий, подвергаемых диагностированию |
US11811421B2 (en) | 2020-09-29 | 2023-11-07 | Hailo Technologies Ltd. | Weights safety mechanism in an artificial neural network processor |
US11874900B2 (en) | 2020-09-29 | 2024-01-16 | Hailo Technologies Ltd. | Cluster interlayer safety mechanism in an artificial neural network processor |
US12248367B2 (en) | 2020-09-29 | 2025-03-11 | Hailo Technologies Ltd. | Software defined redundant allocation safety mechanism in an artificial neural network processor |
US11221929B1 (en) | 2020-09-29 | 2022-01-11 | Hailo Technologies Ltd. | Data stream fault detection mechanism in an artificial neural network processor |
US11237894B1 (en) | 2020-09-29 | 2022-02-01 | Hailo Technologies Ltd. | Layer control unit instruction addressing safety mechanism in an artificial neural network processor |
US11263077B1 (en) | 2020-09-29 | 2022-03-01 | Hailo Technologies Ltd. | Neural network intermediate results safety mechanism in an artificial neural network processor |
KR20220145143A (ko) * | 2021-04-21 | 2022-10-28 | 삼성전자주식회사 | 뉴럴 네트워크 장치 및 그의 동작 방법 |
US20220351032A1 (en) * | 2021-04-28 | 2022-11-03 | Arm Limited | Memory for Artificial Neural Network Accelerator |
US20230012127A1 (en) * | 2021-07-07 | 2023-01-12 | Texas Instruments Incorporated | Neural network acceleration |
Family Cites Families (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
SU690477A1 (ru) * | 1977-06-01 | 1979-10-05 | Предприятие П/Я А-1639 | Цифровое устройство ограничени числа по модулю |
DE3323607A1 (de) * | 1983-06-30 | 1985-01-03 | Siemens AG, 1000 Berlin und 8000 München | Digitales rechenwerk |
JPS62229440A (ja) * | 1986-03-31 | 1987-10-08 | Toshiba Corp | 配列乗算器 |
GB8612453D0 (en) * | 1986-05-22 | 1986-07-02 | Inmos Ltd | Multistage digital signal multiplication & addition |
EP0309348B1 (fr) * | 1987-09-23 | 1993-04-21 | France Telecom | Dispositif d'addition et de multiplication binaire |
GB2211966A (en) * | 1987-11-02 | 1989-07-12 | Philips Nv | Digital integrated circuit |
US5047975A (en) * | 1987-11-16 | 1991-09-10 | Intel Corporation | Dual mode adder circuitry with overflow detection and substitution enabled for a particular mode |
US5165010A (en) * | 1989-01-06 | 1992-11-17 | Hitachi, Ltd. | Information processing system |
JP2679738B2 (ja) * | 1989-03-01 | 1997-11-19 | 富士通株式会社 | ニューロコンピュータにおける学習処理方式 |
US5278945A (en) * | 1992-01-10 | 1994-01-11 | American Neuralogical, Inc. | Neural processor apparatus |
RU2022339C1 (ru) * | 1992-01-31 | 1994-10-30 | Винницкий политехнический институт | Множительное устройство |
RU2074414C1 (ru) * | 1993-08-02 | 1997-02-27 | Акционерное общество закрытого типа "Нейрома-РД" | Нейроимитатор |
US5630024A (en) * | 1994-01-19 | 1997-05-13 | Nippon Telegraph And Telephone Corporation | Method and apparatus for processing using neural network with reduced calculation amount |
RU2097826C1 (ru) * | 1994-03-22 | 1997-11-27 | Курский государственный технический университет | Параллельный асинхронный сумматор |
US5644519A (en) * | 1995-04-07 | 1997-07-01 | Motorola, Inc. | Method and apparatus for a multiply and accumulate circuit having a dynamic saturation range |
EP0892956A4 (en) * | 1996-02-09 | 2002-07-24 | Sarnoff Corp | METHOD AND APPARATUS FOR FORMING A NEURONAL NETWORK FOR THE DETECTION AND CLASSIFICATION OF OBJECTS WITH UNCERTAINED TRAINING DATA |
-
1998
- 1998-06-16 RU RU98110876/09A patent/RU2131145C1/ru active IP Right Revival
- 1998-12-31 EP EP98965909A patent/EP1014274A4/en not_active Withdrawn
- 1998-12-31 JP JP11556597A patent/JP2000514230A/ja active Pending
- 1998-12-31 WO PCT/RU1998/000449 patent/WO1999066419A1/ru not_active Application Discontinuation
- 1998-12-31 AU AU21919/99A patent/AU2191999A/en not_active Abandoned
- 1998-12-31 KR KR1019997010077A patent/KR100336266B1/ko not_active Expired - Lifetime
- 1998-12-31 US US09/486,495 patent/US6539368B1/en not_active Expired - Lifetime
Also Published As
Publication number | Publication date |
---|---|
EP1014274A1 (en) | 2000-06-28 |
RU2131145C1 (ru) | 1999-05-27 |
EP1014274A4 (en) | 2003-10-08 |
WO1999066419A1 (en) | 1999-12-23 |
AU2191999A (en) | 2000-01-05 |
KR20010020446A (ko) | 2001-03-15 |
KR100336266B1 (ko) | 2002-05-13 |
US6539368B1 (en) | 2003-03-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2000514230A (ja) | ニューラル・プロセッサ、飽和ユニット、計算ユニットおよび加算器回路 | |
CN109543830B (zh) | 一种用于卷积神经网络加速器的拆分累加器 | |
EP4258182B1 (en) | Accelerated mathematical engine | |
JP2021519455A (ja) | 大規模並列ニューラル推論コンピューティングのためのシステムおよび方法 | |
JP3605181B2 (ja) | 掛け算累算命令を使用したデータ処理 | |
EP0917047B1 (en) | Apparatus for modular inversion for information security | |
CN107704916A (zh) | 一种基于fpga实现rnn神经网络的硬件加速器及方法 | |
JPH01201764A (ja) | 神経回路網およびその回路網に用いる回路 | |
US4769779A (en) | Systolic complex multiplier | |
KR102451519B1 (ko) | 룩업 테이블 기반의 비트-시리얼 처리 요소를 포함하는 심층 신경망 가속기 | |
US6061706A (en) | Systolic linear-array modular multiplier with pipeline processing elements | |
Ahmadpour et al. | Design and implementation of a nano-scale high-speed multiplier for signal processing applications | |
US20140136588A1 (en) | Method and apparatus for multiplying binary operands | |
CN100470464C (zh) | 基于改进的蒙哥马利算法的模乘器 | |
Gutub et al. | Efficient scalable VLSI architecture for Montgomery inversion in GF (p) | |
CN113032723B (zh) | 一种矩阵乘法器的实现方法及矩阵乘法器装置 | |
Ciminiera et al. | Low cost serial multipliers for high-speed specialised processors | |
KR20200134166A (ko) | 비트 단위 곱셈-누적기(mac)를 위한 파이프라인 구조 | |
US7167885B2 (en) | Emod a fast modulus calculation for computer systems | |
Huang et al. | An efficient parallel processor for dense tensor computation | |
JP7023149B2 (ja) | 半導体装置 | |
US5684731A (en) | Booth multiplier using data path width adder for efficient carry save addition | |
Dey et al. | An application specific processor architecture with 3D integration for recurrent neural networks | |
Thasnimol et al. | A Hardware Accelerator Implementation of Multilayer Perceptron | |
Shuvo | Hardware Efficient Deep Neural Network Implementation on FPGA |