本發(fā)明涉及計算機(jī)系統(tǒng)結(jié)構(gòu)技術(shù)領(lǐng)域,尤其涉及一種延遲PCM內(nèi)存使用壽命的cache替換方法及裝置。
背景技術(shù):
隨著多核系統(tǒng)的推廣和數(shù)據(jù)密集型應(yīng)用的發(fā)展,計算機(jī)存儲系統(tǒng)需要更大的存儲容量來滿足實際需求,其中關(guān)鍵一點是增大內(nèi)存容量。
目前的計算機(jī)存儲系統(tǒng)大多采用DRAM內(nèi)存。DRAM內(nèi)存可以通過縮小單個存儲單元來提高集成度,從而獲得更大的存儲容量,但隨著DRAM存儲單元縮小到一定程度,要進(jìn)一步增大DRAM內(nèi)存面臨的困難很大。
使用新型存儲材料代替DRAM作為內(nèi)存成為了當(dāng)前的一個研究熱點。在這些新型存儲材料中,相變存儲(PCM)因其具有存儲密度高、功耗低和非易失等優(yōu)點從而受到廣泛關(guān)注,但PCM的可擦寫次數(shù)有限,如果直接用作內(nèi)存會有使用壽命過短的問題。有很多研究工作從不同角度來延長PCM內(nèi)存使用壽命,其中優(yōu)化cache替換策略是一種有效方法,它通過為cache中的臟塊提供額外保護(hù)來減少被替出的臟塊數(shù)量,從而減少對PCM內(nèi)存的寫回量。
Cache對數(shù)據(jù)塊的處理可分為新塊插入、訪問命中、降級(降低無用塊的保護(hù)優(yōu)先級)和選擇替出塊四個過程。已有的針對PCM內(nèi)存的cache替換策略對臟塊的保護(hù)都沒有涵蓋所有的cache處理過程,它們保護(hù)臟塊的方法主要是在新塊插入和訪問命中時,相比干凈塊給臟塊設(shè)置更高的保護(hù)優(yōu)先級,在降級處理上不再區(qū)分臟塊和干凈塊,這會導(dǎo)致cache可能在有大量干凈塊時仍選擇替出臟塊。
技術(shù)實現(xiàn)要素:
本發(fā)明提供一種延遲PCM內(nèi)存使用壽命的cache替換方法及裝置,用于解決現(xiàn)有技術(shù)中PCM內(nèi)存使用壽命過短的問題。
第一方面,本發(fā)明提供一種延遲PCM內(nèi)存使用壽命的cache替換方法,包括:
設(shè)置多個高速緩沖存儲塊,并將各存儲塊分為低訪問頻率干凈塊集合、低訪問頻率臟塊集合、高訪問頻率干凈塊集合和高訪問頻率臟塊集合;
在每類存儲塊中,根據(jù)存儲塊最后一次被訪問的時間進(jìn)行排序,獲得每個存儲塊集合所對應(yīng)的LRU鏈,其中,在LRU鏈中最后一次訪問時間距離當(dāng)前時間最近的存儲塊為MRU塊,最后一次訪問時間距離當(dāng)前時間最遠(yuǎn)的存儲塊為LRU塊;
當(dāng)檢測到有新存儲塊插入時,若判斷確定新存儲塊采用讀缺失引入方式進(jìn)行插入,則將新存儲塊設(shè)置在低訪問頻率干凈塊集合LRU鏈的MRU位置上,并重新生成對應(yīng)的LRU鏈;若判斷確定新存儲塊采用寫缺失引入方式進(jìn)行插入,則將新存儲塊設(shè)置在低訪問頻率臟塊集合LRU鏈的MRU位置上,并重新生成對應(yīng)的LRU鏈;
當(dāng)檢測到已存存儲塊被訪問命中時,若判斷確定所述已存存儲塊采用讀命中方式被命中,且所述已存存儲塊所屬低訪問頻率干凈塊集合或高訪問頻率干凈塊集合,則將已存存儲塊移動到高訪問頻率干凈塊LRU鏈的MRU位置上,并重新生成對應(yīng)的LRU鏈;若是其他情況,則將已存存儲塊移動到高訪問頻率臟塊LRU鏈的MRU位置上,并重新生成對應(yīng)的LRU鏈;
當(dāng)檢測到需替出一已存存儲塊時,依次對低訪問頻率干凈塊集合、低訪問頻率臟塊集合、高訪問頻率干凈塊集合和高訪問頻率臟塊集合的LRU鏈進(jìn)行檢測,若檢測到第一個非空LRU鏈時,將所述LRU鏈中的LRU位置上的存儲塊替出,并對所述LRU鏈對應(yīng)的存儲塊集合重新生成對應(yīng)的LRU鏈。
優(yōu)選地,當(dāng)檢測到第一個非空LRU鏈時,將所述LRU鏈中的LRU位置上的存儲塊替出,并對所述LRU鏈對應(yīng)的存儲塊集合重新生成對應(yīng)的LRU鏈之后,還包括:
若判斷確定替出的存儲塊所屬低訪問頻率臟塊,則將高訪問頻率干凈塊集合LRU鏈中LRU位置上的存儲塊移動到低訪問頻率干凈塊集合LRU鏈中的MRU位置上,同時將高訪問頻率臟塊集合LRU鏈中LRU位置上的存儲塊移動到低訪問頻率臟塊集合LRU鏈中的MRU位置上,并重新生成對應(yīng)的LRU鏈。
優(yōu)選地,當(dāng)檢測到第一個非空LRU鏈時,將所述LRU鏈中的LRU位置上的存儲塊替出,并對所述LRU鏈對應(yīng)的存儲塊集合重新生成對應(yīng)的LRU鏈之后,還包括:
若判斷確定替出的存儲塊所屬高訪問頻率干凈塊,則將高訪問頻率臟塊集合LRU鏈中LRU位置上的存儲塊移動到低訪問頻率臟塊集合LRU鏈中的MRU位置上,并重新生成對應(yīng)的LRU鏈。
第二方面,本發(fā)明提供一種延遲PCM內(nèi)存使用壽命的cache替換裝置,包括:
配置模塊,用于設(shè)置多個高速緩沖存儲塊,并將各存儲塊分為低訪問頻率干凈塊集合、低訪問頻率臟塊集合、高訪問頻率干凈塊集合和高訪問頻率臟塊集合;
排序模塊,用于在每類存儲塊中,根據(jù)存儲塊最后一次被訪問的時間進(jìn)行排序,獲得每個存儲塊集合所對應(yīng)的LRU鏈,其中,在LRU鏈中最后一次訪問時間距離當(dāng)前時間最近的存儲塊為MRU塊,最后一次訪問時間距離當(dāng)前時間最遠(yuǎn)的存儲塊為LRU塊;
插入模塊,用于在檢測到有新存儲塊插入時,若判斷確定新存儲塊采用讀缺失引入方式進(jìn)行插入,則將新存儲塊設(shè)置在低訪問頻率干凈塊集合LRU鏈的MRU位置上,并重新生成對應(yīng)的LRU鏈;若判斷確定新存儲塊采用寫缺失引入方式進(jìn)行插入,則將新存儲塊設(shè)置在低訪問頻率臟塊集合LRU鏈的MRU位置上,并重新生成對應(yīng)的LRU鏈;
訪問模塊,用于在檢測到已存存儲塊被訪問命中時,若判斷確定所述已存存儲塊采用讀命中方式被命中,且所述已存存儲塊所屬低訪問頻率干凈塊集合或高訪問頻率干凈塊集合,則將已存存儲塊移動到高訪問頻率干凈塊LRU鏈的MRU位置上,并重新生成對應(yīng)的LRU鏈;若是其他情況,則將已存存儲塊移動到高訪問頻率臟塊LRU鏈的MRU位置上,并重新生成對應(yīng)的LRU鏈;
替出模塊,用于在檢測到需替出一已存存儲塊時,依次對低訪問頻率干凈塊集合、低訪問頻率臟塊集合、高訪問頻率干凈塊集合和高訪問頻率臟塊集合的LRU鏈進(jìn)行檢測,若檢測到第一個非空LRU鏈時,將所述LRU鏈中的LRU位置上的存儲塊替出,并對所述LRU鏈對應(yīng)的存儲塊集合重新生成對應(yīng)的LRU鏈。
優(yōu)選地,所述替出模塊還用于:若判斷確定替出的存儲塊所屬低訪問頻率臟塊,則將高訪問頻率干凈塊集合LRU鏈中LRU位置上的存儲塊移動到低訪問頻率干凈塊集合LRU鏈中的MRU位置上,同時將高訪問頻率臟塊集合LRU鏈中LRU位置上的存儲塊移動到低訪問頻率臟塊集合LRU鏈中的MRU位置上,并重新生成對應(yīng)的LRU鏈。
優(yōu)選地,所述替出模塊還用于:若判斷確定替出的存儲塊所屬高訪問頻率干凈塊,則將高訪問頻率臟塊集合LRU鏈中LRU位置上的存儲塊移動到低訪問頻率臟塊集合LRU鏈中的MRU位置上,并重新生成對應(yīng)的LRU鏈。
由上述技術(shù)方案可知,本發(fā)明提供的一種延遲PCM內(nèi)存使用壽命的cache替換方法及裝置,通過在cache塊的所有處理過程中均對臟塊和干凈塊進(jìn)行區(qū)分,為臟塊和干凈塊均提供了更全面的保護(hù),實現(xiàn)了在不影響整體性能的前提下,有效減少對PCM內(nèi)存的寫回量,延長了使用壽命。
附圖說明
圖1為本發(fā)明一實施例提供的延遲PCM內(nèi)存使用壽命的cache替換方法的流程示意圖;
圖2為本發(fā)明一實施例提供的延遲PCM內(nèi)存使用壽命的cache替換裝置的結(jié)構(gòu)示意圖。
具體實施方式
下面結(jié)合附圖和實施例,對本發(fā)明的具體實施方式作進(jìn)一步詳細(xì)描述。以下實施例用于說明本發(fā)明,但不用來限制本發(fā)明的范圍。
圖1示出了本發(fā)明一實施例提供的一種延遲PCM內(nèi)存使用壽命的cache替換方法,包括:
S11、設(shè)置多個高速緩沖存儲塊,并將各存儲塊分為低訪問頻率干凈塊集合、低訪問頻率臟塊集合、高訪問頻率干凈塊集合和高訪問頻率臟塊集合。
在本步驟中,需要說明的是,在系統(tǒng)存儲過程中會存在多個高速緩沖存儲塊(cache塊),根據(jù)各個存儲塊的訪問度的熱度,以及存儲塊內(nèi)數(shù)據(jù)是否修改,將各個存儲塊分為低訪問頻率干凈塊集合、低訪問頻率臟塊集合、高訪問頻率干凈塊集合和高訪問頻率臟塊集合。在每個存儲塊集合中可同類的存儲塊。
S12、在每類存儲塊中,根據(jù)存儲塊最后一次被訪問的時間進(jìn)行排序,獲得每個存儲塊集合所對應(yīng)的LRU鏈,其中,在LRU鏈中最后一次訪問時間距離當(dāng)前時間最近的存儲塊為MRU塊,最后一次訪問時間距離當(dāng)前時間最遠(yuǎn)的存儲塊為LRU塊。
在本步驟中,需要說明的是,由于每個存儲塊集合中可存在多個存儲塊,故需對每個集合中的存儲塊進(jìn)行排序。本發(fā)明實施例可根據(jù)存儲塊最后一次被訪問的時間進(jìn)行排序,體現(xiàn)了訪問時域性,同時獲得每個存儲塊集合所對應(yīng)的LRU鏈。其中,在LRU鏈中最后一次訪問時間距離當(dāng)前時間較近的存儲塊為MRU塊,該MRU塊所在位置為MRU位置。最后一次訪問時間距離當(dāng)前時間較遠(yuǎn)的存儲塊為LRU塊,該LRU塊所在位置為LRU位置。
S13、當(dāng)檢測到有新存儲塊插入時,若判斷確定新存儲塊采用讀缺失引入方式進(jìn)行插入,則將新存儲塊設(shè)置在低訪問頻率干凈塊集合LRU鏈的MRU位置上,并重新生成對應(yīng)的LRU鏈;若判斷確定新存儲塊采用寫缺失引入方式進(jìn)行插入,則將新存儲塊設(shè)置在低訪問頻率臟塊集合LRU鏈的MRU位置上,并重新生成對應(yīng)的LRU鏈。
在本步驟中,需要說明的是,在新存儲塊插入過程中,當(dāng)檢測到新存儲塊插入時,首先要判斷該新存儲塊是采用讀缺失引入方式插入,還是采用寫缺失引入方式插入。
當(dāng)判斷確定新存儲塊采用讀缺失引入方式進(jìn)行插入,則將新存儲塊設(shè)置在低訪問頻率干凈塊集合LRU鏈的MRU位置上,而同時曾經(jīng)在MRU位置上的存儲塊排列在新存儲塊之前。插入完畢后,對該存儲塊集合重新生成新的LRU鏈。
當(dāng)判斷確定新存儲塊采用寫缺失引入方式進(jìn)行插入,則將新存儲塊設(shè)置在低訪問頻率臟塊集合LRU鏈的MRU位置上,而同時曾經(jīng)在MRU位置上的存儲塊排列在新存儲塊之前。插入完畢后,對該存儲塊集合重新生成新的LRU鏈。
S14、當(dāng)檢測到已存存儲塊被訪問命中時,若判斷確定所述已存存儲塊采用讀命中方式被命中,且所述已存存儲塊所屬低訪問頻率干凈塊集合或高訪問頻率干凈塊集合,則將已存存儲塊移動到高訪問頻率干凈塊LRU鏈的MRU位置上,并重新生成對應(yīng)的LRU鏈;若是其他情況,則將已存存儲塊移動到高訪問頻率臟塊LRU鏈的MRU位置上,并重新生成對應(yīng)的LRU鏈。
在本步驟中,需要說明的是,在存儲塊集合中的已存存儲塊被訪問命中過程中,當(dāng)檢測到已存存儲塊被訪問命中時,首先要判斷確定該已存存儲塊是采用讀命中方式被命中,還是采用其他方式被命中。
當(dāng)判斷確定所述已存存儲塊采用讀命中方式被命中,且所述已存存儲塊所屬低訪問頻率干凈塊集合或高訪問頻率干凈塊集合,則將已存存儲塊移動到高訪問頻率干凈塊LRU鏈的MRU位置上,而同時曾經(jīng)在MRU位置上的存儲塊排列在移動的存儲塊之前。移動完畢后,對移動后的存儲塊集合重新生成新的LRU鏈。
除上述情況下的其他所有情況,均將已存存儲塊移動到高訪問頻率臟塊LRU鏈的MRU位置上,而同時曾經(jīng)在MRU位置上的存儲塊排列在移動的存儲塊之前,移動完畢后,對移動后的存儲塊集合重新生成新的LRU鏈。
S15、當(dāng)檢測到需替出一已存存儲塊時,依次對低訪問頻率干凈塊集合、低訪問頻率臟塊集合、高訪問頻率干凈塊集合和高訪問頻率臟塊集合的LRU鏈進(jìn)行檢測,若檢測到第一個非空LRU鏈時,將所述LRU鏈中的LRU位置上的存儲塊替出,并對所述LRU鏈對應(yīng)的存儲塊集合重新生成對應(yīng)的LRU鏈。
在本步驟中,需要說明的是,在存儲塊集合中的已存存儲塊被替出過程中,需依次對低訪問頻率干凈塊集合、低訪問頻率臟塊集合、高訪問頻率干凈塊集合和高訪問頻率臟塊集合的LRU鏈進(jìn)行檢測。當(dāng)檢測到第一個非空LRU鏈時,將所述LRU鏈中的LRU位置上的存儲塊替出,并對所述LRU鏈對應(yīng)的存儲塊集合重新生成對應(yīng)的LRU鏈。
針對本步驟,還需對以下可出現(xiàn)的情況進(jìn)行解釋說明:
A、若判斷確定替出的存儲塊所屬低訪問頻率臟塊,則將高訪問頻率干凈塊集合LRU鏈中LRU位置上的存儲塊移動到低訪問頻率干凈塊集合LRU鏈中的MRU位置上,而同時曾經(jīng)在MRU位置上的存儲塊排列在移動的存儲塊之前,移動完畢后,對移動后的存儲塊集合重新生成新的LRU鏈。
將高訪問頻率臟塊集合LRU鏈中LRU位置上的存儲塊移動到低訪問頻率臟塊集合LRU鏈中的MRU位置上,而同時曾經(jīng)在MRU位置上的存儲塊排列在移動的存儲塊之前,移動完畢后,對移動后的存儲塊集合重新生成新的LRU鏈。
B、若判斷確定替出的存儲塊所屬高訪問頻率干凈塊,則將高訪問頻率臟塊集合LRU鏈中LRU位置上的存儲塊移動到低訪問頻率臟塊集合LRU鏈中的MRU位置上,而同時曾經(jīng)在MRU位置上的存儲塊排列在移動的存儲塊之前,移動完畢后,對移動后的存儲塊集合重新生成新的LRU鏈。
本發(fā)明實施例提供的一種延遲PCM內(nèi)存使用壽命的cache替換方法,通過在cache塊的所有處理過程中均對臟塊和干凈塊進(jìn)行區(qū)分,為臟塊和干凈塊均提供了更全面的保護(hù),實現(xiàn)了在不影響整體性能的前提下,有效減少對PCM內(nèi)存的寫回量,延長了使用壽命。
圖2示出了本發(fā)明一實施例提供的一種延遲PCM內(nèi)存使用壽命的cache替換裝置,包括配置模塊21、排序模塊22、插入模塊23、訪問模塊24和替出模塊25,其中:
配置模塊21,用于設(shè)置多個高速緩沖存儲塊,并將各存儲塊分為低訪問頻率干凈塊集合、低訪問頻率臟塊集合、高訪問頻率干凈塊集合和高訪問頻率臟塊集合;
排序模塊22,用于在每類存儲塊中,根據(jù)存儲塊最后一次被訪問的時間進(jìn)行排序,獲得每個存儲塊集合所對應(yīng)的LRU鏈,其中,在LRU鏈中最后一次訪問時間距離當(dāng)前時間最近的存儲塊為MRU塊,最后一次訪問時間距離當(dāng)前時間最遠(yuǎn)的存儲塊為LRU塊;
插入模塊23,用于在檢測到有新存儲塊插入時,若判斷確定新存儲塊采用讀缺失引入方式進(jìn)行插入,則將新存儲塊設(shè)置在低訪問頻率干凈塊集合LRU鏈的MRU位置上,并重新生成對應(yīng)的LRU鏈;若判斷確定新存儲塊采用寫缺失引入方式進(jìn)行插入,則將新存儲塊設(shè)置在低訪問頻率臟塊集合LRU鏈的MRU位置上,并重新生成對應(yīng)的LRU鏈;
訪問模塊24,用于在檢測到已存存儲塊被訪問命中時,若判斷確定所述已存存儲塊采用讀命中方式被命中,且所述已存存儲塊所屬低訪問頻率干凈塊集合或高訪問頻率干凈塊集合,則將已存存儲塊移動到高訪問頻率干凈塊LRU鏈的MRU位置上,并重新生成對應(yīng)的LRU鏈;若是其他情況,則將已存存儲塊移動到高訪問頻率臟塊LRU鏈的MRU位置上,并重新生成對應(yīng)的LRU鏈;
替出模塊25,用于在檢測到需替出一已存存儲塊時,依次對低訪問頻率干凈塊集合、低訪問頻率臟塊集合、高訪問頻率干凈塊集合和高訪問頻率臟塊集合的LRU鏈進(jìn)行檢測,若檢測到第一個非空LRU鏈時,將所述LRU鏈中的LRU位置上的存儲塊替出,并對所述LRU鏈對應(yīng)的存儲塊集合重新生成對應(yīng)的LRU鏈。
在可能出現(xiàn)的情況下,所述替出模塊還用于:若判斷確定替出的存儲塊所屬低訪問頻率臟塊,則將高訪問頻率干凈塊集合LRU鏈中LRU位置上的存儲塊移動到低訪問頻率干凈塊集合LRU鏈中的MRU位置上,同時將高訪問頻率臟塊集合LRU鏈中LRU位置上的存儲塊移動到低訪問頻率臟塊集合LRU鏈中的MRU位置上,并重新生成對應(yīng)的LRU鏈。若判斷確定替出的存儲塊所屬高訪問頻率干凈塊,則將高訪問頻率臟塊集合LRU鏈中LRU位置上的存儲塊移動到低訪問頻率臟塊集合LRU鏈中的MRU位置上,并重新生成對應(yīng)的LRU鏈。
由于本發(fā)明實施例所述裝置與上述實施例所述方法的原理相同,對于更加詳細(xì)的解釋內(nèi)容在此不再贅述。
需要說明的是,本發(fā)明實施例中可以通過硬件處理器(hardware processor)來實現(xiàn)相關(guān)功能模塊。
本發(fā)明實施例提供的一種延遲PCM內(nèi)存使用壽命的cache替換裝置,通過在cache塊的所有處理過程中均對臟塊和干凈塊進(jìn)行區(qū)分,為臟塊和干凈塊均提供了更全面的保護(hù),實現(xiàn)了在不影響整體性能的前提下,有效減少對PCM內(nèi)存的寫回量,延長了使用壽命。
此外,本領(lǐng)域的技術(shù)人員能夠理解,盡管在此所述的一些實施例包括其它實施例中所包括的某些特征而不是其它特征,但是不同實施例的特征的組合意味著處于本發(fā)明的范圍之內(nèi)并且形成不同的實施例。例如,在下面的權(quán)利要求書中,所要求保護(hù)的實施例的任意之一都可以以任意的組合方式來使用。
應(yīng)該注意的是上述實施例對本發(fā)明進(jìn)行說明而不是對本發(fā)明進(jìn)行限制,并且本領(lǐng)域技術(shù)人員在不脫離所附權(quán)利要求的范圍的情況下可設(shè)計出替換實施例。在權(quán)利要求中,不應(yīng)將位于括號之間的任何參考符號構(gòu)造成對權(quán)利要求的限制。單詞“包含”不排除存在未列在權(quán)利要求中的元件或步驟。位于元件之前的單詞“一”或“一個”不排除存在多個這樣的元件。本發(fā)明可以借助于包括有若干不同元件的硬件以及借助于適當(dāng)編程的計算機(jī)來實現(xiàn)。在列舉了若干裝置的單元權(quán)利要求中,這些裝置中的若干個可以是通過同一個硬件項來具體體現(xiàn)。單詞第一、第二、以及第三等的使用不表示任何順序??蓪⑦@些單詞解釋為名稱。
本領(lǐng)域普通技術(shù)人員可以理解:以上各實施例僅用以說明本發(fā)明的技術(shù)方案,而非對其限制;盡管參照前述各實施例對本發(fā)明進(jìn)行了詳細(xì)的說明,本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解:其依然可以對前述各實施例所記載的技術(shù)方案進(jìn)行修改,或者對其中部分或者全部技術(shù)特征進(jìn)行等同替換;而這些修改或者替換,并不使相應(yīng)技術(shù)方案的本質(zhì)脫離本發(fā)明權(quán)利要求所限定的范圍。