專利名稱:多cpu系統(tǒng)的啟動方法及多cpu系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及計算機(jī)技術(shù)領(lǐng)域,特別涉及多CPU的啟動技術(shù)。
技術(shù)背景
當(dāng)前,在基于外圍器件互聯(lián)(Peripheral Component Interconnect,簡稱“PCI ”) / PCIe (高速外圍器件互聯(lián))總線的多CPU(中央處理器)系統(tǒng)中,如何讓這些CPU快速啟動, 使系統(tǒng)盡快進(jìn)入工作狀態(tài),事關(guān)整個系統(tǒng)啟動性能。當(dāng)CPU數(shù)量非常龐大時,更顯得尤為重要。
現(xiàn)有的啟動方法基本有兩種,第一種是從非易失存儲介質(zhì)(如閃存,硬盤)啟動, 第二種是從PCI啟動。PCI啟動方法的基本思想是主控CPU通過PCI/PCIe總線,把從CPU 啟動所需的二進(jìn)制文件下載到其對應(yīng)的內(nèi)存中,下載完成后,從CPU的Bootloader (引導(dǎo)系 統(tǒng)啟動的引導(dǎo)程序)就會從該內(nèi)存處引導(dǎo)系統(tǒng)啟動。
目前,主控CPU —般采用多線程的方法啟動從CPU,為每個從CPU都發(fā)起一個線程, 各個線程分別下載對應(yīng)從CPU啟動所需的二進(jìn)制文件,下載完成后啟動從CPU ;或者稍加改 進(jìn),主控CPU把從CPU分組,先啟動每組的組長CPU,然后由組長CPU再分別啟動各組其它的 CPU。
然而,本發(fā)明的發(fā)明人發(fā)現(xiàn),這些方法都需要把待下載的文件拷貝成多份數(shù)據(jù),雖 然是多線程或分組下載,但本質(zhì)上數(shù)據(jù)傳輸是軟件串行處理的,隨著從CPU數(shù)量地增加,勢 必會消耗更多的系統(tǒng)資源和PCI e帶寬,啟動速度也會變得更慢。發(fā)明內(nèi)容
本發(fā)明的目的在于提供一種多CPU系統(tǒng)的啟動方法及多CPU系統(tǒng),節(jié)約系統(tǒng)資源 和PCIe帶寬,加快從CPU的啟動速度。
為解決上述技術(shù)問題,本發(fā)明的實(shí)施方式提供了一種多CPU系統(tǒng)的啟動方法,該 多CPU系統(tǒng)包含主控CPU、從CPU和PCIe交換器,該方法中,多播組被預(yù)先設(shè)置,需要下載 不同啟動文件的從CPU對應(yīng)不同的多播組,需要下載相同啟動文件的從CPU,對應(yīng)同一個多 播組,每個所述多播組分配有PCIe多播地址空間;
在每次啟動系統(tǒng)時,執(zhí)行以下步驟
對于每個多播組,主控CPU將該多播組所對應(yīng)的從CPU需要下載的啟動文件,拷貝 至該多播組的PCIe多播地址空間中;
對于每個多播組,通過PCIe交換器將該多播組的PCIe多播地址空間中存放的啟 動文件,多播到該多播組所對應(yīng)的各從CPU的內(nèi)存空間中;
從CPU根據(jù)內(nèi)存空間中存放的啟動文件,進(jìn)行啟動。
本發(fā)明的實(shí)施方式還提供了一種多CPU系統(tǒng),包含主控CPU、從CPU和PCIe交換 器;
主控CPU用于在每次啟動系統(tǒng)時,對每個多播組,將該多播組所對應(yīng)的從CPU需要下載的啟動文件,拷貝至該多播組的PCIe多播地址空間中;其中,多播組被預(yù)先設(shè)置,需要 下載不同啟動文件的從CPU對應(yīng)不同的多播組,需要下載相同啟動文件的從CPU,對應(yīng)同一 個多播組,每個多播組分配有PCIe多播地址空間;
PCIe交換器用于對每個多播組,將該多播組的PCIe多播地址空間中存放的啟動 文件,多播到該多播組所對應(yīng)的各從CPU的內(nèi)存空間中;
從CPU用于根據(jù)內(nèi)存空間中存放的啟動文件,進(jìn)行啟動。
本發(fā)明實(shí)施方式與現(xiàn)有技術(shù)相比,主要區(qū)別及其效果在于
多播組被預(yù)先設(shè)置,需要下載不同啟動文件的從CPU對應(yīng)不同的多播組,需要下 載相同啟動文件的從CPU,對應(yīng)同一個多播組,每個多播組分配有PCI e多播地址空間。主 控CPU只需把待下載的文件拷貝到事先完成初始化的各多播組的PCIe多播地址空間,支持 多播的PCIe交換器就可以自動地把啟動文件多播到相應(yīng)的從CPU的啟動內(nèi)存中。通過使 用PCIe多播功能下載從CPU所需的啟動文件,由于多播過程由硬件完成,因而整個多播過 程不占用PCIe外部帶寬和系統(tǒng)資源,而且數(shù)據(jù)傳輸?shù)乃俣确浅??,既可以?jié)約系統(tǒng)資源和 PCIe帶寬,又能加快從CPU的啟動速度,啟動文件越多,從CPU數(shù)量越多,就越能體現(xiàn)本發(fā)明 的優(yōu)越性。
進(jìn)一步地,通過將多播組的PCIe多播地址空間映射到從CPU的內(nèi)存BAR所在的 PCI地址空間上,再由內(nèi)存BAR將映射得到的PCI地址空間,映射到從CPU的內(nèi)存空間。實(shí) 現(xiàn)簡單,保證了本發(fā)明方案的可行性。
進(jìn)一步地,PCIe交換器可以是一級或多級拓?fù)浣Y(jié)構(gòu),使得本發(fā)明的實(shí)施方式可靈 活實(shí)現(xiàn)。而且,如果是多級拓?fù)浣Y(jié)構(gòu),則底層PCIe交換器只需配置有所需要的多播組的 PCIe多播地址空間即可(所需要的多播組的PCIe多播地址空間,為與該底層PCIe交換器 連接的從CPU所對應(yīng)的多播組的PCIe多播地址空間),避免了不必要的數(shù)據(jù)傳輸,節(jié)約了系 統(tǒng)資源。
進(jìn)一步地,主控CPU設(shè)置的啟動標(biāo)志位的有效值,同樣通過PCIe交換器多播到各 從CPU,進(jìn)一步節(jié)約了系統(tǒng)資源和PCIe帶寬,加快了從CPU的啟動速度。
圖1是根據(jù)本發(fā)明第一實(shí)施方式的多CPU系統(tǒng)的啟動方法流程圖2是根據(jù)本發(fā)明第二實(shí)施方式中的多CPU系統(tǒng)的結(jié)構(gòu)示意圖3是根據(jù)本發(fā)明第二實(shí)施方式的多CPU系統(tǒng)的啟動方法流程圖4是根據(jù)本發(fā)明第二實(shí)施方式中各多播組的PCIe多播地址空間分配示意圖5是根據(jù)本發(fā)明第二實(shí)施方式中ulmage文件的多播下載的示意圖6是根據(jù)本發(fā)明第二實(shí)施方式中ramdisk文件的多播下載的示意圖7是根據(jù)本發(fā)明第二實(shí)施方式中從CPU的啟動流程圖8是根據(jù)本發(fā)明第二實(shí)施方式中的啟動標(biāo)志位的設(shè)置示意圖9是根據(jù)本發(fā)明第三實(shí)施方式中的多CPU系統(tǒng)的結(jié)構(gòu)示意圖。
具體實(shí)施方式
在以下的敘述中,為了使讀者更好地理解本申請而提出了許多技術(shù)細(xì)節(jié)。但是,本領(lǐng)域的普通技術(shù)人員可以理解,即使沒有這些技術(shù)細(xì)節(jié)和基于以下各實(shí)施方式的種種變化 和修改,也可以實(shí)現(xiàn)本申請各權(quán)利要求所要求保護(hù)的技術(shù)方案。
為使本發(fā)明的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合附圖對本發(fā)明的實(shí)施 方式作進(jìn)一步地詳細(xì)描述。
本發(fā)明第一實(shí)施方式涉及一種多CPU系統(tǒng)的啟動方法,在本實(shí)施方式中,將PCIe 多播技術(shù)運(yùn)用到多CPU系統(tǒng)的啟動中,使用PCIe多播功能下載從CPU所需的啟動文件。
具體地說,為需要下載不同啟動文件的從CPU,預(yù)先設(shè)置不同的多播組,需要下載 相同啟動文件的從CPU,對應(yīng)同一個多播組,每個多播組分配有PCIe多播地址空間。
多CPU系統(tǒng)在每次啟動時,具體流程如圖1所示。在步驟110中,對于每個多播組, 由主控CPU將該多播組所對應(yīng)的從CPU需要下載的啟動文件,拷貝至該多播組的PCIe多播 地址空間中。
比如說,多CPU系統(tǒng)中包含4個從CPU,從CPUl和從CPU2因需要下載相同的啟動 文件對于同一個多播組(如多播組1);從CPU3和從CPU4因需要下載的啟動文件相同對于 另一個多播組(如多播組2)。多播組1和多播組2各自分配有相應(yīng)的PCIe多播地址空間。 那么,在每次啟動系統(tǒng)時,由主控CPU將從CPUl和從CPU2需要下載的啟動文件拷貝至多播 組1的PCIe多播地址空間中;將從CPU3和從CPU4需要下載的啟動文件拷貝至多播組2的 PCIe多播地址空間中。
接著,在步驟120中,利用PCIe交換器(PCIe Switch)將每個多播組的PCIe多播 地址空間中存放的啟動文件,多播到該多播組所對應(yīng)的各從CPU的內(nèi)存空間中。由于PCIe Switch支持多播功能,因此可以通過PCIeSwitch,將多播組1的PCIe多播地址空間中存放 的啟動文件,多播到從CPUl和從CPU2的內(nèi)存空間中;將多播組2的PCIe多播地址空間中 存放的啟動文件,多播到從CPU3和從CPU4的內(nèi)存空間中。
接著,在步驟130中,各從CPU根據(jù)內(nèi)存空間中存放的啟動文件,進(jìn)行啟動。針對 上述案例,從CP Ul、從CPU2、從CPU3和從CPU4,各自根據(jù)內(nèi)存空間中中存放的啟動文件,進(jìn) 行啟動。
由于有在本實(shí)施方式中,通過使用PCIe多播功能下載從CPU所需的啟動文件,由 于多播過程由硬件完成,因而整個多播過程不占用PCIe外部帶寬和系統(tǒng)資源,而且數(shù)據(jù)傳 輸?shù)乃俣确浅?欤瓤梢怨?jié)約系統(tǒng)資源和PCIe帶寬,又能加快從CPU的啟動速度,啟動文件 越多,從CPU數(shù)量越多,就越能體現(xiàn)本發(fā)明的優(yōu)越性。
本發(fā)明第二實(shí)施方式涉及一種多CPU系統(tǒng)的啟動方法。本實(shí)施方式在第一實(shí)施方 式的基礎(chǔ)上,進(jìn)行了細(xì)節(jié)上的補(bǔ)充說明。
具體地說,本實(shí)施方式中的CPU之間通過PCI e總線互聯(lián),從CPU作為PCIe設(shè) 備掛接在底層PCIe Switch(PCIe交換器)上。頂層PCIe SwitchO與主控CPU的Root Complex (PCIe 根聯(lián)合體)相連,PCIe Switch 1、PCIe Switch m、PCIe Switch η 為底層 PCIe Switch,底層PCIe Switch與從CPU相連,如圖2所示。每個CPU都運(yùn)行Linux系統(tǒng), CPU 0是主控CPU,CPU 1. . . CPU N是從CPU,從CPU為不支持多播功能的EP (終端PCIe設(shè) 備)。在本實(shí)施方式中,PCIe Switch為二級拓?fù)浣Y(jié)構(gòu),但在實(shí)際應(yīng)用中,也可是一級或其他 級的拓?fù)浣Y(jié)構(gòu)。所有PCIe Switch都支持多播功能(MC),一般而言從CPU類型可能不盡相 同,不同類型的從CPU通常需要下載不同的啟動文件,本實(shí)施方式中以多CPU系統(tǒng)中有三種6類型(Type 1,Type m, Type η)的從CPU為例進(jìn)行說明,不同類型的CPU對應(yīng)不同的多播 組,同一類型的CPU掛接在同一個底層PCIe Switch上。當(dāng)然,在實(shí)際應(yīng)用中,從CPU可多 可少,可大于三種,也可少于三種。
本實(shí)施方式的具體流程如圖3所示,在系統(tǒng)上電后,進(jìn)入步驟301和301’,在步驟 301中,主控CPU加載從CPU的PCI驅(qū)動;在步驟301,中,從CPU的Bootloader初始化內(nèi) 存。步驟301和301,相互獨(dú)立執(zhí)行。
在步驟302中,主控CPU配置多播功能,通過PCIe交換器將每個多播組的PCI e 多播地址空間中存放的啟動文件,多播到該多播組所對應(yīng)的各從CPU的內(nèi)存空間中。
具體地說,對需要下載不同啟動文件的從CPU,預(yù)先設(shè)置有不同的多播組,需要下 載相同啟動文件的從CPU,對應(yīng)同一個多播組,每個多播組分配有PCI e多播地址空間。 由于在本實(shí)施方式中,同一類型的從CPU需要下載相同的啟動文件,不同類型的從CPU需要下載不同的啟動文件。如圖1所示,CPUl......CPU m-1為Type 1類型的從CPU,CPUm......CPU n-1 為 Type m 類型的從 CPU,CPU η......CPU N 為 Type η 類型的從 CPU。因此,需要設(shè)置3個多播組(MCG) =MCGO, MCG 1,MCG2。MCGO與Type η類型的從CPU對應(yīng); MCG 1與Type m類型的從CPU對應(yīng);MCG2與Typel類型的從CPU對應(yīng)。MCGO,MCG 1,MCG2 的PCIe多播地址空間分配如圖4所示,多播地址的基址設(shè)為OxFOOOOOOO,每個MCG的大小 為8M Byes,這三個多播組用來把待下載的三類啟動文件多播到對應(yīng)的從CPU內(nèi)存中。
一般而言,從CPU啟動的必要文件有兩種ramdisk和ul mage。ramdisk是根文件 系統(tǒng),ulmage是系統(tǒng)內(nèi)核鏡像。因此,將Type 1類型的從CPU啟動文件命名為ramdisK_l, ulmage_l ;Type m類型的從CPU啟動文件命名為ramdisK_m,ulmage_m ;Type η類型的從 CPU啟動文件命名為ramdiSk_n,ulmage_n。下面對通過PCIe交換器將啟動文件下載到對 應(yīng)的從CPU上進(jìn)行詳細(xì)闡述。
ulmage文件的下載,是指主控CPU分別把ulmag_l、ulmage_m、ul mage_n內(nèi)核文 件下載到從CPU(Type 1, Type m、Type η)對應(yīng)的內(nèi)存區(qū)域,如圖5所示。
首先主控CPU配置PCIe多播寄存器(與PCIe Switch相關(guān)的寄存器)和內(nèi)存PCI 基地址寄存器(BAR)。參考圖2所示框圖,所有PCIe Switch端口都要使能多播功能,最大 多播組數(shù)設(shè)為64個,多播基地址設(shè)為0XF0000000,每個多播組的大小都為8MBytes,BloCk 寄存器清零。這樣,所有PCIe Switch端口都有相同的多播地址空間。
PCIe Switch 0各端口的receive (接收)寄存器要配置為接收MCGO、MCGl、MCG2 的數(shù)據(jù),PCIe Switch 1配置為接收MCG2的數(shù)據(jù),PCIe
Switch m配置為接收MCGl的數(shù)據(jù),PCIe Switch η配置為接收MCGO的數(shù)據(jù),這是 為了 Type 1類型的從CPU只接收來自MCG2的數(shù)據(jù),Type m類型的從CPU只接收來自MCG 1的數(shù)據(jù),Type η類型的從CPU只接收來自MCGO的數(shù)據(jù)。各底層PCI e交換器只需配置所 需要的多播組的PCIe多播地址空間即可,避免了不必要的數(shù)據(jù)傳輸,節(jié)約了系統(tǒng)資源。
由于從CPU不支持多播功能,需要配置其對應(yīng)的PCIe Switch下行端口多播 overlay (覆蓋)寄存器,overlay寄存器用于將PCIe多播地址空間映射到從CPU的內(nèi)存 BAR所在的PCI地址空間上,而內(nèi)存BAR則把該P(yáng)CI地址空間映射到從CPU的內(nèi)存空間,這 樣PCIe多播地址空間就與從CPU的內(nèi)存空間對應(yīng)起來了,如圖5所示,具體映射過程如下
PCIe Switch 1掛接的是Type 1類型的從CPU,以CPU 1為例,CPU 1對應(yīng)的下行端口 overlay寄存器基址設(shè)置為其內(nèi)存BAR基址OxAOOOOOOO,overlay大小和MCG大小相 同,同為8M Bytes,內(nèi)存BAR映射到CPU 1存放ulmage的內(nèi)存地址為0x08000000。PCIe Switch m掛接的是Type m類型的從CPU,以CPU m為例,CPU m對應(yīng)的下行端口 overlay基 址設(shè)置為其內(nèi)存BAR基址0x90000000,overlay大小8MBytes,內(nèi)存BAR映射到CPU m存放 ulmage的內(nèi)存地址為0x04000000。PCIe Switch η掛接的是Type η類型的從CPU,以CPU η為例,CPU η對應(yīng)的下行端口 overlay基址設(shè)置為其內(nèi)存BAR基址0x80000000,overlay 大小8MByes,內(nèi)存BAR映射到CPU η存放ulmage的內(nèi)存地址為0x02000000。
因此,主控CPU只需將文件ulmage」、ul mage m、ulmage_n分別拷貝到MCG2、 MCGU MCGO對應(yīng)的多播空間,PCIe Switch就會把MCG2的數(shù)據(jù)多播到Type 1類型所有從 CPU的ulmage內(nèi)存空間,把MCGl的數(shù)據(jù)多播到Type m類型所有從CPU的ulmage內(nèi)存空 間,把MCGO的數(shù)據(jù)多播到Type η類型所有從CPU的ulmage內(nèi)存空間,整個多播過程不占 用PCIe外部帶寬和系統(tǒng)資源,而且數(shù)據(jù)傳輸?shù)乃俣确浅?欤@樣每個從CPU的ulmage內(nèi)存 區(qū)域都很快的收到了對應(yīng)的內(nèi)核數(shù)據(jù)。
ramdisk 文件的下載,是指主控 CPU 分別把 ramdisk_l、ramdisk_m、ramdisk_n 根 文件系統(tǒng)下載到從CPU (Type 1,Type m、Type η)對應(yīng)的內(nèi)存區(qū)域,如圖6所示。ramdisk 的下載原理與過程與ulmage的下載相同,下面只對其下載的不同之處進(jìn)行說明
PCIe多播寄存器的配置,與上述ulmage文件下載中的PCIe多播寄存器的配置相 同,只是內(nèi)存BAR映射的具體位置有些不同,Type UType m、Type η類型的從CPU內(nèi)存BAR 映射到從CPU的內(nèi)存區(qū)域分別為0x08800000、0x04800000、0x02800000,這些區(qū)域都用來存 放多播過來的ramdi sk數(shù)據(jù)。配置完成后,主控CPU把文件ramdi sK_l、ramdi sK_m、ramdi sk_ η分別拷貝到MCG2、MCG 1、MCGO對應(yīng)的多播空間,PCIe Switch就會把MCG2、MCG UMCGO 中的ramdisk數(shù)據(jù)分別多播到Type UTypem, Type η類型所有從CPU對應(yīng)的內(nèi)存區(qū)域。
通過將多播組的PCIe多播地址空間映射到從CPU的內(nèi)存BAR所在的PCI地址空 間上,再由內(nèi)存BAR將映射得到的PCI地址空間,映射到從CPU的內(nèi)存空間。實(shí)現(xiàn)簡單,保 證了本發(fā)明方案的可行性。當(dāng)然,若還有其它種類的啟動文件也可以按照上述過程進(jìn)行下 載。另外,下載文件前,從CPU的內(nèi)存已初始化好,并且主控CPU可以訪問從CPU的內(nèi)存和 寄存器BAR。
本領(lǐng)域技術(shù)人員可以理解,系統(tǒng)上電后,各從CPU的Bootloader首先會初始化內(nèi) 存,然后輪詢檢測啟動標(biāo)志位boot_Valid,該標(biāo)志位一旦有效,Bootloader就會從對應(yīng)的 內(nèi)存處引導(dǎo)系統(tǒng)啟動。主控CPU把啟動文件多播到從CPU放置啟動文件的內(nèi)存區(qū)域后就會 設(shè)置標(biāo)志位bootjalid,這樣從CPU的Bootloader檢測到該標(biāo)志位有效,于是啟動系統(tǒng)。 從CPU的啟動流程如圖7所示。
因此,在步驟301’后,即從CPU在完成內(nèi)存初始化后,進(jìn)入步驟302’,輪詢檢測啟 動標(biāo)志位boot_valid,如果檢測到該啟動標(biāo)志位有效,則進(jìn)入步驟303’,根據(jù)內(nèi)存空間中 存放的啟動文件,進(jìn)行啟動;如果未檢測到該啟動標(biāo)志位有效,則繼續(xù)輪詢檢測該啟動標(biāo)志 位。在步驟302后,即在主控CPU通過PCIe交換器將每個多播組的PCIe多播地址空間中 存放的啟動文件,多播到該多播組所對應(yīng)的各從CPU的內(nèi)存空間中后,進(jìn)入步驟303,將啟 動標(biāo)志位設(shè)置為有效值,每個多播組分別對應(yīng)一個啟動標(biāo)志位。
在步驟303中,待所有的啟動文件都下載到從CPU對應(yīng)的內(nèi)存區(qū)域后,主控CPU設(shè)置bootjalid標(biāo)志位,如圖8所示,主控CPU設(shè)置bootjalid標(biāo)志位的操作也由PCIe多 播完成。
具體地說,先約定Type 1、Type m、Type η類型的從CPU的啟動標(biāo)志位分別為 boot_valid_l、boot_valid_m、boot_Valid_n,大小為四個字節(jié),位于多播組和對應(yīng)內(nèi)存區(qū) 域的前四個字節(jié),有效值分別為0xdeadbeed、0xdeadbeee、0xdeadbeef。
如同上述ulmage文件的下載原理與過程,PCIe多播寄存器的配置不變,Type 1、 Type m、Type η類型的從CPU內(nèi)存BAR映射的內(nèi)存區(qū)域分別為0x09000000,0x05000000, 0x03000000,這些區(qū)域的前四個字節(jié)用來存放bootjalid標(biāo)志位。
配置完成后,主控CPU對MCG2、MCGl、MCGO的PCIe多播地址空間的前四個字節(jié)分 別賦值為0xdeadbeed、0xdeadbeee、0xdeadbeef,PCIe Switch會把這些標(biāo)志位分別多播到 Type UType m、Type η類型所有從CPU對應(yīng)的內(nèi)存空間。
此時,Type 1類型的所有從CPU的Bootloader會輪詢內(nèi)存地址0x09000000處 的值,一旦其值為Oxdeadbeed,即檢測到啟動標(biāo)志位有效,則進(jìn)入步驟303,,從0x08000000 和0x08800000處加載內(nèi)核和根文件系統(tǒng),接著啟動系統(tǒng);Type m類型的所有從CPU的 Bootloader會輪詢內(nèi)存地址0x05000000處的值,一旦其值為Oxdeadbeee,即檢測到啟動 標(biāo)志位有效,則進(jìn)入步驟303,,從0x04000000和0x04800000處加載內(nèi)核和根文件系統(tǒng),接 著啟動系統(tǒng);Type m類型的所有從CPU的Bootloader會輪詢內(nèi)存地址0x03000000處的 值,一旦其值為Oxdeadbeef,即檢測到啟動標(biāo)志位有效,則進(jìn)入步驟303,,從0x02000000和 0x02800000處加載內(nèi)核和根文件系統(tǒng),接著啟動系統(tǒng)。
不難發(fā)現(xiàn),本實(shí)施方式不但同樣能達(dá)到第一實(shí)施方式的技術(shù)效果,而且,主控CPU 設(shè)置的啟動標(biāo)志位的有效值,同樣通過PCIe交換器多播到各從CPU,進(jìn)一步節(jié)約了系統(tǒng)資 源和PCIe帶寬,加快了從CPU的啟動速度。
需要說明的是,PCIe規(guī)范最大支持64個多播組(MCG),本實(shí)施方式中由于是以三 種類型的從CPU為例進(jìn)行說明,因此使用了三個多播組,但在實(shí)際應(yīng)用中,從CPU的類型可 以大于三種或小于三種,相應(yīng)地就要增加或減少對應(yīng)的MCG。并且,不同多播組的CPU也可 以掛接在同一 PCIe交換器上,本實(shí)施方式中的同一多播組的從CPU掛接在同一 PCIe交換 器上只是一種典型情況。
另外,不同類型的從CPU啟動文件也可以相同。若相同,這些從CPU對應(yīng)的PCIe Switch端口要配置為同一 MCG,以便接收同一多播組的數(shù)據(jù)。
另外,本實(shí)施方式中給出的多播地址空間、多播映射的PCI空間、BAR映射的內(nèi)存 空間、啟動標(biāo)志位的具體值,只是為方便理解而給出的具體例子,在實(shí)際應(yīng)用中,可以根據(jù) 據(jù)實(shí)際情況而設(shè)定。
另外,啟動文件可以單獨(dú)下載(針對只有一個從CPU需要下載的情況),也可以是 本實(shí)施方式中的分組下載。bootjalid標(biāo)志位可以在內(nèi)存中,也可以在寄存器BAR中。
本發(fā)明第三實(shí)施方式涉及一種多CPU系統(tǒng)的啟動方法。第三實(shí)施方式與第二實(shí)施 方式基本相同,區(qū)別主要在于PCIe Switch的拓?fù)浣Y(jié)構(gòu)不同。
在第二實(shí)施方式中,PCIe Switch為二級拓?fù)浣Y(jié)構(gòu),頂層PCIe交換器中配置有各 多播組的PCIe多播地址空間,與頂層PCIe交換器連接的底層PCIe交換器中,配置有該底 層PCIe交換器所需要的多播組的PCIe多播地址空間。其中,底層PCIe交換器所需要的多播組的PCIe多播地址空間,為與該底層PCIe交換器連接的從CPU所對應(yīng)的多播組的PCIe 多播地址空間。
然而在第三實(shí)施方式中,PCIe Switch為一級拓?fù)浣Y(jié)構(gòu),如圖9所示,CPUl......CPU N均掛接在PCIe Switch 0上。由PCIe Switch 0為掛接的每個從CPU配置其對應(yīng)的PCIe Switch下行端口多播overlay (覆蓋)寄存器,overlay寄存器用于將PCIe 多播地址空間映射到從CPU的內(nèi)存BAR所在的PCI地址空間上,而內(nèi)存BAR則把該P(yáng)CI地 址空間映射到從CPU的內(nèi)存空間。具體實(shí)現(xiàn)方式與第二實(shí)施方式類似,在此不再贅述。
PCIe交換器可以是一級或多級拓?fù)浣Y(jié)構(gòu),使得本發(fā)明的實(shí)施方式可靈活實(shí)現(xiàn)。
本發(fā)明的各方法實(shí)施方式均可以以軟件、硬件、固件等方式實(shí)現(xiàn)。不管本發(fā)明是 以軟件、硬件、還是固件方式實(shí)現(xiàn),指令代碼都可以存儲在任何類型的計算機(jī)可訪問的存儲 器中(例如永久的或者可修改的,易失性的或者非易失性的,固態(tài)的或者非固態(tài)的,固定的 或者可更換的介質(zhì)等等)。同樣,存儲器可以例如是可編程陣列邏輯(Programmable Array Logic,簡稱“PAL”)、隨機(jī)存取存儲器(Random Access Memory,簡稱“RAM”)、可編程只讀存 儲器(Programmable Read Only Memory,簡稱 “PROM”)、只讀存儲器(Read-Only Memory, 簡稱“ROM”)、電可擦除可編程只讀存儲器(Electrically Erasable Programmable ROM,簡 稱“EEPR0M”)、磁盤、光盤、數(shù)字通用光盤(Digital Versatile Disc,簡稱“DVD”)等等。
本發(fā)明第四實(shí)施方式涉及一種多CPU系統(tǒng)。該多CPU系統(tǒng)包含主控CPU、從CPU和 PCIe交換器。
其中,主控CPU用于在每次啟動系統(tǒng)時,對每個多播組,將該多播組所對應(yīng)的從 CPU需要下載的啟動文件,拷貝至該多播組的PCIe多播地址空間中。其中,多播組被預(yù)先設(shè) 置,需要下載不同啟動文件的從CPU對應(yīng)不同的多播組,需要下載相同啟動文件的從CPU, 對應(yīng)同一個多播組,每個多播組分配有PCIe多播地址空間。
PCIe交換器用于對每個多播組,將該多播組的PCI e多播地址空間中存放的啟動 文件,多播到該多播組所對應(yīng)的各從CPU的內(nèi)存空間中。
從CPU用于根據(jù)內(nèi)存空間中存放的啟動文件,進(jìn)行啟動。
不難發(fā)現(xiàn),第一實(shí)施方式是與本實(shí)施方式相對應(yīng)的方法實(shí)施方式,本實(shí)施方式可 與第一實(shí)施方式互相配合實(shí)施。第一實(shí)施方式中提到的相關(guān)技術(shù)細(xì)節(jié)在本實(shí)施方式中依然 有效,為了減少重復(fù),這里不再贅述。相應(yīng)地,本實(shí)施方式中提到的相關(guān)技術(shù)細(xì)節(jié)也可應(yīng)用 在第一實(shí)施方式中。
本發(fā)明第五實(shí)施方式涉及一種多CPU系統(tǒng)。本實(shí)施方式在第四實(shí)施方式的基礎(chǔ) 上,進(jìn)行了細(xì)節(jié)上的補(bǔ)充。
具體地說,本實(shí)施方式中的多CPU系統(tǒng)包含頂層PCIe交換器和底層PCIe交換器, 底層PCIe交換器與頂層PCIe交換器連接,從CPU與底層PCIe交換器相連接。
頂層PCIe交換器中配置有各所述多播組的PCIe多播地址空間,底層PCIe交換器 中配置有該底層PCIe交換器所需要的多播組的PCIe多播地址空間。其中,底層PCIe交換 器所需要的多播組的PCIe多播地址空間,為與該底層PCIe交換器連接的從CPU所對應(yīng)的 多播組的PCIe多播地址空間。
底層PCIe交換器包含L個多播覆蓋寄存器,L為與底層PCIe交換器連接的從CPU 的個數(shù),每個多播覆蓋寄存器對應(yīng)一個與PCIe交換器連接的從CPU。多播覆蓋寄存器用于10將與本多播覆蓋寄存器對應(yīng)的從CPU所屬的多播組的PCIe多播地址空間,映射到該從CPU 的內(nèi)存BAR所在的PCI地址空間上。
每個從CPU還用于將經(jīng)多播覆蓋寄存器映射得到的PCI地址空間,再映射到本從 CPU的內(nèi)存空間。
需要說明的是,主控CPU還用于在PCIe交換器將啟動文件多播到多播組所對應(yīng)的 各從CPU的內(nèi)存空間后,設(shè)置啟動標(biāo)志位有效,每個多播組分別對應(yīng)一個啟動標(biāo)志位。
從CPU還用于在完成初始化內(nèi)存后,輪詢檢測啟動標(biāo)志位是否有效,并在檢測到 啟動標(biāo)志位有效時,根據(jù)內(nèi)存空間中存放的啟動文件,進(jìn)行啟動。
主控CPU在設(shè)置啟動標(biāo)志位有效時,將各多播組的PCIe多播地址空間的前N個字 節(jié)分別賦值為各多播組對應(yīng)的啟動標(biāo)志位的有效值。
PCIe交換器還用于將每個多播組的PCIe多播地址空間的前N個字節(jié),多播到該多 播組所對應(yīng)的各從CPU的內(nèi)存空間的前N個字節(jié)。
每個從CPU還用于在輪詢檢測啟動標(biāo)志位是否有效時,檢測本從CPU的內(nèi)存空間 的前N個字節(jié)。
在本實(shí)施方式中,需要下載相同啟動文件的從CPU,為同一類型的從CPU。從CPU 需要下載的啟動文件,包含根文件系統(tǒng)文件和系統(tǒng)內(nèi)核鏡像文件。
不難發(fā)現(xiàn),第二實(shí)施方式是與本實(shí)施方式相對應(yīng)的方法實(shí)施方式,本實(shí)施方式可 與第二實(shí)施方式互相配合實(shí)施。第二實(shí)施方式中提到的相關(guān)技術(shù)細(xì)節(jié)在本實(shí)施方式中依然 有效,為了減少重復(fù),這里不再贅述。相應(yīng)地,本實(shí)施方式中提到的相關(guān)技術(shù)細(xì)節(jié)也可應(yīng)用 在第二實(shí)施方式中。
本發(fā)明第六實(shí)施方式涉及一種多CPU系統(tǒng)。第六實(shí)施方式與第五實(shí)施方式基本相 同,區(qū)別主要在于多CPU系統(tǒng)中所包含的PCIe交換器的結(jié)構(gòu)不同。
在第五實(shí)施方式中,多CPU系統(tǒng)包含頂層PCIe交換器和底層PCIe交換器,底層 PCIe交換器與頂層PCIe交換器連接,從CPU與底層PCIe交換器相連接。也就是說,在第五 實(shí)施方式中,多CPU系統(tǒng)中所包含的PCIe交換器的結(jié)構(gòu),為二級拓?fù)浣Y(jié)構(gòu)。
而在本實(shí)施方式中,多CPU系統(tǒng)中所包含的PCIe交換器的結(jié)構(gòu),為一級拓?fù)浣Y(jié)構(gòu)。 也就是說,在本實(shí)施方式中,多CPU系統(tǒng)中包含一個PCIe交換器,PCIe交換器包含L個多 播覆蓋寄存器,L為與PCIe交換器連接的從CPU的個數(shù)(即L為多CPU系統(tǒng)中從CPU的總 數(shù)),每個多播覆蓋寄存器對應(yīng)一個與PCIe交換器連接的從CPU。與第五實(shí)施方式類似,通 過將多播組的PCIe多播地址空間映射到從CPU的內(nèi)存BAR所在的PCI地址空間上,再將內(nèi) 存BAR所在的PCI地址空間,映射到從CPU的內(nèi)存空間,實(shí)現(xiàn)啟動文件的多播傳輸。
不難發(fā)現(xiàn),第三實(shí)施方式是與本實(shí)施方式相對應(yīng)的方法實(shí)施方式,本實(shí)施方式可 與第三實(shí)施方式互相配合實(shí)施。第三實(shí)施方式中提到的相關(guān)技術(shù)細(xì)節(jié)在本實(shí)施方式中依然 有效,為了減少重復(fù),這里不再贅述。相應(yīng)地,本實(shí)施方式中提到的相關(guān)技術(shù)細(xì)節(jié)也可應(yīng)用 在第三實(shí)施方式中。
雖然通過參照本發(fā)明的某些優(yōu)選實(shí)施方式,已經(jīng)對本發(fā)明進(jìn)行了圖示和描述,但 本領(lǐng)域的普通技術(shù)人員應(yīng)該明白,可以在形式上和細(xì)節(jié)上對其作各種改變,而不偏離本發(fā) 明的精神和范圍。
權(quán)利要求
1.一種多CPU系統(tǒng)的啟動方法,該多CPU系統(tǒng)包含主控CPU、從CPU和PCIe交換器,其 特征在于,多播組被預(yù)先設(shè)置,需要下載不同啟動文件的從CPU對應(yīng)不同的多播組,需要下載 相同啟動文件的從CPU,對應(yīng)同一個多播組,每個所述多播組分配有PCIe多播地址空間;在每次啟動系統(tǒng)時,執(zhí)行以下步驟對于每個所述多播組,主控CPU將該多播組所對應(yīng)的從CPU需要下載的啟動文件,拷貝 至該多播組的PCIe多播地址空間中;對于每個所述多播組,PCIe交換器將該多播組的PCIe多播地址空間中存放的啟動文 件,多播到該多播組所對應(yīng)的各從CPU的內(nèi)存空間中; 從CPU根據(jù)內(nèi)存空間中存放的啟動文件,進(jìn)行啟動。
2.根據(jù)權(quán)利要求1所述的多CPU系統(tǒng)的啟動方法,其特征在于,所述PCIe交換器將啟 動文件多播到該多播組所對應(yīng)的各從CPU的內(nèi)存空間的步驟中,包含以下子步驟PCIe交換器將所述多播組的PCIe多播地址空間,映射到各從CPU的內(nèi)存PCI基地址寄 存器所在的PCI地址空間上;各從CPU將經(jīng)所述映射得到的PCI地址空間,再映射到本從CPU的內(nèi)存空間。
3.根據(jù)權(quán)利要求1所述的多CPU系統(tǒng)的啟動方法,其特征在于,所述PCIe交換器將啟 動文件多播到該多播組所對應(yīng)的各從CPU的內(nèi)存空間的步驟中,包含以下子步驟頂層PCIe交換器中配置有各所述多播組的PCIe多播地址空間,與所述頂層PCIe交換 器連接的底層PCIe交換器中,配置有該底層PCIe交換器所需要的多播組的PCIe多播地址 空間;其中,所述底層PCIe交換器所需要的多播組的PCIe多播地址空間,為與該底層PCIe 交換器連接的從CPU所對應(yīng)的多播組的PCIe多播地址空間;所述底層PCIe交換器將配置的多播組的PCIe多播地址空間,映射到與該底層PCIe交 換器連接的各從CPU的內(nèi)存PCI基地址寄存器所在的PCI地址空間上;各從CPU將經(jīng)所述映射得到的PCI地址空間,再映射到本從CPU的內(nèi)存空間。
4.根據(jù)權(quán)利要求1所述的多CPU系統(tǒng)的啟動方法,其特征在于,在通過PCIe交換器將 啟動文件多播到多播組所對應(yīng)的各從CPU的內(nèi)存空間的步驟后,還包含以下步驟所述主控CPU設(shè)置啟動標(biāo)志位有效,每個所述多播組分別對應(yīng)一個所述啟動標(biāo)志位; 在所述從CPU根據(jù)內(nèi)存空間中存放的啟動文件,進(jìn)行啟動之前,還包含以下步驟 所述從CPU在完成初始化內(nèi)存后,輪詢檢測啟動標(biāo)志位是否有效; 所述從CPU在檢測到所述啟動標(biāo)志位有效時,再進(jìn)入所述根據(jù)內(nèi)存空間中存放的啟動 文件,進(jìn)行啟動的步驟。
5.根據(jù)權(quán)利要求4所述的多CPU系統(tǒng)的啟動方法,其特征在于,所述主控CPU通過以下 方式設(shè)置所述啟動標(biāo)志位有效所述主控CPU將各多播組的PCIe多播地址空間的前N個字節(jié)分別賦值為各多播組對 應(yīng)的啟動標(biāo)志位的有效值;每個多播組的PCIe多播地址空間的前N個字節(jié),通過PCIe交換器多播到該多播組所 對應(yīng)的各從CPU的內(nèi)存空間的前N個字節(jié);所述從CPU輪詢檢測啟動標(biāo)志位是否有效時,檢測本從CPU的內(nèi)存空間的前N個字節(jié)。
6.一種多CPU系統(tǒng),其特征在于,包含主控CPU、從CPU和PCIe交換器;所述主控CPU用于在每次啟動系統(tǒng)時,對每個多播組,將該多播組所對應(yīng)的從CPU需要下載的啟動文件,拷貝至該多播組的PCIe多播地址空間中;其中,所述多播組被預(yù)先設(shè)置, 需要下載不同啟動文件的從CPU對應(yīng)不同的多播組,需要下載相同啟動文件的從CPU,對應(yīng) 同一個多播組,每個所述多播組分配有PCIe多播地址空間;所述PCIe交換器用于對每個所述多播組,將該多播組的PCIe多播地址空間中存放的 啟動文件,多播到該多播組所對應(yīng)的各從CPU的內(nèi)存空間中; 所述從CPU用于根據(jù)內(nèi)存空間中存放的啟動文件,進(jìn)行啟動。
7.根據(jù)權(quán)利要求6所述的多CPU系統(tǒng),其特征在于,所述多CPU系統(tǒng)包含一個所述PCIe 交換器,所述多CPU系統(tǒng)中的所有從CPU連接在所述PCIe交換器上;所述PCIe交換器包含L個多播覆蓋寄存器,L為與所述PCIe交換器連接的從CPU的 個數(shù),每個所述多播覆蓋寄存器對應(yīng)一個從CPU ;所述多播覆蓋寄存器用于將與本多播覆蓋寄存器對應(yīng)的從CPU所屬的多播組的PCIe 多播地址空間,映射到該從CPU的內(nèi)存PCI基地址寄存器所在的PCI地址空間上;每個所述從CPU還用于將經(jīng)所述多播覆蓋寄存器映射得到的PCI地址空間,再映射到 本從CPU的內(nèi)存空間。
8.根據(jù)權(quán)利要求6所述的多CPU系統(tǒng),其特征在于,所述多CPU系統(tǒng)包含頂層PCIe交 換器和底層PCIe交換器,底層PCIe交換器與所述頂層PCIe交換器連接,從CPU與底層PCIe 交換器相連接;所述頂層PCIe交換器中配置有各所述多播組的PCIe多播地址空間,所述底層PCIe交 換器中配置有該底層PCIe交換器所需要的多播組的PCIe多播地址空間;其中,所述底層 PCIe交換器所需要的多播組的PCIe多播地址空間,為與該底層PCIe交換器連接的從CPU 所對應(yīng)的多播組的PCIe多播地址空間;所述底層PCIe交換器包含L個多播覆蓋寄存器,L為與所述底層PCIe交換器連接的 從CPU的個數(shù),每個所述多播覆蓋寄存器對應(yīng)一個與所述PCIe交換器連接的從CPU ;所述多播覆蓋寄存器用于將與本多播覆蓋寄存器對應(yīng)的從CPU所屬的多播組的PCIe 多播地址空間,映射到該從CPU的內(nèi)存BAR所在的PCI地址空間上;每個所述從CPU還用于將經(jīng)所述多播覆蓋寄存器映射得到的PCI地址空間,再映射到 本從CPU的內(nèi)存空間。
9.根據(jù)權(quán)利要求6所述的多CPU系統(tǒng),其特征在于,所述主控CPU還用于在所述PCIe 交換器將啟動文件多播到多播組所對應(yīng)的各從CPU的內(nèi)存空間后,設(shè)置啟動標(biāo)志位有效, 每個所述多播組分別對應(yīng)一個所述啟動標(biāo)志位;所述從CPU還用于在完成初始化內(nèi)存后,輪詢檢測啟動標(biāo)志位是否有效,并在檢測到 所述啟動標(biāo)志位有效時,根據(jù)內(nèi)存空間中存放的啟動文件,進(jìn)行啟動。
10.根據(jù)權(quán)利要求9所述的多CPU系統(tǒng),其特征在于,所述主控CPU在設(shè)置所述啟動標(biāo) 志位有效時,將各多播組的PCIe多播地址空間的前N個字節(jié)分別賦值為各多播組對應(yīng)的啟 動標(biāo)志位的有效值;所述PCIe交換器還用于將每個多播組的PCIe多播地址空間的前N個字節(jié),多播到該 多播組所對應(yīng)的各從CPU的內(nèi)存空間的前N個字節(jié);每個所述從CPU還用于在輪詢檢測啟動標(biāo)志位是否有效時,檢測本從CPU的內(nèi)存空間 的前N個字節(jié)。
全文摘要
本發(fā)明涉及計算機(jī)技術(shù)領(lǐng)域,公開了一種多CPU系統(tǒng)的啟動方法及多CPU系統(tǒng)。本發(fā)明中,為需要下載不同啟動文件的從CPU,設(shè)置不同的多播組,需要下載相同啟動文件的從CPU,對應(yīng)同一個多播組,每個多播組分配有PCIe多播地址空間。主控CPU只需把待下載的文件拷貝到事先完成初始化的各多播組的PCIe多播地址空間,支持多播的PCIe交換器就可以自動地把啟動文件多播到相應(yīng)的從CPU的啟動內(nèi)存中。整個多播過程不占用PCIe外部帶寬和系統(tǒng)資源,而且數(shù)據(jù)傳輸?shù)乃俣确浅?欤瓤梢怨?jié)約系統(tǒng)資源和PCIe帶寬,又能加快從CPU的啟動速度。
文檔編號G06F9/445GK102033768SQ201010584649
公開日2011年4月27日 申請日期2010年12月10日 優(yōu)先權(quán)日2010年12月10日
發(fā)明者欒煥志, 胡揚(yáng)忠, 趙先林, 鄔偉琪, 黃毅 申請人:杭州海康威視數(shù)字技術(shù)股份有限公司