本發(fā)明涉及服務(wù)器,尤其涉及一種內(nèi)存訓(xùn)練方法、裝置、電子設(shè)備及存儲介質(zhì)。
背景技術(shù):
1、服務(wù)器在啟動基本輸入輸出系統(tǒng)(basic?input?output?system,bios)時,尤其是冷啟動,需要進行內(nèi)存訓(xùn)練。
2、服務(wù)器內(nèi)存訓(xùn)練過程涉及大量的測試算法和測試場景,在bios整個啟動過程花費總時長中,占據(jù)了較大的比例。如何讓內(nèi)存快速完成內(nèi)存訓(xùn)練,以縮短bios啟動時長的需求是目前業(yè)界亟待解決的重要課題。
技術(shù)實現(xiàn)思路
1、本發(fā)明提供一種內(nèi)存訓(xùn)練方法、裝置、電子設(shè)備及存儲介質(zhì),用以實現(xiàn)快速完成內(nèi)存訓(xùn)練,從而縮短bios啟動時長。
2、本發(fā)明提供一種內(nèi)存訓(xùn)練方法,包括如下步驟:
3、基于服務(wù)器中的多個內(nèi)存模塊,對所述服務(wù)器的基本輸入輸出系統(tǒng)bios啟動過程中的內(nèi)存訓(xùn)練代碼進行劃分,得到各內(nèi)存模塊對應(yīng)的內(nèi)存訓(xùn)練代碼;
4、將各內(nèi)存模塊對應(yīng)的內(nèi)存訓(xùn)練代碼,分配至所述服務(wù)器中處理器的各個內(nèi)核,以使各個內(nèi)核在bios啟動的過程中,基于分配的代碼,執(zhí)行對應(yīng)內(nèi)存模塊的內(nèi)存訓(xùn)練過程;
5、基于讀取各內(nèi)核的內(nèi)存訓(xùn)練標(biāo)志位的取值,確定所述服務(wù)器的內(nèi)存訓(xùn)練完成,所述內(nèi)存訓(xùn)練標(biāo)志位存儲在內(nèi)核的寄存器中,用于標(biāo)記內(nèi)核對應(yīng)的內(nèi)存模塊的內(nèi)存訓(xùn)練情況。
6、根據(jù)本發(fā)明提供的一種內(nèi)存訓(xùn)練方法,所述基于服務(wù)器中的多個內(nèi)存模塊,對所述服務(wù)器的基本輸入輸出系統(tǒng)bios啟動過程中的內(nèi)存訓(xùn)練代碼進行劃分,得到各內(nèi)存模塊對應(yīng)的內(nèi)存訓(xùn)練代碼,包括:
7、基于所述服務(wù)器中的多個內(nèi)存模塊,在所述bios啟動過程的內(nèi)存訓(xùn)練代碼中進行查找,確定對各內(nèi)存模塊進行內(nèi)存訓(xùn)練的起始位置代碼;
8、基于所述起始位置代碼,對所述bios啟動過程中的內(nèi)存訓(xùn)練代碼進行劃分,得到各內(nèi)存模塊對應(yīng)的內(nèi)存訓(xùn)練代碼。
9、根據(jù)本發(fā)明提供的一種內(nèi)存訓(xùn)練方法,所述將各內(nèi)存模塊對應(yīng)的內(nèi)存訓(xùn)練代碼,分配至所述服務(wù)器中處理器的各個內(nèi)核,以使各個內(nèi)核在bios啟動的過程中,基于分配的代碼,執(zhí)行對應(yīng)內(nèi)存模塊的內(nèi)存訓(xùn)練過程,包括:
10、基于所述各內(nèi)存模塊進行內(nèi)存訓(xùn)練的起始位置代碼,在所述處理器的各內(nèi)核的復(fù)位地址寄存器中分配起始代碼地址,所述起始代碼地址用于判斷跳轉(zhuǎn)執(zhí)行的代碼對應(yīng)的地址;
11、對各內(nèi)核進行解復(fù)位,以使內(nèi)核在解復(fù)位完成后,執(zhí)行對應(yīng)內(nèi)存模塊的內(nèi)存訓(xùn)練過程;
12、所述內(nèi)核執(zhí)行對應(yīng)內(nèi)存模塊的內(nèi)存訓(xùn)練過程,包括:
13、讀取內(nèi)核的寄存器中存儲的內(nèi)核編號,并基于所述內(nèi)核編號以及內(nèi)核中復(fù)位地址寄存器中存儲的起始代碼地址,確定跳轉(zhuǎn)至所述bios啟動過程中的內(nèi)存訓(xùn)練代碼的執(zhí)行位置,基于所述執(zhí)行位置確定分配的執(zhí)行代碼,以執(zhí)行對應(yīng)內(nèi)存模塊的內(nèi)存訓(xùn)練過程。
14、根據(jù)本發(fā)明提供的一種內(nèi)存訓(xùn)練方法,所述將各內(nèi)存模塊對應(yīng)的內(nèi)存訓(xùn)練代碼,分配至所述服務(wù)器中處理器的各個內(nèi)核之前,還包括:
15、對bios啟動過程的代碼進行劃分,得到bios前期初始化代碼以及bios啟動過程中的內(nèi)存訓(xùn)練代碼,所述bios前期初始化代碼用于執(zhí)行內(nèi)存訓(xùn)練前的初始化過程;
16、確定所述前期初始化代碼執(zhí)行完成。
17、根據(jù)本發(fā)明提供的一種內(nèi)存訓(xùn)練方法,所述基于讀取各內(nèi)核的內(nèi)存訓(xùn)練標(biāo)志位的取值,確定所述服務(wù)器的內(nèi)存訓(xùn)練完成,包括:
18、循環(huán)讀取各內(nèi)核的內(nèi)存訓(xùn)練標(biāo)志位的取值,在基于所述服務(wù)器的所有內(nèi)核的內(nèi)存訓(xùn)練標(biāo)志位的取值,確定各內(nèi)核對應(yīng)的內(nèi)存模塊訓(xùn)練完成的情況下,確定所述服務(wù)器的內(nèi)存訓(xùn)練完成。
19、根據(jù)本發(fā)明提供的一種內(nèi)存訓(xùn)練方法,
20、所述將各內(nèi)存模塊對應(yīng)的內(nèi)存訓(xùn)練代碼,分配至所述服務(wù)器中處理器的各個內(nèi)核,包括:
21、獲取所述處理器的非一致性內(nèi)存訪問numa拓撲對應(yīng)關(guān)系;
22、基于所述numa拓撲對應(yīng)關(guān)系,確定所述處理器中內(nèi)核與內(nèi)存的對應(yīng)關(guān)系,并基于所述內(nèi)核與內(nèi)存的對應(yīng)關(guān)系,將各內(nèi)存模塊對應(yīng)的內(nèi)存訓(xùn)練代碼,分配至所述服務(wù)器中處理器的各個內(nèi)核。
23、根據(jù)本發(fā)明提供的一種內(nèi)存訓(xùn)練方法,所述確定所述服務(wù)器的內(nèi)存訓(xùn)練完成之后,還包括:
24、從所述處理器中的多個內(nèi)核確定主核,基于主核執(zhí)行后續(xù)bios啟動流程,并將所有從核停止運行,直至bios啟動完成,所述從核是所述處理器中除了主核之外的內(nèi)核。
25、本發(fā)明還提供一種內(nèi)存訓(xùn)練裝置,包括如下模塊:
26、劃分模塊,用于基于服務(wù)器中的多個內(nèi)存模塊,對所述服務(wù)器的基本輸入輸出系統(tǒng)bios啟動過程中的內(nèi)存訓(xùn)練代碼進行劃分,得到各內(nèi)存模塊對應(yīng)的內(nèi)存訓(xùn)練代碼;
27、分配模塊,用于將各內(nèi)存模塊對應(yīng)的內(nèi)存訓(xùn)練代碼,分配至所述服務(wù)器中處理器的各個內(nèi)核,以使各個內(nèi)核在bios啟動的過程中,基于分配的代碼,執(zhí)行對應(yīng)內(nèi)存模塊的內(nèi)存訓(xùn)練過程;
28、內(nèi)存訓(xùn)練模塊,用于基于讀取各內(nèi)核的內(nèi)存訓(xùn)練標(biāo)志位的取值,確定所述服務(wù)器的內(nèi)存訓(xùn)練完成,所述內(nèi)存訓(xùn)練標(biāo)志位存儲在內(nèi)核的寄存器中,用于標(biāo)記內(nèi)核對應(yīng)的內(nèi)存模塊的內(nèi)存訓(xùn)練情況。
29、本發(fā)明還提供一種電子設(shè)備,包括存儲器、處理器及存儲在存儲器上并可在處理器上運行的計算機程序,所述處理器執(zhí)行所述程序時實現(xiàn)如上述任一種所述內(nèi)存訓(xùn)練方法。
30、本發(fā)明還提供一種非暫態(tài)計算機可讀存儲介質(zhì),其上存儲有計算機程序,該計算機程序被處理器執(zhí)行時實現(xiàn)如上述任一種所述內(nèi)存訓(xùn)練方法。
31、本發(fā)明提供的內(nèi)存訓(xùn)練方法、裝置、電子設(shè)備及存儲介質(zhì),通過對bios啟動過程中的內(nèi)存訓(xùn)練代碼進行劃分,將得到的各內(nèi)存模塊對應(yīng)的內(nèi)存訓(xùn)練代碼,分配至處理器的各個內(nèi)核,以使各個內(nèi)核在bios啟動的過程中,基于分配的代碼,并行執(zhí)行對服務(wù)器中的多個內(nèi)存模塊的內(nèi)存訓(xùn)練過程,實現(xiàn)快速完成內(nèi)存訓(xùn)練過程。通過啟用多核并行執(zhí)行內(nèi)存訓(xùn)練,縮短內(nèi)存訓(xùn)練時間,進而縮短bios啟動時長,提升了用戶體驗以及工作效率。
1.一種內(nèi)存訓(xùn)練方法,其特征在于,所述方法包括:
2.根據(jù)權(quán)利要求1所述的內(nèi)存訓(xùn)練方法,其特征在于,所述基于服務(wù)器中的多個內(nèi)存模塊,對所述服務(wù)器的基本輸入輸出系統(tǒng)bios啟動過程中的內(nèi)存訓(xùn)練代碼進行劃分,得到各內(nèi)存模塊對應(yīng)的內(nèi)存訓(xùn)練代碼,包括:
3.根據(jù)權(quán)利要求2所述的內(nèi)存訓(xùn)練方法,其特征在于,所述將各內(nèi)存模塊對應(yīng)的內(nèi)存訓(xùn)練代碼,分配至所述服務(wù)器中處理器的各個內(nèi)核,以使各個內(nèi)核在bios啟動的過程中,基于分配的代碼,執(zhí)行對應(yīng)內(nèi)存模塊的內(nèi)存訓(xùn)練過程,包括:
4.根據(jù)權(quán)利要求1所述的內(nèi)存訓(xùn)練方法,其特征在于,所述將各內(nèi)存模塊對應(yīng)的內(nèi)存訓(xùn)練代碼,分配至所述服務(wù)器中處理器的各個內(nèi)核之前,還包括:
5.根據(jù)權(quán)利要求1所述的內(nèi)存訓(xùn)練方法,其特征在于,所述基于讀取各內(nèi)核的內(nèi)存訓(xùn)練標(biāo)志位的取值,確定所述服務(wù)器的內(nèi)存訓(xùn)練完成,包括:
6.根據(jù)權(quán)利要求1所述的內(nèi)存訓(xùn)練方法,其特征在于,所述將各內(nèi)存模塊對應(yīng)的內(nèi)存訓(xùn)練代碼,分配至所述服務(wù)器中處理器的各個內(nèi)核,包括:
7.根據(jù)權(quán)利要求1所述的內(nèi)存訓(xùn)練方法,其特征在于,所述確定所述服務(wù)器的內(nèi)存訓(xùn)練完成之后,還包括:
8.一種內(nèi)存訓(xùn)練裝置,其特征在于,包括:
9.一種電子設(shè)備,包括存儲器、處理器以及存儲在所述存儲器上并可在所述處理器上運行的計算機程序,其特征在于,所述處理器執(zhí)行所述計算機程序時實現(xiàn)如權(quán)利要求1至7任一項所述內(nèi)存訓(xùn)練方法。
10.一種非暫態(tài)計算機可讀存儲介質(zhì),其上存儲有計算機程序,其特征在于,所述計算機程序被處理器執(zhí)行時實現(xiàn)如權(quán)利要求1至7任一項所述內(nèi)存訓(xùn)練方法。