當前位置:
首頁 > 最新 > 蘋果電腦使用外置顯卡的相關知識

蘋果電腦使用外置顯卡的相關知識

(全文約 500 字)

原文作者@ibuick,著有《OS X Mountain Lion高手進階》、《蘋果達人MacOSX玩家秘技》。想買蘋果設備(包括定製版本)、微軟Surface、貓/狗進口零食也可以找他。

eGPU 其實是一個很久遠的話題,它的使用可以追溯到世紀初時筆記本電腦上流行的 ExpressCard/34 (ExpressCard/54) 介面。當時很多的筆記本都配備了這個介面,通過 PCIe 2.0 x1 (2.5Gbps) 匯流排或 USB 2.0 (480Mbps) 連接到系統。那時候就有通過該介面使用外置 GPU 的做法出現。這個方法至今依然流行,很多礦機主板,或者挖礦用 GPU 轉接卡都是同樣的實現。

▲ExpressCard/34/54

▲GPU Riser Card

不過,受制於當時的技術、帶寬和 GPU 性能,這個做法並不主流,人們還是傾向於直接購買帶有更高性能內置 GPU 的機型。但是隨著 GPU 性能的穩步提升,其體積和能耗也在水漲船高,此時,人們又對筆記本型電腦的重量,續航,散熱有了更高的要求。在這兩種相悖需求的夾持之下,得益於外置介面帶寬的長足進步,使得 eGPU 又重新回到了大眾視野,並且受到高度關注。

2009年,Intel 在其開發者大會 IDF 上展示了一種與 Apple 合作開發的,全新的外部高速介面 (傳輸速率 10Gbps/PCIe 2.0 x4),名為 Light Peak。該介面通過多路復用 (Multiplex) 可以在一個介面上同時實現數據 (如 PCIe Data Stream) 和視頻信號 (如 DisplayPort Data Stream) 的傳輸,在此同時,通過稱為菊鏈 (Daisy Chain) 的技術,實現在一個介面上鏈接多達六台設備工作的目標。該技術在 2011年被首次商用,作為當年 MacBook Pro Early 2011 款的技術亮點被大眾熟知,當然,他也有了一個全新的名字: Thunderbolt, 並且以 Mini DisplayPort 的硬體介面的形式出現。

▲Mini DisplayPort and Thunderbolt

▲Thunderbolt System Diagram

簡單來說,Thunderbolt 即是將系統中的 PCIe 2.0 x4 通道開放給外部設備用於連接主機的入口。又因為它是 Intel 牽頭開發的技術,所以在設備兼容性上以及性能上秒殺當時其他類型的外部介面,如 火線 (FireWire,800Mbps),USB 2.0 等。理論上只要能夠插在 PCIe 2.0 x4 插槽里並且能夠正常使用的設備,就可以通過 Thunderbolt 介面使用。不過由於當時的 Windows PC 外部設備連接埠主流是 USB,Mac 的市場份額太小,Intel 又對於 Thunderbolt 介面收取高昂的授權費用,使得該介面並沒有流行起來。但是,當時很多用戶已經發現了該介面的價值,做了一系列的試驗,使得 GPU 能夠通過 Thunderbolt 介面來運行,在大幅提升筆記本類型電腦的圖形性能的同時兼顧了筆記本電腦的便攜性和續航。隨著 Thunderbolt 技術的發展,2013年,Mac Pro Late-2013 上搭載了全新的 Thunderbolt 2 介面。這一代 Thunderbolt 繼承了上一代的硬體介面與線纜,將帶寬一舉提升到了20Gbps,使得該介面在帶寬上繼續保持領先。這時 Thunderbolt 設備也慢慢的開始流行開來。很多用戶可以方便的購買到 Thunderbolt 轉 PCIe 設備用於實現 eGPU。這一時代可以稱作是 eGPU 爆發的前奏。我自己也在這時,通過 Sonnet Excho Express III 轉接盒實現了 Mac Pro 使用 NVIDIA GTX 980Ti GPU 的願望。

