跳到正文
中文
FikirPilot 内容

模拟内存访问:究竟有多难?

更新于: 2026年9月19日 · 2 分钟阅读

发布于: · 消息抵达: · 处理时长: 55 分钟

模拟内存访问:究竟有多难?
微处理器的特写

据 FEX-Emu 开发者介绍,当缓存和多个处理器参与其中时,模拟计算机内存的工作模型比想象中要困难得多。x86 的 Total Store Ordering 模型为内存操作的可见性提供了强有力的保障,而 ARM 较弱的模型则允许通过重新排序来提升性能。尽管模拟器可以通过 acquire/release 操作进行弥补,但成本也会随之上升;LRCPC 扩展和 Apple Silicon 上兼容 x86 的 TSO 模式则能够减轻这一负担。

未对齐访问和原子操作会进一步增加问题。FEX 可以捕获对齐错误,并在转换后的代码中加入屏障;而 split-lock 操作则可能需要调用内核和信号处理程序,速度比正常情况慢数百倍甚至数千倍。Qualcomm 的 Oryon 内核和 Valve 对 Linux 的优化能够缓解其中一些问题。

对于写合并内存向 GPU 写入的场景,ARM 缺少对应的实现;在最糟糕的情况下,带宽会下降 800×,使游戏帧率降至 1 FPS 以下。UMA 系统能够取得更好的结果。模拟的关键并不只是转换指令,而是重新实现架构层面的假设。

为何重要

这种技术差异使得在基于 ARM 的硬件上运行 x86 软件的模拟器难以同时维持兼容性和性能。由于问题并不局限于处理器指令的转换,多核使用、原子操作以及访问 GPU 内存等场景在不同硬件上可能产生不同结果。因此,最终效果不仅取决于所使用的处理器和内存架构,也取决于操作系统与模拟器采用了哪些优化;Apple Silicon、Oryon、Valve 的优化以及 UMA 设计表明,这种差异是可以得到缓解的。尚未明确的问题是,这些改进在哪些工作负载中能够满足需求,以及为实现兼容性所需的额外成本在多大程度上能够持续。

来源: Hackaday