ReBarUEFI 是一个 UEFI DXE 驱动,可以把 Resizable BAR 能力注入到官方不支持的老主板固件里,让 PCIe 显卡的可寻址显存从固定大小扩展到接近实际显存容量。这个项目适合还在用较老平台、显卡本身支持 Resizable BAR、但主板 BIOS 没有开关的用户。想榨取显卡性能、又愿意动手改固件的开发者,可以按下面的步骤和风险评估判断是否值得尝试。
Resizable BAR 到底是什么
Resizable BAR 是 PCIe 规范里的一个能力。传统上,CPU 一次只能看到显卡的 256MB 显存窗口,每次传输数据都要分批。Resizable BAR 让 CPU 能直接访问显卡全部显存,减少数据搬运次数,提升游戏和图形渲染的帧率。Intel 官方文档提到,Resizable BAR 是 Arc 系列显卡发挥最佳性能的必要条件。AMD 和 NVIDIA 的新显卡同样从这个能力中受益。开启后 CPU 访问显存的效率更高,游戏帧率通常会有小幅提升。
为什么老主板需要 ReBarUEFI
很多老主板的 BIOS 没有提供 Resizable BAR 开关,即使硬件本身支持。ReBarUEFI 通过修改 UEFI 固件,把自定义的 PciHostBridgeResourceAllocationProtocol 函数插入到 PCI 枚举过程中。这个函数会检测显卡的 Resizable BAR 能力,并按照预设的 BAR 大小重新分配地址空间。项目给出的测试平台是 i5-3470 搭配 RX 580 8GB,使用 2GB BAR 大小时帧率提升了 12%。
操作前要准备什么
- 主板固件必须可以刷写修改版本,部分主板需要先用 UEFIPatch 移除 BAR 大小限制或修复 4G Decoding 问题。
- BIOS 设置中需要开启 4G Decoding,关闭 CSM。
- 如果不开启 4G Decoding,BAR 大小会被限制在 1GB 甚至 512MB。
- 需要一张支持 Resizable BAR 的显卡。NVIDIA Turing 架构显卡需要配合另一个项目 NvStrapsReBar。
- 强烈建议先用编程器备份原始固件,刷黑后可以恢复。
怎么刷入和设置
- 从项目 Release 页面下载 ReBarDxe 驱动和 ReBarState 配置工具,按项目 Wiki 的 Adding FFS module 指南把模块插入固件 DXE 卷。
- 用编程器或主板自带的刷写工具,把修改后的固件写入主板。
- 开机进入 BIOS,确认 4G Decoding 已开启,CSM 已关闭。
- 启动到操作系统后,运行 ReBarState 设置 BAR 大小。推荐从 32 开始,代表不限制大小;如果遇到问题再逐步调低。
- 重启后进入系统,用 GPU-Z 或 lspci 确认 Resizable BAR 是否已经生效(lspci 输出中能看到较大的 BAR 尺寸即代表开启成功)。
有哪些已知限制和风险
设置过大的 BAR 可能导致无法开机,遇到这种情况需要清 CMOS 甚至扣电池才能恢复。部分 Sandy Bridge 和 Ivy Bridge 平台的 MMIO 空间扩展需要配合 DSDT 修改。Linux 用户如果开启 4G Decoding 并使用 pci=realloc 内核参数,有机会在不修改 BIOS 的情况下自动启用 Resizable BAR。Windows 目前没有其他办法,必须修改 BIOS。部分 PCIe Gen2 平台之前被认为不支持,但有用户报告在 i5-2500k 上成功运行。
怎么判断值不值得折腾
- 如果你的显卡较新且平台是 2017 年以后的,先看官方 BIOS 更新里有没有 Resizable BAR 开关,有的话优先用官方支持。
- 如果你在用 2012 到 2016 年的老平台,显卡支持 Resizable BAR,且愿意承担刷黑风险,ReBarUEFI 是少数可行路径。
- 如果你的主板无法刷写修改固件,或者显卡本身不支持 Resizable BAR,这个项目帮不上忙。
常见问题
问 ReBarUEFI 会影响系统稳定性吗
答 设置合理 BAR 大小后,大多数用户报告稳定。但如果 BAR 超过主板 MMIO 空间上限,会无法启动,需要清 CMOS。
问 所有显卡都能用吗
答 不是。显卡必须支持 Resizable BAR。NVIDIA 20 系和 16 系显卡需要用 NvStrapsReBar 项目配合。
问 能提升多少性能
答 项目测试平台在 2GB BAR 大小下帧率提升 12%。实际提升幅度取决于游戏和显卡,不能一概而论。
问 刷失败了怎么办
答 如果刷写后无法开机,可以尝试用编程器刷回备份的原始固件。没有备份的情况下,主板可能需要返修。