欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

一種基于隊列的數(shù)據(jù)傳輸方法、裝置及通信系統(tǒng)的制作方法

文檔序號:7805897閱讀:151來源:國知局
一種基于隊列的數(shù)據(jù)傳輸方法、裝置及通信系統(tǒng)的制作方法
【專利摘要】本發(fā)明公開了一種基于隊列的數(shù)據(jù)傳輸方法、裝置及通信系統(tǒng),屬于通信【技術(shù)領(lǐng)域】。所述方法包括:當?shù)谝魂犃形礉M時,將N個數(shù)據(jù)報文寫入共享存儲區(qū)中,N為正整數(shù)且N≥2,N個數(shù)據(jù)報文基于第一隊列傳輸,第一隊列為一個或多個隊列中的一個;更新共享存儲區(qū)中的第一隊列的寫指針,寫指針更新后的值等于寫指針更新前的值加N。本發(fā)明通過將N個數(shù)據(jù)報文寫入共享存儲區(qū)中,并更新共享存儲區(qū)中的第一隊列的寫指針,N為正整數(shù)且N≥2,寫指針更新后的值等于寫指針更新前的值加N,寫指針不需要跟隨數(shù)據(jù)的發(fā)送而發(fā)送,減少了寫指針的發(fā)送,提高了帶寬利用率,并且降低了由于傳輸帶寬受限造成數(shù)據(jù)丟棄情況的發(fā)生,提高了傳輸可靠性。
【專利說明】一種基于隊列的數(shù)據(jù)傳輸方法、裝置及通信系統(tǒng)

【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及通信【技術(shù)領(lǐng)域】,特別涉及一種基于隊列的數(shù)據(jù)傳輸方法、裝置及通信 系統(tǒng)。

【背景技術(shù)】
[0002] 基于隊列的數(shù)據(jù)傳輸是在兩個設(shè)備之間實現(xiàn)異步傳輸?shù)囊环N常用方法。
[0003] 以數(shù)據(jù)從第一設(shè)備傳輸?shù)降诙O(shè)備為例,現(xiàn)有的基于隊列的數(shù)據(jù)傳輸方法包括: 第一設(shè)備將待傳輸數(shù)據(jù)構(gòu)造為數(shù)據(jù)報文,并將數(shù)據(jù)報文寫入第一設(shè)備和第二設(shè)備的共享存 儲區(qū)中;第一設(shè)備構(gòu)造數(shù)據(jù)報文的H)(Packet Descriptor,報文描述符),將數(shù)據(jù)報文的 構(gòu)造為描述符報文,并將描述符報文寫入共享存儲區(qū)的隊列中,數(shù)據(jù)報文的ro包括數(shù)據(jù)報 文的存儲地址和長度等報文信息;第一設(shè)備將隊列的寫指針加1,將加1后的寫指針構(gòu)造為 寫指針報文,并將寫指針報文寫入共享存儲區(qū)中;第二設(shè)備根據(jù)寫指針報文,獲知有數(shù)據(jù)報 文寫入共享存儲區(qū)中;第二設(shè)備根據(jù)隊列的讀指針,從共享存儲區(qū)的隊列中讀取描述符報 文;第二設(shè)備根據(jù)描述符報文,從共享存儲區(qū)中讀取數(shù)據(jù)報文。至此,待傳輸數(shù)據(jù)從第一設(shè) 備傳輸?shù)降诙O(shè)備。
[0004] 在實現(xiàn)本發(fā)明的過程中,發(fā)明人發(fā)現(xiàn)現(xiàn)有技術(shù)至少存在以下問題:
[0005] 第一設(shè)備向第二設(shè)備傳輸數(shù)據(jù)時,第一設(shè)備需要依次在共享存儲區(qū)中寫入數(shù)據(jù)報 文、描述符報文和寫指針報文三個報文,其中只有數(shù)據(jù)報文包含的是待傳輸數(shù)據(jù),若需要 保證報文的有效傳輸速率(即傳輸包含待傳輸數(shù)據(jù)的報文的速率)為N pps (packet per second,報文數(shù)/秒),在需要傳輸描述符報文和寫指針報文的情況下,所需的傳輸帶寬至 少為3*N pps,也就是說,傳輸帶寬至少是有效傳輸速率的3倍,帶寬利用率較低。而且,在 傳輸帶寬受限的情況下,有可能造成數(shù)據(jù)的丟棄,傳輸可靠性較低。


【發(fā)明內(nèi)容】

[0006] 為了解決現(xiàn)有技術(shù)帶寬利用率低,而且在傳輸帶寬受限的情況下,傳輸可靠性較 低的問題,本發(fā)明實施例提供了一種基于隊列的數(shù)據(jù)傳輸方法、裝置及通信系統(tǒng)。所述技術(shù) 方案如下:
[0007] 第一方面,本發(fā)明實施例提供了一種基于隊列的數(shù)據(jù)傳輸方法,適用于第一設(shè)備 通過共享存儲區(qū)向第二設(shè)備傳輸數(shù)據(jù),所述共享存儲區(qū)中設(shè)有一個或多個隊列、以及與所 述隊列一一對應(yīng)的寫指針和讀指針的緩存區(qū),所述方法包括:
[0008] 當?shù)谝魂犃形礉M時,所述第一設(shè)備將N個數(shù)據(jù)報文寫入所述共享存儲區(qū)中,N為正 整數(shù)且N > 2,所述N個數(shù)據(jù)報文基于所述第一隊列傳輸,所述第一隊列為所述一個或多個 隊列中的一個;
[0009] 更新所述共享存儲區(qū)中的所述第一隊列的寫指針,所述寫指針更新后的值等于所 述寫指針更新前的值加 N。
[0010] 在本發(fā)明的第一種可能的實現(xiàn)方式中,所述方法還包括:
[0011] 在所述更新所述共享存儲區(qū)中的所述第一隊列的寫指針之前,將所述N個數(shù)據(jù)報 文的存儲地址和長度構(gòu)造為一個描述符報文,并將所述描述符報文寫入所述第一隊列。
[0012] 在本發(fā)明的第二種可能的實現(xiàn)方式中,所述方法還包括:
[0013] 在每將一個所述數(shù)據(jù)報文寫入所述共享存儲區(qū)中之后,將所述一個數(shù)據(jù)報文的存 儲地址和長度構(gòu)造為一個描述符報文,并將所述描述符報文寫入所述第一隊列。
[0014] 在本發(fā)明的第三種可能的實現(xiàn)方式中,所述第一設(shè)備將N個數(shù)據(jù)報文寫入所述共 享存儲區(qū)中,包括 :
[0015] 所述第一設(shè)備將所述N個數(shù)據(jù)報文連續(xù)寫入所述第一隊列。
[0016] 在本發(fā)明的第四種可能的實現(xiàn)方式中,所述更新所述共享存儲區(qū)中的所述第一隊 列的與指針,包括:
[0017] 當所述將N個數(shù)據(jù)報文寫入所述共享存儲區(qū)后的預(yù)定時間內(nèi)沒有待發(fā)送的數(shù)據(jù) 報文時,或者,當所述N個數(shù)據(jù)報文后的數(shù)據(jù)報文基于非第一隊列傳輸時,更新所述共享存 儲區(qū)中的所述第一隊列的寫指針。
[0018] 在本發(fā)明的第五種可能的實現(xiàn)方式中,所述更新所述共享存儲區(qū)中的所述第一隊 列的與指針,包括:
[0019] 當N達到設(shè)定值時,或者,當所述N個數(shù)據(jù)報文寫入所述共享存儲區(qū)的時間達到設(shè) 定時間時,更新所述共享存儲區(qū)中的所述第一隊列的寫指針。
[0020] 第二方面,本發(fā)明實施例提供了一種基于隊列的數(shù)據(jù)傳輸方法,適用于第二設(shè)備 通過共享存儲區(qū)接收第一設(shè)備傳輸?shù)臄?shù)據(jù),所述共享存儲區(qū)中設(shè)有一個或多個隊列、以及 與所述隊列一一對應(yīng)的寫指針和讀指針的緩存區(qū),所述方法包括:
[0021] 所述第二設(shè)備從所述共享存儲區(qū)中獲取更新后的第一隊列的寫指針,所述第一隊 列為所述一個或多個隊列中的一個,所述寫指針更新后的值等于所述寫指針更新前的值加 N,N為正整數(shù)且N彡2 ;
[0022] 根據(jù)更新后的所述寫指針和所述第一隊列的讀指針,依次從所述共享存儲區(qū)中讀 取N個數(shù)據(jù)報文,N個所述數(shù)據(jù)報文基于所述第一隊列傳輸;
[0023] 更新所述共享存儲區(qū)中的所述讀指針,所述讀指針更新后的值等于所述讀指針更 新前的值加 N。
[0024] 第三方面,本發(fā)明實施例提供了一種基于隊列的數(shù)據(jù)傳輸裝置,適用于第一設(shè)備 通過共享存儲區(qū)向第二設(shè)備傳輸數(shù)據(jù),所述共享存儲區(qū)中設(shè)有一個或多個隊列、以及與所 述隊列一一對應(yīng)的寫指針和讀指針的緩存區(qū),所述裝置包括:
[0025] 數(shù)據(jù)寫入模塊,用于當?shù)谝魂犃形礉M時,將N個數(shù)據(jù)報文寫入所述共享存儲區(qū)中, N為正整數(shù)且N > 2,所述N個數(shù)據(jù)報文基于所述第一隊列傳輸,所述第一隊列為所述一個 或多個隊列中的一個;
[0026] 寫指針更新模塊,用于更新所述共享存儲區(qū)中的所述第一隊列的寫指針,所述寫 指針更新后的值等于所述寫指針更新前的值加 N。
[0027] 在本發(fā)明的第一種可能的實現(xiàn)方式中,所述裝置還包括:
[0028] 描述符寫入模塊,用于在所述更新所述共享存儲區(qū)中的所述第一隊列的寫指針之 前,將所述N個數(shù)據(jù)報文的存儲地址和長度構(gòu)造為一個描述符報文,并將所述描述符報文 寫入所述第一隊列。
[0029] 在本發(fā)明的第二種可能的實現(xiàn)方式中,所述裝置還包括:
[0030] 描述符寫入模塊,用于在每將一個所述數(shù)據(jù)報文寫入所述共享存儲區(qū)中之后,將 所述一個數(shù)據(jù)報文的存儲地址和長度構(gòu)造為一個描述符報文,并將所述描述符報文寫入所 述第一隊列。
[0031] 在本發(fā)明的第三種可能的實現(xiàn)方式中,所述數(shù)據(jù)寫入模塊用于,
[0032] 將所述N個數(shù)據(jù)報文連續(xù)寫入所述第一隊列。
[0033] 在本發(fā)明的第四種可能的實現(xiàn)方式中,所述寫指針更新模塊用于,
[0034] 當所述將N個數(shù)據(jù)報文寫入所述共享存儲區(qū)后的預(yù)定時間內(nèi)沒有待發(fā)送的數(shù)據(jù) 報文時,或者,當所述N個數(shù)據(jù)報文后的數(shù)據(jù)報文基于非第一隊列傳輸時,更新所述共享存 儲區(qū)中的所述第一隊列的寫指針。
[0035] 在本發(fā)明的第五種可能的實現(xiàn)方式中,所述寫指針更新模塊用于,
[0036] 當N達到設(shè)定值時,或者,當所述N個數(shù)據(jù)報文寫入所述共享存儲區(qū)的時間達到設(shè) 定時間時,更新所述共享存儲區(qū)中的所述第一隊列的寫指針。
[0037] 第四方面,本發(fā)明實施例提供了一種基于隊列的數(shù)據(jù)傳輸裝置,適用于第二設(shè)備 通過共享存儲區(qū)接收第一設(shè)備傳輸?shù)臄?shù)據(jù),所述共享存儲區(qū)中設(shè)有一個或多個隊列、以及 與所述隊列一一對應(yīng)的寫指針和讀指針的緩存區(qū),所述裝置包括:
[0038] 寫指針獲取模塊,用于從所述共享存儲區(qū)中獲取更新后的第一隊列的寫指針,所 述第一隊列為所述一個或多個隊列中的一個,所述寫指針更新后的值等于所述寫指針更新 前的值加 N,N為正整數(shù)且N彡2 ;
[0039] 數(shù)據(jù)讀取模塊,用于根據(jù)更新后的所述寫指針和所述第一隊列的讀指針,依次從 所述共享存儲區(qū)中讀取N個數(shù)據(jù)報文,N個所述數(shù)據(jù)報文基于所述第一隊列傳輸;
[0040] 讀指針更新模塊,用于更新所述共享存儲區(qū)中的所述讀指針,所述讀指針更新后 的值等于所述讀指針更新前的值加 N。
[0041] 第五方面,本發(fā)明實施例提供了一種通信系統(tǒng),所述系統(tǒng)包括第一設(shè)備、第二設(shè) 備、以及共享存儲區(qū),所述第一設(shè)備和所述第二設(shè)備分別與所述共享存儲區(qū)連接,所述第一 設(shè)備上設(shè)置有如第三方面提供的基于隊列的數(shù)據(jù)傳輸裝置,所述第二設(shè)備上設(shè)置有如第四 方面提供的基于隊列的數(shù)據(jù)傳輸裝置。
[0042] 本發(fā)明實施例提供的技術(shù)方案帶來的有益效果是:
[0043] 通過將N個數(shù)據(jù)報文寫入共享存儲區(qū)中,并更新共享存儲區(qū)中的第一隊列的寫指 針,N為正整數(shù)且N > 2,N個數(shù)據(jù)報文基于第一隊列傳輸,寫指針更新后的值等于寫指針更 新前的值加 N,寫指針不需要跟隨數(shù)據(jù)的發(fā)送而發(fā)送,減少了寫指針的發(fā)送,提高了帶寬利 用率,并且降低了由于傳輸帶寬受限造成數(shù)據(jù)丟棄情況的發(fā)生,提高了傳輸可靠性。

