一種提高片上系統(tǒng)指令緩存命中率的系統(tǒng)及其方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及片上系統(tǒng)的指令緩存實(shí)現(xiàn)技術(shù),具體涉及一種提高片上系統(tǒng)指令緩存命中率的系統(tǒng)及其方法。
【背景技術(shù)】
[0002]指令緩存可以加快中央處理器取指操作訪問(wèn)主存的速度,提高了系統(tǒng)的整體性能,而緩存性能的高低,最重要的指標(biāo)就是命中率。在提高指令緩存命中率的方法上,通常都在緩存未命中時(shí)替換哪個(gè)Way的算法上做工作,例如目前較為流行的算法為輪詢緩存算法(Round-Robin)、隨機(jī)緩存算法(Random)、最近最少使用算法(Least Recently Used,簡(jiǎn)稱LRU )等。
【發(fā)明內(nèi)容】
[0003]本發(fā)明的目的在于提供一種提高片上系統(tǒng)指令緩存命中率的系統(tǒng)及其方法,采用緩存寄存器、預(yù)讀寄存器、第一邏輯判斷模塊、第二邏輯判斷模塊及預(yù)讀發(fā)起判斷模塊組成上述系統(tǒng)。本發(fā)明通過(guò)在傳統(tǒng)指令緩存內(nèi)部添加可獨(dú)立判斷指令是否命中的預(yù)讀寄存器,使得預(yù)讀寄存器與緩存寄存器內(nèi)的存儲(chǔ)單元具有相同的功能,都能夠存儲(chǔ)預(yù)讀反饋指令;只有當(dāng)預(yù)讀寄存器與緩存寄存器均未命中時(shí),緩存寄存器將預(yù)讀寄存器內(nèi)的指令數(shù)據(jù)進(jìn)行存儲(chǔ),預(yù)讀寄存器中的數(shù)據(jù)更新為最新的預(yù)讀反饋指令。本發(fā)明結(jié)構(gòu)簡(jiǎn)單、容易實(shí)現(xiàn)、靈活度尚,能夠大大提尚微小循環(huán)代碼的命中率。
[0004]為了達(dá)到上述目的,本發(fā)明通過(guò)以下技術(shù)方案實(shí)現(xiàn):
一種提高片上系統(tǒng)指令緩存命中率的系統(tǒng),其特點(diǎn)是,該系統(tǒng)包含:
緩存寄存器;
預(yù)讀寄存器,與所述緩存寄存器進(jìn)行數(shù)據(jù)通訊;
第一邏輯判斷模塊,與所述緩存寄存器連接;
第二邏輯判斷模塊,與所述預(yù)讀寄存器連接;
預(yù)讀發(fā)起判斷模塊,分別與所述第一邏輯判斷模塊、所述第二邏輯判斷模塊及所述預(yù)讀寄存器連接。
[0005]優(yōu)選地,
所述緩存寄存器用于存儲(chǔ)預(yù)讀反饋指令及所述預(yù)讀寄存器內(nèi)存儲(chǔ)的預(yù)讀反饋指令的地址信息;
所述預(yù)讀寄存器用于獲取并存儲(chǔ)最新的預(yù)讀反饋指令;
所述第一邏輯判斷模塊用于判斷所述緩存寄存器是否命中;當(dāng)該緩存寄存器命中時(shí),所述第一邏輯判斷模塊輸出標(biāo)識(shí)信號(hào)置為1;當(dāng)該緩存寄存器未命中時(shí),所述第一邏輯判斷模塊輸出標(biāo)識(shí)信號(hào)置為0 ;
所述第二邏輯判斷模塊用于判斷所述所述預(yù)讀寄存器是否命中;當(dāng)該預(yù)讀寄存器命中時(shí),所述第二邏輯判斷模塊輸出標(biāo)識(shí)信號(hào)置為1;當(dāng)該緩存寄存器未命中時(shí),所述第二邏輯判斷模塊輸出標(biāo)識(shí)信號(hào)置為0 ;
所述預(yù)讀發(fā)起判斷模塊獲取所述第一邏輯判斷模塊的輸出標(biāo)識(shí)信號(hào)、所述第二邏輯判斷模塊的輸出標(biāo)識(shí)信號(hào),并將上述信號(hào)進(jìn)行邏輯運(yùn)算處理后,判斷所述緩存寄存器、所述預(yù)讀寄存器是否均未命中;當(dāng)均未命中時(shí),該預(yù)讀發(fā)起判斷模塊控制所述預(yù)讀寄存器獲取并存儲(chǔ)最新的預(yù)讀反饋指令。
[0006]—種提尚片上系統(tǒng)指令緩存命中率的方法,其特點(diǎn)是,該方法包含:
S1,第二邏輯判斷模塊判斷預(yù)讀寄存器是否命中,當(dāng)判斷所述預(yù)讀寄存器未命中時(shí),執(zhí)行步驟S2 ;
S2,預(yù)讀發(fā)起判斷模塊獲取所述第一邏輯判斷模塊的輸出標(biāo)識(shí)信號(hào)、所述第二邏輯判斷模塊的輸出標(biāo)識(shí)信號(hào),并將上述信號(hào)進(jìn)行邏輯運(yùn)算處理后,判斷所述緩存寄存器、所述預(yù)讀寄存器是否均未命中;當(dāng)均未命中時(shí),執(zhí)行步驟S3 ;當(dāng)所述緩存寄存器、所述預(yù)讀寄存器中任一寄存器命中時(shí),結(jié)束;
S3,所述預(yù)讀發(fā)起判斷模塊控制所述預(yù)讀寄存器獲取并存儲(chǔ)最新的預(yù)讀反饋指令。
[0007]優(yōu)選地,在所述步驟S1之前,還包含:
第一邏輯判斷模塊判斷緩存寄存器是否命中,并將獲取的輸出標(biāo)識(shí)信號(hào)發(fā)送至所述預(yù)讀發(fā)起判斷模塊。
[0008]優(yōu)選地,所述步驟S1包含:
S1.1,所述第二邏輯判斷模塊獲取所述預(yù)讀寄存器中的鎖存指令對(duì)應(yīng)的地址信息;
S1.2,所述第二邏輯判斷模塊獲取中央處理器當(dāng)前發(fā)起訪問(wèn)的地址信息;
S1.3,該第二邏輯判斷模塊將所述預(yù)讀寄存器中的鎖存指令對(duì)應(yīng)的地址信息與所述中央處理器當(dāng)前發(fā)起訪問(wèn)的地址信息按位進(jìn)行異或運(yùn)算處理后進(jìn)行或非運(yùn)算處理,獲取所述第二邏輯判斷模塊輸出標(biāo)識(shí)信號(hào);
51.4,當(dāng)所述預(yù)讀寄存器命中時(shí),所述第二邏輯判斷模塊輸出標(biāo)識(shí)信號(hào)置為1,結(jié)束操作;當(dāng)該緩存寄存器未命中時(shí),所述第二邏輯判斷模塊輸出標(biāo)識(shí)信號(hào)置為0,執(zhí)行所述步驟S2o
[0009]優(yōu)選地,所述步驟S2包含:
S2.1,所述預(yù)讀發(fā)起判斷模塊獲取所述第一邏輯判斷模塊的輸出標(biāo)識(shí)信號(hào)、所述第二邏輯判斷模塊的輸出標(biāo)識(shí)信號(hào),并將上述信號(hào)分別進(jìn)行取反運(yùn)算后,再進(jìn)行邏輯與運(yùn)算;
52.2,當(dāng)所述預(yù)讀發(fā)起判斷模塊經(jīng)步驟S2.1運(yùn)算后,輸出的預(yù)讀取信號(hào)為1時(shí),表明所述緩存寄存器、所述預(yù)讀寄存器均未命中,執(zhí)行步驟S3 ;否則,結(jié)束操作。
[0010]優(yōu)選地,所述步驟S3包含:
53.1,所述預(yù)讀發(fā)起判斷模塊控制所述預(yù)讀寄存器將其內(nèi)的數(shù)據(jù)寫入所述緩存寄存器;
S3.2,所述預(yù)讀發(fā)起判斷模塊控制所述預(yù)讀寄存器獲取并存儲(chǔ)最新的預(yù)讀反饋指令。
[0011]本發(fā)明與現(xiàn)有技術(shù)相比具有以下優(yōu)點(diǎn):
本發(fā)明公開(kāi)的一種提高片上系統(tǒng)指令緩存命中率的系統(tǒng)及其方法,采用緩存寄存器、預(yù)讀寄存器、第一邏輯判斷模塊、第二邏輯判斷模塊及預(yù)讀發(fā)起判斷模塊組成上述系統(tǒng)。本發(fā)明通過(guò)在傳統(tǒng)指令緩存內(nèi)部添加可獨(dú)立判斷指令是否命中的預(yù)讀寄存器,使得預(yù)讀寄存器與緩存寄存器內(nèi)的存儲(chǔ)單元具有相同的功能,都能夠存儲(chǔ)預(yù)讀反饋指令;只有當(dāng)預(yù)讀寄存器與緩存寄存器均未命中時(shí),緩存寄存器將預(yù)讀寄存器內(nèi)的指令數(shù)據(jù)進(jìn)行存儲(chǔ),預(yù)讀寄存器中的數(shù)據(jù)更新為最新的預(yù)讀反饋指令,也即緩存寄存器與預(yù)讀寄存器同時(shí)進(jìn)行更新。本發(fā)明結(jié)構(gòu)簡(jiǎn)單、容易實(shí)現(xiàn)、靈活度高,能夠大大提高微小循環(huán)代碼的命中率。
【附圖說(shuō)明】
[0012]圖1為本發(fā)明一種提高片上系統(tǒng)指令緩存命中率的系統(tǒng)的整體結(jié)構(gòu)示意圖。
[0013]圖2為本發(fā)明一種提高片上系統(tǒng)指令緩存命中率的方法的整體流程示意圖。
[0014]圖3為本發(fā)明一種提高片上系統(tǒng)指令緩存命中率的方法的實(shí)施例示意圖之一。
[0015]圖4為本發(fā)明一種提高片上系統(tǒng)指令緩存命中率的方法的實(shí)施例示意圖之二。
【具體實(shí)施方式】
[0016]以下結(jié)合附圖,通過(guò)詳細(xì)說(shuō)明一個(gè)較佳的具體實(shí)施例,對(duì)本發(fā)明做進(jìn)一步闡述。
[0017]如圖1所示,一種提高片上系統(tǒng)指令緩存命中率的系統(tǒng),該系統(tǒng)包含:緩存寄存器1 (也稱CacheMemory)、預(yù)讀寄存器2 (也稱FeedBuffer)、第一邏輯判斷模塊3 (也稱CMHitLogic模塊)、第二邏輯判斷模塊4 (也稱FBHitLogic模塊)及預(yù)讀發(fā)起判斷模塊5 (也稱PreRead模塊)。
[0018]其中,預(yù)讀寄存器2與緩存寄存器1進(jìn)行數(shù)據(jù)通訊;第一邏輯判斷模塊3與緩存寄存器1連接;第二邏輯判斷模塊4與預(yù)讀寄存器2連接;預(yù)讀發(fā)起判斷模塊5分別與第一邏輯判斷模塊3、第二邏輯判斷模塊4及預(yù)讀寄存器2連接。
[0019]本發(fā)明中,緩存寄存器1用于存儲(chǔ)預(yù)讀反饋指令及預(yù)讀寄存器2內(nèi)存儲(chǔ)的預(yù)讀反饋指令的地址信息。預(yù)讀寄存器2用于獲取并存儲(chǔ)最新的預(yù)讀反饋指令。第一邏輯判斷模塊3用于判斷緩存寄存器1是否命中;當(dāng)該緩存寄存器1命中時(shí),第一邏輯判斷模塊3輸出標(biāo)識(shí)信號(hào)置為1 ;當(dāng)該緩存寄存器1未命中時(shí),第一邏輯判斷模塊3輸出標(biāo)識(shí)信號(hào)置為0。第二邏輯判斷模塊4用于判斷預(yù)讀寄存器2是否命中;當(dāng)該預(yù)讀寄存器2命中時(shí),第二邏輯判斷模塊4輸出標(biāo)識(shí)信號(hào)置為1 ;當(dāng)該緩存寄存器1未命中時(shí),第二邏輯判斷模塊4輸出標(biāo)識(shí)信號(hào)置為0。預(yù)讀發(fā)起判斷模塊5獲取第一邏輯判斷模塊3的輸出標(biāo)識(shí)信號(hào)、第二邏輯判斷模塊4的輸出標(biāo)識(shí)信號(hào),并將上述信號(hào)進(jìn)行邏輯運(yùn)算處理后,判斷緩存寄存器1、預(yù)讀寄存器2是否均未命中;當(dāng)均未命中時(shí),該預(yù)讀發(fā)起判斷模塊5控制預(yù)讀寄存器2獲取并存儲(chǔ)最新的預(yù)讀反饋指令。
[0020]本實(shí)施例中,只有當(dāng)CMHitLogic模塊判斷產(chǎn)生的命中信號(hào)CMHit與FBHitLogic模塊判斷產(chǎn)生的命中信號(hào)FBHit均為0時(shí),即FeedBuffer與CacheMemory均未命中時(shí),CacheMemory才會(huì)發(fā)起預(yù)讀操作。預(yù)讀過(guò)程中,CacheMemory會(huì)將FeedBuffer中存儲(chǔ)的預(yù)讀反饋指令根據(jù)其對(duì)應(yīng)的在FeedBuffer的地址,更新到CacheMemory相對(duì)應(yīng)的存儲(chǔ)單元中。而FeedBuffer中的數(shù)據(jù)更新為最新的預(yù)讀反饋指令。
[0021]如圖2所示,一種提高片上系統(tǒng)指令緩存命中率的方法,該方法包含:
在步驟S1之前,還包含: