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

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

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

多核處理器啟動(dòng)的基本原理

安芯教育科技 ? 來(lái)源:安芯教育科技 ? 2023-06-14 09:24 ? 次閱讀

本文選自極術(shù)專欄《IC設(shè)計(jì)》的文章,授權(quán)轉(zhuǎn)自微信公眾號(hào)老秦談芯。本篇將介紹多核處理器的啟動(dòng)過(guò)程。

在早些年前,一個(gè)中央處理器(CPU)里面只有一個(gè)處理器核(Core)。那時(shí)候CPU的性能提升主要靠的是提升處理器工作主頻。定性分析,我們假定一個(gè)軟件在編譯完成后,對(duì)應(yīng)的需要執(zhí)行的指令總數(shù)是固定的,那么處理器主頻越高,執(zhí)行這些指令用的時(shí)間越少,也就是處理器的性能越高。定量分析,處理器的性能公式:CPU時(shí)間 = IC x CPI x時(shí)鐘周期時(shí)間,其中IC是指令的條數(shù),CPI是每時(shí)鐘周期指令數(shù)。從上述公式可以看出提升CPU性能可以從三方面入手:時(shí)鐘頻率,CPI 和指令的條數(shù)。

隨著集成電路的發(fā)展,人們發(fā)現(xiàn)提高處理器主頻越來(lái)越難以實(shí)現(xiàn)了。那么,能不能把原來(lái)的一個(gè)任務(wù)分解成多個(gè)子任務(wù)并行執(zhí)行,這樣是不是就會(huì)提升處理器的性能呢?在前面我們講過(guò),雖然現(xiàn)在的處理器有了操作系統(tǒng)加持,看起來(lái)能夠并行執(zhí)行很多個(gè)不同的程序。但是實(shí)際上在某一段時(shí)間內(nèi),一個(gè)處理器核只能執(zhí)行一個(gè)程序,操作系統(tǒng)只是通過(guò)時(shí)間片輪轉(zhuǎn)的方式讓所有的程序分時(shí)執(zhí)行,看起來(lái)像所有程序并行執(zhí)行一樣。那如果有很多個(gè)處理器核,每個(gè)核執(zhí)行一個(gè)程序,是不是會(huì)提升整體性能呢?這兩個(gè)問(wèn)題的答案都是肯定的。有了多核處理器,就可以并行執(zhí)行多個(gè)程序,也可以并行執(zhí)行一個(gè)程序(前提是這個(gè)程序可拆解)。對(duì)于并行執(zhí)行的性能提升,定量分析可以參考Amdahl定律。

不管單核處理器還是多核處理器設(shè)計(jì),都是一個(gè)非常宏大的話題。以上只是泛泛而談,不再展開(kāi)。我們今天具體看看處理器的啟動(dòng)過(guò)程。在分析多核處理器啟動(dòng)之前,我們先來(lái)看看一個(gè)單核的計(jì)算機(jī)系統(tǒng)是如何啟動(dòng)的。假設(shè)大家對(duì)內(nèi)存管理,TLB,緩存(Cache),DDR,PCIe這些有一些基礎(chǔ)知識(shí)。

6fc84d2c-0a4f-11ee-962d-dac502259ad0.png

