CN106406812A - 微处理器和微处理器内的执行融合复合算术运算的方法 - Google Patents
微处理器和微处理器内的执行融合复合算术运算的方法 Download PDFInfo
- Publication number
- CN106406812A CN106406812A CN201610882680.3A CN201610882680A CN106406812A CN 106406812 A CN106406812 A CN 106406812A CN 201610882680 A CN201610882680 A CN 201610882680A CN 106406812 A CN106406812 A CN 106406812A
- Authority
- CN
- China
- Prior art keywords
- execution unit
- microcommand
- instruction execution
- arithmetical operation
- instruction
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 35
- 239000002131 composite material Substances 0.000 title abstract 6
- 150000001875 compounds Chemical class 0.000 claims description 85
- 230000004927 fusion Effects 0.000 claims description 46
- 238000005194 fractionation Methods 0.000 claims description 37
- 230000008901 benefit Effects 0.000 claims description 18
- 238000007667 floating Methods 0.000 claims description 10
- 238000013519 translation Methods 0.000 claims description 9
- 238000004364 calculation method Methods 0.000 claims description 5
- 238000003860 storage Methods 0.000 claims description 5
- 230000005540 biological transmission Effects 0.000 claims description 4
- 238000012546 transfer Methods 0.000 claims description 3
- 230000005611 electricity Effects 0.000 claims 1
- 101100075995 Schizosaccharomyces pombe (strain 972 / ATCC 24843) fma2 gene Proteins 0.000 description 25
- 101100075966 Schizosaccharomyces pombe (strain 972 / ATCC 24843) fma1 gene Proteins 0.000 description 23
- 238000007792 addition Methods 0.000 description 6
- 230000008569 process Effects 0.000 description 6
- 230000006870 function Effects 0.000 description 5
- 235000013399 edible fruits Nutrition 0.000 description 4
- 230000004048 modification Effects 0.000 description 4
- 238000012986 modification Methods 0.000 description 4
- 230000000717 retained effect Effects 0.000 description 4
- 230000000875 corresponding effect Effects 0.000 description 3
- 238000013461 design Methods 0.000 description 3
- 238000010586 diagram Methods 0.000 description 3
- 238000006243 chemical reaction Methods 0.000 description 2
- 230000001186 cumulative effect Effects 0.000 description 2
- 230000003111 delayed effect Effects 0.000 description 2
- 238000002156 mixing Methods 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 230000008707 rearrangement Effects 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 230000009471 action Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 230000002596 correlated effect Effects 0.000 description 1
- 230000007812 deficiency Effects 0.000 description 1
- 238000000151 deposition Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 230000004069 differentiation Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 239000000155 melt Substances 0.000 description 1
- 238000010258 microfractionation Methods 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- XLYOFNOQVPJJNP-UHFFFAOYSA-N water Substances O XLYOFNOQVPJJNP-UHFFFAOYSA-N 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods 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/544—Methods 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/5443—Sum of products
-
- 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
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods 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/57—Arithmetic logic units [ALU], i.e. arrangements or devices for performing two or more of the operations covered by groups G06F7/483 – G06F7/556 or for performing logical operations
- G06F7/575—Basic arithmetic logic units, i.e. devices selectable to perform either addition, subtraction or one of several logical operations, using, at least partially, the same circuitry
-
- 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/22—Microcontrol or microprogram arrangements
- G06F9/223—Execution means for microinstructions irrespective of the microinstruction function, e.g. decoding of microinstructions and nanoinstructions; timing of microinstructions; programmable logic arrays; delays and fan-out problems
-
- 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/22—Microcontrol or microprogram arrangements
- G06F9/28—Enhancement of operational speed, e.g. by using several microcontrol devices operating in parallel
-
- 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
-
- 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/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
-
- 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
-
- 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/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
- G06F9/3887—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple data lanes [SIMD]
-
- 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/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
- G06F9/3893—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator
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)
Abstract
本发明涉及微处理器和微处理器内的执行融合复合算术运算的方法。微处理器是针对融合复合算术运算的拆分执行的非链式模式和链式模式所配置的。在拆分执行的这两个模式中,第一指令执行单元仅执行融合复合算术运算的第一部分并且产生其中间结果,并且第二指令执行单元接收该中间结果并执行融合复合算术运算的第二部分以产生最终结果。在非链式模式中,通过向第一指令执行单元和第二指令执行单元分派单独的拆分执行微指令来实现执行。在链式模式中,通过向第一指令执行单元分派单个拆分执行微指令、并且向第二指令执行单元发送链式控制信号或信号组从而使该第二指令执行单元在无需指令的情况下执行融合复合算术运算的第二部分,来实现执行。
Description
相关申请的交叉引用
本申请要求2015年10月2日提交的美国临时专利申请62/236,529的优先权,其通过引用包含于此。
本申请涉及2015年6月24日提交的标题为“Non-atomic Split-Path FusedMultiply-Accumulate”的美国专利申请14/748,817(“’817申请”),其中该’817申请要求2014年7月2日提交的标题为“Non-Atomic Split-Path Fused Multiply-Accumulate withRounding cache”的美国临时专利申请62/020,246和2015年6月10日提交的标题为“Non-Atomic Temporally-Split Fused Multiply-Accumulate Apparatus and OperationUsing a Calculation Control Indicator Cache and Providing a Split-PathHeuristic for Performing a Fused FMAOperation and Generating a StandardFormat Intermediate Result”的美国临时专利申请62/173,808的优先权,上述这些申请全部通过引用包含于此。
本申请还涉及并且通过引用而包含2015年6月24日提交的以下申请:标题为“Temporally Split Fused Multiply-Accumulate Operation”的申请14/748,870;标题为“Calculation Control Indicator Cache”的申请14/748,924;标题为“CalculationControl Indicator Cache”的申请14/748,956;标题为“Standard Format IntermediateResult”的申请14/749,002;标题为“Split-Path Heuristic for Performing a FusedFMA Operation”的申请14/749,050;以及标题为“Subdivision of a fused compoundarithmetic operation”的申请14/749,088。
技术领域
本申请涉及用于进行算术运算、并且更特别为融合FMA运算的微处理器设计。
背景技术
’817申请描述了包括指令执行单元对(例如,乘法器和加法器)的微处理器,其中这些指令执行单元对被配置为进行融合复合算术运算、并且更具体为针对融合浮点乘累加运算的第一子运算和第二子运算。‘817申请还描述有条件地将C累加到A与B的部分乘积的乘法器,从而生成未舍入的中间结果,然后该中间结果被存储和/或转发至完成该计算的加法器,从而产生最终的舍入结果。为了进行FMA运算,微处理器发出两个微指令,即向着乘法器的FMA1微指令和向着加法器的FMA2微指令。
融合复合算术运算的特性是舍入(在存在的情况下)被延迟,直到复合算术运算完成为止。例如,在A*B+C的融合浮点乘累加(FMA)运算中,在对A和B的乘积进行舍入之前,将C累加到A与B的乘积。尽管FMA运算或许是最众所周知的融合浮点运算,但“融合”运算不限于浮点乘累加运算。在更一般的意义上,传统上以不可分割的方式进行连体计算的融合算术运算是在单个CPU指令执行单元的逻辑电路内。
在A*B+C的不太精确的“未融合”FMA运算中,对第一子运算(A*B)的中间结果进行舍入,然后将舍入值用在第二子运算(C+(A*B)的舍入总和)中,以产生同样进行了舍入的最终结果。这样可能产生双舍入误差,其中该结果不如利用融合复合算术运算将获得的结果那样精确。简单示例将是问题2.910-1*2.6×10-1–7.5×10-2,其中进行舍入以得到两个有效位。非融合运算将乘积0.0754舍入为两个有效位即0.075,之后减去0.075,从而产生最终结果0。作为对比,融合运算将产生在累加之前不对乘积进行舍入的等效结果,从而产生0.0754–0.075=0.004的结果。
‘817申请的使用不同的执行单元来进行融合FMA运算会产生如下配置等的许多优点,其中该配置代替较大的不可分割的FMA执行单元而是使用两个相对紧凑的执行单元(乘法器和加法器)并且以如下方式来进行FMA计算,其中该方式在乘法器进行第一子运算的情况下使得加法器能够执行不相关的微指令,并且同样在加法器进行第二子运算的情况下使得乘法器能够执行不相关的微指令。
然而,在多个拆分式FMA功能的加法器和乘法器共享同一分派端口的情况下,上述配置在FMA指令使流水线饱和时遭受性能劣势。这是因为,调度器经由分派端口一次仅可以分派一个微指令。例如,利用各自连接至乘法器和加法器的四个分派端口可以完成的FMA运算的数量将仅是在以各分派端口连接至单个不可分割的FMA单元作为代替的情况下可以完成的一半。
应当理解,鉴于‘817申请在本申请的优先权日之前尚未公布这一事实,前述内容不应被解释为暗示‘817申请的发明是本申请的现有技术。
发明内容
本发明可被表征为包括第一执行单元和第二执行单元的微处理器。如传统的执行单元那样,各指令执行单元包括一组逻辑电路,其中设置该一组逻辑电路,以执行发送至该一组逻辑电路以供完成的指定一组微指令中的任何微指令,并且产生该任何微指令的最终结果。但不同于传统的执行单元,第一指令执行单元和第二指令执行单元还是针对指定一组融合复合算术运算的拆分执行所配置的。第一执行指令单元在接收到拆分执行微指令之后,仅执行融合复合算术运算的第一部分,并且产生该第一部分的中间结果。第二指令执行单元接收该中间结果,并且执行融合复合算术运算的第二部分以产生最终结果。另外,第二指令执行单元被配置为在无需接收与第一指令执行单元所接收到的拆分执行微指令不同的微指令的情况下,执行融合复合算术运算的第二部分。
还可以利用多个实现、特征、方面和它们的组合来表现本发明的特征。在一个实现中,所述第二指令执行单元被配置为在无需接收所述拆分执行微指令的情况下,执行所述融合复合算术运算的第二部分。控制信号路径使所述第一指令执行单元连接至所述第二指令执行单元,并且所述控制信号路径被配置为向所述第二指令执行单元传递信号,以执行所述融合复合算术运算的第二部分。
在替代实现中,所述第二指令执行单元内的逻辑检测所分派的拆分执行微指令,并且使所述第二执行单元准备在即将到来的时钟周期接收所述第一指令执行单元所输出的中间结果并开始执行所述融合复合算术运算的第二部分。
在这两个实现中,转发路径使所述第一指令执行单元链接至所述第二指令执行单元,从而使得所述第一指令执行单元能够直接将所述中间结果转发至所述第二指令执行单元。
此外,在一个实现中,所述第二指令执行单元静态地链接至所述第一指令执行单元。这意味着仅所述第二指令执行单元能够用于完成所述第一指令执行单元部分进行的拆分执行微指令。
但在一替代实现中,所述第二指令执行单元动态地链接至所述第一指令执行单元。这意味着所述第二指令执行单元是能够用于完成所述第一指令执行单元所部分进行的拆分执行微指令的多个指令执行单元其中之一。在一个子实现中,调度器确定哪个指令执行单元与所述第一指令执行单元配对,以完成所述拆分执行微指令。在替代子实现中,第一指令执行单元动态地识别可利用的第二指令执行单元以完成拆分执行微指令,并且在不存在可利用的第二指令执行单元的情况下,调出(bump)在第二指令执行单元中执行的冲突微指令,从而使调度器对冲突微指令进行重新调度。
在一个实现中,所述指定一组融合复合算术运算包括一个或多个浮点乘加微指令,并且所述第一指令执行单元是乘法器且所述第二指令执行单元是加法器。
根据本发明的一个表征,融合复合算术运算是不进行舍入来生成所述中间结果的融合复合算术运算。根据本发明的另一表征,融合复合算术运算是实际上在最终结果中精度不会因可能发生的任何中间结果而丢失的融合复合算术运算。
在一个特定实现中,所述融合复合算术运算是形式±A*B±C的融合乘累加运算,其中A、B和C是输入操作数。此外,所述第一指令执行单元是乘法器且所述第二指令执行单元是加法器。在该实现的一个方面中,所述乘法器被配置为执行所述融合乘累加运算的第一部分,其中所述融合乘累加运算包括将A和B相乘并且有条件地将C累加到A和B的部分乘积的计算。在另一方面中,所述加法器被配置为在所述乘法器没有将C累加到A和B的部分乘积的情况下将C累加到A和B的乘积,并且在任意情况下均对所述计算的结果进行舍入。
在另一方面中,所述微处理器还包括调度器,所述调度器被配置为将所述拆分执行微指令分派至所选择的单个端口,以供多个执行单元进行串行执行,其中所述多个执行单元中的第一个执行单元连接至所述所选择的单个端口。所述调度器被配置为仅分派一次拆分执行微指令以进行整体串行执行,而无需将拆分执行微指令再分派至参与拆分执行微指令的串行执行的多个执行单元中的各执行单元。所述调度器被配置为保留用以服务转发路径的加法器,其中所述转发路径用于接收进行所述FMA运算的第一部分的乘法器的结果。所述调度器被配置为通过在所述第二指令执行单元要从所述第一指令执行单元接收所述中间结果时、避免经由将竞争所述第二指令执行单元执行所述融合复合算术运算的第二部分所需的资源的所述分派端口分派微指令,来保留所述第二指令执行单元以执行所述融合复合算术运算的第二部分。
本发明还可被表征为一种执行融合复合算术运算的方法。该方法包括向第一指令执行单元分派指定所述融合复合算术运算的拆分执行微指令。所述第一指令执行单元仅执行所述融合复合算术运算的第一部分,并且产生该第一部分的中间结果。第二指令执行单元接收所述中间结果,并且执行所述融合复合算术运算的第二部分以产生最终结果。各指令执行单元包括一组逻辑电路,其中设置所述一组逻辑电路,以执行发送至所述一组逻辑电路以供完成的指定一组微指令中的除所述拆分执行微指令以外的任何微指令,并且产生该任何微指令的最终结果。所述第二指令执行单元在无需接收与所述第一指令执行单元所接收到的拆分执行微指令不同的微指令的情况下,执行所述融合复合算术运算的第二部分。
还可以利用多个实现、特征和方面以及它们的各种组合来进一步表现本发明的特征。例如,一个实现中的所述方法还包括:将除操作码以外的控制信号传递至所述第二指令执行单元,以执行所述融合复合算术运算的第二部分,以及/或者将所述中间结果转发至所述第二指令执行单元。
此外,在一个实现中,所述融合复合算术运算是浮点乘加微指令,并且所述第一指令执行单元是乘法器且所述第二指令执行单元是加法器。在更特别的实现中,所述融合复合算术运算是形式±A*B±C的融合乘累加运算,其中A、B和C是输入操作数,并且所述第一指令执行单元是乘法器且所述第二指令执行单元是加法器。甚至更特别地,所述乘法器执行所述融合乘累加运算的第一部分,其中所述融合乘累加运算包括将A和B相乘并且有条件地将C累加到A和B的部分乘积;在所述乘法器没有将C累加到A和B的部分乘积的情况下,所述加法器将C累加到A和B的乘积;以及所述加法器对所述计算的结果进行舍入。
在另一实现中,所述方法还包括以下步骤:将给定的微指令分派至所选择的单个端口以供多个执行单元进行串行执行,而无需将所述拆分执行微指令再分派至参与所述拆分执行微指令的串行执行的所述多个执行单元中的各执行单元,其中所述多个执行单元中的第一个执行单元连接至所述所选择的单个端口。在另一方面中,所述方法还包括以下步骤:对可用于服务转发路径的加法器进行调度或保留,其中所述加法器用于接收进行所述FMA运算的第一部分的乘法器的中间结果。这可以通过在所述第二指令执行单元要从所述第一指令执行单元接收所述中间结果时、避免经由将竞争所述第二指令执行单元执行所述融合复合算术运算的第二部分所需的资源的所述分派端口分派微指令来进行。
本发明还可被表征为一种微处理器,包括第一指令执行单元和第二指令执行单元,所述第一指令执行单元和所述第二指令执行单元被配置为进行指定一组融合复合算术运算的拆分执行的链式模式和非链式模式。在拆分执行的所述非链式模式中,分别向所述第一指令执行单元和所述第二指令执行单元发出第一非链式拆分执行微指令和第二非链式拆分执行微指令。在拆分执行的所述链式模式中,发出单个链式拆分执行微指令,其中所述单个链式拆分执行微指令使得所述第一指令执行单元和所述第二指令执行单元这两者分别执行所述复合算术运算的第一部分和第二部分。
在一个实现中,设置可配置信号源以存储用以指定拆分执行的模式的配置设置,并且所述微处理器被配置为响应于指定所述复合算术运算的指令,根据所述配置设置来发出所述第一非链式拆分执行微指令和所述第二非链式拆分执行微指令或者所述单个链式拆分执行微指令。所述配置设置可被配置为由监视软件进行设置。
在另一实现中,指令转译器可被配置为根据所述配置设置将指定所述复合算术运算的指令转译成用于进行拆分执行的非链式模式的所述第一非链式拆分执行微指令和所述第二非链式拆分执行微指令、或者转译成用于进行拆分执行的所述链式模式的单个链式拆分执行微指令。
应当理解,可以以多种方式来表征本发明,其中这些表征包括但不限于上述表征或者本说明书中所述的任何实现、方面、特征或特性。
附图说明
图1是针对融合复合算术运算的拆分执行所配置的微处理器的一个实施例的顶层图。
图2示出图1的微处理器的执行流水线的一个实施例。
图3是示出针对融合复合算术运算的拆分执行的两个模式所配置的微处理器的功能特征和结构特征的框图。
图4示出到共享分派端口的乘法器和加法器的非链式拆分执行FMA微指令的流程。
图5示出到共享分派端口的乘法器和加法器的链式拆分执行FMA微指令的流程。
图6是示出贯穿执行流水线的被指定为A~F的六个链式FMA拆分执行微指令的进展的图。
图7示出跨多个端口的非链式FMA拆分执行微指令的流程。
图8示出跨多个端口的链式FMA拆分执行微指令的流程。
具体实施方式
以下说明是为了使得本领域普通技术人员能够制作并使用如在特定申请及其要求的上下文内所提供的本发明而呈现的。然而,针对优选实施例的各种变形对于本领域技术人员而言将是显而易见的,并且这里所定义的通用原则还可适用于其它实施例。因此,本发明并不意图局限于这里所示和所述的特定实施例,而是应符合与这里所公开的原理和新颖特征一致的最大范围。
图1~8示出本发明的各种实施例的各种方面。图1是从‘817申请的图1修改得到的,并且使用一致的附图标记。由于‘817申请使用达到500的附图标记,因此本申请的图2~8从‘817申请结束的附图标记开始,从而使用以600范围开始的附图标记。这样便于在‘817申请的上下文中论述本申请。
现在参考图1,示出例示微处理器10的框图。微处理器10具有被配置为执行FMA计算的多个执行单元45、50、60。微处理器10包括指令高速缓存器15、指令转译器20、调度器25、多个执行单元45、50和60、暂时存储器55(可选地被称为计算控制指示符存储器)、架构寄存器35和重排序缓冲器30。其它功能单元(未示出)可以包括:微代码单元;分支预测器;包括高速缓冲存储器层级(例如,1级数据高速缓存器、2级高速缓存器)、存储器排序缓冲器和存储器管理单元的存储器子系统;数据预取单元;以及总线接口单元;等等。
微处理器10具有不按程序顺序发出指令以供执行的非循序执行微架构。更具体地,可以不按程序顺序发出架构指令(或宏指令)被转译或变换成的微指令以供执行。微指令的程序顺序与转译或变换得到这些微指令所根据的各个架构指令的程序顺序相同。微处理器10还具有能够针对各时钟周期向执行单元发出多个指令以供执行的超标量微架构。在一个实现中,微处理器10提供以与x86指令集架构兼容的方式来执行指令。
指令高速缓存器15对从系统存储器所预取的架构指令进行高速缓存。指令转译器20将从指令高速缓存器15所预取的架构指令转译或变换成微处理器10的微架构的微指令集中的微指令。执行单元45、50、60执行这些微指令。架构指令被转译或变换成的微指令实现架构指令。调度器25按程序顺序针对微指令接收并分配ROB 30中的条目,针对微指令保留与将执行该微指令的执行单元相关联的分派端口,利用所分配的ROB条目的索引来更新微指令,经由所保留的分派端口来分派微指令,并且针对这些微指令进行寄存器重命名和依赖性生成。
各指令执行单元45、50、60是指令流水线24中的单独的不可分割的单机(stand-alone)运算处理单元,其中该运算处理单元对机器级指令(例如,CISC微架构中的指定一组指令或RISC微架构中的指定一组微指令)进行解码,独立地针对机器级指令进行运算,从共享高速存储器的集合中读取其操作数并将其结果写至该集合,并且向内部数据路径提供控制信号。共享高速存储器可以是寄存器文件或一组非架构计算寄存器(例如,重排序缓冲器30),其是提供予微指令交换数据且对于其它执行单元而言是可见的。换言之,各指令执行单元45、50、60包括特征性的一组逻辑电路,其中提供该一组逻辑电路以执行有意地传递至该一组逻辑电路以供完成的指定一组机器级指令,并且产生该一组机器级指令的最终结果。指令执行单元与可用于以并行(而不仅仅是流水线)方式执行多个机器指令的更大集群的电路(在存在的情况下)形成对比。
微处理器的执行单元包括传统的指令执行单元60以及至少第一类型和第二类型的专用指令执行单元45和50这两者。专用指令执行单元45和50不仅被配置为产生指定一组传统微指令的最终结果,而且还被配置为进行指定一组融合复合算术运算的拆分执行。在第一类型的专用指令执行单元45接收到指定融合复合算术运算的第一部分的拆分执行微指令的情况下,该单元45执行融合复合算术运算的第一部分并产生其中间结果。该中间结果或被存储在暂时存储器55中、或被沿着转发总线40转发至第二指令执行单元50、或经过这两个操作。第二指令执行单元50接收到该中间结果并且执行融合复合算术运算的第二部分,以产生最终可被存储在架构寄存器35其中之一中的最终结果。
“融合”是指以确保了融合复合算术运算产生算术正确的结果表示的方式来处理并呈现任何中间结果的要求,其中该结果表示与将复合算术运算的无限精确计算生成的结果减小为目标数据大小的结果难以区分。
例如,形式A*B+C的非融合乘加运算将计算乘积A*B,将该乘积A*B舍入为N个有效位,将该结果与C相加,并且舍入回到N个有效位。作为对比,融合乘加将按全精度计算整个总和A*B+C,之后将最终结果下舍入为N个有效位。
在考虑跨两个以上的指令执行单元45、50的舍入的乘加运算时,在指令执行单元45、50之间只传送舍入的中间结果的情况下,需要保存将会丢失的信息。在一个实现中,这通过向中间结果总线提供足以在指令执行单元45、50之间传送完全精确的中间结果的扩展宽度来实现。在另一实现中,如‘817申请所述,这通过传送小于全精度的中间结果以及将使得能够获得相同结果的多个舍入和/或计算控制指示符来实现。其它实现也是可以的。
专用指令执行单元45和50的、用以产生或接收具有足以拆分融合复合算术运算的执行并仍持续产生同样精确的算术正确结果的信息的中间结果的能力,是“专用”指令执行单元45和50与“传统”指令执行单元60的显著区分。作为对比,使用传统的乘法器和传统的加法器来进行复合算术运算将产生双舍入的结果,该双舍入的结果不是针对所有可能的计算都产生与通过该运算的融合版本所产生的结果相同的结果。
在优选实现中,专用执行单元45和50还在执行以下这两者的能力方面突出:(a)发送至专用执行单元45和50以供完成并由此产生最终结果的指定第一组的一个或多个微指令的任意微指令;和(b)用以产生(作为输出)或接收(作为输入)中间结果的、指定第二组的一个或多个拆分执行微指令中的任意拆分执行微指令。
例如,在一个实现中,与‘817申请所述的情况相似,专用指令单元45和50是乘法器和加法器。更特别地,修改后的乘法器45是在多数方面可能是传统的适当乘法计算单元,其中传统是因为该乘法器45可以执行不是FMA运算的一部分的普通乘法微指令。同样,修改后的加法器50是在多数方面可能是传统的适当加法器计算单元,其中传统是因为该加法器50可以执行诸如加法或减法等的不是FMA运算的普通累加微指令。然而,修改后的乘法器45和修改后的加法器50这两者都具有对这两者进行配置以供通过公式±A*B±C可表示的融合浮点乘累加(FMA)运算的拆分执行的专用修改。
特别地,修改后的乘法器45能够进行融合FMA运算(FMA1子运算)的第一阶段或部分,从而生成并输出正规化求和结果和多个计算控制指示符。在一个实现中,修改后的乘法器45计算A和B的部分乘积并进行求和,并且有条件地将C包括在该求和中,从而产生中间结果和多个计算控制指示符。另一方面,在进行非FMA运算的情况下,修改后的乘法器45生成舍入后的符合IEEE的结果。
修改后的加法器50能够进行融合FMA运算的第二阶段或部分(FMA2子运算)。在一个实现中,修改后的加法器50通过在C没有包括在乘法器45的求和中的情况下有条件地将C与中间结果相加、然后产生如下的最终结果,来完成FMS运算,其中该最终结果考虑到从修改后的乘法器45经由信号路径749所接收到的计算控制指示符、以及在加法器进行FMA运算的第二部分期间所生成的附加计算控制指示符这两者。
除舍入指示符外,计算控制指示符还表示计算的性质(诸如计算是乘-加还是乘-减等)、精度(例如,单、双或扩展)、舍入模式、以及修改后的加法器正常将从第二微指令中提取的任何其它信息。
如‘817申请中所论述的,修改后的乘法器45或修改后的加法器50是否累加C部分依赖于部分乘积求和树的宽度、以及C将适合该树的何处以将C与A和B的部分乘积累加,而这依赖于A、B和C的指数的相对大小。为了累加C所选择的单元还依赖于C向A和B的乘积的累加是否将导致有效相减。
由于暂时存储器55是对于其它执行单元而言可见的共享存储器的一部分,因此从物理和/或逻辑上与修改后的乘法器45分开的修改后的加法器50可以经由中间结果数据路径接收中间结果并进行FMA2子运算。此外,可以在FMA1子运算和FMA2子运算之间进行其它不相关的运算。
第三个显著方面将专用执行单元45和50与传统执行单元区分开,该第三方面还将专用执行单元45和50与‘817申请中所述的执行单元区分开。该第三方面是专用执行单元45和50在“链式”执行模式中、响应于专用执行单元45和50整体仅接收到单个拆分执行微指令而各自进行融合复合算术运算的第一部分和第二部分的能力。在链式执行模式区别于“非链式”执行模式方面,在“非链式”执行模式中,专用执行单元45和50这两者都需要各自的专用微指令(例如,‘817申请中所述的FMA1微指令和FMA2微指令)。
与链式执行模式有关的是图1的可配置信号源21。图1的可配置信号源21是存储一个或多个位的存储器元件、到实体裸晶片的外部输入引脚、或者在制造时所编程的由指令转译器20读取的熔丝。为了方便但不是为了限制的目的,在图1中将该信号源21指定为“模式位”。可配置信号源21决定融合复合算术运算的执行模式(例如,链式或非链式)。在说明链式和非链式的执行模式的相对优点之前,描述指令调度器25的特定方面、以及当用以服务执行高吞吐量的融合复合算术运算可用的所有执行单元的分派端口不足的情况下所产生的限制,这是有益的。
图2是图1的微处理器10的执行流水线,其为包括微指令调度器25、重排序缓冲器30和多个执行单元45、50和60的一部分的一个实施例框图。调度器25连接至指令转译器20,其中调度器25从指令转译器20接收微指令并将这些微指令存储在存储表605的微指令条目中。调度器25提供利用附图标记625、626和627指定的多个微指令分派端口0…n-1,其中这多个微指令分派端口0…n-1各自连接至执行单元的相应端口共享组630、631和632。
在一个实现中,微处理器10包括执行单元的多个端口共享多媒体组630和631,其中这多个端口共享多媒体组630和631各自包括加法器640和乘法器635。微处理器10还包括执行单元的其它端口共享组632,其中这些其它端口共享组632包括自身的运算逻辑单元651和652的集合、存储器运算单元和其它类型的执行单元(未示出)。微处理器10还可以包括具有自身的专用端口(即,不与任何其它执行单元共享的端口)的一些执行单元。这些执行单元所产生的最终结果在被有条件地提交至适当的架构寄存器35之前,暂时存储在重排序缓冲器30中。
调度器25包括微指令选择器620,其中该微指令选择器620决定向各微指令分配哪些执行资源(即,将微指令绑定至哪个端口625、626、627)、以及微指令将被分派至执行资源的时钟周期。如以下进一步所述,微指令选择器620还在使得融合复合算术运算的拆分执行的不同模式能够实现方面起作用。
现在将与图3相关联地说明“链式”执行模式和“非链式”执行模式之间的选择、以及用于进行这些选择的基本原理。图3是针对融合复合算术运算的非不可分割的执行的两个模式(链式和非链式)所配置的微处理器10的一个实施例的部分功能流程和部分结构框图。在流程块705中,指令转译器20接收传统微处理器使用单个不可分割的执行单元(诸如FMA单元等)所执行的指令(例如,FMA指令)。在流程块710中,指令(例如,操作码)的指示表示该指令是否调用融合复合算术运算的操作、以及该运算是否适合利用单独执行单元进行拆分执行。如果为“是”,则在流程块715中,指令转译器20读取可配置信号源21,其中该可配置信号源21提供指定拆分执行的模式的配置设置。
特别地,提供拆分执行的“非链式”模式和“链式”模式。在“非链式”模式中,向进行复合算术运算的拆分执行的两个以上的执行单元各自发出单独的微指令。在“链式”模式中,向进行复合算术运算的拆分执行的第一部分的第一执行单元发出单个微指令。第二执行单元在不需要自身的微指令的情况下,在从第一执行单元接收到中间结果之后,开始执行复合算术运算的第二部分。
如果可配置信号源21表示非链式执行模式,则在流程块725中,指令转译器20发出第一微指令μ-Op1 726,随后发出第二微指令μ-Op2 727。否则,如果可配置信号源21表示链式执行模式,则指令转译器20发出单个微指令μ-Opsingle 731。
如果调度器25接收到表示非链式执行模式的第一微指令μ-Op1 726和第二微指令μ-Op2 727,则调度器25将μ-Op1 726分派至可用于进行融合复合算术运算的第一部分或子操作的第一类型的执行单元735(以下称为“阶段1执行单元735”)。例如,如果微指令指定FMA运算,则在一个实现中,μ-Op1 726是‘817申请中所描述的FMA1微指令,并且阶段1执行单元735是配置有进行FMA1的能力的乘法器635。在阶段1执行单元735完成了第一子运算的情况下,阶段1执行单元735将中间结果736存储在重排序缓冲器和/或暂时寄存器750中,并且/或者将中间结果736沿着转发数据路径40转发至可用于进行融合复合算术运算的第二部分或子操作的第二类型的执行单元740(以下称为“阶段2执行单元740”)。另外,阶段1执行单元735可以将指示符存储至暂时存储器55。例如,如果微指令指定FMA运算,则在一个实现中,μ-Op2 727是‘817申请中所描述的FMA2微指令,并且阶段2执行单元740是配置有进行FMA2的能力的加法器640。然而,阶段2执行单元740不进行第二子运算,直到调度器25分派μ-Op2 727为止。
如‘817申请所述,使用以上所述的结构来以非不可分割的方式进行FMA运算提供了多个好处。一个特别明显的优点是:如果乘法器635和加法器640没有正共享同一分派端口,则乘法器635和加法器640这两者可用于同时执行微指令。更具体地,例如,乘法器635和加法器640在同一时钟周期内各自接收微指令。与在用单个不可分割的FMA执行单元替换乘法器635和加法器640的情况下将可能的指令吞吐量相比,在这种结构中,可以实现高达两倍的指令吞吐量。这是因为,尽管将专用FMA1微指令分派至乘法器635,但可以同时将另一微指令分派至加法器640。此外,可以以在时间和/或物理上分离的方式分派并执行FMA1微指令和FMA2微指令。
但在分派端口比乘法器735和加法器740少并且FMA运算使流水线饱和的情况下,拆分执行的该非链式模式提供了较少的优点。这是因为,加法器640在以非链式执行模式进行工作的情况下,需要FMA2微指令以完成FMA运算。例如,采用乘法器635和加法器640共享同一分派端口725的情况为例,需要FMA2以完成FMA运算意味着与加法器640相关联的分派端口不能同时将另一微指令分派至乘法器635,这样使乘法器635未得到充分利用。
图4示出分派至共享分派端口725的乘法器635和加法器640的非链式的FMA1微指令和FMA2微指令的序列的该限制。在时钟周期t~t+2内,经由分派端口725分派连续的三个FMA1微指令以供乘法器635执行,每个FMA1微指令各自与不同的FMA运算相关联并且各自需要三个时钟周期以完成FMA1子运算。随后,在时钟周期t+3~t+5内,经由分派端口725向加法器640分派连续的三个FMA2微指令,以完成相应的FMA运算(并产生相应的FMA运算的最终结果)的FMA2子运算。下标c0、c1和c2表示FMA1子运算和FMA2子运算之间的配对关系以及FMA1子运算开始执行的时钟周期。
在时钟周期t+0~t+2内,加法器640至少部分空闲。由于分派端口725随后正分派FMA1指令并且经由分派端口725一次仅可分派一个微指令,因此不能同时开始执行其它微指令。同样,在时钟周期t+3~t+5内,乘法器635至少部分空闲。乘法器635不能与加法器640开始执行FMA2微指令同时开始执行微指令。在时钟周期t~t+2内利用流水线孔(即,未分配的流水线时隙)来例示加法器640的未充分利用,并且在时钟周期t+3~t+5内同样例示乘法器635的未充分利用。
为了克服该限制,微处理器10提供链式执行模式。返回至图3的决定块720,如果可配置信号源21表示链式执行模式,则在流程块730中,指令转译器20向第一阶段执行单元735(例如,浮点乘法器635)发出、随后调度器25向该第一阶段执行单元735分派复合算术运算微指令731的单个融合拆分执行(例如,图5的单个融合FMA(sFMA)微指令)。在该上下文中,“单个”是指尽管利用一个以上的执行单元来进行产生融合复合算术运算的最终结果的算术、并且尽管这些执行单元进行该算术的不同阶段,但仅提供一个微指令来进行该算术。
在流程块745中,调度器25保留第二类型的执行单元740(例如,浮点加法器640),使得该第二类型的执行单元740将可用于进行融合复合算术运算的第二部分。调度器25通过不经由与所保留的执行单元740相关联的分派端口725分派微指令来“保留”执行单元740,其中,该分派端口725将对进行融合复合算术运算的第二部分所需的任何资源(例如,执行单元740自身、执行单元740要使用的分派端口、操作数总线、结果总线、共享“完成信号”资源等)进行竞争。然而,调度器25可以经由将不对进行融合复合算术运算的第二部分所需要的任何资源进行竞争的关联分派端口来分派微指令。
微指令是否将对执行单元740所需要的资源进行竞争依赖于微指令的延时、以及可用于满足执行单元740和共享同一端口的任何其它执行单元这两者的需求的资源。如果在与执行单元740将自身的结果放置在结果总线上所需的时钟周期不同的时钟周期内,端口共享执行单元将其结果放置在该总线上,则端口共享执行单元可以与执行单元740开始执行融合复合算术运算的第二部分同时开始执行微指令。可选地,如果向共用端口的一组执行单元提供一个以上的结果总线(例如,除提供主结果总线外,还提供单周期结果总线)、并且端口共享执行单元访问附加的结果总线,则端口共享执行单元可以与执行单元740开始执行融合复合算术运算的第二部分同时开始执行微指令。
此外,如果端口共享执行单元无需将任何结果放置在结果总线上,则端口共享执行单元可以与执行单元740开始执行融合复合算术运算的第二部分同时开始执行微指令。例如,调度器25可以与所保留的加法器开始执行FMA运算的第二部分同时经由关联的分派端口分派另一sFMA微指令731。在图5中示出如此得到的优点。
图5示出共享分派端口725的三个执行单元(整数加法器645、浮点乘法器635和浮点加法器640)。浮点乘法器635和浮点加法器640还共享浮点结果总线770。整数加法器645将结果写入与浮点结果总线770不同的整数结果总线775。在时钟周期t~t+3内,分派连续的四个sFMA微指令。各sFMA微指令与不同的FMA运算相关联,并且各FMA运算被拆分成第一部分和第二部分以利用各个乘法器和加法器执行。由于在一个实现中乘法器需要三个时钟周期来完成FMA运算的乘法器的部分,因此在时钟周期t+3~t+6内保留加法器640以开始进行各FMA运算的第二部分。
在链式执行模式和非链式执行模式这两者中,加法器640从乘法器635接收中间结果736。在一个实现中,中间结果包括中间计算的完全精确结果。在另一实现中,如‘817申请所述,中间结果包括中间计算的结果的最高有效位(MSB)以及多个计算控制指示符。在一个实现中,计算控制指示符包括端回进位指示符(E)、粘滞位指示符(S)、舍入指示符(R)、上溢指示符(O)、下溢指示符(U)和关于乘法器635进行了多少复合算术运算的指示(Z)。在另一实现中,计算控制指示符还包括诸如期望结果的数据大小的指示等的、将编码在微指令操作码中的细节。
在链式执行模式的一个实现中,加法器640(在一个实现中经由信号路径749从乘法器635并且在另一实现中从调度器25)接收一个或多个链式控制信号,以指示指引加法器640开始执行FMA运算的第二部分(sFMA),尽管加法器640没有接收到可操作的微指令以供执行。队列742或其它适当的操作数采样电路向加法器640供给乘法器635未转发至加法器640的任何所需操作数(例如,FMA运算A*B±C的累加操作数C)。在替代实现中,在sFMA指令被发出至乘法器635并且设置了使乘法器635开始按适当时钟周期执行sFMA运算的标志的情况下,加法器640检测该sFMA指令。
有利地,共享分派端口725上的乘法器635和加法器640可在不必竞争与分派端口共享组的执行单元相关联的任何资源(包括分派端口725、操作数总线、和结果总线770)的情况下操作,同时执行FMA指令。由于加法器640不需要用以执行FMA运算的第二部分的微指令,因此在分派端口725处不存在竞争。由于队列742将累加操作数供给至加法器640,因此关于读取操作数不存在竞争。由于乘法器635在无需利用结果总线770的情况下将结果直接转发至加法器640,因此针对结果总线770也不存在竞争。
链式执行模式在sFMA微指令使流水线饱和的情况下,提供了特别大的优点。这是因为微处理器可被配置成如下:在无需竞争共享资源的情况下,乘法器635可以开始执行新的FMA操作的第一部分,而加法器640开始执行前一FMA操作的第二部分。
链式执行模式还可以向指令的其它混合提供优点。图5示出与分派端口共享式浮点加法器正执行连续FMA运算的第二部分同时、利用整数加法器645在时钟周期t+4和t+5内正执行的两个整数相加微指令728。由于加法器640不必访问分派端口725或操作数总线以进行FMA运算的第二部分,因此在时钟周期t+4和t+5内,调度器可自由将整数相加微指令分派至整数加法器645以供执行。由于整数加法器645和浮点加法器640向单独的结果总线775和770进行写入,因此针对结果总线资源不存在竞争。
图6是示出贯穿执行流水线780的被指定为A~F的六个链式FMA微指令随时间t经过的进展的图。示出包括执行前阶段D、Q、R和I、三个执行阶段1~3以及写回阶段W的八个流水线阶段,其中执行前阶段D、Q、R和I包括分派和从寄存器文件的读取。例如,在FMA微指令A经由阶段D、Q、R和I进展之后,乘法器635开始在利用执行阶段1、2和3表示的三个执行时钟周期内执行FMA微指令A(这里表示为A1)。在完成执行阶段3之后,将中间结果传送至加法器640,其中执行从FMA运算的第二部分的执行阶段1开始。这里,将微指令A表示为A2。同时,A2执行经过加法器640的执行阶段1、2和3,并且另一链式FMA微指令D1同时执行经过乘法器635的执行阶段1、2和3。图6中填充两个微指令的各框示出同时使用两个分派端口共享执行单元的情况。
如上所述,获得更高的吞吐量要求在分派端口共享加法器640开始执行链式FMA运算的一部分的情况下,存在可以开始利用执行单元的可分派微指令。可利用的这些微指令越少,优点越小。
在一些指令或微指令混合的情况下,拆分执行的非链式模式的优点(例如,对FMA2运算进行调度方面的灵活性、使乘法器和加法器配对到一起的灵活性)将超过拆分执行的链式模式的有所减少的优点。例如,在具有FMA运算所用的乘法器和加法器的固定静态配对的实现中,不同数量的相乘单元和相加单元将约束乘法器和加法器可以链到一起的数量。作为另一示例,在相乘单元和相加单元共享同一结果总线的情况下,在相乘运算和FMA运算之间交替改变的指令序列(例如,相乘-FMA-相乘-FMA)将呈现调度冲突,这是因为链式FMA运算在保留结果总线资源以完成FMA的第二部分方面强加刚性的预定时刻。作为对比,在非链式模式中,可以任意延迟各FMA运算的第二部分,调度器可自由地以更佳的方式打乱或重新排序这些交替改变的相乘-FMA序列。
如以上所述,能够进行拆分执行的链式模式和非链式模式这两者的微处理器,相对于被配置为仅进行拆分执行的这些模式中的仅一个模式的微处理器提供了优点。
在一个实现中,链式执行模式不限于共享共用分派端口625、626或627的执行单元。图2示出两个链式路径661和662。链式路径661在多媒体组630的乘法器635和加法器640之间包括中间结果转发路径40(图1)和链接控制信号路径749(图3)。尽管在多数情况下共享共用分派端口的组内的执行单元之间的链式配置有可能是优选的,但一些实现可以以组之间的链式配置为特征。在图2的链式路径662中示出该情况,其中该链式路径662在多媒体组630的乘法器635和多媒体组631的加法器640之间包括中间结果转发路径40和链式控制信号路径749。
此外,在一些实现中,可用于进行复合算术运算的拆分执行的执行单元被静态地配对到一起。在一个静态配对实现中,例如,进行FMA1子运算的乘法器635始终与用以进行FMA2子运算的特定加法器640(并且不与其它加法器)配对。但在其它实现中,可用于进行复合算术运算的拆分执行的执行单元被动态地配对到一起。在一个动态配对实现中,例如,将乘法器的FMA1子运算的中间结果转发至多个加法器640,加法器640中仅动态选择的加法器640(例如,调度器25所选择的加法器640)读取中间结果并且开始进行FMA2子运算。
图7和8提供利用调度器25向其端口中的各种端口指派微指令的例示性示例。图7示出针对FMA运算的非链式执行模式的(多个OTHER(其它)微指令中的)FMA1微指令和FMA2微指令的指派。作为对比,图8示出针对链式执行模式的(同样是多个OTHER微指令和CONSTRAINED(约束)微指令中的)sFMA微指令的指派。括号中的字母表示转译得到微指令所根据的程序指令。例如,FMA1(A)和FMA2(A)是根据单个FMA程序指令A转译得到的两个拆分指令微指令。同样,FMA1(B)和FMA2(B)是根据单个FMA程序指令B转译得到的两个拆分执行微指令。
在图7的非链式模式示例中,调度器25向端口0指派FMA1(A)并且向端口1指派FMA1(B)(FMA运算A和B的第一部分),以在时钟t内开始执行。调度器25向端口0指派FMA2(A)并且向端口x指派FMA2(B),以在三个时钟周期后开始执行。为了遵循执行单元的流水线性质,调度器向端口0指派FMA1(D)以在时钟t+1内开始执行。有利地,在该非链式执行模式中,调度器25在决定何时分派FMA2微指令方面具有灵活性。因此,调度器25对FMA2(D)进行调度,以在四个时钟周期之后即在时钟t+5处在端口0处执行。另一方面,调度器25利用进行其它运算C和E~O的其它微指令来填充端口0~x的其它时隙。
在图8的链式模式示例中,调度器25向端口0指派sFMA(A)并且向端口1指派sFMA(B)。随后,在该示例中,在时钟t+3处,调度器25在端口0处保留配对的加法器640以完成sFMA(A)运算,并且在端口x处保留另一配对的加法器640以完成sFMA(B)运算。保留与端口相关联的加法器640约束了调度器25可以向该端口分派的微指令的类型。简言之,调度器25被配置为向加法器740被保留的、将不与加法器640完成sFMA运算所需要的资源(包括结果总线)进行竞争的端口分派微指令。示例包括其它sFMA微指令、以及诸如简单浮点存储操作或简单浮点绝对值等的具有不同延时的微指令。
结论
本发明实现了特定优点。本发明特别针对IEEE舍入要求,提供其它实现不能明显提供的IEEE规格兼容性和期望FMA算术结果的正确性。
本发明通过保留单独可用的乘法器单元和加法器单元来使指令分派所用的独立算术功能单元的可用性最大化,从而允许计算机处理器针对特定投资实现成本更全面地利用ILP(指令级并行性)。换言之,如所期望的,本发明使得能够最大限度地同时利用最小限度实现的硬件,以尽快完成最常见的预期计算。这样提高了算术结果的吞吐量。
结果,可以根据所需系统的期望整体性能和ILP能力来更灵活地配置所提供的这些相乘和加法器功能单元的数量,其中与整体的单片FMA硬件相比,每功能单元的实现成本较低。由此在降低了成本和电力消耗的情况下,提高了计算机系统用以对微指令进行重排序的能力。
尽管当前实现被配置为超标量非循序的指令分派,但例如通过去除舍入高速缓存器、以及通过提供从所提供的相乘计算单元至单独的加法器计算单元的数据转发网络,其它实现可被配置为循序的指令分派。
本发明适用于有时被称为矢量指令类型或矢量FMA计算的FMA计算的SIMD(单指令多数据)实现,其中在这种情况下,将存在修改后的乘法器的多个实例和修改后的加法器的多个实例。在一个实施例中,单个舍入高速缓存器服务本发明的SIMD应用的需求。在另一实施例中,设置多个舍入高速缓存器以服务SIMD应用。
尽管主要与需要包含相加或累加或者随后进行相加或累加的相乘计算的浮点融合乘加计算的性能有关地说明了当前发明,但其它实现也可以应用本发明的方法,特别是针对中间结果值和链式控制信号的通信、需要多于两个链式算术运算的计算、不同的算术运算、或者按不同顺序进行这些算术运算。例如,可能期望将这些方法应用于诸如乘乘加或乘加加的链式计算等的其它复合算术运算(即,涉及两个以上的算术运算符或三个以上的操作数的算术运算),以获得提高的算术精度或提高的计算吞吐量。此外,本发明的一些方面(例如,将舍入到特定位位置的整数运算子分割成第一子运算和第二子运算,其中第一子运算产生未舍入的中间结果,并且第二子运算根据该未舍入的中间结果生成舍入最终结果)可适用于整数算术。这些其它实现也可以根据需要将不同的状态位记录到高速缓存机构。
应当理解,当前说明书为了简便而描述舍入位和其它内部位的使用,并且本发明等同地应用于包括舍入相关变量或计算控制变量的编码表示的其它形式的指示符。
此外,应当理解,术语“指令”包含“架构指令”和这些“架构指令”可被转译或变换成的“微指令”这两者。同样,术语“指令执行单元”不是专门指代微处理器在无需首先将架构指令转译或变换成微指令的情况下直接执行这些架构指令(即,ISA机器代码)的实施例。由于微指令是一类指令,因此“指令执行单元”还包括微处理器首先将ISA指令转译或变换成微指令、并且指令执行单元始终且仅执行这些微指令的实施例。
还应当理解,附图所示的功能块可被可互换地描述为模块、电路、子电路、逻辑和在数字逻辑和微处理器设计的领域内通常使用的其它词语,以指定在布线、晶体管和/或其它物理结构内体现的进行一个或多个功能的数字逻辑。还应当理解,本发明包含与这里所述的实现不同的、用于分布说明书所述的功能的替代实现。
尽管已经参考本发明的特定优选版本非常详细地说明了本发明,但还可以进行并预想到其它版本和变形。本领域技术人员应当理解,在没有背离如所附权利要求书所定义的本发明的精神和范围的情况下,这些技术人员可以容易地使用所公开的概念和具体实施例作为用于设计或修改用于执行本发明的相同目的的其它结构的基础。
Claims (39)
1.一种微处理器,包括:
第一指令执行单元和第二指令执行单元,各指令执行单元包括一组逻辑电路,其中所述一组逻辑电路被提供以执行发送至所述一组逻辑电路以供完成的指定一组微指令中的任何微指令并产生该任何微指令的最终结果,
其中,所述第一指令执行单元和所述第二指令执行单元还是针对指定一组融合复合算术运算的拆分执行所配置的,其中在接收到拆分执行微指令之后,所述第一指令执行单元仅执行所述融合复合算术运算的第一部分并产生该第一部分的中间结果,以及所述第二指令执行单元接收所述中间结果,并且执行所述融合复合算术运算的第二部分以产生最终结果,以及
所述第二指令执行单元被配置为在无需接收与所述第一指令执行单元接收到的拆分执行微指令不同的微指令的情况下,执行所述融合复合算术运算的第二部分。
2.根据权利要求1所述的微处理器,其中,所述第二指令执行单元被配置为在无需接收所述拆分执行微指令的情况下,执行所述融合复合算术运算的第二部分。
3.根据权利要求1所述的微处理器,其中,还包括控制信号路径,所述控制信号路径将所述第一指令执行单元连接至所述第二指令执行单元,并且被配置为向所述第二指令执行单元传递信号,以执行所述融合复合算术运算的第二部分。
4.根据权利要求1所述的微处理器,其中,还包括位于所述第二指令执行单元内的逻辑,所述逻辑被配置为检测所分派的拆分执行微指令,并且使所述第二指令执行单元准备在即将到来的时钟周期接收所述第一指令执行单元输出的中间结果并开始执行所述融合复合算术运算的第二部分。
5.根据权利要求1所述的微处理器,其中,还包括转发路径,所述转发路径将所述第一指令执行单元链接至所述第二指令执行单元,从而使得所述第一指令执行单元能够将所述中间结果直接转发至所述第二指令执行单元。
6.根据权利要求1所述的微处理器,其中,所述第二指令执行单元静态地链接至所述第一指令执行单元,以及仅所述第二指令执行单元能够操作以完成由所述第一指令执行单元部分进行的拆分执行微指令。
7.根据权利要求1所述的微处理器,其中,所述第二指令执行单元动态地链接至所述第一指令执行单元,以及所述第二指令执行单元是能够操作以完成由所述第一指令执行单元部分进行的拆分执行微指令的多个指令执行单元其中之一。
8.根据权利要求7所述的微处理器,其中,调度器确定哪个指令执行单元与所述第一指令执行单元配对,以完成所述拆分执行微指令。
9.根据权利要求1所述的微处理器,其中,所述指定一组融合复合算术运算包括一个或多个浮点乘加微指令,并且所述第一指令执行单元是乘法器且所述第二指令执行单元是加法器。
10.根据权利要求1所述的微处理器,其中,所述融合复合算术运算是不进行舍入来生成所述中间结果的融合复合算术运算。
11.根据权利要求1所述的微处理器,其中,所述融合复合算术运算是±A*B±C形式的融合乘累加运算,其中A、B和C是输入操作数,并且所述第一指令执行单元是乘法器且所述第二指令执行单元是加法器。
12.根据权利要求11所述的微处理器,其中,所述乘法器被配置为执行所述融合乘累加运算的第一部分,其中所述融合乘累加运算包括将A和B相乘并且有条件地将C累加到A和B的部分乘积的计算。
13.根据权利要求12所述的微处理器,其中,所述加法器被配置为在所述乘法器未将C累加到A和B的部分乘积的情况下,将C累加到A和B的乘积。
14.根据权利要求13所述的微处理器,其中,所述加法器被配置为对所述计算的结果进行舍入。
15.根据权利要求1所述的微处理器,其中,还包括调度器,所述调度器被配置为将所述拆分执行微指令分派至所选择的单个端口以供多个执行单元串行执行,而无需将所述拆分执行微指令再分派至参与所述拆分执行微指令的串行执行的所述多个执行单元中的各执行单元,其中所述多个执行单元中的第一个执行单元连接至所述所选择的单个端口。
16.根据权利要求1所述的微处理器,其中,对于一个给定微指令,所述融合复合算术运算是融合浮点乘加运算即融合FMA运算,所述第一指令执行单元是乘法器,所述第二指令执行单元是加法器,并且所述微处理器包括多个乘法器和加法器。
17.根据权利要求16所述的微处理器,其中,还包括调度器,所述调度器被配置为对加法器进行调度以使该加法器可用于服务转发路径,其中所述加法器用于接收进行所述FMA运算的第一部分的乘法器的中间结果。
18.根据权利要求16所述的微处理器,其中,还包括调度器,所述调度器被配置为保留用以服务转发路径的加法器,其中所述加法器用于接收进行所述FMA运算的第一部分的乘法器的结果。
19.根据权利要求1所述的微处理器,其中,还包括:
调度器;以及
分派端口,其与所述第二指令执行单元相关联,
其中,所述调度器被配置为通过在所述第二指令执行单元要从所述第一指令执行单元接收所述中间结果时、避免经由将竞争所述第二指令执行单元执行所述融合复合算术运算的第二部分所需的资源的所述分派端口来分派微指令,保留所述第二指令执行单元以执行所述融合复合算术运算的第二部分。
20.一种微处理器内的执行融合复合算术运算的方法,所述方法包括以下步骤:
向第一指令执行单元分派指定所述融合复合算术运算的拆分执行微指令;
所述第一指令执行单元仅执行所述融合复合算术运算的第一部分,并且产生该第一部分的中间结果;以及
第二指令执行单元接收所述中间结果,并且执行所述融合复合算术运算的第二部分以产生最终结果,
其中,各指令执行单元包括一组逻辑电路,其中,所述一组逻辑电路被提供以执行发送至所述一组逻辑电路以供完成的指定一组微指令中的除所述拆分执行微指令以外的任何微指令,并且产生该任何微指令的最终结果,以及
所述第二指令执行单元在无需接收与所述第一指令执行单元接收到的拆分执行微指令不同的微指令的情况下,执行所述融合复合算术运算的第二部分。
21.根据权利要求20所述的方法,其中,所述第二指令执行单元在无需接收所述拆分执行微指令的情况下,执行所述融合复合算术运算的第二部分。
22.根据权利要求20所述的方法,其中,还包括以下步骤:将除操作码以外的控制信号传递至所述第二指令执行单元,以执行所述融合复合算术运算的第二部分。
23.根据权利要求20所述的方法,其中,还包括以下步骤:将所述中间结果转发至所述第二指令执行单元。
24.根据权利要求20所述的方法,其中,所述融合复合算术运算是浮点乘加微指令,并且所述第一指令执行单元是乘法器且所述第二指令执行单元是加法器。
25.根据权利要求20所述的方法,其中,不进行舍入来生成所述中间结果。
26.根据权利要求20所述的方法,其中,所述融合复合算术运算是±A*B±C形式的融合乘累加运算,其中A、B和C是输入操作数,并且所述第一指令执行单元是乘法器且所述第二指令执行单元是加法器。
27.根据权利要求26所述的方法,其中,所述乘法器执行所述融合乘累加运算的第一部分,其中所述融合乘累加运算包括将A和B相乘并且有条件地将C累加到A和B的部分乘积的计算。
28.根据权利要求27所述的方法,其中,在所述乘法器未将C累加到A和B的部分乘积的情况下,所述加法器将C累加到A和B的乘积。
29.根据权利要求28所述的方法,其中,所述加法器对所述计算的结果进行舍入。
30.根据权利要求20所述的方法,其中,还包括以下步骤:将给定的微指令分派至所选择的单个端口以供多个执行单元串行执行,而无需将所述拆分执行微指令再分派至参与所述拆分执行微指令的串行执行的所述多个执行单元中的各执行单元,其中所述多个执行单元中的第一个执行单元连接至所述所选择的单个端口。
31.根据权利要求20所述的方法,其中,对于一个给定微指令,所述融合复合算术运算是融合浮点乘加运算即融合FMA运算,所述第一指令执行单元是乘法器,所述第二指令执行单元是加法器,并且所述微处理器包括多个乘法器和加法器。
32.根据权利要求31所述的方法,其中,还包括以下步骤:对加法器进行调度以使该加法器可用于服务转发路径,其中所述加法器用于接收进行所述FMA运算的第一部分的乘法器的中间结果。
33.根据权利要求31所述的方法,其中,还包括以下步骤:保留用以服务转发路径的加法器,其中所述加法器用于接收进行所述FMA运算的第一部分的乘法器的结果。
34.根据权利要求20所述的方法,其中,还包括以下步骤:通过在所述第二指令执行单元要从所述第一指令执行单元接收所述中间结果时、避免经由将竞争所述第二指令执行单元执行所述融合复合算术运算的第二部分所需的资源的分派端口来分派微指令,保留所述第二指令执行单元以执行所述融合复合算术运算的第二部分。
35.一种微处理器,包括:
第一指令执行单元和第二指令执行单元,各指令执行单元包括特征性的一组逻辑电路,其中所述一组逻辑电路被提供以执行传递至所述一组逻辑电路以供完成的指定一组微指令中的任何微指令、并且产生该任何微指令的最终结果,
其中,所述第一指令执行单元和所述第二指令执行单元还被配置为进行指定一组融合复合算术运算的拆分执行的链式模式和非链式模式,其中所述第一指令执行单元在接收到拆分执行微指令之后,仅执行所述融合复合算术运算的第一部分并且产生该第一部分的中间结果,以及所述第二指令执行单元接收所述中间结果,并执行所述融合复合算术运算的第二部分以产生最终结果,
在拆分执行的所述非链式模式中,第一非链式拆分执行微指令和第二非链式拆分执行微指令分别向所述第一指令执行单元和所述第二指令执行单元发出,以及
在拆分执行的所述链式模式中,单个链式拆分执行微指令被发出,其中所述单个链式拆分执行微指令使得所述第一指令执行单元和所述第二指令执行单元这两者执行所述融合复合算术运算的各自的部分。
36.根据权利要求35所述的微处理器,其中,还包括可配置信号源,所述可配置信号源用于存储用以指定拆分执行的模式的配置设置。
37.根据权利要求36所述的微处理器,其中,所述微处理器被配置为响应于指定所述融合复合算术运算的指令,根据所述配置设置来发出所述第一非链式拆分执行微指令和所述第二非链式拆分执行微指令或者所述单个链式拆分执行微指令。
38.根据权利要求36所述的微处理器,其中,还包括转译器,所述转译器被配置为根据所述配置设置将指定所述融合复合算术运算的指令转译成用于进行拆分执行的非链式模式的所述第一非链式拆分执行微指令和所述第二非链式拆分执行微指令、或者转译成用于进行拆分执行的所述链式模式的所述单个链式拆分执行微指令。
39.根据权利要求36所述的微处理器,其中,所述配置设置被配置为由监视软件进行设置。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201562236529P | 2015-10-02 | 2015-10-02 | |
US62/236,529 | 2015-10-02 | ||
US15/202,351 US11061672B2 (en) | 2015-10-02 | 2016-07-05 | Chained split execution of fused compound arithmetic operations |
US15/202,351 | 2016-07-05 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106406812A true CN106406812A (zh) | 2017-02-15 |
CN106406812B CN106406812B (zh) | 2021-01-22 |
Family
ID=58446778
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610882680.3A Active CN106406812B (zh) | 2015-10-02 | 2016-10-09 | 微处理器和微处理器内的执行融合复合算术运算的方法 |
Country Status (2)
Country | Link |
---|---|
US (1) | US11061672B2 (zh) |
CN (1) | CN106406812B (zh) |
Cited By (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108279928A (zh) * | 2018-01-30 | 2018-07-13 | 上海兆芯集成电路有限公司 | 微指令调度方法及使用此方法的装置 |
CN110163792A (zh) * | 2017-04-24 | 2019-08-23 | 英特尔公司 | 计算优化机制 |
WO2019218896A1 (zh) * | 2018-05-18 | 2019-11-21 | 上海寒武纪信息科技有限公司 | 计算方法以及相关产品 |
CN111338695A (zh) * | 2018-12-19 | 2020-06-26 | 中科寒武纪科技股份有限公司 | 基于流水线技术的数据处理方法及相关产品 |
CN111767994A (zh) * | 2019-04-01 | 2020-10-13 | 中国科学院半导体研究所 | 一种神经元计算模块 |
CN113377334A (zh) * | 2021-08-16 | 2021-09-10 | 北京微核芯科技有限公司 | 一种浮点数据处理方法、装置及存储介质 |
US11397579B2 (en) | 2018-02-13 | 2022-07-26 | Shanghai Cambricon Information Technology Co., Ltd | Computing device and method |
US11437032B2 (en) | 2017-09-29 | 2022-09-06 | Shanghai Cambricon Information Technology Co., Ltd | Image processing apparatus and method |
US11513586B2 (en) | 2018-02-14 | 2022-11-29 | Shanghai Cambricon Information Technology Co., Ltd | Control device, method and equipment for processor |
US11544059B2 (en) | 2018-12-28 | 2023-01-03 | Cambricon (Xi'an) Semiconductor Co., Ltd. | Signal processing device, signal processing method and related products |
US11609760B2 (en) | 2018-02-13 | 2023-03-21 | Shanghai Cambricon Information Technology Co., Ltd | Computing device and method |
US11630666B2 (en) | 2018-02-13 | 2023-04-18 | Shanghai Cambricon Information Technology Co., Ltd | Computing device and method |
US11675676B2 (en) | 2019-06-12 | 2023-06-13 | Shanghai Cambricon Information Technology Co., Ltd | Neural network quantization parameter determination method and related products |
US11676028B2 (en) | 2019-06-12 | 2023-06-13 | Shanghai Cambricon Information Technology Co., Ltd | Neural network quantization parameter determination method and related products |
US11703939B2 (en) | 2018-09-28 | 2023-07-18 | Shanghai Cambricon Information Technology Co., Ltd | Signal processing device and related products |
US11762690B2 (en) | 2019-04-18 | 2023-09-19 | Cambricon Technologies Corporation Limited | Data processing method and related products |
US11789847B2 (en) | 2018-06-27 | 2023-10-17 | Shanghai Cambricon Information Technology Co., Ltd | On-chip code breakpoint debugging method, on-chip processor, and chip breakpoint debugging system |
US11847554B2 (en) | 2019-04-18 | 2023-12-19 | Cambricon Technologies Corporation Limited | Data processing method and related products |
US11966583B2 (en) | 2018-08-28 | 2024-04-23 | Cambricon Technologies Corporation Limited | Data pre-processing method and device, and related computer device and storage medium |
US12001955B2 (en) | 2019-08-23 | 2024-06-04 | Anhui Cambricon Information Technology Co., Ltd. | Data processing method, device, computer equipment and storage medium |
Families Citing this family (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9891886B2 (en) | 2014-07-02 | 2018-02-13 | Via Alliance Semiconductor Co., Ltd | Split-path heuristic for performing a fused FMA operation |
US10078512B2 (en) | 2016-10-03 | 2018-09-18 | Via Alliance Semiconductor Co., Ltd. | Processing denormal numbers in FMA hardware |
US11567765B2 (en) | 2017-03-20 | 2023-01-31 | Intel Corporation | Systems, methods, and apparatuses for tile load |
US10417731B2 (en) | 2017-04-24 | 2019-09-17 | Intel Corporation | Compute optimization mechanism for deep neural networks |
US10417734B2 (en) | 2017-04-24 | 2019-09-17 | Intel Corporation | Compute optimization mechanism for deep neural networks |
US11275588B2 (en) | 2017-07-01 | 2022-03-15 | Intel Corporation | Context save with variable save state size |
US10782933B2 (en) * | 2019-04-28 | 2020-09-22 | Alibaba Group Holding Limited | Computer data processing method and apparatus for large number operations |
US11269651B2 (en) | 2019-09-10 | 2022-03-08 | International Business Machines Corporation | Reusing adjacent SIMD unit for fast wide result generation |
US11842169B1 (en) * | 2019-09-25 | 2023-12-12 | Amazon Technologies, Inc. | Systolic multiply delayed accumulate processor architecture |
US11467806B2 (en) | 2019-11-27 | 2022-10-11 | Amazon Technologies, Inc. | Systolic array including fused multiply accumulate with efficient prenormalization and extended dynamic range |
US11816446B2 (en) | 2019-11-27 | 2023-11-14 | Amazon Technologies, Inc. | Systolic array component combining multiple integer and floating-point data types |
CN113168308A (zh) * | 2020-04-20 | 2021-07-23 | 深圳市大疆创新科技有限公司 | 浮点累加装置、方法和计算机存储介质 |
US11308027B1 (en) | 2020-06-29 | 2022-04-19 | Amazon Technologies, Inc. | Multiple accumulate busses in a systolic array |
CN114428638A (zh) | 2020-10-29 | 2022-05-03 | 平头哥(上海)半导体技术有限公司 | 指令发射单元、指令执行单元、相关装置和方法 |
US11880682B2 (en) | 2021-06-30 | 2024-01-23 | Amazon Technologies, Inc. | Systolic array with efficient input reduction and extended array performance |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5880984A (en) * | 1997-01-13 | 1999-03-09 | International Business Machines Corporation | Method and apparatus for performing high-precision multiply-add calculations using independent multiply and add instruments |
CN1327555A (zh) * | 1999-08-03 | 2001-12-19 | 皇家菲利浦电子有限公司 | 选择性延时乘法结果的运算器和方法 |
CN1560731A (zh) * | 2004-03-03 | 2005-01-05 | 浙江大学 | 32位媒体数字信号处理器 |
US20080141253A1 (en) * | 2006-12-11 | 2008-06-12 | Luick David A | Cascaded Delayed Float/Vector Execution Pipeline |
US20080256162A1 (en) * | 2007-04-10 | 2008-10-16 | Via Technologies, Inc. | X87 fused multiply-add instruction |
US20110072066A1 (en) * | 2009-09-21 | 2011-03-24 | Arm Limited | Apparatus and method for performing fused multiply add floating point operation |
CN102339217A (zh) * | 2010-07-27 | 2012-02-01 | 中兴通讯股份有限公司 | 一种浮点数乘加器融合处理装置及方法 |
CN103119579A (zh) * | 2010-09-24 | 2013-05-22 | 英特尔公司 | 用于向量整数乘加指令的功能单元 |
CN103907089A (zh) * | 2011-04-07 | 2014-07-02 | 威盛电子股份有限公司 | 一种乱序执行微处理器中的有条件加载指令 |
US20140189305A1 (en) * | 2012-12-31 | 2014-07-03 | Brian J. Hickmann | Redundant execution for reliability in a super fma alu |
Family Cites Families (41)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB1527289A (en) | 1976-08-17 | 1978-10-04 | Int Computers Ltd | Data processing systems |
US4974198A (en) | 1986-07-16 | 1990-11-27 | Nec Corporation | Vector processing system utilizing firm ware control to prevent delays during processing operations |
US5204828A (en) * | 1989-02-10 | 1993-04-20 | Intel Corporation | Bus apparatus having hold registers for parallel processing in a microprocessor |
US5375078A (en) | 1992-12-15 | 1994-12-20 | International Business Machines Corporation | Arithmetic unit for performing XY+B operation |
US5347481A (en) | 1993-02-01 | 1994-09-13 | Hal Computer Systems, Inc. | Method and apparatus for multiplying denormalized binary floating point numbers without additional delay |
DE69519449T2 (de) | 1994-05-05 | 2001-06-21 | Conexant Systems Inc | Raumzeigersdatenpfad |
GB9513115D0 (en) | 1995-06-28 | 1995-08-30 | Biochemie Sa | Organic compounds |
US5880983A (en) | 1996-03-25 | 1999-03-09 | International Business Machines Corporation | Floating point split multiply/add system which has infinite precision |
US6233672B1 (en) | 1997-03-06 | 2001-05-15 | Advanced Micro Devices, Inc. | Piping rounding mode bits with floating point instructions to eliminate serialization |
US6094668A (en) | 1997-10-23 | 2000-07-25 | Advanced Micro Devices, Inc. | Floating point arithmetic unit including an efficient close data path |
US20040098439A1 (en) | 2000-02-22 | 2004-05-20 | Bass Stephen L. | Apparatus and method for sharing overflow/underflow compare hardware in a floating-point multiply-accumulate (FMAC) or floating-point adder (FADD) unit |
US7117372B1 (en) | 2000-11-28 | 2006-10-03 | Xilinx, Inc. | Programmable logic device with decryption and structure for preventing design relocation |
US7080111B2 (en) | 2001-06-04 | 2006-07-18 | Intel Corporation | Floating point multiply accumulator |
US6779013B2 (en) | 2001-06-04 | 2004-08-17 | Intel Corporation | Floating point overflow and sign detection |
US6947962B2 (en) | 2002-01-24 | 2005-09-20 | Intel Corporation | Overflow prediction algorithm and logic for high speed arithmetic units |
US7689641B2 (en) | 2003-06-30 | 2010-03-30 | Intel Corporation | SIMD integer multiply high with round and shift |
GB2411975B (en) | 2003-12-09 | 2006-10-04 | Advanced Risc Mach Ltd | Data processing apparatus and method for performing arithmetic operations in SIMD data processing |
US7433911B2 (en) | 2004-12-21 | 2008-10-07 | Arm Limited | Data processing apparatus and method for performing floating point addition |
US7401107B2 (en) | 2004-12-22 | 2008-07-15 | Arm Limited | Data processing apparatus and method for converting a fixed point number to a floating point number |
US7451172B2 (en) * | 2005-02-10 | 2008-11-11 | International Business Machines Corporation | Handling denormal floating point operands when result must be normalized |
US7461117B2 (en) | 2005-02-11 | 2008-12-02 | International Business Machines Corporation | Floating point unit with fused multiply add and method for calculating a result with a floating point unit |
US20070038693A1 (en) | 2005-08-10 | 2007-02-15 | Christian Jacobi | Method and Processor for Performing a Floating-Point Instruction Within a Processor |
US7720900B2 (en) * | 2005-09-09 | 2010-05-18 | International Business Machines Corporation | Fused multiply add split for multiple precision arithmetic |
JP4482052B2 (ja) | 2006-02-14 | 2010-06-16 | 富士通株式会社 | 演算装置および演算方法 |
US7912887B2 (en) | 2006-05-10 | 2011-03-22 | Qualcomm Incorporated | Mode-based multiply-add recoding for denormal operands |
US8429384B2 (en) | 2006-07-11 | 2013-04-23 | Harman International Industries, Incorporated | Interleaved hardware multithreading processor architecture |
US8443029B2 (en) | 2007-03-01 | 2013-05-14 | International Business Machines Corporation | Round for reround mode in a decimal floating point instruction |
US8443030B1 (en) * | 2007-03-09 | 2013-05-14 | Marvell International Ltd. | Processing of floating point multiply-accumulate instructions using multiple operand pathways |
US8078660B2 (en) | 2007-04-10 | 2011-12-13 | The Board Of Regents, University Of Texas System | Bridge fused multiply-adder circuit |
US8046399B1 (en) | 2008-01-25 | 2011-10-25 | Oracle America, Inc. | Fused multiply-add rounding and unfused multiply-add rounding in a single multiply-add module |
US20090248769A1 (en) | 2008-03-26 | 2009-10-01 | Teck-Kuen Chua | Multiply and accumulate digital filter operations |
US9507656B2 (en) | 2009-04-16 | 2016-11-29 | Oracle America, Inc. | Mechanism for handling unfused multiply-accumulate accrued exception bits in a processor |
US8386755B2 (en) | 2009-07-28 | 2013-02-26 | Via Technologies, Inc. | Non-atomic scheduling of micro-operations to perform round instruction |
US8577948B2 (en) | 2010-09-20 | 2013-11-05 | Intel Corporation | Split path multiply accumulate unit |
US8914430B2 (en) | 2010-09-24 | 2014-12-16 | Intel Corporation | Multiply add functional unit capable of executing scale, round, GETEXP, round, GETMANT, reduce, range and class instructions |
US8965945B2 (en) | 2011-02-17 | 2015-02-24 | Arm Limited | Apparatus and method for performing floating point addition |
US8671129B2 (en) | 2011-03-08 | 2014-03-11 | Oracle International Corporation | System and method of bypassing unrounded results in a multiply-add pipeline unit |
US9213523B2 (en) | 2012-06-29 | 2015-12-15 | Intel Corporation | Double rounded combined floating-point multiply and add |
US8892619B2 (en) | 2012-07-24 | 2014-11-18 | The Board Of Trustees Of The Leland Stanford Junior University | Floating-point multiply-add unit using cascade design |
US9152382B2 (en) * | 2012-10-31 | 2015-10-06 | Intel Corporation | Reducing power consumption in a fused multiply-add (FMA) unit responsive to input data values |
US9891886B2 (en) | 2014-07-02 | 2018-02-13 | Via Alliance Semiconductor Co., Ltd | Split-path heuristic for performing a fused FMA operation |
-
2016
- 2016-07-05 US US15/202,351 patent/US11061672B2/en active Active
- 2016-10-09 CN CN201610882680.3A patent/CN106406812B/zh active Active
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5880984A (en) * | 1997-01-13 | 1999-03-09 | International Business Machines Corporation | Method and apparatus for performing high-precision multiply-add calculations using independent multiply and add instruments |
CN1327555A (zh) * | 1999-08-03 | 2001-12-19 | 皇家菲利浦电子有限公司 | 选择性延时乘法结果的运算器和方法 |
CN1560731A (zh) * | 2004-03-03 | 2005-01-05 | 浙江大学 | 32位媒体数字信号处理器 |
US20080141253A1 (en) * | 2006-12-11 | 2008-06-12 | Luick David A | Cascaded Delayed Float/Vector Execution Pipeline |
US20080256162A1 (en) * | 2007-04-10 | 2008-10-16 | Via Technologies, Inc. | X87 fused multiply-add instruction |
US20110072066A1 (en) * | 2009-09-21 | 2011-03-24 | Arm Limited | Apparatus and method for performing fused multiply add floating point operation |
CN102339217A (zh) * | 2010-07-27 | 2012-02-01 | 中兴通讯股份有限公司 | 一种浮点数乘加器融合处理装置及方法 |
CN103119579A (zh) * | 2010-09-24 | 2013-05-22 | 英特尔公司 | 用于向量整数乘加指令的功能单元 |
CN103907089A (zh) * | 2011-04-07 | 2014-07-02 | 威盛电子股份有限公司 | 一种乱序执行微处理器中的有条件加载指令 |
US20140189305A1 (en) * | 2012-12-31 | 2014-07-03 | Brian J. Hickmann | Redundant execution for reliability in a super fma alu |
Cited By (38)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11080811B2 (en) | 2017-04-24 | 2021-08-03 | Intel Corporation | Compute optimization mechanism |
CN110163792A (zh) * | 2017-04-24 | 2019-08-23 | 英特尔公司 | 计算优化机制 |
US11270405B2 (en) | 2017-04-24 | 2022-03-08 | Intel Corporation | Compute optimization mechanism |
CN111932434A (zh) * | 2017-04-24 | 2020-11-13 | 英特尔公司 | 计算优化机制 |
US11080813B2 (en) | 2017-04-24 | 2021-08-03 | Intel Corporation | Compute optimization mechanism |
US11437032B2 (en) | 2017-09-29 | 2022-09-06 | Shanghai Cambricon Information Technology Co., Ltd | Image processing apparatus and method |
CN108279928A (zh) * | 2018-01-30 | 2018-07-13 | 上海兆芯集成电路有限公司 | 微指令调度方法及使用此方法的装置 |
US11397579B2 (en) | 2018-02-13 | 2022-07-26 | Shanghai Cambricon Information Technology Co., Ltd | Computing device and method |
US11720357B2 (en) | 2018-02-13 | 2023-08-08 | Shanghai Cambricon Information Technology Co., Ltd | Computing device and method |
US11663002B2 (en) | 2018-02-13 | 2023-05-30 | Shanghai Cambricon Information Technology Co., Ltd | Computing device and method |
US11709672B2 (en) | 2018-02-13 | 2023-07-25 | Shanghai Cambricon Information Technology Co., Ltd | Computing device and method |
US11630666B2 (en) | 2018-02-13 | 2023-04-18 | Shanghai Cambricon Information Technology Co., Ltd | Computing device and method |
US11620130B2 (en) | 2018-02-13 | 2023-04-04 | Shanghai Cambricon Information Technology Co., Ltd | Computing device and method |
US11609760B2 (en) | 2018-02-13 | 2023-03-21 | Shanghai Cambricon Information Technology Co., Ltd | Computing device and method |
US11704125B2 (en) | 2018-02-13 | 2023-07-18 | Cambricon (Xi'an) Semiconductor Co., Ltd. | Computing device and method |
US11740898B2 (en) | 2018-02-13 | 2023-08-29 | Shanghai Cambricon Information Technology Co., Ltd | Computing device and method |
US11507370B2 (en) | 2018-02-13 | 2022-11-22 | Cambricon (Xi'an) Semiconductor Co., Ltd. | Method and device for dynamically adjusting decimal point positions in neural network computations |
US11513586B2 (en) | 2018-02-14 | 2022-11-29 | Shanghai Cambricon Information Technology Co., Ltd | Control device, method and equipment for processor |
US11442786B2 (en) | 2018-05-18 | 2022-09-13 | Shanghai Cambricon Information Technology Co., Ltd | Computation method and product thereof |
US11442785B2 (en) | 2018-05-18 | 2022-09-13 | Shanghai Cambricon Information Technology Co., Ltd | Computation method and product thereof |
WO2019218896A1 (zh) * | 2018-05-18 | 2019-11-21 | 上海寒武纪信息科技有限公司 | 计算方法以及相关产品 |
US11409575B2 (en) | 2018-05-18 | 2022-08-09 | Shanghai Cambricon Information Technology Co., Ltd | Computation method and product thereof |
US11789847B2 (en) | 2018-06-27 | 2023-10-17 | Shanghai Cambricon Information Technology Co., Ltd | On-chip code breakpoint debugging method, on-chip processor, and chip breakpoint debugging system |
US11966583B2 (en) | 2018-08-28 | 2024-04-23 | Cambricon Technologies Corporation Limited | Data pre-processing method and device, and related computer device and storage medium |
US11703939B2 (en) | 2018-09-28 | 2023-07-18 | Shanghai Cambricon Information Technology Co., Ltd | Signal processing device and related products |
CN111338695B (zh) * | 2018-12-19 | 2022-05-17 | 中科寒武纪科技股份有限公司 | 基于流水线技术的数据处理方法及相关产品 |
CN111338695A (zh) * | 2018-12-19 | 2020-06-26 | 中科寒武纪科技股份有限公司 | 基于流水线技术的数据处理方法及相关产品 |
US11544059B2 (en) | 2018-12-28 | 2023-01-03 | Cambricon (Xi'an) Semiconductor Co., Ltd. | Signal processing device, signal processing method and related products |
CN111767994A (zh) * | 2019-04-01 | 2020-10-13 | 中国科学院半导体研究所 | 一种神经元计算模块 |
US11847554B2 (en) | 2019-04-18 | 2023-12-19 | Cambricon Technologies Corporation Limited | Data processing method and related products |
US11762690B2 (en) | 2019-04-18 | 2023-09-19 | Cambricon Technologies Corporation Limited | Data processing method and related products |
US11934940B2 (en) | 2019-04-18 | 2024-03-19 | Cambricon Technologies Corporation Limited | AI processor simulation |
US11675676B2 (en) | 2019-06-12 | 2023-06-13 | Shanghai Cambricon Information Technology Co., Ltd | Neural network quantization parameter determination method and related products |
US11676028B2 (en) | 2019-06-12 | 2023-06-13 | Shanghai Cambricon Information Technology Co., Ltd | Neural network quantization parameter determination method and related products |
US11676029B2 (en) | 2019-06-12 | 2023-06-13 | Shanghai Cambricon Information Technology Co., Ltd | Neural network quantization parameter determination method and related products |
US12001955B2 (en) | 2019-08-23 | 2024-06-04 | Anhui Cambricon Information Technology Co., Ltd. | Data processing method, device, computer equipment and storage medium |
CN113377334B (zh) * | 2021-08-16 | 2021-11-02 | 北京微核芯科技有限公司 | 一种浮点数据处理方法、装置及存储介质 |
CN113377334A (zh) * | 2021-08-16 | 2021-09-10 | 北京微核芯科技有限公司 | 一种浮点数据处理方法、装置及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
US11061672B2 (en) | 2021-07-13 |
US20170097824A1 (en) | 2017-04-06 |
CN106406812B (zh) | 2021-01-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106406812A (zh) | 微处理器和微处理器内的执行融合复合算术运算的方法 | |
US10387319B2 (en) | Processors, methods, and systems for a configurable spatial accelerator with memory system performance, power reduction, and atomics support features | |
US10417175B2 (en) | Apparatus, methods, and systems for memory consistency in a configurable spatial accelerator | |
US10469397B2 (en) | Processors and methods with configurable network-based dataflow operator circuits | |
US10445234B2 (en) | Processors, methods, and systems for a configurable spatial accelerator with transactional and replay features | |
US10558575B2 (en) | Processors, methods, and systems with a configurable spatial accelerator | |
US20190005161A1 (en) | Processors, methods, and systems for a configurable spatial accelerator with performance, correctness, and power reduction features | |
US20190101952A1 (en) | Processors and methods for configurable clock gating in a spatial array | |
US20190303263A1 (en) | Apparatus, methods, and systems for integrated performance monitoring in a configurable spatial accelerator | |
US20190095383A1 (en) | Processors, methods, and systems for debugging a configurable spatial accelerator | |
US20190303297A1 (en) | Apparatus, methods, and systems for remote memory access in a configurable spatial accelerator | |
US20190004878A1 (en) | Processors, methods, and systems for a configurable spatial accelerator with security, power reduction, and performace features | |
EP3513281B1 (en) | Vector multiply-add instruction | |
US20190018815A1 (en) | Processors, methods, and systems with a configurable spatial accelerator | |
US20200310994A1 (en) | Apparatuses, methods, and systems for memory interface circuit allocation in a configurable spatial accelerator | |
US20180189063A1 (en) | Processors, methods, and systems with a configurable spatial accelerator | |
US8412917B2 (en) | Data exchange and communication between execution units in a parallel processor | |
US8230408B2 (en) | Execution of hardware description language (HDL) programs | |
US11029958B1 (en) | Apparatuses, methods, and systems for configurable operand size operations in an operation configurable spatial accelerator | |
EP3776228A1 (en) | Apparatuses, methods, and systems for unstructured data flow in a configurable spatial accelerator | |
US20210216318A1 (en) | Vector Processor Architectures | |
JP3851707B2 (ja) | スーパースカラープロセッサの中央処理ユニット | |
JP3607476B2 (ja) | マイクロプロセッサ内の共有データパスを介して整数データ及び浮動小数点データを通信する方法並びに処理装置 | |
US7013321B2 (en) | Methods and apparatus for performing parallel integer multiply accumulate operations | |
US20100241938A1 (en) | System and method for achieving improved accuracy from efficient computer architectures |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CP03 | Change of name, title or address | ||
CP03 | Change of name, title or address |
Address after: Room 301, 2537 Jinke Road, Zhangjiang High Tech Park, Pudong New Area, Shanghai 201203 Patentee after: Shanghai Zhaoxin Semiconductor Co.,Ltd. Address before: Room 301, 2537 Jinke Road, Zhangjiang hi tech park, Pudong New Area, Shanghai 201203 Patentee before: VIA ALLIANCE SEMICONDUCTOR Co.,Ltd. |