淺談多核心CPU和SoC晶片及其工作原理

2021-01-09 網易

  來源:芯論語

  前言:現在的CPU或SoC基本都是在單晶片中集成多個CPU核心,形成通常所說的4核、8核或更多核的CPU或SoC晶片。為什麼要採用這種方式?多個CPU 核心在一起是如何工作的?CPU核心越多就一定越好嗎?帶著這些問題,筆者查閱了一些資料,學習了相關概念和要點並編輯成此文,試以通俗的語言來回答這些專業問題。文章一方面可作為自己的一個學習記錄,另一方面也希望對讀者有參考作用,不準確的地方歡迎討論和指正。

  要說明什麼是多核心CPU或SoC晶片,首先要從CPU核心(Core)說起。我們知道,CPU是中央處理器(Central Processing Unit)的英文簡稱,它具有控制和信息處理的能力,是電腦和智能設備的控制中樞。如果把傳統CPU晶片中的封裝和輔助電路(例如引腳的接口電路、電源電路和時鐘電路等)排除在外,只保留完成控制和信息處理功能的核心電路,這部分電路就是CPU核心,也簡稱CPU核。一個CPU核心基本上是一個完全獨立的處理器,它可以從內部存儲器中讀取指令,並執行指令指定的控制和計算任務。

  如果把一個CPU核心和相關輔助電路封裝在一個晶片中,這個晶片就是傳統的單核心CPU晶片,簡稱單核CPU。如果把多個CPU核心和相關輔助電路封裝在一個晶片中,這個晶片就是多核心CPU晶片,簡稱多核CPU。當然,多核心CPU晶片會包含更多的輔助電路,以解決多個CPU核心之間的通信和協調問題。

  如果在多核心CPU晶片中再集成一些其它功能部件和接口電路,就形成了完整的系統,那麼這個晶片就變成了多核心SoC晶片了,簡稱多核SoC。在不嚴格區分的情況下,SoC也可以稱為CPU。

  圖1用ARM的單核心CPU和多核心CPU進行舉例。圖中紅色虛線框標出的部分就是一個個的CPU核心,圖1a是ARM Cortex-A8基於ARMv7微架構的單核心CPU晶片的示意圖。圖1b和圖1c分別是ARM Cortex-A9 MPCore用2個和4個Cortex-A9構成的2核心和4核心CPU晶片的示意圖。

  

  圖1. ARM單核心與多核心CPU晶片示意圖

  ARM Cortex-A8CPU是第一款基於新一代ARM v7架構的應用處理器,它使用了性能、功耗效率和代碼密度更高的Thumb-2技術,它只有單核心架構。第一家獲得Cortex-A8 CPU授權的公司是德州儀器,隨後還有飛思卡爾、Matsushita和三星等公司[3]。Cortex-A8的應用案例有MYS-S5PV210開發板、TI OMAP3系列、蘋果A4處理器(iPhone4)、三星S5PC110(三星I9000)、瑞芯微RK2918、聯發科MT6575等。另外,高通的MSM8255、MSM7230等也可看作是其衍生產品。

  ARM Cortex-A9 MPCoreCPU屬於Cortex-A系列,也是基於ARM v7-A微架構,它提供了1~4個CPU核心的可選架構。目前我們能見到的4核心CPU大多都是屬於Cortex-A9系列。ARM Cortex-A9的應用案例有德州儀器OMAP 4430/4460、Tegra 2、Tegra 3、新岸線NS115、瑞芯微RK3066、聯發科MT6577、三星Exynos 4210、4412、華為K3V2等。另外高通APQ8064、MSM8960、蘋果A6、A6X等都可以看作是在A9架構基礎上的改良版本。

  一、多核心CPU的發展歷程

  發展多核心CPU的初心源於「人多力量大」的簡單道理。從這個意義上來看,當初晶片集成度不高的時候,Inteli8086 CPU和i8087協處理器應該算是多核心CPU的雛形,是多晶片協作形成了一個處理核心,需要採取許多技術來解決CPU和協處理器之間的合作、協作問題。

  今天晶片的集成度很高,單晶片中集成幾個甚至幾十個CPU核心已不在話下,但還是不能滿足超級計算的需要,需要在超級計算機中使用成千上萬塊高性能CPU晶片一起合作、協作,這可以看作晶片內多核心、晶片外多晶片的多核心CPU集群。

  CPU晶片從外觀上看是一塊晶片,但打開封裝來看,內部可能只有一塊裸片(die),也可能是多塊裸片封裝在一起,稱為多晶片模組(Multichip Module,簡稱MCM),如圖2b所示。但從軟體角度來看,封裝形式無關緊要,無論是晶片內還是晶片外,CPU核心多少才是最重要的,它們決定著系統的並行運算和處理能力,它們的主頻頻率和核心之間通信方式決定了系統的處理速度。

  

  圖2. 單裸片封裝、多裸片MCM封裝及多晶片系統的示意圖

  另外,今天的桌面計算機CPU、手機SoC中還集成了許多圖形處理器(GPU)核心、人工智慧處理器(APU)核心等,這些是否也應該算作多核心CPU和SoC中的「核心」呢?我覺得從廣義角度上應該算吧。

  因此,要回顧多核心CPU的發展,大致可以分為1.雛形期;2. 單晶片單核心;3.單晶片多核心;4.單核心多晶片;5.多核心多晶片幾種情形。這些發展階段不一定按照這個前後順序,可能有交叉時期,也可能有前後顛倒的情形。第2和第3種情形一般是應用在桌面計算機、智慧型手機等移動終端上的CPU晶片,第4和第5種是應用在伺服器和超級計算機上的CPU晶片。本文限於篇幅和主題集中的需要,主要探討第3種單晶片多核心的情況,這種情況下的CPU是單晶片多處理器(Chip Multi Processors,簡稱CMP)模式。

  1971~2004年,單核心CPU一路獨行。Intel公司1971年推出全球首款CPU晶片i4004,直到2004年推出超線程的Pentium 4 CPU系列,期間共33年時間。在這期間,CPU晶片很好地沿著摩爾定律預示的規律發展,沿著集成度不斷翻倍、主頻不斷提升、電晶體數量快速增加的道路前進,這是一條單核心CPU不斷迭代升級的發展之路。

  但是,當電晶體數量大幅增加導致功耗急劇增長,CPU晶片發熱讓人難以接受,CPU晶片可靠性也受到很大影響的時候,單核心CPU發展似乎到了窮途末路。摩爾定律的提出者戈登.摩爾也依稀覺得「尺寸不斷縮小」、「主頻為王」這條路子即將走到盡頭。2005年4月他曾公開表示,引領晶片行業接近40年的摩爾定律將在10~20年內失效。

  其實,早在上世紀90年代末,就有許多業界人士呼籲用CMP技術實現的多核心CPU替代單線程單核心CPU。IBM、惠普、Sun等高端伺服器廠商,更是相繼推出了多核心伺服器CPU。但是,由於伺服器CPU晶片價格太高、應用面較窄,並未引起大眾廣泛關注。

  2005年初AMD搶先推出了64位CPU晶片,並率先Intel發表聲明保證其64位CPU的穩定性和兼容性,Intel才想起了利用「多核心」這一武器進行「帝國反擊戰」。2005年4月,Intel倉促推出簡單封裝的2核心Pentium D和Pentium4至尊版840。之後不久,AMD也發布了雙核心皓龍(Opteron)和速龍(Athlon)CPU晶片[9]。

  2006年被認為是多核心CPU的元年。這年7月23日,Intel基於酷睿(Core)架構的CPU發布。11月,Intel又推出了面向伺服器、工作站和高端PC機的至強(Xeon)5300和酷睿2雙核心和4核心至尊版系列CPU。與上一代臺式機CPU相比,酷睿2雙核心CPU在性能方面提高40%,功耗反而降低40%。

  作為對Intel的回應,7月24日,AMD宣布對雙核Athlon64 X2處理器進行大降價。兩大CPU巨頭在宣傳多核心CPU時,都會強調其節能效果。Intel發布的低電壓版4核心至強CPU功耗僅為50瓦。而AMD的「Barcelona」4核心CPU的功耗也沒超過95瓦。在Intel高級副總裁Pat Gelsinger看來,摩爾定律還是有生命力的,因為「CPU從單核心到雙核心,再到多核心的發展,可能是摩爾定律問世以來,CPU晶片性能提升最快的時期」 [9]。

  CPU技術發展要比軟體技術發展更快,軟體對多核心CPU的支持相對滯後。如果沒有作業系統的支持,多核心CPU的性能提升優勢不能發揮出來。同樣運行Win7的情況下,4核心CPU和8核心CPU所帶來的差異化體驗並不明顯,導致這種情況的原因是Win7根本沒有對8核心CPU進行相應的優化。而在Win10出來後,8核心CPU所帶來的體驗速度就明顯要比4核心處理器快很多,這源於微軟在Win10上對多核心CPU的支持做了優化。而且微軟還將在Win10上針對多核心CPU做進一步適配優化。

  目前核心最多的伺服器CPU有Intel至強鉑金9282,56核心112線程,引線焊球多達5903個,估計售價約4萬美元;AMD霄龍 7H12,64核心128線程,散熱設計功耗280W。這兩款CPU都需要採用液冷散熱。核心最多的臺式機CPU有Intel酷睿i97980XE至尊版,18核心36線程,散熱設計功耗165W,售價1999美元;AMD的Ryzen9 5950X,16核心32線程,散熱設計功耗105W,售價6049元。核心最多的手機SoC有Apple M1、麒麟9000、高通驍龍 888等。多核心CPU或者多核心SoC似乎成為一種潮流,但是不是核心越多CPU就越好呢?在不考慮其它因素影響,單從技術和集成度考慮的話,有人甚至預測到2050年,人們可能會用上1024個核心的CPU晶片。

  二、多核心CPU和SoC晶片舉例

  舉例的晶片包括:1.伺服器用的多核心CPU晶片:Intel Xeon W-3175X;2.桌面PC應用的多核心CPU晶片:Intel Corei7-980X;3.智慧型手機應用的多核心SoC晶片:海思麒麟9000/E;4.ARM架構PC應用的多核心CPU晶片:AppleM1;5.兼容x86架構的多核心AI CPU晶片:威盛CHA;6.多核心國產伺服器CPU晶片:騰雲S2500。

  1.Intel至強W-317X: Intel 2018年推出的伺服器CPU晶片Xeon W-3175X,採用14nm工藝製造,28核心56線程,主頻3.1~4.3GHz,三級緩存38.5MB,內存支持六通道DDR4-2666 ECC/512GB,封裝接口LGA3647,搭配晶片組C621。它的售價高達2999美元,約合人民幣2萬多元。

  該晶片採用了全新的6x6網格(Mesh)架構,I/O位於頂部,內存通道在兩側居中的位置,最多28個CPU核心,四倍L2Cache(每個核心的緩存由256KB升級到1MB),減小了共享L3Cache但提高了利用率。

  

  圖3. Intel Xeon W-3175X的28核心架構圖

  Xeon W-3175X是該架構的最頂級28個CPU核心配置。但代價是超高功耗和發熱,標稱熱設計功耗就有255W,默認主頻實測跑分就能輕鬆達到380W,超頻的話甚至會突破500W。它在日常使用中,高端水冷是必須配備的。Intel在發布Xeon W-3175X的時候就特別推薦了Asetek 690LX-PN一體化水冷散熱器,這也是目前唯一針對W-3175X設計的散熱方案。Asetek宣稱該水冷的最大散熱能力達500W,因此只要不進行極限超頻,該方案為W-3175X散熱問題不大[13]。價格399.99美元,約合人民幣2680元。

  

  圖4. Asetek 690LX-PN水冷散熱器(來源:參考資料13)

  2.Intel酷睿i7-980XIntel Core i7-980X採用32nm工藝製程和Gulftown核心,是Intel面向桌面PC市場推出的第一顆6核心CPU,相對之前的Bloomfield核心CPU,工藝更先進、核心更多、緩存更大,還保持了很好地向下兼容性,嚴格來說同屬Nehalem微架構衍生產品。尤其是CPU依然採用LGA 1366接口,用戶之前購買的X58主板只要升級Bios便可繼續支持新版32nm 6核心CPU,體驗6核心12線程帶來的至尊體驗。它擁有目前Intel桌面PC高端CPU的所有特性,具備超線程技術、睿頻加速技術、三通道DDR3內存控制器和三級緩存配備等,尤其是酷睿i7-980X還沒有鎖定倍頻,讓超頻用戶能夠以更簡便的方式挑戰極限[5]。

  

  圖5. Intel Core i7-980X的6核心架構圖(來源:參考資料5)

  3.華為麒麟9000華為Mate40手機搭載了華為海思自研的麒麟9000晶片,它是目前功能和性能最強5G多核心SoC晶片。參見下圖,該晶片上集成了8個CPU核心、3個NPU核心和24個核心的GPU,採用了5nm的製造工藝,其上集成了153億個電晶體。它與聯發科最強的5G手機晶片天璣2000相比,性能測試的跑分明顯佔優。可惜美國無理封堵了華為高端智慧型手機晶片的生產渠道,使華為旗艦手機Mate40系列可能成為絕版。

  

  圖6.華為最強5G手機晶片麒麟9000的多核心架構示意圖

  4.AppleM1:下圖是蘋果首款自研的Mac電腦8核心SoC晶片布圖。它具有4個高效能的冰風暴小核心(Icestorm)、4個高性能火風暴大核心(Firestorm)和8核心的GPU。可謂冰火四重天,處理能力十分強勁。該晶片以5nm工藝製造,其上集成了160億個電晶體。蘋果公司為新處理器系列啟動新的SoC命名方案,稱為Apple M1。

  

  圖7.蘋果自研的Mac電腦SoC晶片Apple M1的布圖(來源:參考資料19)

  5.VIACHA:威盛(VIA)最新基於x86的AI處理器是一個8核心SoC,它採用臺積電16nm工藝製造,晶片面積不超過195平方毫米,內部採用環形總線設計,串聯集成了八個x86 CPU核心、16MB共享三級緩存、四通道DDR4-3200內存控制器、PCIe 3.0控制器(44條)、南橋和IO功能,是一顆完整的SoC。據報導該晶片暫時命名為CHA。

  

  圖8.威盛的8核心AI處理器的晶片布局(左)和布圖(右)(來源:參考資料15)

  6.騰雲S2500:據報導[21],國產CPU廠商飛騰公司7月發布了一款面向伺服器應用的多核心CPU晶片——騰雲S2500,該晶片採用16nm工藝製造,晶片面積達400mm2,最多可配置64個FTC663架構的CPU核心,主頻2.0~2.2GHz,三級緩存64MB,支持八通道DDR4內存,可提供800Gbps帶寬的四個直連接口,支持2~8路並行,單系統可提供128~512個CPU核心的配置,熱設計功耗為150W。在飛騰2020生態合作夥伴大會上,長城、浪潮、同方、曙光、中興通訊等15家國內廠商也同時發布了各自基於騰雲S2500的多路伺服器產品,軟體生態建設取得了可喜突破。

  

  圖9.飛騰公司64核心CPU晶片騰雲S2500 (來源:網絡圖片)

  三、為什麼要採用多個核心?

  我們先從任務處理的角度來看這個問題。如果把CPU處理的事情叫做任務的話,以前的CPU只有一個核心,CPU只會「一心一用」地處理一個任務,幹完一件事再接著幹下一件事。專業上稱之為串行單任務處理。這在DOS作業系統的時代是合適的,這個時期對CPU的追求只有一條,那就是處理速度要儘可能地快。在Windows作業系統出現後,出現了多任務的處理需求,要求CPU可以「一心多用」,同時幹多件事情。專業上稱之為分時多任務處理。這個時期對CPU的追求一是處理速度要儘可能地快,二是同時可處理的任務儘可能地多。其實這種「一心多用」的處理方法是把時間分配給了多個任務,從宏觀上看CPU處理的任務多了,但從某項任務來看CPU對該項任務的處理速度變慢了。

  要實現CPU處理的任務更多、處理速度更快,人們自然想到了在晶片中集成多個CPU核心,採用「多心多用」的方式處理事務,因而就出現了多核心CPU的需求,而這種需求在伺服器CPU應用方面顯得尤為迫切。

  我們再從提高CPU時鐘頻率,加快處理速度的角度來看這個問題。無論是「一心一用」、「一心多用」、還是「多心多用」,只要提高了CPU的時鐘頻率,CPU的處理速度都會加快。如論是單任務還是多任務,就會在更短時間完成任務。因此,CPU發展的歷史就是隨著晶片技術的進步,CPU的時鐘頻率不斷提升的歷史,從早期的MHz級別不斷提升到目前的GHz級別,大約提升了1000倍左右。無論是單核心還是多核心,CPU時鐘頻率是人們選用CPU晶片的重要指標。

  過去很長一段時間裡,隨著Intel和AMD CPU速度越來越快,x86作業系統上的軟體的性能和速度自然會不斷提高,系統整機廠家只要對現有軟體作輕微設置就能坐享電腦系統整體性能提升的好處。

  但是隨著晶片工藝沿著摩爾定律發展,CPU集成度提高、電晶體密度加大,時鐘頻率提升,直接導致CPU晶片的功率不斷增大,散熱問題成為一個無法逾越的障礙。據測算,CPU主頻每增加1GHz,功耗將上升25瓦,而在晶片功耗超過150瓦後,現有的風冷散熱將無法滿足要求。2003年前後Intel推出的主頻為3.4GHz的Pentium4至尊版CPU晶片,最高功耗已達135瓦,有人給它送了一個「電爐」的綽號,更有好事者用它來玩煎蛋的遊戲。現在的伺服器CPU晶片Xeon W-3175標稱功耗為255W,默認頻率實測能達到380W,超頻的話甚至會突破500W,必須採用高端水冷系統來降溫。

  所以,功耗極限制約著CPU頻率的提升。下圖是CPU功率密度隨時間的變化趨勢圖,IntelPentium之後的CPU晶片,由於電晶體密度和時鐘頻率提升,CPU晶片的功率密度陡然上升,CPU產生的熱量將會超過太陽表面。

  

  圖10. CPU功率密度隨時間的變化趨勢圖(來源:魏少軍教授演講)

  綜上所述,追求多任務處理功能,追求處理速度提升是CPU晶片設計的兩大目標。以提升CPU時鐘頻率而加快處理速度又受到CPU功耗極限的制約,多核心CPU晶片成為解決上述矛盾的必由之路。目前,多核心CPU和SoC已成為處理器晶片發展的主流。

  四、多核心CPU用到哪些技術?

  與單核心CPU相比,多核心CPU在體系結構、軟體、功耗和安全性設計等方面面臨著巨大的挑戰,但也蘊含著巨大的潛能。本文參考了後附的參考資料1,對多核心CPU用到的技術作如下簡單介紹。

  1.超線程技術

  一個傳統CPU核心只有一個運算處理單元(Processing Unit,簡稱PU)和一個架構狀態單元(Architectual State,簡稱AS),在同一時間只能處理一個軟體線程(Thread)。採用了超線程(Hyper-Threading,簡稱HT)技術的CPU核心中包含一個PU和兩個AS,兩個AS共用這個PU。軟體在CPU核心上運行時,AS與軟體線程對接,並把線程的任務分配到PU中的相關單元中。所以,兩個AS就可以處理兩個軟體線程。

  用生產車間打個比方,PU是生產部門,有幾臺工具機用於生產;AS是跟單員,他同時只能跟一個任務訂單;軟體線程好比是任務訂單。如果生產車間只有一個AS時,這個車間同時只能處理一個任務訂單,PU的有些工具機有事幹,有些工具機可能無事幹而閒置。如果有兩個AS時,就能處理兩個任務訂單,並把任務分配到不同的工具機上去完成。

  所以,具有超線程的CPU核心的集成度增加量不大,但有兩個AS後使它看起來像兩個邏輯的CPU核心,就可以同時處理兩個軟體線程,大約可以提高40%的處理能力。所以,我們經常可以看到CPU晶片廣告,說某多核心CPU晶片是N個核心,2×N個線程,就是採用了超線程帶來的好處。否則,如果沒有採用超線程技術的話,多核心CPU晶片參數就只能寫成N個核心,N個線程。下圖給出了2核心CPU無超線程和有超線程的示意圖。

  

  圖11.多核心CPU的超線程的示意圖(來源:參考資料20)

  2.核心結構研究

  多核心CPU的結構分成同構(homogeneous)多核和異構(heterogeneous)多核兩類,同構多核是指晶片內多個CPU核心的結構是相同的,而異構多核是指晶片內多個CPU核心的結構各不相同。面對不同的應用場景,研究核心結構的實現方式對CPU整體性能至關重要。核心本身的結構,關係到整個晶片的面積、功耗和性能。怎樣繼承和發展傳統CPU的成果,也直接影響多核的性能和實現周期。同時,核心所用的指令系統對系統的實現也是很重要的,多核心採用相同的指令系統還是不同的指令系統,能否運行作業系統等,也是設計者要研究的重要問題。

  3.Cache設計技術

  CPU和主存儲器之間的速度差距對多核心CPU來說是個突出的矛盾,因此必須使用多級Cache來緩解。可分為共享一級Cache、共享二級Cache和共享主存三種方式。多核心CPU一般採用共享二級Cache的結構,即每個CPU核心擁有私有的一級Cache,並且所有CPU核心共享二級Cache。

  Cache本身的體系結構設計直接關係到系統整體性能。但是在多核心CPU中,共享Cache或獨有Cache孰優孰劣、是否在片上建立多級Cache、以及建立幾級Cache等,對整個晶片尺寸、功耗、布局、性能以及運行效率等都有很大的影響,需要認真研究和慎重對待。同時還要考慮多級Cache引發的一致性問題。

  4.核心間通信技術

  多核心CPU的各核心同時執行程序,有時需要在核心之間進行數據共享與同步,因此硬體結構必須支持CPU核心間的通信。高效通信機制是多核心CPU高性能的重要保障,比較主流的片上高效通信機制有兩種,一種是基於總線共享的Cache結構,另一種是基於片上的互連結構。

  總線共享Cache結構是指每個CPU核心擁有共享的二級或三級Cache,用於保存比較常用的數據,並通過核心間的連接總線進行通信。它的優點是結構簡單,通信速度高,缺點是基於總線的結構可擴展性較差。

  片上互連的結構是指每個CPU核心具有獨立的處理單元和Cache,各個CPU核心通過交叉開關電路或片上網絡等方式連接在一起。各個CPU核心間通過消息進行通信。這種結構的優點是可擴展性好,數據帶寬有保證,缺點是硬體結構複雜,且軟體改動較大。

  5.總線設計技術

  傳統CPU中,Cache不命中或訪問存儲器事件都會對CPU的執行效率產生負面影響,而總線接口單元(BIU)的工作效率會決定此影響的程度。在多核心CPU中,當多個CPU核心同時要求訪問內存,或多個CPU核心內私有Cache同時出現Cache不命中事件時,BIU對這些訪問請求的仲裁機制效率,以及對外存儲訪問的轉換機制的效率決定了多核心CPU系統的整體性能。

  6.針對多核心的作業系統

  對於多核心CPU,優化作業系統的任務調度是提升執行效率的關鍵。任務調度算法有全局隊列調度和局部隊列調度之分。前者是指作業系統維護一個全局的任務等待隊列,當系統中有一個CPU核心空閒時,作業系統就從全局任務等待隊列中選取就緒任務開始在此核心上執行。其優點是CPU核心利用率較高。後者是指作業系統為每個CPU核心維持一個局部的任務等待隊列,當系統中有一個CPU核心空閒時,便從該核心的任務等待隊列中選取就緒任務來執行。其優點是有利於提高CPU核心局部Cache命中率。大多數的多核心CPU作業系統採用的是基於全局隊列的任務調度算法。

  多核心CPU的中斷處理和單核CPU有很大不同。CPU核心之間需要通過中斷方式進行通信和協調,所以,CPU核心的本地中斷控制器和仲裁各CPU核心之間中斷的全局中斷控制器需要封裝在晶片內部。

  另外,多核心CPU作業系統是一個多任務系統。由於不同任務會競爭共享資源,因此需要系統提供同步與互斥機制。而傳統的用於單核心CPU的解決機制並不能滿足多核心的情況,需要利用硬體提供的「讀-修改-寫」的原始操作或其他同步互斥機制來進行保證。

  7.低功耗設計技術

  每兩三年CPU電晶體密度和功耗密度都會翻倍。低功耗和熱優化設計已經成為多核心CPU設計的重點。需要同時在作業系統級、算法級、結構級、電路級等多個層次上考慮。每個層次上實現的效果不同,抽象層次越高,功耗和溫度降低的效果越明顯。

  8.可靠性及安全性設計技術

  在今天的信息社會,CPU的應用無處不在,對CPU的可靠性和安全性提出了更高要求。一方面多核心CPU複雜性提高,低電壓、高主頻、高溫度對維持晶片安全運行帶來挑戰。另一方面,來自外界惡意攻擊越來越多,手段越來越先進,高可靠、安全性設計技術越來越受到重視。

  五、多核心CPU是如何工作?

  要弄明白多核心CPU是如何工作,要從應用程式、作業系統和CPU核心一起來分析。Windows作業系統作為任務調度者,按照進程(Process)和線程(Thread)為應用程式(Program)分配程序執行的硬體資源——CPU核心。一個進程對應一個應用程式,但是一個應用程式可以同時對應多個進程,通過多個進程來完成這個程序的執行。

  應用程式未執行的時候是「靜態」的,程序一旦被用戶啟動執行,就被作業系統接管變成「動態」的了。作業系統按照一個一個的進程管理著一批被用戶啟動了的程序。所以一個進程可以看作是一個「執行中的程序」,進程中包括了由作業系統分配給這個程序的基本資源。

  一個進程又被細分為多個線程,只有線程才能通過作業系統獲得CPU核心的使用權限來讓自己運行。只包含一個線程的進程可以叫做單線程程序,如果包含多個線程的進程,就可以叫做多線程程序了。

  程序的線程 要想獲得CPU時間,必須進入作業系統的線程隊列排隊,經過作業系統調度之後,獲得某個CPU核心的執行時間。作業系統對CPU核心的分派是非常複雜的過程,誰也無法用簡短的文字說清楚具體詳細的過程。以下按單核心CPU和4核心CPU兩種情況來示意說明,程序進程的一個個線程,是如何分派到CPU核心上進行執行的[7]。

  如果CPU是單核心的話,而且沒有採取超線程技術,線程隊列就只有1個,線程的選擇也只有1個。如果採取了超線程技術,單核心就擴展成2個邏輯核心,線程隊列就有2個,線程的選擇就有2個。如下圖所示。

  

  圖12.應用程式在單核心CPU上按線程調度執行的示意圖(無超線程)

  

  圖13.應用程式在單核心CPU上按線程調度執行的示意圖(有超線程)

  如果CPU是4核心的話,而且沒有採取超線程技術,線程隊列就只有4個,線程的選擇也只有4個。如果採取了超線程技術,4核心就擴展成8個邏輯核心,線程隊列就有8個,線程的選擇就有8個。如下圖所示。

  

  圖14.應用程式在4核心CPU上按線程調度執行的示意圖(無超線程)

  

  圖15.應用程式在4核心CPU上按線程調度執行的示意圖(有超線程)

  如果站在多核心CPU角度看,每個CPU核心不斷從作業系統收到要執行的軟體線程,按照程序指令去完成規定任務,它可能要使用存儲器、運算器、輸入輸出等部件,還要與其它CPU核心進行通信和傳遞數據,完成任務後還要報告。這些過程可看成一個一個的事件,都要通過事件中斷處理部件來協調。多核心CPU的硬體調度處理模式大致有三種[8][18]。

  1.對稱多處理(Symmetric Multi-Processing,簡稱SMP)是目前使用最多的模式。在SMP模式下,一個作業系統同等地管理著各個CPU核心,並為各個核心分配工作負載。目前,大多數的作業系統都支持SMP模式,例如Linux,Windows,Vxworks等。另外,這種模式通常用在同構多核CPU上,因為異構多核CPU的結構不同,實現SMP比較複雜。

  2.非對稱多處理(Asymmetric Multi-Processing,簡稱AMP)是指多個核心相對獨立地運行著不同的任務,每個核心可能運行不同的作業系統或裸機程序,或者不同版本的作業系統,但是有一個主導的CPU核心,用來控制其它從屬的CPU核心以及整個系統。這種模式大多情況是異構多核心CPU。例如MCU + DSP,MCU +FPGA等。當然,同構多核心CPU也可以用。

  3.邊界多處理(Bound Multi-processing,簡稱BMP)與SMP基本相同,唯一區別是開發者可以定義某個任務僅在某個CPU核心上執行。

  以上只是原理性的簡單介紹,如果要了解多核心CPU的硬體調度原理和實現細節,恐怕只能打進Intel或AMD公司內部,才能了解更多技術詳情。

  六、多核心CPU的仁智各見

  多核心CPU中的核心是否越多越好,多CPU系統中的CPU晶片是否也越多越好?同樣條件下是否具有超線程就比不具有超線程的好?回答是仁者見仁,智者見智。主要是要分清用在哪些場合,不能一概而論。

  首先,多核心CPU或者多CPU之間需要同步和調度,這是以時間開銷和算力損耗為代價的。如果CPU核心數或者CPU晶片數增加對系統處理能力提升是加分項的話,同步和調度帶來的時間開銷和算力損耗就是減分項。如果加分大於減分,而且成本增加可接受的話,則方案是可行的,否則就是不值當的方案。系統方案的評判除了要考慮CPU核心數量以外,還要考慮作業系統的差異、調度算法的不同,應用和驅動程序特點等因素,它們共同影響著系統的處理速度。以下是一些文章的討論觀點。

  1. CPU核心越多,執行速度不一定越快。這裡說的是「不一定」,因為一個線程可能要等待其它線程或進程完成後,才能輪到它繼續執行。在它等待別的線程或進程的時候,即便排隊隊列輪到了它,它也只能放棄運行權利而繼續等待,讓隊列後續線程超過它在CPU上執行。對它這個線程的程序來說是變慢了,但對系統來說,它起碼它讓開了位置讓其它線程繼續運行。多核心CPU肯定可以加速批量進程的執行,但對某個進程或者某類型的程序來說,未必是最快的。

  2.智慧型手機要向用戶提供優秀的使用體驗,不僅僅是靠CPU性能一個方面。除了CPU核心數這個因素以外,還應包括決定通信質量的基帶晶片的性能,再加上GPU的性能、遊戲和VR應用性能等。系統綜合性能好才是真的好。

  3.聯發科2015年推出10核心、3重架構等手機SoC晶片技術,後來又開發了10核心、4重架構helio X30,通過多重架構的方式來降低功耗。雖然聯發科在多核心SoC方面的技術優勢是毋庸置疑,但是高通在2015年底推出了僅有四個核心的驍龍820晶片,蘋果手機較早使用的SoC晶片也不過是雙核心而已。這些都表明,對於智慧型手機而言,多核心CPU或SoC的意義到底大不大,不可絕對斷言,需要從系統角度分析才能得出正確結論。

  結語:多核心CPU和SoC是為了滿足整機系統對處理能力和處理速度不斷提升的需求,在單核心CPU沿著摩爾定律向前發展,受到了晶片功率極限阻礙時,人們不得不選擇的一種突破路線。多核心CPU推動著作業系統的更新和升級,作業系統又決定了多核心CPU效能的發揮。多核心CPU技術的難點是多核心之間的信息傳遞、數據同步和任務調度等。系統性能優劣不能只考慮CPU核心數量,還要考慮作業系統、調度算法、應用和驅動程序等。多核心CPU技術和FinFET等3D晶片技術可以看作是延續摩爾定律生命的兩大關鍵技術。

  參考資料:

  1.科普中國,多核處理器,百度百科:https://baike.baidu.com

  2.佚名,ARM學習之圖解ARM,看準網:https://www.kanzhun.com

  3.Cortex-A8,搜狗百科:https://baike.sogou.com/v54973111.htm

  4.IT168 龍行天下,流金歲月:Intel桌面處理器歷史回顧,新浪網:http://tech.sina.com.cn/n/2006-08-02/133156397.shtml,2006.8.2

  5.佚名,全球首款桌面6核 i7-980X首發詳測,快科技:https://news.mydrivers.com/1/158/158379_1.htm,2010.3.11

  6.佚名,從ARM7,ARM9到Cortex-A7,A8,A9,A12,A15到Cortex-A53,A57,電子產品世界:http://www.eepw.com.cn/article/215182_5.htm,2014.1.6

  7.Ada_today,多核心和單核心CPU怎樣工作的?CSDN博客:https://blog.csdn.net/u014414429/article/details/24875421/,2014.5.2

  8. zamely,多核處理器基礎SMP&&BMP,CN博客網:https://www.cnblogs.com/zamely/p/4334979.html,2015.3.14

  9.重量V4216,多核處理器的發展歷程, 知乎網:https://zhidao.baidu.com/question/435213422142183884.html,2016.5.14

  10.佚名,來源於TechNews,多核心處理器發展走向瓶頸 聯發科腹背受敵,電子產品世界:http://www.eepw.com.cn/article/201607/294583.htm,2016.7.27

  11.企事錄,8張圖速覽新至強:Skylake架構、外貌與型號,搜狐網:https://www.sohu.com/a/156424490_281404,2017.7.12

  12.上方文Q,Intel Xeon W-3175X功耗實測:28核心超頻破500W,快科技:http://viewpoint.mydrivers.com/1/613/613590.htm,2019.1.31

  13.驅動之家,Asetek發布500W一體式水冷散熱器:28核心W-3175X專屬,百度:https://baijiahao.baidu.com/s?id=1624176225325117756&wfr=spider&for=pc,2019.1.31

  14.老狼,多核CPU和多個CPU有何區別?知乎:https://www.zhihu.com/question/20998226,2019.6.9

  15.驅動之家,威盛x86 AI處理器架構、性能公布:媲美Intel 32核心,看點快報:https://kuaibao.qq.com/s/20191212A009EG00,2019.12.12

  16.allway2,多核處理器發展,CSDN博客:https://blog.csdn.net/allway2/article/details/103614463,2019.12.19

  17.快科技,多核處理器還能走多遠?2050年用上1024核CPU,百度:https://baijiahao.baidu.com/s?id=1658158800729500154&wfr=spider&for=pc,2020.2.10

  18. tccxy_,多核處理器分類及運行方式,CSDN博客:https://blog.csdn.net/juewukun4112/article/details/105537832,2020.4.15

  19.anandtech,160億電晶體!完爆英特爾!蘋果首款Mac處理器詳細解讀及評測!微信公眾號【EETOP】,2020.11.11

  20.田夢傑,什麼是超線程技術?中關村在線:https://m.zol.com.cn/article/2737340.html,2012.2.17

  21.上方文Q,最強國產CPU亮劍!128核心、16通道DDR5,微信公眾號【硬體世界】,2020.12.29

  1000篇!晶片設計/製造精品文章免費送!

