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

文档序号:9708040阅读:452来源:国知局
流水级运算装置、数据处理方法及片上网络芯片的制作方法
【技术领域】
[0001]本发明属于数据处理系统领域,更具体地,本发明涉及一种流水级运算装置、数据处理方法及包含该流水级运算装置的片上网络芯片。
【背景技术】
[0002]提供包含处理流水线的数据处理系统以便增加数据处理系统中并行执行的程度从而相应的增加每个周期所执行的指令数目是已知的。在处理流水线中增加流水线级数会增加能够并行执行的程序指令数目。而且,大量的流水线级的处理流水线难以有效的处理失败指令。例如,如果沿处理流水线进行一个加载指令未能在预期的时间内收到它的加载数据,一种做法是使流水线暂停,这将是非常低效的,如果没有后续的指令依赖于该失败的加载指令,则另外一种做法是,允许加载指令作为处理“气泡”与其它沿该流水线进行的程序指令一致的沿处理流水线进行,从而不干扰那些其它处理指令的执行。这种做法的问题是流水线中气泡的出现降低了并行执行的程序指令数目,从而降低了每个周期总的被执行指令的值。
[0003]专利文件1(公开号为CN102411492A)公开了一种数据处理的方法和装置,能够在硬件流水线上采用不同的数据处理速率,实现硬件流水线上数据处理速率的灵活调整。但是该方法仅仅通过控制对硬件流水线上数据处理速率来提高硬件流水线上数据的处理速度。
[0004]专利文件2(公开号为CN102855122A)公开了一种处理流水线控制装置和方法,所述装置具备纹理流水线、加载存储流水线、及算数流水线,该发明通过将纹理流水线划分为第一流水线和第二流水线,使第一流水线负责从存储器中获取描述符数据并将其存储到与纹理流水线紧密耦合的共享描述符缓存中,使第二流水线负责依赖于描述符缓存中存储的描述符数据而从存储器中获取纹理数据。其效果在于,避免了在纹理流水线的这些后面部分中引入不必要的处理气泡。
[0005]但是,上述这些现有技术是通过控制对硬件流水线上数据处理速率或是通过对纹理流水线进行设计来提高硬件流水线上数据的处理速度,并没有从如何提高芯片的运算主频及高运算吞吐量的角度进行考虑。

【发明内容】

