底層碼農眼中的晶片
ofollow,noindex">點這裡效果好
這週四個展示 終於要熬到最後一個了 good luck
今天來討論這個問題 顯得有些 應景
和 無力
剛說不再貿易戰 還搞菊廠 這隻能說特朗普Trump是一個鱔變的男人:person_with_blond_hair:
什麼是晶片?
當中興事件發生的時候 鋪天蓋地的新聞在報道『中國晶片』
看到這些新聞的時候 我一蒙 我不知道這裡的晶片指的是什麼
也許它什麼都指 這可能是才最恐怖的
以電腦為例 基本上所有器件都可以稱為晶片
- 計算晶片: CPU GPU TPU NPU FRGA
- 儲存晶片: DRAM SDRAM ROM FLASH
- 通訊晶片: 藍芽 WIFI NB-IOT 寬頻ADSL
- 感測器: 陀螺儀 MEMS 指紋晶片麥克 攝像
- 介面晶片: USB 網絡卡 HDMI DP
- 電源晶片: 反正大家不認識就不列了
但很明顯各個部分的重要程度不一樣

image
CPU速度很快 I/O速度超慢
為了連線這二者 就出現了中間這條匯流排
CPU負責高速運算 然後把資料通過前端匯流排 經過北橋(記憶體管理集線器) 傳給記憶體 和 GPU
這個時候速度已經降了一級
然後再通過網路匯流排 繼續往下傳 由南橋(也就是I/O控制集線器) 傳給各個外部 埠
比如說什麼SATA硬碟,USB,網絡卡,視訊,音訊,CMOS
最後再經過LPC匯流排(就是很慢的匯流排) 與ROM中的BIOS、更慢一點的I/O連線
比如說串列埠 並行埠 鍵盤 滑鼠啥的
到這裡 整個PC機的晶片就串在一起了 作為一名合格的 裝系統工程師
應該熟練掌握:joy:
CPU
核心
+ 指令集架構/CPU架構/處理器架構
+ 微架構
= CPU
- OS
核心指的就是CPU的硬體 包括ALU運算器 等等的
指令 就是 一個約定好的暗號
比如說 你對狗狗喊‘蹲下’ 它做出相應的反應 這就是一個指令完成的過程
當然如果你這樣對:dog:說 可能不一定有用 這就是一個不成功的指令
微架構呢 就是管理硬體的一些操作
指令集 大部分 都是不開源的 只有授權了 才能拿到使用權
可以想到 指令集作為一種約定 用的人多了 這個指令集才值錢
因為更換成本較大 再加上一些壟斷的原因 現在世界上只有少數幾種通用的指令集
相對而言 在微架構方面 就有很多創新空間 所以現在包括 三星 蘋果 小米 等公司 都是在這個領域進行自己的設計

image
指令集架構
指令集分為複雜指令集RISC和精簡指令集CISC兩種
兩者最大的差別就是RISC支援變長度的指令 CISC只支援定長度的指令
這有什麼區別呢 我們看一個例子
RISC: ThecatsatandatehishatCISC: The cat sat and ate his hat.
複雜指令集相當於讀上面那句話 精簡指令集呢相當於讀下面這句話 很明顯下面更容易獲取資訊
但定長也導致了拓展性低 各有優缺點
CISC目前常用的商業指令集有 ARM
, Power
, MIPS
其中 ARM 獨佔移動端 市場 主要是因為Intel在起步階段不夠重視移動端
Power是IBM開發的一個指令集 看用它的產品有 XBOX 360
, PS3
, Wii Ui
這個是Switch上一代產品 總結一下 這些都是上一代掌機
現在的掌機為了追求GPU效果 都換成了ARM 真香
MIPS是一個開源指令集 被中科院購買下來 後來成為龍芯公司 龍芯也是大陸第一個自主研製出能在Win上跑的晶片的公司(雖然只是WIn CN)
而複雜指令集呢 現在只有X86比較常用 X86是Intel開發與AMD互相授權的一個指令集 基本上壟斷了PC機
一個原因是因為Intel 微架構確實優化的叼 製作工藝也屌 在Intel這製程都不是事 落後一代也能吊打你 10nm和臺積電7nm差不多 真的恐怖
還有一個很重要的原因 就是Win只支援X86(現在也支援ARM了 但 那還是Win嗎)
所以如果你想開發能給Win用的CPU你就必須獲得X86授權
目前大陸只有兩家公司獲得X86的授權 一家是兆芯 一家是海光
兆芯的授權來自臺灣公司VIA 而VIA的X86授權來自美國反壟斷協會判給VIA的使用權 相對來說授權較為不穩定 而且技術支援較為薄弱
海光是AMD在中國的合資公司 AMD技術底蘊更強 合作意願也更大 但起步晚
我的觀點 CPU指令集很難創新 也沒必要創新 有研究表明指令集與能耗效能無明顯關係
最重要的是已經形式相應的生態研製成本已經很大了 更換成本更大
微架構
微架構是各大公司創新點
目前微架構有以下幾種常見的方向
- 流水線化
- 多核、多執行緒
- SIMD 向量
- 儲存系統分層結構

