欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

高速緩沖存儲器cache中cache塊的替換處理方法和裝置制造方法

文檔序號:6493386閱讀:192來源:國知局
高速緩沖存儲器cache中cache塊的替換處理方法和裝置制造方法
【專利摘要】本發(fā)明實施例提供的高速緩沖存儲器cache中cache塊的替換處理方法和裝置,通過為除了L1?cache之外的cache中各cacheline增加一個標(biāo)志位來指示其內(nèi)的數(shù)據(jù)是否存在于上級cache中,盡可能減少上級cache中含有的cache?line在本級cache被替換出去的情況,進(jìn)而減少了上級cache的cache?line被替換造成的開銷;而且還能夠提高cache的命中率,減少存儲器訪問時延。
【專利說明】高速緩沖存儲器cache中cache塊的替換處理方法和裝置
【技術(shù)領(lǐng)域】
[0001]本發(fā)明實施例涉及數(shù)據(jù)存儲技術(shù),尤其涉及一種高速緩沖存儲器cache中cache塊的替換處理方法和裝置。
【背景技術(shù)】
[0002]高速緩沖存儲器(cache)最早是由Wilkes于1951年為了彌補處理器與存儲器之間的速度差異而提出的,是存儲系統(tǒng)中最重要的部分?,F(xiàn)有技術(shù)中cache —般采用層級結(jié)構(gòu),圖1為現(xiàn)有技術(shù)中cache層級結(jié)構(gòu)示意圖,如圖1所示采用了 LI cache、L2 cache和L3 cache三個層次的cache結(jié)構(gòu),其訪問速度依次遞減,容量依次遞增。LI cache對于L2cache而言是上級cache, L2 cache對于L3 cache而言是上級cache。若上級cache中的所有數(shù)據(jù)在本級cache中都存在,那么這種cache的組織方式為包括式(inclusive)。若數(shù)據(jù)最多可以在兩個cache其中之一,不可以同時存在于兩個cache,這種cache組織方式為排他式(exclusive)?,F(xiàn)有技術(shù)的處理器大多采用inclusive的cache組織方式。
[0003]cache根據(jù)局部性原理,只存儲部分經(jīng)常使用的數(shù)據(jù)供處理器運算。那么必然有些數(shù)據(jù)不存儲在cache中,當(dāng)訪問這部分?jǐn)?shù)據(jù)時,會發(fā)生未命中(cache miss),反之稱為cache命中(cache hit)。cache的性能和cache命中率緊密相連,cache命中率越高,存儲訪問需要的時間越少,cache的性能越高;反之,cache性能就越低。如果當(dāng)前訪問的數(shù)據(jù)不在cache中即cache miss,可能造成對現(xiàn)有的cache按照cache塊(cache line, 一般指cache讀寫的最小單位)的大小進(jìn)行替換,即將當(dāng)前此cache line中的數(shù)據(jù)在此cache中作廢,并填入新的數(shù)據(jù)。
[0004]在采用inclusive方式組織的cache中,由于各級cache只根據(jù)本級cache被訪問的情況進(jìn)行統(tǒng)計,可能造成低級cache的使用情況并不真實,進(jìn)而導(dǎo)致低效的替換策略,影響存儲器的訪問性能。例如L2 cache在進(jìn)行cache line替換時,可能把一個在LI cache中頻繁命中的cache line替換掉;由于inclusive的組織方式,會將LI cache中對應(yīng)的cache line也替換出去,這樣將影響存儲器的訪問性能。

【發(fā)明內(nèi)容】

