CN105468335A - 流水级运算装置、数据处理方法及片上网络芯片 - Google Patents

流水级运算装置、数据处理方法及片上网络芯片 Download PDF

Info

Publication number
CN105468335A
CN105468335A CN201510825061.6A CN201510825061A CN105468335A CN 105468335 A CN105468335 A CN 105468335A CN 201510825061 A CN201510825061 A CN 201510825061A CN 105468335 A CN105468335 A CN 105468335A
Authority
CN
China
Prior art keywords
module
pipelining
stage
data
input
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201510825061.6A
Other languages
English (en)
Other versions
CN105468335B (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.)
Institute of Computing Technology of CAS
Original Assignee
Institute of Computing Technology of CAS
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 Institute of Computing Technology of CAS filed Critical Institute of Computing Technology of CAS
Priority to CN201510825061.6A priority Critical patent/CN105468335B/zh
Publication of CN105468335A publication Critical patent/CN105468335A/zh
Priority to PCT/CN2016/086111 priority patent/WO2017088458A1/zh
Application granted granted Critical
Publication of CN105468335B publication Critical patent/CN105468335B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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/38Concurrent instruction execution, e.g. pipeline, look ahead

Abstract

本发明公开一种流水级运算装置、数据处理方法及片上网络芯片,所述流水级运算装置包括三个流水级模块,其中,第一流水级模块对来自所述第一输入缓存寄存器模块的数据及其最大值索引进行向量加法或减法运算,第二流水级模块对输入数据进行导数值的求解以及激活函数的求解,第三流水级模块对输入数据进行乘法与加法的操作;所述装置根据程序指令所指定的运算操作选择性地执行第一、第二、和第三流水级模块中的运算处理中的任一运算处理或它们之中任意两者或三者的组合的运算处理,并由所述第三缓存寄存器输出最终运算结果。由此,提高芯片的工作效率以及高数据吞吐量以使芯片达到最佳的运算性能。

Description

