一种芯片内部处理器之间的通信方法

文档序号:6585844阅读:187来源:国知局
专利名称:一种芯片内部处理器之间的通信方法
技术领域
本发明涉及到一种在芯片内部处理器之间的通信方法。
背景技术
随着芯片技术的发展,在单一的芯片内部设置多个处理器以分别运行不同的应用 软件在现在的芯片技术中得到了广泛的应用,例如,在移动终端的基带芯片中,通常会包含 一个ARM处理器和多个DSP处理器,其中,ARM处理器用于运行操作系统、应用层软件、协议 栈软件等,而DSP处理器用于运行物理层软件。不同的应用软件之间常常需要交互数据,如果多个应用软件分别运行在不同的处 理器上,要实现它们之间的数据交互就需要实现不同的处理器之间的通信,以移动终端的 基带芯片为例,协议栈与物理层之间需要进行频繁的数据交互,而由于协议栈一般运行在 ARM处理器上,而物理层软件一般运行在DSP处理器上,因此,协议栈与物理层之间的数据 交互实际上依赖于ARM与DSP之间的通信。现有技术实现芯片内部不同处理器之间的通信通常采用共享数据区的方式来实 现1、在需要交互数据的处理器之间设置多个数据存储块组成的共享数据区;2、为每个数据存储块分配一个中断资源;3、发送数据的处理器将数据写入一个空闲的数据存储块;4、发送数据的处理器发送该数据存储块所对应的中断给接收数据的处理器;5、接收数据的处理器响应发送数据的处理器发送的中断;6、接收数据的处理器处理中断对应的数据存储块中的数据;现有技术的实现方法存在以下两点问题1、当处理器之间交互的数据量很大,很密集的时候,需要的数据存储块也相应会 很多,而上述实现方法是针对每一个数据存储块分配一个中断资源,这样,会占用很多的 系统中断资源,造成系统中断资源的浪费。2、当处理器间通信的数据吞吐量很大时,系统中断会很频繁,这样,可能会存在中 断丢失、覆盖的情况,上述实现方法在这种情况下可能会造成某一个或多个数据存储块中 的数据不能及时被接收甚至无法被接收的问题。例如,以TDSCDMA系统中的HSPA业务来说,数据业务过程中的基带芯片的ARM处 理器和DSP处理器之间的数据交互极端情况数据传输要求5毫秒内数据吞吐量在151cbitS, 每5毫秒之间原语交互次数极限6次,双向各3次。这种密集的原语交互很可能会造成中 断覆盖、丢失的情况,从而造成原语不能及时被接收甚至丢失原语。

