首页> 中国专利> 微处理器及用于微处理器上增强精确度乘积和计算的方法

微处理器及用于微处理器上增强精确度乘积和计算的方法

摘要

一种微处理器(10),包括:至少一个通用寄存器(12),配置成存储和提供多个目的地比特给乘法单元(14);控制单元(18),适合于提供至少一个乘法高位指令(20)和乘法高位和累加指令(22)给乘法单元。该乘法单元还配置成接收至少第一和第二源操作数(24、26),第一和第二源操作数各自具有关联的源比特数目,并且相关的源比特数目之和超过目的地比特数目;连接至包括至少一个高速缓存条目的寄存器扩展高速缓存(28),至少一个高速缓存条目配置成存储及提供多个精确度增强比特;以及适合于存储结果操作数的目的地部分在该通用寄存器中、及存储该结果操作数的精确度增强部分在该高速缓存条目中。根据接收到的指令,该结果操作数由乘法高位运算产生,或由乘法高位和累加运算产生。

著录项

  • 公开/公告号CN102576302A

    专利类型发明专利

  • 公开/公告日2012-07-11

    原文格式PDF

  • 申请/专利权人 马丁·劳比赫;

    申请/专利号CN200980162009.X

  • 发明设计人 马丁·劳比赫;

    申请日2009-11-30

  • 分类号G06F7/544(20060101);G06F7/499(20060101);G06F9/30(20060101);G06F9/302(20060101);

  • 代理机构11021 中科专利商标代理有限责任公司;

  • 代理人王波波

  • 地址 德国巴尔德哈姆

  • 入库时间 2023-12-18 06:04:22

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2014-10-29

    授权

    授权

  • 2014-03-19

    专利申请权的转移 IPC(主分类):G06F7/544 变更前: 变更后: 登记生效日:20140224 申请日:20091130

    专利申请权、专利权的转移

  • 2012-09-12

    实质审查的生效 IPC(主分类):G06F7/544 申请日:20091130

    实质审查的生效

  • 2012-07-11

    公开

    公开

说明书

技术领域

本发明总体上涉及处理装置,更具体地,涉及一种微处理器、一种用于提高微处理器精确度乘积和(Sum-of-Product)计算的方法、以及一视频解码装置。

背景技术

在数字信号处理应用上,最经常使用的功能之一为乘积和计算:

>SoP(Si,Ci,n)=Σi=0n-1Si·Ci>

其中SoP代表乘积和;n为积的数目,i为计数值,Si为量化信号n样本中的第i样本;及Ci是n个系数中的第i系数(例如滤波器或变换系数)。

数字信号处理器(Digital Signal Processor,DSP)以及一些标准微处理器具有快速和高效的乘积和计算的专用指令。非常普遍使用的指令为“MAC”(Multiply-and-Accumulate,乘和累加)指令,该指令将内循环乘法与加法运算结合成单个指令。

微处理器指令的操作数由有限的比特数目来表示。限制是由微处理器硬件的寄存器宽度来定义。对于整数操作数而言,此限制定义能够表示的最大值范围。在数字信号处理上,操作数代表量化的模拟信号,且操作数大小限制定义模拟信号近似值的精确度或换言之质量。

作为示例,通用的微处理器对于源操作数和目的地操作数通常具有相同大小限制,通过通用寄存器的宽度加以设定。例如,遵循目前RISC(Reduced Instruction Set Computer,精简指令集计算机)构思的微处理器架构具有较大一组同样大小的通用寄存器,用于计算指令的源操作数与目的地操作数。

将两个整数与n比特大小相乘产生无符号数的2·n比特大小的乘积、以及有符号数的2·n-1比特大小的乘积。根据源操作数大小,乘法指令的结果不可能完全适合于具有与源寄存器相同大小的通用寄存器。通过对一系列积求和,乘积和计算可产生具有比单积更多比特的结果操作数。例如,n=16、及Si与Ci为有符号16比特值的乘积和计算会产生2·16-1+4=35比特大小的乘积。

在许多通用微处理器指令集中发现的普通类型乘法指令包括将乘积的低位存储在目的地寄存器。这类型乘法指令通常用来支持高级语言,但是非常不适于DSP计算。乘法指令与乘积和计算的结果会溢出。对于DSP计算而言,可以使用存储乘积的高位“乘法-高位运算”(multiply-high operation)指令。单乘法指令的结果不能够溢出。然而,因为丢弃乘积低位,所以结果操作数的精确度会降低。

随着逐渐增加门密度以及关联地降低数字电路成本,一些现代通用微处理器提供快速乘法运算,且原则上还能够用于典型在DSP上执行的应用。然而,由于目的寄存器的宽度,所以乘积和计算的精确度仍是有限的。

