[发明专利]基于Atomic指令的共享变量处理系统有效
申请号: | 202211171488.5 | 申请日: | 2022-09-26 |
公开(公告)号: | CN115269015B | 公开(公告)日: | 2022-12-02 |
发明(设计)人: | 王爽;其他发明人请求不公开姓名 | 申请(专利权)人: | 沐曦集成电路(南京)有限公司 |
主分类号: | G06F9/38 | 分类号: | G06F9/38;G06F9/32;G06F5/06 |
代理公司: | 北京锺维联合知识产权代理有限公司 11579 | 代理人: | 丁慧玲 |
地址: | 211806 江苏省南京市*** | 国省代码: | 江苏;32 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 基于 atomic 指令 共享 变量 处理 系统 | ||
本发明涉及一种基于Atomic指令的共享变量处理系统,包括K个指令读写模块{A1,A2,…AK},K个Atomic状态控制模块{B1,B2,…BK}和存储模块,每组Ai和Bi独立运行,多组Ai和Bi并行运行。Ai获取第i用户发出的Atomic指令;Bi解析获取共享变量预期值、读地址、写地址和更新信息,基于读地址向存储模块发起读操作,基于更新信息生成共享变量更新值;存储模块基于读操作向Bi返回共享变量当前值;Bi比较共享变量当前值与共享变量预期值,若相同,则基于写地址向存储模块发起写操作,存储模块将共享变量更新值写入对应的写地址。本发明降低了共享变量处理的复杂度,提高了共享变量的处理效率。
技术领域
本发明涉及计算机技术领域,尤其涉及一种基于Atomic指令的共享变量处理系统。
背景技术
现有技术中,多用户在处理同一变量(即共享变量)时,通常采用线程加锁方式实现。即当某个线程处理此变量时,会先锁住此变量。其他线程的请求会被阻塞,需要不断查询此变量的状态,等待锁定解除。待该线程处理完后,会解锁此变量。其他线程会发起操作请求,当其中一个线程获取到处理权后,会再次锁住此变量。其他线程的请求就会继续被阻塞,依次类推。加锁方式实现多线程共享变量处理使得每个时刻只会有一个线程处理共享变量,确保此变量更新正确,但至少存在以下缺点:(1)处理效率比较低:当某一个线程在执行操作时,必然会阻塞住其他线程,让其他线程处于等待状态。线程之间的切换,以及线程内的每一步操作都会有延时,会导致指令执行时间长,效率低。(2)每个线程需要做的操作复杂:因为采用加锁方式,每次操作都需要先查询状态,然后锁定变量,直到操作完成,最后还需要解锁。因此,加锁方式会要求线程复杂的操作流程。由此可知,现有的共享变量处理方式复杂度高,效率低。
发明内容
本发明目的在于,提供一种基于Atomic指令的共享变量处理系统,降低了共享变量处理的复杂度,提高了共享变量的处理效率。
本发明提供了一种基于Atomic指令的共享变量处理系统,包括K个指令读写模块{A1,A2,…AK} ,K个Atomic状态控制模块{B1,B2,…BK}和存储模块,其中,Ai为第i个指令读写模块,Bi为第i个Atomic状态控制模块,Ai与Bi相连接,Bi与所述存储模块相连接,i的取值范围为1到K,每组Ai和Bi独立运行,多组Ai和Bi并行运行。
Ai用于获取第i用户发出的Atomic指令进行缓存,并将缓存的Atomic指令读取发送给Bi,所述Atomic指令按照预设的数据结构生成,所述预设的数据结构包括共享变量预期值数据段、读地址数据段、写地址数据段和更新信息数据段。
Bi用于解析接收到的Atomic指令,获取共享变量预期值、读地址、写地址和更新信息,基于读地址向所述存储模块发起读操作,基于所述更新信息生成共享变量更新值。
所述存储模块用于基于所述读操作向Bi返回共享变量当前值。
Bi还用于比较共享变量当前值与共享变量预期值,若相同,则基于所述写地址向所述存储模块发起写操作,并向第i用户返回正常完成标志;若不相同,则Bi向第i用户返回异常完成标志。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于沐曦集成电路(南京)有限公司,未经沐曦集成电路(南京)有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202211171488.5/2.html,转载请声明来源钻瓜专利网。