CN111428327A - 一种指令硬件架构的构建方法、装置及存储介质 - Google Patents

一种指令硬件架构的构建方法、装置及存储介质 Download PDF

Info

Publication number
CN111428327A
CN111428327A CN201811585212.5A CN201811585212A CN111428327A CN 111428327 A CN111428327 A CN 111428327A CN 201811585212 A CN201811585212 A CN 201811585212A CN 111428327 A CN111428327 A CN 111428327A
Authority
CN
China
Prior art keywords
instruction
loop
hardware
processing
determining
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.)
Withdrawn
Application number
CN201811585212.5A
Other languages
English (en)
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.)
Sanechips Technology Co Ltd
Original Assignee
Sanechips Technology Co Ltd
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 Sanechips Technology Co Ltd filed Critical Sanechips Technology Co Ltd
Priority to CN201811585212.5A priority Critical patent/CN111428327A/zh
Publication of CN111428327A publication Critical patent/CN111428327A/zh
Withdrawn legal-status Critical Current

Links

Images

Landscapes

  • Devices For Executing Special Programs (AREA)

Abstract

本发明公开了一种指令硬件架构的构建方法,包括:获取应用程序包含的运算函数;获取处理策略,根据所述处理策略处理所述运算函数,获得第一专用汇编指令;根据预设的通用处理器体系框架优化所述第一专用汇编指令,根据优化后获得的第二专用汇编指令对应的指令机器码和编码信息确定硬件需求列表,根据所述硬件需求列表构建所述第二专用汇编指令的硬件架构。本发明还公开了一种指令硬件架构的构建装置及存储介质。

Description

