JP3983857B2 - ベクトルレジスタの複数バンクを用いた単一命令複数データ処理 - Google Patents

ベクトルレジスタの複数バンクを用いた単一命令複数データ処理 Download PDF

Info

Publication number
JP3983857B2
JP3983857B2 JP23766597A JP23766597A JP3983857B2 JP 3983857 B2 JP3983857 B2 JP 3983857B2 JP 23766597 A JP23766597 A JP 23766597A JP 23766597 A JP23766597 A JP 23766597A JP 3983857 B2 JP3983857 B2 JP 3983857B2
Authority
JP
Japan
Prior art keywords
register
vector
instruction
data
bank
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP23766597A
Other languages
English (en)
Other versions
JPH10116268A (ja
Inventor
ル・トロン・ングイェン
スンギュン・ピーター・ソン
モアタズ・エー・モハメド
ヒーオン・チュル・パク
ロニー・ソウ・ドン・ウォン
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.)
Samsung Electronics Co Ltd
Original Assignee
Samsung Electronics Co 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 Samsung Electronics Co Ltd filed Critical Samsung Electronics Co Ltd
Publication of JPH10116268A publication Critical patent/JPH10116268A/ja
Application granted granted Critical
Publication of JP3983857B2 publication Critical patent/JP3983857B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • 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/30025Format conversion instructions, e.g. Floating-Point to Integer, decimal conversion
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • G06F15/8053Vector processors
    • G06F15/8076Details on data register access
    • 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/30098Register arrangements
    • G06F9/30105Register structure
    • G06F9/30109Register structure having multiple operands in a single register
    • 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/30098Register arrangements
    • G06F9/30105Register structure
    • G06F9/30112Register structure comprising data of variable length
    • 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/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • 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/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/3013Organisation of register space, e.g. banked or distributed register file according to data content, e.g. floating-point registers, address registers
    • 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/30145Instruction analysis, e.g. decoding, instruction word fields
    • 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/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/3016Decoding the operand specifier, e.g. specifier format
    • G06F9/30167Decoding the operand specifier, e.g. specifier format of immediate specifier, e.g. constants
    • 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/30181Instruction operation extension or modification
    • G06F9/30189Instruction operation extension or modification according to execution mode, e.g. mode flag

Description