[0006]本发明的目的在于,解决至少上述问题和缺陷,本发明采用以下技术方案,提高芯片的工作效率以及高数据吞吐量以使芯片达到最佳的运算性能。
[0007]本发明提供一种流水级运算装置,用于片上网络芯片,其中,包括:
[0008]—级流水模块,具有第一输入缓存寄存器模块、第一流水级模块、和第一输出缓存器模块,所述第一输入缓存寄存器模块设置在所述第一流水级模块的输入端,用于寄存接收的输入数据及控制指令,所述第一流水级模块用于对来自所述第一输入缓存寄存器模块的数据及其最大索引值maxjndex进行向量加法或减法运算,或者根据所述最大索引值maxjndex,使当前时钟周期之后的连续N个时钟周期的运算中在第maxjndex个时钟周期第一输出流水级的输出数据等于输入数据,其余N-1个时钟周期的输出数据为0,其中N和maxjndex均为正整数且N不小于max_index,所述第一输出缓存寄存器模块设置在所述第一流水级模块的输出端,用于存储所述第一流水级的运算结果和控制指令;
[0009]二级流水模块,具有第二流水级模块和第二缓存寄存器模块,所述第二流水级模块用于对来自所述第一输出缓存寄存器模块的运算结果进行导数值的求解以及激活函数的求解,所述第二缓存寄存器模块设置在所述第二流水级模块的输出端,用于存储所述第二流水级的运算结果和控制指令;
[0010]三级流水模块,具有第三流水级模块和第三缓存寄存器模块,所述第三流水级模块用于对来自所述第二缓存寄存器模块的运算结果进行乘法与加法的操作,所述第三缓存寄存器模块设置在所述第三流水级模块的输出端,用于存储所述第三流水级的运算结果和控制指令。
[0011 ]本发明的流水级运算装置,其中,所述第一流水级模块包括一个加减操作模块和多个最大索引值选择模块,
[0012]所述加减操作模块,根据控制信号对该输入数据进行向量加法或者减法操作,并作为所述第一流水级模块的一个输出,
[0013]所述最大索引值选择模块,根据操作码选择该模块输入信号的最大索引值,并作为所述第一流水级模块的另一个输出;或者根据最大索引值max_index,使当前时钟周期之后的连续N个时钟周期的运算中在第maxjndex个时钟周期第一输出流水级的输出数据等于输入数据,其余N-1个时钟周期的输出数据为0。
[0014]本发明的流水级运算装置,其中,所述第二流水级模块包括多个线性差值模块和多个抽样器模块,
[0015]所述线性差值模块,对输入数据通过线性插值近似求解非线性函数的导数值或激活函数值;
[0016]所述抽样器模块,对所述线性插值模块计算的激活函数值与一个随机数产生模块产生的随机值进行比较,如果所述激活函数值大于所述随机数则输出1,否则输出0,其中数值0或1定义32位定点数的输出。
[0017]本发明的流水级运算装置,其中,所述线性差值模块具有加载插值表模式和线性插值模式,
[0018]所述加载差值表模式,根据所述线性差值模块的控制信号,判断正在加载的插值表属于激活函数插值器还是导数插值器,同时根据该控制信号判断正在加载的操作数表示差值表的哪一部分;
[0019]所述线性插值模式,使插值器根据输入信号X的操作数选择插值表中的一组斜率a和截距b,然后根据表达式y = a*x+b求得插值结果,其中y表示差值。
[0020]本发明的流水级运算装置,其中,所述第三流水级模块根据输入值与对应的操作码,对输入的数据进行向量加或减以及乘操作,并输出流水级的结果。
[0021]另外,本发明还提供一种使用上述的流水级运算装置处理数据的方法,包括以下步骤:
[0022]—级流水模块运算步骤,在第一流水级模块执行沿处理流水线进行的程序指令所指定的、对来自第一输入缓存寄存器模块的输入数据及其最大索引值maxjndex进行向量加法或减法运算,或者根据所述最大索引值maxjndex,使之后连续N个时钟周期的运算中在第maxjndex个时钟周期第一输出流水级的输出数据等于输入数据,其余N-1个时钟周期的输出数据为0,其中N和maxjndex均为正整数且N不小于maxjndex,并将运算结果和控制指令存储至第一输出缓存寄存器模块;
[0023]二级流水模块运算步骤,在第二流水级模块执行沿处理流水线进行的程序指令所指定的、对来自第一输出缓存寄存器模块的运算结果进行导数值的求解以及激活函数的求解,并将运算结果和控制指令存储至第二缓存寄存器模块;
[0024]三级流水模块运算步骤,在第三流水级模块执行沿处理流水线进行的程序指令所指定的、对来自第二缓存寄存器模块的运算结果进行乘法与加法的操作,并将运算结果和控制指令存储至第三缓存寄存器模块;
[0025]所述处理数据的方法根据程序指令所指定的运算操作选择性地执行第一、第二、和第三流水级模块中的运算处理中的任一运算处理或它们之中任意两者或三者的组合的运算处理,并由所述第三缓存寄存器输出最终运算结果。
[0026]本发明的处理数据的方法,其中,所述一级流水模块运算步骤中,进一步包括加减操作运算步骤和最大索引值选择步骤,
[0027]所述加减操作运算步骤,根据加减操作运模块中的控制信号对输入数据进行向量加法或者减法操作,并作为所述第一流水级模块的一个输出,
[0028]所述最大索引值选择步骤,根据最大索引值选择模块中的操作码选择输入信号的最大索引值,并作为所述第一流水级模块的另一个输出;或者根据输入的最大索引值max_index,使当前时钟周期之后的连续N个时钟周期的运算中在第maxjndex个时钟周期第一输出流水级的输出数据等于输入数据,其余N-1时钟周期的输出数据为0。
[0029]本发明的处理数据的方法,其中,所述二级流水模块运算步骤中,进一步包括线性差值运算步骤和抽样运算步骤,
[0030]所述线性差值运算步骤,线性插值模块对输入数据通过线性插值近似求解非线性函数的导数值或激活函数值;
[0031]所述抽样运算步骤,对所述线性插值模块计算的激活函数值与一个随机数产生模块产生的随机值进行比较,如果所述激活函数值大于所
当前第1页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1