专利名称:一种处理器间传递消息的方法和装置的制作方法
一种处理器间传递消息的方法和装置
技术领城
本发明涉及计算机技术领域,特别是指 一种处理器间传递消息的 方法和装置。
背景技术:
大型系统中处理器间消息的传递通常通过双端口存储器连接,处 理器间的消息传递是通过中断的方式或标志位查询的方式进行。
无论采用哪种工作方式,其工作的流程均无较大差别。参见图1,
图1中包括两个处理器,发送处理器101,接收处理器102,双端口存 储器103与两个处理器相连。
如果采用中断的方式传递消息,发送处理器101需要发送消息时, 首先判断双端口存储器103中是否有足够的空间存储当前所发送的此 条消息。如果双端口存储器103中有足够的空间,则发送处理器101 将该消息写入到双端口存储器103中事先约定的位置。
随后,发送处理器101向接收处理器102发送一个中断信息,通 知接收处理器102存储器中有发送处理器IOI发送一条消息。接收处 理器102接收到中断信息后,从双端口存储器103中读取该消息。
当采用中断方式时,发送处理器每发送一条消息后,向接收处理 器发送一次中断信息,接收处理器每接收到一次中断,都要暂停当前 程序的执行,保护当前的现场,跳转到中断服务程序,退出中断服务 程序后再恢复现场,继续当前程序的执行。响应一次中断的处理器开 销较大。基于现有的中断方式,当频繁的逐条发送消息时,频繁的中 断不但降低了传送消息的效率,也降低了处理器的工作效率。
如果采用查询方式传递消息,发送处理器101将一条消息写入到 双端口存储器103中后,更改双端口存储器103内的特殊标识。接收 处理器102通过查询双端口存储器103内的特殊标识,判断是否有新 的消息,如果有新的消息,接收处理器102读取该条消息。
现有技术中采用两种不同的方式解决处理器之间的消息传递,无
论采用哪种方式发送处理器每次都只发送一条消息,接收处理器每次 只接收一条消息,因此传递消息效率较低。
发明内容
有鉴于此,本发明所解决的技术问题在于提供一种处理器间传递 消息的方法和装置,使得在处理间传递消息时连续发送和接收,从而 提高传递效率。
为解决现有技术中存在的问题,本发明提供一种处理器间传递消
息的方法,包4舌
发送处理器将所确定的下一条消息的存储地址和本次所发送的 消息写入存储器;
发送处理器在写地址单元记录所述确定的下一条消息的存储地
址;
接收处理器在查询到所述存储器有新的消息后,从读地址单元记 录的存储地址中获取前述消息及其下 一 条消息的存储地址;
接收处理器将所述下一条消息的存储地址写入读地址单元中。 其中,所述下 一 条消息的存储地址和本次所发送的消息构成消息
链表单元。
其中,存储器采用非连续存储消息机制,所述写入存储器之前包 括发送处理器向其动态内存管理单元申请起始地址为写地址单元中 的地址,长度为本次所发送的消息链表单元的存储空间。
其中,发送处理器申请到长度为本次所发送的消息链表单元的存 储空间后,所述写入存储器之前包括发送处理器比较从动态内存管 理单元获取的当前最大的连续空闲存储空间长度与最大消息链表单元 长度的大小;
当比较结果为大于或等于时,则发送处理器将当前的最大连续空 闲存储空间的起始地址作为下 一 条消息链表单元的存储地址;
当比较结果为小于时,则发送处理器读取读地址单元中的地址, 发送处理器的动态内存管理单元释放并获得接收处理器已经读走的消 息链表单元的空间,发送处理器重新向动态内存管理单元获取当前最
大连续空闲空间的长度。
其中,存储器采用连续存储消息机制,所述发送处理器将所确定 的下一条消息的存储地址和本次所发送的消息写入存储器之前包括
发送处理器确定存储器中以写地址单元的地址为起始地址的连 续空闲空间是否有足够空间存储本次发送的消息链表单元,如果有,
则写入本次发送的消息链表单元;如果没有,则退出本次发送。
其中,发送处理器确定存储器中以写地址单元的地址为起始地址 的连续空闲空间是否足够存储本次发送的消息链表单元的过程包括 发送处理器读取读地址单元、写地址单元中的地址进行比较, 如果读地址单元中的地址大于写地址单元中的地址,则判断写地 址单元中地址与当前所发送的消息链表单元长度之和是否小于以写地 址单元中地址为起始地址到以读地址单元中地址为末地址的空间长 度,如果小于,则表明有空间;如果大于或等于,则表明没有空间。
其中,发送处理器在确定空间和写入存储器之间还包括发送处 理器将写地址单元中的地址和本次发送的消息链表长度之和确定为下 次发送消息链表单元的地址。
其中,发送处理器确定存储器中以写地址单元的地址为起始地址 的连续空闲空间是否足够存储本次发送的消息链表单元的过程包括 发送处理器读取读地址单元、写地址单元中的地址进行比较, 如果读地址单元中的地址小于或等于写地址单元中的地址,则判 断以写地址单元中地址为起始地址,存储当前所发送的消息链表单元、 最大消息链表单元的空间长度之和是否小于或等于以写地址单元中地 址为起始地址到存储器的末地址的空间长度;如果小于或等于,则表 明有空间;
如果大于,则进一步判断读地址单元中的地址是否不等于存储器 中用于存储消息链表单元的起始地址,如果不等于,则表明有空间, 如果等于,则表明没有空间。
其中,发送处理器在确定空间和写入存储器之间还包括如杲以 写地址单元中地址为起始地址,存储当前所发送的消息链表单元、最
大消息链表单元的空间长度之和小于或等于以写地址单元中地址为起
始地址到存储器的末地址的空间长度;则发送处理器将写地址单元中 的地址和本次发送的消息链表长度之和确定为下一条消息链表单元的 存储地址;
如果读地址单元中的地址不等于存储器中用于存储消息链表单 元的起始地址,则发送处理器将存储器中用于存储消息链表单元的首 地址确定为下 一 条消息链表单元的存储地址。
其中,所述写入存储器,包括
发送处理器将下一条消息链表单元的地址写入存储器,再将消息 写入。
其中,所述接收处理器查询到所述存储器有新的消息,包括接 收处理器比较写地址单元和读地址单元中的地址,如果不相等,则表 明有新的消息;如果相等,则结束查询。
其中,发送处理器与接收处理器从存储器写入、读出是从双端口 存储器写入、读出。
本发明提供一种发送处理器,包括动态内存管理单元,还包括 数据读写单元,用于对存储器的数据执行读出、写入操作; 发送控制单元,用于控制所述数据读写单元将本次所发送的消息
和动态内存管理单元生成的下 一条消息的存储地址写入存储器,并将
所述下 一 条消息的地址写入存储器中写地址单元。 其中,还包括
链表生成单元,用于将发送控制单元中所发送的下 一 条消息的存 储地址和消息构成消息链表单元。 其中,还包括
内存申请单元,用于向动态内存管理单元申请起始地址为写地址 单元中的地址,长度为本次所发送的消息链表单元的空间;
空间判别单元,用于判别从动态内存管理单元获得到的当前最大
的连续空闲存储空间长度与最大消息链表单元长度的大小;
当比较结果为大于或等于时,则动态内存管理单元用于将当前的
最大连续空闲存储空间的起始地址作为下一条消息链表单元的存储地址;
当比较结果为小于时,则动态内存管理单元用于释放并获得接收 处理器已经读走的消息链表单元的空间。
本发明还提供一种发送处理器,其特征在于,包括 数据读写单元,用于对存储器的数据执行读出、写入操作;
地址生成单元,用于生成下一条消息的存储地址;
发送控制单元,用于控制所述数据读写单元将本次所发送的消,t、
和地址生成单元生成的下一条消息的存储地址写入存储器,并将所述
下一条消息的地址写入写地址单元。 其中,还包括
链表生成单元,用于将发送控制单元中所发送的下一条消息的存 储地址和消息构成消息链表单元。 其中,还包括
地址判别单元,用于判断写地址单元中地址与当前所发送的消息 链表单元长度之和是否小于以写地址单元中地址为起始地址到以读地 址单元中地址为末地址的空间长度,当判断结果小于时,将判断结果 发送至发送控制单元;当判断结果大于或等于,则结束本次发送。
其中,还包括
空间判别单元,用于判断以写地址单元中地址为起始地址,存储 当前所发送的消息链表单元、最大消息链表单元的空间长度之和是否 小于或等于以写地址单元中地址为起始地址到存储器的末地址的空间 长度;如果小于或等于,将判断结果发送至发送控制单元;如果大于, 则空间判别单元将判断结果发送至首地址判别单元;
首地址判别单元,用于进一步判断读地址单元中的地址是否不等 于存储器中用于存储消息链表单元的起始地址,如果不等于,将判断 结果发送至发送控制单元;如果等于,则结束本次发送。
本发明提供一种接收处理器,包括
数据读写单元,用于对存储器的数据执行读出和写入操作;
空间判别单元,用于判断写地址单元和读地址单元中的地址是否
相等;
接收控制单元,用于接收所述空间判别单元的结果,当比较结杲 不相等时,接收控制单元用于控制所述数据读写单元从存储器中读出 消息及下一条消息地址,并将下一条消息的地址写入到存储器中的读 地址单元。
本发明的方法中,发送处理器每次发送消息时,都将下次发送消 息的地址记录下来,从而实现连续发送多条消息,接收处理器在每次 接收消息时,都获得读取下一条消息的地址,从而实现连续接收多条 消息,解决了现有技术中逐条发送消息时,处理器间消息传递效率低 的问题,在遇到紧急消息需要处理时,发送处理器发送消息后,向接 收处理器发送中断信息,从而使紧急消息得到实时性响应。
图1是处理器之间传递消息的示意图2是本发明方法的流程图3是消息链表单元结构的示意图4是应用本发明方法实施例1的流程图5是应用本发明方法实施例2的流程图6是本发明的发送处理器;
图7是本发明不具有动态内存管理单元的发送处理器; 图8是本发明的接收处理器。
具体实施例方式
本发明的方法能够实现处理器间消息传递的连续发送和接收,没 有任何中断和开销,对于需要紧急处理的消息,能够通过发送中断信 息实时响应。下面结合附图详细描述本发明。
参见图2,本发明的方法包括
步骤S201:发送处理器将所确定的下一条消息的存储地址和本次 所发送的消息写入存储器;
步骤S202:发送处理器在写地址单元记录确定的下一条消息的存 储地址;
步骤S203:接收处理器在查询到所述存储器有新的消息后,从读 地址单元记录的存储地址中获取消息及其下一条消息的存储地址;
步骤S204:接收处理器将下一条消息的存储地址写入读地址单元中。
在本发明的方法中,发送处理器将所发送的消息添加了下 一 条消 息链表单元的存储地址,构成消息链表单元。该消息链表单元的结构 参见图3,该消息链表单元包含指针域301和消息域,指针域中的地 址是下一条消息链表单元在双端口存储器中的地址,消息域包含消息 头302、消息内容305。其中,消息头302包含消息编码303,和消息 长度304。
以下所述地址均为十进制的偏移地址。下面结合图4,详细描述 本发明方法的实施例1的工作流程。假设当前发送处理器和接收处理 器之间的双端口存储器中保留出为lKx 10位的空间用于处理器之间 的消息传递,偏移地址为0000到1023。在该空间中地址0000和0001 的空间作为写地址单元和读地址单元,该空间的内容为消息链表单元 在双端口存储器中的地址。0002至1023为存储消息链表单元空间, 其中,0002为存储器中用于存储消息链表单元的首地址,1023为存储 器中用于存储消息链表单元的末地址。消息头中的消息编码和消息长 度各占一个地址单元。处理器具有动态内存管理单元,消息链表单元 的存储采用非连续存储消息机制,最大消息链表单元长度为100。
假设当前发送处理器向接收处理器发送两条消息分别构成的消 息链表单元1和2,消息链表单元1的消息内容长度为10,消息链表 单元1的长度为13。消息链表单元2的消息内容长度20,消息链表单 元2的长度为23。
步骤S401:发送处理器读取写地址单元地址。
在处理器间发送消息的最初,写地址单元所存储的地址为0002。
步骤S402:发送处理器获得存储空间。
发送处理器向动态内存管理单元申请起始地址为写地址单元中 地址,长度为当前所发送的消息链表单元长度的空间,即从0002至 0014,长度为13的空间。
步骤S403:发送处理器读取读地址单元地址,释放空间。
发送处理器读取读地址单元地址,在发送最初,读地址单元所存 储的地址为0002。
动态内存管理单元判断接收处理器已经读取的消息链表单元,释 放并获得相应的内存。假设动态内存管理单元获得从0035开始为起始 地址,当前最大连续空闲存储空间长度为120的连续空闲存储空间。
步骤S404:发送处理器判断空间大小。
发送处理器判断当前最大连续空闲存储空间长度是否大于或等 于最大消息链表单元长度。由于120大于100,当前的存储空间满足 发送下次消息链表单元的要求。
如果判断结果小于时,则发送处理器执行步骤S403。 步骤S405:发送处理器获取空间起始地址并修改消息链表单元的 指针域。
发送处理器向动态内存管理单元获取当前最大连续空闲空间的 起始地址,作为下次发送消息链表单元的起始地址。获取到的起始地 址为0035。
本次发送的消息链表单元1指针域所在的位置为写地址单元中地 址0002。发送处理器将0035写入到地址0002的空间中。 步骤S406:发送处理器写入消息。
发送处理器将消息的消息头中消息编码和消息长度,以及消息内 容顺序写入到紧邻写地址单元中地址相邻的下一地址为起始地址连续 空闲的存储空间。即将消息写入到0003至0014的空间中。
步骤S407:发送处理器修改写地址单元中的地址。
中指针域中的地址值。
发送处理器将写地址单元中的地址值0002修改为所发送消息链 表单元1中指针域中的地址值0035。
至此,消息链表单元l发送完成。
步骤S408:发送处理器发送消息链表单元2。
发送消息链表单元2的过程与前述发送消息链表单元1步骤S401
至步骤S407的过程相同。发送处理器读出写地址单元中地址为0035, 从动态内存管理单元申请内存地址从0035至0057,长度为23的空间。 发送处理器读耳又读地址单元中的地址值,动态内存管理单元判断接收 处理器已经读取的消息链表单元,释放并获得相应的内存。假设动态 内存管理单元获得从0200开始为起始地址,当前最大连续空闲存储空 间长度为110的连续空闲存储空间。判断该空间长度大于最大消息链 表单元长度后,发送处理器将当前最大连续空闲空间的起始地址0200 写入到消息链表单元2的指针域,即写地址单元地址所指的地址0035 的空间中。
发送处理器将消息链表单元2的消息内容写入到0036至0057中。 将写地址单元中的地址0035 <奮改为0200。 至此,消息链表单元2发送完毕。 步骤S409:接收处理器查询。
接收处理器读取写地址单元和读地址单元中的地址。
接收处理器读取双端口存储器中写地址单元中地址0200和读地 址单元中的地址0002。
步骤S410:接收处理器判断是否有新的消息。
接收处理器比较两个地址值是否相等,如果相等则结束;如果不 相等,则表明有新的消息,由于写地址单元中地址0200不等于读地址 单元中地址0002,表明有新的消息。
步骤S411:接收处理器读取消息,修改读地址单元中地址,消息 链表单元计数器加一。执行步骤S410。
发送处理器从读地址单元中地址0002处读取消息链表单元1后, 将读地址单元中的地址修改为消息链表单元1指针域中的值0035。将 所接收到消息计数,即消息链表单元计数器加一。
修改完成后,执行步骤S410,由于0035不等于0200,接收处理 器从地址0035处读取消息链表单元2,将读地址单元中的地址修改为 消息链表单元2指针域中的值0200。将所接收到消息计数,即消息链 表单元计数器加一。
修改完成后,执行步骤S410,由于0200等于0200,表明此时双 端口存储器中没有新的消息。至此,处理器间完成了消息的传递。
对于没有动态内存管理单元的处理器,处理器之间可以采用连续 存储消息机制。
下面结合图5,详细描述在采用连续存储消息机制下本发明方法 的工作流程。假设当前发送处理器和接收处理器之间的双端口存储器 中保留出为lKx 10位的空间用于处理器之间的消息传递,偏移地址 为0000到1023。在该空间中地址0000和0001的空间为写地址单元 和读地址单元,该空间的内容为消息链表单元在双端口存储器中的地 址。0002至1023为存储消息链表单元空间,其中,0002为存储器中 用于存储消息链表单元的首地址,1023为存储器中用于存储消息链表 单元的末地址。消息头中的消息编码和消息长度各占 一个地址单元。 最大消息链表单元长度为100。
假设当前发送处理器向接收处理器发送两条消息分别构成的消 息链表单元1和2,消息链表单元1的消息内容长度为10,消息链表 单元1的长度为13。消息链表单元2的消息内容长度20,消息链表单 元2的长度为23。
步骤S501:发送处理器读取写地址单元中地址和读地址单元中地址。
在处理器间发送消息的最初,写地址单元、读地址单元中所存储 的地址均为0002。
步骤S502:发送处理器做初始判断。
发送处理器判断读地址单元中的地址值是否小于或等于写地址 单元中的地址值,如果判断结果为大于,则执行步骤S503,如果判断 结果为小于或等于,则执行步骤S504。
由于写地址单元、读地址单元中所存^f渚的地址相等均为0002。所 以4丸行步骤S504。
步骤S503:发送处理器进一步判断空间。
当步骤S502判断结果为大于时,发送处理器进一步判断写地址
单元中地址与当前所发送的消息链表单元长度之和是否小于以写地址 单元中地址为起始地址到以读地址单元中地址为末地址的空间长度。 当该判断结果为小于时,表明双端口存储器中还有空间存放当前
所发送的消息链表单元。执行步骤S505。
当该判断结果为大于或等于时,退出本次发送。 步骤S504:发送处理器进一步判断空间。
当步骤S502判断结果为小于或等于时,发送处理器进一步判断 写地址单元中地址为起始地址,存储当前所发送的消息链表单元、最 大消息链表单元的空间长度之和是否小于或等于以写地址单元中地址 为起始地址到双端口存储器的末地址的空间长度。
如果判断结果小于或等于,则执行步骤S505,如果大于,则执行 步骤S506。
在该例中,写地址单元地址为0002,当前消息链表单元l的长度 为13,最大消息链表单元IOO,用于存储消息链表单元1和最大消息 链表单元的空间为113小于以写地址单元地址0002为起始地址到双端 口存储器末地址1023的存储空间1022。表明当前存储空间有足够的 空间存储该消息链表单元1。
步骤S505:发送处理器修改消息链表单元指针域。
发送处理器修改消息链表单元的指针域为写地址单元中地址值 与当前所发送的消息链表单元1的长度之和。
本次发送的消息链表单元1的指针域所在的位置为写地址单元中 地址0002。发送处理器将0015写入到地址0002的空间中。在双端口 存储器中写消息链表单元2时将从0015写入。
步骤S506:发送处理器判断接收位置。
在步骤S504的判断结果为大于时,发送处理器进一步判断读地 址单元中的地址是否不等于双端口存储器中用于存储消息链表单元的
起始地址。
如果等于,表明接收处理器将要从该位置读取消息链表单元,此 时不能进一步修改地址。退出本次发送。
如果不等于,则可以执行步骤S507。 步骤S507:发送处理器修改消息链表单元指针域。 根据步骤S506的判断结果为不等于时,发送处理器将当前所发 送消息链表单元的指针域修改为双端口存储器中用于存储消息链表单 元的起始地址。对于本例中,如果出现这种情况,则将所发送消息链 表单元1的指针域修改为0002。
步骤S508:发送处理器写入消息。
发送处理器将消息的消息头中消息编码和消息长度,以及消息内 容顺序写入到紧邻写地址单元中地址的下一地址为起始地址连续空闲 的存储空间。即将消息写入到0003至0014的空间中。
步骤S509:发送处理器修改写地址单元中的地址。
发送处理器将写地址单元中的地址修改为所发送消息链表单元 中指针域中的地址值。
发送处理器将写地址单元中的地址值0002修改为所发送消息链 表单元1中指针域中的地址值0015。
至此,消息链表单元1发送完成。
步骤S510:发送处理器发送消息链表单元2。
发送消息链表单元2的过程与前述发送消息链表单元1步骤S501 至步骤S509的过程相同。
发送处理器读取写地址单元中的地址值0015和读地址单元中的 地址值0002后,判断出0002小于0015,进一步判断出当前从0015 开始,用于存储消息链表单元2和最大消息链表单元的空间为123, 小于以写地址单元中地址0015为起始地址到双端口存储器末地址 1023的存储空间1009。表明当前存储空间有足够的空间存储该消息链 表单元2。发送处理器将0015与23之和0038写入到消息链表单元2 的指针域所在的地址0015的空间中去。
发送处理器将消息链表单元2中的消息域的消息头和消息内容顺 序写入到0016至0037的空间中,修改写地址单元中的地址值0015 为0038。
至此,消息链表单元2发送完毕。
步骤S511:接收处理器查询。
接收处理器读取双端口存储器中写地址单元中地址为0038和读 地址单元中的地址为0002。
步骤S512:接收处理器判断是否有新的消息。
接收处理器比较两个地址值是否相等,如果相等则结束;如果不 相等,则表明有新的消息,由于写地址单元中地址0038不等于读地址 单元中地址0002,表明有新的消息。
步骤S513:接收处理器读取消息,修改读地址单元中地址,执行 步骤S511。
发送处理器从读地址单元中的地址0002处读取消息链表单元1 后,将读地址单元中的地址修改为消息链表单元1指针域中的值0015。 将所接收到消息计数,即消息链表单元计数器加一 。
修改完成后,4丸行步骤S512,由于0015不等于0038,接收处理 器从地址0015处读取消息链表单元2,将读地址单元中的地址修改为 消息链表单元2指针域中的值0038。将所接收到消息计数,即消息链 表单元计数器加一。
修改完成后,寺丸行步骤S512,由于0038等于0038,表明此时双 端口存储器中没有新的消息。至此,处理器间完成了消息的传递。
在以上两种消息传递的机制下,发送和接收过程为并行过程,发 送处理器可以在随时执行发送操作,接收处理器可以随时执行查询接 收操作。对于有紧急的消息,发送处理器在发送完该消息后,向接收 处理器发送中断信息。接收处理器接收到中断后,停止当前的处理, 接收双端口存储器中的消息。
本发明还提供两种发送处理器和一种接收处理器。
参见图6,本发明提供一种发送处理器601,包括数据读写单元 602、发送控制单元603、链表生成单元604、空间判别单元606、内 存申请单元605、动态内存管理单元607,其特征在于,还包括
数据读写单元602,用于对存储器的数据执行读出、写入操作;
发送控制单元603,用于控制所述数据读写单元602将本次所发 送的消息和动态内存管理单元607生成的下 一 条消息的存储地址写入 存储器,并将所述下 一条消息的地址写入存储器中写地址单元。
链表生成单元604,用于将发送控制单元603中所发送的下一条 消息的存储地址和消息构成消息链表单元。
内存申请单元605,用于向动态内存管理单元607申请起始地址 为写地址单元中的地址,长度为本次所发送的消息链表单元的空间。
空间判别单元606,用于判别从动态内存管理单元607获得到的 当前最大的连续空闲存储空间长度与最大消息链表单元长度的大小;
当比较结果为大于或等于时,则动态内存管理单元607用于将当 前的最大连续空闲存储空间的起始地址作为下一条消息链表单元的存 储地址;
当比较结果为小于时,则动态内存管理单元607用于释放并获得 接收处理器已经读走的消息链表单元的空间。
参见图7,本发明还提供一种发送处理器701,包括数据读写 单元702、地址生成单元703、发送控制单元704、链表生存单元705、 地址判别单元706 、空间判别单元707 、首地址判别单元708 。
数据读写单元702,用于对存储器的数据执行读出、写入操作;
地址生成单元703,用于生成下一条消息的存储地址;
发送控制单元704,用于控制所述数据读写单元702将本次所发 送的消息和地址生成单元703生成的下一条消息的存储地址写入存储 器,并将所述下一条消息的地址写入写地址单元。
链表生成单元705,用于将发送控制单元704中所发送的下一条 消息的存储地址和消息构成消息链表单元。
地址判别单元706,用于判断写地址单元中地址与当前所发送的 消息链表单元长度之和是否小于以写地址单元中地址为起始地址到以 读地址单元中地址为末地址的空间长度,当判断结果小于时,将判断 结果发送至发送控制单元704;当判断结果大于或等于,则结束本次 发送。
空间判别单元707,用于判断以写地址单元中地址为起始地址, 存储当前所发送的消息链表单元、最大消息链表单元的空间长度之和 是否小于或等于以写地址单元中地址为起始地址到存储器的末地址的 空间长度;如果小于或等于,将判断结果发送至发送控制单元704; 如果大于,则空间判别单元将判断结果发送至首地址判别单元70 8;
首地址判别单元708,用于进一步判断读地址单元中的地址是否 不等于存储器中用于存储消息链表单元的起始地址,如果不等于,将 判断结果发送至发送控制单元704;如杲等于,则结束本次发送。 参见图8,本发明提供一种接收处理器801,包括 数据读写单元802,用于对存储器的数据执行读出和写入操作; 空间判别单元803,用于判断写地址单元和读地址单元中的地址 是否相等;
接收控制单元804,用于接收所述空间判别单元的结果,当比较 结果不相等时,接收控制单元804用于控制所述数据读写单元802从 存储器中读出消息及下 一 条消息地址,并将下 一 条消息的地址写入到 存储器中的读地址单元。
对于本发明的方法,也可以在其它处理器之间得到拓展性的应 用。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改 进等,均应包含在本发明的保护范围之内。
权利要求
1、一种处理器间传递消息的方法,其特征在于,包括发送处理器将所确定的下一条消息的存储地址和本次所发送的消息写入存储器;发送处理器在写地址单元记录所述确定的下一条消息的存储地址;接收处理器在查询到所述存储器有新的消息后,从读地址单元记录的存储地址中获取前述消息及其下一条消息的存储地址;接收处理器将所述下一条消息的存储地址写入读地址单元中。
2、 根据权利要求1所述的方法,其特征在于,所述下一条消息 的存储地址和本次所发送的消息构成消息链表单元。
3、 根据权利要求2所述的方法,其特征在于,存储器采用非连 续存储消息机制,所述写入存储器之前包括发送处理器向其动态内 存管理单元申请起始地址为写地址单元中的地址,长度为本次所发送 的消息链表单元的存储空间。
4、 根据权利要求3所述的方法,其特征在于,发送处理器申请 到长度为本次所发送的消息链表单元的存储空间后,所述写入存储器 之前包括发送处理器比较从动态内存管理单元获取的当前最大的连 续空闲存储空间长度与最大消息链表单元长度的大小;当比较结果为大于或等于时,则发送处理器将当前的最大连续空 闲存储空间的起始地址作为下一条消息链表单元的存储地址;当比较结果为小于时,则发送处理器读取读地址单元中的地址, 发送处理器的动态内存管理单元释放并获得接收处理器已经读走的消 息链表单元的空间,发送处理器重新向动态内存管理单元获取当前最 大连续空闲空间的长度。
5、 根据权利要求2所述的方法,其特征在于,存储器采用连续 存储消息机制,所述发送处理器将所确定的下一条消息的存储地址和 本次所发送的消息写入存储器之前包括发送处理器确定存储器中以写地址单元的地址为起始地址的连 续空闲空间是否有足够空间存储本次发送的消息链表单元,如果有, 则写入本次发送的消息链表单元;如果没有,则退出本次发送。
6、 根据权利要求5所述的方法,其特征在于,发送处理器确定 存储器中以写地址单元的地址为起始地址的连续空闲空间是否足够存 储本次发送的消息链表单元的过程包括发送处理器读取读地址单元、写地址单元中的地址进行比较, 如果读地址单元中的地址大于写地址单元中的地址,则判断写地 址单元中地址与当前所发送的消息链表单元长度之和是否小于以写地 址单元中地址为起始地址到以读地址单元中地址为末地址的空间长 度,如果小于,则表明有空间;如果大于或等于,则表明没有空间。
7、 根据权利要求6所述的方法,其特征在于,发送处理器在确 定空间和写入存储器之间还包括发送处理器将写地址单元中的地址 和本次发送的消息链表长度之和确定为下次发送消息链表单元的地 址。
8、 根据权利要求5所述的方法,其特征在于,发送处理器确定 存储器中以写地址单元的地址为起始地址的连续空闲空间是否足够存 储本次发送的消息链表单元的过程包括发送处理器读取读地址单元、写地址单元中的地址进行比较, 如果读地址单元中的地址小于或等于写地址单元中的地址,则判 断以写地址单元中地址为起始地址,存储当前所发送的消息链表单元、 最大消息链表单元的空间长度之和是否小于或等于以写地址单元中地 址为起始地址到存储器的末地址的空间长度;如果小于或等于,则表 明有空间;如果大于,则进一步判断读地址单元中的地址是否不等于存储器 中用于存储消息链表单元的起始地址,如果不等于,则表明有空间, 如果等于,则表明没有空间。
9、 根据权利要求8所述的方法,其特征在于,发送处理器在确 定空间和写入存储器之间还包括如果以写地址单元中地址为起始地 址,存储当前所发送的消息链表单元、最大消息链表单元的空间长度 之和小于或等于以写地址单元中地址为起始地址到存储器的末地址的 空间长度;则发送处理器将写地址单元中的地址和本次发送的消息链 表长度之和确定为下一条消息链表单元的存储地址;如杲读地址单元中的地址不等于存储器中用于存储消息链表单 元的起始地址,则发送处理器将存储器中用于存储消息链表单元的首 地址确定为下 一 条消息链表单元的存储地址。
10、 根据权利要求2所述的方法,其特征在于,所述写入存储器,包括发送处理器将下一条消息链表单元的地址写入存储器,再将消息 写入。
11、 根据权利要求2所述的方法,其特征在于,所述接收处理器 查询到所述存储器有新的消息,包括接收处理器比较写地址单元和 读地址单元中的地址,如杲不相等,则表明有新的消息;如果相等, 则结束查询。
12、 根据权利要求1至11任一项所述的方法,其特征在于,发送 处理器与接收处理器从存储器写入、读出是从双端口存储器写入、读出。
13、 一种发送处理器,包括动态内存管理单元,其特征在于,还 包括数据读写单元,用于对存储器的数据执行读出、写入操作; 发送控制单元,用于控制所述数据读写单元将本次所发送的消息和动态内存管理单元生成的下一条消息的存储地址写入存储器,并将所述下 一 条消息的地址写入存储器中写地址单元。
14、 根据权利要求13所述的发送处理器,其特征在于,还包括 链表生成单元,用于将发送控制单元中所发送的下一条消息的存储地址和消息构成消息链表单元。
15、 根据权利要求14所述的发送处理器,其特征在于,还包括 内存申请单元,用于向动态内存管理单元申请起始地址为写地址单元中的地址,长度为本次所发送的消息链表单元的空间;空间判别单元,用于判别从动态内存管理单元获得到的当前最大 的连续空闲存储空间长度与最大消息链表单元长度的大小;当比较结果为大于或等于时,则动态内存管理单元用于将当前的 最大连续空闲存储空间的起始地址作为下一条消息链表单元的存储地址;当比较结果为小于时,则动态内存管理单元用于释放并获得接收 处理器已经读走的消息链表单元的空间。
16、 一种发送处理器,其特征在于,包括 数据读写单元,用于对存储器的数据执行读出、写入操作; 地址生成单元,用于生成下一条消息的存储地址; 发送控制单元,用于控制所述数据读写单元将本次所发送的消息和地址生成单元生成的下一条消息的存储地址写入存储器,并将所述 下 一 条消息的地址写入写地址单元。
17、 根据权利要求16所述的发送处理器,其特征在于,还包括 链表生成单元,用于将发送控制单元中所发送的下一条消息的存储地址和消息构成消息链表单元。
18、 根据权利要求17所述的发送处理器,其特征在于,还包括 地址判别单元,用于判断写地址单元中地址与当前所发送的消息链表单元长度之和是否小于以写地址单元中地址为起始地址到以读地 址单元中地址为末地址的空间长度,当判断结果小于时,将判断结果 发送至发送控制单元;当判断结果大于或等于,则结束本次发送。
19、 根据权利要求18所述的发送处理器,其特征在于,还包括 空间判别单元,用于判断以写地址单元中地址为起始地址,存储当前所发送的消息链表单元、最大消息链表单元的空间长度之和是否 小于或等于以写地址单元中地址为起始地址到存储器的末地址的空间 长度;如果小于或等于,将判断结果发送至发送控制单元;如果大于, 则空间判别单元将判断结果发送至首地址判别单元;首地址判别单元,用于进一步判断读地址单元中的地址是否不等 于存储器中用于存储消息链表单元的起始地址,如果不等于,将判断 结果发送至发送控制单元;如果等于,则结束本次发送。
20、 一种接收处理器,其特征在于,包括数据读写单元,用于对存储器的数据执行读出和写入操作;空间判别单元,用千判断写地址单元和读地址单元中的地址是否相等;接收控制单元,用于接收所述空间判别单元的结果,当比较结果消息及下 一 条消息地址,并将下 一 条消息的地址写入到存储器中的读地址单元。
全文摘要
本发明公开了一种处理器间传递消息的方法和装置,包括发送处理器将所确定的下一条消息的存储地址和本次所发送的消息写入存储器;发送处理器在写地址单元记录所述确定的下一条消息的存储地址;接收处理器在查询到所述存储器有新的消息后,从读地址单元记录的存储地址中获取前述消息及其下一条消息的存储地址;接收处理器将所述下一条消息的存储地址写入读地址单元中。本发明还公开了一种发送处理器和一种接收处理器。
文档编号G06F15/163GK101101586SQ20061008961
公开日2008年1月9日 申请日期2006年7月6日 优先权日2006年7月6日
发明者马卫国 申请人:大唐移动通信设备有限公司