本發明涉及集成電路設計技術領域,具體涉及一種緩存性能的評估方法及裝置。
背景技術:
嵌入式片上系統(systemonchip,soc)中,一般采用eeprom或flash等非揮發性存儲器(non-volatilememory,nvm)作為存儲指令的存儲器。微處理器(mcu)通過讀取nvm存儲器中的指令并執行,完成系統設計的功能。
通常情況下,mcu執行的速度比nvm的讀取速度快得多,導致mcu經常處于讀取指令的等待狀態,這使得讀取指令的速度成為片上系統、尤其是高性能片上存儲系統的瓶頸。
解決這一技術問題的主流方案是采用指令緩存(instructioncache,簡稱cache)。通過在cache內存儲mcu頻繁訪問的數據及這些數據的存儲地址,當mcu引用nvm中的某地址時,cache便先檢查是否存有該地址。若存有該地址,則將對應的指令返回mcu,否則mcu從nvm中獲取對應的指令。
由于cache的讀取速度比nvm快得多,因此,當訪問的數據在cache中找到,即命中時,mcu可以直接從cache中讀取對應的數據,而無需訪問速度較慢的nvm。如果cache的命中率足夠高,mcu近似于直接從ram中讀取指令,因而整體讀取速度可以大大提高。
在實際應用中,嵌入式soc的應用需求多種多樣,如何根據特定的應用需求,選擇最合適的cache結構和參數,是嵌入式soc設計者面臨的一個很大挑戰。為此,在嵌入式soc的cache設計中,通常需要評估不同的結構和參數對最終cache性能的影響。
目前,對所設計的cache進行性能評估時,通常采用cache的命中率來評估cache的性能。然而,cache的命中率并不能真實地反映cache的真實性能, 導致根據評估結果所確定的配置參數非最優配置參數,也就是說,現有緩存性能評估方法對所設計的cache性能評估的準確性較低。
技術實現要素:
本發明解決的技術問題是如何提高cache性能評估的準確性。
為解決上述技術問題,本發明實施例提供一種緩存性能的評估方法,包括:獲取n個待訪問數據的存儲地址,n為自然數;調整待評估的緩存的各配置參數,模擬所述待評估的緩存訪問各所述待訪問數據,分別獲得訪問各所述待訪問數據時,所述各配置參數在不同數值下對應的平均訪存時間;將所述各配置參數在不同數值下對應的平均訪存時間作為評估結果并輸出。
可選地,所述模擬所述待評估的緩存訪問各所述待訪問數據,包括:采用如下步驟對所述待評估的緩存訪問其中任一所述待訪問數據進行模擬,直至所述待評估的緩存訪問n個所述待訪問數據:當獲取到所述待評估的緩存的配置參數時,對所述存儲地址進行劃分,獲得所述存儲地址對應的緩存塊的地址信息;根據所述存儲地址對應的緩存塊的地址信息,搜索第一存儲區,所述第一存儲區適于存儲存儲地址的標識信息以及對應的使用頻度信息,所述第一存儲區所存儲的存儲地址的使用頻度均大于預設頻度;根據搜索結果判斷所述存儲地址在所述第一存儲區中是否命中;根據所述存儲地址在所述第一存儲區中是否命中的判斷結果,獲取相應的數據并返回。
可選地,所述根據所述存儲地址在所述第一存儲區中是否命中的判斷結果,獲取相應的數據并返回,包括:當所述存儲地址在所述第一存儲區中命中時,更新所述第一存儲區中存儲的信息,以及從第二存儲區中讀取對應數據并返回,其中,所述第二存儲區適于存儲與所述第一存儲區所存儲的存儲地址對應的數據。
可選地,所述根據所述存儲地址在所述第一存儲區中是否命中的判斷結果,獲取相應的數據并返回,包括:當所述存儲地址在所述第一存儲區中未命中時,根據所述緩存塊的地址信息搜索第三存儲區中存儲的信息,所述第三存儲區適于存儲預取的數據及對應的緩存塊的地址信息;根據搜索結果判斷所述存儲地址在所述第三存儲區中是否命中;根據所述存儲地址在所述第 三存儲區中是否命中的判斷結果,獲取相應的數據并返回。
可選地,所述根據所述存儲地址在所述第三存儲區中是否命中的判斷結果,獲取相應的數據并返回,包括:當所述存儲地址在所述第三存儲區中命中時,更新所述第一存儲區及第二存儲區中存儲的信息,從所述第三存儲區中讀取對應的數據并返回;按照預設順序從nvm中進行數據預取,并將預取到的數據存儲在所述第三存儲區中;當所述存儲地址在所述第三存儲區中未命中時,從所述nvm中讀取對應的數據并返回,以及更新所述第三存儲區中存儲的信息。
可選地,當所述第一存儲區的對應位置處均已存儲相應的信息時,所述更新所述第一存儲區包括:根據所述第一存儲器中各緩存塊的使用頻度信息,按照預先獲取到的替換算法,對所述第一存儲區的緩存塊進行替換,將在所述第三存儲區中命中的緩存塊的標識信息以及對應的使用頻度信息寫入至被替換的位置。
可選地,在所述根據所述存儲地址對應的緩存塊的地址信息,搜索第一存儲區之前,所述方法還包括:根據所述存儲地址對應的緩存塊的地址信息搜索第四存儲區,所述第四存儲區適于存儲前一次在所述第一存儲區中命中時所對應的緩存塊的地址信息;并根據搜索結果判斷所述存儲地址在所述第四存儲區中是否命中;當所述存儲地址在所述第四存儲區中命中時,從所述第二存儲區中讀取對應的數據并返回,否則搜索所述第一存儲區。
可選地,所述緩存塊的地址信息包括:所述緩存塊的標識信息及地址索引信息。
可選地,所述待評估的緩存包括至少一個存儲區,所述至少一個存儲區分別用于存儲不同的信息;
所述獲得訪問各所述待訪問數據時,所述各配置參數在不同數值下對應的平均訪存時間,包括:分別計算通過所述待評估的緩存訪問各所述待訪問數據時,所述各配置參數在不同數值下對應的各個所述存儲區的訪問時間及命中率;獲取所述各配置參數在不同數值下對應的所述待評估的緩存的失效開銷;根據所述各配置參數在不同數值下對應的所述待評估的緩存的命中率、 訪問時間及失效開銷,計算得到所述各配置參數在不同數值下對應的所述待評估的緩存的平均訪存時間。
可選地,所述待評估的緩存的配置參數包括:所述待評估的緩存的特征參數以及影響所述待評估的緩存性能的系統參數。
本發明實施例還提供了一種緩存性能的評估裝置,所述評估裝置包括:獲取單元,適于獲取n個待訪問數據的存儲地址,n為自然數;模擬單元,適于調整待評估的緩存的各配置參數,模擬所述待評估的緩存訪問各所述待訪問數據;計算單元,適于根據所述模擬子單元的模擬過程,獲得訪問各所述待訪問數據時,所述各配置參數在不同數值下對應的平均訪存時間;評估單元,適于將所述各配置參數在不同數值下訪問各所述待訪問數據時的平均訪存時間作為評估結果并輸出。
可選地,所述模擬單元適于對所述待評估的緩存訪問其中任一所述待訪問數據進行模擬,直至所述待評估的緩存訪問n個所述待訪問數據;
所述模擬單元包括:地址劃分子單元,適于當獲取到所述待評估的緩存的配置參數時,對所述存儲地址進行劃分,獲得所述存儲地址對應的緩存塊的地址信息;存儲子單元,包括第一存儲區,所述第一存儲區適于存儲存儲地址的標識信息以及對應的使用頻度信息,所述第一存儲區所存儲的存儲地址的使用頻度均大于預設頻度;第一處理子單元,適于根據所述存儲地址對應的緩存塊的地址信息,搜索第一存儲區,并根據搜索結果判斷所述存儲地址在所述第一存儲區中是否命中;第一執行子單元,適于根據所述存儲地址在所述第一存儲區中是否命中的判斷結果,獲取相應的數據并返回。
可選地,所述存儲子單元還包括:第二存儲區,適于存儲與所述第一存儲區所存儲的存儲地址對應的數據;
所述第一執行子單元包括:第一執行模塊,適于更新所述第一存儲區中存儲的信息,以及從所述第二存儲區中讀取對應數據并返回。
可選地,所述存儲子單元還包括:第三存儲區,適于存儲預取的數據及對應的緩存塊的地址信息;所述第一執行子單元包括:第一處理模塊以及第二執行模塊,所述第一處理模塊適于當所述存儲地址在所述第一存儲區中未 命中時,根據所述緩存塊的地址信息搜索所述第三存儲區中存儲的信息;根據搜索結果判斷所述存儲地址在所述第三存儲區中是否命中;所述第二執行模塊,適于根據所述存儲地址在所述第三存儲區中是否命中的判斷結果,獲取相應的數據并返回。
可選地,所述第二執行模塊包括:第一執行子模塊,適于當所述存儲地址在所述第三存儲區中命中時,更新所述第一存儲區及第二存儲區中存儲的信息,從所述第三存儲區中讀取對應的數據并返回;按照預設順序從nvm中進行數據預取,并將預取到的數據存儲在所述第三存儲區中;第二執行子模塊,適于當所述存儲地址在所述第三存儲區中未命中時,從所述nvm中讀取對應的數據并返回,以及更新所述第三存儲區中存儲的信息。
可選地,所述第二執行子模塊適于當所述第一存儲區的對應位置處均已存儲相應的信息時,采用如下步驟更新所述第一存儲區:根據所述第一存儲區中各緩存塊的使用頻度信息,按照預先獲取到的替換算法,對所述第一存儲區的緩存塊進行替換,將在所述第三存儲區中命中的緩存塊的標識信息以及對應的使用頻度信息寫入至被替換的位置。
可選地,所述存儲子單元還包括:第四存儲區,適于存儲前一次在所述第一存儲區中命中時所對應的緩存塊的地址信息;
所述模擬單元還包括:第二處理子單元及第二執行子單元,其中:所述第二處理子單元,適于在所述根據所述存儲地址對應的緩存塊的地址信息,搜索第一存儲區之前,根據所述存儲地址對應的緩存塊的地址信息搜索所述第四存儲區,判斷所述存儲地址在所述第四存儲區中是否命中;所述第二執行子單元,適于當所述存儲地址在所述第四存儲區中命中時,從所述第二存儲區中讀取對應的數據并返回;
所述第一處理子單元適于當所述存儲地址在所述第四存儲區中未命中時,搜索所述第一存儲區,并根據搜索結果判斷所述存儲地址在所述第一存儲區中是否命中。
可選地,所述緩存塊的地址信息包括:所述緩存塊的標識信息及地址索引信息。
可選地,所述待評估的緩存包括至少一個存儲區,所述至少一個存儲區分別用于存儲不同的信息;
所述計算單元包括:第一計算子單元,適于分別計算通過所述待評估的緩存訪問各所述待訪問數據時,所述各配置參數在不同數值下對應的各個所述存儲區的訪問時間及命中率;獲取子單元,適于獲取所述各配置參數在不同數值下對應的所述待評估的緩存的失效開銷;第二計算子單元,適于根據所述各配置參數在不同數值下對應的所述待評估的緩存的命中率、訪問時間及失效開銷,計算得到所述各配置參數在不同數值下對應的所述待評估的緩存的平均訪存時間。
可選地,所述待評估的緩存的配置參數包括:所述待評估的緩存的特征參數以及影響所述待評估的緩存性能的系統參數。
與現有技術相比,本發明實施例的技術方案具有以下有益效果:
在上述緩存性能的評估方法中,通過采用平均訪存時間來評估緩存的性能,相對于采用命中率來評估緩存的性能,由于所述平均訪存時間不僅與緩存的命中率相關,還與緩存的訪問時間及失效開銷等特征參數相關,故平均訪存時間可以更加真實地反映緩存的真實性能,故利用平均訪存時間來評估緩存的性能可以提高評估的準確性。
附圖說明
圖1是本發明實施例中一種緩存性能評估方法流程圖;
圖2是一種cache容量與平均訪存時間之間對應關系的曲線示意圖;
圖3是一種cache塊大小與平均訪存時間之間對應關系的曲線示意圖;
圖4是一種cache相聯度與平均訪存時間之間對應關系的曲線示意圖;
圖5是本發明實施例中一種緩存模擬方法流程圖;
圖6是本發明實施例中一種緩存模擬過程的原理示意圖;
圖7是本發明實施例中另一種緩存模擬方法流程圖;
圖8是本發明實施例中另一種緩存模擬過程的原理示意圖;
圖9是本發明實施例中一種緩存性能評估裝置的結構示意圖;
圖10是本發明實施例中一種模擬單元的結構示意圖;
圖11是本發明實施例中另一種模擬單元的結構示意圖;
圖12是本發明實施例中模擬單元不同結構下對平均訪存時間的影響示意圖。
具體實施方式
在實際應用中,嵌入式soc的應用場景各種各樣,各種應用場景的特點都不盡相同,特定結構的cache很難保證在不同的應用場景之間具有通用性。另外,嵌入式soc的設計不僅需要考慮系統的性能,系統的功耗、面積和成本也是設計者需要考慮的問題。因此,在嵌入式soc的cache設計中,通常需要評估不同的應用需求下,各種結構和參數對最終cache加速效果的影響。
然而,利用現有的cache性能評估方法進行cache性能評估時,根據模擬過程僅能得到cache的命中率,而cache的命中率不能反映cache真實加速效果,最終導致cache性能評估的準確性較低。
針對上述問題,本發明實施例提供了一種緩存性能的評估方法,所述方法可以根據待評估緩存的模擬過程,獲得訪問各所述待訪問數據時,所述各配置參數在不同數值下對應的平均訪存時間,進而根據所述各配置參數在不同數值下訪問各所述待訪問數據時的平均訪存時間,評估所述待評估的緩存的性能。由于所述平均訪存時間不僅與緩存的命中率相關,還與緩存的訪問時間及失效開銷等特征參數相關,故平均訪存時間可以更加真實地反映緩存的真實性能,利用平均訪存時間來評估緩存的性能的準確性也就更高。
為使本發明的上述目的、特征和有益效果能夠更為明顯易懂,下面結合附圖對本發明的具體實施例做詳細地說明。
參照圖1,本發明實施例提供了一種緩存性能的評估方法,所述方法可以包括如下步驟:
步驟11,獲取n個待訪問數據的存儲地址,n為自然數。
在具體實施中,可以采用多種方式獲取所述待訪問數據的存儲地址。在 本發明的一實施例中,可以通過提取待評估的緩存在某一應用場景下的地址訪存蹤跡信息(memoryaccesstrace,mat),來獲取待訪問數據的存儲地址。其中,所述mat中不僅可以包括待訪問數據及對應的存儲地址,還包括mcu在nvm中訪問所述待訪問數據所需的時間,這樣在后續對待評估的緩存進行性能評估時,則無須再獲取mcu在nvm中訪問所述待訪問數據所需的訪問時間,為后續進行性能評估提供便利。
需要說明的是,在具體實施中,n的值可以根據實際情況進行設置。可以理解的是,n的值越大,評估的準確性越高,但評估所需時間也就越長,代價越大。因此,本領域技術人員可以實際情況合理設置n的值,此處不作限制。
步驟12,調整待評估的緩存的各配置參數,模擬所述待評估的緩存訪問各所述待訪問數據,分別獲得訪問各所述待訪問數據時,所述各配置參數在不同數值下對應的平均訪存時間。
在具體實施中,所述待評估的cache通常存在多個配置參數。所述配置參數既可以包含所述待評估的cache的特征參數,又包含可以影響所述待評估的cache性能的系統參數。其中,所述待評估的cache的特征參數可以包括:所述待評估的cache的容量、cache塊的大小,cache相聯度以及替換算法等。影響所述待評估的cache性能的系統參數可以包括:nvm、cache及mcu三者的訪問時間、訪問功耗及數據位寬等。
當然,所述配置參數還可以包括其他參數,并不局限于上述實施例所給出的參數。并且,所獲取到的配置參數中可以僅包含一個參數,也可以包含兩個或兩個以上的參數。
在具體實施中,所述配置參數通常基于所述待評估的cache的應用需求進行配置。也就是說,所獲取到的配置參數與所述待評估的cache的應用需求相對應。所述待評估的cache的應用需求不同,所獲取到的配置參數也就不同。
例如,當所述待評估的cache應用在aes(對稱加密算法)中時,所述配置參數可以為:cache容量2kbyte,cache塊大小16byte,cache相聯度2,最近最少使用(lru)替換算法等。當所述待評估的cache應用在dhrystone (處理器整形運算性能測試)程序下時,所述配置參數可以為:cache容量512byte,cache塊大小16byte,cache相聯度1等。
以所述待評估的cache的配置參數包括:cache容量、cache塊大小、cache相聯度為例,在調整待評估的cache的各配置參數,模擬所述待評估的cache訪問各所述待訪問數據時,可以先保持cache塊大小及cache相聯度不變,調整cache容量,并模擬每次cache容量調整后,所述待評估的cache訪問各所述待訪問數據的工作流程,獲得cache容量在不同數值下對應的平均訪存時間。接著再保持cache容量及cache塊大小不變,調整cache相聯度,并模擬每次cache相聯度調整后,所述待評估的cache訪問各所述待訪問數據的工作流程,獲得cache相聯度在不同數值下對應的平均訪存時間。最后再保持cache容量及cache相聯度不變,調整cache塊大小,并模擬每次cache塊大小調整后,所述待評估的緩存訪問各所述待訪問數據的工作流程,獲得cache塊大小在不同數值下對應的平均訪存時間。
需要說明的是,在具體實施中,各配置參數調整的順序不受限制。另外,在對每個配置參數的調整過程中,調整的次數不受限制,并且各個配置參數調整的次數可以相同,也可以不同。可以理解的是,調整的次數越多,所獲得的平均訪存時間也就越準確,但性能評估所需時間也就越大,故本領域人員可以根據實際情況進行設置。
需要說明的是,在具體實施中,可以采用多種方法對所述待評估的cache訪問各所述待訪問數據進行模擬,具體不受限制,只要根據所述方法可以獲得訪問各所述待訪問數據時,所述各配置參數在不同數值下對應的平均訪存時間即可。
在具體實施中,所述待評估的cache通常存在多個配置參數,下面以待評估的cache為m1,nvm為m2為例,對每個配置參數對應的平均訪存時間的具體計算過程進行詳細說明:
需要說明的是,為使本領域人員更好地理解和實施本發明,在本發明的以下的實施例中,所述平均訪存時間,即mcu訪問nvm及cache等存儲器所需的平均訪問時間。所述cache的命中率,即mcu在cache中命中待訪問 數據的概率。所述cache的缺失率,即mcu未在cache中命中待訪問數據的概率。
通常情況下,所述平均訪存時間t=m1命中率*m1訪問時間+m2命中率*m2訪問時間,其中,m1命中率即mcu在待評估的cache中命中待訪問數據的概率,m1訪問時間即mcu在待評估的cache中訪問數據的時間,m2命中率即mcu在nvm中命中待訪問數據的概率,m2訪問時間即mcu在nvm中訪問數據的時間。
其中,m2命中率=1-m1命中率=m1缺失率,m2訪問時間=m1訪問時間+m2到m1調入數據的時間,而m2到m1調入數據的時間=失效開銷t2,當所述待評估的cache的配置參數及nvm確定時,失效開銷t2也是確定的因此,平均訪存時間t=m1訪問時間+m1缺失率*失效開銷t2。由此可以獲得各個配置參數對應的平均訪存時間。
在具體實施中,所述待評估的cache通常包括一個以上的存儲區,所述一個以上的存儲區分別用于存儲不同的信息,因此,m1訪問時間及m1命中率或缺失率與所述待評估的cache中各個存儲區的訪問時間或命中率相關。
以所述待評估的cache包括k個存儲區為例,k≥1,且k為整數,在獲得某一配置參數在不同數值下對應的平均訪存時間時,可以先分別計算通過所述待評估的cache訪問各所述待訪問數據時,該配置參數在不同數值下對應的各個所述存儲區的訪問時間ti及命中率pi,i≤k,再獲取該配置參數在不同數值下對應的所述待評估的cache的失效開銷t2,最后根據訪問時間ti、命中率pi以及失效開銷t2,計算得到該配置參數在不同數值下對應的所述待評估的cache的平均訪存時間t,即t=∑ti+(1-∑pi)*t2。
需要說明的是,在具體實施中,計算訪問時間ti及命中率pi的操作,與獲取所述各配置參數在不同數值下對應的所述待評估的cache的失效開銷t2的操作,不存在執行順序的限制,既可以先計算訪問時間ti及命中率pi,再獲取所述各配置參數在不同數值下對應的所述待評估的cache的失效開銷t2,也可以先獲取所述各配置參數在不同數值下對應的所述待評估的cache的失效開銷t2,再計算訪問時間ti及命中率pi,還可以同時執行上述兩個操作。 但無論按照何種順序執行上述兩個操作,均不構成對本發明的限制,且均在本發明的保護范圍之內。
每獲得一組所述待評估的cache的配置參數,即按照上述的描述計算得到對應的平均訪存時間。保持其它配置參數不變,調整其中一個配置參數時,即可獲得被調整的配置參數在不同數值下對應的平均訪存時間。由此可以獲得各個配置參數在不同數值下對應的平均訪存時間。
例如,在計算某一cache塊大小對應的平均訪存時間t時,可以先獲得mcu在所述待評估的cache各個存儲區的ti及命中率pi,再獲得所述待評估的cache的失效開銷t2,最后根據t=∑ti+(1-∑pi)*t2,計算得到該cache塊大小對應的平均訪存時間t。每次調整cache塊大小后,均按照上述實施例中的描述進行計算,即可獲得cache塊大小在不同數值下對應的平均訪存時間。
步驟13,將所述各配置參數在不同數值下對應的平均訪存時間作為評估結果并輸出。
在具體實施中,根據所述各配置參數在不同數值下訪問各所述待訪問數據時的平均訪存時間,可以評估所述各配置參數對于cache平均訪存時間的影響,進而可以根據各配置參數與平均訪存時間的對應關系,確定各配置參數的合理數值,以得到最優的一組配置參數。平均訪存時間越小,對應的配置參數值越優,按照所得到的最優的一組配置參數設置緩存,可以使得所設計的緩存性能最佳。
由上述內容可知,在本發明實施例中所述的緩存性能的評估方法中,通過采用平均訪存時間來評估cache的性能,相對于采用命中率來評估cache的性能,由于所述平均訪存時間不僅與緩存的命中率相關,還與cache的訪問時間及失效開銷等特征參數相關,故平均訪存時間可以更加真實地反映緩存的真實性能,利用平均訪存時間來評估緩存的性能的準確性也就更高。
圖2~圖4為不同應用場景下,cache容量、cache塊大小及cache相聯度分別與缺失率q和平均訪存時間t之間的對應曲線,其中,所述缺失率q=1-命中率p。
如圖2所示,所述待評估的cache的配置參數為:cache塊大小=32byte,相聯度為全相聯,替換算法為lru替換算法,分別在aes、sha(哈希算法)、dhystone、comb(aes、sha及dhystone的組合)四種應用環境下,調整cache容量,分別得到cache容量與待評估的cache的缺失率q之間的對應曲線(如圖2(a)所示),以及得到cache容量與待評估的cache的平均訪存時間t之間的對應曲線(如圖2(b)所示)。
以所述待評估的cache應用在aes中為例,按照圖2(a)得到的曲線確定cache容量的最優值時,缺失率q的最小值所對應的cache容量值為最優值,即8192byte。按照圖2(b)得到的曲線確定cache容量的最優值時,平均訪存時間t的最小值所對應的cache容量值為最優值,即2048byte。
如圖3所示,所述待評估的cache的配置參數為:cache容量=512byte,相聯度為全相聯,替換算法為lru替換算法,分別在aes、sha及dhystone三種應用環境下,調整cache塊的大小,得到cache塊的大小與待評估的cache的缺失率q之間的對應曲線(如圖3(a)所示),以及得到cache塊的大小與待評估的cache的平均訪存時間t之間的對應曲線(如圖3(b)所示)。
以所述待評估的cache應用在sha中為例,按照圖3(a)得到的曲線確定cache塊的大小的最優值時,缺失率q的最小值所對應的cache塊的大小值為最優值,即128byte。按照圖3(b)得到的曲線確定cache塊的大小的最優值時,平均訪存時間t的最小值所對應的cache塊的大小值為最優值,即16byte。
如圖4所示,所述待評估的cache的配置參數為:cache容量=512byte,cache塊的大小=16byte,替換算法為lru替換算法,分別在aes、sha及dhystone三種應用環境下,調整cache的相聯度,得到cache的相聯度與待評估的cache的缺失率q之間的對應曲線(如圖4(a)所示),以及得到cache的相聯度與待評估的cache的平均訪存時間t之間的對應曲線(如圖4(b)所示)。
以所述待評估的cache應用在dhystone中為例,按照圖4(a)得到的曲線確定cache的相聯度的最優值時,缺失率q的最小值所對應的cache的相 聯度為最優值,即1(1表示直接映射)。按照圖4(b)得到的曲線確定cache的相聯度的最優值時,平均訪存時間t的最小值所對應的cache的相聯度的值為最優值,即0(0表示全相聯)。
從圖2~圖4可以看出,在實際應用中,采用cache的命中率來評估cache的性能,與采用cache的平均訪存時間來評估cache的性能,所選擇的cache的配置參數可能完全不同。然而,可以理解的是,cache的平均訪存時間與cache的命中率相關,而且與cache的訪問時間及失效開銷相關,更能反映cache的真實性能,因此利用cache的平均訪存時間來評估cache的性能,評估結果的準確性也就越高。
在本發明的一實施例中,可以參照圖5示出的cache的模擬方法,對本發明實施例中所述待評估的cache訪問所述待訪問數據進行模擬,所述方法可以包括如下步驟:
步驟501,獲取待評估的緩存的配置參數。
在具體實施中,所述配置參數的參數可以通過多種方式進行獲取,比如,所述配置參數可以是用戶輸入的,也可以是通過訪問其它存儲介質獲取到的。當然,還可以存在其它獲取方式,只要所獲取到的配置參數與具體的應用需求相對應即可。
步驟502,對所述存儲地址進行劃分,獲得所述存儲地址對應的緩存塊的地址信息。
在設置有cache的嵌入式soc中,cache通常包括若干個cache塊,每個cache塊的大小相等。相似地,所述待評估的cache也設置有若干個緩存塊,每個緩存塊的大小相等。每個存儲地址對應一緩存塊。所述存儲地址通常為所對應的緩存塊的起始地址信息。
在具體實施中,對所述存儲地址進行劃分時,通常可以獲得如下三部分信息:所述存儲地址對應的cache塊的標識信息和地址索引信息,以及所述存儲地址在所述cache塊中的偏移信息。其中,所述cache塊的標識信息和地址索引信息,作為所述cache塊地址信息。
具體地,所述cache塊的標識信息可以唯一標識一cache塊,通常為所 述存儲地址的高位。通過所述地址索引信息可以在相應的存儲區中的到所述cache塊的信息。所述偏移信息為所述存儲地址在所述cache塊中的偏移量。根據獲取到的所述待模擬cache的容量、cache塊大小及相聯度等信息,可以在所述存儲地址中分別獲得對應的cache塊的標識信息和地址索引信息,以及所述存儲地址在所述對應的cache塊中的偏移信息。
步驟503,根據所述存儲地址對應的緩存塊的地址信息,搜索第一存儲區,并根據搜索結果判斷所述存儲地址在所述第一存儲區中是否命中。
在具體實施中,所述第一存儲區適于存儲存儲地址的標識信息以及對應的使用頻度信息,所述第一存儲區所存儲的存儲地址的使用頻度均大于預設頻度。也就是說,所述第一存儲區適于存儲mcu經常使用的存儲地址的標識信息及相應的使用頻度。其中,所述預設頻度可以根據mcu的實際訪問數據的情況進行設置。
在具體實施中,所述第一存儲區可以劃分為多個組,每組中可以存儲多個存儲地址的標識信息以及對應的使用頻度信息。其中,所述第一存儲區中組的數量與cache的相聯度相關,比如,cache的相聯度為4時,所述第一存儲區包含4組。當cache的相聯度為2時,所述第一存儲區包含2組。每組中可以存儲的存儲地址的標識信息的數量,與所述第一存儲區所存儲的存儲地址的總數和組數相關。比如,當所述第一存儲區所存儲的存儲地址的總數為20,cache的相聯度為4時,每組中可以存儲的存儲地址的標識信息為5個。當所述第一存儲區所存儲的存儲地址的總數為20,cache的相聯度為2時,每組中可以存儲的存儲地址的標識信息為10個。
在具體實施中,根據所述存儲地址對應的cache塊的地址索引信息,搜索所述第一存儲區中存儲的信息,由此可以獲得所述第一存儲區中各組在相應位置上的標識信息。
在具體實施中,獲得第一存儲區中各組在相應位置上的標識信息后,分別將搜索到的標識信息與所述存儲地址對應的cache塊的標識信息進行比較。當二者相同時,判定所述存儲地址在所述第一存儲區中命中,否則表示所述存儲地址在第一存儲區中缺失,則判定所述存儲地址在所述第一存儲區中未 命中。
當所述存儲地址在所述第一存儲區中命中時,執行步驟504,否則執行步驟505。
步驟504,更新所述第一存儲區中存儲的信息,以及從第二存儲區中讀取對應數據并返回。
在具體實施中,所述第二存儲區適于存儲與所述第一存儲區所存儲的存儲地址對應的數據。當所述存儲地址在所述第一存儲區中命中時,更新所述第一存儲區中所述存儲地址對應的cache塊的使用頻度信息,以及從所述第二存儲區中讀取相應的數據并返回。
需要說明的是,在具體實施中,所述第二存儲區也可以分為多組,每組中存儲的數據與所述第一存儲區中各組所存儲的cache塊的標識信息相對應。執行步驟503的同時,可以同時執行讀取所述第二存儲區的操作,最終根據步驟503的判斷結果,將所述第二存儲區中對應的數據返回至mcu,進一步縮短cache的模擬時間。
需要說明的是,在具體實施中,執行更新所述第一存儲區中存儲的信息的操作,以及執行從第二存儲區中讀取對應數據并返回的操作,不存在實現順序的限制,二者既可以同時執行,也可以順序執行。
步驟505,根據所述緩存塊的地址信息搜索第三存儲區中存儲的信息,并根據搜索結果判斷所述存儲地址在所述第三存儲區中是否命中。
在具體實施中,所述存儲地址在所述第一存儲區中未命中時,表示所述存儲地址在第一存儲區中缺失。根據所述cache塊的地址索引信息,搜索所述第三存儲區,可以獲得所述第三存儲區對應位置上的數據及所述數據對應的cache塊的標識信息。將所述存儲地址對應cache塊的標識信息與搜索到的標識信息進行比較,當二者相同時,判定所述存儲地址在所述第三存儲區中命中,否則判定所述存儲地址在所述第三存儲區中未命中。
其中,所述第三存儲區適于存儲預取的數據及對應的cache塊的地址索引信息及標識信息。所述預取的數據可以僅為一個,也可以為多個,具體不受限制。
當所述存儲地址在所述第三存儲區中命中時,執行步驟506,否則執行步驟507。
步驟506,更新所述第一存儲區及第二存儲區中存儲的信息,從所述第三存儲區中讀取對應的數據并返回。
在具體實施中,當所述存儲地址在所述第三存儲區中命中時,可以先根據在所述第三存儲區中命中的數據所對應的cache塊的地址索引信息,確定所述第一存儲區中對應的位置是否已存儲相應的信息。
若所述第一存儲區中有某一組中對應的位置未存儲相應的信息,則將在所述第三存儲區中命中的數據所對應的cache塊的標識信息以及對應的使用頻度信息寫入至該位置。
若所述第一存儲區所有組中對應的位置均已存儲相應的信息,則可以根據所述第一存儲器中各cache塊的使用頻度信息,按照預先獲取到的替換算法,對所述第一存儲區的cache塊進行替換,將在所述第三存儲區中命中的緩存塊的標識信息以及對應的使用頻度信息寫入至被替換的位置。
需要說明的是,所述替換算法作為待模擬cache的一配置參數,可以在對所述待模擬cache進行模擬之前預先獲取到。在具體實施中,所述替換算法可以是為先進先出替換算法(fifo),也可以為lru,還可以為二叉樹偽lru替換算法(pseudo-lru)。當然,還可以為其他替換算法,具體不作限制。
更新所述第一存儲區后,將在所述第三存儲區中命中的數據寫入至所述第二存儲區的相應位置處。從第三存儲區中讀取所命中的數據并返回至mcu。需要說明的是,更新所述第一、第二存儲區以及向mcu返回數據的操作既可以同時執行,也可以順序執行。
從所述第三存儲區讀取所命中的數據后,按照預設順序從nvm中進行數據預取,并將預取到的數據存儲在所述第三存儲區中,即通過數據預取更新所述第三存儲區。
需要說明的是,在具體實施中,所述預設順序作為待評估的cache的一配置參數,可以在對所述待評估的cache進行模擬之前預先獲取到。比如, 所述預設順序可以為:在所訪問存儲地址上加1。
步驟507,從所述nvm中讀取對應的數據并返回,以及更新所述第三存儲區中存儲的信息。
在具體實施中,所述存儲地址在所述第三存儲區中未命中時,表示所述存儲地址在所述第三存儲區中缺失,此時,從所述nvm中讀取對應的數據并返回至mcu,并更新所述第三存儲區中存儲的信息,也就是將從nvm中讀取的數據寫入至所述第三存儲區。
為了使本領域技術人員更好地理解和實現本發明,下面結合圖2,對上述緩存模擬過程的工作原理進行詳細描述。
如圖6所示,以所述待評估的緩存的相聯度為2、nvm為flash為例,所述第一存儲區包括兩個組,每組中分別存儲若干個存儲地址的標識信息tag及對應的使用頻度信息repinfo。第二存儲區中包括兩個組,每組中存儲的數據與所述第一存儲區中各組所存儲的存儲地址的標識信息對應。
接收到mcu發送的待訪問數據的存儲地址addr后,對所述存儲地址addr進行劃分,分別獲得對應的標識信息tag、地址索引信息index及偏移信息offset。根據所述地址索引信息index搜索第一存儲區,并判斷所述存儲地址addr是否在所述第一存儲區中命中。同時讀取所述第二存儲區。若在第一存儲區中命中,則從第二存儲區中搜索到的數據中選擇一個并返回至mcu,否則搜索第三存儲區中存儲的信息。
若在第三存儲區中命中,則直接從第三存儲區中讀取相應的數據并返回至mcu,否則從flash中讀取相應的數據并返回至mcu。
由上述內容可以看出,本發明實施例中的緩存模擬方法中,由于該緩存方法可以給出在各存儲區命中所需的時間,進而可以計算出存儲系統的平均訪存時間,該指標反映了待評估的cache的真實加速效果,因此更有利于準確地進行緩存性能的估計。
在本發明的另一實施例中,可以參照圖7示出的緩存的模擬方法,對本發明實施例中所述待評估的緩存訪問所述待訪問數據進行模擬,所述方法可以包括如下步驟:
步驟701,獲取待評估的緩存的配置參數。
步驟702,對所述存儲地址進行劃分,獲得所述存儲地址對應的緩存塊的地址信息。
需要說明的是,在具體實施中,步驟701及702可以分別參照上述對步驟501及502的描述進行實施,此處不再贅述。
步驟703,根據所述存儲地址對應的緩存塊的地址信息搜索所述第四存儲區,并根據搜索結果判斷所述存儲地址在所述第四存儲區中是否命中。
在具體實施中,所述第四存儲區適于存儲前一次在所述第一存儲區中命中時所對應的cache塊的地址信息。搜索所述第四存儲區,獲得前一次在所述第一存儲區中命中時對應的cache塊的地址信息,并將其與所述存儲地址對應的緩存塊的地址信息進行比較。若二者相同,則所述存儲地址在所述第四存儲區中命中,否則未命中。
當所述存儲地址在所述第四存儲區中命中時,執行步驟704,否則執行步驟705。
步驟704,從所述第二存儲區中讀取對應的數據并返回。
由于mcu訪問前一次在所述第一存儲區中命中的存儲地址的頻度較高,因此,在搜索第一存儲區之前,通過先判斷所述存儲地址在所述第一存儲區中是否命中,且在命中時,直接從第二存儲區中讀取對應的數據并返回,可以有效減少對第三存儲區及第一存儲區的讀取次數。
步驟705,根據所述存儲地址對應的緩存塊的地址信息,搜索第一存儲區,并根據搜索結果判斷所述存儲地址在所述第一存儲區中是否命中。
當所述存儲地址在所述第一存儲區中命中時,執行步驟706,否則執行步驟707。
步驟706,更新所述第一存儲區及第四存儲區中存儲的信息,以及從第二存儲區中讀取對應數據并返回。
需要說明的是,在本發明的實施例中,當所述存儲地址在所述第一存儲區中命中時,除更新所述第一存儲區外,還要更新所述第四存儲區,以使得 所述第四存儲區中所存儲的地址信息始終為前一次在所述第一存儲區中命中的地址信息。
步驟707,根據所述緩存塊的地址信息搜索第三存儲區中存儲的信息,并根據搜索結果判斷所述存儲地址在所述第三存儲區中是否命中。
當所述存儲地址在所述第三存儲區中命中時,執行步驟708,否則執行步驟709。
步驟708,更新所述第一存儲區、第二存儲區及第四存儲區中存儲的信息,從所述第三存儲區中讀取對應的數據并返回。
需要說明的是,在本發明的實施例中,當所述存儲地址在所述第三存儲區中命中時,除更新所述第一存儲區及第二存儲區外,還要更新所述第四存儲區,以使得所述第四存儲區中所存儲的地址信息始終為前一次在所述第一存儲區中命中的地址信息。
步驟709,從所述nvm中讀取對應的數據并返回,以及更新所述第三存儲區中存儲的信息。
需要說明的是,在具體實施中,可以分別參照上述對步驟關于步驟503~507的描述實施步驟705~709,此處不再贅述。
為了使本領域技術人員更好地理解和實現本發明,下面結合圖8,對上述緩存模擬過程的工作原理進行詳細描述。
如圖8所示,以所述待評估的cache的相聯度為4、nvm為flash為例,所述第一存儲區包括4個組,每組中分別存儲若干個存儲地址的標識信息tag及對應的使用頻度信息repinfo。第二存儲區中僅包括1個組,每組中存儲的數據與所述第一存儲區中各組所存儲的存儲地址的標識信息對應。
接收到mcu發送的待訪問數據的存儲地址addr后,對所述存儲地址addr進行劃分,分別獲得對應的標識信息tag、地址索引信息index及偏移信息offset。
根據所述地址索引信息index搜索第四存儲區,并判斷所述存儲地址在所述第四存儲區是否命中。若在所述第四存儲區命中,則從所述第二存儲區中 搜索相應的數據并返回至mcu,否則根據所述地址索引信息index搜索第一存儲區。
判斷所述存儲地址addr是否在所述第一存儲區中命中,若在第一存儲區中命中,則從第二存儲區中搜索相應的數據并返回至mcu,否則搜索第三存儲區中存儲的信息。
若在第三存儲區中命中,則直接從第三存儲區中讀取相應的數據并返回至mcu,否則從flash中讀取相應的數據并返回至mcu。
由上述內容可知,通過設置第四存儲區,在對待訪問數據的存儲地址進行劃分后,先判斷所述存儲地址在所述第四存儲區中是否命中,再依次判斷在第一存儲區及第三存儲區中是否命中,可以有效減少第一存儲區及第二存儲區的讀取次數,降低cache模擬的功耗。并且,由于該緩存方法可以給出在各存儲區命中所需的時間,進而可以計算出待評估的cache的平均訪存時間,該指標反映了待評估的cache的真實加速效果,因此更有利于準確地進行緩存性能的估計。
需要說明的是,在具體實施中,還可以采用其它緩存模擬方法來模擬待評估的cache的工作流程,具體不受限制,只要根據模擬的工作流程可以計算得到所述各配置參數在不同數值下對應的平均訪存時間。可以理解的是,具體無論采用何種方法來模擬待評估的cache的工作流程,均不構成對本發明的限制,且均在本發明的保護范圍之內。
為了使本領域技術人員更好地理解和實現本發明,以下對上述方法對應的裝置進行詳細描述。
參照圖9,本發明實施例提供了一種緩存性能的評估裝置,所述裝置可以包括:獲取單元91,模擬單元92,計算單元93以及評估單元94。其中:
所述獲取單元91適于獲取n個待訪問數據的存儲地址,n為自然數;
所述模擬單元92適于調整待評估的緩存的各配置參數,模擬所述待評估的緩存訪問各所述待訪問數據;
所述計算單元93適于根據所述模擬子單元的模擬過程,獲得訪問各所述 待訪問數據時,所述各配置參數在不同數值下對應的平均訪存時間;
所述評估單元94適于將所述各配置參數在不同數值下訪問各所述待訪問數據時的平均訪存時間作為評估結果并輸出。
在具體實施中,所述獲取單元91可以采用多種方式獲取所述待訪問數據的存儲地址。在本發明的一實施例中,可以通過提取待評估的緩存在某一應用場景下的地址訪存蹤跡信息(memoryaccesstrace,mat),來獲取待訪問數據的存儲地址。其中,所述mat中不僅可以包括待訪問數據及對應的存儲地址,還包括mcu在nvm中訪問所述待訪問數據所需的時間,這樣在后續對待評估的緩存進行性能評估時,則無須再獲取mcu在nvm中訪問所述待訪問數據所需的訪問時間,為后續進行性能評估提供便利。
在具體實施中,所述待評估的緩存的配置參數包括:所述待評估的緩存的特征參數以及影響所述待評估的緩存性能的系統參數。其中,所述待評估的cache的特征參數可以包括:所述待評估的cache的容量、cache塊的大小,cache相聯度以及替換算法等。影響所述待評估的cache性能的系統參數可以包括:nvm、cache及mcu三者的訪問時間、訪問功耗及數據位寬等。當然,所述配置參數還可以包括其他參數,并不局限于上述實施例所給出的參數。并且,所獲取到的配置參數中可以僅包含一個參數,也可以包含兩個或兩個以上的參數。并且,所獲取到的配置參數與所述待評估的cache的應用需求相對應。
在具體實施中,所述模擬單元92對各配置參數調整的順序不受限制。另外,在對每個配置參數的調整過程中,調整的次數不受限制,并且各個配置參數調整的次數可以相同,也可以不同。可以理解的是,調整的次數越多,所獲得的平均訪存時間也就越準確,但性能評估所需時間也就越大,故本領域人員可以根據實際情況進行設置。
在具體實施中,所述待評估的緩存包括至少一個存儲區,所述至少一個存儲區分別用于存儲不同的信息,相應地,所述計算單元93可以包括:第一計算子單元931,獲取子單元932,以及第二計算子單元933。其中:
所述第一計算子單元931,適于分別計算通過所述待評估的緩存訪問各所 述待訪問數據時,所述各配置參數在不同數值下對應的各個所述存儲區的訪問時間及命中率;
所述獲取子單元932適于獲取所述各配置參數在不同數值下對應的所述待評估的緩存的失效開銷;
所述第二計算子單元933適于根據所述各配置參數在不同數值下對應的所述待評估的緩存的命中率、訪問時間及失效開銷,計算得到所述各配置參數在不同數值下對應的所述待評估的緩存的平均訪存時間。
在具體實施中,所述待評估的cache通常存在多個配置參數,下面以待評估的cache為m1,nvm為m2為例,對所述第二計算子單元933每個配置參數對應的平均訪存時間的具體計算過程進行詳細說明:
通常情況下,所述平均訪存時間t=m1命中率*m1訪問時間+m2命中率*m2訪問時間,其中,m1命中率即mcu在待評估的cache中命中待訪問數據的概率,m1訪問時間即mcu在待評估的cache中訪問數據的時間,m2命中率即mcu在nvm中命中待訪問數據的概率,m2訪問時間即mcu在nvm中訪問數據的時間。
其中,m2命中率=1-m1命中率=m1缺失率,m2訪問時間=m1訪問時間+m2到m1調入數據的時間,而m2到m1調入數據的時間=失效開銷t2,當所述待評估的cache的配置參數及nvm確定時,失效開銷t2也是確定的因此,平均訪存時間t=m1訪問時間+m1缺失率*失效開銷t2。由此可以獲得各個配置參數對應的平均訪存時間。
在具體實施中,所述待評估的cache通常包括一個以上的存儲區,所述一個以上的存儲區分別用于存儲不同的信息,因此,m1訪問時間及m1命中率或缺失率與所述待評估的cache中各個存儲區的訪問時間或命中率相關。
以所述待評估的cache包括k個存儲區為例,k≥1,且k為整數,在獲得某一配置參數在不同數值下對應的平均訪存時間時,所述第一計算子單元931可以先分別計算通過所述待評估的cache訪問各所述待訪問數據時,該配置參數在不同數值下對應的各個所述存儲區的訪問時間ti及命中率pi,i≤k,再由所述獲取子單元932獲取該配置參數在不同數值下對應的所述待評估的 cache的失效開銷t2,最后由所述第二計算子單元933根據訪問時間ti、命中率pi以及失效開銷t2,計算得到該配置參數在不同數值下對應的所述待評估的cache的平均訪存時間t,即t=∑ti+(1-∑pi)*t2。
每獲得一組所述待評估的cache的配置參數,即按照上述的描述計算得到對應的平均訪存時間。保持其它配置參數不變,調整其中一個配置參數時,即可獲得被調整的配置參數在不同數值下對應的平均訪存時間。由此可以獲得各個配置參數在不同數值下對應的平均訪存時間。
例如,在計算某一cache塊大小對應的平均訪存時間t時,所述第一計算子單元931可以先獲得mcu在所述待評估的cache各個存儲區的ti及命中率pi,再由所述獲取子單元932獲得所述待評估的cache的失效開銷t2,最后由所述第二計算子單元933根據t=∑ti+(1-∑pi)*t2,計算得到該cache塊大小對應的平均訪存時間t。每次調整cache塊大小后,均按照上述實施例中的描述進行計算,即可獲得cache塊大小在不同數值下對應的平均訪存時間。
由于所述平均訪存時間不僅與緩存的命中率相關,還與緩存的訪問時間及失效開銷等特征參數相關,故平均訪存時間可以更加真實地反映緩存的真實性能,利用平均訪存時間來評估緩存的性能的準確性也就更高。
在具體實施中,所述模擬單元92適于對所述待評估的緩存訪問其中任一所述待訪問數據進行模擬,直至所述待評估的緩存訪問n個所述待訪問數據。
在本發明的一實施例中,如圖10所示,所述模擬單元92可以包括:地址劃分子單元101,存儲子單元102,第一處理子單元103以及第一執行子單元104。其中:
所述地址劃分子單元101適于當獲取到所述待評估的緩存的配置參數時,對所述存儲地址進行劃分,獲得所述存儲地址對應的緩存塊的地址信息;
所述存儲子單元包括:第一存儲區1021,適于存儲存儲地址的標識信息以及對應的使用頻度信息,所述第一存儲區所存儲的存儲地址的使用頻度均大于預設頻度;
所述第一處理子單元103適于根據所述存儲地址對應的緩存塊的地址信 息,搜索第一存儲區1021,并根據搜索結果判斷所述存儲地址在所述第一存儲區1021中是否命中;
所述第一執行子單元104適于根據所述存儲地址在所述第一存儲區1021中是否命中的判斷結果,獲取相應的數據并返回。
在具體實施中,所述存儲子單元還包括:第二存儲區1022,適于存儲與所述第一存儲區1021所存儲的存儲地址對應的數據;
所述第一執行子單元104包括:第一執行模塊1041,適于更新所述第一存儲區1021中存儲的信息,以及從所述第二存儲區1022中讀取對應數據并返回。
在具體實施中,所述存儲子單元102還包括:第三存儲區1023,適于存儲預取的數據及對應的緩存塊的地址信息;
所述第一執行子單元104包括:第一處理模塊1042以及第二執行模塊1043,其中:
所述第一處理模塊1042適于當所述存儲地址在所述第一存儲區1021中未命中時,根據所述緩存塊的地址信息搜索所述第三存儲區1023中存儲的信息;根據搜索結果判斷所述存儲地址在所述第三存儲區1023中是否命中;
所述第二執行模塊1043,適于根據所述存儲地址在所述第三存儲區1023中是否命中的判斷結果,獲取相應的數據并返回。
在具體實施中,所述第二執行模塊1043包括:
第一執行子模塊1043a,適于當所述存儲地址在所述第三存儲區1023中命中時,更新所述第一存儲區1021及第二存儲區1022中存儲的信息,從所述第三存儲區1023中讀取對應的數據并返回;按照預設順序從nvm中進行數據預取,并將預取到的數據存儲在所述第三存儲區1023中;
第二執行子模塊1043b,適于當所述存儲地址在所述第三存儲區1023中未命中時,從所述nvm中讀取對應的數據并返回,以及更新所述第三存儲區1023中存儲的信息。
在具體實施中,所述第二執行子模塊1043b適于當所述第一存儲區1021 的對應位置處均已存儲相應的信息時,采用如下步驟更新所述第一存儲區1021:
根據所述第一存儲區1021中各緩存塊的使用頻度信息,按照預先獲取到的替換算法,對所述第一存儲區1021的緩存塊進行替換,將在所述第三存儲區1023中命中的緩存塊的標識信息以及對應的使用頻度信息寫入至被替換的位置。
在具體實施中,所述緩存塊的地址信息包括:所述緩存塊的標識信息及地址索引信息。
由上述內容可以看出,采用上述實施例中所述的模擬裝置進行緩存性能評估時,可以計算得到待評估的緩存的各個配置參數對應的平均訪存時間,進而根據各個配置參數的平均訪存時間評估該緩存的性能,提高緩存性能評估的準確性。
在本發明的另一實施例中,參照圖11,相對于圖10示出的模擬單元的實施例,所述存儲子單元102還包括:第四存儲區1024,適于存儲前一次在所述第一存儲區1021中命中時所對應的緩存塊的地址信息;
所述模擬單元92還包括:第二處理子單元105及第二執行子單元106。其中:
所述第二處理子單元105適于在所述根據所述存儲地址對應的緩存塊的地址信息,搜索第一存儲區1021之前,根據所述存儲地址對應的緩存塊的地址信息搜索所述第四存儲區1024,判斷所述存儲地址在所述第四存儲區1024中是否命中;
所述第二執行子單元106適于當所述存儲地址在所述第四存儲區1024中命中時,從所述第二存儲區1022中讀取對應的數據并返回。
相應地,所述第一處理子單元103適于當所述存儲地址在所述第四存儲區1024中未命中時,搜索所述第一存儲區1021,并根據搜索結果判斷所述存儲地址在所述第一存儲區1021中是否命中。
需要說明的是,在具體實施中,所述模擬單元92可以存在多種結構,并 不限于上述實施例中的結構。可以理解的是,所述模擬單元92的結構不同,對平均訪存時間的影響也就不同。但無論所述模擬單元92的具體結構如何,均不夠成對本發明的限制,且均在本發明的保護范圍之內。
為了使本領域人員更加清楚、直觀地理解和實現本發明,將不同模擬單元對平均訪存時間t的影響進行了比對。
參照圖10、11及12,以所述待評估的cache應用在aes中,且被調整的參數為flash的延遲時間flashlatency為例,所述待評估的cache的配置參數為:cache容量=1024byte,cache塊的大小=32byte,cache的相聯度為全相聯,flash位寬=32bit。曲線1為mcu直接從flash中讀取數據所需的平均訪存時間曲線,曲線2、3及4為mcu經模擬單元獲取待訪問數據所需的平均訪存時間曲線。其中,曲線2為模擬單元中設置第一執行子模塊1043a,但未設置第四存儲區1024時,對應的平均訪存時間曲線;曲線3為模擬單元中未設置第一執行子模塊1043a、第一存儲區1021、第二存儲區1022及第三存儲區1023,僅設置有第四存儲區1024時,所對應的平均訪存時間曲線;曲線4為模擬單元中同時設置有第一執行子模塊1043a、第一存儲區1021、第二存儲區1022、第三存儲區1023及第四存儲區1024時,所對應的平均訪存時間曲線。
從圖12中可以看出,在flash的延遲時間相同的情況下,曲線1對應的平均訪存時間<曲線2對應的平均訪存時間<曲線3對應的平均訪存時間<曲線4對應的平均訪存時間。也就是說,應用本發明實施例中的模擬單元可以減小mcu訪問數據時所需的平均訪存時間,并且,調整模擬單元92的結構,可以對平均訪存時間產生一定的影響,尤其第四存儲區1024的設置,使得mcu訪問數據時所需的平均訪存時間最小。
由上述內容可以看出,采用上述實施例中所述的模擬裝置進行緩存性能評估時,可以計算得到待評估的緩存的各個配置參數所對應的平均訪存時間,進而根據緩存的平均訪存時間評估該緩存的性能,提高緩存性能評估的準確性。另外,相對于圖10中示出的緩存模擬裝置,可以有效減少第一存儲區及第二存儲區的讀取次數,降低緩存模擬的功耗。
本領域普通技術人員可以理解上述實施例的各種方法中的全部或部分步驟是可以通過程序來指令相關的硬件來完成,該程序可以存儲于一計算機可讀存儲介質中,存儲介質可以包括:rom、ram、磁盤或光盤等。
雖然本發明披露如上,但本發明并非限定于此。任何本領域技術人員,在不脫離本發明的精神和范圍內,均可作各種更動與修改,因此本發明的保護范圍應當以權利要求所限定的范圍為準。