JP2011108265A - アライメントまたはブロードキャスト命令を含むマルチメディア・コプロセッサの制御メカニズム - Google Patents

アライメントまたはブロードキャスト命令を含むマルチメディア・コプロセッサの制御メカニズム Download PDF

Info

Publication number
JP2011108265A
JP2011108265A JP2011016901A JP2011016901A JP2011108265A JP 2011108265 A JP2011108265 A JP 2011108265A JP 2011016901 A JP2011016901 A JP 2011016901A JP 2011016901 A JP2011016901 A JP 2011016901A JP 2011108265 A JP2011108265 A JP 2011108265A
Authority
JP
Japan
Prior art keywords
coprocessor
instruction
bits
instructions
processor
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.)
Granted
Application number
JP2011016901A
Other languages
English (en)
Other versions
JP5634898B2 (ja
Inventor
Maghielse William
マギエルス,ウィリアム
Wing Yu
ユー,ウィン
Nigel Paver
ペーバー,ナイジェル
Jebson Anthony
ジェブソン,アンソニー
Jianwei Liu
リュー,チャンウェイ
Kailesh Bavaria
ババリア,ケイレシュ
Rupal Parikh
パリク,ルパル
Deli Deng
デング,デリ
Mukesh Patel
パテル,ムケシュ
Mark Fullerton
フラートン,マーク
Murli Ganeshan
ガネシャン,マーリ
Stephen Strazdus
ストラダス,スチーブン
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Marvell World Trade Ltd
Original Assignee
Marvell World Trade Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Marvell World Trade Ltd filed Critical Marvell World Trade Ltd
Publication of JP2011108265A publication Critical patent/JP2011108265A/ja
Application granted granted Critical
Publication of JP5634898B2 publication Critical patent/JP5634898B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30181Instruction operation extension or modification
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • G06F9/30014Arithmetic instructions with variable precision
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30032Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30072Arrangements for executing specific machine instructions to perform conditional operations, e.g. using predicates or guards
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30094Condition code generation, e.g. Carry, Zero flag
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/30101Special purpose registers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/30105Register structure
    • G06F9/30112Register structure comprising data of variable length
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3816Instruction alignment, e.g. cache line crossing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3824Operand accessing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3842Speculative instruction execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3877Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3877Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor
    • G06F9/3879Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor for non-native instruction execution, e.g. executing a command; for Java instruction set
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Mathematical Physics (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Executing Machine-Instructions (AREA)
  • Advance Control (AREA)

Abstract

【課題】複数コプロセッサへの命令のビット空間をよりよい方法にする。
【解決手段】プロセッサに基づくシステム22はメイン・プロセッサ24および複数のコプロセッサ26を含む。コプロセッサ26によって実行されるデータ処理動作を指定するメイン・プロセッサ24のコプロセッサ命令は、ターゲット・コプロセッサを識別するためのコプロセッサ識別フィールドを含む。データ要素はソース・レジスタからデスティネーション・レジスタへブロードキャストされる。データ要素のサイズ指定は、2つのビットがバイト(8ビット),ハーフ・ワード(16ビット),ワード(32ビット)およびダブル・ワード(64ビット)を含む4つのデータ・サイズのうちの1つを示し、他の2ビットは飽和タイプを示す。
【選択図】図1

Description

本発明は、データ処理の分野に関する。さらに詳しくは、本発明は、コプロセッサを組み込んだデータ処理システムに関する。
メイン・プロセッサ(main processor)とコプロセッサ(coprocessor)の両方を組み
込んだデータ処理システムを提供することが知られている。いくつかのシステムでは、1またはそれ以上の異なるコプロセッサにメイン・プロセッサを提供することができると知られている。この場合、それぞれのコプロセッサは異なるコプロセッサ番号によって識別することができる。
メイン・プロセッサの命令のデータ・ストリーム中に遭遇したコプロセッサ命令は、コプロセッサに結合されたバス上に出される。バスに接続された1またはそれ以上のコプロセッサ(各々は関連するハードワイヤードのコプロセッサ番号を有する)は、コプロセッサ番号をチェックし、その命令に対するターゲット(目標)コプロセッサかどうかを判断する。目標コプロセッサである場合、それらはメイン・プロセッサへ受付信号を発行する。メイン・プロセッサが受付信号を受信しない場合、それは未定義命令に対処する例外状態に入ることができる。
コプロセッサ命令がメイン・プロセッサ命令のサブセットであるとすれば、多くの場合、命令のビット空間はコプロセッサのために制限される。コプロセッサが非常に多くの広範囲の動作を備える豊富な命令セットを要求する場合、これらの問題はより悪化する。
したがって、コプロセッサのための命令をより明確な形で表わす、よりよい方法が必要である。
本発明の一実施例に従って図1に示されるように、データ処理システム22は、メイン・プロセッサまたは実行コア24、マルチメディア・コプロセッサ26、キャッシュ・メモリ28、および、入出力システム32を含む。入出力システム32は、本発明の一実施例であるワイヤレス・インターフェイス33へ結合されてもよい。
動作において、メイン・プロセッサ24は、キャッシュ・メモリ28および入出力システム32との対話を含む一般的なタイプのデータ処理命令を制御する一連のデータ処理命令を実行する。コプロセッサの命令は、一連のデータ処理命令内に埋め込まれている。メイン・プロセッサ24は、これらのコプロセッサ命令を、接続されたコプロセッサ26によって実行されるべきタイプであると認識する。従って、メイン・プロセッサ24は、これらのコプロセッサ命令をコプロセッサ・バス36上に出し、接続されたいずれのコプロセッサもそこから命令を受け取る。この場合、コプロセッサ26は、コプロセッサが検出するすべての受け取ったコプロセッサのために意図されたコプロセッサ命令を受け取り実行する。この検出は、コプロセッサ命令内のコプロセッサ番号領域(フィールド)および指定されたコプロセッサ用の有効な命令の符号化の組合せを介してなされる。
図2を参照して、マルチメディア・コプロセッサ26は、転送バッファ46を含むコプロセッサ・インターフェイス・ユニット(CIU)34を含む。転送バッファ46は、コプロセッサ・レジスタ(MCR)への転送およびコプロセッサ(MRC)からの転送を促進する。CIU34は、さらに格納バッファ48およびロード・バッファ50を含んでもよい。CIU34は、乗算累算ユニット36、シフトおよび置換ユニット38、および、算術論理演算ユニット(ALU)/論理ユニット40と通信を行なう。CGR44は補助レジスタを含む。複数のマルチプレクサ(MUX)は、様々なユニット間のデータ転送を促進する。
レジスタ・ファイル(RF)ユニット42は複数のレジスタを含む。一実施例において、RFユニット42は16個のレジスタを含む。各命令に対して、3つのレジスタ42aが割り当てられる。本発明のいくつかの実施例では、2つのソース・レジスタおよび1つのデスティネーション・レジスタ42aが各命令に割り当てられる。本発明の一実施例に従って、第1のソース・レジスタはwRnと指定され、第2のソース・レジスタはwRmと指定され、また、デスティネーション・レジスタはwRdと指定される。
コプロセッサ命令は、条件付きで実行することができる。その手段は条件付きで実行され、その命令は図1のメイン・プロセッサ算術フラグ25a,25bが所定の条件と一致するかどうかを判断することによりチェックされる条件を有する。
次に図3に移り、いくつかの実施例では、64ビットの単一命令で複数のデータを処理する(SIMD:single instruction multiple data)算術演算は、コプロセッサ・データ処理(CDP)命令を通じて行なわれる。2つのソースおよび1つのデスティネーション・オペランドを含む3つのオペランド命令が使用されてもよい。コプロセッサは、8,16,32および64ビット値で動作することができ、いくつかの実施例では、条件付きで実行される。ある場合には、加算と減算は、キャリー付き加算と同様に行なうことができる。ゼロ、負、キャリーおよびオーバフローの検出は、すべてSIMDフィールドでなされる。さらに、SIMDフィールド幅への符号付き飽和は、符号なし飽和と一緒に達成されてもよい。
加算命令は、8,16または32ビットの符号付きまたは符号なしデータのベクトルのためにソース・レジスタ(wRnとwRm)内容のベクトル加算を行なう。その命令は、その結果をデスティネーション・レジスタwRdに置く。飽和は、符号付き、符号なしあるいは飽和なしとして指定される。
飽和(saturation)は、動作の結果生じるビット数が有効な範囲を超える場合に生起することに関係する。飽和なしでは、結果における下位ビットだけが示される。符号なし飽和(US:unsigned saturation)で、0から最大範囲までのビットが示される。符号付
き飽和(SS:signed saturation)では、正の最大から負の最大の値までのビットが示
される。飽和タイプに続く擬似コードでは、SSとUSはそれらがオプションであることを示すために中括弧の中で示される。
オペランドのサイズは、1バイトまたは8ビット、ハーフ・ワードまたは16ビット、あるいはワードまたは32ビットである。いくつかの状況では、16ビットはワードと、32ビットはダブル・ワードと、および、64ビットはクワッド・ワードと呼ばれる。バイトSIMDの場合には、デスティネーション・レジスタ(wRd)中の番号が付けられたバイト位置は、それぞれ、ソース・レジスタ(wRnとwRm)中の同じバイト位置の合計を指定のデータ・サイズ(例えばバイト・サイズとしての8)に飽和させる結果である。
Figure 2011108265
ハーフ・ワードの場合:
Figure 2011108265
最後に、ワードSIMDが識別される場合:
Figure 2011108265
エンコードの結果、32ビット命令の場合、ビット0から3がwRmソース・レジスタ向けであり、ビット4は0であり、ビット5から7は動作を識別し、加算命令の場合には100である。ビット8から11はコプロセッサ番号を識別するが、このような関係では1である。ビット12から15がデスティネーション・レジスタに与える一方、ビット16から19はソース・レジスタwRn向けである。
ビット20,21は飽和タイプを提供する。飽和なしについては、ビットは00であり、符号なし飽和(US)については01であり、また、符号付き飽和(SS)については11である。ビット22,23は、オペランドのサイズを提供する。1バイト・サイズのオペランドについてはビット22,23は00であり、ハーフ・ワードについてはビットは01であり、また、ワードについてはビットは10である。ビット24から27はコプロセッサ動作を示す1110である。次の議論は、コプロセッサ命令を指定する、ビット27から24が1110であると仮定する。ビット28から31は、条件付き実行が適用可能かどうか示す。条件付き実行は自由に指定される。
減算動作は、8,16または32ビットである符号付きまたは符号なしデータのベクトルのためにwRnからwRmのベクトル減算を行ない、その結果をwRdに置く。また、飽和を指定することができる。SIMDが8ビットまたは1バイトである状況に対して:
Figure 2011108265
命令がハーフ・ワードである場合:
Figure 2011108265
最後に、ワードが指定される場合:
Figure 2011108265
ビット5から7がベクトル減算を特定する101を示す以外、その符号化は加算動作のために前述されたのと同じである。
したがって、図4を参照して、ブロック62では、加算または減算命令の場合に、加算または減算命令を含むかどうかを判断するためにビット5から7が分析される。加算命令に対するビットは100であり、また、減算命令については101である。加算または減算を含む場合、ブロック66で判断されるように、ビット8から11が分析される。判断ブロック68でのチェックは、分析されたビットがマルチメディア・コプロセッサが指定されていることを示すかどうかを判断する。そうでないならば、判断ブロック69でのチェックで、条件付き実行が指定されたかどうかが判断される。そうならば、判断ブロック71でのチェックで、算術レジスタ25中のフラグの状態が判断される。もし条件が満たされることをフラグが示す場合、命令の実行は継続し、そうでなければ、フローは次の命令に移る。
ビット22,23はブロック70で分析される。判断ブロック71で判断されるように、ビットが0と0である場合、オペランド・サイズは1バイトである。同様に、判断ブロック72で判断されるように、ビットが0と1である場合、オペランド・サイズはハーフ・ワードである、そうでなければ、命令は無効(ビット22,23は両方とも1である)、または、オペランド・サイズはフルワードである。フローにおいて、無効のオプションは、ここおよび次の命令に対して両方とも明瞭のために省略されている。そのサイズはブロック74で設定される。
次に、ビット20,21がブロック76で分析される。判断ブロック78で判断されるように、これらのビットが0と0である場合、飽和なしが利用される。同様に、判断ブロック80で判断されるように、ビットが0と1である場合、符号なし飽和が提供される。そうでなければ、符号付き飽和が提供される。適切な飽和タイプがブロック82で設定される。
論理演算については、ビット11から8、ビット7から5、および、ビット23から22は、すべて0である。ビット位置21から20の値が00の場合はOR関数と判断され、ビット位置21から20の値が01の場合は排他的OR関数と判断され、ビット位置21から20の値が10の場合はAND関数と判断され、また、ビット位置21から20の値が11の場合はANDN関数と判断される。AND関数では、コプロセッサは、wRnとwRmとの間でビット毎の論理積を行ない、デスティネーション・レジスタwRdにその結果を置く。OR関数では、コプロセッサは、wRnと否定wRmとの間でビット毎の論理和を行ない、デスティネーション・レジスタwRdにその結果を置く。ANDN関数では、コプロセッサは、wRnと否定wRmとの間でビット毎の論理積を行ない、デスティネーション・レジスタwRdにその結果を置く。排他的OR(XOR)関数では、コプロセッサは、wRnとwRmとの間でビット毎の論理的排他ORを行ない、wRdにその結果を置く。例えば、図4に関して示されるように、条件付き実行が指定され実行される。
図5を参照して、判断ブロック84では、ビット・パターンが論理演算に対応するかどうかのチェックが行なわれる。そうでなければ、フローは別のモジュールに進む。しかし、さもなければ、86で示されるように、論理演算が行なわれる。判断ブロック88,90,92では、ビット21,20に基づいて、どのタイプの論理演算が適用されるかに関しての判断がなされる。
アライメント動作(alignment operation)は、64ビット境界のメモリに格納されて
いないデータを扱うための有用な機能を行なう。例えば、単に、64ビットのアライメントの合わされたアドレスからダブル・ワードの64ビットのデータをロードすることができる技術であってもよい。したがって、アライメントの合わされていない値が要求される場合、アライメントの合わされていない値がまたがる2つの64ビットのアライメントの合わされたダブル・ワードがレジスタ・ファイルにロードされ、また、アライメント命令が要求された正しい64ビットを取り出すために使用される。これは、正しいアライメントを取り出すために値をシフトしマスクを行なう従来のアプローチを保存する。アライメント命令は、2つのソース・レジスタからバイト境界上の任意の64ビット値を取り出すことができる。
図7は、アライメント命令を適用する例を示す。この例において、要求されるデータは、64ビットのアライメントの合わされたアドレスではないアドレス0x103からの64ビットの値である。この値を得るために、アドレス0x100からのダブル・ワード・データは右のソース・レジスタにロードされ、また、アドレス0x108からのダブル・ワード・データは左のソース・レジスタにロードされる。アライメント命令は3つの指定されたオフセットと共に使用される。これは、右のレジスタ(アドレス0x103−0x107からのバイト)からの5バイトが取り出され、左のレジスタ(アドレス0x108−0x10Aからのバイト)の下位3バイトと結合される。したがって、アライメント命令の実行後、そのデスティネーションにはアドレス0x103から0x10Aまでの所要のデータ、つまりアドレス0x103で64ビットの値を含む。
アライメント・オフセットは、命令の即値形式(immediate form)を使用する即値(immediate)として、または、レジスタ・フォーマットを使用しwCGRxの補助レジスタ
にアライメント・オフセットを置くことにより指定することができる。アドレス・オフセットが、アクセス・アドレスの下位ビットからマスクすることにより作成され、次にwCGRレジスタに転送される場合、後者は有用である。したがって、図7を参照して、実施例においては、3ビットであるビット20から22に、取り出すべき値のバイト・オフセットを指定する、即値アライメント・モード(IMM)を与える。
アライメントのシーケンスが単一サンプルの有限インパルス応答(FIR)フィルタで、前もって知られているとき、即値アライメント命令は有用である。アライメントのシーケンスはそのアルゴリズムが画像圧縮で使用される高速検索アルゴリズムで実行するときに演算される場合、そのレジスタ・アライメント命令は有用である。これらの命令の両方ともレジスタ対上で動作するが、そのレジスタ対はアライメントのオーバヘッドを著しく減少する交互のロードで有効に切り替えられる。
アライメント動作では、ビット8から11は0であり、また、ビット5から7は001である。コプロセッサは、使用されるべきレジスタ・アライメント値を決定するために、ビット位置23,22中に値10を使用する。ビット位置23の値0は、使用されるべき即値アライメント値を決定する。レジスタ・アライメント・モードにおいて、ビット21およびビット20は、CGR44(図2)を介して、4つの補助レジスタのどれをアライメント値に使用するかを決定する。
即値アライメント・モードにおいて、ビット20からビット22は、アライメント・オフセット(0と7の間)を決定する。即値アライメントの中で、コプロセッサは、2つの64ビットのソース・レジスタ(wRn(ビット16から19)およびwRm(ビット0から3))から64ビットの値を取り出し、デスティネーション・レジスタwRd(ビット12から15)にその結果を置く。その命令は、取り出すべき値のバイト・オフセットを指定するために3ビットの中間値を使用する。他の命令のように、ビット4は0であり、ビット24から27は1110であり、また、ビット28から31は条件付き実行に使用される。
図6を参照して、判断ブロック112でのチェックは、アライメント動作がビット・パターンに基づいて指定されているかどうかを決める。判断ブロック106におけるチェックは、そのビットがブロック108,110で設定されるレジスタ・アライメント値を決定するかどうかを決める。そうでなければ、判断ブロック112でのチェックは、ブロック114でセットされる即値アライメント値を示すビット23が0に等しいかどうかを判断する。ブロック116では、ビット20から22はアライメント・オフセットを決定するために使用される。例えば、条件付き実行が、図4中に示されるように、指定され実行される。
レジスタ・アライメント動作は、2つの64ビットのソース・レジスタ(wRnとwRm)から64ビットの値を取り出し、デスティネーション・レジスタwRdにその結果を置く。その命令は、指定された汎用目的のレジスタに格納された3ビットの値を使用し、取り出すべき値のオフセットを指定する。
図22を参照して、シフトおよび置換ユニット38の一部であってもよい置換器300は、アライメント動作を扱う。置換器300は前処理ブロック302,304でソース・レジスタ(SRC1とSRC2)からオペランドを受け取る。ブロック302,304は、ある実施例において1組のマルチプレクサによって実現される。
デコード論理310は、即値(immediate)またはオフセット値と同様に即値またはレ
ジスタ・アライメントのいずれかを指定する制御信号を受け取る。その情報は結合部306で結合され、マルチプレクサ308によって多重化される。
絶対差の合計(SAD)は、wRnとwRmとの間で行なわれ、その結果はwRdに累積される。絶対差の合計は、8または16ビットの符号なしデータ・ベクトルに適用され、SIMDの並列の絶対差計算の結果を累積する。ビット11から8は0001でなければならない。ビット7から5は001でなければならず、また、ビット23および21は0でなければならない。ビット20は、最初にアキュミュレータを0にすべきかどうかを決定するために使用される。例えば、図4に示されるように、条件付き実行が指定され実行される。ビット22はバイトまたはハーフ・ワードのSIMD計算を決定するために使用される。Bが指定される場合、wRd [word 1]=0である。Zは、最初にキュミュレータをゼロにすることを示すために指定され、その場合:
Figure 2011108265
Hが指定される場合、ハーフ・ワードSIMDを示して、その場合:
Figure 2011108265
図8を参照して、判断ブロック112でのチェックでは、ビット・パターンがブロック114の中で設定されるSAD動作を指定しているかどうかが判断される。もしそうならば、判断ブロック116でのチェックで、ビット20が0かどうかを判断されるが、ブロック118の中で示されるように、0はアキュミュレータをゼロにすることを要求する。判断ブロック120でのチェックは、ビット22が0かどうかを判断するが、0はバイト・サイズの計算を示す。そうでない場合、ブロック124に示されるように、ハーフ・ワードが設定される。
コプロセッサは、ソース・オペランドをデスティネーション・レジスタへアンパックするアンパック動作を行なうことができる。2つのモード、すなわち、インターリーブ型アンパック、および、拡張型アンパックがある。インタリーブ・モードにおける2つのソース・オペランドおよびSIMDフィールドを拡張する単一のソース・オペランドのみがある。ソース・データはバイト、ハーフ・ワードまたはワードである。コプロセッサは2つのソース・オペランドをSIMDフィールドの幅を同じに残したままアンパックおよびインターリーブすることができる。また、ソース・オペランドの下位または上位半分をアンパックすることもできる。さらに、各SIMD幅を2倍にして、単一のソース・オペランドをアンパックすることもできる。単一のソース・アンパック値をゼロ拡張することができ、単一のソース・アンパック値を符号拡張することができる。各SIMDフィールドのために最終結果のフラグ(NとZ)上に飽和セットを設定することができる。例えば、図4の中で示されるように、条件付き実行が指定され、実行されてもよい。
ビット8から11は0000である。ビット7から6は11であり、また、ビット5は、それが上位または下位アンパックかどうかを決める。ビット位置22,23は、データ・サイズを決定するために使用される。バイト・サイズに対してビット22,23は00であり、ハーフ・ワード・サイズに対しては01であり、ワード・サイズに対しては10である。ビット20は、拡張モードまたはインタリーブ・モードが選択されているかどうかを判断する。インタリーブ・モードについては、そのビットは1である。ビット21は、符号拡張すべきかゼロ拡張するべきかを決め、ビットが1である場合に符号を付すように設定される。ビット5の値は、ソース・オペランドの下位または上位のいずれをアンパックすべきかを決める。下位のアンパックについては、そのビットは1であり、また、上位のアンパックについては、そのビットは0である。
図9を参照して、判断ブロック124でのチェックは、アンパック動作がビット・パターンによって指定されているかどうかを判断する。もしそうであるならば、判断ブロック128でのチェックは、ビット23,22がバイト・サイズ、ハーフ・ワード・サイズまたはワード・サイズ・データのいずれを示すかを判断する。次に、判断ブロック138でのチェックはビット20が1に等しいかどうかを判断し、1はブロック140に示されるようにインタリーブ・モードを示し、そうでないならブロック142に示されるように拡張モードを示す。判断ブロック144でのチェックはビット21が1に等しいかどうかを判断し、1は符号モードを示し、そうでなければブロック148に示されるようにゼロ拡張を示す。判断ブロック150でのチェックはビット5が1に等しいかどうかを判断し、ブロック152の中で示されるように1は下位のアンパック・モードを示す。そうでなければ、ブロック154の中で示されるように、上位のアンパック・モードが設定される。
上位拡張モードのアンパック動作は、8ビット、16ビットまたは32ビットのデータをwRnソース・レジスタの上部半分からアンパックし、各フィールドをゼロまたは符号拡張し、その結果をデスティネーション・レジスタwRnに入れる。上位符号なし拡張は、図10Aに示され、上位符号付き拡張は、図10Bに示される。
命令インタリーブ・ハイモード・アンパックは、8ビット、16ビットまたは32ビットのいずれかのデータをwRnの上部半分からアンパックし、wRmの上部半分とインターリーブし、その結果をデスティネーション・レジスタwRdに置く。アンパック・インタリーブ・ハイモード命令は、図11に示される。
下位拡張アンパック命令は、8ビット、16ビットまたは32のビット・データをソース・レジスタであるwRnの下位半分からアンパックし、各フィールドにゼロまたは符号を拡張し、その結果をデスティネーション・レジスタwRdに入れる。下位符号なし拡張は図12Aに示され、また、下位符号付き拡張は図12Bに示される。
最後に、アンパック・インタリーブ下位は、8ビット、16ビットまたは32ビットのいずれかのデータをwRnの下位半分およびwRmの下位半分からアンパックし、その結果をデスティネーション・レジスタwRdに置く。アンパック・インタリーブ下位命令は図13に示される。
パック動作は、2つのソース・レジスタからのデータを単一のデスティネーション・レジスタにパックする。ソース・データは、ハーフ・ワード、ワードまたはダブル・ワードとすることができる。パック中に符号付き飽和および符号なし飽和を使用することができる。ビット8から11は0000であり、また、ビット5から7は100である。ビット位置22,23の値はデータ・サイズを定める。ハーフ・ワードのデータ・サイズはビット01と設定され、またワードのデータ・サイズはビット10と設定され、さらにダブル・ワードのデータ・サイズはビット11と設定される。位置20,21における値は飽和タイプを決定する。符号なし飽和はビット01と指定され、また符号付き飽和はビット11と設定される。パック命令はwRnとwRmからのデータをwRdにパックするが、16、32または64ビット・データのベクトルがwRmは上位にパックされwRnは下位半分にパックされる。その結果はデスティネーション・レジスタwRdに飽和させられ、かつ置かれる。パックは符号付きまたは符号なし飽和で行なうことができる。ハーフ・ワードに対しては:
Figure 2011108265
フルワードに対しては:
Figure 2011108265
ダブル・ワードに対しては:
Figure 2011108265
図14を参照して、判断ブロック150でのチェックは、判断ブロック150およびブロック152に示されるように、パック動作が指定されることをビット・パターンが示しているかどうかを判断する。そうであるならば、判断ブロック154,158でのチェックは、ハーフ・ワード、ワードまたはダブル・ワードが指定されるかどうかを決める。判断ブロック164でのチェックは、ビット21,20が符号なし飽和(ブロック166)または符号付き飽和(ブロック168)を示すかどうかを決める。例えば、図4に示されるように、条件付きの実行が指定され実行される。
平均2命令は、wRnおよびwRmの2値の平均を8または16ビット・データの符号なしベクトル上で+1の任意の丸めで行ない、その結果をデスティネーション・レジスタwRdに置く。ソース・データは1バイトまたはハーフ・ワードで、任意の丸めモードである。ビット8から11は0000であり、ビット23は1であリ、またビット21は0であリ、そしてビット7から5は000である。ビット位置22の値はデータ・サイズを決定する。0に等しいビット22は1バイトのデータ・サイズを示し、また、1はハーフ・ワードのデータ・サイズを示す。ビット20は、丸めるか、丸めないかを決定する。1のビットは丸めることを決定し、0のビットは丸めない。例えば、図4に示されるように、条件付き実行が指定され実行される。
図15を参照して、判断ブロック168では、平均2命令が指定されているかどうかに関して判断され、ビット・パターンがそのように示されている場合、ブロック170で設定される。判断ブロック172でのチェックは、データ・サイズがハーフ・ワード(ブロック176)かまたはバイト(ブロック174)かを決める。判断ブロック178でのチェックは、丸めを行なう(ブロック180)かまたは丸めを行なわない(ブロック182)かのいずれが指定されたかを判断する。
バイト・サイズのSIMDが生じる場合:
Figure 2011108265
ハーフ・ワードのSIMDが生じる場合:
Figure 2011108265
シャッフル(shuffle)動作によって、8ビットの中間値によって指定されるソース・
レジスタ中の16個のビット・フィールドからデスティネーション・レジスタwRd中に16個のビット・データを選択することができる。それは、ソースの任意のハーフ・ワードがデスティネーションで任意のハーフ・ワードに置かれることを可能にする。ビット8から11は0001であり、また、ビット5から7は111である。ハーフ・ワード0のために選ばれる値は、ビット1,0の値によって決定される。ハーフ・ワード1のために選ばれる値は、ビット2,3の値によって決定される。ハーフ・ワード2のために選ばれる値は、ビット20,21の値によって決定される。ハーフ・ワード3のために選ばれる値は、ビット23,22の値によって決定される。例えば、図4に示されるように、条件付き実行が、指定され実行される。
図16を参照して、判断ブロック184でのチェックは、そのビット・パターンから、ブロック186で設定されるシャッフル動作が指定されているかどうかを判断する。ブロック188は、ソース・レジスタ中のどのビットがデスティネーション・レジスタ中のどのフィールドにシャッフルされるかを判断する。ブロック190では、デスティネーション・レジスタ中の16ビットの値は、ソース・レジスタにおけるフィールドの4つの16ビット値の1つから選択される。これは4つの各SIMDフィールドに対して繰り返される。例えば、図4で示されるように、条件付き実行が、指定され実行される。
累積(accumulate)動作は、SIMDワードのフィールドすべての加算を累積する。それは、バイト、ハーフ・ワードまたはワード・データ形式で動作することができる。ビット8から11は0001である。ビット5から7は110であリ、また、ビット21,20は00である。ビット23,22はソースのデータ・タイプを判断するが、ビット00に対してはバイト・データのソースを、ビット01に対してはハーフ・ワードを、ビット10に対してはワードと判断する。
図17を参照して、判断ブロック196では、判定は、累積動作(ブロック198)が指定されているかどうかを判断する。その場合は、ビット23,20が分析され、バイト・データのソースが(ブロック202)に対して提供されているかどうか、ハーフ・ワード・データのソースが(ブロック206)に対して提供されているかどうか、あるいはワード・データのソースが(ブロック208)に対して提供されているかどうかを判断する。
命令である累積は、ソース・レジスタwRnのフィールド全域にわたり符号なし累積を行ない、その結果をデスティネーション・レジスタwRdに書く。バイトのSIMDが指定される場合:
Figure 2011108265
ハーフ・ワードSIMDが指定される場合:
wRd = wRn[63:48] + wRn[47:32] + wRn[31:16] + wRn[15:0]
ワードが指定される場合:
wRd = wRn[63:32] + wRn[31:0]
最大(maximum)および最小(minimum)動作は、各ソース・フィールドから最大値または最小値を対応するデスティネーション・フィールドに置く。ソース・データは、バイト、ハーフ・ワードまたはワードである。それは符号付きオペランドまたは符号なしオペランドを使用して比較することができる。ビット11から8は0001でなければならない。ビット7から5は011である。ビット位置23,22における値はデータ・サイズを決定する。すなわち、00については、バイトのデータ・サイズであるとは判断され、01については、ハーフ・ワードのデータ・サイズであるとは判断され、また、10については、ワードのデータ・サイズであるとは判断される。ビット21は、符号付きまたは符号なし比較を行なうべきかどうかを決める。ビット20は、最大値または最小値を選択するべきかどうかを決める。最大は、0の値を有するビット20に対して選択される。条件付き実行が指定されることがあり、例えば、図4の中で示されるように実行される。
図18を参照して、判断ブロック210でのチェックは、ブロック212で示される最大または最小動作が指定されているかどうかを判断する。ビット23から20が判断ブロック214,218で分析され、バイト(ブロック216)、ハーフ・ワード(ブロック220)またはワード(ブロック222)のデータ・サイズが指定されているかどうかを決める。判断ブロック224でのチェックは、符号付き(ブロック226)または符号なし(ブロック228)比較が割り当てられているかどうかを決める。最後に、判断ブロック230でのチェックは、その動作が最大(ブロック232)であるのか、または最小(ブロック234)であるのかを決める。
最大動作は、wRnおよびwRmからの要素が8、16および32ビット・データのベクトルである場合、最大のベクトルを選択し、その最大のフィールドをデスティネーション・レジスタwRdに置く。8ビットまたはバイトのSIMDが指定されている場合:
Figure 2011108265
ハーフ・ワードのSIMDが指定されている場合:
Figure 2011108265
ワードが指定されている場合:
Figure 2011108265
最小動作は、wRnおよびwRmからの要素が8、16および32ビット・データのベクトルである場合、最小のベクトルを選択し、その最小のフィールドをデスティネーション・レジスタwRdに置く。8ビットまたはバイトのSIMDが指定されている場合:
Figure 2011108265
ハーフ・ワードのSIMDが指定されている場合:
Figure 2011108265
ワードが指定されている場合:
Figure 2011108265
比較(compare)動作は、ソース・オペランドを比較し、うまくいく場合デスティネー
ション・フィールドにすべて1を置く。比較がうまくいかない場合、デスティネーション・フィールドにすべてゼロを置く。「等しい(equal)」、符号なしオペランドあるいは
符号付オペランドで「より大きい(if greater than)」、の比較をすることができる。
ビット11から8は0000であり、また、ビット7から5は011である。データ・サイズを決定するために、ビット位置22,23中の値を使用する。バイトのデータ・サイズに対しては、その値は00であり、ハーフ・ワードのデータ・サイズについては、その値は01であり、そして、ワードのデータ・サイズについては、その値は10である。「等しい」または「より大きな場合」の比較を選択すべきか否かを判断するためにビット20を使用する。符号付きまたは符号なし「より大きい」の比較を選択すべきか否かを判断するためにビット21を使用する。例えば、図4で示されるように、条件付き実行が、指定され実行される。
比較「等しい」は、8、16または32ビットのデータ・ベクトルに対しwRnおよびwRmのベクトルの同一比較を行ない、ソース・オペランドが等しい場合wRdの対応するデータ要素をすべて1に設定し、そうでなければwRdの対応するデータ要素をすべてゼロに設定する。バイトのSIMDが指定される場合:
Figure 2011108265
ハーフ・ワードが指定される場合:
Figure 2011108265
ワードが指定される場合:
Figure 2011108265
比較「より大きい」の動作は、8、16および32ビット・データのベクトルに対するwRnおよびwRmのベクトル絶対値比較を行ない、wRnの対応するフィールドがwRmより大きいとき、wRdの対応するデータ要素をすべて1に設定する。そうでなければ、wRdをすべてゼロに設定する。その動作は、符号付きデータまたは符号なしデータ上で実行される。符号付きデータが使用されるとき、符号付き比較が指定される。バイト・サイズのSIMDが指定される場合:
Figure 2011108265
ハーフ・ワードが指定される場合:
Figure 2011108265
ワードが指定される場合:
Figure 2011108265
図19を参照して、判断ブロック236でのチェックは、比較動作が指定されているかどうかが判断され、指定されている場合、ブロック238へ行く。判断ブロック240,244では、バイト(ブロック242)、ハーフ・ワード(ブロック246)またはワード(ブロック248)のデータ・サイズが指定されているかどうかに関して判断がなされる。判断ブロック256でのチェックは、その動作が「より大きい」動作(ブロック258)あるいは「等しい」動作(ブロック260)のいずれであるかを判断する。判断ブロック250では、符号付きまたは符号なしの「より大きな」計算が割り当てられているかどうかが判断される。
ブロードキャスト(broadcast)動作は、メイン・プロセッサ中のソース・レジスタ(
Rn)からコプロセッサ中のSIMDデスティネーション・レジスタ(wRd)のすべてのフィールドへ値をブロードキャストする。例えば、バイト(8ビット)データの要素が、64ビット容量を有するデスティネーション・レジスタwRd中の8つのデスティネーション・データ要素のすべてへ転送されてもよい。別の実施例として、ワード(32ビット)がデスティネーション・レジスタ中の2つの位置に置かれてもよい。さらに別の実施例として、ハーフ・ワード(16ビット)が、デスティネーション・レジスタ中の4つのデータ要素すべてへ転送されてもよい。ビット11から8は0000であり、ビット23から21は010で、また、ビット5は0である。ビット位置7,6の値は、デスティネーション・レジスタのデータ・サイズを決定する。バイトに対してはビット7,6は00であり、ハーフ・ワードについてはビット7,6は01であり、また、ワードについてはビット7,6は10である。バイト・サイズのSIMDに関しては、その値はwRdのすべての場所に入れられる。ハーフ・ワード・サイズについては、その値は、wRdに4回置かれる。ワード・サイズについては、その値はwRdに2回置かれる。
条件付きの実行はビット28から31に指定され、例えば、図4に示されるように実行される。ビット24から27は1110であり、ビット20は0であり、ビット16から19はwRd向けであり、ビット12から15はwRn向けであり、ビット4は1であり、そして、ビット0から3は0000である。
図20を参照して、判断ブロック262では、ブロードキャスト(ブロック264)が指定されるかどうかに関して判断がなされる。判断ブロック266,270はビット6,7を分析し、デスティネーション・データのサイズがバイト(ブロック268)、ハーフ・ワード(ブロック272)またはワード(ブロック274)かどうかを判断する。
シフト(shift)動作は、16、32または64ビット・データのベクトルに対して、
wRmだけwRnをベクトル論理左シフトを行ない、その結果をwRdに置く。シフト値を含むレジスタをコード化するためにビット0から3を使用する。ビット8は、シフト値がメイン中またはCGR44(wCGRm)中のレジスタのいずれから来るかを決めるために使用される。指定されたG−修飾子を備えるシフト命令は、wRmフィールドで指定された汎用目的のレジスタに格納されたシフト値を使用する。ビット23,22は、オペランドのサイズを決定する。ビット位置7から5の値010はシフト動作を決定する。ビット位置21,22の値01は論理左シフトを示す。ビット位置21,22の値00は論理右シフトを示す。ビット位置21,20の値10は論理右シフトを示し、また、ビット位置21,20中の値11はローテート(回転)を示す。条件付きの実行が指定されることがあり、例えば、図4に示されるように実行される。
論理左シフトのために、ハーフ・ワードが指定される場合:
Figure 2011108265
32ビットのワードが指定される場合:
Figure 2011108265
ダブル・ワードが指定される場合:
Figure 2011108265
右シフト動作のために、16、32のまたは64ビット・データ・サイズのベクトルに対して、wRmだけwRnをベクトル論理シフトさせ、その結果をwRdに置く。ハーフ・データのサイズに対しては:
Figure 2011108265
そうでなければ、ワードのデータ・サイズに対して:
Figure 2011108265
ダブル・ワードが指定される場合:
Figure 2011108265
16、32または64ビット・データのベクトルに対して、wRmだけwRnのベクトル論理右シフトさせ、その結果はwRdに置かれる。ハーフ・ワードが指定される場合:
Figure 2011108265
ワードが指定される場合:
Figure 2011108265
ダブル・ワードが指定される場合:
Figure 2011108265
16、32または64ビット・データのベクトルに対して、wRmだけwRnのベクトル論理右シフトさせ、その結果はデスティネーション・レジスタwRdに置かれる。ハーフ・ワードが指定される場合:
Figure 2011108265
ワードが指定される場合:
Figure 2011108265
ダブル・ワードが指定される場合:
Figure 2011108265
図21を参照して、シフト動作(ブロック278)は判断ブロック276で決定される。ビット0から3がブロック280で分析され、そのシフト値のためにレジスタをコード化する。ブロック282では、ビット8が分析され、そのシフト値がメインまたは補助のレジスタ・ファイルにあるかどうかを判断する。ブロック284では、ビット23,22は、オペランドのサイズを判断する。ブロック286では、ビット21,20はシフト・タイプを判断する。
要約すると、ここに議論された命令は、明示されたビット・セット(7−5,23−20,11−8)に対して次のコード化を使用する。
Figure 2011108265
本発明は限られた数の実施例に関して説明されたが、当業者はそれらに対する多くの修正および変更を理解しているであろう。添付の請求項は、このような修正および変更をすべてカバーするように意図されており、本発明の精神および範囲に含まれるものである。
本発明の一実施例に従うデータ処理システムを概略的に図示する。 本発明の一実施例に従うコプロセッサを図示する。 本発明の一実施例に従う動作のためのビット・シーケンスの動作図である。 本発明の一実施例に従うフローチャートである。 本発明の一実施例に従う論理演算のためのフローチャートである。 本発明の一実施例に従うアライメント動作のためのフローチャートである。 本発明の一実施例に従う1つの動作の動作図である。 本発明の一実施例に従う絶対差合計の動作のためのフローチャートである。 本発明の一実施例に従うアンパック動作のためのフローチャートである。 本発明の一実施例に従う別の動作の動作図である。 本発明の一実施例に従う別の動作の動作図である。 本発明の一実施例に従う別の動作の動作図である。 本発明の一実施例に従う別の動作の動作図である。 本発明の一実施例に従う別の動作の動作図である。 本発明の一実施例に従う別の動作の動作図である。 本発明の一実施例に従うパック動作のためのフローチャートである。 本発明の一実施例に従う平均2動作のためのフローチャートである。 本発明の一実施例に従うシャッフル動作のためのフローチャートである。 本発明の一実施例に従う累算動作のためのフローチャートである。 本発明の一実施例に従う最大/最小動作のためのフローチャートである。 本発明の一実施例に従う比較動作のためのフローチャートである。 本発明の一実施例に従うブロードキャスト動作のためのフローチャートで ある。 本発明の一実施例に従うシフト動作のためのフローチャートである。 図2中に示されるシフトおよび置換ユニットのための置換器の1つの実施 例の概略ブロック図である。

Claims (38)

  1. コプロセッサのための命令を提供する方法において、
    データ処理命令のストリームに応じてメイン・プロセッサを使用してデータ処理を実行する段階であって、前記データ処理命令は少なくとも1つのコプロセッサ命令を含む、段階と、
    少なくとも1つのコプロセッサ命令のために2つのソース・レジスタおよび1つのデスティネーション・レジスタを提供する段階であって、前記レジスタはデータ要素を含む、段階と、
    コプロセッサによって実行されるデータ処理動作を指定するオペコード、および、前記コプロセッサ命令のためのターゲット・コプロセッサを識別するためのコプロセッサ識別フィールドを含むコプロセッサ命令を提供する段階であって、前記命令はデータ要素を前記ソース・レジスタの1つから前記デスティネーション・レジスタの要素へブロードキャストする、段階と、
    を含むことを特徴とする方法。
  2. データ要素を前記デスティネーション・レジスタのすべての要素へブロードキャストする命令を提供する段階を含むことを特徴とする請求項1記載の方法。
  3. ブロードキャストされる前記データ要素のサイズを指定する段階を含むことを特徴とする請求項1記載の方法。
  4. ブロードキャストされる8、16または32ビットのデータ要素のうちの1つを選択的に指定する段階を含むことを特徴とする請求項3記載の方法。
  5. ビット0から31を割り当て、ビット7から5を動作タイプを示すために使用し、ビット11から8をコプロセッサ番号を示すために割り当て、ビット23および22をオペランド・サイズを示すために割り当て、ビット21および20を飽和タイプを設定するために割り当てる段階を含むことを特徴とする請求項1記載の方法。
  6. ビット27から24を1110に割り当てる段階を含むことを特徴とする請求項1記載の方法。
  7. メイン・プロセッサの算術フラグの状態に依存してコプロセッサ命令を条件付きで実行する段階を含むことを特徴とする請求項1記載の方法。
  8. データ要素をメイン・プロセッサのソース・レジスタからコプロセッサのデスティネーション・レジスタへブロードキャストする命令を提供する段階を含むことを特徴とする請求項1記載の方法。
  9. 命令を実行した場合、プロセッサをベースとするシステムは、
    データ処理命令のストリームに応じてメイン・プロセッサを使用してデータ処理を実行し、前記データ処理命令は少なくとも1つのコプロセッサ命令を含み、
    少なくとも1つのコプロセッサ命令のために2つのソース・レジスタおよび1つのデスティネーション・レジスタを使用し、前記レジスタはデータ要素を含み、
    コプロセッサによって実行されるデータ処理動作を指定するオペコード、および、前記コプロセッサ命令のためのターゲット・コプロセッサを識別するためのコプロセッサ識別フィールドを含むコプロセッサ命令を操作し、前記命令はデータ要素を前記ソース・レジスタの1つから前記デスティネーション・レジスタの要素へブロードキャストする、
    ことを可能にする命令を格納する媒体を含むことを特徴とする物品。
  10. 命令を実行した場合、プロセッサをベースとするシステムは、データ要素を前記デスティネーション・レジスタのすべての要素へブロードキャストする命令を提供することを可能にする命令をさらに格納することを特徴とする請求項9記載の物品。
  11. 命令を実行した場合、プロセッサをベースとするシステムは、ブロードキャストされる前記データ要素のサイズを指定する命令を提供することを可能にする命令をさらに格納することを特徴とする請求項9記載の物品。
  12. 命令を実行した場合、プロセッサをベースとするシステムは、ブロードキャストされる8、16または32ビットのデータ要素のうちの1つを選択的に指定する命令を提供することを可能にする命令をさらに格納することを特徴とする請求項9記載の物品。
  13. 命令を実行した場合、プロセッサをベースとするシステムは、ビット0から31を割り当て、ビット7から5を動作タイプを示すために使用し、ビット11から8をコプロセッサ番号を示すために割り当て、ビット23および22をオペランド・サイズを示すために割り当て、ビット21および20を飽和タイプを設定するために割り当てる命令を提供することを可能にする命令をさらに格納することを特徴とする請求項9記載の物品。
  14. 命令を実行した場合、プロセッサをベースとするシステムは、メイン・プロセッサの算術フラグの状態に依存してコプロセッサ命令を条件付きで実行することを可能にする命令をさらに格納することを特徴とする請求項9記載の物品。
  15. 算術フラグを含むメイン・プロセッサと、
    前記メイン・プロセッサに結合されたコプロセッサであって、前記コプロセッサによって実行されるデータ処理動作を指定するオペコード、および、コプロセッサ命令のためのターゲット・コプロセッサを識別するコプロセッサ識別フィールドを含み、前記コプロセッサはコプロセッサ命令のために2つのソース・レジスタおよびデスティネーション・レジスタを割り当て、前記レジスタはデータ要素を含み、前記コプロセッサはデータ要素を前記ソース・レジスタから前記デスティネーション・レジスタの要素へブロードキャストする命令を含む、コプロセッサと、
    を含むことを特徴とするプロセッサ。
  16. 前記プロセッサは、単一命令複数データのコプロセッサであることを特徴とする請求項15記載のプロセッサ。
  17. 前記コプロセッサは、ビット0から31までを有する命令を使用し、ここでビット7から5は動作タイプを示し、ビット11から8はコプロセッサ番号を示し、ビット23および22はオペランド・サイズを示し、ビット21および20は飽和タイプを設定することを特徴とする請求項15記載のプロセッサ。
  18. 前記命令は、データ要素を前記デスティネーション・レジスタのすべての要素へブロードキャストすることを特徴とする請求項15記載のプロセッサ。
  19. 前記命令は、ブロードキャストされる前記データ要素のサイズを指定することを特徴とする請求項15記載のプロセッサ。
  20. 前記命令は、ブロードキャストされる8、16または32ビットのデータ要素のうちの1つを選択的に指定することを特徴とする請求項19記載のプロセッサ。
  21. 前記コプロセッサは、前記デスティネーション・レジスタおよび前記ソース・レジスタを含む前記メイン・プロセッサを含むことを特徴とする請求項15記載のプロセッサ。
  22. コプロセッサのための命令を提供する方法において、
    データ処理命令のストリームに応じてメイン・プロセッサを使用してデータ処理を実行する段階であって、前記データ処理命令は少なくとも1つのコプロセッサ命令を含む、段階と、
    少なくとも1つのコプロセッサ命令のために2つのソース・レジスタおよび1つのデスティネーション・レジスタを提供する段階と、
    コプロセッサによって実行されるデータ処理動作を指定するオペコード、および、前記コプロセッサ命令のためのターゲット・コプロセッサを識別するためのコプロセッサ識別フィールドを含むコプロセッサ命令を提供する段階と、
    前記ソース・レジスタから値を取り出し、かつ前記値を前記デスティネーション・レジスタに置く命令を実行する段階であって、前記命令はこれらの値が前記ソース・レジスタから取り出されることを可能にするために前記値のオフセットを決定する情報を含む、段階と、
    を含むことを特徴とする方法。
  23. 前記オフセットを前記命令中に提供する段階を含むことを特徴とする請求項22記載の方法。
  24. 前記オフセット情報をどこで見つけるべきかに関する情報を前記命令中に提供する段階を含むことを特徴とする請求項22記載の方法。
  25. 汎用目的のレジスタについて、前記オフセットに関する情報を含む指示を前記命令中に提供する段階を含むことを特徴とする請求項24記載の方法。
  26. メイン・プロセッサの算術フラグの状態に依存してコプロセッサの命令を条件付きで実行することを特徴とする請求項22記載の方法。
  27. 命令を実行した場合に、プロセッサをベースとするシステムは、
    データ処理命令のストリームに応じてメイン・プロセッサを使用してデータ処理を実行し、前記データ処理命令は少なくとも1つのコプロセッサ命令を含み、
    前記少なくとも1つのコプロセッサ命令のために2つのソース・レジスタおよび1つのデスティネーション・レジスタを提供し、
    コプロセッサによって実行されるデータ処理動作を指定するオペコード、および、前記コプロセッサ命令のためのターゲット・コプロセッサを識別するためのコプロセッサ識別フィールドを含むコプロセッサ命令を提供し、
    前記ソース・レジスタから値を取り出し、かつ前記値を前記デスティネーション・レジスタに置く命令を実行し、前記命令はこれらの値が前記ソース・レジスタから取り出されることを可能にするために前記値のオフセットを決定する情報を含む、
    ことを可能にする命令を格納する媒体を含むことを特徴とする物品。
  28. 命令を実行した場合、プロセッサをベースとするシステムは、前記命令中に前記オフセットを提供することを可能にする命令をさらに格納することを特徴とする請求項27記載の物品。
  29. 命令を実行した場合、プロセッサをベースとするシステムは、前記オフセット情報をどこで見つけるべきかに関する情報を前記命令中に提供することを可能にする命令をさらに格納することを特徴とする請求項27記載の物品。
  30. 命令を実行した場合、プロセッサをベースとするシステムは、汎用目的のレジスタについて、前記オフセットに関する情報を含む指示を前記命令中に提供することを可能にする命令をさらに格納することを特徴とする請求項27記載の物品。
  31. 命令を実行した場合、プロセッサをベースとするシステムは、符号付き飽和、飽和なし、および、符号なし飽和を含む3つの異なる飽和タイプを提供することを可能にする命令をさらに格納することを特徴とする請求項27記載の物品。
  32. 命令を実行した場合、プロセッサをベースとするシステムは、メイン・プロセッサの算術フラグの状態に依存してコプロセッサ命令を条件付きで実行することを可能にする命令をさらに格納することを特徴とする請求項27記載の物品。
  33. 算術フラグを含むメイン・プロセッサと、
    前記コプロセッサによって実行されるデータ処理動作を指定するオペコード、および、コプロセッサ命令のためのターゲット・コプロセッサを識別するコプロセッサ識別フィールドを格納する記憶装置であって、前記コプロセッサは前記ソース・レジスタから値を取り出しかつ前記値を前記デスティネーション・レジスタに置き、前記命令はこれらの値が前記ソース・レジスタから取り出されることを可能にするためにその値のオフセットを決定する情報を含む、記憶装置と、
    を含むことを特徴とするコプロセッサ。
  34. 前記コプロセッサは、単一命令複数データのコプロセッサであることを特徴とする請求項33記載のコプロセッサ。
  35. 前記オフセットを前記命令から取り出すことを特徴とする請求項33記載のコプロセッサ。
  36. 前記オフセット情報をどこで見つけるべきかに関する情報を前記命令から取り出すことを特徴とする請求項33記載のコプロセッサ。
  37. 汎用目的のレジスタについて、前記オフセットに関する情報を含む指示を前記命令から取り出すことを特徴とする請求項33記載のコプロセッサ。
  38. 前記コプロセッサはビット0から31を有する命令を使用し、ここでビット7から5は動作タイプを示し、ビット11から8はコプロセッサ番号を示し、ビット23および22はオペランド・サイズを示し、ビット21および20は飽和タイプを設定することを特徴とする請求項33記載のコプロセッサ。
JP2011016901A 2002-08-09 2011-01-28 コプロセッサのための命令を提供する方法、プログラムおよびコプロセッサ Expired - Lifetime JP5634898B2 (ja)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US10/215,756 US6986023B2 (en) 2002-08-09 2002-08-09 Conditional execution of coprocessor instruction based on main processor arithmetic flags
US10/215,756 2002-08-09
US10/263,246 2002-10-02
US10/263,246 US7047393B2 (en) 2002-08-09 2002-10-02 Coprocessor processing instruction with coprocessor ID to broadcast main processor register data element to coprocessor multi-element register

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP2008161911A Division JP5586128B2 (ja) 2002-08-09 2008-06-20 データ処理を実行する方法、記録媒体、プロセッサ、及びシステム

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2014156777A Division JP2014225287A (ja) 2002-08-09 2014-07-31 アライメントまたはブロードキャスト命令を含むマルチメディア・コプロセッサの制御メカニズム

Publications (2)

Publication Number Publication Date
JP2011108265A true JP2011108265A (ja) 2011-06-02
JP5634898B2 JP5634898B2 (ja) 2014-12-03

Family

ID=31494935

Family Applications (3)

Application Number Title Priority Date Filing Date
JP2008161911A Expired - Fee Related JP5586128B2 (ja) 2002-08-09 2008-06-20 データ処理を実行する方法、記録媒体、プロセッサ、及びシステム
JP2011016901A Expired - Lifetime JP5634898B2 (ja) 2002-08-09 2011-01-28 コプロセッサのための命令を提供する方法、プログラムおよびコプロセッサ
JP2014156777A Pending JP2014225287A (ja) 2002-08-09 2014-07-31 アライメントまたはブロードキャスト命令を含むマルチメディア・コプロセッサの制御メカニズム

Family Applications Before (1)

Application Number Title Priority Date Filing Date
JP2008161911A Expired - Fee Related JP5586128B2 (ja) 2002-08-09 2008-06-20 データ処理を実行する方法、記録媒体、プロセッサ、及びシステム

Family Applications After (1)

Application Number Title Priority Date Filing Date
JP2014156777A Pending JP2014225287A (ja) 2002-08-09 2014-07-31 アライメントまたはブロードキャスト命令を含むマルチメディア・コプロセッサの制御メカニズム

Country Status (3)

Country Link
US (6) US6986023B2 (ja)
JP (3) JP5586128B2 (ja)
CN (1) CN100394380C (ja)

Families Citing this family (112)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7392368B2 (en) * 2002-08-09 2008-06-24 Marvell International Ltd. Cross multiply and add instruction and multiply and subtract instruction SIMD execution on real and imaginary components of a plurality of complex data elements
US6986023B2 (en) * 2002-08-09 2006-01-10 Intel Corporation Conditional execution of coprocessor instruction based on main processor arithmetic flags
US7254698B2 (en) * 2003-05-12 2007-08-07 International Business Machines Corporation Multifunction hexadecimal instructions
US7139900B2 (en) * 2003-06-23 2006-11-21 Intel Corporation Data packet arithmetic logic devices and methods
US7610466B2 (en) * 2003-09-05 2009-10-27 Freescale Semiconductor, Inc. Data processing system using independent memory and register operand size specifiers and method thereof
US7275148B2 (en) * 2003-09-08 2007-09-25 Freescale Semiconductor, Inc. Data processing system using multiple addressing modes for SIMD operations and method thereof
US7315932B2 (en) 2003-09-08 2008-01-01 Moyer William C Data processing system having instruction specifiers for SIMD register operands and method thereof
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
US8082419B2 (en) * 2004-03-30 2011-12-20 Intel Corporation Residual addition for video software techniques
US7353244B2 (en) * 2004-04-16 2008-04-01 Marvell International Ltd. Dual-multiply-accumulator operation optimized for even and odd multisample calculations
US7395410B2 (en) * 2004-07-06 2008-07-01 Matsushita Electric Industrial Co., Ltd. Processor system with an improved instruction decode control unit that controls data transfer between processor and coprocessor
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
US7586904B2 (en) * 2004-07-15 2009-09-08 Broadcom Corp. Method and system for a gigabit Ethernet IP telephone chip with no DSP core, which uses a RISC core with instruction extensions to support voice processing
US7447725B2 (en) * 2004-11-05 2008-11-04 International Business Machines Corporation Apparatus for controlling rounding modes in single instruction multiple data (SIMD) floating-point units
US7219213B2 (en) * 2004-12-17 2007-05-15 Intel Corporation Flag bits evaluation for multiple vector SIMD channels execution
US7694114B2 (en) * 2005-06-09 2010-04-06 Qualcomm Incorporated Software selectable adjustment of SIMD parallelism
US7836284B2 (en) * 2005-06-09 2010-11-16 Qualcomm Incorporated Microprocessor with automatic selection of processing parallelism mode based on width data of instructions
US7603575B2 (en) * 2005-06-30 2009-10-13 Woodbridge Nancy G Frequency-dependent voltage control in digital logic
US20070038984A1 (en) * 2005-08-12 2007-02-15 Gschwind Michael K Methods for generating code for an architecture encoding an extended register specification
US7421566B2 (en) * 2005-08-12 2008-09-02 International Business Machines Corporation Implementing instruction set architectures with non-contiguous register file specifiers
US7516299B2 (en) * 2005-08-29 2009-04-07 International Business Machines Corporation Splat copying GPR data to vector register elements by executing lvsr or lvsl and vector subtract instructions
DE102005052061A1 (de) * 2005-11-01 2007-05-16 Carl Zeiss Imaging Solutions G Verfahren und Vorrichtung zur Bildverarbeitung
US7555514B2 (en) * 2006-02-13 2009-06-30 Atmel Corportation Packed add-subtract operation in a microprocessor
US7925862B2 (en) * 2006-06-27 2011-04-12 Freescale Semiconductor, Inc. Coprocessor forwarding load and store instructions with displacement to main processor for cache coherent execution when program counter value falls within predetermined ranges
US7805590B2 (en) * 2006-06-27 2010-09-28 Freescale Semiconductor, Inc. Coprocessor receiving target address to process a function and to send data transfer instructions to main processor for execution to preserve cache coherence
US20070300042A1 (en) * 2006-06-27 2007-12-27 Moyer William C Method and apparatus for interfacing a processor and coprocessor
US9069547B2 (en) * 2006-09-22 2015-06-30 Intel Corporation Instruction and logic for processing text strings
US7865698B1 (en) * 2008-03-27 2011-01-04 Xilinix, Inc. Decode mode for an auxiliary processor unit controller in which an opcode is partially masked such that a configuration register defines a plurality of user defined instructions
US8755515B1 (en) 2008-09-29 2014-06-17 Wai Wu Parallel signal processing system and method
US8918623B2 (en) 2009-08-04 2014-12-23 International Business Machines Corporation Implementing instruction set architectures with non-contiguous register file specifiers
US8904115B2 (en) * 2010-09-28 2014-12-02 Texas Instruments Incorporated Cache with multiple access pipelines
US8959501B2 (en) 2010-12-14 2015-02-17 Microsoft Corporation Type and length abstraction for data types
WO2012100316A1 (en) * 2011-01-25 2012-08-02 Cognivue Corporation Apparatus and method of vector unit sharing
PL3422178T3 (pl) 2011-04-01 2023-06-26 Intel Corporation Przyjazny dla wektorów format instrukcji i jego wykonanie
US20130042091A1 (en) * 2011-08-12 2013-02-14 Qualcomm Incorporated BIT Splitting Instruction
US10318291B2 (en) 2011-11-30 2019-06-11 Intel Corporation Providing vector horizontal compare functionality within a vector register
US9665371B2 (en) * 2011-11-30 2017-05-30 Intel Corporation Providing vector horizontal compare functionality within a vector register
US9792117B2 (en) * 2011-12-08 2017-10-17 Oracle International Corporation Loading values from a value vector into subregisters of a single instruction multiple data register
US10534606B2 (en) 2011-12-08 2020-01-14 Oracle International Corporation Run-length encoding decompression
US9697174B2 (en) 2011-12-08 2017-07-04 Oracle International Corporation Efficient hardware instructions for processing bit vectors for single instruction multiple data processors
US10157061B2 (en) 2011-12-22 2018-12-18 Intel Corporation Instructions for storing in general purpose registers one of two scalar constants based on the contents of vector write masks
WO2013095575A1 (en) * 2011-12-22 2013-06-27 Intel Corporation Broadcast operation on mask register
US9411586B2 (en) * 2011-12-23 2016-08-09 Intel Corporation Apparatus and method for an instruction that determines whether a value is within a range
CN104067224B (zh) 2011-12-23 2017-05-17 英特尔公司 在不同的粒度水平下对数据值进行广播和掩码的指令执行
US10157060B2 (en) 2011-12-29 2018-12-18 Intel Corporation Method, device and system for control signaling in a data path module of a data stream processing engine
EP2798464B8 (en) 2011-12-30 2019-12-11 Intel Corporation Packed rotate processors, methods, systems, and instructions
US9632781B2 (en) * 2013-02-26 2017-04-25 Qualcomm Incorporated Vector register addressing and functions based on a scalar register data value
US9990202B2 (en) 2013-06-28 2018-06-05 Intel Corporation Packed data element predication processors, methods, systems, and instructions
US9323524B2 (en) * 2013-09-16 2016-04-26 Oracle International Corporation Shift instruction with per-element shift counts and full-width sources
US9430390B2 (en) 2013-09-21 2016-08-30 Oracle International Corporation Core in-memory space and object management architecture in a traditional RDBMS supporting DW and OLTP applications
US10331583B2 (en) 2013-09-26 2019-06-25 Intel Corporation Executing distributed memory operations using processing elements connected by distributed channels
CN104298639B (zh) * 2014-09-23 2017-03-15 天津国芯科技有限公司 主处理器与若干协处理器的嵌入式连接方法及连接接口
US20160179530A1 (en) * 2014-12-23 2016-06-23 Elmoustapha Ould-Ahmed-Vall Instruction and logic to perform a vector saturated doubleword/quadword add
US9854261B2 (en) * 2015-01-06 2017-12-26 Microsoft Technology Licensing, Llc. Detecting markers in an encoded video signal
US10210134B2 (en) * 2015-05-21 2019-02-19 Goldman Sachs & Co. LLC General-purpose parallel computing architecture
WO2016187232A1 (en) 2015-05-21 2016-11-24 Goldman, Sachs & Co. General-purpose parallel computing architecture
US10025822B2 (en) 2015-05-29 2018-07-17 Oracle International Corporation Optimizing execution plans for in-memory-aware joins
US20160378480A1 (en) * 2015-06-27 2016-12-29 Pavel G. Matveyev Systems, Methods, and Apparatuses for Improving Performance of Status Dependent Computations
CN105426161B (zh) * 2015-11-12 2017-11-07 天津大学 一种power指令集向量协处理器的译码电路
US10402425B2 (en) 2016-03-18 2019-09-03 Oracle International Corporation Tuple encoding aware direct memory access engine for scratchpad enabled multi-core processors
US10061832B2 (en) 2016-11-28 2018-08-28 Oracle International Corporation Database tuple-encoding-aware data partitioning in a direct memory access engine
US10061714B2 (en) 2016-03-18 2018-08-28 Oracle International Corporation Tuple encoding aware direct memory access engine for scratchpad enabled multicore processors
US10055358B2 (en) 2016-03-18 2018-08-21 Oracle International Corporation Run length encoding aware direct memory access filtering engine for scratchpad enabled multicore processors
US10599488B2 (en) 2016-06-29 2020-03-24 Oracle International Corporation Multi-purpose events for notification and sequence control in multi-core processor systems
US10380058B2 (en) 2016-09-06 2019-08-13 Oracle International Corporation Processor core to coprocessor interface with FIFO semantics
US10402168B2 (en) 2016-10-01 2019-09-03 Intel Corporation Low energy consumption mantissa multiplication for floating point multiply-add operations
US10783102B2 (en) 2016-10-11 2020-09-22 Oracle International Corporation Dynamically configurable high performance database-aware hash engine
US10459859B2 (en) 2016-11-28 2019-10-29 Oracle International Corporation Multicast copy ring for database direct memory access filtering engine
US10176114B2 (en) 2016-11-28 2019-01-08 Oracle International Corporation Row identification number generation in database direct memory access engine
US10725947B2 (en) 2016-11-29 2020-07-28 Oracle International Corporation Bit vector gather row count calculation and handling in direct memory access engine
US10474375B2 (en) 2016-12-30 2019-11-12 Intel Corporation Runtime address disambiguation in acceleration hardware
US10416999B2 (en) 2016-12-30 2019-09-17 Intel Corporation Processors, methods, and systems with a configurable spatial accelerator
US10572376B2 (en) 2016-12-30 2020-02-25 Intel Corporation Memory ordering in acceleration hardware
US10558575B2 (en) 2016-12-30 2020-02-11 Intel Corporation Processors, methods, and systems with a configurable spatial accelerator
WO2019005084A1 (en) * 2017-06-29 2019-01-03 Intel Corporation SYSTEMS, APPARATUSES, AND METHODS FOR VECTORIZED FRACTIONAL MULTIPLICATION OF SIGNED WORDS COMPRISING HIGH RESULTS BOROUGH, SATURATION, AND SELECTION
WO2019005115A1 (en) * 2017-06-30 2019-01-03 Intel Corporation APPARATUS AND METHOD FOR MULTIPLICATION AND CUMULATION OF COMPLEX VALUES
US11294679B2 (en) * 2017-06-30 2022-04-05 Intel Corporation Apparatus and method for multiplication and accumulation of complex values
US10445234B2 (en) 2017-07-01 2019-10-15 Intel Corporation Processors, methods, and systems for a configurable spatial accelerator with transactional and replay features
US10387319B2 (en) 2017-07-01 2019-08-20 Intel Corporation Processors, methods, and systems for a configurable spatial accelerator with memory system performance, power reduction, and atomics support features
US10467183B2 (en) 2017-07-01 2019-11-05 Intel Corporation Processors and methods for pipelined runtime services in a spatial array
US10515049B1 (en) 2017-07-01 2019-12-24 Intel Corporation Memory circuits and methods for distributed memory hazard detection and error recovery
US10445451B2 (en) 2017-07-01 2019-10-15 Intel Corporation Processors, methods, and systems for a configurable spatial accelerator with performance, correctness, and power reduction features
US10469397B2 (en) 2017-07-01 2019-11-05 Intel Corporation Processors and methods with configurable network-based dataflow operator circuits
US10515046B2 (en) 2017-07-01 2019-12-24 Intel Corporation Processors, methods, and systems with a configurable spatial accelerator
US10496574B2 (en) 2017-09-28 2019-12-03 Intel Corporation Processors, methods, and systems for a memory fence in a configurable spatial accelerator
US11086816B2 (en) 2017-09-28 2021-08-10 Intel Corporation Processors, methods, and systems for debugging a configurable spatial accelerator
US10380063B2 (en) 2017-09-30 2019-08-13 Intel Corporation Processors, methods, and systems with a configurable spatial accelerator having a sequencer dataflow operator
US10445098B2 (en) 2017-09-30 2019-10-15 Intel Corporation Processors and methods for privileged configuration in a spatial array
US10565134B2 (en) 2017-12-30 2020-02-18 Intel Corporation Apparatus, methods, and systems for multicast in a configurable spatial accelerator
US10445250B2 (en) 2017-12-30 2019-10-15 Intel Corporation Apparatus, methods, and systems with a configurable spatial accelerator
US10417175B2 (en) 2017-12-30 2019-09-17 Intel Corporation Apparatus, methods, and systems for memory consistency in a configurable spatial accelerator
US10528346B2 (en) 2018-03-29 2020-01-07 Intel Corporation Instructions for fused multiply-add operations with variable precision input operands
US10564980B2 (en) 2018-04-03 2020-02-18 Intel Corporation Apparatus, methods, and systems for conditional queues in a configurable spatial accelerator
US11307873B2 (en) 2018-04-03 2022-04-19 Intel Corporation Apparatus, methods, and systems for unstructured data flow in a configurable spatial accelerator with predicate propagation and merging
US10853073B2 (en) 2018-06-30 2020-12-01 Intel Corporation Apparatuses, methods, and systems for conditional operations in a configurable spatial accelerator
US10459866B1 (en) 2018-06-30 2019-10-29 Intel Corporation Apparatuses, methods, and systems for integrated control and data processing in a configurable spatial accelerator
US10891240B2 (en) 2018-06-30 2021-01-12 Intel Corporation Apparatus, methods, and systems for low latency communication in a configurable spatial accelerator
US11200186B2 (en) 2018-06-30 2021-12-14 Intel Corporation Apparatuses, methods, and systems for operations in a configurable spatial accelerator
US10678724B1 (en) 2018-12-29 2020-06-09 Intel Corporation Apparatuses, methods, and systems for in-network storage in a configurable spatial accelerator
US10817291B2 (en) 2019-03-30 2020-10-27 Intel Corporation Apparatuses, methods, and systems for swizzle operations in a configurable spatial accelerator
US11029927B2 (en) 2019-03-30 2021-06-08 Intel Corporation Methods and apparatus to detect and annotate backedges in a dataflow graph
US10915471B2 (en) 2019-03-30 2021-02-09 Intel Corporation Apparatuses, methods, and systems for memory interface circuit allocation in a configurable spatial accelerator
US10965536B2 (en) 2019-03-30 2021-03-30 Intel Corporation Methods and apparatus to insert buffers in a dataflow graph
US11037050B2 (en) 2019-06-29 2021-06-15 Intel Corporation Apparatuses, methods, and systems for memory interface circuit arbitration in a configurable spatial accelerator
US11907713B2 (en) 2019-12-28 2024-02-20 Intel Corporation Apparatuses, methods, and systems for fused operations using sign modification in a processing element of a configurable spatial accelerator
US11029958B1 (en) * 2019-12-28 2021-06-08 Intel Corporation Apparatuses, methods, and systems for configurable operand size operations in an operation configurable spatial accelerator
US12086080B2 (en) 2020-09-26 2024-09-10 Intel Corporation Apparatuses, methods, and systems for a configurable accelerator having dataflow execution circuits
US11868777B2 (en) * 2020-12-16 2024-01-09 Advanced Micro Devices, Inc. Processor-guided execution of offloaded instructions using fixed function operations
US12073251B2 (en) 2020-12-29 2024-08-27 Advanced Micro Devices, Inc. Offloading computations from a processor to remote execution logic
US11625249B2 (en) 2020-12-29 2023-04-11 Advanced Micro Devices, Inc. Preserving memory ordering between offloaded instructions and non-offloaded instructions
US11921634B2 (en) 2021-12-28 2024-03-05 Advanced Micro Devices, Inc. Leveraging processing-in-memory (PIM) resources to expedite non-PIM instructions executed on a host
US12050531B2 (en) * 2022-09-26 2024-07-30 Advanced Micro Devices, Inc. Data compression and decompression for processing in memory

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS57185540A (en) * 1981-05-11 1982-11-15 Hitachi Ltd Data processor
JPS61250729A (ja) * 1985-04-30 1986-11-07 Fujitsu Ltd シフタ回路
JPH0588887A (ja) * 1991-09-30 1993-04-09 Toshiba Corp データ処理装置
JPH0997178A (ja) * 1995-09-29 1997-04-08 Matsushita Electric Ind Co Ltd 飽和演算処理装置および方法
JPH10512069A (ja) * 1994-12-01 1998-11-17 インテル・コーポレーション パックされたデータのシフト演算を行うプロセッサ
JP2001229138A (ja) * 2000-02-15 2001-08-24 Sony Corp 画像処理装置および画像処理方法
US6282633B1 (en) * 1998-11-13 2001-08-28 Tensilica, Inc. High data density RISC processor
JP2001236496A (ja) * 1999-10-04 2001-08-31 Texas Instr Inc <Ti> 絶対差分の合計および対称濾波用の再構成可能simdコプロセッサ構造
US20020108027A1 (en) * 2001-02-02 2002-08-08 Kabushiki Kaisha Toshiba Microprocessor and method of processing unaligned data in microprocessor

Family Cites Families (61)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4750110A (en) * 1983-04-18 1988-06-07 Motorola, Inc. Method and apparatus for executing an instruction contingent upon a condition present in another data processor
US4873630A (en) * 1985-07-31 1989-10-10 Unisys Corporation Scientific processor to support a host processor referencing common memory
JPS62214464A (ja) 1986-03-17 1987-09-21 Hitachi Ltd データ処理システム
US5073864A (en) * 1987-02-10 1991-12-17 Davin Computer Corporation Parallel string processor and method for a minicomputer
JPS63261449A (ja) * 1987-04-20 1988-10-28 Hitachi Ltd デ−タ処理装置
MY104191A (en) * 1988-09-06 1994-02-28 Mitsubishi Gas Chemical Co Process for producing multilayer printed wiring board
US5420989A (en) * 1991-06-12 1995-05-30 Cyrix Corporation Coprocessor interface supporting I/O or memory mapped communications
US5420809A (en) * 1993-11-30 1995-05-30 Texas Instruments Incorporated Method of operating a data processing apparatus to compute correlation
US5734874A (en) * 1994-04-29 1998-03-31 Sun Microsystems, Inc. Central processing unit with integrated graphics functions
CN1094610C (zh) * 1994-12-02 2002-11-20 英特尔公司 可以对复合操作数进行压缩操作和拆开操作的微处理器
GB9509989D0 (en) * 1995-05-17 1995-07-12 Sgs Thomson Microelectronics Manipulation of data
US5815715A (en) * 1995-06-05 1998-09-29 Motorola, Inc. Method for designing a product having hardware and software components and product therefor
US5696985A (en) * 1995-06-07 1997-12-09 International Business Machines Corporation Video processor
CN103345380B (zh) 1995-08-31 2016-05-18 英特尔公司 控制移位分组数据的位校正的装置
US5721892A (en) * 1995-08-31 1998-02-24 Intel Corporation Method and apparatus for performing multiply-subtract operations on packed data
US6385634B1 (en) * 1995-08-31 2002-05-07 Intel Corporation Method for performing multiply-add operations on packed data
US5936872A (en) * 1995-09-05 1999-08-10 Intel Corporation Method and apparatus for storing complex numbers to allow for efficient complex multiplication operations and performing such complex multiplication operations
JP3701401B2 (ja) * 1996-08-12 2005-09-28 株式会社ルネサステクノロジ 飽和演算命令を有するマイクロプロセッサ
US5838984A (en) * 1996-08-19 1998-11-17 Samsung Electronics Co., Ltd. Single-instruction-multiple-data processing using multiple banks of vector registers
US5805875A (en) * 1996-09-13 1998-09-08 International Computer Science Institute Vector processing system with multi-operation, run-time configurable pipelines
US5893066A (en) * 1996-10-15 1999-04-06 Samsung Electronics Co. Ltd. Fast requantization apparatus and method for MPEG audio decoding
US6006315A (en) * 1996-10-18 1999-12-21 Samsung Electronics Co., Ltd. Computer methods for writing a scalar value to a vector
US6016395A (en) * 1996-10-18 2000-01-18 Samsung Electronics Co., Ltd. Programming a vector processor and parallel programming of an asymmetric dual multiprocessor comprised of a vector processor and a risc processor
US5909572A (en) 1996-12-02 1999-06-01 Compaq Computer Corp. System and method for conditionally moving an operand from a source register to a destination register
US5930519A (en) * 1997-04-30 1999-07-27 Hewlett Packard Company Distributed branch logic system and method for a geometry accelerator
JP3781519B2 (ja) * 1997-08-20 2006-05-31 富士通株式会社 プロセッサの命令制御機構
US5923893A (en) * 1997-09-05 1999-07-13 Motorola, Inc. Method and apparatus for interfacing a processor to a coprocessor
US5933650A (en) * 1997-10-09 1999-08-03 Mips Technologies, Inc. Alignment and ordering of vector elements for single instruction multiple data processing
US8489860B1 (en) * 1997-12-22 2013-07-16 Texas Instruments Incorporated Mobile electronic device having a host processor system capable of dynamically canging tasks performed by a coprocessor in the device
US5996057A (en) * 1998-04-17 1999-11-30 Apple Data processing system and method of permutation with replication within a vector register file
US6282634B1 (en) 1998-05-27 2001-08-28 Arm Limited Apparatus and method for processing data having a mixed vector/scalar register file
US6247113B1 (en) * 1998-05-27 2001-06-12 Arm Limited Coprocessor opcode division by data type
GB2338094B (en) * 1998-05-27 2003-05-28 Advanced Risc Mach Ltd Vector register addressing
US6178500B1 (en) * 1998-06-25 2001-01-23 International Business Machines Corporation Vector packing and saturation detection in the vector permute unit
US6272512B1 (en) * 1998-10-12 2001-08-07 Intel Corporation Data manipulation instruction for enhancing value and efficiency of complex arithmetic
US6529930B1 (en) * 1998-11-16 2003-03-04 Hitachi America, Ltd. Methods and apparatus for performing a signed saturation operation
JP3676237B2 (ja) 1999-01-20 2005-07-27 株式会社ルネサステクノロジ データ処理装置及び演算器
JP2000222208A (ja) * 1999-01-29 2000-08-11 Mitsubishi Electric Corp 情報処理装置、命令割当て制御方法、命令割当て制御装置および命令割当て制御プログラムを記録したコンピュータで読取り可能な記録媒体
GB2355084B (en) * 1999-07-21 2004-04-28 Element 14 Ltd Setting condition values in a computer
US6546480B1 (en) * 1999-10-01 2003-04-08 Hitachi, Ltd. Instructions for arithmetic operations on vectored data
US6430684B1 (en) * 1999-10-29 2002-08-06 Texas Instruments Incorporated Processor circuits, systems, and methods with efficient granularity shift and/or merge instruction(s)
EP1230591B1 (en) * 1999-11-18 2007-01-03 Sun Microsystems, Inc. Decompression bit processing with a general purpose alignment tool
US6671797B1 (en) * 2000-02-18 2003-12-30 Texas Instruments Incorporated Microprocessor with expand instruction for forming a mask from one bit
US6748521B1 (en) * 2000-02-18 2004-06-08 Texas Instruments Incorporated Microprocessor with instruction for saturating and packing data
WO2001063434A1 (en) * 2000-02-24 2001-08-30 Bops, Incorporated Methods and apparatus for dual-use coprocessing/debug interface
US6829697B1 (en) * 2000-09-06 2004-12-07 International Business Machines Corporation Multiple logical interfaces to a shared coprocessor resource
US20020065860A1 (en) * 2000-10-04 2002-05-30 Grisenthwaite Richard Roy Data processing apparatus and method for saturating data values
US20020083311A1 (en) * 2000-12-27 2002-06-27 Paver Nigel C. Method and computer program for single instruction multiple data management
US6754804B1 (en) * 2000-12-29 2004-06-22 Mips Technologies, Inc. Coprocessor interface transferring multiple instructions simultaneously along with issue path designation and/or issue order designation for the instructions
US6889242B1 (en) * 2001-06-29 2005-05-03 Koninklijke Philips Electronics N.V. Rounding operations in computer processor
US7228401B2 (en) * 2001-11-13 2007-06-05 Freescale Semiconductor, Inc. Interfacing a processor to a coprocessor in which the processor selectively broadcasts to or selectively alters an execution mode of the coprocessor
US7853778B2 (en) * 2001-12-20 2010-12-14 Intel Corporation Load/move and duplicate instructions for a processor
US20040073773A1 (en) * 2002-02-06 2004-04-15 Victor Demjanenko Vector processor architecture and methods performed therein
US20030167460A1 (en) * 2002-02-26 2003-09-04 Desai Vipul Anil Processor instruction set simulation power estimation method
US7065546B2 (en) * 2002-04-09 2006-06-20 Sony Electronics Inc. Method of performing quantization within a multimedia bitstream utilizing division-free instructions
JP4202673B2 (ja) * 2002-04-26 2008-12-24 株式会社東芝 システムlsi開発環境生成方法及びそのプログラム
US20030221089A1 (en) * 2002-05-23 2003-11-27 Sun Microsystems, Inc. Microprocessor data manipulation matrix module
US7020873B2 (en) * 2002-06-21 2006-03-28 Intel Corporation Apparatus and method for vectorization of detected saturation and clipping operations in serial code loops of a source program
AU2003256870A1 (en) 2002-08-09 2004-02-25 Intel Corporation Multimedia coprocessor control mechanism including alignment or broadcast instructions
US6986023B2 (en) * 2002-08-09 2006-01-10 Intel Corporation Conditional execution of coprocessor instruction based on main processor arithmetic flags
US7689641B2 (en) * 2003-06-30 2010-03-30 Intel Corporation SIMD integer multiply high with round and shift

Patent Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS57185540A (en) * 1981-05-11 1982-11-15 Hitachi Ltd Data processor
JPS61250729A (ja) * 1985-04-30 1986-11-07 Fujitsu Ltd シフタ回路
JPH0588887A (ja) * 1991-09-30 1993-04-09 Toshiba Corp データ処理装置
JPH10512069A (ja) * 1994-12-01 1998-11-17 インテル・コーポレーション パックされたデータのシフト演算を行うプロセッサ
JPH0997178A (ja) * 1995-09-29 1997-04-08 Matsushita Electric Ind Co Ltd 飽和演算処理装置および方法
US6282633B1 (en) * 1998-11-13 2001-08-28 Tensilica, Inc. High data density RISC processor
JP2001236496A (ja) * 1999-10-04 2001-08-31 Texas Instr Inc <Ti> 絶対差分の合計および対称濾波用の再構成可能simdコプロセッサ構造
JP2001229138A (ja) * 2000-02-15 2001-08-24 Sony Corp 画像処理装置および画像処理方法
US20020108027A1 (en) * 2001-02-02 2002-08-08 Kabushiki Kaisha Toshiba Microprocessor and method of processing unaligned data in microprocessor
JP2002229777A (ja) * 2001-02-02 2002-08-16 Toshiba Corp プロセッサ装置

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
JPN6013001060; Steve Furber: 改訂 ARMプロセッサ 初版, 20011218, 101頁〜103頁、122頁〜126頁, CQ出版株式会社 *
JPN6013001061; Ruby Lee et al.: '"Pathlength Reduction Features in the PA-RISC Architecture"' Compcon Spring '92. Thirty-Seventh IEEE Computer Society International Conference, Digest of Papers. , 19920228, pages:129-135, IEEE *

Also Published As

Publication number Publication date
US20080209187A1 (en) 2008-08-28
US20040034760A1 (en) 2004-02-19
US7047393B2 (en) 2006-05-16
US20070204132A1 (en) 2007-08-30
US20040030863A1 (en) 2004-02-12
CN100394380C (zh) 2008-06-11
JP2009037599A (ja) 2009-02-19
JP5634898B2 (ja) 2014-12-03
US7213128B2 (en) 2007-05-01
CN1688966A (zh) 2005-10-26
US8131981B2 (en) 2012-03-06
JP5586128B2 (ja) 2014-09-10
US20090300325A1 (en) 2009-12-03
JP2014225287A (ja) 2014-12-04
US7373488B2 (en) 2008-05-13
US20040030862A1 (en) 2004-02-12
US6986023B2 (en) 2006-01-10

Similar Documents

Publication Publication Date Title
JP5586128B2 (ja) データ処理を実行する方法、記録媒体、プロセッサ、及びシステム
US8074058B2 (en) Providing extended precision in SIMD vector arithmetic operations
JP2005535966A (ja) アライメントまたはブロードキャスト命令を含むマルチメディア・コプロセッサの制御メカニズム
JP7423886B2 (ja) 論理比較動作を実行するための装置
US20210026634A1 (en) Apparatus with reduced hardware register set using register-emulating memory location to emulate architectural register
US7043518B2 (en) Method and system for performing parallel integer multiply accumulate operations on packed data
JP3547139B2 (ja) プロセッサ
US11188330B2 (en) Vector multiply-add instruction
US6385713B2 (en) Microprocessor with parallel inverse square root logic for performing graphics function on packed data elements
US6334176B1 (en) Method and apparatus for generating an alignment control vector
US20030014457A1 (en) Method and apparatus for vector processing
JP5326314B2 (ja) プロセサおよび情報処理装置
US7861071B2 (en) Conditional branch instruction capable of testing a plurality of indicators in a predicate register
US5958000A (en) Two-bit booth multiplier with reduced data path width
US20020065860A1 (en) Data processing apparatus and method for saturating data values
US5546551A (en) Method and circuitry for saving and restoring status information in a pipelined computer
JP2001501001A (ja) データ処理システムにおける入力オペランド制御
JP3693556B2 (ja) 浮動小数点ユニットにおいてロードバイパスを実行する方法及び装置
JP3547316B2 (ja) プロセッサ
US20060101105A1 (en) Double shift mechanism and methods thereof

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130122

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130422

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130903

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20131129

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20140401

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140731

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

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20140807

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

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20141007

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20141015

R150 Certificate of patent or registration of utility model

Ref document number: 5634898

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R371 Transfer withdrawn

Free format text: JAPANESE INTERMEDIATE CODE: R371

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R360 Written notification for declining of transfer of rights

Free format text: JAPANESE INTERMEDIATE CODE: R360

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R360 Written notification for declining of transfer of rights

Free format text: JAPANESE INTERMEDIATE CODE: R360

R371 Transfer withdrawn

Free format text: JAPANESE INTERMEDIATE CODE: R371

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

EXPY Cancellation because of completion of term