李沛南, , ,,
(1.哈爾濱理工大學 自動化學院,哈爾濱 150080; 2.中國科學院自動化研究所,北京 100190)
依據(jù)最新視覺網(wǎng)絡指數(shù)和全球云指數(shù),2014年至2019年,數(shù)據(jù)中心每年平均數(shù)據(jù)流量將從3.4 ZB增至10.4 ZB[1]。大數(shù)據(jù)時代的到來使得傳統(tǒng)的摩爾定律,即每隔18個月~24個月處理器時鐘頻率翻一番,逐漸轉(zhuǎn)為處理器個數(shù)、線程數(shù)以及并行算法性能的翻番[2]。
NVIDIA與IBM在文獻[3]中設計的超級計算機,重新定義CPU、GPU間的互聯(lián)方式與架構。AMD、ARM等公司,創(chuàng)立異構系統(tǒng)架構基金會,旨在統(tǒng)一CPU、GPU及高性能單元的互聯(lián)架構,減小系統(tǒng)的復雜度,提升處理器性能[4]。國內(nèi)許多機構也致力于多核研究[5-7]。單核向多核、多片發(fā)展已成為趨勢。作為多片通信的媒介,片間互聯(lián)在新的體系架構中將發(fā)揮舉足輕重的作用。
傳統(tǒng)片間互聯(lián)結構主要有2種:支持路由功能的樹結構;不支持路由功能的全互聯(lián)結構。在SIMT架構中,數(shù)據(jù)搬運多在同一時刻進行,采用樹結構互聯(lián)時,根結點兩側(cè)大量數(shù)據(jù)交換極易導致傳輸瓶頸[3]。雖然樹結構協(xié)議多兼容全互聯(lián)結構,但路由功能模塊會使得在全互聯(lián)結構中占用面積較大、傳輸效率不高。
片間互聯(lián)技術的實現(xiàn)主要有2種:并行技術,如HyperTransport、Parallel RapidIO;串行技術,如PCIe(PCI-Express)、SRIO(Serial RapidIO)。隨著處理器頻率迅速提升,并行傳輸時鐘漂移日益嚴重,且所需引腳數(shù)多,使后期的實現(xiàn)愈加復雜。在充分吸收SerDes(Serializer/Deserializer)的優(yōu)勢后,串行技術,憑其傳輸速度快、引腳少、可擴展性強等優(yōu)勢,已在諸多領域取代并行技術[8]。
PCIe由Intel開發(fā),支持多種功能,保持向前兼容,實際傳輸速度僅能達到理論速度的64%[9]左右,適用于實時性要求低的系統(tǒng)中[10]。RapidIO由Motorola和Mercury開發(fā),對于小數(shù)據(jù)量的傳輸效率高[10],但對于大數(shù)據(jù)量,其開銷較大;文獻[11]采用SRIO進行高分辨率圖片傳輸,單物理通道僅為理論值的74%。HyperLink由TI研發(fā),僅應用于該公司的DSP產(chǎn)品,且不開源。HyperTransport由AMD開發(fā),雖然極大地減少了引腳數(shù),但本質(zhì)上仍為并行技術,在工作頻率增加時,將存在較大的實現(xiàn)困難。
以上述研究為基礎,本文提出一種基于包且具備低延遲、高效率的全互聯(lián)串行接口協(xié)議——SLink。該協(xié)議由事務層、數(shù)據(jù)鏈路層和物理層組成,選擇SerDes模塊作為物理層實現(xiàn)的基礎,支持可配置的CRC校驗和硬件檢測重傳機制。
SLink是針對芯片間互聯(lián)應用領域,基于“包”的高帶寬、低延遲、少引腳、高可靠性點對點串行傳輸協(xié)議。協(xié)議使用端到端的數(shù)據(jù)傳輸方式,兩端均包含有發(fā)送邏輯(TX)和接收邏輯(RX)。如圖1所示,SLink物理鏈路基于低電壓差分信號 (Low-Voltage Differential Signaling,LVDS)技術,可由多個數(shù)據(jù)通道(Lane)組成,每個數(shù)據(jù)通道包括發(fā)送和接收2組差分信號,每組差分信號使用兩根信號線傳輸。較單信號傳輸方法,此方法可有效地抑制電磁干擾,達到較高的傳輸頻率,從而降低延遲,提高傳輸帶寬[12]。
圖1 SLink物理鏈路示意圖
為提高協(xié)議的靈活性和可擴展性,SLink采用3層架構,包括事務層(Transaction Layer)、數(shù)據(jù)鏈路層(Data Link Layer)和物理層(Physical Layer)。
SLink協(xié)議的分層架構如圖2所示,其中,總線接口包括直接內(nèi)存訪問(Direct Memory Access,DMA)接口、對SLink功能寄存器的訪問接口。該接口可以依據(jù)片上系統(tǒng)(System on Chip,SoC)架構需求,采用不同總線協(xié)議進行設計。
圖2 SLink分層架構示意圖
1.1.1 事務層
事務層位于SLink架構中的最上層,負責通過DMA接口讀寫外部存儲器,生成操作請求包,解析由數(shù)據(jù)鏈路層傳遞給上層的數(shù)據(jù)。
寫操作請求和數(shù)據(jù)包由3個部分組成,即包頭控制字、數(shù)據(jù)有效負載、可選的CRC校驗字段。如圖3所示,作為發(fā)送端時,事務層依據(jù)功能寄存器的配置生成包頭控制字,通過DMA接口讀取操作數(shù)據(jù),選擇是否添加CRC字段,寫入發(fā)送數(shù)據(jù)緩沖區(qū)。作為接收端時,事務層將解析寫操作請求和數(shù)據(jù)包,通過DMA接口將接收數(shù)據(jù)緩沖區(qū)收到的數(shù)據(jù)有效負載寫往目的地址。
圖3 寫操作請求和數(shù)據(jù)包
讀操作請求包只有包頭控制字。作為發(fā)送端時,事務層依據(jù)寄存器配置生成讀操作請求包,寫入發(fā)送數(shù)據(jù)緩沖區(qū)。作為接收端時,事務層將解析收到的包頭控制字,判斷是否需要CRC校驗,并生成對應的寫操作請求和數(shù)據(jù)包,完成發(fā)送端對接收端的讀操作。
1.1.2 數(shù)據(jù)鏈路層
數(shù)據(jù)鏈路層位于事務層和物理層之間,其主要功能是保證事務層發(fā)送和接收數(shù)據(jù)的完整性,負責各包在事務層和物理層之間的拆分、組合,控制碼(K-code)的裝配、解析等。
數(shù)據(jù)鏈路層的控制碼(K-code)兼容部分PCIe的控制碼??刂拼a的具體定義如表1所示。IDL碼標志鏈路當前無操作請求;物理鏈路復位時,由COM碼進行鏈路兩端的數(shù)據(jù)對齊,保證鏈路可以正確接收數(shù)據(jù);PAD碼是在傳輸過程中,鏈路層發(fā)送速度慢于物理通道傳輸速度時,為保證信息的正確性和完整性,鏈路層添加的無效數(shù)據(jù);由STP碼與END碼進行信息同步,分別標志數(shù)據(jù)包的起始與結束。
表1 控制字符的說明
當作為發(fā)送端時,不論SLink執(zhí)行寫操作或讀操作,數(shù)據(jù)鏈路層都將從事務層的發(fā)送數(shù)據(jù)緩沖區(qū)中讀取數(shù)據(jù),添加控制碼符號,依據(jù)通道數(shù)配置拆分數(shù)據(jù)包至物理層不同的通道。
當作為接收端時,數(shù)據(jù)鏈路層接收物理層的數(shù)據(jù),將多通道數(shù)據(jù)同步組合為數(shù)據(jù)包,根據(jù)包頭控制字的內(nèi)容,判斷是否對接收的數(shù)據(jù)包進行CRC校驗,并根據(jù)校驗結果產(chǎn)生對應的CRC校驗正確或錯誤響應包,反饋給發(fā)送端。
從發(fā)送端來看,若接收到CRC正確校驗響應包,數(shù)據(jù)鏈路層返回到空閑狀態(tài),等待下次傳輸;若接收到CRC錯誤校驗響應包,數(shù)據(jù)鏈路層將從發(fā)送數(shù)據(jù)緩沖區(qū)再次讀取數(shù)據(jù),發(fā)送到物理層。
CRC校驗響應包也僅包含包頭控制字,相比于讀操作請求包,只需對應字段不同。
1.1.3 物理層
物理層基于SerDes模塊設計,處于數(shù)據(jù)鏈路層和實際物理鏈路之間,負責數(shù)據(jù)鏈路層與實際物理鏈路之間的數(shù)據(jù)傳輸。
作為發(fā)送端,物理層接收使能通道的并行數(shù)據(jù),進行8b10b編碼,傳遞給SerDes模塊,進行串化輸出。作為接收端,SerDes模塊完成物理鏈路接收數(shù)據(jù)的解串操作,物理層將解串后的并行數(shù)據(jù)進行8b10b解碼,傳遞給數(shù)據(jù)鏈路層。
規(guī)定發(fā)起讀寫操作命令的SLink為本地SLink,簡稱S0;規(guī)定接收物理鏈路傳遞的讀寫請求,被動進行相應操作的SLink為遠端SLink,簡稱S1;規(guī)定S0所處系統(tǒng)為SoC0,S1所處系統(tǒng)為SoC1。
SLink寫操作是指S0讀取SoC0某地址段中的數(shù)據(jù)寫入SoC1某地址段。讀操作是指S0讀取SoC1某地址段的數(shù)據(jù)至SoC0某地址段。
SLink傳輸數(shù)據(jù)的流程為:先配置S0和S1的功能寄存器,針對不同操作請求,再分3部分進行描述:
1)不使能CRC寫操作
(1)S0事務層依據(jù)寄存器生成包頭信息,通過DMA接口從指定源地址讀取數(shù)據(jù),存入發(fā)送數(shù)據(jù)緩沖區(qū)。
(2)S0數(shù)據(jù)鏈路層從發(fā)送數(shù)據(jù)緩沖區(qū)中讀取數(shù)據(jù),將包頭信息和數(shù)據(jù)負載分配到各物理通道,并依據(jù)數(shù)據(jù)包格式插入控制碼。
(3)S1物理層接收包頭控制字和數(shù)據(jù),交付給數(shù)據(jù)鏈路層,數(shù)據(jù)鏈路層依據(jù)包頭分析,判斷本次傳輸沒有CRC寫操作,將數(shù)據(jù)直接寫入接收數(shù)據(jù)緩沖區(qū)。
(4)S1事務層從接收數(shù)據(jù)緩沖區(qū)中讀取數(shù)據(jù),通過DMA接口寫入目的地址。
(5)不使能CRC寫操作完成。
2)使能CRC寫操作
(1)S0事務層依據(jù)寄存器生成包頭信息,通過DMA接口從指定源地址讀取數(shù)據(jù),存入發(fā)送數(shù)據(jù)緩沖區(qū)。
(2)S0數(shù)據(jù)鏈路層將包頭信息、數(shù)據(jù)負載以及CRC冗余碼一并分配到物理通道中,插入控制碼。
(3)S1物理層接收到包頭和數(shù)據(jù),數(shù)據(jù)鏈路層判斷出本次傳輸為使能CRC校驗的寫操作。
(4)S1數(shù)據(jù)鏈路層校驗冗余碼,生成CRC校驗響應包,并返回給S0。若校驗正確,則通過DMA接口寫入目的地址,否則,等待S0重傳。
(5)S0數(shù)據(jù)鏈路層判斷響應包控制位,若校驗正確,S0此次寫操作成功;若校驗失敗,則跳至步驟(2),循環(huán)步驟(2)~步驟(5),直至成功。
(6)使能CRC寫操作完成。
3)讀操作
(1)S0事務層依據(jù)寄存器生成讀操作的包頭信息,存入發(fā)送數(shù)據(jù)緩沖區(qū)。
(2)S0數(shù)據(jù)鏈路層將包頭信息分配到各個物理數(shù)據(jù)通道,插入控制碼。
(3)S1數(shù)據(jù)鏈路層解析包頭控制信息,交給事務層。
(4)S1事務層依據(jù)包頭控制信息進行使能或不使能CRC寫操作,將數(shù)據(jù)發(fā)送給S0。
(5)S0正確收到數(shù)據(jù)后,操作完成。
SLink檢錯重傳機制建立在CRC冗余校驗的基礎上,由控制寄存器使能,錯誤檢測與重傳功能由硬件自動完成。這種方法有別于軟件處理,不僅速度快[13],也為程序設計人員隱藏了錯誤處理過程,使編程開發(fā)更加方便。
為了驗證SLink協(xié)議的可行性,參考圖2,總線接口采用AXI 3.0,該協(xié)議支持簇發(fā)(Burst)操作,有利于提高DMA模塊的傳輸效率。DMA接口與發(fā)送和接收緩沖區(qū)的數(shù)據(jù)位寬為64 Byte,滿足4通道下各通道16 Byte并行數(shù)據(jù)的輸入。物理層實現(xiàn)采用PCIe 2.0的PIPE層[14]和SerDes模塊,支持單物理通道傳輸速度為5 Gb/s或2.5 Gb/s,支持4通道傳輸模式。
本節(jié)對實現(xiàn)方案中的功能寄存器、緩沖區(qū)、CRC生成多項式的選擇,以及針對本設計的編程接口模型進行詳細描述。
在本設計方案中,SLink采用4個配置寄存器和1個只讀寄存器,均為32 Byte。只讀狀態(tài)寄存器負責指示操作起止狀態(tài)和物理鏈路發(fā)送狀態(tài)等信息。
配置寄存器包括:1)控制寄存器,負責配置物理鏈路的軟復位、傳輸速度和發(fā)送使能;2)本地地址寄存器,為寫操作源地址,或讀操作讀回地址;3)控制字高32 Byte寄存器,為寫操作的目的地址,或讀操作源地址;4)控制字低32 Byte寄存器,負責配置其他傳輸模式參數(shù)和數(shù)據(jù)包的信息。
SLink的包頭控制字僅為64 Byte,為控制字高32 Byte與低32 Byte的拼接,相關配置參如圖4所示。
圖4 包頭控制字格式
各字段的含義為:遠端地址,若為寫操作請求,則該字段為寫目的地址,若為讀操作請求,則該字段為讀取源地址;有效數(shù)據(jù)長度,此次讀寫操作傳輸數(shù)據(jù)個數(shù),以64 bit為單位,有效數(shù)據(jù)范圍為1~216,支持單次最大數(shù)據(jù)傳輸量為512 KB;通道數(shù)目,本次傳輸使能的物理傳輸通道個數(shù),支持1通道,2通道和4通道3種模式。該字段只需要配置S0,接收端S1的數(shù)據(jù)鏈路層根據(jù)鏈路狀態(tài)進行解析,完成與發(fā)送端匹配;數(shù)據(jù)包類型,表明本數(shù)據(jù)包為操作請求包,CRC校驗正確響應包,或者CRC校驗錯誤響應包;傳輸命令類型,表明此次傳輸為寫操作請求或讀操作請求;保留,目前設計中未使用的字段,以備后續(xù)的功能擴展。
SLink支持可配置的CRC冗余校驗,參考文獻[15]選用CRC校驗碼生成多項式的方法,采取CRC-16。該生成多項式有以下特性:
1)被檢測序列中出現(xiàn)1個~3個或奇數(shù)個數(shù)據(jù)位錯誤時,檢錯率達100%。
2)突發(fā)錯誤長度小于或者等于16時,檢測率達100%。
3)突發(fā)錯誤長度等于17時,檢測率達99.996 9%。
4)突發(fā)錯誤長度大于或者等于18時,檢測率達99.998 5%。
突發(fā)錯誤長度為N,是指在一段長度為N的子序列中,最低位和最高位數(shù)據(jù)出錯,中間位數(shù)據(jù)可能出錯,也可能未出錯。
在本文實現(xiàn)中,發(fā)送與接收數(shù)據(jù)緩沖區(qū)的大小均等于單次傳輸可支持的最大數(shù)據(jù)大小,即512 KB。添加該緩沖區(qū)帶來的優(yōu)勢有:
1)操作數(shù)據(jù)從傳輸層到數(shù)據(jù)鏈路層時鐘域的處理。
2)若CRC校驗失敗,數(shù)據(jù)發(fā)送方可從緩沖區(qū)中重新發(fā)送所有的操作數(shù)據(jù),應用程序不需處理。
3)操作數(shù)據(jù)接收方在總線發(fā)生擁堵時,保留原值。
4)祛除當緩沖區(qū)小于傳輸長度時所需的狀態(tài)標志,如發(fā)送緩沖區(qū)滿或溢出和接收緩沖區(qū)空等。
如算法1所示,SLink軟件編程依據(jù)控制寄存器的格式進行配置。支持2種傳輸通道發(fā)送速度,3種傳輸通道數(shù)模式,以及可配置的CRC校驗功能。
在算法1中,1行~10行介紹接口輸入和輸出參數(shù)含義;11行~13行判斷本次操作是否為更改物理通道傳輸速度和傳輸通道數(shù),決定是否軟復位;14行~19行配置功能寄存器,在19行進行使能操作,開始數(shù)據(jù)信息的傳輸;20行~22行判斷狀態(tài)寄存器操作起止標志位,操作結束后,置接口返回值為1。
算法1SLink配置
輸入pointer,is_new_configuration,option,N,xmode,crc_en,gtps,local_addr,remote_addr
輸出op_finished
1. %pointer 指SLink在系統(tǒng)中的基地址
2. %is_new_configuration指是否會進行速度和通道數(shù)的新配置,決定是否進行軟復位
3. %option 指本次操作類型,0為寫,1為讀
4. %N 指數(shù)據(jù)個數(shù)
5. %xmode 指通道數(shù),0為X1,1為X2,2為X4
6. %crc_en 指是否進行CRC校驗,1為使能
7. %gtps 指傳輸速度,0為2.5 Gb/s,1為5 Gb/s
8. %local_addr指寫操作源地址或讀操作寫回地址
9. %remote_addr指寫操作目的地址或讀操作源地址 %
10. %op_finished 指本次操作是否正常結束
11. if(is_new_configuration) then
12. pointer[0/4]= 0
13. end if
14. SOFT_RESET = 1
15. START = 1<<4
16. pointer[4/4]=(option<<0) + (xmode<<5) + (crc_en<<4) + (N<<8)
17. pointer[8/4]= remote_addr
18. pointer[12/4]= local_addr
19. pointer[0/4]= gtps + SOFT_RESETN + START
20. while pointer[16/4]& 1 do
21. op_finished = 0
22. end while
23. op_finished = 1
為驗證設計實現(xiàn)的正確性,評估傳輸性能,搭建基于實際片間互聯(lián)應用場景的測試環(huán)境。如圖5所示,對SLink實現(xiàn)進行軟件仿真與現(xiàn)場可編程門陣列(Field Programmable Gate Array,FPGA)原型驗證。SoC0與SoC1有獨立的尋址空間,SLink內(nèi)部DMA模塊可通過總線訪問存儲器,圖中略去了總線。在測試過程中,由SoC0發(fā)起操作請求,SoC1端接收控制命令。
圖5 驗證評估環(huán)境
軟件仿真具備易觀察、迭代速度快的優(yōu)點,適合驗證設計實現(xiàn)的正確性,并評估性能。本文采用VCS(Verilog Compiled Simulator)作為仿真工具,其版本號為2014.03。
在軟件仿真實驗中,可以同時配置SoC0的控制器與SoC1的可配接口,給予功能寄存器輸入信號。采用此種方法,可以對實現(xiàn)的不同傳輸模式、不同數(shù)據(jù)量大小進行完備的測試,并記錄各層信號數(shù)值變化,進行性能評估。
3.2.1 功能驗證
目前,SLink可支持多種傳輸模式下讀寫操作,通道數(shù)目可選為X1/X2/X4,單通道傳輸速率可為2 Gb/s和5 Gb/s,可選的CRC校驗,組合情況共24種。
本文以SLink一次寫操作為例說明仿真過程,仿真波形如圖6所示。此操作傳輸模式為:單物理通道傳輸速度為5 Gb/s,采用4通道傳輸模式,并使能CRC校驗,有效數(shù)據(jù)為64 Byte。
圖6 SLink寫操作(X4,使能CRC校驗)
SLink_S0為本地SLink的信號,“d_araddr”為存儲器AXI總線接口的“讀地址”信號,可以看到,此操作數(shù)據(jù)源起始地址為0x6000_0000;“sl_busy”為本次寫操作“起止標志位”,該位為0時,表明SLink處于空閑狀態(tài),為1時,說明SLink正處于操作進行狀態(tài);4個“pipe0_tx_data”的變化表明本次操作使用的傳輸通道數(shù)為4。
類似地,SLink_S1為遠端SLink的信號,“d_awaddr”為存儲器AXI總線接口的“寫地址”信號,可以看到,本次寫操作目的起始地址為0x6000_3000;“rx_crc_ck”為“CRC校驗判斷結果”,SLink_S1的事務層將會在CRC校驗判定正確后,通過DMA接口寫往存儲器;“pipe0_rate”為1,表明本次操作的物理通道傳輸速度為5 Gb/s。
從圖6中可以看出,此次寫操作的配置模式:單通道傳輸速度為5 Gb/s,采用4通道傳輸,使能CRC校驗。SLink_S0在發(fā)送數(shù)據(jù)后進行等待;SLink_S1成功校驗已接收數(shù)據(jù),并將數(shù)據(jù)寫往目的地址;SLink_S0在SLink_S1端接收操作成功后,結束等待,恢復初始狀態(tài)。
3.2.2 傳輸延遲
定義“傳輸延遲”即從本地SLink的DMA接口讀取第一個數(shù)開始,到遠端SLink通過DMA接口寫第一個數(shù)的時間。傳輸延遲越小,SLink傳輸實效越好。
仿真評估時,對傳輸延遲的測量是通過實際的存儲器接口讀寫時間進行計算所得。圖6的波形中部最上方顯示此寫操作傳輸延遲為196.67 ns。
經(jīng)測試,采用1通道和4通道,不使能與使能CRC功能時SLink的傳輸延遲分別如圖7與圖8所示,橫軸傳輸數(shù)據(jù)量的倍數(shù)以64 bit為單位。
圖7 未使能CRC傳輸延遲
圖8 使能CRC傳輸延遲
圖7為未使能CRC的傳輸延遲結果示意圖??梢钥闯?在同一種模式下,傳輸不同數(shù)據(jù)量時,傳輸數(shù)據(jù)延遲基本穩(wěn)定;在不同模式下,物理鏈路傳輸速度(物理通道傳輸速度與傳輸通道數(shù)的乘積)配置越高,傳輸延遲越小。
圖8為使能CRC后的傳輸延遲結果示意圖。可以看出,在同一種模式下,數(shù)據(jù)量越大,傳輸延遲越大;在不同模式下,物理鏈路傳輸速度配置越高,傳輸延遲越小。
結合實驗結果,對于傳輸延遲,有如下分析:
1)當傳輸速度配置不同時,物理鏈路傳輸速度是影響傳輸延遲的主要原因;當物理通道發(fā)送速度相同,傳輸通道數(shù)不同時,傳輸延遲差體現(xiàn)在從64比特數(shù)據(jù)至物理通道的拆包和合包操作上。
2)不使能CRC時,SLink對數(shù)據(jù)的處理方式是盡快發(fā)送,故其傳輸延遲與傳輸數(shù)據(jù)量大小基本無關。
3)使能CRC功能時,接收端使能錯誤重傳機制,只有接收到數(shù)據(jù),并經(jīng)過校驗確認無誤后,數(shù)據(jù)才會被寫入到目的地址中,因此,在使能CRC功能后,傳輸數(shù)據(jù)量越大,SLink傳輸延遲越大。
為了對比SLink、與PCIe和SRIO的傳輸性能,實驗中搭建了類似SLink測試環(huán)境的仿真平臺進行PCIe、SRIO的性能評估。SRIO支持單通道物理傳輸速度為3.125 Gb/s和6.5 Gb/s,為增強實驗數(shù)據(jù)的可對比性,在實驗過程中,將物理層的參考時鐘125 MHz轉(zhuǎn)為100 MHz,有效的單通道傳輸速度3.125 Gb/s和6.5 Gb/s分別轉(zhuǎn)為2.5 Gb/s和5 Gb/s。
當3種協(xié)議均傳輸數(shù)據(jù)量為512 Byte時,傳輸延遲的比較如圖9所示。柱狀條分別為3種協(xié)議傳輸延遲測試結果;虛線為對應坐標軸模式下SLink傳輸延遲相對SRIO減少的百分比;實線為相對PCIe減少的百分比;點線為各模式下相對PCIe傳輸延遲平均減少的百分比。
圖9 未使能CRC傳輸延遲對比
從實驗結果可知,SLink的傳輸延遲較小于另外2種協(xié)議。相對于PCIe,在物理通道傳輸速度為2.5 Gb/s,傳輸通道數(shù)為1時,傳輸延遲最多可減少72%;各種工作模式下的平均傳輸延遲減少61%。
假設傳輸時間(T)為從本地SLink的DMA讀第一個數(shù)據(jù)開始,到該數(shù)據(jù)傳輸?shù)竭h端SLink的DMA寫完N個數(shù)的時間。假定傳輸數(shù)據(jù)位寬為data_width,那么,有效帶寬的計算方法見式(1):
(1)
3.2.3 有效帶寬
在本文實驗中,評估1通道和4通道,不使能與使能CRC功能時SLin k的有效傳輸帶寬。測試結果如圖10所示,“+CRC”和“-CRC”分別代表使能和不使能CRC校驗重傳機制。
圖10 不同模式下有效帶寬
在圖10中,每種模式分別測試4種數(shù)據(jù)量,可以看出,不論是否使能CRC校驗,傳輸數(shù)據(jù)量越大,有效帶寬越大,物理鏈路發(fā)送速度配置越高,有效帶寬越大。
結合實驗結果,對于有效帶寬,有如下分析:當傳輸速度配置不同時,物理鏈路傳輸速度是影響傳輸時間和有效帶寬的主要原因;若使能CRC,校驗時間與傳輸數(shù)據(jù)量成正比關系,不論是否使能CRC校驗,當鏈路速度配置相同,傳輸?shù)臄?shù)據(jù)量越大,有效帶寬越大。
當3種協(xié)議傳輸數(shù)據(jù)量均為512 Byte時,有效帶寬的比較如圖11所示。
圖11 未使能CRC傳輸帶寬對比
從實驗結果可知,SLink的有效帶寬較大于另外2種協(xié)議,相對于PCIe,在物理通道傳輸速度為5 Gb/s,當傳輸通道數(shù)為4時,有效帶寬最多可增加78.5%;平均有效帶寬增加55.6%。
為評估在實際片間互聯(lián)應用場景下,SLink設計的性能,采用兩片F(xiàn)PGA,分別下載SoC0與SoC1,模擬片間通信。
FPGA驗證環(huán)境的搭建基于Synopsys公司的HAPS-70原型驗證系統(tǒng)平臺,采用Synopsys公司的Synplify Premier綜合器,版本號為2014.03,和Xilinx公司的Vivado實現(xiàn)工具,版本號為2014.4。
參考圖5,FPGA系統(tǒng)結構中,SoC0選擇Microblaze作主控核。SoC1可配接口處設計狀態(tài)機,接收SoC0控制器通過通用輸入輸出接口(General Purpose Input Output,GPIO)發(fā)送的控制信號,進行相關配置,具體如下:
1)SoC0控制器發(fā)送傳輸模式配置信息,SoC1在接收信號后,配置相關寄存器,同時向SoC0反饋成功接收信號,表明鏈路模式配置成功。
2)初始化SoC1片上存儲器,此功能為保證SoC1存儲器初始值與將寫值不同,確定寫操作執(zhí)行。
3)在寫操作完成后,SoC0控制器可讀取SoC1中目的地址接收到的首字節(jié)數(shù)據(jù),以確認寫操作正確。
FPGA測試環(huán)境如圖12所示。字母A與B為2個FPGA,分別下載SoC0與SoC1;數(shù)字1為PCIe高速線纜,選擇距gpio連接線接口比較近的MGB(Multi-gigabit)插槽,利于布局布線,減小時序違規(guī);數(shù)字2為HapsTrak 3 I/O連接線,傳輸GPIO信號;數(shù)字3為LED燈,控制開關為操作起止標志位,方便驗證過程中觀察記錄。
圖12 FPGA原型驗證環(huán)境
發(fā)送數(shù)據(jù)緩沖區(qū)的數(shù)據(jù)位寬為64 bit,所以,事務層發(fā)送數(shù)據(jù)的有效帶寬為:
BWTransaction_Layer=64×fTransaction_Layer
(2)
物理層理論傳輸帶寬為:
BWPhysical_Layer=Nlane×Vper_lane
(3)
如果事務層傳輸帶寬需要滿足物理層的傳輸帶寬,使得數(shù)據(jù)鏈路層不會因為事務層DMA接口搬運速度慢而暫停,并考慮到物理層會對數(shù)據(jù)進行8b10b編碼,事務層傳輸頻率應滿足下式:
(4)
在不同物理鏈路傳輸速度配置下,事務層DMA接口工作所需最小頻率見表2。
表2 不同模式需要的事務層工作頻率 MHz
目前,受工具限制,在FPGA綜合實現(xiàn)后,SLink事務層工作頻率為100 MHz。滿足物理通道傳輸速度為2.5 Gb/s,傳輸通道數(shù)為2,或傳輸速度為5 Gb/s,傳輸通道數(shù)目為1。當物理鏈路傳輸速度配置更高時,物理通道傳輸速度快于事務層,將導致傳輸瓶頸。事務層工作頻率的優(yōu)化將在后期工作中進行。
驗證中,將兩端SLink狀態(tài)寄存器中起止狀態(tài)標志位“sl_busy”插入內(nèi)部邏輯單元(Integrated Logic Analyzer,ILA)。采用時鐘頻率為200 MHz的計數(shù)器記錄標志位的跳變,即2個SoC端傳輸操作的開始和結束時間,統(tǒng)計“傳輸延遲”與“傳輸時間”。
假設傳輸延遲為S0與S1兩端開始操作的時間差,假設傳輸時間為S0端開始操作至S1端操作結束的時間差。
在控制器頻率為100 MHz,統(tǒng)計不同模式下,傳輸1 024個數(shù)據(jù)時的延遲和傳輸時間,根據(jù)式(1),得有效帶寬計算方法為:
(5)
FPGA驗證實際傳輸速度的測試結果如圖13所示。柱狀條為SLink的有效帶寬測試結果,線為傳輸延遲的測試結果。
圖13 未使能CRC的FPGA測試結果
由于FPGA與軟件仿真計算傳輸延遲和帶寬的時間參考不同,實驗數(shù)據(jù)略有誤差,但FPGA實驗數(shù)據(jù)同樣證明:
1)在未使能CRC校驗功能時,同一模式下,傳輸不同數(shù)據(jù)量時,傳輸數(shù)據(jù)延遲基本穩(wěn)定;不同模式下,物理通道發(fā)送速度越快,傳輸延遲越小。
2)在未使能CRC校驗功能時,物理鏈路傳輸速度配置越高,傳輸帶寬越大。
在物理通道傳輸速度為5 Gb/s,傳輸通道數(shù)為1時,SLink傳輸速度約為3.9 Gb/s,達到理論傳輸速度的78%,若不考慮8b10b編解碼的影響,傳輸效率高達97.5%。
本文實驗中采用2套環(huán)境進行綜合評估:1)使用Synopsys公司的DC 2013.12,評估SLink、PCIe和SRIO 3種控制器的時序和面積;2)進行FPGA綜合,使用Syplify Premier 2014.03與Vivado 2014.4,比較SLink和PCIe實際所占資源。
DC綜合選用TSMC 40nm LP-CMOS工藝技術庫作為目標單元庫,綜合結果對比如表3所示。SLink控制器的工作頻率可達600 MHz,約為PCIe和SRIO控制器頻率的2.4倍;所占邏輯單元面積約為PCIe的1/50,SRIO的1/10。
表3 SLink和PCIe控制器DC綜合結果
使用Synplify Premier進行SoC中有關總線協(xié)議子系統(tǒng)的綜合實現(xiàn),Vivado實現(xiàn)Microblaze相關模塊,綜合采用默認策略(Vivado Synthesis Defaults),實現(xiàn)采用性能探索策略(Performance Explore)。結果如表4所示,數(shù)據(jù)表明:SLink控制器在FPGA中所需要LUT只有PCIe控制器的1/52,與DC綜合結果相近。
表4 SLink與PCIe控制器FPGA資源占用對比
本文研究對比業(yè)界成熟的串行接口協(xié)議,提出一種點對點串行接口協(xié)議SLink,并對其進行設計實現(xiàn),通過軟件仿真和FPGA模擬實際片間應用場景,與PCIe 2.0和SRIO進行性能對比分析。實驗結果表明,SLink具有良好的傳輸性能,相比PCIe 2.0,SLink的傳輸延遲平均減少61.0%,有效帶寬平均增加55.6%,控制器最高工作頻率提升1.4倍,所占面積減小約97.5%。
SLink在未來將用于中國科學院自動化研究所的高性能計算芯片研發(fā)項目中,實際的性能評估和改進優(yōu)化是后續(xù)研究重點。
[1] CISCO.Cisco global cloud index:forecast and methodology 2014-2019[EB/OL].[2016-04-21].http://www.cisco.com/c/en/us/solutions/collateral/service-provider/global-cloud-index-gci/Cloud_Index_White_Paper.html.
[2] SHALF J,DOSANJH S,MORRISON J.Exascale computing technology challenges[C]//Proceedings of International Conference on High Performance Computing for Computa-tional Science.Berlin,Germany:Springer-Verlag,2010:1-25.
[3] NVDIA.NVIDIA NVLink High-speed interconnect applica-tion performance brief[EB/OL].[2016-11-01].http://www.nvidia.com/object/nvlink.html.
[4] ROGERS P,FELLOW A C.Heterogeneous system architecture overview[C]//Proceedings of Hot Chips 25 Symposium.Washington D.C.,USA:IEEE Press,2013,25:1-41.
[5] 朱 英,陳 誠,許曉紅,等.一款多核處理器FPGA驗證平臺的設計與實現(xiàn)[J].計算機研究與發(fā)展,2014,51(6):1295-1303.
[6] 鄧軍勇,李 濤,蔣 林,等.MIGPU-9多核交互式圖形處理器的設計[J].計算機輔助設計與圖形學學報,2014,26(9):1468-1478.
[7] 郭 陽,李思昆,屈婉霞.片上多核處理器驗證:挑戰(zhàn)、現(xiàn)狀與展望[J].計算機輔助設計與圖形學學報,2012,24(12):1521-1532.
[8] 馬春江,牛文生,孫靖國.幾種串行總線互連技術分析[J].航空計算技術,2007,37(5):127-130.
[9] MARCUS G,GAO W,KUGEL A,et al.The MPRACE framework:an open source stack for communication with custom FPGA-based accelerators[C]//Proceedings of the 4th Southern Conference on Programmable Logic.Washington D.C.,USA:IEEE Press,2011:155-160.
[10] 梁小虎,王 樂,張亞棣.高速串行總線RapidIO與PCI Express協(xié)議分析比較[J].航空計算技術,2010,40(3):127-130.
[11] ZHANG F,WU Q,REN G.A High-speed serial transport platform based on SRIO for high-resolution image[C]//Proceedings of the 3rd International Congress on Image and Signal Processing.Washington D.C.,USA:IEEE Press,2010:2441-2444.
[12] MASSOUD Y,KAWA J,MACMILLEN D,et al.Modeling and analysis of differential signaling for minimizing inductive cross-talk[C]//Proceedings of the 38th annual Design Automation Conference.New York,USA:ACM Press,2001:804-809.
[13] MING-DER SHIEH M H W A S,CHEN C,LO H F.A systematic approach for parallel CRC computations[J].Journal of information science and Engineering,2001,17(3):445-461.
[14] DAVE D.PCI express PIPE overview[EB/OL].[2016-11-21].http://www.applistar.com/wp-content/uploads/apps/pip e2_00.pdf.
[15] KOOPMAN P,CHAKRAVARTY T.Cyclic redundancy code (CRC) polynomial selection for embedded networks[C]//Proceedings of 2004 International Conference on Dependable Systems and Networks.Washington D.C.,USA:IEEE Press,2004:145-154.