JPH10134036A - マルチメディア信号プロセッサの単一命令多重データ処理 - Google Patents

マルチメディア信号プロセッサの単一命令多重データ処理

Info

Publication number
JPH10134036A
JPH10134036A JP9222416A JP22241697A JPH10134036A JP H10134036 A JPH10134036 A JP H10134036A JP 9222416 A JP9222416 A JP 9222416A JP 22241697 A JP22241697 A JP 22241697A JP H10134036 A JPH10134036 A JP H10134036A
Authority
JP
Japan
Prior art keywords
register
vector
instruction
data
srb
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP9222416A
Other languages
English (en)
Inventor
Le Trong Nguyen
トロン ギュエン リ
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 JPH10134036A publication Critical patent/JPH10134036A/ja
Pending legal-status Critical Current

Links

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/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • 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/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/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/30192Instruction operation extension or modification according to data descriptor, e.g. dynamic data typing
    • 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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3877Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor
    • G06F9/3879Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor for non-native instruction execution, e.g. executing a command; for Java instruction set
    • 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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G06F9/3887Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple data lanes [SIMD]

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Computer Hardware Design (AREA)
  • Complex Calculations (AREA)
  • Advance Control (AREA)
  • Image Processing (AREA)
  • Multi Processors (AREA)

Abstract

