本申請(qǐng)涉及計(jì)算機(jī)技術(shù)領(lǐng)域,具體涉及一種中央處理器構(gòu)建數(shù)據(jù)結(jié)構(gòu)的方法、一種基于numa架構(gòu)的內(nèi)存管理方法以及一種基于numa架構(gòu)的內(nèi)存管理系統(tǒng);本申請(qǐng)同時(shí)涉及一種中央處理器構(gòu)建數(shù)據(jù)結(jié)構(gòu)的裝置、電子設(shè)備、一種基于numa架構(gòu)的內(nèi)存管理裝置及電子設(shè)備。
背景技術(shù):
非一致內(nèi)存訪問結(jié)構(gòu)(non-uniformmemoryaccess,numa)既保持了對(duì)稱多處理器架構(gòu)(symmetricmulti-processor)模式單一操作系統(tǒng)拷貝、簡便的應(yīng)用程序編程模式以及易于管理的特點(diǎn),又繼承了大規(guī)模并行處理計(jì)算機(jī)(massiveparallelprocessing)模式的可擴(kuò)充性,可以有效地?cái)U(kuò)充系統(tǒng)的規(guī)模。在numa架構(gòu)中,中央處理器和內(nèi)存以節(jié)點(diǎn)的形式組織起來,處于該節(jié)點(diǎn)中的內(nèi)存被稱為本地內(nèi)存(localmemory),處于其它節(jié)點(diǎn)中的內(nèi)存對(duì)于該節(jié)點(diǎn)而言被稱為遠(yuǎn)程內(nèi)存(foreignmemory)。對(duì)于單個(gè)中央處理器而言,它既可以訪問本節(jié)點(diǎn)的本地內(nèi)存,也可以訪問其他節(jié)點(diǎn)的遠(yuǎn)程內(nèi)存。
在目前numa架構(gòu)下,訪問本地內(nèi)存和遠(yuǎn)程內(nèi)存的速度差別很大。因此,一般情況下,數(shù)據(jù)結(jié)構(gòu)都會(huì)復(fù)制到多個(gè)中央處理器上,本地中央處理器訪問本地的數(shù)據(jù)結(jié)構(gòu)。在應(yīng)用某個(gè)數(shù)據(jù)結(jié)構(gòu)時(shí),都會(huì)在每個(gè)中央處理器的內(nèi)存上執(zhí)行相同的操作,以保證數(shù)據(jù)在每個(gè)中央處理器上都存在。但這種實(shí)現(xiàn)方式具有如下問題:不同中央處理器的數(shù)據(jù)有可能存在不一致的情況,導(dǎo)致在不同的中央處理器上執(zhí)行時(shí)得到不同的結(jié)果而出錯(cuò),且驗(yàn)證數(shù)據(jù)的一致性也比較困難。
由此可見,在現(xiàn)有方案下,數(shù)據(jù)結(jié)構(gòu)的操作在每個(gè)中央處理器上是獨(dú)立進(jìn)行的,不能保證數(shù)據(jù)結(jié)構(gòu)在所有中央處理器上是一致的,而且出現(xiàn)不一致時(shí),難以驗(yàn)證。
技術(shù)實(shí)現(xiàn)要素:
本申請(qǐng)?zhí)峁┮环N中央處理器構(gòu)建數(shù)據(jù)結(jié)構(gòu)的方法、一種基于numa架構(gòu)的內(nèi)存管理方法以及一種基于numa架構(gòu)的內(nèi)存管理系統(tǒng),以解決現(xiàn)有技術(shù)中的上述問題;本申請(qǐng)同時(shí)涉及一種中央處理器構(gòu)建數(shù)據(jù)結(jié)構(gòu)的裝置、電子設(shè)備、一種基于numa架構(gòu)的內(nèi)存管理裝置及電子設(shè)備。
本申請(qǐng)?zhí)峁┝艘环N中央處理器構(gòu)建數(shù)據(jù)結(jié)構(gòu)的方法,所述中央處理器是numa架構(gòu)中的從屬中央處理器,所述中央處理器構(gòu)建數(shù)據(jù)結(jié)構(gòu)的方法,包括:
接收主中央處理器發(fā)送的構(gòu)建數(shù)據(jù)結(jié)構(gòu)的空閑節(jié)點(diǎn)的位置信息以及構(gòu)建的所述數(shù)據(jù)結(jié)構(gòu);
根據(jù)所述空閑節(jié)點(diǎn)的位置信息,在本地內(nèi)存中對(duì)應(yīng)所述空閑節(jié)點(diǎn)的節(jié)點(diǎn)上構(gòu)建與所述空閑節(jié)點(diǎn)上相同的數(shù)據(jù)結(jié)構(gòu)。
可選的,所述根據(jù)所述空閑節(jié)點(diǎn)的位置信息,在本地內(nèi)存中對(duì)應(yīng)所述空閑節(jié)點(diǎn)的節(jié)點(diǎn)上構(gòu)建與所述空閑節(jié)點(diǎn)上相同的數(shù)據(jù)結(jié)構(gòu),包括:
從接收的構(gòu)建數(shù)據(jù)結(jié)構(gòu)的所述空閑節(jié)點(diǎn)的位置信息中獲取所述空閑節(jié)點(diǎn)在所述主中央處理器的本地內(nèi)存中的偏移值;
在所述本地內(nèi)存中查找距起始點(diǎn)相同偏移值處的節(jié)點(diǎn);
在所述節(jié)點(diǎn)上構(gòu)建與所述空閑節(jié)點(diǎn)上相同的數(shù)據(jù)結(jié)構(gòu)。
可選的,在所述節(jié)點(diǎn)上構(gòu)建與所述空閑節(jié)點(diǎn)上相同的數(shù)據(jù)結(jié)構(gòu)的步驟之前,包括:
判斷在所述本地內(nèi)存中的所述節(jié)點(diǎn)是否被占用;
若是,則返回異常信息;
若否,則執(zhí)行所述在所述節(jié)點(diǎn)上構(gòu)建與所述空閑節(jié)點(diǎn)上相同的數(shù)據(jù)結(jié)構(gòu)的步驟。
可選的,在執(zhí)行所述在本地內(nèi)存中對(duì)應(yīng)所述空閑節(jié)點(diǎn)的節(jié)點(diǎn)上構(gòu)建與所述空閑節(jié)點(diǎn)上相同的數(shù)據(jù)結(jié)構(gòu)的步驟時(shí),還包括:
判斷在該中央處理器中執(zhí)行的構(gòu)建數(shù)據(jù)結(jié)構(gòu)的操作是否執(zhí)行出錯(cuò);
若是,則執(zhí)行回滾操作。
相應(yīng)的,本申請(qǐng)還提供了一種中央處理器構(gòu)建數(shù)據(jù)結(jié)構(gòu)的裝置,所述中央處理器是numa架構(gòu)中的從屬中央處理器,所述中央處理器構(gòu)建數(shù)據(jù)結(jié)構(gòu)的裝置,包括:
數(shù)據(jù)結(jié)構(gòu)接收單元,用于接收主中央處理器發(fā)送的構(gòu)建數(shù)據(jù)結(jié)構(gòu)的所述空閑節(jié)點(diǎn)的位置信息以及構(gòu)建的所述數(shù)據(jù)結(jié)構(gòu);
數(shù)據(jù)結(jié)構(gòu)構(gòu)建單元,用于根據(jù)所述空閑節(jié)點(diǎn)的位置信息,在本地內(nèi)存中對(duì)應(yīng)所述空閑節(jié)點(diǎn)的節(jié)點(diǎn)上構(gòu)建與所述空閑節(jié)點(diǎn)上相同的數(shù)據(jù)結(jié)構(gòu)。
可選的,所述數(shù)據(jù)結(jié)構(gòu)構(gòu)建單元,包括:
偏移值獲取子單元,用于從接收的構(gòu)建數(shù)據(jù)結(jié)構(gòu)的所述空閑節(jié)點(diǎn)的位置信息中獲取所述空閑節(jié)點(diǎn)在所述主中央處理器的本地內(nèi)存中的偏移值;
節(jié)點(diǎn)查找子單元,用于在所述本地內(nèi)存中查找距起始點(diǎn)相同偏移值處的節(jié)點(diǎn);
數(shù)據(jù)結(jié)構(gòu)構(gòu)建子單元,用于在所述節(jié)點(diǎn)上構(gòu)建與所述空閑節(jié)點(diǎn)上相同的數(shù)據(jù)結(jié)構(gòu)。
可選的,所述數(shù)據(jù)結(jié)構(gòu)構(gòu)建單元,還包括:
占用判斷子單元,用于在所述節(jié)點(diǎn)上構(gòu)建與所述空閑節(jié)點(diǎn)上相同的數(shù)據(jù)結(jié)構(gòu)之前,判斷在所述本地內(nèi)存中的所述節(jié)點(diǎn)是否被占用;
異常信息返回子單元,用于接收所述占用判斷子單元的判斷結(jié)果,若是,則返回異常信息;
數(shù)據(jù)結(jié)構(gòu)構(gòu)建觸發(fā)子單元,用于接收所述占用判斷子單元的判斷結(jié)果,若否,則觸發(fā)所述數(shù)據(jù)結(jié)構(gòu)構(gòu)建子單元。
可選的,還包括:
執(zhí)行出錯(cuò)判斷單元,用于在執(zhí)行所述在本地內(nèi)存中對(duì)應(yīng)所述空閑節(jié)點(diǎn)的節(jié)點(diǎn)上構(gòu)建與所述空閑節(jié)點(diǎn)上相同的數(shù)據(jù)結(jié)構(gòu)時(shí),判斷在該中央處理器中執(zhí)行的構(gòu)建數(shù)據(jù)結(jié)構(gòu)的操作是否執(zhí)行出錯(cuò);
回滾操作執(zhí)行單元,用于接收所述執(zhí)行出錯(cuò)判斷單元的判斷結(jié)果,若是,則執(zhí)行回滾操作。
此外,本申請(qǐng)還提供了一種電子設(shè)備,包括:
顯示器;
處理器;
存儲(chǔ)器,用于存儲(chǔ)數(shù)據(jù)結(jié)構(gòu)構(gòu)建程序,所述程序在被所述處理器讀取執(zhí)行時(shí),執(zhí)行如下操作:接收主中央處理器發(fā)送的構(gòu)建數(shù)據(jù)結(jié)構(gòu)的所述空閑節(jié)點(diǎn)的位置 信息以及構(gòu)建的所述數(shù)據(jù)結(jié)構(gòu);根據(jù)所述空閑節(jié)點(diǎn)的位置信息,在本地內(nèi)存中對(duì)應(yīng)所述空閑節(jié)點(diǎn)的節(jié)點(diǎn)上構(gòu)建與所述空閑節(jié)點(diǎn)上相同的數(shù)據(jù)結(jié)構(gòu)。
此外,本申請(qǐng)還提供了一種基于numa架構(gòu)的內(nèi)存管理方法,所述基于numa架構(gòu)的內(nèi)存管理方法,包括:
在主中央處理器的本地內(nèi)存中獲取空閑節(jié)點(diǎn);
在所述空閑節(jié)點(diǎn)上構(gòu)建數(shù)據(jù)結(jié)構(gòu);
向從屬中央處理器發(fā)送構(gòu)建數(shù)據(jù)結(jié)構(gòu)的所述空閑節(jié)點(diǎn)的位置信息以及構(gòu)建的所述數(shù)據(jù)結(jié)構(gòu)。
所述空閑節(jié)點(diǎn)的位置信息,包括:所述空閑節(jié)點(diǎn)在本地內(nèi)存中的偏移值。
可選的,所述從屬中央處理器的性能參數(shù)與所述主中央處理器的性能參數(shù)相同。
可選的,在所述空閑節(jié)點(diǎn)上構(gòu)建數(shù)據(jù)結(jié)構(gòu)為靜態(tài)分配的數(shù)據(jù)結(jié)構(gòu)。
可選的,所述numa架構(gòu)中包括至少一個(gè)從屬中央處理器。
可選的,在所述在主中央處理器的本地內(nèi)存中獲取空閑節(jié)點(diǎn)的步驟之前,包括:
從運(yùn)行在所述numa架構(gòu)中的中央處理器中選擇一個(gè)中央處理器作為主中央處理器;
將運(yùn)行在所述numa架構(gòu)中的其他中央處理器作為從屬中央處理器。
可選的,若在所述向從屬中央處理器發(fā)送構(gòu)建數(shù)據(jù)結(jié)構(gòu)的所述空閑節(jié)點(diǎn)的位置信息以及構(gòu)建的所述數(shù)據(jù)結(jié)構(gòu)的步驟中,所述numa架構(gòu)中從屬中央處理器的數(shù)量大于一,則執(zhí)行如下步驟:
向每一從屬中央處理器發(fā)送構(gòu)建數(shù)據(jù)結(jié)構(gòu)的所述空閑節(jié)點(diǎn)的位置信息以及構(gòu)建的所述數(shù)據(jù)結(jié)構(gòu)。
可選的,在執(zhí)行所述在所述空閑節(jié)點(diǎn)上構(gòu)建數(shù)據(jù)結(jié)構(gòu)的步驟時(shí),包括:
判斷在主中央處理器中執(zhí)行的構(gòu)建數(shù)據(jù)結(jié)構(gòu)的操作是否執(zhí)行出錯(cuò);
若是,則執(zhí)行回滾操作。
相應(yīng)的,本申請(qǐng)還提供了一種基于numa架構(gòu)的內(nèi)存管理裝置,所述基于numa架構(gòu)的內(nèi)存管理裝置,包括:
空閑節(jié)點(diǎn)獲取單元,用于在主中央處理器的本地內(nèi)存中獲取空閑節(jié)點(diǎn);
數(shù)據(jù)結(jié)構(gòu)構(gòu)建單元,用于在所述空閑節(jié)點(diǎn)上構(gòu)建數(shù)據(jù)結(jié)構(gòu);
數(shù)據(jù)結(jié)構(gòu)同步單元,用于向從屬中央處理器發(fā)送構(gòu)建數(shù)據(jù)結(jié)構(gòu)的所述空閑節(jié)點(diǎn)的位置信息以及構(gòu)建的所述數(shù)據(jù)結(jié)構(gòu)。
可選的,所述數(shù)據(jù)結(jié)構(gòu)同步單元,具體用于向從屬中央處理器發(fā)送構(gòu)建數(shù)據(jù)結(jié)構(gòu)的所述空閑節(jié)點(diǎn)在本地內(nèi)存中的偏移值以及構(gòu)建的所述數(shù)據(jù)結(jié)構(gòu)。
可選的,所述數(shù)據(jù)結(jié)構(gòu)構(gòu)建單元,具體用于在所述空閑節(jié)點(diǎn)上構(gòu)建數(shù)據(jù)結(jié)構(gòu)為靜態(tài)分配的數(shù)據(jù)結(jié)構(gòu)。
可選的,所述數(shù)據(jù)結(jié)構(gòu)同步單元,用于向至少一個(gè)從屬中央處理器發(fā)送構(gòu)建數(shù)據(jù)結(jié)構(gòu)的所述空閑節(jié)點(diǎn)的位置以及構(gòu)建的所述數(shù)據(jù)結(jié)構(gòu)。
可選的,還包括:
主處理器選擇單元,用于在主中央處理器的本地內(nèi)存中獲取空閑節(jié)點(diǎn)之前,從運(yùn)行在所述numa架構(gòu)中的中央處理器中選擇一個(gè)中央處理器作為主中央處理器;
從屬處理器選擇單元,用于將運(yùn)行在所述numa架構(gòu)中的其他中央處理器作為從屬中央處理器。
可選的,若所述numa架構(gòu)中從屬中央處理器的數(shù)量大于一,則所述數(shù)據(jù)結(jié)構(gòu)同步單元,用于向每一從屬中央處理器發(fā)送構(gòu)建數(shù)據(jù)結(jié)構(gòu)的所述空閑節(jié)點(diǎn)的位置信息以及構(gòu)建的所述數(shù)據(jù)結(jié)構(gòu)。
可選的,還包括:
判斷單元,用于在執(zhí)行所述在所述空閑節(jié)點(diǎn)上構(gòu)建數(shù)據(jù)結(jié)構(gòu)時(shí),判斷在主中央處理器中執(zhí)行的構(gòu)建數(shù)據(jù)結(jié)構(gòu)的操作是否執(zhí)行出錯(cuò);
回滾操作執(zhí)行單元,用于接收所述判斷單元的判斷結(jié)果,若是,則執(zhí)行回滾操作。
此外,本申請(qǐng)還提供了一種電子設(shè)備,包括:
顯示器;
處理器;
存儲(chǔ)器,用于存儲(chǔ)內(nèi)存管理程序,所述程序在被所述處理器讀取執(zhí)行時(shí),執(zhí)行如下操作:在主中央處理器的本地內(nèi)存中獲取空閑節(jié)點(diǎn);在所述空閑節(jié)點(diǎn)上構(gòu)建數(shù)據(jù)結(jié)構(gòu);向從屬中央處理器發(fā)送構(gòu)建數(shù)據(jù)結(jié)構(gòu)的所述空閑節(jié)點(diǎn)的位置信息以 及構(gòu)建的所述數(shù)據(jù)結(jié)構(gòu)。
此外,本申請(qǐng)還提供了一種基于numa架構(gòu)的內(nèi)存管理系統(tǒng),所述基于numa架構(gòu)的內(nèi)存管理系統(tǒng),包括:
上述任一項(xiàng)所述的中央處理器構(gòu)建數(shù)據(jù)結(jié)構(gòu)的裝置;以及
上述任一項(xiàng)所述的基于numa架構(gòu)的內(nèi)存管理裝置。
與現(xiàn)有技術(shù)相比,本申請(qǐng)具有以下優(yōu)點(diǎn):
本申請(qǐng)?zhí)峁┑囊环N中央處理器構(gòu)建數(shù)據(jù)結(jié)構(gòu)的方法、裝置及電子設(shè)備,通過接收主中央處理器發(fā)送的構(gòu)建數(shù)據(jù)結(jié)構(gòu)的空閑節(jié)點(diǎn)的位置信息以及構(gòu)建的所述數(shù)據(jù)結(jié)構(gòu);根據(jù)所述空閑節(jié)點(diǎn)的位置信息,在本地內(nèi)存中對(duì)應(yīng)所述空閑節(jié)點(diǎn)的節(jié)點(diǎn)上構(gòu)建與所述空閑節(jié)點(diǎn)上相同的數(shù)據(jù)結(jié)構(gòu)。所述技術(shù)方案解決了在所有中央處理器上數(shù)據(jù)結(jié)構(gòu)的不同導(dǎo)致在不同的中央處理器上執(zhí)行時(shí)得到不同的結(jié)果而出錯(cuò)的問題,使各個(gè)中央處理器上的數(shù)據(jù)保持一致。
本申請(qǐng)?zhí)峁┑囊环N基于numa架構(gòu)的內(nèi)存管理方法、裝置及電子設(shè)備,通過在主中央處理器的本地內(nèi)存中獲取空閑節(jié)點(diǎn);在所述空閑節(jié)點(diǎn)上構(gòu)建數(shù)據(jù)結(jié)構(gòu);向從屬中央處理器發(fā)送構(gòu)建數(shù)據(jù)結(jié)構(gòu)的所述空閑節(jié)點(diǎn)的位置以及構(gòu)建的所述數(shù)據(jù)結(jié)構(gòu)。所述技術(shù)方案通過在主中央處理器中計(jì)算創(chuàng)建數(shù)據(jù)結(jié)構(gòu)的節(jié)點(diǎn)后,將計(jì)算出的節(jié)點(diǎn)的位置信息發(fā)送給從屬中央處理器,從屬中央處理器不在進(jìn)行創(chuàng)建數(shù)據(jù)結(jié)構(gòu)的節(jié)點(diǎn)的計(jì)算,減少了相同的操作在不同中央處理器上的重復(fù)執(zhí)行,提高了效率。
附圖說明
為了更清楚地說明本申請(qǐng)實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本申請(qǐng)中記載的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來講,還可以根據(jù)這些附圖獲得其他的附圖。
圖1示出了根據(jù)本申請(qǐng)的實(shí)施例提供的中央處理器構(gòu)建數(shù)據(jù)結(jié)構(gòu)的方法的流程圖;
圖2示出了根據(jù)本申請(qǐng)的實(shí)施例提供的根據(jù)所述空閑節(jié)點(diǎn)的位置信息,在 本地內(nèi)存中對(duì)應(yīng)所述空閑節(jié)點(diǎn)的節(jié)點(diǎn)上構(gòu)建與所述空閑節(jié)點(diǎn)上相同的數(shù)據(jù)結(jié)構(gòu)的流程圖;
圖3示出了根據(jù)本申請(qǐng)的實(shí)施例提供的對(duì)從屬中央處理器的本地內(nèi)存進(jìn)行一致性判斷的流程圖;
圖4示出了根據(jù)本申請(qǐng)的實(shí)施例提供的中央處理器構(gòu)建數(shù)據(jù)結(jié)構(gòu)的裝置的示意圖;
圖5示出了根據(jù)本申請(qǐng)的實(shí)施例提供的電子設(shè)備的示意圖;
圖6示出了根據(jù)本申請(qǐng)的實(shí)施例提供的基于numa架構(gòu)的內(nèi)存管理方法的流程圖;
圖7示出了根據(jù)本申請(qǐng)的實(shí)施例提供的確定主從關(guān)系的流程圖;
圖8示出了根據(jù)本申請(qǐng)的實(shí)施例提供的基于numa架構(gòu)的內(nèi)存管理裝置的示意圖;
圖9示出了根據(jù)本申請(qǐng)的實(shí)施例提供的電子設(shè)備的示意圖;
圖10示出了根據(jù)本申請(qǐng)的實(shí)施例提供的基于numa架構(gòu)的內(nèi)存管理系統(tǒng)的示意圖。
具體實(shí)施方式
為了能夠更清楚地理解本申請(qǐng)的上述目的、特征和優(yōu)點(diǎn),下面結(jié)合附圖和具體實(shí)施方式對(duì)本申請(qǐng)進(jìn)行進(jìn)一步的詳細(xì)描述。需要說明的是,在不沖突的情況下,本申請(qǐng)的實(shí)施例及實(shí)施例中的特征可以相互組合。
在下面的描述中闡述了很多具體細(xì)節(jié)以便于充分理解本申請(qǐng)。但是,本申請(qǐng)能夠以很多不同于在此描述的其它方式來實(shí)施,本領(lǐng)域技術(shù)人員可以在不違背本申請(qǐng)內(nèi)涵的情況下做類似推廣,因此,本申請(qǐng)不受下面公開的具體實(shí)施的限制。
本申請(qǐng)的實(shí)施例提供了一種中央處理器構(gòu)建數(shù)據(jù)結(jié)構(gòu)的方法、一種基于numa架構(gòu)的內(nèi)存管理方法以及一種基于numa架構(gòu)的內(nèi)存管理系統(tǒng);本申請(qǐng)同時(shí)涉及一種中央處理器構(gòu)建數(shù)據(jù)結(jié)構(gòu)的裝置、電子設(shè)備、一種基于numa架構(gòu)的內(nèi)存管理裝置及電子設(shè)備。在下面的實(shí)施例中逐一進(jìn)行詳細(xì)說明。
在目前numa架構(gòu)下,訪問本地內(nèi)存和遠(yuǎn)程內(nèi)存的速度差別很大。因此,一 般情況下,數(shù)據(jù)結(jié)構(gòu)都會(huì)復(fù)制到多個(gè)中央處理器上,本地中央處理器訪問本地的數(shù)據(jù)結(jié)構(gòu)。在應(yīng)用某個(gè)數(shù)據(jù)結(jié)構(gòu)時(shí),都會(huì)在每個(gè)中央處理器的內(nèi)存上執(zhí)行相同的操作,以保證數(shù)據(jù)在每個(gè)中央處理器上都存在。但這種實(shí)現(xiàn)方式具有如下問題:不同中央處理器的數(shù)據(jù)有可能存在不一致的情況,導(dǎo)致在不同的中央處理器上執(zhí)行時(shí)得到不同的結(jié)果而出錯(cuò),且驗(yàn)證數(shù)據(jù)的一致性也比較困難;重復(fù)的操作導(dǎo)致數(shù)據(jù)結(jié)構(gòu)管理性能下降。由此可見,在現(xiàn)有方案下,數(shù)據(jù)結(jié)構(gòu)的操作在每個(gè)中央處理器上是獨(dú)立進(jìn)行的,不能保證數(shù)據(jù)結(jié)構(gòu)在所有中央處理器上是一致的,而且出現(xiàn)不一致時(shí),難以驗(yàn)證;相同的操作在不同中央處理器上重復(fù)執(zhí)行,浪費(fèi)處理器,響了效率。針對(duì)這一問題,本申請(qǐng)的技術(shù)方案通過在主中央處理器中設(shè)置管理結(jié)構(gòu),限定從屬中央處理器構(gòu)建數(shù)據(jù)結(jié)構(gòu)的位置,從而實(shí)現(xiàn)了在所有中央處理器中保持?jǐn)?shù)據(jù)一致性的功能。
在詳細(xì)描述本實(shí)施例的具體步驟之前,先對(duì)本技術(shù)方案涉及的numa架構(gòu)作簡要說明。
中央處理器(cpu,centralprocessingunit)是一臺(tái)計(jì)算機(jī)的運(yùn)算核心和控制核心。它的功能主要是解釋計(jì)算機(jī)指令以及處理計(jì)算機(jī)軟件中的數(shù)據(jù)。中央處理器主要包括運(yùn)算器和高速緩沖存儲(chǔ)器(cache)及實(shí)現(xiàn)它們之間聯(lián)系的數(shù)據(jù)(data)。它與內(nèi)部存儲(chǔ)器(memory)和輸入/輸出(i/o)設(shè)備合稱為電子計(jì)算機(jī)三大核心部件。
非一致內(nèi)存訪問(numa)是一種具有多cpu的系統(tǒng)架構(gòu),利用numa技術(shù),可以把幾十個(gè)cpu(甚至上百個(gè)cpu)組合在一個(gè)服務(wù)器內(nèi)。numa架構(gòu)的基本特征是具有多個(gè)cpu模塊,每個(gè)cpu模塊由多個(gè)cpu(如4個(gè))組成,并且具有獨(dú)立的本地內(nèi)存、i/o槽口等。numa架構(gòu)中,cpu被劃分成多個(gè)節(jié)點(diǎn),每個(gè)節(jié)點(diǎn)分配有本地內(nèi)存。由于其節(jié)點(diǎn)之間可以通過互聯(lián)模塊進(jìn)行連接和信息交互,因此每個(gè)cpu可以訪問numa系統(tǒng)的全部的物理內(nèi)存。內(nèi)存訪問時(shí)間取決于cpu的內(nèi)存位置,cpu訪問本地內(nèi)存的速度將遠(yuǎn)遠(yuǎn)高于訪問遠(yuǎn)地內(nèi)存(系統(tǒng)內(nèi)其它節(jié)點(diǎn)的內(nèi)存)的速度,這也是非一致存儲(chǔ)訪問numa的由來。由于這個(gè)特點(diǎn),為了更好地發(fā)揮系統(tǒng)性能,開發(fā)應(yīng)用程序時(shí)需要盡量減少不同cpu模塊之間的信息交互。例如:numa架構(gòu)中總內(nèi)存空間為256gb,以節(jié)點(diǎn)1、2、3和4的順序,節(jié)點(diǎn)1的內(nèi)存地址范圍為0至64gb,節(jié)點(diǎn)2的內(nèi)存地址范圍為64gb至128gb,節(jié)點(diǎn)3的內(nèi)存地址范圍為128gb至192gb,節(jié)點(diǎn)4的內(nèi)存地址范圍為192gb至256gb。即節(jié)點(diǎn)1、2、3和4的內(nèi)存地址是連續(xù)的。
本申請(qǐng)的實(shí)施例提供了一種中央處理器構(gòu)建數(shù)據(jù)結(jié)構(gòu)的方法,本實(shí)施例中的所述中央處理器是numa架構(gòu)中的從屬中央處理器,所述從屬中央處理器通過接收主中央處理器中管理結(jié)構(gòu)發(fā)送的構(gòu)建指令,完成在本地內(nèi)存中構(gòu)建數(shù)據(jù)結(jié)構(gòu)的過程。所述中央處理器構(gòu)建數(shù)據(jù)結(jié)構(gòu)的方法實(shí)施例如下:
請(qǐng)參考圖1,其示出了根據(jù)本申請(qǐng)的實(shí)施例提供的中央處理器構(gòu)建數(shù)據(jù)結(jié)構(gòu)的方法的流程圖。
所述中央處理器構(gòu)建數(shù)據(jù)結(jié)構(gòu)的方法包括:
步驟s101,接收主中央處理器發(fā)送的構(gòu)建數(shù)據(jù)結(jié)構(gòu)的空閑節(jié)點(diǎn)的位置信息以及構(gòu)建的所述數(shù)據(jù)結(jié)構(gòu)。
在本實(shí)施例中,所述接收主中央處理器發(fā)送的構(gòu)建數(shù)據(jù)結(jié)構(gòu)的空閑節(jié)點(diǎn)的位置信息以及構(gòu)建的所述數(shù)據(jù)結(jié)構(gòu),可以采用如下方式實(shí)現(xiàn):從屬中央處理器通過互聯(lián)通道與所述主中央處理器進(jìn)行連接和信息交互,所述從屬中央處理器接收所述主中央處理器發(fā)送的構(gòu)建數(shù)據(jù)結(jié)構(gòu)的空閑節(jié)點(diǎn)的位置信息以及構(gòu)建的所述數(shù)據(jù)結(jié)構(gòu)。可以理解的,所述構(gòu)建數(shù)據(jù)結(jié)構(gòu)的空閑節(jié)點(diǎn)是:在所述主中央處理器的本地內(nèi)存中構(gòu)建了數(shù)據(jù)結(jié)構(gòu)的節(jié)點(diǎn)。
需要說明的是,所述從屬中央處理器是slavecpu,所述主中央處理器是mastercpu,所述從屬中央處理器與所述主中央處理器通過互聯(lián)通道進(jìn)行連接和信息交互,所述互聯(lián)通道可以是inter-connect通道。在numa系統(tǒng)中,每個(gè)cpu(mastercpu或slavecpu)可以訪問兩種內(nèi)存:本地內(nèi)存(localmemory)和遠(yuǎn)端內(nèi)存(remotememory)。和cpu在同一個(gè)節(jié)點(diǎn)的內(nèi)存稱為本地內(nèi)存,訪問延遲非常低。和cpu在不同節(jié)點(diǎn)上的內(nèi)存叫做遠(yuǎn)端內(nèi)存,進(jìn)行遠(yuǎn)程cpu訪問時(shí),其訪問速度小于本地cpu訪問的速度,訪問延遲要比訪問本地內(nèi)存長。
在本實(shí)施例中,構(gòu)建的所述數(shù)據(jù)結(jié)構(gòu)包括:數(shù)據(jù)的邏輯結(jié)構(gòu)、數(shù)據(jù)的存儲(chǔ)結(jié)構(gòu)、數(shù)據(jù)的運(yùn)算;構(gòu)建數(shù)據(jù)結(jié)構(gòu)的空閑節(jié)點(diǎn)的位置信息包括:構(gòu)建該數(shù)據(jù)結(jié)構(gòu)的空閑節(jié)點(diǎn)在主中央處理器的本地內(nèi)存中的偏移值。
需要說明的是,所述數(shù)據(jù)結(jié)構(gòu)中,對(duì)數(shù)據(jù)元素間邏輯關(guān)系的描述稱為數(shù)據(jù)的邏輯結(jié)構(gòu);數(shù)據(jù)必須在計(jì)算機(jī)內(nèi)存儲(chǔ),數(shù)據(jù)的存儲(chǔ)結(jié)構(gòu)是數(shù)據(jù)結(jié)構(gòu)的實(shí)現(xiàn)形式,是其在計(jì)算機(jī)內(nèi)的表示;此外討論一個(gè)數(shù)據(jù)結(jié)構(gòu)必須同時(shí)討論在該類數(shù)據(jù)上執(zhí)行的運(yùn)算才有意義。其中,數(shù)據(jù)的邏輯結(jié)構(gòu)包括:集合結(jié)構(gòu)、線性結(jié)構(gòu)、樹形結(jié)構(gòu)、圖狀結(jié)構(gòu);集合結(jié)構(gòu):除了同屬于一種類型外,別無其它關(guān)系線性結(jié)構(gòu); 線性結(jié)構(gòu)存在一對(duì)一關(guān)系的類型有:數(shù)組,鏈表,隊(duì)列,棧,它們之間在操作上有所區(qū)別,例如:鏈表可在任意位置插入或刪除元素,而隊(duì)列在隊(duì)尾插入元素,隊(duì)頭刪除元素,棧只能在棧頂進(jìn)行插入和刪除操作;樹形結(jié)構(gòu):元素之間存在一對(duì)多關(guān)系,常見類型有:二叉樹、平衡二叉樹、查找樹等;圖形結(jié)構(gòu):元素之間存在多對(duì)多關(guān)系,圖形結(jié)構(gòu)中每個(gè)結(jié)點(diǎn)的前驅(qū)結(jié)點(diǎn)數(shù)和后續(xù)結(jié)點(diǎn)多個(gè)數(shù)可以任意。所述構(gòu)建該數(shù)據(jù)結(jié)構(gòu)的空閑節(jié)點(diǎn)在主中央處理器的本地內(nèi)存中的偏移值是該空閑節(jié)點(diǎn)的地址與主中央處理器的本地內(nèi)存的起始點(diǎn)的差值。
步驟s103,根據(jù)所述空閑節(jié)點(diǎn)的位置信息,在本地內(nèi)存中對(duì)應(yīng)所述空閑節(jié)點(diǎn)的節(jié)點(diǎn)上構(gòu)建與所述空閑節(jié)點(diǎn)上相同的數(shù)據(jù)結(jié)構(gòu)。
在本實(shí)施例中,所述根據(jù)所述空閑節(jié)點(diǎn)的位置信息,在本地內(nèi)存中對(duì)應(yīng)所述空閑節(jié)點(diǎn)的節(jié)點(diǎn)上構(gòu)建與所述空閑節(jié)點(diǎn)上相同的數(shù)據(jù)結(jié)構(gòu),可以采用如下方式實(shí)現(xiàn):根據(jù)所述空閑節(jié)點(diǎn)的位置信息,在從屬中央處理器的本地內(nèi)存中查詢位置信息與所述空閑節(jié)點(diǎn)的位置信息相同的節(jié)點(diǎn),并在該節(jié)點(diǎn)上構(gòu)建與接收到的在所述空閑節(jié)點(diǎn)上構(gòu)建的所述數(shù)據(jù)結(jié)構(gòu)相同的數(shù)據(jù)結(jié)構(gòu)。
需要說明的是,所述在本地內(nèi)存中對(duì)應(yīng)所述空閑節(jié)點(diǎn)的節(jié)點(diǎn),可以是一個(gè)物理的計(jì)算節(jié)點(diǎn),也可以為邏輯上的多個(gè)物理計(jì)算節(jié)點(diǎn),所述本地內(nèi)存可以是從屬中央處理器內(nèi)的任意內(nèi)存存儲(chǔ)單元,例如內(nèi)存管理區(qū)、內(nèi)存條、內(nèi)存控制器對(duì)應(yīng)的內(nèi)存單元等。
在本實(shí)施例中,所述根據(jù)所述空閑節(jié)點(diǎn)的位置信息,在本地內(nèi)存中對(duì)應(yīng)所述空閑節(jié)點(diǎn)的節(jié)點(diǎn)上構(gòu)建與所述空閑節(jié)點(diǎn)上相同的數(shù)據(jù)結(jié)構(gòu),具體包括步驟s103-1、s103-3以及s103-5,下面結(jié)合附圖2作進(jìn)一步說明。
請(qǐng)參考圖2,其示出了根據(jù)本申請(qǐng)的實(shí)施例提供的根據(jù)所述空閑節(jié)點(diǎn)的位置信息,在本地內(nèi)存中對(duì)應(yīng)所述空閑節(jié)點(diǎn)的節(jié)點(diǎn)上構(gòu)建與所述空閑節(jié)點(diǎn)上相同的數(shù)據(jù)結(jié)構(gòu)的流程圖。
步驟s103-1,從接收的構(gòu)建數(shù)據(jù)結(jié)構(gòu)的所述空閑節(jié)點(diǎn)的位置信息中獲取所述空閑節(jié)點(diǎn)在所述主中央處理器的本地內(nèi)存中的偏移值。
在本實(shí)施例中,所述從接收的構(gòu)建數(shù)據(jù)結(jié)構(gòu)的所述空閑節(jié)點(diǎn)的位置中獲取所述空閑節(jié)點(diǎn)在所述主中央處理器的本地內(nèi)存中的偏移值,可以采用如下方式實(shí)現(xiàn):對(duì)接收到的構(gòu)建數(shù)據(jù)結(jié)構(gòu)的所述空閑節(jié)點(diǎn)的位置信息進(jìn)行解析,獲取構(gòu)建數(shù)據(jù)結(jié)構(gòu)的所述空閑節(jié)點(diǎn)的偏移值。
需要說明的是,所述構(gòu)建該數(shù)據(jù)結(jié)構(gòu)的空閑節(jié)點(diǎn)在主中央處理器的本地內(nèi)存中的偏移值是該空閑節(jié)點(diǎn)的地址與主中央處理器的本地內(nèi)存的起始點(diǎn)的差值??梢酝ㄟ^偏移值描述在內(nèi)存中節(jié)點(diǎn)的位置,通過偏移值區(qū)分在內(nèi)存中的不同位置處的節(jié)點(diǎn)。
步驟s103-3,在所述本地內(nèi)存中查找距起始點(diǎn)相同偏移值處的節(jié)點(diǎn)。
在本實(shí)施例中,所述在所述本地內(nèi)存中查找距起始點(diǎn)相同偏移值處的節(jié)點(diǎn),可以采用如下方式實(shí)現(xiàn):在所述本地內(nèi)存的起始點(diǎn)處通過偏移值向后推算在本地內(nèi)存中對(duì)應(yīng)所述空閑節(jié)點(diǎn)的節(jié)點(diǎn)的位置。
可以理解的,為了實(shí)現(xiàn)在所有中央處理器中保持?jǐn)?shù)據(jù)的一致性,所以需要在不同中央處理器中將數(shù)據(jù)結(jié)構(gòu)構(gòu)建在相同位置的節(jié)點(diǎn)上,為了確保節(jié)點(diǎn)的相同,在本實(shí)施例中,numa架構(gòu)中具有的多個(gè)中央處理器(包括主中央處理器和全部從屬中央處理器)的性能參數(shù)都是相同的,即:主中央處理器和從屬中央處理器完全一致。
步驟s103-5,在所述節(jié)點(diǎn)上構(gòu)建與所述空閑節(jié)點(diǎn)上相同的數(shù)據(jù)結(jié)構(gòu)。
在本實(shí)施例中,所述在所述節(jié)點(diǎn)上構(gòu)建與所述空閑節(jié)點(diǎn)上相同的數(shù)據(jù)結(jié)構(gòu),可以采用如下方式實(shí)現(xiàn):從屬中央處理器在起始點(diǎn)處通過偏移值向后推算出的在本地內(nèi)存中對(duì)應(yīng)所述空閑節(jié)點(diǎn)的節(jié)點(diǎn)上,構(gòu)建與主中央處理器的所述空閑節(jié)點(diǎn)上相同的數(shù)據(jù)結(jié)構(gòu)。
為了實(shí)現(xiàn)在所有中央處理器中保持?jǐn)?shù)據(jù)的一致性,本實(shí)施例的技術(shù)方案提供了一種優(yōu)選實(shí)施方式,在優(yōu)選方式下,在所述節(jié)點(diǎn)上構(gòu)建與所述空閑節(jié)點(diǎn)上相同的數(shù)據(jù)結(jié)構(gòu)的步驟之前,需要對(duì)從屬中央處理器的本地內(nèi)存進(jìn)行一致性判斷,即:為了保證能夠在與所述空閑節(jié)點(diǎn)對(duì)應(yīng)的所述節(jié)點(diǎn)上構(gòu)建相同的數(shù)據(jù)結(jié)構(gòu),所述節(jié)點(diǎn)的狀態(tài)應(yīng)為未被占用或空閑狀態(tài),具體包括步驟s103-4-1至s103-4-3,下面結(jié)合附圖3作進(jìn)一步說明。
請(qǐng)參考圖3,其示出了根據(jù)本申請(qǐng)的實(shí)施例提供的對(duì)從屬中央處理器的本地內(nèi)存進(jìn)行一致性判斷的流程圖。
步驟s103-4-1,判斷在所述本地內(nèi)存中的所述節(jié)點(diǎn)是否被占用。
在本實(shí)施例中,所述判斷在所述本地內(nèi)存中的所述節(jié)點(diǎn)是否被占用,可以采用如下方式實(shí)現(xiàn):讀取從屬中央處理器在起始點(diǎn)處通過偏移值向后推算出的在本地內(nèi)存中對(duì)應(yīng)所述空閑節(jié)點(diǎn)的節(jié)點(diǎn),判斷所述節(jié)點(diǎn)上是否已構(gòu)建數(shù)據(jù)結(jié)構(gòu); 或者獲取所述節(jié)點(diǎn)的內(nèi)存使用狀態(tài)信息,判斷所述節(jié)點(diǎn)的內(nèi)存使用狀態(tài)信息是否為非空閑狀態(tài)。
步驟s103-4-2,若是,則返回異常信息。
在本實(shí)施例中,接收步驟s103-4-1中的判斷結(jié)果,所述返回異常信息,可以采用如下方式實(shí)現(xiàn):從屬中央處理器通過互聯(lián)通道向所述主中央處理器返回異常信息。例如:所述異常信息,包括:從屬中央處理器通過互聯(lián)通道向所述主中央處理器中的管理結(jié)構(gòu)返回內(nèi)容為“數(shù)據(jù)結(jié)構(gòu)的創(chuàng)建有問題,出現(xiàn)嚴(yán)重bug”的異常信息。
步驟s103-4-3,若否,則執(zhí)行所述在所述節(jié)點(diǎn)上構(gòu)建與所述空閑節(jié)點(diǎn)上相同的數(shù)據(jù)結(jié)構(gòu)的步驟。
在本實(shí)施例中,接收步驟s103-4-1中的判斷結(jié)果,若所述本地內(nèi)存中的所述節(jié)點(diǎn)未被占用,則說明在所述節(jié)點(diǎn)上構(gòu)建與所述空閑節(jié)點(diǎn)上相同的數(shù)據(jù)結(jié)構(gòu)后,可以實(shí)現(xiàn)從屬中央處理器與主中央處理器數(shù)據(jù)的一致,則在所述從屬中央處理器中執(zhí)行步驟s103-5在所述節(jié)點(diǎn)上構(gòu)建與所述空閑節(jié)點(diǎn)上相同的數(shù)據(jù)結(jié)構(gòu)。
為了實(shí)現(xiàn)在所有中央處理器中保持?jǐn)?shù)據(jù)的一致性,本實(shí)施例的技術(shù)方案提供了一種優(yōu)選實(shí)施方式,在優(yōu)選方式下,在執(zhí)行所述在本地內(nèi)存中對(duì)應(yīng)所述空閑節(jié)點(diǎn)的節(jié)點(diǎn)上構(gòu)建與所述空閑節(jié)點(diǎn)上相同的數(shù)據(jù)結(jié)構(gòu)的步驟時(shí),還包括如下步驟:
判斷在該中央處理器中執(zhí)行的構(gòu)建數(shù)據(jù)結(jié)構(gòu)的操作是否執(zhí)行出錯(cuò);
若是,則執(zhí)行回滾操作。
需要說明的是,所述回滾操作(rollback)是在該從屬中央處理器中執(zhí)行的構(gòu)建數(shù)據(jù)結(jié)構(gòu)的操作發(fā)生故障時(shí),使從屬中央處理器的本地內(nèi)存中的數(shù)據(jù)返回到以前的狀態(tài),在進(jìn)行回滾時(shí)并拋出該條記錄執(zhí)行錯(cuò)誤的信息。在執(zhí)行回滾操作之后是否重新執(zhí)行所述在本地內(nèi)存中對(duì)應(yīng)所述空閑節(jié)點(diǎn)的節(jié)點(diǎn)上構(gòu)建與所述空閑節(jié)點(diǎn)上相同的數(shù)據(jù)結(jié)構(gòu)的步驟,需要取決于上層應(yīng)用的邏輯。例如:如果上層應(yīng)用的邏輯出錯(cuò),則重新執(zhí)行有可能繼續(xù)失敗。
通過本申請(qǐng)實(shí)施例提供的一種中央處理器構(gòu)建數(shù)據(jù)結(jié)構(gòu)的方法,通過接收主中央處理器發(fā)送的構(gòu)建數(shù)據(jù)結(jié)構(gòu)的所述空閑節(jié)點(diǎn)的位置以及構(gòu)建的所述數(shù)據(jù)結(jié)構(gòu);使得從屬中央處理器根據(jù)所述空閑節(jié)點(diǎn)的位置信息,在本地內(nèi)存中對(duì)應(yīng)所 述空閑節(jié)點(diǎn)的節(jié)點(diǎn)上構(gòu)建與所述空閑節(jié)點(diǎn)上相同的數(shù)據(jù)結(jié)構(gòu),與主中央存儲(chǔ)器在相同位置構(gòu)建相同的數(shù)據(jù)結(jié)構(gòu),使得從屬中央處理器與主中央處理器上的數(shù)據(jù)保持一致,且使從屬中央處理器在構(gòu)建數(shù)據(jù)結(jié)構(gòu)時(shí)省去了計(jì)算空閑節(jié)點(diǎn)的過程,減少了相同的操作在不同中央處理器上的重復(fù)執(zhí)行,提高了效率。
在上述的實(shí)施例中,提供了一種中央處理器構(gòu)建數(shù)據(jù)結(jié)構(gòu)的方法,與上述中央處理器構(gòu)建數(shù)據(jù)結(jié)構(gòu)的方法相對(duì)應(yīng)的,本申請(qǐng)還提供了一種中央處理器構(gòu)建數(shù)據(jù)結(jié)構(gòu)的裝置。由于裝置的實(shí)施例基本相似于方法的實(shí)施例,所以描述得比較簡單,相關(guān)之處參見方法實(shí)施例的部分說明即可。下述描述的裝置實(shí)施例僅僅是示意性的。所述中央處理器構(gòu)建數(shù)據(jù)結(jié)構(gòu)的裝置實(shí)施例如下:
請(qǐng)參考圖4,其示出了根據(jù)本申請(qǐng)的實(shí)施例提供的中央處理器構(gòu)建數(shù)據(jù)結(jié)構(gòu)的裝置的示意圖。
所述中央處理器構(gòu)建數(shù)據(jù)結(jié)構(gòu)的裝置,包括:數(shù)據(jù)結(jié)構(gòu)接收單元401以及數(shù)據(jù)結(jié)構(gòu)構(gòu)建單元403;
所述數(shù)據(jù)結(jié)構(gòu)接收單元401,用于接收主中央處理器發(fā)送的構(gòu)建數(shù)據(jù)結(jié)構(gòu)的所述空閑節(jié)點(diǎn)的位置信息以及構(gòu)建的所述數(shù)據(jù)結(jié)構(gòu);
所述數(shù)據(jù)結(jié)構(gòu)構(gòu)建單元403,用于根據(jù)所述空閑節(jié)點(diǎn)的位置信息,在本地內(nèi)存中對(duì)應(yīng)所述空閑節(jié)點(diǎn)的節(jié)點(diǎn)上構(gòu)建與所述空閑節(jié)點(diǎn)上相同的數(shù)據(jù)結(jié)構(gòu)。
可選的,所述數(shù)據(jù)結(jié)構(gòu)構(gòu)建單元403,包括:偏移值獲取子單元、節(jié)點(diǎn)查找子單元以及數(shù)據(jù)結(jié)構(gòu)構(gòu)建子單元;
所述偏移值獲取子單元,用于從接收的構(gòu)建數(shù)據(jù)結(jié)構(gòu)的所述空閑節(jié)點(diǎn)的位置中獲取所述空閑節(jié)點(diǎn)在所述主中央處理器的本地內(nèi)存中的偏移值;
所述節(jié)點(diǎn)查找子單元,用于在所述本地內(nèi)存中查找距起始點(diǎn)相同偏移值處的節(jié)點(diǎn);
所述數(shù)據(jù)結(jié)構(gòu)構(gòu)建子單元,用于在所述節(jié)點(diǎn)上構(gòu)建與所述空閑節(jié)點(diǎn)上相同的數(shù)據(jù)結(jié)構(gòu)。
可選的,所述數(shù)據(jù)結(jié)構(gòu)構(gòu)建單元403,還包括:占用判斷子單元、異常信息返回子單元以及數(shù)據(jù)結(jié)構(gòu)構(gòu)建觸發(fā)子單元;
所述占用判斷子單元,用于在所述節(jié)點(diǎn)上構(gòu)建與所述空閑節(jié)點(diǎn)上相同的數(shù)據(jù)結(jié)構(gòu)之前,判斷在所述本地內(nèi)存中的所述節(jié)點(diǎn)是否被占用;
所述異常信息返回子單元,用于接收所述占用判斷子單元的判斷結(jié)果,若是, 則返回異常信息;
所述數(shù)據(jù)結(jié)構(gòu)構(gòu)建觸發(fā)子單元,用于接收所述占用判斷子單元的判斷結(jié)果,若否,則觸發(fā)所述數(shù)據(jù)結(jié)構(gòu)構(gòu)建子單元。
可選的,所述中央處理器構(gòu)建數(shù)據(jù)結(jié)構(gòu)的裝置,還包括:執(zhí)行出錯(cuò)判斷單元以及回滾操作執(zhí)行單元;
所述執(zhí)行出錯(cuò)判斷單元,用于在執(zhí)行所述在本地內(nèi)存中對(duì)應(yīng)所述空閑節(jié)點(diǎn)的節(jié)點(diǎn)上構(gòu)建與所述空閑節(jié)點(diǎn)上相同的數(shù)據(jù)結(jié)構(gòu)時(shí),判斷在該中央處理器中執(zhí)行的構(gòu)建數(shù)據(jù)結(jié)構(gòu)的操作是否執(zhí)行出錯(cuò);
所述回滾操作執(zhí)行單元,用于接收所述執(zhí)行出錯(cuò)判斷單元的判斷結(jié)果,若是,則執(zhí)行回滾操作。
在上述的實(shí)施例中,提供了一種中央處理器構(gòu)建數(shù)據(jù)結(jié)構(gòu)的方法以及一種中央處理器構(gòu)建數(shù)據(jù)結(jié)構(gòu)的裝置,此外,本申請(qǐng)還提供了一種電子設(shè)備;所述電子設(shè)備實(shí)施例如下:
請(qǐng)參考圖5,其示出了根據(jù)本申請(qǐng)的實(shí)施例提供的電子設(shè)備的示意圖。
所述電子設(shè)備,包括:顯示器501;處理器503;存儲(chǔ)器505;
所述存儲(chǔ)器505,用于存儲(chǔ)數(shù)據(jù)結(jié)構(gòu)構(gòu)建程序,所述程序在被所述處理器讀取執(zhí)行時(shí),執(zhí)行如下操作:接收主中央處理器發(fā)送的構(gòu)建數(shù)據(jù)結(jié)構(gòu)的所述空閑節(jié)點(diǎn)的位置信息以及構(gòu)建的所述數(shù)據(jù)結(jié)構(gòu);根據(jù)所述空閑節(jié)點(diǎn)的位置信息,在本地內(nèi)存中對(duì)應(yīng)所述空閑節(jié)點(diǎn)的節(jié)點(diǎn)上構(gòu)建與所述空閑節(jié)點(diǎn)上相同的數(shù)據(jù)結(jié)構(gòu)。
在上述的實(shí)施例中,提供了一種中央處理器構(gòu)建數(shù)據(jù)結(jié)構(gòu)的方法、一種中央處理器構(gòu)建數(shù)據(jù)結(jié)構(gòu)的裝置以及一種電子設(shè)備,此外,本申請(qǐng)還提供了一種基于numa架構(gòu)的內(nèi)存管理方法,所述方法可以應(yīng)用于一管理結(jié)構(gòu)中,該管理結(jié)構(gòu)可以位于numa構(gòu)架的主中央處理器上;也可以單獨(dú)作為一個(gè)獨(dú)立的物理結(jié)構(gòu)。所述基于numa架構(gòu)的內(nèi)存管理方法實(shí)施例如下:
請(qǐng)參考圖6,其示出了根據(jù)本申請(qǐng)的實(shí)施例提供的基于numa架構(gòu)的內(nèi)存管理方法的流程圖。
所述基于numa架構(gòu)的內(nèi)存管理方法包括:
步驟s601,在主中央處理器的本地內(nèi)存中獲取空閑節(jié)點(diǎn)。
當(dāng)系統(tǒng)發(fā)起構(gòu)建數(shù)據(jù)結(jié)構(gòu)的請(qǐng)求時(shí),首先根據(jù)主中央處理器的本地內(nèi)存中各 節(jié)點(diǎn)的內(nèi)存使用狀況,選擇相應(yīng)的節(jié)點(diǎn),即在主中央處理器的本地內(nèi)存中選擇未被占用的空閑節(jié)點(diǎn),然后在所選擇的空閑節(jié)點(diǎn)上構(gòu)建數(shù)據(jù)結(jié)構(gòu)。
在本實(shí)施例中,所述在主中央處理器的本地內(nèi)存中獲取空閑節(jié)點(diǎn),可以采用如下方式實(shí)現(xiàn):獲取所述主中央處理器的本地內(nèi)存中各個(gè)節(jié)點(diǎn)的內(nèi)存使用狀態(tài)信息,并根據(jù)各節(jié)點(diǎn)的所述內(nèi)存使用狀態(tài)信息,篩選出內(nèi)存使用狀態(tài)信息為空閑狀態(tài)的空閑節(jié)點(diǎn)。所述內(nèi)存使用狀態(tài)信息包括內(nèi)存使用比例和空閑狀態(tài)。
為了確定所述空閑節(jié)點(diǎn)的位置,在所述在主中央處理器的本地內(nèi)存中獲取空閑節(jié)點(diǎn)后,獲取該空閑節(jié)點(diǎn)在主中央處理器的本地內(nèi)存中的偏移值。
需要說明的是,所述空閑節(jié)點(diǎn)在主中央處理器的本地內(nèi)存中的偏移值是該空閑節(jié)點(diǎn)的地址與主中央處理器的本地內(nèi)存的起始點(diǎn)的差值??梢酝ㄟ^偏移值描述在內(nèi)存中節(jié)點(diǎn)的位置,通過偏移值區(qū)分在內(nèi)存中的不同位置處的節(jié)點(diǎn)。
為了使在主中央處理器的本地內(nèi)存中獲取的空閑節(jié)點(diǎn)符合將要構(gòu)建的數(shù)據(jù)結(jié)構(gòu),避免節(jié)點(diǎn)空間的浪費(fèi),本實(shí)施例的技術(shù)方案提供了一種優(yōu)選實(shí)施方式,在優(yōu)選方式下,根據(jù)將要構(gòu)建的數(shù)據(jù)結(jié)構(gòu)的內(nèi)存需求和空閑節(jié)點(diǎn)的屬性信息,在主中央處理器的本地內(nèi)存中獲取符合將要構(gòu)建的數(shù)據(jù)結(jié)構(gòu)的內(nèi)存需求的空閑節(jié)點(diǎn)。
需要說明的是,所述在主中央處理器的本地內(nèi)存中獲取的空閑節(jié)點(diǎn),可以是一個(gè)物理的計(jì)算節(jié)點(diǎn),也可以為邏輯上的多個(gè)物理計(jì)算節(jié)點(diǎn),所述本地內(nèi)存可以是主中央處理器內(nèi)的任意內(nèi)存存儲(chǔ)單元,例如內(nèi)存管理區(qū)、內(nèi)存條、內(nèi)存控制器對(duì)應(yīng)的內(nèi)存單元等。
具體的,在numa架構(gòu)中,主中央處理器執(zhí)行時(shí)需要申請(qǐng)本地內(nèi)存以緩存程序代碼,所述主中央處理器根據(jù)自身需求向本地內(nèi)存請(qǐng)求用于構(gòu)建數(shù)據(jù)結(jié)構(gòu)的節(jié)點(diǎn),該請(qǐng)求中包含所述主中央處理器申請(qǐng)的內(nèi)存需求信息,該內(nèi)存需求信息中可以包括:內(nèi)存大小。例如:主中央處理器發(fā)送的請(qǐng)求中包括的需求信息為:500kb,則表示所述主中央處理器請(qǐng)求分配大小為500kb的內(nèi)存區(qū)域。
以上述例子為例,所述主中央處理器請(qǐng)求500kb的內(nèi)存,在所述主中央處理器的本地內(nèi)存中獲取等于500kb的空閑節(jié)點(diǎn),或者獲取大于且最接近500kb的空閑節(jié)點(diǎn)。
下面針對(duì)所述基于numa架構(gòu)的內(nèi)存管理方法,本申請(qǐng)?zhí)峁┝艘粋€(gè)具體例子以便對(duì)所述基于numa架構(gòu)的內(nèi)存管理方法進(jìn)行說明:以哈希表為例,在分配哈 希表時(shí),會(huì)在所述主中央處理器的本地內(nèi)存中分配哈希表往哈希表里添加一條記錄的過程如下:(以偽代碼進(jìn)行說明)
hash_add(entry)
hash_index=hash_func(entry)//mastercpu
fori<hash_bucket_length
ifhash_bucketisfree
在添加記錄(entry)時(shí),先需要在主中央處理器(mastercpu)中計(jì)算哈希索引(hash_index),在計(jì)算索引之后,遍歷哈希桶(hash_bucket)查找空閑節(jié)點(diǎn),在判斷哈希桶的長度滿足需求后(fori<hash_bucket_length),判斷該哈希桶是否為空閑狀態(tài),若是則獲取該空閑哈希桶。
在本實(shí)施例中的numa結(jié)構(gòu)中,具有主中央處理器和從屬中央處理器,numa架構(gòu)對(duì)中央處理器的總數(shù)量沒有限制,在常見的numa架構(gòu)中中央處理器的數(shù)目通常為2,4,8,16,32等,其中主中央處理器只有一個(gè),其余的中央處理器均為從屬中央處理器,根據(jù)numa架構(gòu)中中央處理器的數(shù)目的不同,在該numa架構(gòu)中包括至少一個(gè)從屬中央處理器,例如:若numa架構(gòu)中中央處理器的數(shù)目為2,則具有一個(gè)主中央處理器和一個(gè)從屬中央處理器;若numa架構(gòu)中中央處理器的數(shù)目為4,則具有一個(gè)主中央處理器和三個(gè)從屬中央處理器,根據(jù)架構(gòu)中的中央處理器的數(shù)目的增加,從屬中央處理器的數(shù)目也相應(yīng)的增長。
需要說明的是,為了實(shí)現(xiàn)在所有中央處理器中保持?jǐn)?shù)據(jù)的一致性,從屬中央處理器創(chuàng)建的數(shù)據(jù)結(jié)構(gòu)是與主中央處理器中創(chuàng)建的數(shù)據(jù)結(jié)構(gòu)相對(duì)應(yīng)的,所以需要在不同中央處理器中將數(shù)據(jù)結(jié)構(gòu)構(gòu)建在相同位置的節(jié)點(diǎn)上,為了確保節(jié)點(diǎn)的相同,在本實(shí)施例中,numa架構(gòu)中具有的多個(gè)中央處理器(包括主中央處理器和全部從屬中央處理器)的性能參數(shù)都是相同的,即:主中央處理器和從屬中央處理器完全一致。
為了確定在numa架構(gòu)中中央處理器的主從關(guān)系,本實(shí)施例的技術(shù)方案提供了一種優(yōu)選實(shí)施方式,在優(yōu)選方式下,在步驟601在主中央處理器的本地內(nèi)存中獲取空閑節(jié)點(diǎn)之前,具體包括步驟s600-1至s600-2,下面結(jié)合附圖7作進(jìn)一步說明。
請(qǐng)參考圖7,其示出了根據(jù)本申請(qǐng)的實(shí)施例提供的確定主從關(guān)系的流程圖。
步驟s600-1,從運(yùn)行在所述numa架構(gòu)中的中央處理器中選擇一個(gè)中央處理 器作為主中央處理器。
在本實(shí)施例中,所述從運(yùn)行在所述numa架構(gòu)中的中央處理器中選擇一個(gè)中央處理器作為主中央處理器,可以采用如下方式實(shí)現(xiàn):從運(yùn)行在所述numa架構(gòu)中的中央處理器中隨機(jī)選擇一個(gè)中央處理器作為主中央處理器。
可以理解的,numa架構(gòu)中具有的多個(gè)中央處理器的性能參數(shù)都是相同的,所以任意一個(gè)中央處理器均可作為主中央處理器。
步驟s600-2,將運(yùn)行在所述numa架構(gòu)中的其他中央處理器作為從屬中央處理器。
例如:若numa架構(gòu)中中央處理器的數(shù)目為2,則在所述numa架構(gòu)中有1個(gè)中央處理器被作為從屬中央處理器;若numa架構(gòu)中中央處理器的數(shù)目為4,則在所述numa架構(gòu)中有3個(gè)中央處理器被作為從屬中央處理器。
步驟s603,在所述空閑節(jié)點(diǎn)上構(gòu)建數(shù)據(jù)結(jié)構(gòu)。
在本實(shí)施例中,所述在所述空閑節(jié)點(diǎn)上構(gòu)建數(shù)據(jù)結(jié)構(gòu),可以采用如下方式實(shí)現(xiàn):根據(jù)系統(tǒng)發(fā)起的構(gòu)建數(shù)據(jù)結(jié)構(gòu)的請(qǐng)求中,獲取將要構(gòu)建的數(shù)據(jù)結(jié)構(gòu)的需求,在步驟s601中獲取的所述空閑節(jié)點(diǎn)上構(gòu)建數(shù)據(jù)結(jié)構(gòu)。
需要說明的是,系統(tǒng)發(fā)起的構(gòu)建數(shù)據(jù)結(jié)構(gòu)的請(qǐng)求,是構(gòu)建靜態(tài)分配的數(shù)據(jù)結(jié)構(gòu)的請(qǐng)求,所述構(gòu)建靜態(tài)分配的數(shù)據(jù)結(jié)構(gòu)也叫信息結(jié)構(gòu),常用的整型、浮點(diǎn)型等類型的數(shù)據(jù),都屬于靜態(tài)數(shù)據(jù),他們的存儲(chǔ)空間在程序執(zhí)行過程中不能加以改變,因此被稱為靜態(tài)分配的數(shù)據(jù)結(jié)構(gòu)。所以靜態(tài)數(shù)據(jù)結(jié)構(gòu)的特點(diǎn)是由系統(tǒng)分配固定大小的存儲(chǔ)空間,以后在程序運(yùn)行的過程中,存儲(chǔ)空間的位置和容量都不會(huì)再改變。
在本實(shí)施例中,構(gòu)建的所述數(shù)據(jù)結(jié)構(gòu)包括:數(shù)據(jù)的邏輯結(jié)構(gòu)、數(shù)據(jù)的存儲(chǔ)結(jié)構(gòu)、數(shù)據(jù)的運(yùn)算。所述數(shù)據(jù)結(jié)構(gòu)中,對(duì)數(shù)據(jù)元素間邏輯關(guān)系的描述稱為數(shù)據(jù)的邏輯結(jié)構(gòu);數(shù)據(jù)必須在計(jì)算機(jī)內(nèi)存儲(chǔ),數(shù)據(jù)的存儲(chǔ)結(jié)構(gòu)是數(shù)據(jù)結(jié)構(gòu)的實(shí)現(xiàn)形式,是其在計(jì)算機(jī)內(nèi)的表示;此外討論一個(gè)數(shù)據(jù)結(jié)構(gòu)必須同時(shí)討論在該類數(shù)據(jù)上執(zhí)行的運(yùn)算才有意義。其中,數(shù)據(jù)的邏輯結(jié)構(gòu)包括:集合結(jié)構(gòu)、線性結(jié)構(gòu)、樹形結(jié)構(gòu)、圖狀結(jié)構(gòu);集合結(jié)構(gòu):除了同屬于一種類型外,別無其它關(guān)系線性結(jié)構(gòu);線性結(jié)構(gòu)存在一對(duì)一關(guān)系的類型有:數(shù)組,鏈表,隊(duì)列,棧,它們之間在操作上有所區(qū)別,例如:鏈表可在任意位置插入或刪除元素,而隊(duì)列在隊(duì)尾插入元素,隊(duì)頭刪除元素,棧只能在棧頂進(jìn)行插入和刪除操作;樹形結(jié)構(gòu):元素之間存在一對(duì)多 關(guān)系,常見類型有:二叉樹、平衡二叉樹、查找樹等;圖形結(jié)構(gòu):元素之間存在多對(duì)多關(guān)系,圖形結(jié)構(gòu)中每個(gè)結(jié)點(diǎn)的前驅(qū)結(jié)點(diǎn)數(shù)和后續(xù)結(jié)點(diǎn)多個(gè)數(shù)可以任意。
下面仍沿用上述基于numa架構(gòu)的內(nèi)存管理方法的具體例子,對(duì)本步驟的處理過程作進(jìn)一步說明:在主中央處理器中添加記錄的過程如下:(以偽代碼進(jìn)行說明)
ifhash_bucketisfree
addentryonmastercpu
在上述步驟判斷該哈希桶是否為空閑狀態(tài),若是則獲取該空閑哈希桶之后,在主中央處理器(mastercpu)上添加記錄(entry)。
為了實(shí)現(xiàn)在所有中央處理器中保持?jǐn)?shù)據(jù)的一致性,本實(shí)施例的技術(shù)方案提供了一種優(yōu)選實(shí)施方式,在優(yōu)選方式下,在執(zhí)行所述在所述空閑節(jié)點(diǎn)上構(gòu)建數(shù)據(jù)結(jié)構(gòu)的步驟,還包括如下步驟:
判斷在主中央處理器中執(zhí)行的構(gòu)建數(shù)據(jù)結(jié)構(gòu)的操作是否執(zhí)行出錯(cuò);
若是,則執(zhí)行回滾操作。
需要說明的是,所述回滾操作(rollback)是在主中央處理器中執(zhí)行的構(gòu)建數(shù)據(jù)結(jié)構(gòu)的操作發(fā)生故障時(shí),使主中央處理器的本地內(nèi)存中的數(shù)據(jù)返回到以前的狀態(tài),在進(jìn)行回滾時(shí)并拋出該條記錄執(zhí)行錯(cuò)誤的信息。在執(zhí)行回滾操作之后是否重新執(zhí)行所述在所述空閑節(jié)點(diǎn)上構(gòu)建數(shù)據(jù)結(jié)構(gòu)的步驟,需要取決于上層應(yīng)用的邏輯。例如:如果上層應(yīng)用的邏輯出錯(cuò),則重新執(zhí)行有可能繼續(xù)失敗。
步驟s605,向從屬中央處理器發(fā)送構(gòu)建數(shù)據(jù)結(jié)構(gòu)的所述空閑節(jié)點(diǎn)的位置信息以及構(gòu)建的所述數(shù)據(jù)結(jié)構(gòu)。
在本實(shí)施例中,所述向從屬中央處理器發(fā)送構(gòu)建數(shù)據(jù)結(jié)構(gòu)的所述空閑節(jié)點(diǎn)的位置以及構(gòu)建的所述數(shù)據(jù)結(jié)構(gòu),可以采用如下方式實(shí)現(xiàn):所述主中央處理器通過互聯(lián)通道與從屬中央處理器進(jìn)行連接和信息交互,所述主中央處理器向從屬中央處理器發(fā)送構(gòu)建數(shù)據(jù)結(jié)構(gòu)的所述空閑節(jié)點(diǎn)的位置信息以及構(gòu)建的所述數(shù)據(jù)結(jié)構(gòu)。所述空閑節(jié)點(diǎn)的位置,包括:所述空閑節(jié)點(diǎn)在本地內(nèi)存中的偏移值。
需要說明的是,所述從屬中央處理器是slavecpu,所述主中央處理器是mastercpu,所述從屬中央處理器與所述主中央處理器通過互聯(lián)通道進(jìn)行連接和信息交互,所述互聯(lián)通道可以是inter-connect通道。
具體的,所述向從屬中央處理器發(fā)送的構(gòu)建數(shù)據(jù)結(jié)構(gòu)的所述空閑節(jié)點(diǎn)的位 置信息是:構(gòu)建數(shù)據(jù)結(jié)構(gòu)的所述空閑節(jié)點(diǎn)在主中央處理器的本地內(nèi)存中的偏移值;所述向從屬中央處理器發(fā)送的在所述空閑節(jié)點(diǎn)上構(gòu)建的數(shù)據(jù)結(jié)構(gòu)是:根據(jù)系統(tǒng)發(fā)起的構(gòu)建數(shù)據(jù)結(jié)構(gòu)的請(qǐng)求而構(gòu)建出的數(shù)據(jù)結(jié)構(gòu)。
可以理解的,由于在本實(shí)施例中的numa結(jié)構(gòu)對(duì)中央處理器的總數(shù)量沒有限制,若從屬中央處理器的數(shù)目大于1,相應(yīng)的,在執(zhí)行步驟605向從屬中央處理器發(fā)送構(gòu)建數(shù)據(jù)結(jié)構(gòu)的所述空閑節(jié)點(diǎn)的位置信息以及構(gòu)建的所述數(shù)據(jù)結(jié)構(gòu)時(shí),則向每一從屬中央處理器發(fā)送構(gòu)建數(shù)據(jù)結(jié)構(gòu)的所述空閑節(jié)點(diǎn)的位置以及構(gòu)建的所述數(shù)據(jù)結(jié)構(gòu)。
通過本申請(qǐng)實(shí)施例提供的一種基于numa架構(gòu)的內(nèi)存管理方法,通過在主中央處理器中計(jì)算創(chuàng)建數(shù)據(jù)結(jié)構(gòu)的節(jié)點(diǎn)后,向從屬中央處理器發(fā)送構(gòu)建數(shù)據(jù)結(jié)構(gòu)的所述空閑節(jié)點(diǎn)的位置信息以及構(gòu)建的所述數(shù)據(jù)結(jié)構(gòu),使從屬中央處理器在構(gòu)建數(shù)據(jù)結(jié)構(gòu)時(shí)不在進(jìn)行創(chuàng)建數(shù)據(jù)結(jié)構(gòu)的節(jié)點(diǎn)的計(jì)算,省去了計(jì)算空閑節(jié)點(diǎn)的過程,減少了相同的操作在不同中央處理器上的重復(fù)執(zhí)行,提高了效率。
在上述的實(shí)施例中,提供了一種基于numa架構(gòu)的內(nèi)存管理方法,與上述基于numa架構(gòu)的內(nèi)存管理方法相對(duì)應(yīng)的,本申請(qǐng)還提供了一種基于numa架構(gòu)的內(nèi)存管理裝置。由于裝置的實(shí)施例基本相似于方法的實(shí)施例,所以描述得比較簡單,相關(guān)之處參見方法實(shí)施例的部分說明即可。下述描述的裝置實(shí)施例僅僅是示意性的。所述基于numa架構(gòu)的內(nèi)存管理裝置實(shí)施例如下:
請(qǐng)參考圖8,其示出了根據(jù)本申請(qǐng)的實(shí)施例提供的基于numa架構(gòu)的內(nèi)存管理裝置的示意圖。
所述基于numa架構(gòu)的內(nèi)存管理裝置,包括:空閑節(jié)點(diǎn)獲取單元801、數(shù)據(jù)結(jié)構(gòu)構(gòu)建單元803以及數(shù)據(jù)結(jié)構(gòu)同步單元805;
所述空閑節(jié)點(diǎn)獲取單元801,用于在主中央處理器的本地內(nèi)存中獲取空閑節(jié)點(diǎn);
所述數(shù)據(jù)結(jié)構(gòu)構(gòu)建單元803,用于在所述空閑節(jié)點(diǎn)上構(gòu)建數(shù)據(jù)結(jié)構(gòu);
所述數(shù)據(jù)結(jié)構(gòu)同步單元805,用于向從屬中央處理器發(fā)送構(gòu)建數(shù)據(jù)結(jié)構(gòu)的所述空閑節(jié)點(diǎn)的位置信息以及構(gòu)建的所述數(shù)據(jù)結(jié)構(gòu)。
可選的,所述數(shù)據(jù)結(jié)構(gòu)同步單元805,具體用于向從屬中央處理器發(fā)送構(gòu)建數(shù)據(jù)結(jié)構(gòu)的所述空閑節(jié)點(diǎn)在本地內(nèi)存中的偏移值以及構(gòu)建的所述數(shù)據(jù)結(jié)構(gòu)。
可選的,所述數(shù)據(jù)結(jié)構(gòu)構(gòu)建單元803,具體用于在所述空閑節(jié)點(diǎn)上構(gòu)建數(shù)據(jù) 結(jié)構(gòu)為靜態(tài)分配的數(shù)據(jù)結(jié)構(gòu)。
可選的,所述數(shù)據(jù)結(jié)構(gòu)同步單元805,用于向至少一個(gè)從屬中央處理器發(fā)送構(gòu)建數(shù)據(jù)結(jié)構(gòu)的所述空閑節(jié)點(diǎn)的位置信息以及構(gòu)建的所述數(shù)據(jù)結(jié)構(gòu)。
可選的,所述基于numa架構(gòu)的內(nèi)存管理裝置,還包括:主處理器選擇單元以及從屬處理器選擇單元;
所述主處理器選擇單元,用于在主中央處理器的本地內(nèi)存中獲取空閑節(jié)點(diǎn)之前,從運(yùn)行在所述numa架構(gòu)中的中央處理器中選擇一個(gè)中央處理器作為主中央處理器;
所述從屬處理器選擇單元,用于將運(yùn)行在所述numa架構(gòu)中的其他中央處理器作為從屬中央處理器。
可選的,若所述numa架構(gòu)中從屬中央處理器的數(shù)量大于一,則所述數(shù)據(jù)結(jié)構(gòu)同步單元805,用于向每一從屬中央處理器發(fā)送構(gòu)建數(shù)據(jù)結(jié)構(gòu)的所述空閑節(jié)點(diǎn)的位置信息以及構(gòu)建的所述數(shù)據(jù)結(jié)構(gòu)。
可選的,所述基于numa架構(gòu)的內(nèi)存管理裝置,還包括:判斷單元以及回滾操作執(zhí)行單元;
所述判斷單元,用于在執(zhí)行所述在所述空閑節(jié)點(diǎn)上構(gòu)建數(shù)據(jù)結(jié)構(gòu)時(shí),判斷在主中央處理器中執(zhí)行的構(gòu)建數(shù)據(jù)結(jié)構(gòu)的操作是否執(zhí)行出錯(cuò);
所述回滾操作執(zhí)行單元,用于接收所述判斷單元的判斷結(jié)果,若是,則執(zhí)行回滾操作。
在上述的實(shí)施例中,提供了一種中央處理器構(gòu)建數(shù)據(jù)結(jié)構(gòu)的方法、一種中央處理器構(gòu)建數(shù)據(jù)結(jié)構(gòu)的裝置、一種電子設(shè)備、一種基于numa架構(gòu)的內(nèi)存管理方法以及一種基于numa架構(gòu)的內(nèi)存管理裝置,此外,本申請(qǐng)還提供了另一種電子設(shè)備;所述電子設(shè)備實(shí)施例如下:
請(qǐng)參考圖9,其示出了根據(jù)本申請(qǐng)的實(shí)施例提供的另一種電子設(shè)備的示意圖。
所述電子設(shè)備,包括:顯示器901;處理器903;存儲(chǔ)器905;
所述存儲(chǔ)器905,用于存儲(chǔ)內(nèi)存管理程序,所述程序在被所述處理器讀取執(zhí)行時(shí),執(zhí)行如下操作:在主中央處理器的本地內(nèi)存中獲取空閑節(jié)點(diǎn);在所述空閑節(jié)點(diǎn)上構(gòu)建數(shù)據(jù)結(jié)構(gòu);向從屬中央處理器發(fā)送構(gòu)建數(shù)據(jù)結(jié)構(gòu)的所述空閑節(jié)點(diǎn)的位置信息以及構(gòu)建的所述數(shù)據(jù)結(jié)構(gòu)。
在上述的實(shí)施例中,提供了一種中央處理器構(gòu)建數(shù)據(jù)結(jié)構(gòu)的方法、一種中央處理器構(gòu)建數(shù)據(jù)結(jié)構(gòu)的裝置、一種電子設(shè)備、一種基于numa架構(gòu)的內(nèi)存管理方法、一種基于numa架構(gòu)的內(nèi)存管理裝置以及另一種電子設(shè)備,此外,本申請(qǐng)還提供了一種基于numa架構(gòu)的內(nèi)存管理系統(tǒng);所述基于numa架構(gòu)的內(nèi)存管理系統(tǒng)實(shí)施例如下:
請(qǐng)參考圖10,其示出了根據(jù)本申請(qǐng)的實(shí)施例提供的基于numa架構(gòu)的內(nèi)存管理系統(tǒng)的示意圖。
所述基于numa架構(gòu)的內(nèi)存管理系統(tǒng),包括:中央處理器構(gòu)建數(shù)據(jù)結(jié)構(gòu)的裝置1001以及基于numa架構(gòu)的內(nèi)存管理裝置1003;
所述中央處理器構(gòu)建數(shù)據(jù)結(jié)構(gòu)的裝置1001,用于接收主中央處理器發(fā)送的構(gòu)建數(shù)據(jù)結(jié)構(gòu)的空閑節(jié)點(diǎn)的位置信息以及構(gòu)建的所述數(shù)據(jù)結(jié)構(gòu),并根據(jù)所述空閑節(jié)點(diǎn)的位置信息,在本地內(nèi)存中對(duì)應(yīng)所述空閑節(jié)點(diǎn)的節(jié)點(diǎn)上構(gòu)建與所述空閑節(jié)點(diǎn)上相同的數(shù)據(jù)結(jié)構(gòu);
所述基于numa架構(gòu)的內(nèi)存管理裝置1003,用于在主中央處理器的本地內(nèi)存中獲取空閑節(jié)點(diǎn),并在所述空閑節(jié)點(diǎn)上構(gòu)建數(shù)據(jù)結(jié)構(gòu),在數(shù)據(jù)結(jié)構(gòu)構(gòu)建完畢后向從屬中央處理器發(fā)送構(gòu)建數(shù)據(jù)結(jié)構(gòu)的所述空閑節(jié)點(diǎn)的位置信息以及構(gòu)建的所述數(shù)據(jù)結(jié)構(gòu)。
所述中央處理器構(gòu)建數(shù)據(jù)結(jié)構(gòu)的裝置1001和所述基于numa架構(gòu)的內(nèi)存管理裝置703,可以布置于計(jì)算機(jī)上,但并不局限于這種設(shè)備,可以是能夠?qū)崿F(xiàn)上述中央處理器構(gòu)建數(shù)據(jù)結(jié)構(gòu)的方法和基于numa架構(gòu)的內(nèi)存管理方法的任何設(shè)備。
在一個(gè)典型的配置中,計(jì)算設(shè)備包括一個(gè)或多個(gè)處理器(中央處理器)、輸入/輸出接口、網(wǎng)絡(luò)接口和內(nèi)存。
內(nèi)存可能包括計(jì)算機(jī)可讀介質(zhì)中的非永久性存儲(chǔ)器,隨機(jī)存取存儲(chǔ)器(ram)和/或非易失性內(nèi)存等形式,如只讀存儲(chǔ)器(rom)或閃存(flashram)。內(nèi)存是計(jì)算機(jī)可讀介質(zhì)的示例。
1、計(jì)算機(jī)可讀介質(zhì)包括永久性和非永久性、可移動(dòng)和非可移動(dòng)媒體可以由任何方法或技術(shù)來實(shí)現(xiàn)信息存儲(chǔ)。信息可以是計(jì)算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序的模塊或其他數(shù)據(jù)。計(jì)算機(jī)的存儲(chǔ)介質(zhì)的例子包括,但不限于相變內(nèi)存(pram)、靜態(tài)隨機(jī)存取存儲(chǔ)器(sram)、動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(dram)、其他類型的隨機(jī)存取存儲(chǔ)器(ram)、只讀存儲(chǔ)器(rom)、電可擦除可編程只讀存儲(chǔ)器 (eeprom)、快閃記憶體或其他內(nèi)存技術(shù)、只讀光盤只讀存儲(chǔ)器(cd-rom)、數(shù)字多功能光盤(dvd)或其他光學(xué)存儲(chǔ)、磁盒式磁帶,磁帶磁磁盤存儲(chǔ)或其他磁性存儲(chǔ)設(shè)備或任何其他非傳輸介質(zhì),可用于存儲(chǔ)可以被計(jì)算設(shè)備訪問的信息。按照本文中的界定,計(jì)算機(jī)可讀介質(zhì)不包括非暫存電腦可讀媒體(transitorymedia),如調(diào)制的數(shù)據(jù)信號(hào)和載波。
2、本領(lǐng)域技術(shù)人員應(yīng)明白,本申請(qǐng)的實(shí)施例可提供為方法、系統(tǒng)或計(jì)算機(jī)程序產(chǎn)品。因此,本申請(qǐng)可采用完全硬件實(shí)施例、完全軟件實(shí)施例或結(jié)合軟件和硬件方面的實(shí)施例的形式。而且,本申請(qǐng)可采用在一個(gè)或多個(gè)其中包含有計(jì)算機(jī)可用程序代碼的計(jì)算機(jī)可用存儲(chǔ)介質(zhì)(包括但不限于磁盤存儲(chǔ)器、cd-rom、光學(xué)存儲(chǔ)器等)上實(shí)施的計(jì)算機(jī)程序產(chǎn)品的形式。
本申請(qǐng)雖然以較佳實(shí)施例公開如上,但其并不是用來限定本申請(qǐng),任何本領(lǐng)域技術(shù)人員在不脫離本申請(qǐng)的精神和范圍內(nèi),都可以做出可能的變動(dòng)和修改,因此本申請(qǐng)的保護(hù)范圍應(yīng)當(dāng)以本申請(qǐng)權(quán)利要求所界定的范圍為準(zhǔn)。