流水级运算装置、数据处理方法及片上网络芯片
技术领域
本发明属于数据处理系统领域,更具体地,本发明涉及一种流水级运算装置、数据处理方法及包含该流水级运算装置的片上网络芯片。
背景技术
提供包含处理流水线的数据处理系统以便增加数据处理系统中并行执行的程度从而相应的增加每个周期所执行的指令数目是已知的。在处理流水线中增加流水线级数会增加能够并行执行的程序指令数目。而且,大量的流水线级的处理流水线难以有效的处理失败指令。例如,如果沿处理流水线进行一个加载指令未能在预期的时间内收到它的加载数据,一种做法是使流水线暂停,这将是非常低效的,如果没有后续的指令依赖于该失败的加载指令,则另外一种做法是,允许加载指令作为处理“气泡”与其它沿该流水线进行的程序指令一致的沿处理流水线进行,从而不干扰那些其它处理指令的执行。这种做法的问题是流水线中气泡的出现降低了并行执行的程序指令数目,从而降低了每个周期总的被执行指令的值。
专利文件1(公开号为CN102411492A)公开了一种数据处理的方法和装置,能够在硬件流水线上采用不同的数据处理速率,实现硬件流水线上数据处理速率的灵活调整。但是该方法仅仅通过控制对硬件流水线上数据处理速率来提高硬件流水线上数据的处理速度。
专利文件2(公开号为CN102855122A)公开了一种处理流水线控制装置和方法,所述装置具备纹理流水线、加载存储流水线、及算数流水线,该发明通过将纹理流水线划分为第一流水线和第二流水线,使第一流水线负责从存储器中获取描述符数据并将其存储到与纹理流水线紧密耦合的共享描述符缓存中,使第二流水线负责依赖于描述符缓存中存储的描述符数据而从存储器中获取纹理数据。其效果在于,避免了在纹理流水线的这些后面部分中引入不必要的处理气泡。
但是,上述这些现有技术是通过控制对硬件流水线上数据处理速率或是通过对纹理流水线进行设计来提高硬件流水线上数据的处理速度,并没有从如何提高芯片的运算主频及高运算吞吐量的角度进行考虑。
发明内容
本发明的目的在于,解决至少上述问题和缺陷,本发明采用以下技术方案,提高芯片的工作效率以及高数据吞吐量以使芯片达到最佳的运算性能。
本发明提供一种流水级运算装置,用于片上网络芯片,其中,包括:
一级流水模块,具有第一输入缓存寄存器模块、第一流水级模块、和第一输出缓存器模块,所述第一输入缓存寄存器模块设置在所述第一流水级模块的输入端,用于寄存接收的输入数据及控制指令,所述第一流水级模块用于对来自所述第一输入缓存寄存器模块的数据及其最大索引值max_index进行向量加法或减法运算,或者根据所述最大索引值max_index,使当前时钟周期之后的连续N个时钟周期的运算中在第max_index个时钟周期第一输出流水级的输出数据等于输入数据,其余N-1个时钟周期的输出数据为0,其中N和max_index均为正整数且N不小于max_index,所述第一输出缓存寄存器模块设置在所述第一流水级模块的输出端,用于存储所述第一流水级的运算结果和控制指令;
二级流水模块,具有第二流水级模块和第二缓存寄存器模块,所述第二流水级模块用于对来自所述第一输出缓存寄存器模块的运算结果进行导数值的求解以及激活函数的求解,所述第二缓存寄存器模块设置在所述第二流水级模块的输出端,用于存储所述第二流水级的运算结果和控制指令;
三级流水模块,具有第三流水级模块和第三缓存寄存器模块,所述第三流水级模块用于对来自所述第二缓存寄存器模块的运算结果进行乘法与加法的操作,所述第三缓存寄存器模块设置在所述第三流水级模块的输出端,用于存储所述第三流水级的运算结果和控制指令。
本发明的流水级运算装置,其中,所述第一流水级模块包括一个加减操作模块和多个最大索引值选择模块,
所述加减操作模块,根据控制信号对该输入数据进行向量加法或者减法操作,并作为所述第一流水级模块的一个输出,
所述最大索引值选择模块,根据操作码选择该模块输入信号的最大索引值,并作为所述第一流水级模块的另一个输出;或者根据最大索引值max_index,使当前时钟周期之后的连续N个时钟周期的运算中在第max_index个时钟周期第一输出流水级的输出数据等于输入数据,其余N-1个时钟周期的输出数据为0。
本发明的流水级运算装置,其中,所述第二流水级模块包括多个线性差值模块和多个抽样器模块,
所述线性差值模块,对输入数据通过线性插值近似求解非线性函数的导数值或激活函数值;
所述抽样器模块,对所述线性插值模块计算的激活函数值与一个随机数产生模块产生的随机值进行比较,如果所述激活函数值大于所述随机数则输出1,否则输出0,其中数值0或1定义32位定点数的输出。
本发明的流水级运算装置,其中,所述线性差值模块具有加载插值表模式和线性插值模式,
所述加载差值表模式,根据所述线性差值模块的控制信号,判断正在加载的插值表属于激活函数插值器还是导数插值器,同时根据该控制信号判断正在加载的操作数表示差值表的哪一部分;
所述线性插值模式,使插值器根据输入信号x的操作数选择插值表中的一组斜率a和截距b,然后根据表达式y=a*x+b求得插值结果,其中y表示差值。
本发明的流水级运算装置,其中,所述第三流水级模块根据输入值与对应的操作码,对输入的数据进行向量加或减以及乘操作,并输出流水级的结果。
另外,本发明还提供一种使用上述的流水级运算装置处理数据的方法,包括以下步骤:
一级流水模块运算步骤,在第一流水级模块执行沿处理流水线进行的程序指令所指定的、对来自第一输入缓存寄存器模块的输入数据及其最大索引值max_index进行向量加法或减法运算,或者根据所述最大索引值max_index,使之后连续N个时钟周期的运算中在第max_index个时钟周期第一输出流水级的输出数据等于输入数据,其余N-1个时钟周期的输出数据为0,其中N和max_index均为正整数且N不小于max_index,并将运算结果和控制指令存储至第一输出缓存寄存器模块;
二级流水模块运算步骤,在第二流水级模块执行沿处理流水线进行的程序指令所指定的、对来自第一输出缓存寄存器模块的运算结果进行导数值的求解以及激活函数的求解,并将运算结果和控制指令存储至第二缓存寄存器模块;
三级流水模块运算步骤,在第三流水级模块执行沿处理流水线进行的程序指令所指定的、对来自第二缓存寄存器模块的运算结果进行乘法与加法的操作,并将运算结果和控制指令存储至第三缓存寄存器模块;
所述处理数据的方法根据程序指令所指定的运算操作选择性地执行第一、第二、和第三流水级模块中的运算处理中的任一运算处理或它们之中任意两者或三者的组合的运算处理,并由所述第三缓存寄存器输出最终运算结果。
本发明的处理数据的方法,其中,所述一级流水模块运算步骤中,进一步包括加减操作运算步骤和最大索引值选择步骤,
所述加减操作运算步骤,根据加减操作运模块中的控制信号对输入数据进行向量加法或者减法操作,并作为所述第一流水级模块的一个输出,
所述最大索引值选择步骤,根据最大索引值选择模块中的操作码选择输入信号的最大索引值,并作为所述第一流水级模块的另一个输出;或者根据输入的最大索引值max_index,使当前时钟周期之后的连续N个时钟周期的运算中在第max_index个时钟周期第一输出流水级的输出数据等于输入数据,其余N-1时钟周期的输出数据为0。
本发明的处理数据的方法,其中,所述二级流水模块运算步骤中,进一步包括线性差值运算步骤和抽样运算步骤,
所述线性差值运算步骤,线性插值模块对输入数据通过线性插值近似求解非线性函数的导数值或激活函数值;
所述抽样运算步骤,对所述线性插值模块计算的激活函数值与一个随机数产生模块产生的随机值进行比较,如果所述激活函数值大于所述随机数则输出1,否则输出0,其中数值0或1定义32位定点数的输出。
本发明的处理数据的方法,其中,所述线性差值运算步骤可以选择加载插值表模式和线性插值模式,
所述加载差值表模式,根据所述线性差值模块的控制信号,判断正在加载的插值表属于激活函数插值器还是导数插值器,同时根据该控制信号判断正在加载的操作数表示差值表的哪一部分;
所述线性插值模式,使插值器根据输入信号x的操作数选择插值表中的一组斜率a和截距b,然后根据表达式y=a*x+b求得插值结果,其中y表示差值。
此外,本发明还提供一种包括上述任一所述流水级运算装置的片上网络芯片。
本发明的效果如下:
由于一种神经网络加速器流水级运算装置,因此能加速神经网络算法运算,同时由于此装置能在一个时间节拍中并行处理数据,大大提高了加速器运算能力;由于神经网络加速器流水级运算装置每个流水级各自进行神经网络算法部分计算,因此可在每一个时间节拍计算出一组神经元值。
附图说明
图1示出了本发明的流水级运算装置的三级流水结构图。
图2示出了本发明实施方式的流水级a的模块示意图,包括流水级a的主要输入输出接口以及控制信号接口。
图3示出了本发明实施方式的流水级a_1的模块示意图,包括流水级a_1的主要输入输出接口以及控制信号接口。
图4示出了本发明实施方式的流水级a_2的模块示意图,包括流水级a_2的主要输入输出接口以及控制信号接口。
图5示出了本发明实施方式的流水级b的模块示意图,包括流水级b的主要输入输出接口以及控制信号接口。
图6示出了本发明实施方式的流水级c的模块示意图,包括流水级c的主要输入输出接口以及控制信号接口。
图7示出了本发明的处理数据的方法的流程图。
图8示出了本发明的包括流水级运算装置的片上网络芯片。
附图标记说明
100一级流水模块;200二级流水模块;300三级流水模块;110第一流水级模块;210第二流水级模块;310第三流水级模块;120第一输入缓存寄存器;130第一输出缓存寄存器;220第二缓存寄存器;320第三缓存寄存器;1clock(时钟信号端口);2reset(复位信号端口);3inputa(输入端口a);4inputb(输入端口b);5inputc(输入端口c);6op(操作码控制信号端口);7pipeline_en(流水级使能标志位);8results(第一流水运算结果);9max_index(最大值索引);10inputa(输入端口a);11inputb(输入端口b);12inputc(输入端口c);13sub_flag(减使能);14flag(累加使能);15results(运算结果);16clock(时钟信号端口);17reset(复位信号端口);18inputa(输入端口a);19inputb(输入端口b);20inputc(输入端口c);21begin_flag(pooling开始标志位);22pooling_type(最大索引模块操作码);23pooling_en(最大索引模块使能);24sub_results;25max_index(最大值索引);26clock(时钟信号端口);27reset(复位信号端口);28active_op(第二流水级操作码);29x(输入数据x(局部诱导域));30operand(协助操作数);31act_flag(加载激活函数插值表标志位);32der_flag(加载导数插值表标志位);33table_ld_oder(插值表加载顺序);34active_results(激活函数插值结果);35der_result(导数插值结果);36inputa(第三流水级输入端口a);37inputb(第三流水级输入端口b);38inputc(第三流水级输入端口c);39op(第三流水级操作码);40results(第三流水运算结果)。
具体实施方式
本发明的流水级运算装置包括一流水级设计电路,该电路包含若干输入与若干输出。该电路主要设有时钟信号输入口clock、复位信号输入端口reset、3组表示代表32个16位宽的数据输入端口inputa、inputb、inputc,输出数组512位宽的输出results、输出数据512位宽的max_index,其表示模块对输入进行最大索引值的输出。
为了提高芯片的频率与高吞吐量,将流水级运算装置切分为3级流水模式,流水级a(相当于权利要求中的第一流水级模块)、流水级b(相当于权利要求中的第二流水级模块)、流水级c(相当于权利要求中的第三流水级模块)。
流水级a,主要对输入数据最大值索引以及输入数据进行向量加法或减法输出,或者根据最大索引值max_index,使之后连续N个时钟周期的运算中在第max_index个时钟周期第一输出流水级的输出数据等于输入数据,其余N-1个时钟周期的输出数据为0,其中N和max_index均为正整数且N不小于max_index。流水级a输入输出各设有一缓存寄存器reg_a_1(相当于权利要求中的第一输入缓存寄存器模块)、reg_a_2(相当于权利要求中的第一输出缓存寄存器模块),两组缓存寄存器reg用于存储流水级a的运算结果以及控制指令。流水级a与reg_a_1、reg_a_2构成一级流水。
流水级b,主要对上级输入数据进行导数值的求解以及激活函数的求解,并输出计算结果。流水级b输出设有一缓存寄存器reg_b(相当于权利要求中的第二缓存寄存器模块),缓存寄存器reg_b用于存储流水级b的运算结果以及控制指令,流水级b以及缓存寄存器reg_b构成二级流水。
流水级c,主要对上级输入数据进行乘法与加法的操作,并输出计算结果。流水级c输出设有一缓存寄存器reg_c(相当于权利要求中的第三缓存寄存器模块),缓存寄存器reg_c用于存储流水级c的运算结果以及控制指令,流水级c与缓存寄存器reg_c构成三级流水。
根据处理数据的要求,将流水级a主要切分为两个子模块流水级a_1(相当于权利要求中的加减操作模块)和32个流水级a_2子模块(相当于权利要求中的最大索引值选择模块)。
所述子模块流水级a_1,含有若干输入与输出,主要包括三组表示32个16位宽的数据输入,控制信号flag、sub_flag,表示32个16位宽的数据输出。
子模块流水级a_1在控制型号的作用下,对三输入512位宽的数据进行向量的加或减的操作,操作得到结果作为512位宽的数据输出。
所述的子模块流水级a_2,含有若干输入与输出,主要包含3组15位宽的输入数据、控制信号、输出15位宽的数据。
根据功能的要求,所述的子模块流水级a_2,又可以切分为三个子模块a_2_1、a_2_2、a_2_3。
所述的子模块流水级a_2能够完成对一个feature_map神经元进行的pooling正向以及反向的基本操作。流水级a_2_1能够对输入数据以及结果寄存器取较大的值。流水级a_2_2,根据最大索引值max_index,使当前时钟周期之后的连续N个时钟周期的运算中在第max_index个时钟周期第一输出流水级的输出数据等于输入数据,其余N-1个时钟周期的输出数据为0,其中N和max_index均为正整数且N不小于max_index,例如,对三组16位输入数据,若inputa与inputb相等,则输出inputc,否则输出0。流水级a_2_3能够将输入inputa与结果寄存器累加,并作为结果输出。
所述的流水级b,其含有若干输入与输出,其中输入x表示32个16位宽的数据输入,为进行求激活函数、导数或采样值得到的输入。Operand表示32个16位宽的数据输入,为加载激活函数或导数插值表的部分。active_result和der_result表示32个16位宽的数据输出,active_result表示多个激活函数或采样后的结果,der_result表示导数值。以及流水级b模块的控制信号。
所述的流水级b按照功能可以切分为,由32个负责函数的插值以及32个负责导数插值的线性插值模块b_1(相当于权利要求中的线性插值模块)和32个抽样器件模块b_2(相当于权利要求中的抽样器件模块)。
所述的流水级线性插值模块b_1,其主要功能为根据输入通过线性插值近似求解非线性函数值。可为两种工作模式:加载差值表与线性插值模式。
线性载插值模块b_1工作在加载插值表模式时,线性插值器根据控制信号判断正在加载的插值表属于哪一类插值器(激活函数或导数),同时表示正在加载的差值表属于哪一类插值器。
线性载插值模块b_1工作在线性插值模式时,线性插值器根据输如信号x的某些位作为64选1的索引,并选取差值表中的一组斜率a和截距b,根据y=a*x+b线性函数得到插值的结果。
所述的流水级抽样模块b_2,抽样器件将线性插值器计算的激活函数y与随机数产生的随机数进行比较,如果y大于随机数则输出1,否则输出0。其中,1、0是定义的32位定点数形式输出。
所述的三级流水模块c含有若干输入与输出,主要信号有,3组表示32个16位宽的数据输入,即3组输入数据的位宽为512位。一组表示32个16位宽的数据输出,即输出数据为512位,和控制信号。
流水级c模块主要根据输入值与对应的操作码,对输入的数据进行向量加或减以及乘操作,最后输出流水级的结果。
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图对本发明的流水级运算装置、数据处理方法及片上网络芯片进行进一步详细说明。
如图1所示为了提高芯片的主频及吞吐量,采用流水线处理数据的方式。流水级处理电路切分为三个流水级:流水级a、流水级b、流水级c,流水级a、b、c后设有一缓存寄存器用于寄存流水运算结果以及控制指令,流水级a前设有一缓存寄存器用于寄存接收的输入数据以及控制指令。
如图1所示的片上网络芯片的流水级工作过程可以划分为两个工作过程,一为流水级的初始化,另一工作过程为流水级的运算。
对于图1中流水级的初始化包括两个方面:插值表的初始化和学习率等常数的加载,但二者不能同时进行。
流水级在输入一条有效指令且reg_num_ld_flag(加载常数表标志位)有效,在流水线不阻塞的情况下两个时钟周期之后将,输入inputa(输入端口a)(3)的低96位赋值给3个寄存学习率的寄存器。若act_flag(加载激活函数插值表标志位)(31)有效,流水线不阻塞的情况下依照talbe_ld_oder(插值表加载顺序)(33)将输入inputa(3)赋值给函数插值表的a以及b表格中相应部分。如果der_flag(加载导数插值表标志位)(32)有效,流水线不阻塞的情况下依照talbe_ld_oder(33)将输入inputa(3)赋值给导数插值表的a以及b表格中相应部分。
对于图1中流水级的运算过程,其过程如下。运算时,流水级根据每一级流水级是否被使用以及操作码选择流水级的输入数据。若流水级未被使用,则输入数据置0。
第一个流水级a接收从外部输入的数据,根据所需进行的操作选择数据也可能不进行任何操作,运算结果输出。由于后面的流水级可能需要第一级流水计算的结果max_index(最大值索引)(9)、results(第一流水运算结果)(8)和外部输入inputa(3)、inputb(4)。同时,后面流水级不会同时需要max_index(9)和inputa(3),而不会同时需要inputa(3)以及results(8),因此,第一个流水级只需给后面的流水级传递两组数据寄存器以及控制信号。
第二个流水级接收第一个流水级传递的数据,根据所需进行的操作选择数据也可能不进行任何操作,运算结果输出。
第三个流水级运算只可能需要第二个流水级运算结果active_result(激活函数值)(34)和der_result(导数值)(35)以及第一个流水级传递的两个数据。而且不同时需要active_result(34)以及第一个流水级传递的可能包含inputa(3)的寄存器值。因此,第二个流水级只需向第三个流水级传递三组数据寄存器以及控制信号。
第三个流水级接收第二个流水级传递的数据,根据所需进行的操作选择数据也可能不进行任何操作,运算结果输出。第三个流水级需要将第三个流水级运算结果传递到下一级寄存器还需将前面两个流水级计算结果以及控制信号传至下级寄存器。
流水级需要根据最后一级寄存器中的控制信号选择输出值。
如图2所示的第一级流水级a模块,该模块主要含有若干输入与2个输出。其中,inputa(输入端口a)(3)、inputb(输入端口b)(4)和inputc(输入端口c)(4)表示32个16位宽数据输入,results(8)和max_index(9)表示32个16位宽数据输出。max_index(9)表示进行max_pooling时,32个不同的feature_map各自poolingkernal中最大值索引index。
如图2所示的流水级a模块由一个流水级子模块a_1(如图3所示),和32个流水级子模块a_2(如图4所示)组成。流水级a子模块含有一个计数寄存器,当控制信号op(操作码)(6)为1时计数器置0,同时如果调用了pooling操作并且流水线尚未被堵塞,计数器自加1,pipeline_en(流水级使能标志位)(7)为流水级a子模块的使能信号。
如图3所示,流水级a_1为第一流水级a的一个子模块,该模块主要含有若干输入与1个输出。输入inputa(输入端口a)(10)、inputb(输入端口b)(11)、inputc(输入端口c)(12)代表32个16位宽输入数据,输出results(运算结果)(15)代表32个16位宽的输出数据。sub_flag(减使能)(13)、flag(累加使能)(14)为控制信号,在控制信号的作用下,a_1子模块支持数据inputa(10)和inputb(11)向量减法或减法,然后直接输出或者和inputc(12)向量加法之后再输出。
如图4所示,流水级a_2为第一流水级a的另一个子模块,该模块含有若干输入与输出。输入数据inputa(输入端口a)(18)、inputb(输入端口b)(19)、inputc(输入端口c)(20)表示一个16位宽的数据输入。sub_result(运算结果)(24)和max_index(最大值索引)(25)表示一组16位宽数据输出,以及若干控制信号。max_index(25)表示poolingkernal中最大值索引index,a_2子模块的功能是支持一个对featuremap的神经元进行的pooling正向以及反向的基本操作。
如图4所示,流水级a_2子模块由a_2_1、a_2_2、a_2_3三个子模块组成,流水级a_2子模块中设有一个寄存结果的寄存器,若内部pooling_begin_flag(pooling开始标志位)有效,将inputa(18)直接赋值给结果寄存器。否则操作码所选择的运算模块将子模块a_2_1的输出结果或a_2_3的输出结果赋值给结果寄存器。
如图4所示,流水级a_2三个子模块的功能分别为:a_2_1子模块根据输入数据inputa(18)以及结果寄存器的值,取最大值。a_2_2子模块,根据输入数据inputa(18)、inputb(19)、inputc(20),如果inputa(18)和inputb(19)相等,将inputc(20)作为结果输出,否则输出结果0。其中,inputb(19)是输入的index或者poolingkernal中的最大值,inputc(20)是delta,a可能是计数器值也可能是神经元值,根据操作码选择。a_2_3子模块根据输入数据inputa(18)以及结果寄存器,两者累加。
如图5所示的第二流水级b模块,流水级b子模块含有若干输入和2个输出。输入数据x(局部诱导域)(29)、operand(协助操作数)(30)代表32个16位数据输入,x(29)用于进行求激活函数、导数或采样值得输入,operand(30)是在加载激活函数或导数插值表时插值表的部分。输出数据active_result(34)、der_result(35)表示32个16位数据输出,active_result(34)表示多个激活函数值或者采样后的结果,der_result(35)表示32个导数值。
流水级b模块由32个负责函数的插值以及32个负责导数插值的线性插值模块b_1和32个抽样器件模块b_2组成。
如图5所示的流水级b模块的线性插值器b_1子模块,其功能就是根据输入通过线性插值近似求解非线性函数值。它可分为两种工作模式:加载插值表模式和线性插值模式。
加载插值表时,根据控制信号act_flag(31)和der_flag(32)判断正在加载的插值表属于哪一类插值器(激活函数和导数);同时,table_ld_oder(33)表示正在加载的operand(30)表示插值表的哪一部分。线性插值时,插值器,根据输入x(29)的x[26:21]作为索引64选1,选择插值表中一组斜率a和截距b,根据y=a*x+b得到插值结果。
如图5所示的流水级b模块的线性插值器b_2子模块,其主要功能为:采样器件将线性插值器计算的激活函数值y与随机数模块产生的随机数进行对比,如果y大于随机数,输出1,否则为0。此处的数值1和0为自定义的32位定点数形式输出。
如图6所示的为第三级流水c模块,流水子模块c含有若干输入与输出接口。其中,输入数据inputa(输入端口a)(36)、inputb(输入端口b)(37)、inputc(输入端口c)(38)代表32个16位数输入据数,results(40)代表一组32个16位数据输出,op(39)为控制信号,在控制信号op(39)的作用下,数据数据inputa(36)、inputb(37)、inputc(38)进行相应的向量加、减与乘操作。
另外,本发明还提供一种使用上述的流水级运算装置处理数据的方法,如图7所示,包括以下步骤:
一级流水模块运算步骤,在第一流水级模块执行沿处理流水线进行的程序指令所指定的、对来自第一输入缓存寄存器模块的输入数据及其最大索引值max_index进行向量加法或减法运算,或者根据所述最大索引值max_index,使当前时钟周期之后的连续N个时钟周期的运算中在第max_index个时钟周期第一输出流水级的输出数据等于输入数据,其余N-1个时钟周期的输出数据为0,其中N和max_index均为正整数且N不小于max_index,并将运算结果和控制指令存储至第一输出缓存寄存器模块;
二级流水模块运算步骤,在第二流水级模块执行沿处理流水线进行的程序指令所指定的、对来自第一输出缓存寄存器模块的运算结果进行导数值的求解以及激活函数的求解,并将运算结果和控制指令存储至第二缓存寄存器模块;
三级流水模块运算步骤,在第三流水级模块执行沿处理流水线进行的程序指令所指定的、对来自第二缓存寄存器模块的运算结果进行乘法与加法的操作,并将运算结果和控制指令存储至第三缓存寄存器模块;
所述处理数据的方法根据程序指令所指定的运算操作选择性地执行第一、第二、和第三流水级模块中的运算处理中的任一运算处理或它们之中任意两者或三者的组合的运算处理,并由所述第三缓存寄存器输出最终运算结果。
本发明的处理数据的方法,其中,所述一级流水模块运算步骤中,进一步包括加减操作运算步骤和最大索引值选择步骤,
所述加减操作运算步骤,根据加减操作运模块中的控制信号对该模块的输入数据进行向量加法或者减法操作,并作为所述第一流水级模块的一个输出,
所述最大索引值选择步骤,根据最大索引值选择模块中的操作码选择该模块输入信号的最大索引值,并作为所述第一流水级模块的另一个输出;或者根据最大索引值max_index,使之后连续N个时钟周期的运算中在第max_index个时钟周期第一输出流水级的输出数据等于输入数据,其余N-1个时钟周期的输出数据为0。
本发明的处理数据的方法,其中,所述二级流水模块运算步骤中,进一步包括线性差值运算步骤和抽样运算步骤,
所述线性差值运算步骤,线性插值模块对输入数据通过线性插值近似求解非线性函数的导数值或激活函数值;
所述抽样运算步骤,对所述线性插值模块计算的激活函数值与一个随机数产生模块产生的随机值进行比较,如果所述激活函数值大于所述随机数则输出1,否则输出0,其中数值0或1定义32位定点数的输出。
本发明的处理数据的方法,其中,所述线性差值运算步骤可以选择加载插值表模式和线性插值模式,
所述加载差值表模式,根据所述线性差值模块的控制信号,判断正在加载的插值表属于激活函数插值器还是导数插值器,同时根据该控制信号判断正在加载的操作数表示差值表的哪一部分;
所述线性插值模式,使插值器根据输入信号x的操作数选择插值表中的一组斜率a和截距b,然后根据表达式y=a*x+b求得插值结果,其中y表示差值。
此外,如图8所示,本发明还提供一种包括上述任一所述流水级运算装置的片上网络芯片。
本发明可用于众多通用或专用的计算系统环境或配置中。例如:个人计算机、服务器计算机、手持设备或便携式设备、平板型设备、多处理器系统、基于微处理器的系统、置顶合、可编程的消费电子设备、网络PC、小型计算机、大型计算机、包括以上任何系统或设备的分布式计算环境等等。
本发明可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。
在本发明中,“模块”、“装置”、“系统”等等指应用于计算机的相关实体,如硬件、硬件和软件的组合、软件或执行中的软件等。
此外,还需说明的是,在本文中,诸如第一和第二之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”,不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括…”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外相同的要素。
而且,上文中的“和/或”表示本文既包含了“和”的关系,也包含了“或”的关系,其中,如果方案A与方案B是“和”的关系,则表示某实施例中可以同时包括方案A和方案B;如果方案A与方案B是“或”的关系,则表示某实施例中可以单独包括方案A,或者单独包括方案B。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应当理解可由计算机程序指令实现流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定的方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
以上对本发明所提供的流水级运算装置、数据处理方法及片上网络芯片,进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限值。