【專利附圖】

【附圖說明】
[0044] 為了更清楚地說明本發(fā)明實施例中的技術(shù)方案,下面將對實施例描述中所需要使 用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實施例,對于 本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他 的附圖。
[0045] 圖1是本發(fā)明實施例提供的基于隊列的數(shù)據(jù)傳輸方法的應(yīng)用場景圖;
[0046] 圖2是本發(fā)明實施例一提供的一種基于隊列的數(shù)據(jù)傳輸方法的流程圖;
[0047] 圖3是本發(fā)明實施例二提供的一種基于隊列的數(shù)據(jù)傳輸方法的流程圖;
[0048] 圖4是本發(fā)明實施例三提供的一種基于隊列的數(shù)據(jù)傳輸方法的流程圖;
[0049] 圖5是本發(fā)明實施例三提供的第一設(shè)備發(fā)送報文的示意圖;
[0050] 圖6是本發(fā)明實施例四提供的一種基于隊列的數(shù)據(jù)傳輸方法的流程圖;
[0051] 圖7是本發(fā)明實施例四提供的第一設(shè)備發(fā)送報文的示意圖;
[0052] 圖8是本發(fā)明實施例五提供的一種基于隊列的數(shù)據(jù)傳輸方法的流程圖;
[0053] 圖9是本發(fā)明實施例五提供的第一設(shè)備發(fā)送報文的示意圖;
[0054] 圖10是本發(fā)明實施例六提供的一種基于隊列的數(shù)據(jù)傳輸裝置的結(jié)構(gòu)示意圖;
[0055] 圖11a是本發(fā)明實施例七提供的一種基于隊列的數(shù)據(jù)傳輸裝置的結(jié)構(gòu)示意圖;
[0056] 圖lib是本發(fā)明實施例七提供的另一種基于隊列的數(shù)據(jù)傳輸裝置的結(jié)構(gòu)示意圖;
[0057] 圖12是本發(fā)明實施例八提供的一種基于隊列的數(shù)據(jù)傳輸裝置的硬件結(jié)構(gòu)圖;
[0058] 圖13是本發(fā)明實施例九提供的一種基于隊列的數(shù)據(jù)傳輸裝置的結(jié)構(gòu)示意圖;
[0059] 圖14a是本發(fā)明實施例十提供的一種基于隊列的數(shù)據(jù)傳輸裝置的結(jié)構(gòu)示意圖;
[0060] 圖14b是本發(fā)明實施例十提供的另一種基于隊列的數(shù)據(jù)傳輸裝置的結(jié)構(gòu)示意圖;
[0061] 圖15是本發(fā)明實施例十一提供的一種基于隊列的數(shù)據(jù)傳輸裝置的硬件結(jié)構(gòu)圖;
[0062] 圖16是本發(fā)明實施例十二提供的一種通信系統(tǒng)的結(jié)構(gòu)示意圖。

