CN101231621B - 隐藏存储器访问模式 - Google Patents

隐藏存储器访问模式 Download PDF

Info

Publication number
CN101231621B
CN101231621B CN2007103035587A CN200710303558A CN101231621B CN 101231621 B CN101231621 B CN 101231621B CN 2007103035587 A CN2007103035587 A CN 2007103035587A CN 200710303558 A CN200710303558 A CN 200710303558A CN 101231621 B CN101231621 B CN 101231621B
Authority
CN
China
Prior art keywords
memory cell
speed cache
loaded
described high
module
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.)
Expired - Fee Related
Application number
CN2007103035587A
Other languages
English (en)
Other versions
CN101231621A (zh
Inventor
M·J·巴克斯顿
E·F·布里克尔
Q·A·雅克布森
H·王
B·V·帕特尔
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.)
Sony Corp of America
Original Assignee
Intel Corp
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 Intel Corp filed Critical Intel Corp
Publication of CN101231621A publication Critical patent/CN101231621A/zh
Application granted granted Critical
Publication of CN101231621B publication Critical patent/CN101231621B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0842Multiuser, multiprocessor or multiprocessing cache systems for multiprocessing or multitasking
    • 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/1458Protection against unauthorised use of memory or access to memory by checking the subject access rights
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/78Protecting 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30047Prefetch instructions; cache control instructions

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Storage Device Security (AREA)
  • Ceramic Products (AREA)
  • Multi Processors (AREA)

Abstract

本发明提供了一种用于隐藏存储器访问模式的方法和系统。对于与一个线程相关联的一组存储器单元中的每个存储器单元,设置与所述存储器单元相关联的指示,以使得如果所述存储器单元的数据被从高速缓存中清除,则请求一个信号;以及响应于所述信号,将该组存储器单元重新加载到所述高速缓存中。

Description