時間到了2015年底,名為 Alpha Ridge 的晶元誕生,即我們現在熟知的 Thunderbolt 3。Intel 通過對前兩代 Thunderbolt 經驗教訓的總結,以及順應 USB-C (USB Type-C) 介面的潮流,將 Thunderbolt 硬體介面從 Mini DisplayPort 改為 USB-C。這次 PC 廠商沒有再猶豫,搶在了 Apple 之前發布了帶有 Thunderbolt 3 介面的電腦產品。並且提供了多種 eGPU 解決方案。這使得 eGPU 從游擊隊一舉變為正規軍從而進入外設產品大營。

▲Thunderbolt 3

2016-2017年,是 eGPU 爆發的兩年,各類外設廠商層出不窮的 eGPU 設備證明了這一點。Apple 反而在這一次浪潮中表現遲緩,直到 2017年6月份,在其 WWDC 上公布了將在 macOS 10.13 High Sierra 中加入 eGPU 支持的聲明。而正式支持,則一直延遲到 2018年年初的 macOS 10.13.4/5。雖然 Apple 在 eGPU 這件事情上態度曖昧,並且在系統軟體層面砍掉了對非 Thunderbolt 3 介面 Mac 的 eGPU 支持,但好在是正視了問題,明白了專業用戶對於高性能 GPU 的迫切需求。有關 eGPU 與 Mac 搭配使用的基礎性問題,可以參考下面的鏈接。

將外部圖形處理器與 Mac 搭配使用 - Apple 支持

鏈接:https://support.apple.com/zh-cn/HT208544

▲macOS eGPU Menu Bar Icon

好了,說了這麼一大圈,才剛剛進入正題。很多朋友對於 eGPU 的選購以及使用上還存在諸多疑問。這些才是本文將要重點討論的內容。

首先我們要簡要了解計算機圖形學的一點知識。首先我們來解釋幾個名詞,這些名詞在後面的講解中會用到。

集成顯卡 (Integrated GPU,簡稱iGPU), 在 Mac 中,主要是指 MacBook,MacBook Pro 中所使用的與 CPU 集成封裝的 Intel UHD,Iris,Iris Pro 集成顯卡。

▲iGPU

獨立顯卡 (Discrete GPU,簡稱dGPU),在 Mac 中,主要是指 MacBook Pro,Mac Pro,iMac, iMac Pro 中所使用的 AMD RX/Radeon Pro 獨立顯卡。

▲iGPU & dGPU

外置顯卡 (External GPU,簡稱eGPU),主要是指用戶自行採購的,通過 Thunderbolt 介面連接的外部獨立顯卡。

▲eGPU

Headless or Not(我不知道中文叫什麼),主要指獨立顯卡或外部顯卡是否有視頻輸出能力的一個屬性。比如我們都知道 Mac Pro Late-2013 中有兩塊 AMD FirePro D 系列顯卡。但是其中只有一塊兒連接到視頻輸出介面,另外一塊則單純的作為計算卡使用。這塊計算卡就被稱為 Headless dGPU。如果你為 Mac 外接了諸如 NVIDIA Tesla,AMD Instinct , Intel Xeon Phi 系列計算卡,由於這些計算卡也沒有任何視頻輸出能力,所以這類被稱為 Headless eGPU。

可繪製對象 (Drawable Object),簡單來說就是顯示器顯示的任何圖形圖像。你看到的窗口,圖片都是可繪製對象。

渲染器 (Render Device),簡單來說就是繪製/計算圖形圖像的設備。iGPU,dGPU 和 eGPU 都可以用來繪製 Drawable。繪製的過程,稱作 Render Drawable。

呈現設備 (Present Device),簡單來說就是將渲染器繪製的可繪製對象最終顯示出來的設備,比如顯示器。顯示的過程,稱作 Present Drawable。

計算設備 (Compute Device),本文特指 GPU 。利用 GPU 強大的並行能力進行計算的工作。

資源 (Resource),在本文中,特指系統內存 (RAM) 和顯存 (Video RAM, VRAM)。