一种指令硬件架构的构建方法、装置及存储介质
技术领域
本发明公开人工智能处理器技术,尤其涉及一种指令硬件架构的构建方法、装置及存储介质。
背景技术
在业界人工智能专用处理器设计领域,一般采用的指令设计方法是:首先进行指令硬件架构的实现,再进行专用微指令在高级语言编译器中的软件封装。由于缺乏上层应用软件及编译器的优化指导,其硬件架构设计相对比较冗余。
另一方面,通用的高级语言编译器在设计时,并不事先知晓需要支持哪些专用指令,因此其现有优化方法对专用自定义指令的优化程度极低,甚至毫无优化。在专用指令的移植上,业界也一般采用简单封装的方式,导致专用指令的软件利用效率很低。
发明内容
为解决现有存在的技术问题,本发明实施例期望提供一种指令硬件架构的构建方法、装置及存储介质。
本发明实施例的技术方案是这样实现的:
本发明实施例提供了一种指令硬件架构的构建方法,所述方法包括:
获取应用程序包含的运算函数;
获取处理策略,根据所述处理策略处理所述运算函数,获得第一专用汇编指令;
根据预设的通用处理器体系框架优化所述第一专用汇编指令,根据优化后获得的第二专用汇编指令对应的指令机器码和编码信息确定硬件需求列表,根据所述硬件需求列表构建所述第二专用汇编指令的硬件架构。
上述方案中,所述处理策略,包括:第一处理策略;根据所述第一处理策略处理所述运算函数,包括:
确定所述运算函数包含的循环体;
确定所述循环体存在循环嵌套时,检测所述循环体的内层循环的指令之间是否存在依赖关系;确定所述内层循环的指令之间存在依赖关系时,将存在依赖关系的指令变成外层循环携带依赖;
直至所述循环体的内层循环或非嵌套循环均不携带指令间依赖,对所述循环体进行循环展开,获得循环展开后的所述循环体包含的第一指令;
对所述循环展开后的循环体包含的第一指令进行向量化合成,获得向量指令,作为所述第一专用汇编指令。
上述方案中,确定所述循环体的内层循环或非嵌套循环均不携带指令间依赖之后,所述方法还包括:
检测所述运算函数内包含的不存在依赖关系的各循环体对应的循环次数,确定各循环体对应的循环次数的最大公约数,将所述最大公约数作为并行级数;
相应的,所述对所述循环展开后的循环体包含的第一指令进行向量化合成,包括:
根据所述并行级数对所述循环展开后的循环体包含的第一指令进行向量化合成。
上述方案中,针对所述向量指令,所述根据预设的通用处理器体系框架优化所述第一专用汇编指令,根据优化后获得的第二专用汇编指令对应的指令机器码和编码信息确定硬件需求列表,包括:
优化所述向量指令,获得优化后的向量指令,根据所述优化后的向量指令获得所述优化后的向量指令对应的指令机器码;所述指令机器码中包含编码信息;
解析所述指令机器码,确定所述指令机器码包含的编码信息,根据所述编码信息确定硬件需求列表;
其中,所述优化所述向量指令,包括:根据所述通用处理器体系框架对所述向量指令中的运算指令进行消除寄存器冗余的处理,对所述向量指令中的访存指令进行特殊寻址方式优化。
上述方案中,所述处理策略,包括:第二处理策略;根据所述第二处理策略处理所述运算函数,包括:
根据所述运算函数,构造所述运算函数包含的指令的有向无环图(DAG,DirectedAcyclic Graph);遍历所述DAG包含的各指令,确定各指令占用的资源;对各指令占用的资源进行依赖检测,确定与其他指令不存在资源依赖冲突的至少一个第二指令;根据确定的所述至少一个第二指令合成为多发射指令,作为所述第一专用汇编指令。
上述方案中,针对所述多发射指令,所述根据预设的通用处理器体系框架优化所述第一专用汇编指令,根据优化后获得的第二专用汇编指令对应的指令机器码和编码信息确定硬件需求列表,包括:
根据预设的通用处理器体系框架,对所述多发射指令的多发射级数进行优化,以确定并行发射槽的数目;
获得优化后的多发射指令,根据所述优化后的多发射指令获得所述优化后的多发射指令对应的指令机器码,所述指令机器码携带编码信息;
提取所述编码信息,根据所述编码信息确定硬件需求列表。
上述方案中,根据所述优化后的多发射指令获得所述优化后的多发射指令对应的指令机器码之后,所述方法包括:
将所述指令机器码存储于可执行文件中,将所述编码信息存储于所述可执行文件的调试码或注释流中;
所述提取所述编码信息,包括:解析所述可执行文件的调试码或注释流,获得所述编码信息。
本发明实施例提供了一种指令硬件架构的构建装置,所述装置包括:第一处理模块、第二处理模块和第三处理模块;其中,
所述第一处理模块,用于获取应用程序包含的运算函数;
所述第二处理模块,用于获取处理策略,根据所述处理策略处理所述运算函数,获得第一专用汇编指令;
所述第三处理模块,用于根据预设的通用处理器体系框架优化所述第一专用汇编指令,根据优化后获得的第二专用汇编指令对应的指令机器码和编码信息确定硬件需求列表,根据所述硬件需求列表构建所述第二专用汇编指令的硬件架构。
本发明实施例提供了一种指令硬件架构的构建装置,包括:处理器和用于存储能够在处理器上运行的计算机程序的存储器;
其中,所述处理器用于运行所述计算机程序时,执行以上所述的任意一种指令硬件架构的构建方法的步骤。
本发明实施例提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现以上所述的任意一种指令硬件架构的构建方法的步骤。
本发明实施例所提供的指令硬件架构的构建方法、装置及存储介质,获取应用程序包含的运算函数;获取处理策略,根据所述处理策略处理所述运算函数,获得第一专用汇编指令;根据预设的通用处理器体系框架优化所述第一专用汇编指令,根据优化后获得的第二专用汇编指令对应的指令机器码和编码信息确定硬件需求列表,根据所述硬件需求列表构建所述第二专用汇编指令的硬件架构。本发明实施例的方案,基于通用处理器体系框架针对性的优化专用汇编指令,优化效率高,输出的指令机器码和编码信息更加贴合底层硬件的设计,降低了硬件设计冗余,提升软件运行效率,节省实现成本。
附图说明
图1为本发明实施例提供的一种指令硬件架构的构建方法的流程示意图;
图2为本发明实施例提供的另一种指令硬件架构的构建方法的流程示意图;
图3为本发明实施例提供的指令硬件架构的构建装置一的结构示意图;
图4为本发明实施例提供的一种针对向量指令的硬件架构的构建方法的流程流程图;
图5为本发明实施例提供的一种针对向量指令的资源消耗及硬件架构设计示意图;
图6为本发明实施例提供的一种针对多发射指令的硬件架构的构建方法的流程示意图;
图7为本发明实施例提供的一种针对多发射指令的资源消耗及硬件架构设计的示意图;
图8为本发明实施例提供的一种优化编译后输出的专用汇编指令实例图;
图9为本发明实施例提供的一种指令硬件架构的构建装置的结构图;
图10为本发明实施例提供的另一种指令硬件架构的构建装置的结构图。
具体实施方式
在本发明的各种实施例中,获取应用程序包含的运算函数;获取处理策略,根据所述处理策略处理所述运算函数,获得第一专用汇编指令;根据预设的通用处理器体系框架优化所述第一专用汇编指令,根据优化后获得的第二专用汇编指令对应的指令机器码和编码信息确定硬件需求列表,根据所述硬件需求列表构建所述第二专用汇编指令的硬件架构。
下面结合实施例对本发明再作进一步详细的说明。
图1为本发明实施例提供的一种指令硬件架构的构建方法的流程示意图;如图1所示,所述方法可以包括:
步骤101、获取应用程序包含的运算函数。
这里,所述应用程序为运用高级语言编写的人工智能软件算子程序。所述应用程序的功能实现是通过其包含的运算函数,所述运算函数包括:卷积乘累加、复数乘法、取最大值、取最小值等。通过编译器可以提取所述应用程序中包含的运算函数。
步骤102、获取处理策略,根据所述处理策略处理所述运算函数,获得第一专用汇编指令。
具体来说,所述获取处理策略,包括:
编译器确定第一专用汇编指令的类型,根据所述第一专用汇编指令的类型从至少一种预设处理策略中获取所述处理策略。
这里,所述编译器用于将一种语言(通常为高级语言)编译为另一种语言(通常为低级语言)。所述编译指从源代码(通常为高级语言)到能直接被计算机或虚拟机执行的目标代码(通常为低级语言或机器语言)的翻译过程。这里,所述编译器运用获取的所述处理策略处理所述运算函数(即所述高级语言,如C语言编写的运算函数),获得专用汇编指令(即能被计算机或虚拟机执行的低级语言或机器语言描述的指令)。
这里,所述第一专用汇编指令的类型可以由编译器的前端基础设施在提取应用程序的运算函数时预先遍历所述运算函数后,确定所述函数可编译成的指令的类型作为所述第一专用汇编指令的类型,或者,由开发人员根据所述运算函数预先设置并保存在所述编译器中。
所述第一专用汇编指令的分类,包括以下至少一个:向量指令、多发射指令、复杂指令。
所述编译器内保存有第一专用汇编指令的类型和预设处理策略的对应关系;例如:向量指令对应第一处理策略,多发射指令对应第二处理策略,复杂指令对应第三处理策略。
所述处理策略,包括:第一处理策略;运用所述第一处理策略处理所述运算函数,以获得向量指令。所述向量指令是应用程序中的循环运算单元进行并行展开获得的指令。
这里,根据所述第一处理策略处理所述运算函数,包括:
确定所述运算函数包含的循环体;
确定所述循环体存在循环嵌套时,检测所述循环体的内层循环的指令之间是否存在依赖关系;确定所述内层循环的指令之间存在依赖关系时,将存在依赖关系的指令变成外层循环携带依赖;
直至所述循环体的内层循环或非嵌套循环均不携带指令间依赖,对所述循环体进行循环展开,获得循环展开后的所述循环体包含的第一指令;
对所述循环展开后的循环体包含的第一指令进行向量化合成,获得向量指令,作为所述第一专用汇编指令。
需要说明的是,所述运算函数可以包含一个或多个循环体;针对每个循环体均进行相同的处理,具体包括:确定每个循环体是否存在循环嵌套,确定所述循环体存在循环嵌套时,检测所述循环体的内层循环的指令之间是否存在依赖关系;确定所述内层循环的指令之间存在依赖关系时,将存在依赖关系的指令变成外层循环携带依赖;直至每个循环体的内层循环或非嵌套循环不携带指令间依赖为止。对每个循环体均进行循环展开,获得展开后的每个循环体包含的第一指令;对展开后的每个循环体包含的第一指令进行向量化合成,获得向量指令,作为所述第一专用汇编指令。
这里,所述编译器在确定每个循环体的内层循环或非嵌套循环不携带指令间依赖后,可以检测所述运算函数内包含的不存在依赖关系的每个循环体对应的循环次数,确定每个循环体对应的循环次数的最大公约数,将所述最大公约数作为并行级数;根据所述并行级数对展开后的所述一个或多个循环体包含的指令进行向量化合成,获得向量指令。
具体来说,确定所述循环体的内层循环或非嵌套循环均不携带指令间依赖之后,所述方法还包括:
检测所述运算函数内包含的不存在依赖关系的各循环体对应的循环次数,确定各循环体对应的循环次数的最大公约数,将所述最大公约数作为并行级数。
相应的,所述对所述循环展开后的循环体包含的第一指令进行向量化合成,包括:根据所述并行级数对所述循环展开后的循环体包含的第一指令进行向量化合成。
具体来说,所述处理策略,包括:第二处理策略;运用所述第二处理策略处理所述运算函数,获得多发射指令,作为所述第一专用汇编指令。所述多发射指令是编译器静态调度输出的长指令字指令。
这里,根据所述第二处理策略处理所述运算函数,包括:
根据所述运算函数,构造所述运算函数包含的指令的DAG;遍历所述DAG包含的各指令,确定各指令占用的资源;对各指令占用的资源进行依赖检测,确定与其他指令不存在资源依赖冲突的至少一个第二指令;根据确定的所述至少一个第二指令合成为多发射指令,作为所述第一专用汇编指令。
这里,所述指令占用的资源,包括:指令执行占用的功能部件、指令占用所述功能部件的时钟周期数。对各指令占用的资源进行依赖检测,包括:检测同一时钟周期内,任意至少两个指令执行占用的功能部件是否存在冲突。
具体来说,所述处理策略,包括:第三处理策略;运用所述第三处理策略处理所述运算函数,获得复杂指令。所述复杂指令指应用程序的开发人员根据需求设定的,由多条存在相互依赖关系的指令的集合。
这里,根据所述第三处理策略处理所述运算函数,包括:
确定所述运算函数包括的存在依赖关系的至少一个第三指令;确定所述至少一个第三指令的指令数量;
判断所述指令数量是否超过预设阈值,确定所述指令数量超过所述预设阈值时,将所述至少一个第三指令合并为复杂指令,作为所述第一专用汇编指令。
这里,所述第三指令,可以包括:上述的多发射指令、向量指令。
步骤103、根据预设的通用处理器体系框架优化所述第一专用汇编指令,根据优化后获得的第二专用汇编指令对应的指令机器码和编码信息确定硬件需求列表,根据所述硬件需求列表构建所述第二专用汇编指令的硬件架构。
这里,所述预设的通用处理器体系框架指应用程序待封装到的处理器的框架,由开发人员预先确定。
具体地,针对所述向量指令,所述根据预设的通用处理器体系框架优化所述第一专用汇编指令,根据优化后获得的第二专用汇编指令对应的指令机器码和编码信息确定硬件需求列表,包括:
优化所述向量指令,获得优化后的向量指令,根据所述优化后的向量指令获得所述优化后的向量指令对应的指令机器码;所述指令机器码中包含编码信息;
解析所述指令机器码,确定所述指令机器码包含的编码信息,根据所述编码信息确定硬件需求列表;
其中,所述优化所述向量指令,包括:根据所述通用处理器体系框架对所述向量指令中的运算指令进行消除寄存器冗余的处理,对所述向量指令中的访存指令进行特殊寻址方式优化。
这里,所述向量指令对应的指令机器码由编译器的后端基础设施根据所述向量指令输出。所述向量指令对应的指令机器码为能被计算机或虚拟机执行的低级语言或机器语言描述的指令,如二进制码。所述编码信息用于对所述指令机器码进行解释说明,如对应的所需的硬件信息。
所述硬件需求列表用以说明对所述第二专用汇编指令进行硬件架构设计所需的硬件资源。
针对所述向量指令,所述硬件需求列表,可以包括以下至少一个:指令所需的运算引擎个数、寄存器堆大小及其访问端口数目、访存单元个数及其所支持的寻址方式、指令消耗的流水线周期数。
具体地,针对所述多发射指令,所述根据预设的通用处理器体系框架优化所述第一专用汇编指令,根据优化后获得的第二专用汇编指令对应的指令机器码和编码信息确定硬件需求列表,包括:
根据预设的通用处理器体系框架,对所述多发射指令的多发射级数进行优化,以确定并行发射槽的数目;
获得优化后的多发射指令,根据所述优化后的多发射指令获得所述优化后的多发射指令对应的指令机器码,所述指令机器码携带编码信息;
提取所述编码信息,根据所述编码信息确定硬件需求列表。
这里,所述多发射指令对应的指令机器码由编译器的后端基础设施根据所述优化后的多发射指令输出。所述多发射指令对应的指令机器码为能被计算机或虚拟机执行的低级语言或机器语言描述的指令,如二进制码。
所述硬件需求列表,包括以下至少一个:指令发射槽个数、微指令译码器个数、微指令所需的执行部件个数、各部件在流水线中占用的指令周期数。
需要说明的是,由于多发射指令对应的指令机器码(称为多发射指令字)占用的二进制编码位段资源较多,因此可以将产生的编码信息嵌入到保存所述多发射指令字的可执行文件的调试码或者注释流中,并不需要编码在二进制的指令机器码中。硬件需求输出器解析可执行文件中的特有调试码或者注释流,获取所述多发射指令字相关的编码信息,根据所述编码信息获得硬件需求列表。
具体来说,根据所述优化后的多发射指令获得所述多发射指令对应的指令机器码,包括:
将所述指令机器码存储于可执行文件中,将所述编码信息存储于所述可执行文件的调试码或注释流中;
相应的,所述提取所述编码信息,包括:解析所述可执行文件的调试码或注释流,获得所述编码信息。
具体地,所述复杂指令指应用程序的开发人员根据需求设定的,由多条存在相互依赖关系的指令的集合。
针对所述复杂指令,所述根据预设的通用处理器体系框架优化所述第一专用汇编指令,根据优化后获得的第二专用汇编指令对应的指令机器码和编码信息确定硬件需求列表,包括:
根据预设的通用处理器体系框架,对所述复杂指令进行优化,获得优化后的复杂指令,根据所述优化后的复杂指令获得所述优化后的复杂指令对应的指令机器码及编码信息;根据所述指令机器码和所述编码信息,确定硬件需求列表。
这里,所述对所述复杂指令进行优化,包括但不限于:
确定所述复杂指令中包含向量指令时,根据所述通用处理器体系框架对所述向量指令中的运算指令进行消除寄存器冗余的处理,对所述向量指令中的访存指令进行特殊寻址方式优化;和/或,
确定所述复杂指令中包含多发射指令时,根据所述通用处理器体系框架对所述多发射指令的多发射级数进行优化,以确定并行发射槽的数目。
获得优化后的复杂指令后,编译器的后端基础设施即可输出所述复杂指令对应的指令机器码及其携带的编码信息。根据所述编码信息可以得到所述硬件需求列表。
通过上述方法,基于通用处理器体系框架针对性的优化第一专用汇编指令,优化效率高,输出的指令机器码和编码信息更加贴合底层硬件的设计,降低了硬件设计冗余;基于输出的指令机器码及其对应的编码信息获得硬件需求列表,根据所述硬件需求列表确定优化后获得的第二专用汇编指令的硬件架构,最终根据确定的硬件架构完成硬件实现,节省实现成本,提升软件运行效率。
图2为本发明实施例提供的另一种指令硬件架构的构建方法的流程图;如图2所示,所述方法包括:编译器解析应用程序对应的运算函数,判断所述运算函数的指令之间是否存在相关依赖;根据依赖检测结果,选择进行指令的并行展开、再根据展开后的指令进行合并,或者在确定不存在依赖关系时直接对进行合并,以生成对应的专用汇编指令。结合预设的通用处理器体系框架,对生成的所述专用汇编指令的格式进一步优化,输出所述优化后的专用汇编指令对应的符合所述通用处理器体系框架的机器硬件架构的硬件需求列表。根据硬件需求选择相应的方式进行优化后的专用汇编指令的硬件设计,确定所述优化后的专用汇编指令的硬件架构。基于获得的硬件架构可以完成指令硬件实现。
以上所述的判断所述运算函数的指令之间是否存在相关依赖及根据检测结果进行合并的方法,可以参照图1所述的方法,具体根据不同的专用汇编指令的类型选择对应的处理策略进行相应的处理,这里不再赘述。这里根据硬件架构完成指令硬件实现,可以采用现有方法,这里不再赘述。
图3为本发明实施例提供的指令硬件架构的构建装置一的结构示意图;如图3所示,所述装置包括:编译器、硬件资源需求输出器、指令架构设计器。
所述编译器,具体包括:编译标记生成器、专用指令优化器、指令调度合成器、机器资源优化器。
所述指令架构设计器,具体包括:向量指令的架构设计器、多发射指令的架构设计器、复杂指令的架构设计器。
根据所述指令硬件架构的构建装置一实现向量指令的构建、多发射指令的构建、复杂指令的构建。具体结合以下图4、图5、图6、图7进行说明。
图4为本发明实施例提供的一种针对向量指令的硬件架构的构建方法的流程流程图;如图4所示,所述方法实现向量指令的构建。所述方法包括:
步骤401、编译标记生成器对应用程序中的运算函数添加标记。
所述标记用于表示所述运算函数可编译为专用汇编指令、这里具体指向量指令,而不是处理器通用指令。
步骤402、专用指令优化器遍历所述运算函数,确定所述运算函数包括的循环体,并对所述循环体中的指令进行依赖检测;指令调度合成器根据检测结果进行向量化合成(即实现格式归一化),获得向量指令。
这里,确定所述运算函数可以编译为向量指令,则采用图1中所述的第一处理策略进行处理。
具体来说,所述步骤402,包括:确定所述运算函数包含的一个或多个循环体,对每个循环体均检测其是否存在循环嵌套,针对确定存在循环嵌套的循环体,检测所述循环体的内层循环的指令之间是否存在依赖关系;确定所述内层循环的指令之间存在依赖关系时,通过循环交换技术将存在依赖关系的指令变成外层循环携带依赖;直至运算函数中所述一个或多个循环体中每个循环体的内层循环或非嵌套循环均不携带指令间依赖为止;对所述一个或多个循环体中每个循环体进行循环展开,获得展开后的所述一个或多个循环体包含的第一指令;对展开后的所述一个或多个循环体包含的第一指令进行向量化合成,获得向量指令,即获得所述第一专用汇编指令。
需要说明的是,所述编译器在确定每个循环体的内层循环或非嵌套循环不携带指令间依赖后,可以检测所述运算函数内包含的不存在依赖关系的每个循环体对应的循环次数,确定每个循环体对应的循环次数的最大公约数,将所述最大公约数作为并行级数;即所述向量化合成采用的向量化并行级数为求得的所述最大公约数。
步骤403、机器资源优化器根据预设的通用处理器体系框架,优化合成后的向量指令。
这里,所述优化,包括:根据预设的通用处理器体系框架,对所述向量指令中的运算指令消除寄存器冗余,对向量指令中的访存指令做特殊寻址方式优化。
步骤404、编译器输出优化后的向量指令对应的指令机器码。
这里,经由编译器的后端基础设施输出优化后的向量指令对应的指令机器码;所述指令机器码的编码位段中含有编码信息,所述编码信息包含底层的硬件架构设计的指导信息。
步骤405、硬件资源需求输出器获得编译器输出的指令机器码和编码信息,解析所述编码信息,统计输出硬件需求列表。
这里,所述硬件资源需求输出器可以读取符合其读取要求的可执行文件,所述可执行文件用于保存所述指令机器码,所述指令机器码的相应位置处包括编码信息。
所述硬件需求列表,包括:指令所需的运算引擎个数、寄存器堆大小及其访问端口数目、访存单元个数及其所支持的寻址方式、指令消耗的流水线周期数。
这里,所述硬件资源需求输出器可以是独立于编译器的脚本处理模块也可以嵌入所述编译器。
步骤406、向量指令的架构设计器根据所述硬件需求列表,构建优化后的向量指令的硬件架构。
开发人员根据所述硬件架构可以完成所述向量指令的硬件实现。
图5为本发明实施例提供的一种针对向量指令的资源消耗及硬件架构设计示意图;如图5所示,具体为一种单指令多数据流(SIMD,Single Instruction Multiple Data)架构的向量化实现方案;所述硬件架构可以包括:1)多级并行运算引擎,可单指令实现多级数学运算处理;2)多接口寄存器堆,可并行为运算引擎提供源操作数和目的操作数;3)多级存储器访问单元,可大带宽并行读写数据存储器,并支持定制化的寻址方式,以加速数据的访存读写;4)指令执行的流水控制单元,按照编译优化后的汇编指令重排顺序,严格控制流水周期。
图6为本发明实施例提供的一种针对多发射指令的硬件架构的构建方法的流程示意图;如图6所示,所述方法实现了超长指令字多发射指令的编译优化及构建。所述方法包括:
步骤601、编译标记生成器对应用程序中的运算函数添加标记。
这里,所述标记用于表示所述应用函数可编译为专用汇编指令、这里具体指多发射指令的情况,而不是处理器通用指令。
步骤602、专用指令优化器根据编译标记确定专用汇编指令的类型为多发射指令,根据相应的处理策略处理所述运算函数生成多发射指令。
具体地,所述步骤602,包括:
第一步,专用指令优化器根据所述运算函数包含的指令构造指令的DAG,所述DAG的各指令可以为向量指令,也可以为通用标量指令;
第二步,对DAG各指令递归地进行深度优先遍历,统计各指令占用的资源参数;所述占用的资源参数,包括:指令执行占用的功能部件,以及指令占用该部件的时钟周期数;
第三步,对各指令占用的资源进行依赖检测,若两指令间存在资源依赖冲突,则确定该两指令不能并行发射;
第四步,指令调度合成器获得所述DAG中与其他指令不存在资源依赖冲突的至少一个第二指令;根据确定的所述至少一个第二指令合成为多发射指令,作为所述第一专用汇编指令。
步骤603、机器资源优化器根据预设的通用处理器体系框架,优化合成后的多发射指令。
具体来说,所述步骤603包括:机器资源优化器根据预设的通用处理器体系框架,对所述多发射指令的多发射级数进行优化(即根据通用处理器体系框架的限制,合理定义并行发射槽的数目)。
步骤604、编译器输出所述多发射指令对应的指令机器码。
这里,编译器的后端基础设施输出所述多发射指令对应的指令机器码(一般称为多发射长指令字)和编码信息。
需要说明的是,所述编码信息包括:实现所述多发射指令硬件架构所述的硬件信息。由于所述多发射指令字占用的二进制编码位段资源较多,因此可以将产生的编码信息嵌入到保存所述多发射长指令字的可执行文件的调试码或者注释流中,并不需要编码在二进制的指令机器码中。
步骤605、硬件资源需求输出器解析可执行文件中的调试码或者注释流,获取多发射指令字相关的编码信息,根据所述编码信息获得硬件需求列表。
这里,所述硬件需求列表可以包括:所需的指令发射槽个数、微指令译码器个数、微指令所需的执行部件个数、各部件在流水线中占用的指令周期数。
步骤606、多发射指令的架构设计器根据硬件需求列表,构建多发射长指令的硬件架构。
开发人员根据所述硬件架构可以完成所述多发射指令的硬件实现。
图7为本发明实施例提供的一种针对多发射指令的资源消耗及硬件架构设计的示意图;如图7所示,所述架构可以包括:1)多级并行指令槽,可实现多级微指令静态多发射;2)多级指令译码器,可并行译码多条微指令;3)多级执行部件与访存部件,执行部件可以为向量运算单元,也可以为标量运算单元;4)功能部件执行的流水控制单元,按照DAG指令节点统计出的占用周期参数,严格控制流水周期。
所述多发射指令可以包括多个指令,每个指令可以为向量指令。图8为本发明实施例提供的一种优化编译后输出的专用汇编指令实例图。如图8所示,为一条四发射长指令字,该四发射长指令字的每个指令又为向量化指令。其包含了前两种实施方式的指令硬件架构的构建结果,可以同时实现数据级与指令级并行,可极大的提高指令执行效率。
需要说明的是,针对以上方法中的架构设计可以采用现有架构设计方法,例如:可以采用单指令多数据方法进行向量指令的硬件架构设计以确定对应的硬件架构,可以采用超长指令字方法进行多发射指令的硬件架构设计以确定对应的硬件架构,这里不做限制。
图9为本发明实施例提供的一种指令硬件架构的构建装置的结构图;如图9所示,所述装置可以应用于移动终端,所述装置包括:第一处理模块901、第二处理模块902和第三处理模块903。其中,
所述第一处理模块901,用于获取应用程序包含的运算函数。
所述第二处理模块902,用于获取处理策略,根据所述处理策略处理所述运算函数,获得第一专用汇编指令。
所述第三处理模块903,用于根据预设的通用处理器体系框架优化所述第一专用汇编指令,根据优化后获得的第二专用汇编指令对应的指令机器码和编码信息确定硬件需求列表,根据所述硬件需求列表构建所述第二专用汇编指令的硬件架构。
具体地,所述处理策略,包括:第一处理策略。
所述第二处理模块902,具体用于根据所述第一处理策略处理所述运算函数;所述根据所述第一处理策略处理所述运算函数,包括:确定所述运算函数包含的循环体;确定所述循环体存在循环嵌套时,检测所述循环体的内层循环的指令之间是否存在依赖关系;确定所述内层循环的指令之间存在依赖关系时,将存在依赖关系的指令变成外层循环携带依赖;直至所述循环体的内层循环或非嵌套循环均不携带指令间依赖,对所述循环体进行循环展开,获得循环展开后的所述循环体包含的第一指令;对所述循环展开后的循环体包含的第一指令进行向量化合成,获得向量指令,作为所述第一专用汇编指令。
所述第二处理模块902,还用于检测所述运算函数内包含的不存在依赖关系的各循环体对应的循环次数,确定各循环体对应的循环次数的最大公约数,将所述最大公约数作为并行级数;根据所述并行级数对所述循环展开后的循环体包含的第一指令进行向量化合成。
具体地,所述第三处理模块903,具体用于优化所述向量指令;获得优化后的向量指令,根据所述优化后的向量指令获得所述优化后的向量指令对应的指令机器码;所述指令机器码中包含编码信息;所述编码信息用于对所述指令机器码进行解释说明;解析所述指令机器码,确定所述指令机器码包含的编码信息,根据所述编码信息确定硬件需求列表;其中,优化所述向量指令,包括:根据所述通用处理器体系框架对所述向量指令中的运算指令进行消除寄存器冗余的处理,对所述向量指令中的访存指令进行特殊寻址方式优化。
具体地,所述处理策略,包括:第二处理策略。
所述第二处理模块902,具体用于根据所述第二处理策略处理所述运算函数;所述根据所述第二处理策略处理所述运算函数,包括:根据所述运算函数,构造所述运算函数包含的指令的DAG;遍历所述DAG包含的各指令,确定各指令占用的资源;对各指令占用的资源进行依赖检测,确定与其他指令不存在资源依赖冲突的至少一个第二指令;根据确定的所述至少一个第二指令合成为多发射指令,作为所述第一专用汇编指令。
具体地,所述第三处理模块903,具体用于根据预设的通用处理器体系框架,对所述多发射指令的多发射级数进行优化,以确定并行发射槽的数目;获得优化后的多发射指令,根据所述优化后的多发射指令获得所述优化后的多发射指令对应的指令机器码,所述指令机器码携带编码信息;提取所述编码信息,根据所述编码信息确定硬件需求列表。
所述第三处理模块903,具体用于将所述指令机器码存储于可执行文件中,将所述编码信息存储于所述可执行文件的调试码或注释流中。
相应的,所述第三处理模块903,用于解析所述可执行文件的调试码或注释流,以获得所述编码信息。
需要说明的是:上述实施例提供的指令硬件架构的构建装置在进行指令硬件架构的构建时,仅以上述各程序模块的划分进行举例说明,实际应用中,可以根据需要而将上述处理分配由不同的程序模块完成,即将装置的内部结构划分成不同的程序模块,以完成以上描述的全部或者部分处理。另外,上述实施例提供的指令硬件架构的构建装置与指令硬件架构的构建方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
为实现本发明实施例的方法,本发明实施例提供一种指令硬件架构的构建装置,具体来说,如图10所示,该装置10包括:处理器01和用于存储能够在所述处理器上运行的计算机程序的存储器02;其中,所述处理器01用于运行所述计算机程序时,执行:获取应用程序包含的运算函数;获取处理策略,根据所述处理策略处理所述运算函数,获得第一专用汇编指令;根据预设的通用处理器体系框架优化所述第一专用汇编指令,根据优化后获得的第二专用汇编指令对应的指令机器码和编码信息确定硬件需求列表,根据所述硬件需求列表构建所述第二专用汇编指令的硬件架构。
在一实施例中,所述处理器01用于运行所述计算机程序时,执行:根据所述第一处理策略处理所述运算函数;所述根据所述第一处理策略处理所述运算函数,包括:确定所述运算函数包含的循环体;确定所述循环体存在循环嵌套时,检测所述循环体的内层循环的指令之间是否存在依赖关系;确定所述内层循环的指令之间存在依赖关系时,将存在依赖关系的指令变成外层循环携带依赖;直至所述循环体的内层循环或非嵌套循环均不携带指令间依赖,对所述循环体进行循环展开,获得循环展开后的所述循环体包含的第一指令;对所述循环展开后的循环体包含的第一指令进行向量化合成,获得向量指令,作为所述第一专用汇编指令。
在一实施例中,所述处理器01用于运行所述计算机程序时,执行:检测所述运算函数内包含的不存在依赖关系的各循环体对应的循环次数,确定各循环体对应的循环次数的最大公约数,将所述最大公约数作为并行级数;根据所述并行级数对所述循环展开后的循环体包含的第一指令进行向量化合成。
在一实施例中,所述处理器01用于运行所述计算机程序时,执行:优化所述向量指令,获得优化后的向量指令,根据所述优化后的向量指令获得所述优化后的向量指令对应的指令机器码;所述指令机器码中包含编码信息;解析所述指令机器码,确定所述指令机器码包含的编码信息,根据所述编码信息确定硬件需求列表;其中,所述优化所述向量指令,包括:根据所述通用处理器体系框架对所述向量指令中的运算指令进行消除寄存器冗余的处理,对所述向量指令中的访存指令进行特殊寻址方式优化。
在一实施例中,所述处理器01用于运行所述计算机程序时,执行:根据所述第二处理策略处理所述运算函数;所述根据所述第二处理策略处理所述运算函数,包括:根据所述运算函数,构造所述运算函数包含的指令的DAG;遍历所述DAG包含的各指令,确定各指令占用的资源;对各指令占用的资源进行依赖检测,确定与其他指令不存在资源依赖冲突的至少一个第二指令;根据确定的所述至少一个第二指令合成为多发射指令,作为所述第一专用汇编指令。
在一实施例中,所述处理器01用于运行所述计算机程序时,执行:针对所述多发射指令,根据预设的通用处理器体系框架,对所述多发射指令的多发射级数进行优化,以确定并行发射槽的数目;获得优化后的多发射指令,根据所述优化后的多发射指令获得所述优化后的多发射指令对应的指令机器码,所述指令机器码携带编码信息;提取所述编码信息,根据所述编码信息确定硬件需求列表。
在一实施例中,所述处理器01用于运行所述计算机程序时,执行:将所述指令机器码存储于可执行文件中,将所述编码信息存储于所述可执行文件的调试码或注释流中;相应的,所述提取所述编码信息,包括:解析所述可执行文件的调试码或注释流,获得所述编码信息。
需要说明的是:上述实施例提供的指令硬件架构的构建装置与指令硬件架构的构建方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
当然,实际应用时,如图10所示,该装置10还可以包括:至少一个网络接口03。该装置10中的各个组件通过总线系统04耦合在一起。可理解,总线系统04用于实现这些组件之间的连接通信。总线系统04除包括数据总线之外,还包括电源总线、控制总线和状态信号总线。但是为了清楚说明起见,在图10中将各种总线都标为总线系统04。其中,所述处理器04的个数可以为至少一个。网络接口03用于装置10与其他设备之间有线或无线方式的通信。
本发明实施例中的存储器02用于存储各种类型的数据以支持装置10的操作。
上述本发明实施例揭示的方法可以应用于处理器01中,或者由处理器01实现。处理器01可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器01中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器01可以是通用处理器、数字信号处理器(DSP,Digital Signal Processor),或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。处理器01可以实现或者执行本发明实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者任何常规的处理器等。结合本发明实施例所公开的方法的步骤,可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于存储介质中,该存储介质位于存储器02,处理器01读取存储器02中的信息,结合其硬件完成前述方法的步骤。
在示例性实施例中,指令硬件架构的构建装置10可以被一个或多个应用专用集成电路(ASIC,Application Specific Integrated Circuit)、DSP、可编程逻辑器件(PLD,Programmable Logic Device)、复杂可编程逻辑器件(CPLD,Complex Programmable LogicDevice)、现场可编程门阵列(FPGA,Field-Programmable Gate Array)、通用处理器、控制器、微控制器(MCU,Micro Controller Unit)、微处理器(Microprocessor)、或其他电子元件实现,用于执行前述方法。
可以理解,本发明实施例中的存储器(比如存储器02),可以是易失性存储器或非易失性存储器,也可包括易失性和非易失性存储器两者。其中,非易失性存储器可以是只读存储器(ROM,Read Only Memory)、可编程只读存储器(PROM,Programmable Read-OnlyMemory)、可擦除可编程只读存储器(EPROM,Erasable Programmable Read-Only Memory)、电可擦除可编程只读存储器(EEPROM,Electrically Erasable Programmable Read-OnlyMemory)、磁性随机存取存储器(FRAM,ferromagnetic random access memory)、快闪存储器(Flash Memory)、磁表面存储器、光盘、或只读光盘(CD-ROM,Compact Disc Read-OnlyMemory);磁表面存储器可以是磁盘存储器或磁带存储器。易失性存储器可以是随机存取存储器(RAM,Random Access Memory),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的RAM可用,例如静态随机存取存储器(SRAM,Static Random Access Memory)、同步静态随机存取存储器(SSRAM,Synchronous Static Random Access Memory)、动态随机存取存储器(DRAM,Dynamic Random Access Memory)、同步动态随机存取存储器(SDRAM,Synchronous Dynamic Random Access Memory)、双倍数据速率同步动态随机存取存储器(DDRSDRAM,Double Data Rate Synchronous Dynamic Random Access Memory)、增强型同步动态随机存取存储器(ESDRAM,Enhanced Synchronous Dynamic Random AccessMemory)、同步连接动态随机存取存储器(SLDRAM,SyncLink Dynamic Random AccessMemory)、直接内存总线随机存取存储器(DRRAM,Direct Rambus Random Access Memory)。本发明实施例描述的存储器旨在包括但不限于这些和任意其它适合类型的存储器。
在示例性实施例中,本发明实施例还提供了一种计算机可读存储介质,例如包括计算机程序的存储器02,上述计算机程序可由指令硬件架构的构建装置10的处理器01执行,以完成前述方法所述步骤。
具体地,本发明实施例提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器运行时,执行:获取应用程序包含的运算函数;获取处理策略,根据所述处理策略处理所述运算函数,获得第一专用汇编指令;根据预设的通用处理器体系框架优化所述第一专用汇编指令,根据优化后获得的第二专用汇编指令对应的指令机器码和编码信息确定硬件需求列表,根据所述硬件需求列表构建所述第二专用汇编指令的硬件架构。
在一实施例中,所述计算机程序被处理器运行时,执行:根据所述第一处理策略处理所述运算函数;所述根据所述第一处理策略处理所述运算函数,包括:确定所述运算函数包含的循环体;确定所述循环体存在循环嵌套时,检测所述循环体的内层循环的指令之间是否存在依赖关系;确定所述内层循环的指令之间存在依赖关系时,将存在依赖关系的指令变成外层循环携带依赖;直至所述循环体的内层循环或非嵌套循环均不携带指令间依赖,对所述循环体进行循环展开,获得循环展开后的所述循环体包含的第一指令;对所述循环展开后的循环体包含的第一指令进行向量化合成,获得向量指令,作为所述第一专用汇编指令。
在一实施例中,所述计算机程序被处理器运行时,执行:检测所述运算函数内包含的不存在依赖关系的各循环体对应的循环次数,确定各循环体对应的循环次数的最大公约数,将所述最大公约数作为并行级数;根据所述并行级数对所述循环展开后的循环体包含的第一指令进行向量化合成。
在一实施例中,所述计算机程序被处理器运行时,执行:优化所述向量指令,获得优化后的向量指令,根据所述优化后的向量指令获得所述优化后的向量指令对应的指令机器码;所述指令机器码中包含编码信息;解析所述指令机器码,确定所述指令机器码包含的编码信息,根据所述编码信息确定硬件需求列表;其中,所述优化所述向量指令,包括:根据所述通用处理器体系框架对所述向量指令中的运算指令进行消除寄存器冗余的处理,对所述向量指令中的访存指令进行特殊寻址方式优化。
在一实施例中,所述计算机程序被处理器运行时,执行:根据所述第二处理策略处理所述运算函数;所述根据所述第二处理策略处理所述运算函数,包括:根据所述运算函数,构造所述运算函数包含的指令的DAG;遍历所述DAG包含的各指令,确定各指令占用的资源;对各指令占用的资源进行依赖检测,确定与其他指令不存在资源依赖冲突的至少一个第二指令;根据确定的所述至少一个第二指令合成为多发射指令,作为所述第一专用汇编指令。
在一实施例中,所述计算机程序被处理器运行时,执行:针对所述多发射指令,根据预设的通用处理器体系框架,对所述多发射指令的多发射级数进行优化,以确定并行发射槽的数目;获得优化后的多发射指令,根据所述优化后的多发射指令获得所述优化后的多发射指令对应的指令机器码,所述指令机器码携带编码信息;提取所述编码信息,根据所述编码信息确定硬件需求列表。
在一实施例中,所述计算机程序被处理器运行时,执行:将所述指令机器码存储于可执行文件中,将所述编码信息存储于所述可执行文件的调试码或注释流中;相应的,所述提取所述编码信息,包括:解析所述可执行文件的调试码或注释流,获得所述编码信息。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。以上所描述的设备实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,如:多个单元或组件可以结合,或可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的各组成部分相互之间的耦合、或直接耦合、或通信连接可以是通过一些接口,设备或单元的间接耦合或通信连接,可以是电性的、机械的或其它形式的。
上述作为分离部件说明的单元可以是、或也可以不是物理上分开的,作为单元显示的部件可以是、或也可以不是物理单元,即可以位于一个地方,也可以分布到多个网络单元上;可以根据实际的需要选择其中的部分或全部单元来实现本实施例方案的目的。
另外,在本发明各实施例中的各功能单元可以全部集成在一个处理单元中,也可以是各单元分别单独作为一个单元,也可以两个或两个以上单元集成在一个单元中;上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:移动存储设备、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
或者,本发明上述集成的单元如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实施例的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机、服务器、或者网络设备等)执行本发明各个实施例所述方法的全部或部分。而前述的存储介质包括:移动存储设备、ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。