DSP是特殊类型微处理器。典型地,DSP包括扩展宽度的累加寄存器,以免损失单个乘积与乘乘积和计算精确度。在通用控制与计算应用中,DSP的延伸宽度寄存器只提供很小的效益。此外,由于不规则寄存器大小以及源操作数和目的地操作数大小不同,使编程模型或寄存器集复杂化,且限制通用控制与计算程序的DSP效率(代码密度与性能)。

因此,通用微处理器不可能非常适合DSP应用,并且DSP不可能非常适合通用控制与计算应用。对于需要混合需求的应用而言,具有高效率与性能的微处理器架构在两种情况下有效益。

然而,尽管存在精确度与寄存器大小的问题,通用微处理器可用于DSP算法。

对于适合多数通用微处理器的示例方法,源操作数大小可选择较小。通过使用小尺寸(比特宽度)的源操作数,可以避免乘积和计算结果溢出。例如,在视频或图形应用上,样本典型为8至12比特值,系数为12至16比特值。视频/图形的乘积和计算的长度n很小,在2至8的范围内。例如,32位寄存器的处理器可以正确计算此类型的乘积和。然而,如果使用32·32比特乘法,资源效率较低,因为视频/图形应用典型输出样本拥有8比特精确度,且对于中间计算而言,16至20比特就足够。

利用乘法-高位指令是一些微处理器提供的另一示例方式,微处理器具有附加乘法指令将乘积的高位存储在目的地寄存器。该构思也用于M AC(乘和累加)指令。通过该构思,操作数被视为最高有效位的小数点左边的定点数。原则上,这是可以用于DSP算法的方式。对于小的操作数而言,数据路径(乘法器、寄存器、算术逻辑单元(ALU))可以分成多个较小部分,以实现SIMD(单指令多数据)运算。然而,无论如何必须计算以获得最高有效位的乘积的最低有效位会被丢弃,且对乘积和计算的精确度没有贡献。

然而,另一方式基于乘法/MAC目的地操作数的两个串接的通用寄存器,其可以是许多DSP算法的典型解决方案。然而,可用的目的地寄存器数量减半。

在US 2002/0178203 A1中,示出了使用附加的专用累加寄存器,而不是使用通用寄存器。微处理器的编程模型可以包括一个或多个专用累加寄存器,供扩展精确度乘积和计算。为了利用扩展的精确度,可以提供特殊的乘法与MAC指令,将累加寄存器指定为目的地寄存器。在乘积和序列结束时,分离的指令将累加器内容(典型具有可选移位、四舍五入与裁切)转移至通用寄存器。然而,乘积和序列结束需额外的指令,以将累加器内容转移至通用寄存器。这会降低性能,尤其对短序列。处理器的编程模型会变得更复杂,且opcode映射(即是指定要执行的运算的机械语言指令部分的映射)需要用于指定累加器的乘法与MAC指令的额外空间。

发明内容

本发明的目的是实现通用微处理器上改善的精确度计算。

根据本发明,提供如所附权利要求描述的一种微处理器、一种用于提高微处理器精确度乘积和计算的方法、以及一种视频解码装置。从属权利要求涉及特定的具体实施例。参照以下描述的实施例通过示例示出本发明的这些及其他具体内容方面。

附图说明

图1示出了根据本发明的微处理器示意示例实施例。

图2示出了根据本发明的微处理器的乘法单元的示意示例实施例。

图3示出了根据本发明的视频解码装置的示意示例实施例。

图4示出了根据本发明的用于精确度增强的乘积和计算的方法的第一实施例的流程图的示意示例。

图5示出了根据本发明的用于精确度增强的乘积和计算的方法的第二实施例的流程图的示意示例。

具体实施方式

以下描述的本发明的实施例可以完全或至少部分使用本领域技术人员熟知的电子装置来实现。如果认为不需了解如下述基本的本发明构思,可省略细节。

参考图1,示出了根据本发明的微处理器的实施例的示例。为了简化描述与附图,本领域技术人员熟知的其他类似ALU、加载/储存单元等的单元不会示出。微处理器10包括:至少一个通用寄存器12,配置为储存和提供许多目的地比特给乘法单元14;控制单元18,适于提供至少一个乘法-高位(MULH)指令20与乘法高位和累加multiply-high-and-accumulate,MACH)指令22给乘法单元。乘法单元14还配置为至少接收第一和第二源操作数24、26,所述第一和第二操作数24、26各自具有关联的源比特数目,并且关联的源比特数目之和超过目的地比特数目;连接至寄存器扩展高速缓存28包括至少一个高速缓存入口,配置成储存及提供许多精确度增强比特;且适于将结果操作数的目的地部分存储在通用寄存器12、以及适于将结果操作数的精确度增强部分存储在高速缓存入口中。当接收乘法高位(MULH)指令20时,结果操作数会由乘法高位运算生;且当接收乘法高位和累加(MACH)指令22时,则由乘法高位和累加运算产生。

