摘 "要: 針對目前可穿戴設備上對存儲設備性能要求高、體積小、功耗低等問題,在FPGA上實現(xiàn)了一款可拓展的高性能HyperRAM控制器,并引入Cache緩存加速設計,以提高對頻繁訪問數(shù)據(jù)的命中率和優(yōu)化存儲器訪問模式,實現(xiàn)更高速的數(shù)據(jù)傳輸和優(yōu)化的系統(tǒng)性能。運用UVM驗證方法學和FPGA進行驗證,結果表明,帶有Cache緩存的HyperRAM控制器相較于普通HyperRAM,在讀寫連續(xù)地址時性能提高61%,并具有較好的可靠性與有效性,可為嵌入式系統(tǒng)提供高效、靈活的存儲器解決方案。
關鍵詞: HyperRAM控制器; Cache緩存; 可穿戴設備; 存儲器; UVM驗證方法學; FPGA
中圖分類號: TN492?34; TP333 " " " " " " " " " "文獻標識碼: A " " " " " " " " " " 文章編號: 1004?373X(2024)06?0091?06
Design and verification of HyperRAM controller with Cache acceleration
ZOU Min1, LU Aoyu1, ZOU Wanghui1, YU Hua2
(1. School of Physics amp; Electronic Science, Changsha University of Science and Technology, Changsha 410114, China;
2. Guangdong Synwit Integrated Circuit Co., Ltd., Changsha 410205, China)
Abstract: In allusion to the problems of high?performance requirements, small size and low power consumption of storage devices in wearable devices, a scalable high?performance HyperRAM controller is implemented on FPGA, and the design of Cache acceleration is introduced to improve the hit rate of frequently accessed data and optimize the memory access mode, so as to realize higher?speed data transmission and optimized system performance. By means of UVM verification methodology and FPGA verification, the results show that in comparison with ordinary HyperRAM, the performance of the HyperRAM controller with Cache cache is improved by 61% when reading and writing continuous addresses, and has good reliability and effectiveness, which can provide an efficient and flexible memory solution for embedded systems.
Keywords: HyperRAM controller; Cache cache; wearable devices; memory; UVM validation methodology; FPGA
0 "引 "言
隨著嵌入式系統(tǒng)的不斷演進,CPU與內(nèi)存之間數(shù)據(jù)交換速率要求越來越高,對存儲器接口的要求日益增加[1?2]。為滿足數(shù)據(jù)快速傳輸和處理的需求,新一代存儲器技術應運而生,其中包括了備受矚目的HyperRAM存儲器。與傳統(tǒng)存儲器技術相比,HyperRAM具有更高的讀寫速度和更低的訪問延遲,適用于對數(shù)據(jù)訪問速度要求較高的應用場景,使其成為各種嵌入式系統(tǒng)的理想選擇[3?4]。
然而,在大規(guī)模數(shù)據(jù)處理和頻繁讀寫操作的情況下,HyperRAM的原始接口可能面臨性能瓶頸。Cache緩沖作為一種常見的高速存儲器,被廣泛應用于處理器和系統(tǒng)的設計中[5],允許暫存頻繁讀取的數(shù)據(jù),從而減少對主存儲器的頻繁訪問,提高數(shù)據(jù)讀寫效率和性能。將Cache緩沖引入HyperRAM存儲器接口,有望進一步提高對頻繁訪問的數(shù)據(jù)的命中率,優(yōu)化存儲器訪問模式,從而實現(xiàn)更高速的數(shù)據(jù)傳輸和更優(yōu)化的系統(tǒng)性能[6?7]。
本文基于HyperRAM的邏輯功能,設計了一種基于AMBA總線的HyperRAM控制器,同時內(nèi)部設計了高速緩存Cache模塊,以提高讀寫速率,降低存儲器的訪問頻率。經(jīng)測試,所設計的控制器能穩(wěn)定工作在166 MHz頻率下,同時寫入數(shù)據(jù)與讀出數(shù)據(jù)能夠保持一致,數(shù)據(jù)未出現(xiàn)丟幀、誤碼現(xiàn)象,系統(tǒng)性能穩(wěn)定可靠。
1 "HyperRAM控制器的設計
圖1為本文HyperRAM控制器設計的總體框圖。HyperRAM控制器由AHB Interface模塊、APB Interface模塊、Cache模塊、HyperRAM Controller模塊以及HyperRAM Controller Interface模塊組成。其中APB總線提供寄存器配置,AHB總線提供讀寫命令以及讀寫數(shù)據(jù)。
系統(tǒng)的工作過程為:在上電后,通過AHB Interface模塊解析讀寫信號,如果Cache模塊命中,則直接從Cache模塊完成操作;如果Cache模塊未命中,則根據(jù)Cache模塊不同的情況,通過HyperRAM Controller模塊產(chǎn)生信號,經(jīng)過HyperRAM Interface模塊時,通過HyperRAM完成數(shù)據(jù)交互,再通過Cache模塊輸出。而APB總線則產(chǎn)生寄存器配置信號,使Cache模塊以及HyperRAM Controller模塊工作在不同的模式下。
1.1 "Cache設計
緩存容量越大,可以存儲越多的主存數(shù)據(jù),提高命中率,但會增加成本和訪問時間[8]。本文選取64 KB的緩存容量,既能與主存容量相匹配,又不會因為容量太大而造成成本高;設置256 bit的行大小,能夠與主存行大小相匹配,使設計簡化。同時,組相連映射相對直接映射與全相連映射具有更低的硬件成本、更少的Cache顛簸。兩路組相連映射具有設計復雜度小、速度快的特點。不良的緩存替換策略會引發(fā)多種性能問題,包括應用程序執(zhí)行時間長、內(nèi)存利用率低、頻繁替換和可能的內(nèi)存不足錯誤[9?10]。而LRU(最近最少使用)替換策略更加的合理,更適合本次設計,命中率提升更大。
因此,本文Cache設計采用兩路組相連映射緩存、帶有LRU替換策略,總容量為64 KB,Cache行大小為256 bit。Cache的設計結構如圖2所示。
當數(shù)據(jù)信號地址信息被AHB slave接收到后,與Flag Storage進行狀態(tài)的比對,同時存入Buffer等待第二周期的數(shù)據(jù),收到總線上的數(shù)據(jù)后,進入Status Judgement進行狀態(tài)判斷,如未命中則通過端口與HyperRAM通信獲取所需數(shù)據(jù),否則直接從DataRAM修改目標數(shù)據(jù)。
1.2 "HyperRAM Controller模塊的設計
HyperRAM Controller模塊主要有3個端口通信:ARB端口與Cache模塊通信,實現(xiàn)數(shù)據(jù)交互;在APB端口進行寄存器配置;HyperBus端口與存儲器通信??刂七壿嫊φw進行控制,如寄存器配置、狀態(tài)機的跳轉、計數(shù)器的配置、初始化控制等。存儲器采用CYPRESS公司旗下的S27KS0641系列HyperRAM芯片。該款芯片具有功耗低、體積小、易于集成等特點,非常適合本次設計。整體設計圖如圖3所示。
圖4為HyperRAM Controller狀態(tài)機跳轉圖,實現(xiàn)過程如下:
步驟1:PW_initial→HY_IDLE:控制器上電復位過程。在存儲器上電復位完成后,控制器會發(fā)起短暫的自啟動過程,完成特定的寄存器配置,以保證控制器的功能與存儲器一致。
步驟2:HY_IDLE→HY_W_CA→HY_W_LC→HY_
W_DATA:控制器寫數(shù)據(jù)過程。首先發(fā)送6個字節(jié)的CA命令,再根據(jù)RWDS信號的不同發(fā)起一段延遲,最后接收讀數(shù)據(jù),完成后返回HY_IDLE狀態(tài)。
步驟3:HY_IDLE→HY_R_CA→HY_R_LC→HY_
R_DATA:控制器讀數(shù)據(jù)過程。該過程與寫數(shù)據(jù)過程類似。
步驟4:HY_IDLE→HY_W_REG_CA→HY_W_REG_DATA:控制器寫寄存器過程。在接收到寫寄存器命令后,首先發(fā)送6個字節(jié)的CA命令,隨后發(fā)送配置寄存器的數(shù)據(jù),完成后返回HY_IDLE狀態(tài)。
步驟5:HY_IDLE→HY_DPD_ENTER→HY_DPD_
MODE→HY_DPD_DT→HY_DPD_EXIT:深度掉電模式(DPD模式)。收到進入深度掉電模式的操作后,控制器往存儲器中CR0[15]寫入“0”,使得存儲器進入深度掉電模式。直到收到下一次對存儲器的操作,或者復位操作,才會退出DPD模式。
2 "HyperRAM控制器的驗證
2.1 "UVM驗證平臺搭建
在Linux平臺下,搭建UVM驗證平臺框架,如圖5所示。測試平臺通過Interface發(fā)送數(shù)據(jù),Monitor監(jiān)測數(shù)據(jù)輸入與響應,與參考模型輸出的數(shù)據(jù)進行比對。待測設計(即RTL代碼,下文簡稱DUT)通過連接S27KL0641芯片的模型,以產(chǎn)生相應的波形,通過VCS編譯代碼、Verdi查看波形。
2.2 "UVM驗證及結果分析
搭建驗證平臺后,對設計進行驗證功能點分析,找到設計中需要著重關注的功能點。針對相應的驗證功能點編寫相應的UVM測試,確保設計功能的正確性與完整性。設置時鐘頻率為166 MHz,并運行相應測試,部分運行結果如圖6、圖7所示。
圖6中,在15 885 ns時鐘上升沿時總線發(fā)起寫指令,向地址1_0000寫入數(shù)據(jù)8’h44;隨后在15 891 ns時鐘上升沿時對相同地址寫入8’h55,以替換原有數(shù)據(jù)8’h44,能測試Cache替換是否正常。后15 897 ns時鐘上升沿時讀取地址1_0000的數(shù)據(jù),輸出結果為8’h55,達到預期目標。圖7中,在414 363 ns時,Cache模塊發(fā)來寫信號,而后經(jīng)過處理信號,控制器開始向存儲器發(fā)送寫數(shù)據(jù)指令;在414 417 ns時,Cache模塊發(fā)送讀指令。控制器在完成寫指令后,緊接著完成總線上的讀數(shù)據(jù)指令,并將讀取到的數(shù)據(jù)輸出給Cache。經(jīng)過分析,達到預期目標。在圖8中,不加約束進行隨機化測試,從報告中可以看出,測試環(huán)境共運行了約35 000 μs,Scoreboard共比對了29 837次,DUT輸出的結果與參考模型數(shù)據(jù)結果一致,最終結果通過。
經(jīng)過隨機測試的檢驗和定向測試的添補,整體覆蓋率如圖9所示。
圖9中,代碼覆蓋率達到了98.46%,其中行覆蓋率達到了99.44%,狀態(tài)機覆蓋率達到了97.06%,條件覆蓋率達到了98.87%。因為在讀寄存器的操作中,設計時直接從控制器返回了寄存器數(shù)據(jù),并沒有讀取存儲器的過程,所以IP的覆蓋率沒有達到100%,但控制器的設計總體達到了100%,故此驗證達到預期目標。
2.3 "FPGA驗證及分析
為了進一步驗證設計的正確性,需要進行FPGA實驗。本文中制作了一個附加的PCB板,集成了S27KS0641系列HyperRAM芯片。通過跳線的方法與FPGA開發(fā)板的I/O口連接,如圖10所示。
連接好開發(fā)板后,利用Quartus Ⅱ EDA工具進行了綜合、時序約束、生成網(wǎng)表等操作[11]。處理后的結果如圖11所示,報告表明,系統(tǒng)最高可以達到185 MHz的頻率設計要求。
在將設計下載到開發(fā)板時,需要考慮硬件對高速電路和時鐘的影響。由于硬件環(huán)境可能引入信號傳播延遲、時鐘抖動等不穩(wěn)定因素,以及PLL生成的時鐘占空比的可能波動,因此為確保穩(wěn)定的測試和評估,有必要適當?shù)亟档蜏y試頻率。設置工程的系統(tǒng)時鐘為100 MHz時,通過Quartus Ⅱ軟件中的signal tag工具,抓取信號的波形,最終測試結果如圖12所示。測試結果表明,本文設計的HyperRAM控制器具有可實現(xiàn)性,能夠穩(wěn)定運行,達到工程標準。
2.4 "性能分析
程序下載后,資源報告中顯示了有關HyperRAM控制器測試項目的主要信息,如表1所示。同為存儲器系列產(chǎn)品,DDR2 SDRAM因其具有低成本、高速、大容量等高性價比優(yōu)點,目前仍被廣泛運用在各個領域中[12?13]。本文與文獻[12?13]中DDR2 SDRAM控制器相比,運行在同樣的時鐘頻率下,卻使用了更少的邏輯門、更少的寄存器數(shù)量,更適合體積小、易于集成的嵌入式系統(tǒng)。
同時由于本文設計集成了Cache模塊,與普通的HyperRAM控制器相比,雖然在不連續(xù)的地址下,需要一次讀取一個數(shù)據(jù)(256 bit),以及增加了1個周期用于判斷命中,會比普通控制器慢;但在工程中連續(xù)的地址下,本設計提升了61%的讀寫數(shù)據(jù)所需的周期數(shù)。時序優(yōu)化分析表如表2所示。
3 "結 "語
本文設計一款帶有Cache加速模塊的HyperRAM控制器,通過Linux下的VCS平臺,完成了RTL代碼設計,并基于UVM驗證方法學搭建了驗證環(huán)境。驗證結果表明,所設計控制器通過了驗證并且覆蓋率總體達到了99%?;贏C620開發(fā)板完成了FPGA驗證,驗證結果顯示,本設計實現(xiàn)了HyperRAM接口控制功能,且在數(shù)據(jù)讀寫方面表現(xiàn)一致可靠,數(shù)據(jù)傳輸方面表現(xiàn)穩(wěn)定,具有一定的應用價值。
參考文獻
[1] MA J H, LIU H F, YANG N, et al. Circuit?level memory technologies and applications based on 2D materials [J]. Advanced materials, 2022, 34(48): e2202371.
[2] 王泉,楊天若,朱大開,等.智能嵌入式系統(tǒng)結構與軟件關鍵技術專題序言[J].西安電子科技大學學報,2021,48(6):1?7.
[3] LUZA L M, S?DERSTR?M D, PUCHNER H, et al. Neutron?induced effects on a self?refresh DRAM [J]. Microelectronics reliability, 2022, 128: 114406.
[4] VALENTE L, TORTORELLA Y, SINIGAGLIA M, et al. HULK?V: a heterogeneous ultra?low?power linux capable RISC?V SoC [C]// Automation amp; Test in Europe Conference amp; Exhibition (DATE). Antwerp, Belgium: IEEE, 2023: 1?6.
[5] 吳修權,鐘其柱,羅耀滿.Cache在移動互聯(lián)網(wǎng)的應用與分析[J].電信工程技術與標準化,2018,31(3):88?92.
[6] LEE J Y, SONG Y, EOM Y I. DCA: a dual?layer cache architecture for providing high lookup performance in KV stores [C]// International Conference on Big Data and Smart Computing. Jeju, Korea: IEEE, 2023: 285?286.
[7] MOSQUERA F, KAVI K, MEHTA G, et al. Guard cache: creating noisy side?channels [J]. IEEE computer architecture letters, 2023, 22(2): 97?100.
[8] 程志煒,陳財森,朱連軍,等.基于Pearson相關系數(shù)的Cache計時模板攻擊方法[J].計算機工程,2019,45(7):159?163.
[9] JING H Y, JUAN F, MIN C, et al. A prefetch?adaptive intelligent cache replacement policy based on machine learning [J]. Journal of computer science and technology, 2023, 38(2): 391?404.
[10] LI H, JI S, ZHONG H, et al. LPW: an efficient data?aware cache replacement strategy for apache spark [J]. Science China (information sciences), 2023, 66(1): 77?96.
[11] GAO J, GAO Y. Research the SDRAM controller based on FPGA [J]. Journal of physics: conference series, 2022(1): 10241.
[12] 錢素琴,劉晶華.基于FPGA的DDR2 SDRAM控制器設計[J].電子測試,2021(11):9?12.
[13] 韓笑,閆永立,李勇彬,等.基于FPGA的DDR2_SDRAM控制器用戶接口設計[J].電子設計工程,2021,29(1):168?171.