專利名稱:一種提高tlb利用效率的方法
技術領域:
本發(fā)明涉及微處理器中提高TLB利用效率的技術領域,尤其涉及一種使用過濾機制提高TLB利用效率的方法。
背景技術:
由于虛擬存儲器技術不僅可以把存儲器分塊并分配給不同進程使用,自動管理存儲器層次結(jié)構(gòu),而且簡化了程序的加載過程,因此現(xiàn)在的所有微處理器都采用虛擬存儲器技術。在虛擬存儲器系統(tǒng)中,不管是采用分段方法還是分頁方法,或者兩者結(jié)合的方法,處理器都生成虛擬地址,然后通過硬件、軟件進行一系列的轉(zhuǎn)換,就可以獲得實際訪問的物理地址。這個過程稱為存儲器映射或者地址變換。微處理器使用內(nèi)存管理單元(Memory Management Unit,簡稱MMU)來管理虛擬地址與物理地址的映射過程。頁式和段式都依賴于一個按頁號或段號索引的數(shù)據(jù)結(jié)構(gòu),這個包含物理頁地址的數(shù)據(jù)結(jié)構(gòu)通常采用頁表的形式。隨著物理存儲器的容量增大,頁表的容量也越來越大。大容量的頁表通常要放在內(nèi)存中,這意味著要從存儲器中訪問一個數(shù)據(jù)至少需要訪問存儲器兩次,一次訪存獲得物理地址,另一次訪存獲得數(shù)據(jù)。利用局部性原理,可以把這些地址轉(zhuǎn)換保存在一個專門的Cache 中,從而減少需二次訪問存儲器之情形,這個特殊的地址變換Cache稱為變換旁路緩沖器 (Translation Lookaside Buffer,簡禾爾 TLB)。由于數(shù)據(jù)單元與指令單元的訪問行為具有很大的差異性,因此在現(xiàn)代計算機體系結(jié)構(gòu)中,TLB像cache —樣采取了數(shù)據(jù)單元與指令單元分開的操作方式,即指令TLB和數(shù)據(jù) TLB。圖1示出了本領域內(nèi)已知的一種TLB結(jié)構(gòu)圖。在圖1中,TLB采用全相聯(lián)映射,虛擬地址110為CPU產(chǎn)生的48位虛擬地址,其中高36位表示虛擬頁號,用于與TLB的每個表項比較。低12位表示頁內(nèi)偏移。在圖1中,多路選擇器120為40 1的多路選擇器,因此該 TLB包含40個表項。表項130是該TLB的40個表項中的一個,表項130包含很多個域,每個域的長度不同,而且表示了特定的意思,例如V域是1位長度,表示表項130是否有效。例如,值“1”用于指示表項130有效,而“0”用于指示表項130無效。應當注意,表項130的標記域長度為36位,用于與虛擬地址110的高36位虛擬頁號比較,比較結(jié)果作為多路選擇器120的控制端輸入;表項130的物理地址域長度為28位,用于指示物理地址的高28位, 作為多路選擇器120的數(shù)據(jù)端輸入。在圖1中,轉(zhuǎn)換過程從虛擬地址110發(fā)送至TLB所有的表項開始,虛擬地址的高36 位虛擬頁號與每個表項的標記域比較,比較結(jié)果作為多路選擇器120的控制端輸入。TLB每個表項的最后觀位作為多路選擇器120的數(shù)據(jù)端輸入,經(jīng)過多路選擇器120的選擇物理地址的高28位可以得到,作為物理地址的物理頁號,而物理地址的低12位頁偏移正是虛擬地址的低12位頁偏移,把頁偏移與物理頁號拼接組成完整的40位物理地址。也就是說TLB 是用48位的虛擬地址作為檢索,而檢索結(jié)果是一個40位的物理地址。如果請求的虛擬地址剛好保存在TLB中,即虛擬地址110的高36位虛擬頁號與有且僅有一個表項130的標記域相匹配,那么通過TLB,40位的物理地址很快就能得到,得到的物理地址可以用于訪問物理內(nèi)存,這就稱為一次TLB命中。相反,如果請求的物理地址沒有保存在TLB中,就稱為一次TLB缺失,那么虛擬地址到物理地址的轉(zhuǎn)換過程必須要到頁表中進行,根據(jù)前面所說,頁表通常比較大,放置在主存中,因此這是一個繁雜的過程,會引起很大的延時,嚴重影響系統(tǒng)的性能。由于TLB的缺失會引起極大的延時,因此提高TLB的效率對于系統(tǒng)的性能具有很大的影響。傳統(tǒng)的一些研究表明TLB操作占據(jù)了 5-10%的系統(tǒng)運行時間,而在某些極端情況下,這種比例可以達到40%。由軟件(指OS)管理的TLB操作有時占據(jù)了 80%的系統(tǒng)內(nèi)核運算時間?,F(xiàn)有的一些研究試圖降低TLB的訪問時間和缺失率,從而提高系統(tǒng)的整體性能。其指出了一些TLB特性,像大小、關聯(lián)度以及多級的層次化結(jié)構(gòu)等,對TLB的訪問時間和缺失代價有著非常重要的影響,但是對于如何提高TLB的利用效率,則鮮有涉及。故,實有必要進行研究開發(fā),提供一種解決上述缺陷的方案,提高TLB利用效率,從而提高系統(tǒng)的整體性能。
發(fā)明內(nèi)容
本發(fā)明實施例的目的在于提供一種提高TLB利用效率的方法,其使用過濾機制提高TLB利用效率,改進TLB的利用效率,提高系統(tǒng)的整體性能。本發(fā)明實施例是這樣實現(xiàn)的,一種提高TLB利用效率的方法,包括如下步驟添加一個RF預測器、以及一塊過濾緩存;當TLB不發(fā)生缺失時,不管在TLB中命中還是在過濾緩存中命中,把命中塊的實際重用頻率加1 ;當TLB發(fā)生缺失時,使用RF預測器來預測缺失塊的重用頻率,RF預測器保存了回收塊的塊重用信息;通過預先設置一個過濾閥值,將預測的重用頻率與過濾閾值比較,如果預測的重用頻率大于過濾閾值,就把缺失塊插入TLB,TLB中缺失塊的實際重用頻率域置為0,否則把缺失塊插入過濾緩存,過濾緩存中缺失塊的實際重用頻率域置為0。進一步地,如果缺失塊插入數(shù)據(jù)TLB,則按照替換算法,數(shù)據(jù)TLB會產(chǎn)生一個回收塊,用回收塊的實際重用頻率更新預測器中該塊的塊重用信息,同時,把回收塊丟棄。進一步地,如果缺失塊插入過濾緩存,則過濾緩存替換算法會產(chǎn)生一個回收塊,如果該回收塊的重用頻率等于它的實際重用頻率,則用該實際重用頻率更新RF預測器的塊重用信息,并把回收塊丟棄;否則把該回收塊插入數(shù)據(jù)TLB。進一步地,所述TLB的域結(jié)構(gòu)包括有一個實際重用頻率域,所述過濾緩存的域結(jié)構(gòu)與所述TLB的域結(jié)構(gòu)一致。進一步地,所述過濾緩存獨立于TLB,在邏輯結(jié)構(gòu)上位于TLB與頁表之間。進一步地,所述過濾緩存的容量小于所述TLB。進一步地,所述RF預測器使用所述缺失塊的虛擬地址的低4位與高4位的與或運算結(jié)果作為索引。進一步地,所述過濾緩存回收塊插入TLB時,所述過濾緩存回收塊的實際重用頻率一起被傳給TLB。進一步地,所述TLB的域結(jié)構(gòu)的實際重用頻率域大小為2個比特,用于指示該TLB塊的實際使用次數(shù)相較于現(xiàn)有技術,本發(fā)明提高TLB利用效率的方法通過增加過濾機制,利用過濾機制把較少重用的TLB放到過濾緩存而不是TLB中,以提高TLB的利用效率,間接降低了 TLB的缺失率,提高了系統(tǒng)的整體性能;另外,本發(fā)明采用LAST算法進行預測,具有很高的準確性。
圖1是現(xiàn)有技術的TLB結(jié)構(gòu)圖;圖2是本發(fā)明實施例的數(shù)據(jù)TLB層次結(jié)構(gòu)圖;圖3是本發(fā)明實施例的過濾機制的流程圖;圖4是本發(fā)明實施例的RF預測器的域結(jié)構(gòu)圖示;圖5是本發(fā)明實施例的數(shù)據(jù)TLB與過濾緩存的域結(jié)構(gòu)圖示。
具體實施例方式為了使本發(fā)明的目的、技術方案及優(yōu)點更加清楚明白,以下結(jié)合附圖及實施例,對本發(fā)明進行進一步詳細說明。應當理解,此處所描述的具體實施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。本發(fā)明提高TLB利用效率的方法在TLB層次結(jié)構(gòu)中添加過濾機制,其中包括添加一個RF預測器、一塊過濾緩存;當TLB不發(fā)生缺失時,不管在TLB中命中還是在過濾緩存中命中,把命中塊的實際重用頻率加1 ;而當TLB發(fā)生缺失時,使用RF預測器來預測缺失塊的重用頻率,RF預測器保存了回收塊的塊重用信息;通過預先設置一個過濾閥值,將預測的重用頻率與過濾閾值比較,如果預測的重用頻率大于過濾閾值,就把缺失塊插入TLB,TLB 中缺失塊的實際重用頻率域置為0,否則把缺失塊插入過濾緩存,過濾緩存中缺失塊的實際重用頻率域置為0。其中,如果缺失塊插入TLB,TLB會產(chǎn)生一個TLB回收塊,使用TLB回收塊的實際重用頻率更新RF預測器中對應地址的塊重用信息并把TLB回收塊丟棄;如果缺失塊插入過濾緩存,過濾緩存會產(chǎn)生一個過濾緩存回收塊,如果預測的過濾緩存回收塊的重用頻率與過濾緩存回收塊的實際重用頻率相等,則使用過濾緩存回收塊的實際重用頻率更新RF預測器中對應地址的塊重用信息,并把過濾緩存回收塊丟棄,否則把過濾緩存回收塊插入TLB。 過濾緩存回收塊插入TLB,TLB又會產(chǎn)生一個TLB回收塊,使用TLB回收塊的實際重用頻率更新RF預測器中對應地址的塊重用信息,并把TLB回收塊丟棄。其中,過濾緩存的容量小于所述TLB,TLB的域結(jié)構(gòu)為傳統(tǒng)的TLB域結(jié)構(gòu)加上一個實際重用頻率域,所述過濾緩存的域結(jié)構(gòu)與所述TLB的域結(jié)構(gòu)一致;所述過濾緩存獨立于TLB,在邏輯結(jié)構(gòu)上位于TLB與頁表之間。本發(fā)明既可應用于數(shù)據(jù)TLB,也可應用于指令TLB。本實施例以應用于數(shù)據(jù)TLB進行說明,在Simplekalar 3. Od模擬器上實現(xiàn)。如下表1所示,其示出了實施例的數(shù)據(jù)TLB 中塊的重用次數(shù)分別所占的比例。通過對PARSEC各個測試程序的重用次數(shù)少于4次的數(shù)據(jù)TLB塊的比例進行統(tǒng)計,發(fā)現(xiàn)存在許多的TLB塊沒重用或者被重用次數(shù)很少,而這些較少重用塊導致了 TLB的利用效率不夠高。本發(fā)明實施例通過過濾機制,把那些較少重用的塊(重用頻率小于2的塊)過濾到一個過濾緩存中,從而可以提供更多TLB空間給那些重用次數(shù)多的塊,以此提高TLB的利用效率。表 權(quán)利要求
1.一種提高TLB利用效率的方法,其特征在于,包括如下步驟添加一個RF預測器、以及一塊過濾緩存;當TLB不發(fā)生缺失時,不管在TLB中命中還是在過濾緩存中命中,把命中塊的實際重用頻率加1 ;當TLB發(fā)生缺失時,使用RF預測器來預測缺失塊的重用頻率,RF預測器保存了回收塊的塊重用信息;通過預先設置一個過濾閥值,將預測的重用頻率與過濾閾值比較,如果預測的重用頻率大于過濾閾值,就把缺失塊插入TLB,TLB中缺失塊的實際重用頻率域置為0,否則把缺失塊插入過濾緩存,過濾緩存中缺失塊的實際重用頻率域置為0。
2.如權(quán)利要求1所述提高TLB利用效率的方法,其特征在于如果缺失塊插入數(shù)據(jù) TLB,則按照替換算法,數(shù)據(jù)TLB會產(chǎn)生一個回收塊,用回收塊的實際重用頻率更新預測器中該塊的塊重用信息,同時,把回收塊丟棄。
3.如權(quán)利要求1所述提高TLB利用效率的方法,其特征在于如果缺失塊插入過濾緩存,則過濾緩存替換算法會產(chǎn)生一個回收塊,如果該回收塊的重用頻率等于它的實際重用頻率,則用該實際重用頻率更新RF預測器的塊重用信息,并把回收塊丟棄;否則把該回收塊插入數(shù)據(jù)TLB。
4.如權(quán)利要求2或3所述提高TLB利用效率的方法,其特征在于TLB的域結(jié)構(gòu)包括有一個實際重用頻率域,所述過濾緩存的域結(jié)構(gòu)與所述TLB的域結(jié)構(gòu)一致。
5.如權(quán)利要求4所述提高TLB利用效率的方法,其特征在于所述過濾緩存獨立于 TLB,在邏輯結(jié)構(gòu)上位于TLB與頁表之間。
6.如權(quán)利要求5所述提高TLB利用效率的方法,其特征在于所述過濾緩存的容量小于所述TLB。
7.如權(quán)利要求6所述提高TLB利用效率的方法,其特征在于所述RF預測器使用所述缺失塊的虛擬地址的低4位與高4位的與或運算結(jié)果作為索引。
8.如權(quán)利要求7所述提高TLB利用效率的方法,其特征在于所述過濾緩存回收塊插入TLB時,所述過濾緩存回收塊的實際重用頻率一起被傳給TLB。
9.如權(quán)利要求8所述提高TLB利用效率的方法,其特征在于所述過濾緩存的替換算法為LRU替換算法。
10.如權(quán)利要求9所述提高TLB利用效率的方法,其特征在于所述TLB的域結(jié)構(gòu)的實際重用頻率域大小為2個比特,用于指示該TLB塊的實際使用次數(shù)。
全文摘要
本發(fā)明公開了一種提高TLB利用效率的方法,包括如下步驟添加一個RF預測器、以及一塊過濾緩存;當TLB不發(fā)生缺失時,把命中塊的實際重用頻率加1;當TLB發(fā)生缺失時,使用RF預測器來預測缺失塊的重用頻率,RF預測器保存了回收塊的塊重用信息;通過預先設置一個過濾閥值,將預測的重用頻率與過濾閾值比較,如果預測的重用頻率大于過濾閾值,就把缺失塊插入TLB,TLB中缺失塊的實際重用頻率域置為0,否則把缺失塊插入過濾緩存,過濾緩存中缺失塊的實際重用頻率域置為0。通過利用過濾機制把較少重用的TLB放到過濾緩存而不是TLB中來提高TLB的利用效率,間接降低了TLB的缺失率,提高了系統(tǒng)的整體性能。
文檔編號G06F12/10GK102360339SQ20111030123
公開日2012年2月22日 申請日期2011年10月8日 優(yōu)先權(quán)日2011年10月8日
發(fā)明者全佰行, 虞保忠, 邵景程, 陳天洲, 馬建良 申請人:浙江大學