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

文档序号:6516409阅读:219来源:国知局
用于简化寄存器中对单指令多数据编程的处理器体系结构和方法
【专利摘要】本发明提供了一种用于在寄存器内进行并行处理的处理器及其相关联的方法。示例性处理器可包括具有计算单元和寄存器堆的处理元件。所述寄存器堆包括可被分为用于并行处理的通道的寄存器。所述处理器可能还包括屏蔽寄存器和谓词寄存器。所述屏蔽寄存器和所述谓词寄存器各包括数量等于所述寄存器的可分通道的最大数量的屏蔽位和谓词位。设置所述屏蔽位和谓词位的状态以分别实现启用/禁用通道执行指令和所述指令限定的操作的条件性性能。此外,所述处理器可操作用于跨越所述处理元件的所述通道进行归约操作和/或为所述处理元件的所述通道中的每一个生成地址。
【专利说明】用于简化寄存器中对单指令多数据编程的处理器体系结构和方法
[0001]本申请为于2012年10月23日提交的序列号为61/717,534的美国临时专利申请的正式申请,其以全文引用方式并入本文。
【技术领域】
[0002]本公开一般涉及进行并行处理的处理器,如向量处理器,且尤其是涉及在寄存器中进行并行处理的处理器。
【背景技术】
[0003]通常,由处理器实施并行处理以优化处理应用,例如由数字信号处理器所实施以优化数字信号处理应用。处理器可用作单指令多数据(SMD)或数据并行处理器以实现并行处理。在SMD操作中,将单指令发送给处理器的大量处理元件,其中每个处理元件可对不同数据进行同样的操作。对不断提高的吞吐量和增强的性能的增长的需求已导致实施寄存器中的SMD (SWAR),其中处理元件可在其相关的寄存器中在多组数据上进行操作。虽然SWAR在处理器硬件中相对便宜的进行实施,但是SWAR仍从编程的角度提出挑战。例如,SWAR编程通常必须是不作为ANSI C标准(美国国家标准学会(ANSI)发布的用于C编程语言的标准)一部分的高级语言(如C/C++)编写的内在函数、内联汇编和/或专门的向量数据类型(如float2、int4、short4等)。因为这种编程选项(专门的向量数据类型、内在函数和/或内联汇编)是处理器特定的,所以SWAR编程会在遗留代码的移植中产生困难。进一步地,由于SWAR编程在向量处理器上增加了额外级别的并行处理,因此常规的处理器会为了确保处理器识别两个级别的并行操作(双向并行性)而给程序员增加负担:一个级别的并行处理位于处理元件(利用SWAR)中而另一级别的并行处理则跨越处理器向量单元的处理元件。相应地,尽管现有的用于进行并行处理的处理器体系结构以及相关的方法一般已足以实现其预期目的,但是他们在所有方面尚不能完全令人满意。
【专利附图】

