发明名称 一种支持有条件部分回滚的硬件事务嵌套处理方法
摘要 本发明公开了一种支持有条件部分回滚的硬件事务嵌套处理方法,该方法以各层嵌套事务维护一个全局数据集合,在该集合中记录各层事务对数据的访问情况。在本发明中,如果冲突层事务访问的数据集与这个冲突层事务之前的其它事务的数据集没有重叠,则可以只回滚到该冲突层事务的开始位置;如果冲突层事务与其之前的事务的数据集有相同的冲突变量,则回滚到有相同冲突变量第一次出现的事务的开始位置。本发明的方法缩小了闭合嵌套方式中事务回滚至最外层所需付出的巨大代价,在不大幅增加硬件复杂度的前提下有效提升了事务嵌套处理的性能。
申请公布号 CN101739291A 申请公布日期 2010.06.16
申请号 CN200910238646.2 申请日期 2009.12.02
申请人 北京航空航天大学 发明人 刘轶;吴名瑜;张;钱德沛
分类号 G06F9/46(2006.01)I 主分类号 G06F9/46(2006.01)I
代理机构 北京永创新实专利事务所 11121 代理人 赵文利
主权项 1.一种支持有条件部分回滚的硬件事务嵌套处理方法,其特征在于该方法包括有下列处理步骤:第一步:仲裁判定回滚当处理器处理嵌套事务T={T<sub>1</sub>,T<sub>2</sub>,T<sub>3</sub>,…,T<sub>n</sub>}时,一方面在事务嵌套寄存器中记录下当前所执行的事务的层数j;另一方面在事务缓冲区的读/写标志位中记录下当前所执行的事务的数据。若处理器中存在有两个事务产生写读冲突、读写冲突或写写冲突时,依据冲突仲裁机制处理来决定其中一个事务进行回滚;冲突仲裁机制是:如果冲突发生在事务和非事务代码之间,则事务放弃并回滚;如果冲突发生在两个事务之间,则当前请求数据的事务继续,其他冲突事务放弃并回滚;第二步:收到回滚通知的事务进行检测当前事务所访问的数据当事务发生冲突时需要回滚,根据事务嵌套寄存器中的层数和事务缓冲区中的写标志位能够得到当前事务所访问过的数据块,进而依据回滚条件关系RC判断需要回滚到的事务层数;回滚条件关系<img file="F2009102386462C0000011.GIF" wi="800" he="54" />且i=1,2,……,c,j=1,2,……,i-1;i表示每一个小于冲突层事务T<sub>c</sub>的层数;c表示冲突层事务T<sub>c</sub>的所在层数;j表示每一个小于i的层数;D<sub>C</sub>表示冲突层事务T<sub>c</sub>的写数据集合,表达形式为<img file="F2009102386462C0000012.GIF" wi="527" he="78" /><img file="F2009102386462C0000013.GIF" wi="67" he="59" />表示冲突层事务T<sub>c</sub>中的第一个写数据,<img file="F2009102386462C0000014.GIF" wi="71" he="59" />表示冲突层事务T<sub>c</sub>中的第二个写数据,<img file="F2009102386462C0000015.GIF" wi="76" he="58" />表示冲突层事务T<sub>c</sub>中的第O个写数据;D<sub>i</sub>表示事务层T<sub>i</sub>的写数据集合,表达形式为<img file="F2009102386462C0000016.GIF" wi="497" he="78" /><img file="F2009102386462C0000017.GIF" wi="63" he="59" />表示事务层T<sub>i</sub>中的第一个写数据,<img file="F2009102386462C0000018.GIF" wi="66" he="58" />表示事务层T<sub>i</sub>中的第二个写数据,<img file="F2009102386462C0000019.GIF" wi="71" he="58" />表示事务层T<sub>i</sub>中的第P个写数据;Φ表示空集;D<sub>j</sub>表示事务层T<sub>j</sub>的写数据集合,表达形式为<img file="F2009102386462C00000110.GIF" wi="505" he="87" /><img file="F2009102386462C00000111.GIF" wi="63" he="59" />表示事务层T<sub>j</sub>中的第一个写数据,<img file="F2009102386462C00000112.GIF" wi="67" he="58" />表示事务层T<sub>j</sub>中的第二个写数据,<img file="F2009102386462C00000113.GIF" wi="82" he="71" />表示事务层T<sub>j</sub>中的第Q个写数据;第三步:回滚结束后,清除事务缓存区中回滚到的层数与当前层之间所访问的全部数据。
地址 100083 北京市海淀区学院路37号