调整 Arm 上的仿真设置

Arm 电脑上的 Windows 支持使用 Prism 在模拟下运行 x86 和 x64 应用程序。 Prism 包含许多优化功能,以确保仿真快速且性能良好,以便获得良好的用户体验。

默认情况下,Prism 在性能优化与应用兼容性之间达到最佳平衡。 在 Prism 下运行应用兼容性问题的罕见情况下,Windows 提供了可选的仿真设置,可用于调整 Prism 用于应用的行为和优化。 更改这些设置可能会增加应用程序的兼容性,通常以性能为代价。

警告

更改仿真设置可能会导致应用程序意外崩溃或根本不启动。

打开仿真设置

可以通过右键单击应用的可执行文件并选择 “属性”来访问仿真设置。

在 Arm 上使用 Windows 时, “兼容性 ”选项卡包括标题为 Arm 上的 Windows 的部分。 选择 “更改仿真设置” 以打开 Arm 仿真设置窗口。

更改仿真设置屏幕截图

还原以前的模拟器行为

Arm 上的 Windows 会不断改进和发展。 如果应用程序遇到问题,但在 Arm 上的早期版本的 Windows 上工作,则重写 Prism 的行为以匹配 Arm 上早期版本的 Windows 可能会解决问题。

隐藏 x64 仿真功能

选择此选项时,x86 应用程序会看到 x64 代码无法在此设备上运行。 该选项模拟了在 ARM 上的 Windows 10 中仿真器的应用程序支持。

隐藏较新的模拟 CPU 功能

在 Windows 11 24H2 及更新版本中,Prism 支持 Arm 上早期版本的 Windows 不支持的其他 CPU 功能。 这些功能包括 AVX 和 AVX2,以及 BMI、FMA、F16C 和其他相关的 x86 指令集扩展。

为应用选择此选项时,模拟器将返回到以前版本的 Prism 中存在的 CPU 功能支持级别。

对于 32 位 x86 应用,此选项将替换为一个来 显示较新的模拟 CPU 功能。 默认情况下,Prism 不会向 32 位 x86 应用公开前面提到的 CPU 功能。 选择此选项时,32 位 x86 应用可以检测并使用更新后的 CPU 功能集。

仿真设置

Arm 仿真设置窗口提供了两种方法来修改仿真设置。 可以选择预定义的仿真设置组,或选择 “使用高级设置 ”选项来启用选取和选择单个设置。

四个预定义的仿真设置组是:

  • 违约
  • Safe
  • 严格
  • 非常严格

从“默认”移动到“安全”到“严格”设置额外的仿真设置,以降低性能,以增加兼容性。

更改仿真设置屏幕截图 2

如果选择 “使用高级设置”,则可以更改应用程序使用多个 CPU 核心的方式,在快速、严格的多核作、非常严格或强制单核作之间进行选择。

多核心设置更改 Prism 在模拟期间如何使用内存屏障在应用中的核心之间同步内存访问。 快速是默认模式,这是大多数应用的最佳平衡。 严格且非常严格的选项将增加障碍数,降低应用速度,但降低应用错误的风险。 单核选项会消除所有屏障,但强制所有应用线程在单个核心上运行,以避免需要同步。

多核设置屏幕截图

此表中介绍了剩余的仿真设置。

仿真设置 结果
禁用应用程序缓存 作系统缓存已编译的代码块,以减少后续执行的仿真开销。 此设置要求模拟器在运行时重新编译所有应用代码。
禁用混合执行模式(仅限 x86 应用) 编译的混合可移植可执行文件(CHPE)二进制文件是 x86 兼容的二进制文件,其中包括本机 Arm64 代码以提高性能,但可能与某些应用不兼容。 此设置禁用使用这些混合二进制文件,而支持纯 x86 二进制文件。
其他轻型仿真保护 此设置会导致 Prism 忽略二进制文件中任何 可变元数据 的存在。
严格的自我修改代码支持 启用此设置以确保仿真中正确支持任何自我修改代码。 默认模拟器行为涵盖了最常见的自我修改代码方案。 选择此选项可显著降低执行过程中自我修改代码的性能。
禁用 RWX 页面性能优化 此设置禁用优化,可提高可读、可写和可执行(RWX)页面上代码的性能,但可能与某些应用不兼容。
禁用浮点优化 x87 是一个 x86 指令集扩展,主要用于某些较旧的 x86 软件来执行浮点算术,它可以使用更精确的 80 位浮点格式,而大多数使用 x87 的 sofware 不需要这种格式。 选择此选项将使 Prism 使用完整的 80 位精度,而不是 64 位近似值,但代价是性能。