具有隐式混合操作数的数字信号处理引擎的制作方法

文档序号:6348667阅读:172来源:国知局
专利名称:具有隐式混合操作数的数字信号处理引擎的制作方法
技术领域
本申请案涉及数字信号处理器(DSP)的数字信号处理器引擎及/或微处理器或微控制器的中央处理单元(CPU)。
背景技术
DSP引擎必须快速地进行数学计算。然而,当涉及某些计算的精确度时,会做出折衷。举例来说,通常将16位DSP引擎限制于16位数学运算。然而,32位运算可由硬件支持且可通过相应编程来实施。为此目的,举例来说,许多16位DSP引擎提供大得多的累加器 (例如40位累加器)及可适应较高精确度的硬件。这些硬件结构与乘法器的组合可用于执行较高位乘法,例如16位DSP引擎中的32X32位乘法。尽管如此,此些运算仍可显著地使处理速度减慢,尤其是在需要许多高精确度的乘法时。举例来说,快速傅里叶变换(FFT)运算需要许多此种运算且因此可需要大量处理时间。专用的32位乘法器需要显著量的芯片占用面积且因此将增加成本。此外,将需要新的指令来操作此额外硬件。在现有DSP核心中需要一种在不必改变指令集且对现有硬件做出最小改变的情况下经改进的DSP数学能力。