Claims (10)

1.一种指令硬件架构的构建方法,其特征在于,所述方法包括:
获取应用程序包含的运算函数;
获取处理策略,根据所述处理策略处理所述运算函数,获得第一专用汇编指令;
根据预设的通用处理器体系框架优化所述第一专用汇编指令,根据优化后获得的第二专用汇编指令对应的指令机器码和编码信息确定硬件需求列表,根据所述硬件需求列表构建所述第二专用汇编指令的硬件架构。
2.根据权利要求1所述的方法,其特征在于,所述处理策略,包括:第一处理策略;根据所述第一处理策略处理所述运算函数,包括:
确定所述运算函数包含的循环体;
确定所述循环体存在循环嵌套时,检测所述循环体的内层循环的指令之间是否存在依赖关系;确定所述内层循环的指令之间存在依赖关系时,将存在依赖关系的指令变成外层循环携带依赖;
直至所述循环体的内层循环或非嵌套循环均不携带指令间依赖,对所述循环体进行循环展开,获得循环展开后的所述循环体包含的第一指令;
对所述循环展开后的循环体包含的第一指令进行向量化合成,获得向量指令,作为所述第一专用汇编指令。
3.根据权利要求2所述的方法,其特征在于,确定所述循环体的内层循环或非嵌套循环均不携带指令间依赖之后,所述方法还包括:
检测所述运算函数内包含的不存在依赖关系的各循环体对应的循环次数,确定各循环体对应的循环次数的最大公约数,将所述最大公约数作为并行级数;
相应的,所述对所述循环展开后的循环体包含的第一指令进行向量化合成,包括:
根据所述并行级数对所述循环展开后的循环体包含的第一指令进行向量化合成。
4.根据权利要求2所述的方法,其特征在于,针对所述向量指令,所述根据预设的通用处理器体系框架优化所述第一专用汇编指令,根据优化后获得的第二专用汇编指令对应的指令机器码和编码信息确定硬件需求列表,包括:
优化所述向量指令,获得优化后的向量指令,根据所述优化后的向量指令获得所述优化后的向量指令对应的指令机器码;所述指令机器码中包含编码信息;
解析所述指令机器码,确定所述指令机器码包含的编码信息,根据所述编码信息确定硬件需求列表;
其中,所述优化所述向量指令,包括:根据所述通用处理器体系框架对所述向量指令中的运算指令进行消除寄存器冗余的处理,对所述向量指令中的访存指令进行特殊寻址方式优化。
5.根据权利要求1所述的方法,其特征在于,所述处理策略,包括:第二处理策略;根据所述第二处理策略处理所述运算函数,包括:
根据所述运算函数,构造所述运算函数包含的指令的有向无环图DAG;遍历所述DAG包含的各指令,确定各指令占用的资源;对各指令占用的资源进行依赖检测,确定与其他指令不存在资源依赖冲突的至少一个第二指令;根据确定的所述至少一个第二指令合成为多发射指令,作为所述第一专用汇编指令。
6.根据权利要求5所述的方法,其特征在于,针对所述多发射指令,所述根据预设的通用处理器体系框架优化所述第一专用汇编指令,根据优化后获得的第二专用汇编指令对应的指令机器码和编码信息确定硬件需求列表,包括:
根据预设的通用处理器体系框架,对所述多发射指令的多发射级数进行优化,以确定并行发射槽的数目;
获得优化后的多发射指令,根据所述优化后的多发射指令获得所述优化后的多发射指令对应的指令机器码,所述指令机器码携带编码信息;
提取所述编码信息,根据所述编码信息确定硬件需求列表。
7.根据权利要求6所述的方法,其特征在于,根据所述优化后的多发射指令获得所述优化后的多发射指令对应的指令机器码之后,所述方法包括:
将所述指令机器码存储于可执行文件中,将所述编码信息存储于所述可执行文件的调试码或注释流中;
所述提取所述编码信息,包括:解析所述可执行文件的调试码或注释流,获得所述编码信息。
8.一种指令硬件架构的构建装置,其特征在于,所述装置包括:第一处理模块、第二处理模块和第三处理模块;其中,
所述第一处理模块,用于获取应用程序包含的运算函数;
所述第二处理模块,用于获取处理策略,根据所述处理策略处理所述运算函数,获得第一专用汇编指令;
所述第三处理模块,用于根据预设的通用处理器体系框架优化所述第一专用汇编指令,根据优化后获得的第二专用汇编指令对应的指令机器码和编码信息确定硬件需求列表,根据所述硬件需求列表构建所述第二专用汇编指令的硬件架构。
9.一种指令硬件架构的构建装置,其特征在于,包括:处理器和用于存储能够在处理器上运行的计算机程序的存储器;
其中,所述处理器用于运行所述计算机程序时,执行权利要求1至7任一项所述方法的步骤。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至7任一项所述方法的步骤。
CN201811585212.5A 2018-12-24 2018-12-24 一种指令硬件架构的构建方法、装置及存储介质 Withdrawn CN111428327A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201811585212.5A CN111428327A (zh) 2018-12-24 2018-12-24 一种指令硬件架构的构建方法、装置及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201811585212.5A CN111428327A (zh) 2018-12-24 2018-12-24 一种指令硬件架构的构建方法、装置及存储介质

