JP2001147799A - データ移動方法および条件付転送論理ならびにデータの配列換え方法およびデータのコピー方法 - Google Patents

データ移動方法および条件付転送論理ならびにデータの配列換え方法およびデータのコピー方法

Info

Publication number
JP2001147799A
JP2001147799A JP2000279260A JP2000279260A JP2001147799A JP 2001147799 A JP2001147799 A JP 2001147799A JP 2000279260 A JP2000279260 A JP 2000279260A JP 2000279260 A JP2000279260 A JP 2000279260A JP 2001147799 A JP2001147799 A JP 2001147799A
Authority
JP
Japan
Prior art keywords
data
bit
register
input
output
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
Application number
JP2000279260A
Other languages
English (en)
Inventor
Srinivas Mandavilli
スリニバス・マンダビリ
Saha Arindam
アリンダム・サハ
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Hitachi Ltd filed Critical Hitachi Ltd
Publication of JP2001147799A publication Critical patent/JP2001147799A/ja
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods 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/52Multiplying; Dividing
    • G06F7/523Multiplying only
    • G06F7/53Multiplying only in parallel-parallel fashion, i.e. both operands being entered in parallel
    • G06F7/5324Multiplying 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30018Bit or string instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30032Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30072Arrangements for executing specific machine instructions to perform conditional operations, e.g. using predicates or guards
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/38Indexing scheme relating to groups G06F7/38 - G06F7/575
    • G06F2207/3804Details
    • G06F2207/3808Details concerning the type of numbers or the way they are handled
    • G06F2207/3828Multigauge devices, i.e. capable of handling packed numbers without unpacking them
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods 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/52Multiplying; Dividing
    • G06F7/523Multiplying only
    • G06F7/53Multiplying only in parallel-parallel fashion, i.e. both operands being entered in parallel
    • G06F7/5318Multiplying only in parallel-parallel fashion, i.e. both operands being entered in parallel with column wise addition of partial products, e.g. using Wallace tree, Dadda counters

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Complex Calculations (AREA)
  • Executing Machine-Instructions (AREA)
  • Image Processing (AREA)

Abstract

