JP2001147798A - データ乗算方法および計算装置 - Google Patents
データ乗算方法および計算装置Info
- Publication number
- JP2001147798A JP2001147798A JP2000279258A JP2000279258A JP2001147798A JP 2001147798 A JP2001147798 A JP 2001147798A JP 2000279258 A JP2000279258 A JP 2000279258A JP 2000279258 A JP2000279258 A JP 2000279258A JP 2001147798 A JP2001147798 A JP 2001147798A
- Authority
- JP
- Japan
- Prior art keywords
- data
- bit
- circuit
- output
- input
- 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.)
- Pending
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/52—Multiplying; Dividing
- G06F7/523—Multiplying only
- G06F7/53—Multiplying only in parallel-parallel fashion, i.e. both operands being entered in parallel
- G06F7/5324—Multiplying only in parallel-parallel fashion, i.e. both operands being entered in parallel partitioned, i.e. using repetitively a smaller parallel parallel multiplier or using an array of such smaller multipliers
-
- 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/499—Denomination or exception handling, e.g. rounding or overflow
- G06F7/49905—Exception handling
- G06F7/4991—Overflow or underflow
-
- 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/499—Denomination or exception handling, e.g. rounding or overflow
- G06F7/49905—Exception handling
- G06F7/4991—Overflow or underflow
- G06F7/49921—Saturation, i.e. clipping the result to a minimum or maximum value
Landscapes
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Computational Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
- Complex Calculations (AREA)
- Executing Machine-Instructions (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
キテクチャを強化すること、および、ベクトル化データ
処理領域において、命令セットアーキテクチャ準拠プロ
セッサの微小アーキテクチャを改善すること。 【解決手段】 32ビット値乗算法は、各被乗数を16
ビット成分に分解することを含む。この方法は、乗算装
置100において、論理の多くの再使用を可能にするプ
ロセッサコア設計を実現する。この乗算装置100は、
各種サイズのデータフォーマットを、同じ乗算回路に入
力させることを可能にするセレクタ110、112、1
14、116、118、119を含む。多数の、データ
変換経路が設けられ、単一の圧縮回路160と、単一に
構成可能な全加算回路170に供給される。
Description
サに関わり、特に、ベクトル化データを操作する技術に
関わる。
は、さらにコンピュータ処理の増大が必要とされる。一
例として、インターネットは、画像表示、および、ビデ
オ・オーディオ・コンテンツの再生用に、多量のマルチ
メディアプリケーションを発生させた。これらのアプリ
ケーションにおいては、静止的グラフィック画像や、完
全動画ビデオの形式を持つ複雑なデータの操作が実行さ
れる。ディジタル化画像は、莫大な量のメモリ容量を消
費することが一般に認められている。例えば、一個の、
480x640ピクセルで、ピクセル当り24ビットの
フルカラー解像度(ピクセル当り3個の、8ビットバイ
ト)を持つ、比較的小容量の画像は、ほぼ1メガバイト
のデータを占拠する。1024x768ピクセルの解像
度においては、24ビット・カラー画像は、その表示に
2.3MBのメモリを必要とする。8.5インチx11
インチ(21x28cm)のページの24ビット色彩画
は、インチ当り300ドットとすると、2MBものメモ
リ容量を必要とする。ビデオ画像はさらにデータ集約的
である。なぜなら、高品質消費者用アプリケーション用
の場合、画像は、毎秒少なくとも30フレームの割合で
出現しなければならないと一般に認められているからで
ある。現在、フレーム当り1920x1035、また
は、それ以上ものピクセルを要求する高画質テレビ(H
DTV)が提案されているが、これは、毎秒約150億
ビットのデータ転送率に相当する。その他、ビデオ電子
会議や、家庭娯楽装置のようなディジタル画像や、マル
チメディアプリケーションにおける進歩によって、さら
に広帯域で、従って、さらに高度の処理能力に対する高
度の要求が生じている。
めの、従来の、無損失技術としては、ハフマン符号化
法、ラン・レングス符号化法、および、レンペル・ジフ
・ウェルチ・アルゴリズムのような方法がある。これら
の方法は、画像品質を維持することにおいては有利では
あるけれども、その他の点では、高出力効率システムに
対する要求を満たすには十分ではない。このため、通常
ある程度の情報損失を含む圧縮技術が工夫されてきてい
る。そのような技術として、離散コサイン変換(DC
T)法、適応DCT法、および、ウェーブレット変換法
がある。
Experts Group (JPEG)は、JPE
G標準という名で知られる、静止画像圧縮のための標準
を創製した。この標準は、離散コサイン変換(DCT)
に基づくアルゴリズムを定義する。JPEGアルゴリズ
ムを用いる符号化装置は、画像を、4ステップで処理す
る。すなわち、線形変換、量子化、ラン・レングス符号
化(RLE)、および、ハフマン符号化である。デコー
ドは、上記のステップを逆に行い、元の画像を再構成す
る。線形変換ステップの場合、画像は、8x8ピクセル
のブロックに分割され、次に、各ブロックの、空間にお
ける両次元に対してDCT操作を適用する。画像をブロ
ックに分割する目的は、DCTアルゴリズムの欠点、す
なわち、DCTは高度に非局部的であるという欠点を補
うためである。画像は、この非局部性を補うために、ブ
ロックに分割される。すなわち、アルゴリズムを小区域
に限定し、各ブロック毎に別々に変換を実行するためで
ある。しかしながら、このような妥協は、タイル状の外
観を生ずるという欠点を持つ。このタイル状の外観は、
粗い品質を持つことによって視覚的にもそれ自身明白で
ある。
えるために必須であるが、画像情報の損失はもたらさな
い。各変換成分は、各8x8ブロック内におけるその位
置から選択されるある値をもって量子化される。このス
テップは、多量の僅少数値を特定するのにごく僅かな情
報しか要しない、ゼロまたは、その他の小数値に減少さ
せるという好ましい副次的効果を有する。
値、例えば、ゼロの実行数をコードして、ある一つの値
を繰り返す度数、および、繰り返す数値を特定するコー
ドを生ずる。例えば、「8個のゼロ」のような単一コー
ドの方が、一連の8個のゼロよりも表わすのに少ないス
ペースしか要求しない。このステップは、通常、量子化
ステップで生ずる大量のゼロの存在によって正当化され
る。
の一般的形式)は、ラン・レングス符号化ステップによ
って得られた各記号を、その記号の出現頻度に応じて選
ばれる、可変長ビット記号列に変換する。すなわち、高
頻度記号は、低頻度記号よりも、短いコードで符号化さ
れる。符号化は、あらかじめ設定された表、または、特
に、画像については、その必要な全ビット数を最小にす
るように構成された表に基づいて実行することが可能で
ある。
tures Experts Group (MPE
G)も、画像配列を符号化するための二つの標準を定め
た。この基準は、MPEG IおよびMPEG IIの
名で知られる。このMPEGアルゴリズムは、フレーム
間の比較的僅かな変動の共通出現を利用するものであ
る。MPEG標準においては、完全画像は、各12フレ
ーム毎に1回だけ圧縮・転送される。この「参照フレー
ム」(インフラ・フレームを表わす所謂「I−フレー
ム」である)は、通常、JPEG圧縮法を用いて圧縮さ
れる。中間フレームに関しては、予側フレーム(P−フ
レーム)を計算し、現実フレームと各予測フレーム間の
差のみを圧縮・転送する。
るアルゴリズムの内のいずれでも用いることができる。
アルゴリズムは、特定のブロックに対してどの予測アル
ゴリズムがもっとも良く適応するかに応じて、ブロック
毎に選ばれる。「移動推定」と呼ばれる方法は、時間的
冗長度を減少させるのに用いられる。時間的冗長度と
は、画像の大部分が、フレーム間で変化することのない
映画に観察される。カメラのパンのような、多くの場合
において、画像中の各ピクセルは、フレーム毎に変化し
ているが、ほとんど各画像が、前画像においても発見さ
れるものである。先行(および後続)フレームにおいて
ピクセルのコピーを「発見する」ステップを、移動推定
と呼ぶ。H.261やMPEG1および2のようなビデ
オ圧縮標準により、画像符号化装置(画像圧縮エンジ
ン)は、画像内の16x16ピクセル・ブロックの移動
を特定することによって冗長度を除去することが可能で
ある。圧縮される画像を、16x16ピクセルのブロッ
クに分解する。画像の各ブロックにおいて、検索を実行
し、圧縮された配列の中の他の画像中に適合ブロックが
発見されないかどうか探る。適合を決めるには、通常、
二つの測定値が使用され 入するのが容易である。一方、SDSの演算は、実行す
るのにさらに高度の精度が要求されるけれども、その結
果は、一般により優れた品質のものとして受け入れられ
ている。
解除(復元)のためには、復元アルゴリズムは、毎秒3
0フレームの復元画像を生成することが可能なほど十分
に単純でなければならない。圧縮におけるスピード要求
は、多くの場合、復元におけるものほど極端ではない。
なぜなら、多くの場合、画像は、オフラインで圧縮され
るからである。しかしながら、そうは言っても、圧縮時
間は、市場で商業的に生き残っていけるほどにそこそこ
のものでなければならない。さらに、多くのアプリケー
ションは、復元ばかりでなく、リアルタイム圧縮を要求
する。例えば、ビデオ電子会議のようなライブ・イベン
トのリアルタイム転送がそれである。
は、この種の操作を実行するのに一般的に使用される、
通例の実行機器である。集約数字の処理に最適化してい
るので、DSPは、しばしばサウンドカード、音声認識
カード、ビデオキャプチャ・カード等のようなマルチメ
ディア機器の内部に組み込まれる。DSPは、もう一方
の汎用マイクロプロセッサよりも、データ圧縮プログラ
ムの要求する複雑かつ繰り返しの多い数式計算や、特異
的なマルチメディア型アルゴリズムを、より効率的に実
行するコプロセッサとして機能する。
価格・性能比を改善しようという飽くなき探求は、従来
DSPによって与えられた処理能力の多くを効果的に乗
算する、汎用マイクロプロセッサ世代を生み出した。一
つの開発方向は、縮小命令セットコンピュータ(RIS
C)である。RISCプロセッサは、命令が比較的少な
く、そのためデコードが簡単であること、および、全て
の代数・論理演算を、レジスタ対レジスタ方式で実行す
ることを要求すること、が特徴である。もう一つの特徴
は、複雑なメモリアクセス操作がないことである。メモ
リアクセスは全てレジスタロード・格納操作であって、
比較的小数の、比較的単純なアドレスモードしかない。
すなわち、オペランドアドレスを特定するのに数通りの
やり方しかない。命令は、ただ一つの長さしか持たず、
メモリアクセスは、標準データ幅しか持たない。命令実
行は、マイクロコード化と比べると、直接的回路構成型
である。命令サイクル時間は固定されており、かつ、命
令は比較的単純なものとなるように定義されているの
で、それらは全て1乃至数サイクルで実行される。通
常、多数命令は、パイプライン処理の結果として、ある
1時点においては、実行の様々なステップにある。
H.320等を、データ圧縮標準としてさらに競合的に
するために、既存のRISCアーキテクチャプロセッサ
や、既存の命令セットを強化する試みがなされて来てい
る。従来からDSP技術を用いて具現化されている、他
の現代のディジタルサービス、例えば、広帯域ネットワ
ーク、セットトップ・ボックスCPU、ケーブルシステ
ム、音声交信IP装置、無線製品等も、単一の汎用プロ
セッサにおいて処理能力が増加するならば、その恩恵を
被ることになろう。さらに一般的に、従来からDSP技
術を用いて具現化されていたディジタルフィルタ・アプ
リケーションは、DSP性能を持つ汎用プロセッサがさ
らに処理能力を向上させることになれば、そのお蔭を被
ることになろう。
命令セット・アーキテクチャ(ISA)は、単一命令多
数データ(SIMD)型命令を含む。これらの命令によ
って、あるベクトルデータの多数要素であって、別のベ
クトルの対応要素を含む、そのようなベクトルデータの
多数要素に対して平行演算を実行することが可能にな
る。この型のベクトル演算は、画像処理のような多くの
ディジタルアプリケーションに共通のものである。もう
一つの重要な領域として、データ暗号化系、および、解
読系の分野がある。情報のコード化は、インターネット
上における、安全な取引を確保するために、また、無線
通信装置のために、重要である。
さらに高めることが好ましい。RISCプロセッサ・コ
アの性能を改善し、それによって、さらに強力なマルチ
メディアプリケーションや、次世代一般製品の求める計
算能力需要を満たすことが好ましい。必要なのは、ベク
トル化処理命令のためのISAの強化である。さらに、
ベクトル化データ処理の領域において、RISC準拠プ
ロセッサに対する改善されたマイクロアーキテクチャを
供給することが好ましい。
方法は、各被乗数を2個の16ビット値に分割すること
を含んでいる。各被乗数において、2個の16ビット値
を加算して、元の32ビット値を生成することもでき
る。従って、各32ビット値は、(an+bn)という形
を持つ。積は、(a1a2+a1b2+a2b1+b1b2)で
ある。このようにして、2個の被乗数を掛け算するのに
16ビットの乗算器しか要しない。中間項は、合計して
正確な結果を出す前に、2の乗数で掛ける必要がある。
タファイルからデータを受け取るための、第1、第2、
および、第3入力から成る乗算装置を含む。この乗算装
置はさらに、上記入力を受け取るために結合した第1セ
レクタ、この第1セレクタの出力を受け取るために結合
した一組の乗算回路、第1、第2、および、第3変換経
路、これらの変換経路を受け取るために結合した第2セ
レクタ、この第2セレクタの出力および第3入力を受け
取るために結合した圧縮回路、および、第2セレクタの
出力を受け取るために結合した加算回路、を含む。
選択し、それらを、デコード命令に基づいて、各種配列
に生成して、乗算回路に転送する。各変換経路は、乗算
回路の出力に対して別々のデータ変換を実行する。第2
セレクタは、この場合もデコード命令に基づいて、三つ
の変換経路の内から選択して、その選択された変換経路
を、圧縮回路に入力する。加算回路は、この場合もデコ
ード命令に基づいて、選択的に、4個、2個、または、
単一の全加算器となるように構成される。
む。同様に、加算回路も、オーバーフロー検出論理回路
を含む。飽和値ジェネレータを、乗算回路と、加算回路
に設けて、オーバーフロー検出時に飽和を実行する。
様々な配列で提示するよう構成することによって、各種
命令を受け取る弾力的な回路が得られる。特に、同一命
令を、異なる大きさのデータフォーマットに対し、その
各フォーマットに合わせた回路を用意することなく具体
化することが可能である。さらに、二重の、オーバーフ
ロー検出論理は、多種類データフォーマットをサポート
する。さらに、オーバーフロー状況をより正確に処理す
ることが可能となる。なぜなら、中間結果に対してオー
バーフロー検出が行われるからである。
図に示す、また、下記に論ずる各種実施の態様の説明を
参照することによってさらに十分な理解が可能である。
は、その操作がレジスタ対レジスタ方式であることが特
徴である。データ・ソースはレジスタであり、データ・
ディスティネーションはレジスタである。従って、レジ
スタファイルは、通常、中央計算装置によって実行され
る各種整数演算用の汎用レジスタのプールとして設けら
れる。本発明によれば、レジスタファイルを含む汎用レ
ジスタが、下記に開示・説明される各種ベクトル化演算
のための、データ・ソースとデータ・ディスティネーシ
ョンとなる。この事実を強調するために、図1に、N個
の汎用レジスタR0−Rn-1から成るレジスタファイル1
02を示す。各レジスタは、長さが60ビットである。
算演算関連領域における改善を含む。図1は、本発明に
よる、乗算装置100の模式図を示す。本来複雑な回路
の図示を簡単化するために、乗算装置の主要機能ブロッ
クのみを強調して示してある。関連技術に通常の技能を
持つ当業者であれば、もし本発明の議論に密接に関係す
るならば、各種制御信号や、その他の支援論理も含まれ
ることが了解されるであろう。
装置である。各段は、他の段と、パイプライン・ラッチ
P1、P2およびP3によって分離されている。通常、
パイプライン・ラッチは、一連のフリップフロップを含
む。パイプライン・ラッチは、前段からのデータを、ク
ロックサイクルの間、一時的に保持する。これは、ある
段から次段へのデータの流れを同期化するのに役立つ。
さらに、パイプライン・ラッチは、各段間のデータを隔
離(アイソレート)するのにも役立つ。これは重要であ
る。なぜなら、パイプライン処理の利点は、各種命令
が、パイプラインの各段で実行可能であるということだ
からである。
びCを介して入力および出力データを供給する。各オペ
ランドは、64ビット・バスである。各64ビット・バ
スは、論理(図示せず)を介して、レジスタファイル1
02の汎用レジスタの内の一つに結合する。これによっ
て、乗算装置とレジスタファイルとの間にデータ通信が
確立する。通常、通信は、プロセッサ操作の命令デコー
ド相に行われる。
およびCの64ビット・バスは、パイプライン・ラッチ
P1を介して1段目に供給される。クロック信号を受け
取ると、A、BおよびCは同相にクロックされ、ソース
ラインsrc1,src2およびsrc3となる。ただ
し、各ソース「ライン」は、64ビットラインを含む。
ソースラインsrc1とsrc2は、セレクタ回路11
0、典型的にはマルチプレクサ回路に供給される。ソー
スラインsrc3は、1段目を通過して、パイプライン
・ラッチP2に達し、それから、2段目に入る。セレク
タ回路110は、各ソースラインsrc1とsrc2と
をまとめて、4グループのワードラインに入力する。従
って、ソースラインsrc1の64ビットラインは、通
常、src1[63:0]、ビット位置63−0として
表わされる。セレクタ回路110は、src1を下記の
ようにグループ分けする、すなわち、src1[63:
48], src1[47:32], src1[3
1:16]、および、src1[15:0]である。
下記のようにグループ分けされる、すなわち、src2
[63:48], src2[47:32], src
2[31:16]、および、src2[15:0]であ
る。
(末尾)」ビット、バイト(8ビット)、および、ワー
ド(16ビット)の順序が用いられる。この慣用法によ
れば、高次の要素であればあるほど、大きい数のビット
位置に格納される。また別の慣用法として、「大エンデ
ィアン(末尾)」法があるが、この場合、高次の要素で
あればあるほど、小さな数のビット位置に格納される。
0は、4対の出力ライン、x3/y3,x2/y2,x1/
y1、および、x0/y0を与える。各出力ラインは、1
6ビットラインを含む。セレクタ回路110は、src
1およびsrc2から得られた8個の16ビットグルー
プを、8個のワードラインxn,ynにマップするように
設計されている。セレクタ回路110は、下記の配列を
与える。一つは、16ビット乗算用であり、もう一つは
32ビット乗算用である。これらの配列の重要性は、命
令の説明時に明らかになる。16ビット配列 32ビット配列I 32ビット配列II src1[62:48]⇒ x3 src1[31:16]⇒ x3 src1[63:48]⇒ x3 src1[47:32]⇒ x2 src1[31:16]⇒ x2 src1[63:48]⇒ x2 src1[31:16]⇒ x1 src1[15:0]⇒ x1 src1[47:32]⇒ x1 src1[15:0]⇒ x0 src1[15:0]⇒ x0 src1[47:32]⇒ x0 src2[63:48]⇒ y3 src2[31:16]⇒ y3 src2[63:48]⇒ y3 src2[47:32]⇒ y2 src2[15:0]⇒ y2 src2[47:32]⇒ y2 src2[31:16]⇒ y1 src2[31:16]⇒ y1 src2[63:48]⇒ y1 src2[15:0] ⇒ y0 src2[15:0]⇒ y0 src2[47:32]⇒ y0 8個のワードラインxn,ynは、4個の16x16乗算
回路120−126に入力する。ワードラインx0/y0
は回路120に入力し、ワードラインx1/y1は回路1
22に入力する、等のようになっている。各乗算回路1
20−126は、それぞれ、オーバーフロー検出論理1
30−136を含む。乗算回路は、4本の33ビット合
計ラインs3−s0と、4本の対応する33ビット桁上ラ
インc3−c0を生成する。この合計・桁上ラインにおけ
る余分ビットは、乗算回路120−126において生成
された符号ビットである。合計・桁上ラインは、パイプ
ライン・ラッチP2に入力する。パイプライン・ラッチ
P2は、乗算装置100の1段目を、次段、すなわち、
2段から分離する。
s3/c3,s2/c2,s1/c1,s 0/c0は各々、16
ビット変換回路152、32ビット変換回路154、お
よび、64ビット変換回路156に結合されている。こ
れらの変換回路は、それぞれ、入力の33ビット合計・
桁上対を再編成し、それを、64ビット合計・桁上出力
対にまとめる。変換回路に応じて、その後の処理が実行
される。この変換の重要性については、命令セットの説
明のところで明らかにされる。
固定小数点乗算に使用される。その出力153は、64
ビット合計ラインおよびそれと対応する64ビット桁上
ラインを含む。回路152は、33ビット合計・桁上入
力を、64ビット合計・桁上出力対153に変換するた
めに2個の変換方式を提供する。整数乗算では、4個の
入力33ビット合計・桁上対において、最下位の16ビ
ットのみが、その64ビット合計・桁上出力対153、
すなわち、0−15ビットにパックされる。固定小数点
の場合、4個の33ビット合計・桁上対の上部のみが出
力153にパックされる。特に、ビット部分15−30
が転送される。
ミキサないしマルチプレクサを含む。もっとも別の構成
も可能である。
使用される。その出力155は、64ビットの合計ライ
ンと64ビットの桁上ラインを含む。回路154は、3
3ビット合計・桁上入力の下位の2対、または、33ビ
ット合計・桁上入力の上位の2対の内のいずれかを、6
4ビット合計・桁上出力対に変換する。
の上位または下位対を選択し、それらを結合して64ビ
ット出力155を形成する、一組のマルチプレクサより
なる。この回路の使用法は、命令セットに関連する説明
で明らかになる。合計・桁上入力ラインは、各々、33
ビットであることが見てとれる。最上位ビット(ビット
位置32)は、2段目における外部の符号ビットである
が、これは、変換操作の間に取り除かれる。MACF
X.WLおよびMACNFX.WL命令の場合、s0/
c0およびs1/c1のビット[30:0]が転送さ
れ、合計・桁上出力のビット[0]には「0」がロード
される。
使用される。その出力は、4対の合計・桁上ライン、s
x3/cx3,sx2/cx2,sx1/cx1,sx0/c
x0を含み、各「ライン」は、64ビットライン幅であ
る。回路156は、入力する各合計・桁上対s3/c3,
s2/c2,s1/c1,s0/c0を、それぞれ、出力64
ビット合計・桁上対sx3/cx3,sx2/cx2,sx
1/cx1,sx0/cx0にマップする。しかしながら、
入力合計・桁上対は、出力合計・桁上対とは異なるビッ
ト位置を占める。マッピングは、下記の要領で行われ
る。このマッピングの重要性は、命令セットの説明の際
に明らかになる。 s3[31:0],c3[31:0]⇒sx3[63:48],cx3[63:48] s2[31:0],c2[31:0]⇒sx2[47:16],cx2[47:16] s1[31:0],c1[31:0]⇒sx1[47:16],cx1[47:16] s0[31:0],c0[31:0]⇒sx0[31:0],cx0[31:0] 好ましくは、回路156は、合計・桁上入力ラインを、
出力ラインの適当なビット位置に簡単に振り向ける一組
の配線を含んでいる。前述の回路154の場合と同様、
各入力ラインの最上位符号ビットは単純に無視される。
なぜなら、それは、乗算装置100の2段目、および、
3段目における外部ビットだからである。
路152の出力153は、セレクタ回路114の「a」
入力に入力する。同様に、回路154の出力155は、
セレクタ回路114の「b」入力に結合する。このセレ
クタ回路は、「a」入力か、「b」入力のいずれかに出
力し、出力ライン115に至る。出力115は、もう一
つのセレクタ回路116の「a」入力に入力する。
nは、8:2圧縮回路140に入力する。この圧縮回路
は、1対の64ビット合計・桁上出力141を生成す
る。この出力は、セレクタ回路116の「b」入力に入
力する。セレクタ回路は、「a」入力か、「b」入力の
いずれかを選択し、その選択したラインを、3:2圧縮
回路160の入力に提供する。
53と155は、セレクタ回路116に直接結合しても
よい。しかしながら、図1の構成の方が好ましい。なぜ
なら、セレクタ114の存在によって、このデータフロ
ーのタイミングと、圧縮器140を通過するデータフロ
ーのタイミングを同期させられるからである。有効に作
用すると、セレクタ114と116は協力して単一の
3:1セレクタとして作動し、三つのデータ変換経路の
内の一つからデータを選択する。
「a」入力に入力ラインsrc3を受け入れる。その
「b」入力は、定数値"0.5"に結合する。その「c」
入力は、定数値"0"に結合する。セレクタ112の選択
された入力は、圧縮回路161の第3の入力に結合す
る。圧縮回路160は、3個の入力を結合し、2個の6
4ビット出力161を生成する。これらの出力は、パイ
プライン・ラッチP3に結合され、2段目から3段目を
分離する。
P3の出力163は、2段目からの合計・桁上ラインを
含む。この合計・桁上ラインは、桁上・伝送加算回路1
70に入力する。加算回路170の出力は、64ビット
である。上半分、ビット[63:32]は、セレクタ回
路118の「a」入力に入力する。下半分、ビット[3
1:0]は、セレクタ回路119の「b」入力に入力す
る。飽和数値ジェネレータ182は、セレクタ118と
119の「a」入力に入力を与える。
さらに、オーバーフロー検出論理回路180,186に
入力する。出力163の低位ビット[31:0]は、検
出論理180に入力する。高位ビット[63:32]
は、検出論理回路186に入力する。各回路180,1
86の出力は、それぞれ、セレクタ回路118,119
のセレクタ入力に入力する。
に基づいて、加算回路170で実行される加算操作にお
いてオーバーフローが現れるかどうかを予測する。図2
は、回路180のさらなる詳細を示す。各合計・桁上入
力181の低位ビット、すなわち、ビット[31:0]
は、桁上発生回路202に入力する。この回路は、単純
に加算回路の桁上生成論理である。回路202の出力
は、32ビット桁上数である。上位の2個のビットc
[31]とc[30]は、XORゲート206によって
XOR処理される。ゲート206の出力は、制御信号M
ACとの間でAND処理される。このMAC制御信号
は、MMACFX.WLまたはMACNFX.WLのい
ずれかが実行のためにデコードされた場合肯定される。
それ以外の場合は、MAC制御信号は、肯定ないし表明
されない。回路180は、オーバーフローが起こると予
測される場合、出力183を肯定ないし表明する。検出
論理186も同様に構成され、同様に動作する。出力1
87は、合計・桁上ライン163の上位32ビットに基
づいてオーバーフローが起ころうとする時に肯定ないし
表明される。
が、論理回路180によって予測されたとすると、セレ
クタ回路118は、「a」入力を、出力188に生成す
る。それ以外は、セレクタ回路118は、その出力に、
「b」入力を生成する。すぐにわかるように、出力18
8は、出力190の上位32ビットを含み、出力190
は、乗算装置100の出力を含む。同様に、論理回路1
86によってオーバーフロー条件が予測されると、セレ
クタ回路119は、「a」入力を、出力189に生成す
る。それ以外は、セレクタ回路119は、「b」入力
を、出力に生成する。出力189は、出力190の下位
32ビットを含む。
−126のさらなる詳細が、乗算器120を実例として
示されている。回路122−126も同様の構成を持つ
ものであることを了解されたい。回路120は、ウォー
レス加算ツリー310を含み、16x16ビット乗算を
実行する。セレクタ回路110からの16ビット入力ラ
インx0とy0は、このウォーレス加算ツリーによって結
合される。その出力は、33ビット桁上ライン304と
33ビット合計ライン302である。合計・桁上ライン
における33番目のビットは、符号ビットである。合計
・桁上ラインは、セレクタ回路330の「b」入力に結
合される。通常、セレクタ回路330は、乗算回路12
0のc0およびs0出力として、「b」入力を選択する。
26は、オーバーフロー検出論理130を含む。ウォー
レス・ツリー310に結合する、16ビット入力ライン
x0およびy0は、検出論理130にも結合する。この検
出論理は、セレクタ回路330の「a」入力に結合する
出力を持つ。飽和数値ジェネレータ300も、セレクタ
回路330の「a」入力に結合する出力を持つ。検出論
理は、x0およびy0に基づき、オーバーフローが、16
ビット固定小数点乗算に現れるかどうかを予測する。も
しもオーバーフロー条件が予測されると、セレクタ回路
330は、乗算回路120のc0およびs0出力として、
「a」入力を選択する。本発明においては、1段目の検
出論理は、x0とy0の両方が−1かどうかを予測する。
これが、固定小数点乗算の場合のオーバーフロー条件と
なる。なぜなら、固定小数点表示法における正の最大値
は、16ビット・データの場合、1−2-15であり、3
2ビット・データの場合、1−2-32だからである。
0は、4個の加算段を含む。入力する64ビット合計・
桁上ライン163は、4組の16ビットラインにまとめ
られる。各加算段は、全加算回路400−403を含
む。低位16ビット合計・桁上ライングループ、s[1
5:0],c[15:0]は、全加算器400の入力に
結合し、次の16ビット合計・桁上ライングループ、s
[31:16],c[31:16]は、全加算器401
の入力に結合し、合計・桁上ライングループ、s[4
7:32],c[47:32]は、全加算器402の入
力に結合し、高位16ビット合計・桁上ライングループ
は全加算器403に結合する。
424を介して結合し、選択性リップル桁上構成を形成
する。加算器400の桁上出力は、セレクタ回路420
の「a」入力に結合する。セレクタ回路420の出力
は、加算器401の桁上入力に結合する。一方、加算器
401の桁上出力は、セレクタ回路422の「a」入力
に入力し、その出力は、加算器402の桁上入力に結合
する。加算器402の桁上出力は、セレクタ回路424
の「a」入力に結合する。セレクタ回路424の出力
は、加算器403の桁上入力に供給される。セレクタ回
路420−424の「b」入力は、定数値「0」に結合
する。加算器400の桁上入力も定数値「0」に結合す
る。加算器回路の16ビット出力は結合されて、加算器
170の64ビット出力を生成する。前述したように、
加算器170の出力は、セレクタ回路118と119に
入力する。
は、図1における、1段目の乗算回路120−126
は、また別の構成を持つ。図5は、回路120−126
の代替として示した、別の乗算回路120'−126'か
らなる例である。図5に示した構成は、下記に述べるあ
る種の命令を実行ないし具現化するのに使用される。
正型16x16ウォーレス・ツリー加算器530が示さ
れる。セレクタ回路110の出力ラインx0が、ウォー
レス・ツリー加算器の一方の入力となる。ウォーレス・
ツリー加算器に対するもう一方の入力は、セレクタ回路
520から来る。セレクタ回路520の「a」入力は、
セレクタ回路110の出力ラインy0と結合する。出力
ラインy0は反転され、1の相補的出力を生成し、これ
は、セレクタ回路520の「b」入力に結合する。反転
論理510は、16個の反転器で形成することも可能で
ある。セレクタ回路520と修正型ウォーレス・ツリー
は、制御信号CTL1を受け取る。
L命令のデコードに応答して生成される。CTL1が肯
定ないし表明されると、セレクタ回路520は「b」入
力を生成し、これが、y0の1の相補値を、修正型ウォ
ーレス・ツリーに入力する。さらに、このウォーレス・
ツリーは、CTL1が肯定された場合、定数「1」が、
その入力の積に加算されるように修正されている。その
結果、これは、y0を反転し、次に、「1」を加えるの
と同じになる。この演算は、y0に対して、2の相補値
を生成する。従って、CTL1を肯定ないし表明するこ
とは、x0掛ける−y0の乗算となる。
レス・ツリー入力はさらにオーバーフロー検出論理13
0にも入力する。図3で述べたように、飽和値ジェネレ
ータ300は、セレクタ回路330の「a」入力に結合
する出力を生成する。検出論理130が、オーバーフロ
ーが起こると判断すると、セレクタ回路330は、その
「a」入力から飽和値を生成する。
もう一つの実施の態様を説明する。図6に示してあるも
のは、乗算装置100の1段目に設けられたさらに別の
論理である。乗算回路120−126に加えて、減算装
置601−608がある。減算装置601に対して、さ
らに詳細が示されている。減算装置601は、2個の8
ビット入力x0とy0を受け取る。このx0入力は全加算
器621と、8個の反転器から成る反転器バンク611
に入力する。反転器バンク611の出力は、第2の全加
算器641に入力する。y0入力は、全加算器641の
第2入力に結合し、さらに、8個の反転器631から成
るもう一つのバンクに結合する。反転器631の出力
は、全加算器621の第2の入力に結合する。両全加算
器の桁上入力は結合され、定数"1"となる。全加算器6
21の出力は、セレクタ回路651の「a」入力に結合
し、一方、同セレクタ回路の「b」入力は、全加算器6
41の出力を受け取る。
転し、桁上入力に"1"を供給することによる結合効果
は、y0に対する2の相補値の生成であり、−y0を生成
することになる。従って、全加算器621は、量(x0
−y0)を計算する。同様に、全加算器641に関して
は、x0を反転し、桁上入力に"1"を供給することによ
る結合効果は、x0に対する2の相補値の生成となる。
従って、全加算器621は、量(−x0+y0)を計算す
る。セレクタ回路の選択入力は、全加算器の桁上出力の
一つに結合し、もう一方の桁上出力は無視される。全加
算器の一つの適当な桁上出力を、セレクタ回路651の
セレクタに接続することによる効果として、減算装置6
01の出力に、(x0−y0)の絶対値が得られる。
示す。各装置は、8ビットグループから成る、セレクタ
回路110の出力x3/y3,x2/y2,x1/y1,x0
/y0に演算を施す。例えば、減算装置601は、8ビ
ット組のx0[7:0]とy0[7:0]に演算を施す。
減算装置602は、8ビット組のx0[15:8]とy0
[15:8]に演算を施し、以下、これに準ずる。
126の合計・桁上出力を受け取る。さらに、セレクタ
回路660は、減算装置の出力を受け取る。従って、セ
レクタ回路660の出力は、パイプライン・ラッチP2
にたいし、8個の合計・桁上ラインs3/c3,s2/
c2,s1/c1,s0/c0、または、減算回路601−
608の8個の出力のいずれかを提示する。減算装置の
出力は8ビット結果であることに注意すべきである。一
方、合計・桁上ラインは、それぞれ33ビットである。
従って、減算装置の8ビット結果は、パイプライン・ラ
ッチP2にラッチする前に、ゼロ延長し、33ビットに
適合させる。
ータの各種変換演算に関連する命令領域の改善にある。
本発明に基づいて設けられるシャッフル論理700を、
図7に示す回路で模式的に例示する。1対の汎用レジス
タが、レジスタ・ファイル102のアクセスを受け、6
4ビットsrc1とsrc2入力ラインに入力する。こ
の入力ラインは、ビットシフト回路ないしシフタ702
に結合する。後述するように、ビットシフタ702は、
src1のビットレベルシフトを実行する。さらに、ビ
ットシフタ702は、左・右シフトと、1から7ビット
位置のシフトを、上記の方向のいずれかに向けて実行す
る。ビットシフタ702は、左または右シフトを選ぶた
めの左・右制御入力752を含む。もう一つの制御入力
754は、シフト量を特定する3ビットシフト入力であ
る。このシフト量は、シフト入力754に入力するsr
c2に含まれる。
出力は、右または左の、0−7ビット位置のいずれかに
シフトした後のsrc1とsrc2を表す。この出力
は、マトリックス704に結合する。src2から得ら
れた制御入力756が、マトリックス704に入力す
る。マトリックス704は、128(2x64)個の入
力ビットラインの内から任意の64個を選び、それらを
任意の順序で、その64個の出力ビットラインに供給す
る。この64本の出力ビットラインは各々セレクタ回路
740の「a」入力に入力する。
符号ジェネレータ708に入力する。符号ジェネレータ
の、64本の出力ビットラインは、それぞれ、セレクタ
回路740の「b」入力に入力する。マスクジェネレー
タ710は、src2におけるシフト量を受け取る。こ
のマスクジェネレータは、セレクタ回路740を操作す
る出力を供給する。符号ジェネレータ708とマスクジ
ェネレータ710の意味については、命令セットと関連
して後述する。
2にラッチされる。このラッチ712はさらにビットシ
フタ702の出力も受け取る。このラッチは、ビットシ
フタ702と、マトリックス704とから転送されるデ
ータの到着を同期化するのに役立つ。セレクタ回路74
0の出力は、セレクタ回路724の「a」入力と、オー
バーフロー検出回路720の入力に結合する。ビットシ
フタ702の出力はさらに、オーバーフロー検出回路7
20にも入力する。飽和値発生回路722は、入力を検
出回路720に供給し、セレクタ回路724の「b」入
力に入力する。セレクタ回路724は、検出回路720
の出力に応じて、「a」入力か、「b」入力かのいずれ
かを生成する。
換操作用の、さらに別の論理800が示されているが、
これは、汎用レジスタファイル102から3個のソース
src1、src2およびsrc3をラッチするラッチ
870を含む。各src1とsrc2の64ビットライ
ンはそれぞれ、セレクタ回路801−863の、単一ビ
ット「a」および「b」入力に入力する。セレクタ回路
863は、このような2:1選択回路における、典型的
な設計例である。このセレクタ回路のセレクタ制御は、
arc2の64ビットラインによって供給される。この
セレクタ回路出力は結合して、64ビット出力880を
生成する。
は、前述の回路の動作を、命令セットとの関連で記述す
ることとする。命令によってサポートされる各種データ
フォーマットを表わすのに、下記の、通例の表記法を用
いることとする。ソース・レジスタはRmとRnで表わ
し、ディスティネーション・レジスタは、Rdで表わ
す。データサイズは64ビットで、データ順序法は、下
位のデータを、低い数字位置に置くこととする。
2,3 バイトレベル(8ビット)操作 Rx:Rxb7,Rxb6,Rxb5,Rxb4,Rxb3,Rx
b2,Rxb1,Rxb0,x=1,2,3 ワードレベル(16ビット)操作 Rx:Rxw3,Rxw2,Rxw1,Rxw0,x=1,2,3 長ワード(32ビット)操作 Rx:RxL1,RxL0,x=1,2,3 各命令は、下記のアッセンブリーレベル命令フォーマッ
ト、すなわち、 OP−CODE(6ビット):Rm(6ビット):OP
−EXT(4ビット):Rn(6ビット):Rd(6ビ
ット) を有している。OP−EXTフィールドは、機能は同じ
であるが、数値の異なる命令、例えば、MEXTR*の
ために用いる。各アッセンブリーレベル命令は、一連の
1と0から成る、対応するマシンレベル命令に翻訳ない
し変換される。このマシンレベル命令はデコードされ、
各種制御信号を生成し、これが、各種論理を動かして、
デコード命令の実行を実現する。
数)は、パックされた(ベクトル化)データを含む。2
個以上のNビットの、独立データ要素を、一つのオペラ
ンドに含めるというのが既知の常法である。各データ
は、サイズがNビットである。このデータの各々に対し
て施される演算は、同じ演算ではあるが、それぞれ独立
に実行される。MMUL.W これは、パックされた(ベクトル化)16ビット乗算命
令である。2個のオペランドRm、Rnがそれぞれ4個
の、独立の16ビットワードを含む。得られたRdは、
4個の16ビット値を含む。 Rm:Rmw3,Rmw2,Rmw1,Rmw0 Rn:Rnw3,Rnw2,Rnw1,Rnw0 Rd:Rmw3 x Rnw3,Rmw2 x Rnw2,Rmw1
x Rnw1,Rmw0 x Rnw0 この16ビットx16ビット乗算は、32ビット量とな
る。従って、この命令の目的のために、各乗算結果を、
モジュロ代数を用いて16ビットに低位変換する。
によって、適当な制御信号が生成され(図示せず)、こ
れがRmの内容をsrc1データラインに、Rnの内容
をsrc2データラインに出力させる。これらのデータ
は、パイプライン・ラッチP1にラッチされ、クロック
同期して、セレクタ回路110に入力される。セレクタ
回路110は、xラインとyラインに下記の出力を供給
するように制御されている。すなわち、 x3−src1[63-48](Rmw3),x2-src1[47-32](Rmw2),x1−sr
c1[31-16](Rmw1),x0−src1[15-0](Rmw0) y3−src2[63-48](Rnw3),y2−src2[47-32](Rnw2),y1−sr
c2[31-16](Rnw1),y0−src2[15-0](Rnw0) xおよびyラインは、それぞれの乗算回路120−12
6に入力する。合計・桁上出力s3/c3,s2/c2,s
1/c1,s0/c0が、乗算器120−126の出力に生
成され、ラッチされてP2に入る。
オペランドRmとRnの、それぞれの16x16の積
(例えば、Rmw0 x Rnw0)を含む。MMUL.W命
令の目的のためには、回路152を通過する経路のみが
関わりがある。ただし、2段目の合計・桁上対は、変換
回路152、154および156に入力する。各合計・
桁上ライン対の上位17ビットがマスク消去され、下位
16ビットがそのまま残る。ただし、この合計・桁上対
が33ビットラインであることは記憶される。このマス
ク消去ステップを、モジュロ代数による、32ビット結
果の、16ビット量への低位変換と言う。さらに、回路
152は、4対の16ビット結果を、64ビットの合計
・桁上ライン153にパックする。
レクタ回路116を介して、圧縮回路160に入力す
る。セレクタ回路112は操作されて、「0」定数値
(入力「c」)を生成し、「0」を圧縮回路160に入
力する。圧縮回路160に「0」を入力することは、そ
の入力117を直接出力161に通過させる作用を持
つ。従って、この圧縮回路は効果的にバイパスされるこ
とになり、通過装置のように振る舞い、その入力117
を、圧縮することなく直接P3に入力させる。
らの出力163は、加算回路170に入力する。セレク
タ回路420−424は、それぞれの「b」入力を、セ
レクタ回路の出力に生成するように制御される。従っ
て、定数値「0」、各全加算器400−403の桁上入
力に導入される。これによって、全加算器は、4個の独
立した全加算器として構成されることになり、その入力
に対して、4個の独立した加算操作を実行する。さら
に、この4個の独立の加算操作は、同時に実行される。
なぜなら、各回路は、自足した全加算器だからである。
これこそ、MMUL.W命令にとってまさに所望の作用
である。4個のパックされたワードは独立数値であるの
だから、その結果は、4個の独立積項でなければならな
い。さらに、4個の独立加算操作は、各回路が自足した
全加算器なので、同時に実行される。MMUL.Wの場
合、図1の検出論理回路180と186は使用されな
い。従って、セレクタ回路118と119は、MMU
L.Wのデコードによって生成された制御信号に応じて
それぞれの「b」入力を生成し、64ビットの結果を形
成する。MMULFX.W MULFXRP.W これらは、パックされた(ベクトル化)16ビット固定
小数点乗算命令である。2個のオペランドRm、Rnは
各々4個の独立した16ビットワードを含む。結果Rd
は、4個の、16ビット数値を含む。MMULFXR
P.Wは、丸め操作ないし四捨五入を含む。 Rm:Rmw3,Rmw2,Rmw1,Rmw0 Rn:Rnw3,Rnw2,Rnw1,Rnw0 Rd:Rmw3 x Rnw3,Rmw2 x Rnw2,Rmw1
x Rmw1,Rmw0 x Rnw0 これらの命令は、MMUL.Wに関して前述したのと同
様にして処理されるが、ただし、MMULFX.WとM
MULFXRP.Wのオペランドの固定小数点フォーマ
ットのせいで下記の違いが見られる。
ト量をもたらすので、固定小数点乗算の結果は、飽和化
を含む16ビットに低位変換される。この低位変換は、
32ビット結果の内、もっとも重要な16ビットのみを
保持することを含む。飽和化は、既知のステップであ
る。ある代数演算の結果が、あるデータタイプの保持し
得る量よりもさらに大きなビットを要求する場合、結果
は、そのデータタイプで表現し得る最大、または、最小
数にクランプされる。例えば、結果が、16ビットの符
号化整数に適合しなければならないのに、結果が20ビ
ット数である場合、結果の飽和化によって、結果の符号
に依存して、215−1(16ビット符号化整数の最大
値)、または、−2-15という数値(16ビット符号化
整数の最小値)が得られる。16ビット固定小数点数値
の場合、範囲は、−1から(1−2-1 5)までとなる。
ーバーフロー検出は、1段目の乗算回路120−126
によって実行される。図3に関連して説明したように、
検出論理130は、その入力が両方とも−1である時点
を判断する。それが起こると、セレクタ回路330はそ
の「a」入力を生成する。飽和化ジェネレータは、MM
ULFX.WおよびMMULFXRP.Wのために(1
−2-15)を出力するので、合計・桁上ラインs0およ
びc0はそれぞれ「0」および(1−2-15)、また
は、その逆に設定される。これと同じことが、他の合計
・桁上ラインs3/c3,s2/c2およびs1/c1におい
ても起こる。このようにして、各積項について、オーバ
ーフロー状態が検出され、処理される。
1/c1およびs0/c0ラインは、変換回路153によっ
て64ビットラインにパックされる。MMULFX.W
とMMULFXRP.W命令の目的にとっては、回路1
52を通過する経路のみが関わりがある。もっとも2段
目の合計・桁上対は、変換回路152、154および1
56にも入力するのではある。次に、ライン153は、
セレクタ回路114と116を介して圧縮回路160に
結合する。MMULFX.Wに関しては、回路112
が、定数「0」を圧縮回路に入力する。従って、MMU
LFX.W命令に関しては入力の圧縮はない。固定小数
点演算の場合、結果は、1だけ左にシフトする。これ
は、結果の固定小数点表示を維持するためである。圧縮
回路の出力はP3にラッチされる。
捨五入は、2段目で行われる。セレクタ回路112は、
「0.5」定数を生成する。この命令は16ビットデー
タの上で作動するのであるから、セレクタ112は、
「0.5」の4個のコピーを固定小数点フォーマットで
生成し、それらを64ビット出力113にパックする。
各定数は、圧縮回路160において、回路152由来の
対応する合計・桁上ラインs3/c3,s2/c2,s1/
c1およびs0/c0と結合させられる。これによって、
MMULFXRP.Wにおける丸めないし四捨五入操作
が実行される。処理はさらに進んで3段目に移る。
力163は、加算回路170に入力する。セレクタ回路
420−424は、それぞれの「b」入力を、セレクタ
回路の出力に生成するように制御される。従って、定数
値「0」は、各全加算器400−403の桁上入力に導
入される。これによって、全加算器は、4個の独立した
全加算器として構成されることになり、各々が、その入
力に対して、他の入力と独立して加算操作を実行する。
これこそ、MMULFX.WおよびMMULFXRP.
W命令にとってまさに所望の作用である。4個のパック
されたワードは独立数値であるのだから、その結果は、
4個の独立積項でなければならない。MMUL.L これは、パックされた(ベクトル化)32ビット乗算命
令である。2個のオペランドRm、Rnは各々2個の独
立した32ビットワードを含む。結果Rdは、2個の、
32ビット数値を含む。 Rm:RmL1,RmL0 Rn:RnL1,RnL0 Rd:RmL1 x RnL1,RmL0 x RnL0 この32ビットx32ビット乗算は、64ビット量とな
る。従って、この命令の目的のために、各乗算結果を、
モジュロ代数を用いて32ビットに低位変換する。
2ビットオペランドを、2個の16ビット要素に分割し
て実行される。次に、乗算を、独立した16ビット演算
として実行し、中間結果を結合して64ビット結果を生
成することが可能である。これは、図1の既存の16ビ
ット乗算器120−126を再使用して、32ビット乗
算を実行することを可能にする。
つ: Ah x 216 + A1 ここにAhは、Aの最上数、A[31:16]であり、
A1は、Aの低位数、A[15:0]である。
る: (Ah x 216 +A1) x (Bh x 216 + B1) …式1 =Ah x 216xBhx216+Ahx216xB1+Bhx216xA1+A1xB1…式2 =Ah x Bh x 232 +(Ah x B1 + Bh x A1) x 216 + A1 x B1 …式3 代数学から援用すれば、前式は、2個の2項式の積の多
項的展開と見なすことができる。第1の2項式は(Ah
x216+A1)であり、第2の2項式は(Bhx216+B
1)である。多項式展開は、式3で表わされる。
デコードによって、適当な制御信号が生成され(図示せ
ず)、これがRmの内容をsrc1データラインに、R
nの内容をsrc2データラインに出力させる。これら
のデータは、パイプライン・ラッチP1にラッチされ、
クロック同期して、命令実行の第1サイクルにおいて、
セレクタ回路110に入力される。MMUL.Lに対応
する制御信号がセレクタ回路110を操作して、下記の
ようにxラインとyラインにsrc1とsrc2データ
ラインをマップさせる。すなわち、32ビットマッピング 32ビットマッピング(交互) レジスタ内容(交互) src1[31:16] ⇒x3 Rmh0 src1[31:16] ⇒x2 src1[15:0] ⇒x2 Rmh0(Rm10) src1[15:0] ⇒x1 src1[31:16] ⇒x1 Rm10(Rmh0) src1[15:0] ⇒x0 Rm10 src2[31:16] ⇒y3 Rnh0 src2[15:0] ⇒y2 src2[31:16] ⇒y2 Rn10(Rnh0) src2[31:16] ⇒y1 src2[15:0] ⇒y1 Rnh0(Rn10) src2[15:0] ⇒y0 Rn10 「交互」マッピングは、式3の項(AhxB1+Bhx
A1)における加算の交換性を認めたものである。
は、src1およびsrc2各々の低位長ワードのみが
選択され、1段目の乗算回路に供給されることに注意さ
れたい。低位の長ワード照合は、レジスタ名の中の
「0」下付き表示によって示される(例えば、R
mh0)。パイプライン実行の第2サイクルにおいて、こ
の間に第1サイクルで得られた合計・桁上出力が2段目
に進むのであるが、src1とsrc2の高位の長ワー
ドが選択され、乗算回路120−126に供給される。
従って、MMUL.L命令は、実行するのに余分の1サ
イクルを要求する。第2サイクルにおいては、下記のデ
ータ選択が1段目で行われる。すなわち、32ビットマッピング 32ビットマッピング(交互) レジスタ内容(交互) src1[63:48] ⇒x3 Rmh1 src1[63:48] ⇒x2 src1[47:32] ⇒x2 Rmh1(Rm11) src1[47:32] ⇒x1 src1[63:48] ⇒x1 Rm11(Rmh1) src1[47:32] ⇒x0 Rm11 src2[63:48] ⇒y3 Rmh1 src2[47:32] ⇒y2 src2[63:48] ⇒y2 Rn11(Rnh1) src2[63:48] ⇒y1 src2[47:32] ⇒y1 Rnh1(Rn11) src2[47:32] ⇒y0 Rn11 さらに続けてxラインとyラインは、それぞれの乗算回
路120−126に入力する。合計・桁上出力s3/
c3,s2/c2,s1/c1,s0/c0が、図3に関連し
て説明したのと同様のやり方によって生成される。
ッチされ入る。2段目に入った合計・桁上ラインは、下
記の積項を表わす。すなわち、 s3/c3=Ah x Bh,s2/c2=Ah x B1,s1/
c1=Bh x A1,s0/c0=A1 x B1 しかしながら、式3は、上記項の内のいくつかは、2の
乗数による掛け算となることを要求する。これは、変換
回路156によって実行される。MMUL.L命令の目
的のためには、回路156を通過する経路のみが関係あ
るだけである。もっとも2段目において合計・桁上対
は、変換回路152、154および156にも入力する
のである。
c3,s2/c2,s1/c1,s0/c0は、それぞれ、6
4ビット出力合計・桁上対sx3/cx3,sx2/c
x2,sx 1/cx1,sx0/cx0に下記のようにマッ
プされる。 S3[31:0],c3[31:0] ⇒ sx3[63:48],cx3[63:48](x232) S2[31:0],c2[31:0] ⇒ sx2[47:16],cx2[47:16](x216) S1[31:0],c1[31:0] ⇒ sx1[47:16],cx1[47:16](x216) S0[31:0],c0[31:0] ⇒ sx0[31:0],cx0[31:0] sx3/cx3、sx2/cx2、および、sx1/cx1を
高位位置へシフトさせることは、2の乗数による乗算を
実現することになる。sx3/cx3は32ビットシフト
されているので、Ah x Bhは、232で乗算したことに
なる。sx2/cx2およびsx1/cx1についても同様
であるが、ただし乗数は216である。
sx2/cx2、sx1/cx1およびsx0/cx0は、式
3の中間積項を表わす。8本のラインが8:2圧縮回路
140に入力して1対の桁上・合計ライン141を生成
する。ライン141は、セレクタ回路116を介して
3:2圧縮回路160に入力する。セレクタ回路112
は、圧縮回路160に「0」定数を与え、この装置を実
質的に通過装置とする。従って、MMUL.Lのような
32ビット倍数の場合、圧縮回路160は実効的にバイ
パスされる。出力141は、圧縮なしにP3にラッチさ
れ、第3サイクルの間に3段目にクロックされる。
合計・桁上ライン163によって表わされる中間積項
は、加算回路170に入力される。図4を参照すると、
加算回路170において、その構成セレクタ回路420
−424は、MMUL.L命令デコードに応じて生成さ
れる制御信号によって、「a」入力を生成するよう制御
される。これによって、各全加算器400−402の桁
上出力は、後続の加算器に転送される。このため、加算
器170は、単一の、4段桁上転送加算器として構成さ
れる。このようにして、入力合計・桁上ライン163の
単一64ビット加算が実行される。これに対して、MM
UL.WおよびMMULFX.W命令のデコードに応じ
て構成された加算器170では、4個の独立な16ビッ
ト加算が実行される。32ビット乗算に使用した場合、
加算器170にこのように構成可変性があるために、様
々な大きさのデータフォーマットに対して、各データサ
イズに合わせたロジックの設計・組み込みを要すること
なく、回路の再使用が可能となる。
計(すなわち、sum[31:0])の下位32ビット
が、加算回路170の出力に生成される。上位32ビッ
トのマスク消去によって、64ビット合計のモジュロ低
位変換が行われ、32ビット量が得られる。
に、同様に処理されるが、1サイクル遅れることを想起
されたい。第4サイクルで処理が3段目に達した時、6
4ビット結果(Rml x Rnl)が、加算回路170に
よって生成される。この合計は、32ビット結果に低位
変換され、第3サイクルの32ビット結果(Rm0 xR
n0)と結合され、64ビット結果にパックされる。MMULFX.L この命令は、パックされた32ビット固定小数点乗算命
令である。2個のオペランドRm、Rnは各々2個の独
立した32ビットワードを含む。結果Rdは、2個の、
32ビット数値を含む。 Rm:RmL1,RmL0 Rn:RnL1,RnL0 Rd:RmL1 x RnL1,RmL0 x RnL0 これらの命令は、MMUL.Lに関して前述したのと同
様にして処理されるが、ただし、オペランドの固定小数
点フォーマットのせいで下記の違いが見られる。
ト量をもたらすので、各乗算の結果は、飽和化を含む3
2ビットに低位変換される。この低位変換は、64ビッ
ト結果の内、もっとも重要な32ビットのみを保持する
ことを含む。
算は、式3当り16ビット倍数に還元される。従って、
オーバーフロー検出は、1段目の乗算回路120−12
6における各16ビット演算毎に必要になる。従って、
図3に関して言うと、検出論理130は、その入力が両
方とも−1である時点を決定する。それが起こると、セ
レクタ回路330はその「a」入力を生成する。飽和化
ジェネレータは、MMULFX.Lのために(1−2
-32)を出力するので、合計・桁上ラインc0およびs
0はそれぞれ「0」および(1−2-32)、または、そ
の逆に設定される。これと同じことが、他の合計・桁上
ラインs1/c1,s2/c2,s3/c3においても起こ
る。このようにして、式3に示した中間積項について、
オーバーフロー状態が検出される。次に、処理は3段目
に進む。
回路180と186が、またしても、飽和化が必要かど
うかを決定する。これは、4個の中間積項が、合計され
た場合、オーバーフローする可能性があるからである。
飽和数値ジェネレータ182は、MMULFX.L用に
1−2-32を生成するように制御される。論理180と
186の判断によって、飽和化が必要とされた場合、セ
レクタ回路118と119は、「a」入力を生成し、加
算器170の出力ではなく、飽和値を出力する。MMULLO.WL MMULHI.WL これらは、16ビット、全幅乗算命令である。各命令
は、オペランドRm、Rnの低位の(「LO」)2ワー
ド、または、高位の(「HI」)2ワードのいずれかで
作動する。結果オペランドRdは、2個の32ビット積
項を含む。これらの演算は、乗算で得られた完全32ビ
ット結果を格納する。 Rm:Rmw3,Rmw2,Rmw1,Rmw0 Rn:Rnw3,Rnw2,Rnw1,Rnw0 Rd:Rmw1 x Rnw1,Rmw0 x Rnw0(MMUL
LO.WL) Rd:Rmw3 x Rnw3,Rmw2 x Rnw2(MMUL
HI.WL) 図1に関して言うと、これらの命令のデコードによっ
て、適当な制御信号が生成され(図示せず)、これがR
mの内容をsrc1データラインに、Rnの内容をsr
c2データラインに出力させる。これらのデータは、パ
イプライン・ラッチP1にラッチされ、また、セレクタ
回路110にクロックされる。セレクタ回路110は、
xラインとyラインの下記の出力を供給するように制御
されている。すなわち、 x3=src1[63-48](Rmw3),x2=src1[47-32](Rmw2)x1=src1[3
1-16](Rmw1),x0=src1[15-0](Rmw0) y3=src2[63-48](Rnw3),y2=src2[47-32](Rnw2),y1=src2
[31-16](Rnw1),y0=src2[15-0](Rnw0) xおよびyラインは、それぞれの乗算回路120−12
6に入力する。合計・桁上出力s3/c3,s2/c2,s
1/c1,s0/c0が、乗算器120−126の出力に生
成され、P2にラッチされる。MMULLO.WLおよ
びMMULHI.WL命令の目的のためには、回路15
4を通過する経路のみが関わりがある。ただし、2段目
の合計・桁上対は、変換回路152、154および15
6に入力する。
MMULHI.WLのデコードに応じて生成される制御
信号によって活性化される。MMULLO.WLに関し
ては、変換回路154は、s1/c1およびs0/c0の合
計/桁上対のみが選択され、64ビット出力ライン155
にパックされるように操作される。s1/c1ライン対は
Rmw1×Rnw1の積を表し、s0/c0のライン対はRm
w0×Rnw0の積を表す。MMULHI.WLに関して
は、変換回路154は、s3/c3とs2/c2合計・桁上
ラインのみが選択され、64ビット出力ライン155に
パックされるように操作される。このs3/c3ライン対
は、Rmw3 x Rnw3の積を表わし、ラインs2/c
2は、Rmw2 x Rnw2の積を表わす。セレクタ回路1
14と116は協働して出力155を圧縮回路160に
入力させる。セレクタ回路112は、定数「0」を圧縮
回路160に入力する。前述したように、これは、圧縮
回路160をバイパスし、出力155をラッチして、圧
縮なしで直接P3に入力させる。
加算回路170に入力する。図4を参照すると、加算回
路170は、MMULO.WLおよびMMULHI.W
L命令のデコードに応じて生成される制御信号によって
制御される4段桁上転送加算器として構成される。従っ
て、セレクタ回路420−424は「a」入力を生成す
る。これにより、各々の全加算器400−402の桁上
出力は後続の加算器に転送される。ここで、直列結合す
る必要のあるのは、全加算器の内二つだけであることに
注意されたい。なぜなら、2段目で得られる積は32ビ
ット量だからである。入力合計・桁上ライン163は結
合して、最終結果を生成する。MMULHI.WLに関
しては、得られた32ビット合計は、加算器170の出
力の上位32ビットに置かれ、一方、MMULLO.W
Lについては、32ビット合計は、加算器の出力の下位
32ビットに置かれる。MMACFX.WL MMACNFX.WL これらは、パックされた、固定小数点、16ビット、全
幅乗算命令で、累算器(Rd)と結合したものである。
この命令は、オペランドRm、Rnの下位2ワードのみ
に対して実行される。積は、(MMACFX.WL)と
加算するか、または、(MMACNFX.WL)、すな
わち、第3のオペランドRdから引算される。最終結果
は、Rdに行く(ここでは、Rd'と表わす)。 Rm:Rmw1,Rmw0 Rn:Rnw1,Rnw0 Rd:RdL1,RdL0 (入力Rd) Rd':RdL1+Rmw1 x Rnw1,RdL0+Rmw0 x
Rnw0(MMACFX.WL) Rd':RdL1−Rmw1 x Rnw1,RdL0−Rmw0 x
Rnw0(MMACNFX.WL) これらの命令は、MMULLO.WLと同様のやり方で
実行されるが、以下の相違点がある。すなわち、1段目
で、オーバーフロー検出と飽和化が、MMULFX.W
命令の場合と同様にして実行される。1段目からの出力
は、2段目の変換回路152、154および156に入
力する。しかしながら、MMACFX.WLおよびMM
ACNFX.WL命令の場合、回路154が関わる。回
路154は、s1/c1とs0/c0合計・桁上ラインを選
択し、これを64ビット出力ライン155にパックす
る。この出力は、セレクタ回路114、116を介して
圧縮回路160に結合する。入力ライン117は、積R
mw1 x Rnw1を表わすs1/c1と、積Rmw0 x Rn
w0を表わすs0/c0とを含む。
ある「a」入力を生成する。MMACFX.WLとMM
ACNFX.WL命令に合致する制御信号は、オペラン
ドRdによって特定されるレジスタ・ファイル102の
汎用レジスタとデータ交換を実行する。セレクタ回路1
12の出力は、圧縮回路160に入力する。圧縮回路1
60は、s1/c1をRdの上半分に、s0/c0をRdの
下半分に加える。この結果は、P3ラッチを介して3段
目に進む。Rdの各半分は固定小数点数であるから、R
mとRnの乗算結果は、それぞれの固定小数点を、累算
器のそれと揃えるには、1だけ左にシフトさせなければ
ならないことに注意されたい。
63は加算器170に入力する。セレクタ回路420と
424は、それぞれ「a」入力を、一方、セレクタ回路
422は「b」入力を生成するように制御される。これ
によって、加算器400と401は、加算器402と4
03からアイソレートされ、二つの、独立した直列連鎖
すなわちカスケード型加算器を生み出す。従って、全加
算器400と401は直列結合して、32ビット合計、
すなわち、RdL0+Rmw0 x Rnw0を生成し、全加
算器402と403は直列結合して、また別の32ビッ
ト合計、すなわち、RdL1+Rmw1 x Rnw1を生成す
る。この独立加算は共に同時に行われる。さらに、論理
回路180と186によるオーバーフロー検出も実行さ
れ、もしもオーバーフローが予測されたならば、飽和化
ジェネレータ182から(1−2 -15)を出力する。
的に図示した、乗算装置120−126における付加回
路が、命令のデコードに応じて生成された制御信号CT
L1によって活性化される。CTL1の肯定ないし表明
は、x0掛けるy0の乗算を引き起こすことを想起され
たい。これが、MMACNFX.WLの所期の結果であ
る。Rdと−(x0 x y0)を加えれば、Rdから差し
引くという所期の結果が得られる。MSHLL(R)D.W(L) MSHARD.W(L) MSHALDS.W(L) これらは、パックされた16ビット(32ビット)デー
タの左(右)シフトである。第1のオペランドRmは、
4(2)個の、独立した16ビット(32ビット)値を
含む。各々、Rnに特定されるのと同じ量だけシフトさ
れる。結果はRdの中に置かれる。 Rm:Rmw3,Rmw2,Rmw1,Rmw0 (16ビット) Rm:RmL1,RmL0 (32ビット) Rn:n (シフト量) Rd:Rmw3<<n,Rmw2<<n,Rmw1<<n, Rmw0<<n (左シフト、16ビット) Rd:Rmw3>>n,Rmw2>>n,Rmw1>>n,Rmw0>>n (右シフト、16ビット) Rd:RmL1<<n,RmL0<<n (左シフト、32ビット) Rd:RmL1>>n,RmL0>>n (右シフト、32ビット) 論理シフトMSHLL(R)D.W(L)は、飽和化を
含まない。同様に、代数的右シフトMSHARD.W
(L)の場合も、飽和化の問題はない。右シフトは、2
による除算操作であり、従って、最終結果は必ず開始値
よりも小さくなる。しかしながら、右シフトには符号延
長を設けなければならない。代数的左シフトMSHAL
DS.W(L)の場合、必要でれば、飽和化を実行す
る。
SHLLD.W、MMSHLRD.W、MMSHLL
D.L、または、MMSHLRD.Lの内のいずれかを
デコードすると、ビットシフタ702とマトリックス7
04を作動する制御信号を生成する。シフト量は、sr
c2の最下位バイトに含まれる。src2の、3個の最
下位ビット(src22,src21,src20)は、
シフト量入力754を供給する。すぐわかるように、最
下位の3ビットは、シフト量モジュロ8である。命令に
従って、適当な上行/下行制御信号が生成され、制御7
52に供給される。従って、ビットシフタ702は、量
入力754によって特定される量(0−7桁)だけ、s
rc1入力のビットレベルの左、または、右シフトを実
行する。ビットシフタ702の出力はマトリックス70
4に入力する。src2バイトにおける次の3ビット
(src25,src24,src23)は、マトリック
ス704の制御入力756に入力する。この制御入力
は、その入力に対して実行すべき8ビット(バイトレベ
ル)シフトの数を特定する。
バイトレベルシフトが続くという2相配置によって、1
6ビットシフトと、32ビットシフトの両方を受け入れ
ることが可能となる。例えば、21ビット位置のシフト
を考えてみる。入力src2は、0101012を含
み、これは、10を底とする21である。従って、ビッ
トシフタ702は、1012ビット位置をシフトする、
すなわち、5のシフトを実行する。マトリックス704
がさらに追加の0102バイトレベルのシフト、すなわ
ち、合計21ビット位置のシフトについて、16ビット
位置のシフトを実行する。マトリックス704の出力
は、セレクタ回路740の「a」入力に入力する。セレ
クタ回路740の「b」入力は、符号ジェネレータ70
8からの出力を受け取る。これらのセレクタは、マスク
ジェネレータ710からの出力によって制御される。
ジェネレータ710の機能を論じるために、図7と図9
を参照する。図9の24ビットレジスタを考える。この
レジスタは、3個の8ビット要素に分割される。以後の
議論は、命令MMSHLLD.W、MMSHLRD.
W、MMSHLLD.L、および、MMSHLRD.L
の16ビット、および32ビットデータフォーマットに
も適用される。ステップ(1)において、3個の初期値
は、B2=10111001,B1=0001110
0,B0=11010101である。3ビット右シフト
を所望すると仮定しよう。レジスタを単純に3ビットシ
フトさせた場合、ステップ(2)に示した内容が得られ
るであろう。B2は正しくは10111を含むが、B1
は00100011を含み、B0は10011010を
含む。B1とB0は適正でない。なぜなら、レジスタを
単純にシフトさせただけでは、要素B2、B1およびB
0の独立的側面を考慮していないからである。その結
果、バイトB1およびB0は、隣接バイトから「あふれ
出た」ビットを受け取ることになる。
0が、(3)に示すマスクパターンを生成し、これが、
セレクタ回路740を制御する。さらに、本発明によれ
ば、符号ジェネレータ708が、その64ビットライン
にゼロを出力し、すなわち、セレクタ回路740の各
「b」入力にゼロを入力する。従って、マスクパターン
において「1」が生じると、セレクタ回路は、「0」の
「b」入力を生成する。マスクパターンにおいて「0」
が生じると、セレクタ回路は、シフトレジスタ内容であ
る、「a」入力を生成する。セレクタ回路740の出力
におけるビットパターン(例えば、図9のステップ4に
図示)は、与えられたデータフォーマット、すなわち、
16ビット、32ビット等々における適正にシフトされ
た要素を表わす。マスクジェネレータ710と符号ジェ
ネレータ708とは協働して、隣接要素からの「あふれ
出し」ビットを効果的にマスク消去する。
D.W、MMSHLLD.LおよびMMSHLRD.L
に関して言えば、符号ジェネレータは常に全部「0」を
出力する。このために、符号ジェネレータは、「交互数
値」ジェネレータと書くほうがより適正である。なぜな
ら、論理シフト命令には「符号」の概念がないからであ
る。マスクジェネレータ710は、これらの命令に対応
する制御信号に応じて適正パターンサイズ(例えば、1
6ビット、32ビット)を生成する。パターンそのもの
は、マスクジェネレータに入力するsrc2バイトに含
まれるシフト量に基づいて創成される。図9の(3)に
見られるように、右シフトのパターンは、src2のシ
フト量で特定される数だけ続く「0」の連なりを持ち、
さらに、左は、「1」の連続連鎖によって塞がれ、適当
なデータサイズのパターンを完成させる。図9を参照す
ると、バイトB2のマスクパターンは、5個の連続
「0」(シフト量)の連なりと、3個の「1」の連なり
とを示す。すぐに推定できるように、左シフトのパター
ンは、シフト量で特定される数だけの「0」を持つが、
右は、与えられたデータサイズのパターンを完成させる
のに十分なだけの数の「1」で塞がれる。
WとMSHARD.Lに関連して、図7と図10を参照
してみる。再び、3個の8ビット要素として組織される
24ビットレジスタを考えてみる。ステップ(1)で、
3個の初期値は、B2=10111001,B1=00
011100,B0=11010101である。3ビッ
トの代数的右シフトが所望のものであると仮定する。前
と同様、レジスタの全内容を単純に3個位置シフトさせ
るだけでは、ステップ(2)において示すように、不適
正な結果を生成することになる。なぜなら、隣接バイト
から「あふれ出る」ビットがあるからである。さらに、
バイトB2とB0は負数であり、これは、右シフトの場
合、符号延長を必要とする。図10は、(2)では、B
2とB0が正数であることを示す。
しては、マスクジェネレータ710は、図9で前述した
のと同様のやり方で作動し、同じビットパターンを出力
する。図10に見られるように、符号ジェネレータ出力
(4)は、B2とB0の各々に対応して、8個の「1」
から成るパターンと、B1に対応した「0」から成るパ
ターンとなる。すぐわかるように、この符号パターン
を、セレクタ740の「b」入力に入力し、かつ、各セ
レクタをマスクパターンに従って作動させることによっ
て、B2、B1およびB0について適正にシフトした出
力が得られるばかりでなく、適正な符号延長も得られ
る。
rc147、src131、およびsrc115が、符号ジェ
ネレータ708に入力する。これらは、16ビットデー
タフォーマット用の符号ビットである。32ビットデー
タフォーマットでは、符号ビットは、src163とsr
c131である。符号ジェネレータは、これらの符号ビッ
トに応じて、「1」または「0」の信号から成るパター
ンを出力する。パターンの長さは、デコードしたMSH
ARD.W(16ビット)、または、MSHARD.L
(32ビット)命令に対応する制御信号によって定めら
れる。
に関連して図7を参照すると、オーバーフロー検出器7
20は、マトリックス704の出力から、得られた左シ
フト演算がオーバーフローを生成したか否かを判断す
る。飽和値ジェネレータ722は、データサイズに応じ
て、検出器720で使用される上限、216−1(16ビ
ット)、または、232−1(32ビット)を特定する。
オーバーフローが予測されたならば、飽和値が、セレク
タ回路730によって生成される。MSHARDS.O これは、符号付、64ビットソースRmに実行される代
数的右シフト命令である。シフト量はRnに特定され
る。結果は、低位変換されて、飽和化された、符号付、
16ビット値となり、次にRdに置かれる。この命令
は、前述の論理シフト、および、代数シフトと実質的に
同様なやり方で実行される。符合ジェネレータ708
は、全て「0」、または、全て「1」から成る64ビッ
トパターンに対する単一符号パターンとして、src1
63を用いる。マスクジェネレータ710は、他のシフ
ト命令と関連して前述したように作動する。オーバーフ
ロー検出は、検出器720により216−1のオーバーフ
ロー値と比較することによって実行される。MCNVS.WB MCNVS.WUB これらは、各オペランドRm、Rn中の、4個の符号付
16ビットデータを、8ビット値に変換する、低位変換
命令である。低位変換されたデータは、Rm'とRn'で
表わされる。8個の、8ビット結果は、符号付の(MC
NVS.WB)か、符合無しの(MCNVS.WUB)
のいずれかで、Rdに置かれる。8ビット結果に対する
飽和化は、必要に応じて実行される。 Rm:Rmw3,Rmw2,Rmw1,Rmw0 Rn:Rnw3,Rnw2,Rnw1,Rnw0 Rd:Rn'w3,Rn'w2,Rn'w1,Rn'w0,R
m'w3,Rm'w2,Rm'w1,Rm'w0 図7を参照すると、src1とsrc2は、低位変換の
対象となるオペランドである。ビットシフタ702は、
この命令の実行には関与せず、src1とsrc2をそ
のままマトリックス704に通過させる。一方、マトリ
ックス704は、低位変換を実行するのに必要なマッピ
ングを行う。いずれかの命令に付属する制御信号に応じ
て、マトリックス704は、src1、src2のそれ
ぞれにおける4個の16ビットグループの各々から下位
8ビットを、その出力に生成する。この8ビットは、マ
トリックスの64ビット出力にパックされる。8個の8
ビットフィールドの各々に対して、オーバーフロー検出
が実行され、飽和化が実施される。MCNVS.LW これは、オペランドRmとRnの各々における2個の3
2ビットデータを16ビットデータ値に変換する低位変
換命令である。低位変換されたデータは、Rm'とRn'
によって表わす。4個の符号付、16ビット結果は、R
dに置かれる。16ビット結果に対する飽和化は、必要
に応じて実施される。 Rm:RmL1,RmL0 Rn:RnL1,RnL0 Rd:Rn'L1,Rn'L0,Rm'L1,Rm'L0 この命令は、MCNVS.WBとMCNVS.WUBに
関して前述したのとほとんど同様のやり方で実行され
る。ただし、32ビットのパックされたソースであるs
rc1とsrc2に対して実行され、16ビット結果を
生成する。MSHFHI.B MSHFLO.B これらの命令は、オペランドRmとRnの上半分(H
I)、または、下半分(LO)の8ビットデータをシャ
ッフル(インターリーブ=互い違いに挿入する)し、そ
の結果をRdに置く。 Rm:Rmb7,Rmb6,Rmb5,Rmb4,Rmb3,Rm
b2,Rmb1,Rmb0 Rn:Rnb7,Rnb6,Rnb5,Rnb4,Rnb3,Rn
b2,Rnb1,Rnb0 Rd:Rnb7,Rmb7,Rnb6,Rmb6,Rnb5,Rm
b5,Rnb4,Rmb4 (MSHFHI.B) Rd:Rnb3,Rmb3,Rnb2,Rmb2,Rnb1,Rm
b1,Rnb0,Rmb0 (MSHFLO.B) 図7を参照すると、src1とsrc2は、低位変換の
オペランドである。ビットシフタ702は、これらの命
令の実行には関与せず、src1とsrc2をそのまま
マトリックス704に通過させる。一方、マトリックス
704は、インターリーブ実行に必要なマッピングを行
う。いずれかの命令に伴う制御信号に応じて、マトリッ
クスは、その出力において、各src1とsrc2の下
半分(MSHFLO.B)、または、上半分(MSHF
HI.B)の各々における4バイトをインターリーブす
る。次に、マトリックス704の出力は通過して出力7
30となる。MSHFHI.W MSHFLO.W これらの命令は、オペランドRmとRnの上半分(H
I)、または、下半分(LO)の16ビットデータをシ
ャッフル(インターリーブ)し、その結果をRdに置
く。 Rm:Rmw3,Rmw2,Rmw1,Rmw0 Rn:Rnw3,Rnw2,Rnw1,Rnw0 Rd:Rnw3,Rnw3,Rmw2,Rnw2 (MSHFH
I.W) Rd:Rnw1,Rmw1,Rnw0,Rmw0 (MSHFL
O.W) これらの命令は、MSHFHI(LO).Bに関して前
述したのとほとんど同様のやり方で実行される。ただ
し、src1とsrc2の各々の、上(下)半分の各々
における16ビットワードに対して実行される。MSHFHI.L MSHFLO.L これらの命令は、オペランドRmとRnの上半分(H
I)、または、下半分(LO)の32ビットデータをシ
ャッフル(インターリーブ)し、その結果をRdに置
く。 Rm:RmL1,RmL0 Rn:RnL1,RnL0 Rd:RnL1,RmL1 (MSHFHI.L) Rd:RnL0,RmL0 (MSHFLO.L) これらの命令は、MSHFHI(LO).BおよびMS
HFHI(LO).Wに関して前述したのとほとんど同
様のやり方で実行される。ただし、src1とsrc2
の各々の、上(下)半分の各々における32ビット長ワ
ードに対して実行される。MPERM.W この命令は、ソースオペランドRmの、4個のパックさ
れた16ビットデータの順序を、制御オペランドRnで
特定される組合せで配列する。結果は、結果オペランド
Rdに入る。結果オペランドの、4個の16ビットフィ
ールドのそれぞれについて、制御オペランドの2ビット
識別子が、ソースオペランドのどの16ビットフィール
ドを、その結果フィールドにコピーするのかを決める。
ある実施の態様では、src2の最下位8ビットが、4
個の、2ビット識別子を含む。従って、src1が、4
個の16ビットフィールドsrc1w3,src1w2,s
rc1w1およびsrc1w0を含む場合、次のようにな
る。src2: 101100012は、src3: src1w2,src1w3,src1w0,
src1w1となる、src2: 001011012は、src3: src1w0,src1
w2,src1w3,src1w1となる、src2: 111000112は、src3: s
rc1w3,src1w2,src1w0,src1w3となる、等 最後の実例は、ソースの16ビットフィールドが、ディ
スティネーションないし行先(転送先)において複数回
複製されていることを例示するためのものである。
は、MPERM.Wに関与せず、従って、src1とs
rc2は、そのままビットシフタを通過して、マトリッ
クス704に入る。src2のid(識別用)ビット
は、マトリックス704の制御入力756に入力する。
MPERM命令のデコードに応じて生成される制御信号
がマトリックス704に入力する。このidビットに基
づいて、マトリックス704は、その出力において、特
定された入れ替えないし並べ替えを実行する。
す。入力src1の64ビットラインは、各セレクタ回
路1103−1100に入力する。さらに詳細に言う
と、各セレクタは、4個の16ビット入力を含む。sr
c1の4個の16ビットフィールドはそれぞれ、対応す
る入力に供給される。src2 idビットは、セレク
タの選択入力に入力する。ビット1、0はセレクタ11
00を、ビット3、2はセレクタ1101を、ビット
5,4はセレクタ1102を、そして、ビット7、6は
セレクタ1103を、それぞれ制御する。各セレクタ出
力は、図11に対応するビット位置によって示される、
16ビット結果フィールドの一つに対応する。従って、
各セレクタ1103−1100は、src1の4個の1
6ビットフィールドの内のいずれでも、それを、src
3の4個の16ビットフィールドの内のいずれにでも生
成することが可能である。これらのラインは究極的には
結合され、MPERM命令用の単一64ビット出力とな
る。MEXTRm−MEXTR7 これらの命令は、2個の連結レジスタRmとRnにまた
がって、右から1−7バイトずらして、8バイトを抽出
する。抽出されたバイトは、Rdに置かれる。Rm,Rn :Rmb7,Rmb6,Rmb5,Rmb4,Rmb3,Rmb2,Rmb1,Rmb0,Rnb7,Rnb6,Rnb5,Rnb4,Rnb3,R nb2,Rnb1,Rnb0 Rd:Rmb0,Rnb7,Rnb6,Rnb5,Rnb4,Rnb3,Rnb2,Rnb1 (MEXTR1) Rd:Rmb1,Rmb0,Rnb7,Rnb6,Rnb5,Rnb4,Rnb3,Rnb2 (MEXTR2) Rd:Rmb2,Rmb1,Rmb0,Rnb7,Rnb6, Rnb5,Rnb4,Rnb3(MEXTR3) Rd:Rmb3,Rmb2,Rmb1,Rmb0,Rnb7,Rnb6,Rnb5,Rnb4 (MEXTR4) Rd:Rmb4,Rmb3,Rmb2,Rmb1,Rmb0,Rnb7, Rnb6,Rnb5(MEXTR5) Rd:Rmb5,Rmb4,Rmb3,Rmb2,Rmb1,Rmb0,Rnb7,Rnb6 (MEXTR6) Rd:Rmb6,Rmb5,Rmb4, Rmb3,Rmb2,Rmb1, Rmb0,Rnb7 (MEXTR7) 図7を参照すると、Rmはsrc1に入力し、Rnはs
rc2に入力する。ビットシフタ702は、src1と
src2には作用せず、そのままマトリックス704に
通過させる。マトリックス704は、src1から適当
数の連続バイトを選び、それらを、その出力の高位部分
の対応する位置に生成する。次に、マトリックス704
は、src2から適当数の連続バイトを選び、それら
を、その出力の低位部部分の対応する位置に生成する。
各MEXTR*命令に対応する制御信号が、各src1
とsrc2の内のいくつのバイトが選択されるかを特定
する。MCMV この命令は、マスクRnの対応ビットのビット設定に基
づいて、オペランドRmからディスティネーションない
し行先(転送先)Rdの対応するビット位置への、条件
付ビット毎コピーを実行する。 Rm:Rm63,Rm62,...Rm1,Rm0 Rd:Rdn ←Rmn もしもRnnが設定されているな
らば、 図8に示した論理を参照すると、オペランドレジスタR
mはsrc1に入力し、マスクレジスタRnはsrc2
に入力する。ディスティネーションレジスタRdもsr
c3としてその論理に入力する。src1、src3の
各対応ビット対は、それぞれ、セレクタ回路801−8
63の「a」入力と「b」入力に結合する。src2の
各ビットは、セレクタ回路を制御する。
3は、もしもsrc2の対応ビットが、すなわち、ビッ
ト位置nが、第1論理状態にある場合、「a」入力、す
なわち、src1nを生成する。同様に、もしもsrc
2のビット位置nのビットが第2論理状態にある場合、
入力「b」、すなわち、src3nが生成される。セレ
クタ回路801−863の出力は結合されて、64ビッ
ト出力880を形成する。
は、src2の対応位置ビットの論理状態に応じて、条
件付きでコピーされる。出力880は、ディスティネー
ションレジスタRdに戻される。従って、これは、マス
クレジスタRnの内容に基づいて、ソースレジスタRm
から、ディスティネーションレジスタRdへ、条件付で
ビットを移動させる命令を与えるという効果を持つ。MSAD この機能は、RmとRnに含まれる8バイトに対して差
の合計演算を実行する。結果は、加算されてRdに入
る。この操作は、下記によって表わされる。
れ、src1とsrc2に入力する。MSAD命令につ
いては、セレクタ110は、16ビットxおよびyデー
タラインに対して、src1とsrc2の下記のような
16ビットマッピングを生成する。16ビットマッピング src1[63:48]⇒x3 src2[63:48]⇒y3 src1[47:32]⇒x2 src2[47:32]⇒y2 src1[31:16]⇒x1 src2[31:16]⇒y1 src1[15:0] ⇒x0 src2[15:0] ⇒y0 しかしながら、MASAD命令の場合、src1とsr
c2は各々8個の、8ビットデータ要素を含む。従っ
て、図6に示したように、各16ビットxnおよびynデ
ータラインは、さらに、8ビットラインに分割される。
これにより、本命令のために、src1とsrc2に8
ビットデータ要素が生成される。
01−608の内の一つに入力する。図6に関連して前
述したように、各減算装置は、入力間の差の絶対値を生
成する。回路120−126の乗算結果ではなくて、減
算装置601−608の出力の方が、セレクタ回路66
0によって選択され、そしてP2にラッチされ、2段目
の処理を受ける。
換回路152によってパックされて、1対の64ビット
の合計・桁上ライン153に入る。セレクタ回路114
と116は、ライン153を圧縮回路160に入力させ
る。MSAD命令の場合、オペランドRdは、src3
に結合し、これはセレクタ回路112によって抽出され
て、圧縮回路160に入力される。圧縮回路は、それら
の入力を結合して、出力161を生成し、これが、P3
ラッチを介して3段目に供給される。
計を生成する。その32ビット出力は、セレクタ回路1
18と119によって結合され、所望の、Rdと結合し
た、64ビットの、絶対値差出力の合計を生成する。図
4を参照すると、加算回路170は、MSAD命令に対
応する制御信号によって、単一の4段桁上転送加算器と
して作動するように構成される。従って、セレクタ回路
420−424は、「a」入力を生成するように制御さ
れる。これによって、各全加算器400−402の桁上
値は、後続の加算器に転送される。その結果、入力合計
・桁上ライン163の64ビット加算が実行される。
れた作用効果が得られる。
ーキテクチャの性能をさらに高めることができる。
改善することができる。
化や、次世代一般製品の計算能力の向上を図ることがで
きる。
令に関連する、ベクトル化乗算装置を示す。
のさらに詳細を示したものである。
らに詳細を示したものである。
る。
に関連して図1で示したマルチプレクサ回路の他の実施
の形態である。
に関連して図1で示した乗算装置にさらに付加される論
理を示す。
に関連するベクトル変換装置を示す。
に関連するビット操作回路である。
実行時における、図8に参照される操作を示す。
命令実行時における、図8に参照される操作を示す。
命令に関連する、図8のマトリックスに使用される論理
を示す。
レクタ回路 P1、P2、P3…パイプライン・ラッチ src1、src2、src3…ソースライン 120−126…乗算回路 152、154、156…変換回路 160…圧縮回路 170…加算回路 180、186…オーバーフロー検出論理回路 400−403…全加算器 420−424…セレクタ回路 621、641…全加算器
Claims (33)
- 【請求項1】 処理コアにおいて、Lビットデータを乗
算する方法であって、 マシンレベルの命令を受け取るステップ、 命令をデコードするステップ、そして、前記命令のデコ
ードに応じて、 第1のLビットデータを生成するステップ、 第2のLビットデータを生成するステップ、 第1データのLビットをN個のセグメントにグループ化
するステップであって、各セグメントは、第1のN項多
項式における1項として扱われるステップ、 第2データのLビットをM個のセグメントにグループ化
するステップであって、各セグメントは、第2のM項多
項式における1項として扱われるステップ、 第1データのNセグメントと、第2データのMセグメン
トとを多項式的に乗算し、それによって、複数の中間積
項を生成するステップ、および、 前記中間積項を合計するステップ、 の諸ステップを含むことを特徴とするデータ乗算方法。 - 【請求項2】 請求項1の方法であって、さらに小エン
ディアンフォーマットにデータを格納することを含み、
前記合計ステップが、最大Lビット位置だけ、前記中間
積項の内のいくつかを左シフトすることを含む、ことを
特徴とする方法。 - 【請求項3】 請求項1の方法であって、前記N個のセ
グメントは同一サイズのセグメントであり、前記M個の
セグメントは同一サイズのセグメントであることを特徴
とする方法。 - 【請求項4】 請求項1の方法であって、Lが32に等
しいことを特徴とする方法。 - 【請求項5】 請求項4の方法であって、Nが2に等し
く、Mが2に等しいことを特徴とする方法。 - 【請求項6】 請求項1の方法であって、さらにデータ
を大エンディアンフォーマットで表わすことを含むこと
を特徴とする方法。 - 【請求項7】 請求項1の方法であって、Nが2に等し
く、Mが2に等しく、それにより第1データと第2デー
タがそれぞれ高位セグメントと低位セグメントを含み、
かつ、 前記乗算ステップが、 第1データの高位セグメントと、第2データの高位セグ
メントとを乗算して、第1の中間積項を生成すること、 第1データの高位セグメントと、第2データの低位セグ
メントとを乗算して、第2の中間積項を生成すること、 第1データの低位セグメントと、第2データの高位セグ
メントとを乗算して、第3の中間積項を生成すること、
および、 第1データの低位セグメントと、第2データの低位セグ
メントとを乗算して、第4の中間積項を生成すること、
を含む、 ことを特徴とする方法。 - 【請求項8】 請求項7の方法であって、さらに小エン
ディアンフォーマットでデータを表わすことを含み、前
記合計ステップが、第1の中間積項をLビット位置だけ
左シフトさせ、かつ、第2および第3中間積項をそれぞ
れL/2ビット位置だけ左シフトさせることを含むこと
を特徴とする方法。 - 【請求項9】 請求項8の方法であって、Lが32に等
しいことを特徴とする方法。 - 【請求項10】 中央演算処理装置を有するデータ処理
装置において、乗算方法が、 単一の命令を受け取るステップ、 前記単一命令をデコードするステップで、このデコード
に応じて、 第1のLビットデータを与えるステップであって、前記
第1データは、AhとAlで表わされ、Ahは高位L/2
ビットであり、Alは低位L/2ビットであるステッ
プ、 第2のLビットデータを与えるステップで、前記第2デ
ータは、BhとBlで表わされ、Bhは高位L/2ビット
であり、Blは低位L/2ビットである、 Ah x Bh x 2Lに等しい、第1の積項を生成するス
テップ、 Ah x Bl x 2L/2に等しい、第2の積項を生成する
ステップ、 Al x Bh x 2L/2に等しい、第3の積項を生成する
ステップ、 Ah x Blに等しい、第4の積項を生成するステップ、
および、 前記第1、第2、第3および第4の積項を合計するステ
ップ、 の諸ステップを含むことを特徴とする乗算方法。 - 【請求項11】 請求項10の方法であって、前記第1
積項を生成するステップが、中間積Ah x Bhを生成
し、次に、前記中間積を表わすビットを、Lビットシフ
トさせることを含むことを特徴とする方法。 - 【請求項12】 請求項11の方法であって、前記シフ
トステップが、2x Lビットを有する出力を生成し、
前記中間積を表わすビットを、前記出力の高位Lビット
に入力させることを含む、ことを特徴とする方法。 - 【請求項13】 請求項12の方法であって、前記第2
積項を生成するステップが、中間積Ah x Blを生成
し、次に、前記中間積を表わすビットを、L/2ビット
シフトさせることを含むことを特徴とする方法。 - 【請求項14】 請求項13の方法であって、前記第3
の積項を生成するステップが、中間積Al x Bhを生成
し、次に、前記中間積を表わすビットを、L/2ビット
シフトさせることを含むことを特徴とする方法。 - 【請求項15】 請求項10の方法であって、Lが32
に等しいことを特徴とする方法。 - 【請求項16】 RISC準拠計算装置において、乗算
方法が、 第1の型の命令((第1命令))を受け取るステップ、 前記第1命令をデコードするステップで、この第1命令
のデコードに応じて、 i) 第1の汎用Lビットレジスタ(第1レジスタ)と
データ通信を実行するステップ、 ii) 第2の汎用Lビットレジスタ(第2レジスタ)
とデータ通信を実行するステップ、 iii) 第1レジスタの低位L/2ビットと、第2レ
ジスタの低位L/2ビットを読み出すステップ、 iv) 第1レジスタの低位L/2ビットと、第2レジ
スタの低位L/2とで乗算を行い、第1の積項を生成す
るステップ、 v) 第1レジスタの高位L/2ビットと、第2レジス
タの高位L/2ビットを読み出すステップ、 vi) 第1レジスタの高位L/2ビットと、第2レジ
スタの高位L/2とで乗算を行い、第2の積項を生成す
るステップ、 vii) 第2積項をLビットシフトさせるステップ、
および、 viii) 第1積項と、シフトさせた第2積項を合計
するステップ、 の諸ステップを含むことを特徴とする。 - 【請求項17】 請求項16の方法であって、ステップ
(iv)と(vi)がオーバーフローの検出を含むこと
を特徴とする方法。 - 【請求項18】 請求項17の方法であって、ステップ
(viii)がオーバーフローの検出を含むことを特徴
とする方法。 - 【請求項19】 請求項16の方法であって、さらに、 第2の型の命令((第2命令))を受け取るステップ、 前記第2命令をデコードするステップで、この第2命令
のデコードに応じて、ix) 第3の汎用Lビットレジ
スタ(第3レジスタ)とデータ通信を実行するステッ
プ、 x) 第4の汎用Lビットレジスタ(第4レジスタ)と
データ通信を実行するステップ、 xi) 第3レジスタのN個のセグメントと、第4レジ
スタのN個のセグメントを読み出すステップ、および、 xii) 第3レジスタのセグメントを、第4レジスタ
の対応するセグメントで乗算し、N個の積項を生成する
ステップ、 の諸ステップを含むことを特徴とする方法。 - 【請求項20】 請求項19の方法であって、ステップ
(iv)と(vi)が、低位ビットと高位ビットを乗算
回路に入力させることを含むことを特徴とする方法。 - 【請求項21】 請求項20の方法であって、ステップ
(xii)が、セグメントを、乗算回路に入力すること
を含むことを特徴とする方法。 - 【請求項22】 レジスタファイルと代数計算装置を有
する処理コアにおいて、前記代数計算装置が、 レジスタファイルから選ばれた第1のレジスタの内容を
受け取るのに有効な、第1の組の入力データライン、 レジスタファイルから選ばれた第2のレジスタの内容を
受け取るのに有効な、第2の組の入力データライン、 多重化入力ラインと多重化出力ラインを有する第1マル
チプレクサであって、多重化入力は、第1組と第2組の
入力データラインとデータ通信し、多重化入力は、多重
化入力ラインの副組としてまとめられ、多重化出力は、
多重化出力ラインの副組としてまとめられる第一マルチ
プレクサ、 複数の乗算回路であって、各乗算回路は、多重化出力ラ
インの副組の一つとデータ通信される入力を有し、各乗
算回路は中間出力を有する乗算回路、 中間出力とデータ通信される入力と、出力とを有する第
1の加算回路であって、各中間出力に対応する積項を出
力するのに有効である第1加算回路、 中間数値とデータ通信される入力と、出力とを有する第
2の加算回路であって、中間数値の中から単一の積項を
出力するのに有効である第2加算回路、および、 第1加算回路の出力および第2加算回路の出力とデータ
通信される入力と、出力とを有する第2マルチプレクサ
であって、第1加算回路の出力と、第2加算回路の出力
のいずれかが、その第2マルチプレクサの出力で生成さ
れる第2マルチプレクサ、 を含むことを特徴とする計算装置。 - 【請求項23】 請求項22の計算装置であって、各マ
ルチプレクサが、桁上出力と合計出力を生成するウォー
レス・ツリー型マルチプレクサであることを特徴とする
計算装置。 - 【請求項24】 請求項23の計算装置であって、第1
加算回路が桁上転送加算器であることを特徴とする計算
装置。 - 【請求項25】 請求項24の計算装置であって、第2
加算回路は、圧縮回路と、前記圧縮回路の出力とデータ
通信する桁上転送加算器とを含むことを特徴とする計算
装置。 - 【請求項26】 請求項22の計算装置であって、各乗
算回路は、関連するオーバーフロー予測回路を含み、各
々のオーバーフロー予測回路は、その関連する乗算回路
の入力とデータ通信される入力と、出力とを有し、各乗
算回路はさらに、中間出力値または所定値のいずれかを
出力するための関連するセレクタを含み、かつ、このセ
レクタは、オーバーフロー/アンダーフロー予測装置の
出力と結合したセレクタ入力を有する、ことを特徴とす
る計算装置。 - 【請求項27】 請求項22の計算装置であって、第2
加算回路は、関連する第2オーバーフロー予測回路を含
み、この第2オーバーフロー予測回路は、第2加算回路
の入力とデータ通信する入力と、出力とを有し、第2加
算回路はさらに、第2加算回路の出力または所定値のい
ずれかを出力するための関連する第2セレクタを有し、
かつ、この第2セレクタは、第2オーバーフロー予測回
路の出力と結合したセレクタ入力を有する、ことを特徴
とする計算装置。 - 【請求項28】 乗算装置を有し、前記乗算装置は、第
1、第2および第3入力を有し、前記乗算装置は、前記
入力を受け取るように結合した第1セレクタ、第1セレ
クタの出力を受け取るように結合された1組の乗算回
路、第1、第2、第3変換経路であって、各変換経路
は、乗算回路の出力に対して別々の異なるデータ変換を
生成する変換経路、これらの変換経路を受け取るように
結合された第2セレクタ、第2セレクタの出力と、第3
入力を受け取るよう結合された圧縮回路、および、第2
セレクタの出力を受け取るように結合された加算回路よ
りなる処理コアであって、乗算方法が、 第1命令をデコードして第1制御信号を生成するステッ
プであって、前記第1制御信号に応じて、 第1セレクタに第1データと第2データとを供給するス
テップであって、第1セレクタは、第1データと第2デ
ータとをサブグループに分割するステップ、 前記サブグループを、第1配列に従って乗算回路に適用
するステップ、 第1変換経路から、圧縮回路へのデータを選択するステ
ップ、 前記圧縮回路をバイパスするステップ、および、 加算回路において単一の加算操作を実行するステップ、 の諸ステップを含むことを特徴とする乗算方法。 - 【請求項29】 請求項28の方法であって、第1命令
が32ビット乗算命令であることを特徴とする方法。 - 【請求項30】 請求項29の方法であって、第1デー
タと第2データのサブグループの第1配列が、2個の二
項項として乗算されることを特徴とする方法。 - 【請求項31】 請求項29の方法であって、さらに、 第2命令をデコードして第2制御信号を生成するステッ
プであって、第2制御命令に応じて、 第1セレクタに第3データと第4データを供給するステ
ップであって、第1セレクタは、第3データと第4デー
タとをサブグループに分割するステップ、 前記サブグループを、第2配列に従って乗算回路に適用
するステップ、 前記第2変換経路から、圧縮回路へのデータを選択する
ステップ、 前記圧縮回路をバイパスするステップ、および、 加算回路において単一の加算操作を実行するステップ、 の諸ステップを含むことを特徴とする方法。 - 【請求項32】 請求項31の方法であって、さらに、 第3命令をデコードして第3制御信号を生成するステッ
プであって、第3制御命令に応じて、 第1セレクタに第5データと第6データを供給するステ
ップであって、第1セレクタは、第5データと第6デー
タとをサブグループに分割するステップ、 前記サブグループを、第2配列に従って乗算回路に適用
するステップ、 前記第3変換経路から、圧縮回路へのデータを選択する
ステップ、 前記圧縮回路をバイパスするステップ、および、 加算回路において4個の独立の加算操作を同時に実行す
るステップ、 の諸ステップを含むことを特徴とする方法。 - 【請求項33】 請求項31の方法であって、さらに、 第3命令をデコードして第3制御信号を生成するステッ
プであって、第3制御命令に応じて、 第1セレクタに第7データと第8データを供給するステ
ップであって、第1セレクタは、第7データと第8デー
タとをサブグループに分割するステップ、 前記サブグループを、第2配列に従って乗算回路に適用
するステップ、 前記第2変換経路から、圧縮回路へのデータを選択する
ステップ、 前記圧縮回路を操作して、第2変換経路からのデータ
と、第3入力とを結合するステップ、および、 加算回路において2個の独立の加算操作を同時に実行す
るステップ、 の諸ステップを含むことを特徴とする方法。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US09/411620 | 1999-10-01 | ||
US09/411,620 US6574651B1 (en) | 1999-10-01 | 1999-10-01 | Method and apparatus for arithmetic operation on vectored data |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2001147798A true JP2001147798A (ja) | 2001-05-29 |
Family
ID=23629667
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2000279258A Pending JP2001147798A (ja) | 1999-10-01 | 2000-09-14 | データ乗算方法および計算装置 |
Country Status (4)
Country | Link |
---|---|
US (1) | US6574651B1 (ja) |
JP (1) | JP2001147798A (ja) |
KR (1) | KR20010067275A (ja) |
TW (1) | TW564368B (ja) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2005235004A (ja) * | 2004-02-20 | 2005-09-02 | Altera Corp | 乗算器−累算器ブロックモード分割 |
US7376819B2 (en) | 2002-06-28 | 2008-05-20 | Renesas Technology Corp. | Data processor with selectable word length |
JP2009134745A (ja) * | 2009-01-30 | 2009-06-18 | Renesas Technology Corp | データ処理装置 |
JP2009169709A (ja) * | 2008-01-17 | 2009-07-30 | Nec Computertechno Ltd | ベクトル演算装置 |
Families Citing this family (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7206800B1 (en) * | 2000-08-30 | 2007-04-17 | Micron Technology, Inc. | Overflow detection and clamping with parallel operand processing for fixed-point multipliers |
US6959316B2 (en) * | 2001-02-01 | 2005-10-25 | Nokia Mobile Phones Limited | Dynamically configurable processor |
US6882685B2 (en) * | 2001-09-18 | 2005-04-19 | Microsoft Corporation | Block transform and quantization for image and video coding |
US7107305B2 (en) * | 2001-10-05 | 2006-09-12 | Intel Corporation | Multiply-accumulate (MAC) unit for single-instruction/multiple-data (SIMD) instructions |
JP3940714B2 (ja) * | 2003-09-25 | 2007-07-04 | 株式会社東芝 | 演算装置、および、暗号・復号演算装置 |
US7987222B1 (en) * | 2004-04-22 | 2011-07-26 | Altera Corporation | Method and apparatus for implementing a multiplier utilizing digital signal processor block memory extension |
US20060004903A1 (en) * | 2004-06-30 | 2006-01-05 | Itay Admon | CSA tree constellation |
US7513702B2 (en) * | 2005-11-16 | 2009-04-07 | Va, Inc. | Non-contact shutter activation system and method |
US8082287B2 (en) * | 2006-01-20 | 2011-12-20 | Qualcomm Incorporated | Pre-saturating fixed-point multiplier |
KR20070088190A (ko) * | 2006-02-24 | 2007-08-29 | 삼성전자주식회사 | 멀티미디어 데이터 처리를 위한 서브워드 병렬 처리 방법 |
US20080046497A1 (en) * | 2006-08-18 | 2008-02-21 | Conexant Systems, Inc. | Systems and Methods for Implementing a Double Precision Arithmetic Memory Architecture |
US20080071851A1 (en) * | 2006-09-20 | 2008-03-20 | Ronen Zohar | Instruction and logic for performing a dot-product operation |
US8942289B2 (en) * | 2007-02-21 | 2015-01-27 | Microsoft Corporation | Computational complexity and precision control in transform-based digital media codec |
GB0716158D0 (en) * | 2007-08-17 | 2007-09-26 | Imagination Tech Ltd | Data compression |
CN102201815B (zh) * | 2010-03-25 | 2015-03-18 | 承景科技股份有限公司 | 高运算频率的二进制运算解码装置 |
US9606803B2 (en) * | 2013-07-15 | 2017-03-28 | Texas Instruments Incorporated | Highly integrated scalable, flexible DSP megamodule architecture |
US9910670B2 (en) | 2014-07-09 | 2018-03-06 | Intel Corporation | Instruction set for eliminating misaligned memory accesses during processing of an array having misaligned data rows |
Family Cites Families (75)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4467444A (en) | 1980-08-01 | 1984-08-21 | Advanced Micro Devices, Inc. | Processor unit for microcomputer systems |
DE3584690D1 (de) | 1984-06-20 | 1992-01-02 | Convex Computer Corp | Ein-/ausgabebus fuer rechner. |
US4935867A (en) | 1986-03-04 | 1990-06-19 | Advanced Micro Devices, Inc. | Signal processor memory management unit with indirect addressing using selectable offsets and modulo values for indexed address calculations |
US4814981A (en) | 1986-09-18 | 1989-03-21 | Digital Equipment Corporation | Cache invalidate protocol for digital data processing system |
CA1311063C (en) * | 1988-12-16 | 1992-12-01 | Tokumichi Murakami | Digital signal processor |
US5483518A (en) | 1992-06-17 | 1996-01-09 | Texas Instruments Incorporated | Addressable shadow port and protocol for serial bus networks |
JPH0666056B2 (ja) | 1989-10-12 | 1994-08-24 | 甲府日本電気株式会社 | 情報処理システム |
JPH03217949A (ja) | 1990-01-23 | 1991-09-25 | Hitachi Ltd | 計算機システム |
US5452432A (en) | 1990-08-14 | 1995-09-19 | Chips And Technologies, Inc. | Partially resettable, segmented DMA counter |
JP2984463B2 (ja) | 1991-06-24 | 1999-11-29 | 株式会社日立製作所 | マイクロコンピュータ |
US5423050A (en) | 1991-11-27 | 1995-06-06 | Ncr Corporation | Intermodule test across system bus utilizing serial test bus |
US5724549A (en) | 1992-04-06 | 1998-03-03 | Cyrix Corporation | Cache coherency without bus master arbitration signals |
GB2266606B (en) | 1992-04-27 | 1996-02-14 | Intel Corp | A microprocessor with an external command mode |
US5448576A (en) | 1992-10-29 | 1995-09-05 | Bull Hn Information Systems Inc. | Boundary scan architecture extension |
JP3231429B2 (ja) | 1992-11-06 | 2001-11-19 | 株式会社日立製作所 | 中央処理装置と乗算器とを有する半導体集積回路装置 |
JPH06150023A (ja) | 1992-11-06 | 1994-05-31 | Hitachi Ltd | マイクロコンピュータ及びマイクロコンピュータシステム |
JP3524110B2 (ja) | 1992-11-06 | 2004-05-10 | 株式会社ルネサステクノロジ | マイクロコンピュータシステム |
US5627842A (en) | 1993-01-21 | 1997-05-06 | Digital Equipment Corporation | Architecture for system-wide standardized intra-module and inter-module fault testing |
JP2731692B2 (ja) | 1993-04-28 | 1998-03-25 | 日本電気アイシーマイコンシステム株式会社 | デバッグ装置 |
US5598551A (en) | 1993-07-16 | 1997-01-28 | Unisys Corporation | Cache invalidation sequence system utilizing odd and even invalidation queues with shorter invalidation cycles |
EP0636976B1 (en) | 1993-07-28 | 1998-12-30 | Koninklijke Philips Electronics N.V. | Microcontroller provided with hardware for supporting debugging as based on boundary scan standard-type extensions |
JP3904244B2 (ja) | 1993-09-17 | 2007-04-11 | 株式会社ルネサステクノロジ | シングル・チップ・データ処理装置 |
EP0652516A1 (en) | 1993-11-03 | 1995-05-10 | Advanced Micro Devices, Inc. | Integrated microprocessor |
US5596734A (en) | 1993-12-17 | 1997-01-21 | Intel Corporation | Method and apparatus for programming embedded memories of a variety of integrated circuits using the IEEE test access port |
US5828825A (en) | 1993-12-22 | 1998-10-27 | Intel Corporation | Method and apparatus for pseudo-direct access to embedded memories of a micro-controller integrated circuit via the IEEE test access port |
US5535405A (en) | 1993-12-23 | 1996-07-09 | Unisys Corporation | Microsequencer bus controller system |
US5434804A (en) | 1993-12-29 | 1995-07-18 | Intel Corporation | Method and apparatus for synchronizing a JTAG test control signal to an on-chip clock signal |
DE69518403T2 (de) | 1994-01-10 | 2001-03-29 | The Dow Chemical Co., Midland | Ein massiv multiplexierter, superskalarer prozessor mit harvard-architektur |
US5488688A (en) | 1994-03-30 | 1996-01-30 | Motorola, Inc. | Data processor with real-time diagnostic capability |
JPH07287668A (ja) | 1994-04-19 | 1995-10-31 | Hitachi Ltd | データ処理装置 |
GB9417602D0 (en) | 1994-09-01 | 1994-10-19 | Inmos Ltd | A controller for implementing scan testing |
JPH08329687A (ja) | 1995-06-05 | 1996-12-13 | Hitachi Ltd | 半導体集積回路 |
JP3713312B2 (ja) | 1994-09-09 | 2005-11-09 | 株式会社ルネサステクノロジ | データ処理装置 |
JP3672634B2 (ja) | 1994-09-09 | 2005-07-20 | 株式会社ルネサステクノロジ | データ処理装置 |
JP3740195B2 (ja) | 1994-09-09 | 2006-02-01 | 株式会社ルネサステクノロジ | データ処理装置 |
US5848247A (en) | 1994-09-13 | 1998-12-08 | Hitachi, Ltd. | Microprocessor having PC card interface |
US5613153A (en) | 1994-10-03 | 1997-03-18 | International Business Machines Corporation | Coherency and synchronization mechanisms for I/O channel controllers in a data processing system |
US5751621A (en) | 1994-11-17 | 1998-05-12 | Hitachi, Ltd. | Multiply-add unit and data processing apparatus using it |
TW330265B (en) | 1994-11-22 | 1998-04-21 | Hitachi Ltd | Semiconductor apparatus |
JP2752592B2 (ja) | 1994-12-28 | 1998-05-18 | 日本ヒューレット・パッカード株式会社 | マイクロプロセッサ、マイクロプロセッサ−デバッグツール間信号伝送方法及びトレース方法 |
US5778237A (en) | 1995-01-10 | 1998-07-07 | Hitachi, Ltd. | Data processor and single-chip microcomputer with changing clock frequency and operating voltage |
US5664197A (en) | 1995-04-21 | 1997-09-02 | Intel Corporation | Method and apparatus for handling bus master channel and direct memory access (DMA) channel access requests at an I/O controller |
US5867726A (en) | 1995-05-02 | 1999-02-02 | Hitachi, Ltd. | Microcomputer |
US5570375A (en) | 1995-05-10 | 1996-10-29 | National Science Council Of R.O.C. | IEEE Std. 1149.1 boundary scan circuit capable of built-in self-testing |
US5860127A (en) | 1995-06-01 | 1999-01-12 | Hitachi, Ltd. | Cache memory employing dynamically controlled data array start timing and a microcomputer using the same |
US5774701A (en) | 1995-07-10 | 1998-06-30 | Hitachi, Ltd. | Microprocessor operating at high and low clok frequencies |
US5708773A (en) | 1995-07-20 | 1998-01-13 | Unisys Corporation | JTAG interface system for communicating with compliant and non-compliant JTAG devices |
US5737516A (en) | 1995-08-30 | 1998-04-07 | Motorola, Inc. | Data processing system for performing a debug function and method therefor |
US5704034A (en) | 1995-08-30 | 1997-12-30 | Motorola, Inc. | Method and circuit for initializing a data processing system |
JP3655403B2 (ja) | 1995-10-09 | 2005-06-02 | 株式会社ルネサステクノロジ | データ処理装置 |
US5751622A (en) * | 1995-10-10 | 1998-05-12 | Chromatic Research, Inc. | Structure and method for signed multiplication using large multiplier having two embedded signed multipliers |
JP3623840B2 (ja) | 1996-01-31 | 2005-02-23 | 株式会社ルネサステクノロジ | データ処理装置及びマイクロプロセッサ |
US5950012A (en) | 1996-03-08 | 1999-09-07 | Texas Instruments Incorporated | Single chip microprocessor circuits, systems, and methods for self-loading patch micro-operation codes and patch microinstruction codes |
US5978874A (en) | 1996-07-01 | 1999-11-02 | Sun Microsystems, Inc. | Implementing snooping on a split-transaction computer system bus |
JPH09311786A (ja) | 1996-03-18 | 1997-12-02 | Hitachi Ltd | データ処理装置 |
JP3579205B2 (ja) | 1996-08-06 | 2004-10-20 | 株式会社ルネサステクノロジ | 半導体記憶装置、半導体装置、データ処理装置及びコンピュータシステム |
GB9617033D0 (en) | 1996-08-14 | 1996-09-25 | Int Computers Ltd | Diagnostic memory access |
US5768152A (en) | 1996-08-28 | 1998-06-16 | International Business Machines Corp. | Performance monitoring through JTAG 1149.1 interface |
WO1998013759A1 (fr) | 1996-09-27 | 1998-04-02 | Hitachi, Ltd. | Machine de traitement de donnees et systeme de traitement de donnees |
JP3790307B2 (ja) | 1996-10-16 | 2006-06-28 | 株式会社ルネサステクノロジ | データプロセッサ及びデータ処理システム |
JPH10177520A (ja) | 1996-10-16 | 1998-06-30 | Hitachi Ltd | データプロセッサ及びデータ処理システム |
JP3641327B2 (ja) | 1996-10-18 | 2005-04-20 | 株式会社ルネサステクノロジ | データプロセッサ及びデータ処理システム |
GB9622686D0 (en) | 1996-10-31 | 1997-01-08 | Sgs Thomson Microelectronics | A test port controller and a method of effecting communication using the same |
US5953538A (en) | 1996-11-12 | 1999-09-14 | Digital Equipment Corporation | Method and apparatus providing DMA transfers between devices coupled to different host bus bridges |
US5983017A (en) | 1996-11-12 | 1999-11-09 | Lsi Logic Corporation | Virtual monitor debugging method and apparatus |
US5771240A (en) | 1996-11-14 | 1998-06-23 | Hewlett-Packard Company | Test systems for obtaining a sample-on-the-fly event trace for an integrated circuit with an integrated debug trigger apparatus and an external pulse pin |
US5956477A (en) | 1996-11-25 | 1999-09-21 | Hewlett-Packard Company | Method for processing information in a microprocessor to facilitate debug and performance monitoring |
US5896550A (en) | 1997-04-03 | 1999-04-20 | Vlsi Technology, Inc. | Direct memory access controller with full read/write capability |
US5978902A (en) | 1997-04-08 | 1999-11-02 | Advanced Micro Devices, Inc. | Debug interface including operating system access of a serial/parallel debug port |
US5944841A (en) | 1997-04-15 | 1999-08-31 | Advanced Micro Devices, Inc. | Microprocessor with built-in instruction tracing capability |
JP3479438B2 (ja) * | 1997-09-18 | 2003-12-15 | 株式会社東芝 | 乗算回路 |
US6038583A (en) * | 1997-10-23 | 2000-03-14 | Advanced Micro Devices, Inc. | Method and apparatus for simultaneously multiplying two or more independent pairs of operands and calculating a rounded products |
GB9802097D0 (en) | 1998-01-30 | 1998-03-25 | Sgs Thomson Microelectronics | DMA controller |
GB9806184D0 (en) | 1998-03-23 | 1998-05-20 | Sgs Thomson Microelectronics | A cache coherency mechanism |
GB9809203D0 (en) | 1998-04-29 | 1998-07-01 | Sgs Thomson Microelectronics | Packet distribution in a microcomputer |
-
1999
- 1999-10-01 US US09/411,620 patent/US6574651B1/en not_active Expired - Fee Related
-
2000
- 2000-09-14 JP JP2000279258A patent/JP2001147798A/ja active Pending
- 2000-09-30 TW TW089120502A patent/TW564368B/zh not_active IP Right Cessation
- 2000-10-02 KR KR1020000057808A patent/KR20010067275A/ko not_active Application Discontinuation
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7376819B2 (en) | 2002-06-28 | 2008-05-20 | Renesas Technology Corp. | Data processor with selectable word length |
JP2005235004A (ja) * | 2004-02-20 | 2005-09-02 | Altera Corp | 乗算器−累算器ブロックモード分割 |
JP4502662B2 (ja) * | 2004-02-20 | 2010-07-14 | アルテラ コーポレイション | 乗算器−累算器ブロックモード分割 |
JP2009169709A (ja) * | 2008-01-17 | 2009-07-30 | Nec Computertechno Ltd | ベクトル演算装置 |
JP2009134745A (ja) * | 2009-01-30 | 2009-06-18 | Renesas Technology Corp | データ処理装置 |
Also Published As
Publication number | Publication date |
---|---|
TW564368B (en) | 2003-12-01 |
US6574651B1 (en) | 2003-06-03 |
KR20010067275A (ko) | 2001-07-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2001142678A (ja) | 処理コアの操作方法および乗算実行方法 | |
JP2001147804A (ja) | パッケージデータのシフト方法および処理コア | |
JP2001147798A (ja) | データ乗算方法および計算装置 | |
Lee | Accelerating multimedia with enhanced microprocessors | |
KR100715770B1 (ko) | 연산을 수행하는 방법 및 시스템 및 장치 | |
US5893145A (en) | System and method for routing operands within partitions of a source register to partitions within a destination register | |
US5909572A (en) | System and method for conditionally moving an operand from a source register to a destination register | |
US5801975A (en) | Computer modified to perform inverse discrete cosine transform operations on a one-dimensional matrix of numbers within a minimal number of instruction cycles | |
JP4064989B2 (ja) | パック・データの乗加算演算を実行する装置 | |
KR100714358B1 (ko) | 연산을 수행하기 위한 방법, 시스템 및 장치 | |
US6154831A (en) | Decoding operands for multimedia applications instruction coded with less number of bits than combination of register slots and selectable specific values | |
US6009505A (en) | System and method for routing one operand to arithmetic logic units from fixed register slots and another operand from any register slot | |
US6173366B1 (en) | Load and store instructions which perform unpacking and packing of data bits in separate vector and integer cache storage | |
US6820102B2 (en) | DSP unit for multi-level global accumulation | |
US5880979A (en) | System for providing the absolute difference of unsigned values | |
KR19990044305A (ko) | 압축 데이터에 의한 승산-가산 연산 수행 장치 | |
JP2001147799A (ja) | データ移動方法および条件付転送論理ならびにデータの配列換え方法およびデータのコピー方法 | |
JP2001331474A (ja) | 単一命令複数データ指示を備えた逆離散コサイン変換の実行方法、圧縮データの伸張方法、圧縮データ信号の伸張装置、並びに、コンピュータ・プログラム製品 | |
US5742529A (en) | Method and an apparatus for providing the absolute difference of unsigned values | |
JP2002519957A (ja) | 符号関数を処理する方法および装置 | |
Furht | Processor architectures for multimedia: a survey | |
KR100434391B1 (ko) | 디에스피 프로세서 및 마이크로프로세서의 실시간영상데이터 처리를 위한 연산회로 및 그 연산방법 | |
US6374280B1 (en) | Computationally efficient inverse discrete cosine transform method and apparatus | |
Faroqui et al. | A programmable data-path for MPEG-4 and natural hybrid video coding | |
WO2001075587A2 (en) | Multiplier architecture in a general purpose processor optimized for efficient multi-input addition |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20060601 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20081023 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20081028 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20081226 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20090623 |