CN1790310A - 用于单指令、多数据执行引擎标志寄存器的评估单元 - Google Patents

用于单指令、多数据执行引擎标志寄存器的评估单元 Download PDF

Info

Publication number
CN1790310A
CN1790310A CNA2005101347265A CN200510134726A CN1790310A CN 1790310 A CN1790310 A CN 1790310A CN A2005101347265 A CNA2005101347265 A CN A2005101347265A CN 200510134726 A CN200510134726 A CN 200510134726A CN 1790310 A CN1790310 A CN 1790310A
Authority
CN
China
Prior art keywords
flag register
simd
passage
engine
output
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
CNA2005101347265A
Other languages
English (en)
Other versions
CN100422979C (zh
Inventor
迈克尔·德怀尔
江洪
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
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 CN1790310A publication Critical patent/CN1790310A/zh
Application granted granted Critical
Publication of CN100422979C publication Critical patent/CN100422979C/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

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/30094Condition code generation, e.g. Carry, Zero flag
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • 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/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/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • 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
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G06F9/3887Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple data lanes [SIMD]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Mathematical Physics (AREA)
  • Computing Systems (AREA)
  • Executing Machine-Instructions (AREA)
  • Advance Control (AREA)
  • Image Processing (AREA)

Abstract

根据一些实施方案,可以为单指令、多数据(SIMD)执行引擎标志寄存器提供评估单元。例如,水平评估单元可以在由SIMD执行引擎进行处理的多个向量上执行评估操作。根据一些实施方案,垂直评估单元可以在多个标志寄存器上执行评估操作。

Description

用于单指令、多数据执行引擎标志寄存器的评估单元
技术领域
本发明涉及用于单指令、多数据执行引擎标志寄存器的评估单元。
背景技术
为了改进处理系统的性能,可以在单个指令周期中对多个操作数的数据同时执行一条指令。这样的指令可以被称为单指令、多数据(SIMD)指令。例如,八通道SIMD执行引擎可能对八个32位操作数的数据同时执行一条指令,每个操作数被映射到SIMD执行引擎的唯一计算通道。此外,可以使用一个或多个标志寄存器,每个标志寄存器具有与执行引擎的每条通道相关联的若干位置(例如,对于八通道的SIMD执行引擎而言可以提供三个8位标志寄存器)。以不同的方式高效、灵活地访问标志寄存器信息的能力可以改进执行引擎的性能。
发明内容
根据一些实施方案,可以为单指令、多数据(SIMD)执行引擎标志寄存器提供评估单元。例如,水平评估单元可以在由SIMD执行引擎进行处理的多个向量上执行评估操作。根据一些实施方案,垂直评估单元可以在多个标志寄存器上执行评估操作。
根据本发明的一个方面,提供了一种方法,包括:将信息存储到n通道单指令、多数据(SIMD)执行引擎的n位置标志寄存器中,所述信息代表多个m通道独立向量,其中n和m是大于1的整数;以及基于所述标志寄存器中的信息生成输出,所述输出包括至少一个其值基于代表不同独立向量的信息的位置。
根据本发明的另一个方面,提供了一种方法,包括:将信息存储到n通道单指令、多数据(SIMD)执行引擎的第一p位置标志寄存器中,其中n和p是大于1的整数;将信息存储到所述执行引擎的第二标志寄存器中;以及生成输出,该输出包括至少一个其值基于来自第一标志寄存器和第二标志寄存器两者的信息的位置。
根据本发明的又一个方面,提供了一种方法,包括:将信息存储到n通道单指令、多数据(SIMD)执行引擎的标志寄存器中,其中n是大于1的整数;接收与一组SIMD执行引擎通道相关联的指示;以及基于所述标志寄存器中与所述一组SIMD执行引擎通道相关联的信息来生成输出。
根据本发明的再一个方面,提供了一种装置,包括:n通道单指令、多数据(SIMD)执行引擎的n位标志寄存器,其中n是大于1的整数,并且所述标志寄存器的每一位都与一条通道相关联,并且其中所述标志寄存器存储来自执行单元的信息,所述信息与一个以上的多通道图形向量相关联;以及,生成n位输出的水平评估单元,其中所述输出的每一位都与所述SIMD执行引擎的一条通道相关联,并且所述输出中至少一位的值是基于所述标志寄存器中代表不同图形向量的位。
根据本发明的再又一个方面,提供了一种装置,包括:n通道单指令、多数据(SIMD)执行引擎的第一n位标志寄存器,其中n是大于1的整数;所述SIMD执行引擎的第二n位标志寄存器;以及,生成n位输出的垂直评估单元,所述输出包括至少一个其值基于来自第一标志寄存器和第二标志寄存器两者的信息的位。
根据本发明的再又一个方面,提供了一种系统,包括:处理器,所述处理器包括:n通道单指令、多数据(SIMD)执行引擎,其中n是大于1的整数,所述执行引擎包括:第一n位标志寄存器,第二n位标志寄存器,以及生成n位输出的垂直评估单元,所述输出包括至少一个其值基于来自第一标志寄存器和第二标志寄存器两者的信息的位;以及图形存储单元。
附图说明
图1和2图示了处理系统。
图3图示了基本同时处理两个向量的处理系统。
图4根据一些实施方案图示了用于SIMD执行引擎标志寄存器的水平评估单元。
图5是根据一些实施方案的方法的流程图。
图6是根据一些实施方案的方法的流程图。
图7根据一些实施方案图示了用于SIMD执行引擎标志寄存器的垂直评估单元。
图8是根据一些实施方案的方法的流程图。
图9根据一些实施方案图示了用于SIMD执行引擎标志寄存器的垂直评估单元。
图10是根据一些实施方案的方法的流程图。
图11根据一些实施方案图示了用于SIMD执行引擎标志寄存器的水平和垂直评估单元。
图12是根据一些实施方案的系统的框图。
具体实施方式
这里所描述的一些实施方案与“处理系统”相关联。用在这里,短语“处理系统”可以指处理数据的任何设备。例如,处理系统可以与处理图形数据和/或其他类型的媒体信息的图形引擎相关联。在一些情形中,利用SIMD执行引擎可以改进处理系统的性能。例如,SIMD执行引擎可能对多个数据通道同时执行单个浮点SIMD指令(例如,为了加速变换和/或绘制(rendering)三维几何形状)。处理系统的其他实施例包括中央处理单元(CPU)和数字信号处理器(DSP)。
图1图示了包括SIMD执行引擎110的一种类型的处理系统100。在这种情形中,执行引擎110接收指令,一同接收的还有四个操作数的数据,其中每个操作数都与一个不同的向量相关联(例如,从向量V0到V3的四个X分量)。每个向量例如可以包括与三维图形位置相关联的三个位置值(例如X、Y和Z)。然后,引擎110可以在单个指令周期内对所有的操作数同时执行所述指令。这样一种方法被称为“垂直”实现、“通道串行”实现或“数组结构(SOA)”实现。
图2图示了包括SIMD执行引擎210的另一种类型的处理系统200。在这种情形中,执行引擎210(例如从指令存储单元)接收指令,一同接收的还有四分量的数据向量(例如,向量分量X、Y、Z和W,每个分量具有多位,设置用于在SIMD执行引擎110的相应通道0到3上进行处理)。然后,引擎210可以对所述向量中的所有分量同时执行所述指令。这样一种方法被称为“水平”实现、“通道并行”实现或“结构数组(AOS)”实现。虽然这里描述的一些实施方案与四通道SIMD执行引擎110相关联,但是应注意,SIMD执行引擎可能具有一条以上的任意数量的通道(例如,实施方案可以与一个32通道执行引擎相关联)。
根据一些实施方案,SIMD引擎可以同时处理与多个向量相关联的信息。例如,图3图示了包括八通道SIMD执行引擎310在内的处理系统400,所述引擎310可以同时处理两个向量。也就是说,通道0到3可以处理向量0,同时通道4到7处理向量1。
执行引擎310还可以包括标志寄存器320,其具有与每条通道相关联的若干位置。例如,标志寄存器320可以是一个8位寄存器,每一位可以是与逻辑计算通道之一相关联的一个标志(F)。标志例如可以与用于该通道的算数逻辑单元(ALU)运算所生成的一个或多个结果相关联。结果例如可以与0、非0、等于、不等于、大于、大于等于、小于、小于等于、和/或溢出条件相关联。例如,考虑用于SIMD执行引擎的以下指令:
add.f.z(8)     r0             r1      -r2在这种情形中,从寄存器r1中的值减去寄存器r2中的值,结果被存储在寄存器r0中,如果结果等于0(“.z”),则标志寄存器320(“.f”)中的位将被置位。这将对所有的八条通道同时进行,并且标志寄存器320中的所有八位将被适当地更新。
在一些应用中,以不同的方式访问标志寄存器320中的信息可能是有帮助的。例如在图形应用中,有时确定标志寄存器320中的任何标志是否为0可能是有帮助的,而在其他时候知道以下事情可能是有帮助的:(i)与关联于第一向量的通道0到3相关的任何标志是否为0;(ii)与关联于第二向量的通道4到7相关的任何标志是否为0。
图4根据一些实施方案图示了包括标志寄存器420的系统400。如前所述,系统400可以同时处理与多个向量相关联的信息。虽然在图4中示出了一个8位标志寄存器420,但是请注意,可以提供其他位数。例如,标志寄存器420可以是n通道SIMD执行引擎的n位标志寄存器,其中n是大于1的整数。根据一些实施方案,标志寄存器420的每一位都可以与一条通道相关联,并且标志寄存器420可以接收并存储来自SIMD执行引擎的信息。根据一些实施方案,该信息可以与一个以上的多通道向量相关联(例如,可以同时处理两个图形向量)。
根据一些实施方案,n通道执行引擎可以具有一个p位标志寄存器,其中p小于n。例如,对于16通道SIMD执行引擎,可以提供四位标志寄存器,并且标志寄存器中的每一位都可以与四条通道相关联。
此外,可以提供水平“评估”单元430来生成n位的输出,其中输出的每一位都与SIMD执行引擎的一条通道相关联。用在这里,术语“评估”可以指与搅拌(swizzle)、组装(assemble)和/或逻辑操作有关的信息访问。例如,搅拌操作可能与信息的重新排列或分组相关联。作为其他的例子,信息可能被复制、重新排列和/或分组。此外,信息可以被组装,使得单独的存储元件的若干部分被收集到单个逻辑存储元件中。注意,可以对信息执行的逻辑操作包括位方式的逻辑操作,例如AND、OR以及其他逻辑操作。
例如,图4中所示的水平评估单元430可以从标志寄存器420接收8位并生成8位的输出。水平评估单元430的操作例如可以由操作数取回单元进行控制。根据一些实施方案,水平评估单元430可以只是将标志寄存器420中的每个标志映射到输出中的对应标志(例如,图4中的输出此时将是“0100 1111”的通过内容)。
根据一些实施方案,水平评估单元430也可以被控制来对标志寄存器420中的所有位执行评估。例如,“any8”条件可能致使水平评估单元430来判断标志寄存器中的八位中是否有任何位被置位。如果是的,则输出的全部八位被设置为1。如果不是,则输出的全部八位都被设置为0(例如,图4中的输出将会是“1111 1111”)。因此,输出中至少有一位的值可以基于标志寄存器420中代表不同的执行通道和/或向量的位。
根据一些实施方案,用于n通道执行引擎的水平评估单元可以具有p位输出,其中p小于n。例如,可以为八通道SIMD执行引擎提供四位输出,并且输出中的每一位都可能与两条通道相关联。
根据一些实施方案,水平评估单元430可以被控制来对标志寄存器420中的某个位的子集进行评估。例如,水平评估单元430可以被控制来对标志寄存器420中与CH0、CH2、CH4和CH6相关联的位进行评估。
图5是根据一些实施方案的方法的流程图。该方法例如可以结合图4的系统400来完成。这里描述的流程图不一定意味着动作的某个固定顺序,可以以任意可行的顺序来实现实施方案。注意,这里描述的任何方法都可以用硬件、软件(包括微代码)、固件或它们的任意组合来实现。例如,存储介质可以在上面存储指令,这些指令在由机器执行时导致可实现这里所描述的任意实施方案。
在502处,信息被存储到n通道SIMD执行引擎的n位置标志寄存器中。所述信息例如可以代表多个m通道独立向量,其中n和m是大于1的整数。
在504处,基于标志寄存器中的信息来生成输出。输出例如可以包括至少一个位置,该位置的值是基于代表不同独立向量的信息。例如,可以基于与正在同时处理的两个不同向量相关联的信息来设置八位输出的第一位。
在一些情形中,水平评估单元可以被控制来对不同组的标志寄存器位置进行操作。例如,图6是根据一些实施方案的方法的流程图。在602处,接收到与至少一组SIMD执行引擎通道相关联的指示。在604处,对与该组通道相关联的位进行评估。
水平评估单元例如可以接收到“a114”条件的指示。再次参考图4,这样一个条件可以使水平评估单元430针对以下两者独立地评估是否所有的标志位都为1:(i)标志寄存器中对应于通道0到3的位;(ii)标志寄存器中对应于通道4到7的位。
每次评估的结果可以随后被存储在输出中代表所述SIMD执行引擎通道组的那一组位中。例如,如果标志寄存器420中对应于通道0到3的所有位都被置位,则输出中对应于通道0到3的位可以被置位。类似地,如果标志寄存器420中对应于通道4到7的所有位都被置位,则输出中对应于通道4到7的位可以被置位。在图4所示的情形中,输出将是“0000 1111”。
水平评估单元430接收到的指示可能与不同大小的多组SIMD执行引擎通道相关联。例如,如前所述,由水平评估单元430评估的组可能与一个八位组或两个四位组相关联。作为另一个实施例,水平评估单元430可能接收到与“any2”条件相关联的指示,其意味着应当对四对标志进行评估(并且每次评估的结果将被映射到输出中的对应两位)。在图4所示的情形中,输出将是“1100 1111”。
注意,可以提供任意大小的组或者大小组合的组(组中的位不一定是邻居)。例如,考虑一个16位标志寄存器。在此情形中,可以对八个两位组进行评估。作为另一个实施例,两个最高有效位(MSB)和两个最低有效位(LSB)可以作为第一组来合并及评估,而剩余的12位作为第二组来评估。
这些类型的评估操作“在水平方向上”可以对单个标志寄存器420上的信息进行分组、重新排列、和/或评估。现在参考图7的系统700,它包括两个8位标志寄存器720(f0和f1)。虽然在图7中示出了两个标志寄存器720,但是可以提供两个以上的标志寄存器。
例如,现在考虑用于SIMD执行引擎的以下指令:
add.f0.z(8)    r0    r1    -r2
add.f1.z(8)    r3    r4    r5在此情形中,从寄存器r1中的值减去寄存器r2中的值,结果被存储在寄存器r0中,并且如果结果等于0(“.z”),则标志寄存器0(“.f0”)中的位将被置位。注意,可以同时对八个操作数的数据执行该指令(f0中的所有八位可以被同时更新)。类似地,寄存器r5中的值与寄存器r4中的值相加,结果被存储在寄存器r3中,并且如果结果等于0(“.z”),则标志寄存器1(“.f1”)中的位将被置位。
根据一些实施方案,可以提供垂直评估单元740来生成n位输出,该输出包括至少一位,该位的值是基于来自两个标志寄存器720的信息。例如,垂直评估单元740可以连同f1的八位一道接收f0的八位,并生成八位输出。
图8是根据一些实施方案的方法的流程图。该方法例如可以与图7的系统700相关联。在802处,信息被存储到n通道SIMD执行引擎的第一n位置标志寄存器中,其中n是大于1的整数。类似地,信息在804处被存储到所述执行引擎的第二n位置标志寄存器中。在806处,生成输出,该输出包括至少一个位置,该位置的值是基于来自第一标志寄存器和第二标志寄存器的信息。
再次参考图7,垂直评估单元740可以被控制来将f0(或f1)的值传递过去成为输出。此时,在f0的情形中,图7中所示的输出将是“0100 1101”(或者在f1的情形中,输出将是“1101 0111”)。根据一些实施方案,垂直评估单元740可以合并来自f0和f1的信息,以生成输出。例如,垂直评估单元740可能接收到与“a112”条件相关联的指示,使得只有在f0和f1两者中的对应位都被置位时,输出中的位才被置位(例如,图7的输出将是“01000101”)。类似地,“any2”条件可能导致图7中“11011111”的输出。
“垂直”评估单元740因而可以合并不同标志寄存器740上的信息。在一些情形中,垂直评估单元940可以合并多组标志寄存器上的信息。例如考虑图9中的系统900,其包括四个8位标志寄存器920(f0到f3)。此外,垂直评估单元940从每个标志寄存器中接收8位,并生成8位输出。
图10图示了可与这样一个系统900相关联的方法。在902处,接收到与一组标志寄存器相关联的指示。例如,该指示可以控制垂直评估单元940对标志寄存器之一或者所有四个标志寄存器进行操作。
根据一些实施方案,垂直评估单元940可能被控制来对其他组标志寄存器进行操作。例如,垂直评估单元940可能被控制来评估f0和f1(并且忽略f2和f3)。作为另一个实施例,垂直评估单元940可能被控制来对f0、f2和f3进行操作(并且忽略f1)。
对于每条SIMD执行引擎通道,在1004处对来自所述组中标志寄存器的代表该通道的位进行评估。在1006处,这些评估的结果被存储在适当的输出位中。
再次参考图9,假设垂直评估单元940已接收到一个指示,该指示为f0和f1应当被评估,而且,在并且只有在这两个标志寄存器中的对应位都被置为1的时候,每个输出位才应当被置位。在图9的实施例中,输出将会是“0100 1111”。如果垂直评估单元940已被另外控制为对f2和f3进行评估,则输出将是“1100 1100”。
根据一些实施方案,水平和垂直评估操作都可以被支持。例如考虑图11的系统1100,其包括四个8位标志寄存器1120(f0到f3)。根据一些实施方案,复用器1150决定是八位数据还是八个结果位(例如,代表一个或多个ALU标志的每一位)被存储到标志寄存器1120中。此外,SIMD执行单元的后端例如可能使用FlagWrite、FlagSelect命令来选择f0到f3中的哪些将存储信息。
根据一些实施方案,水平评估单元1130接收到用于每条SIMD执行通道的四位(每个标志寄存器一位),并且生成8位输出。垂直评估单元1140从每个标志寄存器接收八位(用于每条SIMD执行通道),并生成八位输出。水平评估单元1130和垂直评估单元1140可以根据这里描述的任意实施方案来操作,并且例如可以由SIMD执行单元的前端来控制。
复用器1160可以决定执行单元前端是接收水平评估单元1130的输出还是垂直评估单元1140的输出。例如,一条指令可能让系统1100对标志寄存器进行水平评估(例如,“any2horizontal for f2”使得f2中的多对位被评估),而另一条指令导致垂直评估(例如,“all4vertical”使得对于每条通道来评估四位)。
因为可以以不同的方式来高效、灵活地访问标志寄存器1120中的信息,所以可以改进系统1100的性能。例如,标志位的交叉通道分配和逻辑组合可以减少指令的量,否则要利用软件来完成这样的标志评估,将需要相当多的指令量。
此外,考虑同时支持8通道和16通道操作的执行引擎。根据一些实施方案,当使能8通道操作时,水平评估操作可有利于使用所有的标志寄存器位(例如,两个8通道组的标志寄存器位可被用于水平评估操作)。此外,可以支持SOA和AOS编程。
图12是根据一些实施方案的系统1200的框图。系统1200例如可以与适于记录和/或显示数字电视信号的媒体处理器相关联。系统1200包括图形引擎1210,其具有根据这里所描述的任意实施方案的n操作数SIMD执行引擎1220。例如,SIMD执行引擎1220可以具有用于一个或多个标志寄存器的水平和/或垂直评估单元。系统1200还可以包括存储SIMD指令的指令存储单元1230和存储图形数据(例如,与三维图像相关联的向量)的图形存储单元1240。指令存储单元1230和图形存储单元1240例如可以包括随机访问存储器(RAM)单元。根据一些实施方案,系统1200还可以包括硬盘驱动器1250(例如,存储并提供媒体信息)。
下面解释各种附加的实施方案。这些并没有构成对所有可能的实施方案的限定,本领域的技术人员将理解,很多其他的实施方案都是可能的。此外,虽然为清楚起见简要描述了以下实施方案,但是本领域的技术人员将理解如何在必要的时候对以上描述做出改变,以适应这些及其他实施方案和应用。
虽然这里作为实施例已描述了某些评估操作,但是实施方案可以以任意多的方式来重新排列和/或重新组织标志寄存器信息。例如,水平评估单元可以交换32位标志寄存器的16位LSB和16位MSB。类似地,可以在其他位中复制标志寄存器中的一些位(例如,与图形向量X分量相关联的标志位可能被复制用于与该向量的其他三个分量相关联的标志位)。
作为另一个实施例,考虑以下情形,其中判断以下位中是否没有一位被置位将是有帮助的:(i)与SIMD执行通道0到3相关联的f2中的位;和(ii)与SIMD执行通道4到7相关联的f0中的位。在此情形中,水平评估单元可以接收用于每条执行通道的所有四个标志寄存器的位,并且在执行适当的评估以生成输出之前,生成一组组装的八位信息。
作为再另一个实施例,系统可能使用通道0到3来处理第一图形向量,并使用通道4到7来处理第二图形向量。此外,假设逐个通道地确定以下两者是否为真将是有帮助的:(i)f0中的位和f1中的位对于第二图形向量是0;和(ii)f2中的位和f3中的位对于第一图形向量是0。在此情形中,评估单元可能在执行垂直评估操作之前交换f2的较低四位与f2的较高四位(并对f3执行类型操作)。
此外,注意这里描述的实施方案可以支持多线程化SIMD执行引擎。例如考虑可执行三个线程的具有四个标志寄存器的16通道SIMD。在此情形中,水平评估单元可以接收用于16条执行通道中每一条的三组4位(四个标志寄存器的三个线程)。类似地,垂直评估单元可以接收用于四个标志寄存器中每一个的三组16位(16条通道的三个线程)。
这里描述的几个实施方案仅仅是示意性的。本领域的技术人员从本说明书中将认识到:利用仅由权利要求书限定的修改和替换可以实现其他实施方案。

Claims (29)

1.一种方法,包括:
将信息存储到n通道单指令、多数据(SIMD)执行引擎的n位置标志寄存器中,所述信息代表多个m通道独立向量,其中n和m是大于1的整数;以及
基于所述标志寄存器中的信息生成输出,所述输出包括至少一个其值基于代表不同独立向量的信息的位置。
2.如权利要求1所述的方法,其中所述标志寄存器具有p位,每一位代表所述SIMD执行引擎的至少一条通道,并且p小于n。
3.如权利要求1所述的方法,其中所述输出具有p位,每一位代表所述SIMD执行引擎的至少一条通道,并且p小于n。
4.如权利要求1所述的方法,其中每个向量(i)与所述SIMD执行引擎的至少两条通道相关联,并且(ii)包括与图形位置相关联的两个位置值。
5.如权利要求1所述的方法,其中(i)所述标志寄存器具有n位,每一位代表所述SIMD执行引擎的一条通道,并且(ii)所述输出具有n位,每一位代表所述SIMD执行引擎的一条通道。
6.如权利要求5所述的方法,其中所述输出中的第一位代表所述SIMD执行引擎的第一通道,并且所述输出中的所述第一位的值至少部分基于所述标志寄存器中不代表所述第一通道的位。
7.如权利要求1所述的方法,其中所述生成输出的步骤包括:
接收与至少一组SIMD执行引擎通道相关联的指示;
评估所述标志寄存器中代表所述SIMD执行引擎通道组的一组位;以及
将所述评估的结果存储在所述输出中代表所述SIMD执行引擎通道组的一组位中。
8.如权利要求7所述的方法,其中所述评估步骤包括判断以下之一:(i)所述标志寄存器中的所述一组位是否全部都具有第一值;或者(ii)所述标志寄存器中的所述一组位是否有任一位具有第一值。
9.如权利要求7所述的方法,其中指示可以与不同大小的SIMD执行引擎通道组相关联。
10.如权利要求7所述的方法,其中所接收的指示与多组相关联,并且对于每一组进行所述评估和存储。
11.如权利要求1所述的方法,其中所述存储的步骤包括将第一信息存储到第一标志寄存器中,并且所述方法还包括:
将第二信息存储到所述SIMD执行引擎的第二标志寄存器中;以及
基于所述第一和第二标志寄存器中的信息生成第二输出,所述第二输出包括至少一个下述位置,该位置的值是基于来自所述第一标志寄存器和第二标志寄存器两者的信息。
12.一种方法,包括:
将信息存储到n通道单指令、多数据(SIMD)执行引擎的第一p位置标志寄存器中,其中n和p是大于1的整数;
将信息存储到所述执行引擎的第二标志寄存器中;以及
生成输出,该输出包括至少一个其值基于来自第一标志寄存器和第二标志寄存器两者的信息的位置。
13.如权利要求12所述的方法,其中(i)所述第一标志寄存器具有n位,每一位代表所述SIMD执行引擎的一条通道,(ii)所述第二标志寄存器具有n位,每一位代表所述SIMD执行引擎的一条通道,并且(iii)所述输出具有n位,每一位代表所述SIMD执行引擎的一条通道。
14.如权利要求13所述的方法,其中所述输出中的第一位代表所述SIMD执行引擎的第一通道,并且所述输出中的所述第一位的值至少部分基于标志寄存器中不代表所述第一通道的位。
15.如权利要求13所述的方法,其中所述生成输出的步骤包括:
接收与一组标志寄存器相关联的指示;并且
对于每条SIMD执行引擎通道:
评估来自所述组中标志寄存器的代表该通道的位;以及
将所述评估的结果存储在代表该通道的输出位中。
16.如权利要求15所述的方法,其中所述评估步骤包括,对于每条SIMD执行引擎通道,判断以下之一:(i)来自所述组中标志寄存器的代表该通道的位是否全部具有第一值;或者(ii)来自所述组中标志寄存器的代表该通道的位中是否有任一位具有第一值。
17如权利要求15所述的方法,其中指示可以与不同大小的标志寄存器组相关联。
18.如权利要求13所述的方法,其中所述第一信息代表多个m通道独立向量,这里m是大于1的整数,并且所述生成的步骤包括生成第一输出,所述方法还包括:
基于所述第一信息生成第二输出,所述第二输出包括至少一个其值基于代表不同独立向量的信息的位置。
19.如权利要求18所述的方法,其中每个向量(i)与所述SIMD执行引擎的至少两条通道相关联;并且(ii)包括与位置相关联的两个值。
20.一种方法,包括:
将信息存储到n通道单指令、多数据(SIMD)执行引擎的标志寄存器中,其中n是大于1的整数;
接收与一组SIMD执行引擎通道相关联的指示;以及
基于所述标志寄存器中与所述一组SIMD执行引擎通道相关联的信息来生成输出。
21.一种装置,包括:
n通道单指令、多数据(SIMD)执行引擎的n位标志寄存器,其中n是大于1的整数,并且所述标志寄存器的每一位都与一条通道相关联,并且其中所述标志寄存器存储来自执行单元的信息,所述信息与一个以上的多通道图形向量相关联;以及
生成n位输出的水平评估单元,其中所述输出的每一位都与所述SIMD执行引擎的一条通道相关联,并且所述输出中至少一位的值是基于所述标志寄存器中代表不同图形向量的位。
22.如权利要求21所述的装置,其中所述水平评估单元还(i)接收与至少一组SIMD执行引擎通道相关联的指示;(ii)评估所述标志寄存器中代表所述SIMD执行引擎通道组的一组位;并且(iii)将所述评估的结果输出到所述执行单元。
23.如权利要求21所述的装置,其中指示可以与不同大小的SIMD执行引擎通道组相关联。
24.一种装置,包括:
n通道单指令、多数据(SIMD)执行引擎的第一n位标志寄存器,其中n是大于1的整数;
所述SIMD执行引擎的第二n位标志寄存器;以及
生成n位输出的垂直评估单元,所述输出包括至少一个其值基于来自第一标志寄存器和第二标志寄存器两者的信息的位。
25.如权利要求24所述的装置,其中所述垂直评估单元还(i)接收与一组标志寄存器相关联的指示,并且对于每条SIMD执行引擎通道:(ii)评估来自所述组中标志寄存器的代表该通道的位;并且(iii)将所述评估的结果存储在代表该通道的输出位中。
26.如权利要求25所述的装置,还包括:
提供所述指示并接收所述输出的执行单元。
27.一种系统,包括:
处理器,所述处理器包括:
n通道单指令、多数据(SIMD)执行引擎,其中n是大于1的整数,所述执行引擎包括:
第一n位标志寄存器,
第二n位标志寄存器,以及
生成n位输出的垂直评估单元,所述输出包括至少一个其值基于来自第一标志寄存器和第二标志寄存器两者的信息的位;以及图形存储单元。
28.如权利要求27所述的系统,其中所述第一标志寄存器存储来自执行单元的信息,所述信息与一个以上的多通道图形向量相关联。
29.如权利要求27所述的系统,还包括:
水平评估单元。
CNB2005101347265A 2004-12-17 2005-12-19 用于单指令、多数据执行引擎标志寄存器的评估单元 Expired - Fee Related CN100422979C (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/015,778 2004-12-17
US11/015,778 US7219213B2 (en) 2004-12-17 2004-12-17 Flag bits evaluation for multiple vector SIMD channels execution

Publications (2)

Publication Number Publication Date
CN1790310A true CN1790310A (zh) 2006-06-21
CN100422979C CN100422979C (zh) 2008-10-01

Family

ID=36123387

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB2005101347265A Expired - Fee Related CN100422979C (zh) 2004-12-17 2005-12-19 用于单指令、多数据执行引擎标志寄存器的评估单元

Country Status (8)

Country Link
US (1) US7219213B2 (zh)
JP (1) JP4901754B2 (zh)
KR (1) KR100958964B1 (zh)
CN (1) CN100422979C (zh)
DE (1) DE112005003130B4 (zh)
GB (1) GB2436499B (zh)
TW (1) TWI297853B (zh)
WO (1) WO2006066262A2 (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102103570A (zh) * 2009-12-22 2011-06-22 英特尔公司 Simd向量的同步化
CN106020776A (zh) * 2015-03-25 2016-10-12 想象技术有限公司 Simd处理模块

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008071130A (ja) * 2006-09-14 2008-03-27 Ricoh Co Ltd Simd型マイクロプロセッサ
WO2011032593A1 (en) * 2009-09-17 2011-03-24 Nokia Corporation Multi-channel cache memory
US9665371B2 (en) 2011-11-30 2017-05-30 Intel Corporation Providing vector horizontal compare functionality within a vector register
US10318291B2 (en) 2011-11-30 2019-06-11 Intel Corporation Providing vector horizontal compare functionality within a vector register
US10255228B2 (en) * 2011-12-06 2019-04-09 Nvidia Corporation System and method for performing shaped memory access operations
US10042813B2 (en) * 2014-12-15 2018-08-07 Intel Corporation SIMD K-nearest-neighbors implementation
US20200341772A1 (en) * 2019-04-29 2020-10-29 DeGirum Corporation Efficient Architectures For Deep Learning Algorithms

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2768803B2 (ja) * 1990-04-26 1998-06-25 株式会社東芝 並列演算処理装置
JP2793357B2 (ja) * 1990-11-20 1998-09-03 株式会社東芝 並列演算装置
JP2793342B2 (ja) * 1990-08-09 1998-09-03 株式会社東芝 演算処理装置
US5659722A (en) * 1994-04-28 1997-08-19 International Business Machines Corporation Multiple condition code branching system in a multi-processor environment
JP3442225B2 (ja) * 1996-07-11 2003-09-02 株式会社日立製作所 演算処理装置
US5805875A (en) * 1996-09-13 1998-09-08 International Computer Science Institute Vector processing system with multi-operation, run-time configurable pipelines
JP3652518B2 (ja) 1998-07-31 2005-05-25 株式会社リコー Simd方式の演算器及び演算処理装置
US20020083311A1 (en) * 2000-12-27 2002-06-27 Paver Nigel C. Method and computer program for single instruction multiple data management
GB2382886B (en) * 2001-10-31 2006-03-15 Alphamosaic Ltd Vector processing system
US6986023B2 (en) * 2002-08-09 2006-01-10 Intel Corporation Conditional execution of coprocessor instruction based on main processor arithmetic flags
JP3958662B2 (ja) * 2002-09-25 2007-08-15 松下電器産業株式会社 プロセッサ

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102103570A (zh) * 2009-12-22 2011-06-22 英特尔公司 Simd向量的同步化
US8996845B2 (en) 2009-12-22 2015-03-31 Intel Corporation Vector compare-and-exchange operation
CN102103570B (zh) * 2009-12-22 2015-08-12 英特尔公司 Simd向量的同步化
CN106020776A (zh) * 2015-03-25 2016-10-12 想象技术有限公司 Simd处理模块
CN106020776B (zh) * 2015-03-25 2021-09-03 北欧半导体公司 Simd处理模块

Also Published As

Publication number Publication date
CN100422979C (zh) 2008-10-01
DE112005003130B4 (de) 2009-09-17
GB2436499A (en) 2007-09-26
KR20070089208A (ko) 2007-08-30
WO2006066262A2 (en) 2006-06-22
US20060149924A1 (en) 2006-07-06
JP2008524723A (ja) 2008-07-10
GB2436499B (en) 2009-07-22
TW200636573A (en) 2006-10-16
JP4901754B2 (ja) 2012-03-21
GB0713878D0 (en) 2007-08-29
US7219213B2 (en) 2007-05-15
WO2006066262A3 (en) 2006-12-14
TWI297853B (en) 2008-06-11
DE112005003130T5 (de) 2007-11-22
KR100958964B1 (ko) 2010-05-20

Similar Documents

Publication Publication Date Title
CN1790310A (zh) 用于单指令、多数据执行引擎标志寄存器的评估单元
CN113762490B (zh) 使用列折叠和挤压的稀疏矩阵的矩阵乘法加速
CN1716185A (zh) 用于单指令、多数据执行引擎的条件指令
US8078836B2 (en) Vector shuffle instructions operating on multiple lanes each having a plurality of data elements using a common set of per-lane control bits
KR101900236B1 (ko) 데이터 처리장치 및 방법
CN103502935B (zh) 向量友好指令格式及其执行
CN112711443B (zh) 用于执行16位浮点向量点积指令的系统和方法
CN1149478C (zh) 从本地码有效调用Java方法的方法和设备
US6738793B2 (en) Processor capable of executing packed shift operations
CN1821952A (zh) 处理系统的寄存器文件区域
JP5607832B2 (ja) 汎用論理演算の方法および装置
CN109992304A (zh) 用于加载片寄存器对的系统和方法
CN1279783A (zh) 利用规格字段指令编码的处理器
CN1619526A (zh) 用于处理矩阵数据的处理器和方法
EP3326060B1 (en) Mixed-width simd operations having even-element and odd-element operations using register pair for wide data elements
CN1846193A (zh) 用于并行数据转换的方法、设备及指令
CN104011665A (zh) 超级乘加(超级madd)指令
CN1434380A (zh) 图像处理装置和方法以及用于该装置的编译程序
CN104011664A (zh) 使用三个标量项的超级乘加(超级madd)指令
CN109992300A (zh) 用于点积操作的系统、方法和装置
CN109992305A (zh) 用于将片寄存器对归零的系统和方法
CN1806225A (zh) 在具有多指令集的数据处理设备内的指令编码
CN1320450C (zh) 提供可变宽度的至少六路加法指令的方法及相应装置
CN1612163A (zh) 图形解码器,图形显示加速方法和图像再现设备
CN101076778A (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
C14 Grant of patent or utility model
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20081001

Termination date: 20181219

CF01 Termination of patent right due to non-payment of annual fee