CN103777924A - 用于简化寄存器中对单指令多数据编程的处理器体系结构和方法 - Google Patents

用于简化寄存器中对单指令多数据编程的处理器体系结构和方法 Download PDF

Info

Publication number
CN103777924A
CN103777924A CN201310503908.XA CN201310503908A CN103777924A CN 103777924 A CN103777924 A CN 103777924A CN 201310503908 A CN201310503908 A CN 201310503908A CN 103777924 A CN103777924 A CN 103777924A
Authority
CN
China
Prior art keywords
state
passage
register
instruction
predicate
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
CN201310503908.XA
Other languages
English (en)
Other versions
CN103777924B (zh
Inventor
K·桑海
M·G·佩尔金斯
A·J·希格哈姆
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.)
Analog Devices Global ULC
Analog Devices International ULC
Original Assignee
Ya De Promise Semiconductor Technology Co
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 Ya De Promise Semiconductor Technology Co filed Critical Ya De Promise Semiconductor Technology Co
Publication of CN103777924A publication Critical patent/CN103777924A/zh
Application granted granted Critical
Publication of CN103777924B publication Critical patent/CN103777924B/zh
Active 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/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30018Bit or string instructions
    • 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/3005Arrangements for executing specific machine instructions to perform operations for flow control
    • G06F9/30065Loop control instructions; iterative instructions, e.g. LOOP, REPEAT
    • 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/30098Register arrangements
    • G06F9/30105Register structure
    • G06F9/30109Register structure having multiple operands in a single register
    • 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/3012Organisation of register space, e.g. banked or distributed register file
    • 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
    • G06F9/322Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
    • G06F9/325Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address for loops, e.g. loop detection or loop 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, look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units
    • G06F9/3887Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple data lanes [SIMD]

Abstract

本发明提供了一种用于在寄存器内进行并行处理的处理器及其相关联的方法。示例性处理器可包括具有计算单元和寄存器堆的处理元件。所述寄存器堆包括可被分为用于并行处理的通道的寄存器。所述处理器可能还包括屏蔽寄存器和谓词寄存器。所述屏蔽寄存器和所述谓词寄存器各包括数量等于所述寄存器的可分通道的最大数量的屏蔽位和谓词位。设置所述屏蔽位和谓词位的状态以分别实现启用/禁用通道执行指令和所述指令限定的操作的条件性性能。此外,所述处理器可操作用于跨越所述处理元件的所述通道进行归约操作和/或为所述处理元件的所述通道中的每一个生成地址。

Description