Claims (10)

1.一种流水级运算装置,用于片上网络芯片,其特征在于,包括:
一级流水模块,具有第一输入缓存寄存器模块、第一流水级模块、和第一输出缓存器模块,所述第一输入缓存寄存器模块设置在所述第一流水级模块的输入端,用于寄存接收的输入数据及控制指令,所述第一流水级模块用于对来自所述第一输入缓存寄存器模块的数据及其最大索引值max_index进行向量加法或减法运算,或者根据所述最大索引值max_index,使当前时钟周期之后的连续N个时钟周期的运算中在第max_index个时钟周期第一输出流水级的输出数据等于输入数据,其余N-1个时钟周期的输出数据为0,其中N和max_index均为正整数且N不小于max_index,所述第一输出缓存寄存器模块设置在所述第一流水级模块的输出端,用于存储所述第一流水级的运算结果和控制指令;
二级流水模块,具有第二流水级模块和第二缓存寄存器模块,所述第二流水级模块用于对来自所述第一输出缓存寄存器模块的运算结果进行导数值的求解以及激活函数的求解,所述第二缓存寄存器模块设置在所述第二流水级模块的输出端,用于存储所述第二流水级的运算结果和控制指令;
三级流水模块,具有第三流水级模块和第三缓存寄存器模块,所述第三流水级模块用于对来自所述第二缓存寄存器模块的运算结果进行乘法与加法的操作,所述第三缓存寄存器模块设置在所述第三流水级模块的输出端,用于存储所述第三流水级的运算结果和控制指令。
2.根据权利要求1所述的流水级运算装置,其特征在于,所述第一流水级模块包括一个加减操作模块和多个最大索引值选择模块;
所述加减操作模块,根据该模块中的控制信号对输入数据进行向量加法或者减法操作,并作为所述第一流水级模块的一个输出;
所述最大索引值选择模块,根据该模块的操作码选择输入信号的最大索引值,并作为所述第一流水级模块的另一个输出;或者根据输入的最大索引值max_index,使当前时钟周期之后的连续N个时钟周期的运算中在第max_index个时钟周期第一输出流水级的输出数据等于输入数据,其余N-1时钟周期的输出数据为0。
3.根据权利要求1所述的流水级运算装置,其特征在于,所述第二流水级模块包括多个线性差值模块和多个抽样器模块;
所述线性差值模块,对输入数据通过线性插值近似求解非线性函数的导数值或激活函数值;
所述抽样器模块,对所述线性插值模块计算的激活函数值与一个随机数产生模块产生的随机值进行比较,如果所述激活函数值大于所述随机数则输出1,否则输出0,其中数值0或1定义32位定点数的输出。
4.根据权利要求3所述的流水级运算装置,其特征在于,所述线性差值模块具有加载插值表模式和线性插值模式;
所述加载差值表模式,根据所述线性差值模块的控制信号,判断正在加载的插值表属于激活函数插值器还是导数插值器,同时根据该控制信号判断正在加载的操作数表示差值表的哪一部分;
所述线性插值模式,使插值器根据输入信号x的操作数选择插值表中的一组斜率a和截距b,然后根据表达式y=a*x+b求得插值结果,其中y表示差值。
5.根据权利要求1所述的流水级运算装置,其特征在于,
所述第三流水级模块根据输入值与对应的操作码,对输入的数据进行向量加或减以及乘操作,并输出流水级的结果。
6.一种使用权利要求1-5的任一所述的流水级运算装置处理数据的方法,其特征在于,包括以下步骤:
一级流水模块运算步骤,在第一流水级模块执行沿处理流水线进行的程序指令所指定的、对来自第一输入缓存寄存器模块的输入数据及其最大索引值max_index进行向量加法或减法运算,或者根据所述最大索引值max_index,使当前时钟周期之后的连续N个时钟周期的运算中在第max_index个时钟周期第一输出流水级的输出数据等于输入数据,其余N-1个时钟周期的输出数据为0,其中N和max_index均为正整数且N不小于max_index,并将运算结果和控制指令存储至第一输出缓存寄存器模块;
二级流水模块运算步骤,在第二流水级模块执行沿处理流水线进行的程序指令所指定的、对来自第一输出缓存寄存器模块的运算结果进行导数值的求解以及激活函数的求解,并将运算结果和控制指令存储至第二缓存寄存器模块;
三级流水模块运算步骤,在第三流水级模块执行沿处理流水线进行的程序指令所指定的、对来自第二缓存寄存器模块的运算结果进行乘法与加法的操作,并将运算结果和控制指令存储至第三缓存寄存器模块;
所述处理数据的方法根据程序指令所指定的运算操作选择性地执行第一、第二、和第三流水级模块中的运算处理中的任一运算处理或它们之中任意两者或三者的组合的运算处理,并由所述第三缓存寄存器输出最终运算结果。
7.根据权利要求6所述的处理数据的方法,其特征在于,所述一级流水模块运算步骤中,进一步包括加减操作运算步骤和最大索引值选择步骤,
所述加减操作运算步骤,根据加减操作运模块中的控制信号对输入数据进行向量加法或者减法操作,并作为所述第一流水级模块的一个输出,
所述最大索引值选择步骤,根据最大索引值选择模块中的操作码选择输入信号的最大索引值,并作为所述第一流水级模块的另一个输出;或者根据根据输入的最大索引值max_index,使当前时钟周期之后的连续N个时钟周期的运算中在第max_index个时钟周期第一输出流水级的输出数据等于输入数据,其余N-1时钟周期的输出数据为0。
8.根据权利要求6所述的处理数据的方法,其特征在于,所述二级流水模块运算步骤中,进一步包括线性差值运算步骤和抽样运算步骤,
所述线性差值运算步骤,线性插值模块对输入数据通过线性插值近似求解非线性函数的导数值或激活函数值;
所述抽样运算步骤,对所述线性插值模块计算的激活函数值与一个随机数产生模块产生的随机值进行比较,如果所述激活函数值大于所述随机数则输出1,否则输出0,其中数值0或1定义32位定点数的输出。
9.根据权利要求8所述的处理数据的方法,其特征在于,所述线性差值运算步骤可以选择加载插值表模式和线性插值模式,
所述加载差值表模式,根据所述线性差值模块的控制信号,判断正在加载的插值表属于激活函数插值器还是导数插值器,同时根据该控制信号判断正在加载的操作数表示差值表的哪一部分;
所述线性插值模式,使插值器根据输入信号x的操作数选择插值表中的一组斜率a和截距b,然后根据表达式y=a*x+b求得插值结果,其中y表示差值。
10.一种包括权利要求1-5的任一所述流水级运算装置的片上网络芯片。
CN201510825061.6A 2015-11-24 2015-11-24 流水级运算装置、数据处理方法及片上网络芯片 Active CN105468335B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN201510825061.6A CN105468335B (zh) 2015-11-24 2015-11-24 流水级运算装置、数据处理方法及片上网络芯片
PCT/CN2016/086111 WO2017088458A1 (zh) 2015-11-24 2016-06-17 流水级运算装置、数据处理方法及片上网络芯片

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201510825061.6A CN105468335B (zh) 2015-11-24 2015-11-24 流水级运算装置、数据处理方法及片上网络芯片

