当前位置: 首页 > 专利查询>ARM有限公司专利>正文

用于为多线程执行锁保护处理操作的数据处理装置及方法制造方法及图纸

技术编号:14890274 阅读:31 留言:0更新日期:2017-03-28 22:42
提供了用于执行多个线程的数据处理装置及方法。处理电路执行多个线程所需的处理操作,处理操作包括与锁相关联的锁保护处理操作,其中在处理电路执行锁保护处理操作之前,需要获取锁。接力棒维持电路用于与多个线程相关联地维持接力棒,接力棒形成锁的代理,并且接力棒维持电路被配置成在多个线程之间分配接力棒。一旦已为线程中的一个获得锁,处理电路在释放锁之前通过处理电路和接力棒维持电路之间的通信针对多个线程执行锁保护处理操作,接力棒维持电路在多线程中标识当前线程,其中,通过将接力棒分配给该当前线程来为其执行锁保护处理操作。因此,可以将接力棒从一个线程传递到下一个线程,而不需要释放和重新获取锁。当跨多线程执行锁保护处理操作时,这提供了显著的性能改进。

【技术实现步骤摘要】
【国外来华专利技术】
本专利技术涉及一种用于对多线程执行锁保护处理操作的数据处理装置和方法。
技术介绍
提供一种被配置为执行多个线程的数据处理装置是已知的。每个线程通常需要执行一系列处理操作,并且每个线程通常包括对那些处理操作进行定义的指令序列。还已知使用锁作为同步机制,当存在多线程执行时,用于限制对数据处理系统内的相关资源(例如,共享数据结构)的访问。如果处理操作需要访问由锁保护的资源,则该处理操作在本文将被称为锁保护处理操作,并且在针对特定线程执行这种锁保护处理操作之前,将需要确保获取了锁。锁可以采取各种形式(并且可以应用本专利技术而不考虑锁的基本形式),但是一种常用形式是存储在存储器中的特定地址处的二进制值。为了获取锁,处理电路在存储器中的锁地址处查找值,并且如果其处于指示锁可用的第一值(例如,零),则通过将该数据值设置为指示锁已被获取的第二值(例如,一)来获取锁。在为特定线程获取锁的同时,寻求获取锁的任何其它线程将在从锁地址读取时确定该锁当前处于第二值,并且相应地已被获取。然后,不针对其他线程执行锁保护处理操作,直到该线程已被释放,并且随后由其他等待的线程获取。相应地,当多线程包括由同一锁保护的锁保护处理操作时,则将仅能一次针对一个线程执行该锁保护处理操作。锁保护处理操作可以是由每个线程执行的相同操作(例如每个线程正执行相同的程序代码),或者可以是不同线程中的不同处理操作(例如,其中一个线程希望执行处理操作以访问共享资源以便将值添加到该共享资源中的列表中,而另一个线程希望执行处理操作以从该共享资源中的列表中删除值)。指定锁保护处理操作的一个或多个指令在本文将被称为关键代码段,相应地,关键代码段是多线程程序的一部分,其一次只能由一个线程安全地执行,因为例如它会更新共享数据结构。当在特定线程内遇到关键代码段时,首先获取锁(其防止任何其它线程获取到锁,直到它被释放),并且在完成关键代码段之后,释放锁。这种方法允许任意复杂度的关键代码段被支持锁机制的任何硬件支持。然而,为了确保正确的操作,锁机制必须包括线程之间的通信和同步,使得所有线程在任何一个时间都知道哪个线程拥有锁,并且此外,每当获取和释放锁时,必须调用该机制(即,每次每个线程想要执行锁保护处理操作时)。通常这通过使用原子操作来实现,其确保每次只有单个线程可以获取锁。因此,锁的获取是相对耗时的过程,涉及多个指令的执行以及对存储器中的锁地址的读和写访问。因此,期望提供在数据处理设备上执行多线程时用于处理锁保护处理操作的更高效的机制。
技术实现思路
从第一方面看,本专利技术提供了一种用于执行多个线程的数据处理装置,包括:处理电路,被配置为执行所述多个线程所需的处理操作,所述处理操作包括与锁相关联的锁保护处理操作,锁需要在处理电路执行锁保护处理操作之前被获取;以及接力棒维持电路,被配置为与多个线程相关联地维持接力棒,接力棒形成锁的代理,并且接力棒维持电路被配置为在多个线程之间分配接力棒;处理电路被配置为与接力棒维持电路进行通信,使得一旦已为多个线程中的一个线程获取到锁,则处理电路在锁被释放之前针对多个线程中的多线程执行锁保护处理操作,接力棒维持电路被配置为在多线程中标识当前线程,其中,通过将接力棒分配给该当前线程来为其执行锁保护处理操作。根据本专利技术,提供接力棒维持电路以与多个线程相关联地维持接力棒。接力棒形成锁的代理,并且接力棒维持电路在线程之间分配接力棒。在一个实施例中,接力棒维持电路以下述方式布置:将接力棒一次仅分配给一个线程。当试图针对多个线程执行锁保护处理操作时,本专利技术的接力棒机制确保了只需获取和释放锁一次,而不是必须为每个单独线程分别获取和释放锁。具体地,一旦已经为线程中的第一线程获取了锁,则在多个线程之间传递接力棒,以针对那些线程中的每一个执行锁保护处理操作,而同时始终保持着获取锁。一旦已针对多线程中的所有线程执行了锁保护处理操作,则释放锁。在一个实施例中,该机制用于使得在接下来释放锁之前按顺序针对每个线程执行锁保护处理操作。这种方法通过确保一次只有一个线程执行锁保护处理操作来确保锁保护处理操作的正确处理,同时减少与获取和释放锁相关联的开销。因此,这可以在执行多个线程的数据处理系统内(特别是在多个线程包括大量锁保护处理操作的情况下)产生显著的性能改进。接力棒与锁相关联。因此,在使用多个锁的实施例中,单独的接力棒将与每个锁相关联。存在处理电路可以与接力棒维持电路通信以实现上述讨论的功能的多种方式。在一个实施例中,对于需要执行锁保护处理操作的需求线程,处理电路被配置为请求接力棒维持电路将接力棒分配给该需求线程,如果接力棒当前未被分配给另一线程,接力棒维持电路被配置为将接力棒分配给需求线程并且使处理电路获取锁。因此,如果锁尚未被获取,则可以将接力棒分配给寻求执行锁保护处理操作的线程,然后使处理电路在执行锁保护处理操作之前获取锁。在一个实施例中,接力棒可以永久存在,因此在上述情况下,“分配”过程仅包括以任何适当的方式标识下述情形:已将该接力棒分配给需求线程。在替代实施例中(其避免任何时候都需要针对每个单个锁的接力棒的存在),可以根据需要而创建和终止接力棒,因此在上述情况下,“分配过程”包括创建接力棒然后以任何适当的方式标识下述情形:已将该接力棒分配给需求线程。此外,在一个实施例中,如果在请求接力棒维持电路将接力棒分配给需求线程时,确定了接力棒当前被分配给另一线程,则这指示了已经在针对该另一线程执行锁保护处理操作(或者该另一线程在获取锁的过程中,使得可以执行锁保护处理操作),并且在该情况下,接力棒维持电路与接力棒相关联地维持需求(后续)线程正在等待接力棒的指示,并且使处理电路在等待接力棒分配期间停止执行需求线程。通过这种方法,在针对当前已被分配了接力棒的线程执行锁保护处理操作的同时,可以使得一个或多个线程停止而等待接力棒的分配。一旦当前被分配了接力棒的线程完成执行锁保护处理操作,则可以将接力棒重新分配给停止的线程中的一个,以使得该线程能够继续运行并且执行锁保护处理操作,而无需释放和重新获取锁。存在多种方式,其中处理电路可以请求接力棒维持电路将接力棒分配给线程。在一个实施例中,每个线程包括指令序列,并且对于需要执行锁保护处理操作的需求线程,需求线程包括当由处理电路执行时使处理电路请求接力棒维持电路将接力棒分配给需求线程的获得接力棒指令。因此,在此实施例中,将明确的指令添加到指令序列中以触发针对接力棒维持电路的接力棒的请求。获得接力棒指令的执行可以以各种方式实现。例如,在一个实施例中,获得接力棒指令的执行使得控制数据被存储在寄存器中,以指示接力棒维持电路是否需要处理电路来获取锁。在已经执行了获得接力棒指令之后,接着处理电路通常将执行一个或多个进一步指令以分析寄存器中的控制数据,以便确定是否需要获取锁。形成线程的指令序列通常将包括锁获取代码。在获得接力棒指令的替代实施方案中,获得接力棒指令的执行不需要将任何控制数据写入寄存器,并且取而代之的是,如果接力棒维持电路不需要处理电路获取锁,则获得接力棒指令的执行将结合所需的跳转功能以跳转越过锁获取代码。否则,获得接力棒指令的执行将不会引起这种跳转发生,并且相反,执行将继续到锁获取代码以使得锁被获取。这避免了将控制数据写入寄存器的需要,本文档来自技高网
...
<a href="http://www.xjishu.com/zhuanli/55/201580036289.html" title="用于为多线程执行锁保护处理操作的数据处理装置及方法原文来自X技术">用于为多线程执行锁保护处理操作的数据处理装置及方法</a>

