JPH06502937A - マトリックス乗算のための知識メモリチップ - Google Patents

マトリックス乗算のための知識メモリチップ

Info

Publication number
JPH06502937A
JPH06502937A JP1500899A JP50089988A JPH06502937A JP H06502937 A JPH06502937 A JP H06502937A JP 1500899 A JP1500899 A JP 1500899A JP 50089988 A JP50089988 A JP 50089988A JP H06502937 A JPH06502937 A JP H06502937A
Authority
JP
Japan
Prior art keywords
vector
matrix
memory
bit
row
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
Application number
JP1500899A
Other languages
English (en)
Inventor
モートン,スティーヴン,ジー
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Individual
Original Assignee
Individual
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Individual filed Critical Individual
Publication of JPH06502937A publication Critical patent/JPH06502937A/ja
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T5/00Image enhancement or restoration
    • G06T5/20Image enhancement or restoration by the use of local operators
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/16Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F5/00Methods or arrangements for data conversion without changing the order or content of the data handled
    • G06F5/01Methods or arrangements for data conversion without changing the order or content of the data handled for shifting, e.g. justifying, scaling, normalising
    • G06F5/015Methods or arrangements for data conversion without changing the order or content of the data handled for shifting, e.g. justifying, scaling, normalising having at least two separately controlled shifting levels, e.g. using shifting matrices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/544Methods 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
    • G06F7/5443Sum of products
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means

Abstract

(57)【要約】本公報は電子出願前の出願データであるため要約のデータは記録されません。

Description

