JPH0748203B2 - 3次元デバイスを用いた正方行列乗算器 - Google Patents
3次元デバイスを用いた正方行列乗算器Info
- Publication number
- JPH0748203B2 JPH0748203B2 JP63150492A JP15049288A JPH0748203B2 JP H0748203 B2 JPH0748203 B2 JP H0748203B2 JP 63150492 A JP63150492 A JP 63150492A JP 15049288 A JP15049288 A JP 15049288A JP H0748203 B2 JPH0748203 B2 JP H0748203B2
- Authority
- JP
- Japan
- Prior art keywords
- storage
- block
- register
- square matrix
- pointer
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Lifetime
Links
Landscapes
- Complex Calculations (AREA)
Description
【発明の詳細な説明】 [産業上の利用分野] この発明は行列乗算器、特に正方行列の乗算を高速で行
なうための3次元デバイスを用いた正方行列乗算器の構
成に関する。
なうための3次元デバイスを用いた正方行列乗算器の構
成に関する。
[従来の技術および発明が解決しようとする課題] 科学計算などにおける数値演算処理の1つに正方行列の
乗算がある。従来においては、このような正方行列の乗
算はコンピュータを用いてソフトウェアに従って行なわ
れていた。しかしながら、ソフトウェアで正方行列の乗
算を行なう場合、メモリまたはレジスタからのデータの
読出、読出したデータの乗算および加算、演算結果のメ
モリまたはレジスタへの格納というステップが必然的に
必要とされるため、演算時間が長くなり、高速処理を行
なうことができないという問題がある。
乗算がある。従来においては、このような正方行列の乗
算はコンピュータを用いてソフトウェアに従って行なわ
れていた。しかしながら、ソフトウェアで正方行列の乗
算を行なう場合、メモリまたはレジスタからのデータの
読出、読出したデータの乗算および加算、演算結果のメ
モリまたはレジスタへの格納というステップが必然的に
必要とされるため、演算時間が長くなり、高速処理を行
なうことができないという問題がある。
一方において、スカラ演算器等を用いてハードウェア的
にディスクリートな行列演算器を構成した場合、各演算
器間を接続する配線数が行列の要素数に応じて増大する
とともに、装置構成が大規模となりまた複雑化する。さ
らに、データ(行列要素)入力回路から演算結果(乗算
結果)出力回路までの配線長が長くなり、信号伝搬遅延
が生じ、高速で行列の乗算を行なうことができなくなる
という問題が発生する。
にディスクリートな行列演算器を構成した場合、各演算
器間を接続する配線数が行列の要素数に応じて増大する
とともに、装置構成が大規模となりまた複雑化する。さ
らに、データ(行列要素)入力回路から演算結果(乗算
結果)出力回路までの配線長が長くなり、信号伝搬遅延
が生じ、高速で行列の乗算を行なうことができなくなる
という問題が発生する。
したがって、ハードウェア構成により高速で行列演算を
行なうことのできるコンパクトな構成の正方行列乗算器
の実現が強く望まれていた。
行なうことのできるコンパクトな構成の正方行列乗算器
の実現が強く望まれていた。
この発明は上述のような技術背景に鑑みてなされたもの
であり、正方行列の乗算を高速で行なうことのできるコ
ンパクトな構成の正方行列乗算器を提供することを目的
とする。
であり、正方行列の乗算を高速で行なうことのできるコ
ンパクトな構成の正方行列乗算器を提供することを目的
とする。
[課題を解決するための手段] この発明に係る正方行列乗算器は、行および列状に配列
され、各々が第1の正方行列の対応する要素を記憶する
複数の記憶素子からなる第1の記憶手段と、行および列
状に配列され、各々が第2の正方行列の対応する要素を
記憶する複数の記憶素子からなる第2の記憶手段と、行
および列状に配列され、各々が上記第1の正方行列と上
記第2の正方行列の乗算結果の対応する要素を記憶する
複数の記憶素子からなる第3の記憶手段と、上記第1の
記憶手段のうち上記第1の正方行列のi行k列(i,kは
共に自然数)の要素を格納する記憶素子位置および上記
第2の記憶手段のうち上記第2の正方行列のk行j列の
要素を格納する記憶素子位置をそれぞれ指定する情報を
発生するとともに、上記第3の記憶手段のi行j列の記
憶素子位置を示す情報を発生するポインタ手段と、上記
ポインタ手段により指定された第1および第2の記憶手
段の記憶素子内容を読出して乗算する手段と、上記乗算
手段出力と上記ポインタ手段で指定された第3の記憶手
段の記憶素子内容とを加算するとともに、該加算結果を
上記ポインタ手段で指定された同一の上記第3の記憶手
段の記憶素子内へ格納する加算手段とを備え、かつ上記
第1,第2および第3の記憶手段、上記ポインタ手段、上
記乗算手段ならびに上記加算手段を同一基板上に積層さ
れた複数層の半導体層上に形成して3次元デバイスを構
成したものである。
され、各々が第1の正方行列の対応する要素を記憶する
複数の記憶素子からなる第1の記憶手段と、行および列
状に配列され、各々が第2の正方行列の対応する要素を
記憶する複数の記憶素子からなる第2の記憶手段と、行
および列状に配列され、各々が上記第1の正方行列と上
記第2の正方行列の乗算結果の対応する要素を記憶する
複数の記憶素子からなる第3の記憶手段と、上記第1の
記憶手段のうち上記第1の正方行列のi行k列(i,kは
共に自然数)の要素を格納する記憶素子位置および上記
第2の記憶手段のうち上記第2の正方行列のk行j列の
要素を格納する記憶素子位置をそれぞれ指定する情報を
発生するとともに、上記第3の記憶手段のi行j列の記
憶素子位置を示す情報を発生するポインタ手段と、上記
ポインタ手段により指定された第1および第2の記憶手
段の記憶素子内容を読出して乗算する手段と、上記乗算
手段出力と上記ポインタ手段で指定された第3の記憶手
段の記憶素子内容とを加算するとともに、該加算結果を
上記ポインタ手段で指定された同一の上記第3の記憶手
段の記憶素子内へ格納する加算手段とを備え、かつ上記
第1,第2および第3の記憶手段、上記ポインタ手段、上
記乗算手段ならびに上記加算手段を同一基板上に積層さ
れた複数層の半導体層上に形成して3次元デバイスを構
成したものである。
好ましくは、上記第1の記憶手段は、各行それぞれをシ
フトレジスタで構成し各シフトレジスタ内容が行方向へ
巡回シフトするように構成されている。
フトレジスタで構成し各シフトレジスタ内容が行方向へ
巡回シフトするように構成されている。
また、好ましくは上記第2の記憶手段はシフトレジスタ
で構成され、該シフトレジスタ内容は列方向に巡回シフ
トするように構成されている。
で構成され、該シフトレジスタ内容は列方向に巡回シフ
トするように構成されている。
またさらに、好ましくは、上記第2の記憶手段の列方向
のシフト動作は、上記第1の記憶手段における行方向の
シフトが各行の要素を1回巡回させたときに1度列方向
にシフトされるように構成される。
のシフト動作は、上記第1の記憶手段における行方向の
シフトが各行の要素を1回巡回させたときに1度列方向
にシフトされるように構成される。
また、上記第1の記憶手段のシフトレジスタは、各記憶
素子の対角線上の記憶素子内容が読出されるように上記
ポインタ手段により指定され、この状態が初期状態とさ
れる。
素子の対角線上の記憶素子内容が読出されるように上記
ポインタ手段により指定され、この状態が初期状態とさ
れる。
[作用] 行列乗算を行なうのに必要とされる機能ブロックが積層
されて3次元デバイスを構成しているため、各機能ブロ
ックの対応する素子を平面図的に見て重なり合うように
配置することが可能となり、各機能ブロック間の接続配
線を、ディスクリート構成の場合と異なり、外部へ取出
す必要がなく、内部配線のみで構成することができ、配
線数および配線長を必要最少限の値にすることができる
とともに、内部配線が錯綜することもなく、コンパクト
な構成の高速正方行列乗算器を得ることができる。特
に、シフトレジスタを用いて第1および第2の記憶手段
を構成することにより、異なる行列の各要素間の接続配
線および各要素の選択構成は最も単純な構成となりかつ
配線長を最小値にすることが可能となる。
されて3次元デバイスを構成しているため、各機能ブロ
ックの対応する素子を平面図的に見て重なり合うように
配置することが可能となり、各機能ブロック間の接続配
線を、ディスクリート構成の場合と異なり、外部へ取出
す必要がなく、内部配線のみで構成することができ、配
線数および配線長を必要最少限の値にすることができる
とともに、内部配線が錯綜することもなく、コンパクト
な構成の高速正方行列乗算器を得ることができる。特
に、シフトレジスタを用いて第1および第2の記憶手段
を構成することにより、異なる行列の各要素間の接続配
線および各要素の選択構成は最も単純な構成となりかつ
配線長を最小値にすることが可能となる。
[発明の実施例] 第1図はこの発明の一実施例である正方行列乗算器の全
体の概略構成を示す図であり、4×4(4行4列)の正
方行列A,Bの乗算を行なうための構成を6層構造の3次
元デバイスで実現した場合を一例として示す図である。
体の概略構成を示す図であり、4×4(4行4列)の正
方行列A,Bの乗算を行なうための構成を6層構造の3次
元デバイスで実現した場合を一例として示す図である。
第1図を参照して、この発明に従う3次元デバイスを用
いた正方行列乗算器は、第1の記憶ブロック1と、第2
の記憶ブロック2と、第1および第2の記憶ブロック1,
2におけるアクセスされるべき記憶素子の位置情報を発
生するとともに第3の記憶ブロック6におけるアクセス
されるべき記憶素子位置情報を発生するポインタブロッ
ク3と、第1および第2の記憶ブロック1,2から読出さ
れた情報を掛算する乗算器ブロック4と、乗算器ブロッ
ク4出力と第3の記憶ブロック6のうちポインタブロッ
ク3により指定された記憶素子の内容との加算を行なう
加算器ブロック5と、加算器ブロック5出力を記憶する
第3の記憶ブロック6と、各機能ブロックにおける動作
を制御するためのタイミング制御信号を発生する制御信
号発生ブロック7とから構成される。第1の記憶ブロッ
ク1は、4行4列の正方行列Aの各要素を記憶する。第
2の記憶ブロック2は、第2の4行4列の正方行列Bの
各要素を記憶する。ポインタブロック3は、第1および
第2の正方行列A,Bのうち乗算されるべき要素を格納し
ている記憶素子位置情報を発生するとともに、該乗算結
果が格納されるべき第3の記憶ブロック6における記憶
素子位置情報を発生する。乗算器ブロック4は、第1の
正方行列Aと第2の正方行列Bの選択された要素の乗算
を行ない、加算器ブロック5へ与える。加算器ブロック
5は、乗算器ブロック4で乗算された結果とポインタブ
ロック3で選択された第3の記憶ブロックの記憶素子か
らの情報とを加算し、かつ該加算結果をもとの記憶素子
位置へ格納する。第3の記憶ブロック6は、第1の正方
行列Aと第2の正方行列Bの乗算結果を各行列要素対応
に格納する。
いた正方行列乗算器は、第1の記憶ブロック1と、第2
の記憶ブロック2と、第1および第2の記憶ブロック1,
2におけるアクセスされるべき記憶素子の位置情報を発
生するとともに第3の記憶ブロック6におけるアクセス
されるべき記憶素子位置情報を発生するポインタブロッ
ク3と、第1および第2の記憶ブロック1,2から読出さ
れた情報を掛算する乗算器ブロック4と、乗算器ブロッ
ク4出力と第3の記憶ブロック6のうちポインタブロッ
ク3により指定された記憶素子の内容との加算を行なう
加算器ブロック5と、加算器ブロック5出力を記憶する
第3の記憶ブロック6と、各機能ブロックにおける動作
を制御するためのタイミング制御信号を発生する制御信
号発生ブロック7とから構成される。第1の記憶ブロッ
ク1は、4行4列の正方行列Aの各要素を記憶する。第
2の記憶ブロック2は、第2の4行4列の正方行列Bの
各要素を記憶する。ポインタブロック3は、第1および
第2の正方行列A,Bのうち乗算されるべき要素を格納し
ている記憶素子位置情報を発生するとともに、該乗算結
果が格納されるべき第3の記憶ブロック6における記憶
素子位置情報を発生する。乗算器ブロック4は、第1の
正方行列Aと第2の正方行列Bの選択された要素の乗算
を行ない、加算器ブロック5へ与える。加算器ブロック
5は、乗算器ブロック4で乗算された結果とポインタブ
ロック3で選択された第3の記憶ブロックの記憶素子か
らの情報とを加算し、かつ該加算結果をもとの記憶素子
位置へ格納する。第3の記憶ブロック6は、第1の正方
行列Aと第2の正方行列Bの乗算結果を各行列要素対応
に格納する。
制御信号発生回路7は、クロック信号CLKをカウントと
し、カウント値が4,8,12に達するごとにパルス信号を発
生する16進カウンタ71と、16進カウンタ71からの4カウ
ント出力、8カウント出力および12カウント出力を受け
る3入力ORゲート72と、ORゲート72出力を反転するイン
バータ73と、クロック信号CLKとインバータ73出力とを
受けるANDゲート74と、ORゲート72出力とクロック信号C
LKとを受けるANDゲート75とを含む。ANDゲート74出力は
第1の記憶ブロック1におけるシフト動作タイミング信
号を与える。ANDゲート75出力は第2の記憶ブロック2
におけるシフト動作タイミング信号を与える。またクロ
ック信号CLKはポインタブロック3におけるシフト動作
タイミングを与えるとともに、第3の記憶ブロック6に
おけるデータの読出および書込動作タイミング信号を与
える。16進カウンタ71はリセット信号RESETに応答して
リセットされる。このリセット信号RESETは、また第1
の記憶ブロック1、第2の記憶ブロック2におけるデー
タの更新および巡回動作を選択するための選択信号SELE
CTとして用いられる。またこのリセット信号RESETはポ
インタブロック3および第3の記憶ブロック6における
リセット信号としても用いられる。
し、カウント値が4,8,12に達するごとにパルス信号を発
生する16進カウンタ71と、16進カウンタ71からの4カウ
ント出力、8カウント出力および12カウント出力を受け
る3入力ORゲート72と、ORゲート72出力を反転するイン
バータ73と、クロック信号CLKとインバータ73出力とを
受けるANDゲート74と、ORゲート72出力とクロック信号C
LKとを受けるANDゲート75とを含む。ANDゲート74出力は
第1の記憶ブロック1におけるシフト動作タイミング信
号を与える。ANDゲート75出力は第2の記憶ブロック2
におけるシフト動作タイミング信号を与える。またクロ
ック信号CLKはポインタブロック3におけるシフト動作
タイミングを与えるとともに、第3の記憶ブロック6に
おけるデータの読出および書込動作タイミング信号を与
える。16進カウンタ71はリセット信号RESETに応答して
リセットされる。このリセット信号RESETは、また第1
の記憶ブロック1、第2の記憶ブロック2におけるデー
タの更新および巡回動作を選択するための選択信号SELE
CTとして用いられる。またこのリセット信号RESETはポ
インタブロック3および第3の記憶ブロック6における
リセット信号としても用いられる。
上述の構成において、各機能ブロック1〜6は同一基板
上に積層され3次元デバイスを構成している。この第1
図に示される実施例においては、各機能ブロック1〜6
は互いに異なる半導体層に形成され、6層の3次元デバ
イスを構成している。制御信号発生回路7は、外部回路
として設けられるか、またはいずれかの機能ブロックと
同一半導体層上に設けられる。
上に積層され3次元デバイスを構成している。この第1
図に示される実施例においては、各機能ブロック1〜6
は互いに異なる半導体層に形成され、6層の3次元デバ
イスを構成している。制御信号発生回路7は、外部回路
として設けられるか、またはいずれかの機能ブロックと
同一半導体層上に設けられる。
上述のような3次元デバイスの構造はSOI(シリコン・
オン・インシュレータ)技術を用いて実現することがで
きる。したがって、各機能ブロック間の配線は、各機能
ブロックが設けられている半導体層間を分離する絶縁層
に設けられたバイアホールを介して接続される。次に各
機能ブロックの具体的構成について第2図ないし第7図
を参照して説明する。
オン・インシュレータ)技術を用いて実現することがで
きる。したがって、各機能ブロック間の配線は、各機能
ブロックが設けられている半導体層間を分離する絶縁層
に設けられたバイアホールを介して接続される。次に各
機能ブロックの具体的構成について第2図ないし第7図
を参照して説明する。
まず、第2図を参照して、第1の記憶ブロックの構成に
ついて説明する。第2図を参照して、第1の記憶ブロッ
ク1は、4行4列の正方行列の各要素をそれぞれ対応し
て記憶するために、4行4列の行列状に配置されたレジ
スタA11〜A44を備える。レジスタAijは初期状態として
行列Aのi行j列成分を記憶する。各行のレジスタAi1
〜Ai4(i=1〜4)は行方向に巡回シフト可能なシフ
トレジスタを構成する。各レジスタAijの内容はシフト
信号SHIFTの立上がりエッジに応答して1ビットずつ隣
接するシフトレジスタにシフトされる。各行の入力部に
は、新しいデータaiを受けるか、既に記憶されている行
列要素データを巡回させて通過させるかを選択するため
のセレクタ12が設けられる。セレクタ12は新しいデータ
と巡回データのいずれを通過させるかの動作がセレクト
信号SELECTにより制御される。各レジスタAij出力は第
3層のポインタブロックへ伝達される。第1の記憶ブロ
ック1へ与えられるシフト信号SHIFTはインバータ73出
力とクロック信号CLKとのANDをとることにより与えられ
るため、クロック信号CLKの立上がりエッジごとにレジ
スタ内容が行方向へ1ビットシフトするとともに、第4
番目のクロック時にはシフト動作は生じないようにされ
ている。
ついて説明する。第2図を参照して、第1の記憶ブロッ
ク1は、4行4列の正方行列の各要素をそれぞれ対応し
て記憶するために、4行4列の行列状に配置されたレジ
スタA11〜A44を備える。レジスタAijは初期状態として
行列Aのi行j列成分を記憶する。各行のレジスタAi1
〜Ai4(i=1〜4)は行方向に巡回シフト可能なシフ
トレジスタを構成する。各レジスタAijの内容はシフト
信号SHIFTの立上がりエッジに応答して1ビットずつ隣
接するシフトレジスタにシフトされる。各行の入力部に
は、新しいデータaiを受けるか、既に記憶されている行
列要素データを巡回させて通過させるかを選択するため
のセレクタ12が設けられる。セレクタ12は新しいデータ
と巡回データのいずれを通過させるかの動作がセレクト
信号SELECTにより制御される。各レジスタAij出力は第
3層のポインタブロックへ伝達される。第1の記憶ブロ
ック1へ与えられるシフト信号SHIFTはインバータ73出
力とクロック信号CLKとのANDをとることにより与えられ
るため、クロック信号CLKの立上がりエッジごとにレジ
スタ内容が行方向へ1ビットシフトするとともに、第4
番目のクロック時にはシフト動作は生じないようにされ
ている。
第3図は第2の記憶ブロックの具体的構成を示す図であ
り、4×4の第2の正方行列Bの各要素を記憶するよう
に、4行4列の行列状にレジスタB11〜B44が配列され
る。第2の記憶ブロックのレジスタBijは第1の記憶ブ
ロックのレジスタAijと対応するように設けられている
が、第3図に示す構成においては、レジスタBijは列方
向に記憶内容が巡回し得るように構成されている。すな
わち、第2図に示される第1の記憶ブロックにおいては
行方向にシフトレジスタが構成されている一方、第3図
に示される第2の記憶ブロックにおいては、列方向に1
つのシフトレジスタが構成される。各列のデータ入力部
には、セレクト信号SELECTに応答して、新しいデータbi
を入力するか、既に書込まれている行列要素データを巡
回させて通過させるかのいずれかの動作を行なうセレク
タ22が設けられる。セレクタ22はセレクト信号SELECTが
“L"の場合巡回データを選択的に通過させ、セレクト信
号SELECTが“H"レベルのとき、新しいデータbiを選択的
に通過させる。このセレクタ22の構成および動作は第2
図に示されるセレクタ12と同様である。各レジスタBij
出力は第3層のポインタブロックへ伝達される。レジス
タBijの内容は4クロック毎に1ビット列方向にシフト
される。
り、4×4の第2の正方行列Bの各要素を記憶するよう
に、4行4列の行列状にレジスタB11〜B44が配列され
る。第2の記憶ブロックのレジスタBijは第1の記憶ブ
ロックのレジスタAijと対応するように設けられている
が、第3図に示す構成においては、レジスタBijは列方
向に記憶内容が巡回し得るように構成されている。すな
わち、第2図に示される第1の記憶ブロックにおいては
行方向にシフトレジスタが構成されている一方、第3図
に示される第2の記憶ブロックにおいては、列方向に1
つのシフトレジスタが構成される。各列のデータ入力部
には、セレクト信号SELECTに応答して、新しいデータbi
を入力するか、既に書込まれている行列要素データを巡
回させて通過させるかのいずれかの動作を行なうセレク
タ22が設けられる。セレクタ22はセレクト信号SELECTが
“L"の場合巡回データを選択的に通過させ、セレクト信
号SELECTが“H"レベルのとき、新しいデータbiを選択的
に通過させる。このセレクタ22の構成および動作は第2
図に示されるセレクタ12と同様である。各レジスタBij
出力は第3層のポインタブロックへ伝達される。レジス
タBijの内容は4クロック毎に1ビット列方向にシフト
される。
第4図はポインタブロックの具体的構成を示す図であ
り、各列に対応して4つのサブブロックP1〜P4が同一構
成を有して設けられる。第1行に対応するポインタサブ
ブロックP1は、行方向に巡回シフト可能な4ビットのシ
フトレジスタから構成される。このサブブロックP1にお
けるレジスタP1iは、第1の記憶ブロックにおける第1
行のレジスタのうちどのレジスタ出力を選択して第4層
へ送出するかを選択し、かつ第2層における第2の記憶
ブロックの第1行のどのレジスタ出力を選択して第4層
へ伝達するかを選択するとともに、第6層に含まれる第
3の記憶ブロックのレジスタ出力のうちどのレジスタ出
力を選択して第5層の加算器ブロックへ伝達するかを決
定する。第1行のサブブロックP1において、各ポインタ
レジスタP1i出力はスイッチングトランジスタSW1iのゲ
ートに接続されるとともに、このポインタ出力は第6層
の第3の記憶ブロックへ伝達される。選択スイッチSW1i
は第1の記憶ブロックからのレジスタA1i出力と第2の
記憶ブロックのレジスタB1i出力を受ける。第1の記憶
ブロックのレジスタA1iおよび第2の記憶ブロックの1
行目のレジスタB1i(i=1〜4)が対をなして選択さ
れて第4層の乗算器ブロックへ乗算されるべきデータa
1,b1として伝達される。この構成においては、各記憶ブ
ロックにおける同一行および同一列に位置するレジスタ
出力が第4層へ伝達される構成となる。各ポインタレジ
スタはリセット信号RESETによりリセットされ、かつシ
フト信号SHIFTに応答してその記憶内容がシフト1ビッ
トずつ行方向にシフトされる。このポインタブロックP1
へ与えられるシフト信号は制御信号発生回路7からのク
ロック信号でありしたがって各クロック信号CLKの立上
がりごとにポインタレジスタP1iの内容が1ビットずつ
行方向にシフトされる。他のサブブロックP2〜P4の構成
も同一であり、サブブロックP2からは第1および第2の
記憶ブロックの第2行目のレジスタA2i,B2i(i=1〜
4)が対をなして選択されて第4層の乗算器ブロックへ
伝達される。第3のサブブロックP3においは、第1の記
憶ブロックの第3行目のレジスタA3i,第2の記憶ブロッ
クの第3行目のレジスタB3iが対をなして選択されてそ
のレジスタ内容が第4層の乗算器へ与えられる。第4の
サブブロックP4は、第1の記憶ブロックおよび第2の記
憶ブロックの第4行目のレジスタA4i,B4iを選択し、そ
の出力を第4層の乗算器へ与える。サブブロックP2〜P4
からのポインタ出力は第1のサブブロックP1と同様に第
6層の第3の記憶ブロックへも与えられる。各ブロック
におけるリセット信号およびシフト信号が与えられるタ
イミングは第1のサブブロックP1と同様であり、同様の
シフト動作およびリセット動作を行なう。
り、各列に対応して4つのサブブロックP1〜P4が同一構
成を有して設けられる。第1行に対応するポインタサブ
ブロックP1は、行方向に巡回シフト可能な4ビットのシ
フトレジスタから構成される。このサブブロックP1にお
けるレジスタP1iは、第1の記憶ブロックにおける第1
行のレジスタのうちどのレジスタ出力を選択して第4層
へ送出するかを選択し、かつ第2層における第2の記憶
ブロックの第1行のどのレジスタ出力を選択して第4層
へ伝達するかを選択するとともに、第6層に含まれる第
3の記憶ブロックのレジスタ出力のうちどのレジスタ出
力を選択して第5層の加算器ブロックへ伝達するかを決
定する。第1行のサブブロックP1において、各ポインタ
レジスタP1i出力はスイッチングトランジスタSW1iのゲ
ートに接続されるとともに、このポインタ出力は第6層
の第3の記憶ブロックへ伝達される。選択スイッチSW1i
は第1の記憶ブロックからのレジスタA1i出力と第2の
記憶ブロックのレジスタB1i出力を受ける。第1の記憶
ブロックのレジスタA1iおよび第2の記憶ブロックの1
行目のレジスタB1i(i=1〜4)が対をなして選択さ
れて第4層の乗算器ブロックへ乗算されるべきデータa
1,b1として伝達される。この構成においては、各記憶ブ
ロックにおける同一行および同一列に位置するレジスタ
出力が第4層へ伝達される構成となる。各ポインタレジ
スタはリセット信号RESETによりリセットされ、かつシ
フト信号SHIFTに応答してその記憶内容がシフト1ビッ
トずつ行方向にシフトされる。このポインタブロックP1
へ与えられるシフト信号は制御信号発生回路7からのク
ロック信号でありしたがって各クロック信号CLKの立上
がりごとにポインタレジスタP1iの内容が1ビットずつ
行方向にシフトされる。他のサブブロックP2〜P4の構成
も同一であり、サブブロックP2からは第1および第2の
記憶ブロックの第2行目のレジスタA2i,B2i(i=1〜
4)が対をなして選択されて第4層の乗算器ブロックへ
伝達される。第3のサブブロックP3においは、第1の記
憶ブロックの第3行目のレジスタA3i,第2の記憶ブロッ
クの第3行目のレジスタB3iが対をなして選択されてそ
のレジスタ内容が第4層の乗算器へ与えられる。第4の
サブブロックP4は、第1の記憶ブロックおよび第2の記
憶ブロックの第4行目のレジスタA4i,B4iを選択し、そ
の出力を第4層の乗算器へ与える。サブブロックP2〜P4
からのポインタ出力は第1のサブブロックP1と同様に第
6層の第3の記憶ブロックへも与えられる。各ブロック
におけるリセット信号およびシフト信号が与えられるタ
イミングは第1のサブブロックP1と同様であり、同様の
シフト動作およびリセット動作を行なう。
また上述のポインタの構成において、各ポインタの内容
はシフト信号SHIFTに応答して1ビットずつ行方向にシ
フトされるが、リセット信号RESETに応答して各レジス
タは次のようにセットされる。
はシフト信号SHIFTに応答して1ビットずつ行方向にシ
フトされるが、リセット信号RESETに応答して各レジス
タは次のようにセットされる。
すなわち、リセット時においては、4行4列の構成にお
いて対角線要素のレジスタのみが1にセットされる。
いて対角線要素のレジスタのみが1にセットされる。
第5図を参照して、乗算器ブロックは、各行対応に設け
られた乗算器MPY1〜MPY4から構成される。乗算器MPY1は
第3層のポインタブロック(サブブロックP1)で選択さ
れた第1行のデータa1とb1との乗算を行ない、乗算結果
m1を第5層の加算器ブロックへ出力する。乗算器MPY2は
同様にポインタブロック(正確にはサブブロックP2)で
選択された第2行の要素a2,b2を第3層を介して受け、
その乗算結果m2=a2・b2を第5層の加算器ブロックへ出
力する。同様に乗算器MPY3は第3層のポインタブロック
(サブブロックP3)で選択された第3行の行列要素a3,b
3の積をとり、その乗算結果m3を第5層の加算器ブロッ
クへ与え、乗算器MPY4はポインタブロックP4で選択され
た行列要素a4とb4出力とを受けて乗算し、該乗算結果m4
を第5層の加算器ブロックへ伝達する。
られた乗算器MPY1〜MPY4から構成される。乗算器MPY1は
第3層のポインタブロック(サブブロックP1)で選択さ
れた第1行のデータa1とb1との乗算を行ない、乗算結果
m1を第5層の加算器ブロックへ出力する。乗算器MPY2は
同様にポインタブロック(正確にはサブブロックP2)で
選択された第2行の要素a2,b2を第3層を介して受け、
その乗算結果m2=a2・b2を第5層の加算器ブロックへ出
力する。同様に乗算器MPY3は第3層のポインタブロック
(サブブロックP3)で選択された第3行の行列要素a3,b
3の積をとり、その乗算結果m3を第5層の加算器ブロッ
クへ与え、乗算器MPY4はポインタブロックP4で選択され
た行列要素a4とb4出力とを受けて乗算し、該乗算結果m4
を第5層の加算器ブロックへ伝達する。
第6図を参照して、加算器ブロックは、各行対応に設け
られた加算器ADD1〜ADD4から構成される。加算器ADD1は
第4層の乗算器MPY1出力m1と第6層の第3の記憶ブロッ
クのポインタ(サブブロックP1)により選択された第1
行のレジスタ出力C1-out出力とを受けて加算し、この加
算結果C1-inを再びもとの第3の記憶ブロックの記憶素
子へ格納する。加算器ADD2は、第4層の乗算器MPY2出力
m2と、第6層の第3の記憶ブロックの第2行のデータの
うちポインタ(サブブロックP2)により選択された出力
C2-outとを加算し、該加算結果C2-inを再びもとの記憶
素子位置へ格納する。加算器ADD3は第4層の乗算器MPY3
出力m3と第3の記憶ブロックの第3行の要素のうちポイ
ンタ(サブブロックP3)により選択されたレジスタ出力
C3-out出力とを加算し、この加算結果C3-inを再び選択
された記憶素子位置へ書込む。加算器ADD4は、第4層の
乗算器MPY4出力m4と第3の記憶ブロックの第4行のレジ
スタ出力のうちポインタ(サブブロックP4)により選択
された出力C4-out出力との加算を行ない、この加算結果
C4-inを再びもとの第3の記憶ブロックの第4行のもと
の記憶素子位置へ格納する。
られた加算器ADD1〜ADD4から構成される。加算器ADD1は
第4層の乗算器MPY1出力m1と第6層の第3の記憶ブロッ
クのポインタ(サブブロックP1)により選択された第1
行のレジスタ出力C1-out出力とを受けて加算し、この加
算結果C1-inを再びもとの第3の記憶ブロックの記憶素
子へ格納する。加算器ADD2は、第4層の乗算器MPY2出力
m2と、第6層の第3の記憶ブロックの第2行のデータの
うちポインタ(サブブロックP2)により選択された出力
C2-outとを加算し、該加算結果C2-inを再びもとの記憶
素子位置へ格納する。加算器ADD3は第4層の乗算器MPY3
出力m3と第3の記憶ブロックの第3行の要素のうちポイ
ンタ(サブブロックP3)により選択されたレジスタ出力
C3-out出力とを加算し、この加算結果C3-inを再び選択
された記憶素子位置へ書込む。加算器ADD4は、第4層の
乗算器MPY4出力m4と第3の記憶ブロックの第4行のレジ
スタ出力のうちポインタ(サブブロックP4)により選択
された出力C4-out出力との加算を行ない、この加算結果
C4-inを再びもとの第3の記憶ブロックの第4行のもと
の記憶素子位置へ格納する。
第7図を参照して、第3の記憶ブロック6の構成につい
て説明する。第3の記憶ブロック6は、各行対応に設け
られたブロックC1〜C4から構成される。各ブロックC1〜
C4はそれぞれ同一の構成を有し、各ブロックは4つのレ
ジスタCijを有する。各レジスタCijの入出力部には、第
3層からのポインタ出力Pij出力に応答してオン状態と
なり対応のレジスタCijの入力部を第5層の対応する加
算器出力に結合するとともにレジスタCij出力部を対応
する加算器の入力部に結合するトランジスタスイッチTS
ijが設けられる。各レジスタCijは、クロック信号CLKの
立上がりに応答してその内容を出力し、クロック信号CL
Kの立下がりに応答して与えられたデータを書込み、リ
セット信号RESETの“H"レベルへの移行に応答してリセ
ットされ、各レジスタCij内容がクリアされる。この構
成において、各ブロックC1〜C4の各々はそれぞれ対応す
る加算器ADD1〜ADD4とデータの授受を行なう構成とな
る。
て説明する。第3の記憶ブロック6は、各行対応に設け
られたブロックC1〜C4から構成される。各ブロックC1〜
C4はそれぞれ同一の構成を有し、各ブロックは4つのレ
ジスタCijを有する。各レジスタCijの入出力部には、第
3層からのポインタ出力Pij出力に応答してオン状態と
なり対応のレジスタCijの入力部を第5層の対応する加
算器出力に結合するとともにレジスタCij出力部を対応
する加算器の入力部に結合するトランジスタスイッチTS
ijが設けられる。各レジスタCijは、クロック信号CLKの
立上がりに応答してその内容を出力し、クロック信号CL
Kの立下がりに応答して与えられたデータを書込み、リ
セット信号RESETの“H"レベルへの移行に応答してリセ
ットされ、各レジスタCij内容がクリアされる。この構
成において、各ブロックC1〜C4の各々はそれぞれ対応す
る加算器ADD1〜ADD4とデータの授受を行なう構成とな
る。
第8図は、第2図ないし第7図を参照して説明した3次
元デバイスを用いた乗算器の構成のうちi行に沿って切
断した構成を示す図である。第8図から見られるよう
に、正方行列乗算器をb層の3次元デバイス構造とする
ことにより、各行の対応する構成要素を垂直方向に積層
することができ、平面図的に見て重なり合うように配置
することができ、各回路構成を接続する配線が錯綜する
こともなく、配線数を最小にしてコンパクトな構成の3
次元構造の正方行列乗算器が実現されている。上述の構
成により、各行列要素記憶部分から乗算結果を記憶する
記憶部分までの配線長を最小とすることができ、また各
回路構成がハードウェアで構成されているため、高速で
乗算を行なうことが可能となる。
元デバイスを用いた乗算器の構成のうちi行に沿って切
断した構成を示す図である。第8図から見られるよう
に、正方行列乗算器をb層の3次元デバイス構造とする
ことにより、各行の対応する構成要素を垂直方向に積層
することができ、平面図的に見て重なり合うように配置
することができ、各回路構成を接続する配線が錯綜する
こともなく、配線数を最小にしてコンパクトな構成の3
次元構造の正方行列乗算器が実現されている。上述の構
成により、各行列要素記憶部分から乗算結果を記憶する
記憶部分までの配線長を最小とすることができ、また各
回路構成がハードウェアで構成されているため、高速で
乗算を行なうことが可能となる。
次に第2図ないし第8図を参照して、この発明の一実施
例である正方行列乗算器の動作について説明する。ここ
で、第9図に動作波形図を示し、第10図に第1の記憶ブ
ロックおよび第2の記憶ブロックにおけるレジスタ内容
のシフト動作を具体的に示す。
例である正方行列乗算器の動作について説明する。ここ
で、第9図に動作波形図を示し、第10図に第1の記憶ブ
ロックおよび第2の記憶ブロックにおけるレジスタ内容
のシフト動作を具体的に示す。
(1)初期設定 まず、リセット信号RESETを“H"レベルにする。これに
より、セレクタ12,22はそれぞれ新しく外部から与えら
れるデータを通過させる状態となる。次に、計算すべき
行列A,Bの要素に対応するデータa1〜a4,データb1〜b4の
値を設定し、クロック信号CLKに応答して第1の記憶ブ
ロック1,第2の記憶ブロック2の各レジスタAij,Bijに
行列A,Bの対応する要素の値をセットする。この状態は
第10図における初期値の状態で示される。今リセット信
号RESETは“H"レベルにあり、第3の記憶ブロック6に
おけるレジスタCij、および16進カウンタ71はクリアさ
れており、その記憶内容およびカウンタ値は0である。
これと同時に、ポインタブロック3に含まれるポインタ
レジスタPijは、その対角線要素のみがすなわちPiiのみ
が“H"レベルを出力するようにセットされる。第10図に
おいて、破線より上は行列B、すなわち第2層における
第2の記憶ブロックの各レジスタの初期設定状態および
それ以降のシフト動作を示し、破線より下の部分は第1
の記憶ブロックにおける行列Aの各要素のシフト動作を
示している。したがって初期設定状態においては、第10
図において初期値として示される状態が各レジスタAij,
Bijにセットされている。またポインタレジスタPijがリ
セット信号RESETによりリセットされているため、第10
図において数字の下にアンダーラインを引いて示されて
いる部分の出力が選択される状態となっている。ここで
また第10図において、4行4列の構成のうち、i行j列
の位置は各レジスタAij,Bijを表わしており、各位置に
示されている数字(kl)は入力された行列のk行l列の
要素を表わしている。
より、セレクタ12,22はそれぞれ新しく外部から与えら
れるデータを通過させる状態となる。次に、計算すべき
行列A,Bの要素に対応するデータa1〜a4,データb1〜b4の
値を設定し、クロック信号CLKに応答して第1の記憶ブ
ロック1,第2の記憶ブロック2の各レジスタAij,Bijに
行列A,Bの対応する要素の値をセットする。この状態は
第10図における初期値の状態で示される。今リセット信
号RESETは“H"レベルにあり、第3の記憶ブロック6に
おけるレジスタCij、および16進カウンタ71はクリアさ
れており、その記憶内容およびカウンタ値は0である。
これと同時に、ポインタブロック3に含まれるポインタ
レジスタPijは、その対角線要素のみがすなわちPiiのみ
が“H"レベルを出力するようにセットされる。第10図に
おいて、破線より上は行列B、すなわち第2層における
第2の記憶ブロックの各レジスタの初期設定状態および
それ以降のシフト動作を示し、破線より下の部分は第1
の記憶ブロックにおける行列Aの各要素のシフト動作を
示している。したがって初期設定状態においては、第10
図において初期値として示される状態が各レジスタAij,
Bijにセットされている。またポインタレジスタPijがリ
セット信号RESETによりリセットされているため、第10
図において数字の下にアンダーラインを引いて示されて
いる部分の出力が選択される状態となっている。ここで
また第10図において、4行4列の構成のうち、i行j列
の位置は各レジスタAij,Bijを表わしており、各位置に
示されている数字(kl)は入力された行列のk行l列の
要素を表わしている。
(2)乗算 リセット信号RESETを“L"レベルとし、クロック信号CLK
を動作させることにより、このクロック信号CLKに応答
して行列の乗算を行なう。
を動作させることにより、このクロック信号CLKに応答
して行列の乗算を行なう。
まずリセット信号RESETを“L"とする。これによ
り、セレクタ12,22は、外部データを受け付けず、内部
データを巡回させる。また、ポインタブロックにおける
対角線上のポインタPii出力を受けるスイッチSWiiがす
べてオン状態となり、第1の記憶ブロックからの対角線
要素aiiと第2の記憶ブロックの対角線要素biiとがそれ
ぞれ出力され、乗算器へ与えられる。乗算器MPY1〜MPY4
はそれぞれ与えられた行列要素の乗算を行なって第5層
の加算器へ与える。加算器ブロックに含まれるレジスタ
はポインタレジスタ出力に応答してCiiの対角線部分が
選択されているため、加算器ADD1〜ADD4の出力は ADD1=a11×b11+c11 ADD2=a22×b22+c22 ADD3=a33×b33+c33 ADD4=a44×b44+c44 となる。クロック信号CLKが“L"へ立下がると、第3の
記憶ブロックのレジスタCiiへ各対応の値が書込まれ、
そこでラッチされる。このクロック信号の立下がりに応
答して16進カウンタ71のカウント値が1つ進み1とな
る。
り、セレクタ12,22は、外部データを受け付けず、内部
データを巡回させる。また、ポインタブロックにおける
対角線上のポインタPii出力を受けるスイッチSWiiがす
べてオン状態となり、第1の記憶ブロックからの対角線
要素aiiと第2の記憶ブロックの対角線要素biiとがそれ
ぞれ出力され、乗算器へ与えられる。乗算器MPY1〜MPY4
はそれぞれ与えられた行列要素の乗算を行なって第5層
の加算器へ与える。加算器ブロックに含まれるレジスタ
はポインタレジスタ出力に応答してCiiの対角線部分が
選択されているため、加算器ADD1〜ADD4の出力は ADD1=a11×b11+c11 ADD2=a22×b22+c22 ADD3=a33×b33+c33 ADD4=a44×b44+c44 となる。クロック信号CLKが“L"へ立下がると、第3の
記憶ブロックのレジスタCiiへ各対応の値が書込まれ、
そこでラッチされる。このクロック信号の立下がりに応
答して16進カウンタ71のカウント値が1つ進み1とな
る。
再びクロック信号CLKが立上がると、それに応答し
て、第1の記憶ブロックにおけるレジスタAijの内容が
1ビットずつ行方向にシフトされる。同時にポインタブ
ロックに含まれるポインタレジスタPijの出力も1ビッ
トずつ行方向へシフトされる。この結果、第1の記憶ブ
ロックにおけるレジスタAijの記憶内容は第10図のに
示す状態となる。一方において、記憶ブロック2におけ
る記憶内容は、そのシフト信号は16進カウンタ71のカウ
ント数が4となるごとに発生されるため、記憶ブロック
2における行列Bの記憶内容は変化しない。したがっ
て、加算器ADD1〜ADD4出力は、 ADD1=a11×b12+c12 ADD2=a22×b23+c23 ADD3=a33×b34+c34 ADD4=a44×b41+c41 となる。クロック信号CLKが“L"に移行すると、これら
の加算結果が、それぞれポインタレジスタにより選択さ
れた第3の記憶ブロックのレジスタC12,C23,C34,C41に
ラッチされる。また16進カウンタ71におけるカウント値
は1つインクリメントされ、2となる。
て、第1の記憶ブロックにおけるレジスタAijの内容が
1ビットずつ行方向にシフトされる。同時にポインタブ
ロックに含まれるポインタレジスタPijの出力も1ビッ
トずつ行方向へシフトされる。この結果、第1の記憶ブ
ロックにおけるレジスタAijの記憶内容は第10図のに
示す状態となる。一方において、記憶ブロック2におけ
る記憶内容は、そのシフト信号は16進カウンタ71のカウ
ント数が4となるごとに発生されるため、記憶ブロック
2における行列Bの記憶内容は変化しない。したがっ
て、加算器ADD1〜ADD4出力は、 ADD1=a11×b12+c12 ADD2=a22×b23+c23 ADD3=a33×b34+c34 ADD4=a44×b41+c41 となる。クロック信号CLKが“L"に移行すると、これら
の加算結果が、それぞれポインタレジスタにより選択さ
れた第3の記憶ブロックのレジスタC12,C23,C34,C41に
ラッチされる。また16進カウンタ71におけるカウント値
は1つインクリメントされ、2となる。
次に、クロック信号CLKが“H"へ移行すると、第1
の記憶ブロック1のレジスタAijの内容は1ビットずつ
行方向にシフトし、かつポインタレジスタPijの内容は
1ビットずつ行方向へシフトする。このとき、第2の記
憶ブロック2のレジスタBijの内容はシフトされず、初
期状態を保持している。この結果、ポインタレジスタPi
jにより選択されたレジスタAij,Bij,Cijがそれぞれステ
ップで選択されたレジスタと行方向に隣接するレジス
タとなる。したがって、加算器ADDi出力は、 ADD1=a11×b13+c13 ADD2=a22×b24+c24 ADD3=a33×b31+c31 ADD4=a44×b42+c42 となる。クロック信号CLKが“L"へ移行すると、この加
算器ADDi出力がそれぞれ第3のポインタレジスタPijに
より選択されているレジスタC13,C24,C31,C42にラッチ
される。16進カウンタ71のカウント値はこのクロック信
号の変化に応答して3となる。
の記憶ブロック1のレジスタAijの内容は1ビットずつ
行方向にシフトし、かつポインタレジスタPijの内容は
1ビットずつ行方向へシフトする。このとき、第2の記
憶ブロック2のレジスタBijの内容はシフトされず、初
期状態を保持している。この結果、ポインタレジスタPi
jにより選択されたレジスタAij,Bij,Cijがそれぞれステ
ップで選択されたレジスタと行方向に隣接するレジス
タとなる。したがって、加算器ADDi出力は、 ADD1=a11×b13+c13 ADD2=a22×b24+c24 ADD3=a33×b31+c31 ADD4=a44×b42+c42 となる。クロック信号CLKが“L"へ移行すると、この加
算器ADDi出力がそれぞれ第3のポインタレジスタPijに
より選択されているレジスタC13,C24,C31,C42にラッチ
される。16進カウンタ71のカウント値はこのクロック信
号の変化に応答して3となる。
クロック信号CLKが“H"となると、上述のステップ
と同様にして、第1の記憶ブロックAijの内容は第10図
ので示されるようにその内容が行方向に1ビットずつ
シフトされるとともに、ポインタレジスタPij出力も1
ビットずつ行方向へシフトされる。このとき、まだ16進
カウンタ71のカウント値は3であるため、第2の記憶ブ
ロック2におけるレジスタBijの内容は変化しない。し
たがって、加算器ADDi出力は、 ADD1=a11×b14+c14 ADD2=a22×b21+c21 ADD3=a33×b32+c32 ADD4=a44×b43+c43 となる。クロック信号信号CLKが“L"へ移行すると、こ
れらの加算器出力がそれぞれポインタレジスタにより選
択されたレジスタC14,C21,C32,C43へ書込まれ、そこで
ラッチされる。また、16進カウンタ71のカウント値は1
つインクリメントされ4となる。
と同様にして、第1の記憶ブロックAijの内容は第10図
ので示されるようにその内容が行方向に1ビットずつ
シフトされるとともに、ポインタレジスタPij出力も1
ビットずつ行方向へシフトされる。このとき、まだ16進
カウンタ71のカウント値は3であるため、第2の記憶ブ
ロック2におけるレジスタBijの内容は変化しない。し
たがって、加算器ADDi出力は、 ADD1=a11×b14+c14 ADD2=a22×b21+c21 ADD3=a33×b32+c32 ADD4=a44×b43+c43 となる。クロック信号信号CLKが“L"へ移行すると、こ
れらの加算器出力がそれぞれポインタレジスタにより選
択されたレジスタC14,C21,C32,C43へ書込まれ、そこで
ラッチされる。また、16進カウンタ71のカウント値は1
つインクリメントされ4となる。
次にクロック信号CLKが“H"へ移行すると、第1の記
憶ブロック1のシフト信号は、インバータ73およびAND
ゲート74の働きにより与えられず、その記憶内容はシフ
トしない。一方、第2の記憶ブロック2に対するシフト
信号SHIFTは、クロック信号CLKの立上がりに応答してOR
ゲート72出力により発生され、記憶ブロック2における
レジスタBijの内容が列方向に1ビットずつシフトされ
る。また、ポインタブロック3のシフト信号SHIFTはク
ロック信号であり、その内容が1ビットずつ行方向にに
シフトされる。その結果、レジスタAij,Bijおよびポイ
ンタレジスタPijの内容は第10図に示す状態となり、
加算器ADDi出力は、 ADD1=a12×b21+c11 ADD2=a23×b32+c22 ADD3=a34×b43+c33 ADD4=a41×b14+c44 となる。クロック信号CLKは“L"へ移行すると、これら
の加算器出力がそれぞれ、ポインタレジスタPijにより
選択されている記憶レジスタC11,C22,C33,C44にそれぞ
れラッチされる。また、16進カウンタ71のカウント値は
5となる。
憶ブロック1のシフト信号は、インバータ73およびAND
ゲート74の働きにより与えられず、その記憶内容はシフ
トしない。一方、第2の記憶ブロック2に対するシフト
信号SHIFTは、クロック信号CLKの立上がりに応答してOR
ゲート72出力により発生され、記憶ブロック2における
レジスタBijの内容が列方向に1ビットずつシフトされ
る。また、ポインタブロック3のシフト信号SHIFTはク
ロック信号であり、その内容が1ビットずつ行方向にに
シフトされる。その結果、レジスタAij,Bijおよびポイ
ンタレジスタPijの内容は第10図に示す状態となり、
加算器ADDi出力は、 ADD1=a12×b21+c11 ADD2=a23×b32+c22 ADD3=a34×b43+c33 ADD4=a41×b14+c44 となる。クロック信号CLKは“L"へ移行すると、これら
の加算器出力がそれぞれ、ポインタレジスタPijにより
選択されている記憶レジスタC11,C22,C33,C44にそれぞ
れラッチされる。また、16進カウンタ71のカウント値は
5となる。
以下、上述のステップを繰返し、15回クロック信号CLK
を変化させることにより、16回目のクロック信号CLKが
立下がった時点において、第3の記憶ブロックのレジス
タCijには、 Cij=Σaikbkj,1≦i,k,j≦4 がラッチされている。したがって、第3の記憶ブロック
6においては、正方行列Aと正方行列Bの積結果がラッ
チされていることになる。
を変化させることにより、16回目のクロック信号CLKが
立下がった時点において、第3の記憶ブロックのレジス
タCijには、 Cij=Σaikbkj,1≦i,k,j≦4 がラッチされている。したがって、第3の記憶ブロック
6においては、正方行列Aと正方行列Bの積結果がラッ
チされていることになる。
なお上述の実施例においては、第3の記憶ブロックにお
けるレジスタCij内容をこの正方行列乗算器より出力す
る方法を示していないが、この乗算結果を出力する回路
構成は、この乗算器の適用分野において決定される。す
なわち、たとえば第1の記憶ブロックおよび第2の記憶
ブロックにおけるレジスタAij,Bijへのデータ入力と同
様に、第3の記憶ブロックのレジスタCijをシフトレジ
スタ構成とすれば、乗算結果出力をベクトル単位で出力
することが可能となる。また、第7層にそのデータ処理
系が存在し、この乗算結果がその処理系で処理される場
合には、レジスタCij出力を並列に第7層へ出力する構
成としてもよい。
けるレジスタCij内容をこの正方行列乗算器より出力す
る方法を示していないが、この乗算結果を出力する回路
構成は、この乗算器の適用分野において決定される。す
なわち、たとえば第1の記憶ブロックおよび第2の記憶
ブロックにおけるレジスタAij,Bijへのデータ入力と同
様に、第3の記憶ブロックのレジスタCijをシフトレジ
スタ構成とすれば、乗算結果出力をベクトル単位で出力
することが可能となる。また、第7層にそのデータ処理
系が存在し、この乗算結果がその処理系で処理される場
合には、レジスタCij出力を並列に第7層へ出力する構
成としてもよい。
さらに、上記実施例においては、各機能ブロックが個々
の半導体層に形成された6層の3次元デバイス構造で正
方行列乗算器を実現した構成について説明したが、この
構成に代えて、いくつかの機能ブロックを1つの半導体
層に構成し、機能ブロック数よりも少ない半導体層から
なる3次元デバイス構成で行列乗算器を実現しても上記
実施例と同様の効果を得ることができる。
の半導体層に形成された6層の3次元デバイス構造で正
方行列乗算器を実現した構成について説明したが、この
構成に代えて、いくつかの機能ブロックを1つの半導体
層に構成し、機能ブロック数よりも少ない半導体層から
なる3次元デバイス構成で行列乗算器を実現しても上記
実施例と同様の効果を得ることができる。
またさらに、タイミング信号発生回路7は、この3次元
デバイスが構成されたチップ基板の外部に設ける構成と
してもよいし、また同一基板上に集積する構成の場合に
は、各機能ブロックが構成されている半導体層のいずれ
かの層に集積化することにより集積度を改善することが
できる。
デバイスが構成されたチップ基板の外部に設ける構成と
してもよいし、また同一基板上に集積する構成の場合に
は、各機能ブロックが構成されている半導体層のいずれ
かの層に集積化することにより集積度を改善することが
できる。
さらに、上記実施例においては、4×4(4行4列)の
正方行列乗算について説明したが、この発明による正方
行列乗算器はその次数が4に限定されず、他の次数の正
方行列においても適用可能である。
正方行列乗算について説明したが、この発明による正方
行列乗算器はその次数が4に限定されず、他の次数の正
方行列においても適用可能である。
[発明の効果] 以上のようにこの発明によれば、正方行列の乗算に必要
とされる機能ブロック、すなわち第1の正方行列の各要
素を格納する第1の記憶ブロック、第2の正方行列を記
憶する第2の記憶ブロック、乗算結果の正方行列の各要
素を記憶する第3の記憶ブロック、第1の記憶ブロック
および第2の記憶ブロックにおける乗算されるべき要素
を記憶する記憶素子の位置情報を発生するとともに、乗
算結果を格納すべき第3の記憶ブロックの記憶素子位置
情報を発生するポインタブロック、ポインタブロック出
力により選択された第1および第2の記憶ブロックの記
憶素子内容を乗算する乗算ブロック、乗算ブロックで乗
算された乗算結果およびポインタブロックにより指定さ
れた第3の記憶ブロックの記憶素子内容を加算するとと
もに、もとの記憶素子位置へ加算結果を格納する加算ブ
ロックとを同一基板上に積層して3次元デバイス構造と
しているため、簡易かつコンパクトな構成で正方行列乗
算器を実現することができ、かつ配線長および配線数を
必要最少限の値に留めることができ、高速乗算を行なう
ことのできるコンパクトな構成の正方行列乗算器を得る
ことができる。
とされる機能ブロック、すなわち第1の正方行列の各要
素を格納する第1の記憶ブロック、第2の正方行列を記
憶する第2の記憶ブロック、乗算結果の正方行列の各要
素を記憶する第3の記憶ブロック、第1の記憶ブロック
および第2の記憶ブロックにおける乗算されるべき要素
を記憶する記憶素子の位置情報を発生するとともに、乗
算結果を格納すべき第3の記憶ブロックの記憶素子位置
情報を発生するポインタブロック、ポインタブロック出
力により選択された第1および第2の記憶ブロックの記
憶素子内容を乗算する乗算ブロック、乗算ブロックで乗
算された乗算結果およびポインタブロックにより指定さ
れた第3の記憶ブロックの記憶素子内容を加算するとと
もに、もとの記憶素子位置へ加算結果を格納する加算ブ
ロックとを同一基板上に積層して3次元デバイス構造と
しているため、簡易かつコンパクトな構成で正方行列乗
算器を実現することができ、かつ配線長および配線数を
必要最少限の値に留めることができ、高速乗算を行なう
ことのできるコンパクトな構成の正方行列乗算器を得る
ことができる。
第1図はこの発明の一実施例である正方行列乗算器の全
体の概略構成を示す図である。第2図は、この発明の一
実施例である正方行列乗算器における正方行列の各要素
を記憶する第1の記憶ブロックの概略構成を示す図であ
る。第3図はこの発明の一実施例である正方行列乗算器
において用いられる第2の正方行列の各要素を記憶する
第2の記憶ブロックの構成を示す図である。第4図はこ
の発明の一実施例である正方行列乗算器において用いら
れるポインタブロックの構成を示す図である。第5図は
この発明の一実施例である正方行列乗算器に用いられる
乗算器の概略構成を示す図である。第6図はこの発明の
一実施例である正方行列乗算器において用いられる加算
器ブロックの構成を示す図である。第7図はこの発明の
一実施例である正方行列乗算器において用いられる乗算
結果の正方行列を記憶する第3の記憶ブロックの構成を
示す図である。第8図はこの発明の一実施例である正方
行列乗算器の第i行の構成を示す図である。第9図はこ
の発明の一実施例である正方行列乗算器の動作タイミン
グを示す波形図である。第10図はこの発明の一実施例で
ある正方行列乗算器における第1の記憶ブロック、第2
の記憶ブロックおよびポインタブロックにおけるシフト
動作を示す図である。 図において、1は第1の記憶ブロック、2は第2の記憶
ブロック、3はポインタブロック、4は乗算器ブロッ
ク、5は加算器ブロック、6は第3の記憶ブロック、7
は制御タイミング信号発生回路、Aij(i,j=1〜4)は
第1の記憶ブロックの記憶素子であるレジスタ、Bij
(i,j=1〜4)は第2の記憶ブロックにおける記憶素
子であるレジスタ、Cij(i,j=1〜4)は第3の記憶ブ
ロックにおける記憶素子であるレジスタ、Pij(i,j=1
〜4)はポインタブロックに含まれるポインタレジス
タ、MPYi(i=1〜4)は乗算器、ADDi(i=1〜4)
は加算器、12,22は第1,第2の記憶ブロックにおけるデ
ータを巡回させるか外部データを入力するかのいずれか
を選択するセレクタ、TSij(i,j=1〜4)は第3の記
憶ブロックにおけるレジスタへの入出力を行なうための
トランジスタスイッチ、SWij(i,j=1〜4)は第1の
記憶ブロックおよび第2の記憶ブロックのレジスタを選
択するためのスイッチである。 なお、図中、同一符号は同一または相当部分を示す。
体の概略構成を示す図である。第2図は、この発明の一
実施例である正方行列乗算器における正方行列の各要素
を記憶する第1の記憶ブロックの概略構成を示す図であ
る。第3図はこの発明の一実施例である正方行列乗算器
において用いられる第2の正方行列の各要素を記憶する
第2の記憶ブロックの構成を示す図である。第4図はこ
の発明の一実施例である正方行列乗算器において用いら
れるポインタブロックの構成を示す図である。第5図は
この発明の一実施例である正方行列乗算器に用いられる
乗算器の概略構成を示す図である。第6図はこの発明の
一実施例である正方行列乗算器において用いられる加算
器ブロックの構成を示す図である。第7図はこの発明の
一実施例である正方行列乗算器において用いられる乗算
結果の正方行列を記憶する第3の記憶ブロックの構成を
示す図である。第8図はこの発明の一実施例である正方
行列乗算器の第i行の構成を示す図である。第9図はこ
の発明の一実施例である正方行列乗算器の動作タイミン
グを示す波形図である。第10図はこの発明の一実施例で
ある正方行列乗算器における第1の記憶ブロック、第2
の記憶ブロックおよびポインタブロックにおけるシフト
動作を示す図である。 図において、1は第1の記憶ブロック、2は第2の記憶
ブロック、3はポインタブロック、4は乗算器ブロッ
ク、5は加算器ブロック、6は第3の記憶ブロック、7
は制御タイミング信号発生回路、Aij(i,j=1〜4)は
第1の記憶ブロックの記憶素子であるレジスタ、Bij
(i,j=1〜4)は第2の記憶ブロックにおける記憶素
子であるレジスタ、Cij(i,j=1〜4)は第3の記憶ブ
ロックにおける記憶素子であるレジスタ、Pij(i,j=1
〜4)はポインタブロックに含まれるポインタレジス
タ、MPYi(i=1〜4)は乗算器、ADDi(i=1〜4)
は加算器、12,22は第1,第2の記憶ブロックにおけるデ
ータを巡回させるか外部データを入力するかのいずれか
を選択するセレクタ、TSij(i,j=1〜4)は第3の記
憶ブロックにおけるレジスタへの入出力を行なうための
トランジスタスイッチ、SWij(i,j=1〜4)は第1の
記憶ブロックおよび第2の記憶ブロックのレジスタを選
択するためのスイッチである。 なお、図中、同一符号は同一または相当部分を示す。
Claims (1)
- 【請求項1】n行n列(n:自然数)の第1および第2の
正方行列の乗算を行なうための乗算器であって、 行および列状に配列され、各々が前記第1の正方行列の
対応の要素データを記憶する複数の記憶素子を含み、か
つ前記行の方向に沿って巡回的に記憶データのシフト動
作が可能な第1の記憶手段と、 行および列状に配列され、各々が前記第2の正方行列の
対応の要素データを記憶する複数の記憶素子を含み、か
つ前記列の方向に沿って巡回的に記憶データのシフト動
作が可能な第2の記憶手段と、 行および列状に配列され、各々が前記第1の正方行列と
前記第2の正方行列の乗算結果の対応する要素データを
記憶する複数の記憶素子を含む第3の記憶手段と、 前記第1の記憶手段のうちの前記第1の正方行列のi行
k列(1≦i≦n,1≦k≦n)の要素データを記憶する
記憶素子の位置情報および前記第2の記憶手段のうちの
前記第2の正方行列のk行j列(1≦j≦n)の要素デ
ータを格納する記憶素子の位置情報をそれぞれ発生する
とともに、前記第3の記憶手段のi行j列の記憶素子の
位置情報を発生するための、各々が前記行の方向に沿っ
て保持情報を巡回的にシフト動作させることが可能であ
りかつ各行において1列を指定する位置情報を発生する
n行のポインタを含むポインタ手段と、 前記ポインタ手段が発生した位置情報に応答して、前記
第1および第2の記憶手段の指定された記憶素子の情報
を読出して乗算する乗算手段と、 前記乗算手段の出力と前記ポインタ手段からの位置情報
により指定された前記第3の記憶手段の記憶素子の内容
とを加算するとともに、該加算結果を前記ポインタ手段
により指定された前記第3の記憶手段の元の記憶素子へ
格納する加算手段とを備え、かつ 前記第1、第2および第3の記憶手段、前記ポインタ手
段、前記乗算手段ならびに前記加算手段は同一基板上に
積層された複数の半導体層に形成され、3次元デバイス
を構成する、3次元デバイスを用いた正方行列乗算器。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP63150492A JPH0748203B2 (ja) | 1988-06-17 | 1988-06-17 | 3次元デバイスを用いた正方行列乗算器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP63150492A JPH0748203B2 (ja) | 1988-06-17 | 1988-06-17 | 3次元デバイスを用いた正方行列乗算器 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH01316872A JPH01316872A (ja) | 1989-12-21 |
JPH0748203B2 true JPH0748203B2 (ja) | 1995-05-24 |
Family
ID=15498053
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP63150492A Expired - Lifetime JPH0748203B2 (ja) | 1988-06-17 | 1988-06-17 | 3次元デバイスを用いた正方行列乗算器 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JPH0748203B2 (ja) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20180007302A1 (en) | 2016-07-01 | 2018-01-04 | Google Inc. | Block Operations For An Image Processor Having A Two-Dimensional Execution Lane Array and A Two-Dimensional Shift Register |
CN112214727B (zh) | 2017-07-07 | 2024-07-05 | 华为技术有限公司 | 运算加速器 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS50120535A (ja) * | 1974-03-06 | 1975-09-20 | ||
JPS613450A (ja) * | 1984-06-18 | 1986-01-09 | Hiroshima Daigaku | 三次元光結合共有メモリ集積装置 |
-
1988
- 1988-06-17 JP JP63150492A patent/JPH0748203B2/ja not_active Expired - Lifetime
Also Published As
Publication number | Publication date |
---|---|
JPH01316872A (ja) | 1989-12-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102614616B1 (ko) | 동형 암호화에 의한 보안 계산 가속화를 위한 동형 처리 유닛(hpu) | |
US3723715A (en) | Fast modulo threshold operator binary adder for multi-number additions | |
Hatamian et al. | A 70-MHz 8-bit/spl times/8-bit parallel pipelined multiplier in 2.5-/spl mu/m CMOS | |
JP3251421B2 (ja) | 半導体集積回路 | |
US5596743A (en) | Field programmable logic device with dynamic interconnections to a dynamic logic core | |
US5214747A (en) | Segmented neural network with daisy chain control | |
US4601006A (en) | Architecture for two dimensional fast fourier transform | |
US6721774B1 (en) | Low power multiplier | |
JPH05224892A (ja) | 自乗回路 | |
JPS5927944B2 (ja) | マトリクスデ−タ並列処理システム | |
GB2030743A (en) | Multiplier for binary numbers in two's complement notation | |
Lin | Reconfigurable parallel inner product processor architectures | |
JP2994390B2 (ja) | データ処理回路のための転置メモリ | |
US9933998B2 (en) | Methods and apparatuses for performing multiplication | |
US5742534A (en) | Electronic circuit for modular computation in a finite field | |
Lim et al. | A serial-parallel architecture for two-dimensional discrete cosine and inverse discrete cosine transforms | |
JP2666411B2 (ja) | 二次元離散データ直交変換用集積回路装置 | |
JPH0748203B2 (ja) | 3次元デバイスを用いた正方行列乗算器 | |
US5550846A (en) | Circuit for generating an output sequence of values | |
JP3515170B2 (ja) | 実数または複素数用の乗算器 | |
JPH05197525A (ja) | オペランドを否定するための否定方法及び否定回路 | |
EP0373714B1 (en) | Coupling network for a data processor, comprising a series connection of at least one crossbar switch and at least one array of silos, and data processor comprising such a coupling network | |
Alnuweiri | A new class of optimal bounded-degree VLSI sorting networks | |
Saqib et al. | A parallel architecture for computing scalar multiplication on hessian elliptic curves | |
US20240071445A1 (en) | Stochastic computing using logic-memory cells |