邓 平,朱小龙,孙海燕,任 怡
(国防科技大学计算机学院,湖南 长沙 410073)
随着智能物联网AIOT(Artificial Internet Of Things)应用需求的日益增长、中美国际贸易战的影响以及企业本身对成本和技术创新的追求,RISC-V架构以其开放、简洁、模块化等特点得到了业界广泛关注。国内有多家企业宣布采用RISC-V架构设计相关芯片,包括华为、芯来科技、国防科技大学、中国科学院等。在芯片体系结构相关技术中,向量指令是提高芯片运算性能的重要手段之一。RISC-V联盟于2020年5月发布RISC-V向量扩展0.9版本[1]标准草案,给出了RISC-V体系结构的向量指令规范,为RISC-V体系结构[2]在更高性能的应用领域中的推广提供了支持。
编译器、汇编器等芯片编译工具链对任何一个硬件架构而言,都是构筑软件生态必不可少的组成部分,编译环境的好坏直接决定了该架构的用户数量和应用范围。目前,RISC-V的配套开发环境已经很成熟,但在支持向量指令这方面还不够完善。虽然RISC-V已包含向量指令规范,但在目前的开源工具链代码中并没有实现相关的向量指令,这在很大程度上影响了RISC-V的应用推广。本文的主要工作是基于RISC-V 0.9版本向量规范和GNU Binutils开源平台,讨论实现支持RISC-V向量指令的汇编器关键技术,设计并实现RISC-V向量汇编器。
RISC-V向量指令集是基于基础指令集的拓展,主要用于支持向量运算操作,提高硬件执行效率。在RISC-V 0.9版本中,向量指令遵循如表1所示的编码标准。向量指令[1]主要在标量浮点加载(LOAD-FP)、标量浮点存储(STORE-FP)和原子性存储器操作(AMO)指令的基础上进行拓展定义,另外新增了OP-V类的操作指令。……