不使用单独的累加寄存器。因此,呈现的系统可以不包括必要的将单独的累加寄存器指定为目的地寄存器的专用乘法/MACH指令,以节省指令操作码空间并简化指令解码。

对于通用微处理器而言,ISA(Instruction  SetArchitecture,指令集架构)与编程模型保持简单和规则,因此使高级语言编译程序的架构更容易,这也帮助新的用户很快熟悉改善生产力的架构。提供的微控制器配置成隐藏额外功能的复杂性。ISA和编程模型可以不利于额外寄存器或指令来扩展。不需扩展精确度DSP功能的用户不需知道有关寄存器扩展高速缓存及其功能性的存在。

提供的微处理器可以是任何处理装置。优选地,该处理装置可以是通用微处理器,例如微处理器,包括用于源操作数和目的地操作数的多个相同大小的通用寄存器。

乘积和计算的指令序列可以从MULH指令开始,随后是一系列MACH指令。利于示出的构思,扩展的精确度可以针对乘积和指令序列来实现,乘积和指令序列从乘法高位指令开始,随后是全部使用相同目的地寄存器12的一系列MACH指令。乘积和序列结束处不需要额外的指令,以将结果转送给通用寄存器,因此改善性能。

结果操作数的目的地部分可以包括高位,高位写在指定的通用目的地寄存器12中。结果操作数的精确度增强部分可以为结果的低位,且可以存储在寄存器扩展高速缓存28的高速缓存入口。

乘法单元14可以经由至少一个输入接收至少第一和第二源操作数24、26。乘法单元14可以包括用于每个源操作数的专用输入,。然而,可以使用相同输入顺序地提供源操作数;或第一和第二源操作数可以是相同的源操作数。这也可以在所描述系统的范畴内,源操作数具有固定常数值或利用两个以上源操作数来执行乘法。

超过目的地比特数目的关联源比特数目之和大于目的地比特的数目。

在图1示出的示例实施例中,处理器部分包括寄存器堆30,具有例如32比特宽度的16个通用寄存器。提供的示例使用特定值,例如针对通用寄存器宽度与通用寄存器的数目。本发明不限于这些特定值。寄存器堆30的32比特读取端口34连接至乘法单元14,乘法单元14包括寄存器扩展高速缓存28。乘法单元接收两个32比特源操作数24、26。乘法单元14的32比特输出端口36连接至寄存器堆30的32比特写入端口38。控制单元18的4比特输出端口连接至乘法单元14,并且可以将MULH和MACH指令的结果操作数的4比特目的地标识符(32)发信号通知给乘法单元14。对于每个MULH/MACH运算,该4比特ID 32可以定义在寄存器堆30的16个通用寄存器12中,哪些寄存器可以用作目的地寄存器。控制单元18的第二输出可以连接至乘法单元14,并且可以发信号通知是否执行MULH或MACH指令20、22。

当MULH指令20在所示的示例中执行时,乘法单元14可以将结果操作数计算为源操作数24和26的64比特乘积。目的地部分(即64比特乘积的32高位比特)通过乘法单元14的输出端口36输出,且通过32比特写入端口(38),写入寄存器堆30的指定32比特目的地寄存器12。64比特乘积的32低位比特被写入到寄存器扩展高速缓存28的条目中。从控制单元18接收到的目的地寄存器的4比特ID可以例如存储在寄存器扩展高速缓存28中作为相同高速缓存条目的标签。

乘法高位和累加(MACH)运算包括使用中间结果操作数和先前存储在至少一个通用寄存器12中的先前目的地部分与先前存储在至少一个高速缓存条目的对应先前精确度增强部分的拼接之和来产生结果操作数,所示中间结果操作数是使用至少第一和第二源操作数24、26根据乘法高位(MULH)来产生的。当执行MACH运算时,可以通过将乘法的结果与目的地寄存器12的内容(包含高位(或目的地)比特)和高速缓存条目(包含低为(或精确度增强)比特)的拼接,来实现结果操作数的完全精确度。

当执行任何其他指令(除了控制与维护的指令以外)时,寄存器扩展高速缓存28的内容不能改变。

关联的源比特数目之和等于目的地比特与精确度增强比特数目之和,因此高速缓存条目被配置为存储所有精确度增强比特。在另一实施例中,关联的源比特数目之和超过目的地比特与精确度增强比特数目之和。较小宽度可以切割掉扩展的一部分最低有效位。这允许减少高速缓存条目大小,因此节省电路布局(die)面积,同时允许满足预先定义的目标精确度需求。

然而,较大宽度也在本发明的范畴内,且对于乘积和计算溢出的算法很有用。使用MULH与MACH指令在累加步骤前执行附加右移,如此可避免溢出。例如,利用8比特右移与8比特加算,多达256乘积总数的寄存器扩展的最低有效位不能够溢出,且以有关源操作数的最大可渐渐精确度来计算。

