Document
拖动滑块完成拼图
首页 专利交易 科技果 科技人才 科技服务 国际服务 商标交易 会员权益 IP管家助手 需求市场 关于龙图腾
 /  免费注册
到顶部 到底部
清空 搜索

保护缓存免受侧信道攻击的方法、系统和存储介质 

买专利卖专利找龙图腾,真高效! 查专利查商标用IPTOP,全免费!专利年费监控用IP管家,真方便!

申请/专利权人:三星电子株式会社

摘要:缓存可易受到涉及指令的推测执行的侧信道攻击如,Spectre和Meltdown伤害,以揭露关于攻击者不被允许访问的缓存的信息。访问许可可以存储在缓存中,如,存储在缓存表的条目中或存储在缓存表的区域信息中。可选地,如果访问许可在存储器指令未决时改变,则可重新检查访问许可。可选地,随机索引值可以存储在缓存中,且至少部分用来识别缓存块的存储器位置。可选地,在存储器指令的推测负载中涉及的缓存块可以被标记为推测的。在将推测负载解析为非推测的条件下,缓存块可以被标记为非推测的;且在将推测负载解析为误推测的条件下,可从所述缓存移除所述缓存块。

主权项:1.一种用于访问装置的缓存中的数据的方法,所述方法包括:在缓存区中存储所述缓存中存储的缓存块的访问许可;对于涉及所述缓存块的存储器指令,至少部分基于所述缓存块的所述访问许可,确定是否允许所述存储器指令访问所述缓存块;以及在确定不允许所述存储器指令访问所述缓存块的条件下,抑制改变所述缓存,其中,在确定允许未决存储器指令访问所述缓存块的时间与提交所述未决存储器指令的时间之间改变所述缓存块的所述访问许可的条件下,至少部分基于所述访问许可重新确定是否允许所述未决存储器指令访问所述缓存块。