Publications (1)

Publication Number Publication Date
CN111428327A true CN111428327A (zh) 2020-07-17

Family

ID=71545648

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201811585212.5A Withdrawn CN111428327A (zh) 2018-12-24 2018-12-24 一种指令硬件架构的构建方法、装置及存储介质

Country Status (1)

Country Link
CN (1) CN111428327A (zh)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112905242A (zh) * 2021-03-23 2021-06-04 浙江大华技术股份有限公司 分支路径跳转方法、装置、存储介质及电子装置
CN112947932A (zh) * 2021-02-24 2021-06-11 上海商汤智能科技有限公司 对编译过程中的向量化进行优化的方法、装置及电子设备
CN113407236A (zh) * 2021-06-29 2021-09-17 上海阵量智能科技有限公司 一种指令汇编方法、装置、计算机设备及存储介质
CN113590193A (zh) * 2021-07-12 2021-11-02 苏州仰思坪半导体有限公司 一种运算装置、方法、介质及计算设备
CN114996915A (zh) * 2022-05-11 2022-09-02 电子科技大学 基于归一化算子库的专用处理器指令系统设计方法

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101727513A (zh) * 2008-10-28 2010-06-09 北京芯慧同用微电子技术有限责任公司 一种超长指令字处理器的设计和优化方法
CN102200924A (zh) * 2011-05-17 2011-09-28 北京北大众志微系统科技有限责任公司 基于模调度实现循环指令调度的编译方法及装置
CN103440229A (zh) * 2013-08-12 2013-12-11 浪潮电子信息产业股份有限公司 一种基于mic架构处理器的向量化优化方法
CN103608774A (zh) * 2011-11-07 2014-02-26 辉达公司 用于编译期间的向量化和存储器合并的算法
US20150268940A1 (en) * 2014-03-21 2015-09-24 Sara S. Baghsorkhi Automatic loop vectorization using hardware transactional memory
CN108304218A (zh) * 2018-03-14 2018-07-20 郑州云海信息技术有限公司 一种汇编代码的编写方法、装置、系统和可读存储介质

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101727513A (zh) * 2008-10-28 2010-06-09 北京芯慧同用微电子技术有限责任公司 一种超长指令字处理器的设计和优化方法
CN102200924A (zh) * 2011-05-17 2011-09-28 北京北大众志微系统科技有限责任公司 基于模调度实现循环指令调度的编译方法及装置
CN103608774A (zh) * 2011-11-07 2014-02-26 辉达公司 用于编译期间的向量化和存储器合并的算法
CN103440229A (zh) * 2013-08-12 2013-12-11 浪潮电子信息产业股份有限公司 一种基于mic架构处理器的向量化优化方法
US20150268940A1 (en) * 2014-03-21 2015-09-24 Sara S. Baghsorkhi Automatic loop vectorization using hardware transactional memory
CN108304218A (zh) * 2018-03-14 2018-07-20 郑州云海信息技术有限公司 一种汇编代码的编写方法、装置、系统和可读存储介质

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
王琪等: "软硬件协同循环优化方法的设计与实现", 计算机辅助设计与图形学学报, vol. 25, no. 10, pages 1574 - 1581 *

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112947932A (zh) * 2021-02-24 2021-06-11 上海商汤智能科技有限公司 对编译过程中的向量化进行优化的方法、装置及电子设备
CN112947932B (zh) * 2021-02-24 2024-06-07 上海商汤智能科技有限公司 对编译过程中的向量化进行优化的方法、装置及电子设备
CN112905242A (zh) * 2021-03-23 2021-06-04 浙江大华技术股份有限公司 分支路径跳转方法、装置、存储介质及电子装置
US11914978B2 (en) 2021-03-23 2024-02-27 Zhejiang Dahua Technology Co., Ltd. Systems and methods for code optimization
CN113407236A (zh) * 2021-06-29 2021-09-17 上海阵量智能科技有限公司 一种指令汇编方法、装置、计算机设备及存储介质
CN113407236B (zh) * 2021-06-29 2024-03-08 上海阵量智能科技有限公司 一种指令汇编方法、装置、计算机设备及存储介质
CN113590193A (zh) * 2021-07-12 2021-11-02 苏州仰思坪半导体有限公司 一种运算装置、方法、介质及计算设备
CN113590193B (zh) * 2021-07-12 2024-03-22 苏州仰思坪半导体有限公司 一种运算装置、方法、介质及计算设备
CN114996915A (zh) * 2022-05-11 2022-09-02 电子科技大学 基于归一化算子库的专用处理器指令系统设计方法
CN114996915B (zh) * 2022-05-11 2024-05-28 电子科技大学 基于归一化算子库的专用处理器指令系统设计方法

