本發(fā)明涉及數(shù)據(jù)處理領(lǐng)域,尤其涉及一種基于Spark語(yǔ)義的數(shù)據(jù)重用方法及其系統(tǒng)。
背景技術(shù):
Spark是目前高效且在產(chǎn)業(yè)界被廣泛使用的大數(shù)據(jù)計(jì)算框架,尤其適用于多次迭代計(jì)算的應(yīng)用領(lǐng)域,如機(jī)器學(xué)習(xí)、圖處理、數(shù)據(jù)挖掘、交互式查詢(xún)等,其原因在于spark可以將中間數(shù)據(jù)緩存在內(nèi)存中。Spark比Hadoop更加通用、靈活,為用戶提供了多種算子,并且用戶可以命名、物化和控制中間結(jié)果的存儲(chǔ)、分區(qū)等,這給開(kāi)發(fā)上層應(yīng)用的用戶提供了方便。
此外,目前Spark的性能瓶頸已經(jīng)轉(zhuǎn)向CPU與內(nèi)存,大容量的內(nèi)存將有效地提升Spark的內(nèi)存計(jì)算效率。非易失內(nèi)存具有容量大、讀速率快、功耗低的特點(diǎn)可以有效解決Spark內(nèi)存計(jì)算對(duì)內(nèi)存容量的需求。
目前,對(duì)Spark的數(shù)據(jù)重用技術(shù)僅局限于其本身提供的緩存算子cache等,而且這需要程序開(kāi)發(fā)人員對(duì)應(yīng)用程序熟悉,在程序中必須人為指導(dǎo)地顯式調(diào)用緩存操作,不能進(jìn)行啟發(fā)式的自動(dòng)緩存操作,并且也不具備重用緩存數(shù)據(jù)的遷移功能。
技術(shù)實(shí)現(xiàn)要素:
有鑒于此,本發(fā)明的目的在于提供一種基于Spark語(yǔ)義的數(shù)據(jù)重用方法及其系統(tǒng),旨在解決現(xiàn)有技術(shù)中由于過(guò)度依賴(lài)人為指導(dǎo)地顯式調(diào)用緩存操作,不能進(jìn)行啟發(fā)式的自動(dòng)緩存操作,并且也不具備重用緩存數(shù)據(jù)的遷移功能而導(dǎo)致數(shù)據(jù)重用率較低且計(jì)算時(shí)間較長(zhǎng)的問(wèn)題。
本發(fā)明提出一種基于Spark語(yǔ)義的數(shù)據(jù)重用方法,主要包括:
語(yǔ)義信息收集步驟、收集Spark應(yīng)用運(yùn)行時(shí)的語(yǔ)義信息;
語(yǔ)義維護(hù)步驟、維護(hù)來(lái)自所述語(yǔ)義信息收集步驟所收集到的語(yǔ)義信息;
數(shù)據(jù)主動(dòng)緩存步驟、根據(jù)所述語(yǔ)義信息和預(yù)設(shè)的閾值模型緩存未被用戶程序顯式緩存的數(shù)據(jù);
緩存數(shù)據(jù)遷移步驟、根據(jù)所述語(yǔ)義信息和預(yù)設(shè)的閾值模型將緩存數(shù)據(jù)在動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器與固定存儲(chǔ)器之間遷移。
另一方面,本發(fā)明還提供一種基于Spark語(yǔ)義的數(shù)據(jù)重用系統(tǒng),所述系統(tǒng)包括:
語(yǔ)義信息收集模塊,用于收集Spark應(yīng)用運(yùn)行時(shí)的語(yǔ)義信息;
語(yǔ)義維護(hù)模塊,用于維護(hù)來(lái)自所述語(yǔ)義信息收集步驟所收集到的語(yǔ)義信息;
數(shù)據(jù)主動(dòng)緩存模塊,用于根據(jù)所述語(yǔ)義信息和預(yù)設(shè)的閾值模型緩存未被用戶程序顯式緩存的數(shù)據(jù);
緩存數(shù)據(jù)遷移模塊,用于根據(jù)所述語(yǔ)義信息和預(yù)設(shè)的閾值模型將緩存數(shù)據(jù)在動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器與固定存儲(chǔ)器之間遷移。
本發(fā)明提供的技術(shù)方案,通過(guò)引入混合內(nèi)存介質(zhì),在不增加集群規(guī)模的前提下增大了集群內(nèi)存容量;通過(guò)語(yǔ)義信息的探索和啟發(fā)式數(shù)據(jù)緩存,可以主動(dòng)將被應(yīng)用程序多次使用而又未被用戶程序顯式緩存的數(shù)據(jù)緩存起來(lái),減少重復(fù)數(shù)據(jù)計(jì)算,提升計(jì)算效率,加速計(jì)算,有效避免了對(duì)開(kāi)發(fā)人員經(jīng)驗(yàn)的依賴(lài);在數(shù)據(jù)緩存較多時(shí),通過(guò)將緩存數(shù)據(jù)從動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(DRAM)遷移到固定存儲(chǔ)器(NVM),可以避免DRAM容量緊張;在DRAM內(nèi)存充足時(shí),通過(guò)將緩存數(shù)據(jù)從NVM遷移到DRAM,可以提升計(jì)算速率。
附圖說(shuō)明
圖1為本發(fā)明一實(shí)施方式中基于Spark語(yǔ)義的數(shù)據(jù)重用方法流程圖;
圖2為本發(fā)明一實(shí)施方式中的軟件系統(tǒng)架構(gòu)圖;
圖3為本發(fā)明一實(shí)施方式中基于Spark語(yǔ)義的數(shù)據(jù)重用系統(tǒng)10的內(nèi)部結(jié)構(gòu)示意圖。
具體實(shí)施方式
為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點(diǎn)更加清楚明白,以下結(jié)合附圖及實(shí)施例,對(duì)本發(fā)明進(jìn)行進(jìn)一步詳細(xì)說(shuō)明。應(yīng)當(dāng)理解,此處所描述的具體實(shí)施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。
本發(fā)明提供的技術(shù)方案,為了提升Spark中的數(shù)據(jù)重用效率,加速計(jì)算,需要在Spark中設(shè)計(jì)能適應(yīng)混合內(nèi)存介質(zhì)的啟發(fā)式數(shù)據(jù)緩存與遷移機(jī)制。其原因在于在這種迭代計(jì)算框架的應(yīng)用中,需要反復(fù)操作的次數(shù)越多、所需讀取的數(shù)據(jù)量越大,計(jì)算受益越大,機(jī)器學(xué)習(xí)算法、交互式查詢(xún)都是典型的應(yīng)用,需要對(duì)重用數(shù)據(jù)進(jìn)行緩存操作;非易失內(nèi)存為需要緩存的數(shù)據(jù)提供了大的內(nèi)存容量,在動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(DRAM)內(nèi)存緊張時(shí),可以將緩存在DRAM的數(shù)據(jù)遷移到非易失內(nèi)存。
以下將對(duì)本發(fā)明所提供的一種基于Spark語(yǔ)義的數(shù)據(jù)重用方法進(jìn)行詳細(xì)說(shuō)明。
請(qǐng)參閱圖1,為本發(fā)明一實(shí)施方式中基于Spark語(yǔ)義的數(shù)據(jù)重用方法流程圖。
在步驟S1中,語(yǔ)義信息收集步驟、收集Spark應(yīng)用運(yùn)行時(shí)的語(yǔ)義信息。
在本實(shí)施方式中,所述語(yǔ)義信息收集步驟主要包括:
根據(jù)Spark任務(wù)在被執(zhí)行時(shí),利用調(diào)度器(DAG scheduler)將Spark任務(wù)拆分成多個(gè)有依賴(lài)關(guān)系的執(zhí)行階段(Stage),然后通過(guò)語(yǔ)義收集器在Spark任務(wù)被執(zhí)行過(guò)程中收集語(yǔ)義信息。
在本實(shí)施方式中,為了克服現(xiàn)有技術(shù)的缺陷,提供一種基于Spark語(yǔ)義的數(shù)據(jù)重用方法,該方法引入了非易失內(nèi)存,在Spark中設(shè)計(jì)能適應(yīng)混合內(nèi)存介質(zhì)的啟發(fā)式數(shù)據(jù)緩存與遷移機(jī)制,在保證數(shù)據(jù)內(nèi)存充足的前提下,提高數(shù)據(jù)重用率,減少計(jì)算時(shí)間。
具體的,將混合內(nèi)存應(yīng)用在spark上,并設(shè)計(jì)啟發(fā)式數(shù)據(jù)重用方法。所述混合內(nèi)存指的是DRAM和固定存儲(chǔ)器(non-volatile memory,NVM,也稱(chēng)之為非易失性存儲(chǔ)器或者非易失內(nèi)存)混合介質(zhì);所述的啟發(fā)式數(shù)據(jù)重用方法包括主動(dòng)緩存機(jī)制和緩存數(shù)據(jù)遷移機(jī)制,體現(xiàn)在spark語(yǔ)義收集、語(yǔ)義維護(hù)、主動(dòng)緩存和緩存數(shù)據(jù)遷移四個(gè)方面。其中,混合內(nèi)存材質(zhì)可以是Flash,結(jié)構(gòu)可以是外部式結(jié)構(gòu)。
在本實(shí)施方式中,所述語(yǔ)義信息可以保存以下信息:Stageid、RDDid、RDDid_size、RDDid_readtimes、RDDid_cacheflag、Cache_type。其中,Stageid表示Stage的標(biāo)號(hào),RDDid表示Stage中某一RDD的標(biāo)號(hào),RDDid_size表示這個(gè)RDD的大小,RDDid_readtimes表示該RDD被讀(或者被使用)的次數(shù),RDDid_cacheflag表示布爾值,表明一個(gè)RDD是否被用戶程序顯式緩存,Cache_type表示數(shù)據(jù)緩存的位置。其中,Stage表示執(zhí)行階段,RDD(Resilient Distributed Datasets)表示彈性分布式數(shù)據(jù)集,是分布式內(nèi)存的一個(gè)抽象概念,是spark中最重要的概念,可以簡(jiǎn)單的把RDD理解成一個(gè)提供了許多操作接口的數(shù)據(jù)集合,和一般數(shù)據(jù)集不同的是,其實(shí)際數(shù)據(jù)分布存儲(chǔ)于一批機(jī)器中(內(nèi)存或磁盤(pán)中),當(dāng)然,RDD肯定不會(huì)這么簡(jiǎn)單,它的功能還包括容錯(cuò)、集合內(nèi)的數(shù)據(jù)可以并行處理等。與許多專(zhuān)有的大數(shù)據(jù)處理平臺(tái)不同,Spark建立在統(tǒng)一抽象的RDD之上,使得它可以以基本一致的方式應(yīng)對(duì)不同的大數(shù)據(jù)處理場(chǎng)景。
在步驟S2中,語(yǔ)義維護(hù)步驟、維護(hù)來(lái)自所述語(yǔ)義信息收集步驟所收集到的語(yǔ)義信息。
在本實(shí)施方式中,所述語(yǔ)義維護(hù)步驟主要包括:
利用語(yǔ)義信息維護(hù)組件保存并維護(hù)來(lái)自所述語(yǔ)義信息收集步驟所收集到的語(yǔ)義信息,并在維護(hù)過(guò)程中利用所述語(yǔ)義信息維護(hù)組件根據(jù)用戶預(yù)定義的閾值觸發(fā)緩存操作,其中,維護(hù)操作包括增加語(yǔ)義信息操作、修改語(yǔ)義信息操作以及刪除語(yǔ)義信息操作。
在本實(shí)施方式中,本發(fā)明提供的語(yǔ)義收集主要通過(guò)在spark中設(shè)計(jì)語(yǔ)義信息收集器,用于在程序運(yùn)行時(shí),收集語(yǔ)義信息,并傳遞給予語(yǔ)義維護(hù)步驟,本發(fā)明提供的語(yǔ)義維護(hù)主要通過(guò)在spark中設(shè)計(jì)語(yǔ)義信息維護(hù)組件,用于維護(hù)語(yǔ)義信息,并運(yùn)行閾值模型,觸發(fā)執(zhí)行引擎中的數(shù)據(jù)緩存或遷移。主要分兩方面:
(a)、跟蹤并計(jì)算語(yǔ)義中未顯式緩存的RDD的大小以及讀次數(shù),然后判別是否到達(dá)閾值模型中的閾值,觸發(fā)緩存操作,并修改維護(hù)的語(yǔ)義;
(b)、跟蹤并計(jì)算語(yǔ)義中已經(jīng)被緩存(包含用戶顯式緩存與啟發(fā)式緩存)的RDD的大小以及讀次數(shù),調(diào)用閾值模型,然后在DRAM內(nèi)存緊張時(shí),觸發(fā)緩存數(shù)據(jù)從DRAM遷移到NVM,并修改維護(hù)的語(yǔ)義。
在步驟S3中,數(shù)據(jù)主動(dòng)緩存步驟、根據(jù)所述語(yǔ)義信息和預(yù)設(shè)的閾值模型緩存未被用戶程序顯式緩存的數(shù)據(jù)。
在本實(shí)施方式中,所述數(shù)據(jù)主動(dòng)緩存步驟主要包括:
跟蹤并計(jì)算語(yǔ)義中未被用戶程序顯式緩存的彈性分布數(shù)據(jù)集的大小以及讀次數(shù),如果大小和讀次數(shù)都到達(dá)閾值模型中對(duì)應(yīng)的閾值時(shí),則觸發(fā)緩存操作將沒(méi)有主動(dòng)緩存的數(shù)據(jù)緩存到所述固定存儲(chǔ)器中,如果大小沒(méi)有到達(dá)閾值但是讀次數(shù)達(dá)到了閾值時(shí),則觸發(fā)緩存操作將沒(méi)有主動(dòng)緩存的數(shù)據(jù)緩存到所述動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器中。
在本實(shí)施方式中,提供的啟發(fā)式數(shù)據(jù)主動(dòng)緩存,在執(zhí)行引擎中實(shí)現(xiàn),設(shè)計(jì)新的storagelevel,調(diào)用緩存算子來(lái)實(shí)現(xiàn),詳細(xì)包括以下幾個(gè)子步驟:
(1)Spark在執(zhí)行任務(wù)時(shí),其調(diào)度器(DAG scheduler)把任務(wù)拆分成多個(gè)有依賴(lài)關(guān)系的執(zhí)行階段(stage),這些階段和關(guān)系一起構(gòu)成一個(gè)有向無(wú)環(huán)圖(DAG);
(2)語(yǔ)義收集器(主要是調(diào)用REST API)在spark任務(wù)執(zhí)行過(guò)程中收集其語(yǔ)義信息,例如任務(wù)執(zhí)行過(guò)程中的stage編號(hào)、RDD編號(hào)等;
(3)語(yǔ)義信息維護(hù)組件保存并維護(hù)上一步收集來(lái)的語(yǔ)義信息,具體維護(hù)操作有增加、修改、刪除語(yǔ)義信息等,在維護(hù)過(guò)程中,語(yǔ)義維護(hù)組件根據(jù)用戶預(yù)定義的“閾值”觸發(fā)緩存操作,例如語(yǔ)義信息中的RDDID_READtimes大于用戶預(yù)定義值時(shí),對(duì)“對(duì)應(yīng)的RDD”進(jìn)行緩存操作;
(4)對(duì)于經(jīng)常被讀(用戶可以自定義被讀次數(shù)大于一預(yù)設(shè)值時(shí)稱(chēng)之為經(jīng)常被讀)、大小較大(具體大小的判別由用戶自定義)且用戶沒(méi)有主動(dòng)緩存的RDD,將觸發(fā)數(shù)據(jù)主動(dòng)緩存,數(shù)據(jù)將緩存到非易失內(nèi)存;對(duì)于經(jīng)常被讀、大小不大且用戶沒(méi)有主動(dòng)緩存的RDD,將被主動(dòng)緩存到DRAM中;對(duì)于其他情況不進(jìn)行任何操作;
(5)更新當(dāng)前語(yǔ)義信息后回到子步驟(2),繼續(xù)收集語(yǔ)義信息執(zhí)行后繼操作。
在步驟S4中,緩存數(shù)據(jù)遷移步驟、根據(jù)所述語(yǔ)義信息和預(yù)設(shè)的閾值模型將緩存數(shù)據(jù)在動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器與固定存儲(chǔ)器之間遷移。
在本實(shí)施方式中,所述緩存數(shù)據(jù)遷移步驟主要包括:
對(duì)于已經(jīng)被緩存的數(shù)據(jù),如果彈性分布數(shù)據(jù)集的大小達(dá)到閾值但讀次數(shù)沒(méi)有達(dá)到閾值,且此時(shí)所述動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器的存儲(chǔ)空間不足時(shí),則將已經(jīng)緩存到所述動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器中的數(shù)據(jù)遷移至所述固定存儲(chǔ)器中進(jìn)行存儲(chǔ),反之則遷移到所述動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器進(jìn)行存儲(chǔ)。
在本實(shí)施方式中,提供的啟發(fā)式緩存數(shù)據(jù)遷移,在執(zhí)行引擎中實(shí)現(xiàn),在內(nèi)存管理中增加對(duì)非易失內(nèi)存申請(qǐng)分配的支持來(lái)實(shí)現(xiàn),詳細(xì)包括以下幾個(gè)子步驟:
(6)Spark任務(wù)在執(zhí)行時(shí),通過(guò)DAG sheduler將DAG圖分解成多個(gè)stage;
(7)語(yǔ)義收集器(主要是調(diào)用REST API)在程序運(yùn)行時(shí)收集語(yǔ)義信息;
(8)語(yǔ)義信息維護(hù)組件對(duì)信息進(jìn)行維護(hù),并運(yùn)行閾值模型,觸發(fā)相應(yīng)操作;
(9)對(duì)于已經(jīng)被緩存的數(shù)據(jù),若在DRAM中且大小較大被讀的次數(shù)又不多(具體大小/多少的判斷值由用戶自定義),DRAM內(nèi)存又緊張時(shí),則遷移到非易失內(nèi)存;反之,遷移到DRAM;
(10)更新當(dāng)前語(yǔ)義信息后回到步驟(7),繼續(xù)收集語(yǔ)義信息執(zhí)行后繼操作。
本發(fā)明提供的一種基于Spark語(yǔ)義的數(shù)據(jù)重用方法,通過(guò)引入混合內(nèi)存介質(zhì),在不增加集群規(guī)模的前提下增大了集群內(nèi)存容量;通過(guò)語(yǔ)義信息的探索和啟發(fā)式數(shù)據(jù)緩存,可以主動(dòng)將被應(yīng)用程序多次使用而又未被用戶程序顯式緩存的數(shù)據(jù)緩存起來(lái),減少重復(fù)數(shù)據(jù)計(jì)算,提升計(jì)算效率,加速計(jì)算,有效避免了對(duì)開(kāi)發(fā)人員經(jīng)驗(yàn)的依賴(lài);在數(shù)據(jù)緩存較多時(shí),通過(guò)將緩存數(shù)據(jù)從DRAM遷移到NVM,可以避免DRAM容量緊張;在DRAM內(nèi)存充足時(shí),通過(guò)將緩存數(shù)據(jù)從NVM遷移到DRAM,可以提升計(jì)算速率。
請(qǐng)參閱圖2,為本發(fā)明一實(shí)施方式中的軟件系統(tǒng)架構(gòu)圖。
以下將對(duì)本發(fā)明所提供的一種基于Spark語(yǔ)義的數(shù)據(jù)重用系統(tǒng)進(jìn)行詳細(xì)說(shuō)明。
請(qǐng)參閱圖3,所示為本發(fā)明一實(shí)施方式中基于Spark語(yǔ)義的數(shù)據(jù)重用系統(tǒng)10的結(jié)構(gòu)示意圖。
在本實(shí)施方式中,基于Spark語(yǔ)義的數(shù)據(jù)重用系統(tǒng)10,主要包括語(yǔ)義信息收集模塊11、語(yǔ)義維護(hù)模塊12、數(shù)據(jù)主動(dòng)緩存模塊13以及緩存數(shù)據(jù)遷移模塊14。
語(yǔ)義信息收集模塊11,用于收集Spark應(yīng)用運(yùn)行時(shí)的語(yǔ)義信息。
在本實(shí)施方式中,所述語(yǔ)義信息收集模塊11具體用于:
根據(jù)Spark任務(wù)在被執(zhí)行時(shí),利用調(diào)度器將Spark任務(wù)拆分成多個(gè)有依賴(lài)關(guān)系的執(zhí)行階段,然后通過(guò)語(yǔ)義收集器在Spark任務(wù)被執(zhí)行過(guò)程中收集語(yǔ)義信息。
語(yǔ)義維護(hù)模塊12,用于維護(hù)來(lái)自所述語(yǔ)義信息收集步驟所收集到的語(yǔ)義信息。
在本實(shí)施方式中,所述語(yǔ)義維護(hù)模塊12具體用于:
利用語(yǔ)義信息維護(hù)組件保存并維護(hù)來(lái)自所述語(yǔ)義信息收集步驟所收集到的語(yǔ)義信息,并在維護(hù)過(guò)程中利用所述語(yǔ)義信息維護(hù)組件根據(jù)用戶預(yù)定義的閾值觸發(fā)緩存操作,其中,維護(hù)操作包括增加語(yǔ)義信息操作、修改語(yǔ)義信息操作以及刪除語(yǔ)義信息操作。
數(shù)據(jù)主動(dòng)緩存模塊13,用于根據(jù)所述語(yǔ)義信息和預(yù)設(shè)的閾值模型緩存未被用戶程序顯式緩存的數(shù)據(jù)。
在本實(shí)施方式中,所述數(shù)據(jù)主動(dòng)緩存模塊13具體用于:
跟蹤并計(jì)算語(yǔ)義中未被用戶程序顯式緩存的彈性分布數(shù)據(jù)集的大小以及讀次數(shù),如果大小和讀次數(shù)都到達(dá)閾值模型中對(duì)應(yīng)的閾值時(shí),則觸發(fā)緩存操作將沒(méi)有主動(dòng)緩存的數(shù)據(jù)緩存到所述固定存儲(chǔ)器中,如果大小沒(méi)有到達(dá)閾值但是讀次數(shù)達(dá)到了閾值時(shí),則觸發(fā)緩存操作將沒(méi)有主動(dòng)緩存的數(shù)據(jù)緩存到所述動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器中。
緩存數(shù)據(jù)遷移模塊14,用于根據(jù)所述語(yǔ)義信息和預(yù)設(shè)的閾值模型將緩存數(shù)據(jù)在動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器與固定存儲(chǔ)器之間遷移。
在本實(shí)施方式中,所述緩存數(shù)據(jù)遷移模塊14具體用于:
對(duì)于已經(jīng)被緩存的數(shù)據(jù),如果彈性分布數(shù)據(jù)集的大小達(dá)到閾值但讀次數(shù)沒(méi)有達(dá)到閾值,且此時(shí)所述動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器的存儲(chǔ)空間不足時(shí),則將已經(jīng)緩存到所述動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器中的數(shù)據(jù)遷移至所述固定存儲(chǔ)器中進(jìn)行存儲(chǔ),反之則遷移到所述動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器進(jìn)行存儲(chǔ)。
本發(fā)明提供的一種基于Spark語(yǔ)義的數(shù)據(jù)重用系統(tǒng)10,通過(guò)引入混合內(nèi)存介質(zhì),在不增加集群規(guī)模的前提下增大了集群內(nèi)存容量;通過(guò)語(yǔ)義信息的探索和啟發(fā)式數(shù)據(jù)緩存,可以主動(dòng)將被應(yīng)用程序多次使用而又未被用戶程序顯式緩存的數(shù)據(jù)緩存起來(lái),減少重復(fù)數(shù)據(jù)計(jì)算,提升計(jì)算效率,加速計(jì)算,有效避免了對(duì)開(kāi)發(fā)人員經(jīng)驗(yàn)的依賴(lài);在數(shù)據(jù)緩存較多時(shí),通過(guò)將緩存數(shù)據(jù)從DRAM遷移到NVM,可以避免DRAM容量緊張;在DRAM內(nèi)存充足時(shí),通過(guò)將緩存數(shù)據(jù)從NVM遷移到DRAM,可以提升計(jì)算速率。
值得注意的是,上述實(shí)施例中,所包括的各個(gè)單元只是按照功能邏輯進(jìn)行劃分的,但并不局限于上述的劃分,只要能夠?qū)崿F(xiàn)相應(yīng)的功能即可;另外,各功能單元的具體名稱(chēng)也只是為了便于相互區(qū)分,并不用于限制本發(fā)明的保護(hù)范圍。
另外,本領(lǐng)域普通技術(shù)人員可以理解實(shí)現(xiàn)上述各實(shí)施例方法中的全部或部分步驟是可以通過(guò)程序來(lái)指令相關(guān)的硬件來(lái)完成,相應(yīng)的程序可以存儲(chǔ)于一計(jì)算機(jī)可讀取存儲(chǔ)介質(zhì)中,所述的存儲(chǔ)介質(zhì),如ROM/RAM、磁盤(pán)或光盤(pán)等。
以上所述僅為本發(fā)明的較佳實(shí)施例而已,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi)所作的任何修改、等同替換和改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。