采布斯乘法的微处理器制造技术

技术编号:18459118 阅读:30 留言:0更新日期:2018-07-18 12:50
本发明专利技术提供一种采布斯乘法的微处理器。该微处理器包括一第一空间、一第二空间以及一数据路径。该数据路径用以执行一微指令。该微指令的一第一字段用于指示该数据路径自该第一空间取得一被乘数供应数据。该微指令的一第二字段用于指示该数据路径自该第二空间取得一乘数供应数据。该微指令的一第三字段用于指示该数据路径的一数据位宽。该数据路径对该乘数供应数据进行取数获得多个布斯乘法取数。该数据路径依据该数据位宽将该被乘数供应数据划分为多个被乘数,并对该等被乘数与该等布斯乘法取数进行布斯乘法以产生多个部分乘积。该数据路径更根据该数据位宽从该等部分乘积中选择一部分进行移位相加以产生多个乘积。

CPU multiplicative microprocessor

The invention provides a microprocessor for picking buss multiplication. The microprocessor includes a first space, a second space and a data path. The data path is used to execute a micro instruction. A first field of the microinstruction is used to indicate that the data path obtains a multiplier from the first space to supply data. A second field of the microinstruction is used to indicate that the data path obtains a multiplier supply data from the second space. A third field of the microinstruction is used to indicate a data bit width of the data path. The data path obtains the multiple buss multiplier number by multiplying the multiplier supply data. The data path divides the multiplicative supply data into multiple multiplicative data according to the data bit width, and multiplied the multiplicative number of the equal multiplicative and the same booth multiplicative to produce a number of partial products. The data path is based on the bit width of the data to select a part from the product of these parts to add and add in order to produce multiple products.

