關於CPU、指令集、架構、芯片的基本認識


  學過計算機基礎知識的朋友都知道CPU的含義,亦即中央處理器,是負責計算機主要運算任務的組件。一般習慣把CPU比喻為人的大腦。而了解略深的用戶會聽說CPU有x86、ARM等分類,前者主要用於PC而后者主要用於手機平板等設備。那么這里的x86、ARM指的是什么呢?

  CPU執行計算任務時都需要遵從一定的規范,程序在被執行前都需要先翻譯為CPU可以理解的語言。這種規范或語言就是指令集(ISA,Instruction Set Architecture)。程序被按照某種指令集的規范翻譯為CPU可識別的底層代碼的過程叫做編譯(compile)。x86、ARM v8、MIPS都是指令集的代號。指令集可以被擴展,如x86增加64位支持就有了x86-64。廠商開發兼容某種指令集的CPU需要指令集專利持有者授權,典型例子如Intel授權AMD,使后者可以開發兼容x86指令集的CPU。

  CPU的基本組成單元即為核心(core)。多個核心可以同時執行多件計算任務,前提是這些任務沒有先后順序。

  核心的實現方式被稱為微架構(microarchitecture)。微架構的設計影響核心可以達到的最高頻率、核心在一定頻率下能執行的運算量、一定工藝水平下核心的能耗水平等等。此外,不同微架構執行各類程序的偏向也不同,例如90年代末期Intel的P6微架構就在浮點類程序上表現優異,但在整數類應用中不如同頻下的對手。

  指令集是一款CPU處理指令及數據的規范,我們只能通過輸入指定格式的指令才能操作計算機。而這個是面向程序員和用戶層面的。而微架構是面向CPU設計人員的,通過設計處理器的指令執行單元,當完成整個設計時,組成的一整套執行規定指令的微處理器的架構就叫“微架構”。

  常見的代號如Haswell、Cortex-A15等都是微架構的稱號。注意微架構與指令集是兩個概念:指令集是CPU選擇的語言,而微架構是具體的實現。i7-4770的核心是Haswell微架構,這種微架構兼容x86指令集。對於兼容ARM指令集的芯片來說這兩個概念尤其容易混淆:ARM公司將自己研發的指令集叫做ARM指令集,同時它還研發具體的微架構如Cortex系列並對外授權。但是,一款CPU使用了ARM指令集不等於它就使用了ARM研發的微架構。Intel、高通、蘋果、Nvidia等廠商都自行開發了兼容ARM指令集的微架構,同時還有許多廠商使用ARM開發的微架構來制造CPU。通常,業界認為只有具備獨立的微架構研發能力的企業才算具備了CPU研發能力,而是否使用自行研發的指令集無關緊要。微架構的研發也是IT產業技術含量最高的領域之一。

  前面提到了指令集就是“規范”,這也就意味着他能指導CPU設計人員通過閱讀“指令集規范”這本“指南”來設計CPU。而CPU設計人員通過閱讀這本規范后設計出來的CPU結構就叫“微架構”。更正式的表述就是“微架構”就是“指令集”的具體“實現”。所以從我們日常使用中就可以舉例,AMD和英特爾同樣都是采用x86指令集的處理器,但是他們處理器具體微架構是不同的,這就是典型的“實現”問題。

  指令集與微架構是不同的概念,不可混淆;CPU研發指的是微架構研發;如今指令集不再有“最適合領域”的說法。

  數年前國產龍芯CPU獲得MIPS授權的消息曾引起一陣風波,龍芯相關負責人還曾出來解釋。龍芯是兼容MIPS指令集,微架構部由中科院自主研發的CPU系列。過去中科院資金不足所以沒有MIPS指令集授權,但是指令集的實現方式是公開的,因而中科院可以在研發時選擇兼容該指令集。待資金充足買下授權后,龍芯就可以合法在市面銷售。從這里我們可以知道,廠商研發CPU時並不需要獲得指令集授權就可以獲得指令集的相關資料與規范,指令集本身的技術含量並不是很高。獲得授權主要是為了避免法律問題。然而微架構的設計細節是各家廠商絕對保密的,而且由於其技術復雜,即便獲得相應文檔也難以山寨。不同廠商的微架構設計水平也有較大差異,典型如Intel與AMD的對比,前者在最近幾年明顯技高一籌。

  微架構研發完成,或者說核心研發完成,接下來就是將其組裝為芯片了。過去的芯片僅僅包括CPU部分,如今大量的芯片集成了CPU、GPU、IO等多種不同的功能組件,此時這種芯片就不是傳統意義上的“CPU”了。將各種功能組件組裝為芯片的技術含量相比微架構研發來說是較低的,因而業界能做此類工作的企業也數量較多。

  在PC時代,幾大主要的CPU研發廠商都只是自己研制微架構自己用。到了智能設備時代,ARM公司的微架構授權模式興起。ARM自己開發微架構后將它們上架出售,其他廠商可以拿這些核心組裝為芯片來使用或銷售。由於這種模式對第三方的技術能力要求很低,加上ARM的微架構在低功耗領域表現優異,這種模式獲得了廣泛成功。如果你發現某款芯片標明使用了Cortex系列核心,則一定是這種模式的產物。如前所述,僅僅從ARM購買微架構來組裝芯片的廠商是不能被稱作CPU研發企業的,這些芯片也不能被稱為“xx廠商研發的CPU”。典型如華為的海思920、三星Exynos 5430,只能說是“使用ARM Cortex-A15核心的芯片”。但是如果一款兼容ARM指令集的芯片使用了廠商自主研發的微架構情況就不同了。高通驍龍800、蘋果A7就是這樣的例子--它們分別使用了高通、蘋果自主研發的CPU。

  隨着智能設備市場不斷擴大,ARM陣營也不斷壯大。占領智能設備領域后,ARM陣營開始進入PC、服務器與高性能計算領域。先是ARM發布了ARM v8 64位指令集規范,接着是各大廠商紛紛開始研發基於ARM v8的高性能微架構。有人會問,ARM指令集不是為低功耗設備研發的嗎?怎么現在又開始做高性能CPU了呢?多年以前這樣的懷疑是很有道理的,因為彼時不同指令集對微架構的影響還比較大,ARM適合低功耗,x86適合PC,Power適合小型機……這類區分是存在的。但是隨着技術進步,指令集對微架構的影響已經小到可以忽略,任何指令集都可以做出適合不同領域的優秀微架構來。因此用戶看到x86指令集的手機cpu或是ARM指令集的服務器CPU都無需驚訝,這是技術發展的自然結果。

  業界除了x86和ARM、MIPS,其實還有一大堆各種各樣的指令集。比如小型主機領域的Sparc、Alpha、Power等。

  下面放一張可能過時,但也能說明指令集與微架構是不同的概念的圖。

第一類采用購買授權:技術引進路線,購買國外CPU的IP授權,並借助現有的生態系統開拓市場。比如華為海思麒麟和中興微電子,從Arm公司授權IP設計芯片。

第二類采用合資/合作:10多年前中國就開始通過與國外公司成立合資公司方式實現技術轉移,合資有一個好處是可以接觸到比較先進的技術,但有一個壞處是容易對外商形成技術依賴,無法形成自己獨立研發能力。ARM、高通等公司都在中國大陸開設了合資公司,英特爾、IBM等公司也通過技術合作扶持了代理人。

第三類采用自主創新,代表就是申威和龍芯。

從革命的角度看,申威比龍芯更具革命性,畢竟龍芯為了生態兼容了MIPS指令集,並在MIPS的基礎上擴展形成了LoongISA,申威獨立開發了SW64指令。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM