如何評價AMD的hUMA?
PS4採用的顯存內存的統一定址,以及AMD以後將推出的桌面處理器將採用這種結構。
1. 這種技術既然避免了從顯存和內存之間的數據搬運,而且讓二者的容量不再固定受限,那麼是否會大大提高性能?
2. 這項技術的難點在哪裡?為何沒有早些出現?
1. 之前的CPU和GPU地址空間不統一,CPU使用內存,GPU使用顯存。當需要在GPU上運行一個Kernel的時候,是需要程序員顯式的調用API將數據從內存拷貝到顯存(如cudaMemcpy(host_data,device_data));當GPU完成運算時,也需要程序員將數據從顯存拷貝回內存(如cudaMemcpy(device_data,host_data))。大量數據的拷貝需要花費較多時間,尤其是在之前的GPU一般是連接在PCIe匯流排上的情況下。
2. 內存和顯存採用統一地址空間,和@泰羅Taro說的一樣,目的是讓CPU和GPU能看到一片共同的地址空間。不再需要程序員顯式的將數據從內存拷貝到顯存,可以直接通過相同的地址訪問到。至於會不會提高性能,還是取決於內存和顯存的設計。比如Nvidia的CUDA6也採用了CPU-GPU統一定址,但是由於Nvidia的GPU還是通過PCIe匯流排和CPU通信,通過訪問相同的地址雖然可以訪問的CPU的數據,但是依然無法避免需要將數據從內存拷貝到顯存,所以性能也不可能大幅提高。再比如AMD的APU,將CPU和GPU集成到同一個晶元上,共享同一個DRAM(顯存即內存),就不存在從內存拷貝到顯存的問題,可以節約之前通過PCIe拷貝數據的時間,提高一點性能。至於說讓二者之間的容量不再固定受限,主要是之前的顯存做在GPU內部,大小沒法和CPU的內存相比,統一定址之後就沒這個問題了。
3. 要實現統一地址空間不難,如Nvidia的CUDA6就採用軟體技術實現了物理分離的內存和顯存之間的地址統一;AMD的APU則通過將CPU和GPU集成到一個晶元上共享DRAM實現。雖然地址空間是統一的,但是由於現代CPU和GPU都採用了多級Cache,如何保證CPU和GPU的Cache之間的一致性,才是這項技術的難點。
4. 維持CPU和GPU之前Cache的一致性難點在於GPU通常運行大量的線程,這些線程產生大量的訪存請求,對GPU Cache造成非常大的壓力(實驗觀察到在一個cycle內能達到幾百個請求)。由於GPU運算一般都是Streaming類型的居多,數據局部性不好,即便是L2 Cache命中率也不高。因此L2 Cache Miss都要訪問目錄(Directory)來詢問這個數據是不是已經存在於CPU的cache裡面,這樣就對維持CPU-GPU之間Cache一致性的目錄結構(Directory)造成了非常大的壓力。要追蹤這些請求,需要在Directory內部的MSHR中存儲這些地址,直到相應的數據從CPU Cache或DRAM中返回。因而對Directory裡面的MSHR壓力非常大。
5. 目前如何維持CPU和GPU之間的Cache一致性還是一個開放式的問題,學術界也研究比較多(個人最近的研究方向。。。)目前為止僅在去年的MICRO上有一篇文章提出了一種純硬體解決方案,有興趣的同學可以去讀讀。
6.如果想深入了解AMD的hUMA,可參考AnandTech Portal。1.統一定址並不能避免CPU—GPU之間的數據傳遞,並且沒有哪種技術旨在抹除CPU—GPU之間的數據傳遞,以抹除這一點為目的的技術可能永遠也不會出現,因為這與cache的設計原則違背。無論統一定址如何發展,CPU—GPU之間的數據傳遞都不會消失。
2.統一定址的作用是讓CPU和GPU看到一片共同的連續的地址空間,好處是方便編程,程序員們不用介入繁瑣的CPU-GPU內存管理,至於性能優勢,這一點並不會帶來直接的性能優勢。性能優勢是間接的,CPU和GPU能夠更好地協作。
3. HSA是很久以前就開始醞釀的概念,出現並不晚,我覺得它就是在應該出現的時候出現了。再早五到十年出現的話,GPU上的通用計算編程模型還沒有發展成熟,HSA這個概念的接受程度就不會有今天這樣高。
4. 技術難點跟工藝沒什麼關係,主要的挑戰仍然是停留在結構層上,比如統一定址但是物理存儲分離之後帶來的coherence問題,前陣子在某個會議上聽AMD lab的人作了報告,老實說,首先我不太喜歡當時提出的那套解決方案,比較笨拙,其次提方案的人說AMD的工程部門告訴他們統一定址之後MSHR壓力會比較大,我也沒想明白為什麼MSHR壓力會比較大。。。1. 這種技術既然避免了從顯存和內存之間的數據搬運,而且讓二者的容量不再固定受限,那麼是否會大大提高性能?
不會。huma的本質是處理器端I/O技術,不涉及內存的基礎設計。真正的內存性能仍取決於內存系統的設計。huma的作用是,使得CPU和GPU在運算時的內存地址統一,從而使得計算任務能夠在CPU和GPU中靈活分配,讓GPU幫助CPU計算。但是,GPU的運算優勢只在於浮點性能。而對浮點性能需求高的CPU任務都是科學計算,需要使用專門軟體,對日常應用沒有幫助。至於視頻播放,遊戲等要求浮點性能的GPU任務,那本來就是GPU的責任,取決於GPU本身的能力,而不是gpu和cpu之間的分配。
2. 這項技術的難點在哪裡?為何沒有早些出現?
難點在於工藝1.AMD的製程工藝落後於intel。使用統一定址將增加額外的匯流排控制器模塊,於此同時,現有APU上集成的GPU浮點性能本身不強,提升不明顯。在當前製程下使用huma會增加製造複雜度,降低良品率,而性能提升不明顯。
上文提到,huma並不增加日常應用性能,需要使用專門為huma開發的程序才能體現出明顯優勢。而在現有工藝下使用huma的成本效益並不理想。因此,huma沒有及早出現。
最後說一句,農企AMD本來在CPU層面就沒有任何技術優勢,它只能專註提升GPU性能,但是,集成GPU性能永遠比不上獨立GPU,因此,AMD的huma等概念全部是為了提供性價比高的APU而服務(低價產品同等價格上有性能優勢),但指望AMD的技術改變行業,那是不可能的。
推薦閱讀:
※為什麼PS4等遊戲主機的遊戲賣這麼貴,還遲遲未破解,但依然有那麼多玩家?
※為什麼說微軟沒有水軍?
※為什麼《如龍 0》受到如此的追捧?
TAG:AMD | 圖形處理器GPU | AMD加速處理器APU | PlayStation4 |