CN1688966A - 包括对准或者广播指令的多媒体协处理器控制机制 - Google Patents

包括对准或者广播指令的多媒体协处理器控制机制 Download PDF

Info

Publication number
CN1688966A
CN1688966A CN03823993.0A CN03823993A CN1688966A CN 1688966 A CN1688966 A CN 1688966A CN 03823993 A CN03823993 A CN 03823993A CN 1688966 A CN1688966 A CN 1688966A
Authority
CN
China
Prior art keywords
instruction
coprocessor
byte
wrn
register
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
CN03823993.0A
Other languages
English (en)
Other versions
CN100394380C (zh
Inventor
W·马希尔斯
W·于
N·帕维尔
A·耶布森
J·刘
K·巴瓦里亚
R·帕里克
D·邓
M·帕特尔
M·福勒尔顿
M·加内桑
S·斯特拉兹杜斯
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.)
Kaiwei International Co
Marvell International Ltd
Marvell Asia Pte Ltd
Original Assignee
Intel Corp
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 Intel Corp filed Critical Intel Corp
Publication of CN1688966A publication Critical patent/CN1688966A/zh
Application granted granted Critical
Publication of CN100394380C publication Critical patent/CN100394380C/zh
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, 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, 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, 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, look ahead
    • G06F9/3877Concurrent instruction execution, e.g. pipeline, 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, look ahead
    • G06F9/3877Concurrent instruction execution, e.g. pipeline, look ahead using a slave processor, e.g. coprocessor
    • G06F9/3879Concurrent instruction execution, e.g. pipeline, 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, look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline, 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)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Executing Machine-Instructions (AREA)
  • Advance Control (AREA)

Abstract

基于处理器的系统(22)可以包括主处理器(24)以及协处理器(26)。所述协处理器(26)处理如下的指令,其包括将由所述协处理器(26)执行的操作的操作码以及用于为协处理器指令识别目标协处理器的协处理器识别字段。两位表明四个数据大小之一,所述数据大小包括字节(8位)、半字(16位)、字(32位)以及双字(64位)。其他两位表明饱和类型。

Description

