本發(fā)明公開了一種基于RapidIO的數(shù)據(jù)傳輸系統(tǒng),屬于高速數(shù)據(jù)傳輸領(lǐng)域,尤其涉及對傳輸速率和傳輸時延進(jìn)行改進(jìn)的數(shù)據(jù)傳輸系統(tǒng)。
背景技術(shù):
RapidIO是一種開放式的互連技術(shù)標(biāo)準(zhǔn),應(yīng)用于芯片間、板間互連系統(tǒng)。其具有傳輸效率高、拓?fù)浣Y(jié)構(gòu)靈活、可靠性高等特點(diǎn),已經(jīng)各種系統(tǒng)中廣泛應(yīng)用。
在某些基于RapidIO接口的傳輸系統(tǒng)中,對時敏性能和傳輸速率都有較高的要求??紤]到時敏因素,加之?dāng)?shù)據(jù)并非勻速傳輸,數(shù)據(jù)速率具有較大的隨機(jī)性,故只能采用短數(shù)據(jù)幀。在瞬時傳輸速率較高時,會產(chǎn)生大量的門鈴事務(wù)(Doorbell)或者信箱(Mailbox)數(shù)據(jù)傳輸,接收端CPU會頻繁地響應(yīng)中斷,極大地增加了系統(tǒng)開銷。以某數(shù)據(jù)鏈系統(tǒng)為例,該數(shù)據(jù)鏈系統(tǒng)為了保證系統(tǒng)的時敏性能設(shè)計通信幀長度為127Bytes,而RapidIO接口傳輸速率要求達(dá)到400Mbps,這樣CPU端每秒接收到393700次Doorbell或者M(jìn)ailbox數(shù)據(jù)傳輸,并響應(yīng)相同次數(shù)的中斷。這樣就極大增加了CPU的系統(tǒng)開銷,傳輸速率急速降低,甚至導(dǎo)致CPU不能正常工作。
技術(shù)實現(xiàn)要素:
本發(fā)明的發(fā)明目的一是提供一種基于RapidIO的發(fā)送裝置,另一發(fā)明目的是提供一種基于RapidIO的接收裝置,能夠解決現(xiàn)有傳輸方式的不足,在保證時敏性能的同時,大幅度降低系統(tǒng)開銷,提高傳輸速率。
本發(fā)明的發(fā)明目的一通過以下技術(shù)方案實現(xiàn):
一種基于RapidIO的發(fā)送裝置,包含F(xiàn)IFO模塊、發(fā)送邏輯控制模塊,所述FIFO模塊用于緩存上層傳遞的數(shù)據(jù);
所述發(fā)送邏輯控制模塊用于監(jiān)控所述FIFO模塊緩存的數(shù)據(jù)長度,若數(shù)據(jù)長度大于或等于RapidIO數(shù)據(jù)幀規(guī)定的數(shù)據(jù)長度時,則向窗口空間序號為接收裝置反饋的Doorbell中窗口空間序號減1的窗口空間發(fā)送RapidIO數(shù)據(jù)幀,并在該窗口空間的信息位標(biāo)明有效數(shù)據(jù)長度信息和數(shù)據(jù)讀取標(biāo)志為未讀。
進(jìn)一步,所述的一種基于RapidIO的發(fā)送裝置還包含定時器,所述定時器用于在發(fā)送邏輯控制模塊將RapidIO數(shù)據(jù)幀發(fā)送給窗口空間后,對接收裝置返回Doorbell的時間進(jìn)行計算,若超過一定時間沒有接收到Doorbell則觸發(fā)發(fā)送邏輯控制模塊向接收裝置發(fā)送Doorbell,請求接收裝置讀取窗口空間內(nèi)的數(shù)據(jù)。
本發(fā)明的另一發(fā)明目的通過以下技術(shù)方案實現(xiàn):
一種基于RapidIO的接收裝置,包含若干個窗口空間和接收邏輯控制模塊,所述窗口空間大小為RapidIO數(shù)據(jù)幀規(guī)定的數(shù)據(jù)長度再加上信息位,所述信息位包含有效數(shù)據(jù)長度信息和數(shù)據(jù)讀取標(biāo)志信息;
所述接收邏輯控制模塊用于先讀取部分或全部窗口空間的數(shù)據(jù)讀取標(biāo)志信息,再讀取數(shù)據(jù)讀取標(biāo)志為未讀的窗口空間中的有效數(shù)據(jù)長度信息,最后讀取數(shù)據(jù)讀取標(biāo)志為未讀的窗口空間的數(shù)據(jù),并更新數(shù)據(jù)標(biāo)志信息為已讀,以及通過Doorbell返回最后讀取的窗口序號給發(fā)送裝置。
進(jìn)一步,所述窗口空間的數(shù)量根據(jù)RapidIO數(shù)據(jù)幀的寫入速度、讀取速度和系統(tǒng)的忙閑情況確定。
本發(fā)明的有益效果為:
1、接收裝置開辟若干個窗口空間,并根據(jù)寫入速度、讀取速度和數(shù)據(jù)傳輸系統(tǒng)的忙閑情況確定合適的窗口數(shù)量,實現(xiàn)最佳的系統(tǒng)開銷。
2、接收裝置的每個窗口空間大小為一幀RapidIO數(shù)據(jù)幀最大值+1*byte信息位,發(fā)送裝置向各個窗口依次發(fā)送RapidIO數(shù)據(jù)幀,并在信息位標(biāo)明有效數(shù)據(jù)長度和數(shù)據(jù)讀取標(biāo)志信息為未讀。接收裝置根據(jù)對有效數(shù)據(jù)長度和數(shù)據(jù)讀取標(biāo)志信息的解析,正確地接收數(shù)據(jù)。該設(shè)計保證了對不同長度數(shù)據(jù)幀的支持。
3、接收裝置根據(jù)整個數(shù)據(jù)傳輸系統(tǒng)的忙閑情況,調(diào)整不同的時間間隔輪詢各個窗口空間的數(shù)據(jù)讀取標(biāo)志信息。如果多個窗口空間的數(shù)據(jù)讀取標(biāo)志信息為未讀,則根據(jù)信息位注明的有效數(shù)據(jù)長度,集中讀取該多個窗口空間的數(shù)據(jù),更新數(shù)據(jù)標(biāo)志為已讀。
4、利用Doorbell模式中未被利用的16bits,接收裝置在每次讀操作結(jié)束后,發(fā)送最后讀取數(shù)據(jù)窗口的序號至發(fā)送裝置。
5、根據(jù)系統(tǒng)的時延要求,設(shè)計定時器,當(dāng)接收裝置超時未讀取窗口數(shù)據(jù)時,發(fā)送端發(fā)送Doorbell數(shù)據(jù),請求接收端讀取窗口數(shù)據(jù),保證系統(tǒng)的時延要求。
6、接收裝置根據(jù)系統(tǒng)忙閑程度,自適應(yīng)調(diào)整單次讀取窗口的數(shù)量。接收裝置考慮自身系統(tǒng)的忙閑程度和系統(tǒng)傳輸時延要求,確定可以執(zhí)行的任務(wù)切換的頻率。當(dāng)接收裝置系統(tǒng)比較繁忙時,增加單次讀取窗口的數(shù)量,減少任務(wù)切換的頻率,保證高傳輸速率。當(dāng)接收裝置系統(tǒng)比較閑時,增加任務(wù)切換的頻率,減少單次讀取窗口的數(shù)量,這樣保證較高傳輸速率的情況下,降低了系統(tǒng)傳輸時延,但是比較而言,任務(wù)頻繁切換會影響接口的傳輸速率。因此,可以根據(jù)傳輸時延和傳輸速率的取舍和接收裝置自身的系統(tǒng)忙閑限制來確定窗口數(shù)量,實現(xiàn)最優(yōu)的傳輸時延和傳輸速率,動態(tài)實現(xiàn)系統(tǒng)所能達(dá)到的最高傳輸速率。
7、大大減少了Doorbell或者M(jìn)ailbox的使用頻率。從而使得CPU不需要頻繁相應(yīng)中斷,因此大大降低了時敏系統(tǒng)中RapidIO接口的系統(tǒng)開銷,而且通過設(shè)置定時器,保證了接口的傳輸時延性能。
附圖說明
圖1是本發(fā)明的結(jié)構(gòu)示意圖;
圖2是本發(fā)明中窗口空間的示意圖;
圖3是Doorbell的格式示意圖。
具體實施方式
為了更好地理解本發(fā)明,下面通過附圖和實施例對本發(fā)明作進(jìn)一步詳細(xì)說明。
本實施例是對現(xiàn)有的一種基于RapidIO的數(shù)據(jù)傳輸系統(tǒng)進(jìn)行改進(jìn),主要包含對RapidIO數(shù)據(jù)幀進(jìn)行擴(kuò)展,對Doorbell中備用字段進(jìn)行利用,以及對發(fā)送裝置、接收裝置的結(jié)構(gòu)和控制邏輯進(jìn)行改進(jìn)。
對RapidIO數(shù)據(jù)幀進(jìn)行擴(kuò)展主要體現(xiàn)在由原RapidIO數(shù)據(jù)幀后面再加上1byte的信息位。該信息位的高7比特位表示有效數(shù)據(jù)長度,最低比特位表示數(shù)據(jù)讀取標(biāo)志信息,發(fā)送裝置在將RapidIO數(shù)據(jù)幀發(fā)送給窗口空間時,將該RapidIO數(shù)據(jù)幀的數(shù)據(jù)讀取標(biāo)志信息設(shè)置為未讀;接收裝置在從窗口空間讀取RapidIO數(shù)據(jù)幀時,將該傳輸幀的數(shù)據(jù)讀取標(biāo)志信息設(shè)置為已讀。
Doorbell的格式如圖3所示,利用原Doorbell中空閑的16bit備用位來傳輸接收裝置最終讀取的窗口空間序號。
數(shù)據(jù)傳輸系統(tǒng)的硬件部分主要由發(fā)送裝置和接收裝置組成,如圖1所示,發(fā)送裝置由FIFO模塊、定時器和發(fā)送邏輯控制模塊組成。接收裝置在由在內(nèi)存中開辟的若干個窗口空間和接收邏輯控制模塊組成。
FIFO模塊用于接收上層傳遞的待發(fā)送的數(shù)據(jù)。
發(fā)送邏輯控制模塊先對FIFO模塊中緩存的數(shù)據(jù)進(jìn)行監(jiān)控,當(dāng)緩存的數(shù)據(jù)大于等于一個完整的RapidIO數(shù)據(jù)幀時,發(fā)送邏輯控制模塊則向窗口空間序號為接收裝置反饋的Doorbell中窗口空間序號減1的窗口空間為起始點(diǎn)依次發(fā)送RapidIO數(shù)據(jù)幀,并在窗口空間的信息位標(biāo)明有效數(shù)據(jù)長度信息和數(shù)據(jù)讀取標(biāo)志為未讀。
接收邏輯控制模塊用于根據(jù)寫入速度、讀取速度和數(shù)據(jù)傳輸系統(tǒng)的忙閑情況在內(nèi)存中開辟若干個窗口空間(圖1舉例為32個窗口),窗口數(shù)量可以是通過后期的系統(tǒng)聯(lián)試得到的,也可以通過估算得出大概的數(shù)量值。根據(jù)接收端系統(tǒng)忙閑程度,可以接受的任務(wù)切換頻率,例如接收端的系統(tǒng)可以執(zhí)行每秒200次的接口讀取任務(wù),即任務(wù)間隔為5ms。估計發(fā)送模塊在5ms的時間內(nèi)發(fā)送的數(shù)據(jù)量,例如數(shù)據(jù)速率為400Mbps,每個窗口的數(shù)據(jù)為1Kb。則需要80個窗口空間。規(guī)定每個窗口空間的大小是一幀RapidIO數(shù)據(jù)幀的最大值+1*byte信息位;再根據(jù)系統(tǒng)的忙閑情況,利用讀取速度快的特點(diǎn),依據(jù)每個窗口空間中信息位所注明的有效數(shù)據(jù)長度和數(shù)據(jù)讀取標(biāo)志信息,集中讀取多個窗口的數(shù)據(jù),并更新數(shù)據(jù)讀取標(biāo)志信息為已讀,并通過Doorbell返回最終讀取的窗口序號。發(fā)送裝置根據(jù)反饋的窗口序號,保證發(fā)送端不覆蓋接收端未讀取數(shù)據(jù)。為了保證在系統(tǒng)的時敏性能,如果發(fā)送端在一定時間內(nèi)沒有接收到接收端返回的讀取窗口信息,定時器會觸發(fā)一次Doorbell傳輸,提醒接收端進(jìn)行數(shù)據(jù)接收。
整個數(shù)據(jù)傳輸系統(tǒng)的流程如下:
接收裝置的接收控制邏輯模塊開辟32個窗口空間如圖2所示,每個窗口空間的大小是一幀RapidIO數(shù)據(jù)幀長的最大值+1byte,假設(shè)數(shù)據(jù)幀長最大值為127*bytes,則每個窗口大小為127*bytes+1*byte=128bytes。窗口序號分別為窗口1至窗口n,其中每個窗口的第128byte高7比特位表示有效數(shù)據(jù)長度,單位為byte。最低比特表示數(shù)據(jù)是否為已讀。
在發(fā)送裝置中,當(dāng)FIFO模塊中數(shù)據(jù)大于127bytes時,發(fā)送邏輯控制模塊讀取數(shù)據(jù),在第128byte相應(yīng)比特位填寫有效數(shù)據(jù)長度和數(shù)據(jù)未讀標(biāo)志,向窗口空間序號為接收裝置反饋的Doorbell中窗口空間序號減1的窗口空間為起始點(diǎn)依次向連續(xù)的窗口空間發(fā)送RapidIO數(shù)據(jù)幀、有效數(shù)據(jù)長度和數(shù)據(jù)未讀標(biāo)志。
接收裝置的接收控制邏輯模塊根據(jù)數(shù)據(jù)傳輸系統(tǒng)的忙閑情況,確定合適輪詢間隔,查看是否有新數(shù)據(jù)需要讀取,并連續(xù)讀取所有的新數(shù)據(jù)。然后利用Doorbell的16bits未使用信息發(fā)送最后讀取的窗口序號index_num至發(fā)送端。
發(fā)送端根據(jù)反饋的窗口序號index_num,發(fā)送數(shù)據(jù)至窗口index_num-1,依次保證發(fā)送端不覆蓋接收端未讀取數(shù)據(jù)。
發(fā)送裝置根據(jù)系統(tǒng)的時延要求,設(shè)計定時器,當(dāng)超時未收到接收端的反饋窗口信息時,發(fā)送控制邏輯模塊發(fā)送Doorbell數(shù)據(jù),請求接收端讀取窗口數(shù)據(jù),保證系統(tǒng)的時延要求。
可以理解的是,對本領(lǐng)域普通技術(shù)人員來說,可以根據(jù)本發(fā)明的技術(shù)方案及其發(fā)明構(gòu)思加以等同替換或改變,而所有這些改變或替換都應(yīng)屬于本發(fā)明所附的權(quán)利要求的保護(hù)范圍。