帶寬 (Bandwidth),這裡主要是指幾個部分的帶寬,比如 CPU 與 GPU 之間的帶寬,Thunderbolt 與 eGPU 之間的帶寬,CPU 與 RAM 和 GPU 與 VRAM 之間的帶寬。

在了解基礎名詞的基礎上,我們來討論在 macOS 下使用 eGPU 的相關問題。

『為什麼要用 eGPU?』

簡單一句話,提高圖形或運算性能。這裡我們以在 MacBook Pro 上使用 視頻剪輯和渲染軟體為例。被編輯的視頻以及軟體界面 UI 元素就是我們所說的 Drawable Object,rMBP 中的 dGPU 就是 Render Device,而內置顯示器,則是 Present Device。當我們執行加入特效,視頻片段的剪切與合併操作時,視頻預覽隨之更新。在這裡 GPU 既要對軟體 UI 如時間線預覽圖 (Drawable Object) 做相應的重新渲染 (Render),也要對於效果進行計算,並將結果快速展示給操作者。這一系列的動作就是一個完整的 GPU 渲染流程。而 eGPU 對於這類工作的性能提升,也在這時提現。如果軟體對於多 GPU 有良好支持,則可以將工作拆分,用一個 GPU 專門用於渲染效果,用另外一個 GPU 專門用於推動 Present Device 將結果呈現。

▲FCPX internal display

▲FCPX external display

另外一個例子,就是 Apple 經常提到的粒子模擬演示。如圖所示。每一個粒子我們都可以看作是一個 Drawable Object。他有諸如亮度,顏色等屬性,也有位置,加速度等屬性。要同時進行很多個粒子運行模擬時,我們可以考慮每個粒子都是一個向量 (Vector),它的屬性都存在其中。如果我們的系統只存在一個 GPU,那麼這個 GPU 不僅要來推動顯示器展示粒子運動的實時效果,同時也要計算粒子在下一幀中的位置顏色等信息。這對於 GPU 來說是一個嚴峻的考驗。如果這時我們的系統擁有 eGPU,則我們可以考慮將工作分開,比如用內置 dGPU 負責推動顯示器展現粒子效果 (Render),另外的 eGPU 則專註於計算粒子運動數據 (Compute)。

▲Partical System

eGPUs as Compute Engine

▲GPU Usage

▲dGPU and eGPUs Usage

除去以上兩個例子以外,其實 eGPU 也可以為配備了多台顯示器的 Mac 的提升圖形性能。當我們的工作需要使用外接顯示器 (Multiple Present Deivces) 時,dGPU 或 iGPU 的性能將會受到影響。比如一台典型的 MacBook Pro 15寸,物理解析度為 2880*1800,面板為 8bit 色彩,每秒 60 幀。那麼一秒鐘的理論數據量可以這樣計算 (2880*1800*60*1*10*3)/8=1.08GB/s。而如果增添一台 5K 顯示器,物理解析度為 5120*2880,面板為 10bit 色彩,每秒 60 幀,那麼一秒鐘的理論數據量可以這樣計算 (5120*2880*60*1.2*10*3)/8=3.7GB/s。雖然我們的系統不會傻到每一幀都完全重新渲染計算,但是外接高解析度顯示器對於顯卡的壓力可想而知。而這時,通過使用 eGPU 推動外接顯示器,則可以將這個壓力分散掉。使得每一個外接顯示器上的畫面都能流暢顯示。

▲eGPU with external display

▲Multi-eGPU and Multi-Monitor

下圖是 iMac Pro 的 dGPU Radeon Pro VEGA 64 與 eGPU Radeon VEGA Frontier Edition 之間的LuxMark OpenCL 性能對比。

▲Internal Radeon Pro VEGA 64 OpenCL Benchmark

▲External Radeon VEGA Frontier Edition OpenCL Benchmark

『 iGPU,dGPU 與 eGPU 以及顯示器是如何協同工作的?』

