本發(fā)明適用于處理器,尤其涉及一種寄存器堆緩存的管理方法、裝置及存儲介質(zhì)。
背景技術(shù):
1、隨著半導(dǎo)體工藝的進(jìn)步和計(jì)算機(jī)體系結(jié)構(gòu)的創(chuàng)新,處理器性能持續(xù)增長。摩爾定律推動晶體管數(shù)量激增,使得單核處理器頻率提升、指令吞吐量大幅增加。寄存器堆(register?file)作為處理器核心的存儲單元,直接與運(yùn)算邏輯單元交互,其性能直接影響指令執(zhí)行效率。早期的簡單寄存器結(jié)構(gòu)逐漸演變?yōu)橹С指鼘挃?shù)據(jù)位和更大容量的復(fù)雜設(shè)計(jì),以滿足高性能計(jì)算需求。
2、為突破單指令流水線的性能瓶頸,現(xiàn)代處理器廣泛采用多發(fā)射技術(shù),例如超標(biāo)量和超長指令字架構(gòu)。這類處理器每個時鐘周期可同時發(fā)射并執(zhí)行多條指令(如4路、6路發(fā)射),顯著提升指令級并行性(ilp)。然而,多發(fā)射架構(gòu)要求寄存器堆在同一周期內(nèi)為多條指令提供操作數(shù),導(dǎo)致讀端口數(shù)量需求劇增。例如,8路超標(biāo)量處理器執(zhí)行8條指令時,若每條指令需要2個源寄存器,則寄存器堆需支持至少16個讀端口。這種多端口需求使得寄存器堆的結(jié)構(gòu)復(fù)雜性急劇上升,成為制約處理器頻率和能效的關(guān)鍵因素。
3、當(dāng)前多端口寄存器堆的設(shè)計(jì)面臨兩大核心問題:時序風(fēng)險(xiǎn)與硬件開銷。每個讀/寫端口需獨(dú)立訪問寄存器單元,導(dǎo)致互連布線復(fù)雜化,信號傳輸路徑延長。多端口復(fù)用電路和交叉開關(guān)(crossbar)的引入可能使寄存器訪問延遲成為處理器關(guān)鍵路徑,限制主頻提升。傳統(tǒng)寄存器堆采用多端口存儲單元(multi-ported?sram),其面積隨端口數(shù)呈平方級增長。例如,一個32寄存器×64位的寄存器堆,若支持10個讀端口和4個寫端口,其面積可能占處理器核心總面積的20%以上。隨著工藝節(jié)點(diǎn)微縮,晶體管密度提升,但多端口靜態(tài)隨機(jī)存取存儲器(static?random-access?memory,sram)的面積優(yōu)化空間有限,導(dǎo)致寄存器堆在先進(jìn)制程中的成本占比不降反升。
4、寄存器堆緩存(register?file?cache)作為一種優(yōu)化處理器性能的技術(shù),近年來得到了廣泛的研究和應(yīng)用。緩存的加入減少了對主寄存器堆的讀端口占用,使主寄存器堆能夠使用低端口數(shù)的靜態(tài)內(nèi)存,降低硬件面積與時序風(fēng)險(xiǎn)。
5、現(xiàn)有的寄存器堆緩存技術(shù)可大致分為:分級緩存架構(gòu)與混合多端口設(shè)計(jì)。分級緩存架構(gòu)指的是集成在指令發(fā)射階段的緩存,負(fù)責(zé)緩存最近發(fā)射指令的源寄存器值,容量較?。?~16條目),為全關(guān)聯(lián)或組關(guān)聯(lián)設(shè)計(jì),支持單周期訪問。更常見的為混合多端口設(shè)計(jì),在此類型的設(shè)計(jì)中,指令將并行訪問主寄存器堆與緩存。從而在主寄存器堆讀口數(shù)量不變的情況下,通過緩存擴(kuò)展總體讀口數(shù)量。緩存組織方式可以為直接映射,組相聯(lián),或者全相聯(lián)。緩存內(nèi)容大致為:有效位,標(biāo)簽(用于標(biāo)識對應(yīng)主寄存器堆條目),臟位(用于指示緩存條目是否已被修改),和寄存器數(shù)據(jù)。
6、類似于數(shù)據(jù)緩存,寄存器堆緩存也需要使用緩存一致性協(xié)議來保證緩存內(nèi)的數(shù)據(jù)為最新。在出現(xiàn)流水線沖刷操作時,也需要對過期的緩存數(shù)據(jù)進(jìn)行無效化標(biāo)記。在緩存滿時,可選不同的替換策略以確認(rèn)需要被覆寫的緩存數(shù)據(jù),例如最近最少使用,先進(jìn)先出,或隨機(jī)替換等策略。
7、混合多端口設(shè)計(jì)雖然能夠有效提供更多讀口,但緩存維護(hù)策略復(fù)雜,在流水線沖刷情況下邏輯多且功耗高。對前端設(shè)計(jì),驗(yàn)證,與后端布局帶來風(fēng)險(xiǎn)?,F(xiàn)有技術(shù)中,需要在出現(xiàn)同寄存器條目覆寫的情況下對寄存器堆緩存中相應(yīng)的條目進(jìn)行臟位或者無效化標(biāo)記。當(dāng)出現(xiàn)流水線沖刷時,需將所有緩存中的數(shù)據(jù)寫回至主寄存器堆后才可以結(jié)束沖刷流程繼續(xù)執(zhí)行。在緩存較滿情況下會帶來很長延遲影響性能。如果采用精確沖刷的方法,則需要在出現(xiàn)流水線沖刷時,檢查每一個緩存條目,并且判斷是否需要寫回。該方法硬件復(fù)雜度高,面積與功耗開銷大,可能限制處理器主頻。
8、因此,亟需一種新的寄存器堆緩存的管理方法、裝置及存儲介質(zhì),解決上述技術(shù)問題。
技術(shù)實(shí)現(xiàn)思路
1、本發(fā)明提供一種寄存器堆緩存的管理方法、裝置及存儲介質(zhì),旨在保留混合多端口寄存器堆緩存設(shè)計(jì)優(yōu)點(diǎn)的同時,通過簡化寫回與緩存管理策略,降低時序與驗(yàn)證風(fēng)險(xiǎn)。在發(fā)生流水線沖刷時,減少硬件開銷并避免性能損失。
2、第一方面,本發(fā)明提供一種寄存器堆緩存的管理方法,所述管理方法包括以下步驟:
3、s1、通過處理器前端獲取待執(zhí)行指令進(jìn)行分支預(yù)測處理和解碼處理,并將處理后的所述待執(zhí)行指令發(fā)送至處理器后端;
4、s2、通過所述處理器后端根據(jù)所述待執(zhí)行指令進(jìn)行運(yùn)算,得到運(yùn)算結(jié)果,根據(jù)所述處理器后端的寄存器堆模塊的存儲狀態(tài)以及緩存管理策略將所述運(yùn)算結(jié)果寫回至所述寄存器堆模塊中;其中,所述寄存器堆模塊包括寫回緩存單元、主寄存器堆單元以及寄存器緩存單元;所述主寄存器堆單元用于存儲和管理處理器中的寄存器數(shù)據(jù),所述寄存器緩存單元用于緩存寫回的所述運(yùn)算結(jié)果并提供額外讀口,所述寫回緩存單元用于緩存寫回的所述運(yùn)算結(jié)果并寫回至所述主寄存器堆單元;
5、所述緩存管理策略包括:
6、在所述寫回緩存單元中的運(yùn)算結(jié)果寫回至所述主寄存器堆單元時,根據(jù)所述運(yùn)算結(jié)果對應(yīng)的寄存器編號查找所述寄存器緩存單元中對應(yīng)的第一條目,將所述第一條目的狀態(tài)更新為已寫回;
7、當(dāng)所述寄存器緩存單元的存儲狀態(tài)為滿,且所述寫回緩存單元向所述寄存器緩存單元發(fā)出寫回請求時,根據(jù)所述寄存器緩存單元中條目的狀態(tài),生成已寫回條目掩碼;根據(jù)所述已寫回條目掩碼在所述寄存器緩存單元中選擇一個條目作為第二條目,將所述運(yùn)算結(jié)果以及所述運(yùn)算結(jié)果對應(yīng)的寄存器編號覆蓋寫入所述第二條目中。
8、優(yōu)選地,步驟s2中,包括以下子步驟:
9、s21、判斷所述寫回緩存單元的存儲狀態(tài)是否為滿:若是,則將所述運(yùn)算結(jié)果返回至所述處理器后端的執(zhí)行單元;若否,則進(jìn)行步驟s22;
10、s22、所述寫回緩存單元為所述運(yùn)算結(jié)果分配寫回緩存條目,將所述運(yùn)算結(jié)果存儲至所述寫回緩存單元;
11、s23、判斷所述寄存器緩存單元的存儲狀態(tài)是否為滿:
12、若是,則在所述寄存器緩存單元任意選擇具有已寫回標(biāo)記的所述第一條目作為替換條目,將所述運(yùn)算結(jié)果寫入至所述替換條目中,并標(biāo)記所述替換條目的狀態(tài)為未寫回;
13、若否,則將所述運(yùn)算結(jié)果寫入至所述寄存器緩存單元中的空閑條目,并標(biāo)記所述空閑條目的狀態(tài)為未寫回;
14、s24、所述主寄存器堆對所述寫回緩存單元中具有未寫回標(biāo)記的所述寫回緩存條目進(jìn)行寫回仲裁,并判斷所述寫回緩存條目是否仲裁成功:
15、若是,則將仲裁成功的所述寫回緩存條目中的數(shù)據(jù)寫回至所述主寄存器堆單元,并將在所述寄存器緩存單元中與所述寫回緩存條目對應(yīng)的條目的狀態(tài)標(biāo)記為已寫回。
16、優(yōu)選地,當(dāng)處理器發(fā)生流水線沖刷時,所述寄存器緩存單元中的條目以及所述寫回緩存單元中的條目的狀態(tài)保持不變。
17、優(yōu)選地,當(dāng)所述處理器發(fā)生流水線沖刷后,所述處理器前端發(fā)送新指令至所述處理器后端進(jìn)行寄存器重命名處理時:
18、檢查所述寄存器緩存單元中的條目,判斷所述寄存器緩存單元中是否存在與當(dāng)前重命名目標(biāo)寄存器相同的條目:若是,則對所述寄存器緩存單元中對應(yīng)的條目進(jìn)行無效化處理;
19、檢查所述寫回緩存單元中的條目,判斷所述寫回緩存單元中是否存在與當(dāng)前重命名目標(biāo)寄存器相同的條目:若是,則對所述寫回緩存單元中對應(yīng)的條目進(jìn)行無效化處理。
20、第二方面,本發(fā)明還提供一種寄存器堆緩存的管理裝置,包括:
21、發(fā)送模塊,用于通過處理器前端獲取待執(zhí)行指令進(jìn)行分支預(yù)測處理和解碼處理,并將處理后的所述待執(zhí)行指令發(fā)送至處理器后端;
22、運(yùn)算模塊,用于通過所述處理器后端根據(jù)所述待執(zhí)行指令進(jìn)行運(yùn)算,得到運(yùn)算結(jié)果,根據(jù)所述處理器后端的寄存器堆模塊的存儲狀態(tài)以及緩存管理策略將所述運(yùn)算結(jié)果寫回至所述寄存器堆模塊中;其中,所述寄存器堆模塊包括寫回緩存單元、主寄存器堆單元以及寄存器緩存單元;所述主寄存器堆單元用于存儲和管理處理器中的寄存器數(shù)據(jù),所述寄存器緩存單元用于緩存寫回的所述運(yùn)算結(jié)果并提供額外讀口,所述寫回緩存單元用于緩存寫回的所述運(yùn)算結(jié)果并寫回至所述主寄存器堆單元;
23、所述緩存管理策略包括:
24、在所述寫回緩存單元中的運(yùn)算結(jié)果寫回至所述主寄存器堆單元時,根據(jù)所述運(yùn)算結(jié)果對應(yīng)的寄存器編號查找所述寄存器緩存單元中對應(yīng)的第一條目,將所述第一條目的狀態(tài)更新為已寫回;
25、當(dāng)所述寄存器緩存單元的存儲狀態(tài)為滿,且所述寫回緩存單元向所述寄存器緩存單元發(fā)出寫回請求時,根據(jù)所述寄存器緩存單元中條目的狀態(tài),生成已寫回條目掩碼;根據(jù)所述已寫回條目掩碼在所述寄存器緩存單元中選擇一個條目作為第二條目,將所述運(yùn)算結(jié)果以及所述運(yùn)算結(jié)果對應(yīng)的寄存器編號覆蓋寫入所述第二條目中。
26、優(yōu)選地,所述運(yùn)算模塊包括以下子單元:
27、判斷單元,用于判斷所述寫回緩存單元的存儲狀態(tài)是否為滿:若是,則將所述運(yùn)算結(jié)果返回至所述處理器后端的執(zhí)行單元;若否,則跳轉(zhuǎn)至第一寫回存儲單元;
28、所述第一寫回存儲單元,用于所述寫回緩存單元為所述運(yùn)算結(jié)果分配寫回緩存條目,將所述運(yùn)算結(jié)果存儲至所述寫回緩存單元;
29、第二寫回判斷單元,用于判斷所述寄存器緩存單元的存儲狀態(tài)是否為滿:
30、若是,則在所述寄存器緩存單元任意選擇具有已寫回標(biāo)記的所述第一條目作為替換條目,將所述運(yùn)算結(jié)果寫入至所述替換條目中,并標(biāo)記所述替換條目的狀態(tài)為未寫回;
31、若否,則將所述運(yùn)算結(jié)果寫入至所述寄存器緩存單元中的空閑條目,并標(biāo)記所述空閑條目的狀態(tài)為未寫回;
32、仲裁單元,用于所述主寄存器堆對所述寫回緩存單元中具有未寫回標(biāo)記的所述寫回緩存條目進(jìn)行寫回仲裁,并判斷所述寫回緩存條目是否仲裁成功:
33、若是,則將仲裁成功的所述寫回緩存條目中的數(shù)據(jù)寫回至所述主寄存器堆單元,并將在所述寄存器緩存單元中與所述寫回緩存條目對應(yīng)的條目的狀態(tài)標(biāo)記為已寫回。
34、優(yōu)選地,當(dāng)處理器發(fā)生流水線沖刷時,所述寄存器緩存單元中的條目以及所述寫回緩存單元中的條目的狀態(tài)保持不變。
35、優(yōu)選地,當(dāng)所述處理器發(fā)生流水線沖刷后,所述處理器前端發(fā)送新指令至所述處理器后端進(jìn)行寄存器重命名處理時:
36、檢查所述寄存器緩存單元中的條目,判斷所述寄存器緩存單元中是否存在與當(dāng)前重命名目標(biāo)寄存器相同的條目:若是,則對所述寄存器緩存單元中對應(yīng)的條目進(jìn)行無效化處理;
37、檢查所述寫回緩存單元中的條目,判斷所述寫回緩存單元中是否存在與當(dāng)前重命名目標(biāo)寄存器相同的條目:若是,則對所述寫回緩存單元中對應(yīng)的條目進(jìn)行無效化處理。
38、第三方面,本發(fā)明還提供一種寄存器堆緩存的管理裝置,包括:存儲器、處理器及存儲在所述存儲器上并可在所述處理器上運(yùn)行的寄存器堆緩存的管理程序,所述處理器執(zhí)行所述寄存器堆緩存的管理程序時實(shí)現(xiàn)如上述實(shí)施例中任意一項(xiàng)所述的寄存器堆緩存的管理方法中的步驟。
39、第四方面,本發(fā)明還提供一種存儲介質(zhì),所述存儲介質(zhì)上存儲有寄存器堆緩存的管理程序,所述寄存器堆緩存的管理程序被處理器執(zhí)行時實(shí)現(xiàn)如上述實(shí)施例中任意一項(xiàng)所述的寄存器堆緩存的管理方法中的步驟。
40、與現(xiàn)有技術(shù)相比,本發(fā)明通過緩存管理策略以及流水線沖刷時對應(yīng)的處理機(jī)制,在保證寄存器堆模塊讀寫口數(shù)量滿足需求的條件下,降低了硬件開銷,邏輯復(fù)雜度與動態(tài)功耗,減少緩存一致性維護(hù)操作帶來的復(fù)雜度。在發(fā)生流水線沖刷時,不花費(fèi)時間與硬件資源沖刷緩存,而是在重命名時檢測寫后寫危害,再精準(zhǔn)無效化需要被覆寫的條目,以滿足處理器在高主頻以及大亂序?qū)挾认碌臅r序與功能需求。