天天看點

便宜坑窮人,小主機到底要不要買?咱們從根上聊聊

作者:iN在

昨天說J1900的時候,有人這樣回複:

便宜坑窮人,小主機到底要不要買?咱們從根上聊聊

“它的功耗才10W!還有四個核呢”

這是相當典型的被廣告洗腦的結果。在CPU核心大戰的時候不管是Intel還是AMD都會給使用者灌輸一個概念,也就是核心多的CPU性能就很強。以至于很多人在購買CPU的時候,就把核心數量作為選擇CPU的一個主要考慮名額。

其實這種判斷是要有一個前提的——在相同的核心的前提下,核心越多性能才越好。

但什麼是“核心”,這件事很少有人真正的給大家來講。

CPU在處理資料的時候實際上都是利用門電路做最簡單的二進制運算計算。這件事如果不明白,我們可以去看《三體》,大劉對門電路的運算原理講得還是很清楚的。

便宜坑窮人,小主機到底要不要買?咱們從根上聊聊

門電路的輸入端的二進制狀态依據門電路的類型決定了輸出端的二進制狀态。最基礎的運算就從門電路開始了。

便宜坑窮人,小主機到底要不要買?咱們從根上聊聊

這是一個加法器的門電路它可以計算二進制加法,原理圖是這樣,但原理圖隻是原理而已,真正的實作計算功能還需要在CPU的電路中将這個原理圖實作成一個實實在在的電路。

這個加法器如果手搓的話基本上就是下面的樣子:

便宜坑窮人,小主機到底要不要買?咱們從根上聊聊

通過撥動紅色的A,B兩個開關設定二進制數,可以在中間的5個藍色LED上以亮/滅顯示出4位二進制加法的結果。

四層疊在一起的電路闆,每層完成一個門電路的功能。當然了,這是全用半導體實作的案例,在現在,利用內建電路的情況下,這套裝置的四層闆子可以用一塊德州儀器的SN7483A四路正門電路取代。也就成了下面的樣子。

便宜坑窮人,小主機到底要不要買?咱們從根上聊聊

在CPU的電路裡面實際上也是需要這個電路的,例如下面這個古老的8086 CPU:

便宜坑窮人,小主機到底要不要買?咱們從根上聊聊

在圖檔的左上角有一套加法器(Adder)電路這套加法電路幾乎占據了這塊8086的1/20的面積。

CPU處理資料無非是兩種方法,第一是利用電路,例如我們要算一下 0101+0001的結果,就可以通過加法器來實作最終輸出1010的結果;另一種是通過算法來實作,例如我們需要計算0010*0011 ,現在這台計算機是沒有乘法電路的,實際上在計算乘法的時候是做加法,乘多少就加多少次,于是上面的式子就成了(0010+0010)+0010=0110,當然了,這種算法比較笨,其實是可以利用二進制的移位操作 0011<<0010 = 0110的,也就是左移一位。

我們可以看到CPU用簡單的算法就可以實作原本沒有的功能,隻不過在算乘法的時候計算量要比單純算加法的時候計算量要大很多。如果從電路設計和CPU的成本考慮,我們可以不要乘法電路,但如果計算乘法很多那麼隻依靠加法器來算乘法無疑就拖慢了這個CPU的效能。

現在的問題是“有沒有乘法器呢?”,答案是有!

便宜坑窮人,小主機到底要不要買?咱們從根上聊聊

這是一個4位二進制乘法器的邏輯圖,轉化為電路圖的話就是下面這一大張:

便宜坑窮人,小主機到底要不要買?咱們從根上聊聊

刻在CPU的電路後也是一大片的面積。當這個電路鋪設到CPU中的時候,原本n個時鐘周期才能計算完的乘法,也會像加法一樣在一個時鐘周期内直接完成。

現在CPU的廠商就會面臨一個問題——是增加成本把CPU賣的更貴,讓使用者在一個時鐘周期内得到乘法結果?還是钚增加乘法電路,賣得更便宜,讓使用者計算的時間成倍增加?

這是一個兩難的選擇題對吧?但成年人的世界不做選擇,兩個都做,更貴的CPU中增加了乘法電路,在相同的主頻下計算效率更高,便宜的CPU不做乘法電路,在相同的主頻下效率低一些。

看到這裡,我們就應該明白不同設計的CPU的效能是不一樣的,其根本原因就是裡面有沒有具備相應功能的電路。但我們得明确一點——若幹的功能封裝在一起之後就叫做“CPU核心”。

這時候我們看一個例子,CPU 核心A有一個四位乘法電路,CPU核心B隻有加法累加電路,

那麼一個CPU裡面隻有一個核心A另一個CPU中卻有4個核心B,如果忽略時鐘和傳輸損失的話,在算2*4的時候兩個CPU的效率可以看作是相同的,擔任如果計算2X8呢後者雖然有4個核心,但運算效率也就隻是前者的一半了,再算2X16呢?後者就隻有前者的1/4了。其實CPU的乘法計算并不會有并行計算的功能,是以,後者其實隻是前者的1/16的效率。

這個例子給大家舉得有一些極端,但CPU核心内電路的規模和功能決定了CPU本身的計算效率。如果單看J1900這樣的10W 4核心的CPU這兩個名額看似很不錯,但它的4核心其實真正的效率要遠遠低于具備更完善的電路的酷睿CPU。

給個例子:

便宜坑窮人,小主機到底要不要買?咱們從根上聊聊

截取了一個官方資料的對比,同樣是2013年年底上市的兩個Intel CPU,i5-4300和前面所提到的J1900。

你會發現大多數i5所支援的特性在J1900上是沒有支援的。例如AES——進階加密标準。AES也是一個電路:

便宜坑窮人,小主機到底要不要買?咱們從根上聊聊

不支援就是沒有,在J1900上壓根就沒有鋪設AES電路。那麼對一個資料串的SHA256等等操作,在i5上可以在一個時鐘周期内完成核心計算,而在J1900上則需要大量的時間周期才能完成。

AES幹嘛用的呢?大量網絡資料在傳輸的時候的加密操作,大量磁盤讀寫要驗證的簽名操作實際上都是依靠AES功能進行加速的。

CPU便宜、功耗低自然有自己的原因。把一些電路去掉,本身就是降低CPU功耗和成本的方法。這個方法在CPU廠商設計CPU的時候屢試不爽。也正因為有這種方法的存在,市面上才有了類似于賽揚、J1900等等很便宜的CPU存在。

但這類CPU本身是在細分市場使用的,類似于J1900,主要面對的對象是工控機、嵌入式系統。自然性能弱一些、功耗低一些都是這類CPU目标市場所決定的。

反過來看,J1900并不是為完整的通用計算設計的CPU,即便是可以把系統安裝進去,真正的效能也就十分拉胯了。

是以買不買這種CPU的小主機呢?iN的建議是不要。道理就是上面的道理。實際上,10W 4核心的誘惑力也是不存在的,這個10W是TDP熱設計功耗,和真正的能效比是兩碼事,更複雜的CPU在1W的功耗上能做100件事,而這種CPU在1W的功耗上隻能做8件事,這就導緻了在階段性上也并不會更省電。低價格但更低效率——正所謂便宜吃窮人……

不過,iN自己是小主機的愛好者,家裡很多小主機在同時運作。但這些小主機都隻是承擔一些小程式的日常運作,例如監控個網絡、控制個智能家居……這種運作實際上就是J1900本身的設計目的。而一味的看重這種東西便宜、低功耗把它們用在了不該用的地方其實就是一種錯覺了。