Google自研行動電話SoC深度揭秘:翻車了?

因為上一代用驍龍 765G 的騷操作,在大家心目當中,Google Pixel 系列算是斷更一代,

Pixel 6 系列就不同了,有 Google 自研 SoC——Google Tensor(Tensor 是張量的意思,名字就很 AI,很ML)、追上時代的相機硬件,也有相對厚道的價格,

重回旗艦市場的計算攝影大佬,終于肯用現代的 CMOS 了!機圈立即奔走相告,直到國外用戶拿到真機,Anandtech 放出 Google Tensor 的測試成績和分析……

在不改變 Anandtech 原意的情況下,我們對這顆如此重要和有趣的 SoC 的內容進行整理和編譯。

全自研還是魔改(半定制)?

Google 表示 Google Tensor 是邁向新型工作負載探索之旅的起點,現有芯片方案無法實現他們說的目標,憑借多年來的機器學習研究經驗,Google 把 Tensor 做成一款以機器學習作為差異化的 SoC,據說其讓 Pixel 能實現很多獨特的新功能,

關于 Google Tensor 的第一個爭議是,它是全自研?還是魔改(半定制)?這里主要看你對 “自研” 的定義,Google 和三星看似密切的合作,模糊了傳統的自研和半定制之間的界限。

在 Google 內部, Google Tensor 代號是 GS101,可能是 Google SoC 或 Google Silicon 的意思。而之前爆料說的 Whitechapel(白教堂),還沒有任何證據表明其是真實存在的芯片。

而 Google Tensor 基本遵循三星 Exynos 的命名規則,其 ID 是“0x09845000”,拆解后能看到絲印是 S5P9845(編者:原文發布之初,認為 ID 對應 S5E9845,但經 TechInsights 拆解,確認是 S5P9845),作為參考,三星 Exynos 2100 的 ID 是 S5E9840,Exynos 1080 是 S5E9815,

幾年前就有報道說三星開始提供半定制的芯片服務,當時就有三星與思科、Google 的合作消息,ETNews 在 2020 年 8 月的文章中提到,三星會根據客戶需求提供“定制”技術和功能,甚至從芯片設計階段就開始提供。

三星不再是簡單的芯片制造商,而是完全參與芯片設計,這都可以和 ASIC 設計服務相提并論了。但這是個很特殊的情況,畢竟三星不但有臺積電那樣的芯片代工業務,它也有自己的自研 SoC,

Google Tensor 和三星 Exynos 高度同源,除了大家常說的 CPU、GPU、NPU 等高級結構外,芯片中的基本結構很多都是同源的,雖然紙面上,三星、聯發科、海思,甚至高通(只有CPU方面),用的都是 arm 的 Cortex CPU 和 Mali GPU 公版架構,但它們的底層架構還是非常不同的,

Google Tensor 使用的是三星 Exynos 的框架,不但有相同的時鐘和電源管理架構,它們的存儲控制器、外部接口的 PHY IP 等高級塊,甚至連 ISP 和媒體編解碼器等較大的 IP 功能塊都很相似。有趣的是, Github 上已經有 GS101 的公開資訊,可以 1:1 地比較它和 Exynos 的結構組成,

不過,雖然用了 Exynos 的基礎模塊和框架,但 SoC 的定義確實由 Google 控制,結構和 IP 塊之間的連接設計上,Google Tensor 和三星 Exynos 都是不同的,

例如 Exynos 上,CPU 是用總線連起來的,而 Google Tensor 的 CPU 集群是被集成在一個更大的 CCI 里面,從外部看,可能是用了不同的總線設計,也可能是完全不同的 IP,另外,像內存控制器的連接方式,它們也是不太一樣的,

性能規格分析

單看 CPU 就知道 Google Tensor 的特殊之處,2x X1 + 2x A76 + 4x A55,這個“2+2+4”結構在三星 Exynos 9820 和 Exynos 990 都出現過。但當今 Android 旗艦 SoC 中, 1+3+4 才是絕對的主流,而且敢堆 2 顆 X1 的,僅 Google 一家,

