面向GPDSP的轻量级高效汇编代码编程方法及系统技术方案

技术编号:31089118 阅读:21 留言:0更新日期:2021-12-01 12:48
本发明专利技术公开了一种面向GPDSP的轻量级高效汇编代码编程方法及系统,本发明专利技术包括:输入串行汇编代码,所述串行汇编代码由指令串行构成,其中指令排布的顺序表示指令执行和生效的顺序,且每一条指令不包含有效的并行符号以及功能单元信息;针对串行汇编代码中的指令自动进行功能单元指派,并确定指令的最早启动时间及其对指派的功能单元的读、写端口占用节拍;针对完成功能单元指派并确定启动时钟周期后的指令进行指令并行调度,以及寄存器自动分配,从而得到最终的汇编代码。本发明专利技术能够极大降低汇编代码开发难度、提高汇编代码的开发效率、缩短开发周期,同时可以适用于多种GPDSP平台架构,对于跨平台架构也可以提供支持,可移植性好。植性好。植性好。

【技术实现步骤摘要】
面向GPDSP的轻量级高效汇编代码编程方法及系统


[0001]本专利技术涉及汇编代码编程
,具体涉及一种面向GPDSP的轻量级高效汇编代码编程方法及系统。

技术介绍

[0002]GPDSP(General Purpose DSP,通用数字信号处理器)在信号处理、无线通信、雷达图像处理等多个领域具有广泛应用,同时随着应用需求的不断延展,对GPDSP的计算性能也提出了新的挑战。为了适应新的应用场景和计算需求,主流GPDSP通常支持定点与浮点计算,具有向量处理、单指令多数据(SingleInstructionMultipleData,SIMD)支持和超长指令字(Very Long Instruction Word,VLIW)的特征,最大限度地挖掘上层应用中的并行性,从而提高计算效率。我国自主研发的FT

Matrix系列和德州仪器公司(TexasInstruments)的DSP就是GPDSP的典型代表。
[0003]为了提高硬件利用率,最大化提升应用性能,目前主流GPDSP上的应用核心代码段或高性能算法库的开发仍然采用汇编语言进行开发。汇编语言更贴近底层体系结构,能够更直接更高效地完成对应的用户指令。由于GPDSP采用VLIW的架构,因此其汇编指令通常需要进行静态排布,即在编译阶段完成所有指令的生成与排布,而在手工汇编编写时,静态排布的约束对程序员提出了极高的挑战,需要考虑包括指令节拍、延迟槽隐藏、寄存器分配、读写端口冲突、指令并行调度等诸多方面。通常一个高效的汇编算法库的开发,需要一个熟练程序员至少一个月的开发周期,而对于复杂的应用程序,所需要的研发周期更长。此外,汇编代码在经过手工优化调度之后,本身与指令集信息、芯片硬件结构具有极强的耦合性,因此完全不具备可移植性。即使在同系列的GPDSP产品上,哪怕同一条指令的执行节拍或分配的功能单元发生变化,都会对整个汇编代码产生极大影响,甚至导致代码需完全重新编写。
[0004]综上所述,基于VLIW的GPDSP在进行汇编代码编程时,程序员需要考虑多种编程约束,包括指令节拍、延迟槽隐藏、寄存器分配、读写端口冲突、指令并行调度等等。而这些约束会导致完成一个高效的核心代码或算法库需要大量的人力与时间成本,同时产出的汇编代码只能面向特定的体系结构,一旦指令集信息有调整则整个汇编代码无法直接移植。

技术实现思路

[0005]本专利技术要解决的技术问题:为了解决GPDSP上汇编代码开发难度大、周期长、可移植性差的问题,提供一种面向GPDSP的轻量级高效汇编代码编程方法及系统,本专利技术能够极大降低汇编代码开发难度、提高汇编代码的开发效率、缩短开发周期,同时可以适用于多种GPDSP平台架构,对于跨平台架构也可以提供支持,可移植性好。
[0006]为了解决上述技术问题,本专利技术采用的技术方案为:
[0007]一种面向GPDSP的轻量级高效汇编代码编程方法,包括:
[0008]1)输入串行汇编代码,所述串行汇编代码由指令串行构成,其中指令排布的顺序
表示指令执行和生效的顺序,且每一条指令不包含有效的并行符号以及功能单元信息;
[0009]2)针对串行汇编代码中的指令自动进行功能单元指派,并确定指令的最早启动时间及其对指派的功能单元的读、写端口占用节拍;
[0010]3)针对完成功能单元指派并确定启动时钟周期后的指令进行指令并行调度,从而得到最终的汇编代码。
[0011]可选地,步骤2)包括:
[0012]2.1)从串行汇编代码中按照出现顺序遍历取出一条待调度的指令作为当前指令x;如果串行汇编代码中所有的指令全部遍历完毕,则跳转执行步骤3);
[0013]2.2)从预设的指令集描述文件中查询出当前指令x读写端口占用节拍j,当前指令x的执行节拍t,以及当前指令x可执行的功能单元集合Y;初始节拍i;
[0014]2.3)判断节拍i是否超出预设的最长执行周期限制,若超出预设的最长执行周期限制,则判定当前指令x未能找到核实的指令放置方案,调度失败,跳转执行步骤2.1);否则跳转执行下一步;
[0015]2.4)从功能单元集合Y遍历取出一个功能单元作为当前功能单元y
k
,如果功能单元集合Y中所有的功能单元全部遍历完毕,则将节拍i加1拍,然后跳转执行步骤2.3);否则,跳转执行下一步;
[0016]2.5)确定当前指令x的执行周期为第i拍到第i+t