(57)【要約】 【課題】 ベクトル化処理命令に対する命令セットアー
キテクチャを強化すること、および、ベクトル化データ
処理領域において、命令セットアーキテクチャ準拠プロ
セッサの微小アーキテクチャを改善すること 【解決手段】 処理コア操作法であって、ある汎用レジ
スタから、別の汎用レジスタへデータをコピーするため
の命令を提供する。条件付移動命令が、制御レジスタの
対応ビットに基づいて、ソースレジスタから、ディステ
ィネーションレジスタRdへ、ビットの条件付コピーを
実行する。再配列命令が、制御レジスタに基づいて、任
意の配列を実行する。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、マイクロプロセッ
サに関わり、特に、ベクトル化データを操作する技術に
関わる。
【0002】
【従来の技術】現代のディジタルサービスを提供するに
は、さらにコンピュータ処理の増大が必要とされる。一
例として、インターネットは、画像表示、および、ビデ
オ・オーディオ・コンテンツの再生用に、多量のマルチ
メディアプリケーションを発生させた。これらのアプリ
ケーションにおいては、静止的グラフィック画像や、完
全動画ビデオの形式を持つ複雑なデータの操作が実行さ
れる。ディジタル化画像は、莫大な量のメモリ容量を消
費することが一般に認められている。例えば、一個の、
480x640ピクセルで、ピクセル当り24ビットの
フルカラー解像度(ピクセル当り3個の、8ビットバイ
ト)を持つ、比較的小容量の画像は、ほぼ1メガバイト
のデータを占拠する。1024x768ピクセルの解像
度においては、24ビット・カラー画像は、その表示に
2.3MBのメモリを必要とする。8.5インチx11
インチ(21x28cm)のページの24ビット色彩画
は、インチ当り300ドットとすると、2MBものメモ
リ容量を必要とする。ビデオ画像はさらにデータ集約的
である。なぜなら、高品質消費者用アプリケーション用
の場合、画像は、毎秒少なくとも30フレームの割合で
出現しなければならないと一般に認められているからで
ある。現在、フレーム当り1920x1035、また
は、それ以上ものピクセルを要求する高画質テレビ(H
DTV)が提案されているが、これは、毎秒約150億
ビットのデータ転送率に相当する。その他、ビデオ電子
会議や、家庭娯楽装置のようなディジタル画像や、マル
チメディアプリケーションにおける進歩によって、さら
に広帯域で、従って、さらに高度の処理能力に対する高
度の要求が生じている。
【0003】ディジタル画像やビデオ情報を圧縮するた
めの、従来の、無損失技術としては、ハフマン符号化
法、ラン・レングス符号化法、および、レンペル・ジフ
・ウェルチ・アルゴリズムのような方法がある。これら
の方法は、画像品質を維持することにおいては有利では
あるけれども、その他の点では、高出力効率システムに
対する要求を満たすには十分ではない。このため、通常
ある程度の情報損失を含む圧縮技術が工夫されてきてい
る。そのような技術として、離散コサイン変換(DC
T)法、適応DCT法、および、ウェーブレット変換法
がある。
【0004】Joint Photographic
Experts Group (JPEG)は、JPE
G標準という名で知られる、静止画像圧縮のための標準
を創製した。この標準は、離散コサイン変換(DCT)
に基づくアルゴリズムを定義する。JPEGアルゴリズ
ムを用いる符号化装置は、画像を、4ステップで処理す
る。すなわち、線形変換、量子化、ラン・レングス符号
化(RLE)、および、ハフマン符号化である。デコー
ドは、上記のステップを逆に行い、元の画像を再構成す
る。線形変換ステップの場合、画像は、8x8ピクセル
のブロックに分割され、次に、各ブロックの、空間にお
ける両次元に対してDCT操作を適用する。画像をブロ
ックに分割する目的は、DCTアルゴリズムの欠点、す
なわち、DCTは高度に非局部的であるという欠点を補
うためである。画像は、この非局部性を補うために、ブ
ロックに分割される。すなわち、アルゴリズムを小区域
に限定し、各ブロック毎に別々に変換を実行するためで
ある。しかしながら、このような妥協は、タイル状の外
観を生ずるという欠点を持つ。このタイル状の外観は、
粗い品質を持つことによって視覚的にもそれ自身明白で
ある。
【0005】量子化ステップは、伝達される情報量を抑
えるために必須であるが、画像情報の損失はもたらさな
い。各変換成分は、各8x8ブロック内におけるその位
置から選択されるある値をもって量子化される。このス
テップは、多量の僅少数値を特定するのにごく僅かな情
報しか要しない、ゼロまたは、その他の小数値に減少さ
せるという好ましい副次的効果を有する。
【0006】ラン・レングス符号化ステップは、同じ
値、例えば、ゼロの実行数をコードして、ある一つの値
を繰り返す度数、および、繰り返す数値を特定するコー
ドを生ずる。例えば、「8個のゼロ」のような単一コー
ドの方が、一連の8個のゼロよりも表わすのに少ないス
ペースしか要求しない。このステップは、通常、量子化
ステップで生ずる大量のゼロの存在によって正当化され
る。
【0007】ハフマンステップ(エントロピー符号化法
の一般的形式)は、ラン・レングス符号化ステップによ
って得られた各記号を、その記号の出現頻度に応じて選
ばれる、可変長ビット記号列に変換する。すなわち、高
頻度記号は、低頻度記号よりも、短いコードで符号化さ
れる。符号化は、あらかじめ設定された表、または、特
に、画像については、その必要な全ビット数を最小にす
るように構成された表に基づいて実行することが可能で
ある。
【0008】JPEGと同様に、Motion Pic
tures Experts Group (MPE
G)も、画像配列を符号化するための二つの標準を定め
た。この基準は、MPEG IおよびMPEG IIの
名で知られる。このMPEGアルゴリズムは、フレーム
間の比較的僅かな変動の共通出現を利用するものであ
る。MPEG標準においては、完全画像は、各12フレ
ーム毎に1回だけ圧縮・転送される。この「参照フレー
ム」(インフラ・フレームを表わす所謂「I−フレー
ム」である)は、通常、JPEG圧縮法を用いて圧縮さ
れる。中間フレームに関しては、予側フレーム(P−フ
レーム)を計算し、現実フレームと各予測フレーム間の
差のみを圧縮・転送する。
【0009】予測フレームを計算するには、いくつかあ
るアルゴリズムの内のいずれでも用いることができる。
アルゴリズムは、特定のブロックに対してどの予測アル
ゴリズムがもっとも良く適応するかに応じて、ブロック
毎に選ばれる。「移動推定」と呼ばれる方法は、時間的
冗長度を減少させるのに用いられる。時間的冗長度と
は、画像の大部分が、フレーム間で変化することのない
映画に観察される。カメラのパンのような、多くの場合
において、画像中の各ピクセルは、フレーム毎に変化し
ているが、ほとんど各画像が、前画像においても発見さ
れるものである。先行(および後続)フレームにおいて
ピクセルのコピーを「発見する」ステップを、移動推定
と呼ぶ。H.261やMPEG1および2のようなビデ
オ圧縮標準により、画像符号化装置(画像圧縮エンジ
ン)は、画像内の16x16ピクセル・ブロックの移動
を特定することによって冗長度を除去することが可能で
ある。圧縮される画像を、16x16ピクセルのブロッ
クに分解する。画像の各ブロックにおいて、検索を実行
し、圧縮された配列の中の他の画像中に適合ブロックが
発見されないかどうか探る。適合を決めるには、通常、
二つの測定値が使用され 入するのが容易である。一方、SDSの演算は、実行す
るのにさらに高度の精度が要求されるけれども、その結
果は、一般により優れた品質のものとして受け入れられ
ている。
【0010】リアルタイムの、高品質ビデオ画像の圧縮
解除(復元)のためには、復元アルゴリズムは、毎秒3
0フレームの復元画像を生成することが可能なほど十分
に単純でなければならない。圧縮におけるスピード要求
は、多くの場合、復元におけるものほど極端ではない。
なぜなら、多くの場合、画像は、オフラインで圧縮され
るからである。しかしながら、そうは言っても、圧縮時
間は、市場で商業的に生き残っていけるほどにそこそこ
のものでなければならない。さらに、多くのアプリケー
ションは、復元ばかりでなく、リアルタイム圧縮を要求
する。例えば、ビデオ電子会議のようなライブ・イベン
トのリアルタイム転送がそれである。
【0011】専用ディジタル信号プロセッサ(DSP)
は、この種の操作を実行するのに一般的に使用される、
通例の実行機器である。集約数字の処理に最適化してい
るので、DSPは、しばしばサウンドカード、音声認識
カード、ビデオキャプチャ・カード等のようなマルチメ
ディア機器の内部に組み込まれる。DSPは、もう一方
の汎用マイクロプロセッサよりも、データ圧縮プログラ
ムの要求する複雑かつ繰り返しの多い数式計算や、特異
的なマルチメディア型アルゴリズムを、より効率的に実
行するコプロセッサとして機能する。
【0012】しかしながら、パーソナルコンピュータの
価格・性能比を改善しようという飽くなき探求は、従来
DSPによって与えられた処理能力の多くを効果的に乗
算する、汎用マイクロプロセッサ世代を生み出した。一
つの開発方向は、縮小命令セットコンピュータ(RIS
C)である。RISCプロセッサは、命令が比較的少な
く、そのためデコードが簡単であること、および、全て
の代数・論理演算を、レジスタ対レジスタ方式で実行す
ることを要求すること、が特徴である。もう一つの特徴
は、複雑なメモリアクセス操作がないことである。メモ
リアクセスは全てレジスタロード・格納操作であって、
比較的小数の、比較的単純なアドレスモードしかない。
すなわち、オペランドアドレスを特定するのに数通りの
やり方しかない。命令は、ただ一つの長さしか持たず、
メモリアクセスは、標準データ幅しか持たない。命令実
行は、マイクロコード化と比べると、直接的回路構成型
である。命令サイクル時間は固定されており、かつ、命
令は比較的単純なものとなるように定義されているの
で、それらは全て1乃至数サイクルで実行される。通
常、多数命令は、パイプライン処理の結果として、ある
1時点においては、実行の様々なステップにある。
【0013】
【発明が解決しようとする課題】MPEG、JPEG、
H.320等を、データ圧縮標準としてさらに競合的に
するために、既存のRISCアーキテクチャプロセッサ
や、既存の命令セットを強化する試みがなされて来てい
る。従来からDSP技術を用いて具現化されている、他
の現代のディジタルサービス、例えば、広帯域ネットワ
ーク、セットトップ・ボックスCPU、ケーブルシステ
ム、音声交信IP装置、無線製品等も、単一の汎用プロ
セッサにおいて処理能力が増加するならば、その恩恵を
被ることになろう。さらに一般的に、従来からDSP技
術を用いて具現化されていたディジタルフィルタ・アプ
リケーションは、DSP性能を持つ汎用プロセッサがさ
らに処理能力を向上させることになれば、そのお蔭を被
ることになろう。
【0014】多くのRISCプロセッサにおいて、その
命令セット・アーキテクチャ(ISA)は、単一命令多
数データ(SIMD)型命令を含む。これらの命令によ
って、あるベクトルデータの多数要素であって、別のベ
クトルの対応要素を含む、そのようなベクトルデータの
多数要素に対して平行演算を実行することが可能にな
る。この型のベクトル演算は、画像処理のような多くの
ディジタルアプリケーションに共通のものである。もう
一つの重要な領域として、データ暗号化系、および、解
読系の分野がある。情報のコード化は、インターネット
上における、安全な取引を確保するために、また、無線
通信装置のために、重要である。
【0015】従って、RISCアーキテクチャの性能を
さらに高めることが好ましい。RISCプロセッサ・コ
アの性能を改善し、それによって、さらに強力なマルチ
メディアプリケーションや、次世代一般製品の求める計
算能力需要を満たすことが好ましい。必要なのは、ベク
トル化処理命令のためのISAの強化である。さらに、
ベクトル化データ処理の領域において、RISC準拠プ
ロセッサに対する改善されたマイクロアーキテクチャを
供給することが好ましい。
【0016】
【課題を解決するための手段】第1の汎用レジスタから
第2の汎用レジスタにビットを転送するための方法は、
第3の汎用レジスタの内容の上に転送の基礎を置くこと
を含む。第1の汎用レジスタ内の各ビットは、もし第3
の汎用レジスタ内で対応する位置に置かれたビットが第
1の論理状態にある場合、第2の汎用レジスタ内の同じ
ビット位置にコピーされる。
【0017】また、マシンレベルの単一命令を受け取る
ステップと、この単一命令をデコードするステップとか
らなり、前記デコードステップに応じて、(i)第1の
汎用レジスタを読み出して、第1のデータを生成するス
テップ、(ii)第2の汎用レジスタを読み出して、第2
のデータを生成するステップ、および(iii)前記第2
のデータに基づいて前記第1のデータからデータフィー
ルドを読み出し、かつ、前記第2のデータに基づいてそ
れらのデータフィールドの順序を配置ないし配列するこ
とによって、第3のデータを生成するステップ、を含む
データの配列換え方法が開示されている。
【0018】本発明の上記、並びに、その他の利点は、
図に示す、また、下記に論ずる各種実施の態様の説明を
参照することによってさらに十分な理解が可能である。
【0019】
【発明の実施の形態】RISCアーキテクチャにおいて
は、その操作がレジスタ対レジスタ方式であることが特
徴である。データ・ソースはレジスタであり、データ・
ディスティネーションはレジスタである。従って、レジ
スタファイルは、通常、中央計算装置によって実行され
る各種整数演算用の汎用レジスタのプールとして設けら
れる。本発明によれば、レジスタファイルを含む汎用レ
ジスタが、下記に開示・説明される各種ベクトル化演算
のための、データ・ソースとデータ・ディスティネーシ
ョンとなる。この事実を強調するために、図1に、N個
の汎用レジスタR0−Rn-1から成るレジスタファイル1
02を示す。各レジスタは、長さが60ビットである。
【0020】本発明の一局面は、ベクトル化データの乗
算演算関連領域における改善を含む。図1は、本発明に
よる、乗算装置100の模式図を示す。本来複雑な回路
の図示を簡単化するために、乗算装置の主要機能ブロッ
クのみを強調して示してある。関連技術に通常の技能を
持つ当業者であれば、もし本発明の議論に密接に関係す
るならば、各種制御信号や、その他の支援論理も含まれ
ることが了解されるであろう。
【0021】乗算装置100は、3段パイプライン処理
装置である。各段は、他の段と、パイプライン・ラッチ
P1、P2およびP3によって分離されている。通常、
パイプライン・ラッチは、一連のフリップフロップを含
む。パイプライン・ラッチは、前段からのデータを、ク
ロックサイクルの間、一時的に保持する。これは、ある
段から次段へのデータの流れを同期化するのに役立つ。
さらに、パイプライン・ラッチは、各段間のデータを隔
離(アイソレート)するのにも役立つ。これは重要であ
る。なぜなら、パイプライン処理の利点は、各種命令
が、パイプラインの各段で実行可能であるということだ
からである。
【0022】乗算装置100は、オペランドA、Bおよ
びCを介して入力および出力データを供給する。各オペ
ランドは、64ビット・バスである。各64ビット・バ
スは、論理(図示せず)を介して、レジスタファイル1
02の汎用レジスタの内の一つに結合する。これによっ
て、乗算装置とレジスタファイルとの間にデータ通信が
確立する。通常、通信は、プロセッサ操作の命令デコー
ド相に行われる。
【0023】図1に見られるように、オペランドA、B
および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]である。
【0024】同様に、src2の64ビットラインは、
下記のようにグループ分けされる、すなわち、src2
[63:48], src2[47:32], src
2[31:16]、および、src2[15:0]であ
る。
【0025】本出願の目的のために、「小エンディアン
(末尾)」ビット、バイト(8ビット)、および、ワー
ド(16ビット)の順序が用いられる。この慣用法によ
れば、高次の要素であればあるほど、大きい数のビット
位置に格納される。また別の慣用法として、「大エンデ
ィアン(末尾)」法があるが、この場合、高次の要素で
あればあるほど、小さな数のビット位置に格納される。
【0026】図1の説明を続けると、セレクタ回路11
0は、4対の出力ライン、x3/y3,x2/y2,x1
1、および、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段から分離する。
【0027】2段目において、4対の合計・桁上ライン
3/c3,s2/c2,s1/c1,s 0/c0は各々、16
ビット変換回路152、32ビット変換回路154、お
よび、64ビット変換回路156に結合されている。こ
れらの変換回路は、それぞれ、入力の33ビット合計・
桁上対を再編成し、それを、64ビット合計・桁上出力
対にまとめる。変換回路に応じて、その後の処理が実行
される。この変換の重要性については、命令セットの説
明のところで明らかにされる。
【0028】変換回路152は、16ビット整数乗算、
固定小数点乗算に使用される。その出力153は、64
ビット合計ラインおよびそれと対応する64ビット桁上
ラインを含む。回路152は、33ビット合計・桁上入
力を、64ビット合計・桁上出力対153に変換するた
めに2個の変換方式を提供する。整数乗算では、4個の
入力33ビット合計・桁上対において、最下位の16ビ
ットのみが、その64ビット合計・桁上出力対153、
すなわち、0−15ビットにパックされる。固定小数点
の場合、4個の33ビット合計・桁上対の上部のみが出
力153にパックされる。特に、ビット部分15−30
が転送される。
【0029】 整数変換は: s3[15:0] ⇒合計出力のビット位置[63:48] c3[15:0] ⇒桁上出力のビット位置[63:48] s2[15:0] ⇒合計出力のビット位置[47:32] c2[15:0] ⇒桁上出力のビット位置[47:32] s1[15:0] ⇒合計出力のビット位置[31:16] c1[15:0] ⇒桁上出力のビット位置[31:16] s0[15:0] ⇒合計出力のビット位置[15:0] c0[15:0] ⇒桁上出力のビット位置[15:0] 固定小数点変換: s3[30:15] ⇒合計出力のビット位置[63:48] c3[30:15] ⇒桁上出力のビット位置[63:48] s2[30:15] ⇒合計出力のビット位置[47:32] c2[30:15] ⇒桁上出力のビット位置[47:32] s1[30:15] ⇒合計出力のビット位置[31:16] c1[30:15] ⇒桁上出力のビット位置[31:16] s0[30:15] ⇒合計出力のビット位置[15:0] c0[30:15] ⇒桁上出力のビット位置[15:0] 好ましくは、変換回路152は、一組のビットレベル・
ミキサないしマルチプレクサを含む。もっとも別の構成
も可能である。
【0030】変換回路154は、全幅16ビット乗算に
使用される。その出力155は、64ビットの合計ライ
ンと64ビットの桁上ラインを含む。回路154は、3
3ビット合計・桁上入力の下位の2対、または、33ビ
ット合計・桁上入力の上位の2対の内のいずれかを、6
4ビット合計・桁上出力対に変換する。
【0031】従って、 s3[31:0] ⇒合計出力のビット位置[63:32] c3[31:0] ⇒桁上出力のビット位置[63:32] s2[31:0] ⇒合計出力のビット位置[31:0] c2[31:0] ⇒桁上出力のビット位置[31:0] または、 s1[31:0] ⇒合計出力のビット位置[63:32] c1[31:0] ⇒桁上出力のビット位置[63:32] s0[31:0] ⇒合計出力のビット位置[31:0] c0[31:0] ⇒桁上出力のビット位置[31:0] 好ましくは、変換回路154は、合計・桁上入力ライン
の上位または下位対を選択し、それらを結合して64ビ
ット出力155を形成する、一組のマルチプレクサより
なる。この回路の使用法は、命令セットに関連する説明
で明らかになる。合計・桁上入力ラインは、各々、33
ビットであることが見てとれる。最上位ビット(ビット
位置32)は、2段目における外部の符号ビットである
が、これは、変換操作の間に取り除かれる。MACF
X.WLおよびMACNFX.WL命令の場合、s0/
c0およびs1/c1のビット[30:0]が転送さ
れ、合計・桁上出力のビット[0]には「0」がロード
される。
【0032】変換回路156は、全幅32ビット乗算に
使用される。その出力は、4対の合計・桁上ライン、s
3/cx3,sx2/cx2,sx1/cx1,sx0/c
0を含み、各「ライン」は、64ビットライン幅であ
る。回路156は、入力する各合計・桁上対s3/c3
2/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段目における外部ビットだからである。
【0033】2段目は、セレクタ回路114を含む。回
路152の出力153は、セレクタ回路114の「a」
入力に入力する。同様に、回路154の出力155は、
セレクタ回路114の「b」入力に結合する。このセレ
クタ回路は、「a」入力か、「b」入力のいずれかに出
力し、出力ライン115に至る。出力115は、もう一
つのセレクタ回路116の「a」入力に入力する。
【0034】回路156の8個の出力、sxn/cx
nは、8:2圧縮回路140に入力する。この圧縮回路
は、1対の64ビット合計・桁上出力141を生成す
る。この出力は、セレクタ回路116の「b」入力に入
力する。セレクタ回路は、「a」入力か、「b」入力の
いずれかを選択し、その選択したラインを、3:2圧縮
回路160の入力に提供する。
【0035】直ちに分かるように、別法として、出力1
53と155は、セレクタ回路116に直接結合しても
よい。しかしながら、図1の構成の方が好ましい。なぜ
なら、セレクタ114の存在によって、このデータフロ
ーのタイミングと、圧縮器140を通過するデータフロ
ーのタイミングを同期させられるからである。有効に作
用すると、セレクタ114と116は協力して単一の
3:1セレクタとして作動し、三つのデータ変換経路の
内の一つからデータを選択する。
【0036】さらにもう一つのセレクタ112は、その
「a」入力に入力ラインsrc3を受け入れる。その
「b」入力は、定数値"0.5"に結合する。その「c」
入力は、定数値"0"に結合する。セレクタ112の選択
された入力は、圧縮回路161の第3の入力に結合す
る。圧縮回路160は、3個の入力を結合し、2個の6
4ビット出力161を生成する。これらの出力は、パイ
プライン・ラッチP3に結合され、2段目から3段目を
分離する。
【0037】3段目においては、パイプライン・ラッチ
P3の出力163は、2段目からの合計・桁上ラインを
含む。この合計・桁上ラインは、桁上・伝送加算回路1
70に入力する。加算回路170の出力は、64ビット
である。上半分、ビット[63:32]は、セレクタ回
路118の「a」入力に入力する。下半分、ビット[3
1:0]は、セレクタ回路119の「b」入力に入力す
る。飽和数値ジェネレータ182は、セレクタ118と
119の「a」入力に入力を与える。
【0038】パイプライン・ラッチP3の出力163は
さらに、オーバーフロー検出論理回路180,186に
入力する。出力163の低位ビット[31:0]は、検
出論理180に入力する。高位ビット[63:32]
は、検出論理回路186に入力する。各回路180,1
86の出力は、それぞれ、セレクタ回路118,119
のセレクタ入力に入力する。
【0039】検出論理回路180,186は、その入力
に基づいて、加算回路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ビットに基
づいてオーバーフローが起ころうとする時に肯定ないし
表明される。
【0040】図1に戻ると、もしもオーバーフロー条件
が、論理回路180によって予測されたとすると、セレ
クタ回路118は、「a」入力を、出力188に生成す
る。それ以外は、セレクタ回路118は、その出力に、
「b」入力を生成する。すぐにわかるように、出力18
8は、出力190の上位32ビットを含み、出力190
は、乗算装置100の出力を含む。同様に、論理回路1
86によってオーバーフロー条件が予測されると、セレ
クタ回路119は、「a」入力を、出力189に生成す
る。それ以外は、セレクタ回路119は、「b」入力
を、出力に生成する。出力189は、出力190の下位
32ビットを含む。
【0041】ここで図3を参照すると、乗算回路120
−126のさらなる詳細が、乗算器120を実例として
示されている。回路122−126も同様の構成を持つ
ものであることを了解されたい。回路120は、ウォー
レス加算ツリー310を含み、16x16ビット乗算を
実行する。セレクタ回路110からの16ビット入力ラ
インx0とy0は、このウォーレス加算ツリーによって結
合される。その出力は、33ビット桁上ライン304と
33ビット合計ライン302である。合計・桁上ライン
における33番目のビットは、符号ビットである。合計
・桁上ラインは、セレクタ回路330の「b」入力に結
合される。通常、セレクタ回路330は、乗算回路12
0のc0およびs0出力として、「b」入力を選択する。
【0042】本発明においては、各乗算回路120−1
26は、オーバーフロー検出論理130を含む。ウォー
レス・ツリー310に結合する、16ビット入力ライン
0および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だからである。
【0043】図4を参照すると、3段目の加算回路17
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に結合する。
【0044】全加算器は、共に、セレクタ回路420−
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に
入力する。
【0045】本発明のもう一つの実施の態様において
は、図1における、1段目の乗算回路120−126
は、また別の構成を持つ。図5は、回路120−126
の代替として示した、別の乗算回路120'−126'か
らなる例である。図5に示した構成は、下記に述べるあ
る種の命令を実行ないし具現化するのに使用される。
【0046】乗算器120'のさらに詳細を見ると、修
正型16x16ウォーレス・ツリー加算器530が示さ
れる。セレクタ回路110の出力ラインx0が、ウォー
レス・ツリー加算器の一方の入力となる。ウォーレス・
ツリー加算器に対するもう一方の入力は、セレクタ回路
520から来る。セレクタ回路520の「a」入力は、
セレクタ回路110の出力ラインy0と結合する。出力
ラインy0は反転され、1の相補的出力を生成し、これ
は、セレクタ回路520の「b」入力に結合する。反転
論理510は、16個の反転器で形成することも可能で
ある。セレクタ回路520と修正型ウォーレス・ツリー
は、制御信号CTL1を受け取る。
【0047】制御信号CTL1は、MMACNFX.W
L命令のデコードに応答して生成される。CTL1が肯
定ないし表明されると、セレクタ回路520は「b」入
力を生成し、これが、y0の1の相補値を、修正型ウォ
ーレス・ツリーに入力する。さらに、このウォーレス・
ツリーは、CTL1が肯定された場合、定数「1」が、
その入力の積に加算されるように修正されている。その
結果、これは、y0を反転し、次に、「1」を加えるの
と同じになる。この演算は、y0に対して、2の相補値
を生成する。従って、CTL1を肯定ないし表明するこ
とは、x0掛ける−y0の乗算となる。
【0048】図3に示した構成の場合のように、ウォー
レス・ツリー入力はさらにオーバーフロー検出論理13
0にも入力する。図3で述べたように、飽和値ジェネレ
ータ300は、セレクタ回路330の「a」入力に結合
する出力を生成する。検出論理130が、オーバーフロ
ーが起こると判断すると、セレクタ回路330は、その
「a」入力から飽和値を生成する。
【0049】ここで、図6を参照して、本発明のさらに
もう一つの実施の態様を説明する。図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の出力を受け取る。
【0050】全加算器621について言うと、y0を反
転し、桁上入力に"1"を供給することによる結合効果
は、y0に対する2の相補値の生成であり、−y0を生成
することになる。従って、全加算器621は、量(x0
−y0)を計算する。同様に、全加算器641に関して
は、x0を反転し、桁上入力に"1"を供給することによ
る結合効果は、x0に対する2の相補値の生成となる。
従って、全加算器621は、量(−x0+y0)を計算す
る。セレクタ回路の選択入力は、全加算器の桁上出力の
一つに結合し、もう一方の桁上出力は無視される。全加
算器の一つの適当な桁上出力を、セレクタ回路651の
セレクタに接続することによる効果として、減算装置6
01の出力に、(x0−y0)の絶対値が得られる。
【0051】図6は、8個の減算装置601−608を
示す。各装置は、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]に演算を施し、以下、これに準ずる。
【0052】セレクタ回路660は、乗算回路120−
126の合計・桁上出力を受け取る。さらに、セレクタ
回路660は、減算装置の出力を受け取る。従って、セ
レクタ回路660の出力は、パイプライン・ラッチP2
にたいし、8個の合計・桁上ラインs3/c3,s2
2,s1/c1,s0/c0、または、減算回路601−
608の8個の出力のいずれかを提示する。減算装置の
出力は8ビット結果であることに注意すべきである。一
方、合計・桁上ラインは、それぞれ33ビットである。
従って、減算装置の8ビット結果は、パイプライン・ラ
ッチP2にラッチする前に、ゼロ延長し、33ビットに
適合させる。
【0053】本発明のもう一つの局面は、ベクトル化デ
ータの各種変換演算に関連する命令領域の改善にある。
本発明に基づいて設けられるシャッフル論理700を、
図7に示す回路で模式的に例示する。1対の汎用レジス
タが、レジスタ・ファイル102のアクセスを受け、6
4ビットsrc1とsrc2入力ラインに入力する。こ
の入力ラインは、ビットシフト回路ないしシフタ702
に結合する。後述するように、ビットシフタ702は、
src1のビットレベルシフトを実行する。さらに、ビ
ットシフタ702は、左・右シフトと、1から7ビット
位置のシフトを、上記の方向のいずれかに向けて実行す
る。ビットシフタ702は、左または右シフトを選ぶた
めの左・右制御入力752を含む。もう一つの制御入力
754は、シフト量を特定する3ビットシフト入力であ
る。このシフト量は、シフト入力754に入力するsr
c2に含まれる。
【0054】ビットシフタ702の、2個の64ビット
出力は、右または左の、0−7ビット位置のいずれかに
シフトした後のsrc1とsrc2を表す。この出力
は、マトリックス704に結合する。src2から得ら
れた制御入力756が、マトリックス704に入力す
る。マトリックス704は、128(2x64)個の入
力ビットラインの内から任意の64個を選び、それらを
任意の順序で、その64個の出力ビットラインに供給す
る。この64本の出力ビットラインは各々セレクタ回路
740の「a」入力に入力する。
【0055】ソース・ラインsrc1の内の何本かは、
符号ジェネレータ708に入力する。符号ジェネレータ
の、64本の出力ビットラインは、それぞれ、セレクタ
回路740の「b」入力に入力する。マスクジェネレー
タ710は、src2におけるシフト量を受け取る。こ
のマスクジェネレータは、セレクタ回路740を操作す
る出力を供給する。符号ジェネレータ708とマスクジ
ェネレータ710の意味については、命令セットと関連
して後述する。
【0056】セレクタ回路740の出力は、ラッチ71
2にラッチされる。このラッチ712はさらにビットシ
フタ702の出力も受け取る。このラッチは、ビットシ
フタ702と、マトリックス704とから転送されるデ
ータの到着を同期化するのに役立つ。セレクタ回路74
0の出力は、セレクタ回路724の「a」入力と、オー
バーフロー検出回路720の入力に結合する。ビットシ
フタ702の出力はさらに、オーバーフロー検出回路7
20にも入力する。飽和値発生回路722は、入力を検
出回路720に供給し、セレクタ回路724の「b」入
力に入力する。セレクタ回路724は、検出回路720
の出力に応じて、「a」入力か、「b」入力かのいずれ
かを生成する。
【0057】ここで図8を参照すると、本発明による変
換操作用の、さらに別の論理800が示されているが、
これは、汎用レジスタファイル102から3個のソース
src1、src2およびsrc3をラッチするラッチ
870を含む。各src1とsrc2の64ビットライ
ンはそれぞれ、セレクタ回路801−863の、単一ビ
ット「a」および「b」入力に入力する。セレクタ回路
863は、このような2:1選択回路における、典型的
な設計例である。このセレクタ回路のセレクタ制御は、
arc2の64ビットラインによって供給される。この
セレクタ回路出力は結合して、64ビット出力880を
生成する。
【0058】本発明の回路を説明したところで、今度
は、前述の回路の動作を、命令セットとの関連で記述す
ることとする。命令によってサポートされる各種データ
フォーマットを表わすのに、下記の、通例の表記法を用
いることとする。ソース・レジスタはRmとRnで表わ
し、ディスティネーション・レジスタは、Rdで表わ
す。データサイズは64ビットで、データ順序法は、下
位のデータを、低い数字位置に置くこととする。
【0059】ビットレベル操作 Rx:Rx63,Rx62,...Rx1,Rx0,x=1,
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から成る、対応するマシンレベル命令に翻訳ない
し変換される。このマシンレベル命令はデコードされ、
各種制御信号を生成し、これが、各種論理を動かして、
デコード命令の実行を実現する。
【0060】命令に応じて、オペランド(単数または複
数)は、パックされた(ベクトル化)データを含む。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ビットに低位変換する。
【0061】図1に関して言うと、この命令のデコード
によって、適当な制御信号が生成され(図示せず)、こ
れが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に入る。
【0062】各合計・桁上対(例えば、s0/c0)は、
オペランドRmとRnの、それぞれの16x16の積
(例えば、Rmw0 x Rnw0)を含む。MMUL.W命
令の目的のためには、回路152を通過する経路のみが
関わりがある。ただし、2段目の合計・桁上対は、変換
回路152、154および156に入力する。各合計・
桁上ライン対の上位17ビットがマスク消去され、下位
16ビットがそのまま残る。ただし、この合計・桁上対
が33ビットラインであることは記憶される。このマス
ク消去ステップを、モジュロ代数による、32ビット結
果の、16ビット量への低位変換と言う。さらに、回路
152は、4対の16ビット結果を、64ビットの合計
・桁上ライン153にパックする。
【0063】ライン153は、セレクタ回路114とセ
レクタ回路116を介して、圧縮回路160に入力す
る。セレクタ回路112は操作されて、「0」定数値
(入力「c」)を生成し、「0」を圧縮回路160に入
力する。圧縮回路160に「0」を入力することは、そ
の入力117を直接出力161に通過させる作用を持
つ。従って、この圧縮回路は効果的にバイパスされるこ
とになり、通過装置のように振る舞い、その入力117
を、圧縮することなく直接P3に入力させる。
【0064】図1、図4に関して言うと、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のオペランドの固定小数点フォーマ
ットのせいで下記の違いが見られる。
【0065】16ビットx16ビット乗算は、32ビッ
ト量をもたらすので、固定小数点乗算の結果は、飽和化
を含む16ビットに低位変換される。この低位変換は、
32ビット結果の内、もっとも重要な16ビットのみを
保持することを含む。飽和化は、既知のステップであ
る。ある代数演算の結果が、あるデータタイプの保持し
得る量よりもさらに大きなビットを要求する場合、結果
は、そのデータタイプで表現し得る最大、または、最小
数にクランプされる。例えば、結果が、16ビットの符
号化整数に適合しなければならないのに、結果が20ビ
ット数である場合、結果の飽和化によって、結果の符号
に依存して、215−1(16ビット符号化整数の最大
値)、または、−2-15という数値(16ビット符号化
整数の最小値)が得られる。16ビット固定小数点数値
の場合、範囲は、−1から(1−2-1 5)までとなる。
【0066】従って、これら固定小数点倍数に対し、オ
ーバーフロー検出は、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におい
ても起こる。このようにして、各積項について、オーバ
ーフロー状態が検出され、処理される。
【0067】2段目において、s3/c3、s2/c2、s
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にラッチされる。
【0068】MMULFXRP.W命令に関しては、四
捨五入は、2段目で行われる。セレクタ回路112は、
「0.5」定数を生成する。この命令は16ビットデー
タの上で作動するのであるから、セレクタ112は、
「0.5」の4個のコピーを固定小数点フォーマットで
生成し、それらを64ビット出力113にパックする。
各定数は、圧縮回路160において、回路152由来の
対応する合計・桁上ラインs3/c3,s2/c2,s1
1およびs0/c0と結合させられる。これによって、
MMULFXRP.Wにおける丸めないし四捨五入操作
が実行される。処理はさらに進んで3段目に移る。
【0069】図1と図4について、P3ラッチからの出
力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ビットに低位変換する。
【0070】本発明に従って、32ビット乗算は、各3
2ビットオペランドを、2個の16ビット要素に分割し
て実行される。次に、乗算を、独立した16ビット演算
として実行し、中間結果を結合して64ビット結果を生
成することが可能である。これは、図1の既存の16ビ
ット乗算器120−126を再使用して、32ビット乗
算を実行することを可能にする。
【0071】ある32ビット数、Aは、下記の形式を持
つ: Ah x 216 + A1 ここにAhは、Aの最上数、A[31:16]であり、
1は、Aの低位数、A[15:0]である。
【0072】従って、A x Bは次のように表わされ
る: (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で表わされる。
【0073】図1に関して言うと、MMUL.L命令の
デコードによって、適当な制御信号が生成され(図示せ
ず)、これが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+Bh
1)における加算の交換性を認めたものである。
【0074】最初のパイプライン実行サイクルにおいて
は、src1およびsrc2各々の低位長ワードのみが
選択され、1段目の乗算回路に供給されることに注意さ
れたい。低位の長ワード照合は、レジスタ名の中の
「0」下付き表示によって示される(例えば、R
h0)。パイプライン実行の第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
3,s2/c2,s1/c1,s0/c0が、図3に関連し
て説明したのと同様のやり方によって生成される。
【0075】乗算回路120−126の出力はP2にラ
ッチされ入る。2段目に入った合計・桁上ラインは、下
記の積項を表わす。すなわち、 s3/c3=Ah x Bh,s2/c2=Ah x B1,s1
1=Bh x A1,s0/c0=A1 x B1 しかしながら、式3は、上記項の内のいくつかは、2の
乗数による掛け算となることを要求する。これは、変換
回路156によって実行される。MMUL.L命令の目
的のためには、回路156を通過する経路のみが関係あ
るだけである。もっとも2段目において合計・桁上対
は、変換回路152、154および156にも入力する
のである。
【0076】前述したように、入力合計・桁上対s3
3,s2/c2,s1/c1,s0/c0は、それぞれ、6
4ビット出力合計・桁上対sx3/cx3,sx2/c
2,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である。
【0077】従って、合計・桁上ラインsx3/cx3
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段目にクロックされる。
【0078】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にこのように構成可変性があるために、様
々な大きさのデータフォーマットに対して、各データサ
イズに合わせたロジックの設計・組み込みを要すること
なく、回路の再使用が可能となる。
【0079】最後に、MMUL.L命令に基づいて、合
計(すなわち、sum[31:0])の下位32ビット
が、加算回路170の出力に生成される。上位32ビッ
トのマスク消去によって、64ビット合計のモジュロ低
位変換が行われ、32ビット量が得られる。
【0080】高位の、長ワードRm1とRn1は、同時
に、同様に処理されるが、1サイクル遅れることを想起
されたい。第4サイクルで処理が3段目に達した時、6
4ビット結果(Rml x Rnl)が、加算回路170に
よって生成される。この合計は、32ビット結果に低位
変換され、第3サイクルの32ビット結果(Rm0 xR
0)と結合され、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に関して前述したのと同
様にして処理されるが、ただし、オペランドの固定小数
点フォーマットのせいで下記の違いが見られる。
【0081】32ビットx32ビット乗算は、64ビッ
ト量をもたらすので、各乗算の結果は、飽和化を含む3
2ビットに低位変換される。この低位変換は、64ビッ
ト結果の内、もっとも重要な32ビットのみを保持する
ことを含む。
【0082】MMUL.Lの場合と同様、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段目
に進む。
【0083】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に入力する。
【0084】変換回路154は、MMULLO.WLと
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に入力させる。
【0085】3段目では、合計・桁上ライン163は、
加算回路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
Rnw0(MMACFX.WL) Rd':RdL1−Rmw1 x Rnw1,RdL0−Rmw0
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
w1 x Rnw1を表わすs1/c1と、積Rmw0 x Rn
w0を表わすs0/c0とを含む。
【0086】セレクタ回路112は、src3ラインで
ある「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だけ左にシフトさせなければ
ならないことに注意されたい。
【0087】図1、図4に関して言うと、P3の出力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)を出力する。
【0088】MMACNFX.WLの場合、図5に模式
的に図示した、乗算装置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)の場合、必要でれば、飽和化を実行す
る。
【0089】図7を参照すると、論理シフト命令、MM
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ビット(バイトレベ
ル)シフトの数を特定する。
【0090】このような、ビットレベルシフトの後に、
バイトレベルシフトが続くという2相配置によって、1
6ビットシフトと、32ビットシフトの両方を受け入れ
ることが可能となる。例えば、21ビット位置のシフト
を考えてみる。入力src2は、0101012を含
み、これは、10を底とする21である。従って、ビッ
トシフタ702は、1012ビット位置をシフトする、
すなわち、5のシフトを実行する。マトリックス704
がさらに追加の0102バイトレベルのシフト、すなわ
ち、合計21ビット位置のシフトについて、16ビット
位置のシフトを実行する。マトリックス704の出力
は、セレクタ回路740の「a」入力に入力する。セレ
クタ回路740の「b」入力は、符号ジェネレータ70
8からの出力を受け取る。これらのセレクタは、マスク
ジェネレータ710からの出力によって制御される。
【0091】ここで、符号ジェネレータ708とマスク
ジェネレータ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は、隣接バイトから「あふれ
出た」ビットを受け取ることになる。
【0092】本発明によれば、マスクジェネレータ71
0が、(3)に示すマスクパターンを生成し、これが、
セレクタ回路740を制御する。さらに、本発明によれ
ば、符号ジェネレータ708が、その64ビットライン
にゼロを出力し、すなわち、セレクタ回路740の各
「b」入力にゼロを入力する。従って、マスクパターン
において「1」が生じると、セレクタ回路は、「0」の
「b」入力を生成する。マスクパターンにおいて「0」
が生じると、セレクタ回路は、シフトレジスタ内容であ
る、「a」入力を生成する。セレクタ回路740の出力
におけるビットパターン(例えば、図9のステップ4に
図示)は、与えられたデータフォーマット、すなわち、
16ビット、32ビット等々における適正にシフトされ
た要素を表わす。マスクジェネレータ710と符号ジェ
ネレータ708とは協働して、隣接要素からの「あふれ
出し」ビットを効果的にマスク消去する。
【0093】命令MMSHLLD.W、MMSHLR
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」で塞がれる。
【0094】ここで、符号化シフト命令MSHARD.
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が正数であることを示す。
【0095】MSHARD.WとMSHARD.Lに関
しては、マスクジェネレータ710は、図9で前述した
のと同様のやり方で作動し、同じビットパターンを出力
する。図10に見られるように、符号ジェネレータ出力
(4)は、B2とB0の各々に対応して、8個の「1」
から成るパターンと、B1に対応した「0」から成るパ
ターンとなる。すぐわかるように、この符号パターン
を、セレクタ740の「b」入力に入力し、かつ、各セ
レクタをマスクパターンに従って作動させることによっ
て、B2、B1およびB0について適正にシフトした出
力が得られるばかりでなく、適正な符号延長も得られ
る。
【0096】図7を参照すると、ビットsrc163、s
rc147、src131、およびsrc115が、符号ジェ
ネレータ708に入力する。これらは、16ビットデー
タフォーマット用の符号ビットである。32ビットデー
タフォーマットでは、符号ビットは、src163とsr
c131である。符号ジェネレータは、これらの符号ビッ
トに応じて、「1」または「0」の信号から成るパター
ンを出力する。パターンの長さは、デコードしたMSH
ARD.W(16ビット)、または、MSHARD.L
(32ビット)命令に対応する制御信号によって定めら
れる。
【0097】MSHALDS.WとMSHALDS.L
に関連して図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,Rmb2,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ビットフィールドが、ディ
スティネーションないし行先(転送先)において複数回
複製されていることを例示するためのものである。
【0098】図7を参照すると、ビットシフタ702
は、MPERM.Wに関与せず、従って、src1とs
rc2は、そのままビットシフタを通過して、マトリッ
クス704に入る。src2のid(識別用)ビット
は、マトリックス704の制御入力756に入力する。
MPERM命令のデコードに応じて生成される制御信号
がマトリックス704に入力する。このidビットに基
づいて、マトリックス704は、その出力において、特
定された入れ替えないし並べ替えを実行する。
【0099】図11は、MPERMで見られる選択を示
す。入力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の
各ビットは、セレクタ回路を制御する。
【0100】動作時には、各セレクタ回路801−86
3は、もしもsrc2の対応ビットが、すなわち、ビッ
ト位置nが、第1論理状態にある場合、「a」入力、す
なわち、src1nを生成する。同様に、もしもsrc
2のビット位置nのビットが第2論理状態にある場合、
入力「b」、すなわち、src3nが生成される。セレ
クタ回路801−863の出力は結合されて、64ビッ
ト出力880を形成する。
【0101】従って、src1とsrc3からのビット
は、src2の対応位置ビットの論理状態に応じて、条
件付きでコピーされる。出力880は、ディスティネー
ションレジスタRdに戻される。従って、これは、マス
クレジスタRnの内容に基づいて、ソースレジスタRm
から、ディスティネーションレジスタRdへ、条件付で
ビットを移動させる命令を与えるという効果を持つ。MSAD この機能は、RmとRnに含まれる8バイトに対して差
の合計演算を実行する。結果は、加算されてRdに入
る。この操作は、下記によって表わされる。
【0102】 図6を参照すると、オペランドRmとRnは、それぞ
れ、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
ビットデータ要素が生成される。
【0103】各8ビットライン対x/yは、減算装置6
01−608の内の一つに入力する。図6に関連して前
述したように、各減算装置は、入力間の差の絶対値を生
成する。回路120−126の乗算結果ではなくて、減
算装置601−608の出力の方が、セレクタ回路66
0によって選択され、そしてP2にラッチされ、2段目
の処理を受ける。
【0104】図1を参照すると、減算装置の出力は、変
換回路152によってパックされて、1対の64ビット
の合計・桁上ライン153に入る。セレクタ回路114
と116は、ライン153を圧縮回路160に入力させ
る。MSAD命令の場合、オペランドRdは、src3
に結合し、これはセレクタ回路112によって抽出され
て、圧縮回路160に入力される。圧縮回路は、それら
の入力を結合して、出力161を生成し、これが、P3
ラッチを介して3段目に供給される。
【0105】3段目において、加算回路170が最終合
計を生成する。その32ビット出力は、セレクタ回路1
18と119によって結合され、所望の、Rdと結合し
た、64ビットの、絶対値差出力の合計を生成する。図
4を参照すると、加算回路170は、MSAD命令に対
応する制御信号によって、単一の4段桁上転送加算器と
して作動するように構成される。従って、セレクタ回路
420−424は、「a」入力を生成するように制御さ
れる。これによって、各全加算器400−402の桁上
値は、後続の加算器に転送される。その結果、入力合計
・桁上ライン163の64ビット加算が実行される。
【0106】
【発明の効果】本発明によれば、たとえば以下の如き優
れた作用効果が得られる。
【0107】(1)RISC準拠プロセッサに対するア
ーキテクチャの性能をさらに高めることができる。
【0108】(2)RISCプロセッサ・コアの性能を
改善することができる。
【0109】(3)マルチメディアプリケーションの強
化や、次世代一般製品の計算能力の向上を図ることがで
きる。
【図面の簡単な説明】
【図1】図1は、本発明の、ある種のマルチメディア命
令に関連する、ベクトル化乗算装置を示す。
【図2】図2は、図1に示したオーバーフロー検出論理
のさらに詳細を示したものである。
【図3】図3は、図1の乗算装置に示した乗算回路のさ
らに詳細を示したものである。
【図4】図4は、図1に示した加算回路の模式図であ
る。
【図5】図5は、本発明のある種のマルチメディア命令
に関連して図1で示したマルチプレクサ回路の他の実施
の形態である。
【図6】図6は、本発明のある種のマルチメディア命令
に関連して図1で示した乗算装置にさらに付加される論
理を示す。
【図7】図7は、本発明のある種のマルチメディア命令
に関連するベクトル変換装置を示す。
【図8】図8は、本発明のある種のマルチメディア命令
に関連するビット操作回路である。
【図9】図9は、本発明のある種のマルチメディア命令
実行時における、図8に参照される操作を示す。
【図10】図10は、本発明のある種のマルチメディア
命令実行時における、図8に参照される操作を示す。
【図11】図11は、本発明のある種のマルチメディア
命令に関連する、図8のマトリックスに使用される論理
を示す。
【符号の説明】
100…乗算装置 110、112、114、116、118、119…セ
レクタ回路 P1、P2、P3…パイプライン・ラッチ src1、src2、src3…ソースライン 120−126…乗算回路 152、154、156…変換回路 160…圧縮回路 170…加算回路 180、186…オーバーフロー検出論理回路 400−403…全加算器 420−424…セレクタ回路 621、641…全加算器
───────────────────────────────────────────────────── フロントページの続き (51)Int.Cl.7 識別記号 FI テーマコート゛(参考)

