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
Links
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)
Abstract
は、例えば、行列演算の引数をコピー或いはスワップさ
せる新たなパス(手順)が必要となって処理性能の低下を
来たしている。 【解決手段】 2n並列(ここで、nは自然数)の積和
演算が同時に実行可能なSIMD積和演算方法であっ
て、SIMD積和演算で各積和演算回路231,232
に割り当てるアキュムレータアドレスの並びを、2m個
(ここで、m=0,…,log2n)のアキュムレータ
241,242を一組とし、隣接する2p−1番目と2
p番目(ここで、p=1,…,n)のアキュムレータの
組を当該アキュムレータの組の中におけるアキュムレー
タアドレスの順番は変えずに、該各アキュムレータの組
を入れ替えることでSIMD積和演算を実行する。
Description
し、特に、SIMD演算を行うための方法および回路、
並びに、SIMD積和演算回路を備えた半導体集積回路
装置に関する。近年、1つの命令で複数のデータを同時
に演算するSIMD(Single Instruction Stream-Mult
iple Data Stream)演算が注目され、例えば、カラー・
レーザプリンタやナビゲーション・システムなどの高速
データ処理および画像処理を行う高機能・高性能のシス
テムを実現するには、SIMD演算機能を有する強力な
プロセッサが必要とされている。ここで、SIMDは、
1つの命令で複数のデータを同時に演算する制御方式で
あり、また、SIMD行列演算は、(高速に)行列演算
が実行可能なSIMD(積和)演算である。このような
SIMD行列演算を行う積和演算回路においては、例え
ば、行列演算の引数をコピー或いはスワップさせる新た
なパス(手順)が必要となって処理性能の低下を来たして
いる。そこで、回路に大幅な変更を加えることなく、高
速にSIMD演算を行うことのできる積和演算回路の提
供が要望されている。
下記の式f1のように表現され、それは後述するような
演算が行われるが、積と和の処理の順番により、形式1
と形式2の2つに分類することができる。
ることが可能な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に
それぞれ格納するものとする。
式f2に示す。
((RSj,RSj+1)=(x,x))、行列の1列目の
係数(a0,a1)(=(RSi,RSi+1))とそれ
ぞれ乗算を行い、アキュムレータ(acc0,acc1)
(=(ACCk,ACCk+1))に格納する。このとき、
アキュムレータacc0およびacc1が共にゼロなら
ば、乗算結果とアキュムレータの値を加算し、アキュム
レータに格納してもよい(積和演算)。
((RSj,RSj+1)=(y,y))、行列の2列目の
係数(b0,b1)(=(RSi,RSi+1))とそれぞれ
乗算を行い、アキュムレータ(acc0,acc1)(=
(ACCk,ACCk+1))の値とそれぞれ加算して、ア
キュムレータ(acc0,acc1)にそれぞれ格納する
(積和演算)。
式f3に示す。
と(x,y)の内積を計算して、アキュムレータ(ac
c0,acc1)に格納する。このとき、acc0,acc1
が共にゼロならば、乗算結果とアキュムレータの値を加
算して、アキュムレータに格納してもよい(積和演
算)。次に、ステップ2において、(x,y)を(y,
x)と入れ替えて、(b0,a1)と内積を計算し、アキ
ュムレータ(acc0,acc1)の値とそれぞれ加算し
て、アキュムレータ(acc0,acc1)にそれぞれ格
納する(積和演算)。
おいて、上述した式f1の行列演算を実行するために
は、引数(x,y)をコピー或いは並び替える必要があ
った。図1は一般的なSISD(Single Instruction S
tream-Single Data Stream)積和演算の手順の一例を示
す図であり、図2は2並列のSISD積和演算の手順の
一例を示す図であり、そして、図3は従来の積和演算に
おける課題を説明するための図である。なお、図2で
は、アキュムレータACC0とACC1との選択は、実行
する積和演算命令に予め定められている。
れが、前述した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では、引数をスワップさせる新たな
パスが必要になり、これらの新たな手順が行列演算のオ
ーバーヘッドになる。
せる手順を設けて処理しようとすると、その手順を実現
するための何らかの命令を実行する時間(ステップ)が
必要になり、行列演算のレイテンシの増加を招いて積和
演算回路(半導体集積回路装置:プロセッサ)全体の処
理性能を低下させることになる。また、オーバーヘッド
の物理的な対処としては、図3(a)および図3(b)
に示される新たなパス(新規パス)が必要になり、その
結果、データパスの論理段数や配線の増加といった物量
(ハード面)の増大を来たすことにもなる。さらに、新
規パスを選択するためのデコード手段(デコーダおよび
制御信号等)が必要になり、そして、命令実行開始時に
必要な制御信号を生成するための論理段数も増加して、
結果的に積和演算回路(半導体集積回路装置:プロセッ
サ)の最大動作周波数を低下させることにもなる。
技術に鑑み、最大動作周波数の低下、レイテンシの増加
および回路の大幅な変更を必要とせず、高速に行列演算
が実行可能なSIMD演算を行うことのできる積和演算
回路の提供にある。
れば、2n並列(ここで、nは自然数)の積和演算が同
時に実行可能なSIMD積和演算方法が提供される。S
IMD積和演算で各積和演算回路に割り当てるアキュム
レータアドレスの並びは、2m個(ここで、m=0,
…,log2n)のアキュムレータを一組とし、隣接す
る2p−1番目と2p番目(ここで、p=1,…,n)
のアキュムレータの組をそのアキュムレータの組の中に
おけるアキュムレータアドレスの順番は変えずに、各ア
キュムレータの組が入れ替えられ、SIMD積和演算が
実行される。
可能な2n個(ここで、nは自然数)の積和演算ユニッ
トを有するSISD積和演算回路において、該積和演算
ユニットをSIMD積和演算に流用するSIMD積和演
算方法が提供される。各積和演算ユニットに割り当てら
れるアキュムレータアドレスの並びは、2m個(ここ
で、m=0,…,log2n)のアキュムレータを一組
とし、隣接する2p−1番目と2p番目(ここで、p=
1,…,n)のアキュムレータの組をそのアキュムレー
タの組の中におけるアキュムレータアドレスの順番は変
えずに、各アキュムレータの組が入れ替えられ、SIM
D積和演算が実行される。
可能な2n個(ここで、nは自然数)の積和演算ユニッ
トを有し、各積和演算ユニットが乗算器、加算器および
アキュムレータを備える積和演算回路が提供される。各
積和演算ユニットに割り当てられるアキュムレータアド
レスの並びは、2m個(ここで、m=0,…,log
2n)のアキュムレータを一組とし、隣接する2p−1
番目と2p番目(ここで、p=1,…,n)のアキュム
レータの組をそのアキュムレータの組の中におけるアキ
ュムレータアドレスの順番は変えずに、各アキュムレー
タの組が入れ替えられ、SIMD積和演算が実行され
る。
比較して示すタイムチャートである。図4に示されるよ
うに、2行2列の行列演算を行う場合、コピー或いはス
ワップさせる手順を設けて対処すると、その手順を実現
するための何らかの命令を実行する時間が必要となっ
て、前述した形式1(従来の行列演算処理)では、1/
2がオーバーヘッドになり、また、前述した形式2で
は、1/3がオーバーヘッドになる。これに対して、本
発明では、そのようなオーバーヘッドは存在せず、行列
演算のレイテンシを増加させることなく、全体の処理性
能を維持することができる。
演算とは使用するアキュムレータが逆になる次のような
SIMD命令を定義する。 ニーモニック(例)dmacx RSi,RSj,ACC
k 行われる演算: ACCk+1 =RSi ×RSj +ACCk+1 ACCk =RSi+1 ×RSj+1 +ACCk となる。これにより、前述した形式2において必要であ
った(x,y)のスワップ操作が不要になる。
1)と(x,y)の内積を計算してアキュムレータ(a
cc0,acc1)に格納する。ここで、acc0,ac
c1が共にゼロならば、乗算結果とアキュムレータの値
とを加算して、アキュムレータに格納しても良い(積和
演算)。次に、ステップ2において、(a1,b0)と
(x,y)の内積を計算し、アキュムレータ(acc
1,acc0)の値とそれぞれ加算して、アキュムレータ
(acc1,acc0)にそれぞれ格納する(積和演
算)。
た引数(x,y)をスワップさせるオーバーヘッドが無
くなって図3に示すような新規パスが不要になり、図4
に示されるように、オーバーヘッドを無くした行列演算
を実行することが可能になる。ここで、本発明のアキュ
ムレータをスワップさせるために生じる弊害は、以下に
示すように、軽微または無視できる程度のものであり、
実質的な問題はない。
積和演算回路(積和演算ユニット)は、図2のように構
成される。まず、アキュムレータアドレスをスワップさ
せるために必要な命令デコードについて述べる。積和演
算において、アキュムレータに格納された値が加算され
るのは、乗算の演算開始後であり、アキュムレータアド
レスをスワップさせるために必要な命令デコードには、
十分な時間が与えられるため、そのアキュムレータのス
ワップによる弊害は無視することができる。
積和演算器から、どちらのアキュムレータにもアクセス
可能な場合、本発明を実行するに必要なデータパスは既
に備わっているため、アキュムレータアドレスを制御す
るだけで本発明を実行することができ、そのデータパス
による弊害も無視することができる程度のものである。
から明らかなように、第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)の論理段数と変わらな
いため、新規パスの新設による弊害は軽微である。
1の場合には、一方の積和演算器から他方のアキュムレ
ータへのパスを新設する必要が生じるため、セレクタ1
段の論理段数の増加を招くことになる。しかしなら、こ
の場合にも、セレクタ制御信号の生成には時間的余裕が
あるため、適用し得るデータパス回路(高速なデータパ
ス回路)は容易に構成することが可能であり、その弊害
は軽微であるといえる。
いて述べたが、これらは、2n並列のSIMD命令に拡
張することが可能である。2n行の行列において、2m
個(m=0,…,log2n)のACC(アキュムレー
タ)を一組と考え、隣接する2p−1番目と2p番目
(p=1,…,n)のACCの組を、その組の中におけ
るACCの順番は変えずに、全て入れ替えさせる操作
(スワップさせる操作)をfm_1( )と定義し、ス
ワップさせない操作をfm_0( )と定義する。
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) のように表される。
からも、また、実行性能の観点からも、オーバーヘッド
無しに行列演算を行うことが可能になる。本発明は、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)構成の
命令を定義することができる。
c),f1_1(nmacx)を実行することで、オー
バーヘッド無しに、4行4列の行列演算ができることに
なる。
たが、本発明は、複数のアキュムレータを持つハード構
成であれば、どのようなオペランド方式であって適用す
ることが可能である。
を行う積和演算回路およびこれを備えた半導体集積回路
装置の実施例を、従来技術および関連技術と比較しつ
つ、添付図面を参照して詳述する。図5は従来技術に係
るSIMD積和演算回路の一例を示すブロック図であ
る。図5において、参照符号110はメモリ、120は
アドレスデコーダ(SIMD対応アドレスデコーダ)、
131および132は積和演算回路(積和演算ユニッ
ト)、141および142はアキュムレータ、そして、
150および160はセレクタを示している。
ット)131は、SISD積和演算とSIMD積和演算
の両方を行うことができ、また、第2の積和演算回路
(第2の積和演算ユニット)132は、SIMD積和演
算専用のものである。まず、SIMD積和演算が実行さ
れる場合、第1の積和演算回路131に供給されるソー
スデータをメモリ110から読み出すと共に、そのソー
スデータアドレスに『1』インクリメントしたアドレス
から第2の積和演算回路132に供給されるソースデー
タをメモリ110から読み出す。この『1』インクリメ
ントの処理は、第1の積和演算回路131に供給される
ソースデータのアドレスを偶数に制限することで、実際
に行う代わりにアドレスの最下位ビットを『1』に差し
換え、これにより高速な読み出しを実現することができ
る。
タは、それぞれ積和演算回路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が読み出さ
れる。
第1のアキュムレータ141に格納されると共に、SI
MD対応アドレスデコーダ120から出力されるアドレ
ス制御信号S12により制御されるセレクタ150を介
して第2の積和演算回路132の演算結果と選択的に第
2のアキュムレータ142に格納される。以上のような
動作により、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に対応す
る。
に、SIMD対応アドレスデコーダ220に対して、通
常のSIMD積和演算時に生成されるアドレスとはスワ
ップした関係にあるアドレスを生成させるためのスワッ
プ指示信号を供給するようになっている。なお、スワッ
プ指示信号は、例えば、命令をデコードするデコーダに
より生成される。
算回路は、図5に示す従来のSIMD積和演算回路に対
して上述したような変更を加えることで、以下のような
演算を実行する。まず、メモリ210からのソースデー
タ(ソース1,2)を読み出し、第1および第2の積和
演算回路231,232に供給するまでは、図5に示す
従来のSIMD積和演算と同じである。
D対応アドレスデコーダ220からのアドレス制御信号
S21で制御されるセレクタ261により、第2のアキ
ュムレータ242からデータが読み出され、また、第2
の積和演算回路232には、SIMD対応アドレスデコ
ーダ220からのアドレス制御信号S24で制御される
セレクタ262により、第1のアキュムレータ241か
らデータが読み出される。
SIMD対応アドレスデコーダ220からのアドレス制
御信号S22で制御されるセレクタ252により、第2
のアキュムレータ242に格納され、また、第2の積和
演算回路232の演算結果は、SIMD対応アドレスデ
コーダ220からのアドレス制御信号S23で制御され
るセレクタ251により、第1のアキュムレータ241
に格納される。
回路の変更だけで、オーバーヘッド無しに高速に積和演
算をすることができるSIMD積和演算回路を実現する
ことができる。図7は関連技術に係る2並列のSISD
積和演算回路の一例を示すブロック図であり、2つのS
ISD積和演算が並列に実行可能な積和演算回路を有す
るデータ処理装置を示している。
の積和演算回路331および第2の積和演算回路332
のいずれからもソースデータを読み出し、また、その各
演算結果をいずれの積和演算回路331,332にも書
き込むことができるようになっている。従って、図7に
示す積和演算回路は、前述した図6の第1実施例におけ
るデータパス構造を既に持っていることになる。ただ
し、この図7に示す関連技術の積和演算回路は、2並列
のSISD積和演算を行うためだけのものであり、SI
MD積和演算を実行することは考慮されていない。
り、次のような2並列のSISD積和演算が実行され
る。まず、第1の積和演算回路331に供給されるソー
スデータをメモリ310から読み出すと共に、第2の積
和演算回路332に供給されるソースデータをメモリ3
10から読み出す。メモリ310から読み出されたソー
スデータは、それぞれ積和演算回路331,332に供
給される。
3)は、アキュムレータ341,342から読み出され
る。ここで、第1の積和演算器回路331には、アキュ
ムレータ341と342のいずれからも読み出し可能な
らば、アドレスデコーダ320からは、アドレス制御信
号S31により第1のアキュムレータ341からデータ
が読み出され、また、第2の積和演算回路332には、
第2のアキュムレータ342からデータが読み出され
る。
スデコーダ320から出力されるアドレス制御信号S3
1によりアキュムレータ341または342からデータ
が読み出され、第2の積和演算回路332には、アドレ
スデコーダ320から出力されるアドレス制御信号S3
4によりアキュムレータ341または342からデータ
が読み出される。
アドレスデコーダ320から出力されるアドレス制御信
号S32によりアキュムレータ341または342に格
納され、また、第2の積和演算回路332の演算結果
は、アドレスデコーダ320から出力されるアドレス制
御信号S33によりアキュムレータ341または342
に格納される。このとき、同じアキュムレータに同時に
書き込まれることはない。
演算が実行されるが、この2並列積和演算回路を本発明
のSIMD積和演算が実行できるようにしたものが図8
である。すなわち、図8は本発明に係るSIMD積和演
算回路の他の実施例を示すブロック図である。まず、S
ISD積和演算実行時においては、第2の積和演算回路
432に供給されるソースデータ(ソース1,2)のア
ドレスを、SIMD積和演算実行時に第2の積和演算回
路432に供給されるソースデータのアドレス(すなわ
ち、第1の積和演算回路431に供給されるソースデー
タのアドレスに1インクリメントしたもの)にセレクタ
471および472を用いて差し替える。このセレクタ
471,472を制御するための信号の生成は、次のよ
うにすることで、特別なデコードを必要とすることなく
高速にセレクタを制御することが可能になる。
の積和演算回路432を使用したSISD積和演算を実
行不可にする。これにより、SISD積和演算を実行し
ないときには、SIMD積和演算実行時に第2の積和演
算回路432に供給されるソースデータのアドレスを選
択するようにセレクタ371,472を構成するだけで
良いことになる。これは、アドレスだけでなく、第2の
積和演算回路432を動作させるための制御信号を生成
する命令デコーダに供給されるあらゆる資源に対して、
応用可能である。すなわち、SISD積和演算を行うか
どうかのバリッドだけで、SISD積和演算回路の全て
を、SISD積和演算回路への弊害を最小限にして、且
つ、高速にSIMD積和演算実行時に流用することが可
能になる。
データ(ソース1,2)を供給した後、SIMD対応ア
ドレスデコーダ420により、アキュムレータ441,
442に格納されたソースデータ(ソース3)を各積和
演算回路431,432に供給し、その各積和演算結果
を、アキュムレータ441,442にそれぞれ格納す
る。
動作を説明するための図である。なお、次の表1は、ア
キュムレータのアドレス(ACCアドレス)入れ替え真
理値表(2×2)を示している。
ル)では、制御信号S41〜S44により、セレクタ4
51および462はパス『1』を選択し且つセレクタ4
52および461はパス『0』を選択し、第1の積和演
算回路431は第1のアキュムレータ441(ACC
1)に接続され且つ第2の積和演算回路432は第2の
アキュムレータ442(ACC2)に接続されるように
制御される。
ワップ)では、制御信号S41〜S44により、セレク
タ451および462はパス『0』を選択し且つセレク
タ452および461はパス『1』を選択し、第1の積
和演算回路431は第2のアキュムレータ442(AC
C2)に接続され且つ第2の積和演算回路432は第1
のアキュムレータ441(ACC1)に接続されるよう
に制御される。
例によれば、既存の回路(図7に示すような関連技術の
積和演算回路)に対して大きな変更を加えることなく、
オーバーヘッド無しに行列演算が実行可能なSIMD積
和演算回路を実現することができる。図10は本発明に
係るSIMD積和演算回路が適用されるプロセッサの全
体構成を示すブロック図であり、例えば、VLIW(Ve
ry Long Instruction Word:長命令語/並列実行型)ア
ーキテクチャを採用した組み込み用アプリケーション特
化型のプロセッサであり、上述した本発明に係るSIM
D積和演算回路が半導体チップに形成された半導体集積
回路装置の一例を示すものである。
(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接続され、デ
バッグをサポートするものである。
シュ541およびデータキャッシュ542を備えてい
る。整数演算ユニット505は、命令キャッシュ541
からの命令を一時的に保持する命令フェッチ部551、
命令フェッチ部551からの命令(例えば、VLIW命
令)を整数演算(I)および浮動小数点/メディア処理
演算(F/M)に分けて制御するパイプライン制御部5
52、整数演算用パイプライン553、および、ジェネ
ラル・レジスタファイル部(RAM)554を備えてい
る。
06は、フローティング・レジスタファイル部(RA
M)561、浮動小数点演算用パイプライン562、お
よび、メディア処理用パイプライン563を備えてい
る。ここで、浮動小数点演算用パイプライン562は、
例えば、2つのSIMD積和演算回路を備え、また、メ
ディア処理用パイプライン563は、例えば、4つのS
IMD積和演算回路を備えて構成されている。上述した
本発明に係るSIMD積和演算回路は、例えば、このよ
うな浮動小数点演算用パイプライン562およびメディ
ア処理用パイプライン563に適用される。
が適用されるプロセッサ(半導体集積回路装置)500
は、例えば、複数の32ビット整数演算ユニット(50
5:例えば、2個)、浮動小数点/メディア処理演算ユ
ニット(506:例えば、それぞれ2個)を備え(計6
個の演算ユニット)、整数演算ユニット505により高
性能な信号処理を行い、また、メディア処理演算ユニッ
ト(浮動小数点/メディア処理演算ユニット506)に
より画像などの大容量連続データ(メディアデータ)の
処理を行うことができる。
ば、回路に大幅な変更を加えることなく、高速にSIM
D行列演算を行うことのできる積和演算回路および半導
体集積回路装置を提供することができる。
図である。
図である。
図である。
すタイムチャートである。
示すブロック図である。
を示すブロック図である。
の一例を示すブロック図である。
例を示すブロック図である。
するための図である。
れるプロセッサの全体構成を示すブロック図である。
ダ 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】 2n並列(ここで、nは自然数)の積和
演算が同時に実行可能なSIMD積和演算方法であっ
て、 SIMD積和演算で各積和演算回路に割り当てるアキュ
ムレータアドレスの並びを、2m個(ここで、m=0,
…,log2n)のアキュムレータを一組とし、隣接す
る2p−1番目と2p番目(ここで、p=1,…,n)
のアキュムレータの組を当該アキュムレータの組の中に
おけるアキュムレータアドレスの順番は変えずに、該各
アキュムレータの組を入れ替えることでSIMD積和演
算を実行するようにしたことを特徴とするSIMD積和
演算方法。 - 【請求項2】 同時に動作可能な2n個(ここで、nは
自然数)の積和演算ユニットを有するSISD積和演算
回路において、 前記積和演算ユニットをSIMD積和演算に流用し、該
各積和演算ユニットに割り当てられるアキュムレータア
ドレスの並びを、2m個(ここで、m=0,…,log2
n)のアキュムレータを一組とし、隣接する2p−1番
目と2p番目(ここで、p=1,…,n)のアキュムレ
ータの組を当該アキュムレータの組の中におけるアキュ
ムレータアドレスの順番は変えずに、該各アキュムレー
タの組を入れ替えることで積和演算を実行するようにし
たことを特徴とするSIMD積和演算方法。 - 【請求項3】 請求項1または2に記載のSIMD積和
演算方法において、SIMD積和演算を実行するために
アキュムレータアドレスを入れ替えることを特徴とする
SIMD積和演算方法。 - 【請求項4】 同時に動作可能な2n個(ここで、nは
自然数)の積和演算ユニットを有し、該各積和演算ユニ
ットは乗算器、加算器およびアキュムレータを備える積
和演算回路であって、 前記各積和演算ユニットに割り当てられるアキュムレー
タアドレスの並びを、2m個(ここで、m=0,…,l
og2n)のアキュムレータを一組とし、隣接する2p
−1番目と2p番目(ここで、p=1,…,n)のアキ
ュムレータの組を当該アキュムレータの組の中における
アキュムレータアドレスの順番は変えずに、該各アキュ
ムレータの組を入れ替えることで積和演算を実行するよ
うにしたことを特徴とするSIMD積和演算回路。 - 【請求項5】 請求項4に記載のSIMD積和演算回路
において、さらに、前記各積和演算ユニットに対して設
けられ前記各アキュムレータのデータを切り替えて供給
するセレクタと、該各アキュムレータに対して設けられ
該各積和演算ユニットの演算結果を切り替えて格納する
セレクタとを備え、該各セレクタを制御して該各積和演
算ユニットに所定のSIMD積和演算を実行させるよう
にしたことを特徴とするSIMD積和演算回路。 - 【請求項6】 請求項5に記載のSIMD積和演算回路
において、前記各セレクタは、スワップ指示信号が供給
されたアドレスデコーダからの制御信号により切り替え
制御されることを特徴とするSIMD積和演算回路。 - 【請求項7】 請求項4に記載のSIMD積和演算回路
において、さらに、前記2n個の積和演算ユニットにソ
ースデータを供給するメモリに対して、SISD積和演
算用とSIMD積和演算用のソースデータアドレスを切
り替えて入力するセレクタを備えることを特徴とするS
IMD積和演算回路。 - 【請求項8】 請求項7に記載のSIMD積和演算回路
において、前記各セレクタは、前記積和演算ユニットの
いずれかに対するバリッド信号により切り替え制御され
ることを特徴とするSIMD積和演算回路。 - 【請求項9】 請求項4に記載のSIMD積和演算回路
において、さらに、前記2n個の積和演算ユニットを制
御するために必要な制御信号を生成する命令デコーダに
供給される資源を、SISD積和演算用とSIMD演算
用とに切り替えて使用するセレクタを備えることを特徴
とするSIMD積和演算回路。 - 【請求項10】 請求項4〜9のいずれか1項に記載の
SIMD積和演算回路が、半導体チップに形成されてい
ることを特徴とする半導体集積回路装置。
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)
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)
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)
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 |
-
2001
- 2001-01-31 JP JP2001024153A patent/JP3935678B2/ja not_active Expired - Lifetime
- 2001-09-05 DE DE60143469T patent/DE60143469D1/de not_active Expired - Lifetime
- 2001-09-05 EP EP01307538A patent/EP1229438B1/en not_active Expired - Lifetime
- 2001-09-05 US US09/945,697 patent/US7043519B2/en not_active Expired - Lifetime
Cited By (2)
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 |