一种指令延迟执行和指令规约的方法和装置制造方法及图纸

技术编号:18445730 阅读:55 留言:0更新日期:2018-07-14 10:42
本发明专利技术公开了计算机处理器结构技术领域的一种指令延迟执行和指令规约的方法,包括:一种函数式的指令、一个函数规约的规则集合、一个函数可组合的规则集合,一种指令延迟执行和指令规约的装置,该指令延迟执行和指令规约的装置包括:一个函数输入缓冲区、若干个函数规约模块、一个函数组合模块以及一个函数包缓冲区,本方案一方面将若干个函数简化成一个处理器硬件支持的复杂函数,另一方面将若干个函数之间返回值和参数传递由外部存储器转变成内部存储器完成,从而减少数据与外部或低速存储器之间的交互,以达到降低存储带宽需求和功耗的目的。

A method and device for instruction delay execution and instruction specification

The invention discloses a method of instruction delay execution and instruction protocol in the field of computer processor structure, which includes a functional instruction, a set of rules of a function specification, a set of rules that can be combined, a device for instruction delay execution and instruction regulation, which delays execution and refers to the instruction. The devices that make a protocol include a function input buffer, a number of function specification modules, a function combination module, and a function packet buffer. On the one hand, the scheme simplifies several functions into a complex function supported by the processor hardware, and on the other hand, transfer the return values and parameters between several functions by the other. The external memory is converted into internal memory to reduce the interaction between the data and the external or low speed memory, in order to reduce the demand for storage bandwidth and power consumption.