Similar Documents

Publication Publication Date Title
CN111428327A (zh) 一种指令硬件架构的构建方法、装置及存储介质
US9898292B2 (en) Hardware instruction generation unit for specialized processors
KR101702651B1 (ko) 하드웨어 포인터를 이용한 simd 코어 내 분기 해법
US20180373509A1 (en) Loop execution with predicate computing for dataflow machines
JP3896087B2 (ja) コンパイラ装置およびコンパイル方法
US9720708B2 (en) Data layout transformation for workload distribution
US7882498B2 (en) Method, system, and program of a compiler to parallelize source code
US7917899B2 (en) Program development apparatus, method for developing a program, and a computer program product for executing an application for a program development apparatus
JPH10320214A (ja) コンパイルシステム及びコンピュータプログラム製品
US20020019973A1 (en) Compiler and method for compiling easily adaptable to processor specifications
WO2006017482A2 (en) Programmable processor architecture hierarchical compilation
CN107003885B (zh) 用于低级别可组合高性能计算库的技术
KR101787653B1 (ko) 병렬 파이프라인에서의 분기에 대한 하드웨어 및 소프트웨어 해법
KR101553652B1 (ko) 이종 프로세서에 대한 명령어 컴파일링 장치 및 방법
She et al. OpenCL code generation for low energy wide SIMD architectures with explicit datapath
US20230116546A1 (en) Method for compilation, electronic device and storage medium
Giesemann et al. Using a genetic algorithm approach to reduce register file pressure during instruction scheduling
CN113721899B (zh) 面向gpdsp的轻量级高效汇编代码编程方法及系统
US20070022413A1 (en) Tiered Register Allocation
Bocchino Jr et al. Vector LLVA: a virtual vector instruction set for media processing
Kalra Design and evaluation of register allocation on gpus
Moss et al. Efficient code generation for a domain specific language
JP4721975B2 (ja) コンパイラ装置およびコンパイル方法
Linders Compiler Vectorization for Coarse-Grained Reconfigurable Architectures
Adriaansen Code generation for a Coarse-Grained Reconfigurable Architecture

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
WW01 Invention patent application withdrawn after publication
WW01 Invention patent application withdrawn after publication

Application publication date: 20200717