A12處理器5萬億次運算怎麼樣?

文章推薦指數: 80 %
投票人數:10人

一句話結論:牛逼,但是和行業頂級水平相比,並無值得稱道之處。

牛逼就不展開說了,手機晶片達成5萬億次運算,吊打一眾競爭對手。

主要說一下為什麼說「並無值得稱道之處」。

首先,5萬億次速度,來自於發布會上介紹神經網絡引擎(NE)中所提到的性能,而非A12的CPU或者GPU性能。

可以看到,PPT用的性能衡量單位是每秒運算數(OPS,Operations per second),而非CPU/GPU通常使用的每秒浮點運算次數(Floating-point operations per second,FLOPS)。

通常來說,說明一款晶片的計算性能的時候,會用FLOPS而不用OPS,除非:

  1. 這款晶片不支持浮點運算,只能用OPS數值來說明整數運算性能;或者整數運算和浮點運算性能不同,需要分開來敘述。

    這種情況會同時分別列出OPS和FLOPS的數值。

其次,NE的數據精度低,合理的猜測為8bit整數。

A12的細節蘋果並未公布,但目前流行的卷積神經網絡算法,在推斷過程中對數據精度並不敏感,所以可以猜測不支持浮點的NE使用INT8(8位整數)進行推斷計算。

例如谷歌第一代TPU,不支持浮點,使用INT8運算。

例如nVIDIA的TensorRT,優化了INT8和FP16的性能。

更具體的技術細節就不展開了,有興趣的可以看看TensorFlow的相關文檔。

那麼,在2018年,一款INT8運算性能達到5T OPS的計算晶片,在業內是什麼水平呢?

先看我們最熟悉的主流桌面CPU:i7-8700K。

i7-8700K是64位處理器,支持AVX2和FMA指令集,六個核心,基準頻率3.7 GHz。

每個核心有3個整數向量運算單元。

也就是說,理想狀態,8700K一個時鐘周期可以完成6(六個核心)×3(3個整數向量單元)×4(一個向量有4個數據)×2(FMA支持一個時鐘周期進行一次加法一次乘法,共計兩次運算)=144次運算。

在3.7GHz的工作頻率下,性能為144*4.3=532.8G OPS。

8700的532G和NE的5T相比,弱爆了?

等等,8700K是64位CPU,單個數據64bit,大致上,計算8個INT數據和1個INT64數據所需要的電晶體數量是一致的,那麼就是8×532.8=4.26T OPS。

是不是跟NE性能差不多了?

等等,8700K TDP 95W,答主你拿這麼一個CPU和NE比是不是太過分了?手機CPU不過3~4W的功耗,NE只不過是A12裡面的一個模塊。

被你發現了——那麼我們引入一個新的衡量單位:OPS/w,每瓦特運算性能。

8700K按照95W算,只有可憐的44.8G OPS/w。

A12不清楚,高通的845 TDP 大概是5W,我們就按照5W算,假設NE滿載的時候CPU、GPU功耗很低,NE占用其中2W,那麼NE的每瓦運算性能大概是5T÷2=250G OPS/w,比Intel牛叉多了是吧?【更新:應該是2500G OPS/w】

Intel馬上不幹了,8700K是桌面CPU,能耗不是最重要的,要談能耗,我有4.5W TDP的i7-7Y75。

看看7Y75的規格:核心和8700K一樣,3個整數向量單元,設計功耗4.5W,雙核,基準頻率1.3GHz,同樣支持AVX2和FMA。

重新算一下:

2×3×4×2×1.3G×8÷4.5=110.9G OPS/w

還是不行啊。

Intel又說,7Y75是通用處理器,除了整數,還要計算浮點數。

為了兼容性,要有解碼器翻譯40年前老舊的x86指令,要有各種處理單元處理40年來的各種增加的指令集;因為內存速度跟不上,7Y75每個核心有128KB 一級緩存,512KB 二級緩存,兩個核心共享4MB 三級緩存;為了適應各種程序同時儘可能發揮性能,有分支預測、亂序執行單元;為了和周邊各種配件通訊,集成了雙通道內存控制器,16通道PCI-E 3.0控制器,這麼比我很吃虧啊。

於是Intel扔出來這麼一張圖:

雖然是老舊的SandyBridge的CPU功耗分布圖,先湊合看吧。

如果只是普通的整數運算,運算單元功耗不過占6%,功耗都消耗在緩存、亂序執行上。

如果是重浮點運算,浮點運算單元就占了75%的功耗,整數單元不過2%。

來來來,我不欺負你,砍掉浮點單元,其它運算單元的功耗消耗照算,畢竟NE也要從內存取數據,估計也少不了本地緩存神馬的。

7Y75比SandyBridge增加了AVX2,FMA指令集,一次可以計算4個整數組成的向量,積和融合算雙倍功耗,整數功耗:2%×4×2=16%,砍掉浮點的整體功耗就是25-2+16=39%。

7Y75功耗按照4.5×39%算不過是1.755W。

重新算一次能效比:

2×3×4×2×1.3G×8÷1.755=284.4G OPS/w

emmm……是不是比A12 NE的250G OPS/w還要高一點?別忘了,A12是7nm製程,7Y75還是14nm製程。

【更新:事實上這麼粗算是得不出回答的結論的——起碼對Intel的CPU來說是這樣】

284.4G比NE的2500G還是低的多,我們需要加上這麼一張圖,然後重新計算:

這張圖中,Uncore部分主要就是三級緩存、內存控制器、PCI-E控制器、QPI控制器等。

這些部件占用了40%的功耗,也就是核心部分只占用60%功耗。

另外,AVX2的整數向量比傳統ALU增加四倍功率大體上是對的,但FMA的積和熔合是不會導致功耗翻倍的。

所以AVX2的64位整數向量功耗的估算應該大致為4.5W×60%×2%×4=0.054W。

因此不考慮取指、解碼、亂序執行、分支預測、以及各級緩存的「純運算」單元,能耗比是2×3×4×2×1.3G×8÷0.054=9244G OPS/w。

加上其它單元,如果這些單元總的功耗占比為運算單元的3倍。

也就是功耗提高4倍,那麼能耗比大概是9244÷4=2311G OPS/w。

對於CPU來說,這個會非常困難甚至可以說不現實。

但對於GPU/TPU/NE/NPU這一類純粹靠堆核心提升運算性能,並且無需處理各種複雜流程的專用晶片來說,應該是可以做到的。

【/更新】

如果說Intel的是CPU,這麼硬比不合適的話,看看谷歌的第一代TPU:

單個Die,TDP 75W,實測功耗40W,92T OPS的INT8性能,1226G~2300G OPS/w,比NE的250G OPS/w高了不知道多少。

而且谷歌第一代TPU,用的還是老掉牙的28nm製程。

【更新:應該是實測2300G OPS/w,已經非常接近NE的2500G OPS/w了,而且這是用28nm製程工藝】

當然,也許實際上NE的滿載功耗並沒有2W那麼高,但沒有更多的細節之前,我這麼算似乎也沒什麼錯。

所以,A12 NE的5T OPS,在半導體行業中不是什麼多牛逼的事情。


請為這篇文章評分?


相關文章 

中國首個異構計算處理器IP核在矽上成功實現

日前,中國華夏芯公司宣布,其異構計算處理器IP核已經在矽片上成功實現,並已通過HSA(異構系統架構)一致性測試。公司還宣布了新的機器學習和深層神經網絡的開源項目,旨在進一步推動HSA異構計算的發...