盧建章,劉洋
(1.中航工業(yè)雷華電子技術研究所,無錫 214063;2.江南計算技術研究所)
TMS320C6678中的高速串行接口RapidIO研究
盧建章1,劉洋2
(1.中航工業(yè)雷華電子技術研究所,無錫 214063;2.江南計算技術研究所)
本文從嵌入式多核處理器之間高速數(shù)據(jù)通信的應用出發(fā),結合對TI的TMS320C6678多核DSP的認識,開展了對RapidIO(SRIO)接口協(xié)議和TMS320C6678 SRIO模塊結構的研究。并在此基礎上,工程實現(xiàn)了TMS320C6678片間SRIO通信的詳細配置過程,并對其通信性能進行了評測分析,為多核DSP系統(tǒng)級通信的設計提供了一定的參考。
TMS320C6678;RapidIO;處理器間通信
為了實現(xiàn)高性能的嵌入式系統(tǒng),由Mercury和Freescale共同研發(fā)的RapidIO互連技術發(fā)展起來,其具有高傳輸效率、低系統(tǒng)成本和高可靠性等特點,RapidIO協(xié)議為嵌入式系統(tǒng)各器件之間提供高帶寬、低延時的數(shù)據(jù)傳輸,并且可以支持板到板、芯片到芯片間的通信。
2010年11月,TI公司發(fā)布了KeyStone結構的8核DSP處理器TMS320C6678,其每個C66x內核主頻最高達1.25 GHz,可以提供每秒高達40 GB MAC定點運算和20 GB FLOP浮點運算能力[1];該芯片中集成了一個兼容于RapidIO互聯(lián)規(guī)范REV2.1.1的4通道的SRIO模塊,可配置成1x, 2x, 4x模式,每通道支持1.25 Gbps、2.5 Gbps、3.125 Gbps和5 Gbps的傳輸速率[1]。SRIO的數(shù)據(jù)格式默認采用大端格式,支持8b/16b的設備ID、組播ID,同時額外支持錯誤管理、阻塞控制,為實現(xiàn)系統(tǒng)級的互聯(lián)提供了可行方案。適用于諸如雷達信號處理等對定浮點運算能力以及大數(shù)據(jù)通信有較高要求的超高性能計算應用。
基于以上分析,本文針對TMS320C6678多核處理器,首先介紹了SRIO的傳輸協(xié)議,分析TMS320C6678的SRIO收發(fā)模型和配置過程,并對其傳輸帶寬進行了評測,為多處理器系統(tǒng)的設計提供了一定的參考。
RapidIO技術是一種基于協(xié)議包格式的互聯(lián)技術,在TMS320C6678芯片手冊中,通常把RapidIO稱為SRIO,為DSP之間提供一種高帶寬、低延遲、低系統(tǒng)成本的通信,是系統(tǒng)互連的最佳選擇之一,下面分析SRIO的協(xié)議構成。
圖1 SRIO協(xié)議層次結構圖
為了滿足靈活性和可擴展性的要求,SRIO協(xié)議可分為三層:邏輯層、傳輸層和物理層,如圖1所示。邏輯層位于頂層,定義了在應用程序中如何通信、包格式、為端點器件發(fā)起完成事務提供信息,它支持DirectI/O、消息傳遞和全局共享存儲。傳輸層位于中間層,數(shù)據(jù)傳輸?shù)牡刂房臻g和傳輸包所需的路由信息由它來定義。物理層位于底層,定義了設備級接口、報文傳輸、流量控制、電氣特性、底層錯誤處理等[2]。
1.2 SRIO協(xié)議包
SRIO是基于包交換的數(shù)據(jù)傳輸協(xié)議。一個傳輸包由屬于邏輯層、傳輸層和物理層的數(shù)據(jù)域組成。邏輯層域由包頭(定義入口類型)和有效載荷(即數(shù)據(jù))組成。傳輸層域從物理布局上來說,在某種意義上是獨立的,由發(fā)送和接收設備的源ID號和目的ID號等組成。物理層在物理接口上是獨立的,包含優(yōu)先級、信息確認和錯誤檢測域。SRIO協(xié)議包如圖2所示。
圖2 SRIO協(xié)議包
圖3 SRIO的數(shù)據(jù)流圖
數(shù)據(jù)包最外層為物理層字段,最內層為邏輯層字段,中間的為傳輸層字段,圖2中的數(shù)字為字節(jié)數(shù)。其中S字段用來表示該包是一個數(shù)據(jù)包還是一個控制符號。ackID是鏈路級包鑒定符,即包序列號,每發(fā)送一個包,ackID加1。Prio為優(yōu)先級字段,tt、目的地址和源地址表示傳輸?shù)刂返念愋?,即包接收和產生地址是8位還是16位。Ftype代表被請求的事務類型,不同類型的SRIO包協(xié)議也略有不同。長度為編碼后的事務長度,SRIO最多允許256個待完成事務。在源事務ID之后是器件偏移地址。后面接著有效數(shù)據(jù)載荷,再以16位循環(huán)冗余校驗碼(CRC)結束,接收端通過CRC校驗碼來判斷這個包是否正確。
TMS320C6678是一款處理能力很強的新型高性能多核DSP,相比于之前的芯片,集成了豐富的外設,如PCI總線端口、千兆以太網端口、64位無縫外部存儲器端口、HyperLink端口等,最重要的是增加了對SRIO支持的模塊。
2.1 SRIO模塊簡介
TMS320C6678芯片的SRIO接口是一個外部驅動的從設備模塊,同時能夠在DSP芯片內作為一個主設備。這意味著外部設備可以根據(jù)需求傳輸(突發(fā)寫入)數(shù)據(jù)到DSP內部,而無需向CPU發(fā)送中斷或依賴DSP 芯片的EDMA資源。這種機制既降低了系統(tǒng)的中斷個數(shù),又減少了與只讀外設的握手操作,同時還釋放了 EDMA資源以便其他任務使用。
SRIO外設模塊的數(shù)據(jù)流如圖3所示。當接收數(shù)據(jù)包時,高速數(shù)據(jù)包在物理層依次進行時鐘恢復、串并轉換、8b/10b解碼,并將之緩存在各個端口的緩存區(qū),最后進行 CRC 錯誤檢測;相反,當發(fā)送數(shù)據(jù)包時,數(shù)據(jù)包首先進行 CRC 生成,經過各個端口的緩存區(qū)后依次進行8b/10b編碼、并串轉換,最后到達發(fā)送端口。數(shù)據(jù)包在邏輯層與物理層間通過發(fā)送共享緩存區(qū)和接收緩存區(qū)進行過渡,最后到達邏輯層的數(shù)據(jù)包,整個包已被解碼,負載數(shù)據(jù)已被緩存,根據(jù)接收的數(shù)據(jù)包類型的不同,包的進一步操作通過功能模塊來實現(xiàn),其中LSU(Load/Stone Unit)負責控制發(fā)送DirectI/O模式的數(shù)據(jù)包,MAU(Memory Access Unit)負責控制接收DirectI/O模式的數(shù)據(jù)包,TXU負責控制發(fā)送消息傳遞模式的數(shù)據(jù)包,RXU負責控制接收消息傳遞模式的數(shù)據(jù)包。這4個單元通過內部DMA與DSP芯片的存儲器進行通信,通過緩存區(qū)和接收發(fā)送端口與外部設備通信。
2.2 SRIO操作實現(xiàn)
SRIO操作是通過包的傳輸完成的。在C6678中關于SRIO的操作主要分為DirectI/O和Doorbell這兩大類。通過對LSU寄存器進行配置,從而完成操作。DirectI/O包括了NREAD、NWRITE、NWRITE_R、SWRITE、Maintenance Read和Maintenance Write這幾種協(xié)議。對于DirectI/O而言,數(shù)據(jù)傳輸和DMA傳輸是結合的。此DMA為SRIO模塊中的內部引擎,當發(fā)起SRIO操作時,DMA將會自行啟動。DirectI/O操作分為主、從兩種模式。當DSP工作在主模式下時,DSP需要知道外部相連器件的ID號以及存儲器地址映射情況,從而發(fā)起讀/寫操作。若DSP工作在從模式下,DSP無需知道其他外部芯片的邏輯地址情況,讀寫操作都由主設備發(fā)起,通過DMA完成。Doorbell 協(xié)議包不包含數(shù)據(jù)負載,是一種用于器件間響應中斷的協(xié)議,如圖4所示。
圖4 Doorbell包結構
在Doorbell操作中,存在著一個Drbll_Info的結構,Drbll_Info分為16位,由Doorbell的發(fā)送方置位。Doorbell的接收方可以在中斷服務程序中,讀取ICCR寄存器的值,此時ICCR中的值會根據(jù) Drbll_Info的值,在相應的位上進行置位。這樣通過 Drbll_Info便可以發(fā)送不同的指令。
TMS320C6678的SRIO模塊設計以寄存器為基礎,通過調用TI公司軟件開發(fā)工具PDK中的底層庫(CSL)驅動和SRIO模塊驅動進行程序設計。SRIO模塊的驅動程序初始化按以下步驟設置[3-4]:
① 端口使能:使能內部發(fā)送(LSU,TXU)與接收(MAU,RXU)模塊。
② SerDes初始化:參考時鐘以及傳輸速度初始化,相連器件間需要配置相同的參考時鐘,傳輸速度有1.25 Gbps、2.5 Gbps、3.125 Gbps和5 Gbps。
③ 傳輸模式初始化:Lane可以配置為1x、2x或4x,設置鎖相環(huán)PLL和設備ID。
④ 中斷初始化:初始化Doorbell中斷,將其映射到核內中斷向量上。
按照上述步驟完成配置后,在SRIO接收到Doorbell中斷時,接收DSP即跳入中斷服務程序,完成門鈴響應。
本節(jié)對SRIO傳輸?shù)男阅苓M行實測評估,并提供在不同的操作條件下獲得的性能測試數(shù)據(jù)。大部分測試是在最理想的測試條件進行,以評估可以獲得的最大吞吐量。處理器運行的頻率設置為1 GHz,DDR配置成64位,位寬1333 M,采用的編譯環(huán)境是TI公司的CCSv5.0。
圖5 SRIO的傳輸帶寬
圖5表述SRIO在不同類型的存儲空間之間的傳輸速率隨著數(shù)據(jù)塊的增大,一直呈現(xiàn)上升趨勢。
表1是DSP核以DirectI/O模式的SWRITE方式通過SRIO從本地LL2、SL2和DDR3分別訪問遠端LL2、SL2和DDR3,每次發(fā)送數(shù)據(jù)量為8 KB,發(fā)送多次取平均所得的傳輸帶寬。由于SRIO本身具備硬件糾錯功能,當檢測到數(shù)據(jù)傳輸錯誤后會自動重傳,造成帶寬的損耗,另外,背板的硬件電氣特性也會直接影響到實測的帶寬,這些因素均會造成實測帶寬與理論帶寬的差距。
表1 DSP核通過SRIO實現(xiàn)8 KB數(shù)據(jù)傳輸帶寬
[1] Texas Instruments Inc.Multicore design overview,2011.
[2] Sam Fuller.RapidIO:The embedded system interconnect[M].Hoboken:John Wiley&Sons,2005.
[3] Texas Instruments Inc.TMS320C6678 data manual,2011.
[4] Texas Instruments Inc.KeyStone Architecture Serial RapidIO User Guid,2012.
盧建章(工程師),主要研究方向為雷達信號處理、嵌入式信號處理系統(tǒng);劉洋(工程師),主要研究方向為信息安全。
Research on High-speed Serial Interface RapidIO in TMS320C6678
Lu Jianzhang1,Liu Yang2
(1.AVIC Leihua Electronic Technology Research Institute,Wuxi 214063,China;2. Jiangnan Computing Technology Research Institute)
Based on the application of high-speed data communication between embedded multi-core processors and the knowledge of TMS320C6678 multi-core DSP,the research on RapidIO interface protocol and TMS320C6678 SRIO module structure is carried out.The detailed configuration process of SRIO communication between TMS320C6678 chips is achieved,and its communication performance is analyzed and evaluated.It provides some reference for multi-core DSP system-level communication design.
TMS320C6678;RapidIO;inter-processor communication
TN915.04
A
?士然
2017-02-13)