JP2002229970A - Simd積和演算方法、積和演算回路、および、半導体集積回路装置 - Google Patents

Simd積和演算方法、積和演算回路、および、半導体集積回路装置

Info

Publication number
JP2002229970A
JP2002229970A JP2001024153A JP2001024153A JP2002229970A JP 2002229970 A JP2002229970 A JP 2002229970A JP 2001024153 A JP2001024153 A JP 2001024153A JP 2001024153 A JP2001024153 A JP 2001024153A JP 2002229970 A JP2002229970 A JP 2002229970A
Authority
JP
Japan
Prior art keywords
product
simd
sum operation
sum
accumulator
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2001024153A
Other languages
English (en)
Other versions
JP3935678B2 (ja
Inventor
Masayuki Tsuji
雅之 辻
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.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
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 Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2001024153A priority Critical patent/JP3935678B2/ja
Priority to US09/945,697 priority patent/US7043519B2/en
Priority to DE60143469T priority patent/DE60143469D1/de
Priority to EP01307538A priority patent/EP1229438B1/en
Publication of JP2002229970A publication Critical patent/JP2002229970A/ja
Application granted granted Critical
Publication of JP3935678B2 publication Critical patent/JP3935678B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/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

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computational Mathematics (AREA)
  • Computing Systems (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Complex Calculations (AREA)
  • Image Processing (AREA)

Abstract

(57)【要約】 【課題】 SIMD演算を行う積和演算回路において
は、例えば、行列演算の引数をコピー或いはスワップさ
せる新たなパス(手順)が必要となって処理性能の低下を
来たしている。 【解決手段】 2n並列(ここで、nは自然数)の積和
演算が同時に実行可能なSIMD積和演算方法であっ
て、SIMD積和演算で各積和演算回路231,232
に割り当てるアキュムレータアドレスの並びを、2m
(ここで、m=0,…,log2n)のアキュムレータ
241,242を一組とし、隣接する2p−1番目と2
p番目(ここで、p=1,…,n)のアキュムレータの
組を当該アキュムレータの組の中におけるアキュムレー
タアドレスの順番は変えずに、該各アキュムレータの組
を入れ替えることでSIMD積和演算を実行する。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、積和演算技術に関
し、特に、SIMD演算を行うための方法および回路、
並びに、SIMD積和演算回路を備えた半導体集積回路
装置に関する。近年、1つの命令で複数のデータを同時
に演算するSIMD(Single Instruction Stream-Mult
iple Data Stream)演算が注目され、例えば、カラー・
レーザプリンタやナビゲーション・システムなどの高速
データ処理および画像処理を行う高機能・高性能のシス
テムを実現するには、SIMD演算機能を有する強力な
プロセッサが必要とされている。ここで、SIMDは、
1つの命令で複数のデータを同時に演算する制御方式で
あり、また、SIMD行列演算は、(高速に)行列演算
が実行可能なSIMD(積和)演算である。このような
SIMD行列演算を行う積和演算回路においては、例え
ば、行列演算の引数をコピー或いはスワップさせる新た
なパス(手順)が必要となって処理性能の低下を来たして
いる。そこで、回路に大幅な変更を加えることなく、高
速にSIMD演算を行うことのできる積和演算回路の提
供が要望されている。
【0002】
【従来の技術】従来、例えば、2行2列の行列演算は、
下記の式f1のように表現され、それは後述するような
演算が行われるが、積と和の処理の順番により、形式1
と形式2の2つに分類することができる。
【0003】
【数1】
【0004】ここで、上記の行列演算を、同時に実行す
ることが可能な2つの積和演算器を用いて、2つの演算
を並列に行う1つのSIMD命令で演算する場合を考え
る。一般的な、3オペランド形式の2並列SIMD積和
演算命令は、次のように定義される。 ニーモニック(例) dmac RSi,RSj,ACCk 行われる演算: ACCk =RSi ×RSj +ACCk ACCk+1 =RSi+1 ×RSj+1 +ACCk+1 ここで、行列演算した結果である、式1の左辺(X,
Y)を、2本のアキュムレータACC0およびACC1に
それぞれ格納するものとする。
【0005】上記の形式1による演算の様子を、下記の
式f2に示す。
【0006】
【数2】
【0007】まず、ステップ1ではxを2つ用意し
((RSj,RSj+1)=(x,x))、行列の1列目の
係数(a0,a1)(=(RSi,RSi+1))とそれ
ぞれ乗算を行い、アキュムレータ(acc0,acc1)
(=(ACCk,ACCk+1))に格納する。このとき、
アキュムレータacc0およびacc1が共にゼロなら
ば、乗算結果とアキュムレータの値を加算し、アキュム
レータに格納してもよい(積和演算)。
【0008】次に、ステップ2ではyを2つ用意し
((RSj,RSj+1)=(y,y))、行列の2列目の
係数(b0,b1)(=(RSi,RSi+1))とそれぞれ
乗算を行い、アキュムレータ(acc0,acc1)(=
(ACCk,ACCk+1))の値とそれぞれ加算して、ア
キュムレータ(acc0,acc1)にそれぞれ格納する
(積和演算)。
【0009】次に、形式2による演算の様子を、下記の
式f3に示す。
【0010】
【数3】
【0011】まず、ステップ1において、(a0,b1)
と(x,y)の内積を計算して、アキュムレータ(ac
c0,acc1)に格納する。このとき、acc0,acc1
が共にゼロならば、乗算結果とアキュムレータの値を加
算して、アキュムレータに格納してもよい(積和演
算)。次に、ステップ2において、(x,y)を(y,
x)と入れ替えて、(b0,a1)と内積を計算し、アキ
ュムレータ(acc0,acc1)の値とそれぞれ加算し
て、アキュムレータ(acc0,acc1)にそれぞれ格
納する(積和演算)。
【0012】
【発明が解決しようとする課題】ところで、従来技術に
おいて、上述した式f1の行列演算を実行するために
は、引数(x,y)をコピー或いは並び替える必要があ
った。図1は一般的なSISD(Single Instruction S
tream-Single Data Stream)積和演算の手順の一例を示
す図であり、図2は2並列のSISD積和演算の手順の
一例を示す図であり、そして、図3は従来の積和演算に
おける課題を説明するための図である。なお、図2で
は、アキュムレータACC0とACC1との選択は、実行
する積和演算命令に予め定められている。
【0013】積和演算は、図1に示すような手順で行わ
れが、前述した2行2列の行列演算は、図3に示される
ような手順で行われる。すなわち、図3(a)に示され
るように、形式1のステップ2では、引数yをコピーし
て2つの同じ引数(y,y)と係数(b0,b1)との乗
算を行い、また、図3(b)に示されるように、形式2
のステップ2では、ステップ1の引数(x,y)を
(y,x)とスワップして係数(b0,a1)との乗算を
行う。従って、図3(a)に示す形式1では、引数をコ
ピーする新たな手順(パス)が必要になり、また、図3
(b)に示す形式2では、引数をスワップさせる新たな
パスが必要になり、これらの新たな手順が行列演算のオ
ーバーヘッドになる。
【0014】オーバーヘッドをコピー或いはスワップさ
せる手順を設けて処理しようとすると、その手順を実現
するための何らかの命令を実行する時間(ステップ)が
必要になり、行列演算のレイテンシの増加を招いて積和
演算回路(半導体集積回路装置:プロセッサ)全体の処
理性能を低下させることになる。また、オーバーヘッド
の物理的な対処としては、図3(a)および図3(b)
に示される新たなパス(新規パス)が必要になり、その
結果、データパスの論理段数や配線の増加といった物量
(ハード面)の増大を来たすことにもなる。さらに、新
規パスを選択するためのデコード手段(デコーダおよび
制御信号等)が必要になり、そして、命令実行開始時に
必要な制御信号を生成するための論理段数も増加して、
結果的に積和演算回路(半導体集積回路装置:プロセッ
サ)の最大動作周波数を低下させることにもなる。
【0015】本発明の目的は、上述した従来の積和演算
技術に鑑み、最大動作周波数の低下、レイテンシの増加
および回路の大幅な変更を必要とせず、高速に行列演算
が実行可能なSIMD演算を行うことのできる積和演算
回路の提供にある。
【0016】
【課題を解決するための手段】本発明の第1の形態によ
れば、2n並列(ここで、nは自然数)の積和演算が同
時に実行可能なSIMD積和演算方法が提供される。S
IMD積和演算で各積和演算回路に割り当てるアキュム
レータアドレスの並びは、2m個(ここで、m=0,
…,log2n)のアキュムレータを一組とし、隣接す
る2p−1番目と2p番目(ここで、p=1,…,n)
のアキュムレータの組をそのアキュムレータの組の中に
おけるアキュムレータアドレスの順番は変えずに、各ア
キュムレータの組が入れ替えられ、SIMD積和演算が
実行される。
【0017】本発明の第2の形態によれば、同時に動作
可能な2n個(ここで、nは自然数)の積和演算ユニッ
トを有するSISD積和演算回路において、該積和演算
ユニットをSIMD積和演算に流用するSIMD積和演
算方法が提供される。各積和演算ユニットに割り当てら
れるアキュムレータアドレスの並びは、2m個(ここ
で、m=0,…,log2n)のアキュムレータを一組
とし、隣接する2p−1番目と2p番目(ここで、p=
1,…,n)のアキュムレータの組をそのアキュムレー
タの組の中におけるアキュムレータアドレスの順番は変
えずに、各アキュムレータの組が入れ替えられ、SIM
D積和演算が実行される。
【0018】本発明の第3の形態によれば、同時に動作
可能な2n個(ここで、nは自然数)の積和演算ユニッ
トを有し、各積和演算ユニットが乗算器、加算器および
アキュムレータを備える積和演算回路が提供される。各
積和演算ユニットに割り当てられるアキュムレータアド
レスの並びは、2m個(ここで、m=0,…,log
2n)のアキュムレータを一組とし、隣接する2p−1
番目と2p番目(ここで、p=1,…,n)のアキュム
レータの組をそのアキュムレータの組の中におけるアキ
ュムレータアドレスの順番は変えずに、各アキュムレー
タの組が入れ替えられ、SIMD積和演算が実行され
る。
【0019】図4は本発明および従来の行列演算処理を
比較して示すタイムチャートである。図4に示されるよ
うに、2行2列の行列演算を行う場合、コピー或いはス
ワップさせる手順を設けて対処すると、その手順を実現
するための何らかの命令を実行する時間が必要となっ
て、前述した形式1(従来の行列演算処理)では、1/
2がオーバーヘッドになり、また、前述した形式2で
は、1/3がオーバーヘッドになる。これに対して、本
発明では、そのようなオーバーヘッドは存在せず、行列
演算のレイテンシを増加させることなく、全体の処理性
能を維持することができる。
【0020】まず、本発明において、一般的なSIMD
演算とは使用するアキュムレータが逆になる次のような
SIMD命令を定義する。 ニーモニック(例)dmacx RSi,RSj,ACC
k 行われる演算: ACCk+1 =RSi ×RSj +ACCk+1 ACCk =RSi+1 ×RSj+1 +ACCk となる。これにより、前述した形式2において必要であ
った(x,y)のスワップ操作が不要になる。
【0021】具体的に、まず、ステップ1で(a0,b
1)と(x,y)の内積を計算してアキュムレータ(a
cc0,acc1)に格納する。ここで、acc0,ac
c1が共にゼロならば、乗算結果とアキュムレータの値
とを加算して、アキュムレータに格納しても良い(積和
演算)。次に、ステップ2において、(a1,b0)と
(x,y)の内積を計算し、アキュムレータ(acc
1,acc0)の値とそれぞれ加算して、アキュムレータ
(acc1,acc0)にそれぞれ格納する(積和演
算)。
【0022】これにより、前述した形式2で必要であっ
た引数(x,y)をスワップさせるオーバーヘッドが無
くなって図3に示すような新規パスが不要になり、図4
に示されるように、オーバーヘッドを無くした行列演算
を実行することが可能になる。ここで、本発明のアキュ
ムレータをスワップさせるために生じる弊害は、以下に
示すように、軽微または無視できる程度のものであり、
実質的な問題はない。
【0023】前述したように、並列に実行可能な2つの
積和演算回路(積和演算ユニット)は、図2のように構
成される。まず、アキュムレータアドレスをスワップさ
せるために必要な命令デコードについて述べる。積和演
算において、アキュムレータに格納された値が加算され
るのは、乗算の演算開始後であり、アキュムレータアド
レスをスワップさせるために必要な命令デコードには、
十分な時間が与えられるため、そのアキュムレータのス
ワップによる弊害は無視することができる。
【0024】次に、データパスについて述べる。2つの
積和演算器から、どちらのアキュムレータにもアクセス
可能な場合、本発明を実行するに必要なデータパスは既
に備わっているため、アキュムレータアドレスを制御す
るだけで本発明を実行することができ、そのデータパス
による弊害も無視することができる程度のものである。
【0025】すなわち、後述する図5および図6の比較
から明らかなように、第1の積和演算器(131;23
1)からは両方のアキュムレータ(141,142;2
41,242)にアクセス可能であり、且つ、第2の積
和演算器(132;232)からは第2のアキュムレー
タ(142;242)にアクセス可能(すなわち、第2
の積和演算器(132;232)はSIMD命令専用の
積和演算器)である場合、本発明を適用することによ
り、第2の積和演算器(232)から第1のアキュムレ
ータ(241)へ接続されるパスを新設することにな
る。ただし、第2の積和演算器(232)の論理段数
は、第1の積和演算器(231)の論理段数と変わらな
いため、新規パスの新設による弊害は軽微である。
【0026】なお、積和演算器とアキュムレータが1対
1の場合には、一方の積和演算器から他方のアキュムレ
ータへのパスを新設する必要が生じるため、セレクタ1
段の論理段数の増加を招くことになる。しかしなら、こ
の場合にも、セレクタ制御信号の生成には時間的余裕が
あるため、適用し得るデータパス回路(高速なデータパ
ス回路)は容易に構成することが可能であり、その弊害
は軽微であるといえる。
【0027】以上の説明は、2並列のSIMD命令につ
いて述べたが、これらは、2n並列のSIMD命令に拡
張することが可能である。2n行の行列において、2m
個(m=0,…,log2n)のACC(アキュムレー
タ)を一組と考え、隣接する2p−1番目と2p番目
(p=1,…,n)のACCの組を、その組の中におけ
るACCの順番は変えずに、全て入れ替えさせる操作
(スワップさせる操作)をfm_1( )と定義し、ス
ワップさせない操作をfm_0( )と定義する。
【0028】従って、2並列では、 dmac=f0_0(dmac),dmacx=f0_
1(dmac) となる。また、並列度2nのSIMD命令は、一般的
に、次のように表される。 ニーモニック(例)nmac RSi,RSj,ACCk 行われる演算: ACCk =RSi ×RSj +ACCk ACCk+1 =RSi+1 ×RSj+1 +ACCk+1 : ACCk+n-1=RSi+n-1×RSj+n-1+ACCk+n-1 従って、本発明で対象とするSIMD命令は、次のよう
な、[A]nを、操作Aをn回再帰的に繰り返すと定義
すると、 [fm_1(nmac)]p(m=log2n−p;p
=1,…,log2n) のように表される。
【0029】これらを用いることで、ハード構成の観点
からも、また、実行性能の観点からも、オーバーヘッド
無しに行列演算を行うことが可能になる。本発明は、A
CCをスワップさせるものであって、その対象となるS
IMD積和演算を選ばない。例えば、次に示すような、
SIMD積和演算命令に対しても適用し得る。すなわ
ち、形式2の積和演算器構成を2つ備えた4並列SIM
D積和演算命令(nmacx)を考えると、 ニーモニック(例)nmacx RSi,RSj,ACC
k 行われる演算: ACCk =RSi ×RSj+1 +ACCk ACCk+1 =RSi+1 ×RSj +ACCk+1 ACCk+2 =RSi+2 ×RSj+3 +ACCk+n-1 ACCk+3 =RSi+3 ×RSj+2 +ACCk+n-1 この場合、次のような、f1_1(nmacx)構成の
命令を定義することができる。
【0030】行われる演算: ACCk+1 =RSi ×RSj+1 +ACCk+1 ACCk =RSi+1 ×RSj +ACCk ACCk+3 =RSi+2 ×RSj+3 +ACCk+3 ACCk+2 =RSi+3 ×RSj+2 +ACCk+2 従って、nmac,nmacx,f1_1(nma
c),f1_1(nmacx)を実行することで、オー
バーヘッド無しに、4行4列の行列演算ができることに
なる。
【0031】以上は、3オペランド形式を例として述べ
たが、本発明は、複数のアキュムレータを持つハード構
成であれば、どのようなオペランド方式であって適用す
ることが可能である。
【0032】
【発明の実施の形態】以下、本発明に係るSIMD演算
を行う積和演算回路およびこれを備えた半導体集積回路
装置の実施例を、従来技術および関連技術と比較しつ
つ、添付図面を参照して詳述する。図5は従来技術に係
るSIMD積和演算回路の一例を示すブロック図であ
る。図5において、参照符号110はメモリ、120は
アドレスデコーダ(SIMD対応アドレスデコーダ)、
131および132は積和演算回路(積和演算ユニッ
ト)、141および142はアキュムレータ、そして、
150および160はセレクタを示している。
【0033】第1の積和演算回路(第1の積和演算ユニ
ット)131は、SISD積和演算とSIMD積和演算
の両方を行うことができ、また、第2の積和演算回路
(第2の積和演算ユニット)132は、SIMD積和演
算専用のものである。まず、SIMD積和演算が実行さ
れる場合、第1の積和演算回路131に供給されるソー
スデータをメモリ110から読み出すと共に、そのソー
スデータアドレスに『1』インクリメントしたアドレス
から第2の積和演算回路132に供給されるソースデー
タをメモリ110から読み出す。この『1』インクリメ
ントの処理は、第1の積和演算回路131に供給される
ソースデータのアドレスを偶数に制限することで、実際
に行う代わりにアドレスの最下位ビットを『1』に差し
換え、これにより高速な読み出しを実現することができ
る。
【0034】メモリ110から読み出されたソースデー
タは、それぞれ積和演算回路131および132に供給
される。ここで、積和演算回路(131,132)のソ
ースデータ3(ソース3)は、アキュムレータ(14
1,142)から読み出される。すなわち、第1の積和
演算器回路131には、SIMD対応アドレスデコーダ
120からのアドレス制御信号S11により制御される
セレクタ160を介して第1のアキュムレータ141
(ACC1)および第2のアキュムレータ142(AC
C2)からのいずれのソースデータ3も読み出し可能と
され、また、第2の積和演算器回路132には、第2の
アキュムレータ142からのソースデータ3が読み出さ
れる。
【0035】第1の積和演算回路131の演算結果は、
第1のアキュムレータ141に格納されると共に、SI
MD対応アドレスデコーダ120から出力されるアドレ
ス制御信号S12により制御されるセレクタ150を介
して第2の積和演算回路132の演算結果と選択的に第
2のアキュムレータ142に格納される。以上のような
動作により、SIMD積和演算が実行される。
【0036】図6は本発明に係るSIMD積和演算回路
の一実施例を示すブロック図である。本実施例のSIM
D積和演算回路は、上述した従来のSIMD積和演算回
路に対してわずかな変更を加えるだけで構成される。す
なわち、図5および図6の比較から明らかなように、本
実施例のSIMD積和演算回路は、図5に示す従来のS
IMD積和演算回路に対して第2の積和演算回路232
(132)から第1のアキュムレータ241(141)
に演算結果を書き込むデータパスDP21およびセレク
タ251を設けると共に、第1のアキュムレータ241
から第2の積和演算回路232にソースデータ3を供給
するデータパスDP22およびセレクタ262を設ける
ようになっている。ここで、セレクタ251はSIMD
対応アドレスデコーダ220からのアドレス制御信号S
23により制御され、また、セレクタ262はSIMD
対応アドレスデコーダ120からのアドレス制御信号S
24により制御されるようになっている。なお、図5に
おけるメモリ110,第1の積和演算回路131,第2
のアキュムレータ142,SIMD対応アドレスデコー
ダ120,セレクタ150および160は、それぞれ図
6におけるメモリ210,第1の積和演算回路231,
第2のアキュムレータ242,SIMD対応アドレスデ
コーダ220,セレクタ252および261に対応す
る。
【0037】そして、本実施例では、積和演算を行う際
に、SIMD対応アドレスデコーダ220に対して、通
常のSIMD積和演算時に生成されるアドレスとはスワ
ップした関係にあるアドレスを生成させるためのスワッ
プ指示信号を供給するようになっている。なお、スワッ
プ指示信号は、例えば、命令をデコードするデコーダに
より生成される。
【0038】このように、図6に示す本実施例の積和演
算回路は、図5に示す従来のSIMD積和演算回路に対
して上述したような変更を加えることで、以下のような
演算を実行する。まず、メモリ210からのソースデー
タ(ソース1,2)を読み出し、第1および第2の積和
演算回路231,232に供給するまでは、図5に示す
従来のSIMD積和演算と同じである。
【0039】第1の積和演算器回路231には、SIM
D対応アドレスデコーダ220からのアドレス制御信号
S21で制御されるセレクタ261により、第2のアキ
ュムレータ242からデータが読み出され、また、第2
の積和演算回路232には、SIMD対応アドレスデコ
ーダ220からのアドレス制御信号S24で制御される
セレクタ262により、第1のアキュムレータ241か
らデータが読み出される。
【0040】第1の積和演算回路231の演算結果は、
SIMD対応アドレスデコーダ220からのアドレス制
御信号S22で制御されるセレクタ252により、第2
のアキュムレータ242に格納され、また、第2の積和
演算回路232の演算結果は、SIMD対応アドレスデ
コーダ220からのアドレス制御信号S23で制御され
るセレクタ251により、第1のアキュムレータ241
に格納される。
【0041】以上のように、本第1実施例は、わずかな
回路の変更だけで、オーバーヘッド無しに高速に積和演
算をすることができるSIMD積和演算回路を実現する
ことができる。図7は関連技術に係る2並列のSISD
積和演算回路の一例を示すブロック図であり、2つのS
ISD積和演算が並列に実行可能な積和演算回路を有す
るデータ処理装置を示している。
【0042】各アキュムレータ341,342は、第1
の積和演算回路331および第2の積和演算回路332
のいずれからもソースデータを読み出し、また、その各
演算結果をいずれの積和演算回路331,332にも書
き込むことができるようになっている。従って、図7に
示す積和演算回路は、前述した図6の第1実施例におけ
るデータパス構造を既に持っていることになる。ただ
し、この図7に示す関連技術の積和演算回路は、2並列
のSISD積和演算を行うためだけのものであり、SI
MD積和演算を実行することは考慮されていない。
【0043】すなわち、図7に示す積和演算回路によ
り、次のような2並列のSISD積和演算が実行され
る。まず、第1の積和演算回路331に供給されるソー
スデータをメモリ310から読み出すと共に、第2の積
和演算回路332に供給されるソースデータをメモリ3
10から読み出す。メモリ310から読み出されたソー
スデータは、それぞれ積和演算回路331,332に供
給される。
【0044】各積和演算回路のソースデータ3(ソース
3)は、アキュムレータ341,342から読み出され
る。ここで、第1の積和演算器回路331には、アキュ
ムレータ341と342のいずれからも読み出し可能な
らば、アドレスデコーダ320からは、アドレス制御信
号S31により第1のアキュムレータ341からデータ
が読み出され、また、第2の積和演算回路332には、
第2のアキュムレータ342からデータが読み出され
る。
【0045】第1の積和演算器回路331には、アドレ
スデコーダ320から出力されるアドレス制御信号S3
1によりアキュムレータ341または342からデータ
が読み出され、第2の積和演算回路332には、アドレ
スデコーダ320から出力されるアドレス制御信号S3
4によりアキュムレータ341または342からデータ
が読み出される。
【0046】第1の積和演算回路331の演算結果は、
アドレスデコーダ320から出力されるアドレス制御信
号S32によりアキュムレータ341または342に格
納され、また、第2の積和演算回路332の演算結果
は、アドレスデコーダ320から出力されるアドレス制
御信号S33によりアキュムレータ341または342
に格納される。このとき、同じアキュムレータに同時に
書き込まれることはない。
【0047】以上のようにして、2並列のSISD積和
演算が実行されるが、この2並列積和演算回路を本発明
のSIMD積和演算が実行できるようにしたものが図8
である。すなわち、図8は本発明に係るSIMD積和演
算回路の他の実施例を示すブロック図である。まず、S
ISD積和演算実行時においては、第2の積和演算回路
432に供給されるソースデータ(ソース1,2)のア
ドレスを、SIMD積和演算実行時に第2の積和演算回
路432に供給されるソースデータのアドレス(すなわ
ち、第1の積和演算回路431に供給されるソースデー
タのアドレスに1インクリメントしたもの)にセレクタ
471および472を用いて差し替える。このセレクタ
471,472を制御するための信号の生成は、次のよ
うにすることで、特別なデコードを必要とすることなく
高速にセレクタを制御することが可能になる。
【0048】SIMD積和演算を実行する際には、第2
の積和演算回路432を使用したSISD積和演算を実
行不可にする。これにより、SISD積和演算を実行し
ないときには、SIMD積和演算実行時に第2の積和演
算回路432に供給されるソースデータのアドレスを選
択するようにセレクタ371,472を構成するだけで
良いことになる。これは、アドレスだけでなく、第2の
積和演算回路432を動作させるための制御信号を生成
する命令デコーダに供給されるあらゆる資源に対して、
応用可能である。すなわち、SISD積和演算を行うか
どうかのバリッドだけで、SISD積和演算回路の全て
を、SISD積和演算回路への弊害を最小限にして、且
つ、高速にSIMD積和演算実行時に流用することが可
能になる。
【0049】以上のようにして、積和演算回路にソース
データ(ソース1,2)を供給した後、SIMD対応ア
ドレスデコーダ420により、アキュムレータ441,
442に格納されたソースデータ(ソース3)を各積和
演算回路431,432に供給し、その各積和演算結果
を、アキュムレータ441,442にそれぞれ格納す
る。
【0050】図9は図8に示すSIMD積和演算回路の
動作を説明するための図である。なお、次の表1は、ア
キュムレータのアドレス(ACCアドレス)入れ替え真
理値表(2×2)を示している。
【0051】
【表1】
【0052】まず、通常のSIMD積和演算(ノーマ
ル)では、制御信号S41〜S44により、セレクタ4
51および462はパス『1』を選択し且つセレクタ4
52および461はパス『0』を選択し、第1の積和演
算回路431は第1のアキュムレータ441(ACC
1)に接続され且つ第2の積和演算回路432は第2の
アキュムレータ442(ACC2)に接続されるように
制御される。
【0053】一方、入れ替え時のSIMD積和演算(ス
ワップ)では、制御信号S41〜S44により、セレク
タ451および462はパス『0』を選択し且つセレク
タ452および461はパス『1』を選択し、第1の積
和演算回路431は第2のアキュムレータ442(AC
C2)に接続され且つ第2の積和演算回路432は第1
のアキュムレータ441(ACC1)に接続されるよう
に制御される。
【0054】このように、図8および図9に示す本実施
例によれば、既存の回路(図7に示すような関連技術の
積和演算回路)に対して大きな変更を加えることなく、
オーバーヘッド無しに行列演算が実行可能なSIMD積
和演算回路を実現することができる。図10は本発明に
係るSIMD積和演算回路が適用されるプロセッサの全
体構成を示すブロック図であり、例えば、VLIW(Ve
ry Long Instruction Word:長命令語/並列実行型)ア
ーキテクチャを採用した組み込み用アプリケーション特
化型のプロセッサであり、上述した本発明に係るSIM
D積和演算回路が半導体チップに形成された半導体集積
回路装置の一例を示すものである。
【0055】図10において、参照符号601はICE
(in-circuit emulator)装置、602はシンクロナス
DRAM(SDRAM)、603はバスブリッジ、60
4はローカルバス、そして、500はプロセッサ(半導
体集積回路装置)を示している。プロセッサ500は、
デバッグサポートユニット501、バスユニット50
2、クロックジェネレータ503、ストレージユニット
504、整数演算ユニット505、および、浮動小数点
/メディア処理演算ユニット506を備えている。バス
ユニット502は、SDRAM602とのインターフェ
ースを取るSDRAM・I/F部521、バスブリッジ
603を介してローカルバス604とのインターフェー
スを取るローカルバスI/F部522、並びに、ストレ
ージユニット504とデバッグサポートユニット50
1,SDRAM・I/F部521およびローカルバスI
/F部522との間に設けられたバスインターフェース
部523を備えている。ここで、デバッグサポートユニ
ット501は、ICE装置601とICE接続され、デ
バッグをサポートするものである。
【0056】ストレージユニット504は、命令キャッ
シュ541およびデータキャッシュ542を備えてい
る。整数演算ユニット505は、命令キャッシュ541
からの命令を一時的に保持する命令フェッチ部551、
命令フェッチ部551からの命令(例えば、VLIW命
令)を整数演算(I)および浮動小数点/メディア処理
演算(F/M)に分けて制御するパイプライン制御部5
52、整数演算用パイプライン553、および、ジェネ
ラル・レジスタファイル部(RAM)554を備えてい
る。
【0057】浮動小数点/メディア処理演算ユニット5
06は、フローティング・レジスタファイル部(RA
M)561、浮動小数点演算用パイプライン562、お
よび、メディア処理用パイプライン563を備えてい
る。ここで、浮動小数点演算用パイプライン562は、
例えば、2つのSIMD積和演算回路を備え、また、メ
ディア処理用パイプライン563は、例えば、4つのS
IMD積和演算回路を備えて構成されている。上述した
本発明に係るSIMD積和演算回路は、例えば、このよ
うな浮動小数点演算用パイプライン562およびメディ
ア処理用パイプライン563に適用される。
【0058】なお、本発明に係るSIMD積和演算回路
が適用されるプロセッサ(半導体集積回路装置)500
は、例えば、複数の32ビット整数演算ユニット(50
5:例えば、2個)、浮動小数点/メディア処理演算ユ
ニット(506:例えば、それぞれ2個)を備え(計6
個の演算ユニット)、整数演算ユニット505により高
性能な信号処理を行い、また、メディア処理演算ユニッ
ト(浮動小数点/メディア処理演算ユニット506)に
より画像などの大容量連続データ(メディアデータ)の
処理を行うことができる。
【0059】
【発明の効果】以上、詳述したように、本発明によれ
ば、回路に大幅な変更を加えることなく、高速にSIM
D行列演算を行うことのできる積和演算回路および半導
体集積回路装置を提供することができる。
【図面の簡単な説明】
【図1】一般的なSISD積和演算の手順の一例を示す
図である。
【図2】2並列のSISD積和演算の手順の一例を示す
図である。
【図3】従来の積和演算における課題を説明するための
図である。
【図4】本発明および従来の行列演算処理を比較して示
すタイムチャートである。
【図5】従来技術に係るSIMD積和演算回路の一例を
示すブロック図である。
【図6】本発明に係るSIMD積和演算回路の一実施例
を示すブロック図である。
【図7】関連技術に係る2並列のSISD積和演算回路
の一例を示すブロック図である。
【図8】本発明に係るSIMD積和演算回路の他の実施
例を示すブロック図である。
【図9】図8に示すSIMD積和演算回路の動作を説明
するための図である。
【図10】本発明に係るSIMD積和演算回路が適用さ
れるプロセッサの全体構成を示すブロック図である。
【符号の説明】
110,210,310,410…メモリ 120,220,420…SIMD対応アドレスデコー
ダ 320…アドレスデコーダ 131,231,331,431…第1の積和演算回路
(第1の積和演算ユニット) 132,232,332,432…第2の積和演算回路
(第2の積和演算ユニット) 141,241,341,441…第1のアキュムレー
タ(ACC1) 142,242,342,442…第2のアキュムレー
タ(ACC2) 150;251,252;351,352;451,4
52;160;261,262;361,362;46
1,462…セレクタ 500…プロセッサ(半導体集積回路装置) 501…デバッグサポートユニット 502…バスユニット 503…クロックジェネレータ 504…ストレージユニット 505…整数演算ユニット 506…浮動小数点/メディア処理演算ユニット 601…ICE装置 602…シンクロナスDRAM(SDRAM) 603…バスブリッジ 604…ローカルバス

Claims (10)

    【特許請求の範囲】
  1. 【請求項1】 2n並列(ここで、nは自然数)の積和
    演算が同時に実行可能なSIMD積和演算方法であっ
    て、 SIMD積和演算で各積和演算回路に割り当てるアキュ
    ムレータアドレスの並びを、2m個(ここで、m=0,
    …,log2n)のアキュムレータを一組とし、隣接す
    る2p−1番目と2p番目(ここで、p=1,…,n)
    のアキュムレータの組を当該アキュムレータの組の中に
    おけるアキュムレータアドレスの順番は変えずに、該各
    アキュムレータの組を入れ替えることでSIMD積和演
    算を実行するようにしたことを特徴とするSIMD積和
    演算方法。
  2. 【請求項2】 同時に動作可能な2n個(ここで、nは
    自然数)の積和演算ユニットを有するSISD積和演算
    回路において、 前記積和演算ユニットをSIMD積和演算に流用し、該
    各積和演算ユニットに割り当てられるアキュムレータア
    ドレスの並びを、2m個(ここで、m=0,…,log2
    n)のアキュムレータを一組とし、隣接する2p−1番
    目と2p番目(ここで、p=1,…,n)のアキュムレ
    ータの組を当該アキュムレータの組の中におけるアキュ
    ムレータアドレスの順番は変えずに、該各アキュムレー
    タの組を入れ替えることで積和演算を実行するようにし
    たことを特徴とするSIMD積和演算方法。
  3. 【請求項3】 請求項1または2に記載のSIMD積和
    演算方法において、SIMD積和演算を実行するために
    アキュムレータアドレスを入れ替えることを特徴とする
    SIMD積和演算方法。
  4. 【請求項4】 同時に動作可能な2n個(ここで、nは
    自然数)の積和演算ユニットを有し、該各積和演算ユニ
    ットは乗算器、加算器およびアキュムレータを備える積
    和演算回路であって、 前記各積和演算ユニットに割り当てられるアキュムレー
    タアドレスの並びを、2m個(ここで、m=0,…,l
    og2n)のアキュムレータを一組とし、隣接する2p
    −1番目と2p番目(ここで、p=1,…,n)のアキ
    ュムレータの組を当該アキュムレータの組の中における
    アキュムレータアドレスの順番は変えずに、該各アキュ
    ムレータの組を入れ替えることで積和演算を実行するよ
    うにしたことを特徴とするSIMD積和演算回路。
  5. 【請求項5】 請求項4に記載のSIMD積和演算回路
    において、さらに、前記各積和演算ユニットに対して設
    けられ前記各アキュムレータのデータを切り替えて供給
    するセレクタと、該各アキュムレータに対して設けられ
    該各積和演算ユニットの演算結果を切り替えて格納する
    セレクタとを備え、該各セレクタを制御して該各積和演
    算ユニットに所定のSIMD積和演算を実行させるよう
    にしたことを特徴とするSIMD積和演算回路。
  6. 【請求項6】 請求項5に記載のSIMD積和演算回路
    において、前記各セレクタは、スワップ指示信号が供給
    されたアドレスデコーダからの制御信号により切り替え
    制御されることを特徴とするSIMD積和演算回路。
  7. 【請求項7】 請求項4に記載のSIMD積和演算回路
    において、さらに、前記2n個の積和演算ユニットにソ
    ースデータを供給するメモリに対して、SISD積和演
    算用とSIMD積和演算用のソースデータアドレスを切
    り替えて入力するセレクタを備えることを特徴とするS
    IMD積和演算回路。
  8. 【請求項8】 請求項7に記載のSIMD積和演算回路
    において、前記各セレクタは、前記積和演算ユニットの
    いずれかに対するバリッド信号により切り替え制御され
    ることを特徴とするSIMD積和演算回路。
  9. 【請求項9】 請求項4に記載のSIMD積和演算回路
    において、さらに、前記2n個の積和演算ユニットを制
    御するために必要な制御信号を生成する命令デコーダに
    供給される資源を、SISD積和演算用とSIMD演算
    用とに切り替えて使用するセレクタを備えることを特徴
    とするSIMD積和演算回路。
  10. 【請求項10】 請求項4〜9のいずれか1項に記載の
    SIMD積和演算回路が、半導体チップに形成されてい
    ることを特徴とする半導体集積回路装置。
JP2001024153A 2001-01-31 2001-01-31 Simd積和演算方法、積和演算回路、および、半導体集積回路装置 Expired - Lifetime JP3935678B2 (ja)

Priority Applications (4)

Application Number Priority Date Filing Date Title
JP2001024153A JP3935678B2 (ja) 2001-01-31 2001-01-31 Simd積和演算方法、積和演算回路、および、半導体集積回路装置
US09/945,697 US7043519B2 (en) 2001-01-31 2001-09-05 SIMD sum of product arithmetic method and circuit, and semiconductor integrated circuit device equipped with the SIMD sum of product arithmetic circuit
DE60143469T DE60143469D1 (de) 2001-01-31 2001-09-05 Arithmetische Schaltung und Verfahren zur Produktsummenberechnung
EP01307538A EP1229438B1 (en) 2001-01-31 2001-09-05 Sum of product arithmetic circuit and method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2001024153A JP3935678B2 (ja) 2001-01-31 2001-01-31 Simd積和演算方法、積和演算回路、および、半導体集積回路装置

Publications (2)

Publication Number Publication Date
JP2002229970A true JP2002229970A (ja) 2002-08-16
JP3935678B2 JP3935678B2 (ja) 2007-06-27

Family

ID=18889336

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2001024153A Expired - Lifetime JP3935678B2 (ja) 2001-01-31 2001-01-31 Simd積和演算方法、積和演算回路、および、半導体集積回路装置

Country Status (4)

Country Link
US (1) US7043519B2 (ja)
EP (1) EP1229438B1 (ja)
JP (1) JP3935678B2 (ja)
DE (1) DE60143469D1 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010539593A (ja) * 2007-09-13 2010-12-16 フリースケール セミコンダクター インコーポレイテッド 重複オペランドを使用したsimdの内積演算
JP2022506418A (ja) * 2018-10-31 2022-01-17 アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド 部分行列の順序付けを伴う行列乗算器

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6670895B2 (en) * 2002-05-01 2003-12-30 Analog Devices, Inc. Method and apparatus for swapping the contents of address registers
US7275147B2 (en) 2003-03-31 2007-09-25 Hitachi, Ltd. Method and apparatus for data alignment and parsing in SIMD computer architecture
US20060224652A1 (en) * 2005-04-05 2006-10-05 Nokia Corporation Instruction set processor enhancement for computing a fast fourier transform
US8478969B2 (en) * 2010-09-24 2013-07-02 Intel Corporation Performing a multiply-multiply-accumulate instruction
US10747501B2 (en) 2017-08-31 2020-08-18 Qualcomm Incorporated Providing efficient floating-point operations using matrix processors in processor-based systems
WO2020046642A1 (en) 2018-08-31 2020-03-05 Flex Logix Technologies, Inc. Multiplier-accumulator circuit, logic tile architecture for multiply-accumulate and ic including logic tile array

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5179531A (en) * 1990-04-27 1993-01-12 Pioneer Electronic Corporation Accelerated digital signal processor
EP0466997A1 (en) 1990-07-18 1992-01-22 International Business Machines Corporation Improved digital signal processor architecture
CA2073516A1 (en) * 1991-11-27 1993-05-28 Peter Michael Kogge Dynamic multi-mode parallel processor array architecture computer system
SG52303A1 (en) 1993-12-20 1998-09-28 Motorola Inc Arithmetic engine
KR0150350B1 (ko) * 1994-05-10 1998-10-15 모리시다 요이치 직교변환 프로세서
US5442580A (en) * 1994-05-25 1995-08-15 Tcsi Corporation Parallel processing circuit and a digital signal processer including same
US5801975A (en) * 1996-12-02 1998-09-01 Compaq Computer Corporation And Advanced Micro Devices, Inc. Computer modified to perform inverse discrete cosine transform operations on a one-dimensional matrix of numbers within a minimal number of instruction cycles
US5941940A (en) * 1997-06-30 1999-08-24 Lucent Technologies Inc. Digital signal processor architecture optimized for performing fast Fourier Transforms
US6530014B2 (en) * 1997-09-08 2003-03-04 Agere Systems Inc. Near-orthogonal dual-MAC instruction set architecture with minimal encoding bits
US6029267A (en) * 1997-11-25 2000-02-22 Lucent Technologies Inc. Single-cycle, soft decision, compare-select operation using dual-add processor
US6526430B1 (en) * 1999-10-04 2003-02-25 Texas Instruments Incorporated Reconfigurable SIMD coprocessor architecture for sum of absolute differences and symmetric filtering (scalable MAC engine for image processing)
US6711602B1 (en) * 2000-02-18 2004-03-23 Texas Instruments Incorporated Data processor with flexible multiply unit

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010539593A (ja) * 2007-09-13 2010-12-16 フリースケール セミコンダクター インコーポレイテッド 重複オペランドを使用したsimdの内積演算
JP2022506418A (ja) * 2018-10-31 2022-01-17 アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド 部分行列の順序付けを伴う行列乗算器

Also Published As

Publication number Publication date
US20020138535A1 (en) 2002-09-26
US7043519B2 (en) 2006-05-09
EP1229438A2 (en) 2002-08-07
JP3935678B2 (ja) 2007-06-27
DE60143469D1 (de) 2010-12-30
EP1229438A3 (en) 2005-03-23
EP1229438B1 (en) 2010-11-17

Similar Documents

Publication Publication Date Title
US7366881B2 (en) Method and apparatus for staggering execution of an instruction
US8595280B2 (en) Apparatus and method for performing multiply-accumulate operations
US7043627B2 (en) SIMD operation system capable of designating plural registers via one register designating field
CN107851013B (zh) 数据处理装置和方法
JP3985797B2 (ja) プロセッサ
JP2008117389A (ja) リコンフィギュラブルsimdベクトル処理システム
JP2006018413A (ja) プロセッサおよびパイプライン再構成制御方法
JP4801605B2 (ja) Simd型マイクロプロセッサ
JP3935678B2 (ja) Simd積和演算方法、積和演算回路、および、半導体集積回路装置
JPH03286332A (ja) デジタルデータ処理装置
US7953938B2 (en) Processor enabling input/output of data during execution of operation
JP2003241960A (ja) プロセッサ、該プロセッサにおける演算命令処理方法及び演算制御方法
JP5659772B2 (ja) 演算処理装置
US20050033939A1 (en) Address generation
KR100343459B1 (ko) 자바 프로세서
JP3088956B2 (ja) 演算装置
KR100246472B1 (ko) 디지탈신호처리기
JP2013114608A (ja) Vliwプロセッサと命令構造と命令実行方法
JP2011145886A (ja) 情報処理装置
JP2000250869A (ja) マルチプロセッサの制御方法およびその装置
JPH1063503A (ja) 演算処理装置及び演算処理方法
JPH01311339A (ja) 多バンクメモリ用並列アドレス生成回路
JP2008108049A (ja) プロセッサ回路およびその制御方法、ならびにプロセッサ回路の設計方法
JPH1139282A (ja) データ処理装置
JPH0520063A (ja) 集積回路マイクロプロセツサのアドレス計算装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20050902

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20070201

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20070220

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20070320

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

Ref document number: 3935678

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313111

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100330

Year of fee payment: 3

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100330

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110330

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110330

Year of fee payment: 4

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

S533 Written request for registration of change of name

Free format text: JAPANESE INTERMEDIATE CODE: R313533

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110330

Year of fee payment: 4

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110330

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120330

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130330

Year of fee payment: 6

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140330

Year of fee payment: 7

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313111

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

EXPY Cancellation because of completion of term