而且,至少两个源操作数可以具有与目的地寄存器不同的宽度。示例示出了源操作数的最大宽度等于目的地寄存器宽度的典型情况。两个源操作数可以从寄存器、从存储器接收、或可以为常数及具有任何宽度、小于或大于目的地寄存器。两个源操作数可以具有相同宽度或不同的宽度。

比特数目(即,在乘法器输出的示例中使用的比特宽度)是用于无符号或混合符号乘法,其中乘积的宽度是输入操作数宽度之和。本发明不限于该宽度关系。

微处理器10包括多个30通用寄存器12,每个寄存器具有寄存器标识符,而且其中控制单元18可以适合于提供目的地标识符32(与寄存器标识符之一匹配)给乘法单元14,该乘法单元适合于将目的地部分存储在由目的地标识符32标识的通用寄存器(12)。例如可以提供多个30通用寄存器作为寄存器堆。这允许选择可用的通用寄存器。通用寄存器也可以用于提供来源操作数给乘法单元。

而且,寄存器扩展高速缓存28可以包括多个高速缓存条目,每个高速缓存条目可以利用与寄存器标识符之一相对应的高速缓存条目标识符来标识(即高速缓存条目可以使用标识符做标签,例如目的地寄存器的寄存器编号),而且其中乘法单元14适合于使用目的地部分和由高速缓存条目提供的精确度增强部分来产生结果操作数,该高速缓存条目的高速缓存条目标识符与目的地标识符32匹配。

如果标识符相同或彼此唯一有关联,则高速缓存条目标识符可以被称为对应于特定寄存器标识符。

寄存器扩展高速缓存28可以包括每个通用寄存器12的高速缓存条目。然而,可以使用少数高速缓存条目,并且可以动态指定高速缓存条目标识符。这可以允许减少高速缓存条目的数量,因此可以将高速缓存减至最小,例如对应于同时执行预期乘积和计算的最大或平均。

当在所示示例中执行MACH指令时,乘法单元14从寄存器堆30的读取端口34接收指定的目的地寄存器的32比特值。乘法单元可以计算结果操作数,即,两个32比特源操作数24、26的64比特乘积。

通过输出信号32,控制单元18提供的4比特目的地ID可以与寄存器扩展高速缓存28的全部有效高速缓存条目的目的地ID相比较。

当执行MACH指令时,可以检查寄存器扩展高速缓存的命中(具有相同目的地寄存器ID的条目)。在高速缓存命中的情况下,乘法的完全精确度结果可以与目的地通用寄存器12(拥有高位比特)与高速缓存条目(拥有低位比特)的拼接相加。在所示示例中,在命中(与发现的目的地ID匹配)的情况,结果操作数(即64比特乘积)可以与来自匹配寄存器扩展高速缓存条目的32比特值(拼接的低位)和来自目的地寄存器的32比特值(拼接的高位)的拼接相加。结果的32低位比特然后存储在寄存器扩展高速缓存28的匹配条目中。匹配高速缓存条目的目的地ID可以不改变。结果的32高位比特可以通过乘法单元14的输出端口36输出,并且通过32比特宽的写入端口38写入寄存器堆30的32比特目的地寄存器中。

结果操作数的高位(即,累加结果)存储在对应的目的地寄存器中。低位存储在命中的高速缓存条目中。在未中(没有发现匹配ID)的情况下,目的地部分(即在提供的示例中,乘积的32高位)与来自目的地寄存器(12)的值相加,32比特结果通过乘法单元14的输出端口36输出,以及通过32比特宽的写入端口38写入寄存器堆30的32比特目的地寄存器12中。因此,在MACH运算的高速缓存未中情况下,结果操作数的目的地部分(即乘法结果的高位)添加至目的地寄存器,而丢弃低位。

如果乘积和序列不被其他乘法高位指令(在第一指令之后)中断,则单个高速缓存条目足够。具有多个条目的寄存器扩展高速缓存28可以实现多个乘积和序列的指令的交错。

乘法高位运算可以包括乘法高位和取反运算,并且乘法高位和累加运算(multiply-high-and-accumulate operation)可以包括乘法高位取反和累加运算(multiply-high-negate-and-accumulate operation)。使用取反项的两个变体可以例如与DSP算法有关,其中样本或常数可以与正和负符号一起使用。具有两个指令的变体可以节省额外的指令以获得具有相反符号的值。

如图1所示,乘法单元14可以包括寄存器扩展高速缓存28。这允许节省单独高速缓存与连接线的电路布局面积。然而,寄存器扩展高速缓存可以不包括在微处理器的乘法单元中,寄存器扩展高速缓存可以位于任何其他单元中或者也可以是独立单元。

