[發(fā)明專利]一種基于共享存儲(chǔ)器的雙CPU通信方法有效
| 申請(qǐng)?zhí)枺?/td> | 200610103231.0 | 申請(qǐng)日: | 2006-07-14 |
| 公開(公告)號(hào): | CN101105786A | 公開(公告)日: | 2008-01-16 |
| 發(fā)明(設(shè)計(jì))人: | 江帷;官華伯;張緒廣 | 申請(qǐng)(專利權(quán))人: | 中興通訊股份有限公司 |
| 主分類號(hào): | G06F15/167 | 分類號(hào): | G06F15/167 |
| 代理公司: | 北京安信方達(dá)知識(shí)產(chǎn)權(quán)代理有限公司 | 代理人: | 王漪;王繼長(zhǎng) |
| 地址: | 518057廣東省深圳市南山*** | 國(guó)省代碼: | 廣東;44 |
| 權(quán)利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關(guān)鍵詞: | 一種 基于 共享 存儲(chǔ)器 cpu 通信 方法 | ||
技術(shù)領(lǐng)域
本發(fā)明涉及一種通信技術(shù)領(lǐng)域的通信方法,具體涉及的是一種基于共享存儲(chǔ)器的雙CPU通信方法。
背景技術(shù)
在現(xiàn)有技術(shù)的兩個(gè)CPU之間通過共享存儲(chǔ)器通信時(shí),目前較常見的有兩種方法。
一種方法是將共享存儲(chǔ)區(qū)劃分為兩塊,分別作為兩個(gè)CPU的發(fā)送、接收通道,如圖1所示。每個(gè)通道提供一個(gè)讀寫標(biāo)志位,該標(biāo)志初始為可寫態(tài)。發(fā)送方發(fā)送數(shù)據(jù)后將讀寫標(biāo)志由可寫態(tài)修改為可讀態(tài),等待接收方接收。接收方接收數(shù)據(jù)后將讀寫標(biāo)志由可讀態(tài)修改為可寫態(tài),以便發(fā)送方可以繼續(xù)發(fā)送。采用這種方法,每一次的數(shù)據(jù)交互都需要等待對(duì)方讀或?qū)懲戤叄屎艿汀?/p>
另一種方法也是將共享存儲(chǔ)區(qū)分為兩塊,分別作為兩個(gè)CPU的發(fā)送、接收的通道,每個(gè)通道用一個(gè)環(huán)形隊(duì)列實(shí)現(xiàn)循環(huán)讀寫,如圖2所示。環(huán)形隊(duì)列通過存放在郵箱中的讀寫指針進(jìn)行管理。以CPU1發(fā)送為例,CPU1有數(shù)據(jù)需要發(fā)送時(shí),首先通過環(huán)形隊(duì)列1的讀、寫指針計(jì)算是否有足夠的剩余空間,如果空間足夠,則將消息包寫入寫指針?biāo)肝恢茫⒏聦懼羔槨PU2定時(shí)輪詢環(huán)形隊(duì)列1,發(fā)現(xiàn)有新的消息包時(shí),則讀取消息包,并更新讀指針。由于發(fā)送方和接收方可以同時(shí)操作共享存儲(chǔ)區(qū),比前述方法在效率上大大提高。
但是還是存在以下問題:
(1)數(shù)據(jù)一般按定長(zhǎng)打包發(fā)送,對(duì)于消息包長(zhǎng)度相差大,例如最小長(zhǎng)度為4字節(jié),最大長(zhǎng)度為40字節(jié),都要按最大的40字節(jié)打包發(fā)送,造成浪費(fèi)。
(2)數(shù)據(jù)不按定長(zhǎng)打包發(fā)送時(shí),需要在消息包中包含長(zhǎng)度信息,由于消息包不定長(zhǎng),接收方無法通過讀寫指針計(jì)算出待處理的消息條數(shù)。
(3)消息包不定長(zhǎng)時(shí),在連續(xù)發(fā)送消息的過程中,其中某條出現(xiàn)故障將引起后面的讀寫指針全部紊亂。
(4)在隊(duì)列尾端空間不夠存放新消息包時(shí),一般為了操作方便不允許消息包卷繞,就需要填充特殊值(例如0xFFFF)指示該尾端空間無效,并將消息包放置到隊(duì)列頭部。接收時(shí)需要和特殊值比較,判斷是正常消息包還是卷繞時(shí)的填充值。如果正常消息包中包含特殊值,就會(huì)產(chǎn)生沖突。
因此,現(xiàn)有技術(shù)還有待于改進(jìn)和發(fā)展。
發(fā)明內(nèi)容
本發(fā)明的目的在于提供一種基于共享存儲(chǔ)器的雙CPU通信方法,針對(duì)前述兩種方法的缺點(diǎn),提供了一種支持可變消息長(zhǎng)度,高效、可靠的雙CPU通信方法。
本發(fā)明的技術(shù)方案如下:
一種基于共享存儲(chǔ)器的雙CPU通信方法,在第一CPU和第二CPU之間存在雙向傳輸通道,每一通道使用兩個(gè)環(huán)形隊(duì)列,一個(gè)用于存放消息索引,一個(gè)用于存放消息實(shí)體;并且每一通道傳輸過程包括以下步驟:
A、初始化流程:通信前完成本CPU負(fù)責(zé)的隊(duì)列讀寫指針的初始化;
B、發(fā)送消息流程:將新消息實(shí)體寫入消息實(shí)體隊(duì)列,并更新消息實(shí)體隊(duì)列寫指針,即指向新消息實(shí)體之后的可用單元;更新消息索引隊(duì)列寫指針?biāo)竼卧膬?nèi)容,指向消息實(shí)體隊(duì)列中的新消息實(shí)體,并更新消息索引隊(duì)列寫指針指向下一單元;
C、接收消息流程:消息索引隊(duì)列讀指針前移一個(gè)單元,根據(jù)該單元中的索引計(jì)算待處理消息實(shí)體的讀指針,并更新消息索引隊(duì)列讀指針;讀取待處理消息實(shí)體并處理。
所述的方法,其中,所述步驟A還包括:
寫指針指向隊(duì)列頭部第一個(gè)單元,讀指針指向隊(duì)列尾部最后一個(gè)單元。
所述的方法,其中,所述步驟B還包括:
B01、根據(jù)消息實(shí)體隊(duì)列讀、寫指針和消息實(shí)體隊(duì)列大小,判斷是否可以寫入新消息實(shí)體;是,則繼續(xù);否,則延遲后再發(fā);
B02、根據(jù)消息索引隊(duì)列讀、寫指針和消息索引隊(duì)列大小,判斷是否可以寫入新消息索引;是,則繼續(xù);否,則延遲后再發(fā)。
所述的方法,其中,所述步驟C還包括:
C01、根據(jù)消息索引隊(duì)列讀、寫指針和消息索引隊(duì)列大小,計(jì)算待處理消息條數(shù),如果沒有消息處理則返回。
所述的方法,其中,所述步驟C中,所述消息索引隊(duì)列讀指針前移一個(gè)單元時(shí),如果前移到達(dá)消息索引隊(duì)列大小則回繞到0。
所述的方法,其中,所述步驟C中還包括:
C02、更新消息實(shí)體隊(duì)列讀指針;
C03、待處理消息條數(shù)減1;
循環(huán)處理直到待處理消息條數(shù)為0。
所述的方法,其中,所述消息索引是大小固定為4字節(jié)、指向消息實(shí)體的指針;所述消息實(shí)體大小可變。
所述的方法,其中,所述每個(gè)環(huán)形隊(duì)列通過存放在郵箱中的讀寫指針管理,寫指針表示發(fā)送方可寫,接收方只讀;讀指針表示發(fā)送方只讀,接收方可寫。
該專利技術(shù)資料僅供研究查看技術(shù)是否侵權(quán)等信息,商用須獲得專利權(quán)人授權(quán)。該專利全部權(quán)利屬于中興通訊股份有限公司,未經(jīng)中興通訊股份有限公司許可,擅自商用是侵權(quán)行為。如果您想購(gòu)買此專利、獲得商業(yè)授權(quán)和技術(shù)合作,請(qǐng)聯(lián)系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/200610103231.0/2.html,轉(zhuǎn)載請(qǐng)聲明來源鉆瓜專利網(wǎng)。
- 同類專利
- 專利分類
G06F 電數(shù)字?jǐn)?shù)據(jù)處理
G06F15-00 通用數(shù)字計(jì)算機(jī)
G06F15-02 .通過鍵盤輸入的手動(dòng)操作,以及應(yīng)用機(jī)內(nèi)程序的計(jì)算,例如,袖珍計(jì)算器
G06F15-04 .在引入被處理的數(shù)據(jù)的同時(shí),進(jìn)行編制程序的,例如,在同一記錄載體上
G06F15-08 .應(yīng)用插接板編制程序的
G06F15-16 .兩個(gè)或多個(gè)數(shù)字計(jì)算機(jī)的組合,其中每臺(tái)至少具有一個(gè)運(yùn)算器、一個(gè)程序器及一個(gè)寄存器,例如,用于數(shù)個(gè)程序的同時(shí)處理
G06F15-18 .其中,根據(jù)計(jì)算機(jī)本身在一個(gè)完整的運(yùn)行期間內(nèi)所取得的經(jīng)驗(yàn)來改變程序的;學(xué)習(xí)機(jī)器
- 服務(wù)器、系統(tǒng)及信息共享方法
- 一種信息共享系統(tǒng)及信息共享方法
- 一種移動(dòng)終端的數(shù)據(jù)無線共享方法及該移動(dòng)終端
- 一種桌面共享系統(tǒng)及方法
- 一種用于共享移動(dòng)汽車電池的方法
- 一種基于物聯(lián)網(wǎng)的移動(dòng)共享方法及移動(dòng)共享系統(tǒng)
- 一種數(shù)據(jù)共享方法、裝置、電子設(shè)備及存儲(chǔ)介質(zhì)
- 基于云平臺(tái)的數(shù)據(jù)共享方法、裝置、共享平臺(tái)及存儲(chǔ)介質(zhì)
- 確定共享乘坐度量
- 設(shè)備功能共享方法、裝置、終端及存儲(chǔ)介質(zhì)
- 用于控制非易失性存儲(chǔ)器的控制器
- 處理器、存儲(chǔ)器、計(jì)算機(jī)系統(tǒng)、系統(tǒng)LSI及其驗(yàn)證方法
- 存儲(chǔ)和檢索處理系統(tǒng)的數(shù)據(jù)的存儲(chǔ)器系統(tǒng)和性能監(jiān)視方法
- 用于控制半導(dǎo)體裝置的方法
- 存儲(chǔ)器存儲(chǔ)裝置及其測(cè)試方法
- 存儲(chǔ)器裝置及可促進(jìn)張量存儲(chǔ)器存取的方法
- 使用雙通道存儲(chǔ)器作為具有間隔的單通道存儲(chǔ)器
- 用于管理存儲(chǔ)器訪問操作的方法和系統(tǒng)
- 存儲(chǔ)器控制器、存儲(chǔ)裝置和存儲(chǔ)裝置的操作方法
- 具有部分組刷新的存儲(chǔ)器





