本說明書涉及計算機,特別涉及一種risc-v矢量寄存器釋放方法及裝置。
背景技術:
::1、很多cpu內核都實現(xiàn)了寄存器重命名,即將一個架構寄存器映射到內核中的一個物理寄存器上,以規(guī)避write-after-read及write-after-write等假寄存器依賴(falseregister?dependency)的情形,以提升cpu處理指令的并行度(instruction?levelparallelism,ilp)及性能。對這類實現(xiàn)寄存器重命名的cpu內核,masked指令需要從舊的目標物理寄存器a中拷貝unmasked字段至同一個架構寄存器映射的新的目標物理寄存器b中,以保證這些字段的值不變化。此時,一條masked指令需要讀四個不同的物理寄存器值:2個源,1個mask,一個當前映射的目標物理寄存器。寄存器重命名通常通過如下幾個硬件buffer來完成:推測重命名表(speculative?rename?table,srt):保存最新(但可能有錯誤、會被flush)的架構寄存器到物理寄存器之間的映射關系。架構重命名表(architectural?rename?table,art):保存架構狀態(tài)下的架構寄存器到物理寄存器之間的映射關系。free?register?list(frl):一般以一個bit?list的方式實現(xiàn),每個物理寄存器對應一個bit,bit值為1表示該物理寄存器當前沒有被使用。reorder?buffer(rob):rob是一個先入先出(first?in?first?out)的circular?buffer,用來在亂序執(zhí)行的cpu內核中維護指令之間的順序關系。2、當一條指令進行寄存器重命名時,重命名單元會進行如下操作:查詢srt,對其每一個源架構寄存器找到其當前映射的物理寄存器。當該指令后續(xù)在dispatch流水級被插入rob中時,其目標寄存器的重命名信息也保存在對應rob項中。對其每一個目標架構寄存器,選擇一條對應frl?bit為1的物理寄存器,并將該映射寫入該目標架構寄存器對應的srt項中,同時將該frl?bit置0。在后續(xù)的執(zhí)行中,該指令(或者其對應的一條或者多條微指令)讀、寫這些物理寄存器。3、在retire流水級,最老(即在rob頭部)的指令若已經執(zhí)行完成且沒有發(fā)生異常,則可以retire,也就是釋放這些指令使用的硬件資源,包括其映射的物理寄存器。此時,其目標架構寄存器至物理寄存器的映射關系會被寫入架構重命名表art中。而art中被替換出的物理寄存器會置其frl?bit為1,下一個時鐘周期就可以被重新被使用于一個新寄存器映射中。art的另一個作用是在發(fā)生分支預測錯誤造成的流水線flush時,用來恢復srt。當分支預測錯誤造成的流水線flush發(fā)生時,引發(fā)flush的分支預測指令不一定是流水線中最老的指令,此時需要進行如下操作以恢復到該指令為止的srt內容:清空并暫時中止cpu流水線。將rob中比該分支指令年輕的指令項都清空。將art的每一項寫入srt的對應項中。從rob第一項開始,將其目標寄存器映射內容寫入srt中。cpu流水線恢復運行,從被糾正的分支指令后的正確指令地址開始取指、執(zhí)行。4、標量及矢量指令都有可能發(fā)生異常。異常處理都是在該指令為流水線中最老的指令時進行處理。risc-v對矢量指令異常處理時,先將發(fā)生異常的字段在目標寄存器(組)的位置保存在vstart?csr寄存器中,將該指令所有index小于異常index的字段數(shù)據寫入目標寄存器中,再進行異常處理。異常處理完畢后,重新執(zhí)行該矢量指令,該指令會讀取vstart值,所有index小于vstart值的字段的mask都設為0,即其結果不會被寫入目標寄存器中對應位置中。5、簡單擴展現(xiàn)有標量rob以支持risc-v矢量指令的方案,物理寄存器釋放是仍以指令為粒度進行的。但是這個方案擴展至risc-v矢量指令時會面臨如下問題:每條rob項需要保存所有目標架構至物理寄存器的映射信息。而一條risc-v矢量指令最多會有8個目標寄存器,這些寄存器映射信息都需要被保存在rob項中,從而大幅增加每一rob項所需硬件資源。而risc-v標量指令僅有0或者1個目標寄存器,這些指令的rob項中大部分的寄存器映射域都用不到,從而造成rob項過大,浪費硬件資源。一條risc-v矢量指令最多會有8個目標寄存器,若該指令ready后才能釋放這些目標寄存器,有可能推遲這些物理寄存器的釋放時間,從而降低這些物理寄存器被重復使用的頻率,降低了矢量物理寄存器文件的利用效率,影響性能或者增大矢量物理寄存器文件面積。6、上述方案,所有寄存器映射信息被保存在rob中,且物理寄存器釋放是以指令為粒度進行的。這個方案會造成rob項有過多很多時候沒有被使用的域,且物理矢量寄存器的使用周期過長。這兩個問題會增加rob所需硬件資源,并造成矢量物理寄存器個數(shù)不足所帶來性能損失。為了避免上述性能損失,矢量寄存器文件中寄存器個數(shù)必須得增加,進一步增加rob所需硬件資源。7、針對上述問題,目前尚未提出有效的解決方案。技術實現(xiàn)思路1、本說明書實施例提供了一種risc-v矢量寄存器釋放方法及裝置,優(yōu)化的risc-v矢量指令rob擴展方案,以物理寄存器為粒度來釋放,能夠盡快釋放物理矢量寄存器,提高矢量寄存器文件的利用效率。因此,可以使用更少硬件資源及更少項數(shù)的寄存器文件達到與簡單擴展方案相同的性能。2、本說明書實施例提供了一種risc-v矢量寄存器釋放方法,包括:3、響應于矢量指令,于重排序緩存中預設的圓形緩存列表中存儲所述矢量指令的多個矢量目標寄存器映射信息;通過所述圓形緩存列表協(xié)助重排序緩存,以所述圓形緩存列表中的寄存器退役項標識的寄存器為粒度釋放所述矢量目標寄存器映射信息對應的矢量目標寄存器。4、在一個實施例中,所述方法還包含:5、于重排序緩存項中設置圓形緩存項標識域,其中,所述圓形緩存項標識域用于根據所述矢量指令對應的矢量目標寄存器情況,配置不同數(shù)值。6、在一個實施例中,所述方法還包含:7、響應于矢量指令,于重排序緩存中架構寄存器和物理寄存器域存儲所述矢量指令的標量寄存器映射信息。8、在一個實施例中,所述方法還包含:9、所述圓形緩存列表為所述矢量指令對應的每一個矢量目標寄存器分配一個寄存器退役項;其中,所述寄存器退役項包含圓形緩存列表索引、與重排序緩存對應的矢量指令索引域、目標架構寄存器域、對應目標物理寄存器域、矢量指令處理異常記錄標識域和寄存器寫入微指令的數(shù)量域。10、在一個實施例中,以所述圓形緩存列表中的寄存器退役項標識的寄存器為粒度釋放所述矢量目標寄存器映射信息對應的矢量目標寄存器包含:每個時鐘周期通過預設圓形緩存指針頭所指項開始順序釋放寄存器;每個時鐘周期通過預設圓形緩存指針尾所指項開始順序分配矢量寄存器映射;其中,所述圓形緩存指針頭指向圓形緩存列表中時間最長的有效項,所述圓形緩存指針尾指向圓形緩存列表中第一項無效項。11、在一個實施例中,所述寄存器寫入微指令的數(shù)量域用于根據需要寫入所述寄存器退役項對應的矢量目標寄存器的矢量微指令數(shù)量初始化生成對應的數(shù)值;以及,根據所述矢量微指令的執(zhí)行狀態(tài)進行對應的數(shù)值調整;其中,所述矢量微指令由所述矢量指令譯碼生成。12、在一個實施例中,所述寄存器寫入微指令的數(shù)量域用于根據需要寫入所述寄存器退役項對應的矢量目標寄存器的矢量微指令數(shù)量初始化生成對應的字段個數(shù)或字節(jié)個數(shù);以及,根據所述矢量微指令的執(zhí)行狀態(tài)進行對應的字段個數(shù)或字節(jié)個數(shù)調整;其中,所述矢量微指令由所述矢量指令譯碼生成。13、在一個實施例中,每個時鐘周期通過預設圓形緩存指針頭所指項開始順序釋放寄存器包含:根據預設圓形緩存指針頭所指項開始識別所有連續(xù)的被微指令寫滿所述寄存器退役項中所述寄存器寫入微指令的數(shù)量域,且無矢量指令處理異常的寄存器退役項;通過識別獲得的寄存器退役項釋放對應的寄存器,將所述寄存器退役項對應的寄存器映射存放于架構重命名表,并釋放架構重命名表中被替換項中的物理寄存器至空閑注冊表供后續(xù)調用。14、本說明書實施例還提供了一種risc-v矢量寄存器釋放裝置,所述裝置包含:分配模塊和釋放模塊;所述分配模塊用于響應于矢量指令,于重排序緩存中預設的圓形緩存列表中存儲所述矢量指令的多個矢量目標寄存器映射信息;所述釋放模塊用于通過所述圓形緩存列表協(xié)助重排序緩存,以所述圓形緩存列表中的寄存器退役項標識的寄存器為粒度釋放所述矢量目標寄存器映射信息對應的矢量目標寄存器。15、本說明書實施例還提供了一種中央處理裝置,所述中央處理裝置包含基于指令、微指令和宏指令的重排序緩存的中央處理內核,所述中央處理裝置應用上述的risc-v矢量寄存器釋放方法。16、對一個實現(xiàn)risc-v矢量擴展的risc-v?cpu內核,本技術提供的risc-v矢量寄存器釋放方法及裝置,相對于傳統(tǒng)方案,無需大幅增加每一rob項所需硬件資源,并盡快釋放矢量寄存器進frl,以提高矢量物理寄存器利用效率。本方案在原有rob基礎上,提出如下針對矢量指令的改動。17、參照后文的說明和附圖,詳細公開了本發(fā)明的特定實施方式,指明了本發(fā)明的原理可以被采用的方式。應該理解,本發(fā)明的實施方式在范圍上并不因而受到限制。針對一種實施方式描述和/或示出的特征可以以相同或類似的方式在一個或更多個其它實施方式中使用,與其它實施方式中的特征相組合,或替代其它實施方式中的特征。18、應當強調,術語“包含/包括”在本文使用時指特征、部件、步驟或組件的存在,但并不排除一個或更多個其他特征、部件、步驟或組件的存在或附加。當前第1頁12當前第1頁12