System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind() 一种硬件事务内存中对事务进行动态调度的方法技术_技高网
当前位置: 首页 > 专利查询>复旦大学专利>正文

一种硬件事务内存中对事务进行动态调度的方法技术

技术编号:40636094 阅读:7 留言:0更新日期:2024-03-13 21:19
本发明专利技术属于片上多处理器技术领域,具体为硬件事务内存中对事务进行动态调度的方法。本发明专利技术主要对原有的内存子系统进行增强,在私有缓存中引入本地调度模块,在共享缓存中引入全局调度模块,两者组成分层的事务动态调度系统。本地调度模块主要负责部分事务的调度,以便让一部分冲突友好的事务能够迅速启动,具体包括本地事务冲突预测器模块和扩展的私有缓存控制器逻辑;全局调度模块负责剩余事务的调度,在综合全局冲突信息的基础上,仅允许概率较小与正在运行事务发生冲突的事务启动,具体包括全局事务冲突预测器模块和扩展的共享缓存控制器逻辑。本发明专利技术作为硬件事务内存的扩展,在对软件透明的情况下动态控制事务的启动,减少冲突的再次发生。

【技术实现步骤摘要】

本专利技术属于片上多处理器,具体涉及硬件事务内存中对事务进行动态调度的方法


技术介绍

1、随着多核处理器的兴起,多线程编程成为充分利用现代计算机硬件性能的关键。然而,多线程编程往往伴随着复杂的并发控制问题,如数据竞争和死锁,使得开发和调试多线程应用程序变得复杂和困难。传统的使用锁进行同步的机制,如互斥锁和信号量,用于控制多线程访问共享数据,但它们可能会成为多核性能的瓶颈,同时容易出现死锁和饥饿等问题。事务内存是一种并发编程范例,旨在提供更简单、更安全的并发控制,使得开发人员更容易编写并发程序,同时由于无锁化特性展现了更高的性能潜力。相较于软件实现的事务内存,硬件事务内存以增加一定的硬件复杂度为代价取得更高的性能,获得了广泛科研工作者和硬件厂商的青睐。尽管学术界对硬件事务内存的性能进行了长时间的全方面探索,硬件厂商最终还是采用了一种被称为尽最大努力的硬件事务内存(best-efforthardware transactional memory)实现,以折衷实现的复杂性和验证的难度。

2、如参考文献1,intel实现了一种尽最大努力的硬件事务内存,通过核心(cpu)执行事务开始和提交指令来标识事务的开始和结束。事务的结束除了核心正常运行到事务提交指令将事务成功提交,还有可能是运行过程中遇到内存冲突等因素导致事务中途失败提前结束。核心(cpu)的私有缓存接收到cpu发过来的事务开始的请求进入到事务状态,后续该核心(cpu)发出的访存请求会被其私有缓存记录在读写集中。当私有缓存收到来自其他核心(cpu)的访存请求时,需要通过读写集进行冲突检测,冲突仲裁策略采用请求者始终获胜的策略,即如果检测到冲突,收到请求的事务直接失败,发出请求的事务正常运行。事务失败后需要清除私有缓存的读写集合,核心(cpu)回滚到事务开始时建立的检查点处。

3、实践中发现这种简洁的实现方式会极大可能导致事务之间互相终止对方,一段时间内没有事务能够顺利提交,是硬件事务内存性能表现不稳定的主要原因之一。


技术实现思路

1、为了减轻硬件事务内存中事务之间可能互相终止对方,导致性能下降和不稳定的问题,本专利技术提出一种对硬件事务内存中的事务进行动态调度的方法,在不修改原有的冲突管理策略下,有选择地暂停可能会造成再次冲突的事务,并在未来合适的时候唤醒它们。

2、本专利技术提出的对硬件事务内存中的事务进行动态调度的方法,作为一种扩展,可以实现在类似尽最大努力的硬件事务内存架构(参考文献1)之上;在此基础上,通过驻留在缓存中的硬件调度器来实现对软件透明的事务动态调度;具体地,本专利技术主要对原有的内存子系统进行增强,在私有缓存中引入本地(局部)调度模块,并在共享缓存中引入全局调度模块,两者组成本专利技术的分层的动态调度系统。所述本地(局部)调度模块主要负责部分事务的调度,以便让一部分冲突友好的事务能够迅速启动;具体包括本地事务冲突预测器模块和扩展的私有缓存控制器逻辑。全局调度模块则主要负责剩余事务的调度,在综合全局冲突信息的基础上,仅允许概率较小与正在运行事务发生冲突的事务启动;具体包括全局事务冲突预测器模块和扩展的共享缓存控制器逻辑。

3、本专利技术提出的驻留在私有缓存的本地(局部)调度模块,其包括:本地事务冲突预测器模块和扩展的私有缓存控制器逻辑;其中:

