[发明专利]链式哈希栈的影子缓存优化方法和装置有效
申请号: | 201910559287.4 | 申请日: | 2019-06-26 |
公开(公告)号: | CN110362502B | 公开(公告)日: | 2021-05-04 |
发明(设计)人: | 陈李维;许奇臻;李锦峰;史岗;孟丹 | 申请(专利权)人: | 中国科学院信息工程研究所 |
主分类号: | G06F12/0804 | 分类号: | G06F12/0804;G06F12/0891;G06F12/0893 |
代理公司: | 北京路浩知识产权代理有限公司 11002 | 代理人: | 苗晓静 |
地址: | 100093 *** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 链式 哈希栈 影子 缓存 优化 方法 装置 | ||
1.一种链式哈希栈的影子缓存优化方法,其特征在于,包括:
链式哈希栈在调用函数并更新top寄存器值时,将所述函数头部哈希运算的输入项作为缓存项保存在影子缓存表中;
链式哈希栈在返回函数时,查询最近的缓存项,若此时返回的函数的输入项与影子缓存表中的缓存项相同,则不需要再进行哈希运算,通过影子缓存表中的缓存项来更新top寄存器值;
所述影子缓存表包括head指针、valid位、old_hash和ret_addr;
所述head指针用于指向当前函数体对应的缓存项的下一项;
所述valid位用于表示当前缓存项是否有效;
所述old_hash为进入函数时的top寄存器值;
所述ret_addr为函数的返回地址。
2.根据权利要求1所述的链式哈希栈的影子缓存优化方法,其特征在于,将所述函数头部哈希运算的输入项作为缓存项保存在影子缓存表中,具体包括:
将哈希运算的输入old_hash和输入ret_addr作为缓存项分别保存到影子缓存表的old_hash和ret_addr中,并将对应缓存项的valid位置为1,然后head指针+1,移动到下一项缓存项。
3.根据权利要求2所述的链式哈希栈的影子缓存优化方法,其特征在于,若此时返回的函数的输入项与影子缓存表中的缓存项相同,则不需要再进行哈希运算,具体包括:
函数尾部在校验从链式哈希栈中读取出的返回地址和哈希值这两个值时,若判断获知此时影子缓存表中head-1指针项valid位为1,且这两个值与最新一项valid位为1对应的old_hash和ret_addr相等,则不需要进行本次哈希计算;
当哈希值的更新运算还未结束时,若校验运算已进入流水线,则不停顿流水线,终止正在进行的哈希值更新运算,通过影子缓存表对比校验。
4.根据权利要求3所述的链式哈希栈的影子缓存优化方法,其特征在于,通过影子缓存表中的缓存项来更新top寄存器值,具体包括:
通过old_hash来更新top寄存器值,head指针-1。
5.根据权利要求3所述的链式哈希栈的影子缓存优化方法,其特征在于,若判断获知head-1指针项valid位为1,则不进行哈希计算,通过影子缓存表来校验从链式哈希栈中读取出的返回地址和哈希值是否被篡改。
6.一种链式哈希栈的影子缓存优化装置,其特征在于,包括:
第一模块,用于链式哈希栈在调用函数并更新top寄存器值时,将所述函数头部哈希运算的输入项作为缓存项保存在影子缓存表中;
第二模块,用于链式哈希栈在返回函数时,查询最近的缓存项,若此时返回的函数的输入项与影子缓存表中的缓存项相同,则不需要再进行哈希运算,通过影子缓存表中的缓存项来更新top寄存器值;
所述影子缓存表包括head指针、valid位、old_hash和ret_addr;
所述head指针用于指向当前函数体对应的缓存项的下一项;
所述valid位用于表示当前缓存项是否有效;
所述old_hash为进入函数时的top寄存器值;
所述ret_addr为函数的返回地址。
7.一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如权利要求1至5任一项所述链式哈希栈的影子缓存优化方法的步骤。
8.一种非暂态计算机可读存储介质,其上存储有计算机程序,其特征在于,该计算机程序被处理器执行时实现如权利要求1至5任一项所述链式哈希栈的影子缓存优化方法的步骤。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中国科学院信息工程研究所,未经中国科学院信息工程研究所许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201910559287.4/1.html,转载请声明来源钻瓜专利网。