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
Links
- 238000012545 processing Methods 0.000 title claims abstract description 17
- 239000013598 vector Substances 0.000 claims abstract description 421
- 238000000034 method Methods 0.000 claims abstract description 12
- 230000008569 process Effects 0.000 abstract description 6
- 230000003044 adaptive effect Effects 0.000 abstract 1
- 239000000872 buffer Substances 0.000 description 46
- 230000000295 complement effect Effects 0.000 description 17
- 238000010586 diagram Methods 0.000 description 17
- 238000006243 chemical reaction Methods 0.000 description 12
- 230000003111 delayed effect Effects 0.000 description 10
- 230000006870 function Effects 0.000 description 9
- 230000008859 change Effects 0.000 description 7
- 101000641224 Homo sapiens Vimentin-type intermediate filament-associated coiled-coil protein Proteins 0.000 description 6
- 102100034331 Vimentin-type intermediate filament-associated coiled-coil protein Human genes 0.000 description 6
- 238000009825 accumulation Methods 0.000 description 6
- 230000007423 decrease Effects 0.000 description 6
- 230000005540 biological transmission Effects 0.000 description 5
- 230000001343 mnemonic effect Effects 0.000 description 5
- 239000008186 active pharmaceutical agent Substances 0.000 description 4
- 238000013507 mapping Methods 0.000 description 4
- 230000002441 reversible effect Effects 0.000 description 4
- HSCMOVCUZWPGDL-UHFFFAOYSA-N (9-methyl-3,9-diazabicyclo[3.3.1]nonan-3-yl)-phenyldiazene Chemical compound CN1C(C2)CCCC1CN2N=NC1=CC=CC=C1 HSCMOVCUZWPGDL-UHFFFAOYSA-N 0.000 description 3
- 230000001934 delay Effects 0.000 description 3
- 238000006073 displacement reaction Methods 0.000 description 3
- 230000000694 effects Effects 0.000 description 3
- 230000007613 environmental effect Effects 0.000 description 3
- 230000003252 repetitive effect Effects 0.000 description 3
- 238000012360 testing method Methods 0.000 description 3
- 102100030148 Integrator complex subunit 8 Human genes 0.000 description 2
- 101710092891 Integrator complex subunit 8 Proteins 0.000 description 2
- 240000001987 Pyrus communis Species 0.000 description 2
- 101100178280 Rattus norvegicus Homer1 gene Proteins 0.000 description 2
- 238000000605 extraction Methods 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 229920006395 saturated elastomer Polymers 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- UOTMYNBWXDUBNX-UHFFFAOYSA-N 1-[(3,4-dimethoxyphenyl)methyl]-6,7-dimethoxyisoquinolin-2-ium;chloride Chemical compound Cl.C1=C(OC)C(OC)=CC=C1CC1=NC=CC2=CC(OC)=C(OC)C=C12 UOTMYNBWXDUBNX-UHFFFAOYSA-N 0.000 description 1
- 101100011399 Danio rerio eif3ea gene Proteins 0.000 description 1
- 102000008016 Eukaryotic Initiation Factor-3 Human genes 0.000 description 1
- 101150008815 INT6 gene Proteins 0.000 description 1
- 102100030206 Integrator complex subunit 9 Human genes 0.000 description 1
- 101710092893 Integrator complex subunit 9 Proteins 0.000 description 1
- 101100348848 Mus musculus Notch4 gene Proteins 0.000 description 1
- 101000767160 Saccharomyces cerevisiae (strain ATCC 204508 / S288c) Intracellular protein transport protein USO1 Proteins 0.000 description 1
- 230000004913 activation Effects 0.000 description 1
- 230000004075 alteration Effects 0.000 description 1
- 230000004888 barrier function Effects 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 150000001875 compounds Chemical class 0.000 description 1
- 230000002950 deficient Effects 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000002405 diagnostic procedure Methods 0.000 description 1
- 238000003780 insertion Methods 0.000 description 1
- 230000037431 insertion Effects 0.000 description 1
- -1 int9 Proteins 0.000 description 1
- 230000001788 irregular Effects 0.000 description 1
- 239000011159 matrix material Substances 0.000 description 1
- YSRVJVDFHZYRPA-UHFFFAOYSA-N melem Chemical compound NC1=NC(N23)=NC(N)=NC2=NC(N)=NC3=N1 YSRVJVDFHZYRPA-UHFFFAOYSA-N 0.000 description 1
- 230000003278 mimic effect Effects 0.000 description 1
- 238000002156 mixing Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 230000005236 sound signal Effects 0.000 description 1
- SYOKIDBDQMKNDQ-XWTIBIIYSA-N vildagliptin Chemical compound C1C(O)(C2)CC(C3)CC1CC32NCC(=O)N1CCC[C@H]1C#N SYOKIDBDQMKNDQ-XWTIBIIYSA-N 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30036—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/30105—Register structure
- G06F9/30112—Register structure comprising data of variable length
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30145—Instruction analysis, e.g. decoding, instruction word fields
- G06F9/3016—Decoding the operand specifier, e.g. specifier format
- G06F9/30167—Decoding the operand specifier, e.g. specifier format of immediate specifier, e.g. constants
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30181—Instruction operation extension or modification
- G06F9/30192—Instruction operation extension or modification according to data descriptor, e.g. dynamic data typing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3877—Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor
- G06F9/3879—Concurrent 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
- G06F9/3887—Concurrent 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
ログラミング環境を提供するDSPを提供すること。 【解決手段】 本発明は、ベクトルプロセッサアーキテ
クチャはプログラム可能なサイズとタイプのデータエレ
メントを有する固定されたサイズのベクトルレジスタを
備える。データエレメントのタイプとサイズはベクトル
レジスタと関連したオペランドを操作する命令により定
義される。命令によって定義されるデータサイズはベク
トルレジスタの数と命令を完了するために実行される並
列演算の数を決める。本発明の1実施の形態は全てのサ
イズについての整数タイプと32ビットデータエレメン
トに対する浮動小数点データ型の8ビット、9ビット、
16ビット、及び32ビットのデータエレメントサイズ
を支援する。
Description
セッサ、特にビデオ信号及びオーディオ信号の符号化(e
ncoding)及び復号化(decoding)のようなマルチメディア
機能に有利に適用される命令毎に多重データエレメント
の並列処理を行なうプロセッサに関する。
ルチメディア応用のためのプログラム可能ディジタル信
号プロセッサ(DSP:Digital Signal Processor、以
下DSPと称する)は、制限された時間内に処理される
べき多量のデータが発生するので高速な処理能力を必要
とする。例えば特開平6−309349号公報または特
開平6−266860号公報に示すように、ディジタル
信号プロセッサに対する幾つかのアーキテクチャ(archi
tecture)が知られている。大部分のマイクロプロセッサ
に採用されたこのような汎用アーキテクチャは、実時間
ビデオ符号化または復号化のための充分な計算能力を有
するDSPを提供するためには高速演算周期を必要とす
る。このため、このようなDSPは高コストとなる。
struction Word、以下VLIWと称する)プロセッサは
多くの機能ユニットを有するDSPであって、これらの
大部分は相違し、比較的単純なタスク(task)を行う。V
LIWDSPに対する単一命令は128バイト或いはそ
れ以上であり、分離された機能ユニットを並列に実行す
る分離された部分をもっている。VLIWDSPは多く
の機能ユニットが並列演算を行えるために高い計算能力
を備えている。また、VLIWDSPは各機能ユニット
が比較的小さくて単純なので比較的安価である。
題は、VLIWDSPの機能ユニットに対する並列実行
に適しない入出力制御、ホストコンピュータとの通信、
及び他の機能を処理することに対する非効率性である。
また、VLIWソフトウェアは、通常のソフトウェアと
相違し、VLIWソフトウェアアーキテクチャに慣れて
いるプログラマとプログラムツールが足りないために、
開発し難い。
プログラミング環境を提供するDSPがマルチメディア
応用に要求されている。
ば、マルチメディアディジタル信号プロセッサは、高い
計算能力を提供するためにベクトルデータ(即ち、オペ
ランド当たり多重データエレメント)を操作するベクト
ルプロセッサを含む。プロセッサはRISC型命令セッ
トを有する単一命令−多重データ(single-instruction-
multiple-data)アーキテクチャを使用する。プログラマ
にとっては、プログラム環境が馴染みの汎用プロセッサ
のプログラム環境と類似しているので、プログラムはベ
クトルプロセッサのプログラム環境に容易に適応でき
る。
を含む。各ベクトルレジスタは固定サイズをもっている
が、使用者の選択可能なサイズの分離されたデータエレ
メントに分割される。従って、ベクトルレジスタに記憶
されたデータエレメントの数は、エレメントに対する選
択されたサイズによって決定される。例えば、32バイ
トレジスタは32個の8ビットデータエレメント、16
個の16ビットデータエレメント、或いは8個の32ビ
ットデータエレメントに分けられる。データサイズと形
式の選択はベクトルレジスタと演算されたデータを処理
する命令によって行われ、命令に対する実行データパス
は命令によって指示されたデータサイズによって多数の
並列演算を実行する。
ンドとしてベクトルレジスタ或いはスカラレジスタをも
つことができ、計算能力が高くなるように並列にベクト
ルレジスタの多重データエレメントを操作することがで
きる。本発明によるベクトルプロセッサに対する命令セ
ットの例はコプロセッサインタフェース演算、フロー制
御演算、ロード/記憶演算、及び論理/算術演算を含
む。論理/算術演算は、データエレメントの結果的なデ
ータベクトルを発生するために、1つのベクトルレジス
タからのデータエレメントを、1つ或いはそれ以上の他
のベクトルレジスタからの対応するデータエレメントと
結合させる演算を含む。他の論理/算術演算は1つ或い
はそれ以上のベクトルレジスタからの各種のデータエレ
メントを混合するか、或いはベクトルレジスタからのデ
ータエレメントをスカラ量と結合させる。
それぞれスカラデータエレメントを含むスカラレジスタ
を加算する。スカラとベクトルレジスタの結合(combina
tion)は、ベクトルの各データエレメントをスカラ値と
並列に結合する命令を含むベクトルプロセッサの命令セ
ットの拡張を容易にする。例えば、1つの命令がベクト
ルのデータエレメントにスカラ値を乗算する。また、ス
カラレジスタは単一データエレメントの記憶場所を提供
してベクトルレジスタから抽出されるか、或いはベクト
ルレジスタに記憶されるようにする。また、スカラレジ
スタはベクトルプロセッサとスカラレジスタのみを備え
るアーキテクチャをもつコプロセッサとの間に情報をパ
スするか、或いはロード/記憶演算に対する有効アドレ
スの計算に便利である。
セッサのベクトルレジスタはバンク(bank)から組み合わ
せられる。各バンクは“現在(current)”バンクとして
選択でき、一方他のバンクは“交替(alternative)”バ
ンクである。ベクトルプロセッサの制御レジスタで“現
在バンク”ビットは現在バンクを指示する。ビットの数
の減縮にはベクトルレジスタを識別することが必要であ
り、現在バンクにベクトルレジスタを識別するために若
干の命令はレジスタ番号のみを提供する。ロード/記憶
命令はあるバンクからベクトルレジスタを識別するため
に付加ビットをもつ。従って、ロード/記憶命令は現在
バンクでデータを操作する間、交替バンクでデータを取
り出すことができる。これはイメージ処理及びグラフィ
ック手続に対するソフトウェアパイプライニングを容易
にし、論理/算術演算が規則を外れて交替レジスタバン
クをアクセスするロード/記憶演算によって実行される
ことができるために、データ取出し時にプロセッサ遅延
を減らす。他の命令により交替バンクは現在バンクから
のベクトルレジスタと交替バンクからの対応するベクト
ルレジスタを含むダブルサイズベクトルレジスタの使用
を可能にする。このようなダブルサイズレジスタは命令
構文(syntax)から識別されることができる。ベクトルプ
ロセッサで制御ビットはデフォールトベクトルサイズが
1つ或いは2つのベクトルレジスタのいずれか1つにな
るように設定できる。また、交替バンクは2つのソース
と2つの目的地レジスタを有するシャフル(shuffle)、
アンシャフル(unshuffle)、飽和(saturate)、及び条件
移動のような複合命令の構文でより小さくて且つ明確な
識別されたオペランドを使用可能にする。
uad)、シャフル、アンシャフル、ペア式最大と交換、及
び飽和などの新規命令を具現する。これらの命令はビデ
オ符号化及び復号化のようなマルチメディア機能に共通
の演算を行い、他の命令セットが同一の機能を具現する
ために必要とする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を構成することがで
きる。
0,120に対するデータと命令を含み、且つキャッシ
ュから構成することができる。好ましい実施の形態にお
いて、ROM170はリセット及び初期化手続、自己テ
スト診断手続、インタラプト及び例外処理器、及びサウ
ンドブラスタエミュレーション用サブルーチン、V.3
4モデム信号処理用サブルーチン、一般電話機能、1−
D及び3−Dグラフィックサブライブラリ、及びMPE
G−1、MPEG−2、H.261、H.263、G.
728、G.723のようなオーディオ及びビデオ標準
用サブルーチンライブラリを含む。
ッサ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の作用をさらに
詳しく説明している。
ログラムスレッド(thread)を実行し、それらに割り当て
られた特定タスクをより効率的に実行するために構造的
に相違する。プロセッサ110は実時間作動システムの
実行のような制御機能と多数の反復的な計算を要求しな
い類似機能を優先している。従って、プロセッサ100
は高い計算能力を必要とせず、通常の汎用プロセッサア
ーキテクチャを用いて具現することができる。ベクトル
プロセッサ120は大部分のマルチメディア処理におい
て共通のデータブロックに対する反復的な演算を含むナ
ンバクランチング(number crunching)を施す。高い計算
能力と比較的単純なプログラミングのために、ベクトル
プロセッサ120はSIMD(Single Instruction Mult
iple Data)アーキテクチャを有し、例示された実施の形
態でベクトルプロセッサ120における大部分のデータ
パスはベクトルデータ操作を支援するために288或い
は576ビットのうち1つの広さを有する。また、ベク
トルプロセッサ120に対する命令セットは特にマルチ
メディア問題に適した命令を含む。
10は40MHzで動作して、ARM7標準によって定
義されたレジスタセットを含むARM7プロセッサのア
ーキテクチャと一致する32ビットRISCプロセッサ
である。ARM7RISCプロセッサに対するアーキテ
クチャと命令セットはAdvance RISC Machines Ltd.から
入手可能な“ARM7DMDataSheet”、文書
番号:ARMDDI0010Gに記載されている。AR
M7DMDataSheetはこの出願に参考として含
まれる。後述する別添Aには好ましい実施の形態でAR
M7命令セットの拡張を説明している。
カラ量を全て演算する。好ましい実施の形態において、
ベクトルプロセッサ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はデフォールトによるレジスタ番号が各バンクからレ
ジスタを含むダブルサイズベクトルレジスタを識別する
かを指示する。命令の構文はベクトルレジスタを識別す
るレジスタ番号をスカラレジスタを識別するレジスタ番
号と区別する。
イズのデータエレメントに分割されることができる。表
1は288ビットベクトルレジスタ内でデータエレメン
トに対して支援されるデータ形式を示す。
実施の形態から支援されるデータサイズとデータ形式に
対する追加説明を提供する。
トが288ビットベクトルレジスタに必然的に包装され
るが、他のデータ形式の場合には288ビットベクトル
レジスタに全ての9ビットは使用されない。288ビッ
トベクトルレジスタは32個の8ビット又は9ビット整
数データエレメント、16個の16ビット整数データエ
レメント、或いは8個の32ビット整数または浮動小数
点エレメントを保有することができる。また、2ベクト
ルレジスタはダブルサイズベクトルでデータエレメント
を包装するように結合できる。本発明の好ましい実施の
形態で制御及び状態レジスタVCSRに制御ビットVE
C64を設定することは、ダブルサイズ(576ビッ
ト)がベクトルレジスタのデフォールトサイズの場合、
ベクトルプロセッサ120をモードVEC64に設定す
る。
両プロセッサ110,120がアクセスし得る1セット
の32ビット拡張レジスタ115を含む。後述する別添
Bにおいて本発明の好ましい実施の形態で1セットのレ
ジスタとそれらの機能を説明する。拡張レジスタとベク
トルプロセッサ120のスカラ及び特殊目的のレジスタ
は、幾つかの環境でプロセッサ110がアクセスし得
る。2つの特殊“使用者”拡張レジスタはプロセッサ1
10,120が同時にレジスタを読み取れるように2つ
の読取りポートをもっている。他の拡張レジスタは同時
にアクセスされることができない。
セッサがランニング或いはアイドル状態にあるかを示す
2つの選択的な状態(VP_RUN,VP_IDLE)
を有する。プロセッサ110はベクトルプロセッサ12
0が状態VP_IDLEにある時、ベクトルプロセッサ
120のスカラ或いは特殊目的のレジスタを読み取るか
書き込むことができるが、ベクトルプロセッサ120が
状態VP_RUNにある間にプロセッサ110がベクト
ルプロセッサ120のレジスタを読み取ったり書き込ん
だりした結果は未定である。
ットの拡張は拡張レジスタとベクトルプロセッサ120
のスカラ及び特殊目的のレジスタをアクセスする命令を
含む。命令MFER,MFEPはそれぞれ、拡張レジス
タとベクトルプロセッサ120のスカラ或いは特殊目的
のレジスタからプロセッサ110の一般レジスタにデー
タを移動させる。命令MTER,MTEPはそれぞれ、
プロセッサ110の一般的なレジスタから拡張レジスタ
とベクトルプロセッサ120のスカラ或いは特殊目的の
レジスタにデータを移動させる。TESTSET命令は
拡張レジスタを読み取り拡張レジスタのビット30を1
に設定させる。命令TESTSETはプロセッサ110
が生産された結果を読み取るか、或いは使用したプロセ
ッサ120に対する信号を発生するようにビット30を
設定することにより、使用者/生産者同期を容易にす
る。STARTVP及びINTVPのようなプロセッサ
110に対する他の命令はベクトルプロセッサ120の
演算状態を制御する。
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に対するプログラム実
行の結果をパスすることができる。
処理することができない。例外を引き起こす命令の実行
時にベクトルプロセッサ120は状態VP_IDLEに
進入してプロセッサ110に対してダイレクトラインを
通してインタラプト要求(interrupt request)を発生す
る。ベクトルプロセッサ120はプロセッサ110が他
のSTARTVP命令を実行する時まで状態VP_ID
LEに残っている。プロセッサ110は例外現象を判断
してベクトルプロセッサ120のレジスタVISRCを
読み取り、ベクトルプロセッサ120を更に初期化させ
ることによりできるだけ例外を処理し、その後所望に応
じて、実行を再び始めるようにベクトルプロセッサ12
0を調整する。
TVP命令は、ベクトルプロセッサ120がアイドル状
態VP_IDLEに進入するようにベクトルプロセッサ
120にインタラプトを掛ける。例えば、命令INTV
Pはマルチタスクシステム(multitasking system)に用
いられ、ビデオ復号化のような1つのタスクからサウン
ドカードエミュレーションのような他のタスクにベクト
ルプロセッサを交換する。
JOINは命令によって指示された条件が満足される場
合、ベクトルプロセッサ120による実行を停止し、状
態VP_IDLEにベクトルプロセッサ120を設定
し、このような要求が遮断されない場合、プロセッサ1
10に対するインタラプトを発する。ベクトルプロセッ
サ120のプログラムカウンタ(特殊目的のレジスタV
PC)はVCINT或いはVCJOIN命令の次の命令
アドレスを示す。プロセッサ110はVCINT或いは
VCJOIN命令がインタラプト要求を引き起こしたか
否かを判断するために、ベクトルプロセッサ120のイ
ンタラプトソースレジスタVISRCをチェックするこ
とができる。ベクトルプロセサ120は大きいデータバ
スをもっており且つレジスタのセーブ及び復旧にさらに
効率的なので、ベクトルプロセッサ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のアドレス空間をアクセスするロー
ド/記憶命令を実行する。
令バッファ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にロードされた命令に対するベースアドレス
を指示する。
バッファ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に
記憶される。
合、IFU210はフローコントロール命令に対する条
件を評価し、フローコントロール命令を従うプログラム
カウントをアップデートさせることにより命令を処理す
る。IFU210は条件変更可能な従前の命令が完了し
ていないために、条件が決定されていない場合に保留に
なる。ブランチがなされない場合、プログラムは増分さ
れ、次の命令が前記のように選択される。もしブランチ
が成されてブランチターゲットバッファ314がブラン
チのターゲットを含む場合、バッファ314とレジスタ
344の内容がバッファ310及びレジスタ340に移
動され、IFU210はキャッシュサブシステム130
からの命令を待たずにデコーダ220に引き続き命令を
提供する。
る命令を予め取り出すために、スキャナ320は現在プ
ログラムカウント後の次のフロー制御命令を探すため、
バッファ310,312をスキャニングする。もしフロ
ー制御命令がバッファ310または312から発見され
る場合、スキャナ320は命令を含むバッファ(310
又は312)のベースアドレスからフロー制御命令のタ
ーゲットアドレスを含む整列したセットの8命令に対す
るオフセットを決定する。マルチプレクサ352,35
4はレジスタ340或いは342からバッファ314に
対する新しいベースアドレスを発生する加算器350に
ベースアドレスとフローコントロール命令からオフセッ
トを提供する。新しいベースアドレスはキャッシュサブ
システム130に印加されてブランチターゲットバッフ
ァ314に8命令を引き続き提供する。
CBR,VD2CBR,VD3CBR)及び“変更制御
レジスタ”命令VCHGCRのようなフローコントロー
ル命令を処理する場合、IFU210はプログラムカウ
ントに付加してレジスタ値を変更することができる。I
FU210がフローコントロール命令でない命令を発見
した時、その命令は命令レジスタ330に送られてから
デコーダ220に送り出される。
ジューラ230でFIFOバッファ410のフィールド
に制御値を記録することにより、命令を復号化する。F
IFOバッファ410は4行列のフリップフロップを含
み、各フリップフロップは1つの命令の実行を制御する
するための5フィールドの情報を含むことができる。行
列0〜行列3はそれぞれ一番古いものから一番新しい命
令に対する情報を保有し、FIFOバッファ410の情
報はさらに古い情報が命令として完全に除去されたと
き、さらに低い行列にシフトされる。スケジューラ23
0は実行レジスタ421〜427を含むコントロールパ
イプ420にロードされる命令の必要なフィールドを選
択することにより、実行端に命令を発行する。大部分の
命令は不規則的な順序で発行と実行を予定することがで
きる。特に論理/算術演算とロード/記憶演算の順序は
ロード/記憶演算と論理/算術演算との間のオペランド
従属性がない限り任意である。FIFOバッファ410
でフィールド値の比較はあるオペランド従属性が存在す
るかを指示する。
ス空間をアクセスせず、レジスタ対レジスタ演算を行う
命令に対する6段実行パイプラインを示す。命令取出し
段階511でIFU210は前記のように命令を取り出
す。取出し端はIFU210がパイプライン遅延、未解
決ブランチ条件、或いは予め取り出された命令を提供す
るキャッシュサブシステム130における遅延によって
保留されない限り1クロックサイクルを必要とする。復
号化段階512でデコーダ220はIFU210から命
令を復号化してスケジューラ230に命令に対する情報
を記録する。尚、復号化段階512はFIFO410で
いずれの行列も新しい演算を利用しない限り1クロック
サイクルを必要とする。演算はFIFO410で第1サ
イクルの間コントロールパイプ420に発行されること
ができるが、さらに古い演算の発行によって遅延するこ
ともある。
タ演算を行い、ロード/記録演算に対するアドレスを提
供する。図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クロ
ックサイクルよりさらに長くなる。
620、算術論理ユニット630、及びアキュムレータ
640を通る間、処理データはレジスタファイル610
から予め読み取られる。実行段階515は必要なデータ
の読取りに多数のサイクルが要求される場合、読取り段
階514をオーバーラップすることができる。実行段階
515の期間はデータエレメントのタイプ(整数或いは
浮動小数点)及び処理されたデータの量(読み取りサイ
クルの数)によって変わる。実行レジスタ422,42
3,425の信号は実行段階の間行われた第1演算のた
めに算術論理ユニット630、アキュムレータ640、
及びマルチプライヤ620に対する入力データを制御す
る。実行レジスタ432,433,435は実行段階5
15の間行われた第2演算を制御する。
と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ビットを提供する。
ルチプライヤ620から生成された576ビットまたは
512ビットの結果を処理することができる。ALU6
30は8つの独立した36ビットALU636を含む。
各ALU636は浮動小数点加算と乗算のための32×
32ビット浮動小数点ユニットを含む。整数操作のため
に各ALU636は独立した8ビット及び9ビット操作
を行うことができ、16ビット及び32ビット整数デー
タエレメントに対して2或いは4セットで互いに接続さ
れ得る4ユニットを含む。
累算し、中間結果でさらに高い精密度のために2つの5
76ビットレジスタを含む。
スタファイル610に記憶される。2つのレジスタは単
一クロックサイクルの間に記録されることができ、入力
マルチプレクサ602,605は記録される2データ値
を選択する。演算に対する記録段階516の期間は演算
結果として記録されるデータの量と、レジスタファイル
610に記録することによりロード命令を完了できるL
SU250からの完了によって異なる。実行レジスタ4
26,427からの信号は論理ユニット630、アキュ
ムレータ640、及びマルチプライヤ620のデータが
記録されるレジスタを選択する。
プライン520を示す。実行パイプライン520のため
の命令取出し段階511、復号化段階512、及び発行
段階513はレジスタ対レジスタ演算に対して説明され
たものと同一である。また、読取り段階514はキャッ
シュサブシステム130に対する呼出用アドレスを決定
するために実行データパス240がレジスタファイル6
10からデータを使用することを除いては前述と同一で
ある。アドレス段階525においてマルチプレクサ65
2,654,656は実行段階526,527のために
ロード/記憶ユニット250に提供されるアドレスを選
択する。ロード演算に対する情報は段階526,527
の間FIFO410に残留し、一方ロード/記憶ユニッ
ト250は演算を処理する。
する実施の形態を示す。256段階の間525段階で決
定されたアドレスのデータのためにキャッシュサブシス
テム130に対するコール(call)を行う。好まし
い実施の形態はプロセッサ110,120を含む多重デ
バイスがキャッシュサブシステム130を通してローカ
ルアドレス空間をアクセスする場合、トランザクション
ベースキャッシュコール(transaction based cache cal
l)を使用する。要求されたデータはキャッシュサブシス
テム130に対するコール後に幾つかのサイクルの間に
使用し得ないが、ロード/記憶ユニット250は他のコ
ールが保留(pending)されている間キャッシュサブシス
テムに対するコールをすることができる。従って、ロー
ド/記憶ユニット250は停止されない。要求されたデ
ータを提供するためにキャッシュサブシステムに要求さ
れるクロックサイクルの数は、データキャッシュ194
にヒット或いはミスが存在するかによっている。
サブシステム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ビット量を記録する。
ライン530を示す。実行パイプライン530のための
取出し段階511、復号化段階512、及び発行段階5
13は前述と同様である。読み取り段階514は記憶さ
れるべきデータとアドレス計算用データとを読み取るこ
とを除いては前述と同一である。記憶されるべきデータ
はロード/記憶ユニット250で記録データバッファ7
30に記録される。マルチプレクサ740は9ビットバ
イトを提供するフォーマットのデータを8ビットバイト
を有する通常のフォーマットに変換する。バッファ73
0からの変換されたデータとアドレス計算段階525か
らの関連アドレスはSRAM段階536の間キャッシュ
サブシステム130に並列に送られる。
の形態において、各命令は32ビット長であって、図8
に示された9つのフォーマットのうち1つをもち、RE
AR,REAI,RRRM5,RRRR,RI,CT,
RRRM9,RRRM*,及びRRRM9**のレベル
が付けてある。なお、別添Eにおいてベクトルプロセッ
サ120に対する命令セットについて説明する。
タを使用する幾つかのロード、記憶、及びキャッシュ演
算は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に記憶される。
ドIMMの8ビット中間値がスカラレジスタSRiの内
容の代わりに使用されることを除いてはREAR命令と
同一である。REARとREAIフォーマットはデータ
エレメントサイズフィールドを持たない。
ンドと1目的オペランドをもつ命令のためのものであ
る。これらの命令は3レジスタオペランド或いは2レジ
スタオペランドと5ビット中間値のうち1つを有する。
別添Eに示すように、フィールドD,S,Mの符号化は
第1ソースオペランドRaがスカラまたはベクトルレジ
スタであるか否かを判断し、第2ソースオペランドRb
/IM5がスカラレジスタ、ベクトルレジスタ、或いは
5ビット中間値であるか否かを判断し、目的レジスタR
dがスカラ或いはベクトルレジスタであるか否かを判断
する。
ンドをもつ命令のためのものである。レジスタ番号R
a,Rbはソースレジスタを指摘する。レジスタ番号R
dは目的レジスタを示し、レジスタ番号Rcはフィール
ドOpcによるソースまたは目的レジスタのうち1つを
示す。レジスタRbがスカラレジスタであることを指示
するようにビットSが設定されている場合を除いて全て
のオペランドはベクトルレジスタである。フィールドD
Sはベクトルレジスタに対するデータエレメントサイズ
を示す。フィールドOpcは32ビットデータエレメン
トに対するデータ型を選択する。
タにロードさせる。フィールドIMMは18ビットまで
の中間値を含む。レジスタ番号RdはビットDによるス
カラレジスタと現在バンクのベクトルレジスタのうち1
つである目的レジスタを示す。フィールドDS,Fはそ
れぞれのデータエレメントサイズとタイプを指す。32
ビット整数データエレメントの場合、18ビット中間値
はレジスタRdにロードされる前に拡張されたサインで
ある。浮動小数点データエレメントの場合、ビット1
8、ビット17〜10、及びビット9〜0はそれぞれ3
2ビット浮動小数点値のサイン、指数、及び仮数(manti
ssa)を示す。
令に対するものであり、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は条件を評価するのに用いられる。
ランド或いは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になされてい
る。
形態に関連して図示し述べたが、特許請求の範囲によっ
て設けられる本発明の精神や分野を外れない限度内で本
発明を多様に改造及び変換し得ることは当分野で通常の
知識を有する者には明らかなことである。
セッサ110はARM7プロセッサの規格に合う汎用プ
ロセッサである。ARM7プロセッサ内のレジスタ内の
説明に関するARMアーキテクチャ文献或いはARM7
データシート(1994年12月に発行された文献番号
ARMDDI0020C)を参照する。
ために、プロセッサ110はベクトルプロセッサを開始
及び停止させ、同期を含んだベクトルプロセッサ状態を
テストし、ベクトルプロセッサ120内のスカラ/特殊
レジスタからのデータをプロセッサ110内の汎用レジ
スタ側に伝送し、一般レジスタからのデータをベクトル
プロセッサスカラ/特殊レジスタ側に伝送する。このよ
うな伝送のためには仲介者としてメモリを必要とする。
ためのARM7命令セットの拡張について説明されてい
る。
り、これら例外はフローティング命令を行う前に検出及
び報告される。例外ベクトルアドレスは16進数表記で
与えられる。
構文について説明する。用語説明及び命令フォーマット
に関するARMアーキテクチャ文献或いはARM7デー
タシート(1994年12月に発行された文献番号AR
MDDI0020Cを参照する。
インタフェースのための3種類の命令フォーマットを提
供する。
る。前記コプロセッサのデータ演算フォーマットCDP
はARM7側に再び伝送する必要のない演算のために用
いられる。
DC,STC)はベクトルプロセッサのレジスタのサブ
セットをメモリに直接ロード或いは記憶させるのに用い
られる。前記ARM7プロセッサはワードアドレスを供
給する役目をし、前記ベクトルプロセッサはデータを供
給又は受信し、伝送されたワードの個数を制御する。よ
り詳細なことはARM7データシートを参照する。
(MRC,MCR)はARM7とベクトルプロセッサと
の間で直接情報を通信するのに用いられる。このフォー
マットはARM7レジスタとベクトルプロセッサスカラ
或いは特殊レジスタとの間の移動に用いられる。
る。
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データシートを参照する。
照する。
pl,vs,hi,ls,ge,lt,gt,le,a
l,ns} 説明 この命令はCondが真の時にのみ行われる。
るために信号伝送を行う。
たず、次の命令を引き続き行う。
令が行われた後にベクトルプロセッサが停止されたかを
調べるために用いられるべきである。この命令はベクト
ルプロセッサが予めVP_IDLE状態であれば、何の
影響も及ぼさない。
予約されている。
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}を意味する。
いる。
保護侵害MFVP ベクトルプロセッサからの移動
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}を意味する。
し、これに対する記録は無視される。
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}を意味する。
いる。
保護侵害MTVP ベクトルプロセッサ側への移動
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}を
意味する。
pl,rs,vc,hi,ls,ge,lt,gt,l
e,al,nv}、アドレスモード構文に関するARM
7データシートを参照する。
って特定されたキャッシュラインはARM7データキャ
ッシュ側にプリフェッチされる。
を参照する。
pl,vs,vc,hi,ls,ge,lt,gt,l
e,al,nv} 説明 この命令はCondが真の時にのみ行われる。この命令
は遂行を開始するようにベクトルプロセッサ側に信号伝
送を行い、VISRC(vjp)とVISRC(vi
p)を自動的にクリアさせる。ARM7はベクトルプロ
セッサが遂行を開始することを待たず、次の命令を引き
続き行う。前記ベクトルプロセッサの状態はこの命令が
行われる前に所望の状態に初期化されるべきである。こ
の命令は前記ベクトルプロセッサが予めVP_RUN状
態になっている場合には何の影響も及ぼさない。
予約されている。
pl,rs,re,hi,ls,ge,lt,gt,l
e,al,nv},Rd={r0,・・r15},ER
={0,・・15},そしてRANAMEはアーキテク
チャ的に特定されたレジスタニモニック(即ち,UER
1或いはVASYNC)を意味する。
はUERx乃至RDの内容を復帰させ、UERx(3
0)を1に設定する。ARM7レジスタ(15)が目的
レジスタとして特定されると、UERx(30)はCP
SRのZビットから復帰し、これにより短い使用中(bus
y)待機ループが行われることができる。現在、UER1
のみがこの命令に従って動作するように定義されてい
る。
いる。
100はプロセッサ110がMFER命令或いはMTE
R命令でアクセスする拡張レジスタを定義する。この拡
張レジスタは特権拡張レジスタと使用者拡張レジスタを
含んでいる。
ロセッサの演算を制御するのに主に用いられる。これら
は表12に示されている。
算を制御する。CTRの全てのビットはリセット時にク
リアされる。前記レジスタ定義は表2Bに示されてい
る。
態を指示する。フィールドSTRの全てのビットはリセ
ット時にクリアされる。レジスタ定義は表14に示され
ている。
サのマルチメディア信号プロセッサファミリーの特定プ
ロセッサの特定バージョンを表示する。
ジスタVIMSKはプロセッサ110にベクトルプロセ
ッサ例外を報告する演算を制御する。VIMSKのそれ
ぞれのビットはVISRCレジスタの対応ビットと共に
セットされると、ARM7に対してインタラプトを行う
例外をイネーブルさせる。これはベクトルプロセッサ例
外を検出する方法には何の影響も及ぼさず、但し前記例
外がARM7に対してインタラプトを掛けるべきかにの
み影響を及ぼす。VIMSKの全てのビットはリセット
時にクリアされる。レジスタ定義は表15に示されてい
る。
ARM7プログラムデバック(debugging)時にこれを支
援する。レジスタ定義は表16に示されている。
はARM7プログラムデバッグ(debugging)時にこれを
支援する。レジスタ定義は表17に示されている。
ブシステム130のSRAMを使用して形成されたスク
ラッチのアドレスとサイズを構成する。レジスタ定義は
表18に示されている。
120の同期に主に用いられる。使用者拡張レジスタは
ビット30にマッピングされた1ビットのみを持てるよ
うに現在定義されており、“MFERR15,UER
x”のような命令は例えばビット値をZフラグ側に復帰
させる。ビットUERx(31)及びUERx(29:
0)は常にゼロと判読される。使用者拡張レジスタは表
19に説明されている。
スタの状態を示す。
ーキテクチャ状態は32個の32ビットスカラレジス
タ;32個の288ビットベクトルレジスタの2つのバ
ンク:一対の576ビットベクトルアキュムレータレジ
スタ;1セットの32ビット特殊レジスタを含んでい
る。スカラレジスタ、ベクトルレジスタ及びアキュムレ
ータレジスタは汎用プログラミングのためのものであ
り、多数の他のデータ形態を支援する。
の表記を使用する。:VRはベクトルレジスタを示し、
VRiは第iベクトルレジスタ(ゼロオフセット)を示
し、VR[i]はベクトルレジスタVRの第iデータエ
レメントを示し、VR(a:b)はベクトルレジスタV
Rのビットa乃至ビットbを示し、VR[i](a:
b)はベクトルレジスタVRの第iデータエレメントの
ビットa乃至ビットbを示す。
レジスタ内の多数のエレメントDMLデータ種類とサイ
ズの追加された寸法をもっている。ベクトルレジスタは
固定されたサイズをもっているので、保持可能なデータ
エレメントの個数は前記エレメントのサイズに左右され
る。MSPアーキテクチャは表21に示すように5種類
のエレメントサイズを定義している。
種類と命令サイズによってベクトルデータを解釈する。
現在、大部分の算術命令のバイト、バイト9、ハフワー
ド及びワードエレメントサイズに対しては2の補数(整
数)フォーマットが支援されている。また、IEEE7
4単一精密度フォーマットは大部分の算術命令のワード
エレメントサイズが支援されている。
す限り、プログラマは所望の方式でデータを自由に解釈
する。例えば、プログラマはプログラムが“偽(fals
e)”オーバフロー結果を処理し得る限り、符号のない
8ビット数の貯蔵にバイト9サイズを自由に使用し、バ
イトサイズデータエレメントの符号の無い8ビット数を
同様に自由に貯蔵し、提供された2補数算術命令を使用
してこれらに対して演算を自由に行うことができる。
スカラレジスタが存在する。これらスカラレジスタは幅
が32ビットであり、未確定されたサイズのうちいずれ
かのサイズの1つのデータエレメントを含むことができ
る。スカラレジスタSR0はこのレジスタSR0が0か
らなる32であって常に判読することができ、レジスタ
SR0への記録が無視される点から特別であると言え
る。バイト形、バイト9形及びハフワードデータ形は未
確定の値をもった最上位ビットをもっているスカラレジ
スタの最下位ビットに貯蔵される。
いので、プログラマはそれぞれの命令に用いられるレジ
スタのデータ種類を知っていなければならない。これは
32ビットレジスタが32ビットレジスタを含んでいる
と仮定される他のアーキテクチャとは異なる。MSPア
ーキテクチャはデータ種類Aの結果がデータ種類Aに対
して未確定されたビットのみを修正することを指示す
る。例えば、バイト9加算の結果は32ビット目的スカ
ラレジスタの下位9ビットのみを修正する。上位23ビ
ットの値は命令に対して異に言及されなければ、未確定
された状態である。
トレジスタをもっている2つのバンクから構成されてい
る。バンク0は第1の32レジスタを含んでおり、バン
ク1は第2の32ビットレジスタを含んでいる。これら
2つのバンクのうち、一つは現在バンクとして設定さ
れ、もう一つは交替バンクとして設定されるようにして
用いられる。交替バンクのベクトルレジスタをアクセス
し得るロード/記憶命令及びレジスタ移動命令を除いた
全てのベクトル命令はデフォルトであって、現在バンク
内のレジスタを使用する。ベクトル制御及び状態レジス
タVCSRのCBANKビットはバンク0或いはバンク
1を現在バンクとして設定するのに用いられる(他のバ
ンクは交替バンクになる)。現在バンク内のベクトルレ
ジスタはVR0乃至VR31とし、交替バンク内のベク
トルレジスタはVRA0乃至VRA31とする。
ットそれぞれのダブルサイズの32個のベクトルレジス
タを提供し得るように結合することができる。制御レジ
スタVCSRのVEC64ビットはこのモードを示す。
VEC64モードには現在バンク及び交替バンクが存在
せず、ベクトルレジスタ番号は2つのバンクからの対応
する対の288ベクトルビットベクトルを示す。即ち、 VRi(575:0)=VR1i(287:0):VR
0i(287:0) ここで、VR0i及びVR1iはそれぞれバンク1及び
バンク0でレジスタ番号VRiをもっているベクトルレ
ジスタを示す。ダブルサイズベクトルレジスタはVR0
乃至VR31と表記されている。
ト、バイト9、ハフワード或いはワードサイズの多数の
エレメントを収容することができる。
イズ間の混合は支援されない。バイト9エレメントサイ
ズを除いては288ビットのうち256ビットにのみが
用いられる。特に、全ての第9ビットは用いられない。
バイト、ハフワード及びワードサイズのうち用いられな
い32ビットは予約されており、プログラマはこれらの
値に対してどのの仮定もできない。ベクトルアキュムレ
ータレジスタは目的レジスタの結果より高い正確度をも
っている中間結果を記憶装置に提供する。ベクトルアキ
ュムレータレジスタは4つの288ビットレジスタ、即
ちVAC1H,VAC1L,VAC0H,VAC0Lか
ら構成されている。VAC0H,VAC0L対はデフォ
ルトによって3つの命令によって用いられる。VEC6
4モードでのみ、VAC1H,VAC1L対が64種類
のバイト9ベクトル演算を模倣するのに用いられる。ソ
ースベクトルレジスタと同じ個数のエレメントをもって
いる拡張された正確度の結果を生成するために、拡張精
密度エレメントは表23に示すように一対のレジスタに
わたって節減される。
ードでのみ用いられることができ、この時エレメントの
個数はバイト9(及びバイト)、ハフワード、及びワー
ドの場合にそれぞれ64,32,或いは16になること
ができる。
メモリに直接貯蔵されうる33つの特殊レジスタがあ
る。RASR0乃至RASR15とする16つの特殊レ
ジスタは内部復帰アドレススタックを形成しており、そ
してサブルーチン呼出命令及びサブルーチン復帰命令に
よって用いられる。17個以上の32ビット特殊レジス
タが表24に示されている。
R)に関する定義は表25に示されている。
Cはベクトルプロセッサ120によって行われる次の命
令のアドレスである。ARM7プロセッサ110はベク
トルプロセッサ120の演算を開始させるためにSTA
RTVP命令を発生する前にレジスタVPCをロードし
なければならない。
は一番最近の例外を一番生じさせるような命令のアドレ
スを指定する。MSP100は正確な例外を支援せず、
よって“一番生じさせるような”という用語を使用す
る。
RCはインタラプト供給源をARM7プロセッサ110
に特定する。適切なビットは例外の検出時にハードウェ
アによって設定される。ソフトウェアはベクトルプロセ
ッサ120が遂行を再開する前にレジスタVISRCを
クリアさせなければならない。レジスタVISRCで設
定されたあるビットによってベクトルプロセッサ120
は状態VP_IDLEに入る。対応するインタラプトイ
ネーブルビットがVIMSKに設定されると、プロセッ
サ110に対するインタラプトが信号伝送される。表2
6にはレジスタVISRCの内容が定義されている。
NSはVCINT命令或いはVCJOIN命令がARM
7プロセッサ100をインタラプトするために行われる
と、VCINT命令或いはVCJOIN命令に更新され
る。
R2,VCR3は減少及びブランチ命令VD1CBR,
VD2CBR,VD3CBRのためのものであり、行わ
れるループのカウントに初期化される。命令VD1CB
Rが行われると、レジスタVCR1は1だけデクレメン
ト(decrement)される。カウント値がゼロでなく前記命
令に特定された条件がVFLAGと一致すると、ブラン
チが取られる。一致しなければ、ブランチは取られな
い。レジスタVCR1は2つの場合において1だけデク
レメントされる。レジスタVCR2,VCR3も同一方
法で用いられる。
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命令を除いた全ての命令の遂行に用いられる。
R1はVEC64モードで影響を受けるVR(575:
288)内のエレメントを指示するのに用いられる。レ
ジスタVGMR1のそれぞれのビットはバンク1のベク
トル目的レジスタの9ビットの更新を制御する。具体的
に、VGMR(i)はVR1d(9i+8:9i)の更
新を制御する。レジスタVGRM1はVEC32モード
では使用されないが、VEC64ではVCMOVM命令
を除いた全ての命令の遂行に影響を及ぼす。
ベクトル算術演算後にオーバフロー結果を含んでいるV
EC64モードでVR(287:0)内のエレメントを
指示するのに用いられる。このレジスタはスカラ算術演
算に修正されない。セットされたビットVOR1(i)
はバイトまたはバイト9の第iエレメント、ハフワード
の第(iidiv2)エレメント、或いはワードデータ
形演算の第(iidiv4)エレメントがオーバフロー
の結果を含んでいることを指示する。例えば、ビット1
とビット3は第1ハフワード及びワードエレメントのオ
ーバフローをそれぞれ指示するように設定される。VO
R0のビットのマッピングはVGMR0或いはVGMR
1のビットのマッピングとは異なる。
ベクトル算術演算後にオーバフローの結果を含んでいる
VEC64モードでVR(575:288)内のエレメ
ントを指示するのに用いられる。レジスタVOR1はV
EC32モードで使用されず、且つスカラ算術演算によ
って修正もされない。セットされたビットVOR1
(i)はバイトまたはバイト9の第iエレメント、ハフ
ワードの第1(iidiv2)エレメント、或いはワー
ドデータ形演算の第(iidiv4)エレメントがオー
バフローの結果を含んでいることを指示する。例えば、
ビット1とビット3はそれぞれVR(575:288)
で第1ハフワードとワードエレメントのオーバフローを
指示し得るようにセットされる。VOR1のビットマッ
ピングはVGMR0或いはVGMR1のビットマッピン
グとは異なる。
IABRはベクトルプログラムデバッグ(debugging)時
にこれを支援する。このレジスタ定義は表27に示され
ている。
VDABRはベクトルプログラムのデバッグ(debuggin
g)時にこれを支援する。表28にレジスタ定義が示さ
れている。
モード命令に対して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になれる現在バンクの目的レジスタを意
味する。
全ての命令に対してVCSR(SMM)=1の時のみな
らず、常にVCMOVMによって用いられる。レジスタ
VMMR1はVEC32モードで影響を受けるVR(5
75:288)内のエレメントを指示する。VMMR1
のそれぞれのビットはバンク1のベクトル目的レジスタ
の9ビットに対する更新を制御する。具体的に、VGM
R01(i)はVRd(9i+8:9i)の更新を制御
する。レジスタVGMR1はVEC32モードで用いら
れない。
YNCはプロセッサ110とプロセッサ120との間に
生産者/消費者形態の同期を提供する。現在、ビット3
0のみが定義されている。ARM7プロセッサは命令
(MFER,MTER,TESTSET)を使用してレ
ジスタVASYNCをアクセスすることができ、ベクト
ルプロセッサ120は状態VP_RUN或いは状態VP
_IDLEにある。レジスタVASYNCはTVP或い
はMFVP命令を通じてARM7プロセッサにアクセス
できないが、これはこれら命令が第1の16ベクトルプ
ロセッサの特殊レジスタに対してアクセスし得ないため
である。ベクトルプロセッサはVMOV命令を通じてレ
ジスタVASYNCをアクセスすることができる。
トルプロセッサの状態を示す。
サが命令を行える前に、ARM7プロセッサ110によ
って初期化される。
ドのデータタイプを意味するか或いは指定する。いくつ
かの命令はソースに対して一つのデータタイプを取り、
結果に対して相違したデータタイプを生成する意味をも
つ。この別添は好ましい実施例で指示されるデータタイ
プを説明する。この出願の表30では支持されるデータ
タイプint8,int9,int16,int32,
及びフロート(float)について説明した。符号の無い整
数フォーマット(unsigned integer format)は支持され
ず、そしてそれの符号の無い整数値はまず使用前に2の
補数フォーマットに変換されるべきである。プログラマ
はオーバフローを適切に処理する限り、その選択による
ある他のフォーマット或いは符号の無い整数フォーマッ
トをもつ算術命令を自由に使用することができる。アー
キテクチャは単に2の補数整数のオーバフロー及び32
ビット浮動小数点データタイプを定義する。アーキテク
チャは符号なしオーバフローの検出に必要な8,9,1
6,或いは32ビット演算のキャリアウトを検出しな
い。
れるデータサイズを示す。
するようにメモリアドレス整列を指定する。即ち、バイ
トに対しては何の整列要求事項もない。ハフワードに対
する整列要求事項はハフワード境界である。ワードに対
する整列要求事項はワード境界である。
されるデータサイズを示す。
ベクトルでレジスタにマッピングされているために、若
干のデータタイプに対して何の定義もされていない結果
をもつ目的レジスタにビットが存在することができる。
実際に、ベクトル目的レジスタに対するバイト9データ
サイズ演算とスカラ目的レジスタに対するワードデータ
サイズ演算以外にも目的レジスタでその値が演算によっ
て定義されていないビットが存在する。これらビットの
ために、アーキテクチャはそれらの値が未定の状態にな
るように指定する。表32は各データサイズに対して定
義されていないビットを示す。
び目的レジスタ或いはメモリのデータタイプを知ってい
なければならない。一つのエレメントサイズから他のエ
レメントサイズへのデータタイプ変換は暫定的にベクト
ルレジスタに相違した数のエレメントが記憶されるよう
にする。例えば、ハフワードのワードデータタイプへの
ベクトルレジスタ変換は同一数の変換されたエレメント
を記憶するのに2つのレジスタを必要とする。逆に、ベ
クトルレジスタで使用者定義されたフォーマットが持て
るワードデータタイプからハフワードフォーマットへの
変換はベクトルレジスタの1/2に同一数のエレメント
と、他の1/2に残りのビットを生成する。いずれか一
つの場合に、データタイプの変換はソースエレメントと
相違したサイズをもつ変換されたエレメントの整列をも
つ構造的な発行(issue)を生成する。
してエレメントの数を密かに変更する演算を提供しな
い。アーキテクチャはプログラマが目的レジスタでエレ
メントの数を変更させる順序を知っていると判断する。
アーキテクチャは只一つのデータタイプから同一サイズ
の他のデータタイプに変換する演算を提供し、一つのデ
ータタイプから異なるサイズの他のデータタイプに変換
する時、プログラマがデータサイズの差異を調整するこ
とを要求する。
NSHFLLのような特殊命令は第1サイズをもつベク
トルから第2データサイズをもつ第2ベクトルへの変換
を単純にする。ベクトルVRa、例えばさらに小さいエ
レメントサイズのint8から、例えばさらに大きいサ
イズのint16へ2の補数データタイプを変換するの
に含まれた基本段階は次のようである。
あるエレメントをバイトデータタイプを使用して2ベク
トル(VRc:VRd)に分割する(shuffle)。VRa
にあるエレメントはダブルサイズレジスタ(VRc:V
Rd)にあるint16データエレメントの下位バイト
に移動させ、その値と関係の無いVRbのエレメントは
VRc:VRdの上位バイトに移動させる。この演算は
各エレメントのサイズをバイトからハフワードにダブル
化される間、VRaエレメントの1/2をVRcに、残
りの1/2をVRdに効果的に移動させる。
メントを算術シフトさせてそれらをサイン拡張させる。
メントサイズのint16から、例えばさらに小さいサ
イズのint8に2の補数データタイプを変換するのに
含まれた基本段階は次のようである。
トがバイトサイズで表現され得るかを保障するためにチ
ェックする。もし必要なら、さらに小さいサイズに合わ
せるために両端のエレメントを飽和(saturate)させる。
あるエレメントを2ベクトルVRc:VRdに結合させ
る(unshuffle)。VRaとVRbにある各エレメントの
上位1/2をVRcに移動させ、下位1/2をVRdに
移動させる。これはVRaの全てのエレメントの下位1
/2をVRdの下位1/2に効果的に集める。
される:int32を単一精密浮動小数点に;単一精密
浮動小数点を固定小数点に(X.Y注解);単一精密浮
動小数点をint32に;int8をInt9に;in
t9をint16に;及びint16をint9に。
ために大部分のベクトル命令はベクトル内から選択され
たエレメントに対してのみ演算を行うようにエレメント
マスクを使用する。ベクトルグローバルマスクレジスタ
(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ビットセットの全てのビットが
ワードデータサイズ演算のためにセットされない場合、
対応するバイトで単にそのビットのみが修正される。
スタをベクトル或いはスカラレジスタ或いはVCMPV
命令を使用した即値と比較することによりセットされる
ことができる。この命令は特定されたビットサイズによ
ってマスクを適切にセットする。スカラレジスタは只一
つのデータエレメントを含むように定義されるので、ス
カラ演算(即ち、目的レジスタがスカラである)はエレ
メントマスクによって影響を受けない。
ために、大部分のMSP命令は3形態のベクトルとスカ
ラ演算を支援する。それらは次のようである: 1.ベクトル=ベクトルopベクトル 2.ベクトル=ベクトルopスカラ 3.スカラ=スカラopスカラ スカラレジスタがBオペランドとして特定されているケ
ース2の場合、スカラレジスタで単一エレメントはベク
トルAオベランド内に多数のエレメントをマッチングさ
せるのに要求されるだけ多く複製される。複製されたエ
レメントは特定されたスカラオペランドでエレメントを
同じ値をもつ。スカラオペランドはスカラレジスタ或い
は命令から即値オペランド(immedoate operand)の形態
になることができる。即値オベランドの場合にもし特定
されたデータタイプが即値フィールドサイズの有用なも
のよりさらに大きいデータサイズを使用する場合、適当
なサイン−拡張が加えられる。
間及び最終結果の精密性に特別な注意が要求される。し
かも、整数マルチプライ(integer multiply)命令は2ベ
クトルレジスタに記憶され得る“2倍精密”中間結果を
生成する。
6,及び32ビットエレメントに対して2の補数整数フ
ォーマットと32ビットエレメントに対してIEEE7
54単一精密フォーマットを支援する。オーバフローは
特定されたデータタイプによって表現され得る一番ポジ
ティブ或いは一番ネガティブ値以上の結果となるように
定義される。オーバフローが発生する時、目的レジスタ
に記録された値は有効番号でない。アンダーフローは単
に浮動小数点演算についてのみ定義される。
動小数点演算はビット(VCSR<RMODE)で特定
された4つのラウンディングモードのうち一つを使用す
る。若干の命令はゼロ(ラウンドイブン)ラウンディン
グモードからラウンドアウェイ(round away)として知ら
れたものを使用する。
応用で重要な機能である。MSPアーキテクチャは全て
の4整数及び浮動小数点演算で飽和を支援する。レジス
タVCSRでビットISATは整数飽和モードを特定す
る。また、速いIEEEモードと周知された浮動小数点
飽和モードはVCSRでFSATビットに特定される。
飽和モードがイネーブルされる時、一番ポジティブ或い
は一番ネガティブ値以上になる結果はそれぞれ一番ポジ
ティブ或いは一番ネガティブ値にセットされる。オーバ
フローはこの場合に発生することができなく、オーバフ
ロービットはセットされることができない。
出されて報告される精密な例外(Precise Exception)に
対するリストを示す。
序において後の方に存在するある番号の命令を実行した
後、検出されて報告される不精密な例外(Imprecise Exc
eption)に対するリストを示す。
令セットは表35に示すように11個の分類を含む。
l)命令に対するリストを示す。
ータタイプを支援し、エレメントマスクによって影響を
受ける。表37は論理(logic)命令リストである。
令はint8,int9,int16及びint32デ
ータタイプ(フロートデータタイプでない)を演算し、
エレメントマスクによって影響を受ける。表38はシフ
ト/ローテート分類命令リストである。
8,int9,int16,int32,及びフローデ
ータタイプを支援し、エレメントマスクによって影響を
受ける。支援されないデータタイプに対する特別な制限
に対しては次の各命令の詳細な説明を参照されたい。V
CMPV命令はそれがエレメントマスクを演算するの
で、エレメントマスクによって影響を受けない。表39
は算術演算命令リストである。
に特に適した命令分類であるが、多様な方式で用いられ
ることができる。MPEG命令はint8,int9,
int16及びint32データタイプを支援し、エレ
メントマスクによって影響を受ける。表40はMPEG
命令リストである。
n)命令は特殊なデータタイプを支援し、アーキテクチャ
がレジスタで1以上のデータタイプを支援しないため
に、エレメントマスクによって影響を受けない。表41
はデータタイプ変換命令リストである。
Arithmetic)分類命令はint8,int9,int1
6,int32及びフローデータタイプを支援する。表
42はインタエレメント算術分類命令リストである。
ove)分類命令はバイト、バイト9、ハフワード及びワー
ドデータサイズを支援する。表43はインタエレメント
ムーブ分類命令リストである。
ト、ハフワード、及びワードデータサイズに加えて特殊
なバイト9に関連したデータサイズ演算を支援し、エレ
メントマスクによって影響を受けない。表44はロード
/ストア分類命令リストである。
命令はint8,int9,int16,int32及
びフローデータタイプを支援し、エレメントマスクによ
って影響を受けない。但し、VCMOVM命令はエレメ
ントマスクによって影響を受ける。表45はレジスタム
ーブ分類の命令リストである。
制御するキャッシュ演算(Cache Operation)分類の命令
リストである。
って特殊な用語が用いられる。例えば、命令オペランド
は他の注釈がない場合、バイト、バイト9、ハフワード
或いはワードサイズの符号付きた2の補数整数である。
単語“レジスタ”は汎用(スカラ或いはベクトル)レジ
スタを指称するのに用いられる。他のタイプのレジスタ
は明らかに説明される。アセンブリ言語構文(syntax)に
おいて、接尾語b,b9,h及びwはデータサイズ(バ
イト、バイト9、ハフワード、及びワード)と整数デー
タタイプ(int8,int9,int16,及びin
t32)の全てを示す。また、命令オペランド、演算、
及びアセンブリ言語構文類の説明に用いられた用語と記
号は次の通りである。
スカラ或いは特殊目的) 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によっ
てアドレスされる。
スされるメモリのワード。ビット(31:24)がEA
+3によってアドレスされる。
プに対するエレメントの数を示す。それはVEC32モ
ードでそれぞれバイト、バイト9、ハフワード、或いは
ワードデータサイズに対して32,16,或いは8であ
る。それはVEC64モードでそれぞれバイト、バイト
9、ハフワード、或いはワードデータサイズに対して6
4,32,或いは16である。スカラ演算の場合、Nu
mElemは0である。
に対するエレメントマスクを示す。それはそれぞれバイ
ト、バイト9、ハフワード、或いはワードデータサイズ
に対してVGMR0/1,〜VGMR0/1,VGMR
0/1,或いは〜VGMR0/1で1,2,或いは4ビ
ットを示す。スカラ演算の場合、EMASK〔i〕=0
であってもエレメントマスクはセットされたと推定す
る。
に対するエレメントマスクを示す。それはそれぞれバイ
ト、バイト9、ハフワード、或いはワードデータサイズ
に対してVMMR0、或いはVMMR1で1,2,或い
は4ビットを示す。
及び状態レジスタ VCSR(x) VCSRで1つのビット或いは複数
のビットを示す。“x”はフィールド名である。
ログラムカウンタ VECSIZE ベクトルレジスタサイズはVEC3
2で32、VEC64モードで64である。
説明するのに用いられる。例外は次のように要約され
る。
されており、下記に説明される。
びキャッシュ演算命令によって用いられ、REARフォ
ーマットでフィールドは表47に与えられたように次の
意味をもつ。
アーキテクチャで未来の拡張時に交換性を保障するため
にゼロになるべきである。B:DとTTフィールドのあ
る符号化は定義されない。
符号化が用いられる時に予想された結果を指定しないた
めに、前記のような符号化を使用してはいけない。表4
8はVEC32とVEC64モードで支援された(LT
としてTTフィールドで符号化された)スカラロード演
算を示す。
時のVEC30モードで支援された(LTとしてTTフ
ィールドで符号化された)ベクトルロード演算を示す。
用いられる。
時のVEC64モードで支援された(LTとしてTTフ
ィールドで符号化された)ベクトルロード演算を示す。
ードでは存在しないので、ビットBは64バイトベクト
ル演算の指示に用いられる。
で支援された(LTとしてTTフィールドで符号化され
た)スカラストア演算リストである。
時のVEC32モードで支援された(LTとしてフィー
ルドTTで符号化された)ベクトルストア演算リストで
ある。
ある時のVEC64モードで支援された(LTとしてT
Tフィールドで符号化された)ベクトルストア演算リス
トである。
ードでは存在しないので、ビットBは64バイトベクト
ル演算の指示に用いられる。
びキャッシュ演算命令によって用いられ、REAIフォ
ーマットでフィールドは表54に与えられたように次の
意味をもつ。
ンスファタイプに対して同一の符号化を適用する。符号
化に対する詳しいことはREARフォーマットを参考さ
れたい。
は2レジスタ及び5ビット即値オペランドを提供する。
表55はRRRM5フォーマットに対するフィールドを
定義する。
れ、アーキテクチャで未来の拡張時に互換性を保障する
ためにゼロになるべきである。
状態がない限り、現在バンク(バンク0或いはバンク1
になることができる)を参照する。表56はDC(1:
0)が00,01,或いは10の時、D:S:M符号化
表である。
符号化は次の表57に示す意味をもつ。
ランドを提供する。
ドを示す。
状態がない限り、現在バンク(バンク0またはバンク1
になることができる)を言及する。
よって使用される。表59はRIフォーマットでフィー
ルドを示す。
化は定義されない。プログラマはこのような符号化が用
いられる時アーキテクチャが予想されたけっかを指定し
ないので、前記のような符号化を使用してはいけない。
Rdにロードされた値は表60に示すようにデータタイ
プによる。
ドを含む。
T]フィールドを使用する。
トを使用し、これはセット状態の時、GT,EQ,及び
LTビットを先行する。VCCSとVCBARRは前述
と異なってCond(2:0)フィールドを解釈する。
詳細な命令説明を参考されたい。
は2レジスタ及び9ビット即値オペランドを指定する。
表62はRRRM9フォーマットのフィールドをを示
す。
しない時、ビット19:15は予約され、未来の互換性
を保障するためにゼロになるべきである。
状態にない限り、現在(バンク0或いはバンク1になす
ることができる)ことるを参照する。D:S:M符号化
は即値フィールドから抽出された即値が表63に示すよ
うにDS(1:0)符号化によって左右されることを除
いてはRRRM5フォーマットに対する表56及び57
に示されたことと同一である。
では有用でない。
順で示されている。注釈: 1.命令は他の状態が存在しない限り、エレメントマス
クによって影響を受ける。CTフォーマット命令はエレ
メントマスクによって影響を受けない。ロード,スト
ア,及びキャッシュ命令からなるREARとREAIフ
ォーマット命令もエレメントマスクによって影響を受け
ない。
ータタイプには有用でない。
形式(form)のみ与えられる。スカラ演算の場合はただ一
つ、0番目のエレメントが定義されたと仮定する。
の場合、次の表64に示す符号化が整数データタイプ
(b,b9,h,w)に対して使用される。
の場合、次の表65に示した符号化がフロートデータタ
イプに用いられる。
ての命令に対してint8,int9,int6,in
t32最大値或いは最小値の制限値はVCSR(ISA
T)ビットがセットされた時に適用される。従って、浮
動小数点結果はVCSR(ISAT)ビットがセットさ
れた時に−無限大,−ゼロ,+ゼロ,或いは+無限大に
飽和される。
を示すために、.b9の代わりに用いられることができ
る。
はベクトルアキュムレータに帰還する浮動小数点結果は
IEEE754単精度フォーマットからなる。浮動小数
点結果はアキュムレータの下位部分に記録され、上位部
分は修正されない。
て中間結果を発生し、その後中間結果にRaの符号が加
算されて得られた最終結果はベクトル/スカラレジスタ
Rdに記憶される。
トルアキュムレータのそれぞれの倍精度エレメントに加
算し、各エレメントの倍精度の和をベクトルアキュムレ
ータと目的レジスタRc,Rdに記憶させる。RaとR
bは指定されたデータタイプを使用するが、VACは適
当な倍精度データタイプ(それぞれint8,int
9,int16,及びint32に対して16,18,
32,及び64ビット)を使用する。それぞれの倍精度
エレメントの上位部分はVACHとRcに記憶される。
もしRc=Rdであれば、Rcの結果は定義されない。
ベクトルアキュムレータのそれぞれの拡張された精密度
エレメントに加算し、低い精密度を目的レジスタ(R
d)にリターンさせる。RaとRb/即値は指定された
データタイプを使用するが、VACは適当な倍精度デー
タタイプ(それぞれint8,int9,int16,
及びint32に対して16、18,32,及び64ビ
ット)を使用する。それぞれの拡張された精密度エレメ
ントの上位部分はVACHに記憶される。
ジスタRdにリターンさせる。
一演算を指定することに留意されたい。
結果を目的レジスタRdにリターンさせる。
一の演算を指定することに留意されたい。
し、その結果を目的レジスタRdにリターンさせる。
いは右側の回転方向を示す。
レメントは右側からゼロ充てん(zerofill)で1ビット位
置だけ左に移動されるか(もしR=0の場合)或いは符
号−拡張で1ビット位置だけ左に移動される(もしR=
1の場合)。この結果はベクトルアキュムレータに記憶
される。
メントは右側からゼロ充てんでスカラレジスタRb或い
はIMMフィールドに与えられた移動量だけ左に移動さ
れ、その結果はベクトル/スカラレジスタRdに記憶さ
れる。オーバフローを発生するそれらエレメントに対し
てその結果はそれらの符号によって最大陽或いは陰の値
に飽和する。移動量は符号のない整数となるように定義
される。
号で得られる点に注意されたい。バイト、バイト9、ハ
フワードデータタイプに対してプログラマはデータサイ
ズのビット数より小さいか同一の移動量を正確に指定す
る義務がある。もし移動量が指定されたデータサイズよ
り大きい場合、エレメントはゼロ充てんされる。
メントは最上位ビット位置で符号−拡張されてスカラレ
ジスタRb或いはIMMフィールドの最下位ビットに与
えられた移動量だけ右に算術的に移動され、その結果は
ベクトル/スカラレジスタRdに記憶される。移動量は
符号のない整数となるように定義される。
号で得られることに注意されたい。バイト、バイト9、
ハフワードデータタイプに対してプログラマはデータサ
イズのビット数より小さいか同一の移動量を正確に指定
する義務がある。もし移動量が指定されたデータサイズ
より大きい場合、エレメントは符号ビットで充てんされ
る。
0,1)の符号減算
結果を生成し、その後中間結果からRaの符号が減算さ
れて得られた最終結果はベクトル/スカラレジスタRd
に記憶される。
の内容はベクトル/スカラレジスタRaの内容から減算
されてその絶対値がベクトル/スカラレジスタRdに記
憶される。
絶対値演算後に発生される。もし飽和モードがイネーブ
ルされる場合ならば、絶対値演算の結果は最大陽数にな
る。
データタイプに対する“打切り”四捨五入モードを指定
するためにVAVGTを使用する。
ラレジスタRbの内容に加算されて中間結果を生成し、
その後中間結果は2で割られ、最終結果はベクトル/ス
カラレジスタRdに記憶される。整数データタイプに対
してT=1の場合、四捨五入モードが打ち切られ、T=
0の場合、ゼロから切り捨てがなされる(デフォール
ト)。フロートデータタイプの場合、四捨五入モードは
VCSR(RMODE)に指定される。
データタイプに対する“打切り”四捨五入モードを指定
するためにVAVGHTを使用する。
タタイプに対する“打切り”四捨五入モードを指定する
ためにVAVGQTを使用する。
fが同一の演算を指定することに留意されたい。
し、その結果は目的レジスタRdにリターンさせる。
で与えられる。
ェアに提供される。この命令は不正密例外の正確な報告
を行うのに用いられる。例えば、もしこの命令が例外を
生じさせる恐れのある算術命令の直後に用いられる場
合、例外はこの命令を番地指定するプログラムカウンタ
に報告される。
ne,ge,ov}。
ブランチでない。
ne,ge,ov}。
ブランチでない。
ーチンにジャンプする。これは遅延したブランチでな
い。もし、VIMSK(cse)が真の場合、VPC+
4(リターンアドレス)がリターンアドレススタックに
セーブされる。もしそうでなければ、実行はVPC+4
で続けられる。
たものよりさらに効率的な方式でVCSRで制御ビット
を変更するために提供される。
ne,ge,ov}。
された場合にARM7をインタラプトする。
合
ne,ge,ov}。
された場合にARM7をインタラプトする。
ンプ
ne,ge,ov}。
る。これは遅延したブランチでない。
(リターンアドレス)がリターンアドレススタックにセ
ーブされる。もしそうでなければ、実行はVPC+4で
続けられる。
ジャンプ
ne,ge,ov}。
プする。これは遅延したブランチでない。
(リターンアドレス)がリターンアドレススタックにセ
ーブされる。もしそうでなければ、実行はVPC+4で
続けられる。
{un,lt,eq,le,gt,ne,ge,o
v}、.fと.wは.fデータタイプが9ビット即値オ
ペランドによって支援されないことを除いては同一の演
算を指定する。
VCMOVMはエレメントマスクによって影響を受け
る。ベクトルアキュムレータで拡張された浮動小数点精
密表現は8エレメントに対する全ての576ビットを使
用する。従って、アキュムレータを含むベクトルレジス
タムーブは.b9データサイズを指定すべきである。
有する条件付ムーブ
{un,lt,eq,le,gt,ne,ge,o
v}、.fと.wは.fデータタイプが9ビット即値オ
ペランドによって支援されないことを除いては同一の演
算を指定する。
け、−VCMOVはエレメントマスクによって影響を受
けない。ベクトルアキュムレータで拡張された浮動小数
点精密表現は8エレメントに対する全ての576ビット
を使用する。従って、アキュムレータを含むベクトルレ
ジスタムーブは.b9データサイズを指定すべきであ
る。
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は仮想である。
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]の時にセットさ
れる。
て、Rdにカウントをリターンする。
レメントサイズ(それぞれバイト、バイト9、ハフワー
ド、或いはワードに対して8,9,16,或いは32)
と同一である。先行ゼロのカウントはエレメント位置の
インデックスと逆関係をもつ(もしVCMPR命令の次
に用いられる場合)。エレメント位置を変換するために
与えられたデータタイプに対するNumElemからV
CNTLZの結果を減算する。
fが同一の演算を指定することに留意されたい。
その結果を目的レジスタRdにリターンさせる。
ン
ne,ge,ov}。
る。これは遅延したブランチでない。
レススタックにセーブされたリターンアドレスから実行
が続けられる。もしそうでなければ、実行はVPC+4
で続けられる。
ーン。
へ、バイト9からハフワード(b9h)へ、或いはハフ
ワードからバイト9(hb9)へ変換する。
プログラマはシャフル(shuffle)演算をもつベクトルレ
ジスタにエレメントの減少した数を調整することが要求
される。hb9モードを有するこのような命令を使用し
た後、プログラマはアンシャフル演算をもつ目的ベクト
ルレジスタにエレメントの増加した数を調整することが
要求される。この命令はエレメントマスクによって影響
を受けない。
(モジュロ32)或いはIMMフィールドによって指定
され、Xの幅が(32−Yの幅)に定義される場合、3
2ビット浮動小数点からフォーマット(X,Y)の固定
小数点実数に変換される。
の命令はアーキテクチャがレジスタ内に多重データタイ
プを支援しないために、エレメントマスクを使用しな
い。この命令は整数データタイプに対してゼロ四捨五入
モードから切り捨てを使用する。
フロートデータタイプに変換され、その結果はベクトル
/スカラレジスタRdに記憶される。
の命令はアーキテクチャがレジスタ内に多重データタイ
プを支援しないために、エレメントマスクを使用しな
い。
ne,ge,ov}。
チする。これは遅延したブランチではない。
る。VCR1が0の時、この命令を実行することはルー
プカウント232−1に効果的にセットする。
ne,ge,ov}。
チする。これは遅延したブランチではない。
る。VCR2が0の時、この命令を実行することはルー
プカウント232−1に効果的にセットする。
ne,ge,ov}。
チする。これは遅延したブランチではない。
る。VCR3が0の時、この命令を実行することはルー
プカウント232−1に効果的にセットする。
はnがスカラレジスタ(Rb或いはIM M)の陽の整数である場合、2nによって分割され、そ
の最終結果はベクトル/スカラレジスタRdに記憶され
る。この命令は四捨五入モードでとして切捨て(ゼロを
向かって四捨五入)を使用する。
られる点に留意されたい。バイト、バイト9、ハフワー
ドデータタイプの場合、プログラマはデータサイズで精
度が低いか同一のNの値を正確に指定する責任がある。
もしそれが指定されたデータサイズの精度よりさらに大
きければ、エレメントは符号ビットで充てんされる。こ
の命令は四捨五入モードとしてゼロを向かって四捨五入
を使用する。
スタ(Rb或いはIMM)の陽の整数の場合、2nによ
って分割され、その最終結果はベクトル/スカラレジス
タRdに記憶される。
られる点に留意されたい。
数はアキュムレータで倍精度符号付き整数である。もし
被除数が単精度の場合、それは倍精度で符号拡張されて
VACOH及びVACOLに記憶されるべきである。除
数はRbで単精度符号付き整数である。
あれば、Rbはアキュムレータの上位から減算され、そ
うでなければ、Rbはアキュムレータの上位に加算され
る。
による除算の場合を検出ことが要求される。
命令はデータサイズの多数倍(即ち、int8データタ
イプに対して8倍、int9に対して9倍、int16
に対して16倍、そしてint32データタイプに対し
て32倍)として実行されるべきである。VDIVI命
令はアキュムレータで初期部分の残りを生成するための
除算ステップ前に一度使用されるべきである。除数はR
bで単精度符号付き整数である。一応、商ビットはステ
ップごとに抽出されてアキュムレータの最下位ビットに
シフトされる。もし部分残りの符号がRbの除数の符号
と同一であれば、Rbはアキュムレータの上位から減算
される。もし同一でなければ、Rbはアキュムレータの
上位に加算される。商ビットはもしアキュムレータで結
果的な部分残り(加算或いは減算)の符号が除数の符号
と同一であれば、1である。そうでなければ、商ビット
はゼロ(0)である。アキュムレータは商ビットが充て
んされた状態で1ビット位置だけ左にシフトされる。除
算ステップの結論として、残りはアキュムレータの上位
に、商はアキュムレータの下位に記録される。商は1の
補数形態である。
る
が同一演算を指定することに留意されたい。
フトし、スカラレジスタRbから充てんする。シフトさ
れた一番左側のエレメントはスカラレジスタRcにリタ
ーンされ、残りのエレメントはベクトルレジスタRdに
リターンされる。
右にシフトする
が同一演算を指定することに留意されたい。
フトし、スカラレジスタRbから充てんする。シフトさ
れた一番右側のエレメントはスカラレジスタRcにリタ
ーンされ、残りのエレメントはベクトルレジスタRdに
リターンされる。
が同一演算を指定することに留意されたい。
ルドによって指定されるRaベクトルレジスタからエレ
メントを抽出してスカラレジスタRdに記憶させる。
ントのように計算されて、その結果はベクトル/スカラ
レジスタRdに記憶される。
ントのように計算されて、その結果はベクトル/スカラ
レジスタRdに記憶される。
が同一の演算を指定する点に留意されたい。
或いはIMMフィールドによって指定されたインデック
スにあるベクトルレジスタRdへ挿入する。
8,16,32,64}、Rd={VRd,VRAd,
SRd}、.wと.fは同一の演算が指定され、.64
とVRAdは共に指定され得ない点に留意されたい。キ
ャッシュオフロードのためにVLOFFを使用する。
レジスタをロードする。
8,16,32,64}、Rd={VRd,VRAd,
SRd}。.bと.ds9は同一の演算が指定され、.
64とVRAdは共に指定され得ない点に注意された
い。キャッシュオフロードのためにVLCBOFFを使
用する。
するENDポインタで指された循環バッファからベクト
ルレジスタまたはスカラレジスタをロードする。
ド前にENDアドレスより大きければ有効アドレスが調
整される。また、循環バッファバウンドはそれぞれ.h
及び.wスカラレジスタについてハーフワード及びワー
ド境界上で整列されるべきである。
想通り作動できない。
EA>BEGINVLD ダブルロード
8,16,32,64}、Rd={VRd,VRAd,
SRd}、.bと.bs9は同一の演算が指定され、.
64とVRAdは一緒に指定され得ない点に留意された
い。キャッシュオフロードのためにVLDOFFを使用
する。
トルレジスタをロードする。
イト9、ハーフワードまたはワードはデータ型によりロ
ードされる。バイト、バイト9及びハーフワードデータ
型の場合、影響されないバイト(バイト9)は修正され
ない。
8,16,32,64}、Rd={VRd,VRAd,
SRd}、.bと.bs9は同一の演算が指定され、.
64とVRAdは共に指定され得ない点に留意された
い。キャッシュオフロードのためにVLQOFFを使用
する。
トルレジスタをロードする。
{VRd,VRAd}、.64とVRAdは一緒に指定
され得ない点に留意されたい。キャッシュオフロードの
ためにVLROFFを使用する。
の命令はスカラ目的レジスタを支援しない。
は最下位ビットLSBの位置にゼロ充てんによってスカ
ラレジスタRb或いはIMMフィールドに与えられた移
動量だけ左に論理的にビット−移動され、その結果はベ
クトル/スカラレジスタRdに記憶される。
号で得られる点に注意されたい。バイト、バイト9、ハ
フワードデータタイプに対してプログラマはデータサイ
ズのビット数より小さいか同一の移動量を正確に指定す
る義務がある。もし移動量が指定されたデータサイズよ
りさらに大きければ、エレメントはゼロ充てんされる。
は最上位ビットMSBの位置にゼロ充てんでスカラレジ
スタRb或いはIMMフィールドに与えられた移動量だ
け右に論理的にビット−移動され、その結果はベクトル
/スカラレジスタRdに記憶される。
号で得られる点に注意されたい。バイト、バイト9、ハ
フワードデータタイプに対してプログラマはデータサイ
ズのビット数より小さいか同一の移動量を正確に指定す
る義務がある。もし移動量が指定されたデータサイズよ
りさらに大きければ、エレメントはゼロで充てんされ
る。
{VRd,VRAd}、.64とVRAdは共に指定さ
れ得ない点に留意されたい。キャッシュオフロードのた
めにVLWSOFFを使用する。
e Control register)としてスカラレジスタSRb+1
を使用してメモリからベクトルレジスタVRdに32バ
イトがロードされる。LTは各ブロックに対するロード
のために連続したバイトの番号とブロックサイズを指定
する。SRb+1は2連続ブロックの始まりを分離する
番号とストライドを指定する。ストライドはブロックサ
イズと同一か或いはさらに大きいべきである。EAは整
列されたデータサイズでなければならない。ストライド
とブロックサイズはデータサイズの多数倍になるべきで
ある。
精度中間結果を生成し、中間結果の各倍精度エレメント
をベクトルアキュムレータの各倍精度エレメントに加算
して、ベクトルアキュムレータに各エレメントの倍精度
の和を記憶させる。 RaとRbは指定されたデータタ
イプを使用し、一方VACは適宜な倍精度データタイプ
を使用する(それぞれint8,int16,及びin
t32に対して16,32,及び64ビット)。各倍精
度エレメントの上位部分はVACHに記憶される。
ランドと結果は単精度である。
りint16データタイプを使用する。
精度中間結果を生成し、中間結果を1ビット左にシフト
させ、シフトさせた中間結果の各倍精度エレメントをベ
クトルアキュムレータの各倍精度エレメントに加算し
て、ベクトルアキュムレータに各エレメントの倍精度の
和を記憶させる。 VRaとRbは指定されたデータタ
イプを使用し、一方VACは適宜な倍精度データタイプ
を使用する(それぞれint8,int16,及びin
t32に対して16,32,及び64ビット)。各倍精
度エレメントの上位部分はVACHに記憶される。
りint16データタイプを使用する。
精度中間結果を生成し、中間結果の各倍精度エレメント
をベクトルアキュムレータの各倍精度エレメントに加算
して、ベクトルアキュムレータに各エレメントの倍精度
の和を記憶させ、目的レジスタVRdに下位部分をリタ
ーンさせる。
用し、一方VACは適宜な倍精度データタイプを使用す
る(それぞれint8,int16,及びint32に
対して16,32,及び64ビット)。各倍精度エレメ
ントの上位部分はVACHに記憶される。
ランドと結果は単精度である。
りint16データタイプを使用する。
精度中間結果を生成し、中間結果の各倍精度エレメント
をRcの各エレメントに加算して、目的レジスタ(Rd
+1:Rd)に各エレメントの倍精度の和を記憶させ
る。
精度中間結果を生成し、中間結果の各倍精度エレメント
をRcの各エレメントに加算して、目的レジスタRdに
各エレメントの下位部分倍精度の和を記憶させる。
ランドと結果は単精度である。
ータからの減算
精度中間結果を生成し、中間結果の各倍精度エレメント
をベクトルアキュムレータの各倍精度エレメントから減
算して、ベクトルアキュムレータに各エレメントの倍精
度の和を記憶させる。
用し、一方VACは適宜な倍精度データタイプを使用す
る(それぞれint8,int16,及びint32に
対して16,32,及び64ビット)。各倍精度エレメ
ントの上位部分はVACHに記憶される。
ランドと結果は単精度である。
りint16データタイプを使用する。
レータ小数部からの減算
精度中間結果を生成し、倍精度中間結果を1ビットだけ
左にシフトし、シフトされた中間結果の各倍精度エレメ
ントをベクトルアキュムレータの各倍精度エレメントか
ら減算して、ベクトルアキュムレータに各エレメントの
倍精度の和を記憶させる。
用し、一方VACは適宜な倍精度データタイプを使用す
る(それぞれint8,int16,及びint32に
対して16,32,及び64ビット)。各倍精度エレメ
ントの上位部分はVACHに記憶される。
りint16データタイプを使用する。
レータローからの減算
精度中間結果を生成し、中間結果の各倍精度エレメント
をベクトルアキュムレータの各倍精度エレメントから減
算して、ベクトルアキュムレータに各エレメントの倍精
度の和を記憶させ、目的レジスタVRdに下位部分をリ
ターンする。
用し、一方VACは適宜な倍精度データタイプを使用す
る(それぞれint8,int16,及びint32に
対して16,32,及び64ビット)。各倍精度エレメ
ントの上位部分はVACHに記憶される。
ランドと結果は単精度である。
りint16データタイプを使用する。
Rbと相違する時、その結果は定義されない。
タエレメントは対で比較され、各データエレメント対の
うちより大きい値がベクトルレジスタRdの偶数位置に
記憶され、各データエレメント対のうちより小さい値が
奇数位置に記憶される。
とRbは構造的に指定されたレジスタ名で示される。
ることは対応する例外を生じさせる。
交替バンク概念がVEC64モードには存在しないの
で、この命令はVEC64モードで交替バンクレジスタ
に対する移動に使用できないことに注意されたい。
精度の結果を生成し、目的レジスタRc:Rdに各エレ
メントの倍精度の和をリターンさせる。
用し、一方Rc:Rdは適宜な倍精度データタイプを使
用する(それぞれint8,int16,及びint3
2に対して16,32,及び64ビット)、各倍精度エ
レメントの上位部分はRcに記憶される。
りint16データタイプを使用する。また、この命令
は拡張された結果が支援されたデータタイプでないの
で、フロートデータタイプを支援しない。
精度中間結果を生成し、その結果をアキュムレータに記
録させる。
ランドと結果は単精度である。
りint16データタイプを使用する。
精度中間結果を生成し、倍精度中間結果を1ビットだけ
左にシフトして、その結果をアキュムレータに記録させ
る。
りint16データタイプを使用する。
精度中間結果を生成し、倍精度中間結果を1ビットだけ
左にシフトして、その結果の上位部分を目的レジスタ
(VRd+1)にリターンし、その結果の下位部分を目
的レジスタVRdにリターンさせる。VRdは偶数番号
のレジスタでなければならない。
りint16データタイプを使用する。
精度中間結果を生成し、倍精度中間結果を1ビットだけ
左にシフトして、シフトされた中間結果を上位部分に対
して四捨五入し、上位部分を目的レジスタ(VRd)に
リターンさせる。
りint16データタイプを使用する。
精度中間結果を生成し、その結果の下位部分を目的レジ
スタVRdにリターンする。
ランドと結果は単精度である。
りint16データタイプを使用する。
の演算を指定することに留意されたい。
ンドにある対応するビットを論理的にNANDし、その
結果をRdにリターンさせる。
一の演算を指定することに留意されたい。
ンドにある対応するビットを論理的にNORし、その結
果をRdにリターンさせる。
一の演算を指定することに留意されたい。
ンドにある対応するビットを論理的にORし、その結果
をRdにリターンさせる。
一の演算を指定することに留意されたい。
ンドにある対応するビットの補数を論理的にORし、そ
の結果をRdにリターンさせる。
or k=all bits in element i: } 例外 無しVPFTCH 事前取出し
ュラインを予め取り出す。キャッシュラインの数は次の
ように指定される: LN(1:0)=00:1つの64バイトキャッシュラ
インが予め取り出され。る LN(1:0)=01:2つの64バイトキャッシュラ
インが予め取り出される。
キャッシュラインが予め取り出される。
キャッシュラインが予め取り出される。
ウンダリにない場合、それは64バイトバウンダリに整
列されるように先に打ち切られる。
示す。
PFTCHSPは同一の演算コードをもつ 説明 メモリから臨時パッドに多数の64バイトブロックを伝
送する。有効アドレスはメモリに開始アドレスを提供
し、SRpは臨時パッドに開始アドレスを提供する。6
4バイトブロックの数は次のように指定される。
ブロックが伝送される。
ブロックが伝送される。
ブロックが伝送される。
ブロックが伝送される。
ウンダリになければ、それは64バイトバウンダリに整
列されるように先に打ち切られる。もしSRpの臨時パ
ッドポインタアドレスが64バイトバウンダリになけれ
ば、それはまた64バイトバウンダリに整列されるよう
に先に打ち切られる。整列された臨時パッドポインタア
ドレスは伝送されたバイト数だけ増分される。
スカラレジスタRb或いはIMMフィールドに与えられ
たビット量だけ左に回転され、その結果はベクトル/ス
カラレジスタRdに記憶される。
号で得られる点に注意されたい。バイト、バイト9、ハ
フワードデータタイプに対してプログラマはデータサイ
ズのビット数より小さいか同一の回転量を正確に指定す
る義務がある。もし回転量が指定されたデータサイズよ
りさらい大きければ、結果は定義されない。nだけ左に
回転することはElemSize−nだけ右に回転する
のと等しく、ここでElemSizeは与えられたデー
タサイズのビットの番号を示す。
スカラレジスタRb或いはIMMフィールドに与えられ
たビット量だけ右に回転され、その結果はベクトル/ス
カラレジスタRdに記憶される。
号で得られる点に注意されたい。バイト、バイト9、ハ
フワードデータタイプに対してプログラマはデータサイ
ズのビット数より小さいか同一の回転量を正確に指定す
る義務がある。もし回転量が指定されたデータサイズよ
りさらい大きければ、結果は定義されない。nだけ右に
回転することはElemSize−nだけ左に回転する
のと等しく、ここでElemSizeは与えられたデー
タサイズのビットの番号を示す。
nf}。
スタRbの内容は一番近い32ビット整数(ワード)に
四捨五入され、その結果はベクトル/スカラレジスタR
dに記憶される。四捨五入モードはRMに定義される。
タイプは9ビット即値で支援されないことに留意された
い。
ベクトル/スカラレジスタRb或いはIMMフィールド
にあるそれの対応する下限値に対してチェックされる。
もしデータエレメントの値が下限値よりさらに小さけれ
ば、それは下限値と同一に設定され、最終結果はベクト
ル/スカラレジスタRdに記憶される。
タイプは9ビット即値で支援されないことに留意された
い。
ベクトル/スカラレジスタRb或いはIMMフィールド
にあるそれの対応する上限値に対してチェックされる。
もしデータエレメントの値が上限値よりさらに小さけれ
ば、それは上限値と同一に設定され、最終結果はベクト
ル/スカラレジスタRdに記憶される。
一の演算を指定することに留意されたい。
混ぜられて(shuffle)、その結果はベクトルレジスタR
c:Rdに記憶される。
一の演算を指定することに留意されたい。
混ぜられて(shuffle)、その結果の上位部分はベクトル
レジスタRdに記憶される。
が同一の演算を指定することに留意されたい。
混ぜられて(shuffle)、その結果の下位部分はベクトル
レジスタRdに記憶される。
32,64},Rs={VRs,VRAs,SR
s}、.bと.b9tは同一の演算が指定され、.64
とVRAsは共に指定され得ない点に留意されたい。キ
ャッシュオフ記憶のためにVSTOFFを使用する。
w;
32,64},Rs={VRs,VRAs,SR
s}、.bと.b9tは同一の演算が指定され、.64
とVRAdは共に指定され得ない点に留意されたい。キ
ャッシュオフロードのためにVSTCBOFFを使用す
る。
ポインタによって境界になった円形バッファからベクト
ルまたはスカラレジスタを記憶する。
アドレスアップデート演算以前のENDアドレスよりさ
らに大きければ、調整される。さらに円形バッファ境界
はそれぞれ.hと.wスカラロードに対してハフワード
及びワード境界に整列されるべきである。
A − END); if(A==1)SRb = EA; MEM[EA] = see table belo
w;
プログラマはこの命令が案の通りに動作するように次の
条件を保障すべきである: BEGIN<EA<2* END−BEGIN 即ち、EA>BEGIN及びEA−END<END−B
EGINVSTD ダブル記憶
32,64},Rs={VRs,VRAs,SR
s}、.bと.b9tは同一の演算が指定され、.64
とVRAsは共に指定され得ない点に留意されたい。キ
ャッシュオフ記憶のためにVSTDOFFを使用する。
クトルレジスタを記憶する。
w;
32,64},Rs={VRs,VRAs,SR
s}、.bと.b9tは同一の演算が指定され、.64
とVRAsは共に指定され得ない点に留意されたい。キ
ャッシュオフ記憶のためにVSTQOFFを使用する。
クトルレジスタを記憶する。
w;
32,64},Rs={VRs,VRAs,SR
s}、.64とVRAdは一緒に指定され得ない点に留
意されたい。キャッシュオフ記憶のためにVSTROF
Fを使用する。
命令はスカラデータソースレジスタを支援しない。
s,VRAs}、.64モードは支援されず、その代わ
りVSTを使用することに留意されたい。キャッシュオ
フ記憶のためにVSTWSOFFを使用する。
e Control Register)としてスカラレジスタSRb+1
を使用してベクトルレジスタVRsからメモリに32バ
イトが記憶される。
たバイトの番号とブロックサイズを指定する。SRb+
1は2連続ブロックの始まりを分離するバイトの番号と
ストライドを指定する。
は大きくなければならない。EAは整列されたデータサ
イズでなければならない。ストライドとブロックサイズ
はデータサイズの多数倍になるべきである。
ラレジスタRaの内容から減算され、その結果はベクト
ル/スカラレジスタRdに記憶される。
され、VCSRにVFLAGビットがセットされる。
b VUNSHFL.dt VRc,VRd,VRa,SR
b ここで,dt={b、b9、h、w、f}。.wと.f
は同一な演算を指定することに注意する。
ルレジスタVRc:VRdにRbとアンシャッフルされ
る。
が同一の演算を指定することに留意されたい。
アンシャフル(unshuffle) され、その結果の上位部分は
ベクトルレジスタRdにリターンされる。
しない。
が同一の演算を指定することに留意されたい。
アンシャフル(unshuffle) され、その結果の上位部分は
ベクトルレジスタRdにリターンされる。
が指定されたキャッシュライン(EAとタグが一致する
ものと反対)はそれが修正されたデータを含む場合、メ
モリにアップデートされる。もし1以上のキャッシュラ
インが指定される場合、次の順次的なキャッシュライン
はそれらが修正されたデータを含む場合、メモリにアッ
プデートされる。キャッシュラインの数は次のように指
定される: LN(1:0)=00:1つの64バイトキャッシュラ
インが記録される。
キャッシュラインが記録される。
キャッシュラインが記録される。
キャッシュラインが記録される。
になければ、それは64バイトバウンダリに整列される
ように先に打ち切られる。
示す。
WBACKSPは同一の演算コードを使用する。
送する。有効アドレスはメモリに開始アドレスを提供
し、SRpは臨時パッドに開始アドレスを提供する。6
4バイトブロックの数は次のように指定される: LN(1:0)=00:1つの64バイトブロックが記
録される。
ブロックが記録される。
ブロックが記録される。
ブロックが記録される、もし有効アドレスが64バイト
バウンダリになければ、それは64バイトバウンダリに
整列されるように先に打ち切られる。もしSRpの臨時
パッドポインタアドレスが64バイトバウンダリになけ
れば、またそれは64バイトバウンダリに整列されるよ
うに先に打ち切られる。整列された臨時パッドポインタ
アドレスは伝送されたバイトの数だけ増分される。
ラレジスタRbの内容に論理的にXNORされ、その結
果はベクトル/スカラレジスタRdに記憶される。
ラレジスタRbの内容に論理的にXORされ、その結果
はベクトル/スカラレジスタRdに記憶される。
OR)
9は同一の演算を示す
れ、1ビット結果はSRdの最下位ビットにリターンさ
れる。この命令はエレメントマスクによって影響を受け
ない。
ロセッサのブロック図。
プロセッサのブロック図。
出しユニットのブロック図。
出しユニットのブロック図。
タ対レジスタ命令に対するステージ実行パイプラインを
示した段階図。
命令の実行のための実行パイプラインを示した段階図。
令語の実行のための実行パイプラインを示した段階図。
ータパスのブロック図。
ァイルのブロック図。
論理ユニットのブロック図。
ド/記憶ユニットブロック図。
サの命令セットのフォーマット図。
Claims (6)
- 【請求項1】 ベクトルレジスタを含むレジスタファイ
ルと、 命令を復号化する間レジスタファイルから選択されたベ
クトルレジスタを識別し、命令を実行する間処理される
データエレメントに対するサイズを識別するデコーダ
と、 ベクトルレジスタに接続された処理回路とから構成さ
れ、前記処理回路は命令の実行時、選択されたベクトル
レジスタのデータに対する多数回の並列演算を行い、並
列演算の数はデータエレメントのサイズによって制御さ
れることを特徴とするベクトルプロセッサ。 - 【請求項2】 各ベクトルレジスタは固定サイズをもっ
ていることを特徴とする請求項1記載のベクトルプロセ
ッサ。 - 【請求項3】 デコーダの識別可能なサイズは8ビッ
ト、9ビット、16ビット、及び32ビットであること
を特徴とする請求項1記載のベクトルプロセッサ。 - 【請求項4】 命令を復号化する間、デコーダは命令の
実行中に処理されるデータエレメントのタイプを識別す
ることを特徴とする請求項1記載のベクトルプロセッ
サ。 - 【請求項5】 デコーダの識別可能なタイプは整数と浮
動小数点データ型であることを特徴とする請求項4記載
のベクトルプロセッサ。 - 【請求項6】 ベクトルレジスタにデータを記憶する段
階と、 ベクトルレジスタを識別するレジスタ番号とベクトルレ
ジスタでデータエレメントに対するサイズを識別するサ
イズフィールドとを含む命令を形成する段階と、 多数の並列演算を実行することにより命令を実行する段
階とから構成され、それぞれの演算はベクトルレジスタ
のデータエレメントに対応し、サイズフィールドは並列
に実行される演算数を制御することを特徴とするベクト
ルプロセッサの演算方法。
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)
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)
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)
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 |
-
1996
- 1996-08-19 US US08/699,597 patent/US6058465A/en not_active Expired - Lifetime
- 1996-08-26 US US08/703,434 patent/US5978838A/en not_active Expired - Lifetime
-
1997
- 1997-04-07 KR KR1019970012763A patent/KR100267091B1/ko not_active IP Right Cessation
- 1997-08-14 DE DE19735350A patent/DE19735350B4/de not_active Expired - Lifetime
- 1997-08-18 FR FR9710441A patent/FR2752630B1/fr not_active Expired - Lifetime
- 1997-08-19 TW TW086111969A patent/TW358313B/zh not_active IP Right Cessation
- 1997-08-19 CN CN97117404A patent/CN1112635C/zh not_active Expired - Lifetime
- 1997-08-19 JP JP9222416A patent/JPH10134036A/ja active Pending
- 1997-08-19 TW TW086111963A patent/TW366455B/zh not_active IP Right Cessation
Cited By (21)
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 |