4、所述本地事务冲突预测器模块,根据在当前核心历史上运行事务的提交情况,给出当前事务是否会与其他正在运行的事务产生冲突的初步预测。为了尽可能小的开销和尽可能快的响应速度,本专利技术仅采用两比特来存储当前的冲突状态。只需要简单地对这两比特的冲突状态译码就可以得到冲突预测的结果。具体为采用00编码初始化状态,表示低置信度无冲突;01编码高置信度无冲突;10编码低置信度有冲突;11编码高置信度有冲突。状态机的跳转逻辑如下:在低置信度无冲突状态下如果接收到事务提交的事件,则下一个周期跳转到高置信度无冲突状态,如果接收到事务终止的事件,则下一个周期跳转到低置信度有冲突状态;在高置信度无冲突状态下,如果接收到事务提交的事件,则保持状态不变,如果接收到事务终止的事件,则下一个周期跳转到低置信度无冲突状态;在低置信度有冲突状态下,如果接收到事务提交的事件,则下一个周期跳转到低置信度无冲突状态,如果接收到事务终止的事件,则下一个周期跳转到高置信度有冲突状态;在高置信度有冲突状态下,如果接收到事务提交的事件,则下一个周期跳转到低置信度无冲突的状态,如果接收到事务终止的事件,则状态保持不变。当冲突状态处于低置信度无冲突或者高置信度无冲突状态时被称为冲突友好的状态,在这个状态下启动的事务被认为是冲突友好的事务,可以快速启动。

5、所述扩展的私有缓存控制器逻辑,主要扩展在对cpu发过来的事务开始和事务提交的访存请求的处理。当缓存控制器收到的不是事务相关的请求时,按照原有的逻辑进行处理即可。但是当缓存控制器收到事务开始的请求时,需要根据上述本地事务冲突预测器模块的结果做出不同的动作。具体来说如果本地事务冲突预测器的结果是无冲突,处理流程跟之前一致,设置缓存为事务模式,唯一不同的是需要向下一级共享缓存发送事务开始的消息,用于更新全局调度器的相关表项。如果本地事务冲突预测器的结果是有冲突,就类似普通请求在缓存缺失,需要把请求发送给下一级缓存,等待下一级缓存响应的结果。在这里需要向下一级缓存发送获取开始事务权限的请求,如果接收到下一级缓存的响应是同意授权,则设置缓存为事务模式后,按照原有的逻辑给cpu响应,至此完成了事务开始的请求的处理全过程;如果接收到下一级缓存的响应是拒绝授权,不修改缓存状态,即还是处于非事务状态,给cpu回一个表示事务开始的请求被拒绝的响应。cpu接收到事务开始请求被拒绝的响应,进入休眠状态等待唤醒。

6、本专利技术提出的驻留在共享缓存的全局调度模块,其主要包括:全局事务冲突预测器模块和扩展的共享缓存控制器逻辑;其中:

7、所述全局事务冲突预测器模块,根据当前各个核上运行的事务之间的冲突置信度,核心的事务状态以及配置的冲突置信度阈值,预测当前核心上事务的运行是否会跟正在运行的事务产生冲突。全局事务冲突预测器模块的输入为核心id,输出为0,表示接受事务开始,输出为1,表示拒绝事务开始。全局事务冲突预测器需要维护一个拥有(n*(n-1))/2个表项的冲突置信度表,其中n表示系统中的核心数。每个表项需要32比特,存储的是<i,j>核心对上的事务冲突置信度。此外还需要维护两个拥有n个表项的表,分别为核心事务状态表和核心等待状态表,前者每个表项只需要一个比特,存储的是当前核心是否正在运行事务(1表示正在执行事务);后者每个表项也只需要一个比特,存储当前核心是否被拒绝执行事务,处于等待的状态(1表示处于等待状态)。还有一个可配置的参数表,一共有五个表项,分别是冲突置信度阈值,历史占比系数,冲突制造者系数,冲突见证者系数和提交见证者系数。具体的逻辑为,假设输入的核心id为x,而系统中剩余的核心id为1,2,3,4。首先从冲突置信度表中选出<x,1本文档来自技高网...

【技术保护点】

1.一种硬件事务内存中对事务进行动态调度的方法,其特征在于,通过驻留在缓存中的硬件调度器来实现对软件透明的事务动态调度;具体地,主要对原有的内存子系统进行增强,在私有缓存中引入本地调度模块,并在共享缓存中引入全局调度模块,两者组成本专利技术的分层的动态调度系统;所述本地调度模块主要负责部分事务的调度,以便让一部分冲突友好的事务能够迅速启动,具体包括本地事务冲突预测器模块和扩展的私有缓存控制器逻辑;所述全局调度模块主要负责剩余事务的调度,在综合全局冲突信息的基础上,仅允许概率较小与正在运行事务发生冲突的事务启动,具体包括全局事务冲突预测器模块和扩展的共享缓存控制器逻辑;其中:

2.根据权利要求1所述的硬件事务内存中对事务进行动态调度的方法,其特征在于,所述全局事务冲突预测器中,表项更新流程如下:

3.根据权利要求1所述的硬件事务内存中对事务进行动态调度的方法,其特征在于,所述扩展的共享缓存控制器逻辑中,所述机制对事务动态调度的流程如下:

【技术特征摘要】

1.一种硬件事务内存中对事务进行动态调度的方法,其特征在于,通过驻留在缓存中的硬件调度器来实现对软件透明的事务动态调度;具体地,主要对原有的内存子系统进行增强,在私有缓存中引入本地调度模块,并在共享缓存中引入全局调度模块,两者组成本发明的分层的动态调度系统;所述本地调度模块主要负责部分事务的调度,以便让一部分冲突友好的事务能够迅速启动,具体包括本地事务冲突预测器模块和扩展的私有缓存控制器逻辑;所述全局调度模块主要负责剩余事务的调度...

【专利技术属性】
技术研发人员:韩军万力
申请(专利权)人:复旦大学
类型:发明
国别省市:

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

1