專利名稱:基于應(yīng)用敏感的微處理器末端高速緩存控制方法及裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及微處理器中末端高速緩存(LLC :Last_Level Cache)性能提升優(yōu)化方法,具體涉及一種根據(jù)應(yīng)用特征靈活配置末端高速緩存的微操作指令類型和替換算法、提高末端高速緩存的執(zhí)行性能的基于應(yīng)用敏感的微處理器末端高速緩存控制方法及裝置。
背景技術(shù):
現(xiàn)有技術(shù)的高速緩存流水線中的微指令譯碼通常與高速緩存接收到的命令形成固定映射,或與高速緩存的內(nèi)部狀態(tài)有關(guān),但不能通過軟件方法進(jìn)行修改,如T2處理器的高速緩存是L2Cache,它的微指令產(chǎn)生只與接收到交叉開關(guān)部件的報文類型有關(guān),這種方法忽略了應(yīng)用程序本身的特點,無法表征出訪存報文更宏觀的特性。此外,現(xiàn)有技術(shù)微處理器
末端高速緩存的替換算法通常也是設(shè)計時固定的,例如T2處理器的L2Cache采用了分組的NRU (Nearest-Recently Used,最近最少使用)算法,該算法只考慮了應(yīng)用程序微觀層面上的訪存使用頻率,而忽略了程序算法本身在使用數(shù)據(jù)集的宏觀特性。
發(fā)明內(nèi)容
本發(fā)明要解決的技術(shù)問題是提供一種能夠通過針對不同應(yīng)用程序訪存模式靈活配置微操作映射方法和替換方法從而實現(xiàn)針對應(yīng)用程序進(jìn)行調(diào)優(yōu)加速的基于應(yīng)用敏感的微處理器末端高速緩存控制方法及裝置。為了解決上述技術(shù)問題,本發(fā)明采用的技術(shù)方案為一種基于應(yīng)用敏感的微處理器末端高速緩存控制方法,其實施步驟如下I)創(chuàng)建第一配置寄存器和第二配置寄存器;所述第一配置寄存器存儲有一組與一致性引擎發(fā)出的指令類型一一對應(yīng)的緩存失效寄存器值;所述第二配置寄存器存儲有一組與一致性引擎發(fā)出的指令類型一一對應(yīng)的替換優(yōu)先寄存器值;2)在接收到一致性引擎的指令時,譯碼部件在將所述指令譯碼為末端高速緩存的微操作時一并獲取所述指令對應(yīng)第一配置寄存器中的緩存失效寄存器值、對應(yīng)第二配置寄存器中的替換優(yōu)先寄存器值;3)失效控制邏輯根據(jù)所述緩存失效寄存器值執(zhí)行失效邏輯控制,當(dāng)所述指令失效時,如果緩存失效寄存器值為I,則失效控制邏輯將直接向存儲控制器發(fā)送讀寫指令而不再改變數(shù)據(jù)陣列現(xiàn)有的狀態(tài)以及數(shù)據(jù);如果緩存失效寄存器值為0,則失效控制邏輯首先通過替換邏輯根據(jù)所述替換優(yōu)先寄存器值對數(shù)據(jù)陣列內(nèi)部的數(shù)據(jù)行執(zhí)行替換操作,然后將所述指令的寫入數(shù)據(jù)或者從內(nèi)存中讀回的數(shù)據(jù)寫入到數(shù)據(jù)陣列中被替換的數(shù)據(jù)行中。作為本發(fā)明基于應(yīng)用敏感的微處理器末端高速緩存控制方法的進(jìn)一步改進(jìn)所述步驟3)的詳細(xì)步驟包括3. I)判斷所述指令對應(yīng)微操作的地址是否命中末端高速緩存,如果命中則跳轉(zhuǎn)執(zhí)行步驟3. 3),否則繼續(xù)執(zhí)行下一步;3. 2)檢查所述微操作的類型,如果微操作為修改替換優(yōu)先級命令則替換邏輯將微操作的替換優(yōu)先寄存器值更新,否則繼續(xù)保持微操作的替換優(yōu)先寄存器值不變,最終替換邏輯將替換優(yōu)先寄存器值回填至替換指示位存儲陣列的替換指示位;如果微操作為讀命令或者讀旁路命令,則從末端高速緩存的數(shù)據(jù)陣列中讀取所述微操作對應(yīng)的數(shù)據(jù)行返回給一致性引擎部件;如果微操作為寫命令或?qū)懪月访?,則將最新數(shù)據(jù)寫入末端高速緩存的數(shù)據(jù)體陣列中;最后退出處理流程;3. 3)檢查緩存失效寄存器值,如果所述緩存失效寄存器值不為1,則跳轉(zhuǎn)到3. 5),否則繼續(xù)執(zhí)行下一步;3.4)檢查所述微操作的類型;如果微操作為讀旁路指令則向內(nèi)存控制器發(fā)送讀命令,讀命令的數(shù)據(jù)返回后直接發(fā)送給 一致性引擎且不在末端高速緩存的數(shù)據(jù)陣列中保留備份;如果微操作是寫旁路命令,則將寫旁路命令的數(shù)據(jù)直接發(fā)送給內(nèi)存控制器更新內(nèi)存;如果微操作是修改替換優(yōu)先級命令或空值則不做任何操作;最后退出處理流程;3. 5)替換邏輯從替換指示位存儲陣列中讀取同組數(shù)據(jù)行的替換指示位并從中選取一路數(shù)據(jù)行進(jìn)行替換;3.6)更新末端高速緩存中標(biāo)志陣列中對應(yīng)被替換數(shù)據(jù)行的標(biāo)志值,根據(jù)替換優(yōu)先寄存器值更新替換指示位存儲陣列中對應(yīng)被替換數(shù)據(jù)行的替換指示位,將有效位存儲陣列中對應(yīng)被替換數(shù)據(jù)行的有效位置為I ;3. 7)檢查微操作的類型,如果微操作為讀命令或預(yù)取命令則跳轉(zhuǎn)到3. 9);如果微操作為空命令并退出處理流程;如果微操作為寫指令則繼續(xù)執(zhí)行下一步;3. 8)將寫指令的數(shù)據(jù)寫入末端高速緩存的數(shù)據(jù)陣列中并將被替換的數(shù)據(jù)發(fā)送給內(nèi)存控制器寫回內(nèi)存并退出處理流程;3. 9)向內(nèi)存控制器發(fā)送讀請求,在讀請的數(shù)據(jù)返回后將返回數(shù)據(jù)寫入到末端高速緩存的數(shù)據(jù)陣列中對應(yīng)的數(shù)據(jù)行,并將被替換的數(shù)據(jù)行寫回內(nèi)存;如果微操作為讀命令,將返回數(shù)據(jù)發(fā)送給一致性引擎并退出處理流程;最后退出處理流程。所述步驟3. 5)的詳細(xì)步驟包括3. 5. I)根據(jù)所述微操作的地址中尋址部分的值為索引在末端高速緩存的標(biāo)簽陣列中查找匹配的一個數(shù)據(jù)組,并獲取所述數(shù)據(jù)組中每一路數(shù)據(jù)的替換指示位和有效位;3. 5. 2)從所述數(shù)據(jù)組中查找第一個替換指示位為O且有效位為I的數(shù)據(jù)行,如果沒有找到則將所述替換指示位置為全O,并重新查找第一個替換指示位為O且有效位為I的數(shù)據(jù)行;3. 5. 3)最后將查找得到的數(shù)據(jù)行作為被替換的數(shù)據(jù)進(jìn)行替換。所述步驟3. 5. I)中查找得到匹配的數(shù)據(jù)組后,首先將所述數(shù)據(jù)組分成多個子數(shù)據(jù)組;所述步驟3. 5. 2)中從所述數(shù)據(jù)組中查找第一個替換指示位為O且有效位為I的數(shù)據(jù)行時具體是指分別同時針對每一個子數(shù)據(jù)組查找第一個替換指示位為O且有效位為I的數(shù)據(jù)行,然后根據(jù)從任意一個子數(shù)據(jù)組中最早找到的第一個替換指示位為O且有效位為I的數(shù)據(jù)行作為最終找到的第一個替換指示位為O且有效位為I的數(shù)據(jù)行。本發(fā)明還提供一種基于應(yīng)用敏感的微處理器末端高速緩存控制裝置,包括譯碼部件、標(biāo)簽陣列、有效位存儲陣列、替換指示位存儲陣列、替換邏輯、失效控制邏輯、數(shù)據(jù)陣列,所述譯碼部件分別通過標(biāo)簽陣列、有效位存儲陣列、替換指示位存儲陣列和替換邏輯相連,所述替換邏輯通過失效控制邏輯與數(shù)據(jù)陣列相連,所述譯碼部件與替換邏輯之間還設(shè)有第一配置寄存器和第二配置寄存器,所述第一配置寄存器存儲有一組與一致性引擎發(fā)出的指令類型一一對應(yīng)的緩存失效寄存器值,所述第二配置寄存器存儲有一組與一致性引擎發(fā)出的指令類型一一對應(yīng)的替換優(yōu)先寄存器值;在接收到一致性引擎的指令時,所述譯碼部件在將所述指令譯碼為末端高速緩存的微操作時一并獲取所述指令對應(yīng)第一配置寄存器中的緩存失效寄存器值、對應(yīng)第二配置寄存器中的替換優(yōu)先寄存器值;所述失效控制邏輯根據(jù)所述緩存失效寄存器值執(zhí)行失效邏輯控制,當(dāng)所述指令失效時,如果緩存失效寄存器值為1,則所述失效控制邏輯將直接向存儲控制器發(fā)送讀寫指令而不再改變數(shù)據(jù)陣列現(xiàn)有的狀態(tài)以及數(shù)據(jù);如果緩存失效寄存器值為O,則所述失效控制邏輯首先通過替換邏輯根據(jù)所述替換優(yōu)先寄存器值對數(shù)據(jù)陣列內(nèi)部的數(shù)據(jù)行執(zhí)行替換操作,然后將所述指令的寫入數(shù)據(jù)或者從內(nèi)存中讀回的數(shù)據(jù)寫入到數(shù)據(jù)陣列中被替換的數(shù)據(jù)行中。本發(fā)明基于應(yīng)用敏感的微處理器末端高速緩存控制方法具有下述優(yōu)點本發(fā)明通過創(chuàng)建第一配置寄存器和第二配置寄存器,在接收到一致性引擎的指令時,譯碼部件在將指令譯碼為末端高速緩存的微操作時一并獲取指令對應(yīng)第一配置寄存器中的緩存失效
寄存器值、對應(yīng)第二配置寄存器中的替換優(yōu)先寄存器值,并使得失效控制邏輯根據(jù)緩存失效寄存器值執(zhí)行失效邏輯控制、執(zhí)行替換時失效控制邏輯首先通過替換邏輯根據(jù)替換優(yōu)先寄存器值對數(shù)據(jù)陣列內(nèi)部的數(shù)據(jù)行執(zhí)行替換操作,因此能夠?qū)崿F(xiàn)針對應(yīng)用程序特點,結(jié)合程序運行時動態(tài)配置的第一配置寄存器和第二配置寄存器的值,改變一致性引擎指令與末端非一致性高速緩存的微操作類型的映射關(guān)系,并調(diào)整末端非一致性高速緩存的替換優(yōu)先級,能夠動態(tài)適應(yīng)應(yīng)用程序的訪存特征,對不同應(yīng)用分別加速,細(xì)微調(diào)優(yōu),具有很高的靈活性,為應(yīng)用程序調(diào)優(yōu)加速實現(xiàn)了基礎(chǔ)的硬件支持。本發(fā)明基于應(yīng)用敏感的微處理器末端高速緩存控制裝置由于具有實現(xiàn)基于應(yīng)用敏感的微處理器末端高速緩存控制方法的結(jié)構(gòu),因此也具有上述基于應(yīng)用敏感的微處理器末端高速緩存控制方法相應(yīng)的技術(shù)效果。
圖I為本發(fā)明實施例裝置的框架結(jié)構(gòu)示意圖。圖2為本發(fā)明實施例裝置的工作流程示意圖。圖例說明1、譯碼部件;2、標(biāo)簽陣列;3、有效位存儲陣列;4、替換指示位存儲陣列;5、替換邏輯;6、失效控制邏輯;7、數(shù)據(jù)陣列;8、第一配置寄存器;9、第二配置寄存器。
具體實施例方式本實施例基于應(yīng)用敏感的微處理器末端高速緩存控制方法的實施步驟如下I)創(chuàng)建第一配置寄存器(B-Reg寄存器)和第二配置寄存器(P-Reg寄存器);第一配置寄存器存儲有一組與一致性引擎發(fā)出的指令類型一一對應(yīng)的緩存失效寄存器值;第二配置寄存器存儲有一組與一致性引擎發(fā)出的指令類型一一對應(yīng)的替換優(yōu)先寄存器值;2)在接收到一致性引擎的指令時,譯碼部件在將指令譯碼為末端高速緩存的微操作時一并獲取指令對應(yīng)第一配置寄存器中的緩存失效寄存器值、對應(yīng)第二配置寄存器中的替換優(yōu)先寄存器值;3)失效控制邏輯根據(jù)緩存失效寄存器值執(zhí)行失效邏輯控制,當(dāng)指令失效時,如果緩存失效寄存器值為1,則失效控制邏輯將直接向存儲控制器發(fā)送讀寫指令而不再改變數(shù)據(jù)陣列現(xiàn)有的狀態(tài)以及數(shù)據(jù);如果緩存失效寄存器值為O,則失效控制邏輯首先通過替換邏輯根據(jù)替換優(yōu)先寄存器值對數(shù)據(jù)陣列內(nèi)部的數(shù)據(jù)行執(zhí)行替換操作,然后將指令的寫入數(shù)據(jù)或者從內(nèi)存中讀回的數(shù)據(jù)寫入到數(shù)據(jù)陣列中被替換的數(shù)據(jù)行中。本實施例在末端高速緩存中設(shè)置兩組配置寄存器——B-Reg寄存器和P-Reg寄存器,并擴(kuò)充了相關(guān)控制邏輯,B-Reg寄存器用于表征來自于一致性引擎的指令是否會導(dǎo)致數(shù)據(jù)在末端高速緩存中保留備份,P-Reg寄存器用于控制一致性引擎指令被譯碼為末端高速緩存的微操作時該數(shù)據(jù)在末端高速緩存中的替換優(yōu)先級。一致性引擎發(fā)出的指令類型以及后續(xù)在末端高速緩存中的副本存儲情況說明如下表I所示。表I
權(quán)利要求
1.一種基于應(yīng)用敏感的微處理器末端高速緩存控制方法,其特征在于其實施步驟如下 1)創(chuàng)建第一配置寄存器和第二配置寄存器;所述第一配置寄存器存儲有一組與一致性引擎發(fā)出的指令類型一一對應(yīng)的緩存失效寄存器值;所述第二配置寄存器存儲有一組與一致性引擎發(fā)出的指令類型一一對應(yīng)的替換優(yōu)先寄存器值; 2)在接收到一致性引擎的指令時,譯碼部件在將所述指令譯碼為末端高速緩存的微操作時一并獲取所述指令對應(yīng)第一配置寄存器中的緩存失效寄存器值、對應(yīng)第二配置寄存器中的替換優(yōu)先寄存器值; 3)失效控制邏輯根據(jù)所述緩存失效寄存器值執(zhí)行失效邏輯控制,當(dāng)所述指令失效時,如果緩存失效寄存器值為1,則失效控制邏輯將直接向存儲控制器發(fā)送讀寫指令而不再改變數(shù)據(jù)陣列現(xiàn)有的狀態(tài)以及數(shù)據(jù);如果緩存失效寄存器值為O,則失效控制邏輯首先通過替換邏輯根據(jù)所述替換優(yōu)先寄存器值對數(shù)據(jù)陣列內(nèi)部的數(shù)據(jù)行執(zhí)行替換操作,然后將所述指令的寫入數(shù)據(jù)或者從內(nèi)存中讀回的數(shù)據(jù)寫入到數(shù)據(jù)陣列中被替換的數(shù)據(jù)行中。
2.根據(jù)權(quán)利要求I所述的基于應(yīng)用敏感的微處理器末端高速緩存控制方法,其特征在于,所述步驟3)的詳細(xì)步驟包括 .3.I)判斷所述指令對應(yīng)微操作的地址是否命中末端高速緩存,如果命中則跳轉(zhuǎn)執(zhí)行步驟3. 3),否則繼續(xù)執(zhí)行下一步; .3. 2)檢查所述微操作的類型,如果微操作為修改替換優(yōu)先級命令則替換邏輯將微操作的替換優(yōu)先寄存器值更新,否則繼續(xù)保持微操作的替換優(yōu)先寄存器值不變,最終替換邏輯將替換優(yōu)先寄存器值回填至替換指示位存儲陣列的替換指示位;如果微操作為讀命令或者讀旁路命令,則從末端高速緩存的數(shù)據(jù)陣列中讀取所述微操作對應(yīng)的數(shù)據(jù)行返回給一致性引擎部件;如果微操作為寫命令或?qū)懪月访?,則將最新數(shù)據(jù)寫入末端高速緩存的數(shù)據(jù)體陣列中;最后退出處理流程; . 3. 3)檢查緩存失效寄存器值,如果所述緩存失效寄存器值不為I,則跳轉(zhuǎn)到3. 5),否則繼續(xù)執(zhí)行下一步; . 3. 4)檢查所述微操作的類型;如果微操作為讀旁路指令則向內(nèi)存控制器發(fā)送讀命令,讀命令的數(shù)據(jù)返回后直接發(fā)送給一致性引擎且不在末端高速緩存的數(shù)據(jù)陣列中保留備份;如果微操作是寫旁路命令,則將寫旁路命令的數(shù)據(jù)直接發(fā)送給內(nèi)存控制器更新內(nèi)存;如果微操作是修改替換優(yōu)先級命令或空值則不做任何操作;最后退出處理流程; .3. 5)替換邏輯從替換指示位存儲陣列中讀取同組數(shù)據(jù)行的替換指示位并從中選取一路數(shù)據(jù)行進(jìn)行替換; .3. 6)更新末端高速緩存中標(biāo)志陣列中對應(yīng)被替換數(shù)據(jù)行的標(biāo)志值,根據(jù)替換優(yōu)先寄存器值更新替換指示位存儲陣列中對應(yīng)被替換數(shù)據(jù)行的替換指示位,將有效位存儲陣列中對應(yīng)被替換數(shù)據(jù)行的有效位置為I ; .3.7)檢查微操作的類型,如果微操作為讀命令或預(yù)取命令則跳轉(zhuǎn)到3. 9);如果微操作為空命令并退出處理流程;如果微操作為寫指令則繼續(xù)執(zhí)行下一步; . 3.8)將寫指令的數(shù)據(jù)寫入末端高速緩存的數(shù)據(jù)陣列中并將被替換的數(shù)據(jù)發(fā)送給內(nèi)存控制器寫回內(nèi)存并退出處理流程; . 3.9)向內(nèi)存控制器發(fā)送讀請求,在讀請的數(shù)據(jù)返回后將返回數(shù)據(jù)寫入到末端高速緩存的數(shù)據(jù)陣列中對應(yīng)的數(shù)據(jù)行,并將被替換的數(shù)據(jù)行寫回內(nèi)存;如果微操作為讀命令,將返回數(shù)據(jù)發(fā)送給一致性引擎并退出處理流程;最后退出處理流程。
3.根據(jù)權(quán)利要求2所述的基于應(yīng)用敏感的微處理器末端高速緩存控制方法,其特征在于,所述步驟3. 5)的詳細(xì)步驟包括 3.5. I)根據(jù)所述微操作的地址中尋址部分的值為索引在末端高速緩存的標(biāo)簽陣列中查找匹配的一個數(shù)據(jù)組,并獲取所述數(shù)據(jù)組中每一路數(shù)據(jù)的替換指示位和有效位; 3.5. 2)從所述數(shù)據(jù)組中查找第一個替換指示位為O且有效位為I的數(shù)據(jù)行,如果沒有找到則將所述替換指示位置為全O,并重新查找第一個替換指示位為O且有效位為I的數(shù)據(jù)行; 3.5. 3)最后將查找得到的數(shù)據(jù)行作為被替換的數(shù)據(jù)進(jìn)行替換。
4.根據(jù)權(quán)利要求3所述的基于應(yīng)用敏感的微處理器末端高速緩存控制方法,其特征在于所述步驟3. 5. I)中查找得到匹配的數(shù)據(jù)組后,首先將所述數(shù)據(jù)組分成多個子數(shù)據(jù)組;所述步驟3. 5. 2)中從所述數(shù)據(jù)組中查找第一個替換指示位為O且有效位為I的數(shù)據(jù)行時具體是指分別同時針對每一個子數(shù)據(jù)組查找第一個替換指示位為O且有效位為I的數(shù)據(jù)行,然后根據(jù)從任意一個子數(shù)據(jù)組中最早找到的第一個替換指示位為O且有效位為I的數(shù)據(jù)行作為最終找到的第一個替換指示位為O且有效位為I的數(shù)據(jù)行。
5.一種基于應(yīng)用敏感的微處理器末端高速緩存控制裝置,包括譯碼部件(I)、標(biāo)簽陣列(2)、有效位存儲陣列(3)、替換指示位存儲陣列(4)、替換邏輯(5)、失效控制邏輯(6)、數(shù)據(jù)陣列(7),所述譯碼部件⑴分別通過標(biāo)簽陣列(2)、有效位存儲陣列(3)、替換指示位存儲陣列(4)和替換邏輯(5)相連,所述替換邏輯(5)通過失效控制邏輯(6)與數(shù)據(jù)陣列(7)相連,其特征在于所述譯碼部件(I)與替換邏輯(5)之間還設(shè)有第一配置寄存器(8)和第二配置寄存器(9),所述第一配置寄存器(8)存儲有一組與一致性引擎發(fā)出的指令類型一一對應(yīng)的緩存失效寄存器值,所述第二配置寄存器(9)存儲有一組與一致性引擎發(fā)出的指令類型一一對應(yīng)的替換優(yōu)先寄存器值;在接收到一致性引擎的指令時,所述譯碼部件(I)在將所述指令譯碼為末端高速緩存的微操作時一并獲取所述指令對應(yīng)第一配置寄存器(8)中的緩存失效寄存器值、對應(yīng)第二配置寄存器(9)中的替換優(yōu)先寄存器值;所述失效控制邏輯(6)根據(jù)所述緩存失效寄存器值執(zhí)行失效邏輯控制,當(dāng)所述指令失效時,如果緩存失效寄存器值為1,則所述失效控制邏輯(6)將直接向存儲控制器發(fā)送讀寫指令而不再改變數(shù)據(jù)陣列(7)現(xiàn)有的狀態(tài)以及數(shù)據(jù);如果緩存失效寄存器值為O,則所述失效控制邏輯(6)首先通過替換邏輯(5)根據(jù)所述替換優(yōu)先寄存器值對數(shù)據(jù)陣列(7)內(nèi)部的數(shù)據(jù)行執(zhí)行替換操作,然后將所述指令的寫入數(shù)據(jù)或者從內(nèi)存中讀回的數(shù)據(jù)寫入到數(shù)據(jù)陣列(7)中被替換的數(shù)據(jù)行中。
全文摘要
本發(fā)明公開了一種基于應(yīng)用敏感的微處理器末端高速緩存控制方法及裝置,方法步驟如下1)創(chuàng)建第一配置寄存器和第二配置寄存器;2)在接收指令時,譯碼部件獲取緩存失效寄存器值、替換優(yōu)先寄存器值;3)當(dāng)所述指令失效時失效控制邏輯根據(jù)所述緩存失效寄存器值執(zhí)行失效邏輯控制,且失效控制邏輯首先通過替換邏輯根據(jù)所述替換優(yōu)先寄存器值對數(shù)據(jù)陣列內(nèi)部的數(shù)據(jù)行執(zhí)行替換操作;裝置包括譯碼部件、標(biāo)簽陣列、有效位存儲陣列、替換指示位存儲陣列、替換邏輯、失效控制邏輯、數(shù)據(jù)陣列、第一配置寄存器和第二配置寄存器。本發(fā)明為應(yīng)用程序調(diào)優(yōu)加速實現(xiàn)了基礎(chǔ)硬件支持,靈活性高。
文檔編號G06F12/12GK102880559SQ201210269038
公開日2013年1月16日 申請日期2012年7月31日 優(yōu)先權(quán)日2012年7月31日
發(fā)明者晏小波, 李永進(jìn), 鄧讓鈺, 衣曉飛, 周宏偉, 張英, 竇強(qiáng), 曾坤, 謝倫國, 馬卓 申請人:中國人民解放軍國防科學(xué)技術(shù)大學(xué)