李 瀟 龔龍慶 田 衛(wèi) 南 希
摘 要:SpaceWire路由器是面向Spacewire總線網(wǎng)路互聯(lián)的設(shè)計(jì),它解決了SpaceWire總線只能點(diǎn)對點(diǎn)連接的問題,并提供了通用標(biāo)準(zhǔn)接口和規(guī)范進(jìn)行SpaceWire網(wǎng)絡(luò)的建立。提出了一種基于流水線技術(shù)的SpaceWire路由器,它是利用FPGA設(shè)計(jì)來實(shí)現(xiàn)無阻塞的交換矩陣,并且利用流水線原理提高系統(tǒng)的并行工作速度,以提高SpaceWire路由器的交換速度。目前經(jīng)過驗(yàn)證的速度已達(dá)200 Mb/s,且正在不斷改進(jìn)中。
關(guān)鍵詞:SpaceWire路由器;流水線;FPGA;無阻塞交換網(wǎng)絡(luò);傳輸速度
中圖分類號:TN915文獻(xiàn)標(biāo)識碼:A
文章編號:1004-373X(2009)03-090-03
Study of SpaceWire Router Based on Pipeline
LI Xiao,GONG Longqing,TIAN Wei,NAN Xi
(Xi′an Micro-electronic Technology Institute,Xi′an,710054,China)
Abstract:SpaceWire router is a design for SpaceWire bus network,it has solved the problem that SpaceWire bus only can connect by point to point,and has provided an universal standard interface and criterion to establish the SpaceWire network.This article introduces a SpaceWire router based on pipelining technique,it achieves a non-blocking switch based on FPGA,and uses pipelining technique to improve the speed of parallel work,which advances the transmission rate of SpaceWire router.The rate has been proved is reach 200 Mb/s,and it is improving now.
Keywords:SpaceWire router;pipeline;FPGA;non-blocking switch;transmission rate
近年來,隨著SpaceWire總線技術(shù)在航天航空領(lǐng)域的不斷應(yīng)用,SpaceWire路由器在理論和技術(shù)應(yīng)用方面也得到了飛速發(fā)展。國外,歐洲航天局(ESA)已經(jīng)將速度為200 Mb/s抗輻射的SpaceWire路由器應(yīng)用到ESA的航天任務(wù)中。國內(nèi),目前對SpaceWire路由器的研究還處于初級階段,設(shè)計(jì)的SpaceWire路由器最高速度也只能達(dá)到100 Mb/s。為了提高路由器的傳輸速度,這里提出了一種基于流水線技術(shù)的SpaceWire路由器。
1 SpaceWire路由器概述
SpaceWire路由器由一定數(shù)量鏈接接口單元和路由單元構(gòu)成。接口單元主要負(fù)責(zé)連接各SpaceWire接點(diǎn),路由單元負(fù)責(zé)數(shù)據(jù)的路由交換。
1.1 SpaceWire數(shù)據(jù)鏈路層接口單元
SpaceWire數(shù)據(jù)鏈路接口主要由連接器、LVDS驅(qū)動器、編碼器、譯碼器、狀態(tài)機(jī)、收發(fā)FIFO以及主機(jī)接口組成,其結(jié)構(gòu)如圖1所示。
發(fā)送器接收來自發(fā)送FIFO的數(shù)據(jù),使用DS編碼技術(shù)編碼這些數(shù)據(jù)并且進(jìn)行發(fā)送。
接收器負(fù)責(zé)解碼DS(Din和Sin)信號產(chǎn)生N-Chars字符序列(data,EOP,EEP),這些字符序列通過接收FIFO傳送給主機(jī)系統(tǒng)。
FIFO的使用簡化了數(shù)據(jù)鏈路與主機(jī)系統(tǒng)之間的接口。在系統(tǒng)復(fù)位以后,發(fā)送和接收FIFO都是空的。在鏈路連接建立以后,如果接收到FCT表明鏈路另一端允許向它發(fā)送數(shù)據(jù),那么被寫入發(fā)送FIFO的數(shù)據(jù)將被發(fā)送。當(dāng)接收FIFO內(nèi)仍然有可用空間時(shí),接收FIFO能夠接收數(shù)據(jù)。主機(jī)系統(tǒng)從接收FIFO中讀取數(shù)據(jù)。在FIFO全空或全滿以前,FIFO的半空或半滿標(biāo)志會觸發(fā)處理器干預(yù)對FIFO的讀寫操作。這種機(jī)制能夠控制通過鏈路的數(shù)據(jù)流,使數(shù)據(jù)鏈路接口保持高速數(shù)據(jù)吞吐。
狀態(tài)機(jī)用來負(fù)責(zé)控制接口單元的整體操作,它會提供鏈路初始化,普通操作和錯(cuò)誤服務(wù)。
1.2 SpaceWire路由器單元
為了簡化基于SpaceWire的通訊系統(tǒng)的復(fù)雜度,很重要的就是對SpaceWire路由單元的設(shè)計(jì)。如圖2所示,在圖中所設(shè)計(jì)的SpaceWire路由器中包括8個(gè)SpaceWire端口,即2個(gè)外部端口、1個(gè)內(nèi)部配置端口、路由表、控制寄存器、狀態(tài)/錯(cuò)誤寄存器、控制邏輯、無阻塞交互開關(guān)等。
低延遲、蟲洞路由和無阻塞交換開關(guān)使數(shù)據(jù)包能夠到達(dá)任意一個(gè)SpaceWire端口和外部端口,或者也可以由配置端口直接訪問任意一個(gè)SpaceWire端口和外部端口。所設(shè)計(jì)SpaceWire端口完全支持SpaceWire標(biāo)準(zhǔn),提供高速的、雙向的通訊。每個(gè)外部端口包括一個(gè)發(fā)送FIFO和一個(gè)接收FIFO,可以發(fā)送接收字符和包結(jié)束標(biāo)志。
Time-code端口會和計(jì)數(shù)器一起被提供用來方便Time-code的傳播。當(dāng)一個(gè)有效的Time-code到達(dá)一個(gè)路由端口時(shí),它也會被發(fā)送到其他SpaceWire端口,一個(gè)TICK_OUT信號會在Time-code端口被產(chǎn)生。路由器可以用Time-code端口提供的TICK_IN信號做為Time-code的操作管理。
配置端口可以配置任何SpaceWire端口和外部端口。它包括可以控制SpaceWire端口、外部端口和交換開關(guān)的寄存器。配置端口為各種端口和交換開關(guān)都設(shè)置了狀態(tài)寄存器。用配置端口的讀命令可以讀這些寄存器,從而來讀出路由器的狀態(tài)和錯(cuò)誤信息,而且一些狀態(tài)引腳上的狀態(tài)和錯(cuò)誤信息可以被選擇輸出。
路由表可以通過配置端口來訪問。邏輯地址端口映射和優(yōu)先位都可以在路由表中進(jìn)行設(shè)置,路由表常常用來控制組適應(yīng)路由和交互開關(guān)中的優(yōu)先仲裁。
1.3 蟲洞路由
SpaceWire路由器是基于蟲洞路由上進(jìn)行設(shè)計(jì)的。蟲洞路由是包路由的一種形式。每一個(gè)包的包頭包含著目的地的地址信息。每當(dāng)有一個(gè)包到達(dá)路由器時(shí),它就立即檢測這個(gè)包的目的地址,然后按照該地址轉(zhuǎn)發(fā)這個(gè)包到相應(yīng)的輸出端口。如果要求的輸出端口是“空閑”(free)狀態(tài),則這個(gè)包會被立即轉(zhuǎn)發(fā)到這個(gè)輸出端口。這時(shí),該端口就會被打上“忙”(busy)狀態(tài)標(biāo)記,直到這個(gè)包的最后一個(gè)字符即“包尾”(EOP)通過路由器轉(zhuǎn)發(fā)出去。
蟲洞路由如圖3所示,圖中一個(gè)包從一個(gè)節(jié)點(diǎn)發(fā)出,通過路由器到達(dá)另外一個(gè)節(jié)點(diǎn)。包頭標(biāo)記為黑色,其余部分為灰色。路由器負(fù)責(zé)在輸入端口和空閑的輸出端口之間建立連接,當(dāng)檢測到EOP或EEP時(shí),斷開連接,釋放輸出端口為空閑狀態(tài),準(zhǔn)備接收其他端口來的包。輸出端口忙時(shí),輸入端口阻塞輸入包,直到其空閑。通過輸入端口相遠(yuǎn)節(jié)點(diǎn)發(fā)送FCT來實(shí)現(xiàn),直到輸出端口空閑時(shí),路由器才取消阻塞。以上是蟲洞路由和流量控制之間的關(guān)系。
2 基于流水線的SpaceWire路由器
SpaceWire路由器將數(shù)據(jù)從輸入端傳遞到輸出端的過程一般需要進(jìn)過三個(gè)階段:首先,從輸入端讀數(shù)據(jù),將數(shù)據(jù)包中包頭所包含的目標(biāo)地址發(fā)送給路由查找表;再次,由路由查找表對目標(biāo)地址進(jìn)行查找,確定該數(shù)據(jù)包所要發(fā)送的輸出端;最后,將數(shù)據(jù)包發(fā)送到目標(biāo)地址所指的輸出端。具體結(jié)構(gòu)如圖4所示。
如果路由器中有兩個(gè)以上輸入端向同一個(gè)輸出端發(fā)送數(shù)據(jù)時(shí),就會對路由器內(nèi)部的讀寫操作產(chǎn)生爭奪。這時(shí),路由器應(yīng)提供仲裁機(jī)制進(jìn)行發(fā)送優(yōu)先級的確定。仲裁后,得到發(fā)送權(quán)的輸入端向輸出端口發(fā)送一個(gè)包。也就是說,在同一時(shí)間內(nèi),路由器中只能有一個(gè)輸入端進(jìn)行數(shù)據(jù)的發(fā)送。當(dāng)這個(gè)輸入端發(fā)送完畢后,其他輸入端再進(jìn)行數(shù)據(jù)的發(fā)送。這樣極大地降低了路由器的工作效率。
為了改善路由器的傳輸速度,研究設(shè)計(jì)了一種基于流水線技術(shù)的SpaceWire路由器。關(guān)鍵技術(shù)是設(shè)計(jì)一個(gè)基于流水線技術(shù)的無阻塞的并行交換開關(guān)(如圖5)。
對于SpaceWire路由器內(nèi)部數(shù)據(jù)流包頭的檢測和數(shù)據(jù)重排電路的設(shè)計(jì)復(fù)雜、規(guī)模較大。為了簡化電路設(shè)計(jì)的復(fù)雜度、降低電路功耗、提高系統(tǒng)工作可靠性,針對輸入數(shù)據(jù)流的包頭檢測及數(shù)據(jù)重排電路,采用事務(wù)處理流水線技術(shù)實(shí)現(xiàn)電路方案設(shè)計(jì)。圖6為采用事務(wù)處理流水線技術(shù)實(shí)現(xiàn)包頭檢測及數(shù)據(jù)重排電路方案框圖。采用此設(shè)計(jì)方案進(jìn)行電路設(shè)計(jì)的實(shí)驗(yàn)結(jié)果表明,采用流水線設(shè)計(jì)技術(shù)實(shí)現(xiàn)的電路其規(guī)模比原來電路減少了50%。
圖6所示的為并行交換體系結(jié)構(gòu),設(shè)計(jì)用FPGA實(shí)現(xiàn)K個(gè)M×M的無緩存的交叉開關(guān)作為交換模塊。這個(gè)體系結(jié)構(gòu)是由M個(gè)輸入共享存儲器模塊、K個(gè)交叉開關(guān)和M個(gè)輸出共享存儲模塊組成。每個(gè)輸入/輸出共享存儲器模塊有V個(gè)外部線路接口,同時(shí)與所有交叉開關(guān)相連接。
輸入共享存儲器模塊包含(M*V)個(gè)VOQ(虛擬輸出隊(duì)列),保存輸出到不同目的端口的信元。輸出共享存儲器模塊包含V個(gè)輸出隊(duì)列,保存等待輸出的信元。在每個(gè)仲裁周期,輸入端口從(M*V)個(gè)VOQ隊(duì)列中隨機(jī)選擇M個(gè)隊(duì)列,向交換開關(guān)提交調(diào)度請求。交換開關(guān)以輪詢方式為各隊(duì)列提供服務(wù),根據(jù)調(diào)度結(jié)果將授權(quán)信息反饋給輸入端口。授權(quán)信息指定的VOQ隊(duì)列頭信元通過交換開關(guān)直接到達(dá)輸出隊(duì)列,完成報(bào)文重組等處理后,發(fā)送到外部鏈路。為了避免輸出端發(fā)生緩沖區(qū)溢出,可采用反壓機(jī)制及時(shí)阻止輸入端發(fā)送過量信元。
在多個(gè)輸入端向一個(gè)輸出端發(fā)送數(shù)據(jù)時(shí),在交換開關(guān)中利用流水線技術(shù)讓多個(gè)輸入端分時(shí)向輸出端發(fā)送數(shù)據(jù)。也可以在每個(gè)輸入端都復(fù)制一個(gè)路由查找表,這樣在就不需要仲裁機(jī)制了。當(dāng)數(shù)據(jù)流進(jìn)入輸入端后,根據(jù)包頭地址查找路由表,確定要發(fā)送的輸出端,然后進(jìn)行發(fā)送,當(dāng)多個(gè)輸入端進(jìn)行傳送時(shí),就會給每個(gè)輸入端分配一個(gè)時(shí)間令牌,當(dāng)自己的時(shí)間令牌有效時(shí),就進(jìn)行傳輸,當(dāng)時(shí)間令牌失效時(shí),停止傳輸,直到將所有數(shù)據(jù)傳輸完畢。而時(shí)間令牌的分配,由路由算法來控制?;舅枷胧抢昧魉€將時(shí)間令牌輪流分給每個(gè)輸入節(jié)點(diǎn),還可根據(jù)具體的一些情況對路由算法進(jìn)行優(yōu)化。此項(xiàng)工作目前正在進(jìn)行中?;谶@種流水線技術(shù)設(shè)計(jì)的SpaceWire路由器,速度將會達(dá)到200 Mb/s。從而使SpaceWire網(wǎng)絡(luò)的數(shù)據(jù)傳輸更加快速,也會實(shí)現(xiàn)各輸入端到輸出端的同時(shí)訪問。
3 結(jié) 語
介紹了SpaceWire路由器的基本原理,重點(diǎn)闡述了一種基于流水線技術(shù)的SpaceWire路由器的研究,關(guān)鍵技術(shù)是用FPGA設(shè)計(jì)一種基于流水線技術(shù)的交換開關(guān)。SpaceWire路由器符合未來航天航空領(lǐng)域的發(fā)展需求,所以SpaceWire路由器速度是非常關(guān)鍵的指標(biāo)。本文就是介紹了一種改善SpaceWire路由器的速度的方法,具有很高的研究價(jià)值。目前此項(xiàng)研究正在實(shí)現(xiàn)過程中。
參考文獻(xiàn)
[1]胡曉峰.并行路由器體系結(jié)構(gòu)若干關(guān)鍵技術(shù)研究[D].長沙:國防科學(xué)技術(shù)大學(xué),2004.
[2]孟李林.一種無阻塞的高階電路交換方案設(shè)計(jì)[J].西安郵電學(xué)院學(xué)報(bào),2007,12(5):1-3.
[3]白海斌,邵淼青.基于FPGA的數(shù)據(jù)無阻塞交換設(shè)計(jì)[J].無線電通信技術(shù),2007,33(6):63-65.
[4]Steve Parkes,Chris McClements.SpaceWire Router.http://Netherlands: International SpaceWire Seminar, 2003.
[5]UT200SpW4RTR 4-Port SpaceWire Router[EB/OL].http://www.aeroflex.com,2007.
[6]侯伯亨,顧新.VHDL硬件描述語言與數(shù)字邏輯電路設(shè)計(jì)[M].西安:西安電子科技大學(xué)出版社,2004.
[7]田華.SpaceWire總線在遙測衛(wèi)星數(shù)傳系統(tǒng)中的設(shè)計(jì)應(yīng)用[M].上海:上海交通大學(xué)出版社,2005.
[8]徐明偉,徐恪.路由查找算法研究綜述[J].軟件學(xué)報(bào),2002,13(1):42-50.
[9]孫志剛,蘇金樹.高效的Crossbar仲裁算法——ISP[J].計(jì)算機(jī)學(xué)報(bào),2000,23(10):1 078-1 082.
[10]胡曉鋒,孫志剛,盧錫城.并行交換系統(tǒng)PSIQC的容錯(cuò)機(jī)制[J].計(jì)算機(jī)工程與科學(xué),2004,26(10):1-4,10.
作者簡介 李 瀟 男,1984年出生,陜西人,在讀碩士研究生。研究方向?yàn)橛?jì)算機(jī)應(yīng)用技術(shù)。
龔龍慶 男,1963年出生,吉林長春人,總工程師,研究生導(dǎo)師。研究方向?yàn)橛?jì)算機(jī)應(yīng)用。
田 衛(wèi) 男,1969年出生,陜西人,研究員。研究方向?yàn)榍度胧接?jì)算機(jī)。
南 希 女,1983年出生,在讀碩士研究生。研究方向?yàn)橛?jì)算機(jī)應(yīng)用技術(shù)。