專利名稱:一種芯片內部處理器之間的通信方法
技術領域:
本發(fā)明涉及到一種在芯片內部處理器之間的通信方法。
背景技術:
隨著芯片技術的發(fā)展,在單一的芯片內部設置多個處理器以分別運行不同的應用 軟件在現(xiàn)在的芯片技術中得到了廣泛的應用,例如,在移動終端的基帶芯片中,通常會包含 一個ARM處理器和多個DSP處理器,其中,ARM處理器用于運行操作系統(tǒng)、應用層軟件、協(xié)議 棧軟件等,而DSP處理器用于運行物理層軟件。不同的應用軟件之間常常需要交互數(shù)據(jù),如果多個應用軟件分別運行在不同的處 理器上,要實現(xiàn)它們之間的數(shù)據(jù)交互就需要實現(xiàn)不同的處理器之間的通信,以移動終端的 基帶芯片為例,協(xié)議棧與物理層之間需要進行頻繁的數(shù)據(jù)交互,而由于協(xié)議棧一般運行在 ARM處理器上,而物理層軟件一般運行在DSP處理器上,因此,協(xié)議棧與物理層之間的數(shù)據(jù) 交互實際上依賴于ARM與DSP之間的通信?,F(xiàn)有技術實現(xiàn)芯片內部不同處理器之間的通信通常采用共享數(shù)據(jù)區(qū)的方式來實 現(xiàn)1、在需要交互數(shù)據(jù)的處理器之間設置多個數(shù)據(jù)存儲塊組成的共享數(shù)據(jù)區(qū);2、為每個數(shù)據(jù)存儲塊分配一個中斷資源;3、發(fā)送數(shù)據(jù)的處理器將數(shù)據(jù)寫入一個空閑的數(shù)據(jù)存儲塊;4、發(fā)送數(shù)據(jù)的處理器發(fā)送該數(shù)據(jù)存儲塊所對應的中斷給接收數(shù)據(jù)的處理器;5、接收數(shù)據(jù)的處理器響應發(fā)送數(shù)據(jù)的處理器發(fā)送的中斷;6、接收數(shù)據(jù)的處理器處理中斷對應的數(shù)據(jù)存儲塊中的數(shù)據(jù);現(xiàn)有技術的實現(xiàn)方法存在以下兩點問題1、當處理器之間交互的數(shù)據(jù)量很大,很密集的時候,需要的數(shù)據(jù)存儲塊也相應會 很多,而上述實現(xiàn)方法是針對每一個數(shù)據(jù)存儲塊分配一個中斷資源,這樣,會占用很多的 系統(tǒng)中斷資源,造成系統(tǒng)中斷資源的浪費。2、當處理器間通信的數(shù)據(jù)吞吐量很大時,系統(tǒng)中斷會很頻繁,這樣,可能會存在中 斷丟失、覆蓋的情況,上述實現(xiàn)方法在這種情況下可能會造成某一個或多個數(shù)據(jù)存儲塊中 的數(shù)據(jù)不能及時被接收甚至無法被接收的問題。例如,以TDSCDMA系統(tǒng)中的HSPA業(yè)務來說,數(shù)據(jù)業(yè)務過程中的基帶芯片的ARM處 理器和DSP處理器之間的數(shù)據(jù)交互極端情況數(shù)據(jù)傳輸要求5毫秒內數(shù)據(jù)吞吐量在151cbitS, 每5毫秒之間原語交互次數(shù)極限6次,雙向各3次。這種密集的原語交互很可能會造成中 斷覆蓋、丟失的情況,從而造成原語不能及時被接收甚至丟失原語。
發(fā)明內容
有鑒于此,本發(fā)明提出了一種芯片內部處理器之間的通信方法,以解決現(xiàn)有技術 中存在占用過多系統(tǒng)中斷資源以及數(shù)據(jù)不能被及時接收甚至丟失的問題。
本發(fā)明的技術方案包括,一種芯片內部處理器向其他處理器發(fā)送數(shù)據(jù)的方法步驟A、在處理器與每個需接收其發(fā)送的數(shù)據(jù)的處理器之間分別設置至少1個共 享數(shù)據(jù)區(qū),每個共享數(shù)據(jù)區(qū)由η個數(shù)據(jù)存儲塊組成;其中,η為大于1的整數(shù);步驟B、為每個共享數(shù)據(jù)區(qū)設置一個讀指針、一個寫指針和一個中斷資源;其中讀指針指示下一個待處理的數(shù)據(jù)存儲塊,寫指針指示下一個空閑數(shù)據(jù)存儲 塊;步驟C、處理器根據(jù)讀指針和寫指針判斷相應共享數(shù)據(jù)區(qū)是否還有空閑數(shù)據(jù)存儲 塊;步驟D、如果共享數(shù)據(jù)區(qū)有空閑數(shù)據(jù)存儲塊,處理器根據(jù)寫指針的指示將數(shù)據(jù)寫入 空閑數(shù)據(jù)存儲塊并修改寫指針;步驟Ε、處理器發(fā)送中斷,通知需接收數(shù)據(jù)的處理器接收數(shù)據(jù)。進一步的,所述步驟C包括處理器判斷讀指針指向的數(shù)據(jù)存儲塊是否是寫指針所指向的數(shù)據(jù)存儲塊的下一 個數(shù)據(jù)存儲塊,如果是,判斷共享數(shù)據(jù)區(qū)中無空閑數(shù)據(jù)存儲塊;如果不是,判斷共享數(shù)據(jù)區(qū) 有空閑數(shù)據(jù)存儲塊。其中,如果寫指針所指向的數(shù)據(jù)存儲塊為共享數(shù)據(jù)區(qū)的最后一個數(shù)據(jù)存儲塊,其 下一個數(shù)據(jù)存儲塊為共享數(shù)據(jù)區(qū)的第一個數(shù)據(jù)存儲塊。進一步的,所述步驟D包括處理器將數(shù)據(jù)寫入寫指針所指向的數(shù)據(jù)存儲塊;修改寫指針使其指向下一個數(shù)據(jù)存儲塊;其中,如果寫指針所指向的數(shù)據(jù)存儲塊為共享數(shù)據(jù)區(qū)的最后一個數(shù)據(jù)存儲塊,其 下一個數(shù)據(jù)存儲塊為共享數(shù)據(jù)區(qū)的第一個數(shù)據(jù)存儲塊。一種芯片內部處理器從其他處理器接收數(shù)據(jù)的方法處理器從發(fā)送數(shù)據(jù)處理器向其發(fā)送數(shù)據(jù)的共享數(shù)據(jù)區(qū)讀取數(shù)據(jù);步驟Α、處理器響應發(fā)送數(shù)據(jù)處理器發(fā)送過來的中斷;步驟B、處理器根據(jù)中斷對應的共享數(shù)據(jù)區(qū)的讀指針和寫指針判斷該共享數(shù)據(jù)區(qū) 中是否有未處理的數(shù)據(jù);步驟C、如果有未處理的數(shù)據(jù),處理器根據(jù)讀指針和寫指針處理相應共享數(shù)據(jù)區(qū)的 數(shù)據(jù)存儲塊中的數(shù)據(jù),修改讀指針;步驟D、如果沒有未處理的數(shù)據(jù),處理器不進行處理。進一步的,所述步驟B包括處理器比較該共享數(shù)據(jù)區(qū)的讀指針和寫指針;如果讀指針小于寫指針,未處理的數(shù)據(jù)存儲塊包括讀指針所指向的數(shù)據(jù)存儲塊到 寫指針所指向數(shù)據(jù)存儲塊的上一個數(shù)據(jù)存儲塊;如果讀指針大于寫指針,未處理的數(shù)據(jù)存 儲塊包括讀指針指向的數(shù)據(jù)塊到共享數(shù)據(jù)區(qū)域的最后一個數(shù)據(jù)塊以及共享數(shù)據(jù)區(qū)域的第 一個數(shù)據(jù)塊到寫指針所指向數(shù)據(jù)存儲塊的上一個數(shù)據(jù)存儲塊;如果讀指針等于寫指針,沒 有未處理的數(shù)據(jù)塊。
進一步的,所述步驟C包括處理器比較該共享數(shù)據(jù)區(qū)的讀指針和寫指針;處理器讀取所有未處理的數(shù)據(jù)存儲塊中的數(shù)據(jù);修改讀指針為讀指針+本次處理 的數(shù)據(jù)存儲塊數(shù)。進一步的,所述步驟C包括處理器處理一個未處理的數(shù)據(jù)存儲塊中的數(shù)據(jù);判斷讀指針是否指向該數(shù)據(jù)存儲塊;如果讀指針指向該數(shù)據(jù)存儲塊,判斷是否還有未處理的數(shù)據(jù)存儲塊;如果有未處 理的數(shù)據(jù)存儲塊,修改讀指針,使其指向下一個未處理的數(shù)據(jù)存儲塊;如果沒有未處理的數(shù) 據(jù)存儲塊,修改讀指針,使其指向寫指針所指向的數(shù)據(jù)存儲塊;如果讀指針未指向該數(shù)據(jù)存儲塊,將該數(shù)據(jù)塊標識為已處理;其中,所述是否還有未處理的數(shù)據(jù)存儲塊的判斷范圍為,如果讀指針小于寫指針, 判斷范圍為該數(shù)據(jù)存儲塊到寫指針所指向數(shù)據(jù)存儲塊的上一個數(shù)據(jù)存儲塊;如果讀指針大 于寫指針,判斷范圍為該數(shù)據(jù)存儲塊到共享數(shù)據(jù)區(qū)域的最后一個數(shù)據(jù)塊以及共享數(shù)據(jù)區(qū)域 的第一個數(shù)據(jù)塊到寫指針所指向數(shù)據(jù)存儲塊的上一個數(shù)據(jù)存儲塊。本發(fā)明的技術方案為每個共享數(shù)據(jù)區(qū)分別設置一個讀指針和一個寫指針以指示 該共享數(shù)據(jù)區(qū)中各數(shù)據(jù)存儲塊的使用情況,僅為每一個共享數(shù)據(jù)區(qū)分配一個中斷資源,發(fā) 送數(shù)據(jù)的處理器在每次將數(shù)據(jù)寫入共享數(shù)據(jù)區(qū)中的數(shù)據(jù)存儲塊后,發(fā)送同一個中斷通知接 收數(shù)據(jù)的處理器,接收數(shù)據(jù)的處理器響應該中斷時,可以處理數(shù)據(jù)共享數(shù)據(jù)區(qū)中的所有未 處理數(shù)據(jù)存儲塊,這樣,即使在數(shù)據(jù)交互吞吐量較大,出現(xiàn)中斷的覆蓋、丟失時,也能有效避 免數(shù)據(jù)接收的不及時或無法接收數(shù)據(jù)的情況。
圖1是現(xiàn)有技術芯片內部不同處理器之間通信方法流程2是本發(fā)明具體實施例1流程3是本發(fā)明具體實施例2流程4是本發(fā)明具體實施例3流程圖
具體實施例方式為清楚說明本發(fā)明的技術方案,下面給出優(yōu)選的實施例并結合附圖詳細說明。本發(fā)明的優(yōu)選實施例1、2、3的應用場景為移動通信終端基帶芯片內部ARM處理器 與DSP處理器之間的通信過程,在各優(yōu)選實施例中,已預先為ARM設置了一個包含η個數(shù)據(jù) 存儲塊的共享數(shù)據(jù)區(qū)BUFFER_A2D用于ARM處理器向DSP處理器發(fā)送通信原語;為DSP設置 了一個包含η個數(shù)據(jù)存儲塊的共享數(shù)據(jù)區(qū)BUFFER_D2A用于DSP處理器向ARM處理器發(fā)送 通信原語,η為大于1的整數(shù)。具體實施例1本實施例應用場景為移動通信終端基帶芯片中ARM處理器向DSP處理器發(fā)送通信 原語,具體流程如附圖2所示本實施例中,ARM處理器通過BUFFER_A2D向DSP處理器發(fā)送通信原語;為BUFFER_A2D設置一個讀指針CPD_R、一個寫指針CPA_W和一個中斷資源MB_A2D ;本實施例中,讀指針和寫指針初始值均指向共享數(shù)據(jù)區(qū)的第一個數(shù)據(jù)存儲塊,即 CPD_R = CPD_R = 1 ;1、數(shù)據(jù)發(fā)送開始后,ARM處理器每次發(fā)送通信原語時,首先檢測共享數(shù)據(jù)區(qū)是否還 有空閑數(shù)據(jù)存儲塊;ARM處理器判斷(CPA_W% η) +1是否等于CPD_R,如果是執(zhí)行步驟6,否則執(zhí)行步驟 4;2、ARM處理器根據(jù)寫指針的指示將數(shù)據(jù)寫入空閑數(shù)據(jù)存儲塊并修改寫指針;ARM處理器將需發(fā)送的通信原語寫入寫指針指向的數(shù)據(jù)存儲塊;修改寫指針,CPA_ff= (CPA_ff% n)+l03、ARM處理器發(fā)送中斷MB_A2D給DSP處理器;4、ARM處理器判斷是否還有其通信原語需發(fā)送,如是返回步驟3,否則執(zhí)行步驟5。5、ARM結束本次數(shù)據(jù)發(fā)送過程。具體實施例2 本實施例應用場景為移動終端基帶芯片內的DSP處理器接收ARM處理器發(fā)送的通 信原語,具體流程如附圖3所示本實施例中,DSP處理器從共享數(shù)據(jù)區(qū)BUFFER_A2D接收通信原語;預先為該共享數(shù)據(jù)區(qū)設置了一個讀指針CPD_R、一個寫指針CPA_W和一個中斷資 源 MB_A2D ;1、DSP處理器響應MB_A2D中斷;2、DSP處理器判斷MB_A2D中斷對應的共享數(shù)據(jù)區(qū)中是否有未處理的數(shù)據(jù);DSP處理器比較CPD_R和CPA_W,如果CPD_R小于CPA_W,執(zhí)行步驟3,如果CPD_R 大于CPA_W,執(zhí)行步驟4,如果CPD_R等于CPA_W,執(zhí)行步驟6 ;3、DSP處理器讀取從CPD_R指向的數(shù)據(jù)存儲塊開始到CPA_W_1所指向的數(shù)據(jù)存儲 塊中的數(shù)據(jù);執(zhí)行步驟5;4, DSP處理器讀取從CPD_R指向的數(shù)據(jù)存儲塊開始到共享數(shù)據(jù)區(qū)最后一個數(shù)據(jù)存 儲塊以及從共享數(shù)據(jù)區(qū)第一個數(shù)據(jù)存儲塊開始到CPA_W_1所指向的數(shù)據(jù)存儲塊中的數(shù)據(jù);5、DSP處理器修改CPD_R,CPD_R = CPD_R+本次處理的數(shù)據(jù)存儲塊數(shù);6、DSP處理器結束從ARM處理器接收通信原語的過程。具體實施例3本實施例應用場景為移動終端基帶芯片內的ARM處理器接收DSP處理器發(fā)送的通 信原語,具體流程如附圖4所示本實施例中,ARM處理器從預先設置的DSP處理器向ARM處理器發(fā)送數(shù)據(jù)的共享 數(shù)據(jù)區(qū)BUFFER_D2A接收通信原語;預先為該共享數(shù)據(jù)區(qū)設置了一個讀指針CPA_R、一個寫指針CPD_W和一個中斷資 源 MB_D2A ;1、ARM處理器響應MB_D2A中斷;2、ARM處理器操作系統(tǒng)調度需接收通信原語的任務;
33冊處理器判斷1^_02々中斷對應的共享數(shù)據(jù)區(qū)中是否有未處理的數(shù)據(jù);ARM處理器比較CPD_ff,如果CPA_R = CPD_ff,判斷共享數(shù)據(jù)區(qū)中沒有未處 理的數(shù)據(jù)存儲塊,執(zhí)行步驟6,否則執(zhí)行步驟4 ;4、ARM處理器處理相應共享數(shù)據(jù)區(qū)的各數(shù)據(jù)存儲塊中的數(shù)據(jù),修改讀指針;401、ARM處理器處理一個未處理的數(shù)據(jù)存儲塊中的數(shù)據(jù);402.ARM處理器判斷CPA_R是否指向該數(shù)據(jù)存儲塊,如果是,執(zhí)行步驟403,否則執(zhí) 行步驟406 ;403、判斷是否還有未處理的數(shù)據(jù)存儲塊,如果有執(zhí)行步驟404,否則執(zhí)行步驟 405 ;本步驟中,判斷還有未處理的數(shù)據(jù)存儲塊的依據(jù)為判斷范圍內除本次處理的數(shù)據(jù)存儲塊之外還有未標記為已處理的數(shù)據(jù)存儲塊。404、修改CPA_R,使其指向下一個未處理的數(shù)據(jù)存儲塊,執(zhí)行步驟5 ;405、修改CPA_R,使其指向CPD_W所指向的數(shù)據(jù)存儲塊,執(zhí)行步驟6 ;406、將該數(shù)據(jù)塊標識為已處理;其中,所述是否還有未處理的數(shù)據(jù)存儲塊的判斷范圍為,如果CPA_R小于CPD_W, 判斷范圍為該數(shù)據(jù)存儲塊到CPD_W所指向數(shù)據(jù)存儲塊的上一個數(shù)據(jù)存儲塊;如果
于CPD_W,判斷范圍為該數(shù)據(jù)存儲塊到共享數(shù)據(jù)區(qū)域的最后一個數(shù)據(jù)塊以及共享數(shù)據(jù)區(qū)域 的第一個數(shù)據(jù)塊到CPD_W所指向數(shù)據(jù)存儲塊的上一個數(shù)據(jù)存儲塊。5、ARM判斷正在運行的任務是否還需要處理數(shù)據(jù),如果是執(zhí)行步驟4,否則執(zhí)行步 驟6 ;6、ARM結束本次數(shù)據(jù)處理過程。在本實施例中,ARM處理器作為接收數(shù)據(jù)處理器,由于ARM可以操作外部存儲單 元,因此,在ARM系統(tǒng)對數(shù)據(jù)進行處理過程中,直接在共享數(shù)據(jù)區(qū)中對數(shù)據(jù)進行處理而不需 要將原語數(shù)據(jù)讀取到其自身的RAM空間中再進行處理。提高了存儲空間利用率,減少數(shù)據(jù) 搬移時間以及對總線占用時間,同時,由于ARM系統(tǒng)是操作系統(tǒng)調度任務運行的方式,不同 原語可能有不同優(yōu)先級任務進行處理,因此ARM收到數(shù)據(jù)后并不一定會立即進行處理,而 是通過任務調度,在相關任務執(zhí)行時才對數(shù)據(jù)進行處理。由于ARM系統(tǒng)的任務調度以及任 務優(yōu)先級的影響,不同數(shù)據(jù)存儲塊中的通信原語可能被不同優(yōu)先級的任務進行處理,這就 會產(chǎn)生低優(yōu)先級任務處理位置在前的數(shù)據(jù)存儲塊,而高優(yōu)先級任務處理位置在后的數(shù)據(jù)存 儲塊的情況。高優(yōu)先級任務會先完成數(shù)據(jù)處理,如果每個任務處理完其對應的數(shù)據(jù)存儲塊 后直接修改CPA_R會造成空閑數(shù)據(jù)存儲塊不連續(xù)的情況,在本實施例步驟3中,ARM處理完 一個數(shù)據(jù)存儲塊后并不直接釋放該數(shù)據(jù)存儲塊(修改CPA_R),而是判斷在該數(shù)據(jù)存儲塊之 前是否還有未處理的數(shù)據(jù)存儲塊,如果還有,則不修改CPA_R,僅將該數(shù)據(jù)存儲塊標識為“已 處理”,等待后續(xù)任務處理完在其之前的數(shù)據(jù)存儲塊后再修改CPA_R,有效的避免了空閑數(shù) 據(jù)存儲塊不連續(xù)的情況。以上所述僅為本發(fā)明的優(yōu)選實施例,并不用于限制本發(fā)明,顯然,本領域的技術人 員可以對本發(fā)明進行各種改動和變型而不脫離本發(fā)明的精神和范圍。這樣,倘若本發(fā)明的 這些修改和變型屬于本發(fā)明權利要求及其等同技術的范圍之內,則本發(fā)明也意圖包含這些 改動和變型在內。
權利要求
1.一種芯片內部處理器向其他處理器發(fā)送數(shù)據(jù)的方法,其特征在于,包括步驟A、在處理器與每個需接收其發(fā)送的數(shù)據(jù)的處理器之間分別設置至少1個共享數(shù) 據(jù)區(qū),每個共享數(shù)據(jù)區(qū)由η個數(shù)據(jù)存儲塊組成; 其中,η為大于1的整數(shù);步驟B、為每個共享數(shù)據(jù)區(qū)設置一個讀指針、一個寫指針和一個中斷資源; 其中,讀指針指示待處理的數(shù)據(jù)存儲塊,寫指針指示空閑數(shù)據(jù)存儲塊; 步驟C、處理器根據(jù)讀指針和寫指針判斷相應共享數(shù)據(jù)區(qū)是否還有空閑數(shù)據(jù)存儲塊; 步驟D、如果共享數(shù)據(jù)區(qū)有空閑數(shù)據(jù)存儲塊,處理器根據(jù)寫指針的指示將數(shù)據(jù)寫入空閑 數(shù)據(jù)存儲塊并修改寫指針;步驟Ε、處理器發(fā)送中斷,通知需接收數(shù)據(jù)的處理器接收數(shù)據(jù)。
2.根據(jù)權利要求1所述的一種芯片內部處理器向其他處理器發(fā)送數(shù)據(jù)的方法,其特征 在于,所述步驟C包括處理器判斷讀指針指向的數(shù)據(jù)存儲塊是否是寫指針所指向的數(shù)據(jù)存儲塊的下一個數(shù) 據(jù)存儲塊,如果是,判斷共享數(shù)據(jù)區(qū)中無空閑數(shù)據(jù)存儲塊;如果不是,判斷共享數(shù)據(jù)區(qū)有空 閑數(shù)據(jù)存儲塊;其中,如果寫指針所指向的數(shù)據(jù)存儲塊為共享數(shù)據(jù)區(qū)的最后一個數(shù)據(jù)存儲塊,其下一 個數(shù)據(jù)存儲塊為共享數(shù)據(jù)區(qū)的第一個數(shù)據(jù)存儲塊。
3.根據(jù)權利要求1或2所述的一種芯片內部處理器向其他處理器發(fā)送數(shù)據(jù)的方法,其 特征在于,所述步驟D包括處理器將數(shù)據(jù)寫入寫指針所指向的數(shù)據(jù)存儲塊; 修改寫指針使其指向下一個數(shù)據(jù)存儲塊;其中,如果寫指針所指向的數(shù)據(jù)存儲塊為共享數(shù)據(jù)區(qū)的最后一個數(shù)據(jù)存儲塊,其下一 個數(shù)據(jù)存儲塊為共享數(shù)據(jù)區(qū)的第一個數(shù)據(jù)存儲塊。
4.一種芯片內部處理器從其他處理器接收數(shù)據(jù)的方法,其特征在于,包括 處理器從發(fā)送數(shù)據(jù)處理器向其發(fā)送數(shù)據(jù)的共享數(shù)據(jù)區(qū)讀取數(shù)據(jù);步驟Α、處理器響應發(fā)送數(shù)據(jù)處理器發(fā)送過來的中斷;步驟B、處理器根據(jù)中斷對應的共享數(shù)據(jù)區(qū)的讀指針和寫指針判斷該共享數(shù)據(jù)區(qū)中是 否有未處理的數(shù)據(jù);步驟C、如果有未處理的數(shù)據(jù),處理器根據(jù)讀指針和寫指針處理相應共享數(shù)據(jù)區(qū)的數(shù)據(jù) 存儲塊中的數(shù)據(jù),修改讀指針;步驟D、如果沒有未處理的數(shù)據(jù),處理器不進行處理。
5.根據(jù)權利要求4所述的一種芯片內部處理器從其他處理器接收數(shù)據(jù)的方法,其特征 在于,所述步驟B包括處理器比較該共享數(shù)據(jù)區(qū)的讀指針和寫指針;如果讀指針小于寫指針,未處理的數(shù)據(jù)存儲塊包括讀指針所指向的數(shù)據(jù)存儲塊到寫指 針所指向數(shù)據(jù)存儲塊的上一個數(shù)據(jù)存儲塊;如果讀指針大于寫指針,未處理的數(shù)據(jù)存儲塊 包括讀指針指向的數(shù)據(jù)塊到共享數(shù)據(jù)區(qū)域的最后一個數(shù)據(jù)塊以及共享數(shù)據(jù)區(qū)域的第一個 數(shù)據(jù)塊到寫指針所指向數(shù)據(jù)存儲塊的上一個數(shù)據(jù)存儲塊;如果讀指針等于寫指針,沒有未 處理的數(shù)據(jù)塊。
6.根據(jù)權利要求4或5所述的一種芯片內部處理器從其他處理器接收數(shù)據(jù)的方法,其 特征在于,所述步驟C包括處理器比較該共享數(shù)據(jù)區(qū)的讀指針和寫指針;處理器讀取所有未處理的數(shù)據(jù)存儲塊中的數(shù)據(jù);修改讀指針為讀指針+本次處理的數(shù) 據(jù)存儲塊數(shù)。
7.根據(jù)權利要求4或5所述的一種芯片內部處理器從其他處理器接收數(shù)據(jù)的方法,其 特征在于,所述步驟C包括處理器處理一個未處理的數(shù)據(jù)存儲塊中的數(shù)據(jù);判斷讀指針是否指向該數(shù)據(jù)存儲塊;如果讀指針指向該數(shù)據(jù)存儲塊,判斷是否還有未處理的數(shù)據(jù)存儲塊;如果有未處理的 數(shù)據(jù)存儲塊,修改讀指針,使其指向下一個未處理的數(shù)據(jù)存儲塊;如果沒有未處理的數(shù)據(jù)存 儲塊,修改讀指針,使其指向寫指針所指向的數(shù)據(jù)存儲塊;如果讀指針未指向該數(shù)據(jù)存儲塊,將該數(shù)據(jù)塊標識為已處理;其中,所述是否還有未處理的數(shù)據(jù)存儲塊的判斷范圍為,如果讀指針小于寫指針,判斷 范圍為該數(shù)據(jù)存儲塊到寫指針所指向數(shù)據(jù)存儲塊的上一個數(shù)據(jù)存儲塊;如果讀指針大于寫 指針,判斷范圍為該數(shù)據(jù)存儲塊到共享數(shù)據(jù)區(qū)域的最后一個數(shù)據(jù)塊以及共享數(shù)據(jù)區(qū)域的第 一個數(shù)據(jù)塊到寫指針所指向數(shù)據(jù)存儲塊的上一個數(shù)據(jù)存儲塊。
全文摘要
本發(fā)明公開了一種芯片內部處理器之間的通信方法,處理器之間通過由多個數(shù)據(jù)存儲塊組成的共享數(shù)據(jù)區(qū)來實現(xiàn)通信,為每個共享數(shù)據(jù)區(qū)設置一個讀指針、一個寫指針和一個中斷資源,發(fā)送數(shù)據(jù)處理器將數(shù)據(jù)寫入共享數(shù)據(jù)區(qū)的空閑數(shù)據(jù)存儲塊中,修改寫指針指向下一個空閑數(shù)據(jù)塊,發(fā)送中斷通知接收處理器;接收數(shù)據(jù)處理器響應中斷,根據(jù)讀指針和寫指針的指示處理共享數(shù)據(jù)區(qū)中的未處理數(shù)據(jù)存儲塊中的數(shù)據(jù),修改讀指針,完成數(shù)據(jù)接收,本發(fā)明的技術方案使用一對中斷即可完成兩個處理器之間的數(shù)據(jù)通信,減少了對系統(tǒng)中斷資源的占用,同時,也避免了由于中斷覆蓋或丟失造成的數(shù)據(jù)處理不及時或數(shù)據(jù)丟失的情況。
文檔編號G06F12/06GK102117261SQ20091025083
公開日2011年7月6日 申請日期2009年12月30日 優(yōu)先權日2009年12月30日
發(fā)明者萬兵, 周勃, 夏軍, 孔棟, 宋遠峰, 李暾, 王茂林, 胡麗麗, 陳俊華 申請人:重慶重郵信科通信技術有限公司