CN103119570A - 用于实现微页表的装置、方法和系统 - Google Patents
用于实现微页表的装置、方法和系统 Download PDFInfo
- Publication number
- CN103119570A CN103119570A CN2011800460584A CN201180046058A CN103119570A CN 103119570 A CN103119570 A CN 103119570A CN 2011800460584 A CN2011800460584 A CN 2011800460584A CN 201180046058 A CN201180046058 A CN 201180046058A CN 103119570 A CN103119570 A CN 103119570A
- Authority
- CN
- China
- Prior art keywords
- page
- memory
- zone
- microphysical
- address
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1027—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0877—Cache access modes
- G06F12/0882—Page mode
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/0292—User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1009—Address translation using page tables, e.g. page table structures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
- G06F13/1673—Details of memory controller using buffers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1028—Power efficiency
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1041—Resource optimization
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/15—Use in a specific computing environment
- G06F2212/151—Emulated environment, e.g. virtual machine
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/20—Employing a main memory using a specific memory technology
- G06F2212/205—Hybrid memory, e.g. using both volatile and non-volatile memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/65—Details of virtual memory and virtual address translation
- G06F2212/651—Multi-level translation tables
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Abstract
公开了一种装置、方法、机器可读介质和系统。在一个实施例中,所述装置是微页表引擎,其包括能够接收针对在全局存储器地址空间中的页面的存储器页面请求的逻辑。所述装置还包括能够存储一个或多个存储器页面地址转换的转换后援缓冲器(TLB)。此外,所述装置还具有能够响应于TLB未存储对所述存储器页面请求所引用的存储器的页面的存储器页面地址转换而在页面未命中处理程序标签表中执行微物理地址查找的页面未命中处理程序。所述装置还包括能够管理页面未命中处理程序标签表的条目的存储器管理逻辑。所述微页表引擎允许TLB是确定两级存储器分级结构中的数据是在存储器的热区中还是存储器的冷区中的代理。当数据在存储器的冷区中时,微页表引擎将数据取得到热存储器,且热存储器块接着被推出到冷存储器区域。
Description
技术领域
本发明涉及在计算机系统中实现的存储器页表。
背景技术
现代计算机系统合并复杂的存储器管理方案以在系统中的部件当中处理系统存储器的共享。计算机系统可包括几个多核心处理器,其中每个核心(即,每个硬件线程)需要访问存储器。例如,在系统上运行的操作系统以及可能的虚拟机监控器都可包括用于帮助管理在所有硬件线程当中系统存储器的共享的逻辑。该存储器管理常常并不考虑存储器实际上如何布置在系统中的物理约束。例如,可能有存储器功率节约能力,其允许几个等级的存储器功率下降到低功率状态中以节约平台功率。在另一例子中,可能在系统中有多种物理类型的存储器(即,异构存储器系统而不是同构存储器系统)。计算机系统的存储器子系统的这些各种各样的物理实现可能不同样多地受益于当前可通过所讨论的手段得到的标准存储器管理。
附图说明
本发明作为例子被示出,且不被附图限制,其中相似的参考符号指示相似的元件,且其中:
图1描述实现微页表的计算机系统的一个实施例。
图2描述实现微页表的计算机系统的另一实施例。
图3描述实现微页表的计算机系统的另一实施例。
图4示出页面未命中处理程序标签表的实施例。
图5示出实现用于等级去除(rank shedding)的微页表的计算机系统的实施例。
图6示出实现至少部分地用于等级去除的微页表的计算机系统的实施例。
图7示出当在实现时至少部分地用于等级去除的页面未命中处理程序标签表的实施例。
图8是处理热页面未命中所使用的过程的实施例的流程图。
图9示出当对热页面(hot page)未命中作出反应时由微页表引擎利用的一些额外的微页表数据结构的实施例。
图10是提供多个存储器页面的维护过程的实施例的流程图,这些存储器页面具有在冷到热存储器页面数据转移期间被用作热页面的能力。
图11示出在维护过程期间由微页表引擎利用的一些额外的微页表数据结构的实施例。
图12A-12D示出微页表引擎处理逻辑可用来确定何时恢复存储器页面以供使用的流程图的几个实施例。
图13描述在计算机系统内的微页表管理的两级存储器子系统的实施例。
图14描述相变存储器-特定存储器子系统的实施例。
具体实施方式
描述了实现微页表的装置、方法、系统和机器可读介质的实施例。
计算机系统可实现额外的硬件和固件逻辑来通过使用微页表以有效的方式管理存储器,所述微页表将存储器的软件视图映射到存储器的物理实现。微页表实现的架构可包括处理器核心和非核心中的某个逻辑以管理另外的一组隐藏数据结构。这些隐藏数据结构对叠加的操作系统和在计算机上运行的应用程序是透明的。
在历史上,当运行的CPU从操作系统接收到存储器请求时,它包括线性存储器地址。该线性存储器地址不是所请求的存储器单元的实际物理地址,而是由计算机系统中的操作系统利用的地址。为了到达实际物理地址,在CPU内的逻辑获取该线性地址并在标准存储器页表中执行走查以找到物理页面。在很多实施例中,实现微页表的处理器在走查中需要额外的步骤。在页面走查查找过程结束时将通常是物理地址的地址(平台物理地址——PPA)实际上是从现在可被称为微物理地址(MPA)的真实物理地址移除的一个级别。
在CPU中实现的微页表引擎逻辑利用具有PPA作为索引的页面未命中处理程序标签表来找到MPA地址。通过将间接的级别增加一个额外的级别,在微页表引擎内的逻辑可执行完全不为系统中的任何其它硬件或软件所知的物理存储器的大量存储器管理。接下来的是深度描述在几个不同的通用计算机系统中的微页表的概念布局以及微页表的几个不同的实现和它们可如何用于向计算机存储器管理提供额外的益处。
创建微页表可允许在存储器的近处(例如,高性能/高功耗存储器)和远处(例如,低性能/低功耗存储器)部分之间分配存储器的潜在地透明的方法。存储器管理的这个额外层可允许优化存储器子系统成本、存储器功耗和存储器性能。
微页表一般实现
图1描述实现微页表的计算机系统的一个实施例。
示出了计算机系统100。计算机系统可以是台式计算机、服务器、工作台、膝上型计算机、手持设备、电视机顶盒、媒体中心、游戏控制台、集成系统(例如在汽车中)、或其它类型的计算机系统。在几个实施例中,计算机系统100包括一个或多个中央处理单元(CPU)。虽然在很多实施例中可能有很多CPU,在图1所示的实施例中,为了清楚起见,只示出CPU102。CPU102可以是公司的CPU或另一品牌的CPU。在不同的实施例中,CPU102包括一个或多个核心。再次为了清楚起见,CPU102被示为包括单个核心(核心104)。
在很多实施例中,核心104包括内部功能块,例如一个或多个执行单元、引退单元、一组通用和专用寄存器等。如果核心104是多线程的或超线程的,则每个硬件线程也可被认为是“逻辑”核心。
CPU102还可包括一个或多个高速缓存,例如高速缓存106。在未示出的很多实施例中,除了高速缓存106以外的另外的高速缓存被实现,使得多个级别的高速缓存存在于核心中的执行单元和存储器之间。在不同的实施例中,可以用不同的方式分配高速缓存106。此外,在不同的实施例中,高速缓存106可以具有很多不同大小之一。例如,高速缓存106可以是8兆字节(MB)高速缓存、16MB高速缓存等。此外,在不同的实施例中,高速缓存可以是直接映射高速缓存、全相联高速缓存、多路组相联高速缓存或具有另一类型的映射的高速缓存。在包括多个核心的其它实施例中,高速缓存106可包括在所有核心当中共享的一个大部分,或可分成几个单独的功能分片(例如,对每个核心有一个分片)。高速缓存106还可包括在所有核心当中共享的一个部分和对于每核心作为单独的功能分片的几个其它部分。
在很多实施例中,CPU102包括集成系统存储器控制器108以提供与系统存储器110通信的接口。在未示出的其它实施例中,存储器控制器108可位于在计算机系统100的其它地方的分立芯片中。
系统存储器110可包括动态随机存取存储器(DRAM)(例如一种双数据率(DDR)DRAM)、非易失性存储器(例如闪存)、相变存储器(PCM)或另一类型的存储器技术。系统存储器110可以是存储由CPU102操作的数据和指令的通用存储器。此外,在具有对系统存储器进行读和写的能力的计算机系统100内可能有其它可能的设备,例如有直接存储器存取(DMA)能力的I/O(输入/输出)设备。
耦合CPU102与系统存储器110的链路(即,总线、互连等)可包括能够转移数据、地址、控制和时钟信息的一个或多个光学、金属或其它线(即,线路)。
I/O复合体(complex)112实现CPU102和一个或多个I/O设备(例如I/O设备114)之间的通信。在图1所示的实施例中,I/O设备114通过I/O接口116通信地耦合到I/O复合体112和CPU102的其余部分。I/O复合体112可以是I/O集线器接口,其包括几个I/O主机适配器和提供CPU102与许多I/O子系统之间的访问的其它I/O电路。例如,I/O复合体112可包括平台控制器集线器(PCH)。具体地,I/O复合体112可提供耦合到一个或多个I/O互连(即,I/O总线)的多个I/O设备和CPU102之间的一般通信接口。为了实现此,I/O集线器复合体可具有针对所使用的每个I/O协议的至少一个集成I/O适配器。可能有通信地耦合到I/O接口116的很多I/O设备,但是为了清楚起见只示出I/O设备114。
在图1中被示为I/O复合体112内的集成I/O适配器的I/O适配器118将在CPU102内利用的主机通信协议转换成与特定的I/O设备(例如I/O设备118)兼容的协议。给定I/O适配器可转换的一些协议包括快速外围部件互连(PCI)、通用串行总线(USB)、串行高级技术附件(SATA)、小型计算机系统接口(SCSI)、廉价冗余磁盘阵列(RAID)和1394“火线”等等。此外,可能有一个或多个无线协议I/O适配器。无线协议的例子有蓝牙、基于IEEE802.11的无线协议和蜂窝协议等等。
在很多实施例中,BIOS120(基本输入/输出系统)耦合到I/O复合体112。BIOS是存储在计算机系统中的固件,其包含在启动过程期间初始化关键计算机系统部件的指令。BIOS120通常存储在闪存设备内,但是设计成以非易失性方式存储信息的其它这样的存储设备也可用于存储BIOS。此外,虽然未在图1中示出,只在BIOS之外的其它固件(例如可扩展固件)也可存储在耦合到CPU102的闪速设备中。
除了I/O接口116以外,可能有集成到CPU102内的其它接口以给通信接口提供在CPU102外部的一个或多个链路。高速I/O接口122可将CPU102通信地耦合到高速I/O子系统(例如图形子系统和/或网络子系统)的一个或多个链路。例如,高速I/O接口可以是单或多通路高速双向串行接口,例如快速PCI。CPU间高速接口124可提供耦合到一个或多个额外的CPU的链路的接口并允许CPU间通信发生。例如,CPU间高速接口可以是快速通道互连(QPI)或其它类似的接口。
在很多实施例中,计算机系统100包括能够给虚拟化环境提供在虚拟机(VM)环境中运行的一个或多个来宾操作系统(OS)的硬件和软件逻辑。虚拟机监控器(VMM)或管理程序可在系统内的逻辑中实现以隔离每个VM的操作环境(即,所以每个VM)和OS,且在该VM内运行的应用与系统中存在的其它VM隔离且不知道在系统中存在的其它VM。
由I/O设备发起的设备转移(直接存储器存取-DMA)和中断是对给定VM需要设备隔离的关键过程。在很多实施例中,I/O虚拟化逻辑126可使系统软件能够创建多个DMA保护域。保护域是隔离的环境,系统存储器的子集被分配给该环境。根据软件使用模型,DMA保护域可代表被分配给VM的存储器或由来宾-OS驱动器分配的DMA存储器,来宾-OS驱动器在VM中或作为VMM或管理程序本身的部分而运行。I/O虚拟化逻辑126可使系统软件能够将一个或多个I/O设备分配到保护域。通过限制从未分配给保护域的I/O设备对保护域的物理存储器的访问来实现DMA隔离。
对于中断处理,I/O虚拟化逻辑126可将中断消息格式修改为DMA写请求,其包括“消息标识符”而不是实际中断属性。写请求(如任何DMA请求)可指定产生中断的I/O设备功能的请求者id。接着,当中断请求被I/O虚拟化逻辑126接收到时,中断通过中断的表结构被重新映射。中断-重新映射表中的每个条目相应于来自设备的唯一中断消息标识符,包括任何必要的中断属性(例如,目的地CPU、矢量等)。
在图1所示的实施例中,I/O虚拟化逻辑126通过I/O接口116从一个或多个I/O设备接收请求。I/O虚拟化逻辑126在允许这些请求传递到存储器控制器108之前处理这些请求,如上所述。
在很多实施例中,微页表(MPT)引擎128的逻辑在核心104中实现以使用可能隐藏(从OS和应用程序)的页表结构提供硬件管理的存储器地址空间。MPT引擎128虚拟化如由在计算机系统100上运行的OS和应用软件看到的存储器地址空间。具体地,可包括运行一个或多个应用/进程的操作系统的软件假定它可直接请求对系统存储器110中的物理地址的访问,但MPT引擎128提供隐藏的间接级别,所以物理存储器可与操作系统中的内核知道的物理存储器的布局分开地被管理。存储器的这个硬件实现的可能隐藏的间接级别管理所有存储器一致性和在系统存储器110的区域之间的数据移动。
MPT引擎128包括在每个核心(例如核心104)内的修改的转换后援缓冲器(TLB)130和页面未命中处理程序(PMH)逻辑132。
在很多实施例中,TLB130通常考虑存储器管理硬件使用来提高线性地址转换速度的CPU高速缓存。TLB130包括包含页表条目的固定数量的槽(slot),这些页表条目通常将线性地址映射到平台物理地址(PPA)。此外,TLB130是内容可寻址存储器(CAM),其中搜索关键字是线性地址,且搜索结果是平台物理地址。如果从核心存储器请求134请求的线性地址存在于TLB中,则CAM搜索产生匹配,其是TLB命中。否则,如果所请求的地址不在TLB中,则CAM搜索导致TLB未命中。
如果有TLB命中,则线性地址→平台物理地址转换已经发生,且该转换存储在TLB130中。如果有TLB未命中,则相应地不存储该转换,且MPT引擎128逻辑接着需要使用OS建立的页表来执行页面走查以获取平台物理地址。一旦页面走查完成,正确的平台物理地址就被找到,且该转换可接着存储在TLB中。
但是在计算机系统100中,平台物理地址不是用于访问包括系统存储器110的存储器设备的实际物理存储器地址。相反,一旦MPT引擎128接收到该转换的平台物理地址,平台物理地址就接着用作被存储在存储器138的隐藏区域中的PMH标签表(TT)136内的索引(即,搜索关键字),以将真实地址获取到物理存储器内。在可在整个本文件中利用的其它实施例中,存储器区域138和它存储的可能一些或所有结构不是隐藏的,而对OS和软件应用是可见的。
具体地,PMH TT136具有多个条目。每个条目存储微物理地址(MPA),其直接映射到最终物理存储器空间中。因此,它至少采用两个地址转换来从线性地址得到MPA。当使用MPT引擎128时的额外的表查找是用于将平台物理地址转换成MPA的表查找。换句话说,在计算机系统100中的基本地址转换将以下列顺序被处理:线性地址→平台物理地址→MPA。到微物理地址转换的平台物理地址(使用PMH TT136)是全相联映射。因此,在PMH TT136中的任何条目能够存储任何MPA。一旦MPT引擎从PMH-TT获取MPA,它就将此存储在TLB中用于随后的访问,其中从线性地址到MPA的转换可被直接完成。在其它实施例中,以更受限的组关联性实现PMH TT136。
在很多实施例中,存储所有必要的MPT数据结构(例如PMH TT136)的存储器138的隐藏区域对软件(例如,OS)是不可见的,且特别由MPT引擎138利用来通过地址间接的额外层(即,使用隐藏区域138中的表的额外转换)管理物理存储器。
在平台在虚拟化环境中运行且存储器地址请求从来宾OS(或更一般地,来宾VM)接收到的实施例中,有使用被称为扩展页表(EPT)的另一地址转换表的第二额外的地址转换。具体地,从来宾OS接收的线性地址通过标准页面走查使用OS页表首先转换成来宾物理地址(GPA),来宾物理地址接着通过使用EPT转换成平台物理地址(PPA),且最后平台物理地址通过使用PMH TT136转换成相应的MPA。
存储器管理逻辑(MML)142位于CPU102中。在一些实施例中,MML142在核心104中、核心104的外部(例如,非核心)实现,或可能甚至在核心和非核心二者上实现。非核心通常指实际上不在核心中的CPU内的逻辑/电路。例如,允许给定CPU和其它CPU的核心之间的通信的某些I/O电路可位于CPU的非核心中。MML142是帮助管理MPT数据结构(例如PMH-TT136)的MPT引擎128的一部分。在将在下面详细讨论的很多实施例中,将用某些方式表示存储器页面,且存储在那些页面上的数据可能需要被交换出到其它页面。这些存储器页面交换转移的管理可在很大程度上由MML142处理。在图1所示的实施例中,MML142包括非核心中的硬件电路、存储在非核心中的微代码或两者的组合。在未示出的其它实施例中,包括MML142的电路和/或微代码位于核心中。在又一些其它实施例中,MML142可跨越核心和非核心。
此外,有PMH-TT136,以及存储在隐藏的存储器区域138中的额外数据结构可总称为由MPT引擎128管理的“微页表”。
图1为了解释的容易描述具有带有单个核心的单个CPU的计算机系统,但是下面在图3中示出另一更复杂的实施例。返回到图1,CPU102通常耦合到系统板(即,主板)。虽然未在图1中示出,主板可包括设计成确保起源于CPU102的通信引脚与每个外部功率之间的接触的插口和计算机系统中的其它部件。该插口将本质上通信地耦合集成在CPU102内的所有电路与各种部件(例如系统存储器(例如,通用存储设备140)、I/O复合体112和未示出的其它额外的部件)。在很多情况下,系统资源(例如存储器)的分配可基于每插口布局。因此,当提到系统设置时,CPU和插口可互换地被利用,除非另外指出。
在图2和图3中示出实现微页表的计算机系统的其它实施例。
图2描绘实现微页表的计算机系统的另一实施例。
图2所示的计算机系统类似于图1所示的计算机系统,除了I/O复合体和集成到I/O复合体内的电路是与CPU102分立的外部I/O复合体200以外。在很多实施例中,I/O虚拟化逻辑202和I/O适配器204都集成到分立的I/O复合体200中。这些部件的功能可与上面在图1中关于I/O复合体112、I/O适配器和I/O虚拟化逻辑126描述的相同,只是它们在计算机系统内的不同位置处。在图1和图2中未示出的又一些其它实施例中,I/O复合体200可部分地在CPU102管芯上实现并部分地在CPU102外部实现。
图3描述实现微页表的计算机系统的另一实施例。
图1和图2所示的计算机系统限于示出具有单个核心的单个CPU。如所陈述的,这是为了说明性目的而进行的。在很多实施例中,实现微页表的计算机系统可以是具有很多核心和很多CPU的计算机。例如,图3示出具有四个CPU(A0、A1、B0和B1)的计算机系统。CPU A0和A1位于节点A内,而CPU B0和B1位于节点B内。所有四个CPU通过高速CPU间接口(I/F)彼此通信。在节点之间,高速接口通过每个节点的控制器(节点控制器A和B)来进行路由。
在图3所示的实施例中,每个CPU包括四个不同的核心(核心A0a、A0b、A0c和A0d在CPU A0中;核心A1a、A1b、A1c和A1d在CPU A1中;核心B0a、B0b、B0c和B0d在CPU B0中;以及核心B1a、B1b、B1c和B1d在CPU B1中)。MPT引擎的逻辑的至少一部分位于16个核心的每个内。
在很多实施例中,有每个CPU可访问的单个全局系统存储器300。虽然未示出,在系统存储器300内可能有隐藏的存储器区域(图1中的138)。此外,为了附图的清楚起见,图3中未示出在每个CPU内的额外部件(例如,高速缓存)。
图4示出页面未命中处理程序标签表的实施例。在很多实施例中,PMH-TT400将每个页面的条目402存储在所有物理存储器404中。如图4所示,物理存储器404常常由多个等级(例如等级0-7)构成。每个PMH-TT条目(例如,402)包括在物理存储器404的等级之一中引用特定的页面的MPA。在一些实施例中,条目402还包括状态信息以将存储器的当前状态存储在MPA。例如,图4示出条目402的细节的一些例子。在图4中,状态包括3比特,且这些比特的某些组合可示出在不同状态中的条目,例如脏的、牺牲者、收回、锁定、取得、零等列出的状态。将在下面关于不同的关注的MPT的实施例更详细地解释这些示例性状态中的很多状态。在其它实施例中,状态可以不是3比特能够表示8个状态的简单编码,而是对每个状态可以有一个或多个单独的比特(但是未示出这种实施例)。
返回到图4所示的页面查找图示,地址请求到达MPT引擎(图1中的128)逻辑。例如,线性地址可以是来自OS的地址请求。如果在平台上没有虚拟化,则页面走查将产生平台物理地址(PPA),其在上面被讨论。PPA可用作PMH-TT400内的索引以获取包含微物理地址(MPA)的相关条目,微物理地址直接指向物理存储器中的单元(例如,物理存储器页面地址)。
另一方面,如果在平台(其可包括一个或多个虚拟机以及虚拟机管理器(VMM))上有虚拟化的级别,则对一组VMM维护的页表的中间页面走查被额外采用。具体地,在这个实施例中,对OS维持的页表406的页面走查指对VM已知的页表的走查,提供线性地址的OS正在该VM上运行。在这种情况下,从线性地址页面走查产生的地址指来宾OS物理地址(GPA)。GPA不直接编索引到PMH-TT中,因为有在来宾OS之下的VMM层,来宾OS管理在存在于平台中的可能很多虚拟机之一上运行的来宾OS所不知道的其自己的页表的组。通常,VMM页表被称为扩展页表(EPT),且GPA将接着用作对EPT的页面走查的索引以产生PPA来索引到PMH-TT400。当处理虚拟化平台时,这个额外的页面走查步骤通常是标准的。
在任一情况下,一旦PPA被产生,它就被用作到PMH-TT400的索引以找到包含直接引用物理存储器404的MPA的条目。
为了允许以上面描述的方式对所有软件虚拟化存储器,支持MPT引擎的存储器和数据结构需要被初始化。在很多实施例中,在计算机系统的启动期间,BIOS给计算机提供一组指令来初始化存在于系统中的很多部件。
在很多计算机系统中,BIOS的重要方面是存储器参考码(MRC)。MRC与存储器初始化有关,并包括关于存储器设置、频率、定时、驱动和存储器控制器的详细操作的信息。为了支持MPT,计算机系统中的BIOS可被更新以公布CPU-插口特定的存储器地址区。这可包括公布存在于系统中的每个存储器等级的物理地址范围,以及对所有软件初始隐藏系统存储器的一部分(图1中的隐藏存储器区域130)以实现PMH-TT400以及其它MPT数据结构,其将在下面被详述。具体地,对于PMH-TT400,标识映射可用于初始化目的。
在很多实施例中,PPA到MPA的映射是全相联映射。因此,给定的PPA可索引到整个PMH-TT400内精确的一个单元,但在该单元处的条目可映射到存储器中的任何任意的MPA单元。
这个额外的间接级别隐藏在硬件中,所以来宾OS、VM、VMM、管理程序或在平台上操作的可能任何其它软件结构可能完全不知道该额外的转换层。换句话说,从软件观点看,PPA被认为是对存储器的页面编索引的实际物理地址。替代地,当PMH-TT400被实现时,MPA是存储器内的真实物理地址。额外的间接层可允许很多应用,这些应用在被限制到软件解决方案时原本是明显效率更低或可能不可实现的。
微页表等级去除
图5示出实现用于等级去除的微页表的计算机系统的实施例。
等级去除涉及允许存储器的等级在使用中被优先化。存在为什么等级优先化可被实现的多种原因。例如,在很多实施例中,从功率观点看,同时利用计算机系统中的所有系统存储器等级并不总是有效的。例如,在服务器中,可能有可用的很多存储器等级,但服务器当前不在使用中或至少不在高度使用中。在这种情况下,如果系统中的存储器等级的子集被使用,存在于服务器中的工作负荷可能不会表现出性能降低。因此,使某些等级的使用优先于其它等级可能是可实现的,且在较低使用期中,存在于存储器子系统中的某些低优先级等级可接着与主动使用分离。使等级与主动使用分离可允许存储器子系统功率管理方案将未使用的等级置于较低功率状态中一段时间,从而降低整个计算机系统的功率消耗。
在其它实施例中,存在交错的存储器存取架构,而不是NUMA架构。因此,通常没有对存储器的配置的约束,且配置将根据实现而变化。例如,在一些实施例中,可能有共享单个DIMM的多个CPU。在其它实施例中,可能有用于每个CPU的多个DIMM。在又一其它实施例中,在多个DIMM和多个CPU之间可以有1对1相关性。
转到图5,示出了实现等级去除的多CPU插口计算机系统的实施例。
CPU A500通过点到点链路504耦合到CPU B502。CPU A500也直接耦合到存储器A506并间接耦合到存储器B508(通过链路504和CPU B502)。CPU B502直接耦合到存储器B508并间接耦合到存储器A504(通过链路504和CPU A500)。当对工作负荷利用存储器时,如果CPU A500将利用存储器A506且如果CPU B502将利用存储器B508,则通常更有效。这是由于在NUMA环境中的每CPU存储器的本地性(locality)。因此,在很多实施例中,CPU A可使位于存储器A506中的存储器等级的使用优先,且CPU B可使位于存储器B508中的存储器等级的使用优先。
在很多实施例中,等级去除可帮助实现每CPU(这可也被称为“每插口”,因为每个CPU通过其自己的插口耦合到系统板)等级的优先化。每插口等级的优先化通过利用每个CPU中的MPT引擎来实现,以动态地优先化该CPU所使用的等级。MPA地址空间跨越所有插口。因此,所有插口看到的地址空间的范围是相同的,但地址空间的不同部分可在每插口被优先化。
例如,在图5所示的两插口系统中,CPU A具有如在它下面示出的CPUA/插口1MPA地址空间。这表明,从地址0到地址2千兆字节(GB)-1,插口1的下NUMA区在插口1的热区中。CPU B具有CPU B/插口2MPA地址空间,其表明地址2GB到4GB-1,插口2的下NUMA区在插口2的热区中。
具体地,存储器的前4GB是下NUMA区。前两千兆字节映射到插口1,而随后的两千兆字节映射到插口2。在图5所示的实施例中,存在高于4GB的额外地址空间。对于地址空间的均匀分割,上NUMA区可在所有插口当中被相等地划分。此外,上NUMA区将等于存储器的顶部(ToM)减去下NUMA区的顶部(例如,4GB)。在图5所示的实施例中,有总共16GB的地址空间,且下NUMA区是4GB。因此,顶部12GB(16GB-4GB)在上NUMA区中。接着,12GB除以二以在两个插口当中分配上NUMA区,所以每个插口具有6GB的可寻址上NUMA区地址空间。因此,插口1可被分配从4GB到高达10GB-1的地址空间,且插口2可被分配从10GB到存储器的顶部的地址,其在本例中是16GB-1。
热区和冷区的大小可基于使用条件随着时间的过去而不同。在图5所示的例子中,在产生存储器的快照时,热区包括总地址空间的一半,而冷区包括另一半。因此,插口1的上NUMA区具有在热区中的地址4GB到6GB-1和冷区中的6GB到10GB-1,而插口2具有在热区中的地址10GB到12GB-1和冷区中的12GB到16GB-1。应认识到,在不同的实施例中,每个相应的NUMA区的大小、存储器的大小和插口的数量可改变。
此外,因为存储器的热区和冷区可能潜在地是动态可调节的,每个插口的热区和冷区的大小也是可变的。虽然对每个插口有热区和冷区,每插口大小的可变性可以是对称的或非对称的。例如,在某些情况下,每个插口的热区和冷区的大小在各插口上总是相同的。因此,如果热区从可寻址存储器的25%扩大到50%,这个变化可对所有插口同时完成(在各插口上对称的处理)。另一方面,在其它情况下,每个插口的热区和冷区的大小被单独地维持(在各插口上非对称的处理)。例如,如果插口1具有重工作负荷而插口2具有轻工作负荷,则插口1的热区可跨越比插口2的可寻址存储器空间的相应热区更高百分比的插口1的可寻址存储器空间。
通常,对PMH-TT的标识映射存储在存储器地址空间的热区中,且MPT数据结构本身——包括PMH-TT——也存储在存储器地址空间的热区中。在很多实施例中,数据结构跨越这两个插口的每个的热区,如图5所示。
图6示出实现至少部分地用于等级去除的微页表的计算机系统的实施例。图6中的计算机系统类似于图1所示的计算机系统。所有主要部件以类似的方式被利用,并可在上面的描述中被提到。图6在系统存储器110中添加等级去除实现特定的分区。示出活动存储器600的分区和不活动存储器602的分区。活动存储器600的分区包括当前由CPU102利用的那些等级的存储器(即,地址空间的热区)。而不活动存储器602的分区包括当前由CPU102利用的那些等级的存储器(即,地址空间的冷区)。
当开始启用更多的等级时,活动存储器600的分区将增加,而当使用较少的等级时,不活动存储器分区602将增加。在活动和不活动存储器分区之间在大小上的潜在变化的粒度是实现特定的。例如,如果对功率管理利用等级去除,则活动等级相对于不活动等级的变化的粒度可镜像可单独地对功率管理的等级的数量。如果在系统存储器中有16个等级且这些等级耦合到一组4个系统板中的一个系统板上的电源层,则可能意味着在任何给定的时间,0、4、6、12或16个等级可以是活动的,对于不活动等级反之亦然。另一方面,如果对于系统存储器内的电源有更精细的粒度,则可能有更多的选项。如果每个等级能够使用单独的功率被控制,则可能有活动存储器部分与不活动存储器部分的16个不同的组合。
也可能在存储器模块的基础上关注粒度,这将允许通过单个模块(例如DIMM)耦合到系统板的所有存储器作为一组被管理功率。
另一方面,可在基于NUMA的系统中在性能的基础上管理每CPU的活动和不活动等级。例如,返回到图5,在双CPU系统中,存储器A506对CPU A500是本地的,所以代表存储器A506的地址空间可最初被表示为CPU A500的活动存储器。而存储器B508对CPU A500是远程的,所以代表存储器B508的地址空间可最初被表示为CPU A500的不活动存储器。但是如果工作负荷需要对CPU A500的增加的存储器使用,存储器B508可具有其指定为切换到活动存储器的部分。本地存储器地址空间的这个利用也可对CPU B502成立,最初使用存储器B508作为活动存储器和使用存储器A506作为不活动存储器。
现在转到图7,该图示出当被实现时至少部分地用于等级去除的页面未命中处理程序标签表的实施例。
从初始输入线性地址到达MPA的页面走查过程类似于图4所述和所示的过程。在该过程中的主要步骤以类似的方式完成,并可在上面的描述中被提到。图5包括额外的等级去除实现细节。
在图7中右边示出的物理存储器(即,等级0-7)包括微页面地址(MPA)空间冷区500和MPA空间热区502。冷区可被认为是不活动存储器区,而热区可被认为是活动存储器区。因此,等级0和1当前是活动的,而等级2-7当前是不活动的。
在702详细示出的状态信息中利用的一个可能的状态是“冷”比特。对于PMH-TT704中的每个条目,这个比特可指示条目是否索引到MPA空间的冷区或MPA空间的热区中。在系统的初始化期间,相应于冷区中的等级的PMH-TT704中的每个条目可使用冷比特(例如,冷比特=“1”)最初被设置为冷MPA(cMPA)。以及其余条目可被设置为热比特(例如,冷位=“0”或当前比特=“1”)。
当系统首先被启动时,对每个等级可以有关于是否该等级(以及它包括的所有MPA条目)是在整个系统存储器的冷区还是在热区内的初始状态。当在操作期间使用模式对存储器变化时(例如,重存储器工作负荷、轻存储器工作负荷、空闲等),MPT引擎逻辑可决定缩小或扩大存储器702的热区。因此,可在系统操作期间动态地调节存储器的热区和冷区。这可潜在地基于性能策略(即,当性能降低时,热区扩大以补偿)或功率策略(在系统空闲期间,更多的等级被加到冷区用于对存储器子系统的至少一部分潜在使用低功率模式)。除了这些情景以外,还有用于去除存储器的等级的很多其它潜在的使用。
热和冷MPA转换对系统是否使用虚拟化和需要额外的GPA→PPA页面走查步骤没有影响。该图仅为了单个示例的说明性目的特别示出该方式。
在很多实施例中,只有热页面转换存储在TLB中。因此,当有访问在存储器的冷区中的MAP地址处的物理页面的请求时,等级去除未命中发生。因为热页面特别用于通过CPU或其它总线主设备的一般访问,存储在所请求的页面中的数据接着从存储器的冷页面移动到热页面。在很多实施例中,当来自冷页面的数据需要被访问时,存储器的热区总是维持总的热空间的至少某个百分比作为将在数据交换中被利用的自由存储器页面。自由热页面的这个百分比范围可从总的热页面的非常小的百分比(例如,一个自由热页面)一直到热页面的整个范围的相当大的百分比(例如,热页面的总数量的10%是自由的)。
图8是处理热页面未命中所使用的过程的实施例的流程图,而图9示出当对热页面未命中作出反应时由MPT引擎利用的一些额外的微页表数据结构的实施例。为了是清楚的,热页面未命中仅仅是对在存储器的冷区中的物理页面的存储器页面请求。图8与图9有关。具体地,图8所示的过程示出MPT引擎逻辑如何通过利用图9所示的数据结构来处理热页面未命中。可通过处理与MPT引擎有关的逻辑来执行图8所示的过程。该处理逻辑可包括硬件、软件、固件或这三种逻辑形式的任何组合。此外,在整个图8和图9中,有使用字母(例如,A、B、C等)表示的小圆圈。这些字母表示的圆圈是关于当它执行图8中的逐块过程流时什么数据结构和数据转移由处理逻辑利用的所关注的项目。
现在转到图8,该过程以处理逻辑确定所接收的存储器请求是否以不在TLB中的存储器的页面为目标(处理块800)开始。如上所述,在很多实施例中,TLB不存储冷页面转换,因此如果有TLB命中,在这些实施例中,固有的是所请求的存储器页面已经位于存储器的热区内。如果有TLB命中,则这个过程结束,因为处理逻辑将不处理热页面未命中。处理块800被利用,因为虽然处理块802将确定所请求的存储器页面是在热区还是冷区中,但是处理块802需要额外的查找时间,如果有TLB命中,则该查找时间不是必要的。
继续该过程(假设有TLB未命中),下一处理逻辑具体地通过检查与PMH-TT(图9中的900)中的页面相关的状态信息来确定所请求的存储器页面是在热区还是冷区中(处理块802)。这个确定需要在PMH-TT900中的存储器的物理页面进行查找。上面在图7中详细描述了查找。具体地,处理逻辑利用存储器页面请求的PPA来索引到PMH-TT900内以找到特定的条目。
特定的条目包括MPA以及该特定的存储器页面的状态信息。在一些实施例中,状态信息包括当前比特(P),使用所请求的存储器页面的PPA,如果P比特被设置(P=1),则当前比特可指示存储器页面在热区中,而如果P比特被清零(P=0),则当前比特可指示存储器页面在冷区中。在很多其它实施例中,另外利用冷比特(C),如果C比特被设置(C=1),则冷比特可指示存储器页面在冷区中,而如果C比特被清零(C=0),则冷比特可指示存储器页面在热区中。例如,如在图8的过程中所示的,处理逻辑确定是否P=0。处理逻辑通过在PPA索引位置(项目A)处在PMH-TT900内查看来对此进行确定。
如果P比特被清零(P=0),则处理逻辑将PMH-TT900锁定在PPA索引位置处(处理块804)。PMH-TT900需要被锁定以允许处理逻辑发起冷到热存储器页面转移。如果PMH-TT900未锁定在PPA索引位置处,则例如由于另一实体同时尝试类似的访问,冷到热转变的破坏可能接着发生。在很多实施例中,可通过将在PMH-TT900中的PPA索引位置(项目B)处的状态信息比特设置为“取得”(F=1)来完成该锁定。
接着,处理逻辑从PMH-TT900取得cMPA(处理块806)。[在很多实施例中,这个取得程序从cMPA存储器位置(项目C)取得数据]。该数据可放置在缓冲器逻辑内用于临时存储。]接着,处理逻辑将cMPA物理存储器页面地址装入冷自由列表内(处理块808),换句话说,在PMH-TT900中的cMPA地址被复制到由图9中的数据转移D示出的冷自由列表数据结构(图9中的902)。冷自由列表存储在存储器的冷区中的但作为存储器请求的目标的物理存储器页面地址,且因此该页面中的数据需要转移到热存储器区页面。一旦冷区页面不再需要继续保存数据(因为数据的拷贝被复制到缓冲器中),则存储器的冷页面就被自由地盖写,且因此其地址放置在冷自由列表中。
处理逻辑接着从热自由列表数据结构(图9中的904)取得自由hMPA物理存储器页面地址(图9中的项目E)(处理块810)。热自由列表包括对该过程可用来写的热区存储器页面。图10和图11在下面描述热自由列表904如何被填充。处理逻辑接着将来自cMPA存储器页面的数据复制到hMPA存储器页面(处理块812和图9中的项目F)。一旦冷到热存储器页面数据转移发生,则处理逻辑就更新并解锁PMH-TT900(处理块814和图9中的项目G)。
在很多实施例中,PMH-TT900对hMPA地址处的存储器页面将状态信息更新设置到当前(P=1)而不是取得(F=0),以解锁并更新该页面。此外,在该过程之前,在hMPA地址处的这个热区存储器页面在热自由列表中,因为它对用于冷到热转移是可用的,但是现在因为它用于该转移,该页面在使用中且不再是自由的。因此,处理逻辑从热自由列表904移除hMPA地址。
现在转到图10和图11,图10是提供具有在冷到热存储器页面数据转移期间被用作热页面的能力的多个存储器页面的维护过程的实施例的流程图,以及图11示出在维护过程期间由MPT引擎利用的一些额外的微页表数据结构的实施例。图10与图11有关。具体地,图10所示的过程示出MPT引擎逻辑如何通过利用图11所示的数据结构来继续进行维护方法。图10所示的过程可由与MPT引擎有关的处理逻辑执行。该处理逻辑可包括硬件、软件、固件或这三种逻辑形式的任何组合。此外,类似于图8和图9,在整个图10和图11中,有使用字母(例如,A、B、C等)表示的小圆圈。这些字母表示的圆圈是关于当其执行图10中的逐块过程流时什么数据结构和数据转移由处理逻辑利用所关注的项目。
图10中的过程以处理逻辑为关于热页面未命中的局部描述符表(LDT)分配hMPA开始(处理块1000和项目A)。LDT(图11中的1102)包含在PMH TT(图11中的1100)中的条目的子集。LDT中的条目的特定子集是实际上在使用中的子集(即,“当前”或“热”比特被设置)。通常,LDT1102允许快速查找逻辑以确定条目是否存在。在没有LDT1102的情况下,PMHTT将需要被搜索以确定所讨论的条目是否存在,因为在PMH TT中,所有存储器地址空间单元被引用,在很多实施例中,大部分PMH TT条目将是空的(即,“当前”或“热”比特被清零)。如在图8和图9中详细描述的,一旦从可标记的查找找到在PMH-TT中的PPA索引位置处、状态信息中P=0(和/或C=1)的MPA地址(图10和图11中的处理块1000和项目A),就确定热页面未命中。在PMH-TT(图11中的1100)中被指定从热页面转变为冷页面的hMPA处的数据可在热页面未命中时被分配(上文关于图8和图9所述的)。LDT(图11中的1102)使用MPA地址被编索引。具体地,所分配的hMPA用作到LDT1102中的索引以找到PPA。因此,虽然PMH-TT1100存储物理MPA地址并使用PPA地址被编索引,LDT1102是相反的,因为它存储PPA地址并使用物理MPA地址被编索引。
在不同的实施例中,LDT1102中的槽的分配可在每次热页面未命中时发生,或以另一方式发生,例如在某一次数的热页面未命中之后几个槽被一次分配。在PPA存储器单元被存储在LDT1102中之后的某个时间,MPT引擎处理逻辑将选择LDT1102中的一个或多个PPA存储器单元用于牺牲(图10和图11中的处理块1002和项目B)。等级去除牺牲是将存储在存储器的热页面中的数据移动到存储器的冷页面中的过程,所以存储器的热页面可被释放用于未来所需的冷到热页面转移。
用于牺牲的选择过程可以是几个实施例中的一个。例如,MPT引擎处理逻辑可跟踪自每个热页面由CPU或另一实体访问后有多长时间,且基于该数据,牺牲者可包括在最长的时间内不活动的那些热页面。在另一例子中,MPT引擎处理逻辑可跟踪数据的本地性并将数据保持在主动被利用以及在相对邻近的物理存储器页面单元上群集在一起的热页面中,并牺牲不在热页面群附近的其它热页面。虽然未讨论,很多其它类型的牺牲算法可由MPT引擎处理逻辑执行。
在很多实施例中,通过处理逻辑将页面的状态信息牺牲比特设置为V=1,LDT1102槽被选择用于牺牲。当V被设置到“1”时,这可能提示逻辑将hMPA转移到牺牲者列表1104的结构用于存储,或处理逻辑可通过其它方式发起到牺牲者列表1104的转移并在转移完成之后将牺牲比特改变到“1”。牺牲者列表1104用于存储对热到冷区转变指定的一组牺牲的物理存储器页面地址。虽然被指定为牺牲者,MPT引擎处理逻辑可通过将牺牲比特清零(V=0)并设置PMH-TT1100中的收回比特(R=1)以及移除页面的牺牲者列表1104的条目来收回牺牲者列表1104中的任何给定牺牲页面。收回牺牲页面的过程允许CPU或I/O DMA访问当前在TLB中具有转换的活动页面。这允许页面被要求,而不经历TLB未命中查找过程。
牺牲者可加入牺牲者列表1104中,只要有空间和/或有足够数量的可用自由热页面。在某个点,牺牲者列表1104可增长到列表中的牺牲者的数量超过阈值或自由热页面的数量落在另一阈值之下的点。一旦这些阈值之一被超过,MPT引擎处理逻辑就接着可处理到冷空间的相当大数量的牺牲者页面数据转移。这个热到冷数据转移被完成,因为在热区存储器页面可被认为是“自由的”之前,在热区存储器页面中的数据必须首先转移到冷区存储器页面中的数据。
因此,返回到图10,MPT引擎处理逻辑将从牺牲者列表1104选择一个或多个牺牲者用于到存储器的冷区的数据转移移动(处理块1004和图11中的数据转移项目C)。当将条目从牺牲者列表1104移动到脏列表1106时,需要TLB强行中止(shootdown)。因此,如果TLB强行中止一起处理一组页面而不是每个页面以限制系统由于TLB强行中止过程而慢下来的时间,则这通常更有效。TLB强行中止需要处理器间中断以冲洗(flush)所影响的TLB查找转换。在存储器页面的TLB强行中止之后,在牺牲者列表1104中的该MPA物理存储器页面的条目可转移到脏列表1106中。这个转移也涉及修改每个条目的状态信息以将牺牲比特清零(V=0)并设置脏比特(D=1)。如上面讨论的,在很多实施例中,只有热页面转换被缓存在TLB中,因此虽然从hMPA到cMPA的热到冷区数据转移需要TLB强行中止,冷到热移动不需要TLB强行中止。
存储在脏列表中的这些TLB强行中止处理的页面条目也可通过CPU或I/O DMA访问收回。再次,收回过程仅需要移除脏列表中的页面条目并更新该特定页面的PMH-TT1100条目,以将脏比特清零(D=0)并设置收回比特(R=0)。因此,牺牲者列表和脏列表条目都能够被收回。被收回的条目指可被使用为好像它在状态比特被更新后从未牺牲一样的条目。
在给定时间,脏列表1106中的每个条目需要使其数据从hMPA存储器页面单元复制到从冷自由列表1108选定的自由cMPA存储器页面单元(处理块1006和图11中的项目D)。如上所述,这产生存储在自由cMPA页面中的hMPA中的数据的拷贝以允许hMPA页面被释放用于未来使用。一旦到存储器的冷区的数据转移发生,则处理逻辑就使用新的cMPA信息更新PMH-TT1100(处理块1008和图11中的项目E)。PMH-TT1100更新利用LDT1102以将所利用的cMPA的索引设置到所复制的hMPA的PPA索引。这本质上重新映射PMH-TT1100的条目,所以PPA地址的查找现在将指向所利用的cMPA,其现在具有数据的拷贝而不是指向旧hMPA。
最后,MPT引擎处理逻辑将接着使用hMPA信息更新热自由列表1110(处理块1010和图11中的项目F)。使用存储在hMPA地址处的存储器页面中的、现在安全地存储在新的cMPA页面中的数据,hMPA页面现在是自由的以用作自由热存储器区页面。因此,由于这个原因,hMPA条目存储在热自由列表1110中。热自由列表1110的页面不再在TLB中。这允许TLB强行中止的数量上的减小,因为从热自由列表抓取的所需的热页面不需要额外的TLB强行中止。相反,TLB强行中止过程发生在牺牲者列表和脏列表之间,其中很大组的页面条目可在单次强行中止期间被处理。
如上所述的收回比特特征允许丢弃具有该比特集合的牺牲者列表和脏列表页面条目。复制过程块(块1006和图11中的项目D)不复制收回的页面。在一些实施例中,MPT引擎丢弃在复制过程块收回的页。在其它实施例中,收回的页面在收回发生之后从牺牲者列表和脏列表移除。
虽然PMH-TT是全局结构,通常图9和图11所示的其它结构在每插口被局部化。因此,通常主存储器在每插口被分配,且存储器的隐藏区域(图1中的138)将包括全局PMH-TT和局部额外的结构(例如,LDT、牺牲者列表、热自由列表等)。在一些实施例中,对于系统中的一个CPU,计算机系统将单个全局PMH-TT存储在存储器存储区域之一中的某个单元上。在其它实施例中,全局PMH-TT的局部副本存储在每CPU的每个隐藏的存储器区域中,并广播更新在CPU之间发送的消息区域以更新PMH-TT的它们局部副本,所以所有副本在整个系统操作中保持相同,但是这可能是不常见的。通常,PMH-TT在系统中的核心/插口当中划分,使得PMH-TT访问对于命中对插口而言为本地的存储器和命中另一插口上的存储器具有相等的概率。
将一个列表中的条目移动到另一列表的时间可由一个或多个阈值指示。图12A-12D示出处理逻辑可用来确定何时恢复存储器页面用于使用(即,存储器页面内务管理(housekeeping))的流程图的几个实施例。每个过程可由处理逻辑执行,处理逻辑可以是硬件、软件、固件或这三种逻辑形式的任一个的组合。在这些图中的每个中,所提到的“阈值”是这样的值,其可在任何给定的时间确定是否在启动利用测试过程之前确定最佳阈值以用来维持峰值性能或动态地在运行时间使用算法分析来基于当前的工作负荷确定阈值是否可能需要增加或降低。在一些实施例中,不是所有的阈值测试都被利用,而是阈值测试的子集被利用(例如,1或更多)。
在图12A、12B、12C和12D之间所讨论的每个“阈值”以及任何其它未描述的阈值可能性可具有彼此类似或不同的值。用于MPT引擎维持的列表数据结构的内务管理部分的很多不同的阈值可被利用,且每个阈值是实现特定的。图12A-12D仅提供可如何关于MPT引擎利用阈值的某些例子。在所讨论的很多实施例中,“一个或多个”条目被复制/移除。实际上,被复制/移动的列表条目的数量常常是在列表中的条目的总数量(即,列表被完全冲洗)。在其它实施例中,有在块中被复制/移动的一组最大数量的列表条目,且如果条目的总数量超过最大值,则对于任何单个过程,被允许一次复制/移动的最大数量被利用,且一个或多个后续过程可用于负责任何其余的列表条目。
图12A示出确定牺牲者列表何时达到阈值以开始内务管理的过程的实施例。在很多实施例中,MPT引擎处理逻辑确定牺牲者列表中的条目的总数量是否达到高阈值(处理块1200)。如果确定是这种情况,则处理逻辑选择牺牲者列表中的一个或多个条目用于移动到存储器的冷区中(处理块1202)。然后处理逻辑对已选择的条目执行TLB强行中止(处理块1204),且这个内务管理过程结束。
图12B示出确定脏列表何时达到高阈值以开始内务管理的过程的实施例。在很多实施例中,MPT引擎处理逻辑确定脏列表中的条目的总数量是否达到高阈值(处理块1206)。如果确定是这种情况,则处理逻辑将一个或多个脏列表条目从存储器的热区复制到存储器的冷区(处理块1208),且这个过程结束。
图12C示出确定热自由列表何时达到低阈值以开始内务管理的过程的实施例。在很多实施例中,MPT引擎处理逻辑确定热自由列表中的条目的总数量是否逐渐减少到落在最低阈值所需值之下的数值(处理块1210)。如果确定是这种情况,则处理逻辑从LDT选择一个或多个条目用于牺牲(处理块1212)。牺牲选择开始上面关于图10详细描述的过程。返回到图12C,一旦一个或多个条目被选择,则处理逻辑就将选定的条目复制到牺牲者列表中(处理块1214)。
在很多实施例中,如果热自由列表在其中没有足够的条目,牺牲者首先从图12C的过程收集,然后一旦它们被收集,处理逻辑就对牺牲者执行图12A中的过程,以将牺牲者移动到热自由列表中。
最后,图12D示出确定热自由列表何时达到低阈值以开始内务管理的过程的另一实施例。如在图12C中那样,图12D中的MPT引擎处理逻辑确定热自由列表中的条目的总数量是否逐渐减少到落在最低阈值所需值之下的数值(处理块1216)。如果确定是这种情况,则处理逻辑将一个或多个脏列表条目从存储器的热区复制到存储器的冷区(处理块1218),且这个过程结束。在任何情况下,在热自由列表中可再次使用这些复制的条目之前,需要TLB强制中止。
两级存储器
微页表引擎也可用于实现两级存储器(2LM)存储器子系统。图13描述在计算机系统内的微页表管理的两级存储器子系统的实施例。
图13所示的计算机系统类似于图1所示的计算机系统,很多部件提供类似的功能。为了清楚的目的,在该附图的其它版本中所示的某些元件(例如I/O子系统)没有特别在图13中示出。虽然未示出,与图1和图2所示I/O子系统类似的I/O子系统通常将在图13所示的系统中实现。
在很多实施例中,分立存储器控制器——存储器控制器B1300——位于计算机系统100中。存储器控制器B1300通过高速I/O接口122耦合到CPU102,或存储器控制器B可在CPU管芯中而不是作为分立芯片来实现,但是这个实施例未被示出。高速I/O接口可以是几种类型的互连之一,例如快速PCI、QPI等。存储器控制器B1300又提供对第二存储器(例如存储器B1302)的控制。存储器B1302可具有与存储器A110不同类型的存储器。例如,虽然存储器A110可包括DRAM的形式,存储器B1302可包括非易失性存储器的形式。在不同的实施例中,存储器B1302可以是相变存储器(PCM)、另一形式的非易失性存储器、或标准DRAM或低功率DRAM等等。
在很多实施例中,包括通用存储区域B1304的存储器B1302可被认为是计算机系统100内的主存储器,其中包括通用存储区域A140的存储器A110可被实现为DRAM高速缓存。包括DRAM和在很多实施例中包括很多千兆字节的存储空间的高速缓存能够在计算机系统100的常规操作期间吸收大部分写操作。在存储器B是非易失性存储器的实施例中,这个吸收效应帮助最小化非易失性存储器B1302的损耗,这帮助最小化PCM或其它形式的NVM的有限写寿命的效应以及对这些类型的存储器隐藏写的长时延。
使用MPT引擎的2LM的实现将通常以类似于如上面详细描述的等级去除的方式来工作。本质上,MPT引擎128可建立存储器空间的热区以映射到通用存储设备A140,并建立存储器空间的冷区以映射到通用存储设备B1304。因此,在很多实施例中,通用存储设备A是热区,而通用存储设备B是冷区。访问冷区的来自存储器的数据通过存储器页面转移交换被带到热区。
一旦存储器请求被发现不在TLB中,并且还被发现在页面走查查找过程之后不存在于存储器的热区(通用存储设备A140)中,则MML142可接着去到存储器控制器B1300外部并请求对通用存储设备B1304中的页面的访问。
上面在图8和图9中描述的标准热页面未命中过程流程正好再次应用于图13的实现,其利用第二存储器控制器和用于存储器的冷区的第二存储器。此外,交换存储器的热页面和冷页面的内务管理通常也适用。在很多2LM实施例中,有通过MML142运行的额外过程。当存储器B1302是非易失性的时,损耗整平(wear leveling)算法可合并到MML142内的逻辑。在有很少的活动到没有活动的时期期间,MPT引擎128的MML142部分可指示存储器控制器B1300来重新分配存储在存储器B1302内的数据的部分,以将损耗均匀分布在包括所有存储器B1302的PCM设备中。
图14描述PCM特定的存储器子系统的实施例。存储器B1302被示为在a x16PCM设备配置中。在未示出的很多其它实施例中,PCM设备可以是堆叠的几个设备高,以在访问时间相对小的增加延迟的情况下进一步增加存储。存储器B控制器1300通过链路1400耦合到CPU。请求从CPU中的逻辑进入控制器中。存储器B控制器1300可包括与存储器B1302中的集成链路1502(即,总线)耦合的几个DMA单元(单元1-N)。DMA单元可相互合作地工作,将请求发送到存储器B1302并接收回数据。该数据接着通过链路1400发送回到CPU。
本发明的实施例的元件也可被提供为用于存储机器可执行指令的机器可读介质。机器可读介质可包括但不限于闪存、光学盘、光盘-只读存储器(CD-ROM)、数字通用/视频盘(DVD)ROM、随机存取存储器(RAM)、可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)、磁卡或光卡、传播介质或适合于存储电子指令的其它类型的机器可读介质。
在上面的描述中和权利要求中,术语“包括”(include)和“包括”(comprise)以及其衍生词可被使用,且意图被视为彼此的同义词。此外,在下面的描述和权利要求中,可使用术语“耦合”和“连接”以及其衍生词。应理解,这些术语并没有意图作为彼此的同义词。相反,在特定的实施例中,“连接”可用于指示两个或更多元件彼此处于直接物理或电接触中。“耦合”可意味着两个或更多元件处于直接物理或电接触中。然而,“耦合”也可意味着两个或更多元件彼此不处于直接接触中,但仍然协作、相互作用或彼此通信。
在上面的描述中,某些术语用于描述本发明的实施例。例如,术语“逻辑”表示执行一个或多个功能的硬件、固件、软件(或其任何组合)。例如,“硬件”的例子包括但不限于集成电路、有限状态机或甚至组合逻辑。集成电路可采取处理器(例如微处理器、专用集成电路、数字信号处理器、微控制器等)的形式。
应认识到,在整个这个说明书中对“一个实施例”或“实施例”的提及意味着结合该实施例描述的特定特征、结构或特性包括在本发明的至少一个实施例中。因此,强调并应认识到,在本说明书中的不同部分中对“实施例”或“一个实施例”或“可选的实施例“的两次或更多次提及不一定都指同一实施例。此外,特定特征、结构或特性可适当地在本发明的一个或多个实施例中组合。
类似地,应认识到,在本发明的实施例的前述描述中,有时为了使本公开简化以帮助理解各种创造性方面中的一个或多个的目的,在单个实施例、附图或其描述中将各种特征聚集在一起。然而,本公开的方法不应被解释为反映所主张的主题需要比在每个权利要求中明确记载的更多的特征的意图。相反,如所附权利要求反映的,创造性方面在于少于单个前述公开的实施例的所有特征。因此,详细说明书所附的权利要求特此被明确地并入本详细说明书中。
Claims (25)
1.一种微页表引擎装置,包括:
用于接收针对在全局存储器地址空间中的页面的存储器页面请求的逻辑;
转换后援缓冲器(TLB),用于存储一个或多个存储器页面地址转换;
页面未命中处理程序逻辑,用于响应于所述TLB未存储对所述存储器页面请求所引用的存储器的页面的存储器页面地址转换,而在页面未命中处理程序标签表中执行微物理地址查找;以及
存储器管理逻辑,用于管理所述页面未命中处理程序标签表中的条目。
2.如权利要求1所述的装置,其中所述页面未命中处理程序标签表位于所述微页表引擎可访问的系统存储器的隐藏区域中。
3.如权利要求2所述的装置,其中所述页面未命中处理程序标签表是全相联的,并具有所述系统存储器的多个页面的单独条目。
4.如权利要求3所述的装置,其中微物理地址空间被分成冷区和热区。
5.如权利要求4所述的装置,其中所述存储器管理逻辑用于通过将来自所述热区中的第一存储器页面的数据转移到所述冷区中的第二存储器页面来释放所述第一存储器页面。
6.如权利要求5所述的装置,还包括用于响应于所接收的存储器请求以所述冷区中的第三存储器页面为目标,而将来自所述冷区中的所述第三存储器页面的数据转移到所述热区中的所述第一存储器页面的逻辑。
7.如权利要求6所述的装置,其中所述微物理地址空间跨越物理存储器的两个部分:物理存储器A和物理存储器B,其中物理存储器A的微物理地址空间包括所述热区,而物理存储器B的微物理地址空间包括所述冷区。
8.如权利要求3所述的装置,其中所述微物理地址空间包括在多个处理器之间共享的微物理地址空间的共享部分和微物理地址空间的多个非共享部分,其中所述多个处理器中的每个接收所述多个非共享部分中的一个。
9.一种方法,包括:
接收针对在全局存储器地址空间中的页面的存储器页面请求;
将一个或多个存储器页面地址转换存储在转换后援缓冲器(TLB)中;
响应于所述TLB未存储对所述存储器页面请求所引用的存储器的页面的存储器页面地址转换,而在页面未命中处理程序标签表中执行微物理地址查找;以及
管理所述页面未命中处理程序标签表中的条目。
10.如权利要求9所述的方法,其中所述页面未命中处理程序标签表位于微页表引擎可访问的系统存储器的隐藏区域中。
11.如权利要求10所述的方法,其中所述页面未命中处理程序标签表是全相联的,并具有所述系统存储器的每个页面的单独条目。
12.如权利要求11所述的方法,其中微物理地址空间被分成冷区和热区。
13.如权利要求12所述的方法,还包括:
通过将来自所述热区中的第一存储器页面的数据转移到所述冷区中的第二存储器页面来释放所述第一存储器页面。
14.如权利要求13所述的方法,还包括:
响应于所接收的存储器请求以所述冷区中的第三存储器页面为目标,而将来自所述冷区中的所述第三存储器页面的数据转移到所述热区中的所述第一存储器页面。
15.如权利要求14所述的方法,其中所述微物理地址空间跨越物理存储器的两个部分:物理存储器A和物理存储器B,其中物理存储器A和物理存储器B包括不同的存储器技术,且其中物理存储器A的微物理地址空间包括所述热区,而物理存储器B的微物理地址空间包括所述冷区。
16.如权利要求11所述的方法,其中所述微物理地址空间包括在多个处理器之间共享的微物理地址空间的共享部分和微物理地址空间的多个非共享部分,其中所述多个处理器中的每个接收所述多个非共享部分中的一个。
17.一种其上存储有指令的机器可读介质,所述指令如果被机器执行则使所述机器执行包括以下步骤的方法:
接收针对在全局存储器地址空间中的页面的存储器页面请求;
将一个或多个存储器页面地址转换存储在转换后援缓冲器(TLB)中;
响应于所述TLB未存储对所述存储器页面请求所引用的存储器的页面的存储器页面地址转换,而在页面未命中处理程序标签表中执行微物理地址查找;以及
管理所述页面未命中处理程序标签表中的条目。
18.如权利要求17所述的机器可读介质,其中所述页面未命中处理程序标签表位于微页表引擎可访问的系统存储器的隐藏区域中。
19.如权利要求18所述的机器可读介质,其中所述页面未命中处理程序标签表是全相联的,并具有所述系统存储器的每个页面的单独条目。
20.如权利要求19所述的机器可读介质,其中微物理地址空间被分成冷区和热区。
21.如权利要求20所述的机器可读介质,其中所执行的方法还包括:
通过将来自所述热区中的第一存储器页面的数据转移到所述冷区中的第二存储器页面来释放所述第一存储器页面。
22.如权利要求21所述的机器可读介质,其中所执行的方法还包括:
响应于所接收的存储器请求以所述冷区中的第三存储器页面为目标,而将来自所述冷区中的所述第三存储器页面的数据转移到所述热区中的所述第一存储器页面。
23.如权利要求22所述的机器可读介质,其中所述微物理地址空间跨越物理存储器的两个部分:物理存储器A和物理存储器B,其中物理存储器A和物理存储器B包括不同的存储器技术,且其中物理存储器A的微物理地址空间包括所述热区,而物理存储器B的微物理地址空间包括所述冷区。
24.如权利要求19所述的机器可读介质,其中所述微物理地址空间包括在多个处理器之间共享的微物理地址空间的共享部分和微物理地址空间的多个非共享部分,其中所述多个处理器中的每个接收所述多个非共享部分中的一个。
25.一种系统,包括:
第一存储器,其中所述第一存储器包括用于至少存储页面未命中处理程序标签表的隐藏部分;以及
第一处理器,所述第一处理器包括:
用于接收针对在全局存储器地址空间中的页面的存储器页面请求的逻辑;
转换后援缓冲器(TLB),用于存储一个或多个存储器页面地址转换;
页面未命中处理程序逻辑,用于响应于所述TLB未存储对所述存储器页面请求所引用的存储器的页面的存储器页面地址转换,而在页面未命中处理程序标签表中执行微物理地址查找;以及
存储器管理逻辑,用于管理所述页面未命中处理程序标签中的条目。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610146064.1A CN105760312B (zh) | 2010-09-24 | 2011-09-26 | 用于实现微页表的装置、方法和系统 |
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/890,585 US8838935B2 (en) | 2010-09-24 | 2010-09-24 | Apparatus, method, and system for implementing micro page tables |
US12/890,585 | 2010-09-24 | ||
US12/890585 | 2010-09-24 | ||
PCT/US2011/053306 WO2012040723A2 (en) | 2010-09-24 | 2011-09-26 | Apparatus, method, and system for implementing micro page tables |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610146064.1A Division CN105760312B (zh) | 2010-09-24 | 2011-09-26 | 用于实现微页表的装置、方法和系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103119570A true CN103119570A (zh) | 2013-05-22 |
CN103119570B CN103119570B (zh) | 2016-04-13 |
Family
ID=45871861
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201180046058.4A Expired - Fee Related CN103119570B (zh) | 2010-09-24 | 2011-09-26 | 用于实现微页表的装置、方法和系统 |
CN201610146064.1A Expired - Fee Related CN105760312B (zh) | 2010-09-24 | 2011-09-26 | 用于实现微页表的装置、方法和系统 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610146064.1A Expired - Fee Related CN105760312B (zh) | 2010-09-24 | 2011-09-26 | 用于实现微页表的装置、方法和系统 |
Country Status (6)
Country | Link |
---|---|
US (1) | US8838935B2 (zh) |
EP (1) | EP2619675B1 (zh) |
KR (1) | KR101457825B1 (zh) |
CN (2) | CN103119570B (zh) |
TW (1) | TWI461911B (zh) |
WO (1) | WO2012040723A2 (zh) |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105830059A (zh) * | 2014-11-28 | 2016-08-03 | 华为技术有限公司 | 文件访问方法、装置及存储设备 |
CN103902486B (zh) * | 2014-04-08 | 2017-02-22 | 华为技术有限公司 | 一种远端直接内存访问实现方法、装置及系统 |
WO2017190266A1 (zh) * | 2016-05-03 | 2017-11-09 | 华为技术有限公司 | 管理转址旁路缓存的方法和多核处理器 |
CN108701086A (zh) * | 2016-03-02 | 2018-10-23 | 英特尔公司 | 用于通过重新映射地址空间来提供连续可寻址存储器区域的方法和设备 |
US10175896B2 (en) | 2016-06-29 | 2019-01-08 | Western Digital Technologies, Inc. | Incremental snapshot based technique on paged translation systems |
US10229048B2 (en) | 2016-06-29 | 2019-03-12 | Western Digital Technologies, Inc. | Unified paging scheme for dense and sparse translation tables on flash storage systems |
US10235287B2 (en) | 2016-06-29 | 2019-03-19 | Western Digital Technologies, Inc. | Efficient management of paged translation maps in memory and flash |
US10353813B2 (en) | 2016-06-29 | 2019-07-16 | Western Digital Technologies, Inc. | Checkpoint based technique for bootstrapping forward map under constrained memory for flash devices |
CN111580748A (zh) * | 2014-08-19 | 2020-08-25 | 三星电子株式会社 | 虚拟化超大规模环境中的数据管理的装置和方法 |
US11216361B2 (en) | 2016-06-29 | 2022-01-04 | Western Digital Technologies, Inc. | Translation lookup and garbage collection optimizations on storage system with paged translation table |
Families Citing this family (82)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9032398B2 (en) * | 2010-07-12 | 2015-05-12 | Vmware, Inc. | Online classification of memory pages based on activity level represented by one or more bits |
US20120124269A1 (en) * | 2010-11-15 | 2012-05-17 | International Business Machines Corporation | Organizing Memory for Effective Memory Power Management |
US9235500B2 (en) * | 2010-12-07 | 2016-01-12 | Microsoft Technology Licensing, Llc | Dynamic memory allocation and relocation to create low power regions |
US8607089B2 (en) | 2011-05-19 | 2013-12-10 | Intel Corporation | Interface for storage device access over memory bus |
US9003101B1 (en) * | 2011-06-29 | 2015-04-07 | Western Digital Technologies, Inc. | Prioritized access for media with heterogeneous access rates |
US9921967B2 (en) | 2011-07-26 | 2018-03-20 | Intel Corporation | Multi-core shared page miss handler |
US9294224B2 (en) | 2011-09-28 | 2016-03-22 | Intel Corporation | Maximum-likelihood decoder in a memory controller for synchronization |
EP2761467B1 (en) | 2011-09-30 | 2019-10-23 | Intel Corporation | Generation of far memory access signals based on usage statistic tracking |
EP2761480A4 (en) | 2011-09-30 | 2015-06-24 | Intel Corp | APPARATUS AND METHOD FOR IMPLEMENTING MULTINIVE MEMORY HIERARCHY ON COMMON MEMORY CHANNELS |
CN103946814B (zh) | 2011-09-30 | 2017-06-06 | 英特尔公司 | 计算机系统中的非易失性随机存取存储器的自主初始化 |
WO2013048491A1 (en) | 2011-09-30 | 2013-04-04 | Intel Corporation | Apparatus, method and system that stores bios in non-volatile random access memory |
US9600416B2 (en) | 2011-09-30 | 2017-03-21 | Intel Corporation | Apparatus and method for implementing a multi-level memory hierarchy |
US9378142B2 (en) | 2011-09-30 | 2016-06-28 | Intel Corporation | Apparatus and method for implementing a multi-level memory hierarchy having different operating modes |
EP3364304B1 (en) | 2011-09-30 | 2022-06-15 | INTEL Corporation | Memory channel that supports near memory and far memory access |
EP2761469B1 (en) | 2011-09-30 | 2019-11-13 | Intel Corporation | Non-volatile random access memory (nvram) as a replacement for traditional mass storage |
CN103946824B (zh) | 2011-11-22 | 2016-08-24 | 英特尔公司 | 一种用于非易失性随机访问存储器的访问控制方法、装置及系统 |
US9958926B2 (en) | 2011-12-13 | 2018-05-01 | Intel Corporation | Method and system for providing instant responses to sleep state transitions with non-volatile random access memory |
CN103975287B (zh) | 2011-12-13 | 2017-04-12 | 英特尔公司 | 使用非易失性随机存取存储器的服务器中的增强系统睡眠状态支持 |
US10795823B2 (en) | 2011-12-20 | 2020-10-06 | Intel Corporation | Dynamic partial power down of memory-side cache in a 2-level memory hierarchy |
US9286205B2 (en) | 2011-12-20 | 2016-03-15 | Intel Corporation | Apparatus and method for phase change memory drift management |
WO2013095465A1 (en) | 2011-12-21 | 2013-06-27 | Intel Corporation | High-performance storage structures and systems featuring multiple non-volatile memories |
KR101572403B1 (ko) | 2011-12-22 | 2015-11-26 | 인텔 코포레이션 | 메모리 채널 셧다운에 의한 전력 절약 |
CN104115230B (zh) | 2011-12-22 | 2018-02-16 | 英特尔公司 | 基于高效pcms刷新机制的计算装置、方法和系统 |
US9262336B2 (en) * | 2011-12-23 | 2016-02-16 | Intel Corporation | Page miss handler including wear leveling logic |
CN104137084B (zh) | 2011-12-28 | 2017-08-11 | 英特尔公司 | 提高耐久性和抗攻击性的用于pcm缓存的有效动态随机化地址重映射 |
US10002075B1 (en) * | 2012-03-13 | 2018-06-19 | Aggregate Knowledge, Inc. | Managing memory resources in a network environment in order to handle querying of logical data structures |
JP5624583B2 (ja) * | 2012-05-31 | 2014-11-12 | 株式会社東芝 | プログラム、計算処理装置、メモリ管理方法および計算機 |
KR20140006299A (ko) * | 2012-07-03 | 2014-01-16 | 삼성전자주식회사 | 낸드 플래시 메모리 기반의 저장부에 데이터 기록을 제어하는 방법 및 장치 |
US9191435B2 (en) | 2012-08-23 | 2015-11-17 | TidalScale, Inc. | Selective data migration or remapping of virtual processors to provide required data accessibility to processor cores |
US10303618B2 (en) * | 2012-09-25 | 2019-05-28 | International Business Machines Corporation | Power savings via dynamic page type selection |
US9152428B2 (en) | 2012-09-28 | 2015-10-06 | Intel Corporation | Alternative boot path support for utilizing non-volatile memory devices |
CN104380259B (zh) * | 2012-10-17 | 2018-09-21 | 华为技术有限公司 | 降低内存系统功耗的方法和内存控制器 |
EP3042305A4 (en) * | 2013-09-05 | 2017-04-05 | Tidalscale Inc. | Selective resource migration |
US9645934B2 (en) * | 2013-09-13 | 2017-05-09 | Samsung Electronics Co., Ltd. | System-on-chip and address translation method thereof using a translation lookaside buffer and a prefetch buffer |
US9297559B2 (en) * | 2013-09-25 | 2016-03-29 | Intel Corporation | Adaptive thermoelectric cooling in a processor |
US9298389B2 (en) | 2013-10-28 | 2016-03-29 | Lenovo Enterprise Solutions (Singapore) Pte. Ltd. | Operating a memory management controller |
US20150261688A1 (en) * | 2014-03-14 | 2015-09-17 | International Business Machines Corporation | Extended page table for i/o address translation |
US9766888B2 (en) | 2014-03-28 | 2017-09-19 | Intel Corporation | Processor instruction to store indexes of source data elements in positions representing a sorted order of the source data elements |
US9632927B2 (en) | 2014-09-25 | 2017-04-25 | International Business Machines Corporation | Reducing write amplification in solid-state drives by separating allocation of relocate writes from user writes |
US10289423B2 (en) | 2014-10-31 | 2019-05-14 | Hewlett Packard Enterprise Development Lp | Management controller |
US10078582B2 (en) | 2014-12-10 | 2018-09-18 | International Business Machines Corporation | Non-volatile memory system having an increased effective number of supported heat levels |
US9779021B2 (en) | 2014-12-19 | 2017-10-03 | International Business Machines Corporation | Non-volatile memory controller cache architecture with support for separation of data streams |
WO2016122662A1 (en) * | 2015-01-30 | 2016-08-04 | Hewlett Packard Enterprise Development Lp | Memory network to prioritize processing of a memory access request |
US10204047B2 (en) | 2015-03-27 | 2019-02-12 | Intel Corporation | Memory controller for multi-level system memory with coherency unit |
US9582430B2 (en) * | 2015-03-27 | 2017-02-28 | Intel Corporation | Asymmetric set combined cache |
US9600417B2 (en) * | 2015-04-29 | 2017-03-21 | Google Inc. | Data caching |
US9715268B2 (en) | 2015-05-08 | 2017-07-25 | Microsoft Technology Licensing, Llc | Reducing power by vacating subsets of CPUs and memory |
KR102403266B1 (ko) * | 2015-06-22 | 2022-05-27 | 삼성전자주식회사 | 데이터 저장 장치와 이를 포함하는 데이터 처리 시스템 |
US10073659B2 (en) | 2015-06-26 | 2018-09-11 | Intel Corporation | Power management circuit with per activity weighting and multiple throttle down thresholds |
US10387259B2 (en) | 2015-06-26 | 2019-08-20 | Intel Corporation | Instant restart in non volatile system memory computing systems with embedded programmable data checking |
US10108549B2 (en) | 2015-09-23 | 2018-10-23 | Intel Corporation | Method and apparatus for pre-fetching data in a system having a multi-level system memory |
US10185501B2 (en) | 2015-09-25 | 2019-01-22 | Intel Corporation | Method and apparatus for pinning memory pages in a multi-level system memory |
US10261901B2 (en) | 2015-09-25 | 2019-04-16 | Intel Corporation | Method and apparatus for unneeded block prediction in a computing system having a last level cache and a multi-level system memory |
US9886208B2 (en) | 2015-09-25 | 2018-02-06 | International Business Machines Corporation | Adaptive assignment of open logical erase blocks to data streams |
US9792224B2 (en) | 2015-10-23 | 2017-10-17 | Intel Corporation | Reducing latency by persisting data relationships in relation to corresponding data in persistent memory |
US10033411B2 (en) | 2015-11-20 | 2018-07-24 | Intel Corporation | Adjustable error protection for stored data |
US10095618B2 (en) | 2015-11-25 | 2018-10-09 | Intel Corporation | Memory card with volatile and non volatile memory space having multiple usage model configurations |
US9747041B2 (en) | 2015-12-23 | 2017-08-29 | Intel Corporation | Apparatus and method for a non-power-of-2 size cache in a first level memory device to cache data present in a second level memory device |
US10057069B2 (en) | 2016-02-29 | 2018-08-21 | Red Hat Israel, Ltd. | Securing code loading by a guest in a virtual environment |
JP6609199B2 (ja) * | 2016-03-01 | 2019-11-20 | ルネサスエレクトロニクス株式会社 | 組込み機器 |
US10007606B2 (en) | 2016-03-30 | 2018-06-26 | Intel Corporation | Implementation of reserved cache slots in computing system having inclusive/non inclusive tracking and two level system memory |
US10185619B2 (en) | 2016-03-31 | 2019-01-22 | Intel Corporation | Handling of error prone cache line slots of memory side cache of multi-level system memory |
US10120806B2 (en) | 2016-06-27 | 2018-11-06 | Intel Corporation | Multi-level system memory with near memory scrubbing based on predicted far memory idle time |
US10579421B2 (en) | 2016-08-29 | 2020-03-03 | TidalScale, Inc. | Dynamic scheduling of virtual processors in a distributed system |
US10915453B2 (en) | 2016-12-29 | 2021-02-09 | Intel Corporation | Multi level system memory having different caching structures and memory controller that supports concurrent look-up into the different caching structures |
US10445261B2 (en) | 2016-12-30 | 2019-10-15 | Intel Corporation | System memory having point-to-point link that transports compressed traffic |
US10324857B2 (en) * | 2017-01-26 | 2019-06-18 | Intel Corporation | Linear memory address transformation and management |
US10496290B1 (en) * | 2017-04-11 | 2019-12-03 | EMC IP Holding Company LLC | Method and system for window-based churn handling in data cache |
US10503658B2 (en) * | 2017-04-27 | 2019-12-10 | Advanced Micro Devices, Inc. | Page migration with varying granularity |
US10579274B2 (en) | 2017-06-27 | 2020-03-03 | TidalScale, Inc. | Hierarchical stalling strategies for handling stalling events in a virtualized environment |
US10304814B2 (en) | 2017-06-30 | 2019-05-28 | Intel Corporation | I/O layout footprint for multiple 1LM/2LM configurations |
US10817347B2 (en) | 2017-08-31 | 2020-10-27 | TidalScale, Inc. | Entanglement of pages and guest threads |
US11188467B2 (en) | 2017-09-28 | 2021-11-30 | Intel Corporation | Multi-level system memory with near memory capable of storing compressed cache lines |
US10860244B2 (en) | 2017-12-26 | 2020-12-08 | Intel Corporation | Method and apparatus for multi-level memory early page demotion |
KR20190107504A (ko) * | 2018-03-12 | 2019-09-20 | 에스케이하이닉스 주식회사 | 메모리 컨트롤러 및 그 동작 방법 |
US11099995B2 (en) | 2018-03-28 | 2021-08-24 | Intel Corporation | Techniques for prefetching data to a first level of memory of a hierarchical arrangement of memory |
US11055228B2 (en) | 2019-01-31 | 2021-07-06 | Intel Corporation | Caching bypass mechanism for a multi-level memory |
CN110413537B (zh) * | 2019-07-25 | 2021-08-24 | 杭州电子科技大学 | 一种面向混合固态硬盘的闪存转换层及转换方法 |
KR20220066402A (ko) * | 2019-10-09 | 2022-05-24 | 마이크론 테크놀로지, 인크. | 자가-적응형 웨어 레벨링 방법 및 알고리즘 |
US20210132979A1 (en) * | 2019-10-30 | 2021-05-06 | TidalScale, Inc. | Goal-directed software-defined numa working set management |
CN111666230B (zh) * | 2020-05-27 | 2023-08-01 | 江苏华创微系统有限公司 | 在组相联tlb中支持巨页的方法 |
US20220197829A1 (en) * | 2020-12-21 | 2022-06-23 | Intel Corporation | High capacity hidden memory |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6360303B1 (en) * | 1997-09-30 | 2002-03-19 | Compaq Computer Corporation | Partitioning memory shared by multiple processors of a distributed processing system |
US20060206687A1 (en) * | 2005-03-08 | 2006-09-14 | Microsoft Corporation | Method and system for a second level address translation in a virtual machine environment |
TW201025310A (en) * | 2008-11-12 | 2010-07-01 | Frank Maiworm & Dr Wolfhart Bosien Grundstuecks Gbr | Recording medium, method and device for its production as well as method and device for writing and reading of information |
US20100281230A1 (en) * | 2009-04-29 | 2010-11-04 | Netapp, Inc. | Mechanisms for moving data in a hybrid aggregate |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6795907B2 (en) * | 2001-06-28 | 2004-09-21 | Hewlett-Packard Development Company, L.P. | Relocation table for use in memory management |
US7139877B2 (en) * | 2003-01-16 | 2006-11-21 | Ip-First, Llc | Microprocessor and apparatus for performing speculative load operation from a stack memory cache |
US8417913B2 (en) | 2003-11-13 | 2013-04-09 | International Business Machines Corporation | Superpage coalescing which supports read/write access to a new virtual superpage mapping during copying of physical pages |
US7334107B2 (en) * | 2004-09-30 | 2008-02-19 | Intel Corporation | Caching support for direct memory access address translation |
US7395405B2 (en) * | 2005-01-28 | 2008-07-01 | Intel Corporation | Method and apparatus for supporting address translation in a virtual machine environment |
US20060184713A1 (en) | 2005-02-16 | 2006-08-17 | Hob Gmbh & Co. Kg | Method for operating a virtual machine computer system running guest operating systems on a central processing means virtualized by a host system having register stack engine functionality |
US7673345B2 (en) | 2005-03-31 | 2010-03-02 | Intel Corporation | Providing extended memory protection |
US8010764B2 (en) | 2005-07-07 | 2011-08-30 | International Business Machines Corporation | Method and system for decreasing power consumption in memory arrays having usage-driven power management |
US20070061549A1 (en) | 2005-09-15 | 2007-03-15 | Kaniyur Narayanan G | Method and an apparatus to track address translation in I/O virtualization |
JP2008090395A (ja) | 2006-09-29 | 2008-04-17 | Hitachi Ltd | 計算機システム、演算用ノード及びプログラム |
TW200842579A (en) | 2007-04-30 | 2008-11-01 | Univ Nat Chiao Tung | Asynchronous processing system |
US8046559B2 (en) | 2008-03-27 | 2011-10-25 | Intel Corporation | Memory rank burst scheduling |
TWI467369B (zh) * | 2008-10-01 | 2015-01-01 | A Data Technology Co Ltd | 混合密度記憶體系統及其控制方法 |
-
2010
- 2010-09-24 US US12/890,585 patent/US8838935B2/en active Active
-
2011
- 2011-09-23 TW TW100134352A patent/TWI461911B/zh not_active IP Right Cessation
- 2011-09-26 CN CN201180046058.4A patent/CN103119570B/zh not_active Expired - Fee Related
- 2011-09-26 WO PCT/US2011/053306 patent/WO2012040723A2/en active Application Filing
- 2011-09-26 EP EP11827736.7A patent/EP2619675B1/en not_active Not-in-force
- 2011-09-26 KR KR1020137007415A patent/KR101457825B1/ko not_active IP Right Cessation
- 2011-09-26 CN CN201610146064.1A patent/CN105760312B/zh not_active Expired - Fee Related
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6360303B1 (en) * | 1997-09-30 | 2002-03-19 | Compaq Computer Corporation | Partitioning memory shared by multiple processors of a distributed processing system |
US20060206687A1 (en) * | 2005-03-08 | 2006-09-14 | Microsoft Corporation | Method and system for a second level address translation in a virtual machine environment |
TW201025310A (en) * | 2008-11-12 | 2010-07-01 | Frank Maiworm & Dr Wolfhart Bosien Grundstuecks Gbr | Recording medium, method and device for its production as well as method and device for writing and reading of information |
US20100281230A1 (en) * | 2009-04-29 | 2010-11-04 | Netapp, Inc. | Mechanisms for moving data in a hybrid aggregate |
Cited By (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103902486B (zh) * | 2014-04-08 | 2017-02-22 | 华为技术有限公司 | 一种远端直接内存访问实现方法、装置及系统 |
CN111580748A (zh) * | 2014-08-19 | 2020-08-25 | 三星电子株式会社 | 虚拟化超大规模环境中的数据管理的装置和方法 |
CN105830059B (zh) * | 2014-11-28 | 2019-09-27 | 华为技术有限公司 | 文件访问方法、装置及存储设备 |
CN105830059A (zh) * | 2014-11-28 | 2016-08-03 | 华为技术有限公司 | 文件访问方法、装置及存储设备 |
CN108701086A (zh) * | 2016-03-02 | 2018-10-23 | 英特尔公司 | 用于通过重新映射地址空间来提供连续可寻址存储器区域的方法和设备 |
WO2017190266A1 (zh) * | 2016-05-03 | 2017-11-09 | 华为技术有限公司 | 管理转址旁路缓存的方法和多核处理器 |
US10795826B2 (en) | 2016-05-03 | 2020-10-06 | Huawei Technologies Co., Ltd. | Translation lookaside buffer management method and multi-core processor |
US10235287B2 (en) | 2016-06-29 | 2019-03-19 | Western Digital Technologies, Inc. | Efficient management of paged translation maps in memory and flash |
US10353813B2 (en) | 2016-06-29 | 2019-07-16 | Western Digital Technologies, Inc. | Checkpoint based technique for bootstrapping forward map under constrained memory for flash devices |
US10725669B2 (en) | 2016-06-29 | 2020-07-28 | Western Digital Technologies, Inc. | Incremental snapshot based technique on paged translation systems |
US10725903B2 (en) | 2016-06-29 | 2020-07-28 | Western Digital Technologies, Inc. | Unified paging scheme for dense and sparse translation tables on flash storage systems |
US10229048B2 (en) | 2016-06-29 | 2019-03-12 | Western Digital Technologies, Inc. | Unified paging scheme for dense and sparse translation tables on flash storage systems |
US10175896B2 (en) | 2016-06-29 | 2019-01-08 | Western Digital Technologies, Inc. | Incremental snapshot based technique on paged translation systems |
US11216361B2 (en) | 2016-06-29 | 2022-01-04 | Western Digital Technologies, Inc. | Translation lookup and garbage collection optimizations on storage system with paged translation table |
US11816027B2 (en) | 2016-06-29 | 2023-11-14 | Western Digital Technologies, Inc. | Translation lookup and garbage collection optimizations on storage system with paged translation table |
Also Published As
Publication number | Publication date |
---|---|
US8838935B2 (en) | 2014-09-16 |
TWI461911B (zh) | 2014-11-21 |
EP2619675B1 (en) | 2018-08-22 |
US20120079232A1 (en) | 2012-03-29 |
EP2619675A4 (en) | 2014-06-25 |
KR20130048261A (ko) | 2013-05-09 |
CN103119570B (zh) | 2016-04-13 |
EP2619675A2 (en) | 2013-07-31 |
CN105760312A (zh) | 2016-07-13 |
CN105760312B (zh) | 2019-03-15 |
WO2012040723A3 (en) | 2012-06-21 |
TW201220046A (en) | 2012-05-16 |
WO2012040723A2 (en) | 2012-03-29 |
KR101457825B1 (ko) | 2014-11-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103119570B (zh) | 用于实现微页表的装置、方法和系统 | |
US10394710B2 (en) | Storage class memory (SCM) memory mode cache system | |
EP3433742B1 (en) | Using multiple memory elements in an input-output memory management unit for performing virtual address to physical address translations | |
CN107608910B (zh) | 用于实现具有不同操作模式的多级存储器分级结构的设备和方法 | |
TWI489276B (zh) | 於第二階記憶體階層中記憶體側快取的動態部份斷電之系統與方法 | |
CN102792286B (zh) | 虚拟化处理系统中的地址映射 | |
KR101673280B1 (ko) | 영구 저장소로의 라이트백을 요구하는 비 트랜잭션 코드 영역의 시작과 끝을 마킹하는 명령어들 | |
US9600416B2 (en) | Apparatus and method for implementing a multi-level memory hierarchy | |
JP5752989B2 (ja) | プロセッサ・メインメモリのための持続性メモリ | |
JP5348429B2 (ja) | 持続性メモリのためのキャッシュコヒーレンスプロトコル | |
CN103080918B (zh) | 功率优化的中断传递 | |
KR102569545B1 (ko) | 키-밸류 스토리지 장치 및 상기 키-밸류 스토리지 장치의 동작 방법 | |
US9645942B2 (en) | Method for pinning data in large cache in multi-level memory system | |
CN102707899A (zh) | 虚拟存储器系统、虚拟存储器控制方法和程序 | |
KR20150130499A (ko) | 시스템 메모리 관리 유닛 컨텍스트들을 저장 및 기억하기 위한 방법 및 장치들 및 프로그램 물건 | |
CN103052945B (zh) | 管理计算机存储器的方法及数据存储设备 | |
CN105897859B (zh) | 一种存储系统 | |
CN113448882A (zh) | 用于多级存储器的高效的管理的装置和方法 | |
US20160210234A1 (en) | Memory system including virtual cache and management method thereof | |
JP2005004282A (ja) | ディスクアレイ装置、ディスクアレイ装置の管理方法及び管理プログラム | |
CN109478164B (zh) | 用于存储用于高速缓存条目传输的高速缓存位置信息的系统和方法 |
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 | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20160413 Termination date: 20200926 |