當(dāng)我們按下電源開(kāi)關(guān)以后,系統(tǒng)的時(shí)鐘生成單元會(huì)最先工作,這時(shí)候處在參考時(shí)鐘ref_clk下(通常是10-100MHz),待到PLL輸出穩(wěn)定后,時(shí)鐘生成單元會(huì)把給處理器的時(shí)鐘切換到正常工作頻率,并釋放處理器的復(fù)位信號(hào),通常我們稱這個(gè)復(fù)位為冷復(fù)位。
無(wú)論采用何種指令系統(tǒng)的處理器, 復(fù)位后的第一條指令都會(huì)從一個(gè)預(yù)先定義的特定地址取回。處理器的執(zhí)行就從這條指令開(kāi)始。處理器的啟動(dòng)過(guò)程, 實(shí)際上就是一個(gè)特定程序的執(zhí)行過(guò)程。這個(gè)程序我們稱為BIOS(Basic Input Output System, 基本輸入輸出系統(tǒng)),也有稱為Bootloader,或者統(tǒng)統(tǒng)歸為固件(Firmware)?,F(xiàn)代計(jì)算機(jī)系統(tǒng)的啟動(dòng)代碼很復(fù)雜了,但是本文是從硬件角度去分析,所以就不嚴(yán)格區(qū)分這幾個(gè)軟件概念了。
處理器預(yù)先定義的起始地址會(huì)在系統(tǒng)總線中映射到一個(gè)存儲(chǔ)設(shè)備上,這個(gè)設(shè)備可能是內(nèi)部的ROM,也可能是外部Flash。如果把處理器從開(kāi)始到結(jié)束比作一場(chǎng)大戲,啟動(dòng)過(guò)程就是序幕,那么現(xiàn)在才剛剛開(kāi)始準(zhǔn)備工作。
當(dāng)CPU拿到第一條指令,啟動(dòng)過(guò)程就開(kāi)始了。所謂啟動(dòng)初始化過(guò)程,就是把計(jì)算機(jī)系統(tǒng)內(nèi)部每個(gè)模塊的工作狀態(tài)調(diào)整到一個(gè)確定的狀態(tài),其實(shí)就是一個(gè)熵減的過(guò)程?,F(xiàn)在的處理器設(shè)計(jì)大都是基于Load/Store架構(gòu),所以簡(jiǎn)單說(shuō),初始化過(guò)程就是處理器通過(guò)一大堆的load和store指令把復(fù)位后某些沒(méi)有固定態(tài)的寄存器或者模塊設(shè)置到固定態(tài)(嚴(yán)格意義上,這么說(shuō)不十分準(zhǔn)確)。
處理器啟動(dòng)后的第一條指令的地址一定是實(shí)地址,或者說(shuō)是直接地址翻譯模式(虛地址和實(shí)地址有直接的對(duì)應(yīng)關(guān)系)下的地址,因?yàn)檫@時(shí)候的TLB還沒(méi)有被初始化,尚不能正常工作。這時(shí)候的指令或數(shù)據(jù)訪問(wèn)是uncacheable的,也就是不經(jīng)過(guò)高速緩存,原因一樣,高速緩存還沒(méi)有被初始化。
在初始化過(guò)程的前期,一般最先初始化調(diào)試接口,通常是UART串口。這樣做的好處是在早期就可以提供一個(gè)簡(jiǎn)單的交互接口,如果后面的初始化過(guò)程跑不下去了,也能進(jìn)行簡(jiǎn)單的調(diào)試。通常情況下,I/O設(shè)備的寄存器會(huì)跟內(nèi)存空間映射到一起,也就是所謂的memory mapped方式,這樣處理器可以像訪問(wèn)內(nèi)存空間一樣去訪問(wèn)這些I/O設(shè)備(我們先不考慮某些系統(tǒng)中可以通過(guò)特殊指令訪問(wèn)I/O設(shè)備的做法)。
調(diào)試接口的初始化完成后,就是TLB初始化。TLB作為一個(gè)地址映射的管理模塊,主要負(fù)責(zé)操作系統(tǒng)里地址空間的管理。系統(tǒng)剛上電時(shí),TLB里的內(nèi)容是殘留或者隨機(jī)的,換句話說(shuō),TLB里面的所有表項(xiàng)都是錯(cuò)誤的。TLB的初始化主要是將全部表項(xiàng)初始化為無(wú)效,將TLB的每項(xiàng)逐一清空, 以免程序中使用的地址被未初始化的TLB表項(xiàng)所錯(cuò)誤映射。這個(gè)過(guò)程可以由硬件完成,也可以由軟件完成(通過(guò)特殊指令),不同指令集的處理器有不同的方式。
同理,在系統(tǒng)復(fù)位之后,Cache同樣也處于一個(gè)未經(jīng)初始化的狀態(tài), 也就是說(shuō)Cache里面可能包含殘留的或隨機(jī)的數(shù)據(jù), 如果不經(jīng)初始化, 對(duì)于Cache空間的訪問(wèn)也可能會(huì)導(dǎo)致錯(cuò)誤的命中。大多數(shù)情況下對(duì)Cache的初始化就是對(duì)Tag的初始化,只要將其中的Cache塊狀態(tài)設(shè)置為無(wú)效, 其它部分的隨機(jī)數(shù)據(jù)就不會(huì)產(chǎn)生影響?,F(xiàn)在的處理器設(shè)計(jì)中,緩存系統(tǒng)大多數(shù)情況下會(huì)采用分層結(jié)構(gòu),對(duì)于多核處理器,一般L1緩存是獨(dú)享的,最后一級(jí)緩存是共享的。不管單核處理器系統(tǒng)還是多核處理器系統(tǒng),都要對(duì)所有層級(jí)的緩存做初始化。
接下來(lái)就是內(nèi)存的初始化了,在此步驟之前的代碼執(zhí)行要么是處理器直接讀ROM/Flash里面的指令,要么是把外部存儲(chǔ)器的讀到芯片內(nèi)部RAM,處理器從RAM讀取指令。不管哪種方式,處理器執(zhí)行的速度都會(huì)比較慢。內(nèi)存控制器的初始化包括兩個(gè)相對(duì)獨(dú)立的部分, 一是根據(jù)內(nèi)存的行地址、列地址等對(duì)內(nèi)存地址映射進(jìn)行配置, 二是根據(jù)協(xié)議對(duì)內(nèi)存信號(hào)調(diào)整的支持方式對(duì)內(nèi)存讀寫(xiě)信號(hào)相關(guān)的寄存器進(jìn)行訓(xùn)練(Training), 以保證傳輸時(shí)的數(shù)據(jù)完整性。 內(nèi)存初始化完成后,就要對(duì)外部設(shè)備進(jìn)行初始化,首先要完成的是外部設(shè)備的探測(cè)和加載。這部分主要是指PCIe的訓(xùn)練,設(shè)備枚舉,并加載驅(qū)動(dòng)等動(dòng)作。這也是一個(gè)比較大的話題,不展開(kāi)了。

至此,為了加載操作系統(tǒng)的基本環(huán)境已完成,可以進(jìn)入操作系統(tǒng)內(nèi)核了。單核處理器的啟動(dòng)初始化過(guò)程也就結(jié)束了。
對(duì)于多核處理器系統(tǒng),情況復(fù)雜一些。一般是有一個(gè)主核(有時(shí)叫core 0)先去完成上述的操作。主核的啟動(dòng)工作完成后,再去喚醒其它的處理器核(可以稱為從核)。從核負(fù)責(zé)初始化私有的TLB和cache等資源,啟動(dòng)之后進(jìn)入空閑(Idle)狀態(tài),直至進(jìn)入操作系統(tǒng)再由主核進(jìn)行調(diào)度。多核處理器的內(nèi)核間通信一般會(huì)通過(guò)信箱(Mailbox)機(jī)制或者核間中斷機(jī)制。信箱機(jī)制可以是設(shè)計(jì)專用的信箱寄存器,主要是為了在內(nèi)存還沒(méi)有初始化前就讓所有處理器核能夠有效通。如果是通過(guò)信箱機(jī)制,從核在等待喚醒的時(shí)候要去定時(shí)查詢自己的信箱寄存器,如果發(fā)現(xiàn)主核喚醒自己,就要從空閑狀態(tài)出來(lái)了??梢钥闯?,信箱寄存器機(jī)制需要處理器輪詢,所以通信效率不高,在休眠/喚醒這類不頻繁的操作中還可以,如果是比較頻繁的核間通信就不適用了,要采取中斷機(jī)制。

以上是多核處理器啟動(dòng)的基本原理,至于具體實(shí)現(xiàn),不同的廠商有不同的設(shè)計(jì)。比如在ARM體系里面,往往會(huì)有一個(gè)小的系統(tǒng)控制單元(MSCP,Management & System Control Processor)輔助完成簡(jiǎn)單外設(shè)初始化,安全認(rèn)證等等工作,然后由主核和從核完成剩余的啟動(dòng)工作。
責(zé)任編輯:彭菁

聲明:本文內(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)投訴
  • 電源開(kāi)關(guān)
    +關(guān)注

    關(guān)注

    12

    文章

    1030

    瀏覽量

    44439
  • 程序
    +關(guān)注

    關(guān)注

    116

    文章

    3756

    瀏覽量

    80751
  • 多核處理器
    +關(guān)注

    關(guān)注

    0

    文章

    109

    瀏覽量

    19889

原文標(biāo)題:多核處理器啟動(dòng)過(guò)程淺析

文章出處:【微信號(hào):Ithingedu,微信公眾號(hào):安芯教育科技】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    嵌入式微處理器和接口詳技術(shù)詳解

    的結(jié)構(gòu)和類型:嵌入式微處理器的分類、典型的8位微處理器的結(jié)構(gòu)和特點(diǎn)、典型的16位微處理器的結(jié)構(gòu)和特點(diǎn)、典型的32位微處理器的結(jié)構(gòu)和特點(diǎn)、DSP處理器
    發(fā)表于 06-28 13:55

    嵌入式微處理器和接口詳技術(shù)詳解

    以太網(wǎng)的基本原理與結(jié)構(gòu)、藍(lán)牙接口的基本原理與結(jié)構(gòu)、1394接口的基本原理與結(jié)構(gòu)?! ?、 嵌入式系統(tǒng)電源:電源接口技術(shù)、電源管理技術(shù)?! ?、電子電路設(shè)計(jì)基礎(chǔ):電路設(shè)計(jì)、PCB電路設(shè)計(jì)、電子設(shè)計(jì)、電子電路測(cè)試?! ∩鲜鰹樾【帪樽x
    發(fā)表于 10-30 14:33

    多核處理器的優(yōu)點(diǎn)

    多內(nèi)核是指在一枚處理器中集成兩個(gè)或多個(gè)完整的計(jì)算引擎(內(nèi)核),多核處理器是單枚芯片(也稱為“硅核”),能夠直接插入單一的處理器插槽中,但操作系統(tǒng)會(huì)利用所有相關(guān)的資源,將它的每個(gè)執(zhí)行內(nèi)核
    發(fā)表于 06-20 06:47

    典型的支持多核處理器的RTOS功能解析

    運(yùn)行中更換或重新啟動(dòng)幾乎所有的模塊,甚至是設(shè)備驅(qū)動(dòng)程序。QNX對(duì)多核處理器的支持基于其微內(nèi)核結(jié)構(gòu),通信被集成到QNX消息傳遞原語(yǔ),本地的IPC和遠(yuǎn)端節(jié)點(diǎn)間的IPC一樣。在單CPU上運(yùn)行的進(jìn)程分布到多
    發(fā)表于 06-29 08:30

    STM 32 UART串口通信基本原理是什么?

    處理器與外部設(shè)備通信的通信方式有哪幾種?STM32串口異步通信需要定義的參數(shù)是什么?STM32 UART串口通信基本原理是什么?
    發(fā)表于 12-15 06:28

    嵌入式微處理器基本原理是什么?有哪些特點(diǎn)?

    嵌入式微處理器的分類有哪些?嵌入式微處理器基本原理是什么?有哪些特點(diǎn)?
    發(fā)表于 12-23 07:53

    多核處理器啟動(dòng)基本原理是什么?如何實(shí)現(xiàn)呢

    看出,信箱寄存機(jī)制需要處理器輪詢,所以通信效率不高,在休眠/喚醒這類不頻繁的操作中還可以,如果是比較頻繁的核間通信就不適用了,要采取中斷機(jī)制。以上是多核處理器
    發(fā)表于 06-07 16:41

    看看一個(gè)多核處理器系統(tǒng)是如何啟動(dòng)

    看出,信箱寄存機(jī)制需要處理器輪詢,所以通信效率不高,在休眠/喚醒這類不頻繁的操作中還可以,如果是比較頻繁的核間通信就不適用了,要采取中斷機(jī)制。以上是多核處理器
    發(fā)表于 07-19 15:00

    多核處理器中的超越函數(shù)協(xié)處理器設(shè)計(jì)

    多核處理器中的超越函數(shù)協(xié)處理器設(shè)計(jì)_黃小康
    發(fā)表于 01-07 18:39 ?2次下載

    多核處理器會(huì)取代FPGA嗎?

    有人認(rèn)為諸如圖形處理器(GPU)和Tilera處理器多核處理器在某些應(yīng)用中正逐步替代現(xiàn)場(chǎng)可編程門陳列(FPGA)。理由是這些多核
    發(fā)表于 02-11 11:15 ?1021次閱讀
    <b class='flag-5'>多核</b><b class='flag-5'>處理器</b>會(huì)取代FPGA嗎?

    第1章 多核處理器基礎(chǔ)

    多核處理器基礎(chǔ),介紹了嵌入式的多核的信息
    發(fā)表于 04-11 14:17 ?2次下載

    DSP與嵌入式處理器基本原理

    DSP與嵌入式處理器基本原理
    發(fā)表于 10-20 14:43 ?3次下載
    DSP與嵌入式<b class='flag-5'>處理器</b><b class='flag-5'>基本原理</b>

    基于FPGA的NoC多核處理器的設(shè)計(jì)

    為了能夠靈活地驗(yàn)證和實(shí)現(xiàn)自主設(shè)計(jì)的基于NoC的多核處理器,縮短N(yùn)oC多核處理器的設(shè)計(jì)周期,提出了設(shè)計(jì)集成4片Virtex-6—550T FPGA的NoC
    發(fā)表于 11-22 09:15 ?4637次閱讀

    處理器關(guān)于多核概念與區(qū)別 多核處理器工作原理及優(yōu)缺點(diǎn)

    摘要:目前關(guān)于處理器的單核、雙核和多核已經(jīng)得到了普遍的運(yùn)用,今天我們主要說(shuō)說(shuō)關(guān)于多核處理器的一些相關(guān)概念,它的工作與那里以及優(yōu)缺點(diǎn)而展開(kāi)的分析。
    發(fā)表于 12-08 13:31 ?3.1w次閱讀

    淺議多核處理器技術(shù)

    多核處理器以其高性能、低功耗優(yōu)勢(shì)正逐步取代傳統(tǒng)的單處理器成為市場(chǎng)的主流。隨著應(yīng)用需求的擴(kuò)大和技術(shù)的不斷進(jìn)步,多核必將展示出其強(qiáng)大的性能優(yōu)勢(shì)。但目前
    發(fā)表于 03-29 10:47 ?8次下載