蘋果的統一記憶體和整合顯示卡與CPU共用記憶體有什麼區別?

時間 2021-05-06 04:46:50

1樓:船長不划船

看那些回答感覺英特爾,amd等廠商應該趕緊請知乎的大佬們去做技術指導,推進人類進步,這種技術在知乎就是跟小孩過家家一樣的簡單。

2樓:

很多引經據典的詳細回答了。都挺不錯的。

蘋果的統一記憶體細節目前還不得而知。一般意義上的UMA與記憶體共享的根本區別,在於記憶體的所有權,以及其服務的方式。

就好像有一套三室一廳,你和別人合租,一人乙個房間,共用客廳。每人有對自己房間的所有權,共用部分雖然合用,但是很多地方需要避嫌,一人在用另外一人就需要躲遠遠的,這叫記憶體共用。

你一家人入住,可能依然是一人一房間,但是每個人都是享有整個房屋的所有權。所有的地方都在某種程度上都屬於共用,乙個洗澡另乙個可以在邊上拉屎還能聊天,這叫UMA。

3樓:Morris.Zhang

僅做推測,M1所帶的最高16GB的高速統一記憶體/UMA(官方口徑是:「這種合而為一的高頻寬、低延遲mem pool,讓各種應用能在CPU、GPU和神經網路引擎間高效地共享資料,從而提高任務處理速度)」。 那麼我們算一算SoC上的模組建的搬數頻寬就很了不起。

並可以猜測M1的mem底層結構不是傳統構型的,Mem fabric(mem over fabric) 也許是最可期待的亮點;

可能體現在:各種xPU通過高速fabric訪問mem pool,那就是多通道了,加上不必與CPU同步時序,那麼整合顯核的傳統瓶頸也就因此弱化甚至不存在了;以及在此基礎上做到了mem pool一體化,推想未來可能有機會演進SCM結構咯;

展開點說,我們知道PC上的視訊記憶體共享是按位址劃分,即使雙通道,GPU還是受制於匯流排訪問速度,還要跟CPU分時序…,倘若用高速fabric,則xPU之間的工作頻率甚至不需要同步了(SerDes本身不受匯流排頻率驅動也不傳送時鐘訊號)。當然,有關fabric細節是不會披露的設計秘密,特別是底層PHY,其中還包括各種xPU訪問的topology/ 時序/ 衝突解決機制等等;

目前,只能猜測它的多通道topology,那麼多xPU能夠非同步大頻寬工作的話就很不易(匯流排只是對CPU而言,GPU和NPU可以是單純資料驅動的),所以mem pool底層設計就可能大有文章。簡單舉例,GDDR4比DDR4快一倍,倘若在傳統設計裡,GPU和CPU一旦要共享mem,理論上GPU就是降半速執行,這是掛傳統匯流排的弊端,只能有乙個時鐘;那麼倘若是fabric,可能突破點就在於允許xPU工作在不同時鐘上,這樣GPU就不必降速了。

當然,類似的Mem fabric和記憶體分頻訪問技術也廣泛運用在Intel/AMD/Nvidia的設計中,比如傳統Ringbus/Mesh,以及AMD的Infinity Fabric(還用來link chiplets)等,CPU和xPU掛在這些fabric上面,劃分各自的時鐘域(位址範圍),沒有什麼CPU/GPU的頻率約束;雖然它們都是為了大幅提公升xPU載入大型資料集的速度,減輕CPU I/O的瓶頸,提公升I/O頻寬和傳輸資料的量;但多數都與UMA這種整體記憶體空間共用共分配的模式不同,通常意義的UMA與記憶體共享池的根本差異,在於記憶體空間的所有權以及其服務的方式;那麼其中topology/ 時序/ 衝突解決機制,甚至fabric的底層PHY等等細節就是M1不會披露的設計亮點。

此外,過往慣例上講,增加了那麼多cache/buffer的代價是指令週期得加,不提高頻率的話,個別操作也許就顯得慢(比如高IPC的任務 - 但是M1是降頻加了超寬的8發射架構來支援高IPC),當然公升頻的話相信流水線也會增加;且PC這個form factor要嚴肅考慮向後相容性了,手機則不必考慮。

當然上述僅僅猜測,具體看未來的分析報告吧;當然TSMC知曉的資訊只會更清楚。