(57)【要約】 【課題】 妥当な費用、高い計算能力、及び馴染みのプ
ログラミング環境を提供するDSPを提供すること。 【解決手段】 本発明は、ベクトルプロセッサアーキテ
クチャはプログラム可能なサイズとタイプのデータエレ
メントを有する固定されたサイズのベクトルレジスタを
備える。データエレメントのタイプとサイズはベクトル
レジスタと関連したオペランドを操作する命令により定
義される。命令によって定義されるデータサイズはベク
トルレジスタの数と命令を完了するために実行される並
列演算の数を決める。本発明の1実施の形態は全てのサ
イズについての整数タイプと32ビットデータエレメン
トに対する浮動小数点データ型の8ビット、9ビット、
16ビット、及び32ビットのデータエレメントサイズ
を支援する。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明はディジタル信号プロ
セッサ、特にビデオ信号及びオーディオ信号の符号化(e
ncoding)及び復号化(decoding)のようなマルチメディア
機能に有利に適用される命令毎に多重データエレメント
の並列処理を行なうプロセッサに関する。
【0002】
【従来の技術】実時間ビデオ符号化及び復号化などのマ
ルチメディア応用のためのプログラム可能ディジタル信
号プロセッサ(DSP:Digital Signal Processor、以
下DSPと称する)は、制限された時間内に処理される
べき多量のデータが発生するので高速な処理能力を必要
とする。例えば特開平6−309349号公報または特
開平6−266860号公報に示すように、ディジタル
信号プロセッサに対する幾つかのアーキテクチャ(archi
tecture)が知られている。大部分のマイクロプロセッサ
に採用されたこのような汎用アーキテクチャは、実時間
ビデオ符号化または復号化のための充分な計算能力を有
するDSPを提供するためには高速演算周期を必要とす
る。このため、このようなDSPは高コストとなる。
【0003】超長命令ワード(VLIW:Very Long In
struction Word、以下VLIWと称する)プロセッサは
多くの機能ユニットを有するDSPであって、これらの
大部分は相違し、比較的単純なタスク(task)を行う。V
LIWDSPに対する単一命令は128バイト或いはそ
れ以上であり、分離された機能ユニットを並列に実行す
る分離された部分をもっている。VLIWDSPは多く
の機能ユニットが並列演算を行えるために高い計算能力
を備えている。また、VLIWDSPは各機能ユニット
が比較的小さくて単純なので比較的安価である。
【0004】
【発明が解決しようとする課題】VLIW DSPの問
題は、VLIWDSPの機能ユニットに対する並列実行
に適しない入出力制御、ホストコンピュータとの通信、
及び他の機能を処理することに対する非効率性である。
また、VLIWソフトウェアは、通常のソフトウェアと
相違し、VLIWソフトウェアアーキテクチャに慣れて
いるプログラマとプログラムツールが足りないために、
開発し難い。
【0005】妥当な費用、高い計算能力、及び馴染みの
プログラミング環境を提供するDSPがマルチメディア
応用に要求されている。
【0006】
【課題を解決するための手段】本発明の一特徴によれ
ば、マルチメディアディジタル信号プロセッサは、高い
計算能力を提供するためにベクトルデータ(即ち、オペ
ランド当たり多重データエレメント)を操作するベクト
ルプロセッサを含む。プロセッサはRISC型命令セッ
トを有する単一命令−多重データ(single-instruction-
multiple-data)アーキテクチャを使用する。プログラマ
にとっては、プログラム環境が馴染みの汎用プロセッサ
のプログラム環境と類似しているので、プログラムはベ
クトルプロセッサのプログラム環境に容易に適応でき
る。
【0007】DSPは1セットの汎用ベクトルレジスタ
を含む。各ベクトルレジスタは固定サイズをもっている
が、使用者の選択可能なサイズの分離されたデータエレ
メントに分割される。従って、ベクトルレジスタに記憶
されたデータエレメントの数は、エレメントに対する選
択されたサイズによって決定される。例えば、32バイ
トレジスタは32個の8ビットデータエレメント、16
個の16ビットデータエレメント、或いは8個の32ビ
ットデータエレメントに分けられる。データサイズと形
式の選択はベクトルレジスタと演算されたデータを処理
する命令によって行われ、命令に対する実行データパス
は命令によって指示されたデータサイズによって多数の
並列演算を実行する。
【0008】ベクトルプロセッサに対する命令はオペラ
ンドとしてベクトルレジスタ或いはスカラレジスタをも
つことができ、計算能力が高くなるように並列にベクト
ルレジスタの多重データエレメントを操作することがで
きる。本発明によるベクトルプロセッサに対する命令セ
ットの例はコプロセッサインタフェース演算、フロー制
御演算、ロード/記憶演算、及び論理/算術演算を含
む。論理/算術演算は、データエレメントの結果的なデ
ータベクトルを発生するために、1つのベクトルレジス
タからのデータエレメントを、1つ或いはそれ以上の他
のベクトルレジスタからの対応するデータエレメントと
結合させる演算を含む。他の論理/算術演算は1つ或い
はそれ以上のベクトルレジスタからの各種のデータエレ
メントを混合するか、或いはベクトルレジスタからのデ
ータエレメントをスカラ量と結合させる。
【0009】ベクトルプロセッアーキテクチャの拡張は
それぞれスカラデータエレメントを含むスカラレジスタ
を加算する。スカラとベクトルレジスタの結合(combina
tion)は、ベクトルの各データエレメントをスカラ値と
並列に結合する命令を含むベクトルプロセッサの命令セ
ットの拡張を容易にする。例えば、1つの命令がベクト
ルのデータエレメントにスカラ値を乗算する。また、ス
カラレジスタは単一データエレメントの記憶場所を提供
してベクトルレジスタから抽出されるか、或いはベクト
ルレジスタに記憶されるようにする。また、スカラレジ
スタはベクトルプロセッサとスカラレジスタのみを備え
るアーキテクチャをもつコプロセッサとの間に情報をパ
スするか、或いはロード/記憶演算に対する有効アドレ
スの計算に便利である。
【0010】本発明の他の特徴によれば、ベクトルプロ
セッサのベクトルレジスタはバンク(bank)から組み合わ
せられる。各バンクは“現在(current)”バンクとして
選択でき、一方他のバンクは“交替(alternative)”バ
ンクである。ベクトルプロセッサの制御レジスタで“現
在バンク”ビットは現在バンクを指示する。ビットの数
の減縮にはベクトルレジスタを識別することが必要であ
り、現在バンクにベクトルレジスタを識別するために若
干の命令はレジスタ番号のみを提供する。ロード/記憶
命令はあるバンクからベクトルレジスタを識別するため
に付加ビットをもつ。従って、ロード/記憶命令は現在
バンクでデータを操作する間、交替バンクでデータを取
り出すことができる。これはイメージ処理及びグラフィ
ック手続に対するソフトウェアパイプライニングを容易
にし、論理/算術演算が規則を外れて交替レジスタバン
クをアクセスするロード/記憶演算によって実行される
ことができるために、データ取出し時にプロセッサ遅延
を減らす。他の命令により交替バンクは現在バンクから
のベクトルレジスタと交替バンクからの対応するベクト
ルレジスタを含むダブルサイズベクトルレジスタの使用
を可能にする。このようなダブルサイズレジスタは命令
構文(syntax)から識別されることができる。ベクトルプ
ロセッサで制御ビットはデフォールトベクトルサイズが
1つ或いは2つのベクトルレジスタのいずれか1つにな
るように設定できる。また、交替バンクは2つのソース
と2つの目的地レジスタを有するシャフル(shuffle)、
アンシャフル(unshuffle)、飽和(saturate)、及び条件
移動のような複合命令の構文でより小さくて且つ明確な
識別されたオペランドを使用可能にする。
【0011】さらに、ベクトルレジスタは平均カッド(q
uad)、シャフル、アンシャフル、ペア式最大と交換、及
び飽和などの新規命令を具現する。これらの命令はビデ
オ符号化及び復号化のようなマルチメディア機能に共通
の演算を行い、他の命令セットが同一の機能を具現する
ために必要とする2或いはそれ以上の命令に代える。従
って、ベクトルプロセッサ命令セットはマルチメディア
応用時にプログラムの効率と速度を向上させる。
【0012】
【発明の実施の形態】以下、添付図面を参照して本発明
の好ましい実施の形態をさらに詳しく説明する。
【0013】図中の同一部分には同一符号を付する。
【0014】図2は本発明の実施の形態によるマルチメ
ディア信号プロセッサ100(MSP:Multimedia Sig
nal Processor)の実施の形態のブロック図を示す。マル
チメディアプロセッサ100は汎用プロセッサ110と
ベクトルプロセッサ120を含むプロセッシングコア1
05を含む。プロセッシングコア105はSRAM16
0,190、ROM170、及びキャッシュコントロー
ル180を含むキャッシュサブシステム130を通して
マルチメディアプロセッサ100の残りに接続されてい
る。キャッシュコントロール180はプロセッサ110
に対する命令キャッシュ162とデータキャッシュ16
4でSRAM160を構成することができ、ベクトルプ
ロセッサ120に対する命令キャッシュ192とデータ
キャッシュ194でSRAM190を構成することがで
きる。
【0015】ワンチップROM170はプロセッサ11
0,120に対するデータと命令を含み、且つキャッシ
ュから構成することができる。好ましい実施の形態にお
いて、ROM170はリセット及び初期化手続、自己テ
スト診断手続、インタラプト及び例外処理器、及びサウ
ンドブラスタエミュレーション用サブルーチン、V.3
4モデム信号処理用サブルーチン、一般電話機能、1−
D及び3−Dグラフィックサブライブラリ、及びMPE
G−1、MPEG−2、H.261、H.263、G.
728、G.723のようなオーディオ及びビデオ標準
用サブルーチンライブラリを含む。
【0016】キャッシュサブシステム130は、プロセ
ッサ110,120を2つのシステムバス140,15
0に接続させ、プロセッサ110,120とバス14
0、150に結合された装置に対するキャッシュとスイ
ッチングステーションとして作用する。システムバス1
50はバス140よりさらに高いクロック周波数で動作
し、それぞれ外部ローカルメモリ、ホストコンピュータ
のローカルバス、ダイレクトメモリアクセス(DMA:
Direct Memory Access)、及び各種アナログ/ディジタ
ル(A/D)及びディジタル/アナログ(D/A)変換
器に対するインタフェースを提供するデバイスインタフ
ェース152、DMAコントローラ154、ローカルバ
スインタフェース156、及びメモリコントローラ15
8に接続されている。バス140にはシステムタイマ1
42、UART(Universal Asynchronous Receiver Tra
nsceiver)144、ビットストリームプロセッサ14
6、及びインタラプトコントローラ148が接続されて
いる。“マルチメディア信号プロセッサのマルチプロセ
ッサ動作及びビデオデータを処理するための方法及び装
置”の名称を有する本願出願と合体する特許出願は、プ
ロセッサ110,120がキャッシュシステム130と
バス140,150を通してアクセスする、好ましいデ
バイスとキャッシュサブシステム130の作用をさらに
詳しく説明している。
【0017】プロセッサ110,120は分離されたプ
ログラムスレッド(thread)を実行し、それらに割り当て
られた特定タスクをより効率的に実行するために構造的
に相違する。プロセッサ110は実時間作動システムの
実行のような制御機能と多数の反復的な計算を要求しな
い類似機能を優先している。従って、プロセッサ100
は高い計算能力を必要とせず、通常の汎用プロセッサア
ーキテクチャを用いて具現することができる。ベクトル
プロセッサ120は大部分のマルチメディア処理におい
て共通のデータブロックに対する反復的な演算を含むナ
ンバクランチング(number crunching)を施す。高い計算
能力と比較的単純なプログラミングのために、ベクトル
プロセッサ120はSIMD(Single Instruction Mult
iple Data)アーキテクチャを有し、例示された実施の形
態でベクトルプロセッサ120における大部分のデータ
パスはベクトルデータ操作を支援するために288或い
は576ビットのうち1つの広さを有する。また、ベク
トルプロセッサ120に対する命令セットは特にマルチ
メディア問題に適した命令を含む。
【0018】上述の実施の形態において、プロセッサ1
10は40MHzで動作して、ARM7標準によって定
義されたレジスタセットを含むARM7プロセッサのア
ーキテクチャと一致する32ビットRISCプロセッサ
である。ARM7RISCプロセッサに対するアーキテ
クチャと命令セットはAdvance RISC Machines Ltd.から
入手可能な“ARM7DMDataSheet”、文書
番号:ARMDDI0010Gに記載されている。AR
M7DMDataSheetはこの出願に参考として含
まれる。後述する別添Aには好ましい実施の形態でAR
M7命令セットの拡張を説明している。
【0019】ベクトルプロセッサ120はベクトルとス
カラ量を全て演算する。好ましい実施の形態において、
ベクトルプロセッサ120は80MHzで動作するパイ
プライン構造のRISCエンジンから構成されている。
ベクトルプロセッサ120のレジスタは32ビットスカ
ラレジスタ、32ビット特殊目的レジスタ、2バンクの
288ビットベクトルレジスタ、及び2ダブルサイズ
(例えば、576ビット)ベクトルアキュムレータレジ
スタを含む。後述する別添Cにはベクトルプロセッサ1
20の好ましい実施の形態に対するレジスタセットを説
明する。好ましい実施の形態において、プロセッサ12
0は0〜31の5ビットレジスタ番号によって命令が識
別される32個のスカラレジスタを含む。また、2バン
クの32ベクトルレジスタ構造からなっている64個の
288ビットベクトルレジスタを備えている。各ベクト
ルレジスタは1ビットのバンク番号(0または1)と0
〜31の5ビットベクトルレジスタ番号によって識別さ
れる。大部分の命令はただベクトルプロセッサ120の
制御レジスタVCSRに記憶されたデフォールトバンク
ビットCBANKとして指示された現在バンクからベク
トルレジスタをアクセスする。第2制御ビットVEC6
4はデフォールトによるレジスタ番号が各バンクからレ
ジスタを含むダブルサイズベクトルレジスタを識別する
かを指示する。命令の構文はベクトルレジスタを識別す
るレジスタ番号をスカラレジスタを識別するレジスタ番
号と区別する。
【0020】各ベクトルレジスタはプログラム可能なサ
イズのデータエレメントに分割されることができる。表
1は288ビットベクトルレジスタ内でデータエレメン
トに対して支援されるデータ形式を示す。
【0021】
【表1】
【0022】後述する別添Dにおいて本発明の好ましい
実施の形態から支援されるデータサイズとデータ形式に
対する追加説明を提供する。
【0023】int9データ形式の場合、9ビットバイ
トが288ビットベクトルレジスタに必然的に包装され
るが、他のデータ形式の場合には288ビットベクトル
レジスタに全ての9ビットは使用されない。288ビッ
トベクトルレジスタは32個の8ビット又は9ビット整
数データエレメント、16個の16ビット整数データエ
レメント、或いは8個の32ビット整数または浮動小数
点エレメントを保有することができる。また、2ベクト
ルレジスタはダブルサイズベクトルでデータエレメント
を包装するように結合できる。本発明の好ましい実施の
形態で制御及び状態レジスタVCSRに制御ビットVE
C64を設定することは、ダブルサイズ(576ビッ
ト)がベクトルレジスタのデフォールトサイズの場合、
ベクトルプロセッサ120をモードVEC64に設定す
る。
【0024】また、マルチメディアプロセッサ100は
両プロセッサ110,120がアクセスし得る1セット
の32ビット拡張レジスタ115を含む。後述する別添
Bにおいて本発明の好ましい実施の形態で1セットのレ
ジスタとそれらの機能を説明する。拡張レジスタとベク
トルプロセッサ120のスカラ及び特殊目的のレジスタ
は、幾つかの環境でプロセッサ110がアクセスし得
る。2つの特殊“使用者”拡張レジスタはプロセッサ1
10,120が同時にレジスタを読み取れるように2つ
の読取りポートをもっている。他の拡張レジスタは同時
にアクセスされることができない。
【0025】ベクトルプロセッサ120はベクトルプロ
セッサがランニング或いはアイドル状態にあるかを示す
2つの選択的な状態(VP_RUN,VP_IDLE)
を有する。プロセッサ110はベクトルプロセッサ12
0が状態VP_IDLEにある時、ベクトルプロセッサ
120のスカラ或いは特殊目的のレジスタを読み取るか
書き込むことができるが、ベクトルプロセッサ120が
状態VP_RUNにある間にプロセッサ110がベクト
ルプロセッサ120のレジスタを読み取ったり書き込ん
だりした結果は未定である。
【0026】プロセッサ110に対するARM7命令セ
ットの拡張は拡張レジスタとベクトルプロセッサ120
のスカラ及び特殊目的のレジスタをアクセスする命令を
含む。命令MFER,MFEPはそれぞれ、拡張レジス
タとベクトルプロセッサ120のスカラ或いは特殊目的
のレジスタからプロセッサ110の一般レジスタにデー
タを移動させる。命令MTER,MTEPはそれぞれ、
プロセッサ110の一般的なレジスタから拡張レジスタ
とベクトルプロセッサ120のスカラ或いは特殊目的の
レジスタにデータを移動させる。TESTSET命令は
拡張レジスタを読み取り拡張レジスタのビット30を1
に設定させる。命令TESTSETはプロセッサ110
が生産された結果を読み取るか、或いは使用したプロセ
ッサ120に対する信号を発生するようにビット30を
設定することにより、使用者/生産者同期を容易にす
る。STARTVP及びINTVPのようなプロセッサ
110に対する他の命令はベクトルプロセッサ120の
演算状態を制御する。
【0027】プロセッサ110はベクトルプロセッサ1
20の演算を制御するマスタプロセッサとしての役割を
果たす。プロセッサ110,120の間の不均衡分割制
御を使用することはプロセッサ110,120の同期化
問題を単純化させる。プロセッサ110はベクトルプロ
セッサ120が状態VP_IDLEにある間にベクトル
プロセッサ120に対するプログラムカウンタに命令ア
ドレスを記録することにより、ベクトルプロセッサ12
0を初期化させる。その後、プロセッサ110はベクト
ルプロセッサ120を状態VP_RUNに変更させるS
TARTVP命令を実行する。状態VP_RUNにおい
てベクトルプロセッサ120はキャッシュサブシステム
130を通して命令を取り出し、プロセッサ110と並
列にそれら命令を実行し、引き続き自分のプログラムを
実行する。起動後にベクトルプロセッサ120は例外に
会うか、適切な条件が満足されてVCJOINまたはV
CINT命令を実行するか、或いはプロセッサ110に
よってインタラプトがかかる時まで実行し続ける。ベク
トルプロセッサ120は拡張レジスタに結果を記録する
か、プロセッサ110,120の共有アドレス空間に結
果を記録するか、或いはベクトルプロセッサ120が状
態VP_IDLEに再進入する時プロセッサ110がア
クセスするスカラ或いは特殊目的のレジスタに結果を残
すことにより、プロセッサ110に対するプログラム実
行の結果をパスすることができる。
【0028】ベクトルプロセッサ120は自分の例外を
処理することができない。例外を引き起こす命令の実行
時にベクトルプロセッサ120は状態VP_IDLEに
進入してプロセッサ110に対してダイレクトラインを
通してインタラプト要求(interrupt request)を発生す
る。ベクトルプロセッサ120はプロセッサ110が他
のSTARTVP命令を実行する時まで状態VP_ID
LEに残っている。プロセッサ110は例外現象を判断
してベクトルプロセッサ120のレジスタVISRCを
読み取り、ベクトルプロセッサ120を更に初期化させ
ることによりできるだけ例外を処理し、その後所望に応
じて、実行を再び始めるようにベクトルプロセッサ12
0を調整する。
【0029】プロセッサ110によって実行されるIN
TVP命令は、ベクトルプロセッサ120がアイドル状
態VP_IDLEに進入するようにベクトルプロセッサ
120にインタラプトを掛ける。例えば、命令INTV
Pはマルチタスクシステム(multitasking system)に用
いられ、ビデオ復号化のような1つのタスクからサウン
ドカードエミュレーションのような他のタスクにベクト
ルプロセッサを交換する。
【0030】ベクトルプロセッサ命令VCINT,VC
JOINは命令によって指示された条件が満足される場
合、ベクトルプロセッサ120による実行を停止し、状
態VP_IDLEにベクトルプロセッサ120を設定
し、このような要求が遮断されない場合、プロセッサ1
10に対するインタラプトを発する。ベクトルプロセッ
サ120のプログラムカウンタ(特殊目的のレジスタV
PC)はVCINT或いはVCJOIN命令の次の命令
アドレスを示す。プロセッサ110はVCINT或いは
VCJOIN命令がインタラプト要求を引き起こしたか
否かを判断するために、ベクトルプロセッサ120のイ
ンタラプトソースレジスタVISRCをチェックするこ
とができる。ベクトルプロセサ120は大きいデータバ
スをもっており且つレジスタのセーブ及び復旧にさらに
効率的なので、ベクトルプロセッサ120によって実行
されたソフトウェアは環境スイッチングの間、レジスタ
をセーブし復旧する。“マルチプロセッサにおける効率
的な環境セービング及び復旧”との名称の本願出願と関
連した他の出願には環境スイッチングに対する好ましい
システムが記述されている。
【0031】図1はベクトルプロセッサ120の好まし
い実施の形態の重要な機能ブロックを示す。ベクトルプ
ロセッサ120は命令取出しユニット(IFU:Instru
ction Fetch Unit)210、デコーダ220、スケジュ
ーラ230、実行データパス240、及びロード/記憶
ユニット(LSU:Load/Store Unit)250を含む。I
FU210は命令を取り出してブランチ(Branch)のよう
なフローコントロール命令を処理する。命令デコーダ2
20はIFU210から達した順序によって各サイクル
ごとに1つの命令を復号化して、命令から復号化された
フィールド値をFIFO方式でスケジューラ230に記
録する。スケジューラ230は演算実行段階において必
要とする実行制御レジスタに発行されるフィールド値を
選択する。発行選択は実行データパス240或いはロー
ド/記憶ユニット250のような処理資源の有効性とオ
ペランド(operand)依存性による。実行データパス24
0はベクトルまたはスカラデータを操作する論理/算術
命令を実行する。ロード/記憶ユニット250はベクト
ルプロセッサ120のアドレス空間をアクセスするロー
ド/記憶命令を実行する。
【0032】図3はメイン命令バッファ310と第2命
令バッファ312に分割された命令バッファを含むIF
U210の実施の形態に対するブロック図を示す。メイ
ンバッファ310は現在プログラムカウントに対応する
命令を含む8つの連続命令を含む。第2命令バッファ3
12はバッファ310命令の後続の8命令を含む。IF
U210はまたバッファ310或いは312の次のフロ
ーコントロール命令のターゲットを含んだ8連続命令を
含むブランチターゲットバッファ314を備える。好ま
しい実施の形態でベクトルプロセッサ120は各命令が
32ビットで長い場合、RISC形命令セットを使用
し、バッファ310,312,314は8×32ビット
バッファであり、256ビット命令バスを通じてキャッ
シュサブシステム130に接続される。IFU210は
単一クロックサイクル内にキャッシュサブシステム13
0からバッファ310,312,314中のいずれか1
つに8命令をロードすることができる。レジスタ34
0,342,344はそれぞれのバッファ310,31
2,314にロードされた命令に対するベースアドレス
を指示する。
【0033】マルチプレクサMUX332はメイン命令
バッファ310から現在命令を選択する。もし、現命令
がフローコントロール命令でなく且つ命令レジスタ33
0に記憶された命令が復号化段階の実行より前にある場
合、現命令は命令レジスタ330に記憶され、プログラ
ムカウントは増分される。プログラムカウントの増分が
バッファ310にある最終の命令を選択した後、次のセ
ットの8命令はバッファ310にロードされる。もしバ
ッファ312が所望の8命令を含む場合、バッファ31
2とレジスタ342の内容は直ちにバッファ310とレ
ジスタ340に移動され、8以上の命令はキャッシュサ
ブシステム130から第2命令バッファ312に予め取
り出される。加算器350はマルチプレクサMUX35
2によって選択されたオフセットレジスタ342のベー
スアドレスから次のセットの命令のアドレスを決定す
る。加算器350からの結果アドレスはレジスタ342
からのアドレスがレジスタ340に移動した場合に或い
はその後にレジスタ342に記憶される。さらに、計算
されたアドレスは8命令に対する要求を有するキャッシ
ュサブシステム130に送られる。キャッシュサブシス
テム130に対する予備呼出がバッファ310に要求さ
れる時、バッファ312に対する次の8命令がまだ備え
られていない場合、予め要求された命令はキャッシュサ
ブシステム130から受信され次第にバッファ310に
記憶される。
【0034】現在命令がフローコントロール命令の場
合、IFU210はフローコントロール命令に対する条
件を評価し、フローコントロール命令を従うプログラム
カウントをアップデートさせることにより命令を処理す
る。IFU210は条件変更可能な従前の命令が完了し
ていないために、条件が決定されていない場合に保留に
なる。ブランチがなされない場合、プログラムは増分さ
れ、次の命令が前記のように選択される。もしブランチ
が成されてブランチターゲットバッファ314がブラン
チのターゲットを含む場合、バッファ314とレジスタ
344の内容がバッファ310及びレジスタ340に移
動され、IFU210はキャッシュサブシステム130
からの命令を待たずにデコーダ220に引き続き命令を
提供する。
【0035】ブランチターゲットバッファ314に対す
る命令を予め取り出すために、スキャナ320は現在プ
ログラムカウント後の次のフロー制御命令を探すため、
バッファ310,312をスキャニングする。もしフロ
ー制御命令がバッファ310または312から発見され
る場合、スキャナ320は命令を含むバッファ(310
又は312)のベースアドレスからフロー制御命令のタ
ーゲットアドレスを含む整列したセットの8命令に対す
るオフセットを決定する。マルチプレクサ352,35
4はレジスタ340或いは342からバッファ314に
対する新しいベースアドレスを発生する加算器350に
ベースアドレスとフローコントロール命令からオフセッ
トを提供する。新しいベースアドレスはキャッシュサブ
システム130に印加されてブランチターゲットバッフ
ァ314に8命令を引き続き提供する。
【0036】“減少及び条件部ブランチ”命令(VD1
CBR,VD2CBR,VD3CBR)及び“変更制御
レジスタ”命令VCHGCRのようなフローコントロー
ル命令を処理する場合、IFU210はプログラムカウ
ントに付加してレジスタ値を変更することができる。I
FU210がフローコントロール命令でない命令を発見
した時、その命令は命令レジスタ330に送られてから
デコーダ220に送り出される。
【0037】デコーダ220は図4に示すように、スケ
ジューラ230でFIFOバッファ410のフィールド
に制御値を記録することにより、命令を復号化する。F
IFOバッファ410は4行列のフリップフロップを含
み、各フリップフロップは1つの命令の実行を制御する
するための5フィールドの情報を含むことができる。行
列0〜行列3はそれぞれ一番古いものから一番新しい命
令に対する情報を保有し、FIFOバッファ410の情
報はさらに古い情報が命令として完全に除去されたと
き、さらに低い行列にシフトされる。スケジューラ23
0は実行レジスタ421〜427を含むコントロールパ
イプ420にロードされる命令の必要なフィールドを選
択することにより、実行端に命令を発行する。大部分の
命令は不規則的な順序で発行と実行を予定することがで
きる。特に論理/算術演算とロード/記憶演算の順序は
ロード/記憶演算と論理/算術演算との間のオペランド
従属性がない限り任意である。FIFOバッファ410
でフィールド値の比較はあるオペランド従属性が存在す
るかを指示する。
【0038】図5はベクトルプロセッサ120のアドレ
ス空間をアクセスせず、レジスタ対レジスタ演算を行う
命令に対する6段実行パイプラインを示す。命令取出し
段階511でIFU210は前記のように命令を取り出
す。取出し端はIFU210がパイプライン遅延、未解
決ブランチ条件、或いは予め取り出された命令を提供す
るキャッシュサブシステム130における遅延によって
保留されない限り1クロックサイクルを必要とする。復
号化段階512でデコーダ220はIFU210から命
令を復号化してスケジューラ230に命令に対する情報
を記録する。尚、復号化段階512はFIFO410で
いずれの行列も新しい演算を利用しない限り1クロック
サイクルを必要とする。演算はFIFO410で第1サ
イクルの間コントロールパイプ420に発行されること
ができるが、さらに古い演算の発行によって遅延するこ
ともある。
【0039】実行データパス240はレジスタ対レジス
タ演算を行い、ロード/記録演算に対するアドレスを提
供する。図8は実行データパス240の実施の形態のブ
ロック図であり、実行段階514,515,516と関
連して説明される。実行レジスタ421は読取り段階5
14の間クロックサイクルで読み取られたレジスタファ
イル610に2レジスタを識別する信号を提供する。レ
ジスタファイル610は32スカラレジスタと64ベク
トルレジスタを含む。図9はレジスタファイルのブロッ
ク図である。レジスタファイル610は各クロックサイ
クルごとに2読取り及び2書込みを収容するように2つ
の読取りポートと2つの書込みポートをもっている。各
ポートは選択回路612,614,616或いは618
と、288ビットデータバス613,615,617或
いは619を含む。回路612,614,616,61
8のような選択回路は当分野の周知された事項であり、
命令から典型的に抽出された5ビットレジスタ番号から
デコーダ220が導出するアドレス信号WRADDR
1,WRADDR2,RDADDR1或いはRDADD
R2と、命令又は制御状態レジスタVCSRからのバン
クビットと、レジスタがベクトルレジスタ或いはスカラ
レジスタであるかを指示する命令構文を使用する。デー
タ読取りはマルチプレクサ656を通してロード/記憶
ユニット250に対してなされるか、或いはマルチプレ
クサ622,624を通してマルチプライヤ620、算
術論理ユニット630、又はアキュムレータ640に対
してなされる。大部分の演算は2レジスタを読み取り、
読取り段階514は1サイクルで完了する。しかし、乗
算及び加算命令VMAD及びダブルサイズベクトルを調
整する命令のような幾つかの命令は2以上のレジスタか
らデータを必要とするので、読取り段階514は1クロ
ックサイクルよりさらに長くなる。
【0040】実行段階515において、マルチプライヤ
620、算術論理ユニット630、及びアキュムレータ
640を通る間、処理データはレジスタファイル610
から予め読み取られる。実行段階515は必要なデータ
の読取りに多数のサイクルが要求される場合、読取り段
階514をオーバーラップすることができる。実行段階
515の期間はデータエレメントのタイプ(整数或いは
浮動小数点)及び処理されたデータの量(読み取りサイ
クルの数)によって変わる。実行レジスタ422,42
3,425の信号は実行段階の間行われた第1演算のた
めに算術論理ユニット630、アキュムレータ640、
及びマルチプライヤ620に対する入力データを制御す
る。実行レジスタ432,433,435は実行段階5
15の間行われた第2演算を制御する。
【0041】図10は乗算器(マルチプライヤ)620
とALU(arithmetic and logic unit)630の実施の
形態に対するブロック図である。マルチプライヤ620
は8つの独立した36×36ビットマルチプライヤ62
6を含む整数マルチプライヤである。それぞれのマルチ
プライヤ626は制御回路に相互接続された4つの9×
9ビットマルチプライヤを含む。8ビット及び9ビット
データエレメントサイズをもつ場合、スケジューラ23
0からの制御信号は4つの9×9ビットマルチプライヤ
を互いに分離させて各マルチプライヤ626が4乗算を
行うようにすることで、マルチプライヤ620が1サイ
クルの間32独立乗算を行うようにする。16ビットデ
ータエレメントの場合、制御回路は一対の9×9ビット
マルチプライヤが共に動作するように接続させて、マル
チプライヤ620は16並列乗算を行う。32ビット整
数データエレメント形の場合、8つのマルチプライヤ6
26はクロックサイクルごとに8並列乗算を行う。乗算
の結果は9ビットデータエレメントサイズに対いて57
6ビットを提供し、そして他のデータサイズに対して5
12ビットを提供する。
【0042】ALU630は2クロックサイクル内にマ
ルチプライヤ620から生成された576ビットまたは
512ビットの結果を処理することができる。ALU6
30は8つの独立した36ビットALU636を含む。
各ALU636は浮動小数点加算と乗算のための32×
32ビット浮動小数点ユニットを含む。整数操作のため
に各ALU636は独立した8ビット及び9ビット操作
を行うことができ、16ビット及び32ビット整数デー
タエレメントに対して2或いは4セットで互いに接続さ
れ得る4ユニットを含む。
【0043】累算器(アキュムレータ)640は結果を
累算し、中間結果でさらに高い精密度のために2つの5
76ビットレジスタを含む。
【0044】記録段階516の間実行段階の結果はレジ
スタファイル610に記憶される。2つのレジスタは単
一クロックサイクルの間に記録されることができ、入力
マルチプレクサ602,605は記録される2データ値
を選択する。演算に対する記録段階516の期間は演算
結果として記録されるデータの量と、レジスタファイル
610に記録することによりロード命令を完了できるL
SU250からの完了によって異なる。実行レジスタ4
26,427からの信号は論理ユニット630、アキュ
ムレータ640、及びマルチプライヤ620のデータが
記録されるレジスタを選択する。
【0045】図6はロード命令の実行のための実行パイ
プライン520を示す。実行パイプライン520のため
の命令取出し段階511、復号化段階512、及び発行
段階513はレジスタ対レジスタ演算に対して説明され
たものと同一である。また、読取り段階514はキャッ
シュサブシステム130に対する呼出用アドレスを決定
するために実行データパス240がレジスタファイル6
10からデータを使用することを除いては前述と同一で
ある。アドレス段階525においてマルチプレクサ65
2,654,656は実行段階526,527のために
ロード/記憶ユニット250に提供されるアドレスを選
択する。ロード演算に対する情報は段階526,527
の間FIFO410に残留し、一方ロード/記憶ユニッ
ト250は演算を処理する。
【0046】図11はロード/記憶ユニット250に対
する実施の形態を示す。256段階の間525段階で決
定されたアドレスのデータのためにキャッシュサブシス
テム130に対するコール(call)を行う。好まし
い実施の形態はプロセッサ110,120を含む多重デ
バイスがキャッシュサブシステム130を通してローカ
ルアドレス空間をアクセスする場合、トランザクション
ベースキャッシュコール(transaction based cache cal
l)を使用する。要求されたデータはキャッシュサブシス
テム130に対するコール後に幾つかのサイクルの間に
使用し得ないが、ロード/記憶ユニット250は他のコ
ールが保留(pending)されている間キャッシュサブシス
テムに対するコールをすることができる。従って、ロー
ド/記憶ユニット250は停止されない。要求されたデ
ータを提供するためにキャッシュサブシステムに要求さ
れるクロックサイクルの数は、データキャッシュ194
にヒット或いはミスが存在するかによっている。
【0047】ドライブ段階527において、キャッシュ
サブシステム130はロード/記憶ユニット250に対
するデータ信号を要求する。キャッシュサブシステム1
30はロード/記憶ユニット250にサイクル当たり2
56ビット(32バイト)データを提供することができ
る。バイトアライナ710は288ビット値を提供する
ために対応する9ビット記憶位置に32バイトをそれぞ
れ整列させる。288ビットフォーマットは時々9ビッ
トデータエレメントを使用するMPEG符号化及び復号
化のようなマルチメディア応用に便利である。288ビ
ット値は読取りデータバッファ720に記録される。記
録段階528でスケジューラ230はFIFOバッファ
410から実行レジスタ(426または427)にフィ
ールド4を伝送して、データバッファ720からレジス
タファイル610に288ビット量を記録する。
【0048】図7は記憶命令の実行のための実行パイプ
ライン530を示す。実行パイプライン530のための
取出し段階511、復号化段階512、及び発行段階5
13は前述と同様である。読み取り段階514は記憶さ
れるべきデータとアドレス計算用データとを読み取るこ
とを除いては前述と同一である。記憶されるべきデータ
はロード/記憶ユニット250で記録データバッファ7
30に記録される。マルチプレクサ740は9ビットバ
イトを提供するフォーマットのデータを8ビットバイト
を有する通常のフォーマットに変換する。バッファ73
0からの変換されたデータとアドレス計算段階525か
らの関連アドレスはSRAM段階536の間キャッシュ
サブシステム130に並列に送られる。
【0049】ベクトルプロセッサ120の好ましい実施
の形態において、各命令は32ビット長であって、図8
に示された9つのフォーマットのうち1つをもち、RE
AR,REAI,RRRM5,RRRR,RI,CT,
RRRM9,RRRM*,及びRRRM9**のレベル
が付けてある。なお、別添Eにおいてベクトルプロセッ
サ120に対する命令セットについて説明する。
【0050】有効アドレスを決定する時にスカラレジス
タを使用する幾つかのロード、記憶、及びキャッシュ演
算はREARフォーマットをもつ。REAR−フォーマ
ット命令は000bのビット29〜31によって識別さ
れ、スカラレジスタに対する2つのレジスタ番号SR
b,SRiとビットDによるスカラ或いはベクトルレジ
スタである可能性のあるレジスタのレジスタ番号Rnに
よって識別される3オペランドをもつ。バンクビットB
はレジスタRnに対するバンクを識別するか、或いはデ
フォールトベクトルレジスタサイズがダブルサイズの場
合、ベクトルレジスタRnがダブルサイズベクトルレジ
スタであるかを指示する。op−コードフィールドOp
cはオペランドに実行される演算を識別し、フィールド
TTはロード或いは記憶のような伝送タイプを指す。典
型的なREAR−フォーマット命令はスカラレジスタS
Rb,SRiの内容を加算することにより決定されるア
ドレスからレジスタRnをロードする命令VLである。
もしビットAが設定される場合、計算されたアドレスは
スカラレジスタSRbに記憶される。
【0051】REA1−フォーマット命令は、フィール
ドIMMの8ビット中間値がスカラレジスタSRiの内
容の代わりに使用されることを除いてはREAR命令と
同一である。REARとREAIフォーマットはデータ
エレメントサイズフィールドを持たない。
【0052】RRRM5フォーマットは2ソースオペラ
ンドと1目的オペランドをもつ命令のためのものであ
る。これらの命令は3レジスタオペランド或いは2レジ
スタオペランドと5ビット中間値のうち1つを有する。
別添Eに示すように、フィールドD,S,Mの符号化は
第1ソースオペランドRaがスカラまたはベクトルレジ
スタであるか否かを判断し、第2ソースオペランドRb
/IM5がスカラレジスタ、ベクトルレジスタ、或いは
5ビット中間値であるか否かを判断し、目的レジスタR
dがスカラ或いはベクトルレジスタであるか否かを判断
する。
【0053】RRRRフォーマットは4レジスタオペラ
ンドをもつ命令のためのものである。レジスタ番号R
a,Rbはソースレジスタを指摘する。レジスタ番号R
dは目的レジスタを示し、レジスタ番号Rcはフィール
ドOpcによるソースまたは目的レジスタのうち1つを
示す。レジスタRbがスカラレジスタであることを指示
するようにビットSが設定されている場合を除いて全て
のオペランドはベクトルレジスタである。フィールドD
Sはベクトルレジスタに対するデータエレメントサイズ
を示す。フィールドOpcは32ビットデータエレメン
トに対するデータ型を選択する。
【0054】RI−フォーマット命令は中間値をレジス
タにロードさせる。フィールドIMMは18ビットまで
の中間値を含む。レジスタ番号RdはビットDによるス
カラレジスタと現在バンクのベクトルレジスタのうち1
つである目的レジスタを示す。フィールドDS,Fはそ
れぞれのデータエレメントサイズとタイプを指す。32
ビット整数データエレメントの場合、18ビット中間値
はレジスタRdにロードされる前に拡張されたサインで
ある。浮動小数点データエレメントの場合、ビット1
8、ビット17〜10、及びビット9〜0はそれぞれ3
2ビット浮動小数点値のサイン、指数、及び仮数(manti
ssa)を示す。
【0055】CTフォーマットはフローコントロール命
令に対するものであり、op−コードフィールドOp
c、条件フィールドCond、23ビット中間値IMM
を含む。条件フィールドによって示される条件が真実で
ある場合、ブランチが取られる。可能な条件コードは
“常時(always)”、“より少ない(less than)”、“同
一(equal)”、“以下或いは同一(less than or equa
l)”、“より大きい(greaterthan)”、“同一でない(no
t equal)”、“より大きいか或いは同一(greater than
or equal) ”、及び“オーバフロー(overflow)”であ
る。状態及び制御レジスタVCSRでビットGT,E
Q,LT,SOは条件を評価するのに用いられる。
【0056】フォーマットRRRM9は3レジスタオペ
ランド或いは2レジスタオペランドと9ビット中間値の
うちいずれかを提供する。ビットD,S,Mの組合せは
どのオペランドがベクトルレジスタ、スカラレジスタ、
或いは9ビット中間値であるかを示す。フィールドDS
はデータエレメントサイズを示す。RRRM9*とRR
RM9**フォーマットはRRRM9フォーマットの特
殊なケースであって、演算コードフィールドOpcによ
って区別される。RRRM9**フォーマットはソース
レジスタ番号Raを条件コードCondとIDフィール
ドに置き換えた。RRRM9**フォーマットは中間値
の最上位ビットMSBを条件コードCondとビットK
に置き換えた。RRRM9*とRRRM9**に対する
追加説明が条件部移動命令VCMOV、エレメントマス
クを有する条件部移動CMOVM、及び比較とマスク設
定CMPV命令と関連して後述する別添Eになされてい
る。
【0057】以上、本発明による特定の好ましい実施の
形態に関連して図示し述べたが、特許請求の範囲によっ
て設けられる本発明の精神や分野を外れない限度内で本
発明を多様に改造及び変換し得ることは当分野で通常の
知識を有する者には明らかなことである。
【0058】[別添A]例示的な実施例において、プロ
セッサ110はARM7プロセッサの規格に合う汎用プ
ロセッサである。ARM7プロセッサ内のレジスタ内の
説明に関するARMアーキテクチャ文献或いはARM7
データシート(1994年12月に発行された文献番号
ARMDDI0020C)を参照する。
【0059】ベクトルプロセッサ120との相互作用の
ために、プロセッサ110はベクトルプロセッサを開始
及び停止させ、同期を含んだベクトルプロセッサ状態を
テストし、ベクトルプロセッサ120内のスカラ/特殊
レジスタからのデータをプロセッサ110内の汎用レジ
スタ側に伝送し、一般レジスタからのデータをベクトル
プロセッサスカラ/特殊レジスタ側に伝送する。このよ
うな伝送のためには仲介者としてメモリを必要とする。
【0060】表2にはベクトルプロセッサの相互作用の
ためのARM7命令セットの拡張について説明されてい
る。
【0061】
【表2】
【0062】
【表3】
【0063】表3にはARM7の例外がリストされてお
り、これら例外はフローティング命令を行う前に検出及
び報告される。例外ベクトルアドレスは16進数表記で
与えられる。
【0064】
【表4】
【0065】次に、ARM7命令セットに対する拡張の
構文について説明する。用語説明及び命令フォーマット
に関するARMアーキテクチャ文献或いはARM7デー
タシート(1994年12月に発行された文献番号AR
MDDI0020Cを参照する。
【0066】前記ARMアーキテクチャはコプロセッサ
インタフェースのための3種類の命令フォーマットを提
供する。
【0067】1.コプロセッサデータ演算(CDP) 2.コプロセッサデータ伝送(LDC,STC) 3.コプロセッサレジスタ伝送(MRC,MCR) MSPアーキテクチャ拡張は3種類の形態を全て使用す
る。前記コプロセッサのデータ演算フォーマットCDP
はARM7側に再び伝送する必要のない演算のために用
いられる。
【0068】
【表5】
【0069】
【表6】
【0070】コプロセッサデータ伝送フォーマット(L
DC,STC)はベクトルプロセッサのレジスタのサブ
セットをメモリに直接ロード或いは記憶させるのに用い
られる。前記ARM7プロセッサはワードアドレスを供
給する役目をし、前記ベクトルプロセッサはデータを供
給又は受信し、伝送されたワードの個数を制御する。よ
り詳細なことはARM7データシートを参照する。
【0071】
【表7】
【0072】
【表8】
【0073】コプロセッサレジスタ伝送フォーマット
(MRC,MCR)はARM7とベクトルプロセッサと
の間で直接情報を通信するのに用いられる。このフォー
マットはARM7レジスタとベクトルプロセッサスカラ
或いは特殊レジスタとの間の移動に用いられる。
【0074】
【表9】
【0075】
【表10】
【0076】拡張ARM命令説明 拡張ARM命令についてはアルファベット順で説明す
る。
【0077】CACHE キャッシュ演算
【0078】
【表11】
【0079】アセンブラ構文 STC{cond} p15,c0pc,(Addre
ss) CACHE{cond}Opc,(Address) ここで、cond={eq,he,cs,cc,mi,
pl,vs,vc,hi,Is,ge,It,gt,l
e,ai,nv}、Opc={0,1,3}。LDC/
STCフォーマットのCRnフィールドはOpcを特定
するのに用いられるので、演算コードの十進数表記は第
1構文で文字“c”(即ち、0の代わりにc0を使用す
る)で開始すべきことに注目されたい。アドレスモード
構文に関するARM7データシートを参照する。
【0080】
【表12】
【0081】演算 EAを算出する方法に対するARM7データシートを参
照する。
【0082】例外 ARM7保護侵害INTVP インタラプトベクトルプロセッサ
【0083】
【表13】
【0084】アセンプラ構文 CDP{cond}p7,1,c0,c0,c0 INTVP{cond} ここで、cond={eq,ne,cs,cc,mi,
pl,vs,hi,ls,ge,lt,gt,le,a
l,ns} 説明 この命令はCondが真の時にのみ行われる。
【0085】この命令はベクトルプロセッサを停止させ
るために信号伝送を行う。
【0086】ARM7はベクトルプロセッサの停止を待
たず、次の命令を引き続き行う。
【0087】MFER使用中(busy)待機ループはこの命
令が行われた後にベクトルプロセッサが停止されたかを
調べるために用いられるべきである。この命令はベクト
ルプロセッサが予めVP_IDLE状態であれば、何の
影響も及ぼさない。
【0088】ビット19:12,7:15及び3:0は
予約されている。
【0089】例外 ベクトルプロセッサ利用不可能。
【0090】MFER 拡張レジスタからの移動
【0091】
【表14】
【0092】アセンブラ構文 MRC{cond}p7,1,Rd,cP,cER,0 MFER{cond}Rd,RNAME ここで、cond={eq,he,cs,cc,mi,
pl,rs,vs,hi,ls,ge,lt,gt,l
e,al,nv},Rd={r0,・・・r15},P
={0,1},ER={0,・・15}、そしてRNA
MEはアーキテクチャ的に特定されたレジスタニモニッ
ク{即ち、PERO或いはCSR}を意味する。
【0093】
【表15】
【0094】ビット19:17及び7:5は予約されて
いる。
【0095】例外 使用者モード中にPERxをアクセスしようとする時の
保護侵害MFVP ベクトルプロセッサからの移動
【0096】
【表16】
【0097】アセンブラ構文 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,l
e,al,nv},Rd={r0,・・・r15},C
Rn={c0,・・・c15},CRm={c0,・・
c15}、そしてRNAMEはアーキテクチャ的に特定
されたレジスタニモニック{即ち、SPO或いはVC
S}を意味する。
【0098】
【表17】
【0099】SR0は常に0である32ビットと判読
し、これに対する記録は無視される。
【0100】例外 ベクトルプロセッサ利用不可能MTER 拡張レジスタ側への移動
【0101】
【表18】
【0102】アセンブラ構文 MRC{cond}p7,1,Rd,cP,cER,0 MRER{cond}Rd,RNAME ここで、cond={eq,he,cs,cc,mi,
pl,rs,vc,hi,ls,ge,lt,gt,l
e,al,nv},Rd={r0,・・・r15},P
={0,1},ER={0,・・15},そしてRNA
MEはアーキテクチャ的に特定されたレジスタニモニッ
ク{即ち、PERO或いはCSR}を意味する。
【0103】
【表19】
【0104】ビット19:17及び7:5は予約されて
いる。
【0105】例外 使用者モード中にPERxをアクセスしようとする時の
保護侵害MTVP ベクトルプロセッサ側への移動
【0106】
【表20】
【0107】アセンブラ構文 MRC{cond}p7,1,Rd,cRn,CRm,
0 MRER{cond}Rd,RNAME ここで、cond={eq,ne,cs,cc,mi,
pl,vs,hi,ls,ge,lt,gt,le,a
l,nv},Rd={r0,・・・r15},CRn=
{c0,・・c15}、CRm={c0,・・・c1
5}、そしてRNAMEはアーキテクチャ的に特定され
たレジスタニモニック{即ち、SPO或いはVCS}を
意味する。
【0108】
【表21】
【0109】例外 ベクトルプロセッサ利用不可能PFTCH プリフェッチ
【0110】
【表22】
【0111】アセブラ構文 MRC{cond}p15,2,(Address) MFTCH{cond}(Address) ここで、cond={eq,he,cs,cc,mi,
pl,rs,vc,hi,ls,ge,lt,gt,l
e,al,nv}、アドレスモード構文に関するARM
7データシートを参照する。
【0112】説明 この命令はCondが真の時にのみ行われる。EAによ
って特定されたキャッシュラインはARM7データキャ
ッシュ側にプリフェッチされる。
【0113】演算 EAが算出される方法に関してはARM7データシート
を参照する。
【0114】例外 無しSTARTVP 開始ベクトルプロセッサ
【0115】
【表23】
【0116】アセブラ構文 CDP{cond}p7,2,c0,c0,c0 STARTVP{cond} ここで、cond={eq,he,cs,cc,mi,
pl,vs,vc,hi,ls,ge,lt,gt,l
e,al,nv} 説明 この命令はCondが真の時にのみ行われる。この命令
は遂行を開始するようにベクトルプロセッサ側に信号伝
送を行い、VISRC(vjp)とVISRC(vi
p)を自動的にクリアさせる。ARM7はベクトルプロ
セッサが遂行を開始することを待たず、次の命令を引き
続き行う。前記ベクトルプロセッサの状態はこの命令が
行われる前に所望の状態に初期化されるべきである。こ
の命令は前記ベクトルプロセッサが予めVP_RUN状
態になっている場合には何の影響も及ぼさない。
【0117】ビット19:12,7:5,及び3:0は
予約されている。
【0118】例外 ベクトルプロセッサ利用不可能TESTSET テスト及びセット
【0119】
【表24】
【0120】アセンブラ構文 MRC{cond}p7,0,Rd,c0,cER,0 TESTSET{cond}Rd,RNAME ここで、cond={eq,he,cs,cc,mi,
pl,rs,re,hi,ls,ge,lt,gt,l
e,al,nv},Rd={r0,・・r15},ER
={0,・・15},そしてRANAMEはアーキテク
チャ的に特定されたレジスタニモニック(即ち,UER
1或いはVASYNC)を意味する。
【0121】説明 この命令はCondが真の時にのみ行われる。この命令
はUERx乃至RDの内容を復帰させ、UERx(3
0)を1に設定する。ARM7レジスタ(15)が目的
レジスタとして特定されると、UERx(30)はCP
SRのZビットから復帰し、これにより短い使用中(bus
y)待機ループが行われることができる。現在、UER1
のみがこの命令に従って動作するように定義されてい
る。
【0122】ビット19:12及び7:5は予約されて
いる。
【0123】例外 無し [別添B]マルチメディアプロセッサのアーキテクチャ
100はプロセッサ110がMFER命令或いはMTE
R命令でアクセスする拡張レジスタを定義する。この拡
張レジスタは特権拡張レジスタと使用者拡張レジスタを
含んでいる。
【0124】特権拡張レジスタはマルチメディア信号プ
ロセッサの演算を制御するのに主に用いられる。これら
は表12に示されている。
【0125】
【表25】
【0126】前記制御レジスタはMSP(100)の演
算を制御する。CTRの全てのビットはリセット時にク
リアされる。前記レジスタ定義は表2Bに示されてい
る。
【0127】
【表26】
【0128】
【表27】
【0129】前記状態レジスタはMSP(100)の状
態を指示する。フィールドSTRの全てのビットはリセ
ット時にクリアされる。レジスタ定義は表14に示され
ている。
【0130】
【表28】
【0131】プロセッサバージョンレジスタはプロセッ
サのマルチメディア信号プロセッサファミリーの特定プ
ロセッサの特定バージョンを表示する。
【0132】ベクトルプロセッサインタラプトマスクレ
ジスタVIMSKはプロセッサ110にベクトルプロセ
ッサ例外を報告する演算を制御する。VIMSKのそれ
ぞれのビットはVISRCレジスタの対応ビットと共に
セットされると、ARM7に対してインタラプトを行う
例外をイネーブルさせる。これはベクトルプロセッサ例
外を検出する方法には何の影響も及ぼさず、但し前記例
外がARM7に対してインタラプトを掛けるべきかにの
み影響を及ぼす。VIMSKの全てのビットはリセット
時にクリアされる。レジスタ定義は表15に示されてい
る。
【0133】
【表29】
【0134】ARM7命令アドレス区切り点レジスタは
ARM7プログラムデバック(debugging)時にこれを支
援する。レジスタ定義は表16に示されている。
【0135】
【表30】
【0136】ARM7データアドレス区切り点レジスタ
はARM7プログラムデバッグ(debugging)時にこれを
支援する。レジスタ定義は表17に示されている。
【0137】
【表31】
【0138】スクラッチパッドレジスタはキャッシュサ
ブシステム130のSRAMを使用して形成されたスク
ラッチのアドレスとサイズを構成する。レジスタ定義は
表18に示されている。
【0139】
【表32】
【0140】使用者拡張レジスタはプロセッサ110,
120の同期に主に用いられる。使用者拡張レジスタは
ビット30にマッピングされた1ビットのみを持てるよ
うに現在定義されており、“MFERR15,UER
x”のような命令は例えばビット値をZフラグ側に復帰
させる。ビットUERx(31)及びUERx(29:
0)は常にゼロと判読される。使用者拡張レジスタは表
19に説明されている。
【0141】
【表33】
【0142】表20はパワーオンリセット時の拡張レジ
スタの状態を示す。
【0143】
【表34】
【0144】[別添C]ベクトルプロセッサ120のア
ーキテクチャ状態は32個の32ビットスカラレジス
タ;32個の288ビットベクトルレジスタの2つのバ
ンク:一対の576ビットベクトルアキュムレータレジ
スタ;1セットの32ビット特殊レジスタを含んでい
る。スカラレジスタ、ベクトルレジスタ及びアキュムレ
ータレジスタは汎用プログラミングのためのものであ
り、多数の他のデータ形態を支援する。
【0145】このセクション及び次のセクションでは次
の表記を使用する。:VRはベクトルレジスタを示し、
VRiは第iベクトルレジスタ(ゼロオフセット)を示
し、VR[i]はベクトルレジスタVRの第iデータエ
レメントを示し、VR(a:b)はベクトルレジスタV
Rのビットa乃至ビットbを示し、VR[i](a:
b)はベクトルレジスタVRの第iデータエレメントの
ビットa乃至ビットbを示す。
【0146】ベクトルアーキテクチャは一つのベクトル
レジスタ内の多数のエレメントDMLデータ種類とサイ
ズの追加された寸法をもっている。ベクトルレジスタは
固定されたサイズをもっているので、保持可能なデータ
エレメントの個数は前記エレメントのサイズに左右され
る。MSPアーキテクチャは表21に示すように5種類
のエレメントサイズを定義している。
【0147】
【表35】
【0148】MSPアーキテクチャは特定されたデータ
種類と命令サイズによってベクトルデータを解釈する。
現在、大部分の算術命令のバイト、バイト9、ハフワー
ド及びワードエレメントサイズに対しては2の補数(整
数)フォーマットが支援されている。また、IEEE7
4単一精密度フォーマットは大部分の算術命令のワード
エレメントサイズが支援されている。
【0149】命令シーケンスが意味のある結果をもたら
す限り、プログラマは所望の方式でデータを自由に解釈
する。例えば、プログラマはプログラムが“偽(fals
e)”オーバフロー結果を処理し得る限り、符号のない
8ビット数の貯蔵にバイト9サイズを自由に使用し、バ
イトサイズデータエレメントの符号の無い8ビット数を
同様に自由に貯蔵し、提供された2補数算術命令を使用
してこれらに対して演算を自由に行うことができる。
【0150】SR0乃至SR31で表記された32個の
スカラレジスタが存在する。これらスカラレジスタは幅
が32ビットであり、未確定されたサイズのうちいずれ
かのサイズの1つのデータエレメントを含むことができ
る。スカラレジスタSR0はこのレジスタSR0が0か
らなる32であって常に判読することができ、レジスタ
SR0への記録が無視される点から特別であると言え
る。バイト形、バイト9形及びハフワードデータ形は未
確定の値をもった最上位ビットをもっているスカラレジ
スタの最下位ビットに貯蔵される。
【0151】レジスタはデータ種類指示器を持っていな
いので、プログラマはそれぞれの命令に用いられるレジ
スタのデータ種類を知っていなければならない。これは
32ビットレジスタが32ビットレジスタを含んでいる
と仮定される他のアーキテクチャとは異なる。MSPア
ーキテクチャはデータ種類Aの結果がデータ種類Aに対
して未確定されたビットのみを修正することを指示す
る。例えば、バイト9加算の結果は32ビット目的スカ
ラレジスタの下位9ビットのみを修正する。上位23ビ
ットの値は命令に対して異に言及されなければ、未確定
された状態である。
【0152】64ベクトルレジスタはそれぞれ32ビッ
トレジスタをもっている2つのバンクから構成されてい
る。バンク0は第1の32レジスタを含んでおり、バン
ク1は第2の32ビットレジスタを含んでいる。これら
2つのバンクのうち、一つは現在バンクとして設定さ
れ、もう一つは交替バンクとして設定されるようにして
用いられる。交替バンクのベクトルレジスタをアクセス
し得るロード/記憶命令及びレジスタ移動命令を除いた
全てのベクトル命令はデフォルトであって、現在バンク
内のレジスタを使用する。ベクトル制御及び状態レジス
タVCSRのCBANKビットはバンク0或いはバンク
1を現在バンクとして設定するのに用いられる(他のバ
ンクは交替バンクになる)。現在バンク内のベクトルレ
ジスタはVR0乃至VR31とし、交替バンク内のベク
トルレジスタはVRA0乃至VRA31とする。
【0153】また、2つのバンクは概念的には576ビ
ットそれぞれのダブルサイズの32個のベクトルレジス
タを提供し得るように結合することができる。制御レジ
スタVCSRのVEC64ビットはこのモードを示す。
VEC64モードには現在バンク及び交替バンクが存在
せず、ベクトルレジスタ番号は2つのバンクからの対応
する対の288ベクトルビットベクトルを示す。即ち、 VRi(575:0)=VR1i(287:0):VR
0i(287:0) ここで、VR0i及びVR1iはそれぞれバンク1及び
バンク0でレジスタ番号VRiをもっているベクトルレ
ジスタを示す。ダブルサイズベクトルレジスタはVR0
乃至VR31と表記されている。
【0154】ベクトルレジスタは表22に示したバイ
ト、バイト9、ハフワード或いはワードサイズの多数の
エレメントを収容することができる。
【0155】
【表36】
【0156】一つのベクトルレジスタ内のエレメントサ
イズ間の混合は支援されない。バイト9エレメントサイ
ズを除いては288ビットのうち256ビットにのみが
用いられる。特に、全ての第9ビットは用いられない。
バイト、ハフワード及びワードサイズのうち用いられな
い32ビットは予約されており、プログラマはこれらの
値に対してどのの仮定もできない。ベクトルアキュムレ
ータレジスタは目的レジスタの結果より高い正確度をも
っている中間結果を記憶装置に提供する。ベクトルアキ
ュムレータレジスタは4つの288ビットレジスタ、即
ちVAC1H,VAC1L,VAC0H,VAC0Lか
ら構成されている。VAC0H,VAC0L対はデフォ
ルトによって3つの命令によって用いられる。VEC6
4モードでのみ、VAC1H,VAC1L対が64種類
のバイト9ベクトル演算を模倣するのに用いられる。ソ
ースベクトルレジスタと同じ個数のエレメントをもって
いる拡張された正確度の結果を生成するために、拡張精
密度エレメントは表23に示すように一対のレジスタに
わたって節減される。
【0157】
【表37】
【0158】VAC1H,VAC1L対はVEC64モ
ードでのみ用いられることができ、この時エレメントの
個数はバイト9(及びバイト)、ハフワード、及びワー
ドの場合にそれぞれ64,32,或いは16になること
ができる。
【0159】メモリから直接ロードされ得るか、或いは
メモリに直接貯蔵されうる33つの特殊レジスタがあ
る。RASR0乃至RASR15とする16つの特殊レ
ジスタは内部復帰アドレススタックを形成しており、そ
してサブルーチン呼出命令及びサブルーチン復帰命令に
よって用いられる。17個以上の32ビット特殊レジス
タが表24に示されている。
【0160】
【表38】
【0161】ベクトル制御及び状態レジスタ(VCS
R)に関する定義は表25に示されている。
【0162】
【表39】
【0163】
【表40】
【0164】
【表41】
【0165】ベクトルプログラムカウンタレジスタVP
Cはベクトルプロセッサ120によって行われる次の命
令のアドレスである。ARM7プロセッサ110はベク
トルプロセッサ120の演算を開始させるためにSTA
RTVP命令を発生する前にレジスタVPCをロードし
なければならない。
【0166】ベクトル例外プログラムカウンタVEPC
は一番最近の例外を一番生じさせるような命令のアドレ
スを指定する。MSP100は正確な例外を支援せず、
よって“一番生じさせるような”という用語を使用す
る。
【0167】ベクトルインタラプト供給レジスタVIS
RCはインタラプト供給源をARM7プロセッサ110
に特定する。適切なビットは例外の検出時にハードウェ
アによって設定される。ソフトウェアはベクトルプロセ
ッサ120が遂行を再開する前にレジスタVISRCを
クリアさせなければならない。レジスタVISRCで設
定されたあるビットによってベクトルプロセッサ120
は状態VP_IDLEに入る。対応するインタラプトイ
ネーブルビットがVIMSKに設定されると、プロセッ
サ110に対するインタラプトが信号伝送される。表2
6にはレジスタVISRCの内容が定義されている。
【0168】
【表42】
【0169】ベクトルインタラプト命令レジスタVII
NSはVCINT命令或いはVCJOIN命令がARM
7プロセッサ100をインタラプトするために行われる
と、VCINT命令或いはVCJOIN命令に更新され
る。
【0170】ベクトルカウントレジスタVCR1,VC
R2,VCR3は減少及びブランチ命令VD1CBR,
VD2CBR,VD3CBRのためのものであり、行わ
れるループのカウントに初期化される。命令VD1CB
Rが行われると、レジスタVCR1は1だけデクレメン
ト(decrement)される。カウント値がゼロでなく前記命
令に特定された条件がVFLAGと一致すると、ブラン
チが取られる。一致しなければ、ブランチは取られな
い。レジスタVCR1は2つの場合において1だけデク
レメントされる。レジスタVCR2,VCR3も同一方
法で用いられる。
【0171】ベクトルグローバルマスクレジスタVGM
R0は、VEC6モードで影響を受けるVR(575:
288)内のエレメントとVEC64モードにおけるV
R(287:0)内のエレメントを指示するのに用いら
れる。レジスタVGMR0のそれぞれのビットはベクト
ル目的レジスタの9ビットの更新を制御する。具体的
に、VGMR0(i)は、VEC32モードではVRd
(9i+8:9i)の更新を、そしてVEC64モード
ではVR0d(9i+8:9i)の更新を制御する。V
R0dはVEC64モードでバンク0の目的レジスタを
示し。VRdはVEC32モードでバンク0或いはバン
ク1になれる現在バンクの目的レジスタを意味する。ベ
クトルグローバルマスクレジスタVGMR0はVCMO
VM命令を除いた全ての命令の遂行に用いられる。
【0172】ベクトルグローバルマスクレジスタVGM
R1はVEC64モードで影響を受けるVR(575:
288)内のエレメントを指示するのに用いられる。レ
ジスタVGMR1のそれぞれのビットはバンク1のベク
トル目的レジスタの9ビットの更新を制御する。具体的
に、VGMR(i)はVR1d(9i+8:9i)の更
新を制御する。レジスタVGRM1はVEC32モード
では使用されないが、VEC64ではVCMOVM命令
を除いた全ての命令の遂行に影響を及ぼす。
【0173】ベクトルオーバフローレジスタVOR0は
ベクトル算術演算後にオーバフロー結果を含んでいるV
EC64モードでVR(287:0)内のエレメントを
指示するのに用いられる。このレジスタはスカラ算術演
算に修正されない。セットされたビットVOR1(i)
はバイトまたはバイト9の第iエレメント、ハフワード
の第(iidiv2)エレメント、或いはワードデータ
形演算の第(iidiv4)エレメントがオーバフロー
の結果を含んでいることを指示する。例えば、ビット1
とビット3は第1ハフワード及びワードエレメントのオ
ーバフローをそれぞれ指示するように設定される。VO
R0のビットのマッピングはVGMR0或いはVGMR
1のビットのマッピングとは異なる。
【0174】ベクトルオーバフローレジスタVOR1は
ベクトル算術演算後にオーバフローの結果を含んでいる
VEC64モードでVR(575:288)内のエレメ
ントを指示するのに用いられる。レジスタVOR1はV
EC32モードで使用されず、且つスカラ算術演算によ
って修正もされない。セットされたビットVOR1
(i)はバイトまたはバイト9の第iエレメント、ハフ
ワードの第1(iidiv2)エレメント、或いはワー
ドデータ形演算の第(iidiv4)エレメントがオー
バフローの結果を含んでいることを指示する。例えば、
ビット1とビット3はそれぞれVR(575:288)
で第1ハフワードとワードエレメントのオーバフローを
指示し得るようにセットされる。VOR1のビットマッ
ピングはVGMR0或いはVGMR1のビットマッピン
グとは異なる。
【0175】ベクトル命令アドレス区切り点レジスタV
IABRはベクトルプログラムデバッグ(debugging)時
にこれを支援する。このレジスタ定義は表27に示され
ている。
【0176】
【表43】
【0177】ベクトルデータアドレス区切り点レジスタ
VDABRはベクトルプログラムのデバッグ(debuggin
g)時にこれを支援する。表28にレジスタ定義が示さ
れている。
【0178】
【表44】
【0179】ベクトル移動マスクレジスタVMMR0は
モード命令に対してVCSR(SMM)=1の時のみな
らず、常にVCMOVMによって用いられる。レジスタ
VMMR0はVEC32モードで影響を受ける目的レジ
スタのエレメント、及びVEC64モードでVR(28
7:0)内のエレメントを指示する。VMMR0のそれ
ぞれのビットはベクトル目的レジスタの9ビットの更新
を制御する。具体的に、VMMR0(i)はVEC32
モードでVRd(9i+8:9i)の更新及びVEC6
4モードでVR0d(9i+8:9i)の更新を制御す
る。VR0dはVEC64モードでバンク0の目的レジ
スタを示し、このVRdはVEC32モードでバンク0
或いはバンク1になれる現在バンクの目的レジスタを意
味する。
【0180】ベクトル移動マスクレジスタVMMR1は
全ての命令に対してVCSR(SMM)=1の時のみな
らず、常にVCMOVMによって用いられる。レジスタ
VMMR1はVEC32モードで影響を受けるVR(5
75:288)内のエレメントを指示する。VMMR1
のそれぞれのビットはバンク1のベクトル目的レジスタ
の9ビットに対する更新を制御する。具体的に、VGM
R01(i)はVRd(9i+8:9i)の更新を制御
する。レジスタVGMR1はVEC32モードで用いら
れない。
【0181】ベクトル及びARM7同期レジスタVAS
YNCはプロセッサ110とプロセッサ120との間に
生産者/消費者形態の同期を提供する。現在、ビット3
0のみが定義されている。ARM7プロセッサは命令
(MFER,MTER,TESTSET)を使用してレ
ジスタVASYNCをアクセスすることができ、ベクト
ルプロセッサ120は状態VP_RUN或いは状態VP
_IDLEにある。レジスタVASYNCはTVP或い
はMFVP命令を通じてARM7プロセッサにアクセス
できないが、これはこれら命令が第1の16ベクトルプ
ロセッサの特殊レジスタに対してアクセスし得ないため
である。ベクトルプロセッサはVMOV命令を通じてレ
ジスタVASYNCをアクセスすることができる。
【0182】表29はパワーオンリセット時の前記ベク
トルプロセッサの状態を示す。
【0183】
【表45】
【0184】前記特殊レジスタは前記ベクトルプロセッ
サが命令を行える前に、ARM7プロセッサ110によ
って初期化される。
【0185】〔別添D〕各命令はソースと目的オベラン
ドのデータタイプを意味するか或いは指定する。いくつ
かの命令はソースに対して一つのデータタイプを取り、
結果に対して相違したデータタイプを生成する意味をも
つ。この別添は好ましい実施例で指示されるデータタイ
プを説明する。この出願の表30では支持されるデータ
タイプint8,int9,int16,int32,
及びフロート(float)について説明した。符号の無い整
数フォーマット(unsigned integer format)は支持され
ず、そしてそれの符号の無い整数値はまず使用前に2の
補数フォーマットに変換されるべきである。プログラマ
はオーバフローを適切に処理する限り、その選択による
ある他のフォーマット或いは符号の無い整数フォーマッ
トをもつ算術命令を自由に使用することができる。アー
キテクチャは単に2の補数整数のオーバフロー及び32
ビット浮動小数点データタイプを定義する。アーキテク
チャは符号なしオーバフローの検出に必要な8,9,1
6,或いは32ビット演算のキャリアウトを検出しな
い。
【0186】表30はロード(load)演算によって支持さ
れるデータサイズを示す。
【0187】
【表46】
【0188】アーキテクチャはデータタイプ境界に存在
するようにメモリアドレス整列を指定する。即ち、バイ
トに対しては何の整列要求事項もない。ハフワードに対
する整列要求事項はハフワード境界である。ワードに対
する整列要求事項はワード境界である。
【0189】表31はストア(store)演算によって支持
されるデータサイズを示す。
【0190】
【表47】
【0191】1以上のダム(dam)タイプはスカラ或いは
ベクトルでレジスタにマッピングされているために、若
干のデータタイプに対して何の定義もされていない結果
をもつ目的レジスタにビットが存在することができる。
実際に、ベクトル目的レジスタに対するバイト9データ
サイズ演算とスカラ目的レジスタに対するワードデータ
サイズ演算以外にも目的レジスタでその値が演算によっ
て定義されていないビットが存在する。これらビットの
ために、アーキテクチャはそれらの値が未定の状態にな
るように指定する。表32は各データサイズに対して定
義されていないビットを示す。
【0192】
【表48】
【0193】プログラマはプログラミング時にソース及
び目的レジスタ或いはメモリのデータタイプを知ってい
なければならない。一つのエレメントサイズから他のエ
レメントサイズへのデータタイプ変換は暫定的にベクト
ルレジスタに相違した数のエレメントが記憶されるよう
にする。例えば、ハフワードのワードデータタイプへの
ベクトルレジスタ変換は同一数の変換されたエレメント
を記憶するのに2つのレジスタを必要とする。逆に、ベ
クトルレジスタで使用者定義されたフォーマットが持て
るワードデータタイプからハフワードフォーマットへの
変換はベクトルレジスタの1/2に同一数のエレメント
と、他の1/2に残りのビットを生成する。いずれか一
つの場合に、データタイプの変換はソースエレメントと
相違したサイズをもつ変換されたエレメントの整列をも
つ構造的な発行(issue)を生成する。
【0194】原則的に、MSPアーキテクチャは結果と
してエレメントの数を密かに変更する演算を提供しな
い。アーキテクチャはプログラマが目的レジスタでエレ
メントの数を変更させる順序を知っていると判断する。
アーキテクチャは只一つのデータタイプから同一サイズ
の他のデータタイプに変換する演算を提供し、一つのデ
ータタイプから異なるサイズの他のデータタイプに変換
する時、プログラマがデータサイズの差異を調整するこ
とを要求する。
【0195】別添Eに説明されるVSHFLL及びVU
NSHFLLのような特殊命令は第1サイズをもつベク
トルから第2データサイズをもつ第2ベクトルへの変換
を単純にする。ベクトルVRa、例えばさらに小さいエ
レメントサイズのint8から、例えばさらに大きいサ
イズのint16へ2の補数データタイプを変換するの
に含まれた基本段階は次のようである。
【0196】1.異なるベクトルVRbをもつVRaに
あるエレメントをバイトデータタイプを使用して2ベク
トル(VRc:VRd)に分割する(shuffle)。VRa
にあるエレメントはダブルサイズレジスタ(VRc:V
Rd)にあるint16データエレメントの下位バイト
に移動させ、その値と関係の無いVRbのエレメントは
VRc:VRdの上位バイトに移動させる。この演算は
各エレメントのサイズをバイトからハフワードにダブル
化される間、VRaエレメントの1/2をVRcに、残
りの1/2をVRdに効果的に移動させる。
【0197】2.8ビットでVRc:VRdにあるエレ
メントを算術シフトさせてそれらをサイン拡張させる。
【0198】ベクトルVRa、例えばさらに大きいエレ
メントサイズのint16から、例えばさらに小さいサ
イズのint8に2の補数データタイプを変換するのに
含まれた基本段階は次のようである。
【0199】1.int16データタイプの各エレメン
トがバイトサイズで表現され得るかを保障するためにチ
ェックする。もし必要なら、さらに小さいサイズに合わ
せるために両端のエレメントを飽和(saturate)させる。
【0200】2.異なるベクトルVRbをもつVRaに
あるエレメントを2ベクトルVRc:VRdに結合させ
る(unshuffle)。VRaとVRbにある各エレメントの
上位1/2をVRcに移動させ、下位1/2をVRdに
移動させる。これはVRaの全てのエレメントの下位1
/2をVRdの下位1/2に効果的に集める。
【0201】特殊な命令は次のデータタイプ変換に提供
される:int32を単一精密浮動小数点に;単一精密
浮動小数点を固定小数点に(X.Y注解);単一精密浮
動小数点をint32に;int8をInt9に;in
t9をint16に;及びint16をint9に。
【0202】ベクトルプログラミングに余裕度を与える
ために大部分のベクトル命令はベクトル内から選択され
たエレメントに対してのみ演算を行うようにエレメント
マスクを使用する。ベクトルグローバルマスクレジスタ
(Vector Global Mask Register:VGMR0,VGMR
1)はベクトル命令によってベクトルアキュムレータと
目的レジスタで修正されるエレメントを識別する。バイ
ト及びバイト9データサイズ演算のためにVGMR0
(或いはVGMR1)で32ビットそれぞれは演算され
るエレメントを識別する。セット状態のビット(VGM
R0(i)はバイトサイズのエレメント(i,ここでi
は0から31まで)が影響を受けることを指示する。ハ
フワードデータサイズ演算のためにVGMR0(或いは
VGMR1)で各32ビット対は演算されるエレメント
を識別する。セット状態のビットVGMR0(2i:2
i+1)はエレメント(i,ここでiは0から15ま
で)が影響を受けることを指示する。もしVGMR0で
一対のうち只1つのビットがハフワードデータサイズ演
算のためにセットされた場合、対応するバイトで只その
ビットのみが修正される。ワードデータサイズ演算のた
めにVGMR0(或いはVGMR1)で各4ビットセッ
トは演算されるエレメントを識別する。セット状態のビ
ットVGMR0(4i:4i+3)はエレメント(i,
ここでiは0から7まで)が影響を受けることを指示す
る。もしVGMR0で4ビットセットの全てのビットが
ワードデータサイズ演算のためにセットされない場合、
対応するバイトで単にそのビットのみが修正される。
【0203】VGMR0及びVGMR1はベクトルレジ
スタをベクトル或いはスカラレジスタ或いはVCMPV
命令を使用した即値と比較することによりセットされる
ことができる。この命令は特定されたビットサイズによ
ってマスクを適切にセットする。スカラレジスタは只一
つのデータエレメントを含むように定義されるので、ス
カラ演算(即ち、目的レジスタがスカラである)はエレ
メントマスクによって影響を受けない。
【0204】ベクトルプログラミングに余裕度を与える
ために、大部分のMSP命令は3形態のベクトルとスカ
ラ演算を支援する。それらは次のようである: 1.ベクトル=ベクトルopベクトル 2.ベクトル=ベクトルopスカラ 3.スカラ=スカラopスカラ スカラレジスタがBオペランドとして特定されているケ
ース2の場合、スカラレジスタで単一エレメントはベク
トルAオベランド内に多数のエレメントをマッチングさ
せるのに要求されるだけ多く複製される。複製されたエ
レメントは特定されたスカラオペランドでエレメントを
同じ値をもつ。スカラオペランドはスカラレジスタ或い
は命令から即値オペランド(immedoate operand)の形態
になることができる。即値オベランドの場合にもし特定
されたデータタイプが即値フィールドサイズの有用なも
のよりさらに大きいデータサイズを使用する場合、適当
なサイン−拡張が加えられる。
【0205】多くのマルチメディア応用ではソース、中
間及び最終結果の精密性に特別な注意が要求される。し
かも、整数マルチプライ(integer multiply)命令は2ベ
クトルレジスタに記憶され得る“2倍精密”中間結果を
生成する。
【0206】MSPアーキテクチャは現在8,9,1
6,及び32ビットエレメントに対して2の補数整数フ
ォーマットと32ビットエレメントに対してIEEE7
54単一精密フォーマットを支援する。オーバフローは
特定されたデータタイプによって表現され得る一番ポジ
ティブ或いは一番ネガティブ値以上の結果となるように
定義される。オーバフローが発生する時、目的レジスタ
に記録された値は有効番号でない。アンダーフローは単
に浮動小数点演算についてのみ定義される。
【0207】もし、その他の状態でなければ、全ての浮
動小数点演算はビット(VCSR<RMODE)で特定
された4つのラウンディングモードのうち一つを使用す
る。若干の命令はゼロ(ラウンドイブン)ラウンディン
グモードからラウンドアウェイ(round away)として知ら
れたものを使用する。
【0208】飽和(Saturation)は多くのマルチメディア
応用で重要な機能である。MSPアーキテクチャは全て
の4整数及び浮動小数点演算で飽和を支援する。レジス
タVCSRでビットISATは整数飽和モードを特定す
る。また、速いIEEEモードと周知された浮動小数点
飽和モードはVCSRでFSATビットに特定される。
飽和モードがイネーブルされる時、一番ポジティブ或い
は一番ネガティブ値以上になる結果はそれぞれ一番ポジ
ティブ或いは一番ネガティブ値にセットされる。オーバ
フローはこの場合に発生することができなく、オーバフ
ロービットはセットされることができない。
【0209】表33は欠陥のある命令を実行する前に検
出されて報告される精密な例外(Precise Exception)に
対するリストを示す。
【0210】
【表49】
【0211】表34は欠陥のある命令よりプログラム順
序において後の方に存在するある番号の命令を実行した
後、検出されて報告される不精密な例外(Imprecise Exc
eption)に対するリストを示す。
【0212】
【表50】
【0213】〔別添E〕ベクトルプロセッサに対する命
令セットは表35に示すように11個の分類を含む。
【0214】
【表51】
【0215】
【表52】
【0216】表36はフローコントロール(Flow Contro
l)命令に対するリストを示す。
【0217】
【表53】
【0218】論理(Logical)分類はブール(Boolean)デ
ータタイプを支援し、エレメントマスクによって影響を
受ける。表37は論理(logic)命令リストである。
【0219】
【表54】
【0220】シフト/ローテート(Shift/Rotate)分類命
令はint8,int9,int16及びint32デ
ータタイプ(フロートデータタイプでない)を演算し、
エレメントマスクによって影響を受ける。表38はシフ
ト/ローテート分類命令リストである。
【0221】
【表55】
【0222】算術(Arithmetic)分類命令は一般にint
8,int9,int16,int32,及びフローデ
ータタイプを支援し、エレメントマスクによって影響を
受ける。支援されないデータタイプに対する特別な制限
に対しては次の各命令の詳細な説明を参照されたい。V
CMPV命令はそれがエレメントマスクを演算するの
で、エレメントマスクによって影響を受けない。表39
は算術演算命令リストである。
【0223】
【表56】
【0224】MPEG命令はMPEG符号化及び復号化
に特に適した命令分類であるが、多様な方式で用いられ
ることができる。MPEG命令はint8,int9,
int16及びint32データタイプを支援し、エレ
メントマスクによって影響を受ける。表40はMPEG
命令リストである。
【0225】
【表57】
【0226】各データタイプ変換(Data Type Conversio
n)命令は特殊なデータタイプを支援し、アーキテクチャ
がレジスタで1以上のデータタイプを支援しないため
に、エレメントマスクによって影響を受けない。表41
はデータタイプ変換命令リストである。
【0227】
【表58】
【0228】インタ−エレメント算術(Inter-element
Arithmetic)分類命令はint8,int9,int1
6,int32及びフローデータタイプを支援する。表
42はインタエレメント算術分類命令リストである。
【0229】
【表59】
【0230】インタエレメントムーブ(Inter-element M
ove)分類命令はバイト、バイト9、ハフワード及びワー
ドデータサイズを支援する。表43はインタエレメント
ムーブ分類命令リストである。
【0231】
【表60】
【0232】ロード/ストア(Load/Store)命令はバイ
ト、ハフワード、及びワードデータサイズに加えて特殊
なバイト9に関連したデータサイズ演算を支援し、エレ
メントマスクによって影響を受けない。表44はロード
/ストア分類命令リストである。
【0233】
【表61】
【0234】大部分のレジスタムーブ(Register Move)
命令はint8,int9,int16,int32及
びフローデータタイプを支援し、エレメントマスクによ
って影響を受けない。但し、VCMOVM命令はエレメ
ントマスクによって影響を受ける。表45はレジスタム
ーブ分類の命令リストである。
【0235】
【表62】
【0236】表46はキャッシュサブシステム130を
制御するキャッシュ演算(Cache Operation)分類の命令
リストである。
【0237】
【表63】
【0238】命令説明命名法 命令セットの説明を単純化するために、別添全体にわた
って特殊な用語が用いられる。例えば、命令オペランド
は他の注釈がない場合、バイト、バイト9、ハフワード
或いはワードサイズの符号付きた2の補数整数である。
単語“レジスタ”は汎用(スカラ或いはベクトル)レジ
スタを指称するのに用いられる。他のタイプのレジスタ
は明らかに説明される。アセンブリ言語構文(syntax)に
おいて、接尾語b,b9,h及びwはデータサイズ(バ
イト、バイト9、ハフワード、及びワード)と整数デー
タタイプ(int8,int9,int16,及びin
t32)の全てを示す。また、命令オペランド、演算、
及びアセンブリ言語構文類の説明に用いられた用語と記
号は次の通りである。
【0239】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によっ
てアドレスされる。
【0240】WORD〔WA〕 EAによってアドレ
スされるメモリのワード。ビット(31:24)がEA
+3によってアドレスされる。
【0241】NumElem 与えられたデータタイ
プに対するエレメントの数を示す。それはVEC32モ
ードでそれぞれバイト、バイト9、ハフワード、或いは
ワードデータサイズに対して32,16,或いは8であ
る。それはVEC64モードでそれぞれバイト、バイト
9、ハフワード、或いはワードデータサイズに対して6
4,32,或いは16である。スカラ演算の場合、Nu
mElemは0である。
【0242】EMASK〔i〕 i番目のエレメント
に対するエレメントマスクを示す。それはそれぞれバイ
ト、バイト9、ハフワード、或いはワードデータサイズ
に対してVGMR0/1,〜VGMR0/1,VGMR
0/1,或いは〜VGMR0/1で1,2,或いは4ビ
ットを示す。スカラ演算の場合、EMASK〔i〕=0
であってもエレメントマスクはセットされたと推定す
る。
【0243】MMASK〔i〕 i番目のエレメント
に対するエレメントマスクを示す。それはそれぞれバイ
ト、バイト9、ハフワード、或いはワードデータサイズ
に対してVMMR0、或いはVMMR1で1,2,或い
は4ビットを示す。
【0244】VCSR ベクトルコントロール
及び状態レジスタ VCSR(x) VCSRで1つのビット或いは複数
のビットを示す。“x”はフィールド名である。
【0245】VPC ベクトルプロセッサプ
ログラムカウンタ VECSIZE ベクトルレジスタサイズはVEC3
2で32、VEC64モードで64である。
【0246】SPAD スクラッチパッド Cプログラミング構成物は演算のコントロールフローを
説明するのに用いられる。例外は次のように要約され
る。
【0247】 = 代入(assignment) : 接合(consatenation) {x‖y} xとyの間の選択を指示する(論理orではない) sex 特定データサイズに符号−拡張する sex−dp 特定データサイズの2倍精密度で符号−拡張 zex 特定データサイズにゼロ−拡張する zero ゼロ−拡張された(論理)右に移動 左に移動する(ゼロ充てん) trnc7 先行7ビット(ハフワードから)を打ち切る trac1 先行1ビット(バイト9から)を打ち切る % モジュロ演算者 |式| 式の絶対値 / 分割(フロートデータタイプに対して4IEEEラウンディン グモードのうち一つを使用する) // 分割(ゼロラウンディングモードからラウンドアウェイ(round away)を使用する) 飽和 整数データタイプに対してオーバフロー発生の代わりに一番陰 或いは一番陽の値に飽和する。フロートデータタイプに対して 、飽和は陽の無限大、陽のゼロ、陰のゼロ、或いは陰の無限大 に行われることができる。
【0248】一般的な命令フォーマットは図12に表示
されており、下記に説明される。
【0249】REARフォーマットはロード、ストア及
びキャッシュ演算命令によって用いられ、REARフォ
ーマットでフィールドは表47に与えられたように次の
意味をもつ。
【0250】
【表64】
【0251】ビット17:15は予約(Reserved)され、
アーキテクチャで未来の拡張時に交換性を保障するため
にゼロになるべきである。B:DとTTフィールドのあ
る符号化は定義されない。
【0252】プログラマはアーキテクチャがこのような
符号化が用いられる時に予想された結果を指定しないた
めに、前記のような符号化を使用してはいけない。表4
8はVEC32とVEC64モードで支援された(LT
としてTTフィールドで符号化された)スカラロード演
算を示す。
【0253】
【表65】
【0254】表49はビットVCSR(0)がクリアの
時のVEC30モードで支援された(LTとしてTTフ
ィールドで符号化された)ベクトルロード演算を示す。
【0255】
【表66】
【0256】Bビットは現在或いは交替バンクの指示に
用いられる。
【0257】表50はビットVCSR(0)がクリアの
時のVEC64モードで支援された(LTとしてTTフ
ィールドで符号化された)ベクトルロード演算を示す。
【0258】
【表67】
【0259】現在及び交替バンクの概念がVEC64モ
ードでは存在しないので、ビットBは64バイトベクト
ル演算の指示に用いられる。
【0260】表51はVEC32及びVEC64モード
で支援された(LTとしてTTフィールドで符号化され
た)スカラストア演算リストである。
【0261】
【表68】
【0262】表52はビットVCSR(0)がクリアの
時のVEC32モードで支援された(LTとしてフィー
ルドTTで符号化された)ベクトルストア演算リストで
ある。
【0263】
【表69】
【0264】表53はビットVCSR(0)がセットで
ある時のVEC64モードで支援された(LTとしてT
Tフィールドで符号化された)ベクトルストア演算リス
トである。
【0265】
【表70】
【0266】現在及び交替バンクの概念がVEC64モ
ードでは存在しないので、ビットBは64バイトベクト
ル演算の指示に用いられる。
【0267】REAIフォーマットはロード、ストア及
びキャッシュ演算命令によって用いられ、REAIフォ
ーマットでフィールドは表54に与えられたように次の
意味をもつ。
【0268】
【表71】
【0269】REAR及びREAIフォーマットはトラ
ンスファタイプに対して同一の符号化を適用する。符号
化に対する詳しいことはREARフォーマットを参考さ
れたい。
【0270】RRRM5フォーマットは3レジスタ或い
は2レジスタ及び5ビット即値オペランドを提供する。
表55はRRRM5フォーマットに対するフィールドを
定義する。
【0271】
【表72】
【0272】ビットは19:15は予約(RESERVED)さ
れ、アーキテクチャで未来の拡張時に互換性を保障する
ためにゼロになるべきである。
【0273】全てのベクトルレジスタオペランドは他の
状態がない限り、現在バンク(バンク0或いはバンク1
になることができる)を参照する。表56はDC(1:
0)が00,01,或いは10の時、D:S:M符号化
表である。
【0274】
【表73】
【0275】DS(1:0)が11の場合、D:S:M
符号化は次の表57に示す意味をもつ。
【0276】
【表74】
【0277】RRRRフォーマットは4レジスタのオペ
ランドを提供する。
【0278】表58はRRRRフォーマットでフィール
ドを示す。
【0279】
【表75】
【0280】全てのベクトルレジスタオペランドは他の
状態がない限り、現在バンク(バンク0またはバンク1
になることができる)を言及する。
【0281】R1フォーマットは単にロード即値命令に
よって使用される。表59はRIフォーマットでフィー
ルドを示す。
【0282】
【表76】
【0283】F:DS(1:0)フィールドのある符号
化は定義されない。プログラマはこのような符号化が用
いられる時アーキテクチャが予想されたけっかを指定し
ないので、前記のような符号化を使用してはいけない。
Rdにロードされた値は表60に示すようにデータタイ
プによる。
【0284】
【表77】
【0285】CTフォーマットは表61に示すフィール
ドを含む。
【0286】
【表78】
【0287】ブランチ条件はVCSR[GT:EQ:L
T]フィールドを使用する。
【0288】オーバフロー条件はVCSR[S0]ビッ
トを使用し、これはセット状態の時、GT,EQ,及び
LTビットを先行する。VCCSとVCBARRは前述
と異なってCond(2:0)フィールドを解釈する。
詳細な命令説明を参考されたい。
【0289】RRRM9フォーマットは3レジスタ或い
は2レジスタ及び9ビット即値オペランドを指定する。
表62はRRRM9フォーマットのフィールドをを示
す。
【0290】
【表79】
【0291】D:S:M符号化が即値オペランドを指定
しない時、ビット19:15は予約され、未来の互換性
を保障するためにゼロになるべきである。
【0292】全てのベクトルレジスタオペランドは他の
状態にない限り、現在(バンク0或いはバンク1になす
ることができる)ことるを参照する。D:S:M符号化
は即値フィールドから抽出された即値が表63に示すよ
うにDS(1:0)符号化によって左右されることを除
いてはRRRM5フォーマットに対する表56及び57
に示されたことと同一である。
【0293】
【表80】
【0294】即値フォーマットはフロートデータタイプ
では有用でない。
【0295】MSPベクトル命令が次のアルファベット
順で示されている。注釈: 1.命令は他の状態が存在しない限り、エレメントマス
クによって影響を受ける。CTフォーマット命令はエレ
メントマスクによって影響を受けない。ロード,スト
ア,及びキャッシュ命令からなるREARとREAIフ
ォーマット命令もエレメントマスクによって影響を受け
ない。
【0296】2.9ビット即値オペランドはフロートデ
ータタイプには有用でない。
【0297】3.演算(operation)説明で単にベクトル
形式(form)のみ与えられる。スカラ演算の場合はただ一
つ、0番目のエレメントが定義されたと仮定する。
【0298】4.RRRM5とRRRM9フォーマット
の場合、次の表64に示す符号化が整数データタイプ
(b,b9,h,w)に対して使用される。
【0299】
【表81】
【0300】5.RRRM5とRRRM9フォーマット
の場合、次の表65に示した符号化がフロートデータタ
イプに用いられる。
【0301】
【表82】
【0302】6.オーバフローを引き起こす虞のある全
ての命令に対してint8,int9,int6,in
t32最大値或いは最小値の制限値はVCSR(ISA
T)ビットがセットされた時に適用される。従って、浮
動小数点結果はVCSR(ISAT)ビットがセットさ
れた時に−無限大,−ゼロ,+ゼロ,或いは+無限大に
飽和される。
【0303】7.構文的に.nはバイト9データサイズ
を示すために、.b9の代わりに用いられることができ
る。
【0304】8.全ての命令に対して目的レジスタ或い
はベクトルアキュムレータに帰還する浮動小数点結果は
IEEE754単精度フォーマットからなる。浮動小数
点結果はアキュムレータの下位部分に記録され、上位部
分は修正されない。
【0305】VAAS3 加算及び(1,0,1)の加算
【0306】
【表83】
【0307】アセンブラ構文 VAAS3.dt VRd,VRa,VRb VAAS3.dt VRd,VRa,SRb VAAS3.dt SRd,SRa,SRb ここで、dt={b,b9,h,w}
【0308】
【表84】
【0309】説明 ベクトル/スカラレジスタRaの内容はRbに加算され
て中間結果を発生し、その後中間結果にRaの符号が加
算されて得られた最終結果はベクトル/スカラレジスタ
Rdに記憶される。
【0310】演算 例外 オーバフローVADAC 加算及びアキュムレート
【0311】
【表85】
【0312】アセンブラ構文 VADAC.dt VRc,VRd,VRa,VRb VADAC.dt SRc,SRd,SRa,SRb ここで、dt={b,b9,h,w}。
【0313】
【表86】
【0314】説明 RaとRbはオペランドのそれぞれのエレメントをベク
トルアキュムレータのそれぞれの倍精度エレメントに加
算し、各エレメントの倍精度の和をベクトルアキュムレ
ータと目的レジスタRc,Rdに記憶させる。RaとR
bは指定されたデータタイプを使用するが、VACは適
当な倍精度データタイプ(それぞれint8,int
9,int16,及びint32に対して16,18,
32,及び64ビット)を使用する。それぞれの倍精度
エレメントの上位部分はVACHとRcに記憶される。
もしRc=Rdであれば、Rcの結果は定義されない。
【0315】 演算 for(i = 0;i < NumElem && EMASK[i];i++){ Aop[i] ={VRa[i]‖ SRa}; Bop[i] ={VRb[i]‖ SRb}; VACH[i]:VACL[i] = sex(Aop[i] + Bop[i] + VACH[i]:VACL[i]; Rc[i] = VACH[i] ; Rd[i] = VACL[i] ; }VADACL 加算及びローアキュムレート
【0316】
【表87】
【0317】アセンブラ構文 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}。
【0318】
【表88】
【0319】説明 RaとRb/即値オペランドのそれぞれのエレメントを
ベクトルアキュムレータのそれぞれの拡張された精密度
エレメントに加算し、低い精密度を目的レジスタ(R
d)にリターンさせる。RaとRb/即値は指定された
データタイプを使用するが、VACは適当な倍精度デー
タタイプ(それぞれint8,int9,int16,
及びint32に対して16、18,32,及び64ビ
ット)を使用する。それぞれの拡張された精密度エレメ
ントの上位部分はVACHに記憶される。
【0320】 演算 for(i = 0;i < NumElem && EMASK[i];i++){ Bop[i] ={VRb[i]‖ SRb‖ sex(IMM<8:0>)}; VACH[i]:VACL[i] = sex(Ra[i] + Bop[i] + VACH[i]:VACL[i]; Rd[i] = VACL[i] ; }VADD 加算
【0321】
【表89】
【0322】アセンブラ構文 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}。
【0323】
【表90】
【0324】説明 RaとRb/即値オペランドを加算し、その和を目的レ
ジスタRdにリターンさせる。
【0325】 演算 for(i = 0;i < NumElem && EMASK[i];i++){ Bop[i] ={VRb[i]‖ SRb‖ sex(IMM<8:0>)}; Rd[i] = Ra[i] + Bop[i] ; } 例外 オーバフロー,浮動小数点無効オペランドVADDH その隣接セルエレメント加算
【0326】
【表91】
【0327】アセンブラ構文 VADDH.dt VRd,VRa,VRb VADDH.dt VRd,VRa,SRb ここで、dt={b,b9,h,w}。
【0328】
【表92】
【0329】
【表93】
【0330】 演算 for(i = 0;i < NumElem - 1 ; i++) { Rd[i] = Ra[i] + Ra[i+1] ; } Rd[NumElem-1] = Ra[NumElem-1]+{VPb[0]‖SRb }; 例外 オーバフロー、浮動小数点無効オペランド プログラミング注意 この命令はエレメントマスクによって影響を受けない。
【0331】VAND AND
【0332】
【表94】
【0333】アセンブラ構文 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が同
一演算を指定することに留意されたい。
【0334】
【表95】
【0335】説明 RaとRb/即値オペランドを論理的にANDし、その
結果を目的レジスタRdにリターンさせる。
【0336】 演算 for(i = 0;i < NumElem && EMASK[i];i++){ Bop[i] ={VRb[i]‖ SRb‖ sex(IMM<8:0>)}; Rd[i]<k> = Ra[i]<k> & Bop[i]<k> , k = for all bits in element i ; } 例外 無しVANDC 補数AND
【0337】
【表96】
【0338】アセンブラ構文 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が同
一の演算を指定することに留意されたい。
【0339】
【表97】
【0340】説明 Ra及びRb/即値オペランドの補数を論理的にADN
し、その結果を目的レジスタRdにリターンさせる。
【0341】 演算 for(i = 0;i < NumElem && EMASK[i];i++){ Bop[i] ={VRb[i]‖ SRb‖ sex(IMM<8:0>)}; Rd[i]<k> = Ra[i]<k> & -Bop[i]<k>, k = for all bits in element i ; } 例外 無しVASA 算術アキュムレータ移動
【0342】
【表98】
【0343】アセンブラ構文 VASAL.dt VASAR.dt ここで、dt={b,b9,h,w}であり、Rは左或
いは右側の回転方向を示す。
【0344】
【表99】
【0345】説明 ベクトルアキュムレータレジスタのそれぞれのデータエ
レメントは右側からゼロ充てん(zerofill)で1ビット位
置だけ左に移動されるか(もしR=0の場合)或いは符
号−拡張で1ビット位置だけ左に移動される(もしR=
1の場合)。この結果はベクトルアキュムレータに記憶
される。
【0346】 演算 for(i = 0;i < NumElem && EMASK[i];i++){ if(R = 1) VACOH[i]:VACOL[i] = VACOH[i]:VACOL[i] sign>> 1 ; else VACOH[i]:VACOL[i] = VACOH[i]:VACOL[i] << 1 ; } 例外 オーバフローVASL 算術左への移動
【0347】
【表100】
【0348】アセンブラ構文 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}。
【0349】
【表101】
【0350】説明 ベクトル/スカラレジスタRaのそれぞれのデータエレ
メントは右側からゼロ充てんでスカラレジスタRb或い
はIMMフィールドに与えられた移動量だけ左に移動さ
れ、その結果はベクトル/スカラレジスタRdに記憶さ
れる。オーバフローを発生するそれらエレメントに対し
てその結果はそれらの符号によって最大陽或いは陰の値
に飽和する。移動量は符号のない整数となるように定義
される。
【0351】 演算 shift_amount ={SRb % 32‖IMM<4:0>}; for(i = 0 ; i < NumElem && EMASK[i] ; i++){ Rd[i] = saturate(Ra[i] << shift_amount; } 例外 なし プログラミング注意 移動量はSRb或いはIMM(4:0)から5ビット番
号で得られる点に注意されたい。バイト、バイト9、ハ
フワードデータタイプに対してプログラマはデータサイ
ズのビット数より小さいか同一の移動量を正確に指定す
る義務がある。もし移動量が指定されたデータサイズよ
り大きい場合、エレメントはゼロ充てんされる。
【0352】VASR 算術右への移動
【0353】
【表102】
【0354】アセンブラ構文 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}。
【0355】
【表103】
【0356】説明 ベクトル/スカラレジスタRaのそれぞれのデータエレ
メントは最上位ビット位置で符号−拡張されてスカラレ
ジスタRb或いはIMMフィールドの最下位ビットに与
えられた移動量だけ右に算術的に移動され、その結果は
ベクトル/スカラレジスタRdに記憶される。移動量は
符号のない整数となるように定義される。
【0357】 演算 shift_amount ={SRb % 32‖IMM<4:0>}; for(i = 0 ; i < NumElem && EMASK[i] ; i++){ Rd[i] = Ra[i] sign >> shift_amount) ; } 例外 無し プログラミング注意 移動量がSRb或いはIMM(4:0)から5ビット番
号で得られることに注意されたい。バイト、バイト9、
ハフワードデータタイプに対してプログラマはデータサ
イズのビット数より小さいか同一の移動量を正確に指定
する義務がある。もし移動量が指定されたデータサイズ
より大きい場合、エレメントは符号ビットで充てんされ
る。
【0358】VASS3 加算及び(−1,
0,1)の符号減算
【0359】
【表104】
【0360】アセンブラ構文 VASS3.dt VRd,VRa,VRb VASS3.dt VRd,VRa,SRb VASS3.dt SRd,SRa,SRb ここで、dt={b,b9,h,w}。
【0361】
【表105】
【0362】説明 ベクトル/スカラレジスタRaのRbに加算されて中間
結果を生成し、その後中間結果からRaの符号が減算さ
れて得られた最終結果はベクトル/スカラレジスタRd
に記憶される。
【0363】演算 例外 オーバフローVASUB 減算の絶対値
【0364】
【表106】
【0365】アセンブラ構文 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}。
【0366】
【表107】
【0367】説明 ベクトル/スカラレジスタRb或いはIMMフィールド
の内容はベクトル/スカラレジスタRaの内容から減算
されてその絶対値がベクトル/スカラレジスタRdに記
憶される。
【0368】演算 例外 オーバフロー、浮動小数点無効オペランド プログラミング注意 もし減算器の結果が最大陰数であれば、オーバフローは
絶対値演算後に発生される。もし飽和モードがイネーブ
ルされる場合ならば、絶対値演算の結果は最大陽数にな
る。
【0369】VAVG 2エレメント平均
【0370】
【表108】
【0371】アセンブラ構文 VAVG.dt VRd,VRa,VRb VAVG.dt VRd,VRa,SRb VAVG.dt SRd,SRa,SRb ここで、dt={b,b9,h,w,f}であり、整数
データタイプに対する“打切り”四捨五入モードを指定
するためにVAVGTを使用する。
【0372】
【表109】
【0373】説明 ベクトル/スカラレジスタRaの内容はベクトル/スカ
ラレジスタRbの内容に加算されて中間結果を生成し、
その後中間結果は2で割られ、最終結果はベクトル/ス
カラレジスタRdに記憶される。整数データタイプに対
してT=1の場合、四捨五入モードが打ち切られ、T=
0の場合、ゼロから切り捨てがなされる(デフォール
ト)。フロートデータタイプの場合、四捨五入モードは
VCSR(RMODE)に指定される。
【0374】演算 例外 無しVAVGH 2隣接エレメント平均
【0375】
【表110】
【0376】アセンブラ構文 VAVGH.dt VRd,VRa,VRb VAVGH.dt VRd,VRa,SRb ここで、dt={b,b9,h,w,f}であり、整数
データタイプに対する“打切り”四捨五入モードを指定
するためにVAVGHTを使用する。
【0377】
【表111】
【0378】
【表112】
【0379】 演算 for(i = 0;i < NumElem - 1 ; i++) { Rd[i] = (Ra[i] + Ra[i+1])// 2 ; } Rd[NumElem-1] = (Ra[NumElem-1] +{VRb[0]‖SRb })// 2 ; 例外 無し プログラミング注意 この命令はエレメントマスクによって影響を受けない。
【0380】VAVGQ 4重平均
【0381】
【表113】
【0382】アセンブラ構文 VAVGQ.dt VRd,VRa,VRb ここで、dt={b,b9,h,w}であり、整数デー
タタイプに対する“打切り”四捨五入モードを指定する
ためにVAVGQTを使用する。
【0383】
【表114】
【0384】
【表115】
【0385】 演算 for(i = 0;i < NumElem - 1 ; i++) { Rd[i] = (Ra[i] + Rb[i] + (Ra[i+1] + Rb[i+1])// 4; } 例外 無しVCACHE キャッシュ演算
【0386】
【表116】
【0387】アセンブラ構文 VCACHE.fc SRb,SRi VCACHE.fc SRb,#IMM VCACHE.fc SRb+,SRi VCACHE.fc SRb+,#IMM ここで、fc={0,1}。
【0388】
【表117】
【0389】演算 例外 無し プログラミング注意 この命令はエレメントマスクによって影響を受けない。
【0390】VCAND 補数加算
【0391】
【表118】
【0392】アセンブラ構文 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が同一の演算を指定することに留意されたい。
【0393】
【表119】
【0394】説明 RaとRb/即値オペランドの補数を論理的にAND
し、その結果は目的レジスタRdにリターンさせる。
【0395】 演算 for(i = 0; i < NumElem && EMASK[i]; i++) { Bop[i] = {VRb[i]‖SRb ‖sex(IMM<8:0>) }; Rd[i]<k> = -Ra[i]<k> & Bop[i]<k>, k = for all bits in element i; } 例外 無しVCBARR 条件付バリヤ
【0396】
【表120】
【0397】アセンブラ構文 VCBARR.cond ここで、cond={0,−7}、各条件は後から記号
で与えられる。
【0398】
【表121】
【0399】演算 (Cond=真)の間、全ての後続命令は停止させる。
【0400】例外 無し プログラミング注意 この命令は命令実行の直列化を施行するためにソフトウ
ェアに提供される。この命令は不正密例外の正確な報告
を行うのに用いられる。例えば、もしこの命令が例外を
生じさせる恐れのある算術命令の直後に用いられる場
合、例外はこの命令を番地指定するプログラムカウンタ
に報告される。
【0401】VCBR 条件付ブランチ
【0402】
【表122】
【0403】アセンブラ構文 VCBR.cond #Offset ここで、cond={un,lt,eq,le,gt,
ne,ge,ov}。
【0404】説明 Condが真であれば、ブランチする。これは遅延した
ブランチでない。
【0405】演算 例外 命令アドレス無効VCBRI 条件付間接ブランチ
【0406】
【表123】
【0407】アセンブラ構文 VCBRI.cond SRb ここで、cond={un,lt,eq,le,gt,
ne,ge,ov}。
【0408】説明 Condが真であれば、ブランチする。これは遅延した
ブランチでない。
【0409】演算 例外 命令アドレス無効VCCS 条件付文脈切換
【0410】
【表124】
【0411】アセンブラ構文 VCCS #Offset 説明 もしVIMSK(cse)が真の場合、文脈切換サブル
ーチンにジャンプする。これは遅延したブランチでな
い。もし、VIMSK(cse)が真の場合、VPC+
4(リターンアドレス)がリターンアドレススタックに
セーブされる。もしそうでなければ、実行はVPC+4
で続けられる。
【0412】演算 例外 アドレススタックオーバフローリターンVCHGCR 制御レジスタ変更
【0413】
【表125】
【0414】アセンブラ構文 VCHGCR Mode
【0415】
【表126】
【0416】演算 例外 無し プログラミング注意 この命令はハードウェアがVMOV命令をもって機能し
たものよりさらに効率的な方式でVCSRで制御ビット
を変更するために提供される。
【0417】VCINT 条件付ARM7インタラプト
【0418】
【表127】
【0419】アセンブラ構文 VCINT.cond #CODE ここで、cond={un,lt,eq,le,gt,
ne,ge,ov}。
【0420】説明 もしCondが真であれば、実行を停止し、イネーブル
された場合にARM7をインタラプトする。
【0421】 演算 If((Cond=VCSR[SO,GT,EQ,LT]) |(Cond==un)) { VISRC<vip> = 1; VIINS = [VCINT.cond #ICODE instruction]; VEPC = VPC; if(VIMSK<vie>==1)signal ARM7 interrupt; VP STATE=VP IDLE; } else VPC = VPC+4; 例外 VCINTインタラプトVCJOIN ARM7タスクを有する条件付結
【0422】
【表128】
【0423】アセンブラ構文 VCJOIN.cond #Offsset ここで、cond={un,lt,eq,le,gt,
ne,ge,ov}。
【0424】説明 もしCondが真であれば、実行を停止し、イネーブル
された場合にARM7をインタラプトする。
【0425】 演算 If((Cond=VCSR[SO,GT,EQ,LT]) |(Cond=un)){ VISRC<vjp> = - 1; VIINS = [VCJOIN.cond #Offset instruction]; VEPC = VPC; if(VIMSK<vje>==1)signal ARM7 interrupt; VP STATE = VP IDLE; } else VPC = VPC+4; 例外 VCJOINインタラプトVCJSR サブルーチンに対する条件付ジャ
ンプ
【0426】
【表129】
【0427】アセンブラ構文 VCJSR.cond #Offsset ここで、cond={un,lt,eq,le,gt,
ne,ge,ov}。
【0428】説明 もしCondが真であれば、サブルーチンにジャンプす
る。これは遅延したブランチでない。
【0429】もしCondが真であれば、VPC+4
(リターンアドレス)がリターンアドレススタックにセ
ーブされる。もしそうでなければ、実行はVPC+4で
続けられる。
【0430】 演算 If((Cond==VCSR[SO,GT,EQ,LT])|(Cond==un)) { if(VSP<4>>15) { VISRC<RASO> = 1; signal ARM7 with RASO exception; VP STATE = VP IDLE; }else{ RSTACK[VSP<3:0>] = VPC+4; VSP<4:0> = VSP<4:0>+1; VPC = VPC+sex(Offset<22:0> * 4); } } else VPC = VPC+4; 例外 アドレススタックオーバフローリターンVCJSRI サブルーチンに対する条件付間接
ジャンプ
【0431】
【表130】
【0432】アセンブラ構文 VCJSRI.cond SRb ここで、cond={un,lt,eq,le,gt,
ne,ge,ov}。
【0433】説明 もしCondが真であれば、サブルーチンに間接ジャン
プする。これは遅延したブランチでない。
【0434】もしCondが真であれば、VPC+4
(リターンアドレス)がリターンアドレススタックにセ
ーブされる。もしそうでなければ、実行はVPC+4で
続けられる。
【0435】 演算 If((Cond==VCSR[SO,GT,EQ,LT])|(Cond=un)){ if(VSP<4:9>15){ VISRC<RASO> = 1; signal ARM7 with RASO exception; VP STATE = VP IDLE; }else{ RSTACK[VSP<3:0>] = VPC+4; VSP<4:0> = VSP<4:0>+1; VPC = SRb<31:2>:b'OO; } }else VPC = VPC+4; 例外 アドレススタックオーバフローリターンVCMOV 条件付ムーブ
【0436】
【表131】
【0437】アセンブラ構文 VCMOV.dt Rd,Rb,cond VCMOV.dt Rd,#IMM,cond ここで、dt={b,b9,h,w,f}、cond=
{un,lt,eq,le,gt,ne,ge,o
v}、.fと.wは.fデータタイプが9ビット即値オ
ペランドによって支援されないことを除いては同一の演
算を指定する。
【0438】
【表132】
【0439】
【表133】
【0440】 演算 If((Cond=VCSR[SOV,GT,EQ,LT])|(Cond==un)) for(i=0;i<NumElem;i++) Rd[i] =={Rb[i] ‖SRb ‖sex(IMM<8:0>) }; 例外 無し プログラミング注意 この命令はエレメントマスクによって影響を受けず、−
VCMOVMはエレメントマスクによって影響を受け
る。ベクトルアキュムレータで拡張された浮動小数点精
密表現は8エレメントに対する全ての576ビットを使
用する。従って、アキュムレータを含むベクトルレジス
タムーブは.b9データサイズを指定すべきである。
【0441】VCMOVM エレメントマスクを
有する条件付ムーブ
【0442】
【表134】
【0443】アセンブラ構文 VCMOVM.dt Rd,Rb,cond VCMOVM.dt Rd,#IMM,cond ここで、dt={b,b9,h,w,f}、cond=
{un,lt,eq,le,gt,ne,ge,o
v}、.fと.wは.fデータタイプが9ビット即値オ
ペランドによって支援されないことを除いては同一の演
算を指定する。
【0444】
【表135】
【0445】
【表136】
【0446】 演算 If((Cond=VCSR[SO,GT,EQ,LT]) |(Cond=un)) for(i=0;i < NumElem; && MMASK[i];i++) Rd[i] = {Rb[i] ‖SRb ‖sex(IMM<8:0>) }; 例外 無し プログラミング注意 この命令はVMMRエレメントマスクによって影響を受
け、−VCMOVはエレメントマスクによって影響を受
けない。ベクトルアキュムレータで拡張された浮動小数
点精密表現は8エレメントに対する全ての576ビット
を使用する。従って、アキュムレータを含むベクトルレ
ジスタムーブは.b9データサイズを指定すべきであ
る。
【0447】VCMPV 比較及びマスクセット
【0448】
【表137】
【0449】アセンブラ構文 VCMPV.dt VRd,VRb,cond.mas
k VCMPV.dt VRd,SRb,cond.mas
k ここで、dt={b,b9,h,w,f}、cond=
{un,lt,eq,le,gt,ne,ge,o
v}、mask={VGMR,VMMR}、もしマスク
が指定されなければ、VGMRは仮想である。
【0450】
【表138】
【0451】説明 ベクトルレジスタVRa,VRbの内容は減算演算(V
Ra[i]−VRb[i]を実行することによりエレメント
方式で比較され、VGMR(もしK=0)或いはVMM
R(もしK=1)レジスタで対応するビット(#i)は
もし比較の結果がVCMPV命令のCondフィールド
と符合する場合にセットされる。例えば、Condフィ
ールドがLTより小さい場合、VGMR[i](またはV
MMR[i])はVRa[i]<VRb[i]の時にセットさ
れる。
【0452】 演算 for(i=0;i < NumElem ; i++){ Bop[i] ={Rb[i] ‖SRb ‖sex(IMM<8:0>) }; relationship[i] =Ra[i] ? Bop[i]; if(k=1) MMASK[i]=(relationship[i]==Cond) ? True:False; else EMASK[i]=(relationship[i]==Cond) ? True:False; 例外 無し プログラミング注意 この命令はエレメントマスクによって影響を受けない。
【0453】VCNTLZ 先行ゼロカウント
【0454】
【表139】
【0455】アセンブラ構文 VCNTLZ.dt VRd,VRb VCNTLZ.dt SRd,SRb ここで、dt={b,b9,h,w}。
【0456】
【表140】
【0457】説明 Rbの各エレメントに対して先行ゼロの数をカウントし
て、Rdにカウントをリターンする。
【0458】 演算 for(i=0;i < NumElem && EMASK[i];i++) { Rd[i] = number of leading zeroes (Rb[i]); } 例外 無し プログラミング注意 エレメントの全てのビットがゼロの場合、その結果はエ
レメントサイズ(それぞれバイト、バイト9、ハフワー
ド、或いはワードに対して8,9,16,或いは32)
と同一である。先行ゼロのカウントはエレメント位置の
インデックスと逆関係をもつ(もしVCMPR命令の次
に用いられる場合)。エレメント位置を変換するために
与えられたデータタイプに対するNumElemからV
CNTLZの結果を減算する。
【0459】VCOR 補数OR
【0460】
【表141】
【0461】アセンブラ構文 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が同一の演算を指定することに留意されたい。
【0462】
【表142】
【0463】説明 RaとRb/即値オペランドの補数を論理的にORし、
その結果を目的レジスタRdにリターンさせる。
【0464】 演算 for(i=0;i < NumElem && EMASK[i];i++) { Bop[i] = {VRb[i]‖SRb ‖sex(IMM<8:0>) }; Rd[i]<k> = -Ra[i]<k> |Bop[i]<k>,k = for all bits in element; } 例外 無しVCRSR サブルーチンからの条件付リター
【0465】
【表143】
【0466】アセンブラ構文 VCRSR.cond ここで、cond={un,lt,eq,le,gt,
ne,ge,ov}。
【0467】説明 もしCondが真であれば、サブルーチンにリターンす
る。これは遅延したブランチでない。
【0468】もしCondが真であれば、リターンアド
レススタックにセーブされたリターンアドレスから実行
が続けられる。もしそうでなければ、実行はVPC+4
で続けられる。
【0469】 演算 If((Cond==VCSR[SO,GT,EQ,LT])|(Cond=un)){ if(VSP<4:0> == 0) { VISRC<RASU> = 1; signal ARM7 with RASU exception; VP STATE = VP IDLE; }else{ VSP<4:0> = VSP<4:0> -1; VPC = RSTACK[VSP<3:0>]; VPC<1:0> = b'00; } } else VPC = VPC+4; 例外 命令アドレス無効、アドレススタックオーバフローリタ
ーン。
【0470】VCVTB9 バイト9データタイプ変換
【0471】
【表144】
【0472】アセンブラ構文 VCVTB9.md VRd,VRb VCVTB9.md SRd,SRb ここで、md={bb9,b9h,hb9}
【0473】
【表145】
【0474】説明 Rbの各エレメントはバイトからバイト9(bb9)
へ、バイト9からハフワード(b9h)へ、或いはハフ
ワードからバイト9(hb9)へ変換する。
【0475】 演算 if(md<1:0> = 0){ //bb9 for byte to byte 9 conversion VRd = VRb; VRd<9i+8> = VRb<9i+7>, I = 0 to 31(or 63 in VEC64 mode)} else if(md<1:0>==2){ //b9h for byte9 to halfword conversion VRd = VRb ; VRd<18i+16:18i+9>=VRb<18i+8>,i=0 to 15(or 31 in VEC64 mode)} else if(md<1:0> = 3) { //hb9 for halfword to byte9 conversion VRd<18i+8>=VRb<18i+9>,i=0 to 15(or 31 in VEC64 mode) else VRd = undefined; 例外 無し プログラミング注意 b9hはモードを有するこのような命令を使用する前に
プログラマはシャフル(shuffle)演算をもつベクトルレ
ジスタにエレメントの減少した数を調整することが要求
される。hb9モードを有するこのような命令を使用し
た後、プログラマはアンシャフル演算をもつ目的ベクト
ルレジスタにエレメントの増加した数を調整することが
要求される。この命令はエレメントマスクによって影響
を受けない。
【0476】VCVTFF 浮動小数点の固定小数点への変換
【0477】
【表146】
【0478】アセンブラ構文 VCVTFF VRd,VRa,SRb VCVTFF VRd,VRa,#IMM VCVTFF SRd,SRa,SRb VCVTFF SRd,SRa,#IMM
【0479】
【表147】
【0480】説明 ベクトル/スカラレジスタRaの内容はYの幅がRb
(モジュロ32)或いはIMMフィールドによって指定
され、Xの幅が(32−Yの幅)に定義される場合、3
2ビット浮動小数点からフォーマット(X,Y)の固定
小数点実数に変換される。
【0481】 演算 Y size ={SRb % 32 ‖ IMM<4.0> }; for(i=0;i<NumElem;i++){ Rd[i] = convert to < 32-Y size.Y size>format(Ra[i]); } 例外 オーバフロー プログラミング注意 この命令は単にワードデータサイズのみを支援する。こ
の命令はアーキテクチャがレジスタ内に多重データタイ
プを支援しないために、エレメントマスクを使用しな
い。この命令は整数データタイプに対してゼロ四捨五入
モードから切り捨てを使用する。
【0482】VCVTIF 整数の浮動小数点への変換
【0483】
【表148】
【0484】アセンブラ構文 VCVTIF VRd,VRb VCVTIF VRd,SRb VCVTIF SRd,SRa
【0485】
【表149】
【0486】説明 ベクトル/スカラレジスタRbの内容はint32から
フロートデータタイプに変換され、その結果はベクトル
/スカラレジスタRdに記憶される。
【0487】 演算 for(i=0; i<NumElem : i++) { Rd[i] = convert to floating point format(Rb[i]); } 例外 無し プログラミング注意 この命令は単にワードデータサイズのみを支援する。こ
の命令はアーキテクチャがレジスタ内に多重データタイ
プを支援しないために、エレメントマスクを使用しな
い。
【0488】VD1CBR VCR1減少及び条件付ブランチ
【0489】
【表150】
【0490】アセンブラ構文 VD1CBR.cond #Offset ここで、cond={un,lt,eq,le,gt,
ne,ge,ov}。
【0491】説明 VCR1を減少させ、もしCondが真であればブラン
チする。これは遅延したブランチではない。
【0492】 演算 VCR1 = VCR1 - 1; If((VCR1 > 0) & ((Cond = VCSR[SO,GT,EQ,LT])|(Cond == un))) VPC = VPC+sex(Offset<22:0>* 4); else VPC = VPC+4; 例外 命令アドレス無効 プログラミング注意 VCR1はブランチ条件がチェックされる前に減少され
る。VCR1が0の時、この命令を実行することはルー
プカウント232−1に効果的にセットする。
【0493】VD2CBR VCR2減少及び条件付ブランチ
【0494】
【表151】
【0495】アセンブラ構文 VD2CBR.cond #Offset ここで、cond={un,lt,eq,le,gt,
ne,ge,ov}。
【0496】説明 VCR2を減少させ、もしCondが真であればブラン
チする。これは遅延したブランチではない。
【0497】 演算 VCR2 = VCR2 - 1; If((VCR2 > 0) & ((Cond = VCSR[SO,GT,EQ,LT])|(Cond = un))) VPC = VPC+sex(Offset<22:0>* 4); else VPC = VPC+4; 例外 命令アドレス無効 プログラミング注意 VCR2はブランチ条件がチェックされる前に減少され
る。VCR2が0の時、この命令を実行することはルー
プカウント232−1に効果的にセットする。
【0498】VD3CBR VCR3減少及び条件付ブランチ
【0499】
【表152】
【0500】アセンブラ構文 VD3CBR,cond #Offset ここで、cond={un,lt,eq,le,gt,
ne,ge,ov}。
【0501】説明 VCR3を減少させ、もしCondが真であればブラン
チする。これは遅延したブランチではない。
【0502】 演算 VCR3 = VCR3 - 1; If((VCR3 > 0) & ((Cond = VCSR[SO,GT,EQ,LT])|(Cond = un))) VPC = VPC+sex(Offset<22:0>* 4); else VPC = VPC+4; 例外 命令アドレス無効 プログラミング注意 VCR3はブランチ条件がチェックされる前に減少され
る。VCR3が0の時、この命令を実行することはルー
プカウント232−1に効果的にセットする。
【0503】VDIV2N 2nによる分割
【0504】
【表153】
【0505】アセンブラ構文 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}
【0506】
【表154】
【0507】説明ベクトル/スカラレジスタRaの内容
はnがスカラレジスタ(Rb或いはIM M)の陽の整数である場合、2nによって分割され、そ
の最終結果はベクトル/スカラレジスタRdに記憶され
る。この命令は四捨五入モードでとして切捨て(ゼロを
向かって四捨五入)を使用する。
【0508】演算 例外 無し プログラミング注意 NがSRb或いはIMM(4:0)から5ビット数で得
られる点に留意されたい。バイト、バイト9、ハフワー
ドデータタイプの場合、プログラマはデータサイズで精
度が低いか同一のNの値を正確に指定する責任がある。
もしそれが指定されたデータサイズの精度よりさらに大
きければ、エレメントは符号ビットで充てんされる。こ
の命令は四捨五入モードとしてゼロを向かって四捨五入
を使用する。
【0509】VDIV2N.F 2nフロートによる分割
【0510】
【表155】
【0511】アセンブラ構文 VDIV2N.f VRd,VRa,VRb VDIV2N.f VRd,VRa,#IMM VDIV2N.f SRd,SRa,SRb VDIV2N.f SRd,SRa,#IMM
【0512】
【表156】
【0513】説明 ベクトル/スカラレジスタRaの内容はnがスカラレジ
スタ(Rb或いはIMM)の陽の整数の場合、2nによ
って分割され、その最終結果はベクトル/スカラレジス
タRdに記憶される。
【0514】演算 例外 無し プログラミング注意 NがSRb或いはIMM(4:0)から5ビット数で得
られる点に留意されたい。
【0515】VDIVI 分割初期化−不完全
【0516】
【表157】
【0517】アセンブラ構文 VDIVI.ds VRb VDIVI.ds SRb ここで、ds={b,b9,h,w}。
【0518】
【表158】
【0519】説明 非復原符号付き整数除算の初期化段階を実行する。被除
数はアキュムレータで倍精度符号付き整数である。もし
被除数が単精度の場合、それは倍精度で符号拡張されて
VACOH及びVACOLに記憶されるべきである。除
数はRbで単精度符号付き整数である。
【0520】被除数の符号(sign)が除数の符号と同一で
あれば、Rbはアキュムレータの上位から減算され、そ
うでなければ、Rbはアキュムレータの上位に加算され
る。
【0521】演算 例外 無し プログラミング注意 プログラマは分割ステップ前にオーバフロー或いはゼロ
による除算の場合を検出ことが要求される。
【0522】VIDVS 分割ステップ−不完全
【0523】
【表159】
【0524】アセンブラ構文 VDIVS.ds VRb VDIVS.ds SRb ここで、ds={b,b9,h,w}。
【0525】
【表160】
【0526】説明 被復原符号付き除算の一つの反復ステップを行う。この
命令はデータサイズの多数倍(即ち、int8データタ
イプに対して8倍、int9に対して9倍、int16
に対して16倍、そしてint32データタイプに対し
て32倍)として実行されるべきである。VDIVI命
令はアキュムレータで初期部分の残りを生成するための
除算ステップ前に一度使用されるべきである。除数はR
bで単精度符号付き整数である。一応、商ビットはステ
ップごとに抽出されてアキュムレータの最下位ビットに
シフトされる。もし部分残りの符号がRbの除数の符号
と同一であれば、Rbはアキュムレータの上位から減算
される。もし同一でなければ、Rbはアキュムレータの
上位に加算される。商ビットはもしアキュムレータで結
果的な部分残り(加算或いは減算)の符号が除数の符号
と同一であれば、1である。そうでなければ、商ビット
はゼロ(0)である。アキュムレータは商ビットが充て
んされた状態で1ビット位置だけ左にシフトされる。除
算ステップの結論として、残りはアキュムレータの上位
に、商はアキュムレータの下位に記録される。商は1の
補数形態である。
【0527】演算VESL 1だけエレメントを左にシフトす
【0528】
【表161】
【0529】アセンブラ構文 VESL.dt SRc,VRd,VRa,SRb ここで、dt={b,b9,h,w,f}、.wと.f
が同一演算を指定することに留意されたい。
【0530】
【表162】
【0531】説明 1位置だけ左にベクトルレジスタRaのエレメントをシ
フトし、スカラレジスタRbから充てんする。シフトさ
れた一番左側のエレメントはスカラレジスタRcにリタ
ーンされ、残りのエレメントはベクトルレジスタRdに
リターンされる。
【0532】
【表163】
【0533】演算 例外 無し プログラミング注意 この命令はエレメントマスクによって影響を受けない。
【0534】VESR 1だけエレメントを
右にシフトする
【0535】
【表164】
【0536】アセンブラ構文 VESR.dt SRc,VRd,VRa,SRb ここで、dt={b,b9,h,w,f}、.wと.f
が同一演算を指定することに留意されたい。
【0537】
【表165】
【0538】説明 1位置だけ右にベクトルレジスタRaのエレメントをシ
フトし、スカラレジスタRbから充てんする。シフトさ
れた一番右側のエレメントはスカラレジスタRcにリタ
ーンされ、残りのエレメントはベクトルレジスタRdに
リターンされる。
【0539】
【表166】
【0540】演算 例外 無し プログラミング注意 この命令はエレメントマスクによって影響を受けない。
【0541】VEXTRT 1エレメント抽出
【0542】
【表167】
【0543】アセンブラ構文 VEXTRT.dt SRd,VRa,SRb VEXTRT.dt SRd,VRa,#IMM ここで、dt={b,b9,h,w,f}、.wと.f
が同一演算を指定することに留意されたい。
【0544】
【表168】
【0545】説明 インデックスがスカラレジスタRb或いはIMMフィー
ルドによって指定されるRaベクトルレジスタからエレ
メントを抽出してスカラレジスタRdに記憶させる。
【0546】演算 index32 = {SRb % 32 ‖ IMM<4:0> }; index64 = {SRb % 64 ‖ IMM<5:0> }; index = (VCSR<vec64>) ? index64 : index32; SRd = VRa[index]; 例外 無し プログラミング注意 この命令はエレメントマスクによって影響を受けない。
【0547】VEXTSNG2 (1,−1)の符号抽出
【0548】
【表169】
【0549】アセンブラ構文 VEXTSNG2.dt VRd,VRa VEXTSNG2.dt SRd,SRa ここで、dt={b,b9,h,w}。
【0550】
【表170】
【0551】説明 ベクトル/スカラレジスタRaの内容の符号値はエレメ
ントのように計算されて、その結果はベクトル/スカラ
レジスタRdに記憶される。
【0552】 演算 for(i=0; i<NumElem && EMASK[i]; i++){ Rd[i] = (Ra[i]<0) ?-1: 1; } 例外 無しVEXTSNG3 (1,0,−1)の符号抽出
【0553】
【表171】
【0554】アセンブラ構文 VEXTSNG3.dt VRd,VRa VEXTSNG3.dt SRd,SRa ここで、dt={b,b9,h,w}。
【0555】
【表172】
【0556】説明 ベクトル/スカラレジスタRaの内容の符号値はエレメ
ントのように計算されて、その結果はベクトル/スカラ
レジスタRdに記憶される。
【0557】 演算 for(i=0; i<NumElem && EMASK[i]; i++){ if(Ra[i] > 0) Rd[i]=1; else if(Ra[i] < 0) Rd[i]=-1; else Rd[i]=0; } 例外 無しVINSRT 1エレメント挿入
【0558】
【表173】
【0559】アセンブラ構文 VINSRT.dt VRd,SRa,SRb VINSRT.dt SRd,SRa,#IMM ここで、dt={b,b9,h,w,f}、.wと.f
が同一の演算を指定する点に留意されたい。
【0560】
【表174】
【0561】説明 スカラレジスタRaのエレメントをスカラレジスタRb
或いはIMMフィールドによって指定されたインデック
スにあるベクトルレジスタRdへ挿入する。
【0562】演算 index32 = {SRb % 32 ‖ IMM<4:0> }; index64 = {SRb % 64 ‖ IMM<5:0> }; index = (VCSR<vec64>) ? index64 : index32; VRd[index]=SRa; 例外 無し プログラミング注意 この命令はエレメントマスクによって影響を受けない。
【0563】VL ロード
【0564】
【表175】
【0565】アセンブラ構文 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}、.wと.fは同一の演算が指定され、.64
とVRAdは共に指定され得ない点に留意されたい。キ
ャッシュオフロードのためにVLOFFを使用する。
【0566】説明 現在或いは交替バンク或いはスカラレジスタにベクトル
レジスタをロードする。
【0567】演算 EA= SRb + {SRi ‖ sex(IMM<7:0>)); if(A==1)SRb =EA; Rd = see table below;
【0568】
【表176】
【0569】例外 データアドレス、非整列アクセス無効 プログラミング注意 この命令はエレメントマスクによって影響を受けない。
【0570】VLCB 循環バッファからロード
【0571】
【表177】
【0572】アセンブラ構文 VLCB.lt Rd,SRb,SRi VLCB.lt Rd,SRb,#IMM VLCB.lt Rd,SRb+,SRi VLCB.lt Rd,SRb+,#IMM ここで、lt={b,bz9,ds9,h,w,4,
8,16,32,64}、Rd={VRd,VRAd,
SRd}。.bと.ds9は同一の演算が指定され、.
64とVRAdは共に指定され得ない点に注意された
い。キャッシュオフロードのためにVLCBOFFを使
用する。
【0573】説明 SRb+1 に存在するBEGINポインタとSRb+2 に存
するENDポインタで指された循環バッファからベクト
ルレジスタまたはスカラレジスタをロードする。
【0574】もし、アドレス更新演算はもちろん、ロー
ド前にENDアドレスより大きければ有効アドレスが調
整される。また、循環バッファバウンドはそれぞれ.h
及び.wスカラレジスタについてハーフワード及びワー
ド境界上で整列されるべきである。
【0575】
【表178】
【0576】例外 無効データアドレス、整列されないアクセス プログラミング注意 この命令はエレメントマスクにより影響されない。
【0577】プログラマは下記条件を満たさなければ予
想通り作動できない。
【0578】 BEGIN<EA<2*ENDーBEGIN すなわち、EAーEND<ENGーBEGINは勿論、
EA>BEGINVLD ダブルロード
【0579】
【表179】
【0580】アセンブラ構文 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は一緒に指定され得ない点に留意された
い。キャッシュオフロードのためにVLDOFFを使用
する。
【0581】説明 現在或いは交替バンク或いは2スカラレジスタに2ベク
トルレジスタをロードする。
【0582】
【表180】
【0583】例外 データアドレス、非整列アクセス無効 プログラミング注意 この命令はエレメントマスクによって影響を受けない。
【0584】VLI 即値ロード
【0585】
【表181】
【0586】アセンブラ構文 VLI.dt VRd.#IMM VLI.dt SRd.#IMM ここで、dt={b、b9、h、w、f}。
【0587】説明 即値をスカラまたはベクトルレジスタへロードする。
【0588】スカラレジスタロードの場合、バイト、バ
イト9、ハーフワードまたはワードはデータ型によりロ
ードされる。バイト、バイト9及びハーフワードデータ
型の場合、影響されないバイト(バイト9)は修正され
ない。
【0589】演算 Rd=以下の表を参照する:
【0590】
【表182】
【0591】例外 無しVLQ 四重ロード
【0592】
【表183】
【0593】アセンブラ構文 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は共に指定され得ない点に留意された
い。キャッシュオフロードのためにVLQOFFを使用
する。
【0594】説明 現在或いは交替バンク或いは4スカラレジスタに4ベク
トルレジスタをロードする。
【0595】演算 EA= SRb + {SRi ‖ sex(IMM<7:0>)}; if(A==1)SR b = EA;; Rd :Rd+1 :Rd+2 :Rd+3 = see table below;
【0596】
【表184】
【0597】例外 データアドレス、非整列アクセス無効 プログラミング注意 この命令はエレメントマスクによって影響を受けない。
【0598】VLR 逆へのロード
【0599】
【表185】
【0600】アセンブラ構文 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を使用する。
【0601】説明 逆エレメント順序でベクトルレジスタをロードする。こ
の命令はスカラ目的レジスタを支援しない。
【0602】
【表186】
【0603】例外 データアドレス、非整列アクセス無効 プログラミング注意 この命令はエレメントマスクによって影響を受けない。
【0604】VLSL 論理左への移動
【0605】
【表187】
【0606】アセンブラ構文 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,}。
【0607】
【表188】
【0608】説明 ベクトル/スカラレジスタRaのそれぞれのエレメント
は最下位ビットLSBの位置にゼロ充てんによってスカ
ラレジスタRb或いはIMMフィールドに与えられた移
動量だけ左に論理的にビット−移動され、その結果はベ
クトル/スカラレジスタRdに記憶される。
【0609】演算 例外 無し プログラミング注意 移動量がSRb或いはIMM(4:0)から5ビット番
号で得られる点に注意されたい。バイト、バイト9、ハ
フワードデータタイプに対してプログラマはデータサイ
ズのビット数より小さいか同一の移動量を正確に指定す
る義務がある。もし移動量が指定されたデータサイズよ
りさらに大きければ、エレメントはゼロ充てんされる。
【0610】VLSR 論理右への移動
【0611】
【表189】
【0612】アセンブラ構文 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,}。
【0613】
【表190】
【0614】説明 ベクトル/スカラレジスタRaのそれぞれのエレメント
は最上位ビットMSBの位置にゼロ充てんでスカラレジ
スタRb或いはIMMフィールドに与えられた移動量だ
け右に論理的にビット−移動され、その結果はベクトル
/スカラレジスタRdに記憶される。
【0615】演算 例外 無し プログラミング注意 移動量がSRb或いはIMM(4:0)から5ビット番
号で得られる点に注意されたい。バイト、バイト9、ハ
フワードデータタイプに対してプログラマはデータサイ
ズのビット数より小さいか同一の移動量を正確に指定す
る義務がある。もし移動量が指定されたデータサイズよ
りさらに大きければ、エレメントはゼロで充てんされ
る。
【0616】VLWS ストライドにロードする
【0617】
【表191】
【0618】アセンブラ構文 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,64},Rd=
{VRd,VRAd}、.64とVRAdは共に指定さ
れ得ない点に留意されたい。キャッシュオフロードのた
めにVLWSOFFを使用する。
【0619】説明 有効アドレスから始めてストライド制御レジスタ(Strid
e Control register)としてスカラレジスタSRb+1
を使用してメモリからベクトルレジスタVRdに32バ
イトがロードされる。LTは各ブロックに対するロード
のために連続したバイトの番号とブロックサイズを指定
する。SRb+1は2連続ブロックの始まりを分離する
番号とストライドを指定する。ストライドはブロックサ
イズと同一か或いはさらに大きいべきである。EAは整
列されたデータサイズでなければならない。ストライド
とブロックサイズはデータサイズの多数倍になるべきで
ある。
【0620】 演算 EA=SRb + {SRi ‖sex(IMM<7:0>)}; if(A=1) SRb =EA ; Block_size={4‖8‖16‖32}; stride=SRb+1<31:0>; for(i=0;i<VECSIZE/Block _size;i++) for(j=0;j<Block _size;j++) VRd[i* Block _size+j]<8:0>=sex BYTE[EA+i * Stride+j]; 例外 データアドレス、非整列アクセス無効VMAC 乗算及びアキュムレート
【0621】
【表192】
【0622】アセンブラ構文 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}。
【0623】
【表193】
【0624】説明 Raの各エレメントをRbの各エレメントと乗算して倍
精度中間結果を生成し、中間結果の各倍精度エレメント
をベクトルアキュムレータの各倍精度エレメントに加算
して、ベクトルアキュムレータに各エレメントの倍精度
の和を記憶させる。 RaとRbは指定されたデータタ
イプを使用し、一方VACは適宜な倍精度データタイプ
を使用する(それぞれint8,int16,及びin
t32に対して16,32,及び64ビット)。各倍精
度エレメントの上位部分はVACHに記憶される。
【0625】フロートデータタイプに対して全てのオペ
ランドと結果は単精度である。
【0626】 演算 for(i=0;i < NumElem && EMASK[i];i++){ Aop[i]={VRa[i]‖SRa }; Bop[i]={VRb[i]‖SRb }; if(dt==float)VACL[i]=Aop[i] * Bop[i]+VACL[i]; else VACH[i]:VACL[i]=Aop[i] * Bop[i]+VACH[i]:VACL[i]; 例外 オーバフロー、浮動小数点無効オペランド プログラミング注意 この命令はint9データタイプを支援せず、その代わ
りint16データタイプを使用する。
【0627】VMACF 乗算及び小数部アキュムレート
【0628】
【表194】
【0629】アセンブラ構文 VMACF.dt VRa,VRb VMACF.dt VRa,SRb VMACF.dt VRa,#IMM VMACF.dt SRa,SRb VMACF.dt SRa,#IMM ここで、dt={b,h,w,}。
【0630】
【表195】
【0631】説明 Raの各エレメントをRbの各エレメントと乗算して倍
精度中間結果を生成し、中間結果を1ビット左にシフト
させ、シフトさせた中間結果の各倍精度エレメントをベ
クトルアキュムレータの各倍精度エレメントに加算し
て、ベクトルアキュムレータに各エレメントの倍精度の
和を記憶させる。 VRaとRbは指定されたデータタ
イプを使用し、一方VACは適宜な倍精度データタイプ
を使用する(それぞれint8,int16,及びin
t32に対して16,32,及び64ビット)。各倍精
度エレメントの上位部分はVACHに記憶される。
【0632】 演算 for(i=0;i < NumElem && EMASK[i];i++){ Bop[i]={VRb[i]‖SRb ‖sex(IMM<8:0>)}; VACH[i]:VACL[i]=((VRa[i]* Bop[i])<<1)+VACH[i]:VACL[i]; } 例外 オーバフロー、 プログラミング注意 この命令はint9データタイプを支援せず、その代わ
りint16データタイプを使用する。
【0633】VMACL 乗算及びローアキュムレート
【0634】
【表196】
【0635】アセンブラ構文 VMACL.dt VRa,VRb VMACL.dt VRa,SRb VMACL.dt VRa,#IMM VMACL.dt SRa,SRb VMACL.dt SRa,#IMM ここで、dt={b,h,w,f}。
【0636】
【表197】
【0637】説明 Raの各エレメントをRbの各エレメントと乗算して倍
精度中間結果を生成し、中間結果の各倍精度エレメント
をベクトルアキュムレータの各倍精度エレメントに加算
して、ベクトルアキュムレータに各エレメントの倍精度
の和を記憶させ、目的レジスタVRdに下位部分をリタ
ーンさせる。
【0638】RaとRbは指定されたデータタイプを使
用し、一方VACは適宜な倍精度データタイプを使用す
る(それぞれint8,int16,及びint32に
対して16,32,及び64ビット)。各倍精度エレメ
ントの上位部分はVACHに記憶される。
【0639】フロートデータタイプに対して全てのオペ
ランドと結果は単精度である。
【0640】 演算 for(i=0;i < NumElem && EMASK[i];i++){ Bop[i]={VRb[i]‖SRb }; if(dt==float)VACL[i]=VRa[i] * Bop[i]+VACL[i]; else VACH[i]:VACL[i]=VRa[i] * Bop[i]+VACH[i]:VACL[i]; VRd[i]=VACL[i]; 例外 オーバフロー、浮動小数点無効オペランド プログラミング注意 この命令はint9データタイプを支援せず、その代わ
りint16データタイプを使用する。
【0641】VMAD 乗算及び加算
【0642】
【表198】
【0643】アセンブラ構文 VMAD.dt VRc,VRd,VRa,VRb VMAD.dt SRc,SRd,SRa,SRb ここで、dt={b,h,w}。
【0644】
【表199】
【0645】説明 Raの各エレメントをRbの各エレメントと乗算して倍
精度中間結果を生成し、中間結果の各倍精度エレメント
をRcの各エレメントに加算して、目的レジスタ(Rd
+1:Rd)に各エレメントの倍精度の和を記憶させ
る。
【0646】 演算 for(i=0:i < NumElem && EMASK[i];i++){ Aop[i]={VRa[i]‖SRa }; Bop[i]={VRb[i]‖SRb }; Cop[i]={VRc[i]‖SRc }; Rd+1[i]:Rd[i]=Aop[i]* Bop[i]+sex_dp(Cop[i]) ; } 例外 無しVMADL 乗算及びロー加算
【0647】
【表200】
【0648】アセンブラ構文 VMADL.dt VRc,VRd,VRa,VRb VMADL.dt SRc,SRd,SRa,SRb ここで、dt={b,h,w,f}。
【0649】
【表201】
【0650】説明 Raの各エレメントをRbの各エレメントと乗算して倍
精度中間結果を生成し、中間結果の各倍精度エレメント
をRcの各エレメントに加算して、目的レジスタRdに
各エレメントの下位部分倍精度の和を記憶させる。
【0651】フロートデータタイプに対して全てのオペ
ランドと結果は単精度である。
【0652】 演算 for(i=0;i < NumElem && EMASK[i];i++){ Aop[i]={VRa[i]‖SRa }; Bop[i]={VRb[i]‖SRb }; Cop[i]={VRc[i]‖SRc }; if(dt==float)Lo[i]=Aop[i] * Bop[i]+ Cop[i]; else Hi[i]:Lo[i]=Aop[i]* Bop[i]+sex_dp(Cop[i]); Rd[i]=Lo[i]; } 例外 オーバフロー、浮動小数点無効オペランド。
【0653】VMAS 乗算及びアキュムレ
ータからの減算
【0654】
【表202】
【0655】アセンブラ構文 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}。
【0656】
【表203】
【0657】説明 Raの各エレメントをRbの各エレメントと乗算して倍
精度中間結果を生成し、中間結果の各倍精度エレメント
をベクトルアキュムレータの各倍精度エレメントから減
算して、ベクトルアキュムレータに各エレメントの倍精
度の和を記憶させる。
【0658】RaとRbは指定されたデータタイプを使
用し、一方VACは適宜な倍精度データタイプを使用す
る(それぞれint8,int16,及びint32に
対して16,32,及び64ビット)。各倍精度エレメ
ントの上位部分はVACHに記憶される。
【0659】フロートデータタイプに対して全てのオペ
ランドと結果は単精度である。
【0660】 演算 for(i=0;i < NumElem && EMASK[i];i++){ Bop[i]={VRb[i]‖SRb }; if(dt==float)VACL[i]=VACL[i]-VRa[i] * Bop[i]; else VACH[i]:VACL[i]=VACH[i]:VACL[i]-VRa[i] * Bop[i]; } 例外 オーバフロー、浮動小数点無効オペランド プログラミング注意 この命令はint9データタイプを支援せず、その代わ
りint16データタイプを使用する。
【0661】VMASF 乗算及びアキュム
レータ小数部からの減算
【0662】
【表204】
【0663】アセンブラ構文 VMASF.dt VRa,VRb VMASF.dt VRa,SRb VMASF.dt VRa,#IMM VMASF.dt SRa,SRb VMASF.dt SRa,#IMM ここで、dt={b,h,w}。
【0664】
【表205】
【0665】説明 Raの各エレメントをRbの各エレメントと乗算して倍
精度中間結果を生成し、倍精度中間結果を1ビットだけ
左にシフトし、シフトされた中間結果の各倍精度エレメ
ントをベクトルアキュムレータの各倍精度エレメントか
ら減算して、ベクトルアキュムレータに各エレメントの
倍精度の和を記憶させる。
【0666】RaとRbは指定されたデータタイプを使
用し、一方VACは適宜な倍精度データタイプを使用す
る(それぞれint8,int16,及びint32に
対して16,32,及び64ビット)。各倍精度エレメ
ントの上位部分はVACHに記憶される。
【0667】 演算 for(i=0;i < NumElem && EMASK[i];i++){ Bop[i]={VRb[i]‖SRb ‖sex(IMM<8:0>)}; VACH[i]:VACL[i]=VACH[i]:VACL[i]-VRa[i]* Bop[i]; } 例外 オーバフロー プログラミング注意 この命令はint9データタイプを支援せず、その代わ
りint16データタイプを使用する。
【0668】VMASL 乗算及びアキュム
レータローからの減算
【0669】
【表206】
【0670】アセンブラ構文 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}。
【0671】
【表207】
【0672】説明 Raの各エレメントをRbの各エレメントと乗算して倍
精度中間結果を生成し、中間結果の各倍精度エレメント
をベクトルアキュムレータの各倍精度エレメントから減
算して、ベクトルアキュムレータに各エレメントの倍精
度の和を記憶させ、目的レジスタVRdに下位部分をリ
ターンする。
【0673】RaとRbは指定されたデータタイプを使
用し、一方VACは適宜な倍精度データタイプを使用す
る(それぞれint8,int16,及びint32に
対して16,32,及び64ビット)。各倍精度エレメ
ントの上位部分はVACHに記憶される。
【0674】フロートデータタイプに対して全てのオペ
ランドと結果は単精度である。
【0675】 演算 for(i=0;i < NumElem && EMASK[i];i++){ Bop[i]={VRb[i]‖SRb }; if(dt==float)VACL[i]=VACL[i]-VRA[i] * Bop[i]; else VACH[i]:VACL[i]=VACH[i]:VACL[i]-VRa[i] * Bop[i]; VRd[i]=VACL[i]; } 例外 オーバフロー、浮動小数点無効オペランド プログラミング注意 この命令はint9データタイプを支援せず、その代わ
りint16データタイプを使用する。
【0676】VMAXE 双方式最大及び交換
【0677】
【表208】
【0678】アセンブラ構文 VMAXE.dt VRd,VRb ここで、dt={b,b9,h,w,f}。
【0679】
【表209】
【0680】説明 VRaとVRbは同一でなければならない。VRaがV
Rbと相違する時、その結果は定義されない。
【0681】ベクトルレジスタRbの各偶数/奇数デー
タエレメントは対で比較され、各データエレメント対の
うちより大きい値がベクトルレジスタRdの偶数位置に
記憶され、各データエレメント対のうちより小さい値が
奇数位置に記憶される。
【0682】 演算 for(i=0;i < NumElem && EMASK[i]:i=i+2){ VRd[i]=(VRb[i]>VRb[i+1])?VRb[i]:VRb[i+1]; VRd[i+1]=(VRb[i]>VRb[i+1])?VRb[i+1]:VRb[i]; } 例外 無しVMOV ムーブ
【0683】
【表210】
【0684】アセンブラ構文 VMOV.dt Rd,Rb ここで、dt={b,b9,h,w,f}であり、Rd
とRbは構造的に指定されたレジスタ名で示される。
【0685】
【表211】
【0686】
【表212】
【0687】
【表213】
【0688】演算 Rd=Rb 例外 VCSR或いはVISRCに例外状態ビットをセットす
ることは対応する例外を生じさせる。
【0689】プログラミング注意 この命令はエレメントマスクによって影響を受けない。
交替バンク概念がVEC64モードには存在しないの
で、この命令はVEC64モードで交替バンクレジスタ
に対する移動に使用できないことに注意されたい。
【0690】VMUL 乗算
【0691】
【表214】
【0692】アセンブラ構文 VMUL.dt VRc,VRd,VRa,VRb VMUL.dt SRc,SRd,SRa,SRb ここで、dt={b,h,w}。
【0693】
【表215】
【0694】説明 Raの各エレメントをRbの各エレメントと乗算して倍
精度の結果を生成し、目的レジスタRc:Rdに各エレ
メントの倍精度の和をリターンさせる。
【0695】RaとRbは指定されたデータタイプを使
用し、一方Rc:Rdは適宜な倍精度データタイプを使
用する(それぞれint8,int16,及びint3
2に対して16,32,及び64ビット)、各倍精度エ
レメントの上位部分はRcに記憶される。
【0696】演算 例外 無し プログラミング注意 この命令はint9データタイプを支援せず、その代わ
りint16データタイプを使用する。また、この命令
は拡張された結果が支援されたデータタイプでないの
で、フロートデータタイプを支援しない。
【0697】VMULA アキュムレータ乗算
【0698】
【表216】
【0699】アセンブラ構文 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}。
【0700】
【表217】
【0701】説明 Raの各エレメントをRbの各エレメントと乗算して倍
精度中間結果を生成し、その結果をアキュムレータに記
録させる。
【0702】フロートデータタイプに対して全てのオペ
ランドと結果は単精度である。
【0703】演算 例外 無し プログラミング注意 この命令はint9データタイプを支援せず、その代わ
りint16データタイプを使用する。
【0704】VMULAF アキュムレータ小数部乗算
【0705】
【表218】
【0706】アセンブラ構文 VMULAF.dt VRa,VRb VMULAF.dt VRa,SRb VMULAF.dt VRa,#IMM VMULAF.dt SRa,SRb VMULAF.dt SRa,#IMM ここで、dt={b,h,w}。
【0707】
【表219】
【0708】説明 Raの各エレメントをRbの各エレメントと乗算して倍
精度中間結果を生成し、倍精度中間結果を1ビットだけ
左にシフトして、その結果をアキュムレータに記録させ
る。
【0709】 演算 for(i=0;i < NumElem && EMASK[i]:i++){ Bop[i]={VRb[i]‖SRb ‖sex(IMM<8:0>)}; VACH[i]:VACL[i]=(VRa[i] * Bop[i])<<1; } 例外 無し プログラミング注意 この命令はint9データタイプを支援せず、その代わ
りint16データタイプを使用する。
【0710】VMULF 小数部乗算
【0711】
【表220】
【0712】アセンブラ構文 VMULF.dt VRa,VRb VMULF.dt VRa,SRb VMULF.dt VRa,#IMM VMULF.dt SRa,SRb VMULF.dt SRa,#IMM ここで、dt={b,h,w}。
【0713】
【表221】
【0714】説明 Raの各エレメントをRbの各エレメントと乗算して倍
精度中間結果を生成し、倍精度中間結果を1ビットだけ
左にシフトして、その結果の上位部分を目的レジスタ
(VRd+1)にリターンし、その結果の下位部分を目
的レジスタVRdにリターンさせる。VRdは偶数番号
のレジスタでなければならない。
【0715】 演算 for(i=0;i < NumElem && EMASK[i];i++){ Bop[i]={VRb[i]‖SRb ‖sex(IMM<8:0>)}; Hi[i]:Lo[i]=(VRa[i] * Bop[i])<<1; VRd+1[i]=Hi[i]; VRd[i]=Lo[i]; } 例外 無し プログラミング注意 この命令はint9データタイプを支援せず、その代わ
りint16データタイプを使用する。
【0716】VMULFR 小数部乗算及び四捨五入
【0717】
【表222】
【0718】アセンブラ構文 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}。
【0719】
【表223】
【0720】説明 Raの各エレメントをRbの各エレメントと乗算して倍
精度中間結果を生成し、倍精度中間結果を1ビットだけ
左にシフトして、シフトされた中間結果を上位部分に対
して四捨五入し、上位部分を目的レジスタ(VRd)に
リターンさせる。
【0721】 演算 for(i=0;i < NumElem && EMASK[i]:i++){ Bop[i]={VRb[i]‖SRb ‖sex(IMM<8:0>)}; Hi[i]:Lo[i]=(VRa[i] * Bop[i])<<1; if(Lo[i]<msb>==1)Hi[i]=Hi[i]+1; VRd[i]=Hi[i]; } 例外 無し プログラミング注意 この命令はint9データタイプを支援せず、その代わ
りint16データタイプを使用する。
【0722】VMULL ロー乗算
【0723】
【表224】
【0724】アセンブラ構文 VMULL.dt VRd,VRa,VRb VMULL.dt VRd,VRa,SRb VMULL.dt VRd,VRa,#IMM VMULL.dt VRd,SRa,SRb VMULL.dt VRd,SRa,#IMM ここで、dt={b,h,w,f}。
【0725】
【表225】
【0726】説明 Raの各エレメントをRbの各エレメントと乗算して倍
精度中間結果を生成し、その結果の下位部分を目的レジ
スタVRdにリターンする。
【0727】フロートデータタイプに対して全てのオペ
ランドと結果は単精度である。
【0728】演算 例外 オーバフロー、浮動小数点無効オペランド プログラミング注意 この命令はint9データタイプを支援せず、その代わ
りint16データタイプを使用する。
【0729】VNAND NAND
【0730】
【表226】
【0731】アセンブラ構文 VNAND.dt VRd,VRa,VRb VNAND.dt VRd,VRa,SRb VNAND.dt VRd,VRa,#IMM VNAND.dt VRd,SRa,SRb VNAND.dt VRd,SRa,#IMM ここで、dt={b,h,w,f}、.wと.fが同一
の演算を指定することに留意されたい。
【0732】
【表227】
【0733】説明 Raにある各エレメントの各ビットとRb/即値オペラ
ンドにある対応するビットを論理的にNANDし、その
結果をRdにリターンさせる。
【0734】 演算 for(i=0;i < NumElem && EMASK[i];i++){ Bop[i]={VRb[i]‖SRb ‖sex(IMM<8:0>)}; Rd[i](k)=-(Ra[i]<k> & Bop[i]<k>,for k=all bits in element; } 例外 無しVNOR NOR
【0735】
【表228】
【0736】アセンブラ構文 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が同
一の演算を指定することに留意されたい。
【0737】
【表229】
【0738】説明 Raにある各エレメントの各ビットとRb/即値オペラ
ンドにある対応するビットを論理的にNORし、その結
果をRdにリターンさせる。
【0739】 演算 for(i=0;i < NumElem && EMASK[i];i++){ Bop[i]={VRb[i]‖SRb ‖sex(IMM<8:0>)}; Rd[i](k)=-(Ra[i]<k> 1 Bop[i]<k>,for k=all bits in element ; } 例外 無しVOR OR
【0740】
【表230】
【0741】アセンブラ構文 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が同
一の演算を指定することに留意されたい。
【0742】
【表231】
【0743】説明 Raにある各エレメントの各ビットとRb/即値オペラ
ンドにある対応するビットを論理的にORし、その結果
をRdにリターンさせる。
【0744】 演算 for(i=0;i < NumElem && EMASK[i];i++){ Bop[i]={VRb[i]‖SRb ‖sex(IMM<8:0>)}; Rd[i]<k>=-(Ra[i]<k> 1 Bop[i]<k>,for k=all bits in element ; } 例外 無しVORC 補数OR
【0745】
【表232】
【0746】アセンブラ構文 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が同
一の演算を指定することに留意されたい。
【0747】
【表233】
【0748】説明 Raにある各エレメントの各ビットとRb/即値オペラ
ンドにある対応するビットの補数を論理的にORし、そ
の結果をRdにリターンさせる。
【0749】 演算 for(i=0:i < NumElem && EMASK[i];i++){ Bop[i] ={VRb[i]‖SRb ‖sex(IMM<8.0>) }; Rd[i] <k> = Ra[i]<k>1−Bop[i]<k>.f
or k=all bits in element i: } 例外 無しVPFTCH 事前取出し
【0750】
【表234】
【0751】アセンブラ構文 VPFTCH.dt SRb,SRi VPFTCH.dt SRb,#IMM VPFTCH.dt SRb+,SRi VPFTCH.dt SRb+,#IMM ここで、ln={1,2,4,8}。
【0752】説明 有効アドレスから始める多数のベクトルデータキャッシ
ュラインを予め取り出す。キャッシュラインの数は次の
ように指定される: LN(1:0)=00:1つの64バイトキャッシュラ
インが予め取り出され。る LN(1:0)=01:2つの64バイトキャッシュラ
インが予め取り出される。
【0753】LN(1:0)=10:4つの64バイト
キャッシュラインが予め取り出される。
【0754】LN(1:0)=11:8つの64バイト
キャッシュラインが予め取り出される。
【0755】もし有効キャッシュラインが64バイトバ
ウンダリにない場合、それは64バイトバウンダリに整
列されるように先に打ち切られる。
【0756】演算 例外 データアドレス例外無効 プログラミング注意 EA(31:0)はローカルメモリのバイトアドレスを
示す。
【0757】VPFTCHSP 臨時パッドへの事前取出し
【0758】
【表235】
【0759】アセンブラ構文 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とV
PFTCHSPは同一の演算コードをもつ 説明 メモリから臨時パッドに多数の64バイトブロックを伝
送する。有効アドレスはメモリに開始アドレスを提供
し、SRpは臨時パッドに開始アドレスを提供する。6
4バイトブロックの数は次のように指定される。
【0760】LN(1:0)=00:1つの64バイト
ブロックが伝送される。
【0761】LN(1:0)=01:2つの64バイト
ブロックが伝送される。
【0762】LN(1:0)=10:4つの64バイト
ブロックが伝送される。
【0763】LN(1:0)=11:8つの64バイト
ブロックが伝送される。
【0764】もし有効キャッシュラインが64バイトバ
ウンダリになければ、それは64バイトバウンダリに整
列されるように先に打ち切られる。もしSRpの臨時パ
ッドポインタアドレスが64バイトバウンダリになけれ
ば、それはまた64バイトバウンダリに整列されるよう
に先に打ち切られる。整列された臨時パッドポインタア
ドレスは伝送されたバイト数だけ増分される。
【0765】演算 例外 データアドレス例外無効VROL 左への回転
【0766】
【表236】
【0767】アセンブラ構文 VROL.dt VRd,VRa,SRb VROL.dt VRd,VRa,#IMM VROL.dt VRd,SRa,SRb VROL.dt VRd,SRa,#IMM ここで、dt={b,b9,h,w}。
【0768】
【表237】
【0769】説明 ベクトル/スカラレジスタRaの各データエレメントは
スカラレジスタRb或いはIMMフィールドに与えられ
たビット量だけ左に回転され、その結果はベクトル/ス
カラレジスタRdに記憶される。
【0770】演算 例外 なし プログラミング注意 回転量はSRb或いはIMM(4:0)から5ビット番
号で得られる点に注意されたい。バイト、バイト9、ハ
フワードデータタイプに対してプログラマはデータサイ
ズのビット数より小さいか同一の回転量を正確に指定す
る義務がある。もし回転量が指定されたデータサイズよ
りさらい大きければ、結果は定義されない。nだけ左に
回転することはElemSize−nだけ右に回転する
のと等しく、ここでElemSizeは与えられたデー
タサイズのビットの番号を示す。
【0771】VROR 右への回転
【0772】
【表238】
【0773】アセンブラ構文 VROR.dt VRd,VRa,SRb VROR.dt VRd,VRa,#IMM VROR.dt VRd,SRa,SRb VROR.dt VRd,SRa,#IMM ここで、dt={b,b9,h,w}。
【0774】
【表239】
【0775】説明 ベクトル/スカラレジスタRaの各データエレメントは
スカラレジスタRb或いはIMMフィールドに与えられ
たビット量だけ右に回転され、その結果はベクトル/ス
カラレジスタRdに記憶される。
【0776】演算 例外 なし プログラミング注意 回転量はSRb或いはIMM(4:0)から5ビット番
号で得られる点に注意されたい。バイト、バイト9、ハ
フワードデータタイプに対してプログラマはデータサイ
ズのビット数より小さいか同一の回転量を正確に指定す
る義務がある。もし回転量が指定されたデータサイズよ
りさらい大きければ、結果は定義されない。nだけ右に
回転することはElemSize−nだけ左に回転する
のと等しく、ここでElemSizeは与えられたデー
タサイズのビットの番号を示す。
【0777】VROUND 浮動小数点を整数に四捨五入する
【0778】
【表240】
【0779】アセンブラ構文 VROUND.rm VRd,VRb VROUND.rm SRd,SRb ここで、rm={ninf,zero,near,pi
nf}。
【0780】
【表241】
【0781】説明 浮動小数点データフォーマットでベクトル/スカラレジ
スタRbの内容は一番近い32ビット整数(ワード)に
四捨五入され、その結果はベクトル/スカラレジスタR
dに記憶される。四捨五入モードはRMに定義される。
【0782】
【表242】
【0783】演算 例外 無し プログラミング注意 この命令はエレメントマスクに影響を受けない。
【0784】VSATL 下限境界への飽和
【0785】
【表243】
【0786】アセンブラ構文 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ビット即値で支援されないことに留意された
い。
【0787】
【表244】
【0788】説明 ベクトル/スカラレジスタRaの各データエレメントは
ベクトル/スカラレジスタRb或いはIMMフィールド
にあるそれの対応する下限値に対してチェックされる。
もしデータエレメントの値が下限値よりさらに小さけれ
ば、それは下限値と同一に設定され、最終結果はベクト
ル/スカラレジスタRdに記憶される。
【0789】演算 例外 無しVSATU 上限境界への飽和
【0790】
【表245】
【0791】アセンブラ構文 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ビット即値で支援されないことに留意された
い。
【0792】
【表246】
【0793】説明 ベクトル/スカラレジスタRaの各データエレメントは
ベクトル/スカラレジスタRb或いはIMMフィールド
にあるそれの対応する上限値に対してチェックされる。
もしデータエレメントの値が上限値よりさらに小さけれ
ば、それは上限値と同一に設定され、最終結果はベクト
ル/スカラレジスタRdに記憶される。
【0794】演算 例外 無しVSHFL シャフル(shuffle)
【0795】
【表247】
【0796】アセンブラ構文 VSHFL.dt VRc,VRd,VRa,VRb VSHFL.dt VRc,VRd,VRa,SRb ここで、dt={b,b9,h,w}、.wと.fが同
一の演算を指定することに留意されたい。
【0797】
【表248】
【0798】説明 ベクトルレジスタRaの内容は下記に示すようにRbと
混ぜられて(shuffle)、その結果はベクトルレジスタR
c:Rdに記憶される。
【0799】
【表249】
【0800】演算 例外 無し プログラミング注意 この命令はエレメントアスクを使用しない。
【0801】VSHFLH ハイシャフル
【0802】
【表250】
【0803】アセンブラ構文 VSHFLH.dt VRd,VRa,VRb VSHFLH.dt VRd,VRa,SRb ここで、dt={b,b9,h,w}、.wと.fが同
一の演算を指定することに留意されたい。
【0804】
【表251】
【0805】説明 ベクトルレジスタRaの内容は下記に示すようにRbと
混ぜられて(shuffle)、その結果の上位部分はベクトル
レジスタRdに記憶される。
【0806】
【表252】
【0807】演算 例外 無し プログラミング注意 この命令はエレメントマスクを使用しない。
【0808】VSHFLL ローシャフル
【0809】
【表253】
【0810】アセンブラ構文 VSHFLL.dt VRd,VRa,VRb VSHFLL.dt VRd,VRa,SRb ここで、dt={b,b9,h,w,f}、.wと.f
が同一の演算を指定することに留意されたい。
【0811】
【表254】
【0812】説明 ベクトルレジスタRaの内容は下記に示すようにRbと
混ぜられて(shuffle)、その結果の下位部分はベクトル
レジスタRdに記憶される。
【0813】
【表255】
【0814】演算 例外 無し プログラミング注意 この命令はエレメントマスクを使用しない。
【0815】VST 記憶
【0816】
【表256】
【0817】アセンブラ構文 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,SR
s}、.bと.b9tは同一の演算が指定され、.64
とVRAsは共に指定され得ない点に留意されたい。キ
ャッシュオフ記憶のためにVSTOFFを使用する。
【0818】説明 ベクトルまたはスカラレジスタを記憶する。
【0819】演算 EA= SRb + {SRi ‖ sex(IMM<7:0>)}; if(A==1)SRb =EA; MEM[EA] = see table belo
w;
【0820】
【表257】
【0821】例外 データアドレス、非整列アクセス無効 プログラミング注意 この命令はエレメントマスクによって影響を受けない。
【0822】VSTCB 円形バッファによる記憶
【0823】
【表258】
【0824】アセンブラ構文 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,SR
s}、.bと.b9tは同一の演算が指定され、.64
とVRAdは共に指定され得ない点に留意されたい。キ
ャッシュオフロードのためにVSTCBOFFを使用す
る。
【0825】説明 SRb+1でBEGINポインタ、SRb+2でEND
ポインタによって境界になった円形バッファからベクト
ルまたはスカラレジスタを記憶する。
【0826】有効アドレスはもしそれが記憶のみならず
アドレスアップデート演算以前のENDアドレスよりさ
らに大きければ、調整される。さらに円形バッファ境界
はそれぞれ.hと.wスカラロードに対してハフワード
及びワード境界に整列されるべきである。
【0827】演算 EA =SRb + {SRi ‖ sex(IMM<7:0>)}; BEGIN = SRb+1; END = SRb+2; cbsize = END - BEGIN; if(EA > END)EA = BEGIN+(E
A − END); if(A==1)SR= EA; MEM[EA] = see table belo
w;
【0828】
【表259】
【0829】例外 データアドレス、非整列アクセス無効 プログラミング注意 この命令はエレメントマスクによって影響を受けない。
プログラマはこの命令が案の通りに動作するように次の
条件を保障すべきである: BEGIN<EA<2* END−BEGIN 即ち、EA>BEGIN及びEA−END<END−B
EGINVSTD ダブル記憶
【0830】
【表260】
【0831】アセンブラ構文 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,SR
s}、.bと.b9tは同一の演算が指定され、.64
とVRAsは共に指定され得ない点に留意されたい。キ
ャッシュオフ記憶のためにVSTDOFFを使用する。
【0832】説明 現在或いは交替バンク或いは2スカラレジスタから2ベ
クトルレジスタを記憶する。
【0833】演算 EA =SRb + {SRi ‖ sex(IMM<7:0>)}; if(A==1)SR= EA; MEM[EA] = see table belo
w;
【0834】
【表261】
【0835】例外 データアドレス、非整列アクセス無効 プログラミング注意 この命令はエレメントマスクによって影響を受けない。
【0836】VSTQ 4重記憶
【0837】
【表262】
【0838】アセンブラ構文 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,SR
s}、.bと.b9tは同一の演算が指定され、.64
とVRAsは共に指定され得ない点に留意されたい。キ
ャッシュオフ記憶のためにVSTQOFFを使用する。
【0839】説明 現在或いは交替バンク或いは4スカラレジスタから4ベ
クトルレジスタを記憶する。
【0840】演算 EA =SRb + {SRi ‖ sex(IMM<7:0>)}; if(A==1)SR= EA; MEM[EA] = see table belo
w;
【0841】
【表263】
【0842】例外 データアドレス、非整列アクセス無効 プログラミング注意 この命令はエレメントマスクによって影響を受けない。
【0843】VSTR 逆順記憶
【0844】
【表264】
【0845】アセンブラ構文 VSTR.st Rs,SRb,SRi VSTR.st Rs,SRb,#IMM VSTR.st RS,SRb+,SRi VSTR.st Rs,SRb+,#IMM ここで、st={b,b9t,h,w,4,8,16,
32,64},Rs={VRs,VRAs,SR
s}、.64とVRAdは一緒に指定され得ない点に留
意されたい。キャッシュオフ記憶のためにVSTROF
Fを使用する。
【0846】説明 逆エレメント順序でベクトルレジスタを記憶する。この
命令はスカラデータソースレジスタを支援しない。
【0847】演算 EA =SRb + {SRi ‖ sex(IMM<7:0>)}; if(A==1)SRb = EA; MEM[EA] = see table below;
【0848】
【表265】
【0849】例外 データアドレス、非整列アクセス無効 プログラミング注意 この命令はエレメントマスクによって影響を受けない。
【0850】VSTWS ストライド記憶
【0851】
【表266】
【0852】アセンブラ構文 VSTWS.st Rs,SRb,SRi VSTWS.st Rs,SRb,#IMM VSTWS.st RS,SRb+,SRi VSTWS.st Rs,SRb+,#IMM ここで、st={4,8,16,32},Rs={VR
s,VRAs}、.64モードは支援されず、その代わ
りVSTを使用することに留意されたい。キャッシュオ
フ記憶のためにVSTWSOFFを使用する。
【0853】説明 有効アドレスから始めてストライド制御レジスタ(Strid
e Control Register)としてスカラレジスタSRb+1
を使用してベクトルレジスタVRsからメモリに32バ
イトが記憶される。
【0854】STは各ブロックから記憶のために連続し
たバイトの番号とブロックサイズを指定する。SRb+
1は2連続ブロックの始まりを分離するバイトの番号と
ストライドを指定する。
【0855】ストライドはブロックサイズと同一か或い
は大きくなければならない。EAは整列されたデータサ
イズでなければならない。ストライドとブロックサイズ
はデータサイズの多数倍になるべきである。
【0856】 演算 EA= SRb + {SRi ‖ sex(IMM<7:0>)}; if(A==1) SR b =EA; Block size= {4 ‖ 8 ‖ 16 ‖ 32 }; Stride = SRb+1<31:0>; for(i=0;j < VECSIZE/Block size;i++) for(j=0;j < Block size;j++) BYTE{EA+i* Stride+j] = VRs [i* Block size+j]<7:0>; 例外 データアドレス、非整列アクセス無効VSUB 減算
【0857】
【表267】
【0858】アセンブラ構文 VSUB.st VRd,VRa,VRb VSUB.st VRd,VRa,SRb VSUB.st VRd,VRa,#IMM VSUB.st SRd,SRa,SRb VSUB.st SRd,SRa,#IMM ここで、st={b,b9t,h,w,f}
【0859】
【表268】
【0860】説明 ベクトル/スカラレジスタRbの内容はベクトル/スカ
ラレジスタRaの内容から減算され、その結果はベクト
ル/スカラレジスタRdに記憶される。
【0861】演算 例外 オーバフロー、浮動小数点無効オペランドVSUBS 減算及びセット
【0862】
【表269】
【0863】アセンブラ構文 VSUBS.dt SRd,SRa,SRb VSUBS.dt SRd,SRa,#IMM ここで、dt={b,b9,h,w,f}。
【0864】
【表270】
【0865】説明 SRbはSRaから減算され、その結果はSRdに記憶
され、VCSRにVFLAGビットがセットされる。
【0866】演算 Bop = {SRb ‖ sex(IMM<8:0>)}; SRd = SRa - Bop; VCSR<lt,eq,gt> = status(SRa - Bop); 例外 オーバフロー、浮動小数点無効オペランドVUNSHFL アンシャッフル
【0867】
【表271】
【0868】アセンブラ構文 VUNSHFL.dt VRc,VRd,VRa,VR
b VUNSHFL.dt VRc,VRd,VRa,SR
b ここで,dt={b、b9、h、w、f}。.wと.f
は同一な演算を指定することに注意する。
【0869】
【表272】
【0870】説明 ベクトルレジスタVRbの内容が次に示した通りベクト
ルレジスタVRc:VRdにRbとアンシャッフルされ
る。
【0871】
【表273】
【0872】演算 例外 無し。
【0873】プログラミング注意 この命令はエレメントマスクを使用しない。
【0874】VUNSHFLH ハイアンシャフル
【0875】
【表274】
【0876】アセンブラ構文 VUNSHFLH.dt VRd,VRa,VRb VUNSHFLH.dt VRd,VRa,SRb ここで、dt={b,b9,h,w,f}、.wと.f
が同一の演算を指定することに留意されたい。
【0877】
【表275】
【0878】説明 ベクトルレジスタRaの内容は下記に示すようにRbと
アンシャフル(unshuffle) され、その結果の上位部分は
ベクトルレジスタRdにリターンされる。
【0879】
【表276】
【0880】演算 例外 無し プログラミング注意この命令はエレメントマスクを使用
しない。
【0881】VUNSHFLL ローアンシャフル
【0882】
【表277】
【0883】アセンブラ構文 VUNSHFLL.dt VRd,VRa,VRb VUNSHFLL.dt VRd,VRa,SRb ここで、dt={b,b9,h,w,f}、.wと.f
が同一の演算を指定することに留意されたい。
【0884】
【表278】
【0885】説明 ベクトルレジスタRaの内容は下記に示すようにRbと
アンシャフル(unshuffle) され、その結果の上位部分は
ベクトルレジスタRdにリターンされる。
【0886】
【表279】
【0887】演算 例外 無し プログラミング注意 この命令はエレメントマスクを使用しない。
【0888】VWBACK 再記録
【0889】
【表280】
【0890】アセンブラ構文 VWBACK.ln SRb,SRi VWBACK.ln SRb,#IMM VWBACK.ln SRb+,SRi VWBACK.ln SRb+,#IMM ここで、ln={1,2,4,8}。
【0891】説明 ベクトルデータキャッシュでEAによってインデックス
が指定されたキャッシュライン(EAとタグが一致する
ものと反対)はそれが修正されたデータを含む場合、メ
モリにアップデートされる。もし1以上のキャッシュラ
インが指定される場合、次の順次的なキャッシュライン
はそれらが修正されたデータを含む場合、メモリにアッ
プデートされる。キャッシュラインの数は次のように指
定される: LN(1:0)=00:1つの64バイトキャッシュラ
インが記録される。
【0892】LN(1:0)=01:2つの64バイト
キャッシュラインが記録される。
【0893】LN(1:0)=10:4つの64バイト
キャッシュラインが記録される。
【0894】LN(1:0)=11:8つの64バイト
キャッシュラインが記録される。
【0895】もし有効アドレスが64バイトバウンダリ
になければ、それは64バイトバウンダリに整列される
ように先に打ち切られる。
【0896】演算 例外 データアドレス例外無効 プログラミング注意 EA(31:0)はローカルメモリのバイトアドレスを
示す。
【0897】VWBACKSP 臨時パッドからの再記録
【0898】
【表281】
【0899】アセンブラ構文 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とV
WBACKSPは同一の演算コードを使用する。
【0900】説明 臨時パッドからメモリに多数の64バイトブロックを伝
送する。有効アドレスはメモリに開始アドレスを提供
し、SRpは臨時パッドに開始アドレスを提供する。6
4バイトブロックの数は次のように指定される: LN(1:0)=00:1つの64バイトブロックが記
録される。
【0901】LN(1:0)=01:2つの64バイト
ブロックが記録される。
【0902】LN(1:0)=10:4つの64バイト
ブロックが記録される。
【0903】LN(1:0)=11:8つの64バイト
ブロックが記録される、もし有効アドレスが64バイト
バウンダリになければ、それは64バイトバウンダリに
整列されるように先に打ち切られる。もしSRpの臨時
パッドポインタアドレスが64バイトバウンダリになけ
れば、またそれは64バイトバウンダリに整列されるよ
うに先に打ち切られる。整列された臨時パッドポインタ
アドレスは伝送されたバイトの数だけ増分される。
【0904】演算 例外 データアドレス例外無効VXNOR XNOR(排他的NOR)
【0905】
【表282】
【0906】アセンブラ構文 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,f}。
【0907】
【表283】
【0908】説明 ベクトル/スカラレジスタRaの内容はベクトル/スカ
ラレジスタRbの内容に論理的にXNORされ、その結
果はベクトル/スカラレジスタRdに記憶される。
【0909】 演算 for(i=0:i < NumElem && EMASK[i];i++){ Bop[i] ={VRb[i]‖SRb ‖sex(IMM<8.0>) }; Rd[i]<K>=-(Ra[i]<k> ^Bop[i]<k>,for k =all bits in element i; } 例外 無しVXOR XOR(排他的OR)
【0910】
【表284】
【0911】アセンブラ構文 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}。
【0912】
【表285】
【0913】説明 ベクトル/スカラレジスタRaの内容はベクトル/スカ
ラレジスタRbの内容に論理的にXORされ、その結果
はベクトル/スカラレジスタRdに記憶される。
【0914】 演算 for(i=0:i < NumElem && EMASK[i];i++){ Bop[i] ={VRb[i]‖SRb ‖sex(IMM<8:0>) }; Rd[i]<k>=Ra[i]<k> ^Bop[i]<k>),for k =all bits in element i; } 例外 無しVXORALL 全てのエレメントXOR(排他的
OR)
【0915】
【表286】
【0916】アセンブラ構文 VXORALL.dt SRd,VRb ここで、dt={b,b9,h,w,f}、.bと.b
9は同一の演算を示す
【0917】
【表287】
【0918】説明 VRbで各エレメントの最下位ビットは共にXORさ
れ、1ビット結果はSRdの最下位ビットにリターンさ
れる。この命令はエレメントマスクによって影響を受け
ない。
【0919】演算 例外 無し
【図面の簡単な説明】
【図1】マルチメディアプロセッサにおけるベクトルプ
ロセッサのブロック図。
【図2】本発明の実施の形態によるマルチメディア信号
プロセッサのブロック図。
【図3】図1に示すベクトルプロセッサにおける命令取
出しユニットのブロック図。
【図4】図1に示すベクトルプロセッサにおける命令取
出しユニットのブロック図。
【図5】図1に示すベクトルプロセッサにおけるレジス
タ対レジスタ命令に対するステージ実行パイプラインを
示した段階図。
【図6】図1に示すベクトルプロセッサにおけるロード
命令の実行のための実行パイプラインを示した段階図。
【図7】図1に示すベクトルプロセッサにおける格納命
令語の実行のための実行パイプラインを示した段階図。
【図8】図1に示すベクトルプロセッサにおける実行デ
ータパスのブロック図。
【図9】図8に示す実行データパスにおけるレジスタフ
ァイルのブロック図。
【図10】図8に示す実行データパスにおける並列処理
論理ユニットのブロック図。
【図11】図2に示すベクトルプロセッサにおけるロー
ド/記憶ユニットブロック図。
【図12】本発明の実施の形態によるベクトルプロセッ
サの命令セットのフォーマット図。
【符号の説明】
100 マルチメディアプロセッサ 105 プロセッシングコア 110 主プロセッサ 115 拡張レジスタ 120 ベクトルプロセッサ 130 キャッシュサブレジスタ 140 システムバス 142 システムタイマ 144 全二重UART 146 ビットストリームプロセッサ 148 インタラプトコントローラ 150 システムバス 152 デバイスインタフェース 154 DMAコントローラ 156 ローカルバスコントローラ 158 メモリコントローラ 160,190 SRAM 162,192 命令キャッシュ 164,194 データキャッシュ 170 ROM 180 キャッシュコントロール 210 命令取出しユニット(IFU) 220 デコーダ 230 スケジューラ 240 実行データパス 250 ロード/記憶ユニット(LSU) 610 レジスタファイル

