半導體初學-IP設計

Leon's View
8 min readMar 19, 2019

--

Hi 各位,今天要來班門弄斧一下

由於我過往的投資偏向投資傳產類型,最近希望跨足新的產業領域,所以在近期開始研究半導體,也讀了一些文章和台灣上市櫃公司的年報和法說會簡報,這篇文章是整理個人目前對於半導體產業的基礎認知,望行家勿笑

半導體產業上下游關係如下圖:

一、指令集

今天先講最上面的IP設計,要講IP就必須要先講指令集,什麼是指令集?

指令集,是一套讓晶片聽得懂指令的程式翻譯暗號

電腦理解語言的方式跟人類有所不同,人類說:「Hello, how are you?」,同樣一段話要讓電腦能理解的語言可能就會變成「010110000101010001010101……」,因此若要把程式的指令傳達給電腦,就必須仰賴一組特殊的翻譯暗碼,這套暗碼就是指令集。

若以棒球為例子,A隊的棒球教練站出來摸摸帽沿,A隊的所有球員都知道這是教練下達讓一壘跑者盜壘的指令,但一壘跑者為什麼知道這個指令,是因為整個棒球隊事先都約定好了各種動作所代表的指令,知道翻譯動作的暗碼是什麼,這套暗碼這就是棒球隊的指令集

而回到晶片,指令集就是這個晶片棒球隊的暗碼,晶片棒球隊成員都約定好,要用某一組暗號來翻譯程式的指令給IC晶片,假如我今天點擊UBER的程式叫車,人類只是動動手指,但要把叫車的指令傳達到手機的IC晶片中去執行後續動作,則須要把人類觸擊銀幕的指令用翻譯成IC晶片能理解的語言,IC晶片才能理解並執行,程式被按照某種指令集的規範翻譯為IC晶片可識別的底層程式碼的過程叫做編譯(compile)。

指令集又可分成兩種種類:分別為CISC(複雜指令集)和RISC(精簡指令集)

我的理解是可以把CISC(複雜指令集)看成多功指令集,也就是藉由一行指令來完成很多種功能,而不需要鉅細靡遺的寫出每一項功能的程式碼。舉例來說,工程師把走路、吃飯、睡覺等動作都寫進一行程式碼,當要執行其中一個動作的時候,CPU會先透過(程式計數器)去讀取這一行指令碼,然後開始解碼分析到底是要執行哪一個指令,最後依照讀取出來的指令動作

而RISC(精簡指令集)則是另外一種概念,RISC可視為單功指令集,也就是走路、吃飯、睡覺…等各項動作,都分別用一組指令,當要執行其中一個動作的時候,CPU一樣透過其它硬體(程式計數器)去讀取特定指令碼,解碼後動作

兩種指令集各自的代表作分別是Intel的x86指令集(CISC)跟ARM的ARM指令集(RISC),採用CISC(複雜指令集)的優點是工程師不用寫一堆程式,用一行程式就包掉很多功能,但壞處是每一行指令的長度不一,比較難進行最佳化,另外就是指令包括的動作越多,進行翻譯的處理器就越複雜,也造成功耗消耗較大

RISC雖然把動作拆得很細,要寫很多程式碼(爆掉很多副肝),但每一條程式碼的長度基本上固定而且功能單一,處理器在解碼的時候相對容易,不用每次都要解一長串程式碼(e.g.我只要喝杯水,但用CISC程式寫的話,可能喝水的那一串程式碼中還包括爬山、游泳、慢跑之類的功能,處理器要先把這一串打開然後找到喝水的動作,頗為麻煩,而且也不需要常常執行爬山、游泳、慢跑這些動作),如果要進行複雜動作,RISC可以把一串短程式碼組合成一串長程式碼來進行,但RISC的缺點就是程式數量總和很多很長,佔用更多的記憶體空間

需要注意的是,開發CISC跟RISC指令集的廠商,並不是只有Intel和Arm兩個玩家,還有很多IP公司也都有開發自己的指令集,比如說RISC架構有 MIPS、SPARC、PowerPC以及RISC-V等種類的指令集

二、微架構

有了指令集,接下來就可以講微架構,什麼是微架構?

個人的理解是,微架構的優劣就是看誰的能夠架設出一套能讓IC晶片用最快速度、最低耗能處理指令的通道。而微架構又是以指令集做為依據開發出來的,因此微架構又可稱為指令集架構

這個通道的設計,就是IC Design 公司的立身之本,以手機的晶片為例,CPU執行的流程是(1)從記憶體位置擷取資料(2)翻譯資料(3)執行翻譯後的資料(4)存到記憶體中(5)寫到暫存器,但如果每次要解一個指令,都要乖乖排隊等流程,那速度就太慢了,但如果一次塞太多指令進去,就是塞車回堵,資料還是跑不出來GG

