运用平凡算术运算的处理器的制作方法

文档序号:6477181阅读:178来源:国知局

专利名称::运用平凡算术运算的处理器的制作方法
技术领域
:本发明涉及处理器领域,尤其涉及算术运算的执行。
背景技术
:许多由处理器执行的计算由大量简单运算组成。结果,乘法运算可能需要相当多的时钟周期来完成。尽管此运算对于复杂计算而言是合理的,但对平凡运算不能这么说,例如,一个数与0、+1或-l相乘可以以简单得多的方式得到答案。在涉及稀疏矩阵的某些应用中,由于存在相当多的零,所执行的平凡运算的数目可能相当可观。稀疏矩阵中的零的数目可通过以诸如压缩行存储(CRS)格式的稀疏格式存储矩阵来减少或消除;然而,由于地址生成方面的开销,这样的存储格式在商用计算机系统上常常导致很差的性能。US5,262,973(Richardson等人)公开了一种减少其中运算是平凡运算的计算时间的方法。具体地,该方法同时执行至少两个运算。第一个运算是常规的复数算术运算,第二个和更多的运算是通过操作数检查机制执行的,操作数检查机制确定操作数中的一个或全部两个是否是平凡操作数的具体实例。如果操作数之一是平凡操作数的具体实例,则复数算术运算被停止,并且该检查机制根据检测到的平凡操作数迅速输出算术运算的结果。因此,避免了对平凡操作数执行复数算^算的需要。然而,该方法并未消除复数运算,而只是在确定了运算实际上是平凡运算的情况下停止复数运算。
发明内容第一实施例提供了一种处理器,其包括数据存储器,用于存储数据值;平凡操作数寄存器,平凡操作数寄存器用于为数据存储器中的每个数据值存储至少一个标记,该至少一个标记表示每个存储的数据值是否是平凡操作数,其中该处理器被配置成在执行指令时采用平凡操作数寄存器。该处理器可包括计算部件,计算部件在执行涉及来自数据存储器的至少一个数据值的运算时采用平凡操作数寄存器。适当地,计算部件可包括控制逻辑单元,控制逻辑单元用于检查平凡操作数寄存器和控制计算单元的操作。该处理器还可包拾故配置成执行比较以确定连至数据存储器的输入线上是否存在平凡操作数的比较器。数据存储器可以以寄存器堆提供。该处理器还可包括多个比较器,每个比较器确定寄存器堆的对应写端口处的数据是否包括平凡操作数。适当地,数据值是浮点值。数据存储器可包括32位、64位或128位寄存器。平凡操作数可包括O、-l或+l。有利地,平凡操作数唯一地是0值。适当地,所执行的指令包括浮点计算。可提供控制逻辑单元用于检查平凡操作数寄存器和控制浮点计算单元的操作。控制逻辑单元可被配置成在计算涉及平凡操作数的情况下绕开浮点计算单元并直接提供结果。该结果可通过为待存储该结果的寄存器设定平凡操作数寄存器标记来直接提供。任选地,所执行的指令包括数据存储指令。该处理器还可包括被配置成执行对应于向量或矩阵数据的多个非^^式之间的比较的比较器。在另一个实施例中,提供了一种对处理器中的第一数据寄存器执行运算的方法,该处理器具有表示第一数据寄存器中是否存在平凡IMt数的平凡操作数寄存器,该方法包括以下步骤在执行涉及所述第一数据寄存器的指令时采用平凡操作数寄存器中的标记。适当地,该方法包括以下初始步骤将数据写入第一数据寄存器;执行数据的比较以确定数据中是否存在平凡操作数;并响应于该比较而在平凡操作数寄存器内设定标记。写入数据和执行比较的步骤可基本上同时执行。第一数据寄存器可以是浮点数据寄存器。任选地,提供多个单独的数据寄存器,每个单独的数据寄存器在平凡操作数寄存器中具有相关联的标记。该多个单独的数据寄存器可以以寄存器堆提供。任选地,指令是计算,并且在控制该处理器中的计算单元的操作时采用平凡操作数寄存器。平凡操作数可包括0、-l或l。在一种布置中,平凡操作数唯一地是0值。该方法可包括在计算涉及平凡操作数的情况下绕开计算单元并直接提供结果。在这种情况下,该结果可通过为待存储该结果的寄存器设定平凡操作数寄存器标记来直接提供。任选地,所执行的指令包括数据存储指令。现在将参照附图描述本发明,在附图中图1^1#据本发明的示例实施例的处理器的示意图。图2《JJIL据本发明的示例实施例的方法的流程图。具体实施例方式本申请采用平凡操作数标记来标识数据存储器内包含的数据是否可认为是平凡操作数。取决于个体处理器架构,数据存储器可采取任何种类的存储单元的形式。尽管如此,为了便于说明,将关于寄存器和/或寄存器堆描述下面的例子。然而,并非意在4吏本申请局限于或限制于这些具体类型的数据存储器。标记的内容是通过将浮点值与已知的平凡值相比较、或者通过从存储器中加载先前比较的结果(它们连同源矩阵/向量数据一起存储在存储器中)来生成的。应认识到,在本申请的背景下,平凡操作fci不需要复杂的计算处理来确定结果的操作数,例如,其中操作数之一是0的两个32位浮点位操作数的乘法不需要完全32位乘法处理来确定结果是0。平凡操作数包括l、-l和0。等于2的整数倍的操作数也可认为是平凡操作数,因为至少在整数运算中,对于除法或乘法仅涉及简单的移位处理。应认识到,平凡操作数的数目越多,所需的实施复杂度就越高。因而,用于平凡操作数的标记优选地局限于标识操作数是否是l、-l或0。在某些应用中,涉及O的运算的数目是可观的。这种应用的一个例子是稀疏矩阵的领域,其可能在游戏物理学应用或搜索引擎中用到;在计算速度的潜在节省和功率需求的降低以;M目关联的减少发热的益处方面,为每个数据寄存器设置表示该数据寄存器中存储的值是否为0的单个标记的优点将是显著的。当重复使用源矩阵时,节省尤其大,例如,谷歌的搜索矩阵是nxn稀疏连接矩阵,其中n约等于30亿且每列有6至7个非零条目。谷歌的矩阵每周更新一次,并且每年365天每天24小时每秒钟被查询上千次。0)的示例实施方式。如图1所示,该示例实施方式提供了单精度32位数据寄存器应用,尽管如此,应认识到,图2所示的示例方法亦可应用于包括XMt度和更高精度的其它配置。示例处理器具有寄存器堆,寄存器堆中包含寄存器阵列。在所示的示例布置中,有四个32位寄存器。寄存器堆可以以具有多个端口的快速静态RAM来实现。适当地,寄存器堆被布置成具有专用的读和写端口而不是通过同一端口读和写。虽然采用寄存器堆是有利的,但也可不太有利地釆用多个单独的触发器、高速核心存储器、薄膜存储器和其它存储器技术来实现寄存器。如其它处理器那样,去往寄存器堆的数据可在计算之后从(浮点)计算部件加载,类似地,来自寄存器堆的数据可提供给计算部件用于计算。每个连至寄存器堆的写端口具有32根数据线。在单精度浮点数的情况下,第一位是符号位,1^是指数的8位和尾数的23位。必须比较31根数据线(无需比较符号位)以确定该寄存器的尾数的值是否为0。比较器的单个位输出被写入平凡操作数寄存器内的对应位。比较器的输出的写入由连至寄存器堆的寄存器的写入线来控制。尽管图2图示了数据的加载是先发生的,但应认识到比较和加载可同时发生。而且,在平凡操作数数据与数据本身一起存储在存储器中的情况下,可不需要比较,因为可直接加栽平凡操作数寄存器值。这种布置的一个优点是不需要额外的时钟周期来执行比较,因为比较是与寄存器堆写入并行地"免费"完成的。可采用平凡操作数寄存器的内容来控制浮点单元的操作以便节省功率和/或减少计算等待时间。在这种布置中,可提供控制逻辑来从与浮点运算的输入操作数用的寄存器对应的平凡操作数寄存器中读取多个位。然后,可根据下表生成控制浮点算符的执行所需的控制信号。除了在浮点数据的压缩/解压缩中使用它们以外,亦可使用MCB位图寄存器内容。<table>tableseeoriginaldocumentpage8</column></row><table><table>tableseeoriginaldocumentpage9</column></row><table>在实践中,所提出的方案可容易地扩展至任意数目的寄存器堆写端口和具有任意数目的条目的寄存器堆。此控制逻辑具有用简单逻辑函数代替功耗大的浮点运算的作用,该简单逻辑函数在单个周期内执行,而完全浮点运算的情况需要几个流水线周期。与常规处理器相比,这既增大了所提出的处理器的有效FLOPS吞吐量,也降低了功率消耗。在浮点运算的结果是零(O.O浮点值)的情况下,不需J^L行浮点运算,而可通过适当的逻辑将与寄存器堆中的目的寄存器对应的平凡操作数位设定为零,亦即,在一些布置中,无需将结果写入寄存器堆。在这样的布置中,可以使处理器适于当写入来自寄存器堆的数据时采用平凡操作数寄存器的内容。虽然本发明着眼于进行浮点计算,但平凡操作数寄存器亦可用于其它非计算目的,包括从寄存器堆和处理器通常到外部存储器的数据存储的加速、以及向量/矩阵非^式之间的迅速比较测试(其作为计算量大的对矩阵逐条目进行比较的前导)。这样的应用记栽于本申请的受让人所提交的共同未决的申请中。本说明书中使用的词语"包括"意在指定所述特征、整体、步骤或部件的存在,但不排除一个或多个其它特征、务本、步骤或部件或它们的组合的存在或添加。权利要求1.一种处理器,包括数据存储器,用于存储数据值;平凡操作数寄存器,所述平凡操作数寄存器用于为所述数据存储器中的每个数据值存储至少一个标记,所述至少一个标记表示每个存储的数据值是否是平凡操作数,其中所述处理器被配置成在执行指令时采用所述平凡操作数寄存器。2.根据权利要求1所述的处理器,其中所述处理器包括计算部件,所述计算部件在执行涉及来自所述数据存储器的至少一个数据值的运算时釆用所述平凡操作数寄存器。3.根据权利要求2所述的处理器,其中所述计算部件包括控制逻辑单元,所述控制逻辑单元用于检查所述平凡操作数寄存器和控制计算单元的操作。4.根据任意一项前述权利要求所述的处理器,其中所述处理器还包括被配置成执行比较以确定连至所述数据存储器的输入线上是否存在平凡操作数的比较器。5.根据权利要求1所述的处理器,其中所述数据存储器以寄存器堆提供。6.根据权利要求5所述的处理器,其中所述处理器还包括多个比较器,每个比较器确定所述寄存器堆的对应写端口处的数据是否包括平凡操作数。7.根据任意一项前述权利要求所述的处理器,其中所述数据值是浮点值。8.根据权利要求7所述的处理器,其中所述比较器对写入线执行比较以确定是否存在平凡操作数。9.根据权利要求8所述的处理器,其中所述数据存储器包括32位、64位或128位寄存器。10.根据任意一项前述权利要求所述的处理器,其中所述平凡操作数包括0、-l或l。11.根据权利要求1至10中的任意一项所述的处理器,其中所述平凡操作数唯一地是o值。12.根据权利要求l至ll中的任意一项所述的处理器,其中所执行的所述指令包括浮点计算。13.根据权利要求12所述的处理器,其中提供控制逻辑单元用于检查所述平凡操作数寄存器和控制浮点计算单元的IMt。14.根据权利要求13所述的处理器,其中所述控制逻辑单元被配置成在所述计算涉及平凡操作数的情况下绕开所述浮点计算单元并直接提供结果。15.根据权利要求14所述的处理器,其中所述结果是通过为待存储所述结果的寄存器设定所述平凡操作数寄存器标记来直接提供的。16.根据权利要求l至ll中的任意一项所述的处理器,其中所执行的所述指令包括lt据存储指令。17.根据任意一项前^利要求所述的处理器,其中所述处理器还包括被配置成执行对应于向量或矩阵数据的多个非零模式之间的比较的比较器。18.—种对处理器中的第一数据寄存器执行运算的方法,所述处理器具有表示所述第一数据寄存器中是否存在平凡操作数的平凡操作数寄存器,所述方法包括以下步骤在执行涉及所述第一数据寄存器的指令时采用所述平凡操作数寄存器中的标记。19.根据权利要求18所述的方法,还包括以下初始步骤a)将数据写入第一数据寄存器;b)执行所述数据的比较以确定所述数据中是否存在平凡操作数;以及c)响应于所述比较而在平凡操作数寄存器内设定所述标记。20.根据权利要求18所述的方法,其中所述写入所述数据和执行所述比较的步骤基本上同时执行。21.根据权利要求18或19所述的方法,其中所述第一数据寄存器是浮点数据寄存器。22.根据权利要求18至21中的任意一项所述的方法,其中提供多个单独的数据寄存器,每个单独的数据寄存器在所述平凡操作数寄存器中具有相关联的标记。23.根据权利要求22所述的方法,其中所述多个单独的数据寄存器以寄存器堆提供。24.根据权利要求17至23中的任意一项所述的方法,其中指令是计算,并且在控制所述处理器中的计算单元的IMt时采用所述平凡^Mt数寄存器。25.根据权利要求17至24中的任意一项所述的方法,其中所述平凡操作数包括0、-l或l。26.根据权利要求17至24中的任意一项所述的方法,其中所述平凡操作数唯一地是0值。27.根据权利要求24中的任意一项所述的方法,其中所述方法包括在所述计算涉及平凡操作数的情况下绕开计算单元并直接提供结果。28.根据权利要求27所述的方法,其中所述结果是通过为待存储所述结果的寄存器设定所述平凡操作数寄存器标记来直接提供的。29.根据权利要求17所述的方法,其中所执行的所述指令包括数据存储指令。全文摘要本申请涉及处理器领域,尤其涉及算术运算的执行。许多由处理器执行的计算由大量简单运算组成。结果,乘法运算可能需要相当多的时钟周期来完成。本申请提供了一种具有平凡操作数寄存器的处理器,其中在执行存储在数据存储器中的数据值的算术运算或存储运算时,使用平凡操作数寄存器。文档编号G06F9/302GK101689105SQ200880016140公开日2010年3月31日申请日期2008年3月16日优先权日2007年3月15日发明者大卫·莫洛尼申请人:线性代数技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1