【0001】
【発明の属する技術分野】
本発明はディジタル信号プロセッサに係り、特にビデオ及びオーディオの符号化及び復号化のようなマルチメディア機能のために命令ごとに複数のデータエレメントを並列処理するプロセッサに関する。
【0002】
【従来の技術】
実時間ビデオ符号化及び復号化のようなマルチメディアアプリケーションのためのプログラマブルディジタル信号プロセッサDSPは、制限された時間内に処理されるべき多量のデータのために相当な処理力を必要とする。ディジタル信号プロセッサのための幾つかのアーキテクチャが知られている。大部分のマイクロプロセッサに用いられるように汎用アーキテクチャは典型的に実時間符号化または復号化するのに充分な演算力を有するDSPを提供するために高周波数を必要とする。これはDSPのコストを高くする。
【0003】
超長命令ワードVLIWプロセッサは比較的簡単な作業のように相違して行う多くの機能ユニットを有するDSPである。VLIW DSPのための単一命令は128バイトあるいはより長い長さを持つことができ、個別的な機能ユニットが並列に実行する個別的な部品を有する。VLIW DSPは多くの機能ユニットが並列に行うことができるので高い演算力を有する。尚、VLIW DSPはそれぞれの機能ユニットが比較的小さくて簡単なので、比較的低コストである。
【0004】
【発明が解決しようとする課題】
VLIW DSPの問題点は入力/出力制御の処理における非効率性、ホストコンピュータとの通信、及びVLIW DSPの機能ユニット上における並列実行に適しない他の機能である。しかも、VLIWソフトウェアは従来のソフトウェアとは異なり、プログラムツールとVLIWソフトウェアアーキテクチャに慣れているプログラマが足りないために開発し難い。
適正な価格、高い演算力、及び馴染みのプログラミング環境を提供するDSPがマルチメディアアプリケーションに要求される。
【0005】
【課題が解決するための手段】
本発明の特徴によれば、マルチメディアディジタル信号プロセッサDSPは、高い処理力を提供するためにベクトルデータ(即ち、オペランドごとに複数のデータエレメント)を操作するベクトルプロセッサを備える。前記プロセッサはRISC型命令語セットを有する単一命令複数データアーキテクチャを用いる。大多数のプログラマは馴染みの汎用プロセッサのプログラミング環境に慣れているために、ベクトルプロセッサのプログラミング環境に容易く適応することができる。
【0006】
DSPは汎用ベクトルレジスタセットを備える。各ベクトルレジスタは固定のサイズを有するが、使用者選択可能なサイズの個別的なデータエレメントに分割(partition)されている。従って、ベクトルレジスタに貯蔵されたデータエレメントの数はエレメントに対して選択されたサイズによる。例えば、32バイトレジスタは32個の8ビットデータエレメント、16個の16ビットデータエレメント、或いは8個の32ビットデータエレメントに分けられる。データサイズ及び類型の選択はベクトルレジスタと連関性のあるデータを処理する命令によってなされ、命令のための実行データ経路は命令によって指示されたデータサイズによる多数の並列演算を行う。
【0007】
ベクトルレジスタのための命令はオペランドとしてベクトルレジスタ或いはスカラレジスタを持つことができ、高い演算力のために並列のベクトルレジスタの複数データエレメントを操作する。本発明によるベクトルプロセッサのための例示的な命令は:コプロセッサインタフェース演算;流れ制御演算;ロード/貯蔵演算;及び論理/算術演算を含む。前記論理/算術演算は結果として現れるデータベクトルのデータエレメントを生成するために一つのベクトルレジスタからのデータエレメントを一つ以上の他のベクトルレジスタからの対応するデータエレメントと結合する演算を含む。他の論理/算術演算は一つ以上のベクトルレジスタからのいろんなデータエレメントを合成するか、或いはベクトルレジスタからのデータエレメントとスカラ量を合成する。
【0008】
ベクトルプロセッサアーキテクチャの拡張はそれぞれスカラデータエレメントを含むスカラレジスタを加える。スカラ及びベクトルレジスタの組合せはベクトルの各データエレメントをスカラ値と並列に結合する演算を含むように設定されたベクトルプロセッサの命令の拡張を容易にする。例えば、一つの命令はベクトルのデータエレメントにスカラ値を乗ずる。尚、スカラレジスタはベクトルレジスタから抽出されるか、或いはそれに貯蔵される単一データエレメントを貯蔵するための場所を提供する。また、前記スカラレジスタはベクトルプロセッサとスカラレジスタのみを提供するアーキテクチャを有するコプロセッサ間の情報の伝達、及びロード/貯蔵演算のための効率的なアドレスの計算が容易である。
【0009】
本発明の他の特徴によれば、ベクトルプロセッサのベクトルレジスタはバンクから構成されている。各バンクは“現在の(current)”バンクとして選択される一方、他のバンクは“代替(alternative)”バンクである。ベクトルプロセッサの制御レジスタにある“現在のバンク”ビットは現在のバンクを指す。ベクトルレジスタの識別に必要なビット数を減らすために、一部の命令はレジスタ番号のみを提供して現在のバンクからベクトルレジスタを識別する。ロード/貯蔵命令はある一つのバンクからベクトルレジスタを識別するための付随的なビットを有する。従って、ロード/貯蔵演算は現在のバンクにあるデータの操作の間代替バンクにデータをフェッチすることができる。これは画像処理及びグラフィックプロシージャのためのソフトウェアパイプラインを容易にし、論理/算術演算が代替レジスタバンクをアクセスするロード/貯蔵演算とは異なる順序で行われることができるため、データのフェッチ時にプロセッサ遅延を減少させる。他の命令において、代替バンクは現在のバンクからのベクトルレジスタと代替バンクからの対応するベクトルレジスタを含む二重サイズ(double-size)ベクトルレジスタの使用を可能にする。このような二重サイズレジスタは命令構文から識別されることができる。ベクトルプロセッサにある制御ビットはデフォルトベクトルサイズが一つ或いは2つのベクトルレジスタのうちいずれか一つに設定されることができる。また、代替バンクはシャフル(shuffle)、アンシャフル(unshuffle)、飽和(saturate)、2つの根元地と2つの目的地レジスタを有する条件付き移動(conditional moves)のような複雑な命令の構文において少数の明示的識別オペランドの使用を可能にする。
【0010】
また、ベクトルプロセッサはカッド(quad)、シャフル、アンシャフル、対方式最大及び交換(pair-wise maximum and exchange)、及び飽和のような新規命令を具現する。これら命令はビデオ符号化及び復号化のようなマルチメディア機能を共通とする演算を行い、他の命令語セットは同一機能の遂行時に必要とする2つ以上の命令に代える。従って、ベクトルプロセッサ命令語セットはマルチメディアアプリケーションでプログラムの効率性及び速度を向上させる。
【0011】
【発明の実施の形態】
以下、添付した図面に基づき本発明の望ましい実施形態をさらに詳しく説明する。
図1は本発明の実施形態によるマルチメディア信号プロセッサ(MSP)100のブロック図を示す。マルチメディアプロセッサ100は汎用プロセッサ110とベクトルプロセッサ120を含むプロセッシングコア105を備える。プロセッシングコア105はSRAM160,190、ROM170、及びキャッシュ制御部180を含むキャッシュサブシステム130を通してマルチメディアプロセッサ100の残り部分に接続される。キャッシュ制御部180は汎用プロセッサ110のために命令語キャッシュ162とデータキャッシュ164からSRAM160を構成することができ、ベクトルプロセッサ120のために命令語キャッシュ192とデータキャッシュ194からSRAM190を構成することができる。
【0012】
オンチップROM170はプロセッサ110のためにデータと命令語を含み、キャッシュから構成されることができる。例示的な実施形態において、ROM170は:リセット及び初期化プロシージャ;自己試験診断プロシージャ;インタラプト及び例外ハンドラ;サウンドブラストエミュレーションのためのサブルーチン;V.34モデム信号処理のためのサブルーチン;一般的な電話方式機能;1−D及び3−Dグラフィックスサブルーチンライブラリ;及びMPEG-1,MPEG-2,H.261,H.263,G.728及びG.723のようなオーディオ及びビデオ標準のためのサブルーチンライブラリを含む。
【0013】
キャッシュサブシステム130はプロセッサ110,120に接続されて2つのシステムバス140,150に立ち向かい、プロセッサ110,120のためのキャッシュ及びスイッチングステーション両方として動作し、デバイスバス140,150に結合している。システムバス150は高いクロック周波数で動作し、外部局部メモリのためのインタフェース、ホストコンピュータの局部バス、直接メモリアクセス、及び多様なアナログ/ディジタル及びディジタル/アナログ変換器をそれぞれ提供するメモリコントローラ158、局部バスインタフェース156、DMAコントローラ154、及びデバイスインタフェース152に接続される。バス140に接続されているものはシステムタイマ142、UART(ユニバーサル非同期受信器トランシーバ)144、ビットストリームプロセッサ146、及びインタラプトコントローラ148である。“マルチメディア信号プロセッサにおけるマルチプロセッサ演算”及び“ビデオデータを処理するための方法及び装置”という発明の名称を有する本発明に参照として一体化された特許出願は、プロセッサ110,120がキャッシュサブシステム130及びバス140,150をアクセスする例示的なデバイス及びキャッシュサブシステム130の動作をより詳しく説明する。
【0014】
プロセッサ110,120は個別的なプログラムスレッドを実行し、それらに割り当てられた特定作業のより効率的な実行のために構造的に異なる。プロセッサ110は主に実時間演算システムの実行のような制御機能及び多くのそれぞれの演算を必要としない類似機能のためのものである。従って、プロセッサ110は高度の演算力を必要とせず、従来の汎用プロセッサアーキテクチャを用いて具現されることができる。ベクトルプロセッサ120は大部分のマルチメディア処理において共通であるデータブロックに対する反復的な演算を含む数字クラッシング(number crushing)を行う。高度の演算力と比較的簡単なプログラミングのために、ベクトルプロセッサ120はSIMD(Single Instruction Multimedia Data)アーキテクチャを有し、例示的な実施形態において、ベクトルプロセッサ120の大部分の経路はベクトルデータ操作を支援するために288または576ビット幅をもつ。付随的に、ベクトルプロセッサ120のための命令語セットは特にマルチメディアの問題に適した命令語を含む。
【0015】
例示的な実施形態において、プロセッサ110は40MHzで動作する32ビットRISCプロセッサであり、ARM7標準によって定義されたように、レジスタセットを含むARM7プロセッサのアーキテクチャに合う。ARM7 RISCプロセッサのために設定されたアーキテクチャ及び命令語は“ARM7 DMデータシート”、文書番号:Advance RISC Machines Ltd.から入手できるARM DDI 0010Gに説明されている。前記ARM7 DMデータシートは以下その全文が本発明の参照として一体化されている。後述する第一実施例は例示的な実施例でARM7命令語の拡張を説明する。
【0016】
ベクトルプロセッサ120はベクトル及びスカラ量を両方とも操作する。例示的な実施形態において、ベクトルデータプロセッサ120は80MHzで動作するパイプラインされたRISCエンジンから構成される。ベクトルプロセッサ120のレジスタは32ビットスカラレジスタ、32ビット特殊目的レジスタ、288ビットベクトルレジスタの2つのバンク、及び二重サイズ(即ち、576ビット)の2つのベクトル累算レジスタを備える。後述する第三実施例はベクトルプロセッサ120の例示的な実施例のためのレジスタセットを説明する。例示的な実施例において、プロセッサ120は0から31までの範囲に至る5ビットレジスタ番号によって命令語から識別される。また、32ベクトルレジスタの2つのバンクからなる64個の288ビットベクトルレジスタが存在する。それぞれのベクトルレジスタは1ビットバンク番号(0または1)及び0から31までの範囲に至る5ビットベクトルレジスタ番号で識別されることができる。大部分の命令語はベクトルプロセッサ120の制御レジスタVCSRに貯蔵されたデフォルトバンクビットCBANKで指された現在のバンクにあるベクトルレジスタをアクセスする。2番目の制御ビットVEC4はデフォルトとしてレジスタ番号が各バンクからのレジスタを含む二重サイズベクトルレジスタを識別するかを指す。命令語の構文はスカラレジスタを識別するレジスタ番号からベクトルレジスタを識別するレジスタ番号を区別する。
【0017】
それぞれのベクトルレジスタはプログラム可能なサイズのデータエレメントに分割されることができる。表1は288ビットベクトルレジスタ内のデータエレメントを支援するデータ類型を示す。
【0018】
【表1】
Figure 0003983857
【0019】
後述する第四実施例は本発明の例示的な実施例で支援されるデータサイズと類型の詳細な説明を提供する。
【0020】
int9データ型の場合、9ビットバイトが288ビットベクトルレジスタに順次パック(pack)されるが、他のデータ型の場合には288ビットベクトルレジスタの毎9番目のビットが用いられない。288ビットベクトルレジスタは328ビット或いは9ビット整数データエレメント、16個の16ビット整数データエレメント、或いは8個の32ビット整数または浮動小数点エレメントを保有することができる。付随的に、2つのベクトルレジスタが二重サイズベクトルのデータエレメントに組み合わせられることができる。本発明の例示的な実施形態において、制御ビットVEC64を制御及び状態レジスタVCSRにセットすることにより二重サイズ(576ビット)がベクトルレジスタのデフォルトサイズであるモードVEC64に位置させる。
【0021】
また、マルチメディアプロセッサ100は両方のプロセッサ110,120にアクセスし得る32ビット拡張レジスタ115のセットを収容する。後述する第二実施例は本発明の例示的な実施例で拡張レジスタセット及びその機能を説明する。ベクトルプロセッサ120の拡張レジスタ及びスカラ及び特殊目的レジスタは幾つかの環境でプロセッサ110にアクセスことができる。2つの特殊“使用者”拡張レジスタは2つの読取ポートを有することにより、プロセッサ110,120がレジスタを同時に判読することができる。他の拡張レジスタは同時にアクセスされ得ない。
【0022】
ベクトルプロセッサ120はベクトルレジスタ120が実行中か或いはアイドルであるかを示す2つの選択的な状態VP_RUN及びVP_IDLEを有する。プロセッサ110は、ベクトルプロセッサ120が状態VP_IDLEにある時、ベクトルプロセッサ120のスカラ或いは特殊目的レジスタを読取或いは記録することができる。しかし、ベクトルプロセッサ120が状態VP_RUNにある間、ベクトルプロセッサ120のレジスタを読取或いは記録するプロセッサ110の結果は定義されていない。
【0023】
プロセッサ110のためのARM7命令語セットの拡張はベクトルプロセッサ120の拡張レジスタ及びスカラまたは特殊目的レジスタをアクセスする命令語を含む。命令語MFER及びMFEPは拡張レジスタ及びベクトルプロセッサ120のスカラ或いは特殊目的レジスタからプロセッサの汎用レジスタにそれぞれデータを移動させる。命令語MTER及びMTEPはそれぞれプロセッサ110の汎用レジスタから拡張レジスタ及びベクトルプロセッサ120のスカラまたは特殊目的レジスタへデータを移動させる。TESTSET命令語は拡張レジスタを判読し、全ての拡張レジスタのビット30を1にセットさせる。命令語TESTSETはプロセッサ100から出力された結果を判読(或いは使用)したプロセッサ120にシグナルするためにビット30をセットさせることにより、使用者/生産者同期化を容易にする。STARTVPとINTVPのための他の命令語はベクトルプロセッサ120の動作状態を制御する。
【0024】
プロセッサ110はベクトルプロセッサ120の動作を制御するためにマスタプロセッサとして動作する。プロセッサ110,120間の制御の非同期分割を使用することにより、プロセッサ110,120の同期化問題を簡単にする。プロセッサ110は、ベクトルプロセッサ120が状態VP_IDLEにある時にベクトルプロセッサ120のためのプログラムカウンタに命令語アドレスを記録することにより、ベクトルプロセッサ120を初期化する。次に、プロセッサ110はベクトルプロセッサ120を状態VP_RUNに変えるSTARTVP命令語を実行する。状態VP_RUNにおいて、ベクトルプロセッサ120はキャッシュサブシステム130を通して命令語をフェッチし、自分のプログラムの実行を続けながらプロセッサ110と並列にそのような命令語を実行する。開始すると、ベクトルプロセッサ120は例外に出会う時まで実行を続け、適当な条件が充足されると、VCJOIN或いはVCINT命令語を実行するか或いはプロセッサ120によってインタラプトされる。ベクトルプロセッサ120はベクトルプロセッサ120が状態VP_IDLEに再進入する時にその結果を拡張レジスタに記録し、その結果をプロセッサ110,120の共有アドレス空間に記録するか、或いはその結果をプロセッサ110のアクセスするスカラ或いは特殊目的レジスタに位置させることにより、プログラム実行の結果をプロセッサ120に渡す。
【0025】
ベクトルプロセッサ120は自分の例外を処理しない。例外を誘発する命令語を実行すると、ベクトルプロセッサ120は状態VP_IDLEに進入し、直接ラインを通してインタラプト要求をプロセッサ110にシグナルする。ベクトルプロセッサ120はプロセッサ110が別のSTARTVP命令語を実行する時まで状態VP_IDLEに残る。プロセッサ110は例外の性質を判断するためにベクトルプロセッサ120のレジスタVISRCを判読し、ベクトルプロセッサ120を再び初期化させることによりできる限り例外を処理した後、必要なら例外を再び開始するためにベクトルプロセッサ120をダイレクトする責任がある。
【0026】
プロセッサ110によって実行されたINTVP命令語はベクトルプロセッサ120をアイドル状態VP_IDLEに進入させる。例えば、命令語INTVPはビデオ復号化のような一つの作業からサウンドカードエミュレーションのような他の作業へベクトルプロセッサを転換させるマルチタスクシステムに用いられることができる。
【0027】
ベクトルプロセッサ命令語VCINT及びVCJOINは、命令語によって指された条件が充足されると、ベクトルプロセッサ120による実行を中止し、ベクトルプロセッサ120を状態VP_IDLEにし、このような要求がマスクされる時までインタラプト要求をプロセッサ110に発行する流れ制御命令語である。ベクトルプロセッサ120のプログラムカウンタ(特殊目的レジスタ)はVCINTまたはVCJOIN命令語以後の命令語アドレスを指す。プロセッサ110はベクトルプロセッサ120のインタラプトソースレジスタVISRCを点検してVCINT或いはVCJOIN命令語がインタラプト要求を誘発したかを決定する。ベクトルプロセッサ120がより大きいデータバスを有し、そのレジスタを貯蔵及び復旧するのにより効率的なので、ベクトルプロセッサ120によって実行されたソフトウェアは構文転換中にレジスタを貯蔵及び復旧しなければならない。前記一体になった“マイクロプロセッサにおける効率的な構文貯蔵及び復旧”という発明の名称を有する特許出願は構文転換のための例示的なシステムを説明する。
【0028】
図2は図1のベクトルプロセッサ120の例示的な実施形態の主要機能ブロック図である。ベクトルプロセッサ120は命令語フェッチ部(IFU)210、デコーダ220、スケジューラ230、実行データ経路240、及びロード/貯蔵部(LSU)250を備える。IFU210は命令語をフェッチし、分岐のような流れ制御命令語を処理する。命令語デコーダ220はIFU210から到達順序によってサイクルごとに一つの命令語を復号化し、命令語から復号化されたフィールド値をスケジューラ230のFIFOに記録する。スケジューラ230は演算の実行ステージに必要であれば、実行制御レジスタに発行されたフィールド値を選択する。発行選択は実行データ経路240またはロード/貯蔵部250のようなプロセッシング資源の依存性と利用可能性による。実行データ経路240はベクトルまたはスカラデータを操作する論理/算術命令語を実行する。ロード/貯蔵部250はベクトルプロセッサ120のアドレス空間をアクセスするロード/貯蔵命令語を実行する。
【0029】
図3は主命令語バッファ310と補助命令語バッファ312に分けられる命令語バッファを含むIFU210の実施形態に対するブロック図を示す。主バッファ310は現在のプログラムカウントに対応する命令語を含む8つの連続する命令語を収容する。補助命令語バッファ312はバッファ310の命令語に相次ぐ8つの命令語を収容する。また、IFU210はバッファ310,312の他の流れ制御命令語の目標を含む8つの連続する命令語を収容する分岐目標バッファ314を含む。例示的な実施形態において、ベクトルプロセッサ120は各命令語が32ビット長さのRISC型命令語セットを使用し、バッファ310,312,及び314は8×32ビットバッファであって、256ビット命令語バスを通じてキャッシュサブシステム130に接続される。IFU210はキャッシュサブシステム130から任意のバッファ310,312,または314へ単一クロックサイクルで8つの命令語をロードすることができる。レジスタ340,342,及び344はそれぞれバッファ310,312,及び314にロードされた命令語に対するベースアドレスを指す。
【0030】
マルチプレクサ332は主命令語バッファ310から現在の命令語を選択する。もし現在の命令語が流れ制御命令語でなく、命令語レジスタ330に貯蔵された命令語が実行のデコードステージに進行すると、現在の命令語は命令語レジスタ330に貯蔵され、プログラムカウントは増加する。プログラムカウントを増加させてバッファ310の最終命令語を選択した後、次のセットの8命令語がバッファ310にロードされる。もしバッファ312が所定の8命令語を含むと、バッファ312及びレジスタ342の内容は直ちにバッファ310及びレジスタ340に移動され、8つ以上の命令語がキャッシュシステム130から補助命令語バッファ312にプリフェッチされる。加算器350はレジスタ342にあるベースアドレスから次の命令語セットのアドレスとマルチプレクサ352によって選択されたオフセットを決定する。加算器350から結果として現れるアドレスはレジスタ342からレジスタ340に移動するか或いは移動した後レジスタ342に貯蔵される。また、算出されたアドレスは8つの命令語のための要求でキャッシュシステム130に伝達される。もしキャッシュ制御システム130に対する以前の呼出がバッファ310が要求したバッファ312へ次の8命令語を提供しなかったら、以前に要求された命令語はキャッシュサブシステム130から受信される時にバッファ310に直ちに貯蔵される。
【0031】
もし現在の命令語が流れ制御命令語であれば、IFU210は流れ制御命令語に対する条件を評価し、流れ制御命令語の後続のプログラムカウントを更新することにより命令語を処理する。条件を変えることのできる以前命令語が完了していないために、もし条件が決定されなければ、IFU210は保留される。もし分岐が取られなければ、プログラムカウンタは増加し、次の命令語が上述したように選択される。もし分岐が取られ且つ分岐目標バッファ314が分岐の目標を含んでいれば、バッファ314及びレジスタ344の内容がバッファ310及びレジスタ340に移動され、IFU210はキャッシュサブシステム130から命令語を待機せず、命令語をデコーダ220に引き続き提供することができる。
【0032】
分岐目標バッファ314に対する命令語をプリフェッチするために、スキャナ320はバッファ310及び312を走査して現在のプログラムカウントの後にくる次の流れ制御命令語を探す。もし流れ制御命令語がバッファ310または312から発見されると、スキャナ320は命令語を収容しているバッファ310または312のベースアドレスから流れ制御命令語の目標アドレスを含む8つの命令語の整列されたセットでオフセットを決定する。マルチプレクサ352及び354は流れ制御命令語からのオフセットとレジスタ340または342からのベースアドレスをバッファ314に対して新しいベースアドレスを生成する加算器350へ供給する。新しいベースアドレスは次に分岐目標バッファ314に対して8つの命令語を供給するキャッシュサブシステム130へ伝達される。
【0033】
“減少及び条件分岐”命令語VD1CBR,VD2CBR,VD3CBR及び“変更制御レジスタ”命令語VCHGCRのような流れ制御命令語を取り扱うにおいて、IFU210はプログラムカウンタの以外にレジスタ値を変えることができる。IFU210が流れ制御命令語でない命令語を発見すると、該当命令語は命令語レジスタ330からデコーダ220へ伝達する。
【0034】
デコーダ220は図4に示すようにスケジューラ230のFIFOバッファ410がフィールドに制御値を記録することにより命令語を復号化する。FIFOバッファ410は4行のフリップフロップを収容することができるが、これらそれぞれは一つの命令語の実行を制御するための5フィールドの情報を収容することができる。行0乃至3は一番古いものから一番最近の命令語に対する情報をそれぞれ保有し、FIFOバッファ410の情報は命令語が完了されるにつれて古い情報が除去される時により低い行にシフトダウンする。スケジューラ230は実行レジスタ421乃至427を収容している制御パイプ420にロードされる命令語の必要なフィールドを選択することにより、実行ステージに命令語を発行する。大部分の命令語は順序からずれた発行及び実行でスケジュールされることができる。特に、ロード/貯蔵演算と論理/算術演算の順序はロード/貯蔵演算及び論理/算術演算間にオペランド従属性が存在しない限り任意的である。FIFOバッファ410のフィールド値の比較は任意のオペランド従属性が存在するかを示す。
【0035】
図5(a)はベクトルプロセッサ120のアドレス空間をアクセスせずにレジスタ対レジスタ演算を行う命令語に対する6つのステージ実行パイプラインを示す。命令語フェッチステージ511において、IFU210は上述したように命令語をフェッチする。フェッチステージはIFU210がパイプライン遅延、未解決分岐条件、或いはプリフェッチされた命令語を提供するキャッシュサブシステム130における遅延によって保留されない限り、一つのクロックサイクルを必要とする。デコードステージ512において、デコーダ220はIFU210から命令語を復号化し、スケジューラ230に命令語に対する情報を記録する。また、デコードステージ512はFIFO410のいずれの行も新しい演算に使用し得ない限り、一つのクロックサイクルを必要とする。演算はFIFO410から一番目のサイクルの間制御パイプ420へ発生されることができるが、より古い演算の発行によって遅延することができる。
【0036】
実行データ経路240はレジスタ対レジスタ演算を行い、ロード/貯蔵演算のためにデータ及びアドレスを供給する。図6は実行データ経路240の実施形態のブロック図を示し、実行ステージ514,515及び516と結合して叙述される。実行レジスタ421は読取ステージ514の間クロックサイクルで読み取られたレジスタファイル610に2つのレジスタを識別する信号を提供する。図7はレジスタファイル610のブロック図を示す。レジスタファイル610は2つの読取及び2つの記録を各クロックサイクルごとに収容するために2つの読取及び2つの記録ポートを有する。それぞれのポートは選択回路612,614,616,618,288ビットデータバス613,615,617,619を含む。回路612、614、616、618のような選択回路は技術分野に公知されており、デコーダ220が典型的に命令語から抽出される5ビットレジスタ番号から誘導するアドレス信号WRADDR1、WRADDR2、RDADDR1またはRDADDR2、命令語或いは制御状態レジスタVCSRからのバンクビット、及びレジスタがベクトルレジスタ或いはスカラレジスタであるかを示す命令語構文を用いる。データ読み取りはマルチプレクサ656を通してロード/貯蔵部250へ、或いはマルチプレクサ622及び624を通して乗算部620、算術論理部630、或いは累算器640を通してルート(route)されることができる。大部分の演算は2つのレジスタを判読し、読取ステージ514は1サイクルに完了する。しかし、乗算と加算命令語VMAD及び二重サイズベクトルを操作する命令語のような一部命令語は読取ステージ514が1クロックサイクルより長くなるように2つのレジスタ以上からデータを必要とする。
【0037】
実行ステージ515の間、乗算器620、算術論理部630及び累算器640はレジスタファイル610から以前に読み取られたデータを処理する。実行ステージ515は所定のデータの読取に多数のサイクルが必要であれば、読取ステージ514をオーバーラップすることができる。実行ステージ515の期間は処理されたデータエレメントの類型(整数または浮動小数点)及び量(読取サイクルの数)に依存する。実行レジスタ422,423及び425からの信号は実行ステージの間に行われた第1演算時に算術論理部630、累算器640及び乗算器620への入力データを制御する。実行レジスタ432,433及び435からの信号は実行ステージ515の間に行われた第2演算を制御する。
【0038】
図8は乗算器620及びALU630の実施形態に対するブロック図である。乗算器620は8つの独立的な36×36ビット乗算器626を含む整数乗算器である。それぞれの乗算器626は制御回路によって共に接続された4つの9×9ビット乗算器を含む。8ビット及び9ビットデータエレメントサイズの場合、スケジューラ230からの制御信号は各乗算器626が4つの乗算を行うように相互4つの9×9ビット乗算器から分離させ、乗算器620はサイクルの間32個の独立的な乗算を行う。16ビットデータエレメントの場合、制御回路は共に動作する9×9ビット乗算器の対を連結し、乗算器620は16個の並列乗算を行う。32ビット整数データエレメント類型の場合、8個の乗算器626はクロックサイクルごとに8個の並列乗算を行う。乗算の結果は9ビットデータエレメントサイズに対して576ビット結果を、そして他のデータサイズに対して512ビットを提供する。
【0039】
ALU630は2つのクロックサイクルの間に乗算器620からの結果、即ち576ビット或いは512ビット結果を処理することができる。ALU630は8個の独立的な36ビットALU636を含む。それぞれのALU636は浮動小数点加算及び乗算のために32×32ビット浮動小数点部を含む。付随的な回路は整数シフト、算術及び論理関数を実行する。整数操作の場合、それぞれのALU636は独立的な8ビット及び9ビット操作を行うことができ、16ビット及び32ビット整数データエレメントに対して2つ或いは4つのセットと共にリンクされ得る4つの部(unit)を含む。
【0040】
累算器640は結果を累算し、中間結果でより高い精度のために2つの576ビットレジスタを含む。
【0041】
記録ステージ516の間、実行ステージからの結果はレジスタファイル610に貯蔵される。2つのレジスタは単一クロックサイクルの間記録されることができ、入力乗算器602及び605は記録される2つのデータ値を選択する。演算のための記録ステージ516の期間は演算の結果として記録されるデータの量と、レジスタファイル610に記録することによりロード命令語を完了し得るLSU250からの完了にしたがう。実行レジスタ426及び427からの信号は算術論理部630、累算器640及び乗算器620からのデータが記録されるレジスタを選択する。
【0042】
図5(b)はロード命令語の実行のための実行パイプライン520を示す。実行パイプライン520のための命令語フェッチステージ511、デコードステージ512及び発生ステージ513はレジスタ対レジスタ演算について叙述されたものと同一である。また、読取ステージ514は実行データ経路240がレジスタファイル610からのデータを用いてキャッシュサブシステム130への呼出のためのアドレスを決定することを除いては上述と同一である。アドレス算出ステージ525において、マルチプレクサ652、654及び656は実行ステージ526及び527のためにロード/貯蔵部250に提供されるアドレスを選択する。ロード演算のための情報はステージ526及び527の間FIFO410に保持される反面、ロード/貯蔵部250は演算を取り扱う。
【0043】
図9はロード/貯蔵部250の実施形態を示す。ステージ256の間、ステージ525で決定されたアドレスからのデータのためにキャッシュサブシステム130に対して呼び出される。例示的な実施形態はプロセッサ110,120を含む多数のデバイスがキャッシュサブシステム130を通して局部アドレス空間をアクセスし得るトランザクションに基づいたキャッシュ呼出を用いる。要請されたデータはキャッシュサブシステム130を呼び出した後幾サイクルの間用いることはできないが、ロード/貯蔵部250は他の呼出が係留される間キャッシュサブシステムを呼び出すことができる。従って、ロード/貯蔵部250は保留されない。要請されたデータを提供するためにキャッシュサブシステム130に必要なクロックサイクルの数はデータキャッシュ194をヒットまたはミスしたかによる。
【0044】
駆動ステージ527において、キャッシュサブシステム130はロード/貯蔵部250に対してデータ信号をアサートする。キャッシュサブシステム130はロード/貯蔵部250にサイクルごとにデータの256ビット(32バイト)を提供することができる。バイト整列器710は288ビット値を提供するために対応する9ビット貯蔵場所にそれぞれの32バイトを整列させる。288ビットフォーマットは時々9ビットデータエレメントを使用するMPEG符号化及び復号化のようなマルチメディアアプリケーションに適する。288ビット値は読取データバッファ720に記録される。記録ステージ528の場合、スケジューラ230はデータバッファ720からの288ビット量をレジスタファイル610に記録するためにFIFOバッファ410から実行レジスタ426または427へフィールド4を運搬する。
【0045】
図5(c)は貯蔵命令語の実行のための実行パイプライン530を示す。実行パイプライン530のための命令語フェッチステージ511、デコードステージ512及び発行ステージ513は上述と同様である。読取ステージ514は貯蔵されるデータ及びアドレス算出のためのデータを読み取ることを除いては上述と同一である。貯蔵されるデータはロード/貯蔵部250のデータバッファ730に記録される。マルチプレクサ740は9ビットバイトを提供するためのフォーマットのデータを8ビットバイトを有する従来のフォーマットに変換する。バッファ730からの変換されたデータ及びアドレス算出ステージ525からの連関アドレスはSRAMステージ536の間キャッシュサブシステム130に並列に送り出される。
【0046】
ベクトルプロセッサ120の例示的な実施形態において、各命令語は32ビット長さであり、図10に示した9つのフォーマット中のいずれか一つを有し、REAR,REAI,RRRM5,RRRR,RI,CT,RRRM9,RRRM9*及びRRRM9**の標識を有する。後述する第五実施例はベクトルプロセッサ120のための命令語セットを説明する。
【0047】
効率的なアドレスを決定する時にスカラレジスタを用いる一部ロード、貯蔵及びキャッシュ演算はREARフォーマットを有する。REARフォーマット命令は000bのビット29〜31によって識別され、スカラレジスタのための2つのレジスタ番号SRb,SRi及びビットDに依存するスカラまたはベクトルレジスタのレジスタ番号Rnによって識別される3つのオペランドを有する。バンクビットBはレジスタRnに対するバンクを識別するか、或いはデフォルトベクトルレジスタサイズが二重サイズであれば、ベクトルレジスタRnが二重サイズベクトルレジスタであるかを指す。opコードフィールドOpcはオペランドに対して行われた演算を識別し、フィールドTTはロードまたは貯蔵として伝送類型を識別する。典型的なREARフォーマット命令はスカラレジスタSRb及びSRiの内容を加えることにより決定されたアドレスからレジスタRnをロードする命令語VLである。もしビットAがセットされると、算出されたアドレスはスカラレジスタSRbに貯蔵される。
【0048】
REAIフォーマット命令はフィールドIMMからの8ビット即値がスカラレジスタSRiの内容の代わりに用いられることを除いてはREAR命令と同一である。REAR及びREAIフォーマットはデータエレメントサイズフィールドを持っていない。
【0049】
RRRM5フォーマットは2つのソースオペランドと一つの目的地オペランドを有する命令語のためのものである。これら命令は3つのレジスタオペランド或いは2つのレジスタオペランドのうちいずれか一つと5ビット即値を有する。後述する第五実施例に示すようにフィールドD,S及びMの符号化は第1のソースオペランドRaがスカラまたばベクトルレジスタであるか、第2のソースオペランドRb/IM5がスカラレジスタ、ベクトルレジスタ、或いは5ビット即値であるか、そして目的地レジスタRdがスカラまたはベクトルレジスタであるかを判断する。
【0050】
RRRRフォーマットは4つのレジスタオペランドを有する命令語のためのものである。レジスタ番号Ra及びRbはソースレジスタを指す。レジスタ番号Rdは目的地レジスタを示し、レジスタ番号RcはフィールドOpcに応じてソースまたは目的地レジスタのうちいずれか一つを示す。全てのオペランドはビットSがレジスタRbのスカラレジスタであることを指すようにセットされていない限りベクトルレジスタである。フィールドDSはベクトルレジスタのためのデータエレメントサイズを指す。フィールドOpcは32ビットデータエレメントのためのデータ類型を選択する。
【0051】
RIフォーマット命令は即値をレジスタへロードする。フィールドIMMは18ビットまでの即値を収容する。レジスタ番号Rdは現在のバンクにあるベクトルレジスタまたはビットDによるスカラレジスタのうちいずれかの目的地レジスタを示す。フィールドDS及びFはそれぞれデータエレメントのサイズと類型を指す。32ビット整数データエレメントの場合、18ビット即値はレジスタRdにロードされる前に拡張された符号である。浮動小数点データエレメントの場合、ビット18、ビット17乃至10及びビット9乃至0はそれぞれ32ビット浮動小数点値の符号、指数及び仮数を示す。
【0052】
CTフォーマットは流れ制御命令語のためのものであり、opコードフィールドOpc、条件フィールドCond、及び23ビット即値IMMを含む。条件フィールドによって指された条件が真であれば分岐が取られる。可能な条件は“常時”、“より小さい”、“等しい”、“小さいかもしくは等しい”、“より大きい”、“等しくない”、“〜より大きいか若しくは等しい”、及び“オーバーフロー”である。状態及び制御レジスタVCSRにあるビットGT、EQ、LT及びSOは条件の評価に用いられる。
【0053】
フォーマットRRRM9は3つのレジスタオペランドまたは2つのレジスタオペランドのうちいずれか一つと9ビット即値を提供する。ビットD,S及びMの組合せはどのオペランドがベクトルレジスタ、スカラレジスタ、または9ビット即値であるかを指す。フィールドDSはデータエレメントサイズを示す。RRRM9*及びRRRM9**フォーマットはRRRM9フォーマットの特殊な場合であり、opコードフィールドOpcによって識別される。RRRM9*フォーマットはソースレジスタ番号Raを条件コードCond及びIDフィールドに交替する。RRRM9*フォーマットは即値の最上位ビットを条件コードCond及びビットKに交替する。RRRM9*及びRRRM9**の付加的な説明は条件移動命令VCMOV、エレメントマスクを有する条件移動CMOVMと関連して第五実施例に提示されており、マスクCMPV命令と比較し、それをセットさせる。
【0054】
たとえ本発明が特定実施形態を参照として叙述されたが、本説明は単に本出願の例に過ぎないし、限定すると見なされてはいけない。開示された実施形態の多様な変形と組合せは次の特許請求の範囲領域で限定されたように、本発明の領域内に包括される。
【0055】
【実施例】
以下に、第一実施例について説明する。
本実施例において、プロセッサ110はARM7プロセッサ用標準と互換する汎用プロセッサである。ARM7内のレジスタの説明のためのARMアーキテクチャ文書或いはARM7データシート(1994年12月に発行された文書番号ARM DDI 0020C)を参照する。
【0056】
ベクトルプロセッサ120と相互作用するために、プロセッサ110はベクトルプロセッサを開始し停止させ、同期化のためのものを含んでベクトルプロセッサ状態をテストし、ベクトルプロセッサ120にあるスカラ/特殊目的レジスタからのデータをプロセッサ110の汎用レジスタへ伝送し、且つ汎用レジスタからのデータをベクトルプロセッサスカラ/特殊目的レジスタへ伝送する。汎用レジスタとベクトルプロセッサベクトルレジスタ間の直接的な伝送手段は存在しない。このような伝送は中間としてメモリを必要とする。
表2はベクトルプロセッサ命令語のためのARM7命令語セットへの拡張を説明する。
【表2】
Figure 0003983857
【0057】
表3は欠陥のある命令を実行する前に検出されて報告されたARM7の例外を列挙する。例外ベクトルアドレスが16進数表記法で提示されている。
【0058】
【表3】
Figure 0003983857
【0059】
次に、ARM7命令語セットに対する拡張構文を説明する。命名法説明及び命令語フォーマットのためにはARMアーキテクチャ文書またはARM7データシート(1994年12月に発行された文書番号ARM DDI 0020C)を参照する。
【0060】
前記ARMアーキテクチャはコプロセッサインタフェースのために3つの命令語を提供する:
1.コプロセッサデータ演算(CDP)
2.コプロセッサデータ転送(LDC,STC)
3.コプロセッサレジスタ転送(MRC,MCR)
MSPアーキテクチャ拡張は3つの形式を全て利用する。
コプロセッサのデータ演算フォーマットCDPはARM7に再び通信する必要のない演算に用いられる。
【0061】
CDPフォーマット
【数1】
Figure 0003983857
【0062】
CDPフォーマットにあるフィールドは次のような規約をもつ:
【0063】
【表4】
Figure 0003983857
【0064】
コプロセッサデータ伝送フォーマット(LDC,STC)はベクトルプロセッサのレジスタのサブセットを直接メモリにロードするか或いは貯蔵するのに用いられる。ARM7プロセッサはワードアドレスを供給する役目を担い、前記ベクトルプロセッサはデータを供給或いは受信し、伝送されたワードの数を制御する。より詳細なことはARM7データシートを参照する。
LDC,STCフォーマット
【数2】
Figure 0003983857
フォーマットにあるフィールドは次の規約をもつ:
【表5】
Figure 0003983857
【0065】
コプロセッサレジスタ転送フォーマット(MRC,MCR)はARM7とベクトルプロセッサとの間に情報を直接通信するのに用いられる。このフォーマットはARM7レジスタとベクトルプロセッサのスカラまたは特殊レジスタとの間を移動させるのに用いられる。
【0066】
MRC,MCRフォーマット
【数3】
Figure 0003983857
【0067】
フォーマットにあるフィールドは次の規約を持つ:
【表6】
Figure 0003983857
【0068】
拡張ARM命令語説明
拡張ARM命令語はアルファベット順で説明される。
【0069】
CACHE キャッシュ演算
●フォーマット
【数4】
Figure 0003983857
●アセンブラ構文
STC{cond} p15,cOpc,〈Address〉
CACHE{cond}Opc,〈Address〉
ここで、cond={eq,he,cs,cc,mi,pl,vs,vc,hi,Is,ge,It,gt,le,ai,nv}及びOpc={0,1,3}。LDC/STCフォーマットのCRnフィールドがOpcの明示に用いられるので、演算コードの十進数表記は第1構文で文字“c”が先行しなければならない(即ち、0の代わりにcOを使用する)。アドレスモード構文についてはARM7データシートを参照する。
●説明
この命令語はCondが真の時にのみ実行される。Opc〈3:0〉は次の演算を明示する:
【0070】
【表7】
Figure 0003983857
【0071】
●演算
EAの算出方法についてはARM7データシートを参照する。
例外
ARM7保護違反
【0072】
INTVP インタラプトベクトルプロセッサ
●フォーマット
【数5】
Figure 0003983857
●アセンプラ構文
CDP{cond}p7,1,c0,c0,co
INTVP{cond}
ここで、cond={eq,ne,cs,cc,mi,pl,vs,vc,hi,ls,ge,lt,gt,le,al,ns}
●説明
この命令はCondが真の時にのみ実行される。この命令はベクトルプロセッサに中止するようにシグナルする。ARM7はベクトルプロセッサの中止を待機せず、次の命令を引き続き実行する。
MFER使用中(busy)待機ループはもしこの命令が行われた後ベクトルプロセッサが停止されたかを確認するのに用いられる。この命令はもしベクトルプロセッサが予めVP_IDLE状態にあれば、何の影響も及ぼさない。
ビット19:12,7:15及び3:0が割り当てられる。
●例外
利用不可能なベクトルプロセッサ。
【0073】
MFER 拡張レジスタからの移動
●フォーマット
【数6】
Figure 0003983857
●アセンブラ構文
MRC{cond}p7,2,Rd,cP,cER,0
MFER{cond}Rd,RNAME
ここで、cond={eq,he,cs,cc,mi,pl,rs,vc,hi,ls,ge,lt,gt,le,al,nv},Rd={r0,・・・r15},P={0,1},ER={0,・・15}、そしてRNAMEはアーキテクチャ的に明示されたレジスタニモニック(即ち、PERO或いはCSR)を意味する。
●説明
本命令はCondが真の時にのみ実行される。ARM7レジスタRdは下記の表に示すように、P:ER〈3:0〉で明示された拡張レジスタERから移動する。
【0074】
拡張レジスタの説明については1.2節を参照する。
【表8】
Figure 0003983857
【0075】
ビット19:17及び7:5は予約されている。
●例外
使用者モード中にPERxをアクセスしようと試みるのは保護違反
【0076】
MFVP ベクトルプロセッサからの移動
●フォーマット
【数7】
Figure 0003983857
●アセンブラ構文
MRC{cond}p7,1,Rd,Crn,CRm,0
MFER{cond}Rd,RNAME
ここで、cond={eq,ne,cs,cc,mi,pl,vs,vc,hi,ls,ge,lt,gt,le,al,nv},Rd={r0,・・・r15},CRn={c0,・・・c15},CRm={c0,・・c15}、及びRNAMEはアーキテクチャ的に明示されたレジスタニモニック(即ち、SP0またはVSR)を意味する。
●説明
本命令はCondが真の時にのみ実行される。ARM7レジスタRdはベクトルプロセッサのスカラ/特殊レジスタCRn〈1:0〉:CRm〈3:0〉から移動される。レジスタ伝送のためのベクトルプロセッサレジスタ番号割当については3.2.3節を参照する。
CRn〈3:2〉はもちろんビット7.5も予約されている。
ベクトルプロセッサレジスタマップは以下の表に示される。ベクトルプロセッサ特殊目的レジスタ{SP0〜SP15〉については表15を参照する。
【0077】
【表9】
Figure 0003983857
【0078】
SR0は常に0の32ビットとして読み取られ、これに対する記録は無視される。
●例外
利用不可能なベクトルプロセッサ
【0079】
MTER 拡張レジスタ側への移動
●フォーマット
【数8】
Figure 0003983857
●アセンブラ構文
MRC{cond}p7,2,Rd,cP,cER,0
MFER{cond}Rd,RNAME
ここで、cond={eq,he,cs,cc,mi,pl,rs,vc,hi,ls,ge,lt,gt,le,al,nv},Rd={r0,・・・r15},P={0,1},ER={0,・・15}、及びRNAMEはアーキテクチャ的に明示されたレジスタニモニック(即ち、PERO或いはCSR)を意味する。
●説明
本命令はCondが真の時にのみ実行される。ARM7レジスタRdは下記の表に示すように、P:ER〈3:0〉で明示された拡張レジスタERから移動される。
【0080】
【表10】
Figure 0003983857
【0081】
ビット19:17及び7:5は予約されている。
●例外
使用者モード中にPERxをアクセスしようと試みるのは保護違反
【0082】
MTVP ベクトルプロセッサからの移動
●フォーマット
【数9】
Figure 0003983857
●アセンブラ構文
MRC{cond}p7,1,Rd,Crn,CRm,0
MFVP{cond}Rd,RNAME
ここで、cond={eq,ne,cs,cc,mi,pl,vs,vc,hi,ls,ge,lt,gt,le,al,nv},Rd={r0,・・・r15},CRn={c0,・・c15}、CRm={c0,・・・c15}、及びRNAMEはアーキテクチャ的に明示されたレジスタニモニック(即ち、SP0或いはVCS)を意味する。
●説明
この命令はCondが真の時にのみ実行される。ARM7レジスタRdはベクトルプロセッサのスカラ/特殊目的レジスタCRn〈1:0〉:CRm〈3:0〉から移動される。
CRn〈3:2〉はもちろん、ビット7:5も予約されている。
ベクトルプロセッサレジスタマップが以下の表に示されている。
【0083】
【表11】
Figure 0003983857
【0084】
●例外
利用不可能なベクトルプロセッサ
【0085】
PFTCH プリフェッチ
●フォーマット
【数10】
Figure 0003983857
●アセンブラ構文
LDC{cond}p15,2,〈Address〉
PFTCH{cond}〈Address〉
ここで、cond={eq,he,cs,cc,mi,pl,rs,vc,hi,ls,ge,lt,gt,le,al,nv}、アドレスモード構文についてはARM7データシートを参照する。
●説明
この命令はCondが真の時にのみ実行される。EAによって明示されたキャッシュラインはARM7データキャッシュにプリフェッチされる。
●演算
EAがどのように計算されるかについてはARM7データシートを参照する。
●例外
なし
【0086】
STARTVP 開始ベクトルプロセッサ
●フォーマット
【数11】
Figure 0003983857
●アセンブラ構文
LDP{cond}p7,0,cO,cO,cO
STARTVP{cond}
ここで、cond={eq,he,cs,cc,mi,pl,vs,vc,hi,ls,ge,it,gt,le,al,nv}
●説明
本命令はCondが真の時にのみ実行される。この命令はベクトルプロセッサにシグナルして実行を開始できるようにし、VISRC〈vjp〉とVISRC〈vip〉を自動的にクリアさせる。ARM7はベクトルプロセッサが実行を開始する時まで待機せず、次の命令を引き続き行う。
ベクトルプロセッサの状態はこの命令が行われる前に所望の状態に初期化されるべきである。この命令は前記ベクトルプロセッサが既にVP_RUN状態にあれば、何の影響も及ぼさない。
ビット19:12,7:5,及び3:0は予約されている。
●例外
ベクトルプロセッサは利用することができない
【0087】
TESTSET テストとセット
●フォーマット
【数12】
Figure 0003983857
●アセンブラ構文
MRC{cond}p7,0,Rd,cO,cER,0
TESTSET{cond}Rd,RNAME
ここで、cond={eq,he,cs,cc,mi,pl,rs,re,hi,ls,ge,lt,gt,le,al,nv},Rd={r0,・・r15},ER={0,・・15},そしてRANAMEはアーキテクチャ的に明示されたレジスタニモニック(即ち,UER1或いはVASYNC)を意味する。
●説明
本命令はCondが真の時にのみ実行される。この命令はUERxの内容をRDに返還し、UERx〈30〉を1にセットさせる。もしARM7レジスタ15が目的地レジスタとして明示されていれば、短い使用中待機(busywait)ループが具現されうるように、UERx〈30〉はCPSRのZビットから返還される。
●例外
無し
【0088】
以下に、第二実施例について説明する。
マルチメディアプロセッサ100のアーキテクチャはプロセッサ110がMFERとMTER命令語でアクセスする拡張レジスタを定義する。この拡張レジスタは専用拡張レジスタと使用者拡張レジスタとを含む。
前記専用拡張レジスタはマルチメディア信号プロセッサの動作を制御するのに主に用いられる。これらは表B1に示されている。
【0089】
【表12】
Figure 0003983857
【0090】
制御レジスタはMSP100の演算を制御する。CTRにある全てのビットはリセット時にクリアされる。前記レジスタ定義が表13に示されている。
【0091】
【表13】
Figure 0003983857
【0092】
状態レジスタはMSP100の状態を指す。フィールドSTRにある全てのビットはリセット時にクリアされる。前記レジスタ定義が表B3に示されている。
【0093】
【表14】
Figure 0003983857
【0094】
プロセッサバージョンレジスタはプロセッサのマルチメディア信号プロセッサ群の特殊なプロセッサの特殊バージョンを識別する。
ベクトルプロセッサインタラプトマスクレジスタVIMSKは、プロセッサ110へのベクトルプロセッサ例外の報告を制御する。VIMSKにある各ビットは、VISRCレジスタの対応ビットと共にセットされる時、例外をイネーブルさせてARM7をインタラプトさせる。ベクトルプロセッサ例外が検出される方法には何の影響も及ぼさないが、前記例外がARM7をインタラプトさせるべきかどうかについてのみ影響を及ぼす。VIMSKの全てのビットはリセット時にクリアされる。レジスタ定義が表B4に示されている
【0095】
【表15】
Figure 0003983857
【0096】
ARM7命令語アドレス区切り点レジスタはARM7プログラムをデバッグ(debugging)するのに役に立つ。レジスタ定義が下表に示されている。
【0097】
【表16】
Figure 0003983857
【0098】
ARM7データアドレス区切り点レジスタはARM7プログラムをデバッグするのに役に立つ。レジスタ定義が下表に示されている。
【0099】
【表17】
Figure 0003983857
【0100】
スクラッチパッドレジスタはキャッシュサブシステム130のSRAMを用いて形成されたスクラッチパッドのアドレスとサイズを構成する。レジスタ定義が下表に示されている。
【0101】
【表18】
Figure 0003983857
【0102】
使用者拡張レジスタはプロセッサ110,120の同期化に主に用いられる。使用者拡張レジスタはビット30にマッピングされた只1ビットのみを持つように現在定義されており、例えば“MFER R15,UERx”のような命令はビット値をZフラグ側に返還する。ビットUERx〈31〉およびUERx〈29:0〉は常にゼロと読み取られる。使用者拡張レジスタが下表に説明されている。
【0103】
【表19】
Figure 0003983857
【0104】
下表はパワーオンリセット時の拡張レジスタの状態を示す。
【0105】
【表20】
Figure 0003983857
【0106】
以下に、第三実施例について説明する。ベクトルプロセッサ120のアーキテクチャ状態は:32個の32ビットスカラレジスタ;32個の288ビットベクトルレジスタの2つのバンク:一対の576ビットベクトル累算レジスタ;1セットの32ビット特殊目的レジスタを備える。スカラ、ベクトル及び累算器レジスタは汎用目的プログラミングのために意図されており、他の多くのデータ型を支援する。
【0107】
次の表記法はこのような節及び後続の節に用いられる。:
VRはベクトルレジスタを示す;VRiはi番目のベクトルレジスタ(ゼロオフセット)を示す;VR[i]はベクトルレジスタVRのi番目のデータエレメントを示す;VR〈a:b〉はベクトルレジスタVRのビットa乃至ビットbを示す;そしてVR[i]〈a:b〉はベクトルレジスタVRのi番目のデータエレメントのビットa乃至ビットbを示す。
ベクトルアーキテクチャは一つのベクトルレジスタ内に多数のエレメントのためのデータ型及びサイズの付加された寸法をもつ。ベクトルレジスタは固定されたサイズをもつので、収容可能なデータエレメントの個数はエレメントのサイズによる。MSPアーキテクチャは下表に示すように5つのエレメントサイズを有する。
【0108】
【表21】
Figure 0003983857
【0109】
MSPアーキテクチャは命令にある明示されたデータ型とサイズによってベクトルデータを解釈する。現在2の補数(整数)フォーマットが大部分のアーキテクチャ命令のバイト、バイト9、ハーフワード及びワードエレメントサイズに支援される。しかも、大部分のアーキテクチャ命令のためのワードエレメントサイズとしてIEEE754単精度フォーマットが支援される。
プログラマは命令語シーケンスが意味のある結果を出す限り、任意の所定方法でデータを自由に解釈することができる。例えば、プログラマはバイト9サイズを使用して8ビット符号のない数字を貯蔵することができ、同様にバイトサイズデータエレメントに8ビット符号のない数字を自由に貯蔵することができ、プログラマが“偽(false)”オーバフロー結果を取り扱うことができる限り、提供された2の補数アーキテクチャ命令を使用して自由にそれらを演算することができる。
【0110】
SR0乃至SR31で表記された32個のスカラレジスタが存在する。スカラレジスタは32ビット幅であり、定義されたサイズのうちいずれかのサイズの1つのデータエレメントを収容することができる。スカラレジスタSR0はレジスタSR0が常に32ビットと読み取られ、レジスタSR0への記録が無視されるという点で特殊である。バイト、バイト9及びハーフワードデータ型は最上位ビットが定義されていない値を有するスカラレジスタの最下位ビットに貯蔵される。
レジスタがデータ型表示器を持っていないため、プログラマは各命令に用いられているレジスタのデータ型を知るべきである。これは32ビットレジスタが32ビット値を収容すると見なされる他のアーキテクチャとは異なる。MSPアーキテクチャはデータ型Aの結果がデータ型Aに対して定義されたビットのみを正確に修正することを明示する。例えば、バイト9加算の結果は32ビット目的地スカラレジスタの下位9ビットのみを修正する。上位23ビットの値は命令語に対して異に指示されない限り、定義されていない。
【0111】
64ベクトルレジスタはそれぞれ32ビットレジスタを有する2つのバンクから組織される。バンク0は一番目の32レジスタを収容し、バンク1は2番目の32レジスタを収容する。2つのバンクは一つが現在のバンクとしてセットされ、もう一つが代替バンクとしてセットされる方式で用いられる。全てのベクトル命令は代替バンクにあるベクトルレジスタをアクセスし得る命令をロード/記憶及びレジスタが移送させることをを除き、デフォルトとして現在のバンクにあるレジスタを使用する。ベクトル制御及び状態レジスタVCSRにあるCBANKビットはバンク0またはバンク1を現在のバンクとしてセットさせるのに用いられる。(他のバンクは代替バンクになる。)現在のバンクにあるベクトルレジスタはVR0乃至VR31と呼ばれ、代替バンク内のベクトルレジスタはVRA0乃至VRA31と呼ばれる。
【0112】
選択的に、2つのバンクは576ビットの32二重サイズベクトルレジスタをそれぞれ提供するように概念的に合併されることができる。制御レジスタVCSRにあるVEC64ビットはこのようなモードを明示する。VEC64モードにおいて、現在バンク及び交替バンクは存在せず、ベクトルレジスタ番号は2つのバンクから対応する288ビットベクトルベクトル対を指称する。即ち、
VRi〈575:0〉=VR1i〈287:0〉:VR0i〈287:0〉
ここで、VR0i及びVR1iはバンク1及びバンク0のそれぞれにレジスタ番号VRiをもつベクトルレジスタを指称する。二重サイズベクトルレジスタはVR0乃至VR31と呼ばれる。
ベクトルレジスタは下表に示したようにバイト、バイト9、ハーフワードまたはワードサイズの多数のエレメントを収容することができる。
【0113】
【表22】
Figure 0003983857
【0114】
一つのベクトルレジスタ内のエレメントサイズの混合は支援されない。バイト9エレメントサイズを除き、ただ288ビットの256ビットのみが用いられる。特に、全ての9番目のビットは用いられない。バイト、ハーフワード及びワードサイズにある用いられない32ビットは予約され、プログラマはそれらの値に対して何の仮定もしてはいけない。
【0115】
ベクトル累算レジスタは目的地レジスタの結果より精度の高い中間結果のための記憶装置を提供するように意図される。ベクトル累算レジスタはVAC1H,VAC1L,VAC0H及びVAC0Lという4つの288ビットレジスタから構成される。VAC0H:VAC0L対はデフォルトで3つの命令によって用いられる。VEC64モードでのみ、VAC1H:VAC1L対が64バイト9ベクトル演算をエミュレートするのに用いられる。バンク1がVEC32モードで現在のバンクにセットされても、VAC0H:VAC0L対が用いられる。
ソースベクトルレジスタと等しい数のエレメントをもつ拡張された精度結果を出すために、下表に示したようにレジスタ対にわたって拡張された精度エレメントが節約される。
【0116】
【表23】
Figure 0003983857
【0117】
VAC1H及びVAC1L対はエレメントの数がバイト9(及びバイト)、ハーフワード、及びワードのそれぞれに対して64,32,または16のVEC64モードでのみ用いられる。
メモリから直接ロードされるか、或いはメモリに直接貯蔵され得ない33個の特殊目的レジスタが存在する。RASR0乃至RASR15と呼ばれる16個の特殊目的レジスタは内部の返還アドレススタックを形成し、サブルーチン呼出及び返還命令によって用いられる。17個の32ビット特殊目的レジスタが表C4に示されている。
【0118】
【表24】
Figure 0003983857
【0119】
ベクトル制御及び状態レジスタVCSR定義が下表に示されている。
【表25】
Figure 0003983857
【0120】
ベクトルプログラムカウンタレジスタVPCは、ベクトルプロセッサ120によって実行される次の命令のアドレスである。ARM7プロセッサ110はベクトルプロセッサ120の演算を開始するためにSTARTVP命令を発生する前にレジスタVPCをロードしなければならない。
【0121】
ベクトル例外プログラムカウンタVEPCは、一番最近の例外を誘発する可能性のある命令語のアドレスを明示する。MSP100は正確な例外、即ち“一番可能性のある”という用語を支援しない。
【0122】
ベクトルインタラプトソースレジスタVISRCは、ARM7プロセッサ110に対するインタラプトソースを指す。例外の検出時、適当なビットがハードウェアによってセットされる。ソフトウェアはベクトルプロセッサ120が実行を再開する前にレジスタVISRCをクリアしなければならない。レジスタVISRCに設定された任意のビットはベクトルプロセッサ120を状態VP_IDLEに進入させる。もし対応するインタラプトイネーブルビットがVIMSKに設定されていると、プロセッサ110に対するインタラプトがシグナルされる。下表はレジスタVISRCの内容を定義する。
【0123】
【表26】
Figure 0003983857
【0124】
ベクトルインタラプト命令レジスタVIINSは、VCINTまたはVCJOIN命令がARM7プロセッサ110をインタラプトするために実行される時、VCINTまたはVCJOIN命令により更新される。
【0125】
ベクトルカウンタレジスタVCR1,VCR2及びVCR3は、減少及び分岐命令VD1CBR,VD2CBR,VD3CBRであり、実行されるループのカウントで初期化される。命令VD1CBRが実行される時、レジスタVCR1は1だけ減少する。もしカウント値がゼロでなく命令語に明示された条件がVFLAGと一致すると、この時分岐が取られる。もし一致しなければ、分岐は取られない。レジスタVCR1はどの場合にも1だけ減少する。レジスタVCR2及びVCR3もこれと同一に用いられる。
【0126】
ベクトルグローバルマスクレジスタVGMR0は、VEC32で影響を及ぼす目的地ベクトルレジスタのエレメントと、VEC64モードでVR〈287:0〉内のにあるエレメントを指す。VGMR0の各ビットはベクトル目的地レジスタの9ビットの更新を制御する。特に、VGMR0〈i〉は、VEC32モードのVRd〈9i+8:9i〉とVEC64モードのVR0d〈9i+8:9i〉の更新を制御する。VR0dはVEC64モードでバンク0の目的地レジスタを指し、VRdはVEC32モードでバンク0またはバンク1のうちいずれか一つである可能性のある現在のバンクにある目的地レジスタを指す。ベクトルグローバルマスクレジスタVGMR0はVCMOVM命令を除いて全ての命令の実行に用いられる。
【0127】
ベクトルグローバルマスクレジスタVGMR1は、VEC64モードで影響を受けるVR〈575:288〉内のエレメントを指す。VGMR1の各ビットはバンク1でベクトル目的地レジスタにある9ビットの更新を制御する。特に、VGMR1〈i〉はVR1d〈9i+8:9i〉の更新を制御する。レジスタVGMR1はVEC32モードで使用されないが、VEC64ではVCMOVM命令を除いて全ての命令を実行するのに用いられる。
【0128】
ベクトルオーバフローレジスタVOR0は、VEC32モードにあるエレメントとベクトル算術演算後オーバフロー結果を収容しているVEC64モードにあるVR〈287:0〉内のエレメントを指す。このレジスタはスカラ算術演算により修正されない。セットされるビットVOR0〈i〉はバイトまたはバイト9のi番目のエレメント、ハーフワードの(i idiv 2)番目のエレメント、或いはワードデータ型演算の(i idiv 4)番目のエレメントがオーバフロー結果を含んでいることを指す。例えば、ビット1及びビット3はそれぞれ一番目のハーフワード及びワードエレメントのオーバフローを指すようにセットされる。このようなVOR0にあるビットのマッピングはVGMR0またはVGMR1にあるビットのマッピングとは異なる。
【0129】
ベクトルオーバフローレジスタVOR1は、ベクトル算術演算後にオーバフロー結果を含んでいるVEC64モードでVR〈575:288〉内のエレメントを指すのに用いられる。レジスタVOR1はVEC32モードで使用されず、且つスカラ算術演算によって修正もされない。セットされているビットVOR1〈i〉はバイトまたはバイト9のi番目のエレメント、ハーフワードの(i idiv 2)番目のエレメント、或いはオーバフロー結果を含んでいるワードデータ型演算の(i idiv 4)番目のエレメントを指す。例えば、ビット1とビット3はVR〈575:288〉でそれぞれ1番目のハーフワードとワードエレメントのオーバフローを指すようにセットされる。VOR1にあるビットのマッピングはVGMR0またはVGMR1にあるビットのマッピングとは異なる。
【0130】
ベクトル命令アドレス区切り点レジスタVIABRは、ベクトルプログラムをデバッグするのに役に立つ。このレジスタ定義が下表に示されている。
【0131】
【表27】
Figure 0003983857
【0132】
ベクトルデータアドレス区切り点レジスタVDABRは、ベクトルプログラムをデバッグするのに役に立つ。このレジスタ定義が下表に示されている。
【0133】
【表28】
Figure 0003983857
【0134】
ベクトル移動マスクレジスタVMMR0は、全ての命令に対してVCSR〈SMM〉=1の時は勿論、全ての場合にVCMOVM命令によって用いられる。レジスタVMMR0はVEC32モードで影響を受ける目的地レジスタのエレメントと、VEC64モードでVR〈287:0〉内のエレメントを指す。VMMR0の各ビットはベクトル目的地レジスタの9ビットの更新を制御する。特に、VMMR0〈i〉はVEC32モードでVRd〈9i+8:9i〉とVEC64モードでVR0d〈9i+8:9i〉の更新を制御する。VR0dはVEC64モードでバンク0の目的地レジスタを指し、VRdはVEC32モードでバンク0またはバンク1のうちいずれか一つである可能性のある現在のバンクで目的地レジスタを指す。
【0135】
ベクトル移動マスクレジスタVMMR1は、全ての命令に対してVCSR〈SMM〉=1の時は勿論、全ての場合にVCMOVM命令によって用いられる。レジスタVMMR1はVEC64モードで影響を受けるVR〈575:288〉内のエレメントを指す。VMMR1の各ビットはバンク1でベクトル目的地レジスタの9ビットの更新を制御する。特に、VGMR1〈i〉はVR1d〈9i+8:9i〉の更新を制御する。レジスタVGMR1はVEC32モードで用いられない。
【0136】
ベクトル及びARM7同期化レジスタVASYNCは、プロセッサ(110及び120)間の同期化の生産者/消費者を提供する。現在、只ビット30のみが定義されている。ARM7プロセッサはベクトルプロセッサ120が状態VP_RUNまたはVP_IDLEにある間、命令語MFER,MTER及びTESTSETを使用してレジスタVASYNCをアクセスすることができる。レジスタVASYNCはこれら命令が一番目の16ベクトルプロセッサの特殊目的レジスタを外れてアクセスすることができないために、TVP或いはMFVP命令を通じてARM7プロセッサにアクセスすることができない。ベクトルプロセッサはVMOV命令を通じてレジスタVASYNCをアクセスすることができる。
下表はパワーオンリセット時の前記ベクトルプロセッサの状態を示す。
【0137】
【表29】
Figure 0003983857
【0138】
特殊目的レジスタは前記ベクトルプロセッサが命令を実行し得る前に、ARM7プロセッサ110によって初期化される。
【0139】
以下に、第四実施例について説明する。
各命令はソースと目的地オペランドのデータ型(data type)を暗示するか或いは明示する。一部の命令は一種以上のデータ型と等しく適用される意味(semantics)を有する。一部の命令はソースに対する一つのデータ型を取る意味を有し、その結果に対して他のデータ型を作る。本実施例は例示的な実施例によって支援されるデータ型を説明する。本章の表1は支援されるデータ型int8,int9,int16,int32及び浮動データを説明する。符号の無い整数フォーマット(unsigned integer format)は支持されず、符号の無い整数値はまず使用される前に2の補数フォーマットに変換されるべきである。プログラマはオーバフローが適切に処理される限り、符号の無い整数或いはその選択した任意の他のフォーマットで算術命令を自由に使用する。アーキテクチャは単に2の補数整数及び32ビット浮動小数点データ型のみのオーバフローを定義する。アーキテクチャは符号の無いオーバフローに必要な8,9,16,または32ビット演算のキャリアウトを検出することができない。
下表はロード(load)演算によって支持されるデータサイズを示す。
【0140】
【表30】
Figure 0003983857
【0141】
アーキテクチャはデータ型境界上のメモリアドレス整列を明示する。即ち、バイトの場合、何の整列条件も存在しない。ハーフワードの場合、整列条件はハーフワード境界である。ワードの場合、整列条件はワード境界である。
下表は貯蔵(store)演算によって支持されるデータサイズを示す。
【0142】
【表31】
Figure 0003983857
【0143】
スカラ或いはベクトルである一つ以上のダム(dam)型がレジスタにマッピングされるために、一部のデータ型に対して定義された結果を持たない、目的地レジスタにビットが存在することができる。実は、ベクトル目的地レジスタに対するバイト9データサイズ演算とスカラ目的地レジスタに対するワードデータサイズ演算の他にも、その値が演算によって定義されていない目的地レジスタにビットが存在する。これらビットの場合、アーキテクチャはそれらの値が定義されることを指定する。下表はそれぞれのデータサイズに対して定義されていないビットを示す。
【0144】
【表32】
Figure 0003983857
【0145】
プログラミング時、プログラマはソース及び目的地レジスタ或いはメモリのデータ型を知っていなければならない。一つのエレメントサイズから他のエレメントサイズへのデータ型変換は暫定的にベクトルレジスタに貯蔵される数が他のエレメンになる結果をもたらす。例えば、ハーフワードからワードデータタイプへのベクトルレジスタの変換は同一数の変換されたエレメントを貯蔵するために2つのベクトルレジスタを必要とする。逆に、ベクトルレジスタで使用者定義のフォーマットをもつワードデータ型からハーフワードフォーマットへの変換はベクトルレジスタの半分に同一数のエレメントと、そして他の半分に残りのビットを発生させる。いずれの場合も、データ型変換はソースエレメントとは異なるサイズの変換されたエレメントの配列にアーキテクチャの問題を引き起こす。
【0146】
原則的に、MSPアーキテクチャはエレメントの数を黙視的に返還させる演算を結果として提供する。アーキテクチャはプログラマが目的地レジスタにあるエレメントの数を変えた結果を知っているべきと判断する。アーキテクチャは一つのデータ型から同一サイズの他のデータ型に変換する演算のみを提供し、一つのデータ型から異なるサイズの他のデータ型に変換する時、プログラマがデータサイズの差異を調整することを要求する。
【0147】
第五実施例に叙述されたようにVSHFLL及びVUNSHFLLのような特殊命令は一つのデータサイズをもつ一つのベクトルから他のデータサイズをもつ他のベクトルへの変換を単純にする。ベクトルVRaでより小さいエレメントサイズ、(例えばint8)からより大きいエレメント(例えばint16)へ2の補数データ型を変換することに関連した基本的なステップは次の通りである:
1.バイトデータタイプを用いて別のベクトルVRbを有するVRaにあるエレメントを2つのベクトルVRc:VRdにシャフルする(shuffle)。VRaにあるエレメントは二重サイズレジスタVRc:VRdにあるint16データエレメントの下位バイトに移動し、その値と関係の無いVRbのエレメントがVRc:VRdの上位バイトに移動する。この演算はバイトからハーフワードに各エレメントのサイズを倍加させながら、VRaのエレメントの半分をVRcに、残りの半分をVRdに効果的に移動させる。
2.VRcにあるエレメントを符号拡張するために8ビット算術シフトさせる。
【0148】
例えばベクトルVRaにあるより大きいエレメントサイズ、(例えばint16)からより小さいサイズ(例えばint6)へ2の補数データ型を変換することに関連した基本ステップは次の通りである:
1.int16データ型にある各エレメントがバイトサイズで表現可能であるかを点検する。もし必要なら、両方ともにエレメントを飽和させてより小さいサイズに合わせる。
2.VRaのエレメントを他のベクトルVRbとして2つのベクトルVRc:VRd内にアンシャフル(unshuffle)する。VRaとVRbにある各エレメントの上位半分はVRcに移動し、下位半分はVRdに移動する。これはVRdの下位半分にあるVRaの全てのエレメントの下位半分を効果的に収集する。
3.特殊命令が次のようなデータ型の変換に提供される:単精度浮動小数点に対してint32;固定小数点に対して単精度浮動小数点(X,Y表記法);int32に対して単精度浮動小数点;int9に対してint8;int16に対してint9;及びint9に対してint16。
【0149】
ベクトルプログラミングに柔軟性を提供するために、大部分のベクトル命令はエレメントマスクを用いてベクトル内の選択されたエレメントに対してのみ演算する。ベクトルグローバルマスクレジスタ(Vector Global Mask Register)VGMR0及びVGMR1はベクトル命令によって目的地レジスタ及びベクトル累算器で修正されたエレメントを識別する。バイト及びバイト9データサイズ演算の場合、VGMR0(或いはVGMR1)にある32ビットのそれぞれは演算されるエレメントを識別する。セットされているビットVGMR0〈i〉はバイトサイズのエレメント(i,ここでiは0から31まで)が影響を受けることを指す。ハーフワードデータサイズ演算の場合、VGMR0(或いはVGMR1)にある32ビットの各対は演算されるエレメントを識別する。セットされているビットVGMR0〈2i:2i+1〉はエレメントi(ここでiは0から15まで〉が影響を受けることを指す。もしVGMR0にある対の1つのビットのみがハーフワードデータサイズ演算のためにセットされると、対応するバイトにあるビットのみが修正される。ワードデータサイズ演算の場合、VGMR0(或いはVGMR1)にある4つのビットの各セットは演算されるエレメントを識別する。セットされているビットVGMR0〈4i:4i+3〉はエレメントi(ここでiは0から7まで)が影響を受けることを指す。もしVGMR0における4つのセットにある全てのビットがワードデータサイズ演算のためにセットされていなければ、対応するバイトにあるビットのみが修正される。
【0150】
VGMR0及びVGMR1はVCMPM命令を使用してベクトルレジスタをベクトル或いはスカラレジスタ或いは即値と比較することによりセットされることができる。この命令は指定されたデータサイズによってマスクを適切にセットさせる。スカラレジスタは一つのデータエレメントのみを収容するように定義されているために、スカラ演算(即ち、目的地レジスタがスカラである)はエレメントマスクによって影響されない。
【0151】
ベクトルプログラミングに柔軟性を与えるために、大部分のMSP命令は3つの形態のベクトルとスカラ演算を支援する。それらは次の通りである:
1.ベクトル=ベクトルopベクトル
2.ベクトル=ベクトルopスカラ
3.スカラ=スカラopスカラ
スカラレジスタがBオペランドとして明示されたケース2の場合、スカラレジスタにおける一つのエレメントはベクトルAオペランド内のエレメントの数と一致する必要のある数だけ複製される。複製されたエレメントは指定されたスカラオペランドにあるエレメントを同じ値をもつ。スカラオペランドは即値オペランド形態でスカラレジスタ或いは命令から来ることができる。即値オペランドの場合、もし指定されたデータ型が即値フィールドサイズとして利用し得るものよりさらに大きいデータサイズを用いると、適宜に符号拡張される。
【0152】
多くのマルチメディアアプリケーションにおいて、ソース、即値及び結果の精度に対して多くの関心が集まるべきである。また、整数乗算命令は2つのベクトルレジスタに貯蔵されうる“倍精度”中間結果を生成する。
【0153】
MSPアーキテクチャは現在8,9,16,及び32ビットエレメントのための2の補数整数フォーマットと32ビットエレメントのためのIEEE754単精度フォーマットを支援する。オーバフローは明示されたデータ型として表現できる最陽或いは最陰の値を外れた結果として定義される。オーバフローが発生する時、目的地レジスタに記録された値は無効数字でない。アンダーフローは浮動小数点演算に対してのみ定義されている。
【0154】
別に定義しない限り、全ての浮動小数点演算はVCSR〈RMODE〉に明示された4つのラウンディングモードのうちいずれか一つを用いる。一部の命令はラウンドアウェイフロムゼロ(round away from zero)(ラウンドイブン(round even))ラウンディングモードと知られていることを利用する。
【0155】
飽和(Saturation)は多くのマルチメディアアプリケーションにおける重要な機能である。MSPアーキテクチャは4種の全ての整数及び浮動小数点演算における飽和を支援する。レジスタVCSRにあるビットISATは整数飽和モードを明示する。また、高速IEEEモードとして知られている浮動小数点飽和モードはVCSRでFSATと明示されている。飽和モードがイネーブルされると、最陽或いは最陰の値を外れた結果がそれぞれ最陽或いは最陰の値にそれぞれセットされる。この場合、オーバフローは発生することができなく、オーバフロービットはセットされることができない。
下表は欠陥のある命令が実行されるる前に検出されて報告される正確な例外(Precise Exception)を列挙する。
【0156】
【表33】
Figure 0003983857
【0157】
下表は欠陥のある命令以外の後続のプログラムにある幾つかの命令を実行してから、検出されて報告された不正確な例外(Imprecise Exception)を列挙する。
【0158】
【表34】
Figure 0003983857
【0159】
以下に、第五実施例について説明する。ベクトルプロセッサのためにセットされた命令は下表に示すように11個に分類することができる。
【0160】
【表35】
Figure 0003983857
【0161】
下表は流れ制御(Flow Control)命令を列挙する。
【0162】
【表36】
Figure 0003983857
【0163】
論理的分類はブール(Boolean)データ型を支援し、エレメントマスクによって影響される。下表は流れ制御命令を列挙する。
【0164】
【表37】
Figure 0003983857
【0165】
シフト/回転(Shift/Rotate)分類命令はint8,int9,int16及びint32データ型(浮動データ型無し)に対して演算し、エレメントマスクによって影響される。下表はシフト/回転分類命令を列挙する。
【0166】
【表38】
Figure 0003983857
【0167】
算術(Arithmetic)分類命令は一般にint8,int9,int16,int32浮動データ型を支援し、エレメントマスクによって影響される。支援されないデータ型に対する特定の制限に対しては、次の各命令に対する詳細な説明を参照する。VCMPV命令はエレメントマスクに対して演算するので、エレメントマスクによって影響されない。表E5は算術演算命令を列挙する。
【0168】
【表39】
Figure 0003983857
【0169】
MPEG命令はMPEG符号化及び復号化に特に適した命令語の分類であるが、多様な方式で用いられることができる。MPEG命令はint8,int9,int16及びint32データ型を支援し、エレメントマスクによって影響される。下表はMPEG命令を列挙する。
【0170】
【表40】
Figure 0003983857
【0171】
それぞれのデータ型変換(Data Type Conversion)命令は特定データ型を支援し、アーキテクチャがレジスタにある1つ以上のデータ型を支援しないために、エレメントマスクによって影響されない。下表はデータ型変換命令を列挙する。
【0172】
【表41】
Figure 0003983857
【0173】
命令のエレメント間算術(Inter-element Arithmetic)分類はint8,int9,int16,int32及び浮動データ型を支援する。下表はエレメント間算術分類を列挙する。
【0174】
【表42】
Figure 0003983857
【0175】
命令のエレメント間移動(Inter-element Move)分類はバイト、バイト9、ハーフワード及びワードデータサイズを支援する。下表は命令のエレメント間移動分類を列挙する。
【0176】
【表43】
Figure 0003983857
【0177】
ロード/貯蔵(Load/Store)命令はバイト、ハーフワード、及びワードデータサイズの他に特殊なバイト9関連データサイズ演算を支援し、エレメントマスクによって影響されない。下表はロード/貯蔵分類にある命令を列挙する。
【0178】
【表44】
Figure 0003983857
【0179】
大部分のレジスタ移動(Register Move)命令はint8,int9,int16,int32及び浮動データ型を支援し、エレメントマスクによって影響されない。VCMOVM命令のみはエレメントマスクによって影響される。下表は命令のレジスタ移動分類を列挙する。
【0180】
【表45】
Figure 0003983857
【0181】
下表はキャッシュサブシステム130を制御するキャッシュ演算(Cache Operation)分類にある命令を列挙する。
【0182】
【表46】
Figure 0003983857
【0183】
命令語説明命名
命令語セットの明細を簡単にするために、本実施例全般にわたって特殊な用語が用いられる。例えば、命令語オペランドは別に定義されない限り、バイト、バイト9、ハーフワード或いはワードサイズの符号のある2の補数整数である。“レジスタ”という用語は汎用(スカラ或いはベクトル)レジスタを指すのに用いられる。他の種類のレジスタは明示的に説明されている。アセンブリ言語構文(syntax)において、添え字b,b9,h及びwはデータサイズ(バイト、バイト9、ハーフワード、及びワード)と整数データ型(int8,int9,int16,及びint32)の全てを指称する。また、命令語オペランド、演算、及びアセンブリ言語構文の説明に用いられた用語とニモニックは次の通りである:
Rd:目的地レジスタ(ベクトル、スカラ或いは特殊目的用)
Ra,Rb:ソースレジスタa及びb(ベクトル、スカラ或いは特殊目的用)
Rc:ソース或いは目的地レジスタc(ベクトル或いはスカラ)
Rs:データソースレジスタ貯蔵(ベクトル或いはスカラ)
S:32ビットスカラ或いは特殊目的レジスタ
VR:現在のバンクベクトルレジスタ
VRA:代替バンクベクトルレジスタ
VR0:バンク0ベクトルレジスタ
VR1:バンク1ベクトルレジスタ
VRd:ベクトル目的地レジスタ(VRAが明示されていない限り、現在のバンクに対するデフォルト)
VRa,VRb:ベクトルソースレジスタa及びb
VRc:ベクトルソース或いは目的地レジスタc
VRs:ベクトル貯蔵データソースレジスタ
VAC0H:ベクトル累算器レジスタ0ハイ
VAC0L:ベクトル累算器レジスタ0ロー
VAC1H:ベクトル累算器レジスタ1ハイ
VAC1L:ベクトル累算器レジスタ1ロー
SRd:スカラ目的地レジスタ
SRa,SRb:スカラソースレジスタa及びb
SRb+:有効アドレスによるベースレジスタの更新
SRs:スカラ貯蔵データソースレジスタ
SP:特殊目的レジスタ
VR[i]:ベクトルレジスタVRにおけるi番目のエレメント
VR[i]〈a:b〉:ベクトルレジスタVRにおけるi番目のエレメントのビットa乃至b
VR[i]〈msb〉:ベクトルレジスタVRにおけるi番目のエレメントの最上位ビット
EA:メモリアクセスのための有効アドレス
MEM:メモリ
BYTE[EA]:EAによってアドレスされるメモリの1バイト
HALF[EA]:EAによってアドレスされるメモリのハーフワード。ビット〈15:8〉がEA+1によってアドレスされる。
WORD[EA]: EAによってアドレスされるメモリのワード。ビット〈31:24〉がEA+3によってアドレスされる。
NumElem:所定のデータ型に対するエレメントの数を示す。これはVEC32モードでバイト、バイト9、ハーフワード、或いはワードデータサイズのそれぞれに対して32,16,或いは8である。これはVEC64モードでバイト、バイト9、ハーフワード、或いはワードデータサイズのそれぞれに対して64,32,或いは16である。スカラ演算の場合、NumElemは0である。
EMASK[i]: i番目のエレメントに対するエレメントマスクを指す。これはバイト、バイト9、ハーフワード、或いはワードデータサイズに対してそれぞれVGMR0/1,〜VGMR0/1,VMMR0/1,〜VMMR0/1を表現する。スカラ演算の場合、エレメントマスクはEMASK[i]=0であってもセットされると仮定する。
MMASK[i]:i番目のエレメントに対するエレメントマスクを指称する。これはバイト、バイト9、ハーフワード、或いはワードデータサイズに対してそれぞれVMMR0或いはVMMR1にある1,2或いは4ビットを表現する。
VCSR:ベクトル制御及び状態レジスタ
VCSR〈x〉:VCSRにあるビット或いは複数のビットを示す。“x”はフィールド名である。
VPC:ベクトルプロセッサプログラムカウンタ
VECSIZE:ベクトルレジスタサイズはVEC32で32、VEC64モードで64である。
SPAD:スクラッチパッド
【0184】
Cプログラミング構造は演算の制御流れを説明するのに用いられる。例外は次の通りである:
= 割当(assignment)
: 連結(consatenation)
{x‖y} xとyの間の選択を指す(論理的でないまたは)
sex 指定されたデータサイズへの符号拡張
sex-dp 指定されたデータサイズの倍精度に符号拡張する
sign≫ 符号拡張された(算術)右側シフト
zex 指定されたデータサイズへのゼロ拡張
zero≫ ゼロ拡張された(論理的)右側シフト
≪ 左側シフト(ゼロ充てん(fill in))
trnc7 先頭7ビット(ハーフワードから)を打ち切る(truncate)
trac1 先頭1ビット(バイト9から)を打ち切る
% モジュロ演算者
|expression| 式の絶対値
/ 分割(浮動トデータ型の場合、4つのIEEEラウンディングモードのうち一つを使用する)
// 分割(ラウンドアウェイフロムゼロラウンディングモードを用いる。)
飽和( ) 整数データ型の場合、オーバフローを生成する代わりに最陰或いは最陽の値まで飽和する。浮動データ型の場合、飽和は陽の無限大、陽のゼロ、陰のゼロ、或いは陰の無限大に行われることができる。
【0185】
全般的な命令語フォーマットは図10に表示されており、下記に説明される。
REARフォーマットはロード、貯蔵及びキャッシュ演算命令によって用いられ、REARフォーマットにあるフィールドは下表に提示されたように次の意味をもつ。
【0186】
【表47】
Figure 0003983857
【0187】
ビット17:15は予約されており、アーキテクチャで未来の拡張と互換するためにゼロでなければならない。B:DとTTフィールドの一部符号化は定義されない。
プログラマはこのような符号化が用いられる時にアーキテクチャが予想される結果を指定しないために、前記のような符号化を使用してはいけない。下表はVEC32とVEC64モードで支援される(LTとしてTTフィールドで符号化される〉スカラロード演算を示す。
【0188】
【表48】
Figure 0003983857
【0189】
下表はビットVCSR〈0〉がクリアする時、VEC32モードで(LTとしてTTフィールドで符号化される)支援されるベクトルロード演算を示す。
【0190】
【表49】
Figure 0003983857
【0191】
Bビットは現在或いは交替バンクの指示に用いられる。
下表はビットVCSR〈0〉ビットがセットされる時、VEC64モードで(LTとしてTTフィールドで符号化される)支援されるベクトルロード演算を示す。
【0192】
【表50】
Figure 0003983857
【0193】
Bビットは現在及び代替バンクの概念がVEC64モードに存在しないために、64バイトベクトル演算の指示に用いられる。
下表はVEC32及びVEC64モードの両方で(STとしてTTフィールドで符号化される)支援されるスカラ貯蔵演算を列挙する。
【0194】
【表51】
Figure 0003983857
【0195】
下表はビットVCSR〈0〉がクリアの時、VEC32モードで(STとしてフィールドTTで符号化される)支援されるベクトル貯蔵演算を列挙する。
【0196】
【表52】
Figure 0003983857
【0197】
下表はビットVCSR〈0〉がセットされる時、VEC64モードで(STとしてTTフィールドで符号化される)支援されるベクトル貯蔵演算を列挙する。
【0198】
【表53】
Figure 0003983857
【0199】
Bビットは現在及び代替バンクの概念がVEC64モードに存在しないために、64バイトベクトル演算の指示に用いられる。
REAIフォーマットはロード、貯蔵及びキャッシュ演算命令によって用いられる。下表はREAIフォーマットにあるフィールドの意味を示す。
【表54】
Figure 0003983857
【0200】
REAR及びREAIフォーマットは伝達型に対して同一の符号化を適用する。追加的な符号化に対してはREARフォーマットを参考する。
RRRM5フォーマットは3つのレジスタ或いは2つのレジスタ及び5ビット即値オペランドを提供する。下表はRRRM5フォーマットに対するフィールドを示す。
【0201】
【表55】
Figure 0003983857
【0202】
ビット19:15は予約(RESERVED)されており、アーキテクチャにおける未来の拡張と互換するようにゼロでなければならない。
全てのベクトルレジスタオペランドは別に定義されない限り、現在のバンク(これはバンク0或いはバンク1のいずれかになることができる)を参照する。下表はDS〈1:0〉が00,01,或いは10の時、D:S:M符号化を列挙する。
【0203】
【表56】
Figure 0003983857
【0204】
DS〈1:0〉が11の時、D:S:M符号化は次の意味をもつ。
【0205】
【表57】
Figure 0003983857
【0206】
RRRRフォーマットは4つのレジスタオペランドを提供する。
下表はRRRRフォーマットのフィールドを示す。
【0207】
【表58】
Figure 0003983857
【0208】
全てのベクトルレジスタオペランドは別に定義されない限り、現在のバンク(これはバンク0またはバンク1のいずれかになることができる)を参照する。
R1フォーマットはロード即値命令によって用いられる。下表はRIフォーマットのフィールドを示す。
【0209】
【表59】
Figure 0003983857
【0210】
F:DS〈1:0〉フィールドの任意の符号化は定義されていない。プログラマはこのような符号化が用いられると、アーキテクチャが予想される結果を明示しないために、これら符号化を使用してはいけない。Rdにロードされる値は下表に示したようにデータ型による。
【0211】
【表60】
Figure 0003983857
【0212】
CTフォーマットは下表に示したフィールドを含む。
【0213】
【表61】
Figure 0003983857
【0214】
分岐条件はVCSR[GT:EQ:LT]フィールドを用いる。オーバフロー条件はセットされると、GT,EQ,及びLTビットに先行するVCSR[SO]ビットを用いる。VCCSとVCBARRは前述とは異なり、Cond〈2:0〉フィールドを解釈する。細部事項をついてはそれら命令説明をを参考する。
RRRM9フォーマットは3つのレジスタ或いは2つのレジスタ及び9ビット即値オペランドを明示する。下表はRRRM9フォーマットのフィールドを示す。
【0215】
【表62】
Figure 0003983857
【0216】
ビット19:15はD:S:M符号化が即値オペランドを明示しない時に予約され、未来の互換性を保障するためにゼロでなければならない。
全てのベクトルレジスタオペランドは別に定義されない限り、現在のバンク(これはバンク0或いはバンク1のいずれかになることができる〉を参照する。D:S:M符号化は即値フィールドから抽出された即値が下表に示すようにDS〈1:0〉符号化によって左右されることを除いてはRRRM5フォーマットに対する表56及び表57に示されていることと同一である。
【0217】
【表63】
Figure 0003983857
【0218】
即値フォーマットは浮動データ型とは一緒に使用することができない。
次にMSPベクトル命令が次のアルファベット順で示される。注:
1.命令は別に定義されない限り、エレメントマスクによって影響される。CTフォーマット命令はエレメントマスクによって影響されない。ロード、貯蔵、及びキャッシュ命令からなるREARとREAIフォーマット命令もやはりエレメントマスクによって影響されない。
2.9ビット即値オペランドは浮動データ型とは使用することができない。
3.演算(operation)説明において、ベクトル形式(form)のみが提示される。スカラ演算の場合、単に一つのみを仮定すると、0番目のエレメントが定義される。
4.RRRM5とRRRM9フォーマットの場合、次の符号化が整数データ型(b,b9,h,w)に用いられる。
【表64】
Figure 0003983857
5.RRRM5とRRRM9フォーマットの場合、次の符号化が浮動データ型に用いられる。
【表65】
Figure 0003983857
6.オーバフローを誘発する全ての命令に対して、VCSR〈ISAT〉ビットがセットされる時、int8,int9,int6,int32最大或いは最小限界値までの飽和が適用される。従って、浮動小数点結果はVCSR〈FSAT〉ビットがセットされる時に(−)無限大,(−)ゼロ,(+)ゼロ,或いは(+)無限大まで飽和する。
7.構文から見て、.nはバイト9データサイズを示すために、.b9の代わりに用いられることができる。
8.全ての命令に対して、目的地レジスタ或いはベクトル累算器に返還された浮動小数点結果はIEEE754単精度フォーマットである。浮動小数点結果は累算器の下部に記録され、上部は修正されない。
【0219】
VAAS3 加算及び(1,0,1)の符号加算
●フォーマット
【数13】
Figure 0003983857
●アセンブラ構文
VAAS3.dt VRd,VRa,VRb
VAAS3.dt VRd,VRa,SRb
VAAS3.dt SRd,SRa,SRb
ここで、dt={b,b9,h,w}
●支援モード
【数14】
Figure 0003983857
●説明
ベクトル/スカラレジスタRaの内容がRbに加算されて中間結果を生成し、その後中間結果はRaの符号に加算され、最終結果はベクトル/スカラレジスタRdに貯蔵される。
●演算
【数15】
Figure 0003983857
●例外
オーバフロー
【0220】
VADAC 加算及び累算
●フォーマット
【数16】
Figure 0003983857
●アセンブラ構文
VADAC.dt VRc,VRd,VRa,VRb
VADAC.dt SRc,SRd,SRa,SRb
ここで、dt={b,b9,h,w}。
●支援モード
【数17】
Figure 0003983857
●説明
RaとRbオペランドの各エレメントをベクトル累算器のそれぞれの倍精度エレメントに加算し、各エレメントの倍精度の和をベクトル累算器と目的地レジスタRc及びRdの全てに貯蔵する。Ra及びRbは指定されたデータ型を使用するに反して、VACは適当な倍精度データ型(int8,int9,int16,及びint32のそれぞれに対して16,18,32,及び64ビット)を用いる。それぞれの倍精度エレメントの上部はVACHとRcに貯蔵され、Rcにあるその結果は定義されない。
●演算
【数18】
Figure 0003983857
VADACL 加算及びロー累算
●フォーマット
【数19】
Figure 0003983857
●アセンブラ構文
VADACL.dt VRd,VRa,VRb
VADACL.dt VRd,VRa,SRb
VADACL.dt VRd,VRa,#IMM
VADACL.dt SRd,SRa,SRb
VADACL.dt SRd,SRa,#IMM
ここで、dt={b,b9,h,w}。
●支援モード
【数20】
Figure 0003983857
●説明
RaとRb/即値オペランドの各エレメントをベクトル累算器のそれぞれの拡張された精度エレメントに加算し、拡張された精度の合計をベクトル累算器に貯蔵し、その下位精度を目的地レジスタRdに返還する。Ra及びRb/即値は指定されたデータ型を使用するに対して、VACは適当な倍精度データ型(int8,int9,int16及びint32にそれぞれに対して16,18,32及び64ビット)を用いる。それぞれの拡張された精度エレメントの上部はVACHに貯蔵される。
●演算
【数21】
Figure 0003983857
【0221】
VADD 加算
●フォーマット
【数22】
Figure 0003983857
●アセンブラ構文
VADD.dt VRd,VRa,VRb
VADD.dt VRd,VRa,SRb
VADD.dt VRd,VRa,#IMM
VADD.dt SRd,SRa,SRb
VADD.dt SRd,SRa,#IMM
ここで、dt={b,b9,h,w,f}。
●支援モード
【数23】
Figure 0003983857
●説明
RaとRb/即値オペランドを加算し、その合計を目的地レジスタRdに返還する。
●演算
【数24】
Figure 0003983857
●例外
オーバフロー、浮動小数点無効オペランド
【0222】
VADDH 隣接する2つのエレメント加算
●フォーマット
【数25】
Figure 0003983857
●アセンブラ構文
VADDH.dt VRd,VRa,VRb
VADDH.dt VRd,VRa,SRb
ここで、dt={b,b9,h,w,f}。
●支援モード
【数26】
Figure 0003983857
●説明
【数27】
Figure 0003983857
●演算
【数28】
Figure 0003983857
●例外
オーバフロー、浮動小数点無効オペランド
●プログラミング注釈
この命令はエレメントマスクによって影響されない。
【0223】
VAND AND
●フォーマット
【数29】
Figure 0003983857
●アセンブラ構文
VAND.dt VRd,VRa,VRb
VAND.dt VRd,VRa,SRb
VAND.dt VRd,VRa,#IMM
VAND.dt SRd,SRa,SRb
VAND.dt SRd,SRa,#IMM
ここで、dt={b,b9,h,w},.wと.fが同一演算を明示することに留意する。
●支援モード
【数30】
Figure 0003983857
●説明
Ra及びRb/即値オペランドを論理的にANDし、その結果を目的地レジスタRdに返還する。
●演算
【数31】
Figure 0003983857
●例外
無し
【0224】
VANDC AND補数
●フォーマット
【数32】
Figure 0003983857
●アセンブラ構文
VANDC.dt VRd,VRa,VRb
VANDC.dt VRd,VRa,SRb
VANDC.dt VRd,VRa,#IMM
VANDC.dt SRd,SRa,SRb
VANDC.dt SRd,SRa,#IMM
ここで、dt={b,b9,h,w},.wと.fが同一の演算を明示することに留意する。
●支援モード
【数33】
Figure 0003983857
●説明
Ra及びRb/即値オペランドの補数を論理的にADNし、その結果を目的地レジスタRdに返還する。
●演算
【数34】
Figure 0003983857
●例外
無し
【0225】
VASA 算術シフト累算器
●フォーマット
【数35】
Figure 0003983857
●アセンブラ構文
VASAL.dt
VASAR.dt
ここで、dt={b,b9,h,w}であり、Rは左側或いは右側のシフト方向を示す。
●支援モード
【数36】
Figure 0003983857
●説明
ベクトル累算器レジスタの各データエレメントはゼロが右側(もしR=0であれば)から充てん(fill)され、1ビット位置だけシフトされるか或いは符号拡張(もしR=1であれば)で1ビット位置だけ右にシフトされる。この結果はベクトル累算器に貯蔵される。
●演算
【数37】
Figure 0003983857
●例外
オーバフロー
【0226】
VASL 左側算術シフト
●フォーマット
【数38】
Figure 0003983857
●アセンブラ構文
VASL.dt VRd,VRa,SRb
VASL.dt VRd,VRa,#IMM
VASL.dt SRd,SRa,SRb
VASL.dt SRd,SRa,#IMM
ここで、dt={b,b9,h,w}。
●支援モード
【数39】
Figure 0003983857
●説明
ベクトル/スカラレジスタRaの各データエレメントはスカラレジスタRb或いはIMMフィールドに与えられたシフト量だけゼロが右側から充てんされ1ビット左にシフトされ、その結果はベクトル/スカラレジスタRdに貯蔵される。このようなエレメントがオーバフローを発生させると、その結果はその符号によって最大陽或いは最大陰の値まで飽和する。前記シフト量は符号のない整数となるように定義される。
●演算
【数40】
Figure 0003983857
●例外
なし
●プログラミング注釈
shift_amountはSRb或いはIMM〈4:0〉から5ビット数字として取られる。バイト、ハーフワードデータ型の場合、プログラマはデータサイズにおいてビットの数字より小さいかもしくは等しいシフト量を正確に明示する責任がある。もしシフト量が指定されたデータサイズより大きければ、エレメントはゼロで充てんされる。
【0227】
VASR 右側算術シフト
●フォーマット
【数41】
Figure 0003983857
●アセンブラ構文
VASR.dt VRd,VRa,SRb
VASR.dt VRd,VRa,#IMM
VASR.dt SRd,SRa,SRb
VASR.dt SRd,SRa,#IMM
ここで、dt={b,b9,h,w}。
●支援モード
【数42】
Figure 0003983857
●説明
ベクトル/スカラレジスタRaの各データエレメントはスカラレジスタRb或いはIMMフィールドの最下位ビットに与えられたシフト量だけ最上位ビット位置で符号が拡張されて右に算術的にシフトされ、その結果はベクトル/スカラレジスタRdに貯蔵される。シフト量は符号のない整数となるように定義される。
●演算
【数43】
Figure 0003983857
●例外
なし
●プログラミング注釈
shift_amountはSRb或いはIMM〈4:0〉から5ビット数字として取られる。バイト、バイト9、ハーフワードデータ型の場合、プログラマはデータサイズにおいてビットの数字より小さいか等しいシフト量を正確に明示する責任がある。もしシフト量が指定されたデータサイズより大きければ、エレメントは符号ビットで充てんされる。
【0228】
VASS3 加算及び(−1,0,1)の符号減算
●フォーマット
【数44】
Figure 0003983857
●アセンブラ構文
VASS3.dt VRd,VRa,VRb
VASS3.dt VRd,VRa,SRb
VASS3.dt SRd,SRa,SRb
ここで、dt={b,b9,h,w}。
●支援モード
【数45】
Figure 0003983857
●説明
ベクトル/スカラレジスタRaの内容がRbに加算されて中間結果を出し、その後前記中間結果からRaの符号が減算され、最終結果がベクトル/スカラレジスタRdに貯蔵される。
●演算
【数46】
Figure 0003983857
●例外
オーバフロー
【0229】
VASUB 減算の絶対値
●フォーマット
【数47】
Figure 0003983857
●アセンブラ構文
VASUB.dt VRd,VRa,VRb
VASUB.dt VRd,VRa,SRb
VASUB.dt VRd,VRa,#IMM
VASUB.dt SRd,SRa,SRb
VASUB.dt SRd,SRa,#IMM
ここで、dt={b,b9,h,w}。
●支援モード
【数48】
Figure 0003983857
●説明
ベクトル/スカラレジスタRb或いはIMMフィールドの内容がベクトル/スカラレジスタRaの内容から減算され、その結果がベクトル/スカラレジスタRdに貯蔵される。
●演算
【数49】
Figure 0003983857
●例外
オーバフロー
【0230】
VAVG 2つのエレメントの平均
●フォーマット
【数50】
Figure 0003983857
●アセンブラ構文
VAVG.dt VRd,VRa,VRb
VAVG.dt VRd,VRa,SRb
VAVG.dt SRd,SRa,SRb
ここで、dt={b,b9,h,w,f}であり、VAVGTを用いて整数データ型に対する“打切り(truncate)”ラウンディングモードを指定する。
●支援モード
【数51】
Figure 0003983857
●説明
ベクトル/スカラレジスタRaの内容がベクトル/スカラレジスタRbの内容に加えられて中間結果を出し、その後中間結果は2で割り、最終結果がベクトル/スカラレジスタRdに貯蔵される。整数データ型の場合、ラウンディングモードはもしT=1であれば打ち切り、もしT=0(デフォルト)であればゼロからラウンドアェイされる。浮動データ型の場合、ラウンディングモードはVCSR〈RMODE〉に指定されている。
●演算
【数52】
Figure 0003983857
●例外
なし
【0231】
VAVGH 隣接する2つのエレメントの平均
●フォーマット
【数53】
Figure 0003983857
●アセンブラ構文
VAVGH.dt VRd,VRa,VRb
VAVGH.dt VRd,VRa,SRb
ここで、dt={b,b9,h,w,f}であり、VAVGHTを用いて整数データ型に対する“打切り(truncate)”ラウンディングモードを指定する。
●支援モード
【数54】
Figure 0003983857
●説明
各エレメントに対して、エレメントの隣接する2つの対を平均する。整数データ型の場合、ラウンディングモードはもしT=1であれば打ち切り、もしT=0(デフォルト)であればゼロからラウンドアェイされる。浮動データ型の場合、ラウンディングモードはVCSR〈RMODE〉に指定されている。
【数55】
Figure 0003983857
●演算
【数56】
Figure 0003983857
●例外
なし
●プログラミング注釈
この命令はエレメントマスクによって影響されない。
【0232】
VAVGQ Quad平均
●フォーマット
【数57】
Figure 0003983857
●アセンブラ構文
VAVGQ.dt VRd,VRa,VRb
ここで、dt={b,b9,h,w}であり、VAVGQTを用いて整数データ型に対する“打切り(truncate)”ラウンディングモードを指定する。
●支援モード
【数58】
Figure 0003983857
●説明
この命令はVEC64モードに支援されない。以下の図に示されているように、T(打切りのために1、ゼロからのラウンドアェイのために0、デフォルト)に指定されたラウンディングモードを使用して4つのエレメントの平均を算出する。最左側エレメント(Dn-1)は定義されていない。
【数59】
Figure 0003983857
●演算
【数60】
Figure 0003983857
●例外
なし
【0233】
VCACHE キャッシュ演算
●フォーマット
【数61】
Figure 0003983857
●アセンブラ構文
VCACHE.fc SRb,SRi
VCACHE.fc SRb,#IMM
VCACHE.fc SRb+,SRi
VCACHE.fc SRb+,#IMM
ここで、fc={0,1}。
●説明
この命令はベクトルデータキャッシュのソフトウェア管理のために提供される。前記データキャッシュの一部或いは全部がスクラッチパッドから構成される時、この命令はスクラッチパッドに影響を与えない。
【0234】
【表66】
Figure 0003983857
【0235】
●演算
●例外
なし
●プログラミング注釈
この命令はエレメントマスクによって影響されない
【0236】
VCAND 補数AND
●フォーマット
【数62】
Figure 0003983857
●アセンブラ構文
VCAND.dt VRd,VRa,VRb
VCAND.dt VRd,VRa,SRb
VCAND.dt VRd,VRa,#IMM
VCAND.dt SRd,SRa,SRb
VCAND.dt SRd,SRa,#IMM
ここで、dt={b,b9,h,w}であり、.wと.fが同一の演算を指定することに留意する。
●支援モード
【数63】
Figure 0003983857
●説明
RaとRb/即値オペランドの補数を論理的にANDし、その結果は目的地レジスタRdに返還する。
●演算
【数64】
Figure 0003983857
●例外
なし
【0237】
VCBARR 条件バリヤ
●フォーマット
【数65】
Figure 0003983857
●アセンブラ構文
VCBARR.cond
ここで、cond={0,−7}、それぞれの条件は後からニモニック(mnemonic)で与えられる。
●説明
条件が有効である限り、命令と全ての後続命令(後でプログラム順序に表れる命令)を停滞させる。Cond〈2:0〉フィールドはCTフォーマットで他の条件命令とは相違するように解析される。
【表67】
Figure 0003983857
●演算
【数66】
Figure 0003983857
●例外
なし
●プログラミング注釈
この命令は命令実行を強制に一連化させるためにソフトウェアに提供される。この命令は強制に不正確な実行を正確に報告させるに用いられることができる。例えば、もしこの命令が例外を誘発する虞のある算術命令の直後に用いられると、この例外はプログラムカウンタがこの命令をアドレスするものと報告される。
【0238】
VCBR 条件分岐
●フォーマット
【数67】
Figure 0003983857
●アセンブラ構文
VCBR.cond #Offset
ここで、cond={un,lt,eq,le,gt,ne,ge,ov}。
●説明
Condが真であれば分岐する。これは遅延した分岐ではない。
●演算
【数68】
Figure 0003983857
●例外
無効命令アドレス
【0239】
VCBRI 条件分岐インダイレクト
●フォーマット
【数69】
Figure 0003983857
●アセンブラ構文
VCBRI.cond SRb
ここで、cond={un,lt,eq,le,gt,ne,ge,ov}。
●説明
Condが真であれば、分岐する。これは遅延した分岐ではない。
●演算
【数70】
Figure 0003983857
●例外
無効命令アドレス
【0240】
VCCS 条件文脈切換
●フォーマット
【数71】
Figure 0003983857
●アセンブラ構文
VCCS #Offset
●説明
もしVIMSK〈cse〉が真であれば、文脈切換サブルーチンにジャンプする。これは遅延した分岐ではない。もし、VIMSK〈cse〉が真であれば、VPC+4(返還アドレス)が返還アドレススタックに貯蔵される。もしそうでなければ、実行はVPC+4で続けられる。
●演算
【数72】
Figure 0003983857
●例外
返還アドレススタックオーバフロー
【0241】
VCHGCR 制御レジスタ変更
●フォーマット
【数73】
Figure 0003983857
●アセンブラ構文
VCHGCRモード
●説明
この命令はベクトルプロセッサの動作モードを変える。モードにある各ビットは次のように指定される:
【表68】
Figure 0003983857
●演算
●例外
なし
●プログラミング注釈
この命令はVMOV命令で可能なものよりさらに効率的な方法でVCSRにある制御ビットを変更するためにハードウェアに提供される。
【0242】
VCINT 条件インタラプトARM7
●フォーマット
【数74】
Figure 0003983857
●アセンブラ構文
VCINT.cond #ICODE
ここで、cond={un,lt,eq,le,gt,ne,ge,ov}。
●説明
もしCondが真であれば、実行を中止し、もしイネーブルされれば、ARM7をインタラプトする。
●演算
【数75】
Figure 0003983857
●例外
VCINTインタラプト
【0243】
VCJOIN ARM7タスクと条件結合
●フォーマット
【数76】
Figure 0003983857
●アセンブラ構文
VCJOIN.cond #Offsset
ここで、cond={un,lt,eq,le,gt,ne,ge,ov}。
●説明
もしCondが真であれば、実行を中止し、もしイネーブルされれば、ARM7をインタラプトする。
●演算
【数77】
Figure 0003983857
●例外
VCJOINインタラプト
【0244】
VCJSR サブルーチンへの条件ジャンプ
●フォーマット
【数78】
Figure 0003983857
●アセンブラ構文
VCJSR.cond #Offsset
ここで、cond={un,lt,eq,le,gt,ne,ge,ov}。
●説明
もしCondが真であれば、サブルーチンにジャンプする。これは遅延した分岐ではない。
もしCondが真であれば、VPC+4(返還アドレス)が返還アドレススタックに貯蔵される。もしそうでなければ、実行はVPC+4で続けられる。
●演算
【数79】
Figure 0003983857
●例外
返還アドレススタックオーバフロー
【0245】
VCJSRI サブルーチンインダイレクトに条件ジャンプ
●フォーマット
【数80】
Figure 0003983857
●アセンブラ構文
VCJSRI.cond SRb
ここで、cond={un,lt,eq,le,gt,ne,ge,ov}。
●説明
もしCondが真であれば、サブルーチンにインダイレクトジャンプする。これは遅延した分岐でない。
もしCondが真であれば、VPC+4(返還アドレス)が返還アドレススタックに貯蔵される。もしそうでなければ、実行はVPC+4で続けられる。
●演算
【数81】
Figure 0003983857
●例外
返還アドレススタックオーバフロー
【0246】
VCMOV 条件移動
●フォーマット
【数82】
Figure 0003983857
●アセンブラ構文
VCMOV.dt Rd,Rb,cond
VCMOV.dt Rd,#IMM,cond
ここで、dt={b,b9,h,w,f}、cond={un, lt,eq,le,gt,ne,ge,ov}。.fデータ型 が9ビット即値オペランドと共に支援されないことを除いては、. fと.wは同一の演算を指定していることに留意する。
●支援モード
【数83】
Figure 0003983857
●説明
もしCondが真であれば、レジスタRbの内容がレジスタRdに移動される。ID〈1:0〉はソースと目的地レジスタを付加的に明示する。
VR 現在のバンクベクトルレジスタ
SR スカラレジスタ
SY 同期化レジスタ
VAC ベクトル累算器レジスタ(VACレジスタ符号化に対するVMOV説明を参照する。)
【表69】
Figure 0003983857
●演算
【数84】
Figure 0003983857
●例外
なし
●プログラミング注釈
この命令はエレメントマスクによって影響されない。VCMOVMはエレメントマスクによる影響を受ける。ベクトル累算器にある拡張された浮動小数点精度表現は8エレメントに対して全ての576ビットを使用する。従って、累算器に関係したベクトルレジスタ移動は.b9データサイズを明示すべきである。
【0247】
VCMOVM エレメントマスクと条件移動
●フォーマット
【数85】
Figure 0003983857
●アセンブラ構文
VCMOVM.dt Rd,Rb,cond
VCMOVM.dt Rd,#IMM,cond
ここで、dt={b,b9,h,w,f}、cond={un, lt,eq,le,gt,ne,ge,ov}、.fデータ型 が9ビット即値オペランドと共に支援されないことを除いては. fと.wは同一の演算を指定していることに留意する。
●支援モード
【数86】
Figure 0003983857
●説明
もしCondが真であれば、レジスタRbの内容がレジスタRdに移動される。また、ID〈1:0〉はソースと目的地レジスタを付加的に明示する。
SR スカラレジスタ
VAC ベクトル累算器レジスタ(VACレジスタ符号化に対するVMOV説明を参照する。)
【表70】
Figure 0003983857
●演算
【数87】
Figure 0003983857
●例外
なし
●プログラミング注釈
この命令はVMMRエレメントマスクによる影響を受ける。VCMOVはエレメントマスクによって影響されない。ベクトル累算器にある拡張された浮動小数点精度表現は8エレメントに対して全ての576ビットを使用する。従って、累算器に関係したベクトルレジスタ移動は.b9データサイズを明示すべきである。
【0248】
VCMPV マスクの比較及びセット
●フォーマット
【数88】
Figure 0003983857
●アセンブラ構文
VCMPV.dt VRd,VRb,cond.mask
VCMPV.dt VRd,SRb,cond.mask
ここで、dt={b,b9,h,w,f}、cond={lt, eq,le,gt,ne,ge}、mask={VGMR,V MMR}、もしいずれのマスクも指定されていなければ、VG MRが仮定される。
●支援モード
【数89】
Figure 0003983857
●説明
ベクトルレジスタVRa及びVRbの内容が減算演算(VRa[i]−VRb[i])を行うことによりエレメント方式で比較され、(もしK=0であれば)VGMR或いは(もしK=1であれば)VMMRレジスタにある対応するビット#iは比較の結果がVCMPV命令のCondフィールドと一致するとセットされる。例えば、もしCondフィールドが(LT)より小さい場合、VGMR[i]またはVMMR[i]ビットがもしVRa[i]<VRb[i]であればセットされる。
●演算
【数90】
Figure 0003983857
●例外
なし
●プログラミング注釈
この命令はエレメントマスクによって影響されない。
【0249】
VCNTLZ 先頭ゼロのカウント
●フォーマット
【数91】
Figure 0003983857
●アセンブラ構文
VCNTLZ.dt VRd,VRb
VCNTLZ.dt SRd,SRb
ここで、dt={b,b9,h,w}。
●支援モード
【数92】
Figure 0003983857
●説明
Rbにある各エレメントに対して、先頭ゼロの数をカウントし、Rdにカウントを返還する。
●演算
【数93】
Figure 0003983857
●例外
なし
●プログラミング注釈
もしエレメントにある全てのビットがゼロであれば、その結果はエレメントサイズ(バイト、バイト9、ハーフワード、或いはワードのそれぞれに対して8,9,16,或いは32)と同一である。先頭ゼロのカウントは(もしVCMPR命令以後に用いられる場合)エレメント位置のインデックスと反転関係をもつ。エレメント位置に変換するため、所定のデータ型に対してNumElemからVCNTLZの結果を減算する。
【0250】
VCOR ORの補数
●フォーマット
【数94】
Figure 0003983857
●アセンブラ構文
VCOR.dt VRd,VRa,VRb
VCOR.dt VRd,VRa,SRb
VCOR.dt VRd,VRa,#IMM
VCOR.dt SRd,SRa,SRb
VCOR.dt SRd,SRa,#IMM
ここで、dt={b,b9,h,wであり}、.wと.fが同一の演算を明示することに留意する。
●支援モード
【数95】
Figure 0003983857
●説明
Ra及びRb/即値オペランドの補数を論理的にORし、その結果を目的地レジスタRdに返還する。
●演算
【数96】
Figure 0003983857
●例外
なし
【0251】
VCRSR サブルーチンからの条件返還
●フォーマット
【数97】
Figure 0003983857
●アセンブラ構文
VCRSR.cond
ここで、cond={un,lt,eq,le,gt,ne,ge,ov}。
●説明
もしCondが真であれば、返還アドレススタックに貯蔵された返還アドレスから実行が続けられる。もしそうでなければ、VPC+4で実行を続ける。
●演算
【数98】
Figure 0003983857
●例外
無効命令アドレス、アドレススタックオーバフロー返還。
【0252】
VCVTB9 バイト9データ型の変換
●フォーマット
【数99】
Figure 0003983857
●アセンブラ構文
VCVTB9.md VRd,VRb
VCVTB9.md SRd,SRb
ここで、md={bb9,b9h,hb9}
●支援モード
【数100】
Figure 0003983857
●説明
Rbにある各エレメントはバイトからバイト9(bb9)へ、バイト9からハーフワード(b9h)へ、或いはハーフワードからバイト9(hb9)へ変換される。
●演算
【数101】
Figure 0003983857
●例外
なし
●プログラミング注釈
b9hモードと共にこの命令を使用する前に、プログラマはシャフル(shuffle)演算でベクトルレジスタにある減少したエレメントの数を調整する必要がある。hb9モードと共にこの命令を使用した後、プログラマはシャフル演算で目的地ベクトルレジスタにある増加したエレメントの数を調整する必要がある。この命令はエレメントマスクによって影響されない。
【0253】
VCVTFF 浮動小数点のを固定小数点への変換
●フォーマット
【数102】
Figure 0003983857
●アセンブラ構文
VCVTFF VRd,VRa,SRb
VCVTFF VRd,VRa,#IMM
VCVTFF SRd,SRa,SRb
VCVTFF SRd,SRa,#IMM
●支援モード
【数103】
Figure 0003983857
●説明
ベクトル/スカラレジスタRaの内容が32ビット浮動小数点からフォーマット〈X,Y〉の固定小数点実数に変換されるが、ここでYの幅はRb(モジュロ32)或いはIMMフィールドによって指定され、Xの幅は(32−Yの幅)によって指定される。Xは整数部分を指称し、Yは分数部分を指称する。その結果はベクトル/スカラレジスタRdに貯蔵される。
●演算
【数104】
Figure 0003983857
●例外
オーバフロー
●プログラミング注釈
この命令はワードデータサイズのみを支援する。この命令はアーキテクチャがレジスタ内の複数データ型を支援しないために、エレメントマスクを使用しない。この命令は整数データ型に対してゼロラウンディングモードからラウンドアウェイを使用する。
【0254】
VCVTIF 整数の浮動小数点への変換
●フォーマット
【数105】
Figure 0003983857
●アセンブラ構文
VCVTIF VRd,VRb
VCVTIF VRd,SRb
VCVTIF SRd,SRb
●支援モード
【数106】
Figure 0003983857
●説明
ベクトル/スカラレジスタRbの内容がint32から浮動データ型に変換され、その結果がベクトル/スカラレジスタRdに貯蔵される。
●演算
【数107】
Figure 0003983857
●例外
なし
●プログラミング注釈
この命令はワードデータサイズのみを支援する。この命令はアーキテクチャがレジスタ内の複数データ型を支援しないために、エレメントマスクを使用しない。
【0255】
VD1CBR VCR1の減少及び条件分岐
●フォーマット
【数108】
Figure 0003983857
●アセンブラ構文
VD1CBR.cond #Offset
ここで、cond={un,lt,eq,gt,ne, ge,ov}。
●説明
VCR1を減少させ、もしCondが真であれば分岐する。これは遅延した分岐ではない。
●演算
【数109】
Figure 0003983857
●例外
無効命令アドレス
●プログラミング注釈
VCR1は分岐条件が点検される前に減少されることに留意する。VCR1が0の時、この命令の実行はループカウントを232−1に効果的にセットさせる。
【0256】
VD2CBR VCR2の減少及び条件分岐
●フォーマット
【数110】
Figure 0003983857
●アセンブラ構文
VD2CBR.cond #Offset
ここで、cond={un,lt,eq,gt,ne, ge,ov}。
●説明
VCR2を減少させ、もしCondが真であれば分岐する。これは遅延した分岐ではない。
●演算
【数111】
Figure 0003983857
●例外
無効命令アドレス
●プログラミング注釈
VCR2は分岐条件が点検される前に減少されることに留意する。VCR2が0の時、この命令の実行はループカウントを232−1に効果的にセットさせる。
【0257】
VD3CBR VCR3の減少及び条件分岐
●フォーマット
【数112】
Figure 0003983857
●アセンブラ構文
VD3CBR,cond #Offset
ここで、cond={un,lt,eq,gt,ne,ge,ov}。
●説明
VCR3を減少させ、もしCondが真であれば分岐する。これは遅延した分岐ではない。
●演算
【数113】
Figure 0003983857
●例外
無効命令アドレス
●プログラミング注釈
VCR3は分岐条件が点検される前に減少されることに留意する。VCR3が0の時、この命令の実行はループカウントを232−1に効果的にセットさせる。
【0258】
VDIV2N 2 n による分割
●フォーマット
【数114】
Figure 0003983857
●アセンブラ構文
VDIV2N.dt VRd,VRa,VRb
VDIV2N.dt VRd,VRa,#IMM
VDIV2N.dt SRd,SRa,SRb
VDIV2N.dt SRd,SRa,#IMM
ここで、dt={b,b9,h,w}
●支援モード
【数115】
Figure 0003983857
●説明
ベクトル/スカラレジスタRaの内容を(ここでnがスカラレジスタRb或いはIMMの陽の整数である場合)2nによって割り、その結果がベクトル/スカラレジスタRdに貯蔵される。この命令はラウンディングモードとして打切り(truncate)(ラウンドツウワードゼロ)を使用する。
●演算
【数116】
Figure 0003983857
●例外
なし
●プログラミング注釈
NはSRb或いはIMM〈4:0〉から5ビット数として取られる。バイト、バイト9、ハーフワードデータ型の場合、プログラマはデータサイズにおける精度より小さいか等しいNの値を正確に明示する責任がある。もし明示されたデータサイズの精度より大きければ、エレメントが符号ビットで充てんされる。この命令はラウンドツウワードゼロラウンディングモードを使用する。
【0259】
VDIV2N.F 2 n 浮動による分割
●フォーマット
【数117】
Figure 0003983857
●アセンブラ構文
VDIV2N.f VRd,VRa,SRb
VDIV2N.f VRd,VRa,#IMM
VDIV2N.f SRd,SRa,SRb
VDIV2N.f SRd,SRa,#IMM
●支援モード
【数118】
Figure 0003983857
●説明
ベクトル/スカラレジスタRaの内容を(ここで、nがスカラレジスタRb或いはIMMの陽の整数である場合)2nによって割り、その結果がベクトル/スカラレジスタRdに貯蔵される。
●演算
【数119】
Figure 0003983857
●例外
なし
●プログラミング注釈
NがSRb或いはIMM〈4:0〉から5ビット数として取られることに留意する。
【0260】
VDIVI 初期化分割−不完全
●フォーマット
【数120】
Figure 0003983857
●アセンブラ構文
VDIVI.ds VRb
VDIVI.ds SRb
ここで、ds={b,b9,h,w}。
●支援モード
【数121】
Figure 0003983857
●説明
非復原符号付き整数除算の初期段階を実行する。被除数は累算器にある倍精度符号付き整数である。もし除数が単精度でれば、倍精度で符号が拡張されてVAC0H及びVAC0Lに貯蔵されるべきである。除数はRbにある単精度の符号付き整数である。
もし被除数の符号(sign)が除数の符号と同一であれば、Rbが累算器の上位から減算される、もしそうでなければ、Rbが累算器の上位に加算される。
●演算
【数122】
Figure 0003983857
●例外
なし
●プログラミング注釈
プログラマは除算段階以前にゼロケースでオーバフロー或いは除算を検出する責任がある。
【0261】
VDIVS 除算段階−不完全
●フォーマット
【数123】
Figure 0003983857
●アセンブラ構文
VDIVS.ds VRb
VDIVS.ds SRb
ここで、ds={b,b9,h,w}。
●支援モード
【数124】
Figure 0003983857
●説明
被復原符号付き除算の一つの循環段階を行う。この命令はデータサイズ(即ち、int8データ型に対して8回、int9に対して9回、int16に対して16回、そしてint32データ型に対して32回)だけ実行されるべきである。VDIVI命令は累算器で初期部分の残りを生成する除算段階前に使用されるべきである。除数はRbにある符号付き単精度整数である。一旦指数ビットが段階ごとに抽出されると、累算器の最下位ビットにシフトされる。
累算器にある部分残りの符号がRbにある除数の符号と同一であれば、Rbが累算器の上位から減算される。そうでなければ、Rbは累算器の上位に加えられる。もし累算器にある結果として現れる部分残り(加算或いは減算の結果)が除数の符号と同一であれば、指数ビットは1である。そうでなければ、指数ビットは0である。累算器は指数ビットを充てんするように1ビット位置だけ左にシフトされる。除算段階の結果として、残りは累算器の上位に、指数は累算器の下位にある。指数は1の補数形態である。
●演算
【0262】
VESL 1だけ左にエレメントをシフトする
●フォーマット
【数125】
Figure 0003983857
●アセンブラ構文
VESL.dt SRc,VRd,VRa,SRb
ここで、dt={b,b9,h,w,f}、.wと.fが同一の演算を明示することに留意する。
●支援モード
【数126】
Figure 0003983857
●説明
ベクトルレジスタRaにあるエレメントを1位置だけ左にシフトし、スカラレジスタRbから充てんする。シフトアウットされる最左側のエレメントはスカラレジスタRcに返還され、他のエレメントはベクトルレジスタRdに返還される。
【数127】
Figure 0003983857
●演算
●例外
なし
●プログラミング注釈
この命令はエレメントマスクによって影響されない。
【0263】
VESR 1だけ右にエレメントをシフトする
●フォーマット
【数128】
Figure 0003983857
●アセンブラ構文
VESR.dt SRc,VRd,VRa,SRb
ここで、dt={b,b9,h,w,f}、.wと.fが同一の演算を明示することに留意する。
●支援モード
【数129】
Figure 0003983857
●説明
ベクトルレジスタRaにあるエレメントを1位置だけ右にシフトし、スカラレジスタRbから充てんする。シフトアウットされる最右側のエレメントはスカラレジスタRcに返還され、他のエレメントはベクトルレジスタRdに返還される。
【数130】
Figure 0003983857
●演算
【数131】
Figure 0003983857
●例外
なし
●プログラミング注釈
この命令はエレメントマスクによって影響されない。
【0264】
VEXTRT 1つのエレメントの抽出
●フォーマット
【数132】
Figure 0003983857
●アセンブラ構文
VEXTRT.dt SRd,VRa,SRb
VEXTRT.dt SRd,VRa,#IMM
ここで、dt={b,b9,h,w,f}、.wと.fが同一の演算を明示することに留意する。
●支援モード
【数133】
Figure 0003983857
●説明
そのインデックスがスカラレジスタRb或いはIMMフィールドで明示されたRaベクトルレジスタからエレメントを抽出し、それをスカラレジスタRdに貯蔵する。
●演算
【数134】
Figure 0003983857
●例外
なし
●プログラミング注釈
この命令はエレメントマスクによって影響されない。
【0265】
VEXTSGN2 (1,−1)の符号抽出
●フォーマット
【数135】
Figure 0003983857
●アセンブラ構文
VEXTSGN2.dt VRd,VRa
VEXTSGN2.dt SRd,SRa
ここで、dt={b,b9,h,w}。
●支援モード
【数136】
Figure 0003983857
●説明
ベクトル/スカラレジスタRaエレメント方式の内容の符号値が計算され、その結果がベクトル/スカラレジスタRdに貯蔵される。
●演算
【数137】
Figure 0003983857
●例外
なし
【0266】
VEXTSGN3 (1,0,−1)の符号抽出
●フォーマット
【数138】
Figure 0003983857
●アセンブラ構文
VEXTSGN3.dt VRd,VRa
VEXTSGN3.dt SRd,SRa
ここで、dt={b,b9,h,w}。
●支援モード
【数139】
Figure 0003983857
●説明
ベクトル/スカラレジスタRaエレメント方式の内容の符号値が計算され、その結果がベクトル/スカラレジスタRdに貯蔵される。
●演算
【数140】
Figure 0003983857
●例外
なし
【0267】
VINSRT 1つのエレメントの挿入
●フォーマット
【数141】
Figure 0003983857
●アセンブラ構文
VINSRT.dt VRd,SRa,SRb
VINSRT.dt VRd,SRa,#IMM
ここで、dt={b,b9,h,w,f}、.wと.fが同一の演算を明示することに留意する。
●支援モード
【数142】
Figure 0003983857
●説明
スカラレジスタRb或いはIMMフィールドによって明示されたインデックスでスカラレジスタRaにあるエレメントをベクトルレジスタRdに挿入する。
●演算
【数143】
Figure 0003983857
●例外
なし
●プログラミング注釈
この命令はエレメントマスクによって影響されない。
【0268】
VL ロード
●フォーマット
【数144】
Figure 0003983857
●アセンブラ構文
VL.lt Rd,SRb,SRi
VL.lt Rd,SRb,#IMM
VL.lt Rd,SRb+,SRi
VL.lt Rd,SRb+,#IMM
ここで、lt={b,bz9,bs9,h,w,4,8,16, 32,64}、Rd={VRd,VRAd,SRd}、.bと. bs9は同一の演算を明示し、.64とVRAdは共に指定さ れ得ないことに留意する。キャッシュ−オフロードのためにVL OFFを使用する。
●説明
現在或いは代替バンクにあるベクトルレジスタ或いはスカラレジスタをロードする。
●演算
【数145】
Figure 0003983857
●例外
無効データアドレス、非整列アクセス
●プログラミング注釈
この命令はエレメントマスクによって影響されない。
【0269】
VLCB 循環バッファからのロード
●フォーマット
【数146】
Figure 0003983857
●アセンブラ構文
VLCB.lt Rd,SRb,SRi
VLCB.lt Rd,SRb,#IMM
VLCB.lt Rd,SRb+,SRi
VLCB.lt Rd,SRb+,#IMM
ここで、lt={b,bz9,bs9,h,w,4,8,16, 32,64}、Rd={VRd,VRAd,SRd}、.bと. bs9は同一の演算が明示され、.64とVRAdは共に明示 され得ないことに留意する。キャッシュ−オフロードのためにV LCBOFFを使用する。
●説明
SRb+1にあるBEGINポインタとSRb+2にあるENDポインタで指された循環バッファからベクトルレジスタ或いはスカラレジスタをロードする。もしアドレス更新演算は勿論のこと、ロード以前にENDアドレスより大きければ有効アドレスが調整される。また、循環バッファバウンドはそれぞれ.h及び.wスカラレジスタに対してハーフワード及びワード境界上で整列されなければならない。
●演算
【数147】
Figure 0003983857
●例外
無効データアドレス、非整列アクセス
●プログラミング注釈
この命令はエレメントマスクによって影響されない。プログラマは次の条件が予想通りに作動するように確かめなければならない。
BEGIN<EA<2*END−BEGIN
即ち、EA−END<END−BEGINは勿論、EA>BEGIN
【0270】
VLD 二重ロード
●フォーマット
【数148】
Figure 0003983857
●アセンブラ構文
VLD.lt Rd,SRb,SRi
VLD.lt Rd,SRb,#IMM
VLD.lt Rd,SRb+,SRi
VLD.lt Rd,SRb+,#IMM
ここで、lt={b,bz9,bs9,h,w,4,8,16, 32,64}、Rd={VRd,VRAd,SRd}、.bと bs9は同一の演算が明示され、.64とVRAdは共に明示 され得ないことに留意する。キャッシュ−オフロードのためにV LDOFFを使用する。
●説明
現在或いは代替バンクにある2つのベクトルレジスタ或いは2つのスカラレジスタをロードする。
●演算
【数149】
Figure 0003983857
●例外
無効データアドレス、非整列アクセス
●プログラミング注釈
この命令はエレメントマスクによって影響されない。
【0271】
VLI 即値ロード
●フォーマット
【数150】
Figure 0003983857
●アセンブラ構文
VLI.dt VRd,#IMM
VLI.dt SRd,#IMM
ここで、dt={b,b9,h,f}
●説明
即値をスカラまたはベクトルレジスタにロードする。スカラレジスタロードの場合、バイト、バイト9、ハーフワード或いはワードはデータ型によってロードする。バイト、バイト9及びハーフワードデータ型の場合、影響を受けないバイト(バイト9)は修正されない。
●演算
Rd=以下の表を参照する:
【数151】
Figure 0003983857
●例外
なし
【0272】
VLQ Quadロード
●フォーマット
【数152】
Figure 0003983857
●アセンブラ構文
VLQ.lt Rd,SRb,SRi
VLQ.lt Rd,SRb,#IMM
VLQ.lt Rd,SRb+,SRi
VLQ.lt Rd,SRb+,#IMM
ここで、lt={b,bz9,bs9,h,w,4,8,16, 32,64}、Rd={VRd,VRAd,SRd}、.bと. bs9は同一の演算を明示し、.64とVRAdは共に明示 され得ないことに留意する。キャッシュ−オフロードのためにV LQOFFを使用する。
●説明
現在或いは代替バンクにある4つのベクトルレジスタ或いは4つのスカラレジスタをロードする。
●演算
【数153】
Figure 0003983857
●例外
無効データアドレス、非整列アクセス
●プログラミング注釈
この命令はエレメントマスクによって影響されない。
【0273】
VLR 反転ロード
●フォーマット
【数154】
Figure 0003983857
●アセンブラ構文
VLR.lt Rd,SRb,SRi
VLR.lt Rd,SRb,#IMM
VLR.lt Rd,SRb+,SRi
VLR.lt Rd,SRb+,#IMM
ここで、lt={4,8,16,32,64}、Rd={VRd,VRAd}、.64とVRAdは共に明示され得ないことに留意する。キャッシュ−オフロードのためにVLROFFを使用する。
●説明
逆エレメント順序でベクトルレジスタをロードする。この命令はスカラ目的地レジスタを支援しない。
●演算
【数155】
Figure 0003983857
●例外
無効データアドレス、非整列アクセス
●プログラミング注釈
この命令はエレメントマスクによって影響されない。
【0274】
VLSL 論理的左側シフト
●フォーマット
【数156】
Figure 0003983857
●アセンブラ構文
VLSL.dt VRd,VRa,SRb
VLSL.dt VRd,VRa,#IMM
VLSL.dt SRd,SRa,SRb
VLSL.dt SRd,SRa,#IMM
ここで、dt={b,b9,h,w,}。
●支援モード
【数157】
Figure 0003983857
●説明
ベクトル/スカラレジスタRaにある各エレメントはスカラレジスタRb或いはIMMフィールドに与えられたシフト量だけゼロが最下位ビット(LSB)位置に充てんされながら論理的に左にビットシフトされ、その結果はベクトル/スカラレジスタRdに貯蔵される。
●演算
【数158】
Figure 0003983857
●例外
なし
●プログラミング注釈
shift_amountはSRb或いはIMM〈4:0〉から5ビット数字として取られることに注意する。バイト、バイト9、ハーフワードデータ型の場合、プログラマはデータサイズにおけるビット数より少ないか等しいシフト量を正確に明示する責任がある。もしシフト量が明示されたデータサイズより大きければ、エレメントはゼロで充てんされる。
【0275】
VLSR 論理的右側移動
●フォーマット
【数159】
Figure 0003983857
●アセンブラ構文
VLSR.dt VRd,VRa,SRb
VLSR.dt VRd,VRa,#IMM
VLSR.dt SRd,SRa,SRb
VLSR.dt SRd,SRa,#IMM
ここで、dt={b,b9,h,w,}。
●支援モード
【数160】
Figure 0003983857
●説明
ベクトル/スカラレジスタRaにある各エレメントはスカラレジスタRb或いはIMMフィールドに与えられたシフト量だけゼロが最上位ビット(MSB)場所に充てんされながら論理的に右にビットシフトされ、その結果はベクトル/スカラレジスタRdに貯蔵される。
●演算
【数161】
Figure 0003983857
●例外
なし
●プログラミング注釈
shift_amountはSRb或いはIMM〈4:0〉から5ビット数字として取られることに注意する。バイト、バイト9、ハーフワードデータ型の場合、プログラマはデータサイズにおいてビット数より小さいか等しいシフト量を正確に明示する責任がある。もしシフト量が明示されたデータサイズより大きければ、エレメントはゼロで充てんされる。
【0276】
VLWS ストライドにロードする
●フォーマット
【数162】
Figure 0003983857
●アセンブラ構文
VLWS.lt Rd,SRa,SRi
VLWS.lt Rd,SRb,#IMM
VLWS.lt Rd,SRb+,SRi
VLWS.lt Rd,SRb+,#IMM
ここで、lt={4,8,16,32},Rd={VRd,VRAd}、.64モードは支援されない−その代わりにVLを使用する。キャッシュオフロードのためにVLWSOFFを使用する。
●説明
有効アドレスから始めて、ストライド制御レジスタ(Stride Control register)としてスカラレジスタSRb+1を用いて32バイトがメモリからベクトルレジスタVRdにロードされる。LTはブロックサイズ、各ブロックに対してロードする連続的なバイトの数を明示する。SRb+1はストライド(stride)、2つの連続するブロックの始まりを分離するバイトの数を明示する。ストライドはブロックサイズと同一か或いはさらに大きいべきである。EAはデータサイズが整列されるべきである。ストライドとブロックサイズは複数のデータサイズでなければならない。
●演算
【数163】
Figure 0003983857
●例外
無効データアドレス、非整列アクセス
【0277】
VMAC 乗算及び累算
●フォーマット
【数164】
Figure 0003983857
●アセンブラ構文
VMAC.dt VRa,VRb
VMAC.dt VRa,SRb
VMAC.dt VRa,#IMM
VMAC.dt SRa,SRb
VMAC.dt SRa,#IMM
ここで、dt={b,h,w,f}。
●支援モード
【数165】
Figure 0003983857
●説明
倍精度中間結果を出すために、Raの各エレメントをRbにある各エレメントと乗算し、前記中間結果の各倍精度エレメントをベクトル累算器の各倍精度エレメントに加算し、各エレメントの倍精度の合計を前記ベクトル累算器に貯蔵する。 RaとRbは指定されたデータ型を使用し、一方VACは適宜な倍精度データ型(int8,int16,及びint32のそれぞれに対して16,32,及び64)を使用する。各倍精度エレメントの上位部分はVACHに貯蔵される。
浮動データ型の場合、全てのオペランドと結果は単精度型である。
●演算
【数166】
Figure 0003983857
●例外
オーバフロー、浮動小数点無効オペランド
●プログラミング注釈
この命令はint9データ型を支援しない−その代わりにint16データ型を用いる。
【0278】
VMACF 分数の乗算及び累算
●フォーマット
【数167】
Figure 0003983857
●アセンブラ構文
VMACF.dt VRa,VRb
VMACF.dt VRa,SRb
VMACF.dt VRa,#IMM
VMACF.dt SRa,SRb
VMACF.dt SRa,#IMM
ここで、dt={b,h,w,}。
●支援モード
【数168】
Figure 0003983857
●説明
倍精度中間結果を出すために、VRaの各エレメントをRbの各エレメントと乗算し、前記倍精度中間結果を左に1ビットシフトし、シフトされた中間結果の各倍精度エレメントをベクトル累算器の各倍精度エレメントに加算し、各エレメントの倍精度の合計を前記ベクトル累算器に貯蔵する。VRaとRbは指定されたデータ型を使用し、一方VACは適宜な倍精度データ型(int8,int16,及びint32のそれぞれに対して16,32,及び64)を使用する。各倍精度エレメントの上部はVACHに貯蔵される。
●演算
【数169】
Figure 0003983857
●例外
オーバフロー、
●プログラミング注釈
この命令はint9データ型を支援しない−その代わりint16データ型を使用する。
【0279】
VMACL ローの乗算及び累算
●フォーマット
【数170】
Figure 0003983857
●アセンブラ構文
VMACL.dt VRd,VRa,VRb
VMACL.dt VRd,VRa,SRb
VMACL.dt VRd,VRa,#IMM
VMACL.dt SRd,SRa,SRb
VMACL.dt SRd,SRa,#IMM
ここで、dt={b,h,w,f}。
●支援モード
【数171】
Figure 0003983857
●説明
倍精度中間結果を出すためにVRaの各エレメントをRbの各エレメントと乗算し、前記中間結果の各倍精度エレメントをベクトル累算器の各倍精度エレメントに加算し、各エレメントの倍精度の合計を前記ベクトル累算器に貯蔵し、その下部を目的地レジスタVRdに貯蔵する。
VRaとRbは指定されたデータ型を使用し、一方VACは適宜な倍精度データ型(int8,int16,及びint32のそれぞれに対して16,32,及び64)を使用する。各倍精度エレメントの上部はVACHに貯蔵される。
浮動データ型の場合、全てのオペランドと結果は単精度型である。
●演算
【数172】
Figure 0003983857
●例外
オーバフロー、浮動小数点無効オペランド
●プログラミング注釈
この命令はint9データ型を支援しない−その代わりint16データ型を使用する。
【0280】
VMAD 乗算及び加算
●フォーマット
【数173】
Figure 0003983857
●アセンブラ構文
VMAD.dt VRc,VRd,VRa,VRb
VMAD.dt SRc,SRd,SRa,SRb
ここで、dt={b,h,w}。
●支援モード
【数174】
Figure 0003983857
●説明
倍精度中間結果を出すためにRaの各エレメントをRbの各エレメントと乗算し、前記中間結果の各倍精度エレメントをRcの各エレメントに加算し、各エレメントの倍精度の合計を目的地レジスタRd+1:Rdに貯蔵する。
●演算
【数175】
Figure 0003983857
●例外
なし
【0281】
VMADL ロー乗算及び加算
●フォーマット
【数176】
Figure 0003983857
●アセンブラ構文
VMADL.dt VRc,VRd,VRa,VRb
VMADL.dt SRc,SRd,SRa,SRb
ここで、dt={b,h,w,f}。
●支援モード
【数177】
Figure 0003983857
●説明
倍精度中間結果を出すためにRaの各エレメントをRbの各エレメントと乗算し、前記中間結果の各倍精度エレメントをRcの各エレメントに加算し、各エレメントの倍精度の合計を前記目的地レジスタRdに貯蔵する。
浮動データ型の場合、全てのオペランドと結果は単精度型である。
●演算
【数178】
Figure 0003983857
●例外
オーバフロー、浮動小数点無効オペランド。
【0282】
VMAS 累算器からの乗算及び減算
●フォーマット
【数179】
Figure 0003983857
●アセンブラ構文
VMAS.dt VRa,VRb
VMAS.dt VRa,SRb
VMAS.dt VRa,#IMM
VMAS.dt SRa,SRb
VMAS.dt SRa,#IMM
ここで、dt={b,h,w,f}。
●支援モード
【数180】
Figure 0003983857
●説明
倍精度中間結果を出すためにRaの各エレメントをRbの各エレメントと乗算し、ベクトル累算器の各倍精度エレメントから前記中間結果の各倍精度エレメントを減算し、各エレメントの倍精度の合計を前記ベクトル累算器に貯蔵する。
RaとRbは指定されたデータ型を使用し、一方VACは適宜な倍精度データ型(int8,int16,及びint32のそれぞれに対して16,32,及び64)を使用する。各倍精度エレメントの上部はVACHに貯蔵される。
浮動データ型の場合、全てのオペランドと結果は単精度型である。
●演算
【数181】
Figure 0003983857
●例外
オーバフロー、浮動小数点無効オペランド
●プログラミング注釈
この命令はint9データ型を支援しない−その代わりint16データ型を使用する。
【0283】
VMASF 累算器分数からの乗算及び減算
●フォーマット
【数182】
Figure 0003983857
●アセンブラ構文
VMASF.dt VRa,VRb
VMASF.dt VRa,SRb
VMASF.dt VRa,#IMM
VMASF.dt SRa,SRb
VMASF.dt SRa,#IMM
ここで、dt={b,h,w}。
●支援モード
【数183】
Figure 0003983857
●説明
倍精度中間結果を出すためにVRaの各エレメントをRbの各エレメントと乗算し、倍精度中間結果を左に1ビットだけシフトし、ベクトル累算器の各倍精度エレメントから前記シフトされた中間結果の各倍精度エレメントを減算し、各エレメントの倍精度の合計をベクトル累算器に貯蔵する。
VRaとRbは指定されたデータ型を使用し、一方VACは適宜な倍精度データ型(int8,int16,及びint32のそれぞれに対して16,32,及び64)を使用する。各倍精度エレメントの上部はVACHに貯蔵される。
●演算
【数184】
Figure 0003983857
●例外
オーバフロー
●プログラミング注釈
この命令
はint9データ型を支援しない−その代わりint16データ型を使用する。
【0284】
VMASL 累算器ローからの乗算及び減算
●フォーマット
【数185】
Figure 0003983857
●アセンブラ構文
VMASL.dt VRd,VRa,VRb
VMASL.dt VRd,VRa,SRb
VMASL.dt VRd,VRa,#IMM
VMASL.dt SRd,SRa,SRb
VMASL.dt SRd,SRa,#IMM
ここで、dt={b,h,w,f}。
●支援モード
【数186】
Figure 0003983857
●説明
倍精度中間結果を出すためにVRaの各エレメントをRbの各エレメントと乗算し、ベクトル累算器の各倍精度エレメントから前記中間結果の各倍精度エレメントを減算し、各エレメントの倍精度の合計をベクトル累算器に貯蔵し、その下部を目的地レジスタVRdに返還する。
VRaとRbは指定されたデータ型を使用し、一方VACは適宜な倍精度データ型(int8,int16,及びint32のそれぞれに対して16,32,及び64)を使用する。各倍精度エレメントの上部はVACHに貯蔵される。
浮動データ型の場合、全てのオペランドと結果は単精度型である。
●演算
【数187】
Figure 0003983857
●例外
オーバフロー、浮動小数点無効オペランド
●プログラミング注釈
この命令はint9データ型を支援しない−その代わりint16データ型を使用する。
【0285】
VMAXE 双方式 (pair-wise) 最大及び交換
●フォーマット
【数188】
Figure 0003983857
●アセンブラ構文
VMAXE.dt VRd,VRb
ここで、dt={b,b9,h,w,f}。
●支援モード
【数189】
Figure 0003983857
●説明
VRaとVRbは同一である。VRaがVRbと相違すると、その結果は定義されない。
ベクトルレジスタVRbの各偶数/奇数データエレメントは対で比較され、各データエレメント対のうちより大きい値がベクトルレジスタRdの偶数位置に貯蔵され、各データエレメント対のうちより小さい値がベクトルレジスタRdの奇数位置に貯蔵される。
●演算
【数190】
Figure 0003983857
●例外
なし
【0286】
VMOV 移動
●フォーマット
【数191】
Figure 0003983857
●アセンブラ構文
VMOV.dt Rd,Rb
ここで、dt={b,b9,h,w,f}であり、RdとRbはアーキテクチャ的に指定されたレジスタ名を指称する。.wと.fが同一の演算を指定することに留意する。
●支援モード
【数192】
Figure 0003983857
●説明
レジスタRbの内容がレジスタRdに移動される。グループフィールドはソースと目的地レジスタグループを明示する。レジスタグループ表記法は次の通りである:
VR 現在のバンクベクトルレジスタ
VRA 代替バンクベクトルレジスタ
SR スカラレジスタ
RASR 返還アドレススタックレジスタ
VAC ベクトル累算器レジスタ(下記のVACレジスタ符号化表を参照する。)
【表71】
Figure 0003983857
ベクトルレジスタはこの命令でスカラレジスタに移動され得ないことに留意する。VEXTRT命令が前記目的のために提供される。
VACレジスタ符号化のために次の表を使用する:
【表72】
Figure 0003983857
●演算
Rd=Rb
●例外
例外状態をVCSR或いはVISRCにセットすることにより、対応する例外をもたらす。
●プログラミング注釈
この命令はエレメントマスクによって影響されない。代替バンク概念はVEC64モードには存在しないため、この命令はVEC64モードの代替バンクから或いは代替バンクへ移動するに使用されることができない。
【0287】
VMUL 乗算
●フォーマット
【数193】
Figure 0003983857
●アセンブラ構文
VMUL.dt VRc,VRd,VRa,VRb
VMUL.dt SRc,SRd,SRa,SRb
ここで、dt={b,h,w}。
●支援モード
【数194】
Figure 0003983857
●説明
倍精度の結果を出すためにRaの各エレメントをRbの各エレメントと乗算し、各エレメントの倍精度の合計を前記目的地レジスタRc:Rdに返還する。
RaとRbは指定されたデータ型を使用し、一方Rc:Rdは適宜な倍精度データ型(int8,int16,及びint32のそれぞれに対して16,32,及び64)を使用する。各倍精度エレメントの上部はRcに貯蔵される。
●演算
【数195】
Figure 0003983857
●例外
なし
●プログラミング注釈
この命令はint9データ型を支援しない−その代わりint16データ型を使用する。この命令はまた拡張された結果が支援されたデータ型でないために、浮動データ型を支援しない。
【0288】
VMULA 累算器に対する乗算
●フォーマット
【数196】
Figure 0003983857
●アセンブラ構文
VMULA.dt VRa,VRb
VMULA.dt VRa,SRb
VMULA.dt VRa,#IMM
VMULA.dt SRa,SRb
VMULA.dt SRa,#IMM
ここで、dt={b,h,w,f}。
●支援モード
【数197】
Figure 0003983857
●説明
倍精度中間結果を出すためにVRaの各エレメントをRbの各エレメントと乗算し、その結果を累算器に記録する。
浮動データ型の場合、全てのオペランドと結果は単精度型である。
●演算
【数198】
Figure 0003983857
●例外
なし
●プログラミング注釈
この命令はint9データ型を支援しない−その代わりint16データ型を使用する。
【0289】
VMULAF 累算器分数に対する乗算
●フォーマット
【数199】
Figure 0003983857
●アセンブラ構文
VMULAF.dt VRa,VRb
VMULAF.dt VRa,SRb
VMULAF.dt VRa,#IMM
VMULAF.dt SRa,SRb
VMULAF.dt SRa,#IMM
ここで、dt={b,h,w}。
●支援モード
【数200】
Figure 0003983857
●説明
倍精度中間結果を出すためにVRaの各エレメントをRbの各エレメントと乗算し、前記倍精度中間結果を左に1ビットだけシフトし、その結果を累算器に記録する。
●演算
【数201】
Figure 0003983857
●例外
なし
●プログラミング注釈
この命令はint9データ型を支援しない−その代わりint16データ型を使用する。
【0290】
VMULF 分数乗算
●フォーマット
【数202】
Figure 0003983857
●アセンブラ構文
VMULF.dt VRd,VRa,VRb
VMULF.dt VRd,VRa,SRb
VMULF.dt VRd,VRa,#IMM
VMULF.dt SRd,SRa,SRb
VMULF.dt SRd,SRa,#IMM
ここで、dt={b,h,w}。
●支援モード
【数203】
Figure 0003983857
●説明
倍精度中間結果を出すためにVRaの各エレメントをRbの各エレメントと乗算し、前記倍精度中間結果を左に1ビットだけシフトし、その結果の上部を目的地レジスタVRd+1及び目的地レジスタVRdに返還する。VRdは偶数番号のレジスタでなければならない。
●演算
【数204】
Figure 0003983857
●例外
なし
●プログラミング注釈
この命令はint9データ型を支援しない−その代わりint16データ型を使用する。
【0291】
VMULFR 分数乗算及びラウンド
●フォーマット
【数205】
Figure 0003983857
●アセンブラ構文
VMULFR.dt VRd,VRa,VRb
VMULFR.dt VRd,VRa,SRb
VMULFR.dt VRd,VRa,#IMM
VMULFR.dt SRd,SRa,SRb
VMULFR.dt SRd,SRa,#IMM
ここで、dt={b,h,w}。
●支援モード
【数206】
Figure 0003983857
●説明
倍精度中間結果を出すためにVRaの各エレメントをRbの各エレメントと乗算し、前記倍精度中間結果を左に1ビットだけシフトし、前記シフトされた中間結果を上部にラウンドし、その上部を目的地レジスタVRdに返還する。
●演算
【数207】
Figure 0003983857
●例外
なし
●プログラミング注釈
この命令はint9データ型を支援しない−その代わりint16データ型を使用する。
【0292】
VMULL ロー乗算
●フォーマット
【数208】
Figure 0003983857
●アセンブラ構文
VMULL.dt VRd,VRa,VRb
VMULL.dt VRd,VRa,SRb
VMULL.dt VRd,VRa,#IMM
VMULL.dt SRd,SRa,SRb
VMULL.dt SRd,SRa,#IMM
ここで、dt={b,h,w,f}。
●支援モード
【数209】
Figure 0003983857
●説明
倍精度中間結果を出すためにVRaの各エレメントをRbの各エレメントと乗算し、その結果の上部を目的地レジスタVRdに返還する。
浮動データ型の場合、全てのオペランドと結果は単精度型である。
●演算
【数210】
Figure 0003983857
●例外
オーバフロー、浮動小数点無効オペランド
●プログラミング注釈
この命令はint9データ型を支援しない−その代わりint16データ型を使用する。
【0293】
VNAND NAND
●フォーマット
【数211】
Figure 0003983857
●アセンブラ構文
VNAND.dt VRd,VRa,VRb
VNAND.dt VRd,VRa,SRb
VNAND.dt VRd,VRa,#IMM
VNAND.dt SRd,SRa,SRb
VNAND.dt SRd,SRa,#IMM
ここで、dt={b,h,w,f}、.wと.fが同一の演算を明示することに留意する。
●支援モード
【数212】
Figure 0003983857
●説明
Raにある各エレメントの各ビットをRb/即値オペランドにある対応のビットと論理的にNANDし、その結果をRdに返還する。
●演算
【数213】
Figure 0003983857
●例外
なし
【0294】
VNOR NOR
●フォーマット
【数214】
Figure 0003983857
●アセンブラ構文
VNOR.dt VRd,VRa,VRb
VNOR.dt VRd,VRa,SRb
VNOR.dt VRd,VRa,#IMM
VNOR.dt SRd,SRa,SRb
VNOR.dt SRd,SRa,#IMM
ここで、dt={b,b9,w,f}、.wと.fが同一の演算を明示することに留意する。
●支援モード
【数215】
Figure 0003983857
●説明
Raにある各エレメントの各ビットをRb/即値オペランドにある対応のビットと論理的にNORし、その結果をRdに返還する。
●演算
【数216】
Figure 0003983857
●例外
なし
【0295】
VOR OR
●フォーマット
【数217】
Figure 0003983857
●アセンブラ構文
VOR.dt VRd,VRa,VRb
VOR.dt VRd,VRa,SRb
VOR.dt VRd,VRa,#IMM
VOR.dt SRd,SRa,SRb
VOR.dt SRd,SRa,#IMM
ここで、dt={b,b9,w,f}、.wと.fは同一の演算を明示することに注意する。
●支援モード
【数218】
Figure 0003983857
●説明
Raにある各エレメントの各ビットをRb/即値オペランドにある対応のビットと論理的にORし、その結果をRdに返還する。
●演算
【数219】
Figure 0003983857
●例外
なし
【0296】
VORC OR補数
●フォーマット
【数220】
Figure 0003983857
●アセンブラ構文
VORC.dt VRd,VRa,VRb
VORC.dt VRd,VRa,SRb
VORC.dt VRd,VRa,#IMM
VORC.dt SRd,SRa,SRb
VORC.dt SRd,SRa,#IMM
ここで、dt={b,b9,h,w}、.wと.fは同一の演算を明示する。
●支援モード
【数221】
Figure 0003983857
●説明
Raにある各エレメントの各ビットをRb/即値オペランドにある対応のビットと論理的にORし、その結果をRdに返還する。
●演算
【数222】
Figure 0003983857
●例外
なし
【0297】
VPFTCH プリフェッチ
●フォーマット
【数223】
Figure 0003983857
●アセンブラ構文
VPFTCH.ln SRb,SRi
VPFTCH.ln SRb,#IMM
VPFTCH.ln SRb+,SRi
VPFTCH.ln SRb+,#IMM
ここで、ln={1,2,4,8}。
●説明
有効アドレスから始めて複数のベクトルデータキャッシュラインをプリフェッチする。キャッシュラインの数は次のように指定される:
LN〈1:0〉=00:1つの64バイトキャッシュラインがプリフェッチされる。
LN〈1:0〉=01:2つの64バイトキャッシュラインがプリフェッチされる。
LN〈1:0〉=10:4つの64バイトキャッシュラインがプリフェッチされる。
LN〈1:0〉=11:8つの64バイトキャッシュラインがプリフェッチされる。
●演算
●例外
無効データアドレス例外
●プログラミング注釈
EA〈31:0〉はローカルメモリにあるバイトアドレスを指称する。
【0298】
VPFTCHSP スクラッチパッドに対するプリフェッチ
●フォーマット
【数224】
Figure 0003983857
●アセンブラ構文
VPFTCHSP.ln SRp,SRb,SRi
VPFTCHSP.ln SRp,SRb,#IMM
VPFTCHSP.ln SRp,SRb+,SRi
VPFTCHSP.ln SRp,SRb+,#IMM
ここで、ln={1,2,4,8}、VPFTCHとVPFTCHSPは同一の演算コードを有する
●説明
メモリからスクラッチパッドへ複数の64バイトブロックを伝送する。有効アドレスはメモリに開始アドレスを提供し、SRpはスクラッチパッドに開始アドレスを提供する。64バイトブロックの数は次のように明示される:
LN〈1:0〉=00:1つの64バイトブロックが伝送される。
LN〈1:0〉=01:2つの64バイトブロックが伝送される。
LN〈1:0〉=10:4つの64バイトブロックが伝送される。
LN〈1:0〉=11:8つの64バイトブロックが伝送される。
もし有効キャッシュラインが64バイト境界上になければ、まず64バイト境界に整列されるように打ち切られる(truncate)。もしSRpにあるスクラッチパッドポインタアドレスが64バイト境界上になければ、これも64バイト境界に整列されるように打ち切られる。前記整列されたスクラッチパッドポインタアドレスは伝送されたバイトの数だけ増加する。
●演算
【数225】
Figure 0003983857
●例外
無効データアドレス例外
【0299】
VROL 左への回転
●フォーマット
【数226】
Figure 0003983857
●アセンブラ構文
VROL.dt VRd,VRa,SRb
VROL.dt VRd,VRa,#IMM
VROL.dt SRd,SRa,SRb
VROL.dt SRd,SRa,#IMM
ここで、dt={b,b9,h,w}。
●支援モード
【数227】
Figure 0003983857
●説明
ベクトル/スカラレジスタRaの各データエレメントはスカラレジスタRb或いはIMMフィールドに与えられたビット量だけ左に回転し、その結果がベクトル/スカラレジスタRdに貯蔵される。
●演算
【数228】
Figure 0003983857
●例外
なし
●プログラミング注釈
rotate_amountはSRb或いはIMM〈4:0〉から5ビット数字として取られる。バイト、バイト9、ハーフワードデータ型の場合、プログラマはデータサイズにおいてビットの数字より少ないか等しい回転量を正確に明示する責任がある。もし回転量が指定されたデータサイズより大きければ、結果は定義されない。左にnだけ回転することはElemSize−nだけ右に回転することに等しい。ここで、ElemSizeは所定のデータサイズにおけるビットの数を指称する。
【0300】
VROR 右への回転
●フォーマット
【数229】
Figure 0003983857
●アセンブラ構文
VROR.dt VRd,VRa,SRb
VROR.dt VRd,VRa,#IMM
VROR.dt SRd,SRa,SRb
VROR.dt SRd,SRa,#IMM
ここで、dt={b,b9,h,w}。
●支援モード
【数230】
Figure 0003983857
●説明
ベクトル/スカラレジスタRaの各データエレメントはスカラレジスタRb或いはIMMフィールドに与えられたビット量だけ右に回転し、その結果がベクトル/スカラレジスタRdに貯蔵される。
●演算
【数231】
Figure 0003983857
●例外
なし
●プログラミング注釈
rotate_amountはSRb或いはIMM〈4:0〉から5ビット数字として取られる。バイト、バイト9、ハーフワードデータ型の場合、プログラマはデータサイズにおいてビットの数字より少ないか等しい回転量を正確に明示する責任がある。もし回転量が指定されたデータサイズより大きければ、結果は定義されない。nだけ右に回転することはElemSize−nだけ左に回転するのと等しい。ここで、ElemSizeは所定のデータサイズでビットの数を指称する。
【0301】
VROUND 浮動小数点から整数にラウンドする
●フォーマット
【数232】
Figure 0003983857
●アセンブラ構文
VROUND.rm VRd,VRb
VROUND.rm SRd,SRb
ここで、rm={ninf,zero,near,pinf}。
●支援モード
【数233】
Figure 0003983857
●説明
浮動小数点データフォーマットにあるベクトル/スカラレジスタRbの内容は一番近い32ビット整数(ワード)にラウンドされ、その結果はベクトル/スカラレジスタRdに貯蔵される。ラウンディングモードはRMに定義されている。
【表73】
Figure 0003983857
●演算
【数234】
Figure 0003983857
●例外
なし
●プログラミング注釈
この命令はエレメントマスクによる影響を受けない。
【0302】
VSATL より下位のラウンドまで飽和する
●フォーマット
【数235】
Figure 0003983857
●アセンブラ構文
VSATL.dt VRd,VRa,VRb
VSATL.dt VRd,VRa,SRb
VSATL.dt VRd,VRa,#IMM
VSATL.dt SRd,SRa,SRb
VSATL.dt SRd,SRa,#IMM
ここで、dt={b,b9,h,w,f}、.fデータ型が9ビット即値と共に支援されないことに留意する。
●支援モード
【数236】
Figure 0003983857
●説明
ベクトル/スカラレジスタRaの各データエレメントはベクトル/スカラレジスタRb或いはIMMフィールドにあるそれの対応する下位限界に対して点検される。もしデータエレメントの値が前記下位限界より小さければ、下位限界と同一にセットされ、最終結果がベクトル/スカラレジスタRdに貯蔵される。
●演算
【数237】
Figure 0003983857
●例外
なし
【0303】
VSATU より上位のラウンドまで飽和する
●フォーマット
【数238】
Figure 0003983857
●アセンブラ構文
VSATU.dt VRd,VRa,VRb
VSATU.dt VRd,VRa,SRb
VSATU.dt VRd,VRa,#IMM
VSATU.dt SRd,SRa,SRb
VSATU.dt SRd,SRa,#IMM
ここで、dt={b,b9,h,w,f}、.fデータ型が9ビット即値と共に支援されないことに留意する。
●支援モード
【数239】
Figure 0003983857
●説明
ベクトル/スカラレジスタRaの各データエレメントはベクトル/スカラレジスタRb或いはIMMフィールドにあるそれの対応する上位限界に対して点検される。もしデータエレメントの値が前記上位限界より大きければ、上位限界と同一にセットされ、最終結果がベクトル/スカラレジスタRdに貯蔵される。
●演算
【数240】
Figure 0003983857
●例外
なし
【0304】
VSHFL シャフル (shuffle)
●フォーマット
【数241】
Figure 0003983857
●アセンブラ構文
VSHFL.dt VRc,VRd,VRa,VRb
VSHFL.dt VRc,VRd,VRa,SRb
ここで、dt={b,b9,h,w,f}、.wと.fが同一の演算を明示することに留意する。
●支援モード
【数242】
Figure 0003983857
●説明
ベクトルレジスタRaの内容がRbとシャフル(shuffle)され、その結果が次に示すようにベクトルレジスタRc:Rdに貯蔵される。
【数243】
Figure 0003983857
●演算
●例外
なし
●プログラミング注釈
この命令はエレメントアスクを使用しない。
【0305】
VSHFLH ハイシャフル
●フォーマット
【数244】
Figure 0003983857
●アセンブラ構文
VSHFLH.dt VRd,VRa,VRb
VSHFLH.dt VRd,VRa,SRb
ここで、dt={b,b9,h,w,f}、.wと.fが同一の演算を明示することに留意する。
●支援モード
【数245】
Figure 0003983857
●説明
ベクトルレジスタRaの内容がRbとシャフル(shuffle)され、その結果の上部が次に示すようにベクトルレジスタRdに貯蔵される。
【数246】
Figure 0003983857
●演算
●例外
なし
●プログラミング注釈
この命令はエレメントマスクを使用しない。
【0306】
VSHFLL ローシャフル
●フォーマット
【数247】
Figure 0003983857
●アセンブラ構文
VSHFLL.dt VRd,VRa,VRb
VSHFLL.dt VRd,VRa,SRb
ここで、dt={b,b9,h,w,f}、.wと.fが同一の演算を明示することに留意する。
●支援モード
【数248】
Figure 0003983857
●説明
ベクトルレジスタRaの内容がRbとシャフル(shuffle)され、その結果の下部が次に示すようにベクトルレジスタRdに貯蔵される。
【数249】
Figure 0003983857
●演算
●例外
なし
●プログラミング注釈
この命令はエレメントマスクを使用しない。
【0307】
VST 貯蔵
●フォーマット
【数250】
Figure 0003983857
●アセンブラ構文
VST.st Rs,SRb,SRi
VST.st Rs,SRb,#IMM
VST.st Rs,SRb+,SRi
VST.st Rs,SRb+,#IMM
ここで、st={b,b9t,h,w,4,8,16,32,64},Rs={VRs,VRAs,SRs}、.bと.b9tは同一の演算が明示され、.64とVRAsは一緒に明示できない点に留意する。キャッシュ−オフ貯蔵のためにはVSOFFを使用する。
●説明
ベクトルまたはスカラレジスタを貯蔵する。
●演算
【数251】
Figure 0003983857
●例外
無効データアドレス、非整列アクセス
●プログラミング注釈
この命令はエレメントマスクによって影響されない。
【0308】
VSTCB 循環バッファへの貯蔵
●フォーマット
【数252】
Figure 0003983857
●アセンブラ構文
VSTCB.st Rs,SRb,SRi
VSTCB.st Rs,SRb,#IMM
VSTCB.st Rs,SRb+,SRi
VSTCB.st Rs,SRb+,#IMM
ここで、st={b,b9t,h,w,4,8,16,32,64},Rs={VRs,VRAs,SRs}、.bと.b9tは同一の演算を指定し、.64とVRAdは一緒に指定できないことに留意する。キャッシュ−オフロードのためにVSTCBOFFを使用する。
●説明
SRb+1にあるBEGINポインタ、SRb+2にあるENDポインタによって指された循環バッファからベクトルまたはスカラレジスタを貯蔵する。
アドレス更新演算は勿論のこと、貯蔵する前にENDアドレスより大きければ、有効アドレスが調整される。また、循環バッファバウンダリは.fと.wスカラロードのためにそれぞれハーフワード及びワード境界上で整列されるべきである。
●演算
【数253】
Figure 0003983857
●例外
無効データアドレス、非整列アクセス
●プログラミング注釈
この命令はエレメントマスクによって影響されない。プログラマは次の条件を次の命令が予想通りに動作するように確認しなければならない。
BEGIN<EA<2*END−BEGIN
即ち、EA−END<END−BEGINはもちろんのことEA<BEGIN
【0309】
VSTD 二重貯蔵
●フォーマット
【数254】
Figure 0003983857
●アセンブラ構文
VSTD.st Rs,SRb,SRi
VSTD.st Rs,SRb,#IMM
VSTD.st Rs,SRb+,SRi
VSTD.st Rs,SRb+,#IMM
ここで、st={b,b9t,h,w,4,8,16,32,64},Rs={VRs,VRAs,SRs}、.bと.b9tは同一の演算が指定され、.64とVRAsは一緒に指定され得ないことに留意する。キャッシュ−オフ貯蔵のためにVSTDOFFを使用する。
●説明
現在または代替バンクからの2つのベクトルレジスタ或いは4つのスカラレジスタを貯蔵する。
●演算
【数255】
Figure 0003983857
●例外
無効データアドレス、非整列アクセス
●プログラミング注釈
この命令はエレメントマスクによって影響されない。
【0310】
VSTQ Quad貯蔵
●フォーマット
【数256】
Figure 0003983857
●アセンブラ構文
VSTQ.st Rs,SRb,SRi
VSTQ.st Rs,SRb,#IMM
VSTQ.st Rs,SRb+,SRi
VSTQ.st Rs,SRb+,#IMM
ここで、st={b,b9t,h,w,4,8,16,32,64},Rs={VRs,VRAs,SRs}、.bと.b9tは同一の演算が指定され、.64とVRAsは共に指定され得ないことに留意する。キャッシュ−オフ貯蔵のためにVSTQOFFを用いる。
●説明
現在或いは代替バンクからの4つのベクトルレジスタ或いは4つのスカラレジスタを貯蔵する。
●演算
【数257】
Figure 0003983857
●例外
無効データアドレス、非整列アクセス
●プログラミング注釈
この命令はエレメントマスクによって影響されない。
【0311】
VSTR 反転貯蔵
●フォーマット
【数258】
Figure 0003983857
●アセンブラ構文
VSTR.st Rs,SRb,SRi
VSTR.st Rs,SRb,#IMM
VSTR.st Rs,SRb+,SRi
VSTR.st Rs,SRb+,#IMM
ここで、st={4,8,16,32,64},Rs={VRs,VRAs}、.64とVRAsが一緒に指定できないことに留意する。キャッシュ−オフ貯蔵のためにVSTROFFを用いる。
●説明
ベクトルレジスタを逆エレメント順で貯蔵する。この命令はスカラデータソースレジスタを支援しない。
●演算
【数259】
Figure 0003983857
●例外
無効データアドレス、非整列アクセス
●プログラミング注釈
この命令はエレメントマスクによって影響されない。
【0312】
VSTWS ストライド貯蔵
●フォーマット
【数260】
Figure 0003983857
●アセンブラ構文
VSTWS.st Rs,SRb,SRi
VSTWS.st Rs,SRb,#IMM
VSTWS.st Rs,SRb+,SRi
VSTWS.st Rs,SRb+,#IMM
ここで、st={8,16,32},Rs={VRs,VRAs}、.64モードは支援されない−その代わりVSTを使用する。キャッシュ−オフ貯蔵のためにVSTWSOFFを用いる。
●説明
有効アドレスから始めて、スカラレジスタSRb+1をストライド制御レジスタ(Stride Control Register)として用いて32バイトをベクトルレジスタVRSからメモリに貯蔵する。
STはブロックサイズ、各ブロックから貯蔵される連続バイトの数を指定し、SRb+1はストライド、及び2つの連続するブロックの開始を分離するバイトの数を指定する。
ストライドはブロックサイズと等しいかもしくは大きくなければならない。EAはデータサイズが整列されるべきである。ストライドとブロックサイズは複数のデータサイズ類型になければならない。
●演算
【数261】
Figure 0003983857
●例外
無効データアドレス、非整列アクセス
【0313】
VSUB 減算
●フォーマット
【数262】
Figure 0003983857
●アセンブラ構文
VSUB.dt VRd,VRa,VRb
VSUB.dt VRd,VRa,SRb
VSUB.dt VRd,VRa,#IMM
VSUB.dt SRd,SRa,SRb
VSUB.dt SRd,SRa,#IMM
ここで、st={b,b9,h,w,f}
●支援モード
【数263】
Figure 0003983857
●説明
ベクトル/スカラレジスタRbの内容がベクトル/スカラレジスタRaの内容から減算され、その結果がベクトル/スカラレジスタRdに貯蔵される。
●演算
【数264】
Figure 0003983857
●例外
オーバフロー、浮動小数点無効オペランド
【0314】
VSUBS 減算及びセット
●フォーマット
【数265】
Figure 0003983857
●アセンブラ構文
VSUBS.dt SRd,SRa,SRb
VSUBS.dt SRd,SRa,#IMM
ここで、dt={b,b9,h,w,f}。
●支援モード
【数266】
Figure 0003983857
●説明
SRbがSRaから減算され、その結果がSRdに貯蔵され、VCSRにあるVFLAGビットがセットされる。
●演算
【数267】
Figure 0003983857
●例外
オーバフロー、浮動小数点無効オペランド
【0315】
VUNSHFL アンシャフル
●フォーマット
【数268】
Figure 0003983857
●アセンブラ構文
VUNSHFL.dt VRc,VRd,VRa,VRb
VUNSHFL.dt VRc,VRd,VRa,SRb
ここで、dt={b,b9,h,w,f}、.wと.fが同一の演算を指定することに留意する。
●支援モード
【数269】
Figure 0003983857
●説明
ベクトルレジスタVRaの内容が次に示すようにベクトルレジスタVRc:VRdにRdとアンシャフルされる。
【数270】
Figure 0003983857
●演算
●例外
なし
●プログラミング注釈
この命令はエレメントマスクを使用しない。
【0316】
VUNSHFLH ハイへのアンシャフル
●フォーマット
【数271】
Figure 0003983857
●アセンブラ構文
VUNSHFLH.dt VRd,VRa,VRb
VUNSHFLH.dt VRd,VRa,SRb
ここで、dt={b,b9,h,w,f}、.wと.fが同一の演算を指定することに留意する。
●支援モード
【数272】
Figure 0003983857
●説明
ベクトルレジスタVRaの内容がRbとアンシャフル(unshuffle)され、その結果の上部が次に示すようにベクトルレジスタVRdに返還される。
【数273】
Figure 0003983857
●演算
●例外
なし
●プログラミング注釈
この命令はエレメントマスクを使用しない。
【0317】
VUNSHFLL ローへのアンシャフル
●フォーマット
【数274】
Figure 0003983857
●アセンブラ構文
VUNSHFLL.dt VRd,VRa,VRb
VUNSHFLL.dt VRd,VRa,SRb
ここで、dt={b,b9,h,w,f}、.wと.fが同一の演算を指定することに留意する。
●支援モード
【数275】
Figure 0003983857
●説明
ベクトルレジスタVRaの内容がRbとアンシャフル(unshuffle)され、その結果の下部が次に示すようにベクトルレジスタVRdに返還される。
【数276】
Figure 0003983857
●演算
●例外
なし
●プログラミング注釈
この命令はエレメントマスクを使用しない。
【0318】
VWBACK ライトバック
●フォーマット
【数277】
Figure 0003983857
●アセンブラ構文
VWBACK.ln SRb,SRi
VWBACK.ln SRb,#IMM
VWBACK.ln SRb+,SRi
VWBACK.ln SRb+,#IMM
ここで、ln={1,2,4,8}。
●説明
そのインデックスがベクトルデータキャッシュにあるEA(そのタグがEAと一致するものと反対のものとして)によって指定されたキャッシュラインは、もし修正されたデータを含んでいるとメモリに更新される。もし一本以上のキャッシュラインが指定されていると、次の順次的なキャッシュラインが修正されたデータを含む場合、メモリに更新される。キャッシュラインの数は次のように指定される:
LN〈1:0〉=00:1つの64バイトキャッシュラインが記録される。
LN〈1:0〉=01:2つの64バイトキャッシュラインが記録される。
LN〈1:0〉=10:4つの64バイトキャッシュラインが記録される。
LN〈1:0〉=11:8つの64バイトキャッシュラインが記録される。
もし有効アドレスが64バイト境界上になければ、まず64バイト境界に整列されるように打ち切られる(truncate)。
●演算
●例外
無効データアドレス例外
●プログラミング注釈
EA〈31:0〉はローカルメモリのバイトアドレスを指称する。
【0319】
VWBACKSP スクラッチパッドからのライトバック
●フォーマット
【数278】
Figure 0003983857
●アセンブラ構文
VWBACKSP.ln SRp,SRb,SRi
VWBACKSP.ln SRp,SRb,#IMM
VWBACKSP.ln SRp,SRb+,SRi
VWBACKSP.ln SRp,SRb+,#IMM
ここで、ln={1,2,4,8}、VWBACKとVWBACKSPは同一の演算コードを使用することに留意する。
●説明
スクラッチパッドからメモリへ複数の64バイトブロックを伝送する。有効アドレスはメモリに開始アドレスを提供し、SRpはスクラッチパッドに開始アドレスを提供する。64バイトブロックの数は次のように指定される:
LN〈1:0〉=00:1つの64バイトブロックが伝送される。
LN〈1:0〉=01:2つの64バイトブロックが伝送される。
LN〈1:0〉=10:4つの64バイトブロックが伝送される。
LN〈1:0〉=11:8つの64バイトブロックが伝送される。
もし有効アドレスが64バイト境界上になければ、まず64バイト境界に整列されるように打ち切られる(truncate)。もしSRpにあるスクラッチパッドポインタアドレスが64バイト境界上になければ、これもやはり64バイト境界に整列されるように打ち切られる。前記整列されたスクラッチパッドポインタアドレスは伝送されたバイトの数だけ増加する。
●演算
●例外
無効データアドレス例外
【0320】
VXNOR XNOR(排他的NOR)
●フォーマット
【数279】
Figure 0003983857
●アセンブラ構文
VXNOR.dt VRd,VRa,VRb
VXNOR.dt VRd,VRa,SRb
VXNOR.dt VRd,VRa,#IMM
VXNOR.dt SRd,SRa,SRb
VXNOR.dt SRd,SRa,#IMM
ここで、dt={b,b9,h,w}。
●支援モード
【数280】
Figure 0003983857
●説明
ベクトル/スカラレジスタRaの内容がベクトル/スカラレジスタRbの内容に論理的にXNORされ、その結果がベクトル/スカラレジスタRdに貯蔵される。
●演算
【数281】
Figure 0003983857
●例外
なし
【0321】
VXOR XOR(排他的OR)
●フォーマット
【数282】
Figure 0003983857
●アセンブラ構文
VXOR.dt VRd,VRa,VRb
VXOR.dt VRd,VRa,SRb
VXOR.dt VRd,VRa,#IMM
VXOR.dt SRd,SRa,SRb
VXOR.dt SRd,SRa,#IMM
ここで、dt={b,b9,h,w}。
●支援モード
【数283】
Figure 0003983857
●説明
ベクトル/スカラレジスタRaの内容がベクトル/スカラレジスタRbの内容と論理的にXORされ、その結果がベクトル/スカラレジスタRdに貯蔵される。
●演算
【数284】
Figure 0003983857
●例外
なし
【0322】
VXORALL 全てのエレメントのXOR(排他的OR)
●フォーマット
【数285】
Figure 0003983857
●アセンブラ構文
VXORALL.dt SRd,VRd
ここで、dt={b,b9,h,w}、.bと.b9が同一の演算を指称することに留意する。
●支援モード
【数286】
Figure 0003983857
●説明
VRbにある各エレメントの最下位ビットが共にXORされ、1ビット結果がSRdの最下位ビットから返還される。この命令はエレメントマスクによって影響されない。
●演算
●例外
なし
【図面の簡単な説明】
【図1】 本発明の実施例によるマルチメディアプロセッサのブロック図である。
【図2】 図1のマルチメディアプロセッサのためのベクトルプロセッサのブロック図である。
【図3】 図2のベクトルプロセッサのための命令フェッチ部のブロック図である。
【図4】 図2のベクトルプロセッサのための命令フェッチ部のブロック図である。
【図5】 図5(a),(b),(c)は、それぞれ図2のベクトルプロセッサのレジスタ対レジスタ命令、ロード命令、及び貯蔵命令に対する実行パイプラインのステージを示す図である。
【図6】 図2のベクトルプロセッサのための実行データ経路のブロック図である。
【図7】 図6の実行データ経路に対するレジスタファイルのブロック図である。
【図8】 図6の実行データ経路に対する並列処理論理部のブロック図である。。
【図9】 図2のベクトルプロセッサに対するロード/貯蔵部のブロック図である。
【図10】 本発明の実施例によるベクトルプロセッサの命令セットに対するフォーマット図である。
【符号の説明】
100 マルチメディア信号プロセッサ(MSP)
105 プロセッシングコア
110 汎用プロセッサ
120 ベクトルプロセッサ
130 キャッシュサブシステム
140,150 システムバス
142 システムタイマ
146 ビットストリームプロセッサ
148 インタラプトコントローラ
152 デバイスインタフェース
156 局部バスインタフェース
158 メモリコントローラ
162,192 命令語キャッシュ
164,194 データキャッシュ
180 キャッシュ制御部
220 デコーダ
230 スケジューラ
310 主命令語バッファ
312 補助命令語バッファ
340,342,344 レジスタ
350 加算器
420 制御パイプ
421〜427 実行レジスタ
514,515 実行ステージ
610 レジスタファイル
612,614,616,618 選択回路
620,626 乗算器
630 算術論理部
640 累算器

Claims (4)

  1. ベクトルプロセッサにおいて、
    ベクトルレジスタの第1バンク、ベクトルレジスタの第2バンク、第1フィールドを含むコントロールレジスタ、及びベクトルレジスタの前記第1及び第2バンクのための選択回路を備え、
    前記第1バンク内のそれぞれのベクトルレジスタは、前記第1バンク内の他のベクトルレジスタに割り当てられたレジスタ番号と区分されるレジスタ番号が割り当てられ、
    前記第2バンク内のそれぞれのベクトルレジスタは、前記第2バンク内の他のベクトルレジスタに割り当てられたレジスタ番号とは区別され且つ前記第1バンク内の対応するベクトルレジスタに割り当てられたレジスタ番号とは同一のレジスタ番号が割り当てられ、
    前記コントロールレジスタの第1フィールドは、デフォルトバンクとして第1及び第2のバンクの1つを識別する値を格納し、
    前記選択回路は第1モードで作動し、前記デフォルトバンク内に存在して前記ベクトルプロセッサによって実行される命令からのレジスタ番号によって識別されるベクトルレジスタにアクセス可能になり、
    前記選択回路が第2モードで作動し、前記第1バンクからの第1ベクトルレジスタ及び前記第2バンクからの第2ベクトルレジスタにアクセス可能になり、
    前記第1及び第2ベクトルレジスタは前記ベクトルプロセッサによって実行される命令からレジスタ番号が割り当てられ、第1及び第2レジスタの組合は前記第1ベクトルレジスタに貯蔵され得るベクトル値より大きいベクトル値のために用いられることを特徴とするベクトルプロセッサ。
  2. 前記選択回路が第3モードで作動し、前記ベクトルプロセッサによって実行される命令からのレジスタ番号及びバンク値の組合せによって識別されるベクトルレジスタにアクセス可能になることを特徴とする請求項1記載のベクトルプロセッサ。
  3. ベクトルプロセッサを作動させるための方法において、
    第1バンク内のそれぞれのベクトルレジスタに対して割り当てられたレジスタ番号が前記第1バンク内の他のベクトルレジスタに割り当てられたレジスタ番号とは区別されるように、第1バンク内のベクトルレジスタにレジスタ番号を割り当てる段階と、
    第2バンク内のそれぞれのベクトルレジスタに対して割り当てられたレジスタ番号が前記第2バンク内の他のベクトルレジスタに割り当てられたレジスタ番号とは区別され、前記第1バンク内の対応するベクトルレジスタに割り当てられたレジスタ番号とは同一になるように、第2バンク内のベクトルレジスタにレジスタ番号を割り当てる段階と、
    レジスタ番号を含む第1命令を形成する段階と、
    前記第1命令に含まれたレジスタ番号が割り当てられ、前記ベクトルプロセッサのコントロールレジスタのフィールドによって指示されるバンク内のベクトルレジスタにアクセスする過程を含む方式で前記第1命令を実行する段階と、を備えることを特徴とするベクトルプロセッサを作動させるための方法。
  4. レジスタ番号を含む第2命令を形成する段階と、
    レジスタ番号が割り当てられ前記第1バンク内に存するようになるベクトルレジスタにアクセスする過程及びレジスタ番号が割り当てられ前記第2バンク内に存するようになるベクトルレジスタにアクセスする過程を含む方式で、前記第2命令を実行する段階とをさらに備えることを特徴とする請求項3記載のベクトルプロセッサを作動させるための方法。
JP23766597A 1996-08-19 1997-08-19 ベクトルレジスタの複数バンクを用いた単一命令複数データ処理 Expired - Fee Related JP3983857B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US08/697,086 US5838984A (en) 1996-08-19 1996-08-19 Single-instruction-multiple-data processing using multiple banks of vector registers
US697,086 1996-08-19

Publications (2)

Publication Number Publication Date
JPH10116268A JPH10116268A (ja) 1998-05-06
JP3983857B2 true JP3983857B2 (ja) 2007-09-26

Family

ID=24799731

Family Applications (1)

Application Number Title Priority Date Filing Date
JP23766597A Expired - Fee Related JP3983857B2 (ja) 1996-08-19 1997-08-19 ベクトルレジスタの複数バンクを用いた単一命令複数データ処理

Country Status (7)

Country Link
US (1) US5838984A (ja)
JP (1) JP3983857B2 (ja)
KR (1) KR100236527B1 (ja)
CN (1) CN1117316C (ja)
DE (1) DE19735348B4 (ja)
FR (1) FR2752965B1 (ja)
TW (1) TW345650B (ja)

Families Citing this family (132)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6643765B1 (en) 1995-08-16 2003-11-04 Microunity Systems Engineering, Inc. Programmable processor with group floating point operations
US5961631A (en) * 1997-07-16 1999-10-05 Arm Limited Data processing apparatus and method for pre-fetching an instruction in to an instruction cache
US7197625B1 (en) * 1997-10-09 2007-03-27 Mips Technologies, Inc. Alignment and ordering of vector elements for single instruction multiple data processing
US5864703A (en) * 1997-10-09 1999-01-26 Mips Technologies, Inc. Method for providing extended precision in SIMD vector arithmetic operations
US6230259B1 (en) 1997-10-31 2001-05-08 Advanced Micro Devices, Inc. Transparent extended state save
US6157996A (en) * 1997-11-13 2000-12-05 Advanced Micro Devices, Inc. Processor programably configurable to execute enhanced variable byte length instructions including predicated execution, three operand addressing, and increased register space
US6334176B1 (en) * 1998-04-17 2001-12-25 Motorola, Inc. Method and apparatus for generating an alignment control vector
US6282634B1 (en) * 1998-05-27 2001-08-28 Arm Limited Apparatus and method for processing data having a mixed vector/scalar register file
US20060168431A1 (en) * 1998-10-14 2006-07-27 Peter Warnes Method and apparatus for jump delay slot control in a pipelined processor
US6862563B1 (en) 1998-10-14 2005-03-01 Arc International Method and apparatus for managing the configuration and functionality of a semiconductor design
US7308559B2 (en) * 2000-02-29 2007-12-11 International Business Machines Corporation Digital signal processor with cascaded SIMD organization
AU2001243463A1 (en) 2000-03-10 2001-09-24 Arc International Plc Memory interface and method of interfacing between functional entities
JP3940542B2 (ja) * 2000-03-13 2007-07-04 株式会社ルネサステクノロジ データプロセッサ及びデータ処理システム
JP2001283413A (ja) * 2000-03-29 2001-10-12 Tdk Corp スピンバルブ膜の製造方法
US6857061B1 (en) 2000-04-07 2005-02-15 Nintendo Co., Ltd. Method and apparatus for obtaining a scalar value directly from a vector register
US6981132B2 (en) 2000-08-09 2005-12-27 Advanced Micro Devices, Inc. Uniform register addressing using prefix byte
US6877084B1 (en) 2000-08-09 2005-04-05 Advanced Micro Devices, Inc. Central processing unit (CPU) accessing an extended register set in an extended register mode
US7155601B2 (en) * 2001-02-14 2006-12-26 Intel Corporation Multi-element operand sub-portion shuffle instruction execution
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
US7181484B2 (en) * 2001-02-21 2007-02-20 Mips Technologies, Inc. Extended-precision accumulation of multiplier output
US7711763B2 (en) 2001-02-21 2010-05-04 Mips Technologies, Inc. Microprocessor instructions for performing polynomial arithmetic operations
US7599981B2 (en) * 2001-02-21 2009-10-06 Mips Technologies, Inc. Binary polynomial multiplier
US7039060B2 (en) * 2001-03-07 2006-05-02 Mips Tech Inc System and method for extracting fields from packets having fields spread over more than one register
US6986025B2 (en) * 2001-06-11 2006-01-10 Broadcom Corporation Conditional execution per lane
US7127593B2 (en) * 2001-06-11 2006-10-24 Broadcom Corporation Conditional execution with multiple destination stores
US7861071B2 (en) * 2001-06-11 2010-12-28 Broadcom Corporation Conditional branch instruction capable of testing a plurality of indicators in a predicate register
US7739319B2 (en) * 2001-10-29 2010-06-15 Intel Corporation Method and apparatus for parallel table lookup using SIMD instructions
US7631025B2 (en) * 2001-10-29 2009-12-08 Intel Corporation Method and apparatus for rearranging data between multiple registers
US7725521B2 (en) * 2001-10-29 2010-05-25 Intel Corporation Method and apparatus for computing matrix transformations
US7685212B2 (en) * 2001-10-29 2010-03-23 Intel Corporation Fast full search motion estimation with SIMD merge instruction
US7818356B2 (en) * 2001-10-29 2010-10-19 Intel Corporation Bitstream buffer manipulation with a SIMD merge instruction
US20040054877A1 (en) 2001-10-29 2004-03-18 Macy William W. Method and apparatus for shuffling data
US7624138B2 (en) 2001-10-29 2009-11-24 Intel Corporation Method and apparatus for efficient integer transform
US20100274988A1 (en) * 2002-02-04 2010-10-28 Mimar Tibet Flexible vector modes of operation for SIMD processor
US20030231660A1 (en) * 2002-06-14 2003-12-18 Bapiraju Vinnakota Bit-manipulation instructions for packet processing
US7793084B1 (en) 2002-07-22 2010-09-07 Mimar Tibet Efficient handling of vector high-level language conditional constructs in a SIMD processor
US7392368B2 (en) * 2002-08-09 2008-06-24 Marvell International Ltd. Cross multiply and add instruction and multiply and subtract instruction SIMD execution on real and imaginary components of a plurality of complex data elements
US6986023B2 (en) 2002-08-09 2006-01-10 Intel Corporation Conditional execution of coprocessor instruction based on main processor arithmetic flags
WO2004015563A1 (en) * 2002-08-09 2004-02-19 Intel Corporation Multimedia coprocessor control mechanism including alignment or broadcast instructions
GB2394571B (en) * 2002-10-23 2005-08-10 Motorola Inc Arrangement system and method for vector permutation in single-instruction multiple-data microprocessors
JP2004302647A (ja) * 2003-03-28 2004-10-28 Seiko Epson Corp ベクトルプロセッサおよびレジスタのアドレス指定方法
US20040215924A1 (en) * 2003-04-28 2004-10-28 Collard Jean-Francois C. Analyzing stored data
US7610466B2 (en) * 2003-09-05 2009-10-27 Freescale Semiconductor, Inc. Data processing system using independent memory and register operand size specifiers and method thereof
US7315932B2 (en) 2003-09-08 2008-01-01 Moyer William C Data processing system having instruction specifiers for SIMD register operands and method thereof
US7275148B2 (en) * 2003-09-08 2007-09-25 Freescale Semiconductor, Inc. Data processing system using multiple addressing modes for SIMD operations and method thereof
GB2409060B (en) * 2003-12-09 2006-08-09 Advanced Risc Mach Ltd Moving data between registers of different register data stores
GB2411975B (en) * 2003-12-09 2006-10-04 Advanced Risc Mach Ltd Data processing apparatus and method for performing arithmetic operations in SIMD data processing
GB2409068A (en) * 2003-12-09 2005-06-15 Advanced Risc Mach Ltd Data element size control within parallel lanes of processing
GB2411973B (en) * 2003-12-09 2006-09-27 Advanced Risc Mach Ltd Constant generation in SMD processing
GB2409061B (en) * 2003-12-09 2006-09-13 Advanced Risc Mach Ltd Table lookup operation within a data processing system
GB2411976B (en) * 2003-12-09 2006-07-19 Advanced Risc Mach Ltd A data processing apparatus and method for moving data between registers and memory
GB2409062C (en) * 2003-12-09 2007-12-11 Advanced Risc Mach Ltd Aliasing data processing registers
GB2409065B (en) * 2003-12-09 2006-10-25 Advanced Risc Mach Ltd Multiplexing operations in SIMD processing
GB2409063B (en) * 2003-12-09 2006-07-12 Advanced Risc Mach Ltd Vector by scalar operations
GB2409066B (en) * 2003-12-09 2006-09-27 Advanced Risc Mach Ltd A data processing apparatus and method for moving data between registers and memory
GB2409064B (en) * 2003-12-09 2006-09-13 Advanced Risc Mach Ltd A data processing apparatus and method for performing in parallel a data processing operation on data elements
GB2411974C (en) * 2003-12-09 2009-09-23 Advanced Risc Mach Ltd Data shift operations
GB2409067B (en) * 2003-12-09 2006-12-13 Advanced Risc Mach Ltd Endianess compensation within a SIMD data processing system
GB2409059B (en) * 2003-12-09 2006-09-27 Advanced Risc Mach Ltd A data processing apparatus and method for moving data between registers and memory
GB2410097B (en) * 2004-01-13 2006-11-01 Advanced Risc Mach Ltd A data processing apparatus and method for performing data processing operations on floating point data elements
GB2411978B (en) * 2004-03-10 2007-04-04 Advanced Risc Mach Ltd Inserting bits within a data word
US7302627B1 (en) * 2004-04-05 2007-11-27 Mimar Tibet Apparatus for efficient LFSR calculation in a SIMD processor
US7873812B1 (en) 2004-04-05 2011-01-18 Tibet MIMAR Method and system for efficient matrix multiplication in a SIMD processor architecture
US7493481B1 (en) * 2004-05-17 2009-02-17 Netxen, Inc. Direct hardware processing of internal data structure fields
US9557994B2 (en) 2004-07-13 2017-01-31 Arm Limited Data processing apparatus and method for performing N-way interleaving and de-interleaving operations where N is an odd plural number
US20060070042A1 (en) * 2004-09-24 2006-03-30 Muratori Richard D Automatic clocking in shared-memory co-simulation
US20060179265A1 (en) * 2005-02-08 2006-08-10 Flood Rachel M Systems and methods for executing x-form instructions
US20060218377A1 (en) * 2005-03-24 2006-09-28 Stexar Corporation Instruction with dual-use source providing both an operand value and a control value
US7933405B2 (en) * 2005-04-08 2011-04-26 Icera Inc. Data access and permute unit
US20070038984A1 (en) 2005-08-12 2007-02-15 Gschwind Michael K Methods for generating code for an architecture encoding an extended register specification
US7421566B2 (en) * 2005-08-12 2008-09-02 International Business Machines Corporation Implementing instruction set architectures with non-contiguous register file specifiers
US7734897B2 (en) * 2005-12-21 2010-06-08 Arm Limited Allocation of memory access operations to memory access capable pipelines in a superscalar data processing apparatus and method having a plurality of execution threads
US20070283129A1 (en) * 2005-12-28 2007-12-06 Stephan Jourdan Vector length tracking mechanism
US7565514B2 (en) * 2006-04-28 2009-07-21 Freescale Semiconductor, Inc. Parallel condition code generation for SIMD operations
US7958181B2 (en) 2006-09-21 2011-06-07 Intel Corporation Method and apparatus for performing logical compare operations
US9223751B2 (en) * 2006-09-22 2015-12-29 Intel Corporation Performing rounding operations responsive to an instruction
US8127113B1 (en) 2006-12-01 2012-02-28 Synopsys, Inc. Generating hardware accelerators and processor offloads
WO2008087779A1 (ja) * 2007-01-19 2008-07-24 Nec Corporation アレイ型プロセッサおよびデータ処理システム
US20080229062A1 (en) * 2007-03-12 2008-09-18 Lorenzo Di Gregorio Method of sharing registers in a processor and processor
US8122229B2 (en) * 2007-09-12 2012-02-21 Convey Computer Dispatch mechanism for dispatching instructions from a host processor to a co-processor
US9015399B2 (en) 2007-08-20 2015-04-21 Convey Computer Multiple data channel memory module architecture
US8561037B2 (en) 2007-08-29 2013-10-15 Convey Computer Compiler for generating an executable comprising instructions for a plurality of different instruction sets
US8095735B2 (en) * 2008-08-05 2012-01-10 Convey Computer Memory interleave for heterogeneous computing
US9710384B2 (en) * 2008-01-04 2017-07-18 Micron Technology, Inc. Microprocessor architecture having alternative memory access paths
US8156307B2 (en) * 2007-08-20 2012-04-10 Convey Computer Multi-processor system having at least one processor that comprises a dynamically reconfigurable instruction set
CN101377735B (zh) * 2007-08-28 2011-09-28 凌阳科技股份有限公司 于多模处理器中以串行位决定指令长度的装置及方法
US8078836B2 (en) 2007-12-30 2011-12-13 Intel Corporation Vector shuffle instructions operating on multiple lanes each having a plurality of data elements using a common set of per-lane control bits
US20100115233A1 (en) * 2008-10-31 2010-05-06 Convey Computer Dynamically-selectable vector register partitioning
US8205066B2 (en) * 2008-10-31 2012-06-19 Convey Computer Dynamically configured coprocessor for different extended instruction set personality specific to application program with shared memory storing instructions invisibly dispatched from host processor
US8423745B1 (en) 2009-11-16 2013-04-16 Convey Computer Systems and methods for mapping a neighborhood of data to general registers of a processing element
US8434074B2 (en) * 2010-02-24 2013-04-30 Intel Corporation Register allocation with SIMD architecture using write masks
KR20110103256A (ko) * 2010-03-12 2011-09-20 삼성전자주식회사 다중 입출력 오퍼레이션 지원 프로세서 및 그 방법
US20120185670A1 (en) * 2011-01-14 2012-07-19 Toll Bret L Scalar integer instructions capable of execution with three registers
US9128701B2 (en) * 2011-04-07 2015-09-08 Via Technologies, Inc. Generating constant for microinstructions from modified immediate field during instruction translation
KR20120134549A (ko) 2011-06-02 2012-12-12 삼성전자주식회사 Simd 프로세서를 이용한 병렬 연산 처리 장치 및 방법
KR101572770B1 (ko) 2011-09-26 2015-11-27 인텔 코포레이션 벡터 로드-op/저장-op에 스트라이드 기능을 제공하는 명령어 및 로직
KR101783312B1 (ko) * 2011-11-15 2017-10-10 삼성전자주식회사 클러스터 간의 통신으로 인한 오버헤드를 최소화하는 장치 및 방법
WO2013085491A1 (en) * 2011-12-06 2013-06-13 Intel Corporation System, apparatus and method for translating vector instructions
CN104011645B (zh) * 2011-12-22 2018-06-26 英特尔公司 用于产生其中在连续位置中的整数相差恒定整数跨度且最小整数从零偏移整数偏移量的整数序列的处理器、方法、系统和含有指令的介质
WO2013095614A1 (en) * 2011-12-23 2013-06-27 Intel Corporation Super multiply add (super madd) instruction
CN104081337B (zh) 2011-12-23 2017-11-07 英特尔公司 用于响应于单个指令来执行横向部分求和的系统、装置和方法
CN104011664B (zh) 2011-12-23 2016-12-28 英特尔公司 使用三个标量项的超级乘加(超级madd)指令
US9557998B2 (en) 2011-12-28 2017-01-31 Intel Corporation Systems, apparatuses, and methods for performing delta decoding on packed data elements
WO2013100991A1 (en) 2011-12-28 2013-07-04 Intel Corporation Systems, apparatuses, and methods for performing delta encoding on packed data elements
US9864602B2 (en) 2011-12-30 2018-01-09 Intel Corporation Packed rotate processors, methods, systems, and instructions
US10289412B2 (en) * 2012-02-09 2019-05-14 Qualcomm Incorporated Floating point constant generation instruction
WO2013180712A1 (en) * 2012-05-30 2013-12-05 Intel Corporation Vector and scalar based modular exponentiation
US10430190B2 (en) 2012-06-07 2019-10-01 Micron Technology, Inc. Systems and methods for selectively controlling multithreaded execution of executable code segments
CN102819692A (zh) * 2012-08-10 2012-12-12 上海交通大学 基于fpga的rna二级结构预测装置、系统及其实现方法
CN102930008B (zh) * 2012-10-29 2015-10-07 无锡江南计算技术研究所 向量查表方法
US9639371B2 (en) 2013-01-29 2017-05-02 Advanced Micro Devices, Inc. Solution to divergent branches in a SIMD core using hardware pointers
CN104375803B (zh) * 2013-08-13 2017-10-24 华为技术有限公司 一种数据处理的方法及装置
CN104461939A (zh) * 2014-12-16 2015-03-25 清华大学 扩展处理器寄存器堆容量的方法
US10296489B2 (en) * 2014-12-27 2019-05-21 Intel Corporation Method and apparatus for performing a vector bit shuffle
US10296334B2 (en) * 2014-12-27 2019-05-21 Intel Corporation Method and apparatus for performing a vector bit gather
US10503502B2 (en) 2015-09-25 2019-12-10 Intel Corporation Data element rearrangement, processors, methods, systems, and instructions
GB2543303B (en) * 2015-10-14 2017-12-27 Advanced Risc Mach Ltd Vector data transfer instruction
US9733899B2 (en) * 2015-11-12 2017-08-15 Arm Limited Lane position information for processing of vector
US20170177350A1 (en) * 2015-12-18 2017-06-22 Intel Corporation Instructions and Logic for Set-Multiple-Vector-Elements Operations
US10152321B2 (en) * 2015-12-18 2018-12-11 Intel Corporation Instructions and logic for blend and permute operation sequences
CN107315563B (zh) * 2016-04-26 2020-08-07 中科寒武纪科技股份有限公司 一种用于执行向量比较运算的装置和方法
CN107315568B (zh) 2016-04-26 2020-08-07 中科寒武纪科技股份有限公司 一种用于执行向量逻辑运算的装置
CN108009976A (zh) * 2016-10-27 2018-05-08 超威半导体公司 用于图形处理单元(gpu)计算的超级单指令多数据(超级simd)
US10216479B2 (en) * 2016-12-06 2019-02-26 Arm Limited Apparatus and method for performing arithmetic operations to accumulate floating-point numbers
EP3747167B1 (en) 2018-02-19 2022-08-31 Huawei Technologies Co., Ltd. Multi-cloud vpc routing and registration
JP7296574B2 (ja) * 2019-03-04 2023-06-23 パナソニックIpマネジメント株式会社 プロセッサ及びプロセッサの制御方法
US11132198B2 (en) 2019-08-29 2021-09-28 International Business Machines Corporation Instruction handling for accumulation of register results in a microprocessor
CN110727412B (zh) * 2019-09-14 2022-01-07 无锡江南计算技术研究所 一种基于掩码的混合浮点乘法低功耗控制方法及装置
US11551148B2 (en) * 2020-04-29 2023-01-10 Marvell Asia Pte Ltd System and method for INT9 quantization
CN112230995B (zh) * 2020-10-13 2024-04-09 广东省新一代通信与网络创新研究院 一种指令的生成方法、装置以及电子设备
CN112328511B (zh) * 2021-01-04 2021-05-04 统信软件技术有限公司 一种数据处理方法、计算设备及可读存储介质
CN115794671B (zh) * 2023-02-07 2023-04-14 成都申威科技有限责任公司 一种兼容向量数据的访存系统及方法

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS59160267A (ja) * 1983-03-02 1984-09-10 Hitachi Ltd ベクトル処理装置
US4791555A (en) * 1983-10-24 1988-12-13 International Business Machines Corporation Vector processing unit
JPH0648486B2 (ja) * 1986-10-08 1994-06-22 日本電気株式会社 ベクトルデ−タ処理装置
JP2679994B2 (ja) * 1987-08-14 1997-11-19 株式会社日立製作所 ベクトル処理装置
JP2941817B2 (ja) * 1988-09-14 1999-08-30 株式会社日立製作所 ベクトル処理装置
US5226142A (en) * 1990-11-21 1993-07-06 Ross Technology, Inc. High performance register file with overlapping windows
US5493687A (en) * 1991-07-08 1996-02-20 Seiko Epson Corporation RISC microprocessor architecture implementing multiple typed register sets
US5438669A (en) * 1991-11-20 1995-08-01 Hitachi, Ltd. Data processor with improved loop handling utilizing improved register allocation
JP2823767B2 (ja) * 1992-02-03 1998-11-11 松下電器産業株式会社 レジスタファイル
JPH06274528A (ja) * 1993-03-18 1994-09-30 Fujitsu Ltd ベクトル演算処理装置
JP2883784B2 (ja) * 1993-04-27 1999-04-19 株式会社東芝 マイクロコンピュータ
US5669013A (en) * 1993-10-05 1997-09-16 Fujitsu Limited System for transferring M elements X times and transferring N elements one time for an array that is X*M+N long responsive to vector type instructions
WO1995032466A1 (en) * 1994-05-19 1995-11-30 Vlsi Technology, Inc. Flexible register mapping scheme

Also Published As

Publication number Publication date
KR100236527B1 (ko) 1999-12-15
CN1117316C (zh) 2003-08-06
FR2752965B1 (fr) 2004-09-24
JPH10116268A (ja) 1998-05-06
FR2752965A1 (fr) 1998-03-06
KR19980018072A (ko) 1998-06-05
DE19735348A1 (de) 1998-03-12
CN1174353A (zh) 1998-02-25
TW345650B (en) 1998-11-21
DE19735348B4 (de) 2006-10-05
US5838984A (en) 1998-11-17

Similar Documents

Publication Publication Date Title
JP3983857B2 (ja) ベクトルレジスタの複数バンクを用いた単一命令複数データ処理
US6058465A (en) Single-instruction-multiple-data processing in a multimedia signal processor
KR100500890B1 (ko) 디지탈 신호처리용 집적회로구조
KR100505799B1 (ko) 코프로세서 데이터 액세스 제어
US5881257A (en) Data processing system register control
US5983336A (en) Method and apparatus for packing and unpacking wide instruction word using pointers and masks to shift word syllables to designated execution units groups
US20080140994A1 (en) Data-Parallel processing unit
US5969975A (en) Data processing apparatus registers
US5881259A (en) Input operand size and hi/low word selection control in data processing systems
WO1998012626A1 (en) Data processing condition code flags
GB2317464A (en) Register addressing in a data processing apparatus
KR100500889B1 (ko) 데이터 처리장치에서의 레지스터 어드레싱
KR100267089B1 (ko) 스칼라/벡터연산이조합된단일명령복수데이터처리
KR100520807B1 (ko) 데이터 처리 조건 코드 플래그
KR100267092B1 (ko) 멀티미디어신호프로세서의단일명령다중데이터처리
KR20000048531A (ko) 데이터 처리장치에서의 입력 오퍼랜드 제어
US6925548B2 (en) Data processor assigning the same operation code to multiple operations
US7107302B1 (en) Finite impulse response filter algorithm for implementation on digital signal processor having dual execution units
KR20000048529A (ko) 데이터 처리장치의 레지스터 제어
KR20000048530A (ko) 데이터 처리장치 레지스터

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20050502

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20050517

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20050811

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20060221

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20060522

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20070104

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20070426

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20070510

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20070605

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20070705

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100713

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110713

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120713

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120713

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130713

Year of fee payment: 6

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees