CN1508674A - 提供可变宽度的至少六路加法指令的方法及相应装置 - Google Patents

提供可变宽度的至少六路加法指令的方法及相应装置 Download PDF

Info

Publication number
CN1508674A
CN1508674A CNA2003101163972A CN200310116397A CN1508674A CN 1508674 A CN1508674 A CN 1508674A CN A2003101163972 A CNA2003101163972 A CN A2003101163972A CN 200310116397 A CN200310116397 A CN 200310116397A CN 1508674 A CN1508674 A CN 1508674A
Authority
CN
China
Prior art keywords
operand
instruction
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.)
Granted
Application number
CNA2003101163972A
Other languages
English (en)
Other versions
CN1320450C (zh
Inventor
G��S��л�ƶ�
G·S·谢菲尔
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of CN1508674A publication Critical patent/CN1508674A/zh
Application granted granted Critical
Publication of CN1320450C publication Critical patent/CN1320450C/zh
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • G06F9/30014Arithmetic instructions with variable precision
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30094Condition code generation, e.g. Carry, Zero flag
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/30101Special purpose registers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3867Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
    • G06F9/3875Pipelining 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)
  • Mathematical Physics (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (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中读出相关比特之后,使用CRR1 235中的一个内容的所有指令将有条件地移位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宽度的、6路加法指令进行解码,该加法指令包括所述多个操作数,并且每个所述多个操作数都具有多个低位及多个高位。
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的机器可读介质,其中所述加法操作部分发生在第一处理器周期内和部分发生在第二处理器周期内,并且所述输出及可选地存储操作发生在所述第二处理器周期期间。
CNB2003101163972A 2002-12-18 2003-11-18 提供可变宽度的至少六路加法指令的方法及相应装置 Expired - Fee Related CN1320450C (zh)

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 true CN1508674A (zh) 2004-06-30
CN1320450C 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 (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102103486A (zh) * 2009-12-22 2011-06-22 英特尔公司 用于将三个源操作数相加的加法指令
CN104011643A (zh) * 2011-12-22 2014-08-27 英特尔公司 打包数据重新安排控制索引产生处理器、方法、系统及指令
CN104011666A (zh) * 2011-12-22 2014-08-27 英特尔公司 具有独立进位链的加法指令
CN104756068A (zh) * 2012-12-26 2015-07-01 英特尔公司 合并相邻的聚集/分散操作
US10223111B2 (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
US10565283B2 (en) 2011-12-22 2020-02-18 Intel Corporation Processors, methods, systems, and instructions to generate sequences of consecutive integers in numerical order
CN111459546A (zh) * 2020-03-30 2020-07-28 芯来智融半导体科技(上海)有限公司 一种实现操作数位宽可变的装置及方法
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

Families Citing this family (6)

* Cited by examiner, † Cited by third party
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
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

Family Cites Families (7)

* Cited by examiner, † Cited by third party
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 캐논 가부시끼가이샤 프로세서와이의연산방법 및 데이타프로세서
CN1252587C (zh) * 1995-08-31 2006-04-19 英特尔公司 移位分组数据的方法、装置和处理数字音频信号的系统
US6122725A (en) * 1998-03-31 2000-09-19 Intel Corporation Executing partial-width packed data instructions
US6421765B1 (en) * 1999-06-30 2002-07-16 Intel Corporation Method and apparatus for selecting functional space in a low pin count memory device
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

Cited By (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102103486B (zh) * 2009-12-22 2016-03-30 英特尔公司 用于将三个源操作数相加的加法指令
CN102103486A (zh) * 2009-12-22 2011-06-22 英特尔公司 用于将三个源操作数相加的加法指令
CN105786446B (zh) * 2009-12-22 2018-04-13 英特尔公司 支持带三个源操作数的加法指令的处理器及含该指令的介质
CN105786446A (zh) * 2009-12-22 2016-07-20 英特尔公司 用于将三个源操作数相加的加法指令
US10223111B2 (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
US10565283B2 (en) 2011-12-22 2020-02-18 Intel Corporation Processors, methods, systems, and instructions to generate sequences of consecutive integers in numerical order
CN104011666B (zh) * 2011-12-22 2017-10-17 英特尔公司 具有独立进位链的加法指令
CN104011643B (zh) * 2011-12-22 2018-01-05 英特尔公司 打包数据重新安排控制索引产生处理器、方法、系统及指令
US9904547B2 (en) 2011-12-22 2018-02-27 Intel Corporation Packed data rearrangement control indexes generation processors, methods, systems and instructions
CN107861756A (zh) * 2011-12-22 2018-03-30 英特尔公司 具有独立进位链的加法指令
CN104011666A (zh) * 2011-12-22 2014-08-27 英特尔公司 具有独立进位链的加法指令
US11650820B2 (en) 2011-12-22 2023-05-16 Intel Corporation Processors, methods, systems, and instructions to generate sequences of integers in numerical order that differ by a constant stride
CN104011643A (zh) * 2011-12-22 2014-08-27 英特尔公司 打包数据重新安排控制索引产生处理器、方法、系统及指令
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
US11531542B2 (en) 2011-12-22 2022-12-20 Intel Corporation Addition instructions with independent carry chains
CN107861756B (zh) * 2011-12-22 2022-04-15 英特尔公司 具有独立进位链的加法指令
US11080045B2 (en) 2011-12-22 2021-08-03 Intel Corporation Addition instructions with independent carry chains
US10732970B2 (en) 2011-12-22 2020-08-04 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
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
US11003455B2 (en) 2012-12-26 2021-05-11 Intel Corporation Coalescing adjacent gather/scatter operations
CN104756068A (zh) * 2012-12-26 2015-07-01 英特尔公司 合并相邻的聚集/分散操作
US10275257B2 (en) 2012-12-26 2019-04-30 Intel Corporation Coalescing adjacent gather/scatter operations
US11599362B2 (en) 2012-12-26 2023-03-07 Intel Corporation Coalescing adjacent gather/scatter operations
CN104756068B (zh) * 2012-12-26 2018-08-17 英特尔公司 合并相邻的聚集/分散操作
CN111459546A (zh) * 2020-03-30 2020-07-28 芯来智融半导体科技(上海)有限公司 一种实现操作数位宽可变的装置及方法
CN111459546B (zh) * 2020-03-30 2023-04-18 芯来智融半导体科技(上海)有限公司 一种实现操作数位宽可变的装置及方法

Also Published As

Publication number Publication date
US20040123076A1 (en) 2004-06-24
US7293056B2 (en) 2007-11-06
CN1320450C (zh) 2007-06-06

Similar Documents

Publication Publication Date Title
CN112099852B (zh) 可变格式、可变稀疏矩阵乘法指令
JP6456867B2 (ja) 密結合ヘテロジニアスコンピューティングのためのハードウェアプロセッサ及び方法
JP6351682B2 (ja) 装置および方法
JP6163171B2 (ja) ソート加速プロセッサ、方法、システムおよび命令
US9772846B2 (en) Instruction and logic for processing text strings
US7380112B2 (en) Processor and compiler for decoding an instruction and executing the decoded instruction with conditional execution flags
CN1230735C (zh) 在一个周期内处理乘累加运算
CN1320450C (zh) 提供可变宽度的至少六路加法指令的方法及相应装置
CN1126034C (zh) 通过指令集结构转换的指令集模拟
US7761694B2 (en) Execution unit for performing shuffle and other operations
CN110968346A (zh) 用于执行用于快速元素解包到二维寄存器中的指令的系统
JP2005025718A (ja) Simd整数乗算上位丸めシフト
CN1142484C (zh) 微处理器向量处理方法
US20060206693A1 (en) Method and apparatus to execute an instruction with a semi-fast operation in a staggered ALU
CN1534462A (zh) 流水线处理一系列处理指令的方法和设备
KR20130064797A (ko) 범용 논리 연산 방법 및 장치
CN110909882A (zh) 用于执行水平铺块操作的系统和方法
US7523152B2 (en) Methods for supporting extended precision integer divide macroinstructions in a processor
CN1690951A (zh) 优化的处理器和指令对准
TWI733718B (zh) 用於獲得偶數和奇數資料元素的系統、裝置及方法
CN1828520A (zh) 给移位处理提供饱和的方法、设备和程序存储装置
US20030188143A1 (en) 2N- way MAX/MIN instructions using N-stage 2- way MAX/MIN blocks
US6442676B1 (en) Processor with different width functional units ignoring extra bits of bus wider than instruction width
US7047383B2 (en) Byte swap operation for a 64 bit operand
US7234044B1 (en) Processor registers having state information

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
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20070606

Termination date: 20191118