專利名稱:一種片上指令cache的實(shí)現(xiàn)方法
技術(shù)領(lǐng)域:
本發(fā)明屬于計(jì)算機(jī)技術(shù)領(lǐng)域,涉及高性能信號(hào)處理器的設(shè)計(jì)和制造,特別涉及到一種片上指令cache控制系統(tǒng)的硬件實(shí)現(xiàn)方法。
背景技術(shù):
自計(jì)算機(jī)發(fā)明以來,計(jì)算速度和I/O速度不匹配的矛盾就存在,cache技術(shù)就是解決此矛盾的技術(shù)之一。傳統(tǒng)的cache控制系統(tǒng)通常是由軟件完成,如PC機(jī)的操作系統(tǒng)就負(fù)責(zé)完成cache的控制管理,整個(gè)cache的存儲(chǔ)狀態(tài)、數(shù)據(jù)調(diào)度、替換策略、異常處理等都是由操作系統(tǒng)中的軟件程序負(fù)責(zé)完成。隨著微電子制造工藝的進(jìn)步,計(jì)算機(jī)系統(tǒng)可在一個(gè)芯片上實(shí)現(xiàn),cache也被集成在片上,如何對(duì)片上的cache進(jìn)行有效的控制管理,是高性能處理芯片設(shè)計(jì)中的重要內(nèi)容。
目前國(guó)內(nèi)外的有關(guān)指令cache的實(shí)現(xiàn)方法主要是采用硬件和軟件相結(jié)合的方法,通過大型計(jì)算機(jī)硬件和軟件操作系統(tǒng)來實(shí)現(xiàn)。這種方法實(shí)現(xiàn)cache指令的控制具有功耗較大、取指令的時(shí)間較長(zhǎng)和可靠性差的缺點(diǎn)。
發(fā)明內(nèi)容
本發(fā)明的技術(shù)解決問題克服現(xiàn)有技術(shù)的不足,提供一種片上指令cache的實(shí)現(xiàn)方法,采用該方法提高了指令cache的工作速度,同時(shí)結(jié)構(gòu)簡(jiǎn)單,面積小,功耗低,便于在芯片上實(shí)現(xiàn),且可靠性高。
本發(fā)明的技術(shù)解決方案一種片上指令cache的實(shí)現(xiàn)方法,其特點(diǎn)在于指令cache的結(jié)構(gòu)由一cache控制寄存器、cache段起始地址寄存器、匹配標(biāo)志P位、cache段字存儲(chǔ)器以及LRU替換堆棧構(gòu)成,cache控制寄存器用于控制或表示cache的狀態(tài),cache段起始地址寄存器用于存儲(chǔ)指令地址的段地址,匹配標(biāo)志P位用于標(biāo)識(shí)是否有一個(gè)段內(nèi)字已經(jīng)對(duì)準(zhǔn),cache段字存儲(chǔ)器用于存儲(chǔ)指令,LRU替換堆棧用于記錄cache段替換的順序;當(dāng)請(qǐng)求外部存儲(chǔ)器給出指令字時(shí),會(huì)出現(xiàn)兩種情況,cache命中或cache未命中,如果cache命中,從cache中讀出指令,該分段號(hào)壓入LRU替換堆棧的頂部,配置相應(yīng)的P標(biāo)記;如果cache未命中,存在兩種情況第一種情況是cache段起始地址寄存器與該指令地址相匹配,但沒有設(shè)置相應(yīng)的匹配標(biāo)志P位,此時(shí)同時(shí)進(jìn)行如下操作從存儲(chǔ)器中讀出指令并拷貝到cache,將該分段號(hào)壓入LRU替換堆棧的頂部,配置相應(yīng)的匹配標(biāo)志P位;第二種情況是cache段起始地址寄存器與指令地址不匹配,此時(shí)同時(shí)進(jìn)行如下操作從LRU替換堆棧中選擇將被替換的分段號(hào),該段中的所有匹配標(biāo)志P位清除,將指令的地址的相應(yīng)位寬值載到替換的分段的cache段起始地址寄存器中,取得指令并拷貝到cache并將P標(biāo)志置位,將替換的分段號(hào)壓入LRU替換堆棧的棧頂。
本發(fā)明與現(xiàn)有技術(shù)相比的優(yōu)點(diǎn)在于(1)本發(fā)明的片上cache指令結(jié)構(gòu),具有結(jié)構(gòu)簡(jiǎn)單,面積小,功耗低,便于在芯片上實(shí)現(xiàn)。
(2)根據(jù)本發(fā)明的片上指令cache的結(jié)構(gòu)而設(shè)計(jì)的工作流程簡(jiǎn)單,提高了指令cache工作的可靠性。
(3)采用硬件替換堆棧選擇替換段號(hào),避免了現(xiàn)有技術(shù)的軟件判斷,提高了指令cache的工作速度。
圖1為本發(fā)明的一種片上指令cache的結(jié)構(gòu)示意圖;圖2為本發(fā)明的一種片上指令cache的工作流程;圖3為本發(fā)明的LRU替換堆棧的結(jié)構(gòu)圖。
具體實(shí)施例方式
如圖1所示,在SMDSP信號(hào)處理器中,指令cache容量為64×32位字,將其分為兩個(gè)32字段,一個(gè)19位的段起始地址寄存器和每一段相關(guān)聯(lián)。cache中的每個(gè)字,都有相應(yīng)的匹配標(biāo)志P位,P為1表示cache中字有效反之則無效。
指令cache的結(jié)構(gòu)由一cache控制寄存器、cache段起始地址寄存器、匹配標(biāo)志P位、cache段字存儲(chǔ)器以及LRU替換堆棧構(gòu)成,cache控制寄存器用于控制或表示cache的狀態(tài),cache段起始地址寄存器用于存儲(chǔ)指令地址的段地址,匹配標(biāo)志P位用于標(biāo)識(shí)是否有一個(gè)段內(nèi)字已經(jīng)對(duì)準(zhǔn),cache段字存儲(chǔ)器用于存儲(chǔ)指令,LRU替換堆棧用于記錄cache段替換的順序。
如圖2所示,當(dāng)請(qǐng)求外部存儲(chǔ)器給出指令字時(shí),會(huì)出現(xiàn)兩種情況,cache命中或cache未命中,如果cache命中,從cache中讀出指令,該分段號(hào)壓入LRU替換堆棧的頂部,配置相應(yīng)的P標(biāo)記;如果cache未命中,存在兩種情況第一種情況是cache段起始地址寄存器與該指令地址相匹配,但沒有設(shè)置相應(yīng)的匹配標(biāo)志P位,此時(shí)同時(shí)進(jìn)行如下操作從存儲(chǔ)器中讀出指令并拷貝到cache,將該分段號(hào)壓入LRU替換堆棧的頂部,配置相應(yīng)的匹配標(biāo)志P位;第二種情況是cache段起始地址寄存器與指令地址不匹配,此時(shí)同時(shí)進(jìn)行如下操作從LRU替換堆棧中選擇將被替換的分段號(hào),該段中的所有匹配標(biāo)志P位清除,將指令的地址的相應(yīng)位寬值載到替換的分段的cache段起始地址寄存器中,取得指令并拷貝到cache并將P標(biāo)志置位,將替換的分段號(hào)壓入LRU替換堆棧的棧頂。
LRU替換堆棧用于確定兩段中的哪段是最近最少使用。每次訪問一段時(shí),分段號(hào)離開LRU堆棧并被推進(jìn)到LRU替換堆棧的頂部。因此,堆棧頂部的序號(hào)是最近最多使用的分段號(hào),堆棧底部的序號(hào)是最近最少使用的分段號(hào),復(fù)位時(shí),LRU堆棧用0初始化頂部和用1初始化低部。
如圖3所示,本發(fā)明的LRU的替換堆棧結(jié)構(gòu)有效位CE(cache enable)和讀信號(hào)位R(Read)經(jīng)過與門AND_1,輸出與復(fù)位RESET或非,經(jīng)或非門NOR_2,輸出到傳輸門T1的控制端,NOR_2的輸出經(jīng)反向器INV_1連接到T1的互補(bǔ)控制端,時(shí)鐘CLK1經(jīng)T1后連接到與門And_2的一個(gè)輸入端,Reset和SSA0(段0)經(jīng)或門or_1的輸出和Reset和SSA1(段1)經(jīng)或非門Nor_1的輸出連接到與非門Nand_1,輸出連到與門And_2,與門And_2的輸出連接到反向器INV_2,輸出連接到反向器INV_3和傳輸門T3。反向器INV_3的輸出為MRU_SN(近期使用最多的段號(hào)),同時(shí)連接傳輸門T2。傳輸門T2的輸出連接到反向器INV_2;傳輸門T3的輸出為L(zhǎng)RU_SN(近期使用最少的段號(hào)),傳輸門T2和T3的控制端都接CLK2,互補(bǔ)控制信號(hào)接CLK2經(jīng)反向器INV_1的輸出。
cache控制寄存器有3位(1)清cache位CC,當(dāng)CC=1,使Cache中的所有通道無效。寫入cache后此位被置為0,復(fù)位時(shí)該位置為0。(2)cache有效位CE,當(dāng)CE=1,使能cache,允許依照LRU算法使用cache;當(dāng)CE=0,禁止cache,可以防止cache被更新修改;復(fù)位時(shí)該位置0。(3)凍結(jié)Cache位CF,當(dāng)CF=1凍結(jié)cache和LRU替換堆棧的操作。如果出現(xiàn)CE=1并且CF=1時(shí),允許從cache中讀取但不允許修改cache。當(dāng)CF=1或0時(shí),允許cache清除(CC=1),復(fù)位時(shí)CF位設(shè)為0。
當(dāng)請(qǐng)求外部存儲(chǔ)器給出指令時(shí),指令cache的工作流程如圖2所示,即當(dāng)請(qǐng)求外部存儲(chǔ)器給出指令字時(shí),會(huì)出現(xiàn)兩種情況,cache命中或cache未命中。如果cache命中,從cache中讀出指令;該分段號(hào)壓入LRU替換堆棧的頂部;配置相應(yīng)的P標(biāo)記。如果cache未命中,存在兩種情況第一種情況,是cache段始地址寄存器與指令地址相匹配,但沒有設(shè)置相應(yīng)的匹配標(biāo)志P位,此時(shí)同時(shí)進(jìn)行3個(gè)操作,從存儲(chǔ)器中讀出指令并拷貝到Cache,該分段號(hào)壓入LRU替換堆棧的頂部,配置相應(yīng)的匹配標(biāo)志P位;第二種情況,是caohe段起始地址寄存器與指令地址不匹配,此時(shí)同時(shí)進(jìn)行4個(gè)操作,從LRU替換堆棧中選擇將被替換的分段號(hào),該段中的32個(gè)匹配標(biāo)志P位清除,將請(qǐng)求指令的19位高地址載到LRU替換堆棧的LRU_SN信號(hào)表示的分段的cache段起始地址寄存器中,取得指令并拷貝到cache并將P標(biāo)志置位,將替換的分段號(hào)壓入LRU替換堆棧的棧頂。
權(quán)利要求
1.一種片上指令cache的實(shí)現(xiàn)方法,其特征在于指令cache的結(jié)構(gòu)由一cache控制寄存器、cache段起始地址寄存器、匹配標(biāo)志P位、cache段字存儲(chǔ)器以及LRU替換堆棧構(gòu)成,cache控制寄存器用于控制或表示cache的狀態(tài),cache段起始地址寄存器用于存儲(chǔ)指令地址的段地址,匹配標(biāo)志P位用于標(biāo)識(shí)是否有一個(gè)段內(nèi)字已經(jīng)對(duì)準(zhǔn),cache段字存儲(chǔ)器用于存儲(chǔ)指令,LRU替換堆棧用于記錄cache段替換的順序;當(dāng)請(qǐng)求外部存儲(chǔ)器給出指令字時(shí),會(huì)出現(xiàn)兩種情況,cache命中或cache未命中,如果cache命中,從cache中讀出指令,該分段號(hào)壓入LRU替換堆棧的頂部,配置相應(yīng)的P標(biāo)記;如果cache未命中,存在兩種情況第一種情況是cache段起始地址寄存器與該指令地址相匹配,但沒有設(shè)置相應(yīng)的匹配標(biāo)志P位,此時(shí)同時(shí)進(jìn)行如下操作從存儲(chǔ)器中讀出指令并拷貝到cache,將該分段號(hào)壓入LRU替換堆棧的頂部,配置相應(yīng)的匹配標(biāo)志P位;第二種情況是cache段起始地址寄存器與指令地址不匹配,此時(shí)同時(shí)進(jìn)行如下操作從LRU替換堆棧中選擇將被替換的分段號(hào),該段中的所有匹配標(biāo)志P位清除,將指令的地址的相應(yīng)位寬的值載到替換的分段的cache段始地址寄存器中,取得指令并拷貝到cache并將P標(biāo)志置位,將替換的分段號(hào)壓入LRU替換堆棧的棧頂。
2.根據(jù)權(quán)利要求1所述的一種片上指令cache的實(shí)現(xiàn)方法,其特征在于所述的LRU的替換堆棧結(jié)構(gòu)cache的有效位CE和讀信號(hào)位R經(jīng)過與門AND_1,輸出與復(fù)位RESET或非,經(jīng)或非門NOR_2,輸出到傳輸門T1的控制端,NOR_2的輸出經(jīng)反向器INV_1連接到T1的互補(bǔ)控制端,CLK1經(jīng)T1后連接到與門And_2的一個(gè)輸入端,Reset和SSA0(段起始地址寄存器0,SSA0)經(jīng)或門or_1的輸出和Reset和SSA1(段起始地址寄存器1,SSA1)經(jīng)或非門Nor_1的輸出連接到與非門Nand_1,輸出連到與門And_2,與門And_2的輸出連接到反向器INV_2,輸出連接到反向器INV_3和傳輸門T3,反向器INV_3的輸出為近期使用最多的段號(hào)MRU_SN,同時(shí)連接傳輸門T2,傳輸門T2的輸出連接到反向器INV_2,傳輸門T3的輸出為近期使用最少的段號(hào)LRU_SN,傳輸門T2和T3的控制端都接時(shí)鐘CLK2,互補(bǔ)控制信號(hào)接CLK2經(jīng)反向器INV_1的輸出。
3.根據(jù)權(quán)利要求1所述的一種片上指令cache的實(shí)現(xiàn)方法,其特征在于所述的cache控制寄存器有3位,(1)清cache位CC,當(dāng)CC=1,使cache中的所有通道無效,寫入cache后此位被置為0,復(fù)位時(shí)該位置為0;(2)cache有效位CE,當(dāng)CE=1,使能cache,允許依照LRU算法使用cache,當(dāng)CE=0,禁止cache,防止cache被更新修改,復(fù)位時(shí)該位置0;(3)凍結(jié)cache位CF,當(dāng)CF=1凍結(jié)cache和LRU替換堆棧的操作,如果出現(xiàn)CE=1,且CF=1時(shí),允許從cache中讀取但不允許修改cache;當(dāng)CF=1或0時(shí),允許cache清除(CC=1),復(fù)位時(shí)CF位設(shè)為0。
全文摘要
一種片上指令cache的實(shí)現(xiàn)方法,指令cache的結(jié)構(gòu)由cache控制寄存器、cache段起始地址寄存器、匹配標(biāo)志P位、cache段字存儲(chǔ)器以及LRU替換堆棧等組成。本發(fā)明特點(diǎn)在于,片上指令cache結(jié)構(gòu)簡(jiǎn)單,面積小,功耗低,便于在芯片上實(shí)現(xiàn),根據(jù)本發(fā)明的片上指令cache的結(jié)構(gòu)而設(shè)計(jì)的工作流程簡(jiǎn)單,與其它功能部件的時(shí)序配合容易,提高了指令cache工作的可靠性,采用硬件替換堆棧選擇替換段號(hào),避免了軟件判斷,提高了指令cache的工作速度。
文檔編號(hào)G06F12/12GK1996268SQ20061016972
公開日2007年7月11日 申請(qǐng)日期2006年12月28日 優(yōu)先權(quán)日2006年12月28日
發(fā)明者車德亮, 黃瑋, 權(quán)海洋 申請(qǐng)人:北京時(shí)代民芯科技有限公司