一种多核处理器、数据同步的方法及装置的制造方法

文档序号:9375381阅读:723来源:国知局
一种多核处理器、数据同步的方法及装置的制造方法
【技术领域】
[0001] 本发明涉及处理器技术领域,具体涉及一种多核处理器、数据同步的方法及装置。
【背景技术】
[0002] 处理器的发展趋势是在片上集成越来越多的核,多核共享存储的多线程并行模式 为大规模细粒度并行提供了机会,大规模细粒度并行就是不同线程可以并行访问不同的数 据对象。
[0003] 细粒度并行的关键技术是细粒度数据的同步机制。在共享存储多线程模式下,多 个线程可能对同一数据对象进行操作,导致线程间对该数据对象的访问存在冲突,因而需 要协调多个线程对该数据对象的访问,也就是需要对该数据对象的访问次序进行同步。通 常的细粒度数据同步技术是为每个存在访问竞争的数据对象分配一把物理锁,线程对该数 据对象操作之前必须先获取该物理锁,操作完成后再释放该物理锁。
[0004] 现有技术中这种避免数据同步冲突的方法,需要为每个存在访问竞争的数据对象 分配物理锁和对应的内存空间。由于每个数据对象都可能存在访问竞争,为每个数据对象 都设置一把物理锁,就会导致很大的内存开销。

【发明内容】

