CN101185058A - 用于在微处理器中实施高效乘法累加操作的设备及方法 - Google Patents

用于在微处理器中实施高效乘法累加操作的设备及方法 Download PDF

Info

Publication number
CN101185058A
CN101185058A CNA2006800188743A CN200680018874A CN101185058A CN 101185058 A CN101185058 A CN 101185058A CN A2006800188743 A CNA2006800188743 A CN A2006800188743A CN 200680018874 A CN200680018874 A CN 200680018874A CN 101185058 A CN101185058 A CN 101185058A
Authority
CN
China
Prior art keywords
instruction
cache
response
accumulator
definite
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.)
Pending
Application number
CNA2006800188743A
Other languages
English (en)
Inventor
厄于温·斯特伦
埃里克·克努森·雷诺
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.)
Atmel Corp
Original Assignee
Atmel 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 Atmel Corp filed Critical Atmel Corp
Publication of CN101185058A publication Critical patent/CN101185058A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/544Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation
    • 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/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/544Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation
    • G06F7/5443Sum of products
    • 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
    • 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/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/30138Extension of register space, e.g. register cache
    • 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/3824Operand accessing
    • 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/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3838Dependency mechanisms, e.g. register scoreboarding
    • 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/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3858Result writeback, i.e. updating the architectural state or memory
    • 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/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3858Result writeback, i.e. updating the architectural state or memory
    • G06F9/38585Result writeback, i.e. updating the architectural state or memory with result invalidation, e.g. nullification

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (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)
  • Computing Systems (AREA)
  • Advance Control (AREA)
  • Complex Calculations (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

一种用于在微处理器中实施乘法累加操作的设备,其包含:操作数输入寄存器,其用于接收将在加法器及乘法器上操作的数据,以便对所述数据实施操作;结果输出端口,其用于向所述微处理器呈现结果;多路复用器,其用于存储结果;累加器高速缓存,其用于将累加器值存储在所述设备的内部;及控制电路系统,其用于控制所述设备的操作。

Description

用于在微处理器中实施高效乘法累加操作的设备及方法
相关申请案交叉参照
本申请案主张优先于2005年6月1日申请的共同待决的美国专利申请案第11/142,920号,其如同本文已陈述一样以引用方式并入本文中。
技术领域
本发明涉及微处理器。更特定来说,本发明涉及用于在实施高效乘法累加操作的设备及方法。
背景技术
允许微处理器实施数字信号处理(DSP)正变得更加常见。在DSP中一种非常常见的操作是乘法累加(MAC)操作。MAC操作包含将两个操作数X及Y相乘,及将乘积添加到另一操作数(累加器A)。
在多数情况下,累加器A比X及Y的宽度更宽以抑制A溢出。由于在整个DSP算法中重复使用相同的累加器,因此针对累加器A产生更大的引用的地区性。
使所述MAC操作尽可能高效是DSP性能的关键,这是因为在内环路中频繁地使用所述操作。允许所述累加器是足够宽以抑制所述结果溢出也是非常有利的。这考虑到计算中增大的精确度。通常,在计算期间宽累加器仅为中间结果所需,这是因为最终结果可被四舍五入且提供到单个寄存器中。
现代微处理器体系结构更喜欢将操作数保持在寄存器堆中。常见情景是将操作数X、操作数Y及操作数A保持在寄存器堆中的三个独立寄存器中。因此,读取三个字长操作数X、Y及A将需要三次寄存器堆读取操作。
通常需要更大的精确度,从而需要操作数A驻留于所述寄存器堆中的两个或更多个级联寄存器中。此将导致每个操作必须要实施四次或更多次寄存器堆读取操作。根据硅面积此将需要四个或更多个昂贵的读取端口。另一选择为,可通过顺序地读出所述寄存器堆的读取操作来实施所述操作且因此降级所述性能。
所述操作的结果将需要被写回到所述寄存器堆,如果操作数A由两个或更多个级联寄存器构成,则从而需要两个或更多个写入端口。
发明内容
本发明旨在通过将频繁使用的寄存器保持在乘法累加单元中的本地高速缓存中来限制当实施乘法累加(MAC)操作时对寄存器堆的必需的并发读取及写入操作。本发明在最小速度降级的情况下节省硅面积及降低功率消耗。
专用累加器高速缓存被实施于所述MAC单元中。所述高速缓存可暂时保持一个或多个寄存器堆寄存器,这取决于所使用累加器的最大宽度及所述高速缓存的所需大小。
本发明旨在高速缓存监听,从而允许所述MAC设备自动地检测所述经高速缓存寄存器中是否发生数据危险。所检测的危险可能需要所述累加器高速缓存的失效或自动更新。在这种情况下,所述系统需要确保操作使用正确位置中的变量。数据危险的一个示例是:如果所述微处理器的其他部分尝试写入所述寄存器堆中的一寄存器暂时,所述寄存器在所述累加器高速缓存中。当发布使用不存在于所述累加器高速缓存中的累加器寄存器的MAC指令时,由控制电路明确地对所述累加器高速缓存进行载入。在这种情况下,在发布所述MAC指令之前载入所述累加器高速缓存。当发布MAC指令时,控制电路确定是否必须更新所述累加器高速缓存。如果所述高速缓存需要被更新,则所述控制电路通常将添加一个指令循环到所述MAC指令的执行并使用这个循环来将所述源寄存器复制到所述高速缓存。当(例如)在内部环路中发布后续MAC指令时,所述控制电路将时常确定所述高速缓存不需要被更新,借此节省一个执行循环。
提供专用累加器寄存器允许所述MAC设备内部地保持所述累加器值,且进一步允许当方便时将所述结果写回到所述寄存器堆,从而导致对所述寄存器堆的减少数量的写入操作,借此显著地减少功率消耗。
为提高所述MAC单元的精确度,所述MAC单元通常将具有比单个寄存器宽的累加器。常见配置是允许多次操作的结果是32位,及允许所述MAC中的累加操作的结果是40或更多个位。如果结果寄存器比单个寄存器宽,则可顺序地将所述结果写回到所述寄存器堆,从而可能利用处理器管线中的空闲循环。
附图说明
在下述详细说明中阐述了本发明的上述及其他优点及特征并显示于附图中:
图1图解根据本发明的实例性微处理器的方块图;
图2图解根据本发明的实例性MAC设备;
图3图解用于根据本发明的MAC设备的控制单元;
图4图解根据本发明的用于确定累加器高速缓存中是否将发生读取或写入危险的实例性方法;
图5图解根据本发明的用于实施空操作过程的实例性方法;
图6图解根据本发明的用于解码MAC指令的实例性方法;及
图7是根据本发明的用于实施MAC指令的实例性方法。
具体实施方式
本发明涉及一种用于实施高效乘法累加操作的设备及方法。下文是根据本发明的实例性实施例的说明。在适合的情况下,在整个说明中将相同的编号给予不同图示上所示的组件。
图1图解微处理器100的一部分,微处理器100实施用于实施根据本发明的实例性实施例的MAC指令的过程。所属技术领域的技术人员应认识到,为简洁起见可能已省略一些并非理解本发明所必要的组件。
微处理器100是管线式实施方案。所述管线被划分为以下五个管线阶段:指令取出(IF)、指令解码(ID)、执行(EX)、存储器载入/存储(MEM)及写回(WB)管线式实施方案通过暂时地存储管线寄存器中的逻辑操作的结果而帮助增加微处理器100的时钟频率。这缩短了将在一个时钟循环实施的操作的逻辑路径。
程序计数器105存储指向将由微处理器100执行的下一指令的地址的指针。程序计数器105将所述指针传输给指令存储器110及加法器115.指令存储器110检索由所述指针给予的地址中的指令。加法器115递增下一指令的地址的指针值。
指令存储器110将来自所述指针的地址的指令写入到所述IF与所述ID之间的管线寄存器125中以供执行。管线寄存器125中的指令被控制器/解码器130读取。控制器/解码器130处理所述指令并确定需要哪些寄存器堆寄存器来实施所述指令。这些寄存器的地址被发送到寄存器堆135.然后,这些寄存器被载入ID/EX寄存器140。然后,由MAC电路145及算术逻辑单元(ALU)150使用来自所述寄存器的数据以实施所述指令的正确逻辑操作。MAC电路145的输出被传输到多路复用器155.MAC电路145还在Acc_Cache_Status信号总线上输出信号到控制器/解码器130,所述信号指示累加器高速缓存中所存储的值的状态。Acc_Cache_Status信号总线包括用于MAC电路145中累加器高速缓存中的每一条目的线路。ALU 150输出传输到多路复用器155的结果及在计算所述结果期间所产生的任何旗标。
多路复用器155选择来自ALU 150及MAC 145的正确输出且将结果写入到EX/MEM管线寄存器165中的正确输出寄存器。然后,所述结果被存储在数据存储器170的正确地址中或被置于正确MEM/WB管线寄存器175中。
多路复用器180从管线寄存器175接收输出并从数据存储器170或执行管线阶段中的操作的结果选择将写回的数据。所有指令具有作为结果的目的地寄存器。这种目的地寄存器位于所述寄存器堆中或程序计数器105中。如果所述目的地在所述寄存器堆中,则将多路复用器180的输出写入到寄存器堆135中。如果所述目的地寄存器是程序计数器105,则将多路复用器180的输出路由到多路复用器120.多路复用器120从加法器115及多路复用器180接收输出。然后,多路复用器120选择用以作为到下一指令的下一地址插入到程序计数器105中的正确输出。
图2是根据本发明所配置的MAC电路145的概念方块图。所述MAC电路包含用于实施根据本发明的操作的乘法器205及加法器210.所述MAC设备包括两个操作数输入端口220及225及结果输出端口215,操作数输入端口220及225用于传送用于MAC或乘法操作的操作数。输入端口220及225还用于载入累加器高速缓存235.
MAC电路145还包括累加器高速缓存235。图2的累加器高速缓存235显示为具有两个累加器高速缓存235值A及B,然而应了解,累加器高速缓存235可包含任何数量的值。在优选实施例中,累加器高速缓存235可含有任何数量的值,其中所述值中的每一者包含等于所述操作的精确度的宽度。累加器高速缓存235优选地经配置来以下文将更详细揭示的方式将其内容供应到加法器210。
MAC电路145的加法器210、乘法器205及累加器高速缓存235的输出被耦合到多路复用器230。多路复用器230提供所需值及结果到结果输出端口215。可预期,所述MAC或乘法结果的任一部分或累加器高速缓存235的任一部分可被输出到结果输出端口215。结果输出端口215优选地经配置以传送将写回到寄存器堆的数据或转发所述结果到所述微处理器的其他部分。
在优选实施例中,乘法器205可经配置以产生比输入宽的乘积。举例而言,乘法器205可接收具有N及M位宽度的输入操作数,且可产生N+M位的乘积,这取决于所提供的最大累加器宽度。
图3图解用于控制根据本发明的MAC电路145的操作的实例性控制逻辑300。可预期,控制逻辑300可包含用于操作MAC电路系统145的常规硬件电路。控制逻辑300与微处理器100中的主控制器/解码器130通信。控制逻辑300从控制器/解码器130接收以下信号:指令信号、Instruction_Valid信号、Acc_Src_Reg信号、Rf_Wadr信号及Rf_Wen信号。
所述指令信号指示MAC电路145将执行的下一指令。由于通过分给数个逻辑单元的信号总线接收所述信号,所以控制逻辑300必须还接收Instruction_Valid信号,所述Instruction_Valid信号指示所述指令信号是有效的且将由MAC电路145执行。Acc_Src_Reg信号指示将被正在实施的MAC操作用作累加器源寄存器的寄存器。当MAC电路系统145将值从所述寄存器堆载入到累加器高速缓存235中时,Acc_Src_Reg信号还向MAC电路145指示将所述值放置在累加器高速缓存235中的何处。Rf_Wadr信号指示将要通过所述管线中其他操作写入到哪一寄存器堆寄存器。Rf_Wen信号指示Rf_Wadr信号中的寄存器地址是否是有效的。Rf_Wadr信号及Rf_Wen信号还可用于使累加器高速缓存235失效。
Acc_Cache_Status信号指示将哪些寄存器堆寄存器复制到累加器高速缓存235中。Acc_Cache_Status信号还指示累加器高速缓存235中的条目是否是有效的。然后,将所述信号用于将发送到控制逻辑的指令。
图4-7图解由控制逻辑240响应接收所述各个信号而执行的过程的实施例的流程图。图4图解Id_Control_Logic过程400,所述Id_Control_Logic过程400确定是否将发生写入后读取或写入后写入危险且如果将不发生危险则发布指令。图5图解No_Op过程500,对所述指令总线上所有不计划用于MAC电路145的指令执行所述No_Op过程500.图6图解Acc_Cache_Control_Logic过程600,所述Acc_Cache_Control_Logic过程600解码由d_Control_Logic过程400所产生的指令。图7图解实施MAC操作的过程700.下文将阐述所述过程的实例性实施例。
图4图解Id_Control_Logic过程400,所述Id_Control_Logic过程400检测是否将发生写入后读取或写入后写入危险,且如果将不发生危险则发布指令。所述危险发生在所述管线式逻辑中,因为从寄存器堆135的读取或写入到寄存器堆135的发生可导致无效数据被用在操作中。而Id_Control_Logic过程400保证对寄存器堆135的读取及写入操作以正确的次序发生。过程400通过确定累加器高速缓存235正在存储还未写入到寄存器堆135的结果而开始于步骤405中。这可以通过接收Acc_Cache_Pending_Wb信号而确定。在步骤410中,所述控制逻辑确定是否将要响应于确定所述高速缓存中存在还未写入到寄存器堆135的值而发布指令。如果没有指令将要发布,则过程400结束。
如果将要发布指令,则在步骤415中所述控制单元确定所述指令是否将导致写入后读取危险或写入后入写危险。如果检测到危险,则在步骤419中所述控制单元发布no_op信号,在步骤420中将所述指令保持在所述管线的解码阶段中且等待发布所述指令直至正确值到达所述寄存器堆中。然后,从步骤415重复过程400以确定是否已解决危险。
如果所述指令未正在读取确实导致危险的值,则在步骤425中所述控制单元确定正在解码的指令是否是MAC指令。如果所述指令不是MAC指令,则在步骤430向MAC电路145发布空操作指令。
如果MAC指令被解码,则在步骤440过程400确定累加器高速缓存235是否是有效的。通过断定用于Acc_Cache_Status信号总线中的每一者的Acc_Cache_Reg_Adr及Acc_Cache_Valid信号而确定累加器高速缓存235的有效性。如果累加器高速缓存235是无效的,则在步骤445中过程400保持所述MAC指令并将Load_Acc指令插入到所述管线中。在步骤445之后或如果累加器高速缓存235是有效的,则然后在步骤450中发布所述MAC指令且过程400结束。
图5图解空操作过程500,当接收将不由MAC电路145实施的指令时由控制逻辑300实施所述空操作过程500。过程500具有两个并行实施的独立操作。第一操作开始于步骤505,在步骤505中控制逻辑300确定是否设置了Acc_Cache_Pending_Wb信号。如果所述信号被设置,则累加器高速缓存235中存储有来自先前MAC操作的还未写回到所述寄存器堆的值。这发生在所述操作的结果比操作数寄存器宽的时候。如果Acc_Cache_Pending_Wb信号未被设置,则过程500结束。否则,如果所述信号被设置,则在步骤510实施写回到累加器高速缓存235中的未决寄存器。然后,在步骤515中控制逻辑300清除Acc_Cache_Pending_Wb信号且所述操作结束。
平行于步骤505,控制逻辑300中所含有的监听逻辑确定所述管线中是否存在将使高速缓存条目失效的数据。为实施这种操作,在步骤550中控制逻辑300确定Rf_Wadr信号是否等于累加器高速缓存235中的地址。如果所述信号不等于累加器高速缓存235中的地址,则所述过程的这一部分结束。否则,如果Rf_Wadr信号指示累加器高速缓存235中的地址,则在步骤555中控制单元300确定Rf_Wen信号是否为高电平。如果Rf_Wen信号为高电平,则由Rf_Wadr信号所指示的累加器高速缓存235中的所述地址中的值是无效的。因而,在步骤560中控制单元300使累加器高速缓存235条目失效且所述操作结束。
图6图解由控制逻辑300实施的Load_Acc过程600。过程600通过MAC电路145的输入端口220及225将值从寄存器堆135载入到累加器高速缓存235中。过程600通过在输入端口220及225上接收值而开始于步骤605中。在步骤610中,读取用于累加器高速缓存235中的将接收所述值的地址的Acc_Src_Reg信号。在步骤615中,将所述值写入到累加器高速缓存235中的所指示的地址。所属技术领域的技术人员应认识到,如果累加器高速缓存235宽于所述输入,则可将较低位置于一个端口上且将剩余位置于第二端口上。举例而言,如果所述输入端口是32位宽且累加器高速缓存235宽于32位,则可将较低的32位置于输入端口220上且将剩余的较高位置于输入端口225上。在这个示例中,累加器高速缓存235值是经符号扩展的两个互补数值符号且所述剩余的较高位必须经符号扩展。
在步骤625中,控制逻辑300接着清除用于在步骤615中被写入的累加器高速缓存235中的条目的Acc_Cache_Pending_Wb信号。然后,过程600通过控制逻辑300将用于所述累加器高速缓存235条目的Acc_Cache_Pending_Wb信号设置为是有效的而结束于步骤630中。
图7图解用于实施MAC指令的过程700。过程700通过MAC电路145实施所述指令而开始于步骤705。在步骤710中,将所述结果写入到累加器高速缓存235中的正确位置。在步骤715中,所述控制逻辑确定所述结果是否长于一个字。如果所述结果不长于一个字,则在步骤720中通过输出端口230将所述结果写入到寄存器堆135且过程700结束。如果所述结果长于一个字,则在步骤730中通过输出端口215将所述结果的一个字写入到寄存器堆135。然后在步骤735中,将Acc_Cache_Pending_Wb信号设置为高电平以等待将所述结果的剩余部分写入到寄存器堆135且过程700结束。
在其他实施例中,可预期,载入到累加器高速缓存235中的数据可包括关于所载入数据的附加信息。举例而言,所述数据可包括关于所述经高速缓存的寄存器的寄存器堆地址或更新对应于所述累加器高速缓存235条目的有效位的信息。
在一些情况下,可预期,可能没有空闲的累加器高速缓存235条目用于载入新值。在这种情况下,所述操作逻辑可经配置以采用替换策略,借此可收回现有条目以支持所述新条目。
在再一些实施例中,在寄存器值很可能用于未来指令中的情况下,所述控制逻辑可经配置以先行且推测性地将所述寄存器预载入累加器高速缓存235中。
上文阐述了一种用于在微处理器中实施高效乘法累加操作的设备及方法的实例性实施例。所属技术领域的技术人员应认识到,可在文字上或通过等效原则做出各种变化,这均侵犯了如以下权利要求书中所阐明的本发明。

Claims (20)

1.一种用于在微处理器中实施乘法累加操作的设备,其包含:
累加器高速缓存,其用于将累加器值存储在所述设备的内部;及
控制电路,其用于控制所述设备的操作。
2.如权利要求1所述的设备,其中所述控制电路经配置以:确定操作需要所述累加器高速缓存;确定指令将要发布;确定所述指令是否导致读取或写入危险;响应于确定所述指令不导致读取或写入危险而确定所述指令是否是乘法累加指令;确定所述累加器高速缓存是否是有效的;及响应于确定所述累加器高速缓存是有效的而发布所述指令。
3.如权利要求2所述的设备,其中所述控制电路经配置以响应于确定所述指令将导致危险而发布空操作信号且将所述指令保持一个循环。
4.如权利要求2所述的设备,其中所述控制电路经配置以响应于确定所述指令不是乘法累加指令而发布空操作信号。
5.如权利要求2所述的设备,其中所述控制电路经配置以保持所述指令且发布载入指令。
6.如权利要求2所述的设备,其中所述控制电路经配置以通过确定是否从所述累加器高速缓存写回到存储器及响应于确定写回是未决的而实施所述累加器高速缓存中未决寄存器到存储器的写回而实施空操作过程。
7.如权利要求2所述的设备,其中所述控制电路经配置以通过确定所述高速缓存中是否存储有来自先前操作的值及使所述值失效而实施操作。
8.如权利要求2所述的设备,其中所述控制电路经配置以通过接收输入、接收地址、在所述地址处将所述值写入所述累加器高速缓存中而将地址载入所述累加器高速缓存中;清除高速缓存写入未决信号;及设置指示所述累加器中的值是有效的信号。
9.如权利要求2所述的设备,其中所述控制电路进一步经配置以将所述指令的结果写入到所述累加器高速缓存中的正确地址。
10.如权利要求9所述的设备,其中所述控制电路进一步经配置以:确定所述结果是否长于一个字,响应于确定所述结果长于一个字而将所述结果的下部分写入到输出;及设置写回未决信号。
11.一种用于在微处理器中实施乘法累加操作的方法,其包含:
确定操作需要累加器高速缓存中的条目;
确定指令将要被发布;
确定所述指令是否导致读取或写入危险;
响应于确定所述指令不导致读取或写入危险而确定所述指令是否是乘法累加指令;
确定所述累加器高速缓存是否是有效的;及
响应于确定所述累加器是有效的而发布所述指令。
12.如权利要求11所述的方法,其进一步包含:
响应于确定所述指令将导致危险而发布空操作信号及将所述指令保持一个循环。
13.如权利要求11所述的方法,其进一步包含:
响应于确定所述指令不是乘法累加指令而发布空操作信号。
14.如权利要求11所述的方法,其进一步包含:
响应于确定累加器高速缓存值是无效的而保持所述指令;及
发布载入指令。
15.如权利要求11所述的方法,其进一步包含:
响应于空操作信号而实施空操作。
16.如权利要求15所述的方法,其中所述实施空操作的步骤包含:
确定是否从所述累加器高速缓存写回到存储器;及
响应于确定写回是未决的而实施所述累加器高速缓存中未决寄存器到存储器的写回。
17.如权利要求11所述的方法,其进一步包含:
确定所述高速缓存中是否存储有来自先前操作的值;及
使所述值失效。
18.如权利要求11所述的方法,其进一步包含:
接收输入;
接收地址;
在所述地址处将所述值写入所述累加器高速缓存中;
清除高速缓存写入未决信号;及
设置指示所述地址处的所述值是有效的信号。
19.如权利要求11所述的方法,其进一步包含:
将所述指令的结果写入到所述累加器高速缓存中的正确地址。
20.如权利要求19所述的方法,其进一步包含:
确定所述结果是否长于一个字;及
响应于确定所述结果长于一个字而将所述结果的下部分写入到输出,及设置写回未决信号。
CNA2006800188743A 2005-06-01 2006-05-26 用于在微处理器中实施高效乘法累加操作的设备及方法 Pending CN101185058A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/142,920 2005-06-01
US11/142,920 US8015229B2 (en) 2005-06-01 2005-06-01 Apparatus and method for performing efficient multiply-accumulate operations in microprocessors

Publications (1)

Publication Number Publication Date
CN101185058A true CN101185058A (zh) 2008-05-21

Family

ID=37482031

Family Applications (1)

Application Number Title Priority Date Filing Date
CNA2006800188743A Pending CN101185058A (zh) 2005-06-01 2006-05-26 用于在微处理器中实施高效乘法累加操作的设备及方法

Country Status (7)

Country Link
US (1) US8015229B2 (zh)
EP (1) EP1896937A2 (zh)
JP (1) JP2008542893A (zh)
KR (1) KR20080013982A (zh)
CN (1) CN101185058A (zh)
TW (1) TW200709042A (zh)
WO (1) WO2006129189A2 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104102470A (zh) * 2014-07-23 2014-10-15 中国电子科技集团公司第五十八研究所 可配置可扩展的流水线乘累加器

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8015229B2 (en) 2005-06-01 2011-09-06 Atmel Corporation Apparatus and method for performing efficient multiply-accumulate operations in microprocessors
US10802990B2 (en) * 2008-10-06 2020-10-13 International Business Machines Corporation Hardware based mandatory access control
JP6876220B2 (ja) * 2016-08-19 2021-05-26 ソニーグループ株式会社 積和演算装置
KR20220090379A (ko) 2020-12-22 2022-06-29 서울대학교산학협력단 프로세서 및 그 연산 처리 방법
US11635958B1 (en) 2022-01-03 2023-04-25 Globalfoundries U.S. Inc. Multi-port register file for partial-sum accumulation

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4648059A (en) 1984-09-13 1987-03-03 Motorola, Inc. N-bit magnitude comparator
JPS61214025A (ja) 1985-03-20 1986-09-22 Mitsubishi Electric Corp 差の絶対値比較回路
US4849921A (en) 1985-06-19 1989-07-18 Nec Corporation Arithmetic circuit for calculating the absolute value of the difference between a pair of input signals
JPH01204138A (ja) 1988-02-09 1989-08-16 Nec Corp 演算回路
JPH01213719A (ja) 1988-02-23 1989-08-28 Fuji Xerox Co Ltd パイプライン処理用データ組替装置
JPH038018A (ja) 1989-06-06 1991-01-16 Toshiba Corp 符号付き絶対値加減算器
JPH0484317A (ja) 1990-07-27 1992-03-17 Nec Corp 算術論理演算ユニット
US5128890A (en) * 1991-05-06 1992-07-07 Motorola, Inc. Apparatus for performing multiplications with reduced power and a method therefor
US5610850A (en) 1992-06-01 1997-03-11 Sharp Kabushiki Kaisha Absolute difference accumulator circuit
US5563813A (en) 1994-06-01 1996-10-08 Industrial Technology Research Institute Area/time-efficient motion estimation micro core
US5956747A (en) * 1994-12-15 1999-09-21 Sun Microsystems, Inc. Processor having a plurality of pipelines and a mechanism for maintaining coherency among register values in the pipelines
US5666300A (en) * 1994-12-22 1997-09-09 Motorola, Inc. Power reduction in a data processing system using pipeline registers and method therefor
US5835389A (en) 1996-04-22 1998-11-10 Samsung Electronics Company, Ltd. Calculating the absolute difference of two integer numbers in a single instruction cycle
JPH1091397A (ja) 1996-09-12 1998-04-10 Toshiba Corp 演算回路
US5793655A (en) 1996-10-23 1998-08-11 Zapex Technologies, Inc. Sum of the absolute values generator
JP3735425B2 (ja) 1996-11-29 2006-01-18 株式会社東芝 絶対値比較回路
US5991785A (en) * 1997-11-13 1999-11-23 Lucent Technologies Inc. Determining an extremum value and its index in an array using a dual-accumulation processor
US6473529B1 (en) 1999-11-03 2002-10-29 Neomagic Corp. Sum-of-absolute-difference calculator for motion estimation using inversion and carry compensation with full and half-adders
US20030115416A1 (en) 2001-12-19 2003-06-19 Nixon Walter T. Cache accumulator memory with an associativity mechanism
US7567892B2 (en) 2002-05-29 2009-07-28 Broadcom Corporation Method and system for realizing a logic model design
US7743238B2 (en) * 2003-05-09 2010-06-22 Arm Limited Accessing items of architectural state from a register cache in a data processing apparatus when performing branch prediction operations for an indirect branch instruction
US8015229B2 (en) 2005-06-01 2011-09-06 Atmel Corporation Apparatus and method for performing efficient multiply-accumulate operations in microprocessors

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104102470A (zh) * 2014-07-23 2014-10-15 中国电子科技集团公司第五十八研究所 可配置可扩展的流水线乘累加器

Also Published As

Publication number Publication date
WO2006129189A2 (en) 2006-12-07
EP1896937A2 (en) 2008-03-12
WO2006129189A3 (en) 2007-04-19
US8015229B2 (en) 2011-09-06
JP2008542893A (ja) 2008-11-27
TW200709042A (en) 2007-03-01
KR20080013982A (ko) 2008-02-13
US20060277241A1 (en) 2006-12-07

Similar Documents

Publication Publication Date Title
US9778911B2 (en) Reducing power consumption in a fused multiply-add (FMA) unit of a processor
US5598362A (en) Apparatus and method for performing both 24 bit and 16 bit arithmetic
US5185872A (en) System for executing different cycle instructions by selectively bypassing scoreboard register and canceling the execution of conditionally issued instruction if needed resources are busy
US7366881B2 (en) Method and apparatus for staggering execution of an instruction
US6564238B1 (en) Data processing apparatus and method for performing different word-length arithmetic operations
US5666300A (en) Power reduction in a data processing system using pipeline registers and method therefor
KR100493126B1 (ko) 데이터정밀도모드표시기를구비한다중파이프라인형마이크로프로세서
CN101185058A (zh) 用于在微处理器中实施高效乘法累加操作的设备及方法
US5913054A (en) Method and system for processing a multiple-register instruction that permit multiple data words to be written in a single processor cycle
US7730118B2 (en) Multiply-accumulate unit and method of operation
US20030005261A1 (en) Method and apparatus for attaching accelerator hardware containing internal state to a processing core
US6266763B1 (en) Physical rename register for efficiently storing floating point, integer, condition code, and multimedia values
KR20090009959A (ko) 마이크로프로세서 내에서 다수의 레지스터 유니트들로부터의 대응하는 하프워드 유니트들을 결합하기 위한 방법 및 시스템
EP0901067A2 (en) Method and system for executing operations on denormalised numbers
US7406587B1 (en) Method and system for renaming registers in a microprocessor
US6282558B1 (en) Data processing system and register file
WO2004072848A2 (en) Method and apparatus for hazard detection and management in a pipelined digital processor
KR20010053623A (ko) 명령들의 철회시 물리적인 레지스터들을 선택적으로자유롭게 사용하도록 구성된 프로세서
US7340591B1 (en) Providing parallel operand functions using register file and extra path storage
US5765017A (en) Method and system in a data processing system for efficient management of an indication of a status of each of multiple registers
US6260136B1 (en) Substitute register for use in a high speed data processor
US6484251B1 (en) Updating condition status register based on instruction specific modification information in set/clear pair upon instruction commit in out-of-order processor
US6104731A (en) Method and apparatus for data forwarding in a processor having a dual banked register set
US20100115239A1 (en) Variable instruction width digital signal processor
JP2010205088A (ja) ベクトル処理装置、及びベクトル処理方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C02 Deemed withdrawal of patent application after publication (patent law 2001)
WD01 Invention patent application deemed withdrawn after publication

Open date: 20080521