1拍;当前指令x对当前功能单元y
k
的读端口占用节拍为第i拍到第i+j

1拍;当前指令x对当前功能单元y
k
的写端口占用节拍为第i+t

j拍到第i+t

1拍;
[0017]2.6)判断当前指令x对当前功能单元y
k
的读端口占用节拍、写端口占用节拍是否和先前的指令有冲突,若无冲突,则判定好到当前指令x的放置方案,确定当前指令x最终对应的功能单元为当前功能单元y
k
,最早启动时间为节拍i,并记录当前指令x对当前功能单元y
k
的读、写端口占用节拍;否则跳转执行步骤2.4)以继续遍历其余功能单元。
[0018]可选地,所述预设的指令集描述文件中每一条指令的字段包括:指令名称、功能单元、执行节拍、读操作数、写操作数、读端口占用节拍、写端口占用节拍。
[0019]可选地,步骤3)包括:针对自动进行功能单元指派,并确定最早启动时间及其对指派的功能单元的读、写端口占用节拍的指令,将其中同一个时钟周期内使用不同功能单元的指令打包在一个VLIW指令包内以实现并发执行,且代码输出时将VLIW指令包内从第二条指令起的每一条指令前均增加一个指定的并行符号。
[0020]可选地,步骤1)中输入的串行汇编代码中,每一条指令还不包含有效的条件域以及操作数列表信息,且条件域以及操作数列表信息均采用寄存器变量;步骤2)中还包括针对串行汇编代码中的寄存器变量进行自动寄存器分配的步骤,且进行自动寄存器分配时为寄存器变量分配的寄存器类型与预设的指令集描述文件中对被分配指令的读/写操作数的类型描述一致。
[0021]可选地,所述进行自动寄存器分配的步骤包括:读取串行汇编代码对应平台的寄存器变量声明文件,所述寄存器变量声明文件中包括串行汇编代码对应平台的寄存器类型以及各个寄存器的单个或成对使用方式;基于寄存器变量声明文件中的寄存器类型以及各个寄存器的单个或成对使用方式,将各个指令中的寄存器变量替换为对应的寄存器。
[0022]可选地,步骤1)~步骤3)的执行主体为汇编代码编译器,步骤3)之后还包括汇编
代码编译器继续将最终的汇编代码编译连接得到二进制代码的步骤。
[0023]可选地,步骤1)~步骤3)的执行主体为实现汇编代码优化的轻量级编译器,步骤3)之后还包括轻量级编译器将输出的最终的汇编代码输出或者发送到用于将最终的汇编代码编译连接得到二进制代码的汇编代本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种面向GPDSP的轻量级高效汇编代码编程方法,其特征在于,包括:1)输入串行汇编代码,所述串行汇编代码由指令串行构成,其中指令排布的顺序表示指令执行和生效的顺序,且每一条指令不包含有效的并行符号以及功能单元信息;2)针对串行汇编代码中的指令自动进行功能单元指派,并确定指令的最早启动时间及其对指派的功能单元的读、写端口占用节拍;3)针对完成功能单元指派并确定启动时钟周期后的指令进行指令并行调度,从而得到最终的汇编代码。2.根据权利要求1所述的面向GPDSP的轻量级高效汇编代码编程方法,其特征在于,步骤2)包括:2.1)从串行汇编代码中按照出现顺序遍历取出一条待调度的指令作为当前指令x;如果串行汇编代码中所有的指令全部遍历完毕,则跳转执行步骤3);2.2)从预设的指令集描述文件中查询出当前指令x读写端口占用节拍j,当前指令x的执行节拍t,以及当前指令x可执行的功能单元集合Y;初始节拍i;2.3)判断节拍i是否超出预设的最长执行周期限制,若超出预设的最长执行周期限制,则判定当前指令x未能找到核实的指令放置方案,调度失败,跳转执行步骤2.1);否则跳转执行下一步;2.4)从功能单元集合Y遍历取出一个功能单元作为当前功能单元y
k
,如果功能单元集合Y中所有的功能单元全部遍历完毕,则将节拍i加1拍,然后跳转执行步骤2.3);否则,跳转执行下一步;2.5)确定当前指令x的执行周期为第i拍到第i+t

1拍;当前指令x对当前功能单元y
k
的读端口占用节拍为第i拍到第i+j

1拍;当前指令x对当前功能单元y
k
的写端口占用节拍为第i+t

j拍到第i+t

1拍;2.6)判断当前指令x对当前功能单元y
k
的读端口占用节拍、写端口占用节拍是否和先前的指令有冲突,若无冲突,则判定好到当前指令x的放置方案,确定当前指令x最终对应的功能单元为当前功能单元y
k
,最早启动时间为节拍i,并记录当前指令x对当前功能单元y
k
的读、写端口占用节拍;否则跳转执行步骤2.4)以继续遍历其余功能单元。3.根据权利要求2所述的面向GPDSP的轻量级高效汇编代码编程方法,其特征在于,所述预设的指令集描述文件中每一条指令的字段包括:...

【专利技术属性】
技术研发人员:陈照云文梅马奕民时洋孔玺畅扈啸王耀华孙海燕邓灿赵宵磊
申请(专利权)人:中国人民解放军国防科技大学
类型:发明
国别省市:

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

1