Claims (20)

    【特許請求の範囲】
  1. 【請求項1】 コンピュータ処理コアにおいて、データ
    ソースからデータディスティネーションまで条件付でL
    ビットデータを移動する方法であって、 (i)Lビットのビットパターンを提供するステップ、
    および、 (ii)第1論理状態にある前記ビットパターンの各ビ
    ットについて、データソースにおいて対応位置にあるビ
    ットを、データディスティネーションにおいて対応的に
    位置付けられるビット位置に転送するステップ、 の諸ステップを含むデータ移動方法。
  2. 【請求項2】 請求項1の方法であって、さらに、 複数の汎用レジスタを含むレジスタファイルを供給する
    こと、 第1汎用レジスタを選び、前記ビットパターンをその中
    にロードすること、 第2汎用レジスタを選び、前記データをその中にロード
    すること、および、 第3汎用レジスタをディスティネーションとして選ぶこ
    と、を含み、 前記転送ステップが、前記第2汎用レジスタのビット
    を、前記第3汎用レジスタのビット位置に書き込むこと
    を含み、 前記第1レジスタの対応位置のビットが第1論理状態に
    あるとき、前記第2レジスタのビット位置のみを前記第
    3レジスタの対応位置に書き込む、 ことを特徴とする方法。
  3. 【請求項3】 請求項2の方法であって、前記第1論理
    状態が論理「1」であることを特徴とする方法。
  4. 【請求項4】 請求項2の方法であって、レジスタファ
    イル中のレジスタがLビットレジスタであることを特徴
    とする方法。
  5. 【請求項5】 汎用レジスタファイルを有するRISC
    準拠コンピュータ処理コアにおいて、2個のレジスタ間
    でデータを移動させる方法であって、 単一のマシンレベル命令を受け取るステップ、 前記単一命令をデコードするステップであって、このデ
    コードに応じて、 レジスタファイルから第1および第2レジスタにアクセ
    スするステップ、および、 出力ビットパターンを生成するステップであって、第1
    論理状態にある前記第2レジスタの各ビットについて、
    前記第1レジスタから対応位置ビットを生成するステッ
    プ、 の諸ステップを含むデータ移動方法。
  6. 【請求項6】 請求項5の方法であって、さらに、前記
    単一命令のデコードに応じて、レジスタファイルから第
    3レジスタにアクセスするステップを含み、前記第1レ
    ジスタの対応位置ビットが、前記第3レジスタの対応ビ
    ット位置にコピーされることを特徴とする方法。
  7. 【請求項7】 請求項5の方法であって、さらに、前記
    単一命令のデコードに応じて、レジスタファイルから第
    3レジスタにアクセスするステップを含み、前記出力ビ
    ットパターンを生成するステップが、第2論理状態にあ
    る前記第2レジスタの各ビットについて、前記第3レジ
    スタから対応位置ビットを生成することを含むことを特
    徴とする方法。
  8. 【請求項8】 請求項7の方法であって、さらに、前記
    単一命令のデコードに応じて、前記出力ビットパターン
    を、前記第3レジスタに格納することを含む方法。
  9. 【請求項9】 Lビットの汎用レジスタから成るレジス
    タファイルを有する演算処理コアにおいて、条件付転送
    論理であって、 第1汎用レジスタとデータ通信する第1組のL個の入力
    ライン、 第2汎用レジスタとデータ通信する第2組のL個の入力
    ライン、 第3汎用レジスタとデータ通信する第3組のL個の入力
    ライン、 L個のセレクタ回路であって、各セレクタ回路が、第1
    入力と第2入力、選択制御入力、および、出力を備え、
    前記セレクタ回路は、その第1もしくは第2入力を、そ
    の選択入力の論理状態に応じて、その出力に供給するの
    に有効であるセレクタ回路、 を含み、 各第1入力ラインは、前記セレクタ回路の内の一つの第
    1入力に結合し、 各第3入力ラインは、前記セレクタ回路の内の一つの第
    2入力に結合し、 各第2入力ラインは、前記セレクタ回路の内の一つの選
    択入力に結合する、 ことを特徴とする条件付転送論理。
  10. 【請求項10】 請求項9の条件付転送論理であって、
    前記セレクタ回路の出力がグループ化されて、1個のL
    ビットデータを形成することを特徴とする条件付転送論
    理。
  11. 【請求項11】 演算装置において、データを配列換え
    する方法であって、マシンレベルの単一命令を受け取る
    ステップ、 前記単一命令をデコードするステップであって、このデ
    コードステップに応じて、 (i)第1汎用レジスタを読み出して、第1データを生
    成するステップ、 (ii) 第2汎用レジスタを読み出して、第2データ
    を生成するステップ、 (iii) 前記第2データに基づいて、前記第1デー
    タからデータフィールドを読み出し、さらに、その順序
    を前記第2データに基づいて配置することによって、第
    3データを生成するステップ、 の諸ステップを含むデータの配列換え方法。
  12. 【請求項12】 請求項11の方法であって、前記第2
    データは、各々第1データ内におけるデータフィールド
    を特定する、M個の識別子を含み、かつ、前記副ステッ
    プ(iii)が、前記第1データから同時にM個のデー
    タフィールドを選ぶことを含む、ことを特徴とする方
    法。
  13. 【請求項13】 請求項12の方法であって、前記M個
    の識別子はそれぞれ前記第1データにおける1個のデー
    タフィールドを特定し、それによって、特定された複数
    のデータフィールドが同時に選択される、ことを特徴と
    する方法。
  14. 【請求項14】 請求項11の方法であって、前記第2
    データがM個の識別子を含み、かつ、前記副ステップ
    (iii)が、前記第1データから読み出したデータフ
    ィールドを、前記M個の識別子の順序に対応する順序に
    配置することを含む、ことを特徴とする方法。
  15. 【請求項15】 請求項11の方法であって、前記第2
    データはM個の識別子を含み、かつ、前記副ステップ
    (iii)が、前記第1データから、各々M個の識別子
    の内の一つによって特定される、M個のデータフィール
    ドを同時に選択し、かつ、そのM個のデータフィールド
    を、前記M個の識別子の順序に対応する順序で結合する
    ことを含む、ことを特徴とする方法。
  16. 【請求項16】 請求項11の方法であって、前記第1
    データが2N個のデータフィールドを含み、かつ、前記
    第2データが、その各々がデータフィールドの内の一つ
    を特定する、複数のNビット識別子を含む、ことを特徴
    とする方法。
  17. 【請求項17】 請求項11の方法であって、さらに、
    前記単一命令のデコードに応じて、第3の汎用レジスタ
    にアクセスして、前記第3データをその中に格納する、
    ことを含む方法。
  18. 【請求項18】 汎用レジスタファイルを有するRIS
    C準拠コンピュータ処理コアにおいて、データをコピー
    する方法であって、 マシンレベルの単一命令を受け取るステップ、 前記単一命令をデコードするステップであって、この単
    一命令のデコードに応じて、 前記汎用レジスタファイルの第1および第2レジスタに
    アクセスするステップ、 前記第1レジスタからN個のデータ要素よりなるソース
    データを提供するステップ、 前記第2レジスタから制御データを提供するステップで
    あって、前記制御データはそれぞれN個のデータ要素の
    内の一つを特定するM個の識別子を含むステップ、およ
    び、 M要素出力データを生成するステップ、の諸ステップを
    含み、 前記M個の識別子の各々について、ソースデータから特
    定データ要素を選択し、それによってM個のデータ要素
    を生成し、かつ、 M要素出力データにおける前記選択されたデータ要素
    を、M識別子の順序に対応する順序に配置する、ことを
    特徴とするデータのコピー方法。
  19. 【請求項19】 請求項18の方法であって、前記M個
    の選択されたデータ要素が同時に選択されることを特徴
    とする方法。
  20. 【請求項20】 請求項18の方法であって、さらに、
    前記単一命令のデコードに応じて、前記汎用レジスタフ
    ァイルの第3レジスタにアクセスし、前記M要素出力デ
    ータをその中に格納することを含む方法。