【発明の詳細な説明】 マトリックス乗算のための知識メモリチップ(従来の技術) 私の発明は、本質的にベクトルのマトリックス倍の乗算を行うための並行処理及 び協同処理が可能なディジタル式半導体デバイスに関連している。この発明は、 特に、大きなマトリックスを外部に記憶するのではなく、内部に記憶可能なよう に、論理よりもメモリが優位であるチップに関する。
ベクトルのマトリックス倍の乗算は、ディジタル信号処理、特に、画像処理、三 次元グラフィックス、(特に、人工神経網によって実行されるような)パターン 認識、及び科学や工学の計算などに必要とされる基本的演算である。要求精度は 、マトリックスの精度とベクトルの精度が必然的に同じ程度であるとは限らない ので、単一ビットから多数ビットに至るまで、アプリケーションに応じて様々で あり、また、データが高データ率のセンサから送られてくる場合や、複雑な画像 を創造し表示せねばならない場合のように、しばしばリアルタイムで迅速に処理 されるべき複雑な問題を高速処理する場合にも、この要求精度は相違する。
(背景技術) 現存の多くのチップをベクトルのマトリックス倍の乗算を行うために使用可能で ある。しかしながら、これらのチップは本来、何れも、マトリックス乗算に本質 的に伴う並行処理を促進するようなマトリックス/ベクトル乗算器ではない。こ れらのチップでは、何れも、基本的な「積の合算」や「ベクトルの点乗積」とい った、単一の計算周期内の演算を直接実行できない。
一般的に、マトリックス乗算に使用可能な現存のチップは、全ての積を行ってか ら、それらを合計するといった、一連の演算を実行する。さらに、これらのチッ プでは、各変数の全ピット単一チノブ内に記憶され演算されることが必要である 。乗算チップでは、複雑な内部接続網及び、どのデータが何処に行きどのチップ が何を行うかを決定する複雑な制御構造を用いずに、記憶と演算のロードを分割 することは困難である。さらに、単一チップ上に全てのビットを配置するという ことは、結果的に、各マトリックス及びベクトルに関して、典型的には8.16 .24.32といった、演算に関する精度ビットの組数で設計を行わなければな らないことを意味し、システム設計者は、異なる精度レベルで実行されることが 好ましいタスクに関して、演算の最大経済性の獲得をあきらめざるを得ない。
例えば、画像処理システムでは、ベクトルは2進値画素によって表すことが可能 であり単一のビット精度を必要とするだけであるが、マトリックスは広範囲の重 みファクタを表現するためにより多くのビ・7トが必要である。
クレイ−1(Cray−1)のような、スーパーコンピュータでは、情報アクセ ス及び処理速度を速めるために、特殊な多重要素、多重メモリパンクや多重乗算 /合算ユニットといった形式の「ベクトル」ハードウェアを採用している。数ナ ノセカンドといった超高速で、冷却が必要な高価な装置を用いて実行される場合 には、がかる構造により、単一要素、すなわちスカシの処理にあたって動作性能 を大幅に改善することが可能である。しかしながら、これらのベクトル処理は、 マトリックス乗算を実行するために同じマトリックス要素を何度も取って(る必 要があるため、本質的に不十分である。さらに、同時演算が可能な多重メモリバ ンクを用いた場合にも、メモリ内のデータの配置が演算の実行に好適な場合にの み、動作性能が改良されるに過ぎない。
効率の問題がここに開示された発明のキーポイントである。発明者は、構造の各 −次要素、すなわちトランジスタや内部接続線を如何にうまく用いるかについて 方法的に考察することにより、また、これらの要素の各々を最大限用いるための 構造を選択することにより、多くのベクトル点乗積計算を実行するシステムの動 作性能を改良し、コストを大幅に減することを試みてきた。
広い意味で、単一チップ上での並行処理仕様の論理とメモリの組合わせは、当該 技術分野において多くの事例を有する。しかしながら、特に、マトリックス及び ベクトルを得るための高メモリ帯域を得るコストに関し、システム支援コストを 減少させながら、ベクトルのマトリックス倍の乗算は言うに及ばず、2つの長い ベクトルの積を得ることができるように特別に仕立てられたチップは存在しない 。
この開示に関係する従来技術に属するデバイスとしては、以下のようなものが存 在する。
1、NCRのGAPPチップ NCRのG A P P (Geometric Arithmetic Pa ralle Processor)チップは72の1ビツト処理装置である。各 処理装置は2つのグループのメモリと、1ビツト演算論理装置(A L U :  Arithmetic andLogie Unit)とを備えている。全て のメモリは共通アドレスを有し、全てのALUは同じ命令を同時に実行する。処 理装置は12×6マトリツクスに配列されており、各処理装置は最も近い隣接装 置に接続されており、端部の処理装置はパッケージの入力/出力ビンに接続され ている。多くの処理装置を用いることにより、並行処理チップが得られる。
データは最も近い隣接装置間の接続を介して直列仕様でチップに/から送られる 。語幅なしランダムアクセス機構(no word−widerandom a ccess mechanism)を祈している。全ての処理装置の出力に連結 される入城加算器は存在せず、また、多重チップと組み合わされて語の精度を増 加させるための機構も存在しない。
ICLのD A P (Distributed Array Process or)のプロセッサチップはGAPPチップに非常に似ている。シンキング・マ シーン社(Thinking Machines、 Inc、)の接続マシン内 プロセッサチップもGAPPチップに似ているが、チップ間で行われる相互接続 の構造がより弾力に富んでいる。1987年6月発行のrscientific  AmericanJ所載のダブリュ・ダニエル・ヒリス(W、 Daniel  Hillis)による「接続マシン(The Connection Mac hine)J参照のこと。
2、ITTの細胞状アレイプロセッサアレイチップII−M(Cellular  Array Processor Array Chip II−M)細胞状 アレイプロセッサ(CAP)アレイチップTI−Mは多重語、256ビツト幅の メモリを含み、メモリの各行は16ビツト毎の16群に構成されている。16ビ ノト各群は、16ビソトALUを含む自身の処理装置に連結される。別のメモリ /処理装置対が、チップの大きな物理的寸法ために生じ得る組立の欠点を見越し て、設けられる。多(のメモリ/処理装置を備えている結果、並行処理チップが 得られる。
データは、16ピノト幅の共通データバスを介してチップに/から転送される。
全ての処理装置は、−組の命令入力により特定される動作を一斉に行うように動 作する。この構造は、オンチップメモリの広い帯域を利用しており、メモリの各 行から256ビツトの全てにアクセス可能であり、同時に処理可能である。
全ての処理装置の出力を組み合わせる入城加算器は設けられておらず、複数のチ ップを組み合わせることにより語の精度を増加させるための機構も存在しないが 、複数のALUが同時に動作して、語の寸法を16ビツト多重にまで増加してい る。入城加算器、及びその16ピy)語の信頼性及び一般目的命令セットが存在 しないので、ベクトル点乗積を効果的に行うために用いることは困難である。
この子ノブについては、rProceedings of the 1986  Fall JointComputer ConferenceJの277頁乃 至286頁所載のステイーブン・モートン(Steven Morton)によ りrA Fault−Tolerant、 Bit−Parallel、Ce1 lular Array ProcessorJに記述されている。
3、連想記憶メモリチップ(Content−Addressable Mem ory Chips)これらのチップは、記憶パターン組の要素とチ・ノブに送 られたターゲットパターンとが正確に適合するかどうかを判断する。数学的演算 は行わないため、信号処理や(正確整合(exact−match)ではなく) 最適整合(best−+++atch)、パターン認識よりは、データベース調 査及び検索のアプリケーションにのみ好適なものである。
このチップの例は、1988年lO月発行のrvt、sl Systems D esignJの46頁乃至58頁及び84頁所載のシー・アール・ペトリ(C, R,Petrie)及びエイ・アール+ハーソン(A、 R,)Iurson) によりrA VLSI JoinModuleJに記載されている。
4、SLAMチップ このチップはスタッフォード大学により設計され、特許が取得されたものである 。これは、グラフィックスアプリケーションのためのメモリチップ上に配置され た複数の単一ブロモ、すを供給する。
コンピュータ生成画像内の対象が、グラフィックス表示システムに関する要求に 応じて、充填される(表される(rendered))。マトリックス乗算は実 行されない。チップは個々に作業を行い、その結果を、演算の精度を高めるため に複数のチップ間で組み合わすことはできない。
5、ビデオダイナミックランダムアクセスメモリ256に語×4ビットに構成さ れた、rHjtachi 53461Jのような、ビデオダイナミックランダム アクセスメモリ(VDRAM)は、メモリの行の取り出しがチップに内蔵するデ ータビットを供給すると言う事実を使用している。これらのビ・2トは、各デー タの行が広(為場合には、複数のチップ上のシフトレジスタにロード可能であり 、メモリを通常のランダムアクセス仕様で動作させながら、レジスタ内のデータ を高速でチップから外にシフトさせることが可能である。
処理論理は備えていない。
6、 「スマート型J VDRAM オンチップ処理性能を備えたVDRAMが、rHitachi 53462Jで ある。これはrHitachi 53461Jと同様のVDRAMであるが、4 つの1ビツト論理プロセツサを備えている。これらのプロセッサ+1、レジスタ の外ヘシフトされたデータと4つのメモリ入出力ビンカ)ら受信されたデータ間 で行われる、論理積(AND) 、論理和(OR)、排他的論理和(NOR)な どの簡単な演算を可能化する。
乗算と加算は実行できない。オンチップ論理からの結果(まオンチップメモリに 書き込まれるだけなので、複数の子・ノブ(こより計算を外部的に組み合わせる ことはできない。
7、オンチッブキャ・ノシュメモリ付マイクロプロセッサチップモトローラ社の rMc68020Jのようなマイクロプロセッサチップは、遅い外部メモリから 反復的なプログラムセグメントに関する命令を取り出すのを防止するために、小 容量のオンチップメモリ、又はキャッシュメモリを含んでいる。単一のALUを 備えているのみなので、これは、並行処理プロセッサではなく、スカラプロセッ サである。精度を複数のチップの演算を組み合わせて高めることはできない。
8、In’mos)ランスピユータ(Tranputer)列ピントストリーム を用いる多重チップ間のデータ転送を促進するための4つの独立したオンチップ バッファを備えている。他のマイクロプロセッサと同様に、単一のALUを備え ており、並行プロセッサではなく、スカラプロセッサである。
9、FEBRISチップ このチップは、2進値データを用いた正確整合の1<ターン認識のアプリケーシ ョンを意図したもので、かかるアプリケーションのために256ポイントの相関 関係を提供する。このチップは、16の16ビノト整合レジスタと、16の16 ビツトマスクレジスタをロードするために用いられるデータに関する16の16 ビノトシフトレジスタを含んでいる。i=0〜15、j=o〜15として、デー タレジスタからの(i、j)番目のビットが、整合レジスタからの(t+ J) 番目のビットと排他的論理和(NOR)され、その結果がマスクレジスタの(i 、j)番目のビットと論理積(AND)される。全ての排他的論理和(NOR) ゲートの出力は加算器、または真値入力の数をカウントする「検数(タリー)」 回路に送られる。
この検数結果は0〜256の計数になり、9ピツトの出力を与える。
16の16ピノトデータシフトレジスタ内に含まれる256の変数の各精度は1 ビツトである。最適整合は決定することができない。
データの各ビットは、畳込みウィンドウの全ての可能位置内に用いるべく、チッ プ内に16回送られる。−組の相互接続された、外部なる。
このチップは、1987年6月発行のr IEEE Journal of 5 olid 5tate C1rcuitsJ第423頁乃至第429頁所載のマ ーセル・ベルブロム(Mareel Pelgrom)らによるrFEBRIs  : A chip for Pattern RecoginitionJに 記載されている。このチップがこの発明のフンチクストで重要な意味を持つのは 、検数回路(多入力加算器)を採用しているからであり、この検数回路は本発明 の要素でもある。
10、ビットスライスプロセッサチップrAdvanced Micro De vices 2903Jはその演算の精度を多重4ビツト内で選択することを可 能にする。積算は、順次加算/シフトアルゴリズムを用いて実行される。これは 、一度に要素の単一組のみの演算が可能なスカラプロセッサである。このチップ が含んでいる記憶容量は、大容量低速メモリと小容量高速メモリとをチップ上に 組み合わせることのできない二重ボート型レジスタバンク設計に反映されるよう に、非常に制限的である。
11、積算/累算器チップ 積算/累算器チップはいくつかの企業で製造されている。これらはスカラデバイ スである。−周期内で、これらのチップは二つの数を積算し、その結果をチップ 上に記憶された現在の合計に加える。
典型的な固定小数点装置としては、rTRW MPY−16J及びrlDT 7 210Jがある。入力としては8.12また16ビノトを備えている。またこれ らのチップは僅かな記憶ロケーションを備えているに過ぎない。
積算/累算器チップは高速静的RAM、アドレス発生器、及び点乗積演算を実行 するための制御論理と組み合わせることが可能である。ここで再び問題となるの は、データをあちこち移動させるために高速のデータ経路がチップ間で必要とな る点である。これらのデータ経路の寸法は並行動作するチップの数に比例してお り、並行に動作されるチップの数が多ければシステムの動作性能も向上するもの と推定される。チップ間のデータ移動は、チップを結ぶ信号線が比較的高いキャ パシタンスを有しているために、非効率的であり、データが送られる転送線のポ イントは高電力が要求される点である。
これとは対称的に、信号線がチップ上におかれる場合には、キャパシタンス量は 通常は数単位小さくなる。長さが非常に短いので多くの場合転送線の問題は回避 可能であり、ある地点から別の地点へ同じ信号を伝達する場合にも非常小さい電 力が必要とされるに過ぎない。さらに、ある標準構造の単一チップ上に数百ピッ ト幅のバスを備えることが非常に経済的であるが、同様のバス幅をいくつかのチ ップを接続するために使用する場合には非常に高価になる。
−緒に作動し、その出力が外部で合算されるような多数の積算/累算器からシス テムを構築することは、合算を行うために情報を運ぶために多くのピンが必要と なるため、非効率的である。別の加算器によって2つの32ビツト量を合計する 場合には、97のデータピン、2つの32ビツト入力及び1つの32ビツト出力 が必要であな回路なので、非常に小さなチップで機能を実行することが可能であ るが、加算器はかかる最小寸法機能よりも多くのピンを必要とし、チップ面積を 浪費し、コストを高める。かかるチップは「ピン制限的(pin 11m1te d)Jであると言われている。
12、アプリケーション特殊集積回路 積の合算を行うために加算器に沿ってチップ上に幾つかの多重ビツト積算器を置 くことにより、積の合計の演算を実行する場合に必要となるピンの数を減らすこ とができる。ごれは、多くの企業により製造されている「セルライブラリ」を用 いることにより可能になる。問題は、如何にしてデータと共に供給される算術要 素を保持し、如何にして、それぞれを別のチップとして構築することなく、各ア プリケーションに関して要求される正しい精度量を得るかである。
13、:7ンボルバ(Convolver)チップコンポルバチノブは、レジス タ、積算器及び加算器を、フィルタリング演算を行うために同一チップ上に配置 している。これらのチップは、積算器と加算器が同一チップ上に含まれているの で、積算/累算器チップ系よりも、相関又は二次限畳み込みといった、ある種の 演算を効果的に実行可能である。
典型的な装置はr 1rvos IMS A100Jのカスケード可能信号プロ セッサ(Cascadable Signal Processor)であり、 この装置は32段の横フィルタ(transversal filter)を含 み、4.8.12及び16のビットは場で選択される係数を許容している。しか しながら、乗算器ハードウェアは入力時に4ビット幅であり処理が進むに連れよ り多くのどノドを生じるため、さらに、単一チップ上に32の16ビノトX16 ビノトの乗算器を設けることは不経済なので、係数が広がれば広がるほどサンプ リング率が低下する。さらにまた、チップは同じ信号を乗算器に供給するので( 順次遅延させる場合もあるが)、マトリックス乗算に使用することはできない。
(発明の開示) 本発明の目的は、ベクトルのマトリックス倍の乗算を効果的に行うことにある。
効率の問題は、(1)同じデータ列を高価なメモリから取り出し、高価な相互接 続システムを介して演算を行うための処理装置にまで転送する回数、及び(2) 如何に効率的に各回路要素を用いるかに係っている。積の合計の計算は直接実行 される。
説明を簡略化するため、マトリックスの各行(行ベクトル)に列ベクトルをなす ベクトルを掛けるものと仮定する。当然に、単一の行ベクトルにマトリックスの 各列を掛けることも可能であり、本発明は両方の演算に応用できる。周知の通り 、マトリックスの各行ベクトルは単一のメモリ周期内でアクセス可能なメモリセ ルの行に置き換え可能なので、マトリックスの行ベクトルと列ベクトルに過程を 設定することにより、説明を簡略化することができる。
発明者の見解によれば、現在のシステムで、各列ベクトルとの乗すチノブ群から 同じデータを繰り返し読出すことが必要であり、さらに要素を処理するために相 互接続システム間の移動が必要であるため、無駄が多い。この無駄は、ベクトル 長さ、すなわち要素の数が増えれば増えるほど増加する。この反復読出しは、( A)(B)= (c) のような、2つのマトリックスの乗算から帰結するものである。というのも、全 (A)マトリックスが、(B)マトリックスの各列に関して、一つのマトリック スを何度も使う必要がある反復アルゴリズムから、又は新しい一組の刺激の各々 が同じマトリックスを用いて処理される必要がある信号処理及びパターン認識用 アプリケーションから、要求されるからである。
特に: 1 ベクトルのマトリックス倍の乗算を行う組合わせプロセッサ及びメモリチッ プがここで説明される。このチップでは、システムの処理能力はシステムの記憶 容量が増加するに応じて増加する。
マトリックスデータは、計算がチップ内部で行われている間、チップ内にロード されチップから読出される。
2 ベクトルのマトリックス倍の乗算を実行するための新規な方法が説明される 。2進値演算の順序は、多くの演算が大容量メモリコアに非常に近接した位置で 行われ、生じるデータ縮小の結果チップを離れる接続数を最小限に抑えるように 、選択される。
3 マドソックスデータは、あたかも通常のメモリチップのように、知識メモリ チップにロードされ、そこから読出される。
4 マトリックス及びベクトルを記憶するために必要な最小数を越えて知識メモ リチップの数を増加させて、システムの動作性能を増加させるための新規な方法 が与えられる。
5−組の知識メモリチップが取り扱うことができるよりも大きな問題を取り扱う ために、複数組の知識メモリチップを一緒に動作させることが可能な新規な方法 が与えられる。
6 全での数が各マトリックス及びベクトル内で一貫した表現を有する限りは、 符号付き数及び符号無し数を組合わせ・た固定小数点表現を用いることが可能で ある。
7 マトリ、クス及びベクトルの精度は自由に選択することができる。ベクトル の精度は回路の動作中に容易に選択できるが、マトリックスの精度はシステム設 計時により効果的に選択される。全ての精度の合計が実行される。
8 マトリックスの行の数とベクトルの要素の数は、構造の効率がこれらの寸法 、すなわち寸法の増加に依存しており、好適な実施例では、寸法を256のオー ダー又はその倍数に設定してはいるが、個々に自由に選択することができる。シ ステム動作時に、チップの最大容量よりも小さい寸法であれば動的に選択可能で ある。
さらに、マトリックスの任意の列を自由にマスク、又は動的に不能化することも できる。代替実施例においては、効果的に取り扱われる列が256よりも少ない マトリックスの設計が示される。
9 各知識メモリチップ上のメモリ及び処理要素の構造、同様のチップと支援チ ップ(ベクトル累算器チップ)の群の構造、及び乗算が実行されるシーケンスは 、すべて、乗算を支援するべく各知識メモリの外部に必要とされるメモリ周期の 数を劇的に減少するように設計される。かかる設計思想は、乗算を支援するため に必要とされるチップの数とコストを減少させ、知識メモリチップ外部のチップ を同じチップ上に製造する必要性を減少させることによりメモリの分担を促進す る。集中データ処理のアプリケーションの場合には、マトリックスは延長された 周期、又は永久に知識メモリチップ内に常駐され、知識メモリチップ外部のメモ リからマトリックスを取り出す必要がなくなる。
10 チップ面積の大部分が論理回路ではな(、メモリによって占有されるよう にチップを構成することが好ましい。メモリは密集的であり論理ゲートはそうで はなく、多くの問題は記憶され処理されるべき非常に多くの情報を要求するので 、大容量メモリと計算が行われている現在の記憶領域の間のデータ移動を最小限 に抑えることが好ましい。さらに、大容量メモリは、周知の技法を用いて、小さ な割合の余分の行及び列を設けることにより、製造上の欠陥を補い7、コストを 下げることができる。このような経済的な欠陥補償技法はランダム論理構造には 存在しない。
11 さらに、本発明の目的は、設計にシリコン及びガリウムヒ化物などの多く の製造技法との互換性をもたせ、チップが動作せねばならない環境及び要求され る動作性能に応じて、最適の製造技法を採用可能にすることである。さらに、C MO3設計技法の使用る。
12 さらに、本発明の目的は、設計にDRAM、SRAM5 EPROMSR OMなどの多くのメモリ技法との互換性をもたせ、データの生存時間に応答させ ることである。このように、システムは、交換可能ではあるが不揮発性のメモリ 内に記憶された組込みパターンで製造されるか、又は、揮発性メモリ内に連続的 ロードされる値を備えている。
13 知識メモリチップの論理部分の動作は効果的であり、最小の可能領域内で 最大の動作性能を得ることができる。桁上げ予見回路を用いる加算器は、大部分 のゲートは、活動に波があり、従って瞬間的にみれば大部分のゲートが活動して いない多ビツト組合わせ積算器とは異なり、大部分の時間活動しているので、効 果的であると考えられる。。
14 メモリの最大利用を達成するために、知識メモリチップの処理部分の構造 は、メモリの固有構造を反映すべきである。大容量メモリセルのアレイは、全て の方向へ信号が走る長さを最小にしてキャパシタンスを減少させ動作性能を改良 するために、はぼ正方形をしているので、出力で同時に利用可能なビットの数は 記憶された総ビット数の平方根である。このように、このプロセッサ構造はメモ リの出力で多数のビットを利用することができる。
15 本発明の目的は、マトリックス及びベクトルの精度を、個々に自由に選択 可能であり、任意の大きなウィンドウを得るために複数の知識メモリチップを一 緒に動作させることが可能な、畳込み(図面の簡単な説明) 本発明の実行の詳細は、添付図面に示された、概略的なブロック図及び演算によ り説明される。全ての図面はこの発明に基づくものである。
第1図は、算術演算の方程式が、複数のlビ・yト知識メモリチ・ノブを横切っ て、かつ複数の時間周期にわたって分布される様子を示している。
第2図は、マトリックス及びベクトルが、複数の1ビ・ソト知識メモリチップの メモリ内に記憶される様子を示している。
第3図は、ベクトルのマトリックス倍の乗算を行う、複数の知識メモリチップと ベクトル積算チップから成る、知識メモリブロックを示している。
第4図は、1ビツト知識メモリチツプのプロ、り図を示している。
第5図は、1ビア)知識メモリチップ内の記憶位置内のマド1ルツクス及びベク トル情報の配置、及びブロモ・ツサスライスへのこの情報の流れを示している。
第6図は、1ビツト知識メモリチツプのベクトルメモリ内へのベクトル要素のピ ントの配置を示している。
第7図は、1ビツト知識メモリチツプ内の1ビノトブロセ・ノサスライスの相互 接続を示している。
第8図は、各1ビツトプロセツサスライスの概略図を示している。
第9図は、知識メモリチップ内のマトリックスアドレス論理のブロック図である 。
第10図は、知識メモリチップ内のベクトルアドレス論理内のアドレス回路のブ ロック図である。
第11図は、知識メモリチップ内のベクトルメモリ内の一つの記憶せるの転送レ ベルの概略を示している。
第12図は、ベクトルアドレス論理内の列駆動器/受信機のブロック図である。
第13図は、ベクトル積算器チップのブロック図である。
第14図は、ベクトル積算器チップ内の重み付は加算器のブロック図である。
第15図は、lOビット重み付は加算器を示している。
第16図は、12ピット重み付は加算器を示している。
第17図は、16ビツト重み付は加算器を示している。
第181図は、本発明の詳細な説明するためのマトリックス及びベクトルの事例 を示している。第18.2図は、ベクトルのマトリックス倍の第1の行の乗算の 詳細を示している。第18.3図は、同じベクトルのマトリックス倍の第2の行 の乗算の詳細を示している。
第19図は、単一のブロックで扱えるものよりも大きなマトリックスを扱うため に、又は単一のブロックの時得られるものよりも良好な動作性能又は精度を得る ために4つの知識メモリブロックを一緒に動作せる様子を示している。
第20図は、各マトリックスのビットに4ビツトのベクトルを掛ける場合の、プ ロセッサ論理に関する代替実施例を示している。
第21図は、2つの隣接する4X4畳込みウィンドウに組分けされた画素(ヒリ セル)の二次元アレイを示している。最も左側のウィンドウは、行=0、列=0 、すなわちW(0,0)位置である。最も右側のウィンドウは、W(0,4)位 置である。また、各ウィンドウの画素が知識メモリチップ内のマトリックスメモ リの行に順序づけて配置されるシーケンスが示されている。
第22図は、位置列右側のW(0,1)位置に移動させられた畳込みウィンドウ を示している。
第23図は、W(0,2)位置にあるウィンドウを示している。
第24図は、W(0,3)位置にあるウィンドウを示している。
第25図は、第21図のウィンドウの画素と同様の重みのビットを、知識メモリ チップのマトリックスメモリの行に記憶する方法を示している。一連のチップが 、画素の一連の同様の重みを有するビット組を記憶する。
第26図は、画素の線を下に移動した場合の畳込みウィンドウを示している。ウ ィンドウはw(i、o)及びW(1,4)位置にある。
ウィンドウ内の画素がマトリックスメモリの行内に順序づけて配置されるシーケ ンスも示されている。
第27図は、第26図に示すウィンドウのピクセルと同様の重みのビットを、知 識メモリチップのマトリックスメモリの行に記憶する方法を示している。一連の チップが、画素の一連の同様の重みを有するビット組を記憶する。
第28図は、画素の線を下に移動した場合の畳込みウィンドウを示している。ウ ィンドウはW(2,0)及びW(2,4)位置にある。
ウィンドウ内の画素が知識メモリチップ内のマトリックスメモリの行内に順序づ けて配置されるシーケンスも示されている。
第29図は、第28図に示すウィンドウのピクセルと同様の重みのビットを、知 識メモリチップのマトリックスメモリの行に記憶する方法を示している。一連の チップが、画素の一連の同様の重みを有するビット組を記憶する。
第30図は、画素の線を下に移動した場合の畳込みウィンドウを示している。ウ ィンドウはW(3,O)及びW(3,4)位置にある。
ウィンドウ内の画素が知識メモリチップ内のマトリックスメモリの行内に順序づ けて配置されるシーケンスも示されている。
第31図は、第30図に示すウィンドウのピクセルと同様の重みのビットを、知 識メモリチップのマトリックスメモリの行に記憶する方法を示している。一連の チップが、画素の一連の同様の重みを有するビット組を記憶する。
第32図は、画素の線を下に移動した場合の畳込みウィンドウを示している。ウ ィンドウはW(3,0)及びW(3,4)位置にある。
ウィンドウ内の画素が知識メモリチップ内のマトリックスメモリの行内に順序づ けて配置されるシーケンスも示されている。
第33図は、第32図に示すウィンドウのピクセルと同様の重みのビットを、知 識メモリチップのマトリックスメモリの行に記憶する方法を示している。一連の チップが、画素の一連の同様の重みを有するビット組を記憶する。
第34図は、4×4畳込みウィンドウの係数、及び、知識メモリチップのベクト ルメモリの行内に順序づけて記憶されるシーケンスを示している。
第35図は、4×4ウインドウに一貫する、ベクトルメモリ内の係数のだめの4 つの位置を示している。
第36図は、4×4ウインドウに関し、知識メモリチップ内のマトリックスシフ タを含む、シフトレジスタ、MSRO及びMSRIを介して行われるデータ流れ を示している。
第37図は、4X4ウインドウと第21図の画素の第1の線に関し、知識メモリ チップ内のマトリックスシフタの2つのレジスタを介して行われる画素の流れを 示している。
第38図は、ウィンドウが如上の位置にある場合に、4×4畳込みウィンドウの 演算を行うための方程式の様子を示している。
第39図は、知識メモリ内の、ベクトルシフタ、VSROを介しての、4×4ウ インドウに関する情報の流れを示している。
第40図は、ベクトルシフタを介しての、4X4ウインドウに関する係数の流れ を示している。
第41図は、知識メモリチップ内の256ビントマトリノクスのシフタに関する ブロック図を示している。
第42図は、256ビノトマトリノクスシフタの4つの64ビツトモジユールの 内の一つのブロック図である。
第43図は、256ビノトマトリツクスシフタの32の8ビツトモジユールの内 の一つのブロック図である。
i44図は、マトリックスシフタの64ビツトモジユール内のマトリックスンフ タマルチプレクサの表である。
第45図は、知識メモリチップ内の256ビノトのベクトルシフタに関するブロ ック図である。
第46図は、ベクトルシフタの32の8ビツトモジユールの内の一つに関するブ ロック図である。
第47図は、例示のために、32X32畳込みウィンドウに関する1024の係 数組を示している。
第48図は、4つの知識メモリチッブ内のベクトルメモリの列内への32X32 ウインドウ係数の初期配置を示している。
第49図は、画素の第2の線を処理するための位置への係数のシフトに先立つ、 4つの知識メモリチップ内のベクトルメモリの列の別の部分へのウィンドウ係数 の配置を示している。第48図に示すデータと異なるデータには下線が付しであ る。
第50図は、画素の第2の線を処理するための位置への係数のシフトの後の、4 つの知識メモリチップ内のベクトルメモリの列の別の部分へのウィンドウ係数の 配置を示している。第49図で下線が付しである係数については、ここでも同様 に下線が付されている。
(注 記) 読み手の便を図るために、全ての引用番号は図面番号と関連されている。引用番 号は(XXYY)といった形式で記載されているが、ここで、(XX)は添え字 を除いた図面番号を示し、(YY)はその図面中の引用番号を示している。複数 の図面中に同様の項目が存在する場合には、引用番号は最も若い番号の図面から 引き出されている。
(発明を実施するための形態) 基本原理 ここに開示された1ビツト知識メモリチツプの群、又はブロックにより実行され る算術が第1図に示されている。原理は行の数によって制限されることはないが 、説明の簡略化のために、ここではマトリノクスが8行を有しているものと仮定 する。特別な場合として、1行、すなわち、複数要素のベクトル対ではなく一対 の数を掛は合わせるスカラ積がある。
第1図において実行される演算は次の通りである。
ここで、マトリックスの乗算は通常の規則に基づいて行われるので、その結果は 次の通りである。
内 積=Aa+Bb+Cc+Dd+Ee+Ff+Gg+Hhここで、新規な点は 各要素のビットを取り扱う方法である。ビットは、ここに開示されているように 、 (M)で示される1ビツト知識メモリチツプにより取り扱われる。これらの チップには、IMc(0) 乃至IMc (M−1)のラベル付けが行われてお り、第0番乃至第N−1番の番号が付されたN回の時間周期にわたって演算が行 われる。
典型的なマトリックス行ベクトル要素Xの2の補数の2進値表現は第1図におい て2進値べき級数として与えられる。当然に、共通の位取り因数が小数点重みを 得るためにべき級数の全ての重みに与えられるが、これは含まれる原理に影響を 与えるものではない。
Xの精度のビット数はMである。マトリックスの各行の各要素が同じ精度を有し ていると仮定する。この場合のマトリックスの精度はMビットである。符号無し 演算が好ましい場合には、記憶されるビットの数はM−1のみでよく、ビットM −2が最後のものとなる。
X内の各ビットはX (k)という形式で与えられる。ここでkは特殊ビットの 番号であり、0乃至M−lの値を取る。共通表現により規定されている場合には 、最重要ビy)X(M 1)は負の重み、すなわち、−(:” (M−1) ) を持っている。マトリックス行ベクトルのビット番号Mは乗算を実行するために 用いられる1ビツトチツプの番号と同じである点に注意する必要がある。ここに 示される方法を通じて、単一チップをマトリックスの複数ビットを処理するため に使用することができることが了解されよう。
典型的な列ベクトル要素Yの2の補数の2進値表現が、2進値の級数として第1 図に示されている。当然に、共通の位取り因数が小数点重みを得るためにべき級 数の全ての重みに与えられるが、これは含まれる原理に影響を与えるものではな い。Yの精度のビット数はNである。マトリックスの各行の各要素が同じ精度を 有していると仮定する。この場合のマトリックスの精度はNビットである。
符号無し演算が好ましい場合には、記憶されるビットの数はN−1のみでよく、 ビットN−2が最後のものとなる。
Y内の各ビットはY (k)という形式で与えられる。ここでkは特殊ビットの 番号であり、0乃至N−1の値を取る。共通表現により規定されている場合には 、最重要ピッ1−Y(N−1)は負の重み、すなわち、−(2” (M−1)) を持っている。マトリックス列ベクトルのビット番号Nは乗算を実行するための 時間周期の番号と同じであるが、この時間は列ベクトル内の要素の数とは独立で ある点に注意する必要がある。ここに示される方法を通じて、知識メモリチップ の複数の群を、ベクトルの精度のビット数の小数部に対する時間周期の数を減す るために使用することができる。
Mビットが行ベクトルの精度であるような、Mチップの全てが各時間周期の間に 同時に動作する。各チップは2進値ベクトルの内積102を計算する。2つのベ クトルは2進値であるから、2つの2進値ビツトの積は2つのビットの論理積( AND、図中に「&」で示す。)で表され、rl X IJはrlANDIJと 同じことになる。各チ・ノブは各周期の間に行ベクトルの同じビット上で動作す るが、後続の周期では列ベクトルのより高い重みのピントに連続して進む。
計算の各組に関して2つの位取り因数が存在する。第1の位取り因数100は、 チップ0として示される特定知識メモリチップ内の行ベクトルの各ビットの重み である。この重みは、後続ビットの増加する重みに適合するように、あるチップ から次のチップへ移行すると二倍にされる。第2の位取り因数lotは、周期O として示される特定周期の間の列ベクトルからの同様な重みビット組の各ビット の重みである。この重みも、後続の同様な重みビット組の増加する重みに適合す るように、ある周期から次の周期へ移行すると二倍にされる。
全ての知識メモリは、特定時間周期の間の列ベクトルの同様な重みビットの同じ 組上で動作する。異なる知識メモリチップは各時間周期の間に行ベクトルの異な るビットを取り扱うが、所与の知識メモリチップは時間周期に拘らず行ベクトル のビットの同じ組を取り扱う。列ベクトルの連続ビットは連続時間周期の間全て の知識メモリチップにより取り扱われる。このように、各知識メモリチップは部 分積を計算する。これらの部分積は、複数の知識メモリチップにわたって、およ び複数の時間周期にわたって重みづけられ合計され、完全な内積が得られる。
結果は完全に正確なので、数値的近似技法を用いる必要がないことに留意する必 要がある。各行ベクトルおよび列ベクトルの精度の多くのビットが所望に応じて 使用可能である。さらに、最適精度をハードウェアの数及びコストを低減させる ことが要求される特殊アプリケーションに使用可能なように、行ベクトルの精度 を列ベクトルの精度と相違させることも可能である。
1以上の行ベクトルを備えたマトリックスは、如上の如く、第1の行ベクトル及 び第1の列ベクトルの内積を計算することにより取り扱われ、次いで第2の行ベ クトルと第1の列ベクトルの内積が行われ、以下同様に、所望の数の行ベクトル について計算が行われる。
この技法は、単一の列ベクトルのマトリックス倍の乗算に限定されない。1以上 の列ベクトルを備えたマトリックスが、第1の列べクトルに関する内積の全てを 計算することにより取り扱われ、次いで第2の行ベクトルに関する内積の全てが 行われ、以下同様に、所望の数の列ベクトルについて計算が行われる。知識メモ リチ、、ブが複数の列ベクトルを記憶可能な場合には、ある行ベクトルは次々と 列ベクトルに関して乗算が行われ、次いで次の行ベクトルに関して処理が反復さ れ、以下同様にある行ベクトルから次の行ベクトルへと列ベクトルをロードせず に演算を行うことが可能である。
lビット知識メモリチップの群内にデータを記憶する方法が第2図に示されてい る。簡略化のために、わずか8ビツトのマトリックス精度を仮定する。この場合 、8つの1ビット知識メモリチ、2ブが必要とされ、第1図に示す例とも一致す る。データの表現は以前の記憶フォーマットの要点は、(1)マトリックスの行 は知識メモリチップ内の[マトリックスメモ1月内のメモリ刻せるの物理的行内 に記憶され、(2) 後続のマトリックスの行はマトリ、クスメモリの後続の行 内に記憶され、(3)後続の列の配置は左から右へ、又はその逆に全てに関し同 じ順序に従い順次行われ、(4)マトリ、クスの各列はマトリックスメモリの物 理的列に落とさねばならず、(5)列ベクトルの要素の順序は行ベクトルの要素 の順序と一致する必要がある。
知識メモリチップ0、IMC(0)内のマトリックスメモリの内容が引用番号2 00として示されている。200はマトリックスの「ビ・ノド平面O」を表現し ている。知識メモリチップl、IMC(1)内のマトリックスメモリの内容が引 用番号201として示されている。知識メモリチップ6、IMC(6)内のマト リックスメモリの内容が引用番号206として示されている。知識メモリチップ 7、IMC(7)内のマトリックスメモリの内容が引用番号207として示され ている。
他のビットについても同様に示されている。表記はく「M」マトリックス行9列 ビット番号)の形式で行われる。従って(MO,0bO)は、マトリックス要素 (0,O)でビット(0)を示す。
上述のように、各知識メモリチップはマトリックスの各要素に関する特定ビット を記憶する。同様に、知識メモリチップが上述の制約を被る点を除けば、共通1 ビット幅メモリチップはマトリックスの複数ピントを記憶する。
知識メモリ内に記憶されている各マトリックスのビット番号は1つに固定される が、適当な値を取ることができる。マトリックスの複数のビットが1つのチップ に記憶されている場合に、複数ビ、l−のチップは、単に複数の1ビツトチツプ を内部に備えたものとして考えることができる。
マトリックスの記憶と異なり、列ベクトルの各要素の全ビットは、個々に、引用 番号208として示される、各知識メモリチップIMC(7−0)内のベクトル メモリ内に記憶される。2つの列ベクトルが示されているが、実際の数は使用さ れるベクトルの寸法に依存している。前の列ベクトルが用いられている間に、新 しい列ベクトルをロード可能なように、少なくとも2つの列ベクトルに関する記 憶ができることが好ましい。
単一の知識メモリチップが記憶できるよりも大きなマトリックスを扱う方法、及 び各内積を計算する周期の回数を減少させる方法については後述する。
知識メモリアーキテクチャの動作性能の改良は、長い、典型的には256要素か らなるベクトルを備えたベクトルの内積演算を最適にするような、堅密に連結さ れた、微小のメモリ及び処理構造により得ることができる。全てのマトリックス が知識メモリチップ群のマトリックスメモリに適合するものと仮定すれば、列ベ クトル及びマトリックスのロードが必要な外部メモリ幅は一切不 となり、シス テムのコストを劇的に減少させることができる。
典型的な1ビツト知識メモリチツプは、CMO3の64にビット、毎に256要 素の内積を行う。後述の通り、アドレス発生、(列の複合なしの)メモリアクセ ス、データ処理が全て同一チップ上で行われるので、多くの相互接続により遅れ を減少することができる。
(相互接続直列チップではなく)、単一チップの遅れに相当するシステムのクロ ック周期を用いることができる。
8つの知識メモリチップと部分積を組み合わせるチップ(ここでは、「ベクトル 積算チップ」として開示されている)は、信号処理に関し1秒間力たり1024 M回の8ビツト×8ビツトの乗算を行うか、又は、パターン認識に関し1秒間力 たり8192M回の8ビツトかかるlビットの乗算を行うことが可能であり、両 計算とも完全な精度の合算を得ることができる。(極度に大きなシステムては無 視できない遅れを生じさせるが)、一般に、マトリックスの精度が計算時間に与 える影響は無視できる程度であり、むしろ必要な知識メモリの数に直接影響を与 える。
アプリケーションによって、マトリックスメモリを揮発性のものとすることもで きるし、不揮発性ものとすることもできる。チ・ノブ上のマトリックス及びベク トルメモリは256ビ・ノド幅の倍数であり、同寸法のマトリックスを扱うこと が可能であり、(1)マド肝ノクス×ベクトル乗算の間に列ベクトルを、(2) マド1ルツクス演算や、例えばパターン認識のような反復処理の間にマトリ・ノ クスを、繰り返し取り出すことを回避することにより、外部のメモリ幅要求を劇 的に減少させることができる。
ツクのブロック図が示されている。これは、第1図及び第2図に仮定され、この 明細書を通じて使用される「8ビツト知識メモリブロツク」である。各1ビツト 知識メモリチ・ノブ305.306は、ベクトルアドレス300、ベクトルデー タ301、クロック及び制御302、及びマトリックスアドレス303の各線に より共通して駆動される。8つのマトリックスデータ線304は知識メモリチッ プの1つにのみ連結され、ビット0 (BO)が306に送られ、ビット7 ( B7)が305に送られる。
この接続は、8ビツトバスを処理するために8つのメモリが用(鴫れる共通1ビ 、ト幅メモリの場合にも同様である。
マトリックスは、制御、マド1ルツクスアドレス及びマド「ルックスデータの各 線を用いて知識メモリチッブ内にロードされる。マトリックスは、チップが時間 の大部分を計算に費やすことができるように、新しいマトリックスがロードされ る前に、何回も用いられるものとする。マトリックスは、適当なシステムを構築 する能力を備えた通常のメモリチップ内に記憶されたように、更新することもで きる。マトリックスアドレス及びマトリックスデータ線は典型的には、それぞれ 、マイクロプロセッサ又は信号プロセッサのアドレス及びデータ線に連結され、 知識メモリチップがこれらのプロセッサのメモリアドレス空間の部分として処理 可能になる。このインタフェースの容易さもこのアーキテクチャの主要な効果で ある。
ベクトルはクロック、制御、ベクトルアドレス及びベクトルデータの各線を用い てロードされる。ベクトルの1つの要素は順次ロードされる。ベクトルデータ経 路の幅よりもベクトルの要素内のビットが多い場合には、複数の周期が各要素を ロードするために用いられる。この要素直列インタフェースは、非常に経済的で あり、僅かな線と単純な制御を必要とするに過ぎない。
チップは、ベクトルのベクトル倍の乗算よりは、ベクトルのマトリックス倍の乗 算を目的としたものであり、ベクトルのマトリックス倍の乗算を行うためのクロ ック周期の数は、少なくとも、次のベクトルをロードするために必要なりロック 周期の数と同じである。
前のベクトルについての演算が終了する場合に既に新しいベクトルが準備されて いるので、新しいベクトルのロードを待機せずに、チップは計算を連続的に実行 できる。
算術演算は、マトリックスとベクトルがロードされる毎に行うことが可能である 。各クロック周期毎に、各知識メモリチップは、マトリックスメモリ内に記憶さ れたマトリックスの1つの行と、ベクトルメモリ内に記憶されたベクトルの同様 の重みを持つビット組の1つとの間でベクトル内積を計算する。
第3図に示すものと同様の構造を、大きいものであろうと、目に見えないほど小 さいものであろうといかなる寸法で製造することが可能であり、いかなる水準の 精度が要求されても達成可能である。
システムの総動作性能は、活動ブロック内の全ての知識メモリが同時にない積を 計算できるので、マトリックスの精度を増加させるために用いられるチップの数 を増やすことにより、高めることができる。共通メモリチップを加えることは記 憶容量を加えることが直接りのアーキテクチャと異なり、知識メモリチップを用 いるシステムの処理能力は、システムの記憶容量が増加するにつれ高まる。
上述のように、ベクトル積算チップ(VAC)310は、2つの知識メモリチッ プ空間にまたがり、あるいは、多くの知識メモリチップが用いられている場合に はそれらにまたがり、列ベクトルの連続する同様の重みビット、又はビットベク トルの組が処理される時間にわたって、知識メモリチップから部分積(P P  ) 307.308を加える。
各計算結果は、内積出力(DPO)線311の出力となる。完全な精度の結果を 示すために必要なビットよりも少ないビットを望む場合には、ベクトル積算チッ プは、多くの積算の合計からビットの数を減少させる場合に共通なように、丸め 込み又は切り捨てを行うことも可能である。
単−周期内で、各lビット知識メモリチップは、典型的には、256の1ビツト ×1ビツト乗算を行い、その結果を加える。このように、各チップは、1つの1 6ビノトX16ビノトの乗算器、4つの8ビツト×8ビツトの乗算器、又は32 の1ビツト×8ビツトの乗算器に相当する処理能力を有し、新しい結果を25ナ ノ病毎に送り出す。この計算は、多くのチップ間相互接続を備えた従来の乗算器 、メモリ及び加算器のシステムが知識メモリチップシステムと同じ速度で動作可 能であると仮定したものである。対等に考えれば、8つの知識メモリチップはこ の例では同時に作動するので、それらの総処理能力は、1秒間に1280M回の 8ビツト×8ビツトの乗算/加算を伝送する数字の8倍に達する。
知識メモリアーキテクチャの利点を以下に示す。
1 全列ベクトルの全マトリックス倍の乗算が、知識メモリチップの外部にマト リックス又は列ベクトルにアクセスするメモリ周期を必要とせずに、実行可能で ある。
2 マトリックスへのアドレスが、各アドレスがマトリックスの完全行の全ての ビットを同時に取り出すような、単純な線形シーケンスにより可能である。処理 されるデータ語の総寸法は、このように、使用される知識メモリチップの数の1 つの知識メモリチップ内の行幅倍である。これは、第3図の例では、8つのチッ プの256ビノト/チップ倍であり、2048である。
3 アドレス発生、メモリアクセス、乗算及び低レベル合算は、全て、チップ間 の接続、接続による遅れ及び相互接続を駆動するための電力が不要な単一チップ 上で行われ、データがチップ境界を越える場合に必要とされた場合に比較して、 低い動作性能のメモリアーキテクチャから高速性を得ることが可能である。
4 システム設計者は、動作性能が1独占たりに行われる完全な精度の演算数と して動作性能を測定できるような精度と動作性能の間に対等の関連があるアプリ ケーションに対して列ベクトルの精度を適合させることができる。すなわち、l の8ビツト×8ビツトの演算が、8の1ビツト×8ピントの演算などが行われる のと同じ時間で行うことができる。
5 何らかのハードウェアを使用しない限り、従来のシステム設計は、列ベクト ルに必要な精度に依存して、急激に変化する。これにたいして、知識メモリシス テムに変化にもたらし得るものは、制御信号のシーケンスの変化のみである。
知識メモリチップの詳細 第4図は、1ビツト知識メモリチツプのブロック図を示している。
全てのバス幅は、特定のバス幅の組を必要としないことを示すために記号によっ て示している。典型的な数値を()内に示している。
これらの典型的な数値は、以後の説明を通して用いられるものである。
設計のパラメータを以下に示す。
1、MAB=マトリックスアドレスピット(の数)であり、典型的には、8であ る。
2.MMR=マトリックスメモリ行くの数)であり、典型的には、256である 。
3、MDB=マトリックスデータビット(の数)であり、典型的には、lである 。
4、MMC−マトリックスメモリ列(の数)であり、典型的には、256である 。
5、PB=プロセッサビット(の数)であり、典型的には、256である。
6、PPB=部分積ビット(の数)であり、典型的には、9である。
7、VMC−ベクトルメモリ列(の数)であり、典型的には、28、VMR−ベ クトルメモリ行(の数)であり、典型的には、32である。
ここで、VMRは、列ベクトルの行の数ではなくて、列ベクトルの単一要素の中 の精度のビットの最大数である。
9、VAB−ベクトルアドレス(の数)であり、典型的には、10である。
10、VDB=ベクトルデータビット(の数)であり、典型的には、8である。
チップは、図中に点線で示したように3つの区画を有している。
1、マトリックスメモリファ400とマトリックスアドレス論理402からなる 、マトリックスメモリである。
2、プロセッサ論理は、マトリックスシフタ407、プロセッサスライス409 、ベクトルシフタ417、及び検数論理、又は加算器410からなる。
3、ベクトルメモリはベクトルメモリコア418及びベクトルアドレス論理42 3からなる。
マトリックスデータ線405からの1ビツトは、マトリックスアドレス403に より選択された位置にあるマトリックスメモリファ内に入れられる。多くのメモ リチップに共通なように、行及び列アドレスは必要なビンの数を減らすためにマ トリックスアドレス線上で多重化ヨウニ、?+−リックスメモリコアは感知増幅 器と、チップの外からデータを読出し及び書き込みするためのマトリックスデー タ線にコアの1つの列を接続する列選択論理を備えている。この読出し及び書き 込みは、知識メモリチップが単純がインタフェースを備えた普通のメモリチップ であると同様に実行される。
マトリックスデータの単一ビットは一度に各1ビツトの知識メモリチップのマト リックスメモリ内に書き込まれるが、256ビノト幅のマトリックスデータの全 行は読み込まれマトリックスメモリバス404を介してマトリックスシフタ40 7に送られる。
このように、知識メモリチップは二重ポートメモリの新しい形式である。これは オフチップ論理がマトリックスの読出し及び書き込みに関して通常のメモリチッ プと同様にそれを扱うのを可能にすると共に、オンチップ処理論理が一度にマト リックスの全行にアクセスするのを可能にする。
オフチップ読出し及び書き込みに関する制御は、多くのメモリチップと同様に、 マトリックス制御線406によって取り扱われる。御チップ続出しに関する制御 もまた、これらの線によって取り扱われる。
ただ1つの共通点は、オフチップ装置によるマトリ、クスメモリコアの使用とオ ンチッププロセッサ論理によるマトリックスメモリコアの使用との間のタイミン グ衝突が調停される必要がある点である。
後述のように、オンチッププロセッサ論理によるマトリックスメモリコアの使用 を促進するためのマトリックスアドレス論理内に別の能力が与えられる。
ベクトルメモリコア418はベクトルデータ線425を介して受け取られる列ベ クトルを記憶する。記憶位置はベクトルアドレス論理423に接続されたベクト ルアドレス線421によって選択される。
ベクトルメモリとマトリックスメモリの動作の間には大きな相違がある。
1.1つの列ベクトルは、典型的には、前の列ベクトルが用いられている間にロ ードされるから、ベクトルメモリファは、新しいバイトがベクトルデータ線を介 して書き込まれる間にプロセッサ論理による使用のために行が読み込まれるのを 可能にする。
2.8ビツトバイトは典型的には一回にベクトルメモリ内にロードされ、マトリ ックスメモリに関する単一ビットと比較される。
3、ベクトルデータ線を介して書き込まれたバイトの配向は、秒内に読出される 配向及びプロセッサスライス409に送られる配向に対して90°回転される。
このように、1バイトはベクトルメモリコアの物理的列の部分に書き込まれる。
この回転は、ベクトルメモリコアの単−行が同じ重みのビットのみ、列ベクトル の各要素の1ビツトのみ含むために必要である。この転置動作は、後述するよう に、ベクトルメモリの設計を込み入らせる。しかしながら、ベクトルメモリ内の 行の数は、典型的には、マトリックスメモリの行の数よりも遥かに少なく、より 大きなマトリックスメモリコアよりも、ベクトルメモリコアの周期を速める。
別の性能が、後述するように、ベクトルアドレス論理423内に設けられている 。ベクトルアドレス内のビットの数は、多重化された行及び列のアドレスを用い ずとも、ベクトルメモリコア内のバイトを選択するに十分である。ベクトルデー タ線を介してアクセスするためのベクトルメモリコアの列の選択は、マトリック スメモリファ内の列の選択と同様である。
マトリックスシフタ407とベクトルシフタ417の動作は複雑である。
これらにより、オフチップシフトレジスタを使用せずに二次限畳込みウィンドウ を実行することが可能になる。これらの動作については後述する。そこでは、こ れらが単にデータを通過させるものとして仮定される。
処理スライス409は、マトリックスメモリ及び列ベクトルの同様な重みビット の組から行ベク)・ルの内積に関する乗算を行う。かかるビットの各組はベクト ルメモリの物理的行内に記憶されている。バス幅MMC及びVMCは典型的には 256に等しいが、後述するように、2の累乗だけ異なることが可能である。
各処理すライスが1ビア)乗算を実行する場合に、プロセッサスライスからの出 力の数は各ベクトルメモリコア及びマトリックスメモリコアからの入力の数に等 しい。加算器410はこれらの多ピット及び計数、又は検数、lの数を受け取る 。この計数は、典型的には最大動作性能を確保するために層間にレジスタを備え たツリー内の組合わせ論理を迅速に処理する。かかる検数回路の設計はFEBR ISチップ上の従来技術の範喘に含まれる。
この検数の結果、部分積線413に9ビツトの出力が生じる。この出力は、出力 駆動機をオンオフして、複数の知識メモリチップの部分積出力が、一度に一つの チップのみが出力を駆動するように並行に接続されるようにするための部分積可 能化411によって制御される。
マトリックスメモリ及びベクトルメモリは、ユーザが慣れているメモリ構造を示 す。この構造はデータ経路、アドレス経路及び制御経路によって表現される。こ のように、少なくとも計算が実行されていない間にデータが読出され書き込まれ 、計算が実行されている間はそれらが制限されるような、通常のメモリチップと ほとんど同様に取り扱うことが可能であるため、知識メモリチップは非常に使い 易い。
ごの知識メモリチップと、従来技術して列挙したNCRのGAPPチップのよう な他の並行処理チップとの主な違いは、409内のプロセッサスライスの全ての 主力を受信する加算器410の存在である。内積を取り扱う知識メモリチップの 強さは、一部には、プロセッサスライスの全てからの出力を同時に処理するこの 加算器に起因する。
これにより、より複雑なセルが加算可能なように、別の回路を設け、チップの回 りをデータが移動する時間が不要になる。このアーキテクチャの強さの別の側面 は、マトリックスデータが複数の知識メモリチップにわたって不均一に分布し、 マトリックスの精度が増加するにつれ計算負荷を広げ動作性能を高める方法に起 因している。
第5図は、マトリックスデータ及びベクトルデータが知識メモリチップ内に記憶 され、処理スライス409に送られる方法を示している。
第2図に示されるように、ビットの1平面の記憶はマトリックスメモリコア40 0内に記憶される。チップが、第5図のN=Oのようにマトリックスのビット0 を記憶する場合には、平面200がその内部に記憶される。
列ベクトルの記憶はベクトルメモリファ418に示されている。列ベクトルの全 てのビットは各チップに記憶され、各マトリックス要素の単一ビットが各チップ に記憶されるマトリックスとは異なる。
チップの使用の例として、マトリックスメモリコア400の行Oが選択され、ベ クトルメモリコア4】8の行0が選択されたものとする。この場合に、マトリッ クスビット[MO,ObN]は、列ベクトルビット[VO,ObO] と共に、 プロセッサスライス500に示される。
同様に、マトリックスビット[MO,1bN]は、列ベクトルビット[Vl、O bO] と共に、プロセッサスライス501に示される。これら及び他のプロセ ッサスライスからの出力は、これらの出力を加算し部分積413を生じる加算器 410によって受け取られる。
第6図は、ベクトルメモリファ418に対する行列接続の詳細を示すブロック図 である。これらの図は、第5図に関して90度回転させたものであることを留意 すべきである。ここでの重要点は、ベクトルデータの各ビットがベクトルメモリ コアの4つの列に接続され、ベクトルデータをロードするために必要なピンの数 を減少させて(する点である。このように、ら05として示されるように、ベク トルデータB7は、601.602.603.604に示されているように、B F (Flよ16進のFであり、10進の15に当たる)又はB7を記憶するベ クトルメモリコアの(垂直に示された)行に接続される。2つベクトルが示され ているが、記憶容量に応じていくつのベクトルをロードしても構わないことに留 意すべきである。
第7図はプロセッサスライス409を示している。ベクトルシフタバス414及 びマトリックスシフタバス408は、700及び702で示されるように、25 6の1ビツトスライス群に示される。各スライスは各フイスからのlビットのみ を取り扱い、マトリックスベクトルからの1つと列ベクトルからの1つとの一対 の要素の積を計算する。このように、スライス700はバスの各々からのビ・ノ ド255を取り扱い、Proc255として示すように、出カフ01を生み出す 。スライス702は各7 slスからのビット254を取り扱い、Proc 2 54として示すように、出カフ03を生み出す。同様にビットの全てが処理され る。
第8図は、700として示される各プロセッサスライスのブロック図を示してい る。ここでは各スライス内の論理が以前よりも詳細に示されている。論理積ゲー ト803はベクトルシフタバスからの1ビツト800とマトリックスシフタバス からの1つの同様の番号を持つビット801との乗算を実行する。論理積ゲート 803の出力は、制御信号、論理積/排他的論理和選択806が誤っている場合 に、マルチプレクサ80を介して出力される。
「マスクフリップフロップ」802はベクトルシフタバスからの1ビツトを記憶 する。このフリップフロップはロードマスク信号805によってロードされる。
「マスクビット」は内積の1つの項を可能化又は非可能化する。知識メモリチッ プが256の列を備えており、計算にはそれよりも少ない列が必要であるに過ぎ ない場合には、使用されないかく列に関するマスクビットはゼロに設定され、各 活性化列のマスクビットは1に設定される。−組のマスクビットは、それらが通 常のベクトルであるかのように、ベクトルメモリ内にロードされる。これらのビ ットを含む行は、ベクトルアドレス及びプロセッサ制御に制御されるベクトルア ドレス論理によってベクトルメモリバスに送られ、ロードマスク信号は、それら をマスクフリップフロップ内にロードするべく断定される。
マトリックスる行ベクトルと列ベクトルとを一緒に乗算するよりは、それらを比 較したい場合には、排他的論理和ゲート804が用いられる。かかる比較は、形 態演算(morphological operation)のような、2進値 データを含むパターン適合アプリケーションなどに有用である。排他的論理和ゲ ートの出力は、部分積413が行ベクトルと列ベクトルの間で異なるビットの数 の計数であるような、論理積/排他的論理和選択信号が表明された場合に、マル チプレクサ807によって選択される。
第9図は、マトリックスアドレス論理402のプロ・ツタ図である。この論理は 3つの機能を有する。すなわち、(1)マトリ・ノクス行アドレスレジスタ91 3がロードマトリックス行アドレス線914によってロードされた場合に、7ト リノクスアドレス線403からの行アドレスを記憶する。(2)内積が計算され ている間に、マトリ・ノクスメモリコアに”アクセスするべくアドレスのシーケ ンスを発生する。(3)マトリックスメモリコア400の行を選択する。チップ 上でアドレスを発生が可能であり、さらに、同じマトリックスアドレス及びマト リックスデータ線を共有する他の知識メモリチップ群をロードしたり、計算の間 にマトリックスメモリを更新したり、マトリックスアドレス線を他の用途に使用 するために空けておくことが可能になる。
内積を計算する前に、マトリックスアドレス論理を初期化しなければならない。
レジスタ900、すなわち[マトリックス下限レジスタ」が、処理されるべきマ トリ、クスメモリの第1の行のアドレスと共にロードされる。レジスタ902、 すなわち[マド1ルツクス上限レジスタ」が処理されるべきマトリックスメモリ の最後の行のアドレスと共にロードされる。リセット線905が表明され、クロ ・ツク415がカウンタ904内にマトリックス下限レジスタ900の内容をロ ードするべく与えられる。
カウンタ904の同期制御が用いられて、典型的には、下限を0に上限を255  (10進値)に設定し、マトリックスメモリ内256の行の全てが、0から開 始して、用いられる。リセット時のマトリックス下限レジスタの好適な制御が、 リセノ)の直後の値を変化させて、用いられるアドレス範囲に影響を与えずに、 初期行として選択されるべき行を可能化し、時間内に部分積をシフトさせる。こ れは、既に述べたように、バイブライン遅れを補償し、マトリックスメモリにア クセスするために有効な時間を増加させるために有用である。
実行線912が内積を演算するべく真に設定される。結果的に、カウンタ904 の出力がマルチプレクサ911を介して復号器915に送られる。
この復号器は、マトリックスメモリコア400の1つの行を選択するマトリック スメモリ行選択線401に連結される。カウンタは、VHL(ベクトル上限)信 号910が真である間に、計時されてインクリメントされる。VHLが真であり 、カウンタ904の状態が、比較器909によって検出されるように、マトリッ クス上限レジスタ902の状態と同じである場合には、比較器のEQ(等価)出 力907が真になり、論理和ゲート906の出力が真にされ、カウンタ904へ のLD(ロード)入力も真にされる。これにより、マトリックス下限レジスタ9 00の内容が、同期的に、カウンタ904にロードされ、カウンタによるインク リメント分に上書きされる。かかるカウンタの動作は、テキサス・インクリメン ト社製のr74163カウンタ」の動作を同様である。
マトリックスメモリコアはこのようにマトリックス下限レジスタ900及びマト リックス上限レジスタ902によって選択された行の間を循環する。
マルチプレクサ911に対する[S]、すなわち「選択(Select) J入 力は、実行線912及びマトリックス制御線の双方に依存しており、知識メモリ チップ外部の装置は、計算が知識メモリチップにより実行されている間に、計算 により邪魔を受けずに、マトリックスメモリにアクセス可能である。
第9図に示されているレジスタのロードは、マトリックスアドレス線とともに動 作する信号の制御の下に行われ、カウンタの動作は、ベクトル制御420及びプ ロセッサ制御416の線と同期がとれたクロック415によって制御される。
第10図は、ベクトルアドレス論理423のブロック図の1つである。
このブロック図に示される論理は次の4つの機能を有する。すなわち、(1)ベ クトルアドレス線421のB4乃至BO(ベクトルメモリコア内に32の行が存 在する場合)がロードベクトル行アドレス線1014によってロードされる場合 に、B4乃至BOをベクトル行アドレスレジスタ1013に記憶する。(2)内 積が計算されている間に、ベクトルメモリコアにアクセスするべくアドレスのシ ーケンスヲ発生する。(3)ベクトルメモリコア418の行を選択する。さらに 、(4)マトリックスメモリ行アドレスカウンタ904のインクリメントを制御 する。
これらのアドレスは非常に迅速に発生される必要があるので、これらをチップ上 で発生することにより、アドレス経路での値ぶかんおくれを回避し、ベクトルデ ータ線を介して次の列ベクトルをロードするべくベクトルアドレス線を開放する 。
内積の計算に先立って、縛取るアドレス論理が所期される必要がある。レジスタ 1000、すなわち「ベクトル下限レジスタ」が、処理されるべきベクトルメモ リの第1の行のアドレスと共にロードされる。レジスタ1002、すなわち「ベ クトル上限レジスタ」が、処理されるべきベクトルメモリの最後の行のアドレス と共にロードされる。
リセット線905が宣言され、クロック415がベクトル下限レジスタ1000 の内容をカウンタ1004にロードするべく与えられる。
カウンタ1004の同期制御により、典型的には下限が0に設定され、上限が7 に設定され、0行から開始するベクトルメモリの8行が用いられて、ベクトルの 9ビット精度が得られる。
内積を計算しようとする場合に、実行線912が真に設定される。結果として、 カウンタ1004の出力がマルチプレクサ1011を介して復号器1015に、 さらに、VMR3(ベクトルメモリ行選択)及びベクトルメモリコア418に送 られる。カウンタは、実行が真である間に計数されて、インクリメントされる。
実行912が真であり、カウンタ1004の状態が、比較器1009により検出 されるように、マトリックス上限レジスタ1002の状態と同様である場合には 、比較器のEP(等価9出力1005が真になり、さらに、論理和ゲート1O0 6の出力が真にされて、LD(ロード)入力がカウンタ1004を真にする。こ れにより、ベクトル下限レジスタ1000の内容が同期的にカウンタ1004内 にロードされて、カウンタによりインクリメント分に上乗せされる。かかるカウ ンタの動作はテキサス・インクリメント社製のr74163カウンタ」の動作と 同様である。ベクトルメモリコアはこのようにベクトル下限レジスタ1000と ベクトル上限レジスタ1002の値の間で循環される。
アドレスプロポゲート信号(Address Propogate signa l)1017により、論理積ゲート1016を介してマトリックスメモリ行アド レスカウンタ904のインクリメントを制御する。後述するように、畳込みウィ ンドウの計算は、マトリックスメモリ内の行の選択を変化させるに先立って、ベ クトルメモリの幾周期かを必要とする。
第10図に示すレジスタのロードは、ベクトル制御及びプロセッサ制御の各線と 同期がとれたベクトルアドレス線とともに動作する信号の制御により行われるこ とに留意すべきである。
を概略的に示したものである。このビットは、ベクトルデータ線425から読出 し書き込まれ、ベクトルメモリバス419により読出され、行幅基礎(row− wide basis)上に真を設定し、ベクトルメモリバスから選択的にクリ アされ得るものである。
動作は次の通りである。
1、基本2トランジスタ式静的フリップフロップが、プルアップ抵抗1105を 備えたトランジスタ1107及びプルアップ抵抗1109を備えたトランジスタ 1112から形成される。
2、多くの8ビツト幅メモリチップに共通するように、ビットが、ベクトル制御 線の書き込み状態を宣言と連携して、ベクトルアドレス上にアドレスを設置する ことにより、ベクトルデータ線から書き込まれる。ベクトルアドレスB7乃至B Oは列を選択して、トランジスタ1106及び1itoを可能化するベクトルメ モリ列選択線1工17、VM CS Mを表明する。フリップフロップは、デー タが書き込まれる行に関して起動される低インピーダンス駆動器を備えた(図示 された)行駆動器/受信機によって、ベクトルメモリ読み出し線、VM RD  RN 1100から真のデータを受け取り、VM RD BNN51102ら偽 のデータを受け取る。記憶されたベクトルデータ内の8ビツトのそれぞれに対す る1行である、8行の群の選択はベクトルアドレスB9乃至B8により行われる 。VM RD BN信号線が1つである場合には、Q信号ノード1108も1つ である。ここでQ信号ノード1113はゼロである。
様の手続によりベクトルデータ線に読み込まれるが、行/駆動器受信機が、VM  RD BN及びVM RD BNの各線を受信する高インピーダンスで動作す る点が相違している。
4、ベクトルメモリ行選択N線、VM R3N51102を表明することにより 、ビットがベクトルメモリバス419に読み込まれる。これは、フリップフロッ プの状態をVMセルバスBM線1116に送るトランジスタ1104を可能化す る。この線は、高インピーダンス受信機により受信され、動作速度を改良するた めに、矛先11(precharge) しておくことが可能である。この線は 、Qノード1108がゼロである場合に、トランジスタ1107によりトランジ スタ1104を介して放電される。必要な列線の数を減じ、回路の寸法を小さく するために、単一線路出力が用いられる。空間に余裕があれば二重線路(差動) 出力を用いることも可能である。
5、ビットは、ベクトルメモリ設定行N、VM設定行N、 1115を表明する ことにより、行内の全てのビットとして設定可能である。
これは、ベクトルメモリバスからのデータの行を書き込む以前に行われる必要が ある。この信号は、差分列データ線が用いられる場合には不要である。
6、ビットは、VM RS N、 1102を表明することにより、及びVMセ ルバスBMを設置することにより、選択的にクリアされ、セルの行のロードが行 われる。
第12図は、ベクトルアドレス論理423の2つのブロック図の部分で03とし て示される年端ベクトルデータビ、トの1つをVM RDB O(1200)及 びV D RD B O(1201)’t’ある差分ベクトルメモリ読み出し線 に送り込む。これらの線は、ベクトルメモリコア418を形成するセルに連結さ れている。ベクトルメモリコアの動作については既に説明した。
第6図に示すように、ベクトルデータ425の各ビットは、ベクトルメモリコア の複数の行に接続されている。このように、ベクトルデータB O(1203) は複数の行駆動器/受信機(1202,1205)ニ接続される。
ベクトルデータは8ビツト幅であり、ベクトルメモリには32行あるので、ベク トルアドレス421の2つのビットは、アクセスに関して8つの隣接行の4つの 群の内の1つを選択するよう要求される。
復号器1207はベクトルアドレスB9及びB8を受信してこの選択をベクトル データからベクトルメモリコアに書き込まれる。この信号は、1202及び12 05として全ての行駆動器/受信機に送られて、復号器1207により選択され たこれらの駆動器/受信機に差動出力を高−rンピーダンスに保つよりは、両出 力を表明させる。アクセスされる列の選択はベクトルアドレスB7乃至BOによ り行われる。
復号器1209はベクトルメモリ行動作設定に必要な信号を供給する。
この機能は、ベクトルシフタ417からベクトルメモリの行をロードするために 用いられる。復号器は、設定行線121oが表明された場合に、活性化される。
行の選択は、ベクトルアドレスB4乃至BOにより決定される。
要約すれば、知識メモリチップの制御信号は以下の通りである。
1、マトリックス制御(406) a)共通メモリチップを動作させるに必要な信号b)マトリックス下限のロード C)マトリックス下限のロード 2、プロセッサ制御(416) a)リセット b)論理積/排他的論理和選択 C)マスクロード d)実行 e)畳込み(詳細について後述) 3、ベクトル制御(420) a)ベクトル上限のロード b)ベクトル上限のロード C)ベクトル行アドレスのロード d)アドレスプロポゲート e)読み出し/IFき込みベクトル f)行設定 これらの信号のいくつかは組み合わされて、符号化され必要なビンの数が減らさ れるが、かかる組合わせは本発明に取って重要ではない。
ベクトル累算器チップ 第13図は、ここに開示されたベクトル累算器チップ310のブロック図である 。この子ノブは、305.306のような隔置し決め漏りチップ内で行われる2 進値ベクトルの内積102の計算を除き、第1図に示される演算の桁移動と合計 を行う。このチップは、307.308として示される8つの部分内積入力を備 えているように示されているが、入力の数は、合計される部分積の数に依存する ように用いられる。
複数の知識メモリチップから示される部分積307.308は、重ミ付it加算 器1300に示される。この重み付は加算器の設計については後述する。重み付 は加算器からの総和出力1301はレジスタ1302に送られる。レジスタの出 力1304は算術的論理装置(ALU)1309のA入力(A I N)に供給 される。ALUのB入力(BIN)は、累算器及びシフトレジスタとして機能す る延長レジスタ1303により供給される。
A L U 1309、排他的論理和ゲート1312及びレジスタ1303は、 当業者には周知の通例の加算器シフト乗算器を形成する。ここでの、本発明の役 目は、ALUのAIN入力に供給される情報を形成して、2つのスカシではなく 、2つのベクトルの乗算を促進することにある。
必要とされるALUの機能は次の通りであり、ALU制御線131゜により選択 される。
0、AIN+BIN:下記点を除き、A I−Uの各周期1、AIN:各要素の 関するALUの第1の周期(DPO:内積出力311は、A L U 1309 による内積完了後の1周期なので、この周期の間は有効である。) 2、BIN−AIN:列ベクトルが2の補数表現を有する場合に各内積に関する ALUの最後の周期である。
ALυ出力1311の再上位ビットB15は、排他的論理和ゲート1312によ りあふれが修正され、符号延長として用いられて、816を形成する。ALUピ ノ)815乃至BOl及び排他的論理和ゲートからの修正ビット816はデータ 経路1313によりレジスタ1303の再上位入力(I M)に供給される。1 ビツトシフトレジスタは、レジスタのBOがフィードパ、りされていないいう事 実、すなわち、レジスタの出力のB】がその入力のBOに成っておらず、以下同 様にフィードバックが行われてい兄という事実が示された場合に、レジスタ13 03により連続クロック周期で実行される。このlビソトンフトレジスタは、列 ベクトルの連続ビットの開の重みの増加する2の差分の因数(factor−o f−2difference)を示している。レジスタの9つの再下位ビット、 B8乃至Bl、1307は、レジスタの再下位入力(IL)にフィードバックさ れる。16の最上位、B24乃至B9.1306はALUに対するBIN入力に 供給される。
ここで留意すべきは、レジスタ1303がたった1つの記憶量を必要とするに過 ぎない点である。これは、各内積が開始直後に終了するために可能になる。各内 積はN周期を取る。ここでNは、列ベクトルの精度である。後続の周期において 、増加重みの列ベクトルビットが、再下位ビy)で開始し再上位ビットで終了す るように、処理される。これは、各種ビットベクトルが非常に早く循環されるの で、各知識メモリチップが、列ベクトルの各要素のビットの全て(又は大部分) を記憶することが必要とする。
ベクトル累算チップに必要なビットの数は次の点に依存している。
(1)各部分積内のビットの数、(2)部分積の数、(3)部分積の重み、(4 )列ベクトルの精度。256の列を備えたマトリックスからの2進値ベクトル上 の内積の計算では、各部分積が、状態がOから256(255ではない)まで示 されるように、9ビツトを備えていることが必要である。8つのlビット知識メ モリチップを用いた8ビyトのマトリックス精度は、8つの部分積が合計される ことが必要である。部分積が2つの因数により重みが異なる8つの部分積は、7 つの余分のビ2)を必要とする。8ビット精度のベクトルを取り扱う場合には、 8つの余分のビットを必要とする。1以上ビットがあぶれを避けるために必要と なる。このように、例えば、9+7+8+1=25ビツトとなる。
第14図は重み付は加算器1300を示している。部分積が、マトリックスビッ トを計算する知識メモリチップにより記憶されたマトリックスビットの重みと一 致するように、2の倍数分だけ上昇されることにより重み付けられる。再上位部 分積は、2の補数の表示と一致するように、負の重みを有している。加算器のネ ットワーク、すなわち「加算器ツリー」が重みづけられた部分積を合計する。ツ リーの第1層は10ビット重み付は加算器1401乃至1404を使用する。ツ リーの第2層は12ビツトの重み付は加算器1405及び1406を使用する。
ツリーの最終層は、16ビノトの重み付は加算器1407を使用する。加算器詳 細については後述する。
PPO(部分積0)及びPPIは10ビットの重み付は加算器に供給される。P PIはPPOの二倍なので、先行ゼロが加算器1404によりPPOに加えられ 、後書きゼロがPPIに加えられる。全ての部分積が、マトリックス符号ビット を記憶するチップ305からの1つを除き、正なので、ゼロは先行ビットとして 用いられる。PP2及びPP3は10ビットの重み付は加算器1403で同時に 取り扱われ、PP4及びPP5はlOビットの重み付は加算器1402で扱われ る。
マトリックスの2の補数表現を仮定すれば、PP7は各マトリノクス要素の符号 ビット画布の重みを持っているので、特別の事例である。こうして、PP7は他 の合計に加えられるよりは、減算される。減算は、補数器(rX−IJすなわち 「マイナス1倍」)を用いるPP7の2の補数によって行われ、結果が、PP7 の補数の重みの半分であるPPSも受け取る10ビツトの重み付は加算器に供給 される。ここで留意すべきは、PP7の最大値が、r256(10進値)」すな わちrloO,000,000(2進値)」として獲得されても、適当な結果は 補数が施された場合に獲得されるのである。あふれは生じない。
10ビツトの重み付は加算器からの出力は、加算器ツリーの第2のレベルを形成 する、12ビツトの重み付は加算器、1405及び1406により合計される。
加算器1403に対するPP2人力のの再下位ビットは、加算器1404に対す るPPO入力の再下位ビットの重みの4倍なので、加算器1404からの出力は 、先行ゼロで膨らまされ(pad)、加算器1403からの出力は加算器140 6に対する入力で2つの後書きゼロで伸ばされる。加算器1401.1402の 出力を受け取る、加算器1405も同様に動作する。
加算器ツリーの第2のレベル、すなわち加算器1405.1406からの出力は 、加算器ツリーの第3のレベル、すなわち加算器1407により合算される。加 算器1402に対するPP4人力の最下位ビットは、加算器1404に対するP PO入力の最下位ビットの重みの16倍であるから、加算器1406からの出力 は4つの先行ゼロで膨らまされ、加算器1405からの出力は加算器1407に 対する入力で4つの後書きゼロて伸ばされる。加算器1407の重み付は合計出 力は重み付は加算器1300の出力である。
第15図はlOビットの重み付は加算器1500のブロック図である。
全ての20の入力が計数される。加算器は2つの10ビツト入力の通常の合計を 行う。重要なのは、この発明では、等しく重みづけられたものではなく、部分積 の間の重みの差を反映するように部分積がこれらの入力に供給される必要がある 点である。この差が、2の1つの因数、すなわち、この加算器に対する1ビツト シフトである。
例えば、PP0(30B)力fAt、(A最下位(A Least 51gn1 ficant))入力AB乃至AOに供給され、AM (A再上位(A Mo5 t 51gn1ficant))入力A9がゼロを受け取る。PPIがBM ( B最上位(B Mo5Least 51gn1ficant))入力BOがゼロ を受け取る。
第16図は、12ビツトの重み付は加算器1600のブロック図である。
全ての24の入力が計数される。加算器は、2つの12ビツト入力の通常の合計 を行う。(留意すべきは、ビy)数が16進値で表現される点であり、例えば、 BAはB入カビソト10であり、BBはB入カビノド11である。)重要なのは 、この発明では、入力が、等しく重み付けられたものではなく、それらの重みの 差を反映するよりに取り扱われる必要がある点である。この差は、4の1つの因 数、すなわち、この加算器に対する2ビツトシフトである。例えば、重み付は加 算器1404の出力がAL(A最下位(A Least 51gn1fican 1))入力A9乃至AOに供給され、AM (A再上位(A Mo5t 51g n1ficant))入力、AB乃至AAがゼロを受け取る。重み付は加算器1 403がBM (B最上位(B Mo5t 51gn1ficant))入力B 9乃至B1に供給され、BL (B再下位(B 1.east 51gn1fi cant))入力Bl乃至BOがゼロを受け取る。
第17図は、16ビノト重み付は加算器1700のブロック図である。
全ての32の入力が計数される。加算器は、2つの16ビノト入力の通常の合計 を行う。(留意すべきは、ビット数が16進値で表現される点であり、例えば、 AFはA入カビノド15てあり、AEはA入力ビット14であり、ADはA人カ ビノド13であり、ACは八人カビノド11である。)重要なのは、この発明で は、入力が、等しく重み付けられたものではなく、それらの重みの差を反映する よりに取り扱われる必要がある点である。この差は、16の1つの因数、すなわ ち、この加算器に対する4ビノトンフトである。例えば、重み付は加算器140 6の出力がAL(A最下位(A Least 51gn1ficant))入力 AB乃至AOに供給され、AM (A再上位(A Mo5t 51gn1fic ant))入力、AF乃至ACがゼロを受け取る。重み付は加算器1405がB M (B最上位(B Mo5t 51gn1ficant))入力BF乃至B4 に供給され、BL(B再下位(B Least 51gn1ficant))入 力BB乃至BOがゼロを受け取る。
計算の詳細な事例 詳細な数値例で、マトリックス乗算のこの方法がどのように機能するかを示そう 。例が、第18.1図、第18.2図及び第18.3図に示されている。注意: この技法は複雑であり、注意深く行う必要がある。
第18.1図は、標本マトリックス及び列ベクトルを定義している。。
第18.2図は、列ベクトルのマトリックスの第1の行ベクトル倍の乗算を行う 様子を示している。第18.3図は、同じ列ベクトルのマトリックスの第2の行 ベクトル倍の乗算を行う様子を示している。
マトリックスは、10進値及び2進値で表現されている。通常の計算では、結果 を確認するために10進値表現が使用されるが、2進値ビツトに基づ(実際の演 算も同時に示されている。同様に、列ベクトルは、10進値(1801)及び2 進値(1804)の双方で表現されている。結果についても、10進値(180 2)及び2進値(1805)の双方で表現されている。
単純化のために、非常に少ない要素が用いられているが、マトリックス1800 内の列の数と列ベクトル1801内の行の数が同じであり、通常のマトリックス 乗算に関する規則に従っている限りは、この方法は要素の数には限定されない。
マトリックス1803からの2進値形式が、マトリックスの要素のビットが各知 識メモリチップ(IMC)内に如何に配置されるかを示すために、拡大された形 式1807で示されている。マトリックス1807の列は、この配列を示し易く するために、a、b、・・・O2pとラベルが付されている。
1、マトリックス1807の第1の行内のビットは、知識メモリチノフ内のマト リックスメモリ行Q [MMRO(i)]に配置される。
マトリックスの第2の行内のビットは、知識メモリチ・ノブ内のマトリックスメ モリ行1 [MMRl (i)]に配置される。(留意すべきは、マトリックス メモリ内のいかなる隣接行の組を用いることもできるのだが、このシーケンスで は事例を単純化している点である。) 2、マトリックス1807の各要素の最下位ビット、ビット0は知識メモリチッ プO[IMC(0)]内に配置される。マトリックスの各要素のビット1は知識 メモリチップ1 [IMC(1)]内に配置される。マトリックスの各要素のビ ット2は知識メモリチ、7ブ2 [IMC(2)]内に配置される。マトリック スの各要素のビット3は知識メモリチップ1 [IMC(3)]内に配置される 。
7 )、 IJノクス1807と知識メモリチップの列の間の列のシーケンスは 保持される。
マトリックス1807の列a、e、i及びmはIMC(3)内に記憶されるが、 この場合に、マトリックスの第1の行は行ベクトルビットベクトル1808に配 置され、マトリックスの第2の行は行ベクトルビットベクトル1812に配置さ れる。(「ビットベクトル」は同様の重みを持つビットの組である。)マトリッ クス1807の列す、f、j及びnはIMC(2)内に記憶されるが、この場合 に、マトリックスの第1の行は行ベクトルビットベクトル1809に配置され、 マトリックスの第2の行は行ベクトルビットベクトル1813に配置される。
マトリックス1807の列c+ g+ k及び0はIMC(1)内に記憶される が、この場合に、マトリックスの第1の行は行ベクトルビットベクトル1810 に配置され、マトリックスの第2の行は行ベクトルビットベクトル1814に配 置される。マトリックス18o7の列d、h、1及びpはIMC(0)内に記憶 されるが、この場合に、マトリックスの第1の行は行ベクトルビットベクトル1 811に配置され、マトリックスの第2の行は行ベクトルビットベクトル181 5に配置される。
列ベクトル1804は、複数ビットのマトリックスとして、1816内に拡張さ れた形式で示されている。マトリックス1816内の各ビットはマトリックス1 817内でレベル付けされ、マトリックスがマトリ、クス1818に変形された 場合にも、その追跡が容易になっている。ここで変形とは、4つの要素のそれぞ れからの1ピツトを含むマトリックス1817内のビットの列が、マトリックス 1818内のビットの行、ビットベクトルになることを言う。マトリックス18 18内の行0は全ての0のビット(列ベクトルビットベクトルO)を備えており 、行1は全ての1のビット(列ベクトルビットベクトル1)を備えている。
以下同様。ビットは再びマトリックス1819内に示される。演算はマトリック ス11119の行を用いて行われるが、これらの行はマトリックス1820にお いてラベル付けされている。
第18.2図は、列ベクトル1804のマトリックス1803の第1の行倍の乗 算の演算を示している。ステップOでは列ベクトルビットベクトルOを取り扱う 。ステップ1では列ベクトルビットベクトルlを取り扱う。ステップ2では列ベ クトルビットベクトル2を取り扱う。
ステップ3では列ベクトルビットベクトル3を取り扱う。
プロセスの各ステップは次の通りである。
1.4つの知識メモリチップ[IMC(0)に対するIMC(3)]の各々にお いて、行ベクトルビットベクトルと列ベクトルビットベクトルの内積が計算され る。これは、2つのビットベクトルを一致に論理積し、各チップにおいて4下位 の1ビット×lビ、トの乗算を実行することにより行われる。結果は、「AND  (i)=」として示される。
2、各AND (i)内のrlJの数が合計され、rPP (i)=Jとして示 される。これは各知識メモリチップに関する内積である。
a、PP(i)が各マトリックスビットの重みに基づいて重み付けられ、結果が 合算されて、現時点の積を形成し、rT’P(周期#)=」として示される。I MC(3)はマトリックスの符号ビットを記憶しているから、その部分積は、他 の部分積に対する重み付は及び加算が行われる前に、実行される。ここで留意す べきは、部分積の重み付は及び加算が、ベクトル累算器チップ内の重み付は加算 器によって行われ、4つの知識メモリチップが各種ビットベクトル上で同時に動 作する点である。
現時点の積、すなわち、TP (0)は、全ての列ベクトルビットベクトルが用 いられるまで、それ自体が重み付けられ加算される。
DPO(0)として示される、内積出力がここで行われ、マトリックス1805 内に所望の結果として同じものが示される。
このプロセスは、第18.3図において、マド1ルツクスの第2行に関しても繰 り返される。一般的に、このプロセスは、全てのマトリックスの行が処理終了す るまで継続する。
問題の寸法の拡張 第19図は、複数の知識メモリチップ19o5乃至19o8を一緒に用いて、単 一の知識メモリチップが取り扱えるよりも大きなマトリックスを取り扱ったり、 単一の知識メモリチップで得られるよりもより高い精度又は動作性能を得る方法 が示されている。多数ビット幅であるバスが必要な列ベクトルが1900にベク トルとして示されている。
[事例1] より高い動作性能は、知識メモリのブロックにマトリックスを余分に記憶させ、 列ベクトルの異なるビットを取り扱うようにすることにより得られる。従って、 ベクトル入力の異なるビットが同時に用いることが可能になる。例えば、ベクト ル入力が32ビツトの精度を有する場合、すなわちrhJ =31でraJ=o である場合には、8つのベクトル入力を各ブロック(riJ=8)によって取り 扱うことが可能になる。このように、ブロック1908に対するベクトルデータ 入力はベクトル入力ビット7(b)乃至0 (a) 1904を取扱い、ブロッ ク1907はベクトル入力ビット15(d)乃至8(c)1903を取扱い、ブ ロック1906はベクトル人力ビット23(f)乃至16 (e) 1902を 取扱い、ブロック1905はベクトル入力ビット31(h)乃至24 (g)  1901を取り扱う。
ベクトル累算器チップ1910乃至1912は、ベクトルデータに関する符号な し算術を用いた知識メモリチップからの部分積を処理する。
ベクトル累算器チップ19o9は、ベクトル入力のビット31のみが符号を担う ことができるので、ベクトルデータに関する符号付きデータを用いることができ る唯一のものである。
重み付は加算器1917は4つのベクトル累算器チップの各々から内積出力を受 け取る。この事例では、全ての知識メモリプロッタが同じマトリックスデータを 用いるので、重み付は加算器によって用いられる重みはベクトル入力の異なるビ ットのみを反映する。このように、WOはD P O1916i:対する2−0 であり、WlはD P O1915に対する2−8であり、W2はD P O1 914に対する2−16であり、W3はD P O1913に対する2−24で ある。結果がベクトル出力1918である。
[事例2] マトリックスのより高い精度は、異なる知識メモリブロックにマトリックスの異 なるビットを記憶させることにより得られる。全ての知識メモリブロックはベク トル入力の同じビットを受け取る。例えば、ベクトル入力が8ビツトの精度を有 している場合、すなわちrhJ =7でraJ=oである場合には、8つのベク トル人カビノドは各ブロック(riJ=8)に対するベクトルデータ入力により 取り扱うことが可能になる。このように、ブロック1908はベクトル入力ビッ ト7(b)乃至0 (a) 1904を取扱い、ブロック19o7はベクトル入 カビノド7(d)乃至0 (C) 1903を取扱い、ブロック1906人力は ベクトル人カビ7)7cr)乃至0 (e) 1902を取扱い、ブロック19 05人力はベクトル人カビ、ドア(h)乃至0 (g) 1901を取り扱う。
知識メモリブロック1908はマトリックスビット7乃至0を取扱い、知識メモ リブロック1907はマトリックスビット15乃至8を取扱い、知識メモリブロ ック1906はマトリックスビット23乃至16を取扱い、知識メモリブロック 1905はマトリックスビット31乃至24を取り扱う。
ベクトル累算器チップ1910乃至1912は、ベクトルデータに関する符号な し算術を用いた知識メモリチップからの部分積を処理する。
ベクトル累算器チップ1909は、ベクトル入力のビット31のみが符号を担う ことができるので、ベクトルデータに関する符号付きデータを用いることができ る唯一のものである。
重み付は加算器1917は4つのベクトル累算器チップの各々から内積出力を受 け取る。この事例では、全ての知識メモリブロックが同じマトリックスデータを 用いるので、重み付は加算器によって用いられる重みはベクトル入力の異なるビ ットのみを反映する。このように、WOit D P 01916ニ対する2− 0乗であり、WlはDPO19151m対する2−8乗であり、W2はD P  O1914に対する2−16乗であり、W3はD P O1913に対する2− 24乗である。結果がベクトル出力1918である。
[事例3] 単一の知識メモリブロックが取り扱うことができるよりも大きなマトリックスは 、マトリックスを複数のサブマトリックスに分割することにより得られる。各知 識メモリブロックはマトリックスの異なる列を記憶する。各知識メモリブロック はベクトル入力及びマトリックスデータの同じ重みビットを受け取るが、各ブロ ックは記憶しているマトリックスの列に当てはまる列ベクトルの要素を受け取る 。
7トリノクスが256の行と1024の列を有しているものと仮定すると、その 場合には、4つの256x256のマトリックスを取り扱うごとができる。知識 メモリブロック1908は列255乃至Oを取扱い、ブロック1907は列51 1乃至256を取扱い、ブロック1906は列767乃至512を取扱い、ブロ ック1905は列1023乃至768を取り扱う。全てのブロックは、マトリッ クスビット、ビット7乃至Oの同じ重みを取り扱う。
列ベクトルが8ビツトの精度を有している場合には、ベクトル入力は32ピツト であり、256の要素の4つの群のそれぞれに対して8ビツトである。このよう に、rhJ =31で、raJ=oであり、各ブロックのべりトルデータは8ビ ツトを有し、全てが同じ重みを有している。このように、ブロック1908は要 素255乃至0に対してベクトル入カビノド7(b)乃至0 (a) 1904 を取扱い、ブロック1907は要素511乃至256に対してベクトル入カビノ ド15(d)乃至8 (C) 1903を取扱い、ブロック1906は要素76 7乃至512に対してベクトル人カビッ)23 (f)乃至16(e)t902 を取扱い、ブロック1905は要素1023乃至768に対してベクトル人カビ ノド31(h)乃至24 <g)1901を取り扱う。
ベクトル累算器チップ1910乃至1912は、ベクトルデータ及びマトリック スデータ双方に関する符号なし算術を用いた知識メモリチップからの部分積を処 理する。重み付は加算器1917は、4つのベクトル累算器チップ1909乃至 1912からの内積出力を受け取る。この例では、全ての知識メモリブロックが マトリックス及びベクトルデータの同じ重みを用いるので、重み付は加算器によ って用いられる重みの全ては同じ、すなわち均一である。結果はベクトル出力1 918である。
代替構成例 第4図に示されているものとは異なる知識メモリチップの構成し可能である。第 1に、留意すべきは、256の1ビツトプロセツサスライス409を有する知識 メモリチップは、256のエビ、トス1ビツト乗算器、3201ビット×8ピッ ト乗算器、4つの8ビツト×8ビツト乗算器、1つの16ビツ)X16ビノト乗 算器、または3.2ビット×32ビット乗算器の1/4と同様に機能可能である 点である。この同じ容量の計算能力により、別な方法で、同じ動作性能を保持し ながら256列よりも少ないマトリックスを取り扱うに適するようにチップの設 計を行うことを可能にする。
第20図は、64ポイント×4ビツト内積論理のブロック図を示している。4つ の合計、すなわち、IX4つの64の入力の各合計2゜O8乃至2011、が計 算される。これらの合計の各々は64の論理積ゲートにより駆動され、各ゲート は、ベクトルシフタバスの1ビツト×マトリツクスシフタバスの1ビツトを乗算 する。しかしながら、マトリックスシフタバスの同じビットはベクトルシフタバ スの4ビツトにより乗算され、1ビツト×4ビツトの乗算が得られる。このよう に、この構成では、256ではな(て、64列のマトリノクスが取り扱われる。
ベクトルシフタバスの連続ビットは、各4つの要素の1ビツトではなくて、4ビ ツト/ベクトルの要素の群である。
このように、ベクトルシフタバスB3乃至BOは、各4つの要素からの1つの同 様な重みのビットではなく、ベクトルの同じ要素の83乃至BOを表現する。
例えば、論理積ゲート2007はマトリックスシフタバスBO及びベクトルシフ タバスBOを受け取り、加算器2011に送る。論理積ゲート2003も同様で ある。(留意すべきは、加算器2011に対する入力でのバス内の線の番号、/ 64、により示されるような、バス表記法が用いられる点である。表現の簡略の ために、出力のある群はある群として引かれる。すなわち論理積ゲートの出力は まとめて短絡されることはない。論理積ゲート2006はマトリックスシフタバ スBO及びベクトルシフタバスB1を受け取り、加算器201Oに供給する。
論理積ゲート2002も同様である。論理積ゲー) 2005はマトリックスシ フ9バスBO及びベクトルシフタバスB2を受け取り、加算器2009に供給す る。論理積ゲー)2001も同様である。論理積ゲー) 2004はマトリック スソフタバスBO及びベクトルシフタバスB3を受け取り加算器2008に供給 する。論理積ゲー) 2000も同様である。簡略化のために、各論理積ゲート に供給されるマスク論理は示されていない。
事実上、ベクトル累算器チップの論理は知識メモリチップ内に移動される。重み 付は加算器2015は重み付は加算器1300と同様である。
補数器2012は補数器1400と同様である。第20図の新しい特徴は、加算 器2008の出力か補数器2012の出力かの何れかを選択するマルチプレクサ 2013であり、この場合に、選択は別のプロセッサ制御線、補数線2014に より行われる。補数器2012の出力は、加算器2008の出力が負の重みを有 する場合に、マルチプレクサ2013により選択される。
負の重みは、加算器2008を駆動する論理積ゲートを、負の重みを備えたマト リックスビットかベクトルビットの双方ではなくて一方から、受は取る場合に生 じる。このように、補数線2014は空間(どのチップか対どのマトリックスビ ットか)及び時間(どの周期か対どのベクトルビットか)の関数である。
各プロセッサスライスにより取り扱われるマトリックスビットの数及び列ベクト ルビットの数を変えることにより、多くの別の構成例を生み出すことができる。
(論理積ゲー) 2004乃至2007は単一の1ビツト×4ピツトスライスと 考えることができる。)マトリックスメモリコア内の記憶せるの列の数は、マト リックスコアからの列を一組のマルチプレクサに選択させ、マトリックスメモリ バスとして選択された列を送ることで、プロセッサスライスにより演算される複 数のビットの数となり得る。全ての場合に、全てのスライスの出力は加算されて 部分積を形成する。
畳込みアプリケ−7gン 知識メモリチップは畳込み、特に画像処理のための二次元畳込みのために使用す ることができる。畳込みは、多くの標本点、すなわち標本点のマトリックスにわ たって掃引される「畳込みウィンドウ」を形成する、−組を係数を必要とする。
畳込みウィンドウの各位置は、各係数が個々の橋本点の倍数に乗算され、多くの 積が合計されることが必要である。
この共通演算をベクトル内積とみなすことができる。標本点のマトリックスはい くつかの群に分割される。各群の標本点は連結されて、行ベクトルを形成する。
係数も連結されて列ベクトルを形成する。このように、標本点にわたる畳込みウ ィンドウの掃引は、連結された標本点の異なる群を要求するが、係数の連結には 変化がない。
畳込みに関する知識メモリのアーキテクチャの効果は次の通りである。(1)畳 込みウィンドウの掃引は、外部記憶装置を必要とせずに完全に知識メモリチップ 内で処理される。(2)いかなるレベルの係数及び標本点精度をも得ることが可 能である。(3)多くのレベルの動作性能を得ることが可能である。(4)多く の標本源により表現される対象の骨組みを引き出す形態学的演算のような相互作 用的演算が、標本点をマトリックスメモリ内にロードし、畳込み、畳込みの結果 としてマトリックスメモリ内の標本点を更新し、さらに畳込みをすることによっ て実行可能である。
第21図は、画像、すなわち、標本点又は画素(ピクセル)の二次元配列を示し ている。なお、画素により、知識メモリチップを用いた誓込みの方法を説明する ための用いられる表記法が規定される。
図においては、各画素の第1の文字が画像の行を識別し、第2の文字が列を識別 する。このようにして、画素AAは0行(LO)、0列であり、画素BAは1行 (Ll)、0列であり、画素ABは0行、1列である。数字ではなくて文字が画 素のインデックスを表現するために用いられることにより、できる限り少ないシ ンボルを用いて、画素の位置と画素の数字との間の混乱を回避することができる 。
(画素AAを「P (0,O)と表示することも可能であるが、これでは、2つ ではなく6文字を用いる必要があり、ページ上の多くの空間を費やしてしまう。
)画像は行(row)ではなくライン行(line)で表すことにより、マトリ ックスメモリの行との混乱を回避する。
多くの画素の各々は複数のビットにより表現されるが、これらの多くのビットは 、上述の通り、単に、多くの精度で記憶される必要のある知識メモリの数に影響 を与えるのみである。これらの各種ビットは知識メモリ内の情報の流れには関連 がない。というのも、各チップが画素を、あたかも単一ビットの精度のみである かのように取扱い、同じビクセルを取り扱う全てのチップには同じ流れが生じる からである。そしてこの流れが用いられる方法の核心である。
説明の単純化のために、この方法を説明する事例は非常に小さい畳込みウィンド ウを用いる。このウィンドウは4つの列幅と4つの行高さを有している。これら のウィンドウを、いかなる寸法にも、大きくも小さくも、所望するとおりに伸ば すことができる。さらに、ウィンドウは、正方である必要ではなく、2の倍数で あれば、いかなる数の行又は列を有することも可能である。
畳込みウィンドウのための係数は第34図に3400として示されている。示さ れた配列内のこれらの同じ係数が、画像の画素の多くのライン行及び列上のウィ ンドウの位置に無関係に用いられる。
第21図は、W(0,O)[2100]及びW(0,4)[2101]としての 画素の群を規定する。座標は、それぞれ、ウィンドウの左上側の画素、画素AA 及びAEである。各ウィンドウの周囲はドツトで示される。W(0,0)に関し て計算される畳込みCり0゜0)は、第38図の式1で与えられる。W(0,4 )に関して計算される畳込みC(0,4)は、第38図の式5で与えられる。
矢印が各ウィンドウに示されている。これらの矢印は、画素が可憐されてマトリ ックスメモリファ400に記憶される行ベクトルを形成するシーケンスを示して いる。この連結が、ここで用いられる畳込み方法の主要部分である。この連結は 、マトリックスメモリコアの単一行内の連続列内へ画素の群をロードすることに より実行される。
マトリックスメモリコア内へのデータのロードは、マトリックスアドレス線40 3の使用を要求し、これらの線を動作する装置が好適なシーケンスを創造する。
かかる装置は、改良型マイクロ装置291Oのような、マイクロプログラムシー ケンサであり、ここで規定される方法を実行するようにプログラムされた読み出 し専用メモリとともに動作する。
畳込みウィンドウを計算する効果的な方法の主要部分は、画素の矩形領域の画素 のライン行への変換に依拠している。Cの変換は、単−周期内でベクトルメモリ ファ418又はマトリックスメモリコア400の全行がアクセスされるが故に、 重要である。このように、ウィンドウW(0,0)の画素の4つのライン行が連 結され、頂上から開始して、各ライン行の画素が左から右へ順次配置されるに従 い下っていく。かくして画素BAに画素ADが続く。画素のライン行のマトリッ クスメモリの列への配置が、第25図の第1列、MMROとして示されている。
ウィンドウW(0,4)に関する画素の配置が第25図の第2行として示され、 マトリックスメモリ行1、MMRIに記憶される。マトリックスメモリ内で必要 とされる行に応じて、画像の単一ライン行を横切るウィンドウの重なり合わない 位置が生じる。
画素のマトリックスメモリ内の特定列への配置は、畳込みウィンドウを計算する ためにこれらの画素をシフトする必要のある各種方法が存在するために、重要で ある。畳込みウィンドウの第1の位置によって用いられる連結画素は典型的には 、次の連結画素と共に、マトリックスメモリ行0内に配置され、重なり合わない ウィンドウ市はマトリックスメモリの次の行に配置される。以下同様。しかしな がら、この方法に組み込まれた再循環機構の結果、限定された画素のライン行数 が一度にマトリックスメモリ内に記憶される必要があるに過ぎない。マトリック スメモリの行内の画素群の使用が完了すれば、新しい画素群が不要となった画素 と置き換えられる。
第22図は、ウィンドウW(0,1)[2200]としての画素群を定義してい る。このウィンドウは、ウィンドウW(0,0)の右側の一列である。ウィンド ウw(o、i)に関する、畳込みC(0゜1)の計算は第38図の式2により与 えられる。ウィンドウの、左側上部の画素ABは、ここでは0ライン行1列であ る。このウィンドウには矢印が示されていないことに留意されたい。これは、連 結が、ウィンドウの特定位置に関してのみ行われているためである。4x4ウイ ンドウを備えたこの事例では、マトリックスメモリコアはウィンドウ位(tW( 0,(4*N))に関してのみロードされる。
第23図は、ウィンドウW(0,2)[2300]としての画素群を定義してい る。このウィンドウは、ウィンドウW(0,1)の右側の一列である。ウィンド ウW(0,2)に関する、畳込みC(0゜2)の計算は第38図の式3により与 えられる。ウィンドウの、左側上部の画素ABは、ここでは0512行2列であ る。
第24図は、ウィンドウW(0,3)[2400]としての画素群を定義してい る。このウィンドウは、ウィンドウW(0,2)の右側の一列である。ウィンド ウW(0,3)に関する、畳込みC(0゜3)の計算は第38図の式4により与 えられる。ウィンドウの、左側上部の画素ABは、ここでは0942行3列であ る。
ウィンドウを第21図に示されている位置から一ライン打丁に移動させると、第 26図は、ウィンドウW(1,0)[2600]及びW(1,4)[2601] としての画素群を定義している。ウィンドウW(1,0)に関する、畳込みC( 1,0)の計算は第38図の弐〇により与えられる。座標は、各ウィンドウの左 側上部の隅にある画素であり、それぞれBA及びBEである。各ウィンドウの周 囲は点によって示されている。矢印が、畳込みウィンドウの係数として用いるた めに必要とされる画素の連結のシーケンスを示すものとして示されている。
ウィンドウの各重なり合わない位置に対して画素をマトリックスメモリ内に配置 する様子が第27図に示されている。画像の、新しいライン行L4の画素EXが 、不要となったライン行LOの画素AXと置き換えられている点に留意する必要 がある。マトリックスメモリ内に予め記憶されているいかなる画素を移動させる 必要もない。
マトリックスメモリ行0、MMROがウィンドウW(1,0)に関する画素を記 憶し、マトリックスメモリ行1、MMRlがウィンドウW(1,4)に関する画 素を記憶する。
第26図に示される位置からウィンドウを−ライン打丁に移動すると、第28図 は、ウィンドウW(2,0)[2800]及びW(2゜4)[28013として の画素群を定義している。座標は、各ウィンドウの左側上部の隅にある画素であ り、それぞれCA及びCEである。各ウィンドウの周囲は点によって示されてい る。矢印が、畳込みウィンドウの係数として用いるために必要とされる画素の連 結のシーケンスを示すものとして示されている。
ウィンドウの各重なり合わない位置に対して画素をマトリックスメモリ内に配置 する様子が第29図に示されている。画像の、新しいライン行L5の画素FXが 、不要となったライン行L1の画素BXと置き換えられている点に留意する必要 がある。マトリックスメモリ内に予め記憶されているいかなる画素を移動−させ る必要もない。
マトリックスメモリ行Q、MMROがウィンドウW(2,0)に関する画素を記 憶し、マトリックスメモリ行1.MMRIがウィンドウW(2,4)に関する画 素を記憶する。
ウィンドウを第28図に示されている位置から−ライン打丁に移動させると、第 30図は、ウィンドウW(3,O)[3000]及びW(a、4)[3001] としての画素群を定義している。座標は、各ウィンドウの左側上部の隅にある画 素であり、それぞれDA及びDEである。各ウィンドウの周囲は点によって示さ れている。矢印が、畳込みウィンドウの係数として用いるために必要とされる画 素の連結のシーケンスを示すものとして示されている。
ウィンドウの各重なり合わない位置に対して画素をマトリックスメモリ内に配置 する様子が第31図に示されている。画像の、新しいライン行L6の画素GXが 、不要となったライン行L2の画素CXと置き換えられている点に留意する必要 がある。マトリックスメモリ内に予め記憶されているいかなる画素を移動させる 必要もない。
マトリックスメモリ行OSMMROがウィンドウW(3,0)に関する画素を記 憶し、マトリックスメモリ行1.MMRIがウィンドウW(3,4)に関する画 素を記憶する。
ウィンドウを第30図に示されている位置から−ライン打丁に移動させると、第 32図は、ウィンドウW(4,O)[3200]及びW(4,4)[3201] としての画素群を定義している。座標は、各ウィンドウの左側上部の隅にある画 素であり、それぞれEA及びEEである。各ウィンドウの周囲は点によって示さ れている。矢印が、畳込みウィンドウの係数として用いるために必要とされる画 素の連結のシーケンスを示すものとして示されている。
ウィンドウの各重なり合わない位置に対して画素をマトリックスメモリ内に配置 する様子が第33図に示されている。画像の、新しいライン行L7の画素HXが 、不要となったライン行L2の画素DXと置き換えられている点に留意する必要 がある。マトリックスメモリ内に予め記憶されているいかなる画素を移動させる 必要もない。
マトリックスメモリ行0、MMROがウィンドウW(4,0)に関する画素を記 憶し、マトリックスメモリ行1、MMRIがウィンドウW(4,4)に関する画 素を記憶する。
これで周期が完了する。畳込みウィンドウ内のライン行の数は、マトリックスメ モリの行内に配置された画素群の数を決定する。ウィンドウW(4,0)の取扱 いは、ウィンドウW(0,0)の取扱いと同様である。以下同様。
第34図は、上で用いられた4×4ウインドウ3400に関する係数を示してい る。これらの係数をベクトルメモリファ418内に記憶するために連結するシー ケンスが矢印で示されており、2100として示されるように、画素が必要とす る同パターンが後に続く。ウィンドウには4つのライン行があるので、これらの 係数は、第35図に示される4つの方法でベクトルメモリコアに配置される。配 向の選択は、ウィンドウ内の画素と対応する係数との間の配列要求に合致するす るかに依拠している。ウィンドウには4つの列があるので、第35図に示される 係数の各組は、上述の係数の組に関して右側に4つの列によって循環される。
第36図は、マトリックスシフタ407を形成する2つのレジスタMSRO及び MSRIを通るデータ流れを示している。説明の簡略と、上述の事例との一貫性 を保持するために、4×4ウインドウのみを扱うものと仮定する。
マトリックスメモリバス404からのデータは、頂上レジスタMSROにロード される。レジスタMSROの内容は、マトリ・ノクスンフタバス408を駆動す る、底部レジスタMSRI内に並行してロードされる。マトリックスシフタパス はプロセッサスライス409を駆動する。
この単純な並行ロードは、畳込みなしのマトリ、クスの乗算を行(Xたい場合に 用いられる。マド1ルツクスメモリコアの行は、マトリックスの新しい行に関す る、又は新しい重なり合わな0ウインドウ(こ関する計算が始められる場合に、 MSRO内にロードされる。
畳込みウィンドウを画素の1列から右に、すなわち、ウィンドウW (0,’O )からウィンドウW(0,1)に移動させるためζこ、ウィンドウW(0,0) が不要となったMSRIから(左端の)画素を除去し、ウィンドウW(0,1) に関して必要とされる新しtl(右端の)画素に持ってくる必要がある。これは 、レジスタMSRO及びMSRI内のデータを、図に示した経路で、左側1こ( ウィンドウが移動する方向と逆)シフトさせることにより行わり、る。レジスタ は、4×4ウインドウ内の4つの行(4つのセグメントを与える)と4つの列( セグメント毎に4つのビットを与える)と一貫性が保たれるように、4つのビッ ト毎に4つのセグメントに分割され、データをMSROからMSRIヘシフトさ せる。例えば、MSRO−bFの出力はMSRI−bCの入力に連結され、画素 のライン行に連続性を付与する。3つの他のセグメントも同様に機能する。
第37図は画素の特定の組の例を与える。レジスタMSROはウィンドウW(0 ,4)[2101]を記憶し、レジスタMSRIはウィンドウW(0,O)[2 100]を記憶する。ウィンドウが位置W(O,O)からW(0,1)に移動す る場合に、画素AA、BB。
CA及びDAは不要であり、画素AE、BE、CE及びDEカ讐必要とされる。
ウィンドウの連続移動は、レジスタの連続シフトに対応している。レジスタMS ROは、空になると、画素の次の組がロードされる。
MSRI及び、係数を示す列ベクトルビットベクトルの組数に含まれる画素ビッ トベクトルの内積はMSRIの各状態に関して計算される。
畳込みの方法の次の複雑な動作を次ぎに説明する。
最大コスト効率及び効果的な動作のためにマトリックスメモリ内に必要な行の最 小数は、(丸められた)畳込みウィンドウの幅(列の数)により分割された画像 の各ライン行内の画素の数に等しい。
これは、画像のライン行を横切る畳込みウィンドウの重ならない配置が、マトリ ックスメモリ内のデータの別の行の記憶を必要とするためである。この条件が満 足されれば、画素は、知識メモリチップをし要する全てのウィンドウに関して、 その知識メモリチップ内にただ一度だけロードされれば良い。これらの各行の幅 は、ウィンドウ内の点の総数、すなわち、ウィンドウ高さのウィンドウ幅倍に等 しい。
行の数は多くの場合には余り大きいものではなく、256以下であることもしば しばである。例えば、ライン行当たり4096画素で16X16のウィンドウを 用いる大きな画像がそれぞれ256ビ、)の256行を必要とするに過ぎず、ラ イン行当たり4096画素で32X32のウィンドウを用いる画像がそれぞれ1 024ビツトの128行を必要とする。このように、−次的要求は、知識メモリ チップ内のマトリックスメモリ内の行の数ではなく、内積を計算する点、すなわ ち要素の数である。以下に説明する如く、複数の知識メモリチップを一緒に用い て、点の群が単一の計算周期で取り扱うことので着る点の数が各知識メモリチッ プによって取り扱われる点の数の合計となるようにすることもできる。
既に説明したように、各知識メモリチッブ内に必要な記憶容量を最小にする方法 は、その部分に記憶されている画素が不要になるとすぐに、記憶を再循環するこ とによる。外部記憶装置からこれらの新しい画素を獲得するための時間量は、ウ ィンドウの幅の整数倍の精度に比例しており、この場合に、比較的大きな回数の 周期がデータをロードするために利用できる。
結果的に、ウィンドウが画素の次のライン行を取り扱うために下方に移動するに つれ、ウィンドウ係数はそれらが供給される画像の列に対して再び配列される。
これにより第35図に示すように、係数に対する4つの位置の組を生じさせる。
ウィンドウが4つの列幅なので、4つの列の右への循環ソフトが必要となる。循 環/フトの意味は、−万端からシフトされた係数が他方端に入れられるというこ とである。
ここで留意すべきは、ウィンドウ幅のみではなくウィンドウを含む画素の全長を 横切って係数がシフトし、マトリックスシフタによる画素がシフトされる場合に は、左ではなくて右にシフトされるという点である。
係数のシフトはベクトルシフタにより行われる。一度に一列のシフトを行うので はなく、シフトは理念的にはウィンドウ幅の広さの限り行われる。しかしながら 、このシフトはめったに生じるものではなく、画像の全947行の完成が後続す る場合のみである。知識メモリチップは、可能な限り経済的に係数のシフトを実 行し、畳込みウィンドウの計算に時折の短い中断を生じさせるに過ぎない。この 中断は、多くのシステムがあるライン行の処理終了と次のライン行の始め′との 間で経験する短い中断に相当するものである。
最大の経済を確保するためには、ベクトルシフタを単一のシフトレジスタから構 成することを留意する必要がある。一般に、係数が複数の精度ビットを有してい る場合に、係数の各ビットベクトルは順次シフトされる。説明の単純化のために 、図中の係数は1ビツトの精度を有するものとして描かれている。
ベクトルシフタのデータ流れは第39図に示されている。データは、ベクトルメ モリバス417からベクトルシフタバス414への流れ(逆も同様である)と平 行して、レジスタVSROを通って流れる。(データはマトリックスシフタから マトリックスメモリに戻ることはできない。)レジスタを通るかかる単純な通路 が、畳込みの無い列ベクトルのマトリックス倍の乗算を行う場合に用いられる。
循環シフト通路は、bFからbBへ、bBからb7へ、b7からbBへ、及びb BからbFへ戻るように示されている。
ベクトルシフタ417は1つのレジスタを有しているが、マトリックスシフタ4 07は直列の2つのレジスタを備えている点に留意する必要がある。これにより 、ベクトルメモリコア内のデータ行とマトリックスメモリコア内のデータ行のア クセスと、データがブロモ・ノサスライス409にデータが有効となる時間の間 の遅れに相違が生じる。ごの遅れの相違は、ベクトルアドレス論理423とマト リックスアドレス論理402によって発生されたアドレスのシーケンスをスキュ ーすることにより補償される。
アドレス論理についての説明に概説されたように、マトリックスアドレス論理は 、リセットら印形を用いるベクトルアドレス論理の先頭の行を開始させることが できる。これは、また、より小さなベクトルメモリファよりも長いアクセス時間 を備えている可能性のあるマトリックスメモリコアの行にアクセスする時間量を 増加させる。
このより長いアクセス時間は、ベクトルの精度がマトリックスメモリのアクセス 時間に見合う、又は超過するベクトルメモリの周期を要求するに十分な高さにあ る限りは、計算率を減少させることはない。知識メモリの外部の装置は、ベクト ル精度がマトリックスメモリが遊休時間をを有するに重文が高さである場合には 、内積の計算率を減少させずに、マトリックスメモリにアクセス可能である。
第40図は、ウィンドウ係数の特定組に関する循環シフトの動作を示12ている 。初期ロードは、第35図の線VMRaと整合するように示されている。−組の シフトは第35図の線VMRbに示されている状態を形成する。別の組のシフト は第35図の線VMRcに示されている状態を形成する。別の組のシフトは第3 5図の線VMRdに示されている状態を形成する。別の組シフトは係数を、線V MRaに示されているならとの状態に戻し、ここから周期が繰り返される。
係数のシフトの詳細を次の通りである。
■、ベクトルメモリの行nがベクトルシフタにロードされる。(説明を単純にす るために、この行は係数の最下位ビットベクトルを記憶するものと仮定する。) 2、ベクトルメモリの行nが(ベクトル用設定動作を用いた)ものに設定され、 ベクトルシフトが、より高い番号のビットからより低い番号のビットへ、周期的 に右にシフト(循環)される。ウィンドウ幅と単一周期でベクトルシフタがシフ トできる周期に依拠する必要に応じて多くのシフトが行われる。(このステップ は、7’−9カベクトルメモリの行に直接書き込まれる場合には省略される。) 3、ベクトルシフタの内容はベクトルメモリの行nに書き戻される。
4、このシーケンスは、ベクトルメモリ内に記憶され、現在の畳込みで使用され る係数を含むビットベクトルの全てに関して繰り返される。
複数の知識メモリが、1つのチップにより取り扱われる点の数を越えてウィンド ウの数を増加させるために用いられる場合に、この処理は複雑になる。この複雑 化は、1つの知識メモリチップから別のチップへと係数を移動させる必要から生 じる。これを取り扱うための別の手続については後述する。
本発明の好適な実施例の説明のための4×4のウィンドウの例をわきに置き、第 41図は256ビツトモジユールとしてマトリックスシフタを示している。この モジュールは、それぞれが[マトリックスシフト論理64J (MLS64)4 100及び4103である、4つの64ビツトモジニールに組み込まれ、8×8 画素と同じように小さくウィンドウを計算可能である。かかるウィンドウは総計 64の点からなる。これらの4つのモジュールは、右から左へ、64ビツトモジ ユール4103から64ビツトモジユール4100へ供給する一次元連鎖内で連 結されている。
第42図は、マトリックスシフタの64ビツトモジユールのブロック図である。
64ビツトモジユールは、垂直の点線で示された、8つの8ビツトモジユール内 に組み込まれる。レジスタMSRO及びMSRIが、それらの相互接続を説明す るために正確に示されている。基本的な構造は、2つのレジスタ間の相互接続の 単なる組が存在することであり、2つのレジスタは、画像を知識メモリチップの マトリックスメモリ内に置くための特定の方法と組み合わされた場合に、畳込み ウィンドウの各種寸法の効果的な計算を促進する。
畳込みウィンドウの計算が多くの画素を繰り返し使用するので、各画素を使用す るウィンドウ毎に、又は各画素を使用するウィンドウの各行毎に各画素をロード するのではな(、各画素を必要とす流全でのウィンドウを計算するために、知識 メモリチップ内に一度だけロードすることが好ましい。各画素を知識メモリチッ プに一度だけロードすることにより、知識メモリチップの外部で取り扱う大量の データを回避可能であり、システムを実行するために必要なチップの数を大幅に 減少させることが可能になる。
第42図のレジスタはいくつかの寸法に連鎖に組み込まれ、その場合に、マトリ ックスメモリからのデータはレジスタMSROにロードされ、連続してレジスタ MSROがらレジスタMSRIにシフトされる。単純化のために第42図には示 されていないが、第36図に示されるように、MSROが直接MSRIにロード 可能なように、2つのレジスタの間には平行経路が存在する。
連鎖の長さは、8.16.32.64の画素幅のウィンドウに対して8,16. 32.64ビツトである。8ビツトモジユールのある群のみが、第42図に示さ れ及び第44図に表にされているように、これらの長さを支援可能である。ウィ ンドウ幅の選択は、ウィンドウ幅線4220により行われる。ウィンドウの高さ は、後述のように、マスク論理802の使用と共に、マトリックスメモリ内に画 素を配置することにより選択される。
後続のウィンドウ幅は、これらの幅が後述の幅広ウィンドウの畳込みを支援可能 なので、本発明の好適な実施例に含まれている。
1.8ビツト 全ての8ビツトのモジュールは8画素幅ウィンドウを支援している。例えば、U  8 (4207) (レジスタMsRoの8つの同一区画の一つ)がU O( 4217) (レジスタMSRIの8つの同一区画の一つ)に供給し、U 8  (4206)がU 1 (4216)ニ供給する。
2.16ビ、ト 全ての8ビツトのモジュールの等しい組が16画素幅ウィンドウを供給する。例 えば、U 8 (4207)が08 (4206)t、:供給し、U O(42 17)がU 1 (4216)に供給する。
3.32ビ、ト 4つの最も左側の8ビツトのモジュールと4つの最も右側の8ビツトのモジュー ルが32画素幅ウィンドウを供給する。例えば、U 8 (4207)がU 8  (4206)f、:供給し、U 8 (4206)がU8(4205)ニ供給 し、U 8 (4205)がU 8 (4204) ニ供給し、U 8 (42 04)がU O(4217)l:供給し、U O(4217)がU 1 (42 16)+:供給し、Ul (4216)がU 2 (4215)に供給し、U  2 (4215)がU 3 (4214)に供全64ビットモジュールが集合的 に作動する。8つのU8が右から左に順次供給し、最も左側のU 8 (420 0)がU 8 (4217)に供給し、U O(4217)がらIJ 7 (4 210)へ右がら左へ順次供給する。
これらの各種グルーピングの効果は、知識メモリチップが効果的に取り扱う一組 のウィンドウ幅を規定することである。実際には、別の幅を、ゼロ画素を備えた 重ならないウィンドウ内の画素を当てて、所望の画素を重ならないウィンドウの 頂上右側端に配列することにより、取り扱うことも可能である。このようなゼロ 画素は視覚化のためだけであって、ロードされてはならない。レジスタm5rO の余分なシフトが用いられて、レジスタMSROからレジスタMSRIへ画素を シフ′卜する前に、各ライン行区画の左端のゼロ画素を除去する。不使用の係数 がゼロに設定される。相互接続ハードウェアを直接側の寸法を与えるように調整 することも可能であるが、多くのアプリケーションは示された寸法で機能する。
第43図はマトリックスシフタの8ビツトのモジニールを示している。MSRO 及びMSRIの間の相互接続の複雑化は、マルチプレクサ、M 4315によっ て取り扱われる。MSROの各ビットからの対応するMSRIe、トへの並列接 続が、R(4301)からR(on)への接続として示されている。単純化のた めに、この並列接続は第42図には示されていない。
レジスタに関する制御信号はプロセッサ制御線416の一部であり、次の通りで ある。
1、MSROIJ御 → レジスタMSROの全てのビットへ2、MSRI制御  → レジスタMSRIの全てのビットへレジスタMSRO及びMSRIはクロ ック415を受け取り、第43図に示された各8ビツトモジニール内で次の通り 動作する。
a)動作せず(No−op) :レジスタの現在の状態を保持b)MSROをロ ード:マトリックスメモリバス → MSROc)MSROをクリア:0 −  MSROd)MSRIをクリア:O→ MSRIe)MSROをシフト:MSR O(ビットn) −MSRI(ビットn+1)、n=0〜7、 rAJ [43 05]以外 → MSRO(ビットO) [4304]。MSRO(、ビット7 ) [43011→ rBJ[43001゜rAJ及びrBJは各8ビツトモジ ユールに対して局所的であり、第41図及び第42図に示されたモジュールの間 に連鎖されている。
f)MSRIをロード:MSRO(ビットn) → MSRl(ピノ ト n+ 1) 、n=o 〜 7゜g)MSRIをシフト:MSRl (ビットn) →  MSRI (ビットn+1)、n=0〜7、rAJ [4315]以外 −M SRI(ビy ト0 ) [4314]。rMJを通るデータに関しては第44 図を参 照のこと。
第44図は、各8ビノトモジ二−ル内のマルチプレクサ4315に対する入力の 表である。選択された入力はウィンドウ幅線4220に依存している。ここで留 意すべきは、第42図に示されているような相互接続の明かな複雑性は、ウィン ドウ幅内の変化に対してしばしば鈍感な一組の接続にまで減少させられている点 である。この鈍感さは、既に述べたように、MSRO及びMSRIの部分の選択 されたグルーピングのみによる支援の結果である。
第45図は、ベクトルシフタ417のブロック図を示している。ベクトルシフタ は32の8ビツトモジユール4501乃至4504に分割され、これらのモジュ ールは前述の環状循環をするように環状に接続されている。
ベクトルシフタは以下の点に関してマトリックス/フタと相違している。
1、ベクトルシフタは単一のシフトレジスタ、VSROを備えているが、マトリ ックスシフタは2つのMSRO及びMSRIを備えている。
2、ベクトルシフトレジスタの端部は一致させられて(tied togeth er)いるが、マトリックスシフタはそうでない。
3、ベクトルシフトレジスタは左から右にシフトするが、マトリックスシフトレ ジスタは反対方向にシフトする。
4、ベクトルシフトレジスタは8ビツトの変位でビットの各々をシフトし、デー タはレジスタの全ピントを通して流れる。マトリックスシフトレジスタは1ビツ トのみの変位でシフトし、ウィンドウ幅線に依拠するセグメントに分断される。
ベクトルシフトレジスタはこのようにバレルシフタとして作動するが、マトリッ クスシフトはそうではない。
5、ベクトルシフタの出力はベクトルメモリに書き戻すことが可能であるが、マ トリックスシフタの出力はプロセッサスライスに送られるだけである。
第46図は、ベクトルシフタの8ビツトモジユールのブロック図を示している。
マルチプレクサM 4601がレジスタ R4603に供給する。このレジスタ の出力はベクトルシフタバス414とバッファ84602を駆動する。バ・ノフ ァの出力はVSRO制御線4606の−っによってターンオンされ、レジスタ4 603の内容をベクトルメモリ内にロードする。
レジスタVSROはクロック415を受け取り、プロセッサ制御線416の一部 であるVSRO制御線46o6の制御により次のように動作する。
a)動作せず(No−op) :レジスタの現在の状態を保持b)VSROをロ ード:ベクトルメモリバス(ビットn) → VSRO(ビットn)、n=o〜 7 c)VSROをクリア:O→ VSROd)VSROをシフト:VSRO(ビッ トn+8) −VSRI(ピッ)n)、n=o〜7で、第45図に示されるよう に連鎖され、ビット15から8は次に高次のモジュールからのビットである。
マルチプレクサ4601はVSRO制御線の−っによって制御される。
ロード動作により、ベクトルメモリバス419の一ビットがマルチプレクサを介 してレジスタ R4603にロードされる。シフト動作により、ベクトルシフタ 入力ボート4604の8ビツトのそれぞれが、モジュールを連鎖する上述の8つ のレジスタの一つに入れられる。第45図に示されているように、8ビツトのモ ジュールは連鎖され、単一周期で全てのビットを8ビツトシフトする。8ビツト のシフト距離はコスト的にも動作性能の観点からも好便である。もちろん別の距 離で実行することも可能である。
非常に大きな畳込みウィンドウの取扱い第19図に示されているように、複数の 知識メモリチップを一緒に作動させて、単一の知識メモリチップが取り扱うこと ができるものより遥かに大きな畳込みウィンドウを実行することができる。チッ プ間の共同動作の事例として、256ポイントの1ビツト知識メモリの4つのブ ロックを用いた1024ポイントのウィンドウの実行を考える。含まれる原理は より大きなウィンドウに拡張可能である。
ここで留意すべきは、知識メモリブロック間には接続が存在せず、ブロックは並 行に駆動されるか、又は共通重ろ付は加算器1917に出力を供給する。
第47図は32X32のウィンドウの係数を示すために用いられる表記法を規定 する。これらの係数は、各知識メモリチップのベクトルメモリのより下位の番号 の行に配置される。各知識メモリチップ(IMC’)に関する各係数のために用 いられる列が、第48図において、各係数βx、yの下に示されている。画素に 対、する係数の移動には情報を知識メモリチップの各種ブロック内に好適に配置 することが必要なので、配置は厳密に行う必要がある。
第49図は、各知識メモリチップ内へのベクトルメモリのより高位の番号の行に 第2の組の係数を配置する様子を示している。この配置は、画像の第一のライン 行の処理の実行の前に行われる。係数は画像の各ライン行の実行の後に行われる 必要があるので、あるライン行の実行の後で次のライン行の開始前に、係数はウ ィンドウ幅、この場合には、32列に等しい距離だけ移動される必要がある。
しかしながら、この事例では、一つのチップはウィンドウの一つの部分のみを取 り扱うことができるので、ウィンドウ係数は、実際にはチップの境界をクロスせ ねばならない。ビンがこの目的に専用される場合には、かかるクロッシングは非 常に効果になる。そう大きくない8ビツト幅ベクトルシフタ経路では、チップ毎 に、左に8右に8の16のビンがかかり、これらのビンはめったに使用されず、 画像のライン行の端部でのほんの僅かな周期で使用されるに過ぎない。
ここでの知識メモリチップの設計によれば、シフトがチップの境界をクロスする 場合に獲得される係数を備えたベクトルメモリの部分を予めロードすることによ り、チップ内の係数の循環を保持することにより、ビンの潜在的無駄を回避でき る。従って、留意すべきは、各知識メモリチップの最右端(列31・・・0)上 の係数が選択される点である。例えば、知識メモリチップ3 [IMC(3)] において、係数β255,0・・・β255,31(下線部分)が、前の図に示 されているように、係数β7,0・・・β7,31によって前に占められていた 位置を占有する。これらの後の係数は、ウィンドウが次のライン行に下ろされた 場合に、チップIMC(3)内で用いられずに、次のチップIMC(2)で用い られる。
係数の第2の組が、計算の実行に用いられている区画とは異なるベクトルメモリ の区画内に記憶されて、これらの係数のロードが、前の組が用いられている間に 実行可能になるものと仮定する。
第50図は、係数がシフトされた後のベクトルメモリの状態を示している。所望 通りに、係数はチップ境界をクロスしたかのように存在する。
係数の移動に関するシーケンスは次の通りである。
1、係数の初期設定は、ベクトルデータ、ベクトルアドレス及びベクトル制御線 を介してベクトルメモリ内の高次アドレス内にロードされる。
2、ベクトルメモリ内の提示アドレス内の記憶セルは「ベクトル設定行」機能を 用いるロードの準備に設定される。(このステップは、ベクトルメモリの行がベ クトルメモリバスから直接ロード可能な場合には不要である。) 3、係数の各行が、現在の記憶に関するベクトルシフタを経由して高次の行から 低次の行ヘコビーされる。
4、計算が、低次の行の係数を用いて行われる。
5、新しい係数が、チップ内での循環時に行が全ての位置に好適な係数を含むよ うに、ベクトルメモリの高次の行内にロードされる。
各知識メモリチップにロードされる係数の数は畳込みウィンドウの幅と同じであ り、新しい係数がチップの最も下位の番号を有する列に配置される。
6、画像の現在のライン行に関する計算が完了される。
7.8ビツトの係数を仮定した場合に、ベクトルメモリの高い位置、行(n+8 )がベクトルシフタ内にロードされる。
8、ベクトルメモリの行n(低次位置)及び行(n+8)が、ロードの準備に設 定され、ベクトルシフタの内容がウィンドウ幅分だけシフトされる。このシフト を複数のステップで行うことも可能であり、周期と語とに8ビツトの移動のベク トルシフタでは4ステツプである。
9、ベクトルシフタの内容が計算の次の設定を実行するために行nに書き込まれ 、係数のある部分の次の更新の準備のために行(n+8)に書き込まれる。
10、 係数のそれぞれの別のビットベクトルに関して、ステップ7〜9が反復 される。
11、畳込みウィンドウの計算が再開される。
(産業上の利用可能性) ここに開示された知識メモリチップは、数値データの大きなマトリックスを迅速 に乗算する必要がある広範囲のアプリケーションに利用可能である。これらのア プリケーションには、ディジタル信号処理、特に画像処理、パターン認識、三次 元グラフィックス、科学や工学の計算が含まれる。
Figure 1 Figure 2 Figure 3 Figure 5 Figure 6 Flgure 7 Figure 8 Flgure 9 マトリックスアドレス Flgure 10 ベクトルアドレス ’ B4−0 Figure! 11 Figure 12 Figure 13 Flgure 14 Figure 15 Figure 16 Figure 17 Figure 18.1 Flgure 18.2 IMC(31IMC(2) IMC(1) IMC(01Figure 1B、 3 IMC(31IMC(2) IMC(1) IMC(0)Figure 19 Figure 20 L3: 、D <−DB <−DC<−DD :D <−DF <−DG <− 品 :ot −1L4: EA EB ECED EE EF EG EHEl −L5j FA FB FCFD FE FP FG FHFI−LO: GA  GB GCGD GE GF GG GHGI−−L7: )[A HB H CHD HE HF HG HHHI −替Figure 22 LO; 晶 、AB ACAD AE 、AF AG AHAI−Ll: BA  、BB BCBD BE 、BF BG BHBI−L2: CA 、CB  CCCD CE 、CF CG CHC1−L3: DA 、DB DCDD  DE 、DF DG DHDI ・・2300−−W(0,2) 、、、、、、、、、、、、、、、、、、、、、、/、 。
LO: AA AB 、ACAD AE AF、AG AHAI−Ll: BA  BB 、BCBD BE BF 、BG BHBI ・・L2: CA CB  、CCCD CE CF 、CG CHCI−・L、3: DA DB 、D CDD DE DF 、DG DHDI ・・Figure 24 Figure 25 Flgure 26 Flgure 27 Figure 2B L2: 、CA (−CB (−CC<−CD 、CE <−CF <−CG  <−CM 、CI ・・L5: 、Frマ需モ:、πT(−百丁品 :F工、。
Figure 29 FOIRO: EA EB ECED、FA FB FCFD、CA COCC CD、DA DB DCDD。
階仏1: EE EF EG EH,FE FF FG FH,CE CF C G CH,DE DF DG DH。
MMR2: EI @@−−−− 、FI −−−−−−、CI −−−@−@  、01 −−−−−− 。
Figure 30 L3: 、DA <−DB <−DC<−DD 、DE <−DF <−DG  <−DH、DI ・・L6; :G <−GB <−GC<弐、’D :G < −GF <−GO<−G’H]GI −Figure 31 MMRO: EA EB ECED、FA FB FCFD、GA GB GC GD、DA DB DCDO。
14MR1: EE EF EG EH,FE FF FG FH,GE GF  GG GH,DE DF DG DI(。
MMR2: EI ・−−−−−、FI ・・・・・・ 、GI −−−−・・  、01 ・・・・・・ 。
Figure 32 Figure 33 MMRO! EA EB ECED、FA FB FCFD、GA GB GC GD、HA He ICHD。
MMRI: EE EF EG EH,FE FF FG FH,GE GP  GG GH,HE HF HG HH。
MMR2: EI −−■雷 、FI −−−−・・ 、GI ・■■・ 、H I −・■・ 。
Figure 35 Figure 36 マトリックスメモリバス マトリツクスンフタバス Figure 37 M5RO: 、AE<AF<AG<AH,BE<BP<BG<BH,CE<CF <CG<CH,DE<DF<DG<DH。
Figure 38 DD傘βC+ DE*βD + DF傘βE + DG傘βF 式 4Flgu re 41 マトリックスメモリバス Figure 44 =1ヱ2シ=2とAil Ail 人力1 人力。
ウィンドウ輻: 64 32 18 8Figure 42 マトリックスメモリバス Flgure 43 Figure 46 ベクトルメモリバス Figure 47 β0,0 β0,1 −−−@−β0,30 130,31 璽β0,0−・雪 β0,31β31,0β31,1−−−−−嘩β31,30β31,31葺β3 1,0Bw−β31,31Figure 4B IMC(3) IMC(2) IMC(1) IMC(0) Figure 49 IMC(3) β0,0・−―β0,31 β1,0■噂β1,31 β2,0− 備β2.3 1 β3,0−・−β3,31IMC(2) β8.O1慢8,31 β9,0・0β9131β10,0−−−β10 、3 1 β11,0− −β11,31255・―−224223−−−−1921 91−・−160159・−−−−128IMC(1) β16,0−−−1316,31 β17,0−−−β1フ、31 β1B、0 −−−β18,31 β19,0−−−β19 、31IMC(0) β24.O・−β24,31β25,0−−−β25,31β26,0@11・ β26,311327.0・・・β27 、31255・−自1・224 22 3−−−−−192 191−−−−β160 159・−−−−128Fig ure 30 IMC(3) IMC(2) IMC(1) IMC(0) 国際調査報告

Claims (1)

  1. 【特許請求の範囲】 1 [A]、[B]及び[C〕が全てマトリックスである場合に、[A]*[B ]=[C]の演算を実行するマトリックス乗算のための知識メモリチップであっ て、 (a)マトリックスメモリが、 (a1)マトリックスアドレス入力(403)とマトリックス制御入力(406 )と複数のMMRマトリックスメモリ行選択出力(401)とを備え、上記入力 に応答して上記マトリックスメモリ行選択出力の一つを活性化することが可能な 、マトリックスアドレス論理(402)と、 (a2)メモリセルのMMC列によるMMR行のアレイとマトリックス制御入力 (406)とマトリックスアドレス入力(403)とMDBビットを備えたマト リックスデータ入力/出力(405)とMMCビットを備えたマトリックスメモ リバス出力(404)とを備え、マトリックスメモリ行選択出力(401)と協 力してマトリックスアドレス線(403)により選択されたメモリセルとマトリ ックスデータ線(405)の間で情報のMDBビットを送ることが可能であり、 マトリックスメモリ行選択出力(401)により選択されたメモリセルの行の内 容をマトリックスバス(404)に送ることが可能である、マトリックスメモリ コア(400)と、 を備え、 (b)ベクトルメモリが、 (b1)ベクトルアドレス入力(421)とベクトル制御入力(420)とクロ ック入力(415)と複数のVMRベクトルメモリ行選択出力(424)とVM R別ビットを搬送するベクトルメモリ行データ接続(422)とVDBビットを 備えたベクトルデータ入力/出力(425)とを備え、上記入力に応答して、ベ クトルメモリ行選択出力(424)の一つを活性化することが可能であり、ベク トルデータ入力/出力(425)とベクトル目お炉行データ接続(422)の間 の情報のVDBビットを送ることが可能な、ベクトルアドレス論理(423)と 、 (b2)メモリセルのVMC列によるVMR行のアレイとベクトルアドレス入力 (421)とベクトル制御入力(420)とVMCビットを備えたベクトルメモ リバス接続(419)とVMRベクトルメモリ行選択入力(424)とVMR別 ビットを搬送するベクトルメモリ行データ接続(422)とを備え、ベクトルア ドレス線(403)により選択されるメモ理性流の列の部分とベクトルデータ線 (425)の間で情報のMDBビットを送ることが可能であり、ベクトルメモリ 行選択入力(424)により選択されたメモリセルの行の内容をベクトルメモリ バス(419)に送ることが可能な、ベクトルメモリコア(418)と、を備え 、 (c)プロセッサ論理が、 (c1)MMCビットを備えたマトリックスメモリバス入力(404)とMMC ビットを備えたマトリックスシフタバス出力(408)とクロック入力(415 )とプロセッサ制御入力(416)を備え、マトリックスメモリバス(404) をマトリックスシフタバス(408)に連結可能な、マトリックスシフタ(40 7)と、(c2)VMCビットを備えたベクトルメモリバス接続(417)とV MCビットを備えたベクトルシフタバス出力(414)と、クロック入力(41 5)とプロセッサ制御入力(416)とを備え、ベクトルメモリバス(417) をベクトルシフタバス(414)に接続可能な、ベクトルシフタ(417)と、 (c3)マトリックスシフタバス(408)とべクトルシフタバス(414)と クロック(415)とプロセッサ制御(416)とを受け取り、これらのバスか ら受け取ったデータで演算を実行し、結果をプロセッサバス(412)に送るこ とが可能な、複数の同一のプロセッサスライス(409)と、 (c4)プロセッサバス(412)と部分析出力可能化(411)とを受け取り 、部分折出力(413)を生じ、プロセッサバスから受け取ったデータを加算し 、さらに、部分析出力可能化線(411)が表明された場合に部分析出力(41 3)を生じることが可能な、加算器(410)と、 を備えていることを特徴とする知識メモリチップ。 2 (a)ベクトルメモリバス(419)とマトリックスメモリバス(404) のビット数が同じであり、かつ1以上であり、(b)マトリックスデータビット (MDB)が1であり、(c)マトリックス[A]の各要素が1ビットの制度を 有し、マトリックスの各行がメモリセルの異なる行に配置され、その場合に、メ モリセルの行の各ビットが同じ重みを有するように、マトリックスデータ(40 5)を介してマトリックスメモリコア(400)にロードされ、 (d)マトリックス[B]の列が、メモリセルの行の各ビットが同じ重みを有す るように、ベクトルデータ(425)を介してベクトルメモリコア(418)内 にロードされ、(e)プロセッサスライス(409)が、マトリックスシフタバ ス(408)の各ビットに関し、一つの1ビットプロセッサスライス(700) を備え、 (f)これらの1ビットスライスの各々により実行される演算が、プロセッサn =(マトリックスバスビットn)論理積(ベクトルシフタバスビットn)であり 、 この場合に、部分積出力(413)が、マトリックス[A]からの2進値行ベク トルとマトリックス[B]からの列べクトルからの同じ重みのビットの組の中の 一つとのベクトル内積であることを特徴とする、請求項1に記載の知識メモリチ ップ。 3 1ビットプロセッサスライス(409)を備え、各スライスがさらに排他的 論理和ゲート(804)とマルチプレクサ(807)を備え、各スライスの論理 積を用いた2つの2進値ベクトルの演算を実行、又は各スライスの排他的論理和 を用いて2つの2進値ベクトルの比較が可能なように、プロセッサn内の排他的 論理和ゲートがマトリックスシフタバスビットnとベクトルバスビットnを受け 取り、マルチプレクサが論理積ゲート(803)の出力か排他的論理和の出力を プロセッサ制御線の状態に応じて選択することを特徴とする、請求項2に記載の 知識メモリチップ。 4 (a)低位のベクトル行アドレスと高位のベクトル行アドレスの間でベクト ルメモリコア(418)の循環をさせ、高位ベクトル行アドレスに到着した場合 にベクトル上限信号(910)を生成可能な、ベクトルアドレス論理(423) と、(b)低位のマトリックス行アドレスと高位のマトリックス行アドレスの間 でマトリックスメモリコア(400)の循環をさせ、あるマトリックス行アドレ スから次のマトリックス行アドレスヘの進みが表明されたベクトル上限信号(9 10)に応答して行われる、マトリックスアドレス論理(402)と、をさらに 含むことを特徴とする、請求項1に記載の知識メモリチップ。 5 複数のプロセッサスライス(409)を含み、プロセッサスライスの各々が (700)が1ビットマスクレジスタ(802)を含み、マスクレジスタビット nがプロセッサ制御線(416)に応答してベクトルシフタバスビットnからロ ードされ、各プロセッサスライスにより実行される演算が、 プロセッサn=(マトリックスバスビットn)論理積(ベクトルシフタバスビッ トn)論理積(マスクレジスタビットn) であり、マトリックス[A]の列の各組がマスクレジスタビットによってターン オン又はターンオフされることを特徴とする、請求項2に記載の知識メモリチッ プ。 6 マトリックスメモリコア(400)が、ダイナミックランダムアクセスメモ リ、スタティックランダムアクセルメモリ、疑似スタティックランダムアクセス メモリ、読み出し専用メモリ、消去可能読み出し専用メモリ、及び電子的消去可 能読みだし専用メモリから選択されることを特徴とする、請求項1に記載の知識 メモリチップ。 7 各マトリックスメモリバス(404)及びベクトルメモリバス(419)の ビットの数が2の整数乗の64倍であり、(a)マトリックスシフタ(407) が、さらにウィンドウ幅線(4220)とクロック(415)とプロセッサ制御 線(416)とを受け取り、マトリックスシフタ(407)が、 (a1)マトリックスメモリバス(404)からロード可能であるか、又はビッ トnからの内容をそのビットの全てに対してビット(n+1)にシフト可能であ る、マトリックスシフタレジスタ0(第36図では減少された長さでMSR0と して示されている)と、 (a2)MSR0から平行にロード可能であり、平行出力としてマトリックスシ フタバス(408)を生成し、ビットnからの内容をそのビット全てに対してビ ット(n+1)にシフト可能である、マトリックスシフタレジスタ1(第36図 では減少された長さでMSR1として示されている)と、を含み、但し、 (a2a)(ウィンドウ幅が8ビットを選択し)かつ[(nモジューロ8)=0 ]である場合には、MSR1ビットn入力=MSR0ビット(n+7)出力であ り、(22b)(ウィンドウ幅が16ビットを選択し)かつ[(nモジューロ1 6)=0]である場合には、MSR1ビットn入力=MSR0ビット(n+15 )出力であり、(a2c)(ウィンドウ幅が32ビットを選択し)かつ[(nモ ジューロ32)=0]である場合には、MSR1ビットn入力=MSR0ビット (n+31)出力であり、(a2d)(ウィンドウ幅が64ビットを選択し)か つ[(nモジューロ64)=0]である場合には、MSR1ビットn入力=MS R0ビット(n+63)出力であり、(b)ベクトルシフタ(417)が、 (b1)ベクトルメモリバス(419)からロード可能であり、ベクトルシフタ バス(414)がその平行出力であり、「d」最下位ビットが「d」最上位ビッ トに送られる場合を除き、ビットnからの内容をそのビットの全てに対してビッ ト(n−d)へシフトすること可能である、ベクトルシフタレジスタ0(第39 図では減少された長さでVSR0として示されている)と、 (b2)ベクトルシフタバスビットnをバスの全てのビットに対してベクトルメ モリバスに送ることが可能な、バッファ(4602)と、 を含み、 (c)ベクトルメモリの全ての行がベクトルメモリバスからロード可能であるこ とを特徴とする、請求項1に記載の知識メモリチップ。 8 ベクトルのマトリックス倍の乗算をするための行直列、ビット直列、要素並 列の方法であって、 (a)マトリックスがR行C列の要素を含み、これらの要素の各々が、2の補数 表現でMP(マトリックス精度)ビットにより表現され、 (b)列べクトルがC要素を含み、これらの要素の各々が、2の補数表現でCV P(列べクトル精度)ビットにより表現され、(c)マスクベクトルがCの1ビ ット用をを含み、要素Bが計算に含まれるマトリックスの列Bに関して真であり 、(d)計算システムが、MPモジュール、大域制御論理及び大域組合わせ論理 からなり、各モジュールがマトリックスメモリ、ベクトルメモリ、Cの1ビット プロセッサスライス及び、モジュールの全てのプロセッサスライスの出力を受け 取る加算器を含んでいる、 ベクトルのマトリックス倍の乗算をするための行直列、ビット直列、要素並列の 方法であって、 ここで、各マトリックスの要素のビットNがモジュールN内のマトリックスメモ リ内に記憶され、要素(K,L)のビットがマトリックスメモリの行K、列Lに 配置され、ここで、列べクトルが各モジュールのベクトルメモリ内に紀律され、 要素JのビットMがベクトルメモリ内の行M、ビットJに記憶され、 ここで、モジュールN内のプロセッサスライスPの演算が、選択されたベクトル メモリの各行及び選択されたマトリックスの各行に関して、 プロセッサ(P,N)=[マスク(P,N)論理積ベクトルメモリ列(P,N) 論理積マトリックスメモリ列(P,N)]で実行され、 ここで、モジュールNの加算器が、選択されたベクトルメモリの各行及び選択さ れたマトリックスの各行に関して、真値出力を備え、部分席(N)、PP(N) を生成するモジュール内において、プロセッサスライスの数を計数し、大域制御 及び組み合わせ論理は、演算及び計算を、マトリックスメモリの各行に関して順 に(最も緩いループ)、ベクトルメモリの各行に関して順に(中間ループ)、及 び全てのプロセッサスライス及びすぐに伴う加算器(十分に平行な「内側ループ 」)に関して、 (ステップ1)mri=0;マトリックス行インデックスの初期化、 (ステップ2)vri=0;ベクトル行インデックスの初期化、(ステップ3) マトリックスメモリ行mriを取り出す;ベクトルメモリ行vriを取り出す; 合計=([2^0*PP(0)]+〔2^1*PP(1)]+…+[2^(MP −2)*PP(MP−2)][2^(MP−1)*PP(MP−1)];全ての MP部分積の重み付け合計、 (ステップ4)vri=0の場合には、テンポラリ=合計、(ステップ5)vr i=1乃至CVP−2の場合には、テンポラリ=合計+1/2テンポラリ、 (ステップ6)vri=CVP−1の場合には、テンポラリ=[−1*合計]+ 1/2テンポラリ、 (ステップ7)vri=vri+1;列べクトルの次のビットベクトルに進む、 (ステップ8)vri<CVPの場合には、ステップ3に進む;列べクトルのビ ットベクトル以上であれば、ジャンプする、 (ステップ9)列べクトル出力(mri)=内積=2^(CVP−1)*テンポ ラリ;マトリックス行のこの行は終了 (ステップ10)mri=mri+1;マトリックスの次の行に進む、 (ステップ11)mri<Rである場合には、ステップ2に進み;行以上であれ ば、ジャンプする、 (ステップ12)終了、 から成る、シーケンスに基づいて行うことを特徴とする方法。 9 次の(a)、(b)、(c)から成る畳込みウィンドウを計算する方法であ って、 ここで、 (a)WR行とWC列を備えた畳込みウィンドウを備え、ウィンドウの各係数は 2の補数表現のWPビットの精度を有し、各係数は頂部のライン行0から開始し て底部のライン行(WR−1)で終了する「β(ライン行、列)」で表現され、 ここで、ライン行nの表現は、{β(n,0)…β(n,(WC−1)}であり 、 (b)IR行及びIC列を備えた、入力データ組又は画像を備え、各データ要素 又は画素は2の補数表現でPBビットの精度を有し、ここで、必要な場合にはI CをWCの整数倍にするためにゼロ画素を画像の各行に詰め込み、各画素は頂部 のライン行0から開始して底部のライン行(IR−1)で終了する「P[ライン 行、列]で表現され、ここで、ライン行「a」の表現は、{P[a,0]…P[ a,IC−1]であり、(c)PBモジュールと大域制御論理と組合わせ論理と から成るシステムを含み、各モジュールが、(1)マトリックスメモリと、(2 )マトリックスシフタと、(3)ベクトルメモリと、(4)ベクトルシフタと、 (5)C=(WR*WC)プロセッサスライスと、(6)加算器とから成り、こ こで、ベクトルシフタはベクトルメモリから行を受け取るベクトルシフタレジス タ0(VSR0)であり、マトリックスシフタは、(1)マトリックスメモリか ら行を受け取るマトリックスシフタレジスタ0(MSR0)と、(2)MSR0 を受け取るマトリックスシフタレジスタ1(MSR1)から成り、ここで画素の ビットNはモジュールNのマトリックスメモリ内に記憶され、 であり、 ここで、R=[(画像ライン行幅)/(ウィンドウ幅)]=(IC/WC)であ り、マトリックスメモリ又はベクトルメモリの行の表現が、{列(C−1)…列 (0)}であり、ここで、畳込みウィンドウの係数は各モジュールのベクトルメ モリに記憶され、ウィンドウの係数の行は関連づけられてベクトルを形成し、こ のベクトルは、頂上行から開始して、{β[0,0]…β[0,(WC−1)] 、β[1,0]…β[1,(WC−1)]…β[(WR−1)、0]…β[(W R−1),(WC−1)]}、≡{β(C−1)…β(0)}のように、下方向 に作業し、 ここで、ベクトルの係数JのビットMは各ベクトルメモリの(ぎょうM、列J) に記憶され、画素のライン行からのWC画素の後続群はマトリックスメモリの後 続行に配置され、マトリックスメモリの列が後続行に対して同様にされ、画像の WRライン行が一時にマトリックスメモリ内に存在し、群の総数がWRに等しく 、マトリックスメモリ内に記憶されるデータの各行r,r=0〜R−1に関する 表記が、 P[a,r*WC]…P[a,(r+1)WC−1]、P[(a+1),r*W C]…P[(a+1),(r+1)WC−1]…P[(a+WR−1),r*W C]…P[(a+WR−1),(r+1)WC−1]} で表され、 ここで、「係数シフト」動作が、 n>WC−1の場合に、ベクトルメモリ[行m,列n]→ベクトルメモリ[行m ,列(n−WC)] n<WCの場合に、ベクトルメモリ[行m,列n]→ベクトルメモリ[行m,列 (n−WC+C)] のように規定され、ウィンドウ係数の各ビットベクトル、m=0〜WP−1に対 する各モジュール内のベクトルメモリによって実行され、 ここで、「マトリックスシフタレジスタシフト」動作が、全てのnに対して、M SR0[列n]→MSR0[列(n+1)][(n+WC)モジューロWC]= 0でない場合には、MSR0[列n]→MSR0[列(n+1)][(n+WC )モジューロWC]=0である場合には、MSR0[列(n+WC−1)]→M SR0[列n]のように規定され、各モジュール内のマトリックスシフタによっ て実行され、 ここで、各モジュール内の各プロセッサスライスPが、計算、スライス(P)= VSR0(P)論理積MSR1(P)を行い、 ここで、各モジュールNの加算器が真値出力を備えたモジュール内のプロセッサ スライスの数を計数し、PP(N)を生成し、ここで、大域制御及び組み合わせ 論理が、(ステップ1)mri=0;マトリックス行インデックスを初期化、 (ステップ2)wi=0;ウィンドウインデックスを初期化、(ステップ3)c gi=0;列群インデックスを初期化、(ステップ4)ili=0;画像ライン 行インデックスを初期化、(ステップ5)MSR1=0;レジスタの全ビットを 初期化、(ステップ6)MSR0=マトリックスメモリ(行mri)、(ステッ プ7)cbi=0;計数ビットインデックスを初期化、(ステップ8)VSR0 =ベクトルメモリ(行cbi);ベクトルメモリ読みだし、 (ステップ9)合計(sum)={[2^0*PP(0)]+[2^1*PP( 1)]+…+[2^(PB−2)*PP(PB−2)]一[2^(PB−1)* PP(PB−1)]};全てのPB部分積の重み付け合計、 (ステップ10)cbi=0である場合に、テンポラリ=合計、(ステップ11 )cbi=1〜PB−2である場合に、テンポラリ=合計+1/2テンポラリ、 (ステップ12)cbi=PB−1である場合に、テンポラリ=[−1*合計] +1/2テンポラリ、 (ステップ13)cbi=cbi+1;計数の次のビットベクトルに進む、 (ステップ14)cbi<WPである場合には、ステップ9に進む;それ以上の ビットベクトルである場合には、ジャンプする、 (ステップ15)ウィンドウ=2^(PB−1)*テンポラリ;このウィンドウ は終了、 (ステップ16)wi=wi+1;次の画像ウィンドウへ進む、(ステップ17 )wi<WCである場合には、マトリックスシフタレジスタシフトを実行;ステ ップ6に進む、(ステップ18)mri=(mri+1)モジューロR、(ステ ップ19)計数シフト、 (ステップ20)cgi=(cgi+1)モジューロR;列群を通しての周期、 (ステップ21)ili=ili+1;画像の次のライン行に進む、 (ステップ22)マトリックスメモリ[列群cgi]=画像[行ili];マト リックスメモリ内の列群内に画像からライン行をロード、 (ステップ23)ili<IRである場合に、ステップ6に進む;画像内のライ ン行がそれ以上である場合にはジャンプ、 (ステップ24)終了、 からなる、シーケンス動作及び計算を行うことを特徴とする方法。 10 (a)NのMビット入力を備えた重み付け加算器(1300)であって、 ここで、これらのN入力の各々が、i番目入力、、ここでi=0〜N−2であり 、2^iの位取り因数を備えており、及びi=N−1入力、ここで−[2^(N −1)]の位取り因数を備えており、で位取りされ、位取りされた入力が一緒に 加算され、出力(1301)に合計を生じるような、上記加算器(1300)と 、(b)クロック信号に応答して、その入力で上記合計を受け取り、その出力( 1304)で遅延合計として上記合計を再生するための第1のレジスタ(130 2)と、 (c)BIN入力を備え、そのAIN入力で遅延合計を受け取り、そのF入力で ALU制御信号(1310)を受け取り、そのOVEL出力であふれ信号を生成 し、その総和出力でUビットALU出力を生成し、関数、(1)総和=AIN+ BIN、(2)総和=AIN、又は(3)総和=BIN−AINをALU制御信 号に応答して実行するような、算術及び論理ユニット(1309)と、(d)A LU総和出力の最上位ビットとあふれ信号を受け取り、符号ビットを生成する排 他的論理和ゲート(1312)と、(e)クロック信号に応答して、(1)最上 位ビットに対する入力としての符号ビットと、(2)次の最上位ビットUに対す る入力としてのUビットALU出力と、(3)最下位ビットSに対する入力とし てのそれ自体の出力の最下位ビットS+1の最上位Sとを受け取り、その出力( 1305)で1+U+Sビットを生成し、ここで、この出力の最上位ビットUが ALUのBIN入力と内積出力DPO(311)からの全出力ビットを供給する ような、第2のレジスタ(1303)と、 から成ることを特徴とする、ベクトル累算器チップ(310)。
JP1500899A 1987-12-15 1988-12-12 マトリックス乗算のための知識メモリチップ Pending JPH06502937A (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US07/133,011 US5014235A (en) 1987-12-15 1987-12-15 Convolution memory
US133,011 1987-12-15
PCT/US1988/004433 WO1989006014A1 (en) 1987-12-15 1988-12-12 An intelligent memory chip for matrix multiplication

Publications (1)

Publication Number Publication Date
JPH06502937A true JPH06502937A (ja) 1994-03-31

Family

ID=22456605

Family Applications (1)

Application Number Title Priority Date Filing Date
JP1500899A Pending JPH06502937A (ja) 1987-12-15 1988-12-12 マトリックス乗算のための知識メモリチップ

Country Status (4)

Country Link
US (1) US5014235A (ja)
JP (1) JPH06502937A (ja)
KR (1) KR900700967A (ja)
WO (1) WO1989006014A1 (ja)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8737487B2 (en) 2006-05-24 2014-05-27 Sony Corporation Information processing apparatus
JP2019109887A (ja) * 2017-12-19 2019-07-04 三星電子株式会社Samsung Electronics Co.,Ltd. 不揮発性メモリ装置及びその動作方法並びにメモリシステム
US10460772B2 (en) 2018-03-16 2019-10-29 Kabushiki Kaisha Toshiba Semiconductor device
US10802799B2 (en) 2018-03-22 2020-10-13 Toshiba Memory Corporation Semiconductor device having plural operation circuits including multiplier and accumulator

Families Citing this family (79)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
AU641418B2 (en) * 1989-09-20 1993-09-23 Fujitsu Limited A parallel data processing system for processing and transmitting data concurrently
DE69132495T2 (de) * 1990-03-16 2001-06-13 Texas Instruments Inc Verteilter Verarbeitungsspeicher
GB2246001B (en) * 1990-04-11 1994-06-15 Digital Equipment Corp Array architecture for high speed cache memory
JP2663996B2 (ja) * 1990-05-22 1997-10-15 インターナショナル・ビジネス・マシーンズ・コーポレーション ニューラル・ネットワーク用の仮想ニューロコンピュータ・アーキテクチュア
US5353382A (en) * 1990-10-15 1994-10-04 California Institute Of Technology Programmable synapse for neural network applications
US5325500A (en) * 1990-12-14 1994-06-28 Xerox Corporation Parallel processing units on a substrate, each including a column of memory
JPH04290155A (ja) * 1991-03-19 1992-10-14 Fujitsu Ltd 並列データ処理方式
SE470151B (sv) * 1992-04-13 1993-11-15 Televerket Metod för fattande av handoverbeslut i kommunikationsradionät
US5581773A (en) * 1992-05-12 1996-12-03 Glover; Michael A. Massively parallel SIMD processor which selectively transfers individual contiguously disposed serial memory elements
US6002865A (en) * 1992-05-28 1999-12-14 Thomsen; Erik C. Location structure for a multi-dimensional spreadsheet
EP0606653A1 (en) * 1993-01-04 1994-07-20 Texas Instruments Incorporated Field programmable distributed processing memory
US5530661A (en) * 1994-10-05 1996-06-25 Winnov Data bit-slicing apparatus and method for computing convolutions
US5822341A (en) * 1995-04-06 1998-10-13 Advanced Hardware Architectures, Inc. Multiport RAM for use within a viterbi decoder
EP0976050B1 (en) * 1996-01-24 2002-06-12 Sun Microsystems, Inc. Processor with array access bounds checking
DE19623365A1 (de) * 1996-06-12 1997-12-18 Daimler Benz Ag Verfahren und Anordnung zur Transformation einer Eingangsvariablen
EP0837399B1 (en) * 1996-10-15 2000-03-15 STMicroelectronics S.r.l. An electronic device for performing convolution operations
TW409253B (en) * 1997-09-29 2000-10-21 Siemens Ag Associative memory and its operation method
US7210062B2 (en) * 2001-03-14 2007-04-24 Mercury Computer Systems, Inc. Wireless communications systems and methods for nonvolatile storage of operating parameters for multiple processor based multiple user detection
US6901422B1 (en) * 2001-03-21 2005-05-31 Apple Computer, Inc. Matrix multiplication in a vector processing system
DE10128770B4 (de) * 2001-06-13 2014-05-15 Qimonda Ag Verfahren zum Übertragen von Daten in ein Speicherzellenfeld und Schaltungsanordnung
US7397624B2 (en) 2003-11-06 2008-07-08 Seagate Technology Llc Transducers for ferroelectric storage medium
FR2880446A1 (fr) * 2005-01-04 2006-07-07 France Telecom Indexation par transposition de matrice de grande dimension
US7599242B2 (en) * 2005-09-28 2009-10-06 Hynix Semiconductor Inc. Test circuit for multi-port memory device
US20110058629A1 (en) * 2008-02-25 2011-03-10 Kaben Wireless Silicon Inc. Coefficient provision system and method using square matrices
US8626815B1 (en) * 2008-07-14 2014-01-07 Altera Corporation Configuring a programmable integrated circuit device to perform matrix multiplication
US9099169B1 (en) 2010-04-27 2015-08-04 Tagmatech, Llc Memory device and method thereof
US8189410B1 (en) 2010-04-27 2012-05-29 Bruce Lee Morton Memory device and method thereof
US8339873B1 (en) 2010-04-27 2012-12-25 Bruce Lee Morton Memory device and method thereof
US8504603B2 (en) * 2010-07-28 2013-08-06 Lsi Corporation Method and system for parallel computation of linear sequential circuits
US9218564B2 (en) 2012-07-30 2015-12-22 International Business Machines Corporation Providing transposable access to a synapse array using a recursive array layout
US8918351B2 (en) * 2012-07-30 2014-12-23 International Business Machines Corporation Providing transposable access to a synapse array using column aggregation
US9466301B2 (en) * 2012-11-07 2016-10-11 Kenneth John Lannes System and method for linear frequency translation, frequency compression and user selectable response time
FR3015068B1 (fr) * 2013-12-18 2016-01-01 Commissariat Energie Atomique Module de traitement du signal, notamment pour reseau de neurones et circuit neuronal
US9978014B2 (en) 2013-12-18 2018-05-22 Intel Corporation Reconfigurable processing unit
US9613001B2 (en) 2013-12-20 2017-04-04 Intel Corporation Processing device for performing convolution operations
US10049322B2 (en) 2015-05-21 2018-08-14 Google Llc Prefetching weights for use in a neural network processor
US9805303B2 (en) 2015-05-21 2017-10-31 Google Inc. Rotating data for neural network computations
US10083395B2 (en) 2015-05-21 2018-09-25 Google Llc Batch processing in a neural network processor
US10192162B2 (en) 2015-05-21 2019-01-29 Google Llc Vector computation unit in a neural network processor
US9747546B2 (en) 2015-05-21 2017-08-29 Google Inc. Neural network processor
US10438117B1 (en) 2015-05-21 2019-10-08 Google Llc Computing convolutions using a neural network processor
US9704541B2 (en) * 2015-06-12 2017-07-11 Micron Technology, Inc. Simulating access lines
US10706922B2 (en) 2016-01-26 2020-07-07 Hewlett Packard Enterprise Development Lp Memristive arrays with offset elements
WO2018113597A1 (zh) 2016-12-20 2018-06-28 上海寒武纪信息科技有限公司 矩阵乘加运算装置、神经网络运算装置和方法
US10228937B2 (en) * 2016-12-30 2019-03-12 Intel Corporation Programmable matrix processing engine
US20180232627A1 (en) * 2017-02-16 2018-08-16 Intel IP Corporation Variable word length neural network accelerator circuit
US11615297B2 (en) 2017-04-04 2023-03-28 Hailo Technologies Ltd. Structured weight based sparsity in an artificial neural network compiler
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
US11544545B2 (en) 2017-04-04 2023-01-03 Hailo Technologies Ltd. Structured activation based sparsity in an artificial neural network
US10387298B2 (en) * 2017-04-04 2019-08-20 Hailo Technologies Ltd Artificial neural network incorporating emphasis and focus techniques
CN108564169B (zh) * 2017-04-11 2020-07-14 上海兆芯集成电路有限公司 硬件处理单元、神经网络单元和计算机可用介质
DE102018110607A1 (de) 2017-05-08 2018-11-08 Nvidia Corporation Verallgemeinerte Beschleunigung von Matrix-Multiplikations-und-Akkumulations-Operationen
US10338919B2 (en) 2017-05-08 2019-07-02 Nvidia Corporation Generalized acceleration of matrix multiply accumulate operations
US11893393B2 (en) 2017-07-24 2024-02-06 Tesla, Inc. Computational array microprocessor system with hardware arbiter managing memory requests
US10671349B2 (en) * 2017-07-24 2020-06-02 Tesla, Inc. Accelerated mathematical engine
TW202301125A (zh) * 2017-07-30 2023-01-01 埃拉德 希提 具有以記憶體為基礎的分散式處理器架構的記憶體晶片
US10262725B1 (en) * 2017-11-30 2019-04-16 National Tsing Hua University Selective bit-line sensing method and storage device utilizing the same
US11561791B2 (en) 2018-02-01 2023-01-24 Tesla, Inc. Vector computational unit receiving data elements in parallel from a last row of a computational array
US10601960B2 (en) 2018-02-14 2020-03-24 Eingot Llc Zero-knowledge environment based networking engine
US11468302B2 (en) * 2018-03-13 2022-10-11 Recogni Inc. Efficient convolutional engine
US11579288B2 (en) * 2018-04-14 2023-02-14 Coda Octopus Group Inc. Pseudo random frequency sonar ping generation
WO2019246064A1 (en) * 2018-06-18 2019-12-26 The Trustees Of Princeton University Configurable in-memory computing engine, platform, bit cells and layouts therefore
US11410032B2 (en) * 2018-06-22 2022-08-09 DeGirum Corporation Word2VEC processing system
US10534840B1 (en) * 2018-08-08 2020-01-14 Sandisk Technologies Llc Multiplication using non-volatile memory cells
JP2020035502A (ja) * 2018-08-28 2020-03-05 キオクシア株式会社 半導体集積回路
KR20210060024A (ko) * 2019-11-18 2021-05-26 에스케이하이닉스 주식회사 신경망 처리 회로를 포함하는 메모리 장치
US11928443B2 (en) * 2019-12-19 2024-03-12 Intel Corporation Techniques for transposing a matrix using a memory block
US11783163B2 (en) * 2020-06-15 2023-10-10 Arm Limited Hardware accelerator for IM2COL operation
TWI798798B (zh) * 2020-09-08 2023-04-11 旺宏電子股份有限公司 記憶體內運算方法及裝置
US11874900B2 (en) 2020-09-29 2024-01-16 Hailo Technologies Ltd. Cluster interlayer 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
US11263077B1 (en) 2020-09-29 2022-03-01 Hailo Technologies Ltd. Neural network intermediate results safety 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
US11811421B2 (en) 2020-09-29 2023-11-07 Hailo Technologies Ltd. Weights safety mechanism in an artificial neural network processor
KR20220141970A (ko) * 2021-04-14 2022-10-21 에스케이하이닉스 주식회사 Mac 연산 동작을 수행하는 반도체 장치
US11721585B2 (en) * 2021-08-02 2023-08-08 Jack Zezhong Peng Method for fabricating semiconductor memory and the semiconductor memory
US20240069971A1 (en) * 2022-08-31 2024-02-29 Taiwan Semiconductor Manufacturing Company, Ltd. Artificial intelligence accelerator device
CN115796239B (zh) * 2022-12-14 2023-10-31 北京登临科技有限公司 Ai算法架构的实现装置、卷积计算装置及相关方法与设备

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3440611A (en) * 1966-01-14 1969-04-22 Ibm Parallel operations in a vector arithmetic computing system
US4150434A (en) * 1976-05-08 1979-04-17 Tokyo Shibaura Electric Co., Ltd. Matrix arithmetic apparatus
US4347580A (en) * 1980-07-21 1982-08-31 The United States Of America As Represented By The Secretary Of The Navy Array convolver/correlator
US4489393A (en) * 1981-12-02 1984-12-18 Trw Inc. Monolithic discrete-time digital convolution circuit
US4493048A (en) * 1982-02-26 1985-01-08 Carnegie-Mellon University Systolic array apparatuses for matrix computations
JPS5930156A (ja) * 1982-08-09 1984-02-17 Sharp Corp マイクロコンピユ−タシステム
GB8431925D0 (en) * 1984-12-18 1985-01-30 Secr Defence Digital data processor
US4754412A (en) * 1985-10-07 1988-06-28 Schlumberger Systems & Services, Inc. Arithmetic logic system using the output of a first alu to control the operation of a second alu
US4750144A (en) * 1985-12-31 1988-06-07 The United States Of America As Represented By The Administrator Of The National Aeronautics And Space Administration Real time pipelined system for forming the sum of products in the processing of video data

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8737487B2 (en) 2006-05-24 2014-05-27 Sony Corporation Information processing apparatus
JP2019109887A (ja) * 2017-12-19 2019-07-04 三星電子株式会社Samsung Electronics Co.,Ltd. 不揮発性メモリ装置及びその動作方法並びにメモリシステム
US10460772B2 (en) 2018-03-16 2019-10-29 Kabushiki Kaisha Toshiba Semiconductor device
US10802799B2 (en) 2018-03-22 2020-10-13 Toshiba Memory Corporation Semiconductor device having plural operation circuits including multiplier and accumulator

Also Published As

Publication number Publication date
KR900700967A (ko) 1990-08-17
WO1989006014A1 (en) 1989-06-29
US5014235A (en) 1991-05-07

Similar Documents

Publication Publication Date Title
JPH06502937A (ja) マトリックス乗算のための知識メモリチップ
CN108268945B (zh) 神经网络单元及其运作方法
CN110383237B (zh) 可重新配置的矩阵乘法器系统和方法
CN208061184U (zh) 矢量处理单元
US10810484B2 (en) Hardware accelerator for compressed GRU on FPGA
CN108268932B (zh) 神经网络单元
CN109992743B (zh) 矩阵乘法器
CN108304922B (zh) 用于神经网络计算的计算设备和计算方法
EP3676700B1 (en) Efficient direct convolution using simd instructions
US5226171A (en) Parallel vector processing system for individual and broadcast distribution of operands and control information
CN1914592B (zh) 执行具有单元大小控制的紧缩数据操作的方法和设备
CN107992329A (zh) 一种计算方法及相关产品
US20210049463A1 (en) Low precision efficient convolutional neural network inference device that avoids multiplication without loss of accuracy
US5651121A (en) Using mask operand obtained from composite operand to perform logic operation in parallel with composite operand
KR920001618B1 (ko) 직교변환 프로세서
US5081573A (en) Parallel processing system
JP6880160B2 (ja) 計算装置と計算方法
US11614947B2 (en) Computational memory
JPS63316167A (ja) 並列処理システム及びその方法
US4491932A (en) Associative processor particularly useful for tomographic image reconstruction
JPH02501601A (ja) 2次元離散余弦変換プロセッサ
CN111353126A (zh) 分块矩阵乘法运算系统
Mehlhorn et al. Area—Time optimal VLSI integer multiplier with minimum computation time
CN113010213B (zh) 基于阻变忆阻器的精简指令集存算一体神经网络协处理器
JP2931097B2 (ja) 並列処理アレイの動作をシミュレートするデジタルプロセッサ