[0005]本發(fā)明實施例提供一種高速緩沖存儲器cache中cache塊的替換處理方法和裝直,以提聞cache的命中率。
[0006]本發(fā)明實施例一方面提供一種高速緩沖存儲器cache中cache塊的替換處理方法,包括:
[0007]在根據(jù)接收到的數(shù)據(jù)訪問請求對本級cache進(jìn)行數(shù)據(jù)訪問的過程中,若未命中、且在所述本級cache內(nèi)多個待替換的cache塊中存在標(biāo)志位為復(fù)位狀態(tài)的cache塊,則在所述標(biāo)志位為復(fù)位狀態(tài)的cache塊中選擇一目標(biāo)cache塊進(jìn)行替換;所述標(biāo)志位包括復(fù)位狀態(tài)和置位狀態(tài),所述標(biāo)志位用于表示所述cache塊中的數(shù)據(jù)是否存在于所述本級cache對應(yīng)的上級cache中,所述置位狀態(tài)表示存在,所述復(fù)位狀態(tài)表示不存在。[0008]在上述實施例中還包括:若所述本級cache內(nèi)多個待替換的cache塊中包括沒有存儲數(shù)據(jù)的cache塊,則優(yōu)先選擇沒有存儲數(shù)據(jù)的cache塊作為目標(biāo)cache塊進(jìn)行替換。
[0009]在上述實施例中還包括:在進(jìn)行cache初始化時,將各cache塊的標(biāo)志位設(shè)置為復(fù)位狀態(tài);
[0010]或,
[0011]cache塊內(nèi)的數(shù)據(jù)被刪除后,將所述cache塊的標(biāo)志位設(shè)置為復(fù)位狀態(tài);
[0012]或,
[0013]所述上級cache中一 cache塊內(nèi)的數(shù)據(jù)被替換后,若所述本級cache僅存在一個上級cache,或者存在多個上級cache、且其他上級cache內(nèi)不包括被替換的數(shù)據(jù),則將被替換的cache塊在所述本級cache中對應(yīng)的cache塊的標(biāo)志位設(shè)置為復(fù)位狀態(tài);
[0014]或,
[0015]所述上級cache中一 cache塊內(nèi)的數(shù)據(jù)被替換后,若所述本級cache存在多個上級cache、且其他上級cache內(nèi)包括被替換的數(shù)據(jù),則維持所述本級cache中對應(yīng)的cache塊的標(biāo)志位為置位狀態(tài);
[0016]或
[0017]所述上級cache中一 cache塊內(nèi)的數(shù)據(jù)被替換后,將替換后的所述cache塊在所述本級cache中所對應(yīng)的cache塊的標(biāo)志位設(shè)置為置位狀態(tài)。
[0018]在上述實施例中還包括:若在本級cache內(nèi)多個待替換的cache塊的標(biāo)志位均為置位狀態(tài),則按照預(yù)設(shè)算法選擇一個目標(biāo)cache塊進(jìn)行替換,并在進(jìn)行完替換后,將所述目標(biāo)cache塊的標(biāo)志位設(shè)置為復(fù)位狀態(tài);并在上級cache進(jìn)行完cache塊的替換處理后,再將所述目標(biāo)cache塊的標(biāo)志位設(shè)置為置位狀態(tài);
[0019]或
[0020]若在本級cache內(nèi)多個待替換的cache塊的標(biāo)志位均為置位狀態(tài),則按照預(yù)設(shè)算法選擇一個目標(biāo)cache塊進(jìn)行替換,并在進(jìn)行完替換后,直接將所述目標(biāo)cache塊的標(biāo)志位設(shè)置為置位狀態(tài);再進(jìn)行上級cache的cache塊的替換處理;
[0021]或
[0022]在所述標(biāo)志位為復(fù)位狀態(tài)的cache塊中選擇一目標(biāo)cache塊進(jìn)行替換完成后,將所述目標(biāo)cache塊的標(biāo)志位設(shè)置為復(fù)位狀態(tài);并在上級cache進(jìn)行完cache塊的替換處理后,再將所述目標(biāo)cache塊的標(biāo)志位設(shè)置為置位狀態(tài);
[0023]或,
[0024]在所述標(biāo)志位為復(fù)位狀態(tài)的cache塊中選擇一目標(biāo)cache塊進(jìn)行替換完成后,直接將所述目標(biāo)cache塊的標(biāo)志位設(shè)置為置位狀態(tài);再進(jìn)行上級cache的cache塊的替換處理。
[0025]在上述實施例中,所述本級cache中的各cache塊均各自設(shè)置有一個標(biāo)志位,或具有不同索引的多個cache塊共用一個標(biāo)志位。
[0026]在上述實施例中,各所述cache塊與對應(yīng)的標(biāo)志位存儲在同一陣列中,或存儲不同陣列中。
[0027]本發(fā)明實施例另方面提供一種高速緩沖存儲器cache中cache塊的替換處理裝置,該裝置包括:[0028]接收模塊,用于接收數(shù)據(jù)訪問請求;
[0029]處理模塊,用于在根據(jù)接收到的數(shù)據(jù)訪問請求對本級cache進(jìn)行數(shù)據(jù)訪問的過程中,若未命中、且在所述本級cache內(nèi)多個待替換的cache塊中存在標(biāo)志位為復(fù)位狀態(tài)的cache塊,則在所述標(biāo)志位為復(fù)位狀態(tài)的cache塊中選擇一目標(biāo)cache塊進(jìn)行替換;所述標(biāo)志位包括復(fù)位狀態(tài)和置位狀態(tài),所述標(biāo)志位用于表示所述cache塊中的數(shù)據(jù)是否存在于所述本級cache對應(yīng)的上級cache中,所述置位狀態(tài)表示存在,所述復(fù)位狀態(tài)表示不存在。
[0030]本發(fā)明實施例提供的高速緩沖存儲器cache中cache塊的替換處理方法和裝置,通過為除了 LI cache之外的cache中各cache line增加一個標(biāo)志位來指示其內(nèi)的數(shù)據(jù)是否存在于上級cache中,盡可能減少上級cache中含有的cacheline在本級cache被替換出去的情況,進(jìn)而減少了上級cache的cache line被替換造成的開銷;而且還能夠提高cache的命中率,減少存儲器訪問時延。
【專利附圖】