包括对准或者广播指令的多媒体协处理器控制机制
技术领域
本发明涉及数据处理领域。更具体来讲,本发明涉及包含协处理器的数据处理系统。
背景技术
提供包含主处理器以及协处理器的数据处理系统是众所周知的。在一些系统中,能够向主处理器提供一个或多个不同的协处理器也是为人们所熟知的。在该情况下,不同的协处理器可以由不同的协处理器编号来区别。
将在主处理器的指令数据流中遇到的协处理器指令在总线上发布,其中所述总线与所述协处理器耦合。附于所述总线的一个或多个协处理器(其均具有相关联的硬布线的协处理器编号)检验所述指令的协处理器编号字段,以便确定对于该指令而言它们是否是目标协处理器。如果它们是目标协处理器,那么它们向主处理器发布接受信号。如果所述主处理器没有接收到接受信号,那么它可以进入异常状态来处理未定义指令。
假定所述协处理器指令是主处理器指令的子集,那么在许多环境中,对于协处理器而言,指令位空间是受限的。如果协处理器要求具有大量宽操作的充足指令集,那么会使这些问题更加恶化。
由此,需要更好的方式来为协处理器配制指令。
附图说明
图1示意性地举例说明了依照本发明一个实施例的数据处理系统;
图2举例说明了依照本发明一个实施例的协处理器;
图3是对依照本发明一个实施例的操作的位序列的叙述;
图4是依照本发明一个实施例的流程图;
图5是依照本发明一个实施例的逻辑运算的流程图;
图6是依照本发明一个实施例的对准操作的流程图;
图7是依照本发明一个实施例的一次操作的叙述;
图8是依照本发明一个实施例的绝对差运算的求和的流程图;
图9是依照本发明一个实施例的开包操作的流程图;
图10A是依照本发明一个实施例的另一运算的叙述;
图10B是依照本发明一个实施例的另一运算的叙述;
图11是依照本发明一个实施例的又一运算的叙述;
图12A是依照本发明一个实施例的再一运算的叙述;
图12B是依照本发明一个实施例的另一运算的叙述;
图13是依照本发明一个实施例的另一运算的叙述;
图14是依照本发明一个实施例的打包操作的流程图;
图15是依照本发明一个实施例的平均二操作的流程图;
图16是依照本发明一个实施例的正移操作的流程图;
图17是依照本发明一个实施例的累加运算的流程图;
图18是依照本发明一个实施例的最大值/最小值运算的流程图;
图19是依照本发明一个实施例的比较操作的流程图;
图20是依照本发明一个实施例的广播操作的流程图;
图21是依照本发明一个实施例的移位操作的流程图;以及
图22是用于图2中所示移位和交换单元的换码器的一个实施例的示意性叙述。
具体实施方式
如图1所示,依照本发明一个实施例的数据处理系统22可以包括主处理器或执行核心24,多媒体协处理器26,高速缓冲存储器28和输入/输出系统32。依照本发明的一个实施例,所述输入/输出系统32可以与无线接口33耦合。
在操作中,所述主处理器24执行数据处理指令流,所述数据处理指令流用于控制一般类型的数据处理操作,包括与高速缓冲存储器28以及输入/输出系统32的交互。在数据处理指令流内嵌入有协处理器指令。所述主处理器24认出这些协处理器指令是应该由附属的协处理器26来执行的类型。据此,所述主处理器24在协处理器总线36上发布这些协处理器指令,并且任意的附属协处理器可以从所述协处理器总线36上接收它们。在该情况下,所述协处理器26将接受并且执行任何所接收到的、被检测为用于该协处理器的协处理器指令。此检测是通过在协处理器指令内、组合协处理器编号字段与为所指定的协处理器编码的有效指令来实现的。
参照图2,所述多媒体协处理器26可以包括协处理器接口单元(CIU)34,所述协处理器接口单元34包括转送缓冲器46。所述转送缓冲器46可以便于向协处理器寄存器(MCR)进行转送,并且转送来自于协处理器(MRC)的内容。所述CIU 34还可以包括存储缓冲器48以及载入缓冲器50。所述CIU 34与乘法累加单元36、移位及交换单元38以及算术逻辑单元(ALU)/逻辑单元40通信。所述CGR 44包含辅助寄存器。多个多路复用器(MUX)便于各个单元之间的数据转送。
寄存器堆(RF)单元42可以包括多个寄存器。在一个实施例中,所述RF单元42可以包括十六个寄存器。对于每个指令,可以为其分配三个寄存器42a。在本发明的一些实施例中,可以为每个指令分配两个源寄存器以及一个目的寄存器42a。依照本发明的一个实施例,主要的源寄存器可以被指定为wRn,辅助源寄存器可以被指定为wRm,并且目的寄存器可以被指定为wRd。
协处理器指令可以被有条件地执行。有条件地执行指的是所述指令具有这样的条件,通过确定图1中的主处理器算术标志25a和25b是否与指定的条件匹配来进行检验。
紧接着转向图3,在一些实施例中,64位单指令多数据(SIMD)算术运算可以通过协处理器数据处理(CDP)指令来执行。可以使用三操作数指令,它们包括两个源操作数和一个目的操作数。在一些实施例中,所述协处理器可以对8,16,32和64位值进行操作,并且可以有条件地被执行。在一些情况下,可以执行加减法,以及具有进位的加法。可以对所有SIMD字段执行零、负数、进位以及溢出检测。此外,可以与无符号的饱和一起来执行SIMD字段宽度的有符号饱和。
所述加法指令执行8,16,或者32位有符号或者无符号数据向量的源寄存器(wRn以及wRm)内容的向量加法。所述指令把结果放置在目的寄存器wRd中。饱和可以被指定为有符号的、无符号的或者不饱和的。
饱和涉及到当由运算产生的位数超出有效容量时发生的事情。如果不饱和,那么只存在结果的较低位。如果是无符号饱和(US),那么可以存在从零到最大容量的位。如果是有符号饱和(SS),那么存在从最大正值到最大负值的位。以下的伪码中,在大括号内表明饱和类型SS和US,表示它们是任选的。
操作数的大小可以是一字节或8位,半字或16位,字或32位。在一些环境中,可以将16位称为字、将32位称为双字,并且将64位称为四倍长字。在字节SIMD的情况下,在目的寄存器(wRd)中每个编号的字节定位是使源寄存器(wRn以及wRm)中同一字节位置的和饱和达到指定数据大小(例如,字节长度8)的结果:
wRd[byte 7]=saturate(wRn[byte 7]+wRm[byte 7],{US,SS},8)
wRd[byte 6]=saturate(wRn[byte 6]+wRm[byte 6],{US,SS},8)
wRd[byte 5]=saturate(wRn[byte 5]+wRm[byte 5],{US,SS},8)
wRd[byte 4]=saturate(wRn[byte 4]+wRm[byte 4],{US,SS},8)
wRd[byte 3]=saturate(wRn[byte 3]+wRm[byte 3],{US,SS},8)
wRd[byte 2]=saturate(wRn[byte 2]+wRm[byte 2],{US,SS},8)
wRd[byte 1]=saturate(wRn[byte 1]+wRm[byte 1],{US,SS},8)
wRd[byte 0]=saturate(wRn[byte 0]+wRm[byte 0],{US,SS},8)
在半字的情况下:
wRd[half 3]=saturate(wRn[half 3]+wRm[half 3],{US,SS},16)
wRd[half 2]=saturate(wRn[half 2]+wRm[half 2],{US,SS},16)
wRd[half 1]=satufate(wRn[half 1]+wRm[half 1],{US,SS},16)
wRd[half 0]=saturate(wRn[half 0]+wRm[half 0],{US,SS},16)
最终,如果字SIMD被识别:
wRd[word 1]=saturate(wRn[word 1]+wRm[word 1],{US,SS},32)
wRd[word 0]=saturate(wRn[word 0]+wRm[word 0],{US,SS},32)
所得到的编码产生32位指令,其中,位0至3属于wRm源寄存器,位4是零,位5至7识别运算,在加法指令的情况下其是100。位8至11识别协处理器编号,在这里其是一。位12至15给出目的寄存器,而位16至19属于源寄存器wRn。
位20以及21提供饱和类型。对于不饱和而言,所述位是00,对于无符号饱和(US)而言它们是01,而对于有符号饱和(SS)而言它们是11。位22以及23提供操作数的大小。对于一个字节大小的操作数而言,位22以及23是00,对于半字而言,所述位是01,对于字而言,所述位是10。位24至27可以是1110,表明协处理器运算。随后的论述假定位27至24是1110,指定协处理器指令。位28至31表明是否应用条件执行。条件执行可以被随意地指定。
减法运算执行从有符号或无符号数据的8,16或32位向量wRn中减去wRm的向量减法,并且把结果放在wRd中。此外,可以指定饱和。对于SIMD是8位或一字节的情形而言:
wRd[byte 7]=saturate(wRn[byte 7]-wRm[byte 7],{US,SS},8)
wRd[byte 6]=saturate(wRn[byte 6]-wRm[byte 6],{US,SS},8)
wRd[byte 5]=saturate(wRn[byte 5]-wRm[byte 5],{US,SS},8)
wRd[byte 4]=saturate(wRn[byte 4]-wRm[byte 4],{US,SS},8)
wRd[byte 3]=saturate(wRn[byte 3]-wRm[byte 3],{US,SS},8)
wRd[byte 2]=saturate(wRn[byte 2]-wRm[byte 2],{US,SS},8)
wRd[byte 1]=saturate(wRn[byte 1]-wRm[byte 1],{US,SS},8)
wRd[byte 0]=saturate(wRn[byte 0]-wRm[byte 0],{US,SS},8)
如果所述指令是半字:
wRd[half 3]=saturate(wRn[half 3]-wRm[half 3],{US.SS},16)
wRd[half 2]=saturate(wRn[half 2]-wRm[half 2],{US,SS},16)
wRd[half 1]=saturate(wRn[half 1]-wRm[half 1],{US,SS},16)
wRd[half 0]=saturate(wRn[half 0]-wRm[half 0],{US,SS},16)
最终,如果被指定为字:
wRd[word 1]=saturate(wRn[word 1]-wRm[word 1],{US,SS},32)
wRd[word 0]=saturate(wRn[word 0]-wRm[word 0],{US.SS},32)
所述代码与先前对加法操作描述的一样,除了位5至7可以表示101,用于识别向量减法。
由此,参照图4,在加或减指令的情况下,在块62,位5至7被分析以便确定是否涉及加或减指令。加法指令时这些位是100,而减法指令时为101。如果涉及加或减,那么依照在块66所确定的那样来分析位8至11。在菱形68进行检验,以便确定所分析的位是否表明指定了多媒体协处理器。如果是这样的话,在菱形69进行检验,以便确定是否指定了条件执行。如果是这样的话,在菱形71进行检验,以便确定算术寄存器25中标志的状态。如果所述标志表明条件得到满足,那么指令执行继续;否则,流程移到下一指令。
可以在块70分析位22和23。如果所述位是零和零,如在菱形71所确定的那样,那么操作数大小是一字节。同样,如果所述位是零和一,如在菱形72所确定的那样,那么操作数大小是半字,否则,所述指令是无效的(位22和23两个都是一),或操作数大小是全字。在所述流程中,为了此处描述以及随后指令的清楚,无效选项被省略。在块74设置大小。
接下来,在块76分析位20和21。如果那些位是零和零,如在菱形78所确定的那样,那么不饱和被使用。同样,如果所述位是零和一,如在菱形80所确定的那样,那么无符号饱和被提供。否则,有符号饱和被提供。在块82设置适当的饱和类型。
对于逻辑运算而言,所述位11至8、7至5以及23至22全部是零。在位的位置21至20中的值00确定或(0R)功能,在位的位置21至20中的值01确定异或(XOR)功能,在位的位置21至20中的值10确定与(AND)功能,而在位的位置21至20中的值11确定与非(ANDN)功能。在与功能中,所述协处理器在wRn和wRm之间执行逐位逻辑与,并且将结果放在目的寄存器wRd中。在或功能中,所述协处理器在wRn和非wRm之间执行逐位逻辑或,并且将结果放在目的寄存器wRd中。在与非功能中,所述协处理器在wRn和非wRm之间执行逐位逻辑与,并且将结果放在目的寄存器wRd中。在异或(XOR)功能中,所述协处理器在wRn和wRm之间执行逐位逻辑异或,并且将结果放在wRd中。例如可以如图4所示那样指定并实现条件执行。
参照图5,在菱形84进行检验,以便确定所述位模式是否对应于逻辑运算。若非,所述流程跳转到另一模块,否则,依照在86表明的那样执行逻辑运算。在菱形88,90以及92,基于位21和20、就采用什么类型的逻辑运算做出确定。
所述对准操作执行有效的功能来处理不是以64位为界限存储在存储器中数据。例如,技术只能够从64位对准的地址载入64位、双字数据。因此,如果需要未对准的值,那么未对准的值跨越的两个64位对准双字被载入寄存器堆,并且将对准指令用于提取所要求的准确的64位。这样做省去了传统方案中的移位和屏蔽值来提取正确的对准。所述对准指令可以以字节为界限从两个源寄存器提取任何64位值。
图7示出了对准指令的应用的例子。在此例子中,所需数据是来自于地址0×103的64位值,其不是64位的对准地址。为了获取此值,来自于地址0×100的双字数据被载入右侧源寄存器,并且来自于地址0×108的双字数据被载入左侧源寄存器。所述对准指令和三字节的指定偏移一起使用。这使得来自于右侧寄存器的5字节(来自于地址0×103-0×107的字节)将被提取,并且与左侧寄存器的较低三个字节(来自于地址0×108-0×10A)相组合。由此,在执行对准指令之后,目的寄存器包含来自于地址0×103到0×10A的期望数据,即,地址0×103处的64位值。
所述对准偏移可以在使用指令的即时形式时被即时指定,或者通过使用寄存器格式并且在wCGRx辅助寄存器中存放对准偏移来指定。如果地址偏移是通过屏蔽存取地址的低位来创建然后被转送至wCGR寄存器的话,那么后者是十分有用的。由此,参照图7,给出一个例子,其中即时对准模式(IMM)位20至22等于三,用于指定字节偏移值以便提取。
当如同单采用有限脉冲响应(FIR)滤波器一样事先已知对准序列时,即时对准指令十分有用。当如同用于视频压缩的快速运动搜索算法一样执行所述算法时,如果计算对准序列,寄存器对准指令十分有用。这些指令都是在寄存器对上操作的,其可以被有效地转换,利用交替载入显著降低了对准的开销。
在对准操作中,位8至11是零,而位5至7是001。所述协处理器使用处于位的位置23和22的值10来确定要使用的寄存器对准值。位的位置23中的值零用于要定待使用的即时对准值。在寄存器对准模式中,位21和位20经由CGR 44(图2)确定四个辅助寄存器的哪一个供对准值使用。
在即时对准模式中,位20至22确定对准偏移(零和七之间)。在即时对准中,所述协处理器从两个64位源寄存器((wRn(在位16至19)和wRm(在位0至3))提取64位值,并将结果放在目的寄存器wRd(在位12至15)中。所述指令使用三位中间值来指定要提取的值的字节偏移。作为采用其他指令的情况,位4是零,位24至27是1110,而位28至31用于条件执行。
参照图6,在菱形112进行检验,以便确定是否基于位模式指定了对准操作。在菱形106进行检验,以便确定所述位是否确定了寄存器对准值,其中所述对准值是在块108和110中设置的。若非,在菱形112进行检验,以便确定位23是否等于零,以表明即时对准值,其是在块114中设置的。在块116,所述位20至22被用于确定对准偏移。例如可以指定并且如图4所示那样实现条件执行。
寄存器对准操作从两个64位源寄存器(wRn和wRm)提取64位值,并将结果放在目的寄存器wRd中。所述指令使用存储在指定的通用寄存器中的3位值来指定要提取的值的偏移值。
参照图22,可以作为移位及交换单元38一部分的换码器300可以处理对准操作。所述换码器300在预处理块302和304接收来自于源寄存器(SRC1和SRC2)的操作数。在一个实施例中,所述块302以及304可以通过一组多路复用器来实现。
解码逻辑310接收控制信号,所述控制信号用于指定即时或寄存器对准以及即时或者偏移值。在组合部306中组合所述信息并且由多路复用器308来多路复用。
可以在wRn和wRm之间执行绝对差的求和(SAD),并且将结果与wRd累加。可以将绝对差的求和应用于8或16位无符号数据向量,并且累加SIMD平行绝对差计算的结果。所述位11至8必须是0001。位7至5必须是001,而所述位23和21必须是零。将位20用来确定是否首先归零累加器。例如可以指定并且如图4所示那样实现条件执行。位22用来确定字节或半字SIMD计算。如果B被指定,那么wRd[word1]=0。可以指定Z来表明首先对累加器归零,那么:
wRd[word 0]=(Z Specified)?0:wRd[word 0]
             +abs(wRn[byte 7]-wRm[byte 7])
             +abs(wRn[byte 6]-wRm[byte 6])
             +abs(wRn[byte 5]-wRm[byte 5])
             +abs(wRn[byte 4]-wRm[byte 4])
             +abs(wRn[byte 3]-wRm[byte 3])
             +abs(wRn[byte 2]-wRm[byte 2])
             +abs(wRn[byte 1]-wRm[byte 1])
             +abs(wRn[byte 0]-wRm[byte 0])
如果指定了H表示半字SIMD,那么:
wRd[word 0]=(Z Specified)?0:wRd[word 0]
             +abs(wRn[half 3]-wRm[half 3])
                +abs(wRn[half 2]-wRm[half 2])
                +abs(wRn[half 1]-wRm[half 1])
                +abs(wRn[half 0]-wRm[half 0])
参照图8,在菱形112进行检验,以便确定位模式是否指定SAD操作,其是在块114中设置的。如果是这样的话,在菱形116进行检验,以便确定位20是否是零,这要求归零所述累加器,如在块118所表明的那样。在菱形120进行检验,以便确定位22是否是零,这表明字节长度计算。否则,设置半字,如在块124所表明的那样。
所述协处理器可以执行开包操作,将源操作数开包放入目的寄存器。存在两种模式:交织开包和扩展开包。在交织模式中可以存在两个源操作数,而只有单个源操作数用于扩展所述SIMD字段。源数据可以是一字节、半字或字。所述协处理器可以开包并且将两个源操作数交织并且保持SIMD字段不变。这样可以开包源操作数的低位或高位的半个部分。这样还可以开包单个源操作数,使每个SIMD宽度加倍。它可以零扩展单个源开包值,并且可以符号扩展单个源开包值。它可以为每个SIMD字段在最终结果标志(N和Z)上设定饱和设置。例如可以指定并且如图4所示那样实现条件执行。
所述位8至11是0000。所述位7至6是11,而位五用于确定它是高位还是低位开包。位的位置22和23用来确定数据大小。对于字节大小而言,所述位22和23是00,对于半字大小而言是01,对于字大小而言是10。位20确定是选择扩展模式还是选择交织模式。对于交织模式而言,该位是一。位21确定是符号扩展还是零扩展,并且如果所述位是一,那么将其设定为符号扩展。位5中的值确定是开包源操作数的较低部分还是开包较高部分。对于低位开包而言,所述位是一,而对于高位开包而言,所述位是零。
参照图9,在菱形124进行检验,以便确定是否通过位模式指定了开包操作。倘若如此,在菱形128进行检验以便确定位23和22表明是字节大小数据、半字大小数据还是字大小数据。接下来,在菱形138进行检验,以便确定位20是等于一,表示交织模式,如在块140所表明的那样,还是字节20不等于一,表示扩展模式,如在块142所表明的那样。在菱形144进行检验以便确定位21是否等于一,表示符号模式,否则表明零扩展,如在块148所表明的那样。在菱形150进行检验,以便确定位5是否等于一,表示开包较低位模式,如在块152所表明的那样。否则,设定为开包较高位模式,如在块154所表明的那样。
扩展高位模式的开包操作对来自于wRn源寄存器上半部的8位、16位或32位数据进行开包,并且零扩展或者符号扩展每个字段并且将结果放在目的寄存器wRn中。在图10A中示出了无符号扩展高位,并且在图10B中示出了符号扩展高位。
指令交织高位模式的开包对来自于wRn上半部的8位、16位或者32位数据进行开包,与wRm的上半部交织,将结果放在目的寄存器wRd中。图11中示出了开包交织高位模式指令。
扩展低位开包指令对来自于源寄存器wRn下半部的8位、16位或32位数据进行开包,并且零扩展或者符号扩展每个字段并且将结果放在目的寄存器wRd中。在图12A中示出了无符号扩展低位,并且在图12B中示出了符号扩展低位。
最终,开包交织低位模式对来自于wRn下半部以及wRm的下半部的8位、16位或者32位数据进行开包,并将结果放在目的寄存器wRd中。图13中示出了开包交织低位指令。
打包操作将来自于两个源寄存器的数据打包到单个目的寄存器中。所述源数据可以是半字、字或双字。在打包期间,它可以使用有符号饱和与无符号饱和。所述位8至11是0000,而所述位5至7是100。位的位置22和23中的值用来确定数据大小。这些位是01时设置为半字数据大小,这些位是10时设置为字数据大小,而这些位是11时设置为双字数据大小。位置20和21中的值确定饱和类型。对于位01而言,指定为无符号饱和,对于位11而言,设定为有符号饱和。对于16、32或64位数据向量而言,所述打包指令把来自于wRn和wRm的数据打包到wRd中,并且wRm被打包进上半部而wRn被打包进下半部。使所述结果饱和并且将其放在目的寄存器wRd中。可以依照有符号的或无符号饱和来执行打包。对于半字而言,
wRd[byte 7]=saturate(wRm[half 3],{US,SS},8)
wRd[byte 6]=saturate(wRm[half 2],{US,SS},8)
wRd[byte 5]=saturate(wRm[half 1],{US,SS},8)
wRd[byte 4]=saturate(wRm[half 0],{US,SS},8)
wRd[byte 3]=saturate(wRn[half 3],{US,SS},8)
wRd[byte 2]=saturate(wRn[half 2],{US,SS},8)
wRd[byte 1]=saturate(wRn[half 1],{US,SS},8)
wRd[byte 0]=saturate(wRn[half 0],{US,SS},8)
对于全字而言:
wRd[half 3]=saturate(wRm[word 1],{US,SS},16)
wRd[half 2]=saturate(wRm[word 0],{US,SS},16)
wRd[half 1]=saturate(wRn[word 1],{US,SS},16)
wRd[half 0]=saturate(wRn[word 0],{US,SS},16)
对于双字而言:
wRd[word 1]=saturate(wRm,{US,SS},32)
wRd[word 0]=saturate(wRn,{US,SS},32)
参照图14,在菱形150进行检验,以便确定位模式是否表示指定了打包操作,如在菱形150和块152所表明的那样。倘若如此,在菱形154和158进行检验,以便确定指定了半字、字还是双字。在菱形164进行检验,以便确定所述位21和20表示无符号饱和(块166)还是有符号饱和(块168)。例如可以指定并且如图4所示那样实现条件执行。
两数平均指令用于对8或16位数据的无符号向量执行wRn和wRm的2值平均,可选地所述8或16位数据的无符号向量具有+1的舍入,并且在目的寄存器wRd中存放结果。源数据可以是字节或半字,并且可以具有可选的舍入模式。所述位8至11是0000,位23是1,而位21是0而位7至5是000。在位的位置22中的值用来确定数据大小。位22等于0表明是字节数据大小,而等于1表明是半字数据大小。位20确定是否进行舍入。等于1确定进舍入,而等于0则确定不舍入。例如可以指定并且如图4所示那样实现条件执行。
参照图15,在菱形168,就是否指定了两数平均指令的运算做出确定,如果位模式表明如此,那么在块170中进行设置。在菱形172进行检验,以便确定数据大小是半字(块176)还是字节(块174)。在菱形178进行检验,以便确定指定为舍入(块180)还是不舍入(块182)。
如果是字节长度SIMD,那么:
wRd[byte 7]=(wRn[byte 7]+wRm[byte 7]+Round)/2
wRd[byte 6]=(wRn[byte 6]+wRm[byte 6]+Round)/2
wRd[byte 5]=(wRn[byte 5]+wRm[byte 5]+Round)/2
wRd[byte 4]=(wRn[byte 4]+wRm[byte 4]+Round)/2
wRd[byte 3]=(wRn[byte 3]+wRm[byte 3]+Round)/2
wRd[byte 2]=(wRn[byte 2]+wRm[byte 2]+Round)/2
wRd[byte 1]=(wRn[byte 1]+wRm[byte 1]+Round)/2
wRd[byte 0]=(wRn[byte 0]+wRm[byte 0]+Round)/2
如果是半字SIMD,那么:
wRd[half 3]=(wRn[half 3]+wRm[half 3]+Round)/2
wRd[half 2]=(wRn[half 2]+wRm[half 2]+Round)/2
wRd[half 1]=(wRn[half 1]+wRm[half 1]+Round)/2
wRd[half 0]=(wRn[half 0]+wRm[half 0]+Round)/2
正移操作允许根据源寄存器的16位字段在目的寄存器wRd中选择16位数据值,其中所述源寄存器中的16位字段由8位中间值指定。其允许源的任何半字被存放在目的寄存器的任何半字中。所述位8至11是0001,而所述位5至7是111。选作半字零的值是通过位一和零的值确定的。选作半字一的值是通过位2和3的值确定的。选作半字2的值是通过位20和21的值确定的。选作半字3的值是通过位23和22的值确定的。例如可以指定并且如图4所示那样实现条件执行。
参照图16,在菱形184进行检验,以便确定是否指定了正移操作,如果位模式表明如此,那么在块186进行设置。块188确定源寄存器中哪些位将被正移到目的寄存器的哪些字段中。在块190,从源寄存器字段中的四个十六位值之一选择目的寄存器中的16位值。为每四个SIMD字段重复此操作。例如可以指定并且如图4所示那样实现条件执行。
所述累加操作累加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被指定,那么:
wRd=wRn[63:56]+wRn[55:48]+wRn[47:40]+wRn[39:32]
                +wRn[31:24]+wRn[23:16]+wRn[15:8]
                +wRn[7:0]
如果半字SIMD被指定,那么:
wRd=wRn[63:48]+wRn[47:32]+wRn[31:16]+wRn[15:0]
如果字被指定,那么:
wRd=wRn[63:32]+wRn[31:0]
最大值和最小值操作把来自于每个源字段的最大的或最小的值存放在对应的目的地字段中。所述源数据可以是字节、半字或字。它可以使用有符号或无符号操作数进行比较。所述位11至8必须是0001。所述位7至5应该是011。位的位置23,22中的值确定数据大小。换句话说,对于00而言,确定为字节数据大小,对于01而言,确定为半字数据大小,而对于10而言,确定为字数据大小。位21确定进行有符号比较还是进行无符号比较。位20确定选择最大值还是最小值。对于具有零值的位20而言,选择最大值。例如可以指定并且如图4所表明的那样实现条件执行。
参照图18,在菱形210进行检验,以表明指定了最大值还是最小值运算,这在块212中表明。在菱形214和218分析所述位23至20,以便确定指定了字节(块216)、半字(块220)还是字(块222)数据大小。在菱形224进行检验,以便确定有符号比较(块226)还是无符号比较(块228)是适当的。最终,在菱形230进行检验,以便确定所述运算是最大值(块232)还是最小值(块234)。
最大值运算根据对来自8、16和32位数据向量的wRn和wRm的元素执行向量最大值选择,并且根据目的寄存器wRd来存放最大值字段。如果8位或字节SIMD被指定,那么:
wRd[byte 7]=(wRn[byte 7]>wRm[byte 7])?wRn[byte 7]:wRm[byte 7]
wRd[byte 6]=(wRn[byte 6]>wRm[byte 6])?wRn[byte 6]:wRm[byte 6]
wRd[byte 5]=(wRn[byte 5]>wRm[byte 5])?wRn[byte 5]:wRm[byte 5]
wRd[byte 4]=(wRn[byte 4]>wRm[byte 4])?wRn[byte 4]:wRm[byte 4]
wRd[byte 3]=(wRn[byte 3]>wRm[byte 3])?wRn[byte 3]:wRm[byte 3]
wRd[byte 2]=(wRn[byte 2]>wRm[byte 2])?wRn[byte 2]:wRm[byte 2]
wRd[byte 1]=(wRn[byte 1]>wRm[byte 1})?wRn[byte 1]:wRm[byte 1]
wRd[byte 0]=(wRn[byte 0]>wRm[byte 0])?wRn[byte 0]:wRm[byte 0]
如果半字SIMD被指定,那么:
wRd[half 3]=(wRn[half 3]>wRm[half 3])?wRn[half 3]:wRm[half 3]
wRd[half 2]=(wRn[half 2]>wRm[half 2])?wRn[half 2]:wRm[half 2]
wRd[half 1]=(wRn[half 1]>wRm[half 1])?wRn[half 1]:wRm[half 1]
wRd[half 0]=(wRn[half 0]>wRm[half 0])?wRn[half 0]:wRm[half 0]
如果字被指定,那么:
wRd[word 1]=(wRn[word 1]>wRm[word 1])?wRn[word 1]:wRm[word 1]
wRd[word 0]=(wRn[word 0]>wRm[word 0])?wRn[word 0]:wRm[word 0]
最小值运算对来自8、16或32位数据向量的wRn和wRm的元素执行向量最小值选择,并且在目的寄存器wRd中安插最小值字段。如果字节SIMD被指定,那么:
wRd[byte 7]=(wRn[byte 7]<wRm[byte 7])?wRn[byte 7]:wRm[byte 7]
wRd[byte 6]=(wRn[byte 6]<wRm[byte 6])?wRn[byte6]:wRm[byte 6]
wRd[byte 5]=(wRn[byte 5]<wRm[byte 5])?wRn[byte5]:wRm[byte 5]
wRd[byte 4]=(wRn[byte 4]<wRm[byte 4])?wRn[byte4]:wRm[byte 4]
wRd[byte 3]=(wRn[byte 3]<wRm[byte 3])?wRn[byte3]:wRm[byte 3]
wRd[byte 2]=(wRn[byte 2]<wRm[byte 2])?wRn[byte2]:wRm[byte 2]
wRd[byte 1]=(wRn[byte 1]<wRm[byte 1])?wRn[byte 1]:wRm[byte 1]
wRd[byte 0]=(wRn[byte 0]<wRm[byte 0])?wRn[byte 0]:wRm[byte 0]
如果半字SIMD被指定,那么:
wRd[half 3]=(wRn[half 3]<wRm[half 3])?wRn[half3]:wRm[half 3]
wRd[half 2]=(wRn[half 2]<wRm[half 2])?wRn[half2]:wRm[half 2]
wRd[half 1]=(wRn[half 1]<wRm[half 1])?wRn[half 1]:wRm[half 1]
wRd[half 0]=(wRn[half 0]<wRm[half 0])?wRn[half 0]:wRm[half 0]
如果字被指定,那么:
wRd[word 1]=(wRn[word 1]<wRm[word 1])?wRn[word 1]:wRm[word 1]
wRd[word 0]=(wRn[word 0]<wRm[word 0])?wRn[word 0]:wRm[word 0]
所述比较操作比较所述源操作数,并且如果成功,就在目的地字段中放入全1。如果所述比较失败,它就在目的地字段中放入零。它可以对无符号操作数或对有符号的运算比较“是否相等”,并且可以比较“是否大于”。所述位11至8是0000,而所述位7至5是011。它使用位的位置22和23中的值来确定数据大小。对于字节数据大小而言,所述值是00,对于半字数据大小而言,所述值是01,而对于字数据大小而言,所述值是10。它使用位20来确定是选择“是否相等”还是“是否大于”的比较。它使用位21来确定是进行有符号的还是无符号的“是否大于”的比较。例如可以指定并且如图4所表明的那样实现条件执行。
比较“相等”执行8、16或32位数据向量的wRn和wRm的向量相等比较,当所述源操作数相等时将wRd的对应数据元全部设置为一,否则将wRd的数据元全部设置为零。如果字节SIMD被指定,那么:
wRd[byte 7]=(wRn[byte 7]==wRm[byte 7])?0xFF:0x00
wRd[byte 6]=(wRn[byte 6]==wRm[byte 6])?0xFF:0x00
wRd[byte 5]=(wRn[byte 5]==wRm[byte 5])?0xFF:0x00
wRd[byte 4]=(wRn[byte 4]==wRm[byte 4])?0xFF:0x00
wRd[byte 3]=(wRn[byte 3]==wRm[byte 3])?0xFF:0x00
wRd[byte 2]=(wRn[byte 2]==wRm[byte 2])?0xFF:0x00
wRd[byte 1]=(wRn[byte 1]==wRm[byte 1])?0xFF:0x00
wRd[byte 0]=(wRn[byte 0]==wRm[byte 0])?0xFF:0x00
如果半字被指定,那么:
wRd[half 3]=(wRn[half 3]==wRm[half 3])?0xFFFF:0x0000
wRd[half 2]=(wRn[half 2]==wRm[half 2])?0xFFFF:0x000
wRd[half 1]=(wRn[half 1]==wRm[half 1])?0xFFFF:0x0000
wRd[half 0]=(wRn[half 0]==wRm[half 0])?0xFFFF:0x0000
如果字被指定,那么:
wRd[word 1]=(wRn[word 1]==wRm[word
1])?0xFFFFFFFF:0x00000000
wRd[word 0]=(wRn[word 0]==wRm[word0])?0xFFFFFFFF:0x00000000
比较“是否大于”的操作执行8,16和32位数据向量的wRn和wRm的向量幅度比较,当wRn的对应字段大于wRm时,将wRd的对应数据元全部设置为一。否则,它将wRd全部设定为零。所述操作可以对有符号数据或者无符号数据执行。当使用有符号的值时指定有符号的比较。如果字节长度SIMD被指定,那么:
wRd[byte 7]=(wRn[byte 7]>wRm[byte 7])?0xFF:0x00
wRd[byte 6]=(wRn[byte 6]>wRm[byte 6])?0xFF:0x00
wRd[byte 5]=(wRn[byte 5]>wRm[byte 5])?0xFF:0x00
wRd[byte 4]=(wRn[byte 4]>wRm[byte 4])?0xFF:0x00
wRd[byte 3]=(wRn[byte 3]>wRm[byte 3])?0xFF:0x00
wRd[byte 2]=(wRn[byte 2]>wRm[byte 2])?0xFF:0x00
wRd[byte 1]=(wRn[byte 1]>wRm[byte 1])?0xFF:0x00
wRd[byte 0]=(wRn[byte 0]>wRm[byte 0])?0xFF:0x00
如果半字被指定,那么:
wRd[half 3]=(wRn[half 3]>wRm[half 3])?0xFFFF:0x0000
wRd[half 2]=(wRn[half 2]>wRm[half 2])?0xFFFF:0x0000
wRd[half 1]=(wRn[half 1]>wRm[half 1])?0xFFFF:0x0000
wRd[half 0]=(wRn[half 0]>wRm[half 0])?0xFFFF:0x0000
如果字被指定,那么:
wRd[word 1]=(wRn[word 1]>wRm[word 1])?0xFFFFFFFF:0x00000000
wRd[word 0]=(wRn[word 0]>wRm[word0])?0xFFFFFFFF:0x00000000
参照图19,在菱形236进行检验,以便确定是否指定了比较操作,如果合适,在块238将其设定。在菱形240和244,就指定的是字节(块242)、半字(块246)还是字(块248)数据大小来做出确定。在菱形256进行检验,以便确定指定的是“是否大于”操作(块258)还是“是否相等”操作(块260)。在菱形250进行检验,以便确定有符号的还是无符号的“是否大于”计算是合适的。
所述广播操作将来自于主处理器的源寄存器(Rn)的值广播至协处理器的SIMD目的寄存器(wRd)的所有字段中。例如,一个字节(8位)数据元可以被转送入具有64位容量的目的寄存器wRd中的所有八个目的数据元。依照另一例子,一个字(32位)可以被放置在目的寄存器的两个位置中。依照又一例子,半字(16位)可以被转送至目的寄存器中的所有四个数据元中。所述位11至8是0000,所述位23至21是010而位5是零。位的位置7和6中的值确定目的寄存器的数据大小。对于字节而言,位7和6是00,对于半字而言,所述位7和6是01,对于字而言,所述位7和6是10。就字节长度SIMD而言,所述值被放入wRd的每个位置中。对于半字大小而言,将所述值在wRd中放置四次。对于字大小而言,将所述值在wRd中放置两次。
例如可以在位28至31指定条件执行并且如图4中所表明的那样来实现。所述位24至27是1110,位20是0,所述位16至19用wRd,所述位12至15用Rn,所述位4是一并且所述位0至3是0000。
参照图20,在菱形262,就是否指定了广播(块264)做出确定。所述菱形266和270分析所述位6和7来确定目的地数据大小是字节(块268)、半字(块272)还是字(块274)。
所述移位运算根据16、32或64位数据向量的wRn对wRn执行向量逻辑左移,并将结果放在wRd中。它使用位零至三来编码包含移位值的寄存器。位8用来确定所述移位值来自主处理器的寄存器还是CGR44(wCGRm)中的寄存器。具有指定的G-限定符的移位指令使用在所述wRm字段中指定的存储在通用寄存器中的移位值。位23以及22确定操作数的大小。位的位置7至5中的值010确定移位运算。位的位置21和22中的值01表明逻辑左移。位的位置21和22中的值00表明算术右移。位的位置21和20中的值10表明逻辑右移,而位的位置21和20中的值11表明循环。例如可以指定并且如图4所表明的那样实现条件执行。
对于逻辑左移而言,如果半字被指定,那么:
wRd[half 3]=wRn[half 3]<<((G Specified)?wCGRm[7:0]:wRm[7:0]
wRd[half 2]=wRn[half 2]<<((G Specified)?wCGRm[7:0]:wRm[7:0]
wRd[half 1]=wRn[half 1]<<((G Specified)?wCGRm[7:6]:wRm[7:0]
wRd[half 0]=wRn[half 0]<<((G Specified)?wCGRm[7:0]:wRm[7:0]
如果32位字被指定,那么:
wRd[word 1]=wRn[word 1]<<((G Specified)?wCGRm[7:0]:wRm[7:0]
wRd[word 0]=wRn[word 0]<<((G Specified)?wCGRm[7:0]:wRm[7:0]
如果双字被指定,那么:
wRd=wRn((G Specified)?wCGRm[7:0]:wRm[7:0]
对于右移位操作而言,对1 6,32或6 4位数据向量大小而言,将wRn向量算术右移wRm,并将结果放在wRd中。对于半字数据大小而言,那么
wRd[half 3]=wRn[half 3]>>((G Specified)?wCGRm[7:0]:wRm[7:0]
wRd[half 2]=wRn[half 2]>>((G Specified)?wCGRm[7:0]:wRm[7:0]
wRd[half 1]=wRn[half 1]>>((G Specified)?wCGRm[7:0]:wRm[7:0]
wRd[half 0]=wRn[half 0]>>((G Specified)?wCGRm[7:0]:wRm[7:0]
否则,对于字数据大小而言,那么
wRd[word 1]=wRn[word 1]>>((G Specified)?wCGRm[7:0]:wRm[7:0]
wRd[word 0]=wRn[word 0]>>((G Specified)?wCGRm[7:0]:wRm[7:0]
如果双字被指定,那么:
wRd=wRn>>((G Specified)?wCGRm[7:0]:wRm[7:0]
对16、32或64位数据向量而言,将wRn向量逻辑右移wRm,并且将结果置于wRd中。如果半字被指定,那么:
wRd[half 3]=wRn[half 3]>>((G Specified)?wCGRm[7:0]:wRm[7:0]
wRd[half 2]=wRn[half 2]>>((G Specified)?wCGRm[7:0]:wRm[7:0]
wRd[half 1]=wRn[half 1]>>((G Specified)?wCGRm[7:0]:wRm[7:0]
wRd[half 0]=wRn[half 0]>>((G Specified)?wCGRm[7:0]:wRm[7:0]
如果字被指定,那么:
wRd[word 1]=wRn[word 1]>>((G Specified)?wCGRm[7:0]:wRm[7:0]
wRd[word 0]=wRn[word 0]>>((G Specified)?wCGRm[7:0]:wRm[7:0]
如果双字被指定,那么:
wRd=wRn>>((G Specified)?wCGRm[7:0]:wRm[7:0]
对16、32或64位数据向量而言,将wRn向量逻辑循环右移wRm,并且将结果置于目的寄存器wRd中。
如果半字被指定,那么:
wRd[half 3]=wRn[half 3]rotate_by((G Specified)?wCGRm[7:0]:wRm[7:0]
wRd[half 2]=wRn[half 2]rotate_by((G Specified)?wCGRm[7:0]:wRm[7:0]
wRd[half 1]=wRn[half 1]rotate_by((G Specified)?wCGRm[7:0]:wRm[7:0]
wRd[half 0]=wRn[half 0]rotate_by((G Specified)?wCGRm[7:0]:wRm[7:0]
如果字被指定,那么:
wRd[word 1]=wRn[word 1]rotate_by((G Specified)?wCGRm[7:0]:wRm[7:0]
wRd[word 0]=wRn[word 0]rotate_by((G Specified)?wCGRm[7:0]:wRm[7:0]
如果双字被指定,那么:
wRd=wRn rotateby((G Specified)?wCGRm[7:0]:wRm[7:0]
参照图21,在菱形276确定移位运算(块278)。在块280分析所述位0至3来为移位值编码寄存器。在块282,分析所述位8来确定所述移位值处于主寄存器堆还是处于辅助寄存器堆。在块284,所述位23以及22确定操作数的大小。在块286,所述位21和20确定移位类型。
概括地说,此处讨论的指令对于所表示的位组合(7-5,23-20,11-8)使用以下编码:
                  指令
                           7-5    23-20    11-8
OR                         000    0000     0000
XOR                        000    0001     0000
AND                        000    0010     0000
ANDN                       000    0011     0000
AVG2                       000    1h0r     0000
对准即时                   001    0vvv     0000
对准寄存器                 001    10vv     0000
算术右移                   010    ww00     000g
逻辑左移                   010    ww01     000g
逻辑右移                   010    ww10     000g
循环                       010    ww11     000g
比较相等                   011    ww00     0000
比较是否大于               011    wws1     0000
打包                       100    wwss     0000
开包扩展高位               110    wws0     0000
开包交织高位               110    ww01     0000
开包扩展低位               111    wws0     0000
开包交织低位               111    ww01     0000
SAD                        001    0h0z     0001
最大值                     011    wws0     0001
最小值                     011    wws1     0001
加法                       100    wwss     O001
减法                       101    wwss     O001
累加                       110    ww00     O001
正移                       111    ddcc     O001
广播                       ww0    010      O000
虽然已经就有限数目的实施例描述了本发明,但是本领域技术人员将会从中理解各种修改和变化。希望在所附权利要求书中涵盖落入本发明的精神和范围内的所有这种修改和变化。

Claims (38)

1.一种用于为协处理器提供指令的方法,包括:
响应数据处理指令流使用主处理器执行数据处理,所述数据处理指令包括至少一个协处理器指令;
为至少一个协处理器指令提供两个源寄存器和一个目的寄存器,所述寄存器包括数据元;并且
提供一协处理器指令,其包括指定将由协处理器执行的数据处理操作的操作码,以及用于为所述协处理器指令识别目标协处理器的协处理器识别字段,所述指令用于将数据元从所述源寄存器之一广播至所述目的寄存器的数据元。
2.如权利要求1所述的方法,包括提供一个指令来将数据元广播至所述目的寄存器的所有数据元。
3.如权利要求1所述的方法,包括指定将要被广播的数据元大小。
4.如权利要求3所述的方法,包括有选择地将要被广播的数据元指定为八、十六或三十二位之一。
5.如权利要求1所述的方法,包括分配位零至三十一,使用位七至五来表明操作类型,分配位十一至八来表明协处理器编号,分配位23和22来表明操作数大小,并且分配位21和20来设定饱和类型。
6.如权利要求1所述的方法,包括分配位27至24为1110。
7.如权利要求1所述的方法,包括根据主处理器算术标志的状态来有条件地执行协处理器指令。
8.如权利要求1所述的方法,包括提供一指令来将数据元从主处理器的源寄存器广播至协处理器的目的寄存器。
9.一种包括介质的物品,所述介质存储有指令,当执行所述指令时,允许基于处理器的系统:
响应数据处理指令流使用主处理器来执行数据处理,所述数据处理指令包括至少一个协处理器指令;
为至少一个协处理器指令使用两个源寄存器和一个目的寄存器,所述寄存器包括数据元;并且
处理协处理器指令,该指令包括指定将由协处理器执行的数据处理操作的操作码,以及用于为所述协处理器指令识别目标协处理器的协处理器识别字段,所述指令用于将数据元从所述源寄存器之一广播至所述目的寄存器的数据元。
10.如权利要求9所述的物品,还存储有指令,当执行所述指令时,允许基于处理器的系统提供一指令来将数据元广播至所述目的寄存器的所有数据元。
11.如权利要求9所述的物品,还存储有指令,当执行所述指令时,允许基于处理器的系统提供一指令来指定所述将要被广播的数据元的大小。
12.如权利要求9所述的物品,还存储有指令,当执行所述指令时,允许基于处理器的系统提供一指令来有选择地将要被广播的数据元指定为八、十六或三十二位之一。
13.如权利要求9所述的物品,还存储有指令,当执行所述指令时,允许基于处理器的系统处理指令,来分配位零至三十一,使用位七至五来表明操作类型,分配位十一至八来表明协处理器编号,分配位二十三和二十二来表明操作数大小,并且分配位二十一和二十来设定饱和类型。
14.如权利要求9所述的物品,还存储有指令,当执行所述指令时,允许基于处理器的系统根据主处理器算术标志的状态有条件地执行协处理器指令。
15.一种处理器,包括:
主处理器,包括算术标志;以及
与所述主处理器耦合的协处理器,所述协处理器包括用于指定将由协处理器执行的数据处理操作的操作码,以及用于为所述协处理器指令识别目标协处理器的协处理器识别字段,所述协处理器用于为协处理器指令分配两个源寄存器以及一个目的寄存器,所述寄存器包括数据元,所述协处理器包括用于将数据元从所述源寄存器广播至所述目的寄存器的数据元的指令。
16.如权利要求15所述的处理器,其中所述处理器是单指令多数据协处理器。
17.如权利要求15所述的处理器,其中所述协处理器使用具有位零至三十一的指令,并且其中位七至五表明操作类型,位十一至八表明协处理器编号,位二十三和二十二表明操作数大小,并且位二十一以及二十设定饱和类型。
18.如权利要求15所述的处理器,其中所述指令用于将数据元广播至所述目的寄存器的所有数据元。
19.如权利要求15所述的处理器,其中所述指令指定将要被广播的数据元的大小。
20.如权利要求19所述的处理器,其中所述指令有选择地将要被广播的数据元指定为八、十六或三十二位之一。
21.如权利要求15所述的处理器,其中所述协处理器包括所述目的寄存器,并且所述主处理器包括源寄存器。
22.一种用于为协处理器提供指令的方法,包括:
响应数据处理指令流使用主处理器执行数据处理,所述数据处理指令包括至少一个协处理器指令;
为所述至少一个协处理器指令提供两个源寄存器和一个目的寄存器;
提供协处理器指令,其包括用于指定将由协处理器执行的数据处理操作的操作码,以及用于为所述协处理器指令识别目标协处理器的协处理器识别字段;以及
执行一个指令以便从所述源寄存器提取值,并且把这些值放置在所述目的寄存器中,所述指令包括信息,根据这些信息来确定所述值的偏移,以便允许从所述源寄存器中提取那些值。
23.如权利要求22所述的方法,包括在指令中提供偏移。
24.如权利要求22所述的方法,包括在指令中提供与定位所述偏移信息的位置有关的信息。
25.如权利要求24所述的方法,包括在指令中标记,其指示包含了偏移信息的通用寄存器。
26.如权利要求22所述的方法,包括根据主处理器算术标志的状态来有条件地执行协处理器指令。
27.一种包括介质的物品,所述介质存储有指令,当执行所述指令时,使基于处理器的系统能:
响应数据处理指令流使用主处理器来执行数据处理,所述数据处理指令包括至少一个协处理器指令;
为所述至少一个协处理器指令提供两个源寄存器和一个目的寄存器;
提供协处理器指令,该指令包括用于指定将由协处理器执行的数据处理操作的操作码,以及用于为所述协处理器指令识别目标协处理器的协处理器识别字段;以及
执行一个指令来从所述源寄存器提取值,并且把这些值放置在所述目的寄存器中,所述指令包含有信息,根据该信息来确定所述值的偏移,以便允许从所述源寄存器中提取那些值。
28.如权利要求27所述的物品,还存储有指令,当执行所述指令时,使基于处理器的系统能在所述指令中提供偏移。
29.如权利要求27所述的物品,还存储有指令,当执行所述指令时,使基于处理器的系统能在指令中提供有关定位偏移信息位置的信息。
30.如权利要求27所述的物品,还存储有指令,当执行所述指令时,使基于处理器的系统能在指令中提供标记,其指示包含与偏移有关的信息的通用寄存器。
31.如权利要求27所述的物品,还存储有指令,当执行所述指令时,使基于处理器的系统能提供三种不同的饱和类型,包括有符号饱和、不饱和以及无符号饱和。
32.如权利要求27所述的物品,还存储有指令,当执行所述指令时,使基于处理器的系统能:根据主处理器算术标志的状态有条件地执行协处理器指令。
33.一种协处理器,包括:
主处理器,其包括算术标志;以及
存储器,用于存储指定将由协处理器执行的数据处理操作的操作码,以及存储为协处理器指令识别目标协处理器的协处理器识别字段,所述协处理器执行一个指令以便从所述源寄存器提取值,并且将这些值放置在所述目的寄存器中,所述指令包括信息,根据该信息来确定所述值的偏移,以便允许从所述源寄存器中提取那些值。
34.如权利要求33所述的协处理器,其中所述协处理器是单指令多数据协处理器。
35.如权利要求33所述的协处理器,用于从所述指令中提取偏移。
36.如权利要求33所述的协处理器,用于从指令中提取与定位偏移信息的位置有关的信息。
37.如权利要求33所述的协处理器,用于从所述指令中提取一个标记,该标记指示了包含与所述偏移有关的信息的通用寄存器。
38.如权利要求33所述的协处理器,其中所述协处理器使用具有位零至三十一的指令,并且其中位七至五表明操作类型,位十一至八表明协处理器编号,位二十三和二十二表明操作数大小,并且位二十一以及二十设定饱和类型。
CNB038239930A 2002-08-09 2003-08-06 包括对准或者广播指令的多媒体协处理器控制机制 Expired - Lifetime CN100394380C (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US10/215,756 2002-08-09
US10/215,756 US6986023B2 (en) 2002-08-09 2002-08-09 Conditional execution of coprocessor instruction based on main processor arithmetic flags
US10/263,246 2002-10-02

Publications (2)

Publication Number Publication Date
CN1688966A true CN1688966A (zh) 2005-10-26
CN100394380C CN100394380C (zh) 2008-06-11

Family

ID=31494935

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB038239930A Expired - Lifetime CN100394380C (zh) 2002-08-09 2003-08-06 包括对准或者广播指令的多媒体协处理器控制机制

Country Status (3)

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

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102446100A (zh) * 2010-12-14 2012-05-09 微软公司 用于数据类型的类型和长度抽象
CN104011652A (zh) * 2011-12-30 2014-08-27 英特尔公司 打包选择处理器、方法、系统和指令
CN104298639A (zh) * 2014-09-23 2015-01-21 天津国芯科技有限公司 主处理器与若干协处理器的嵌入式连接方法及连接接口
CN104484157A (zh) * 2006-09-22 2015-04-01 英特尔公司 用于处理文本串的指令和逻辑
CN104981771A (zh) * 2013-02-26 2015-10-14 高通股份有限公司 基于标量寄存器数据值的向量寄存器寻址和功能
CN106406817A (zh) * 2011-04-01 2017-02-15 英特尔公司 向量友好指令格式及其执行
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
CN110471699A (zh) * 2011-12-23 2019-11-19 英特尔公司 在不同的粒度水平下对数据值进行广播和掩码的指令执行

Families Citing this family (102)

* 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
US7315932B2 (en) 2003-09-08 2008-01-01 Moyer William C Data processing system having instruction specifiers for SIMD register operands and method thereof
US7275148B2 (en) * 2003-09-08 2007-09-25 Freescale Semiconductor, Inc. Data processing system using multiple addressing modes for SIMD operations and method thereof
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
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
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
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
JP5971635B2 (ja) * 2011-01-25 2016-08-17 エヌエックスピー カナダ インコーポレイテッド ベクトルユニット共有の装置および方法
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
CN103959237B (zh) * 2011-11-30 2016-09-28 英特尔公司 用于提供向量横向比较功能的指令和逻辑
US9697174B2 (en) 2011-12-08 2017-07-04 Oracle International Corporation Efficient hardware instructions for processing bit vectors for single instruction multiple data processors
US10534606B2 (en) 2011-12-08 2020-01-14 Oracle International Corporation Run-length encoding decompression
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
CN104011663B (zh) * 2011-12-22 2018-01-26 英特尔公司 掩码寄存器上的广播操作
WO2013095638A1 (en) * 2011-12-23 2013-06-27 Intel Corporation Apparatus and method for an instruction that determines whether a value is within a range
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
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
US9378232B2 (en) 2013-09-21 2016-06-28 Oracle International Corporation Framework for numa affinitized parallel query on in-memory objects within the RDBMS
US10331583B2 (en) 2013-09-26 2019-06-25 Intel Corporation Executing distributed memory operations using processing elements connected by distributed channels
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
JP6816027B2 (ja) 2015-05-21 2021-01-20 ゴールドマン サックス アンド カンパニー エルエルシー 多目的の並列処理アーキテクチャ
US10210134B2 (en) * 2015-05-21 2019-02-19 Goldman Sachs & Co. LLC 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指令集向量协处理器的译码电路
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
US10061832B2 (en) 2016-11-28 2018-08-28 Oracle International Corporation Database tuple-encoding-aware data partitioning in a direct memory access engine
US10402425B2 (en) 2016-03-18 2019-09-03 Oracle International Corporation Tuple encoding aware direct memory access engine for scratchpad enabled multi-core 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
US10176114B2 (en) 2016-11-28 2019-01-08 Oracle International Corporation Row identification number generation in database direct memory access engine
US10459859B2 (en) 2016-11-28 2019-10-29 Oracle International Corporation Multicast copy ring for database direct memory access filtering 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
US10416999B2 (en) 2016-12-30 2019-09-17 Intel Corporation Processors, methods, and systems with a configurable spatial accelerator
US10474375B2 (en) 2016-12-30 2019-11-12 Intel Corporation Runtime address disambiguation in acceleration hardware
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
WO2019005132A1 (en) * 2017-06-30 2019-01-03 Intel Corporation APPARATUS AND METHOD FOR MULTIPLICATION AND CUMULATION OF COMPLEX VALUES
WO2019005115A1 (en) * 2017-06-30 2019-01-03 Intel Corporation APPARATUS AND METHOD FOR MULTIPLICATION AND CUMULATION OF COMPLEX VALUES
US10467183B2 (en) 2017-07-01 2019-11-05 Intel Corporation Processors and methods for pipelined runtime services in a spatial array
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
US10515049B1 (en) 2017-07-01 2019-12-24 Intel Corporation Memory circuits and methods for distributed memory hazard detection and error recovery
US10515046B2 (en) 2017-07-01 2019-12-24 Intel Corporation Processors, methods, and systems with a configurable spatial accelerator
US10445234B2 (en) 2017-07-01 2019-10-15 Intel Corporation Processors, methods, and systems for a configurable spatial accelerator with transactional and replay features
US10469397B2 (en) 2017-07-01 2019-11-05 Intel Corporation Processors and methods with configurable network-based dataflow operator circuits
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
US11086816B2 (en) 2017-09-28 2021-08-10 Intel Corporation Processors, methods, and systems for debugging 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
US10445098B2 (en) 2017-09-30 2019-10-15 Intel Corporation Processors and methods for privileged configuration in a spatial array
US10380063B2 (en) 2017-09-30 2019-08-13 Intel Corporation Processors, methods, and systems with a configurable spatial accelerator having a sequencer dataflow operator
US10417175B2 (en) 2017-12-30 2019-09-17 Intel Corporation Apparatus, methods, and systems for memory consistency in a configurable spatial accelerator
US10445250B2 (en) 2017-12-30 2019-10-15 Intel Corporation Apparatus, methods, and systems with a configurable spatial accelerator
US10565134B2 (en) 2017-12-30 2020-02-18 Intel Corporation Apparatus, methods, and systems for multicast 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
US11200186B2 (en) 2018-06-30 2021-12-14 Intel Corporation Apparatuses, methods, and systems for operations 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
US10678724B1 (en) 2018-12-29 2020-06-09 Intel Corporation Apparatuses, methods, and systems for in-network storage 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
US10817291B2 (en) 2019-03-30 2020-10-27 Intel Corporation Apparatuses, methods, and systems for swizzle operations 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
US10915471B2 (en) 2019-03-30 2021-02-09 Intel Corporation Apparatuses, methods, and systems for memory interface circuit allocation in a configurable spatial accelerator
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
US11868777B2 (en) * 2020-12-16 2024-01-09 Advanced Micro Devices, Inc. Processor-guided execution of offloaded instructions using fixed function operations
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
US20240104015A1 (en) * 2022-09-26 2024-03-28 Advanced Micro Devices, Inc. Data Compression and Decompression for Processing in Memory

Family Cites Families (70)

* 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
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
JPH0766349B2 (ja) * 1985-04-30 1995-07-19 富士通株式会社 シフタ回路
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
JP3043861B2 (ja) * 1991-09-30 2000-05-22 株式会社東芝 データ処理装置
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
ZA9510127B (en) * 1994-12-01 1996-06-06 Intel Corp Novel processor having shift operations
EP0795153A4 (en) * 1994-12-02 2001-11-14 Intel Corp MICROPROCESSOR WITH COMPASS OPERATION OF COMPOSITE OPERANDS
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
CN1264085C (zh) 1995-08-31 2006-07-12 英特尔公司 一种用于执行多媒体应用的操作的装置、系统和方法
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
JPH0997178A (ja) * 1995-09-29 1997-04-08 Matsushita Electric Ind Co Ltd 飽和演算処理装置および方法
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
US6282633B1 (en) * 1998-11-13 2001-08-28 Tensilica, Inc. High data density RISC processor
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
US6526430B1 (en) * 1999-10-04 2003-02-25 Texas Instruments Incorporated Reconfigurable SIMD coprocessor architecture for sum of absolute differences and symmetric filtering (scalable MAC engine for image processing)
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
JP2001229138A (ja) * 2000-02-15 2001-08-24 Sony Corp 画像処理装置および画像処理方法
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
US6865663B2 (en) * 2000-02-24 2005-03-08 Pts Corporation Control processor dynamically loading shadow instruction register associated with memory entry of coprocessor in flexible coupling mode
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
JP3776732B2 (ja) * 2001-02-02 2006-05-17 株式会社東芝 プロセッサ装置
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
US6986023B2 (en) * 2002-08-09 2006-01-10 Intel Corporation Conditional execution of coprocessor instruction based on main processor arithmetic flags
JP2005535966A (ja) 2002-08-09 2005-11-24 インテル・コーポレーション アライメントまたはブロードキャスト命令を含むマルチメディア・コプロセッサの制御メカニズム
US7689641B2 (en) * 2003-06-30 2010-03-30 Intel Corporation SIMD integer multiply high with round and shift

Cited By (46)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9645821B2 (en) 2006-09-22 2017-05-09 Intel Corporation Instruction and logic for processing text strings
CN104484157B (zh) * 2006-09-22 2017-10-24 英特尔公司 用于处理文本串的指令和逻辑
CN104657113B (zh) * 2006-09-22 2018-08-14 英特尔公司 用于处理文本串的指令和逻辑
CN105607890B (zh) * 2006-09-22 2018-10-26 英特尔公司 处理器和响应于单个simd紧缩比较指令而执行的方法
US9703564B2 (en) 2006-09-22 2017-07-11 Intel Corporation Instruction and logic for processing text strings
CN104657112A (zh) * 2006-09-22 2015-05-27 英特尔公司 用于处理文本串的指令和逻辑
CN104657113A (zh) * 2006-09-22 2015-05-27 英特尔公司 用于处理文本串的指令和逻辑
US11029955B2 (en) 2006-09-22 2021-06-08 Intel Corporation Instruction and logic for processing text strings
CN108052348A (zh) * 2006-09-22 2018-05-18 英特尔公司 用于处理文本串的指令和逻辑
CN105607890A (zh) * 2006-09-22 2016-05-25 英特尔公司 用于处理文本串的指令和逻辑
US9495160B2 (en) 2006-09-22 2016-11-15 Intel Corporation Instruction and logic for processing text strings
US9720692B2 (en) 2006-09-22 2017-08-01 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
US9632784B2 (en) 2006-09-22 2017-04-25 Intel Corporation Instruction and logic for processing text strings
CN108052348B (zh) * 2006-09-22 2022-04-15 英特尔公司 用于处理文本串的指令和逻辑
CN104484157A (zh) * 2006-09-22 2015-04-01 英特尔公司 用于处理文本串的指令和逻辑
US10261795B2 (en) 2006-09-22 2019-04-16 Intel Corporation Instruction and logic for processing text strings
CN107015784A (zh) * 2006-09-22 2017-08-04 英特尔公司 用于处理文本串的指令和逻辑
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
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
US11537398B2 (en) 2006-09-22 2022-12-27 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
US9804848B2 (en) 2006-09-22 2017-10-31 Intel Corporation Instruction and logic for processing text strings
CN104657112B (zh) * 2006-09-22 2017-12-01 英特尔公司 用于处理文本串的指令和相关联的处理器
CN102446100A (zh) * 2010-12-14 2012-05-09 微软公司 用于数据类型的类型和长度抽象
CN102446100B (zh) * 2010-12-14 2016-04-06 微软技术许可有限责任公司 用于数据类型的类型和长度抽象的系统和方法
US8959501B2 (en) 2010-12-14 2015-02-17 Microsoft Corporation Type and length abstraction for data types
CN106406817A (zh) * 2011-04-01 2017-02-15 英特尔公司 向量友好指令格式及其执行
US11210096B2 (en) 2011-04-01 2021-12-28 Intel Corporation Vector friendly instruction format and execution thereof
US11740904B2 (en) 2011-04-01 2023-08-29 Intel Corporation Vector friendly instruction format and execution thereof
CN106406817B (zh) * 2011-04-01 2019-06-14 英特尔公司 向量友好指令格式及其执行
US10795680B2 (en) 2011-04-01 2020-10-06 Intel Corporation Vector friendly instruction format and execution thereof
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
CN110471699B (zh) * 2011-12-23 2023-07-28 英特尔公司 用于指令处理的处理器核、方法和系统
CN110471699A (zh) * 2011-12-23 2019-11-19 英特尔公司 在不同的粒度水平下对数据值进行广播和掩码的指令执行
US11709961B2 (en) 2011-12-23 2023-07-25 Intel Corporation Instruction execution that broadcasts and masks data values at different levels of granularity
CN104011652A (zh) * 2011-12-30 2014-08-27 英特尔公司 打包选择处理器、方法、系统和指令
TWI630548B (zh) * 2011-12-30 2018-07-21 英特爾股份有限公司 緊縮旋轉處理器、方法、系統與指令
CN104011652B (zh) * 2011-12-30 2017-10-27 英特尔公司 打包选择处理器、方法、系统和指令
US10324718B2 (en) 2011-12-30 2019-06-18 Intel Corporation Packed rotate processors, methods, systems, and instructions
US9864602B2 (en) 2011-12-30 2018-01-09 Intel Corporation Packed rotate processors, methods, systems, and instructions
CN104981771A (zh) * 2013-02-26 2015-10-14 高通股份有限公司 基于标量寄存器数据值的向量寄存器寻址和功能
CN104298639B (zh) * 2014-09-23 2017-03-15 天津国芯科技有限公司 主处理器与若干协处理器的嵌入式连接方法及连接接口
CN104298639A (zh) * 2014-09-23 2015-01-21 天津国芯科技有限公司 主处理器与若干协处理器的嵌入式连接方法及连接接口

Also Published As

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

Similar Documents

Publication Publication Date Title
CN1688966A (zh) 包括对准或者广播指令的多媒体协处理器控制机制
CN1153155C (zh) 装有高效利用主处理器中的寄存器数据的协处理器的信息处理装置
CN1186718C (zh) 微控制器指令集
CN1126030C (zh) 数据处理装置
CN1202470C (zh) 处理器
CN1246772C (zh) 处理器
CN1103961C (zh) 协处理器的数据访问控制装置和方法
CN1135468C (zh) 对存储设备中信号数据字执行数字信号处理的方法和装置
CN1497435A (zh) 处理器
CN1288550C (zh) 随机数产生器的位串过滤装置与方法
CN1472646A (zh) 适应性强具备最佳化功能的编译装置
CN1886744A (zh) 在可扩展的处理器架构中增加高级指令所用的方法和装置
CN1469241A (zh) 处理器、程序变换装置和变换方法以及计算机程序
CN101044450A (zh) 处理器
CN1269052C (zh) 支持缩小代码长度的常量还原型处理器
CN1286004C (zh) 支持程序编码长度减小的微处理器
CN1103959C (zh) 数据处理装置和操作数据处理装置的方法
CN1516001A (zh) 一种新型risc流水线微控制器构架及其操作方法
CN1491383A (zh) 使用协处理器的数据处理
CN1104679C (zh) 数据处理装置和数据处理方法
CN100347668C (zh) 指令变换装置
CN1839550A (zh) 解码可变长度前缀码的方法
CN1226325A (zh) 数据处理系统中的输入操作数控制
CN1207527A (zh) 微处理器
CN1279782A (zh) 计算机系统

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
ASS Succession or assignment of patent right

Owner name: MARVELL INTERNATIONAL CO., LTD.

Free format text: FORMER OWNER: INTEL CORP

Effective date: 20070420

Owner name: MARVELL INTERNATIONAL TRADING COMPANY LTD.

Free format text: FORMER OWNER: MARVELL INTERNATIONAL CO., LTD.

Effective date: 20070420

C41 Transfer of patent application or patent right or utility model
TA01 Transfer of patent application right

Effective date of registration: 20070420

Address after: Babado J San Michael

Applicant after: MARVELL WORLD TRADE Ltd.

Address before: Bermuda Hamilton

Applicant before: MARVELL INTERNATIONAL Ltd.

Effective date of registration: 20070420

Address after: Bermuda Hamilton

Applicant after: MARVELL INTERNATIONAL Ltd.

Address before: California, USA

Applicant before: INTEL Corp.

C14 Grant of patent or utility model
GR01 Patent grant
TR01 Transfer of patent right

Effective date of registration: 20200429

Address after: Singapore City

Patentee after: Marvell Asia Pte. Ltd.

Address before: Ford street, Grand Cayman, Cayman Islands

Patentee before: Kaiwei international Co.

Effective date of registration: 20200429

Address after: Ford street, Grand Cayman, Cayman Islands

Patentee after: Kaiwei international Co.

Address before: Hamilton, Bermuda

Patentee before: Marvell International Ltd.

Effective date of registration: 20200429

Address after: Hamilton, Bermuda

Patentee after: Marvell International Ltd.

Address before: Barbados, St Michael

Patentee before: MARVELL WORLD TRADE Ltd.

TR01 Transfer of patent right
CX01 Expiry of patent term
CX01 Expiry of patent term

Granted publication date: 20080611