一种基于众核处理器和分区结构的事务存储方法技术

技术编号:6717181 阅读:279 留言:0更新日期:2012-04-11 18:40
本发明专利技术公开了一种基于众核处理器和分区结构的事务存储方法,该方法中众核处理器采用瓦片化结构,每个节点为瓦片Tile{TL1,TL2,TL3}中的一种,所有瓦片通过片上网络互连到一起,每种瓦片的数量可根据应用需要调整。线程执行事务时不再使用L2cache,片上路由将处理器事务读写请求路由至事务缓冲区存储,由分区策略为该事务线程划分一部分可用区域,对事务的读写操作记录在事务缓冲区中,并根据事务读写集合的增长动态扩充分区大小。本发明专利技术的事务存储方法解决了硬件型事务存储系统中资源浪费、缓冲区利用率低的问题,解决了事务缓冲区不支持线程切换和迁移的问题,一定程度上缓解了事务缓冲区溢出问题。

【技术实现步骤摘要】

本专利技术涉及一种属于计算机系统结构中的多线程并行编程模型,特别涉及一种基 于众核处理器和分区结构的硬件型事务存储方法。
技术介绍
随着处理器的迅速发展,多核处理器成为当今处理器发展的主流,即便是对性能 要求较低的桌面型应用也已经进入了多核时代。业界已经推出了几款众核处理器,计算核 的数目进一步增加。在处理器已经提供了充裕的硬件并行能力的情况下硬件系统对上层软 件提出了更高的要求,即软件能够有效利用处理器所提供的并行处理能力。目前,多线程编 程中关键的共享资源同步技术仍然在锁机制的基础上实现,如信号量、互斥量等。然而基于 锁的同步机制存在着死锁、优先权倒置、编程困难的缺点,这使得面向众核的并行程序的编 写难度和调试复杂性相对于串行程序都要高很多。事务存储(Transactional Memory, TM)模型借鉴了数据库中“事务”的 概念,提供了 一种在 CMP(Chip multiprocessors,片上多处理)/SMP(Symmetrical Multi-Processing,对称多处理)结构上程序并行执行和同步的方法,将程序中的有限机 器指令序列作为一个事务,在系统结构层面保证事务执行的原子性,并提供相应的操作原 语,如提交、放弃,以及配套的回滚操作。它能够解决锁机制带来的种种问题,极大地提高了 多线程编程的正确性和效率,使得程序员可以集中精力于多核程序的设计。由于采用硬件 机制能够带来速度和效率的优势,目前已有大量的研究工作致力于多核环境的硬件型事务 存储模型(Hardware Transactional Memory, HTM)的研究。现有的硬件事务存储结构是基于多核处理器结构,在处理器核内增加支持事务执 行的硬件部件,处理器核的其他部分与传统处理器保持一致。然而这种结构扩展到众核结 构时将面临资源浪费、缓冲区利用率低的问题和缓冲区溢出的问题,因此,针对众核处理器 环境,设计一种有效的事务存储结构是有十分重要的。
技术实现思路
本专利技术的目的是提供,该方法将 事务缓冲区同二级共享高速缓存一样组织成一定数量的单元,由处理器芯片上所有处理核 共享使用,为每个执行事务的线程在事务缓冲区中划分一部分连续可用空间,并可以根据 事务读写集合的大小在一定范围内动态调整空间大小,解决了硬件型事务存储系统中资源 浪费、缓冲区利用率低的问题,解决了事务缓冲区不支持线程切换和迁移的问题,一定程度 上缓解了事务缓冲区溢出问题。本专利技术的,该方法是通过构建系 统结构、定制分区机制和事务执行模式三部分实现,具体有下列步骤步骤一构建系统结构建模步骤1-1,众核处理器采用瓦片化结构,每个节点为瓦片TileITL1, TL2, TL3I中的一种,所有瓦片通过片上网络互连到一起,每种瓦片的数量可根据应用需要调整;其中 L2cache瓦片TL2与事务缓冲区瓦片TL3供所有处理器核共享使用,处理器核内还存在支持 事务执行的其他硬件如事务状态寄存器、检查点寄存器等;建模步骤1-2,新增事务缓冲区,其结构与L2CaChe类似,数据的存储以行为单位, 但同时保持事务数据的新旧版本,读写集合由新增的R/W位表示,事务缓冲区采用数据表 项进行事务缓存;建模步骤1-3,执行事务的处理器节点不使用L2CaChe,而由事务缓冲区代替 L2cache缓存事务数据;建模步骤1-4,Llcache通过Write-through方法,修改的事务数据直接更新到事 务缓冲区中;步骤二 定制分区机制分区步骤2-1,对事务缓冲区的分配以分区单元(partition unit,PU)为单位,PU 在事务缓冲区中对应连续的多行,其大小为事务缓冲区容量/处理器核数,一个分区可以 包含一个或多个连续的PU,初始分配时每个分区含一个PU ;分区步骤2-2,每个事务线程分配一个分区,分区的大小根据事务读写集合的增长 动态调整,事务线程首次执行事务时创建分区,事务线程终止时回收分区;分区步骤2-3,对分区的管理需要硬件记录分区与事务线程的关联关系,如每个事 务线程的分区在事务缓冲区中的起始位置和空间大小,以便于事务提交或回滚时的访问操 作;分区步骤2-4,当事务读写集合过大导致分区不够使用时,如果从该分区末尾起存 在连续的PU大小的空间,那么可分配给该事务线程,否则,事务采取基于事务提交锁的部 分提交进行处理;步骤三事务执行模式执行步骤3-1,处理器执行事务前访问的数据可能会在事务代码中再次访问到,因 此事务开始前先将各级高速缓存中的数据依次写回下一级存储器中,即Llcache中数据写 回L2CaChe,L2cache中数据写回主存,然后置Llcache中各行无效,此后,处理器的访存开 始使用事务缓冲区;执行步骤3-2,事务在执行过程中,由Llcache和事务缓冲区缓存事务预测执行的 数据,读缺失或写缺失的内存块依次加载到事务缓冲区和Llcache中,事务缓冲区中的数 据保存为old版本,对Llcache更改过的行直接更新到事务缓冲区中,对事务数据的所有读 写操作,在事务缓冲区中记录相应的R/W位,事务修改的数据还要在事务缓冲区new版本中 写入新值;执行步骤3-3,事务提交时将事务缓冲区中本分区内的新值写入主存;执行步骤3-4,事务因冲突而需要回滚时,清除事务缓冲区中的R/W标志位,同时 将各行数据从old拷到new中,置Llcache中各行无效;执行步骤3-5,采用事务冲突检测策略来检测事务执行过程中与其他节点是否存 在的冲突;所述的事务冲突检测策略(a)第一处理器P为空闲状态时,目录Directory为空闲状态Idle ; (b)当处理器P写缺失时,向目录Directory发出请求写GETX,则目录Directory响应其请求,并将数据DATA发给处理器P ;处理器P收到数据DATA后发送确认消息ACK给 目录Directory,同时将事务缓冲区中W位置位;(c)当第二处理器Q请求读GETS—个被处理器P修改的数据块时,目录Directory 转发请求Fwd_GETS至处理器P,由于存在读写冲突因此拒绝处理器Q的请求,处理器Q向目 录Directory发送失败消息NACK ; (d)当处理器P读缺失时,向目录Directory发出请求读GETS,则目录Directory 响应其请求,并将数据DATA发给处理器P ;处理器P收到数据DATA后发送确认消息ACK给 目录Directory,同时将事务缓冲区中R位置位;(e)当第二处理器Q请求读GETS—个被处理器P修改的数据块时,目录Directory 转发请求Fwd_GETS至处理器P,由于不存在读写冲突则发送消息ACK给目录Directory ;目 录Directory向第二处理器Q发送数据DATA,处理器Q收到数据后向目录Directory发送 消息ACK进行确认。本专利技术基于众核处理器和分区结构的事务存储方法的优点在于①本专利技术基于片上网络的众核处理器结构,并利用事务缓冲区同二级共享高速缓 存一样组织成单元阵列形式由所有核共享,改变了现有的每个处理器核拥有一个事务缓冲 区的结构。本专利技术一方面解决了资源浪费、缓冲区利用率低的问题,另一方面分区结构便于 事务线程切换和迁移。②本专利技术分区机制能够为每个执行事务的线程在缓冲本文档来自技高网
...

