是否有CPU做推测性执行来虚拟化内存位置?

在伪组装中,考虑昂贵的计算后经典的寄存器重用:

r2 = cos(r1)
*(r3) = r2
r2 = r5 + r6
*(r4) = r2

为了能够完全使用算术单元,执行单元可能会这样做:

r2 = cos(r1)
*(r3) = r2

并列:

r2bis = r5 + r6
*(r4) = r2bis

其中,r2bis是虚拟化(或重命名)的r2寄存器。

现在想象一下,我们在一个寄存器不足的CPU中工作(或者有很多,但已经被使用了),然后将数据放在某个临时堆栈中:

*(sp+C) = cos(r1)
*(r3) = *(sp+C)
*(sp+C) = r5 + r6
*(r4) = *(sp+C)

是否存在执行单元虚拟化地址已知的内存位置(已经可以计算出(sp + C))以允许相同的两个执行并行进行的情况?

这种情况可能看起来很愚蠢,因为编译器可能会被要求在不受限制的堆栈空间(与受限制的寄存器空间不同)上寻找另一个位置。但是其他情况可能并不那么愚蠢,因为虚拟化内存可能允许条件分支的推测执行必须将短期数据存储在内存中。这对于没有简单方法将对象字段放入寄存器的语言(尤其是Java)(除了最简单的情况)而言尤其重要:您必须排除“引用”(指针)转义符以避免产生new动态分配并将Java类实例转换为C ++类自动实例(可以是堆栈分配的,也可以是寄存器的)。 (然后,即使C ++在看似简单的简单平面类的简单使用中,也很难没有真正的this指针。)

love14521 回答:是否有CPU做推测性执行来虚拟化内存位置?

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/3134054.html

大家都在问