发明内容
有鉴于此,本发明提出了一种芯片内部处理器之间的通信方法,以解决现有技术 中存在占用过多系统中断资源以及数据不能被及时接收甚至丢失的问题。
本发明的技术方案包括,一种芯片内部处理器向其他处理器发送数据的方法步骤A、在处理器与每个需接收其发送的数据的处理器之间分别设置至少1个共 享数据区,每个共享数据区由η个数据存储块组成;其中,η为大于1的整数;步骤B、为每个共享数据区设置一个读指针、一个写指针和一个中断资源;其中读指针指示下一个待处理的数据存储块,写指针指示下一个空闲数据存储 块;步骤C、处理器根据读指针和写指针判断相应共享数据区是否还有空闲数据存储 块;步骤D、如果共享数据区有空闲数据存储块,处理器根据写指针的指示将数据写入 空闲数据存储块并修改写指针;步骤Ε、处理器发送中断,通知需接收数据的处理器接收数据。进一步的,所述步骤C包括处理器判断读指针指向的数据存储块是否是写指针所指向的数据存储块的下一 个数据存储块,如果是,判断共享数据区中无空闲数据存储块;如果不是,判断共享数据区 有空闲数据存储块。其中,如果写指针所指向的数据存储块为共享数据区的最后一个数据存储块,其 下一个数据存储块为共享数据区的第一个数据存储块。进一步的,所述步骤D包括处理器将数据写入写指针所指向的数据存储块;修改写指针使其指向下一个数据存储块;其中,如果写指针所指向的数据存储块为共享数据区的最后一个数据存储块,其 下一个数据存储块为共享数据区的第一个数据存储块。一种芯片内部处理器从其他处理器接收数据的方法处理器从发送数据处理器向其发送数据的共享数据区读取数据;步骤Α、处理器响应发送数据处理器发送过来的中断;步骤B、处理器根据中断对应的共享数据区的读指针和写指针判断该共享数据区 中是否有未处理的数据;步骤C、如果有未处理的数据,处理器根据读指针和写指针处理相应共享数据区的 数据存储块中的数据,修改读指针;步骤D、如果没有未处理的数据,处理器不进行处理。进一步的,所述步骤B包括处理器比较该共享数据区的读指针和写指针;如果读指针小于写指针,未处理的数据存储块包括读指针所指向的数据存储块到 写指针所指向数据存储块的上一个数据存储块;如果读指针大于写指针,未处理的数据存 储块包括读指针指向的数据块到共享数据区域的最后一个数据块以及共享数据区域的第 一个数据块到写指针所指向数据存储块的上一个数据存储块;如果读指针等于写指针,没 有未处理的数据块。
进一步的,所述步骤C包括处理器比较该共享数据区的读指针和写指针;处理器读取所有未处理的数据存储块中的数据;修改读指针为读指针+本次处理 的数据存储块数。进一步的,所述步骤C包括处理器处理一个未处理的数据存储块中的数据;判断读指针是否指向该数据存储块;如果读指针指向该数据存储块,判断是否还有未处理的数据存储块;如果有未处 理的数据存储块,修改读指针,使其指向下一个未处理的数据存储块;如果没有未处理的数 据存储块,修改读指针,使其指向写指针所指向的数据存储块;如果读指针未指向该数据存储块,将该数据块标识为已处理;其中,所述是否还有未处理的数据存储块的判断范围为,如果读指针小于写指针, 判断范围为该数据存储块到写指针所指向数据存储块的上一个数据存储块;如果读指针大 于写指针,判断范围为该数据存储块到共享数据区域的最后一个数据块以及共享数据区域 的第一个数据块到写指针所指向数据存储块的上一个数据存储块。本发明的技术方案为每个共享数据区分别设置一个读指针和一个写指针以指示 该共享数据区中各数据存储块的使用情况,仅为每一个共享数据区分配一个中断资源,发 送数据的处理器在每次将数据写入共享数据区中的数据存储块后,发送同一个中断通知接 收数据的处理器,接收数据的处理器响应该中断时,可以处理数据共享数据区中的所有未 处理数据存储块,这样,即使在数据交互吞吐量较大,出现中断的覆盖、丢失时,也能有效避 免数据接收的不及时或无法接收数据的情况。