[0005] 为了解决现有技术中数据同步时为每个存在访问竞争的数据对象显式分配物理 锁而引起很大的内存开销的技术问题,本发明实施例提供一种多核处理器、数据同步的方 法及装置。可以一定程度上解决线程间的对数据对象的访问冲突问题,又减少了物理锁的 内存开销。
[0006] 本发明第一方面提供一种多核处理器,包括:物理锁装置和集成在每个处理器核 上的虚拟锁指令执行装置,所述物理锁装置分别与每个所述虚拟锁指令执行装置连接,所 述物理锁装置包括多个物理锁,用于存储数据对象的内存空间包括多个虚拟锁的标识,所 述虚拟锁的标识为所述数据对象的一个存储地址,且所述虚拟锁的标识的数量大于所述物 理锁的标识的数量;
[0007] 所述虚拟锁指令执行装置用于:
[0008] 接收虚拟锁指令,所述虚拟锁指令用于指示执行从虚拟锁的标识到物理锁的标识 的映射操作,所述虚拟锁指令包括锁操作类型标识和目的虚拟锁的标识;
[0009] 根据所述目的虚拟锁的标识映射出目的物理锁的标识,并向所述物理锁装置发送 锁操作请求,所述锁操作请求包括所述锁操作类型标识和所述目的物理锁的标识;
[0010] 所述物理锁装置用于:
[0011] 根据所述目的物理锁的标识,从所述多个物理锁中确定所述目的物理锁;
[0012] 对所述目的物理锁执行所述锁操作类型标识对应的锁操作,得到针对所述目标物 理锁的锁操作结果。
[0013] 结合第一方面,在第一种可能的实现方式中,所述锁操作请求还包括所述虚拟锁 指令执行装置所属的处理器核的标识;
[0014] 所述物理锁装置,还用于根据所述处理器核的标识向所述虚拟锁指令执行装置返 回所述锁操作结果。
[0015] 结合第一方面第一种可能的实现方式,在第二种可能的实现方式中,所述虚拟锁 指令执行装置包括虚拟锁的标识寄存器和映射处理模块,所述物理锁装置包括缓冲队列存 储模块和物理锁操作模块;其中,
[0016] 所述虚拟锁的标识寄存器,用于存储所述目的虚拟锁的标识,所述目的虚拟锁的 标识包括所述目的虚拟锁的标识对应的数据对象的一个地址;
[0017] 所述映射处理模块,用于根据所述虚拟锁的标识寄存器中存储的所述虚拟锁的标 识,以及虚拟锁的标识与物理锁的标识的映射关系,映射出与所述虚拟锁的标识对应的目 的物理锁的标识,并向所述物理锁装置发送锁操作请求,所述锁操作请求包括锁操作类型 标识、所述目的物理锁的标识和所述虚拟锁指令执行装置所属的处理器核的标识;
[0018] 所述缓冲队列存储模块,用于缓存所述锁操作请求;
[0019] 所述物理锁操作模块用于:
[0020] 从所述缓冲队列存储模块中读取排在所述缓冲队列最前面的锁操作请求;
[0021 ] 根据所述锁操作请求中的目的物理锁的标识确定所述目的物理锁,对所述目的物 理锁执行所述锁操作类型标识对应的锁操作,得到针对所述目的物理锁的锁操作结果;
[0022] 根据所述处理器核的标识向所述虚拟锁指令执行装置返回所述锁操作结果。
[0023] 结合第一方面第一种或第二种可能的实现方式,在第三种可能的实现方式中,所 述虚拟锁指令执行装置还包括:虚拟锁返回结果寄存器;
[0024] 所述物理锁操作模块,具体用于返回所述锁操作结果给所述虚拟锁指令执行装置 中的虚拟锁返回结果寄存器;
[0025] 所述虚拟锁返回结果寄存器,用于存储接收到的所述锁操作结果。
[0026] 结合第一方面第一种、第二种或第三种可能的实现方式,在第四种可能的实现方 式中,
[0027] 所述物理锁操作模块具体用于:
[0028] 当所述锁操作类型标识为加锁的标识vltrylock时,确定所述目的物理锁的状 态;
[0029] 当所述目的物理锁处于空闲状态时,获取所述目的物理锁,将所述目的物理锁的 状态修改到被占用状态,并向所述虚拟锁指令执行装置返回表示获取锁成功的锁操作结 果;
[0030] 当所述目的物理锁处于被占用状态时,向所述虚拟锁指令执行装置返回表示获取 锁失败的锁操作结果。
[0031] 结合第一方面第一种、第二种或第三种可能的实现方式,在第五种可能的实现方 式中,
[0032] 所述物理锁操作模块具体用于:
[0033] 当所述锁操作类型标识为解锁的标识vlunlock时,对所述目的物理锁进行解锁 操作,并将所述目的物理锁的状态修改到空闲状态,得到表示解锁成功的锁操作结果;
[0034] 当所述锁操作类型标识为重置目的虚拟锁的标识vlreset时,对所述目的物理锁 进行重置操作,将所述目的物理锁的状态修改到空闲状态,得到表示重置目的物理锁成功 或失败的锁操作结果。
[0035] 本发明第二方面提供一种数据同步的方法,所述方法应用于多核处理器,所述多 核处理器包括物理锁装置和多个处理器核,每个所述处理器核均包括一虚拟锁指令执行装 置,所述物理锁装置分别与所述虚拟锁指令执行装置连接,所述物理锁装置包括多个物理 锁,用于存储数据对象的内存空间包括多个虚拟锁的标识,所述虚拟锁的标识为所述数据 对象的一个存储地址,且所述虚拟锁的标识的数量大于所述物理锁的标识的数量,所述方 法包括:
[0036] 所述虚拟锁指令执行装置接收虚拟锁指令,所述虚拟锁指令包括锁操作类型标识 和目的虚拟锁的标识,所述目的虚拟锁的标识为待同步数据对象的一个地址;
[0037] 所述虚拟锁指令执行装置根据所述目的虚拟锁的标识映射出目的物理锁的标识, 向所述物理锁装置发送锁操作请求,所述锁操作请求包括所述锁操作类型标识和所述目的 物理锁的标识;
[0038] 所述物理锁装置根据所述目的物理锁的标识,从所述多个物理锁中确定所述目的 物理锁;
[0039] 所述物理锁装置对所述目的物理锁执行所述锁操作类型标识对应的锁操作,得到 针对所述目的物理锁的锁操作结果,所述锁操作的结果用于所述待同步数据对象的同步操 作。
[0040] 结合第二方面,在第一种可能的实现方式中,所述锁操作请求还包括所述虚拟锁 指令执行装置所属的处理器核的标识,所述方法还包括:
[0041] 所述物理锁装置根据所述处理器核的标识向所述虚拟锁指令执行装置返回所述 锁操作结果;
[0042] 所述虚拟锁指令执行装置接收所述物理锁装置返回的所述锁操作结果,并存储所 述锁操作结果。
[0043] 结合第二方面第一种可能的实现方式,在第二种可能的实现方式中,所述虚拟锁 指令执行装置接收虚拟锁指令之后,所述方法还包括:
[0044] 所述虚拟锁指令执行装置存储所述目的虚拟锁的标识,所述目的虚拟锁的标识包 括所述目的虚拟锁的标识对应的数据对象的一个地址;
[0045] 所述虚拟锁指令执行装置根据所述目的虚拟锁的标识映射出目的物理锁的标识, 向所述物理锁装置发送锁操作请求,所述锁操作请求包括所述锁操作类型标识和所述目的 物理锁的标识,包括:
[0046] 所述虚拟锁指令执行装置根据存储的所述虚拟锁的标识,以及虚拟锁的标识与物 理锁的标识的映射关系,映射出与所述虚拟锁的标识对应的目的物理锁的标识,并向所述 物理锁装置发送锁操作请求,所述锁操作请求包括锁操作类型标识、所述目的物理锁的标 识和所述虚拟锁指令执行装置所属的处理器核的标识。
[0047] 结合第二方面、第二方面第一种或第二种可能的实现方式,在第三种可能的实现 方式中,所述物理锁装置根据所述目的物理锁的标识,从所述多个物理锁中确定所述目的 物理锁之前,所述方法还包括:
[0048] 所述物理锁装置按照缓冲队列的方式缓存接收的所述锁操作请求;
[0049] 从缓存的所述锁操作请求中读取排在所述缓冲队列最前面的锁操作请求。
[0050] 结合第二方面、第二方面第一种、第二种或第三种可能的实现方式,在第四种可能 的实现方式中,所述对所述目的物理锁执行所述锁操作类型标识对应的锁操作,得到针对 所述目的物理锁的锁操作结果,包括:
[0051] 当所述锁操作类型标识为加锁的标识vltrylock时,确定所述目的物理锁的状 态;
[0052] 当所述目的物理锁处于空闲状态时,获取所述目的物理锁,将所述目的物理锁的 状态修改到被占用状态,得到表示获取锁成功的锁操作结果;
[0053] 当所述目的物理锁处于被占用状态时,得到表示获取锁失败的锁操作结果。
[0054] 结合第二方面、第二方面第一种、第二种或第三种可能的实现方式,在第五种可能 的实现方式中,所述对所述目的物理锁执行所述锁操作类型标识对应的锁操作,得到针对 所述目的物理锁的锁操作结果,包括:
[0055] 当所述锁操作类型标识为解锁的标识vlunlock时,对所述目的物理锁进行解锁 操作,并将所述目的物理锁的状态修改到空闲状态,得到表示解锁成功的锁操作结果;
[0056] 当所述锁操作类型标识为重置目的虚拟锁的标识vlreset时,对所述目的物理锁 进行重置操作,将所述目的物理锁的状态修改到空闲状态,得到表示重置目的物
当前第1页1 2 3 4 5 6 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1