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