用于简化寄存器中对单指令多数据编程的处理器体系结构和方法
本申请为于2012年10月23日提交的序列号为61/717,534的美国临时专利申请的正式申请,其以全文引用方式并入本文。
技术领域
本公开一般涉及进行并行处理的处理器,如向量处理器,且尤其是涉及在寄存器中进行并行处理的处理器。
背景技术
通常,由处理器实施并行处理以优化处理应用,例如由数字信号处理器所实施以优化数字信号处理应用。处理器可用作单指令多数据(SIMD)或数据并行处理器以实现并行处理。在SIMD操作中,将单指令发送给处理器的大量处理元件,其中每个处理元件可对不同数据进行同样的操作。对不断提高的吞吐量和增强的性能的增长的需求已导致实施寄存器中的SIMD(SWAR),其中处理元件可在其相关的寄存器中在多组数据上进行操作。虽然SWAR在处理器硬件中相对便宜的进行实施,但是SWAR仍从编程的角度提出挑战。例如,SWAR编程通常必须是不作为ANSI C标准(美国国家标准学会(ANSI)发布的用于C编程语言的标准)一部分的高级语言(如C/C++)编写的内在函数、内联汇编和/或专门的向量数据类型(如float2、int4、short4等)。因为这种编程选项(专门的向量数据类型、内在函数和/或内联汇编)是处理器特定的,所以SWAR编程会在遗留代码的移植中产生困难。进一步地,由于SWAR编程在向量处理器上增加了额外级别的并行处理,因此常规的处理器会为了确保处理器识别两个级别的并行操作(双向并行性)而给程序员增加负担:一个级别的并行处理位于处理元件(利用SWAR)中而另一级别的并行处理则跨越处理器向量单元的处理元件。相应地,尽管现有的用于进行并行处理的处理器体系结构以及相关的方法一般已足以实现其预期目的,但是他们在所有方面尚不能完全令人满意。
附图说明
通过下面的详细描述并结合附图进行阅读时,可以最好地理解本公开。要强调的是,按照行业内的标准做法,没有按比例绘制各种特征,且各种特征仅用于说明目的。事实上,为了使讨论更清楚,可以任意增加或减少各种特征的尺寸。
图1为根据本公开的各方面的实例数字信号处理器的示意性方块图。
图2示意性地示出根据本公开的各方面的与分成不同数据量的处理元件(如图1的数字信号处理器的处理元件)相关联的实例寄存器组。
图3、图4和图5示意性地示出根据本公开的各方面的被设置成在每个处理通道的基础上实现不同屏蔽方案的一组屏蔽寄存器,如与图1的数字信号处理器相关联的一组屏蔽寄存器。
图6为根据公开的各方面的用于可通过数字信号处理器(如图1的数字信号处理器)进行的各个处理通道的屏蔽操作的实例方法的流程图。
图7示意性地示出根据本公开的各方面的使用图6的方法在循环的不同迭代期间对屏蔽寄存器所进行的实例设置。
具体实施方式
本公开提供了在任何合适的计算环境中实施的各种处理器实施方案。一个示例性实施方案提供了一种处理器,其包括具有计算单元和寄存器堆的处理元件,其中寄存器堆包括可被分为用于并行处理的通道的寄存器;以及与处理元件相关联的屏蔽寄存器(也被称为屏蔽/谓词寄存器),其中屏蔽寄存器包括数量等于寄存器的可分通道的最大数量的位,从而使通道具有相应的位。在各实施中,处理元件可操作用于基于循环指令将位设置成第一状态和第二状态中的一个,其中处理元件可操作用于启用具有第一状态的相应位的通道以执行指令以及禁用具有第二状态的相应位的通道执行该指令。在各实施中,处理元件可操作用于基于比较指令将位设置成第一状态和第二状态中的一个,其中处理元件可操作用于在具有第一状态的相应位的通道中进行由指令限定的操作以及在具有第二状态的相应位的通道中不进行由指令限定的操作。
另一示例性实施方案提供了一种处理器,其包括具有计算单元和寄存器堆的处理元件,其中寄存器堆包括可被分为用于并行处理的通道的寄存器。屏蔽寄存器可与处理元件相关联,其中屏蔽寄存器包括数量等于寄存器的可分通道的最大数量的屏蔽位,从而使通道具有相应的屏蔽位。谓词寄存器也可与处理元件相关联,其中谓词寄存器包括数量等于可分通道的最大数量的谓词位,从而使通道具有相应的谓词位。计算单元可包括算术逻辑单元、乘法器-累加器和移位器。
在各实施中,处理元件可操作用于启用具有第一状态的相应屏蔽位的通道以执行指令以及禁用具有第二状态的相应屏蔽位的通道执行指令。在各实施中,处理元件可进一步操作用于在具有第三状态的相应谓词位的通道中进行由指令限定的操作;以及在具有第四状态的相应谓词位的通道中不进行由指令限定的操作。在实例中,第一数字状态和第三数字状态为相同的状态,以及第二数字状态和第四数字状态为相同的状态。在实例配置中,处理元件可操作用于基于与指令相关联的操作的循环计数将屏蔽位设置成第一状态或第二状态。在各实施中,对于循环的最后一次迭代而言,处理元件可根据循环的行程计数将屏蔽位设置成第一状态或第二状态。例如,对于循环的最后一次迭代,处理元件可将屏蔽位中的至少一个设置成第二状态。在另一实例中,对于循环的最后一次迭代,处理元件可将所有的屏蔽位都设置成第一状态。在实例配置中,处理元件可操作用于基于与谓词位对应的通道的状况将谓词位设置成第三状态或第四状态。例如,处理元件可将谓词位设置成第三状态,并然后进行比较操作以确定是否应将谓词位中的任何一个改变成第四状态。在各实施中,通道具有一个以上的相应谓词位且处理元件可操作用于基于通道的状况设置所有相应的谓词位。在各实施中,处理元件可操作用于跨越一个以上的通道进行操作。
在一些实施方案中,一种由处理器进行的方法包括将指令发布至包括可分为用于并行处理的处理通道的寄存器的处理元件;设置与处理通道对应的屏蔽位;设置与处理通道对应的谓词位;以及通过处理通道中的至少一个执行指令。在各实施中,屏蔽位的数量等于寄存器的可分处理通道的最大数量且谓词位的数量等于可分处理通道的最大数量。
该方法可能还包括启用具有第一状态的相应屏蔽位的处理通道以执行指令;禁用具有第二状态的相应屏蔽位的处理通道执行指令;在具有第三状态的相应谓词位的通道中进行由指令限定的操作;和/或在具有第四状态的相应谓词位的通道中不进行由指令限定的操作。在各实施中,设置与处理通道对应的屏蔽位包括确定与指令相关联的循环的循环计数;如果循环计数不等于1,则将所有的屏蔽位设置成第一状态;以及如果循环计数等于1,则基于循环的行程计数将屏蔽位中的每一个设置成第一状态或第二状态。在各实施中,设置谓词位包括基于与谓词位对应的处理通道的状况将谓词位设置成第三状态或第四状态。在一些实施方案中,设置包括将谓词位设置成第三状态;以及进行比较操作以确定是否应将谓词位中的任何一个改变成第四状态。在各实施中,谓词位的数量大于处理通道的数量,从而使处理通道具有一个以上的相应谓词位;以及设置谓词位包括基于处理通道的状况设置处理通道的一个以上的相应谓词位。
在其他实施方案中,一种单指令多数据(SIMD)处理器包括具有包括可分为大量SIMD通道的寄存器组的处理元件的计算阵列;具有数量等于可分SIMD通道的最大数量的屏蔽位以使每个SIMD通道具有至少一个相应屏蔽位的屏蔽寄存器;以及具有数量等于可分SIMD通道的最大数量的谓词位以使每个SIMD通道具有至少一个相应谓词位的谓词寄存器。处理元件可操作用于基于屏蔽位和谓词位的状态在SIMD通道中的至少一个中条件性地执行指令。在各实施中,处理元件可操作用于启用具有第一状态的相应屏蔽位的SIMD通道以执行指令;禁用具有第二状态的相应屏蔽位的SIMD通道执行指令;在具有第三状态的相应谓词位的SIMD通道中进行由指令限定的操作;和/或在具有第四状态的相应谓词位的SIMD通道中不进行由指令限定的操作。
实例实施方案的详述
下面的公开提供了许多不同的实施方案或实例以实现本公开的不同特征。对组件和布置的具体实例进行如下描述以简化本公开。当然,这些仅是实例且不意在限制。进一步地,本公开可在各实例中重复使用参考数字和/或字母。该重复是为了实现简单和清楚的目的且本身不指示所讨论的各实施方案和/或配置之间的关系。
图1为根据本公开的各方面的实例数字信号处理器100的示意性方块图。为了清楚起见,已对图1进行简化以更好地理解本公开的发明构思。可在数字信号处理器100中添加额外的特征,且在数字信号处理器100的其他实施方案中可替换或消除下述特征中的一些。
数字信号处理器100可包括控制单元110、存储器120和计算阵列130。在实例中,控制单元110和计算阵列130构成核心处理器,其可执行数字信号处理器100的计算和数据处理功能。数字信号处理器100可包括其他组件,如用于执行微控制器的指令的微控制器、直接存储器存取(DMA)单元和到芯片外设备的各种接口。
控制单元110协助数字信号处理器100的程序执行。控制单元110可包括算术逻辑单元和数据地址生成(ALU-DAG)单元112、程序定序器114和程序存储器116。控制单元110可包括其他组件,如指令高速缓存器、定时器和指令寄存器。ALU-DAG单元112支持通用整数计算并供给地址以用于存储器地址。例如,当在存储器(如存储器120)和寄存器(如计算阵列130的寄存器堆)之间传输数据时,ALU-DAG112提供存储器地址。ALU-DAG单元112可将地址供给数据存储器(例如存储器120)和/或程序存储器116。程序定序器114将指令地址提供至程序存储器116用于提取指令。程序存储器116存储数字信号处理器100所实施的用于处理数据(如存储在存储器120中的数据)的程序且也可存储进程数据。程序包括具有一个或多个指令的指令集,且数字信号处理器100通过提取指令、解码指令和执行指令而实施程序。在实例中,程序可包括用于实施各种数字信号处理算法的指令集。
存储器120存储待数字信号处理器100处理的信息/数据(数据存储器)、由数字信号处理器100实施以处理信息/数据的程序(程序存储器)或其组合。在所描绘的实施方案中,存储器120具有多个组块化的交织存储器结构,从而使存储器120包括存储器组块M1、M2、M3…Mn,其中n为存储器120的存储器组块的总数。在实例中,存储器120为随机存取存储器,如静态随机存取存储器(SRAM)。在实例中,存储器组块M1、M2、M3、…Mn中的一个或多个为单独的SRAM。或者,在各实施中,存储器120为另一种合适类型的存储器。
互连网络140、互连网络142和互连网络144将控制单元110、存储器120和计算阵列130互相连接起来,从而在控制单元110、存储器120和计算阵列130之间提供通信路径。互连网络140、互连网络142和互连网络144包括单总线、多总线、交叉开关矩阵网络、单级网络、多级网络、其他类型的互连网络或其组合。控制单元110经互连网络142将指令和数据地址发布至计算阵列130。因此,互连网络142经互连网络142将用于指令和数据的地址传输至计算阵列130的各处理元件PE1、PE2、PE3、…PEN。互连网络144传输源自存储器(如存储器120、程序存储器116、其他存储器或其组合)的数据和/或指令,因此可将数字信号处理器100中任何寄存器的内容传输至任何其他的寄存器或任何存储器位置,且存储器120可将数据操作数(值)提供至计算阵列130。
计算阵列130包括处理元件PE1、PE2、PE3、…PEN,其中N为计算阵列130的处理元件的总数。在实例中,计算阵列110可包括4个处理元件(换句话说为PE1、PE2、PE3和PE4,其中N=4)。处理元件PE1、PE2、PE3、…PEN进行用于数字信号处理算法的数字处理。处理元件PE1、PE2、PE3、…PEN单独操作、并行操作或作为单指令多数据(SIMD)引擎操作。在本实例中,每个处理元件PE1、PE2、PE3、…PEN均为向量处理器。或者,处理元件PE1、PE2、PE3、…PEN为标量处理器和向量处理器的组合。
处理元件PE1、PE2、PE3、…PEN包括各自的计算单元(CU)1521、1522、1523、…152N。在所描绘的实施方案中,计算单元1521、1522、1523、…152N是相同的,然而本公开也考虑了计算单元不相同的实施方案。本公开还考虑了处理元件PE1、PE2、PE3、…PEN中的一个或多个不包括计算单元的配置。在本实例中,计算单元1521、1522、1523、…152N包括算术逻辑单元(ALU)、乘法累加器(MAC)、移位器、其他计算单元或其组合。ALU能够进行算术和逻辑操作,如加、减、求反、递增、递减、绝对值、与、或、异或、非、除法原语、其他算术操作、其他逻辑操作或其组合。MAC能够进行乘法操作,以及乘法和累加操作,如单周期乘法、乘法/加法、乘法/减法、其他操作或其组合。移位器能够进行逻辑和算术移位、位操作、规格化、去规格化、指数求导操作、其他操作或其组合。可按定点和浮点格式进行各种算术操作、逻辑操作和其他操作。在各实施方案中,ALU、MAC和/或移位器包括与其相关的寄存器。
处理元件PE1、PE2、PE3、…PEN还包括各自的寄存器堆1541、1542、1543、…154N。在所描绘的实施方案中,寄存器堆1541、1542、1543、…154N是相同的,然而本公开也考虑了寄存器堆不相同的实施方案。本公开还考虑了处理元件PE1、PE2、PE3、…PEN中的一个或多个不包括寄存器堆的配置。寄存器堆1541、1542、1543、…154N包括在处理元件PE1、PE2、PE3、…PEN和数据互连网络(如互连网络144)之间传输数据并存储结果的寄存器。在本实例中,寄存器堆1541、1542、1543、…154N可包括各自的通用寄存器组1551、1552、1553、…155N,其包括其宽度取决于数字信号处理器100的设计要求的通用寄存器,如32位通用寄存器、40位通用寄存器、64位通用寄存器、128位通用寄存器、其他宽度的通用寄存器或其组合。为了下面的讨论,通用寄存器组1551、1552、1553、…155N包括32位通用寄存器。在本实例中,寄存器堆1541、1542、1543、…154N还包括各自的屏蔽寄存器1561、1562、1563、…156N和各自的谓词寄存器(predicate register)1581、1582、1583、…158N,其在下面将进行详细讨论。寄存器堆1541、1542、1543、…154N可根据数字信号处理器100的设计要求包括额外的寄存器。进一步地,在各实施中,屏蔽寄存器1561、1562、1563、…156N和/或谓词寄存器1581、1582、1583、…158N为通用寄存器组1551、1552、1553、…155N的通用寄存器中的一个。
数字信号处理器100可进行各种并行操作。例如,在单周期中,处理元件PE1、PE2、PE3、…PEN从存储器(经互连网络142)访问指令并(经互连网络144)访问N个数据操作数以进行同步处理。在单指令多数据(SIMD)模式中,数字信号处理器100并行处理多个数据流。例如,当在SIMD模式中时,单周期内的数字信号处理器100可经互连网络142将单指令发送至处理元件PE1、PE2、PE3、…PEN;经互连网络144从存储器(存储器120、程序存储器116、其他存储器或其组合)加载N个数据组,其中一个数据组是用于处理元件PE1、PE2、PE3、…PEN中的任一个(在实例中,每个数据组可包括两个数据操作数);在处理元件PE1、PE2、PE3、…PEN中同步执行单指令;以及在存储器(存储器120、程序存储器116、其他存储器或其组合)中存储同步执行的数据结果。
数字信号处理器100还可进行寄存器中的SIMD(SWAR),其中处理元件PE1、PE2、PE3、…PEN中的任一个的寄存器(例如:通用寄存器)可分为一个以上的处理通道,从而使处理元件PE1、PE2、PE3、…PEN中的任一个可单独在其各自的处理通道上进行并行操作。例如,在SWAR模式中,处理元件PE1、PE2、PE3、…PEN中的任一个可在n个k/n位通道上进行并行操作,其中k为在寄存器的位中的宽度且n为寄存器的通道的数量。图2示意性地示出根据本公开的各方面的与可进行SWAR的处理元件(如数字信号处理器100的处理元件PE1、PE2、PE3、…PEN)相关联的实例寄存器组。在图2中,一组寄存器包括寄存器R1、寄存器R2和寄存器R3,其中操作(OP)(如加法操作)使用寄存器R1和寄存器R2的元素(数据操作数)执行以在寄存器R3中产生结果。寄存器R1、R2和R3可以是通用寄存器,如通用寄存器组1551、1552和1553。在本实例中,其中的通用寄存器为32位宽(k=32),在SIMD模式中,处理元件PE1、PE2、PE3、…PEN中的任一个可在存储于寄存器R1和R2中的32位元素上进行操作并将结果置于寄存器R3中。为了促进实现本实例,在SWAR模式中,处理元件PE1、PE2、PE3、…PEN的寄存器被分为用于并行操作的一个以上的处理通道,从而使处理元件PE1、PE2、PE3、…PEN中的任一个可在存储于寄存器R1和R2中的16位元素的两个通道(L1和L2)上进行并行操作并将结果置于寄存器R3中(被称为2×16位SWAR处理),或在存储于寄存器R1和R2中的8位元素的四个通道(L1-L4)上进行并行操作并将结果置于寄存器R3中(被称为4×8位SWAR处理)。
对数字信号处理器支持高性能以用于更宽数据类型(如64位浮点、32位复数等)的需求越来越高,这已导致在数字信号处理器的处理元件(如数字信号处理器100的处理元件PE1、PE2、PE3、…PEN)中增加计算能力和寄存器的宽度。通过实施SWAR,更宽的寄存器增加了用于较小数据类型(如32位浮点、16位定点等)的数字信号处理器的性能用途。例如,数字信号处理器100可通过实施SWAR而使执行操作快两倍至四倍,而不用添加更多的处理元件。在存在具有32位宽寄存器的4个处理元件PE1、PE2、PE3和PE4的实例中,数字信号处理器100可在相同的时间内在SIMD或非SIMD模式中进行4个并行32位操作、在2×16位SWAR模式中进行8个并行操作或在4×8位SWAR模式中进行16个并行操作。同样,在处理元件PE1、PE2、PE3和PE4具有128位宽寄存器的实例中,数字信号处理器100可在相同的时间内在SIMD或非SIMD模式中进行4个并行128位操作、在2×64位SWAR模式中进行8个并行64位操作、在4×32位SWAR模式中进行16个并行32位操作、在8×16位SWAR模式中进行32个并行16位操作或在16×8位SWAR模式中进行64个并行8位操作。
虽然SWAR模式可在数字信号处理器的硬件中相对便宜地进行实施,但是SWAR仍从编程的角度提出挑战。例如,SWAR编程通常必须是不作为ANSI C标准(美国国家标准学会(ANSI)发布的用于C编程语言的标准)一部分的高级语言(如C/C++)编写的内在函数、内联汇编和/或专门的向量数据类型(如float2、int4、short4等)。因为这种编程选项(专门的向量数据类型、内在函数和/或内联汇编)是处理器特定的,所以SWAR编程会在遗留代码的移植中产生困难。进一步地,由于SWAR编程在向量处理器上增加了额外级别的并行处理,因此常规的数字信号处理器会为了确保数字信号处理器识别两个级别的并行操作(双向并行性)而给程序员增加负担:一个级别的并行处理位于处理元件(利用SWAR)中而另一级别的并行处理则跨越向量单元的处理元件。
本文所公开的数字信号处理器100可使程序员(且因此也是数字信号处理器的编译者)将并行处理单元视为单一向量通道,其中每个处理通道(SWAR通道)均被视为单独的处理元件。在每个处理元件PE1、PE2、PE3、…PEN可被分成相同数量的处理通道的实例中,程序员看到处理元件的有效数量等于实际处理元件的数量乘以每个处理元件的处理(SWAR)通道的数量。相应地,在存在支持4个处理通道(例如:支持4×8位SWAR的32位宽寄存器)的4个处理元件PE1、PE2、PE3和PE4的实例中,从程序员的角度来看(以及因此也是从编译者的角度来看),处理元件的有效数量为16(PE的有效数量=PE的数量×每个PE的SWAR通道的数量=4×4=16)。在另一实例中,其中存在8个处理元件且每个处理元件支持两个处理通道(例如:2个32位浮点操作),从程序员的角度来看,处理元件的有效数量为16(PE的有效数量=PE的数量×每个PE的SWAR通道的数量=8×2=16)。正如下面将详细描述的,数字信号处理器100由程序员通过实施以下步骤使SWAR处理(特别是双向并行性)实现无缝连接:(1)以每个处理通道(SWAR通道)为基础进行屏蔽;(2)以每个处理通道为基础进行条件性执行;(3)跨越处理通道和/或跨越处理元件进行归约操作;和/或(4)以每个处理通道为基础独立地生成地址。这种机制大大减少了数字信号处理器100所需的编程工作。
数字信号处理器100能够以每个处理通道(SWAR通道)为基础屏蔽并行操作。在所描绘的实施方案中,处理元件PE1、PE2、PE3、…PEN具有相关联的屏蔽寄存器1561、1562、1563、…156N。屏蔽寄存器1561、1562、1563、…156N使屏蔽位数量(宽度)等于相关联处理元件PE1、PE2、PE3、…PEN的寄存器的可分通道的最大数量,其中屏蔽位与相关联处理元件PE1、PE2、PE3、…PEN的通道对应。换句话说,屏蔽寄存器的屏蔽位的数量足以控制经其相关联的处理元件所实施的并行性的最小粒度。例如,在数字信号处理器100包括4个处理元件PE1、PE2、PE3和PE4,其具有支持1×32位、2×16位和/或4×8位SWAR操作的32位宽通用寄存器组的情况下,可分处理通道的最大数量为4且相关联的屏蔽寄存器1561、1562、1563和1564包括4个屏蔽位(换言之,为4位宽屏蔽寄存器),其中在进行4×8位操作时,1个屏蔽位对应于每个处理通道,在进行2×16位操作时,2个屏蔽位对应于每个处理通道,且在进行1×32位操作时,4个屏蔽位对应于每个处理通道。在可替代的实施方案中,代替具有各自屏蔽寄存器1561、1562、1563、…156N的处理元件PE1、PE2、PE3、…PEN,数字信号处理器100可包括使其屏蔽位数量(宽度)等于数字信号处理器100支持的处理通道的最大数量的单屏蔽寄存器。
在程序执行过程中可通过控制单元110或各自的处理元件PE1、PE2、PE3、…PEN设置与每个处理元件PE1、PE2、PE3、…PEN(以及特别对应于每个处理通道的)相关联的屏蔽位。在实例中,数字信号处理器100基于向量的向量长度设置屏蔽位,下面将进行详细描述。屏蔽位控制其相应通道的操作状态。例如,数字信号处理器100(或处理元件PE1、PE2、PE3、…PEN)启用具有第一状态(例如:真)的相应屏蔽位的通道以执行指令以及禁用具有第二状态(例如:假)的相应屏蔽位的通道执行指令。可取决于数字信号处理器100的设计要求而变化表示第一状态(如“真”)和第二状态(如“假”)的情况。在各实施中,当屏蔽位的值为“1”时,第一状态为“真”且当屏蔽位的值为“0”时,第二状态为“假”,从而启用具有值为“1”的相应屏蔽位的通道以执行指令并禁用具有值为“0”的相应屏蔽位的通道执行指令。在其他实施中,当屏蔽位的值为“0”时,第一状态为“真”且当屏蔽位的值为“1”时,第二状态为“假”,从而启用具有值为“0”的相应屏蔽位的通道以执行指令并禁用具有值为“1”的相应屏蔽位的通道执行指令。
图3、图4和图5示出根据本公开的各方面的一组屏蔽寄存器,其被设置成根据数字信号处理器所实施的操作类型以每个处理通道为基础而进行屏蔽。例如,图3示出屏蔽寄存器1561、1562、1563和1564的实例,其被设置成在数字信号处理器100进行1×32位操作时屏蔽处理通道;图4示出屏蔽寄存器1561、1562、1563和1564的实例,其被设置成在数字信号处理器100进行2×16位操作时屏蔽处理通道;以及图5示出屏蔽寄存器1561、1562、1563和1564的实例,其被设置成在数字信号处理器100进行4×8位操作时屏蔽处理通道。
在图3中,当数字信号处理器100进行32位操作时,处理元件PE1、PE2、PE3和PE4可进行4个并行操作(用于并行处理的4个通道L1-L4),以及与处理元件相关联的所有屏蔽位都被共同设置成真或假。例如,在存在4个并行处理器且数字信号处理器100实施循环计数为3的操作的情况下,数字信号处理器100设置屏蔽位,从而启用处理元件PE1、PE2和PE3以执行与循环计数相关联的指令且同时禁用处理元件PE4执行该指令。具体而言,与处理元件PE1相关联的屏蔽寄存器1561的所有屏蔽位均被设置成“1”,与处理元件PE2相关联的屏蔽寄存器1562的所有屏蔽位均被设置成“1”,与处理元件PE3相关联的屏蔽寄存器1563的所有屏蔽位均被设置成“1”以及与处理元件PE4相关联的屏蔽寄存器1564的所有屏蔽位均被设置成“0”。
在图4中,当数字信号处理器100进行16位操作并实施2×16位SWAR处理时,处理元件PE1、PE2、PE3和PE4进行两个并行通道操作,且数字信号处理器100将对应处理通道的成对屏蔽位共同地设置为真或假。例如,在图4中,在实质上存在8个并行处理器(用于并行处理的8个通道L1-L8)且数字信号处理器100实施循环计数为7的操作的情况下,数字信号处理器100设置屏蔽位,从而启用处理元件PE1、PE2和PE3的所有通道(L1-L6)以执行与循环计数相关联的指令,启用处理元件PE4的通道中的一个(L7)以执行该指令,以及禁用处理元件PE4的另一通道(L8)执行该指令。具体而言,对于与处理元件PE1相关联的屏蔽寄存器1561而言,分别对应处理通道L1和L2的第一对屏蔽位和第二对屏蔽位被设置成“1”;对于与处理元件PE2相关联的屏蔽寄存器1562而言,分别对应处理通道L3和L4的第一对屏蔽位和第二对屏蔽位被设置成“1”;对于与处理元件PE3相关联的屏蔽寄存器1563而言,分别对应处理通道L5和L6的第一对屏蔽位和第二对屏蔽位被设置成“1”;以及对于与处理元件PE4相关联的屏蔽寄存器1564而言,对应处理通道L7的第一对屏蔽位被设置成“1”而对应处理通道L8的第二对屏蔽位被设置成“0”。
同样地,在图5中,当数字信号处理器100进行8位操作并因此实施4×8位SWAR时,处理元件PE1、PE2、PE3和PE4进行4个通道并行操作,且数字信号处理器100将与处理通道相关联的屏蔽位单独设置为真或假。例如,在图5中,在实质上存在16个并行处理器(用于并行处理的16个通道L1-L16)且数字信号处理器100实施循环计数为15的操作的情况下,数字信号处理器100设置屏蔽位,从而启用处理元件PE1、PE2和PE3的所有通道(L1-L12)以执行与循环计数相关联的指令,启用处理元件PE4的通道中的三个(L13-L15)以执行该指令,以及禁用处理元件PE4的通道中的一个(L16)执行该指令。具体而言,对于与处理元件PE1相关联的屏蔽寄存器1561而言,对应于4个处理通道L1-L4的屏蔽位被设置成“1”;对于与处理元件PE2相关联的屏蔽寄存器1562而言,对应于4个处理通道L5-L8的屏蔽位被设置成“1”;对于与处理元件PE3相关联的屏蔽寄存器1563而言,对应于4个处理通道L9-L12的屏蔽位被设置成“1”;以及对于与处理元件PE4相关联的屏蔽寄存器1564而言,对应于前三个处理通道L13-L15的屏蔽位被设置成“1”并将对应于第4个处理通道L16的屏蔽位设置成“0”。
通过以每个处理通道为基础进行屏蔽操作,数字信号处理器100可有效地对在处理通道粒度的向量长度进行操作。当处理向量阵列端部的操作时,屏蔽个别的处理通道特别有用。对于向量长度N而言,当N%NPE(处理元件数量)不等于0时(换句话说,向量长度N不是处理元件数量(NPE)的倍数时),数字信号处理器100可在循环的最后一次迭代屏蔽个别处理通道执行指令,而无需进行额外的编程。相应地,在各实施中,当循环长度不等于向量长度时,屏蔽位可有效地作为循环控制。与此相反,常规的数字信号处理器需要程序员对向量长度不是处理元件的默认宽度且向量长度不是处理通道数量的倍数(换句话说,循环长度不等于向量长度)的情况特别地进行编程。
图6为根据本公开的各方面的用于可通过数字信号处理器进行的各个处理通道的屏蔽操作的实例方法200的流程图。方法200开始于方块210,其中数字信号处理器发现可向量化循环。在实例中,数字信号处理器分析用于可向量化循环(用于向量化的循环)的源代码。可向量化循环表示数字信号处理器可在同一时间执行循环的一个以上的迭代。在实例中,对循环进行向量化可展开循环,从而使其可在单指令中对多个数据进行相同的操作。在方块220,数字信号处理器确定可向量化循环的循环计数。在各实施中,通过下列操作给出循环计数(LoopCount):
LoopCount=ceil(N/NLanes),
其中N是向量长度(向量中元素的数量)且NLanes为处理通道的数量。在方块230,数字信号处理器确定循环计数是否等于1(LoopCount==1?)。如果循环计数不等于1,方法200继续前进至方块240,其中屏蔽操作将所有屏蔽位设置为真,从而启用数字信号处理器的所有处理通道执行与可向量化循环相关联的指令。在实例中,在真由值“1”所表示的情况下,可通过下列方式表示屏蔽操作:
MASK=2^NLanes-1,
这将与处理通道相关联的所有屏蔽位设置为“1”。在方块250,数字信号处理器进行可向量化循环的第i次迭代,其中i=1…n(n为在方块220确定的LoopCount)。在进行第i次迭代后,在方块260对循环计数进行递减,且方法200返回至方块230以再次确定循环计数是否等于1。方法200重复方块230、方块240、方块250和方块260直到循环计数等于1。当循环计数等于1时,方法200前进至方块270,其中屏蔽操作设置屏蔽位以进行最后一次迭代(其中,在最后一次迭代,i=n=在方块220确定的LoopCount)。屏蔽操作可根据可向量化循环的行程计数(在每次进入循环时循环本体被执行的次数)将每个屏蔽位设置为第一状态(如真或“1”)或第二状态(如假或“0”)。在各实施中,屏蔽操作将所有屏蔽位设置成真以用于循环的最后一次迭代,从而启用所有处理通道以执行该指令。例如,在处理元件PE1、PE2、PE3和PE4进行2×16位SWAR(从而提供8个并行处理通道)且循环的行程计数等于16(行程计数=16)的情况下,循环迭代两次(初始LoopCount=2)且所有屏蔽位都被设置成真以用于这两次迭代。在各实施中,屏蔽操作将屏蔽位中的至少一个设置为假以用于循环的最后一次迭代,从而启用处理通道中的一些以执行与可向量化循环相关联的指令并禁用处理通道中的一些执行该指令。例如,在处理元件PE1、PE2、PE3和PE4进行2×16位SWAR(从而提供8个并行处理通道)且循环的行程计数等于15(行程计数=15)的情况下,循环仍然迭代两次(初始LoopCount=2),但所有屏蔽位都被设置成真以用于第一次迭代且至少一个屏蔽位被设置成假以用于第二次迭代。在实例中,在真由值“1”所表示且假由值“0”所表示的情况下,可通过下列方式表示屏蔽操作:
MASK(用于最后一次迭代)=2^(Remainder((VectorLength+NLanes-1)NLanes)+1)-1
在方块280,数字信号处理器进行可向量化循环的最后一次迭代。可在方法200前,中和后提供额外的步骤,且可替换或消除所述步骤中的一些以用于方法200的其他实施方案。
图7示出根据本公开的各方面的使用图6的方法200在可向量化循环的不同迭代期间所设置的一组屏蔽寄存器。在数字信号处理器100包括支持2×16位SWAR处理的4个处理元件PE1、PE2、PE3和PE4的实例中,图7示出在与处理向量长度为15(N=15)的向量相关联的循环的不同迭代期间所设置的屏蔽寄存器1561、1562、1563和1564的实例。实施方法200,数字信号处理器100(在方块220)确定循环计数为2(LoopCount=ceil(N/NLanes)=ceil(15/8)=2)。由于循环计数不等于1(在方块230),数字信号处理器100(在方块240)将屏蔽寄存器1561、1562、1563和1564的所有屏蔽位设置为“1”以用于循环的第一次迭代(i=1),进行第一次迭代(在方块250)并递减循环计数(在方块260)。由于本实例中的循环计数为2,数字信号处理器100确定经递减的循环计数为1(在方块230)并前进至(方块270)对屏蔽寄存器1561、1562、1563和1564的屏蔽位进行设置以用于循环的第二次即最后一次迭代(i=2)。特别地,与处理通道L1-L7对应的屏蔽位被设置成“1”而与处理通道L8对应的屏蔽位被设置成“0”,从而当数字信号处理器100(在方块280)进行循环的最后一次迭代时禁用处理通道L8执行该指令。
返回到图1,数字信号处理器100还可以每个处理通道为基础条件性地执行指令。例如,如上面所提及的,处理元件PE1、PE2、PE3、…PEN具有相关联的谓词寄存器1581、1582、1583、…158N。与屏蔽寄存器相类似,谓词寄存器1581、1582、1583、…158N使其谓词位数量(宽度)等于其相关联处理元件PE1、PE2、PE3、…PEN的寄存器的可分通道的最大数量,其中谓词位对应于相关联处理元件PE1、PE2、PE3、…PEN的通道。在数字信号处理器100包括处理元件PE1、PE2、PE3和PE4,其具有支持1×32位、2×16位和/或4×8位SWAR操作的32位宽通用寄存器组的实例中,可分处理通道的最大数量为4且相关联谓词位1581、1582、1583和1584包括4个谓词位(换句话说,为4位宽谓词寄存器)。如下面进一步所描述的,数字信号处理器100对所有谓词位进行初始设置并随后基于处理通道的数量使用大量谓词位以条件性地执行指令。例如,数字信号处理器100在进行4×8位SWAR操作时使用所有4个谓词位以条件性地执行指令以用于4个处理通道中的每一个,在进行2×16位SWAR操作时使用其中2个谓词位以条件性地执行指令以用于两个处理通道中的每一个,且在进行1×32位操作时使用谓词位中的一个以条件性地执行指令以用于单处理通道。根据数字信号处理器100的设计要求使用(选择)谓词寄存器中的哪些位以确定是否条件性地执行指令。在可替代实施方案中,代替具有各自谓词寄存器1581、1582、1583、…158N的处理元件PE1、PE2、PE3、…PEN,数字信号处理器100可包括使其谓词位数量(宽度)等于数字信号处理器100支持的处理通道的最大数量的单谓词寄存器。
在程序执行过程中可通过控制单元110或各自的处理元件PE1、PE2、PE3、…PEN设置与每个处理元件PE1、PE2、PE3、…PEN(以及特别对应于处理通道的)相关联的谓词位。数字信号处理器100基于其相应处理通道的状况设置谓词寄存器1581、1582、1583、…158N的所有谓词位,而不论其相关联元件PE1、PE2、PE3、…PEN所并行处理的数据元素的数量是多少。以及,当指令具体指定具有比与处理元件相关联的谓词位的数量更少的数据元素的操作时,使用处理通道中的状态以设置与该通道相关联的所有谓词。处理元件PE1、PE2、PE3、…PEN可进行比较操作以设置其各自谓词寄存器1581、1582、1583、…158N的谓词位。例如,在处理元件PE1、PE2、PE3和PE4具有用于实施1×32位和2×16位SWAR操作的32位宽通用寄存器组的情况下,可分处理通道的最大数量为2且因此相关联谓词寄存器1581、1582、1583和1584包括两个谓词位,其中在进行2×16位操作时一个谓词位对应于每个处理通道。在操作中,可考虑一种情况,其中可对处理元件PE1进行指示以执行一个元素的操作(1×32位操作)或两个元素的操作(2×16位操作)。根据本公开的各方面,不论处理元件PE1是否将进行1×32位操作或2×16位操作都将对相关联谓词寄存器1581的两个谓词位进行设置(换句话说,两个谓词位的状态初始为真)。然后,数字信号处理器100基于处理元件PE1的寄存器的状况进行比较操作以确定如何设置谓词位的状态。相应地,例如,对于32位谓词加载指令而言,当数字信号处理器100进行2×16位比较操作时,可对每个谓词位进行不同设置,从而使32位谓词加载指令条件性地加载两个16位数据操作数中的每一个,然而当数字信号处理器100进行1×32位比较时,可对两个谓词位进行相同的设置,从而使32位谓词加载指令条件性地加载32位作为单数据操作数。
与屏蔽位相反,谓词位通过其相应的处理通道控制指令的条件性执行,从而实质上控制是否要通过其相应的通道进行指令所限定的操作。在各实施中,谓词位可在循环中或在循环外促进对指令的条件性执行。例如,数字信号处理器100(或处理元件PE1、PE2、PE3、…PEN)使具有第一状态(例如:真)的相应谓词位的通道进行由指令限定的操作并使具有第二状态(例如:假)的相应谓词位的通道不执行由指令限定的操作。可根据数字信号处理器100的设计要求变化表示第一状态(如“真”)和第二状态(如“假”)的情况。在实例中,与谓词位相关联的第一状态和第二状态和与屏蔽位相关联的那些一样。在另一实例中,与谓词位相关联的第一状态和第二状态不同于与屏蔽位相关联的那些。在各实施中,当谓词位的值为“1”时,第一状态为“真”且当谓词位的值为“0”时,第二状态为“假”,从而启用具有值为“1”的相应谓词位的通道以执行指令并禁用具有值为“0”的相应谓词位的通道执行指令。在其他实施中,当谓词位的值为“0”时,第一状态为“真”且当谓词位的值为“1”时,第二状态为“假”,从而启用具有值为“0”的相应谓词位的通道以执行指令并禁用具有值为“1”的相应谓词位的通道执行指令。
数字信号处理器100还可跨越和在每个处理元件PE1、PE2、PE3、…PEN中进行归约操作(换句话说,以每个处理(SWAR)通道为基础)。例如,在一个指令中,数字信号处理器100可跨越各自处理元件的SWAR通道而进行操作,如跨越SWAR通道的求和、跨越SWAR通道移动数据、跨越SWAR通道进行最小化操作、跨越SWAR通道进行最大化操作、跨越SWAR通道进行其他操作或其组合。在通过数字信号处理器100进行求和操作的实例中,归约操作可对每个处理元件PE1、PE2、PE3、......PEN的各SWAR通道求和以获得用于每个处理元件PE1、PE2、PE3、......PEN的结果并随后对处理元件PE1、PE2、PE3、......PEN的结果求和。在通过数字信号处理器100进行最小或最大化操作的实例中,先对每个处理元件PE1、PE2、PE3、......PEN的各SWAR通道进行最小化/最大化操作以获得用于每个处理元件PE1、PE2、PE3、......PEN的结果,且随后可根据处理元件PE1、PE2、PE3、......PEN的结果确定最小值/最大值。.
数字信号处理器100还能够以每个处理通道(SWAR)为基础独立生成地址。独立生成地址便于满足单指令中来自各个处理通道的存储器加载/存储的请求。在使用非单位步长数据的情况下,这种特征是特别有用的。在各实施中,数字信号处理器100可包括每个SWAR通道的地址偏移量寄存器,从而通过基地址加偏移量来表示用于每个SWAR通道的地址。在数据趋于连续的情况下,数字信号处理器100可能不一定支持独立的地址生成,且存储器加载/存储请求可通过单独的指令予以满足。
通过实施本文所述的数字信号处理器体系结构和相关联的方法可显著降低用于实现SWAR并行性的编程要求。例如,在常规的数字信号处理器中,程序员必须明确地定义非标准的数据类型和用于并行处理的通道数量。在实例中,对于在64位寄存器中实施2×32位SWAR操作的数字信号处理器而言,用于乘法和累加操作的简单的有限冲激响应(FIR)的过滤器核函数可如下用C/C++编程语言的扩展(如float2)进行编写:
Figure BDA0000400544090000201
Figure BDA0000400544090000211
需要注意的是编程语言明确指定特殊的数据类型float2以及用于FIR核函数的并行处理的处理通道的数量(2*NPE)。程序员实质上必须明确地对两级并行性进行编程:一个级别的并行处理位于处理元件(利用SWAR)中而另一级别的并行处理则跨越处理元件。比较起来,对于数字信号处理器100而言,程序员不必指定数据类型或明确地对两级并行性进行编程。相反地,数字信号处理器100将处理通道中的每一个视作处理元件,从而如下可用C/C++编程语言编写用于乘法和累加操作的简单的有限冲激响应(FIR)的过滤器核函数:
Figure BDA0000400544090000212
因此,数字信号处理器100可在无需程序员付出巨大的编程努力的情况下无缝地实现SWAR并行性。不同的实施方案可具有不同的优点,且优点未必为任何实施方案所需。
虽然本公开描述了具有相关联屏蔽寄存器和相关联谓词寄存器的处理元件PE1、PE2、PE3、…PEN,但是本公开也考虑了一种数字信号处理器体系结构,其中处理元件PE1、PE2、PE3、…PEN具有单屏蔽寄存器(合并的屏蔽寄存器和谓词寄存器),其包括充当(作为)上述屏蔽位或谓词位的位。屏蔽寄存器包括其数量等于相关联处理元件PE1、PE2、PE3、…PEN的寄存器的可分通道的最大数量的位(宽度),其中位对应于相关联处理元件PE1、PE2、PE3、…PEN的通道。在数字信号处理器100包括处理元件PE1、PE2、PE3和PE4,其具有支持1×32位、2×16位和/或4×8位SWAR操作的32位宽通用寄存器组的实例中,可分处理通道的最大数量为4且与每个处理元件PE1、PE2、PE3和PE4相关联的屏蔽寄存器(屏蔽/谓词寄存器)包括4个位(换句话说,为4位宽屏蔽寄存器)。根据数字信号处理器100要执行的操作,屏蔽寄存器的每个位可充当屏蔽位和谓词位。相应地,如上面详细描述的,循环指令可设置屏蔽且比较指令可设置谓词,其中循环指令和比较指令设置同一组位。
进一步地,虽然本公开是参照数字信号处理器描述并行处理体系结构的,但是本公开也考虑了本文所述的用于可进行并行操作的任何处理器的并行处理体系结构,包括微处理器、微控制器、通用计算机或者可进行并行操作的任何其他处理器。本文所略述的规格、尺寸和关系(例如:处理元件和存储器组块的数量、逻辑操作、加载值等)仅用于作为实例和教学使用。在不脱离本公开的精神或所附权利要求的范围的前提下,可对这些内容的每一个进行相当大的改变。规格仅适用于一个非限制性实例,且相应地,应这样解释这些内容。在前面的描述中,已参照特定处理器布置描述了实例实施方案。可在不脱离所附权利要求的范围的前提下,对这些实施方案进行各种修改和变化。相应地,描述和附图应被视为说明性的而非限制性的意义。进一步地,参照前图所描述的操作和步骤仅示出图1的数字信号处理器100所执行的或在其中执行的可能情形中的一些。在适当的情况下,可删除或除去这些操作中的一些,或在不脱离所讨论概念的范围的前提下对这些步骤进行相当大的修改或变化。此外,这些操作的时间选择可进行相当大的改变且仍可实现本公开中所教导的结果。已提供前述的操作流程以用作实例和讨论。由于可在不脱离所讨论概念的教义的情况下提供任何适当的设置、年表、配置和时间选择机制,因此可通过系统提供相当多的灵活性。
在一个实例实施方案中,图1的数字信号处理器100被耦合至相关电子设备的主板。主板可以是能容纳电子设备的内部电子系统的各种组件并进一步提供用于其他外围设备的连接器的一般电路板。更具体地,主板可提供电连接,系统的其他组件通过该电连接可进行通信。任何合适的处理器(包括数字信号处理器、微处理器、支持芯片组等)存储器元件等可基于特定配置的需要、处理需求、计算机设计等而适当地耦合至主板。其他组件(如外部存储器、用于视频显示和声音的控制器和外围设备)可作为插件卡、通过电缆而被附至主板或被集成至主板本身中。在另一实例实施方案中,图1的数字信号处理器100可被嵌入独立模块(例如:具有被配置成进行特定应用或功能的相关联组件和电路的设备)中或作为插件模块被集成至电子设备的专用硬件中。
需要注意的是本公开的特定实施方案可以容易地包括片上系统(SOC)中央处理单元(CPU)的封装件。SOC表示将计算机或其他电子系统的组件集成至单芯片中的集成电路(IC)。它可能包含数字、模拟、混合信号,并常具有射频功能:所有这些都可以设置在单芯片基板上。其他实施方案可包括多芯片模块(MCM),其中多个芯片位于单电子封装件中并被配置成通过电子封装件彼此之间密切进行互动。在各种其他实施方案中,可在专用集成电路(ASIC)、现场可编程门阵列(FPGA)和其他半导体芯片中的一个或多个硅芯中实施数字信号处理功能。
在实例实施中,例如可在控制单元110中用软件实施本文略述的处理行为中的至少一些部分。在一些实施方案中,可在图示元件外部提供的或以任何适当的方式合并的硬件中实施这些特征中的一个或多个,从而实现预期功能。各组件可包括能够协调以便实现本文所略述的操作的软件(或往复软件)。在其他实施方案中,这些元件可包括任何合适的算法、硬件、软件、组件、模块、接口或方便其操作的对象。
此外,本文所述的图1所示数字信号处理器100(和/或其相关联的结构)还可包括用于接收、发送和/或以其他方式在网络环境中传送数据或信息的适当接口。此外,可除去或以其他方式合并与所述处理器相关联的组件中的一些。在一般意义上,图中所描绘的布置可能在其表述中更具逻辑性,而物理体系结构则可能包括各种排列、组合和/或这些元件的混合。必须要注意的是可使用无数可能的设计配置以实现本文所略述的操作目标。相应地,相关联的基础设施具有无数个可替代布置、设计选择、设备可能性、硬件配置、软件实施、装备选项等。
任何合适的处理器组件都能执行与数据相关联的任何类型的指令以实现本文所详述的操作。在一个实例中,图1的数字信号处理器可将元件或物品(例如:数据)从一个状态或事物转变成另一种状态或事物。在另一实例中,可使用固定逻辑或可编程逻辑(例如:由处理器所执行的软件和/或计算机指令)实施本文所略述的行为,且本文所识别的元件可以是可编程处理器、可编程数字逻辑(例如:现场可编程门阵列(FPGA)、可擦除可编程只读存储器(EPROM)和电可擦除可编程只读存储器(EEPROM))、包括数字逻辑、软件、代码、电子指令、闪存、光盘、CD-ROM、DVD ROM、磁或光卡的ASIC、适于存储电子指令的其他类型的机器可读介质或其任何适当的组合中的某个类型。在操作中,图1的数字信号处理器100可在适当的情况下且基于特定需要在任何适当类型的非临时性存储介质(例如:随机存取存储器(RAM)、只读存储器(ROM)、现场可编程门阵列(FPGA)、可擦除可编程只读存储器(EPROM)、电可擦除可编程ROM(EEPROM)等)、软件、硬件或任何其他适当的组件、设备、元件或对象中保存信息。进一步地,可基于特定需要和实施方式在任何数据库、寄存器、表、高速缓存器、队列、控制列表或存储结构中提供在数字信号处理器100中所跟踪、发送、接收或存储的信息,且所有信息均可在任何合适的时帧进行参考。本文所讨论的任何存储器项应被解释为包含于广义术语“存储器”中。在一些实例实施方案中,一个或多个存储器元件(例如:存储器120、程序存储器116等)可存储用于本文所述操作的数据。这包括可在非临时性介质中存储指令(例如:软件、逻辑、代码等等)的存储器元件,从而可执行指令以进行本文所述的行为。同样地,本文所述的潜在处理元件、模块和机器中的任何一个都应被解释为包含于广义术语“处理器”中。
实施全部或部分本文所述功能的计算机程序逻辑可通过各种形式而体现,包括但不限于源代码形式、计算机可执行的形式和各种中间形式(例如:通过汇编器、编译器、连接器或定位器所生成的形式)。在实例中,源代码包括用各编程语言所实施的一系列计算机程序指令,如用于与各操作系统或操作环境一同使用的目标代码、汇编语言或高级语言,如Fortran、C、C++、JAVA或HTML。源代码可限定和使用各种数据结构和通信消息。源代码可以是计算机可执行的形式(例如:通过直译器)或源代码可被转换成计算机可执行的形式(例如:通过翻译器、汇编器或编译器)。
上面略述了几个实施方案的特征,从而使本领域的那些技术人员可更好地理解本公开的各方面。本领域的那些技术人员应当理解他们可很容易地将本公开用作设计或修改其他进程和结构的基础,从而进行相同的目的和/或实现本文所介绍的实施方案的相同优点。本领域的那些技术人员还应认识到这样等价构造不脱离本公开的精神和范围,且他们可在不脱离本公开的精神和范围的前提下在本文中做出各种变化、替换和变更。
本领域的技术人员可确定许多其他变化、替换、变化、变更和修改,且本公开意在包括落在所附权利要求范围中的所有这样的变化、替换、变化、变更和修改。为了帮助美国专利及商标局(USPTO)以及另外帮助本申请所发布的任何专利的任何读者解释所附权利要求,申请人希望注意的是申请人:(a)不意在使所附权利要求的任何一个当其在其提交日期存在时援引35U.S.C.的第112条的第6段的规定,除非词语“用于…的构件”或“用于…的步骤”是专门用于特定权利要求中;以及(b)不意在通过说明书任何陈述以其他未在所附权利要求书中反映的任何方式限制本公开。
实例实施方案的实施
一个特定实例实施可包括用于将指令发布至包括可分为用于并行处理的处理通道的寄存器的处理元件;设置对应于处理通道的屏蔽位;设置对应于处理通道的谓词位;以及通过处理通道中的至少一个执行指令的构件(例如:软件、逻辑、代码、硬件、或其组合)。各实施可能还包括用于启用具有第一状态的相应屏蔽位的处理通道以执行指令;禁用具有第二状态的相应屏蔽位的处理通道执行指令;在具有第三状态的相应谓词位的通道中进行由指令限定的操作;和/或在具有第四状态的相应谓词位的通道中不进行由指令限定的操作的构件。各实施可包括用于确定与指令相关联的循环的循环计数;如果循环计数不等于1,则将所有的屏蔽位设置成第一状态;如果循环计数等于1,则基于循环的行程计数将屏蔽位中的每一个设置成第一状态或第二状态的构件。各实施可包括用于基于与谓词位对应的处理通道的状况将谓词位设置成第三状态或第四状态的构件。在实例中,设置包括将谓词位设置成第三状态;以及进行比较操作以确定是否应将谓词位中的任何一个改变成第四状态。在实例中,谓词位的数量大于处理通道的数量,从而使处理通道具有一个以上的相应谓词位;且设置包括基于处理通道的状况设置处理通道的一个以上的相应谓词位。各实施可包括用于跨越处理通道进行操作(如跨越处理通道求和和/或跨越处理通道移动数据)的构件。各实施可包括用于为每个处理通道独立生成地址的构件。

