当前位置: 首页 > 专利查询>辉达公司专利>正文

具有硬件辅助的多处理器和多线程安全消息队列制造技术

技术编号:2834381 阅读:278 留言:0更新日期:2012-04-11 18:40
本发明专利技术提供一种用于不同处理器上的软件组件的消息交换系统。第一组件尝试向写入寄存器加载消息指示符(或消息本身)会触发判断在共享存储器队列中是否存在空间。如果存在,则通过递增消息计数器、将所述消息/指示符写入到所述队列中由写入指示符指定的位置且将所述写入指示符改变到下一队列位置来更新所述队列。第二组件尝试从读取寄存器加载所述消息/指示符会触发判断在所述队列中是否存在至少一个新消息。如果存在,则通过递减所述消息计数器、从所述队列中由读取指示符指定的位置读取所述消息/指示符且将所述读取指示符改变为指向下一队列位置来更新所述队列。所述判断和队列更新是相对于所述软件组件以原子方式执行的。

【技术实现步骤摘要】
具有硬件辅助的多处理器和多线程安全消息队列
本文件一般来说涉及电子计算机和数字处理系统中的程序间和处理间通信,且更明 确地说,涉及此类使用共享存储器的通信。
技术介绍
在多个处理器交换消息时通常采用共享存储器。也就是说,当第一处理器(我们这 里将其命名为CPU)将消息写入到所述共享存储器中以使得第二处理器(我们这里将 其命名为COP)能接着从所述共享存储器读取所述消息时。维持由此交换的消息的完整性需要相对于软件执行线程以原子方式执行对消息内容的任何更新。通常使用此类共享存储器以及锁定和异步信令来实施多处理器安全消息队列。将消 息放置在共享存储器中,且接着仅在采取特定预防措施之后才对其进行读取和写入。举 例来说,建立所述消息的读取器或写入器软件线程将获得多处理器安全锁定(通常使用 旋转锁定来实施)。并且,当必要时,其还将获得单处理器多线程安全锁定(通常命 名为互相排斥锁定或互斥)。图la-c是示意性方框图,其中图la在文体上描绘所关注的一般硬件(HW)环境, 且图lb-c描绘现有技术方案中所必需的常规软件(SW)操作。通常还存在一些需要考虑的角落条件。举例来说,需要处理在尝试读取但消息队 列为空时的特殊情况,且还需要处理在尝试写入但消息队列为满时的特殊情况。异步信 令通常用于处理这些条件(例如,在对空消息队列进行第一次写入之后发消息通知以唤 醒等待读取器线程)。通常通过一个处理器中断另一个处理器且接着在中断服务程序 (ISR)内用旗语来发消息通知以唤醒阻断线程来实施此类异步信令。遗憾的是,所有这些锁定和信令机制均需要相当大的软件设计及实施努力和相当大 的运行时间额外开销。我们来考虑一个基于旋转锁定的实例。如果在CPU (第一处理器)上运行的第一线 程已获得所述旋转锁定,并由CPU (所述第一处理器)上的另一线程预先占有,且接着 COP (第二处理器)上的第三线程设法得到所述旋转锁定,那么其将被阻断一长段时间, 直到所述第一线程再次变成活动且接着释放所述旋转锁定为止。旋转锁定通常被实施为 不断运行直到满足条件为止的环路内的轮询。如可理解的那样,此方案可导致临时的优先级倒置,其中延迟COP上的优先级非常高的任务,因为CPU上的优先级较低的线程 具有CPU上的不相关的优先级较高的线程所预先占有的所有权。此方案还可容易引起相 当大的等待时间,其中COP在等待满意的轮询结果的同时变得基本上无用。 具有所有权的线程由CPU上不相关的优先级较高的线程预先占有。 类似地,使用互斥强加了另一额外开销。 一些操作系统(OS)和实时OS (RTOS) 花费大量时间来获得互斥,即使其正保护的资源可用时也是如此。因此,仍然需要一种用于多个处理器交换消息的更有效的系统。此系统应优选地去 除对采用基于软件的机制(例如旋转锁定和相互排斥锁定(互斥))的需要。
技术实现思路
因此,此处需要提供一种用于多个处理器交换消息的改进系统。简要地说,本专利技术的一个优选实施例是一种用于在第一计算机化处理器上运行的第 一软件组件将消息写入到在第二计算机化处理器上运行的第二软件组件可访问的共享存 储器的方法。所述第一软件组件尝试向消息队列写入寄存器加载消息标记,所述消息标 记是消息指示符(或消息本身)。由此触发的是,判断所述共享存储器中的消息队列中是 否存在用于所述消息标记的空间。相对于软件组件以原子方式执行此判断。如果空间可 用,那么也相对于软件组件以原子方式更新消息队列,这通过递增消息计数器,将所述 消息标记写入到所述消息队列中由写入指示符指定的位置处,且将所述写入指示符改变 为指向所述消息队列中的下一位置来进行。简要地说,本专利技术的另一优选实施例是一种用于在第二计算机化处理器上运行的第 二软件组件从在第一计算机化处理器上运行的第一软件组件可访问的共享存储器中读取 消息的方法。第二软件组件尝试从消息队列读取寄存器加载消息标记,其中所述消息标 记是存储在共享存储器中的消息队列中的消息指示符(或消息本身)。由此触发的是,判 断所述消息标记是否为新的,借此指示共享存储器中的所述消息队列中是否存在至少一 个新消息。相对于软件组件以原子方式来执行此判断。如果存在新消息,那么也相对于 软件组件以原子方式更新所述消息队列,这通过递减消息计数器,从所述消息队列中由 读取指示符指定的位置处读取所述消息标记,且将所述读取指示符改变为指向所述消息 队列中下一位置来进行。本专利技术的一个优点在于,其提供基于硬件的受保护的原子更新机制,所述机制完全 摆脱了软件旋转锁定和相互排斥锁定。本专利技术的另一优点在于,其使得在采用本专利技术的软件中实施多个处理器消息交换显著地更为容易。并且,本专利技术的另一优点在于,其显著降低了与多个处理器消息交换相关联的运行 时间额外开销。鉴于如本文描述且如附式中说明的关于实行本专利技术的当前最佳已知模式和优选 实施例的工业适用性的描述,所属领域的技术人员将明了本专利技术的这些和其它期望特征。附图说明从以下结合附式的详细描述中将容易了解到本专利技术的目的和优点,在附图中图la-c是示意性方框图,其中图la(
技术介绍
)在文体上描绘所关注的一般硬件(HW) 环境,且图lb-c (现有技术)描绘现有技术方案中所必需的常规软件(SW)操作。图2是描绘根据本专利技术的硬件辅助系统的实施例如何与现代计算机系统相关的示意 性方框图。图3a-b是描述图2中本专利技术硬件辅助系统的实施例所使用的示范性数据结构的表格 附录。图4a-c是描绘图2的HW方面的初始化的流程图,其中图4a展示重设子程序,图 4b展示引导子程序,且图4c展示初始化子程序。图5a-c是描绘用于将消息写入到图2中的消息队列的消息写入子处理的流程图。 图6a-c是描绘用于从图2中的消息队列处读取消息的消息读取子处理的流程图。 图7是描绘在消息队列为满之后由读取引起中断时运行的满后读取中断服务程序 (ISR)的流程图。图8是描绘在消息队列18为空的同时由写入引起中断时运行的空后写入ISR的流程图。在附图的各种图式中,相同参考用于指示相同或类似元件或步骤。具体实施方式本专利技术的优选实施例是一种具有硬件辅助的多处理器和多线程安全消息队列。如本 文在各种图式中且特别是在图2的视图中说明,本专利技术的优选实施例由一般参考符号10 描绘。简要地说,本专利技术者己观察到对于多处理器消息传递的现有技术方法中的不足是由 于处理器且特别是处理器中的操作系统(OS)仅松散地连接到它们用于消息交换的实际 硬件资源(即,共享存储器和其中的消息队列)的缘故。相反,这已导致专利技术者意识到 用以获得整个系统的更佳使用的方式在于使硬件资源提供辅助。回来简要参考图la且现还参考图2中的示意性方框图,可了解本专利技术硬件辅助系统 IO是如何与现代计算机系统12相关的。出于简化缘故,我们的示范性计算机系统12此 处仅包括两个处理器14 (CPU 14a和COP14b)、包括消息队列18的一组共享存储器16 和队列管理单元20。 一般来说且尤其出于以下揭示内容的缘故,可将计算机系统12视 为具有软件方面(一般来说,SW方面22,且详细地说,用于CPU 14a的SW组件22a 和用于COP 14b的SW组件22b)和硬件方面(HW方面24)。 SW方面22包括处理器 14 (CPU 14本文档来自技高网
...

【技术保护点】
一种用于由运行于第一计算机化处理器上的第一软件组件将消息写入到可由运行于第二计算机化处理器上的第二软件组件访问的共享存储器的方法,所述方法包含:    用所述第一软件组件尝试向消息队列写入寄存器加载消息标记,所述消息标记是所述消息的指示符或所述消息本身;    判断所述共享存储器中的消息队列中是否存在用于所述消息标记的空间,其中所述判断是由所述已发生的尝试触发且相对于所述软件组件以原子方式执行;    如果所述判断指示所述空间可用,则更新所述消息队列,其中所述更新也是相对于所述软件组件以原子方式进行的,且包括:    递增消息计数器;    将所述消息标记写入到所述消息队列中由写入指示符指定的位置处;和    将所述写入指示符改变为指向所述消息队列中的下一位置。

【技术特征摘要】
US 2006-5-25 11/420,3941.一种用于由运行于第一计算机化处理器上的第一软件组件将消息写入到可由运行于第二计算机化处理器上的第二软件组件访问的共享存储器的方法,所述方法包含用所述第一软件组件尝试向消息队列写入寄存器加载消息标记,所述消息标记是所述消息的指示符或所述消息本身;判断所述共享存储器中的消息队列中是否存在用于所述消息标记的空间,其中所述判断是由所述已发生的尝试触发且相对于所述软件组件以原子方式执行;如果所述判断指示所述空间可用,则更新所述消息队列,其中所述更新也是相对于所述软件组件以原子方式进行的,且包括递增消息计数器;将所述消息标记写入到所述消息队列中由写入指示符指定的位置处;和将所述写入指示符改变为指向所述消息队列中的下一位置。2. 根据权利要求l所述的方法,其进一步包含否则,如果所述判断指示所述空间不可用,贝U-使所述第一软件组件等待,直至所述消息队列中发生改变;且 循环回到所述尝试。3. 根据权利要求2所述的方法,其中所述第一计算机化处理器具有程序计数器,且所 述方法进一步包含在所述等待之前,准备通过以下步骤将所述第一软件组件以原子方式置于等待条 件中保存所述程序计数器的临时副本; 在所述第一计算机化处理器中停用中断;和 将所述程序计数器设置为满处理机子方法;且 其中所述判断包含所述满处理机子方法,且包括 保存所述临时副本的本机副本;将与所述第一软件组件相关联的写入旗语放置在等待列表中; 在所述第一计算机化处理器中启用中断;阻断所述第一软件组件,直到发信号通知所述写入旗语为止;和将所述第一计算机化处理器中的所述程序计数器设置回到所述本机副本,借此 返回到所述(a)。4. 根据权利要求1所述的方法,其进一步包含在所述更新之后,中断在所述第二计 算机化处理器上运行的所述第二软件组件以在所述第二计算机化处理器上启用读 取操作。5. 根据权利要求4所述的方法,其中所述中断包括发信号通知处于等待列表中最上方的读取旗语; 从所述等待列表中移除所述处于最上方的所述读取旗语;和 使所述第二计算机化处理器的控制返回到所述第二软件组件。6. 根据权利要求4所述的方法,其中所述中断包括判断等待列表中是否存在预设量的读取旗语,且如果存在,贝U:发信号通知所述等待列表中的所有所述读取旗语,且从所述等待列表中移除所有所述读取旗语;和 使所述第二计算机化处理器的控制返回到所述第二软件组件。7. —种用...

【专利技术属性】
技术研发人员:格克汗阿夫卡罗古拉里
申请(专利权)人:辉达公司
类型:发明
国别省市:US[美国]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1