是否可以將視訊記憶體提供給CPU使用?

時間 2021-05-11 20:10:34

1樓:

ps4就是這個方案

結論,這個方案不能用的原因並不是技術上的,完全是市場慣性問題,要將整個世界的馮諾依曼架構計算機換成共享視訊記憶體記憶體是一件極其龐大費事費錢的事,沒人願意幹。家用機這種一換代就換架構的沒有這麼大的負擔才能實施這樣的行為。

2樓:範沅

延遲高,視訊記憶體本身延遲就比記憶體高,而且是從pcie傳過去的,所以零碎檔案的讀寫根本沒優勢,而主流的視訊記憶體就8G,大檔案根本不現實,不如直接加記憶體。

我玄學調參的時候,往視訊記憶體裡塞東西實際延遲很高,這時候不就是當儲存用嗎,只不過用GPU跑計算。

3樓:Arthur He

記憶體可以給顯示卡用,為什麼不能把視訊記憶體給cpu用?

這個問題可以轉化擴充套件一下:PCIe 卡上的儲存是否可以另做它用?答案是可以的,你的問題只是其中乙個沒有太多 value-add 的方案,太侷限了。

簡單發散:是否可以把 NVMe 當成記憶體用呢?答案是毫無疑問,HW 和 FW 都不需要做改動,現在所有的OS都支援這種玩法,也就是所謂的虛擬記憶體。

繼續發散:是否可以把記憶體放在PCIe卡上?答案也是可以的,PCIe 卡要支援這個功能並需要 FW 進行改動;這種設計會更有價值,而且有對應的產品已經上市:

西數的 Ultrastar DC ME200 Memory Extension Drive。

產品介紹:

上述方案為什麼可以實現?

CPU core 需要從乙個位址中抓取資料,core 並不需要知道這個位址屬於誰,只需要把訪問請求發出去就可以,CPU 內部會有專門的路由邏輯去解析位址,並把這個請求送往位址對應的裝置,然後裝置響應請求帶回資料給請求的core。

由於 CPU 不需要知道這個位址屬於誰,所以這個位址可以是乙個落在 DIMM 中的位址,也可以是落在乙個 PCIe 裝置的位址,對core 來說他們的區別僅僅只有拿到資料的快慢之分(DIMM 比 PCIe快),而路由邏輯僅僅是起到把請求發給指定的裝置;從上面兩點看,CPU HW 不需要做變動就可以實現我們的目的,但我們需要對 PCIe 卡和系統的 UEFI/BIOS 做一些定製:

a. PCIe 卡需要申請足夠的 MMIO 空間(MMIO空間是一段記憶體位址,這個位址落在了PCIe 卡上,而不是DIMM上),並且PCIe卡能夠支援到這麼大的MMIO 空間 (空間的大小直接影響了PCIe 卡內部要實現的位址線的數量;和 CPU一樣,卡內部的位址線並不是64,卡的位址匯流排一般來說都是40多,更多的位址匯流排可以支援更高的定址,但會帶來成本的增加),而且這段空間要用來做 MMIO 不做其他用途。

b. 一般來說 MMIO 空間在被 UEFI/BIOS 匯報給OS 的時候,屬性標註的是 MMIO,OS 並不會把 MMIO空間做memory使用,應用申請記憶體的時候OS會從屬性為 memory 的位址空間分配,所以針對這張卡的 MMIO 屬性要在report給 OS之前,被UEFI/BIOS 改成 memory 屬性。

經過上述兩步之後OS下看到的記憶體大小就是 PCIe 卡 + 所有 DIMM 容量的大小了。但這會有其它的問題:同樣的記憶體空間,訪問DIMM要遠快於PCIe 卡,OS如果不知道他們的區別,那麼系統的效能就會忽高忽低;所以最後還是需要 OS 做改動,讓OS 可以知道有段記憶體空間落在 PCIe 卡上,有比較大的訪問延遲,同時可以針對性這個 PCIe 卡的記憶體位址做一些特殊的cache 設計,優化其效能。

4樓:XZiar

記憶體延遲幾十ns,光視訊記憶體延遲都比這個高,更別說走pcie匯流排的延遲了。

事實上用硬碟做頁面檔案時,也只是把頁面檔案當作後備儲存,即把不頻繁使用的頁面放到硬碟上,畢竟硬碟訪問的延遲也很高。

從這一角度說,拿視訊記憶體做頁面檔案也沒什麼不可的。

甚至於你可以繞開OS,自己寫程式時利用CUDA、OpenCL等runtime去分配視訊記憶體空間作為一部分記憶體使用。只不過驅動沒有針對這種情況設計,因此頻繁讀取小資料的效率很低(需要頻繁同步,還可能會占用記憶體來快取你要寫入/讀取的資料),更適合批量讀取。

至於為什麼沒有發展這項技術……視訊記憶體也是dram,和記憶體一樣貴,有買顯示卡的錢不如去買記憶體啊……相比之下機械硬碟和SSD、乃至傲騰都更便宜,才有了作為後備儲存的意義。

另外還有很多機器是沒有獨顯的,畢竟intel才是最大份額的顯示卡廠商。

5樓:BetaCat

在記憶體共用模型(多見於筆記本和核心顯示卡的電腦中)中,CPU和GPU的記憶體是直接共享的,所以CPU和GPU的資料都存在同一塊記憶體上的,因而沒有這個問題;一下均假設題主說的是GPU和CPU分開的情況,並且通過PCI-E傳輸資料

首先,記憶體也沒法給GPU用!

其次,硬要說什麼不能共用,其實也不是完全不行,兩邊來回倒記憶體資料理論上可行,但是顯示卡和其他裝置是要通過PCI-E通道來走的,相比於記憶體用的通道還是太慢了

如果要說是和硬碟相比,視訊記憶體確實還是有優勢的;但面臨幾個問題:

目前效能瓶頸多出現在記憶體->CPU快取這一部分上,而硬碟->記憶體的問題不是那麼明顯;其實大部分的有關資料讀寫的效能損失都來自於CPU的快取記憶體沒有命中,而要從記憶體上讀取資料(等待從記憶體上的資料傳輸到CPU一般需要數十上百個指令週期,因而一般起碼有10-30%的時間CPU是在空轉的,以至於Intel出了超執行緒技術來緩解);因為記憶體和硬碟的容量都大,所以一般出現硬碟->記憶體的損失不明顯(快取空間大),而且作業系統大多可以很好的處理記憶體換頁的問題,被換到硬碟上的大多都是一些長期沒有使用的

現在NVME的高速SSD的速度已經直逼記憶體了,與其為了視訊記憶體那麼一點的容量做大規模更改沒有很大的意義

PCI-E的頻寬是乙個很珍貴的資源,如果將視訊記憶體作為記憶體來用的話,很容易把頻寬全沾滿,導致其他外設無法正常工作

視訊記憶體普遍很小,一般記憶體8-16GB的話,視訊記憶體也就2-4GB

視訊記憶體本身也是一種很珍貴的資源,這樣無異於拆東牆補西牆

不同廠商,不同架構的顯示卡API以及驅動不同,每台電腦的配置也都不同,程式很難做到都適配

所有供外設(包括顯示卡)讀寫的記憶體其實都要通過DMA,都是pinned-page,屬於記憶體中不允許更換位置的,這樣子其實很虧,因為長期未用的memory page會被系統換出,或為了提高快取命中率或對齊範圍而進行換頁操作,然而一旦被pinned換頁操作就不能執行了;另外,GPU與CPU的記憶體進行資料傳輸的時候會要同步(以保證不會互相擾亂資料),這樣會降低CPU與GPU雙方的效能(而且很明顯,一般有約30%的效能損失是由於記憶體拷貝造成的,現在一般通過記憶體拷貝引擎來隱藏這些損失)

6樓:小鵬

顯示卡走的是pci通道和記憶體的速度差距還是很大的。

但是在深度學習訓練時很多都是講視訊記憶體當記憶體用的,因為此時計算裝置是顯示卡晶元,視訊記憶體比記憶體速度更快。並且視訊記憶體顆粒更貴,頻率更高,有很好的加速作用。僅限9系以後的N卡(感謝cuda 感謝cudnn)

7樓:

至少n卡用cuda程式設計的時候可以輕鬆通過cudaMemcpy來利用視訊記憶體存資料,感覺沒什麼問題,不過沒有實踐過記憶體比視訊記憶體小的時候具體會不會有問題。

韓春雨提供給addgene的protocol有人重複出來了嗎?最近相關資訊很少,怎麼都沉默了,真相呢?

最近相關訊息其實不少,8月16日之後至少有五例新的重複結果流出,全部是無法重複,其中至少有一例是按照新protocol做的。1.蔡宇伽博士 按照更新後的步驟重新做過一遍,仍然無法看到基因組水平的編輯 科學網 NgAgo你做出來了嗎 2.宮岡佑一郎博士 https 3.wormbase論壇Thomas...

你有什麼駕駛經驗可以提供給新手司機?

求知 不用踩油門的情況下,其他所有時間都要把腳放到剎車踏板位置,防止出現緊急情況慌亂之中踩到油門踏板造成意外,另外制動時間也會快很多!特別是新手,一定要養這個習慣! backinreallife 08年至今,30萬公里多,大部分在江蘇平原,其他小部分在貴州。1 假設危險原則。意思就是你看不到的地方,...

為什麼提供給香港的產品需要特供?

Abby Chau 我以前母親也問過和你同樣的問題。說出口日本美國的挑最好的來出口,自己卻不用。我以前也被民族主義了。但答案很簡單,同種類的高價貨物相較低價貨物,運輸和儲存成本佔比較低啊。 超人越神 以前在乙個供港蔬菜的市場做過,我就說一點,當時普遍還是1 2元菜價的時候,這些供港的蔬菜均價是5 8...