【具體實施方式】
[0063] 為使本發(fā)明的目的、技術(shù)方案和優(yōu)點更加清楚,下面將結(jié)合附圖對本發(fā)明實施方 式作進一步地詳細描述。
[0064] 下面先結(jié)合圖1簡單介紹一下本發(fā)明提供的基于隊列的數(shù)據(jù)傳輸方法的應(yīng)用場 景,該方法適用于具有共享存儲區(qū)的兩個設(shè)備。共享存儲區(qū)可以獨立于兩個設(shè)備,也可以 外掛在兩個設(shè)備中的任意一個上,還可以是兩個設(shè)備中的任意一個的一部分。兩個設(shè)備 可以均為 CPU(Central Processing Unit,中央處理器)、FPGA(Field Programmable Gate Array,現(xiàn)場可編程門陣列)、NP (Network Processor,網(wǎng)絡(luò)處理器)、DSP (Digital Signal Processor,數(shù)字信號處理器)、CPLD (Complex Programmable Logic Device,復(fù)雜可編程邏 輯器件)或者 ASIC (Application Specific Integrated Circuit,專用集成電路),也可以 為CPU、FPGA、NP、DSP、CPLD、ASIC中的任意兩種的組合。共享存儲區(qū)可以為RAM (Random Access Memory,隨機存取存儲器)、DDR (Double Data Rate,雙倍速率同步動態(tài)隨機存儲 器)、SSRAM(Synchronous Static Random Access Memory,同步靜態(tài)隨機存取存儲器)、 RLDRAM(Reduce Latency Dynamic Random Access Memory 縮短讀潛伏時間的動態(tài)隨機存取 器)、QDR (Quad Data Rate Static Random Access Memory,四倍數(shù)據(jù)速率靜態(tài)隨機存取存儲 器)、SSD (Solid State Disk,固態(tài)硬盤)或者 flash (閃存)。
[0065] 如圖1所示,共享存儲區(qū)3獨立于兩個設(shè)備(第一設(shè)備1和第二設(shè)備2)設(shè)置,用 于實現(xiàn)兩個設(shè)備之間的異步傳輸。兩個設(shè)備分別與共享存儲區(qū)3連接,當?shù)谝辉O(shè)備1向第 二設(shè)備2傳輸數(shù)據(jù)時,第一設(shè)備1先將數(shù)據(jù)寫入到共享存儲區(qū)3中,等到第二設(shè)備2處于空 閑狀態(tài)時,第二設(shè)備2再從共享存儲區(qū)3中讀取數(shù)據(jù),從而完成數(shù)據(jù)從第一設(shè)備1到第二設(shè) 備2的傳輸。與第一設(shè)備1直接將數(shù)據(jù)傳輸給第二設(shè)備2的同步傳輸方式相比,異步傳輸 方式不要求第二設(shè)備2在第一設(shè)備1發(fā)送數(shù)據(jù)的同時對數(shù)據(jù)進行接收,這樣可以避免由于 第二設(shè)備2當時處于忙碌狀態(tài)而造成數(shù)據(jù)丟失、傳輸失敗,因此數(shù)據(jù)的傳輸可靠性較高。 [0066] 共享存儲區(qū)3中設(shè)置有一個或多個隊列。第一設(shè)備1可以采用共享存儲區(qū)3中的 一個或多個隊列向第二設(shè)備2傳輸數(shù)據(jù),當?shù)谝辉O(shè)備1采用多個隊列向第二設(shè)備2傳輸數(shù) 據(jù)時,多個隊列可以是按照傳輸數(shù)據(jù)的優(yōu)先級劃分的,不同優(yōu)先級的數(shù)據(jù)基于不同的隊列 傳輸。第一設(shè)備1通過共享存儲區(qū)3傳輸數(shù)據(jù)到第二設(shè)備2時,可以直接將數(shù)據(jù)寫入隊列 中,也可以將數(shù)據(jù)寫入共享存儲區(qū)的任意位置,并將表示數(shù)據(jù)存儲位置和長度的信息寫入 隊列中。
[0067] 需要說明的是,圖1僅為本發(fā)明提供的基于隊列的數(shù)據(jù)傳輸方法的應(yīng)用場景的示 意圖,本發(fā)明并不限制于此。
[0068] 實施例一
[0069] 本發(fā)明實施例提供了一種基于隊列的數(shù)據(jù)傳輸方法,適用于第一設(shè)備通過共享存 儲區(qū)向第二設(shè)備傳輸數(shù)據(jù),共享存儲區(qū)可以獨立于第一設(shè)備和第二設(shè)備,也可以屬于第一 設(shè)備或第二設(shè)備,共享存儲區(qū)中設(shè)有一個或多個隊列、以及與隊列一一對應(yīng)的寫指針和讀 指針的緩存區(qū),該方法的執(zhí)行主體為第一設(shè)備,參見圖2,該方法包括:
[0070] 步驟101 :當?shù)谝魂犃形礉M時,將N個數(shù)據(jù)報文寫入共享存儲區(qū)中,N為正整數(shù)且 N彡2。
[0071] 在本實施例中,N個數(shù)據(jù)報文基于第一隊列傳輸,第一隊列為一個或多個隊列中的 一個。
[0072] 步驟102 :更新共享存儲區(qū)中的第一隊列的寫指針,寫指針更新后的值等于寫指 針更新前的值加 N。
[0073] 在本實施例的一種實現(xiàn)方式中,在步驟101之后,步驟102之前,該方法還包括步 驟:在更新共享存儲區(qū)中的第一隊列的寫指針之前,將N個數(shù)據(jù)報文的存儲地址和長度構(gòu) 造為一個描述符報文,并將描述符報文寫入第一隊列(詳見實施例三)。
[0074] 在本實施例的另一種實現(xiàn)方式中,在步驟101之后,步驟102之前,該方法還包括 步驟:在每將一個數(shù)據(jù)報文寫入共享存儲區(qū)中之后,將一個數(shù)據(jù)報文的存儲地址和長度構(gòu) 造為一個描述符報文,并將描述符報文寫入第一隊列(詳見實施例四)。
[0075] 在本實施例的又一種實現(xiàn)方式中,該步驟101包括:將N個數(shù)據(jù)報文連續(xù)寫入第一 隊列(詳見實施例五)。
[0076] 本發(fā)明實施例通過將N個數(shù)據(jù)報文寫入共享存儲區(qū)中,并更新共享存儲區(qū)中的第 一隊列的寫指針,N為正整數(shù)且N > 2,N個數(shù)據(jù)報文基于第一隊列傳輸,寫指針更新后的值 等于寫指針更新前的值加 N,寫指針不需要跟隨數(shù)據(jù)的發(fā)送而發(fā)送,減少了寫指針的發(fā)送, 提高了帶寬利用率,并且降低了由于傳輸帶寬受限造成數(shù)據(jù)丟棄情況的發(fā)生,提高了傳輸 可靠性。
[0077] 實施例二
[0078] 本發(fā)明實施例提供了一種基于隊列的數(shù)據(jù)傳輸方法,適用于第二設(shè)備通過共享存 儲區(qū)接收第一設(shè)備傳輸?shù)臄?shù)據(jù),共享存儲區(qū)可以獨立于第一設(shè)備和第二設(shè)備設(shè)置,也可以 屬于第一設(shè)備或第二設(shè)備,共享存儲區(qū)中設(shè)有一個或多個隊列、以及與隊列一一對應(yīng)的寫 指針和讀指針的緩存區(qū),該方法的執(zhí)行主體為第二設(shè)備,參見圖3,該方法包括:
[0079] 步驟201 :從共享存儲區(qū)中獲取更新后的第一隊列的寫指針。
[0080] 在本實施例中,第一隊列為一個或多個隊列中的一個,寫指針更新后的值等于寫 指針更新前的值加 N,N為正整數(shù)且N彡2。
[0081] 步驟202 :根據(jù)更新后的寫指針和第一隊列的讀指針,依次從共享存儲區(qū)中讀取N 個數(shù)據(jù)報文。
[0082] 在本實施例中,N個數(shù)據(jù)報文基于第一隊列傳輸。
[0083] 步驟203 :更新共享存儲區(qū)中的讀指針,讀指針更新后的值等于讀指針更新前的 值加 N。
[0084] 本發(fā)明實施例通過從共享存儲區(qū)中獲取更新后的第一隊列的寫指針,并根據(jù)更新 后的寫指針和第一隊列的讀指針,依次從共享存儲區(qū)中讀取N個數(shù)據(jù)報文,N個數(shù)據(jù)報文基 于第一隊列傳輸,第一隊列為一個或多個隊列中的一個,寫指針更新后的值等于寫指針更 新前的值加 N,N為正整數(shù)且N3 2,因此寫指針不是跟隨數(shù)據(jù)的發(fā)送而發(fā)送的,減少了寫指 針的發(fā)送,提高了帶寬利用率,并且降低了由于傳輸帶寬受限造成數(shù)據(jù)丟棄情況的發(fā)生,提 高了傳輸可靠性。另外,通過更新共享存儲區(qū)中的讀指針,讀指針更新后的值等于讀指針更 新前的值加 N,也減少了讀指針的發(fā)送,進一步提高了帶寬利用率和傳輸可靠性。
[0085] 實施例三
[0086] 本發(fā)明實施例提供了一種基于隊列的數(shù)據(jù)傳輸方法,在本實施例中,在更新共享 存儲區(qū)中的第一隊列的寫指針之前,將N個數(shù)據(jù)報文的存儲地址和長度構(gòu)造為一個描述符 報文,并將描述符報文寫入第一隊列。參見圖4,該方法包括:
[0087] 步驟300 :第一設(shè)備判斷第一隊列是否未滿。
[0088] 在本實施例中,第一隊列為一個隊列或多個隊列中的一個。
[0089] 可選地,當?shù)谝魂犃袨檠h(huán)隊列時,該步驟300可以包括:
[0090] 第一設(shè)備獲取第一隊列的讀指針;
[0091] 當?shù)谝魂犃械膶懼羔樦赶虻膯卧南乱粋€單元為第一隊列的讀指針指向的單元 時,判定第一隊列已滿;
[0092] 當?shù)谝魂犃械膶懼羔樦赶虻膯挝坏南乱粋€單位不是第一隊列的讀指針指向的單 兀時,判定第一隊列未滿。
[0093] 可以理解地,隊列是由若干大小相等的單元構(gòu)成。
[0094] 可選地,當?shù)谝魂犃袨轫樞蜿犃袝r,該步驟300可以包括:
[0095] 當?shù)谝魂犃械膶懼羔樀扔诘谝魂犃械拇笮r,判定第一隊列已滿;
[0096] 當?shù)谝魂犃械膶懼羔樞∮诘谝魂犃械拇笮r,判定第一隊列未滿。
[0097] 需要說明的是,隊列的讀指針和寫指針實質(zhì)上是一個具體的數(shù)值,代表其指向的 單元相對于隊列基地址指向的單元的偏移量。
[0098] 可以理解地,當?shù)谝魂犃形礉M時,數(shù)據(jù)報文才能通過第一隊列從第一設(shè)備傳輸?shù)?第二設(shè)備。
[0099] 當?shù)谝魂犃幸褲M時,第一設(shè)備可以將數(shù)據(jù)報文緩存在第一設(shè)備中,等到第一隊列 未滿時,再將數(shù)據(jù)報文通過第一隊列傳輸?shù)降诙O(shè)備,也可以將待傳輸數(shù)據(jù)丟棄,以免耽誤 該數(shù)據(jù)報文后面的數(shù)據(jù)報文的傳輸。
[0100] 步驟301 :當?shù)谝魂犃形礉M時,第一設(shè)備將N個數(shù)據(jù)報文寫入共享存儲區(qū)中,N為正 整數(shù)且N彡2。
[0101] 在本實施例中,數(shù)據(jù)報文可以寫入共享存儲區(qū)中非隊列的任意位置。
[0102] 可以理解地,在執(zhí)行步驟301時,每將一個數(shù)據(jù)報文寫入共享存儲區(qū)中之前,都會 執(zhí)行一次步驟300,直到將N個數(shù)據(jù)報文都寫入共享存儲區(qū)中。
[0103] 在本實施例中,N個數(shù)據(jù)報文基于第一隊列傳輸。
[0104] 步驟302 :第一設(shè)備將N個數(shù)據(jù)報文的存儲地址和長度構(gòu)造為一個描述符報文,并 將描述符報文寫入第一隊列。
[0105] 在本實施例的一種實現(xiàn)方式中,該步驟302可以包括:
[0106] 在每將一個數(shù)據(jù)報文寫入共享存儲區(qū)之后,第一設(shè)備將該數(shù)據(jù)報文的存儲地址和 長度構(gòu)造為該數(shù)據(jù)報文的ro,并將該數(shù)據(jù)報文的ro緩存在第一設(shè)備中;
[0107] 第一設(shè)備將N個數(shù)據(jù)報文的ro構(gòu)造為一個描述符報文,并將描述符報文寫入第一 隊列。
[0108] 在本實施例中,數(shù)據(jù)報文的ro包括但不限于數(shù)據(jù)報文的存儲地址和長度。
[0109] 在具體實現(xiàn)中,可以在第一設(shè)備的緩存區(qū)中設(shè)置固定大小的區(qū)域存儲數(shù)據(jù)報文的 PD,如數(shù)據(jù)報文的ro的長度均為32bytes (字節(jié)),第一設(shè)備最多緩存一個隊列的16個數(shù)據(jù) 報文的ro,第一設(shè)備和第二設(shè)備之間傳輸數(shù)據(jù)共使用256個隊列,則在第一設(shè)備的緩存區(qū) 中設(shè)置大小為256*16*32 = 131702bytes = 128Kbytes的區(qū)域存儲數(shù)據(jù)報文的H)。
[0110] 可以理解地,為數(shù)據(jù)報文構(gòu)造 ro,可以避免對數(shù)據(jù)存儲在共享存儲區(qū)的大小限制, 或者,為了實現(xiàn)大小統(tǒng)一進行無效數(shù)填充而造成的空間浪費。
[0111] 步驟303 :第一設(shè)備更新共享存儲區(qū)中的第一隊列的寫指針,寫指針更新后的值 等于寫指針更新前的值加 N。
[0112] 在本實施例的一種實現(xiàn)方式中,該步驟303可以包括:
[0113] 在每將一個數(shù)據(jù)報文寫入共享存儲區(qū)之后,第一設(shè)備更新緩存在第一設(shè)備中的第 一隊列的寫指針,寫指針更新后的值等于寫指針更新前的值加1 ;
[0114] 在緩存在第一設(shè)備中的第一隊列的寫指針更新N次之后,第一設(shè)備將緩存在第一 設(shè)備中的第一隊列的寫指針構(gòu)造為寫指針報文,并將寫指針報文寫入共享存儲區(qū)中。
[0115] 在具體實現(xiàn)中,可以在第一設(shè)備的緩存區(qū)中設(shè)置固定大小的區(qū)域存儲第一隊列的 寫指針,如第一隊列的寫指針的長度固定為32bits (比特),則在第一設(shè)備的緩存區(qū)中設(shè)置 大小為32bits (即4bytes)的區(qū)域存儲第一隊列的寫指針。
[0116] 構(gòu)造寫指針時,還是以第一隊列的寫指針的長度為32bits為例,第一設(shè)備將第一 隊列的寫指針構(gòu)造為1個32bits (即4bytes)的寫指針報文。
[0117] 在本實施例的另一種實現(xiàn)方式中,該步驟303可以包括:
[0118] 在每將一個數(shù)據(jù)報文寫入共享存儲區(qū)之后,第一設(shè)備將第一隊列對應(yīng)的計數(shù)器加 1 ;
[0119] 在將第一隊列對應(yīng)的計數(shù)器加了 N次之后,第一設(shè)備更新共享存儲區(qū)中的第一隊 列的寫指針,寫指針更新后的值等于寫指針更新前的值加上第一隊列對應(yīng)的計數(shù)器加了N 次后的值。
[0120] 可以理解地,在該種實現(xiàn)方式中,在每次更新共享存儲區(qū)中的第一隊列的寫指針 之后,第一設(shè)備都會將第一隊列對應(yīng)的計數(shù)器清零。
[0121] 在本實施例中,關(guān)于步驟302和步驟303執(zhí)行的條件可以為以下的任一種:
[0122] 第一種,N達到設(shè)定值;
[0123] 第二種,N個數(shù)據(jù)報文寫入共享存儲區(qū)的時間達到設(shè)定時間。
[0124] 對于第一種條件,設(shè)定值可以由第一設(shè)備的緩存區(qū)中設(shè)置的存儲數(shù)據(jù)報文的ro 的區(qū)域的大小決定。
[0125] 在實際應(yīng)用中,可以根據(jù)緩存區(qū)中存儲數(shù)據(jù)報文的ro的區(qū)域剩余空間的大小判 斷N是否達到設(shè)定值。具體地,當緩存區(qū)中存儲數(shù)據(jù)報文的ro的區(qū)域沒有剩余空間時,n達 到設(shè)定值。
[0126] 對于第二種條件,設(shè)定時間可以根據(jù)對數(shù)據(jù)傳輸?shù)膶崟r性要求確定。對數(shù)據(jù)傳輸 的實時性要求越高,設(shè)定時間越短,如10US (微秒)、64us或128US,防止數(shù)據(jù)報文長時間得 不到調(diào)度。
[0127] 在實際應(yīng)用中,當更新共享存儲區(qū)中的第一隊列的寫指針之前第一次將數(shù)據(jù)報文 寫入共享存儲區(qū)時,開始進行計時,因此可以根據(jù)所計時間,得到當前時刻與更新共享存儲 區(qū)中的第一隊列的寫指針之前第一次將數(shù)據(jù)報文寫入共享存儲區(qū)的時刻之間的時間,進而 進行N個數(shù)據(jù)報文寫入共享存儲區(qū)的時間是否達到設(shè)定時間的判斷。
[0128] 同樣地,在更新共享存儲區(qū)中的第一隊列的寫指針之后,可以將所計時間清零。當 上一次更新共享存儲區(qū)中的第一隊列的寫指針后第一次將數(shù)據(jù)報文寫入共享存儲區(qū)時,重 新開始進行計時,得到當前時刻與上一次更新共享存儲區(qū)中的第一隊列的寫指針后第一次 將數(shù)據(jù)報文寫入共享存儲區(qū)的時刻之間的時間,進而進行N個數(shù)據(jù)報文寫入共享存儲區(qū)的 時間是否達到設(shè)定時間的判斷。
[0129] 在具體實現(xiàn)中,以設(shè)定個數(shù)為16,設(shè)定時間為64us為例,當所計時間小于64us,且 緩存區(qū)中存儲數(shù)據(jù)報文的ro的區(qū)域沒有剩余空間時,第一設(shè)備將緩存在第一設(shè)備的緩存 區(qū)中的16個數(shù)據(jù)報文的構(gòu)造為1個512bytes (16*32bytes)的描述符報文,并將描述符 報文寫入第一隊列中;當所計時間達到64us,且緩存區(qū)中存儲數(shù)據(jù)報文的ro的區(qū)域只存儲 有3個數(shù)據(jù)報文的ro時,第一設(shè)備將緩存在第一設(shè)備的緩存區(qū)中的3個數(shù)據(jù)報文的ro構(gòu) 造為1個96bytes(3*32bytes)的描述符報文,并將描述符報文寫入第一隊列中。
[0130] 需要說明的是,在執(zhí)行步驟302之后,該方法還包括步驟:將緩存在第一設(shè)備中的 數(shù)據(jù)報文的ro全部刪除。如果第一設(shè)備的緩存區(qū)中緩存有第一隊列的寫指針,則該寫指針 保持不變。
[0131] 需要說明的是,在本實施例中,步驟303僅在執(zhí)行步驟302之后執(zhí)行,每執(zhí)行一次 步驟302,隨后執(zhí)行一次步驟303,以確保第二設(shè)備在獲取到更新后的寫指針時,描述符報 文已經(jīng)寫入第一隊列中。
[0132] 圖5為本實施例第一設(shè)備發(fā)送報文(即將報文寫入共享存儲區(qū)中)的示意圖,如 圖5所示,第一設(shè)備首先發(fā)送若干個數(shù)據(jù)報文,當滿足設(shè)定條件時,依次發(fā)送一個描述符報 文、一個寫指針報文。
[0133] 步驟304 :第二設(shè)備從共享存儲區(qū)中獲取更新后的第一隊列的寫指針。
[0134] 在實際應(yīng)用中,第二設(shè)備可以每隔固定時間從第一設(shè)備和第二設(shè)備的共享存儲區(qū) 中獲取寫指針,也可以在獲知第一設(shè)備和第二設(shè)備的共享存儲區(qū)中的寫指針進行了更新之 后,從第一設(shè)備和第二設(shè)備的共享存儲區(qū)中獲取寫指針。第二設(shè)備獲取寫指針的方式可以 是主動發(fā)送請求進行獲取,也可以是被動接收共享存儲區(qū)發(fā)送的報文,本發(fā)明對此均不作 限制。
[0135] 步驟305 :第二設(shè)備根據(jù)更新后的寫指針和第一隊列的讀指針,依次從共享存儲 區(qū)中讀取N個數(shù)據(jù)報文。
[0136] 在本實施例的一種實現(xiàn)方式中,該步驟305可以包括:
[0137] 第二設(shè)備將第一隊列的寫指針與第一隊列的讀指針進行比較,確定共享存儲區(qū)中 第二設(shè)備未讀取的數(shù)據(jù)報文的數(shù)量;
[0138] 第二設(shè)備根據(jù)第一隊列的讀指針,從共享存儲區(qū)中依次讀取第二設(shè)備未讀取的數(shù) 據(jù)報文。
[0139] 可以理解地,將第一隊列的寫指針與第一隊列的讀指針相減,即可確定共享存儲 區(qū)中第二設(shè)備未讀取的數(shù)據(jù)報文的數(shù)量。
[0140] 可選地,第二設(shè)備根據(jù)第一隊列的讀指針,從共享存儲區(qū)中依次讀取第二設(shè)備未 讀取的數(shù)據(jù)報文,可以包括:
[0141] 第二設(shè)備根據(jù)第一隊列的讀指針和第二設(shè)備未讀取的數(shù)據(jù)報文的數(shù)量,從第一隊 列中依次讀取第二設(shè)備未讀取的數(shù)據(jù)報文的ro;
[0142] 在每讀取一次第二設(shè)備未讀取的數(shù)據(jù)報文的ro之后,第二設(shè)備根據(jù)該數(shù)據(jù)報文 的ro,從共享存儲區(qū)中讀取該數(shù)據(jù)報文。
[0143] 在具體實現(xiàn)中,第二設(shè)備先根據(jù)第二設(shè)備未讀取的數(shù)據(jù)報文的數(shù)量,知道一共需 要讀取的空間大小。接著根據(jù)第一隊列的基地址和讀指針,即可獲得第二設(shè)備未讀取的數(shù) 據(jù)報文的ro的存儲地址。再根據(jù)第二設(shè)備未讀取的數(shù)據(jù)報文的ro的存儲地址,依次從隊 列中讀取數(shù)據(jù)報文的ro。然后根據(jù)讀取的數(shù)據(jù)報文的ro,即可獲得數(shù)據(jù)報文的存儲地址和 長度。最后每獲得一次數(shù)據(jù)報文的存儲地址和長度,就根據(jù)數(shù)據(jù)報文的存儲地址和長度,從 共享存儲區(qū)中獲得一個數(shù)據(jù)報文。
[0144] 步驟306 :第二設(shè)備更新共享存儲區(qū)中的讀指針,讀指針更新后的值等于讀指針 更新前的值加 N。
[0145] 需要說明的是,在本實施例中,數(shù)據(jù)報文是第一設(shè)備基于第一隊列傳輸給第二設(shè) 備的數(shù)據(jù)的報文形式,描述符報文是數(shù)據(jù)報文的ro的報文形式,寫指針報文是第一隊列的 寫指針的報文形式,讀指針報文是第一隊列的寫指針的報文形式??梢岳斫獾?,第一設(shè)備和 第二設(shè)備從共享存儲區(qū)中寫入或讀取任何數(shù)據(jù)都是通過報文進行的。
[0146] 本發(fā)明實施例通過將N個數(shù)據(jù)報文寫入共享存儲區(qū)中,并更新共享存儲區(qū)中的第 一隊列的寫指針,N為正整數(shù)且N > 2,N個數(shù)據(jù)報文基于第一隊列傳輸,寫指針更新后的值 等于寫指針更新前的值加 N,寫指針不需要跟隨數(shù)據(jù)的發(fā)送而發(fā)送,減少了寫指針的發(fā)送, 提高了帶寬利用率,并且降低了由于傳輸帶寬受限造成數(shù)據(jù)丟棄情況的發(fā)生,提高了傳輸 可靠性。而且,第一設(shè)備構(gòu)造數(shù)據(jù)報文的ro,并將數(shù)據(jù)報文的ro緩存在第一設(shè)備中,只有 當滿足設(shè)定條件時,才將數(shù)據(jù)報文的ro構(gòu)造為描述符報文,并將描述符報文寫入第一隊列 中,在數(shù)據(jù)報文的長度可以是任意值的同時,減少了數(shù)據(jù)報文的ro的發(fā)送,進一步提高了 帶寬利用率和傳輸可靠性。
[0147] 實施例四
[0148] 本發(fā)明實施例提供了一種基于隊列的數(shù)據(jù)傳輸方法,在本實施例中,在每將一個 數(shù)據(jù)報文寫入共享存儲區(qū)中之后,將一個數(shù)據(jù)報文的存儲地址和長度構(gòu)造為一個描述符報 文,并將描述符報文寫入第一隊列。參見圖6,該方法包括:
[0149] 步驟400 :第一設(shè)備判斷第一隊列是否未滿。
[0150] 在本實施例中,第一隊列為一個隊列或多個隊列中的一個。
[0151] 具體地,該步驟400可以與實施例三中的步驟300相同,在此不再詳述。
[0152] 步驟401 :當?shù)谝魂犃形礉M時,第一設(shè)備將N個數(shù)據(jù)報文寫入共享存儲區(qū)中,N為正 整數(shù)且N彡2。
[0153] 在本實施例中,數(shù)據(jù)報文可以寫入共享存儲區(qū)中非隊列的任意位置。
[0154] 具體地,該步驟401可以與實施例三中的步驟301相同,在此不再詳述。
[0155] 步驟402 :在每將一個數(shù)據(jù)報文寫入共享存儲區(qū)中之后,將一個數(shù)據(jù)報文的存儲 地址和長度構(gòu)造為一個描述符報文,并將描述符報文寫入第一隊列。
[0156] 在本實施例中,描述符報文是數(shù)據(jù)報文的ro的報文形式,實質(zhì)上就是數(shù)據(jù)報文的 PD。數(shù)據(jù)報文的ro包括但不限于數(shù)據(jù)報文的存儲地址和長度。
[0157] 在具體實現(xiàn)中,以數(shù)據(jù)報文的的長度為32bytes為例,第一設(shè)備將數(shù)據(jù)報文的 構(gòu)造為1個32bytes的描述符報文。
[0158] 步驟403 :第一設(shè)備更新共享存儲區(qū)中的第一隊列的寫指針,寫指針更新后的值 等于寫指針更新前的值加 N。
[0159] 具體地,該步驟403可以與實施例三中的步驟303相同,在此不再詳述。
[0160] 在本實施例中,關(guān)于步驟403執(zhí)行的條件可以為以下的任一種:
[0161] 第一種,N達到設(shè)定值;
[0162] 第二種,N個數(shù)據(jù)報文寫入共享存儲區(qū)的時間達到設(shè)定時間;
[0163] 第三種,將N個數(shù)據(jù)報文寫入所述共享存儲區(qū)(步驟401)后的預(yù)定時間內(nèi)沒有待 發(fā)送的數(shù)據(jù)報文;
[0164] 第四種,N個數(shù)據(jù)報文后的數(shù)據(jù)報文基于非第一隊列傳輸,也就是說,N個數(shù)據(jù)報 文后的數(shù)據(jù)報文與N個數(shù)據(jù)報文基于不同的隊列傳輸。
[0165] 對于第一種條件,設(shè)定值可以根據(jù)第一隊列的深度、第一設(shè)備處理大量數(shù)據(jù)報文 的能力、以及對數(shù)據(jù)傳輸?shù)膶崟r性要求確定。例如,設(shè)定時間根據(jù)對數(shù)據(jù)傳輸?shù)膶崟r性要求 確定,則對數(shù)據(jù)傳輸?shù)膶崟r性要求越高,設(shè)定時間越短,如設(shè)定值為64。
[0166] 在實際應(yīng)用中,當更新共享存儲區(qū)中的第一隊列的寫指針之前第一次將數(shù)據(jù)報文 寫入共享存儲區(qū)中時,開始對將數(shù)據(jù)報文寫入共享存儲區(qū)中的次數(shù)進行計數(shù)?;蛘撸诟?共享存儲區(qū)中的第一隊列的寫指針之后,將所計數(shù)目清零,當上一次更新共享存儲區(qū)中的 第一隊列的寫指針后第一次將數(shù)據(jù)報文寫入共享存儲區(qū)時,重新開始對將數(shù)據(jù)報文寫入共 享存儲區(qū)中的次數(shù)進行計數(shù)。因此可以根據(jù)所計數(shù)目,進而進行N是否達到設(shè)定值的判斷。
[0167] 對于第二種條件,主要是為了對共享存儲區(qū)的所有隊列的寫指針采用相同的定 時發(fā)送機制,也就是說,無論隊列的寫指針是否發(fā)生了變化,到達設(shè)定時間(如l〇u S、64us 或128us),都通過發(fā)送寫指針報文將隊列的寫指針更新一次。例如,設(shè)置定時發(fā)送周期為 64us,定時時間到則把256個隊列的指針全部發(fā)送出去,無論該指針是否增加,增加了多 少。方案簡單,可靠性高。
[0168] 針對第二種情況,也可以增加識別機制,識別并發(fā)送變動的寫指針。
[0169] 在具體實現(xiàn)中,可以通過寫指針進行識別。例如,更新共享存儲區(qū)中的第一隊列的 寫指針之前第一隊列的寫指針大于〇 ;或者,當前時刻第一隊列的寫指針,與上一次更新共 享存儲區(qū)中的第一隊列的寫指針時第一隊列的寫指針不同。
[0170] 可以理解地,只有當寫指針發(fā)生變化時,才將寫指針報文寫入共享存儲區(qū),與達到 設(shè)定時間就寫入相比,可以避免不必要的傳輸,節(jié)省傳輸帶寬。
[0171] 在實際應(yīng)用中,當更新共享存儲區(qū)中的第一隊列的寫指針之前第一次將數(shù)據(jù)報文 寫入共享存儲區(qū)時,開始進行計時,因此可以根據(jù)所計時間,得到當前時刻與更新共享存儲 區(qū)中的第一隊列的寫指針之前第一次將數(shù)據(jù)報文寫入共享存儲區(qū)的時刻之間的時間,進而 進行N個數(shù)據(jù)報文寫入共享存儲區(qū)的時間是否達到設(shè)定時間的判斷。
[0172] 同樣地,在更新共享存儲區(qū)中的第一隊列的寫指針之后,將所計時間清零。當上一 次更新共享存儲區(qū)中的第一隊列的寫指針后第一次將數(shù)據(jù)報文寫入共享存儲區(qū)時,重新開 始進行計時,得到當前時刻與上一次更新共享存儲區(qū)中的第一隊列的寫指針后第一次將數(shù) 據(jù)報文寫入共享存儲區(qū)的時刻之間的時間,進而進行N個數(shù)據(jù)報文寫入共享存儲區(qū)的時間 是否達到設(shè)定時間的判斷。
[0173] 對于第三種條件和第四種條件,由于本實施例主要是適用于突發(fā)業(yè)務(wù),即第一設(shè) 備連續(xù)基于同一個隊列連續(xù)向第二設(shè)備傳輸?shù)膱鼍埃虼瞬捎玫谌N條件和第四種條件識 別是否屬于突發(fā)業(yè)務(wù)的場景并且第四種條件僅限于共享存儲區(qū)中設(shè)有多個隊列的情況。
[0174] 在具體實現(xiàn)中,以設(shè)定次數(shù)為64為例,當所計次數(shù)達到64時,第一設(shè)備將第一隊 列的寫指針構(gòu)造為1個4bytes的寫指針報文;當所計次數(shù)為3時,進行計時,并在計時時間 達到預(yù)定時間時,依然沒有待發(fā)送的數(shù)據(jù)報文,或者,N個數(shù)據(jù)報文后的數(shù)據(jù)報文基于非第 一隊列傳輸,第一設(shè)備將第一隊列的寫指針構(gòu)造為1個4bytes的寫指針報文。
[0175] 需要說明的是,當執(zhí)行步驟403之后,緩存在第一設(shè)備的緩存區(qū)中的第一隊列的 寫指針保持不變。
[0176] 圖7為本實施例第一設(shè)備發(fā)送報文(即將報文寫入共享存儲區(qū)中)的示意圖,如 圖7所示,第一設(shè)備首先發(fā)送若干個數(shù)據(jù)報文和描述符報文,當滿足設(shè)定條件時,發(fā)送一個 寫指針報文。
[0177] 步驟404 :第二設(shè)備從共享存儲區(qū)中獲取更新后的第一隊列的寫指針。
[0178] 具體地,該步驟404可以與實施例三中的步驟304相同,在此不再詳述。
[0179] 步驟405 :第二設(shè)備根據(jù)更新后的寫指針和第一隊列的讀指針,依次從共享存儲 區(qū)中讀取N個數(shù)據(jù)報文。
[0180] 具體地,該步驟405可以與實施例三中的步驟305相同,在此不再詳述。
[0181] 步驟406 :第二設(shè)備更新共享存儲區(qū)中的讀指針,讀指針更新后的值等于讀指針 更新前的值加 N。
[0182] 具體地,該步驟406可以與實施例三中的步驟306相同,在此不再詳述。
[0183] 需要說明的是,在本實施例中,數(shù)據(jù)報文是第一設(shè)備基于第一隊列傳輸給第二設(shè) 備的數(shù)據(jù)的報文形式,描述符報文是數(shù)據(jù)報文的ro的報文形式,寫指針報文是第一隊列的 寫指針的報文形式,讀指針報文是第一隊列的寫指針的報文形式??梢岳斫獾?,第一設(shè)備和 第二設(shè)備從共享存儲區(qū)中寫入或讀取任何數(shù)據(jù)都是通過報文進行的。
[0184] 本發(fā)明實施例通過將N個數(shù)據(jù)報文寫入共享存儲區(qū)中,并更新共享存儲區(qū)中的第 一隊列的寫指針,N為正整數(shù)且N > 2,N個數(shù)據(jù)報文基于第一隊列傳輸,寫指針更新后的值 等于寫指針更新前的值加 N,寫指針不需要跟隨數(shù)據(jù)的發(fā)送而發(fā)送,減少了寫指針的發(fā)送, 提高了帶寬利用率,并且降低了由于傳輸帶寬受限造成數(shù)據(jù)丟棄情況的發(fā)生,提高了傳輸 可靠性。而且,第一設(shè)備構(gòu)造數(shù)據(jù)報文的ro,并將數(shù)據(jù)報文的ro構(gòu)造為描述符報文,將描述 符報文寫入第一隊列中,第一設(shè)備的緩存區(qū)中不用設(shè)置存儲數(shù)據(jù)報文的ro的區(qū)域,節(jié)省了 對第一設(shè)備資源的使用。
[0185] 實施例五
[0186] 本發(fā)明實施例提供了一種基于隊列的數(shù)據(jù)傳輸方法,在本實施例中,將N個數(shù)據(jù) 報文連續(xù)寫入第一隊列。參見圖8,該方法包括:
[0187] 步驟500 :第一設(shè)備判斷第一隊列是否未滿。
[0188] 在本實施例中,第一隊列為一個隊列或多個隊列中的一個。
[0189] 具體地,該步驟500可以與實施例四中的步驟400相同,在此不再詳述。
[0190] 步驟501 :當?shù)谝魂犃形礉M時,第一設(shè)備將N個數(shù)據(jù)報文連續(xù)寫入第一隊列,N為正 整數(shù)且N彡2。
[0191] 可選地,當數(shù)據(jù)報文的長度為變化值時,該步驟501可以包括:
[0192] 當數(shù)據(jù)報文的長度等于數(shù)據(jù)報文的最大值時,將數(shù)據(jù)報文寫入第一隊列中;
[0193] 或者,
[0194] 當數(shù)據(jù)報文的長度小于數(shù)據(jù)報文的最大值時,在數(shù)據(jù)報文中有效數(shù)據(jù)的后面填充 無效值,填充后的數(shù)據(jù)報文的長度等于該最大值;
[0195] 將填充后的數(shù)據(jù)報文寫入第一隊列中。
[0196] 步驟502 :第一設(shè)備更新共享存儲區(qū)中的第一隊列的寫指針,寫指針更新后的值 等于寫指針更新前的值加 N。
[0197] 具體地,該步驟502可以與實施例四中的步驟403相同,在此不再詳述。
[0198] 圖9為本實施例第一設(shè)備發(fā)送報文(即將報文寫入共享存儲區(qū)中)的示意圖,如 圖9所示,第一設(shè)備首先發(fā)送若干個數(shù)據(jù)報文,當滿足設(shè)定條件時,發(fā)送一個寫指針報文。
[0199] 步驟503 :第二設(shè)備從共享存儲區(qū)中獲取更新后的第一隊列的寫指針。
[0200] 具體地,該步驟503可以與實施例四中的步驟404相同,在此不再詳述。
[0201] 步驟504 :第二設(shè)備根據(jù)更新后的寫指針和第一隊列的讀指針,依次從第一隊列 中讀取N個數(shù)據(jù)報文。
[0202] 在具體實現(xiàn)中,第二設(shè)備根據(jù)第一隊列的基地址和讀指針,即可獲得第二設(shè)備未 讀取的數(shù)據(jù)報文的存儲地址,進而從第一隊列中獲得數(shù)據(jù)報文。
[0203] 步驟505 :第二設(shè)備更新共享存儲區(qū)中的讀指針,讀指針更新后的值等于讀指針 更新前的值加 N。
[0204] 具體地,該步驟505可以與實施例四中的步驟406相同,在此不再詳述。
[0205] 需要說明的是,在本實施例中,數(shù)據(jù)報文是第一設(shè)備基于第一隊列傳輸給第二設(shè) 備的數(shù)據(jù)的報文形式,寫指針報文是第一隊列的寫指針的報文形式,讀指針報文是第一隊 列的寫指針的報文形式。可以理解地,第一設(shè)備和第二設(shè)備從共享存儲區(qū)中寫入或讀取任 何數(shù)據(jù)都是通過報文進行的。
[0206] 本發(fā)明實施例通過將N個數(shù)據(jù)報文寫入共享存儲區(qū)中,并更新共享存儲區(qū)中的第 一隊列的寫指針,N為正整數(shù)且N > 2,N個數(shù)據(jù)報文基于第一隊列傳輸,寫指針更新后的值 等于寫指針更新前的值加 N,寫指針不需要跟隨數(shù)據(jù)的發(fā)送而發(fā)送,減少了寫指針的發(fā)送, 提高了帶寬利用率,并且降低了由于傳輸帶寬受限造成數(shù)據(jù)丟棄情況的發(fā)生,提高了傳輸 可靠性。而且,第一設(shè)備直接將數(shù)據(jù)報文寫入第一隊列中,數(shù)據(jù)報文的讀寫更為方便快捷。
[0207] 實施例六
[0208] 本發(fā)明實施例提供了一種基于隊列的數(shù)據(jù)傳輸裝置,適用于第一設(shè)備通過共享存 儲區(qū)向第二設(shè)備傳輸數(shù)據(jù),共享存儲區(qū)可以獨立于第一設(shè)備和第二設(shè)備,也可以屬于第一 設(shè)備或第二設(shè)備,共享存儲區(qū)中設(shè)有一個或多個隊列、以及與隊列一一對應(yīng)的寫指針和讀 指針的緩存區(qū),該裝置設(shè)置在第一設(shè)備上,適用于實施例一提供的基于隊列的數(shù)據(jù)傳輸方 法,參見圖10,該裝置包括:
[0209] 數(shù)據(jù)寫入模塊601,用于當?shù)谝魂犃形礉M時,將N個數(shù)據(jù)報文寫入共享存儲區(qū)中, N為正整數(shù)且N > 2, N個數(shù)據(jù)報文基于第一隊列傳輸,第一隊列為一個或多個隊列中的一 個;
[0210] 寫指針更新模塊602,用于更新共享存儲區(qū)中的第一隊列的寫指針,寫指針更新后 的值等于寫指針更新前的值加 N。
[0211] 本發(fā)明實施例通過將N個數(shù)據(jù)報文寫入共享存儲區(qū)中,并更新共享存儲區(qū)中的第 一隊列的寫指針,N為正整數(shù)且N > 2,N個數(shù)據(jù)報文基于第一隊列傳輸,寫指針更新后的值 等于寫指針更新前的值加 N,寫指針不需要跟隨數(shù)據(jù)的發(fā)送而發(fā)送,減少了寫指針的發(fā)送, 提高了帶寬利用率,并且降低了由于傳輸帶寬受限造成數(shù)據(jù)丟棄情況的發(fā)生,提高了傳輸 可靠性。
[0212] 實施例七
[0213] 本發(fā)明實施例提供了一種基于隊列的數(shù)據(jù)傳輸裝置,適用于第一設(shè)備通過共享存 儲區(qū)向第二設(shè)備傳輸數(shù)據(jù),共享存儲區(qū)可以獨立于第一設(shè)備和第二設(shè)備,也可以屬于第一 設(shè)備或第二設(shè)備,共享存儲區(qū)中設(shè)有一個或多個隊列、以及與隊列一一對應(yīng)的寫指針和讀 指針的緩存區(qū),該裝置設(shè)置在第一設(shè)備上,適用于實施例三、實施例四或?qū)嵤├逄峁┑幕?于隊列的數(shù)據(jù)傳輸方法,參見圖11a和圖11b,該裝置包括:
[0214] 數(shù)據(jù)寫入模塊701,用于當?shù)谝魂犃形礉M時,將N個數(shù)據(jù)報文寫入共享存儲區(qū)中, N為正整數(shù)且N > 2, N個數(shù)據(jù)報文基于第一隊列傳輸,第一隊列為一個或多個隊列中的一 個;
[0215] 寫指針更新模塊702,用于更新共享存儲區(qū)中的第一隊列的寫指針,寫指針更新后 的值等于寫指針更新前的值加 N。
[0216] 在本實施例的一種實現(xiàn)方式中,如圖11a所示,該裝置還可以包括:
[0217] 描述符寫入模塊703,用于在更新共享存儲區(qū)中的第一隊列的寫指針之前,將N個 數(shù)據(jù)報文的存儲地址和長度構(gòu)造為一個描述符報文,并將描述符報文寫入第一隊列。
[0218] 在該種實現(xiàn)方式中,可選地,寫指針更新模塊702可以用于,
[0219] 當N達到設(shè)定值時,或者,當N個數(shù)據(jù)報文寫入共享存儲區(qū)的時間達到設(shè)定時間 時,更新共享存儲區(qū)中的第一隊列的寫指針。
[0220] 在本實施例的另一種實現(xiàn)方式中,如圖11a所示,該裝置還可以包括:
[0221] 描述符寫入模塊703,用于在每將一個數(shù)據(jù)報文寫入共享存儲區(qū)中之后,將一個數(shù) 據(jù)報文的存儲地址和長度構(gòu)造為一個描述符報文,并將描述符報文寫入第一隊列。
[0222] 在該種實現(xiàn)方式中,可選地,寫指針更新模塊702可以用于,
[0223] 當N達到設(shè)定值時,或者,當N個數(shù)據(jù)報文寫入共享存儲區(qū)的時間達到設(shè)定時間 時,更新共享存儲區(qū)中的第一隊列的寫指針。
[0224] 在該種實現(xiàn)方式中,可選地,寫指針更新模塊702可以用于,
[0225] 當將N個數(shù)據(jù)報文寫入所述共享存儲區(qū)后的預(yù)定時間內(nèi)沒有待發(fā)送的數(shù)據(jù)報文 時,或者,當N個數(shù)據(jù)報文后的數(shù)據(jù)報文基于非第一隊列傳輸時,更新共享存儲區(qū)中的第一 隊列的寫指針。
[0226] 在本實施例的又一種實現(xiàn)方式中,如圖lib所示,數(shù)據(jù)寫入模塊701可以用于,
[0227] 將N個數(shù)據(jù)報文連續(xù)寫入第一隊列。
[0228] 在該種實現(xiàn)方式中,可選地,寫指針更新模塊702可以用于,
[0229] 當N達到設(shè)定值時,或者,當N個數(shù)據(jù)報文寫入共享存儲區(qū)的時間達到設(shè)定時間 時,更新共享存儲區(qū)中的第一隊列的寫指針。
[0230] 在該種實現(xiàn)方式中,可選地,寫指針更新模塊702可以用于,
[0231] 當將N個數(shù)據(jù)報文寫入所述共享存儲區(qū)后的預(yù)定時間內(nèi)沒有待發(fā)送的數(shù)據(jù)報文 時,或者,當N個數(shù)據(jù)報文后的數(shù)據(jù)報文基于非第一隊列傳輸時,更新共享存儲區(qū)中的第一 隊列的寫指針。
[0232] 本發(fā)明實施例通過將N個數(shù)據(jù)報文寫入共享存儲區(qū)中,并更新共享存儲區(qū)中的第 一隊列的寫指針,N為正整數(shù)且N > 2,N個數(shù)據(jù)報文基于第一隊列傳輸,寫指針更新后的值 等于寫指針更新前的值加 N,寫指針不需要跟隨數(shù)據(jù)的發(fā)送而發(fā)送,減少了寫指針的發(fā)送, 提高了帶寬利用率,并且降低了由于傳輸帶寬受限造成數(shù)據(jù)丟棄情況的發(fā)生,提高了傳輸 可靠性。而且,若第一設(shè)備構(gòu)造數(shù)據(jù)報文的ro,并將數(shù)據(jù)報文的ro緩存在第一設(shè)備中,只有 當滿足設(shè)定條件時,才將數(shù)據(jù)報文的ro構(gòu)造為描述符報文,并將描述符報文寫入第一隊列 中,則在數(shù)據(jù)報文的長度可以是任意值的同時,減少了數(shù)據(jù)報文的ro的發(fā)送,進一步提高 了帶寬利用率和傳輸可靠性。若第一設(shè)備構(gòu)造數(shù)據(jù)報文的ro,并將數(shù)據(jù)報文的ro構(gòu)造為 描述符報文,將描述符報文寫入第一隊列中,則第一設(shè)備的緩存區(qū)中不用設(shè)置存儲數(shù)據(jù)報 文的ro的區(qū)域,節(jié)省了對第一設(shè)備資源的使用。若第一設(shè)備直接將數(shù)據(jù)報文寫入第一隊列 中,則數(shù)據(jù)報文的讀寫更為方便快捷。
[0233] 實施例八
[0234] 本發(fā)明實施例提供了一種基于隊列的數(shù)據(jù)傳輸裝置,適用于第一設(shè)備通過共享存 儲區(qū)向第二設(shè)備傳輸數(shù)據(jù),共享存儲區(qū)可以獨立于第一設(shè)備和第二設(shè)備,也可以屬于第一 設(shè)備或第二設(shè)備,共享存儲區(qū)中設(shè)有一個或多個隊列、以及與隊列一一對應(yīng)的寫指針和讀 指針的緩存區(qū),如圖12所示,該裝置80 -般包括發(fā)送器81、接收器82、至少一個存儲器83、 以及至少一個處理器84等部件。本領(lǐng)域技術(shù)人員可以理解,圖12中所示出的結(jié)構(gòu)并不構(gòu) 成對被裝置的限定,可以包括比圖示更多或更少的部件,或者組合某些部件,或者不同的部 件布置。
[0235] 下面結(jié)合圖12對裝置80的各個構(gòu)成部件進行具體的介紹:
[0236] 至少一個存儲器83可用于存儲軟件程序以及應(yīng)用模塊,至少一個處理器84通過 運行存儲在至少一個存儲器83的軟件程序以及應(yīng)用模塊,從而執(zhí)行裝置80的各種功能應(yīng) 用以及數(shù)據(jù)處理。至少一個存儲器83可主要包括存儲程序區(qū)和存儲數(shù)據(jù)區(qū),其中,存儲程 序區(qū)可存儲操作系統(tǒng)、至少一個功能所需的應(yīng)用程序(比如將緩存在第一設(shè)備的緩存區(qū)中 的第一隊列的寫指針加1等)等;存儲數(shù)據(jù)區(qū)可存儲根據(jù)裝置80的處理所創(chuàng)建的數(shù)據(jù)(比 如第一隊列的寫指針)等。此外,至少一個存儲器83可以包括高速RAM (Random Access Memory,隨機存取存儲器),還可以包括非易失性存儲器(non-volatile memory),例如至少 一個磁盤存儲器件、閃存器件、或其他易失性固態(tài)存儲器件。
[0237] 至少一個處理器84是裝置80的控制中心,利用各種接口和線路連接整個裝置的 各個部分,通過運行或執(zhí)行存儲在至少一個存儲器83內(nèi)的軟件程序和/或應(yīng)用模塊,以及 調(diào)用存儲在至少一個存儲器83內(nèi)的數(shù)據(jù),執(zhí)行裝置80的各種功能和處理數(shù)據(jù),從而對裝置 進行整體監(jiān)控??蛇x的,至少一個處理器84可包括一個或多個處理核心;優(yōu)選的,至少一個 處理器84可集成應(yīng)用處理器和調(diào)制解調(diào)處理器,其中,應(yīng)用處理器主要處理操作系統(tǒng)、用 戶界面和應(yīng)用程序等,調(diào)制解調(diào)處理器主要處理無線通信??梢岳斫獾氖?,上述調(diào)制解調(diào)處 理器也可以不集成到至少一個處理器84中。
[0238] 在本實施例中,一個或者一個以上程序的程序存儲于至少一個存儲器83中,且經(jīng) 配置以由至少一個處理器84執(zhí)行,一個或者一個以上程序包含用于進行以下操作的指令:
[0239] 當?shù)谝魂犃形礉M時,將N個數(shù)據(jù)報文寫入共享存儲區(qū)中,N為正整數(shù)且N彡2, N個 數(shù)據(jù)報文基于第一隊列傳輸,第一隊列為一個或多個隊列中的一個;
[0240] 更新共享存儲區(qū)中的第一隊列的寫指針,寫指針更新后的值等于寫指針更新前的 值加 N。
[0241] 在本實施例的一種實現(xiàn)方式中,一個或者一個以上程序還可以包含用于進行以下 操作的指令:
[0242] 在更新共享存儲區(qū)中的第一隊列的寫指針之前,將N個數(shù)據(jù)報文的存儲地址和長 度構(gòu)造為一個描述符報文,并將描述符報文寫入第一隊列。
[0243] 在該種實現(xiàn)方式中,可選地,一個或者一個以上程序可以包含用于進行以下操作 的指令:
[0244] 當N達到設(shè)定值時,或者,當N個數(shù)據(jù)報文寫入共享存儲區(qū)的時間達到設(shè)定時間 時,更新共享存儲區(qū)中的第一隊列的寫指針。
[0245] 在本實施例的另一種實現(xiàn)方式中,一個或者一個以上程序還可以包含用于進行以 下操作的指令:
[0246] 在每將一個數(shù)據(jù)報文寫入共享存儲區(qū)中之后,將一個數(shù)據(jù)報文的存儲地址和長度 構(gòu)造為一個描述符報文,并將描述符報文寫入第一隊列。
[0247] 在該種實現(xiàn)方式中,可選地,一個或者一個以上程序可以包含用于進行以下操作 的指令:
[0248] 當N達到設(shè)定值時,或者,當N個數(shù)據(jù)報文寫入共享存儲區(qū)的時間達到設(shè)定時間 時,更新共享存儲區(qū)中的第一隊列的寫指針。
[0249] 在該種實現(xiàn)方式中,可選地,一個或者一個以上程序可以包含用于進行以下操作 的指令:
[0250] 當將N個數(shù)據(jù)報文寫入所述共享存儲區(qū)后的預(yù)定時間內(nèi)沒有待發(fā)送的數(shù)據(jù)報文 時,或者,當N個數(shù)據(jù)報文后的數(shù)據(jù)報文基于非第一隊列傳輸時,更新共享存儲區(qū)中的第一 隊列的寫指針。
[0251] 在本實施例的又一種實現(xiàn)方式中,一個或者一個以上程序可以包含用于進行以下 操作的指令:
[0252] 將N個數(shù)據(jù)報文連續(xù)寫入第一隊列。
[0253] 在該種實現(xiàn)方式中,可選地,一個或者一個以上程序可以包含用于進行以下操作 的指令:
[0254] 當N達到設(shè)定值時,或者,當N個數(shù)據(jù)報文寫入共享存儲區(qū)的時間達到設(shè)定時間 時,更新共享存儲區(qū)中的第一隊列的寫指針。
[0255] 在該種實現(xiàn)方式中,可選地,一個或者一個以上程序可以包含用于進行以下操作 的指令:
[0256] 當將N個數(shù)據(jù)報文寫入所述共享存儲區(qū)后的預(yù)定時間內(nèi)沒有待發(fā)送的數(shù)據(jù)報文 時,或者,當N個數(shù)據(jù)報文后的數(shù)據(jù)報文基于非第一隊列傳輸時,更新共享存儲區(qū)中的第一 隊列的寫指針。
[0257] 本發(fā)明實施例通過將N個數(shù)據(jù)報文寫入共享存儲區(qū)中,并更新共享存儲區(qū)中的第 一隊列的寫指針,N為正整數(shù)且N > 2,N個數(shù)據(jù)報文基于第一隊列傳輸,寫指針更新后的值 等于寫指針更新前的值加 N,寫指針不需要跟隨數(shù)據(jù)的發(fā)送而發(fā)送,減少了寫指針的發(fā)送, 提高了帶寬利用率,并且降低了由于傳輸帶寬受限造成數(shù)據(jù)丟棄情況的發(fā)生,提高了傳輸 可靠性。而且,若第一設(shè)備構(gòu)造數(shù)據(jù)報文的ro,并將數(shù)據(jù)報文的ro緩存在第一設(shè)備中,只有 當滿足設(shè)定條件時,才將數(shù)據(jù)報文的ro構(gòu)造為描述符報文,并將描述符報文寫入第一隊列 中,則在數(shù)據(jù)報文的長度可以是任意值的同時,減少了數(shù)據(jù)報文的ro的發(fā)送,進一步提高 了帶寬利用率和傳輸可靠性。若第一設(shè)備構(gòu)造數(shù)據(jù)報文的ro,并將數(shù)據(jù)報文的ro構(gòu)造為 描述符報文,將描述符報文寫入第一隊列中,則第一設(shè)備的緩存區(qū)中不用設(shè)置存儲數(shù)據(jù)報 文的ro的區(qū)域,節(jié)省了對第一設(shè)備資源的使用。若第一設(shè)備直接將數(shù)據(jù)報文寫入第一隊列 中,則數(shù)據(jù)報文的讀寫更為方便快捷。
[0258] 實施例九
[0259] 本發(fā)明實施例提供了一種基于隊列的數(shù)據(jù)傳輸裝置,適用于第一設(shè)備通過共享存 儲區(qū)向第二設(shè)備傳輸數(shù)據(jù),共享存儲區(qū)可以獨立于第一設(shè)備和第二設(shè)備,也可以屬于第一 設(shè)備或第二設(shè)備,共享存儲區(qū)中設(shè)有一個或多個隊列、以及與隊列一一對應(yīng)的寫指針和讀 指針的緩存區(qū),該裝置設(shè)置在第二設(shè)備上,適用于實施例二提供的基于隊列的數(shù)據(jù)傳輸方 法,參見圖13,該裝置包括:
[0260] 寫指針獲取模塊901,用于從共享存儲區(qū)中獲取更新后的第一隊列的寫指針,第一 隊列為一個或多個隊列中的一個,寫指針更新后的值等于寫指針更新前的值加 N,N為正整 數(shù)且N彡2 ;
[0261] 數(shù)據(jù)讀取模塊902,用于根據(jù)更新后的寫指針和第一隊列的讀指針,依次從共享存 儲區(qū)中讀取N個數(shù)據(jù)報文,N個數(shù)據(jù)報文基于第一隊列傳輸;
[0262] 讀指針更新模塊903,用于更新共享存儲區(qū)中的讀指針,讀指針更新后的值等于讀 指針更新前的值加 N。
[0263] 本發(fā)明實施例通過從共享存儲區(qū)中獲取更新后的第一隊列的寫指針,并根據(jù)更新 后的寫指針和第一隊列的讀指針,依次從共享存儲區(qū)中讀取N個數(shù)據(jù)報文,N個數(shù)據(jù)報文基 于第一隊列傳輸,第一隊列為一個或多個隊列中的一個,寫指針更新后的值等于寫指針更 新前的值加 N,N為正整數(shù)且N > 2,因此寫指針不是跟隨數(shù)據(jù)的發(fā)送而發(fā)送的,減少了寫指 針的發(fā)送,提高了帶寬利用率,并且降低了由于傳輸帶寬受限造成數(shù)據(jù)丟棄情況的發(fā)生,提 高了傳輸可靠性。另外,通過更新共享存儲區(qū)中的讀指針,讀指針更新后的值等于讀指針更 新前的值加 N,也減少了讀指針的發(fā)送,進一步提高了帶寬利用率和傳輸可靠性。
[0264] 實施例十
[0265] 本發(fā)明實施例提供了一種基于隊列的數(shù)據(jù)傳輸裝置,適用于第一設(shè)備通過共享存 儲區(qū)向第二設(shè)備傳輸數(shù)據(jù),共享存儲區(qū)可以獨立于第一設(shè)備和第二設(shè)備,也可以屬于第一 設(shè)備或第二設(shè)備,共享存儲區(qū)中設(shè)有一個或多個隊列、以及與隊列一一對應(yīng)的寫指針和讀 指針的緩存區(qū),該裝置設(shè)置在第二設(shè)備上,適用于實施例三、實施例四或?qū)嵤├逄峁┑幕?于隊列的數(shù)據(jù)傳輸方法,參見圖14a和圖14b,該裝置包括:
[0266] 寫指針獲取模塊1001,用于從共享存儲區(qū)中獲取更新后的第一隊列的寫指針,第 一隊列為一個或多個隊列中的一個,寫指針更新后的值等于寫指針更新前的值加 N,N為正 整數(shù)且N彡2 ;
[0267] 數(shù)據(jù)讀取模塊1002,用于根據(jù)更新后的寫指針和第一隊列的讀指針,依次從共享 存儲區(qū)中讀取N個數(shù)據(jù)報文,N個數(shù)據(jù)報文基于第一隊列傳輸;
[0268] 讀指針更新模塊1003,用于更新共享存儲區(qū)中的讀指針,讀指針更新后的值等于 讀指針更新前的值加 N。
[0269] 在本實施例的一種實現(xiàn)方式中,如圖14a所示,數(shù)據(jù)讀取模塊1002可以包括:
[0270] 指針比較單元1002a,用于將第一隊列的寫指針與第一隊列的讀指針進行比較,確 定共享存儲區(qū)中第二設(shè)備未讀取的數(shù)據(jù)報文的數(shù)量;
[0271] 描述符讀取單元1002b,用于根據(jù)第一隊列的讀指針和第二設(shè)備未讀取的數(shù)據(jù)報 文的數(shù)量,從第一隊列中依次讀取第二設(shè)備未讀取的數(shù)據(jù)報文的ro ;
[0272] 數(shù)據(jù)讀取單元1002c,用于在每讀取一次第二設(shè)備未讀取的數(shù)據(jù)報文的ro之后, 根據(jù)該數(shù)據(jù)報文的ro,從共享存儲區(qū)中讀取該數(shù)據(jù)報文。
[0273] 在本實施例的另一種實現(xiàn)方式中,如圖14b所示,數(shù)據(jù)讀取模塊1002可以包括:
[0274] 描述符讀取單元1002a,用于將第一隊列的寫指針與第一隊列的讀指針進行比較, 確定共享存儲區(qū)中第二設(shè)備未讀取的數(shù)據(jù)報文的數(shù)量;
[0275] 數(shù)據(jù)讀取單元1002c,用于根據(jù)第一隊列的讀指針,從共享存儲區(qū)中依次讀取第二 設(shè)備未讀取的數(shù)據(jù)報文。
[0276] 本發(fā)明實施例通過從共享存儲區(qū)中獲取更新后的第一隊列的寫指針,并根據(jù)更新 后的寫指針和第一隊列的讀指針,依次從共享存儲區(qū)中讀取N個數(shù)據(jù)報文,N個數(shù)據(jù)報文基 于第一隊列傳輸,第一隊列為一個或多個隊列中的一個,寫指針更新后的值等于寫指針更 新前的值加 N,N為正整數(shù)且N3 2,因此寫指針不是跟隨數(shù)據(jù)的發(fā)送而發(fā)送的,減少了寫指 針的發(fā)送,提高了帶寬利用率,并且降低了由于傳輸帶寬受限造成數(shù)據(jù)丟棄情況的發(fā)生,提 高了傳輸可靠性。另外,通過更新共享存儲區(qū)中的讀指針,讀指針更新后的值等于讀指針更 新前的值加 N,也減少了讀指針的發(fā)送,進一步提高了帶寬利用率和傳輸可靠性。
[0277] 實施例i^一
[0278] 本發(fā)明實施例提供了一種基于隊列的數(shù)據(jù)傳輸裝置,適用于第一設(shè)備通過共享存 儲區(qū)向第二設(shè)備傳輸數(shù)據(jù),共享存儲區(qū)可以獨立于第一設(shè)備和第二設(shè)備,也可以屬于第一 設(shè)備或第二設(shè)備,共享存儲區(qū)中設(shè)有一個或多個隊列、以及與隊列一一對應(yīng)的寫指針和讀 指針的緩存區(qū),如圖15所示,該裝置110 -般包括發(fā)送器111、接收器112、至少一個存儲器 113、以及至少一個處理器114等部件。本領(lǐng)域技術(shù)人員可以理解,圖15中所示出的結(jié)構(gòu)并 不構(gòu)成對被裝置的限定,可以包括比圖示更多或更少的部件,或者組合某些部件,或者不同 的部件布置。
[0279] 下面結(jié)合圖15對裝置110的各個構(gòu)成部件進行具體的介紹:
[0280] 至少一個存儲器113可用于存儲軟件程序以及應(yīng)用模塊,至少一個處理器114通 過運行存儲在至少一個存儲器113的軟件程序以及應(yīng)用模塊,從而執(zhí)行裝置110的各種功 能應(yīng)用以及數(shù)據(jù)處理。至少一個存儲器113可主要包括存儲程序區(qū)和存儲數(shù)據(jù)區(qū),其中,存 儲程序區(qū)可存儲操作系統(tǒng)、至少一個功能所需的應(yīng)用程序(比如將加上第二設(shè)備未讀取的 第一報文的數(shù)量后的第一隊列的讀指針構(gòu)造為第四報文,并將第四報文寫入共享存儲區(qū)中 等)等;存儲數(shù)據(jù)區(qū)可存儲根據(jù)裝置110的處理所創(chuàng)建的數(shù)據(jù)(比如第四報文)等。此外, 至少一個存儲器113可以包括高速RAM (Random Access Memory,隨機存取存儲器),還可以 包括非易失性存儲器(non-volatile memory),例如至少一個磁盤存儲器件、閃存器件、或 其他易失性固態(tài)存儲器件。
[0281] 至少一個處理器114是裝置110的控制中心,利用各種接口和線路連接整個裝置 的各個部分,通過運行或執(zhí)行存儲在至少一個存儲器113內(nèi)的軟件程序和/或應(yīng)用模塊,以 及調(diào)用存儲在至少一個存儲器113內(nèi)的數(shù)據(jù),執(zhí)行裝置110的各種功能和處理數(shù)據(jù),從而對 裝置進行整體監(jiān)控。可選的,至少一個處理器114可包括一個或多個處理核心;優(yōu)選的,至 少一個處理器114可集成應(yīng)用處理器和調(diào)制解調(diào)處理器,其中,應(yīng)用處理器主要處理操作 系統(tǒng)、用戶界面和應(yīng)用程序等,調(diào)制解調(diào)處理器主要處理無線通信??梢岳斫獾氖牵鲜稣{(diào) 制解調(diào)處理器也可以不集成到至少一個處理器114中。
[0282] 在本實施例中,一個或者一個以上程序的程序存儲于至少一個存儲器113中,且 經(jīng)配置以由至少一個處理器114執(zhí)行,一個或者一個以上程序包含用于進行以下操作的指 令:
[0283] 從共享存儲區(qū)中獲取更新后的第一隊列的寫指針,第一隊列為一個或多個隊列中 的一個,寫指針更新后的值等于寫指針更新前的值加 N,N為正整數(shù)且N > 2 ;
[0284] 根據(jù)更新后的寫指針和第一隊列的讀指針,依次從共享存儲區(qū)中讀取N個數(shù)據(jù)報 文,N個數(shù)據(jù)報文基于第一隊列傳輸;
[0285] 更新共享存儲區(qū)中的讀指針,讀指針更新后的值等于讀指針更新前的值加 N。
[0286] 在本實施例的一種實現(xiàn)方式中,一個或者一個以上程序可以包含用于進行以下操 作的指令:
[0287] 將第一隊列的寫指針與第一隊列的讀指針進行比較,確定共享存儲區(qū)中第二設(shè)備 未讀取的數(shù)據(jù)報文的數(shù)量;
[0288] 根據(jù)第一隊列的讀指針和第二設(shè)備未讀取的數(shù)據(jù)報文的數(shù)量,從第一隊列中依次 讀取第二設(shè)備未讀取的數(shù)據(jù)報文的ro ;
[0289] 在每讀取一次第二設(shè)備未讀取的數(shù)據(jù)報文的ro之后,根據(jù)該數(shù)據(jù)報文的ro,從共 享存儲區(qū)中讀取該數(shù)據(jù)報文。
[0290] 在本實施例的另一種實現(xiàn)方式中,一個或者一個以上程序可以包含用于進行以下 操作的指令:
[0291] 將第一隊列的寫指針與第一隊列的讀指針進行比較,確定共享存儲區(qū)中第二設(shè)備 未讀取的數(shù)據(jù)報文的數(shù)量;
[0292] 根據(jù)第一隊列的讀指針,從共享存儲區(qū)中依次讀取第二設(shè)備未讀取的數(shù)據(jù)報文。
[0293] 本發(fā)明實施例通過從共享存儲區(qū)中獲取更新后的第一隊列的寫指針,并根據(jù)更新 后的寫指針和第一隊列的讀指針,依次從共享存儲區(qū)中讀取N個數(shù)據(jù)報文,N個數(shù)據(jù)報文基 于第一隊列傳輸,第一隊列為一個或多個隊列中的一個,寫指針更新后的值等于寫指針更 新前的值加 N,N為正整數(shù)且N3 2,因此寫指針不是跟隨數(shù)據(jù)的發(fā)送而發(fā)送的,減少了寫指 針的發(fā)送,提高了帶寬利用率,并且降低了由于傳輸帶寬受限造成數(shù)據(jù)丟棄情況的發(fā)生,提 高了傳輸可靠性。另外,通過更新共享存儲區(qū)中的讀指針,讀指針更新后的值等于讀指針更 新前的值加 N,也減少了讀指針的發(fā)送,進一步提高了帶寬利用率和傳輸可靠性。
[0294] 實施例十二
[0295] 本發(fā)明實施例提供了一種通信系統(tǒng),適用于第一設(shè)備通過共享存儲區(qū)向第二設(shè)備 傳輸數(shù)據(jù),共享存儲區(qū)可以獨立于第一設(shè)備和第二設(shè)備,也可以屬于第一設(shè)備或第二設(shè)備, 共享存儲區(qū)中設(shè)有一個或多個隊列、以及與隊列一一對應(yīng)的寫指針和讀指針的緩存區(qū),參 見圖16,該系統(tǒng)包括第一設(shè)備1201、第二設(shè)備1202、以及共享存儲區(qū)1203。
[0296] 在本實施例中,第一設(shè)備1201和第二設(shè)備1202分別與共享存儲區(qū)1203連接。第 一設(shè)備上設(shè)置有如實施例六、實施例七或?qū)嵤├颂峁┑幕陉犃械臄?shù)據(jù)傳輸裝置,第二 設(shè)備上設(shè)置有如實施例九、實施例十或?qū)嵤├惶峁┑幕陉犃械臄?shù)據(jù)傳輸裝置。
[0297] 本發(fā)明實施例通過將N個數(shù)據(jù)報文寫入共享存儲區(qū)中,并更新共享存儲區(qū)中的第 一隊列的寫指針,N為正整數(shù)且N > 2,N個數(shù)據(jù)報文基于第一隊列傳輸,寫指針更新后的值 等于寫指針更新前的值加 N,寫指針不需要跟隨數(shù)據(jù)的發(fā)送而發(fā)送,減少了寫指針的發(fā)送, 提高了帶寬利用率,并且降低了由于傳輸帶寬受限造成數(shù)據(jù)丟棄情況的發(fā)生,提高了傳輸 可靠性。
[0298] 需要說明的是:上述實施例提供的基于隊列的數(shù)據(jù)傳輸裝置在傳輸數(shù)據(jù)時,僅以 上述各功能模塊的劃分進行舉例說明,實際應(yīng)用中,可以根據(jù)需要而將上述功能分配由不 同的功能模塊完成,即將裝置的內(nèi)部結(jié)構(gòu)劃分成不同的功能模塊,以完成以上描述的全部 或者部分功能。另外,上述實施例提供的基于隊列的數(shù)據(jù)傳輸裝置與基于隊列的數(shù)據(jù)傳輸 方法實施例屬于同一構(gòu)思,其具體實現(xiàn)過程詳見方法實施例,這里不再贅述。
[0299] 上述本發(fā)明實施例序號僅僅為了描述,不代表實施例的優(yōu)劣。
[0300] 本領(lǐng)域普通技術(shù)人員可以理解實現(xiàn)上述實施例的全部或部分步驟可以通過硬件 來完成,也可以通過程序來指令相關(guān)的硬件完成,所述的程序可以存儲于一種計算機可讀 存儲介質(zhì)中,上述提到的存儲介質(zhì)可以是只讀存儲器,磁盤或光盤等。
[0301] 以上所述僅為本發(fā)明的較佳實施例,并不用以限制本發(fā)明,凡在本發(fā)明的精神和 原則之內(nèi),所作的任何修改、等同替換、改進等,均應(yīng)包含在本發(fā)明的保護范圍之內(nèi)。
【權(quán)利要求】
1. 一種基于隊列的數(shù)據(jù)傳輸方法,適用于第一設(shè)備通過共享存儲區(qū)向第二設(shè)備傳輸數(shù) 據(jù),所述共享存儲區(qū)中設(shè)有一個或多個隊列、以及與所述隊列一一對應(yīng)的寫指針和讀指針 的緩存區(qū),其特征在于,所述方法包括: 當?shù)谝魂犃形礉M時,所述第一設(shè)備將N個數(shù)據(jù)報文寫入所述共享存儲區(qū)中,N為正整數(shù) 且N > 2,所述N個數(shù)據(jù)報文基于所述第一隊列傳輸,所述第一隊列為所述一個或多個隊列 中的一個; 更新所述共享存儲區(qū)中的所述第一隊列的寫指針,所述寫指針更新后的值等于所述寫 指針更新前的值加 N。
2. 根據(jù)權(quán)利要求1所述的方法,其特征在于,所述方法還包括: 在所述更新所述共享存儲區(qū)中的所述第一隊列的寫指針之前,將所述N個數(shù)據(jù)報文的 存儲地址和長度構(gòu)造為一個描述符報文,并將所述描述符報文寫入所述第一隊列。
3. 根據(jù)權(quán)利要求1所述的方法,其特征在于,所述方法還包括: 在每將一個所述數(shù)據(jù)報文寫入所述共享存儲區(qū)中之后,將所述一個數(shù)據(jù)報文的存儲地 址和長度構(gòu)造為一個描述符報文,并將所述描述符報文寫入所述第一隊列。
4. 根據(jù)權(quán)利要求1所述的方法,其特征在于,所述第一設(shè)備將N個數(shù)據(jù)報文寫入所述共 享存儲區(qū)中,包括: 所述第一設(shè)備將所述N個數(shù)據(jù)報文連續(xù)寫入所述第一隊列。
5. 根據(jù)權(quán)利要求3或4所述的方法,其特征在于,所述更新所述共享存儲區(qū)中的所述第 一隊列的寫指針,包括: 當所述將N個數(shù)據(jù)報文寫入所述共享存儲區(qū)后的預(yù)定時間內(nèi)沒有待發(fā)送的數(shù)據(jù)報文 時,或者,當所述N個數(shù)據(jù)報文后的數(shù)據(jù)報文基于非第一隊列傳輸時,更新所述共享存儲區(qū) 中的所述第一隊列的寫指針。
6. 根據(jù)權(quán)利要求1-4任一項所述的方法,其特征在于,所述更新所述共享存儲區(qū)中的 所述第一隊列的寫指針,包括: 當N達到設(shè)定值時,或者,當所述N個數(shù)據(jù)報文寫入所述共享存儲區(qū)的時間達到設(shè)定時 間時,更新所述共享存儲區(qū)中的所述第一隊列的寫指針。
7. -種基于隊列的數(shù)據(jù)傳輸方法,適用于第二設(shè)備通過共享存儲區(qū)接收第一設(shè)備傳輸 的數(shù)據(jù),所述共享存儲區(qū)中設(shè)有一個或多個隊列、以及與所述隊列一一對應(yīng)的寫指針和讀 指針的緩存區(qū),其特征在于,所述方法包括: 所述第二設(shè)備從所述共享存儲區(qū)中獲取更新后的第一隊列的寫指針,所述第一隊列為 所述一個或多個隊列中的一個,所述寫指針更新后的值等于所述寫指針更新前的值加 N,N 為正整數(shù)且N彡2 ; 根據(jù)更新后的所述寫指針和所述第一隊列的讀指針,依次從所述共享存儲區(qū)中讀取N 個數(shù)據(jù)報文,N個所述數(shù)據(jù)報文基于所述第一隊列傳輸; 更新所述共享存儲區(qū)中的所述讀指針,所述讀指針更新后的值等于所述讀指針更新前 的值加 N。
8. -種基于隊列的數(shù)據(jù)傳輸裝置,適用于第一設(shè)備通過共享存儲區(qū)向第二設(shè)備傳輸數(shù) 據(jù),所述共享存儲區(qū)中設(shè)有一個或多個隊列、以及與所述隊列一一對應(yīng)的寫指針和讀指針 的緩存區(qū),其特征在于,所述裝置包括: 數(shù)據(jù)寫入模塊,用于當?shù)谝魂犃形礉M時,將N個數(shù)據(jù)報文寫入所述共享存儲區(qū)中,NS 正整數(shù)且N > 2,所述N個數(shù)據(jù)報文基于所述第一隊列傳輸,所述第一隊列為所述一個或多 個隊列中的一個; 寫指針更新模塊,用于更新所述共享存儲區(qū)中的所述第一隊列的寫指針,所述寫指針 更新后的值等于所述寫指針更新前的值加 N。
9. 根據(jù)權(quán)利要求8所述的裝置,其特征在于,所述裝置還包括: 描述符寫入模塊,用于在所述更新所述共享存儲區(qū)中的所述第一隊列的寫指針之前, 將所述N個數(shù)據(jù)報文的存儲地址和長度構(gòu)造為一個描述符報文,并將所述描述符報文寫入 所述第一隊列。
10. 根據(jù)權(quán)利要求8所述的裝置,其特征在于,所述裝置還包括: 描述符寫入模塊,用于在每將一個所述數(shù)據(jù)報文寫入所述共享存儲區(qū)中之后,將所述 一個數(shù)據(jù)報文的存儲地址和長度構(gòu)造為一個描述符報文,并將所述描述符報文寫入所述第 一隊列。
11. 根據(jù)權(quán)利要求8所述的裝置,其特征在于,所述數(shù)據(jù)寫入模塊用于, 將所述N個數(shù)據(jù)報文連續(xù)寫入所述第一隊列。
12. 根據(jù)權(quán)利要求10或11所述的裝置,其特征在于,所述寫指針更新模塊用于, 當所述將N個數(shù)據(jù)報文寫入所述共享存儲區(qū)后的預(yù)定時間內(nèi)沒有待發(fā)送的數(shù)據(jù)報文 時,或者,當所述N個數(shù)據(jù)報文后的數(shù)據(jù)報文基于非第一隊列傳輸時,更新所述共享存儲區(qū) 中的所述第一隊列的寫指針。
13. 根據(jù)權(quán)利要求8-11任一項所述的裝置,其特征在于,所述寫指針更新模塊用于, 當N達到設(shè)定值時,或者,當所述N個數(shù)據(jù)報文寫入所述共享存儲區(qū)的時間達到設(shè)定時 間時,更新所述共享存儲區(qū)中的所述第一隊列的寫指針。
14. 一種基于隊列的數(shù)據(jù)傳輸裝置,適用于第二設(shè)備通過共享存儲區(qū)接收第一設(shè)備傳 輸?shù)臄?shù)據(jù),所述共享存儲區(qū)中設(shè)有一個或多個隊列、以及與所述隊列一一對應(yīng)的寫指針和 讀指針的緩存區(qū),其特征在于,所述裝置包括: 寫指針獲取模塊,用于從所述共享存儲區(qū)中獲取更新后的第一隊列的寫指針,所述第 一隊列為所述一個或多個隊列中的一個,所述寫指針更新后的值等于所述寫指針更新前的 值加 N,N為正整數(shù)且N彡2 ; 數(shù)據(jù)讀取模塊,用于根據(jù)更新后的所述寫指針和所述第一隊列的讀指針,依次從所述 共享存儲區(qū)中讀取N個數(shù)據(jù)報文,N個所述數(shù)據(jù)報文基于所述第一隊列傳輸; 讀指針更新模塊,用于更新所述共享存儲區(qū)中的所述讀指針,所述讀指針更新后的值 等于所述讀指針更新前的值加 N。
15. -種通信系統(tǒng),其特征在于,所述系統(tǒng)包括第一設(shè)備、第二設(shè)備、以及共享存儲區(qū), 所述第一設(shè)備和所述第二設(shè)備分別與所述共享存儲區(qū)連接,所述第一設(shè)備上設(shè)置有如權(quán)利 要求8-13任一項所述的基于隊列的數(shù)據(jù)傳輸裝置,所述第二設(shè)備上設(shè)置有如權(quán)利要求14 所述的基于隊列的數(shù)據(jù)傳輸裝置。
【文檔編號】H04L12/58GK104052831SQ201410256758
【公開日】2014年9月17日 申請日期:2014年6月11日 優(yōu)先權(quán)日:2014年6月11日
【發(fā)明者】劉全喜, 謝彬 申請人:華為技術(shù)有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
乌海市| 丹阳市| 密云县| 富阳市| 视频| 定陶县| 兴义市| 平果县| 乃东县| 澎湖县| 肇东市| 夏邑县| 璧山县| 巩留县| 梅河口市| 沁阳市| 池州市| 玉环县| 诸城市| 梁山县| 嘉义县| 雷波县| 武城县| 墨脱县| 隆子县| 竹山县| 纳雍县| 麻江县| 伊吾县| 湖南省| 泗阳县| 长垣县| 尼玛县| 山西省| 鄂伦春自治旗| 子长县| 凉城县| 长泰县| 炎陵县| 石台县| 唐山市|