用于在多处理器系统中共享存储器的方法和装置的制作方法

文档序号:6569010阅读:220来源:国知局
专利名称:用于在多处理器系统中共享存储器的方法和装置的制作方法
技术领域
本发明一般的涉及多处理器系统,更具体地涉及一种用于在多处 理器系统中共享存储器的方法和装置。
背景技术
典型地,在处理器间共享存储器采用信号量方式完成,信号量是 一种在多处理环境中限制访问共享存储器的经典方法。信号量经常由
API (应用程序接口)以库调用的方式来管理。对于实时应用(例如流
视频)来说,该类调用耗时太长,从而影响到终端用户可以察觉到的 应用的性能。
因此,产生了在多处理器系统中提高共享存储器应用的性能的需要。

发明内容
根据本发明的实施方式提供了一种用于在多处理器系统中共享存 储器的方法和装置。
在本发明的第一实施方式中,描述一种用于在多处理器系统中共 享存储器的方法。该方法具有以下步骤,为两个或多个处理器建立存 储器缓冲池,并为每个存储器缓冲池建立指向相应的存储器缓冲区的 缓冲区指针的阵列。该方法还包括以下步骤,对于每个缓冲区指针的 阵列,为拥有存储器缓冲池的处理器建立消耗指针,以及为共享所述 存储器缓冲池的另一个处理器建立释放指针,每个指针最初都指向阵 列的预定位置。该方法还包括根据已消耗和已释放的缓冲区来调节消 耗指针和释放指针的步骤。在本发明的第二实施方式中,多处理器系统具有用于共享存储器 的计算机可读存储介质。该存储介质有计算机指令,用于在处理器间 建立存储器缓冲池,以及为每一个存储器缓冲池,建立缓冲区指针的 阵列,该缓冲区指针指向对应的存储器缓冲区。该存储介质进一步包 括计算机指令,用于在每一个缓冲区指针的阵列为拥有存储器缓冲池
的处理器建立消耗指针,和为共享所述存储器缓冲池的另一个处理器 建立释放指针,每个指针最初都指向阵列的预定位置。存储介质进一 步包括计算机指令,用于根据已消耗和已释放的缓冲区来调节消耗指 针和释放指针。
在本发明的第三实施方式中,用于共享存储器的多处理器系统具 有存储器,和两个或多个处理器。对处理器进行编程以在处理器间建 立存储器缓冲池,并为每个存储器缓冲池,建立指向相应存储器缓冲 区的缓冲区指针的阵列。进一步对处理器进行编程,以对于每一个缓 冲区指针阵列,为拥有存储器缓冲池的处理器建立消耗指针,并为共 享所述存储器缓冲池的另一个处理器建立释放指针,每个指针最初都 指向阵列的预定位置。进一步对该处理器进行编程,以根据已消耗和
已释放的缓冲区来调节消耗指针和释放指针。