Claims (20)

1.一种装置,其包括:
处理器,其包括:
具有计算单元和寄存器堆的处理元件,其中所述寄存器堆包括可被分为用于并行处理的通道的寄存器;
与所述处理元件相关联的屏蔽寄存器,其中所述屏蔽寄存器包括数量等于所述寄存器的可分通道的最大数量的屏蔽位,从而使所述通道具有相应的屏蔽位;以及
与所述处理元件相关联的谓词寄存器,其中所述谓词寄存器包括数量等于可分通道的所述最大数量的谓词位,从而使所述通道具有相应的谓词位。
2.根据权利要求1所述的装置,其中所述处理元件可操作用于:
启用具有第一状态的相应屏蔽位的通道以执行指令;以及
禁用具有第二状态的相应屏蔽位的通道执行所述指令。
3.根据权利要求2所述的装置,其中所述处理元件还可操作用于:
在具有第三状态的相应谓词位的通道中进行由所述指令限定的操作;以及
在具有第四状态的相应谓词位的通道中不进行由所述指令限定的所述操作。
4.根据权利要求3所述的装置,其中:
所述第一数字状态和所述第三数字状态为相同的状态;以及
所述第二数字状态和所述第四数字状态为相同的状态。
5.根据权利要求2所述的装置,其中所述处理元件可操作用于基于与所述指令相关联的操作的循环计数将所述屏蔽位设置成所述第一状态或所述第二状态。
6.根据权利要求5所述的装置,其中,对于循环的最后一次迭代而言,所述处理元件可操作用于基于所述循环的行程计数将所述屏蔽位设置成所述第一状态或所述第二状态。
7.根据权利要求3所述的装置,其中所述处理元件可操作用于基于与所述谓词位对应的所述通道的状况将所述谓词位设置成所述第三状态或所述第四状态。
8.根据权利要求1所述的装置,其中通道具有一个以上的相应谓词位且所述处理元件可操作用于基于所述通道的状况设置所有相应的谓词位。
9.根据权利要求1所述的装置,其中所述处理器包括多个处理元件且所述处理器可操作用于跨越处理元件中一个或多个的所述通道进行归约操作。
10.根据权利要求1所述的装置,其中所述处理器可操作用于为所述处理元件的所述通道中的每一个生成地址。
11.一种由处理器进行的方法,所述方法包括:
将指令发布至包括可分为用于并行处理的处理通道的寄存器的处理元件;
设置与所述处理通道对应的屏蔽位;
设置与所述处理通道对应的谓词位;以及
通过所述处理通道中的至少一个执行所述指令。
12.根据权利要求11所述的方法,其中屏蔽位的数量等于所述寄存器的可分处理通道的最大数量且谓词位的数量等于可分处理通道的所述最大数量。
13.根据权利要求11所述的方法,还包括:
启用具有第一状态的相应屏蔽位的处理通道以执行所述指令;以及
禁用具有第二状态的相应屏蔽位的处理通道执行所述指令。
14.根据权利要求13所述的方法,还包括:
在具有第三状态的相应谓词位的通道中进行由所述指令限定的操作;以及
在具有第四状态的相应谓词位的通道中不进行由所述指令限定的所述操作。
15.根据权利要求13所述的方法,其中设置与所述处理通道对应的所述屏蔽位包括:
确定与所述指令相关联的循环的循环计数;
如果所述循环计数不等于1,则将所有屏蔽位设置成所述第一状态;
如果所述循环计数等于1,则基于所述循环的行程计数将所述屏蔽位中的每一个设置成所述第一状态或所述第二状态。
16.根据权利要求14所述的方法,其中设置所述谓词位包括基于与所述谓词位对应的所述处理通道的状况将所述谓词位设置成所述第三状态或所述第四状态。
17.根据权利要求11所述的方法,其中:
谓词位的数量大于处理通道的数量,从而使处理通道具有一个以上的相应谓词位;以及
设置所述谓词位包括基于所述处理通道的状况设置所述处理通道的所述一个以上的相应谓词位。
18.一种单指令多数据(SIMD)处理器,包括:
计算阵列,其具有包括可分为大量SIMD通道的寄存器组的处理元件;
屏蔽寄存器,其具有数量等于可分SIMD通道的最大数量的屏蔽位,以使每个SIMD通道具有至少一个相应屏蔽位;
谓词寄存器,其具有数量等于可分SIMD通道的最大数量的谓词位,以使每个SIMD通道具有至少一个相应谓词位;以及
其中所述处理元件可操作用于基于所述屏蔽位和所述谓词位的状态在所述SIMD通道中的至少一个中条件性地执行指令。
19.根据权利要求18所述的SIMD处理器,其中所述处理元件可操作用于:
启用具有第一状态的相应屏蔽位的所述SIMD通道以执行指令;以及
禁用具有第二状态的相应屏蔽位的所述SIMD通道执行所述指令。
20.根据权利要求19所述的SIMD处理器,其中所述处理元件可操作用于:
在具有第三状态的相应谓词位的SIMD通道中进行由所述指令限定的操作;以及
在具有第四状态的相应谓词位的SIMD通道中不进行由所述指令限定的所述操作。
CN201310503908.XA 2012-10-23 2013-10-23 用于简化寄存器中对单指令多数据编程的处理器体系结构和方法 Active CN103777924B (zh)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201261717534P 2012-10-23 2012-10-23
US61/717,534 2012-10-23
US13/738,858 2013-01-10
US13/738,858 US9557993B2 (en) 2012-10-23 2013-01-10 Processor architecture and method for simplifying programming single instruction, multiple data within a register