隐藏存储器访问模式
背景技术
在基于处理器的系统上执行的程序在程序访问存储器时的访问模式可能会不经意地暴露该程序的私有或者机密的信息。例如,对秘密加密密钥进行编码或者译码的应用程序的访问模式在一些情况下可以用于确定密钥中的比特值。使用此类信息泄露的其他应用也需要正视。
在一个具体实例中,如果在基于处理器的系统上执行的两个线程(在该申请的情况下也可互换地称为“进程”)共享一个高速缓冲存储器(高速缓存),则一个线程(“侦测”线程)有可能观察到关于另一个线程(“目标”线程)的访问模式的信息。这是因为目标线程的访问模式能够使侦测线程的数据从高速缓冲存储器中清除出去,从而能够变更侦测线程访问存储器的访问时间。
根据基于处理器的系统中的不同的处理器体系结构,侦测线程可以时间或者空间地实现此类信息泄漏检测。在时间的情况下,侦测线程和目标线程可以运行在单处理器上,并且可以在执行时轮流使用,共享该单处理器的高速缓存。在空间的情况下,侦测线程和目标线程可以运行在多处器系统的不同处理器上,或者运行在多核处理器的不同核上,但是如果两个处理器或者两个核共享公共的高速缓存,则侦测线程同样可以实现此类检测。
附图说明
图1描述了实施例中的高速缓冲存储器。
图2a和2b描述了一个实施例中的处理流程。
图3描述了一个实施例中的基于处理器的系统。
具体实施方式
在本发明的一个实施例中,存储器属性(例如如在上面的交叉引用相关申请列表中列出的、Quinn等的美国专利申请No.11/349,661中所述),以及与存储器相关联的一个特殊段,或者“块”可以用来指示存储器块的多个性质。例如,在一个实施例中,用户可以定义与每个存储器块相关的属性位来指示它们相关的存储器块的任意数目的性质,如访问权限。在一个实施例中,每个存储器块可以对应于一个特定的高速缓存行,如一级(L1)或者二级(L2)高速缓冲存储器中的一个高速缓存行,并且所述属性可以用存储有高速缓存行或者与高速缓存行相关联的位存储单元来表示。在其他实施例中,与属性相关的存储器块的大小可以比高速缓存行大或者小。
根据本发明的一个实施例,图1举例说明了一个高速缓冲存储器的一部分,该高速缓冲存储器的每个高速缓存行具有一组相关联的属性位存储单元。具体而言,图1举例说明了包括高速缓存行105的高速缓冲存储器100,其与一个特定的存储器块相对应(未示出)。高速缓存行105有许多与之相关联的属性以比特的形式存储在存储单元110中。存储单元110内有一组与高速缓存行105相关联的属性位115,其能够存储表示该高速缓存行的各种性质的比特,其可以被在对该高速缓存行进行访问的基于处理器的系统上执行的程序使用。
在图1所示的实施例中,该组属性位包含4比特,其可以根据属性位是如何分配的来表示高速缓存行的一个或多个性质。例如,在一个实施例中,属性位指示该程序最近已经检验过该存储器块适合于程序要访问的当前部分。在其他实施例中,例如,属性位也可以指示该程序已经记录了对该存储器块的最近一次引用以供性能监测工具做后续分析。在其他实施例中,属性位可以指定其他的许可、性质等。
除了属性位,高速缓存的每一行还具有存储在状态存储单元120中的与之相关联的状态值。例如,在一个实施例中,状态存储单元120包含与高速缓存行105相关联的状态位125,其指明该高速缓存行是处于修改状态、独占状态、共享状态,还是无效状态。状态值可以控制各种软件线程、核,或者处理器是否可以使用和/或修改存储在特定高速缓存行中的信息。在一些实施例中,状态值包括在高速缓存行105的属性位115中。
在本发明的一个实施例中,与存储器块相关联的属性可以由特定操作来访问、修改,或者控制,所述特定操作例如指令或对指令进行译码得到的微操作。例如,在一个实施例中,可以使用从高速缓存行加载信息并且设置对应的属性位的指令(例如,“LOAD_SET”指令)。在其他实施例中,除LOAD_SET指令之外,还可以使用从高速缓存行加载信息并且检验对应的属性位的指令(例如,“LOAD_CHECK”指令)。
在其他实施例中,还可以使用其他指令来控制属性位以及访问对应的高速缓存数据。例如,在一个实施例中,可以使用将信息存储到高速缓存行,同时检验或设置(或检验并设置)对应的属性位的指令(例如“STORE_SET”指令和/或“STORE_CHECK”指令)。在一些实施例中,可以使用指令来控制或访问没有相关联的高速缓冲存储器操作(如加载或者存储)的属性位。例如,清除指定位置(例如,高速缓存中每一行的第三属性位)处的所有属性位的“CLEAR_MAT”指令。
在检验出与高速缓存行相关联的属性的指令的情况下,可以基于所检验的属性来定义一个或多个处理器或者处理器核内的一个或多个体系结构方案来执行某些事件。响应于属性检验还可以执行其他类型的事件。例如,在一个实施例中,可以定义一个体系结构方案来比较属性位与一组特定的数据,并基于比较结果调用一个事件。该事件可以调用一个服务例程,该服务例程在将控制返回给系统中运行的线程或者其他进程之前,响应于方案结果来执行各种操作。
例如,可以定义的一种方案是在检测到一个不期望的存储器状态(Unexpected Memory State)时调用一个事件及其相应的处理程序(UMS方案)。如果一个线程或其他进程基于高速缓存行的属性位来试图访问期望具有某个状态的该高速缓存行时,该方案将会很有用,反之该高速缓存行处于另一存储器状态,指示该高速缓存行不再与特定的线程或者进程相关联。可以定义的另一种方案是在检测到高速缓存行无效时调用一个事件及其相应的处理程序,该无效可能是由一个线程试图占有该高速缓存行以修改该行的内容所明示的,或者是由于高速缓存管理系统为了为其他要高速缓存的存储器单元腾出空间而将该行清除所引起的。该方案被称为存储器行无效(Memory LineInvalidate,MLI)方案。该方案对于一个线程检测先前分配给该线程的存储器单元的高速缓存行何时被其他线程从高速缓存中清除是很有用的。在一些实施例中,可以根据对高速缓存行存储器属性的检验来定义其他方案。在其他实施例中,还可以检验比高速缓存行具有更精细粒度的单元的存储器属性。
在一个实施例中,如上所述的功能或者相当的功能可以用来隐藏安全程序或者线程的存储器访问模式。在如图2a所述的这一实施例中,一个线程首先识别其感兴趣的所有存储器单元或者块。这些被称为“关键”存储器单元,因为它们对于线程的安全性或者对于加密或解密处理中涉及的密钥的保密都是十分关键的。然而,一个线程可能由于任意目的而识别任意组的存储器单元。这些存储器单元的准确的识别方法取决于该线程作为其一部分的程序的目的和实现,这已经超出了此处的揭示范围。当使用此技术来保护密码算法AES以避免高速缓存侧通道攻击时,程序可以指示s-Box表作为关键存储器单元,这是由于对这些表格的访问是依靠密钥的。
一旦识别出该组存储器单元或块,并且线程在200开始执行,则首先在210注册一个处理程序来响应于此实施例中的存储器行无效(MLI)方案。然后该线程在220使用LOAD_SET或者类似的指令将所有的关键存储器单元加载到高速缓存中,来设置与关键存储器单元被加载到的每一高速缓存行相关联的属性位。有两种方法使用该属性设置。在一个实施例中,设置所选择的属性位来向下层的处理器或者处理器核指示其逻辑应当响应于该高速缓存行的MLI方案。换句话说,在这种情况下,这样标记的高速缓存行的无效将使得产生一个事件,该事件导致处理器或处理器核对该线程注册的处理程序进行调用。在另一个实施例中,只要执行LOAD_CHECK指令,则处理器就检验该属性位是否被设置。如果已经设置,则执行正常进行。如果没有设置,则调用一个处理程序以通过使用LOAD_SET或者类似指令来将所有的关键存储器单元重新加载到高速缓存中。
由线程在220对关键存储器单元的实际加载是按照随机顺序或者预定的任意顺序进行的,该顺序最好与线程访问存储器单元的实际顺序无关。这是为了防止任何与高速缓存加载顺序有关的信息泄漏,以免被能够观察高速缓存加载顺序的侦测线程所使用。
然后该线程在230开始执行要使用该存储器单元所执行的实际工作。正如上述指出的,由线程完成的准确工作可能依据其目的不同而不同,或者还可能包含涉及关键存储器单元的各种类型的加密功能,或者其他需要防止信息泄漏的保密和安全性动作,以及许多其他类型的功能。在240只要存在更多工作需要完成,这一处理将继续,然后线程在250结束。
如果在220加载了关键存储器单元之后,在该线程的执行期间,一个外部的异步事件引起高速缓存的任意行的清除,其中线程已经为该行设置了属性位,则在260调用MLI方案。这引起下层处理器或者处理器核的逻辑将控制转移到先前由该线程在210注册的处理程序。该处理程序的主要功能是防止侦测线程使用如前所述的高速缓存跟踪(cache walk)技术或者类似的技术来检测该线程的存储器访问模式。在此实施例中,这是通过在280以某种任意顺序或者某种随机顺序重新加载该线程的关键存储器单元来完成的。然后处理程序终止,将控制返回给线程定序器。因此,可以阻止侦测线程用它的数据预加载到高速缓存然后观察执行私有功能的目标线程的高速缓存行加载模式的任何在先企图。这是因为,侦测线程替换任意包含关键存储器单元的高速缓存行的任何企图都将导致所有行在高速缓存中重新安装,从而隐藏了目标线程的实际访问模式。
当由于上下文切换而导致线程没有执行时,如果关键数据从高速缓存中清除出来,则需要执行更进一步的处理。在一个实施例中,如图2b中所述的额外的处理,线程可能使用一种机制来检测是否进行了上下文切换(在上述相关申请交叉引用列表中所引用的、McKeen等的美国专利申请No.11/513,871中描述了一种这样的机制)。如果在205线程在上下文切换之后返回,并且处理在207检测到已经发生了上下文切换,则该处理可以在215检验在线程未执行期间是否清除了任何关键数据。如果清除了数据,则在225该处理对它的集合中的所有关键数据执行LOAD_SET,并且然后继续执行。在一些场合,处理可能避开在215对数据清除的检测,并且在225在每个上下文切换之后默认地把所有关键存储器单元重新加载到高速缓存中。
可以理解图2a和2b中的处理可以在一个实施例中共存,从而如在图2a中那样允许在线程执行期间对数据清除进行检测,同时如图2b中那样在线程上下文切换期间还可以处理可能的数据清除。
在另一处理上下文切换的实施例中,对关键数据的所有数据访问是由LOAD_CHECK指令完成的。也可以使用MLI方法。然后在上下文切换之后,一旦执行一个LOAD指令来访问在处理没有执行时就被清除的高速缓存行,则所有的关键数据都将被载入。在另一实施例中,如果处理器检测到可能已经有一个上下文切换,则处理器可以使用CLEAR_MAT指令或者相似的指令来清除所有的存储器属性。通过这种方式,不管在上下文切换之后哪个数据元素被访问,LOAD_CHECK指令都触发处理程序来对该线程的集合中的所有关键数据执行LOAD_SET指令。
在其他实施例中,如上所述的流程可能发生许多变化。例如,由一个处理程序线程(软件)执行的所述的动作序列可以选择性地由处理器逻辑或者处理器核逻辑以硬件执行。与高速缓存行相关联的属性的准确特征可以不同,如,在一些实施例中,可能只存在与存储器行无效方案相对应的属性位,而其他属性可以存在或者不存在。此外,属性可以被记录为与高速缓存或者独立寄存器或者其他特殊的存储器中的行直接相关的附加位。MLI方案可能引起额外的动作,如日志动作或者计数器递增动作,以及其他动作。由处理程序执行的寻求保护的实际工作可能依据其特定目的而不同。在线程和MLI方案处理程序中把关键存储器单元加载到高速缓存的方式可能是不同的。在其他实施例中,不是密码操作所涉及的所有存储器单元都被认为是关键的,也不是所有的关键存储器单元都将其属性位设置在高速缓存中。许多其他的变化也是可能的。
图3举例说明了可以使用本发明的一个实施例的前端总线(FSB)计算机系统。处理器305访问一级(L1)高速缓冲存储器310和主存储器315中的数据。在本发明的其他实施例中,高速缓冲存储器可以是二级(L2)高速缓存或者计算机系统存储器体系中的其他存储器。此外,在一些实施例中,图3所示的计算机系统可以既包含L1高速缓存又包含L2高速缓存。
在图3中处理器的内部示出了用于机器状态的存储区域306。在一个实施例中,存储区域可以是一组寄存器,而在其他实施例中该存储区域可以是其他存储器结构。该处理器可以具有任意多个处理核。然而,本发明的其他实施例可以在系统的其他设备,如独立的总线代理中实现,或者以硬件、软件,或者其组合的方式分布在整个系统中。
主存储器315可以以不同的存储器源来实现,如动态随机访问存储器(DRAM)、硬盘驱动器(HDD)320,或者通过网络接口330与计算机系统远程连接的、包含各种存储设备和技术的存储器源。高速缓冲存储器可以位于处理器内部或者邻近处理器的位置,诸如在处理器的局部总线307上。
此外,高速缓冲存储器可以包含相对快的存储器单元,如六晶体管(6T)单元,或者其他具有近似相等或者更快的访问速度的存储器单元。图3的计算机系统可以是总线代理的点对点(PtP)网络,如微处理器,其通过专用于PtP网络上的每个代理的总线信号来进行通信。
在前述的描述中,为了解释的目的,阐明了许多具体细节以彻底理解所描述的实施例,然而,本领域技术人员很容易意识到也可以没有这些具体细节而实现其他实施例。
上述详细描述的一些部分是用对基于处理器的系统内的数据位进行的操作的算法和符号表示来表达的。这些算法描述和表示是本领域技术人员向本领域其他人员最有效地传达他们的工作内容所使用的手段。这些操作是需要物理量的物理操作。这些量以下述形式出现:电、磁、光学或者其他可以存储、传送、合并、比较和其他操作的物理信号。已经证明,在有些时候,主要是出于习惯使用的原因,将这些信号称为比特、值、元素、符号、字符、项、数目等是非常方便的。
然而,应当记住,所有这些以及类似的术语与适当的物理量相关联,并且仅仅是应用于这些物理量的方便的标签而已。除非特别声明,否则的话,从说明书来看显然,诸如“执行”或“处理”或“计算”或“演算”等术语可以指基于处理器的系统或类似的电子计算设备的动作和处理,所述基于处理器的系统或类似的电子计算设备操作并将基于处理器的系统的存储装置内的用物理量表示的数据转换为其他类似表示的数据,或者其他这种信息存储、传输或者显示设备。
在实施例的描述中,可能要参考附图。在附图中,在全部几个视图中相同的标号描述了基本相似的组件。还可以使用其他实施例并且可以进行结构、逻辑和电气改变。此外,应当理解,各个实施例尽管不同,但并不一定是互相排斥的。例如,一个实施例中描述的特定特征、结构或特性可以包含在其他实施例中。
更进一步地,在处理器内实现的实施例的设计可能经历许多阶段,从创建到模拟到安装。表示一个设计的数据可以以多种方式来表示该设计。首先,如在模拟中所使用的,可以用硬件描述语言或另外的功能描述语言来表示硬件。另外,可以在设计处理的某些阶段产生具有逻辑和/或晶体管门的电路级模型。更进一步地,大多数设计在某个阶段可以达到表示硬件模型中的不同设备的物理放置的数据级别。在使用传统半导体构造技术的情况下,表示硬件模型的数据可能是为用于生产集成电路的掩模指定各种特征在不同掩模层上是否存在的数据。在设计的任何表示中,数据可以存储在任何形式的机器可读介质中。用来传输这种信息的调整或者生成的光或电波、存储器,或者诸如盘片之类的磁的或者光的存储装置可以是所述机器可读介质。这些介质中的任一种均可以“携带”或者“指示”该设计或者软件信息。当指示或者携带有代码或者设计的电载波被传输时,到执行电信号的复制、缓冲或者重新传输的程度,生成新的拷贝。因此,通信供应商或者网络供应商可以生成组成或者表示实施例的产品(载波)的拷贝。
实施例也可以以程序产品的形式提供,所述程序产品可以包括在其上存储有数据的机器可读介质,所述数据在被机器访问时可以使得该机器根据所要求的主题来执行处理。所述机器可读介质可以包括,但不限于,软盘、光盘、DVD-ROM盘、DVD-RAM盘、DVD-RW盘、DVD+RW盘、CD-R盘、CD-RW盘、CD-ROM盘以及磁光盘、ROM、RAM、EPROM、EEPROM、磁或者光卡、闪存,或者适于存储电子指令的其他类型的媒体/机器可读介质。而且,实施例也可以以程序产品的形式下载,其中可以经由通信链路(如调制解调器或者网络连接)利用实现在载波或者其他传播介质中的数据信号来将程序从远程数据源传送到请求设备上。
许多方法是以其最基本的形式描述的,但是在不背离所要求的主题的基本范围的情况下,可以向这些方法添加步骤或者从其删除步骤,并且,可以向任何所描述的消息添加信息或者从其删减信息。许多更进一步的修改或者改编对于本领域技术人员来说也是显而易见的。详细的实施例并不是用来限制所要求的主题的而是用来举例说明的。所要求主题的范围不是由上述提供的具体实例决定而仅仅是由下述的权利要求所决定的。

