CN103823763B - 用于控制对缓存结构的访问的装置 - Google Patents

用于控制对缓存结构的访问的装置 Download PDF

Info

Publication number
CN103823763B
CN103823763B CN201310418254.0A CN201310418254A CN103823763B CN 103823763 B CN103823763 B CN 103823763B CN 201310418254 A CN201310418254 A CN 201310418254A CN 103823763 B CN103823763 B CN 103823763B
Authority
CN
China
Prior art keywords
buffer structure
seed
caching
address
group identifier
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.)
Active
Application number
CN201310418254.0A
Other languages
English (en)
Other versions
CN103823763A (zh
Inventor
海梅·阿韦利亚费雷尔
爱德华多·基尼奥内斯莫雷诺
弗朗西斯科·哈维尔·卡索拉阿尔梅达
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Barcelona Supercomputing Center
Original Assignee
Barcelona Supercomputing Center
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Barcelona Supercomputing Center filed Critical Barcelona Supercomputing Center
Publication of CN103823763A publication Critical patent/CN103823763A/zh
Application granted granted Critical
Publication of CN103823763B publication Critical patent/CN103823763B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0864Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using pseudo-associative means, e.g. set-associative or hashing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1408Protection against unauthorised use of memory or access to memory by using cryptography

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)
  • Image Processing (AREA)

Abstract

本发明涉及在执行至少一个计算机程序时控制对缓存结构的访问的装置,该缓存结构包括多个缓存组,该装置包括:在执行至少一个计算机程序时生成种子值的模块;以及参数散列函数模块,用于生成访问缓存结构的缓存组标识符,该标识符通过结合由用于生成种子值的模块生成的种子值和访问与缓存结构关联的主存取器的地址的预定位生成。

Description