【技术保护点】
一种用于执行多个线程的数据处理装置,包括:处理电路,被配置为执行所述多个线程所需的处理操作,所述处理操作包括与锁相关联的锁保护处理操作,所述锁需要在所述处理电路执行所述锁保护处理操作之前被获取;以及接力棒维持电路,被配置为与所述多个线程相关联地维持接力棒,其中所述接力棒形成所述锁的代理,并且所述接力棒维持电路被配置为在所述多个线程之间分配接力棒;所述处理电路被配置为与所述接力棒维持电路通信,使得一旦已为所述多个线程中的一个线程获取到所述锁,则所述处理电路在释放所述锁之前为所述多个线程中的多线程执行所述锁保护处理操作,所述接力棒维持电路被配置为在所述多线程中标识当前线程,其中,通过将所述接力棒分配给所述当前线程来为所述当前线程执行所述锁保护处理操作。

【技术特征摘要】
【国外来华专利技术】2014.07.08 GB 1412082.81.一种用于执行多个线程的数据处理装置,包括:处理电路,被配置为执行所述多个线程所需的处理操作,所述处理操作包括与锁相关联的锁保护处理操作,所述锁需要在所述处理电路执行所述锁保护处理操作之前被获取;以及接力棒维持电路,被配置为与所述多个线程相关联地维持接力棒,其中所述接力棒形成所述锁的代理,并且所述接力棒维持电路被配置为在所述多个线程之间分配接力棒;所述处理电路被配置为与所述接力棒维持电路通信,使得一旦已为所述多个线程中的一个线程获取到所述锁,则所述处理电路在释放所述锁之前为所述多个线程中的多线程执行所述锁保护处理操作,所述接力棒维持电路被配置为在所述多线程中标识当前线程,其中,通过将所述接力棒分配给所述当前线程来为所述当前线程执行所述锁保护处理操作。2.根据权利要求1所述的数据处理装置,其中所述接力棒维持电路被配置为将所述接力棒一次分配给一个线程。3.根据权利要求1或2所述的数据处理装置,其中,对于需要执行所述锁保护处理操作的需求线程,所述处理电路被配置为请求所述接力棒维持电路将所述接力棒分配给所述需求线程,如果所述接力棒当前未被分配给另一线程,所述接力棒维持电路被配置为将所述接力棒分配给所述需求线程并使所述处理电路获取所述锁。4.根据权利要求3所述的数据处理装置,其中当所述处理电路请求所述接力棒维持电路将所述接力棒分配给需要执行所述锁保护处理操作的需求线程时,如果所述接力棒当前被分配给另一线程,所述接力棒维持电路被配置为与所述接力棒相关联地维持所述需求线程正在等待所述接力棒的指示,并且使所述处理电路在等待所述接力棒分配期间停止执行所述需求线程。5.根据权利要求3或4所述的数据处理装置,其中每个线程包括指令序列,并且对于需要执行所述锁保护处理操作的需求线程,所述需求线程包括当由所述处理电路执行时使所述处理电路请求所述接力棒维持电路将所述接力棒分配给所述需求线程的获得接力棒指令。6.根据权利要求5所述的数据处理装置,其中所述获得接力棒指令的执行使得控制数据被存储在寄存器中,以指示所述接力棒维持电路是否需要所述处理电路获取所述锁。7.根据权利要求5所述的数据处理装置,其中,所述指令序列包括锁获取代码,并且如果所述接力棒维持电路不需要所述处理电路获取所述锁,则所述获得接力棒指令的执行使得处理跳转越过所述锁获取代码。8.根据前述权利要求中任一项所述的数据处理装置,其中,当所述处理电路已为线程执行完所述锁保护处理操作时,所述处理电路被配置为向所述接力棒维持电路发出传递接力棒请求,所述接力棒维持电路响应于所述传递接力棒请求来确定在所述多线程中是否存在仍需要执行所述锁保护处理操作的任何剩余线程,并且如果存在,则将所述接力棒分配给所述剩余线程中的一个线程。9.根据权利要求8所述的数据处理装置,其中,如果所述接力棒维持电路确定了在所述多线程中不存在仍需要执行所述锁保护处理操作的剩余线程,则所述接力棒维持电路被配置为将所述接力棒解除分配并使得所述处理电路释放所述锁。10.根据权利要求8或9所述的数据处理装置,其中每个线程包括指令序列,并且对于需要执行所述锁保护处理操作的线程,所述线程包括传递接力棒指令,所述传递接力棒指令在执行完所述线程的所述锁保护处理操作时被所述处理电路执行,并使得所述处理电路向所述接力棒维持电路发出所述传递接力棒请求。11.根据权利要求10所述的数据处理装置,其中,所述传递接力棒指令的执行使得控制数据被存储在寄存器中,以指示所述接力棒维持电路是否需要所述处理电路释放所述锁。12.根据权利要求10所述的数据处理装置,其中,所述指令序列包括锁释放代码,并且如果所述接力棒维持电路不需要所述处理电路释放所述锁,则所述传递接力棒指令的执行使得处理跳转越过所述锁释放代码。13.根据任一前述权...

【专利技术属性】
技术研发人员:大卫·汉纳·曼塞尔蒂莫西·霍尔罗伊德·哥劳特
申请(专利权)人:ARM有限公司
类型:发明
国别省市:英国;GB

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

1