面向開發人員的 HSA:面向大眾的異構計算
已發表: 2022-03-11AMD、ARM、三星、聯發科、高通和德州儀器等芯片製造商有什麼共同點? 嗯,除了這些芯片製造巨頭之間的明顯相似之處外,他們也恰好是 HSA 基金會的創始人。 什麼是 HSA,為什麼它需要由行業巨頭支持的基礎?
在這篇文章中,我將嘗試解釋為什麼 HSA 在不久的將來會成為一件大事,所以我將從基礎開始:什麼是 HSA,你為什麼要關心?
HSA 代表異構系統架構,這聽起來有點無聊,但相信我,它確實會變得非常令人興奮。 HSA 本質上是一組標準和規範,旨在允許在同一總線上進一步集成 CPU 和 GPU。 這不是一個全新的概念。 台式機 CPU 和移動 SoC 多年來一直採用集成顯卡並使用單一總線,但 HSA 將其提升到了一個新的水平。
與簡單地為 CPU 和 GPU 使用相同的總線和共享內存不同,HSA 還允許這兩種截然不同的架構協同工作並共享任務。 這聽起來可能沒什麼大不了的,但如果你仔細觀察,並檢查這種方法的潛在長期影響,它開始在技術意義上看起來非常“甜蜜”。
不好了! 這是開發人員必須實施的另一個愚蠢的標準
是和不是。
共享同一條總線的想法並不新鮮,為某些計算任務(不涉及渲染爆頭)使用高度並行化的 GPU 的想法也不是什麼新鮮事。 以前有人做過,我想我們的大多數讀者已經熟悉 GPGPU 標準,如 CUDA 和 OpenCL。
但是,與 CUDA 或 OpenCL 方法不同,HSA 將有效地將開發人員排除在外,至少在將不同負載分配給不同處理內核時是如此。 硬件將決定何時將計算從 CPU 卸載到 GPU,反之亦然。 HSA 不應該取代 OpenCL 等已建立的 GPGPU 編程語言,因為它們也可以在 HSA 硬件上實現。
這就是 HSA 的重點:它應該使整個過程變得簡單,甚至無縫。 開發人員不必考慮將計算卸載到 GPU 上。 硬件會自動完成。
為此,HSA 必須得到多家芯片製造商和硬件供應商的支持。 雖然 HSA 支持者的名單令人印象深刻,但英特爾明顯缺席這個名副其實的芯片行業名人錄。 鑑於英特爾在台式機和服務器處理器市場的市場份額,這是一件大事。 另一個你不會在列表中找到的名字是 Nvidia,它專注於 CUDA,目前是 GPU 計算市場的領導者。
但是,HSA 並非專為高性能係統和應用程序而設計,在通常帶有Intel Inside貼紙的硬件上。 HSA 還可用於節能移動設備,英特爾在這些設備的市場份額微不足道。
所以,HSA 應該讓生活更輕鬆,但它是否相關呢? 它會流行起來嗎? 這不是技術問題,而是經濟問題。 這將取決於市場這只看不見的手。 所以,在我們繼續之前,讓我們先仔細看看現在的情況,以及我們是如何走到這一步的。
HSA 開發、出牙問題和採用問題
正如我在介紹中所說,HSA 並不是一個新概念。 它最初是由 Advanced Micro Devices (AMD) 設想的,該公司有既得利益將其付諸實施。 十年前,AMD 收購了圖形專家 ATI,從那時起,該公司一直試圖利用其對尖端 GPU 技術的訪問來提高整體銷量。
從表面上看,這個想法很簡單:AMD 不僅會繼續開發和製造尖端的離散 GPU,還會將 ATI 的 GPU 技術集成到其處理器中。 AMD 的營銷部門將這個想法稱為“Fusion”,而 HSA 則被稱為 Fusion System Architecture (FSA)。 聽起來不錯,對吧? 獲得具有良好集成顯卡的體面 x86 處理器聽起來是個好主意,而且確實如此。
不幸的是,AMD 在此過程中遇到了許多問題。 我將挑出其中的幾個:
- 任何科技領域的好主意都必然會被競爭對手採用,在這種情況下——英特爾。
- AMD 將技術優勢拱手讓給了英特爾,並發現由於英特爾在代工技術上的領先優勢,它在 CPU 市場上的競爭越來越困難。
- AMD 的執行存在問題,許多新處理器上市較晚。 其他的則完全報廢。
- 2008 年的經濟崩潰和隨後的移動革命沒有幫助。
這些以及許多其他因素共同削弱了 AMD 的優勢,並阻止了其產品和技術的市場採用。 AMD 於 2011 年年中開始推出具有新一代集成 Radeon 顯卡的處理器,並開始將其稱為加速處理單元 (APU) 而不是 CPU。
拋開營銷不談,AMD 的第一代 APU(代號 Llano)失敗了。 這些芯片遲到了,跟不上英特爾的產品。 嚴重的 HSA 功能也不包括在內,但 AMD 開始在其 2012 平台中添加它們(Trinity,這基本上是 Llano 做得對的)。 下一步是在 2014 年,隨著 Kaveri APU 的推出,它支持異構內存管理(GPU IOMMU 和 CPU MMU 共享相同的地址空間)。 Kaveri 還帶來了更多的架構集成,實現了 CPU 和 GPU 之間的一致內存(AMD 稱之為 hUMA,代表 Heterogeneous Unified Memory Access)。 隨後的 Carizzo 更新添加了更多 HSA 功能,使處理器能夠在 GPU 上進行上下文切換計算任務並執行更多技巧。
即將推出的 Zen CPU 架構以及在其之上構建的 APU 有望在市場上出現時提供更多功能。
所以有什麼問題?
AMD 並不是唯一一家意識到片上 GPU 潛力的芯片製造商。 英特爾也開始將它們添加到其核心 CPU 中,ARM 芯片製造商也是如此,因此集成 GPU 目前幾乎用於所有智能手機 SoC,以及絕大多數 PC/Mac。 與此同時,AMD在CPU市場的地位被侵蝕。 市場份額的下滑降低了 AMD 的平台對開發者、企業甚至消費者的吸引力。 市場上根本沒有那麼多基於 AMD 的 PC,而且 Apple 根本不使用 AMD 處理器(儘管它確實使用了 AMD 顯卡,主要是因為 OpenCL 兼容性)。
AMD 在高端 CPU 市場上不再與英特爾競爭,但即使競爭,在這方面也不會產生太大影響。 人們不會購買 2,000 美元的工作站或遊戲 PC 來使用集成顯卡。 他們使用昂貴的獨立顯卡,並且不太關心能源效率。
一些用於智能手機和平板電腦的 HSA 怎麼樣?
可是等等。 移動平台呢? AMD 不能為智能手機和平板電腦芯片推出類似的解決方案嗎? 嗯,不,不是真的。
你看,在收購 ATI 幾年後,AMD 發現自己陷入了艱難的財務狀況,再加上經濟危機,因此決定將其 Imageon 移動 GPU 部門出售給高通。 高通將產品重新命名為 Adreno(Radeon 的變位詞),並繼續使用重新粉刷的內部 GPU 成為智能手機處理器市場的主導者。
正如你們中的一些人可能注意到的那樣,在智能手機革命即將開始之際銷售智能手機圖形設備,看起來並不是一個出色的商業舉措,但我想事後諸葛亮總是 20/20。
HSA 過去僅與 AMD 及其 x86 處理器相關聯,但現在情況已不再如此。 事實上,如果所有 HSA 基金會成員都開始出貨支持 HSA 的 ARM 智能手機處理器,那麼無論是在收入還是出貨量方面,他們的銷量都將超過 AMD 的 x86 處理器數倍。 那麼如果他們這樣做會發生什麼? 這對行業和開發商意味著什麼?
好吧,對於初學者來說,智能手機處理器在某種程度上已經依賴於異構計算。 異構計算通常是指在單個芯片中使用不同架構的概念,考慮到當今高度集成的 SoC 上的所有組件,這可能是一個非常廣泛的定義。 因此,幾乎每個 SoC 都可以被視為異構計算平台,具體取決於一個人的標準。 有時,人們甚至將基於相同指令集的不同處理器稱為異構平台(例如,具有 ARM Cortex-A57 和 A53 內核的移動芯片,它們都是基於 64 位 ARMv8 指令集的)。
許多觀察家一致認為,大多數基於 ARM 的處理器現在可能被視為異構平台,包括 Apple A 系列芯片、三星 Exynos SoC 和其他供應商的類似處理器,即高通和聯發科等大廠商。
但為什麼有人需要智能手機處理器上的 HSA? 使用 GPU 進行通用計算來處理專業工作負載的重點不就是憤怒的小鳥和優步嗎?
是的,但這並不意味著不能使用幾乎相同的方法來提高效率,這是移動處理器設計的優先事項。 因此,與在高端工作站上處理無數並行任務不同,HSA 還可用於使移動處理器更高效、更通用。
很少有人仔細查看這些處理器,他們通常在購買新手機時查看規格表,僅此而已:他們查看數量和品牌。 他們通常不看SoC 芯片本身,這告訴了我們很多信息,原因如下:高端智能手機處理器上的 GPU 比 CPU 佔用更多的矽空間。 考慮到它們已經存在,將它們很好地用於遊戲以外的應用程序會很好,不是嗎?
一個假設的、完全符合 HSA 的智能手機處理器可以讓開發人員在不增加總體生產成本的情況下挖掘這一潛力、實現更多功能並提高效率。
以下是 HSA 可以為智能手機處理器做的事情,至少在理論上:
- 通過將合適的任務轉移到 GPU 來提高效率。
- 在某些情況下通過卸載 CPU 來提高性能。
- 更有效地利用內存總線。
- 通過一次挖掘更多的矽來潛在地降低芯片製造成本。
- 引入 CPU 內核無法以有效方式處理的新功能。
- 通過標準化簡化開發。
聽起來不錯,尤其是當您認為開發人員不太可能在實現上浪費大量時間時。 這就是理論,但我們將不得不等待看到它在行動中,這可能需要一段時間。
HSA 是如何工作的?
我已經在簡介中概述了基礎知識,但出於以下幾個原因,我不願過多介紹:沒有人喜歡在技術博客上發布的中篇小說,而 HSA 的實現可能會有所不同。
因此,我會盡量用幾百字來概括這個概念。
在標準系統上,應用程序將通過將緩衝區傳輸到 GPU 來卸載 GPU 計算,這將涉及排隊之前的 CPU 調用。 然後 CPU 將調度作業並將其傳遞給 GPU,GPU 將在完成後將其傳回 CPU。 然後應用程序將獲得緩衝區,在它準備好之前必須再次由 CPU 映射。 如您所見,這種方法涉及很多來回。
在 HSA 系統上,應用程序將作業排隊,HSA CPU 將接管,將其交給 GPU,將其取回,然後將其提供給應用程序。 完畢。
這可以通過在 CPU 和 GPU 之間直接共享系統內存來實現,儘管也可能涉及其他計算單元(例如 DSP)。 為了實現這一級別的內存集成,HSA 為計算設備使用了一個虛擬地址空間。 這意味著 CPU 和 GPU 內核可以平等地訪問內存,只要它們共享頁表,允許不同的設備通過指針交換數據。
這顯然對效率很有好處,因為不再需要為 GPU 和 CPU 分別使用虛擬內存來分配內存。 得益於統一的虛擬內存,兩者都可以根據需要訪問系統內存,從而確保了優越的資源利用率和更大的靈活性。
想像一個具有 4GB RAM 的低功耗系統,其中 512MB 分配給集成 GPU。 這種模型通常不靈活,並且您無法動態更改 GPU 內存量。 您只能使用 256MB 或 512MB,僅此而已。 使用 HSA,您可以隨心所欲地做任何事情:如果您將大量內容卸載到 GPU,並且需要為 GPU 提供更多 RAM,則係統可以分配它。 因此,在具有大量高分辨率資產的圖形綁定應用程序中,系統最終可能會無縫地為 GPU 分配 1GB 或更多 RAM。

在所有條件相同的情況下,HSA 和非 HSA 系統將共享相同的內存帶寬,可以訪問相同數量的內存,但 HSA 系統最終可以更有效地使用它,從而提高性能並降低功耗。 一切都是為了少花錢多辦事。
異構計算有什麼好處?
簡單的答案? 對於比 CPU 更適合 GPU 的所有計算任務,異構計算或 HSA 應該是一個不錯的選擇。 但這究竟意味著什麼,GPU 到底擅長什麼?
與獨立顯卡(尤其是高端遊戲顯卡和工作站解決方案)相比,現代集成 GPU 的功能並不是很強大,但它們比其前輩強大得多。
如果您沒有跟踪,您可能會認為這些集成 GPU 是一個笑話,多年來它們就是這樣:用於廉價家庭和辦公室盒子的圖形。 然而,隨著集成 GPU 從芯片組轉移到 CPU 封裝和芯片,這種情況在十年之交開始發生變化,成為真正的集成。
與旗艦 GPU 相比,雖然功能仍然嚴重不足,但即使是集成 GPU,也具有很大的潛力。 與所有 GPU 一樣,它們在單指令多數據 (SIMD) 和單指令多線程 (SIMT) 加載方面表現出色。 如果您需要在重複的並行負載中處理大量數字,GPU 應該會有所幫助。 另一方面,CPU 在繁重的分支工作負載方面仍然表現出色。
這就是 CPU 具有較少內核的原因,通常在 2 到 8 個之間,並且內核針對順序串行處理進行了優化。 GPU 往往有數十個、數百個,在旗艦獨立顯卡中,有數千個更小、更高效的內核。 GPU 內核旨在同時處理多個任務,但這些單獨的任務比 CPU 處理的任務要簡單得多。 如果 GPU 能夠以卓越的效率和/或性能處理這些負載,為什麼還要讓 CPU 承受這些負載呢?
但是,如果 GPU 如此出色,我們為什麼不早在幾年前就開始將它們用作通用計算設備呢? 好吧,該行業嘗試過,但進展緩慢且僅限於某些利基市場。 該概念最初被稱為圖形處理單元上的通用計算 (GPGPU)。 在過去,潛力是有限的,但 GPGPU 概念是合理的,隨後以 Nvidia 的 CUDA 和 Apple/Khronos Group 的 OpenCL 的形式被接受和標準化。
CUDA 和 OpenCL 產生了巨大的差異,因為它們允許程序員以不同的、更有效的方式使用 GPU。 然而,它們是特定於供應商的。 您可以在 Nvidia 硬件上使用 CUDA,而 OpenCL 是為 ATI 硬件保留的(並且被 Apple 採用)。 Microsoft 的 DirectCompute API 與 DirectX 11 一起發布,並允許有限的、與供應商無關的方法(但僅限於 Windows)。
讓我們通過列出幾個 GPU 計算的應用來總結一下:
傳統的高性能計算 (HPC)形式為 HPC 集群、超級計算機、用於計算負載的 GPU 集群、GRID 計算、負載平衡。
需要物理的負載,通常可以但不必涉及遊戲或圖形。 它們還可用於處理流體動力學計算、統計物理以及一些奇異的方程和算法。
Geometry ,幾乎所有與幾何相關的東西,包括透明度計算、陰影、碰撞檢測等等。
音頻處理,使用 GPU 代替 DSP、語音處理、模擬信號處理等。
數字圖像處理,是 GPU 的設計目的(顯然),因此它們可用於加速圖像和視頻的後期處理和解碼。 如果您需要解碼視頻流並應用過濾器,即使是入門級的 GPU 也會用 CPU 擦地板。
科學計算,包括氣候研究、天體物理學、量子力學、分子建模等。
其他計算密集型任務,即加密/解密。 無論您需要“挖掘”加密貨幣、加密或解密您的機密數據、破解密碼還是檢測病毒,GPU 都能提供幫助。
這不是潛在 GPU 計算應用程序的完整列表,但不熟悉該概念的讀者應該大致了解 GPU 計算的不同之處。 我還遺漏了明顯的應用程序,例如游戲和專業圖形。
無論如何,不存在一個完整的列表,因為 GPU 計算可以用於各種各樣的東西,從金融和醫學成像到數據庫和統計負載。 你受限於你自己的想像力。 所謂的計算機視覺是另一個新興應用。 如果您需要“教”無人機或無人駕駛汽車避開樹木、行人和其他車輛,那麼擁有強大的 GPU 是一件好事。
隨意在此處插入您最喜歡的 Lindsay Lohan 笑話。
為 HSA 開發:一些壞消息的時間
這可能是我個人的觀點,而不是事實,但我是 HSA 的信徒。 我認為這個概念有很大的潛力,只要它實施得當,並在芯片製造商和開發人員中獲得足夠的支持。 然而,進展緩慢得令人痛苦,或者這只是我的感覺,還有一點一廂情願。 我只是喜歡看到新技術在發揮作用,而且我絕不是一個有耐心的人。
HSA 的問題在於它還不存在。 這並不意味著它不會起飛,但可能需要一段時間。 畢竟,我們不只是在談論新的軟件堆棧。 HSA 需要新的硬件來發揮它的魔力。 問題在於,大部分硬件仍在繪圖板上,但我們已經到了那裡。 慢慢地。
這並不意味著開發人員沒有從事與 HSA 相關的項目,但在這方面沒有太多的興趣或進展。 如果您想嘗試 HSA,您應該查看以下一些資源:
顯然,HSA Foundation @ GitHub 是 HSA 相關資源的地方。 HSA 基金會在 GitHub 上發布和維護了許多項目,包括調試器、編譯器、重要的 HSAIL 工具等等。 大多數資源都是為 AMD 硬件設計的。
AMD 提供的 HSAIL 資源可讓您更好地了解 HSAIL 規範。 HSAIL 代表 HSA 中間語言,它基本上是希望以 HSA 設備為目標的後端編譯器編寫者和庫編寫者的關鍵工具。
HSA 程序員參考手冊 (PDF) 包括完整的 HSAIL 規範,以及對中間語言的全面解釋。
HSA 基金會資源暫時有限,基金會的開發者計劃“即將推出”,但有許多官方開發者工具可供查看。 更重要的是,它們會讓您很好地了解您需要開始使用的堆棧。
AMD 官方博客也提供了一些有用的 HSA 內容。
如果您是好奇的類型,這應該足以讓您入門。 真正的問題是你是否應該費心開始。
HSA 和 GPU 計算的未來
每當我們報導一項新興技術時,我們都會面臨同樣的困境:我們是應該告訴讀者花時間和資源,還是遠離,採取觀望態度?
我已經明確表示我有些偏見,因為我喜歡 GPU 計算的一般概念,但目前大多數開發人員可以不用它。 即使它起飛,HSA 的吸引力也有限,不會引起大多數開發人員的關注。 然而,這在未來可能很重要。 不幸的是,對於 AMD 來說,它不太可能成為 x86 處理器市場的遊戲規則改變者,但它可能在基於 ARM 的移動處理器中更為重要。 這可能是 AMD 的想法,但高通和聯發科等公司更有能力將支持 HSA 的硬件帶給數億用戶。
它必須是軟件和硬件的完美共生。 如果移動芯片製造商為 HSA 瘋狂,那將是一件大事。 新一代 HSA 芯片將模糊 CPU 和 GPU 內核之間的界限。 他們將平等地共享相同的內存總線,我認為公司將開始以不同的方式營銷它們。 例如,AMD 已經將其 APU 營銷為由不同“計算核心”(CPU 和 GPU)組成的“計算設備”。
移動芯片最終可能會使用類似的方法。 芯片製造商可以開始談論集群、模塊和單元,而不是銷售具有 8 個或 10 個 CPU 內核的芯片,以及這樣那樣的 GPU。 因此,如果考慮 GPU 內核,具有四個小型和四個大型 CPU 內核的處理器將是“雙集群”或“雙模塊”處理器,或者“三集群”或“四集群”設計. 隨著時間的推移,許多技術規格往往變得毫無意義,例如,辦公室打印機上的 DPI,或廉價智能手機相機上的百萬像素數。
但這不僅僅是營銷。 如果 GPU 變得像 CPU 內核一樣靈活,並且能夠以與 CPU 同等的條件訪問系統資源,我們為什麼還要費心稱呼它們的真名呢? 二十年前,當專用數學協處理器 (FPU) 成為每個 CPU 的必備組件時,該行業就停止使用它們。 僅僅幾個產品週期之後,我們就忘記了它們曾經存在過。
請記住,HSA 並不是利用 GPU 進行計算的唯一方法。
英特爾和英偉達不在船上,他們的方法不同。 英特爾近幾年悄悄加大了GPU研發投入,最新的集成顯卡解決方案相當不錯。 隨著片上 GPU 變得更強大並佔用更多的矽空間,英特爾將不得不尋找更巧妙的方法將它們用於通用計算。
另一方面,英偉達幾年前退出了集成顯卡市場(當時它停止生產 PC 芯片組),但它確實憑藉 Tegra 系列處理器在 ARM 處理器市場上碰運氣。 它們並沒有取得巨大的成功,但它們仍在某些硬件中使用,Nvidia 正將精力集中在嵌入式系統上,即汽車。 在此設置中,集成 GPU 發揮了自己的作用,因為它可用於碰撞檢測、室內導航、3D 映射等。 還記得 Google 的Project Tango嗎? 一些硬件基於 Tegra 芯片,允許深度感應和其他一些巧妙的技巧。 另一方面,英偉達的特斯拉產品線覆蓋了高端 GPU 計算市場,並確保了英偉達在未來幾年在這一領域的主導地位。
底線? 在紙面上,GPU 計算是一個具有巨大潛力的偉大概念,但目前的技術狀態還有很多不足之處。 HSA 在解決大多數這些問題方面應該走很長一段路。 更重要的是,並非所有行業參與者都支持它,這勢必會進一步減緩採用速度。
這可能需要幾年時間,但我相信 GPU 最終會崛起並在通用計算領域佔據應有的位置,甚至在移動芯片中也是如此。 技術幾乎已經準備就緒,剩下的將由經濟學來完成。 如何? 好吧,這是一個簡單的例子。 英特爾當前一代的 Atom 處理器具有 12 到 16 個 GPU 執行單元 (EU),而它們的前代基於較舊的架構只有四個 EU。 隨著集成 GPU 變得更大、更強大,以及芯片面積增加,芯片製造商別無選擇,只能使用它們來提高整體性能和效率。 如果不這樣做,對利潤和股東都是不利的。
不用擔心,您仍然可以在這種新型 GPU 上享受偶爾的遊戲。 然而,即使你不玩遊戲,GPU 也會在後台做很多事情,卸載 CPU 以提高性能和效率。
我想我們都同意這將是一筆巨大的交易,尤其是在廉價的移動設備上。