Page 35 - 《软件学报》2025年第9期
P. 35

3946                                                       软件学报  2025  年第  36  卷第  9  期


                 6   实 验

                 6.1   实验基础设置
                    本文基于    LLVM 16.0  实现了混合指令调度算法及编译器, 使用             RISC-V-GNU-toolchain  中的链接器, 基于
                 RISC-V  模拟器  Spike 扩展了  VLIW  功能, 选用嵌入式系统的性能评测基准          CoreMark  对工具链进行评测, 整体执
                 行流程图如图     6  所示. 为了验证该系统在      DSP  领域的表现, 我们进一步采用        DSP  领域的真实应用     AlexNet [41] 对工
                 具链进行测评.

                                                       目标文件           可执行文件
                                    评测基准        编译器             链接器             模拟器
                                                 图 6 工具链整体执行流程图

                 6.2   变长  VLIW  的代码体积
                    由于本文设计了可变长的          VLIW  编码, 即编码中携带的信息可以在指令解码阶段用于分割各指令包, 因此指
                 令打包时不需要像定长        VLIW  一样插入额外的      NOP  指令, 减小了生成的二进制文件的体积. CoreMark          中各个函
                 数在变长编码和定长编码下的代码体积如图                 7  所示. 变长编码生成的二进制共包含           2 855  条指令, 代码体积为
                 11.15 KB. 定长  VLIW  编码生成的二进制中共包含        6 340  条指令, 代码体积为   24.77 KB. 可以看出, 与定长   VLIW
                 架构相比, 本文提出的基于        RV32  指令编码特性设计的可变长         VLIW  架构在保证兼容性的前提下, 将代码体积平
                 均减小了   54.97%.

                           5 4  变长 VLIW  定长 VLIW
                          占用空间 (KB)  3 2



                           0 1






                                   图 7 CoreMark  中各个函数在变长编码和定长编码下的代码体积

                 6.3   表调度的启发式规则优化
                    我们将混合调度与表调度及其各种变体, 即自顶向下表调度、自底向上表调度和自顶向下与自底向上相结
                 合的表调度进行了对比, 并探究了我们在第              4.2  节中提出的  3  个启发式规则的效果. 从图       8  可以看出, 混合调度与
                 自顶向下表调度相比提升了          4.02% (1.74→1.81), 与自底向上表调度相比提升了       4.62% (1.73→1.81), 与自顶向下和
                 自底向上相结合表调度相比提升了            4.02% (1.74→1.81). 图  8  给出了第  4.2  节中  3  个启发式规则的效果. 可以看出,
                 规则  1  的  LOAD/STORE  启发式能够提升      3.45% (1.74→1.80), 规则  2  的关键路径启发式能够提升         1.72%
                 (1.74→1.77), 规则  3  的出度启发式能够提升    0.57% (1.74→1.75). 规则  1  的  LOAD/STORE  启发式能够获得更为有
                 效的提升.

                          1.82
                          1.81                                                    1.80      1.81
                          1.80
                          1.79
                          1.78
                         IPC  1.77                                      1.77
                          1.76
                          1.75                                1.75
                          1.74   1.74                1.74
                          1.73             1.73
                          1.72
                                自顶向下     自底向上     向上向下结合      +出度     +关键路径 +LOAD/STORE   混合调度
                                            图 8 CoreMark  在各种调度算法下的       IPC
   30   31   32   33   34   35   36   37   38   39   40