CN111414321A - 一种基于动态映射机制的cache防护方法及装置 - Google Patents
一种基于动态映射机制的cache防护方法及装置 Download PDFInfo
- Publication number
- CN111414321A CN111414321A CN202010113142.4A CN202010113142A CN111414321A CN 111414321 A CN111414321 A CN 111414321A CN 202010113142 A CN202010113142 A CN 202010113142A CN 111414321 A CN111414321 A CN 111414321A
- Authority
- CN
- China
- Prior art keywords
- address
- data
- cache
- state
- processor
- 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
Images
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/14—Protection against unauthorised use of memory or access to memory
- G06F12/1408—Protection against unauthorised use of memory or access to memory by using cryptography
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/70—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
- G06F21/78—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data
- G06F21/79—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data in semiconductor storage media, e.g. directly-addressable memories
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Storage Device Security (AREA)
Abstract
本发明实施例提供一种基于动态映射机制的cache防护方法及装置,方法包括:当处理器向cache发出请求读操作的指令时,将处理器请求数据的地址与地址表中缓存在cache中数据的缓存地址进行比较,确定请求数据的地址是否命中地址表中的某一个表项;若命中,则查询该表项所对应的有效位表,确定该表项是否为有效状态,若是,则从关联表中获取请求数据所对应的数据行地址,从数据表中取出请求的数据;若未命中或命中的表项为无效状态,则cache将发出缺失信号,迫使处理器从主存中获取请求读操作对应的数据。本发明实施例平衡缓存访问时间,避免时序信息被利用,提高处理器的安全性。
Description
技术领域
本发明属于信息安全技术领域,尤其涉及一种基于动态映射机制的cache防护方法及装置。
背景技术
指令的投机执行提高了处理器的性能,在现代处理器中得到了广泛的应用。然而,当前的研究表明,通过投机执行,处理器会暴露内核数据,造成数据的泄密。
Spectre和Meltdown攻击对处理器的安全威胁严重。在常见的Spectre攻击案例中,其通过恶意指令访问内核空间,再将内核空间的数据作为地址引用以加载对应地址的内存数据。在这一过程中,由于load类指令加载以内核数据为地址的内存数据,导致cache会发生替换,将相应地址的缓存行加载入cache中。虽然由于预测失败而投机执行的执行结果将不会被提交,但是在微架构层面上,其标记已经在cache中写下,给攻击者留下了可供追踪的痕迹。在攻击的后期,攻击者可以通过获得该缓存行上数据的读取时间以获得以内核数据为地址引用的缓存行,并推测出被泄露的私密数据。在这个过程中,建立cache标记是Spectre和Meltdown攻击实现的重要桥梁。攻击者利用了传统缓存能够保存被恶意执行的load类指令在cache中留下了可以给后期追踪的痕迹,导致处理器内核数据的泄露。
因此,传统缓存留下由于投机失败而遗留的缓存标记是造成内核数据泄露的重要原因。
发明内容
为克服上述现有的cache防护方法造成处理器性能损失的问题或者至少部分地解决上述问题,本发明实施例提供一种基于动态映射机制的cache防护方法及装置。
根据本发明实施例的第一方面,提供一种基于动态映射机制的cache防护方法,包括:
当处理器向本发明所涉及的cache发出请求读操作的指令时,将所述处理器所请求数据的地址与地址表中缓存在所述cache中数据的地址进行比较,确定所述请求数据的地址是否命中所述地址表中的任一表项;
若命中,则查询有效位表,确定命中的所述表项是否为有效状态,若是,则从关联表中获取所述请求数据所对应的数据表中的数据行地址,根据获取的数据行地址将所述请求数据从所述数据表中取出;其中,所述关联表中存储有地址表中的地址与所述数据行地址之间的对应关系;
若所述处理器所请求的数据未命中所述地址表,或命中的所述表项为无效状态,则cache将发出缺失信号,迫使所述处理器从主存中获取请求读操作对应的数据。
具体地,所述地址表有两个;
其中,两个所述地址表中均存储有缓存在所述cache中每个数据的地址;
每个所述数据的地址在一个所述地址表中的状态为有效状态,在另一个所述地址表中的状态为无效状态,并将两个所述地址表中地址的状态存储在有效位表中。
具体地,将所述处理器所请求数据的地址与地址表中缓存在所述cache中数据的地址进行比较,确定所述请求数据的地址是否命中所述地址表中的任一表项的步骤还包括:
若未命中,则查询所述有效位表,获取所述地址表中所有为无效状态的地址;
从两个所述地址表的所有无效状态的地址中选择一个地址存储所述请求数据的地址;
从所述数据表中选择一个空闲的数据行地址存储所述请求数据的地址对应的数据;
将选择的所述请求数据在地址表中的地址和选择的所述数据行地址之间的对应关系存储在所述关联表中。
具体地,从所述数据表选择一个空闲的数据行地址存储所述请求数据的地址对应的数据的步骤之后还包括:
当所述指令提交时,将选择的无效状态的地址在其所在的地址表中所对应的有效位表中的状态更新为有效状态,并将选择的所述地址在另一个所述地址表中所对应的有效位表的状态更新为无效状态。
具体地,从关联表中获取所述请求数据所对应的数据表中的数据行地址,根据获取的数据行地址将所述请求数据从所述数据表中取出的步骤之后还包括:
基于验证表查询所述请求数据的地址对应的数据行地址是否与所述请求数据的地址对应;
若所述请求数据的地址对应的数据行地址在当前未提交的指令所修改的数据行的地址中不存在,且所述验证表中请求数据的地址对应的数据行地址与所述请求数据的地址对应,则从所述数据表中读出所述请求数据的地址对应的数据行地址中的数据,并将读出的数据返回给所述处理器。
根据本发明实施例第二方面提供一种基于动态映射机制的cache防护装置,包括:
确定模块,用于当处理器向cache发出请求读操作的指令时,将所述处理器所请求数据的地址与地址表中缓存在所述cache中数据的地址进行比较,确定所述请求数据的地址是否命中所述地址表中的任一表项;
获取模块,用于若命中,则查询有效位表,确定命中的所述表项是否为有效状态,若是,则从关联表中获取所述请求数据所对应的数据表中的数据行地址,根据获取的数据行地址将所述请求数据从所述数据表中取出;其中,所述关联表中存储有地址表中的地址与所述数据行地址之间的对应关系;
防护模块,用于若所述处理器所请求的数据未命中所述地址表,或命中的所述表项为无效状态,则cache将发出缺失信号,迫使所述处理器从主存中获取请求读操作对应的数据。
具体地,所述地址表有两个;
其中,两个所述地址表中均存储有缓存在所述cache中每个数据的地址;
每个所述数据的地址在一个所述地址表中的状态为有效状态,在另一个所述地址表中的状态为无效状态,并将两个所述地址表中地址的状态存储在有效位表中。
具体地,还包括替换模块用于:
若未命中,则查询所述有效位表,获取所述地址表中所有为无效状态的地址;
从两个所述地址表的所有无效状态的地址中选择一个地址存储所述请求数据的地址;
从所述数据表中选择一个空闲的数据行地址存储所述请求数据的地址对应的数据;
将选择的所述请求数据在地址表中的地址和选择的所述数据行地址之间的对应关系存储在所述关联表中。
具体地,还包括更新模块,用于:
当所述指令提交时,将选择的无效状态的地址在其所在的地址表中所对应的有效位表的状态更新为有效状态,并将选择的所述地址在另一个所述地址表中所对应的有效位表的状态更新为无效状态。
具体地,还包括读取模块,用于:
基于验证表查询所述请求数据的地址对应的数据行地址是否与所述请求数据的地址对应;
若所述请求数据的地址对应的数据行地址在当前未提交的指令所修改的数据行的地址中不存在,且所述验证表中请求数据的地址对应的数据行地址与所述请求数据的地址对应,则从所述数据表中读出所述请求数据的地址对应的数据行地址中的数据,并将读出的数据返回给所述处理器。
本发明实施例提供一种基于动态映射机制的cache防护方法及装置,该方法通过分离被缓存数据的地址部分与数据部分,实现两者的分离存储,最终实现缓存的动态映射。在指令中的地址信号命中地址表中的缓存地址时,若缓存地址有效,判断关联表中缓存地址对应的数据行是否被记录在黑名单中,若记录在黑名单中则从主存中获取请求的数据,从而实现对未能提交的指令所污染的cache中的数据行进行隐藏。当攻击发生时,本发明实施例将调整缓存结构,动态地映射地址与数据的关系,通过这一机制,使得新进数据被临时保存,而逐出数据得到备份。后期,攻击者在刺探缓存状态时,将无法获取缓存标记所泄露的时序信息,从而抵抗由于cache投机访问而导致的处理器信息泄露,提高了处理器的安全性,同时降低了处理器的性能损失。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的基于动态映射机制的cache防护方法整体流程示意图;
图2为本发明实施例提供的基于动态映射机制的cache防护方法中处理器cache框架结构示意图;
图3为本发明实施例提供的基于动态映射机制的cache防护装置整体结构示意图;
图4为本发明实施例提供的电子设备整体结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
在本发明的一个实施例中提供一种基于动态映射机制的cache防护方法,图1为本发明实施例提供的基于动态映射机制的cache防护方法整体流程示意图,该方法包括:S101,当处理器向cache发出请求读操作的指令时,将所述处理器所请求数据的地址与地址表中缓存在所述cache中数据的地址进行比较,确定所述请求数据的地址是否命中所述地址表中的任一表项;
其中,地址表中保存了所有缓存在cache中的数据的缓存地址。当处理器发出请求读操作的指令时,首先将处理器发出的指令中的地址信号与地址表中的缓存地址进行比较,确定地址表中是否缓存有请求的地址信号。该指令可能为load指令。
S102,若命中,则查询有效位表,确定命中的所述表项是否为有效状态,若是,则从关联表中获取所述请求数据所对应的数据表中的数据行地址,根据获取的数据行地址将所述请求数据从所述数据表中取出;其中,所述关联表中存储有地址表中的地址与所述数据行地址之间的对应关系;
其中,地址表中的每个地址行为有效状态或空闲状态,有效位表中记录地址表中每个地址行所处的状态。数据表为数据保存区,其中保存着缓存在cache中的数据。关联表中记录着地址表中的地址行和数据表中的数据行之间的映射关系。
如果地址表中缓存了请求的地址信号,则查询有效位表,判断地址信号在有效位表中是否为有效状态。如果地址信号为有效状态,则将地址信号所命中的地址行的缓存地址,即地址1发送至关联表中进行查找,获取地址行对应的数据表中数据行的表地址,即地址2。
S103,若所述处理器所请求的数据未命中所述地址表,或命中的所述表项为无效状态,则cache将发出缺失信号,迫使所述处理器从主存中获取请求读操作对应的数据。
黑名单中记录着向所述cache发出的当前未提交的指令所修改的数据行。未提交的指令所修改的数据行可能为泄露的处理器内核数据。如果某条指令对数据表中的数据行进行了修改,则该数据行将会记录在黑名单中。后期,如果该指令得到提交,则将记录在黑名单中的数据行剔除,否则该指令将会保留在黑名单中。判断地址2的数据行在黑名单中是否存在,若存在,则黑名单将会屏蔽缓存的数据行,处理器从主存中获取所请求的数据。
本实施例通过动态映射机制在指令中的地址信号命中地址表中的缓存地址时,若缓存地址有效,判断关联表中缓存地址对应的数据行是否被记录在黑名单中,若记录在黑名单中则从主存中获取请求的数据,从而实现对未能提交的指令所污染的cache中的数据行进行隐藏,抵抗由于cache投机访问而导致的处理器信息泄露,提高了处理器的安全性,同时降低了处理器的性能损失。
在上述实施例的基础上,本实施例中所述地址表有两个;其中,两个所述地址表中均存储有缓存在所述cache中每个数据的地址;每个所述数据的地址在一个所述地址表中的状态为有效状态,在另一个所述地址表中的状态为无效状态,并将两个所述地址表中地址的状态存储在有效位表中。
具体地,本实施例采用两个相同结构的地址表作为存储缓存地址的结构。每个地址表的表项中记录着每个缓存在cache中数据的缓存地址。将两个地址表之间相同的缓存地址作为一组。有效位表中记录了当前两个地址表的每组中有效状态的缓存地址。优选地,为了节省芯片面积,有效位表中具有与缓存地址数量相等的寄存器,每一个寄存器中保存对应缓存地址的状态。通过查询有效位表中相应位置的寄存器的值,确定当前有效状态的缓存地址所在的地址行。
在上述实施例的基础上,本实施例中将所述处理器所请求数据的地址与地址表中缓存在所述cache中数据的地址进行比较,确定所述请求数据的地址是否命中所述地址表中的任一表项的步骤还包括:若未命中,则查询所述有效位表,获取所述地址表中所有为无效状态的地址;从两个所述地址表的所有无效状态的地址中选择一个地址存储所述请求数据的地址;从所述数据表中选择一个空闲的数据行地址存储所述请求数据的地址对应的数据;将选择的所述请求数据在地址表中的地址和选择的所述数据行地址之间的对应关系存储在所述关联表中。
具体地,当地址信号在地址表中不存在时,即所需要读取的内存地址数据在cache中没有被缓存,则发生cache缺失。当一条指令在执行时,无论其是否为投机执行,如果发生了缺失,需要对cache中缓存的数据进行替换。首先,查询有效位表,获取地址表中处于无效状态的缓存地址。通过替换决策模块获得无效状态的缓存地址中最适合替换的地址。通过替换决策模块计算出数据表中最适合替换的数据行,并将该数据行记录在黑名单中。然后更新关联表,在关联表中记录被替换的缓存地址与数据行之间的对应关系。当指令得到提交时,从黑名单中剔除所记录的数据行,同时更新有效位表,将被替换的缓存地址置为有效状态。其中,替换策略模块是在cache发生缺失时,计算相应的缓存地址行作为替换的地址行,计算相应的数据行作为替换的数据行。
数据表是数据保存区,其中保存着需要缓存的数据,其表项的数据比每个地址表中的表项略多,多余的部分作为cache数据的备份区,用于cache数据的备份,即空闲的数据行。在发生替换时,替换策略模块计算需要替换的地址行,并查询有效位表,选择正确的地址行,并将选择的地址行中的缓存地址送到组播选择器中。此时,原本记录在地址表中的地址行将不会改变。组别选择器根据有效位表中所记录的缓存地址的有效状态,从两个地址表中选出真正有效缓存数据的数据地址,然后将同一组的另外一个表项作为存储地址信号的表项。本实施例中的数据表并不是将原有的数据表的空闲数据行进行替换,而是选择空闲的数据行用于存储数据。
由于指令尚未提交,指令的地址信号保持在对应无效状态的缓存地址中,此时不会修改有效位表中的状态。
本实施例能够根据指令提交的结果改变cache中缓存地址的状态,记录未提交的指令,平衡由于投机指令访问而造成的投机威胁,从而提升处理器的安全性能。
在上述实施例的基础上,从所述数据表选择一个空闲的数据行地址存储所述请求数据的地址对应的数据的步骤之后还包括:当所述指令提交时,将选择的无效状态的地址在其所在的地址表中所对应的有效位表中的状态更新为有效状态,并将选择的所述地址在另一个所述地址表中所对应的有效位表的状态更新为无效状态。
具体地,当该指令得到了提交,则说明处理器确认了该指令为正确的指令,因此,可以对有效位表中缓存地址的状态进行修改,将一个地址表中原来的有效状态变为无效状态,另一个地址表中原来的无效状态变为有效状态,实现缓存地址状态的改变。
本实施例通过对每条被执行的指令进行跟踪与记录,检测其是否被提交。当一条指令未被提交时,其对cache的改变将被消除;当一条指令得到提交时,其对cache的改变将会被确认。后续,如果有相关的指令继续访问被记录在黑名单中的数据行,将会引起内核的中断,从而保证了cache无法被标记,进而有效地防止了以投机指令执行而产生攻击威胁,从而有效地制止由于指令的投机执行而给cache状态带来的改变,从而实现抵抗Spectre和meltdown攻击。
在上述各实施例的基础上,本实施例中从关联表中获取所述请求数据所对应的数据表中的数据行地址,根据获取的数据行地址将所述请求数据从所述数据表中取出的步骤之后还包括:基于验证表查询所述请求数据的地址对应的数据行地址是否与所述请求数据的地址对应;若所述请求数据的地址对应的数据行地址在当前未提交的指令所修改的数据行的地址中不存在,且所述验证表中请求数据的地址对应的数据行地址与所述请求数据的地址对应,则从所述数据表中读出所述请求数据的地址对应的数据行地址中的数据,并将读出的数据返回给所述处理器。
其中,验证表记录了每条数据行所对应的地址行。当地址信号命中地址表中的某条地址行时,通过查询关联表获得该地址行所映射的数据行,此时仍需要查询验证表以确保该数据行存储的数据是对应着该地址行,实现数据的双向验证,防止缓存数据出错。在既满足地址信号对应的数据行不位于黑名单中,又满足验证表的验证通过的情况下,数据表中的数据才会被读出,同时发出缓存命中信号,数据表会将其数据传出,并通知处理器读取相应数据。
当cache接受到写操作的指令时,被写的数据行会立即写入写回队列中,写回缓存按照先进先出的规则,将数据写回至主存中。其中,写回缓存队列中暂存着需要写回至主存的数据,保留的是cache中的脏数据。当缓存收到写信号时,会将受影响的缓存行写入至写回缓存队列中。处理器cache的架构图如图2所示。
在本发明的另一个实施例中提供一种基于动态映射机制的cache防护装置,该装置用于实现前述各实施例中的方法。因此,在前述基于动态映射机制的cache防护方法的各实施例中的描述和定义,可以用于本发明实施例中各个执行模块的理解。图3为本发明实施例提供的基于动态映射机制的cache防护装置整体结构示意图,该装置包括确定模块301、获取模块302和防护模块303,其中:
确定模块,用于当处理器向cache发出请求读操作的指令时,将所述处理器所请求数据的地址与地址表中缓存在所述cache中数据的地址进行比较,确定所述请求数据的地址是否命中所述地址表中的任一表项;
其中,地址表中保存了所有缓存在cache中的数据的缓存地址。当处理器发出请求读操作的指令时,确定模块将处理器发出的指令中的地址信号与地址表中的缓存地址进行比较,确定地址表中是否缓存有请求的地址信号。该指令可能为load指令。
获取模块,用于若命中,则查询有效位表,确定命中的所述表项是否为有效状态,若是,则从关联表中获取所述请求数据所对应的数据表中的数据行地址,根据获取的数据行地址将所述请求数据从所述数据表中取出;其中,所述关联表中存储有地址表中的地址与所述数据行地址之间的对应关系;
其中,地址表中的每个地址行为有效状态或空闲状态,有效位表中记录地址表中每个地址行所处的状态。数据表为数据保存区,其中保存着缓存在cache中的数据。关联表中记录着地址表中的地址行和数据表中的数据行之间的映射关系。
获取模块在地址表中缓存了请求的地址信号时,则查询有效位表,判断地址信号在有效位表中是否为有效状态。如果地址信号为有效状态,则将地址信号所命中的地址行的缓存地址,即地址1发送至关联表中进行查找,获取地址行对应的数据表中数据行的表地址,即地址2。
防护模块,用于若所述处理器所请求的数据未命中所述地址表,或命中的所述表项为无效状态,则cache将发出缺失信号,迫使所述处理器从主存中获取请求读操作对应的数据。
黑名单中记录着向所述cache发出的当前未提交的指令所修改的数据行。未提交的指令所修改的数据行可能为泄露的处理器内核数据。如果某条指令对数据表中的数据行进行了修改,则该数据行将会记录在黑名单中。后期,如果该指令得到提交,则将记录在黑名单中的数据行剔除,否则该指令将会保留在黑名单中。防护模块,判断地址2的数据行在黑名单中是否存在,若存在,则黑名单将会屏蔽缓存的数据行,处理器从主存中获取所请求的数据。
本实施例通过动态映射机制在指令中的地址信号命中地址表中的缓存地址时,若缓存地址有效,判断关联表中缓存地址对应的数据行是否被记录在黑名单中,若记录在黑名单中则从主存中获取请求的数据,从而实现对未能提交的指令所污染的cache中的数据行进行隐藏,抵抗由于cache投机访问而导致的处理器信息泄露,提高了处理器的安全性,同时降低了处理器的性能损失。
在上述实施例的基础上,本实施例中所述地址表有两个;其中,两个所述地址表中均存储有缓存在所述cache中每个数据的地址;每个所述数据的地址在一个所述地址表中的状态为有效状态,在另一个所述地址表中的状态为无效状态,并将两个所述地址表中地址的状态存储在有效位表中。
在上述实施例的基础上,本实施例中还包括替换模块用于:若未命中,则查询所述有效位表,获取所述地址表中所有为无效状态的地址;从两个所述地址表的所有无效状态的地址中选择一个地址存储所述请求数据的地址;从所述数据表中选择一个空闲的数据行地址存储所述请求数据的地址对应的数据;将选择的所述请求数据在地址表中的地址和选择的所述数据行地址之间的对应关系存储在所述关联表中。
在上述实施例的基础上,本实施例中还包括更新模块,用于:当所述指令提交时,将选择的无效状态的地址在其所在的地址表中所对应的有效位表中的状态更新为有效状态,并将选择的所述地址在另一个所述地址表中所对应的有效位表的状态更新为无效状态。
在上述各实施例的基础上,本实施例中还包括读取模块,用于:基于验证表查询所述请求数据的地址对应的数据行地址是否与所述请求数据的地址对应;若所述请求数据的地址对应的数据行地址在当前未提交的指令所修改的数据行的地址中不存在,且所述验证表中请求数据的地址对应的数据行地址与所述请求数据的地址对应,则从所述数据表中读出所述请求数据的地址对应的数据行地址中的数据,并将读出的数据返回给所述处理器。
图4示例了一种电子设备的实体结构示意图,如图4所示,该电子设备可以包括:处理器(processor)401、通信接口(Communications Interface)402、存储器(memory)403和通信总线404,其中,处理器401,通信接口402,存储器403通过通信总线404完成相互间的通信。处理器401可以调用存储器403中的逻辑指令,以执行如下方法:当处理器向cache发出请求读操作的指令时,将处理器请求数据的地址与地址表中缓存在cache中数据的缓存地址进行比较,确定请求数据的地址是否命中地址表中的某一个表项;若命中,则查询该表项所对应的有效位表,确定该表项是否为有效状态,若是,则从关联表中获取请求数据所对应的数据行地址,从数据表中取出请求的数据;若未命中或命中的表项为无效状态,则cache将发出缺失信号,迫使处理器从主存中获取请求读操作对应的数据。
此外,上述的存储器403中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
本实施例提供一种非暂态计算机可读存储介质,非暂态计算机可读存储介质存储计算机指令,计算机指令使计算机执行上述各方法实施例所提供的方法,例如包括:当处理器向cache发出请求读操作的指令时,将处理器请求数据的地址与地址表中缓存在cache中数据的缓存地址进行比较,确定请求数据的地址是否命中地址表中的某一个表项;若命中,则查询该表项所对应的有效位表,确定该表项是否为有效状态,若是,则从关联表中获取请求数据所对应的数据行地址,从数据表中取出请求的数据;若未命中或命中的表项为无效状态,则cache将发出缺失信号,迫使处理器从主存中获取请求读操作对应的数据。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (10)
1.一种基于动态映射机制的cache防护方法,其特征在于,包括:
当处理器向cache发出请求读操作的指令时,将所述处理器所请求数据的地址与地址表中缓存在所述cache中数据的地址进行比较,确定所述请求数据的地址是否命中所述地址表中的任一表项;
若命中,则查询有效位表,确定命中的所述表项是否为有效状态,若是,则从关联表中获取所述请求数据所对应的数据表中的数据行地址,根据获取的数据行地址将所述请求数据从所述数据表中取出;其中,所述关联表中存储有地址表中的地址与所述数据行地址之间的对应关系;
若所述处理器所请求的数据未命中所述地址表,或命中的所述表项为无效状态,则所述cache发出缺失信号,迫使所述处理器从主存中获取请求读操作对应的数据。
2.根据权利要求1所述的基于动态映射机制的cache防护方法,其特征在于,所述地址表有两个;
其中,两个所述地址表中均存储有缓存在所述cache中每个数据的地址;
每个所述数据的地址在一个所述地址表中的状态为有效状态,在另一个所述地址表中的状态为无效状态,并将两个所述地址表中地址的状态存储在有效位表中。
3.根据权利要求2所述的基于动态映射机制的cache防护方法,其特征在于,将所述处理器所请求数据的地址与地址表中缓存在所述cache中数据的地址进行比较,确定所述请求数据的地址是否命中所述地址表中的任一表项的步骤还包括:
若未命中,则查询所述有效位表,获取所述地址表中所有为无效状态的地址;
从两个所述地址表的所有无效状态的地址中选择一个地址存储所述请求数据的地址;
从所述数据表中选择一个空闲的数据行地址存储所述请求数据的地址对应的数据;
将选择的所述请求数据在地址表中的地址和选择的所述数据行地址之间的对应关系存储在所述关联表中。
4.根据权利要求3所述的基于动态映射机制的cache防护方法,其特征在于,从所述数据表选择一个空闲的数据行地址存储所述请求数据的地址对应的数据的步骤之后还包括:
当所述指令提交时,将选择的无效状态的地址在其所在的地址表中所对应的有效位表的状态更新为有效状态,并将选择的所述地址在另一个所述地址表中所对应的有效位表的状态更新为无效状态。
5.根据权利要求1-4任一所述的基于动态映射机制的cache防护方法,其特征在于,从关联表中获取所述请求数据所对应的数据表中的数据行地址,根据获取的数据行地址将所述请求数据从所述数据表中取出的步骤之后还包括:
基于验证表查询所述请求数据的地址对应的数据行地址是否与所述请求数据的地址对应;
若所述请求数据的地址对应的数据行地址在当前未提交的指令所修改的数据行的地址中不存在,且所述验证表中请求数据的地址对应的数据行地址与所述请求数据的地址对应,则从所述数据表中读出所述请求数据的地址对应的数据行地址中的数据,并将读出的数据返回给所述处理器。
6.一种基于动态映射机制的cache防护装置,其特征在于,包括:
确定模块,用于当处理器向cache发出请求读操作的指令时,将所述处理器所请求数据的地址与地址表中缓存在所述cache中数据的地址进行比较,确定所述请求数据的地址是否命中所述地址表中的任一表项;
获取模块,用于若命中,则查询有效位表,确定命中的所述表项是否为有效状态,若是,则从关联表中获取所述请求数据所对应的数据表中的数据行地址,根据获取的数据行地址将所述请求数据从所述数据表中取出;其中,所述关联表中存储有地址表中的地址与所述数据行地址之间的对应关系;
防护模块,用于若所述处理器所请求的数据未命中所述地址表,或命中的所述表项为无效状态,则所述cache发出缺失信号,迫使所述处理器从主存中获取请求读操作对应的数据。
7.根据权利要求6所述的基于动态映射机制的cache防护装置,其特征在于,所述地址表有两个;
其中,两个所述地址表中均存储有缓存在所述cache中每个数据的地址;
每个所述数据的地址在一个所述地址表中的状态为有效状态,在另一个所述地址表中的状态为无效状态,并将两个所述地址表中地址的状态存储在有效位表中。
8.根据权利要求7所述的基于动态映射机制的cache防护装置,其特征在于,还包括替换模块用于:
若未命中,则查询所述有效位表,获取所述地址表中所有为无效状态的地址;
从两个所述地址表的所有无效状态的地址中选择一个地址存储所述请求数据的地址;
从所述数据表中选择一个空闲的数据行地址存储所述请求数据的地址对应的数据;
将选择的所述请求数据在地址表中的地址和选择的所述数据行地址之间的对应关系存储在所述关联表中。
9.根据权利要求8所述的基于动态映射机制的cache防护装置,其特征在于,还包括更新模块,用于:
当所述指令提交时,将选择的无效状态的地址在其所在的地址表中所对应的有效位表的状态更新为有效状态,并将选择的所述地址在另一个所述地址表中所对应的有效位表的状态更新为无效状态。
10.根据权利要求6-9任一所述的基于动态映射机制的cache防护装置,其特征在于,还包括读取模块,用于:
基于验证表查询所述请求数据的地址对应的数据行地址是否与所述请求数据的地址对应;
若所述请求数据的地址对应的数据行地址在当前未提交的指令所修改的数据行的地址中不存在,且所述验证表中请求数据的地址对应的数据行地址与所述请求数据的地址对应,则从所述数据表中读出所述请求数据的地址对应的数据行地址中的数据,并将读出的数据返回给所述处理器。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010113142.4A CN111414321B (zh) | 2020-02-24 | 2020-02-24 | 一种基于动态映射机制的cache防护方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010113142.4A CN111414321B (zh) | 2020-02-24 | 2020-02-24 | 一种基于动态映射机制的cache防护方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111414321A true CN111414321A (zh) | 2020-07-14 |
CN111414321B CN111414321B (zh) | 2022-07-15 |
Family
ID=71490950
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010113142.4A Active CN111414321B (zh) | 2020-02-24 | 2020-02-24 | 一种基于动态映射机制的cache防护方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111414321B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113641596A (zh) * | 2021-10-18 | 2021-11-12 | 北京壁仞科技开发有限公司 | 缓存管理方法、缓存管理装置、处理器 |
TWI783582B (zh) * | 2020-11-13 | 2022-11-11 | 美商聖圖爾科技公司 | 利用間接有效表的Spectre修復的方法和微處理器 |
Citations (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030204742A1 (en) * | 2002-04-29 | 2003-10-30 | Microsoft Corporation | Peer-to-peer name resolution protocol (PNRP) security infrastructure and method |
CN101093465A (zh) * | 2006-06-23 | 2007-12-26 | 株式会社东芝 | 访问控制器和访问控制方法 |
US20120159103A1 (en) * | 2010-12-21 | 2012-06-21 | Microsoft Corporation | System and method for providing stealth memory |
CN103954781A (zh) * | 2014-04-02 | 2014-07-30 | 中国农业大学 | 基于便携通讯设备的畜肉品质轻便无损检测仪 |
CN104461758A (zh) * | 2014-11-10 | 2015-03-25 | 中国航天科技集团公司第九研究院第七七一研究所 | 一种容忍cache缺失快速清空流水线的异常处理方法及其处理结构 |
US20150356026A1 (en) * | 2008-12-08 | 2015-12-10 | Teleputers, Llc | Cache Memory Having Enhanced Performance and Security Features |
CN107771335A (zh) * | 2015-06-16 | 2018-03-06 | 微软技术许可有限责任公司 | 受保护区域 |
CN108132893A (zh) * | 2017-12-06 | 2018-06-08 | 中国航空工业集团公司西安航空计算技术研究所 | 一种支持流水的常量Cache |
CN109508536A (zh) * | 2017-09-15 | 2019-03-22 | 华为技术有限公司 | 一种篡改程序流攻击的检测方法和装置 |
CN109739696A (zh) * | 2018-12-13 | 2019-05-10 | 北京计算机技术及应用研究所 | 一种双控存储阵列固态硬盘缓存加速方法 |
CN109918131A (zh) * | 2019-03-11 | 2019-06-21 | 中电海康无锡科技有限公司 | 一种基于非阻塞指令cache的指令读取方法 |
CN110018811A (zh) * | 2019-04-15 | 2019-07-16 | 北京智芯微电子科技有限公司 | Cache数据处理方法以及Cache |
CN110232031A (zh) * | 2018-03-05 | 2019-09-13 | 三星电子株式会社 | 保护缓存免受侧信道攻击的方法、系统和存储介质 |
CN110659499A (zh) * | 2018-06-29 | 2020-01-07 | 英特尔公司 | 用于高速缓存侧信道攻击检测和缓解的技术 |
-
2020
- 2020-02-24 CN CN202010113142.4A patent/CN111414321B/zh active Active
Patent Citations (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030204742A1 (en) * | 2002-04-29 | 2003-10-30 | Microsoft Corporation | Peer-to-peer name resolution protocol (PNRP) security infrastructure and method |
CN101093465A (zh) * | 2006-06-23 | 2007-12-26 | 株式会社东芝 | 访问控制器和访问控制方法 |
US20150356026A1 (en) * | 2008-12-08 | 2015-12-10 | Teleputers, Llc | Cache Memory Having Enhanced Performance and Security Features |
US20120159103A1 (en) * | 2010-12-21 | 2012-06-21 | Microsoft Corporation | System and method for providing stealth memory |
CN103954781A (zh) * | 2014-04-02 | 2014-07-30 | 中国农业大学 | 基于便携通讯设备的畜肉品质轻便无损检测仪 |
CN104461758A (zh) * | 2014-11-10 | 2015-03-25 | 中国航天科技集团公司第九研究院第七七一研究所 | 一种容忍cache缺失快速清空流水线的异常处理方法及其处理结构 |
CN107771335A (zh) * | 2015-06-16 | 2018-03-06 | 微软技术许可有限责任公司 | 受保护区域 |
CN109508536A (zh) * | 2017-09-15 | 2019-03-22 | 华为技术有限公司 | 一种篡改程序流攻击的检测方法和装置 |
CN108132893A (zh) * | 2017-12-06 | 2018-06-08 | 中国航空工业集团公司西安航空计算技术研究所 | 一种支持流水的常量Cache |
CN110232031A (zh) * | 2018-03-05 | 2019-09-13 | 三星电子株式会社 | 保护缓存免受侧信道攻击的方法、系统和存储介质 |
CN110659499A (zh) * | 2018-06-29 | 2020-01-07 | 英特尔公司 | 用于高速缓存侧信道攻击检测和缓解的技术 |
CN109739696A (zh) * | 2018-12-13 | 2019-05-10 | 北京计算机技术及应用研究所 | 一种双控存储阵列固态硬盘缓存加速方法 |
CN109918131A (zh) * | 2019-03-11 | 2019-06-21 | 中电海康无锡科技有限公司 | 一种基于非阻塞指令cache的指令读取方法 |
CN110018811A (zh) * | 2019-04-15 | 2019-07-16 | 北京智芯微电子科技有限公司 | Cache数据处理方法以及Cache |
Non-Patent Citations (3)
Title |
---|
PEINAN LI .ETC: "Conditional Speculation: An Effective Approach to Safeguard Out-of-Order Execution Against Spectre Attacks", 《2019 IEEE INTERNATIONAL SYMPOSIUM ON HIGH PERFORMANCE COMPUTER ARCHITECTURE (HPCA)》 * |
张随欲等: "针对SoC系统的Cache攻击方法及建模分析", 《计算机研究与发展》 * |
郭林等: "基于切片技术的远程缓冲区溢出攻击检测模型", 《计算机科学》 * |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI783582B (zh) * | 2020-11-13 | 2022-11-11 | 美商聖圖爾科技公司 | 利用間接有效表的Spectre修復的方法和微處理器 |
US11500643B2 (en) | 2020-11-13 | 2022-11-15 | Centaur Technology, Inc. | Spectre fixes with indirect valid table |
CN113641596A (zh) * | 2021-10-18 | 2021-11-12 | 北京壁仞科技开发有限公司 | 缓存管理方法、缓存管理装置、处理器 |
Also Published As
Publication number | Publication date |
---|---|
CN111414321B (zh) | 2022-07-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11314647B2 (en) | Methods and systems for managing synonyms in virtually indexed physically tagged caches | |
US10248572B2 (en) | Apparatus and method for operating a virtually indexed physically tagged cache | |
US8782348B2 (en) | Microprocessor cache line evict array | |
US6338115B1 (en) | Advanced read cache management | |
US8190951B2 (en) | Handling of errors in a data processing apparatus having a cache storage and a replicated address storage | |
CN110297787B (zh) | I/o设备访问内存的方法、装置及设备 | |
US8291259B2 (en) | Delete of cache line with correctable error | |
US6286080B1 (en) | Advanced read cache emulation | |
US9772943B1 (en) | Managing synonyms in virtual-address caches | |
US10545879B2 (en) | Apparatus and method for handling access requests | |
US7937536B2 (en) | Handling direct memory accesses | |
CN111414321B (zh) | 一种基于动态映射机制的cache防护方法及装置 | |
US9003130B2 (en) | Multi-core processing device with invalidation cache tags and methods | |
US5809526A (en) | Data processing system and method for selective invalidation of outdated lines in a second level memory in response to a memory request initiated by a store operation | |
JP4341186B2 (ja) | メモリシステム | |
US10489300B1 (en) | Increasing caching efficiency using cache data patterns | |
CN111124954A (zh) | 一种两级转换旁路缓冲的管理装置及方法 | |
US7325101B1 (en) | Techniques for reducing off-chip cache memory accesses | |
US20030033483A1 (en) | Cache architecture to reduce leakage power consumption | |
CN111274198B (zh) | 一种微架构 | |
CN117331854B (zh) | 缓存处理方法、装置、电子设备及介质 | |
CN117331853B (zh) | 缓存处理方法、装置、电子设备及介质 | |
US11645148B2 (en) | Method and apparatus for caching MTE and/or ECC data | |
US20230280904A1 (en) | Monitoring memory locations to identify whether data stored at the memory locations has been modified | |
CN117472798B (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 |