相關焦點

  • 電腦和手機的CPU差距到底有多大?哪種性能更強悍?深度分析一下
    但讀者朋友,我們都知道電腦和手機對我們的生活提供了極大的便利,但你們了解這兩種電子產品的cpu之間的差別有多大嘛?其實從一個公正的角度來說,這兩者之間沒有什麼可以相比的地方,因為手機和電腦是兩個完全不同的物品,他們的系統和硬體什麼的也也不盡相同,但如果需要細究的話,還是可以在某些方面進行對比一下的,下面就由小編帶你們看一下這兩者的比較。
  • 淺談手機中振動馬達電機的工作原理
    打開APP 淺談手機中振動馬達電機的工作原理 工程師飛燕 發表於 2018-06-29 11:05:00 手機振動馬達是永磁直流電機
  • CPU配置|cpuinfo參數
    如果想了解系統中CPU的提供商和相關配置信息,則可以通過/proc/cpuinfo文件得到。processor : 邏輯處理核編號;vendor_id : CPU製造商;cpu family : CPU產品系列代號;model : CPU屬於其系列中的哪一代的代號;model name :CPU屬於的名字及其編號、標稱主頻;stepping : CPU屬於製作跟新版本;microcode : CPU微代碼cpu MHz : CPU的實際試用主頻;cache size :
  • 初步了解霍爾傳感器及其工作原理
    對霍爾傳感器及其工作原理的初步認識霍爾元件是世界第三大傳感器產品。它被廣泛應用於工業、汽車、計算機、手機和新興消費電子產品。未來幾年,隨著越來越多的汽車電子和工業設計企業遷往中國,霍爾傳感器在中國市場的年銷售額將保持20%至30%的高增長率。同時,霍爾傳感器的相關技術仍在完善之中。可編程霍爾傳感器、智能霍爾元件和微型霍爾傳感器將具有良好的市場前景。什麼是霍爾傳感器?
  • APU、GPU、CPU之區別是什麼?APU未來會取代CPU嗎?
    APU是加速處理器的英文縮寫,是AMD率先推出的整合了x86、x64CPU處理核心和GPU處理核心的新型融聚處理器。CPU和GPU其實都只是計算機的一部分,二者誰也離不開誰,誰也不能代替誰。APU目前只有AMD公司生產。三者區別如下。1、CPU:是傳統意義上的中央處理器,是一臺計算機的運算核心和控制核心。
  • 6月份cpu天梯榜,告訴你麒麟990 5G晶片為何比驍龍855+排名更高
    因此決定手機性能的cpu,就越來越重要。對各家的cpu,我們可以通過cpu天梯榜排名來判斷其性能,以方便我們選擇合適的手機。我們可以看到在cpu天梯榜上,麒麟990 5G晶片排名是要高於驍龍855plus的。但是有很多用戶對這個排名,感到懷疑。確實高通驍龍的頂級晶片,一直都是處於安卓手機處理器的低端,而華為的麒麟晶片雖然很強大,但是目前並沒有超越高通。
  • cpu帶核顯和不帶核顯的區別
    打開APP cpu帶核顯和不帶核顯的區別 IT百科 發表於 2020-05-12 16:18:24   CPU帶核顯表示處理器中集成了核心顯卡,可以在無獨立顯卡的情況下顯示畫面。
  • 手機cpu性能天梯圖,iPhone12靠A14晶片成最強性能手機
    畢竟最重量級的產品,如蘋果iPhone12和華為mate40也都上市了,而決定一款手機性能的CPU晶片,重量級的產品也已經跟隨手機上市了。接下來我們就來看下當前的手機cpu性能天梯圖,讓大家對此有一個直觀的了解。性能最強的手機cpu,依然是蘋果系,那就是今年發布的A14晶片。
  • AP8022小功率開關電源晶片工作原理
    電源晶片AP8022內部集成有電流型PWM(脈衝寬度調製)控制器、固定頻率為55KHz的振蕩器和擊穿電壓為730V的高壓功率場效應管。驪微電子代理的該電源晶片內部還集成有過熱、過壓、過流保護電路和用於電源啟動的高壓電流源。
  • 華為的麒麟990 SoC到底是什麼,它怎麼就不叫CPU了?什麼是Soc?
    要想搞清楚這個問題,我們先來了解一下這兩個晶片的區別CPU還是那個CPU中央處理器 (英語:Central Processing Unit,縮寫:CPU)是計算機處理指令和處理數據的核心晶片。說起CPU,大家首先想到的肯定是8個強大的沒譜的核心,和一個垃圾到沒邊的核心顯卡兩部分。但是,從學術定義上CPU主要包含的兩個部分,可不是運算核心和核心顯卡。
  • A/D轉換組合工作原理剖和結構組成分析
    2 A/D轉換組合工作原理剖析  A/D轉換組合作為武器系統的核心部件,接口特性和功能與武器系統的兼容,是新A/D轉換組合研製成功的前提,因此,必須對引進A/D轉換組合進行詳細的分析研究,提取接口特性及其參數,分析組合功能和性能指標。
  • 汽車電動機控制器的工作原理是怎樣的
    打開APP 汽車電動機控制器的工作原理是怎樣的 麵包板 發表於 2020-03-15 19:44:00 交流電機的動力是由車載儲電池提供,通過車載儲電池對車輛提供直流電,但是正常的電動機卻需要交流電才能正常工作。因此把直流電變成交流電才是電動汽車工作的關鍵。 電動機控制器3大模塊 1、電子控制模塊(ElectronicController):是包括硬體電路和相應的控制軟體的統稱。
  • 晶片裡面的CPU、GPU、NPU究竟是什麼,它們是如何工作的
    晶片裡面的CPU、GPU、NPU究竟是什麼,它們是如何工作的眾所周知,近些年我國華為企業在國際上的發展遇到了困境,甚至將影響華為企業的存在與否,究其根源在於華為的成長引起了美國的恐慌,尤其是華為企業在5G網絡技術領域的發展
  • D/A與A/D轉換器工作原理解析
    在自動化儀表設備和自動控制系統中,常將一種信號轉換成另一種與標準量或參考量比較後的信號,以便將兩類儀表聯接起來,因此,轉換器常常是兩個儀表(或裝置)間的中間環節。下面就來看看D/A與A/D轉換器工作原理解析。   D/A轉換器的基本指導思想   數字量是用代碼按數位組合起來表示的,對於有權碼,每位代碼都有一定的權。
  • 超聲波風速風向傳感器監測及其工作原理
    打開APP 超聲波風速風向傳感器監測及其工作原理 發表於 2020-04-13 14:38:13 超聲波風速風向傳感器工作原理 超聲波風速傳感器的工作原理是利用超聲波時差法來實現風速風向的測量。由於聲音在空氣中的傳播速度,會和風向上的氣流速度疊加。
  • 選手機看cpu,最新手機cpu性能天梯圖,讓你不再買錯手機
    一款手機的性能是否強大,主要還是看它使用的cpu處理器,cpu性能強,自然手機的性能就會強。因此,選擇手機的時候,先要看它使用的是哪一款cpu。一款手機cpu的性能,主要由裡面的cpu和gpu的性能決定。其實,一款手機cpu處理器的跑分,主要是這兩個部分的成績。
  • 電腦cpu和手機cpu的差距有多大?
    電腦CPU和手機CPU註定奔著兩條不同的發展路線。或許以後屏幕可以隔空投屏隨意伸縮,並且不再需要實體的滑鼠和鍵盤,可能它們兩就會產生交集。至少現在是沒有辦法比較誰強誰弱,因為它們有各自的優點和缺點,也它們有各自的應用場景。
  • SOC晶片是什麼,它的功能及應用是什麼
    選購手機時,晶片的品牌和型號成為影響很多用戶購買與否的重要因素。但是有些用戶並不清楚SOC是一種什麼概念,那麼就讓我們通過以下內容探討一下! 什麼是SOC,System on Chip,簡稱Soc,即片上系統。國內外學術界一般傾向將SoC定義為將微處理器、模擬IP核、數字IP核和存儲器(或片外存儲控制接口)集成在單一晶片上,它通常是客戶定製的,或是面向特定用途的標準產品。
  • 系統級晶片(SoC)的複雜設計選擇:RISC-V處理器內核
    其次就是根據性能指標選擇流水線級數,多發射的數量等,根據應用需求選擇所需要支持的指令集,比如是否需要浮點計算,進而是否支持雙精度浮點計算。以上的標準都會對處理器內核IP的選擇產生影響。對於賽昉科技而言,SoC差異化設計主要體現在兩個方面。首先是基於應用場景的IP選型和自研IP達到最佳的性能功耗比。不同的應用場景需要功能各異的晶片,所以晶片的需求也更加多元化。
  • CPU超頻是什麼意思?CPU如何超頻
    目前CPU的生產可以說是非常精密的,以至於生產廠家都無法控制每塊CPU到底可以在什么樣的頻率下工作,廠家實際上就已經自己做了次測試,將能工作在高頻率下的CPU標記為高頻率的,然後可以賣更高的價錢。但為了保證它的質量,這些標記都有一定的富餘,也就是說, 一塊工作在600MHZ的CPU,很有可能在800MHZ下依然穩定工作,為了發掘這些潛在的富餘部分,我們可以進行超頻。