Claims (6)

    【特許請求の範囲】
  1. 【請求項1】 ベクトルレジスタを含むレジスタファイ
    ルと、 命令を復号化する間レジスタファイルから選択されたベ
    クトルレジスタを識別し、命令を実行する間処理される
    データエレメントに対するサイズを識別するデコーダ
    と、 ベクトルレジスタに接続された処理回路とから構成さ
    れ、前記処理回路は命令の実行時、選択されたベクトル
    レジスタのデータに対する多数回の並列演算を行い、並
    列演算の数はデータエレメントのサイズによって制御さ
    れることを特徴とするベクトルプロセッサ。
  2. 【請求項2】 各ベクトルレジスタは固定サイズをもっ
    ていることを特徴とする請求項1記載のベクトルプロセ
    ッサ。
  3. 【請求項3】 デコーダの識別可能なサイズは8ビッ
    ト、9ビット、16ビット、及び32ビットであること
    を特徴とする請求項1記載のベクトルプロセッサ。
  4. 【請求項4】 命令を復号化する間、デコーダは命令の
    実行中に処理されるデータエレメントのタイプを識別す
    ることを特徴とする請求項1記載のベクトルプロセッ
    サ。
  5. 【請求項5】 デコーダの識別可能なタイプは整数と浮
    動小数点データ型であることを特徴とする請求項4記載
    のベクトルプロセッサ。
  6. 【請求項6】 ベクトルレジスタにデータを記憶する段
    階と、 ベクトルレジスタを識別するレジスタ番号とベクトルレ
    ジスタでデータエレメントに対するサイズを識別するサ
    イズフィールドとを含む命令を形成する段階と、 多数の並列演算を実行することにより命令を実行する段
    階とから構成され、それぞれの演算はベクトルレジスタ
    のデータエレメントに対応し、サイズフィールドは並列
    に実行される演算数を制御することを特徴とするベクト
    ルプロセッサの演算方法。
