本申請涉及集成電路開發(fā),具體涉及一種cache資源配置裝置、內(nèi)存訪問控制裝置及芯片。
背景技術(shù):
1、在支持輸入/輸出地址翻譯單元(input/output?memory?management?unit,iommu)或系統(tǒng)地址翻譯單元(system?memory?management?unit,smmu)的系統(tǒng)中,iommu或smmu會(huì)給各個(gè)外設(shè)(外部設(shè)備)提供地址服務(wù),外設(shè)訪存時(shí)提供的是虛擬地址,虛擬地址在經(jīng)過iommu或smmu翻譯成物理地址后,再訪問內(nèi)存,在這個(gè)過程中引入了iommu或smmu執(zhí)行地址翻譯的過程。
2、為了提高外設(shè)訪存的效率,常用的處理技術(shù)就是再iommu或smmu內(nèi)部設(shè)置一個(gè)地址轉(zhuǎn)換緩存單元(translation?local?buffer,tlb),在iommu或smmu進(jìn)行一次地址翻譯后,此次地址翻譯相關(guān)的信息會(huì)被緩存在tlb中,下次再進(jìn)行相同頁面(page)的地址翻譯時(shí),如命中tlb中的相關(guān)條目(entry),則可以直接獲得物理地址而跳過地址翻譯的流程,減少外設(shè)因地址翻譯而引入的訪存延遲。
3、而為了提高命中率,tlb一般會(huì)被設(shè)置為全相聯(lián)結(jié)構(gòu)。在使用時(shí),所有連接到iommu或smmu的外設(shè)都可以使用tlb,而各個(gè)外設(shè)發(fā)送給傳輸流的密度是不同的,也不是均衡的,存在時(shí)間和空間上的不確定性,如果在某個(gè)時(shí)間段,某個(gè)不太重要的外設(shè)突發(fā)了大段dma操作,就有可能導(dǎo)致整個(gè)tlb的緩存全部被該外設(shè)占用,會(huì)影響后需其余外設(shè)的地址翻譯性能。
技術(shù)實(shí)現(xiàn)思路
1、本申請的目的在于提出一種cache資源配置裝置、內(nèi)存訪問控制裝置及芯片,以提高全相聯(lián)cache資源的有效使用率。
2、為實(shí)現(xiàn)上述目的,根據(jù)本申請第一方面,提供一種cache資源配置裝置,包括:
3、接收模塊,用于接收外設(shè)傳輸?shù)脑L問請求,根據(jù)所述訪問請求獲取設(shè)備id和虛擬地址數(shù)據(jù),根據(jù)所述設(shè)備id獲取devid,并將所述devid和虛擬地址數(shù)據(jù)發(fā)送至訪問監(jiān)控模塊;
4、訪問監(jiān)控模塊,用于接收所述devid和虛擬地址數(shù)據(jù),根據(jù)所述虛擬地址數(shù)據(jù)統(tǒng)計(jì)所述devid對應(yīng)的緩存分區(qū)在當(dāng)前周期的訪問流量,將所述虛擬地址數(shù)據(jù)發(fā)送至所述全相聯(lián)cache,并將所述訪問流量發(fā)送至容量調(diào)整模塊;其中,所述全相聯(lián)cache包括多個(gè)緩存分區(qū);
5、分區(qū)容量調(diào)整模塊,用于周期性地根據(jù)所述多個(gè)緩存分區(qū)在當(dāng)前周期的訪問流量對所述多個(gè)緩存分區(qū)的分配容量進(jìn)行動(dòng)態(tài)調(diào)整。
6、根據(jù)本申請第二方面,提供一種內(nèi)存訪問控制裝置,包括地址翻譯單元、全相聯(lián)cache以及根據(jù)本申請第一方面所述的cache資源配置裝置;
7、所述地址翻譯單元,用于接收所述外設(shè)傳輸?shù)脑L問請求,并將所述訪問請求轉(zhuǎn)發(fā)給所述cache資源配置裝置;
8、所述全相聯(lián)cache包括cache控制器和cache存儲(chǔ)器;
9、所述cache控制器,用于根據(jù)所述虛擬地址數(shù)據(jù)確定所述全相聯(lián)cache中與所述虛擬地址數(shù)據(jù)對應(yīng)的物理地址數(shù)據(jù),若是,則從對應(yīng)的組的cacheline中取出命中的物理地址數(shù)據(jù)并發(fā)送至內(nèi)存控制器以訪問內(nèi)存,若否,則返回未命中結(jié)果給所述地址翻譯單元;
10、所述地址翻譯單元,進(jìn)一步用于根據(jù)所述未命中結(jié)果,根據(jù)所述訪問請求獲取虛擬地址數(shù)據(jù),將所述虛擬地址數(shù)據(jù)翻譯為物理地址數(shù)據(jù),將當(dāng)前翻譯的物理地址數(shù)據(jù)發(fā)送至所述內(nèi)存控制器以訪問內(nèi)存,并將當(dāng)前翻譯的物理地址數(shù)據(jù)發(fā)送至所述cache控制器;
11、所述cache控制器,進(jìn)一步用于將所述當(dāng)前翻譯的物理地址數(shù)據(jù)存儲(chǔ)至所述對應(yīng)的組的一條cacheline中或丟棄。
12、根據(jù)本申請第三方面,提供一種芯片,包括根據(jù)本申請第一方面所述的cache資源配置裝置,或者,包括根據(jù)本申請第二方面所述的內(nèi)存訪問控制裝置。
13、實(shí)施上述一種cache資源配置裝置、內(nèi)存訪問控制裝置及芯片具有以下有益效果:
14、通過訪問監(jiān)控模塊統(tǒng)計(jì)各個(gè)外設(shè)對全相聯(lián)cache的各個(gè)緩存分區(qū)的訪問流量,并周期性地根據(jù)各個(gè)緩存分區(qū)在當(dāng)前周期的訪問流量,動(dòng)態(tài)調(diào)整各個(gè)外設(shè)對應(yīng)的緩存分區(qū)的分配容量,實(shí)現(xiàn)了根據(jù)多個(gè)外設(shè)的實(shí)際訪問需求動(dòng)態(tài)調(diào)整全相聯(lián)cache資源,使得全相聯(lián)cache資源能夠更加合理地分配給各個(gè)外設(shè),能夠適應(yīng)多個(gè)外設(shè)共用一個(gè)iommu或smmu的情況,解決了因某個(gè)不太重要的外設(shè)突發(fā)了大段dma操作導(dǎo)致整個(gè)tlb的緩存全部被該外設(shè)占用,影響后續(xù)其余外設(shè)的地址翻譯性能的問題。
1.一種cache資源配置裝置,其特征在于,包括:
2.根據(jù)權(quán)利要求1所述的cache資源配置裝置,其特征在于,所述分區(qū)容量調(diào)整模塊,進(jìn)一步用于:
3.根據(jù)權(quán)利要求2所述的cache資源配置裝置,其特征在于,所述分區(qū)容量調(diào)整模塊,進(jìn)一步用于:
4.根據(jù)權(quán)利要求3所述的cache資源配置裝置,其特征在于,任一緩存分區(qū)在每個(gè)周期的容量增量和容量減量均為δp;其中,δp為預(yù)設(shè)的整數(shù)值,表示增加或減少的cacheline數(shù)目,所述緩存分區(qū)的分配容量表示緩存分區(qū)包含的cacheline數(shù)目。
5.一種內(nèi)存訪問控制裝置,其特征在于,包括地址翻譯單元、全相聯(lián)cache以及根據(jù)權(quán)利要求1~4中任一項(xiàng)所述的cache資源配置裝置;
6.根據(jù)權(quán)利要求5所述的內(nèi)存訪問控制裝置,其特征在于,所述內(nèi)存訪問控制裝置還包括調(diào)度控制模塊;
7.根據(jù)權(quán)利要求6所述的內(nèi)存訪問控制裝置,其特征在于,所述調(diào)度控制模塊,進(jìn)一步用于確定對應(yīng)緩存分區(qū)中是否存在至少一個(gè)空閑的cacheline,若是,則將所述當(dāng)前翻譯的物理地址數(shù)據(jù)存儲(chǔ)至任一空閑的cacheline中;若否,則當(dāng)所述訪問請求對應(yīng)的設(shè)備id對應(yīng)的優(yōu)先級(jí)低于對應(yīng)緩存分區(qū)中的任一條cacheline對應(yīng)的設(shè)備id對應(yīng)的優(yōu)先級(jí)時(shí),確定將所述當(dāng)前翻譯的物理地址數(shù)據(jù)丟棄。
8.根據(jù)權(quán)利要求6所述的內(nèi)存訪問控制裝置,其特征在于,所述調(diào)度控制模塊,進(jìn)一步用于當(dāng)所述訪問請求對應(yīng)的設(shè)備id對應(yīng)的優(yōu)先級(jí)高于或等于對應(yīng)緩存分區(qū)中的至少一條cacheline對應(yīng)的設(shè)備id對應(yīng)的優(yōu)先級(jí)時(shí),從該至少一條cacheline中選擇優(yōu)先級(jí)最低的至少一條cacheline,并從所述優(yōu)先級(jí)最低的至少一條cacheline中選擇在最近預(yù)設(shè)時(shí)間內(nèi)的使用次數(shù)最少的一條cacheline,用于存儲(chǔ)所述當(dāng)前翻譯的物理地址數(shù)據(jù)。
9.根據(jù)權(quán)利要求8所述的內(nèi)存訪問控制裝置,其特征在于,所述cache存儲(chǔ)器還包括優(yōu)先級(jí)數(shù)據(jù)模塊和lru模塊,所述優(yōu)先級(jí)數(shù)據(jù)模塊用于存儲(chǔ)各個(gè)設(shè)備id對應(yīng)的優(yōu)先級(jí)信息,所述lru模塊用于存儲(chǔ)各條cacheline在最近預(yù)設(shè)時(shí)間內(nèi)的使用次數(shù)。
10.根據(jù)權(quán)利要求6~9中任一項(xiàng)所述的內(nèi)存訪問控制裝置,其特征在于,所述調(diào)度控制模塊,進(jìn)一步用于根據(jù)各個(gè)設(shè)備id對應(yīng)的存儲(chǔ)分區(qū)的分配容量和實(shí)際使用容量,以及所述未分配容量確定各個(gè)設(shè)備id對應(yīng)的優(yōu)先級(jí)。
11.一種芯片,包括根據(jù)權(quán)利要求1~4中任一項(xiàng)所述的cache資源配置裝置,或者,包括根據(jù)權(quán)利要求5~10中任一項(xiàng)所述的內(nèi)存訪問控制裝置。