









摘 要:重排序緩存(ROB)是超標量處理器中的重要模塊,用于確保亂序執行的指令能夠正確地完成和提交。然而,在大規模超標量處理器中,存在ROB阻塞以及ROB容量有限的問題。為了解決上述問題并提高處理器性能,提出了零寄存器分配策略,通過將沒有目的寄存器的指令單獨存儲來避免占用ROB表項。同時,引入容量可動態調整的緩存結構(AROB),將長延時指令與普通指令分別存儲在ROB和AROB中,以降低長延時指令導致的阻塞。改進后的超標量處理器被命名為NA-ROB,經過SPEC 2006基準測試程序的實驗評估,結果表明,NA-ROB超標量處理器相比于傳統的ROB超標量處理器,平均IPC提升了66%,同時ROB的阻塞概率降低了48%。因此,所提出的改進方法顯著提升了處理器的整體性能和效率。
關鍵詞: RISC-V指令集; 超標量處理器; ROB; AROB; 零寄存器分配策略
中圖分類號: TP332 文獻標志碼: A 文章編號: 1001-3695(2025)02-027-0519-04
doi:10.19734/j.issn.1001-3695.2024.06.0236
NA-ROB:improvement based on RISC-V superscalar processors
Jing Chaoxia, Liu Jie’, Li Hongkui, Liu Honghai
(School of Information Engineering, Huzhou University, Huzhou Zhejiang 313000, China)
Abstract:The reorder buffer(ROB)is a critical module in superscalar processors,ensuring that instructions executed out-of-order can be correctly completed and committed.However,in large-scale superscalar processors,issues such as ROB blocking and limited ROB capacity arise.To address these issues and enhance processor performance,this paper proposed a zero-register allocation strategy,which stored instructions without destination registers separately to avoid occupying ROB entries.Additio-nally,it introduced a dynamically adjustable cache structure(AROB),storing long-latency instructions and regular instructions separately in the ROB and AROB,respectively,to reduce blocking caused by long-latency instructions.The improved superscalar processor,named NA-ROB,was evaluated using the SPEC 2006 benchmark suite.Experimental results show that the NA-ROB superscalar processor achieves a 66% average IPC improvement compared to traditional ROB superscalar processors,while reducing the probability of ROB blocking by 48%.Thus,the proposed improvements significantly enhance the overall performance and efficiency of the processor.
Key words:RISC-V instruction set; superscalar processor; ROB; AROB; zero-register allocation strategy
0 引言
在當今信息時代,追求高性能和高效率是計算機系統發展的核心目標,而超標量處理器作為一種先進的處理器架構,對提升計算機性能至關重要[1]。在傳統超標量處理器中,為了提高執行效率,通常會根據指令之間的依賴關系和可用的硬件資源來重新排序指令的執行順序,以提高處理器的并行性和性能[2]。這就可能導致指令的提交順序與指令在程序中出現的順序不同。為了確保在程序提交階段能夠按照原始順序提交,設計人員提出了重排序緩存(reorder buffer,ROB)結構,來確保程序執行結果的串行性[3]。
盡管ROB對于保持程序執行的一致性至關重要,但它也帶來了一些問題和挑戰[4]。首先,ROB的容量限制了指令的并行執行能力。當ROB的容量較小時無法容納足夠多的指令,一旦達到容量上限,就會導致指令的阻塞和延遲增加。擴大ROB的尺寸雖然可以提高指令級并行性,但也增加了ROB的訪問延遲和功耗。其次,當ROB的頭指針所指的表項被長周期執行指令占用時,后續指令無論是否完成都不能退出,造成存儲空間的浪費,同時影響其他指令獲取資源的效率[5,6]。這些問題都對超標量處理器的性能和并行處理能力造成了影響。
1 相關研究
ROB的設計和管理直接影響了處理器的性能和效率,因此近年來針對ROB的結構和管理進行了大量的改進研究。文獻[7]提出了一種解決長延遲操作阻塞ROB頭部的機制。該方案采用了驗證緩沖區(verify buffer,VB)結構,以非推測方式進行亂序提交。盡管這種方法避免了檢查點的硬件開銷,但誤推測的處理可能會引起額外的延遲和性能損失。文獻[8]通過使用加載指令的推測退役技術來實現順序一致性。放寬釋放流水線資源的條件,并且提供了更寬的指令窗口,但該架構的復雜性可能增加。文獻[9]通過自動調整ROB的長度來優化資源使用,并提出兩種方法進一步提升性能,重新設計虛擬通道(virtual channel,VC)分配策略并結合高效的TS-Router,在降低分組延遲方面取得了顯著的性能提升。文獻[10]提出了一種名為RB-OLITS的流量分割方法,旨在減少最壞情況下重排緩沖區的大小。該方法通過重新定義流量電阻,從爭用矩陣中提取流量阻塞因子,來表示流量阻塞與最壞情況重排緩沖區大小之間的關系。此方法有效增強了網絡在面對擁塞時的適應性和穩定性。
綜上所述,盡管傳統的改進方案在一定程度上解決了一些問題,但仍然存在著局限性。針對傳統超標量處理器中ROB結構存在的問題,本文提出了一種改進方案。該方案通過引入一個容量可動態調整的緩存結構——AROB,在保證指令按順序提交的同時,對指令進行分組分類存儲,避免了長延時指令導致的阻塞影響后續指令退出。并采用零寄存器分配策略,避免對沒有目的寄存器的指令進行不必要的ROB表項分配。改進后的NA-ROB超標量處理器能夠解決傳統ROB結構的限制,讓處理器性能得到更大的提升。
2 重排序緩存(ROB)的改進方法
2.1 零寄存器分配策略
在傳統的超標量處理器中,寄存器重命名技術是解決數據相關性問題的關鍵方法之一[11],它能夠在不改變程序語義的前提下,有效處理數據依賴的問題[12]。本文在設計NA-ROB超標量處理器時,采用ROB進行寄存器重命名,重命名模塊如圖1所示。在這一過程中,指令一旦寫入ROB的某個表項,該表項的編號便成為指令目的寄存器對應的物理寄存器,PRF與ARF形成映射關系,記錄在重命名映射表中(register renaming table)[13]。然而,當使用ROB進行寄存器重命名時,每條指令均需占用ROB中的一個表項,來對應一個物理寄存器。即使某些指令沒有目的寄存器,不需要進行寄存器重命名,這種情況可能導致ROB資源的不必要消耗[14]。為了減少ROB的資源浪費,本文提出了一種零寄存器分配策略,有效地管理ROB表項。
零寄存器分配策略的核心思想是:對于不需要進行寄存器重命名的指令,如無操作(NOP)指令、控制流指令(如分支跳轉)等,系統不分配ROB表項,而是直接存儲于一個特定的零寄存器區域(zero register region,ZRR)。這種分配策略與ROB結合使用,使ROB能夠專注于為需要寄存器重命名的指令提供表項。
零寄存器分配策略的執行流程如下:
a)指令發射階段。系統對每條指令的目的寄存器進行檢查,來確定是否需要進行寄存器重命名。對于需要重命名的指令,系統會分配一個ROB表項,并將其標識符與目標寄存器關聯,以便追蹤指令的執行狀態;對于不需要重命名的指令,系統則將其存儲到ZRR。
b)執行階段。對指令進行計算和操作,執行完成后,ROB會檢查指令的目的寄存器字段。如果有目的寄存器,則將結果寫回到ROB相應的表項中;如果沒有目的寄存器,處理器不會將該指令的結果寫入寄存器文件,從而節省了寫回的開銷和資源。
c)提交階段。完成執行的ROB表項將被釋放,為后續指令的分配和使用提供空間。同時,系統需要監控并處理任何異常情況,確保在發生異常時,能夠正確地回滾相關的ROB表項,以維持系統狀態的一致性[15,16]。
通過這一流程,零寄存器分配策略實現了對ROB表項的動態管理,從而提高了超標量處理器的整體性能。相比傳統的分配方式,零寄存器分配策略不需要為沒有目的寄存器的指令分配ROB表項,從而減少了對ROB表項的浪費。雖然這種分配策略需要一些額外的硬件支持,比如在指令發射階段檢查指令目的寄存器是否需要重命名的邏輯,但是這種策略的主要優勢在于減少對ROB資源的占用,從而允許更多的指令同時處于執行階段,提高處理器的整體性能。因此,即使有額外的硬件成本,這些成本可能會被提升的性能所彌補。
2.2 AROB結構設計
為了解決ROB的容量限制和長周期執行指令阻塞導致的性能下降和資源浪費問題,本文引入了一個可動態調整容量的緩存結構——AROB,其容量可動態調整的范圍為32~64條目。引入該結構后,將長周期執行指令存儲在ROB中,非長周期執行指令存儲在AROB中,通過對指令進行分類存儲,將長周期執行指令與其后的非長周期執行指令分為一組,以解決長周期指令占用ROB頭部的問題。AROB可以根據當前指令執行的情況動態調整其大小,結合零寄存器分配策略來管理指令流,確保長周期執行指令和短周期執行指令之間的平衡,并且其適用范圍廣泛,尤其適用于對性能有高要求、指令流復雜多變或需要高并行處理能力的系統和應用。
引入AROB結構后,NA-ROB超標量處理器中指令的執行控制流程為:取指階段從指令緩存中取出兩條指令;經過譯碼后的指令被同時發送到發射隊列和ROB中,并進行寄存器重命名與指令分類;在ROB或AROB中為每條指令分配一個唯一的表項,用于存儲指令的相關信息,并引入零寄存器分配策略,將沒有目的寄存器的指令存儲在ZRR,單獨分為一組,共同解決ROB容量限制的問題。
改進后ROB的結構如圖2所示。首先,將首條進入重排序緩存的指令MUL組號置1,隨后對于非長周期執行的指令,如ADD、SUB、ADD,保持組號不變。當遇到長周期執行指令MUL或者無目的寄存器的指令時,組號遞增。例如,BEQ指令作為無目的寄存器的指令,被存放在零寄存器區域(ZRR),組號遞增為2。由于BEQ指令不占用ROB空間,且無須重命名,所以不為其分配編號。對于長周期執行的STORE指令,組號進一步遞增至3,而隨后的指令OR、ADD組號不變,編號遞增,并將這些指令放入AROB中。BEQ和INT指令按照順序遞增組號,并存放于ZRR。在發射隊列中,選擇操作數已準備就緒的指令送至相應的執行單元進行計算。每條指令執行完畢后,將其complete標記設置為“1”,表示準備提交。在提交階段,根據指令所屬的組號來確定它們的提交順序,組號較小的指令應優先提交。如果遇到組號相同的指令,優先考慮提交ROB中的指令,因為它們可能更早地進入處理器的執行階段。當ROB中的長周期執行指令完成時,系統會檢查同一組內其他指令的完成狀態。如果這些指令也已完成,并且組內沒有資源沖突,那么整個組的指令可以一次性提交到寄存器文件,并更新ARF,以反映最新的寄存器狀態。盡管在執行階段指令可以亂序執行以提高效率,但在提交階段,系統會將指令的提交順序重新調整,使其與程序中的原始順序一致,從而保障程序的正確性。
2.3 超標量處理器架構設計
對ROB架構進行改進后,NA-ROB超標量處理器的流水線架構如圖3所示。采用2-ways(即每個時鐘周期從存儲器中取出兩條指令)六級流水線的結構,包括以下階段:取指(IF)、譯碼(ID)和相關性檢測(REL)、發射(IS)、執行(EX)和訪存(MEM)、寫回(WB)、提交(COM)和退休(RET)。在取指階段,處理器根據程序計數器(PC)的當前值從指令緩存(I-Cache)中同時提取兩條指令,并將它們送入譯碼階段。在RISC-V架構中,PC值的更新方式包括:指令執行后自動增加以指向下一條指令的內存地址;條件分支指令根據分支預測結果調整PC值;處理器在接收到中斷或異常時,PC值會被保存并更新為相應的處理程序地址。一旦中斷或異常處理完畢,PC值將恢復,以繼續執行程序。譯碼階段利用兩個譯碼器對取指階段傳來的指令進行譯碼,檢查指令是否需要進行寄存器重命名,識別指令類型,并將譯碼結果傳遞至發射隊列。發射階段根據譯碼信息和指令類型,將指令分配到ROB、AROB或ZRR,并選擇操作數已準備就緒的指令發送至相應的執行單元。執行階段包括兩個算術邏輯單元(ALU)、一個乘法單元、一個訪存單元、一個分支預測單元,它們分別執行不同類別的指令。執行完成后,指令的計算結果暫存于ROB。在提交階段,一旦指令成為最舊的條目,并且執行結果已寫回,便滿足提交條件。數據相關性和分支預測的準確性確認無誤后,按序退出流水線,隨后將指令的執行結果寫入寄存器文件(register file),并更新寄存器重命名表,確保寄存器的映射關系與最新的狀態保持一致[17]。
3 實驗與分析
本文使用Verilog硬件描述語言在vivado平臺上進行處理器模塊設計。設計完成后,使用RISC-V社區開源的指令集自測試程序對該處理器進行功能測試,以驗證其各個模塊是否能夠正常工作,并進一步對優化前后的處理器進行性能對比[18]。在功能驗證階段,NA-ROB超標量處理器通過了riscv-tests中全部的指令測試用例。功能驗證完成后,對改進前后的處理器進行性能對比。在本實驗中,選擇了Xilinx Artix-7開發板作為FPGA實驗平臺,選擇vivado作為EDA工具[19]。首先在vivado平臺上對所設計的處理器進行行為級仿真和邏輯綜合,將生成的比特流文件下載到FPGA開發板中,并使用vivado和modsim聯合進行了仿真測試。測試結果表明,NA-ROB符合RISC-V架構規范。圖4和5分別展示了ADD和JAL指令的仿真測試結果。
運行SPEC 2006基準測試程序(400.perlbench,401.bzip2,403.gcc,429.mcf,445.gobmk,456.hmmer,458.sjeng,462.libquantum,464.h264ref,471.omnetpp,473.astar,483.xalancbmk),統計每種基準測試程序的指令數和執行所需的周期數,計算改進后處理器的平均IPC指數,并統計ROB的阻塞概率。圖6為NA-ROB超標量處理器的平均IPC指數,而圖7則對比了NA-ROB超標量處理器和傳統的ROB超標量處理器在IPC方面提升的百分比。通過對實驗數據分析可以清楚地觀察到,NA-ROB超標量處理器平均IPC達到1.28,相比傳統的ROB超標量處理器提升了66%。這一顯著的性能提升得益于零寄存器策略的引入和ROB架構的優化。通過減少ROB阻塞概率,系統的整體吞吐量得以提高,從而實現了更高的指令級并行性。
圖8為NA-ROB超標量處理器的ROB阻塞概率,圖9則對比了NA-ROB超標量處理器和傳統的ROB超標量處理器阻塞率降低的百分比。通過對實驗數據的分析發現,NA-ROB超標量處理器的ROB阻塞率顯著降低,平均減少了48%,最高降幅達到了64%。結果表明,改進后的設計在減少ROB阻塞方面取得了顯著成效,從而提升了處理器的性能和效率。
NA-ROB超標量處理器與不同的超標量處理器在發射數、是否亂序、平均IPC指數和功耗方面進行對比,結果如表1所示[20]。NA-ROB超標量處理器在與其他超標量處理器的性能對比中表現出色,其平均IPC指數比傳統的超標量處理器提高了66%,比BOOM超標量處理器提高了2%,比Two-tier Retirement處理器提高了4%,比TB+OB+MB Retirement處理器提高了15%。盡管有些提高的幅度較小,但也代表著性能上的進步。這些數據表明NA-ROB超標量處理器在性能上實現了顯著的提升,并且能夠在較低功耗下更有效地執行指令,后續研究將重點關注功耗方面,以進一步提升處理器的綜合性能。
4 結束語
為解決超標量處理器中ROB容量有限的問題,本文提出了零寄存器分配策略,從而減少了ROB表項的浪費,并降低了寄存器文件的訪問頻率和功耗。此外,通過引入AROB緩存結構,將長延時指令與普通指令分開存儲,并結合AROB的動態容量調整特性,有效減少了ROB中指令的阻塞。經過實驗測試,NA-ROB超標量處理器在性能上表現出色,平均IPC提升了66%,ROB阻塞的概率平均降低了48%。此外,NA-ROB超標量處理器在保持低功耗的情況下,還表現出比BOOM、Two-tier Retirement以及TB+OB+MB Retirement處理器更高的性能水平。這些結果表明,NA-ROB超標量處理器不僅在性能方面取得了顯著突破,而且在功耗控制方面也取得了一定的優勢。隨著性能的提升,處理器的安全性和可靠性變得至關重要。下一步的研究將著重于在設計階段將安全性和可靠性納入考量,包括開發新的安全協議和錯誤檢測與糾正機制,以確保在提升性能的同時,能夠有效防范和應對潛在的安全威脅。
參考文獻:
[1]Wong H,Betz V,Rose J.High-performance instruction scheduling circuits for superscalar out-of-order soft processors[J].ACM Trans on Reconfigurable Technology and Systems,2018,11(1):1-22.
[2]Jin Zhaoxiang,?nder S.Dynamic memory dependence predication[C]//Proc of the 45th Annual International Symposium on Computer Architecture.Piscataway,NJ:IEEE Press,2018:235-246.
[3]Heirman W,Eyerman S,Bois K D,et al.RIO:ROB-centric in-order modeling of out-of-order processors[J].IEEE Computer Architecture Letters,2021,20(1):78-81.
[4]李昭,劉有耀,焦繼業,等.超標量處理器亂序提交機制的研究與設計[J].計算機工程,2021,47(4):180-186.(Li Zhao,Liu Youyao,Jiao Jiye,et al.Research and design of chaotic submission mechanism for superscalar processors[J].Computer Engineering,2021,47(4):180-186.)
[5]Steen S V,Eeckhout L.Modeling superscalar processor memory-level parallelism[J].IEEE Computer Architecture Letters,2018,17(1):9-12.
[6]Owahid A A,John E B.Instruction profiling based predictive throttling for power and performance[J].IEEE Trans on Computers,2023,72(12):3532-3545.
[7]Marti S P,Borras J S,Rodriguez P L.A complexity-effective out-of-order retirement microarchitecture[J].IEEE Trans on Computers,2009,58(12):1626-1639.
[8]Ubal R,Sahuquillo J,Petit S.A sequentially consistent multi-processor architecture for out-of-order retirement of instructions[J].IEEE Trans on Parallel and Distributed Systems,2012,23(8):1361-1368.
[9]Li Cunlu,Dong Dezun,Lu Zhonghai,et al.ROB-router:a reorder buffer enabled low latency network-on-chip router[J].IEEE Trans on Parallel and Distributed Systems,2018,29(9):2090-2104.
[10]Li Zhenmin,Ma Yuqing,Du Gaoming,et al.RB-OLITS:a worst case reorder buffer size reduction approach for 3D-NoC[J].IEEE Design amp; Test,2022,39(6)79-89.
[11]Spasov D.Sequential register renaming[C]//Proc of the 43rd International Convention on Information,Communication and Electronic Technology.Piscataway,NJ:IEEE Press,2020:118-122.
[12]Han Zijun,Qu Guangzhi,Liu Bo,et al.Exploit the data level paralle-lism and schedule dependent tasks on the multi-core processors[J].Information Sciences,2022(585):382-394.
[13]楊思博,黎煒桁,于敦山,等.超標量處理器中寄存器別名表恢復方法的改進研究[J].計算機應用研究,2022,39(12):3701-3705,3712.(Yang Sibo,Li Weiheng,Yu Dunshan,et al.Improvement study on recovery method of RAT in superscalar processors[J].Application Research of Computers,2022,39(12):3701-3705,3712.)
[14]Zhan Huixin,Victor S S,Lin Weiming.Reinforcement learning-based register renaming policy for simultaneous multithreading CPUs[J].Expert Systems with Applications,2021,186:article ID 115717.
[15]Kocher P,Horn J,Fogh A,et al.Spectre attacks:exploiting speculative execution[C]//Proc of IEEE Symposium on Security and Privacy.Piscataway,NJ:IEEE Press,2019:1-19.
[16]孫彩霞,鄭重,鄧全,等.DMR:兼容RISC-V架構的亂序超標量通用處理器核[J].計算機研究與發展,2021,58(6):1230-1233.(Sun Caixia,Zheng Zhong,Deng Quan,et al.DMR:a disordered superscalar general-purpose processor core compatible with RISC-V architecture[J].Computer Research and Development,2021,58(6):1230-1233.)
[17]Yu Zhiguo,Zhong Xiaoyu,Ma Xiaojie,et al.W-IQ:wither-logic based issue queue for RISC-V superscalar out-of-order processor[J].Integration,2023,94:article ID 102109.
[18]Bruns N,Herdt V,Groβe D.Toward RISC-V CSR compliance testing[J].IEEE Embedded Systems Letters,2021,13(4):202-205.
[19]Bora S,Paily R.A high-performance core micro-architecture based on RISC-V ISA for low power applications[J].IEEE Trans on Circuits and Systems Ⅱ:Express Briefs,2021,68(6):2132-2136.
[20]孫彩霞,惰兵才,王蕾,等.亂序超標量處理器核的性能分析與優化[J].國防科技大學學報,2016,38(5):14-19.(Sun Caixia,Sui Bingcai,Wang Lei,et al.Performance analysis and optimization of disordered superscalar processor cores[J].Journal of National University of Defense Technology,2016,38(5):14-19.)