二进制翻译技术关键问题

二进制翻译的一些相关名词解释-CSDN博客

存储单元模拟

翻译信息的存放

二进制翻译完成指令的基本翻译后,还要把翻译完的信息(源机器平台中寄存器和其状态)部署在目标机器上(实现镜像),等价模拟源平台的寄存器和内存等存储单元

镜像部署的解决方案

(1)开辟一块内存空间做镜像映射

开辟内存空间的方法屏蔽了寄存器使用差异, 实现简单

缺点:会引发大量的访存代价

(2)利用硬件支持寄存器映射

优点:效率较高, 

缺点:但不同处理器平台中寄存器数量和使用约定各异, 很难实现寄存器的全部映射. 尤其是源平台寄存器数量多于目标平台时, 必然有部分源机器平台中的寄存器要被映射到内存单元中, 涉及寄存器映射收益和映射代价选择问题

 寄存器的映射收益和映射代价选择问题(寄存器的优化)

其他寄存器优化方法

例子:x86_64平台有16个通用寄存器,riscv64平台有32个通用寄存器。如果是riscv64到x86_64的二进制翻译,即源平台是riscv64、目标平台是x86_64,那么目标平台的通用寄存器数量就少了16个,没法一对一映射

 (1) 针对源平台寄存器数量多于目标平台的情况, 提出将目标平台向量寄存器的低位源平台寄存器进行映射, 缓解目标平台寄存器数量不足的问题

PS:如果不使用映射技术,向量寄存器的低位主要用于存放直接参与计算的核心数据、临时结果、指针、状态信息以及一些常量,总之寄存器的低位非常宝贵,放的都是常用的东西,以便减少上下文切换和数据传输,节省时间

映射:指将一个平台的寄存器使用方式调整为适应另一个平台的一种策略

该技术:将源平台的寄存器内容映射到目标平台的向量寄存器低位部分

即,直接把源平台的寄存器放到目标平台的核心位置,减少上下文切换和数据传输

(2)根据不同算法确定寄存器优先级, 以保证寄存器资源的利用率

(3)对基本块内中间指令的寄存器需求次数进行排序, 优先为排序靠前的变量分配寄存器

这样可以高寄存器的利用率,减少内存访问的频率

(4)对代码映射区域进行访存频率排序, 提出优先对引发高频率访存的代码区域执行寄存器映射, 保证了寄存器映射资源的利用率最大化

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值