步长自适应的Cache预取方法及其系统的制作方法

文档序号:6429605阅读:103来源:国知局
专利名称:步长自适应的Cache预取方法及其系统的制作方法
技术领域
本发明涉及微处理器领域,尤其涉及一种Cache预取方法及系统。
背景技术
Cache(高速缓冲存储器)技术的广泛应用,很好的解决了存储墙问题对微处理器性能提升的限制,而超大规模集成电路技术的发展,也使得片上集成大容量Cache成为可能,这在很大程度上降低了 Cache的失效率。但是,在发生Cache失效时,大容量Cache意味着要从外存读取更多的数据,这样就增加了 Cache的失效开销。预取Cache能够预测下次发生Cache失效的数据地址,在访存空闲期间提前将数据读取到Cache,当下次真正需要这个数据时便能够命中Cache,达到隐藏失效开销的目的。现有的Cache预取机制大多采用类似于图1所示的预取表结构,其中hs addr表示访存指令地址,Prefetch addr表示预取地址,stride表示预取步长,valid表示当前表项是否有效。这种预取表结构存在以下缺点一、仅对某一种访存地址序列类型进行预取, 缺乏预取的灵活性,不能灵活的根据失效地址序列类型调整预测地址计算方法,功能单一; 二、使用指令地址作为查询预取表的索引,需要特别增加CPU到Cache的指令地址数据通路,设计实现复杂。

发明内容
本发明所要解决的技术问题是针对现有技术存在的问题,本发明提供一种使用 Cache失效地址计算查询预取表的索引,并能灵活的动态调整预测地址计算方法,可移植性强、预取正确率高的步长自适应的Cache预取方法及其系统。为解决上述技术问题,本发明采用以下技术方案一种步长自适应的Cache预取方法,包括以下步骤(1)设置预取表设置一预取表,在所述预取表中存储有失效地址,记录在PA域中;(2)查询预取表当发生Cache失效时首先查询预取表,首先用失效地址的高位作为索引值;根据预取表中存储的条目的内容通过加法计算得到两个预测地址,将所述两个预测地址分别与索引值进行比较,若任一个预测地址与索引值相同,则判断命中预取表,转步骤;否则判断未命中预取表,转步骤(3);(3)分配新表项若未命中预取表时,则在预取表中为该失效地址分配一个新表项;转步骤(5);(4)返回数据若命中预取表且预取表中已预取数据时,返回已预取的数据给 Cache ;否则不返回数据;若没有预取数据需要返回,则继续进行访存操作取回所需的数据;转步骤(5);(5)更新预取表对预取表的信息进行更新;(6)进行预取若命中预取表,则判断预取表中的命中项是否满足预取条件,如满足,则触发预取操作,进行预取。作为本发明的预取方法的进一步改进所述索引值具体是指所述上一次发生Cache失效时的访存地址被屏蔽掉地址的低 η 位,其中 η = 10 (Cache line size)。所述预取表中还记录有S域,访存地址序列的步长,所述访存地址序列的步长为当前访存失效地址与上一次访存失效地址的差值;和DS域,访存地址序列步长的线性变化值;所述步骤( 中两个预测地址具体为固定步长访存类型的预测地址PDA。和步长线性变化访存类型的预测地址PDA1,其中PDA。= PA+S,PDA1 = PA+S+DS。所述预取表中还存储有预测的访存地址序列类型,记录在PT域中,其中,PT为0表示当前表项的预测类型为固定步长访存类型,PT为1表示当前表项的预测类型为步长线性变化访存类型;所述命中预取表包括真命中和假命中,所述真命中为命中项的预测类型与当前访存地址序列一致;所述假命中为当前的预测类型与访存地址序列类型不一致。所述预取表中还记录有C域,是一个饱和性计数器,记录当前表项的信心值,用于判断执行预取的时机;V域,标识当前表项是否有效,V为1时表示当前表项有效,否则无效;ra域,标识当前表项的D域中是否有已预取的数据,ra为1时则相应表项的D域内已预取数据且有效,否则无效;所述预取表还设有信心系统<1,D,T,ST> (该信心系统可在硬件实现之前通过模拟方法优选实现),所述信心系统中,当命中预取表时,令C = C+I ;未命中预取表时,令C = C-D, T为触发预取的信心阈值,ST为饱和性计数器C的饱和值;所述步骤( 更新预取表,具体包括以下两种5. 1)不需要转换预测类型的更新a.若真命中预取表,则将命中项的C增加I,按顺序依次更新为DS =索引值-PA-S、S =索引值-PA和PA =索引值,同时将其他表项的C减D ;b.若未命中预取表,则为当前失效地址分配一个新表项,将所有表项的C减D,将C 小于信心阈值T的表项按顺序依次更新为DS =索引值-PA-S、S =索引值-PA和PA =索引值;C.将PT与ra置为0 ;并将C = 0的未命中的表项的V清0 ;5. 2)需要转换预测类型的更新d.若假命中预取表,则将命中项的PT取反,c置为I,ra置为0,并按顺序依次更新为DS =索引值^^_5、5=索引值^^、?々=索引值。本发明还提供一种用于实现上述方法的步长自适应的Cache预取系统,所述预取系统包括预取表,用于存储Cache预取操作所需的信息,所述信息包括Cache失效地址;地址转换部件,用于将所述Cache失效地址转换成预取表查询的索引值;加法器,根据预取表中的信息计算出两种预测地址;比较器,用于将所述两种预测地址与索引值进行比较,并将比较的结果送往更新控制逻辑部件;更新控制逻辑部件,用于根据所述比较器比较的结果判断是否进行预取操作,并更新所述预取表。作为本发明的预取系统的进一步改进所述预取系统还包括用于判断是否将已预取的数据返回的与运算器,所述与运算器分别与所述比较器和所述预取表相连。与现有技术相比,本发明的优点在于1、本发明的步长自适应的Cache预取方法,使用失效地址作为查询预取表的索引,避免了额外数据通路的增加,可以很方便的在现有Cache结构的基础上,添加预取结构实现预取Cache,可移植性强。2、本发明的步长自适应的Cache预取方法,能够动态识别访存地址序列类型,自适应的调整预测地址计算方法,对更多种类的访存地址序列进行预取。同时,本发明通过引入信心系统机制,并选取适当的结构参数适时触发预取操作,能够获得较高的预取成功率, 更大程度地隐藏失效开销;3、本发明的步长自适应的Cache预取系统,能够通过增加有限的部件,实现上述方法。其结构简单、硬件开销小且可移植性强、能有效提高cache系统的性能。