JP2000279260A 1999-10-01 2000-09-14 データ移動方法および条件付転送論理ならびにデータの配列換え方法およびデータのコピー方法 Pending JP2001147799A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US41059999A 1999-10-01 1999-10-01
US09/410599 1999-10-01

Publications (1)

Publication Number Publication Date
JP2001147799A true JP2001147799A (ja) 2001-05-29

Family

ID=23625426

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2000279260A Pending JP2001147799A (ja) 1999-10-01 2000-09-14 データ移動方法および条件付転送論理ならびにデータの配列換え方法およびデータのコピー方法

Country Status (2)

Country Link
US (1) US20030172254A1 (ja)
JP (1) JP2001147799A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2010044242A1 (ja) * 2008-10-14 2010-04-22 国立大学法人奈良先端科学技術大学院大学 データ処理装置

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7620832B2 (en) * 2000-09-20 2009-11-17 Mips Technologies, Inc. Method and apparatus for masking a microprocessor execution signature
US7711763B2 (en) 2001-02-21 2010-05-04 Mips Technologies, Inc. Microprocessor instructions for performing polynomial arithmetic operations
US7181484B2 (en) * 2001-02-21 2007-02-20 Mips Technologies, Inc. Extended-precision accumulation of multiplier output
US7237097B2 (en) * 2001-02-21 2007-06-26 Mips Technologies, Inc. Partial bitwise permutations
US7162621B2 (en) 2001-02-21 2007-01-09 Mips Technologies, Inc. Virtual instruction expansion based on template and parameter selector information specifying sign-extension or concentration
US7318145B1 (en) 2001-06-01 2008-01-08 Mips Technologies, Inc. Random slip generator
US20060095485A1 (en) * 2004-10-30 2006-05-04 Moore George S System and method for permuting a vector
JP4234698B2 (ja) * 2005-06-20 2009-03-04 富士通株式会社 構造化文書処理システム
KR20070088190A (ko) * 2006-02-24 2007-08-29 삼성전자주식회사 멀티미디어 데이터 처리를 위한 서브워드 병렬 처리 방법
US20160179521A1 (en) * 2014-12-23 2016-06-23 Intel Corporation Method and apparatus for expanding a mask to a vector of mask values
US10162634B2 (en) * 2016-05-20 2018-12-25 International Business Machines Corporation Extendable conditional permute SIMD instructions
US10255462B2 (en) 2016-06-17 2019-04-09 Arm Limited Apparatus and method for obfuscating power consumption of a processor
US20220308873A1 (en) * 2021-03-27 2022-09-29 Intel Corporation Apparatuses, methods, and systems for instructions for downconverting a tile row and interleaving with a register

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2010044242A1 (ja) * 2008-10-14 2010-04-22 国立大学法人奈良先端科学技術大学院大学 データ処理装置
JP5279046B2 (ja) * 2008-10-14 2013-09-04 国立大学法人 奈良先端科学技術大学院大学 データ処理装置