4樓:lolicon

目前的資訊不足,僅有的資訊表明:1.蘋果的統一記憶體使用了chiplet的安裝方式,即與SOC處於同乙個封裝內,訊號的傳輸距離是幾個公釐到十幾個公釐的水平。

而PC系統的共用記憶體安裝在主機板的記憶體插槽內,訊號的傳輸距離在幾個厘公尺到十幾個厘公尺的水平。蘋果的統一內存在傳輸延遲方面有乙個數量級的優勢。2.

蘋果的統一記憶體目前使用的記憶體型別是LPDDR4X雙通道,而PC的共用記憶體系統採用的是雙通道DDR4。LPDDR4X對DDR4優勢主要在功耗上,頻寬和延時差別不大,未來蘋果如果上HBM2記憶體,那樣優勢很大。

總之,除了記憶體使用機制和記憶體控制器設計上可能的差別,蘋果的統一記憶體比PC的共用記憶體傳輸延遲方面有乙個數量的效能優勢。

5樓:CMOS

為啥有人覺得這個很神奇。

現在的soc晶元,從低端到高階,cpu, gpu,各種片上加速器都可以看到同乙個實體地址空間,畢竟soc的記憶體介面基本就ddr一種。這裡和pc加獨顯是不同的。

本質的區別在於上層怎麼使用這個空間。比如可以將cpu gpu掛在coherence的區域上,那麼cpu和gpu可以保證資料一致性。但是對於codec,編譯碼單元等,這些單元一般不會去做一致性硬體,那怎麼保證資料一致性?

cpu用clflush這類指令把資料強制同步到ddr,然後再通知這些單元開始工作,那麼直接讀取ddr的資料也是一致的。或者使用類似arm acp那種單向一致性的介面。這裡本質上都是沒有多餘的資料copy。

當然換一種形式,統一的實體地址空間劃分給各個單元,互相不能訪問別人的區域,cpu可以訪問所有區域,那麼不同單元之間傳遞資料就需要copy了。

當然再引入vm這些概念後會更複雜一些,但本質上來說還是一點,只要soc內的兩個單元可以訪問同乙個實體地址,那麼就可以不用copy實現資料傳遞,生產者寫資料,然後位址指標傳給消費者,消費者直接就可以讀。當然上層還有很多不同的方式來控制這個,比如是否直接在片上做一致性,還是使用cache invalid做軟體一致性,又或者是否使用vm,引入iommu等。

6樓:XZiar

我也不能理解,一堆KOL都提到了UMA,但蘋果這個UMA到底有什麼獨特之處,卻沒人能說清。

蘋果重新定義一項技術也不是一回兩回了,我也希望它能做出新花樣,做出好成績,但大家千萬別看到個詞就沸騰吧……

UMA不是什麼新鮮玩意兒,Intel和AMD玩核顯這麼久了,也早就有類似的支援了

UMA到底是什麼定義,關鍵看怎麼理解這個A。UM是unified memory沒跑了,A卻可以是Access,或者Architecture(通常是後者)。

UMA的意義不僅僅是共享主存這麼簡單。BIOS裡預留視訊記憶體也算共享主存,但顯然不太適合叫UMA。

共享資料很簡單,OpenGL時代的persistent map,讓驅動去做同步、做資料搬運,從而給開發者營造「資料隨時可得」的假象(當然也可能的確就是隨時可得),這就已經達到共享資料的要求了。

共享位址的難度則增加了一些,其目標是為了讓你在CPU上跑的鍊錶能直接在GPU等地方使用。x64時代到來使得記憶體位址擴充到48位,而且CPU上已經全面虛擬位址,GPU也要跟著加上位址轉換的能力。

共享物理記憶體則明確表明,實現了上兩者的獨顯(OpenCL的SVM就是前兩個要求)也要被排除。那就基本是核顯Only(主機的架構也可以看作是核顯)。

來看一下官網的描述:

說白了關鍵是「without copying it」,也就只是個zero copy而已。

而如果只是zero copy,那就真的是很不稀奇的了:

AMD在2023年就發blog介紹zero copy的強大了,map/unmap只做邏輯上的控制權轉移

Getting the Most from OpenCL 1.2: How to Increase Performance by...