對於 MacBook 系列來說,一般情況下,iGPU 與 dGPU 是互斥的。也就是說在任意一個時間點上,只有一個 GPU 處於活動狀態並連接和推動 MacBook 的內置顯示器,這兩塊 GPU 是沒有什麼交集的。當然在刻意的情況下,可以通過編程手段,在 iGPU 處於活動狀態並推動顯示器的情況下啟動 dGPU 來進行渲染操作。如圖中紅圈表示的錯誤實例一樣。dGPU 進行 Render Drawable 操作,將結果存在 dGPU VRAM 中,然後通過 PCIe 匯流排拷貝至 iGPU 的 VRAM 中,iGPU 再將這個結果繪製到屏幕上。之所以這種方式並不推薦,是因為中間的拷貝操作非常耗時。這裡有一個重要的知識點在於,GPU VRAM 都是私有的 (Private),並不能夠被其他 GPU 直接使用。所以任何渲染的結果都要拷貝到連接顯示器的那個 GPU 的 VRAM 中才能實現最終顯示。不過,如果使用 dGPU 渲染再加上傳輸的開銷所取得的性能能夠比直接使用 iGPU 來的要好,則可以使用這種方法。同樣情況下,eGPU 與 dGPU 或 iGPU 之間的協作也是類似的。當 eGPU 是一個 Headless GPU ,這時我們盡量不要讓它進行 Render 操作,而是應該利用它進行計算操作,把 Render 的工作留給 dGPU 或 iGPU。這樣以來,就減少了 Drawable 數據拷貝的巨大開銷。因為與 eGPU 通訊是通過 Thunderbolt 3 (PCIe 3.0 x4 3.94GB/s,實際峰值只有 2.4-2.6GB/s) 介面來進行的,這比 dGPU 或 iGPU 使用的 x16 (15.8GB/s), x8 (7.88GB/s) 的傳輸速率低很多。總結起來,這裡的指導思想就是減少不必要的數據拷貝,盡量使用直連顯示器的 GPU 來進行 Render 操作。你可以通過在 Mac App Store 下載[Cl!ng]這個軟體來查看各 GPU 帶寬。

[Cl!ng]

鏈接:https://itunes.apple.com/hk/app/cl-ing/id1244392031?l=en&mt=12

▲Drawable, Render and Present

▲Thunderbolt 3 eGPU Bandwidth

▲Thunderbolt 2 eGPU Bandwidth

『iGPU,dGPU 與 eGPU 使用場景分別是什麼?』

這裡我們可以通過一個表格來簡單的說明此問題。iGPU 性能低,能耗低,帶寬相對高。dGPU 性能中等,能耗中能,帶寬最高。eGPU 性能高,能耗高,但是帶寬最低。所以,我們可以根據這些信息分析出 GPU 使用的最佳方案。比如網頁瀏覽,文本處理這些工作,使用 iGPU 足夠。而做些 VLog,短視頻剪輯或效果渲染,則使用 dGPU。如果需要大量的並行計算,或是需要渲染複雜畫面,則考慮使用 eGPU。

▲GPU Type Features

『eGPU 以及配套設備該如何選擇?』

External GPU Buyer』s Guide: 2018 Best eGPU Enclosures Reviewed - eGPU.io 有非常好的一個設備選購指南,根據你的機型,預算,以及審美情趣和用途不同,你都能在這裡發現適合自己的 eGPU 裝備。我在這裡多說幾句,在 macOS 下,盡量選擇使用 AMD 的 GPU,這樣會將兼容性問題降到最低。NVIDIA Pascal 系列 GPU 雖然可以在 macOS 下作為 eGPU 使用,但是由於驅動問題以及系統兼容性,會導致性能不符合預期以及系統不穩定性增加。當然,如果你預算不多,且家裡有閑置的 ATX 電源等設備,則你可以考慮 DIY eGPU 設備,通過購買成品的 Thunderbolt 3 核心轉接卡,和顯卡 PCIe 底座等來完成。

External GPU Buyer』s Guide: 2018 Best eGPU Enclosures Reviewed - eGPU.io

