0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

SMP是什么 啟動(dòng)方式介紹

麥辣雞腿堡 ? 來(lái)源:TrustZone ? 作者:Hcoco ? 2023-12-05 15:23 ? 次閱讀

SMP是什么?

SMP 英文為Symmetric Multi-Processing ,是對(duì)稱多處理結(jié)構(gòu)的簡(jiǎn)稱,是指在一個(gè)計(jì)算機(jī)上匯集了一組處理器(多CPU),各CPU之間共享內(nèi)存子系統(tǒng)以及總線結(jié)構(gòu),一個(gè)服務(wù)器系統(tǒng)可以同時(shí)運(yùn)行多個(gè)處理器,并共享內(nèi)存和其他的主機(jī)資源。

CMP 英文為Chip multiprocessors,指的是單芯片多處理器,也指多核心。其思想是將大規(guī)模并行處理器中的SMP集成到同一芯片內(nèi),各個(gè)處理器并行執(zhí)行不同的進(jìn)程。

(1)CPU數(shù):獨(dú)立的中央處理單元,體現(xiàn)在主板上就是有多少個(gè)CPU槽位

(2)CPU核心數(shù)(CPU cores):在每一個(gè)CPU上,都可能有多核(core),每個(gè)核中都有獨(dú)立的ALU,F(xiàn)PU,Cache等組件,可以理解為CPU的物理核數(shù)。(我們常說(shuō)4核8線程中的核),指物理上存在的物體。

(3)CPU線程數(shù)(processor邏輯核):一種邏輯上的概念,并非真實(shí)存在的物體,只是為了更好地描述CPU的運(yùn)作能力。簡(jiǎn)單地說(shuō),就是模擬出的CPU核心數(shù)。

不過(guò)在這里我們這里指的是多個(gè)單核CPU組合到一起,每個(gè)核都有自己的一套寄存器。

一個(gè)系統(tǒng)存在多個(gè)CPU,成本會(huì)更高和管理也更困難。多核算是輕量級(jí)的SMP,物理上多核CPU還是封裝成一個(gè)CPU,但是在CPU內(nèi)部具有多個(gè)CPU的核心部件,可以同時(shí)運(yùn)行多個(gè)線程/進(jìn)程。但是需要CPU核心之間要共享資源,比如緩存。對(duì)程序員來(lái)說(shuō),它們之間的區(qū)別很小,大多數(shù)情況可以不做區(qū)分。我們?cè)?a target="_blank">嵌入式開(kāi)發(fā)中,大部分都是用的多核CPU。

這里我們就把這個(gè)SMP啟動(dòng)轉(zhuǎn)換成多核CPU啟動(dòng)。

2、啟動(dòng)方式

程序?yàn)楹慰梢栽诙鄠€(gè)cpu上并發(fā)執(zhí)行:他們有各自獨(dú)立的一套寄存器,如:程序計(jì)數(shù)器pc,棧指針寄存器sp,通用寄存器等,可以獨(dú)自 取指、譯碼、執(zhí)行,當(dāng)然內(nèi)存和外設(shè)資源是共享的,多核環(huán)境下當(dāng)訪問(wèn)臨界區(qū) 資源一般 自旋鎖來(lái)防止競(jìng)態(tài)發(fā)生。

soc啟動(dòng)的一般會(huì)從片內(nèi)的rom, 也叫bootrom開(kāi)始執(zhí)行第一條指令,這個(gè)地址是系統(tǒng)默認(rèn)的啟動(dòng)地址,會(huì)在bootrom中由芯片廠家固化一段啟動(dòng)代碼來(lái)加載啟動(dòng)bootloader到片內(nèi)的sram,啟動(dòng)完成后的bootloader除了做一些硬件初始化之外做的最重要的事情是初始化ddr,因?yàn)閟ram的空間比較小所以需要初始化擁有大內(nèi)存 ddr,最后會(huì)從網(wǎng)絡(luò)/usb下載 或從存儲(chǔ)設(shè)備分區(qū)上加載內(nèi)核到ddr某個(gè)地址,為內(nèi)核傳遞參數(shù)之后,然后bootloader就完成了它的使命,跳轉(zhuǎn)到內(nèi)核,就進(jìn)入了操作系統(tǒng)內(nèi)核的世界。

