0
因?yàn)樯弦淮抿旪?765G 的騷操作,在大家心目當(dāng)中,Google Pixel 系列算是斷更一代。而 Pixel 6 系列就不同了,有 Google 自研 SoC——Google Tensor(Tensor 是張量的意思,名字就很 AI,很ML)、追上時(shí)代的相機(jī)硬件,也有相對(duì)厚道的價(jià)格。
重回旗艦市場(chǎng)的計(jì)算攝影大佬,終于肯用現(xiàn)代的 CMOS 了!機(jī)圈立即奔走相告,直到國(guó)外用戶拿到真機(jī),Anandtech 放出 Google Tensor 的測(cè)試成績(jī)和分析……
在不改變 Anandtech 原意的情況下,我們對(duì)這顆如此重要和有趣的 SoC 的內(nèi)容進(jìn)行整理和編譯,原文 https://www.anandtech.com/print/17032/tensor-soc-performance-efficiency
Google 表示 Google Tensor 是邁向新型工作負(fù)載探索之旅的起點(diǎn),現(xiàn)有芯片方案無(wú)法實(shí)現(xiàn)他們說(shuō)的目標(biāo)。憑借多年來(lái)的機(jī)器學(xué)習(xí)研究經(jīng)驗(yàn),Google 把 Tensor 做成一款以機(jī)器學(xué)習(xí)作為差異化的 SoC,據(jù)說(shuō)其讓 Pixel 能實(shí)現(xiàn)很多獨(dú)特的新功能。
關(guān)于 Google Tensor 的第一個(gè)爭(zhēng)議是,它是全自研?還是魔改(半定制)?這里主要看你對(duì) “自研” 的定義,Google 和三星看似密切的合作,模糊了傳統(tǒng)的自研和半定制之間的界限。
在 Google 內(nèi)部, Google Tensor 代號(hào)是 GS101,可能是 Google SoC 或 Google Silicon 的意思。而之前爆料說(shuō)的 Whitechapel(白教堂),還沒(méi)有任何證據(jù)表明其是真實(shí)存在的芯片。
而 Google Tensor 基本遵循三星 Exynos 的命名規(guī)則,其 ID 是“0x09845000”,拆解后能看到絲印是 S5P9845(編者:原文發(fā)布之初,認(rèn)為 ID 對(duì)應(yīng) S5E9845,但經(jīng) TechInsights 拆解,確認(rèn)是 S5P9845)。作為參考,三星 Exynos 2100 的 ID 是 S5E9840,Exynos 1080 是 S5E9815。
幾年前就有報(bào)道說(shuō)三星開始提供半定制的芯片服務(wù),當(dāng)時(shí)就有三星與思科、Google 的合作消息。ETNews 在 2020 年 8 月的文章中提到,三星會(huì)根據(jù)客戶需求提供“定制”技術(shù)和功能,甚至從芯片設(shè)計(jì)階段就開始提供。
三星不再是簡(jiǎn)單的芯片制造商,而是完全參與芯片設(shè)計(jì),這都可以和 ASIC 設(shè)計(jì)服務(wù)相提并論了。但這是個(gè)很特殊的情況,畢竟三星不但有臺(tái)積電那樣的芯片代工業(yè)務(wù),它也有自己的自研 SoC。
Google Tensor 和三星 Exynos 高度同源,除了大家常說(shuō)的 CPU、GPU、NPU 等高級(jí)結(jié)構(gòu)外,芯片中的基本結(jié)構(gòu)很多都是同源的。雖然紙面上,三星、聯(lián)發(fā)科、海思,甚至高通(只有CPU方面),用的都是 arm 的 Cortex CPU 和 Mali GPU 公版架構(gòu),但它們的底層架構(gòu)還是非常不同的。
Google Tensor 使用的是三星 Exynos 的框架,不但有相同的時(shí)鐘和電源管理架構(gòu),它們的存儲(chǔ)控制器、外部接口的 PHY IP 等高級(jí)塊,甚至連 ISP 和媒體編解碼器等較大的 IP 功能塊都很相似。有趣的是, Github 上已經(jīng)有 GS101 的公開信息,可以 1:1 地比較它和 Exynos 的結(jié)構(gòu)組成。
不過(guò),雖然用了 Exynos 的基礎(chǔ)模塊和框架,但 SoC 的定義確實(shí)由 Google 控制,結(jié)構(gòu)和 IP 塊之間的連接設(shè)計(jì)上,Google Tensor 和三星 Exynos 都是不同的。
例如 Exynos 上,CPU 是用總線連起來(lái)的,而 Google Tensor 的 CPU 集群是被集成在一個(gè)更大的 CCI 里面。從外部看,可能是用了不同的總線設(shè)計(jì),也可能是完全不同的 IP。另外,像內(nèi)存控制器的連接方式,它們也是不太一樣的。
單看 CPU 就知道 Google Tensor 的特殊之處,2x X1 + 2x A76 + 4x A55,這個(gè)“2+2+4”結(jié)構(gòu)在三星 Exynos 9820 和 Exynos 990 都出現(xiàn)過(guò)。但當(dāng)今 Android 旗艦 SoC 中, 1+3+4 才是絕對(duì)的主流。而且敢堆 2 顆 X1 的,僅 Google 一家。
理論上有兩顆 X1 超大核,其 CPU 多核性能會(huì)比單顆 X1 的產(chǎn)品更強(qiáng)。而頻率上,Google Tensor 的 X1 都是 2.8GHz,略低于驍龍 888 的 2.84GHz 和 Exynos 2100 的 2.91Hhz。此外,Google 還和驍龍888 一樣給了 1MB L2 緩存,比 Exynos 2100 的 512KB 殘血 X1 更猛。
大核(編者:你喜歡叫中核也行)這邊,Google 選擇了古早的 A76 架構(gòu),這是件很有爭(zhēng)議性的事(2.25GHz,256KB 的 L2 緩存)。畢竟這并不合理,因?yàn)?A77 和 A78 的性能和能效比都更高。連 Anandtech 都沒(méi)從 Google 那里得到明確的解釋。
他們猜測(cè)可能是幾年前設(shè)計(jì)芯片的時(shí)候,三星手上也沒(méi)有更新的 IP 供 Google 選擇。也可能是在超大核換成X1 的時(shí)候,沒(méi)有時(shí)間連大核也一起換了。但 Google 應(yīng)該不是特意選用 A76 的,因?yàn)閺南旅娴臏y(cè)試可以發(fā)現(xiàn),A76 真的是跟不上時(shí)代了。
小核這邊,4 個(gè) 1.8GHz 的 A55。Google 選擇了 128KB 的 L2 緩存,而不是三星 Exynos 自己用的 64KB,這讓這個(gè) CPU 更像驍龍888 了。但比較奇怪的是,Google 把集群的 L3 緩存頻率和 A55 綁定,這會(huì)導(dǎo)致延遲和功耗問(wèn)題。另外,這也和 Exynos 2100 的 L3 頻率是不同的。
Google Tensor 的 GPU 是 Mali- G78 MP20,規(guī)模僅次于麒麟 9000 的 G78 MP24(編者:G78 的極限)。大家最開始以為 Google 會(huì)用低點(diǎn)的頻率來(lái)提升能效比。但結(jié)果 Google 竟然把著色器頻率推到 845MHz,把 tiler 和 L2 頻率推到 996MHz,簡(jiǎn)直癲狂。另外,它也是第一個(gè)用上 G78 分離頻率特性的產(chǎn)品。
作為參考,Exynos 2100 的 G78 MP14 也“只是” 854MHz,后者的峰值功耗已經(jīng)很高了。結(jié)果 Google 增加 42% 的核心,卻依然維持高頻。因此它的峰值性能很讓人期待,但峰值功耗也會(huì)很猛。而內(nèi)存控制器似乎和 Exynos 2100 相同,支持 4x16bit 的 LPDDR5,理論帶寬 51.2 GB/s。
它也用了 8MB 的系統(tǒng)緩存,但還不清楚是否用了和三星 Exynos 2100 一樣的 IP,因?yàn)樗鼈兊募軜?gòu)和行為方式都不太一樣。Google 大量使用 SLC 來(lái)提升 SoC 性能(包括他們自己的定制模塊)。這個(gè) SLC 允許自分區(qū),將 SRAM 專門分給 SoC 上特定的 IP 塊,使它們?cè)诓煌美?,能?duì)全部或部分緩存進(jìn)行獨(dú)占訪問(wèn)。
大家說(shuō) SoC 集成的 ISP 時(shí),經(jīng)常把它們描述為單個(gè) IP。但實(shí)際上,ISP 是不同的專業(yè) IP 塊的組合,每個(gè) IP 塊處理成像管線中的不同任務(wù)。而 Google Tensor 非常有趣,因?yàn)樗鼘⑷怯迷?Exynos 芯片上的一些片段整合到了一起,同時(shí)還將自己開發(fā)的定制模塊整合到了流水線中 —— 正如 Google 在展示 SoC 時(shí)所說(shuō)的那樣。
成像系統(tǒng)部分和 Exynos 是一樣的,如相位檢測(cè)處理單元、反差對(duì)焦處理單元、圖像縮放器、畸變校正處理塊和紋理遮擋函數(shù)處理塊等。比 Exynos 少的部分,可能是三星的一些圖像后處理模塊。
谷歌在 ISP 中加入自己的 3AA 模塊(自動(dòng)曝光,自動(dòng)白平衡,自動(dòng)對(duì)焦) ,以及一對(duì)自己的時(shí)域降噪 IP 模塊(用于對(duì)齊和合并圖像)。這些很可能就是谷歌所說(shuō)的那些有助于加速圖像處理的模塊,這些是 Pixel 系列計(jì)算攝影的一部分,毋容置疑地地代表了圖像處理流水線中非常重要的部分。
TPU 是讓 Google Tensor 被稱為 Tensor 的地方。Google 已經(jīng)用自研 TPU 好幾年了,在驅(qū)動(dòng)層面,Google 把 Tensor 的 TPU 稱作 Edge TPU( 端側(cè)邊緣 TPU)。這是相當(dāng)有趣的信號(hào),因?yàn)樗鼞?yīng)該和 Google 2018年發(fā)布的 Edge TPU 有關(guān),后者是 Google 為邊緣推理而設(shè)計(jì)的 ASIC 芯片(官網(wǎng) cloud.google.com/edge-tpu)。
當(dāng)年的 Edge TPU 宣稱在 2W 功耗下可以提供 4TOPS 的算力,但 Google 并未公布 Tensor 的 TPU 性能指標(biāo),但是在一些測(cè)試中可以看到它的最大功率是 5W 左右。因此如果它們確實(shí)是有關(guān)聯(lián)的,考慮到這幾年的制程和 IP 上的進(jìn)步, Google Tensor 的 TPU 性能應(yīng)該有明顯提升了。
這個(gè) TPU 是谷歌芯片團(tuán)隊(duì)的驕傲,它正在使用最新的機(jī)器學(xué)習(xí)處理架構(gòu),這個(gè)架構(gòu)針對(duì) Google 內(nèi)部運(yùn)行機(jī)器學(xué)習(xí)的方式進(jìn)行過(guò)優(yōu)化,并且表示它可以允許開發(fā)新的、獨(dú)特的用例,這是 Google 做定制 SoC 的主要目標(biāo)和出發(fā)點(diǎn)之一。在后面的測(cè)試中,這個(gè) TPU 的性能指標(biāo)確實(shí)也是令人印象深刻的。因?yàn)?TPU 的信息不多,我們只能基于它的驅(qū)動(dòng)程序做簡(jiǎn)單猜測(cè),它可能包含四核心的 Cortex-A32 CPU。
在媒體編碼器方面,Google Tensor 使用了三星的多功能編解碼器(與 Exynos 系列同款),還有一個(gè)看起來(lái)像是用于 AV1 解碼的自研 IP 塊。這有點(diǎn)奇怪,因?yàn)槿堑男麄髦校?Exynos 2100 是有 AV1 解碼功能的,而且這個(gè)功能貌似也在內(nèi)核驅(qū)動(dòng)程序里面。但在 Galaxy S21 系列中,這個(gè) AV1 解碼功能從未在 Android 的層面實(shí)現(xiàn)過(guò)。
谷歌加入的這個(gè)專用的 AV1 解碼器被他們稱做 “ BigOcean”,它能讓 Android 系統(tǒng)具備 AV1 硬解能力。但非常奇怪的是,它真的就只負(fù)責(zé) AV1, 其他格式編解碼還是由三星的 MFC 負(fù)責(zé)。
Google Tensor 的音頻子系統(tǒng)也不同,Google 用自己設(shè)計(jì)的 IP 塊代替了三星的低功耗音頻解碼子系統(tǒng),它們可以在無(wú)需全部喚醒 SoC 的情況下進(jìn)行低功耗的音頻播放。我們認(rèn)為這部分也是當(dāng)協(xié)處理器用的,這也是 Google Tensor 和 Exynos 不同的地方。
Google 還用了一種稱為 Emerald Hill 的硬件內(nèi)存壓縮器,對(duì)內(nèi)存頁(yè)面進(jìn)行 LZ77 壓縮加速,反過(guò)來(lái)也可以用來(lái)加速交換中的 ZRAM 的卸載過(guò)程?,F(xiàn)在還不確定 Pixel 系列是否已經(jīng)啟用這個(gè)模塊,但能確認(rèn)在“ /sys/block/zram0/comp_algorithm”目錄中有“l(fā)z77eh”。作為課外資料,三星早在 5 年前,就在 SoC 里集成了類似的硬件壓縮 IP 模塊。但出于某些原因,這些模塊從未被啟用過(guò),也許是能效比并沒(méi)有他們預(yù)想中的高。
圖源PBKreviews
另外,Google 還用三星的 Exynos 基帶,做出了第一臺(tái)非高通的毫米波手機(jī)。Pixel 6 系列用的是三星的 Exynos 5123 基帶(譯者:為遵循國(guó)內(nèi)的習(xí)慣,這里把調(diào)制解調(diào)器稱為基帶)。三星在 2019 年就提到自己的毫米波射頻和天線模塊,說(shuō) 2020 年會(huì)出現(xiàn)在量產(chǎn)機(jī)上(不知道當(dāng)時(shí)是否計(jì)劃讓 Pixel 6 在 2020 年上市)。Pixel 6 系列的峰值速度可以達(dá)到 3200Mbps,但很多測(cè)試中,它的網(wǎng)速只有高通產(chǎn)品的一半左右。
雖然是同一個(gè)基帶,但它不是像 Exynos 2100 那樣集成在 SoC 里,而是外掛的??赡苁且?yàn)?Google Tensor 的 GPU 和 CPU 規(guī)模太大了,而且 TPU 的規(guī)模也是未知數(shù)。畢竟就算是把基帶外掛出去,Google Tensor 的規(guī)模也是相當(dāng)大了,即便是和對(duì)比 Exynos 2100 的情況下。
總的來(lái)看,Google 確實(shí)設(shè)計(jì)和定義了 Tensor ,同時(shí)有很多 Google 特有的設(shè)計(jì),是整體的芯片上的差異化。但從更底層的角度看,Tensor 和 Exynos 有很多共通之處,用了很多三星特有的基礎(chǔ)模塊,因此叫它“半定制”或許會(huì)更合適。
測(cè)試中,Google Tensor 的 DRAM 延遲較高,還不如 Exynos 2100,和驍龍888 比就更差了。Google 改過(guò)了內(nèi)存控制器,它會(huì)根據(jù)負(fù)載和內(nèi)核的內(nèi)存失速百分比來(lái)控制 MC 和 DRAM 速度,這部分是和三星不同的,其實(shí)際利用率也不如三星的內(nèi)存控制器高?,F(xiàn)在不知道是 CPU 的問(wèn)題,還是整個(gè) SoC 內(nèi)部的問(wèn)題,但這確切地影響了下面的測(cè)試。
它的 L3 延遲也相當(dāng)高,比 Exynos 2100 和驍龍 888 高得多。Google 沒(méi)有給 DSU 和 CPU L3 緩存設(shè)定特定的頻率,而是把它和 A55 小核的頻率關(guān)聯(lián)。奇怪的是,即便 X1 或 A76 滿載,A55 和 L3 卻在低頻 “摸魚”。同樣情況下 Exynos 2100 和驍龍 888 都是會(huì)提高 L3 頻率的。
在系統(tǒng)緩存測(cè)試中,能看到 11-13MB 的延遲情況 (1 MB L2 + 4 MB L3 + 8 MB SLC) ,在正常的內(nèi)存訪問(wèn)中,Tensor 也是比 Exynos 要慢的,可能和被改過(guò)的個(gè)別緩存管線有關(guān)。
因?yàn)?L3 和 A55 的頻率捆綁,且頻率高,所以 Google Tensor 的 A55 小核是幾個(gè) SoC 里 L3 延遲最低的,彷如沒(méi)有異步時(shí)鐘橋一般。
CPU 部分,Google Tensor 更像是驍龍 888,而不是 Exynos 2100。雖然 Google Tensor 的 L2 緩存是 Exynos 2100 的 2 倍,但頻率低了 3.7%(110MhHz)。
Tensor 的弱點(diǎn)是內(nèi)存延遲,導(dǎo)致 SPEC 測(cè)試中很多子項(xiàng)目都比 驍龍888 和 Exynos 2100 慢,但能耗卻更高(CPU 在干等內(nèi)存)。SPEC 總分上,Tensor 的表現(xiàn)比 Exynos 2100 略差,對(duì)比驍龍888 的落后幅度達(dá)到 12.2% ,由于跑完測(cè)試的時(shí)間更長(zhǎng),最終耗電還多了 13.8% 。折算回來(lái),相對(duì)驍龍888 的差距應(yīng)該是 1.4% 左右。
它也有和 Exynos 2100 一樣的降頻問(wèn)題,只是相對(duì)沒(méi)有那么嚴(yán)重。如果冷卻得當(dāng),性能會(huì)高 5%-9% 左右(上圖的測(cè)試結(jié)果是在 11 度的環(huán)境下得到的)。
可憐的 A76 大核,驍龍 888 的 A78 比它強(qiáng) 46%,還更省電,實(shí)際 IPC 差距在 34%,這倒符合兩個(gè)構(gòu)架之間的差距。如果真是為了省電,完全可以做個(gè)低頻的 A78,但結(jié)果 Google 放了兩顆頻率又高、又耗電、性能還不行的 A76,只能推斷 Google 是沒(méi)得選,而不是有意而為之。
越接近右下角,能效比越低;越接近左上角,能效比越高 ↑
A55 小核這邊也不行,性能只是比同頻的驍龍 888 的 A55 高 11%(感謝 L3 和 SLC),但卻幾乎是 2 倍的功耗,儼然就是繼承了 Exynos 高功耗 A55 的血統(tǒng),能效比甚至比自己的 A76 大核還拉胯??纯绰?lián)發(fā)科天璣 1200 的 A55,再看看 A14 的能效核心,這真是個(gè)殘酷的世界。
Google Tensor 因?yàn)槔璧?A76 性能表現(xiàn),就算有 2 顆 X2 都無(wú)力回天,拖低了整體分?jǐn)?shù)。X1 本身也比對(duì)手稍慢一些,大部分時(shí)間的能效比都和 Exynos 2100 的 X1 一致。但 A76 實(shí)在落后時(shí)代太多了(無(wú)論是性能還是能效比),而 A55 又繼承三星低能效的傳統(tǒng),一言難盡就是了。
GPU 這邊規(guī)模大,頻率高,但 3DMark Wild Life 測(cè)試的峰值性能只比 Exynos 2100 高 21%。在 GFX Bench 的 Aztec 場(chǎng)景測(cè)試中,領(lǐng)先 Exynos 2100 14%,小幅領(lǐng)先驍龍888。雖然采用了分頻設(shè)計(jì),但貌似瓶頸在 GPU 的其他地方。
Tensor 的 GPU 峰值功率高達(dá) 9-10W,手機(jī)一跑就降頻(一輪測(cè)試都沒(méi)跑完啊……),拖低了整體功耗,所以才會(huì)有 7.28 W 的平均功耗。Pixel 6 系列沒(méi)有熱管,散熱配置和機(jī)身結(jié)構(gòu)更像是 iPhone,而不是猛堆散熱的安卓旗艦。它跑起來(lái)時(shí),左側(cè)的 SoC 45 度,但右側(cè)只有 30-33 度,散熱確實(shí)是弱。
讓人不解的是,今年這批 SoC 都設(shè)定了高得不切實(shí)際的 GPU 頻率,一跑就降頻??赡苁菫榱藨?yīng)對(duì)突發(fā)的 GPU 負(fù)載?或者是其他什么原因?但無(wú)論怎么樣,實(shí)際能效比是受累了。
這是 Google Tensor 挽回顏面的地方。MLPerf 測(cè)試中,Pixel 是在 NNAPI 跑的,其他廠商是各自的庫(kù),高通是 SNPE(最近優(yōu)化了 MLPerf 1.1,提升了成績(jī))、三星是 EDEN,聯(lián)發(fā)科是 Neuron,而蘋果沒(méi)有 coreML 加速,所以吃虧。
在圖像分類、目標(biāo)檢測(cè)和圖像分割工作負(fù)載中, Tensor 成績(jī)低于高通,但強(qiáng)于三星。而在語(yǔ)言處理(MobileBERT 模型),Google Tensor 提供了驍龍 888 3 倍的性能,推理部分強(qiáng)得很。Google 在宣傳里,確實(shí)也提到過(guò)實(shí)時(shí)轉(zhuǎn)錄、翻譯等使用場(chǎng)景是其差異化所在。
還沒(méi)發(fā)布的 GeekBench ML 測(cè)試,用是 TensorFlow 模型,代表的是 GPU 的機(jī)器學(xué)習(xí)性能。這時(shí)候 Google Tensor 就弱于 Exynos 2100。如果用 NNAPI 模型,此時(shí)是 CPU+GPU+NPU 的混合工作,Google Tensor 就可以大幅領(lǐng)先驍龍 888。
除了絕對(duì)性能,跑 AI 測(cè)試時(shí),Pixel 6 Pro 的整機(jī)功耗和 Exynos 2100 的 Galaxy S21 Ultra 接近。單獨(dú)進(jìn)行推理任務(wù)時(shí), Exynos 2100 的爆發(fā)功率達(dá)到 14W,驍龍 888 也有 12W。但因?yàn)?Google Tensor 的 AI 性能更高,所以最終能效比要更高一些。
不過(guò) Google 還沒(méi)有計(jì)劃推出相關(guān)的 SDK 讓開發(fā)者去更好地利用這顆強(qiáng)大的 TPU 。但再看看三星,它的 NPU 發(fā)布都 2 年了,現(xiàn)在都沒(méi)有 SDK…… 現(xiàn)在 TPU 的強(qiáng)大性能,主要集中體現(xiàn)在官方 app 里,像是給攝像頭加入更多的機(jī)器學(xué)習(xí)功能,以及各種翻譯功能。
Google 表示,他們搞自研 SoC 的主要原因是現(xiàn)有的 SoC 在機(jī)器學(xué)習(xí)上的性能和能效比太低。而 Tensor 的機(jī)器學(xué)習(xí)性能和能效,被用來(lái)支撐新的用例和體驗(yàn),例如我們?cè)?Pixel 6 系列上看到的很多機(jī)器學(xué)習(xí)特性。像是實(shí)時(shí)轉(zhuǎn)錄、實(shí)時(shí)翻譯和圖像處理等算法,所有這些都是運(yùn)行在 Tensor 的 TPU 上的。
雖然 Google 可能不想承認(rèn)或者談?wù)?,?Google Tensor 確實(shí)就是和三星合作的產(chǎn)物,大部分都源自 Exynos,并繼承了三星在能效比方面的弱點(diǎn)。CPU 被古老的 A76 拖后腿,規(guī)模龐大的 GPU 被散熱拖后腿,但 TPU 確實(shí)表現(xiàn)很好,特別是自然語(yǔ)言處理方面,遠(yuǎn)遠(yuǎn)拋離所有競(jìng)品。
但總的來(lái)說(shuō),我們認(rèn)為 Google 已經(jīng)通過(guò) Tensor 實(shí)現(xiàn)了最初的目標(biāo)。我們不知道 Google 下一代的 SoC 會(huì)走什么樣的路線,但我們很有興趣等等看。
雷鋒網(wǎng)雷鋒網(wǎng)雷鋒網(wǎng)
雷峰網(wǎng)原創(chuàng)文章,未經(jīng)授權(quán)禁止轉(zhuǎn)載。詳情見(jiàn)轉(zhuǎn)載須知。