前言
ResizebleBars(Resizable Base-Address-Register,可变大小基址寄存器),AMD 平台则称为“Smart Access Memory(SAM)”,该特性于 2008 年由 PCIe 3.0 规范引入,但是历史上的很长时间这个功能都被忽略了。直到 AMD 发布 5000 系锐龙 + RX 6000 系显卡搭配 PCIe 4.0 时,在发布会上作为一个亮点进行了讲解,才逐渐回到玩家关注视野。
ResizebleBars/SAM 是什么?
在以往运行大型 3D 游戏或其它大型 3D 应用时,处理器无法一次性访问显卡所有的显存,长期以来这个值的上限一直是 256MB,随着科技的发展,这个限制慢慢的开始变得效率低下,超出 256MB 大小的的数据需要从内存依次加载到显存,再由显卡进行处理,如此往复,再加上 PCIe 带宽和各硬件之间的通信延迟,造成了一定的性能损耗。
ResizebleBars/SAM 即是为了解决这个问题而生,突破 256MB 的限制,处理器要访问和交换的数据可以直接存储到显存中,显卡也会缩短等待数据的时间,提升效率。在开启此功能的情况下,理论上处理器可以一次访问到全部显存,但在实际应用中,由于显卡自身对显存始终拥有优先使用权的关系,处理器并不能访问到全部显存。
ResizeBars/SAM 对黑苹果的意义?
和 Windows/Linux 不同,macOS 并不完全支持此功能,其最大限制值是 1GB,macOS 平台在大型 3D 游戏方面也没有 Windows 那么丰富多彩,但由于之前 OpenCore 等引导工具无法处理 ResizebleBars/SAM 的兼容性问题,黑苹果在安装 macOS 时,一般都推荐在 BIOS 中关闭 ResizebleBars/SAM 功能,否则可能遭遇黑屏问题。就目前来看,OpenCore 0.7.5 的这个新特性至少能让你在 BIOS 中开启 ResizebleBars/SAM,从而在 Windows 中正常获得该功能的使用体验,同时不影响 macOS 启动和运行。
「注意」
- 从现有评测上来看,ResizebleBars/SAM 的性能提升较为有限,在 AMD 平台比较明显,如果是英特尔平台,就不是很明显,而且还需要游戏/软件本身支持该功能,目前在部分游戏/软件中甚至是负优化,具体评测可参考哔哩哔哩 @极客湾 或其它媒体的评测;
- 对于黑苹果来说,ResizebleBars/SAM 的应用范围目前仅限于 RX6000 系列显卡,并且需要主板 BIOS 支持,英特尔平台需要主板中拥有 Re-size Bar Support 选项,AMD 平台需要有 Smart Access Memory/SAM 选项;NVIDIA 的显卡目前仅 RTX30 系支持,2021 年 3-4 月以前生产的 RTX30 系显卡可能还需要更新 VBIOS;
- 要开启 ResizebleBars/SAM 必须使用 UEFI 模式引导系统;
OpenCore 0.7.5 新增的 Quirks
OpenCore 0.7.5 正式版新增了两个 Quirks,分别是 ResizeAppleGpuBars 和 ResizeGpuBars,前者位于 Booter → Quirks,后者位于 UEFI → Quirks,下面讲讲这两个选项的作用和区别。
简单来说,ResizeAppleGpuBars 只针对 macOS 生效,而 ResizeGpuBars 则影响所有通过 OpenCore 引导的操作系统,而较新版本的 Windows 和 Linux 自己可以处理 ResizebleBars 特性,所以我们的思路就是调整前者,关闭后者。
这两个选项接受整数值,如下:
- -1:关闭 Quirks
- 0:对应 1 MB
- 1:对应 2 MB
- 2:对应 4 MB
- 3:对应 8 MB
- 4:对应 16 MB
- 5:对应 32 MB
- 6:对应 64 MB
- 7:对应 128 MB
- 8:对应 256 MB
- 9:对应 512 MB
- 10:对应 1 GB
- 11:对应 2 GB
- 12:对应 4 GB
- 13:对应 8 GB
- 14:对应 6 GB
- 15:对应 32 GB
- 16:对应 64 Gb
- 17:对应 128 GB
- 18:对应 256 GB
- 19:对应 512 GB。
对应值计算其实很简单,就是 2 的 n 次方,例如:2^19/1024 = 512,2^10/1024 = 1。「注意」这个 Quirks 不会突破 macOS 最大只能支持 1GB 的限制。
OpenCore 更新到 0.7.6 时,明确限定了值只能是 0 或 -1
对于 RX6000 系显卡,ResizeAppleGpuBars 建议值如下:
- -1:关闭
- 0:1MB(保险值)
- 8:256MB(传统值)
- 10:1GB(macOS 支持最大值)
如何选择?如果你有 RX6000 系显卡,可优先尝试 10,这么设置的目的是尝试使用 macOS 最大值看看能不能一定程度提升性能;如果遇到休眠问题(表现类似睡了即醒),则修改为 8;如果问题依旧,可改成 0 ,这也是 OpenCore 团队的推荐值,即 1MB,设置为 1MB 的意义在于保留 BIOS 中对应选项开启,但不影响 macOS 启动和运行;如果运行还有问题,改为 -1 关闭该功能。
ResizeGpuBars 直接设置为 -1 即可。没有 RX6000 系显卡的同学,建议两个都设置为 -1。
OpenCore 设置
首先将 OpenCore 升级到 0.7.5 正式版,如何升级可参考「黑苹果升级 OpenCore/ 引导工具」一文,这里不赘述。
OpenCore 配置工具可以使用 OpenCore Configurator / OCAuxiliaryTools / ProperTree / PlistEdit Pro / Visual Studio Code 等等,选择你自己习惯用的就行,这里演示其中几种。
OpenCore Configurator
「注意」修改 config 前,务必进行备份,以免失败后无法进入系统。
截止本文发布,OCC 并未发布支持 0.7.5 正式版的配置工具版本,不过此时的最新版本支持 0.7.5 开发版,已经拥有对应的键值设置,只需在屏幕左上角菜单 OpenCore Configurator → 偏好设置 中进行切换:
然后分别修改 Boot → Quirks 和 UEFI → Quirks 中对应的设置:
「注意」ResizeAppleGpuBars 按照上一章节说明进行调整,ResizeGpuBars 设置为 -1 即可。
OCAuxiliaryTools
「注意」修改 config 前,务必进行备份,以免失败后无法进入系统。
OCAT 更新比较频繁,目前已经有针对 0.7.5 正式版的配置器版本。分别修改 Boot → Quirks 和 UEFI → Quirks 中对应的设置:
「注意」ResizeAppleGpuBars 按照上一章节说明进行调整,ResizeGpuBars 设置为 -1 即可。
PlistEdit Pro
「注意」修改 config 前,务必进行备份,以免失败后无法进入系统。
笔者发现在升级到 macOS 12.0.1 后,原本在 Big Sur 还可使用的 ProperTree 又挂了,不过同为 Plist 编辑工具,使用 PlistEdit Pro 体验和 ProperTree 是差不太多的。分别修改 Boot → Quirks 和 UEFI → Quirks 中对应的设置:
「注意」ResizeAppleGpuBars 按照上一章节说明进行调整,ResizeGpuBars 设置为 -1 即可。
BIOS 设置
设置完 OpenCore 之后就可以重启进入 BIOS 开启对应设置了。由于各厂家主板设置和名称并不相同,这里无法一一叙述,以微星为例,该选项位于 Settings → Advanced → PCIe/PCI Sub-system Settings
如果找不到,注意看 BIOS 界面信息,较新的主板一般都有搜索功能,可直接搜索选项名称。开启后保存退出 BIOS 即可。
效果实测
老实说,笔者前后折腾了整一天,更换了很多值,在 Windows 测试了 3DMARK 和新版鲁大师,在 macOS 测试了 Geekbench,都没有感觉到明显的区别。只有分别设置为 0 和 10 的时候看到了较为明显的区别,一算最大差异比例,大约 13.7%,而多次测试的平均值大概在 5%-8% 左右浮动,不过光是 Geekbench 的 Metal 测试并不能让显卡满载,而 Geekbench 的测试结果也一向比较薛定谔😂。
如果按照 AMD 发布会时的说法,提升应该在 2% ~ 13% 的范围。不过注意看小字,AMD 的结果是 3A 平台(处理器+显卡+主板全部 AMD)再加“Rage Mode”(狂暴模式)测得的
评论(0)