发明名称 一种基于众核处理器和分区结构的事务存储方法
摘要 本发明公开了一种基于众核处理器和分区结构的事务存储方法,该方法中众核处理器采用瓦片化结构,每个节点为瓦片Tile{TL1,TL2,TL3}中的一种,所有瓦片通过片上网络互连到一起,每种瓦片的数量可根据应用需要调整。线程执行事务时不再使用L2cache,片上路由将处理器事务读写请求路由至事务缓冲区存储,由分区策略为该事务线程划分一部分可用区域,对事务的读写操作记录在事务缓冲区中,并根据事务读写集合的增长动态扩充分区大小。本发明的事务存储方法解决了硬件型事务存储系统中资源浪费、缓冲区利用率低的问题,解决了事务缓冲区不支持线程切换和迁移的问题,一定程度上缓解了事务缓冲区溢出问题。
申请公布号 CN102110019A 申请公布日期 2011.06.29
申请号 CN201010617535.5 申请日期 2010.12.31
申请人 北京航空航天大学 发明人 刘轶;王永会;王琳;钱德沛
分类号 G06F9/46(2006.01)I;G06F9/38(2006.01)I 主分类号 G06F9/46(2006.01)I
代理机构 北京永创新实专利事务所 11121 代理人 赵文利
主权项 一种基于众核处理器和分区结构的事务存储方法,其特征在于该方法是通过构建系统结构、定制分区机制和事务执行模式三部分实现,具体有下列步骤:步骤一:构建系统结构建模步骤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进行确认。
地址 100191 北京市海淀区学院路37号