image
流水線 就相當於時間上的並行 每個核心反覆做相同的工作 由不同核心共同完成一個任務
多執行緒 就相當於 空間上的並行
SIMD就是單指令多資料 一次導一組資料 增加效率
前兩天剛好在研究一個在記憶體資料庫中利用SIMD構建DBMS的問題
可以看出微架構 是一個體繫結構問題
在這之中有很多工作可以做
SOC
SOC是手機上的晶片的集合體
裡面有CPU GPU DSP(用於多媒體解碼)有些還有NPU 通訊晶片藍芽 LCD 攝像頭 GPS等等

image
按功能可以分為AP BP 其他
BP主要功能是通訊 包括基帶和射頻 基帶主要負責通訊訊號的處理 射頻主要負責訊號的收發
AP則可以看做PC機 負責系統的處理
在AP BP中間都有相應的CPU DSP 電源等等
ARM 把CPU核心賣給各大廠商比如說高通 三星 蘋果
ARM不僅做硬體販賣商 也自己生產設計了自己的微架構 提供給各大IP提供商
這其中就有一個很著名的例子 就是2015年的驍龍810
當時高通第一次做8核心的SOC 沒啥經驗 用的公版晶片 就是ARN賣晶片送的微架構
這就導致了著名的暖手寶晶片 都說有了驍龍810 媽媽再也不怕我凍著了
當然驍龍810用的是20nm工藝也是一部分原因
GPU
GPU: graphics processing unit
雖然叫這個名字 但GPU還是一個通用的計算晶片 不僅可以用於影象加速 還可以用於深度學習中
CPU是基於馮諾依曼體系 順序執行
GPU呢則是講究並行化處理 GPU利用其遠大於CPU的核心數達到並行的效果
CPU中因為通用性 存在很多快取儲存機制
一個直觀的感受 一個GPU中運算單元的個數 VS CPU中運算單元大概能達到 這樣的一個比例

image
拿我自己的感受 Mac沒有N卡 每次跑模型 都是別人幾倍的時間 留下了沒有GPU的眼淚:cry:
右下角是NVIDIA剛剛釋出的一款適合深度學習的GPU 擁有4k多個核心 但是價格 看看就好了 這麼大的煤氣灶 居然要2.5k刀 窮
TPU
TPU就不是通用的計算晶片 是一種AISC特定用途的晶片 由google設計專門對TensorFlow進行優化
舉一個例子 在10月份 Google釋出了一個基礎TensorFlow的模型Bert
這個模型一出 就轟動NLP屆
有人稱之為NLP的春天 在它釋出一個多月時間內
屠殺了各大NLP任務排行榜 比如說這個由Stanford釋出的閱讀理解領域權威資料集

image
可以看到前7名全是用Bert的 足足把原有的水平提高7.8個百分點 十分接近人類表現了
但這個武器威力無比 但代價很大 大在哪 它用了幾千層Attention 計算量非常大
論文中Google Brain的老哥用了16塊TPU跑了4天 換算成錢:moneybag: 就是12k刀跑一次 留下了沒有TPU的眼淚
事實上 TPU Google也不賣 只能提高雲服務購買
所以有人說 Bert相當於核武器 雖然威力無比 但代價也很大
Money is all you need
然後這是TPU的設計架構

image
可以看出TPU相較於GPU 緩衝區更小 計算核心更多 而且採用SIMD架構 專門對大I/O進行優化
AISC
近些年來 AI持續走熱 各大公司 都推出了自己的AI晶片
但要明白這些晶片 並不是像CPU GPU那樣通用的晶片 只是針對專門任務進行優化的特殊功能晶片 稱之為AISC
我們知道在機器學習中 分為兩個步驟 先是用 資料訓練出一個模型 然後在用這個模型 預測出結果
在訓練中一般引數需要是浮點數 對計算效能要求就比較高
而預測過程中不再需要高精度浮點數 故有些人用8位長度來進行優化 推出了針對推測階段的 推測晶片
比如說寒武紀1A
雖然我個人覺得在手機上用的NPU都是垃圾
手機上能耗的限制 基本不能進行訓練 如果要預測 那個模型的大小大概是5MB左右 才能跑起來
現在的機器學習訓練出來的模型基本上都是幾個GB 於是目前在手機上的NPU效果不會太好

image
Clound Chip
可以看出越來越多的雲廠商推出自己的AI晶片
尤其是Google推出TPU效果挺不錯的
首先 什麼是Cloud
cloud 就是租用部署在雲端的伺服器

[圖片上傳中...(image-77868a-1544106685476)]
為啥要租用而不是購買呢 主要原因就是彈性擴容 以便資源最大利用
比如說微博 在一些明星有大瓜的時候 就會擴容 微博號稱可以支援併發出軌
還好在上週的吃瓜日中 終於抗住了 壓力
雲服務廠商 比如說華為 AWS 微軟 都推出了自己的AI晶片
這種雲服務廠商的晶片 具有獨特性 可以捆綁使用者購買其伺服器
像這種機器學習機器購買 費用就會比較高

image