【附图说明】
[0004]通过下面的详细描述并结合附图进行阅读时,可以最好地理解本公开。要强调的是,按照行业内的标准做法,没有按比例绘制各种特征,且各种特征仅用于说明目的。事实上,为了使讨论更清楚,可以任意增加或减少各种特征的尺寸。
[0005]图1为根据本公开的各方面的实例数字信号处理器的示意性方块图。
[0006]图2示意性地示出根据本公开的各方面的与分成不同数据量的处理元件(如图1的数字信号处理器的处理元件)相关联的实例寄存器组。
[0007]图3、图4和图5示意性地示出根据本公开的各方面的被设置成在每个处理通道的基础上实现不同屏蔽方案的一组屏蔽寄存器,如与图1的数字信号处理器相关联的一组屏蔽寄存器。
[0008]图6为根据公开的各方面的用于可通过数字信号处理器(如图1的数字信号处理器)进行的各个处理通道的屏蔽操作的实例方法的流程图。
[0009]图7示意性地示出根据本公开的各方面的使用图6的方法在循环的不同迭代期间对屏蔽寄存器所进行的实例设置。
【具体实施方式】
[0010]本公开提供了在任何合适的计算环境中实施的各种处理器实施方案。一个示例性实施方案提供了一种处理器,其包括具有计算单元和寄存器堆的处理元件,其中寄存器堆包括可被分为用于并行处理的通道的寄存器;以及与处理元件相关联的屏蔽寄存器(也被称为屏蔽/谓词寄存器),其中屏蔽寄存器包括数量等于寄存器的可分通道的最大数量的位,从而使通道具有相应的位。在各实施中,处理元件可操作用于基于循环指令将位设置成第一状态和第二状态中的一个,其中处理元件可操作用于启用具有第一状态的相应位的通道以执行指令以及禁用具有第二状态的相应位的通道执行该指令。在各实施中,处理元件可操作用于基于比较指令将位设置成第一状态和第二状态中的一个,其中处理元件可操作用于在具有第一状态的相应位的通道中进行由指令限定的操作以及在具有第二状态的相应位的通道中不进行由指令限定的操作。
[0011]另一示例性实施方案提供了一种处理器,其包括具有计算单元和寄存器堆的处理元件,其中寄存器堆包括可被分为用于并行处理的通道的寄存器。屏蔽寄存器可与处理元件相关联,其中屏蔽寄存器包括数量等于寄存器的可分通道的最大数量的屏蔽位,从而使通道具有相应的屏蔽位。谓词寄存器也可与处理元件相关联,其中谓词寄存器包括数量等于可分通道的最大数量的谓词位,从而使通道具有相应的谓词位。计算单元可包括算术逻辑单元、乘法器-累加器和移位器。
[0012]在各实施中,处理元件可操作用于启用具有第一状态的相应屏蔽位的通道以执行指令以及禁用具有第二状态的相应屏蔽位的通道执行指令。在各实施中,处理元件可进一步操作用于在具有第三状态的相应谓词位的通道中进行由指令限定的操作;以及在具有第四状态的相应谓词位的通道中不进行由指令限定的操作。在实例中,第一数字状态和第三数字状态为相同的状态,以及第二数字状态和第四数字状态为相同的状态。在实例配置中,处理元件可操作用于基于与指令相关联的操作的循环计数将屏蔽位设置成第一状态或第二状态。在各实施中,对于循环的最后一次迭代而言,处理元件可根据循环的行程计数将屏蔽位设置成第一状态或第二状态。例如,对于循环的最后一次迭代,处理元件可将屏蔽位中的至少一个设置成第二状态。在另一实例中,对于循环的最后一次迭代,处理元件可将所有的屏蔽位都设置成第一状态。在实例配置中,处理元件可操作用于基于与谓词位对应的通道的状况将谓词位设置成第三状态或第四状态。例如,处理元件可将谓词位设置成第三状态,并然后进行比较操作以确定是否应将谓词位中的任何一个改变成第四状态。在各实施中,通道具有一个以上的相应谓词位且处理元件可操作用于基于通道的状况设置所有相应的谓词位。在各实施中,处理元件可操作用于跨越一个以上的通道进行操作。
[0013]在一些实施方案中,一种由处理器进行的方法包括将指令发布至包括可分为用于并行处理的处理通道的寄存器的处理元件;设置与处理通道对应的屏蔽位;设置与处理通道对应的谓词位;以及通过处理通道中的至少一个执行指令。在各实施中,屏蔽位的数量等于寄存器的可分处理通道的最大数量且谓词位的数量等于可分处理通道的最大数量。[0014]该方法可能还包括启用具有第一状态的相应屏蔽位的处理通道以执行指令;禁用具有第二状态的相应屏蔽位的处理通道执行指令;在具有第三状态的相应谓词位的通道中进行由指令限定的操作;和/或在具有第四状态的相应谓词位的通道中不进行由指令限定的操作。在各实施中,设置与处理通道对应的屏蔽位包括确定与指令相关联的循环的循环计数;如果循环计数不等于1,则将所有的屏蔽位设置成第一状态;以及如果循环计数等于1,则基于循环的行程计数将屏蔽位中的每一个设置成第一状态或第二状态。在各实施中,设置谓词位包括基于与谓词位对应的处理通道的状况将谓词位设置成第三状态或第四状态。在一些实施方案中,设置包括将谓词位设置成第三状态;以及进行比较操作以确定是否应将谓词位中的任何一个改变成第四状态。在各实施中,谓词位的数量大于处理通道的数量,从而使处理通道具有一个以上的相应谓词位;以及设置谓词位包括基于处理通道的状况设置处理通道的一个以上的相应谓词位。
[0015]在其他实施方案中,一种单指令多数据(SMD)处理器包括具有包括可分为大量SIMD通道的寄存器组的处理元件的计算阵列;具有数量等于可分SMD通道的最大数量的屏蔽位以使每个SIMD通道具有至少一个相应屏蔽位的屏蔽寄存器;以及具有数量等于可分SMD通道的最大数量的谓词位以使每个SMD通道具有至少一个相应谓词位的谓词寄存器。处理元件可操作用于基于屏蔽位和谓词位的状态在SMD通道中的至少一个中条件性地执行指令。在各实施中,处理元件可操作用于启用具有第一状态的相应屏蔽位的SMD通道以执行指令;禁用具有第二状态的相应屏蔽位的SMD通道执行指令;在具有第三状态的相应谓词位的SIMD通道中进行由指令限定的操作;和/或在具有第四状态的相应谓词位的SIMD通道中不进行由指令限定的操作。
[0016]实例实施方案的详述
[0017]下面的公开提供了许多不同的实施方案或实例以实现本公开的不同特征。对组件和布置的具体实例进行如下描述以简化本公开。当然,这些仅是实例且不意在限制。进一步地,本公开可在各实例中重复使用参考数字和/或字母。该重复是为了实现简单和清楚的目的且本身不指示所讨论的各实施方案和/或配置之间的关系。
[0018]图1为根据本公开的各方面的实例数字信号处理器100的示意性方块图。为了清楚起见,已对图1进行简化以更好地理解本公开的发明构思。可在数字信号处理器100中添加额外的特征,且在数字信号处理器100的其他实施方案中可替换或消除下述特征中的一些。
[0019]数字信号处理器100可包括控制单元110、存储器120和计算阵列130。在实例中,控制单元110和计算阵列130构成核心处理器,其可执行数字信号处理器100的计算和数据处理功能。数字信号处理器100可包括其他组件,如用于执行微控制器的指令的微控制器、直接存储器存取(DMA)单元和到芯片外设备的各种接口。
[0020]控制单元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通过提取指令、解码指令和执行指令而实施程序。在实例中,程序可包括用于实施各种数字信号处理算法的指令集。
[0021]存储器120存储待数字信号处理器100处理的信息/数据(数据存储器)、由数字信号处理器100实施以处理信息/数据的程序(程序存储器)或其组合。在所描绘的实施方案中,存储器120具有多个组块化的交织存储器结构,从而使存储器120包括存储器组块Ml、M2、M3…Mn,其中η为存储器120的存储器组块的总数。在实例中,存储器120为随机存取存储器,如静态随机存取存储器(SRAM)。在实例中,存储器组块M1、M2、M3、…Mn中的一个或多个为单独的SRAM。或者,在各实施中,存储器120为另一种合适类型的存储器。
[0022]互连网络140、互连网络142和互连网络144将控制单元110、存储器120和计算阵列130互相连接起来,从而在控制单元110、存储器120和计算阵列130之间提供通信路径。互连网络140、互连网络142和互连网络144包括单总线、多总线、交叉开关矩阵网络、单级网络、多级网络、其他类型的互连网络或其组合。控制单元110经互连网络142将指令和数据地址发布至计算阵列130。因此,互连网络142经互连网络142将用于指令和数据的地址传输至计算阵列130的各处理元件PEl、PE2、PE3、…PEN。互连网络144传输源自存储器(如存储器120、程序存储器116、其他存储器或其组合)的数据和/或指令,因此可将数字信号处理器100中任何寄存器的内容传输至任何其他的寄存器或任何存储器位置,且存储器120可将数据操作数(值)提供至计算阵列130。
[0023]计算阵列130包括处理元件PE1、PE2、PE3、…PEN,其中N为计算阵列130的处理元件的总数。在实例中,计算阵列110可包括4个处理元件(换句话说为PEl、PE2、PE3和PE4,其中N=4)。处理元件PE1、PE2、PE3、…PEN进行用于数字信号处理算法的数字处理。处理元件ΡΕ1、ΡΕ2、ΡΕ3、".ΡΕΝ单独操作、并行操作或作为单指令多数据(SMD)引擎操作。在本实例中,每个处理元件PE1、ΡΕ2、ΡΕ3、…PEN均为向量处理器。或者,处理元件ΡΕ1、ΡΕ2、ΡΕ3、…PEN为标量处理 器和向量处理器的组合。
[0024]处理元件ΡΕ1、ΡΕ2、ΡΕ3、…PEN包括各自的计算单元((^)152^ 1522、1523、…152N。在所描绘的实施方案中,计算单元152ρ 1522、1523、…152N是相同的,然而本公开也考虑了计算单元不相同的实施方案。本公开还考虑了处理元件PE1、PE2、PE3、…PEN中的一个或多个不包括计算单元的配置。在本实例中,计算单元152ρ 1522、1523、…152N包括算术逻辑单元(ALU)、乘法累加器(MAC)、移位器、其他计算单元或其组合。ALU能够进行算术和逻辑操作,如加、减、求反、递增、递减、绝对值、与、或、异或、非、除法原语、其他算术操作、其他逻辑操作或其组合。MAC能够进行乘法操作,以及乘法和累加操作,如单周期乘法、乘法/加法、乘法/减法、其他操作或其组合。移位器能够进行逻辑和算术移位、位操作、规格化、去规格化、指数求导操作、其他操作或其组合。可按定点和浮点格式进行各种算术操作、逻辑操作和其他操作。在各实施方案中,ALU、MAC和/或移位器包括与其相关的寄存器。
[0025]处理元件PE1、PE2、PE3、…PEN还包括各自的寄存器堆15七、1542、1543、...154N。在所描绘的实施方案中,寄存器堆154^154^154^…154N是相同的,然而本公开也考虑了寄存器堆不相同的实施方案。本公开还考虑了处理元件PE1、PE2、PE3、…PEN中的一个或多个不包括寄存器堆的配置。寄存器堆1541、1542、1543、…154N包括在处理元件PE1、PE2、PE3、".ΡΕΝ和数据互连网络(如互连网络144)之间传输数据并存储结果的寄存器。在本实例中,寄存器堆1541、1542、1543、…154N可包括各自的通用寄存器组155^155^155^…155N,其包括其宽度取决于数字信号处理器100的设计要求的通用寄存器,如32位通用寄存器、40位通用寄存器、64位通用寄存器、128位通用寄存器、其他宽度的通用寄存器或其组合。为了下面的讨论,通用寄存器组155^155^1553、…155N包括32位通用寄存器。在本实例中,寄存器堆1541、1542、1543、…154N还包括各自的屏蔽寄存器156^156^156^…156n和各自的谓词寄存器(predicate register) 158^ 1582> 1583、…158N,其在下面将进行详细讨论。寄存器堆151、1542、1543、…154N可根据数字信号处理器100的设计要求包括额外的寄存器。进一步地,在各实施中,屏蔽寄存器156ρ1562、1563、…156,和/或谓词寄存器158^158^1583、…158NS通用寄存器组155^155^155^…155N的通用寄存器中的一个。 [0026]数字信号处理器100可进行各种并行操作。例如,在单周期中,处理元件PE1、PE2、PE3、…PEN从存储器(经互连网络142)访问指令并(经互连网络144)访问N个数据操作数以进行同步处理。在单指令多数据(SMD)模式中,数字信号处理器100并行处理多个数据流。例如,当在SMD模式中时,单周期内的数字信号处理器100可经互连网络142将单指令发送至处理元件PE1、PE2、PE3、…PEN ;经互连网络144从存储器(存储器120、程序存储器116、其他存储器或其组合)加载N个数据组,其中一个数据组是用于处理元件PE1、PE2、PE3、-PEN中的任一个(在实例中,每个数据组可包括两个数据操作数);在处理元件PE1、PE2、PE3、…PEN中同步执行单指令;以及在存储器(存储器120、程序存储器116、其他存储器或其组合)中存储同步执行的数据结果。
[0027]数字信号处理器100还可进行寄存器中的SMD (SWAR),其中处理元件PE1、PE2、PE3、…PEN中的任一个的寄存器(例如:通用寄存器)可分为一个以上的处理通道,从而使处理元件PEl、PE2、PE3、…PEN中的任一个可单独在其各自的处理通道上进行并行操作。例如,在SWAR模式中,处理元件PEl、PE2、PE3、…PEN中的任一个可在η个k/n位通道上进行并行操作,其中k为在寄存器的位中的宽度且η为寄存器的通道的数量。图2示意性地示出根据本公开的各方面的与可进行SWAR的处理元件(如数字信号处理器100的处理元件ΡΕ1、ΡΕ2、ΡΕ3、…PEN)相关联的实例寄存器组。在图2中,一组寄存器包括寄存器R1、寄存器R2和寄存器R3,其中操作(OP)(如加法操作)使用寄存器Rl和寄存器R2的元素(数据操作数)执行以在寄存器R3中产生结果。寄存器R1、R2和R3可以是通用寄存器,如通用寄存器组155^1550^ 1553。在本实例中,其中的通用寄存器为32位宽(k=32),在SMD模式中,处理元件PE1、PE2、PE3、…PEN中的任一个可在存储于寄存器Rl和R2中的32位元素上进行操作并将结果置于寄存器R3中。为了促进实现本实例,在SWAR模式中,处理元件PE1、PE2、PE3、-PEN的寄存器被分为用于并行操作的一个以上的处理通道,从而使处理元件PEl、PE2、PE3、…PEN中的任一个可在存储于寄存器Rl和R2中的16位元素的两个通道(LI和L2)上进行并行操作并将结果置于寄存器R3中(被称为2X 16位SWAR处理),或在存储于寄存器Rl和R2中的8位元素的四个通道(L1-L4)上进行并行操作并将结果置于寄存器R3中(被称为4X8位SWAR处理)。
[0028]对数字信号处理器支持高性能以用于更宽数据类型(如64位浮点、32位复数等)的需求越来越高,这已导致在数字信号处理器的处理元件(如数字信号处理器100的处理元件PE1、PE2、PE3、…PEN)中增加计算能力和寄存器的宽度。通过实施SWAR,更宽的寄存器增加了用于较小数据类型(如32位浮点、16位定点等)的数字信号处理器的性能用途。例如,数字信号处理器100可通过实施SWAR而使执行操作快两倍至四倍,而不用添加更多的处理元件。在存在具有32位宽寄存器的4个处理元件PE1、PE2、PE3和PE4的实例中,数字信号处理器100可在相同的时间内在SMD或非SMD模式中进行4个并行32位操作、在2 X 16位SWAR模式中进行8个并行操作或在4 X 8位SWAR模式中进行16个并行操作。同样,在处理元件PE1、PE2、PE3和PE4具有128位宽寄存器的实例中,数字信号处理器100可在相同的时间内在SMD或非SMD模式中进行4个并行128位操作、在2 X 64位SWAR模式中进行8个并行64位操作、在4X 32位SWAR模式中进行16个并行32位操作、在8 X 16位SffAR模式中进行32个并行16位操作或在16X8位SWAR模式中进行64个并行8位操作。
[0029]虽然SWAR模式可在数字信号处理器的硬件中相对便宜地进行实施,但是SWAR仍从编程的角度提出挑战。例如,SWAR编程通常必须是不作为ANSI C标准(美国国家标准学会(ANSI)发布的用于C编程语言的标准)一部分的高级语言(如C/C++)编写的内在函数、内联汇编和/或专门的向量数据类型(如float2、int4、short4等)。因为这种编程选项(专门的向量数据类型、内在函数和/或内联汇编)是处理器特定的,所以SWAR编程会在遗留代码的移植中产生困难。进一步地,由于SWAR编程在向量处理器上增加了额外级别的并行处理,因此常规的数字信号处理器会为了确保数字信号处理器识别两个级别的并行操作(双向并行性)而给程序员增加负担:一个级别的并行处理位于处理元件(利用SWAR)中而另一级别的并行处理则跨越向量单元的处理元件。
[0030]本文 所公开的数字信号处理器100可使程序员(且因此也是数字信号处理器的编译者)将并行处理单元视为单一向量通道,其中每个处理通道(SWAR通道)均被视为单独的处理元件。在每个处理元件PE1、PE2、PE3、…PEN可被分成相同数量的处理通道的实例中,程序员看到处理元件的有效数量等于实际处理元件的数量乘以每个处理元件的处理(SffAR)通道的数量。相应地,在存在支持4个处理通道(例如:支持4X8位SWAR的32位宽寄存器)的4个处理元件PE1、PE2、PE3和PE4的实例中,从程序员的角度来看(以及因此也是从编译者的角度来看),处理元件的有效数量为16 (PE的有效数量=PE的数量X每个PE的SWAR通道的数量=4X4=16)。在另一实例中,其中存在8个处理元件且每个处理元件支持两个处理通道(例如:2个32位浮点操作),从程序员的角度来看,处理元件的有效数量为16 (PE的有效数量=PE的数量X每个PE的SWAR通道的数量=8X2=16)。正如下面将详细描述的,数字信号处理器100由程序员通过实施以下步骤使SWAR处理(特别是双向并行性)实现无缝连接:(1)以每个处理通道(SWAR通道)为基础进行屏蔽;(2)以每个处理通道为基础进行条件性执行;(3)跨越处理通道和/或跨越处理元件进行归约操作;和/或
(4)以每个处理通道为基础独立地生成地址。这种机制大大减少了数字信号处理器100所需的编程工作。
[0031]数字信号处理器100能够以每个处理通道(SWAR通道)为基础屏蔽并行操作。在所描绘的实施方案中,处理元件PE1、PE2、PE3、…PEN具有相关联的屏蔽寄存器156ρ1562、1563、".156ν。屏蔽寄存器156^156^1563、…156Ν使屏蔽位数量(宽度)等于相关联处理元件PEl、ΡΕ2、ΡΕ3、…PEN的寄存器的可分通道的最大数量,其中屏蔽位与相关联处理元件ΡΕ1、ΡΕ2、ΡΕ3、…PEN的通道对应。换句话说,屏蔽寄存器的屏蔽位的数量足以控制经其相关联的处理元件所实施的并行性的最小粒度。例如,在数字信号处理器100包括4个处理元件PE1、PE2、PE3和PE4,其具有支持1X32位、2X 16位和/或4X8位SWAR操作的32位宽通用寄存器组的情况下,可分处理通道的最大数量为4且相关联的屏蔽寄存器156p1562、1563和1564包括4个屏蔽位(换言之,为4位宽屏蔽寄存器),其中在进行4X8位操作时,I个屏蔽位对应于每个处理通道,在进行2 X 16位操作时,2个屏蔽位对应于每个处理通道,且在进行I X 32位操作时,4个屏蔽位对应于每个处理通道。在可替代的实施方案中,代替具有各自屏蔽寄存器1561、1562、1563、...156N的处理元件PE1、PE2、PE3、…PEN,数字信号处理器100可包括使其屏蔽位数量(宽度)等于数字信号处理器100支持的处理通道的最大数量的单屏蔽寄存器。
[0032]在程序执行过程中可通过控制单元110或各自的处理元件PE1、PE2、PE3、…PEN设置与每个处理元件PEl、PE2、PE3、…PEN (以及特别对应于每个处理通道的)相关联的屏蔽位。在实例中,数字信号处理器100基于向量的向量长度设置屏蔽位,下面将进行详细描述。屏蔽位控制其相应通道的操作状态。例如,数字信号处理器100 (或处理元件PE1、PE2、PE3、…PEN)启用具有第一状态(例如:真)的相应屏蔽位的通道以执行指令以及禁用具有第二状态(例如:假)的相应屏蔽位的通道执行指令。可取决于数字信号处理器100的设计要求而变化表示第一状态(如“真”)和第二状态(如“假”)的情况。在各实施中,当屏蔽位的值为“I”时,第一状态为“真”且当屏蔽位的值为“O”时,第二状态为“假”,从而启用具有值为“I”的相应屏蔽位的通道以执行指令并禁用具有值为“O”的相应屏蔽位的通道执行指令。在其他实施中,当屏蔽位的值为“O”时,第一状态为“真”且当屏蔽位的值为“I”时,第二状态为“假”,从而启用具有值为“O”的相应屏蔽位的通道以执行指令并禁用具有值为“I”的相应屏蔽位的通道执行指令。
[0033]图3、图4和图5示出根据本公开的各方面的一组屏蔽寄存器,其被设置成根据数字信号处理器所实施的操作类型以每个处理通道为基础而进行屏蔽。例如,图3示出屏蔽寄存器156ρ1562、1563和1564的实例,其被设置成在数字信号处理器100进行I X 32位操作时屏蔽处理通道;图4示出屏蔽寄存器156ρ 1562、1563和1564的实例,其被设置成在数字信号处理器100进行2X16位操作时屏蔽处理通道;以及图5示出屏蔽寄存器156ρ1562、1563和1564的实例,其被设置成在数字信号处理器100进行4X8位操作时屏蔽处理通道。
[0034]在图3中,当数字信号处理器100进行32位操作时,处理元件ΡΕ1、ΡΕ2、ΡΕ3和ΡΕ4可进行4个并行操作(用于并行处理的4个通道L1-L4),以及与处理元件相关联的所有屏蔽位都被共同设置成真或假。例如,在存在4个并行处理器且数字信号处理器100实施循环计数为3的操作的情况下,数字信号处理器100设置屏蔽位,从而启用处理元件ΡΕ1、ΡΕ2和ΡΕ3以执行与循环计数相关联的指令且同时禁用处理元件ΡΕ4执行该指令。具体而言,与处理元件PEl相关联的屏蔽寄存器156i的所有屏蔽位均被设置成“1”,与处理元件PE2相关联的屏蔽寄存器1562的所有屏蔽位均被设置成“1”,与处理元件PE3相关联的屏蔽寄存器1563的所有屏蔽位均被设置成“1”以及与处理元件PE4相关联的屏蔽寄存器1564的所有屏蔽位均被设置成“O”。
[0035]在图4中,当数字信号处理器100进行16位操作并实施2 X 16位SWAR处理时,处理元件PE1、PE2、PE3和PE4进行两个并行通道操作,且数字信号处理器100将对应处理通道的成对屏蔽位共同地设置为真或假。例如,在图4中,在实质上存在8个并行处理器(用于并行处理的8个通道L1-L8)且数字信号处理器100实施循环计数为7的操作的情况下,数字信号处理器100设置屏蔽位,从而启用处理元件PE1、PE2和PE3的所有通道(L1-L6)以执行与循环计数相关联的指令,启用处理元件PE4的通道中的一个(L7)以执行该指令,以及禁用处理元件PE4的另一通道(L8)执行该指令。具体而言,对于与处理元件PEl相关联的屏蔽寄存器156i而言,分别对应处理通道LI和L2的第一对屏蔽位和第二对屏蔽位被设置成“I”;对于与处理元件PE2相关联的屏蔽寄存器1562而言,分别对应处理通道L3和L4的第一对屏蔽位和第二对屏蔽位被设置成“I” ;对于与处理元件PE3相关联的屏蔽寄存器1563而言,分别对应处理通道L5和L6的第一对屏蔽位和第二对屏蔽位被设置成“ I” ;以及对于与处理元件PE4相关联的屏蔽寄存器1564而言,对应处理通道L7的第一对屏蔽位被设置成“ I ”而对应处理通道L8的第二对屏蔽位被设置成“O”。
[0036]同样地,在图5中,当数字信号处理器100进行8位操作并因此实施4X8位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)执行该指令。具体而言,对于与处理元件PEl相关联的屏蔽寄存器156i而言,对应于4个处理通道L1-L4的屏蔽位被设置成“I”;对于与处理元件PE2相关联的屏蔽寄存器1562而言,对应于4个处理通道L5-L8的屏蔽位被设置成“I”;对于与处理元件PE3相关联的屏蔽寄存器1563而言,对应于4个处理通道L9-L12的屏蔽位被设置成“I”;以及对于与处理元件PE4相关联的屏蔽寄存器1564而言,对应于前三个处理通道L13-L15的屏蔽位被设置成“ I ”并将对应于第4个处理通道L16的屏蔽位设置成“O”。
[0037]通过以每个处理通道为基础进行屏蔽操作,数字信号处理器100可有效地对在处理通道粒度的向量长度进行操作。当处理向量阵列端部的操作时,屏蔽个别的处理通道特别有用。对于向量长度N而言,iN%NPE (处理元件数量)不等于O时(换句话说,向量长度N不是处理元件数量(NPE)的倍数时),数字信号处理器100可在循环的最后一次迭代屏蔽个别处理通道执行指令,而无需进行额外的编程。相应地,在各实施中,当循环长度不等于向量长度时,屏蔽位可有效地作为循环控制。与此相反,常规的数字信号处理器需要程序员对向量长度不是处理元件的默认宽度且向量长度不是处理通道数量的倍数(换句话说,循环长度不等于向量长度)的情况特别地进行编程。
[0038]图6为根据本公开的各方面的用于可通过数字信号处理器进行的各个处理通道的屏蔽操作的实例方法200的流程图。方法200开始于方块210,其中数字信号处理器发现可向量化循环。在实例中,数字信号处理器分析用于可向量化循环(用于向量化的循环)的源代码。可向量化循环表示数字信号处理器可在同一时间执行循环的一个以上的迭代。在实例中,对循环进行向量化可展开循环,从而使其可在单指令中对多个数据进行相同的操作。在方块220,数字信号处理器确定可向量化循环的循环计数。在各实施中,通过下列操作给出循环计数(LoopCount):
[0039]LoopCount=ceil (N/NLanes),[0040]其中N是向量长度(向量中元素的数量)且NLanes为处理通道的数量。在方块230,数字信号处理器确定循环计数是否等于I (LoopCount==I ?)。如果循环计数不等于I,方法200继续前进至方块240,其中屏蔽操作将所有屏蔽位设置为真,从而启用数字信号处理器的所有处理通道执行与可向量化循环相关联的指令。在实例中,在真由值“I”所表示的情况下,可通过下列方式表示屏蔽操作:
[0041]MASK=2'NLanes-l,
[0042]这将与处理通道相关联的所有屏蔽位设置为“I”。在方块250,数字信号处理器进行可向量化循环的第i次迭代,其中?=1...η (η为在方块220确定的LoopCount)。在进行第i次迭代后,在方块260对循环计数进行递减,且方法200返回至方块230以再次确定循环计数是否等于I。方法200重复方块230、方块240、方块250和方块260直到循环计数等于I。当循环计数等于I时,方法200前进至方块270,其中屏蔽操作设置屏蔽位以进行最后一次迭代(其中,在最后一次迭代,i=n=在方块220确定的LoopCount)。屏蔽操作可根据可向量化循环的行程计数(在每次进入循环时循环本体被执行的次数)将每个屏蔽位设置为第一状态(如真或“I”)或第二状态(如假或“O”)。在各实施中,屏蔽操作将所有屏蔽位设置成真以用于循环的最后一次迭代,从而启用所有处理通道以执行该指令。例如,在处理元件PE1、PE2、PE3和PE4进行2X 16位SWAR (从而提供8个并行处理通道)且循环的行程计数等于16 (行程计数=16)的情况下,循环迭代两次(初始LoopCount=〗)且所有屏蔽位都被设置成真以用于这两次迭代。在各实施中,屏蔽操作将屏蔽位中的至少一个设置为假以用于循环的最后一次迭代,从而启用处理通道中的一些以执行与可向量化循环相关联的指令并禁用处理通道中的一些执行该指令。例如,在处理元件PE1、PE2、PE3和PE4进行2X 16位SWAR (从而提供8个并行处理通道)且循环的行程计数等于15 (行程计数=15)的情况下,循环仍然迭代两次(初始LoopCount=〗),但所有屏蔽位都被设置成真以用于第一次迭代且至少一个屏蔽位被设置成假以用于第二次迭代。在实例中,在真由值“I”所表示且假由值“O”所表示的情况下,可通过下列方式表示屏蔽操作:
[0043]MASK (用于最后一次迭代)=2~ (Remainder ((VectorLength+NLanes-l)NLanes)+1)-1`
[0044]在方块280,数字信号处理器进行可向量化循环的最后一次迭代。可在方法200前,中和后提供额外的步骤,且可替换或消除所述步骤中的一些以用于方法200的其他实施方案。
[0045]图7示出根据本公开的各方面的使用图6的方法200在可向量化循环的不同迭代期间所设置的一组屏蔽寄存器。在数字信号处理器100包括支持2X 16位SWAR处理的4个处理元件PE1、PE2、PE3和PE4的实例中,图7示出在与处理向量长度为15 (N=15)的向量相关联的循环的不同迭代期间所设置的屏蔽寄存器Ise1Use2Use3和1564的实例。实施方法200,数字信号处理器100 (在方块220)确定循环计数为2 (LoopCount=ceiI (N/NLanes) =ceil (15/8)=2)。由于循环计数不等于I (在方块230),数字信号处理器100 (在方块240)将屏蔽寄存器156^156^1563和1564的所有屏蔽位设置为“I”以用于循环的第一次迭代(i=l),进行第一次迭代(在方块250 )并递减循环计数(在方块260 )。由于本实例中的循环计数为2,数字信号处理器100确定经递减的循环计数为I (在方块230)并前进至(方块270)对屏蔽寄存器1561、1562、1563和1564的屏蔽位进行设置以用于循环的第二次即最后一次迭代(i=2)。特别地,与处理通道L1-L7对应的屏蔽位被设置成“ I ”而与处理通道L8对应的屏蔽位被设置成“O”,从而当数字信号处理器100 (在方块280)进行循环的最后一次迭代时禁用处理通道L8执行该指令。
[0046]返回到图1,数字信号处理器100还可以每个处理通道为基础条件性地执行指令。例如,如上面所提及的,处理元件PE1、PE2、PE3、…PEN具有相关联的谓词寄存器158ρ1582、1583、".158ν。与屏蔽寄存器相类似,谓词寄存器158ρ1582、1583、…158Ν使其谓词位数量(宽度)等于其相关联处理元件PEl、ΡΕ2、ΡΕ3、…PEN的寄存器的可分通道的最大数量,其中谓词位对应于相关联处理元件ΡΕ1、ΡΕ2、ΡΕ3、…PEN的通道。在数字信号处理器100包括处理元件PEl、PE2、PE3和PE4,其具有支持I X 32位、2 X 16位和/或4X 8位SWAR操作的32位宽通用寄存器组的实例中,可分处理通道的最大数量为4且相关联谓词位158p1582、1583和1584包括4个谓词位(换句话说,为4位宽谓词寄存器)。如下面进一步所描述的,数字信号处理器100对所有谓词位进行初始设置并随后基于处理通道的数量使用大量谓词位以条件性地执行指令。例如,数字信号处理器100在进行4X8位SWAR操作时使用所有4个谓词位以条件性地执行指令以用于4个处理通道中的每一个,在进行2X 16位SWAR操作时使用其中2个谓词位以条件性地执行指令以用于两个处理通道中的每一个,且在进行1X32位操作时使用谓词位中的一个以条件性地执行指令以用于单处理通道。根据数字信号处理器100的设计要求使用(选择)谓词寄存器中的哪些位以确定是否条件性地执行指令。在可替代实施方案中,代替具有各自谓词寄存器158ρ1582、1583、…158Ν的处理元件ΡΕ1、ΡΕ2、ΡΕ3、…PEN,数字信号处理器100可包括使其谓词位数量(宽度)等于数字信号处理器100支持的处理通道的最大数量的单谓词寄存器。
[0047]在程序执行过程中可通过控制单元110或各自的处理元件PE1、PE2、PE3、…PEN设置与每个处理元件PEl、PE2、PE3、…PEN (以及特别对应于处理通道的)相关联的谓词位。数字信号处理器100基于其相应处理通道的状况设置谓词寄存器158ρ 1582、1583、…158n的所有谓词位,而不论其相关联元件PE1、PE2、PE3、…PEN所并行处理的数据元素的数量是多少。以及,当指令具体指定具有比与处理元件相关联的谓词位的数量更少的数据元素的操作时,使用处理通道中的状态以设置与该通道相关联的所有谓词。处理元件PE1、PE2、PE3、…PEN可进行比较操作以设置其各自谓词寄存器158” 1582、1583、...158N的谓词位。例如,在处理元件PE1、PE2、PE3和PE4具有用于实施1X32位和2X16位SWAR操作的32位宽通用寄存器组的情况下,可分处理通道的最大数量为2且因此相关联谓词寄存器158ρ1582、1583和1584包括两个谓词位,其中在进行2X 16位操作时一个谓词位对应于每个处理通道。在操作中,可考虑一种情况,其中可对处理元件PEl进行指示以执行一个元素的操作(I X 32位操作)或两个元素的操作(2X 16位操作)。根据本公开的各方面,不论处理元件PEl是否将进行1X32位操作或2 X 16位操作都将对相关联谓词寄存器MS1的两个谓词位进行设置(换句话说,两个谓词位的状态初始为真)。然后,数字信号处理器100基于处理元件PEl的寄存器的状况进行比较操作以确定如何设置谓词位的状态。相应地,例如,对于32位谓词加载指令而言,当数字信号处理器100进行2 X 16位比较操作时,可对每个谓词位进行不同设置,从而使32位谓词加载指令条件性地加载两个16位数据操作数中的每一个,然而当数字信号处理器100进行I X 32位比较时,可对两个谓词位进行相同的设置,从而使32位谓词加载指令条件性地加载32位作为单数据操作数。[0048]与屏蔽位相反,谓词位通过其相应的处理通道控制指令的条件性执行,从而实质上控制是否要通过其相应的通道进行指令所限定的操作。在各实施中,谓词位可在循环中或在循环外促进对指令的条件性执行。例如,数字信号处理器100 (或处理元件PE1、PE2、PE3、…PEN)使具有第一状态(例如:真)的相应谓词位的通道进行由指令限定的操作并使具有第二状态(例如:假)的相应谓词位的通道不执行由指令限定的操作。可根据数字信号处理器100的设计要求变化表示第一状态(如“真”)和第二状态(如“假”)的情况。在实例中,与谓词位相关联的第一状态和第二状态和与屏蔽位相关联的那些一样。在另一实例中,与谓词位相关联的第一状态和第二状态不同于与屏蔽位相关联的那些。在各实施中,当谓词位的值为“I”时,第一状态为“真”且当谓词位的值为“O”时,第二状态为“假”,从而启用具有值为“I”的相应谓词位的通道以执行指令并禁用具有值为“O”的相应谓词位的通道执行指令。在其他实施中,当谓词位的值为“O”时,第一状态为“真”且当谓词位的值为“I”时,第二状态为“假”,从而启用具有值为“O”的相应谓词位的通道以执行指令并禁用具有值为“I”的相应谓词位的通道执行指令。
[0049]数字信号处理器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的结果确定
最小值/最大值。.[0050]数字信号处理器100还能够以每个处理通道(SWAR)为基础独立生成地址。独立生成地址便于满足单指令中来自各个处理通道的存储器加载/存储的请求。在使用非单位步长数据的情况下,这种特征是特别有用的。在各实施中,数字信号处理器100可包括每个SffAR通道的地址偏移量寄存器,从而通过基地址加偏移量来表示用于每个SWAR通道的地址。在数据趋于连续的情况下,数字信号处理器100可能不一定支持独立的地址生成,且存储器加载/存储请求可通过单独的指令予以满足。
[0051]通过实施本文所述的数字信号处理器体系结构和相关联的方法可显著降低用于实现SWAR并行性的编程要求。例如,在常规的数字信号处理器中,程序员必须明确地定义非标准的数据类型和用于并行处理的通道数量。在实例中,对于在64位寄存器中实施2X32位SWAR操作的数字信号处理器而言,用于乘法和累加操作的简单的有限冲激响应(FIR)的过滤器核函数可如下用C/C++编程语言的扩展(如float2)进行编写:
[0052]
【权利要求】
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所述的方法,其中设置与所述处理通道对应的所述屏蔽位包括: 确定与所述指令相关联的循环的循环计数; 如果所述循环计数不等于I,则将所有屏蔽位设置成所述第一状态; 如果所述循环计数等于1,则基于所述循环的行程计数将所述屏蔽位中的每一个设置成所述第一状态或所述第二状态。
16.根据权利要求14所述的方法,其中设置所述谓词位包括基于与所述谓词位对应的所述处理通道的状况将所述谓词位设置成所述第三状态或所述第四状态。
17.根据权利要求11所述的方法,其中: 谓词位的数量大于处理通道的数量,从而使处理通道具有一个以上的相应谓词位;以及 设置所述谓词位包括基于所述处理通道的状况设置所述处理通道的所述一个以上的相应谓词位。
18.一种单指令多数据(SMD)处理器,包括: 计算阵列,其具有包`括可分为大量SMD通道的寄存器组的处理元件; 屏蔽寄存器,其具有数量等于可分SMD通道的最大数量的屏蔽位,以使每个SMD通道具有至少一个相应屏蔽位; 谓词寄存器,其具有数量等于可分SMD通道的最大数量的谓词位,以使每个SMD通道具有至少一个相应谓词位;以及 其中所述处理元件可操作用于基于所述屏蔽位和所述谓词位的状态在所述SMD通道中的至少一个中条件性地执行指令。
19.根据权利要求18所述的SMD处理器,其中所述处理元件可操作用于: 启用具有第一状态的相应屏蔽位的所述SIMD通道以执行指令;以及 禁用具有第二状态的相应屏蔽位的所述SIMD通道执行所述指令。
20.根据权利要求19所述的SMD处理器,其中所述处理元件可操作用于: 在具有第三状态的相应谓词位的SMD通道中进行由所述指令限定的操作;以及 在具有第四状态的相应谓词位的SIMD通道中不进行由所述指令限定的所述操作。
【文档编号】G06F9/38GK103777924SQ201310503908
【公开日】2014年5月7日 申请日期:2013年10月23日 优先权日:2012年10月23日
【发明者】K·桑海, M·G·佩尔金斯, A·J·希格哈姆 申请人:亚德诺半导体技术公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1