Page 132 - 《软件学报》2024年第6期
P. 132

2708                                                       软件学报  2024  年第  35  卷第  6  期


                 指令执行速度要比硬件直接支持慢很多, 甚至存在数量级上的差异                      [17] . 为了减少硬件之间的差异, 有大量研究提
                 出在目标平台硬件上直接支持翻译所需要的部件, 实现软硬协同的二进制翻译加速是近年来较为流行的设计方
                 法. 根据与处理器的耦合度不同, 软硬协同优化分为异构协同加速和处理器协同支持.

                 4.4.1    异构协同加速
                    异构协同加速通过引入异构加速部件来弥补处理器翻译或运行时开销大的不足. 基于                                FPGA、CGRA   和
                 GPU  等异构设备实现不同       ISA  应用程序二进制翻译协同加速的方法已被业界广泛使用. 协处理器与主处理器协
                 同工作, 减少了主处理器流水线中的空洞. 针对标志寄存器低效模拟问题, Yao                      等人  [144] 基于  FPGA  增加硬件寄存
                 器, 加速对  x86  状态标志位的模拟. 针对跨平台指令差异导致的代码质量差问题, Chai 等人                   [176] 利用  FPGA  进行灵
                 活的硬件指令动态可重构设计, 实现不同类型指令流的硬件协同支持. Wirsch                    等人  [177] 提出将二进制翻译过程中的
                 热路径代码映射到       CGRA  开展并行加速. 类似地, 文献       [178] 提出  CGRA  和  ARM NEON  混合使用的加速翻译模
                 型, 硬件协同支持指令级并行和数据级并行. 此外, GPU               强大的计算能力也为二进制翻译加速提供了硬件支撑.
                 Dong  等人  [73] 基于  GPU  进行软硬协同二进制翻译技术的尝试, 提出将无数据依赖的可并行代码派发至                    GPU  运行,
                 对于  GPU  上无法运行的代码再在       CPU  上利用二进制翻译执行.

                 4.4.2    处理器协同支持
                    异构协同加速的方法类似于一种即插即用的硬件加速, 其在灵活性上表现较好, 可以根据性能瓶颈点进行针
                 对性协同加速. 但是异构加速部件与            CPU  处理器之间的数据通信会产生可观的延迟开销, 导致翻译效果大打折
                 扣. 为了进一步提升硬件加速效果, 有研究提出在目标平台硬件上直接支持二进制翻译所需的翻译部件. 针对源平
                 台和目标平台体系结构差异大的问题, LoongArch             在原有龙芯指令系统基础上增加了              MIPS  不具备但   x86  和
                 ARM  具备的核心功能, 在指令功能、运行时环境、核心态功能等方面实现处理器的硬件扩展                            [17] . 测试  Linux 操作
                 系统启动时间, 结果表明基于软硬协同加速后龙芯二进制翻译器性能提升了                          21 倍, 翻译效率达到    79.8% [91] . 为了
                 高效保证内存一致性, Rosetta 2    [179] 在  ARM  硬件上支持了  x86  的强内存模型, 当翻译    x86  代码时会自动切换到强
                 内存模型, 而运行     ARM  程序时再切回到其原生内存模型, 硬件支持的内存模型有效降低了并发程序翻译时内存
                 模型变换带来的开销.
                    嵌入式和移动互联网的发展促进了不同类型市场的应用之间数据融合, 这种市场融合加速了                                RISC  和  CISC
                                           . 针对
                                      [58,59,145]
                                                     向
                 架构之间应用的转换与翻译        、Rosetta 2 、Tango                                                 [53]
                                                RISC
                                                           架构翻译时面临的状态标志位功能不对等问题, Harmonia
                                                       CISC
                 采用  MOVBE  硬件指令加速状态标志位计算. 文献            [24] 面向申威平台引入标志位计算、浮点运算、多媒体等指
                 令的硬件协同设计, 提升了从         x86  到申威平台指令翻译的代码质量.
                                                                 [4]
                    此外, 有研究利用硬件加速提升程序的并行度. Transmeta 利用               Crusoe 处理器的   VLIW  指令特性, 重组翻译
                 后的二进制代码以实现同步执行. Crusoe 增加了特殊的硬件功能来检测同一个地址的“读-写-读”冲突, 支持对访存
                 指令进行激进式的代码调度. 文献          [180] 引入硬件加速部件实现指令翻译和调度的充分加速. 文献                [66] 在文献  [180]
                 的基础上实现     RISC-V-to-VLIW, 增加双  VLIW  核心进一步提升翻译效率. 文献        [181] 在文献  [66] 的基础上增加访
                 存队列和掩码模块, 支持在        VLIW  中指令乱序执行.

                 4.5   小 结
                    本节分别从翻译开销优化、运行时优化、代码生成优化和软硬协同优化等角度分析了二进制翻译常见优化
                 方法. 总结发现, 翻译开销优化可以有效卸载翻译器自身在翻译和优化时所带来的性能开销, 是当前业界普遍采用
                 的优化手段. 如    ExaGear [12]     [5]     [37] 等均采用了相关优化; 运行时优化借助动态优化技术, 对于提升
                 动态翻译效率效果显著. 然而, 由于静态翻译在运行时信息获取和分支跳转计算等方面存在不足, 实施相关优化具
                 有局限性; 代码生成优化有效利用目标平台特性来提升翻译后代码生成质量, 改进了部分指令低效模拟的不足. 源
                 平台和目标平台体系结构上的差异是限制二进制翻译效率提升的根本原因, 无论采用何种软件优化手段, 基于软
                 件模拟的   CPU  指令执行相比硬件直接执行在翻译效率上依旧存在较大差距. 软硬协同的二进制翻译优化作为提
                 升二进制翻译效率的最有效手段, 被广泛关注. 不足的是, 软硬协同的优化方法需要修改处理器硬件, 在设计灵活
                 性方面存在较高的门槛.
   127   128   129   130   131   132   133   134   135   136   137