Publications (2)

Publication Number Publication Date
CN105468335A true CN105468335A (zh) 2016-04-06
CN105468335B CN105468335B (zh) 2017-04-12

Family

ID=55606082

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510825061.6A Active CN105468335B (zh) 2015-11-24 2015-11-24 流水级运算装置、数据处理方法及片上网络芯片

Country Status (2)

Country Link
CN (1) CN105468335B (zh)
WO (1) WO2017088458A1 (zh)

Cited By (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105892988A (zh) * 2016-04-26 2016-08-24 广州致远电子股份有限公司 一种基于fpga的运算电路、示波器和测量仪器
CN106066783A (zh) * 2016-06-02 2016-11-02 华为技术有限公司 基于幂次权重量化的神经网络前向运算硬件结构
WO2017084330A1 (zh) * 2015-11-17 2017-05-26 中国科学院计算技术研究所 加速深度神经网络算法的加速芯片的运算装置及方法
WO2017088458A1 (zh) * 2015-11-24 2017-06-01 中国科学院计算技术研究所 流水级运算装置、数据处理方法及片上网络芯片
CN107315567A (zh) * 2016-04-26 2017-11-03 北京中科寒武纪科技有限公司 一种用于执行向量最大值最小值运算的装置和方法
CN107590105A (zh) * 2017-09-01 2018-01-16 中国科学院计算技术研究所 面向非线性函数的计算装置及方法
CN107957977A (zh) * 2017-12-15 2018-04-24 北京中科寒武纪科技有限公司 一种计算方法及相关产品
CN108037908A (zh) * 2017-12-15 2018-05-15 北京中科寒武纪科技有限公司 一种计算方法及相关产品
CN108205518A (zh) * 2016-12-19 2018-06-26 上海寒武纪信息科技有限公司 获取函数值的装置、方法及神经网络装置
CN108205706A (zh) * 2016-12-19 2018-06-26 上海寒武纪信息科技有限公司 人工神经网络反向训练装置和方法
WO2018112692A1 (zh) * 2016-12-19 2018-06-28 上海寒武纪信息科技有限公司 获取函数值的装置、方法及神经网络装置
CN108446761A (zh) * 2018-03-23 2018-08-24 中国科学院计算技术研究所 一种神经网络加速器及数据处理方法
CN109062607A (zh) * 2017-10-30 2018-12-21 上海寒武纪信息科技有限公司 机器学习处理器及使用处理器执行向量最小值指令的方法
CN109272109A (zh) * 2018-10-30 2019-01-25 北京地平线机器人技术研发有限公司 神经网络模型的指令调度方法及装置
CN109558170A (zh) * 2018-11-06 2019-04-02 海南大学 一种支持数据级并行和多指令融合的二维数据通路架构
CN109754061A (zh) * 2017-11-07 2019-05-14 上海寒武纪信息科技有限公司 卷积扩展指令的执行方法以及相关产品
CN109754062A (zh) * 2017-11-07 2019-05-14 上海寒武纪信息科技有限公司 卷积扩展指令的执行方法以及相关产品
CN110187865A (zh) * 2019-05-15 2019-08-30 中科亿海微电子科技(苏州)有限公司 全流水高吞吐率累加器及其数据处理方法
CN110858151A (zh) * 2018-08-22 2020-03-03 上海寒武纪信息科技有限公司 一种运算流水级重构方法、运算方法和可读存储介质
CN111008696A (zh) * 2018-10-04 2020-04-14 富士通株式会社 优化装置和控制优化装置的方法
CN111860772A (zh) * 2016-04-29 2020-10-30 中科寒武纪科技股份有限公司 一种用于执行人工神经网络pooling运算的装置和方法
WO2022001496A1 (zh) * 2020-06-30 2022-01-06 上海寒武纪信息科技有限公司 计算装置、集成电路芯片、板卡、电子设备和计算方法
WO2023226060A1 (zh) * 2022-05-23 2023-11-30 长鑫存储技术有限公司 计数器电路

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108388446A (zh) * 2018-02-05 2018-08-10 上海寒武纪信息科技有限公司 运算模块以及方法
CN109933372B (zh) * 2019-02-26 2022-12-09 西安理工大学 一种多模式动态可切换架构低功耗处理器
CN110147254A (zh) * 2019-05-23 2019-08-20 苏州浪潮智能科技有限公司 一种数据缓存处理方法、装置、设备及可读存储介质
CN111523282A (zh) * 2020-05-07 2020-08-11 深圳探科技术有限公司 集成电路仿真中数据处理的方法、模块、存储介质及系统
CN112434479B (zh) * 2020-11-23 2023-09-08 北京中电华大电子设计有限责任公司 一种高速算法接口电路结构及其控制方法
CN113721988B (zh) * 2021-11-01 2022-02-08 中科声龙科技发展(北京)有限公司 基于芯片的工作量证明方法和用于工作量证明的芯片
CN113778526B (zh) * 2021-11-12 2022-02-22 北京微核芯科技有限公司 一种基于Cache的流水线的执行方法及装置
CN116185499B (zh) * 2023-04-27 2023-07-25 深圳鲲云信息科技有限公司 寄存器数据传输方法、寄存器缓存模块、智能设备和介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1108865A (zh) * 1993-03-31 1995-09-20 索尼公司 自适应视频信号运算处理装置
CN104573731A (zh) * 2015-02-06 2015-04-29 厦门大学 基于卷积神经网络的快速目标检测方法
CN204790975U (zh) * 2014-06-20 2015-11-18 想象技术有限公司 数据通路流水线

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB9206126D0 (en) * 1992-03-20 1992-05-06 Maxys Circuit Technology Limit Parallel vector processor architecture
US9246491B2 (en) * 2012-07-27 2016-01-26 Alcatel Lucent Method and apparatus for performing pipelined operations on parallel input data with feedback
US9250916B2 (en) * 2013-03-12 2016-02-02 International Business Machines Corporation Chaining between exposed vector pipelines
CN105468335B (zh) * 2015-11-24 2017-04-12 中国科学院计算技术研究所 流水级运算装置、数据处理方法及片上网络芯片

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1108865A (zh) * 1993-03-31 1995-09-20 索尼公司 自适应视频信号运算处理装置
CN204790975U (zh) * 2014-06-20 2015-11-18 想象技术有限公司 数据通路流水线
CN104573731A (zh) * 2015-02-06 2015-04-29 厦门大学 基于卷积神经网络的快速目标检测方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
胡伟等: "一种三级流水线加法器设计", 《电子世界》 *

Cited By (37)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11488000B2 (en) 2015-11-17 2022-11-01 Intitute of Computing Technology, Chinese Academy of Sciences Operation apparatus and method for acceleration chip for accelerating deep neural network algorithm
WO2017084330A1 (zh) * 2015-11-17 2017-05-26 中国科学院计算技术研究所 加速深度神经网络算法的加速芯片的运算装置及方法
WO2017088458A1 (zh) * 2015-11-24 2017-06-01 中国科学院计算技术研究所 流水级运算装置、数据处理方法及片上网络芯片
CN105892988A (zh) * 2016-04-26 2016-08-24 广州致远电子股份有限公司 一种基于fpga的运算电路、示波器和测量仪器
CN107315567A (zh) * 2016-04-26 2017-11-03 北京中科寒武纪科技有限公司 一种用于执行向量最大值最小值运算的装置和方法
CN111860772B (zh) * 2016-04-29 2024-01-16 中科寒武纪科技股份有限公司 一种用于执行人工神经网络pooling运算的装置和方法
CN111860772A (zh) * 2016-04-29 2020-10-30 中科寒武纪科技股份有限公司 一种用于执行人工神经网络pooling运算的装置和方法
CN106066783A (zh) * 2016-06-02 2016-11-02 华为技术有限公司 基于幂次权重量化的神经网络前向运算硬件结构
CN108205518A (zh) * 2016-12-19 2018-06-26 上海寒武纪信息科技有限公司 获取函数值的装置、方法及神经网络装置
CN108205706A (zh) * 2016-12-19 2018-06-26 上海寒武纪信息科技有限公司 人工神经网络反向训练装置和方法
WO2018112692A1 (zh) * 2016-12-19 2018-06-28 上海寒武纪信息科技有限公司 获取函数值的装置、方法及神经网络装置
CN108205706B (zh) * 2016-12-19 2021-04-23 上海寒武纪信息科技有限公司 人工神经网络反向训练装置和方法
CN107590105B (zh) * 2017-09-01 2019-02-01 中国科学院计算技术研究所 面向非线性函数的计算装置及方法
CN107590105A (zh) * 2017-09-01 2018-01-16 中国科学院计算技术研究所 面向非线性函数的计算装置及方法
CN110084361A (zh) * 2017-10-30 2019-08-02 上海寒武纪信息科技有限公司 一种运算装置和方法
US11922132B2 (en) 2017-10-30 2024-03-05 Shanghai Cambricon Information Technology Co., Ltd. Information processing method and terminal device
US11762631B2 (en) 2017-10-30 2023-09-19 Shanghai Cambricon Information Technology Co., Ltd. Information processing method and terminal device
CN109062607A (zh) * 2017-10-30 2018-12-21 上海寒武纪信息科技有限公司 机器学习处理器及使用处理器执行向量最小值指令的方法
CN109062607B (zh) * 2017-10-30 2021-09-21 上海寒武纪信息科技有限公司 机器学习处理器及使用处理器执行向量最小值指令的方法
CN109754061A (zh) * 2017-11-07 2019-05-14 上海寒武纪信息科技有限公司 卷积扩展指令的执行方法以及相关产品
CN109754062A (zh) * 2017-11-07 2019-05-14 上海寒武纪信息科技有限公司 卷积扩展指令的执行方法以及相关产品
CN109754061B (zh) * 2017-11-07 2023-11-24 上海寒武纪信息科技有限公司 卷积扩展指令的执行方法以及相关产品
CN107957977A (zh) * 2017-12-15 2018-04-24 北京中科寒武纪科技有限公司 一种计算方法及相关产品
CN108037908A (zh) * 2017-12-15 2018-05-15 北京中科寒武纪科技有限公司 一种计算方法及相关产品
CN108446761A (zh) * 2018-03-23 2018-08-24 中国科学院计算技术研究所 一种神经网络加速器及数据处理方法
CN110858151B (zh) * 2018-08-22 2022-05-10 上海寒武纪信息科技有限公司 一种运算流水级重构方法、运算方法和可读存储介质
CN110858151A (zh) * 2018-08-22 2020-03-03 上海寒武纪信息科技有限公司 一种运算流水级重构方法、运算方法和可读存储介质
CN111008696B (zh) * 2018-10-04 2023-06-09 富士通株式会社 优化装置和控制优化装置的方法
CN111008696A (zh) * 2018-10-04 2020-04-14 富士通株式会社 优化装置和控制优化装置的方法
CN109272109B (zh) * 2018-10-30 2020-07-17 北京地平线机器人技术研发有限公司 神经网络模型的指令调度方法及装置
CN109272109A (zh) * 2018-10-30 2019-01-25 北京地平线机器人技术研发有限公司 神经网络模型的指令调度方法及装置
CN109558170B (zh) * 2018-11-06 2021-05-04 极芯通讯技术(南京)有限公司 一种支持数据级并行和多指令融合的二维数据通路架构
CN109558170A (zh) * 2018-11-06 2019-04-02 海南大学 一种支持数据级并行和多指令融合的二维数据通路架构
CN110187865B (zh) * 2019-05-15 2023-06-30 中科亿海微电子科技(苏州)有限公司 全流水高吞吐率累加器及其数据处理方法
CN110187865A (zh) * 2019-05-15 2019-08-30 中科亿海微电子科技(苏州)有限公司 全流水高吞吐率累加器及其数据处理方法
WO2022001496A1 (zh) * 2020-06-30 2022-01-06 上海寒武纪信息科技有限公司 计算装置、集成电路芯片、板卡、电子设备和计算方法
WO2023226060A1 (zh) * 2022-05-23 2023-11-30 长鑫存储技术有限公司 计数器电路

Also Published As

Publication number Publication date
CN105468335B (zh) 2017-04-12
WO2017088458A1 (zh) 2017-06-01

Similar Documents

Publication Publication Date Title
CN105468335A (zh) 流水级运算装置、数据处理方法及片上网络芯片
CN107169560B (zh) 一种自适应可重构的深度卷积神经网络计算方法和装置
CN110084361A (zh) 一种运算装置和方法
CN107807819A (zh) 一种支持离散数据表示的用于执行人工神经网络正向运算的装置及方法
CN102629189B (zh) 基于fpga的流水浮点乘累加方法
CN108197705A (zh) 卷积神经网络硬件加速装置及卷积计算方法及存储介质
CN108416422A (zh) 一种基于fpga的卷积神经网络实现方法及装置
CN104699458A (zh) 定点向量处理器及其向量数据访存控制方法
CN102945224A (zh) 基于fpga的高速可变点fft处理器及其处理方法
CN103678257A (zh) 基于fpga的正定矩阵浮点求逆器及其求逆方法
CN107430586B (zh) 自适应芯片和配置方法
CN101533387A (zh) 基于fpga的边角块稀疏矩阵并行lu分解器
CN103984560A (zh) 基于大规模粗粒度嵌入式可重构系统及其处理方法
US11507531B2 (en) Apparatus and method to switch configurable logic units
CN115658323A (zh) 基于软硬件协同的fpga潮流计算加速架构和方法
Xu et al. A custom parallel hardware architecture of nonlinear model-predictive control on fpga
CN103279323A (zh) 一种加法器
Ilic et al. Simultaneous multi-level divisible load balancing for heterogeneous desktop systems
CN106371808A (zh) 一种并行计算的方法及终端
CN108734270A (zh) 一种兼容型神经网络加速器及数据处理方法
CN103761213A (zh) 基于循环流水计算的片上阵列系统
CN101393516A (zh) 一种实现移动通信终端计算器四则运算法则的方法和装置
CN113705017B (zh) 芯片设计方法、装置、芯片、电子设备及存储介质
Diamantopoulos et al. A system-level transprecision FPGA accelerator for BLSTM using on-chip memory reshaping
Akl et al. Parallel real-time numerical computation: beyond speedup. III

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
CB03 Change of inventor or designer information

Inventor after: Zhang Xiao

Inventor after: Li Zhen

Inventor after: Liu Shaoli

Inventor after: Zhang Shijin

Inventor after: Luo Tao

Inventor after: Qian Cheng

Inventor after: Chen Yunji

Inventor after: Chen Tianshi

Inventor before: Li Zhen

Inventor before: Liu Shaoli

Inventor before: Zhang Shijin

Inventor before: Luo Tao

Inventor before: Qian Cheng

Inventor before: Chen Yunji

Inventor before: Chen Tianshi

CB03 Change of inventor or designer information