【附圖說明】
[0031]圖1為現(xiàn)有技術(shù)中cache層級結(jié)構(gòu)示意圖;
[0032]圖2為本發(fā)明實施例中cache內(nèi)部結(jié)構(gòu)示意圖;
[0033]圖3為本發(fā)明實施例cache塊的替換處理方法流程圖;
[0034]圖4為本發(fā)明實施例單個上級cache對應(yīng)本級cache的結(jié)構(gòu)示意圖;
[0035]圖5為本發(fā)明實施例多個上級cache對應(yīng)本級cache的結(jié)構(gòu)示意圖;
[0036]圖6為本發(fā)明實施例cache中cache塊的替換處理裝置結(jié)構(gòu)示意圖。
【具體實施方式】
[0037]如圖1示出的cache層級結(jié)構(gòu)中既可以采用exclusive方式,也可以采用inclusive方式,以下各實施例針對inclusive方式即上級cache中的所有數(shù)據(jù)在本級cache中都存在的存儲方式介紹本發(fā)明的技術(shù)方案。
[0038]為了更加清楚的了解本發(fā)明的技術(shù)方案,首先介紹一下cache內(nèi)部結(jié)構(gòu),圖2為本發(fā)明實施例中cache內(nèi)部結(jié)構(gòu)示意圖,如圖2所示,cache普遍采用組相聯(lián)的組織方式。一般cache分為若干組,每組包括若干個cache line (即cache塊),如果每組有η個cacheline,則稱之為η路組相聯(lián)。內(nèi)存(memory)中的指定數(shù)據(jù)可以相應(yīng)地放到cache中的指定組中的任意一個cache line中。圖2為兩路組相聯(lián)的cache結(jié)構(gòu)。首先地址(address)分為cache tag (標(biāo)簽)、cache index (索引)和offset (偏移量)三個字段:offset表示一個 cache line 內(nèi)的地址,例如 16Byte 的 cache line,可以用 4-bit 的 offset 表不;cacheindex用來索引cache的Data Array和Tag Array內(nèi)的一個組(因為組相聯(lián)中,一個指定的地址只能映射到一個組);cache tag 一般是地址的高部分,用來判斷組內(nèi)的多個cacheline (圖2中為wayO和wayl)是否命中或者不命中(hit/miss)。I路組相聯(lián)稱為直接映射。cache只有一組,稱為全相聯(lián)映射。直接映射的情況下,cache進(jìn)行替換時,由于必須也只能對其中一個指定的cache line進(jìn)行替換,并無備選cache line進(jìn)行選擇。因此本發(fā)明各實施例適應(yīng)于非直接映射的情況下,即cache index所指向的一組cache內(nèi)至少存在兩個待替換的cacheline。
[0039]本發(fā)明實施例針對在inclusive的cache組織方式中,有可能將頻繁使用的cacheline替換出去的缺陷,對替換算法進(jìn)行優(yōu)化,以提高存儲器訪問效率。具體地,本發(fā)明實施例中為如圖1中除了 LI cache之外的其他cache的(例如L2 cache和L3 cache)各cacheline增加一個標(biāo)志位例如upper,upper用于表示該cache line中的數(shù)據(jù)是否存在于本級cache對應(yīng)的上級cache中。標(biāo)志位至少包括兩個狀態(tài)即復(fù)位狀態(tài)和置位狀態(tài),其中,置位狀態(tài)表示該cache line中的數(shù)據(jù)是存在于本級cache對應(yīng)的上級cache中,復(fù)位狀態(tài)表示該cache line中的數(shù)據(jù)是不存在于本級cache對應(yīng)的上級cache中。例如,L2 cache中的一個cache line內(nèi)存儲有數(shù)據(jù)Μ,若該cache line對應(yīng)的標(biāo)志位為置位狀態(tài)例如upper位為“1”,則說明LI cache中也存儲有數(shù)據(jù)M ;若該cache line對應(yīng)的標(biāo)志位為復(fù)位狀態(tài)例如upper位為“O”,則說明LI cache中不存儲有數(shù)據(jù)M。本發(fā)明實施例可以根據(jù)標(biāo)志位的狀態(tài)在L2 cache中多個待替換的cache line中選擇合適的cache line,以避免LI cache中頻繁使用的cache line被替換出去。
[0040]圖3為本發(fā)明實施例cache塊的替換處理方法流程圖,如圖3所示,該方法包括:
[0041]步驟100、接收數(shù)據(jù)訪問請求;
[0042]步驟101、在根據(jù)接收到的數(shù)據(jù)訪問請求對本級cache進(jìn)行數(shù)據(jù)訪問的過程中,若未命中、且在所述本級cache內(nèi)多個待替換的cache塊中存在標(biāo)志位為復(fù)位狀態(tài)的cache塊,則在所述標(biāo)志位為復(fù)位狀態(tài)的cache塊中選擇一目標(biāo)cache塊進(jìn)行替換。
[0043]在接收到數(shù)據(jù)訪問請求后,根據(jù)cache的層級結(jié)構(gòu)進(jìn)行逐步查詢。首先查找LIcache,具體地根據(jù)請求地址中的cache index查找LI cache中與cacheindex對應(yīng)的一組cache line,查看該組cache line內(nèi)的各cache line內(nèi)存儲的數(shù)據(jù)對應(yīng)的tag是否與地址中包括的cache tag—致,若一致,則命中,若不一致,則未命中。若LI cache命中,則數(shù)據(jù)訪問成功;若LI cache未命中,則繼續(xù)依序查找L2 cache和L3 cache, L2 cache和L3cache的查找方式與Llcache —致,此處不再贅述。若均未命中,貝U查找memory直至命中。根據(jù)要求,若某一級的cache未命中,貝U要觸發(fā)替換流程,即在該級cache中與cacheindex對應(yīng)的cache line組內(nèi)多個待替換的待替換中選擇一個cache line進(jìn)行替換,即要應(yīng)用所要查找的數(shù)據(jù)替換原來存儲的數(shù)據(jù)。
[0044]本發(fā)明實施例中,在LI cache未命中,繼續(xù)對例如L2 cache進(jìn)行數(shù)據(jù)訪問的過程中,若仍然未命中,貝1J需要對L2 cache進(jìn)行替換處理。首先查看cacheindex對應(yīng)的cacheline組內(nèi)各cache line的標(biāo)志位的狀態(tài),若存在標(biāo)志位為復(fù)位狀態(tài)的cache line,則說明該cache line內(nèi)的數(shù)據(jù)不存在于LI cache中,即便該cache line內(nèi)的數(shù)據(jù)被替換出去,LI cache內(nèi)存儲所有的數(shù)據(jù)仍然全部存儲在L2 cache內(nèi),那么選擇其作為替換目標(biāo)不會導(dǎo)致LI cache的替換,因此本發(fā)明實施例在標(biāo)志位為復(fù)位狀態(tài)的cache line中選擇一目標(biāo)cache line進(jìn)行替換??梢岳斫獾氖?若L2 cache中所選擇替換的cache line的標(biāo)志位為置位狀態(tài),貝1J說明該cache line中的數(shù)據(jù)也存在于LI cache中,當(dāng)將該cache line中的數(shù)據(jù)替換出去后,根據(jù)inclusive組織方式的要求,Llcache中對應(yīng)的cacheline也要進(jìn)行替換,其內(nèi)部存儲的數(shù)據(jù)將被刪除,若該數(shù)據(jù)在LI cache頻繁命中,則如此替換不利于數(shù)據(jù)查找的效率。
[0045]本發(fā)明實施例提供的cache塊的替換處理方法中,通過為除了 LI cache之外的cache中各cache line增加一個標(biāo)志位來指示其內(nèi)的數(shù)據(jù)是否存在于上級cache中,盡可能減少上級cache中含有的cache line在本級cache被替換出去的情況,進(jìn)而減少了上級cache的cache line被替換造成的開銷;而且還能夠提高cache的命中率,減少存儲器訪問時延。
[0046]在上述方法實施例中,若LI cache和L2 cache均未命中,貝U在L2 cache中按照上述方法選擇一個目標(biāo)cache line進(jìn)行替換的過程中,若發(fā)現(xiàn)L2 cache中多個待替換的cache line中包括沒有存儲數(shù)據(jù)的cache line,則優(yōu)先選擇該沒有存儲數(shù)據(jù)的cache line作為目標(biāo)cache line進(jìn)行替換。一個cache line中當(dāng)前沒有存儲數(shù)據(jù)的原因有很多,例如初始化后所有的cache line中均沒有存儲數(shù)據(jù)。即本實施例中選擇目標(biāo)cache line時,優(yōu)先選擇沒有存儲任何數(shù)據(jù)的cache line,若均存儲有數(shù)據(jù),則可以按照上述方法實施例提供的選擇方法進(jìn)行選擇。
[0047]在上述方法實施例中,若LI cache和L2 cache均未命中,貝U在L2 cache中按照上述方法選擇一個目標(biāo)cache line進(jìn)行替換的過程中,若發(fā)現(xiàn)L2 cache中多個待替換的cache line的標(biāo)志位均為置位狀態(tài),則可以按照預(yù)設(shè)算法例如現(xiàn)有技術(shù)普遍采用的算法來選擇一個目標(biāo)cache line進(jìn)行替換。由于替換后的數(shù)據(jù)在LI cache中不存在,因此在替換后可以將該目標(biāo)cache line的標(biāo)志位設(shè)置為復(fù)位狀態(tài)。
[0048]圖4為本發(fā)明實施例單個上級cache對應(yīng)本級cache的結(jié)構(gòu)示意圖,圖5為本發(fā)明實施例多個上級cache對應(yīng)本級cache的結(jié)構(gòu)示意圖。圖4中包括一個本級cache和單個對應(yīng)的上級cache,采用inclusive的組織方式,例如只有一個LI cache對應(yīng)一個L2cache ο圖5中包括一個本級cache和對應(yīng)的多個上級cache,采用inclusive的組織方式,例如多核系統(tǒng)中的多個L2 cache對應(yīng)一個L3 cache。為本級cache的每個cache line增加一個標(biāo)志位upper,表示對應(yīng)cache line是否有數(shù)據(jù)存在于上級cache中。upper位的初始化、復(fù)位和置位操作如下:
[0049]初始化:在進(jìn)行cache初始化時,cache中的所有的cache line均無效,將cacheline的標(biāo)志位設(shè)置為復(fù)位狀態(tài)。
[0050]upper置位(有效):當(dāng)有數(shù)據(jù)從本級cache寫入到任意一個上級cache,將本級cache中相應(yīng)的cache line的upper置位。對于圖5,如果寫入到其中一個上級cache中的數(shù)據(jù),本就存在于其他的上級cache中,那么upper原本就是有效的,此時置位并不影響。如果多個上級cache之間是exclusive的組織方式(例如,大多數(shù)的LI data cache和LIinstruction cache),那么寫入到其中一個上級cache中的數(shù)據(jù),必然不存在于其他的上級cache中,那么upper從無效變?yōu)橛行А?br> [0051]另外,上級cache中一 cache塊內(nèi)的數(shù)據(jù)被替換后,將替換后的cache塊在本級cache中所對應(yīng)的cache line的upper置位。
[0052]upper 復(fù)位(無效):
[0053]對于圖4,按照引起upper復(fù)位的原因分為cache line的無效和cache line的替換兩種:當(dāng)cache (非Llcache)進(jìn)行cache line的無效操作即刪除cacheline內(nèi)的數(shù)據(jù)時,對應(yīng)的cache line的upper需要復(fù)位。當(dāng)有數(shù)據(jù)從上級cache中替換出來,將被替換的cache line在本級相應(yīng)的cache line的upper復(fù)位。數(shù)據(jù)從上級cache中替換出來有兩種情況:一種是由上級cache的cache miss引發(fā)的;一種是由于本級cache中所有的upper均有效時進(jìn)行替換引起的。
[0054]對于圖5,按照引起upper復(fù)位的原因分為cache line的無效和cache line的替換兩種:當(dāng)cache (非LI cache)進(jìn)行cache line的無效操作即刪除cacheline內(nèi)的數(shù)據(jù)時,對應(yīng)的cache line的upper需要復(fù)位。cache line的替換分為兩種情況:第一種是由上級cache的cache miss引發(fā)的替換,第二種是由于本級cache中所有的upper均有效時進(jìn)行替換引起的。第二種情況可以立即將upper復(fù)位。第一種情況需要進(jìn)一步的分析:
[0055]如果多個上級cache之間采用的是exclusive的組織方式,那么當(dāng)上級cache進(jìn)行替換的時候,其他上級cache內(nèi)不包括被替換的數(shù)據(jù),此時可以立即將被替換的cacheline在本級cache對應(yīng)的cache line的upper復(fù)位。
[0056]如果多個上級cache之間采用的是inclusive的組織方式,一個上級cache進(jìn)行替換時,先查詢其他的上級cache是否含有該被替換的數(shù)據(jù)(目錄一致性可以查看目錄,總線一致性協(xié)議可以通過向其他上級cache發(fā)送總線請求來完成判斷),如果其他上級cache中只要有一個含有該數(shù)據(jù),那么upper位不復(fù)位,仍然保持置位狀態(tài)(即有效),否則將被替換的cache line在本級cache對應(yīng)的cache line的upper復(fù)位。
[0057]在上述方法實施例中,cache line和對應(yīng)的標(biāo)志位upper可以存儲在同一陣列,當(dāng)然也可以存儲在不同陣列的。cache中的各cache line可以均各自設(shè)置有一個upper位。或具有不同索引的多個cache line共用一個upper位,也就是說為了節(jié)省upper所占用的存儲資源,可以將本級cache的不同的索引對應(yīng)的多個cache line采用一個upper表示,只要其中有一個cache line滿足如上upper置位的條件,此upper位就置位;否則,upper位無效。
[0058]另外,本級cache與上級cache之間的通信可以通過多對一的聯(lián)接結(jié)構(gòu),也可以通過總線,也可以通過crossbar等結(jié)構(gòu),本發(fā)明實施例并不作限定。
[0059]以下結(jié)合一個實際的例子對本發(fā)明實施例的方法進(jìn)行介紹。在對圖1所示的cache進(jìn)行A數(shù)據(jù)訪問時,請求地址中cache index指向LI cache中的一組cache line,其中包括兩個cache line (cache Iinel和cache line2)(本實施例以兩個為例進(jìn)行說明,并不局限于此),cache Iinel存儲有數(shù)據(jù)B, cache line2存儲有數(shù)據(jù)C。由于訪問的數(shù)據(jù)A在LI cache未命中,則繼續(xù)訪問L2 cache。cache index指向L2 cache中的一組cacheline,其中包括三個 cache line (cacheline3、cache line4 和 cache line5)(本實施例以三個為例進(jìn)行說明,并不局限于此),假設(shè)cache line3存儲有數(shù)據(jù)C,對應(yīng)的upper位為I ;cache line4存儲有數(shù)據(jù)D,對應(yīng)的upper位為O ;cache line5存儲有數(shù)據(jù)E,對應(yīng)的upper位為O。按照本發(fā)明實施例提供的方法,此時選擇cache line5作為目標(biāo)cacheline進(jìn)行替換(此處假設(shè)L3 cache命中)即用數(shù)據(jù)A替換數(shù)據(jù)E,此時cacheline5對應(yīng)的upper位為O0
[0060]再進(jìn)行LI cache的替換時,若選擇cache line2進(jìn)行替換即用數(shù)據(jù)A替換數(shù)據(jù)C,則將LI cache中被替換的cache line2(存儲有數(shù)據(jù)C)在L2 cache中對應(yīng)的cache line3的upper位設(shè)置為O。同時,LI cache中替換后的cacheline2(存儲有數(shù)據(jù)A)在L2 cache中對應(yīng)的cache line5的upper位設(shè)置為I。
[0061]再進(jìn)行LI cache的替換時,若選擇cache Iinel進(jìn)行替換即用數(shù)據(jù)A替換數(shù)據(jù)B,則將LI cache中被替換的cache Iinel (存儲有數(shù)據(jù)B)在L2 cache中對應(yīng)的cache line(存儲有數(shù)據(jù)B,在另一個cache line組中)的upper位設(shè)置為O。同時,LI cache中替換后的cache Iinel (存儲有數(shù)據(jù)A)在L2 cache中對應(yīng)的cache line5的upper位設(shè)置為I?;蛘哌€可以進(jìn)行簡化處理,即應(yīng)用數(shù)據(jù)A替換L2 cache中對應(yīng)的cache line5時,由于L2cache未命中,LI cache必然也未命中,因此可以先直接將L2 cache中對應(yīng)的cache line5的upper位設(shè)置為1,然后再對用數(shù)據(jù)A替換LI cache中cache Iinel的數(shù)據(jù)B。此簡化處理流程同樣適用于L2 cache未命中、且cache index指向L2 cache中的各cache line的upper位均設(shè)置為I等其他情形。
[0062]在上述實施例中,假設(shè)cache Iinel存儲有數(shù)據(jù)B ;cache line2存儲有數(shù)據(jù)C ;cache line3存儲有數(shù)據(jù)A,對應(yīng)的upper位為O ;ache line4存儲有數(shù)據(jù)B,對應(yīng)的upper位為I ;cache Iine5存儲有數(shù)據(jù)C,對應(yīng)的upper位為I。請求訪問數(shù)據(jù)A的過程中,LIcache未命中,但L2 cache命中,此時要進(jìn)行Llcache的替換,若選擇cache Iinel進(jìn)行替換,則需要將cache line4的upper位置為O,并將cache line3的upper位置為I。本發(fā)明實施例提供的cache塊的替換處理方法中,通過為除了 LI cache之外的cache中各cacheline增加一個標(biāo)志位來指示其內(nèi)的數(shù)據(jù)是否存在于上級cache中,并在進(jìn)行cache line替換過程中,盡可能選擇標(biāo)志位處于復(fù)位狀態(tài)的cache line,以減少上級cache中含有的cache line在本級cache被替換出去的情況,進(jìn)而減少了上級cache的cache line被替換造成的開銷;而且還能夠提高cache的命中率,減少存儲器訪問時延。
[0063]圖6為本發(fā)明實施例cache中cache塊的替換處理裝置結(jié)構(gòu)示意圖,如圖6所示,該裝置包括接收模塊61和處理模塊62,其中,接收模塊61用于接收數(shù)據(jù)訪問請求。處理模塊62用于在根據(jù)接收到的數(shù)據(jù)訪問請求對本級cache進(jìn)行數(shù)據(jù)訪問的過程中,若未命中、且在所述本級cache內(nèi)多個待替換的cache塊中存在標(biāo)志位為復(fù)位狀態(tài)的cache塊,則在所述標(biāo)志位為復(fù)位狀態(tài)的cache塊中選擇一目標(biāo)cache塊進(jìn)行替換;所述標(biāo)志位包括復(fù)位狀態(tài)和置位狀態(tài),所述標(biāo)志位用于表示所述cache塊中的數(shù)據(jù)是否存在于所述本級cache對應(yīng)的上級cache中,所述置位狀態(tài)表示存在,所述復(fù)位狀態(tài)表示不存在。
[0064]本發(fā)明實施例提供的處理裝置,通過為除了 LI cache之外的cache中各cacheline增加一個標(biāo)志位來指示其內(nèi)的數(shù)據(jù)是否存在于上級cache中,并在進(jìn)行cache line替換過程中,盡可能選擇標(biāo)志位處于復(fù)位狀態(tài)的cache line,以減少上級cache中含有的cache line在本級cache被替換出去的情況,進(jìn)而減少了上級cache的cache line被替換造成的開銷;而且還能夠提高cache的命中率,減少存儲器訪問時延。
[0065]上述裝置實施例中,處理模塊62還用于,若所述本級cache內(nèi)多個待替換的cache塊中包括沒有存儲數(shù)據(jù)的cache塊,則優(yōu)先選擇沒有存儲數(shù)據(jù)的cache塊作為目標(biāo)cache塊進(jìn)行替換。
[0066]處理模塊62還用于:在進(jìn)行cache初始化時,將各cache塊的標(biāo)志位設(shè)置為復(fù)位狀態(tài);或,cache塊內(nèi)的數(shù)據(jù)被刪除后,將所述cache塊的標(biāo)志位設(shè)置為復(fù)位狀態(tài);或,所述上級cache中一 cache塊內(nèi)的數(shù)據(jù)被替換后,若所述本級cache僅存在一個上級cache,或者存在多個上級cache、且其他上級cache內(nèi)不包括被替換的數(shù)據(jù),則將被替換的cache塊在所述本級cache中對應(yīng)的cache塊的標(biāo)志位設(shè)置為復(fù)位狀態(tài);或,所述上級cache中一cache塊內(nèi)的數(shù)據(jù)被替換后,若所述本級cache存在多個上級cache、且其他上級cache內(nèi)包括被替換的數(shù)據(jù),則維持所述本級cache中對應(yīng)的cache塊的標(biāo)志位為置位狀態(tài);或,所述上級cache中一 cache塊內(nèi)的數(shù)據(jù)被替換后,將替換后的所述cache塊在所述本級cache中所對應(yīng)的cache塊的標(biāo)志位設(shè)置為置位狀態(tài)。[0067]處理模塊62還用于,若在本級cache內(nèi)多個待替換的cache塊的標(biāo)志位均為置位狀態(tài),則按照預(yù)設(shè)算法選擇一個目標(biāo)cache塊進(jìn)行替換,并在進(jìn)行完替換后,將所述目標(biāo)cache塊的標(biāo)志位設(shè)置為復(fù)位狀態(tài);并在上級cache進(jìn)行完cache塊的替換處理后,再將所述目標(biāo)cache塊的標(biāo)志位設(shè)置為置位狀態(tài);或若在本級cache內(nèi)多個待替換的cache塊的標(biāo)志位均為置位狀態(tài),則按照預(yù)設(shè)算法選擇一個目標(biāo)cache塊進(jìn)行替換,并在進(jìn)行完替換后,直接將所述目標(biāo)cache塊的標(biāo)志位設(shè)置為置位狀態(tài);再進(jìn)行上級cache的cache塊的替換處理;或在所述標(biāo)志位為復(fù)位狀態(tài)的cache塊中選擇一目標(biāo)cache塊進(jìn)行替換完成后,將所述目標(biāo)cache塊的標(biāo)志位設(shè)置為復(fù)位狀態(tài);并在上級cache進(jìn)行完cache塊的替換處理后,再將所述目標(biāo)cache塊的標(biāo)志位設(shè)置為置位狀態(tài);或,在所述標(biāo)志位為復(fù)位狀態(tài)的cache塊中選擇一目標(biāo)cache塊進(jìn)行替換完成后,直接將所述目標(biāo)cache塊的標(biāo)志位設(shè)置為置位狀態(tài);再進(jìn)行上級cache的cache塊的替換處理。
[0068]本發(fā)明實施例還提供一種cache中cache塊的替換處理裝置,包括一處理器,該處理器用于完成以下功能:在根據(jù)接收到的數(shù)據(jù)訪問請求對本級cache進(jìn)行數(shù)據(jù)訪問的過程中,若未命中、且在所述本級cache內(nèi)多個待替換的cache塊中存在標(biāo)志位為復(fù)位狀態(tài)的cache塊,則在所述標(biāo)志位為復(fù)位狀態(tài)的cache塊中選擇一目標(biāo)cache塊進(jìn)行替換。其中,所述標(biāo)志位包括復(fù)位狀態(tài)和置位狀態(tài),所述標(biāo)志位用于表示所述cache塊中的數(shù)據(jù)是否存在于所述本級cache對應(yīng)的上級cache中,所述置位狀態(tài)表示存在,所述復(fù)位狀態(tài)表示不存在。
[0069]處理器完成的功能還可以包括若所述本級cache內(nèi)多個待替換的cache塊中包括沒有存儲數(shù)據(jù)的cache塊,則優(yōu)先選擇沒有存儲數(shù)據(jù)的cache塊作為目標(biāo)cache塊進(jìn)行替換。
[0070]還有,在進(jìn)行cache初始化時,將各cache塊的標(biāo)志位設(shè)置為復(fù)位狀態(tài);或,cache塊內(nèi)的數(shù)據(jù)被刪除后,將所述cache塊的標(biāo)志位設(shè)置為復(fù)位狀態(tài);或,所述上級cache中一cache塊內(nèi)的數(shù)據(jù)被替換后,若所述本級cache僅存在一個上級cache,或者存在多個上級cache、且其他上級cache內(nèi)不包括被替換的數(shù)據(jù),則將被替換的cache塊在所述本級cache中對應(yīng)的cache塊的標(biāo)志位設(shè)置為復(fù)位狀態(tài);或,所述上級cache中一 cache塊內(nèi)的數(shù)據(jù)被替換后,若所述本級cache存在多個上級cache、且其他上級cache內(nèi)包括被替換的數(shù)據(jù),則維持所述本級cache中對應(yīng)的cache塊的標(biāo)志位為置位狀態(tài);或,所述上級cache中一cache塊內(nèi)的數(shù)據(jù)被替換后,將替換后的所述cache塊在所述本級cache中所對應(yīng)的cache塊的標(biāo)志位設(shè)置為置位狀態(tài)。
[0071]還有,若在本級cache內(nèi)多個待替換的cache塊的標(biāo)志位均為置位狀態(tài),則按照預(yù)設(shè)算法選擇一個目標(biāo)cache塊進(jìn)行替換,并在進(jìn)行完替換后,將所述目標(biāo)cache塊的標(biāo)志位設(shè)置為復(fù)位狀態(tài)。
[0072]本發(fā)明實施例提供的處理裝置,通過為除了 LI cache之外的cache中各cacheline增加一個標(biāo)志位來指示其內(nèi)的數(shù)據(jù)是否存在于上級cache中,并在進(jìn)行cache line替換過程中,盡可能選擇標(biāo)志位處于復(fù)位狀態(tài)的cache line,以減少上級cache中含有的cache line在本級cache被替換出去的情況,進(jìn)而減少了上級cache的cache line被替換造成的開銷;而且還能夠提高cache的命中率,減少存儲器訪問時延。
[0073]在本發(fā)明所提供的幾個實施例中,應(yīng)該理解到,所揭露的裝置和方法,可以通過其它的方式實現(xiàn)。例如,以上所描述的裝置實施例僅僅是示意性的,例如,所述單元的劃分,僅僅為一種邏輯功能劃分,實際實現(xiàn)時可以有另外的劃分方式,例如多個單元或組件可以結(jié)合或者可以集成到另一個系統(tǒng),或一些特征可以忽略,或不執(zhí)行。另一點,所顯示或討論的相互之間的耦合或直接耦合或通信連接可以是通過一些接口,裝置或單元的間接耦合或通信連接,可以是電性,機(jī)械或其它的形式。
[0074]所述作為分離部件說明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個地方,或者也可以分布到多個網(wǎng)絡(luò)單元上??梢愿鶕?jù)實際的需要選擇其中的部分或者全部單元來實現(xiàn)本實施例方案的目的。
[0075]另外,在本發(fā)明各個實施例中的各功能單元可以集成在一個處理單元中,也可以是各個單元單獨物理存在,也可以兩個或兩個以上單元集成在一個單元中。上述集成的單元既可以采用硬件的形式實現(xiàn),也可以采用硬件加軟件功能單元的形式實現(xiàn)。
[0076]上述以軟件功能單元的形式實現(xiàn)的集成的單元,可以存儲在一個計算機(jī)可讀取存儲介質(zhì)中。上述軟件功能單元存儲在一個存儲介質(zhì)中,包括若干指令用以使得一臺計算機(jī)設(shè)備(可以是個人計算機(jī),服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)或處理器(processor)執(zhí)行本發(fā)明各個實施例所述方法的部分步驟。而前述的存儲介質(zhì)包括:U盤、移動硬盤、只讀存儲器(Read-Only Memory, ROM)、隨機(jī)存取存儲器(Random Access Memory, RAM)、磁碟或者光盤等各種可以存儲程序代碼的介質(zhì)。
[0077]本領(lǐng)域技術(shù)人員可以清楚地了解到,為描述的方便和簡潔,僅以上述各功能模塊的劃分進(jìn)行舉例說明,實際應(yīng)用中,可以根據(jù)需要而將上述功能分配由不同的功能模塊完成,即將裝置的內(nèi)部結(jié)構(gòu)劃分成不同的功能模塊,以完成以上描述的全部或者部分功能。上述描述的裝置的具體工作過程,可以參考前述方法實施例中的對應(yīng)過程,在此不再贅述。
[0078]最后應(yīng)說明的是:以上各實施例僅用以說明本發(fā)明的技術(shù)方案,而非對其限制;盡管參照前述各實施例對本發(fā)明進(jìn)行了詳細(xì)的說明,本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解:其依然可以對前述各實施例所記載的技術(shù)方案進(jìn)行修改,或者對其中部分或者全部技術(shù)特征進(jìn)行等同替換;而這些修改或者替換,并不使相應(yīng)技術(shù)方案的本質(zhì)脫離本發(fā)明各實施例技術(shù)方案的范圍。
【權(quán)利要求】
1.一種高速緩沖存儲器cache中cache塊的替換處理方法,其特征在于,包括: 在根據(jù)接收到的數(shù)據(jù)訪問請求對本級cache進(jìn)行數(shù)據(jù)訪問的過程中,若未命中、且在所述本級cache內(nèi)多個待替換的cache塊中存在標(biāo)志位為復(fù)位狀態(tài)的cache塊,則在所述標(biāo)志位為復(fù)位狀態(tài)的cache塊中選擇一目標(biāo)cache塊進(jìn)行替換;所述標(biāo)志位包括復(fù)位狀態(tài)和置位狀態(tài),所述標(biāo)志位用于表示所述cache塊中的數(shù)據(jù)是否存在于所述本級cache對應(yīng)的上級cache中,所述置位狀態(tài)表示存在,所述復(fù)位狀態(tài)表示不存在。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述方法還包括: 若所述本級cache內(nèi)多個待替換的cache塊中包括沒有存儲數(shù)據(jù)的cache塊,則優(yōu)先選擇沒有存儲數(shù)據(jù)的cache塊作為目標(biāo)cache塊進(jìn)行替換。
3.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述方法還包括: 在進(jìn)行cache初始化時,將各cache塊的標(biāo)志位設(shè)置為復(fù)位狀態(tài); 或, cache塊內(nèi)的數(shù)據(jù)被刪除后,將所述cache塊的標(biāo)志位設(shè)置為復(fù)位狀態(tài); 或, 所述上級cache中一 cache塊內(nèi)的數(shù)據(jù)被替換后,若所述本級cache僅存在一個上級cache,或者存在多個上級cache、且其他上級cache內(nèi)不包括被替換的數(shù)據(jù),則將被替換的cache塊在所述本級cache中對應(yīng)的cache塊的標(biāo)志位設(shè)置為復(fù)位狀態(tài); 或, 所述上級cache中一 cache塊內(nèi)的 數(shù)據(jù)被替換后,若所述本級cache存在多個上級cache、且其他上級cache內(nèi)包括被替換的數(shù)據(jù),則維持所述本級cache中對應(yīng)的cache塊的標(biāo)志位為置位狀態(tài); 或 所述上級cache中一 cache塊內(nèi)的數(shù)據(jù)被替換后,將替換后的所述cache塊在所述本級cache中所對應(yīng)的cache塊的標(biāo)志位設(shè)置為置位狀態(tài)。
4.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述方法還包括: 若在本級cache內(nèi)多個待替換的cache塊的標(biāo)志位均為置位狀態(tài),則按照預(yù)設(shè)算法選擇一個目標(biāo)cache塊進(jìn)行替換,并在進(jìn)行完替換后,將所述目標(biāo)cache塊的標(biāo)志位設(shè)置為復(fù)位狀態(tài);并在上級cache進(jìn)行完cache塊的替換處理后,再將所述目標(biāo)cache塊的標(biāo)志位設(shè)置為置位狀態(tài); 或 若在本級cache內(nèi)多個待替換的cache塊的標(biāo)志位均為置位狀態(tài),則按照預(yù)設(shè)算法選擇一個目標(biāo)cache塊進(jìn)行替換,并在進(jìn)行完替換后,直接將所述目標(biāo)cache塊的標(biāo)志位設(shè)置為置位狀態(tài);再進(jìn)行上級cache的cache塊的替換處理; 或 在所述標(biāo)志位為復(fù)位狀態(tài)的cache塊中選擇一目標(biāo)cache塊進(jìn)行替換完成后,將所述目標(biāo)cache塊的標(biāo)志位設(shè)置為復(fù)位狀態(tài);并在上級cache進(jìn)行完cache塊的替換處理后,再將所述目標(biāo)cache塊的標(biāo)志位設(shè)置為置位狀態(tài); 或, 在所述標(biāo)志位為復(fù)位狀態(tài)的cache塊中選擇一目標(biāo)cache塊進(jìn)行替換完成后,直接將所述目標(biāo)cache塊的標(biāo)志位設(shè)置為置位狀態(tài);再進(jìn)行上級cache的cache塊的替換處理。
5.根據(jù)權(quán)利要求1至4任一所述的方法,其特征在于,所述本級cache中的各cache塊均各自設(shè)置有一個標(biāo)志位,或具有不同索引的多個cache塊共用一個標(biāo)志位。
6.根據(jù)權(quán)利要求1至4任一所述的方法,其特征在于,各所述cache塊與對應(yīng)的標(biāo)志位存儲在同一陣列中,或存儲不同陣列中。
7.一種高速緩沖存儲器cache中cache塊的替換處理裝置,其特征在于,包括: 接收模塊,用于接收數(shù)據(jù)訪問請求; 處理模塊,用于在根據(jù)接收到的數(shù)據(jù)訪問請求對本級cache進(jìn)行數(shù)據(jù)訪問的過程中,若未命中、且在所述本級cache內(nèi)多個待替換的cache塊中存在標(biāo)志位為復(fù)位狀態(tài)的cache塊,則在所述標(biāo)志位為復(fù)位狀態(tài)的cache塊中選擇一目標(biāo)cache塊進(jìn)行替換;所述標(biāo)志位包括復(fù)位狀態(tài)和置位狀態(tài),所述標(biāo)志位用于表示所述cache塊中的數(shù)據(jù)是否存在于所述本級cache對應(yīng)的上級cache中,所述置位狀態(tài)表示存在,所述復(fù)位狀態(tài)表示不存在。
8.根據(jù)權(quán)利要求7所述的裝置,其特征在于,所述處理模塊還用于: 若所述本級cache內(nèi)多個待替換的cache塊中包括沒有存儲數(shù)據(jù)的cache塊,則優(yōu)先選擇沒有存儲數(shù)據(jù)的cache塊作為目標(biāo)cache塊進(jìn)行替換。
9.根據(jù)權(quán)利要求7所述的裝置,其特征在于,所述處理模塊還用于: 在進(jìn)行cache初始化時,將各cache塊的標(biāo)志位設(shè)置為復(fù)位狀態(tài);或, cache塊內(nèi)的數(shù)據(jù)被刪除后,將所述cache塊的標(biāo)志位設(shè)置為復(fù)位狀態(tài);或, 所述上級cache中一 cache塊內(nèi)的 數(shù)據(jù)被替換后,若所述本級cache僅存在一個上級cache,或者存在多個上級cache、且其他上級cache內(nèi)不包括被替換的數(shù)據(jù),則將被替換的cache塊在所述本級cache中對應(yīng)的cache塊的標(biāo)志位設(shè)置為復(fù)位狀態(tài);或, 所述上級cache中一 cache塊內(nèi)的數(shù)據(jù)被替換后,若所述本級cache存在多個上級cache、且其他上級cache內(nèi)包括被替換的數(shù)據(jù),則維持所述本級cache中對應(yīng)的cache塊的標(biāo)志位為置位狀態(tài);或 所述上級cache中一 cache塊內(nèi)的數(shù)據(jù)被替換后,將替換后的所述cache塊在所述本級cache中所對應(yīng)的cache塊的標(biāo)志位設(shè)置為置位狀態(tài)。
10.根據(jù)權(quán)利要求7所述的裝置,其特征在于,所述處理模塊還用于: 若在本級cache內(nèi)多個待替換的cache塊的標(biāo)志位均為置位狀態(tài),則按照預(yù)設(shè)算法選擇一個目標(biāo)cache塊進(jìn)行替換,并在進(jìn)行完替換后,將所述目標(biāo)cache塊的標(biāo)志位設(shè)置為復(fù)位狀態(tài);并在上級cache進(jìn)行完cache塊的替換處理后,再將所述目標(biāo)cache塊的標(biāo)志位設(shè)置為置位狀態(tài); 或 若在本級cache內(nèi)多個待替換的cache塊的標(biāo)志位均為置位狀態(tài),則按照預(yù)設(shè)算法選擇一個目標(biāo)cache塊進(jìn)行替換,并在進(jìn)行完替換后,直接將所述目標(biāo)cache塊的標(biāo)志位設(shè)置為置位狀態(tài);再進(jìn)行上級cache的cache塊的替換處理; 或 在所述標(biāo)志位為復(fù)位狀態(tài)的cache塊中選擇一目標(biāo)cache塊進(jìn)行替換完成后,將所述目標(biāo)cache塊的標(biāo)志位設(shè)置為復(fù)位狀態(tài);并在上級cache進(jìn)行完cache塊的替換處理后,再將所述目標(biāo)cache塊的標(biāo)志位設(shè)置為置位狀態(tài);或,在所述標(biāo)志位為復(fù)位狀態(tài)的cache塊中選擇一目標(biāo)cache塊進(jìn)行替換完成后,直接將所述目標(biāo)cache塊的標(biāo)志位設(shè)置 為置位狀態(tài);再進(jìn)行上級cache的cache塊的替換處理。
【文檔編號】G06F12/08GK103885890SQ201210562433
【公開日】2014年6月25日 申請日期:2012年12月21日 優(yōu)先權(quán)日:2012年12月21日
【發(fā)明者】劉月吉, 張立新, 侯銳, 李曄 申請人:華為技術(shù)有限公司, 中國科學(xué)院計算技術(shù)研究所
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
南靖县| 汕头市| 太白县| 郧西县| 卢龙县| 乐陵市| 松滋市| 如皋市| 宁海县| 张家口市| 巨鹿县| 太白县| 浦城县| 高尔夫| 大厂| 密山市| 东莞市| 潜山县| 乡宁县| 昌图县| 彩票| 靖边县| 阳东县| 全南县| 溧水县| 化隆| 崇州市| 三门峡市| 台安县| 甘泉县| 伊吾县| 阿拉善右旗| 西平县| 乐平市| 收藏| 荆州市| 温州市| 友谊县| 阳山县| 靖安县| 眉山市|