CN110362502A - 链式哈希栈的影子缓存优化方法和装置 - Google Patents
链式哈希栈的影子缓存优化方法和装置 Download PDFInfo
- Publication number
- CN110362502A CN110362502A CN201910559287.4A CN201910559287A CN110362502A CN 110362502 A CN110362502 A CN 110362502A CN 201910559287 A CN201910559287 A CN 201910559287A CN 110362502 A CN110362502 A CN 110362502A
- Authority
- CN
- China
- Prior art keywords
- hash
- cache
- stack
- function
- shadow
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0804—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0891—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using clearing, invalidating or resetting means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0893—Caches characterised by their organisation or structure
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明实施例提供的链式哈希栈的影子缓存优化方法和装置,添加了一个影子缓存表,当调用子函数时,保存子函数头部哈希运算的输入(返回地址和哈希值),记录该项为有效,然后指针指向最近更新的缓存项的下一项。当函数返回时,查询最近一次有效的缓存项。如果此时的输入(从栈中取出的返回地址和哈希值)与影子缓存最新的有效项相同,则不需要进行哈希计算,而是直接用影子缓存表中的缓存项来更新top寄存器,然后将影子缓存表中的该项缓存置为无效。这种方法能够加速函数体尾部对栈中返回地址和哈希值的校验,减少流水线停顿。
Description
技术领域
本发明实施例涉及链式哈希栈技术领域,尤其涉及一种链式哈希栈的影子缓存优化方法和装置。
背景技术
链式哈希栈是一种新型的保护函数返回地址的防御手段。它在硬件上添加了两个寄存器top和salt,top用来保存哈希值,salt用来保存哈希函数的密钥。当调用函数时,把哈希值和返回地址依次压入栈中。然后把密钥、哈希值和返回地址一起做哈希运算,运算结果用来更新top寄存器的值。在函数返回时,把哈希值和返回地址一同弹出栈,并做哈希运算。运算结果与top寄存器中的值做对比。如果不同,则抛出一个异常;如果相同,则用栈中的哈希值更新top寄存器,返回到父函数中。
链式哈希栈的安全性极高,即使攻击者能任意读写内存地址空间,也无法绕过这种防御机制。然而,当哈希函数的运算周期增大时,它的性能损耗会急剧地加大。例如,当一次哈希运算需要80个时钟周期时,它的性能损耗大约为20%,限制了它的实用性。
发明内容
本发明实施例提供链式哈希栈的影子缓存优化方法和装置,用以加速函数体尾部的哈希运算,减少流水线停顿的问题。
第一方面,本发明实施例提供一种链式哈希栈的影子缓存优化方法,包括:
链式哈希栈在调用函数并更新top寄存器值时,将所述函数头部哈希运算的输入项作为缓存项保存在影子缓存表中;
链式哈希栈在返回函数时,查询最近的缓存项,若此时返回的函数的输入项与影子缓存表中的缓存项相同,则不需要再进行哈希运算,通过影子缓存表中的缓存项来更新top寄存器值。
作为优选的,所述影子缓存表包括head指针、valid位、old_hash和ret_addr;
所述head指针用于指向当前函数体对应的缓存项的下一项;
所述valid位用于表示当前缓存项是否有效;
所述old_hash为进入函数时的top寄存器值;
所述ret_addr为函数的返回地址。
作为优选的,将所述函数头部哈希运算的输入项作为缓存项保存在影子缓存表中,具体包括:
将哈希运算的输入old_hash和输入ret_addr作为缓存项分别保存到影子缓存表的old_hash和ret_addr中,并将对应缓存项的valid位置为1,然后head指针+1,移动到下一项缓存项。
作为优选的,若此时返回的函数的输入项与影子缓存表中的缓存项相同,则不需要再进行哈希运算,具体包括:
校验从链式哈希栈中读取出的top寄存器值和返回地址,若判断获知此时影子缓存表中head-1指针项valid位为1,且top寄存器值和返回地址与valid位为1时对应的old_hash和ret_addr相等,则不需要进行本次哈希计算;
当哈希值的更新运算还未结束时,若校验运算已进入流水线,则不停顿流水线,终止正在进行的哈希值更新运算,通过影子缓存表对比校验。
作为优选的,通过影子缓存表中的缓存项来更新top寄存器值,具体包括:
通过old_hash来更新top寄存器值,head指针-1。
作为优选的,若判断获知head-1指针项valid位为0,则进行哈希计算,并校验从链式哈希栈中读出的返回地址和哈希值是否被篡改。
第二方面,本发明实施例提供一种链式哈希栈的影子缓存优化装置,包括:
第一模块,用于链式哈希栈在调用函数并更新top寄存器值时,将所述函数头部哈希运算的输入项作为缓存项保存在影子缓存表中;
第二模块,用于链式哈希栈在返回函数时,查询最近的缓存项,若此时返回的函数的输入项与影子缓存表中的缓存项相同,则不需要再进行哈希运算,通过影子缓存表中的缓存项来更新top寄存器值。
第三方面,本发明实施例提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如本发明第一方面实施例所述链式哈希栈的影子缓存优化方法的步骤。
第四方面,本发明实施例提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如本发明第一方面实施例所述链式哈希栈的影子缓存优化方法的步骤。
本发明实施例提供的链式哈希栈的影子缓存优化方法和装置,添加了一个影子缓存表,随着函数的调用返回,保存函数头部哈希运算的输入,记录该项为有效,一个指针指向最近更新的缓存项。当函数返回时,查询最近一次有效的缓存项。如果此时的输入(top寄存器和ra寄存器)与影子缓存当前项相同,则不需要再哈希计算,直接更新top寄存器值,并将该项缓存置为无效,能够加速函数体尾部对栈中返回地址和哈希值的校验,减少流水线停顿。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为根据本发明实施例的链式哈希栈的影子缓存优化方法示意图;
图2为根据本发明实施例的影子缓存表结构示意图;
图3为根据本发明实施例的链式哈希栈的影子缓存优化装置示意图;
图4为根据本发明实施例的电子设备的实体结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
下面,本发明说明书首先对各个基本概念和现有技术及缺陷作一个清楚的解释。
栈(stack):又名堆栈,它是一种运算受限的线性表。其限制是仅允许在表的一端进行插入和删除运算。这一端被称为栈顶,相对地,把另一端称为栈底。向一个栈插入新元素又称作进栈、入栈或调用,它是把新元素放到栈顶元素的上面,使之成为新的栈顶元素;从一个栈删除元素又称作出栈或退栈,它是把栈顶元素删除掉,使其相邻的元素成为新的栈顶元素。
函数调用:计算机编译或运行时,使用某个函数来完成相关命令。
返回地址:栈中存储的数据中一个最为重要的数据就是函数返回地址。当调用一个函数时,调用指令(例如Call指令)会将函数返回地址压入栈中。当函数返回时,返回指令(例如Return指令)会读取栈中保存的返回地址,根据返回地址跳转到原来调用函数的位置,继续往下执行。利用栈溢出漏洞进行攻击最常用的方法就是利用栈溢出,覆盖返回地址,将返回地址改为一个攻击者设置的地址。当函数返回时,就会跳转到攻击者设置好的位置,执行攻击者希望执行的代码。
影子栈通过不同的实现方式,将栈中的返回地址在内存的另一个区域中存储一个备份(该内存区域就叫影子栈),并在栈中的返回地址被使用前将地址与备份做对比,如果地址不同,则说明栈中的地址被篡改过。简单来说,影子栈的本质就是将返回地址在另外一个地方存一个备份,这样就不担心攻击者修改栈中的返回地址。
链式哈希栈是一种新型的保护函数返回地址的防御手段。它在硬件上添加了两个寄存器,top寄存器和salt寄存器,top寄存器用来保存哈希值,salt寄存器用来保存哈希函数的密钥。当调用函数时,把哈希值和返回地址依次压入栈中。然后把密钥、哈希值和返回地址一起做哈希运算,运算结果用来更新top寄存器的值。在函数返回时,把哈希值和返回地址一同弹出栈,并做哈希运算。运算结果与top寄存器中的值做对比。如果不同,则抛出一个异常;如果相同,则用栈中的哈希值更新top寄存器,返回到父函数中。
链式哈希栈的安全性极高,即使攻击者能任意读写内存地址空间,也无法绕过这种防御机制。然而,当哈希函数的运算周期增大时,它的性能损耗会急剧地加大。例如,当一次哈希运算需要80个时钟周期时,它的性能损耗大约为20%,限制了它的实用性。
因此,本发明各实施例添加了一个影子缓存表,随着函数的调用返回,保存函数头部哈希运算的输入,记录该项为有效,一个指针指向最近更新的缓存项。当函数返回时,查询最近一次有效的缓存项。如果此时的输入(top寄存器和ra寄存器)与影子缓存当前项相同,则不需要再哈希计算,直接更新top寄存器,并将该项缓存置为无效,够有效解决函数体尾部的哈希运算由于等待尚未结束的函数头部的哈希运算而造成流水线停顿的问题。以下将通过多个实施例进行展开说明和介绍。
图1为根据本发明实施例的一种链式哈希栈的影子缓存优化方法,包括:
S1、链式哈希栈在调用函数并更新top寄存器值时,将所述函数头部哈希运算的输入项作为缓存项保存在影子缓存表中;
S2、链式哈希栈在返回函数时,查询最近的缓存项,若此时返回的函数的输入项与影子缓存表中的缓存项相同,则不需要再进行哈希运算,通过影子缓存表中的缓存项来更新top寄存器值。
在本实施例中,在硬件上添加了一个影子缓存表(影子栈),随着函数的调用返回,保存函数头部哈希运算的输入,记录该项为有效,一个指针指向最近更新的缓存项。当函数返回时,查询最近一次有效的缓存项。如果此时的输入(top寄存器和ra寄存器)与影子缓存当前项相同,则不需要再哈希计算,直接更新top寄存器值,并将该项缓存置为无效,加快zipper stack在函数尾部的校验过程
在上述实施例的基础上,所述影子缓存表包括head指针、valid位、old_hash和ret_addr;
所述head指针用于指向当前函数体对应的缓存项;
所述valid位用于表示当前缓存项是否有效;
所述old_hash为进入函数时的top寄存器值;
所述ret_addr为函数的返回地址。
在本实施例中,影子缓存表结构如图2所示。valid位代表当前缓存项是否有效,old_hash是进入函数时的top寄存器值,ret_addr是该函数的返回地址,head指针指向当前函数体对应的缓存项的下一项。
在上述各实施例的基础上,将所述函数头部哈希运算的输入项作为缓存项保存在影子缓存表中,具体包括:
将哈希运算的输入top寄存器的值和返回地址作为缓存项分别保存到影子缓存表的old_hash和ret_addr中,并将对应缓存项的valid位置为1,然后head指针+1,移动到下一项缓存项。
增加影子缓存后,在函数头部进行更新top寄存器值的哈希运算的同时,把运算的输入old_hash和ret_addr保存到影子缓存表当中,该项缓存的valid位置为1,然后head+1,移动到下一项缓存。
在上述各实施例的基础上,若此时返回的函数的输入项与影子缓存表中的缓存项相同,则不需要再进行哈希运算,具体包括:
校验从链式哈希栈中读取出的top寄存器值,若判断获知此时影子缓存表中head-1指针项valid位为1,且top寄存器值和返回地址与valid位为1时对应的old_hash和ret_addr相等,则不需要进行本次哈希计算。特别地,当哈希值的更新运算还未结束时,若校验运算已进入流水线,此时不需要停顿流水线,而是终止正在进行的哈希值更新运算,通过与影子缓存表对比来校验即可。若判断获知head-1指针项valid位为0,则进行哈希计算,并校验从链式哈希栈中读取出的返回地址和哈希值是否被篡改。
在本实施例中,当函数返回时,函数尾部需要校验从栈中读出来的top值。这时如果影子缓存中的head-1指针项valid位为1,且top寄存器值和返回地址与该项的old_hash和ret_addr相等,则不需要进行该次哈希计算,直接用old_hash来更新top值,head减1。如果valid位为0,说明已经匹配超过缓存项数,此时进行哈希运算,校验从栈中取出的返回地址和哈希值是否被篡改。本实施例的方案能够有效解决函数体尾部的哈希运算由于等待尚未结束的函数头部的哈希运算而造成流水线停顿的问题。甚至当该函数尾部的哈希运算缓存命中时,原本该运算可能与后续函数的头部或者尾部的哈希运算产生的流水线停顿也被消除。
图3为本发明实施例提供的一种链式哈希栈的影子缓存优化装置,包第一模块30和第二模块40,其中:
第一模块30用于链式哈希栈在调用函数并更新top寄存器值时,将所述函数头部哈希运算的输入项作为缓存项保存在影子缓存表中;
第二模块40用于链式哈希栈在返回函数时,查询最近的缓存项,若此时返回的函数的输入项与影子缓存表中的缓存项相同,则不需要再进行哈希运算,通过影子缓存表中的缓存项来更新top寄存器值。
图4为本发明实施例提供的电子设备的实体结构示意图,如图4所示,该电子设备可以包括:处理器(processor)810、通信接口(Communications Interface)820、存储器(memory)830和通信总线840,其中,处理器810,通信接口820,存储器830通过通信总线840完成相互间的通信。处理器810可以调用存储在存储器830上并可在处理器810上运行的计算机程序,以执行上述各实施例提供的链式哈希栈的影子缓存优化方法,例如包括:
S1、链式哈希栈在调用函数并更新top寄存器值时,将所述函数头部哈希运算的输入项作为缓存项保存在影子缓存表中;
S2、链式哈希栈在返回函数时,查询最近的缓存项,若此时返回的函数的输入项与影子缓存表中的缓存项相同,则不需要再进行哈希运算,通过影子缓存表中的缓存项来更新top寄存器值。
此外,上述的存储器830中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实施例的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
本发明实施例还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现以执行上述各实施例提供的链式哈希栈的影子缓存优化方法,例如包括:
S1、链式哈希栈在调用函数并更新top寄存器值时,将所述函数头部哈希运算的输入项作为缓存项保存在影子缓存表中;
S2、链式哈希栈在返回函数时,查询最近的缓存项,若此时返回的函数的输入项与影子缓存表中的缓存项相同,则不需要再进行哈希运算,通过影子缓存表中的缓存项来更新top寄存器值。
本发明实施例还提供本实施例公开一种计算机程序产品,所述计算机程序产品包括存储在非暂态计算机可读存储介质上的计算机程序,所述计算机程序包括程序指令,当所述程序指令被计算机执行时,计算机能够执行如上述的链式哈希栈的影子缓存优化方法,例如包括:
S1、链式哈希栈在调用函数并更新top寄存器值时,将所述函数头部哈希运算的输入项作为缓存项保存在影子缓存表中;
S2、链式哈希栈在返回函数时,查询最近的缓存项,若此时返回的函数的输入项与影子缓存表中的缓存项相同,则不需要再进行哈希运算,通过影子缓存表中的缓存项来更新top寄存器值。
综上所述,本发明实施例提供的链式哈希栈的影子缓存优化方法和装置,添加了一个影子缓存表,随着函数的调用返回,保存函数头部哈希运算的输入,记录该项为有效,一个指针指向最近更新的缓存项。当函数返回时,查询最近一次有效的缓存项。如果此时的输入(top寄存器和ra寄存器)与影子缓存当前项相同,则不需要再哈希计算,直接更新top寄存器值,并将该项缓存置为无效,够有效解决函数体尾部的哈希运算由于等待尚未结束的函数头部的哈希运算而造成流水线停顿的问题。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (9)
1.一种链式哈希栈的影子缓存优化方法,其特征在于,包括:
链式哈希栈在调用函数并更新top寄存器值时,将所述函数头部哈希运算的输入项作为缓存项保存在影子缓存表中;
链式哈希栈在返回函数时,查询最近的缓存项,若此时返回的函数的输入项与影子缓存表中的缓存项相同,则不需要再进行哈希运算,通过影子缓存表中的缓存项来更新top寄存器值。
2.根据权利要求1所述的链式哈希栈的影子缓存优化方法,其特征在于,所述影子缓存表包括head指针、valid位、old_hash和ret_addr;
所述head指针用于指向当前函数体对应的缓存项的下一项;
所述valid位用于表示当前缓存项是否有效;
所述old_hash为进入函数时的top寄存器值;
所述ret_addr为函数的返回地址。
3.根据权利要求2所述的链式哈希栈的影子缓存优化方法,其特征在于,将所述函数头部哈希运算的输入项作为缓存项保存在影子缓存表中,具体包括:
将哈希运算的输入old_hash和输入ret_addr作为缓存项分别保存到影子缓存表的old_hash和ret_addr中,并将对应缓存项的valid位置为1,然后head指针+1,移动到下一项缓存项。
4.根据权利要求3所述的链式哈希栈的影子缓存优化方法,其特征在于,若此时返回的函数的输入项与影子缓存表中的缓存项相同,则不需要再进行哈希运算,具体包括:
函数尾部在校验从链式哈希栈中读取出的返回地址和哈希值这两个值时,若判断获知此时影子缓存表中head-1指针项valid位为1,且这两个值与最新一项valid位为1对应的old_hash和ret_addr相等,则不需要进行本次哈希计算;
当哈希值的更新运算还未结束时,若校验运算已进入流水线,则不停顿流水线,终止正在进行的哈希值更新运算,通过影子缓存表对比校验。
5.根据权利要求4所述的链式哈希栈的影子缓存优化方法,其特征在于,通过影子缓存表中的缓存项来更新top寄存器值,具体包括:
通过old_hash来更新top寄存器值,head指针-1。
6.根据权利要求4所述的链式哈希栈的影子缓存优化方法,其特征在于,若判断获知head-1指针项valid位为1,则不进行哈希计算,通过影子缓存表来校验从链式哈希栈中读取出的返回地址和哈希值是否被篡改。
7.一种链式哈希栈的影子缓存优化装置,其特征在于,包括:
第一模块,用于链式哈希栈在调用函数并更新top寄存器值时,将所述函数头部哈希运算的输入项作为缓存项保存在影子缓存表中;
第二模块,用于链式哈希栈在返回函数时,查询最近的缓存项,若此时返回的函数的输入项与影子缓存表中的缓存项相同,则不需要再进行哈希运算,通过影子缓存表中的缓存项来更新top寄存器值。
8.一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如权利要求1至6任一项所述链式哈希栈的影子缓存优化方法的步骤。
9.一种非暂态计算机可读存储介质,其上存储有计算机程序,其特征在于,该计算机程序被处理器执行时实现如权利要求1至6任一项所述链式哈希栈的影子缓存优化方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910559287.4A CN110362502B (zh) | 2019-06-26 | 2019-06-26 | 链式哈希栈的影子缓存优化方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910559287.4A CN110362502B (zh) | 2019-06-26 | 2019-06-26 | 链式哈希栈的影子缓存优化方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110362502A true CN110362502A (zh) | 2019-10-22 |
CN110362502B CN110362502B (zh) | 2021-05-04 |
Family
ID=68217048
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910559287.4A Active CN110362502B (zh) | 2019-06-26 | 2019-06-26 | 链式哈希栈的影子缓存优化方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110362502B (zh) |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6711672B1 (en) * | 2000-09-22 | 2004-03-23 | Vmware, Inc. | Method and system for implementing subroutine calls and returns in binary translation sub-systems of computers |
CN103729307A (zh) * | 2012-10-15 | 2014-04-16 | 三星电子株式会社 | 数据压缩装置和方法以及包括数据压缩装置的存储系统 |
CN105426755A (zh) * | 2015-11-24 | 2016-03-23 | 无锡江南计算技术研究所 | 一种基于哈希算法的库函数安全增强方法 |
US9652397B2 (en) * | 2014-04-23 | 2017-05-16 | Texas Instruments Incorporated | Dynamic power reduction and performance improvement in caches using fast access |
CN108519954A (zh) * | 2018-03-23 | 2018-09-11 | 北京焦点新干线信息技术有限公司 | 一种集中管理缓存的方法及装置 |
CN109409086A (zh) * | 2018-09-21 | 2019-03-01 | 中国科学院信息工程研究所 | 基于新增指令的检测堆栈中返回地址被篡改的装置 |
CN109409084A (zh) * | 2018-09-21 | 2019-03-01 | 中国科学院信息工程研究所 | 一种检测返回地址被篡改的链式数据存储结构 |
CN109508539A (zh) * | 2018-09-21 | 2019-03-22 | 中国科学院信息工程研究所 | 检测堆栈中返回地址被篡改的链式堆栈结构 |
-
2019
- 2019-06-26 CN CN201910559287.4A patent/CN110362502B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6711672B1 (en) * | 2000-09-22 | 2004-03-23 | Vmware, Inc. | Method and system for implementing subroutine calls and returns in binary translation sub-systems of computers |
CN103729307A (zh) * | 2012-10-15 | 2014-04-16 | 三星电子株式会社 | 数据压缩装置和方法以及包括数据压缩装置的存储系统 |
US9652397B2 (en) * | 2014-04-23 | 2017-05-16 | Texas Instruments Incorporated | Dynamic power reduction and performance improvement in caches using fast access |
CN105426755A (zh) * | 2015-11-24 | 2016-03-23 | 无锡江南计算技术研究所 | 一种基于哈希算法的库函数安全增强方法 |
CN108519954A (zh) * | 2018-03-23 | 2018-09-11 | 北京焦点新干线信息技术有限公司 | 一种集中管理缓存的方法及装置 |
CN109409086A (zh) * | 2018-09-21 | 2019-03-01 | 中国科学院信息工程研究所 | 基于新增指令的检测堆栈中返回地址被篡改的装置 |
CN109409084A (zh) * | 2018-09-21 | 2019-03-01 | 中国科学院信息工程研究所 | 一种检测返回地址被篡改的链式数据存储结构 |
CN109508539A (zh) * | 2018-09-21 | 2019-03-22 | 中国科学院信息工程研究所 | 检测堆栈中返回地址被篡改的链式堆栈结构 |
Also Published As
Publication number | Publication date |
---|---|
CN110362502B (zh) | 2021-05-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI737977B (zh) | 基於區塊鏈的交易處理方法及裝置、電子設備 | |
CN103197919B (zh) | 用于还原寄存器重命名映射的方法和装置 | |
US7409535B2 (en) | Branch target prediction for multi-target branches by identifying a repeated pattern | |
JP5647203B2 (ja) | メモリページ管理 | |
US9495286B2 (en) | Method and arrangement for completion or recovery of data transactions in a flash type memory device using a commit process | |
CN109977129A (zh) | 多级数据缓存方法及设备 | |
US11625405B2 (en) | System and method for object-oriented pattern matching in arbitrary data object streams | |
GB2518289A (en) | A modified return stack buffer | |
CN108427571A (zh) | 一种动态链接库更新方法及服务器 | |
US10732979B2 (en) | Selectively performing ahead branch prediction based on types of branch instructions | |
CN108228649A (zh) | 用于数据访问的方法和设备 | |
US11520588B2 (en) | Prefetch filter table for storing moderately-confident entries evicted from a history table | |
US20140012807A1 (en) | Dependent commit queue for a database | |
CN111563093A (zh) | 一种联盟区块链冲突交易检测与规避系统及方法 | |
US20200210402A1 (en) | Systems and methods for performing programmable smart contract execution | |
CN110363006A (zh) | 多链哈希栈结构及检测函数返回地址被篡改的方法 | |
CN108491335A (zh) | 处理映射表项的方法、装置、设备及介质 | |
CN110457353A (zh) | 合约数据处理方法、装置、计算机可读存储介质和计算机设备 | |
CN110362502A (zh) | 链式哈希栈的影子缓存优化方法和装置 | |
US9990290B2 (en) | Cache coherency verification using ordered lists | |
JP2022551776A (ja) | ページレベル追跡ロードオーダキューを用いた投機的実行 | |
CN109801166B (zh) | 一种基于状态锁的智能合约的安全函数的设计方法及系统 | |
CN110378109A (zh) | 降低链式哈希栈性能损耗的方法及系统 | |
CN112470122A (zh) | 具有提前返回预测的分支目标缓冲器 | |
CN111680289B (zh) | 一种链式哈希栈运算方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |