Cpu二級緩存的加速初始化方法
【專利摘要】本發(fā)明公開了一種CPU二級緩存的加速初始化方法,包括以下步驟:1)初始化每個CPU核心的mailbox寄存器;2)CPU主核將二級緩存劃分為n段,n為CPU核心數量;3)主核向每個從核發(fā)送初始化一段二級緩存命令,從核讀取初始化命令;4)主核和從核完成各自的二級緩存初始化,從核初始化完成后通知主核;5)所有核心完成各自的二級緩存初始化后初始化任務完成。本發(fā)明通過多個核來協同完成任務,從而加快任務完成的速度,減少初始化二級緩存所花費的時間,同時加快了BIOS的啟動速度。
【專利說明】CPU 二級緩存的加速初始化方法
【技術領域】
[0001]本發(fā)明涉及一種CPU緩存的初始化方法,特別是涉及一種CPU 二級緩存的加速初始化方法。
【背景技術】
[0002]CPU緩存(Cache Memory)位于CPU與內存之間的臨時存儲器,它的容量比內存小但交換速度快。在緩存中的數據是內存中的一小部分,但這一小部分是短時間內CPU即將訪問的,當CPU調用大量數據時,就可避開內存直接從緩存中調用,從而加快讀取速度。而二級緩存則是介于一級緩存和內存之間的存儲器,其容量較大于一級緩存、遠小于內存,主要用來協調一級緩存于內存之間的速率差。
[0003]在按下計算機電源按鈕后,主板會reset CPU,然后CPU執(zhí)行指令,跳到BIOS進行啟動。在BIOS啟動的過程中需要對CPU的二級cache進行初始化操作。在龍芯多核CPU上對二級cache的初始化是由O號核即主核來執(zhí)行,其他的核即從核處于一直在空等即一直在做無用的功的狀態(tài),直到BIOS加載完內核后,內核來喚醒它。按照這樣的方法初始化龍芯CPU的二級cache花費的時間是非常長,特別是在龍芯3B的雙路的服務器上更是花費的時間按多,這樣將導致BOIS的啟動過程時間長的更是讓人難以忍受。
【發(fā)明內容】
[0004]針對上述現有技術的不足,本發(fā)明的目的是提供一種CPU 二級緩存的加速初始化方法,以加快二級緩存的初始化速度,減少等待時間。
[0005]本發(fā)明的技術方案是這樣的:一種CPU 二級緩存的加速初始化方法,其特征在于,包括以下步驟:
[0006]I)初始化每個CPU核心的mailbox寄存器;
[0007]2) CPU主核將二級緩存劃分為η段,η為CPU核心數量;
[0008]3)主核向每個從核發(fā)送初始化一段二級緩存命令,從核讀取初始化命令;
[0009]4)主核和從核完成各自的二級緩存初始化,從核初始化完成后通知主核;
[0010]5)所有核心完成各自的二級緩存初始化后初始化任務完成。
[0011]在本發(fā)明的一個具體實施例中,所述步驟3)中,主核向自身的mailbox發(fā)送各個從核的初始化一段二級緩存命令,從核讀取主核mailbox獲取初始化命令。
[0012]在本發(fā)明的另一個具體實施例中,所述步驟3)中,主核向每個從核的mailbox發(fā)送從核的初始化一段二級緩存命令,從核讀取自身mailbox獲取初始化命令。
[0013]在本發(fā)明的又一個具體實施例中,所述步驟4)中,從核初始化完成后向主核mailbox發(fā)送完成消息,主核讀取自身mailbox獲取從核完成消息。
[0014]在本發(fā)明的還一個具體實施例中,所述步驟4)中,從核初始化完成后向自身mailbox發(fā)送完成消息,主核讀取從核mailbox獲取從核完成消息。
[0015]本發(fā)明所提供的技術方案,充分的利用龍芯多核CPU的優(yōu)勢把一個任務進行切分成多個子任務,由主核和從核各自完成相應的子任務,讓多個核來協同完成任務,從而加快任務完成的速度。這種技術能加快龍芯多核CPU上二級緩存的初始化的過程,減少初始化二級緩存所花費的時間,同時加快了 BIOS的啟動速度。
【專利附圖】
【附圖說明】
[0016]圖1為本發(fā)明CPU 二級緩存初始化流程示意圖。
【具體實施方式】
[0017]下面結合實施例對本發(fā)明作進一步說明,但不作為對本發(fā)明的限定。
[0018]請參見圖1,以龍芯3B雙路的服務器為例,該服務具有兩個8核CPU共16個核心,對應具有16M的二級緩存,因此CPU中每個核心所要初始化的二級緩存為1M,一個核心初始化IM即為一個子任務。初始化任務具體過程和方法如下:
[0019]第一:所有的核初始化自身的MailBox寄存器或者是由主核初始化所有核的MailBox寄存器即把MailBox寄存器置O。
[0020]第二:根據EBase寄存器的值來區(qū)分主核和從核,從而使主核和從核走不同的流程。
[0021]第三:進行子任務的切分。如在龍芯3B的雙路服務器上總共有16核和16M的二級cache,可以把初始化16M的二級cache空間切分成初始化16個子任務,每個子任務是初始化IM的二級cache空間。
[0022]第四:如果是從核則一直等待主核的消息即不斷的讀取自身MailBox消息或者是主核的MailBox消息來確認是否開始初始化一段固定大小的二級cache (如IM的二級cache)ο當從核從MailBox得到的消息表明主核需要讓從核自己初始化某段二級cache空間,則從核就開始執(zhí)行主核分配給自己的任務,當任務完成后從核就向自己的Mailbox或者是主核的MailBox發(fā)送消息表示主核分配的任務已經完成,從核可以執(zhí)行其他的任務或者是等待。
[0023]第五:如果是主核則發(fā)送消息給從核的的MailBox或者是自己的MailBox通知從核有任務即初始化某一段二級cache空間。通知完從核后主核開始自己的任務即初始化一段二級cache空間,任務完成后讀取自己MailBox或者是從核的MailBox來確認各個從核是否完成分配的任務即是否已經初始化完了某段二級caceh空間。在確認了所有的從核都完成了分配的任務后繼續(xù)執(zhí)行接下來的流程如初始化內存控制器等。
[0024]分別用本發(fā)明方法及原二級緩存初始化方法在龍芯3B雙路的服務器上進行了對比實驗,實驗的結果說明這種優(yōu)化方法是有效的而且效果非常明顯,在用原初始化方法初始化二級緩存需要50秒左右的時間,用本發(fā)明方法初始化二級緩存只需要6秒左右時間。
【權利要求】
1.一種CPU 二級緩存的加速初始化方法,其特征在于,包括以下步驟: 1)初始化每個CPU核心的mailbox寄存器; 2)CPU主核將二級緩存劃分為η段,η為CPU核心數量; 3)主核向每個從核發(fā)送初始化一段二級緩存命令,從核讀取初始化命令; 4)主核和從核完成各自的二級緩存初始化,從核初始化完成后通知主核; 5)所有核心完成各自的二級緩存初始化后初始化任務完成。
2.根據權利要求1所述的CPU二級緩存的加速初始化方法,其特征在于:所述步驟3)中,主核向自身的mailbox發(fā)送各個從核的初始化一段二級緩存命令,從核讀取主核mailbox獲取初始化命令。
3.根據權利要求1所述的CPU二級緩存的加速初始化方法,其特征在于:所述步驟3)中,主核向每個從核的mailbox發(fā)送從核的初始化一段二級緩存命令,從核讀取自身mailbox獲取初始化命令。
4.根據權利要求2所述的CPU二級緩存的加速初始化方法,其特征在于:所述步驟4)中,從核初始化完成后向主核mailbox發(fā)送完成消息,主核讀取自身mailbox獲取從核完成消息。
5.根據權利要求3所述的CPU二級緩存的加速初始化方法,其特征在于:所述步驟4)中,從核初始化完成后向自身mailbox發(fā)送完成消息,主核讀取從核mailbox獲取從核完成消息。
【文檔編號】G06F9/445GK103473095SQ201310408094
【公開日】2013年12月25日 申請日期:2013年9月10日 優(yōu)先權日:2013年9月10日
【發(fā)明者】張福新, 陳國祺, 吳少剛 申請人:江蘇中科夢蘭電子科技有限公司