理論上有兩顆 X1 超大核,其 CPU 多核性能會比單顆 X1 的產品更強。而頻率上,Google Tensor 的 X1 都是 2.8GHz,略低于驍龍 888 的 2.84GHz 和 Exynos 2100 的 2.91Hhz。此外,Google 還和驍龍888 一樣給了 1MB L2 緩存,比 Exynos 2100 的 512KB 殘血 X1 更猛。

大核(編者:你喜歡叫中核也行)這邊,Google 選擇了古早的 A76 架構,這是件很有爭議性的事(2.25GHz,256KB 的 L2 緩存),畢竟這并不合理,因為 A77 和 A78 的性能和能效比都更高,連 Anandtech 都沒從 Google 那里得到明確的解釋,

他們猜測可能是幾年前設計芯片的時候,三星手上也沒有更新的 IP 供 Google 選擇。也可能是在超大核換成X1 的時候,沒有時間連大核也一起換了,但 Google 應該不是特意選用 A76 的,因為從下面的測試可以發現,A76 真的是跟不上時代了,

小核這邊,4 個 1.8GHz 的 A55。Google 選擇了 128KB 的 L2 緩存,而不是三星 Exynos 自己用的 64KB,這讓這個 CPU 更像驍龍888 了,但比較奇怪的是,Google 把集群的 L3 緩存頻率和 A55 綁定,這會導致延遲和功耗問題,另外,這也和 Exynos 2100 的 L3 頻率是不同的,

Google Tensor 的 GPU 是 Mali- G78 MP20,規模僅次于麒麟 9000 的 G78 MP24(編者:G78 的極限),大家最開始以為 Google 會用低點的頻率來提升能效比,但結果 Google 竟然把著色器頻率推到 845MHz,把 tiler 和 L2 頻率推到 996MHz,簡直癲狂。另外,它也是第一個用上 G78 分離頻率特性的產品。

作為參考,Exynos 2100 的 G78 MP14 也“只是” 854MHz,后者的峰值功耗已經很高了,結果 Google 增加 42% 的核心,卻依然維持高頻。因此它的峰值性能很讓人期待,但峰值功耗也會很猛。而內存控制器似乎和 Exynos 2100 相同,支持 4x16bit 的 LPDDR5,理論帶寬 51.2 GB/s,

它也用了 8MB 的系統緩存,但還不清楚是否用了和三星 Exynos 2100 一樣的 IP,因為它們的架構和行為方式都不太一樣。Google 大量使用 SLC 來提升 SoC 性能(包括他們自己的定制模塊),這個 SLC 允許自分區,將 SRAM 專門分給 SoC 上特定的 IP 塊,使它們在不同用例下,能對全部或部分緩存進行獨占訪問,

ISP 與 TPU

大家說 SoC 集成的 ISP 時,經常把它們描述為單個 IP,但實際上,ISP 是不同的專業 IP 塊的組合,每個 IP 塊處理成像管線中的不同任務。而 Google Tensor 非常有趣,因為它將三星用在 Exynos 芯片上的一些片段整合到了一起,同時還將自己開發的定制模塊整合到了流水線中 —— 正如 Google 在展示 SoC 時所說的那樣,

成像系統部分和 Exynos 是一樣的,如相位檢測處理單元、反差對焦處理單元、圖像縮放器、畸變校正處理塊和紋理遮擋函數處理塊等。比 Exynos 少的部分,可能是三星的一些圖像后處理模塊,

谷歌在 ISP 中加入自己的 3AA 模塊(自動曝光,自動白平衡,自動對焦) ,以及一對自己的時域降噪 IP 模塊(用于對齊和合并圖像)。這些很可能就是谷歌所說的那些有助于加速圖像處理的模塊,這些是 Pixel 系列計算攝影的一部分,毋容置疑地地代表了圖像處理流水線中非常重要的部分,