Claims (30)

1.一种用于隐藏访问模式的方法,所述方法包括:
处理与一组存储器单元中的一个存储器单元相关联的目标线程;
设置与该个存储器单元相关联的针对该目标线程的指示,以使得如果该个存储器单元的数据被从高速缓存中清除,则请求一个信号;以及
响应于所请求的信号,将该组存储器单元重新加载到所述高速缓存中。
2.如权利要求1所述的方法,进一步包括以下述顺序中至少一种将该组存储器单元加载到所述高速缓存中:
随机顺序;以及
预定顺序。
3.如权利要求1所述的方法,其中所述信号进一步包括中断,所述方法进一步包括注册一个处理程序来响应所述信号。
4.如权利要求1所述的方法,其中该组存储器单元具有至少部分地对所述目标线程私有的数据。
5.如权利要求1所述的方法,其中所述信号包括中断,并且其中将该组存储器单元重新加载到所述高速缓存中进一步包括以下述顺序中至少一种将该组存储器单元重新加载到所述高速缓存中:
随机顺序;以及
预定顺序。
6.如权利要求3所述的方法,其中将该组存储器单元重新加载到所述高速缓存中进一步包括由所述处理程序以下述顺序中至少一种将该组存储器单元重新加载到所述高速缓存中:
随机顺序;以及
预定顺序。
7.如权利要求1所述的方法,其中设置与该个存储器单元相关联的针对该目标线程的指示进一步包括将与该个存储器单元的数据的高速缓存行相关联的属性位设定为预定值,所述方法进一步包括:
检测该个存储器单元的数据被从所述高速缓存中清除;以及
生成所述中断。
8.如权利要求1所述的方法,进一步包括:
由所述目标线程检测在上下文切换之后所述目标线程的执行得以继续;以及
由所述目标线程至少部分响应于该检测而将该组存储器单元重新加载到所述高速缓存中。
9.如权利要求1所述的方法,其中所述信号是事件,该事件包括存储器行无效事件。
10.如权利要求1所述的方法,其中执行将该组存储器单元重新加载到所述高速缓存中,以针对侦测线程来隐藏所述目标线程的访问模式。
11.一种用于隐藏访问模式的系统,所述系统包括:
存储器,以及
具有高速缓存的处理器,所述处理器与所述存储器可通信地耦合,所述处理器具有用于以下的逻辑:
处理与所述存储器的一组存储器单元中的一个存储器单元相关联的目标线程;
设置与该个存储器单元相关联的针对该目标线程的指示,以使得如果该个存储器单元的数据被从所述高速缓存中清除,则请求一个信号;以及
响应于所请求的信号,将该组存储器单元重新加载到所述高速缓存中。
12.如权利要求11所述的系统,其中所述目标线程以下述顺序中至少一种将该组存储器单元加载到所述高速缓存中:
随机顺序;以及
预定顺序。
13.如权利要求11所述的系统,其中所述信号进一步包括中断,并且其中所述目标线程注册一个处理程序来响应所述信号。
14.如权利要求11所述的系统,其中该组存储器单元具有至少部分地对所述目标线程私有的数据。
15.如权利要求11所述的系统,其中所述信号包括中断,并且其中所述处理器以下述顺序中至少一种将该组存储器单元重新加载到所述高速缓存中:
随机顺序;以及
预定顺序。
16.如权利要求13所述的系统,其中所述处理程序以下述顺序中至少一种将该组存储器单元重新加载到所述高速缓存中:
随机顺序;以及
预定顺序。
17.如权利要求11所述的系统,其中所述处理器的逻辑通过将与该个存储器单元的数据的高速缓存行相关联的属性位设定为预定值,来设置与所述存储器单元相关联的针对该目标线程的指示,并且其中所述系统进一步包括用于检测该个存储器单元的数据被从所述高速缓存中清除并生成所述中断的另一逻辑。
18.如权利要求11所述的系统,其中所述目标线程用于:
检测在上下文切换之后所述目标线程的执行得以继续;以及
至少部分响应于该检测而将该组存储器单元重新加载到所述高速缓存中。
19.如权利要求11所述的系统,其中所述信号是事件,该事件包括存储器行无效事件。
20.如权利要求11所述的系统,其中所述处理器的逻辑将该组存储器单元重新加载到所述高速缓存中,以针对侦测线程来隐藏所述目标线程的访问模式。
21.一种用于隐藏访问模式的装置,所述装置包括:
用于处理与一组存储器单元中的一个存储器单元相关联的目标线程的模块;
用于设置与该个存储器单元相关联的针对该目标线程的指示的模块,以使得如果该个存储器单元的数据被从高速缓存中清除,则请求一个信号;以及
用于响应于所请求的信号,将该组存储器单元重新加载到所述高速缓存中的模块。
22.如权利要求21所述的装置,进一步包括用于以下述顺序中至少一种将该组存储器单元加载到所述高速缓存中的模块:
随机顺序;以及
预定顺序。
23.如权利要求21所述的装置,其中所述信号进一步包括中断,所述装置进一步包括用于注册一个处理程序来响应所述信号的模块。
24.如权利要求21所述的装置,其中该组存储器单元具有至少部分地对所述目标线程私有的数据。
25.如权利要求21所述的装置,其中所述信号包括中断,并且其中用于将该组存储器单元重新加载到所述高速缓存中的模块进一步包括用于以下述顺序中至少一种将该组存储器单元重新加载到所述高速缓存中的模块:
随机顺序;以及
预定顺序。
26.如权利要求23所述的装置,其中用于将该组存储器单元重新加载到所述高速缓存中的模块进一步包括所述处理程序以下述顺序中至少一种将该组存储器单元重新加载到所述高速缓存中:
随机顺序;以及
预定顺序。
27.如权利要求21所述的装置,其中用于设置与该个存储器单元相关联的针对该目标线程的指示的模块进一步包括用于将与该个存储器单元的数据的高速缓存行相关联的属性位设置为预定值的模块,所述装置进一步包括:
用于检测该个存储器单元的数据被从所述高速缓存中清除的模块;以及
用于生成所述中断的模块。
28.如权利要求21所述的装置,进一步包括:
用于检测所述目标线程已经在上下文切换之后继续执行的模块;以及
用于至少部分响应于该检测而将该组存储器单元重新加载到所述高速缓存中的模块。
29.如权利要求21所述的装置,其中所述信号是事件,该事件包括存储器行无效事件。
30.如权利要求21所述的装置,其中执行用于将该组存储器单元重新加载到所述高速缓存中的模块,以针对侦测线程来隐藏所述目标线程的访问模式。
CN2007103035587A 2006-12-27 2007-12-27 隐藏存储器访问模式 Expired - Fee Related CN101231621B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/646,642 US7610448B2 (en) 2006-12-27 2006-12-27 Obscuring memory access patterns
US11/646,642 2006-12-27