图1是为现有预取机制典型的预取表结构示意图;图2为本发明的预取方法的总流程示意图;图3为本发明的预取系统的基本结构示意图;图4为本发明具体实施例中查询预取表的步骤流程示意图;其中,图4(a)为本发明具体实施例中的真命中步骤流程示意图;图4(b)为本发明具体实施例中的假命中步骤流程示意图;图5为本发明具体实施例中更新预取表的步骤流程示意图。图例说明1、地址转换部件;2、加法器;3、比较器;4、更新控制逻辑部件;5、与运算器。
具体实施例方式以下将结合说明书附图和具体实施例对本发明作进一步详细说明。如图3所示,本发明的步长自适应的Cache预取系统,包括预取表,用于存储Cache预取操作所需的信息;地址转换部件1,用于将Cache失效地址转换成预取表查询的索引值(IDX);加法器2,根据预取表中的信息计算出两种预测地址;比较器3,用于将两种预测地址与索引值进行比较,并将比较的结果送往更新控制逻辑部件4;更新控制逻辑部件4,用于根据比较器3比较的结果判断是否进行预取操作,并更新预取表。本实施例中,预取系统还包括用于判断是否将已预取的数据返回的与运算器5,与运算器5分别与比较器3和预取表相连。其中,预取表中包括以下信息PA域,上一次发生Cache失效时的访存地址,即失效地址;S域,访存地址序列的步长,访存地址序列的步长为当前访存失效地址与上一次访存失效地址的差值;DS域,访存地址序列步长的线性变化值;PT域中,预取表中还存储有预测的访存地址序列类型,其中,PT为0表示当前表项的预测类型为固定步长访存类型,PT为1表示当前表项的预测类型为步长线性变化访存类型;C域,是一个饱和性计数器,记录当前表项的信心值,用于判断执行预取的时机;V域,标识当前表项是否有效,V为1时表示当前表项有效,否则无效;ra域,标识当前表项的D域中是否有已预取的数据,ra为1时则相应表项的D域内已预取数据且有效,否则无效;预取表还设有信心系统<I,D,T,ST>,该信心系统可在硬件实现之前通过模拟方法优选实现。该信心系统中,当命中预取表时,令C = C+I ;未命中预取表时,c = C-D,T为触发预取的信心阈值,ST为饱和性计数器C的饱和值。通过上述的预取系统可实现本发明的步长自适应的Cache预取方法,如图2所示, 该方法是通过以下步骤实现的1、设置预取表设置一预取表,在预取表中设置PA、S、DS、PT、C、V和I3R等条目,用于存储上述信肩、ο2、查询预取表当发生Cache失效时首先查询预取表,首先用由地址转换部件1将失效地址的高位作为索引值(IDX),即将上一次发生Cache失效时的访存地址屏蔽掉地址的低η位,其中 η = Iog2 (Cache line size), Cache line size为设置了上述的预取系统的Cache行大小。如图4所示,用加法器2计算得到两个预测地址固定步长访存类型的预测地址 PDAc和步长线性变化访存类型的预测地址PDA1,其中PDA。= PA+S,PDA1 = PA+S+DS。通过比较器3将PDA。和PDA1分别与IDX进行比较,若任一个与IDX相同,则判断命中预取表,转步骤4 ;否则判断未命中预取表,转步骤3。命中预取表包括真命中和假命中,当IDX与PDA。相同并且PT为0,或者IDX与PDA1 相同并且PT为1时认为是真命中(如图4(a)所示),即为命中项的预测类型与当前访存地址序列一致;假命中(如图4(b)所示)为当前的预测类型与访存地址序列类型不一致,但只要在后续更新预取表时转换预测类型(即将PT取反),便能符合当前的访存地址序列类型。3、分配新表项当失效地址未命中预取表时,则在预取表中为该失效地址分配一个新表项;其原则是优先选用空表项,即V为0的项,若没有空项则选择C最低或直接选第一项。选定表项之后,将新表项的PA置为当前失效地址,V置为1标识当前预取表项为有效项,S、DS、PT、 C、ra均初始化为0 ;转步骤5。
4、返回数据如果失效地址真命中预取表,且I3R为1则返回已预取的数据给Cache,否则不返回数据。如果没有预取数据需要返回,即不是真命中预取表或真命中的表项没有已预取的数据,则继续进行访存操作取回所需的数据;转步骤5。5、更新预取表如图5所示,无论查询结果是否为命中预取表,均需要对预取表的信息进行更新。 更新包括以下两种情况5. 1)不需要转换预测类型的更新a.若真命中预取表,则将命中项的C增加I,按顺序依次更新为DS = IDX_PA_S、 S = IDX-PA和PA = IDX,同时将其他表项的C减D ;b.若未命中预取表,则为当前失效地址分配一个新表项,将所有表项的C减D,将 C小于信心阈值T的表项按顺序依次更新为DS = IDX-PA-S, S = IDX-PA和PA = IDX ;c.将PT与I3R置为0 ;并将C = 0的未命中的表项的V清0 (置为无效);5. 2)需要转换预测类型的更新d.若假命中预取表,则将命中项的PT取反,C置为I,I3R置为0,并按顺序依次更新为DS = IDX-PA-S, S = IDX-PA、PA = IDX。6、进行预取当失效地址真命中预取表则判断预取表中的命中项是否满足预取条件,如满足 (命中项的C大于等于阈值T时),则触发预取操作,进行预取。并在预取数据返回之后将 PR 置 1。预取地址根据PT值的不同,其计算方法也不同。当PT为0时,预取地址为(PA+S), 当PT为1时,预取地址为(PA+S+DS),其中PA、S、DS均为更新后的值。预取操作须在访存空闲期间进行,即所有的正常访存操作均完成时进行预取操作,否则预取在队列中等待。应用例1 上述的预取方法中,预取表为表1所示,为固定步长访存模式,且信心系统采用 <1,2,2,3>。其工作过程如下1)预取表为第一个访存失效地址0x80分配一个新表项,此时PA写入访存失效地址0x80,V置1,S、DS、PT、C、ra均初始化为0。2)下一个访存失效地址是0x100,因为PT = O且0x100乒PDA。(0x80+0),所以不命中预取表,只需要更新预取表而不增加计数器C的值,PA < = 0x100, S < = (0x100-0x80), DS <= (0x100-0x80-0)。3)下一个访存失效地址为 0x180,因为 PT = 0 且 0x180 = PDA。(0x100+0x80),所以命中预取表;计数器C的值增加1并更新预取表,PA <= 0x180, S <= (0x180-0x100), DS <= (0x180-0x100-0x80);此时C < T所以不触发预取操作。4)下一个访存失效地址为 0x200,因为 PT = 0 且 0x200 = PDA。(0x180+0x80),所以命中预取表;计数器C的值增加1并更新预取表,PA <= 0x200, S <= (0x200-0x180), DS <= (0x200-0x180-0x80);此时C = T所以触发预取操作,预取地址为0x^0 (PA+S),并在返回预取数据之后将I3R置1。
5)下一个访存失效地址为 0x^0,因为 PT = 0 且 0x^0 = PDA。(0x200+0x80),所以命中预取表;计数器C的值增加1并更新预取表,PA <= 0x180, S <= (0x180-0x100), DS <= (0x180-0x100-0x80);此时I3R = 1,需将已预取的数据返回给Cache,C > T触发预取操作,预取地址为0x300 (PA+S),并在返回预取数据之后将ra置1。6)下一个访存失效地址为0x300,因为PT = O且0x300 = PDA。(0x280+0x80),所以命中预取表;此时计数器C的值为3,达到饱和值,所以不需要再加1 ;更新预取表,PA < = 0x180, S <= (0x180-0x100),DS <= (0x180-0x100-0x80);此时 PR = 1,需将已预取的数据返回给Cache,C > T触发预取操作,预取地址为0x300 (PA+S),并在返回预取数据之后将 PR 置 1。表 1
权利要求
1.一种步长自适应的Cache预取方法,其特征在于包括以下步骤(1)设置预取表设置一预取表,在所述预取表中存储有失效地址,记录在PA域中;(2)查询预取表当发生Cache失效时首先查询预取表,首先用失效地址的高位作为索引值;根据预取表中存储的条目的内容通过加法计算得到两个预测地址,将所述两个预测地址分别与索引值进行比较,若任一个预测地址与索引值相同,则判断命中预取表,转步骤 (4);否则判断未命中预取表,转步骤(3);(3)分配新表项若未命中预取表时,则在预取表中为该失效地址分配一个新表项 ’转步骤(5);(4)返回数据若命中预取表且预取表中已预取数据时,返回已预取的数据给Cache; 否则不返回数据;若没有预取数据需要返回,则继续进行访存操作取回所需的数据;转步骤⑶;(5)更新预取表对预取表的信息进行更新;(6)进行预取若命中预取表,则判断预取表中的命中项是否满足预取条件,如满足, 则触发预取操作,进行预取。
2.根据权利要求1所述的步长自适应的Cache预取方法,其特征在于,所述索引值具体是指所述上一次发生Cache失效时的访存地址被屏蔽掉地址的低η位,其中η =10 (Cache line size)。
3.根据权利要求1或2所述的步长自适应的Cache预取方法,其特征在于,所述预取表中还记录有S域,访存地址序列的步长,所述访存地址序列的步长为当前访存失效地址与上一次访存失效地址的差值;和DS域,访存地址序列步长的线性变化值;所述步骤( 中两个预测地址具体为固定步长访存类型的预测地址PDA。和步长线性变化访存类型的预测地址PDA1,其中PDA。= PA+S,PDA1 = PA+S+DS。
4.根据权利要求3所述的步长自适应的Cache预取方法,其特征在于,所述预取表中还存储有预测的访存地址序列类型,记录在PT域中,其中,PT为O表示当前表项的预测类型为固定步长访存类型,PT为1表示当前表项的预测类型为步长线性变化访存类型;所述命中预取表包括真命中和假命中,所述真命中为命中项的预测类型与当前访存地址序列一致;所述假命中为当前的预测类型与访存地址序列类型不一致。
5.据权利要求4述的步长自适应的Cache预取方法,其特征在于,所述预取表中还记录有C域,是一个饱和性计数器,记录当前表项的信心值,用于判断执行预取的时机;V域,标识当前表项是否有效,V为1时表示当前表项有效,否则无效;I3R域,标识当前表项的D域中是否有已预取的数据,ra为1时则相应表项的D域内已预取数据且有效,否则无效;所述预取表还设有信心系统<1,D,T,ST>,所述信心系统中,当命中预取表时,令C = C+I ;未命中预取表时,令C = C-D, T为触发预取的信心阈值,ST为饱和性计数器C的饱和值;
6.据权利要求5述的步长自适应的Cache预取方法,其特征在于,所述步骤( 更新预取表,具体包括以下两种`5. 1)不需要转换预测类型的更新a.若真命中预取表,则将命中项的C增加I,按顺序依次更新为DS=索引值-PA-S、S =索引值-PA和PA =索引值,同时将其他表项的C减D ;b.若未命中预取表,则为当前失效地址分配一个新表项,将所有表项的C减D,将C小于信心阈值T的表项按顺序依次更新为DS =索引值-PA-S、S =索引值-PA和PA =索引值;c.将PT与ra置为ο;并将c = ο的未命中的表项的ν清ο ;·5. 2)需要转换预测类型的更新d.若假命中预取表,则将命中项的PT取反,c置为i,ra置为0,并按顺序依次更新为 DS =索引值-PA-S、S =索引值-PA、PA =索引值。
7.一种用于实现权利要求1 6中任一项所述的方法的步长自适应的Cache预取系统,其特征在于,所述预取系统包括预取表,用于存储Cache预取操作所需的信息,所述信息包括Cache失效地址;地址转换部件,用于将所述Cache失效地址转换成预取表查询的索引值;加法器,根据预取表中的信息计算出两种预测地址;比较器,用于将所述两种预测地址与索引值进行比较,并将比较的结果送往更新控制逻辑部件;更新控制逻辑部件,用于根据所述比较器比较的结果判断是否进行预取操作,并更新所述预取表。
8.根据权利要求7所述的步长自适应的Cache预取系统,其特征在于,所述预取系统还包括用于判断是否将已预取的数据返回的与运算器,所述与运算器分别与所述比较器和所述预取表相连。
全文摘要
本发明公开了一种步长自适应的Cache预取方法及其系统,该方法包括设置预取表,并根据失效地址计算索引值,计算出两个预测地址并与索引值进行比较,若任一个与索引值相同,则认为命中预取表,否则为失效地址分配一个新表项;若命中预取表且预取表中已预取数据时,返回已预取的数据给Cache;再更新预取表;若命中预取表,则判断预取表中的命中项是否满足预取条件如满足,则触发预取操作。该系统包括,预取表、用于转换索引值的地址转换部件、用于计算出两种预测地址的加法器、用于将两种预测地址与索引值进行比较的比较器以及用于判断是否进行预取操作并更新预取表的更新控制逻辑部件。本发明具有可移植性强、预取正确率高等优点。
文档编号G06F12/08GK102214146SQ201110213360
公开日2011年10月12日 申请日期2011年7月28日 优先权日2011年7月28日
发明者余再祥, 刘祥远, 刘蓬侠, 吴虎成, 唐涛, 李勇, 罗恒, 胡春媚, 许邦建, 郭阳, 陈书明, 靳强, 鲁建壮 申请人:中国人民解放军国防科学技术大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1