TPU 是讓 Google Tensor 被稱為 Tensor 的地方。Google 已經用自研 TPU 好幾年了,在驅動層面,Google 把 Tensor 的 TPU 稱作 Edge TPU( 端側邊緣 TPU),這是相當有趣的信號,因為它應該和 Google 2018年發布的 Edge TPU 有關,后者是 Google 為邊緣推理而設計的 ASIC 芯片(官網 cloud.google.com/edge-tpu)。

當年的 Edge TPU 宣稱在 2W 功耗下可以提供 4TOPS 的算力,但 Google 并未公布 Tensor 的 TPU 性能指標,但是在一些測試中可以看到它的最大功率是 5W 左右,因此如果它們確實是有關聯的,考慮到這幾年的制程和 IP 上的進步, Google Tensor 的 TPU 性能應該有明顯提升了,

這個 TPU 是谷歌芯片團隊的驕傲,它正在使用最新的機器學習處理架構,這個架構針對 Google 內部運行機器學習的方式進行過優化,并且表示它可以允許開發新的、獨特的用例,這是 Google 做定制 SoC 的主要目標和出發點之一,在后面的測試中,這個 TPU 的性能指標確實也是令人印象深刻的,因為 TPU 的資訊不多,我們只能基于它的驅動程式做簡單猜測,它可能包含四核心的 Cortex-A32 CPU。

其他模塊

在媒體編碼器方面,Google Tensor 使用了三星的多功能編解碼器(與 Exynos 系列同款),還有一個看起來像是用于 AV1 解碼的自研 IP 塊,這有點奇怪,因為三星的宣傳中, Exynos 2100 是有 AV1 解碼功能的,而且這個功能貌似也在內核驅動程式里面,但在 Galaxy S21 系列中,這個 AV1 解碼功能從未在 Android 的層面實現過,

谷歌加入的這個專用的 AV1 解碼器被他們稱做 “ BigOcean”,它能讓 Android 系統具備 AV1 硬解能力,但非常奇怪的是,它真的就只負責 AV1, 其他格式編解碼還是由三星的 MFC 負責。

Google Tensor 的音頻子系統也不同,Google 用自己設計的 IP 塊代替了三星的低功耗音頻解碼子系統,它們可以在無需全部喚醒 SoC 的情況下進行低功耗的音頻播放。我們認為這部分也是當協處理器用的,這也是 Google Tensor 和 Exynos 不同的地方,

Google 還用了一種稱為 Emerald Hill 的硬件內存壓縮器,對內存頁面進行 LZ77 壓縮加速,反過來也可以用來加速交換中的 ZRAM 的卸載過程,現在還不確定 Pixel 系列是否已經啟用這個模塊,但能確認在“ /sys/block/zram0/comp_algorithm”目錄中有“lz77eh”。作為課外資料,三星早在 5 年前,就在 SoC 里集成了類似的硬件壓縮 IP 模塊,但出于某些原因,這些模塊從未被啟用過,也許是能效比并沒有他們預想中的高。


圖源PBKreviews

另外,Google 還用三星的 Exynos 基帶,做出了第一臺非高通的毫米波行動電話。Pixel 6 系列用的是三星的 Exynos 5123 基帶(譯者:為遵循大陸的習慣,這里把調制解調器稱為基帶),三星在 2019 年就提到自己的毫米波射頻和天線模塊,說 2020 年會出現在量產機上(不知道當時是否計劃讓 Pixel 6 在 2020 年上市),Pixel 6 系列的峰值速度可以達到 3200Mbps,但很多測試中,它的網速只有高通產品的一半左右。

