隨著智能設(shè)備的廣泛普及,,這幾年媒體上越來越多的出現(xiàn)關(guān)于“架構(gòu)”“ARM vs x86”“芯片研發(fā)”的相關(guān)內(nèi)容。很多消費者和愛好者面對這些以往不太常見的信息時就會迷惑甚至產(chǎn)生誤解,。其中一組比較容易被混淆的概念就是CPU,、架構(gòu)、指令集與芯片,。本文試圖用較淺顯的文字闡明它們的關(guān)系與區(qū)別,,糾正一些常見的錯誤認識與觀點。 學(xué)過計算機基礎(chǔ)知識的朋友都知道CPU的含義,,亦即中央處理器,,是負責計算機主要運算任務(wù)的組件。一般習(xí)慣把CPU比喻為人的大腦,。而了解略深的用戶會聽說CPU有x86,、ARM等分類,前者主要用于PC而后者主要用于手機平板等設(shè)備,。那么這里的x86,、ARM指的是什么呢,? CPU執(zhí)行計算任務(wù)時都需要遵從一定的規(guī)范,程序在被執(zhí)行前都需要先翻譯為CPU可以理解的語言,。這種規(guī)范或語言就是指令集(ISA,,Instruction Set Architecture)。程序被按照某種指令集的規(guī)范翻譯為CPU可識別的底層代碼的過程叫做編譯(compile),。x86,、ARM v8、MIPS都是指令集的代號,。指令集可以被擴展,,如x86增加64位支持就有了x86-64。廠商開發(fā)兼容某種指令集的CPU需要指令集專利持有者授權(quán),,典型例子如Intel授權(quán)AMD,,使后者可以開發(fā)兼容x86指令集的CPU。 CPU的基本組成單元即為核心(core),。多個核心可以同時執(zhí)行多件計算任務(wù),,前提是這些任務(wù)沒有先后順序。 核心的實現(xiàn)方式被稱為微架構(gòu)(microarchitecture),。微架構(gòu)的設(shè)計影響核心可以達到的最高頻率,、核心在一定頻率下能執(zhí)行的運算量、一定工藝水平下核心的能耗水平等等,。此外,,不同微架構(gòu)執(zhí)行各類程序的偏向也不同,例如90年代末期Intel的P6微架構(gòu)就在浮點類程序上表現(xiàn)優(yōu)異,,但在整數(shù)類應(yīng)用中不如同頻下的對手,。 常見的代號如Haswell、Cortex-A15等都是微架構(gòu)的稱號,。注意微架構(gòu)與指令集是兩個概念:指令集是CPU選擇的語言,,而微架構(gòu)是具體的實現(xiàn)。i7-4770的核心是Haswell微架構(gòu),,這種微架構(gòu)兼容x86指令集,。對于兼容ARM指令集的芯片來說這兩個概念尤其容易混淆:ARM公司將自己研發(fā)的指令集叫做ARM指令集,同時它還研發(fā)具體的微架構(gòu)如Cortex系列并對外授權(quán),。但是,,一款CPU使用了ARM指令集不等于它就使用了ARM研發(fā)的微架構(gòu)。Intel,、高通、蘋果,、Nvidia等廠商都自行開發(fā)了兼容ARM指令集的微架構(gòu),,同時還有許多廠商使用ARM開發(fā)的微架構(gòu)來制造CPU。通常,業(yè)界認為只有具備獨立的微架構(gòu)研發(fā)能力的企業(yè)才算具備了CPU研發(fā)能力,,而是否使用自行研發(fā)的指令集無關(guān)緊要,。微架構(gòu)的研發(fā)也是IT產(chǎn)業(yè)技術(shù)含量最高的領(lǐng)域之一。 數(shù)年前國產(chǎn)龍芯CPU獲得MIPS授權(quán)的消息曾引起一陣風(fēng)波,,龍芯相關(guān)負責人還曾出來解釋,。龍芯是兼容MIPS指令集,微架構(gòu)部由中科院自主研發(fā)的CPU系列,。過去中科院資金不足所以沒有MIPS指令集授權(quán),,但是指令集的實現(xiàn)方式是公開的,因而中科院可以在研發(fā)時選擇兼容該指令集,。待資金充足買下授權(quán)后,,龍芯就可以合法在市面銷售。從這里我們可以知道,,廠商研發(fā)CPU時并不需要獲得指令集授權(quán)就可以獲得指令集的相關(guān)資料與規(guī)范,,指令集本身的技術(shù)含量并不是很高。獲得授權(quán)主要是為了避免法律問題,。然而微架構(gòu)的設(shè)計細節(jié)是各家廠商絕對保密的,,而且由于其技術(shù)復(fù)雜,即便獲得相應(yīng)文檔也難以山寨,。不同廠商的微架構(gòu)設(shè)計水平也有較大差異,,典型如Intel與AMD的對比,前者在最近幾年明顯技高一籌,。 微架構(gòu)研發(fā)完成,,或者說核心研發(fā)完成,接下來就是將其組裝為芯片了,。過去的芯片僅僅包括CPU部分,,如今大量的芯片集成了CPU、GPU,、IO等多種不同的功能組件,,此時這種芯片就不是傳統(tǒng)意義上的“CPU”了。將各種功能組件組裝為芯片的技術(shù)含量相比微架構(gòu)研發(fā)來說是較低的,,因而業(yè)界能做此類工作的企業(yè)也數(shù)量較多,。 在PC時代,幾大主要的CPU研發(fā)廠商都只是自己研制微架構(gòu)自己用,。到了智能設(shè)備時代,,ARM公司的微架構(gòu)授權(quán)模式興起。ARM自己開發(fā)微架構(gòu)后將它們上架出售,,其他廠商可以拿這些核心組裝為芯片來使用或銷售,。由于這種模式對第三方的技術(shù)能力要求很低,,加上ARM的微架構(gòu)在低功耗領(lǐng)域表現(xiàn)優(yōu)異,這種模式獲得了廣泛成功,。如果你發(fā)現(xiàn)某款芯片標明使用了Cortex系列核心,,則一定是這種模式的產(chǎn)物。如前所述,,僅僅從ARM購買微架構(gòu)來組裝芯片的廠商是不能被稱作CPU研發(fā)企業(yè)的,,這些芯片也不能被稱為“xx廠商研發(fā)的CPU”。典型如華為的海思920,、三星Exynos 5430,,只能說是“使用ARM Cortex-A15核心的芯片”。但是如果一款兼容ARM指令集的芯片使用了廠商自主研發(fā)的微架構(gòu)情況就不同了,。高通驍龍800,、蘋果A7就是這樣的例子--它們分別使用了高通、蘋果自主研發(fā)的CPU,。 隨著智能設(shè)備市場不斷擴大,,ARM陣營也不斷壯大。占領(lǐng)智能設(shè)備領(lǐng)域后,,ARM陣營開始進入PC,、服務(wù)器與高性能計算領(lǐng)域。先是ARM發(fā)布了ARM v8 64位指令集規(guī)范,,接著是各大廠商紛紛開始研發(fā)基于ARM v8的高性能微架構(gòu),。有人會問,ARM指令集不是為低功耗設(shè)備研發(fā)的嗎,?怎么現(xiàn)在又開始做高性能CPU了呢,?多年以前這樣的懷疑是很有道理的,因為彼時不同指令集對微架構(gòu)的影響還比較大,,ARM適合低功耗,,x86適合PC,Power適合小型機……這類區(qū)分是存在的,。但是隨著技術(shù)進步,,指令集對微架構(gòu)的影響已經(jīng)小到可以忽略,任何指令集都可以做出適合不同領(lǐng)域的優(yōu)秀微架構(gòu)來,。因此用戶看到x86指令集的手機cpu或是ARM指令集的服務(wù)器CPU都無需驚訝,,這是技術(shù)發(fā)展的自然結(jié)果。 那么,,現(xiàn)在各家CPU研發(fā)廠商選擇指令集的標準又是什么呢,?業(yè)界除了x86和ARM、MIPS,,其實還有一大堆各種各樣的指令集,。比如小型主機領(lǐng)域的Sparc,、Alpha、Power等,。國內(nèi)幾家研CPU的科研機構(gòu)就分別選擇了x86、MIPS,、Sparc,、Alpha、ARM指令集,,早年甚至有機構(gòu)選擇Intel沒落的Itanium使用的EPIC指令集的,。一般來說大家傾向于選擇軟件生態(tài)較好的指令集--前面說過,軟件必須編譯后才能在某種指令集平臺上運行,,而編譯是很復(fù)雜的事情,,絕大多數(shù)閉源軟件僅僅會對少數(shù)一兩個平臺編譯。因而支持某種指令集的軟件應(yīng)用越多,,這種指令集也就越有市場優(yōu)勢--新開發(fā)的微架構(gòu)只需要兼容某種指令集,,那么就可以很容易運行大量為其開發(fā)的軟件。早年因為微軟的強勢與Wintel聯(lián)盟的推動,,x86指令集成了最受歡迎的角色,,幫助Intel用彼時性能相對落后的微架構(gòu)在PC平臺擠跑了一眾對手。后PC時代由于蘋果谷歌的兩大操作系統(tǒng)平臺的推動,,ARM指令集又取得了絕對的市場優(yōu)勢,。但對于新的CPU研發(fā)單位來說,他們想獲得熱門指令集的兼容授權(quán)是很困難的事情,。以前x86與ARM的指令集授權(quán)是拿錢買不到的,,想要得到都需要進行高水平專利交換。拿到x86授權(quán)的幾家廠商要么是拿的早(AMD,、Cyrix,、IDT),要么是有高水平技術(shù)與Intel交易(Transmeta,,以功耗控制技術(shù)同Intel交易),。后來Nvidia想要研發(fā)自己的CPU,找Intel軟磨硬泡后者就是不給,,搞得Nvidia相當無奈,。國內(nèi)的研發(fā)單位當年開始研究時自知不可能拿到x86授權(quán),于是各自去找關(guān)系好些的其他授權(quán)方解決問題了,。ARM這邊也一直對指令集授權(quán)卡的很死,,之前只有高通、博通和Intel得到,,也是通過技術(shù)交換的形式,。08年蘋果喬幫主被Intel甩臉色后決定自己搞CPU,,最后也拿到了ARM的許可,想來彼時老喬也是威逼利誘,,硬是讓ARM屈服了(畢竟指令集多授權(quán)一家就多個對手?。:髞鞟RM對指令集授權(quán)也放松了,,去年三星與華為也分別得到了授權(quán),,他們的自研CPU預(yù)計也將在未來一兩年面世。 本文總結(jié)下來的內(nèi)容很簡單:指令集與微架構(gòu)是不同的概念,,不可混淆,;CPU研發(fā)指的是微架構(gòu)研發(fā);如今指令集不再有“最適合領(lǐng)域”的說法,。希望這篇文章能幫助被這些問題困擾的朋友,,也希望媒體在提及這些概念時多做一些科普與澄清。 |
|