JP4107043B2 - 演算処理装置 - Google Patents
演算処理装置 Download PDFInfo
- Publication number
- JP4107043B2 JP4107043B2 JP2002300511A JP2002300511A JP4107043B2 JP 4107043 B2 JP4107043 B2 JP 4107043B2 JP 2002300511 A JP2002300511 A JP 2002300511A JP 2002300511 A JP2002300511 A JP 2002300511A JP 4107043 B2 JP4107043 B2 JP 4107043B2
- Authority
- JP
- Japan
- Prior art keywords
- component
- register
- partial
- vector
- registers
- 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 - Fee Related
Links
Images
Landscapes
- Executing Machine-Instructions (AREA)
- Image Processing (AREA)
- Image Generation (AREA)
Description
【発明の属する技術分野】
本発明は、演算処理装置に関し、特にSIMD演算を用いてベクトルの外積演算を実行する演算処理装置に関する。
【0002】
【従来の技術】
従来より、演算処理装置では、処理の高速化のために様々な手法が用いられており、その一つとして、単一の演算命令で複数の演算器と複数のデータを扱って演算を並列に処理するSIMD(Single Instruction Multiple Date)演算が知られている。
【0003】
即ち、レジスタに格納されたデータに対して各種演算を実行する演算処理ユニットは、通常の命令では、レジスタに単一のデータが格納されているものとして処理するのに対して、SIMD演算では、m×n(m,nはいずれも正整数)ビット幅のレジスタに、nビット幅のデータがm個詰め込まれているものとして、これらm個のデータを並列に処理するのである。
【0004】
従って、SIMD演算を実行する演算処理ユニットを備えた演算処理装置は、音声処理や画像処理(特に3次元グラフィックス)等のように、大量のデータに対して同様の演算を繰り返し適用する必要がある処理に対して優れた処理能力が得られる。
【0005】
ところで、3次元グラフィクスにて、大量に処理されるベクトルデータや座標データ(以下総称して単に「ベクトルデータ」という。)は、通常、x,y,zの3成分からなる。これらベクトルデータの各成分に対してSIMD演算を実行する演算処理装置は、各成分がnビット幅にて表される場合、2n(つまりm=2)又は4n(m=4)ビット幅のデータバスやレジスタを備えることになる。
【0006】
そして、メモリに格納されたベクトルデータをデータバスを介してレジスタに読み込む時には、異なるベクトルデータの成分が同時に転送されることのないように、メモリ上では、通常、図4に示すように、x成分,y成分,z成分に続けてダミー成分(以下「w成分」ともいう。)が挿入されている。なお、図中(a)は、メモリアクセスの最小単位がnビットのメモリの場合、(b)は、メモリアクセスの最小単位が2nビットのメモリの場合を示す。但し、n=32である。
【0007】
このため、ベクトルデータの転送時には、転送を2nビット単位で行う場合には2回に1度、4nビット単位で行う場合には毎回、ダミー成分が含まれることになり、転送効率が低下するだけでなく、他の成分と共にレジスタに読み込まれたダミー成分もSIMD演算の対象となってしまうため、演算処理ユニットでの処理効率も低下してしまうという問題があった。
【0008】
このようなダミー成分に対する無駄な演算を回避するには、メモリからレジスタに読み込んだデータを、レジスタ上で再配置すればよいが、レジスタ間転送という新たな処理を発生させてしまうことになる。即ち、3次元グラフィクスの処理においてSIMD演算を行っても、バスの転送能力や演算処理装置の処理能力を最大限に引き出すことができなかった。
【0009】
特に、ベクトル外積演算((1)式参照)の際に必要となる6個の乗算結果をSIMD演算を用いて求める場合には、内積演算((2)式参照)やマトリクス演算を行う場合とは異なり、メモリに記憶されている各成分の並び順と、演算で対応させるべき成分の並び順とが一致しない。このため、メモリからレジスタに各成分を読み込んだ後、レジスタ上で各成分の再配置を行わなければ、SIMD演算を実行することができなかった。
【0010】
【数1】
【0011】
ここで、図5は、SIMD演算が可能な演算処理装置におけるレジスタ周辺の構成を表すブロック図である。
なお、演算処理装置102は、レイトレーシングによるシェーディングを行う三次元グラフィクス処理を実行するものであり、データバスDを介して接続されるメモリ(図示せず)には、少なくとも3次元のベクトルデータが格納されている。
【0012】
また、メモリに格納されるベクトルデータの各成分は、nビットにて表され、このnビットを1ワードとも呼ぶ。そして、データバスDは2ワード分(2nビット)のビット幅を有しており、また、メモリは、1ワード単位又は2ワード単位でのアクセスが可能なように構成されているものとする。
【0013】
図5に示すように、演算処理装置102は、2ワード分のビット幅を有するp個のレジスタr1〜rpからなるレジスタファイル104と、データバスDを介してメモリ等からデータの読込を行う時に、レジスタファイル104を構成する各レジスタr1〜rpの中のいずれか一つを、レジスタ選択信号Cに従って指定するレジスタ選択部108と、プログラムを実行するコア部(図示せず)からの指令を受けて、レジスタ選択信号Cを生成する制御信号生成部110とを備えている。
【0014】
そして、各レジスタr1〜rpの上位nビットからなる上位ワードrih(i=1〜p)は、内部上位バスIDHを介して、また、下位nビットからなる下位ワードrilは、内部下位バスIDLを介して、SIMD演算を実行可能な演算処理ユニット(図示せず)等に接続されている。つまり、演算処理ユニットは、レジスタr1〜rpをそのまま用いた2ワードデータの単一演算(例えばr1×r2)だけでなく、上位ワード同士、及び下位ワード同士で行う1ワードデータの並列演算(例えばr1h×r2h,r1l×r2l)も実行可能なように構成されている。
【0015】
なお、演算処理装置102は、バスサイジング機能を有しており、1ワード単位でレジスタにデータを読み込んだ時には、レジスタの下位ワードrilにデータが格納される。
また、メモリには、図4(a)に示すように、mm1番地にベクトルAのx成分Ax、mm1+1番地にベクトルAのy成分Ay、mm1+2番地にベクトルAのz成分Az、mm+3番地にベクトルAのw(ダミー)成分Awが格納され、同様に、mm2番地にベクトルBのx成分Bx、mm2+1番地にベクトルBのy成分By、mm2+2番地にベクトルBのz成分Bz、mm2+3番地にベクトルBのw(ダミー)成分Bwが格納されているものとする。
【0016】
このように構成された演算処理装置102では、SIMD演算にてベクトル外積演算を行う場合、図6に示す手順に従って、メモリからレジスタへのデータ(両ベクトルの各成分)の読込、SIMD演算に適したデータ配列となるようにレジスタ上でのデータの再配置を行う。
【0017】
即ち、まず、ベクトル外積演算の演算対象となる両ベクトルA,Bの各成分Az,Ay.Az,Bx,By,Bzを、1ワード単位でのメモリアクセスを用いて、レジスタr7〜r12の下位ワードに順次読み込んだ後[ステップS101〜S106]、これらレジスタr7〜r12に格納された各成分を、ベクトル外積演算で必要な6個の乗算結果Ax・By、Ay・Bx、Az・Bx、Ax・Bz、Ay・Bz、Az・ByがSIMD演算にて得られるように2個ずつ組み合わせて、レジスタr1〜r6に格納する[ステップS107〜S112]。
【0018】
このように、各ステップを動作クロックの1サイクルにて実行可能であるとすると、SIMD演算を開始するまでに、12サイクルもの期間が費やされることになる。つまり、ベクトル演算を行う場合には、SIMD演算を用いても、処理時間を大幅には短縮することができなかったのである。
【0019】
これに対して、レジスタに格納された各成分の配列を並び替えるための専用回路(ツイスト及びジップユニット74/混合回路15)を設けた装置が知られている(例えば特許文献1,特許文献2。)
【0020】
【特許文献1】
特開平8−328849号公報
(例えば、段落「0048」〜「0074」,図9〜図13)
【0021】
【特許文献2】
特開平9−16397号公報
(例えば、段落「0018」〜「0020」,図2)
【0022】
【発明が解決しようとする課題】
しかし、これらの専用回路では、レジスタ上でのデータの再配置を高速に行うことが可能となるが、多くのマルチプレクサが用いられており、回路構成が複雑化し且つ大規模化してしまうという問題があった。
【0023】
本発明は、上記問題点を解決するために、データバスを介して読み込まれるデータの並び順とレジスタに設定すべきデータの並び順とが異なる場合でも、演算処理装置の処理能力を十分に引き出せるようにすることを目的とする。
【0024】
【課題を解決するための手段】
上記目的を達成するための発明である請求項1記載の演算処理装置では、m×n(m,nはいずれも正整数)ビット幅のデータバスを介してデータが入出力される複数のレジスタからなるレジスタファイルを備えている。そして、このレジスタファイルを構成する各レジスタを、それぞれnビット幅のm個の部分レジスタに分割し、各レジスタの同一桁の部分レジスタを集めたものを、部分レジスタファイルと呼び、データバスをnビット幅に分割したものを部分データバスと呼ぶ。
【0025】
なお、同一桁の部分レジスタとは、例えば各レジスタのビット幅が3nビットであり、これをnビット幅の3個の部分レジスタに分割した場合には、上位nビットの部分レジスタ同士、中位nビットの部分レジスタ同士、下位nビットの部分レジスタ同士のことを言う。
【0026】
そして、部分レジスタ選択手段が、これらm個の部分レジスタファイル毎に、部分レジスタを一つずつ選択すると共に、部分データバス選択手段が、m個の部分データバスの中から、部分レジスタファイル毎に、部分レジスタ選択手段が選択した部分レジスタに接続すべき部分データバスを選択することにより、データバスを介して供給されるデータの配列を、部分データバス単位で組み替えてレジスタに格納する。
【0027】
このように、本発明の演算装置によれば、データバスを介して各レジスタにデータを読み込む際に、データの配列を部分データバス単位で組み替えることができるため、データバスに接続されたメモリなどから供給されるデータの並び順と、実際の処理のためにレジスタに格納すべきデータの並び順とが異なっていても、レジスタに読み込んでから再配列のための処理を別途行う必要がなく、処理時間を短縮することができる。
【0028】
しかも、このようなデータの並び順の組み替えを、部分レジスタ選択手段及び部分データバス選択手段にて2段階の選択を行うという簡易な構成にて実現しているため、装置構成を小型化できる。
【0029】
また、請求項1記載の演算処理装置では、レジスタファイルを構成する各レジスタは二つの部分レジスタ(m=2)からなり、部分レジスタ選択手段及び部分データバス選択手段は、3成分からなる二つのベクトルの外積演算が、レジスタを構成する各部分レジスタに対する演算を単一の演算命令で並列に処理するSIMD演算にて実行可能となるように、前記二つのベクトルの各成分を、6個のレジスタの各部分レジスタに格納する。
【0030】
つまり、ベクトル外積演算では、二つのベクトルの各成分が、乗算の際に互いに異なる成分と組み合わされるため((1)式参照)、この乗算をSIMD演算にて実行可能とするためには、データ配列の組み替えが必須となる。この組み替えを、部分データバス選択手段と部分レジスタ選択手段とを用いて行うことにより、ベクトル外積演算を効率よく行うことができる。
【0031】
なお、6個のレジスタの各部分レジスタに格納される二つのベクトルの各成分は、第1ベクトルの第1の成分と第2ベクトルの第1の成分、第1ベクトルの第2の成分と第2ベクトルの第2の成分、第1ベクトルの第3の成分と第2ベクトルの第3の成分はそれぞれ同一の属性を有するものとした場合には、請求項2記載のように、第1ベクトルの各成分は、第1の成分が第1の上位部分レジスタと第2の下位部分レジスタに、第2の成分が第1の下位部分レジスタと第3の上位部分レジスタに、第3の成分が第2の上位部分レジスタと第3の下位部分レジスタに格納され、第2ベクトルの各成分は、第1の成分が第4の下位部分レジスタと第5の上位部分レジスタに、第2の成分が第4の上位部分レジスタと第6の下位部分レジスタに、第3の成分が第5の下位部分レジスタと第6の上位部分レジスタに格納されるようにすればよい。
【0032】
また、この場合、二つのベクトルにおいて同一の属性を有する成分は、立体空間における座標値を示すx成分,y成分,z成分からなるものとした場合には、請求項3記載のように、前記第1の成分をx成分かつ前記第2の成分をy成分かつ前記第3の成分をz成分、又は前記第1の成分をz成分かつ前記第2の成分をy成分かつ前記第3の成分をx成分に対応させればよい。
【0033】
そして、本発明は、請求項4記載のように、レイトレーシングやZバッファ等のシェーディングによる画像処理を実行する演算処理装置に適用した場合に、大きな効果を得ることができる。
即ち、これらの処理では、光線を反射する面の法線ベクトルを求める必要があり、この法線ベクトルの算出にベクトル外積演算が使用され、ベクトル外積演算を実行する比率が高いため、処理速度の大幅に向上させることができる。
【0034】
【発明の実施の形態】
以下に本発明の実施形態を図面と共に説明する。
図1は、実施形態の演算処理装置の主要部を示すブロック図であり、ここでは、従来装置とは構成の異なるレジスタ周辺の構成のみを示す。なお、本実施形態の演算処理装置は、従来装置と同様に、レイトレーシングによるシェーディングを行う三次元グラフィクス処理を実行するためのものであり、データバスDを介して接続されるメモリ(図示せず)には、少なくとも3次元のベクトルデータや座標データ(以下、総称して「ベクトルデータ」と呼ぶ。)が格納されている。
【0035】
また、メモリに格納されるベクトルデータの各成分は、n(本実施形態ではn=32)ビットにて表され、このnビットを1ワードとも呼ぶ。そして、データバスは2ワード分(2nビット)のビット幅を有しており、また、メモリは、1ワード単位又は2ワード単位でのアクセスが可能なように構成されている。
【0036】
図1に示すように、本実施形態の演算処理装置2は、2ワード分のビット幅を有する8個のレジスタr1〜r8からなるレジスタファイル4を備えている。このレジスタファイル4を構成する各レジスタri(i=1〜8)は、それぞれが1ワード分のデータ幅を有する一対の部分レジスタrih,rilからなり、上位の部分レジスタr1h〜r8hを総称して上位部分レジスタファイル4a、下位の部分レジスタr1l〜r8lを総称して下位部分レジスタファイル4bとも呼ぶ。
【0037】
また本実施形態の演算処理装置2は、2nビット幅を有するデータバスDを、上位nビットからなる上位部分データバスDHと下位nビットからなる下位部分データバスDLとに分け、2ビットのバス選択信号S(S0,S1)に従って、部分レジスタファイル4a,4bのそれぞれに、両部分データバスDH,DLのいずれかを接続する部分データバス選択手段としてのバス選択部6と、バス選択部6により上位部分レジスタファイル4aに接続された部分データバスを介して供給されるデータの格納先を、3ビットのレジスタ選択信号CH(CH0〜CH2)に従って、部分レジスタr1h〜r8hの中から選択すると共に、バス選択部6により下位部分レジスタファイル4bに接続された部分データバスを介して供給されるデータの格納先を、3ビットのレジスタ選択信号CL(CL0〜CL2)に従って、部分レジスタr1l〜r8lの中から選択する部分レジスタ選択手段としてのレジスタ選択部8と、プログラムを実行する図示しないコア部からの指令に従って、バス選択信号S、レジスタ選択信号CH,CLを生成する制御信号生成部10とを備えている。
【0038】
このうち、バス選択部6は、バス選択信号S0に従って上位部分レジスタファイル4aに接続する部分データバスを選択する第1セレクタと、バス選択信号S1に従って下位部分レジスタファイル4bに接続する部分データバスを選択する第2セレクタとからなる。
【0039】
具体的には、図2(a)に示すように、第1セレクタは、S0=0の時には上位部分データバスDH、S0=1の時には下位部分データバスDLを選択し、第2セレクタは、S1=0の時には下位部分データバスDL、S1=1の時には上位部分データバスDHを選択するように構成されている。
【0040】
また、レジスタ選択部8は、レジスタ選択信号CHに従って、部分レジスタr1h〜r8hのいずれかを選択する第1マルチプレクサと、レジスタ選択信号CLに従って、部分レジスタr1l〜r8lのいずれかを選択する第2マルチプレクサとからなる。
【0041】
具体的には、第1マルチプレクサは、図2(b)に示すように、CH0〜CH2のビットパターンを2進数としてみた数値k(k=0〜7)に従い、i=k+1として、レジスタrihを選択するように構成されている。これと同様に、第2マルチプレクサは、図2(c)に示すように、CL0〜CL2のビットパターンを2進数としてみた数値k(k=0〜7)に従い、i=k+1として、レジスタrilを選択するように構成されている。
【0042】
そして、上位部分レジスタファイル4aを構成する各部分レジスタrihは内部上位バスIDHを介して、また、下位部分レジスタファイル4bを構成する各部分レジスタrilは内部下位バスIDLを介して、SIMD演算が可能な演算処理ユニット(図示せず)等に接続されている。つまり、演算処理ユニットは、レジスタr1〜rpをそのまま用いた2ワードデータの単一演算だけでなく、上位部分レジスタファイル4aを構成する各部分レジスタ(r1h〜r8h)同士、及び下位部分レジスタファイル4bを構成する各部分レジスタ(r1l〜r8l)同士で行う1ワードデータの並列演算も実行可能なように構成されている。
【0043】
なお、メモリには、図4(a)に示すように、mm1番地にベクトルAのx成分Ax、mm1+1番地にベクトルAのy成分Ay、続くmm1+2番地にベクトルAのz成分Az、mm1+3番地にベクトルAのw(ダミー)成分Awが格納され、同様に、mm2番地にベクトルBのx成分Bx、mm2+1番地にベクトルBのy成分By、mm2+2番地にベクトルBのz成分Bz、mm2+3番地にベクトルBのw(ダミー)成分Bwが格納されているものとする。
【0044】
このように構成された演算処理装置2では、ベクトルA(Ax,Ay,Az)とベクトルB(Bx,By,Bz)の外積演算をSIMD演算により実行する際に、以下に示すステップS1〜S6に従って、メモリアクセスと制御信号生成部10でのバス選択信号S及びレジスタ選択信号CH,CLの生成とを行い、各演算要素(ベクトル成分)を、SIMD演算の実行に適した並び順にしてレジスタr1〜r6に格納する。
【0045】
なお、各ステップは、いずれも動作クロックの1サイクルにて実行される。また、以下では、S=[S0,S1]、CH=[CH0,CH1,CH2]、CL=[CL0,CL1,CL2]とする。
[ステップS1]
・メモリアクセス :アドレスmm1(2ワードアクセス)
・バス選択信号 :S=[0,1]
・レジスタ選択信号:CH=[0,0,0],CL=[0,0,1]
これにより、アドレスmm1,mm+1に格納された2ワードデータのうち、バス選択信号Sにて選択された上位ワード(アドレスmm1)のデータ、即ちベクトルAのx成分Axが、レジスタ選択信号CH,CLにて選択されたr1h,r2lに、それぞれ格納される(レジスタ格納値:r1h←Ax,r2l←Ax)。
[ステップS2]
・メモリアクセス :アドレスmm1(2ワードアクセス)
・バス選択信号 :S=[1,0]
・レジスタ選択信号:CH=[0,1,0],CL=[0,0,0]
これにより、アドレスmm1,mm+1に格納された2ワードデータのうち、バス選択信号Sにて選択された下位ワード(アドレスmm1+1)のデータ、即ちベクトルAのy成分Ayが、レジスタ選択信号CH,CLにて選択されたr3h,r1lに、それぞれ格納される(レジスタ格納値:r3h←Ay,r1l←Ay)。
[ステップS3]
・メモリアクセス :アドレスmm1+2(2ワードアクセス)
・バス選択信号 :S=[0,1]
・レジスタ選択信号:CH=[0,0,1],CL=[0,1,0]
これにより、アドレスmm1+2,mm1+3に格納された2ワードデータのうち、バス選択信号Sにて選択された上位ワード(アドレスmm1+2)のデータ、即ちベクトルAのz成分Azが、レジスタ選択信号CH,CLにて選択されたr2h,r3lに、それぞれ格納される(レジスタ格納値:r2h←Az,r3l←Az)。
[ステップS4]
・メモリアクセス :アドレスmm2(2ワードアクセス)
・バス選択信号 :S=[0,1]
・レジスタ選択信号:CH=[1,0,0],CL=[0,1,1]
これにより、アドレスmm2,mm2+1に格納された2ワードデータのうち、バス選択信号Sにて選択された上位ワード(アドレスmm2)のデータ、即ちベクトルBのx成分Bxが、レジスタ選択信号CH,CLにて選択されたr5h,r4lに、それぞれ格納される(レジスタ格納値:r5h←Bx,r4l←Bx)。
[ステップS5]
・メモリアクセス :アドレスmm2(2ワードアクセス)
・バス選択信号 :S=[1,0]
・レジスタ選択信号:CH=[0,1,1],CL=[1,0,1]
これにより、アドレスmm2,mm2+1に格納された2ワードデータのうち、バス選択信号Sにて選択された下位ワード(アドレスmm2+1)のデータ、即ちベクトルBのy成分Byが、レジスタ選択信号CH,CLにて選択されたr4h,r6lに、それぞれ格納される(レジスタ格納値:r4h←By,r6l←By)。
[ステップS6]
・メモリアクセス :アドレスmm2+2(2ワードアクセス)
・バス選択信号 :S=[0,1]
・レジスタ選択信号:CH=[1,0,1],CL=[1,0,0]
これにより、アドレスmm2+2,mm2+3に格納された2ワードデータのうち、バス選択信号Sにて選択された上位ワード(アドレスmm2+2)のデータ、即ちベクトルBのz成分Bzが、レジスタ選択信号CH,CLにて選択されたr6h,r5lに、それぞれ格納される(レジスタ格納値:r6h←Bz,r5l←Bz)。
【0046】
このようなステップS1〜S6により、各レジスタr1〜r6に格納されたデータを演算要素として、レジスタr1,r4、レジスタr2,r5、レジスタr3,r6の間でSIMD演算を実行して、上位部分レジスタの値同士、下位部分レジスタの値同士で乗算を行うことにより、ベクトル外積を求める際に必要な6つの乗算値、Ax・By、Ay・Bx、Az・Bx、Ax・Bz、Ay・Bz、Az・Byを得る。
【0047】
以上説明したように、本実施形態の演算処理装置2では、データバスDを介してレジスタファイル4を構成するレジスタr1〜r8にデータを読み込む際に、データの並び順を1ワード(部分レジスタ/部分データバスDH,DL)毎に、任意に組み替えることができる。このため、データバスDを介してメモリから供給されるデータの並び順と、実際の処理のためにレジスタr1〜r8に格納すべきデータの並び順とが異なっていても、レジスタr1〜r8に読み込んでから再配列のための処理を別途行う必要がなく、処理時間を短縮することができる。
【0048】
しかも、このようなデータの並び順の組み替えを、セレクタからなる部分レジスタ選択部、及びマルチプレクサからなるバス選択部により簡易な構成にて実現しているため、装置構成を小型化できる。
なお、本実施形態では、ベクトル外積演算用のデータを各レジスタに設定するステップS1〜S6において、上位部分データバスDH又は下位部分データバスDLのいずれかを選択し、同一ステップにて両部分レジスタファイル4a,4bに同じ部分データバスが接続されるように制御しているが、以下に示すステップS11〜S16(但し、ステップS13,S16は、それぞれステップS3,S6と同じ)に示すように、同一ステップにて両部分レジスタファイル4a,4bに、互いに異なる部分データバスが接続されるように制御してもよい。
[ステップS11]
・メモリアクセス :アドレスmm1(2ワードアクセス)
・バス選択信号 :S=[0,0]
・レジスタ選択信号:CH=[0,0,0],CL=[0,0,0]
(レジスタ格納値 :r1h←Ax,r1l←Ay)
[ステップS12]
・メモリアクセス :アドレスmm1(2ワードアクセス)
・バス選択信号 :S=[1,1]
・レジスタ選択信号:CH=[0,1,0],CL=[0,0,1]
(レジスタ格納値 :r3h←Ay,r2l←Ax)
[ステップS13]
・メモリアクセス :アドレスmm1+2(2ワードアクセス)
・バス選択信号 :S=[0,1]
・レジスタ選択信号:CH=[0,0,1],CL=[0,1,0]
(レジスタ格納値 :r2h←Az,r3l←Az)
[ステップS14]
・メモリアクセス :アドレスmm2(2ワードアクセス)
・バス選択信号 :S=[0,0]
・レジスタ選択信号:CH=[1,0,0],CL=[1,0,1]
(レジスタ格納値 :r5h←Bx,r6l←By)
[ステップS15]
・メモリアクセス :アドレスmm2(2ワードアクセス)
・バス選択信号 :S=[1,1]
・レジスタ選択信号:CH=[0,1,1],CL=[0,1,1]
(レジスタ格納値 :r4h←By,r4l←Bx)
[ステップS16]
・メモリアクセス :アドレスmm2+2(2ワードアクセス)
・バス選択信号 :S=[0,1]
・レジスタ選択信号:CH=[1,0,1],CL=[1,0,0]
(レジスタ格納値 :r6h←Bz,r5l←Bz)
このステップS11〜S16に従って制御した場合、各部分レジスタにデータが格納される順番が異なるだけで、上記実施形態と同じ処理量、且つ同じ並び順で、レジスタr1〜r6に演算要素(ベクトルA,Bの各成分)を設定することができる。
【0049】
また、上記実施形態では、1ワード単位でアドレスを付与したメモリを用いることにより、メモリアクセスの最小単位が1ワードとされているが、図4(b)に示すように、2ワード単位でアドレスを付与したメモリを用いることにより、メモリアクセスの最小単位が2ワードとされていてもよい。
【0050】
また、上記実施形態では、m×nビットのデータバス、レジスタファイルにおいて、m=2の場合を用いて説明してきたが、mは2に限定されることはなく、2k (kは正整数)の構成とすることができ、kを大きくすることにより、データの並び順の組み換え時間の高速化、演算回路の小型化などの効果をより向上させることができる。
【図面の簡単な説明】
【図1】 実施形態の演算処理装置におけるレジスタ周辺の構成を示すブロック図である。
【図2】 バス選択部を構成するセレクタ、及びレジスタ選択部を構成するマルチプレクサの動作を説明するための表である。
【図3】 ベクトル外積演算をSIMD演算にて行う準備として、レジスタに演算要素を設定する際の手順を示す説明図である。
【図4】 メモリへのベクトルデータの格納状態を示す説明図である。
【図5】 従来装置におけるレジスタ周辺の構成を示すブロック図である。
【図6】 従来装置にてベクトル外積演算をSIMD演算にて行う準備として、レジスタに演算要素を設定する際の手順を示す説明図である。
【符号の説明】
2…演算処理装置、4…レジスタファイル、4a…上位部分レジスタファイル、4b…下位部分レジスタファイル、6…バス選択部、8…レジスタ選択部、10…制御信号生成部、データバス…D、IDL…内部下位バス、IDH…内部上位バス。
Claims (4)
- m×n(m,nはいずれも正整数)ビット幅のデータバスを介してデータが入出力される複数のレジスタからなるレジスタファイルと、
該レジスタファイルを構成する各レジスタを、それぞれnビット幅のm個の部分レジスタに分割し、各レジスタの同一桁の部分レジスタの集合からなるm個の部分レジスタファイル毎に、前記部分レジスタを一つずつ選択する部分レジスタ選択手段と、
前記データバスをnビット幅のm個の部分データバスに分割し、前記部分レジスタファイル毎に、前記部分レジスタ選択手段が選択した部分レジスタに接続すべき前記部分データバスを選択する部分データバス選択手段と、
を備え、前記データバスを介して供給されるデータの配列を、前記部分データバス単位で組み替えて前記レジスタに格納する演算処理装置において、
前記レジスタファイルを構成する各レジスタは二つの部分レジスタ(m=2)からなり、
前記部分レジスタ選択手段及び前記部分データバス選択手段は、3成分からなる二つのベクトルの外積演算が、前記レジスタを構成する各部分レジスタに対する演算を単一の演算命令で並列に処理するSIMD演算にて実行可能となるように、前記二つのベクトルの各成分を、6個のレジスタの各部分レジスタに格納することを特徴とする演算処理装置。 - 前記6個のレジスタの各部分レジスタに格納される二つのベクトルの各成分は、第1ベクトルの第1の成分と第2ベクトルの第1の成分、第1ベクトルの第2の成分と第2ベクトルの第2の成分、第1ベクトルの第3の成分と第2ベクトルの第3の成分はそれぞれ同一の属性を有し、
第1ベクトルの各成分は、第1の成分が第1の上位部分レジスタと第2の下位部分レジスタに、第2の成分が第1の下位部分レジスタと第3の上位部分レジスタに、第3の成分が第2の上位部分レジスタと第3の下位部分レジスタに格納され、
第2ベクトルの各成分は、第1の成分が第4の下位部分レジスタと第5の上位部分レジスタに、第2の成分が第4の上位部分レジスタと第6の下位部分レジスタに、第3の成分が第5の下位部分レジスタと第6の上位部分レジスタに格納されることを特徴とする請求項1記載の演算処理装置。 - 前記二つのベクトルにおいて同一の属性を有する成分は、立体空間における座標値を示すx成分,y成分,z成分からなり、前記第1の成分をx成分かつ前記第2の成分をy成分かつ前記第3の成分をz成分、又は前記第1の成分をz成分かつ前記第2の成分をy成分かつ前記第3の成分をx成分に対応させることを特徴とする請求項2記載の演算処理装置。
- シェーディングによる画像処理を実行することを特徴とする請求項1〜3いずれか記載の演算処理装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002300511A JP4107043B2 (ja) | 2002-10-15 | 2002-10-15 | 演算処理装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002300511A JP4107043B2 (ja) | 2002-10-15 | 2002-10-15 | 演算処理装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2004139156A JP2004139156A (ja) | 2004-05-13 |
JP4107043B2 true JP4107043B2 (ja) | 2008-06-25 |
Family
ID=32449185
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2002300511A Expired - Fee Related JP4107043B2 (ja) | 2002-10-15 | 2002-10-15 | 演算処理装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP4107043B2 (ja) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4349265B2 (ja) * | 2004-11-22 | 2009-10-21 | ソニー株式会社 | プロセッサ |
-
2002
- 2002-10-15 JP JP2002300511A patent/JP4107043B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JP2004139156A (ja) | 2004-05-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110494851B (zh) | 可重构并行处理 | |
KR101202445B1 (ko) | 프로세서 | |
US6915410B2 (en) | Compiler synchronized multi-processor programmable logic device with direct transfer of computation results among processors | |
US20030046513A1 (en) | Arrayed processor of array of processing elements whose individual operations and mutual connections are variable | |
JP2011511986A (ja) | プロセッサ | |
US20200241844A1 (en) | Matrix normal/transpose read and a reconfigurable data processor including same | |
JP7148526B2 (ja) | データ処理装置におけるベクトルによる要素演算 | |
KR20190119076A (ko) | 데이터 처리장치에서의 곱셈-누적 | |
JPH10187661A (ja) | コンピュータにおけるスカラ値をベクトルに記入する方法 | |
JP4686435B2 (ja) | 演算装置 | |
JP4107043B2 (ja) | 演算処理装置 | |
JP7038608B2 (ja) | 半導体装置 | |
EP1836601A2 (en) | Dynamically reconfigurable processor | |
JP2022101472A (ja) | 低レイテンシのモジュラ乗算のためのシステム及び方法 | |
JP2002269067A (ja) | 行列演算装置 | |
JP7213095B2 (ja) | ベクトルレジスタのアクセス | |
JPH11213024A (ja) | 回路合成方法、回路合成装置および記録媒体 | |
WO2020084694A1 (ja) | 演算処理装置及び演算処理装置の制御方法 | |
JP2885197B2 (ja) | 演算処理装置及び演算処理方法 | |
JPH1063647A (ja) | 行列演算装置 | |
JP3702475B2 (ja) | 回路自動生成装置 | |
JP2654451B2 (ja) | データ出力方法 | |
JPS63250738A (ja) | デ−タ処理用プロセツサ | |
KR20060122520A (ko) | 데이터 경로의 재구성이 가능한 디지털 신호 처리기 | |
JP2019159183A (ja) | 情報処理装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20041115 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20071220 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20080108 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20080212 |
|
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: 20080311 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20080324 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110411 Year of fee payment: 3 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120411 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120411 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130411 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130411 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20140411 Year of fee payment: 6 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
LAPS | Cancellation because of no payment of annual fees |