为什么要重命名寄存器,何时可以增加体系结构中的寄存器数量?

问题描述 投票:1回答:2

在处理器中,为什么我们不能简单地增加寄存器的数量而不是拥有巨大的重排序缓冲区并映射寄存器以解决名称依赖性?

rename cpu-architecture cpu-registers
2个回答
0
投票
因为在编译时进行静态调度很困难(软件流水线),并且对于诸如缓存未命中之类的可变时间不灵活。

此外,指令编码注意事项。例如,如果我们有那么多架构寄存器,Haswell的192个条目的整数寄存器文件将需要每个操作数约8位进行编码。与实际x86机器代码的3或4相比。


0
投票
很多原因。

  • 首先,我们通常在设计微体系结构以执行现有体系结构的程序。添加寄存器将改变体系结构。最好的情况是,现有的二进制文件不会从新的寄存器中受益,最糟糕的是,如果没有某种JIT编译,它们将根本无法运行。
  • 存在编码问题。添加新的寄存器意味着增加专用于编码寄存器的位数,这可能会增加指令大小,同时影响缓存和其他地方。
  • 存在可见状态大小的问题。上下文交换将必须保存所有可见寄存器。需要更多时间。占据更多的位置(因此对缓存产生影响,因此又有更多时间)。
  • 效果是可以在无法进行静态重命名和寄存器分配或至少无法进行静态重命名的地方应用动态重命名;并接受更多指令,从而增加缓存压力。

总之,对于整数/通用情况,通常在16或32个寄存器处考虑一个最佳位置。对于浮点和矢量寄存器,有一些参数可以考虑使用更多的寄存器(ISTR表示富士通一次使用128或256个浮点寄存器作为自己的扩展SPARC)。

© www.soinside.com 2019 - 2024. All rights reserved.