鏈接:http://egpu.io/external-gpu-buyers-guide-2018/

▲DIY eGPU

『非 Thunderbolt 3 的 Mac 可以使用 eGPU 么?』

可以,Apple 從 macOS 10.13.4 正式支持 eGPU 以後,屏蔽了老型號 Mac 通過 Thunderbolt 1/2 使用 eGPU 的可能。不過這是一個軟體屏蔽,我們只需要通過修改 AppleGPUWrangler 這個內核擴展來實現。簡單的說就是修改二進位文件去掉屏蔽。好在該工作目前已經完全自動化,請參考下面的鏈接。

GitHub - mayankk2308/purge-wrangler: Enable AMD+NVIDIA eGPUs on Thunderbolt 1/2/3 Macs on macOS。

鏈接:https://github.com/mayankk2308/purge-wrangler

『Mac 對於 eGPU 的連接方式有什麼要求嗎?』

這是一個很細節的問題。不過也是一個容易被廣大 eGPU 用戶忽略的問題。雖然 Mac 都有不只一個 Thunderbolt 介面,但並不是每一個介面都能夠讓 eGPU 性能最大化。這裡先以 Mac Pro Late-2013 為例。如圖所示:我么可以觀察圖中間靠右的部分,也就是 PCIe Switch。這是一塊 PLX 的 PCIe 橋接器。可以將從 CPU 直接連接的 PCI 3.0 x8 帶寬拆分為三個 2.0 x4 和一個 2.0 x1 通道。三個 2.0 x4 分配給了三塊 Thunderbolt Alpha Ridge 晶元。每個晶元提供兩個 Thunderbolt 2 介面。這就是 Mac Pro 為何能在只有 48條 PCIe 3.0 通道的情況下提供三組多達六個 Thunderbolt 2 介面的秘密所在。如果你仔細觀察,會發現三組 Thunderbolt 2 中有一組帶有細微不同。這是因為 Thunderbolt Bus 0 中還帶有 HDMI 輸出 (參見 https://support.apple.com/en-us/HT202801)。所以,我們在使用 eGPU 時,應該盡量讓他連接到一個獨佔的 Thunderbolt Bus 上以便獲取最大帶寬。所以對於擁有多於兩個 Thunderbolt 3 介面的 Mac 來說,看待這個介面要有一個組的概念。也就是兩兩一組,eGPU 包括外置 SSD 等高性能部件盡量不要同時接入同一組的兩個 Thunderbolt 介面中。這也是為什麼我一再強調盡量避免選擇帶有很多外部介面,如 USB,SATA 這類的 eGPU 盒子,這些介面都會搶佔帶寬。另外,還需注意的是,比如某些 Mac 的左右兩邊 Thunderbolt 介面速率不同,這裡一定要將 eGPU 等高性能設備接入到速率高的介面中。具體是哪些型號,需要你自行查閱 Apple 官方文檔。還有,根據硬體設計不同,某些 Mac 的 Thunderbolt 晶元所連接的 PCIe 匯流排不是直接從 CPU 而來,而是通過 PCH (南橋) 提供的 PCIe 匯流排而來。這樣設計的 Mac 在使用 eGPU 時性能也會受到影響。因為 PCH 擔負著連接各類外設的重任,且它與 CPU 之間往往是通過一個被稱作 DMI 的匯流排連接 (等同於 PCIe 3.0 x4 速率),所以對於這類 Mac,eGPU 的帶寬損失也應該考慮在內。

▲Mac Pro 2013 Sytem Block Diagram

『Mac 可否使用多個 eGPU?』

可以。一般來說,有幾個 Thunderbolt 介面就可以使用幾個 eGPU。由於硬體限制,我目前在 iMac Pro 上試驗過兩個 eGPU 同時工作。而在 Mac Pro 上,國外曾經有用戶使用過四個 eGPU 同時工作。但是請注意,一個 Thunderbolt 介面,一般只允許一個 eGPU 連接。

▲Dual eGPUs

『軟體對於 eGPU 的支持如何?』

雖然 macOS 目前已經對於 eGPU 有了完整支持。但是應用程序對於 eGPU 的利用還需要廣大開發者的共同努力才能完成。目前對於一些專業應用程序,如 FCPX,Adobe Series,Maya,AutoCAD,AVID Protools,BMD DaVinci Resolve 等,基本都不同程度的支持 eGPU 來獲取更高的性能。這需要你查閱軟體文檔或諮詢開發商。這一點其實得益於他們早先對於多 GPU Mac 的天然支持。但是還有很多應用程序,需要進行修改才能利用 eGPU 的額外性能。Apple 在這裡都提供了完整文檔給開發者。如果你迫切需要某個應用程序支持 eGPU,不妨直接諮詢開發者提出相關建議。

寫在最後,Intel 的 Thunderbolt 技術目前也在持續的迭代更新。2018年隨著新款 MacBook Pro 上市,這代的 MacBook Pro 就使用了最新的,被稱為 Titan Ridge 的 Thunderbolt 晶元。這塊晶元在 Alpha Ridge 前輩的基礎上,提供了直接的 USB 3.1 支持,也就是說,利用新晶元,可以不用再使用以前外掛的方式來實現 USB 的功能。並且,這款晶元將 DP 的版本提升至 DP 1.4,以便實現 8K 10bit 60Hz (DSC 壓縮) 輸出。目前,這款晶元也已經出現在了 eGPU 設備中,那就是 Blackmagic eGPU。不過,相信用不了多少時間,我們也會在其他諸如 Thunderbolt Dock 設備中看到它的身影。

參考文檔:

1. Developer.apple.com. (2018). *About External GPUs | Apple Developer Documentation*. [online] Available at:https://developer.apple.com/documentation/metal/fundamental_components/macos_devices/about_external_gpus?language=objc[Accessed 13 Aug. 2018].

2. Intel? ARK (Product Specs). (2018). *Intel? JHL7540 Thunderbolt? 3 Controller Product Specifications*. [online] Available at:https://ark.intel.com/products/97400/Intel-JHL7540-Thunderbolt-3-Controller[Accessed 13 Aug. 2018].

3. Broadcom.com. (2018). *PEX 8747*. [online] Available at:https://www.broadcom.com/products/pcie-switches-bridges/pcie-switches/pex8747[Accessed 13 Aug. 2018].

4. eGPU.io. (2018). *Late 2013 Mac Pro System Block Diagram*. [online] Available at:https://egpu.io/forums/desktop-computing/late-2013-mac-pro-system-block-diagram[Accessed 13 Aug. 2018].

5. eGPU.io. (2018). *External GPU Buyer』s Guide: 2018 Best eGPU Enclosures Reviewed*. [online] Available at:https://egpu.io/external-gpu-buyers-guide-2018[Accessed 13 Aug. 2018].

6. GitHub. (2018). *mayankk2308/purge-wrangler*. [online] Available at:https://github.com/mayankk2308/purge-wrangler[Accessed 13 Aug. 2018].

7. En.wikipedia.org. (2018). *PCI Express*. [online] Available at:https://en.wikipedia.org/wiki/PCI_Express[Accessed 13 Aug. 2018].

8. En.wikipedia.org. (2018). *DisplayPort*. [online] Available at:https://en.wikipedia.org/wiki/DisplayPort[Accessed 13 Aug. 2018].

9. En.wikipedia.org. (2018). *Thunderbolt (interface)*. [online] Available at:https://en.wikipedia.org/wiki/Thunderbolt_(interface)[Accessed 13 Aug. 2018].

10. K.kramerav.com. (2018). *Bandwidth calculator - Kramer Electronics*. [online] Available at:https://k.kramerav.com/support/bwcalculator.asp[Accessed 13 Aug. 2018].

(完)

★求留言、求分享、求關注、求打賞★


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 相機筆記 的精彩文章:

小米發布2款筆記本 其中1個配置藏坑
尼康新500曝光 這些相機、鏡頭馬上達到「戰場」

TAG:相機筆記 |