一種多核之間的高速數(shù)據(jù)傳輸?shù)姆椒?br>
【專利摘要】本發(fā)明提出了一種多核之間的高速數(shù)據(jù)傳輸?shù)姆椒āJ紫仍趦?nèi)核之間開(kāi)辟一段固定大小的共享內(nèi)存,并將該共享內(nèi)存設(shè)計(jì)為環(huán)形緩沖區(qū)的形式,初始化CPPI,之后發(fā)送方內(nèi)核有數(shù)據(jù)要發(fā)送,判斷CPPI中是否有空閑的緩沖區(qū),最后CPPI中有空閑的緩沖區(qū),接收方內(nèi)核從CPPI中取出CPPE指針,并直接對(duì)數(shù)據(jù)進(jìn)行處理,完成數(shù)據(jù)傳輸。本發(fā)明能夠減少數(shù)據(jù)拷貝及避免共享內(nèi)存的數(shù)據(jù)讀寫(xiě)沖突問(wèn)題,在高數(shù)據(jù)率情況下提高數(shù)據(jù)的傳輸效率及傳輸穩(wěn)定性。
【專利說(shuō)明】—種多核之間的高速數(shù)據(jù)傳輸?shù)姆椒?br>
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及無(wú)線通信領(lǐng)域,特別涉及一種多核之間的高速數(shù)據(jù)傳輸?shù)姆椒ā?br>
【背景技術(shù)】
[0002]在VOIP終端設(shè)備設(shè)計(jì)中經(jīng)常會(huì)遇到有大量的網(wǎng)絡(luò)音頻數(shù)據(jù)需要實(shí)時(shí)傳輸,這種數(shù)據(jù)傳輸要求一般都比較高,如穩(wěn)定性、可靠性、低延時(shí)性都會(huì)比較苛刻。特別是在通信終端設(shè)備的CPU主頻不高的情況下,這些音頻數(shù)據(jù)在多核之間要求高速穩(wěn)定的傳輸和存儲(chǔ),這無(wú)疑是一個(gè)困難的問(wèn)題。
【發(fā)明內(nèi)容】
[0003]有鑒于此,本發(fā)明的目的是提供一種多核之間的高速數(shù)據(jù)傳輸?shù)姆椒?,能夠提升系統(tǒng)的和速率性能。
[0004]為了實(shí)現(xiàn)上述目的,本發(fā)明提出一種多核之間的高速數(shù)據(jù)傳輸?shù)姆椒ǎ浒? 步驟10,內(nèi)核之間開(kāi)辟一段固定大小的共享內(nèi)存,并將該共享內(nèi)存設(shè)計(jì)為環(huán)形緩沖區(qū)
的形式,初始化 CPPI,所述 CPPI 為 Communications Port Programing Interface,即通訊端口程序處理接口;
步驟20,發(fā)送方內(nèi)核有數(shù)據(jù)要發(fā)送,判斷CPPI中是否有空閑的緩沖區(qū),所述CPPE為Communications Port Programing Element,即通訊端口程序處理兀素;
步驟30,若CPPI中有空閑的緩沖區(qū),接收方內(nèi)核從CPPI中取出CPPE指針,并直接對(duì)數(shù)據(jù)進(jìn)行處理,完成數(shù)據(jù)傳輸。
[0005]進(jìn)一步地,步驟20具體包括:
步驟21,發(fā)送方內(nèi)核有數(shù)據(jù)要發(fā)送;
步驟22,發(fā)送方內(nèi)核檢查CPPI的寫(xiě)索引值進(jìn)行自增或自減之后的值是否等于讀索引
值;
步驟23,若不相等,發(fā)送方內(nèi)核轉(zhuǎn)載數(shù)據(jù)到CPPE并將CPPI的寫(xiě)索引值采用與所述步驟22 一樣的方式進(jìn)行自增或自減,并通知接收方內(nèi)核接收數(shù)據(jù),否則返回步驟21。
[0006]進(jìn)一步地,步驟30進(jìn)一步具體為:
步驟31,接收方內(nèi)核接收通知,說(shuō)明CPPI中有空閑的緩沖區(qū),接收方內(nèi)核從CPPI中取出CPPE的指針,并直接對(duì)數(shù)據(jù)進(jìn)行處理,最后將讀索引值采用與所述步驟22—樣的方式進(jìn)行自增或自減,數(shù)據(jù)傳輸結(jié)束。
[0007]進(jìn)一步地,所述初始化CPPI包括設(shè)置寫(xiě)索引值和讀索引值的范圍及初始值。
[0008]進(jìn)一步地,所述CPPE用于存放數(shù)據(jù)的地址指針及BUF的控制處理元素。
[0009]本發(fā)明提出了一種多核之間的高速數(shù)據(jù)傳輸?shù)姆椒?,本發(fā)明避免了使用數(shù)據(jù)拷貝及共享內(nèi)存的鎖保護(hù)等效率不高的舊方法,同時(shí)也避免了數(shù)據(jù)流在多核之間的速度不均衡的情況發(fā)生。能夠減少數(shù)據(jù)拷貝及避免共享內(nèi)存的數(shù)據(jù)讀寫(xiě)沖突問(wèn)題,在高數(shù)據(jù)率情況下提高數(shù)據(jù)的傳輸效率及傳輸穩(wěn)定性?!緦@綀D】
【附圖說(shuō)明】
[0010]圖1是本發(fā)明的多核間數(shù)據(jù)傳輸流程圖。
[0011]圖2是本發(fā)明的多核間數(shù)據(jù)傳輸流程圖。
[0012]圖3是本發(fā)明的多核間數(shù)據(jù)傳輸?shù)氖疽鈭D。
【具體實(shí)施方式】
[0013]下面是對(duì)本發(fā)明一種多核之間的高速數(shù)據(jù)傳輸?shù)姆椒ㄟM(jìn)行具體說(shuō)明。
[0014]如圖1-3所示,本發(fā)明一種多核之間的高速數(shù)據(jù)傳輸?shù)姆椒ǖ囊环N實(shí)施例方式包括:
步驟10,內(nèi)核之間開(kāi)辟一段固定大小的的共享內(nèi)存,并將該共享內(nèi)存設(shè)計(jì)為環(huán)形緩沖區(qū)的形式,這種設(shè)計(jì)方式可以使內(nèi)存得到充分的使用,同時(shí)又不占用過(guò)多的內(nèi)存,避免造成資源的浪費(fèi)。并初始化 CPPI,所述 CPPI 為 Communications Port Programing Interface,即通訊端口程序處理接口;
步驟20,發(fā)送方內(nèi)核有數(shù)據(jù)要發(fā)送,判斷CPPI中是否有空閑的緩沖區(qū);
步驟30,若CPPI中有空閑的緩沖區(qū),接收方內(nèi)核從CPPI中取出CPPE指針,所述CPPE為Communications Port Programing Element,即通訊端口程序處理元素,并直接對(duì)數(shù)據(jù)進(jìn)行處理,完成數(shù)據(jù)傳輸;
其中,步驟20具體包括:
步驟21,發(fā)送方內(nèi)核有數(shù)據(jù)要發(fā)送;
步驟22,發(fā)送方內(nèi)核檢查CPPI的寫(xiě)索引值進(jìn)行自增或自減之后的值是否等于讀索引
值;
步驟23,若不相等,發(fā)送方內(nèi)核轉(zhuǎn)載數(shù)據(jù)到CPPE并將CPPI的寫(xiě)索引值自增或自減,并通知接收方內(nèi)核接收數(shù)據(jù),否則返回步驟21 ;
其中,步驟30進(jìn)一步具體為:
步驟31,接收方內(nèi)核接收通知,說(shuō)明CPPI中有空閑的緩沖區(qū),接收方內(nèi)核從CPPI中取出CPPE的指針,并直接對(duì)數(shù)據(jù)進(jìn)行處理,最后將讀索引值做與寫(xiě)索引值相同的改變,數(shù)據(jù)傳輸結(jié)束。
[0015]CPPI在初始化時(shí)會(huì)設(shè)置寫(xiě)索引值和讀索引值的范圍,例如最大值設(shè)置為100,最小值設(shè)置為O。在使用時(shí),用一次,寫(xiě)索引值和讀索引值就加“I”一次。當(dāng)用到最大值100后就自動(dòng)回歸到最小值O開(kāi)始使用,如此循環(huán)使用。采用CPPE接口方式,可以跨平臺(tái)使用。
[0016]例如:將這兩個(gè)數(shù)據(jù)成員分別命名為write_index和read_index。索引值的范圍設(shè)計(jì)為O—100。
[0017]當(dāng)CPPI在初始化時(shí),會(huì)將write_index和read_index的值分別設(shè)置為O。此時(shí)write_index與read_index的值相等,表示沒(méi)有數(shù)據(jù)要接收,系統(tǒng)處于空閑狀態(tài)。
[0018]當(dāng)發(fā)送方內(nèi)核要發(fā)送數(shù)據(jù)時(shí),將writejndex的值加1,因?yàn)槭枪蚕韮?nèi)存,所以接收方內(nèi)核的線程會(huì)偵測(cè)到write_index與read_index不相等了,即write_index = I ,read_index = O,說(shuō)明有數(shù)據(jù)要接收了。接收方內(nèi)核會(huì)根據(jù)read_index值取出共享內(nèi)存中相對(duì)應(yīng)的數(shù)據(jù)(也就是內(nèi)存區(qū)塊O的數(shù)據(jù)),然后將read_index的值加I。這時(shí)write_index與read_index的值又相等了,即write_index = I , read_index = 1,系統(tǒng)又處于空閑狀態(tài)。完成了一次數(shù)據(jù)傳輸。
[0019]如果發(fā)送方內(nèi)核發(fā)送數(shù)據(jù)太快了,而接收方內(nèi)核接收數(shù)據(jù)比較慢,那么write_index的值可能為100 了,而read_index的值才90,這時(shí)write_index的值自動(dòng)回歸到O,并將舊數(shù)據(jù)(即內(nèi)存區(qū)塊O的數(shù)據(jù))覆蓋了。因?yàn)閞eacLindex的值已經(jīng)為90,說(shuō)明接收方內(nèi)核在接收內(nèi)存區(qū)塊90的數(shù)據(jù),而內(nèi)存區(qū)塊O的數(shù)據(jù)早已接收完成,所以覆蓋內(nèi)存區(qū)塊O的數(shù)據(jù)也就不會(huì)有影響了。最終實(shí)現(xiàn)了循環(huán)使用內(nèi)存的目的。
[0020]與現(xiàn)有的技術(shù)相比較,本發(fā)明提出了一種多核之間的高速數(shù)據(jù)傳輸?shù)姆椒?,本發(fā)明避免了使用數(shù)據(jù)拷貝及共享內(nèi)存的鎖保護(hù)等效率不高的舊方法,同時(shí)也避免了數(shù)據(jù)流在多核之間的速度不均衡的情況發(fā)生。能夠減少數(shù)據(jù)拷貝及避免共享內(nèi)存的數(shù)據(jù)讀寫(xiě)沖突問(wèn)題,在高數(shù)據(jù)率情況下提高數(shù)據(jù)的傳輸效率及傳輸穩(wěn)定性。
[0021]以上所述僅是本發(fā)明的優(yōu)選實(shí)施方式,應(yīng)當(dāng)指出,對(duì)于本【技術(shù)領(lǐng)域】的普通技術(shù)人員來(lái)說(shuō),在不脫離本發(fā)明原理的前提下,還可以作出若干改進(jìn),這些改進(jìn)也應(yīng)視為本發(fā)明的保護(hù)范圍。
【權(quán)利要求】
1.一種多核之間的高速數(shù)據(jù)傳輸?shù)姆椒?,其特征在于,包? 步驟10,內(nèi)核之間開(kāi)辟一段固定大小的共享內(nèi)存,并將該共享內(nèi)存設(shè)計(jì)為環(huán)形緩沖區(qū)的形式,初始化CPPI ; 步驟20,發(fā)送方內(nèi)核有數(shù)據(jù)要發(fā)送,判斷CPPI中是否有空閑的緩沖區(qū); 步驟30,若CPPI中有空閑的緩沖區(qū),接收方內(nèi)核從CPPI中取出CPPE指針,并直接對(duì)數(shù)據(jù)進(jìn)行處理,完成數(shù)據(jù)傳輸。
2.如權(quán)利要求1所述的一種多核之間的高速數(shù)據(jù)傳輸?shù)姆椒ǎ涮卣魇?步驟20具體包括: 步驟21,發(fā)送方內(nèi)核有數(shù)據(jù)要發(fā)送; 步驟22,發(fā)送方內(nèi)核檢查CPPI的寫(xiě)索引值進(jìn)行自增或自減之后的值是否等于讀索引值; 步驟23,若不相等,發(fā)送方內(nèi)核轉(zhuǎn)載數(shù)據(jù)到CPPE并將CPPI的寫(xiě)索引值采用與所述步驟22 一樣的方式進(jìn)行自增或自減,并通知接收方內(nèi)核接收數(shù)據(jù),否則返回步驟21。
3.如權(quán)利要求1或2所述的一種多核之間的高速數(shù)據(jù)傳輸?shù)姆椒?,其特征?步驟30進(jìn)一步具體為: 步驟31,接收方內(nèi)核接收通知,說(shuō)明CPPI中有空閑的緩沖區(qū),接收方內(nèi)核從CPPI中取出CPPE的指針,并直接對(duì)數(shù)據(jù)進(jìn)行處理,最后將讀索引值采用與所述步驟22—樣的方式進(jìn)行自增或自減,數(shù)據(jù)傳輸結(jié)束。
4.如權(quán)利要求1所述的一種多核之間的高速數(shù)據(jù)傳輸?shù)姆椒?,其特征?所述初始化CPPI包括設(shè)置寫(xiě)索引值和讀索引值的范圍及初始值。
5.如權(quán)利要求1所述的一種多核之間的高速數(shù)據(jù)傳輸?shù)姆椒?,其特征?所述CPPE用于存放數(shù)據(jù)的地址指針及BUF的控制處理元素。
【文檔編號(hào)】G06F15/167GK103559166SQ201310555626
【公開(kāi)日】2014年2月5日 申請(qǐng)日期:2013年11月11日 優(yōu)先權(quán)日:2013年11月11日
【發(fā)明者】馮萬(wàn)健 申請(qǐng)人:廈門(mén)億聯(lián)網(wǎng)絡(luò)技術(shù)股份有限公司