雖然是同一個基帶,但它不是像 Exynos 2100 那樣集成在 SoC 里,而是外掛的。可能是因為 Google Tensor 的 GPU 和 CPU 規模太大了,而且 TPU 的規模也是未知數。畢竟就算是把基帶外掛出去,Google Tensor 的規模也是相當大了,即便是和對比 Exynos 2100 的情況下。

總的來看,Google 確實設計和定義了 Tensor ,同時有很多 Google 特有的設計,是整體的芯片上的差異化,但從更底層的角度看,Tensor 和 Exynos 有很多共通之處,用了很多三星特有的基礎模塊,因此叫它“半定制”或許會更合適,

實際性能表現:不盡如人意

測試中,Google Tensor 的 DRAM 延遲較高,還不如 Exynos 2100,和驍龍888 比就更差了,Google 改過了內存控制器,它會根據負載和內核的內存失速百分比來控制 MC 和 DRAM 速度,這部分是和三星不同的,其實際利用率也不如三星的內存控制器高,現在不知道是 CPU 的問題,還是整個 SoC 內部的問題,但這確切地影響了下面的測試。

它的 L3 延遲也相當高,比 Exynos 2100 和驍龍 888 高得多,Google 沒有給 DSU 和 CPU L3 緩存設定特定的頻率,而是把它和 A55 小核的頻率關聯,奇怪的是,即便 X1 或 A76 滿載,A55 和 L3 卻在低頻 “摸魚”,同樣情況下 Exynos 2100 和驍龍 888 都是會提高 L3 頻率的,

在系統緩存測試中,能看到 11-13MB 的延遲情況 (1 MB L2 + 4 MB L3 + 8 MB SLC) ,在正常的內存訪問中,Tensor 也是比 Exynos 要慢的,可能和被改過的個別緩存管線有關,

因為 L3 和 A55 的頻率捆綁,且頻率高,所以 Google Tensor 的 A55 小核是幾個 SoC 里 L3 延遲最低的,彷如沒有異步時鐘橋一般。

CPU 部分,Google Tensor 更像是驍龍 888,而不是 Exynos 2100,雖然 Google Tensor 的 L2 緩存是 Exynos 2100 的 2 倍,但頻率低了 3.7%(110MhHz)。

Tensor 的弱點是內存延遲,導致 SPEC 測試中很多子項目都比 驍龍888 和 Exynos 2100 慢,但能耗卻更高(CPU 在干等內存)。SPEC 總分上,Tensor 的表現比 Exynos 2100 略差,對比驍龍888 的落后幅度達到 12.2% ,由于跑完測試的時間更長,最終耗電還多了 13.8% 。折算回來,相對驍龍888 的差距應該是 1.4% 左右,

它也有和 Exynos 2100 一樣的降頻問題,只是相對沒有那么嚴重,如果冷卻得當,性能會高 5%-9% 左右(上圖的測試結果是在 11 度的環境下得到的)。

可憐的 A76 大核,驍龍 888 的 A78 比它強 46%,還更省電,實際 IPC 差距在 34%,這倒符合兩個構架之間的差距,如果真是為了省電,完全可以做個低頻的 A78,但結果 Google 放了兩顆頻率又高、又耗電、性能還不行的 A76,只能推斷 Google 是沒得選,而不是有意而為之。


越接近右下角,能效比越低;越接近左上角,能效比越高 ↑

A55 小核這邊也不行,性能只是比同頻的驍龍 888 的 A55 高 11%(感謝 L3 和 SLC),但卻幾乎是 2 倍的功耗,儼然就是繼承了 Exynos 高功耗 A55 的血統,能效比甚至比自己的 A76 大核還拉胯,看看聯發科天璣 1200 的 A55,再看看 A14 的能效核心,這真是個殘酷的世界,

Google Tensor 因為拉胯的 A76 性能表現,就算有 2 顆 X2 都無力回天,拖低了整體分數,X1 本身也比對手稍慢一些,大部分時間的能效比都和 Exynos 2100 的 X1 一致。但 A76 實在落后時代太多了(無論是性能還是能效比),而 A55 又繼承三星低能效的傳統,一言難盡就是了,

