JP3935678B2 - Simd積和演算方法、積和演算回路、および、半導体集積回路装置 - Google Patents
Simd積和演算方法、積和演算回路、および、半導体集積回路装置 Download PDFInfo
- Publication number
- JP3935678B2 JP3935678B2 JP2001024153A JP2001024153A JP3935678B2 JP 3935678 B2 JP3935678 B2 JP 3935678B2 JP 2001024153 A JP2001024153 A JP 2001024153A JP 2001024153 A JP2001024153 A JP 2001024153A JP 3935678 B2 JP3935678 B2 JP 3935678B2
- Authority
- JP
- Japan
- Prior art keywords
- product
- sum operation
- simd
- accumulator
- sum
- 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
- 238000000034 method Methods 0.000 title claims description 27
- 239000004065 semiconductor Substances 0.000 title claims description 13
- 239000011159 matrix material Substances 0.000 description 25
- 238000010586 diagram Methods 0.000 description 18
- 101100268665 Caenorhabditis elegans acc-1 gene Proteins 0.000 description 12
- 230000000694 effects Effects 0.000 description 6
- 230000002411 adverse Effects 0.000 description 4
- 230000001343 mnemonic effect Effects 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 208000020990 adrenal cortex carcinoma Diseases 0.000 description 1
- 230000006870 function Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/544—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation
- G06F7/5443—Sum 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)
Description
【発明の属する技術分野】
本発明は、積和演算技術に関し、特に、SIMD演算を行うための方法および回路、並びに、SIMD積和演算回路を備えた半導体集積回路装置に関する。
近年、1つの命令で複数のデータを同時に演算するSIMD(Single Instruction Stream-Multiple 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)の内積を計算して、アキュムレータ(acc0,acc1)に格納する。このとき、acc0,acc1が共にゼロならば、乗算結果とアキュムレータの値を加算して、アキュムレータに格納してもよい(積和演算)。
次に、ステップ2において、(x,y)を(y,x)と入れ替えて、(b0,a1)と内積を計算し、アキュムレータ(acc0,acc1)の値とそれぞれ加算して、アキュムレータ(acc0,acc1)にそれぞれ格納する(積和演算)。
【0012】
【発明が解決しようとする課題】
ところで、従来技術において、上述した式f1の行列演算を実行するためには、引数(x,y)をコピー或いは並び替える必要があった。
図1は一般的なSISD(Single Instruction Stream-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積和演算方法が提供される。SIMD積和演算で各積和演算回路に割り当てるアキュムレータアドレスの並びは、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)のアキュムレータの組をそのアキュムレータの組の中におけるアキュムレータアドレスの順番は変えずに、各アキュムレータの組が入れ替えられ、SIMD積和演算が実行される。
【0018】
本発明の第3の形態によれば、同時に動作可能な2n個(ここで、nは自然数)の積和演算ユニットを有し、各積和演算ユニットが乗算器、加算器およびアキュムレータを備える積和演算回路が提供される。各積和演算ユニットに割り当てられるアキュムレータアドレスの並びは、2m個(ここで、m=0,…,log2n)のアキュムレータを一組とし、隣接する2p−1番目と2p番目(ここで、p=1,…,n)のアキュムレータの組をそのアキュムレータの組の中におけるアキュムレータアドレスの順番は変えずに、各アキュムレータの組が入れ替えられ、SIMD積和演算が実行される。
【0019】
図4は本発明および従来の行列演算処理を比較して示すタイムチャートである。
図4に示されるように、2行2列の行列演算を行う場合、コピー或いはスワップさせる手順を設けて対処すると、その手順を実現するための何らかの命令を実行する時間が必要となって、前述した形式1(従来の行列演算処理)では、1/2がオーバーヘッドになり、また、前述した形式2では、1/3がオーバーヘッドになる。これに対して、本発明では、そのようなオーバーヘッドは存在せず、行列演算のレイテンシを増加させることなく、全体の処理性能を維持することができる。
【0020】
まず、本発明において、一般的なSIMD演算とは使用するアキュムレータが逆になる次のようなSIMD命令を定義する。
ニーモニック(例)dmacx RSi,RSj,ACCk
行われる演算:
ACCk+1 =RSi ×RSj +ACCk+1
ACCk =RSi+1 ×RSj+1 +ACCk
となる。これにより、前述した形式2において必要であった(x,y)のスワップ操作が不要になる。
【0021】
具体的に、まず、ステップ1で(a0,b1)と(x,y)の内積を計算してアキュムレータ(acc0,acc1)に格納する。ここで、acc0,acc1が共にゼロならば、乗算結果とアキュムレータの値とを加算して、アキュムレータに格納しても良い(積和演算)。
次に、ステップ2において、(a1,b0)と(x,y)の内積を計算し、アキュムレータ(acc1,acc0)の値とそれぞれ加算して、アキュムレータ(acc1,acc0)にそれぞれ格納する(積和演算)。
【0022】
これにより、前述した形式2で必要であった引数(x,y)をスワップさせるオーバーヘッドが無くなって図3に示すような新規パスが不要になり、図4に示されるように、オーバーヘッドを無くした行列演算を実行することが可能になる。
ここで、本発明のアキュムレータをスワップさせるために生じる弊害は、以下に示すように、軽微または無視できる程度のものであり、実質的な問題はない。
【0023】
前述したように、並列に実行可能な2つの積和演算回路(積和演算ユニット)は、図2のように構成される。
まず、アキュムレータアドレスをスワップさせるために必要な命令デコードについて述べる。積和演算において、アキュムレータに格納された値が加算されるのは、乗算の演算開始後であり、アキュムレータアドレスをスワップさせるために必要な命令デコードには、十分な時間が与えられるため、そのアキュムレータのスワップによる弊害は無視することができる。
【0024】
次に、データパスについて述べる。2つの積和演算器から、どちらのアキュムレータにもアクセス可能な場合、本発明を実行するに必要なデータパスは既に備わっているため、アキュムレータアドレスを制御するだけで本発明を実行することができ、そのデータパスによる弊害も無視することができる程度のものである。
【0025】
すなわち、後述する図5および図6の比較から明らかなように、第1の積和演算器(131;231)からは両方のアキュムレータ(141,142;241,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
行われる演算:
従って、本発明で対象とするSIMD命令は、次のような、[A]nを、操作Aをn回再帰的に繰り返すと定義すると、
[fm_1(nmac)]p(m=log2n−p;p=1,…,log2n)
のように表される。
【0029】
これらを用いることで、ハード構成の観点からも、また、実行性能の観点からも、オーバーヘッド無しに行列演算を行うことが可能になる。
本発明は、ACCをスワップさせるものであって、その対象となるSIMD積和演算を選ばない。例えば、次に示すような、SIMD積和演算命令に対しても適用し得る。すなわち、形式2の積和演算器構成を2つ備えた4並列SIMD積和演算命令(nmacx)を考えると、
ニーモニック(例)nmacx RSi,RSj,ACCk
行われる演算:
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(nmac),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)は、アキュムレータ(141,142)から読み出される。すなわち、第1の積和演算器回路131には、SIMD対応アドレスデコーダ120からのアドレス制御信号S11により制御されるセレクタ160を介して第1のアキュムレータ141(ACC1)および第2のアキュムレータ142(ACC2)からのいずれのソースデータ3も読み出し可能とされ、また、第2の積和演算器回路132には、第2のアキュムレータ142からのソースデータ3が読み出される。
【0035】
第1の積和演算回路131の演算結果は、第1のアキュムレータ141に格納されると共に、SIMD対応アドレスデコーダ120から出力されるアドレス制御信号S12により制御されるセレクタ150を介して第2の積和演算回路132の演算結果と選択的に第2のアキュムレータ142に格納される。以上のような動作により、SIMD積和演算が実行される。
【0036】
図6は本発明に係るSIMD積和演算回路の一実施例を示すブロック図である。本実施例のSIMD積和演算回路は、上述した従来のSIMD積和演算回路に対してわずかな変更を加えるだけで構成される。
すなわち、図5および図6の比較から明らかなように、本実施例のSIMD積和演算回路は、図5に示す従来のSIMD積和演算回路に対して第2の積和演算回路232(132)から第1のアキュムレータ241(141)に演算結果を書き込むデータパスDP21およびセレクタ251を設けると共に、第1のアキュムレータ241から第2の積和演算回路232にソースデータ3を供給するデータパスDP22およびセレクタ262を設けるようになっている。ここで、セレクタ251はSIMD対応アドレスデコーダ220からのアドレス制御信号S23により制御され、また、セレクタ262はSIMD対応アドレスデコーダ120からのアドレス制御信号S24により制御されるようになっている。なお、図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には、SIMD対応アドレスデコーダ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つのSISD積和演算が並列に実行可能な積和演算回路を有するデータ処理装置を示している。
【0042】
各アキュムレータ341,342は、第1の積和演算回路331および第2の積和演算回路332のいずれからもソースデータを読み出し、また、その各演算結果をいずれの積和演算回路331,332にも書き込むことができるようになっている。従って、図7に示す積和演算回路は、前述した図6の第1実施例におけるデータパス構造を既に持っていることになる。ただし、この図7に示す関連技術の積和演算回路は、2並列のSISD積和演算を行うためだけのものであり、SIMD積和演算を実行することは考慮されていない。
【0043】
すなわち、図7に示す積和演算回路により、次のような2並列のSISD積和演算が実行される。
まず、第1の積和演算回路331に供給されるソースデータをメモリ310から読み出すと共に、第2の積和演算回路332に供給されるソースデータをメモリ310から読み出す。メモリ310から読み出されたソースデータは、それぞれ積和演算回路331,332に供給される。
【0044】
各積和演算回路のソースデータ3(ソース3)は、アキュムレータ341,342から読み出される。ここで、第1の積和演算器回路331には、アキュムレータ341と342のいずれからも読み出し可能ならば、アドレスデコーダ320からは、アドレス制御信号S31により第1のアキュムレータ341からデータが読み出され、また、第2の積和演算回路332には、第2のアキュムレータ342からデータが読み出される。
【0045】
第1の積和演算器回路331には、アドレスデコーダ320から出力されるアドレス制御信号S31によりアキュムレータ341または342からデータが読み出され、第2の積和演算回路332には、アドレスデコーダ320から出力されるアドレス制御信号S34によりアキュムレータ341または342からデータが読み出される。
【0046】
第1の積和演算回路331の演算結果は、アドレスデコーダ320から出力されるアドレス制御信号S32によりアキュムレータ341または342に格納され、また、第2の積和演算回路332の演算結果は、アドレスデコーダ320から出力されるアドレス制御信号S33によりアキュムレータ341または342に格納される。このとき、同じアキュムレータに同時に書き込まれることはない。
【0047】
以上のようにして、2並列のSISD積和演算が実行されるが、この2並列積和演算回路を本発明のSIMD積和演算が実行できるようにしたものが図8である。すなわち、図8は本発明に係るSIMD積和演算回路の他の実施例を示すブロック図である。
まず、SISD積和演算実行時においては、第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により、セレクタ451および462はパス『1』を選択し且つセレクタ452および461はパス『0』を選択し、第1の積和演算回路431は第1のアキュムレータ441(ACC1)に接続され且つ第2の積和演算回路432は第2のアキュムレータ442(ACC2)に接続されるように制御される。
【0053】
一方、入れ替え時のSIMD積和演算(スワップ)では、制御信号S41〜S44により、セレクタ451および462はパス『0』を選択し且つセレクタ452および461はパス『1』を選択し、第1の積和演算回路431は第2のアキュムレータ442(ACC2)に接続され且つ第2の積和演算回路432は第1のアキュムレータ441(ACC1)に接続されるように制御される。
【0054】
このように、図8および図9に示す本実施例によれば、既存の回路(図7に示すような関連技術の積和演算回路)に対して大きな変更を加えることなく、オーバーヘッド無しに行列演算が実行可能なSIMD積和演算回路を実現することができる。
図10は本発明に係るSIMD積和演算回路が適用されるプロセッサの全体構成を示すブロック図であり、例えば、VLIW(Very Long Instruction Word:長命令語/並列実行型)アーキテクチャを採用した組み込み用アプリケーション特化型のプロセッサであり、上述した本発明に係るSIMD積和演算回路が半導体チップに形成された半導体集積回路装置の一例を示すものである。
【0055】
図10において、参照符号601はICE(in-circuit emulator)装置、602はシンクロナスDRAM(SDRAM)、603はバスブリッジ、604はローカルバス、そして、500はプロセッサ(半導体集積回路装置)を示している。
プロセッサ500は、デバッグサポートユニット501、バスユニット502、クロックジェネレータ503、ストレージユニット504、整数演算ユニット505、および、浮動小数点/メディア処理演算ユニット506を備えている。バスユニット502は、SDRAM602とのインターフェースを取るSDRAM・I/F部521、バスブリッジ603を介してローカルバス604とのインターフェースを取るローカルバスI/F部522、並びに、ストレージユニット504とデバッグサポートユニット501,SDRAM・I/F部521およびローカルバスI/F部522との間に設けられたバスインターフェース部523を備えている。ここで、デバッグサポートユニット501は、ICE装置601とICE接続され、デバッグをサポートするものである。
【0056】
ストレージユニット504は、命令キャッシュ541およびデータキャッシュ542を備えている。整数演算ユニット505は、命令キャッシュ541からの命令を一時的に保持する命令フェッチ部551、命令フェッチ部551からの命令(例えば、VLIW命令)を整数演算(I)および浮動小数点/メディア処理演算(F/M)に分けて制御するパイプライン制御部552、整数演算用パイプライン553、および、ジェネラル・レジスタファイル部(RAM)554を備えている。
【0057】
浮動小数点/メディア処理演算ユニット506は、フローティング・レジスタファイル部(RAM)561、浮動小数点演算用パイプライン562、および、メディア処理用パイプライン563を備えている。ここで、浮動小数点演算用パイプライン562は、例えば、2つのSIMD積和演算回路を備え、また、メディア処理用パイプライン563は、例えば、4つのSIMD積和演算回路を備えて構成されている。上述した本発明に係るSIMD積和演算回路は、例えば、このような浮動小数点演算用パイプライン562およびメディア処理用パイプライン563に適用される。
【0058】
なお、本発明に係るSIMD積和演算回路が適用されるプロセッサ(半導体集積回路装置)500は、例えば、複数の32ビット整数演算ユニット(505:例えば、2個)、浮動小数点/メディア処理演算ユニット(506:例えば、それぞれ2個)を備え(計6個の演算ユニット)、整数演算ユニット505により高性能な信号処理を行い、また、メディア処理演算ユニット(浮動小数点/メディア処理演算ユニット506)により画像などの大容量連続データ(メディアデータ)の処理を行うことができる。
【0059】
【発明の効果】
以上、詳述したように、本発明によれば、回路に大幅な変更を加えることなく、高速にSIMD行列演算を行うことのできる積和演算回路および半導体集積回路装置を提供することができる。
【図面の簡単な説明】
【図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,452;160;261,262;361,362;461,462…セレクタ
500…プロセッサ(半導体集積回路装置)
501…デバッグサポートユニット
502…バスユニット
503…クロックジェネレータ
504…ストレージユニット
505…整数演算ユニット
506…浮動小数点/メディア処理演算ユニット
601…ICE装置
602…シンクロナスDRAM(SDRAM)
603…バスブリッジ
604…ローカルバス
Claims (10)
- 2n並列(ここで、nは自然数)の積和演算が同時に実行可能なSIMD積和演算方法であって、
SIMD積和演算で各積和演算回路に割り当てるアキュムレータアドレスの並びを、2m個(ここで、m=0,…,log2n)のアキュムレータを一組とし、隣接する2p−1番目と2p番目(ここで、p=1,…,n)のアキュムレータの組を当該アキュムレータの組の中におけるアキュムレータアドレスの順番は変えずに、該各アキュムレータの組を入れ替えることでSIMD積和演算を実行するようにしたことを特徴とするSIMD積和演算方法。 - 同時に動作可能な2n個(ここで、nは自然数)の積和演算ユニットを有するSISD積和演算回路において、
前記積和演算ユニットをSIMD積和演算に流用し、該各積和演算ユニットに割り当てられるアキュムレータアドレスの並びを、2m個(ここで、m=0,…,log2n)のアキュムレータを一組とし、隣接する2p−1番目と2p番目(ここで、p=1,…,n)のアキュムレータの組を当該アキュムレータの組の中におけるアキュムレータアドレスの順番は変えずに、該各アキュムレータの組を入れ替えることで積和演算を実行するようにしたことを特徴とするSIMD積和演算方法。 - 請求項1または2に記載のSIMD積和演算方法において、SIMD積和演算を実行するためにアキュムレータアドレスを入れ替えることを特徴とするSIMD積和演算方法。
- 同時に動作可能な2n個(ここで、nは自然数)の積和演算ユニットを有し、該各積和演算ユニットは乗算器、加算器およびアキュムレータを備える積和演算回路であって、
前記各積和演算ユニットに割り当てられるアキュムレータアドレスの並びを、2m個(ここで、m=0,…,log2n)のアキュムレータを一組とし、隣接する2p−1番目と2p番目(ここで、p=1,…,n)のアキュムレータの組を当該アキュムレータの組の中におけるアキュムレータアドレスの順番は変えずに、該各アキュムレータの組を入れ替えることで積和演算を実行するようにしたことを特徴とするSIMD積和演算回路。 - 請求項4に記載のSIMD積和演算回路において、さらに、前記各積和演算ユニットに対して設けられ前記各アキュムレータのデータを切り替えて供給するセレクタと、該各アキュムレータに対して設けられ該各積和演算ユニットの演算結果を切り替えて格納するセレクタとを備え、該各セレクタを制御して該各積和演算ユニットに所定のSIMD積和演算を実行させるようにしたことを特徴とするSIMD積和演算回路。
- 請求項5に記載のSIMD積和演算回路において、前記各セレクタは、スワップ指示信号が供給されたアドレスデコーダからの制御信号により切り替え制御されることを特徴とするSIMD積和演算回路。
- 請求項4に記載のSIMD積和演算回路において、さらに、前記2n個の積和演算ユニットにソースデータを供給するメモリに対して、SISD積和演算用とSIMD積和演算用のソースデータアドレスを切り替えて入力するセレクタを備えることを特徴とするSIMD積和演算回路。
- 請求項7に記載のSIMD積和演算回路において、前記各セレクタは、前記積和演算ユニットのいずれかに対するバリッド信号により切り替え制御されることを特徴とするSIMD積和演算回路。
- 請求項4に記載のSIMD積和演算回路において、さらに、前記2n個の積和演算ユニットを制御するために必要な制御信号を生成する命令デコーダに供給される資源を、SISD積和演算用とSIMD演算用とに切り替えて使用するセレクタを備えることを特徴とするSIMD積和演算回路。
- 請求項4〜9のいずれか1項に記載のSIMD積和演算回路が、半導体チップに形成されていることを特徴とする半導体集積回路装置。
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2001024153A JP3935678B2 (ja) | 2001-01-31 | 2001-01-31 | Simd積和演算方法、積和演算回路、および、半導体集積回路装置 |
DE60143469T DE60143469D1 (de) | 2001-01-31 | 2001-09-05 | Arithmetische Schaltung und Verfahren zur Produktsummenberechnung |
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 |
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 JP2002229970A (ja) | 2002-08-16 |
JP3935678B2 true 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) |
Families Citing this family (8)
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 |
US8631224B2 (en) * | 2007-09-13 | 2014-01-14 | Freescale Semiconductor, Inc. | SIMD dot product operations with overlapped operands |
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 |
CN112602054B (zh) * | 2018-08-31 | 2024-06-25 | 弗莱克斯-罗技克斯技术公司 | 乘法器累加器电路、用于乘法累加的逻辑瓦片架构和包括逻辑瓦片阵列的ic |
US11093580B2 (en) * | 2018-10-31 | 2021-08-17 | Advanced Micro Devices, Inc. | Matrix multiplier with submatrix sequencing |
Family Cites Families (12)
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 |
EP0660245A3 (en) | 1993-12-20 | 1998-09-30 | 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 |
-
2001
- 2001-01-31 JP JP2001024153A patent/JP3935678B2/ja not_active Expired - Lifetime
- 2001-09-05 US US09/945,697 patent/US7043519B2/en not_active Expired - Lifetime
- 2001-09-05 EP EP01307538A patent/EP1229438B1/en not_active Expired - Lifetime
- 2001-09-05 DE DE60143469T patent/DE60143469D1/de not_active Expired - Lifetime
Also Published As
Publication number | Publication date |
---|---|
US20020138535A1 (en) | 2002-09-26 |
DE60143469D1 (de) | 2010-12-30 |
EP1229438A2 (en) | 2002-08-07 |
EP1229438B1 (en) | 2010-11-17 |
EP1229438A3 (en) | 2005-03-23 |
JP2002229970A (ja) | 2002-08-16 |
US7043519B2 (en) | 2006-05-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8595280B2 (en) | Apparatus and method for performing multiply-accumulate operations | |
US7366881B2 (en) | Method and apparatus for staggering execution of an instruction | |
JP3442225B2 (ja) | 演算処理装置 | |
US7043627B2 (en) | SIMD operation system capable of designating plural registers via one register designating field | |
US11106465B2 (en) | Vector add-with-carry instruction | |
WO2006112045A1 (ja) | 演算処理装置 | |
CN107851013B (zh) | 数据处理装置和方法 | |
JP4349265B2 (ja) | プロセッサ | |
JP2020508512A (ja) | データ処理装置における乗累算 | |
JP3985797B2 (ja) | プロセッサ | |
JP3935678B2 (ja) | Simd積和演算方法、積和演算回路、および、半導体集積回路装置 | |
TWI773783B (zh) | 用於基於暫存器的複數處理的設備、方法、積體電路、電腦程式及電腦可讀取儲存媒體 | |
JP4801605B2 (ja) | Simd型マイクロプロセッサ | |
JP5145659B2 (ja) | ベクトルリネーミング方式およびベクトル型計算機 | |
JP5659772B2 (ja) | 演算処理装置 | |
JP3771682B2 (ja) | ベクトル処理装置 | |
US20050033939A1 (en) | Address generation | |
JP2009175830A (ja) | Simd型マイクロプロセッサ | |
WO2024200990A1 (en) | Technique for efficient multiplication of vectors of complex numbers | |
JP2006215611A (ja) | 演算装置 | |
JP2011145886A (ja) | 情報処理装置 | |
JP2003345589A (ja) | 情報処理装置 | |
JP2004303058A (ja) | ベクトルプロセッサおよびそのデータ処理方法 | |
JPH1074145A (ja) | 命令供給装置 | |
JP2008108049A (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 |