che中存儲(chǔ)有該數(shù)據(jù)塊,則第一級(jí)Cache根據(jù)請(qǐng)求對(duì)該數(shù)據(jù)塊進(jìn)行讀操作或?qū)懖僮?CPU 2完成對(duì)該數(shù)據(jù)塊的訪問);若第一級(jí)Cache中沒有存儲(chǔ)該數(shù)據(jù)塊,則第一級(jí)Cache將該請(qǐng)求轉(zhuǎn)發(fā)給第二級(jí)Cache,并且第一級(jí)Cache在CPU 2完成對(duì)該數(shù)據(jù)塊的訪問之后存儲(chǔ)該數(shù)據(jù)塊。若第二級(jí)Cache接收到該請(qǐng)求,則第二級(jí)Cache會(huì)判斷是否存儲(chǔ)有該數(shù)據(jù)塊。若第二級(jí)Cache中存儲(chǔ)有該數(shù)據(jù)塊,則第二級(jí)Cache根據(jù)請(qǐng)求對(duì)該數(shù)據(jù)塊進(jìn)行讀操作或?qū)懖僮?;若第二?jí)Cache中沒有存儲(chǔ)該數(shù)據(jù)塊,則第二級(jí)Cache將該請(qǐng)求轉(zhuǎn)發(fā)給第三級(jí)Cache,并且第二級(jí)Cache在CPU 2完成對(duì)該數(shù)據(jù)塊的訪問之后存儲(chǔ)該數(shù)據(jù)塊……,依此類推。若主存儲(chǔ)器3接收到該請(qǐng)求,則主存儲(chǔ)器3會(huì)根據(jù)請(qǐng)求對(duì)該數(shù)據(jù)塊進(jìn)行讀操作或?qū)懖僮鳌?br>[0055]容易知道,CPU 2的處理速度遠(yuǎn)遠(yuǎn)快于主存儲(chǔ)器3的訪問速度,CPU 2與主存儲(chǔ)器3之間速度的不匹配嚴(yán)重限制了計(jì)算機(jī)的整體性能。與主存儲(chǔ)器3相比,Cache I的容量小但速度快(特別是第一級(jí)Cache,一般接近CPU的速度),Cachel設(shè)置在CPU 2和主存儲(chǔ)器3之間,可以降低CPU訪問存儲(chǔ)器的延遲,有效緩解CPU 2與主存儲(chǔ)器3之間的速度差距,提升計(jì)算機(jī)的整體性能。
[0056]需要說明的是,本發(fā)明實(shí)施例提供的Cache中數(shù)據(jù)塊的替換方法可以適用于上述的任意一個(gè)Cache I,如第一級(jí)Cache,本發(fā)明對(duì)此不作限制。
[0057]對(duì)于一個(gè)Cache來說,如圖2所示,內(nèi)部的存儲(chǔ)空間分為若干set,各set均包括若干way且各set包括的way的數(shù)量相同,way為Cache中存儲(chǔ)數(shù)據(jù)的最小單位。與set相對(duì)的,主存儲(chǔ)器的空間劃分為若干區(qū)(或頁(yè)),如圖3所示,各區(qū)均包括若干塊且各區(qū)包括的塊的數(shù)量均等于Cache中set的數(shù)量,每個(gè)區(qū)包括的各塊均與各set存在地址映射,每個(gè)區(qū)的某塊存儲(chǔ)的數(shù)據(jù)均可以存儲(chǔ)到與該塊存在地址映射的set包括的任意一個(gè)way中。具體地,參見圖2,每個(gè)way包括標(biāo)簽(tag)字段和數(shù)據(jù)(data)字段,data字段用于存儲(chǔ)數(shù)據(jù)塊,tag字段用于存儲(chǔ)data字段存儲(chǔ)的數(shù)據(jù)塊在主存儲(chǔ)器中的高位地址,如區(qū)號(hào)(或頁(yè)號(hào))。
[0058]根據(jù)set和way的數(shù)量,Cache分為三種結(jié)構(gòu),分別為直接映射結(jié)構(gòu)、全相聯(lián)結(jié)構(gòu)和組相聯(lián)結(jié)構(gòu)。直接映射結(jié)構(gòu)的Cache中各set包括的way的個(gè)數(shù)為1,全相聯(lián)結(jié)構(gòu)的Cache中set的個(gè)數(shù)為1,組相聯(lián)結(jié)構(gòu)的Cache中set和way的個(gè)數(shù)均大于I。
[0059]又如圖2所示,CPU訪問數(shù)據(jù)的請(qǐng)求中的地址(address)部分包括標(biāo)簽(tag)、索引(index)和偏移量(offset)三個(gè)字段。index字段包括訪問的數(shù)據(jù)塊在主存儲(chǔ)器中的低位地址,如塊號(hào)。由于主存儲(chǔ)器中的塊與Cache中的set存在地址映射,因此index字段可以用于索引到某個(gè)set。tag字段包括數(shù)據(jù)塊在主存儲(chǔ)器中的高位地址,如區(qū)號(hào)(或頁(yè)號(hào))。由于Cache中各個(gè)way的tag字段存儲(chǔ)有各個(gè)way存儲(chǔ)的數(shù)據(jù)塊在主存儲(chǔ)器中的高位地址,因此請(qǐng)求中的tag字段可以用于與Cache中各個(gè)way的tag字段進(jìn)行比較,以確定各個(gè)way存儲(chǔ)的數(shù)據(jù)塊是否為訪問的數(shù)據(jù)塊offset為訪問的數(shù)據(jù)在數(shù)據(jù)塊內(nèi)的地址。
[0060]Cache在接收到CPU訪問數(shù)據(jù)的請(qǐng)求之后,首先根據(jù)請(qǐng)求的address部分中的index字段,確定訪問的數(shù)據(jù)塊所在的set。然后將請(qǐng)求的address部分中的tag字段與確定的set中每個(gè)way的tag進(jìn)行比較。若請(qǐng)求的address部分中的tag字段與某個(gè)way的tag相同,貝Ij表示訪問的數(shù)據(jù)塊存儲(chǔ)在Cache中,稱為hit ;若請(qǐng)求的address部分中的tag字段與該set中所有way的tag均不同,貝U表示訪問的數(shù)據(jù)塊沒有存儲(chǔ)在Cache中,稱為miss。出現(xiàn)miss時(shí),Cache先將請(qǐng)求轉(zhuǎn)發(fā)給其它存儲(chǔ)器,然后在CPU完成對(duì)數(shù)據(jù)塊的訪問之后,將訪問的數(shù)據(jù)塊(即主存儲(chǔ)器中的數(shù)據(jù)塊)寫入之前確定的set中的一個(gè)way進(jìn)行存儲(chǔ)(若寫入的way原先存儲(chǔ)有數(shù)據(jù),則寫入為數(shù)據(jù)塊替換過程)。若該確定的set包括多個(gè)way,此時(shí)需要先從確定的set包括的多個(gè)way中選出一個(gè)way,然后將訪問的數(shù)據(jù)塊存儲(chǔ)在選出的way中。
[0061]由于直接映射結(jié)構(gòu)的Cache中各set包括的way的個(gè)數(shù)為1,不能進(jìn)行way的選擇,因此本發(fā)明實(shí)施例提供的Cache中數(shù)據(jù)塊的替換方法主要應(yīng)用于全相聯(lián)結(jié)構(gòu)的Cache和組相聯(lián)結(jié)構(gòu)的Cache,特別是組相聯(lián)結(jié)構(gòu)的Cache。
[0062]實(shí)施例一
[0063]本發(fā)明實(shí)施例提供了一種Cache中數(shù)據(jù)塊的替換方法,Cache的存儲(chǔ)空間分為若干set,各set均包括若干way且各set包括的way相同,Cache的存儲(chǔ)空間按way劃分給多個(gè)模式使用,每個(gè)模式均可以使用所有set中相同的若干way,即若干way配置給多個(gè)模式使用,該模式為網(wǎng)絡(luò)制式或VM,參見圖4,該替換方法包括:
[0064]步驟101:每隔設(shè)定時(shí)間從第一模式的可用way中選擇一個(gè)可用way,作為第一模式的待替換way,且第一模式的各個(gè)可用way作為第一模式的待替換way的概率均等。該步驟101可以一直執(zhí)行。
[0065]在本實(shí)施例中,第一模式為多個(gè)模式中的一個(gè),可以為一個(gè)網(wǎng)絡(luò)制式,也可以為一個(gè)VM。需要說明的是,在配置有Cache的way的多個(gè)模式中,第一模式的個(gè)數(shù)可以為一個(gè),也可以為多個(gè)。具體地,網(wǎng)絡(luò)制式包括全球移動(dòng)通信系統(tǒng)(Global System for MobileCommunicat1n,簡(jiǎn)稱 GSM)、碼分多址(Code Divis1n Multiple Access,簡(jiǎn)稱 CDMA)、第三代移動(dòng)通信技術(shù)(3rd_Generat1n wireless telephone technology,簡(jiǎn)稱 3G)、長(zhǎng)期演進(jìn)(Long Term Evolut1n,簡(jiǎn)稱LTE)等。VM為在一臺(tái)計(jì)算機(jī)的操作系統(tǒng)上通過軟件模擬的具有完整硬件系統(tǒng)功能的、運(yùn)行在一個(gè)完全隔離環(huán)境中的一個(gè)計(jì)算機(jī)系統(tǒng)。
[0066]第一模式的可用way為配置給第一模式使用的way。例如,Cache的所有way為way0-15o配置給網(wǎng)絡(luò)制式I (如GSM)使用的way為wayO-7,配置給網(wǎng)絡(luò)制式2 (如CDMA)使用的way為way8_15。若第一模式為網(wǎng)絡(luò)制式2,則第一模式的可用way為way8_15?;蛘?,配置給VM I使用的way為wayO、way4、way8、way 12,配置給VM 2使用的way為way 1、way5、way9、wayl3,配置給 VM 3 使用的 way 為 way2、way6、waylO、wayl4,配置給 VM 4 使用的way為way3、way7、way IU wayl5。若第一模式為VM3,則第一模式的可用way為way2、way6、waylO、wayl4。
[0067]通常Cache中的way可以有兩種配置方式:一種是默認(rèn)配置,按照默認(rèn)的方式將所有或部分way配置給某個(gè)模式(網(wǎng)絡(luò)制式或者VM)使用。采用默認(rèn)配置方式配置給各個(gè)模式使用的way相同。例如,默認(rèn)配置的way為way0_15、或者wayO和wayl,則采用默認(rèn)配置的方式配置給所有模式使用的way均為wayO-15,或者均為wayO和wayl。另一種是與默認(rèn)配置相對(duì)的單獨(dú)配置,單獨(dú)將所有或部分way配置給某個(gè)模式使用。采用單獨(dú)配置方式配置給各個(gè)模式使用的way可以相同,也可以完全不同,還可以部分相同,部分不同。在本實(shí)施例中,采用單獨(dú)配置的方式配置第一模式使用的way。
[0068]步驟102:接收第一數(shù)據(jù)訪問請(qǐng)求,第一數(shù)據(jù)訪問請(qǐng)求包括第一模式的標(biāo)識(shí)。該步驟102與步驟101沒有先后順序。
[0069]步驟103:當(dāng)Cache中沒有存儲(chǔ)第一數(shù)據(jù)訪問請(qǐng)求訪問的數(shù)據(jù)塊時(shí),將第一數(shù)據(jù)訪問請(qǐng)求訪問的數(shù)據(jù)塊存儲(chǔ)在第一模式的待替換way中。
[0070]容易知道,當(dāng)Cache中沒有存儲(chǔ)第一數(shù)據(jù)訪問請(qǐng)求訪問的數(shù)據(jù)塊時(shí),Cache會(huì)先將第一數(shù)據(jù)訪問請(qǐng)求轉(zhuǎn)發(fā)給其它Cache或者主存儲(chǔ)器。在CPU在其它Cache或者主存儲(chǔ)器中完成對(duì)第一數(shù)據(jù)訪問請(qǐng)求訪問的數(shù)據(jù)塊的訪問之后,Cache再將第一數(shù)據(jù)訪問請(qǐng)求訪問的數(shù)據(jù)塊按照步驟103的要求存儲(chǔ)在自身的way中。
[0071]本發(fā)明實(shí)施例通過每隔設(shè)定時(shí)間從第一模式的可用way中選擇一個(gè)可用way,作為第一模式的待替換way,且第一模式的各個(gè)可用way作為第一模式的待替換way的概率均等,也就是說,第一模式的待替換way是第一模式的任意一個(gè)可用way的概率是均等的。由于當(dāng)Cache中沒有存儲(chǔ)第一數(shù)據(jù)訪問請(qǐng)求訪問的數(shù)據(jù)塊時(shí),會(huì)將第一數(shù)據(jù)訪問請(qǐng)求訪問的數(shù)據(jù)塊存儲(chǔ)在第一模式的待替換way中,因此第一數(shù)據(jù)訪問請(qǐng)求訪問的數(shù)據(jù)塊存儲(chǔ)在第一模式的各個(gè)可用way的概率是均等的,即采用第一模式的各個(gè)可用way實(shí)現(xiàn)第一模式的數(shù)據(jù)塊替換的概率均等。
[0072]實(shí)施例二
[0073]本發(fā)明實(shí)施例提供了一種Cache中數(shù)據(jù)塊的替換方法,Cache的存儲(chǔ)空間分為若干set,各set均包括若干way且各set包括的way相同,Cache的存儲(chǔ)空間按way劃分給多個(gè)模式使用,每個(gè)模式均可以使用所有set中相同的若干way。例如,Cache包括set0_7,setO-7均包括wayO-15,wayO-7是配置給模式I使用的,way8_15是配置給模式2的,則模式I可以使用setO-7中的wayO-7,模式2可以使用setO-7中的way8_15。即若干way配置給多個(gè)模式使用,該模式為網(wǎng)絡(luò)制式或VM,參見圖5,具體實(shí)現(xiàn)過程如下:
[0074]步驟201:每隔設(shè)定時(shí)間從第一模式的可用way中選擇一個(gè)可用way,作為第一模式的待替換way,且第一模式的各個(gè)可用way作為第一模式的待替換way的概率均等。該步驟201可以一直執(zhí)行。
[0075]在本實(shí)施例中,第一模式為多個(gè)模式中的一個(gè),可以為一個(gè)網(wǎng)絡(luò)制式,也可以為一個(gè)VM。需要說明的是,在配置有Cache的way的多個(gè)模式中,第一模式的個(gè)數(shù)可以為一個(gè),也可以為多個(gè)。具體地,網(wǎng)絡(luò)制式包括GSM、CDMA、3G、LTE等。VM為在一臺(tái)計(jì)算機(jī)的操作系統(tǒng)上通過軟件模擬的具有完整硬件系統(tǒng)功能的、運(yùn)行在一個(gè)完全隔離環(huán)境中的一個(gè)計(jì)算機(jī)系統(tǒng)。
[0076]第一模式的可用way為配置給第一模式使用的way。例如,Cache的所有way為wayO-15 ο配置給網(wǎng)絡(luò)制式I (如GSM)使用的way為wayO-7,配置給網(wǎng)絡(luò)制式2 (如CDMA)使用的way為way8_15。若第一模式為網(wǎng)絡(luò)制式2,則第一模式的可用way為way8_15?;蛘撸渲媒oVM I使用的way為wayO、way4、way8、way 12,配置給VM 2使用的way為wayl、way5、way9、wayl3,配置給 VM 3 使用的 way 為 way2、way6、waylO、way 14,配置給 VM 4 使用的way為way3、way7、way IU wayl5。若第一模式為VM3,則第一模式的可用way為way2、way6、waylO、wayl40
[0077]通常Cache中的way可以有兩種配置方式:一種是默認(rèn)配置,按照默認(rèn)的方式將所有或部分way配置給某個(gè)模式(網(wǎng)絡(luò)制式或者VM)使用。采用默認(rèn)配置方式配