Publications (2)

Publication Number Publication Date
CN101231621A CN101231621A (zh) 2008-07-30
CN101231621B true CN101231621B (zh) 2011-10-19

Family

ID=39314963

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2007103035587A Expired - Fee Related CN101231621B (zh) 2006-12-27 2007-12-27 隐藏存储器访问模式

Country Status (5)

Country Link
US (2) US7610448B2 (zh)
EP (1) EP1939752B1 (zh)
CN (1) CN101231621B (zh)
AT (1) ATE473483T1 (zh)
DE (1) DE602007007566D1 (zh)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7610448B2 (en) * 2006-12-27 2009-10-27 Intel Corporation Obscuring memory access patterns
JP5217432B2 (ja) * 2007-12-28 2013-06-19 富士通株式会社 セクタ機能付きキャッシュメモリ
CN102436559B (zh) 2010-09-29 2016-06-01 联想(北京)有限公司 一种状态切换方法及系统
US9396135B2 (en) * 2011-05-18 2016-07-19 University Of North Texas Method and apparatus for improving computer cache performance and for protecting memory systems against some side channel attacks
US9495111B2 (en) * 2014-10-10 2016-11-15 The Boeing Company System and method for reducing information leakage from memory
CN105989282B (zh) * 2015-02-13 2019-09-24 联想(上海)信息技术有限公司 驱动部件控制方法、装置及电子设备
US10963567B2 (en) * 2017-10-12 2021-03-30 Microsoft Technology Licensing, Llc Speculative side-channel attack mitigations
US11144468B2 (en) * 2018-06-29 2021-10-12 Intel Corporation Hardware based technique to prevent critical fine-grained cache side-channel attacks
US20190042479A1 (en) * 2018-06-29 2019-02-07 Intel Corporation Heuristic and machine-learning based methods to prevent fine-grained cache side-channel attacks
CN110941569B (zh) * 2019-11-18 2021-01-26 新华三半导体技术有限公司 数据处理方法、装置及处理器芯片
US11704245B2 (en) 2021-08-31 2023-07-18 Apple Inc. Dynamic allocation of cache memory as RAM
US11893251B2 (en) * 2021-08-31 2024-02-06 Apple Inc. Allocation of a buffer located in system memory into a cache memory

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1659526A (zh) * 2002-06-04 2005-08-24 杉桥技术公司 具有基于线程标识符的缓存清除的多线程缓存方法和装置