bootloader將系統(tǒng)的控制權(quán)交給內(nèi)核之后,他首先會(huì)進(jìn)行處理器架構(gòu)相關(guān)初始化部分,如設(shè)置異常向量表,初始化mmu(之后內(nèi)核就從物理地址空間進(jìn)入了虛擬地址空間的世界,一切是那么的虛無(wú)縹緲,又是那么的恰到好處)等等,然后會(huì)清bss段,設(shè)置sp之后跳轉(zhuǎn)到C語(yǔ)言部分進(jìn)行更加復(fù)雜通用的初始化,其中會(huì)進(jìn)行內(nèi)存方面的初始化,調(diào)度器初始化,文件系統(tǒng)等內(nèi)核基礎(chǔ)組件 初始化工作,隨后會(huì)進(jìn)行關(guān)鍵的從處理器的引導(dǎo)過(guò)程,然后是各種實(shí)質(zhì)性的設(shè)備驅(qū)動(dòng)的初始化,最后 創(chuàng)建系統(tǒng)的第一個(gè)用戶進(jìn)程init后進(jìn)入用戶空間執(zhí)行用戶進(jìn)程宣誓內(nèi)核初始化完成,可以進(jìn)程正常的調(diào)度執(zhí)行。

系統(tǒng)初始化階段大多數(shù)都是主處理器做初始化工作,所有不用考慮處理器并發(fā)情況,一旦從處理器被bingup起來(lái),調(diào)度器和各自的運(yùn)行隊(duì)列準(zhǔn)備就緒,多個(gè)任務(wù)就會(huì)均衡到各個(gè)處理器,開(kāi)始了并發(fā)的世界,一切是那么的神奇。

soc在啟動(dòng)階段除了一些特殊情況外(如為了加快啟動(dòng)速度,在bl2階段通過(guò)并行加載方式同時(shí)加載bl31、bl32和bl33鏡像),一般都沒(méi)有并行化需求。因此只需要一個(gè)cpu執(zhí)行啟動(dòng)流程即可,這個(gè)cpu被稱為primary cpu,而其它的cpu則統(tǒng)一被稱為secondary cpu。為了防止secondary cpu在啟動(dòng)階段的執(zhí)行,它們?cè)趩?dòng)時(shí)必須要被設(shè)置為一個(gè)特定的狀態(tài)。(有時(shí)候?yàn)榱嗽黾訂?dòng)速度,必須對(duì)時(shí)間敏感的設(shè)備,就可能啟動(dòng)的時(shí)候整個(gè)從核并行跑一些任務(wù))

當(dāng)primary cpu完成操作系統(tǒng)初始化,調(diào)度系統(tǒng)開(kāi)始工作后,就可以通過(guò)一定的機(jī)制啟動(dòng)secondary cpu。顯然secondary cpu不再需要執(zhí)行啟動(dòng)流程代碼,而只需直接跳轉(zhuǎn)到內(nèi)核中執(zhí)行即可。

主流程啟動(dòng)初始化一般來(lái)說(shuō)都是主核在干的,當(dāng)系統(tǒng)完成了初始化后就開(kāi)始啟動(dòng)從核。 這就像在啟動(dòng)的大門(mén),只有主核讓你過(guò)了,其他的先在門(mén)外等著。當(dāng)cpu0啟動(dòng)到kernel后,就會(huì)去門(mén)口,把它們的門(mén)禁卡給它們,卡上就寫(xiě)的它們的目的地班級(jí)是哪里。如果沒(méi)有這個(gè)門(mén)禁卡的cpu,說(shuō)明地址為0,就繼續(xù)在原地等著。

故其啟動(dòng)的關(guān)鍵是如何將內(nèi)核入口地址告知secondary cpu,以使其能跳轉(zhuǎn)到正確的執(zhí)行位置。

aarch64架構(gòu)實(shí)現(xiàn)了兩種不同的啟動(dòng)方式,spin-table和psci。

其中spin-table方式非常簡(jiǎn)單,但其只能被用于secondary cpu啟動(dòng),功能比較單一。

隨著aarch64架構(gòu)電源管理需求的增加(如cpu熱插拔、cpu idle等),arm設(shè)計(jì)了一套標(biāo)準(zhǔn)的電源管理接口協(xié)議psci。該協(xié)議可以支持所有cpu相關(guān)的電源管理接口,而且由于電源相關(guān)操作是系統(tǒng)的關(guān)鍵功能,為了防止其被攻擊,該協(xié)議將底層相關(guān)的實(shí)現(xiàn)都放到了secure空間,從而可提高系統(tǒng)的安全性。

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 處理器
    +關(guān)注

    關(guān)注

    68

    文章

    19100

    瀏覽量

    228814
  • cpu
    cpu
    +關(guān)注

    關(guān)注

    68

    文章

    10804

    瀏覽量

    210829
  • 多核
    +關(guān)注

    關(guān)注

    0

    文章

    43

    瀏覽量

    12309
  • SMP
    SMP
    +關(guān)注

    關(guān)注

    0

    文章

    71

    瀏覽量

    19614
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    【深圳SMP03,SMP03】

    `SMP03,30G信號(hào)源,二手SMP03 SMP03,30G信號(hào)源,二手SMP03型號(hào):R & S SMP02,
    發(fā)表于 02-01 16:32

    SMP04|SMP22|信號(hào)源|SMP04 現(xiàn)金回收

    找不到聯(lián)系方式,請(qǐng)?jiān)跒g覽器上搜索一下,旺貿(mào)通儀器儀 SMP04 SMP22SMP0420G信號(hào)源,SMP04,SMP02 20G信號(hào)源,二手
    發(fā)表于 12-31 17:51

    RT-Thread SMP介紹與移植資料分享

    次級(jí) CPU 自身硬件部分的初始化不能由 CPU0 完成,因?yàn)槠渥陨碛布荒苡善渌?CPU 訪問(wèn)。CPU0 啟動(dòng)流程在 SMP 平臺(tái)上,啟動(dòng)核心 CPU0 的啟動(dòng)流程和單核 CPU 上
    發(fā)表于 04-27 14:38

    RT-Thread框架下的SMP支持

    ipi_isr_handler)調(diào)度與同步臨界區(qū)保護(hù)是需要特別注意的。對(duì)于 SMP 通過(guò)關(guān)中斷的方式并不能阻止多個(gè) CPU 對(duì)共享資源的并發(fā)訪問(wèn),需要通過(guò)自旋鎖機(jī)制進(jìn)行保護(hù)(在次級(jí) CPU 啟動(dòng)中就
    發(fā)表于 02-13 15:02

    SMP-04采樣保持四放大器和SMP-08 SMP-18采樣

    SMP-04采樣保持四放大器和SMP-08 SMP-18采樣保持八放大器的應(yīng)用:
    發(fā)表于 06-03 14:54 ?34次下載
    <b class='flag-5'>SMP</b>-04采樣保持四放大器和<b class='flag-5'>SMP</b>-08 <b class='flag-5'>SMP</b>-18采樣

    SMP技術(shù)

    SMP技術(shù) SMP英文全稱為Symmetrical Multi-Processing,意指“對(duì)稱多處理”技術(shù),是指在一個(gè)計(jì)算機(jī)上匯集了一組處理器—即多CPU,各CPU之
    發(fā)表于 12-17 14:08 ?4514次閱讀

    啟動(dòng)啟動(dòng)方式

    啟動(dòng)器是一種集軟啟動(dòng)、軟停車(chē)、輕載節(jié)能和多功能保護(hù)于一體的電機(jī)控制裝備。實(shí)現(xiàn)在整個(gè)啟動(dòng)過(guò)程中無(wú)沖擊而平滑的啟動(dòng)電機(jī),而且可根據(jù)電動(dòng)機(jī)負(fù)載的特性來(lái)調(diào)節(jié)
    的頭像 發(fā)表于 09-19 17:04 ?2.3w次閱讀

    RT-Thread文檔_RT-Thread SMP 介紹與移植

    RT-Thread文檔_RT-Thread SMP 介紹與移植
    發(fā)表于 02-22 18:31 ?9次下載
    RT-Thread文檔_RT-Thread <b class='flag-5'>SMP</b> <b class='flag-5'>介紹</b>與移植

    表面貼裝封裝技術(shù)SMP介紹

    SMP是指采用表面貼裝技術(shù) (Surface Mounted Technology, SMT) 將集成電路安裝到PCB 上。
    的頭像 發(fā)表于 03-06 14:41 ?6828次閱讀

    SMP是什么?多核芯片(SMP)的啟動(dòng)方法

    SMP 英文為Symmetric Multi-Processing ,是對(duì)稱多處理結(jié)構(gòu)的簡(jiǎn)稱,是指在一個(gè)計(jì)算機(jī)上匯集了一組處理器(多CPU),各CPU之間共享內(nèi)存子系統(tǒng)以及總線結(jié)構(gòu),一個(gè)服務(wù)器系統(tǒng)可以同時(shí)運(yùn)行多個(gè)處理器,并共享內(nèi)存和其他的主機(jī)資源。
    的頭像 發(fā)表于 07-26 09:26 ?1.7w次閱讀
    <b class='flag-5'>SMP</b>是什么?多核芯片(<b class='flag-5'>SMP</b>)的<b class='flag-5'>啟動(dòng)</b>方法

    RT-Thread SMP啟動(dòng)流程

    SMP(Symmetric Multi-processing) :對(duì)稱多處理,在一個(gè)計(jì)算機(jī)上匯集了一組處理器 (多 CPU), 各 CPU 之間共享內(nèi)存子系統(tǒng)以及總線結(jié)構(gòu)。
    的頭像 發(fā)表于 08-03 15:10 ?1075次閱讀
    RT-Thread <b class='flag-5'>SMP</b><b class='flag-5'>啟動(dòng)</b>流程

    SMP多核啟動(dòng)cpu操作函數(shù)

    其中spin-table啟動(dòng)方式的回調(diào)如下: const struct cpu_operations smp_spin_table_ops = {.name= "spin-table
    的頭像 發(fā)表于 12-05 16:04 ?666次閱讀
    <b class='flag-5'>SMP</b>多核<b class='flag-5'>啟動(dòng)</b>cpu操作函數(shù)

    介紹幾種常見(jiàn)的電機(jī)啟動(dòng)方式

    電機(jī)控制的方法有很多種,包括直接啟動(dòng)、軟啟動(dòng)、變頻啟動(dòng)、星-三角啟動(dòng)等。不同的啟動(dòng)方式適用于不同
    的頭像 發(fā)表于 12-11 14:42 ?2364次閱讀

    電機(jī)控制具體是指什么?有哪些啟動(dòng)方式?

    電機(jī)控制的方法有很多種,包括直接啟動(dòng)、軟啟動(dòng)、變頻啟動(dòng)、星-三角啟動(dòng)等。不同的啟動(dòng)方式適用于不同
    的頭像 發(fā)表于 12-14 15:51 ?994次閱讀

    單相電機(jī)的啟動(dòng)方式是什么?如何啟動(dòng)?

    單相電機(jī)是一種常見(jiàn)的電機(jī)類(lèi)型,廣泛應(yīng)用于家用電器、工業(yè)設(shè)備和各種小型機(jī)械中。由于其結(jié)構(gòu)簡(jiǎn)單、成本低廉、維護(hù)方便等特點(diǎn),單相電機(jī)在許多領(lǐng)域得到了廣泛應(yīng)用。然而,單相電機(jī)的啟動(dòng)方式與三相電機(jī)有所不同
    的頭像 發(fā)表于 10-23 09:15 ?176次閱讀