图1是现有技术芯片内部不同处理器之间通信方法流程2是本发明具体实施例1流程3是本发明具体实施例2流程4是本发明具体实施例3流程图
具体实施例方式为清楚说明本发明的技术方案,下面给出优选的实施例并结合附图详细说明。本发明的优选实施例1、2、3的应用场景为移动通信终端基带芯片内部ARM处理器 与DSP处理器之间的通信过程,在各优选实施例中,已预先为ARM设置了一个包含η个数据 存储块的共享数据区BUFFER_A2D用于ARM处理器向DSP处理器发送通信原语;为DSP设置 了一个包含η个数据存储块的共享数据区BUFFER_D2A用于DSP处理器向ARM处理器发送 通信原语,η为大于1的整数。具体实施例1本实施例应用场景为移动通信终端基带芯片中ARM处理器向DSP处理器发送通信 原语,具体流程如附图2所示本实施例中,ARM处理器通过BUFFER_A2D向DSP处理器发送通信原语;为BUFFER_A2D设置一个读指针CPD_R、一个写指针CPA_W和一个中断资源MB_A2D ;本实施例中,读指针和写指针初始值均指向共享数据区的第一个数据存储块,即 CPD_R = CPD_R = 1 ;1、数据发送开始后,ARM处理器每次发送通信原语时,首先检测共享数据区是否还 有空闲数据存储块;ARM处理器判断(CPA_W% η) +1是否等于CPD_R,如果是执行步骤6,否则执行步骤 4;2、ARM处理器根据写指针的指示将数据写入空闲数据存储块并修改写指针;ARM处理器将需发送的通信原语写入写指针指向的数据存储块;修改写指针,CPA_ff= (CPA_ff% n)+l03、ARM处理器发送中断MB_A2D给DSP处理器;4、ARM处理器判断是否还有其通信原语需发送,如是返回步骤3,否则执行步骤5。5、ARM结束本次数据发送过程。具体实施例2 本实施例应用场景为移动终端基带芯片内的DSP处理器接收ARM处理器发送的通 信原语,具体流程如附图3所示本实施例中,DSP处理器从共享数据区BUFFER_A2D接收通信原语;预先为该共享数据区设置了一个读指针CPD_R、一个写指针CPA_W和一个中断资 源 MB_A2D ;1、DSP处理器响应MB_A2D中断;2、DSP处理器判断MB_A2D中断对应的共享数据区中是否有未处理的数据;DSP处理器比较CPD_R和CPA_W,如果CPD_R小于CPA_W,执行步骤3,如果CPD_R 大于CPA_W,执行步骤4,如果CPD_R等于CPA_W,执行步骤6 ;3、DSP处理器读取从CPD_R指向的数据存储块开始到CPA_W_1所指向的数据存储 块中的数据;执行步骤5;4, DSP处理器读取从CPD_R指向的数据存储块开始到共享数据区最后一个数据存 储块以及从共享数据区第一个数据存储块开始到CPA_W_1所指向的数据存储块中的数据;5、DSP处理器修改CPD_R,CPD_R = CPD_R+本次处理的数据存储块数;6、DSP处理器结束从ARM处理器接收通信原语的过程。具体实施例3本实施例应用场景为移动终端基带芯片内的ARM处理器接收DSP处理器发送的通 信原语,具体流程如附图4所示本实施例中,ARM处理器从预先设置的DSP处理器向ARM处理器发送数据的共享 数据区BUFFER_D2A接收通信原语;预先为该共享数据区设置了一个读指针CPA_R、一个写指针CPD_W和一个中断资 源 MB_D2A ;1、ARM处理器响应MB_D2A中断;2、ARM处理器操作系统调度需接收通信原语的任务;
33冊处理器判断1^_02々中断对应的共享数据区中是否有未处理的数据;ARM处理器比较CPD_ff,如果CPA_R = CPD_ff,判断共享数据区中没有未处 理的数据存储块,执行步骤6,否则执行步骤4 ;4、ARM处理器处理相应共享数据区的各数据存储块中的数据,修改读指针;401、ARM处理器处理一个未处理的数据存储块中的数据;402.ARM处理器判断CPA_R是否指向该数据存储块,如果是,执行步骤403,否则执 行步骤406 ;403、判断是否还有未处理的数据存储块,如果有执行步骤404,否则执行步骤 405 ;本步骤中,判断还有未处理的数据存储块的依据为判断范围内除本次处理的数据存储块之外还有未标记为已处理的数据存储块。404、修改CPA_R,使其指向下一个未处理的数据存储块,执行步骤5 ;405、修改CPA_R,使其指向CPD_W所指向的数据存储块,执行步骤6 ;406、将该数据块标识为已处理;其中,所述是否还有未处理的数据存储块的判断范围为,如果CPA_R小于CPD_W, 判断范围为该数据存储块到CPD_W所指向数据存储块的上一个数据存储块;如果
于CPD_W,判断范围为该数据存储块到共享数据区域的最后一个数据块以及共享数据区域 的第一个数据块到CPD_W所指向数据存储块的上一个数据存储块。5、ARM判断正在运行的任务是否还需要处理数据,如果是执行步骤4,否则执行步 骤6 ;6、ARM结束本次数据处理过程。在本实施例中,ARM处理器作为接收数据处理器,由于ARM可以操作外部存储单 元,因此,在ARM系统对数据进行处理过程中,直接在共享数据区中对数据进行处理而不需 要将原语数据读取到其自身的RAM空间中再进行处理。提高了存储空间利用率,减少数据 搬移时间以及对总线占用时间,同时,由于ARM系统是操作系统调度任务运行的方式,不同 原语可能有不同优先级任务进行处理,因此ARM收到数据后并不一定会立即进行处理,而 是通过任务调度,在相关任务执行时才对数据进行处理。由于ARM系统的任务调度以及任 务优先级的影响,不同数据存储块中的通信原语可能被不同优先级的任务进行处理,这就 会产生低优先级任务处理位置在前的数据存储块,而高优先级任务处理位置在后的数据存 储块的情况。高优先级任务会先完成数据处理,如果每个任务处理完其对应的数据存储块 后直接修改CPA_R会造成空闲数据存储块不连续的情况,在本实施例步骤3中,ARM处理完 一个数据存储块后并不直接释放该数据存储块(修改CPA_R),而是判断在该数据存储块之 前是否还有未处理的数据存储块,如果还有,则不修改CPA_R,仅将该数据存储块标识为“已 处理”,等待后续任务处理完在其之前的数据存储块后再修改CPA_R,有效的避免了空闲数 据存储块不连续的情况。以上所述仅为本发明的优选实施例,并不用于限制本发明,显然,本领域的技术人 员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的 这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些 改动和变型在内。
权利要求
1.一种芯片内部处理器向其他处理器发送数据的方法,其特征在于,包括步骤A、在处理器与每个需接收其发送的数据的处理器之间分别设置至少1个共享数 据区,每个共享数据区由η个数据存储块组成; 其中,η为大于1的整数;步骤B、为每个共享数据区设置一个读指针、一个写指针和一个中断资源; 其中,读指针指示待处理的数据存储块,写指针指示空闲数据存储块; 步骤C、处理器根据读指针和写指针判断相应共享数据区是否还有空闲数据存储块; 步骤D、如果共享数据区有空闲数据存储块,处理器根据写指针的指示将数据写入空闲 数据存储块并修改写指针;步骤Ε、处理器发送中断,通知需接收数据的处理器接收数据。
2.根据权利要求1所述的一种芯片内部处理器向其他处理器发送数据的方法,其特征 在于,所述步骤C包括处理器判断读指针指向的数据存储块是否是写指针所指向的数据存储块的下一个数 据存储块,如果是,判断共享数据区中无空闲数据存储块;如果不是,判断共享数据区有空 闲数据存储块;其中,如果写指针所指向的数据存储块为共享数据区的最后一个数据存储块,其下一 个数据存储块为共享数据区的第一个数据存储块。
3.根据权利要求1或2所述的一种芯片内部处理器向其他处理器发送数据的方法,其 特征在于,所述步骤D包括处理器将数据写入写指针所指向的数据存储块; 修改写指针使其指向下一个数据存储块;其中,如果写指针所指向的数据存储块为共享数据区的最后一个数据存储块,其下一 个数据存储块为共享数据区的第一个数据存储块。
4.一种芯片内部处理器从其他处理器接收数据的方法,其特征在于,包括 处理器从发送数据处理器向其发送数据的共享数据区读取数据;步骤Α、处理器响应发送数据处理器发送过来的中断;步骤B、处理器根据中断对应的共享数据区的读指针和写指针判断该共享数据区中是 否有未处理的数据;步骤C、如果有未处理的数据,处理器根据读指针和写指针处理相应共享数据区的数据 存储块中的数据,修改读指针;步骤D、如果没有未处理的数据,处理器不进行处理。
5.根据权利要求4所述的一种芯片内部处理器从其他处理器接收数据的方法,其特征 在于,所述步骤B包括处理器比较该共享数据区的读指针和写指针;如果读指针小于写指针,未处理的数据存储块包括读指针所指向的数据存储块到写指 针所指向数据存储块的上一个数据存储块;如果读指针大于写指针,未处理的数据存储块 包括读指针指向的数据块到共享数据区域的最后一个数据块以及共享数据区域的第一个 数据块到写指针所指向数据存储块的上一个数据存储块;如果读指针等于写指针,没有未 处理的数据块。
6.根据权利要求4或5所述的一种芯片内部处理器从其他处理器接收数据的方法,其 特征在于,所述步骤C包括处理器比较该共享数据区的读指针和写指针;处理器读取所有未处理的数据存储块中的数据;修改读指针为读指针+本次处理的数 据存储块数。
7.根据权利要求4或5所述的一种芯片内部处理器从其他处理器接收数据的方法,其 特征在于,所述步骤C包括处理器处理一个未处理的数据存储块中的数据;判断读指针是否指向该数据存储块;如果读指针指向该数据存储块,判断是否还有未处理的数据存储块;如果有未处理的 数据存储块,修改读指针,使其指向下一个未处理的数据存储块;如果没有未处理的数据存 储块,修改读指针,使其指向写指针所指向的数据存储块;如果读指针未指向该数据存储块,将该数据块标识为已处理;其中,所述是否还有未处理的数据存储块的判断范围为,如果读指针小于写指针,判断 范围为该数据存储块到写指针所指向数据存储块的上一个数据存储块;如果读指针大于写 指针,判断范围为该数据存储块到共享数据区域的最后一个数据块以及共享数据区域的第 一个数据块到写指针所指向数据存储块的上一个数据存储块。
全文摘要
本发明公开了一种芯片内部处理器之间的通信方法,处理器之间通过由多个数据存储块组成的共享数据区来实现通信,为每个共享数据区设置一个读指针、一个写指针和一个中断资源,发送数据处理器将数据写入共享数据区的空闲数据存储块中,修改写指针指向下一个空闲数据块,发送中断通知接收处理器;接收数据处理器响应中断,根据读指针和写指针的指示处理共享数据区中的未处理数据存储块中的数据,修改读指针,完成数据接收,本发明的技术方案使用一对中断即可完成两个处理器之间的数据通信,减少了对系统中断资源的占用,同时,也避免了由于中断覆盖或丢失造成的数据处理不及时或数据丢失的情况。
文档编号G06F12/06GK102117261SQ20091025083
公开日2011年7月6日 申请日期2009年12月30日 优先权日2009年12月30日
发明者万兵, 周勃, 夏军, 孔栋, 宋远峰, 李暾, 王茂林, 胡丽丽, 陈俊华 申请人:重庆重邮信科通信技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1