Family Cites Families (64)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5202998A (en) 1990-08-31 1993-04-13 International Business Machines Corporation Fast, simultaneous multi-processor system status communication interface
US5428761A (en) * 1992-03-12 1995-06-27 Digital Equipment Corporation System for achieving atomic non-sequential multi-word operations in shared memory
KR940015822A (ko) 1992-12-30 1994-07-21 양승택 다중 프로세서 시스템에서 메모리 모듈의 상태변화 시험방법
US5555398A (en) 1994-04-15 1996-09-10 Intel Corporation Write back cache coherency module for systems with a write through cache supporting bus
US5794164A (en) * 1995-11-29 1998-08-11 Microsoft Corporation Vehicle computer system
JP3139392B2 (ja) 1996-10-11 2001-02-26 日本電気株式会社 並列処理システム
US6026471A (en) * 1996-11-19 2000-02-15 International Business Machines Corporation Anticipating cache memory loader and method
US5974438A (en) * 1996-12-31 1999-10-26 Compaq Computer Corporation Scoreboard for cached multi-thread processes
EP0856798B1 (en) 1997-01-30 2004-09-29 STMicroelectronics Limited A cache system
US5909698A (en) 1997-03-17 1999-06-01 International Business Machines Corporation Cache block store instruction operations where cache coherency is achieved without writing all the way back to main memory
US6094729A (en) 1997-04-08 2000-07-25 Advanced Micro Devices, Inc. Debug interface including a compact trace record storage
US5974507A (en) 1997-04-14 1999-10-26 International Business Machines Corporation Optimizing a cache eviction mechanism by selectively introducing different levels of randomness into a replacement algorithm
US6091956A (en) * 1997-06-12 2000-07-18 Hollenberg; Dennis D. Situation information system
US6405049B2 (en) * 1997-08-05 2002-06-11 Symbol Technologies, Inc. Portable data terminal and cradle
US6412056B1 (en) 1997-10-01 2002-06-25 Compac Information Technologies Group, Lp Extended translation lookaside buffer with fine-grain state bits
US6157986A (en) 1997-12-16 2000-12-05 Advanced Micro Devices, Inc. Fast linear tag validation unit for use in microprocessor
US6418542B1 (en) 1998-04-27 2002-07-09 Sun Microsystems, Inc. Critical signal thread
US6189112B1 (en) 1998-04-30 2001-02-13 International Business Machines Corporation Transparent processor sparing
US6282554B1 (en) 1998-04-30 2001-08-28 Intel Corporation Method and apparatus for floating point operations and format conversion operations
US6332181B1 (en) 1998-05-04 2001-12-18 International Business Machines Corporation Recovery mechanism for L1 data cache parity errors
JP3331592B2 (ja) 1998-05-22 2002-10-07 日本電気株式会社 キャッシュメモリ
JP3585091B2 (ja) * 1998-06-15 2004-11-04 富士通株式会社 記憶装置
US6366946B1 (en) 1998-12-16 2002-04-02 Microsoft Corporation Critical code processing management
US6636950B1 (en) 1998-12-17 2003-10-21 Massachusetts Institute Of Technology Computer architecture for shared memory access
JP2001019464A (ja) * 1999-07-05 2001-01-23 Sumitomo Electric Ind Ltd 光ファイバの線引き装置及び線引き方法
JP3607540B2 (ja) 1999-08-18 2005-01-05 エヌイーシーシステムテクノロジー株式会社 プログラム単位メモリアクセス属性管理方式
JP3611295B2 (ja) 2000-03-09 2005-01-19 インターナショナル・ビジネス・マシーンズ・コーポレーション コンピュータシステム、メモリ管理方法及び記憶媒体
US6748496B1 (en) 2000-04-18 2004-06-08 Ati International Srl Method and apparatus for providing cacheable data to a peripheral device
JP2002074922A (ja) * 2000-08-28 2002-03-15 Pioneer Electronic Corp 車載用オーディオ及び/又はビデオ装置
US6748501B2 (en) 2000-12-30 2004-06-08 International Business Machines Corporation Microprocessor reservation mechanism for a hashed address system
US7184003B2 (en) * 2001-03-16 2007-02-27 Dualcor Technologies, Inc. Personal electronics device with display switching
US7216242B2 (en) * 2001-03-16 2007-05-08 Dualcor Technologies, Inc. Personal electronics device with appliance drive features
JP2002342163A (ja) 2001-05-15 2002-11-29 Fujitsu Ltd マルチスレッドプロセッサ用キャッシュ制御方式
JP3661614B2 (ja) 2001-07-12 2005-06-15 日本電気株式会社 キャッシュメモリ制御方法及びマルチプロセッサシステム
DE10134717C2 (de) * 2001-07-17 2003-05-28 Daimler Chrysler Ag Verfahren zur Konfiguration eines Informationssystems
JP4434534B2 (ja) 2001-09-27 2010-03-17 株式会社東芝 プロセッサ・システム
US6785774B2 (en) 2001-10-16 2004-08-31 International Business Machines Corporation High performance symmetric multiprocessing systems via super-coherent data mechanisms
US6854039B1 (en) 2001-12-05 2005-02-08 Advanced Micro Devices, Inc. Memory management system and method providing increased memory access security
EP1456750A1 (en) 2001-12-12 2004-09-15 Telefonaktiebolaget LM Ericsson (publ) Collision handling apparatus and method
US20030126379A1 (en) 2001-12-31 2003-07-03 Shiv Kaushik Instruction sequences for suspending execution of a thread until a specified memory access occurs
US7215950B2 (en) * 2002-01-23 2007-05-08 General Motors Corporation Method of telematics unit configuration and activation using vehicle control buttons
JP3866597B2 (ja) 2002-03-20 2007-01-10 株式会社東芝 内部メモリ型耐タンパプロセッサおよび秘密保護方法
US7006845B2 (en) * 2002-04-03 2006-02-28 General Motors Corporation Method and system for interfacing a portable transceiver in a telematics system
US6912623B2 (en) 2002-06-04 2005-06-28 Sandbridge Technologies, Inc. Method and apparatus for multithreaded cache with simplified implementation of cache replacement policy
US7269717B2 (en) 2003-02-13 2007-09-11 Sun Microsystems, Inc. Method for reducing lock manipulation overhead during access to critical code sections
DE10309919B4 (de) 2003-03-07 2008-09-25 Qimonda Ag Pufferbaustein und Speichermodule
US6931504B2 (en) * 2003-05-06 2005-08-16 Sun Microsystems, Inc. Method and apparatus for relocating objects within an object-addressed memory hierarchy
US7089373B2 (en) 2003-06-12 2006-08-08 International Business Machines Corporation Shadow register to enhance lock acquisition
US7047387B2 (en) * 2003-07-16 2006-05-16 Microsoft Corporation Block cache size management via virtual memory manager feedback
US7287126B2 (en) 2003-07-30 2007-10-23 Intel Corporation Methods and apparatus for maintaining cache coherency
US20050138306A1 (en) 2003-12-19 2005-06-23 Panchbudhe Ankur P. Performance of operations on selected data in a storage area
US7114036B2 (en) 2004-01-14 2006-09-26 International Business Machines Corporation Method and apparatus for autonomically moving cache entries to dedicated storage when false cache line sharing is detected
US7562361B2 (en) 2004-02-26 2009-07-14 Microsoft Corporation Thread-based limitation on computer application
US7594234B1 (en) 2004-06-04 2009-09-22 Sun Microsystems, Inc. Adaptive spin-then-block mutual exclusion in multi-threaded processing
US7624236B2 (en) 2004-12-27 2009-11-24 Intel Corporation Predictive early write-back of owned cache blocks in a shared memory computer system
US20070043916A1 (en) 2005-08-16 2007-02-22 Aguilar Maximino Jr System and method for light weight task switching when a shared memory condition is signaled
US8019947B2 (en) 2005-10-19 2011-09-13 Intel Corporation Technique for thread communication and synchronization
US20070124543A1 (en) * 2005-11-28 2007-05-31 Sudhir Dhawan Apparatus, system, and method for externally invalidating an uncertain cache line
US20070124546A1 (en) 2005-11-29 2007-05-31 Anton Blanchard Automatic yielding on lock contention for a multi-threaded processor
US7987452B2 (en) 2005-12-15 2011-07-26 International Business Machines Corporation Profile-driven lock handling
US7991965B2 (en) 2006-02-07 2011-08-02 Intel Corporation Technique for using memory attributes
US7669015B2 (en) * 2006-02-22 2010-02-23 Sun Microsystems Inc. Methods and apparatus to implement parallel transactions
US7831777B2 (en) * 2006-05-26 2010-11-09 De Mevergnies Michael Neve Apparatus and method for reducing information leakage between processes sharing a cache
US7610448B2 (en) 2006-12-27 2009-10-27 Intel Corporation Obscuring memory access patterns

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1659526A (zh) * 2002-06-04 2005-08-24 杉桥技术公司 具有基于线程标识符的缓存清除的多线程缓存方法和装置

