專利名稱:雙處理器之間進(jìn)行通信的方法
技術(shù)領(lǐng)域:
本發(fā)明涉及通信傳輸技術(shù),尤其涉及雙處理器之間進(jìn)行通信的方法。
背景技術(shù):
為滿足人們在進(jìn)行數(shù)據(jù)傳輸時對實(shí)時性和數(shù)據(jù)處理能力的要求,大型復(fù)雜的系統(tǒng) 通常使用雙處理器來完成各自的任務(wù),以達(dá)到最佳的系統(tǒng)性能。相應(yīng)地,雙處理器之間的數(shù) 據(jù)通信成為業(yè)內(nèi)關(guān)注的焦點(diǎn)。 作為一個系統(tǒng),雙處理器之間需要實(shí)時交換才能保證協(xié)同并行地工作。雙處理器 之間通過雙端口隨機(jī)存取存儲器(DPRAM,Dual Port RAM)實(shí)現(xiàn)數(shù)據(jù)傳輸,如圖1所示,為現(xiàn) 有技術(shù)中通過DPRAM進(jìn)行雙處理器之間數(shù)據(jù)傳輸?shù)膶?shí)例,處理器A與DPRAM之間通過端口 A進(jìn)行數(shù)據(jù)傳輸,處理器B與DPRAM之間通過端口 B進(jìn)行數(shù)據(jù)傳輸。 現(xiàn)有雙處理器之間的進(jìn)行數(shù)據(jù)傳輸?shù)姆桨笇PRAM劃分為四個存儲區(qū)第一存儲 區(qū)、第二存儲區(qū)、第三存儲區(qū)和第四存儲區(qū)。DPRAM中除了用于進(jìn)行數(shù)據(jù)傳輸?shù)拇鎯^(qū)外,還 包括用于進(jìn)行觸發(fā)中斷的中斷控制位。進(jìn)行數(shù)據(jù)傳輸?shù)倪^程如下利用兩個中斷,把讀寫允 許的時間段分為兩段,在第一時間段里,處理器A寫入第一存儲區(qū)和讀出第三存儲區(qū),而處 理器B讀出第二存儲區(qū)和寫入第四存儲區(qū),如圖la所示;而在第二時間段里,處理器A寫入 第二存儲區(qū)和讀出第四存儲區(qū),而處理器B讀出第一存儲區(qū)和寫入第三存儲區(qū),如圖lb所 示。這兩個中斷的觸發(fā)時間由處理器B控制,具體地,需要觸發(fā)第一個中斷時,處理器B向 DPRAM中的中斷控制位寫入中斷信息,DPRAM向處理器B觸發(fā)中斷,然后,執(zhí)行第一段時間里 的操作,即,處理器A寫入第一存儲區(qū)和讀出第三存儲區(qū),而處理器B讀出第二存儲區(qū)和寫 入第四存儲區(qū);需要觸發(fā)第二個中斷時,處理器B向DPRAM中的中斷控制位寫入中斷信息, DPRAM向處理器B觸發(fā)中斷,然后,執(zhí)行第二段時間里的操作,S卩,處理器A寫入第二存儲區(qū) 和讀出第四存儲區(qū),而處理器B讀出第一存儲區(qū)和寫入第三存儲區(qū)。 現(xiàn)有技術(shù)將DPRAM劃分為四個存儲區(qū),只能在四個存儲區(qū)中進(jìn)行數(shù)據(jù)傳輸,并且, 通過兩個中斷,約定了兩個時間段內(nèi)處理器A和處理器B進(jìn)行讀取的固定操作方式,這導(dǎo)致 了雙處理器之間進(jìn)行數(shù)據(jù)傳輸?shù)撵`活性和通用性差。
發(fā)明內(nèi)容
本發(fā)明提供一種雙處理器之間進(jìn)行通信的方法,該方法能夠提高雙處理器之間進(jìn) 行通信的靈活性和通用性。 —種雙處理器之間進(jìn)行通信的方法,將DPRAM劃分為至少兩個通道區(qū)域,所述通 道區(qū)域包括用于傳輸上行數(shù)據(jù)的上行通道區(qū)域和用于傳輸下行數(shù)據(jù)的下行通道區(qū)域,所 有的上行數(shù)據(jù)通道區(qū)域?qū)?yīng)一個郵箱(mailbox),所有的下行數(shù)據(jù)通道區(qū)域?qū)?yīng)另一個 mailbox,為每個通道區(qū)域設(shè)置一個通道號,每個通道區(qū)域?qū)?yīng)中斷指示中的一個位;雙處 理器內(nèi)分別存儲了通道號與通道區(qū)域的地址之間的第一對應(yīng)關(guān)系,還分別存儲了通道號與 mailbox中相應(yīng)位之間的第二對應(yīng)關(guān)系;該方法包括
所述雙處理器中的一個處理器在DPRAM中指定的通道區(qū)域內(nèi)寫入數(shù)據(jù),向與該指 定的通道區(qū)域?qū)?yīng)的mailbox發(fā)送中斷指示;根據(jù)所述第二對應(yīng)關(guān)系,將所述中斷指示中 與該指定的通道區(qū)域的通道號對應(yīng)的位設(shè)置為讀取指示; 所述與該指定的通道區(qū)域?qū)?yīng)的mailbox接收中斷指示后,向另一個處理器觸發(fā) 中斷; 所述另一個處理器讀取mailbox中的中斷指示,確定中斷指示中設(shè)置為讀取指示 的位,根據(jù)所述第二對應(yīng)關(guān)系,確定與設(shè)置為讀取指示的位對應(yīng)的通道號;在所述第一對應(yīng) 關(guān)系中查詢出與確定的通道號對應(yīng)的通道區(qū)域的地址,從相應(yīng)的通道區(qū)域讀取數(shù)據(jù)。
從上述方案可以看出,本發(fā)明將DPRAM劃分為至少兩個通道區(qū)域,每個通道區(qū)域 用中斷指示中的一個位指示其讀取情況,實(shí)現(xiàn)了同時通過至少兩個通道區(qū)域進(jìn)行數(shù)據(jù)傳 輸;而不是像現(xiàn)有技術(shù)那樣將DPRAM劃分為四個存儲區(qū),只能在四個存儲區(qū)中采用固定的 方式進(jìn)行數(shù)據(jù)傳輸;從而,提高了雙處理器之間進(jìn)行數(shù)據(jù)傳輸?shù)撵`活性和通用性。
圖1為現(xiàn)有技術(shù)中雙處理器之間進(jìn)行通信的流程實(shí)例,包括圖la和圖lb.;
圖2為本發(fā)明雙處理器之間進(jìn)行通信的方法流程圖;
圖3為本發(fā)明雙處理器之間進(jìn)行通信的流程實(shí)例一 ;
圖4為本發(fā)明雙處理器之間進(jìn)行通信的流程實(shí)例二。
具體實(shí)施例方式
為使本發(fā)明的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚明白,下面結(jié)合實(shí)施例和附圖,對本 發(fā)明進(jìn)一步詳細(xì)說明。 DPRAM中包括用于傳輸數(shù)據(jù)的區(qū)域,通常所稱的對DPRAM進(jìn)行劃分,便指的是 對用于傳輸數(shù)據(jù)的區(qū)域進(jìn)行劃分;DPRAM中還包括用于在兩個處理器之間觸發(fā)中斷的兩 個mailbox,其中一個mailbox用于進(jìn)行一個處理器向另一個處理器的中斷觸發(fā),另一個 mailbox用于進(jìn)行所述另一個處理器向所述一個處理器的中斷觸發(fā);具體地,當(dāng)一個處理 器需要通過DPRAM向另一個處理器觸發(fā)中斷時,該處理器向相應(yīng)的mailbox寫入一個值,由 于從mailbox的一端口寫入任一值便可引起另一端口中斷引腳被拉低,另一端口 intr引腳 被拉低,也就實(shí)現(xiàn)觸發(fā)了另一處理器;這里,將向mailbox寫入的值稱為中斷指示。
本發(fā)明結(jié)合mai lbox的特性,不僅采用mailbox進(jìn)行中斷觸發(fā),還通過mailbox進(jìn) 行通道號的通知,從而實(shí)現(xiàn)雙處理器之間的通信。具體地,本發(fā)明將DPRAM劃分為至少兩個 通道區(qū)域,所述通道區(qū)域包括用于傳輸上行數(shù)據(jù)的上行通道區(qū)域和用于傳輸下行數(shù)據(jù)的下 行通道區(qū)域,所有的上行數(shù)據(jù)通道區(qū)域?qū)?yīng)一個mailbox,所有的下行數(shù)據(jù)通道區(qū)域?qū)?yīng)另 一個mailbox,為每個通道區(qū)域設(shè)置一個唯一的通道號,每個通道區(qū)域?qū)?yīng)中斷指示中的一 個位;預(yù)先在兩個處理器內(nèi)分別存儲了通道號與通道區(qū)域的地址之間的第一對應(yīng)關(guān)系,還 分別存儲了通道號與mailbox中相應(yīng)位之間的第二對應(yīng)關(guān)系。 在兩個處理器之間進(jìn)行數(shù)據(jù)傳輸?shù)姆椒鞒虉D為圖2所示,其包括以下步驟
步驟201,雙處理器中的一個處理器在DPRAM中指定的通道區(qū)域內(nèi)寫入數(shù)據(jù),向與 該指定的通道區(qū)域?qū)?yīng)的mailbox發(fā)送中斷指示;根據(jù)所述第二對應(yīng)關(guān)系,將所述中斷指示中與該指定的通道區(qū)域的通道號對應(yīng)的位設(shè)置為讀取指示。
所述指定的通道區(qū)域?yàn)楫?dāng)前需要進(jìn)行數(shù)據(jù)傳輸?shù)耐ǖ绤^(qū)域。 讀取指示的設(shè)置例如為將相應(yīng)的位設(shè)置為"l",表示讀取指示,而將相應(yīng)的位設(shè) 置為"0"則不表示讀取指示;相反地,也可以將相應(yīng)的位設(shè)置為"O",表示讀取指示,而將相 應(yīng)的位設(shè)置為"1 "則不表示讀取指示。 步驟202,與該指定的通道區(qū)域?qū)?yīng)的mailbox接收中斷指示后,向另一個處理器 觸發(fā)中斷。 步驟201與202可以無序執(zhí)行。 步驟203,所述另一個處理器讀取mailbox中的中斷指示,確定中斷指示中設(shè)置為 讀取指示的位,根據(jù)所述第二對應(yīng)關(guān)系,確定與設(shè)置為讀取指示的位對應(yīng)的通道號;在所述 第一對應(yīng)關(guān)系中查詢出與確定的通道號對應(yīng)的通道區(qū)域的地址,從相應(yīng)的通道區(qū)域讀取數(shù) 據(jù)。 DPRAM的兩個mailbox—般都為16位,mailbox的每個位對應(yīng)一個通道區(qū)域,每個 通道包括一個上行通道區(qū)域和一個下行通道區(qū)域,相應(yīng)地,通道數(shù)目最大可以為16,通道區(qū) 域的數(shù)目最大可以為32。根據(jù)將DPRAM劃分的通道數(shù)目選擇mailbox中位的使用數(shù)目,例 如,劃分為2個通道,則選擇中斷指示中的2個位表示讀取指示;再如,劃分為5個通道,則 選擇中斷指示中的5個位表示讀取指示,選擇出的每個位對應(yīng)一個通道;等等;當(dāng)劃分為16 個通道,即32個通道區(qū)域時,需要用中斷指示中的所有位,即16位表示讀取指示,這種情況 下,可以同時使用32個通道區(qū)域進(jìn)行數(shù)據(jù)傳輸。需要說明的是,中斷指示并不僅限于16位 的情況。 在通道區(qū)域中進(jìn)行數(shù)據(jù)寫入和數(shù)據(jù)讀取時,可以采用環(huán)形隊(duì)列方式實(shí)現(xiàn)。若采用 該方式,每個通道區(qū)域中除了包括用于進(jìn)行數(shù)據(jù)寫入和讀取的有效數(shù)據(jù)單元外,還包括用 于存儲寫入數(shù)據(jù)時需要的頭指針的頭指針單元,以及存儲讀取數(shù)據(jù)時需要的尾指針的尾指 針單元。 寫入數(shù)據(jù)時,在該通道區(qū)域中的頭指針存儲單元內(nèi)獲取頭指針,根據(jù)獲取的頭指
針向該通道區(qū)域中的有效數(shù)據(jù)單元中寫入數(shù)據(jù),具體地,沿著頭指針指向尾指針的方向?qū)?br>
入數(shù)據(jù);并用完成數(shù)據(jù)寫入后的頭指針更新頭指針存儲單元中存儲的頭指針。 讀取數(shù)據(jù)時,在該通道區(qū)域中的尾指針存儲單元內(nèi)獲取尾指針,根據(jù)獲取的尾指
針從該通道區(qū)域中的有效數(shù)據(jù)單元中讀取數(shù)據(jù),具體地,沿著尾指針指向頭指針的方向讀
取數(shù)據(jù);并用完成數(shù)據(jù)讀取后的尾指針更新指針存儲單元中存儲的尾指針。 在通道區(qū)域中進(jìn)行數(shù)據(jù)寫入和數(shù)據(jù)讀取,并不僅限于環(huán)形隊(duì)列方式,還可以采用
現(xiàn)有技術(shù)中已經(jīng)使用的多種實(shí)現(xiàn)方式。 將雙處理器用第一處理器和第二處理器表示,將第一處理器向第二處理器傳輸數(shù) 據(jù)的方向稱為下行,將第二處理器向第一處理器傳輸數(shù)據(jù)的方向稱為上行。為了便于說明, 下面以劃分的通道為2,即劃分的通道區(qū)域?yàn)?的情況對本發(fā)明方案進(jìn)行舉例說明,劃分后 的通道區(qū)域包括通道0上行區(qū)域、通道0下行區(qū)域、通道1上行區(qū)域和通道1下行區(qū)域,這 里假設(shè)中斷指示為16位,選擇16位中的最低位和次低位表示讀取指示。如圖3所示,用 mailbox 1對應(yīng)上行方向,中斷指示中的最低位對應(yīng)通道O,次低位對應(yīng)通道1 ;用mailbox2 對應(yīng)下行方向,中斷指示中的最低位對應(yīng)通道O,次低位對應(yīng)通道1 ;在本實(shí)施例中第一處理器具體為圖中的CPU1 ,第二處理器具體為圖中的CPU2 ;將中斷指示中的位設(shè)置為"1 ",表 示讀取指示,設(shè)置為"0",不表示讀取指示。 通過通道O上行區(qū)域進(jìn)行上行數(shù)據(jù)傳輸?shù)倪^程為CPU2往通道0上行區(qū)域?qū)?入數(shù)據(jù),往mailboxl寫入中斷指示OOOOOOOOOOOOOOOIB,其中B表示二進(jìn)制,即當(dāng)前在 上行方向上只通過通道O進(jìn)行數(shù)據(jù)傳輸,向mailboxl進(jìn)行寫入操作使得對應(yīng)的中斷引 腳拉低;腿ilboxl檢測到引腳拉低,向CPU2觸發(fā)中斷;CPU2讀取mailbox 1中的中斷指 示0000000000000001B,由于最低位為1 ,則獲知需要從通道0上行區(qū)域中讀取數(shù)據(jù),然后 CPU2清零mailboxl,從通道0上行區(qū)域中讀取數(shù)據(jù)。上述過程在圖中操作順序的001-> 002- > 003- > 004。 通過通道0下行區(qū)域進(jìn)行下行數(shù)據(jù)傳輸?shù)倪^程為CPU1往通道0下行區(qū)域?qū)懭霐?shù) 據(jù),往mailbox2寫入中斷指示0000000000000001B,即當(dāng)前在下行方向上只通過通道0進(jìn) 行數(shù)據(jù)傳輸,向mailbox2進(jìn)行寫入操作使得對應(yīng)的中斷引腳拉低;mailbox2檢測到引腳拉 低,向CPU2觸發(fā)中斷;CPU2讀取mailbox2中的中斷指示0000000000000001B,由于最低位 為l,便獲知需要從通道O下行區(qū)域中讀取數(shù)據(jù);然后CPU2清零mailbox2,從通道0下行區(qū) 域中讀取數(shù)據(jù)。上述過程在圖中操作順序的011- > 012- > 013- > 014。
同樣的道理,通過通道1進(jìn)行數(shù)據(jù)傳輸?shù)牧鞒炭赏ㄟ^圖4進(jìn)行說明。
通過通道1上行區(qū)域進(jìn)行上行數(shù)據(jù)傳輸?shù)倪^程為CPU2往通道1上行區(qū)域?qū)懭?數(shù)據(jù),往mailboxl寫入0000000000000010B,即當(dāng)前在上行方向上只通過通道1進(jìn)行數(shù)據(jù) 傳輸,向mailboxl進(jìn)行寫入操作使得對應(yīng)的中斷引腳拉低;mailboxl檢測到引腳拉低,向 CPU1觸發(fā)中斷;CPU1讀取mailboxl中的中斷指示0000000000000010B,由于次低位為l,則 獲知需要從通道1上行區(qū)域中讀取數(shù)據(jù),然后CPU1清零mailboxl,從通道1上行區(qū)域中讀 取數(shù)據(jù)。上述過程在圖中操作順序的101- > 102- > 103- > 104。 通過通道1下行區(qū)域進(jìn)行下行數(shù)據(jù)傳輸?shù)倪^程為CPU1往通道1下行區(qū)域?qū)懭?數(shù)據(jù),往mailbox2寫入0000000000000010B,即當(dāng)前在下行方向上只通過通道1進(jìn)行數(shù)據(jù) 傳輸,向mailbox2進(jìn)行寫入操作使得對應(yīng)的中斷引腳拉低;mailbox2檢測到引腳拉低,向 CPU2觸發(fā)中斷;CPU2讀取mailbox2中的中斷指示0000000000000010B,由于次低位為l,便 獲知需要從通道1下行區(qū)域中讀取數(shù)據(jù);然后CPU2清零mailbox2,從通道1下行區(qū)域中讀 取數(shù)據(jù)。上述過程在圖中操作順序的111- > 112- > 113- > 114。 類似地,在上行方向上,還可以同時通過通道O和通道l進(jìn)行數(shù)據(jù)傳輸,這種 情況下,CPU2往通道0上行區(qū)域和通道1上行區(qū)域分別寫入數(shù)據(jù),往mailboxl寫入 0000000000000011B,向mailboxl進(jìn)行寫入操作使得對應(yīng)的中斷引腳拉低;CPU1檢測到引 腳拉低,向CPU2觸發(fā)中斷;CPU2讀取mailboxl中的中斷指示0000000000000011B,由于最 低位和次低位都為l,則獲知需要從通道O上行區(qū)域和通道l上行區(qū)域中讀取數(shù)據(jù),然后 CPU2清零mailboxl,從通道0上行區(qū)域和通道1上行區(qū)域中讀取數(shù)據(jù)。
本發(fā)明將DPRAM劃分為至少兩個通道區(qū)域,每個通道區(qū)域用中斷指示中的一個位
指示其讀取情況,實(shí)現(xiàn)了同時通過至少兩個通道區(qū)域進(jìn)行數(shù)據(jù)傳輸;而不是像現(xiàn)有技術(shù)那 樣將DPRAM劃分為四個存儲區(qū),只能在四個存儲區(qū)中采用固定的方式進(jìn)行數(shù)據(jù)傳輸;從而, 提高了雙處理器之間進(jìn)行數(shù)據(jù)傳輸?shù)撵`活性和通用性。 以上所述的具體實(shí)施例,對本發(fā)明的目的、技術(shù)方案和有益效果進(jìn)行了進(jìn)一步詳細(xì)說明,所應(yīng)理解的是,以上所述僅為本發(fā)明的具體實(shí)施例而已,并不用于限定本發(fā)明的保 護(hù)范圍,凡在本發(fā)明的精神和原則之內(nèi),所做的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本 發(fā)明的保護(hù)范圍之內(nèi)。
權(quán)利要求
一種雙處理器之間進(jìn)行通信的方法,其特征在于,將雙端口隨機(jī)存取存儲器DPRAM劃分為至少兩個通道區(qū)域,所述通道區(qū)域包括用于傳輸上行數(shù)據(jù)的上行通道區(qū)域和用于傳輸下行數(shù)據(jù)的下行通道區(qū)域,所有的上行數(shù)據(jù)通道區(qū)域?qū)?yīng)一個郵箱mailbox,所有的下行數(shù)據(jù)通道區(qū)域?qū)?yīng)另一個mailbox,為每個通道區(qū)域設(shè)置一個通道號,每個通道區(qū)域?qū)?yīng)中斷指示中的一個位;雙處理器內(nèi)分別存儲了通道號與通道區(qū)域的地址之間的第一對應(yīng)關(guān)系,還分別存儲了通道號與mailbox中相應(yīng)位之間的第二對應(yīng)關(guān)系;該方法包括所述雙處理器中的一個處理器在DPRAM中指定的通道區(qū)域內(nèi)寫入數(shù)據(jù),向與該指定的通道區(qū)域?qū)?yīng)的mailbox發(fā)送中斷指示;根據(jù)所述第二對應(yīng)關(guān)系,將所述中斷指示中與該指定的通道區(qū)域的通道號對應(yīng)的位設(shè)置為讀取指示;所述與該指定的通道區(qū)域?qū)?yīng)的mailbox接收中斷指示后,向另一個處理器觸發(fā)中斷;所述另一個處理器讀取mailbox中的中斷指示,確定中斷指示中設(shè)置為讀取指示的位,根據(jù)所述第二對應(yīng)關(guān)系,確定與設(shè)置為讀取指示的位對應(yīng)的通道號;在所述第一對應(yīng)關(guān)系中查詢出與確定的通道號對應(yīng)的通道區(qū)域的地址,從相應(yīng)的通道區(qū)域讀取數(shù)據(jù)。
2. 如權(quán)利要求l所述的方法,其特征在于,所述mailbox為16位,所述通道區(qū)域的數(shù)目 最大為32。
3. 如權(quán)利要求1或2所述的方法,其特征在于,所述在DPRAM中指定的通道區(qū)域?qū)懭霐?shù) 據(jù)包括在所述指定的通道區(qū)域中的頭指針存儲單元內(nèi)獲取頭指針,根據(jù)獲取的頭指針向所述 指定的通道區(qū)域中的有效數(shù)據(jù)單元中寫入數(shù)據(jù),并用完成數(shù)據(jù)寫入后的頭指針更新頭指針 存儲單元中存儲的頭指針;所述從相應(yīng)的通道區(qū)域讀取數(shù)據(jù)包括在所述指定的通道區(qū)域中的尾指針存儲單元內(nèi)獲取尾指針,根據(jù)獲取的尾指針從所述 指定的通道區(qū)域中的有效數(shù)據(jù)單元中讀取數(shù)據(jù),并用完成數(shù)據(jù)讀取后的尾指針更新指針存 儲單元中存儲的尾指針。
全文摘要
本發(fā)明公開了雙處理器之間進(jìn)行通信的方法,包括將雙端口隨機(jī)存取存儲器DPRAM劃分為至少兩個通道區(qū)域,所述通道區(qū)域包括用于傳輸上行數(shù)據(jù)的上行通道區(qū)域和用于傳輸下行數(shù)據(jù)的下行通道區(qū)域,所有的上行數(shù)據(jù)通道區(qū)域?qū)?yīng)一個郵箱mailbox,所有的下行數(shù)據(jù)通道區(qū)域?qū)?yīng)另一個mailbox,為每個通道區(qū)域設(shè)置一個通道號,每個通道區(qū)域?qū)?yīng)中斷指示中的一個位;雙處理器內(nèi)分別存儲了通道號與通道區(qū)域的地址之間的第一對應(yīng)關(guān)系,還分別存儲了通道號與mailbox中相應(yīng)位之間的第二對應(yīng)關(guān)系;本發(fā)明通過mailbox進(jìn)行通信過程中通道號的通知,從而,實(shí)現(xiàn)雙處理器之間的通信。本發(fā)明方案提高了雙處理器之間進(jìn)行通信的靈活性和通用性。
文檔編號G06F15/163GK101788973SQ20101000236
公開日2010年7月28日 申請日期2010年1月12日 優(yōu)先權(quán)日2010年1月12日
發(fā)明者嚴(yán)克劍 申請人:深圳市同洲電子股份有限公司