CN1320450C - 提供可变宽度的至少六路加法指令的方法及相应装置 - Google Patents
提供可变宽度的至少六路加法指令的方法及相应装置 Download PDFInfo
- Publication number
- CN1320450C CN1320450C CNB2003101163972A CN200310116397A CN1320450C CN 1320450 C CN1320450 C CN 1320450C CN B2003101163972 A CNB2003101163972 A CN B2003101163972A CN 200310116397 A CN200310116397 A CN 200310116397A CN 1320450 C CN1320450 C CN 1320450C
- Authority
- CN
- China
- Prior art keywords
- instruction
- operand
- carry
- summation
- processor
- 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.)
- Expired - Fee Related
Links
- 238000000034 method Methods 0.000 title claims abstract description 66
- 230000000052 comparative effect Effects 0.000 claims description 5
- 238000007792 addition Methods 0.000 description 29
- 101100386311 Arabidopsis thaliana DAPB3 gene Proteins 0.000 description 24
- 101150076189 CRR1 gene Proteins 0.000 description 24
- 101100534231 Xenopus laevis src-b gene Proteins 0.000 description 7
- 238000010586 diagram Methods 0.000 description 6
- 230000002093 peripheral effect Effects 0.000 description 6
- 238000006073 displacement reaction Methods 0.000 description 3
- 230000014509 gene expression Effects 0.000 description 3
- 230000009931 harmful effect Effects 0.000 description 2
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000008676 import Effects 0.000 description 1
- 238000012797 qualification Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/3001—Arithmetic instructions
- G06F9/30014—Arithmetic instructions with variable precision
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30036—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30094—Condition code generation, e.g. Carry, Zero flag
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/30101—Special purpose registers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3867—Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
- G06F9/3875—Pipelining a single stage, e.g. superpipelining
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Mathematical Physics (AREA)
- Advance Control (AREA)
Abstract
本发明涉及一种用于在处理器中提供可变宽度、至少六路加法指令的方法及系统。该方法包括将一指令解码成可变宽度、至少六路的加法指令,该可变宽度、至少六路的加法指令包括多个操作数。该方法进一步包括对多个操作数进行相加以获得多个总和。该方法进一步包括输出该多个总和并可选地对相加操作的进位结果进行存储。
Description
技术领域
本发明涉及处理器体系结构及指令集,尤其是涉及具有下述指令集的处理器体系结构,即该指令集具有可变宽度、至少六路的加法或累加指令。
背景技术
现代信息处理器通常是按照下述顺序来执行指令的:处理器读取一指令、处理器中的解码器对该指令进行解码、并且此后,处理器执行该指令。在较早的处理器中,处理器的时钟速度通常很慢,在单一时钟周期内即可读取、解码、并执行每个指令。然而,现代信息处理器通过使用较短的时钟周期(即较高的频率)来提高性能。这些较短的时钟周期使得指令需要多个可符合周期时间的较小子操作。象在流水线处理器和/或超标量处理器中那样,并行执行多个这样的子操作可进一步提高其性能。例如,尽管现在的处理器的周期时间是由多个因素决定的,但是周期时间通常是由在单一时钟周期内所必须执行的对逻辑门进行倒置的次数决定的。理想情况是,执行阶段决定周期时间。然而,实际上,情况不总是这样。由于希望以高频运行,因此执行阶段可以在不止一个周期上执行,因为它是流水线式的作业。在大量的工作负荷期间由于额外的周期所造成的等待时间的增加对处理器性能仅仅有很小的影响。许多系统的根本目标就是能够尽可能快而高效地执行尽可能多的指令,而不会对处理器的周期时间有不良影响。
发明内容
根据本发明的第一方面,提供一种用于在处理器中提供可变宽度、至少六路的加法指令的方法,该方法包括:
将指令解码成可变宽度、至少六路的加法指令,所述可变宽度、至少六路的加法指令包括多个操作数;
使用多个加法器对所述多个操作数进行相加以获得多个总和;
输出所述多个总和;
基于所述指令可选地存储所述相加操作的进位结果。
根据本发明的第二方面,提供一处理器,包括:
一解码器,用于将一指令解码成可变宽度、至少六路的加法指令,所述可变宽度、至少六路的加法指令包括多个操作数;以及
与所述解码器相耦合的一电路,所述电路响应所述已解码的可变宽度、至少六路加法指令以:
使用多个加法器对所述多个操作数进行相加以获得多个总和;
输出所述多个总和;
基于所述指令可选地对所述相加操作的进位结果进行存储。
根据本发明的第三方面,提供一计算机系统,所述计算机系统包括:
一处理器;以及
与该处理器相耦合的一机器可读介质,该机器可读介质中存储了一个或多个指令以执行下述方法,该方法包括:
将所述指令之一解码成可变宽度、至少六路的加法指令,该可变宽度、至少六路的加法指令包括多个操作数;
使用多个减法器在所述处理器中对多个操作数进行相加以获得多个总和;
输出所述多个总和;以及
基于所述可变宽度、至少六路的加法指令可选地对所述相加操作的进位结果进行存储。
根据本发明的第四方面,提供一种执行下述方法的电路,该方法包括:
将一指令解码成可变宽度、至少六路的加法指令,该可变宽度、至少六路的加法指令包括多个操作数;
使用多个加法器对所述多个操作数进行相加以获得多个总和;
输出所述多个总和;以及
基于所述指令可选地对所述相加操作的进位结果进行存储。
本发明能够尽可能快而高效地执行尽可能多的指令,而不会对处理器的周期时间有不良影响。
用于增加所执行的指令数目或等效指令数目的一种方法是创建单一指令,后者可执行其目前是通过利用多指令而实现的工作,而在执行阶段不会产生任何时间问题。这种类型的指令在执行多路相加的过程中尤其有效。
附图说明
图1给出了根据本发明一实施例,包含了架构指挥中心(architectural state)的计算机系统的方框图,该架构指挥中心包括一个或多个处理器、寄存器及存储器;
图2给出了根据本发明一实施例的图1的计算机的处理核心的示意性结构,该计算机具有一个超标量体系结构和/或超长指令字体系结构,该体系结构具有多个用于在2个连续执行阶段内执行多路加法和/或累加指令的3∶1加法器。
图3给出了根据本发明一实施例的一电路的详细方框图,该电路可在处理器中提供六路加法或累加指令;
图4给出了根据本发明一实施例的一电路的详细方框图,该电路可在处理器中提供七路(7路)加法或累加指令;
图5给出了根据本发明一实施例的一方法的最高级别的流程图,该方法可在处理器中提供可变宽度、至少六路(6路)的加法指令;
图6给出了根据本发明一实施例的一方法的详细流程图,该方法可在处理器中提供六路(6路)加法或累加指令;
图7给出了根据本发明一实施例的一方法的详细流程图,该方法可在处理器中提供七路(7路)加法或累加指令。
具体实施方式
根据本发明的一实施例,例如在每个流水线级中利用3∶1加法器可以实现在一个或者多个周期内执行的多路加法指令。每个3∶1加法器对三个值进行相加并输出单一值。指令按照完全的流水线方式(也就是说,每个周期具有一个(1)指令的吞吐量)工作并在两个(2)周期之后产生结果。下面对其定义进行了详细说明的专用寄存器仅仅说明了本发明的一个可能的实施例,但是不能将其认为是唯一可能的实施例。
根据本发明的实施例,多路加法指令所使用的基本硬件包括8位和16位加法器,这些加法器易于适合任一处理器的单一周期。如果其上运行有指令的处理器对诸如64位整数及浮点数这样的更高精确度的数据类型进行操作时,这尤其是正确的。例如,因为3∶1加法器只是比2∶1加法器略微慢一点,并且只涉及单个进位传送,因此可在两个(2)连续执行阶段内实现两个(2)3∶1的16位加法器,而不会影响处理器的周期时间。
此外,因为多个指令的功能被封装在单一指令中,在单一指令中实现整个操作则可显著节约流水线前端指令的供应要求,而不会在执行阶段期间造成任何时间问题。
多路加法指令对整个性能的影响是显著的。例如,根据本发明的一实施例,N宽的、六路(6路)加法或累加指令可以减少使用当前指令执行相同操作所需要的3至4倍的等待时间,这样利用N宽的、6路加法指令可有效地提高应用程序的速度。通常,N大于或等于2(N≥2)。类似地,根据本发明的一实施例,N宽的、七路(7路)加法指令也可减少使用当前指令执行相同操作所需要的3至4倍的等待时间,这样利用N宽的、多路加法/累加指令可有效地提高应用程序的速度。如同N宽的、6路加法或累加指令一样,对于N宽的、7路加法指令而言N≥2。特别是,N宽的、多路加法/累加指令可有效地提高很多类应用程序的执行速度,例如,用于调制解调、语音及视频的应用程序。
图1给出了根据本发明一实施例的计算机系统的方框图,该计算机系统包括一个架构指挥中心,该架构指挥中心包括一个或多个处理器、寄存器及存储器。在图1中,计算机系统100包括一个或多个与处理器总线120相耦合的处理器110(1)-110(n),而处理器总线120与系统逻辑130相耦合。一个或多个处理器110(1)-110(n)中的每一个均可以是N位的处理器并且可包括一个解码器(未示出)及一个或多个N位的寄存器(未示出)。系统逻辑130通过总线150与系统存储器140相耦合并且通过外围总线160与非易失性存储器170及一个或多个外围设备180(1)-180(m)相耦合。外围总线160可以是例如1998年12月18日出版的、修订版本为2.2的、PCI专业组(SIG)本地总线规范说明中的一个或多个外围部件互连(PCI)总线;工业标准结构(ISA)总线;1992年出版的、版本为3.12,1992的、BCPR业务公司EISA规范说明中的扩展ISA(EISA)总线;1998年9月23日出版的、版本为1.1的、USB规范说明中的通用串行总线(USB);以及类似的外围总线。非易失性存储器170可以是诸如只读存储器(ROM)或快速存储器这样的静态存储装置。外围设备180(1)-180(m)例如包括一键盘;一鼠标或其他指示装置;诸如硬盘驱动器、高密度磁盘(CD)驱动器、光盘、及数字化视频光盘(DVD)驱动器这样的大容量存储设备;显示器等等。
图2给出了根据本发明一实施例的图1的计算机的处理器110的示意性结构,该计算机具有一个超标量体系结构和/或超长指令字(VLIW)体系结构,该体系结构具有多个在两(2)个连续执行阶段中执行的3∶1加法器210、212、216、220、222、224及226,用于执行多路加法。应该清楚地理解如图2所示的示例性结构仅仅是对大的发明构思的说明,而非用来限制本发明可能的结构组合。例如,在可以具有两级的六路(6路)加法和/或累加指令中,在第一级中存在四个3∶1加法器210、212、214及216;在第二级中存在四个3∶1加法器220、222、224及226;以及至少一个(1)比较结果寄存器(CRR)。类似地,例如,在可能分两级的七路(7路)加法指令中在第一级中也存在四个3∶1加法器210、212、214及216;在第二级中也存在四个3∶1加法器220、222、224及226;以及至少一个CRR230、235。然而,执行每个6路和7路指令并不需要使用所有的加法器210、212、214、216、220、222、224及226和/或CRR 230及235。因此,尽管不要求执行6路指令或7路指令,所有加法器仅仅表示对本发明的一个实施例。
在图2中,处理器110还可包括若干公用寄存器,这些公用寄存器例如包括有CRR0 230和CRR1 235。CRR0 230和CRR1 235可以是移位寄存器,在一周期中所产生的所有运算标志均移位到其中。尽管在本发明的实施例中未使用CRR0 230,并且处理器110也只是具有单个CRR,但是为了一致还是给出了CRR0 230。如果在同一周期中将引起移位的不止一个指令发送到诸如CRR1 235这样的CRR寄存器中,那么CRR1 235移位的位数等于引起移位的指令数目。例如来自第二级的3∶1加法器的进位将被存储在CRR1 235中。
例如,在本发明中,在从CRR1 235中读出相关比特之后,使用CRR1235中的一个内容的所有指令将有条件地移位CRR1 235。反之,在更新CRR1 235之前,用于修改CRR1 235的所有指令将对CRR1 235的位进行移位。例如,在根据本发明的一实施例中,CRR1 235被用于收集由第二执行阶段所产生的标志符并将这些标志符提供给第二执行阶段。
6路和7路加法指令可根据指令在其内执行的发布时隙来更新CRR位。例如,在超标量模式中,对于指令数I而言,I∈{0,1},且在VLIW模式中I∈{0,1,2,3},其中仅考虑了VLIW和超标量加法器的发布时隙270及280。
为了减小将位导入CRR1 235中及从CRR1 235中导出所需的连通量,通常使用CRR1 235的指令将被封装到较低的发布时隙中。这意味着如果要发布N个这种指令,那么它们将占用发布时隙0至N-1。通常在诸如图2的四个(4)发布时隙270这样的VLIW模式中很容易实施这种限定。令人遗憾的是,在超标量模式中则很难实施,并且偶尔还会使处理器110出故障。然而,在图2中,在超标量模式中,如果仅有两个(2)发布时隙280,则比较容易提供所需的连通性,以使得把使用这些寄存器的单个指令发布到槽1而不是槽0。
可以联系具有超标量体系结构和/或VLIW体系结构的处理器110对6路和7路加法指令进行描述。例如,根据本发明的一实施例,假定数据类型是16位的,且假定处理核心具有32位数据路径和32位寄存器。然而,应该清楚知道的是该例子仅仅是示意性的,而决不是想要限定本发明的范围,因为数据类型和处理核心可以或是低于或是高于16位数据类型:32位处理核心的其他任意精度,例如可以是8位:32位,16位:64位或32位:128位。
根据本发明的实施例,所归纳出的6路加法和/或累加指令可实现对六个(6)输入值进行相加。例如,6路加法指令对六个(6)输入值进行相加,可选地对该结果与该指令的前一执行结果进行累加,且可选地更新CRR寄存器。尤其是,可将具有六个(6)输入值的6路加法和/或累加指令的一般表达结构表示为:
[CRR]destR=src0+src1+src2+src3+src4+src5
[CRR]destR+=src0+src1+src2+src3+src4+src5
[CRR][acc]destR=src0+src1+src2+src3+src4+src5
其中方括号([])表示执行该指令时并非必需的可选指令参数,CRR是用于控制CRR寄存器是否被用于对条件码进行累加的变量,并且“+=”操作符及“acc”可选变量表示是否对指令的结果进行累加。
将CRR变量设置为TRUE,这可使指令将条件码累加到至少一个CRR寄存器中,例如,根据本发明的实施例,将其累加到CRR1寄存器235中。
如果使用了+=操作符和/或将acc选项设置成TRUE,这可使指令将该结果与先前执行的结果累加在一起。
根据本发明的实施例,下述的六路(6)加法指令通常可在两个(2)处理器时钟周期内完全执行。然而,应该清楚知道的是,还可在单一时钟周期内以及在三个(3)或多个时钟周期内实现对该指令的执行。在下述例子中,所使用的语法包括诸如signal′及signal″这样的变量,signal′及signal″是将变量signal分别延迟了一个及两个周期的表达形式。
根据本发明的一个实施例,可将6路加法或累加指令的功能定义为下面的可在一个或多个时钟周期内执行的C语言类型伪代码例子:
第一阶段:
out00=src0.1+src1.1+src2.1
out01=src3.1+src4.1+src5.1
out10=src0.h+src1.h+src2.h
out11=src3.h+src4.h+src5.h
第二阶段:
If+=OR acc{ cOut0&sum0=out00′+out01′+sum0′ cout1&sum1=out10′+out11′+sum1′ } else{ cout0&sum0=out00′+out01′ cout1&sum1=out10′+out11′ } destR=(sum1,sum0) If CRR { CRR1[2i+1,2i]=cout1&cout0 Shift CRR1 right by 2//将CRR1右移两位 }
图3给出了根据本发明一个实施例的电路的详细方框图,该电路在处理器中提供N宽、六路(6路)加法或累加指令。在图3中,电路300包括多个指令操作数存储单元305、310、315、325及330;多个3∶1加法器335、340、345、350、355、360、365及370;以及目的寄存器380。第一指令操作数存储单元305包括与第一加法器335的第一输入端相耦合的第一源操作数低位存储单元307以及与第二加法器340的第一输入端相耦合的第一源操作数高位存储单元309。第二指令操作数存储单元310包括与第一加法器335的第二输入端相耦合的第二源操作数低位存储单元312以及与第二加法器340的第二输入端相耦合的第二源操作数高位存储单元314。第三指令操作数存储单元315包括与第一加法器335的第三输入端相耦合的第三源操作数低位存储单元317以及与第二加法器340的第三输入端相耦合的第三源操作数高位存储单元319。第四指令操作数存储单元320包括与第三加法器335的第一输入端相耦合的第四源操作数低位存储单元322以及与第四加法器350的第一输入端相耦合的第四源操作数高位存储单元324。第五指令操作数存储单元325包括与第三加法器345的第二输入端相耦合的第五源操作数低位存储单元327以及与第四加法器350的第二输入端相耦合的第五源操作数高位存储单元329。第六指令操作数存储单元330包括与第三加法器345的第三输入端相耦合的第六源操作数低位存储单元332以及与第四加法器350的第一输入端相耦合的第六源操作数高位存储单元334。
在图3中,根据本发明的一个实施例,第一加法器335的输出端与第六加法器360的第二输入端相耦合,第二加法器340的输出端与第八加法器370的第二输入端相耦合,第三加法器345的输出端与第六加法器360的第三输入端相耦合,第四加法器350的输出端与第八加法器370的第三输入端相耦合。第六加法器360的输出端与目的寄存器380的目的操作数低位存储单元382相耦合,并且第八加法器370的输出端与目的寄存器380的目的操作数高位存储单元384相耦合。目的操作数低位存储单元382的输出端与第六加法器360的第一输入端相耦合,并且目的操作数高位存储单元384的输出端与第八加法器370的第一输入端相耦合。如果在指令中指定了要进行结果的累加,那么使与加法器360及370相耦合的目的操作数低位存储单元382及目的操作数高位存储单元384的输出端正常工作。类似的,如果指令中没有指定要进行结果的累加,那么使382及384的输出端不能工作,结果是将空值或零值放置在第六加法器360和第八加法器370的第一输入线上。尽管根据本发明本实施例,未使用第五和第七加法器355和365,但是本发明其他实施例也可以使用第五和第七加法器355和365。
根据本发明的其他实施例,定义了双倍的六路、四倍的六路、八倍的六路及更多的六路加法或累加指令,并且一般在两个(2)处理器时钟周期内完全执行。然而,应该清楚知道的是也可在单个时钟周期及三个或多个时钟周期内实现对指令的执行。
根据本发明的一个实施例,与6路加法或累加指令相类似,7路横向加法指令还可实现对七个(7)输入值进行相加。然而,在7路横向加法指令中对其结果的累加并不是一个可选项。例如,7路横向加法指令可对7个输入值进行相加并可选地更新第一CRR。具体来说,可将具有7个输入值的7路横向加法指令的一般语法表示为:
[CRR]destR=SADD7(src0,src1,src2,src3,src4,src5,src6)
或
[CRR]destR=src0+src1+src2+src3+src4+src5+src6
其中方括号([])表示执行指令时并非必需的可选指令参数,CRR是用于控制CRR寄存器是否被用于对条件码进行累加的变量。
根据本发明的一个实施例,下述的7路横向加法指令一般可在两个(2)处理器时钟周期内完全执行。然而,应该清楚知道的是,7路横向加法指令还可在单个时钟周期内以及三个(3)或多个时钟周期内实现对该指令的执行。在以下的例子中,所使用的语法包括诸如signal′及signal″这样的变量,signal′及signal″是将变量signal分别延迟了一个及两个周期的表达形式。
根据本发明的一个实施例,可将7路横向加法指令的功能定义为下面的可在一个或多个时钟周期内执行的C语言类型伪代码例子:
第一阶段:
out0=src0.1+src0.h+src1.1
out1=src2.1+src2.h+src3.1
out2=src3.h+src4.1+src4.h
out3=src5.h+src6.1+src6.h
第二阶段:
cout0&sum0=out1′+src1′.h+out0′
cout1&sum1=out3′+src5′.1+out2′
destR=(sum1,sum0)
If CRR
{
CRR1[2i+1,2i]=cout1&cout0
Shift CRR1 right by 2//将CRR1右移2位
}
图4给出了根据本发明的一个实施例的电路的详细方框图,该电路在处理器中提供七路(7路)横向加法指令。在图4中,电路400包括多个指令操作数存储单元405、410、415、425、430、435,440及445,其中存储单元440和445用于临时锁存在第一级加法中未使用的源操作数;多个3∶1加法器450、455、460、465、470、475、480及485;以及目的寄存器490。第一指令操作数存储单元405包括与第一加法器450的第一输入端相耦合的第一源操作数低位存储单元407以及与第一加法器450的第二输入端相耦合的第一源操作数高位存储单元409。第二指令操作数存储单元410包括与第一加法器450的第三输入端相耦合的第二源操作数低位存储单元412以及与第一中间操作数存储单元440的高位存储单元444相耦合的第二源操作数高位存储单元414。根据本发明的一个实施例,未使用第一中间操作数存储单元440的低位存储单元442。第三指令操作数存储单元415包括与第二加法器455的第一输入端相耦合的第三源操作数低位存储单元417以及与第二加法器455的第二输入端相耦合的第三源操作数高位存储单元419。第四指令操作数存储单元420包括与第二加法器455的第三输入端相耦合的第四源操作数低位存储单元422以及与第三加法器460的第一输入端相耦合的第四源操作数高位存储单元424。第五指令操作数存储单元425包括与第三加法器460的第二输入端相耦合的第五源操作数低位存储单元427以及与第三加法器460的第三输入端相耦合的第五源操作数高位存储单元429。第六指令操作数存储单元430包括与第二中间操作数存储单元445的低位存储单元447相耦合的第六源操作数低位存储单元432以及与第四加法器465的第一输入端相耦合的第六源操作数高位存储单元434。根据本发明的一个实施例,未使用第二中间操作数存储单元445的高位存储单元449。第七指令操作数存储单元435包括与第四加法器465的第二输入端相耦合的第七源操作数低位存储单元437以及与第四加法器465的第三输入端相耦合的第七源操作数高位存储单元439。
在图4中,根据本发明的一个实施例,第一加法器450的输出端与第六加法器475的第一输入端相耦合,第一中间源操作数存储单元440的高位存储单元444的输出端与第六加法器475的第二输入端相耦合,第二加法器455的输出端与第六加法器475的第三输入端相耦合。类似的,在图4中,第三加法器460的输出端与第八加法器485的第一输入端相耦合,第二中间源操作数存储单元445的低位存储单元447的输出端与第八加法器485的第二输入端相耦合,并且第四加法器465的输出端与第八加法器485的第三输入端相耦合。第六加法器475的输出端与目的操作数低位存储单元492相耦合,并且第八加法器485的输出端与目的操作数高位存储单元494相耦合。尽管根据本发明的本实施例未使用第五和第七加法器470和480,但是本发明的其他实施例也可以使用第五和第七加法器470和480。
根据本发明的其他实施例,定义了双倍的7路、四倍的7路、八倍的7路及更多7路横向加法指令,并且一般在两个(2)处理器时钟周期内完全执行。然而,应该清楚知道的是也可在单个时钟周期及三个(3)或多个时钟周期内实现这些指令的执行。
图5给出了根据本发明的一个实施例的方法的最高级别的流程图,该方法可在处理器中提供可变宽度、至少六路(6路)的加法指令。在图5中,例如图2的处理器110中的解码器(未示出)将一指令解码为可变宽度、至少6路加法指令505。在图5中,利用例如图2中的加法器210、212、214、216、220、222、224及226对来自至少6路加法指令的多个操作数进行相加以获得多个总和510。多个总和包括至少第一总和与第二总和。在图5中,从例如图2中的加法器220、222、224及226中的两个加法器中输出515多个总和。在图5中,可将进位输出位可选择地存储在例如图2的CRR0 230或CRR1 235中。类似的,如果选择了该选项,进位输出位也可存储在诸如其他寄存器、超高速缓冲存储器、快速存储器等等的其它存储器中。
图6给出了根据本发明的一个实施例的一种方法的详细流程图,该方法可在处理器中提供可变宽度的六路加法指令和/或累加指令。在图6中,指令被解码为可变宽度的6路加法或累加指令605。利用例如图3中的第一、第二、第三及第四加法器335、340、345及350将自来可变宽度的6路加法或累加指令的多操作数,例如将三个为一组的多个源操作数相加610在一起以获得第一中间结果、第二中间结果、第三中间结果、及第四中间结果。在图6中,通过检查在已解码指令中所设置的“+=”运算符或者acc选项是否存在来确定是否对结果进行累加。如果要对结果进行累加615,则将第一和第二中间结果以及先前第一总和相加620以获得第一总和及第一进位输出位,并且将第三和第四中间结果以及先前的第二总和相加625以获得第二总和及第二进位输出位。如果没有对结果进行累加615,则将第一和第二中间结果相加在一起以获得第一总和及第一进位输出位630,并且将第三和第四中间结果相加在一起以获得第二总和及第二进位输出位635。输出640第一总和及第二总和。不管是否对结果进行了累加,通过检查在已解码指令中所设定的CRR选项是否存在来确定645是否更新进位输出位。如果确定645需要更新CRR,则将第一和第二进位输出位存储650在诸如CRR1 235这样的CRR中,该CRR被向右移位655两位(2),并且结束指令的执行。如果确定645不需更新CRR,则结束指令的执行。
图7给出了根据本发明实施例的一种方法的详细流程图,该方法可在处理器中提供可变宽度的七路(7路)横向加法指令。在图7中,指令被解码为可变宽度的7路横向加法指令705。利用例如图4中的第一、第二、第三及第四加法器450、455、460、及465将自来可变宽度的7路横向加法指令的多操作数,例如将三个为一组的多个源操作数相加710在一起以获得第一中间结果、第二中间结果、第三中间结果、及第四中间结果。在图7中,将来自多个操作数的第一及第二中间结果和被锁存在存储单元440中的第一未加操作数加在一起715以获得第一总和及第一进位输出位。相似地,将来自多个操作数的第三及第四中间结果和被锁存在存储单元445中的第二未加操作数加在一起715以获得第二总和及第二进位输出位720。不管是否对结果进行了累加,通过检查在已解码指令中所设定的CRR选项是否存在来确定730是否要更新进位输出位。如果确定730需要更新CRR,则将第一和第二进位输出位存储735在诸如CRR1 235这样的CRR中,该CRR被向右移位740两位(2),并且结束指令的执行。如果确定730不需更新CRR,则结束指令的执行。
根据本发明的一个实施例,用于在处理器中提供可变宽度、至少六路的加法指令的方法包括将指令解码成可变宽度、至少六路的加法指令,该可变宽度、至少六路的加法指令包括多个操作数;该方法进一步包括对多个操作数进行相加以获得多个总和,并输出该多个总和。该方法可选地包括存储来自相加操作的进位结果。
根据本发明的一个实施例,处理器包括一解码器以及与该解码器相耦合的一电路。该解码器将一指令解码成可变宽度、至少六路的加法指令,该可变宽度、至少六路的加法指令包括多个操作数。该电路响应已解码的可变宽度、至少六路的加法指令以便对多个操作数进行相加来获得多个总和;输出该多个总和;并可选地存储来自相加操作的进位结果。
根据本发明的一个实施例包括一个计算机系统,该计算机系统具有处理器和与该处理器相耦合的机器可读介质,该介质中存储了适于由该处理器所执行的一个或多个指令以实施一种方法。该方法包括将指令解码成可变宽度、至少六路的加法指令,该可变宽度、至少六路的加法指令包括多个操作数;该方法进一步包括对多个操作数进行相加以获得多个总和,并输出这多个总和;可选地存储相加操作的进位结果。
根据本发明的实施例,一种机器可读介质,其中存储了一个或者多个适于被处理器执行的指令以便实施一种方法,该方法包括将指令解码为可变宽度、至少6路的加法指令,该可变宽度、至少6路的加法指令包括多个操作数。该方法还包括将多个操作数相加以获得多个总和;输出该多个总和;以及可选地存储来自相加操作的进位结果。
虽然上述实施例主要涉及基于32位数据路径及32位寄存器的可累加的和非累加型的加法指令实施例,但是这并不是想要对本发明的范围或有效范围进行限定。实际上,上述方法可由不同大小的数据类型及处理核心实现,例如但并不限于8位、16位、32位和/或64位数据。
当然,应该明白的是虽然主要根据基于微处理器的和基于多个微处理器的个人计算机系统,对本发明进行了描述,但是本领域普通技术人员将可以知道,这里所讨论的本发明的原则可有利地用于涉及其他集成处理器芯片以及计算机系统的可选实施例中。因此,属于随后权利要求精神及范围内的所有这些实施方式均被本发明的原则所包含。
Claims (35)
1.一种用于在处理器中提供可变宽度、至少六路的加法指令的方法,该方法包括:
将指令解码成可变宽度、至少六路的加法指令,所述可变宽度、至少六路的加法指令包括多个操作数;
使用多个加法器对所述多个操作数进行相加以获得多个总和;
输出所述多个总和;
基于所述指令可选地存储所述相加操作的进位结果。
2.如权利要求1的方法,其中所述解码操作包括:对至少2宽度的、六路加法指令进行解码,该加法指令包括所述多个操作数,并且所述多个操作数的每个都具有多个低位及多个高位。
3.如权利要求2的方法,其中所述加法操作包括:
对第一操作数的多个低位、第二操作数的多个低位及第三操作数的多个低位进行相加以获得第一部分和;
对第三操作数的多个低位、第四操作数的多个低位及第五操作数的多个低位进行相加以获得第二部分和;
对第一操作数的多个高位、第二操作数的多个高位及第三操作数的多个高位进行相加以获得第三部分和;
对第三操作数的多个高位、第四操作数的多个高位及第六操作数的多个高位进行相加以获得第四部分和。
4.如权利要求3的方法,其中所述加法操作进一步包括:
对所述第一部分和及所述第二部分和进行相加以获得第一总和及第一进位输出值;以及
对所述第三部分和及所述第四部分和进行相加以获得第二总和及第二进位输出值。
5.如权利要求3的方法,其中所述加法操作进一步包括:
对所述第一部分和、所述第二部分和及先前周期的第一总和进行相加以获得第一总和及第一进位输出值;以及
对所述第三部分和、所述第四部分和及先前周期的第二总和进行相加以获得第二总和及第二进位输出值。
6.如权利要求5的方法,进一步包括:
如果所述至少2宽度的、六路加法指令请求,则对第一控制寄存器进行更新。
7.如权利要求6的方法,其中所述更新操作包括:
对所述第一进位输出值及所述第二进位输出值进行存储;以及
将所述第一控制寄存器右移两位。
8.如权利要求3的方法,进一步包括:
如果所述至少2宽度的、六路加法指令请求,则对第一控制寄存器进行更新。
9.如权利要求8的方法,其中所述更新操作包括:
对第一进位输出值及第二进位输出值进行存储;以及
将所述第一控制寄存器右移两位。
10.如权利要求2的方法,其中所述输出所述多个总和的操作包括:
将所述第一总和及第二总和存储在一寄存器中。
11.如权利要求10的方法,其中将所述第一总和及第二总和存储在所述寄存器中的操作包括:
将所述第一总和存储在所述寄存器的多个低位中;以及
将第二总和存储在所述寄存器的多个高位中。
12.如权利要求2的方法,其中所述可选地存储所述进位结果的操作包括:
将第一进位输出位及第二进位输出位存储器在一寄存器中;以及
将所述寄存器向右移两位。
13.如权利要求2的方法,其中所述加法操作部分发生在第一处理器周期内,且部分发生在第二处理器周期内,而所述存储及可选的存储操作发生在所述第二处理器周期期间。
14.如权利要求1的方法,其中所述解码操作包括:
对至少2宽度的、七路横向加法指令进行解码,该横向加法指令包括所述多个操作数,并且所述多个操作数的每个都具有多个低位和多个高位。
15.如权利要求14的方法,其中所述加法操作包括:
对第一操作数的多个低位、第一操作数的多个高位及第二操作数的多个低位进行相加以获得第一部分和;
对第三操作数的多个低位、第三操作数的多个高位及第四操作数的多个低位进行相加以获得第二部分和;
对第四操作数的多个高位、第五操作数的多个低位及第五操作数的多个高位进行相加以获得第三部分和;
对第六操作数的多个高位、第七操作数的多个低位及第七操作数的多个高位进行相加以获得第四部分和。
16.如权利要求15的方法,其中所述加法操作进一步包括:
对所述第一部分和、所述第二部分和及第二操作数的多个高位进行相加以获得第一总和及第一进位输出值;以及
对所述第三部分和、所述第四部分和及第六操作数的多个低位进行相加以获得第二总和及第二进位输出值。
17.如权利要求16的方法,进一步包括:
如果所述至少2宽度的、七路加法指令请求,则对第一控制寄存器进行更新。
18.如权利要求17的方法,其中所述更新操作包括:
对所述第一进位输出值及所述第二进位输出值进行存储;以及
将所述第一控制寄存器右移两位。
19.如权利要求15的方法,进一步包括:
如果所述至少2宽度的、七路加法指令进行请求,则对第一控制寄存器进行更新。
20.如权利要求19的方法,其中所述更新操作包括:
对所述第一进位输出值及所述第二进位输出值进行存储;以及
将所述第一控制寄存器右移两位。
21.如权利要求14的方法,其中所述输出所述多个总和的操作包括:
将所述第一总和及所述第二总和存储在一寄存器中。
22.如权利要求21的方法,其中将所述第一总和及第二总和存储在所述寄存器中的操作包括:
将第一总和存储在所述寄存器的多个低位中;以及
将第二总和存储在所述寄存器的多个高位中。
23.如权利要求14的方法,其中所述可选地存储所述比较结果的操作包括:
将第一进位输出位及第二进位输出位存储器在一寄存器中;以及
将所述寄存器右移两位。
24.一处理器,包括:
一解码器,用于将一指令解码成可变宽度、至少六路的加法指令,所述可变宽度、至少六路的加法指令包括多个操作数;以及
与所述解码器相耦合的一电路,所述电路响应所述已解码的可变宽度、至少六路加法指令以:
使用多个加法器对所述多个操作数进行相加以获得多个总和;
输出所述多个总和;
基于所述指令可选地对所述相加操作的进位结果进行存储。
25.如权利要求24的处理器,其中所述电路包括多个3∶1加法器。
26.如权利要求24的处理器,其中将所述多个3∶1加法器配置成在至少一个处理器周期内执行。
27.如权利要求25的处理器,其中所述电路进一步包括至少一个比较结果寄存器。
28.如权利要求25的处理器,其中将所述多个3∶1加法器被设置在两级中并将其配置成在两个处理器周期内执行。
29.如权利要求28的处理器,其中所述电路进一步包括用于每一处理器周期的比较结果寄存器。
30.一计算机系统,所述计算机系统包括:
一处理器;以及
与该处理器相耦合的一机器可读介质,该机器可读介质中存储了一个或多个指令以执行下述方法,该方法包括:
将所述指令之一解码成可变宽度、至少六路的加法指令,该可变宽度、至少六路的加法指令包括多个操作数;
使用多个减法器在所述处理器中对多个操作数进行相加以获得多个总和;
输出所述多个总和;以及
基于所述可变宽度、至少六路的加法指令可选地对所述相加操作的进位结果进行存储。
31.如权利要求30的计算机系统,其中所述处理器包括:
一解码器,用于将指令解码成可变宽度、至少六路的加法指令;以及
与所述解码器相耦合的一电路,所述电路执行可变宽度、至少六路的加法指令。
32.如权利要求31的计算机系统,其中所述电路包括:
多个3∶1的加法器;以及
至少一个比较结果寄存器。
33.一种执行下述方法的电路,该方法包括:
将一指令解码成可变宽度、至少六路的加法指令,该可变宽度、至少六路的加法指令包括多个操作数;
使用多个加法器对所述多个操作数进行相加以获得多个总和;
输出所述多个总和;以及
基于所述指令可选地对所述相加操作的进位结果进行存储。
34.如权利要求33的电路,其中所述解码操作包括下述操作之一:
将所述指令解码成至少2宽度的、六路加法指令;以及
将所述指令解码成至少2宽度的、七路加法指令。
35.如权利要求33的电路,其中所述加法操作部分发生在第一处理器周期内和部分发生在第二处理器周期内,并且所述输出及可选地存储操作发生在所述第二处理器周期期间。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/321,573 US7293056B2 (en) | 2002-12-18 | 2002-12-18 | Variable width, at least six-way addition/accumulation instructions |
US10/321573 | 2002-12-18 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1508674A CN1508674A (zh) | 2004-06-30 |
CN1320450C true CN1320450C (zh) | 2007-06-06 |
Family
ID=32592937
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2003101163972A Expired - Fee Related CN1320450C (zh) | 2002-12-18 | 2003-11-18 | 提供可变宽度的至少六路加法指令的方法及相应装置 |
Country Status (2)
Country | Link |
---|---|
US (1) | US7293056B2 (zh) |
CN (1) | CN1320450C (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI502490B (zh) * | 2011-12-22 | 2015-10-01 | Intel Corp | 用以處理加法指令之方法、及用以執行加法指令之裝置與系統 |
Families Citing this family (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2010045378A2 (en) * | 2008-10-14 | 2010-04-22 | The Research Foundation Of State University Of New York (Sunyrf) | Generating partial sums |
US8549264B2 (en) * | 2009-12-22 | 2013-10-01 | Intel Corporation | Add instructions to add three source operands |
US10223112B2 (en) | 2011-12-22 | 2019-03-05 | Intel Corporation | Processors, methods, systems, and instructions to generate sequences of integers in which integers in consecutive positions differ by a constant integer stride and where a smallest integer is offset from zero by an integer offset |
WO2013095555A1 (en) * | 2011-12-22 | 2013-06-27 | Intel Corporation | Packed data rearrangement control indexes generation processors, methods, systems, and instructions |
CN104011646B (zh) | 2011-12-22 | 2018-03-27 | 英特尔公司 | 用于产生按照数值顺序的连续整数的序列的处理器、方法、系统和指令 |
US10866807B2 (en) | 2011-12-22 | 2020-12-15 | Intel Corporation | Processors, methods, systems, and instructions to generate sequences of integers in numerical order that differ by a constant stride |
US9348601B2 (en) | 2012-12-26 | 2016-05-24 | Intel Corporation | Coalescing adjacent gather/scatter operations |
US20150052330A1 (en) * | 2013-08-14 | 2015-02-19 | Qualcomm Incorporated | Vector arithmetic reduction |
KR101893814B1 (ko) | 2014-03-26 | 2018-10-04 | 인텔 코포레이션 | 3 소스 피연산자 부동 소수점 가산 프로세서, 방법, 시스템, 및 명령어 |
JP6410637B2 (ja) * | 2015-02-25 | 2018-10-24 | ルネサスエレクトロニクス株式会社 | 浮動小数点加算器、半導体装置及び浮動小数点加算器の制御方法 |
JP6616608B2 (ja) * | 2015-07-16 | 2019-12-04 | ルネサスエレクトロニクス株式会社 | 半導体装置 |
US11114136B2 (en) * | 2018-08-21 | 2021-09-07 | Marcon International Inc | Circuit, system, and method for reading memory-based digital identification devices in parallel |
CN111459546B (zh) * | 2020-03-30 | 2023-04-18 | 芯来智融半导体科技(上海)有限公司 | 一种实现操作数位宽可变的装置及方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1200822A (zh) * | 1995-08-31 | 1998-12-02 | 英特尔公司 | 在分组数据上操作的指令集 |
US20020049880A1 (en) * | 1999-06-30 | 2002-04-25 | David I. Poisner | Method and apparatus for selecting a separate functional space in a low pin count memory device |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3675001A (en) * | 1970-12-10 | 1972-07-04 | Ibm | Fast adder for multi-number additions |
KR100359965B1 (ko) * | 1995-04-11 | 2003-03-15 | 캐논 가부시끼가이샤 | 프로세서와이의연산방법 및 데이타프로세서 |
US6122725A (en) * | 1998-03-31 | 2000-09-19 | Intel Corporation | Executing partial-width packed data instructions |
JP3753991B2 (ja) * | 2002-02-15 | 2006-03-08 | 株式会社ルネサステクノロジ | プロセッサ、該プロセッサにおける演算命令処理方法及び演算制御方法 |
US20030188134A1 (en) * | 2002-03-28 | 2003-10-02 | Intel Corporation | Combined addition/subtraction instruction with a flexible and dynamic source selection mechanism |
-
2002
- 2002-12-18 US US10/321,573 patent/US7293056B2/en not_active Expired - Fee Related
-
2003
- 2003-11-18 CN CNB2003101163972A patent/CN1320450C/zh not_active Expired - Fee Related
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1200822A (zh) * | 1995-08-31 | 1998-12-02 | 英特尔公司 | 在分组数据上操作的指令集 |
US20020049880A1 (en) * | 1999-06-30 | 2002-04-25 | David I. Poisner | Method and apparatus for selecting a separate functional space in a low pin count memory device |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI502490B (zh) * | 2011-12-22 | 2015-10-01 | Intel Corp | 用以處理加法指令之方法、及用以執行加法指令之裝置與系統 |
US11080045B2 (en) | 2011-12-22 | 2021-08-03 | Intel Corporation | Addition instructions with independent carry chains |
US11531542B2 (en) | 2011-12-22 | 2022-12-20 | Intel Corporation | Addition instructions with independent carry chains |
Also Published As
Publication number | Publication date |
---|---|
US20040123076A1 (en) | 2004-06-24 |
US7293056B2 (en) | 2007-11-06 |
CN1508674A (zh) | 2004-06-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112099852B (zh) | 可变格式、可变稀疏矩阵乘法指令 | |
CN1320450C (zh) | 提供可变宽度的至少六路加法指令的方法及相应装置 | |
JP6456867B2 (ja) | 密結合ヘテロジニアスコンピューティングのためのハードウェアプロセッサ及び方法 | |
US9495153B2 (en) | Methods, apparatus, and instructions for converting vector data | |
CN1129843C (zh) | 使用组合的数据处理器系统和指令系统 | |
KR101787819B1 (ko) | 정렬 가속화 프로세서들, 방법들, 시스템들 및 명령어들 | |
JP5736028B2 (ja) | 3個のソースオペランドを加算する加算命令 | |
CN1402843A (zh) | 在一个周期内处理乘累加运算 | |
CN1577257A (zh) | 具有取整和移位的单指令多数据整数高位乘法 | |
KR101524450B1 (ko) | 범용 논리 연산 방법 및 장치 | |
TWI556166B (zh) | 不讀取進位旗標地完成執行之旋轉指令 | |
CN1766834A (zh) | 双算术逻辑单元精简指令集8位微控制器 | |
US8707013B2 (en) | On-demand predicate registers | |
US7523152B2 (en) | Methods for supporting extended precision integer divide macroinstructions in a processor | |
US7047397B2 (en) | Method and apparatus to execute an instruction with a semi-fast operation in a staggered ALU | |
CN1690951A (zh) | 优化的处理器和指令对准 | |
CN1826582A (zh) | 数据存取程序指令编码 | |
TWI733718B (zh) | 用於獲得偶數和奇數資料元素的系統、裝置及方法 | |
CN1828520A (zh) | 给移位处理提供饱和的方法、设备和程序存储装置 | |
US7047383B2 (en) | Byte swap operation for a 64 bit operand | |
CN1203402C (zh) | 一种16位微处理器的系统结构 | |
CN109416635B (zh) | 针对使用多个架构寄存器的指令的架构寄存器替换 | |
CN1144124C (zh) | 程序执行方法及利用该方法的装置 | |
US7234044B1 (en) | Processor registers having state information | |
US6976049B2 (en) | Method and apparatus for implementing single/dual packed multi-way addition instructions having accumulation options |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20070606 Termination date: 20191118 |
|
CF01 | Termination of patent right due to non-payment of annual fee |