发明内容
根据一实施例,一种处理器可包括至少一个乘法器单元,其可经控制以在带正负号模式、不带正负号模式或混合正负号模式中运算;乘法器单元模式解码器,其与所述乘法器单元耦合,接收第一及第二操作数的位置信息,其中所述乘法器模式解码器控制所述乘法器单元以在所述混合正负号模式中时取决于所述位置信息而以在带正负号模式、不带正负号模式或组合的带正负号/不带正负号模式中运算。根据另一实施例,所述乘法器单元包括可控制以执行两个输入操作数的带正负号乘法、不带正负号乘法或混合正负号乘法的η位乘法器。根据另一实施例,所述乘法器单元可包括乘法器数据预处理器,其耦合到所述乘法器单元以独立地对所述两个输入操作数进行正负号或零扩展;及带正负号乘法器。根据另一实施例,所述带正负号乘法器可为η+1 位乘法器。根据另一实施例,所述处理器可进一步包括用以选择所述带正负号模式、所述不带正负号模式或所述混合正负号模式的控制寄存器,在所述混合正负号模式中执行带正负号乘法、不带正负号乘法或组合的带正负号/不带正负号乘法的自动选择。根据另一实施例,所述位置信息可包括寄存器是来自多个工作寄存器的奇数寄存器还是偶数寄存器。根据另一实施例,第一及第二操作数可由数据存储器供应,且所述位置信息包括地址是存储器中的奇数地址还是偶数地址。根据另一实施例,所述第一操作数可选自第一组的两个相连寄存器,且所述第二操作数可选自第二组的两个相连寄存器。根据另一实施例,所述处理器可进一步包括具有适应至少由所述乘法器产生的结果的大小的大小的桶式移位器。根据另一实施例,所述处理器可进一步包括与至少一个累加器及所述桶式移位器耦合的加法器,其中所述乘法器、累加器、桶式移位器为数字信号处理(DSP)引擎的一部分。根据另一实施例,所述处理器可进一步包括耦合在所述乘法器与所述桶式移位器之间的结果扩展单元及与所述结果扩展单元耦合的零回填单元。根据另一实施例,所述处理器可进一步包括与所述累加器耦合的舍入逻辑。根据另一实施例,所述DSP引擎可为具有多个16位寄存器的16位DSP引擎,且其中所述桶式移位器及所述累加器各自包括40位。根据另一实施例, 所述处理器可进一步包括微控制器单元,其中至少所述乘法器由所述微控制器单元与所述 DSP共享以执行算术微控制器指令。根据另一实施例,在带正负号模式中,所述乘法器数据预处理器对所有输入数据进行带正负号扩展;在不带正负号模式中,乘法器数据预处理器对所有输入数据进行零扩展;且在混合正负号模式中,所述乘法器模式解码器引导所述乘法器数据预处理器以在输入的源为奇数寄存器编号或奇数存储器地址的情况下对所述输入进行正负号扩展,或者在输入的源为偶数寄存器编号或偶数存储器地址的情况下对所述输入进行零扩展。根据另一实施例,一种用于在处理器中执行乘法的方法可包括以下步骤_将来自第一位置的第一 η位操作数提供到乘法器单元,其中所述乘法器单元可经控制以在带正负号模式、不带正负号模式或组合的带正负号/不带正负号模式中运算;-将来自第二位置的第二操作数提供到所述乘法器单元;-解码所述第一及第二操作数的所述位置并控制所述乘法器单元以在其中取决于所述位置而执行带正负号乘法、不带正负号乘法或组合的带正负号/不带正负号乘法的混合模式中运算。根据所述方法的另一实施例,可将所述第一及第二操作数存储于寄存器中,且所述位置包括寄存器是来自多个工作寄存器的奇数寄存器还是偶数寄存器。根据所述方法的另一实施例,可由数据存储器供应第一及第二操作数,且所述位置包括地址是存储器中的奇数地址还是偶数地址。根据所述方法的另一实施例,可从第一组的两个相连寄存器中选择所述第一操作数,且从第二组的两个相连寄存器中选择所述第二操作数。根据所述方法的另一实施例,控制寄存器可确定所述乘法器单元是在所述带正负号模式、不带正负号模式还是所述混合模式中运算。根据所述方法的另一实施例,所述乘法器单元可包括带正负号乘法器,且在带正负号模式中,对所述第一及第二操作数进行正负号扩展;在不带正负号模式中,对所述第一及第二操作数进行零扩展;且在混合正负号模式中,在所述第一或第二操作数由奇数寄存器编号或奇数存储器地址供应的情况下,对所述第一或第二操作数进行正负号扩展,或者在所述第一或第二操作数由偶数寄存器编号或偶数存储器地址供应的情况下,对所述第一或第二操作数进行零扩展。根据又一实施例,一种用于使用4个η位数据字执行2η位乘法的方法可包括以下步骤将所述2η位乘法的第一操作数存储于第一组的两个相连寄存器或两个相连存储器位置中;将所述2η位乘法的第二操作数存储于第二组的两个相连寄存器或两个相连存储器地址中;由可控制乘法器单元使用所述第一组的第一寄存器或存储器地址及所述第二组的第一寄存器或存储器地址来执行第一乘法,并将相关联的第一结果移位,由所述可控制乘法器单元使用所述第一组的所述第一寄存器或存储器地址及所述第二组的第二寄存器或存储器地址来执行第二乘法以产生相关联的第二结果,由所述可控制乘法器单元使用所述第二组的所述第一寄存器或存储器地址及所述第一组的第二寄存器或存储器地址来执行第三乘法以产生相关联的第三结果,其中对于每一乘法,所述乘法器单元经自动控制以取决于所述寄存器或地址的所述位置而在带正负号模式、不带正负号模式或组合的带正负号/不带正负号模式中运算;将所述第一、第二及第三结果相加以产生最终结果并将所述最终结果存储于寄存器或存储器中。 根据以上方法的另一实施例,所述位置可包括寄存器是来自多个工作寄存器的奇数寄存器还是偶数寄存器。根据以上方法的另一实施例,所述位置可包括地址是存储器中的奇数地址还是偶数地址。根据以上方法的另一实施例,控制寄存器确定所述乘法器是在带正负号模式、不带正负号模式还是混合正负号模式中运算。根据以上方法的另一实施例, 在带正负号模式中,对乘法器的所有输入进行正负号扩展;且在混合正负号模式中,在所述乘法器的输入由奇数寄存器编号或奇数存储器地址供应的情况下,对所述输入进行正负号扩展,或者在所述乘法器的输入由偶数寄存器编号或偶数存储器地址供应的情况下,对所述输入进行零扩展。根据所述方法的另一实施例,可将所述第二及第三结果移位,且所述方法可进一步包括以下步骤由所述可控制乘法器使用所述第一组的所述第二寄存器或存储器地址及所述第二组的所述第二寄存器或存储器地址来执行第四乘法以产生相关联的第四结果,且其中将所述第四结果与所述第一、第二及第三结果相加以产生所述最终结果。根据所述方法的另一实施例,控制寄存器可确定所述乘法器单元是在带正负号模式、不带正负号模式还是混合正负号模式中运算。根据所述方法的另一实施例,所述乘法器单元可包括带正负号乘法器,且在带正负号模式中,对所述乘法器的所有输入进行正负号扩展;在不带正负号模式中,对所述乘法器的所有输入进行零扩展;且在混合正负号模式中,在所述乘法器的输入由奇数寄存器编号或奇数存储器地址供应的情况下,对所述输入进行正负号扩展,或者在所述乘法器的输入由偶数寄存器编号或偶数存储器地址供应的情况下,对所述输入进行零扩展。