Publications (2)

Publication Number Publication Date
CN103777924A true CN103777924A (zh) 2014-05-07
CN103777924B CN103777924B (zh) 2018-01-26

Family

ID=49328398

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201310503908.XA Active CN103777924B (zh) 2012-10-23 2013-10-23 用于简化寄存器中对单指令多数据编程的处理器体系结构和方法

Country Status (3)

Country Link
US (1) US9557993B2 (zh)
EP (1) EP2725484A1 (zh)
CN (1) CN103777924B (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111158757A (zh) * 2019-12-31 2020-05-15 深圳芯英科技有限公司 并行存取装置和方法以及芯片
CN112470139A (zh) * 2018-01-08 2021-03-09 阿特拉佐有限公司 用于数据处理装置、系统和方法的紧凑算术加速器
CN112506586A (zh) * 2019-09-16 2021-03-16 意法半导体(格勒诺布尔2)公司 可编程电子设备及其操作方法
US11392316B2 (en) * 2019-05-24 2022-07-19 Texas Instruments Incorporated System and method for predication handling

Families Citing this family (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9477482B2 (en) * 2013-09-26 2016-10-25 Nvidia Corporation System, method, and computer program product for implementing multi-cycle register file bypass
US9519479B2 (en) * 2013-11-18 2016-12-13 Globalfoundries Inc. Techniques for increasing vector processing utilization and efficiency through vector lane predication prediction
EP3001307B1 (en) * 2014-09-25 2019-11-13 Intel Corporation Bit shuffle processors, methods, systems, and instructions
US9928076B2 (en) 2014-09-26 2018-03-27 Intel Corporation Method and apparatus for unstructured control flow for SIMD execution engine
GB2540941B (en) * 2015-07-31 2017-11-15 Advanced Risc Mach Ltd Data processing
EP3125109B1 (en) * 2015-07-31 2019-02-20 ARM Limited Vector length querying instruction
EP3125108A1 (en) * 2015-07-31 2017-02-01 ARM Limited Vector processing using loops of dynamic vector length
GB2545248B (en) * 2015-12-10 2018-04-04 Advanced Risc Mach Ltd Data processing
US10115175B2 (en) * 2016-02-19 2018-10-30 Qualcomm Incorporated Uniform predicates in shaders for graphics processing units
GB2548602B (en) * 2016-03-23 2019-10-23 Advanced Risc Mach Ltd Program loop control
GB2548603B (en) * 2016-03-23 2018-09-26 Advanced Risc Mach Ltd Program loop control
GB2548604B (en) 2016-03-23 2018-03-21 Advanced Risc Mach Ltd Branch instruction
AR108325A1 (es) * 2016-04-27 2018-08-08 Samumed Llc Isoquinolin-3-il carboxamidas y preparación y uso de las mismas
AR108326A1 (es) 2016-04-27 2018-08-08 Samumed Llc Isoquinolin-3-il carboxamidas y preparación y uso de las mismas
CN112214244A (zh) * 2016-08-05 2021-01-12 中科寒武纪科技股份有限公司 一种运算装置及其操作方法
JP2018124877A (ja) * 2017-02-02 2018-08-09 富士通株式会社 コード生成装置、コード生成方法、およびコード生成プログラム
US11243880B1 (en) 2017-09-15 2022-02-08 Groq, Inc. Processor architecture
US11360934B1 (en) 2017-09-15 2022-06-14 Groq, Inc. Tensor streaming processor architecture
US11114138B2 (en) 2017-09-15 2021-09-07 Groq, Inc. Data structures with multiple read ports
US11868804B1 (en) 2019-11-18 2024-01-09 Groq, Inc. Processor instruction dispatch configuration
US11170307B1 (en) 2017-09-21 2021-11-09 Groq, Inc. Predictive model compiler for generating a statically scheduled binary with known resource constraints
US11709681B2 (en) * 2017-12-11 2023-07-25 Advanced Micro Devices, Inc. Differential pipeline delays in a coprocessor
US11488002B2 (en) 2018-02-15 2022-11-01 Atlazo, Inc. Binary neural network accelerator engine methods and systems
US11789734B2 (en) * 2018-08-30 2023-10-17 Advanced Micro Devices, Inc. Padded vectorization with compile time known masks
US11204976B2 (en) 2018-11-19 2021-12-21 Groq, Inc. Expanded kernel generation
US11029960B2 (en) * 2018-12-07 2021-06-08 Intel Corporation Apparatus and method for widened SIMD execution within a constrained register file
US11216281B2 (en) * 2019-05-14 2022-01-04 International Business Machines Corporation Facilitating data processing using SIMD reduction operations across SIMD lanes
WO2021035006A1 (en) 2019-08-20 2021-02-25 Northrop Grumman Systems Corporation Simd controller and simd predication scheme
US11269651B2 (en) * 2019-09-10 2022-03-08 International Business Machines Corporation Reusing adjacent SIMD unit for fast wide result generation
WO2021108559A1 (en) 2019-11-26 2021-06-03 Groq, Inc. Loading operands and outputting results from a multi-dimensional array using only a single side

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4763251A (en) * 1986-01-17 1988-08-09 International Business Machines Corporation Merge and copy bit block transfer implementation
US6115808A (en) * 1998-12-30 2000-09-05 Intel Corporation Method and apparatus for performing predicate hazard detection
US20020199086A1 (en) * 2001-06-11 2002-12-26 Broadcom Corporation Setting execution conditions
US20050278514A1 (en) * 2004-06-14 2005-12-15 Broadcom Corporation Condition bits for controlling branch processing
US20080016320A1 (en) * 2006-06-27 2008-01-17 Amitabh Menon Vector Predicates for Sub-Word Parallel Operations
US20100312988A1 (en) * 2009-06-05 2010-12-09 Arm Limited Data processing apparatus and method for handling vector instructions
US20110066813A1 (en) * 2009-09-08 2011-03-17 Advanced Micro Devices, Inc. Method And System For Local Data Sharing
US20120198425A1 (en) * 2011-01-28 2012-08-02 International Business Machines Corporation Management of conditional branches within a data parallel system

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2273377A (en) 1992-12-11 1994-06-15 Hughes Aircraft Co Multiple masks for array processors
US7039906B1 (en) 2000-09-29 2006-05-02 International Business Machines Corporation Compiler for enabling multiple signed independent data elements per register
US7127593B2 (en) 2001-06-11 2006-10-24 Broadcom Corporation Conditional execution with multiple destination stores
US6986025B2 (en) 2001-06-11 2006-01-10 Broadcom Corporation Conditional execution per lane
US7676647B2 (en) 2006-08-18 2010-03-09 Qualcomm Incorporated System and method of processing data using scalar/vector instructions
US8401327B2 (en) 2008-09-26 2013-03-19 Axis Ab Apparatus, computer program product and associated methodology for video analytics
US8260002B2 (en) 2008-09-26 2012-09-04 Axis Ab Video analytics system, computer program product, and associated methodology for efficiently using SIMD operations
WO2013089707A1 (en) * 2011-12-14 2013-06-20 Intel Corporation System, apparatus and method for loop remainder mask instruction
WO2013089717A1 (en) 2011-12-15 2013-06-20 Intel Corporation Systems and methods for secured entry of user authentication data
US9588766B2 (en) * 2012-09-28 2017-03-07 Intel Corporation Accelerated interlane vector reduction instructions

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4763251A (en) * 1986-01-17 1988-08-09 International Business Machines Corporation Merge and copy bit block transfer implementation
US6115808A (en) * 1998-12-30 2000-09-05 Intel Corporation Method and apparatus for performing predicate hazard detection
US20020199086A1 (en) * 2001-06-11 2002-12-26 Broadcom Corporation Setting execution conditions
US20050278514A1 (en) * 2004-06-14 2005-12-15 Broadcom Corporation Condition bits for controlling branch processing
US20080016320A1 (en) * 2006-06-27 2008-01-17 Amitabh Menon Vector Predicates for Sub-Word Parallel Operations
US20100312988A1 (en) * 2009-06-05 2010-12-09 Arm Limited Data processing apparatus and method for handling vector instructions
US20110066813A1 (en) * 2009-09-08 2011-03-17 Advanced Micro Devices, Inc. Method And System For Local Data Sharing
US20120198425A1 (en) * 2011-01-28 2012-08-02 International Business Machines Corporation Management of conditional branches within a data parallel system

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112470139A (zh) * 2018-01-08 2021-03-09 阿特拉佐有限公司 用于数据处理装置、系统和方法的紧凑算术加速器
CN112470139B (zh) * 2018-01-08 2022-04-08 阿特拉佐有限公司 用于数据处理装置、系统和方法的紧凑算术加速器
US11392316B2 (en) * 2019-05-24 2022-07-19 Texas Instruments Incorporated System and method for predication handling
CN112506586A (zh) * 2019-09-16 2021-03-16 意法半导体(格勒诺布尔2)公司 可编程电子设备及其操作方法
CN111158757A (zh) * 2019-12-31 2020-05-15 深圳芯英科技有限公司 并行存取装置和方法以及芯片
CN111158757B (zh) * 2019-12-31 2021-11-30 中昊芯英(杭州)科技有限公司 并行存取装置和方法以及芯片

Also Published As

Publication number Publication date
CN103777924B (zh) 2018-01-26
EP2725484A1 (en) 2014-04-30
US9557993B2 (en) 2017-01-31
US20140115301A1 (en) 2014-04-24

Similar Documents

Publication Publication Date Title
CN103777924A (zh) 用于简化寄存器中对单指令多数据编程的处理器体系结构和方法
US9201828B2 (en) Memory interconnect network architecture for vector processor
Kaeli et al. Heterogeneous computing with OpenCL 2.0
Waidyasooriya et al. Design of FPGA-based computing systems with OpenCL
CN102640131B (zh) 并行线程处理器中的一致分支指令
DE102018005181A1 (de) Prozessoren, Verfahren und Systeme für einen konfigurierbaren, räumlichen Beschleuniger mit Leistungs-, Richtigkeits- und Energiereduktionsmerkmalen
US20190250924A1 (en) Efficient work execution in a parallel computing system
DE102018006735A1 (de) Prozessoren und Verfahren für konfigurierbares Clock-Gating in einem räumlichen Array
JP5559297B2 (ja) ハードウェアエンドループ情報の命令へのコード化
TWI490783B (zh) 包含向量化註釋及經向量化之函式記號匹配之純量函式向量化技術
TWI733798B (zh) 在執行向量操作時管理位址衝突的設備及方法
TWI603262B (zh) 緊縮有限脈衝響應(fir)濾波器處理器,方法,系統及指令
CN103777923A (zh) Dma向量缓冲区
US11789734B2 (en) Padded vectorization with compile time known masks
US11947962B2 (en) Replicate partition instruction
US20110078418A1 (en) Support for Non-Local Returns in Parallel Thread SIMD Engine
KR20180126520A (ko) 벡터 술어 명령
CN104133748A (zh) 用以在微处理器内组合来自多个寄存器单元的对应半字单元的方法及系统
CN107851016B (zh) 向量算术指令
C. Penha et al. ADD: Accelerator Design and Deploy‐A tool for FPGA high‐performance dataflow computing
JPH07244589A (ja) 述語、及びブール式を解くためのコンピュータ・システム、及び方法
Abdelhamid et al. A scalable many-core overlay architecture on an HBM2-enabled multi-die FPGA
CN103777922B (zh) 预测计数器
CN110073332A (zh) 向量生成指令
Kindratenko et al. Accelerating scientific applications with reconfigurable computing: getting started

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: ANALOG DEVICES, INC.

Free format text: FORMER OWNER: ANALOG DEVICES TECHNOLOGY COMPANY

Effective date: 20150105

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

Effective date of registration: 20150105

Address after: Bermuda (UK) Hamilton

Applicant after: ANALOG DEVICES GLOBAL

Address before: Bermuda (UK) Hamilton

Applicant before: Analog Devices Global

GR01 Patent grant
GR01 Patent grant
CP03 Change of name, title or address
CP03 Change of name, title or address

Address after: Limerick

Patentee after: Analog Devices Global Unlimited Co.

Address before: Bermuda (UK) Hamilton

Patentee before: Analog Devices Global

TR01 Transfer of patent right

Effective date of registration: 20210728

Address after: Limerick

Patentee after: ANALOG DEVICES INTERNATIONAL UNLIMITED Co.

Address before: Limerick

Patentee before: Analog Devices Global Unlimited Co.

TR01 Transfer of patent right