图1是根据本发明一个实施方式的多处理器系统的框图。 图2是根据本发明一个实施方式的图1中的每一个处理器所使用 的存储器缓冲池的框图。
图3示出了根据本发明的一个实施方式的多处理器系统的每一个 处理器中的操作方法的流程图。
具体实施例方式
虽然说明书归纳了权利要求,该权利要求限定了被认为具有新颖 性的本发明实施方式的特征,但应该认为,结合附图,仔细研究以下说明,将更好地理解本发明的实施方式,其中,延续相同的附图标记。 图1是根据本发明的一个实施方式的多处理器系统100的框图。
多处理器系统100包括一存储器102和两个或多个处理器104。存储器 102可以是任何传统的存储设备,例如大容量存储器磁盘驱动器、RAM、 SRAM、 DRAM、 Flash,和/或类似的可读写存储介质。处理器104可 以是任何传统的计算技术,例如微处理器,和/或DSP (数字信号处理 器)。根据本发明的多处理器系统100,可以被任意数量的传统设备所 使用,该类传统设备包括无限制的移动电话、PDA (个人数字助理)、 膝上电脑和台式电脑,仅仅提及很少的一些。多处理器系统100也可 操作任何使用多处理器资源的传统软件应用。
图3示出了根据本发明的一个实施方式,描述用于在所述处理器 104之间共享存储器的多处理器系统IOO的每一个处理器104中使用的 方法200的流程图。方法200从步骤202开始,如图2中所示,每一 个处理器104都建立存储器缓冲池IIO和120。在步骤204,为每一个
缓冲池建立一个指向相应存储器缓冲区的缓冲区指针的阵列。在步骤 206,在该共享池描述符区域,分别被描述为Fr_Buff—Rel—Ptr (空闲缓 冲区释放指针)和Fr_Buff—Cons—Ptr (空闲缓冲区消耗指针)的释放和 消耗指针依次引用这些阵列。共享池描述符还可以包括缓冲区尺寸和 缓冲区计数。缓冲区尺寸指示每个存储器缓冲区的存储容量(以字节、 字、长字或其它),缓冲区计数指示在存储器缓冲池中有多少缓冲区 指针和对应的存储器缓冲区可用。
最初,每一个释放和消耗指针都指向缓冲区指针阵列的一个预定 位置。在本实例中,指针指向阵列的开始处。然而应该理解,也可以 使用阵列中的其它开始点。图2中的缓冲池可以在处理器104间被共 享,或被内部地消耗。因此,在步骤208,每一个处理器104都做出存 储器池是被内部使用的还是被共享使用的确定。如果被共享,处理器 104继续执行步骤210,以确定消耗指针是否指向空值。本文中,空值是指一个不存在或不可用的指针。对于本领域技术人员,显然可以将 表示空值的任何技术应用于本发明。当诸如这样的条件被检测到时, 表示存储器缓冲池满(即,不存在可用的空闲存储器)。在这种情况
下,可以重新对处理器104编程来重复步骤208至210,直至释放一个 或多个存储器缓冲区。
另一方面,如果检测到一个可用的缓冲区指针,处理器继续执行 步骤212,将缓冲区指针读到其内部存储器中,以确定在何处访问存储 器缓冲区。为确认该存储器缓冲区的消耗,处理器104继续执行步骤 214,将刚从缓冲区指针阵列中读取的缓冲区指针无效,然后递增消耗 指针216。根据需要的缓冲区的数量,处理器104将步骤210至216重 复执行需要的次数,(依据缓冲区计数取模的方式)。 一旦处理器104 已经获得了它所需要的所有存储器缓冲区,继续执行步骤218,与另一 个处理器104共享缓冲区指针和与之关联的存储器缓冲区。可以使用 任何用于共享存储器与其它处理器104 (例如消息缓冲区一未示出)通 信的方式。
一旦另一个处理器104已经消耗了共享存储器(即,已经在共享 存储器上执行了所有需要的任务,并且不再需要共享的存储器缓冲 区),继续执行步骤220,将由释放指针(如在步骤214由具有存储器 池的处理器104所创建的)指向的空值替换为提供给所述处理器104 的共享缓冲区指针。对于每一个由共享缓冲区指针替换的空值,释放 指针递增到缓冲区指针阵列的下一位置。重复执行步骤220至222至 所需要被释放(空闲)的缓冲区指针数量的次数。
这样,因为在处理器104间共享了缓冲区指针和与之对应的存储 器缓冲区,接收该共享存储器的接收方处理器,在不再使用所述存储 器时,立刻自主地补充该共享存储器。刚刚描述的在处理器104之间 消耗和释放缓冲区的自主动作,比利用时间消耗信号量库调用的现有 技术系统具有实质性的性能改进。当处理器104打算为其本身消耗存储器缓冲区时,继续执行步骤
224至230。这些步骤在操作上与在步骤210至216中描述的一样。艮P , 处理器104根据需要重新获取缓冲区指针,使它们的存在无效,并且 根据重新获取到的存储器缓冲区数量递增消耗指针。在步骤232,在上 述步骤中重新获取的存储器缓冲区,被处理器104消耗。 一旦被消耗 掉,在步骤234中消耗指针就递减,用被消耗的缓冲区指针替换先前 创建的空值,从而释放(空闲)所述指针和与之相关联的存储器缓冲 区以供将来使用。重复执行步骤234和236至需要的次数,以释放处 理器104不再需要的被消耗的存储器缓冲区。
能够很容易地应用上述实施方式,使得一个处理器104可以很容 易地与两个或多个处理器共享存储器。此外,在处理器104与新处理 器动态交流的情况下,可以对所述处理器进行编程以调节其存储器池, 以适应与另外的处理器进行存储器共享。例如,具有1M字节的缓冲空 间的存储器池的处理器104,可以将该缓冲池重新设置为两个具有图2 结构的并按照方法200工作的500K字节的缓冲池。这样的重新设置可 以被重复(或撤销)多次,该次数为在多处理器环境中共享的存储器 可能需要增加或移除的次数。
对于读者来说,根据本发明的实施方式,显然可以在硬件、软件 及硬件和软件的组合来实现。因此,可以将所述实施方式嵌入到计算 机程序产品中,该计算机程序产品包括能够执行在此所描述的方法的 所有特征,并且当加载到计算机系统中时,该计算机程序产品可以像 计算机指令一样执行这些方法。本上下文中的计算机程序,是指用任 何语言、代码或符号的指令集合的任何表达,其中该指令集合旨在使 具有信息处理能力的系统,以直接地或者在以下一个或者两个步骤之 后执行特定的功能,a)转换到另一种语言、代码或符号;b)以不同的 物质形态再生产。显然,根据本发明的实施方式可以用于许多装置。因此,尽管说 明书使用特定的装置和方法,在此的目的和内涵也适合并适用于在此 未描述的其它装置。因此,对于那些本领域技术人员来说,显然可以 在不偏离本发明的精神和范围的情况下,对所公开的实施方式进行修 改。
因此,应该认为所描述的实施方式仅是本发明实施方式的一些较 突出的特征和应用实例。也应该理解,权利要求旨在覆盖在此所描述 的结构以及执行在此所列举的功能,而不仅是结构上的等同物。从而, 从说明书中读到的等效结构被解释为包含在以下权利要求定义的范围 内。因此,应该对以下权利要求而不是对上述说明书做出参考,指示 本发明的实施例的范围。
权利要求
1.一种用于在多处理器系统中共享存储器的方法,包括以下步骤为两个或多个处理器建立存储器缓冲池;为每一个存储器缓冲池,建立指向相应的存储器缓冲区的缓冲区指针阵列;对每一个缓冲区指针阵列,为拥有所述存储器缓冲池的处理器建立消耗指针,以及为共享所述存储器缓冲池的另一个处理器建立释放指针,每个指针最初都指向所述阵列的预定位置;以及根据被消耗和被释放的缓冲区,调节所述消耗指针和释放指针。
2. 根据权利要求l所述的方法,根据以下步骤在处理器之间消耗 和释放缓冲区指针以及相应的存储器缓冲区读取由所述消耗指针指向的缓冲区指针;将所述缓冲区指针无效;递增所述消耗指针到下一个缓冲区指针;在处理器之间共享所述被消耗的缓冲区指针和与之相关联的存储 器缓冲区;利用所述共享的缓冲区指针替换由所述释放指针指向的空值;以及递增所述释放指针。
3. 根据权利要求2所述的方法,包括以下步骤 在所述读取步骤之前,确认所述消耗指针不指向空值;以及 如果检测到空值,停止消耗操作直到所述消耗指针指向可用的缓冲区指针。
4. 根据权利要求l所述的方法,由控制所述存储器的处理器,根 据以下步骤消耗和释放缓冲区指针以及相应的存储器缓冲区读取由所述消耗指针指向的缓冲区指针;将所述缓冲区指针无效; 递增所述消耗指针到下一个缓冲区指针;消耗与所述被消耗的缓冲区指针相关联的所述存储器缓冲区; 递减所述消耗指针;以及利用所述被消耗的缓冲区指针替换由被递减的消耗指针指向的空 值,从而释放所述指针和与之相关联的存储器缓冲区。
5. 根据权利要求4所述的方法,包括以下步骤 在所述读取步骤之前,确认所述消耗指针不指向空值;以及 如果检测到空值,停止消耗操作直到所述消耗指针指向可用的缓冲区指针。
6. 根据权利要求l所述的方法,包括为每一个存储器缓冲池,建 立对应于每一个所述存储器缓冲区的缓冲区尺寸和缓冲区计数中的至 少一个的步骤。
7. 根据权利要求1的方法,包括在一处理器处调节其存储器缓冲池和对应的消耗指针和释放指针,以适应与另外的处理器进行存储器 共享的步骤。
8. —种用于共享存储器的多处理器系统,包括 存储器;以及两个或多个处理器,编程每一个处理器,用于 在所述处理器之间建立存储器缓冲池;为每一个存储器缓冲池,建立缓冲区指针阵列,指向对应的存储 器缓冲区;对每一个缓冲区指针阵列,为拥有所述存储器缓冲池的处理器建 立消耗指针,以及为共享所述存储器缓冲池的另一个处理器建立释放 指针,每个指针最初都指向所述阵列的预定位置;以及根据被消耗和被释放的缓冲区,调节所述消耗指针和释放指针。
9. 根据权利要求8所述的多处理器系统,其中,编程所述处理器,用于读取由所述消耗指针指向的缓冲区指针;将所述缓冲区指针无效;递增所述消耗指针到下一个缓冲区指针;在处理器之间共享所述被消耗的缓冲区指针和与之相关联的存储 器缓冲区;利用所述共享的缓冲区指针替换由所述释放指针指向的空值;以及递增所述释放指针。
10. 根据权利要求9所述的多处理器系统,其中,编程所述处理 器,用于在所述读取步骤之前,确认所述消耗指针不指向空值;以及 如果检测到空值,停止消耗操作直到所述消耗指针指向可用的缓 冲区指针。
全文摘要
用于共享存储器的一种多处理器系统(100)包括存储器(102),以及两个或多个处理器(104)。编程所述处理器以在所述处理器之间建立(202)存储器缓冲池,并且为每一个存储器缓冲池建立(204)缓冲区指针阵列,指向相应的存储器缓冲区。进一步编程所述处理器,对每一个缓冲区指针阵列,为拥有存储器缓冲池的处理器建立(206)消耗指针,并且为共享所述存储器缓冲池的另一个处理器建立(206)释放指针,每一个指针最初都指向所述阵列的预定位置,根据被消耗和被释放的缓冲区调节(208-236)消耗指针和释放指针。
文档编号G06F3/00GK101310241SQ200680034803
公开日2008年11月19日 申请日期2006年8月22日 优先权日2005年9月22日
发明者斌 刘, 沙尔贝勒·克哈万德, 琼·克哈万德 申请人:摩托罗拉公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1