全文数据:保护缓存免受侧信道攻击的方法、系统和存储介质相关申请的交叉引用本申请要求保护于2018年3月5日提交的美国临时申请No.62638,450的权益。该申请的整个公开内容通过引用并入本文。技术领域本公开涉及用于访问计算机存储器装置中的数据的方法和系统,包括用于改善缓存cache的安全性的机制和技术。背景技术此部分提供关于本公开的不必是现有技术的背景信息。处理器可配备有缓存,其可存储一些高容量存储器如,动态随机访问存储器DRAM中存储的数据和指令的副本。在此,术语“存储器”可用来统指所有现有和未来的存储器实施方式。缓存存储器或简称为“缓存”可根据比其他存储器实施方式小且快的存储器而建立,并且随后可在任何给定时间仅保存主存储器或次级存储装置中存储的数据的一部分的副本。可使用SRAM实现较小的缓存,且可以使用DRAM实现大的缓存。计算机系统的存储器系统可包括许多缓存,且一些计算机系统可包括与主存储器物理上和或逻辑上较近的较大且较慢的缓存本文称为较高级的缓存和与处理器物理上和或逻辑上较近的较小且较快的缓存本文称为较低级的缓存。该配置可被称为缓存层次结构、存储器层次结构或存储器系统。缓存层次结构中的每个级被称为缓存级。发明内容此部分提供对公开内容的总体概述且不是对其整个范围或其所有特征的全面公开。在示例实施例中,提供一种用于访问装置的缓存中的数据的方法,方法包括:在缓存区buffer中存储缓存cache中存储的缓存块的访问许可;对于涉及缓存块的存储器指令,至少部分基于缓存块的访问许可,确定是否允许存储器指令访问缓存块;以及在确定不允许存储器指令访问缓存块的条件下,抑制改变缓存。在示例实施例中,提供一种系统,包括:缓存;和至少一个处理器,其被配置成:在缓存区中存储缓存块的访问许可;对于涉及缓存块的存储器指令,至少部分基于缓存块的访问许可,确定是否允许存储器指令访问缓存块;以及在确定不允许存储器指令访问缓存块的条件下,抑制改变缓存。进一步的适用领域将根据本文提供的说明变得显而易见。此发明内容中的说明和具体示例仅旨在用于说明目的而不旨在限制本公开的范围。附图说明并入说明书中并构成其一部分的附图示出了一个或多个示例实施例,并与说明书一起解释这些示例实施例的至少一些部分。附图不旨在限制本公开的范围。在附图中:图1是示出多处理器系统的示例实施例的框图;图2是包括缓存层次结构的单处理器系统的示例实施例的框图;图3示出包括组相联缓存和组相联数据转换后备缓存区的两级缓存层次结构的示例实施例;图4是示出包括两级缓存层次结构和两级缓存块地址后备缓存区CLB层次结构的系统的示例实施例的框图,其中,第一级被虚拟访问而第二级被物理访问;图5是示出包括连接到两级缓存层次结构和两级缓存块后备缓存区层次结构的两个CPU的系统的示例实施例的框图;图6是示出例示图4的CLB1的扩展的实施方式的示例实施例的框图;和图7是示出例示图3的TLB的扩展的实施方式的示例实施例的框图。具体实施方式示例实施例的以下说明参考附图。不同附图中的相同附图标记指代相同或类似特征。以下具体描述不限制本发明。然而,由随附权利要求限定本发明的范围。为了简单起见,关于缓存层次结构的术语和结构以及用于执行这种层次结构中的查找的方法,讨论以下示例实施例中的一些。然而,示例实施例不限于这些配置,而是可扩展到在下面讨论的其他布置。整个说明书对“示例实施例”或“多个示例实施例”的参考旨在意为可在所公开的主题的至少一个示例实施例中包括特征、结构或特性。因此,整个说明书中各位置出现的短语“在示例实施例中”或“在多个示例实施例中”不一定指代相同的一个或多个实施例。进一步的,可在一个或多个示例实施例中以任何适当的方式组合特征、结构或特性。现在将参考附图更全面的描述示例实施例。图1描绘了示例计算机系统,其中,每个CPU101被分配有其自己的第一级专用缓存102L1缓存,其中,专用缓存是其数据单元的空间可仅由对缓存是本地的CPU和或与缓存在相同节点中其中,缓存专用于该节点的CPU的活动访问的缓存。在此示例计算机系统中,第二级缓存103由所有CPU101共享且可包含由所有CPU101访问的数据和指令。缓存103是共享的缓存,因为数据单元的空间可由任何CPU101的活动访问。缓存103还是共享的缓存,因为每个数据单元可仅存在于一个共享的副本中,而每个专用缓存可具有复制的副本。主存储器105还存储可由所有CPU101访问的指令和数据。使用物理地址或简称为PA访问主存储器105,同时CPU101生成的地址被识别为虚拟地址或简称为VA。具有若干CPU和若干专用缓存的计算机系统如,图1中所示的示例计算机系统可以以下机制为特征:该机制用于快速地在缓存之一中找到请求的数据单元和或用于将在不同节点中存储的数据的多个副本保持为一致。在图1的示例计算机系统中,如果CPU101访问在磁盘104上存储的数据,则虚拟存储器系统图1中未示出将识别为页面的数据块从磁盘104移动到存储器105并创建从对应于该页面的虚拟地址到物理地址的转换。被识别为“转换后备缓存区”或简称为TLB的特殊类型的转换缓存图1中未示出缓存从虚拟页面到物理页面的转换映射。虚拟存储器系统可被视为缓存系统,其将位于磁盘104中的数据的一部分存储在存储器105中。图2示出图1的缓存组织的更具体的示图,其中,CPU204被示出为包含若干类似缓存结构如,指令TLBITLB,201和数据TLBDTLB,205和CPU核202。第一级缓存102被示出为包括介于CPU204和第二级以及潜在的更高级缓存207之间的指令缓存200L1ICACHE和数据缓存206L1DCACHE。图2还示出连接到缓存层次结构的高容量的存储器208。在CPU204请求存在于缓存中的数据称为缓存命中时,相比于对不存在于缓存中的数据的访问称为缓存未命中,该请求可被更快地服务。假设两应用具有类似属性,相比于展现更多缓存未命中的应用,在经历较少缓存未命中的CPU204上运行的应用可更快地执行和或消耗更少的能量。因此,提供减少缓存未命中和或使缓存命中和缓存未命中相对于其访问延迟和或这种存储器事务所消耗的能量而言有效的计算机系统是有利的。数据可以比处理器的字长大的固定块的形式存储在缓存中,称为缓存块。示例实施例的特征可为如32、64和128字节的缓存块大小以及更大和或更小的缓存块大小和或可变的缓存块大小。在示例实施例中,可以每个数据字被静态地映射为存在于一个特定的缓存块中的方式组织存储器208中的数据放置。每个缓存可具有随机索引值,其识别缓存的每个缓存块可存在于其中的部分,称为组set。该组可以包含用于同时保存一个或多个缓存块的空间。该组可以保存的缓存块的数量被称为其关联性associativity。在组相联缓存中,所有组的关联性相同。关联性还可在组之间变化。组中的可保存缓存块的空间中的每一个被称为路way。为了确定在每个组中存储的每个缓存块的身份,缓存中的缓存块均具有与它们相关联的某一标识符,如,地址标签ATAG。当在缓存中寻找特定缓存块时,缓存块的地址可用来确定缓存块可存在于其中的缓存的组。对应组的缓存块的地址标签与用于识别缓存块的地址的标签部分例如参见在图3中描绘且在下面描述的地址标签ATAG比较以确定期望的缓存块是否存在于缓存中,如果是,则确定其存在于哪个路中例如,其存在于组中可保存缓存块的空间中的哪个中。在示例实施例中,这种ADDR地址标签的大小可相当大且可在30-40比特其可以是缓存块的大小的6-10%的范围中。在示例实施例中,缓存可具有用于确定哪个缓存块保持在组中以及哪个缓存块被逐出还称为替换从而为被引入组中的新的缓存块让出空间的嵌入策略,还称为其替换策略。替换的缓存块被称为受害者victim或替换的缓存块。可与缓存存储器结合使用的替换策略包括但不限于最近最少使用LRU、伪LRU以及随机替换策略。在包容型缓存层次结构中,存在于一个缓存级中的数据的块例如,缓存块例如,L1缓存中的数据的块的副本还可存在于较高的缓存级中在此,较高指的是高于第一级的缓存级,例如,存在于L2和L3缓存中。独占型缓存层次结构仅具有存在于整个缓存层次结构中的数据的块例如,缓存块的一个副本,而非包容型缓存层次结构可具有两种策略的混合。在独占型和非包容型缓存层次结构的示例实施例中,缓存块在从给定缓存级逐出时可存储在下一个较高的缓存级中。现在描述用于识别在示例缓存层次结构内的特定缓存位置的一些技术,如在图1和图2中所示的。图3示出计算机系统节点的组织的示例,该计算机系统节点包含CPU核301、数据转换后备缓存区DTLB303、L1缓存307和L2缓存311,L2缓存311以具有缓存条目为特征,缓存条目包括ATAG312和DATA数据313。CPU核301生成包含虚拟地址302VADDR的存储器请求,虚拟地址302用来执行DTLB303中的关联查找。在该示例中,虚拟地址302被分成三个部分:P-OFFSET页面偏移,例如,包括低级比特、TAG标签和INDEX索引。虚拟地址302的INDEX部分用来识别DTLB303内的可存储地址转换的组。在此示例中使用的所示DTLB303具有两路关联组织,其示出所识别的组的两个条目。每个条目包括地址标签ATAG304和物理页框PPF305。虚拟地址302的TAG部分与所识别的组的每个条目的ATAG304进行比较。逻辑318确定是否存在任一条目的匹配,且如果存在,就控制复用器MUX306选择对应的PPF305。通过将MUX306选择的PPF305与虚拟地址302的P-OFFSET部分并置,组成物理地址PADDR316。替代地,如果所识别的组的条目中的任一个都不与虚拟地址302的TAG部分匹配,则执行TLB填充操作且对应的转换条目被引入DTLB303。PADDR316用来执行L1缓存307中的查找。更具体地,PADDR316的INDEX部分用来识别其中可存储包含请求的数据的缓存块的组。L1索引可包含与DTLB索引不同的比特。所描绘的L1缓存307具有2路关联组织,其具有在所识别的组中的两个条目。每个条目包括对应的缓存块的地址标签ATAG308和数据309。PADDR316的TAG部分与所识别的组的每个条目的ATAG进行比较。逻辑319确定是否存在任一条目的匹配,且控制MUX310来选择对应的数据并将数据返回315到CPU核301。如果条目中的任一个都不匹配由L1MISSL1未命中317描绘,则通过提供给第三复用器MUX314的逻辑320执行L2缓存311中的查找,该MUX314将数据返回315到CPU核301。尽管针对L2缓存查找将PADDR316划分成INDEX部分和TAG部分可不同于针对L1缓存查找进行的划分,但L2缓存查找的剩余步骤可与针对L1缓存中的查找执行的步骤类似。如果确定了L2缓存中的未命中,则可执行在较高级的缓存中的新的查找或对存储器的访问。如果L1缓存使用的PADDR316的INDEX部分完全由P_OFFSET比特组成,则可在来自MUX306的PPF信息可用之前开始对L1缓存307的访问。这可被称为虚拟索引的物理标记的缓存VIPT。L2和更高级的缓存可包含比L1缓存更大数量的组,且TLB可转换一些地址比特以用做索引比特。在示例实施例中,均具有类似于图3中描绘的存储器层次结构的若干“节点”可连接在一起以形成一致的多处理器系统。在图1中所示的多处理器的示例实施例中,每个CPU具有其自己的专用L1缓存。多处理器配置可使对请求的数据所存在的位置进行定位的任务复杂化,因为其可不足以搜索下一个更高缓存级中的数据。用于搜索其他节点的缓存以及用于使不同节点中存储的数据的多个副本一致的机制用来执行那些任务。图4呈现了包括无标签的缓存的示例实施例,无标签的缓存可依赖与匹配缓存表条目CTE有时称为区域位置条目的请求的缓存块对应的位置信息LI有时称为缓存块指针CP来指示请求的缓存块存在于哪个缓存中以及在该缓存的哪个位置中。这将使实施例在适当的缓存处执行直接缓存查找。例如,图4的示例系统示出了在示例多处理器系统中的无标签的节点,其中,位置信息可用来区分L1缓存和L2缓存。位置信息还可用来区分在示例多处理器系统的剩余部分中存在的其他缓存图4中未示出。还可能够识别其中存储请求的数据的缓存内的相关联的路。图4中示出的示例无标签的节点可连接到具有组相联缓存的两级缓存层次结构和CPU其可包含一个或多个缓存,在此描绘为L0的示例多处理器系统中的其他节点,其中,CPU401生成地址ADDR402。在示例实施例中,ADDR402为VA。在另一示例实施例中,ADDR402为PA。图4还示出了组相联CLB的两级缓存块地址后备缓存区CLB层次结构,其中,利用ADDR索引CLB1410和CLB2420。CLB1中的每个条目至少包括地址标签AT411、缓存位置表CLT412。在示例实施例中,AT411存储虚拟地址的一部分,且在不同实施例中,AT411存储物理地址的一部分。条目可存储附加信息,如,区域信息RI413。CLT存储对应区域的缓存块的位置信息LI还称为微页面micropage。作为示例,图4示出每个区域四个LI。发明人的实验研究表明每个区域8至16个LI如,每个区域8至16个数据单元和或缓存块是划算的且是有效的。位置信息编码多处理器系统内可找到对应的缓存块的位置。例如,位置信息可包含其中可找到数据单元的缓存的身份。位置信息还可包含在该缓存内可找到数据单元的位置,称为其在相关联的缓存中的路信息。替代地,位置信息可包含其中可找到数据单元的节点的身份和或可包含提供关于其位置的信息的符号。例如,符号“MEM”可指示可在存储器中找到数据单元。在示例实施例中,符号“不知道don’tknow”指示对应的数据单元的位置未记录在对应于该区域的CLT中。区域信息RI413存储适用于该区域的属性。例如,这可为该区域的物理地址或其一部分以及一些区域分类信息如,如果该区域仅存在于该CLB而不存在于其他CLB,则为编码。MUX416选择其中AT411匹配ADDR402的TAG部分的CLT,且MUX415基于ADDR402的LI-OFFSET部分选择对应于所请求的缓存块的LI414。如果存储在所选择的LI中的缓存身份对应于L2缓存440,则使用地址402的INDEX部分和位置信息414的一部分形成用于访问L2缓存440中的所请求的数据单元的地址417。在组相联的L2缓存440的示例中,该部分包含与其中存储所请求的数据单元的相关联的路对应的信息。在示例实施例中,使用ADDR402的一部分和区域信息RI413中存储的物理地址中的一些形成L2索引。如果存储在所选择的LI中的缓存身份对应于L1缓存430,则以类似方式形成用于访问L1缓存430中的所请求的数据单元的地址418。对于包括具有相同关联性的组相联缓存的缓存层次结构,每个LI中的比特的数量取决于路的数量和CLB覆盖的缓存层次结构的缓存的数量。对于无效模式“MEM”,可保留一个LI值。在此实施方式中,一个或多个LI比特的数量等于以2为底的一个或多个路的数量的对数加上以2为底的CLB覆盖的缓存级的数量的对数再加一如,log2路的数量+log2级的数量+1。如果不同的缓存级的路的数量变化或如果使用组相联缓存以外的缓存,则其他LI表示可以是可能的。在示例实施例中,LI的大小可远小于地址标签的大小。可使用6个LI比特对在每个级具有16路相关联的缓存的2级缓存层次结构进行编码。图4示出如下示例实施例,其中,L1缓存430和L2缓存440中的每个条目分别具有分别与其缓存块DATA431和441相关联的反向指针BP432和442。在不同实施例中,BP指针指向在CLB2420中或在CLB1410中的其各自相关联的CTE。CLB2420中的每个CTE包含地址标签AT421、CLT422、CLB1指针CIP423和区域信息RI425。如果CLB2条目具有存在于CLB1410的对应的CLT,则其CIP将指向该条目。在该情况下,CLB1410将包含该区域的最新信息。在该情况下,CLB1中的CLE被识别为有源activeCLB条目,而CLB2420中的区域的CLB条目包含无源passitive条目。CLB2420可向一个或多个复用器MUX424提供级和路信息。在示例实施例中,如果CLB1410包含区域的有源条目,则CLB2420可包含该区域的无源条目。在示例实施例中,当可以在CLB1410中找不到匹配的CTE时,在CLB2420中寻找对应的CTE,且该对应的CTE复制到CLB1,而CLB1中的旧的条目复制到CLB2420。这些操作可被称为“溢出和填充”或简称为“溢出填充”,其可在图4中被表示为SPILL和FILL。溢出可发生在包容型缓存将数据单元逐出到下一级从而为新的数据单元让出空间,可从下一缓存级引入填充该新的数据单元。将在不同的CLB级之间执行类似的溢出填充活动,其中,CLB条目在CLB级之间移动,因为CLB级构成包容型层次结构。在示例实施例中,目录DIR在CLB层次结构的根部,最高级CLB进行溢出填充。在示例实施例中,可与溢出填充活动同时地发起对所请求的数据单元的访问。在示例实施例中,CLB层次结构是包容型的,但缓存层次结构L1430、L2440和更高级的缓存不强制包容性。一个或多个缓存可将数据返回450到CPU401。在示例实施例中,多级CLB实施方式的CLB的内容保持与他们管理的多级缓存系统的数据单元的位置一致。在缓存层次结构中移动包括但不限于由来自CPU的对数据单元的请求、数据单元的逐出、预提取活动和一致性活动导致的移动的数据单元导致在CLB的一个或许多中对其对应的位置信息的更新。例如,在图4中,从L2缓存440逐出数据单元441可涉及以下步骤:跟随其相关联的BP442指针以找到可存在于CLB2420中的其对应的CTE;以及更新其对应的位置信息以指向数据单元的新位置如,存储MEM符号。如果对应的CLB2的CLE的CIP指针是有效的,则跟随CIP以找到CLB1410中的其对应的CTE以及更新其与缓存块相关联的位置信息。在示例实施例中,如果存在有效的CIP指针,则不更新CLB2中的条目。在示例实施例中,仅更新有源CLT。在使用无标签的缓存系统如,存储在缓存中的数据单元不具有与其相关联的地址标签的缓存系统的示例实施例中,在CPU401请求位于不同存储装置中的各种缓存块时可发生多种不同类型的事务。例如,图4中描绘的节点可以是由若干这种缓存节点组成的较大多处理器系统的子系统或节点。使许多节点中的缓存的数据保持一致可以涉及缓存一致性协议,其可包括窥探和或基于目录的一致性。一致性协议可向图4中描绘的节点发送一致性请求外部请求EXTERNALREQUEST。这些请求可首先转向CLB2420,其可确定该缓存系统不具有所请求的缓存块CLB2未命中或CLB2命中具有无效inactiveCIP和保持存储器模式值的所请求的缓存块的位置信息。如果是,不涉及关于数据缓存L1和L2称为一致性过滤的进一步动作,但可更新有源CLT中的对应的LI以跟踪与数据单元相关联的新位置。否则,CLB2查找可提供所请求的位置信息CLB2命中和保持缓存块的位置的所请求的缓存块的位置信息或者其可确定CLB1410存储相关联的位置信息CLB2命中和有效CIP。在后一种情况下,CLB1410中的查找可确定所请求的缓存块的位置或缓存块不存在于该缓存子系统中。CLB1中对应的位置信息包含存储器模式。取决于一致性请求例如,无效请求、读取请求或独占性读取请求的属性,一致性协议可对所请求的数据单元执行一些操作且可能改变其状态。有源CLT中的对应的LI还可被更新以跟踪与数据单元相关联的新位置。尽管图4中所示的节点包括两个缓存级,在示例实施例中,也可使用其他数量的级来集合节点,且节点可包含一个以上的CPU。此外,在示例实施例中,节点中缓存级的数量和CLB级的数量可变化。示例实施例还可应用于具有共享由CLB管理的缓存的若干CPU的系统。例如,图5示出了根据示例实施例的由两个CPU节点580和590构建的示例系统,每个CPU节点均在其自己的一级缓存层次结构内具有一个CLB1CLB1A503和CLB1B513和专用L1缓存504和514。图5的示例系统还包含共享的L2缓存523有时被称为末级缓存LLC,其在两个CPU501、511之间被共享。在图5的示例系统中,共享的L2缓存523包括以数据505和反向指针BP506为特征的条目。CLB1513或503中的查找基于由其相应的CPU501、511生成的地址502、512例如使用类似于CLB1410的技术选择单个LI。如由CLB1A503和CLB1B513中的两个所示的CLT条目发起的三个箭头包括517指示的,所选择的LI可识别位置在对应的L1缓存分别为504和514中、在L2缓存523中或在其他节点分别由570和571示出中。在此示例中,CLB1A503识别共享的L2缓存523中的访问的数据505,而CLB1A503识别其访问的数据在其L1缓存514中为505由实线箭头示出。如果其他节点识别为存储数据,则执行在其CLB中的查找以确定所请求的缓存块在其一个或多个专用缓存内的精确位置。减少计算机系统中侧门side-door的存在可以是有利的,该侧门的存在可以允许安全性攻击,如,Spectre、Meltdown以及其他侧信道攻击。处理器不按顺序执行独立指令,企图隐藏由繁忙的功能单元导致的延迟或存储器访问延迟。在示例实施例中,处理器不拖延而会尝试将指令流中的后续操作调度至可用功能单元。在完成时,在重排序缓存区ROB中对指令排队。指令被正式提交且在他们从ROB退出时对系统中的其他处理器和或处理器核外部可见。在所有之前的指令已经退出时,指令可仅从重排序缓存区退出。现在讨论推测执行的一些方面,其可涉及缓存的安全性。参考图1的示例计算机系统,相比于访问缓存和存储器,CPU101可更快地执行指令。为了对此进行补偿,CPU可执行推测工作。推测工作的示例包括开始沿着可以是错误路径的执行路径执行指令、按照与程序顺序不同的顺序执行指令以及在数据的第一请求之前将数据预提取到缓存中。在一些处理架构中,处理器可推测下一指令以引进程序在分支或函数调用的情况下和或应当由负载返回的值。在一些这种情况下,评估第一指令的处理器不能确定是否应当执行程序中的下一指令。这种情况可由将虚拟地址转换成物理地址以及随后检查位置的访问许可时的延迟导致。作为示例,如果程序中的下一指令尝试经由读取操作访问存储器位置A,则确定程序是否有这么做的许可会花一些时间。尽管处理器等待以确定其是否具有读取A的许可,但如果最终确定不许可该访问,只要其“擦除”读取的软件可见效果,其就可推测性的执行读取。在一些情况下,推测可源自错误预测的分支。分支预测是处理器用于降低未执行的推测指令的数量的技术。分支涉及分支目标的计算。条件分支还涉及用于确定是否“采用”该分支的分支条件的评估。分支目标缓存区BTB可存储从最近执行的分支指令的地址到分支目标地址的映射。保持最近分支结果的记录的另一硬件组件用来确定是否采用该分支。Spectre和Meltdown攻击利用CPU缓存作为信息泄露的主要来源。基于缓存的侧信道攻击是安全漏洞,其中,攻击者在受害程序执行时利用缓存行为获取关于受害程序的信息,且然后作用于该信息以攻击主系统。具体地,这些情况依赖于攻击者能够区分缓存命中和未命中。一些基于缓存的攻击可利用定时信道作为攻击媒介的一部分。这些定时信道可利用可测量的存储器和或页面表访问延迟差以监控受害者行为。定时攻击的示例包括Prime+Probe和Flush+Reload。在Prime+Probe攻击中,首先,攻击者通过利用其自己的缓存块填充一个或多个组来准备好缓存,且随后允许执行受害程序。在已经执行受害程序后,攻击者通过再访问其之前准备的缓存块并测定这些访问的时间来调查缓存。较长的访问时间即,缓存未命中指示受害程序已经触及映射到相同组的地址,从而逐出攻击者的缓存块。Flush+Reload攻击可具有与Prime+Probe类似的目的,但可依赖于在攻击者和受害程序之间的共享虚拟存储器如,共享的只读库或页面去重和通过虚拟地址清除的能力。在Flush+Reload攻击中,攻击者可识别特定的缓存块,而不只是识别缓存组。Flush+Reload攻击可通过清除感兴趣的一个或多个共享的缓存块且随后允许受害程序执行而开始。在已经执行受害程序后,攻击者可重新加载之前逐出的一个或多个缓存块,同时测定访问的持续时间以确定缓存块是否被受害程序预加载。Meltdown和Spectre代表了一类最近发现的缓存定时侧信道攻击,其利用无序推测执行对缓存状态的影响。Meltdown打破了使应用无法访问任意系统存储器的机制。Spectre误训练mis-train现代处理器中的分支预测器以诱导应用访问其存储器中的任意位置。在引起推测执行之后,两种攻击使用定时侧信道具体地,Flush+Reload识别哪个地址被处理器推测性访问。通过引起经由地址计算依赖于之前特许的读取访问的非特许的读取访问的推测执行,攻击可以能够访问特许的核心存储器。Meltdown和Spectre攻击表明CPU缓存可被推测执行的指令污染。即使消除了推测指令的软件可见效果,微架构效果仍可保留。此外,Meltdown和Spectre攻击表明从受害存储器访问到攻击者存储器访问可利用软件依赖关系,使得攻击者可以增加Flush+Reload攻击可执行的地址的范围以除了共享的存储器之外还包括非共享的存储器位置。总之,由于如,由稍后不应当执行的指令的推测执行导致的微架构状态变化,各种缓存实施方式包括图1至图5中描绘的示例系统可易受包括Spectre和Meltdown的侧信道攻击,该微架构状态变化可通过其自己的处理且有时还通过未被允许访问数据的其他处理观察到。设计缓存系统以降低安全性攻击如,侧信道攻击的漏洞可能是有利的。一些缓存系统可考虑是否允许执行存储器指令的处理对其访问的地址执行该存储器指令。在一些缓存系统中,在发出存储器指令时,不执行访问许可检查。然而,至少对于一些存储器指令,在指令提交时执行访问许可检查。可通过TLB检查访问许可。访问许可可随时间变化如,通过TLB无效,其使一个或若干条目无效并在下一访问时强迫重新加载TLB,且可仅在提交时应用访问许可。尽管从架构角度看,后期的访问许可检查可以是可接受的,但后期的许可检查可以允许未许可的推测指令改变缓存的状态,这可允许秘密信息在过程之间被泄露。可利用额外字段扩展示例实施例包括图3和图4中描绘的示例以实现与保护缓存系统相关联的实施例。在示例实施例中,图3的DTLB303的每个条目的净负荷被扩展以还对用于对区域的访问的访问许可进行编码。使用地址302的全虚拟地址可能包括任何处理ID又名地址空间标识符,ASID、虚拟机ID如,VMID以及可能包括对虚拟地址的其他特定扩展访问DTLB303。还扩展地址标签ATAG304以存储全虚拟地址的对应的比特。在发出存储器指令时检查CLB中的访问许可。违反访问许可导致缓存层次结构中无缓存块移动或状态改变,以及CPU被通知存储器指令违反访问许可。在示例实施例中,扩展图4的区域信息RI413,以还对用于对区域的访问的访问许可进行编码。使用地址402的全虚拟地址可能包括任何处理ID又名地址空间标识符,ASID、虚拟机ID如,VMID以及可能包括对虚拟地址的其他特定扩展访问CLB1410。还扩展地址标签AT411以存储全虚拟地址的对应的比特。在发出存储器指令时检查CLB中的访问许可。违反访问许可导致缓存层次结构中无缓存块移动或状态改变,以及CPU被通知存储器指令违反访问许可。在示例实施例中,执行区域或页面的访问许可改变如,TLB无效还涉及移除或通过一些其他手段无效CLB1410中的对应的条目。然而,L1缓存430和L2缓存440中的通过在其CLT412中存储的位置信息LI指向的缓存块可被逐出有时称为强行逐出。在示例实施例中,针对具有标记的缓存的系统执行访问许可改变如,TLB无效还涉及移除或通过一些其他手段无效图3中描绘的DTLB303中的对应的条目。可以进行访问许可的有效改变的对上述图3和图4的扩展分别在图7和图6中描绘且在下面更详细的描述。在示例实施例中,填充来自CLB2420的CLB1410条目图4中的FILL箭头还包括访问TLB图4中未示出的步骤。从TLB读取的访问许可作为访问许可AP存储在扩展的区域信息RI中。区域信息还被扩展为存储TLB重新加载比特TR。在CLB1410接收访问许可改变如,TLB无效时,其设置对应区域的TR,但不逐出CLB条目或使其无效。这将强迫新的TLB重新加载访问在CLB1410填充期间使用的TLB读取可能修改的访问许可比特。然而,由于CLB1410条目未从CLB1410移除或无效,可不逐出缓存块。在示例实施例中,可包括附加机制以处理发出存储器指令的时间与之后提交的时间之间的访问许可改变。在示例实施例中,如果访问许可改变可能通过在检查初始缓存访问许可的时间与提交指令的时间之间接收TLB无效,则流水线pipeline将重新检查其访问许可。这可应用于如图3所示的标记的缓存的扩展功能和或如图4中所示的无标签的缓存。在示例实施例中,这通过以下方式实施:在对CLB1410和DTLB303的访问许可改变分别发生时,设置每个飞行中in-flight指令即,在发出和提交之间的指令的RECHECK比特。只要设置了RECHECK比特,就有必要在提交时重新检查访问许可如,通过分别执行图3中的DTLB303查找或图4中的CLB1410查找。在另一示例实施例中,受访问许可改变影响的飞行中指令被识别且这些指令被强制在提交时重新检查其许可。在示例实施例中,缓存的一部分可包括随机索引值RIV,其与在缓存中存储的缓存块相关联且用来识别缓存块在装置的存储器中的位置。随机索引值RIV可存储在区域的区域信息RI413中。例如,存储在该字段中的RIV比特的数量可从单个比特变化到用于索引系统中的缓存的最大数量的比特。在示例实施例中,初始化RIV以存储对应用未知的随机值。在示例实施例中,RIV可用来确定待在处理器访问缓存时使用的索引。在示例实施例中,通过对RIV比特与一些地址比特进行异或运算以计算缓存索引或通过比特的一些其他逻辑变换,形成随机索引值。RIV比特还可直接用作到缓存的索引比特,而不需要任何逻辑变换。可使系统中的一些缓存完全依赖于用于其索引的地址比特,而其他缓存依赖于随机索引。在示例实施例中,DTLB303还可将具有随机索引值RIV的字段添加到其净负荷。该页面的所有缓存块可使用RIV计算其索引。假设4k字节的页面大小和64字节的缓存块大小,每个页面具有64个缓存块。在示例实施例中,存在比特PB字段可添加到DTLB303净负荷,存储与页面上的多个缓存块对应的多个比特如,64比特。现在假设RIV索引仅应用于一个缓存级如,L1,每次将缓存块存储在该缓存中时,设置对应的PB比特,且每次其被逐出时,清除该比特。以此方式,TLB可以告知何时逐出一组中的最后的缓存块。在示例实施例中,在逐出TLB条目时,还逐出仍存在于L1中的任何缓存块。然而,假设比L1大小大得多的TLB范围,这不应当产生太多性能问题。实际上,了解哪些TLB条目仍具有有效L1缓存块会促进TLB的替换逻辑,以抑制用L1缓存中存在的缓存块替换条目,且可以替代地选择另一TLB条目来逐出,这可改进性能。图6示出了可以如何如上所述地利用更多区域信息扩展图4的CLB1410的示例实施例扩展的CLB1标记为610。清楚起见,图4中的不改变的一些组件已经在图6中省略了。CPU601产生可由VA+ASID+VMID组成的虚拟地址。虚拟地址的一部分CI用来索引CLB1610且将其一部分与存储在索引的组中的CLB1610条目仅示出一个条目中的所有地址标签AT611进行比较。每个条目包含字段的缓存位置表CLT612存储区域的缓存块的LI、物理地址PA614、区域分类比特P615、随机索引值RIV616、TLB重新加载比特TR617和访问许可AP618。处理器产生的虚拟地址的一部分与组中的所有条目的AT611进行比较640。如果存在匹配,则该条目的字段用来访问对应区域的RIV616,其至少部分用来索引L1缓存,并且对应缓存块的位置信息LI用来在该缓存内找到正确的缓存级如,L1缓存和相关联的路。如果存在未命中索引的CLB1610组中没有AT611与处理器601产生的地址匹配,则发起TLB620中的查找以检索物理地址PA622和访问许可AP623。如果在TLB620中存在与虚拟地址标签VAT621的匹配,则匹配的TLB620条目的PA622用来执行CLB2630中的查找且使用来自匹配的CLB2630条目的信息以及PA622和AP623来创建新的CLB1610条目。同时,如果这是系统中唯一的CLB1610条目,则新的随机数被写入RIV616、TR617未被设置且P615被设置。图7示出了可以如何针对其条目中的每一个利用更多字段扩展图3的DTLB303的示例实施例由TLB710描绘。CPU701产生由VA+ASID+VMID组成的虚拟地址。虚拟地址的一部分TI用来索引TLB710且将其一部分与存储在索引的组中的TLB条目仅示出一个条目的虚拟地址标签VAT711进行比较740。每个条目包含字段存在比特PB712每个页面的缓存块存储一个比特、物理地址PA714、随机索引值RIV716、TLB重新加载比特TR717和访问许可AP718。处理器产生的虚拟地址的一部分与组中的所有条目的虚拟地址标签VAT711进行比较。如果存在匹配,则该条目的字段用来访问存储器层次结构。RIV716用来索引L1缓存以找到适当组,将该组的所有缓存块的地址标签AT与物理地址进行比较。图7中描绘的TLB710与图6的CLB1610的类似之处在于二者都存储PA、RIV、AP、TR以及一些每个缓存块位置信息如,PB712存储关于页面中的哪些缓存块被存储在L1中的信息。因此,TLB710可被认为是缓存位置缓存区CLB的形式。以下部分概括上述示例实施例的特征可以如何降低各种安全性攻击。以下说明适用于图6和图7描述的示例实施例以及其他示例实施例。Meltdown攻击涉及过程间攻击,其中,攻击过程可以促进被攻击过程推测性地访问攻击者的地址空间并留下可揭露秘密的微架构状态下的轨迹。Meltdown攻击部分依赖于以下事实:未被许可的推测指令被允许影响微架构状态。在发出时执行的早期的许可检查如,对于导致图6和图7的扩展所建议的将足以用来减少这种攻击即使架构实施的其他部分如,共享的分支预测器状态也可以是固定的。Spectre攻击涉及对过程自己的地址空间的推测访问的副作用,其可以将数据从过程的一个部分泄露到过程的已经被设计成不能对其进行访问的代码的部分。一个这种示例是使代码能够跨出安全隔离架构如,实时JIT执行沙盒,并且访问过程中的由于安全隔离架构而应当在界外的数据。通过允许推测以及稍后不执行的访问导致的微架构副作用通过非推测访问被执行的是可观察的,如,通过测量定时以确定数据是否存储在缓存中,来激活该安全漏洞。可利用这种类型的推测的攻击的示例包括flush+reload和prime+probe,flush+reload依赖于能够对推测性加载的数据的非推测性命中,prime+probe依赖于推测性加载的数据逐出非推测性加载的数据。在flush+reload中,攻击者清空选择的一组数据的缓存,然后使其控制的数据间接地从推测负载被推测性地加载到缓存中如,加载controlled_data[speculative_data]。攻击者然后可以测定访问其受控数据中的所有元素的时间以查看哪个被缓存,从而推断出推测数据的值。如果推测性加载的数据可访问非推测负载,则该攻击可成功。在prime+probe中,使用相反方法。首先,以每个受控数据元素的缓存中的索引比特中的一些是已知的方式将受控数据加载到缓存中。攻击者然后将推测数据加载到缓存中,其逐出受控数据元素中的一个。攻击者然后能够测定加载推测数据元素中的每个的时间以确定逐出哪个,从而获得关于推测信息的信息。如果推测性加载的数据逐出非推测性加载的数据,则该攻击成功。通过区分推测性加载的数据和非推测数据可减少这种攻击,可选地,同时,降低保护推测负载的性能成本。即,在推测时可以从DRAM取出推测数据,但是仅在其不再是推测的时,才可以使其在缓存层次结构中的效果可见。prime+probe攻击的一部分涉及以下事实:攻击者知道关于特定缓存级的每个缓存块的缓存索引。这种攻击者可以在攻击之前完全填充其组中的一个或许多,然后在攻击之后测定对准备好的缓存块的访问的时间以推断一些关于缓存的秘密信息。然而,如果缓存块的随机索引值是未知的,则填充组和或基于在攻击之后的某些访问的定时推断秘密信息可变得更加困难。本文描述的示例实施例可以分别使用CLB1610条目和TLB710条目的随机索引值RIV字段来减少这种攻击。RIV可包括随机数,其对于应用包括攻击者是未知的且可至少部分用来产生缓存访问的索引比特。图6和图7示出了缓存系统利用RIV产生随机缓存索引。如上所述,相当好地,CLB1610和TLB710中的随机索引值616、716被初始设置为对任何应用未知的随机数。以下描述基于图6和图7。周期性地改变随机索引值可进一步减少prime+probe攻击。随机索引还可使设计侧信道“prime+probe”安全性攻击更困难,因为监视的数据的索引以及用于恶意探测访问的索引是不容易知道的。这种攻击涉及确定用于在能够建立攻击之前填充组的足够区域的动态索引。动态索引可以增加攻击的难度如,增加时间,包括通过以比攻击者可以访问缓存块更快的速率主动改变缓存块的动态索引。在示例实施例中,可以选择的速率动态改变CLB1610和TLB710中的区域的随机索引值。在改变随机索引值时,区域的位置信息LI指向的缓存块可被复制到新的随机索引值识别的新的组。在示例实施例中,当分别通过其LI指向的或通过其PB记录的最后的缓存块从使用随机索引值的缓存移除以计算其随机索引值时,区域的随机索引值能够被改变为新的随机数。在此情况下,随机索引值能够被改变为新的随机值而不移动任何缓存块。例如,参照图6,如果CLB1610的随机索引值616字段仅用来计算L1缓存的随机索引值616且CLT612确定区域的最后的缓存块从L1缓存逐出,则CLT的区域的随机索引值616能够被改变为新的随机数而不移动L1缓存中的任何缓存块。图7的类似示例依赖于PB712以确定其页面之一的最后的缓存块何时被逐出以允许有效的随机索引值716更新。在示例实施例中,系统检测尚不具有在使其随机索引值改变的选择的时间段内改变其随机索引值的区域,即使其缓存块中的一些可以由于随机索引值改变而被重新定位。这允许选择的随机索引值改变时间段,同时在较长的时间段限制将缓存块重新定位至具有L1中存在的数据的区域页面。无标签的缓存可以展现较高的关联性,因为其关联性的成本仅对数地增长其LI的大小。例如,可利用又一个LI比特实现使所有缓存的关联性加倍。高关联性本身线性地使“prime+probe”侧信道攻击代价更高。在较高关联性缓存组织的情况下,替换算法变得不那么有影响力了,允许无标签的缓存容易支持随机替换。由于许多侧信道攻击利用替换算法的知识如,LRU建立其攻击,切换到随机替换使它们在统计上更难于预测,这导致较长的攻击时间。不仅随机替换数据还随机保护数据的方法可以使得难以确定随机索引值。尽管随机替换能够期望产生较低效率的缓存行为,但大的关联性将使性能差别与最优的替换相比相对小。缺乏包容性可以允许无标签的缓存降低存储整个缓存层次结构的推测数据。在一些示例计算机系统中,随着数据的引入,推测负载可以留下在每一级存储和或移除数据的痕迹。无标签的缓存可以允许任意数据缓存策略,这可促进缓存中推测数据的放置,而不影响其他缓存。这种放置可以减少泄露的数据的量,和或以使对其效果和可以被观察的方式的控制变得更容易的方式促进用于隔离推测的灵活性。尽管缓存设计的这些特性中的每个能够帮助减少这种攻击,示例实施例可以以下方式组合他们:可以针对性能进行对数据的推测预提取,同时防止推测访问以逐出非推测数据prime+probe和或以来自非推测访问的命中flush+reload的形式变得可见。缺乏包容性和无标签的缓存能够容易地跟踪多个级中的数据可以实现具有可以减少推测访问的单独的推测缓存的无标签缓存。在示例实施例中,推测负载可以专门存储在推测缓存中,从而减少非推测数据从存储器层次结构的剩余部分逐出prime+probe。可降低对来自其他负载的推测缓存中的数据的命中,这可减少通过非推测访问的检测flush+reload。在流水线已经提交和或退出负载且其被确定为是非推测的时,来自推测缓存的数据能够安全地移动进入规则的层次结构,以实现推测预提取的性能优势。在一些实施方式中,可以在指令提交之前完成向非推测的转换。在示例实施例中,一旦能够确定指令不再是推测的且要被执行就完成向非推测的转换。通过减少对推测性加载的数据的命中和或使得难于从推测负载导致的逐出prime+probe中学习,将RIV分别引入到CLB和TLB中可允许保护缓存层次结构免受这种攻击。该方法可以组合以下效果:高关联性、随机索引和缺乏强制包容性,以提供用于加载和存储推测数据的安全区缓存。推测负载能够存储在安全缓存中且被标记为推测的。一旦推测被解析,则在误推测的情况下能够安静地逐出数据。否则,其为推测的标记被清除,且从这点来说,其还可存储在缓存层次结构的其余部分中。在示例实施例中,L1缓存可以被设计成减少侧信道攻击。在示例实施例中,L1缓存可以展现32路关联性、随机索引、随机替换和跟踪推测性加载的数据。跟踪推测性加载的数据可以减少对推测数据的命中,这可减少flush+reload攻击。减少prime+probe攻击可以涉及选择难于确定的随机索引值,这可允许增加关联性,以及利用随机索引比特掩盖数据存储在缓存中的位置。在示例实施例中,可偶尔改变区域的随机索引值。例如,如果攻击者确定区域的索引,则可在攻击者访问该区域之前改变随机索引值。在示例实施例中,可以选择的时间段和或频率改变一个或多个随机索引值。在示例实施例中,改变随机索引值的时间段和或频率可以基于攻击的速度和或选择的安全性级别进行选择。在示例实施例中,区域的子集可具有偶尔改变的随机索引值,因为每次首先引入区域或在逐出区域中的最后的缓存块时,可以无偿改变索引比特。如果区域的动态索引比特在其具有存在于缓存中的数据时改变,则可逐出和重新存储那些缓存块,但是可以不针对这些缓存块搜索L1缓存,因为可以通过看具有L1缓存中存在的数据的CLB条目找到他们。在示例实施例中,由于非包容型缓存层次结构,针对存储器请求返回的缓存块可以在安装在L1缓存中时不安装在L2缓存中。在L1缓存逐出时并且只要认为这样做是适当的如,通过一些缓存放置启发引导,缓存块可以安装在L2缓存中。对于推测访问,缓存块可以仅安装在安全的L1缓存中和或被标记为推测的,这可减少非推测访问,同时使他们接近处理器和或处理器核以促进推测预提取。当推测完成且确定指令被执行时,缓存块可以移动进入适当位置以用于未来的再使用。在示例实施例中,状态机SM可以将数据引入安全的缓存或引入推测缓存中。在示例实施例中,状态机可以决定哪个缓存块安装在L1缓存和或L2缓存中以及还决定何时推动promote他们。在一些实施例中,处理器可通知状态机存储器请求何时变成非推测的,如,何时知道它不再是恶意侧信道攻击的一部分。如果状态机正在处理长延迟的DRAM访问且其所有在前的分支已经被解析以及不执行推测指令的其他潜在原因,则处理器可通知状态机存储器请求不再是推测的且其可以安全地安装在一些其他缓存中。如果在数据从DRAM返回时缓存块仍被认为是推测的,则从L1缓存满足存储器请求且缓存块被标记为推测的。为了简单起见,本文的一些说明描述了用于可以如何定位缓存块和或将其返回到请求CPU的技术。一些示例未详细描述缓存块内包含的请求的字被选择和或返回到CPU的各种方式,但这种细节对本领域技术人员是明显的。为了简单起见,本文的一些说明描述了处理缓存层次结构的数据并且描述了独占型缓存层次结构。本领域技术人员可以理解所描述的实施例可以被扩展为涵盖包容型存储器层次结构和非独占型存储器层次结构。虽然上面描述的示例实施例结合单处理器系统和多处理器系统如,分别关于图1和图2在上面说明和描述的可是可用的,根据示例实施例的CLB可结合单处理器系统示出,也可与多处理器系统一起使用。包括在附图中讨论的和或呈现的示例实施例的本公开的主题可在各种架构中实现。在示例实施例中,缓存可存储在以下组件中、由以下组件访问和或由以下组件控制:一个或多个软件组件如,在一个或多个处理器上执行的线程或过程;软件库,如,存储在存储器中且通过操作系统和或应用的过程和或线程访问的一组指令;和或在非临时计算机可读介质上存储的可由处理器执行的一组指令。在示例实施例中,缓存可存储在一个或多个硬件装置中、由其访问和或控制。在示例实施例中,这种硬件装置可包括处理电路系统,如,但不限于,分别具有一个或多个处理器核的一个或多个处理器。这种处理器可包括中央处理单元CPU;图形处理单元GPU;多核CPU或GPU的核;算术逻辑单元ALU;数字信号处理器;微控制器和或微计算机;片上系统SoC;现场可编程门阵列FPGA;可编程逻辑阵列PLA;专用集成电路ASIC;模块化逻辑装置,如,包装的逻辑芯片;和或能够以限定方式响应和执行指令的任何其他装置。在示例实施例中,缓存可存储在诸如以下的相同和或不同类型的组件的组合中、由其访问和或受其控制:单处理器或多处理器计算机中的多个处理器和或处理核;串联操作的两个或更多个处理器,如,CPU和GPU;利用ASIC的CPU和或由处理器执行的软件。示例实施例可包括单个装置的组件,如,包括存储、访问和管理缓存的一个或多个CPU的计算机。示例实施例可包括多个装置如,具有CPU的两个或更多个装置,其通信以访问和或管理缓存的组件。示例实施例可包括包含在服务器计算装置中、服务器计算机中、一系列服务器计算机中、服务器场中、云计算机中、内容平台中、移动计算装置中、智能手机中、平板电脑中或机顶盒中的一个或多个组件。示例实施例可包括直接通信的组件如,多核处理器的两个或更多个核和或间接如,经由总线、通过有线或无线信道或网络、和或经由诸如微控制器或仲裁器的中间组件通信的组件。示例实施例可以分别由装置或组件执行的缓存管理器的多个实例为特征,其中,这种实例可同时、连续和或以交替方式执行。示例实施例可以在两个或更多个装置或组件上分布缓存管理器的实例为特征。示例实施例可包括组件,其包括在存储器中存储的缓存和计算机可读指令。存储器的非限制示例包括但不限于:可再写非易失性存储器装置包括,例如,闪存存储器装置、可擦写可编程只读存储器装置或掩码只读存储器装置;易失性存储器装置包括,例如,静态随机访问存储器装置或动态随机访问存储器装置;磁存储介质包括,例如,模拟或数字磁带或硬盘驱动;以及光存储介质包括,例如,CD、DVD或蓝光盘。具有嵌入的可再写非易失性存储器的存储器的示例包括但不限于:存储器卡;和具有嵌入的ROM的介质包括但不限于ROM磁带等。示例实施例可包括和或利用有形或非暂时性计算机可读存储介质如,随机存取存储器RAM、只读存储器ROM、永久性大容量存储装置如,硬盘驱动、和或能够存储和记录数据的任何其他类似数据存储机制的存储器装置。存储器可被配置成存储用于一个或多个操作系统和或用于实现本文描述的示例实施例的计算机程序、程序代码、指令或其一些组合。存储器可包括通用串行总线USB闪存驱动、存储器棒、蓝光DVDCD-ROM驱动、存储器卡和或其他类似计算机可读存储介质。在示例实施例中,缓存、计算机程序、程序代码和或指令或其一些组合可经由网络接口从远程数据存储装置加载到一个或多个本地存储器和或一个或多个本地处理器。在示例实施例中,缓存、计算机程序、程序代码和或指令或其一些组合可从另一本地存储器和或另一本地处理器或组件加载。尽管上面在某些示例计算机架构的语境下进行了描述,但缓存以许多其他设置方式存在于计算机系统内以及在计算机系统外,且前述实施例同样适用于这种其他语境。这种使用的示例是虚拟存储器系统,其从慢的高容量存储如,磁盘或FLASH存储器缓存数据到可利用动态RAM实现的较快且较小的高容量存储器中。计算机系统中的缓存的其他示例包括但不限于磁盘缓存、网络缓存和名称缓存。这种缓存的组织和缓存机制可与上述缓存的不同,如,组大小的变化、组的实施方式和关联性等。不管缓存机制的实施方式如何,本文描述的示例实施例可适用于实现各种缓存方案。例如,所公开的实施例描述与各种缓存层次结构相关联的系统和方法。然而,示例实施例旨在涵盖包括在本发明的精神和范围中的替代方案、修改和等效物。进一步地,在示例实施例的具体描述中,阐述了大量具体细节以提供对本发明的全面理解。然而,本领域技术人员将理解可以在不具有这种具体细节的情况下实践各种实施例。尽管以一些组合方式在示例实施例中描述了本实施例的特征和元素,但每个特征或元素可以不与示例实施例的其他特征和元素一起而被单独使用,或者与本文公开的其他特征和元素一起或不与本文公开的其他特征和元素一起以各种组合方式被使用。可在有形地体现在计算机可读存储介质中的计算机程序、软件或固件中实现本申请中提供的方法或流程以通过专用计算机或处理器执行。该书面的说明书使用所公开的主题的示例以使任何本领域技术人员实践该主题,包括制造和使用任何装置或系统以及执行任何并入的方法。主题的专利范围由随附权利要求限定且可包括本领域技术人员想到的其他示例。这种其他示例旨在落入随附权利要求的范围内。