Also Published As

Publication number Publication date
US20030172254A1 (en) 2003-09-11

Similar Documents

Publication Publication Date Title
JP2001142678A (ja) 処理コアの操作方法および乗算実行方法
JP2001147804A (ja) パッケージデータのシフト方法および処理コア
JP2001147798A (ja) データ乗算方法および計算装置
KR100329339B1 (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
JP4064989B2 (ja) パック・データの乗加算演算を実行する装置
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
US9485507B2 (en) Execution units for implementation of context adaptive binary arithmetic coding (CABAC)
JP3790619B2 (ja) 正値化処理及び飽和演算処理からなる丸め処理を好適に行うことができるプロセッサ
US5880979A (en) System for providing the absolute difference of unsigned values
US6820102B2 (en) DSP unit for multi-level global accumulation
JP2001147799A (ja) データ移動方法および条件付転送論理ならびにデータの配列換え方法およびデータのコピー方法
US5742529A (en) Method and an apparatus for providing the absolute difference of unsigned values
US20020021842A1 (en) Circuit and method for performing a two-dimensional transform during the processing of an image
Shahbahrami et al. Matrix register file and extended subwords: two techniques for embedded media processors
JP2002519957A (ja) 符号関数を処理する方法および装置
Furht Processor architectures for multimedia: a survey
US5907500A (en) Motion compensation adder for decoding/decompressing compressed moving pictures
KR100434391B1 (ko) 디에스피 프로세서 및 마이크로프로세서의 실시간영상데이터 처리를 위한 연산회로 및 그 연산방법
US6374280B1 (en) Computationally efficient inverse discrete cosine transform method and apparatus
TWI402771B (zh) 應用於多核心處理器之快速整數離散餘弦轉換方法
EP0928114B1 (en) Video data decoding apparatus