【技术实现步骤摘要】
采布斯乘法的微处理器
本专利技术涉及处理器,特别涉及实现类神经网络算法的神经网络处理器或加速器。
技术介绍
人工智能技术常使用类神经网络建立机器学习架构。类神经网络涉及复杂且大量的运算,尤其涉及大量的张量(tensor)乘法和乘加运算。如何根据神经网络算法的特殊性,设计适用于神经网络算法的处理器架构,为本
一项重要课题。
技术实现思路
根据本申请一种实施方式所实现的一种微处理器,包括一第一空间、一第二空间以及一数据路径。该数据路径执行一微指令。该微指令的一第一字段用于指示该数据路径自该第一空间取得一被乘数供应数据。该微指令的一第二字段用于指示该数据路径自该第二空间取得一乘数供应数据。该微指令的一第三字段用于指示该数据路径的一数据位宽。该数据路径依据该数据位宽将该被乘数供应数据划分为多个被乘数,并对该等被乘数与该等布斯乘法取数进行布斯乘法以产生多个部分乘积。该数据路径更根据该数据位宽从该等部分乘积中选择一部分进行移位相加以产生多个乘积。本申请微处理器实现兼容多种位宽的乘法运算硬件。下文特举实施例,并配合所附图示,详细说明本
技术实现思路
。附图说明图1根据本申请一种实施方式图解一微处理器100为类神经网络演算所提供的硬件架构;图2图解该数据位宽调整器108的一种实施方式;图3为流程图,根据本申请一种实施方式说明差值监控模块216以及小数位宽FL调整模块204的运作逻辑;图4为流程图,根据本申请一种实施方式说明判断模块224以及字长WL调整208的运作逻辑;图5根据本申请一种实施方式图解一微指令(μop)的格式;图6为方块图,根据本申请一种实施方式图解一微处理器600,其中聚焦于宏指令转换为微指令的技术;图7根据本申请一种实施方式图解微码解码有限状态机612如何解码一宏指令以及所对应的多个微指令如何执行的流程图;图8特别图解一二阶张量(即矩阵)相乘所对应的多个微指令如何执行;图9图解图5微指令(μop)字段A与B所指示的各32位数据的各种数据位宽(WL);图10根据本申请一种实施方式图解乘加运算的一数据路径1000;图11以字长WL为8位为例,说明乘加运算所获得的数据M以及S;图12A-1、图12A-2、图12B-1以及图12B-2因应字长WL不定,图解32位数据B的各种三位内容bn+1bnbn-1;图13根据本申请一种实施方式图解乘法器1002的硬件架构;且图14根据本申请一种实施方式图解数据路径1000执行的一微指令(可为SIMD微指令)1400。【符号说明】100~处理器;102~数据路径;104~数据位宽(WL,FL)寄存器;106~统计用寄存器;108~数据位宽(WL,FL)调整器;110~数据,提供输入运算元;202~溢位监控模块;204~小数位宽FL调整模块;206~数值分布分析模块;208~字长WL调整模块;212~最高位(MSB)溢位计数器;214~次高位(MSB-1)溢位计数器;216~差值监控模块;222~直方图数据建立模块;224~判断模块;600~微处理器;602~指令抓取模块;604~初解码器;606~队列;608~映射表;610~微码存储器;612~微码解码有限状态机;614~寄存器;1002~乘法器;1004~加法器树;1302、1304~寄存器;1306~移位加法器;1400~微指令;A与B~源操作数/包含一或多个输入运算元的数据;A0…A7、B0…B7~输入运算元;B0_4bit…B7_4bit、B0_8bit…B3_8bit、B0_16bit、B1_16bit、B0_32bit~乘数;B_PP0…B_PP23_2~数据B的三位bn+1bnbn-1取值;C~目的操作数/包含输出运算元的数据;CS~控制信号;Dst~目的操作数;FL~小数位宽;M~数据,载有乘积M0…Mm;M0…Mm~乘积;Mux2、Mux3、Mux5~多工器;OF_1~最高位MSB溢位发生次数;OF_2~次高位MSB-1溢位发生次数;opcode~字段,填写操作码;Operation~有/无符号的乘法或乘加运算;PP0…PP23_2~部分乘积/部分乘积候选;S~数据,乘积M0…Mm加总;signed/unsigned~有/无符号;size1~SIMD位宽;size2~字长WL;S302…S312、S402…S410、S701、S702…S708、S801、S802…S814~步骤;subopcode~字段,填写副操作码;WL~字长;WLFLin~字段,填写该数据路径102使用的数据位宽(WL,FL)来源;以及WLFLout~字段,填写该数据位宽(WL,FL)调整器108所调适出的字长WL以及小数位宽FL暂存目标。具体实施方式以下叙述列举本专利技术的多种实施例。以下叙述介绍本专利技术的基本概念,且并非意图限制本
技术实现思路
。实际专利技术范围应依照权利要求书界定。人工智能为科技领域重大发展,其中常使用类神经网络(neuralnetwork)作为机器学习架构。类神经网络包括多层运算,其中,在每层的运算中,需要进行大量的卷积(convolution)运算,因此乘累加(multiply-accumulate)和乘法(multiply)运算占据了大部分运算量。本专利技术设计的神经网络微处理器架构特别为了适配海量的乘累加和乘法运算进行了硬件优化。此外,其中运算的定点数(fixedpointnumber)包括一整数部分和一小数部分,该整数部分与该小数部分的总位宽为字长(wordwidth,以WL代号),该小数部分的位宽为小数位宽(fractionlength,以FL代号),后面将字长和小数位宽统称为数据位宽(bitlength)。通常处理器的定点数的数据位宽在算法编程完毕后就是固定的,而在本专利技术中,数据位宽,包括小数位宽(fractionlength,以FL代号)以及字长(wordwidth,以WL代号),并不固定。本申请在硬件实现上考虑如此数据位宽(WL,FL)调适需求,以逼近类神经网络演算。图1根据本申请一种实施方式图解一微处理器100为类神经网络演算所提供的硬件架构,包括一数据路径(datapath)102、一数据位宽(WL,FL)寄存器104、一统计用寄存器106、以及一数据位宽(WL,FL)调整器108。数据路径102为算术逻辑运算单元的组合,可用来实现类神经网络常使用的乘加运算或乘法运算,也可以实现最大池化(maxpool)、平均(average)运算。数据路径102所接收的数据110是根据一微指令(μop)自寄存器或是存储器(未显示在图中)获得,内含输入运算元。特别是,数据路径102是根据该数据位宽寄存器104存储的数据位宽(bitlength),包括一字长(wordwidth)WL以及一小数位宽(fractionlength)FL,来对数据110进行运算。以乘加运算为例,数据路径102内的乘法器是以字长WL决定乘加运算微指令的运算元长度,而乘加过程中,小数点位置则是由小数位宽FL决定。一种实施方式中,数据位宽寄存器104是为该数据路径102提供控制参数的特殊功能寄存器(specialpurposeregister,SPR)。前述微指令将设定该数据路径102根据该数据位宽寄存器104所存储的字长WL以及小数位宽FL操作。本文档来自技高网
...

