(57)【要約】毎回加算後に飽和するか、または毎回加算の結果をラップ・アラウンドするかを選択して、ｍ個の入力オペランドにアキュムレータ値を加えた総和をとる簡約ユニットを備えるプロセッサを提供すること。簡約ユニットは、さらに、入力オペランドのビットを単純に反転し、複数の簡約加算器のそれぞれへのキャリーを１に設定することにより複数のｍ個の入力オペランドをアキュムレータ値から引くことができる。簡約ユニットをｍ個の並列乗算器と併用し、ドット積および他のベクトル演算を飽和算術演算またラップアラウンド算術演算とともに高速実行することができる。
2006529043.tif 000002
【特許請求の範囲】
【請求項１】
プロセッサであって、
複数の算術演算ユニットと、
アキュムレータ・ユニットと、
前記複数の算術演算ユニットと前記アキュムレータ・ユニットとの間に結合された簡約ユニットであって、前記算術演算ユニットから入力オペランドを受け取り、前記アキュムレータ・ユニットから第１のアキュムレータ値を受け取るように構成されている簡約ユニットとを備え、
前記簡約ユニットは、前記複数の入力オペランドと前記第１のアキュムレータ値とを合計し、第２のアキュムレータ値を生成し、前記アキュムレータ・ユニットに配送する動作をし、
前記簡約ユニットは、飽和あり、または飽和なしで動作するように制御可能であるプロセッサ。
【請求項２】
前記複数の算術演算ユニットは、互いに並列に配置された複数の乗算器を備える請求項１に記載のプロセッサ。
【請求項３】
前記複数の乗算器は、互いに並列に配置された複数の積和ユニットを備える請求項２に記載のプロセッサ。
【請求項４】
前記アキュムレータ・ユニットは、アキュムレータ・レジスタ・ファイルを備える請求項１に記載のプロセッサ。
【請求項５】
前記簡約ユニットは、印加された制御信号に応じて、複数の加算演算のそれぞれの後に飽和が行われる少なくとも第１の種類の計算と前記加算演算の結果のラップ・アラウンドが行われる第２の種類の計算との間の制御可能な選択を行えるように構成されている請求項１に記載のプロセッサ。
【請求項６】
前記簡約ユニットは、さらに、前記第１のアキュムレータ値から前記入力オペランドを減算できる動作をする請求項１に記載のプロセッサ。
【請求項７】
前記入力オペランドは、前記入力オペランドの複数のビットを反転し、前記簡約ユニットの複数の簡約加算器のそれぞれの中へのキャリーを指定論理値に設定することにより前記第１のアキュムレータ値から減算される請求項６に記載のプロセッサ。
【請求項８】
前記簡約ユニットは、ｍ個の算術演算ユニットおよび前記アキュムレータ・ユニットとともに使用し、ドット積のｍ個の要素を計算することができる請求項１に記載のプロセッサ。
【請求項９】
前記簡約ユニットは、直列に接続されたｍ個の簡約加算器を備え、前記簡約加算器はそれぞれ、飽和あり、または飽和なしで、それぞれの入力オペランドを加算する動作をすることができる請求項１に記載のプロセッサ。
【請求項１０】
前記ｍ個の算術演算ユニットは、ｍ個の乗算器を備え、前記乗算器のそれぞれはＰ［ｉ］＝Ｘ［ｉ］＊Ｙ［ｉ］，１≦ｉ≦ｍを計算する動作をし、前記ｍ個の乗算器のＰ［ｉ］出力は前記アキュムレータ・ユニットからのアキュムレータ値Ｐ［０］とともに入力オペランドとして前記簡約ユニットに供給され、前記簡約ユニットは
Ａｃｃ＝Ｐ［０］＋Ｐ［１］＋Ｐ［２］＋．．．＋Ｐ［ｍ］
を計算するように構成され、Ｐ［０］は、初回反復に関して０に設定され、次の反復で、ＸおよびＹのｍ個の新しい要素が乗算され、Ｐ［０］は、前の反復からアキュムレータ値Ａｃｃに設定され、前記反復は、ｍ要素ドット積が計算されるまで継続する請求項８に記載のプロセッサ。
【請求項１１】
前記簡約ユニットは、前記簡約ユニットが加算演算毎に飽和を実行する飽和モードで動作可能であり、前記ｍ個の乗算器はそれぞれ、オーバーフローが発生した場合にその結果を飽和させる請求項１０に記載のプロセッサ。
【請求項１２】
前記簡約ユニットは、前記簡約ユニットが
Ａｃｃ＝Ｐ［０］−Ｐ［１］−Ｐ［２］−．．．−Ｐ［ｍ］
を計算するように構成される反転モードで動作可能である請求項１０に記載のプロセッサ。
【請求項１３】
前記簡約ユニットは、複数のプロセッサ・クロック・サイクルのそれぞれで、前記ドット積のｍ個の要素を累計できるように構成される請求項８に記載のプロセッサ。
【請求項１４】
前記簡約ユニットは、パイプライン化される請求項１に記載のプロセッサ。
【請求項１５】
前記プロセッサは、マルチスレッド型プロセッサを含む請求項１に記載のプロセッサ。
【請求項１６】
前記マルチスレッド型プロセッサは、トークン・トリガ・スレッディングを使用する請求項１５に記載のプロセッサ。
【請求項１７】
与えられたスレッドについて計算されるドット積に対する演算は、他のスレッドからの演算と同時に実行され、前記与えられたスレッドからの命令の実行間のサイクルの前記数は、前記簡約ユニット内のパイプライン・ステージの個数に前記アキュムレータ・ユニットとの間で読み書きするのに必要な追加サイクル数を足した値以上である請求項１５に記載のプロセッサ。
【請求項１８】
前記簡約ユニットは、ベクトル乗算簡約加算命令、ベクトル乗算簡約減算命令、およびベクトル加算簡約加算命令のうちの少なくとも１つを含む、１つまたは複数のベクトル簡約命令の実行で使用可能である請求項１に記載のプロセッサ。
【請求項１９】
少なくとも１つのプロセッサを備える集積回路であって、前記プロセッサは、
複数の算術演算ユニットと、
アキュムレータ・ユニットと、
前記複数の算術演算ユニットと前記アキュムレータ・ユニットとの間に結合された簡約ユニットであって、前記算術演算ユニットから入力オペランドを受け取り、前記アキュムレータ・ユニットから第１のアキュムレータ値を受け取るように構成されている簡約ユニットとを備え、
前記簡約ユニットは、前記複数の入力オペランドと前記第１のアキュムレータ値とを合計し、第２のアキュムレータ値を生成し、前記アキュムレータ・ユニットに配送する動作をし、
前記簡約ユニットは、飽和あり、または飽和なしで動作するように制御可能である集積回路。
【請求項２０】
複数の算術演算ユニットおよびアキュムレータ・ユニットを備えるプロセッサで使用する装置であって、
前記複数の算術演算ユニットと前記アキュムレータ・ユニットとの間に結合された簡約ユニットであって、前記算術演算ユニットから入力オペランドを受け取り、前記アキュムレータ・ユニットから第１のアキュムレータ値を受け取るように構成されている簡約ユニットを備え、
前記簡約ユニットは、前記複数の入力オペランドと前記第１のアキュムレータ値とを合計し、第２のアキュムレータ値を生成し、前記アキュムレータ・ユニットに配送する動作をし、
前記簡約ユニットは、飽和あり、または飽和なしで動作するように制御可能である装置。
【発明の詳細な説明】
【技術分野】
【０００１】
（関連出願）
本出願は、参照により本明細書に組み込まれている、Ｍ．Ｊ．Ｓｃｈｕｌｔｅ他による「Ｍｅｔｈｏｄ  ａｎｄ  Ａｐｐａｒａｔｕｓ  ｔｏ  Ａｃｃｕｍｕｌａｔｅ  Ｍｕｌｔｉｐｌｅ  Ｏｐｅｒａｎｄｓ  ｗｉｔｈ  ｏｒ  ｗｉｔｈｏｕｔ  Ｓａｔｕｒａｔｉｏｎ  ｉｎ  ａ  Ｍｕｌｔｉｔｈｒｅａｄｅｄ  Ｐｒｏｃｅｓｓｏｒ」という表題の２００３年５月９日に出願した米国仮出願第６０／４６９，２５３号の優先権を主張するものである。
【０００２】
本発明は、一般に、デジタル・データ・プロセッサの分野に関するものであり、より具体的には、デジタル・シグナル・プロセッサ（ＤＳＰ）またはその他の種類のデジタル・データ・プロセッサで使用するための算術演算処理および関連する処理回路に関するものである。
【背景技術】
【０００３】
大半のＤＳＰおよびマルチメディア・プロセッサを含む、多くのデジタル・データ・プロセッサは、２進数固定小数点数演算を使用し、演算は、符号なし、または２の補数２進数形式の整数、分数、または帯分数に対し実行される。ＤＳＰおよびマルチメディア・アプリケーションは、多くの場合、２進数に対し飽和算術演算およびラップアラウンド算術演算を実行するように構成する必要がある。
【０００４】
飽和算術演算では、大きすぎて指定された数値形式では表せない計算結果は、正の無限大に最も近い数または負の無限大に最も近い数に飽和される。結果が大きすぎて表現できない場合は、オーバーフローが発生する。例えば、３桁の符号なし数を使用する１０進数体系では、加算７３３＋４４４を実行すると、真の結果である１１７７は３桁ちょうどの１０進数で表現できないため、９９９と飽和した結果が得られる。飽和した結果である９９９は、３桁の１０進数で表現することができる正の無限大に最も近い数に対応する。飽和は、結果を正しく表現できない場合に発生するエラーを減らし、符号情報を保存するので、役立つ。
【０００５】
ラップアラウンド演算では、オーバーフローした結果は、ラップ・アラウンドされ、指定された数値表現に収めることができない桁は単に捨てられるだけである。例えば、３桁の符号なし数の１０進数体系では、加算７３３＋４４４により、ラップ・アラウンド結果１７７が出力される。真の結果である１１７７は大きすぎて表現できないため、先行１は捨てられ、結果１７７が出力される。ラップアラウンド算術演算は、複数のラップアラウンド演算の真の最終結果を指定形式で表現できる場合、中間演算がオーバーフローしたとしても最終結果は正しいものであるため、有用である。
【０００６】
上で示されたように、飽和算術演算およびラップアラウンド算術演算は、２進数体系で使用されることが多い。例えば、４ビット数を使用する２の補数分数体系では、２の補数加算０．１０１＋０．１００（０．６２５＋０．５００）を行うと、飽和結果０．１１１（０．８７５）が出力されるが、これは、４ビットで表現できる正の無限大に最も近い２の補数に対応する。ラップアラウンド算術演算が使用される場合、２の補数加算０．１０１＋０．１００（０．６２５＋０．５００）を行うと、結果１．００１（−０．８７５）が出力される。
【０００７】
デジタル・データ・プロセッサ算術演算のこれらの態様および他の従来の態様に関する詳細は、例えば、Ｂ．Ｐａｒｈａｍｉ「Ｃｏｍｐｕｔｅｒ  Ａｒｉｔｈｍｅｔｉｃ：Ａｌｇｏｒｉｔｈｍｓ  ａｎｄ  Ｈａｒｄｗａｒｅ  Ｄｅｓｉｇｎｓ」、Ｏｘｆｏｒｄ  Ｕｎｉｖｅｒｓｉｔｙ  Ｐｒｅｓｓ、Ｎｅｗ  Ｙｏｒｋ、２０００（ＩＳＢＮ  ０−１９−５１２５８３−５）で説明されており、これは参照により本明細書に組み込まれている。
【０００８】
多くのデジタル信号処理およびマルチメディア・アプリケーションは、飽和算術演算およびラップアラウンド算術演算の両方の機能を必要とする。しかし、多くの従来の手法では、飽和またはラップアラウンド算術演算の制御可能な選択のための効率的なメカニズムを実現することができない。
【０００９】
また、ドット積を計算するように、与えられたＤＳＰ、マルチメディア・プロセッサ、または他の種類のデジタル・データ・プロセッサを構成することは、多くのアプリケーションでは望ましい場合がある。２つのｋ要素ベクトル
Ｘ＝［Ｘ［１］，Ｘ［２］，．．．，Ｘ［ｋ−１］，Ｘ［ｋ］］およびＹ＝［Ｙ［１］，Ｙ［２］，．．．，Ｙ［ｋ−１］，Ｙ［ｋ］］
のドット積は、
Ｚ＝Ｘ［１］＊Ｙ［１］＋Ｘ［２］＊Ｙ［２］＋．．．＋Ｘ［ｋ−１］＊Ｙ［ｋ−１］＋Ｘ［ｋ］＊Ｙ［ｋ］
で与えられる。
【００１０】
そこで、ｋ要素ドット積は、ｋ回の乗算と（ｋ−１）回の加算を必要とする。このようなドット積は、デジタル信号処理およびマルチメディア・アプリケーションでは頻繁に出現する。
【００１１】
例えば、ＧＳＭ（Ｇｌｏｂａｌ  Ｓｙｓｔｅｍ  ｆｏｒ  Ｍｏｂｉｌｅ  Ｃｏｍｍｕｎｉｃａｔｉｏｎｓ）またはＥＤＧＥ（Ｅｎｈａｎｃｅｄ  Ｄａｔａ  ｒａｔｅｓ  ｆｏｒ  Ｇｌｏｂａｌ  Ｅｖｏｌｕｔｉｏｎ）規格をサポートする第二世代および第三世代携帯電話では、通常は毎回の加算および毎回の乗算の後に飽和とともにドット積を広範に使用する。これらの規格では、一般に、与えられたドット積計算の最終結果は、演算がシリアルに実行され、毎回演算した後飽和する場合に得られる結果と同一（ｂｉｔ−ｅｘａｃｔ）である必要がある。飽和加算は結合的でないため、ドット積に必要な加算は、通常、直列に実行され、これは、プロセッサ性能に悪影響を及ぼす。
【００１２】
ドット積計算およびその他のベクトル演算の従来の手法には、ほかに、このような手法はパイプライン型プロセッサで使用できるように適合させることが容易でないという問題もある。例えば、いくつかの従来の手法は、パイプライン・ステージ数が２よりも多いパイプラインに拡張することが難しい場合があるが、それは、拡張すると、一般に、必要な回路面積が実質的に増大するからである。
【００１３】
さらに、従来の手法だと、一般に、オペランドをアキュムレータ値に加算する演算とオペランドをアキュムレータ値から減算する演算の両方をサポートする十分に効率的なメカニズムを実現できない。
【特許文献１】米国仮出願第６０／４６９，２５３号
【非特許文献１】Ｂ．Ｐａｒｈａｍｉ「Ｃｏｍｐｕｔｅｒ  Ａｒｉｔｈｍｅｔｉｃ：Ａｌｇｏｒｉｔｈｍｓ  ａｎｄ  Ｈａｒｄｗａｒｅ  Ｄｅｓｉｇｎｓ」、Ｏｘｆｏｒｄ  Ｕｎｉｖｅｒｓｉｔｙ  Ｐｒｅｓｓ、Ｎｅｗ  Ｙｏｒｋ、２０００（ＩＳＢＮ  ０−１９−５１２５８３−５）
【特許文献２】米国特許出願第１０／２６９，２４５号
【特許文献３】米国特許出願第１０／２６９，３７２号
【特許文献４】米国特許出願第１０／２６９，３７３号
【発明の開示】
【発明が解決しようとする課題】
【００１４】
したがって、デジタル・データ・プロセッサにおいて飽和算術演算またはラップアラウンド算術演算のいずれかとともにドット積およびその他の種類のベクトル演算の計算能力を改善できる手法が必要である。
【課題を解決するための手段】
【００１５】
本発明の実施例では、毎回加算後に飽和するか、または毎回加算の結果をラップ・アラウンドするかを選択して、ｍ個の入力オペランド＋アキュムレータ値の総和をとる簡約ユニットを備えるプロセッサを実現する。簡約ユニットは、さらに、入力オペランドのビットを単純に反転し、複数の簡約加算器のそれぞれへのキャリーを１に設定することにより複数のｍ個の入力オペランドをアキュムレータ値から引くことができる。簡約ユニットをｍ個の並列乗算器と併用し、ドット積および他のベクトル演算を飽和算術演算またラック・アラウンド算術演算とともに高速実行することができる。
【００１６】
マルチスレッド型プロセッサ実装では、最悪の場合の遅延が小さくなるように簡約ユニットをパイプライン化することができるが、それでも、ドット積のｍ個の要素をクロック・サイクル毎に累計できる。
【００１７】
飽和ドット積の場合、簡約ユニットにより生成される結果は、毎回演算の後に飽和する演算が逐次実行される場合に出力される結果と同じである。この機能は、飽和ドット積を頻繁に実行する、デジタル信号処理およびマルチメディア・アプリケーションで特に有用である。
【００１８】
実施例の簡約ユニットの使用例は、飽和がある場合、またはない場合のドット積の計算でのものであるが、オペランドのベクトルの総和計算の実行、複素積和（ＭＡＣ）演算の実行、およびオペランドをアキュムレータ値から引く演算の実行を含む他の多数の潜在的用途がある。
【００１９】
ドット積を実行するために使用される場合、実施例の簡約ユニットは、それぞれの乗算器が積Ｘ［ｉ］＊Ｙ［ｉ］，ｉ＝１，２，．．．ｍを計算するｍ個の並列乗算器とともに動作が可能である。乗算器からのｍ個の積は、その後、簡約ユニットへのｍ個の入力オペランドになり、初回反復では０に設定されるアキュムレータ値とともに総和される。次の反復で、前の反復からの簡約ユニット出力がアキュムレータ値になり、ｍ個の新しい積が計算される。このようにして、ｋ要素ドット積は、［ｋ／ｍ］回の反復を使用して計算することができ、それぞれの反復は、ｍ回の並列乗算および（ｍ＋１）入力加算を含む。飽和モードで使用される場合、簡約ユニットは、加算実行毎に飽和を実行し、それぞれの乗算器は、オーバーフローが発生した場合にその結果を飽和する。
【００２０】
本発明の実施例は、従来の手法に関して著しい利点を多数持つ。例えば、簡約ユニットは、性能に対しペナルティを課されることなく、また必要な回路面積も適度の増大のみで容易にパイプライン化することができる。さらに、簡約ユニットは、直接、飽和算術演算をおよびラップアラウンド算術演算の両方をサポートし、オペランドをアキュムレータ値に加える演算だけでなく、オペランドをアキュムレータ値から引く演算をも実行できる。
【発明を実施するための最良の形態】
【００２１】
本発明は、簡約ユニット、アキュムレータ・ユニット、および算術演算ユニット、およびそのようなユニットを組み込んだマルチスレッド型プロセッサの実施例の文脈において説明される。しかし、本発明では、図に示されている特定の配列を必要とせず、他の種類のデジタル・データ・プロセッサおよび関連する処理回路を使用して実装することができることは理解されるであろう。
【００２２】
本明細書で説明されているような与えられたプロセッサは、１つまたは複数の集積回路の形で実装することができる。
【００２３】
図１は、本発明の実施例により構成されるプロセッサ１００の一部分を示す。プロセッサ１００は、１０４−１，１０４−２，．．．１０４−ｍと表されるｍ個の並列乗算器とアキュムレータ・レジスタ．ファイル１０６との間で結合された（ｍ＋１）入力簡約ユニット１０２を備える。
【００２４】
乗算器１０４−ｉはそれぞれ、飽和がある場合、または飽和がない場合について、Ｐ［ｉ］＝Ｘ［ｉ］＊Ｙ［ｉ］、１≦ｉ≦ｍを計算する。その後、ｍ個の乗算器出力が、アキュムレータ・レジスタ・ファイル１０６から、Ｐ［０］で表される、アキュムレータ値とともに、（ｍ＋１）入力簡約ユニット１０２に入力オペランドとして供給される。簡約ユニット１０２は、
Ａｃｃ＝Ｐ［０］＋Ｐ［１］＋Ｐ［２］＋．．．＋Ｐ［ｍ］
を計算するが、ただし、Ｐ［０］は初回反復について０に設定される。次の反復で、ＸおよびＹのｍ個の新しい要素が乗算され、前の反復から、Ｐ［０］はアキュムレータ値Ａｃｃに設定されるこのプロセスは、ドット積全体が計算されるまで継続される。したがって、ｋ要素ドット積は、［ｋ／ｍ］回の反復を使用して計算することができ、それぞれの反復は、ｍ回の並列乗算および（ｍ＋１）入力加算を含む。飽和モードで使用される場合、簡約ユニットは、加算実行毎に飽和を実行し、それぞれの乗算器は、オーバーフローが発生した場合にその結果を飽和する。
【００２５】
アキュムレータ・レジスタ・ファイル１０６は、本明細書で一般に「アキュムレータ・ユニット」と呼ばれるものの一実施例としてみなすことができる。当業者であれば理解するように、他の実施形態では他の種類のアキュムレータ・ユニットを使用することもできる。さらに、本明細書で使用されているような「ユニット」という用語は、一般的に、与えられたユニットの要素が互いと同じ場所に配置されていてもよいが、そうする必要はないか、または他の何らかの形で互いに特定の物理的関係を持つように解釈されることを意図されている。例えば、与えられたユニットの要素は、集積回路内の同一部位に配置するのではなく、集積回路全体に分散させることが可能である。
【００２６】
アキュムレータ・レジスタ・ファイル１０６は、中間アキュムレータ値を格納するために使用することができ、これは、個々のスレッドからの複数のドット積を同時に計算できるマルチスレッド型プロセッサ実装で特に有用である。
【００２７】
図１の実施例の中の簡約ユニット１０２は、さらに、２つの１ビット制御信号入力ＩｎｖｅｒｔおよびＳａｔｆを受け取る。ＩｎｖｅｒｔがＨＩＧＨの場合、簡約ユニットへの入力オペランドは反転され、ユニットは、
Ａｃｃ＝Ｐ［０］−Ｐ［１］−Ｐ［２］−．．．−Ｐ［ｍ］
を計算する。
ＩｎｖｅｒｔがＬＯＷの場合、簡約ユニットへの入力オペランドは反転されず、ユニットは、
Ａｃｃ＝Ｐ［０］＋Ｐ［１］＋Ｐ［２］＋．．．＋Ｐ［ｍ］
を計算する。
【００２８】
ＳａｔｆがＨＩＧＨの場合、簡約ユニットは飽和モードにある。これは、簡約ユニットで中間加算が行われる毎に、結果がオーバーフローしていないか判定するチェックが行われることを意味する。オーバーフローしていた場合、結果は指定された形式で正の無限大に最も近い数または負の無限大に最も近い数に飽和される。ＳａｔｆがＬＯＷの場合、簡約ユニットはラップアラウンド・モードであり、オーバーフローした結果は飽和されないことを意味する。
【００２９】
実施例における乗算器１０４の使用は、参考例にすぎない。他の実施形態では、例えば、積和（ＭＡＣ）ユニットを使用することができる。本明細書で使用されているような用語「乗算器」は、乗算だけでなく１つまたは複数の他の機能をも実行する、ＭＡＣユニットなどの算術演算ユニットを含むことを意図されている。
【００３０】
図２は、プロセッサ１００で使用するのに好適であり、ｍ＝４の場合により具体的に構成されている簡約ユニット実施例１０２’を示している。この簡約ユニットは、４つの入力オペランドＰ［１］からＰ［４］とアキュムレータ値Ｐ［０］とを総和する動作をする。図は、ｍ＝４の特定の場合についての（ｍ＋１）入力簡約ユニットを示しているが、当業者であれば、設計をｍの他の値に容易に拡張できることを理解するであろう。
【００３１】
簡約ユニット１０２’は、図に示されているように直列に接続されている４つの２入力簡約加算器２００−１、２００−２、２００−３、および２００−４を使用する。それぞれの簡約加算器は、飽和あり、または飽和なしで、入力オペランドを加算することができる。本明細書で使用されているような用語「簡約加算器」は、例えば、飽和加算器を含むことが意図されている。
【００３２】
Ｒｅｄｕｃｔｉｏｎ  Ａｄｄｅｒ  １とも識別されている第１の簡約加算器２００−１は、オペランドＰ［０］およびＰ［１］を取り、入力制御信号ＩｎｖｅｒｔがＬＯＷの場合に、それらを加算してＺ［１］＝Ｐ［０］＋Ｐ［１］を出力する。Ｒｅｄｕｃｔｉｏｎ  Ａｄｄｅｒ  ｉ＋１とも識別されているそれぞれの残っている簡約加算器２００−（ｉ＋１）は、２つの入力オペランドＺ［ｉ］およびＰ［ｉ＋１］を取り、入力制御信号ＩｎｖｅｒｔがＬＯＷの場合に、それらを加算してＺ［ｉ＋１］＝Ｚ［ｉ］＋Ｐ［ｉ＋１］を出力する。すると、ＩｎｖｅｒｔがＬＯＷの場合に、簡約ユニットの出力は、
Ａｃｃ＝Ｚ［４］＝Ｐ［０］＋Ｐ［１］＋Ｐ［２］＋Ｐ［３］＋Ｐ［４］
となる。
【００３３】
入力制御信号ＩｎｖｅｒｔがＨＩＧＨの場合、それぞれの簡約加算器への第２の入力は、ビット毎に反転され、それぞれの簡約加算器へのキャリー入力は１に設定される。これにより、Ｒｅｄｕｃｔｉｏｎ  Ａｄｄｅｒ１はＺ［１］＝Ｐ［０］−Ｐ［１’］を計算し、残りの簡約加算器はＺ［ｉ＋１］＝Ｚ［ｉ］−Ｐ［ｉ＋１］を計算する。この場合、簡約ユニットの出力は、
Ａｃｃ＝Ｚ［４］＝Ｐ［０］−Ｐ［１］−Ｐ［２］−Ｐ［３］−Ｐ［４］
となる。
【００３４】
入力制御信号ＳａｔｆがＨＩＧＨの場合、それぞれの加算（または減算）の結果は、オーバーフローが発生すると飽和される。ＳａｔｆがＬＯＷの場合、それぞれの加算（または減算）の結果は、ラップ・アラウンドされる。
【００３５】
簡約ユニット１０２’は、最悪の場合の遅延を短くするためパイプライン化される。より具体的には、簡約ユニット１０２’は、４ステージ・パイプラインを使用して、４つの加算（または４つの減算）を実行するが、それぞれの中間加算（または減算）の結果Ｚ［ｉ］は、パイプライン・レジスタ２０２−ｉに格納される。Ｐ［ｉ］オペランドが対応するＺ［ｉ−１］オペランドに同時に到達するようにするために、Ｒｅｄｕｃｔｉｏｎ  Ａｄｄｅｒ  ｉに入るＰ［ｉ］オペランドは、（ｉ−１）個のパイプライン・レジスタ２０４を通る。そのため、オペランドＰ［１］は、どのパイプライン・レジスタ２０４をも通らず、オペランドＰ［２］は、１つのパイプライン・レジスタ２０４−２１を通り、オペランドＰ［３］は、２つのパイプライン・レジスタ２０４−３１および２０４−３２を通り、オペランドＰ［４］は、３つのパイプライン・レジスタ２０４−４１、２０４−４２、および２０４−４３を通って、それぞれの簡約加算器に到達する。
【００３６】
図３は、簡約ユニット１０２’の簡約加算器２００−ｉのうちの与えられた１つの可能な一実装を示している。簡約加算器２００−ｉは、２入力加算器３００を使用して、２つの入力オペランドＡおよびＢとキャリーイン・ビットｃｉｎを加算し、Ｔ＝Ａ＋Ｂ＋ｃｉｎを計算する。ＳａｔｆとＡおよびＢの符号ｓａおよびｓｂとがＨＩＧＨであり、一時的結果の符号ｓｔがＬＯＷの場合、出力Ｚは指定された数値形式で負の無限大に最も近い数に飽和され、Ｚ＝ＭＩＮ＿ＮＥＧとなる。ＳａｔｆおよびｓｔがＨＩＧＨで、ｓａおよびｓｂがＬＯＷの場合、Ｚは、指定された数値形式で正の無限大に最も近い数に飽和され、Ｚ＝ＭＡＸ＿ＰＯＳとなる。他のすべての場合において、加算器３００からの結果は、結果として使用され、Ｚ＝Ｔとなる。
【００３７】
図３に示されている特定の簡約加算器設計は、説明例としてのみ提示されていることは理解されるであろう。多数の代替え簡約加算器設計を使用することができ、与えられた実装で使用するために選択された特定の加算器は、入力オペランドの形式などのアプリケーション特有のファクタに基づいてさまざまなものがある。
【００３８】
パイプライン化された簡約ユニットでは、後述のようにマルチスレッドを使用することにより、ドット積のｍ個の要素をクロック・サイクル毎に累計することが可能である。
【００３９】
非マルチスレッド型プロセッサ実装では、簡約ユニットをパイプライン化すると、それぞれのドット積を計算するために必要なサイクル数が大幅に増大する可能性があることに留意されたい。例えば、マルチスレッドを使用せずに従来のｍステージ・パイプラインを使用すると、それぞれのドット積を計算するためのサイクルの数は、おおよそｍ倍増える。
【００４０】
本発明の例示されている実施形態では、トークン・トリガ・スレッディングと呼ばれるアプローチを使用することによりこの課題を取り扱う。トークン・トリガ・スレッディングは、参照により本明細書に組み込まれている、同一出願人による２００２年１０月１１日出願された「Ｍｅｔｈｏｄ  ａｎｄ  Ａｐｐａｒａｔｕｓ  ｆｏｒ  Ｔｏｋｅｎ  Ｔｒｉｇｇｅｒｅｄ  Ｍｕｌｔｉｔｈｒｅａｄｉｎｇ」という表題の米国特許出願第１０／２６９，２４５号で説明されている。トークン・トリガ・スレッディングは、通常、異なるトークンをマルチスレッド型プロセッサの複数のスレッドのそれぞれに割り当てる。例えば、トークン・トリガ・スレッディングは、１つのトークンを使用し、現在のプロセッサ・クロック・サイクルに関連して、後続のクロック・サイクルについて命令を発行することを許可されるプロセッサのスレッドのうちの特定の１つを識別することができる。トークン・トリガ・スレッディングは、説明されている実施形態で使用されているが、本発明は、この特定の種類のマルチスレッディングを必要とせず、他の種類のマルチスレッディング手法を使用することができる。
【００４１】
説明されている実施形態では、１つのドット積に対する乗算および簡約は他のスレッドからの演算と同時に実行されるため、パイプライン化に起因しうるサイクル・カウントの上記の増大は、他のスレッドの処理により実際には隠されうる。スレッドの同時実行によるサイクル・カウントの増大を完全に隠すために、与えられたスレッドからの複数の命令の実行間のサイクルの数は、簡約ユニット内のパイプライン・ステージの個数にアキュムレータ・レジスタ・ファイル１０６との間で読み書きするために必要な追加サイクル数を加えた値以上でなければならない。
【００４２】
すでに示されているように、本発明は、マルチスレッド型プロセッサで有利に実装することができる。本発明が実装されうるマルチスレッド型プロセッサのより具体的な実施例は、参照により本明細書に組み込まれている、同一出願人による２００２年１０月１１日出願された「Ｍｕｌｔｉｔｈｒｅａｄｅｄ  Ｐｒｏｃｅｓｓｏｒ  Ｗｉｔｈ  Ｅｆｆｉｃｉｅｎｔ  Ｐｒｏｃｅｓｓｉｎｇ  Ｆｏｒ  Ｃｏｎｖｅｒｇｅｎｃｅ  Ｄｅｖｉｃｅ  Ａｐｐｌｉｃａｔｉｏｎｓ」という表題の米国特許出願第１０／２６９，３７２号で説明されている。マルチスレッド型プロセッサは、ＲＩＳＣベースの制御コード、ＤＳＰコード、Ｊａｖａ（登録商標）コード、およびネットワーク処理コードを実行するように構成することができる。これは、単一命令複数データ（ＳＩＭＤ）ベクトル処理ユニット、簡約ユニット、および長命令ワード（ＬＩＷ）複合命令実行を含む。このマルチスレッド型プロセッサ例で使用するのに好適なスレッディングおよびパイプライン化手法の実施例については、米国特許出願第１０／２６９，２４５号で説明されている。
【００４３】
本明細書で説明されているような簡約ユニット１０２または１０２’は、図４に関して例示されているように、そのようなマルチスレッド型プロセッサ内の簡約ユニットとして使用することができる。もちろん、本発明は、他のマルチスレッド型プロセッサ、またはより一般的に他の種類のデジタル・データ・プロセッサで実装することができる。
【００４４】
図４は、図２の簡約ユニット１０２’を組み込んだマルチスレッド型プロセッサ４００の一実施例を示す。プロセッサ４００は、一般に、米国特許出願第１０／２６９，３７２号で説明されているものと類似しているが、本明細書で説明されているように構成された簡約ユニット１０２’およびアキュムレータ・レジスタ・ファイル１０６’を組み込む。
【００４５】
マルチスレッド型プロセッサ４００は、他の要素の中でもとりわけ、マルチスレッド型キャッシュ・メモリ４１０、マルチスレッド型データ・メモリ４１２、命令用バッファ４１４、命令デコーダ４１６、レジスタ・ファイル４１８、およびメモリ・マネジメント・ユニット（ＭＭＵ）４２０を備える。マルチスレッド型キャッシュ４１０は、複数のスレッド・キャッシュ４１０−１、４１０−２、．．．、４１０−Ｎを備えるが、ただし、Ｎは、一般的に、マルチスレッド型プロセッサ４００によりサポートされているスレッドの個数を表し、この特定の実施例では、Ｎ＝４である。もちろん、当業者であれば容易に理解できるように、Ｎの他の値を使用することもできる。
【００４６】
したがって、それぞれのスレッドは、マルチスレッド型キャッシュ４１０内で関連付けられた対応するスレッド・キャッシュを持つ。同様に、データ・メモリ４１２は、図のようにデータ・メモリ４１２−１、４１２−２、．．．、４１２−Ｎと表されるＮ個の異なるデータ・メモリ・インスタンスを含む。
【００４７】
マルチスレッド型キャッシュ４１０は、ＭＭＵ  ４２０を介してプロセッサ４００の外部にあるメイン・メモリ（図に示されていない）とインターフェイスする。ＭＭＵ  ４２０は、キャッシュ４１０のように、プロセッサによりサポートされるＮ個のスレッドのそれぞれに対する独立のインスタンスを含む。ＭＭＵ  ４２０は、メイン・メモリからの適切な命令がマルチスレッド型キャッシュ４１０にロードされることを保証する。
【００４８】
データ・メモリ４１２は、さらに、上記の外部メイン・メモリに直接接続されるが、この接続は、図に明示的にも示されていない。また、データ・メモリ４１２には、データ・バッファ４３０も関連付けられている。
【００４９】
一般に、マルチスレッド型キャッシュ４１０は、マルチスレッド型プロセッサ４００により実行される命令を格納するために使用されるが、データ・メモリ４１２は、命令によって演算が実行されるデータを格納する。命令は、命令デコーダ４１６によりマルチスレッド型キャッシュ４１０からフェッチされ、デコードされる。後述のように、命令の型に応じて、命令デコーダ４１６は、与えられた命令または関連付けられた情報をプロセッサ内のさまざまな他のユニットに転送することができる。
【００５０】
プロセッサ４００は、分岐命令キュー（ＩＱ）４４０およびプログラム・カウンタ（ＰＣ）レジスタ４４２を備える。プログラム・カウンタ・レジスタ４４２は、スレッドのそれぞれについて１つのインスタンスを含む。分岐命令キュー４４０は、命令デコーダ４１６から命令を受け取り、プログラム・カウンタ・レジスタ４４２とともに、入力を、キャリー伝搬加算器（ＣＰＡ）を備えることを例示されている加算器ブロック４４４に供給する。要素４４０、４４２、および４４４は、まとめて、プロセッサ４００の分岐ユニットを含む。図に示されていないが、補助レジスタもプロセッサ４００に含めることができる。
【００５１】
レジスタ・ファイル４１８は、整数結果の一時的格納場所となる。命令デコーダ４１６から整数命令キュー（ＩＱ）４５０に転送される命令は、デコードされ、適切なハードウェア・スレッド・ユニットが、スレッドのそれぞれに対する別々のインスタンスを含むように示されているオフセット・ユニット４５２を使用することにより選択される。オフセット・ユニット４５２は、独立のスレッド・データが破損しないように、明示的ビットをレジスタ・ファイル・アドレスに挿入する。与えられスレッドについて、これらの明示的なビットは、例えば、対応するスレッド識別子を含むことができる。
【００５２】
図に示されているように、レジスタ・ファイル４１８は、入力レジスタＲＡおよびＲＢに結合され、その出力は、加算器を含むことができる、ＡＬＵブロック４５４に結合される。入力レジスタＲＡおよびＲＢは、命令パイプライン化を実装する際に使用される。ＡＬＵブロック４５４の出力は、データ・メモリ４１２に結合される。
【００５３】
レジスタ・ファイル４１８、整数命令キュー４５０、オフセット・ユニット４５２、要素ＲＡおよびＲＢ、およびＡＬＵブロック４５４は、まとめて、整数ユニットの実施例を含む。
【００５４】
プロセッサ４００内で実行可能な命令の型は、Ｂｒａｎｃｈ、Ｌｏａｄ、Ｓｔｏｒｅ、Ｉｎｔｅｇｅｒ、およびＶｅｃｔｏｒ／ＳＩＭＤ命令型を含む。与えられた命令でＢｒａｎｃｈ、Ｌｏａｄ、Ｓｔｏｒｅ、またはＩｎｔｅｇｅｒ演算を指定しない場合、それは、Ｖｅｃｔｏｒ／ＳＩＭＤ命令である。他の命令型も使用できる、または代わりに使用することができる。ＩｎｔｅｇｅｒおよびＶｅｃｔｏｒ／ＳＩＭＤ命令型は、本明細書ではより一般にそれぞれ整数およびベクトル命令型と呼ぶ命令の実施例である。
【００５５】
ベクトルＩＱ  ４５６は、命令デコーダ４１６から転送されたＶｅｃｔｏｒ／ＳＩＭＤ命令を受け取る。スレッドのそれぞれに対する別々のインスタンスを含むものとして示されている、対応するオフセット・ユニット４５８は、独立しているスレッド・データが破損しないように、適切なビットを挿入するために使用される。
【００５６】
プロセッサ４００のベクトル・ユニット４６０は、Ｎ個の異なる並列部分に分離され、同様に分割されているベクトル・ファイル４６２を含む。ベクトル・ファイル４６２は、ＶＲ００からＶＲ３１で表される３２本のレジスタを含む。ベクトル・ファイル４６２は、前者がＶｅｃｔｏｒ／ＳＩＭＤ命令型に作用することを除きレジスタ・ファイル４１８と実質的に同じ目的に使用される。
【００５７】
ベクトル・ユニット４６０は、ベクトル命令キュー４５６、オフセット・ユニット４５８、ベクトル・ファイル４６２、およびそれらに関連付けられている算術演算および格納要素を備えることが例示されている。
【００５８】
ベクトル・ユニット４６０の演算は以下のとおりである。分数または整数データ型として符号化されたＶｅｃｔｏｒ／ＳＩＭＤブロックは、ベクトル・ファイル４６２から読み込まれ、アーキテクチャ上見えるレジスタＶＲＡ、ＶＲＢ、ＶＲＣに格納される。そこから、流れは、Ｖｅｃｔｏｒ／ＳＩＭＤデータの並列同時乗算を実行する乗算器（ＭＰＹ）を通る。キャリー・スキップ加算器（ＣＳＡ）およびＣＰＡを含む加算器ユニットは、追加算術演算を実行することができる。例えば、当業者であれば理解するように、ＣＳＡの１つまたは複数を使用して、ベクトル・レジスタ・ファイルからアキュムレータ値を足し込むことができ、またＣＰＡの１つまたは複数を使用して、乗算演算の完了のため最終加算を実行することができる。計算結果は、Ｒｅｓｕｌｔレジスタ４６４に格納され、簡約ユニット１０２’に入力オペランドとして供給される。簡約ユニット１０２’は、出力される総和結果が、それぞれの演算が逐次実行された場合に得られる結果と同じになるように入力オペランドを総和する。簡約された総和は、さらに処理するために、アキュムレータ・レジスタ・ファイル１０６’内に格納される。
【００５９】
ベクトル・ドット積を実行する場合、ＭＰＹブロックは、４つの乗算を並列実行し、ＣＳＡおよびＣＰＡユニットは、追加演算を実行するか、または単に乗算結果を転送しＲｅｓｕｌｔレジスタ４６４に格納し、簡約ユニット１０２’は、アキュムレータ・レジスタ・ファイル１０６’に格納されているアキュムレータ値とともに、乗算結果を総和する。その後、簡約ユニットにより生成された結果は、アキュムレータ・レジスタ・ファイルに格納され、すでに説明されている方法により、次の反復で使用される。
【００６０】
ベクトル・ユニット４６０の４つの並列乗算器ＭＰＹは、一般的に図１のプロセッサ１００の乗算器１０４に対応するものとみなすことができる。
【００６１】
この実施例のアキュムレータ・レジスタ・ファイル１０６’は、ＡＣＣ００からＡＣＣ１５で表される全部で１６本のアキュムレータ・レジスタを含む。
【００６２】
マルチスレッド型プロセッサ４００は、参照により本明細書に組み込まれている、同一出願人による２００２年１０月１１日に出願された「Ｍｅｔｈｏｄ  ａｎｄ  Ａｐｐａｒａｔｕｓ  ｆｏｒ  Ｒｅｇｉｓｔｅｒ  Ｆｉｌｅ  Ｐｏｒｔ  Ｒｅｄｕｃｔｉｏｎ  ｉｎ  ａ  Ｍｕｌｔｉｔｈｒｅａｄｅｄ  Ｐｒｏｃｅｓｓｏｒ」という表題の米国特許出願第１０／２６９，３７３号で説明されているように、スレッドベースのアクセス方式でレジスタ・ファイルにアクセスすることができる。
【００６３】
図５は、図４のマルチスレッド型プロセッサ４００で実行するのに適しているベクトル簡約命令の書式例を示す。この命令は、並列乗算器および簡約ユニットにより実行されるベクトル簡約演算を指定するために使用される。図中、ＯＰＣＯＤＥは実行すべき演算を指定し、ＡＣＣＤはアキュムレータ・デスティネーション・レジスタのアキュムレータ・レジスタ・ファイル・ロケーションを指定し、ＡＣＣＳはアキュムレータ・ソース・レジスタのアキュムレータ・レジスタ・ファイル・ロケーションを指定し、ＶＲＳＡは一組のベクトル・ソース・オペランドのベクトル・レジスタ・ファイル・ロケーションを指定し、ＶＲＳＢは他の一組のベクトル・ソース・オペランドのベクトル・レジスタ・ファイル・ロケーションを指定する。
【００６４】
図５に示されている命令書式を使用すると、ｍ個の並列乗算器および（ｍ＋１）入力簡約ユニットを備えるＳＩＭＤベクトル処理ユニットはベクトル乗算簡約加算（ｖｍｕｌｒｅｄａｄｄ）命令を実行することができ、この命令は
ＡＣＣＤ＝ＡＣＣＳ＋ＶＲＳＡ［１］＊ＶＲＳＢ［１］＋ＶＳＲＡ［２］＊ＶＳＲＢ［２］＋．．．＋ＶＳＲＡ［ｍ］＊ＶＳＲＢ［ｍ］
を計算する。
【００６５】
より具体的には、マルチスレッド型プロセッサ４００の実施例を参照すると、この命令は、ＶＳＲＡ［ｉ］およびＶＳＲＢ［ｉ］に対応する値をベクトル・レジスタ・ファイル４６２から読み込み、４つの並列乗算器ＭＰＹを使用してＶＳＲＡ［ｉ］＊ＶＳＲＢ［ｉ］を計算し、ＡＣＣＳをアキュムレータ・レジスタ・ファイル１０６’から読み込み、簡約ユニット１０２’を使用してその積をＡＣＣＳに加算し、簡約ユニットから結果をアキュムレータ・レジスタ・ファイルに書き戻し、ＡＣＣＤによって指定されたアドレスを使用することによりｍ＝４について実行できる。
【００６６】
同様に、ベクトル乗算簡約減算（ｖｍｕｌｒｅｄｓｕｂ）命令は、計算
ＡＣＣＤ＝ＡＣＣＳ−ＶＲＳＡ［１］＊ＶＲＳＢ［１］−ＶＳＲＡ［２］＊ＶＳＲＢ［２］−．．．−ＶＳＲＡ［ｍ］＊ＶＳＲＢ［ｍ］
を実行できる。
これらのベクトル簡約命令はそれぞれ、毎回の演算後の飽和付きで実行することもできる。当業者には明らかなように、
ＡＣＣＤ＝ＡＣＣＳ＋ＶＲＳＡ［１］＋ＶＲＳＢ［１］＋ＶＳＲＡ［２］＋ＶＳＲＢ［２］＋．．．＋ＶＳＲＡ［ｍ］＋ＶＳＲＢ［ｍ］
を実行するベクトル加算簡約加算などの他のベクトル簡約命令も定義できる。
【００６７】
図６は、図５に示されている種類の命令書式を使用する同じスレッドからの２つのベクトル簡約命令のパイプライン化された実行を示す。この実施例では、制限することなく、全部で８つのスレッドがあり、ラウンドロビン・スケジューリングでトークン・トリガ・スレッディングが使用されると仮定される。他のスレッドにより発行される命令は、この図に示されていない。この実施例のパイプラインは、命令フェッチ（ＩＦＥ）、命令デコード（ＤＥＣ）、リード・ベクトル・レジスタ・ファイル（ＲＶＦ）、２つの乗算ステージ（ＭＬ１およびＭＬ２）、２つの加算器ステージ（ＡＤ１およびＡＤ２）、４つの簡約ステージ（ＲＥ１からＲＥＦ４まで）、結果転送（ＸＦＲ）、およびライト・アキュムレータ・ファイル（ＷＡＦ）の１３のステージを含む。第２の加算器ステージ（ＡＤ２）を含む同じサイクルで、プロセッサは、さらに、アキュムレータ・レジスタ・ファイル（ＲＡＦ）を読み込む。そのため、ベクトル簡約命令のうちの与えられた１つは、実行に１３サイクルかかる。
【００６８】
この実施例に関して、２ベクトル簡約命令が同じスレッドから次々に発行する場合に、第１のベクトル簡約命令は、次のベクトル簡約命令がレジスタ・ファイルからアキュムレータ・ソース・レジスタを読み込む必要が生じる前に、すでにそのデスティネーション・アキュムレータ結果をアキュムレータ・レジスタ・ファイル（ステージＷＡＦ内）に書き戻していることに注意することが重要である。したがって、図５に示されている命令書式を使用する
ｖｍｕｌｒｅｄａｄｄ  ａｃｃ０，ａｃｃ０，ｖｒ１，ｖｒ２
ｖｍｕｌｒｅｄａｄｄ  ａｃｃ０，ａｃｃ０，ｖｒ３，ｖｒ４
などの２つの命令は、データ依存関係によりプロセッサのストールを引き起こすことなく、連続命令として発行することができる。この種類の機能は、さまざまなマルチスレッド型プロセッサおよび簡約ユニット構成とともにさまざまな命令書式を使用して他の実施形態で実現できる。
【００６９】
上述の本発明の実施例は、従来の手法に関して著しい利点を多数持つ。例えば、簡約ユニットは、性能に対しペナルティを課されることなく、また従来の手法に関して、必要な回路面積も適度の増大のみで容易にパイプライン化することができる。さらに、簡約ユニットは、直接、飽和算術演算をおよびラップアラウンド算術演算の両方をサポートし、オペランドをアキュムレータ値に加える演算だけでなく、オペランドをアキュムレータ値から引く演算をも実行できる。
【００７０】
デジタル信号処理およびマルチメディア・アプリケーションは、飽和算術演算およびラップアラウンド算術演算の機能を必要とする場合があるため、制御ビット入力に基づき飽和算術演算またはラップアラウンド算術演算のいずれかを実行する本明細書で説明されている種類の簡約ユニットを使用することにより実現される。
【００７１】
図１から４に示されている特定の回路配列は、説明実施例としてのみ提示されており、当業者には明らかなように、明示的に示されていない追加または他の要素も含まれていることがあることに留意されたい。
【００７２】
本発明は、図４に示されている特定のマルチスレッド型プロセッサ構成を必要としないことも強調すべきである。本発明は、さまざまな他のマルチスレッド型または非マルチスレッド型プロセッサ構成で実装することができる。
【００７３】
そのため、本発明の上述の実施形態は、例示のみを目的としており、付属の請求項の範囲内の多数の他の実施形態は、当業者には明白であろう。例えば、図に示されている特定の算術演算ユニット、簡約ユニット、およびアキュムレータ・ユニット構成は、他の実施形態では変更できる。さらに、上で指摘したように、パイプライン構成、スレッディングの種類、および命令書式を変更して、与えられたアプリケーションの特定の要求条件に対応させることができる。
【図面の簡単な説明】
【００７４】
【図１】本発明の実施例による簡約ユニットを組み込んだプロセッサ実施例の一部を示し、特に、ドット積を計算するため簡約ユニットを使用する方法を示す図である。
【図２】実施例においてｍ＝４の場合に実装されるような図１の簡約ユニットを示す詳細図である。
【図３】図２の簡約ユニットで使用される簡約加算器を示す詳細図である。
【図４】図２の簡約ユニットを組み込んだマルチスレッド型プロセッサの一実施例を示す図である。
【図５】図４のマルチスレッド型プロセッサで実行するのに適しているベクトル簡約命令の書式例を示す図である。
【図６】図５に示されている種類の命令書式を使用する同じスレッドからの２つのベクトル簡約命令のパイプライン化された実行を示す図である。
【図１】
2006529043.tif 000003
【図２】
2006529043.tif 000004
【図３】
2006529043.tif 000005
【図４】
2006529043.tif 000006
【図５】
2006529043.tif 000007
【図６】
2006529043.tif 000008
【国際調査報告】
2006529043.tif 000009