期待已久的Intel DG2独立显卡Arc终于面世!中国全球首发的自豪感,和京东3999的感人价格,让众多等等党心情复杂,到底要不要尝鲜呢?目前,市面靠谱的评测不多,但谣言不少,有些谣言发端于Intel最新的ARC使用快速导引 。因为导引要求主板需要开启Resizable BAR功能,并且只列出了几种Intel CPU:
一知半解者将这个需求视为Intel独有技术,是为了排除竞争者,有些网文还将之称作“Intel最后的坚持”云云。实际上Resizable BAR技术在十几年前,PCIe 3.0后就已经进入PCIe标准了(2022年现在是PCIe 5.0,PCIe 6.0正在撰写),而Smart Access Memory更是AMD的对应术语。
所谓造谣一张嘴,辟谣跑断腿。实际上,Intel显卡并不是第一个要求Resizable BAR的显卡。N卡RTX30早就宣布Resizable BAR功能可以提高性能 ,某些游戏性能可以提高10%!无独有偶,N卡官网提出的CPU适配列表是不是看着很眼熟?
好了,辟谣结束,Resizable BAR不是新功能,可以提高性能。那么问题来了:Resizable BAR为什么能提高性能?这么好,为什么好多年不用?怎么确定自己的主板是否支持Resizeable BAR功能呢?又如何开启呢?
Resizable BAR是什么?为什么能提高性能?
在介绍PCI的系列文章中,我描述了PCI配置空间中的传统PCI设备空间。简单来讲,PCI设备配置空间中从0x10到0x24,有6个寄存器:
传统BAR的大小是固定的,PCI枚举器通过写入0xFFFFFFFFF到里面,然后读出来,mask掉最后的几个特殊位,从而知道该窗口有多大。这个Size是设备最小需要的,是固定写死的,没有任何商量的余地。PCI枚举器必须满足,否则该设备将不能正常工作。
如何开启Resizable BAR?
想必读到这里,大家已经了解Resizable BAR的运行机理了吧。但是因为兼容性的问题,Resizable BAR默认都是关闭的。如何开启呢?
作为一个UEFI和BIOS专栏,大家应该已经猜出来我的答案了。对的,需要BIOS来开启。首先,对于BIOS程序员来讲,UEFI EDKII基础代码Tiano已经支持Resizable BAR,需要将PcdPcieResizableBarSupport设置为TRUE,并根据平台设置好相关Policy。
对一般用户来讲,Intel 10代CPU以后的主板很多都已经支持Resizable BAR功能,但不少和Above 4G MMIO Decode的选项有联动关系,需要先开启Above 4G MMIO Decode,然后Resizable BAR选择才可以显示,并需要设置为开启或者Auto。
结语
Resizable BAR介绍完毕,另外,Smart Access Memory的部分类似我这里就不再赘述了,Arc对它的要求描述似乎暗示了在AMD系列主板也能够支持。过一阵似乎我能得到一张Intel Arc显卡,到时候再为大家带来具体的测评数据。