而且,乘法高位运算和乘法高位和累加运算可以被实现为单指令多数据运算。许多微处理器可具有SIMD(SingleInstruction Multiple Data,单指令多数据)指令,将数据路径元素(例如寄存器、ALU、乘法器)分成多个小块。这可以增加视频与图形算法的性能,其中例如16比特分辨率系足够。对于此处理器架构而言,可以使用针对每个方向(向量组件)的扩展寄存器。具有32比特寄存器的处理器可以通过使用双向SIMD指令来将性能提高双倍。具有64比特寄存器的处理器可以通过使用四向SIMD指令来将性能提高四倍性能。

参考图2,示出了根据本发明的微处理器10的乘法单元(14示意性实施例。图2示出了具有单个条目寄存器扩展高速缓存28的乘法单元的示例实现方式。为了简化说明和附图,省略流水线寄存器,只示出了关于本发明的输入/输出信号和数据路径、以及乘法单元。类似图1提供的示例,特定值用于源操作数和目的地操作数宽度(32比特)及用于目的地ID的宽度(4比特处理作为源操作数和目的地操作数的16个通用寄存器)。然而,应明白,这些是示例值且可以任意改变。

所示示例乘法单元可以包括两个32比特输入信号40、42,作为乘法的源操作数。第三32比特输入信号44可以是运算前目的地寄存器的值,第三32比特输入信号44可以用作M AC H运算的源操作数。输入信号46可以是控制信号,输入信号46可以确定示例乘法单元执行MULH运算还是MACH运算。4比特输入信号48可以是目的地ID。所示的乘法单元可以产生32比特输出值(50)。

在所示示例中,乘法单元包括以下组件:32·32位乘法器52,计算64比特乘积66;64位加法器54;64位、2-输入多任务器56;32位、2-输入多任务器58;32位寄存器60,可以是扩展高速缓存寄存器;4位寄存器62;4位相同比较器64。在图2所示的示例中,示例乘法单元的组件按照以下列方式连接:乘法器52接收两个32比特输入值40、42。加法器54接收乘法器52的输出66与多任务器56的输出。加法器的比特位输出68分成32高位比特50和32低位比特70。32高位比特是乘法单元的输出信号50。64位、2-输入多任务器56是在第一输入上接收常数零值。第二64比特输入接收输入信号44作为32高位比特,且多任务器58的输出72作为32低位比特。32位寄存器60接收加法器54输出68的32低位比特70。4位寄存器62接收4比特输入信号48。32位、2-输入多任务器58接收寄存器60的32比特输出作为第一输入,且常数零值作为第二输入。4位相同比较器64接收4比特输入值48作为第一输入,且寄存器62的输出作为第二输入。比较器的输出连接至多任务器58的选择输入。控制输入信号46连接至多任务器(6的选择输入、寄存器62的使能输入、以及寄存器60的第一使能输入。

寄存器60、62仅是示例乘法单元的存储组件,且存储单个高速缓存条目的标签与数据部分。其他组件可以是可组合的。时钟信号(未示出)驱动时,两寄存器只在运算结束时采用新值,且只有如果两个寄存器的使能输入被断言。寄存器62具有由控制输入信号46驱动的单个使能输入。寄存器60在或(OR)配置具有两使能输入。如果控制输入46被断言、或如果比较器64的输出指出输入48与寄存器(62)的值相等,该寄存器会被启用。

提供的示例乘法单元可以执行至少三种类型的运算。三种类型运算中的任一运算是受到控制输入信号46和比较器电路64输出的控制。

当执行MULH指令时,类型1运算会执行。控制输入信号46选择多任务器56的常数零输入,且运算结束时使寄存器60、62更新。输入值44被忽略(不需要)。比较器64的输出被忽略(不需要)。加法器54将零与乘法器52的64比特输出66相加。加法器输出68等于乘法器52的输出66。输出50是输出68的32高位比特,等于乘法器输出66的32高位比特。运算结束时,加法器输出68的32低位比特70(等于乘法器输出66的32低位比特)会存储在寄存器60中。4比特目的地ID48存储在寄存器62中。

当执行MACH指令时,且如果4比特输入值48与4位寄存器62的值不同(即,在高速缓存未中的情况下),类型2运算会执行。比较器64的输出选择多任务器58的常数零输入,且与控制输入信号46共同禁用寄存器60的更新(两个使能输入被去断言)。控制输入信号46禁用寄存器62更新,及选择多任务器56的第二输入,其为多任务器58的输入信号44与输出72的拼接。加法器54将32比特输入信号44与乘法器输出66的32高位比特相加。结果68的32高位比特是输出值50。

在提供的示例中,当执行MACH指令,且如果4比特输入值48等于4位寄存器62的值时(即,在高速缓存命中的情况下),类型3运算会执行。比较器64的输出选择多任务器58的第一输入,且多任务器58的输出72变成寄存器60的值。比较器64的输出在运算结束时也启用寄存器60的更新。控制输入信号46禁用寄存器62的更新,及选择多任务器56的第二输入,其为输入信号44与多任务器58输出72(寄存器60的值)的拼接。加法器54将32比特输入信号44(拼接的高位比特)与寄存器60的32比特值的64比特拼接与乘法器的64比特输出66相加。结果68的32高位比特是输出值50。结果68的32低位比特70会在运算结束时存储在寄存器60中。寄存器62的内容保持不变。

不需要类似例如高速缓存条目之一有效标志或初始化程序的额外控制机构。

对于具有多个高速缓存条目的寄存器扩展高速缓存而言,除了扩展和ID寄存器之外,每个高速缓存条目需要至少一个有效标志。初始化程序在系统启动时可以使所有条目无效。当执行MULH指令时,各种不同机构知道如何选择被盖写的条目。

在实施例中,寄存器扩展高速缓存可能具有许多条目,且等于通用寄存器的数量。每个通用寄存器可以已经制定了特定的扩展寄存器;不需要存储目的地ID,并且类似在单个条目中的情况,不需有效标记。

提供的微处理器可已配置成执行离散余弦逆变换(InverseDiscrete Cosine Transform,IDCT)计算,例如8x8点IDCT。优选地,可以选择精确度增强比特数目,以允许具有根据IEEE-1180-1990兼容性测试精确度的离散余弦逆变换计算。

例如,由动态图像专家组(Moving Picture Experts Group)发行的一些视频编解码器(例如MPEG1、MPEG2和MPEG4-SP/ASP)采用供解码处理的8x8点IDCT计算。在软件视频解码器中,IDCT计算可以具有总处理器负载的高度共享。IEEE-1180-1990兼容性测试指定例如用于MPEG视频解码的8x8点IDCT计算结果的最小精确度。然而,通过16比特累加,不能计算IEEE-1180-1990符合IDCT输出。若要符合,32位寄存器的处理器不能使用SIMD指令,且具有64位寄存器的处理器必须使用双向SIMD指令。

如图3所示,根据本发明的视频解码装置74的示例实施例包括如上所述的微处理器10。如示例所示,根据本发明的微处理器(具有32位寄存器)可以使用双向SIMD指令,且64位的处理器可使用四向SIMD指令计算IEEE-1180-1990符合IDCT,而不需使用额外寄存器或更宽寄存器扩展的通用处理器的编程模型。

现在参考图4,示出了根据本发明用于精确度增强乘积和计算的方法的第一实施例的流程图的示例。所示意的方法允许实现描述微处理器的利益与特征,作为用于微处理器上增强精确度乘积和计算的方法的一部份。这也参考图5。

附图包括开始状态76和结束状态78。

该方法用于微处理器上增强精确度乘积和计算,该微处理器包括:至少一个通用寄存器,配置成存储和提供多个目的地比特给乘法单元;以及寄存器扩展高速缓存,包含至少一个高速缓存条目,配置成存储和提供多个精确度增强比特。该方法包括以下步骤:接收80乘法高位运算指令;接收82至少第一和第二源操作数,第一和第二源操作数各自具有关联的源比特,并且关联的源比特数目之和超过目的地比特数目;利用至少第一和第二源操作数,执行84乘法高位运算以产生结果操作数;将结果操作数的目的地部分存储86在通用寄存器中、以及将中间结果操作数的精确度增强部分存储86在高速缓存条目中;对于乘法高位和累加序列的每个分量而言:接收90乘法高位和累加指令;接收92至少第一和第二源操作数;使用新结果操作数与拼接之和,通过执行乘法高位和累加运算,来更新(94)所述结果操作数,所述新结果操作数是使用所述至少第一和第二源操作数根据乘法高位运算来产生的,所述拼接是先前存储在所述至少一个通用寄存器中的先前目的地部分与先前存储在所述至少一个高速缓存条目中的对应先前精确度增强部分的拼接;以及,将结果操作数的更新目的地部分存储96在通用寄存器中,以及将结果操作数的更新精确度增强部分存储96在高速缓存条目中。

应该明白,当处理乘积和的不同分量时,源操作数会有不同值。MACH指令的接收序列与前述MULH指令有关。可以针对MACH指令序列的所有分量来执行步骤90、92、94、及96。如果没有收到对应的MACH指令,这会结束。此外,应该明白,不需要有关乘积和序列长度的先验知识(即序列的分量数量),因此可避免例如引用专用的命令。

该方法还适用于微处理器,所述微处理器包括多个通用寄存器,多个通用寄存器各自具有寄存器标识符,且所述寄存器扩展高速缓存包括多个高速缓存条目,所述多个高速缓存条目各自使用与寄存器标识符之一相对应的高速缓存条目标识符来标识。该方法还包括以下步骤:提供与所述寄存器标识符之一匹配的目的地标识符给乘法单元;及利用目的地部分和高速缓存条目提供的精确度增强部分来产生结果操作数,该高速缓存条目具有与该目的地标识符匹配的高速缓存条目标识符。而且,在步骤86,将结果操作数的目的地部分存储在通用寄存器中、及将中间结果操作数的精确度增强部分存储在高速缓存条目中包括将目的地部分存储在由目的地标识符标识的通用寄存器中。

现在参考图5,示出了根据本发明的用于精确度增强乘积和计算的方法的第二实施例的流程图的示例。

附图包括开始状态100和结束状态102。

在所示的示例中,使用单个条目寄存器扩展高速缓存。在描述中,使用下列寄存器与变量名称:

S0 源操作数0

S1 源操作数1

OPT 运算类型,控制值定义执行MULH还是MACH运算

RA 寄存器阵列

RA[i] 寄存器阵列RA的第i寄存器

i 寄存器阵列RA的第i寄存器的索引

EXR 扩展寄存器

IDR ID寄存器

PD 源操作数S0和S1的乘积或取反乘积

PDL 乘积PD的低位比特

PDH 乘积PD的高位比特

CON EXR(低位比特)与RA[i](高位比特)的拼接

SUM PD与CON之和

SUML SUM的低位比特

SUMH SUM的高位比特

在步骤104,接收值S0、S1、i和OPT。在步骤106,计算源操作数S0和S1的乘积或取反乘积PD。在步骤108,检查OPT定义MULH运算还是MACH运算。在MULH的情况,过程继续至步骤110。在MACH的情况,过程继续至步骤112。

在步骤110,寄存器阵列RA的第i寄存器RA[i]的索引i存储在ID寄存器IDR中。乘积PD的低位比特PDL存储在扩展寄存器EXR中。乘积PD的高位比特PDH存储在寄存器阵列RA的第i寄存器RA[i]中。在此步骤后,过程在步骤102结束。

在步骤112,寄存器堆RA的第i寄存器RA[i]的值会被接收。在步骤114,检查接收的索引i是否等于ID寄存器IDR的值。在接收的索引i不同于寄存器IDR值的情况,程序会继续步骤116。在接收的索引i等于寄存器IDR值的情况,程序会继续步骤118。

在步骤116,将乘积PD的高位比特PDH与寄存器阵列RA的第i寄存器RA[i]的值相加。结果存储在相同的寄存器RA[i]中。在此步骤后,所示的过程在步骤102结束。

在步骤118,产生扩展寄存器EXR的值与寄存器阵列RA的第i寄存器RA[i]的拼接CON,其中EXR是拼接的低位比特,

RA[i]是拼接的高位比特。

在步骤120,计算乘积PD与拼接CON之和SUM。由于EXR与RA[i]的拼接,所以PDL与EXR的相加所产生的进位被传送至PDH与RA[i]之和。

在步骤122,SUM的低位比特SUML存储在扩展寄存器EXR中。SUM的高位比特存储在寄存器阵列RA的第i寄存器RA[i]中。在此步骤后,过程在步骤102结束。

此外,当在可编程装置上执行时,计算机程序产品可以包括用于执行如上述方法步骤的程序代码部分。计算机程序可以在至少暂时耦合至信息处理系统的计算机可读媒体上提供。

应该明白,在逻辑块之间的边界只是用于说明,且其他实施例可以功能性分布在不同的逻辑组块之间。本发明并未限于硬件实施的实体装置,但是也可以在利用程序代码操作、能够执行装置期望功能的任何可编程装置上实施。说明书与附图示意了示例实施例,当并不意味着将本发明局限于所示的示例。词语“包括”不能解释为排除出现在除了所附权利要求中提及的元件或不知以外的其他元件或步骤。

虽然在特定结构、装置及方法方面描述了本发明,但是本领域技术人员应了解,根据本文的描述,并不仅限于此示例,且本发明的整个范畴由所附权利要求来确定。

权利要求书(按照条约第19条的修改)

1.一种微处理器(10),包括:

乘法单元(14);

至少一个通用寄存器(12),配置成存储多个目的地比特并将所述多个目的地比特提供给所述乘法单元(14);

控制单元(18),适合于将至少乘法高位指令(20)以及乘法高位和累加指令(22)提供给所述乘法单元;

所述乘法单元还:

配置成接收至少第一和第二源操作数(24、26),所述第一和第二源操作数(24、26)各自具有关联的源比特数目,并且所述关联的源比特数目之和超过目的地比特数目;

连接至寄存器扩展高速缓存(28),所述扩展高速缓存(28)包括至少一个配置成存储和提供精确度增强比特的高速缓存条目;以及

适合于:

将结果操作数中包括高位比特的目的地部分存储在所述通用寄存器中;以及

将所述结果操作数中包括低位比特的精确度增强部分存储在所述高速缓存条目中;当接收所述乘法高位指令时,所述结果操作数由乘法高位运算产生,以及当接收所述乘法高位和累加运算指令时,所述结果操作数由乘法高位和累加运算产生,

其中,所述乘法高位和累加运算包括:使用中间结果操作数与拼接之和,来产生所述结果操作数,其中所述拼接是先前存储在所述至少一个通用寄存器中的先前目的地部分与先前存储在所述至少一个高速缓存条目中的对应的先前精确度增强部分的拼接,所述中间结果操作数是使用所述至少第一和第二源操作数根据乘法高位运算来产生的。

2.如权利要求1所述的微处理器,其中,所述关联源比特数目之和超过所述目的地比特数目与所述精确度增强比特数目之和。

3.如前述权利要求中任一项所述的微处理器,包括:多个通用寄存器(30),所述多个通用寄存器(30)各自具有寄存器标识符,其中所述控制单元适合于将与所述寄存器标识符之一匹配的目的地标识符(32)提供给所述乘法单元,所述乘法单元适合于将所述目的地部分存储在由所述目的地标识符标识的所述通用寄存器中。

4.如权利要求3所述的微处理器,其中所述寄存器扩展高速缓存包括多个所述高速缓存条目,所述多个高速缓存条目各自使用与所述寄存器标识符之一相对应的高速缓存条目标识符来标识,并且所述乘法单元适合于使用所述目的地部分、以及由具有与所述目的地标识符匹配的所述高速缓存条目标识符的高速缓存条目提供的精确度增强部分,来产生所述结果操作数。

5.如前述权利要求中任一项所述的微处理器,其中所述乘法高位运算包括:乘法高位和取反运算,并且所述乘法高位和累加运算包括乘法高位取反和累加运算。

6.如前述权利要求中任一项所述的微处理器,其中所述乘法单元包括所述寄存器扩展高速缓存。

7.如前述权利要求中任一项所述的微处理器,其中所述乘法高位运算和所述乘法高位和累加运算被实现为单指令多数据运算。

8.如前述权利要求中任一项所述的微处理器,配置执行离散余弦逆变换计算。

9.如权利要求8所述的微处理器,其中选择所述精确度增强比特的数目,以允许实现具有根据IEEE-1180-1990兼容性测试的精确度的离散余弦逆变换计算。

10.一种视频解码装置(74),包括:如前述权利要求中任一项所述的微处理器。

11.一种用于微处理器上增强精确度乘积和计算的方法,所述微处理器包括:乘法单元;至少一个通用寄存器,配置成存储目的地比特,并且将所述目的地比特提供给所述乘法单元;以及寄存器扩展高速缓存,包括至少一个配置成存储和提供精确度增强比特的高速缓存条目,所述方法包括以下步骤:

接收(80)乘法高位指令;

接收(82)至少第一和第二源操作数,所述第一和第二源操作数各自具有关联的源比特数目,并且所述关联的源比特数目之和超过目的地比特数目;

使用所述至少第一和第二源操作数,执行乘法高位运算,来产生(84)结果操作数;

将所述结果操作数中包括高位比特的目的地部分存储(86)在所述通用寄存器中,并且将所述结果操作数中包括低位比特的精确度增强部分存储在所述高速缓存条目中;

对于乘法高位和累加序列的每个分量而言:

接收(90)乘法高位和累加指令;

接收(92)所述至少第一和第二源操作数;

使用新结果操作数与拼接之和,通过执行乘法高位和累加运算,来更新(94)所述结果操作数,其中所述拼接是先前存储在所述至少一个通用寄存器中的先前目的地部分与先前存储在所述至少一个高速缓存条目中的对应的先前精确度增强部分的拼接,所述新结果操作数是使用所述至少第一和第二源操作数根据乘法高位运算来产生的;以及

将所述结果操作数的更新目的地部分存储(96)在所述通用寄存器中,以及将所述结果操作数的更新精确度增强部分存储(96)在所述高速缓存条目中。

12.如权利要求11所述的方法,其中所述微处理器包括多个通用寄存器,所述多个通用寄存器各自具有寄存器标识符,并且所述寄存器扩展高速缓存包括多个高速缓存条目,所述多个高速缓存条目各自使用与所述寄存器标识符之一相对应的高速缓存条目标识符来标识;所述方法包括以下步骤:

将与所述寄存器标识符之一匹配的目的地标识符提供给所述乘法单元;以及

使用所述目的地部分、以及由具有与所述目的地标识符匹配的所述高速缓存条目标识符的高速缓存条目提供的精确度增强部分,来产生所述结果操作数;

其中所述将所述结果操作数中包括高位比特的目的地部分存储在所述通用寄存器以及将所述结果操作数中包括低位比特的精确度增强部分存储在所述高速缓存条目中包括:将所述目的地部分存储在由所述目的地标识符标识的所述通用寄存器中。

13.一种计算机程序产品,包括:程序代码部分,用于当在可编程装置上执行时,执行如权利要求11或12所述的方法步骤。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号