專利名稱:一種串行Rapid IO鏈路數(shù)據(jù)傳輸?shù)姆椒把b置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及通信技術(shù)領(lǐng)域,尤其涉及一種串行RapidIO鏈路數(shù)據(jù)傳輸?shù)姆?法及裝置。
背景技術(shù):
Rapid IO是近年來發(fā)展迅速的一種新型的高速數(shù)據(jù)互聯(lián)總線。串行Rapid IO( Serial Rapid IO, sRIO)由于使用更少的連線就可以達(dá)到IOG的數(shù)據(jù)傳輸率, 目前正被廣泛使用于通信基礎(chǔ)設(shè)施的芯片間、板間高速互聯(lián)。
而sRIO鏈路數(shù)據(jù)傳輸是點(diǎn)到點(diǎn)的數(shù)據(jù)傳輸,存在一點(diǎn)對(duì)多點(diǎn)或者多點(diǎn)對(duì) 一點(diǎn)的并發(fā)傳輸,不能將數(shù)據(jù)傳輸中通常使用的循環(huán)緩沖區(qū),或者單一的乒乓 緩沖區(qū)來實(shí)現(xiàn)對(duì)所有鏈路接收數(shù)據(jù)的緩沖,否者可能造成數(shù)據(jù)的覆蓋。因此, 每一個(gè)點(diǎn)到點(diǎn)的數(shù)據(jù)傳輸鏈路都需要接收端處理器以寫(write)的方式預(yù)先分 配該處理器的接收緩沖區(qū),或者發(fā)送端處理器以讀(read)的方式預(yù)先分配發(fā) 送緩沖區(qū),上述數(shù)據(jù)傳輸方法稱為預(yù)先分配專用緩沖區(qū)的數(shù)據(jù)傳輸方法。
現(xiàn)針對(duì)預(yù)先分配接收緩沖區(qū)以write的方式為例,描述現(xiàn)有技術(shù)中數(shù)據(jù)傳 輸機(jī)制,如圖1所示,數(shù)據(jù)傳輸?shù)奶幚磉^程如圖2所示,包括
步驟201、處理器A分配發(fā)送緩沖區(qū),可以采用專用的緩沖區(qū),也可以釆 用malloc的內(nèi)存池;
步驟202、處理器A將待發(fā)送數(shù)據(jù)填寫到發(fā)送緩沖區(qū)中,數(shù)據(jù)填寫完畢后調(diào) 用數(shù)據(jù)發(fā)送函數(shù);
步驟203、數(shù)據(jù)發(fā)送函數(shù)啟動(dòng)sRIO的DMA傳輸通過sRIO的物理鏈路將數(shù)據(jù) 搬移到處理器B預(yù)留的接收緩沖區(qū)中;
步驟204、數(shù)據(jù)傳輸完成后處理器A向處理器B發(fā)送門鈴(doorbell)中斷,通知處理器B數(shù)據(jù)傳輸完成。
以上是現(xiàn)有技術(shù)sRIO鏈路中數(shù)據(jù)傳輸?shù)倪^程,將以上系統(tǒng)進(jìn)行擴(kuò)展,當(dāng)再
添加一個(gè)處理器,并且各處理器之間都有數(shù)據(jù)傳輸鏈路設(shè)計(jì),這樣每個(gè)處理器 都需要增加一個(gè)對(duì)端處理器的發(fā)送緩沖區(qū),或者在對(duì)端處理器上增加一個(gè)接收
緩沖區(qū)。當(dāng)N個(gè)器件組成的sRIO網(wǎng)絡(luò),如果每兩個(gè)器件之間都可能存在鏈路, 這樣每個(gè)處理器都需要預(yù)留N-1個(gè)接收緩沖區(qū)或者發(fā)送緩沖區(qū)。
可見采用現(xiàn)有技術(shù),緩沖區(qū)數(shù)量太多,造成內(nèi)存使用的浪費(fèi)。因?yàn)槊恳粭l 鏈路的接收或者發(fā)送緩沖區(qū)的大小都預(yù)留為最大可能接收到的負(fù)荷的大小,開 辟了大量的內(nèi)存作為預(yù)留的緩沖區(qū)。而在數(shù)據(jù)傳輸?shù)臅r(shí)候,從統(tǒng)計(jì)上來看,所 有鏈路同時(shí)使用緩沖區(qū)的概率很小。因此,大部分的預(yù)留緩沖區(qū)在大多數(shù)的情 況下都處于閑置狀態(tài),造成內(nèi)存使用的浪費(fèi)。
同時(shí),緩沖區(qū)地址映射表的存在要求各個(gè)處理器對(duì)緩沖區(qū)的規(guī)劃關(guān)聯(lián)性較 高。因?yàn)榘l(fā)送端在發(fā)送數(shù)據(jù)的時(shí)候需要提前知道對(duì)端處理器緩沖區(qū)的地址,所 以每一個(gè)處理器都會(huì)保存一張表格記錄與其通信的處理器的緩沖區(qū)地址,稱為
緩沖區(qū)地址映射表。由于各個(gè)處理器上分布著不同的程序,對(duì)所有的處理器的 緩沖區(qū)需要一個(gè)總的規(guī)劃,來描述每一條鏈路在各個(gè)處理器上分布情況,通常 在相應(yīng)的接口文檔中約定,當(dāng) 一個(gè)處理器的內(nèi)存規(guī)劃改變的時(shí)候就要求所有其 他的處理器修改對(duì)應(yīng)該處理器的緩沖區(qū)地址映射表。
并且,緩沖區(qū)的調(diào)整維護(hù)困難。 一旦緩沖區(qū)的規(guī)劃確定,如果需要重新調(diào) 整內(nèi)存規(guī)劃,則所有的處理器都需要修改對(duì)應(yīng)于該處理器的內(nèi)存映射表,可謂 牽一發(fā)而動(dòng)全身。內(nèi)存分布的調(diào)整操作復(fù)雜。
而且,發(fā)送端或者接收端的負(fù)載分配分配方式固定。對(duì)于預(yù)先分配緩沖區(qū) 的數(shù)據(jù)傳輸方法,可以通過預(yù)先分配發(fā)送緩沖區(qū),對(duì)端處理器通過讀的方式將 數(shù)據(jù)傳輸?shù)呢?fù)荷配置到接收端,或者由接收端預(yù)先分配接收緩沖區(qū),發(fā)送端通 過write的方式發(fā)送數(shù)據(jù)實(shí)現(xiàn)將數(shù)據(jù)傳輸負(fù)載配置到發(fā)送端。但是一旦緩沖區(qū)分 配規(guī)劃完成后,負(fù)載分配的方式就固定了。
發(fā)明內(nèi)容
本發(fā)明實(shí)施例提供一種sRIO鏈路數(shù)據(jù)傳輸?shù)姆椒把b置,用以解決現(xiàn)有 技術(shù)sRIO鏈路中每個(gè)處理器分配的接收緩沖區(qū)數(shù)量多,占用內(nèi)存大影響數(shù)據(jù) 傳輸速度的問題,以及處理器中緩沖區(qū)設(shè)計(jì)關(guān)聯(lián)性高,維護(hù)困難的問題,同時(shí) 可解決現(xiàn)有技術(shù)中緩沖區(qū)規(guī)劃完成后,負(fù)荷分配單一的問題。
本發(fā)明實(shí)施例提供的一種sRIO鏈路數(shù)據(jù)傳輸?shù)姆椒?,包?br>
接收端接收到發(fā)送端發(fā)送的數(shù)據(jù)傳輸請(qǐng)求,所述數(shù)據(jù)傳輸請(qǐng)求中包括數(shù)據(jù) 傳輸類型信息,根據(jù)所述數(shù)據(jù)傳輸類型信息分配接收緩沖區(qū),采用所述接收緩 沖區(qū)接收所述發(fā)送端發(fā)送的數(shù)據(jù),
所述數(shù)據(jù)傳輸類型任意確定為寫類型,或讀類型。
所述數(shù)據(jù)傳輸請(qǐng)求以信件的形式發(fā)送。
所述數(shù)據(jù)傳輸請(qǐng)求還包括
數(shù)據(jù)傳輸?shù)哪康牡刂泛蛡鬏數(shù)臄?shù)據(jù)長度信息。
所述數(shù)據(jù)傳輸請(qǐng)求還包括
數(shù)據(jù)傳輸?shù)脑雌骷畔?、源地址信息、目的器件信息和信件的屬性信息?當(dāng)所述數(shù)據(jù)傳輸類型為讀類型時(shí),根據(jù)所述數(shù)據(jù)傳輸類型信息分配接收緩 沖區(qū),包括
接收端取出未確定數(shù)據(jù)傳輸?shù)哪康牡刂返臄?shù)據(jù)傳輸請(qǐng)求,根據(jù)所述傳輸?shù)?數(shù)據(jù)長度信息分配接收緩沖區(qū)。
釆用所述接收緩沖區(qū)接收所述發(fā)送端發(fā)送的數(shù)據(jù),包括
所述接收端將所述接收緩沖區(qū)的首地址填寫到所述數(shù)據(jù)傳輸請(qǐng)求的數(shù)據(jù) 傳輸?shù)哪康牡刂纷侄?,?dāng)接收端的數(shù)據(jù)傳輸控制進(jìn)程處理所述數(shù)據(jù)傳輸請(qǐng)求 時(shí),采用所述數(shù)據(jù)傳輸請(qǐng)求的數(shù)據(jù)傳輸?shù)哪康牡刂纷侄螌?duì)應(yīng)的接收緩沖區(qū),接 收所述發(fā)送端發(fā)送的數(shù)據(jù)。
采用所述接收緩沖區(qū)接收所述發(fā)送端發(fā)送的數(shù)據(jù)后,還包括接收端釋放所述接收數(shù)據(jù)緩沖區(qū)。
當(dāng)所述數(shù)據(jù)傳輸?shù)念愋蜑閷戭愋蜁r(shí),采用所述接收緩沖區(qū)接收發(fā)送端發(fā)送
的數(shù)據(jù)后,還包括
發(fā)送端釋放發(fā)送緩沖區(qū)。
本發(fā)明實(shí)施例提供的一種sRIO鏈路數(shù)據(jù)傳輸?shù)难b置,包括
緩沖區(qū)分配模塊,用于根據(jù)數(shù)據(jù)傳輸請(qǐng)求,所述數(shù)據(jù)傳輸請(qǐng)求中包括數(shù)據(jù) 傳輸類型信息,根據(jù)所述數(shù)據(jù)傳輸類型信息分配接收緩沖區(qū),其中,所述數(shù)據(jù) 傳輸類型任意確定為寫類型,或讀類型;
數(shù)據(jù)接收模塊,用于采用所述接收緩沖區(qū)進(jìn)行數(shù)據(jù)的接收。
所述裝置還包括
郵箱配置模塊,用于在接收端內(nèi)為發(fā)送端配置郵箱,接收發(fā)送端以信件形 式發(fā)送的數(shù)據(jù)傳輸請(qǐng)求。
所述緩沖區(qū)分配模塊包括
第一分配單元,用于分配數(shù)據(jù)傳輸類型為讀類型的數(shù)據(jù)傳^i貪求的接收緩沖區(qū); 第二分配單元,用于分配數(shù)據(jù)傳輸類型為寫類型的數(shù)據(jù)傳^it求的接jRI爰沖區(qū)。 所述第一分配單元包括
接收緩沖區(qū)配置單元,用于取出未確定數(shù)據(jù)傳輸?shù)哪康牡刂返臄?shù)據(jù)傳輸請(qǐng) 求,調(diào)用函數(shù),根據(jù)數(shù)據(jù)傳輸?shù)拈L度信息分配接收數(shù)據(jù)緩沖區(qū)。 所述第一分配單元還包括
傳輸請(qǐng)求配置單元,用于將所述接收數(shù)據(jù)緩沖區(qū)的首地址填寫到所述數(shù)據(jù) 傳輸請(qǐng)求的數(shù)據(jù)傳輸?shù)哪康牡刂纷侄巍?所述裝置還包括 釋放單元,用于釋放緩沖區(qū)。 所述釋放單元包括
第一釋放單元,用于釋放接收數(shù)據(jù)緩沖區(qū); 第二釋放單元,用于釋放發(fā)送緩沖區(qū)。本發(fā)明實(shí)施例在sRIO鏈路中,數(shù)據(jù)傳輸采用信件郵箱的傳輸機(jī)制,數(shù)據(jù)
傳輸?shù)念愋涂梢赃x擇,根據(jù)信件的記錄的基本信息進(jìn)行數(shù)據(jù)接收緩沖區(qū)的動(dòng)態(tài)
分配,并且在數(shù)據(jù)處理完成后釋放緩沖區(qū),因此釆用本發(fā)明提供的sRIO鏈路 數(shù)據(jù)傳輸?shù)姆椒梢越鉀Q設(shè)置的緩沖區(qū)多,影響數(shù)據(jù)傳輸速度的問題,以及簡 化使處理器中緩沖區(qū)設(shè)計(jì)、維護(hù)的問題,同時(shí)使負(fù)荷可以動(dòng)態(tài)分配。
圖1為現(xiàn)有技術(shù)中sRIO鏈路中緩沖區(qū)的結(jié)構(gòu)示意圖; 圖2為現(xiàn)有技術(shù)中sRIO鏈路中數(shù)據(jù)傳輸方法的流程圖; 圖3為本發(fā)明實(shí)施例中信件結(jié)構(gòu)示意圖; 圖4為本發(fā)明實(shí)施例中四級(jí)深度的郵箱結(jié)構(gòu)示意圖; 圖5為本發(fā)明實(shí)施例中信件和郵箱的使用示意圖; 圖6為本發(fā)明實(shí)施例中讀方式實(shí)現(xiàn)數(shù)據(jù)傳輸流程圖; 圖7為本發(fā)明實(shí)施例中寫方式實(shí)現(xiàn)數(shù)據(jù)傳輸流程圖; 圖8為本發(fā)明實(shí)施例sRIO鏈路數(shù)據(jù)傳輸裝置示意圖。
具體實(shí)施例方式
在本發(fā)明實(shí)施例中,數(shù)據(jù)傳輸?shù)念愋筒皇芴幚砥鲀?nèi)緩沖區(qū)配置的影響,當(dāng) 接收端接收到發(fā)送端發(fā)送的數(shù)據(jù)傳輸請(qǐng)求,其中,數(shù)據(jù)傳輸請(qǐng)求中包括數(shù)據(jù)傳 輸類型信息,根據(jù)數(shù)據(jù)傳輸類型信息分配接收緩沖區(qū),采用分配的接收緩沖區(qū) 接收發(fā)送端發(fā)送的數(shù)據(jù),并且,其中數(shù)據(jù)傳輸類型包括寫類型,或讀類型。
其中,發(fā)送端發(fā)送的數(shù)據(jù)傳輸請(qǐng)求,可以為記錄了數(shù)據(jù)傳輸基本信息的小 數(shù)據(jù)包,例如,記錄了數(shù)據(jù)傳輸基本信息的信件等。
當(dāng)數(shù)據(jù)傳輸請(qǐng)求以信件的形式進(jìn)行發(fā)送時(shí),發(fā)送端將數(shù)據(jù)傳輸請(qǐng)求發(fā)送到 接收端為上述發(fā)送端配置的郵箱內(nèi)。
本發(fā)明實(shí)施例中以數(shù)據(jù)傳輸請(qǐng)求為信件形式,對(duì)串行Rapid 10鏈路數(shù)據(jù)傳 輸?shù)姆椒ㄟM(jìn)行說明。其中,信件記錄的數(shù)據(jù)傳輸?shù)幕拘畔ǎ瑪?shù)據(jù)傳輸?shù)哪康牡刂泛蛡鬏?的數(shù)據(jù)長度信息。
并且,信件記錄的信息還包括,數(shù)據(jù)傳輸?shù)脑雌骷畔?、源地址信息、?br>
的器件信息和信件的屬性信息。
其中,信件的屬性信息包括,信件類型,和/或信件有效標(biāo)志等。
當(dāng)數(shù)據(jù)傳輸類型為讀類型時(shí),根據(jù)所述數(shù)據(jù)傳輸類型信息分配接收緩沖區(qū)
的過程包括,接收端取出未確定數(shù)據(jù)傳輸?shù)哪康牡刂返臄?shù)據(jù)傳輸請(qǐng)求,根據(jù)所
述傳輸?shù)臄?shù)據(jù)長度信息分配接收數(shù)據(jù)緩沖區(qū);
接收端采用上述接收緩沖區(qū)接收發(fā)送端發(fā)送的數(shù)據(jù)的過程包括,接收端將 上述接收數(shù)據(jù)緩沖區(qū)的首地址填寫到數(shù)據(jù)傳輸請(qǐng)求的數(shù)據(jù)傳輸?shù)哪康牡刂纷?段,當(dāng)接收端的數(shù)據(jù)傳輸控制進(jìn)程處理此數(shù)據(jù)傳輸請(qǐng)求時(shí),采用此數(shù)據(jù)傳輸請(qǐng) 求的數(shù)據(jù)傳輸?shù)哪康牡刂纷侄螌?duì)應(yīng)的接收緩沖區(qū),接收發(fā)送端發(fā)送的數(shù)據(jù)。
并且,上述接收端分配接收數(shù)據(jù)緩沖區(qū)的過程中,可以采用調(diào)用緩沖區(qū)分 配函數(shù)的形式進(jìn)行接收緩沖區(qū)的分配。
采用上述接收緩沖區(qū)接收發(fā)送端發(fā)送的數(shù)據(jù)后,還包括,接收端釋放上述 接收數(shù)據(jù)緩沖區(qū)。
當(dāng)數(shù)據(jù)傳輸?shù)念愋蜑閷戭愋蜁r(shí),采用所述接收緩沖區(qū)接收發(fā)送端發(fā)送的數(shù) 據(jù)后,還包括,發(fā)送端釋》文發(fā)送緩沖區(qū)。
在本發(fā)明實(shí)施例中提供的在sRIO鏈路中傳輸數(shù)據(jù)時(shí),對(duì)接收端處理器的 內(nèi)存空間的存儲(chǔ)器既可以進(jìn)行讀操作,又可以進(jìn)行寫操作。同時(shí),可以將發(fā)送 或者接收數(shù)據(jù)的負(fù)荷靈活配置到發(fā)送端處理器、或者接收端處理器。
在本發(fā)明實(shí)施例中引入了信件(LETTER)、郵箱(MAILBOX)和門鈴 (DOORBELL)等組合形成的數(shù)據(jù)傳輸機(jī)制。如圖3所示,為本發(fā)明實(shí)施例 提供的信件的結(jié)構(gòu)示意圖,對(duì)于每一個(gè)信件統(tǒng)一定義了以下^f各式,每個(gè)信件的 長度為8字節(jié),其中,本發(fā)明實(shí)施例提供的信件包括以下部分
信件301、源器件ID指發(fā)送端處理器的地址,進(jìn)程ID指操作系統(tǒng)中操作
9進(jìn)程的地址,在信件中可以釆用源器件ID或進(jìn)程ID兩者中的任意一個(gè),也可
以根據(jù)情況采用兩個(gè)地址的結(jié)合;
信件302、源地址指待傳輸數(shù)據(jù)在發(fā)送緩沖區(qū)中的首地址;
信件303、目的器件ID指接收端處理器的地址,進(jìn)程ID指操作系統(tǒng)中操
作進(jìn)程的地址,在信件中可以采用目的器件ID或進(jìn)程ID兩者中的任意一個(gè),
也可以根據(jù)情況采用兩個(gè)地址的結(jié)合;
信件304、目的地址指數(shù)據(jù)需要傳輸?shù)降膬?nèi)存的首地址;
信件305、傳輸類型指數(shù)據(jù)可以采用讀類型或?qū)戭愋瓦M(jìn)行傳輸,不受緩沖
區(qū)配置的影響;
信件306、傳輸?shù)臄?shù)據(jù)長度指待傳輸?shù)臄?shù)據(jù)長度,當(dāng)接收端接收到信件后, 可以根據(jù)此傳輸?shù)臄?shù)據(jù)長度信息合理分配接收緩沖區(qū)的大?。?br>
信件307、信件類型指此信件的類型,可以為mail類型,也可以為信息類
型;
信件308、信件有效標(biāo)志指此信件是否有效,當(dāng)信件沒有處理時(shí)此信件有 效,當(dāng)信件處理后可以將信件設(shè)置為無效,節(jié)約信件處理的時(shí)間。
當(dāng)然,在實(shí)現(xiàn)的過程中,也可以采用其他的配置方式,但是只要包含在本 發(fā)明保護(hù)范圍內(nèi)的所有信件的實(shí)現(xiàn)方式,都應(yīng)該在本發(fā)明的保護(hù)范圍內(nèi)。
郵箱是用于存放信件的,對(duì)于sRIO網(wǎng)絡(luò)內(nèi)的所有處理器,對(duì)于可能存在 的數(shù)據(jù)鏈路的所有處理器內(nèi)給對(duì)端處理器分配一個(gè)郵箱,為了管理方便可以將 每個(gè)處理器上的郵箱的結(jié)構(gòu)和其在內(nèi)存中的位置設(shè)置相同,同時(shí),郵箱的容量 可以根據(jù)鏈路通信的忙閑程度靈活配置,例如可以采用郵箱的深度為4,如圖 4所示為深度四級(jí)的郵箱的結(jié)構(gòu)示意圖。其中,每個(gè)郵箱的編號(hào)與門鈴中斷對(duì) 應(yīng),以便處理器查收郵件。由于采用郵箱的方法在處理器內(nèi)為可能存在數(shù)據(jù)鏈 路的處理器分配內(nèi)存,而郵箱占用的內(nèi)存很小,所以采用此方法不會(huì)占用很多 內(nèi)存。
在本發(fā)明實(shí)施例中采用的門鈴中斷是sRIO協(xié)議中描述用于發(fā)送中斷信息的信息包,在本發(fā)明實(shí)施例提供的sRIO鏈路數(shù)據(jù)傳輸?shù)姆椒ㄖ?,?dāng)發(fā)送端的 處理器給接收端處理器發(fā)送完信件后,發(fā)送端處理器給^t妻收端處理器發(fā)送一個(gè) 門鈴中斷信號(hào),通知接收端的處理器去檢查此門鈴對(duì)應(yīng)的郵箱,以便接收端能 夠及時(shí)處理發(fā)送端發(fā)送的數(shù)據(jù)傳輸信件。
并且,在本發(fā)明實(shí)施例數(shù)據(jù)傳輸?shù)倪^程中,每個(gè)處理器都有一個(gè)數(shù)據(jù)傳輸 進(jìn)程和一個(gè)待傳輸隊(duì)列。待傳輸隊(duì)列是用于緩存待發(fā)送的信件的隊(duì)列,可以根 據(jù)需要設(shè)定緩存的最大信件數(shù)量;數(shù)據(jù)傳輸控制進(jìn)程通過不斷的檢查待傳輸隊(duì) 列,當(dāng)待傳輸隊(duì)列為非空,并且sRIO鏈路空閑,則發(fā)送數(shù)據(jù),否則等待sRIO 鏈路空閑后發(fā)送數(shù)據(jù),如圖5所示為數(shù)據(jù)的傳輸過程中信件和郵箱的使用示意 圖。
在圖5中表示了兩個(gè)處理器間信件的傳輸,其中,因?yàn)樵趦蓚€(gè)處理器間有 數(shù)據(jù)的傳輸,因此,在處理器A中為處理器B設(shè)置了郵箱,并且處理器B中 為處理器A設(shè)置了郵箱,方便信件的傳輸。當(dāng)處理器A中有數(shù)據(jù)請(qǐng)求傳輸時(shí), 處理器A將請(qǐng)求封裝成信件,插入處理器A中待傳輸隊(duì)列的隊(duì)伍尾部,當(dāng)數(shù) 據(jù)傳輸控制進(jìn)程輪詢到該信件的時(shí)候,則將信件發(fā)送到處理器B為處理器A 設(shè)置的郵箱中,同時(shí)處理器A發(fā)送門鈴中斷,通知處理器B檢查對(duì)應(yīng)的郵箱; 或者處理器A也可以直接將信件發(fā)送到處理器B為處理器A設(shè)置的郵箱中, 處理器A發(fā)送門鈴中斷,通知處理器B檢查對(duì)應(yīng)的郵箱,處理器B解析接收 的信件,按照信件配置完成后,將信件插入處理器B中待傳輸隊(duì)列尾部,等待 傳輸控制進(jìn)程輪詢到該信件時(shí),根據(jù)該信件進(jìn)行數(shù)據(jù)的傳輸。
并且,在信件的傳輸中可以任意配置信件傳輸類型,不受緩沖區(qū)規(guī)劃的影 響,當(dāng)信件設(shè)置的傳輸類型為讀方式時(shí),則接收端的處理器到發(fā)送端的處理器 中來讀取數(shù)據(jù),并且,在信件305中填寫數(shù)據(jù)傳輸類型為讀類型,例如可以用 nReadR或MTN—Read實(shí)現(xiàn),同時(shí),將待發(fā)送數(shù)據(jù)的首地址填寫到信件302中 源地址字段,并且設(shè)置信件304中目的地址字段為空;當(dāng)信件設(shè)置的傳輸類型 為寫方式時(shí),在信件305中填寫數(shù)據(jù)傳輸類型為寫類型,例如可以用nWrite_R,MTN—Write實(shí)現(xiàn),同時(shí),將待發(fā)送數(shù)據(jù)的首地址填寫到信件302中 原地址字段,并且設(shè)置信件304中目的地址地段為接收端預(yù)留的接收緩沖區(qū)的 首地址。
下面詳細(xì)介紹數(shù)據(jù)傳輸類型為讀類型時(shí),數(shù)據(jù)傳輸?shù)倪^程,如圖6所示, 具體包括以下幾個(gè)步驟
步驟601、發(fā)送端處理器A將填寫好的信件,發(fā)送到接收端處理器B中為 處理器A設(shè)置的郵箱中;
步驟602、發(fā)送端處理器A向接收端處理器B發(fā)送一個(gè)門鈴中斷,通知接 收端處理器B去檢查門鈴對(duì)應(yīng)的郵箱;
步驟603、接收端處理器B響應(yīng)此門鈴中斷,檢查郵箱,根據(jù)郵件的有效 標(biāo)志,取出有效的信件;
步驟604、接收端處理器B判斷信件的信件類型為mail類型,則接收端處 理器B調(diào)用malloc函數(shù)分配接收數(shù)據(jù)緩沖區(qū),在接收端處理器B中配置數(shù)據(jù) 接收緩沖區(qū),并且將接收數(shù)據(jù)緩沖區(qū)的首地址填寫到此信件的目的地址字段, 同時(shí)將此信件插入到接收端處理器B的待傳輸隊(duì)列中,等待接收端處理器B 的數(shù)據(jù)傳輸控制進(jìn)程的處理;
步驟605、當(dāng)接收端處理器B的數(shù)據(jù)傳輸控制進(jìn)程輪詢到此信件的時(shí)候, 則解析信件并啟動(dòng)sRIO傳輸直接記憶體存取(Direct Memory A ccess, DMA), 進(jìn)行數(shù)據(jù)的讀操作;
步驟606、接收端處理器B可以得知數(shù)據(jù)傳輸完成,對(duì)接收的數(shù)據(jù)進(jìn)行處 理,數(shù)據(jù)處理完成后,接收端處理器B調(diào)用free函數(shù)釋放malloc函數(shù)的內(nèi)存, 使其配置的數(shù)據(jù)接收緩沖區(qū)為下一次的數(shù)據(jù)傳輸使用。
在本發(fā)明實(shí)施例中采用malloc函數(shù)分配接收數(shù)據(jù)緩沖區(qū),在實(shí)際的實(shí)現(xiàn)過 程中可以采用其他的函數(shù)來實(shí)現(xiàn)此步驟,只要滿足本發(fā)明精神的在數(shù)據(jù)傳輸 中,采用函數(shù)分配接收緩沖區(qū)的配置方法都應(yīng)該在本發(fā)明的保護(hù)范圍內(nèi)。
以上是對(duì)于讀類型的信件的數(shù)據(jù)傳輸過程的處理,由于信件的類型可以任意配置,當(dāng)配置的信件的數(shù)據(jù)傳輸類型為寫類型時(shí),數(shù)據(jù)的傳輸過程包括以下
步驟,如圖7所示
步驟701 、發(fā)送端處理器A將信件插入到發(fā)送端的待傳輸隊(duì)列的隊(duì)列尾部, 等待發(fā)送端處理器的數(shù)據(jù)傳輸處理進(jìn)程的處理;
步驟702、當(dāng)發(fā)送端處理器A的數(shù)據(jù)傳輸控制進(jìn)程輪詢到此信件的時(shí)候, 則解析信件并啟動(dòng)sRIO傳輸DMA,進(jìn)行數(shù)據(jù)的寫操作;
步驟703、當(dāng)數(shù)據(jù)傳輸完成后,發(fā)送端可以發(fā)送一個(gè)消息類型的信件通知 接收端處理器,然后發(fā)送一個(gè)門鈴中斷給接收端處理器;
步驟704、接收端處理器響應(yīng)此門鈴中斷,檢查此門鈴對(duì)應(yīng)的郵箱,判斷 接收的信件如果為一個(gè)消息類型的信件,表明數(shù)據(jù)傳輸完成,解析信件并獲取 寫數(shù)據(jù)存放的地址;
步驟705、接收端處理器處理接收的數(shù)據(jù),數(shù)據(jù)處理完成后,接收端處理 器回復(fù)發(fā)送端一個(gè)消息類型的信件,通知發(fā)送端處理器釋》丈發(fā)送緩沖區(qū),以便 下一次數(shù)據(jù)傳輸使用。
在本發(fā)明實(shí)施例中接收端發(fā)送的一個(gè)消息類型的郵件,其實(shí)質(zhì)是為了通知 發(fā)送端釋放發(fā)送緩沖區(qū),所以在信件的配置上不需要嚴(yán)格按照其他信件的形式 配置,同時(shí),接收端也可以采用其他方式,例如中斷信息方式,通知發(fā)送端釋 放發(fā)送緩沖區(qū)。
以上是本發(fā)明較佳的實(shí)施例,sRIO鏈路IO模式下,使用一段較小的內(nèi)存 作為郵箱,將每一次的數(shù)據(jù)傳輸請(qǐng)求封裝為信件,通過信件來傳遞,DMA傳 輸使用的源目的地址和數(shù)據(jù)長度,大大降低了各個(gè)處理器內(nèi)存分配和緩沖區(qū)映 射的關(guān)聯(lián)性。
同時(shí),在數(shù)據(jù)傳輸中使用malloc函數(shù)為數(shù)據(jù)傳輸請(qǐng)求,按照信件中數(shù)據(jù)傳 輸?shù)拈L度分配接收緩沖區(qū),從而實(shí)現(xiàn)了零緩沖區(qū)設(shè)計(jì)。并且在每增加一條鏈路 時(shí)不需要重新規(guī)劃設(shè)計(jì)新的緩沖區(qū),使得采用本發(fā)明實(shí)施例提供的數(shù)據(jù)傳輸方 法有較好的可擴(kuò)展性和可移植性。并且,通過封裝sRIO數(shù)據(jù)傳輸請(qǐng)求為讀類型數(shù)據(jù)傳輸信件,或者寫類型
數(shù)據(jù)傳輸信件,將數(shù)據(jù)傳輸?shù)呢?fù)載靈活配置到發(fā)送端或者接收端,從而實(shí)現(xiàn)了 按照設(shè)計(jì)者的實(shí)際意圖將數(shù)據(jù)傳輸?shù)呢?fù)荷靈活配置的目的。
本發(fā)明實(shí)施例提供了一種sRIO鏈路數(shù)據(jù)傳輸?shù)难b置,如圖8所示,包括, 緩沖區(qū)分配模塊810和數(shù)據(jù)接收模塊820。其中,緩沖區(qū)分配模塊810,用于 根據(jù)數(shù)據(jù)傳輸請(qǐng)求,所述數(shù)據(jù)傳輸請(qǐng)求中包括數(shù)據(jù)傳輸類型信息,根據(jù)所述數(shù) 據(jù)傳輸類型信息分配接收緩沖區(qū),其中,所述數(shù)據(jù)傳輸類型包括寫類型,或讀 類型;數(shù)據(jù)接收模塊820,用于釆用所述接收緩沖區(qū)進(jìn)行數(shù)據(jù)的接收。
所述裝置還包括郵箱配置模塊800,用于在接收端內(nèi)為發(fā)送端配置郵箱, 接收發(fā)送端以信件形式發(fā)送的數(shù)據(jù)傳輸請(qǐng)求。
所述緩沖區(qū)分配模塊810包括,第一分配單元811和第二分配單元812。 其中,第一分配單元811,用于分配數(shù)據(jù)傳輸類型為讀類型的數(shù)據(jù)傳輸請(qǐng)求的 接收緩沖區(qū);第二分配單元812,用于分配數(shù)據(jù)傳輸類型為寫類型的數(shù)據(jù)傳輸 請(qǐng)求的接收緩沖區(qū)。
所述第一分配單元811包括,接收緩沖區(qū)配置單元813和傳輸請(qǐng)求配置單 元814,其中,接收緩沖區(qū)配置單元813,用于取出未確定數(shù)據(jù)傳輸?shù)哪康牡?址的數(shù)據(jù)傳輸請(qǐng)求,調(diào)用函數(shù),根據(jù)數(shù)據(jù)傳輸?shù)拈L度信息分配接收數(shù)據(jù)緩沖區(qū); 傳輸請(qǐng)求配置單元814,用于將所述接收數(shù)據(jù)緩沖區(qū)的首地址填寫到所述數(shù)據(jù) 傳輸請(qǐng)求的數(shù)據(jù)傳輸?shù)哪康牡刂纷侄巍?br>
所述裝置還包括釋;^文單元830,用于釋^L緩沖區(qū)。
所述釋放單元830包括,第一釋放單元831和第二釋放單元832。其中, 第一釋放單元831,用于釋放接收數(shù)據(jù)緩沖區(qū);第二釋放單元832,用于釋放 發(fā)送緩沖區(qū)。
本發(fā)明實(shí)施例在sRIO鏈路中,數(shù)據(jù)傳輸采用信件郵箱的傳輸機(jī)制,數(shù)據(jù) 傳輸?shù)念愋涂梢赃x擇,根據(jù)信件的記錄的基本信息進(jìn)行數(shù)據(jù)接收緩沖區(qū)的動(dòng)態(tài) 分配,并且在數(shù)據(jù)處理完成后釋放緩沖區(qū),因此采用本發(fā)明提供的sRIO鏈路數(shù)據(jù)傳輸?shù)姆椒梢越鉀Q設(shè)置的緩沖區(qū)多,影響數(shù)據(jù)傳輸速度的問題,以及簡 化使處理器中緩沖區(qū)設(shè)計(jì)、維護(hù)的問題,同時(shí)使負(fù)荷可以動(dòng)態(tài)分配。
明的精神和范圍。這樣,倘若本發(fā)明的這些修改和變型屬于本發(fā)明權(quán)利要求及 其等同技術(shù)的范圍之內(nèi),則本發(fā)明也意圖包含這些改動(dòng)和變型在內(nèi)。
權(quán)利要求
1、一種串行Rapid IO鏈路數(shù)據(jù)傳輸?shù)姆椒?,其特征在于,該方法包括以下步驟接收端接收到發(fā)送端發(fā)送的數(shù)據(jù)傳輸請(qǐng)求,所述數(shù)據(jù)傳輸請(qǐng)求中包括數(shù)據(jù)傳輸類型信息,根據(jù)所述數(shù)據(jù)傳輸類型信息分配接收緩沖區(qū),采用所述接收緩沖區(qū)接收所述發(fā)送端發(fā)送的數(shù)據(jù),所述數(shù)據(jù)傳輸類型信息包括寫類型,或讀類型。
2、 如權(quán)利要求1所述的方法,其特征在于,所述數(shù)據(jù)傳輸請(qǐng)求以信件的 形式發(fā)送。
3、 如權(quán)利要求2所述的方法,其特征在于,所述數(shù)據(jù)傳輸請(qǐng)求還包括 數(shù)據(jù)傳輸?shù)哪康牡刂泛蛡鬏數(shù)臄?shù)據(jù)長度信息。
4、 如權(quán)利要求3所述的方法,其特征在于,所述數(shù)據(jù)傳輸請(qǐng)求還包括 數(shù)據(jù)傳輸?shù)脑雌骷畔?、源地址信息、目的器件信息和信件的屬性信息?br>
5、 如權(quán)利要求3所述的方法,其特征在于,當(dāng)所述數(shù)據(jù)傳輸類型為讀類 型時(shí),根據(jù)所述數(shù)據(jù)傳輸類型信息分配接收緩沖區(qū),包括接收端取出未確定數(shù)據(jù)傳輸?shù)哪康牡刂返臄?shù)據(jù)傳輸請(qǐng)求,根據(jù)所述傳輸?shù)?數(shù)據(jù)長度信息分配接收緩沖區(qū)。
6、 如權(quán)利要求5所述的方法,其特征在于,采用所述接收緩沖區(qū)接收所 述發(fā)送端發(fā)送的數(shù)據(jù),包括所述接收端將所述接收緩沖區(qū)的首地址填寫到所述數(shù)據(jù)傳輸請(qǐng)求的數(shù)據(jù) 傳輸?shù)哪康牡刂纷侄?,?dāng)接收端的數(shù)據(jù)傳輸控制進(jìn)程處理所述數(shù)據(jù)傳輸請(qǐng)求 時(shí),采用所述數(shù)據(jù)傳輸請(qǐng)求的數(shù)據(jù)傳輸?shù)哪康牡刂纷侄螌?duì)應(yīng)的接收緩沖區(qū),接 收所述發(fā)送端發(fā)送的數(shù)據(jù)。
7、 如權(quán)利要求6所述的方法,其特征在于,采用所述接收緩沖區(qū)接收所 述發(fā)送端發(fā)送的數(shù)據(jù)后,還包括接收端釋放所述接收數(shù)據(jù)緩沖區(qū)。
8、 如權(quán)利要求1所述的方法,其特征在于,當(dāng)所述數(shù)據(jù)傳輸?shù)念愋蜑閷?類型時(shí),采用所述接收緩沖區(qū)接收發(fā)送端發(fā)送的數(shù)據(jù)后,還包括發(fā)送端釋放發(fā)送緩沖區(qū)。
9、 一種串行RapidIO鏈路數(shù)據(jù)傳輸?shù)难b置,其特征在于,該裝置包括 緩沖區(qū)分配模塊,用于根據(jù)數(shù)據(jù)傳輸請(qǐng)求,所述數(shù)據(jù)傳輸請(qǐng)求中包括數(shù)據(jù)傳輸類型信息,根據(jù)所述數(shù)據(jù)傳輸類型信息分配接收緩沖區(qū),其中,所述數(shù)據(jù) 傳輸類型信息包括寫類型,或讀類型;數(shù)據(jù)接收模塊,用于采用所述接收緩沖區(qū)進(jìn)行數(shù)據(jù)的接收。
10、 如權(quán)利要求9所述的裝置,其特征在于,所述裝置還包括 郵箱配置模塊,用于在接收端內(nèi)為發(fā)送端配置郵箱,接收發(fā)送端以信件形式發(fā)送的數(shù)據(jù)傳輸請(qǐng)求。
11、 如權(quán)利要求IO所述的裝置,其特征在于,所述緩沖區(qū)分配模塊包括 第一分配單元,用于分配數(shù)據(jù)傳輸類型為讀類型的數(shù)據(jù)傳IIH青求的接J^爰沖區(qū); 第二分配單元,用于分配數(shù)據(jù)傳輸類型為寫類型的數(shù)據(jù)傳llri貪求的接收緩沖區(qū)。
12、 如權(quán)利要求11所述的裝置,其特征在于,所述第一分配單元包括 接收緩沖區(qū)配置單元,用于取出未確定數(shù)據(jù)傳輸?shù)哪康牡刂返臄?shù)據(jù)傳輸請(qǐng)求,調(diào)用函數(shù),根據(jù)數(shù)據(jù)傳輸?shù)拈L度信息分配接收數(shù)據(jù)緩沖區(qū)。
13、 如權(quán)利要求11所述的裝置,其特征在于,所述第一分配單元還包括 傳輸請(qǐng)求配置單元,用于將所述接收數(shù)據(jù)緩沖區(qū)的首地址填寫到所述數(shù)據(jù)傳輸請(qǐng)求的數(shù)據(jù)傳輸?shù)哪康牡刂纷侄巍?br>
14、 如權(quán)利要求9所述的裝置,其特征在于,所述裝置還包括 釋放單元,用于釋放緩沖區(qū)。
15、 如權(quán)利要求14所述的裝置,其特征在于,所述釋放單元包括 第 一釋放單元,用于釋放接收數(shù)據(jù)緩沖區(qū);第二釋放單元,用于釋放發(fā)送緩沖區(qū)。
全文摘要
本發(fā)明公開了一種串行Rapid IO鏈路數(shù)據(jù)傳輸?shù)姆椒?,該方法包括,接收端接收到發(fā)送端發(fā)送的數(shù)據(jù)傳輸請(qǐng)求,所述數(shù)據(jù)傳輸請(qǐng)求中包括數(shù)據(jù)傳輸類型信息,根據(jù)所述數(shù)據(jù)傳輸類型分配接收緩沖區(qū),采用所述接收緩沖區(qū)接收發(fā)送端發(fā)送的數(shù)據(jù),所述數(shù)據(jù)傳輸類型包括寫類型,或讀類型。本發(fā)明還公開了一種串行快速IO鏈路數(shù)據(jù)傳輸?shù)难b置。本發(fā)明數(shù)據(jù)傳輸采用信件郵箱的傳輸機(jī)制,數(shù)據(jù)傳輸?shù)念愋涂梢赃x擇,根據(jù)信件的記錄的基本信息進(jìn)行數(shù)據(jù)接收緩沖區(qū)的動(dòng)態(tài)分配,并且在數(shù)據(jù)處理完成后釋放緩沖區(qū),因此采用本發(fā)明提供的sRIO鏈路數(shù)據(jù)傳輸?shù)姆椒梢蕴岣邤?shù)據(jù)傳輸速度的問題,以及使處理器中緩沖區(qū)設(shè)計(jì)、維護(hù)簡單,同時(shí)使負(fù)荷可以動(dòng)態(tài)分配。
文檔編號(hào)H04L12/40GK101562559SQ200810104098
公開日2009年10月21日 申請(qǐng)日期2008年4月15日 優(yōu)先權(quán)日2008年4月15日
發(fā)明者坤 李 申請(qǐng)人:大唐移動(dòng)通信設(shè)備有限公司