用于控制对缓存结构的访问的装置
技术领域
本发明涉及在执行至少一个计算机程序时控制对缓存结构的访问的方法,该缓存结构包括多个缓存组。更具体地,本发明涉及保证由计算机程序访问的每个地址都能够以真实概率被分配给缓存结构的任何具体缓存组的方法。
另外,本发明还涉及适合实现该方法的用于控制对缓存结构的访问的装置和计算机程序产品。
本发明可以应用于实时系统,例如飞行控制系统等的安全关键实时系统。
背景技术
缓存通常是小且块的储存缓冲器,其能够用于储存代码或数据等信息,以使在处理装置中运行的程序执行得更快。一般地,处理装置读取缓存比读取主存储器快。而且,随着深度计算要求的快速增加,它们在计算机系统中的重要性只会增加。
缓存结构在概念上是排列为S组(概念上是行)和W路(概念上是列)的S*W缓存线(概念上是单元)的矩阵。在缓存中放入一段数据的组(也就是行)由配置策略(placementpolicy)决定。配置策略执行散列函数(hash function),该散列函数使用存储了数据段的存储器地址的一些位将该数据段映射到特殊的缓存组(行)。从缓存的角度看,不同的数据段可以被分组为缓存线或简单地分组为线。因为不同的存储器线可以在相同的缓存组中冲突,所以缓存组包含给定数量的缓存线,该缓存线称为路(也就是列)。所有组具有相同数量的路,这些路决定缓存关联性。因此,W路组关联性缓存每个组包括W路。对于给定的组,放置有存储器线的路(缓存线)由替换策略决定。在所产生的缓存访问是错误时,替换策略在给定组(行)中的所有路(列)之中选择存储器线,该存储器线被消除以给新存储器线腾出空间。然后,新的存储线被存储进刚刚消除了内容(存储器线)的缓存中。每条线可以由1个或几个字构成。字的大小通常由字节衡量(例如1、2或4字节)。
缓存的时序行为主要由配置策略和替换策略决定。线尺寸、字尺寸和其他缓存参数也影响缓存的时序行为。对于一个给定的缓存配置,线尺寸和字尺寸都是固定的。
高性能处理器中的随机化缓存已经被提出以通过使用伪随机散列函数消除缓存冲突。[A.Gonzalez等人的Eliminating cache conflict misses through XOR-basedplacement functions(通过基于XOR的配置函数消除缓存冲突错误).In ICS,1997.][A.Seznec和F.Bodin.Skewed-associative caches(偏向相联缓存).In PARLE.1993.][Nigel Topham和Antonio González.Randomized cache placement for eliminatingconflicts(用于消除冲突的随机化缓存配置).IEEE Trans.Comput.,48,February1999]。但是所有这些缓存设计的行为是完全确定的。这就是说,每当程序的给定数据输入组使该程序生成有问题的访问模式,这个模式会在程序的整个运行中针对该输入组系统地重复。因此,尽管有问题情况的频率降低了,但是由于无法证明它们的概率有界,因此可能仍然系统地出现。在实时域概率时序分析(PTA)(例如[F.J.Cazorla等人.Proartis:Probabilistically analysable real-time systems(概率可分析实时系统).TechnicalReport7869(http://hal.inria.fr/hal-00663329),INRIA,2012],[D.Griffin和A.Burns.Realism in Statistical Analysis of Worst Case Execution Times(最坏条件下执行时间的统计分析中的实时性).In the10th International Workshop on Worst-Case Execution Time Analysis(WCET2011),pages44-53,2010]或者[J.Hansen,S.Hissam和G.A.Moreno.Statistical-based WCET estimation and validation(基于统计的WCET估计和验证).In the9th International Workshop on Worst-Case Execution Time(WCET)Analysis,2009])是目前WCET分析技术(即,静态时序分析和基于测量的时序分析问题)的有前途且有效的解决方案。
PTA对硬件设计具有的新的要求。更具体地,在缓存设计上,PTA技术要求存储器访问的时序行为可以由向量对定义:
其中Ii列出存储层次可以取得以服务于数据的所有可能的潜在因素,且pi是其发生的相关概率。要注意的是,给定潜在因素发生的概率不同于其频率:频率提供关于过去事件的信息,而概率可以提供与将来事件的发生有关的保证。(参考例如[F.J.Cazorla等人.Proartis:Probabilistically analysable real-time systems(概率可分析实时系统).Technical Report7869(http://hal.inria.fr/hal-00663329),INRIA,2012]。因此,对于缓存资源的情况,PTA要求对于每个访问都有在缓存中命中或未命中的可计算概率。
随机替换策略存在以使缓存组(列)中的缓存线(单元)的选择随机。但是,基于访问的地址,现有的配置策略是完全确定性的。
因此,是否对竞争相同缓存组的两个不同地址访问唯一取决于它们的具体地址和使用的配置函数。因此,如果在执行的开始两个地址被放入相同的缓存组,则它们在程序的执行和经过整个程序运行期间会在该缓存组中一直冲突。因为该行为是完全确定性的,因此没有可被计算的真实概率。因此没有满足概率时序分析(PTA)要求的概率性质。
在处理器安全中,标准非随机化缓存易受到如密钥等关键信息泄漏的影响。对标准缓存攻击只依靠缓存命中和缓存未命中之间的时序差异。通过使用随机-替换缓存等打破在访问和它们是否命中或未命中之间的决定论,使命中和未命中以给定概率发生,因为信息相对于攻击者被遮挡,故而提高了安全性。
总体上,迄今为止只有那些具有一个缓存组的缓存(不需要配置函数)和执行随机替换的多个缓存路适合PTA技术并且用于降低安全弱点。遗憾的是,以能量和面积的角度看,这些也称为完全关联性缓存的缓存通常昂贵,且不能很好地扩展。
发明内容
本发明的目的是提供用于控制对缓存结构的访问的装置,该装置避免现有技术的缺点。
为了实现上述目的,根据第一方面,本发明提供在执行至少一个计算机程序时控制对缓存结构的访问的装置,该缓存结构包括多个缓存组,该装置包括:在执行至少一个计算机程序时生成种子值的模块;以及参数散列函数模块,用于生成访问缓存结构的缓存组标识符,该标识符通过结合由用于生成种子值的模块生成的种子值和访问与缓存结构关联的主存取器的地址的预定位生成。
这样,在带有多个组的缓存结构中,无论地址值是多少,种子值的提供保证给定访问具有被分配到缓存结构的每个缓存组的真实概率。也就是说,本发明能够通过例如微处理器的处理器模块保证每个由计算机程序访问的地址可以附接真实概率以分配到包括多个组的缓存结构的任何具体的缓存组。
重要的是强调所生成的种子值可以周期性地或每当发生具体事件时进行更新。这样,种子值可以只在计算机程序的开始和结束时被更新,但是在其他不同的时间或者更高或更低的频率下对其更新也包含在本发明的范围内。
因此,对于给定的固定地址,如果种子值被改变,获得的组标识符也改变。出于本发明的目的,只要有可以将地址映射到任何组的真实概率,就可以使用任何参数散列函数模块。可以使用任何种子值。但是,如果参数散列函数模块在其输出组标识符中产生大的变化,即使在输入地址和/或种子值中出现小的变化,并且如果种子被设定为随机或伪随机值,则实现更高程度的随机化。
而且,在能量方面,带有多个执行配置函数的组的缓存结构更方便。如果每组只有一条缓存线(无需替换策略),则这些带有多个组的缓存结构被称为直接映射缓存,而如果每组有多于一条的缓存线(需要配置策略和替换策略)则这些带有多个组的缓存结构被称为组关联缓存。
根据本发明的优选实施方式,缓存结构可以包括2n组,生成的缓存组标识符可以包括n位。
优选地,给定地址包括一连串位,它们的子集可以对应偏移量,地址的预定组标识符位可以包括去掉偏移量的该一连串位。
根据另一实施方式,缓存结构每组可以包括至少一条缓存线,例如组关联缓存结构或直接映射缓存结构。
根据本发明的另一实施方式,在执行至少一个计算机程序时生成种子值的模块可以包括可以在硬件或软件中执行的伪随机数生成器。例如,生成种子值的模块可以通过电元件(例如逻辑门)在硬件中执行。
另外,该装置可以包括存储生成的种子值的存储器模块,以使得所有生成的种子值可以被存储进该存储器模块中。可选地,每个新生成的种子值可以替换之前生成的种子值。
根据另一方面,本发明提供一种在执行至少一个计算机程序时控制对缓存结构的访问的方法,所述缓存结构包括多个缓存组,所述方法包括:
在执行至少一个计算机程序时生成种子值;
接收访问与缓存结构关联的主存储器的地址;
生成对所述缓存结构访问的缓存组标识符,该标识符通过结合生成的种子值和接收的地址的预定位生成。
还是根据本发明的另一方面,提供包括程序指令的计算机程序产品,该程序指令用于使计算机执行如上所述的控制对缓存结构的访问的方法。本发明也涉及在存储介质(例如CD-ROM、DVD、USB驱动器、在计算机存储器上或在只读存储器上)上实行或在载波信号上(例如在电载波信号或光载波信号上)携带的计算机程序产品。
本发明还提供包括多个缓存组的缓存结构和如上所述的用于控制对该缓存结构的访问的装置。
本发明实施方式的附加对象、优点和特征通过查阅本描述对于所属技术领域的技术人员将会变得显而易见,或可以通过本发明的实施而被学到。
附图说明
下面参照附图,用非限定的例子描述本发明的具体实施方式。
图1示意性地示出根据本发明的配置有缓存结构的处理器设置,该处理器设置包括用于控制对缓存结构的访问的装置。
图2示意性地示出包含对缓存结构的请求的地址寄存器,该缓存结构用于由与缓存结构关联的处理器模块给定的主存储器的特殊地址
图3是示出参数散列函数模块的一实施方式的框图,该参数散列函数模块包含在图1示出的用于控制对缓存结构的访问的装置中。
图4是示出旋转模块的框图,该旋转模块用于图3示出的参数散列函数模块。
图5是示出XOR模块的框图,该XOR模块用于图3示出的参数散列函数模块。
具体实施方式
在以下优选实施方式的描述中,阐述了很多具体细节以提供本发明的彻底理解。但是,所属技术领域的技术人员应当理解本发明可以在没有该具体细节的情况下被实现。在其他例子中,为了使本发明不模糊,不需要在示意图或框图形式中示出众所周知的元件。
还应注意,如果没有其他说明,可以在硬件或软件或一些它们的结合中执行在此描述的所有功能。然而,如果没有其他说明,在优选实施方式中,由例如计算机或电子数据处理机等处理器按照例如编码为执行该功能的计算机程序代码、软件和/或集成电路等编码执行该功能。
在计算机系统(例如个人计算机)中的计算机程序的执行涉及由该计算机系统通过其处理器执行计算机程序的指令的处理。其中的一些指令可能需要访问存储在主存储器的预定地址中的数据,该主存储器包含在计算机系统中。这样,当处理器试图根据用于获得所需数据的预定地址访问主存储器时,首先其检验所需的数据是否存储在与主存储器关联的缓存结构中。这就是为什么缓存结构通常包括可用于储存信息的小、快的存储缓冲器,存储缓冲器允许处理器更加快速且有效地访问信息,也就是说,处理器读取缓存结构的更小存储器比读取主存储器快。
如上所述,缓存结构在概念上是排列为S组(概念上是行)和W路(概念上是列)的S*W缓存线(概念上是单元)的矩阵。在缓存中放入一段数据的组(也就是行)由配置策略(placement policy)决定。配置策略执行散列函数(hash function),该散列函数使用存储了数据段的存储器地址的一些位将该数据段映射到特殊的缓存组(行)。从缓存的角度看,不同的数据段可以被分组为缓存线或简单地分组为线。因为不同的存储器线可以在相同的缓存组中冲突,所以缓存组包含给定数量的缓存线,该缓存线称为路(也就是列)。所有组具有相同数量的路,这些路决定缓存关联性。因此,W路组关联性缓存每个组包括W路。对于给定的组,放置有存储器线的路(缓存线)由替换策略(replacement policy)决定。在所产生的缓存访问是未命中时,替换策略在给定组(行)中的所有路(列)之中选择存储器线,该存储器线被消除以给新存储器线腾出空间。然后,新的存储线被存储进刚刚消除了内容(存储器线)的缓存中。每条线可以由1个或几个字构成。字的大小通常由字节衡量(例如1、2或4字节)。
图1示出了配置有缓存结构10的处理器设置。缓存结构10包括:多个路W1-W8以及多个组S1-S4(也就是4*8缓存线的矩阵)。缓存结构10与中央处理器(CPU)11和主存储器12连接。另外,缓存结构10还包括组配置逻辑模块13,其决定缓存组S1-S4中的哪一组用于分配从CPU11发出的访问主存储器12的给定地址。组配置逻辑模块13从装置14接收访问缓存结构10的缓存组标识符,装置14用于控制对根据本发明缓存结构的访问。
控制装置14包括参数散列函数模块15,参数散列函数模块15将由例如伪随机数生成器(未示出)生成的种子值16和访问主存储器12的给定地址的预定位17结合。
此时,重要的是要注意可以在硬件或软件中执行伪随机数生成器,不过其他任何获得种子值的方法都在本发明的范围内。
本发明只在计算机程序执行的开始或结束时更新种子值16,不过在其他不同时间,或以更高或更低的频率更新种子值16也在本发明的范围内。
因此,如果种子值改变,则尽管地址保持不变,获得的组标识符也改变。只要有可以将地址映射到任何组的真实概率,则可以使用任何参数散列函数模块。可以使用任何种子值。但是,如果参数散列函数模块在其输出组标识符中产生大的变化,即使在输入地址和/或种子值中出现小的变化,并且即使种子被设定为随机或伪随机值,则PTA结果也更好(更低的执行次数)。
另外,控制装置14还可以包括用于存储所生成的种子值16的寄存器(未示出)。
图2示出从CPU11发出的访问主存储器12的地址20的一个示例,其预定位17与种子值16结合以获得访问缓存结构10的缓存组标识符。基本地,地址20包括3部分的位:
标签21;
索引22;
偏移量23。
作为说明性的示例,如果地址是16位宽且缓存线大小为64字节(26字节-通常,字节数为2n),则对于图1示出的缓存结构(4组S1-S4,8路W1-W4),地址位分类如下:8位最高位是标签21;接下来2位(也就是说,假定缓存包括4组,则需要2位来寻址所有组)是索引22;并且6位最低位(也就是“n”)是偏移量23。这样,如果地址是“00110011 0100 0111”(二进制),则标签21是“0011 0011”,索引是“01”,偏移量23是“00 0111”。
现有的配置策略使用索引22(在本示例中是“01”)选择通过将这些位提供给组配置逻辑模块13来访问的缓存组。在本例中,如果索引位是“00”则访问组S1,如果索引位是“01”则访问组S2(如在本例中),如果索引位是“10”则访问组S3,如果索引位是“11”则访问组S4。我们知道另一个配置策略是将标签21和索引22结合生成缓存组标识符。但是,由于该生成的缓存组标识符唯一地取决于所访问的地址,因此明显地这些配置策略是确定性的。
根据本发明的装置14通过参数散列函数模块15将标签21和索引22的位(也就是地址20的预定位17)与种子值16结合以生成缓存组标识符。
图3表示参数散列函数模块15的一个实施方式。显然地,为了生成访问缓存结构的缓存组标识符,种子值16和地址20的预定位17(例如,在本实施方式中是标签21和索引22)的结合可以以不同方式执行,由此参数散列函数模块15可以有不同的设置。
在图3所示的实施方式中,参数散列函数模块15包括用于接收和存储地址20的预定位17的寄存器30。由于在本实施方式中地址有32位,因此地址的预定位是地址的第5至第31位(例如去掉偏移量23的地址20)。
另外,参数散列函数模块15还包括:寄存器36,用于接收和存储种子值16(在本实施方式中种子值包括32位);多个模块31a、31b、31c、31d,用于基于种子值16的一些位32a、32b、32c、32d或预定位17的一些位旋转地址20的预定位17;模块33,用于将种子值16,地址20的预定值17,以及在每个旋转模块31a、31b、31c、31d的输出中获得的位连在一起;以及具有不同长度的多个异或(XOR)-折叠逻辑模块34a、34b、34c、34d、34e,用于使连在一起的二进制值的位数适应具有对所有缓存组进行索引所需的位数的二进制值。XOR-折叠逻辑模块34a的输出与缓存设定标识符对应并由寄存器35接收,该寄存器35把标识符提供给组配置逻辑模块13以访问缓存结构10并对缓存组中的数据进行读写。如上所述,组配置逻辑模块13决定缓存组S1-S4中的哪个组用于分配给定地址20。
下面,由图4说明旋转模块31a、31b、31c、31d的操作,其包括在图3示出的参数散列函数模块15中。
基本上,在本实施方式中,每个旋转模块都包括旋转逻辑元件41,该旋转逻辑元素41的目的是将存储在值寄存器40中的二进制值向左旋转N位,其中N由控制寄存器42决定。旋转逻辑元素41的输出由寄存器43接收并存储在寄存器43中。因此,值寄存器40中的二进制值的最左侧N位成为输出寄存器43的最右侧N位,并且值寄存器40中的二进制值的剩下的最右侧M位成为输出寄存器43的最左侧M位。尽管不是强制性的,但推荐二进制值的位数是2的幂次方(例如2位、4位、8位等)并且控制寄存器42的位数与二进制值大小的以2为底的对数相同。例如,如果二进制值是32位宽,则控制寄存器42应该具有5位以使得可以取32个不同值,这32个不同值可以产生二进制值的32种不同旋转(从0至31位旋转)。
下面的示例说明旋转模块31a、31b、31c、31d怎样工作。如果二进制值是00110111(二进制)且控制寄存器42是101,则输出寄存器43将是11100110。控制寄存器42使二进制值向左旋转5(二进制是101)位以使得二进制值的最左5位(00110)成为二进制值的最右5位并存储在输出寄存器43中,并且剩下的二进制值的最右3位(111)成为二进制值的最左3位并存储在输出寄存器43中。
返回图3,如果该说明被应用于所述图中示出的旋转模块,则对应关系如下:
旋转模块31a(对应图4中的旋转逻辑元件41):二进制值包括存储在地址寄存器30(其对应图4中的二进制值寄存器40)中的地址20的5至31位(即预定位17);控制寄存器32a对应图4中的控制寄存器42,控制寄存器32a存储地址的预定位17的5至9位,该5至9位也是地址寄存器30的0至4位。旋转模块31a的输出被发送至连接模块33。
旋转模块31b(对应图4中的旋转逻辑元件41):二进制值也包括存储在地址寄存器30(其对应图4中的二进制值寄存器40)中的地址20的5至31位(即预定位17);控制寄存器32b对应图4中的控制寄存器42,控制寄存器32b存储地址的预定位17的10至14位,该10至14位也是地址寄存器30的5至9位。旋转模块31b的输出被发送至连接模块33。
旋转模块31c(对应图4中的旋转逻辑元件41):二进制值也包括存储在地址寄存器30(其对应图4中的二进制值寄存器40)中的地址20的5至31位(即预定位17);控制寄存器32c对应图4中的控制寄存器42,控制寄存器32c存储种子值16的0至4位。旋转模块31c的输出被发送至连接模块33。
旋转模块31d(对应图4中的旋转逻辑元件41):二进制值包括存储在地址寄存器30(其对应图4中的二进制值寄存器40)中的地址20的5至31位(即预定位17);控制寄存器32d对应图4中的控制寄存器42,控制寄存器32d存储种子值16的5至9位。旋转模块31d的输出被发送至连接模块33。
更具体地,对于所有旋转模块31a、31b、31c、31d的输入之一是丢弃偏移位23的地址20的位。在图3的具体实施方式中,存在5偏移位且地址20是32位宽,因此使用地址的27位。左边扩展有5位(值是00000),总计32位。每个旋转模块使用不同的一组位作为控制寄存器32a、32b、32c、32d。这些位用于决定二进制值(例如地址20的预定位17在左边扩展了值是00000的5位)旋转多少位。在图3中,例如最左边的旋转模块31a使用丢弃偏移量后的地址20的最低5位。换言之,其使用标签21和索引22的最右5位(从右向左数的第0、1、2、3、4位)。左数第二个旋转模块31b使用标签21和索引22的下一个最低5位(从第5至第9位)。其他两个旋转模块31c、31d使用来自种子值16的位。具体地,它们分别使用第0位至第4位和第5位至第9位。
这样,连接模块33将地址20的第5位至第31位,种子值的第0位至第31位,第一旋转模块31a(即旋转二进制值的32位结果,该二进制值包括左边5位的值是00000的预定值17)的输出,第二旋转模块31b(例如32位)的输出,第三旋转模块31c(例如32位)的输出,第四旋转模块31d(例如32位)的输出连在一起,得到187位的单一二进制值(27+32+32+32+32+32=187)。
接着,一些异或模块34a、34b、34c、34d以级联方式应用于连接模块33的输出,直到二进制值的位数与对所有缓存组进行索引所需的位数。因此,异或模块允许降低二进制值的位数,直到二进制值的位数与对所有缓存组进行索引所需的位数。
根据图5说明异或模块的操作。由图可见异或模块被配置为二进制值有9位的情况,然而无论作为输出的二进制值的位数是多少其功能都是相同的。基本上,异或模块将存储在第一寄存器50中的二进制值的位分为两半,且在每一半中的每个对称位置的一对位之间进行异或运算,例如在第0位和第7位,第1位和第6位,第2位和第5位,第3位和第4位之间进行异或。如果位数是奇数,则最高位简单地传到输出(即图5示出的情况)。如果输入位不同则两输入位的异或运算结果为“1”(例如两者中的一个是“0”而另一个是“1”),而如果两输入位相同则结果为“0”(两者都是“0”或“1”)。所得的二进制值存储在输出寄存器52中。
例如,如果由连接模块33提供的连接的二进制值有200位且缓存组数是32,则我们必须对这200位进行异或直到只剩下5位以对所有缓存组进行索引(32的以2为底的对数是5)。因此,异或模块的不同等级将会把位数从200降到100,从100降到50,从50降到25,从25降到13,从13降到7,从7降到5。
注意当输入的位数小于对组进行索引所需位数的2倍时(例如7小于5的2倍),异或逻辑只应用于数量等于输入位数(示例中是7)减去所需输出位数(示例中是5)的位对,也就是应用于2对位。出于这个目的,所需位被从输入(这种情况是3位)的左边简单地传播且剩余位(在示例中是4位)被异或折叠以使得其被获得为传送位的输出(3位)和进行异或运算的对的输出(2位)。
回到图3,考虑图5的说明,第一异或模块34e从连接模块33接收187位的二进制值(如上所述)并将其转换为94位的二进制值。第二异或模块34d接收所述94位的二进制值并将其转换为47位的二进制值。所述输出值由第三异或模块34c接收,该第三异或模块34c将47位的二进制值转换为24位的二进制值。所述24位的二进制值由第四异或模块34b接收,该第四异或模块34b将24位的二进制值转换为12位的二进制值。12位二进制值被发送到第五异或模块34a,该第五异或模块34a将其转换为对所有缓存结构的缓存组进行索引所需的位。一旦获得适当的值,则该值被存储至输出寄存器35中,输出寄存器35将该二进制值提供至组配置逻辑模块13以访问缓存结构10。
尽管这些发明的实施方式已在某些实施例背景下公开,但是本领域技术人员应当理解,本发明超越具体公开的实施方式延伸至其他可选实施方式和/或本发明及其明显修改例和等同例的使用。因此,本发明在此公开的范围不被上述公开的具体实施方式限定,而应由明确的权利要求决定。
值得注意的是,推荐对没有偏移位的输入地址增加位,但是并不强制。也要注意设定旋转模块41的控制寄存器42所用的位数为二进制值寄存器40的大小的以2为底的对数值,不过也可以使用其他位数。
注意任何地址与种子位的结合可以在任何旋转模块的输入中使用。
本发明不限于任何定义和任何其他使用旋转模块、异或模块或落在本发明范围中的任何其他种类的逻辑模块的参数散列函数模块15,只要参数的散列函数的输入包含地址和种子。
另外,尽管根据附图描述的本发明的实施方式包括计算机设备和在计算机设备中执行的处理,但是本发明也扩展至计算机程序。特别是在将本发明付诸实践的载体之上或之中的计算机程序。该程序可以为源代码、目标代码的形式,例如为部分编译形式的代码中间源和目标代码,或其他任何适合在根据本发明的处理实施中使用的形式。该载体可以是任何可以执行程序的实体或装置。
例如,载体可以包括例如ROM的存储媒介,例如CD ROM或半导体ROM;或例如软盘或硬盘的磁性记录媒介。另外,载体可以是例如电学或光学信号的可传导载体,该载体可以通过电缆或光缆或由无线电或其他方式转换。
当该程序被实施在可以由电缆或其他装置或方法直接转换的信号中,该载体可以由这样的电缆或其他装置或方法构成。
可选地,载体可以是其中实施了程序的集成电路,该集成电路适用于执行或用于该相关处理的执行。

Claims (7)

1.一种在执行至少一个计算机程序期间控制对缓存结构的访问的装置,所述缓存结构包括多个缓存组,所述装置包括:
在执行所述至少一个计算机程序期间生成种子值的种子值生成器;以及
参数散列函数生成器,用于生成访问所述缓存结构的缓存组标识符,
所述参数散列函数生成器具有:
(i)第一寄存器,从所述种子值生成器接收种子值;
(ii)第二寄存器,接收地址的预定位;
(iii)逻辑,用于基于所述种子值或基于所述预定位中的部分位置换所述预定位;
其中,所述逻辑的输出:
(a)对应于所述缓存组标识符,所述缓存组标识符用于以所生成的缓存组标识符被分配给所述缓存结构的每个缓存组的真实概率访问与所述缓存结构关联的主存取器;以及
(b)具有以下属性,其中,对于两个地址的预定位,参数散列函数的结果为给定种子值生成相同的缓存组标识符,所述置换为其他种子值生成不同的缓存组标识符,从而防止两个地址系统性获得用于所有种子的相同的缓存组标识符;
其中,所述地址包括具有三个部分的一连串位,所述三个部分中的第一部分对应于标签,第二部分对应于索引,以及第三部分对应于偏移量,以及其中所述地址的预定位包括所述一连串位的所述第一部分和所述第二部分。
2.根据权利要求1所述的装置,其中,所述缓存结构包括2n组,并且所生成的缓存组标识符包括n位。
3.根据权利要求1至2中的任一项所述的装置,其中,所述缓存结构每组包括至少一个缓存线。
4.根据权利要求1至2中的任一项所述的装置,其中,所述种子值生成器包括伪随机数发生器。
5.根据权利要求1至2中的任一项所述的装置,还包括用于存储所生成的种子值的存储器模块。
6.一种在执行至少一个计算机程序期间控制对缓存结构的访问的方法,所述缓存结构包括多个缓存组,所述方法包括:
在执行所述至少一个计算机程序期间生成一个或多个种子值;
接收访问与缓存结构关联的主存储器的地址;
生成访问所述缓存结构的缓存组标识符,所述缓存组标识符通过结合所生成的种子值和所接收的地址的预定位生成,
其中,生成访问所述缓存结构的缓存组标识符包括:
从生成的所述一个或多个种子值接收种子值;
接收地址的预定位;
基于所述种子值或基于地址的所述预定位中的部分位置换所述预定位;
其中,所述置换的输出:
(a)对应于所述缓存组标识符,所述缓存组标识符用于以所生成的缓存组标识符被分配给所述缓存结构的每个缓存组的真实概率访问与所述缓存结构关联的主存取器;以及
(b)具有以下属性,其中,对于两个地址的预定位,参数散列函数的结果为给定种子值生成相同的缓存组标识符,所述置换为其他种子值生成不同的缓存组标识符,从而防止两个地址系统性获得用于所有种子的相同的缓存组标识符;
其中,所述地址包括具有三个部分的一连串位,所述三个部分中的第一部分对应于标签,第二部分对应于索引,以及第三部分对应于偏移量,以及其中所述地址的预定位包括所述一连串位的所述第一部分和所述第二部分。
7.一种存储介质,包括程序指令,所述程序指令使计算机执行根据权利要求6所述的控制对缓存结构的访问的方法,其中所述缓存结构包括多个缓存组。
CN201310418254.0A 2012-09-14 2013-09-13 用于控制对缓存结构的访问的装置 Active CN103823763B (zh)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201261700990P 2012-09-14 2012-09-14
EP12184447.6 2012-09-14
EP12184447.6A EP2709017B1 (en) 2012-09-14 2012-09-14 Device for controlling the access to a cache structure
US61/700,990 2012-09-14

Publications (2)

Publication Number Publication Date
CN103823763A CN103823763A (zh) 2014-05-28
CN103823763B true CN103823763B (zh) 2018-08-28

Family

ID=46845625

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201310418254.0A Active CN103823763B (zh) 2012-09-14 2013-09-13 用于控制对缓存结构的访问的装置

Country Status (5)

Country Link
US (1) US9396119B2 (zh)
EP (1) EP2709017B1 (zh)
JP (1) JP2014059871A (zh)
CN (1) CN103823763B (zh)
ES (1) ES2546072T3 (zh)

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9367456B1 (en) * 2013-06-14 2016-06-14 Marvell International Ltd. Integrated circuit and method for accessing segments of a cache line in arrays of storage elements of a folded cache
US9652397B2 (en) * 2014-04-23 2017-05-16 Texas Instruments Incorporated Dynamic power reduction and performance improvement in caches using fast access
WO2016009247A1 (en) * 2014-07-14 2016-01-21 Via Alliance Semiconductor Co., Ltd. Cache system with primary cache and overflow cache that use different indexing schemes
US10089238B2 (en) * 2014-07-17 2018-10-02 Qualcomm Incorporated Method and apparatus for a shared cache with dynamic partitioning
US9990492B2 (en) * 2014-07-23 2018-06-05 Grammatech, Inc. Systems and/or methods for automatically protecting against memory corruption vulnerabilities
GB2530722B (en) 2014-09-19 2016-08-17 Imagination Tech Ltd Cache hashing
WO2016055828A1 (en) * 2014-10-08 2016-04-14 Via Alliance Semiconductor Co., Ltd. Cache system with primary cache and overflow fifo cache
DE102015205827A1 (de) 2015-03-31 2016-10-06 Siemens Aktiengesellschaft Verfahren zum Schutz sicherheitsrelevanter Daten in einem Cachespeicher
US9846648B2 (en) * 2015-05-11 2017-12-19 Intel Corporation Create page locality in cache controller cache allocation
CN105335520B (zh) * 2015-11-24 2018-11-16 交控科技股份有限公司 一种基于地铁综合自动化系统的数据处理方法及处理器
GB2546731B (en) * 2016-01-20 2019-02-20 Advanced Risc Mach Ltd Recording set indicator
GB2542646B (en) 2016-03-18 2017-11-15 Imagination Tech Ltd Non-linear cache logic
GB2560336B (en) * 2017-03-07 2020-05-06 Imagination Tech Ltd Address generators for verifying integrated circuit hardware designs for cache memory
US11200166B2 (en) 2019-07-31 2021-12-14 Micron Technology, Inc. Data defined caches for speculative and normal executions
US11010288B2 (en) 2019-07-31 2021-05-18 Micron Technology, Inc. Spare cache set to accelerate speculative execution, wherein the spare cache set, allocated when transitioning from non-speculative execution to speculative execution, is reserved during previous transitioning from the non-speculative execution to the speculative execution
US11194582B2 (en) 2019-07-31 2021-12-07 Micron Technology, Inc. Cache systems for main and speculative threads of processors
US11048636B2 (en) * 2019-07-31 2021-06-29 Micron Technology, Inc. Cache with set associativity having data defined cache sets

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1474279A (zh) * 2001-08-08 2004-02-11 ��ʽ���綫֥ 微处理器
CN1956101A (zh) * 2005-10-27 2007-05-02 国际商业机器公司 用于处理存储阵列中的缺陷的方法和系统

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5649143A (en) * 1995-06-02 1997-07-15 Sun Microsystems, Inc. Apparatus and method for providing a cache indexing scheme less susceptible to cache collisions
US6275919B1 (en) * 1998-10-15 2001-08-14 Creative Technology Ltd. Memory storage and retrieval with multiple hashing functions
GB2412987B (en) * 2002-04-15 2005-12-21 Hewlett Packard Co A programmable microprocessor cache index hashing function
US20050259819A1 (en) * 2002-06-24 2005-11-24 Koninklijke Philips Electronics Method for generating hashes from a compressed multimedia content
US7606994B1 (en) * 2004-11-10 2009-10-20 Sun Microsystems, Inc. Cache memory system including a partially hashed index
US7366871B2 (en) * 2004-11-18 2008-04-29 Sun Microsystems, Inc. Apparatus and method for determining stack distance including spatial locality of running software for estimating cache miss rates based upon contents of a hash table
US7373480B2 (en) * 2004-11-18 2008-05-13 Sun Microsystems, Inc. Apparatus and method for determining stack distance of running software for estimating cache miss rates based upon contents of a hash table
US20060206706A1 (en) * 2005-03-14 2006-09-14 Bryan Dietz Method and apparatus for dynamically distributing data flow in a communication network
US7937535B2 (en) * 2007-02-22 2011-05-03 Arm Limited Managing cache coherency in a data processing apparatus
US7743200B1 (en) * 2007-05-24 2010-06-22 Juniper Networks, Inc. Instruction cache using perfect hash function
US7979640B2 (en) * 2008-07-28 2011-07-12 Oracle America, Inc. Cache line duplication in response to a way prediction conflict
US8055848B2 (en) * 2008-07-31 2011-11-08 Samsung Electronics Co., Ltd. Method and system for securing instruction caches using substantially random instruction mapping scheme

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1474279A (zh) * 2001-08-08 2004-02-11 ��ʽ���綫֥ 微处理器
CN1956101A (zh) * 2005-10-27 2007-05-02 国际商业机器公司 用于处理存储阵列中的缺陷的方法和系统

Also Published As

Publication number Publication date
EP2709017A1 (en) 2014-03-19
EP2709017B1 (en) 2015-05-27
ES2546072T3 (es) 2015-09-18
US20140082284A1 (en) 2014-03-20
JP2014059871A (ja) 2014-04-03
US9396119B2 (en) 2016-07-19
CN103823763A (zh) 2014-05-28

Similar Documents

Publication Publication Date Title
CN103823763B (zh) 用于控制对缓存结构的访问的装置
Qureshi CEASER: Mitigating conflict-based cache attacks via encrypted-address and remapping
Seong et al. Security refresh: Prevent malicious wear-out and increase durability for phase-change memory with dynamically randomized address mapping
Sanchez et al. The ZCache: Decoupling ways and associativity
US9141558B2 (en) Secure memory control parameters in table look aside buffer data fields and support memory array
CN105701022B (zh) 组相联高速缓存
Zhang et al. Fork path: improving efficiency of oram by removing redundant memory accesses
JP5100176B2 (ja) マルチプロセッサシステム
JP2017503299A (ja) モードに応じてセットの1つ又は複数を選択的に選択するように動的に構成可能であるマルチモード・セット・アソシエイティブ・キャッシュ・メモリ
JP2007293839A (ja) ロックされたキャッシュ内のセットの置換を管理するための方法、コンピュータ・プログラム、キャッシング・システムおよびプロセッサ
JP6821879B2 (ja) 非対称セットの結合キャッシュ
JP2017507442A (ja) モードに応じてウェイの全部又はサブセットに選択的に割り当てるように動的に構成可能であるマルチモード・セット・アソシエイティブ・キャッシュ・メモリ
Zhang et al. Side channel vulnerability metrics: the promise and the pitfalls
JP2017503298A (ja) アドレス・タグ・ビットに基づく動的キャッシュ置換ウェイ選択
KR20100011897A (ko) 캐시 디렉터리의 실제 페이지 번호 비트의 테스트
Mittal et al. EqualWrites: Reducing intra-set write variations for enhancing lifetime of non-volatile caches
CN105446897A (zh) 高速缓存哈希
CN108351833A (zh) 用来压缩密码元数据以用于存储器加密的技术
US7761662B2 (en) Cache memory device and microprocessor
EP0745940A1 (en) An apparatus and method for providing a cache indexing scheme less susceptible to cache collisions
Chen et al. Cachetree: Reducing integrity verification overhead of secure nonvolatile memories
CN107203481B (zh) 逻辑器件、生成地址的方法、集成电路制造系统和介质
Omran et al. Implementation of lru replacement policy for reconfigurable cache memory using fpga
Bao et al. Reducing timing side-channel information leakage using 3D integration
Lipp Cache attacks on arm

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant