JP3940542B2 - データプロセッサ及びデータ処理システム - Google Patents
データプロセッサ及びデータ処理システム Download PDFInfo
- Publication number
- JP3940542B2 JP3940542B2 JP2000073926A JP2000073926A JP3940542B2 JP 3940542 B2 JP3940542 B2 JP 3940542B2 JP 2000073926 A JP2000073926 A JP 2000073926A JP 2000073926 A JP2000073926 A JP 2000073926A JP 3940542 B2 JP3940542 B2 JP 3940542B2
- Authority
- JP
- Japan
- Prior art keywords
- data
- instruction
- bit
- data processor
- vector
- 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
- 238000012545 processing Methods 0.000 title claims description 99
- 238000007667 floating Methods 0.000 claims description 67
- 239000013598 vector Substances 0.000 claims description 65
- 238000012546 transfer Methods 0.000 claims description 22
- 238000000034 method Methods 0.000 description 25
- 238000010586 diagram Methods 0.000 description 14
- 230000008569 process Effects 0.000 description 14
- 238000004364 calculation method Methods 0.000 description 13
- 238000010606 normalization Methods 0.000 description 10
- 238000007792 addition Methods 0.000 description 7
- 230000002093 peripheral effect Effects 0.000 description 7
- 238000009877 rendering Methods 0.000 description 7
- 239000011159 matrix material Substances 0.000 description 6
- 102100028162 ATP-binding cassette sub-family C member 3 Human genes 0.000 description 4
- 102100028187 ATP-binding cassette sub-family C member 6 Human genes 0.000 description 4
- 101000986633 Homo sapiens ATP-binding cassette sub-family C member 3 Proteins 0.000 description 4
- 101000986621 Homo sapiens ATP-binding cassette sub-family C member 6 Proteins 0.000 description 4
- 101001014572 Homo sapiens MARCKS-related protein Proteins 0.000 description 4
- 238000006243 chemical reaction Methods 0.000 description 4
- 230000009466 transformation Effects 0.000 description 4
- 230000000694 effects Effects 0.000 description 3
- 230000004044 response Effects 0.000 description 3
- 101150040096 SFT2 gene Proteins 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 101150018075 sel-2 gene Proteins 0.000 description 2
- 101150096886 sft-1 gene Proteins 0.000 description 2
- 101100108883 Arabidopsis thaliana ANL2 gene Proteins 0.000 description 1
- 101100179914 Arabidopsis thaliana IPT2 gene Proteins 0.000 description 1
- 101100179915 Arabidopsis thaliana IPT3 gene Proteins 0.000 description 1
- 102100021568 B-cell scaffold protein with ankyrin repeats Human genes 0.000 description 1
- 101000971155 Homo sapiens B-cell scaffold protein with ankyrin repeats Proteins 0.000 description 1
- 101150085452 IPT1 gene Proteins 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000007423 decrease Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 229910021421 monocrystalline silicon Inorganic materials 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 239000000758 substrate Substances 0.000 description 1
- 210000003813 thumb Anatomy 0.000 description 1
- 238000000844 transformation Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/80—Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
- G06F15/8007—Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors single instruction multiple data [SIMD] multiprocessors
- G06F15/8023—Two dimensional arrays, e.g. mesh, torus
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/80—Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
- G06F15/8053—Vector processors
- G06F15/8092—Array of vector units
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3877—Concurrent instruction execution, e.g. pipeline, look ahead using a slave processor, e.g. coprocessor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units
- G06F9/3887—Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple data lanes [SIMD]
-
- 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/483—Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
Description
【発明の属する技術分野】
本発明はマイクロプロセッサ等のデータ処理を行うデータプロセッサ、更には3次元グラフィック制御に好適なデータ処理システムに適用して、効率良く演算並列度を向上させる技術に関するものである。
【0002】
【従来の技術】
3次元グラフィックス処理を行うデータプロセッサとして、「MICROPROCESSOR REPORT,vol.13,no.5, April.19,1999, pp.1,6-11」では、1命令で4つの浮動小数点積和演算を実行するSIMD(Single Instruction Multiple Data) 型浮動小数点ユニットを2つ内蔵するプロセッサが示されている。ここで示されているプロセッサは、1つの浮動小数点積和演算で乗算と加算の2演算、4つで8演算、2ユニットでは計16演算を行うことが可能となっている。更に、上記の2ユニットの他に、通常の浮動小数点積和演算器が2つあるため、更に4演算を行うことが可能であり、合計20演算を1サイクルで行うことが可能となっている。
【0003】
また、上記以外のデータプロセッサとして、「IEEE Micro,vol.18,no.2, March/April 1998, pp.26-34」においては、浮動小数点の内積を求めるための命令を有し、1命令で4つの乗算と3つの加算を実行して、2つの4元ベクトルの内積を求めることが可能となるプロセッサが示されている。内積を求めるための命令の実行時には、1サイクルに7つの演算を行う。
【0004】
また、特開平10−124484においても、4つの乗算器に8つの浮動小数点数を与え、その乗算結果を4入力加算器で並列的に加算し、1回の並列的な乗算と加算とによって内積を求めることが可能なデータプロセッサが示されている。
【0005】
【発明が解決しようとする課題】
本発明者は、マルチメディア機器において、浮動小数点数を用いたグラフィック処理を従来以上に高速化することが可能なデータプロセッサ及び、データ処理システムについて検討を行った。
【0006】
マルチメディア機器向けデータプロセッサ、及びマルチメディア処理を行うデータ処理システムにおいて、重要かつ負荷の重い処理は、三次元グラフィクス処理と画像処理である。このうち、画像処理については規格化がなされているため、最も製造コストのかからない実現方法は専用ハードウェアを搭載することである。従来のプロセッサにおいても画像処理用の専用ハードウェアを搭載しているものは既に存在している。
【0007】
一方、三次元グラフィクス処理においては、座標計算等のジオメトリ処理と配色等のレンダリング処理とが必要となる。レンダリング処理については、汎用プロセッサ向きでなく、定型的な処理が一般的なため、高速処理が必要ならば専用ハードウェアを用いるのが一般的である。これに対して、座標計算等のジオメトリ処理については、自由度が高く浮動小数点データを扱うため、プロセッサの浮動小数点ユニットで処理するのが一般的である。このジオメトリ処理において最も頻繁に行われるのが4元ベクトル内積演算である。輝度計算は内積、座標変換は4×4行列と4元ベクトルの積、変換行列生成は4×4行列同士の積を求めることで処理される。それらの処理は、輝度計算が1回の4元ベクトル内積演算、座標変換が4回の4元ベクトル内積演算、変換行列生成については16回の4元ベクトル内積演算を行うことによって求めることができる。従来のプロセッサにおいて、4元ベクトル内積演算に特化して高速化を図り、効率的にジオメトリ処理の高速化を達成したものも存在している。
【0008】
しかし、三次元グラフィクス処理の高速化要求は極めて強く、動画像のリアリティを増すためには、更なる高速化が必要である。しかしながら、グラフィクス処理の基本データは4元ベクトルであるため、従来のプロセッサの方式では並列度をこれ以上上げることは困難である。FIR(Finite Impulse Response)フィルタ処理のように、多元ベクトル内積命令を定義すれば高速化されるアプリケーションも多いが、コンシューママルチメディア分野で最も高い浮動小数点演算性能が要求されるのは三次元グラフィクス処理である。従来知られているベクトル内積命令を有するプロセッサが効率的に並列度を向上したとしても、三次元グラフィクス処理の高速化に寄与しなければ意味がないものとなる。
【0009】
一方、SIMD方式では、原理的には並列度を上げることは容易である。しかし、SIMD方式は非効率な面も有しており、並列度を上げることによるコストは極めて増大する傾向にある。従来存在しているプロセッサにおいても既に大きな面積を割いているSIMD部分を更に何倍にもすることは現実的な解決方法とは言えない。例えば、従来の技術で示した第1の文献のデータプロセッサでは、上述した性能を実現するために、実際に10個の浮動小数点積和演算器を内蔵しており、チップ面積は0.25μmプロセスで製作したとしても、240平方ミリメートルと巨大な面積を必要とする。このうち、4つの浮動小数点積和演算を実行する並列SIMD型浮動小数点ユニットの面積をチップ写真から推定すると22平方ミリメートル程度となる。除算器を完全には4並列SIMD化していないことと、制御回路は必ずしも4倍にならないこと等により、通常の浮動小数点ユニットの面積の約3倍程度必要となる。
【0010】
また、従来の技術で示した第2の文献で示されているデータプロセッサのチップ面積は、0.25μmプロセスで製作したとすれば56平方ミリメートル程度となる。このうち、浮動小数点ユニットの面積をチップ写真から推定すると、10平方ミリメートル程度となる。そして、内積命令用演算器を除いた面積は約7.5平方ミリメートル程度である。したがって、内積命令追加により浮動小数点ユニットの面積が約1.3倍になっていることとなる。
【0011】
本発明の目的は、演算並列度を効率的向上したデータプロセッサ及びデータ処理システムを提供することである。
【0012】
本発明の別の目的は、回路規模の増大を極力抑え、浮動小数点数の演算を高精度かつ高速に処理することが可能なデータプロセッサ及びデータ処理システムを提供することである。
【0013】
【課題を解決するための手段】
本願において開示される発明のうち、代表的なものの概要を簡単に説明すれば下記の通りである。
【0014】
すなわち、データプロセッサは、浮動小数点数の演算処理能力を向上させるため、SIMD型演算器を内部に構成し、前記SIMD型演算器にベクトルデータの処理を行わせるための単一の命令を有している。また、データプロセッサは、浮動小数点数の演算処理能力を向上させるため、SIMD型演算器を有し、前記SIMD型演算器にベクトルデータの演算を行わせるための命令が、命令セットの中に含まれているものである。更に、前記SIMD型演算器は、浮動小数点数の積和演算を行う複数の演算器を有しているものである。
【0015】
また、データプロセッサの命令セットには、前記データプロセッサにベクトルデータの内積とスカラーデータとの和を演算させるための命令が含まれている。その命令により、データプロセッサは、例えば4元ベクトルと4元ベクトルとの内積と、前記内積とスカラーデータとの和を一つの命令により求めることを可能とするものである。前記演算を行うため、データプロセッサは、浮動小数点演算器を有しているものである。浮動小数点演算器は、処理能力を高めるためにSIMD型演算器とすることも出来る。
【0016】
前記SIMD型演算器を構成している演算器或いは浮動小数点演算器は、ベクトルの内積とスカラーデータとの和を高速に演算するため、多入力加算器を有しているものである。3次元グラフィックス処理を高速に行うため、3次元グラフィックス処理において多用される4元ベクトル処理に特化したデータプロセッサにおいては、演算器は9入力加算器を有するものである。
【0017】
また、データプロセッサの命令セットには、一つの命令によって前記データプロセッサに行列データとベクトルデータとの積を演算させるものである。この命令により、データプロセッサは、4×4行列と4元ベクトルとの積を一つの命令で演算することが可能となる。データプロセッサは、前記命令を処理するため、ベクトルデータとベクトルデータとの内積を求める浮動小数点演算器を複数個有しているものである。3次元グラフィックス処理において多用される4×4行列と4元ベクトルとを用いた演算処理を高速に行うことが可能となる。前記浮動小数点演算器のそれぞれは、内積とスカラーデータとの和とを求めることも可能なものである。また、前記演算器は、多入力加算器を有しているものである。
【0018】
本発明の前記並びにその他の目的と新規な特徴等については、本願発明の明細書の記述及び添付の図面より明らかになるであろう。
【0019】
【発明の実施の形態】
図1は本発明を適用したデータプロセッサDPの構成図である。本実施例のデータプロセッサDPは、整数を処理する能力を有する整数ユニットとしての中央処理装置CPU、浮動小数点数の演算を行うSIMD型浮動小数点ユニット(Single Instruction Multiple Data Floating-point Unit)FPU、命令キャッシュICA、データキャッシュDCA、バスコントローラBSC、複数の周辺モジュールPM、アドレス端子AT、データ端子DT等を有している。中央処理装置CPUとSIMD型浮動小数点ユニットFPUとは、命令バスIBを介して命令キャッシュICAに接続されており、命令キャッシュより命令を取り込む。中央処理装置とSIMD型浮動小数点ユニットとが取り込む命令を指定するためのアドレスは、命令アドレスバスIAを介して中央処理装置より与えられる。中央処理装置とSIMD型浮動小数点ユニットとデータキャッシュDCAとは、データバスDBに接続されている。データキャッシュには、データアドレスバスDAを介して中央処理装置よりデータアドレスが供給される。命令キャッシュICAとデータキャッシュDCAとは、キャッシュコントローラを有しているが、図示は省略している。命令キャッシュ及びデータキャッシュは、データ信号やコントロール信号も伝達されるキャッシュバスCBを介してバスコントローラBSCに接続されている。命令キャッシュにおいて、キャッシュミス等が生じた場合、外部アクセスのための命令アドレスは外部アクセス命令アドレスバスEIAを介してバスコントローラに与えられる。また、データキャッシュにおいて、キャッシュミス等が生じた場合、外部アクセスのためのデータアドレスは外部アクセスデータアドレスバスEDAを介してバスコントローラに与えられる。バスコントローラは、キャッシュより送られた命令アドレス又はデータアドレスに従って、アドレス端子AT及びデータ端子DTを介して接続される外部メモリなどをアクセスするために、外部バスサイクルを起動する。その後、バスコントローラは、外部メモリなどよりデータ端子に到着した命令或いはデータを、キャッシュバスCBを介して命令キャッシュ或いはデータキャッシュに供給する。また、バスコントローラには、特に制限されないが、タイマやシリアルコミュニケーションインタフェースコントローラ等の周辺回路PMが周辺バスPBを介して接続されている。尚、本実施例のデータプロセッサは、特に制限されないが、単結晶シリコンのような一つの半導体基板上に形成されている。また、特に制限される訳ではないが、本実施例のデータプロセッサは、RISC(Reduced Instruction Set Computer)アーキテクチャを有し、命令セットの中には浮動小数点命令を有する。浮動小数点命令は、メモリ効率を高めるために16ビット長であっても良く、命令数が多くなっても対応できるように32ビット長であってもよいが、それらに限定される訳ではない。
【0020】
本実施例のデータプロセッサをマルチメディア機器、例えばビデオゲーム機器などへ組み込むことで、3次元グラフィックスを充分にサポートしたデータ処理システムを実現することが可能となる。
【0021】
次に、図1に示したデータプロセッサDPについて詳細な説明を行う。本実施例のデータプロセッサは、面積を節約するために、SIMD型浮動小数点ユニットFPUはメモリアドレシング能力を持っていない。つまり、中央処理装置CPUはSIMD型浮動小数点ユニットに代わってメモリアドレシング機能を有することとなる。そのため、中央処理装置は、SIMD型浮動小数点ユニットのためにメモリからデータのフェッチを行うだけでなく、SIMD型浮動小数点ユニットのために浮動小数点命令を含む全ての命令をメモリからフェッチする。中央処理装置によってフェッチされた命令は、命令バスIBを介して中央処理装置とSIMD型浮動小数点ユニットとの双方に取り込まれてデコードされる。中央処理装置は、デコードした命令がCPU命令であった場合にはデコードした命令に従って整数処理を実行し、デコードした命令が浮動小数点命令であった場合にはSIMD型浮動小数点ユニットに代わってアドレシング処理などを行う。SIMD型浮動小数点ユニットは、デコードした命令がCPU命令であった場合には命令を無視し、デコードした命令が浮動小数点命令であった場合にはデコードした命令に従って浮動小数点演算を行う。ここで、デコードした命令がロード又はストア命令である場合、中央処理装置はデータアドレスをデータキャッシュに出力してデータのロード又はストアを要求する。その要求に対してデータキャッシュDCAは、入力されたデータアドレスのデータをデータバスDBへロード又はデータバスからストアする。尚、ストアの場合も通常のコピーバックキャッシュの外部アクセスはリードであり、リードによってキャッシングされたキャッシュラインの一部にストア動作を行う。但し、キャッシングの際に有効かつ更新されたキャッシュラインがリプレースされた場合は、キャッシュラインを外部にコピーバックする。ロード又はストア命令の対象レジスタがSIMD型浮動小数点ユニットのレジスタであった場合、SIMD型浮動小数点ユニットはロード命令ならばデータバス上の値をSIMD型浮動小数点ユニットのレジスタに書き込み、ストア命令ならばデータバス上にSIMD型浮動小数点ユニット内のレジスタの値を出力する。尚、SIMD型浮動小数点ユニットによるロード及びストアに関してはで図3を用いて詳述する。
【0022】
図2は図1のデータプロセッサDPのSIMD型浮動小数点ユニットFPUの構成図である。図中の命令デコーダIDECは、命令バスIBから供給される命令をデコードし、デコード結果に基づき制御信号CTRLを生成し、4つのベクトル浮動小数点ユニットV−FPUを制御する。各ベクトル浮動小数点ユニットV−FPUは128ビット幅を有するバスを介してデータバスDBに接続されている。それぞれの浮動小数点ユニットは、制御信号CTRLに従いロード/ストア及び浮動小数点演算の処理を実行する。データバスDBのバス幅については、128ビット、256ビット或いは512ビット等で構成することが可能である。512ビット幅にすると配線量は大きくなるが、各ベクトル浮動小数点ユニットが専用の128ビットバスを持てるため制御が簡単になる。但し、512ビット幅のデータバスを有効活用するにはデータキャッシュDCAを512ビット幅または128ビット幅の4バンクといった構成にする必要がある。データバスが128ビット幅の場合、データバスのビット分割または時分割が必要である。例えば、各ベクトル浮動小数点ユニットが32ビットアクセスをしてSIMD型浮動小数点ユニット全体で128ビットアクセスする場合はビット分割で対応する。一方、各ベクトル浮動小数点ユニットが128ビットアクセスをする場合は時分割が必要である。また、あるベクトル浮動小数点ユニットが128ビットアクセスを行い、他のベクトル浮動小数点ユニットについては動作行わせないためのNOP(non-operation)命令を定義する方式もある。
【0023】
図3は図2で示したベクトル浮動小数点ユニットV−FPUの一つについて示した構成図である。浮動小数点演算命令実行時には32ビット4バンクレジスタファイルRGSTの2つの4バンクリードポートX、Yと1つの通常リードポートZからレジスタ値を演算ブロックEBLKへ転送し、演算ブロックでの演算処理を行う。演算ブロックでの演算処理後、演算用ライトポートVからレジスタファイルに演算結果を書き込む。ロード命令実行時には、転送ブロックTBLKはロード制御信号LDCによってデータバスDBにのせられたロードすべきデータを選択し、レジスタファイルの転送用4バンクライトポートUを介してレジスタファイルに書き込む。データの転送幅が128ビット未満の場合、ライトアライナWALNはデータを適宜アライメントしてUポートに送る。ストア命令実行の場合、転送ブロックTBLKはレジスタファイルRGSTの転送用4バンクリードポートWからストアデータを読み出し、バスドライブ信号BDCに基づいて読み出したデータをデータバスに転送する。この場合も、転送幅が128ビット未満の場合はリードアライナRALNによって適宜アライメントしてデータバスに送る。また、レジスタ間転送命令実行時には、転送ブロックは、リードポートWからレジスタ値を読み出し、ロード制御信号LDCによってリードポートWより読み出されたデータ選択し、ライトポートUからレジスタファイル書き込む。この場合も、転送幅が128ビット未満の場合、リードアライナまたはライトアライナで適宜アライメントを行いレジスタ間転送を行う。
【0024】
尚、レジスタの構成方法として、32ビット幅のレジスタファイルをレジスタ番号で4バンクに分割して定義する方法と、128ビット幅のレジスタをビット方向に4分割して定義する方法との2つが考えられる。前者の利点は32ビット幅で4元ベクトルを定義できることであり、後者の利点は1本のレジスタで4元ベクトルを定義できることである。しかし、後者の方法では、データがベクトルかスカラかによらず1本のレジスタに収まるため、レジスタリード・ライトやフォワーディング処理が容易ではあるが、レジスタの使用効率や拡張性が悪くなる。例えば、128ビット幅のレジスタに対して内積命令を定義した場合、演算出力を格納するレジスタについても128ビットであるため、上位96ビットが無駄になってしまう。また、内積命令の定義に128ビット幅を使用してしまうと、内積命令のSIMD化が困難となる。例えば4並列にしようとすると512ビット幅が必要となる。一方、前者の方式では32ビット幅で4元ベクトル内積命令が定義できるため、出力レジスタの無駄はなくSIMD化が容易である。以上より、レジスタファイルをレジスタ番号で4バンクに分割して4元ベクトルを定義し、その4元ベクトルに対して内積命令を定義し、レジスタファイルと内積命令とをSIMD化して並列度を上げることが可能であり、効率的に1命令あたりの並列度を上げることができる。本実施形態では前者の方法を採用することとする。
【0025】
図4は図3の32ビット4バンクレジスタファイルRGSTの構成図である。4つあるバンクのそれぞれのバンクBANK0、BANK1、BANK2、BANK3は、4リード、2ライト、32ビット、16本のレジスタファイルから構成される。つまり、レジスタ数は4バンク×16本で、合計64本となる。レジスタファイルは、6ビットで規定されるレジスタ番号の上位4ビットと、レジスタライト制御装置であるWCUとWCVからのライトイネーブル信号、WEU[0]、WEU[1]、WEU[2]WEU[3]、WEV[0]、WEV[1]、WEV[2]WEV[3]によって制御されている。
【0026】
レジスタライト制御装置であるWCUは、ライトレジスタ番号WNUの下位2ビット42とライトサイズWSIZEとから、ライトするバンクを決定し、更にライト指示WRITUがアサートされたら、ライトすべきバンクのライトイネーブル信号WEUをアサートする。ライトサイズWSIZEが128ビットの場合は、ライトレジスタ番号WNUに関係なく全てのバンクのライトイネーブル信号をアサートする。ライトサイズが64ビットの場合は、ライトレジスタ番号WNUに応じてバンク0、1または2、3のライトイネーブル信号をアサートする。ライトサイズが32ビットの場合は、ライトレジスタ番号WNUに応じて4つのバンクのうち、1つのバンクを指定するためのライトイネーブル信号をアサートする。以上により、転送用4バンクライトポートUを介してレジスタにデータが書き込まれる。演算用ライトポートVを介してレジスタにデータを書き込む場合、演算用ライトポートは常に32ビットライトなので、レジスタライト制御装置WCVはライト指示WRITVがアサートされたら、ライトレジスタ番号WNVの下位2ビット42に応じて4バンクのうち、1つのバンクを指定するためのライトイネーブル信号WEVをアサートする。
【0027】
各バンクでは、リードレジスタ番号RNW、RNX、RNY、RNZの上位4ビット41によって、16本の内の1本の32ビットレジスタが指定される。本実施例では、バンクが4つあるため、合計4本のレジスタをリードして出力することが可能である。転送用4バンクリードポートWは、転送幅が128ビット未満の場合は転送ブロックTBLKがアライメントするので、各バンクの出力を直接出力する。4バンクリードポートX、Yポートは、ベクトル命令用の128ビット出力時は転送用4バンクリードポート同様、各バンクの出力を直接出力する。また、通常演算用の32ビット出力時にはレジスタ番号RNW、RNX、RNY、RNZの下位2ビット42を用い、セレクタ432と433とにより、リードすべきバンクを選択しX[0]とY[0]とに出力する。通常リードポートZは、通常の32ビットポートなので、常にレジスタ番号RNW、RNX、RNY、RNZの下位2ビット42を用い、セレクタ431により、リードすべきバンクを選択して出力する。この結果、X[0]、Y[0]、Zには64本のレジスタの任意の3本の値を載せることができる。
【0028】
なお、本実施例のレジスタファイルRGSTは、転送系の転送用4バンクライトポートU、転送用4バンクリードポートWと、演算系の演算用ライトポートV、4バンクリードポートX、Y、通常リードポートZとにポートが分かれているため、スーパスカラやVLIW(Very Long Instruction Word)アーキテクチャを適用することも可能である。
【0029】
図5は図3の演算ブロックEBLKの構成図である。本実施例の演算ブロックは2つの浮動小数点4元ベクトルの内積と浮動小数点数との和を計算する。即ち、X[0]×Y[0]+X[1]×Y[1]+X[2]×Y[2]+X[3]×Y[3]+Zを計算する。符号処理部SPP、指数処理部EPP、4つの乗算部(MLP0、MLP1、MLP2、MLP3)、4つのアライナ(ALN0、ALN1、ALN2、ALN3)、ZアライナALNZ、9入力加算器ADDR、正規化部NORから成る。正規化部NORは、正規化以外に、正数化や丸め処理も行う。
【0030】
入力される各X及び各Yの浮動小数点数の符号部は符号処理部SPPへ、指数部は指数処理部EPPへ、仮数部は乗算部(MLP0、MLP1、MLP2、MLP3)へ入力される。
【0031】
符号処理部SPPは、X及びYの符号が入力され、X×Y4つの積の符号S[0]、S[1]、S[2]、S[3]をEORゲートによって生成する。更に、その結果とZの符号SZとのEORを取ることにより、4つの積がZと異符号かどうかをチェックし、チェック結果をInv[0]、Inv[1]、Inv[2]、Inv[3]として各アライナALN0、ALN1、ANL2、ALN3及び9入力加算器ADDRに出力する。異符号の基準としたSZは正数化前の符号となるので正規化部NORに送られる。
【0032】
指数処理部EPPは、X×Yの4つの積の指数部とZの指数部との5つ項の中での最大指数Emaxを求めて正規化部に送出する。更に、Emaxと各項の指数差を求め、Ediff[0]、Ediff[1]、Ediff[2]、Ediff[3]、EdiffZとして5つのアライナALN0、ALN1、ALN2、ALN3、ALNZに出力する。詳細については図6〜10で説明する。
【0033】
各乗算部MLP0、MLP1、MLP2、MLP3には、各X及び各Yの仮数部が入力される。入力されたXの仮数部及びYの仮数部の積をキャリー保存形式で求め、MC[0]とMS[0]、MC[1]とMS[1]、MC[2]とMS[2]、MC[3]とMS[3]のペアとしてそれぞれ対応するアライナALN0、ALN1、ALN2、ALN3に出力する。キャリー保存形式とは、キャリー伝播加算器で加算すると通常の2進数となる形式で、キャリー伝播なしで生成することができるため高速に生成できる。
【0034】
アライナALN0、ALN1、ALN2、ALN3は、符号処理部SPPからの異符号Inv、及び指数処理部EPPからの指数差Ediffによって、乗算部MLP0、MLP1、MLP2、MLP3から出力されるキャリー保存形式の仮数部の積のアライメント及び論理反転を行う。各アライナの出力は、MCaln[0]とMSaln[0]、MCaln[1]とMSaln[1]、MCaln[2]とMSaln[2]、MCaln[3]とMSaln[3]のペアとして9入力加算器ADDRに送られる。詳細は図10で説明する。Zアライナは、指数処理部からの指数差EdiffZによって、Zの仮数部MZのアライメントを行い、MZalnとして9入力加算器に送る。詳細は図11で説明する。
【0035】
9入力加算器は、MCaln[0]、MSaln[0]、MCaln[1]、MSaln[1]、MCaln[2]、MSaln[2]、MCaln[3]、MSaln[3]、及びMZalnを加算し、結果をMacmとして正規化部に送出する。異符号の項の加算のために、4つのアライナALN0、ALN1、ALN2、ALN3で4つのキャリー保存形式ペアの論理反転が行われるが、符号反転のためには更に+1する必要がある。+1は9入力加算器へのキャリーインで行うため、Inv[0]、Inv[1]、Inv[2]、Inv[3]を入力してキャリーイン数を制御している。詳細は図12、14を用いて説明する。
【0036】
正規化部NORは、符号生成部からのSZ、指数処理部からのEmax、9入力加算器からのMacmを受け取り、通常の浮動小数点演算器と同様に正規化、正数化及び丸めを行い、最終演算結果Vを生成してレジスタファイルRGSTに送る。
【0037】
図6は、指数処理部EPPについての説明である。この例では、高速化のために指数差を4入力加算器で直接求めている。一般的には、4つの積の指数部を求め、これとZの指数部の中から最大指数部を求め、さらに各指数部と最大指数部の差をとって指数差を求める手法が考えられるが、低速である上に、4つの加算器、4〜10個の大小比較器(比較の並列度によって異なる)、5つの減算器が必要となり、論理規模が削減される訳ではない。本実施形態の指数処理部は、図6に示したように、指数差生成部EDGと出力選択部EOSとから成る。
【0038】
図7は、指数差生成部EDGの構成である。5項から選び得る全ての2項の指数差を10個の4入力加算器FADRで求めている。例えば、X[0]×Y[0]とX[1]×Y[1]の指数差は、EX[0]+EY[0]−EX[1]−EY[1]である。各指数部は、規格に基づくバイアス“127”がかかっている。しかし、上式では4つのバイアスが打ち消し合うので上式で求めた指数差のバイアスは“0”である。一方、X[3]×Y[3]とZの指数差は、EX[3]+EY[3]−EZ−127である。バイアスが打ち消されるように−127を行う。
【0039】
図8は図7の4入力加算器FADRの詳細を示した図である。4つの入力IPT0、IPT1、IPT2、IPT3とが入力される8ビット4入力キャリー保存加算器FADRSと、9ビットキャリー伝播加算器FADRPから成る。図7では4項のうち2項を論理反転しただけなので、この2項の符号反転のために、2ビットのキャリーインがある。指数差の範囲を−510〜510で表現するには符号付き2進数で10ビットが必要なため、入力を10ビットまで符号拡張して10ビット幅で計算するのが単純である。しかし、実際には上位ビットは冗長であるため図8に示した構成とする。本実施形態の構成では、ビットキャリー伝播加算器FADRPからのキャリーアウトは4入力加算結果が正の場合に1となる。したがって、キャリーアウトは符号反転しなかった指数の方が大きいか2つの指数が等しいことを表わしている。このキャリーアウトをGE信号として出力し、指数部の大小判定に使用する。尚、8ビット4入力キャリー保存加算器は図15のような1ビット4入力キャリー保存加算器を8個並べることにより構成される。
【0040】
図9は図6の出力選択部EOSの詳細を示した図である。まず、620において、指数差生成部EDGから出力される10本のGE信号(GE01、GE02、GE03、GE12、GE13、GE0Z、GE1Z、GE2Z、GE3Z)に基づき、選択制御信号sel0、sel1、sel2、sel3、selzを生成する。sel0、sel1、sel2、sel3、selzのそれぞれは、X[0]×Y[0]、X[1]×Y[1]、X[2]×Y[2]、X[3]×Y[3]、Zが最大指数を持つことを表わしている。但し、指数部が等しい場合は、この順に優先度があり、選択制御信号はホットワンであることが保証されている。例えば、全ての指数部が等しい場合はsel0のみがアサートされる。次に、630において、上記で生成された選択制御信号を基に最大指数Emaxを生成する。4入力加算器FADRで指数差を直接生成したため、最大指数は630において改めて生成することとなる。図のように、631及び632において、選択制御信号で指数部を選択し、8ビットキャリー伝播加算器633で加算する。尚、EZを選択した場合は、他の場合とバイアスを合わせるためにEZ+127を計算する。次に、640〜644において、各項の指数差Ediff[0]、Ediff[1]、Ediff[2]、Ediff[3]、EdiffZを求める。Emaxを求める前に指数差を計算しているため、指数差が「Emax−各項の指数」となっていないため、符号反転しなければならない場合が存在する。このため、指数差生成部EDGから出力される指数差の一部については、セレクタ入力前に論理反転させている。更に、自分自身が最大指数であった場合は指数差は“0”なので、“0”を入力している。また、符号反転を完結させるには論理反転後に+1する必要がある。そこで、+1が必要であることを示す信号Ediffp1[0]、Ediffp1[1]、Ediffp1[2]、Ediffp1[3]、Ediffp1Zを、650によって求める。尚、本実施例では、指数差に対する+1は行わず、指数差を使用するアライナにおいて、+1が必要な場合には+1の代りに1ビットシフトしている。
【0041】
図10において、アライナALN0、ALN1、ALN2、ALN3について説明する。本実施例のアライナは、キャリー保存形式の4つの積のアライナである。キャリー側MC[n](nは0から3までの数)用とサム側MS[n]用とにアライナが2つあり、同一の信号で制御される。まず、シフタSFT1、SFT2により、指数差Ediff[n]分だけ右シフトを行う。次にEdiffp1[n]が1の場合、1ビットシフタSFT1’、SFT2’において、更に1ビットシフトする。そして、662及び672においては、Inv[n]が1の場合、論理反転を行う。以上により、MC[n]に対応してはMCaln[n]を出力し、MS[n]に対応してはMSaln[n]を出力する。
【0042】
図11はZアライナALNZである。まず、シフタSFTZに入力されるMZを指数差EdiffZだけ右シフトする。次に、1ビットシフタSFTZ’においてEdiffp1Zが1の場合、更に1ビットシフト行い、結果をMZalnとして出力する。尚、異符号判定をZを基準に行っているため、Zの符号反転は不要である。
【0043】
図12においては、図5で示した9入力加算器ADDRについて詳細について説明する。本実施例では、9入力加算ではあるがキャリー保存形式によって5入力が9入力になっているため、桁数増加は最大3ビットである。まず、アライナALN0、ALN1、ALN2、ALN3、ALNZから出力される、9つの入力のそれぞれを符号拡張部SEにおいて3ビット符号拡張する。符号拡張部の出力は、9入力キャリー保存加算器アレイCSAに入力される。次に、符号反転項数に応じたキャリーインを行う。キャリー保存形式の積の1ペアを反転するのに2ビットのキャリーインを行うため、4つの積に対して最大8ビットのキャリーインが必要である。符号反転はInv[0]、Inv[1]、Inv[2]、Inv[3]で制御しているので、図のようにこの4信号のそれぞれに2ビットのキャリーを対応させる。そして、9入力キャリー保存加算器アレイCSAに6ビット、キャリー伝播加算器CPAに2ビットのキャリーインを行う。キャリー伝播加算器は、上記の2ビットのキャリーと、9入力キャリー保存加算器アレイからのキャリー出力COUTと、サム出力SOUTとから、正規化前仮数部Macmを生成する。
【0044】
図13は、図12で示した9入力キャリー保存加算器アレイCSAの詳細図である。図中左側から3ビット符号拡張部の出力が入力される。まず、1段目を3入力キャリー保存加算器730、731、732とし、2段目も3入力キャリー保存加算器733、734とし、3段目を4入力キャリー保存加算器735とする。この構成により、項数が9から6、4、2と減少し、最終的にキャリー出力COUT及びサム出力SOUTを得る。また、本実施例では、キャリーインも、CI0、CI1、CI2、CI3、CI4、CI5の6ビットまで可能である。尚、3入力キャリー保存加算器は、例えば、図14のような1ビット3入力キャリー保存加算器をビット幅だけ並べて構成する。また、4入力キャリー保存加算器は、例えば図15のような1ビット4入力キャリー保存加算器で構成する。
【0045】
図16には、本発明の一つの実施形態であるデータ処理システムのブロックダイヤグラムを示している。同図において、上述したデータプロセッサDPはバスBUSに接続されている。ここで示したバスは、アドレスが転送されるバスとデータが転送されるバスとを含むものとする。また、バス幅等について制限されるものではない。更に、命令とデータとが同一のバスを転送される構成であっても、命令とデータとが別のバスを介して転送される構成であっても、同図で示されるバスに含まれるものである。それらバス構成は、データ処理システムにおける処理速度、面積効率、或いは接続されるデバイスの構成等によって様々に変更可能である。
【0046】
上記バスBUSには、データプロセッサの作業領域やデータの一時記憶領域として使用されるSRAMや、データプロセッサのOS(Operating System)等が記憶されるROMが接続されている。また、バスには、制御回路DMCを介してDRAMが接続されている。制御回路DMCは、DRAMに対してアドレスマルチプレクス制御やリフレッシュ制御等を行うものとするが、DRAM内部やデータプロセッサ内部に分散させる構成であってもよい。更に、バスには周辺装置制御部PDCと表示コントローラDCとが接続されている。周辺装置制御部には、光ディスク等の外部記憶装置ESDやキーボードKBD等が接続されている。また、表示コントローラには、表示装置DPが接続されている。
【0047】
上記データプロセッサは、浮動小数点演算を実行するため命令を備えており、命令の転送のための浮動小数点演算のためのレジスタを有しているため、3次元グラフィック処理に多用される浮動小数点数の演算を高速で実行することが可能である。従って、マルチメディア機器であるゲーム機や携帯情報端末等として利用される本実施形態のデータ処理システムは、全体のコストを削減し、3次元グラフィック処理を高精度かつ高速に処理することが可能となる。
【0048】
また、図16のデータ処理システムにおいて、バスBUSにレンダリングコプロセッサを追加することも可能である。3次元グラフィックス処理は、ジオメトリ処理とレンダリング処理とで構成される。内積演算やベクトル変換演算を多用するジオメトリについては、本実施形態のデータプロセッサDPによって処理させ、レンダリング処理については、レンダリングコプロセッサに処理させる。このことにより、レンダリング処理をデータプロセッサ内の中央処理装置に処理させるデータ処理システムよりも、3次元グラフィックス処理を高速に処理することが可能なデータ処理システムを提供することが可能となる。
【0049】
以上、本発明者によってなされた発明を実施形態に基づいて具体的に説明したが、本発明は記載している実施形態に限定されるものではなく、その要旨を逸脱しない範囲において種々変更可能であることは言うまでもない。
【0050】
例えば、データプロセッサは、メモリマネジメントユニットなど本実施形態で示したブロック以外のブロックを含むことも可能であり、本実施形態で示したブロックの配置等を変更することも可能である。また、データプロセッサは、スーパースカラアーキテクチャを採用することも可能である。スーパースカラアーキテクチャを採用することで、1本のパイプでは演算処理の命令を実行し、別のパイプではデータのメモリからのロードやメモリへのストアを行うことが可能となり、高速処理が可能となる。
【0051】
また、本実施形態においては、データプロセッサに形成されたFPUについて記載してきた。しかし、本発明の思想はFPUに限定されるものではなく、整数演算ユニットへの適用も可能である。整数演算ユニットへの適用の際、図5の乗算アレイ及び9入力加算器を用いれば整数型の4元ベクトルの内積とスカラの和との演算器を実現することが可能となる。整数型演算器の場合、純粋な16並列SIMD方式に比べて、演算器の論理規模の大幅削減はできないが、同等の演算並列度を1/4の4並列SIMDで達成することが可能となる。また、レジスタの幅も1/4で良いのでレジスタの論理規模を大幅に削減することが可能となる。
【0052】
以上、本願で開示した本発明の構成及び動作によって、上述した効果及び下記に示す効果を得ることができる。
【0053】
本発明のデータプロセッサ及びデータ処理システムは、その命令セットの中に、図1のデータプロセッサに搭載されたSIMD−FPUにおいて4元ベクトルの内積とスカラとの和を浮動小数点形式で4つ処理させるための命令を持たせることが可能となる。上記構成をとり、上記命令を持たせることで、1サイクルで1命令を実行する場合、1サイクルで28の浮動小数点演算の実行が可能である。
【0054】
更に、SIMD−FPUのそれぞれの演算器を、4元ベクトルの内積とスカラーデータとの加算を行うことを可能とする構成とし、更に、データプロセッサの命令セットに内積と加算とを行わせる命令をもたせることで、多元ベクトルデータに対応するためことも可能となる。
【0055】
上記に示した、演算器の内積と加算の処理、と演算器のSIMD化とを組み合わせ、対応する命令を命令セットに加えることで、1サイクルに上記1命令を実行した場合、1サイクルに32の浮動小数点演算を実行することが可能となる。
【0056】
上記データプロセッサ、及び上記データプロセッサを用いて構成したデータ処理装置は、従来のデータプロセッサ及びデータ処理システムに対し、大幅に演算並列度を上げることが可能となり、処理速度を向上させることが可能となる。上記データプロセッサは、1サイクルあたり32FLOPSの処理能力を有することとなる。
【0057】
また、図5に例示している如く、本発明の演算ブロックでは、仮数部の処理及び最大指数項と各項の指数差の計算に、一度だけキャリー伝播加算を行うように構成している。そのため、演算レイテンシの短縮が容易で高周波数動作に適している。
【0058】
【発明の効果】
本発明によって4元ベクトル内積命令を4並列のSIMD化することにより、1命令で28演算の実行が可能である。更に、4元ベクトルの内積とスカラの和の演算を定義することにより4元を超える多元ベクトルデータに対応する事が可能となり、1命令で32演算の実行が可能となる。故に、浮動小数点数の演算を高速で処理可能なデータプロセッサを提供することが可能となり、更に、マルチメディア処理特に3次元のグラフィック処理を高速に処理可能なデータ処理システムの提供が可能となる。
【図面の簡単な説明】
【図1】本発明を適用したプロセッサの構成図。
【図2】本発明を適用したプロセッサのSIMD−FPUの構成図。
【図3】SIMD−FPUのベクトルFPUの構成図。
【図4】ベクトルFPUの32ビット4バンクレジスタファイルの構成図。
【図5】ベクトルFPUの演算ブロックの構成図。
【図6】演算ブロックの指数演算部。
【図7】指数演算部の指数差生成部。
【図8】指数差生成部の4入力加算器。
【図9】指数演算部の出力選択部。
【図10】演算ブロックのアライナ。
【図11】演算ブロックのZアライナ。
【図12】演算ブロックの9入力加算器。
【図13】9入力加算器の9入力キャリー保存加算器アレイ。
【図14】1ビット3入力加算器の例。
【図15】1ビット4入力加算器の例。
【図16】本発明のデータプロセッサを使用したデータ処理システム。
【符号の説明】
DP:データプロセッサ、CPU:中央処理装置、FPU:浮動小数点ユニット、ICA:命令キャッシュ、DCA:データキャッシュ、BSC:バスコントローラ 、PM:周辺モジュール 、IA:命令アドレスバス 、IB:命令バス、DA:データアドレスバス 、DB:データバス 、CB:キャッシュバス、EIA:外部アクセス命令アドレスバス 、EDA:外部アドレスデータアドレスバス 、PB:周辺バス 、AT:アドレス端子 DT:データ端子、V−FPU:ベクトル浮動小数点ユニット、IDEC:命令デコーダ、CTRL:制御信号、EBLK:演算ブロック、TBLK:転送ブロック、RGST:レジスタファイル、BDC:バスドライブ信号、WALN:ライトアライナ、LDC:ロード制御信号、RALN:リードアライナ、W(0):リードポート、V:演算用ライトポート、X(0):リードポート、Y(0):リードポート、U:ライトポート、Z:リードポート、WCU:レジスタライト制御装置、ADDR:9入力加算器、SPP:符号処理部、EPP:指数処理部、NOR:正規化部。
Claims (4)
- 浮動小数点数の積和演算を実行可能な複数のベクトル浮動小数点ユニットを含むSIMD型演算器を備えたデータプロセッサであって、
前記データプロセッサは、前記複数のベクトル浮動小数点ユニットを用いて、4元ベクトルの内積とスカラとの和を浮動小数点形式で処理させるための命令を有し、
前記ベクトル浮動小数点ユニットは、32ビット幅のレジスタファイルがレジスタ番号で4バンクに分割して定義されて成る32ビット4バンクレジスタファイルと、
ロードすべきデータを前記32ビット4バンクレジスタファイルに転送するための転送ブロックと、
前記32ビット4バンクレジスタファイルの出力値を取り込んで演算するための演算ブロックと、を含んで成ることを特徴とするデータプロセッサ。 - 前記演算ブロックは、2つの浮動小数点4元ベクトルの内積を演算可能な乗算アレイと、
前記乗算アレイの出力を取り込んで、前記2つの浮動小数点4元ベクトルの内積とスカラーデータとの和を演算可能な9入力加算器と、を含んで成る請求項1記載のデータプロセッサ。 - それぞれ4元ベクトルの内積とスカラーデータとの加算処理を可能とする複数のベクトル浮動小数点ユニットを含むSIMD型演算器を備え、命令セット内の命令を実行するデータプロセッサであって、
前記命令セットには、前記複数のベクトル浮動小数点ユニットを用いて、ベクトルデータの内積と、加算とを行わせる命令が含まれ、
前記ベクトル浮動小数点ユニットは、32ビット幅のレジスタファイルがレジスタ番号で4バンクに分割して定義されて成る32ビット4バンクレジスタファイルと、
ロードすべきデータを前記32ビット4バンクレジスタファイルに転送するための転送ブロックと、
前記32ビット4バンクレジスタファイルの出力値を取り込んで演算するための演算ブロックと、を含んで成ることを特徴とするデータプロセッサ。 - 前記演算ブロックは、2つの浮動小数点4元ベクトルの内積を演算可能な乗算アレイと、
前記乗算アレイの出力を取り込んで、前記2つの浮動小数点4元ベクトルの内積とスカラーデータとの和を演算可能な9入力加算器と、を含んで成る請求項3記載のデータプロセッサ。
Priority Applications (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2000073926A JP3940542B2 (ja) | 2000-03-13 | 2000-03-13 | データプロセッサ及びデータ処理システム |
US09/800,507 US7028066B2 (en) | 2000-03-13 | 2001-03-08 | Vector SIMD processor |
US11/212,736 US7567996B2 (en) | 2000-03-13 | 2005-08-29 | Vector SIMD processor |
US12/497,208 US8341204B2 (en) | 2000-03-13 | 2009-07-02 | Vector SIMD processor |
US13/688,198 US20130166878A1 (en) | 2000-03-13 | 2012-11-28 | Vector simd processor |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2000073926A JP3940542B2 (ja) | 2000-03-13 | 2000-03-13 | データプロセッサ及びデータ処理システム |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2001256199A JP2001256199A (ja) | 2001-09-21 |
JP3940542B2 true JP3940542B2 (ja) | 2007-07-04 |
Family
ID=18592067
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2000073926A Expired - Fee Related JP3940542B2 (ja) | 2000-03-13 | 2000-03-13 | データプロセッサ及びデータ処理システム |
Country Status (2)
Country | Link |
---|---|
US (4) | US7028066B2 (ja) |
JP (1) | JP3940542B2 (ja) |
Families Citing this family (25)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7548586B1 (en) | 2002-02-04 | 2009-06-16 | Mimar Tibet | Audio and video processing apparatus |
US6924802B2 (en) | 2002-09-12 | 2005-08-02 | International Business Machines Corporation | Efficient function interpolation using SIMD vector permute functionality |
EP1779219B1 (en) * | 2004-06-21 | 2008-04-30 | Koninklijke Philips Electronics N.V. | Power management |
US20070186210A1 (en) * | 2006-02-06 | 2007-08-09 | Via Technologies, Inc. | Instruction set encoding in a dual-mode computer processing environment |
US20080071851A1 (en) * | 2006-09-20 | 2008-03-20 | Ronen Zohar | Instruction and logic for performing a dot-product operation |
JP4232838B2 (ja) | 2007-03-29 | 2009-03-04 | 日本電気株式会社 | 再構成可能なsimd型プロセッサ |
US8631224B2 (en) * | 2007-09-13 | 2014-01-14 | Freescale Semiconductor, Inc. | SIMD dot product operations with overlapped operands |
JP2010160708A (ja) | 2009-01-09 | 2010-07-22 | Sony Corp | 演算器、プロセッサ、コンパイル処理装置およびコンパイル処理方法 |
US8214592B2 (en) * | 2009-04-15 | 2012-07-03 | International Business Machines Corporation | Dynamic runtime modification of array layout for offset |
RU2531862C2 (ru) * | 2009-12-25 | 2014-10-27 | Интел Корпорейшн | Быстрое векторное вычисление деления без ветвления |
CN102495719B (zh) * | 2011-12-15 | 2014-09-24 | 中国科学院自动化研究所 | 一种向量浮点运算装置及方法 |
WO2013095558A1 (en) * | 2011-12-22 | 2013-06-27 | Intel Corporation | Method, apparatus and system for execution of a vector calculation instruction |
US9213523B2 (en) | 2012-06-29 | 2015-12-15 | Intel Corporation | Double rounded combined floating-point multiply and add |
US9588766B2 (en) | 2012-09-28 | 2017-03-07 | Intel Corporation | Accelerated interlane vector reduction instructions |
US9275014B2 (en) | 2013-03-13 | 2016-03-01 | Qualcomm Incorporated | Vector processing engines having programmable data path configurations for providing multi-mode radix-2x butterfly vector processing circuits, and related vector processors, systems, and methods |
US9495154B2 (en) | 2013-03-13 | 2016-11-15 | Qualcomm Incorporated | Vector processing engines having programmable data path configurations for providing multi-mode vector processing, and related vector processors, systems, and methods |
US9354891B2 (en) | 2013-05-29 | 2016-05-31 | Apple Inc. | Increasing macroscalar instruction level parallelism |
JP6518036B2 (ja) * | 2014-03-31 | 2019-05-22 | 株式会社メガチップス | 状態推定システム |
JP2016057831A (ja) | 2014-09-09 | 2016-04-21 | 株式会社東芝 | 浮動小数点演算装置、及び情報処理システム |
US20160125263A1 (en) | 2014-11-03 | 2016-05-05 | Texas Instruments Incorporated | Method to compute sliding window block sum using instruction based selective horizontal addition in vector processor |
US9710228B2 (en) | 2014-12-29 | 2017-07-18 | Imagination Technologies Limited | Unified multiply unit |
US11544214B2 (en) | 2015-02-02 | 2023-01-03 | Optimum Semiconductor Technologies, Inc. | Monolithic vector processor configured to operate on variable length vectors using a vector length register |
GB2553783B (en) | 2016-09-13 | 2020-11-04 | Advanced Risc Mach Ltd | Vector multiply-add instruction |
CN108196822B (zh) * | 2017-12-24 | 2021-12-17 | 北京卫星信息工程研究所 | 一种双精度浮点开方运算的方法及系统 |
US20200097807A1 (en) * | 2019-11-27 | 2020-03-26 | Intel Corporation | Energy efficient compute near memory binary neural network circuits |
Family Cites Families (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3299261A (en) * | 1963-12-16 | 1967-01-17 | Ibm | Multiple-input memory accessing apparatus |
US5170370A (en) * | 1989-11-17 | 1992-12-08 | Cray Research, Inc. | Vector bit-matrix multiply functional unit |
US5218709A (en) * | 1989-12-28 | 1993-06-08 | The United States Of America As Represented By The Administrator Of The National Aeronautics And Space Administration | Special purpose parallel computer architecture for real-time control and simulation in robotic applications |
US5423051A (en) * | 1992-09-24 | 1995-06-06 | International Business Machines Corporation | Execution unit with an integrated vector operation capability |
JPH07210545A (ja) | 1994-01-24 | 1995-08-11 | Matsushita Electric Ind Co Ltd | 並列処理プロセッサ |
US5758176A (en) * | 1994-09-28 | 1998-05-26 | International Business Machines Corporation | Method and system for providing a single-instruction, multiple-data execution unit for performing single-instruction, multiple-data operations within a superscalar data processing system |
US5513366A (en) * | 1994-09-28 | 1996-04-30 | International Business Machines Corporation | Method and system for dynamically reconfiguring a register file in a vector processor |
US5887183A (en) * | 1995-01-04 | 1999-03-23 | International Business Machines Corporation | Method and system in a data processing system for loading and storing vectors in a plurality of modes |
JP3203180B2 (ja) * | 1996-03-27 | 2001-08-27 | 三菱電機株式会社 | 幾何学演算装置 |
US5838984A (en) * | 1996-08-19 | 1998-11-17 | Samsung Electronics Co., Ltd. | Single-instruction-multiple-data processing using multiple banks of vector registers |
JP3790307B2 (ja) * | 1996-10-16 | 2006-06-28 | 株式会社ルネサステクノロジ | データプロセッサ及びデータ処理システム |
US5881307A (en) * | 1997-02-24 | 1999-03-09 | Samsung Electronics Co., Ltd. | Deferred store data read with simple anti-dependency pipeline inter-lock control in superscalar processor |
US6430589B1 (en) * | 1997-06-20 | 2002-08-06 | Hynix Semiconductor, Inc. | Single precision array processor |
US5864703A (en) * | 1997-10-09 | 1999-01-26 | Mips Technologies, Inc. | Method for providing extended precision in SIMD vector arithmetic operations |
US6418529B1 (en) * | 1998-03-31 | 2002-07-09 | Intel Corporation | Apparatus and method for performing intra-add operation |
US6115812A (en) * | 1998-04-01 | 2000-09-05 | Intel Corporation | Method and apparatus for efficient vertical SIMD computations |
JPH11296498A (ja) | 1998-04-13 | 1999-10-29 | Mitsubishi Electric Corp | 並列演算処理装置 |
US6292886B1 (en) * | 1998-10-12 | 2001-09-18 | Intel Corporation | Scalar hardware for performing SIMD operations |
US6321327B1 (en) * | 1998-12-30 | 2001-11-20 | Intel Corporation | Method for setting a bit associated with each component of packed floating-pint operand that is normalized in SIMD operations |
US6502089B1 (en) * | 1999-11-17 | 2002-12-31 | International Business Machines Corporation | Generating restriction queries using tensor representations |
US6754684B1 (en) * | 2000-05-11 | 2004-06-22 | Mercury Computer Systems, Inc. | Method and apparatus for median filter on SIMD architecture digital data processor |
US6578063B1 (en) * | 2000-06-01 | 2003-06-10 | International Business Machines Corporation | 5-to-2 binary adder |
-
2000
- 2000-03-13 JP JP2000073926A patent/JP3940542B2/ja not_active Expired - Fee Related
-
2001
- 2001-03-08 US US09/800,507 patent/US7028066B2/en not_active Expired - Lifetime
-
2005
- 2005-08-29 US US11/212,736 patent/US7567996B2/en not_active Expired - Fee Related
-
2009
- 2009-07-02 US US12/497,208 patent/US8341204B2/en not_active Expired - Lifetime
-
2012
- 2012-11-28 US US13/688,198 patent/US20130166878A1/en not_active Abandoned
Also Published As
Publication number | Publication date |
---|---|
JP2001256199A (ja) | 2001-09-21 |
US8341204B2 (en) | 2012-12-25 |
US7567996B2 (en) | 2009-07-28 |
US20090271591A1 (en) | 2009-10-29 |
US7028066B2 (en) | 2006-04-11 |
US20130166878A1 (en) | 2013-06-27 |
US20010021941A1 (en) | 2001-09-13 |
US20060004985A1 (en) | 2006-01-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3940542B2 (ja) | データプロセッサ及びデータ処理システム | |
US11797303B2 (en) | Generalized acceleration of matrix multiply accumulate operations | |
US6327605B2 (en) | Data processor and data processing system | |
EP3835942B1 (en) | Systems and methods for loading weights into a tensor processing block | |
JP5089776B2 (ja) | 浮動小数点演算のための再構成アレイプロセッサ | |
US6370559B1 (en) | Method and apparatus for performing N bit by 2*N−1 bit signed multiplications | |
US6349318B1 (en) | Arithmetic processor for finite field and module integer arithmetic operations | |
US7725520B2 (en) | Processor | |
JP2018055677A (ja) | 外積累算演算のためのプロセッサおよび方法 | |
US11816482B2 (en) | Generalized acceleration of matrix multiply accumulate operations | |
US20090049113A1 (en) | Method and Apparatus for Implementing a Multiple Operand Vector Floating Point Summation to Scalar Function | |
US8356160B2 (en) | Pipelined multiple operand minimum and maximum function | |
JP3750820B2 (ja) | パック・データの乗加算演算を実行する装置 | |
US20090158013A1 (en) | Method and Apparatus Implementing a Minimal Area Consumption Multiple Addend Floating Point Summation Function in a Vector Microprocessor | |
WO2022271244A1 (en) | Fpga processing block for machine learning or digital signal processing operations | |
US7769981B2 (en) | Row of floating point accumulators coupled to respective PEs in uppermost row of PE array for performing addition operation | |
CN110199255B (zh) | 组合若干执行单元以计算单一宽标量结果 | |
JPH0748176B2 (ja) | 浮動小数点算術演算方法及び装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20040304 |
|
RD02 | Notification of acceptance of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7422 Effective date: 20040304 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20060512 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20060523 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20060724 |
|
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: 20070327 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20070402 |
|
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: 20100406 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110406 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110406 Year of fee payment: 4 |
|
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: 20110406 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: 20120406 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120406 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130406 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20140406 Year of fee payment: 7 |
|
S531 | Written request for registration of change of domicile |
Free format text: JAPANESE INTERMEDIATE CODE: R313531 |
|
R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |
|
LAPS | Cancellation because of no payment of annual fees |