• 正文
  • 相關推薦
申請入駐 產業(yè)圖譜

一文了解多核CPU和單核的區(qū)別

2021/10/30
1432
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點資訊討論

昨天有同學問我多核CPU和單核的區(qū)別大不大,今天簡單寫一篇回復下吧。大家有其他問題也可以文末給我留言,我會盡量抽時間寫文回復。

首先回顧下基本概念,CPU,就是中央處理器,包括運算器和控制器。cpu的主要功能就是“一行一行的執(zhí)行代碼”。所以大家可以把cpu看成是醫(yī)院的醫(yī)生診室,在一定時間內執(zhí)行一行代碼(給一個病人診斷治療)。

所以單核cpu就是,代碼經(jīng)過前面一系列的前導操作(類似于醫(yī)院掛號),然后到cpu處執(zhí)行時發(fā)現(xiàn),就只有一個cpu,大家排隊執(zhí)行。(類似于10個掛號窗口掛號,結果跑到醫(yī)生那只有一個醫(yī)生,只能排隊等)。

這時候想要提升系統(tǒng)性能,只有兩個辦法,要么提升cpu性能(讓醫(yī)生看病快點),要么多加幾個cpu(多整幾個醫(yī)生)。

多年前英特爾奔騰年代不斷提升主頻,就是提升cpu性能的思路。那個時候正是我讀大學的時候,配電腦就是分析主頻,秀操作就是超頻。還有人搞什么液氮冷卻超頻……

后來主頻實在玩不下去了,因為隨著主頻提升對工藝要求,EMI/EMC要求,發(fā)熱量等要求太高,扛不住了,所以不得不轉換思路,開始研究多核這條路了(一個醫(yī)生已經(jīng)007了,實在受不了了,不得不多配幾個醫(yī)生了)。

于是乎整起了多核心,多個cpu同步運行指令,這速度就起來了。多核還有兩種不同思路,一種叫對稱多核心,就是多個核心是完全相同的,譬如4核cortex-a53,這樣的4個核心都是同一種內核a53,這種術語叫SMP。還有另一種就是多個核心不一樣,譬如stm32mp157,內置2個cortex-a7,1個cortex-m4核心,所以它內部是有a7和m4兩種不同類型的核心的,這種術語叫AMP。

一般經(jīng)常說到的多核問題都是SMP的多核問題,amp這種析構多核大多數(shù)人還不太接觸。我們今天主要是想說說smp。我從以下幾個問題角度來講一下。

1 多核的效率是單核的倍數(shù)嗎?

譬如4核A53的cpu,性能是單核A53的4倍嗎?理論上是,但是實際不可能,至少有兩方面的損耗。

一個是多個核心的其他共用資源限制。譬如內存,你換了4核cpu難道內存也會加4倍嗎?譬如cache,4核cpu的cache也是4倍設計嗎?譬如寄存器,每個內核的寄存器都是獨立的單核倍數(shù)設計嗎?這就好像醫(yī)院一樣,1個醫(yī)生換4個醫(yī)生,但是做B超檢查的還是一臺機器,性能瓶頸就從醫(yī)生轉到B超檢查了,不可能性能提升4倍的。

另一個是多核cpu之間的協(xié)調管理損耗。譬如你有4個任務要執(zhí)行,怎么評論分配給多個cpu核心,避免那種“旱的旱死,澇的澇死”的情況,這就是所謂負載均衡的問題,在支持多核的os調度器設計時要考慮的。譬如多個核心同時運行兩個相關的任務,需要考慮任務同步的,這也需要消耗額外性能。

這就好像公司工作一樣,一個人的時候至少不用開會浪費時間,自己跟自己商量就行了。兩個人就要開會同步工作,協(xié)調分配,所以工作效率絕對不可能達到2倍。要是幾千幾萬人呢?那一天工作8小時有6小時在開會,干活時間只有30%不到了。

但是多核心宏觀上總是提升了系統(tǒng)總體性能的,這就好像公司,團隊人多了對外輸出能力總是更強的(管理不失水準情況下)。所以SMP是目前提升系統(tǒng)性能的一種主流思路。

2 多核在編程上有區(qū)別嗎?

如果你是做操作系統(tǒng)底層開發(fā)移植,那么多核和單核是有區(qū)別的,這個大家不妨去看看一些SMP SOC的Linux kernel源碼就知道了,在我們經(jīng)常分析的head.S中就有不少處理smp相關的代碼。

但是如果你是做應用層開發(fā),那對你來說區(qū)別很小了。

現(xiàn)在崇尚大家用多線程編程,也是因為SMP的硬件成為主流了,編程時把工作分開到多個線程中,這樣調度器就可以將他們同時調度到多個cpu去運行,就可以提升系統(tǒng)性能,讓你感覺到軟件運行速度更快了。所以多線程編程要注意同步和臨界區(qū)問題等,也都是并行運行帶來的。

相關推薦

登錄即可解鎖
  • 海量技術文章
  • 設計資源下載
  • 產業(yè)鏈客戶資源
  • 寫文章/發(fā)需求
立即登錄

微信公眾號《朱老師IT充電站》主筆。先后從事電子工程師、單片機軟件工程師、嵌入式linux軟件工程師、物聯(lián)網(wǎng)軟件工程師、架構師等工作,教育品牌<朱老師物聯(lián)網(wǎng)大講堂>創(chuàng)始人,暢銷書作者。擅長U-Boot、linux kernel等嵌入式底層和系統(tǒng)層開發(fā)、架構設計。擅長匯編、C/C++、Java、C#等常用開發(fā)語言。被授予:IBM技術專家、華為云享專家、51CTO學院金牌講師等稱號。