本發(fā)明涉及緩存設(shè)計(jì)技術(shù)領(lǐng)域,具體涉及一種緩存的模擬方法及裝置。
背景技術(shù):
嵌入式片上系統(tǒng)(systemonchip,soc)中,一般采用eeprom或閃存(flash)等非易失性存儲(chǔ)器(non-volatilememory,nvm)作為存儲(chǔ)指令的存儲(chǔ)器。微處理器(mcu)通過讀取nvm中的指令并執(zhí)行,完成系統(tǒng)設(shè)計(jì)、運(yùn)行等功能。
通常情況下,mcu執(zhí)行的速度比nvm的讀取速度快得多,導(dǎo)致mcu經(jīng)常處于讀取指令的等待狀態(tài),這使得讀取指令的速度成為片上系統(tǒng)、尤其是高性能片上存儲(chǔ)系統(tǒng)的瓶頸。
在系統(tǒng)設(shè)計(jì)中,解決這一技術(shù)問題的主流方案是采用指令緩存(instructioncache,簡稱cache)。通過在cache內(nèi)存儲(chǔ)mcu頻繁訪問的數(shù)據(jù)及這些數(shù)據(jù)的存儲(chǔ)地址,當(dāng)mcu引用nvm中的某地址時(shí),cache便先檢查是否存有該地址。若存有該地址,則將對應(yīng)的指令返回mcu,否則mcu從nvm中獲取對應(yīng)的指令。
由于cache的讀取速度比nvm快得多,因此,當(dāng)訪問的數(shù)據(jù)在cache中找到,即命中時(shí),mcu可以直接從cache中讀取對應(yīng)的數(shù)據(jù),而無需訪問速度較慢的nvm。如果cache的命中率足夠高,mcu近似于直接從ram中讀取指令,因而整體讀取速度可以大大提高。
在實(shí)際應(yīng)用中,嵌入式soc的應(yīng)用需求多種多樣,如何根據(jù)特定的應(yīng)用需求,選擇最合適的cache結(jié)構(gòu)和參數(shù),是嵌入式soc設(shè)計(jì)者面臨的一個(gè)很大挑戰(zhàn)。為此,在嵌入式soc的cache設(shè)計(jì)中,通常需要對所設(shè)計(jì)的緩存進(jìn)行模擬,用于評估不同的結(jié)構(gòu)和參數(shù)對最終cache性能的影響。
然而,利用現(xiàn)有的cache模擬方法進(jìn)行cache性能評估時(shí),根據(jù)模擬過程僅能得到cache的命中率,而cache的命中率不能反映cache真實(shí)性能,最終導(dǎo)致cache性能評估的準(zhǔn)確性較低。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明解決的技術(shù)問題是利用現(xiàn)有緩存的模擬方法進(jìn)行cache性能評估的準(zhǔn)確性較低。
為解決上述技術(shù)問題,本發(fā)明實(shí)施例提供一種緩存的模擬方法,所述方法包括:
當(dāng)接收到訪問緩存請求時(shí),從所述訪問緩存請求中提取待訪問的數(shù)據(jù)的存儲(chǔ)地址;當(dāng)獲取到待模擬的緩存的配置參數(shù)時(shí),對所述存儲(chǔ)地址進(jìn)行劃分,獲得所述存儲(chǔ)地址對應(yīng)的緩存塊的地址信息,所述待模擬的緩存的配置參數(shù)適于基于所述待模擬的緩存的應(yīng)用需求進(jìn)行配置;根據(jù)所述存儲(chǔ)地址對應(yīng)的緩存塊的地址信息,搜索第一存儲(chǔ)區(qū),所述第一存儲(chǔ)區(qū)適于存儲(chǔ)存儲(chǔ)地址的標(biāo)識(shí)信息以及對應(yīng)的使用頻度信息,所述第一存儲(chǔ)區(qū)所存儲(chǔ)的存儲(chǔ)地址的使用頻度均大于預(yù)設(shè)頻度;根據(jù)搜索結(jié)果判斷所述存儲(chǔ)地址在所述第一存儲(chǔ)區(qū)中是否命中;根據(jù)所述存儲(chǔ)地址在所述第一存儲(chǔ)區(qū)中是否命中的判斷結(jié)果,獲取相應(yīng)的數(shù)據(jù)并返回。
可選地,所述根據(jù)所述存儲(chǔ)地址在所述第一存儲(chǔ)區(qū)中是否命中的判斷結(jié)果,獲取相應(yīng)的數(shù)據(jù)并返回,包括:
當(dāng)所述存儲(chǔ)地址在所述第一存儲(chǔ)區(qū)中命中時(shí),更新所述第一存儲(chǔ)區(qū)中存儲(chǔ)的信息,以及從第二存儲(chǔ)區(qū)中讀取對應(yīng)數(shù)據(jù)并返回,其中,所述第二存儲(chǔ)區(qū)適于存儲(chǔ)與所述第一存儲(chǔ)區(qū)所存儲(chǔ)的存儲(chǔ)地址對應(yīng)的數(shù)據(jù)。
可選地,所述根據(jù)所述存儲(chǔ)地址在所述第一存儲(chǔ)區(qū)中是否命中的判斷結(jié)果,獲取相應(yīng)的數(shù)據(jù)并返回,包括:
當(dāng)所述存儲(chǔ)地址在所述第一存儲(chǔ)區(qū)中未命中時(shí),根據(jù)所述緩存塊的地址信息搜索第三存儲(chǔ)區(qū)中存儲(chǔ)的信息,所述第三存儲(chǔ)區(qū)適于存儲(chǔ)預(yù)取的數(shù)據(jù)及對應(yīng)的緩存塊的地址信息;根據(jù)搜索結(jié)果判斷所述存儲(chǔ)地址在所述第三存儲(chǔ)區(qū)中是否命中;根據(jù)所述存儲(chǔ)地址在所述第三存儲(chǔ)區(qū)中是否命中的判斷結(jié)果, 獲取相應(yīng)的數(shù)據(jù)并返回。
可選地,所述根據(jù)所述存儲(chǔ)地址在所述第三存儲(chǔ)區(qū)中是否命中的判斷結(jié)果,獲取相應(yīng)的數(shù)據(jù)并返回,包括:
當(dāng)所述存儲(chǔ)地址在所述第三存儲(chǔ)區(qū)中命中時(shí),更新所述第一存儲(chǔ)區(qū)及第二存儲(chǔ)區(qū)中存儲(chǔ)的信息,從所述第三存儲(chǔ)區(qū)中讀取對應(yīng)的數(shù)據(jù)并返回;按照預(yù)設(shè)順序從nvm中進(jìn)行數(shù)據(jù)預(yù)取,并將預(yù)取到的數(shù)據(jù)存儲(chǔ)在所述第三存儲(chǔ)區(qū)中;當(dāng)所述存儲(chǔ)地址在所述第三存儲(chǔ)區(qū)中未命中時(shí),從所述nvm中讀取對應(yīng)的數(shù)據(jù)并返回,以及更新所述第三存儲(chǔ)區(qū)中存儲(chǔ)的信息。
可選地,當(dāng)所述第一存儲(chǔ)區(qū)的對應(yīng)位置處均已存儲(chǔ)相應(yīng)的信息時(shí),所述更新所述第一存儲(chǔ)區(qū)包括:
根據(jù)所述第一存儲(chǔ)器中各緩存塊的使用頻度信息,按照預(yù)先獲取到的替換算法,對所述第一存儲(chǔ)區(qū)的緩存塊進(jìn)行替換,將在所述第三存儲(chǔ)區(qū)中命中的緩存塊的標(biāo)識(shí)信息以及對應(yīng)的使用頻度信息寫入至被替換的位置。
可選地,在所述根據(jù)所述存儲(chǔ)地址對應(yīng)的緩存塊的地址信息,搜索第一存儲(chǔ)區(qū)之前,所述方法還包括:
根據(jù)所述存儲(chǔ)地址對應(yīng)的緩存塊的地址信息搜索第四存儲(chǔ)區(qū),所述第四存儲(chǔ)區(qū)適于存儲(chǔ)前一次在所述第一存儲(chǔ)區(qū)中命中時(shí)所對應(yīng)的緩存塊的地址信息;并根據(jù)搜索結(jié)果判斷所述存儲(chǔ)地址在所述第四存儲(chǔ)區(qū)中是否命中;當(dāng)所述存儲(chǔ)地址在所述第四存儲(chǔ)區(qū)中命中時(shí),從所述第二存儲(chǔ)區(qū)中讀取對應(yīng)的數(shù)據(jù)并返回,否則搜索所述第一存儲(chǔ)區(qū)。
可選地,所述緩存塊的地址信息包括:所述緩存塊的標(biāo)識(shí)信息及地址索引信息。
可選地,所述待模擬的緩存的配置參數(shù)包括:所述待模擬的緩存的特征參數(shù)以及影響所述待模擬的緩存性能的系統(tǒng)參數(shù)。
本發(fā)明實(shí)施例還提供了一種緩存的模擬裝置,所述裝置包括:
提取單元,適于當(dāng)接收到訪問緩存請求時(shí),從所述訪問緩存請求中提取待訪問的數(shù)據(jù)的存儲(chǔ)地址;地址劃分單元,適于當(dāng)獲取到待模擬的緩存的配 置參數(shù)時(shí),對所述存儲(chǔ)地址進(jìn)行劃分,獲得所述存儲(chǔ)地址對應(yīng)的緩存塊的地址信息,所述待模擬的緩存的配置參數(shù)適于基于所述待模擬的緩存的應(yīng)用需求進(jìn)行配置;存儲(chǔ)單元,包括第一存儲(chǔ)區(qū),所述第一存儲(chǔ)區(qū)適于存儲(chǔ)存儲(chǔ)地址的標(biāo)識(shí)信息以及對應(yīng)的使用頻度信息,所述第一存儲(chǔ)區(qū)所存儲(chǔ)的存儲(chǔ)地址的使用頻度均大于預(yù)設(shè)頻度;第一處理單元,適于根據(jù)所述存儲(chǔ)地址對應(yīng)的緩存塊的地址信息,搜索所述第一存儲(chǔ)區(qū);根據(jù)搜索結(jié)果判斷所述存儲(chǔ)地址在所述第一存儲(chǔ)區(qū)中是否命中;第一執(zhí)行單元,適于根據(jù)所述存儲(chǔ)地址在所述第一存儲(chǔ)區(qū)中是否命中的判斷結(jié)果,獲取相應(yīng)的數(shù)據(jù)并返回。
可選地,所述存儲(chǔ)單元還包括:第二存儲(chǔ)區(qū),適于存儲(chǔ)與所述第一存儲(chǔ)區(qū)所存儲(chǔ)的存儲(chǔ)地址對應(yīng)的數(shù)據(jù);
所述第一執(zhí)行單元包括:第一執(zhí)行子單元,適于更新所述第一存儲(chǔ)區(qū)中存儲(chǔ)的信息,以及從所述第二存儲(chǔ)區(qū)中讀取對應(yīng)數(shù)據(jù)并返回。
可選地,所述存儲(chǔ)單元還包括:第三存儲(chǔ)區(qū),適于存儲(chǔ)預(yù)取的數(shù)據(jù)及對應(yīng)的緩存塊的地址信息;
所述第一執(zhí)行單元包括:第一處理子單元以及第二執(zhí)行子單元,所述第一處理子單元適于當(dāng)所述存儲(chǔ)地址在所述第一存儲(chǔ)區(qū)中未命中時(shí),根據(jù)所述緩存塊的地址信息搜索所述第三存儲(chǔ)區(qū)中存儲(chǔ)的信息;根據(jù)搜索結(jié)果判斷所述存儲(chǔ)地址在所述第三存儲(chǔ)區(qū)中是否命中;所述第二執(zhí)行子單元,適于根據(jù)所述存儲(chǔ)地址在所述第三存儲(chǔ)區(qū)中是否命中的判斷結(jié)果,獲取相應(yīng)的數(shù)據(jù)并返回。
可選地,所述第二執(zhí)行子單元包括:
第一執(zhí)行模塊,適于當(dāng)所述存儲(chǔ)地址在所述第三存儲(chǔ)區(qū)中命中時(shí),更新所述第一存儲(chǔ)區(qū)及第二存儲(chǔ)區(qū)中存儲(chǔ)的信息,從所述第三存儲(chǔ)區(qū)中讀取對應(yīng)的數(shù)據(jù)并返回;按照預(yù)設(shè)順序從nvm中進(jìn)行數(shù)據(jù)預(yù)取,并將預(yù)取到的數(shù)據(jù)存儲(chǔ)在所述第三存儲(chǔ)區(qū)中;第二執(zhí)行模塊,適于當(dāng)所述存儲(chǔ)地址在所述第三存儲(chǔ)區(qū)中未命中時(shí),從所述nvm中讀取對應(yīng)的數(shù)據(jù)并返回,以及更新所述第三存儲(chǔ)區(qū)中存儲(chǔ)的信息。
可選地,所述第二執(zhí)行模塊適于當(dāng)所述第一存儲(chǔ)區(qū)的對應(yīng)位置處均已存 儲(chǔ)相應(yīng)的信息時(shí),采用如下步驟更新所述第一存儲(chǔ)區(qū):根據(jù)所述第一存儲(chǔ)區(qū)中各緩存塊的使用頻度信息,按照預(yù)先獲取到的替換算法,對所述第一存儲(chǔ)區(qū)的緩存塊進(jìn)行替換,將在所述第三存儲(chǔ)區(qū)中命中的緩存塊的標(biāo)識(shí)信息以及對應(yīng)的使用頻度信息寫入至被替換的位置。
可選地,所述存儲(chǔ)單元還包括:第四存儲(chǔ)區(qū),適于存儲(chǔ)前一次在所述第一存儲(chǔ)區(qū)中命中時(shí)所對應(yīng)的緩存塊的地址信息;
所述裝置還包括:第二處理單元及第二執(zhí)行單元,其中:
所述第二處理單元,適于在所述根據(jù)所述存儲(chǔ)地址對應(yīng)的緩存塊的地址信息,搜索第一存儲(chǔ)區(qū)之前,根據(jù)所述存儲(chǔ)地址對應(yīng)的緩存塊的地址信息搜索所述第四存儲(chǔ)區(qū),判斷所述存儲(chǔ)地址在所述第四存儲(chǔ)區(qū)中是否命中;所述第二執(zhí)行單元,適于當(dāng)所述存儲(chǔ)地址在所述第四存儲(chǔ)區(qū)中命中時(shí),從所述第二存儲(chǔ)區(qū)中讀取對應(yīng)的數(shù)據(jù)并返回;所述第一處理單元適于當(dāng)所述存儲(chǔ)地址在所述第四存儲(chǔ)區(qū)中未命中時(shí),搜索所述第一存儲(chǔ)區(qū),并根據(jù)搜索結(jié)果判斷所述存儲(chǔ)地址在所述第一存儲(chǔ)區(qū)中是否命中。
可選地,所述緩存塊的地址信息包括:所述緩存塊的標(biāo)識(shí)信息及地址索引信息。
可選地,所述待模擬的緩存的配置參數(shù)包括:所述待模擬的緩存的特征參數(shù)以及影響所述待模擬的緩存性能的系統(tǒng)參數(shù)。
與現(xiàn)有技術(shù)相比,本發(fā)明實(shí)施例的技術(shù)方案具有以下有益效果:
在獲取到待模擬的緩存的配置參數(shù)時(shí),通過對訪問緩存請求中待訪問的數(shù)據(jù)的存儲(chǔ)地址進(jìn)行劃分,獲得存儲(chǔ)地址對應(yīng)的緩存塊的地址信息,進(jìn)而可以根據(jù)所述存儲(chǔ)地址對應(yīng)的緩存塊的地址信息搜索第一存儲(chǔ)區(qū),最終根據(jù)所述存儲(chǔ)地址在所述第一存儲(chǔ)區(qū)中是否命中的判斷結(jié)果,獲取相應(yīng)的數(shù)據(jù)并返回。采用上述模擬方法進(jìn)行緩存性能評估時(shí),可以計(jì)算得到所模擬的各個(gè)緩存的平均訪存時(shí)間,進(jìn)而根據(jù)緩存的平均訪存時(shí)間評估該緩存的性能。相對于緩存的命中率,緩存的平均訪存時(shí)間更能反映緩存的真實(shí)加速效果,因此利用上述緩存模擬方法進(jìn)行緩存性能評估的準(zhǔn)確性也就更高。
附圖說明
圖1是本發(fā)明實(shí)施例中一種緩存模擬方法流程圖;
圖2是本發(fā)明實(shí)施例中一種緩存模擬過程的原理示意圖;
圖3是本發(fā)明實(shí)施例中一種緩存模擬裝置的結(jié)構(gòu)示意圖;
圖4是本發(fā)明實(shí)施例中另一種緩存模擬方法流程圖;
圖5是本發(fā)明實(shí)施例中另一種緩存模擬過程的原理示意圖;
圖6是本發(fā)明實(shí)施例中另一種緩存模擬裝置的結(jié)構(gòu)示意圖。
具體實(shí)施方式
在實(shí)際應(yīng)用中,嵌入式soc的應(yīng)用場景各種各樣,各種應(yīng)用場景的特點(diǎn)都不盡相同,特定結(jié)構(gòu)的cache很難保證在不同的應(yīng)用場景之間具有通用性。另外,嵌入式soc的設(shè)計(jì)不僅需要考慮系統(tǒng)的性能,系統(tǒng)的功耗、面積和成本也是設(shè)計(jì)者需要考慮的問題。因此,在嵌入式soc的cache設(shè)計(jì)中,通常需要對所設(shè)計(jì)的cache進(jìn)行模擬,用于評估不同的應(yīng)用需求下,各種結(jié)構(gòu)和參數(shù)對最終cache加速效果的影響。
然而,在利用現(xiàn)有的cache模擬方法進(jìn)行cache性能評估時(shí),根據(jù)模擬過程僅能得到cache的命中率,而cache的命中率不能反映cache真實(shí)加速效果,最終導(dǎo)致cache性能評估的準(zhǔn)確性較低。
針對上述問題,本發(fā)明實(shí)施例提供了一種緩存的模擬方法,所述方法可以在獲取到待模擬的緩存的配置參數(shù)時(shí),通過對訪問緩存請求中待訪問的數(shù)據(jù)的存儲(chǔ)地址進(jìn)行劃分,獲得存儲(chǔ)地址對應(yīng)的緩存塊的地址信息,進(jìn)而可以根據(jù)所述存儲(chǔ)地址對應(yīng)的緩存塊的地址信息搜索第一存儲(chǔ)區(qū),最終根據(jù)所述存儲(chǔ)地址在所述第一存儲(chǔ)區(qū)中是否命中的判斷結(jié)果,獲取相應(yīng)的數(shù)據(jù)并返回。采用上述模擬方法進(jìn)行緩存性能評估時(shí),可以計(jì)算得到所模擬的各個(gè)緩存的平均訪存時(shí)間,進(jìn)而根據(jù)緩存的平均訪存時(shí)間評估該緩存的性能。相對于緩存的命中率,緩存的平均訪存時(shí)間更能反映緩存的真實(shí)加速效果,因此利用上述緩存模擬方法進(jìn)行緩存性能評估的準(zhǔn)確性也就更高。
為使本發(fā)明的上述目的、特征和有益效果能夠更為明顯易懂,下面結(jié)合附圖對本發(fā)明的具體實(shí)施例做詳細(xì)的說明。
參照圖1,本發(fā)明實(shí)施例提供了一種緩存的模擬方法,所述方法可以包括如下步驟:
步驟101,判斷是否接收到訪問緩存請求。
在設(shè)置有cache的嵌入式soc中,mcu在訪問相應(yīng)的數(shù)據(jù)時(shí),向cache發(fā)送相應(yīng)的訪問緩存請求,由cache根據(jù)所述訪問緩存請求獲取相應(yīng)的數(shù)據(jù),再將所獲取到的數(shù)據(jù)返回至mcu。因此,在模擬緩存的工作流程時(shí),通常先要接收到mcu的訪問緩存請求。
當(dāng)接收到所述訪問緩存請求時(shí),執(zhí)行步驟102,否則繼續(xù)執(zhí)行步驟101。
步驟102,從所述訪問緩存請求中提取待訪問的數(shù)據(jù)的存儲(chǔ)地址。
在具體實(shí)施中,所述訪問緩存請求中通常包含待訪問數(shù)據(jù)的存儲(chǔ)地址。其中,所述存儲(chǔ)地址為所述待訪問的數(shù)據(jù)在nvm中的存儲(chǔ)地址。
步驟103,獲取待模擬的緩存的配置參數(shù)。
在具體實(shí)施中,所述配置參數(shù)既包含所述待模擬的cache的特征參數(shù),又包含可以影響所述待模擬的cache性能的系統(tǒng)參數(shù)。其中,所述待模擬的cache的特征參數(shù)可以包括:所述待模擬的cache的容量、cache塊的大小,cache相聯(lián)度以及替換算法等參數(shù)。影響所述待模擬的cache性能的系統(tǒng)參數(shù)可以包括:nvm、cache及mcu三者的讀取時(shí)間、讀取功耗及數(shù)據(jù)位寬等。當(dāng)然,所述配置參數(shù)還可以包括其他參數(shù),并不局限于上述實(shí)施例所給出的參數(shù)。并且,所獲取到的配置參數(shù)中可以僅包含一個(gè)參數(shù),也可以包含兩個(gè)或兩個(gè)以上的參數(shù)。
在具體實(shí)施中,所述配置參數(shù)適于基于所述待模擬的cache的應(yīng)用需求進(jìn)行配置。也就是說,所獲取到的配置參數(shù)與所述待模擬的cache的應(yīng)用需求相對應(yīng)。所述待模擬的cache的應(yīng)用需求不同,所獲取到的配置參數(shù)也就不同。例如,當(dāng)所述待模擬的cache應(yīng)用在aes加密算法中時(shí),所述配置參數(shù)可以為:cache容量2kbyte,cache塊大小16byte,cache相聯(lián)度2,最近最少使用(lru)替換算法等。當(dāng)所述待模擬的cache應(yīng)用在dhrystone程序下時(shí),所述配置參數(shù)可以為:cache容量512byte,cache塊大小16byte,cache相聯(lián)度1等。
在具體實(shí)施中,所述配置參數(shù)的參數(shù)可以通過多種方式進(jìn)行獲取,比如,所述配置參數(shù)可以是用戶輸入的,也可以是通過訪問其它存儲(chǔ)介質(zhì)獲取到的。當(dāng)然,還可以存在其它獲取方式,只要所獲取到的配置參數(shù)與具體的應(yīng)用需求相對應(yīng)即可。
步驟104,對所述存儲(chǔ)地址進(jìn)行劃分,獲得所述存儲(chǔ)地址對應(yīng)的緩存塊的地址信息。
在設(shè)置有cache的嵌入式soc中,cache通常包括若干個(gè)cache塊,每個(gè)cache塊的大小相等。相似地,所述待模擬的緩存也設(shè)置有若干個(gè)緩存塊,每個(gè)緩存塊的大小相等。每個(gè)存儲(chǔ)地址對應(yīng)一緩存塊。所述存儲(chǔ)地址通常為所對應(yīng)的緩存塊的起始地址信息。
在具體實(shí)施中,對所述存儲(chǔ)地址進(jìn)行劃分時(shí),通??梢垣@得如下三部分信息:所述存儲(chǔ)地址對應(yīng)的cache塊的標(biāo)識(shí)信息和地址索引信息,以及所述存儲(chǔ)地址在所述cache塊中的偏移信息。其中,所述cache塊的標(biāo)識(shí)信息和地址索引信息,作為所述cache塊地址信息。
具體地,所述cache塊的標(biāo)識(shí)信息可以唯一標(biāo)識(shí)一cache塊,通常為所述存儲(chǔ)地址的高位。通過所述地址索引信息可以在相應(yīng)的存儲(chǔ)區(qū)中的到所述cache塊的信息。所述偏移信息為所述存儲(chǔ)地址在所述cache塊中的偏移量。根據(jù)獲取到的所述待模擬cache的容量、cache塊大小及相聯(lián)度等信息,可以在所述存儲(chǔ)地址中分別獲得對應(yīng)的cache塊的標(biāo)識(shí)信息和地址索引信息,以及所述存儲(chǔ)地址在所述對應(yīng)的cache塊中的偏移信息。
步驟105,根據(jù)所述存儲(chǔ)地址對應(yīng)的緩存塊的地址信息,搜索第一存儲(chǔ)區(qū),并根據(jù)搜索結(jié)果判斷所述存儲(chǔ)地址在所述第一存儲(chǔ)區(qū)中是否命中。
在具體實(shí)施中,所述第一存儲(chǔ)區(qū)適于存儲(chǔ)存儲(chǔ)地址的標(biāo)識(shí)信息以及對應(yīng)的使用頻度信息,所述第一存儲(chǔ)區(qū)所存儲(chǔ)的存儲(chǔ)地址的使用頻度均大于預(yù)設(shè)頻度。也就是說,所述第一存儲(chǔ)區(qū)適于存儲(chǔ)mcu經(jīng)常使用的存儲(chǔ)地址的標(biāo)識(shí)信息及相應(yīng)的使用頻度。其中,所述預(yù)設(shè)頻度可以根據(jù)mcu的實(shí)際訪問數(shù)據(jù)的情況進(jìn)行設(shè)置。
在具體實(shí)施中,所述第一存儲(chǔ)區(qū)可以劃分為多個(gè)組,每組中可以存儲(chǔ)多 個(gè)存儲(chǔ)地址的標(biāo)識(shí)信息以及對應(yīng)的使用頻度信息。其中,所述第一存儲(chǔ)區(qū)中組的數(shù)量與cache的相聯(lián)度相關(guān),比如,cache的相聯(lián)度為4時(shí),所述第一存儲(chǔ)區(qū)包含4組。當(dāng)cache的相聯(lián)度為2時(shí),所述第一存儲(chǔ)區(qū)包含2組。每組中可以存儲(chǔ)的存儲(chǔ)地址的標(biāo)識(shí)信息的數(shù)量,與所述第一存儲(chǔ)區(qū)所存儲(chǔ)的存儲(chǔ)地址的總數(shù)和組數(shù)相關(guān)。比如,當(dāng)所述第一存儲(chǔ)區(qū)所存儲(chǔ)的存儲(chǔ)地址的總數(shù)為20,cache的相聯(lián)度為4時(shí),每組中可以存儲(chǔ)的存儲(chǔ)地址的標(biāo)識(shí)信息為5個(gè)。當(dāng)所述第一存儲(chǔ)區(qū)所存儲(chǔ)的存儲(chǔ)地址的總數(shù)為20,cache的相聯(lián)度為2時(shí),每組中可以存儲(chǔ)的存儲(chǔ)地址的標(biāo)識(shí)信息為10個(gè)。
在具體實(shí)施中,根據(jù)所述存儲(chǔ)地址對應(yīng)的cache塊的地址索引信息,搜索所述第一存儲(chǔ)區(qū)中存儲(chǔ)的信息,由此可以獲得所述第一存儲(chǔ)區(qū)中各組在相應(yīng)位置上的標(biāo)識(shí)信息。
在具體實(shí)施中,獲得第一存儲(chǔ)區(qū)中各組在相應(yīng)位置上的標(biāo)識(shí)信息后,分別將搜索到的標(biāo)識(shí)信息與所述存儲(chǔ)地址對應(yīng)的cache塊的標(biāo)識(shí)信息進(jìn)行比較。當(dāng)二者相同時(shí),判定所述存儲(chǔ)地址在所述第一存儲(chǔ)區(qū)中命中,否則表示所述存儲(chǔ)地址在第一存儲(chǔ)區(qū)中缺失,則判定所述存儲(chǔ)地址在所述第一存儲(chǔ)區(qū)中未命中。
當(dāng)所述存儲(chǔ)地址在所述第一存儲(chǔ)區(qū)中命中時(shí),執(zhí)行步驟106,否則執(zhí)行步驟107。
步驟106,更新所述第一存儲(chǔ)區(qū)中存儲(chǔ)的信息,以及從第二存儲(chǔ)區(qū)中讀取對應(yīng)數(shù)據(jù)并返回。
在具體實(shí)施中,所述第二存儲(chǔ)區(qū)適于存儲(chǔ)與所述第一存儲(chǔ)區(qū)所存儲(chǔ)的存儲(chǔ)地址對應(yīng)的數(shù)據(jù)。當(dāng)所述存儲(chǔ)地址在所述第一存儲(chǔ)區(qū)中命中時(shí),更新所述第一存儲(chǔ)區(qū)中所述存儲(chǔ)地址對應(yīng)的cache塊的使用頻度信息,以及從所述第二存儲(chǔ)區(qū)中讀取相應(yīng)的數(shù)據(jù)并返回。
需要說明的是,在具體實(shí)施中,所述第二存儲(chǔ)區(qū)也可以分為多組,每組中存儲(chǔ)的數(shù)據(jù)與所述第一存儲(chǔ)區(qū)中各組所存儲(chǔ)的cache塊的標(biāo)識(shí)信息相對應(yīng)。執(zhí)行步驟105的同時(shí),可以同時(shí)執(zhí)行讀取所述第二存儲(chǔ)區(qū)的操作,最終根據(jù)步驟105的判斷結(jié)果,將所述第二存儲(chǔ)區(qū)中對應(yīng)的數(shù)據(jù)返回至mcu,進(jìn)一步 縮短緩存的模擬時(shí)間。
需要說明的是,在具體實(shí)施中,執(zhí)行更新所述第一存儲(chǔ)區(qū)中存儲(chǔ)的信息的操作,以及執(zhí)行從第二存儲(chǔ)區(qū)中讀取對應(yīng)數(shù)據(jù)并返回的操作,不存在實(shí)現(xiàn)順序的限制,二者既可以同時(shí)執(zhí)行,也可以順序執(zhí)行。
步驟107,根據(jù)所述緩存塊的地址信息搜索第三存儲(chǔ)區(qū)中存儲(chǔ)的信息,并根據(jù)搜索結(jié)果判斷所述存儲(chǔ)地址在所述第三存儲(chǔ)區(qū)中是否命中。
在具體實(shí)施中,所述存儲(chǔ)地址在所述第一存儲(chǔ)區(qū)中未命中時(shí),表示所述存儲(chǔ)地址在第一存儲(chǔ)區(qū)中缺失。根據(jù)所述cache塊的地址索引信息,搜索所述第三存儲(chǔ)區(qū),可以獲得所述第三存儲(chǔ)區(qū)對應(yīng)位置上的數(shù)據(jù)及所述數(shù)據(jù)對應(yīng)的cache塊的標(biāo)識(shí)信息。將所述存儲(chǔ)地址對應(yīng)cache塊的標(biāo)識(shí)信息與搜索到的標(biāo)識(shí)信息進(jìn)行比較,當(dāng)二者相同時(shí),判定所述存儲(chǔ)地址在所述第三存儲(chǔ)區(qū)中命中,否則判定所述存儲(chǔ)地址在所述第三存儲(chǔ)區(qū)中未命中。
其中,所述第三存儲(chǔ)區(qū)適于存儲(chǔ)預(yù)取的數(shù)據(jù)及對應(yīng)的cache塊的地址索引信息及標(biāo)識(shí)信息。所述預(yù)取的數(shù)據(jù)可以僅為一個(gè),也可以為多個(gè),具體不受限制。
當(dāng)所述存儲(chǔ)地址在所述第三存儲(chǔ)區(qū)中命中時(shí),執(zhí)行步驟108,否則執(zhí)行步驟109。
步驟108,更新所述第一存儲(chǔ)區(qū)及第二存儲(chǔ)區(qū)中存儲(chǔ)的信息,從所述第三存儲(chǔ)區(qū)中讀取對應(yīng)的數(shù)據(jù)并返回。
在具體實(shí)施中,當(dāng)所述存儲(chǔ)地址在所述第三存儲(chǔ)區(qū)中命中時(shí),可以先根據(jù)在所述第三存儲(chǔ)區(qū)中命中的數(shù)據(jù)所對應(yīng)的cache塊的地址索引信息,確定所述第一存儲(chǔ)區(qū)中對應(yīng)的位置是否已存儲(chǔ)相應(yīng)的信息。
若所述第一存儲(chǔ)區(qū)中有某一組中對應(yīng)的位置未存儲(chǔ)相應(yīng)的信息,則將在所述第三存儲(chǔ)區(qū)中命中的數(shù)據(jù)所對應(yīng)的cache塊的標(biāo)識(shí)信息以及對應(yīng)的使用頻度信息寫入至該位置。
若所述第一存儲(chǔ)區(qū)所有組中對應(yīng)的位置均已存儲(chǔ)相應(yīng)的信息,則可以根據(jù)所述第一存儲(chǔ)器中各cache塊的使用頻度信息,按照預(yù)先獲取到的替換算 法,對所述第一存儲(chǔ)區(qū)的cache塊進(jìn)行替換,將在所述第三存儲(chǔ)區(qū)中命中的緩存塊的標(biāo)識(shí)信息以及對應(yīng)的使用頻度信息寫入至被替換的位置。
需要說明的是,所述替換算法作為待模擬cache的一配置參數(shù),可以在對所述待模擬cache進(jìn)行模擬之前預(yù)先獲取到。在具體實(shí)施中,所述替換算法可以是為先進(jìn)先出替換算法(fifo),也可以為lru,還可以為二叉樹偽lru替換算法(pseudo-lru)。當(dāng)然,還可以為其他替換算法,具體不作限制。
更新所述第一存儲(chǔ)區(qū)后,將在所述第三存儲(chǔ)區(qū)中命中的數(shù)據(jù)寫入至所述第二存儲(chǔ)區(qū)的相應(yīng)位置處。從第三存儲(chǔ)區(qū)中讀取所命中的數(shù)據(jù)并返回至mcu。需要說明的是,更新所述第一、第二存儲(chǔ)區(qū)以及向mcu返回?cái)?shù)據(jù)的操作既可以同時(shí)執(zhí)行,也可以順序執(zhí)行。
從所述第三存儲(chǔ)區(qū)讀取所命中的數(shù)據(jù)后,按照預(yù)設(shè)順序從nvm中進(jìn)行數(shù)據(jù)預(yù)取,并將預(yù)取到的數(shù)據(jù)存儲(chǔ)在所述第三存儲(chǔ)區(qū)中,即通過數(shù)據(jù)預(yù)取更新所述第三存儲(chǔ)區(qū)。
需要說明的是,在具體實(shí)施中,所述預(yù)設(shè)順序作為待模擬cache的一配置參數(shù),可以在對所述待模擬cache進(jìn)行模擬之前預(yù)先獲取到。比如,所述預(yù)設(shè)順序可以為:在所訪問存儲(chǔ)地址上加1。
步驟109,從所述nvm中讀取對應(yīng)的數(shù)據(jù)并返回,以及更新所述第三存儲(chǔ)區(qū)中存儲(chǔ)的信息。
在具體實(shí)施中,所述存儲(chǔ)地址在所述第三存儲(chǔ)區(qū)中未命中時(shí),表示所述存儲(chǔ)地址在所述第三存儲(chǔ)區(qū)中缺失,此時(shí),從所述nvm中讀取對應(yīng)的數(shù)據(jù)并返回至mcu,并更新所述第三存儲(chǔ)區(qū)中存儲(chǔ)的信息,也就是將從nvm中讀取的數(shù)據(jù)寫入至所述第三存儲(chǔ)區(qū)。將從nvm中讀取的數(shù)據(jù)寫入至所述第三存儲(chǔ)區(qū)可以縮短緩存模擬的時(shí)間。
為了使本領(lǐng)域技術(shù)人員更好地理解和實(shí)現(xiàn)本發(fā)明,下面結(jié)合圖2,對上述緩存模擬過程的工作原理進(jìn)行詳細(xì)描述。
如圖2所示,以所述待模擬緩存的相聯(lián)度為2、nvm為flash為例,所述第一存儲(chǔ)區(qū)包括兩個(gè)組,每組中分別存儲(chǔ)若干個(gè)存儲(chǔ)地址的標(biāo)識(shí)信息tag及 對應(yīng)的使用頻度信息repinfo。第二存儲(chǔ)區(qū)中包括兩個(gè)組,每組中存儲(chǔ)的數(shù)據(jù)與所述第一存儲(chǔ)區(qū)中各組所存儲(chǔ)的存儲(chǔ)地址的標(biāo)識(shí)信息對應(yīng)。
接收到mcu發(fā)送的訪問緩存請求后,提取所述訪問緩存請求中的存儲(chǔ)地址addr。接著,對所述存儲(chǔ)地址addr進(jìn)行劃分,分別獲得對應(yīng)的標(biāo)識(shí)信息tag、地址索引信息index及偏移信息offset。根據(jù)所述地址索引信息index搜索第一存儲(chǔ)區(qū),并判斷所述存儲(chǔ)地址addr是否在所述第一存儲(chǔ)區(qū)中命中。同時(shí)讀取所述第二存儲(chǔ)區(qū)。若在第一存儲(chǔ)區(qū)中命中,則從第二存儲(chǔ)區(qū)中搜索到的數(shù)據(jù)中選擇一個(gè)并返回至mcu,否則搜索第三存儲(chǔ)區(qū)中存儲(chǔ)的信息。
若在第三存儲(chǔ)區(qū)中命中,則直接從第三存儲(chǔ)區(qū)中讀取相應(yīng)的數(shù)據(jù)并返回至mcu,否則從flash中讀取相應(yīng)的數(shù)據(jù)并返回至mcu。
由上述內(nèi)容可以看出,本發(fā)明實(shí)施例中的緩存模擬方法中,由于可以基于待模擬緩存的應(yīng)用需求配置其配置參數(shù),進(jìn)而可以對具有不同配置參數(shù)的緩存進(jìn)行模擬,通用性更好。另外,由于該緩存方法可以給出在各存儲(chǔ)區(qū)命中所需的時(shí)間,進(jìn)而可以計(jì)算出存儲(chǔ)系統(tǒng)的平均訪存時(shí)間,該指標(biāo)反映了待模擬緩存的真實(shí)加速效果,因此更有利于準(zhǔn)確地進(jìn)行緩存性能的估計(jì)。為了使本領(lǐng)域技術(shù)人員更好地理解和實(shí)現(xiàn)本發(fā)明,以下對上述緩存的模擬方法對應(yīng)的裝置進(jìn)行詳細(xì)描述。
參照圖3,本發(fā)明實(shí)施例還提供了一種緩存的模擬裝置。所述裝置可以包括:提取單元31,地址劃分單元32,存儲(chǔ)單元,第一處理單元33及第一執(zhí)行單元34。其中:
所述提取單元31適于當(dāng)接收到訪問緩存請求時(shí),從所述訪問緩存請求中提取待訪問的數(shù)據(jù)的存儲(chǔ)地址
所述地址劃分單元32,適于當(dāng)獲取到待模擬的緩存的配置參數(shù)時(shí),對所述存儲(chǔ)地址進(jìn)行劃分,獲得所述存儲(chǔ)地址對應(yīng)的緩存塊的地址信息,所述待模擬的緩存的配置參數(shù)適于基于所述待模擬的緩存的應(yīng)用需求進(jìn)行配置;
所述存儲(chǔ)單元,包括第一存儲(chǔ)區(qū)351,適于存儲(chǔ)存儲(chǔ)地址的標(biāo)識(shí)信息以及對應(yīng)的使用頻度信息,所述第一存儲(chǔ)區(qū)351所存儲(chǔ)的存儲(chǔ)地址的使用頻度均大于預(yù)設(shè)頻度;
第一處理單元33,適于根據(jù)所述存儲(chǔ)地址對應(yīng)的緩存塊的地址信息,搜索所述第一存儲(chǔ)區(qū);根據(jù)搜索結(jié)果判斷所述存儲(chǔ)地址在所述第一存儲(chǔ)區(qū)中是否命中;
第一執(zhí)行單元34,適于根據(jù)所述存儲(chǔ)地址在所述第一存儲(chǔ)區(qū)351中是否命中的判斷結(jié)果,獲取相應(yīng)的數(shù)據(jù)并返回。
在具體實(shí)施中,所述緩存塊的地址信息包括:所述緩存塊的標(biāo)識(shí)信息及地址索引信息。所述待模擬的緩存的配置參數(shù)包括:所述待模擬的緩存的特征參數(shù)以及影響所述待模擬的緩存性能的系統(tǒng)參數(shù)。
在具體實(shí)施中,所述存儲(chǔ)單元還包括:第二存儲(chǔ)區(qū)352。所述第二存儲(chǔ)區(qū)352適于存儲(chǔ)與所述第一存儲(chǔ)區(qū)351所存儲(chǔ)的存儲(chǔ)地址對應(yīng)的數(shù)據(jù)。所述第一執(zhí)行單元34包括:第一執(zhí)行子單元341,適于更新所述第一存儲(chǔ)區(qū)351中存儲(chǔ)的信息,以及從所述第二存儲(chǔ)區(qū)352中讀取對應(yīng)數(shù)據(jù)并返回。
在具體實(shí)施中,所述存儲(chǔ)單元還可以包括:第三存儲(chǔ)區(qū)353,適于存儲(chǔ)預(yù)取的數(shù)據(jù)及對應(yīng)的緩存塊的地址信息。
相應(yīng)地,所述第一執(zhí)行單元34包括:第一處理子單元342以及第二執(zhí)行子單元343,所述第一處理子單元342適于當(dāng)所述存儲(chǔ)地址在所述第一存儲(chǔ)區(qū)351中未命中時(shí),根據(jù)所述緩存塊的地址信息搜索所述第三存儲(chǔ)區(qū)353中存儲(chǔ)的信息;根據(jù)搜索結(jié)果判斷所述存儲(chǔ)地址在所述第三存儲(chǔ)區(qū)353中是否命中。述第二執(zhí)行子單元343,適于根據(jù)所述存儲(chǔ)地址在所述第三存儲(chǔ)區(qū)353中是否命中的判斷結(jié)果,獲取相應(yīng)的數(shù)據(jù)并返回。
在具體實(shí)施中,所述第二執(zhí)行子單元343包括:第一執(zhí)行模塊3431及第二執(zhí)行模塊3432。其中:
所述第一執(zhí)行模塊3431,適于當(dāng)所述存儲(chǔ)地址在所述第三存儲(chǔ)區(qū)353中命中時(shí),更新所述第一存儲(chǔ)區(qū)351及第二存儲(chǔ)區(qū)352中存儲(chǔ)的信息,從所述第三存儲(chǔ)區(qū)353中讀取對應(yīng)的數(shù)據(jù)并返回;按照預(yù)設(shè)順序從nvm中進(jìn)行數(shù)據(jù)預(yù)取,并將預(yù)取到的數(shù)據(jù)存儲(chǔ)在所述第三存儲(chǔ)區(qū)353中。
所述第二執(zhí)行模塊3432,適于當(dāng)所述存儲(chǔ)地址在所述第三存儲(chǔ)區(qū)353中未命中時(shí),從所述nvm中讀取對應(yīng)的數(shù)據(jù)并返回,以及更新所述第三存儲(chǔ)區(qū) 中存儲(chǔ)的信息。
在具體實(shí)施中,所述第二執(zhí)行模塊3432適于當(dāng)所述第一存儲(chǔ)區(qū)351的對應(yīng)位置處均已存儲(chǔ)相應(yīng)的信息時(shí),采用如下步驟更新所述第一存儲(chǔ)區(qū)351:根據(jù)所述第一存儲(chǔ)區(qū)351中各緩存塊的使用頻度信息,按照預(yù)先獲取到的替換算法,對所述第一存儲(chǔ)區(qū)351的緩存塊進(jìn)行替換,將在所述第三存儲(chǔ)區(qū)353中命中的緩存塊的標(biāo)識(shí)信息以及對應(yīng)的使用頻度信息寫入至被替換的位置。
由上述內(nèi)容可以看出,本發(fā)明實(shí)施例中所述緩存的模擬裝置,提取單元31可以在接收到訪問緩存請求時(shí),從所述訪問緩存請求中提取待訪問數(shù)據(jù)的存儲(chǔ)地址,進(jìn)而由所述地址劃分單元32在獲取到待模擬的緩存的配置參數(shù)時(shí)對所述地址進(jìn)行劃分,獲得所述存儲(chǔ)地址對應(yīng)的緩存塊的地址信息,從而所述第一處理單元33可以根據(jù)所述存儲(chǔ)地址對應(yīng)的緩存塊的地址信息,搜索所述第一存儲(chǔ)區(qū),并根據(jù)搜索結(jié)果判斷所述存儲(chǔ)地址在所述第一存儲(chǔ)區(qū)中是否命中,最終由第一執(zhí)行單元34根據(jù)所述存儲(chǔ)地址在所述第一存儲(chǔ)區(qū)351中是否命中的判斷結(jié)果,獲取相應(yīng)的數(shù)據(jù)并返回。采用上述模擬裝置進(jìn)行緩存性能評估時(shí),可以計(jì)算得到所模擬的各個(gè)緩存的平均訪存時(shí)間,進(jìn)而根據(jù)緩存的平均訪存時(shí)間評估該緩存的性能,提高緩存性能評估的準(zhǔn)確性。
參照圖4,本發(fā)明的另一實(shí)施例還提供了一種緩存的模擬方法。所述方法可以包括如下步驟:
步驟401,判斷是否接收到訪問緩存請求。
當(dāng)接收到所述訪問緩存請求時(shí),執(zhí)行步驟402,否則繼續(xù)執(zhí)行步驟401。
步驟402,從所述訪問緩存請求中提取待訪問的數(shù)據(jù)的存儲(chǔ)地址。
步驟403,獲取待模擬的緩存的配置參數(shù)。
步驟404,對所述存儲(chǔ)地址進(jìn)行劃分,獲得所述存儲(chǔ)地址對應(yīng)的緩存塊的地址信息。
需要說明的是,在具體實(shí)施中,步驟401~404可以分別參照上述對步驟101~104的描述進(jìn)行實(shí)施,此處不再贅述。
步驟405,根據(jù)所述存儲(chǔ)地址對應(yīng)的緩存塊的地址信息搜索所述第四存儲(chǔ) 區(qū),并根據(jù)搜索結(jié)果判斷所述存儲(chǔ)地址在所述第四存儲(chǔ)區(qū)中是否命中。
在具體實(shí)施中,所述第四存儲(chǔ)區(qū)適于存儲(chǔ)前一次在所述第一存儲(chǔ)區(qū)中命中時(shí)所對應(yīng)的cache塊的地址信息。搜索所述第四存儲(chǔ)區(qū),獲得前一次在所述第一存儲(chǔ)區(qū)中命中時(shí)對應(yīng)的cache塊的地址信息,并將其與所述存儲(chǔ)地址對應(yīng)的緩存塊的地址信息進(jìn)行比較。若二者相同,則所述存儲(chǔ)地址在所述第四存儲(chǔ)區(qū)中命中,否則未命中。
當(dāng)所述存儲(chǔ)地址在所述第四存儲(chǔ)區(qū)中命中時(shí),執(zhí)行步驟406,否則執(zhí)行步驟407。
步驟406,從所述第二存儲(chǔ)區(qū)中讀取對應(yīng)的數(shù)據(jù)并返回。
由于mcu訪問前一次在所述第一存儲(chǔ)區(qū)中命中的存儲(chǔ)地址的頻度較高,因此,在搜索第一存儲(chǔ)區(qū)之前,通過先判斷所述存儲(chǔ)地址在所述第一存儲(chǔ)區(qū)中是否命中,且在命中時(shí),直接從第二存儲(chǔ)區(qū)中讀取對應(yīng)的數(shù)據(jù)并返回,可以進(jìn)一步縮短緩存的模擬時(shí)間。
步驟407,根據(jù)所述存儲(chǔ)地址對應(yīng)的緩存塊的地址信息,搜索第一存儲(chǔ)區(qū),并根據(jù)搜索結(jié)果判斷所述存儲(chǔ)地址在所述第一存儲(chǔ)區(qū)中是否命中。
當(dāng)所述存儲(chǔ)地址在所述第一存儲(chǔ)區(qū)中命中時(shí),執(zhí)行步驟408,否則執(zhí)行步驟409。
步驟408,更新所述第一存儲(chǔ)區(qū)及第四存儲(chǔ)區(qū)中存儲(chǔ)的信息,以及從第二存儲(chǔ)區(qū)中讀取對應(yīng)數(shù)據(jù)并返回。
需要說明的是,在本發(fā)明的實(shí)施例中,當(dāng)所述存儲(chǔ)地址在所述第一存儲(chǔ)區(qū)中命中時(shí),除更新所述第一存儲(chǔ)區(qū)外,還要更新所述第四存儲(chǔ)區(qū),以使得所述第四存儲(chǔ)區(qū)中所存儲(chǔ)的地址信息始終為前一次在所述第一存儲(chǔ)區(qū)中命中的地址信息。
步驟409,根據(jù)所述緩存塊的地址信息搜索第三存儲(chǔ)區(qū)中存儲(chǔ)的信息,并根據(jù)搜索結(jié)果判斷所述存儲(chǔ)地址在所述第三存儲(chǔ)區(qū)中是否命中。
當(dāng)所述存儲(chǔ)地址在所述第三存儲(chǔ)區(qū)中命中時(shí),執(zhí)行步驟410,否則執(zhí)行步驟411。
步驟410,更新所述第一存儲(chǔ)區(qū)、第二存儲(chǔ)區(qū)及第四存儲(chǔ)區(qū)中存儲(chǔ)的信息,從所述第三存儲(chǔ)區(qū)中讀取對應(yīng)的數(shù)據(jù)并返回。
需要說明的是,在本發(fā)明的實(shí)施例中,當(dāng)所述存儲(chǔ)地址在所述第三存儲(chǔ)區(qū)中命中時(shí),除更新所述第一存儲(chǔ)區(qū)及第二存儲(chǔ)區(qū)外,還要更新所述第四存儲(chǔ)區(qū),以使得所述第四存儲(chǔ)區(qū)中所存儲(chǔ)的地址信息始終為前一次在所述第一存儲(chǔ)區(qū)中命中的地址信息。
步驟411,從所述nvm中讀取對應(yīng)的數(shù)據(jù)并返回,以及更新所述第三存儲(chǔ)區(qū)中存儲(chǔ)的信息。
需要說明的是,在具體實(shí)施中,可以分別參照上述對步驟關(guān)于步驟105~109的描述實(shí)施步驟407~411,此處不再贅述。
為了使本領(lǐng)域技術(shù)人員更好地理解和實(shí)現(xiàn)本發(fā)明,下面結(jié)合圖5,對上述緩存模擬過程的工作原理進(jìn)行詳細(xì)描述。
如圖5所示,以所述待模擬緩存的相聯(lián)度為4、nvm為flash為例,所述第一存儲(chǔ)區(qū)包括4個(gè)組,每組中分別存儲(chǔ)若干個(gè)存儲(chǔ)地址的標(biāo)識(shí)信息tag及對應(yīng)的使用頻度信息repinfo。第二存儲(chǔ)區(qū)中僅包括1個(gè)組,每組中存儲(chǔ)的數(shù)據(jù)與所述第一存儲(chǔ)區(qū)中各組所存儲(chǔ)的存儲(chǔ)地址的標(biāo)識(shí)信息對應(yīng)。
接收到mcu發(fā)送的訪問緩存請求后,提取所述訪問緩存請求中的存儲(chǔ)地址addr。接著,對所述存儲(chǔ)地址addr進(jìn)行劃分,分別獲得對應(yīng)的標(biāo)識(shí)信息tag、地址索引信息index及偏移信息offset。
根據(jù)所述地址索引信息index搜索第四存儲(chǔ)區(qū),并判斷所述存儲(chǔ)地址在所述第四存儲(chǔ)區(qū)是否命中。若在所述第四存儲(chǔ)區(qū)命中,則從所述第二存儲(chǔ)區(qū)中搜索相應(yīng)的數(shù)據(jù)并返回至mcu,否則根據(jù)所述地址索引信息index搜索第一存儲(chǔ)區(qū)。
判斷所述存儲(chǔ)地址addr是否在所述第一存儲(chǔ)區(qū)中命中,若在第一存儲(chǔ)區(qū)中命中,則從第二存儲(chǔ)區(qū)中搜索相應(yīng)的數(shù)據(jù)并返回至mcu,否則搜索第三存儲(chǔ)區(qū)中存儲(chǔ)的信息。
若在第三存儲(chǔ)區(qū)中命中,則直接從第三存儲(chǔ)區(qū)中讀取相應(yīng)的數(shù)據(jù)并返回 至mcu,否則從flash中讀取相應(yīng)的數(shù)據(jù)并返回至mcu。
由上述內(nèi)容可知,通過設(shè)置第四存儲(chǔ)區(qū),在對訪問緩存請求中的存儲(chǔ)地址進(jìn)行劃分后,先判斷所述存儲(chǔ)地址在所述第四存儲(chǔ)區(qū)中是否命中,再依次判斷在第一存儲(chǔ)區(qū)及第三存儲(chǔ)區(qū)中是否命中,可以有效減少第一存儲(chǔ)區(qū)及第二存儲(chǔ)區(qū)的讀取次數(shù),降低緩存模擬的功耗。并且,由于該緩存方法可以給出在各存儲(chǔ)區(qū)命中所需的時(shí)間,進(jìn)而可以計(jì)算出待模擬緩存的平均訪存時(shí)間,該指標(biāo)反映了待模擬緩存的真實(shí)加速效果,因此更有利于準(zhǔn)確地進(jìn)行緩存性能的估計(jì)。
為了使本領(lǐng)域技術(shù)人員更好地理解和實(shí)現(xiàn)本發(fā)明,以下對上述緩存的模擬方法對應(yīng)的裝置進(jìn)行詳細(xì)描述。
參照圖6,本發(fā)明實(shí)施例提供了一種緩存的模擬裝置。相對于圖3示出的裝置,所述存儲(chǔ)單元還包括:第四存儲(chǔ)區(qū)354,適于存儲(chǔ)前一次在所述第一存儲(chǔ)區(qū)中命中時(shí)所對應(yīng)的緩存塊的地址信息。
此時(shí),所述裝置還包括:第二處理單元36及第二執(zhí)行單元37。其中:
所述第二處理單元36,適于在所述根據(jù)所述存儲(chǔ)地址對應(yīng)的緩存塊的地址信息,搜索第一存儲(chǔ)區(qū)351之前,根據(jù)所述存儲(chǔ)地址對應(yīng)的緩存塊的地址信息搜索所述第四存儲(chǔ)區(qū)354,判斷所述存儲(chǔ)地址在所述第四存儲(chǔ)區(qū)354中是否命中;
所述第二執(zhí)行單元37,適于當(dāng)所述存儲(chǔ)地址在所述第四存儲(chǔ)區(qū)354中命中時(shí),從所述第四存儲(chǔ)區(qū)354中讀取對應(yīng)的數(shù)據(jù)并返回。
所述第一處理單元33適于當(dāng)所述存儲(chǔ)地址在所述第四存儲(chǔ)區(qū)354中未命中時(shí),搜索所述第一存儲(chǔ)區(qū)351,并根據(jù)搜索結(jié)果判斷所述存儲(chǔ)地址在所述第一存儲(chǔ)區(qū)351中是否命中。
由上述內(nèi)容可以看出,本發(fā)明實(shí)施例中所述緩存的模擬裝置,通過設(shè)置第四存儲(chǔ)區(qū)354,進(jìn)而可以在所述第一處理單元33根據(jù)所述存儲(chǔ)地址對應(yīng)的緩存塊的地址信息,搜索第一存儲(chǔ)區(qū)351之前,先由第二處理單元36判斷所述存儲(chǔ)地址在所述第四存儲(chǔ)區(qū)354中是否命中,進(jìn)而再由所述第一處理單元在所述存儲(chǔ)地址在所述第四存儲(chǔ)區(qū)354中未命中時(shí),搜索所述第一存儲(chǔ)區(qū)351, 并根據(jù)搜索結(jié)果判斷所述存儲(chǔ)地址在所述第一存儲(chǔ)區(qū)351中是否命中,可以有效縮短緩存的模擬時(shí)間。采用上述模擬裝置進(jìn)行緩存性能評估時(shí),可以計(jì)算得到所模擬的各個(gè)緩存的平均訪存時(shí)間,進(jìn)而根據(jù)緩存的平均訪存時(shí)間評估該緩存的性能,提高緩存性能評估的準(zhǔn)確性。另外,相對于圖3中示出的緩存模擬裝置,可以有效減少第一存儲(chǔ)區(qū)及第二存儲(chǔ)區(qū)的讀取次數(shù),降低緩存模擬的功耗。
本領(lǐng)域普通技術(shù)人員可以理解上述實(shí)施例的各種方法中的全部或部分步驟是可以通過程序來指令相關(guān)的硬件來完成,該程序可以存儲(chǔ)于一計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)中,存儲(chǔ)介質(zhì)可以包括:rom、ram、磁盤或光盤等。
雖然本發(fā)明披露如上,但本發(fā)明并非限定于此。任何本領(lǐng)域技術(shù)人員,在不脫離本發(fā)明的精神和范圍內(nèi),均可作各種更動(dòng)與修改,因此本發(fā)明的保護(hù)范圍應(yīng)當(dāng)以權(quán)利要求所限定的范圍為準(zhǔn)。