GPU 這邊規模大,頻率高,但 3DMark Wild Life 測試的峰值性能只比 Exynos 2100 高 21%,在 GFX Bench 的 Aztec 場景測試中,領先 Exynos 2100 14%,小幅領先驍龍888,雖然采用了分頻設計,但貌似瓶頸在 GPU 的其他地方。

Tensor 的 GPU 峰值功率高達 9-10W,行動電話一跑就降頻(一輪測試都沒跑完啊……),拖低了整體功耗,所以才會有 7.28 W 的平均功耗,Pixel 6 系列沒有熱管,散熱配置和機身結構更像是 iPhone,而不是猛堆散熱的安卓旗艦。它跑起來時,左側的 SoC 45 度,但右側只有 30-33 度,散熱確實是弱。

讓人不解的是,今年這批 SoC 都設定了高得不切實際的 GPU 頻率,一跑就降頻。可能是為了應對突發的 GPU 負載?或者是其他什么原因?但無論怎么樣,實際能效比是受累了。

TPU:極強的推理性能

這是 Google Tensor 挽回顏面的地方,MLPerf 測試中,Pixel 是在 NNAPI 跑的,其他廠商是各自的庫,高通是 SNPE(最近優化了 MLPerf 1.1,提升了成績)、三星是 EDEN,聯發科是 Neuron,而蘋果沒有 coreML 加速,所以吃虧。

在圖像分類、目標檢測和圖像分割工作負載中, Tensor 成績低于高通,但強于三星,而在語言處理(MobileBERT 模型),Google Tensor 提供了驍龍 888 3 倍的性能,推理部分強得很,Google 在宣傳里,確實也提到過實時轉錄、翻譯等使用場景是其差異化所在。

還沒發布的 GeekBench ML 測試,用是 TensorFlow 模型,代表的是 GPU 的機器學習性能。這時候 Google Tensor 就弱于 Exynos 2100。如果用 NNAPI 模型,此時是 CPU+GPU+NPU 的混合工作,Google Tensor 就可以大幅領先驍龍 888。

除了絕對性能,跑 AI 測試時,Pixel 6 Pro 的整機功耗和 Exynos 2100 的 Galaxy S21 Ultra 接近,單獨進行推理任務時, Exynos 2100 的爆發功率達到 14W,驍龍 888 也有 12W。但因為 Google Tensor 的 AI 性能更高,所以最終能效比要更高一些。

不過 Google 還沒有計劃推出相關的 SDK 讓開發者去更好地利用這顆強大的 TPU ,但再看看三星,它的 NPU 發布都 2 年了,現在都沒有 SDK…… 現在 TPU 的強大性能,主要集中體現在官方 app 里,像是給攝像頭加入更多的機器學習功能,以及各種翻譯功能。

總結

Google 表示,他們搞自研 SoC 的主要原因是現有的 SoC 在機器學習上的性能和能效比太低,而 Tensor 的機器學習性能和能效,被用來支撐新的用例和體驗。

例如我們在 Pixel 6 系列上看到的很多機器學習特性。像是實時轉錄、實時翻譯和圖像處理等算法,所有這些都是運行在 Tensor 的 TPU 上的,

雖然 Google 可能不想承認或者談論,但 Google Tensor 確實就是和三星合作的產物,大部分都源自 Exynos,并繼承了三星在能效比方面的弱點。

CPU 被古老的 A76 拖后腿,規模龐大的 GPU 被散熱拖后腿,但 TPU 確實表現很好,特別是自然語言處理方面,遠遠拋離所有競品。

但總的來說,我們認為 Google 已經通過 Tensor 實現了最初的目標。我們不知道 Google 下一代的 SoC 會走什么樣的路線,但我們很有興趣等等看,

0 条回复 A文章作者 M管理員
    暫無討論,說說你的看法吧