基于向量计算的编译时低功耗优化方法

    公开(公告)号:CN112445316A

    公开(公告)日:2021-03-05

    申请号:CN201910794732.5

    申请日:2019-08-27

    Abstract: 本发明公开一种基于向量计算的编译时低功耗优化方法,包括以下步骤:编译器读入源程序,通过词法分析、语法分析、语义分析、控制流分析、数据流分析的优化分析手段,识别出向量计算参数为常量的情况并进行标记;编译器在分析出向量计算表达式中参数为立即数向量时,在进行表达式匹配时,调用向量静态预计算库进行计算,然后用计算后的结果替换原有的表达式;编译器分析出向量计算中参数为赋初值变量或者常量变量时,调用向量静态预计算库进行计算,然后用计算后的结果替换原有的表达式。本发明实现在编译时尽量挖掘向量数据的预计算能力的目的,挖掘向量数据的预计算能力,减少运行时的向量访存与计算,提高程序性能,降低处理器能耗。

    一种多线程模式下的快速段式编址配置和访问方法

    公开(公告)号:CN109240702A

    公开(公告)日:2019-01-18

    申请号:CN201810929684.1

    申请日:2018-08-15

    Abstract: 本发明公开一种多线程模式下的快速段式编址配置和访问方法,包括如下步骤:S101、用户程序中使用存储层次关键字;S102、编译器识别并处理用户程序中的关键字;S103、链接器处理重定位信息及多层次数据段;S104、加载器内存加载;S105、程序运行时读取内部寄存器。本发明在编译链接阶段识别和处理多层次存储关键字,程序加载阶段识别和处理多层次存储数据段,程序运行时充分利用CPU提供的内部寄存器获取本线程多层次存储数据段基址,提高了访存效率和灵活性。

    一种数据cache属性细粒度切换的方法

    公开(公告)号:CN114217810B

    公开(公告)日:2025-05-20

    申请号:CN202110398340.4

    申请日:2021-04-14

    Abstract: 本发明公开一种数据cache属性细粒度切换的方法,包括以下步骤:S1:编译选项识别:从程序的编译命令中识别‑fdynamic‑uncache‑symbols选项,若识别成功,使能编译器cache动态配置机制;S2:循环处理程序声明的数据,判定数据默认的Cache属性;S3.1:针对默认属性为可Cache访问的数据,假定其符号为“xxx”,编译器进行编译指示处理;S3.2:针对默认属性为不可Cache访问的数据,假定其符号为“xxx”,编译器进行编译指示处理本发明提高了用户程序数据对Cache空间的整体利用率,进而提高程序运行性能。

    基于cache写暗示机制的编译优化方法

    公开(公告)号:CN114217806B

    公开(公告)日:2025-01-10

    申请号:CN202110347315.3

    申请日:2021-03-31

    Abstract: 本发明公开一种基于cache写暗示机制的编译优化方法,自动识别对连续主存进行写操作的指令序列,并通过指令插桩,对这些指令序列的访存行为进行优化,包括以下步骤:S1:对代码中所有写操作进行识别,并通过插桩的方式进行标记;S2:对S1中识别的写操作的数据单元访问连续性进行判定,如果满足连续性要求,则更新cachesc指令参数;S3:写操作边界处理。本发明可减少因繁琐的存储管理对代码生产过程的干扰,进一步降低访存延迟,提高存储系统性能。

    针对循环内条件转移指令的转移预测优化方法

    公开(公告)号:CN112445520B

    公开(公告)日:2022-11-15

    申请号:CN201910794939.2

    申请日:2019-08-27

    Abstract: 本发明公开一种针对循环内条件转移指令的转移预测优化方法,包括以下步骤:S11、判断一次循环内的指令条数是否能够满足带条件标记的运算指令在带条件转移标志位的条件转移指令之前至少提前N条的条件;S12、如果满足条件,编译器直接生成汇编代码,如果不满足,编译器根据循环体代码量与条件N计算需要循环展开的次数,进行循环展开,生成汇编代码;S13、带条件标记的运算指令提前改变条件转移指令的转移标志位;S14、条件转移指令根据对应的条件标记位进行判断,如果成立,则处理器根据条件转移标记指示跳转取指,否则顺序取指;S15、不论预测为跳转还是不跳转,条件标记位使用后即作废,转移指令条件标记位清0。本发明能够规避循环最后一次转移带来的性能损失。

    一种多线程模式下的快速段式编址配置和访问方法

    公开(公告)号:CN109240702B

    公开(公告)日:2022-06-14

    申请号:CN201810929684.1

    申请日:2018-08-15

    Abstract: 本发明公开一种多线程模式下的快速段式编址配置和访问方法,包括如下步骤:S101、用户程序中使用存储层次关键字;S102、编译器识别并处理用户程序中的关键字;S103、链接器处理重定位信息及多层次数据段;S104、加载器内存加载;S105、程序运行时读取内部寄存器。本发明在编译链接阶段识别和处理多层次存储关键字,程序加载阶段识别和处理多层次存储数据段,程序运行时充分利用CPU提供的内部寄存器获取本线程多层次存储数据段基址,提高了访存效率和灵活性。

    一种数据cache属性细粒度切换的方法

    公开(公告)号:CN114217810A

    公开(公告)日:2022-03-22

    申请号:CN202110398340.4

    申请日:2021-04-14

    Abstract: 本发明公开一种数据cache属性细粒度切换的方法,包括以下步骤:S1:编译选项识别:从程序的编译命令中识别‑fdynamic‑uncache‑symbols选项,若识别成功,使能编译器cache动态配置机制;S2:循环处理程序声明的数据,判定数据默认的Cache属性;S3.1:针对默认属性为可Cache访问的数据,假定其符号为“xxx”,编译器进行编译指示处理;S3.2:针对默认属性为不可Cache访问的数据,假定其符号为“xxx”,编译器进行编译指示处理本发明提高了用户程序数据对Cache空间的整体利用率,进而提高程序运行性能。

    基于异构众核处理器的卷积加速方法

    公开(公告)号:CN112446471A

    公开(公告)日:2021-03-05

    申请号:CN201910799257.0

    申请日:2019-08-28

    Abstract: 本发明公开一种基于异构众核处理器的卷积加速方法,包括以下步骤:S1、根据异构众核处理器的核数,确定输入特征图和卷积核的多核划分方法,实现众核并行加速,S2、各计算核心将划分后的数据通过DMA(直接存储器访问)的方式传输至片上存储器,实现片上存储加速,S3、将卷积操作核心计算过程中的标量计算操作优化为向量计算操作,实现SIMD指令加速,S4、结合异构众核处理器流水线特性,对卷积核心计算过程的指令流进行优化,以提高执行效率,实现指令并行加速。本发明对卷积操作进行加速,显著提升了卷积神经网络在异构众核处理器上的训练和推理性能。

    面向容量受限的程序栈空间深度追溯方法

    公开(公告)号:CN112445482A

    公开(公告)日:2021-03-05

    申请号:CN201910794946.2

    申请日:2019-08-27

    Abstract: 本发明公开一种面向容量受限的程序栈空间深度追溯方法,包括以下步骤:S1、在链接器中建立函数信息的数据结构,形成函数调用关系流程图;S2、获取所有的函数符号信息,建立相应的函数信息数据结构,并将函数的名称、PC值范围、自身栈空间深度信息安装到对应的函数信息结构中;S3、遍历程序所有的重定位信息,根据重定位信息来确定函数调用关系,根据分析结果更新各个函数信息的链表指针;S4、对建立的函数调用关系图做深度优先遍历,通过累加计算获取根节点函数的栈空间深度,对所有根节点栈空间深度做排序后输出。本发明通过静态分析的方法获取栈空间信息,无需重新编译,无需运行插桩,对于程序分析、错误定位以及程序优化有着很好的指导作用。

Patent Agency Ranking