CN108595147B - 具有级数运算执行电路的微处理器 - Google Patents

具有级数运算执行电路的微处理器 Download PDF

Info

Publication number
CN108595147B
CN108595147B CN201810001411.0A CN201810001411A CN108595147B CN 108595147 B CN108595147 B CN 108595147B CN 201810001411 A CN201810001411 A CN 201810001411A CN 108595147 B CN108595147 B CN 108595147B
Authority
CN
China
Prior art keywords
value
power
coefficient
indefinite number
multiplier
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.)
Active
Application number
CN201810001411.0A
Other languages
English (en)
Other versions
CN108595147A (zh
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.)
Shanghai Zhaoxin Semiconductor Co Ltd
Original Assignee
Shanghai Zhaoxin Integrated Circuit Co Ltd
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 Shanghai Zhaoxin Integrated Circuit Co Ltd filed Critical Shanghai Zhaoxin Integrated Circuit Co Ltd
Priority to CN201810001411.0A priority Critical patent/CN108595147B/zh
Priority to US16/027,983 priority patent/US10754648B2/en
Priority to TW107126322A priority patent/TWI686057B/zh
Publication of CN108595147A publication Critical patent/CN108595147A/zh
Application granted granted Critical
Publication of CN108595147B publication Critical patent/CN108595147B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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/3001Arithmetic instructions
    • 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
    • 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/57Arithmetic 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
    • 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/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/3016Decoding the operand specifier, e.g. specifier format
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/048Activation functions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • Mathematical Analysis (AREA)
  • Computational Mathematics (AREA)
  • Computing Systems (AREA)
  • Biophysics (AREA)
  • Biomedical Technology (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Mathematical Physics (AREA)
  • Data Mining & Analysis (AREA)
  • Computational Linguistics (AREA)
  • Molecular Biology (AREA)
  • Artificial Intelligence (AREA)
  • Evolutionary Computation (AREA)
  • General Health & Medical Sciences (AREA)
  • Neurology (AREA)
  • Complex Calculations (AREA)
  • Advance Control (AREA)

Abstract

本发明公开了一种具有级数运算执行电路的微处理器。该微处理器电路,执行一微指令且包括一指令解码器以及一级数运算执行电路。该指令解码器解码该微指令,该微指令的来源对应一不定数以及多个幂系数。该级数运算执行电路,根据该不定数以及该等幂系数,进行一级数运算。该级数运算执行电路以至少一乘法器计算该不定数的多个幂,并藉至少一乘加器对该等幂系数、该不定数及其该等幂进行该级数运算。

Description

具有级数运算执行电路的微处理器
技术领域
本发明涉及微处理器的硬件执行电路。
背景技术
微处理器(microprocessor),例如中央处理器(CPU)内通常设置有根据微指令(micro-instruction)或者微操作(micro-op或μop)动作的执行单元(execution unit)。传统指令集架构(例如X86指令集架构)的微处理器的执行单元在执行较为复杂的宏指令(macro-instruction)时,都会在执行单元之前的指令解码器将宏指令翻译为多个微指令(micro-instruction或μop),再将微指令乱序发射(issue)或派遣(dispatch)至执行单元执行。在现有的微处理器架构中,一条复杂的宏指令往往被解码为多个微指令,这些微指令由于乱序执行(out-of-order)和相互依赖关系(dependency),需要较长的时间周期才能执行完毕,执行效率低下。如何以简单硬件建立执行单元,又兼顾运算效能,为本技术领域一项重大课题。
发明内容
根据本申请一种实施方式所实现的一微处理器电路,执行一微指令且包括一指令解码器以及一级数运算执行电路。该指令解码器解码该微指令,该微指令的来源对应一不定数以及多个幂系数。该级数运算执行电路,根据该不定数以及该等幂系数,进行一级数运算。该级数运算执行电路以至少一乘法器计算该不定数的多个幂,并藉至少一乘加器对该等幂系数、该不定数及其该等幂进行该级数运算。本申请实现一种低运算量的硬件解决方案,以单纯硬件组成的流水线架构执行一条微指令即可高度逼近人工智能技术常使用的激励函数运算。
一种实施方式中,该级数运算执行电路包括呈流水线架构的多级逻辑电路。上述多级逻辑电路中的一第一级逻辑电路以一第一乘法器产生该不定数的一第一幂。该第一幂输入上述多级逻辑电路中的一第二级逻辑电路的乘加器之一。
一种实施方式中,该第二级逻辑电路的乘加器中的一主乘加器接收该第一幂。该第一级逻级电路所有乘加器的输出输入该第二级逻级电路的该主乘加器。
下文特举实施例,并配合所附图示,详细说明本发明内容。
附图说明
图1A图解流水线架构的级数运算的其中一级逻辑电路,包括一乘法器MUL以及多个乘加器MAU_1…MAU_K;
图1B图解一级数运算执行电路100,其中第一级至第M级逻辑电路各自根据图1A所介绍的硬件方式实现;
图2根据本申请一种实施方式图解7次幂级数的级数运算执行电路200,用以进行运算:y=a0+a1x+a2x2+a3x3+a4x4+a5x5+a6x6+a7x7
图3根据本申请一种实施方式图解14次幂级数的级数运算执行电路300,用以进行运算:y=a0+a1x+a2x2+…+a14x14
图4根据本申请一种实施方式图解一指令格式400,用于操作本申请级数运算执行电路100;且
图5为根据本申请一种实施方式实现的一微处理器500,其中包括执行单元502以及指令解码器504。
【符号说明】
100~级数运算执行电路;
102~乘法器MUL的输入;
104~乘法器MUL的输出;
106_1…106_K~乘加器MAU_1…MAU_K的第一类型输入;
112_1…112_K~乘加器MAU_1…MAU_K的第二类型输入;
121_1…121_K~乘加器MAU_1…MAU_K的输出;
200~级数运算执行电路;
201、202、203、204~级数运算执行电路200的各级逻辑电路;
300~级数运算执行电路;
301、302、303~级数运算执行电路300的各级逻辑电路;
400~指令格式;
500~微处理器;
502~执行单元;
504~指令解码器;
503~存储器;
505~寄存器;
a0…an~幂系数;
Dst~字段,对应级数运算结果y存储目的;
MAU_1…MAU_K、MAU11…MAU13、MAU21…MAU23、MAU3、MAU31…MAU33、MAU4~乘加器;
MUL、MUL1…MUL3~乘法器;
S1…S6~数值;
Src1~字段,对应幂系数(a0…an);
Src2~字段,对应不定数x;
Src3~字段,提供多项数系数个数(n+1);
x~不定数;
y~级数运算结果。
具体实施方式
以下叙述列举本发明的多种实施例。以下叙述介绍本发明的基本概念,且并非意图限制本发明内容。实际发明范围应依照权利要求书界定。
人工智能为科技领域重大发展,其中常使用类神经网络(neural network)做为机器学习架构。类神经网络中使用到的激励函数(activation function)为神经网络每一层输入,使得每一层的输出是输入的非线性函数,而不再是输入的线性组合,使得输出可以逼近任意函数。在现有的神经网络处理器架构中,激励函数的运算一般由多条宏指令完成,一条宏指令又被解码为多条微指令,这些微指令由于乱序执行(out-of-order)和相互依赖关系(dependency),需要较长的时间周期才能执行完毕,执行效率低下且通常相当耗费运算资源。本申请提供一种低运算量的硬件解决方案,高度逼近激励函数运算。
激励函数有多种形式。例如,f(x)=1/(1+e-x),f(x)=ln(1+ex),都可用来作为类神经网络的激励函数使用。本申请以级数逼近激励函数,并设计微处理器中的执行电路硬件,更设计指令集实现该级数的计算。
激励函数一般可以泰勒展开式展开。例如:
ln(1+ex)以0为中心的泰勒展开式以级数显示为:
Figure BDA0001537132780000041
1/(1+e-x)以0为中心的泰勒展开式以级数显示为:
Figure BDA0001537132780000042
代表激励函数的各式级数在本申请中,简化为以下级数形式:
y=a0x0+a1x+a2x2+…+anxn,或者y=a0+a1x+a2x2+…+anxn
其中,a0,a1…an为幂系数,x0,x,x2…xn为不定数x的多个幂,本申请以多级逻辑电路,采流水线架构实现级数运算。图1A图解其中一级逻辑电路的硬件实现方式,包括一乘法器MUL以及多个乘加器MAU_1…MAU_K。
乘法器MUL用于计算不定数x的幂。输入102可为不定数x本身或是不定数x的多次幂数值。经乘法器MUL,不定数x的更高次幂产生成输出104。不定数x的各种幂将由多级逻辑电路所提供的上述乘法器MUL计算获得,用于后续级逻辑电路的运算中,也可当级逻辑电路使用。
乘加器MAU_1…MAU_K用于组合幂系数以及不定数x的幂。第一类型的输入106_1…106_K可为不定数x的幂。各组输入106_1…106_K不需相同。以输入106_1为例,其中可仅包括多个不定数x的幂。第二类型的输入112_1…112_K可全为幂系数或全为前一级逻辑电路的乘加器MAU_1…MAU_K的输出。以乘加器MAU_1的输入112_1为例,其包含的信号为多个。输入112_1的多个信号将与输入106_1的多个信号配对相乘后,再加总。在本发明一实施例中,输入112_1中的第一个信号是与输入106_1所包含的1(也可看作不定数x的0次幂)相乘再参与加总。在本发明另一实施例中,输入112_1中的第一个信号以自身的值直接参与加总,则输入106_1所包含的不定数x的幂不包含不定数x的0次幂。乘加器MAU_1…MAU_K进行乘加操作后的输出121_1…121_K可用于下一级逻辑电路的乘加器MAU_1…MAU_K的输入信号。
图1B图解一级数运算执行电路100,其中第一级至第M级逻辑电路各自根据图1A所介绍的硬件方式实现。不定数x输入第一级逻辑电路后,将由各级逻辑电路中的乘法器MUL计算出不定数x幂。幂系数(a0…an)则是分散输入各级逻辑电路,与不定数x幂相乘。如此多级逻辑电路的设计,使得第M级逻辑电路输出y─为级数a0+a1x+a2x2+…+anxn运算结果。
在某些级逻辑电路中,不定数x的幂计算用的乘法器MUL可能不需要,和/或单一乘加器MAU即足够。例如,最末的第M级逻辑电路可能仅包括单一个乘加器MAU。
在某些实施例中,级数运算执行电路100的M级逻辑电路可以以M个图1A所示的硬件电路实现,以流水线的方式作业,例如第二级逻辑电路在处理第一个级数运算的同时,第一级逻辑电路接收第二个级数运算的输入并开始处理,如此最多可以让M个级数运算流水线作业,以提高运算效率。在本发明另一实施例中,级数运算执行电路100的M级逻辑电路可以仅包含一套如图1A所示的一乘法器MUL及多个乘加器MAU_1…MAU_K的硬件电路,即M级逻辑电路复用同一硬件电路,当乘法器MUL及多个乘加器MAU_1…MAU_K完成第一级逻辑电路的运算产生输出121_1…121_K后,121_1…121_K返回作为乘加器MAU_1输入112_1,开始进行第二级逻辑电路的运算,这种实施方式的运算效率低但电路面积小。但本发明并不局限于此,还可以采取其它折中的硬件方式实现。后面图2和图3会详述。
图2根据本申请一种实施方式图解7次幂级数的级数运算执行电路200,用以进行以下运算:
y=a0+a1x+a2x2+a3x3+a4x4+a5x5+a6x6+a7x7
图2采用四级逻辑电路201、202、203以及204。以下分别讨论各级逻辑电路。
逻辑电路201包括一乘法器MUL1以及两个乘加器MAU11以及MAU12。乘法器MUL1根据不定数x获得不定数x的平方x2,供后续级的逻辑电路使用。乘加器MAU11除了接收不定数x,更接收幂系数a0以及a1,计算出S1=a0+a1x。乘加器MAU12除了接收不定数x,更接收幂系数a2以及a3,计算出S2=a2+a3x。数值S1以及S2传递至后续级的逻辑电路使用。
逻辑电路202包括一乘法器MUL2以及两个乘加器MAU21以及MAU22。乘法器MUL2根据不定数x的平方x2获得不定数x的四次幂x4,供后续级的逻辑电路使用。乘加器MAU21除了接收逻辑电路201的乘法器MUL1提供的数值x2,更接收逻辑电路201的乘加器MAU11以及MAU12提供的数值S1以及S2,计算出S3=S1+S2x2:由于S1=a0+a1x,S2=a2+a3x,可得S3=S1+S2x2=a0+a1x+a2x2+a3x3。乘加器MAU22除了接收不定数x,更接收幂系数a4以及a5,计算出S4=a4+a5x。数值S3以及S4传递至后续级的逻辑电路使用。
逻辑电路203包括一乘法器MUL3以及两个乘加器MAU31以及MAU32。根据逻辑电路201的乘法器MUL1提供的数值x2以及逻辑电路202的乘法器MUL2提供的数值x4,乘法器MUL3输出不定数x的六次幂x6,供后续级的逻辑电路使用。乘加器MAU31除了接收逻辑电路202的乘法器MUL2提供的数值x4,更接收逻辑电路202的乘加器MAU21以及MAU22提供的数值S3以及S4,计算出S5=S3+S4x4:由于S3=a0+a1x+a2x2+a3x3,S4=a4+a5x,可得S5=S3+S4x4=a0+a1x+a2x2+a3x3+a4x4+a5x5。乘加器MAU32除了接收不定数x,更接收幂系数a6以及a7,计算出S6=a6+a7x。数值S5以及S6传递至后续级的逻辑电路使用。
逻辑电路204仅包括一乘加器MAU4。乘加器MAU4除了接收逻辑电路203的乘法器MUL3提供的数值x6,更接收逻辑电路203的乘加器MAU31以及MAU32提供的数值S5以及S6,计算出y=S5+S6x6:由于S5=a0+a1x+a2x2+a3x3+a4x4+a5x5,S6=a6+a7x,可得y=a0+a1x+a2x2+a3x3+a4x4+a5x5+a6x6+a7x7
图2所示级数运算执行电路200以简单运算硬件(包括乘法器以及乘加器)搭建出流水线架构(共201…204四级逻辑电路)完成级数运算y=a0+a1x+a2x2+a3x3+a4x4+a5x5+a6x6+a7x7,高度近似类神经网络技术所使用到的激励函数,助于人工智能技术应用于微处理器上。如前所述,在一实施例中,级数运算执行电路200的四级逻辑电路201~204分别以四层硬件电路实现,以流水线的方式作业,例如第二级逻辑电路202在处理级数运算y的同时,第一级逻辑电路201接收另一个级数运算(例如y’)的输入并开始处理,如此最多可以让4个级数运算流水线作业,以提高运算效率。在本发明另一实施例中,级数运算执行电路200可仅包含乘法器MUL1及乘加器MAU_11和MAU_12,4级逻辑电路在硬件上可复用这1个乘法器和2个乘加器:第1个时钟周期,乘法器MUL1输出x2,且乘加器MAU_11和MAU_12完成第一级逻辑电路的运算产生输出S1和S2;第2个时钟周期,x2返回作为乘法器MUL1的输入产生x4,S1和S2返回作为乘加器MAU_11的输入,开始进行第二级逻辑电路的运算。这种实施方式的运算效率低但电路面积小。但本发明并不局限于此,还可以采取其它折中的硬件方式(例如4级逻辑电路复用2套上述硬件电路)实现。
值得注意的是,图2所示级数运算执行电路200包括四级逻辑电路201~204仅为示例,本发明并不限于此。取决于硬件设计精度,如果要以更高精度近似激励函数,可采用更高次幂级数,例如y=a0+a1x+a2x2+a3x3+a4x4+a5x5+a6x6+a7x7a8x8+a9x9+a10x10+a11x11,本申请公开的流水线架构的级数运算执行电路200同样适用,跟目前图2不同之处在于:第四级逻辑电路204还包括一用于计算不定数x的八次幂x8的乘法器MUL4(图未绘示)及一用于计算S8=a8+a9x的另一乘加器MAU42(图未绘示),并且级数运算执行电路200包括第五和第六级逻辑电路205~206(图未绘示),分别形同目前图2所示的第三和第四级逻辑电路203~204,其中第五级逻辑电路205用于计算不定数x的十次幂x10、S9=S7+S8x8及S10=a10+a11x,第六级逻辑电路206用于计算输出y=S9+S10x10
图2的级数运算执行电路200中所有的乘加器均采用最简单的仅做一次加法的乘加器,硬件实现简单。但本发明并不局限于此,也可以采用更复杂的乘加器来实现。图3根据本申请一种实施方式图解14次幂级数的级数运算执行电路300,用以进行以下运算:
y=a0+a1x+a2x2+…+a14x14
图3采用三级逻辑电路301、302以及303。以下分别讨论各级逻辑电路。
逻辑电路301包括一乘法器MUL1以及三个乘加器MAU11、MAU12以及MAU13。乘法器MUL1根据不定数x获得不定数x的多种幂x2、x3以及x6,除了供后续级的逻辑电路使用,也当级即可使用。乘加器MAU11除了接收不定数x、x2,更接收幂系数a0、a1以及a2,计算出S1=a0+a1x+a2x2。乘加器MAU12除了接收不定数x、x2,更接收幂系数a3、a4以及a5,计算出S2=a3+a4x+a5x2。乘加器MAU13除了接收不定数x、x2,更接收幂系数a6、a7以及a8,计算出S3=a6+a7x+a8x2。数值S1、S2以及S3传递至后续级的逻辑电路使用。
逻辑电路302包括一乘法器MUL2以及三个乘加器MAU21、MAU22以及MAU23。根据逻辑电路301乘法器MUL1供应的不定数的幂x3以及x6,乘法器MUL2产生不定数x的多种幂x9以及x12,供后续级的逻辑电路使用。乘加器MAU21除了接收逻辑电路301乘法器MUL1供应的不定数的幂x3以及x6,更接收逻辑电路301三个乘加器MAU11、MAU12以及MAU13输出的数值S1、S2以及S3,计算出S4=S1+S2x3+S3x6:由于S1=a0+a1x+a2x2,S2=a3+a4x+a5x2,S3=a6+a7x+a8x2可得S4=a0+a1x+a2x2+a3x3+a4x4+a5x5+a6x6+a7x7+a8x8。乘加器MAU22除了接收不定数x以及x2,更接收幂系数a9、a10以及a11,计算出S5=a9+a10x+a11x2。乘加器MAU23除了接收不定数x、x2,更接收幂系数a12、a13以及a14,计算出S6=a12+a13x+a14x2。数值S4、S5以及S6传递至后续级的逻辑电路使用。
逻辑电路303包括一乘加器MAU3。乘加器MAU3除了接收逻辑电路302的乘法器MUL2提供的数值不定数幂x9以及x12,更接收逻辑电路302的乘加器MAU21、MAU22以及MAU23提供的数值S4、S5以及S6,计算出y=S4+S5x9+S6x12
由于S4=a0+a1x+a2x2+a3x3+a4x4+a5x5+a6x6+a7x7+a8x8,S5=a9+a10x+a11x2,S6=a12+a13x+a14x2可得
y=a0+a1x+a2x2+a3x3+a4x4+a5x5+a6x6+a7x7+a8x8+a9x9+a10x10+a11x11+a12x12+a13x13+a14x14
级数运算执行电路300依旧是以单纯硬件组成的流水线架构,高度近似类神经网络技术所使用到的激励函数,助于人工智能技术应用于微处理器上。图3的级数运算执行电路300中的乘加器MAU11~MAU13、MAU21~MAU23及MAU3采用更复杂的乘加器,每个乘加器可以实现形如S=a+bxp+cxq的乘加运算,较之图2的级数运算执行电路200,硬件电路复杂但指令执行效率高。
如前所述,在一实施例中,级数运算执行电路300的三级逻辑电路301~303分别以三层硬件电路实现,以流水线的方式作业,例如第二级逻辑电路302在处理级数运算y的同时,第一级逻辑电路301接收另一个级数运算(例如y’)的输入并开始处理,如此最多可以让3个级数运算流水线作业,以提高运算效率。在本发明另一实施例中,级数运算执行电路300可仅包含乘法器MUL1及乘加器MAU_11、MAU_12和MAU_13,3级逻辑电路在硬件上可复用这1个乘法器和3个乘加器:第1个时钟周期,乘法器MUL1输出x2、x3和x6,且乘加器MAU_11、MAU_12和MAU_13完成第一级逻辑电路的运算产生输出S1、S2和S3;第2个时钟周期,x3和x6返回作为乘法器MUL1的输入产生x9和x12,S1、S2和S3返回作为乘加器MAU_11的输入,开始进行第二级逻辑电路的运算。这种实施方式的运算效率低但电路面积小。但本发明并不局限于此,还可以采取其它折中的硬件方式实现。
图2实现的级数运算执行电路200的第二级逻辑电路202乘加器MAU21输出数值S3=S1+S2x2,第三级逻辑电路203乘加器MAU31输出数值S5=S3+S4x4,第四级逻辑电路204乘加器MAU4输出数值y=S5+S6x6。从第二级开始,各级逻辑电路都有一个乘加器MAU(MAU21、MAU31及MAU41,取名为主乘加器)的输入不是接收幂系数,而是接收上一级逻辑电路所有乘加器的输出,以完成级数的至少局部项次运算。
图3实现的级数运算执行电路300的第二级逻辑电路302乘加器MAU21输出数值S4=S1+S2x3+S3x6,第三级逻辑电路303乘加器MAU3输出数值y=S4+S5x9+S6x12。从第二级开始,各级逻辑电路都有一个乘加器MAU(MAU21和MAU3,取名为主乘加器)的输入不是接收幂系数,而是接收上一级逻辑电路所有乘加器的输出,以完成级数的至少局部项次运算。
图4根据本申请一种实施方式图解一指令格式400,级数运算执行电路100用于执行该指令格式400所指示的指令(以下亦标号为400)。字段Dst为该指令400的目的(destination),其对应级数运算结果y,字段Dst可以直接存储级数运算结果y,也可以供应级数运算结果y的存储地址,而级数运算结果y存储于寄存器或存储器中。字段Src1为指令400的第一个来源(source),其对应幂系数(a0…an),字段Src1可以直接存储幂系数(a0…an),也可以供应幂系数(a0…an)的存储地址,而幂系数(a0…an)存储于寄存器或存储器中。字段Src2为指令400的第二个来源(source),其对应不定数x,字段Src2可以直接存储不定数x,也可以供应不定数x的存储地址,而不定数x存储于寄存器或存储器中。字段Src3为指令400的第三个来源(source),其提供该等幂系数的个数(n+1),以区分出字段Src1对应的幂系数(a0…an)。在微处理器的应用中,一单指令多数据流(Single Instruction MultipleData,缩写:SIMD)微指令可采用所述指令格式400。
图5为根据本申请一种实施方式实现的一微处理器500,其中包括执行单元502以及指令解码器504。执行单元502具有前述级数运算执行电路100。指令解码器504解码呈指令格式400的一指令(SIMD微指令)得到其来源和目的,其中所填写的不定数x以及幂系数(a0…an)将输入该级数运算执行电路100。在一实施例中,微处理器500还包括存储器503及寄存器505,指令400可以由一宏指令翻译得来存储于存储器503中;不定数x以及幂系数(a0…an)本身也可以存储在存储器503或寄存器505中。级数运算执行电路100以流水线架构完成级数运算:y=a0+a1x+a2x2+…+anxn。微处理器500可具有人工智能技术。级数运算执行电路100利于实现人工智能算法(例如,实现类神经网络中的激励函数)。
除了人工智能技术,微处理器500也可能在其他状况下需要进行级数运算,利用级数运算执行电路100。举凡具有级数运算执行电路100硬件架构,甚至使用指令格式400的处理器都属于本申请所欲保护的范围。
虽然本发明已以优选实施例公开如上,然其并非用以限定本发明,本领域技术人员在不脱离本发明的精神和范围内,当可做些许更动与润饰,因此本发明的保护范围当视所附权利要求书界定范围为准。

Claims (20)

1.一种执行微指令的微处理器电路,包括:
指令解码器,解码该微指令,该微指令的来源对应不定数以及多个幂系数;以及
级数运算执行电路,根据该不定数以及所述幂系数,进行级数运算,
其中:
该级数运算执行电路具有至少一乘法器,用于计算该不定数的多个幂,并具有至少一乘加器,组合所述幂系数、该不定数以及由所述至少一乘法器计算的所述幂用于该级数运算。
2.如权利要求1所述的微处理器电路,其中:
该级数运算执行电路包括呈流水线架构的多级逻辑电路;
上述多级逻辑电路中的第一级逻辑电路以第一乘法器产生该不定数的第一幂;且
该第一幂输入上述多级逻辑电路中的第二级逻辑电路的乘加器之一。
3.如权利要求2所述的微处理器电路,其中:
该第二级逻辑电路的乘加器中的主乘加器接收该第一幂;且
该第一级逻辑 电路所有乘加器的输出输入该第二级逻辑 电路的该主乘加器。
4.如权利要求2所述的微处理器电路,其中:
该第一幂还输入该第二级逻辑电路中的第二乘法器以产生该不定数的第二幂。
5.如权利要求4所述的微处理器电路,其中:
该第二幂输入上述多级逻辑电路中的第三级逻辑电路的乘加器之一。
6.如权利要求5所述的微处理器电路,其中:
该第三级逻辑电路的乘加器中的主乘加器接收该第二幂;且
该第二级逻辑 电路所有乘加器的输出输入该第三级逻辑 电路的该主乘加器。
7.如权利要求1所述的微处理器电路,其中:
该级数运算执行电路包括呈流水线架构的多级逻辑电路;
所述幂系数中的第一组系数分散输入上述多级逻辑电路中的第一级逻辑电路所有乘加器;且
所述幂系数中的第二组系数分散输入上述多级逻辑电路中的第二级逻辑电路上除主乘加器外的所有乘加器。
8.如权利要求2所述的微处理器电路,其中:
该第一幂还输入该第一级逻辑电路的乘加器之一。
9.如权利要求1所述的微处理器电路,其中:
该微指令以一目的地对应该级数运算结果,以第一来源对应所述幂系数,以第二来源对应该不定数,且以第三来源提供所述幂系数的个数;且
该第一来源对应的数据根据该第三来源提供的数据分割为所述幂系数。
10.如权利要求1所述的微处理器电路,其中:
该级数运算执行电路包括呈流水线架构的多级逻辑电路;
上述多级逻辑电路中的第一级逻辑电路中的第一乘加器将所述幂系数中系数a0与该不定数的零次幂x0相乘获得数值a0x0,将所述幂系数中的系数a1与该不定数的一次幂x1相乘获得数值a1x1,并将数值a0x0与数值a1x1相加产生为数值a0x0+a1x1的数值S1
该第一级逻辑电路中的第二乘加器将所述幂系数中系数a2与该不定数的零次幂x0相乘获得数值a2x0,将所述幂系数中的系数a3与该不定数的一次幂x1相乘获得数值a3x1,并将数值a2x0与数值a3x1相加产生为数值a2x0+a3x1的数值S2;且
上述多级逻辑电路中的第二级逻辑电路中的第一乘加器将该数值S1与该不定数的零次幂x0相乘获得数值S1x0,将该数值S2与该不定数的二次幂x2相乘获得数值S2x2,并将数值S1x0与数值S2x2相加产生为数值S1x0+S2x2的数值S3
11.如权利要求10所述的微处理器电路,其中:
该第一级逻辑电路的第一乘法器产生该不定数的二次幂x2
12.如权利要求10所述的微处理器电路,其中:
该第二级逻辑电路中的第二乘加器将所述幂系数中系数a4与该不定数的零次幂x0相乘获得数值a4x0,将所述幂系数中的系数a5与该不定数的一次幂x1相乘获得数值a5x1,并将数值a4x0与数值a5x1相加产生为数值a4x0+a5x1的数值S4;且
上述多级逻辑电路中的第三级逻辑电路中的第一乘加器将该数值S3与该不定数的零次幂x0相乘获得数值S3x0,将该数值S4与该不定数的四次幂x4相乘获得数值S4x4,并将数值S3x0与数值S4x4相加产生为数值S3x0+S4x4的数值S5
13.如权利要求12所述的微处理器电路,其中:
该第二级逻辑电路的第二乘法器根据该不定数的二次幂x2产生该不定数的四次幂x4
14.如权利要求12所述的微处理器电路,其中:
该第三级逻辑电路中的第二乘加器将所述幂系数中系数a6与该不定数的零次幂x0相乘获得数值a6x0,将所述幂系数中的系数a7与该不定数的一次幂x1相乘获得数值a7x1,并将数值a6x0与数值a7x1相加产生为数值a6x0+a7x1的数值S6;且
上述多级逻辑电路中的第四级逻辑电路中的第一乘加器将该数值S5与该不定数的零次幂x0相乘获得数值S5x0,将该数值S6与该不定数的六次幂x6相乘获得数值S6x6,并将数值S5x0与数值S6x6相加产生为数值S5x0+S6x6的数值y。
15.如权利要求14所述的微处理器电路,其中:
属该第三级逻辑电路的第三乘法器根据该不定数的二次幂x2以及四次幂x4产生该不定数的六次幂x6
16.如权利要求1所述的微处理器电路,其中:
该级数运算执行电路包括呈流水线架构的多级逻辑电路;
上述多级逻辑电路中的第一级逻辑电路中的第一乘加器将所述幂系数中系数a0与该不定数的零次幂x0相乘获得数值a0x0,将所述幂系数中的系数a1与该不定数的一次幂x1相乘获得数值a1x1,将所述幂系数中的系数a2与该不定数的二次幂x2相乘获得数值a2x2,并将数值a0x0与数值a1x1与数值a2x2相加产生为数值a0x0+a1x1+a2x2的数值S1
该第一级逻辑电路中的第二乘加器将所述幂系数中系数a3与该不定数的零次幂x0相乘获得数值a3x0,将所述幂系数中的系数a4与该不定数的一次幂x1相乘获得数值a4x1,将所述幂系数中的系数a5与该不定数的二次幂x2相乘获得数值a5x2,并将数值a3x0与数值a4x1与数值a5x2相加产生为数值a3x0+a4x1+a5x2的数值S2
该第一级逻辑电路中的第三乘加器将所述幂系数中系数a6与该不定数的零次幂x0相乘获得数值a6x0,将所述幂系数中的系数a7与该不定数的一次幂x1相乘获得数值a7x1,将所述幂系数中的系数a8与该不定数的二次幂x2相乘获得数值a8x2,并将数值a6x0与数值a7x1与数值a8x2相加产生为数值a6x0+a7x1+a8x2的数值S3;且
上述多级逻辑电路中的第二级逻辑电路中的第一乘加器将该数值S1与该不定数的零次幂x0相乘获得数值S1x0,将该数值S2与该不定数的三次幂x3相乘获得数值S2x3,将该数值S3与该不定数的六次幂x6相乘获得数值S3x6,并将数值S1x0与数值S2x3与数值S3x6相加产生为数值S1x0+S2x3+S3x6的数值S4
17.如权利要求16所述的微处理器电路,其中:
该第一级逻辑电路的第一乘法器产生该不定数的二次幂x2、三次幂x3以及六次幂x6
18.如权利要求16所述的微处理器电路,其中:
该第二级逻辑电路中的第二乘加器将所述幂系数中系数a9与该不定数的零次幂x0相乘获得数值a9x0,将所述幂系数中的系数a10与该不定数的一次幂x1相乘获得数值a10x1,将所述幂系数中的系数a11与该不定数的二次幂x2相乘获得数值a11x2,并将数值a9x0与数值a10x1与数值a11x2相加产生为数值a9x0+a10x1+a11x2的数值S5
该第二级逻辑电路中的第三乘加器将所述幂系数中系数a12与该不定数的零次幂x0相乘获得数值a12x0,将所述幂系数中的系数a13与该不定数的一次幂x1相乘获得数值a13x1,将所述幂系数中的系数a14与该不定数的二次幂x2相乘获得数值a14x2,并将数值a12x0与数值a13x1与数值a14x2相加产生为数值a12x0+a13x1+a14x2的数值S6;且
上述多级逻辑电路中的第三级逻辑电路中的第一乘加器将该数值S4与该不定数的零次幂x0相乘获得数值S4x0,将该数值S5与该不定数的九次幂x9相乘获得数值S5x9,将该数值S6与该不定数的12次幂x12相乘获得数值S6x12,并将数值S4x0与数值S5x9与数值S6x12相加产生为数值S4x0+S5x9+S6x12的数值y。
19.如权利要求18所述的微处理器电路,其中:
根据该不定数的三次幂x3以及六次幂x6,该第二级逻辑电路的第二乘法器产生该不定数的九次幂x9以及12次幂x12
20.如权利要求1所述的微处理器电路,以该级数运算执行电路进行类神经网络的激励函数运算。
CN201810001411.0A 2018-01-02 2018-01-02 具有级数运算执行电路的微处理器 Active CN108595147B (zh)

Priority Applications (3)

Application Number Priority Date Filing Date Title
CN201810001411.0A CN108595147B (zh) 2018-01-02 2018-01-02 具有级数运算执行电路的微处理器
US16/027,983 US10754648B2 (en) 2018-01-02 2018-07-05 Microprocessor with circuit for series calculation
TW107126322A TWI686057B (zh) 2018-01-02 2018-07-30 具有級數運算執行電路的微處理器

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810001411.0A CN108595147B (zh) 2018-01-02 2018-01-02 具有级数运算执行电路的微处理器

Publications (2)

Publication Number Publication Date
CN108595147A CN108595147A (zh) 2018-09-28
CN108595147B true CN108595147B (zh) 2021-03-23

Family

ID=63599802

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810001411.0A Active CN108595147B (zh) 2018-01-02 2018-01-02 具有级数运算执行电路的微处理器

Country Status (3)

Country Link
US (1) US10754648B2 (zh)
CN (1) CN108595147B (zh)
TW (1) TWI686057B (zh)

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1740962A (zh) * 2005-09-22 2006-03-01 上海广电(集团)有限公司中央研究院 一种快速流水线型除法器

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2508784B2 (ja) * 1988-02-17 1996-06-19 日本電気株式会社 指数関数演算装置
US7103759B1 (en) * 1999-10-28 2006-09-05 Imsys Technologies Ab Microcontroller architecture supporting microcode-implemented peripheral devices
TWI275028B (en) * 2002-07-16 2007-03-01 Silicon Integrated Sys Corp Floating-point logarithmic calculation device and the method thereof
US7571303B2 (en) * 2002-10-16 2009-08-04 Akya (Holdings) Limited Reconfigurable integrated circuit
JP5794385B2 (ja) 2012-03-30 2015-10-14 富士通株式会社 演算処理装置及び演算処理装置の制御方法
JP6497250B2 (ja) * 2015-07-16 2019-04-10 富士通株式会社 演算処理装置および演算処理装置の制御方法
US10346351B2 (en) * 2015-10-08 2019-07-09 Via Alliance Semiconductor Co., Ltd. Neural network unit with output buffer feedback and masking capability with processing unit groups that operate as recurrent neural network LSTM cells
US20180129501A1 (en) * 2016-11-06 2018-05-10 Centipede Semi Ltd. Micro-op fusion for non-adjacent instructions

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1740962A (zh) * 2005-09-22 2006-03-01 上海广电(集团)有限公司中央研究院 一种快速流水线型除法器

Also Published As

Publication number Publication date
TWI686057B (zh) 2020-02-21
CN108595147A (zh) 2018-09-28
US20190205130A1 (en) 2019-07-04
TW201931772A (zh) 2019-08-01
US10754648B2 (en) 2020-08-25

Similar Documents

Publication Publication Date Title
KR100714358B1 (ko) 연산을 수행하기 위한 방법, 시스템 및 장치
US8271571B2 (en) Microprocessor
US7555514B2 (en) Packed add-subtract operation in a microprocessor
Erdem et al. A general digit-serial architecture for montgomery modular multiplication
US6601077B1 (en) DSP unit for multi-level global accumulation
CN115344237B (zh) 结合Karatsuba和蒙哥马利模乘的数据处理方法
KR20050065672A (ko) 연산을 수행하는 방법 및 시스템 및 장치
US10949168B2 (en) Compressing like-magnitude partial products in multiply accumulation
JP5640081B2 (ja) 飽和を伴う整数乗算および乗算加算演算
CN108595147B (zh) 具有级数运算执行电路的微处理器
US20100115232A1 (en) Large integer support in vector operations
TW202319909A (zh) 用於將輸入集相乘之硬體電路及方法,以及非暫時性機器可讀儲存裝置
JPH1195982A (ja) 演算処理回路及び演算処理方法並びに演算処理システム
US10929101B2 (en) Processor with efficient arithmetic units
TWI653577B (zh) 整合算術及邏輯處理的裝置
CN111445016A (zh) 加速非线性数学计算的系统及方法
WO2023141936A1 (en) Techniques and devices for efficient montgomery multiplication with reduced dependencies
US20020161810A1 (en) Method and apparatus for multiplication and/or modular reduction processing
US9804998B2 (en) Unified computation systems and methods for iterative multiplication and division, efficient overflow detection systems and methods for integer division, and tree-based addition systems and methods for single-cycle multiplication
EP1936492A1 (en) SIMD processor with reduction unit
TWI624802B (zh) 全精度及部分精度數值的計算方法及裝置
CN117251132B (zh) 定浮点simd乘加指令融合处理装置、方法及处理器
KR100580255B1 (ko) 복수 개의 동일한 부분곱 계산 모듈을 포함하는 다중곱셈기 및 다중 곱셈 방법
CN117321563A (zh) 一种实现大数加法的方法及装置
MOUNIKA et al. Montgomery Modular Multiplication by using High Throughput VLSI Architecture

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for 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, Shanghai 201203

Patentee before: VIA ALLIANCE SEMICONDUCTOR Co.,Ltd.