- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
面向64位RISC-V的基础数学库自动化移植
摘要:受制于核心技术和知识产权等客观条件,国产自主芯片的研发困难重重。RISC-V作为一个开源指令集架构(ISA),具有简洁、模块化等优点,成为了国产处理器的新选择。基础数学库作为计算机系统最基础的核心软件库之一,对国产处理器的软件生态建设和健康发展尤为重要,而目前RISC-V还没有相关的基础数学库。因此,文中旨在将基于国产申威处理器的基础数学库移植到64位RISC-V平台。为了解决基础数学库的高效移植问题,首先设计了一个自动化移植框架,该框架通过功能模块间的松耦合,来实现高可扩展性;然后根据64位RISC-V指令集架构的特点,提出了基于全局的主动式寄存器分配方法和基于层次的指令选择策略;最后应用该框架,实现了对申威平台基础数学库中典型函数的移植,测试结果表明移植后函数功能正确且相对于GLIBC库在性能上有一定的提升。
1 引言处理器作为电子设备的中枢,是网络信息领域最基础的核心技术,因此发展国产处理器必须走自主可控之路。处理器的灵魂是指令集架构,RISC-V作为一个全新的指令集架构,具有开源、模块化、极简等特点,为实现国产自主可控的高性能CPU创造了良好的条件。高性能硬件离不开高性能软件的支撑,RISC-V当前的软件生态以开源社区为基础,以开发环境级的软件为主,如编译工具链、模拟器等。因此,要想推动RISC-V处理器的发展,大量应用软件,尤其是系统级应用的支撑必不可少。对于一个处理器来说,核心软件库是必选项。基础数学库作为计算机系统最基础的核心软件库之一,其精度、性能和可靠性都要为上层软件的开发和应用提供基础支撑。Intel、AMD、SPARC以及申威等平台都拥有自己的基础数学库,而RISC-V目前还没有。为了加强RISC-V生态建设,亟须构建一个高性能的RISC-V基础数学库,因此本文通过移植稳定高效的申威平台基础数学库,将研究成果快速扩展到64位的RISC-V平台。但是,手工移植汇编程序的工作量极大且易出错,产品的开发周期也很长,此外,目前尚没有相关的自动化移植工具可以准确高效地将申威汇编代码移植到RISC-V平台。因此,本文的主要工作是设计一个自动化移植框架,使得申威平台基础数学库通过移植就能实现在64位RISC-V环境上运行。该框架能够根据申威及RISC-V指令集架构的特点,在主要功能模块中分别应用有针对性的算法和策略,以达到准确且高性能的移植效果。通过上述工作,本文取得以下两个方面的成果:(1)完成了对申威平台基础数学库中典型超越函数和数值计算函数的移植后,移植后函数功能正确,且相比于GLIBC库其性能有所提升,目前已将这些函数开源(2)按照高通用性、高可扩展性的标准设计了一个自动化移植框架,解决了基础数学库从申威平台到RISC-V平台的高效移植问题。该框架有巨大的应用潜力,经过简单地扩展,可支持任意指令集架构的汇编程序移植到RISC-V。2 相关工作本文在基于申威处理器的国产基础数学库上有着丰富的研发经验,该库包括以超越函数和数值计算函数为主的共150多个函数,由大量的申威指令集汇编代码编写。汇编代码的移植,宏观上是一个指令集架构到另一个指令集架构的转换,微观上是指令到指令的映射。一条指令包含操作码和操作数,因此这种映射实质上是操作码和操作数的映射,通俗来说就是要解决指令的对应关系和寄存器的对应关系。2.1 不同指令集的特点复杂指令系统计算机(Complex Instruction Set Compu-ter, CISC)有较强的处理高级语言的能力,但复杂的指令系统会带来结构的复杂性2.2 传统的寄存器分配方法寄存器分配的实质是通过映射,将源指令集架构的寄存器映射到目标指令集架构。其最终目的是有效地利用目标指令集架构的寄存器集合,最小化访存指令数量在编译器优化中,寄存器分配(register allocation)是将大量的源程序变量分配到少量的目标CPU寄存器的过程。传统的寄存器分配方法有图着色法(graph coloring register allocation)和线性扫描法(linear scanning register allocation)另一种思路是将源指令集架构的寄存器全部映射到内存中,寄存器仅作为中间件暂存数据2.3 经典的指令选择算法将IL操作映射到目标机操作的过程称为指令选择(instruction selection)3 自动化移植框架的组成自动化移植框架旨在实现申威平台基础数学库汇编代码自动化静态翻译,以解决申威指令集架构到64位RISC-V指令集架构的自动化移植问题。如图1所示,为满足框架对扩展性的需求,进行松耦合的模块化设计,其主要移植过程为寄存器分配(r
文档评论(0)