CN112602068B - 用于幽灵缓解的数据高速缓存隔离 - Google Patents

用于幽灵缓解的数据高速缓存隔离 Download PDF

Info

Publication number
CN112602068B
CN112602068B CN201980025381.XA CN201980025381A CN112602068B CN 112602068 B CN112602068 B CN 112602068B CN 201980025381 A CN201980025381 A CN 201980025381A CN 112602068 B CN112602068 B CN 112602068B
Authority
CN
China
Prior art keywords
cache
mode
kernel
user
cpu
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
CN201980025381.XA
Other languages
English (en)
Other versions
CN112602068A (zh
Inventor
P.T.罗宾逊
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 Interactive Entertainment Inc
Original Assignee
Sony Interactive Entertainment Inc
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 Sony Interactive Entertainment Inc filed Critical Sony Interactive Entertainment Inc
Publication of CN112602068A publication Critical patent/CN112602068A/zh
Application granted granted Critical
Publication of CN112602068B publication Critical patent/CN112602068B/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/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
    • 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/0844Multiple simultaneous or quasi-simultaneous cache accessing
    • G06F12/0846Cache with multiple tag or data arrays being simultaneously accessible
    • G06F12/0848Partitioned cache, e.g. separate instruction and operand caches
    • 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/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • G06F21/74Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information operating in dual or compartmented mode, i.e. at least one secure mode
    • 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/084Multiuser, multiprocessor or multiprocessing cache systems with a shared cache
    • 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/0893Caches characterised by their organisation or structure
    • G06F12/0897Caches characterised by their organisation or structure with two or more cache hierarchy levels
    • 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
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1052Security improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/603Details of cache memory of operating mode, e.g. cache mode or local memory mode

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Mathematical Physics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

按执行模式来将处理器的数据高速缓存(L1和/或L2和/或L3)隔离,从而通过不再共享资源来消除某些恶意软件的危险。内核模式软件可调整所述数据高速缓存的两个部分(500、502)的相对大小,以动态地适应变化的工作负荷的数据高速缓存需要。

Description

用于幽灵缓解的数据高速缓存隔离
技术领域
本申请总体上涉及必须植根于计算机技术并产生具体的技术改进的技术上有创造性的非例行的解决方案。
背景技术
计算机中的处理器具有至少两种不同的操作模式。第一种典型地称为“内核模式”并且第二种典型地称为“用户模式”,但也已经使用了其他术语,例如,代替“用户模式”,该模式也可称为“应用程序模式”。内核模式是用于核心操作系统(O.S.)功能,而用户模式是用在处理器执行应用程序(即,针对具体任务的计算机程序,所述计算机程序又依赖于O.S.)时。一些装置驱动器软件也可在内核模式下执行。
本质上,在内核模式下,处理器可访问几乎所有其可用的资产。相比之下,在用户模式下,仅准许处理器访问其可用的资产中的一些但非全部。在用户模式下限制访问防止由处理器执行的应用程序更改并有可能损坏关键操作系统数据。
现代处理器的另一个特征是高速缓存存储器,其加载有来自主存储器的选定数据的副本。高速缓存存储器比主存储器快,因此访问高速缓存中的数据提高性能。在大多数情况下,当中央处理单元(CPU)读取或写入主存储器时,数据高速缓存的一部分(有时会称为“高速缓存块”)被自动地分配为包含来自主存储器的对应部分的数据的副本。数据高速缓存为每个高速缓存块记录对应主存储器地址,使得未来对同一存储器地址的访问将读取或写入数据高速缓存,而不是直接地访问主存储器,从而提高性能。可使用各种手段来将数据高速缓存的部分与存储器的部分相关联。作为一个简单的示例,给定32位存储器地址,其中最低有效位编号为0,实现方式可使用地址位15至8来选择256个可能的数据高速缓存块中的一者。
由于更快的高速缓存存储器比主存储器更昂贵,因此它通常比主存储器小。当CPU访问主存储器的不同部分时,数据高速缓存中的副本可能会被“回收”,并且数据高速缓存的那些部分可能会被重新分配以包含主存储器的最近被访问的部分。如果CPU然后访问已经从数据高速缓存回收的存储器地址,则访问更慢,因为存储器的该部分必须具有数据高速缓存的被重新分配的部分,并且数据必须从主存储器重新加载。这种性能差异可通过在CPU中执行的软件来检测。
高速缓存存储器与主存储器一样,一般被视为由内核模式和用户模式软件共享的资源。用户模式软件一般无法直接地从数据高速缓存读取内核模式数据。然而,用户模式软件可通过检测上文提到的性能差异来间接地确定数据高速缓存的哪些部分已经被回收并加载有内核模式数据。
不按次序推测地执行一些任务,然后才以其他方式要求这些任务,以提高效率,也是现代处理器的特征。作为一个简单的示例,在处理器确定是否满足条件时,可提前执行取决于该条件的计算。如果最终地确定满足该条件,则已经进行了计算并且可使用结果,从而缩短处理时间。如果最终地确定不满足该条件,则可简单地放弃推测计算而不损失处理时间,因为计算在等待时间段期间推测地进行,以确定是否满足该条件。
最近被称为“幽灵”和“熔断”的恶意软件试图利用推测执行和数据高速缓存行为的组合。根本上,这些“漏洞利用”影响内核模式软件以推测地执行指令,这些指令最终地回收数据高速缓存的一部分。通过使用性能特性来确定哪些部分被回收,“漏洞利用”可间接地导出受保护的内核模式数据的值。幽灵和熔断的变体可使用不同的手段来影响推测执行,但它们都通过检测数据高速缓存性能的差异来导出内核模式数据的值。
发明内容
考虑到上述情况,本原理按执行模式来将处理器的数据高速缓存隔离,从而通过不再在内核模式与用户模式之间共享高速缓存资源来消除某些恶意软件的危险。如果期望的话,内核模式软件可调整所述数据高速缓存的两个部分的相对大小,以动态地适应变化的工作负荷的数据高速缓存需要。
在一个实现方式中,所述处理器将又一条信号线暴露给指示操作模式的高速缓存,其中高速缓存将存储器存储在与由信号线指示的模式相关的分区中。
因此,一种装置包括至少一个中央处理单元(CPU)核心,所述至少一个CPU核心又包括至少第一CPU线程和至少第一L1高速缓存,所述第一CPU线程可访问所述第一L1高速缓存。多条信号线在所述第一CPU线程与所述第一L1高速缓存之间传达数据。所述CPU线程被配置为暴露所述多条信号线中的至少模式信号线上的二进制值。所述模式信号线上的第一二进制值指示仅与内核模式高速缓存相关联的存储器地址,所述模式信号线上的第二二进制值指示仅与用户模式高速缓存相关联的存储器地址。通过这种技术,与用户模式应用程序相关联的数据只能向用户模式高速缓存写入和从中读取,使得用户模式应用程序无法检测到内核模式高速缓存的操作。
在一些示例中,与内核模式应用程序相关联的数据只能向内核模式高速缓存写入和从中读取。
在示例实现方式中,用户模式高速缓存和内核模式高速缓存是第一L1高速缓存的虚拟分区。在其他示例中,所述装置包括第二L1高速缓存,所述用户模式高速缓存和所述内核模式高速缓存分别由所述第一L1高速缓存和所述第二L1高速缓存建立。
在一些实现方式中,所述装置可包括L2高速缓存,并且就像所述L1高速缓存一样,与用户模式应用程序相关联的数据只能向所述L2高速缓存的用户模式高速缓存写入和从中读取,使得用户模式应用程序无法检测到所述L2高速缓存在内核模式下的操作。
当虚拟地建立用户模式高速缓存和内核模式高速缓存时,用户模式高速缓存和内核模式高速缓存的相应大小可在CPU操作期间改变。所述大小变化可根据在内核模式软件的控制下的至少一个参数。在一些示例中,所述大小变化可根据在所述用户模式高速缓存和所述内核模式高速缓存中的至少一者中的数据存储量。在一些实现方式中,所述大小根据在所述用户模式高速缓存和所述内核模式高速缓存中的至少一者中的数据输入/输出速率来改变。
所述CPU核心可为第一CPU核心,并且所述装置可包括在CPU封装中的至少第二CPU核心,并且所述第一CPU核心和所述第二CPU核心共享L3高速缓存。
在另一个方面,一种设备包括至少一个中央处理单元(CPU)核心,所述至少一个CPU核心又包括至少第一CPU线程和L1高速缓存组件,所述第一CPU线程可访问所述L1高速缓存组件。所述L1高速缓存组件被分区为用户模式高速缓存和内核模式高速缓存。
在另一个方面,一种方法包括根据执行模式来将处理器的数据高速缓存隔离,其中执行模式是内核模式或用户模式。所述方法包括仅向用户模式高速缓存写入用户模式应用程序数据,从而通过不与用户模式软件共享内核模式高速缓存来消除在内核模式高速缓存中的恶意软件辨别操作的可能性。
本申请的关于其结构和操作两者的细节可参考附图来得到最好的理解,在附图中相同的附图标记指代相同的部分,并且在附图中:
附图说明
图1是符合本原理的示例系统的框图;
图2是示例具体处理系统硬件架构的框图;
图3是示例具体处理系统软件架构的框图;
图4是符合本原理的示例总体逻辑的流程图;
图5是被分区在用户模式与内核模式之间的高速缓存的示意图;图6和图7是示例动态高速缓存分配逻辑的流程图;并且
图8是另一个示例具体处理系统硬件架构的框图。
具体实施方式
本公开总体上涉及计算机生态系统,其包括消费者电子产品(CE)装置网络的各方面,诸如但不限于:分布式计算机游戏网络、视频广播、内容递送网络、虚拟机和机器学习应用。应注意,设想了隔离的数据高速缓存的许多实施方案,本文中描述和示出了包括计算机服务器和移动电话的若干实施方案。
本文中的系统可包括服务器和客户端部件,所述服务器和客户端部件通过网络连接,使得可在客户端与服务器部件之间交换数据。客户端部件可包括一个或多个计算装置,所述一个或多个计算装置包括游戏控制台(诸如Sony)和相关母板、便携式电视机(例如,智能TV、支持互联网的TV)、便携式计算机(诸如膝上型计算机和平板计算机)以及其他移动装置(包括智能电话和下文论述的附加示例)。这些客户端装置可以多种操作环境操作。例如,客户端计算机中的一些可采用例如Orbis或Linux操作系统、来自Microsoft的操作系统,或者Unix操作系统,或者由Apple公司或Google生产的操作系统。这些操作环境可用于执行一个或多个用户模式程序,诸如但不限于浏览器、计算机游戏、web或智能电话应用程序、个人计算应用程序(诸如财务或文字处理程序)、用于装置(诸如汽车和制造设备)的控制程序以及任何其他应用程序。
服务器和/或网关可包括执行指令的一个或多个处理器,所述指令将服务器配置为通过诸如互联网的网络接收和发射数据。或者,客户端和服务器可通过本地内联网或虚拟专用网络连接。可由游戏控制台和/或其一个或多个母板(诸如Sony个人计算机等)将服务器或控制器实例化。
可通过网络在客户端与服务器之间交换信息。为此并且为了安全起见,服务器和/或客户端可包括防火墙、负载平衡器、临时存储装置和代理,以及用于可靠性和安全性的其他网络基础设施。一个或多个服务器可形成实现向网络成员提供诸如在线社交网站的安全社区的方法的设备。
如本文所使用,指令是指用于在系统中处理信息的计算机实现的步骤。指令可在软件、固件或硬件中实现,并且包括由系统的部件实施的任何类型的已编程步骤。
处理器可为能够借助于诸如地址线、数据线和控制线的各种线以及寄存器和移位寄存器执行逻辑的任何常规的通用单芯片处理器或多芯片处理器。
通过本文中的流程图和用户界面描述的软件模块可包括各种子例程、程序等。在不限制本公开的情况下,被陈述为由特定模块执行的逻辑可被重新分配到其他软件模块和/或一起组合在单个模块中和/或使得在可共享库中可用。
本文中描述的本发明原理可实现为硬件、软件、固件或它们的组合;因此,说明性部件、框、模块、电路和步骤依据其功能性加以阐述。
除了上文已经提到的内容之外,下文描述的逻辑块、模块和电路可用被设计来执行本文中描述的功能的通用处理器、数字信号处理器(DSP)、现场可编程门阵列(FPGA)或其他可编程逻辑装置(诸如专用集成电路(ASIC)、离散门或晶体管逻辑、离散硬件部件或它们的任何组合)来实现或执行。处理器可由控制器或状态机或计算装置的组合实现。
下文描述的功能和方法当在软件中实现时可以诸如但不限于Java、C#或C++的适当的语言编写,并且可存储在计算机可读存储介质上或通过计算机可读存储介质传输,所述计算机可读存储介质诸如随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、光盘只读存储器(CD-ROM)或其他光盘存储设备(诸如数字通用光盘(DVD))、磁盘存储设备或包括可移除拇指驱动器的其他磁存储装置等。连接可建立计算机可读介质。此类连接可包括例如硬连线电缆,包括光纤和同轴接线以及数字用户线(DSL)和双绞线。此类连接可包括无线通信连接,包括红外和无线电。
一个实施方案中包括的部件可以任何适当的组合用于其他实施方案中。例如,可将本文中描述的和/或附图中示出的各种部件中的任一者组合、互换或从其他实施方案排除。
“具有A、B和C中的至少一者的系统”(同样地,“具有A、B或C中的至少一者的系统”和“具有A、B、C中的至少一者的系统”)包括如下系统:仅具有A;仅具有B;仅具有C;同时具有A和B;同时具有A和C;同时具有B和C;和/或同时具有A、B和C等。
如图1所示,下文参考图2进一步描述的中央处理单元(CPU)封装200可在芯片组10上实现,该芯片组又可由可作为单一产品销售的一组集成电路或芯片来实现。
图1中的示例芯片组10可通过适当的芯片到芯片接口14与输入/输出控制器12通信。CPU封装200可与也在下文参考图2进一步讨论的存储器208对接。存储器208可为随机存取存储器(RAM)类型。
CPU封装200可包括一个或多个接口16,诸如低电压差分信令接口(LVDS)、PCI-express接口等,所述一个或多个接口在CPU封装200与各种外围装置(诸如显示装置18、图形装置、高清多媒体接口(HDMI)装置等)之间建立通信。
I/O集线器控制器12还可包括各种接口18,诸如但不限于以下一者或多者:串行ATA(SATA)接口、低引脚数(LPC)接口、PCI-E接口、通用串行总线(USB)接口、通用I/O接口(GPIO)、局域网(LAN)接口和其他网络接口、电源管理接口、时钟发生器接口、系统管理总线接口(例如,多主串行计算机总线接口)、串行外围快闪存储器/控制器接口(SPI Flash),后一接口用于访问基本输入输出系统(BIOS)20的启动代码。
I/O集线器控制器12的接口18可提供与除了BIOS 20之外的输入/输出装置(包括网络)的通信。例如,I/O控制器12可与一个或多个磁盘驱动器22、音频扬声器24、Wi-Fi或其他无线收发器26以及输入装置28(诸如键盘、鼠标、麦克风(用于语音输入)、相机等)通信。本文中的方法可被实现为由处理器执行的软件指令、合适地配置的专用集成电路(ASIC)或现场可编程门阵列(FPGA)模块,或者如本领域的技术人员将了解的任何其他方便方式。在被采用的情况下,软件指令可被体现在非暂时性装置(诸如CD ROM或快闪驱动器)中。软件代码指令可以可选地体现在诸如无线电或光学信号的暂时性布置中,或者经由通过互联网进行的下载体现。
现在参考图2,示出了具有两个CPU核心202的示例中央处理单元(CPU)封装200。每个CPU核心202可包括两个CPU线程204,也称为硬件线程或超线程。每个CPU线程204包含一组相应寄存器,并且可用于执行机器代码。
另外地,每个CPU核心202可包括一个或多个高速缓存存储器206,在图2中被标记为“L1”和“L2”,以指示高速缓存存储器206分别是级1和级2存储器。高速缓存的级越低,它与CPU线程越靠近,并且它就越小、越快并越昂贵。同样地,较高级的高速缓存与CPU越远离并与主存储器208越靠近,它就越大、越慢并越廉价。
在图2中,示出了每一CPU核心单个硬件L1高速缓存,并且下面图5展示了L1高速缓存如何在内核存储器与用户模式存储器之间虚拟地分区。如下文进一步描述的,图8示出了采用每一CPU核心两个硬件L1高速缓存的替代架构。
尽管图2示出了仅具有两个CPU核心的简化的CPU封装200,但应理解,CPU封装可包括多于两个核心。例如,CPU封装可包括三十个CPU核心。无论CPU核心的数量如何,在图2的示例中,CPU封装200中的所有CPU核心202都会共享公共L3高速缓存210。应注意,CPU核心可包含多于两级高速缓存(即,超过L1级和L2级),或者可仅包含一级(L1),并且同样地,CPU封装可包含多于或少于三个级的高速缓存。
如同样在图2中示出以进行说明,CPU线程204通过多条信号线212向和从L1高速缓存206传达数据。这些信号线指示用于读取或写入数据的存储器地址,其中单个存储器地址具有多条信号线。信号线中的预定模式线(例如,第一信号线214)可用于指示操作模式以及因此指示在高速缓存中要访问的位置。例如,模式线214上的“0”值可指示内核模式,而模式线214上的“1”值可指示用户模式,其中相关联的数据由L1高速缓存存储在对应于由模式线214指示的模式的分区中。如果期望的话,模式线214可为常规地使用的信号线的附加信号线,或者它可为改换用途的现有信号线。在任何情况下,CPU线程都典型地先用存储器地址访问L1高速缓存,如果L1高速缓存已经分配有存储器地址,则访问该L1高速缓存以进行读取/写入。否则,如果存储器地址未被分配在L1高速缓存中,则CPU线程用该存储器地址访问L2高速缓存以确定是否可在L2高速缓存中执行读取/写入,并依此类推于L3高速缓存,并且如果所需的存储器地址不在任何高速缓存中,则最终地到主存储器。
因此,尽管图2示出了在CPU线程与L1高速缓存之间的模式线,但本原理一般也可适用于其他高速缓存级,例如,适用于L2和L3高速缓存。因此,尽管描述了L1高速缓存在用户模式和内核模式之间进行分区,但也可根据符合本原理的操作模式对L2和L3高速缓存进行分区。或者,L1高速缓存可能无法在用户模式与内核模式之间进行分区,并且只能对较高的高速缓存级中的一者或多者如此进行分区。
图3示出了在下文更全面地描述的计算机硬件300之上的软件架构,诸如可由图2或图8中的架构实现的。硬件抽象层(HAL)302将提供给应用程序的虚拟地址映射到硬件300中的物理地址。O.S.内核304控制数据输入和输出到HAL 302并在内核模式下操作。一些驱动器支持例程306也可耦合到O.S.内核304,并且可在内核模式下操作。其他内核模式驱动器308可访问驱动器支持例程306,并且可在内核模式下操作。某些文件系统驱动器310也可在内核模式下操作,并且可访问O.S.内核304。
另一方面,用户应用程序312和附带的操作系统应用程序编程接口(API)314可在用户模式下操作。用户模式驱动器316也可通过API314在用户模式下操作。这些用户模式驱动器316可被准许与其他内核模式驱动器308通信。
应注意,尽管所示的示例假定两种操作模式,即,用户模式和内核模式,但一些处理器可能采用多于两个操作模式。例如,一些架构可包括四个操作模式,其可被称为“环”并一般被绘制为嵌套的圆,最内侧环是最有特权和最受保护的。在这种情况下,代替使用单条模式信号线来指示在两个模式之间的二进制分区,可使用两条模式信号线(总计四个二进制值)来指示指示了四个高速缓存分区中的哪一个。在这种情况下,提供四个高速缓存分区(虚拟或物理)。
图4示出了符合本原理的总体逻辑。在框400处开始,将高速缓存分区为用户模式高速缓存和内核模式高速缓存。只能对L1高速缓存如此进行分区,或者也可对较高级的高速缓存中的一者或多者如此进行分区。分区可为如图2和图5所示般是虚拟的,或者如图8所示般是物理的。当为虚拟的时,可将一组初始“N-1”高速缓存块分配给内核模式分区,而将一组初始“N-M”高速缓存块分配给用户模式分区,并且那些分区分配可为固定的,或者可随时间而变化,如图6和图7的示例所示。在任何情况下,用于内核模式高速缓存的高速缓存块的模式信号线214二进制值等于用于指示“内核模式”的二进制值,而用于用户模式高速缓存的存储器地址的模式信号线214二进制值等于用于指示“用户模式”的二进制值。
当如图8所示使用物理高速缓存分区并在下文进一步描述时,用于内核模式物理高速缓存的高速缓存块的模式信号线二进制值都等于用于指示“内核模式”的二进制值,而用于用户模式物理高速缓存的存储器地址的模式信号线二进制值都等于用于指示“用户模式”的二进制值。
移动到框402,在用户模式下的CPU操作期间,允许所有用户模式应用程序都仅对用户模式高速缓存执行读取/写入操作。框404实质上强调不允许用户模式应用程序访问或以其他方式“查看”内核模式高速缓存,包括数据操作,诸如从内核模式高速缓存进行的数据回收。
在一些示例中,框406指示至少就存储(写入)并如果期望的话还检索(读取)内核模式数据而言,可同样地允许在内核模式下操作的程序只能访问内核模式高速缓存,但典型地可允许内核模式程序(诸如O.S.)代表用户模式应用程序访问用户模式高速缓存,以代表这种用户模式程序从用户模式高速缓存读取和向其写入用户模式数据。
图5示出了单个物理L1高速缓存,该单个物理L1高速缓存被分区为只能向其写入和从其读取内核模式数据的仅内核模式数据分区500以及只能向其写入和从其读取用户模式数据的用户模式分区502。虚线504指示在虚拟用户模式高速缓存502与虚拟内核模式高速缓存500之间的边界。为了说明,可向内核模式分区500分配高速缓存块0至N-1,其中“N”是大于零的整数,并且可向用户模式分区分配高速缓存线N-M,其中“M”是比“N”大的整数。
在操作期间,用户模式高速缓存502和内核模式高速缓存500的大小可改变,即,概念上向上或向下移动线504来以模式高速缓存中的一个为代价增大另一个的大小。在一个示例中,在内核模式软件的控制下的一个或多个参数可用于此目的。
图6和图7示出了用于在图5中的用户模式高速缓存502和内核模式高速缓存500之间动态地分配高速缓存块的任选的替代技术。在图6中的框600处开始,在内核模式高速缓存和用户模式高速缓存中识别当前数据存储级。如果在判定菱形框602中确定数据存储级中的一者满足阈值,则在框604处,可向其分配从另一个(不太满)模式高速缓存取用的附加高速缓存块。概念上,图5中的边界504朝向模式高速缓存偏移,从而将块分给另一个模式高速缓存,其中在所示的示例中,“N”因此动态地变化。
在图7的替代实现方式中,框700在内核模式高速缓存和用户模式高速缓存中识别当前数据使用(例如,就每单位时间的I/O操作而言)。如果在判定菱形框702处确定数据使用中的一者满足阈值,则在框704处,可向其分配从另一个(较少使用)模式高速缓存取用的附加高速缓存块。概念上,图5中的边界504朝向模式高速缓存偏移,从而将块分给另一个模式高速缓存,其中在所示的示例中,“N”因此动态地变化。
现在参考图8,示出了具有两个CPU核心802的示例CPU封装800,两个CPU核在配置和操作上彼此相同,因此仅示出了一个核心的部件。每个CPU核心802可包括两个CPU线程804。每个CPU线程804包含一组相应寄存器,并且可用于执行机器代码。
另外地,每个CPU核心802可包括两个物理级一(L1)高速缓存806、808。第一L1高速缓存806是用于用户模式操作,并且第二L1高速缓存808仅用于内核模式操作。当采用多于两个操作模式时,可提供相应数量的物理L1高速缓存。图8中的L1高速缓存的操作与先前描述的虚拟L1高速缓存分区的操作相似,不同之处在于,由高速缓存806、808建立物理高速缓存分区而不是虚拟高速缓存分区。
在图8中,还设想了在用户模式L2物理高速缓存810和内核模式L2物理高速缓存812与用户模式物理L3高速缓存814和内核模式物理L3高速缓存816之间的物理模式分区,应理解,与按模式的虚拟分区的情况一样,仅L1高速缓存需要进行分区,并且因此在其他示例中,每一核心仅需使用单个L2高速缓存并且每一封装仅需使用单个L3高速缓存。与图2中的虚拟高速缓存模式分区的情况一样,在图8中,CPU封装800可包括多于两个核心,并且CPU核心802可包含多于两级高速缓存(即,超过L1级和L2级),或者可仅包含一级(L1),并且同样地,CPU封装可包含多于或少于三个级的高速缓存。
如同样在图8中示出以进行说明,CPU线程804通过指示用于读取或写入数据的存储器地址的多条信号线818向和从L1高速缓存806、808传达数据,其中信号线中的模式线用于指示操作模式以及因此指示要访问物理L1高速缓存806、808中的哪一个。
应注意,可使用虚拟和物理高速缓存分区的组合。例如,可根据例如图5来虚拟地对L1高速缓存进行分区,而可根据例如图8来物理地对L2高速缓存进行分区。
将了解,尽管已经参考一些示例实施方案描述了本原理,但这些实施方案并不意图为限制性的,并且可使用各种替代布置来实现本文所要求保护的主题。

Claims (20)

1.一种装置,所述装置包括:
至少一个中央处理单元(CPU)核心,所述至少一个CPU核心包括:
至少第一CPU线程;
至少第一L1高速缓存,所述第一CPU线程可访问所述第一L1高速缓存;
多条信号线,所述多条信号线用于在所述第一CPU线程与所述第一L1高速缓存之间传达数据,所述CPU线程被配置为暴露所述多条信号线中的至少模式信号线上的二进制值,所述模式信号线上的第一二进制值指示仅与内核模式高速缓存相关联的存储器地址,所述模式信号线上的第二二进制值指示仅与用户模式高速缓存相关联的存储器地址,其中与用户模式应用程序相关联的数据只能向用户模式高速缓存写入和从中读取,使得用户模式应用程序无法检测到所述内核模式高速缓存的操作。
2.如权利要求1所述的装置,其中与内核模式应用程序相关联的数据只能向内核模式高速缓存写入和从中读取。
3.如权利要求1所述的装置,其中所述用户模式高速缓存和所述内核模式高速缓存是所述第一L1高速缓存的虚拟分区。
4.如权利要求1所述的装置,所述装置包括第二L1高速缓存,其中所述用户模式高速缓存和所述内核模式高速缓存分别由所述第一L1高速缓存和所述第二L1高速缓存建立。
5.如权利要求1所述的装置,所述装置包括L2高速缓存,其中与用户模式应用程序相关联的数据只能向所述L2高速缓存的用户模式高速缓存写入和从中读取,使得用户模式应用程序无法检测到所述L2高速缓存在内核模式下的操作。
6.如权利要求3所述的装置,其中所述用户模式高速缓存和所述内核模式高速缓存的相应大小在CPU操作期间改变。
7.如权利要求6所述的装置,其中所述大小根据在内核模式软件的控制下的至少一个参数来改变。
8.如权利要求6所述的装置,其中所述大小根据在所述用户模式高速缓存和所述内核模式高速缓存中的至少一者中的数据存储量来改变。
9.如权利要求6所述的装置,其中所述大小根据在所述用户模式高速缓存和所述内核模式高速缓存中的至少一者中的数据输入/输出速率来改变。
10.如权利要求1所述的装置,其中所述CPU核心是第一CPU核心,并且所述装置包括在CPU封装中的至少第二CPU核心,并且所述第一CPU核心和所述第二CPU核心共享L3高速缓存。
11.一种设备,所述设备包括:
至少一个中央处理单元(CPU)核心,所述至少一个CPU核心包括:
至少第一CPU线程;以及
L1高速缓存组件,所述第一CPU线程可访问所述L1高速缓存组件;
所述L1高速缓存组件被分区为用户模式高速缓存和内核模式高速缓存。
12.如权利要求11所述的设备,其中所述L1高速缓存组件包括单个物理L1高速缓存,所述单个物理L1高速缓存被划分为所述用户模式高速缓存和所述内核模式高速缓存。
13.如权利要求11所述的设备,其中所述L1高速缓存组件包括仅建立所述用户模式高速缓存的第一物理L1高速缓存和仅建立所述内核模式高速缓存的第二物理L1高速缓存。
14.如权利要求11所述的设备,其中在用户模式下的CPU操作期间,所有用户模式应用程序都仅被允许对所述用户模式高速缓存执行输入/输出操作,而不允许用户模式应用程序访问或以其他方式“查看”内核模式高速缓存,包括从内核模式高速缓存进行的数据回收。
15.如权利要求14所述的设备,其中在内核模式下操作的程序仅被允许访问内核模式高速缓存,以写入内核模式数据。
16.如权利要求11所述的设备,所述设备包括:
多条信号线,所述多条信号线用于在所述第一CPU线程与所述L1高速缓存组件之间传达数据,所述CPU线程被配置为暴露所述多条信号线中的至少模式信号线上的二进制值,所述模式信号线上的第一二进制值指示仅与内核模式高速缓存相关联的存储器地址,所述模式信号线上的第二二进制值指示仅与用户模式高速缓存相关联的存储器地址,其中与用户模式应用程序相关联的数据只能向用户模式高速缓存写入和从中读取,使得用户模式应用程序无法检测到所述内核模式高速缓存的操作。
17.如权利要求11所述的设备,所述设备包括L2高速缓存,其中与用户模式应用程序相关联的数据只能向所述L2高速缓存的用户模式高速缓存写入和从中读取,使得用户模式应用程序无法检测到所述L2高速缓存在所述内核模式下的操作。
18.如权利要求11所述的设备,其中所述CPU核心是第一CPU核心,并且所述设备包括在CPU封装中的至少第二CPU核心,并且所述第一CPU核心和所述第二CPU核心共享L3高速缓存。
19.一种方法,所述方法包括:
根据执行模式来将处理器的数据高速缓存隔离,执行模式包括内核模式和用户模式;以及
仅向用户模式高速缓存写入用户模式应用程序数据,从而通过不与用户模式软件共享内核模式高速缓存来消除在内核模式高速缓存中的恶意软件辨别操作的可能性。
20.如权利要求19所述的方法,所述方法包括使用内核模式软件来调整所述内核模式高速缓存和所述用户模式高速缓存的相对大小。
CN201980025381.XA 2018-04-12 2019-04-03 用于幽灵缓解的数据高速缓存隔离 Active CN112602068B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/951,553 2018-04-12
US15/951,553 US10691621B2 (en) 2018-04-12 2018-04-12 Data cache segregation for spectre mitigation
PCT/US2019/025600 WO2019199544A1 (en) 2018-04-12 2019-04-03 Data cache segregation for spectre mitigation

Publications (2)

Publication Number Publication Date
CN112602068A CN112602068A (zh) 2021-04-02
CN112602068B true CN112602068B (zh) 2024-01-30

Family

ID=68159981

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201980025381.XA Active CN112602068B (zh) 2018-04-12 2019-04-03 用于幽灵缓解的数据高速缓存隔离

Country Status (5)

Country Link
US (2) US10691621B2 (zh)
KR (1) KR102436979B1 (zh)
CN (1) CN112602068B (zh)
TW (1) TWI709909B (zh)
WO (1) WO2019199544A1 (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10691621B2 (en) * 2018-04-12 2020-06-23 Sony Interactive Entertainment Inc. Data cache segregation for spectre mitigation
US20240220409A1 (en) * 2022-12-28 2024-07-04 Advanced Micro Devices, Inc. Unified flexible cache

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1239249A (zh) * 1998-06-17 1999-12-22 国际商业机器公司 实现精确的超高速缓存灵敏度的超高速缓存体系结构
US6049866A (en) * 1996-09-06 2000-04-11 Silicon Graphics, Inc. Method and system for an efficient user mode cache manipulation using a simulated instruction
US8706964B1 (en) * 2007-09-28 2014-04-22 The Mathworks, Inc. Automatic generation of cache-optimized code
CN106716949A (zh) * 2014-09-25 2017-05-24 英特尔公司 减少具有扩展mesi协议的多处理器系统的互连流量

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8019946B2 (en) 2008-07-31 2011-09-13 Samsung Electronics Co., Ltd. Method and system for securing instruction caches using cache line locking
US8782434B1 (en) 2010-07-15 2014-07-15 The Research Foundation For The State University Of New York System and method for validating program execution at run-time
CA2823732A1 (en) * 2011-03-25 2012-10-04 Research In Motion Limited Dynamic power management of cache memory in a multi-core processing system
GB2511957B (en) * 2011-11-22 2015-02-11 Mips Tech Inc Processor with kernel mode access to user space virtual addresses
US9747218B2 (en) 2015-03-20 2017-08-29 Mill Computing, Inc. CPU security mechanisms employing thread-specific protection domains
US10001995B2 (en) 2015-06-02 2018-06-19 Intel Corporation Packed data alignment plus compute instructions, processors, methods, and systems
US10579125B2 (en) 2016-02-27 2020-03-03 Intel Corporation Processors, methods, and systems to adjust maximum clock frequencies based on instruction type
US10931652B2 (en) * 2017-01-24 2021-02-23 Microsoft Technology Licensing, Llc Data sealing with a sealing enclave
US10691621B2 (en) * 2018-04-12 2020-06-23 Sony Interactive Entertainment Inc. Data cache segregation for spectre mitigation

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6049866A (en) * 1996-09-06 2000-04-11 Silicon Graphics, Inc. Method and system for an efficient user mode cache manipulation using a simulated instruction
CN1239249A (zh) * 1998-06-17 1999-12-22 国际商业机器公司 实现精确的超高速缓存灵敏度的超高速缓存体系结构
US8706964B1 (en) * 2007-09-28 2014-04-22 The Mathworks, Inc. Automatic generation of cache-optimized code
CN106716949A (zh) * 2014-09-25 2017-05-24 英特尔公司 减少具有扩展mesi协议的多处理器系统的互连流量

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
基于高速缓存负荷均衡的动态二进制翻译研究;李战辉;刘畅;孟建熠;严晓浪;;计算机研究与发展(第09期);全文 *

Also Published As

Publication number Publication date
WO2019199544A1 (en) 2019-10-17
KR102436979B1 (ko) 2022-08-29
TWI709909B (zh) 2020-11-11
CN112602068A (zh) 2021-04-02
US20190317903A1 (en) 2019-10-17
KR20200131857A (ko) 2020-11-24
US11307999B2 (en) 2022-04-19
TW202004495A (zh) 2020-01-16
US20200272582A1 (en) 2020-08-27
US10691621B2 (en) 2020-06-23

Similar Documents

Publication Publication Date Title
EP3230873B1 (en) Computing method and apparatus with persistent memory
CN114860329B (zh) 动态一致性偏置配置引擎及方法
CN104461735B (zh) 一种虚拟化场景下分配cpu资源的方法和装置
US10310759B2 (en) Use efficiency of platform memory resources through firmware managed I/O translation table paging
US9239682B2 (en) I/O hint framework for Server Flash Cache
US10061701B2 (en) Sharing of class data among virtual machine applications running on guests in virtualized environment using memory management facility
US8862834B2 (en) Shared memory translation facility
US11068418B2 (en) Determining memory access categories for tasks coded in a computer program
US20240078187A1 (en) Per-process re-configurable caches
CN112602068B (zh) 用于幽灵缓解的数据高速缓存隔离
US9563572B2 (en) Migrating buffer for direct memory access in a computer system
US9715455B1 (en) Hint selection of a cache policy
US20200201691A1 (en) Enhanced message control banks
US9977730B2 (en) System and method for optimizing system memory and input/output operations memory
US10216524B2 (en) System and method for providing fine-grained memory cacheability during a pre-OS operating environment
US11714753B2 (en) Methods and nodes for handling memory
US11281513B2 (en) Managing heap metadata corruption
US20240054250A1 (en) Method and system for dynamically updating stack canary
CN116909955A (zh) 从块装置引导的方法及设备
CN113396402A (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