JP9222416A 1996-08-19 1997-08-19 マルチメディア信号プロセッサの単一命令多重データ処理 Pending JPH10134036A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US08/699,597 US6058465A (en) 1996-08-19 1996-08-19 Single-instruction-multiple-data processing in a multimedia signal processor
US08/699597 1996-08-19

Publications (1)

Publication Number Publication Date
JPH10134036A true JPH10134036A (ja) 1998-05-22

Family

ID=24810031

Family Applications (1)

Application Number Title Priority Date Filing Date
JP9222416A Pending JPH10134036A (ja) 1996-08-19 1997-08-19 マルチメディア信号プロセッサの単一命令多重データ処理

Country Status (7)

Country Link
US (2) US6058465A (ja)
JP (1) JPH10134036A (ja)
KR (1) KR100267091B1 (ja)
CN (1) CN1112635C (ja)
DE (1) DE19735350B4 (ja)
FR (1) FR2752630B1 (ja)
TW (2) TW358313B (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012128559A (ja) * 2010-12-14 2012-07-05 Fujitsu Ltd 演算処理装置
JP2015111421A (ja) * 2010-09-24 2015-06-18 インテル・コーポレーション ベクトル機能ユニット、方法、およびコンピューティングシステム
JP2015143993A (ja) * 2006-09-22 2015-08-06 インテル コーポレイション 文字列を処理するための命令及び論理回路

Families Citing this family (226)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7301541B2 (en) * 1995-08-16 2007-11-27 Microunity Systems Engineering, Inc. Programmable processor and method with wide operations
US6295599B1 (en) * 1995-08-16 2001-09-25 Microunity Systems Engineering System and method for providing a wide operand architecture
US5953241A (en) * 1995-08-16 1999-09-14 Microunity Engeering Systems, Inc. Multiplier array processing system with enhanced utilization at lower precision for group multiply and sum instruction
US5742840A (en) * 1995-08-16 1998-04-21 Microunity Systems Engineering, Inc. General purpose, multiple precision parallel operation, programmable media processor
US6643765B1 (en) * 1995-08-16 2003-11-04 Microunity Systems Engineering, Inc. Programmable processor with group floating point operations
US6786420B1 (en) 1997-07-15 2004-09-07 Silverbrook Research Pty. Ltd. Data distribution mechanism in the form of ink dots on cards
US6618117B2 (en) 1997-07-12 2003-09-09 Silverbrook Research Pty Ltd Image sensing apparatus including a microcontroller
US7110024B1 (en) 1997-07-15 2006-09-19 Silverbrook Research Pty Ltd Digital camera system having motion deblurring means
US6690419B1 (en) 1997-07-15 2004-02-10 Silverbrook Research Pty Ltd Utilising eye detection methods for image processing in a digital image camera
US6879341B1 (en) 1997-07-15 2005-04-12 Silverbrook Research Pty Ltd Digital camera system containing a VLIW vector processor
US6624848B1 (en) 1997-07-15 2003-09-23 Silverbrook Research Pty Ltd Cascading image modification using multiple digital cameras incorporating image processing
US6948794B2 (en) 1997-07-15 2005-09-27 Silverbrook Reserach Pty Ltd Printhead re-capping assembly for a print and demand digital camera system
US8489861B2 (en) * 1997-12-23 2013-07-16 Round Rock Research, Llc Split embedded DRAM processor
US6226738B1 (en) * 1997-08-01 2001-05-01 Micron Technology, Inc. Split embedded DRAM processor
US6760833B1 (en) 1997-08-01 2004-07-06 Micron Technology, Inc. Split embedded DRAM processor
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
US5933650A (en) * 1997-10-09 1999-08-03 Mips Technologies, Inc. Alignment and ordering of vector elements for single instruction multiple data processing
FR2770659A1 (fr) * 1997-10-31 1999-05-07 Sgs Thomson Microelectronics Processeur de traitement perfectionne
US6161166A (en) * 1997-11-10 2000-12-12 International Business Machines Corporation Instruction cache for multithreaded processor
WO1999048025A2 (en) 1998-03-18 1999-09-23 Koninklijke Philips Electronics N.V. Data processing device and method of computing the cosine transform of a matrix
US6041404A (en) * 1998-03-31 2000-03-21 Intel Corporation Dual function system and method for shuffling packed data elements
US6292815B1 (en) * 1998-04-30 2001-09-18 Intel Corporation Data conversion between floating point packed format and integer scalar format
US6247116B1 (en) 1998-04-30 2001-06-12 Intel Corporation Conversion from packed floating point data to packed 16-bit integer data in different architectural registers
US6282554B1 (en) 1998-04-30 2001-08-28 Intel Corporation Method and apparatus for floating point operations and format conversion operations
US6263426B1 (en) 1998-04-30 2001-07-17 Intel Corporation Conversion from packed floating point data to packed 8-bit integer data in different architectural registers
US6266769B1 (en) 1998-04-30 2001-07-24 Intel Corporation Conversion between packed floating point data and packed 32-bit integer data in different architectural registers
AUPP702098A0 (en) 1998-11-09 1998-12-03 Silverbrook Research Pty Ltd Image creation method and apparatus (ART73)
US6269435B1 (en) * 1998-09-14 2001-07-31 The Board Of Trustees Of The Leland Stanford Junior University System and method for implementing conditional vector operations in which an input vector containing multiple operands to be used in conditional operations is divided into two or more output vectors based on a condition vector
US7100026B2 (en) * 2001-05-30 2006-08-29 The Massachusetts Institute Of Technology System and method for performing efficient conditional vector operations for data parallel architectures involving both input and conditional vector values
US6487606B1 (en) * 1998-11-18 2002-11-26 Nortel Networks Limited System and method for delivering messages through a totem communications system
US7529907B2 (en) * 1998-12-16 2009-05-05 Mips Technologies, Inc. Method and apparatus for improved computer load and store operations
US7020879B1 (en) * 1998-12-16 2006-03-28 Mips Technologies, Inc. Interrupt and exception handling for multi-streaming digital processors
US6496902B1 (en) * 1998-12-31 2002-12-17 Cray Inc. Vector and scalar data cache for a vector multiprocessor
US6209078B1 (en) * 1999-03-25 2001-03-27 Lsi Logic Corporation Accelerated multimedia processor
US7506136B2 (en) * 1999-04-09 2009-03-17 Clearspeed Technology Plc Parallel data processing apparatus
US20080016318A1 (en) * 1999-04-09 2008-01-17 Dave Stuttard Parallel data processing apparatus
US7802079B2 (en) * 1999-04-09 2010-09-21 Clearspeed Technology Limited Parallel data processing apparatus
US20080008393A1 (en) * 1999-04-09 2008-01-10 Dave Stuttard Parallel data processing apparatus
US8169440B2 (en) * 1999-04-09 2012-05-01 Rambus Inc. Parallel data processing apparatus
US8171263B2 (en) 1999-04-09 2012-05-01 Rambus Inc. Data processing apparatus comprising an array controller for separating an instruction stream processing instructions and data transfer instructions
US20080184017A1 (en) * 1999-04-09 2008-07-31 Dave Stuttard Parallel data processing apparatus
US8174530B2 (en) 1999-04-09 2012-05-08 Rambus Inc. Parallel date processing apparatus
US7526630B2 (en) 1999-04-09 2009-04-28 Clearspeed Technology, Plc Parallel data processing apparatus
US20080007562A1 (en) * 1999-04-09 2008-01-10 Dave Stuttard Parallel data processing apparatus
US8762691B2 (en) 1999-04-09 2014-06-24 Rambus Inc. Memory access consolidation for SIMD processing elements using transaction identifiers
JP5285828B2 (ja) * 1999-04-09 2013-09-11 ラムバス・インコーポレーテッド 並列データ処理装置
US7966475B2 (en) 1999-04-09 2011-06-21 Rambus Inc. Parallel data processing apparatus
US7627736B2 (en) * 1999-04-09 2009-12-01 Clearspeed Technology Plc Thread manager to control an array of processing elements
US20070294510A1 (en) * 1999-04-09 2007-12-20 Dave Stuttard Parallel data processing apparatus
AUPQ056099A0 (en) 1999-05-25 1999-06-17 Silverbrook Research Pty Ltd A method and apparatus (pprint01)
JP2003505753A (ja) 1999-06-10 2003-02-12 ペーアーツェーテー インフォルマツィオーンステヒノロギー ゲゼルシャフト ミット ベシュレンクテル ハフツング セル構造におけるシーケンス分割方法
US6334180B1 (en) * 1999-06-27 2001-12-25 Sun Microsystems, Inc. Processor coupled by visible register set to modular coprocessor including integrated multimedia unit
US6983350B1 (en) 1999-08-31 2006-01-03 Intel Corporation SDRAM controller for parallel processor architecture
AU7098500A (en) * 1999-09-01 2001-03-26 Intel Corporation Branch instruction for processor
US7546444B1 (en) 1999-09-01 2009-06-09 Intel Corporation Register set used in multithreaded parallel processor architecture
US6574725B1 (en) * 1999-11-01 2003-06-03 Advanced Micro Devices, Inc. Method and mechanism for speculatively executing threads of instructions
US6532509B1 (en) 1999-12-22 2003-03-11 Intel Corporation Arbitrating command requests in a parallel multi-threaded processing system
US6694380B1 (en) 1999-12-27 2004-02-17 Intel Corporation Mapping requests from a processing unit that uses memory-mapped input-output space
US6591361B1 (en) 1999-12-28 2003-07-08 International Business Machines Corporation Method and apparatus for converting data into different ordinal types
US6307789B1 (en) 1999-12-28 2001-10-23 Intel Corporation Scratchpad memory
US6631430B1 (en) 1999-12-28 2003-10-07 Intel Corporation Optimizations to receive packet status from fifo bus
US6661794B1 (en) 1999-12-29 2003-12-09 Intel Corporation Method and apparatus for gigabit packet assignment for multithreaded packet processing
US6976095B1 (en) 1999-12-30 2005-12-13 Intel Corporation Port blocking technique for maintaining receive packet ordering for a multiple ethernet port switch
US7143401B2 (en) * 2000-02-17 2006-11-28 Elbrus International Single-chip multiprocessor with cycle-precise program scheduling of parallel execution
US6857061B1 (en) * 2000-04-07 2005-02-15 Nintendo Co., Ltd. Method and apparatus for obtaining a scalar value directly from a vector register
US6701424B1 (en) 2000-04-07 2004-03-02 Nintendo Co., Ltd. Method and apparatus for efficient loading and storing of vectors
US7343602B2 (en) * 2000-04-19 2008-03-11 Hewlett-Packard Development Company, L.P. Software controlled pre-execution in a multithreaded processor
US6615281B1 (en) * 2000-05-05 2003-09-02 International Business Machines Corporation Multi-node synchronization using global timing source and interrupts following anticipatory wait state
US7681018B2 (en) 2000-08-31 2010-03-16 Intel Corporation Method and apparatus for providing large register address space while maximizing cycletime performance for a multi-threaded register file set
US6728866B1 (en) * 2000-08-31 2004-04-27 International Business Machines Corporation Partitioned issue queue and allocation strategy
US8058899B2 (en) 2000-10-06 2011-11-15 Martin Vorbach Logic cell array and bus system
WO2002035856A2 (en) * 2000-10-20 2002-05-02 Bops, Inc. Methods and apparatus for efficient vocoder implementations
WO2002067137A1 (en) * 2001-02-01 2002-08-29 Honeywell International Inc. Vector and scalar signal processing
US20020103847A1 (en) * 2001-02-01 2002-08-01 Hanan Potash Efficient mechanism for inter-thread communication within a multi-threaded computer system
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
US7599981B2 (en) * 2001-02-21 2009-10-06 Mips Technologies, Inc. Binary polynomial multiplier
US7711763B2 (en) * 2001-02-21 2010-05-04 Mips Technologies, Inc. Microprocessor instructions for performing polynomial arithmetic operations
US9411532B2 (en) 2001-09-07 2016-08-09 Pact Xpp Technologies Ag Methods and systems for transferring data between a processing device and external devices
US9141390B2 (en) 2001-03-05 2015-09-22 Pact Xpp Technologies Ag Method of processing data with an array of data processors according to application ID
US9436631B2 (en) 2001-03-05 2016-09-06 Pact Xpp Technologies Ag Chip including memory element storing higher level memory data on a page by page basis
US9250908B2 (en) 2001-03-05 2016-02-02 Pact Xpp Technologies Ag Multi-processor bus and cache interconnection system
US9552047B2 (en) 2001-03-05 2017-01-24 Pact Xpp Technologies Ag Multiprocessor having runtime adjustable clock and clock dependent power supply
US7110440B2 (en) * 2001-03-14 2006-09-19 Mercury Computer Systems, Inc. Wireless communications systems and methods for multiple processor based multiple user detection
JP4529063B2 (ja) * 2001-03-30 2010-08-25 ルネサスエレクトロニクス株式会社 システムシミュレータ、シミュレーション方法及びシミュレーションプログラム
US6832338B2 (en) * 2001-04-12 2004-12-14 International Business Machines Corporation Apparatus, method and computer program product for stopping processors without using non-maskable interrupts
US10031733B2 (en) 2001-06-20 2018-07-24 Scientia Sol Mentis Ag Method for processing data
US7246220B1 (en) * 2001-07-27 2007-07-17 Magnum Semiconductor, Inc. Architecture for hardware-assisted context switching between register groups dedicated to time-critical or non-time critical tasks without saving state
US6868476B2 (en) 2001-08-27 2005-03-15 Intel Corporation Software controlled content addressable memory in a general purpose execution datapath
US7225281B2 (en) * 2001-08-27 2007-05-29 Intel Corporation Multiprocessor infrastructure for providing flexible bandwidth allocation via multiple instantiations of separate data buses, control buses and support mechanisms
CN1241106C (zh) * 2001-10-09 2006-02-08 佳能株式会社 打印装置及其控制方法
US7032215B2 (en) * 2001-10-11 2006-04-18 Intel Corporation Method and system for type demotion of expressions and variables by bitwise constant propagation
JP3496009B2 (ja) 2001-10-22 2004-02-09 キヤノン株式会社 記録装置及びその制御方法及びプログラム
US7818356B2 (en) * 2001-10-29 2010-10-19 Intel Corporation Bitstream buffer manipulation with a SIMD merge instruction
GB2382673B (en) * 2001-10-31 2005-10-26 Alphamosaic Ltd A vector processing system
US7158964B2 (en) * 2001-12-12 2007-01-02 Intel Corporation Queue management
US20030126520A1 (en) * 2001-12-31 2003-07-03 Globespanvirata System and method for separating exception vectors in a multiprocessor data processing system
US7895239B2 (en) 2002-01-04 2011-02-22 Intel Corporation Queue arrays in network devices
US7500240B2 (en) * 2002-01-15 2009-03-03 Intel Corporation Apparatus and method for scheduling threads in multi-threading processors
US6934951B2 (en) 2002-01-17 2005-08-23 Intel Corporation Parallel processor with functional pipeline providing programming engines by supporting multiple contexts and critical section
US7181594B2 (en) 2002-01-25 2007-02-20 Intel Corporation Context pipelines
US7610451B2 (en) * 2002-01-25 2009-10-27 Intel Corporation Data transfer mechanism using unidirectional pull bus and push bus
US20100274988A1 (en) * 2002-02-04 2010-10-28 Mimar Tibet Flexible vector modes of operation for SIMD processor
US7035331B2 (en) * 2002-02-20 2006-04-25 Intel Corporation Method and apparatus for performing a pixel averaging instruction
US9170812B2 (en) 2002-03-21 2015-10-27 Pact Xpp Technologies Ag Data processing system having integrated pipelined array data processor
US20110161977A1 (en) * 2002-03-21 2011-06-30 Martin Vorbach Method and device for data processing
US7937559B1 (en) 2002-05-13 2011-05-03 Tensilica, Inc. System and method for generating a configurable processor supporting a user-defined plurality of instruction sizes
US7346881B2 (en) * 2002-05-13 2008-03-18 Tensilica, Inc. Method and apparatus for adding advanced instructions in an extensible processor architecture
US7376812B1 (en) * 2002-05-13 2008-05-20 Tensilica, Inc. Vector co-processor for configurable and extensible processor architecture
US7793084B1 (en) 2002-07-22 2010-09-07 Mimar Tibet Efficient handling of vector high-level language conditional constructs in a SIMD processor
AU2003250575A1 (en) * 2002-08-07 2004-02-25 Mmagix Technology Limited Apparatus, method and system for a synchronicity independent, resource delegating, power and instruction optimizing processor
US7337275B2 (en) * 2002-08-13 2008-02-26 Intel Corporation Free list and ring data structure management
US6961888B2 (en) * 2002-08-20 2005-11-01 Flarion Technologies, Inc. Methods and apparatus for encoding LDPC codes
JP4388895B2 (ja) 2002-09-06 2009-12-24 ペーアーツェーテー イクスペーペー テクノロジーズ アクチエンゲゼルシャフト リコンフィギュアラブルなシーケンサ構造
US6978399B2 (en) * 2002-09-12 2005-12-20 International Business Machines Corporation Debug thread termination control points
US20040128485A1 (en) * 2002-12-27 2004-07-01 Nelson Scott R. Method for fusing instructions in a vector processor
US6941438B2 (en) 2003-01-10 2005-09-06 Intel Corporation Memory interleaving
US7126991B1 (en) * 2003-02-03 2006-10-24 Tibet MIMAR Method for programmable motion estimation in a SIMD processor
US20040193837A1 (en) * 2003-03-31 2004-09-30 Patrick Devaney CPU datapaths and local memory that executes either vector or superscalar instructions
US7392399B2 (en) 2003-05-05 2008-06-24 Sun Microsystems, Inc. Methods and systems for efficiently integrating a cryptographic co-processor
JP2006529043A (ja) * 2003-05-09 2006-12-28 サンドブリッジ テクノロジーズ インコーポレーテッド 飽和あり、または飽和なしで、オペランドの積和を実行するプロセッサ簡約ユニット
JP3855270B2 (ja) * 2003-05-29 2006-12-06 ソニー株式会社 アンテナ実装方法
JP4699685B2 (ja) * 2003-08-21 2011-06-15 パナソニック株式会社 信号処理装置及びそれを用いた電子機器
US7496921B2 (en) * 2003-08-29 2009-02-24 Intel Corporation Processing block with integrated light weight multi-threading support
US7739479B2 (en) 2003-10-02 2010-06-15 Nvidia Corporation Method for providing physics simulation data
US20050086040A1 (en) * 2003-10-02 2005-04-21 Curtis Davis System incorporating physics processing unit
US7895411B2 (en) * 2003-10-02 2011-02-22 Nvidia Corporation Physics processing unit
US7793072B2 (en) * 2003-10-31 2010-09-07 International Business Machines Corporation Vector execution unit to process a vector instruction by executing a first operation on a first set of operands and a second operation on a second set of operands
US8200945B2 (en) * 2003-11-07 2012-06-12 International Business Machines Corporation Vector unit in a processor enabled to replicate data on a first portion of a data bus to primary and secondary registers
GB2409060B (en) * 2003-12-09 2006-08-09 Advanced Risc Mach Ltd Moving data between registers of different register data stores
GB2409067B (en) * 2003-12-09 2006-12-13 Advanced Risc Mach Ltd Endianess compensation within a SIMD data processing system
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
GB2409063B (en) * 2003-12-09 2006-07-12 Advanced Risc Mach Ltd Vector by scalar operations
GB2409062C (en) * 2003-12-09 2007-12-11 Advanced Risc Mach Ltd Aliasing data processing registers
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
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
GB2409068A (en) * 2003-12-09 2005-06-15 Advanced Risc Mach Ltd Data element size control within parallel lanes of processing
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
GB2409065B (en) * 2003-12-09 2006-10-25 Advanced Risc Mach Ltd Multiplexing operations in SIMD 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
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
US7873812B1 (en) 2004-04-05 2011-01-18 Tibet MIMAR Method and system for efficient matrix multiplication in a SIMD processor architecture
US7302627B1 (en) * 2004-04-05 2007-11-27 Mimar Tibet Apparatus for efficient LFSR calculation in a SIMD processor
US20050251644A1 (en) * 2004-05-06 2005-11-10 Monier Maher Physics processing unit instruction set architecture
US8427490B1 (en) 2004-05-14 2013-04-23 Nvidia Corporation Validating a graphics pipeline using pre-determined schedules
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
GB0415851D0 (en) * 2004-07-15 2004-08-18 Imagination Tech Ltd Microprocessor output ports and control of instructions provided therefrom
US8624906B2 (en) 2004-09-29 2014-01-07 Nvidia Corporation Method and system for non stalling pipeline instruction fetching from memory
US7475001B2 (en) * 2004-11-08 2009-01-06 Nvidia Corporation Software package definition for PPU enabled system
KR100917067B1 (ko) * 2004-11-15 2009-09-15 엔비디아 코포레이션 비디오 처리
US8698817B2 (en) * 2004-11-15 2014-04-15 Nvidia Corporation Video processor having scalar and vector components
US7620530B2 (en) * 2004-11-16 2009-11-17 Nvidia Corporation System with PPU/GPU architecture
US7565279B2 (en) * 2005-03-07 2009-07-21 Nvidia Corporation Callbacks in asynchronous or parallel execution of a physics simulation
US7933405B2 (en) * 2005-04-08 2011-04-26 Icera Inc. Data access and permute unit
GB2426083A (en) * 2005-05-09 2006-11-15 Sony Comp Entertainment Europe Software emulation of a pipeline processor
US7650266B2 (en) * 2005-05-09 2010-01-19 Nvidia Corporation Method of simulating deformable object using geometrically motivated model
US7543136B1 (en) * 2005-07-13 2009-06-02 Nvidia Corporation System and method for managing divergent threads using synchronization tokens and program instructions that include set-synchronization bits
US7328330B2 (en) * 2005-08-16 2008-02-05 International Business Machines Corporation Queue design supporting dependency checking and issue for SIMD instructions within a general purpose processor
US9092170B1 (en) 2005-10-18 2015-07-28 Nvidia Corporation Method and system for implementing fragment operation processing across a graphics bus interconnect
US20070150904A1 (en) * 2005-11-15 2007-06-28 International Business Machines Corporation Multi-threaded polling in a processing environment
US7873953B1 (en) * 2006-01-20 2011-01-18 Altera Corporation High-level language code sequence optimization for implementing programmable chip designs
US8307196B2 (en) * 2006-04-05 2012-11-06 Freescale Semiconductor, Inc. Data processing system having bit exact instructions and methods therefor
US9223751B2 (en) * 2006-09-22 2015-12-29 Intel Corporation Performing rounding operations responsive to an instruction
US7627744B2 (en) * 2007-05-10 2009-12-01 Nvidia Corporation External memory accessing DMA request scheduling in IC of parallel processing engines according to completion notification queue occupancy level
DE102007025397B4 (de) * 2007-05-31 2010-07-15 Advanced Micro Devices, Inc., Sunnyvale System mit mehreren Prozessoren und Verfahren zu seinem Betrieb
US8683126B2 (en) * 2007-07-30 2014-03-25 Nvidia Corporation Optimal use of buffer space by a storage controller which writes retrieved data directly to a memory
US20090049323A1 (en) * 2007-08-14 2009-02-19 Imark Robert R Synchronization of processors in a multiprocessor system
US9024957B1 (en) 2007-08-15 2015-05-05 Nvidia Corporation Address independent shader program loading
US8659601B1 (en) 2007-08-15 2014-02-25 Nvidia Corporation Program sequencer for generating indeterminant length shader programs for a graphics processor
US8411096B1 (en) 2007-08-15 2013-04-02 Nvidia Corporation Shader program instruction fetch
US8698819B1 (en) 2007-08-15 2014-04-15 Nvidia Corporation Software assisted shader merging
US9064333B2 (en) 2007-12-17 2015-06-23 Nvidia Corporation Interrupt handling techniques in the rasterizer of a GPU
US8780123B2 (en) * 2007-12-17 2014-07-15 Nvidia Corporation Interrupt handling techniques in the rasterizer of a GPU
CN101216756B (zh) * 2007-12-28 2011-03-23 中国科学院计算技术研究所 一种risc处理器装置及其模拟浮点栈操作的方法
US8923385B2 (en) 2008-05-01 2014-12-30 Nvidia Corporation Rewind-enabled hardware encoder
US8681861B2 (en) * 2008-05-01 2014-03-25 Nvidia Corporation Multistandard hardware video encoder
US8102884B2 (en) * 2008-10-15 2012-01-24 International Business Machines Corporation Direct inter-thread communication buffer that supports software controlled arbitrary vector operand selection in a densely threaded network on a chip
US8489851B2 (en) * 2008-12-11 2013-07-16 Nvidia Corporation Processing of read requests in a memory controller using pre-fetch mechanism
GB0909701D0 (en) * 2009-06-08 2009-07-22 Young Arthur P Testing completion of concurrent logical operations
US20110055838A1 (en) * 2009-08-28 2011-03-03 Moyes William A Optimized thread scheduling via hardware performance monitoring
US9092213B2 (en) 2010-09-24 2015-07-28 Intel Corporation Functional unit for vector leading zeroes, vector trailing zeroes, vector operand 1s count and vector parity calculation
US20120110303A1 (en) * 2010-10-28 2012-05-03 International Business Machines Corporation Method for Process Synchronization of Embedded Applications in Multi-Core Systems
CN102012803B (zh) * 2010-11-25 2014-09-10 中国人民解放军国防科学技术大学 支持多宽度simd和多粒度simt的可配置矩阵寄存器单元
US8423343B2 (en) * 2011-01-24 2013-04-16 National Tsing Hua University High-parallelism synchronization approach for multi-core instruction-set simulation
US9411585B2 (en) 2011-09-16 2016-08-09 International Business Machines Corporation Multi-addressable register files and format conversions associated therewith
US9727336B2 (en) * 2011-09-16 2017-08-08 International Business Machines Corporation Fine-grained instruction enablement at sub-function granularity based on an indicated subrange of registers
CN108241504A (zh) 2011-12-23 2018-07-03 英特尔公司 经改进的提取指令的装置和方法
CN111831335A (zh) 2011-12-23 2020-10-27 英特尔公司 经改进的插入指令的装置和方法
WO2013095648A1 (en) * 2011-12-23 2013-06-27 Intel Corporation Three input operand vector add instruction that does not raise arithmetic flags for cryptographic applications
US9946540B2 (en) 2011-12-23 2018-04-17 Intel Corporation Apparatus and method of improved permute instructions with multiple granularities
US9632980B2 (en) 2011-12-23 2017-04-25 Intel Corporation Apparatus and method of mask permute instructions
CN107391086B (zh) 2011-12-23 2020-12-08 英特尔公司 改进置换指令的装置和方法
EP2798429A4 (en) * 2011-12-30 2016-07-27 Intel Corp RECONFIGURABLE DEVICE FOR REPOSITIONING DATA IN A DATA WORD
US10289412B2 (en) * 2012-02-09 2019-05-14 Qualcomm Incorporated Floating point constant generation instruction
US20130227238A1 (en) * 2012-02-28 2013-08-29 Thomas VIJVERBERG Device and method for a time and space partitioned based operating system on a multi-core processor
JP5900061B2 (ja) * 2012-03-19 2016-04-06 富士通株式会社 試験方法、試験装置及びプログラム
US9436475B2 (en) * 2012-11-05 2016-09-06 Nvidia Corporation System and method for executing sequential code using a group of threads and single-instruction, multiple-thread processor incorporating the same
US9804839B2 (en) * 2012-12-28 2017-10-31 Intel Corporation Instruction for determining histograms
US20140289498A1 (en) * 2013-03-19 2014-09-25 Apple Inc. Enhanced macroscalar vector operations
US9817663B2 (en) * 2013-03-19 2017-11-14 Apple Inc. Enhanced Macroscalar predicate operations
US20140289502A1 (en) * 2013-03-19 2014-09-25 Apple Inc. Enhanced vector true/false predicate-generating instructions
US20140289497A1 (en) * 2013-03-19 2014-09-25 Apple Inc. Enhanced macroscalar comparison operations
US9477477B2 (en) * 2014-01-22 2016-10-25 Nvidia Corporation System, method, and computer program product for executing casting-arithmetic instructions
US9772849B2 (en) 2014-11-14 2017-09-26 Intel Corporation Four-dimensional morton coordinate conversion processors, methods, systems, and instructions
US9772850B2 (en) * 2014-11-14 2017-09-26 Intel Corporation Morton coordinate adjustment processors, methods, systems, and instructions
US9772848B2 (en) 2014-11-14 2017-09-26 Intel Corporation Three-dimensional morton coordinate conversion processors, methods, systems, and instructions
CN105808497B (zh) * 2014-12-30 2018-09-21 华为技术有限公司 一种数据处理方法
US11544214B2 (en) * 2015-02-02 2023-01-03 Optimum Semiconductor Technologies, Inc. Monolithic vector processor configured to operate on variable length vectors using a vector length register
US11847427B2 (en) * 2015-04-04 2023-12-19 Texas Instruments Incorporated Load store circuit with dedicated single or dual bit shift circuit and opcodes for low power accelerator processor
US9817791B2 (en) 2015-04-04 2017-11-14 Texas Instruments Incorporated Low energy accelerator processor architecture with short parallel instruction word
US9952865B2 (en) 2015-04-04 2018-04-24 Texas Instruments Incorporated Low energy accelerator processor architecture with short parallel instruction word and non-orthogonal register data file
US20170177354A1 (en) * 2015-12-18 2017-06-22 Intel Corporation Instructions and Logic for Vector-Based Bit Manipulation
US10503474B2 (en) 2015-12-31 2019-12-10 Texas Instruments Incorporated Methods and instructions for 32-bit arithmetic support using 16-bit multiply and 32-bit addition
US10401412B2 (en) 2016-12-16 2019-09-03 Texas Instruments Incorporated Line fault signature analysis
US10564989B2 (en) * 2017-11-28 2020-02-18 Microsoft Technology Licensing Thread independent parametric positioning for rendering elements
US10424041B2 (en) 2017-12-11 2019-09-24 Microsoft Technology Licensing, Llc Thread independent scalable vector graphics operations
CN108984426B (zh) * 2018-08-03 2021-01-26 北京字节跳动网络技术有限公司 用于处理数据的方法和装置
US11366663B2 (en) 2018-11-09 2022-06-21 Intel Corporation Systems and methods for performing 16-bit floating-point vector dot product instructions
EP4095704B1 (en) * 2021-05-26 2023-08-23 STMicroelectronics Application GmbH Processing system, related integrated circuit, device and method
CN113741567B (zh) * 2021-11-08 2022-03-29 广东省新一代通信与网络创新研究院 矢量加速器及其控制方法、装置
CN115167933B (zh) * 2022-09-08 2022-12-02 深圳市恒运昌真空技术有限公司 一种双处理器设备及其控制方法和处理器

Family Cites Families (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5975365A (ja) * 1982-10-22 1984-04-28 Hitachi Ltd ベクトル処理装置
JPS60134974A (ja) * 1983-12-23 1985-07-18 Hitachi Ltd ベクトル処理装置
CA1233260A (en) * 1985-03-13 1988-02-23 Chuck H. Ngai High performance parallel vector processor having a modified vector register/element processor configuration
CN85106496A (zh) * 1985-08-29 1987-04-29 日本电气株式会社 向量处理系统
JPH0622035B2 (ja) * 1985-11-13 1994-03-23 株式会社日立製作所 ベクトル処理装置
US4916657A (en) * 1985-12-12 1990-04-10 Alcatel Usa, Corp. Single instruction multiple data (SIMD) cellular array processing apparatus employing multiple state logic for coupling to data buses
US5146592A (en) * 1987-09-14 1992-09-08 Visual Information Technologies, Inc. High speed image processing computer with overlapping windows-div
JPH02291073A (ja) * 1989-04-19 1990-11-30 Koufu Nippon Denki Kk ベクトルデータ処理装置
US5001662A (en) * 1989-04-28 1991-03-19 Apple Computer, Inc. Method and apparatus for multi-gauge computation
US5327541A (en) * 1989-10-13 1994-07-05 Texas Instruments Inc. Global rotation of data in synchronous vector processor
JP2526691B2 (ja) * 1990-03-02 1996-08-21 三菱電機株式会社 プログラマブルコントロ―ラの制御方法
JP2651267B2 (ja) * 1990-07-26 1997-09-10 富士通株式会社 演算処理装置及び演算処理方法
JP2791236B2 (ja) * 1991-07-25 1998-08-27 三菱電機株式会社 プロトコル並列処理装置
US5218211A (en) * 1991-10-23 1993-06-08 The United States Of America As Represented By The Secretary Of Commerce System for sampling the sizes, geometrical distribution, and frequency of small particles accumulating on a solid surface
FR2693287B1 (fr) * 1992-07-03 1994-09-09 Sgs Thomson Microelectronics Sa Procédé pour effectuer des calculs numériques, et unité arithmétique pour la mise en Óoeuvre de ce procédé.
US5361385A (en) * 1992-08-26 1994-11-01 Reuven Bakalash Parallel computing system for volumetric modeling, data processing and visualization
EP0651321B1 (en) * 1993-10-29 2001-11-14 Advanced Micro Devices, Inc. Superscalar microprocessors
US5495588A (en) * 1993-11-18 1996-02-27 Allen-Bradley Company, Inc. Programmable controller having joined relay language processor and general purpose processor
DE69424626T2 (de) * 1993-11-23 2001-01-25 Hewlett Packard Co Parallele Datenverarbeitung in einem Einzelprozessor
DE69519449T2 (de) * 1994-05-05 2001-06-21 Conexant Systems Inc Raumzeigersdatenpfad
US5706478A (en) * 1994-05-23 1998-01-06 Cirrus Logic, Inc. Display list processor for operating in processor and coprocessor modes
US5832290A (en) * 1994-06-13 1998-11-03 Hewlett-Packard Co. Apparatus, systems and method for improving memory bandwidth utilization in vector processing systems
US5513366A (en) * 1994-09-28 1996-04-30 International Business Machines Corporation Method and system for dynamically reconfiguring a register file in a vector processor
US5689653A (en) * 1995-02-06 1997-11-18 Hewlett-Packard Company Vector memory operations
US5706514A (en) * 1996-03-04 1998-01-06 Compaq Computer Corporation Distributed execution of mode mismatched commands in multiprocessor computer systems

Cited By (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9720692B2 (en) 2006-09-22 2017-08-01 Intel Corporation Instruction and logic for processing text strings
JP2015143992A (ja) * 2006-09-22 2015-08-06 インテル コーポレイション 文字列を処理するための命令及び論理回路
US11537398B2 (en) 2006-09-22 2022-12-27 Intel Corporation Instruction and logic for processing text strings
US9740490B2 (en) 2006-09-22 2017-08-22 Intel Corporation Instruction and logic for processing text strings
US9740489B2 (en) 2006-09-22 2017-08-22 Intel Corporation Instruction and logic for processing text strings
US9448802B2 (en) 2006-09-22 2016-09-20 Intel Corporation Instruction and logic for processing text strings
US9495160B2 (en) 2006-09-22 2016-11-15 Intel Corporation Instruction and logic for processing text strings
US9632784B2 (en) 2006-09-22 2017-04-25 Intel Corporation Instruction and logic for processing text strings
US9645821B2 (en) 2006-09-22 2017-05-09 Intel Corporation Instruction and logic for processing text strings
US9703564B2 (en) 2006-09-22 2017-07-11 Intel Corporation Instruction and logic for processing text strings
JP2015143993A (ja) * 2006-09-22 2015-08-06 インテル コーポレイション 文字列を処理するための命令及び論理回路
US11029955B2 (en) 2006-09-22 2021-06-08 Intel Corporation Instruction and logic for processing text strings
JP2015143991A (ja) * 2006-09-22 2015-08-06 インテル コーポレイション 文字列を処理するための命令及び論理回路
US9772847B2 (en) 2006-09-22 2017-09-26 Intel Corporation Instruction and logic for processing text strings
US9772846B2 (en) 2006-09-22 2017-09-26 Intel Corporation Instruction and logic for processing text strings
US9804848B2 (en) 2006-09-22 2017-10-31 Intel Corporation Instruction and logic for processing text strings
US10261795B2 (en) 2006-09-22 2019-04-16 Intel Corporation Instruction and logic for processing text strings
US10929131B2 (en) 2006-09-22 2021-02-23 Intel Corporation Instruction and logic for processing text strings
US11023236B2 (en) 2006-09-22 2021-06-01 Intel Corporation Instruction and logic for processing text strings
JP2015111421A (ja) * 2010-09-24 2015-06-18 インテル・コーポレーション ベクトル機能ユニット、方法、およびコンピューティングシステム
JP2012128559A (ja) * 2010-12-14 2012-07-05 Fujitsu Ltd 演算処理装置

Also Published As

Publication number Publication date
US5978838A (en) 1999-11-02
CN1180864A (zh) 1998-05-06
CN1112635C (zh) 2003-06-25
FR2752630B1 (fr) 2004-11-05
DE19735350B4 (de) 2006-12-07
KR100267091B1 (ko) 2000-11-01
TW358313B (en) 1999-05-11
DE19735350A1 (de) 1998-03-12
FR2752630A1 (fr) 1998-02-27
TW366455B (en) 1999-08-11
US6058465A (en) 2000-05-02
KR19980018070A (ko) 1998-06-05

Similar Documents

Publication Publication Date Title
JPH10134036A (ja) マルチメディア信号プロセッサの単一命令多重データ処理
KR100236527B1 (ko) 벡터 레지스터의 복수 뱅크를 사용한 단일 명령복수 데이터 처 리
EP0927393B1 (en) Digital signal processing integrated circuit architecture
JP2835103B2 (ja) 命令指定方法及び命令実行方式
US5901301A (en) Data processor and method of processing data
EP0901071B1 (en) Methods for interfacing a processor to a coprocessor
US7487338B2 (en) Data processor for modifying and executing operation of instruction code according to the indication of other instruction code
US5881257A (en) Data processing system register control
US5969975A (en) Data processing apparatus registers
JP2000148695A (ja) 幾何学処理プロセッサ、浮動小数点べき乗計算装置およびデータの出力制御装置
JPH1091443A (ja) 情報処理回路、マイクロコンピュータ及び電子機器
WO1998012626A1 (en) Data processing condition code flags
JP2581236B2 (ja) データ処理装置
GB2317467A (en) Input operand control in data processing systems
EP0927389B1 (en) Register addressing in a data processing apparatus
US5924114A (en) Circular buffer with two different step sizes
JPH10143494A (ja) スカラ/ベクトル演算の組み合わせられた単一命令複数データ処理
US5958000A (en) Two-bit booth multiplier with reduced data path width
KR100267092B1 (ko) 멀티미디어신호프로세서의단일명령다중데이터처리
EP0927390B1 (en) Processing of conditional select and move instructions
US6925548B2 (en) Data processor assigning the same operation code to multiple operations
US20070143579A1 (en) Integrated data processor
KR20000048531A (ko) 데이터 처리장치에서의 입력 오퍼랜드 제어
KR20000048529A (ko) 데이터 처리장치의 레지스터 제어
US6275925B1 (en) Program execution method and program execution device

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20050530

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20050621

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20050921

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20051006

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20051220

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20060228

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20060626

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

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20060803

A912 Re-examination (zenchi) completed and case transferred to appeal board

Free format text: JAPANESE INTERMEDIATE CODE: A912

Effective date: 20060901