期待已久的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适配清單是不是看着很眼熟?
N卡測試結果,來源:參考資料2
好了,辟謠結束,Resizable BAR不是新功能,可以提高性能。那麼問題來了:Resizable BAR為什麼能提高性能?這麼好,為什麼好多年不用?怎麼确定自己的主機闆是否支援Resizeable BAR功能呢?又如何開啟呢?
Resizable BAR是什麼?為什麼能提高性能?
在介紹PCI的系列文章中,我描述了PCI配置空間中的傳統PCI裝置空間。簡單來講,PCI裝置配置空間中從0x10到0x24,有6個寄存器:
每個寄存器4個位元組,叫做基位址寄存器(Base Address Register,BAR)。BAR用來讓每個PCI裝置在BAR中描述自己需要占用多少位址空間,PCI枚舉器通過所有裝置的這些資訊建構一張完整的關系圖,描述系統中資源的配置設定情況,然後在合理的将位址空間配置給每個PCI裝置。BAR可以認為是PCI/PCIe裝置内的記憶體和寄存器,在CPU位址空間中的映射視窗,了解這點十分關鍵。
傳統BAR的大小是固定的,PCI枚舉器通過寫入0xFFFFFFFFF到裡面,然後讀出來,mask掉最後的幾個特殊位,進而知道該視窗有多大。這個Size是裝置最小需要的,是固定寫死的,沒有任何商量的餘地。PCI枚舉器必須滿足,否則該裝置将不能正常工作。
Resizable BAR也是一種BAR,不過這種BAR并不是Fixed的,而是可以變大小的。它的位置不在傳統PCI配置空間中,而在PCIe Spec規定的擴充功能(Extend Cap)連結清單中,通過協定規定的方式,讓PCIe host可以根據實際位址空間配置設定情況動态設定一個裝置和CPU配置空間都可以接受的大小。
現在大家也許有點被繞迷糊了,我們通俗一點來講。BAR是PCI裝置在CPU位址空間的視窗,讓CPU和裝置可以通訊和傳遞資料。傳統BAR是最小視窗,不能讨價還價;而Resizable BAR最開始報告了一個最大的視窗,CPU可以根據情況,和裝置商量出來一個合理大小的視窗。
功能如此簡單,那麼為什麼它在PCIe Spec 3.0提出了一直沒人用呢?它怎麼能提高性能呢?我們知道,現在PCIe的顯示卡動辄顯存幾個G,衆多渲染需要頻繁通路顯存中的内容。而傳統顯存BAR為了相容起見,BAR size一般隻有256MB,并處于4GB位址空間之内。這會帶來性能問題,這個管窺顯存的視窗需要頻繁移動,來操作其他的顯存位置。很自然,大家會覺得,如果視窗開的大小和顯存一樣大就好了!正式這樣,Resizable BAR才誕生。
需要注意的是,這麼大的空間浪費放在4GB之内是不恰當的,BIOS必須開啟64Bit MMIO和Above 4G Decoding的配置設定才行,畢竟64bit的位址空間足夠大,可以放得下更多G的顯存映射。
如何開啟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顯示卡,到時候再為大家帶來具體的測評資料。