Also Published As

Publication number Publication date
US8078801B2 (en) 2011-12-13
DE602007007566D1 (de) 2010-08-19
ATE473483T1 (de) 2010-07-15
EP1939752A1 (en) 2008-07-02
US7610448B2 (en) 2009-10-27
CN101231621A (zh) 2008-07-30
EP1939752B1 (en) 2010-07-07
US20080162816A1 (en) 2008-07-03
US20100299479A1 (en) 2010-11-25

Similar Documents

Publication Publication Date Title
CN101231621B (zh) 隐藏存储器访问模式
CN1740991B (zh) 使用地址比特来发送地址空间中数据安全属性的信号的系统和方法
CN1894662B (zh) 作为用于执行引导码的ram的处理器缓存存储器
US11777705B2 (en) Techniques for preventing memory timing attacks
US10097349B2 (en) Systems and methods for protecting symmetric encryption keys
CN101178759B (zh) 可信设备集成电路和对其中的存储器件进行虚拟化的方法
CN100470565C (zh) 安全许可证管理
JP5581403B2 (ja) メモリのセキュア領域および非セキュア領域へのセキュアモードページテーブルデータの格納
US7958320B2 (en) Protected cache architecture and secure programming paradigm to protect applications
CN102103552A (zh) 安全高速缓存存储器架构
CN107220189A (zh) 内存空间管理及内存访问控制方法及装置
CN108713194A (zh) 使用虚拟资源视图的数据保护
US8549325B2 (en) Reducing information leakage between processes sharing a cache
CN102945355A (zh) 基于扇区映射的快速数据加密策略遵从
US10565130B2 (en) Technologies for a memory encryption engine for multiple processor usages
Ren et al. Design and implementation of the ascend secure processor
CN105389265B (zh) 当加密参数改变时在垃圾数据上生成零内容的方法和装置
US7831777B2 (en) Apparatus and method for reducing information leakage between processes sharing a cache
US20110145596A1 (en) Secure Data Handling In A Computer System
CN107563226A (zh) 一种存储器控制器、处理器模块及密钥更新方法
CN107330336A (zh) Linux操作系统内存页面即时加解密方法和系统
CN103136571A (zh) 一种智能卡系统
CN103098028B (zh) 虚拟计算机系统、存储器管理方法以及集成电路
Wang Information leakage due to cache and processor architectures
Fletcher Ascend: An architecture for performing secure computation on encrypted data

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
ASS Succession or assignment of patent right

Owner name: SONY CORP. AMERICA

Free format text: FORMER OWNER: INTEL CORP .

Effective date: 20150303

C41 Transfer of patent application or patent right or utility model
TR01 Transfer of patent right

Effective date of registration: 20150303

Address after: American New York

Patentee after: SONY CORP AMERICA

Address before: American California

Patentee before: INTEL Corp.

CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20111019

Termination date: 20211227

CF01 Termination of patent right due to non-payment of annual fee