【技术保护点】
1.一种微处理器,包括:第一空间以及第二空间;以及数据路径,用以执行微指令,其中:该微指令的第一字段用于指示该数据路径自该第一空间取得被乘数供应数据;该微指令的第二字段用于指示该数据路径自该第二空间取得乘数供应数据;该微指令的第三字段用于指示该数据路径的数据位宽;该数据路径对该乘数供应数据进行取数获得多个布斯乘法取数;该数据路径依据该数据位宽将该被乘数供应数据划分为多个被乘数,并对所述被乘数与所述布斯乘法取数进行布斯乘法以产生多个部分乘积,该数据路径还根据该数据位宽从所述部分乘积中选择一部分进行移位相加以产生多个乘积。

【技术特征摘要】
1.一种微处理器,包括:第一空间以及第二空间;以及数据路径,用以执行微指令,其中:该微指令的第一字段用于指示该数据路径自该第一空间取得被乘数供应数据;该微指令的第二字段用于指示该数据路径自该第二空间取得乘数供应数据;该微指令的第三字段用于指示该数据路径的数据位宽;该数据路径对该乘数供应数据进行取数获得多个布斯乘法取数;该数据路径依据该数据位宽将该被乘数供应数据划分为多个被乘数,并对所述被乘数与所述布斯乘法取数进行布斯乘法以产生多个部分乘积,该数据路径还根据该数据位宽从所述部分乘积中选择一部分进行移位相加以产生多个乘积。2.如权利要求1所述的微处理器,其中:该微指令的第四字段用于指示该数据路径的物理位宽,该物理位宽决定该被乘数供应数据及该被乘数供应数据的长度。3.如权利要求1所述的微处理器,其中:上述数据位宽可变。4.如权利要求1所述的微处理器,其中该数据路径包括:第一取数寄存器,在第一数据位宽下,暂存乘数供应数据所载的第一乘数的无符号尾端取数;第三取数寄存器,在该第一数据位宽下,暂存该乘数供应数据所载的第二乘数的起始取数;第四取数寄存器,在长于该第一数据位宽的第二数据位宽下,暂存该乘数供应数据所载的第三乘数的中段取数,其中,该第三乘数的上述中段取数由上述第一乘数的上述无符号尾端取数及上述第二乘数的上述起始取数组合而成;以及部分乘积选择电路,其中:在该第一数据位宽下,该部分乘积选择电路选择该第三取数寄存器内容与该第二乘数对应的被乘数进行布斯乘法产生的结果作为第三部分乘积;且在该第二数据位宽下,该部分乘积选择电路选择该第四取数寄存器内容与该第三乘数对应的被乘...

【专利技术属性】
技术研发人员:陈静李晓阳宋娟丽黄振华王惟林赖瑾
申请(专利权)人:上海兆芯集成电路有限公司
类型:发明
国别省市:上海,31

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1