通过参考结合附图进行的以下说明可获取对本发明及其优点的更全面理解,附图中图1是根据一实施例的DSP引擎的示意性框图;图2是乘法器/定标器单元的可能实施方案的示意性框图;图3展示使用16位乘法器进行的32位乘法的主运算;图4展示根据图2的预处理器的实施例;图5到图7展示具有乘法器操作数及结果格式的表;图8以框图展示桶式移位器的实施例;图9是展示桶式移位器模式、方向及量值控制的表;图10及图11是展示桶式移位器多路复用器配置矩阵的表;图12是展示数据累加器多路复用器配置矩阵的表;
图13是展示数据累加器多路复用器配置矩阵的另一表;图14是展示溢出与饱和运算实例的表;图15是展示饱和与溢出模式的表;图16是舍入与数据总线饱和逻辑框图;图17是展示舍入多路复用器编码及函数的表;图18是展示常规及收敛舍入模式的表;且图19是寻找第一指令硬件框图。尽管已参考本发明的实例性实施例来描绘、描述及界定本发明的各实施例,但此些参考并不意味着限定本发明,且不应推断出存在此限定。所揭示的标的物能够在形式及功能上具有大量修改、更改及等效形式,相关领域的且受益于本发明的技术人员将会联想到此些修改、更改及等效形式。所描绘及所描述的本发明的各实施例仅作为实例,而并非是对本发明范围的穷尽性说明。
具体实施例方式根据本发明的教示内容,DSP可通过将每一 32位操作数分裂成两个16位操作数而在无专用硬件的情况下处置32位乘法。接着必须执行多个乘法、移位及加法以实现相应的32或64位结果。所述DSP通常具有η位乘法器,其中η < 32,举例来说,可包括17位乘法器。此乘法器可配置以执行不同类型的乘法。取决于操作数,可执行不同类型的乘法,乘法器必须针对所述乘法来加以配置。举例来说,在两个操作数均带正负号的乘法中,必须以不同于其中两个操作数均不带正负号的运算或不同于其中仅一个操作数带正负号的运算的方式来配置乘法器。可以下文将更详细解释的不同方式来实现此配置。图3展示使用四个16位寄存器及可操作以执行带正负号、不带正负号及混合带正负号乘法的16位乘法器进行的32位乘法的简化实例。如可看出,为了接收64位结果,必需四个不同类型的乘法。运算350执行其中操作数310及330两者均带正负号(因为两个操作数表示32位操作数的最高有效位(MSB)或上半部)的乘法。为了 64位结果,此运算的结果在馈送到加法器390之前被左移32个位。为了其它精确度,此运算的结果可在馈送到加法器390之前被左移8、16或M个位,此取决于实施方案。运算360将表示第一 32位操作数的下半部或最低有效位(LSB)的不带正负号的16位部分320与表示第二操作数的 MSB的带正负号的部分330相乘。类似地,运算370将表示第二 32位操作数的下半部或最低有效位(LSB)的不带正负号的16位部分340与表示第一操作数的MSB的带正负号的部分310相乘。因此,在这两种情况下,必定执行具有混合类型的运算,其中将一个操作数视作带正负号的操作数且将另一操作数视作不带正负号的操作数。为了 64位结果,运算360 及370的结果在馈送到加法器390之前被左移16个位。为了其它精确度,不同的移位值相应地适用。最后,取决于精确度,必须通过运算380将两个操作数320、340的表示所述两个操作数的LSB的下半部相乘。在将每一运算的结果适当移位之后通过运算390将相应结果相加以提供恰当结果。可对最终结果应用额外移位。为了执行运算350、360、370及380,每一乘法可需要乘法器或操作数或两者的重新配置。换句话说,必需用于配置乘法器或转换操作数的单独步骤,此导致额外步骤且因此显著延长运算。
根据本发明的教示内容,可使用表示32位字的寄存器或存储器位置的关联性来控制乘法器的运算模式或控制按乘法器的需要操纵操作数的预处理器。根据各种实施例, 对于DSP,操作数通常存储于特定寄存器或存储器位置中。举例来说,DSP引擎可使用四个通用寄存器或四个特定存储器位置来存储用于特定运算(例如2η位乘法)的操作数。用于执行2η位乘法的寄存器的每一组合可自动触发乘法器单元的特定运算模式。其在32位加载运算始终在寄存器堆或存储器中的预定义边界上执行的情况下可尤其有用。因此,举例来说,在具有用于存储操作数的四个工作寄存器W5、W6、W7及W8的DSP中,始终将32位字存储于奇数寄存器及接着的偶数寄存器中,举例来说,寄存器W5(图3中的310)及W6(图 3中的320)。类似地,当使用存储器时,可取决于实施方案而始终以偶数地址或奇数地址开始来存储32位字。因此,根据此方案,W5及W7(奇数寄存器)或偶数存储器地址将始终被视为带正负号的值,且来自W4及W6 (偶数寄存器)或存储器中的奇数地址的操作数将始终被视为不带正负号的值。这些寄存器或存储器位置中的任一者可用于执行DSP引擎的需要配置乘法器单元的某些运算。因此,可使用用于配置乘法器的运算模式的特定配置寄存器来设定相应模式。举例来说,所述配置寄存器可包含对带正负号乘法的设定及对不带正负号乘法的设定。根据各种实施例,包含第三混合模式设定,其导致取决于用于第一及第二操作数的寄存器或存储器地址的指派而进行的自动选择。在其中图3中所示的寄存器如括号中所示被指派的一种情况下,使用寄存器W5及W7作为第一及第二操作数的指令自动选择带正负号模式。在执行乘法的指令中选择寄存器W6及W8作为第一及第二操作数自动选择不带正负号模式。 选择寄存器W5及W8导致带正负号模式与不带正负号模式的组合,其中将W5视作带正负号且将W8视作不带正负号,且选择寄存器W6及W7导致此模式,其中将W7视作带正负号且将 W6视作不带正负号。当使用存储器位置时,发生类似的解码。此处,偶数地址可用于指示带正负号的值,且奇数地址用于不带正负号的值。因此,不必对乘法器进行重新配置且DSP引擎将针对借助“较低位”DSP引擎执行32位计算所必需的相应步骤执行正确结果。各种实施例促进带正负号扩展精确度算法的执行。举例来说,一旦乘法器经配置以自动设定操作数模式,就可接着依序执行扩展精确度乘法累加(MAC)类指令及交叉乘法而不顾及操作数类型。以下典型的DSP指令可与此可特别配置的DSP引擎一起使用表 权利要求
1.一种处理器,其包括至少一个乘法器单元,其可经控制以在带正负号模式、不带正负号模式或混合正负号模式中运算;乘法器单元模式解码器,其与所述乘法器单元耦合,接收第一及第二操作数的位置信息,其中所述乘法器模式解码器控制所述乘法器单元以在所述混合正负号模式中时取决于所述位置信息而在带正负号模式、不带正负号模式或组合的带正负号/不带正负号模式中运算。
2.根据权利要求1所述的处理器,其中所述乘法器单元包括可控制以执行两个输入操作数的带正负号乘法、不带正负号乘法或混合正负号乘法的η位乘法器。
3.根据权利要求1所述的处理器,其中所述乘法器单元包括乘法器数据预处理器,其耦合到所述乘法器单元以独立地对所述两个输入操作数进行正负号或零扩展,及带正负号乘法器。
4.根据权利要求3所述的处理器,其中所述带正负号乘法器为η+1位乘法器。
5.根据权利要求1所述的处理器,其进一步包括用以选择所述带正负号模式、所述不带正负号模式或所述混合正负号模式的控制寄存器,在所述混合正负号模式中执行带正负号乘法、不带正负号乘法或组合的带正负号/不带正负号乘法的自动选择。
6.根据权利要求1所述的处理器,其中所述位置信息包括寄存器是来自多个工作寄存器的奇数寄存器还是偶数寄存器。
7.根据权利要求1所述的处理器,其中第一及第二操作数由数据存储器供应,且所述位置信息包括地址是存储器中的奇数地址还是偶数地址。
8.根据权利要求2所述的处理器,其中所述第一操作数选自第一组的两个相连寄存器,且所述第二操作数选自第二组的两个相连寄存器。
9.根据权利要求1所述的处理器,其进一步包括具有适应至少由所述乘法器产生的结果的大小的大小的桶式移位器。
10.根据权利要求9所述的处理器,其进一步包括与至少一个累加器及所述桶式移位器耦合的加法器,其中所述乘法器、累加器、桶式移位器为数字信号处理(DSP)引擎的一部分。
11.根据权利要求10所述的处理器,其进一步包括耦合在所述乘法器与所述桶式移位器之间的结果扩展单元及与所述结果扩展单元耦合的零回填单元。
12.根据权利要求10所述的处理器,其进一步包括与所述累加器耦合的舍入逻辑。
13.根据权利要求10所述的处理器,其中所述DSP引擎为具有多个16位寄存器的16 位DSP引擎,且其中所述桶式移位器及所述累加器各自包括40位。
14.根据权利要求10所述的处理器,其进一步包括微控制器单元,其中至少所述乘法器由所述微控制器单元与所述DSP共享以执行算术微控制器指令。
15.根据权利要求3所述的处理器,其中在带正负号模式中,所述乘法器数据预处理器对所有输入数据进行带正负号扩展,在不带正负号模式中,乘法器数据预处理器对所有输入数据进行零扩展,且在混合正负号模式中,所述乘法器模式解码器引导所述乘法器数据预处理器以在输入的源为奇数寄存器编号或奇数存储器地址的情况下对所述输入进行正负号扩展,或者在输入的源为偶数寄存器编号或偶数存储器地址的情况下对所述输入进行零扩展。
16.一种用于在处理器中执行乘法的方法,其包括以下步骤将来自第一位置的第一 η位操作数提供到乘法器单元,其中所述乘法器单元可经控制以在带正负号模式、不带正负号模式或组合的带正负号/不带正负号模式中运算; 将来自第二位置的第二操作数提供到所述乘法器单元;解码所述第一及第二操作数的所述位置并控制所述乘法器单元以在其中取决于所述位置而执行带正负号乘法、不带正负号乘法或组合的带正负号/不带正负号乘法的混合模式中运算。
17.根据权利要求16所述的方法,其中将所述第一及第二操作数存储于寄存器中,且所述位置包括寄存器是来自多个工作寄存器的奇数寄存器还是偶数寄存器。
18.根据权利要求16所述的方法,其中由数据存储器供应第一及第二操作数,且所述位置包括地址是存储器中的奇数地址还是偶数地址。
19.根据权利要求17所述的方法,其中从第一组的两个相连寄存器中选择所述第一操作数,且从第二组的两个相连寄存器中选择所述第二操作数。
20.根据权利要求16所述的方法,其中控制寄存器确定所述乘法器单元是在所述带正负号模式、不带正负号模式还是所述混合模式中运算。
21.根据权利要求20所述的方法,其中所述乘法器单元包括带正负号乘法器,且 在带正负号模式中,对所述第一及第二操作数进行带正负号扩展,在不带正负号模式中,对所述第一及第二操作数进行零扩展,且在混合正负号模式中,在所述第一或第二操作数由奇数寄存器编号或奇数存储器地址供应的情况下,对所述第一或第二操作数进行正负号扩展,或者在所述第一或第二操作数由偶数寄存器编号或偶数存储器地址供应的情况下,对所述第一或第二操作数进行零扩展。
22.一种用于使用4个η位数据字执行2η位乘法的方法,其包括以下步骤 将所述2η位乘法的第一操作数存储于第一组的两个相连寄存器或两个相连存储器位置中;将所述2η位乘法的第二操作数存储于第二组的两个相连寄存器或两个相连存储器地址中;由可控制乘法器单元使用所述第一组的第一寄存器或存储器地址及所述第二组的第一寄存器或存储器地址来执行第一乘法,并将相关联的第一结果移位,由所述可控制乘法器单元使用所述第一组的所述第一寄存器或存储器地址及所述第二组的第二寄存器或存储器地址来执行第二乘法以产生相关联的第二结果,由所述可控制乘法器单元使用所述第二组的所述第一寄存器或存储器地址及所述第一组的第二寄存器或存储器地址来执行第三乘法以产生相关联的第三结果,其中对于每一乘法,所述乘法器单元经自动控制以取决于所述寄存器或地址的所述位置而在带正负号模式、不带正负号模式或组合的带正负号/不带正负号模式中运算;将所述第一、第二及第三结果相加以产生最终结果并将所述最终结果存储于寄存器或存储器中。
23.根据权利要求22所述的方法,其中所述位置包括寄存器是来自多个工作寄存器的奇数寄存器还是偶数寄存器。
24.根据权利要求22所述的方法,其中所述位置包括地址是存储器中的奇数地址还是偶数地址。
25.根据权利要求22所述的方法,其中控制寄存器确定所述乘法器是在带正负号模式、不带正负号模式还是混合正负号模式中运算。
26.根据权利要求25所述的方法,其中在带正负号模式中,对乘法器的所有输入进行带正负号扩展,且在混合正负号模式中,在所述乘法器的输入由奇数寄存器编号或奇数存储器地址供应的情况下,对所述输入进行正负号扩展,或者在所述乘法器的输入由偶数寄存器编号或偶数存储器地址供应的情况下,对所述输入进行零扩展。
27.根据权利要求22所述的方法,其中将所述第二及第三结果移位,且所述方法进一步包括以下步骤由所述可控制乘法器使用所述第一组的所述第二寄存器或存储器地址及所述第二组的所述第二寄存器或存储器地址来执行第四乘法以产生相关联的第四结果,且其中将所述第四结果与所述第一、第二及第三结果相加以产生所述最终结果。
28.根据权利要求27所述的方法,其中控制寄存器确定所述乘法器单元是在带正负号模式、不带正负号模式还是混合正负号模式中运算。
29.根据权利要求观所述的方法,其中所述乘法器单元包括带正负号乘法器,且在带正负号模式中,对所述乘法器的所有输入进行带正负号扩展,在不带正负号模式中,对所述乘法器的所有输入进行零扩展,且在混合正负号模式中,在所述乘法器的输入由奇数寄存器编号或奇数存储器地址供应的情况下,对所述输入进行正负号扩展,或者在所述乘法器的输入由偶数寄存器编号或偶数存储器地址供应的情况下,对所述输入进行零扩展。
全文摘要
本发明涉及一种处理器,其可具有至少一个乘法器单元,其可经控制以在带正负号模式、不带正负号模式或混合正负号模式中运算;乘法器单元模式解码器,其与所述乘法器单元耦合,接收第一及第二操作数的位置信息,其中所述乘法器模式解码器控制所述乘法器单元以在所述混合正负号模式中时取决于所述位置信息而在带正负号模式、不带正负号模式或组合的带正负号/不带正负号模式中运算。
文档编号G06F9/302GK102356378SQ201080012650
公开日2012年2月15日 申请日期2010年5月21日 优先权日2009年5月27日
发明者赛图·杜赖萨米, 迈克尔·I·卡瑟伍德 申请人:密克罗奇普技术公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1