Intel晚了一些,2023年才發blog指導大家怎麼利用OpenCL的CL_MEM_ALLOC_HOST_PTR和CL_MEM_USE_HOST_PTR。(和AMD的是同一件事)。

當然OpenCL2.0帶來了SVM,不但可以不用map/unmap,甚至可以CPU/GPU同時運算元據了

Xinzhao:GPU儲存體系-Integrated GPU

比如Intel,CPU和GPU都靠ringbus掛在LLC(CPU的L3)上,GPU就像是乙個CPU核一樣,自然有辦法做同步,甚至能在快取層面共享資料。

XZiar:Intel核顯的一些解析

記憶體控制器是在System Agent裡的,也掛在ring上,或者說是掛在LLC上,自然CPU和GPU的訪存都被同化了(可能更像是LLC發起的訪存?)

再比如AMD,GPU和CCX是掛在Infinity Fabric上,GPU相當於NUMA Core,也能靠IF做通訊,只是由於L3是CCX內部的,無法共享而已。

記憶體控制器也算是依賴著IF的,CPU和GPU的訪存也被同化。

XSX其實和APU差不多,只不過GPU是IF的首要使用者而已。

移動端的ARM公版,也是核顯,CPU和GPU也掛在乙個CCI匯流排上,訪存靠的DMC(dynamic memory controller)。

ARM Announces New CCI-550 and DMC-500 System IPs

然後再來看看蘋果的圖:

我反正沒看出什麼奧秘,和AMD、ARM的架構圖沒什麼實質區別。

如果沒有內部資料的話……你開心就好。

7樓:MebiuW

蘋果的這個統一記憶體應該是Unified Memmory Achitecture/Access(UMA),和傳統見到的CPU和GPU共享記憶體(例如現在的安卓SoC,或者Intel整合顯示卡的共享記憶體)在記憶體訪問上明顯差別。

UMA和傳統共享記憶體在巨集觀上都是讓CPU和GPU共享同乙個記憶體沒錯,但是傳統共享記憶體的模式下,雖然內存在物理上是共享的,但在作業系統、程式設計層面他們還是兩個不同的東西。相當於說雖然共享了記憶體,但是會顯式的區分他們的記憶體位址空間,CPU和GPU都沒辦法直接訪問修改對方所占用記憶體的資料,互相訪問和非共享記憶體大同小異。簡單來說就是互相訪問可能需要先從對方的位址空間拷貝乙份到自己的位址空間,然後再處理和同步。

而UMA的好處是CPU和GPU的訪問完全打通了,互相可以直接訪問,乙份資料不需要再來回拷貝兩份,這樣對CPU和GPU進行異構計算時有莫大的幫助。

UMA在傳統的遊戲場景下沒有什麼太大幫助,但對於計算場景則幫助很大,打通了資料共享的瓶頸,不需要無謂的消耗。Intel未來在PCIE5時代通過CLX會實現,AMD則在Infinity 膠水3.0時代出現。

整合顯示卡和獨立顯示卡怎麼選?

如果 偶爾 的頻率非常低,核顯就行。比如一學期就一次,你還不如去學校機房 如果是一周一次,或者說是在某個階段很多次,還是獨顯吧。不打遊戲不做設計,且是商科,估計不會用到太吃記憶體和CPU的工作軟體,i5 8代和8G記憶體足夠了。512G的固態也非常充足了。獨顯的話,這個我個人認為需要看你的預算和要求...

獨立顯示卡和整合顯示卡哪個更適合用於3DMAX的製作與渲染?

我的筆記本,13年買的,我是學生黨 啟動max很慢,i5雙核,HD7670 inter4000交火,win8.1系統,觸屏,但不是超極本,索尼的電腦,日立500g硬碟,就是啟動max慢點兒,作圖時自動儲存就會卡,甚至有時會無響應,額,建議還是最好不要總筆記本來作圖 筆記本頂多做個CAD就可以了,除非...

史上有哪些效能特別強的整合顯示卡?

避風岸 sis5595 5598晶元組至少那個時代剛剛開始進入3d主流還是2d,整合的顯示卡加視訊記憶體算是提供了主流效能。類似的還有整合在810晶元組的740顯示卡,如同後來的apu,相當於整合了上一代中檔顯示卡,比如整合1050。不過810出來時候TNT已經發威,上一代卡已經不夠看了。 kaka...