【技术保护点】
1.一种基于众核处理器和分区结构的事务存储方法,其特征在于该方法是通过构建系统结构、定制分区机制和事务执行模式三部分实现,具体有下列步骤:步骤一:构建系统结构建模步骤1-1,众核处理器采用瓦片化结构,每个节点为瓦片Tile{TL1,TL2,TL3}中的一种,所有瓦片通过片上网络互连到一起,每种瓦片的数量可根据应用需要调整;其中L2cache瓦片TL2与事务缓冲区瓦片TL3供所有处理器核共享使用,处理器核内还存在支持事务执行的其他硬件如事务状态寄存器、检查点寄存器等;建模步骤1-2,新增事务缓冲区,其结构与L2cache类似,数据的存储以行为单位,但同时保持事务数据的新旧版本,读写集合由新增的R/W位表示,事务缓冲区采用数据表项进行事务缓存;建模步骤1-3,执行事务的处理器节点不使用L2cache,而由事务缓冲区代替L2cache缓存事务数据;建模步骤1-4,L1cache通过Write-through方法,修改的事务数据直接更新到事务缓冲区中;步骤二:定制分区机制分区步骤2-1,对事务缓冲区的分配以分区单元(partition unit,PU)为单位,PU在事务缓冲区中对应连续的多行,其大小为事务缓冲区容量/处理器核数,一个分区可以包含一个或多个连续的PU,初始分配时每个分区含一个PU;分区步骤2-2,每个事务线程分配一个分区,分区的大小根据事务读写集合的增长动态调整,事务线程首次执行事务时创建分区,事务线程终止时回收分区;分区步骤2-3,对分区的管理需要硬件记录分区与事务线程的关联关系,如每个事务线程的分区在事务缓冲区中的起始位置和空间大小,以便于事务提交或回滚时的访问操作;分区步骤2-4,当事务读写集合过大导致分区不够使用时,如果从该分区末尾起存在连续的PU大小的空间,那么可分配给该事务线程,否则,事务采取基于事务提交锁的部分提交进行处理;步骤三:事务执行模式执行步骤3-1,处理器执行事务前访问的数据可能会在事务代码中再次访问到,因此事务开始前先将各级高速缓存中的数据依次写回下一级存储器中,即L1cache中数据写回L2cache,L2cache中数据写回主存,然后置L1cache中各行无效,此后,处理器的访存开始使用事务缓冲区;执行步骤3-2,事务在执行过程中,由L1cache和事务缓冲区缓存事务预测执行的数据,读缺失或写缺失的内存块依次加载到事务缓冲区和L1cache中,事务缓冲区中的数据保存为old版本,对L1cache更改过的行直接更新到事务缓冲区中,对事务数据的所有读写操作,在事务缓冲区中记录相应的R/W位,事务修改的数据还要在事务缓冲区new版本中写入新值;执行步骤3-3,事务提交时将事务缓冲区中本分区内的新值写入主存;执行步骤3-4,事务因冲突而需要回滚时,清除事务缓冲区中的R/W标志位,同时将各行数据从old拷到new中,置L1cache中各行无效;执行步骤3-5,采用事务冲突检测策略来检测事务执行过程中与其他节点是否存在的冲突;所述的事务冲突检测策略:(a)第一处理器P为空闲状态时,目录Directory为空闲状态Idle;(b)当处理器P写缺失时,向目录Directory发出请求写GETX,则目录Directory响应其请求,并将数据DATA发给处理器P;处理器P收到数据DATA后发送确认消息ACK给目录Directory,同时将事务缓冲区中W位置位;(c)当第二处理器Q请求读GETS一个被处理器P修改的数据块时,目录Directory转发请求Fwd_GETS至处理器P,由于存在读写冲突因此拒绝处理器Q的请求,处理器Q向目录Directory发送失败消息NACK;(d)当处理器P读缺失时,向目录Directory发出请求读GETS,则目录Directory响应其请求,并将数据DATA发给处理器P;处理器P收到数据DATA后发送确认消息ACK给目录Directory,同时将事务缓冲区中R位置位;(e)当第二处理器Q请求读GETS一个被处理器P修改的数据块时,目录Directory转发请求Fwd_GETS至处理器P,由于不存在读写冲突则发送消息ACK给目录Directory;目录Directory向第二处理器Q发送数据DATA,处理器Q收到数据后向目录Directory发送消息ACK进行确认。...

【技术特征摘要】

【专利技术属性】
技术研发人员:刘轶王永会王琳钱德沛
申请(专利权)人:北京航空航天大学
类型:发明
国别省市:11

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

1