权利要求:1.一种用于访问装置的缓存中的数据的方法,所述方法包括:在缓存区中存储所述缓存中存储的缓存块的访问许可;对于涉及所述缓存块的存储器指令,至少部分基于所述缓存块的所述访问许可,确定是否允许所述存储器指令访问所述缓存块;以及在确定不允许所述存储器指令访问所述缓存块的条件下,抑制改变所述缓存。2.根据权利要求1所述的方法,还包括:在改变所述缓存块的所述访问许可的条件下,使所述缓存中的所述缓存块无效。3.根据权利要求1所述的方法,其中,所述缓存区包括缓存表,所述缓存表包括缓存表条目,该缓存表条目识别所述缓存块在所述装置的存储器中的区域,并且存储所述缓存块的所述访问许可包括在所述缓存块的所述缓存表条目中存储所述访问许可。4.根据权利要求1所述的方法,其中,所述缓存区包括缓存表,所述缓存表包括缓存表条目,该缓存表条目识别所述缓存块在所述装置的存储器中的区域和所述缓存表的区域信息,并且存储所述缓存块的所述访问许可包括在所述缓存表的所述区域信息中存储所述访问许可。5.根据权利要求1所述的方法,还包括:在确定允许未决存储器指令访问所述缓存块之后改变所述缓存块的所述访问许可的条件下,至少部分基于所述访问许可重新确定是否允许所述未决存储器指令访问所述缓存块。6.根据权利要求1所述的方法,还包括:在所述缓存区中存储随机索引值;在所述缓存中,在至少部分基于所述随机索引值的位置处,存储所述缓存块;以及在确定允许所述存储器指令访问所述缓存块的条件下,通过至少部分基于所述随机索引值确定所述缓存块的位置来访问所述缓存块。7.根据权利要求6所述的方法,还包括:以选择的速率周期性地改变所述随机索引值。8.根据权利要求7所述的方法,还包括:在将所述随机索引值改变为新的随机索引值的条件下,将所述缓存块移动到至少部分基于所述新的随机索引值的新的位置。9.根据权利要求6所述的方法,还包括:在从所述缓存移除所述缓存块的条件下,改变所述随机索引值。10.根据权利要求1所述的方法,还包括:在将所述缓存块作为所述存储器指令的推测负载进行存储的条件下,将所述缓存块标记为推测的;在将所述存储器指令的所述推测负载解析为非推测的条件下,将所述缓存块标记为非推测的;以及在将所述存储器指令的所述推测负载解析为误推测的条件下,从所述缓存移除所述缓存块。11.一种系统,包括:存储缓存块的缓存;和至少一个处理器,其被配置成:在缓存区中存储所述缓存块的访问许可;对于涉及所述缓存块的存储器指令,至少部分基于所述缓存块的所述访问许可,确定是否允许所述存储器指令访问所述缓存块;以及在确定不允许所述存储器指令访问所述缓存块的条件下,抑制改变所述缓存。12.根据权利要求11所述的系统,其中,所述缓存区包括缓存表,所述缓存表包括缓存表条目,该缓存表条目识别所述缓存块在存储器中的区域,并且所述至少一个处理器被配置成将所述访问许可存储在所述缓存块的所述缓存表条目中。13.根据权利要求11所述的系统,其中,所述缓存区包括缓存表,所述缓存表包括缓存表条目,该缓存表条目识别所述缓存块在存储器中的区域和所述缓存表的区域信息,并且所述至少一个处理器被配置成将所述访问许可存储在所述缓存表的所述区域信息中。14.根据权利要求11所述的系统,其中,所述至少一个处理器还被配置成:在改变所述缓存块的所述访问许可的条件下,使所述缓存中的所述缓存块无效。15.根据权利要求11所述的系统,其中,所述至少一个处理器还被配置成:在所述缓存区中存储随机索引值;在所述缓存中,在至少部分基于所述随机索引值的位置处,存储所述缓存块;以及在确定允许所述存储器指令访问所述缓存块的条件下,通过至少部分基于所述随机索引值确定所述缓存块的位置来访问所述缓存块。16.根据权利要求15所述的系统,其中,所述至少一个处理器还被配置成:以选择的速率周期性地改变所述随机索引值。17.根据权利要求16所述的系统,其中,所述至少一个处理器还被配置成:在将所述随机索引值改变为新的随机索引值的条件下,将所述缓存块移动到至少部分基于所述新的随机索引值的新的位置。18.根据权利要求15所述的系统,其中,所述至少一个处理器还被配置成:在从所述缓存移除所述缓存块的条件下,改变所述随机索引值。19.根据权利要求11所述的系统,其中,所述至少一个处理器还被配置成:在将所述缓存块作为所述存储器指令的推测负载进行存储的条件下,将所述缓存块标记为推测的;在将所述存储器指令的所述推测负载解析为非推测的条件下,将所述缓存块标记为非推测的;以及在将所述存储器指令的所述推测负载解析为误推测的条件下,从所述缓存移除所述缓存块。20.一种非临时性计算机可读存储介质,包括指令,该指令在被处理器执行时使所述处理器执行操作,所述操作包括:在缓存区中存储缓存中存储的缓存块的访问许可;对于涉及所述缓存块的存储器指令,至少部分基于所述缓存块的所述访问许可,确定是否允许所述存储器指令访问所述缓存块;以及在确定不允许所述存储器指令访问所述缓存块的条件下,抑制改变所述缓存。

百度查询: 三星电子株式会社 保护缓存免受侧信道攻击的方法、系统和存储介质

免责声明
1、本报告根据公开、合法渠道获得相关数据和信息,力求客观、公正,但并不保证数据的最终完整性和准确性。
2、报告中的分析和结论仅反映本公司于发布本报告当日的职业理解,仅供参考使用,不能作为本公司承担任何法律责任的依据或者凭证。