【技术实现步骤摘要】
一种指令延迟执行和指令规约的方法和装置
本专利技术涉及计算机处理器结构
,具体为一种指令延迟执行和指令规约的方法和装置。
技术介绍
计算机程序有两种执行策略,贪婪执行(立即执行)和懒惰执行(延迟执行)。对于命令式编程的语言构造得到的绝大多数程序都是采用贪婪执行策略。计算机处理器的硬件执行的机器代码就是一种命令式语言,因此几乎所有的计算机处理器都是采用贪婪执行策略设计而成。贪婪执行的优点是计算机不需要跟踪和调度某条指令或者某句表达式的时机,程序员可以指定指令执行的顺序,减少硬件判断的复杂度。而懒惰执行可以从多方面提高程序的性能,如避免执行不需要的计算,避免计算组合表达式中已经处于的错误条件,减少程序执行的内存开销等。与命令式编程大多数采用贪婪执行策略相对,函数式编程大多数采用懒惰执行策略。在函数式编程中允许高阶函数将函数作为参数传入,并规约成一个新的函数返回。这种规约可以改变整个程序的执行顺序从而优化执行效率。通常前一种命令式编程的架构具有一般化的处理能力和优化结构,如中央处理器上的程序会充分利用中央处理单元的计算指令以及数据和指令缓存。而另一种处理器架构通常是针对某一类有自身特征的程序而设计,具有比较特殊的计算单元和局部存储器结构,如神经网络加速器会设计大量相互有独特拓扑关系的乘累加器用于卷积或矢量内积运算。如果仍然采用命令式编程和贪婪执行策略,前者的程序很难在后者上达到高效率,所以需要重新编写或者编译前者的程序。
技术实现思路
本专利技术的目的在于提供一种指令延迟执行和指令规约的方法和装置,以解决上述
技术介绍
中提出的神经网络加速器会设计大量相互有独特拓扑关系的乘累加器用于卷积或矢量内积运算。如果仍然采用命令式编程和贪婪执行策略,前者的程序很难在后者上达到高效率的问题。为实现上述目的,本专利技术提供如下技术方案:一种指令延迟执行和指令规约的方法,包括:一种函数式的指令、一个函数规约的规则集合、一个函数可组合的规则集合。函数执行时经过函数译码从函数输入缓冲区获得并变换得到函数的可规约形式,根据函数的变量参数和当前规约的函数的返回值,判断是否符合规约和合并的先决条件。如果符合条件,将函数的可规约形式与当前暂存的规约函数输入到规约函数规约状态机,状态机根据给定的规约规则决定是否将该输入函数与当前的规约函数规约成新的函数,如果状态机无法规约该输入函数,当前已经规约的函数将被输入到函数组合模块中,而当前规约函数将被替换成输入函数。当已规约好的函数输入到函数组合模块时,函数组合器将判断是否将输入函数与之前的函数组合成一个函数包,或者终止之前的函数打包,并将已打包好的函数包交付后续执行部件完成函数执行,并以输入函数开始新的函数包。一种函数式的指令必须包含一个函数操作符,一个函数返回值,至少一个变量参数,可以包含若干个非变量参数。函数的操作符定义函数的基本行为,如加法、减法等,函数的返回值代表函数的计算结果,函数的返回值也是该函数被执行一次的标识符,用于指代该条函数的执行。变量参数是指可以将函数作为变量传递的参数。非变量参数是指不可以传递函数的参数。一种函数规约规则集合由若干条规约规则组成。若规则集不为空,每条规约规则定义为输入两个函数(一个输入函数和一个当前规约的函数),输入函数的一个变量参数是当前规约函数的返回值,是否存在一个函数式指令能够具有完成两个函数的等价功能,其返回值与输入函数的返回值相同,并且其变量参数是输入函数的变量参数减去由当前规约函数返回值替代的参数,加上当前规约函数的变量参数,并且其非变量参数是两个函数的非变量参数,若存在,则说明两个输入函数符合规约规则。若规则集为空,则该方法不规约任何函数。一种函数可组合规则集合由若干条组合规则组成,每条组合规则定义为输入一个函数和一组函数(一个输入函数和一个当前函数包),输入函数的一个变量参数是当前函数包最后一个函数的返回值,是否允许函数包中最后函数的返回值在不计算或者不完全计算的情况下开始执行输入函数。判断是否符合规约和合并的先决条件指一个函数的一个变量参数是另一个函数的返回值。规约过程:将该输入函数与当前的规约函数规约成新的函数,首先将输入函数、当前的规约函数和其返回值存储到历史函数列表中。然后根据规约规则将输入函数和当前的规约函数生成新的规约函数,将新的规约函数中的参数设置为输入函数和规约函数的参数。将当前规约函数换成新的规约函数。如果输入函数与当前的规约函数不能构成新的规约函数,则查找历史函数列表。如果输入函数的某个参数变量与历史列表中的某一个返回值匹配,则需要将这个返回值对应的规约函数输出到函数组合,并将历史列表中该项之后的表项里的输入函数组合成新的规约函数,输出到函数组合中,或者将历史列表中最后的规约函数输出到函数组合中。并清空历史列表用新的输入函数替换当前规约函数。如果在历史函数列表中没有找到匹配的返回值,则将当前的规约函数输出到函数组合中,清空历史列表并将新的输入函数替换当前规约函数。组合过程:如果输入函数能够符合函数组合判断规则,将输入的函数置于函数包末尾,从组合执行的资源中分配一个用于组合的资源(一块局部存储器,一组寄存器等),并将原函数包尾的函数返回值,以及输入函数中对应该返回值的参数替换成这个资源的标识符。一种指令延迟执行和指令规约的装置,该指令延迟执行和指令规约的装置包括:一个函数输入缓冲区、若干个函数规约模块、一个函数组合模块以及一个函数包缓冲区。一个函数输入缓冲区用于存放已下载或者预先写入的函数指令。可以由一个混合的缓冲区,或者若干个分别存放函数操作符、函数返回值、函数参数的独立缓冲区构成。函数规约模块包括一个函数译码子模块,一个规约先决条件判断子模块,一个当前规约状态机、一个当前规约函数缓冲区、以及一个历史函数列表。一个函数译码子模块,用于将函数从函数输入缓冲区中的函数操作符、返回值和参数译码成可以规约的格式,同时生成该函数用于规约的特征码。一个规约先决条件判断子模块,输入译码得到的函数的变量参数、当前规约函数的返回值以及历史函数列表返回值,输出历史函数或者使能规约状态机。一个规约状态机实现函数规约的规则,其根据当前规约状态和从函数译码子模块输入的规约特征码,判断是否进行规约,或者输出当前规约函数,并更新当前规约状态和当前规约函数缓冲区。一个当前规约函数缓冲区,用于存储当前规约函数。一个历史函数列表,记录每一次当前规约函数缓冲区里更新的内容,由每一条表项内的函数返回值和当前规约函数缓冲区内容所构成。一个组合模块包括一个组合先决条件判断子模块、一个组合状态机、一个函数包缓冲区以及一个历史函数包尾列表。组合先决条件判断子模块接收从函数规约模块输出的一个已经规约好的函数,当前函数包缓冲区尾,部函数的返回值,以及历史返回值列表,输出历史函数包或者使能组合状态机。组合状态机实现函数组合的规则,其根据当前已打包的函数和输入的规约函数,判断是否将规约函数组合到现在缓存的函数包中,或者输出当前缓存的函数包,并以输入的规约函数作为新的函数包开始。与现有技术相比,本专利技术的有益效果是:本方案一方面将若干个函数简化成一个处理器硬件支持的复杂函数,另一方面将若干个函数之间返回值和参数传递由外部存储器转变成内部存储器完成,从而减少数据与外部或低速存储本文档来自技高网...

【技术保护点】
1.一种指令延迟执行和指令规约的方法,其特征在于,包括:一种函数式的指令、一个函数规约的规则集合、一个函数可组合的规则集合。函数执行时经过函数译码从函数输入缓冲区获得并变换得到函数的可规约形式,根据函数的变量参数和当前规约的函数的返回值,判断是否符合规约和合并的先决条件。如果符合条件,将函数的可规约形式与当前暂存的规约函数输入到规约函数规约状态机,状态机根据给定的规约规则决定是否将该输入函数与当前的规约函数规约成新的函数,如果状态机无法规约该输入函数,当前已经规约的函数将被输入到函数组合模块中,而当前规约函数将被替换成输入函数。当已规约好的函数输入到函数组合模块时,函数组合器将判断是否将输入函数与之前的函数组合成一个函数包,或者终止之前的函数打包,并将已打包好的函数包交付后续执行部件完成函数执行,并以输入函数开始新的函数包。一种函数式的指令必须包含一个函数操作符,一个函数返回值,至少一个变量参数,可以包含若干个非变量参数。函数的操作符定义函数的基本行为,如加法、减法等,函数的返回值代表函数的计算结果,函数的返回值也是该函数被执行一次的标识符,用于指代该条函数的执行。变量参数是指可以将函数作为变量传递的参数。非变量参数是指不可以传递函数的参数。一种函数规约规则集合由若干条规约规则组成。若规则集不为空,每条规约规则定义为输入两个函数(一个输入函数和一个当前规约的函数),输入函数的一个变量参数是当前规约函数的返回值,是否存在一个函数式指令能够具有完成两个函数的等价功能,其返回值与输入函数的返回值相同,并且其变量参数是输入函数的变量参数减去由当前规约函数返回值替代的参数,加上当前规约函数的变量参数,并且其非变量参数是两个函数的非变量参数,若存在,则说明两个输入函数符合规约规则。若规则集为空,则该方法不规约任何函数。一种函数可组合规则集合由若干条组合规则组成,每条组合规则定义为输入一个函数和一组函数(一个输入函数和一个当前函数包),输入函数的一个变量参数是当前函数包最后一个函数的返回值,是否允许函数包中最后函数的返回值在不计算或者不完全计算的情况下开始执行输入函数。判断是否符合规约和合并的先决条件指一个函数的一个变量参数是另一个函数的返回值。规约过程:将该输入函数与当前的规约函数规约成新的函数,首先将输入函数、当前的规约函数和其返回值存储到历史函数列表中。然后根据规约规则将输入函数和当前的规约函数生成新的规约函数,将新的规约函数中的参数设置为输入函数和规约函数的参数。将当前规约函数换成新的规约函数。如果输入函数与当前的规约函数不能构成新的规约函数,则查找历史函数列表。如果输入函数的某个参数变量与历史列表中的某一个返回值匹配,则需要将这个返回值对应的规约函数输出到函数组合,并将历史列表中该项之后的表项里的输入函数组合成新的规约函数,输出到函数组合中,或者将历史列表中最后的规约函数输出到函数组合中。并清空历史列表用新的输入函数替换当前规约函数。如果在历史函数列表中没有找到匹配的返回值,则将当前的规约函数输出到函数组合中,清空历史列表并将新的输入函数替换当前规约函数。组合过程:如果输入函数能够符合函数组合判断规则,将输入的函数置于函数包末尾,从组合执行的资源中分配一个用于组合的资源(一块局部存储器,一组寄存器等),并将原函数包尾的函数返回值,以及输入函数中对应该返回值的参数替换成这个资源的标识符。...

