高速輸出、輸入接口電路及數據傳輸方法
【技術領域】
[0001]本發明實施例涉及通信技術,尤其涉及一種高速輸出、輸入接口電路及數據傳輸方法。
【背景技術】
[0002]高速輸入輸出協議(以下簡稱Rapid1)是一種高性能、低引腳數、基于數據包交換的互連體系結構,是為了滿足現在和未來高性能嵌入式系統需求而設計的一種開放式互連技術標準。Rapid1主要應用于嵌入式系統內部互連,支持芯片到芯片、板到板間的通信,可用于嵌入式設備的備板連接。
[0003]在現有技術中,通常基于Rapid1的消息傳遞模式進行數據傳輸。Rapid1的消息傳遞模式的報文最大支持4KB(千比特)的傳輸,如果一個數據包有大流量的數據需要傳輸,首先處理器,如中央處理單元(CPU)需要調用存儲器中存儲的軟件將數據包按照4KB的粒度進行拆分,得到多個報文,然后將屬于同一個數據包的報文的標識(ID)域字段配置為相同的標識值,并將多個報文組成一條鏈表,配置到消息控制器中。消息控制器根據鏈表按順序,通過高速輸入輸出接口依次發送各所述報文。在接收端,處理器調用存儲器中存儲的軟件,采用鏈表的接收方式,并根據報文中的標識值進行區分處理,對具有相同標識值的報文采用同一鏈表進行管理,當接收到數據包所拆分的全部報文后,將拆分后的報文重組為一個數據包。
[0004]然而,現有技術中的消息傳遞模式,由于需要通過處理器運行軟件對數據包進行拆分和重組,接收端和發送端的軟件開銷大,導致處理器處理效率低下。
【發明內容】
[0005]本發明實施例提供一種高速輸出、輸入接口電路及數據傳輸方法,不需要通過處理器運行軟件對數據包進行拆分和重組,減少了數據包接收端和發送端的軟件開銷,提高處理器的處理效率。
[0006]第一方面,本發明實施例提供一種高速輸出接口電路,所述高速輸出接口電路設置在高速輸入輸出接口中,所述高速輸出接口電路應用于快速輸入輸出傳輸的協議棧,所述協議棧包括鏈路層、邏輯層、傳輸層以及物理層;所述高速輸出接口電路包括:鏈路層電路、封裝模塊以及高速輸出接口,其中,所述封裝模塊分別與所述鏈路層電路、所述高速輸出接口連接;
[0007]所述鏈路層電路,用于獲取位于高速輸出接口電路之外的處理器配置的待發送數據包,對所述待發送的數據包中的部分數據進行鏈路層封裝,得到包括所述數據以及鏈路層信息的報文,并將所述報文發送至封裝模塊,所述鏈路層信息包括所述數據包對應的報文總數、所述報文在報文序列中的序列號、所述報文對應的數據包的標識;
[0008]所述封裝模塊,用于接收所述鏈路層電路發送的所述報文,對所述報文依次進行邏輯層、傳輸層以及物理層封裝,得到完成封裝的報文,并將完成封裝的所述報文發送至高速輸出接口;
[0009]所述高速輸出接口,用于接收所述封裝模塊發送的完成封裝的所述報文,將完成封裝的所述報文發送至接收端。
[0010]在本實施例中,處理器只需要配置待發送的數據包,鏈路層電路就可以對該數據包進行拆分,并在拆分的過程中,將鏈路層信息封裝至數據中,以使接收端可根據鏈路層信息對數據包進行重組,然后由封裝模塊進一步封裝,高速輸出接口直接將完成封裝的數據發送至接收端,不需要通過處理器運行軟件對數據包進行拆分,降低了軟件的開銷,不會影響通用處理器的處理效率。
[0011 ]進一步地,所述高速輸出接口電路還包括:軟件接口以及鏈表模塊,所述軟件接口與所述鏈表模塊連接,所述鏈表模塊與所述鏈路層電路連接;
[0012]所述軟件接口,用于獲取所述處理器配置的描述符,并將所述描述符發送至所述鏈表模塊,所述描述符中包括所述數據包的內存地址以及所述接收端的標識;
[0013]所述鏈表模塊,用于接收所述軟件接口發送的描述符,并將所述描述符添加至任務表中,在所述高速輸出接口空閑時,向所述鏈路層電路發送所述任務表中的描述符;
[0014]所述鏈路層電路具體用于,接收所述鏈表模塊發送的所述描述符,根據所述數據包的內存地址,從內存中獲取所述處理器配置的待發送數據包,對所述待發送的數據包中的數據進行鏈路層封裝,得到包括所述數據以及鏈路層信息的報文,并將所述報文以及所述接收端的標識發送至封裝模塊;
[0015]所述封裝模塊還用于,接收所述鏈路層電路發送的所述接收端的標識,并將所述接收端的標識發送至所述高速輸出接口 ;
[0016]所述高速輸出接口具體用于,接收所述封裝模塊發送的完成封裝的所述報文以及所述接收端的標識,根據所述接收端的標識,將所述完成封裝的所述報文發送至接收端。
[0017]更進一步地,所述描述符中還包括所述數據包的大小,所述鏈路層電路還用于,根據其它數據包的標識,生成與所述其它數據包的標識不同的數據包的標識;根據所述數據包的大小以及所述數據的大小,獲取所述報文總數,根據所述數據在所述數據包中的讀取順序,確定所述報文在報文序列中的序列號;根據所述報文總數、所述報文在報文序列中的序列號以及所述數據包的標識,生成所述鏈路層信息。
[0018]本實施例通過軟件接口獲取處理器根據數據包配置的描述符,鏈表模塊根據高速輸出接口的空閑狀態,向鏈路層模塊發送未發送至接收端的數據包對應的描述符,鏈路層模塊對數據的鏈路層封裝,使得數據包的發送由高速輸出接口的狀態決定,使得報文的發送不受標識域的限定,最大限度的利用了可用帶寬。封裝模塊對數據的進一步封裝以及高速輸出接口將封裝完成的報文發送至接收端,不需要通過處理器運行軟件對待發送的數據包進行提前拆分,只要在數據包中讀取數據,對該數據進行鏈路層封裝之后,即可將該數據發送,降低了軟件的開銷,不會影響處理器的處理效率。
[0019]本發明實施例還提供一種通信設備,包括如上所述的高速輸出接口電路以及處理器、存儲器;
[0020]所述存儲器包括驅動軟件;
[0021]所述處理器,用于從所述存儲器讀取所述驅動軟件并在所述驅動軟件的驅動下向所述高速輸出接口電路提供待發送數據包。
[0022]第二方面,本發明提供一種高速輸入接口電路,所述高速輸入接口電路設置在高速輸入輸出接口中,所述高速輸入接口電路應用于快速輸入輸出傳輸的協議棧,所述協議棧包括鏈路層、邏輯層、傳輸層以及物理層;所述高速輸入接口電路包括:高速輸入接口、解封裝模塊以及鏈路層電路,其中,所述解封裝模塊分別與所述高速輸入接口以及所述鏈路層電路連接;
[0023]所述高速輸入接口,用于接收發送端發送的報文,并將所述報文發送至所述解封裝模塊;
[0024]所述解封裝模塊,用于接收所述高速輸入接口發送的報文,對所述報文依次進行物理層、傳輸層以及邏輯層的解封裝,得到包括鏈路層信息的報文,并將所述包括鏈路層信息的報文發送至所述鏈路層電路,所述鏈路層信息包括報文總數、所述報文在報文序列中的序列號、所述報文對應的數據包的標識;
[0025]所述鏈路層電路,用于接收所述解封裝模塊發送的所述包括鏈路層信息的報文,對所述包括鏈路層信息的報文進行鏈路層解封裝,得到所述鏈路層信息以及所述報文中的數據,根據所述數據包的標識、所述報文總數以及所述報文在報文序列中的序列號,對所述報文中的數據與其他報文中的數據進行重組得到所述報文對應的數據包。
[0026]本實施例通過高速輸入接口電路接收發送端發送的報文,解封裝模塊對該報文依次進行物理層、傳輸層以及邏輯層的解封裝,鏈路層電路根據鏈路層信息進行報文的重組,得到完整的數據包,不需要通過處理器運行軟件對報文進行重組,降低了軟件的開銷,不會影響通用處理器的處理效率。
[0027]進一步地,所述鏈路層電路具體用于,
[0028]接收所述解封裝模塊發送的所述包括鏈路層信息的報文,對所述包括鏈路層信息的報文進行鏈路層解封裝,得到所述鏈路層信息以及所述數據;
[0029]在重組表中確定存在與所述數據包的標識匹配的表項,所述表項中包括所述數據包的標識、緩存信息以及報文總數,所述緩存信息包括鏈路層緩存區的起始位置與大小,以及數據緩存區的起始位置與大小;
[0030]根據所述報文在報文序列中的序列號以及所述緩存信息,將所述報文中的數據存儲至所述數據緩存中,將所述數據包對應的首個報文的鏈路層信息存儲至所述鏈路層緩存中。
[0031]根據所述數據包的標識、報文總數,確定與所述報文對應的數據包是否重組成功。
[0032]更進一步地,所述高速輸入接口電路還包括:軟件接口以及緩存配置模塊;所述緩存配置模塊分別與所述軟件接口以及所述鏈路層電路連接;
[0033]所述軟件接口,用于獲取所述高速輸入接口電路之外的處理器配置的所述緩存信息,將所述緩存信息發送至所述緩存配置模塊;
[0034]所述緩存配置模塊,用于接收所述軟件接口發送的所述緩存信息,對所述緩存信息進行存儲,并向所述鏈路層電路發送所述緩存信息。
[0035]本實施例通過軟件接口獲取高速輸入接口電路之外的處理器配置的緩存信息,將緩存信息發送至緩存配置模塊,緩存配置模塊對該緩存信息進行存儲,并將該緩存信息發送至鏈路層電路。鏈路層電路對報文進行鏈路層解封裝,得到鏈路層信息,根據報文對應的數據包的標識,在重組表中確定存在與數據包標識匹配的表項,根據表項中的緩存信息及報文在報文序列中的序列號,將報文中的數據存儲至數據緩存中,將首個報文的鏈路層信息存儲至鏈路層緩存中,在存儲數據的同時直接進行了重組,不需要通過處理器運行軟件對報文進行重組,降低了軟件的開銷,不會影響處理器的處理效率。
[0036]本發明實施例還提供一種通信設備,包括如上所述的高速輸入接口電路以及處理器、存儲器;
[0037]所述存儲器包括驅動軟件;
[0038]所述處理器,用于從所述存儲器讀取所述驅動軟件并在所述驅動軟件的驅動下從所述高速輸入接口電路接收重組后的所述數據包。
[0039]第三方面,本發明提供一種利用高速輸出接口電路進行數據傳輸的數據傳輸方法,所述高速輸出接口電路設置在高速輸入輸出接口中,所述高速輸出接口電路應用于快速輸入輸出傳輸的協議棧,所述協議棧包括鏈路層、邏輯層、傳輸層以及物理層;所述高速輸出接口電路包括:鏈路層電路、封裝模塊以及高速輸出接口,所述方法包括:
[0040]通過所述鏈路層電路獲取位于高速輸出接口電路之外的處理器配置的待發送數據包,對所述待發送的數據包中的部分數據進行鏈路層封裝,得到包括所述數據以及鏈路層信息的報文,并將所述報文發送至封裝模塊,所述鏈路層信息包括所述數據包對應的報文總數、所述報文在報文序列中的序列號、所述報文對應的數據包的標識;
[0041]通過所述封裝模塊接收所述鏈路層電路發送的所述報