于哲 周舜民 陳方
摘 要:針對傳統(tǒng)SATA控制器存儲系統(tǒng)性能受限、安全性不足問題,提出并設計了一款可實現(xiàn)PCIe(peripheral component interconnect express)與SATA(serial advanced technology attachment)協(xié)議傳輸數(shù)據(jù)互轉(zhuǎn),基于SM4算法實現(xiàn)本地數(shù)據(jù)安全存儲的高速安全存儲SoC(system of chip)芯片。通過構(gòu)建合理的片內(nèi)PCIe與SATA互轉(zhuǎn)數(shù)據(jù)傳輸通路,利用PCIe VIP(verification intellectual property)及UVM(universal verification methodology)技術(shù)搭建系統(tǒng)應用級仿真驗證平臺,設計基于SystemVerilog語言的源激勵用例和C固件,利用腳本自動化控制實現(xiàn)仿真驗證。仿真結(jié)果表明,該SoC芯片通路上各設備鏈路建立正確,實現(xiàn)PCIe與SATA互轉(zhuǎn)通路數(shù)據(jù)正確傳輸,測試帶寬472 MBps,基于SM4算法的本地安全存儲加解密無誤,SM4算法加解密帶寬1.33 Gbps。根據(jù)仿真實驗結(jié)果可知,該PCIe與SATA橋接轉(zhuǎn)換SoC芯片架構(gòu)設計是可行的,實現(xiàn)了本地數(shù)據(jù)的安全存儲,為進一步進行數(shù)據(jù)高速轉(zhuǎn)換訪問、安全傳輸存儲研究奠定了重要基礎。
關(guān)鍵詞:PCIe與SATA互轉(zhuǎn);PCIe VIP ;UVM;C固件
中圖分類號:TP336?? 文獻標志碼:A??? 文章編號:1001-3695(2024)05-030-1496-06
doi: 10.19734/j.issn.1001-3695.2023.09.0445
Research on PCIe and SATA path verification based on high speed secure storage SoC
Abstract:This paper proposed a high-speed secure storage SoC (system of chip) chip to address the issues of limited performance and insufficient security in traditional SATA controller storage systems, which could achieve the protocol data exchange between PCIe and SATA, implement local data secure storage based on the SM4 algorithm. By constructing a reasonable data transmission path between on-chip PCIe and SATA, utilizing PCIe VIP and UVM to build a system application-level simulation verification platform, it designed SystemVerilog language testcases and C code firmware, and controlled verification automation ran with scripts. The results show that on-chip devices IP establish links and channel data transmission correctly with bandwidth of 472 MBps between PCIe and SATA, SM4 algorithm implement local storage data encryption and decryption correctly, bandwidth up to 1.33 Gbps. According to the experimental results, it can be concluded that the SoC chip architecture design for PCIe and SATA bridging conversion is feasible, achieving secure storage of local data, and laying an important foundation for further research on high-speed data conversion access and secure transmission storage.
Key words:PCIe and SATA mutual conversion; PCIe VIP; UVM; C firmware
0 引言
傳統(tǒng)SATA(serial advanced technology attachment)[1]接口協(xié)議技術(shù)曾廣泛應用于各種高速存儲傳輸設備,在當今數(shù)據(jù)呈幾何式爆發(fā)增長的時代,SATA接口因其最高只能達到6 Gbps[1]的速率限制,已難以滿足當前高速數(shù)據(jù)存儲傳輸需求。采用高速串行全雙工點對點通信架構(gòu)模式的PCIe接口協(xié)議技術(shù),憑借其出色的傳輸速率、強大的兼容擴展能力[2~5],在計算通信、服務器、存儲設備等眾多應用領域逐漸成為主流,成為新一代高速設備必備功能接口[4~6]。SATA因其開發(fā)相對簡單、成本低,在低端單一盤數(shù)據(jù)傳輸存儲領域仍占據(jù)較大份額,具有較大的應用價值。在大容量服務器存儲領域,連接服務器主機實現(xiàn)RAID(redundant array of independent disks)磁盤存儲陣列擴展連接的接口主要還是SATA接口。同時,在航天航空、通信系統(tǒng)、大數(shù)據(jù)服務器集群等對芯片穩(wěn)定性和安全性要求高的應用場景[5],都部署有成熟的SATA應用,難以在短期內(nèi)實現(xiàn)PCIe的全面替換,SATA與PCIe將在較長一段時間內(nèi)共存。當前市場上常見的PCIe與SATA互轉(zhuǎn)存儲芯片主要為國外芯片,價格較高,安全性難以保證[5,8]。因此,研究實現(xiàn)兩種不同接口協(xié)議設備間數(shù)據(jù)高速交互傳輸具有重要意義。
當前,有關(guān)PCIe與SATA協(xié)議數(shù)據(jù)傳輸高速互轉(zhuǎn)研究主要集中于存儲領域主機與存儲系統(tǒng)接口互轉(zhuǎn)功能實現(xiàn)、大型RAID磁盤陣列或多通道存儲陣列系統(tǒng)構(gòu)建以及相關(guān)的帶寬、性能優(yōu)化研究。有關(guān)PCIe與SATA協(xié)議數(shù)據(jù)互轉(zhuǎn)典型研究有:文獻[5]研究設計了一種基于片內(nèi)總線控制交互的4路PCIe控制器轉(zhuǎn)4路SATA AHCI控制實現(xiàn)數(shù)據(jù)轉(zhuǎn)換傳輸電路,并在FPGA上進行測實驗證;文獻[6]指出傳統(tǒng)CPU處理SATA固態(tài)硬盤讀寫存在內(nèi)存帶寬、實時數(shù)據(jù)等性能限制,提出并設計采用FPGA作為邏輯控制中心進行SATA固態(tài)盤的RAID0存儲陣列系統(tǒng)設計,F(xiàn)PGA邏輯系統(tǒng)中優(yōu)化設計的內(nèi)存管理模塊及RAID0陣列模塊是實現(xiàn)高速PCIe到SATA轉(zhuǎn)換的關(guān)鍵,系統(tǒng)實現(xiàn)了穩(wěn)定的高帶寬數(shù)據(jù)存儲;文獻[7]研究了一套基于VPX總線架構(gòu)為底板的數(shù)據(jù)交互存儲系統(tǒng),存儲子板與主機數(shù)據(jù)交換以VPX總線架構(gòu)底板上的SRIO總線作為通信總線媒介,實現(xiàn)了一種存儲陣列獨立可控的數(shù)據(jù)交互存儲系統(tǒng);文獻[8]研究設計了一款基于RISC_V處理器的HBA橋轉(zhuǎn)接控制器芯片,旨在填補HBA橋接芯片國產(chǎn)化空白,支持8路PCIe 3.0和8路SATA傳輸接口,可實現(xiàn)兩者獨立或構(gòu)建通道進行數(shù)據(jù)存儲交互。上述研究雖然以單板、單芯片方式直接或多板卡間接通信實現(xiàn)了PCIe與SATA協(xié)議數(shù)據(jù)轉(zhuǎn)換功能,但并未關(guān)注數(shù)據(jù)本地存儲安全方面內(nèi)容。本文提出的高速安全存儲SoC芯片可實現(xiàn)類似HBA橋控芯片的主機內(nèi)存與存儲系統(tǒng)數(shù)據(jù)交互,也可用作SATA固態(tài)盤的主控,同時通過硬件實現(xiàn)本地數(shù)據(jù)安全存儲。
本文自研的高速安全存儲SoC芯片是一款可以滿足多種存儲介質(zhì)數(shù)據(jù)安全傳輸和訪問控制需求的自主可控存儲安全加固SoC芯片,集成了PCIe 2.0和SATA 3.0版本等高速傳輸接口模塊,在設計的C固件驅(qū)動下,可實現(xiàn)PCIe和SATA協(xié)議接口互轉(zhuǎn)訪問功能,文中基于PCIe VIP和UVM技術(shù)對此進行系統(tǒng)層面的仿真驗證[9~14]。
1 芯片及驗證數(shù)據(jù)通路設計
1.1 芯片架構(gòu)
圖1為設計集成有PCIe、SATA等高速外設接口的高速安全存儲SoC芯片主要模塊體系架構(gòu)示意圖。芯片以ASIC(application specific integrated circuit)設計為思想核心,以32位多層AMBA(advanced microcontroller bus architecture)總線矩陣作為系統(tǒng)架構(gòu)總樞紐,采用具有國產(chǎn)自主知識產(chǎn)權(quán)的32位龍芯LS232嵌入式CPU,支持硬件實現(xiàn)商密SM4存儲數(shù)據(jù)流加解密算法,算法可編程配置密鑰,集成硬件實現(xiàn)網(wǎng)絡MAC、網(wǎng)絡協(xié)議棧解析等功能單元,外部安全檢測部件包括電壓、溫度和光檢測等常規(guī)通用傳感器功能支持,具備豐富的(如UART、SPI、IIC等)低速接口,并包含DMA控制、中斷、時鐘、復位等系統(tǒng)控制必備模塊。
1.2 驗證數(shù)據(jù)通路設計
PCIe功能復雜,可應用于多種不同場景,每種應用場景下需要進行特定的需求配置,在高速存儲SoC芯片中主要配置實現(xiàn)應用PCIe最核心的高速數(shù)據(jù)傳輸功能。設計高速存儲SoC芯片PCIe EP(end point)、SATA host及SATA device三者構(gòu)成片內(nèi)高速數(shù)據(jù)傳輸通路。
1.2.1 數(shù)據(jù)通路傳輸理論基礎
PCIe與SATA協(xié)議實現(xiàn)采用類似TCP/IP的分層結(jié)構(gòu)設計,且兩者核心都包含傳輸層、數(shù)據(jù)鏈路層及物理層,兩者物理層都使用差分對信號進行物理電氣層數(shù)據(jù)傳輸[1~5,11~14]。在設備進行穩(wěn)定的數(shù)據(jù)傳輸之前,PCIe和SATA都必須確保鏈路已建立且運行穩(wěn)定,SATA設備間通過OOB(out of band)序列交互方式進行穩(wěn)定鏈路建立,PCIe由物理層基于LTSSM(link training and status state machine)狀態(tài)機自動完成鏈路初始化與訓練實現(xiàn)穩(wěn)定鏈路建立。對于協(xié)議數(shù)據(jù)信息、控制交互信息的邏輯傳輸,兩者都采用定義封裝成幀的方式進行傳輸,圖2和3分別為PCIe和SATA的幀格式。對于PCIe協(xié)議,信息由傳輸層形成TLP(transaction layer packet)包傳輸?shù)轿锢韺咏?jīng)過的每一層。都會對幀添加相應的頭或尾標識符,其中framing指在物理層添加的對應數(shù)據(jù)幀格式start和end標識符;在接收端則每層依次進行相應層的頭尾封裝剝離。對于SATA而言,傳輸層形成FIS(frame information structure)幀,經(jīng)由數(shù)據(jù)鏈路層添加幀頭和幀尾標識符生成在物理層傳輸?shù)姆庋b幀,物理層不再封裝成幀。由于SATA的內(nèi)部buffer空間只有7個雙字大小,在數(shù)據(jù)傳輸過程中會引入HOLDp和HOLDAp源語實現(xiàn)數(shù)據(jù)流控機制,在大數(shù)據(jù)量傳輸過程中頻繁的流控操作將消耗大量時間,這也限制了SATA速率進一步大幅提高的可能性,PCIe則不存在該問題。
1.2.2 待驗數(shù)據(jù)通路設計
高速存儲SoC中可通過PCIe EP與SATA host/device兩者或三者之間組合構(gòu)成多種片內(nèi)高速數(shù)據(jù)傳輸通路。為了最大限度地測試SoC對片內(nèi)各高速接口數(shù)據(jù)傳輸控制是否正確實現(xiàn)合理調(diào)度及各模塊通路功能,本文將片上SATA host和SATA device模塊進行PHY引腳互連,構(gòu)成片上SATA loop回路,PCIe EP通過PHY與PCIe VIP互連,片內(nèi)兩個DPRAM模塊作為數(shù)據(jù)緩存橋梁,整體上構(gòu)成一個主要由PCIe與SATA host及SATA device共同作用的數(shù)據(jù)通路。
預期設計中,假定正向數(shù)據(jù)傳輸由PCIe RC(root complex)端發(fā)起,通過PCIe鏈路將數(shù)據(jù)發(fā)送到片上PCIe端,片上PCIe通過內(nèi)置DMA將接收到的數(shù)據(jù)發(fā)送到DPRAM0,SATA host從DPRAM0讀取數(shù)據(jù),通過SATA loop回路發(fā)送到片上SATA device端,SATA device將接收到的數(shù)據(jù)寫入DPRAM1進行存儲;反向數(shù)據(jù)傳輸通路則由SATA device從DPRAM1讀出數(shù)據(jù)發(fā)起,數(shù)據(jù)依次經(jīng)由SATA host到DPRAM0到PCIe EP再到PCIe RC端。通路中PCIe RC功能由PCIe VIP替代實現(xiàn),整個數(shù)據(jù)通路的功能由燒錄到SoC芯片中相關(guān)C固件驅(qū)動代碼調(diào)度控制實現(xiàn)。待驗通路結(jié)構(gòu)如圖4所示。
2 驗證平臺
2.1 驗證平臺設計及運行
驗證平臺設計分為兩部分,包含構(gòu)建驗證DUT(design under test)數(shù)據(jù)通路的SoC芯片和基于UVM的ENV驗證環(huán)境。SoC芯片部分由待驗DUT通路和C代碼組成,C代碼實現(xiàn)芯片的固
件驅(qū)動,控制芯片相關(guān)設計功能實現(xiàn)。C代碼固件設計是整個平臺通路運行測試設計關(guān)鍵之一,將在3.3節(jié)進行詳細設計說明。驗證平臺部分,interface定義了ENV所需的PCIe接口相關(guān)信號,ENV例化整個仿真環(huán)境所需的組件,包括PCIe VIP、LTSSM monitor、scoreboard及agent等組件[9~14]。PCIe VIP用作仿真的RC端BFM(bus functional model)模型,其中testcase作用于VIP的API以控制平臺的激勵源產(chǎn)生,LTSSM monitor組件用于對PCIe鏈接建立過程LTSSM狀態(tài)跳變的監(jiān)測,scoreboard用作結(jié)果比較,agent組件中例化兩個monitor分別用作PCIe EP端RX和TX方向的接口信息監(jiān)測收集,并送入scoreboard進行對比。monitor組件實現(xiàn)PCIe接口TLP傳輸協(xié)議時序邏輯功能。圖5為驗證平臺架構(gòu)示意圖。
驗證平臺運行分為基于SoC的C固件運行和UVM機制控制的仿真環(huán)境運行兩部分,makefile腳本組織實現(xiàn)平臺運行管理。平臺運行中,C固件代碼源文件與定義的頭文件、啟動文件及編譯鏈接腳本文件等文件一起進行編譯鏈接生成hex文件,hex文件加載到flash暫存,待加載到內(nèi)存后,CPU從內(nèi)存中讀取操作指令運行。ENV環(huán)境按照UVM的執(zhí)行流程運行,依次執(zhí)行build、connect、configure、main、shutdown及report等階段phase,進行UVM平臺組件的創(chuàng)建、連接、參數(shù)配置、主體運行及結(jié)果報告等UVM樹結(jié)構(gòu)創(chuàng)建及平臺運行流程管理[9~14]。在build_phase階段將同時完成PCIe VIP的實例化及相關(guān)全局變量和隨機值的初始化設置。
2.2 PCIe VIP應用架構(gòu)分析
圖6為驗證平臺中PCIe VIP的架構(gòu)示意圖,其主體包括API應用模塊和PCIe SVC VIP兩部分,其中PCIe SVC VIP為synopsys提供一個加密PCIe BFM總線功能模型實例,可配置實現(xiàn)PCIe RC端功能。API應用模塊作為實現(xiàn)VIP功能的主機端應用模塊,主要由link_ctrl類、pcie_cdm類、pcie_tlp_xactn類、pcie_device_rules類及pcie_device_cb類五大應用實現(xiàn)類組成,實現(xiàn)鏈路建立控制、接收測試用例配置和激勵源控制生成等功能。
在仿真初始化鏈路訓練階段,VIP通過link_ctrl類的應用與DUT中的PCIe EP建立穩(wěn)定鏈路;當需要通過VIP對DUT中相關(guān)配置空間寄存器和內(nèi)存進行訪問操作時,VIP實例化調(diào)用實現(xiàn)pcie_cdm類功能,通過類中定義的相關(guān)功能函數(shù)構(gòu)建配置和內(nèi)存訪問激勵;API中pcie_tlp_xactn類主要用于VIP與DUT中PCIe EP交互的TLP包發(fā)送或接收的交互,以及對DUT訪問請求作出相應的響應;VIP根據(jù)pcie_device_rules類中定義實現(xiàn)的過濾規(guī)則對接收和發(fā)送的包進行仲裁判斷;通過創(chuàng)建例化pcie_device_cb類定義的各種API虛擬回調(diào)函數(shù),VIP可實現(xiàn)對應函數(shù)功能的訪問或測試。
3 驗證實現(xiàn)
3.1 測試點說明
本文以滿足系統(tǒng)應用需求為核心出發(fā)點,重點關(guān)注片上系統(tǒng)高速傳輸模塊不同應用組合方式的通路數(shù)據(jù)傳輸,以及SoC芯片中數(shù)據(jù)流安全存儲加解密功能正確實現(xiàn)與否。用例處理根據(jù)PCIe VIP發(fā)送數(shù)據(jù)的方式分為非鏈式和鏈式DMA傳輸兩種,同時考慮與SATA的DMA、PIO、NCQ的不同數(shù)據(jù)傳輸方式組合及SM1、SM4加解密功能實現(xiàn)。表1列出SoC系統(tǒng)軟件層面C固件測試用例,exp和act分別為預期和實際運行的測試結(jié)果。
3.2 激勵用例實現(xiàn)
驗證平臺中RC模式的PCIe VIP激勵源由testcase控制生成,激勵用例擴展于BaseTest,BaseTest擴展自uvm_test,在build_phase和configure_phase階段完成相關(guān)用例名的注冊、組件連接和控制變量配置,在用例的main_phase主體中完成用例的功能實現(xiàn)[9~14],主體功能實現(xiàn)中調(diào)用的函數(shù)在VIP應用中以帶參形式提供,產(chǎn)生輸出的激勵序列通過PCIe PHY鏈路注入SoC芯片進行流通傳輸。
在激勵源用例中,main_phase是控制激勵產(chǎn)生的核心,設計功能控制流程類似,對于PCIe VIP而言,仿真中修改配置相應應用模式和參數(shù)即可。其功能實現(xiàn)主要包括:a)調(diào)用find_trgt1_address函數(shù)分別配置PCIe VIP發(fā)送端的DMA內(nèi)存起止地址和DUT中接收數(shù)據(jù)存放的起始地址;b)調(diào)用creat_context函數(shù)進行DMA操作必需的讀寫類型、傳輸字節(jié)大小、起始及結(jié)束地址等參數(shù)配置;c)完成DMA傳輸配置后,調(diào)用set_rie_done_addr和set_rie_data函數(shù)設置RC端DMA操作傳輸完成處的中斷標志;d)在完成DMA傳輸相關(guān)控制參數(shù)和中斷配置后,調(diào)用hit_doorbell函數(shù)配置選擇DMA數(shù)據(jù)傳輸?shù)耐ǖ啦訑?shù)據(jù)傳輸;e)通過wait_all_xactions_done函數(shù)檢測判斷本次DMA數(shù)據(jù)傳輸?shù)慕Y(jié)束或等待超時。圖7為激勵源main_phase數(shù)據(jù)傳輸處理控制流程。
3.3 通路C固件實現(xiàn)
通路C固件主要對PCIe EP、SATA host及SATA device三種設備初始化、功能實現(xiàn)及系統(tǒng)調(diào)度流程控制等功能進行驅(qū)動實現(xiàn),其實現(xiàn)流程主體架構(gòu)可分為設備初始化、PCIe EP功能實現(xiàn)、SATA host功能實現(xiàn)、SATA device功能實現(xiàn)四部分。
平臺中通路C固件代碼主體可分成設備初始化和設備功能控制實現(xiàn)兩部分。在設備初始化階段,PCIe初始化主要完成設備capbility遍歷確定,設備工作模式、內(nèi)存地址分配及DMA初始化配置等工作;SATA初始化主要完成PRD、PRD命令list、各種命令FIS等結(jié)構(gòu)體內(nèi)存地址分配,進行全局復位控制,配置SATA host和device進入鏈路建立交互階段等。PCIe功能主要通過nonll_dma_config、dma_doorbell、dma_com等函數(shù)實現(xiàn),其中nonll_dma_config函數(shù)對PCIe內(nèi)部DMA的操作類型、傳輸字節(jié)大小、起止地址等相關(guān)寄存器進行配置,dma_doorbell和dma_com則實現(xiàn)DMA的使能、通道控制及觸發(fā)控制功能。SATA host在完成鏈路建立后首先執(zhí)行中斷和錯誤寄存器復位操作,SATA device在鏈路建立完成后,將發(fā)送signature FIS幀告知host已準備好并復位端口中斷和錯誤寄存器,host在檢測到device已準備好后,復位對應port的中斷和錯誤寄存器;其后device進入檢測觸發(fā)狀態(tài),等待接收host端發(fā)送的命令幀,host端執(zhí)行命令FIS結(jié)構(gòu)體,包括PRD list長度、讀取數(shù)據(jù)的起始地址、數(shù)據(jù)長度、配置命令的類型等各個字段域值的配置,并獲取數(shù)據(jù)組織命令幀發(fā)送給device。device收到host發(fā)送的命令幀后,首先解析幀中命令域的值,根據(jù)命令類型進行相應的讀或?qū)懖僮?,device根據(jù)解析出的命令類型組織構(gòu)建PRD結(jié)構(gòu)體的數(shù)據(jù)存放或讀取地址、實體長度、數(shù)據(jù)長度等字段域值,通過FPDMA發(fā)送或接收DATA FIS,完成所有DATA FIS數(shù)據(jù)接收后,device發(fā)送D2H(device to host)FIS告知host此次傳輸操作結(jié)果,host獲取D2H中的狀態(tài)信息,清除端口的命令事件、命令及中斷等寄存器值,固件主體功能至此結(jié)束。圖8為C固件主體設計流程。對于安全存儲SoC芯片內(nèi)嵌SM4商密存儲數(shù)據(jù)流加解密安全算法的實現(xiàn),通過配置寄存器選擇加解密模式、當前模式下的密鑰值、使能加解密功能即可。
4 仿真結(jié)果分析
平臺由makefile腳本管理運行并生成各log信息、波形等結(jié)果文件。仿真過程中VIP生成pcie_bfm_symbol.log、vtb_vip_trans.log等log文件,pcie_bfm_symbol.log主要記錄鏈路建立過程中LSSTM的跳變過程,vtb_vip_trans.log記錄仿真過程中VIP發(fā)送的相關(guān)配置或數(shù)據(jù)TLP包信息,這些log文件信息與波形結(jié)果形成印證。
4.1 高速接口鏈路建立分析
對于具有高速接口的復雜SoC芯片,實現(xiàn)boot啟動加載正確的驅(qū)動代碼讓CPU能夠正常工作是系統(tǒng)的基礎,各種高速接口鏈路上電是否建立正確鏈接,是其應用價值實現(xiàn)的重要基礎。圖9中數(shù)字1~6標識了PCIe鏈路建立重要節(jié)點的變化。標識1信號由低拉高表示PCIe PHY link up;標識2處為LTSSM鏈路訓練狀態(tài)值,左側(cè)信號值跳變顯示c→11,說明鏈路進入L0狀態(tài)可以正常工作,但觀察mac_phy_pclk_rate為1,說明此時是GEN1速率鏈路建立成功,LTSSM繼續(xù)進入reco-very狀態(tài)進行GEN2速率鏈路建立;標識3處表明此刻鏈路速率進行了GEN1到GEN2模式的切換,在圖10 pcie_bfm_symbol.log方框中的信息也得到印證;標識4處對core_clk信號局部放大,可以看到頻率改變了,直到標識5處LTSSM狀態(tài)再次跳變?yōu)?1,標志GEN2速率鏈路建立進路L0狀態(tài)可以正常工作;但直到標識6處信號由低拉高才真正表示PCIe設備間鏈路建立完成,可以準備信息傳輸。
圖11為SATA OOB鏈路建立結(jié)果,字符串為對應時間段收發(fā)交互序列類型。host端發(fā)送COMRESET序列,device接收到COMRESET序列后發(fā)送COMINIT序列信號響應,host收到device的響應序列進行calibrate并發(fā)送COMWAKE序列,device收到COMWAKE序列后進入calibrate并響應發(fā)送COMWAKE序列給host端,之后雙方通過收發(fā)相同速率的ALIGN對齊源語進行速率協(xié)商,直到host收到對齊源語后為連續(xù)三個的非對齊ALIGN信號,表示鏈路建立完成,可開始正常數(shù)據(jù)傳輸。
4.2 通路數(shù)據(jù)傳輸分析
圖12中,數(shù)字1~12分別標識了DMA方式VIP端發(fā)送的數(shù)據(jù)被PCIe EP接收后倒傳回VIP的一個完整通路數(shù)據(jù)傳輸過程,此處傳輸數(shù)據(jù)大小為512 Byte。PCIe EP端接收VIP發(fā)送的數(shù)據(jù)并寫入DPRAM0中,SATA host從DPRAM0讀取數(shù)據(jù),以應用命令的方式將數(shù)據(jù)發(fā)送給SATA device,SATA device將接收到的數(shù)據(jù)寫入DPRAM1中,至此驗證了PCIe EP接收數(shù)據(jù)PCIe EP(RX)→DPRAM0→SATA host→SATA device→DPRAM1部分通路傳輸?shù)恼_可行性;SATA device在接收到host端發(fā)送的讀命令幀后,將數(shù)據(jù)從DPRAM1讀出,依次經(jīng)由DPRAM1→SATA device→SATA host→DPRAM0→PCIe EP(TX)等模塊構(gòu)成的通路路徑傳輸,驗證了PCIe EP獲取片內(nèi)組織數(shù)據(jù)發(fā)送的正確可行性。圖13中的數(shù)據(jù)為通路上數(shù)據(jù)局部放大展示。圖14 vtb_vip_trans.log中展示了VIP發(fā)送的局部源數(shù)據(jù)。
4.3 數(shù)據(jù)安全加解密分析
圖15為使能SM4進行數(shù)據(jù)流加解密存儲仿真結(jié)果。其中keyen信號指示key值有效使能,sk信號為可編程修改的128位key值,mode為1/0,分別表示加密/解密,crypt_en信號為高有效期間實現(xiàn)數(shù)據(jù)的加解密處理,data_i和data_o分別為原文或加密后密文。圖16、17為對數(shù)據(jù)流加密、解密操作局部數(shù)據(jù)顯示。其中加密部分顯示的5組完整密文結(jié)果對應原文數(shù)據(jù)為十六進制數(shù)0x8~0xc,解密部分對應的5組密文對應解密后的結(jié)果為十六進制數(shù)0xc~0x10。
4.4 性能分析
高性能安全存儲SoC芯片CPU工作主頻300 MHz,集成的PCIe 2.0理論帶寬可達500 MBps,SATA 3.0 理論帶寬可達750 MBps,理論上構(gòu)成的通路帶寬應該幾近于500 MBps。在仿真測試中,系統(tǒng)主頻最高可達327 MHz,整個通路帶寬主要受PCIe端影響,最大帶寬為472 MBps,SM4加解密帶寬1.33 Gbps。通路帶寬與其理論值存在一定的差距,主要原因有兩個:a)PCIe、SATA兩者編碼都存在一定帶寬開銷;b)PCIe發(fā)往片內(nèi)DPRAM時,需要對DMA TLP包進行片上總線格式包轉(zhuǎn)換,需要消耗一定時間。
5 結(jié)束語
以PCIe和SATA為高速接口的多種存儲介質(zhì)在一段時間內(nèi)呈共存狀態(tài),有必要解決主流PCIe技術(shù)與傳統(tǒng)SATA技術(shù)介質(zhì)訪問的兼容和互補問題。本文對設計可實現(xiàn)多種存儲介質(zhì)高速接口獨立或轉(zhuǎn)換兼容訪問的高速存儲SoC芯片,通過構(gòu)建合理的數(shù)據(jù)傳輸通路,結(jié)合PCIe VIP及UVM技術(shù)搭建整體SoC系統(tǒng)層面應用級的仿真驗證平臺,設計基于SystemVerilog語言作用于VIP的源激勵用例,通過對PCIe和SATA協(xié)議應用的分析理解,設計編寫作用于SoC芯片中數(shù)據(jù)通路傳輸控制實現(xiàn)的C固件代碼,在腳本的自動化控制運行下實現(xiàn)仿真驗證,并生成log信息文件和波形文件。結(jié)合log文件和波形文件的分析,證明了該SoC系統(tǒng)芯片集成的各高速接口可以正確實現(xiàn)與對端設備的鏈路建立,并在CPU作用下根據(jù)設計的C固件代碼,使片上模塊間構(gòu)成的數(shù)據(jù)通路按預期進行數(shù)據(jù)傳輸,驗證了該SoC芯片設計在PCIe和SATA多種混合高速接口控制系統(tǒng)架構(gòu)中兼容轉(zhuǎn)換訪問的可行性,通路仿真帶寬472 MBps優(yōu)于文獻[5,6]的單路帶寬,在最終的實際成品中會存在一定的損耗;SM4加解密帶寬1.33 Gbps略優(yōu)于文獻[15]的1.27 Gbps。
本文研究為后期高版本協(xié)議PCIe快速集成應用和通路數(shù)據(jù)加解密安全存儲研究奠定了重要基礎,是后期調(diào)試優(yōu)化的重要參考,本文的設計驗證研究對于實際應用及數(shù)據(jù)認證、安全傳輸存儲研究都具有重要意義。
參考文獻:
[1]SATA-IO. Serial ATA revision 3.5a[S/OL].(2021)[2023-11-23]. https://sata-io.org/system/files/specifications/Serial%20ATA%20 Revision%203.5a.pdf.
[2]甄國涌,蘇慧思,陳建軍,等. 基于FPGA的PCIe接口的數(shù)據(jù)傳輸設計與實現(xiàn) [J]. 國外電子測量技術(shù),2021,40(12): 72-76. (Zhen Guoyong,Su Huisi,Chen Jianjun,et al. Design and implementation of data transmission based on FPGA PCIe interface [J]. Fo-reign Electronic Measurement Technology,2021,40(12): 72-76.)
[3]林楷智,宗艷艷,孫瓏玲. AI服務器PCIe拓撲應用研究 [J]. 計算機工程與科學,2023,44(3): 390-395. (Lin Kaizhi,Zong Yanyan,Sun Longling. Research on PCIe topology application of AI serves [J]. Computer Engineering & Science,2023,44(3): 390-395.)
[4]杜侃,夏川,侯彬. 基于覆蓋率的PCIe控制器的UVM驗證 [J]. 中國集成電路,2022,31(9): 36-42. (Du Kan,Xia Chuan,Hou Bin. UVM verification of PCIe based on functional coverage [J]. China Integrated Circuit,2022,31(9): 36-42.)
[5]王琪,張梅娟,鄧佳偉,等. 基于PCIE轉(zhuǎn)SATA多通道高速存儲電路設計與原型驗證 [J]. 電子技術(shù)應用,2023,49(3): 72-76. (Wang Qi,Zhang Meijuan,Deng Jiawei,et al. Design and prototype verification of multi-channel high-speed storage circuit base on PCIE to SATA [J]. Application of Electronic Technique,2023,49(3): 72-76.)
[6]林建華,吳緒玲. 基于FPGA存儲陣列的優(yōu)化設計與實現(xiàn) [J]. 電子技術(shù)應用,2023,49(4): 111-116. (Lin Jianhua,Wu Xuling. Optimized design and realization of storage array based on FPGA [J]. Application of Electronic Technique,2023,49(4): 111-116.)
[7]劉拓. 基于FPGA的高速存儲器數(shù)據(jù)傳輸接口設計與實現(xiàn) [D]. 西安: 西安電子科技大學,2021. (Liu Tuo. Design and implementation of high-speed memory data transmission interface based on FPGA [D]. Xian: Xidian University,2021.)
[8]姚珅. 基于PCIE接口的HBA控制器實現(xiàn) [D]. 杭州: 杭州電子科技大學,2021. (Yao Shen. Implementation of HBA controller based on PCIE interface [D]. Hangzhou: Hangzhou Dianzi University,2021.)
[9]趙賽,閆華,叢紅艷,等. 基于UVM的PCI Express 總線控制器驗證平臺 [J]. 電子與封裝,2022,22(2): 84-88. (Zhao Sai,Yan Hua,Cong Hongyan,et al. UVM-based verification platform for PCI Express bus controller [J]. Electronics & Packaging,2022,22(2): 84-88.)
[10]隋金雪,張霞,郁添林. 基于UVM的AXI4總線自驗證平臺設計 [J]. 計算機仿真,2023,40(1): 345-348,488. (Sui Jinxue,Zhang Xia,Yu Tianlin. Design of self-verification platform for AXI4 bus based on UVM [J]. Computer Simulation,2023,40(1): 345-348,488.)
[11]王清源,高振斌,楊曉龍. 基于UVM的PCIe橋接芯片驗證平臺設計 [J]. 微電子學與計算機,2023,40(5): 104-111. (Wang Qingyuan,Gao Zhenbin,Yang Xiaolong. Verification design of PCIe bridge chip based on UVM [J]. Microelectronics & Computer,2023,40(5): 104-111.)
[12]Wang Dawei,Yan Jiang,Qiao Ying. Research on chip verification technology based on UVM [C]// Proc of the 6th International Symposium on Computer and Information Processing Technology.Piscata-way,NJ: IEEE Press,2021: 117-120.
[13]凌奇才. 基于UVM的PCIe交換芯片全局路由功能的驗證 [D]. 長沙: 湖南大學,2022. (Ling Qicai. Verification of global routing function of PCIe switching chip based on UVM [D]. Changsha: Hunan University,2022.)
[14]毛楷仁. 基于UVM驗證方法學的PCIe驗證平臺 [D]. 杭州: 杭州電子科技大學,2021. (Mao Kairen. PCIe verification platform based on UVM verification methodology [D]. Hangzhou: Hangzhou Dianzi University,2021.)
[15]何詩洋,李暉,李鳳華. SM4算法的FPGA優(yōu)化實現(xiàn)方法 [J]. 西安電子科技大學學報,2021,48(3): 155-162. (He Shiyang,Li Hui,Li Fenghua. Optimization and implementation of the SM4 on FPGA [J]. Journal of Xidian University,2021,48(3): 155-162.)