【技术特征摘要】
1.一种指令延迟执行和指令规约的方法,其特征在于,包括:一种函数式的指令、一个函数规约的规则集合、一个函数可组合的规则集合。函数执行时经过函数译码从函数输入缓冲区获得并变换得到函数的可规约形式,根据函数的变量参数和当前规约的函数的返回值,判断是否符合规约和合并的先决条件。如果符合条件,将函数的可规约形式与当前暂存的规约函数输入到规约函数规约状态机,状态机根据给定的规约规则决定是否将该输入函数与当前的规约函数规约成新的函数,如果状态机无法规约该输入函数,当前已经规约的函数将被输入到函数组合模块中,而当前规约函数将被替换成输入函数。当已规约好的函数输入到函数组合模块时,函数组合器将判断是否将输入函数与之前的函数组合成一个函数包,或者终止之前的函数打包,并将已打包好的函数包交付后续执行部件完成函数执行,并以输入函数开始新的函数包。一种函数式的指令必须包含一个函数操作符,一个函数返回值,至少一个变量参数,可以包含若干个非变量参数。函数的操作符定义函数的基本行为,如加法、减法等,函数的返回值代表函数的计算结果,函数的返回值也是该函数被执行一次的标识符,用于指代该条函数的执行。变量参数是指可以将函数作为变量传递的参数。非变量参数是指不可以传递函数的参数。一种函数规约规则集合由若干条规约规则组成。若规则集不为空,每条规约规则定义为输入两个函数(一个输入函数和一个当前规约的函数),输入函数的一个变量参数是当前规约函数的返回值,是否存在一个函数式指令能够具有完成两个函数的等价功能,其返回值与输入函数的返回值相同,并且其变量参数是输入函数的变量参数减去由当前规约函数返回值替代的参数,加上当前规约函数的变量参数,并且其非变量参数是两个函数的非变量参数,若存在,则说明两个输入函数符合规约规则。若规则集为空,则该方法不规约任何函数。一种函数可组合规则集合由若干条组合规则组成,每条组合规则定义为输入一个函数和一组函数(一个输入函数和一个当前函数包),输入函数的一个变量参数是当前函数包最后一个函数的返回值,是否允许函数包中最后函数的返回值在不计算或者不完全计算的情况下开始执行输入函数。判断是否符合规约和合并的先决条件指一个函数的一个变量参数是另一个函数的返回值。规约过程:将该输入函数与当前的规约函数规约成新的函数,首先将输入函数、当前的规约函数和其返回值存储到历史函数列表中。然后根据规约规则将输入函数和当前的规约函数生成新的规约函数,将新的规约函数中的参数设置为输入函数和规约函数的参数。将当前规约函数换成新的规约函数。如果输入函数与当前的规约函...

【专利技术属性】
技术研发人员:王磊史少波张齐辉
申请(专利权)人:华夏芯北京通用处理器技术有限公司
类型:发明
国别省市:北京,11

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

1