而要讓程序執行的快一點最簡單的方式:

  1. 多造幾條路(管線) ,讓一堆指令集可以同時往前走
  2. 拉高時脈(也就是提高每秒的訊號頻率),讓每一個指令集運算跑快一點

先講方法1,聰明的工程師們設計了多管線架構,這稱為指令管線化,也就是只有一條獨木橋不夠走,我可以搭兩條橋,如下圖

圖取自維基百科

這張圖的縱軸是指令集、橫軸是時脈(姑且稱之為執行時間),縱軸1~5就是通道編號,我們可以看到指令集按照順序被丟進一個又一個的通道去執行,雖然每一個時間點也只有擷取一個指令集去執行,但是至少下一個指令集不用排隊等前一個跑完才進去跑

但只做到這樣就夠了嗎?還不夠,偉大的工程師們又絞盡腦汁研發,希望能讓程式跑得更快,比如說盡量讓彼此不相干的資料同步處理(因為都不需要等彼此的結果)、或是預判說哪個通道的結果會比較快跑完,趕緊把下一個指令集塞到那個通道裡之類的,盡可能的讓指令可以偷跑、先跑,加速執行完運算結果,這牽涉到邏輯順序的問題

而方法2俗稱超頻,也就是加速訊號從0到1或者從1到0的轉換,讓CPU加速運算,但是每一顆CPU還是有極限,無法無限制的超頻,不然一個訊號還沒算完,下一個訊號又衝過來,就會產生錯誤。另外就是電晶體在處理轉換訊號時會產生熱能,如果不能及時散熱,CPU就會被燒壞。

而為什麼電腦的CPU大多採用Intel的x86架構,而手機的CPU大多採用ARM架構,有興趣的朋友可以參考這一篇文章:看ARM如何搶走英特爾的x86市場 — CPU市場上的逆襲!

對於為何ARM稱霸手機市場,簡單來說大概就是網路效應所製造的先進者優勢,ARM藉由iPhone打入手機CPU市場,後來又搭上Android體系,這兩大作業系統平台都採用ARM指令集之後,其實比賽基本上就結束了

為什麼?因為正如我們所說的,指令集就是一套翻譯暗碼,等於是主流語言,後續所依附的微架構、硬體到最終的App程式設計,都是依照這一套主流語言來開發的。

那如果今天有一個SIP廠(矽智財廠)跑去跟Apple說,我現在開發出了一套新的指令集和微架構,功耗比ARM低、效能比ARM高,你要不要用我的架構看看,大家猜猜看蘋果會說什麼?

我猜大概就是我們很欣賞你們的架構,但基本上你們的產品要先經過代工廠驗證這樣的架構可行,另外就是我們的IOS系統、APP軟體是否跟你們架構相容,如果你們可以解決相容性問題我們再繼續談看看吧。

簡單來說,就是手機廠們的頭都已經洗下去了,在現有ARM架構穩定運行的狀況下,手機廠們不太可能貿然更換晶片架構,風險實在太高

當然,Apple從A6晶片開始,就只有單純取得ARM指令集的授權,微架構自己開發,這是一項壯舉,但也只有Apple這樣的品牌力能做到,Apple歷年來開發自己的晶片所需投入的資金量相當龐大,但歷代Apple晶片的效能也的確勝過市面上採用ARM標準微架構(Big. Little)的Android體系手機晶片,而為什麼蘋果養得起自己的晶片開發團隊,這就是蘋果迷們信仰所貢獻的資金了XD

而其他IC Design公司諸如高通、發哥等等,也大多是採用ARM標準微架構授權,高通比較厲害的地方是他們有辦法部分SOC採用自己開發的微架構,在一顆系統單晶片(SOC)中,CPU只是其中一部分,SOC還包含了GPU、DSP、ISP、Modem等其他硬體,而這些IC用的就不一定是ARM指令集,CPU大家基本上是站在同一個起跑線,但是其他硬體零件就看各家IC Design公司各自逞能,看誰能在最低功耗的狀況下達到最高效能(當然晶片體積大小也很重要),詳細的部分就不是本篇文章討論的重點了

高通驍龍820 SOC晶片

這次分享先到這裡,這一篇文章寫的非常淺,也不敢保證沒有誤解實際執行情況,看倌們可以參考,理解基本概念,但實際上的運作還是要自行多找些資料學習囉!

之後如果有空,會再試著看能不能寫深一點,並逐步把自己研究IC產業的狀況用淺顯的方式表達出來,下次再見。

參考資料:

時脈

指令管線化

程式執行與CPU運作

完全看懂 ARM 處理器:RISC 與 CISC 是什麼?歷史、架構一次看透

ARM 授權費用太貴,科技廠商們有意轉向開源架構 RISC-V

看ARM如何搶走英特爾的x86市場 — CPU市場上的逆襲!

長篇:聯發科手機晶片面臨的挑戰-2017/3

財報狗大盤產業

一樣是ARM架構,為何蘋果行動裝置處理器效能就是能壓下其他人?

--

--